2016-12-26 2 views
0

Как у нас есть локальность ссылки, на основе которой эти данные копируются в кеш, но кто несет за это ответственность.Кто помещает данные в кеш?

Есть ли h/w или есть какие-либо s/f, которые выполняют это действие?

ответ

1

CPU считывает/записывает данные в кеш, когда выполняется команда, которая обращается к памяти.
Так что это услуга «по требованию», данные перемещаются по запросу.
Затем он пытается сохранить данные в кеше as long as possible, пока не будет больше места, а replacement policy используется для выселения строки в пользу новых данных.
Минимальная единица передаваемых данных называется line и обычно больше размера регистра (для улучшения местоположения).

Некоторые процессоры имеют prefetcher, которые после распознавания конкретных шаблонов доступа к памяти пытаются автоматически переместить данные в кэш до, и это действительно запрошено программой.

В некоторой архитектуре есть инструкции, которые выполняют подсказки для того, чтобы ЦП предварительно запрограммировал данные по определенному адресу.
Это позволяет программному обеспечению иметь минимальный контроль над схемой предварительной выборки, однако, если программное обеспечение хочет просто переместить данные в кеш, ему нужно только прочитать данные (процессор будет кэшировать его, если в этом регионе включено кэширование).