Процессор может использовать оперативную память напрямую или нет? - PullRequest
0 голосов
/ 28 февраля 2019

Есть ли время, когда процессор использует оперативную память напрямую для своих операций, без привлечения кэш-памяти?ИЛИ как процессор всегда получает данные из кэша, а кэш получает от оперативной памяти?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Обычно нет, нет, если только программное обеспечение специально не обходит или не отключает кэш на современных процессорах.

Если задержка DRAM составляет, возможно, 70 нс, то это 280 циклов на процессоре 4 ГГц.Этого достаточно для процессора Skylake, чтобы выполнить ~ 1100 инструкций по 4 инструкции за цикл.Но его ограничение по параллелизму памяти составляет около 12 невыполненных кешей.Таким образом, кэш очень очень важен для производительности, даже при неупорядоченном выполнении.

Интересный факт: Да, MMU в процессорах P5 Pentium и ранее обойденном кэшепри доступе к таблицам страниц после пропуска TLB .Источник: ответ Энди Глью, бывшего архитектора процессоров Intel, который работал на P6: Кэшируются ли таблицы страниц?

Современные процессоры, включая современные x86 do таблицы страниц доступачерез свои кеши данных, однако: Что происходит после пропуска LL TLB?


x86 имеет movnt инструкции для обхода кеша хранилищ, чтобы избежать загрязнения кеша длябольшой мемсет .Есть компромиссы для пропускной способности.Смотрите Enhanced REP MOVSB ​​для memcpy для получения дополнительной информации о хранилищах NT и хранилищах без RFO от rep movsb на процессорах с функцией ERMSB.Вероятно, некоторые другие архитектуры имеют аналогичные функции.


Вы также можете установить диапазон физического адресного пространства для кэширования.(Или на x86 для каждой виртуальной страницы 4k с настройками таблицы атрибутов страницы в записях таблицы страниц.)

Обычно это делается для областей MMIO (ввод-вывод с отображением в память), где вместо DRAM «память»"на самом деле регистры ввода / вывода на устройствах, таких как сетевые карты.Таким образом, каждая загрузка / сохранение является видимым побочным эффектом, и спекулятивная предварительная выборка должна быть запрещена.(И каждое хранилище должно приводить к отдельной транзакции записи вне ядра, например, сообщения PCIe.)


Кроме того, процессоры x86 имеют управляющие регистры, которые позволяют отключать кэш, что делает их чрезвычайно медленными. Как можно отключить кэши ЦП L1, L2, L3 на современных чипах x86 / amd64? .Снова, я предполагаю, что у других ISA есть подобные особенности.

0 голосов
/ 28 февраля 2019

Скорость обработки ЦП намного выше скорости ОЗУ, поэтому мы используем кеш, который может получать данные за 1 цикл.В случае пропуска кэша данные берутся из оперативной памяти и перемещаются в кэш, и процесс выполняется.Допустим, процессор работает напрямую с оперативной памятью.Например, ОЗУ занимает 10 циклов, чтобы получить кусок данных, а ЦП останавливается за оставшиеся 9 циклов.Если он перемещается в кеш, данные доступны в целом без остановки.Вот почему он не использует RAM.

RAM также быстрее, единственное, что для поиска данных требуется больше времени.Если он находит данные, оставшиеся немного быстрее.

...