MaxEdu.ru

Кешування пам'яті

Вступ
В процесорах сімейства Pentium для підвищення продуктивності комп'ютера, серйозній доробці піддався механізм кешування оперативної пам'яті.
Тактова частота ядра сучасних процесорів в даний час зросла в 1000 разів і перевищила 2000 Мгц, а ось частотні характеристики оперативної пам'яті сильно відстають. Наприклад, модулі дешевої динамічної пам'яті працюють на частоті всього 133 Мгц.
Розрив позначився вже при появі перших 16-розрядних процесорів. Мікросхеми пам'яті, які могли працювати на тій же швидкості, що й процесор, виявилися дуже дорогими для застосування в персональних комп'ютерах. А дешеві мікросхеми динамічної пам'яті, які дозволяли берегти багато даних, на жаль, не відрізнялися швидкодією. Тому розробники комп'ютерів використовували принцип організації пам'яті, який застосовували у великих ЕОМ.
Оскільки процесор в кожний момент часу працює з обмеженим адресним простором, то необхідні для поточної роботи дані можна берегти в дорогих, але швидких мікросхемах. Основна ж пам'ять виконується на повільних, але зате дешевих мікросхемах, що дозволяють зберігати багато даних. Тому процесор, використовуючи таке розділення пам'яті, більшу частину часу використовує швидку пам'ять і звертається до основної тільки при необхідності. Такий вид швидкодійної пам'яті був названий кешем (від англ. cache – склад, тайник).
Технологія виготовлення процесорів удосконалювалася. Можливості кеша, виконаного на окремих мікросхемах і розташованого на системній платі, були швидко вичерпані. Для подальшого підвищення продуктивності комп'ютера кеш вирішили розділити на дві частини – традиційний кеш на системній платі залишили незмінним, а на кристалі процесора організували ще один кеш, який повинен працювати на тактовій частоті процесора. Такий принцип організації пам'яті був реалізований в деяких 386 процесорах, а, починаючи з процесорів Intel , став обов'язковий. Кеш, розташований на кристалі процесора, отримав назву – первинний кеш (LI Cache) або внутрішній кеш.
Надалі, для ефективного використання 64-розрядної шини в сімействі процесорів Pentium додали ще два рівні – вторинний кеш L2 Cache і L3 Cache.
Кешування пам'яті є "прозорим" для програм і програмістів, тобто процесор і чіпсет системної плати в більшості випадків самі визначають необхідні дані, які будуть зберігатися в кеші. Крім того, вони стежать за тим, щоб дані в кеші і основній пам'яті відповідали один одному, оскільки до оперативної пам'яті може звертатися не тільки процесор, але й зовнішні пристрої.
Механізм кешування в кожному з подальших типів процесорів Pentium піддавався серйозній доробці. Фактично, в сучасних процесорах на кристалі разом з блоками обробки даних розташована внутрішня оперативна пам'ять – кеш, яка за своїми розмірами перевершує об'єм всієї пам'яті (ОЗУ, вінчестер), якою колись оперував комп'ютер з процесором 386. Слід відмітити, що розмір первинного кеша частіше всього буває рівний 8, 16 або 32 Кбайт, а вторинного – 256 або 512 Кбайт. Хоча, наприклад, в деяких процесорах вторинний кеш може досягати і 1 Мбайт або бути взагалі відсутній. У нових процесорів зовнішній кеш не застосовується.
Щоб зрозуміти складність організації механізму кешування даних, треба врахувати, що кожний рівень кеша працює на своїй тактовій частоті. Наприклад, первинний кеш повинен діяти на частоті ядра процесора. Вторинний кеш (внутрішній) часто синхронізується на половинній частоті ядра процесора. Зовнішній кеш, найповільніший, використовує частоту системної плати, яка в більшості випадків не перевищує 133 Мгц.


