OSDev http://osdev.su/ |
|
Адресация памяти (иная?) http://osdev.su/viewtopic.php?f=5&t=1014 |
Страница 3 из 6 |
Автор: | dragon [ 23 ноя 2014, 19:47 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
А как оно через PAT решается? (чего то я не знаю похоже) Это в 32-битном зищищённом режиме возможно? |
Автор: | pavia [ 23 ноя 2014, 21:05 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
Да возможно. В таблице страниц и каталоге страниц есть 3 бита. Комбинация этих 3-х бит выбирает один из 8 форматов. Читай документацию на процессор http://www.intel.com/content/www/us/en/ ... nuals.html Том 3А главы 4.9 и 11.12 |
Автор: | dragon [ 23 ноя 2014, 22:32 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
Спасибо! Всётаки залез в доки. PAT значит Page Attribute Table и как то там оно хитрее работает чем просто установка битов в каталоге страниц. Вобщем одинаково сложно что через MSR, что через PAT. Интересно, write-through будет сильно хуже работать чем write-combine применительно к данной задаче? |
Автор: | pavia [ 23 ноя 2014, 23:02 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
UC - чтение и запись не кешируется. WT - чтение идет из кэша , операции чтения могут быть пере упорядочены. Но до первой команды на "запись" WC - комбинирование команд "запись", запись может быть переупорядочена. Секрет в том что запись задерживается в буфере до его заполнения. По сути WC - переводит CPU в пакетный режим передачи. Далее зависимость от шины и её протоколов. По идее должно быть не более 64 /4=16 раз. У старых компьютеров где кэш 32 байта ускорение в 8 раз. Замеры говорят о более большей скорости!! |
Автор: | stlw [ 24 ноя 2014, 23:34 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
pavia писал(а): UC - чтение и запись не кешируется. WT - чтение идет из кэша , операции чтения могут быть пере упорядочены. Но до первой команды на "запись" WC - комбинирование команд "запись", запись может быть переупорядочена. Секрет в том что запись задерживается в буфере до его заполнения. По сути WC - переводит CPU в пакетный режим передачи. Далее зависимость от шины и её протоколов. По идее должно быть не более 64 /4=16 раз. У старых компьютеров где кэш 32 байта ускорение в 8 раз. Замеры говорят о более большей скорости!! Секрет не столько в буферезации, сколько в переупорядочивании. Для UC памяти все операции должны быть строго упорядочены (strongly ordered), а все что за пределями CPU порядком операции не особо интересуется. То есть нельзя выпустить две последовательные UC операции одну за другой и надеяться, что они дойдут до цели в том же самом порядке, как того требует UC спецификация. Из-за этого ограничения следующий UC write может быть выполнен только после того как пришло подтвержение от предыдущего, которое гарантирует порядок выполнения (global observation). На деле это означает 50-70 тактов простоя как минимум между двумя строго упорядоченными операциями. В случае обращения к MMIO (типа графической памяти) может получить гораздо больше. У WC нет такого ограничения, порядок прибытия отдельных write не гарантирован вообще поэтому CPU может фигачить их наружу сразу по мере накопления всей строки кеша. При использовании SSE MOVNTPS - 16 byte per store, 4 такта на строку кеша. На деле все чуто помедленнее из-за внутренних ограничений внутри ядра CPU, но это верхний предел скорости. Как видишь 16x дело вообще не ограничивается. Вообще - рукомендую почитать про Memory Ordering в том3 Intel Manuals а так же про Write Combining в Optimization Guide. Станислав |
Автор: | pavia [ 25 ноя 2014, 06:29 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
Переупорядочивавшие по записи есть не во всех процессорах. А при этом ускорение есть. |
Автор: | stlw [ 25 ноя 2014, 09:31 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
То, о котором я говорю - во всех x86. Как минимум во всех, где есть WC Даже в тех, где нет Out of Order Execution. |
Автор: | dragon [ 25 ноя 2014, 20:37 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
stlw, в доке написано что в режиме write-throught разрешён write-combining. Этого, чисто теоретически, должно быть достаточно для ускорения? |
Автор: | stlw [ 25 ноя 2014, 23:08 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
Есть разница между write combining и memory ordering. В случае с write through разрешено соединять writes вместе хоть они и не cache-able. но не разрешено менять порядок write операций. На практике это означает, что при переходе на новую строку кеша надо ждать пока придет global observation от предыдущей строки, то есть платим тот же простой, что и на UC, только не так часто. На самом деле все еще хуже - из-за малого количества пользователей WT memory type, его поддрежка была удалена из процессора. На процессорах линейки Pentium 4 и полее поздних, включая Core, WT memory type ведет себя точно так же как и UC. |
Автор: | dragon [ 26 ноя 2014, 10:11 ] |
Заголовок сообщения: | Re: Адресация памяти (иная?) |
Вот это очень ценная информция, про то что WT = UC в современных процах. Я хотел избежать использования WC, т.к. рассчитывал, что при заполнении памяти последовательно (использовании double buffer для графики), потери производительности не будет, хотябы на WT. Однако получается, что от WC никуда не деться, т.к. в UC режиме (который включится вместо WT) write-ы не комбинируются. Рассуждения правильные? |
Страница 3 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |