Нужно ли инвалидировать элемент буфера TLB при чтении с диска в режиме DMA

Архитектура x86_64, LongMode, операционной системы нет. Читаю с жесткого диска сектор при помощи DMA-контроллера. Так как процессор не обращается к буферу чтения сам (это делает контроллер DMA), предполагаю что при попытке доступа к буферу, процессор получит данные из кэша, в котором ничего нет. Внимание вопрос! Нужно ли дать команду INVLPG - недостоверность элемента буфера TLB, что бы процессор обновил кэш?


Ответы (1 шт):

Автор решения: Jack Katch

В результате изучения литературы был найден ответ. Далее цитата из Гук.М, Юров В. "Процессоры Pentium 4, Athlon и Duron" стр. 165 : "Кэш-памяти процессоров строится с учётом возможности обращений к памяти со стороны внешних абонентов - других процессоров или иных контроллеров шины. ... процессор определяет присутствие затребованной области в своём собственном кэше. ... Обращение по записи (внешнего абонента к памяти пр-е моё), вызовет аннулирование данной строки. Обращение по чтению к области, соответствующей модифицированной (грязной) строке, вызовет выгрузку её содержимого в основную память, прежде чем внешний абонент выполнит реальное считывание." Так что похоже ни каких телодвижений не нужно, за исключением, изменения таблиц трансляции.

→ Ссылка