Розділ 1. Кешування пам’яті як процес оптимізації роботи комп’ютера
1.1. Статична пам'ять
Статична пам'ять – SRAM (Static Random Access Memory), як і виходить з її назви, здатна зберігати інформацію в статичному режимі – тобто скільки завгодно довго за відсутності звертань (але за наявності живлячої напруги). Елементи статичної пам'яті реалізуються на тригерах – елементах з двома стійкими станами. В порівнянні з динамічною пам'яттю ці комірки складніші і займають більше місця на кристалі, проте вони простіші в управлінні і не вимагають регенерації. Швидкодія і енергоспоживання статичної пам'яті визначається технологією виготовлення і схемотехнікою комірок, що запам'ятовують. Найекономічніша КМОП пам'ять (CMOS Memory) має час доступу більше 100 наносекунд, але зате придатна для тривалого зберігання інформації при живленні від малопотужної батареї, що й застосовується в пам'яті конфігурації PC. Сама швидкодійна статична пам'ять має час доступу в декілька наносекунд, що дозволяє їй працювати на частоті системної шини процесора, не вимагаючи від нього тактів очікування. Типовий об'єм пам'яті сучасних мікросхем SRAM досягає 1 Мбіт. Відносно висока питома вартість зберігання інформації і енергоспоживання при низькій щільності упаковки не дозволяють використовувати SRAM в якості основної пам'яті комп'ютерів. В PC мікросхеми SRAM в основному використовуються для побудови зовнішнього (L2) кеша основної пам'яті.
Async SRAM – звичайна (стандартна) асинхронна статична пам'ять (Standard або Asynchronous SRAM). Цей тип мається на увазі під терміном SRAM за умовчанням, коли тип пам'яті не вказаний (до недавніх пір йому і не було альтернативи).
Мікросхеми цього типу мають найпростіший асинхронний інтерфейс, що включає шину адреси, шину даних і сигнали управління CS#, ОЕ# і WE#. Мікросхема вибирається низьким рівнем сигналу CS# (Chip select), низький рівень сигналу ОЕ# (Output Enable) відкриває вихідні буфери для прочитування даних, WE# (Write Enable) низьким рівнем дозволяє запис. Тимчасові діаграми циклів звертань приведені на рис. 1.1. При операції запису управління вихідними буферами може проводитися як сигналом ОЕ# (цикл 1), так і сигналом WE# (цикл 2). Для зручності об'єднання мікросхем внутрішній сигнал CS# може збиратися по схемі «И» з декількох зовнішніх, наприклад, CSO#, CS1 і CS2# – у такому разі мікросхема буде вибрана при поєднанні логічних сигналів 0, 1, 0 на відповідних входах.
Час доступу – затримка появи дійсних даних на виході щодо моменту встановлення адреси – в стандартних мікросхем SRAM складає 12, 15 або 20 наносекунд, що дозволяє процесору виконувати пакетний цикл читання 2-1-1-1 (тобто без тактів очікування) на частоті системної шини до 33 Мгц. На більш високих частотах цикл буде не краще 3-2-2-2.
Рис. 1.. Тимчасові діаграми читання і запису асинхронної статичної пам'яті
Sync Burst SRAM – синхронна статична пам'ять, оптимізована під виконання пакетних (burst) операцій обміну, властивих роботі кеш-пам'яті. В її структуру введений внутрішній двохбітовий лічильник адреси. На додаток до сигналів, що використовуються асинхронною пам'яттю (адреса, дані, CS#, OE# і WE#), пам'ять використовує сигнал CLC (Clock) для синхронізації з системною шиною і сигнали управління пакетним циклом ADSP#, CADS# і ADV#. Сигнали CADS# (Cache ADdress Strobe) і ADSP# (ADdress Status Processor), якими процесор або кеш-контролер відзначає фазу адреси чергового циклу, є стробами запису початкової адреси циклу у внутрішній регістр адреси. Будь-якbй з цих сигналів ініціює цикл звертань, одиночний (single) або пакетний (burst), а сигнал ADV# (ADVance) використовується для переходу до наступної адреси пакетного циклу. Всі сигнали, окрім управління вихідними буферами ОЕ#, синхронізуються по позитивному перепаду сигналу CLK. Це означає, що значення вхідних сигналів повинно встановитися до перепаду і утримуватися після нього ще якийсь час. Вихідні дані при зчитуванні будуть також дійсні під час цього перепаду. На рис. .2 наведені діаграми декількох варіантів циклів читання синхронної статичної пам'яті. Звернемо увагу, що двобітовий лічильник адреси не дозволяє перейти межу чотирьохелементного пакетного циклу. Крім того, порядок рахунку адрес усередині пакетного циклу відповідає специфічному порядку (interleaved), прийнятому в процесорах і486 і старше. Мікросхеми синхронної статичної пам'яті, як і SDRAM, звичайно мають сигнал, що вибирає режим рахунку адреси: чергування (для процесорів Intel) або послідовний рахунок (для Power PC).
Рис. 1.. Тимчасові діаграми читання синхронної статичної пам'яті
Синхронний інтерфейс з таким набором сигналів дозволяє пам'яті дізнаватися про наміри процесора раніше і при затримці даних на виході SRAM щодо синхронізуючого перепаду tkq (Clock-to-Output Access Time) 8,5, 10 і 13,5 не забезпечувати цикл 2-1-1-1 на частотах 66, 60 і 50 Мгц відповідно. Проте на частотах 75 Мгц і вище цикл буде 3-2-2-2, РВ SRAM (Pipelined Burst SRAM) – конвеєрне вдосконалення синхронної пам'яті (слово «синхронна» з її назви скорочено вилучили, але воно обов'язково мається на увазі). Конвеєром є додатковий внутрішній регістр даних, який, вимагаючи додаткового такту в першій пересилці циклу, дозволяє решту даних одержувати без тактів очікування навіть на частотах вище 75 Мгц. Затримка даних щодо синхронізуючого перепаду в сучасних мікросхем РВ SRAM складає 4,5-8 нс. Але, як і у разі Sync Burst SRAM, цей параметр не є часом доступу в чистому вигляді (не слід забувати про два-трьох такти в першій передачі), а відображає появу дійсних даних щодо чергового перепаду сигналу синхронізації. Інтерфейс РВ SRAM аналогічний інтерфейсу Sync Burst SRAM.
Природно, що ціна синхронної пам'яті вище, ніж асинхронної. Ефективні області застосування описаних різновидів статичної пам'яті у вторинному кеші допоможе визначити табл. 1.1.
Таблиця 1.
Параметри пакетних циклів SRAM*
Частота шини, Мгц | Async SRAM | Sync Burst SRAM | PBSRAM
Цикл тас, нс | Цикл tkq, нс | Цикл Ткс, нс
33 | 2-1-1-1 15 | 2-1-1-1 | 3-1-1-1
50 | 3-2-2-2 20 | 2-1-1-1 13,5 | 3-1-1-1
60 | 3-2-2-2 17 | 2-1-1-1 10 | 3-1-1-1
66 | 3-2-2-2 15 | 2-1-1-1 8,5 | 3-1-1-1 15
75 | - | 3-2-2-2 | 3-1-1-1 13
83 | - | 3-2-2-2 | 3-1-1-1 12
100 | - | 3-2-2-2 | 3-1-1-1 10
133 | - | 3-2-2-2 | 3-1-1-1 7,5
* Для різних типів пам'яті швидкодія указується різними способами:
tac – час доступу
tkq – затримка даних щодо синхронізуючого перепаду
Ткс – мінімальний період тактових імпульсів.
1.2. Загальні питання кешування пам'яті
Кеш-пам'ять персональних комп'ютерів є високошвидкісним буфером, побудованим на мікросхемах SRAM (Static RAM – статична оперативна пам'ять), який безпосередньо обмінюється даними з процесором. Така пам'ять наявна у всіх 32-розрядних сучасних процесорах. Засоби кешування пам'яті містять два рівні кеш-інструкцій і даних (L1 Cache і L2 Cache), буфери асоціативної трансляції TLB блока сторінкової переадресації і буфери запису. Вони можуть бути представлені в різних варіаціях, зокрема розміщені на кристалі або картриджі процесора чи на системній платі, починаючи з процесора i486. Процесор I80386 містить тільки буфери TLB. Кеш-пам'ять, що встановлювалась на системній платі, не підтримувалась процесором.
Причиною застосування кеш-пам'яті в процесорах була низька швидкодія DRAM (Dynamic RAM – динамічна оперативна пам'ять), що зумовлювало необхідність кількох тактів очікування і відповідно простоїв процесора.
Максимальної швидкодії при зверненнях процесора до оперативної пам'яті було досягнуто на основі компромісного рішення побудови комп'ютера, що полягає в ієрархічному способі організації цієї пам'яті. Основна пам'ять відносно великої ємності й малої швидкодії DRAM поєднувалась з кеш-пам'яттю SRAM, відносно невеликої ємності і високої швидкодії.
Термін «кеш» (cache) означає «таємне сховище» або «тайник». Таємниця такого сховища полягає в його прозорості щодо програми. Він не є додатковою адресованою ділянкою пам'яті.
Оскільки швидкодія кеш-пам'яті відповідає швидкодії процесора, то контролер кеша може передбачати потребу процесора в даних і наперед завантажувати необхідні дані у високошвидкісну кеш-пам'ять. Тоді при видачі процесором адреси пам'яті дані можуть бути передані з високошвидкісного кеша, а не з оперативної пам'яті, швидкодія якої набагато нижча.
Оскільки ємність кеш-пам'яті набагато менша від ємності основної оперативної пам'яті, кеш не може зберігати копію всієї основної пам'яті. Він зберігає лише обмежену кількість даних і каталог (cache directory) – список поточної відповідності даних ділянкам основної пам'яті. Загалом не вся пам'ять, яка доступна процесору, може кешуватися.
Кеш-попадання (cache hit) – звернення, за якого дані, необхідні процесору, попередньо зчитані в кеш з основної оперативної пам'яті.
Ефективність кеша виражається коефіцієнтом збігу, чи успіху. Він дорівнює відношенню кількості вдалих звернень до кеша до загальної кількості звернень.
Кеш-промах (cache miss) – звернення, за якого контролер кеша не передбачив необхідності в даних, що знаходяться за вказаною абсолютною адресою; в цьому випадку процесор повинен зчитувати дані не з кеша. а з оперативної пам'яті.
Зчитуючи дані з оперативної пам'яті, процесор повинен буде очікувати певний час, оскільки тактова частота оперативної пам'яті значно нижча за тактову частоту процесора. Відповідно до алгоритму кешування блок даних, зчитаний з оперативної пам'яті, заміщається за певних умов блоком даних з кеша. Від «інтелектуальності» алгоритму залежить відсоток попадань і відповідно ефективність кешування. Звернення до основної пам'яті може починатись одночасно з пошуком в каталозі, а в разі попадання – перериватися. Такий підхід відповідає архітектурі Look aside. При цьому економиться пам'ять, але зайві звернення до основної пам'яті збільшують енергоспоживання. За архітектури Look Through звернення до основної пам'яті починається тільки після фіксації промаху. При цьому губиться щонайменше один такт процесора, але заощаджується енергоспоживання.
Кеш-пам'ять у сучасних комп'ютерах будується за дворівневою схемою.
Первинний (внутрішній) кеш (LI Cache – кеш рівня 1), або кеш першого рівня, вбудований в процесори, починаючи з i486. Ємність такого кеша порівняно з основною оперативною пам'яттю невелика і становить 8-64 Кбайт, швидкодія – 10-2 нс.
Він може бути побудований з використанням двох архітектур: прінстонської та гарвардської. Прінстонська архітектура передбачає використання спільної пам'яті L1 для зберігання даних і команд. За гарвардської архітектури пам'ять L1 розподіляється на дві рівні частини, одна з яких використовується для зберігання команд, інша – для даних. Кеш L1 безпосередньо вбудований в мікросхему ядра процесора.
Вторинний (зовнішній) кеш (L2 Cache), або кеш другого рівня, встановлюється на системній платі, а в процесорах Р6 – на картриджі в одній упаковці з ядром і підключається до спеціальної внутрішньої шини процесора. Виготовляється у вигляді окремої мікросхеми. Якщо він встановлений на системній платі, то працює на її частоті й знаходиться поруч з мікросхемою процесора. У процесорах Р6 кеш другого рівня міститься не на системній платі, а на картриджі разом з матрицею процесора або на кристалі процесора.
В табл. 1.2 наведено динамічні параметри кешів різних рівнів у сучасних комп'ютерах фірми Intel.
Спочатку кеші проектувались як асинхронні й не були синхронізовані із системною шиною. Згодом, у 1995 p., було розроблено кеш синхронного типу, який працює синхронно із системною шиною процесора. Це підвищує його швидкодію та ефективність. Крім того, в цей же час функціонування процесорів було доповнено конвеєрним монопольним режимом (Pipeline Burst mode), що дало можливість скоротити період очікування за рахунок зменшення кількості станів очікування після першої передачі даних. Ці режими дали змогу підвищити ефективність комп'ютерів приблизно на 20%.
Таблиця 1.
Динамічні параметри кешів різних рівнів
Тип процесора | 486DX4 | Pentium | Pentium Pro | Pentium II | Pentium II (1998 p.)
Швидкодія кеша першого рівня, нс (МГц) | 10 (100) | 4(233) | 5 (200) | 3 (300) | 2 (400)
Швидкодія кеша другого рівня, нс (МГц) | 30 (33) | 15(66) | 5 (200) | 6(150) | 5(200)
Швидкодія системної плати, МГц | 33 | 66 | 66 | 66 | 100
Швидкодія
SIMM / DIMM, нс (МГц) | 60(16) | 60(16) | 60(16) | 15 (66) | 10(100)
Контролер кеша сучасних процесорів розміщений або в мікросхемі North Bridge (частина системної логіки, картридж з процесором і наступними елементами системної логіки: кеш-пам'ять, пам'ять, контролер AGP та ін.) комплекту мікросхем системної логіки на основі процесора Pentium, або на платі процесорів Pentium Pro, Pentium II і Pentium III.
Ефективність і можливості кеша залежать від його контролера. Більшість контролерів мають обмеження на ємність кешованої пам'яті. Для комплекту мікросхем системної логіки 430ТХ, який застосовується в комп'ютерах на основі процесора Pentium, вона становить 64 Мбайт. У такому випадку кешуються дані тільки в межах перших 64 Мбайт основної оперативної пам'яті, а всі дані після перших 64 Мбайт ніколи не потраплять в кеш, і при зверненні до них завжди необхідні всі стани очікування, що визначаються повільнішою логікою DRAM.
До значного уповільнення роботи комп'ютера загалом можуть призвести тип програмного забезпечення та адреси, за якими зберігаються дані оперативної пам'яті. Так, наприклад, операційні системи Windows 95/98 і NT завантажуються в оперативну пам'ять; і, якщо встановлено оперативну пам'ять ємністю 96 Мбайт, то операційна система і прикладні програми завантажуватимуться безпосередньо у верхні 32 Мбайт, які не кешуються. В цьому випадку можна зменшити ємність оперативної пам'яті до 64 Мбайт, тобто немає необхідності встановлювати ємність оперативної пам'яті більшу, ніж дає змогу її кешувати комплект мікросхем системної логіки.
Контролер кеша повинен забезпечувати когерентність (coherency) – узгодженість даних кеш-пам'яті обох рівнів з даними основної пам'яті при тому, що звернення до цих даних може здійснюватись не тільки процесором, а й іншими активними пристроями (busmaster), під'єднаними до системних шин РСІ, VLB, ISA та ін. У складі обчислювальної системи (мережі) може бути кілька процесорів зі своїм внутрішнім кешем, що слід враховувати.
Контролер кеша оперує з рядками (cache line) фіксованої довжини. Рядок зберігає копію блока оперативної пам'яті, розмір якого збігається з довжиною рядка. Кожному рядку кеша відповідає інформація про адресу скопійованого в нього блока оперативної пам'яті та про її стан. Рядок може бути дійсним (valid) – це означає, що в поточний момент часу він достовірно відображає відповідний блок оперативної пам'яті, чи недійсним. Інформацію про те, який саме блок займає даний рядок (старша частина адреси чи номер сторінки), і про його стан називають тегом (tag). Вона зберігається у пов'язаній з даним рядком комірці спеціальної пам'яті тегів (tag RAM). Для процесорів i486 і старих процесорів Р5 довжина рядка збігається з об'ємом даних, що передаються за один пакетний цикл (для i486 це – 4 Ч 4 = 16 байт, для Pentium – 4 Ч 8 = 32 байт). Можливий також ва-рі-ант секторованого (sectored) кеша, в якому один рядок містить кілька сумі-ж-них комірок – секторів, їх розміри відповідають мінімальній порції обміну даних кеша з оперативною пам'яттю. При цьому в записі каталогу, що відповідає кож-но-му рядку, повинні зберігатися біти дійсності для кожного сектора даного рядка. Сек-то-рування економить пам'ять, яка необхідна для зберігання каталогу при збі-ль-шенні ємності кеша, оскільки більша кількість бітів каталогу відводиться під тег.
При промахах операцій зчитування під відображення блока пам'яті виділяються рядки кеша. В процесорах Р6 вони заповнюються і при записі. Запис блока, що не має копії в кеші, надходить в основну пам'ять (може проводитись через буфер відкладеного запису).
Поведінка кеш-контролера при здійсненні операції запису в пам'ять, коли копія ділянки, що вимагається, знаходиться в певному рядку кеша, визначається його алгоритмом роботи чи стратегією запису (Write Policy). Існують дві основні стратегії запису даних з кеша в основну пам'ять: наскрізний запис WT (Write Through) і зворотний запис WT (Write Back).
WT-запис передбачає виконання кожної операції запису, яка потрапляє в кешований блок, одночасно в рядок кеша і в основну пам'ять. При цьому процесор вимушений щоразу здійснювати тривалу операцію запису в основну пам'ять. За такого запису достатньо тільки інформації тега. Але така простота запису не дає високої ефективності. Існують варіанти алгоритму WT із застосуванням відкладеного буферизованого запису, за якого дані в основну пам'ять переписуються через FIFO-буфер (First-In First-Out – «першим прийшов – першим і вийшов») під час вільних тактів шини.
WB-запис дає змогу зменшити кількість операцій запису на системній шині основної пам'яті. Коли блок пам'яті, в який повинен здійснюватися запис, відображений в кеші, то фізичний запис спочатку відбуватиметься в цей дійсний рядок кеша і буде позначений як нечистий (dirty) або модифікований, тобто такий, що вимагає вивантаження в основну пам'ять. Тільки після цього вивантаження рядок стане чистим (clean), і його можна буде використати для кешування інших блоків без втрати цілісності даних. В основну пам'ять дані переписуються тільки цілим рядком. WB-алгоритм складніший в реалізації, ніж WT-алгоритм, але істотно ефективнішій. Підтримка кешування із зворотним записом потребує додаткових інтерфейсних сигналів, якщо здійснюється звернення з боку інших контролерів системної шини.
Залежно від способу визначення взаємної відповідності рядка кеша і ді-ля-н-ки основної пам'яті розрізняють три архітектури кеш-пам'яті: кеш прямого відо-б-раження (direct-mapped cache), повністю асоціативний кеш (fully associative cache) та їх комбінація – частково- чи набірно-асоціативний кеш (set-associative cache).
1.3. Застосування статичної пам'яті для кешування ОЗУ
Найпоширеніше застосування статичної пам'яті – кешування ОЗУ. На мікросхемах статичної пам'яті звичайно будується зовнішній кеш, в якому використовується архітектура прямого відображення або набірно-асоціативна. Функції кеш-контролера виконує чіпсет. Мікросхеми зберігання даних кеша організовуються в банки, число мікросхем в банку повинне відповідати розрядності системної шини процесора. Банк повинен заповнюватися мікросхемами одного об'єму, необхідна швидкодія мікросхем залежить від частоти системної шини. Банків може бути і декілька, кількість заповнених банків і організація встановлених мікросхем, що визначає об'єм кеш-пам'яті (vcache) задаються джамперами або визначаються автоматично.
Для зберігання тегів звичайно використовується окрема мікросхема асинхронній SRAM – Tag SRAM, а для більш ніж 8-бітного тега – пара мікросхем. Тут асинхронна пам'ять використовується як для асинхронного, так і для синхронного кеша. Її об'єм може і перевищувати мінімально необхідний для встановленої кеш-пам'яті. Необхідна швидкодія визначається тактовою частотою системної шини. Необхідний об'єм пам'яті тегів (кількість комірок) можна обчислити, розділивши об'єм встановленої кеш-пам'яті на довжину рядка кеша, визначуваного чіпсетом. Довжина рядка звичайно рівна кількості байт, передаваних за один стандартний пакетний цикл (4Ч4=16 байт для і486, 4Ч8=32 байта для Pentium).
Максимальний об'єм кешованої пам'яті (mcached) обмежений як архітектурними особливостями чіпсета і системної плати, так і об'ємом встановленої кеш-пам'яті даних і розрядністю пам'яті тегів. Для звичайних 8-бітних тегів він не може перевищувати 256Чvcache, так, для vcache 256 Кб mcached = 64 Мб. Збільшення кешованого об'єму вимагає збільшення об'єму кеш-пам'яті або (і) розрядності тегів (звичайно, в рамках підтримки чіпсетом).
Для кеша із зворотним записом (WB) необхідна ще й пам'ять для зберігання ознаки «чистоти» рядка. Ознака може зберігатися в окремій мікросхемі Dirty SRAM або займати один біт в Tag SRAM. Зворотний запис у вторинному кеші застосовується не завжди (вона з'явилася дещо пізніше за початок випуску процесорів класу 486), його реалізація складніше, ніж крізного.
Мікросхеми асинхронної пам'яті звичайно виконуються в Dip-корпусах з 8-бітовою організацією (рис. 1.3), які вставляються в спеціальні «ліжечка» системної плати (іноді припаюються). При установці мікросхем з 28 висновками в «ліжечко» з 32 контактами вільними залишають контакти 1, 2, 31 і 32. Банк збира-ється з 4 штук для процесорів 386-DX і 486, 8 штук – для Pentium. Мікросхеми синхронної пам'яті звичайно мають розрядність 16 або 32 біт (18 або 36 – з паритетом), один банк для Pentium збирається з чотирьох або двох мікросхем.
Рис. 1.. Розташування виведень мікросхем асинхронної статичної пам'яті:
а – в корпусах ОУ-28, організація 8КЧ8 (виведення 1 і 26 не використовуються), 16КЧ8 (виведення 1 не використовується), 32КЧ8; б – в корпусах DIP-32, організація 64КЧ8 (виведення 2 не використовується), 128КЧ8
Рис. 1.. Модуль кеш-пам'яті COAST 3.0
Для системної плати з процесором Pentium широко поширені модулі COAST (Cache On Stick) – «кеш на паличці». Це невеликий модуль з двостороннім печатним роз'ємом, встановлюваний в спеціальний слот. Модуль містить власну кеш-пам'ять необхідної розрядності (асинхронну Async. SRAM, синхронну пакетну Sync Burst SRAM або конвеєрну РВ SRAM), на ньому ж може бути встановлена і асинхронна пам'ять тегів. Модуль може використовуватися і як розширення кеша, запаяного на системній плати. Аналогічні модулі застосовуються і в інших комп'ютерних платформах (наприклад, в Power PC), але в них може не співпадати порядок проходження адрес пакетного циклу синхронної пам'яті (в Power PC – послідовний) із специфічним порядком чергування, прийнятим для процесорів х86 Intel і сумісних з ними (порядок адрес задається логічним рівнем на одному з виведень мікросхем Burst SRAM). В результаті зниження цін на мікросхеми статичної пам'яті кеш фіксованого розміру (частіше – максимального для конкретного чіпсета) стали запаювати на системну плату, не застосовуючи додаткових модулів і роз'ємів.
Розділ 2. Види кешування
2.1. Кеш прямого відображення
Адреса пам'яті, за якою відбувається звернення до кеша прямого відображення, однозначно визначає рядок кеша, де може знаходитись необхідний блок.
Розглянемо принцип дії кеша системної плати для Pentium з такими параметрами: кеш ємністю 256 Кбайт з розміром рядка 32 байт і ємністю основної (оперативної) пам'яті 64 Мбайт. Структуру пам'яті наведено на схемі 15.
Основна пам'ять (кешована) розподіляється на сторінки. В наведеному прикладі їх 256. Розмір сторінки збігається з розміром кеш-пам'яті. В даному випадку 256 Кбайт. Кеш-пам'ять, як і сторінки основної пам'яті, розподіляється на рядки, їх в сторінці й кеш-пам'яті 256 К / 32 = 8 К рядків.
Рис. 2.. Структура кеша прямого відображення
Сутність архітектури прямого відображення полягає в тому, що кожен рядок кеша може відображати з будь-якої сторінки кешованої пам'яті тільки відповідний йому рядок. При цьому на кожний рядок кеша може претендувати багато сторінок пам'яті з однаковою молодшою частиною адреси, що є зміщенням всередині сторінки. Один рядок в певний момент містить копію тільки однієї з цих сторінок. Адресу (номер) рядка в кеш-пам'яті називають індексом (index). Інформацію про те, яка саме сторінка основної пам'яті займає даний рядок, тобто старша частина адреси чи номер сторінки, містить тег. Пам'ять тегів має кількість комірок, яка дорівнює кількості рядків кеша, а її розрядність повинна бути достатньою, щоб вмістити старші біти адреси кешованої пам'яті, які не потрапили на шину адреси кеш-пам'яті. Крім адресної частини тега кожний рядок кеша відображає біти ознак дійсності та модифікування даних.
На початку кожного звернення до кеш-пам'яті контролер спочатку зчитує комірку каталогу із заданим індексом, порівнює біти адреси тега зі старшими бітами адреси пам'яті та аналізує ознаку дійсності. Такий аналіз виконується в спеціальному циклі стеження (snoop cycle), який ще називають циклом запиту (inquire). Якщо в результаті аналізу з'ясується, що потрібний блок не знаходиться в кеші, то генерується або продовжується цикл звернення до основної пам'яті (випадок кеш-промаху). Коли ж є кеш-попадання, то запит обслуговується кеш-пам'яттю. У випадку кеш-промаху після зчитування основної пам'яті нові дані розміщуються в рядку кеша за умови, що він чистий, а в його тегу розташовуються старші біти адреси, і встановлюється ознака дійсності даних. З основної пам'яті рядок переписується в кеш повністю, незалежно від обсягу даних, що вимагаються, оскільки ознака дійсності належить до всіх його байтів. Якщо контролер реалізує випереджаюче зчитування (read ahead), то в наступні вільні цикли шини оновиться і наступний рядок, якщо він був чистим. Читання «із запасом» дає змогу за необхідності здійснювати пакетний цикл зчитування з кеша через межу рядка.
Кеш розглянутого типу використовується у вторинному кеші більшості системних плат. Недоліком такої організації кеш-пам'яті є робота «вхолосту» (cache trashing), коли в процесі виконання програми процесора по черзі будуть потрібні блоки (сторінки) пам'яті, зміщені один стосовно іншого на величину, кратну розміру сторінки. Чергове звернення заміщуватиме дані, зчитані в попередньому зверненні, які будуть необхідні в наступному. Таким чином, це буде суцільна низка кеш-промахів. Зменшує кількість кеш-попадань також переключення сторінок в багатозадачних обчислювальних системах. Оскільки різні задачі претендуватимуть на одні й ті самі рядки кеша, то збільшення його розмірів за архітектури прямого відображення не дає суттєвого підвищення ефективності. Підвищити її, не збільшуючи ємність кеша, можна тільки зміною структури кеш-пам'яті.
Ємність кешованої основної пам'яті Men з архітектурою прямого відображення визначається за формулою
MCD = VC Ч 2N,
де VC – ємність кеш-пам'яті;
N – розрядність пам'яті тегів.
Для наведеного вище прикладу
MCD = 256 Кбайт Ч 28 = 64 Мбайт.
2.2. Набірно-асоціативний кеш
Набірно-асоціативна архітектура кеша дає можливість кожній сторінці основної кешованої пам'яті претендувати на один з кількох рядків кеша, об'єднаних в набір (set). У кеші такої архітектури є кілька паралельно і погоджено працюючих каналів прямого відображення, де контролер кеша приймає рішення про те, в який з рядків набору помістити черговий блок даних.
У простішому випадку кожний блок з основної пам'яті поміщається в один з двох рядків (Two Way Set Associative Cache). Такий кеш містить два банки пам'яті й тегів. Структуру двоканального набірно-асоціативного кеша показано на рис. 2.2.
Рис. 2.2. Структура двоканального набірно-асоціативного кеша
Номер набору, тобто індекс, в якому відображено необхідний блок даних, однозначно визначається середньою частиною адреси, як номер рядка в кеші прямого відображення. Рядок набору, який відображає необхідний блок, визначається порівнянням тегів, паралельно виконуваним для всіх каналів кеша. З кожним набором пов'язана також ознака, що визначає рядок набору, який підлягає заміщенню новим блоком даних у випадку кеш-промаху. На заміщення обирається той рядок, до якого довше всього не зверталися. Воно виконується згідно з алгоритмом LRU (Least Recently Used). За відносно великої кількості каналів (рядків в наборі) вдаються до спрощення, а саме використовують алгоритм Pseudo LRU для чотирьох рядків (Four Way Set Associative Cache), який дає змогу приймати рішення, використовуючи лише три біти. Можливе також застосування алгоритму заміщення FIFO чи випадкового (random) заміщення. Це простіше, але менш ефективно. Набірно-асоціативна архітектура широко застосовується для первинного кеша сучасних комп'ютерів. Ємність кешованої пам'яті визначається так само, як і у випадку прямого відображення, але для набірно-асоціативної архітектури фігуруватиме ємність одного банку, а не всього кеша, а також розрядність комірок тега, що належать до цього банку.
2.3. Асоціативний кеш
У повністю асоціативному кеші, на відміну від попередніх архітектур, будь-який його рядок може відображати будь-який блок пам'яті. Це суттєво підвищує ефективність використання його обмеженої ємності. Всі біти адреси кешованого блока, за винятком бітів, які визначають розташування даних у рядку, тобто зміщення, зберігаються в пам'яті тегів. При цьому для визначення наявності даних кеш-пам'яті, що вимагаються, необхідне порівняння тегів усіх рядків зі старшою частиною адреси, а не одного чи кількох, як при прямому відображенні чи набірно-асоціативній архітектурі. Таким чином, відпадає необхідність послідовного перебирання комірок пам'яті тегів. Виконується тільки паралельний аналіз усіх комірок. Але це завдання поки що вирішене тільки для невеликих ємностей первинного кеша в деяких процесорах.


