Сколько байтов кэш-контроллер извлекает за раз из основной памяти в кэш L2?

Я только что прочитал две статьи по этой теме, в которых содержится противоречивая информация, поэтому я хочу знать, какая из них верна. Возможно, оба варианта верны, но в каком контексте?

Первый первыйутверждает, что мы получаем размер страницыраз

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

Чтобы дать вам реальный пример, если ЦП загрузил данные, хранящиеся по адресу 1000, контроллер кэша загрузит данные с «n» адресов после адреса 1000. Этот номер «n» называется страницей; если данный процессор работает со страницами размером 4 КБ (что является типичным значением), он будет загружать данные с 4096 адресов ниже текущей загружаемой позиции памяти (адрес 1000 в нашем примере). На следующем рисунке мы иллюстрируем этот пример.

enter image description here

Второй второйутверждает, что мы извлекаем sizeof(cache line) + sizeof(prefetcher)time

Таким образом, мы можем обобщить, как работает кэш памяти:

  1. ] CPU запрашивает инструкции/данные, хранящиеся по адресу «a».
  2. Поскольку содержимое с адреса «a» не находится в кеше памяти, ЦП должен получить его непосредственно из оперативной памяти.
  3. Кэш-контроллер загружает в память строку (обычно 64 байта), начинающуюся с адреса «a». кеш. Это больше данных, чем запросил ЦП, поэтому, если программа продолжает работать последовательно (т.е. запрашивает адрес a+1) следующая инструкция/данные, которые ЦП запросит, уже будут загружены в кеш памяти.
  4. Схема под названием prefetcher загружает дополнительные данные, расположенные после этой строки, т.е. начинает загрузку содержимого с адреса a+64 в кэш. Чтобы дать вам реальный пример, процессоры Pentium 4 имеют 256-байтовую память. prefetcher, поэтому он загружает следующие 256 байт после строки, уже загруженной в кеш.

8
задан sliter 22 March 2012 в 20:34
поделиться