Співвідношення між рядком кеша та сторінкою пам'яті


9
  1. Якщо я маю рацію, сторінка в основній пам'яті - це найменша одиниця одиниці передачі даних між основною пам'яттю та зовнішнім запам'ятовуючим пристроєм, наприклад жорстким диском. Рядок кешу основної пам'яті - це найменша одиниця для передачі даних між основною пам'яттю та кешовими процесорами.

  2. Цікаво, чи завжди розмір сторінки або найкраще бути натуральним числом розміру рядка кеша? Якщо розмір рядка кеша - 64 байт, а розмір сторінки пам'яті - 4 КБ, то кожна сторінка має 4 КБ / 64 байти == 64 рядки кеша.

  3. Чи є сторінка та рядок кешу обома нерухомими об'єктами в пам'яті? Або це просто будь-який суміжний блок пам'яті певного розміру, який може запускатися і плавати в будь-якій точці пам'яті?

  4. Чи завжди рядок кеша не може охоплювати більше однієї сторінки, тобто частина кеш-рядка знаходиться на сторінці, а інша частина рядка кеша знаходиться на іншій сторінці?

Дякую.


2
Відповіді на ваші запитання дуже залежать від архітектури процесора.
ТМН

Відповіді:


8
  1. Лінія кеша - це найменша одиниця, до якої можна торкнутися фізичної пам'яті. Означає, що ви читаєте / записуєте 1 байт, повний рядок кешу, що містить його, зчитується в кеш-пам'ять процесора і записується назад. Зверніть увагу, що навіть інструкції, які обходять кеш-пам'ять для запису (ефемерні потокові інструкції), записують у розмірах рядка кеша. Залежно від процесора, розміри рядків кеша зазвичай складають 32/64/128 байт. Коли сторінки пам'яті записуються на диск, вони записуються повністю. Це станеться, коли тиск у пам'яті занадто високий або зі сплячим процесом (і, можливо, для інших цілей). Вони також будуть прочитані цілими, коли потрібно знову. Це головним чином через те, що ядро ​​не може знати, чи сторінка використовується частково або повністю. Інші операції зчитування / запису зовнішнього зберігання можуть мати довільну деталізацію (наприклад: fwrite (..)).

  2. Розмір сторінки залежить від CPU / GPU. Для більшості процесорів розміри сторінок становитимуть принаймні 4 КБ і, як правило, підтримують суміш 4KB / 64KB / 2MB / 4MB / 16MB / 1GB (не обов'язково всі підтримуються одночасно). Розмір завжди буде потужністю два.

  3. І сторінка, і рядок кешу є суміжними і потребують вирівнювання відповідно до їх розміру. Рядок кеш-пам'яті на 64 байти завжди вирівняний на 64 байти, а сторінка 2 МБ завжди вирівняна на 2 МБ.

  4. Через №3 рядок кеша ніколи не може охоплювати 2 сторінки, оскільки розміри сторінок завжди будуть більшими за рядок кешу і завжди будуть кратними розміру рядка кеша.

Перегляньте це чудове джерело для отримання великої кількості інформації щодо пам’яті: http://lwn.net/Articles/250967/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.