Розділ 3. Структура засобів кешування пам'яті
Загальну структуру засобів кешування пам'яті для 32-розрядних процесорів фірми Intel, у тому числі для процесорів Р6, наведено на рис. 3.1.
Рис. 3.. Загальна структура засобів кешування пам'яті
Первинний кеш інструкцій тісно пов'язаний з блоком попередньої вибірки, а первинний кеш даних – з виконавчим блоком процесора. Вторинний кеш є спільним, і в процесорах Р6 підключений до окремої внутрішньої шини кеш-пам'яті. В процесорах i486 і Pentium вторинний кеш є зовнішнім і підключається до зовнішньої системної шини процесора. В процесорах Celeron 266 і 300 вторинний кеш відсутній.
Довжина рядка кеша в i486 – 16 байт, у процесорах Р5 другого покоління і Р6 – 32 байт. Рядки заповнюються цілком пакетними циклами зчитування – 4 передачі на рядок з основної пам'яті, вирівняними за 32-байтними межами. Будь-який внутрішній запит процесора на звернення до пам'яті спрямовується у внутрішній кеш. Якщо запитувана ділянка пам'яті наявна в рядку внутрішнього кеша, то він обслуговує цей запит. У випадку промаху запит задовольняється, як тільки необхідні дані зчитуються з ОЗП. Заповнення рядка до кінця відбувається паралельно з обробкою одержаних даних. Виділення і заміщення рядків у процесорах i486 і Р5 виконуються тільки для кеш-промахів при зчитуванні. При промахах запису заповнення рядків здійснюється тільки в процесорах Р6. Кешування доступне в будь-якому режимі процесора.
Буфер асоціативної трансляції TLB зберігає входження в каталог і в таблиці сторінок, до яких звертались останнім часом. В i486 для даних та інструкцій використовується єдиний TLB, а в процесорах Р5 і Р6 ці буфери роздільні.
Великі сторінки, зокрема 2Мбайт в режимі РАЕ (Physical Address Extension – режим розширення фізичної адреси до 36 біт) і 4 Мбайт в режимі PSE (Page Size Extension – прапорець розширення розміру сторінки) обслуговуються роздільними TLB.
Буфери запису пов'язані з виконавчим блоком процесора. Вони дають змогу на деякий час відкласти фактичний запис у зовнішній кеш і основну пам'ять, пропонуючи шину для інших обмінів, необхідних для виконання наступних інструкцій. Запис буферизується в усіх режимах роботи процесора. Але буферизації запису в порти вводу/виводу не відбувається.
Всі механізми кешування, як правило, прозорі для прикладних програм і після дозволу кешування пропускають через себе потоки інструкцій і даних без вимог явного програмного керування. Але знання особливостей механізмів кешування пам'яті дає можливість оптимізувати коди.
Процесори різних поколінь фірми Intel мають різні характеристики елементів кеша (табл. 3.1).
Кеш-пам'ять побудована з урахуванням можливості звернень до неї зовнішніх об'єктів, зокрема інших процесорів та контролерів. Процесори мають механізми зовнішнього стеження за станом свого кеша. Для підтримки узгодження даних кеша та основної пам'яті процесор відпрацьовує цикли стеження (Snoop Cycle чи Inquire Cycle), що ініціюються зовнішньою для нього системою. В цих циклах, які відбуваються при зверненні до пам'яті з боку зовнішнього абонента, процесор визначає наявність даних, що вимагаються, в своєму кеші. Якщо вони відображаються в кеші, то дії процесора залежать від стану відповідного рядка кеша і типу зовнішнього звернення. Звернення за записом призведе до анулювання даного рядка. Звернення за зчитуванням до ділянки, що відповідає модифікованому («брудному») рядку, призведе до вивантаження його вмісту в основну пам'ять перед тим, як зовнішній абонент виконає реальне зчитування. В процесорах Р6 звернення до «брудного» рядка з боку інших процесорів може спричинити вивантаження його вмісту безпосередньо в процесор, що звертався. Це відповідно збереже час, а вивантаження цього рядка в основну пам'ять відбудеться пізніше, згідно з алгоритмом оберненого запису.
Таблиця 3.
Характеристики елементів кеша процесорів різних поколінь
Елемент | Характеристика
Кеш інструкцій L1 | Р6 і Pentium 8/16 Кбайт, 4WSA (2WSA в перших Pentium) 486: 8/16 Кбайт, 4WSA, комбінований з кешем даних
Кеш даних L1 | Р6 8/16 Кбайт, 2WSA Pentium: 8/16 Кбайт, 4WSA (2WSA в перших Pentium)
486: 8/16 Кбайт, 4WSA, комбінований з кешем даних
Загальний кеш L2 | Р6 256/512/1024 Кбайт, 4WSA
Pentium: на системній платі, як правило, 256/512 Кбайт, 4WSA
486: на системній платі, 128/256 Кбайт
TLB інструкцій для сторінок 4 Кбайт | Р6, Pentium: 32 входження, 4WSA
Pentium MMX; 32 входження, асоціативний
486: 32 входження, 4WSA, об'єднаний з TLB даних
TLB даних для сторінок 4 Кбайт | Р6, Pentium: 64 входження, 4WSA
Pentium MMX: 64 входження, асоціативний
486: 32 входження, 4WSA, об'єднаний з TLB даних
TLB інструкцій для великих сторінок | Р6: 2 входження, 2WSA Pentium: той самий, що і для сторінок 4 Кбайт
486: великі сторінки не підтримуються
TLB даних для великих сторінок | Р6: 8 входжень, 4WSA
Pentium: 8 входжень, 4WSA, той самий, що і для сторінок 4 Кбайт
486: великі сторінки не підтримуються
Буфери запису | Р6: 12 входжень
Pentium MMX: 4 буфери по 1 входженню
Pentium: 2 буфери по 1 входженню
486: 4 входження
*4WSA – чотириканальний набірно-асоціативний, 2WSA – двоканальний набірно-асоціативний кеш.
Починаючи з процесорів Pentium, їх кеш підтримує протокол MESI (Modified-Exclusive-Shared-Invalid – протокол підтримки когерентності пам'яті за наявності кеша, названий за визначеним станом рядків: Модифікована – Виняткова – Роздільна – Недійсна). Первинний кеш інструкцій реалізує лише частину протоколу – SI, оскільки не допускає запису. Стан рядків для кожного процесора визначається таким чином:
1) М-стан – рядок, наявний в кеші тільки цього процесора і модифікований, тобто такий, що відрізняється від вмісту основної пам'яті. Запис в цей рядок не призведе до генерування зовнішнього щодо локальної шини циклу звернення;
2) Е-стан – рядок, наявний в кеші тільки цього процесора і немодифікований, його копія в основній пам'яті дійсна. Запис переведе його в М-стан без зовнішнього циклу звернення;
3) 8-стан – рядок, наявний в кеші цього процесора і потенційно може знаходитися в кешах інших процесорів, копія в пам'яті дійсна. Запис в нього супроводжується наскрізним записом в основну пам'ять, що зумовлює анулювання відповідних рядків в інших кешах;
4) І-стан – рядок, відсутній в кеші, його зчитування може призвести до генерування циклу заповнення рядка. Запис в нього буде наскрізним і вийде на зовнішню шину.
Процесор контролює операції запису в пам'ять на попадання в ділянку, представлену в кеші інструкцій. Контроль виконується на рівні фізичних адрес. У випадку попадання рядок анулюється.
У просторі основної пам'яті комп'ютера є ділянки, для яких кешування принципово недопустиме, зокрема розподільна пам'ять адаптерів. Для таких ділянок непридатний алгоритм оберненого зв'язку. Крім того, кешування інколи відключають при виконанні однократно виконуваних ділянок програми з тим, щоб з кеша не витісняти корисніші фрагменти програми.


