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). У кеші такої архітектури є кілька паралельно і погоджено працюючих