Если я прав, страница в основной памяти - это наименьшая единица измерения для передачи данных между основной памятью и внешним устройством хранения, таким как жесткий диск. Строка кэша основной памяти - это самая маленькая единица для передачи данных между основной памятью и кэшем процессора.
Интересно, будет ли размер страницы всегда или лучше быть натуральным числом размера строки кэша? Если размер строки кэша составляет 64 байта, а размер страницы памяти равен 4 КБ, то каждая страница содержит 4 КБ / 64 байта == 64 строки кэша.
Являются ли страница и строка кэша фиксированными объектами в памяти? Или это просто какой-то непрерывный блок памяти определенного размера, который может начинаться и перемещаться в любом месте памяти?
Всегда ли строка кэша не может занимать более одной страницы, т.е. часть строки кэша находится на странице, а другая часть строки кэша - на другой странице?
Спасибо.
Ответы:
Строка кэша - это наименьшая единица, с которой вы можете касаться физической памяти. Это означает, что при чтении / записи 1 байта полная строка кэша, содержащая его, считывается в кэш процессора и записывается обратно. Обратите внимание, что даже инструкции, которые обходят кэш для записи (эфемерные инструкции потоковой передачи), записывают в размерах строк кэша. В зависимости от процессора размер строки кэша обычно составляет 32/64/128 байт. Когда страницы памяти записываются на диск, они записываются целиком. Это произойдет, когда нагрузка на память слишком высока или при переходе в спящий режим (и, возможно, для других целей). Они также будут прочитаны целиком при необходимости снова. Это происходит главным образом потому, что ядро не может узнать, используется ли страница частично или полностью. Другие операции чтения / записи во внешнем хранилище могут иметь произвольную гранулярность (например, fwrite (..)).
Размер страницы зависит от процессора / графического процессора. Для большинства процессоров размеры страниц будут не менее 4 КБ и, как правило, поддерживают сочетание 4 КБ / 64 КБ / 2 МБ / 4 МБ / 16 МБ / 1 ГБ (не обязательно все поддерживаются одновременно). Размер всегда будет степенью двойки.
И страница, и строка кэша являются смежными и должны быть выровнены по их соответствующему размеру. Строка 64-байтового кэша всегда выровнена на 64 байта, а страница размером 2 МБ всегда выровнена на 2 МБ.
Из-за # 3 строка кэша никогда не может занимать 2 страницы, так как размеры страниц всегда будут больше, чем строка кэша, и всегда будут кратны размеру строки кэша.
Смотрите этот превосходный источник для богатой информации о памяти: http://lwn.net/Articles/250967/
источник