Розділ 4. Керування кешуванням
Механізм керування кешуванням містить як програмні, так і апаратні засоби, які дозволяють кешування та обмежують його можливості. До програмних засобів належать прапорці керуючих регістрів і біти елементів каталогу та таблиць сторінок, а також спеціальні інструкції. Апаратні засоби – це вхідні сигнали дозволу кешування і керування записом та очищенням кеша, а також вихідні сигнали керування вторинним кешем. Процесори Р6 містять також регістри MTRR (Memory Type Range Registers – регістри визначення типів пам'яті в складі M8R – модельно специфічних регістрів), які визначають можливості кешування на рівні ділянок фізичної пам'яті. Якщо різні механізми визначають можливості кешування конкретної ділянки пам'яті по-різному, то спрацьовує найжорсткіше обмеження – заборона кешування. Вона більш пріоритетна, ніж дозвіл, а режим WT скасовує режим WB.
Кешуванням керують на етапі заповнення рядків, а кеш-попадання зчитування пам'яті обслуговуються тільки з кеша. Існує можливість анулювання рядків шляхом оголошення їх недостовірними, а також очищення всієї кеш-пам'яті. Очищення внутрішньої кеш-пам'яті здійснюється зовнішнім сигналом FLUSH# за один такт системної шини. Те саме відбувається за сигналом RESET. При оберненому записі під час очищення відбувається також вивантаження всіх модифікованих рядків в основну пам'ять. Для цього необхідна значна кількість тактів системної шини. Крім того, існують інструкції анулювання (інвалідизації). Інструкція INVD анулює рядки внутрішнього кеша без вивантаження модифікованих рядків. Інструкція WBINVD попередньо вивантажує модифіковані рядки в основну пам'ять.
Анулювання рядків здійснюється при записі у відображувану ними ділянку пам'яті з боку зовнішніх процесорів. Якщо зовнішній процесор виконує запис у пам'ять, то головному процесору повинен бути поданий сигнал AHOLD. За цим сигналом головний процесор негайно віддає керування шиною адреси, на якій зовнішнім процесором встановлюється адреса пам'яті, що супроводжується стробом EADS#. Якщо пам'ять, що адресується, наявна в первинному кеші, то процесор складає біт достовірності цього рядка.
Загальне програмне керування кешуванням здійснюється бітами керуючого регістра CRO: CD (Cache Disable) і NW (No Write Through).
Можливі такі сполучення бітів регістра:
1) CD = 0, NW = 0 – дозволено нормальний режим роботи з макси-мальною ефективністю. Для окремих ділянок чи сторінок пам'яті кешування може бути обмежене (забороняється або встановлюється режим WT);
2) CD = 0, NW = 1 – заборонена комбінація, що спричиняє відмову #GP;
3) CD = 1, NW = 0 – заповнення кеша заборонено, когерентність пам'яті підтримується. Попадання зчитування обслуговуються з кеша. Попадання запису модифікують рядки, при цьому операції запису переходять в основну пам'ять. Анулювання рядків дозволено. Зовнішнє стеження (повідомлення стану) виконується. Цей режим використовується для тимчасового виключення кеша, після якого його включення можливе без очищення. Цей стан аналогічний тимчасовому переведенню сигналу KEN# у високоімпедансний стан;
4) CD=1, NW=1 – заповнення кеша заборонено, когерентність пам'яті не підтримується. Попадання зчитування обслуговуються з кеша. Попадання запису модифікують кеш, але не основну пам'ять. Анулювання рядків заблоковано, очищення кеша зумовлюють тільки інструкції INVD і WBINVD. Зовнішнє стеження виконується. Очищення в такому режимі повністю вимикає кеш. Якщо ж перед встановленням цього сполучення бітів кеш був заповнений, а очищення не здійснювалось, то кеш перетворюється на «заморожену» ділянку статичної пам'яті.
При використанні сторінкової переадресації в керуванні кешуванням беруть участь біти PCD (Page Cache Disable – заборона кешування сторінки) і PWT (Page Write Through – наскрізний запис сторінки) регістра CR3 та елементів каталогу і таблиць сторінок. Ці біти керують кешуванням таблиці каталогів. В елементах каталогу таблиць (PDE) вони керують кешуванням таблиць сторінок, на які посилаються, в елементах таблиць сторінок (РТЕ) – кешуванням сторінок, що обслуговуються. В процесорах Р6 біт PGE регістра CR4 дає змогу використовувати біт глобальності сторінки G для керування анулюванням входжень в TLB.
Для керування кешуванням на апаратному рівні процесори i486 і Р5 мають входи KEN# і WB/WT#. У процесорів з WB-кешем є вхідний сигнал WB/WT#, який може спростити запис для даної адреси WT. Вхідні сигнали PCD і PWT керують роботою вторинного зовнішнього кеша, а також первинного кеша. В циклах звернення до пам'яті, коли сторінкові перетворення не використовуються джерелом сигналів, є біти PCD і PWT регістра CR3, при зверненні до таблиці сторінок – біти PCD і PWT з дескриптора відповідного елемента каталогу, при зверненні до даних сторінки – біти PCD і PWT з дескриптора сторінки. Крім того, ці сигнали можуть примусово встановлюватися спільними бітами керування кешуванням CD і WT регістра CR0.
В архітектуру процесорів Р6 введено регістри MTRR (Memory Range Registers), які реалізують зазначені вище функції апаратного керування кешуванням, а також зміною порядку запису для певних ділянок пам'яті. За допомогою цих регістрів у фізичній пам'яті визначається до 96 ділянок адрес з однаковим типом кешування. Це дає змогу оптимізувати операції з ОЗП, ПЗП, відеобуферами та адаптерами вводу/виводу, що відображені на простір пам'яті. За апаратного скидання регістри MTRR встановлюються так, що вся фізична пам'ять оголошується некешованою. Подальша ініціалізація здійснюється під час виконання програми POST BIOS. Вона програмує регістри відповідно до реального розподілу пам'яті. Типи пам'яті та їх характеристики наведено в табл. 4.1.
Таблиця 4.
Типи пам'яті, що визначаються регістрами MTRR
Мнемоніка | Код в MTRR | Кешування | Режим WB | Спекулятив-не читання | Порядок операцій
UC(Up Cacheable) | 0 | Немає | Немає | Є | Строгий
WC (Write Combining) | 1 | » | » | » | Слабковпо-рядкований
WT(Write-Through) | 4 | Є | » | » | Спекулятивний (Speculative Processor Ordering)
WP(Write-Protected) | 5 | Зчитування є, запису немає | » | » | »
WB(Write Back) | 6 | Є | Є | » | »
Спекулятивним в даному випадку вважається зчитування, результат якого може не вимагатися програмою.
Регістри MTRR є модельно-специфічними регістрами (MRS). Вони визначають набори фіксованих зон для першого мегабайта фізичної пам'яті та зони довільного розміру для пам'яті в будь-якому діапазоні адрес. Наявність MTRR визначається інструкцією CPUID за прапорцем MTRR (біт 13 в EDX). 64-Розрядний регістр MTRRcap визначає можливості MTRR. Кількість довільних зон визначається полем VCNT (для Р6 – 8 зон), прапорець FIX (біт 8) свідчить про наявність фіксованих зон; а прапорець WC (біт 10) вказує на підтримку пам'яті типу WC.
Загальне керування MTRR здійснюється записом в 64-розрядний регістр MTRRdetType. Прапорець Е (біт 11) дозволяє використання MTRR. Якщо він скинутий, то вся пам'ять визначається як UC. Прапорець FE (біт 10) дозволяє використання фіксованих зон, поле Туре (біти 7-0) задає тип пам'яті, за умовчання – пам'яті, що не потрапила в жодну із зон. Для відсутньої фізичної пам'яті рекомендується тип UC.
Для керування фіксованими зонами кеш-пам'яті використовуються регістри:
MTRRfix64K_00000 – для відображення восьми зон по 64 Кбайт в діапазоні адрес 0 – 7FFFFh;
MTRRfixl6K_80000 і MTRRfixl6K_A0000 – для відображення 16 зон по 16 Кбайт в діапазоні адрес 80000h-BFFFFh'
MTRRfix4K_C0000, MTRRfix4K_C8000... MTRRfix 4K_F8000 (8 регістрів) – для відображення 64 зон по 4 Кбайт в діапазоні адрес C0000h-FFFFFh.
Кожний байт цих 64-розрядних регістрів несе інформацію про тип пам'яті для зони, що ним відображається (табл. 4.1).
Для керування кожною із зон довільного розміру використовуються пари регістрів, де п визначає номер регістра:
1) MTRRhysBasen – регістр базової фізичної адреси зони. Поле Туре (біти 7-0) визначає тип пам'яті для зони, поле PhysBase (біти 35-12) задає її базову адресу (старші 24 біти, молодші 12 – нульові). Зони визначаються за межами сторінок розміром 4 Кбайт;
2) MTRRhysMaskn – регістр маски фізичної адреси. Поле PhysMaskn (біти 35-12) задає маску зони, прапорець V (біт 11) визначає дійсність даних цієї регістрової пари. Маска визначається так, щоб результат функції І над нею та адресою, що належить зоні, збігався з результатом тієї ж функції над нею та базовою адресою.
Перекриття довільних зон допускається лише для типів пам'яті UC чи UC і WB. Для перекриття зон інших типів поведінка процесора непередбачена. Якщо довільна зона перекриває фіксовану, то на перекриту ділянку поширюється визначення фіксованої зони при встановленому прапорці FE.
Спроба використання типів пам'яті, що відрізняються від наведених в табл. 4.1, зумовлює виключення #GP.
Буфери трансляції адрес (TLB) оновлюються процесором прозоро для програм. Для анулювання окремих входжень існує інструкція INVLPG. Анулювання всіх входжень TLB, за винятком позначених прапорцем G як глобальних, відбувається при записі в регістр CR3 чи зміні його стану при переключенні задач. Анулювання всіх входжень з ігноруванням прапорця глобальності відбувається при зміні стану входу FLUSH#, запису в регістр MTRR в процесорах Р6, модифікації прапорців PG чи РЕ в регістрі CRO або прапорців PSE, PGE і РАЕ в регістрі CR4.
Буфери запису прозорі для програм навіть в мульти-процесорних системах. Порядок зовнішніх операцій запису завжди відповідає програмному кодові. Вивантаження буферів в пам'ять може відкладатися процесором з метою оптимізації. Але певні умови спричиняють негайне вивантаження буферів, зокрема:
виникнення винятку чи переривання;
виконання інструкцій вводу/виводу;
виконання інструкцій серіалізації в процесорах Р6;
здійснення операції LOCK;
виконання ініціалізації шини сигналом BINIT в процесорах Р6.


