Связь между строкой кэша и страницей памяти

9
  1. Если я прав, страница в основной памяти - это наименьшая единица измерения для передачи данных между основной памятью и внешним устройством хранения, таким как жесткий диск. Строка кэша основной памяти - это самая маленькая единица для передачи данных между основной памятью и кэшем процессора.

  2. Интересно, будет ли размер страницы всегда или лучше быть натуральным числом размера строки кэша? Если размер строки кэша составляет 64 байта, а размер страницы памяти равен 4 КБ, то каждая страница содержит 4 КБ / 64 байта == 64 строки кэша.

  3. Являются ли страница и строка кэша фиксированными объектами в памяти? Или это просто какой-то непрерывный блок памяти определенного размера, который может начинаться и перемещаться в любом месте памяти?

  4. Всегда ли строка кэша не может занимать более одной страницы, т.е. часть строки кэша находится на странице, а другая часть строки кэша - на другой странице?

Спасибо.

Тим
источник
2
Ответы на ваши вопросы сильно зависят от архитектуры процессора.
TMN

Ответы:

8
  1. Строка кэша - это наименьшая единица, с которой вы можете касаться физической памяти. Это означает, что при чтении / записи 1 байта полная строка кэша, содержащая его, считывается в кэш процессора и записывается обратно. Обратите внимание, что даже инструкции, которые обходят кэш для записи (эфемерные инструкции потоковой передачи), записывают в размерах строк кэша. В зависимости от процессора размер строки кэша обычно составляет 32/64/128 байт. Когда страницы памяти записываются на диск, они записываются целиком. Это произойдет, когда нагрузка на память слишком высока или при переходе в спящий режим (и, возможно, для других целей). Они также будут прочитаны целиком при необходимости снова. Это происходит главным образом потому, что ядро ​​не может узнать, используется ли страница частично или полностью. Другие операции чтения / записи во внешнем хранилище могут иметь произвольную гранулярность (например, fwrite (..)).

  2. Размер страницы зависит от процессора / графического процессора. Для большинства процессоров размеры страниц будут не менее 4 КБ и, как правило, поддерживают сочетание 4 КБ / 64 КБ / 2 МБ / 4 МБ / 16 МБ / 1 ГБ (не обязательно все поддерживаются одновременно). Размер всегда будет степенью двойки.

  3. И страница, и строка кэша являются смежными и должны быть выровнены по их соответствующему размеру. Строка 64-байтового кэша всегда выровнена на 64 байта, а страница размером 2 МБ всегда выровнена на 2 МБ.

  4. Из-за # 3 строка кэша никогда не может занимать 2 страницы, так как размеры страниц всегда будут больше, чем строка кэша, и всегда будут кратны размеру строки кэша.

Смотрите этот превосходный источник для богатой информации о памяти: http://lwn.net/Articles/250967/

Николас Фрешетт
источник