Висновки
Кеш-пам'ять (Cache Memory) або надоперативна пам'ять (СОЗУ) – це одна з різновидів швидкодійної оперативної пам'яті, для якої використовуються дорогі мікросхеми статичної пам'яті. Основне призначення кеш-пам'яті в комп'ютері – служити місцем тимчасового зберігання оброблюваних у нинішній момент часу кодів програм і даних. Тобто її призначення служити буфером між різними пристроями для зберігання і обробки інформації, наприклад, між процесором і ОЗУ, між механічною частиною вінчестера і ОЗУ і т.д. Залежно від призначення і типу процесора об'єм кеш-пам'яті може складати величину, наприклад 8 і 16 Кбайт, 128 і 256 Кбайт, а у ряді випадків досягає 2-3 Мбайт. Крім того, кеш-пам'ять ділиться на рівні і, відповідно, для кожного рівня кеш-пам'яті використовуються свої, дуже різні по конструкції і швидкодії мікросхеми.
Внутрішній кеш процесора класу Pentium, він же первинний кеш, або кеш першого рівня (Level І Cache), знаходиться на тому ж кристалі, що і процесор. Основне призначення цього кеша – зберігання команд і даних, які у нинішній момент обробляються в процесорі. Головна відмінність від всієї решти видів пам'яті у внутрішнього кеша процесора в тому, що доступ до елементів пам'яті відбувається на тактовій частоті ядра процесора. Поява такого типу кеша була викликана тим, що ядро процесора, починаючи з 486, працює на частоті, яка перевищує частоту зовнішньої синхронізації. Відмітимо, що в старих процесорах внутрішнього кеша не було, а термін "кеш-пам'ять" відносився до мікросхем зовнішнього кеша. Крім того, для кеша першого рівня в сучасних процесорів використовують асоціативну або набірно-асоціативну пам'ять, в якій вибір даних з пам'яті відбувається не за абсолютними адресами елементів пам'яті, а по їх вмісту, що значно прискорює роботу системи процесор-кеш. Швидше за все, такий кеш можна порівняти з невеликою базою даних, яка обробляє запити процесора (приблизно як працює програма Microsoft Access).
Вторинний кеш, або кеш другого рівня (Level 2 Cache) – це або зовнішній кеш, який встановлюється на системній платі, або кеш-пам'ять значного об'єму, яка знаходиться на тому ж кристалі, що і процесор. Можливий варіант як в процесорі Pentium II, де кеш другого рівня знаходиться на окремому кристалі усередині картриджа процесора. Оскільки кеш другого рівня має об'єм від 128 Кбайт до 1-4 Мбайт, то для здешевлення виготовлення процесора він може працювати, наприклад, на половинній частоті ядра процесора. Крім того, організація елементів пам'яті в ньому може відрізнятися від прийнятої для оперативної пам'яті та ін.
Кеш третього рівня (Level 3 Cache) мають деякі процесори, які призначені для серверних додатків.
Зовнішній кеш, він же кеш другого рівня в сучасних процесорів, в старих комп'ютерах знаходиться на системній платі і працює на частоті системної шини процесора, наприклад, 33 або 66 Мгц. В комп'ютерах з процесорами 386, 486 і першими поколіннями Pentium швидкість роботи кеша мало відрізняється від швидкодії мікросхем оперативної пам'яті, а виграш в продуктивності виходив за рахунок виключення простою процесора в ті моменти, коли мікросхеми оперативної пам'яті виконували цикли регенерації.


Література
Айден К. и др. Аппаратные средства PC: Пер. с нем. / К. Айден, Х. Фибельман, М. Краммер. – Спб.: BHV-Сонет. П., 1996.
Вермань А.Ф., Апатова Н.В. Інформатика. – К.: Форум, 2000.
Вильховченко С. Современный компьютер: устройство, выбор, модернизация. – СПб.: Питер, 2000.
Вильховченко С. Современный компьютер: устройство, выбор, модернизация. – СПб.: Питер, 2000. – 512 с.
Глушаков С.В., Мельников И.В. Персональный компьютер: Учебный курс. – Харьков: Фолио, М.: ООО "Издательство АСТ", 2000.
Гук М. Аппаратные средства IBM PC: Карманная энциклопедия. – СПб.: Питер, 1999.
Гук М. Аппаратные средства IBM PC: Энциклопедия. – СПб.: Питер, 2000.
Гук М. Интерфейсы ПК: Справочник. – СПб.: Питер, 1999.
Информатика. Базовый курс. / Симонович С.В. и др. – СПб: Издательство "Питер", 1999.
Інформатика: Комп’ютерна техніка. Комп’ютерні технології: Підручник для вузів / За ред. О.І. Пушкаря. – К.: Академія, 2002.
Леонтьев В.П. Новейшая энциклопедия персонального компьютера – М.: ОЛМА-ПРЕСС, 2003.
Локазюк В. М. Мікропроцесори та мікроЕОМ у виробничих системах: Посібник. – К.: Видавничий центр "Академія", 2002. – 368 с.
Локазюк В. М., Савченко Ю.Г. Надійнсть, контроль, діагностика і модернізація ПК: Посібник для вузів / Під ред. В. М. Локазюка. – К.: Академія, 2004. – 376 с.
Модернизация и обслуживание ПК: Базовый курс / Пер. с. англ. Д.М. Шевеля. – К.: БЕК; М.: ЭНТРОП; СПб.: Корона принт, 2000. – 592 с.
Соломенчук В.Г. Аппаратные средства персональных компьютеров. – СПб.: БХВ-Петербург, 2003. – 512 с.

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике Вступ В процесорах сімейства Pentium для підвищення продуктивності комп'ютера, серйозній доробці піддався механізм кешування оперативної пам'яті.
Оценок: 1247 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

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

© 2014 - 2022 MaxEdu.ru