logo
AOM / Мельник А

70.2.6. Підвищення ефективності кеш пам'яті

Характеристики, які використовують при оцінці ефективності ієрархічної організа­ції пам'яті, підходять і для оцінки ефективності кеш пам'яті. До цих характеристик на­лежать наступні:

375

потрібної інформації, при зверненні до основної пам'яті. Якщо позначити коефіцієнт попадань через kh,а коефіцієнт промахів через km, то залежність між ними можна ви­разити наступною формулою: km= 1 - kh;

■ середній час доступу до основної пам'яті, який визначається з виразу: tav=th+kmtp, де th- час звернення при попаданні, tp- втрати на промах.

Таким чином, чим менше промахів, тим вища ефективність використання кеш пам'яті. Розглянемо типи промахів до кеш пам'яті та підходи до зменшення їх кількості й пов'язаних з ними втрат. Існує три типи промахів: обов'язкові, ємнісні та конфліктні. Обов'язкові промахи - це промахи, які виникають при початковому зверненні до основної пам'яті. Зрозуміло, що перший доступ до кеш пам'яті обов'язково буде прома­хом. Для зменшення кількості цього типу промахів потрібно збільшувати розмір блоків в кеш пам'яті.

Ємнісні промахи пов'язані з обмеженим розміром кеш пам'яті. Для зменшення кіль­кості цього типу промахів потрібно збільшувати розмір кеш пам'яті.

Конфліктні промахи пов'язані з ефективністю алгоритму заміщення блоків в кеш пам'яті. Для зменшення кількості цього типу промахів потрібно збільшувати асоціатив­ність кеш пам'яті, аж до використання для її реалізації повністю асоціативної пам'яті.

На рис. 10.14 наведено залежність величини коефіцієнта промахів від ємності кеш пам'яті та від кількості блоків в одному секторі кеш пам'яті з використанням частково-асоціативного відображення при виконанні набору тестових програм SPEC 92.

Таким чином, збільшення розміру блоку кеш пам'яті понижує кількість обов'язко­вих промахів, але збільшує втрати на промах, через зростання часу пересилання блоку інформації. Крім того, якщо ємність кеш пам'яті невелика, то збільшення розміру блоку збільшує кількість конфліктних промахів через зменшення кількості блоків та секторів.

376

Подібним чином збільшення ємності кеш пам'яті зменшує кількість ємнісних про­махів, але збільшує час звернення при попаданні.

Для зменшення кількості конфліктних промахів потрібно збільшувати асоціатив­ність кеш пам'яті, але, як показує практика, більша 4 кількість блоків в одному секторі кеш пам'яті з використанням частково-асоціативного відображення збільшує затрати обладнання без видимого виграшу, та збільшує час звернення при попаданні.

Часто для суттєвого зменшення кількості конфліктних промахів, в першу чергу для кеш пам'яті з прямим відображенням, використовують додаткову кеш пам'ять малого розміру (8-16 блоків), в якій зберігаються останні заміщені в кеш пам'яті блоки.

Для зменшення значення коефіцієнта промахів використовується попередня вибірка з основної пам'яті блоків, до яких може бути звернення. При цьому можуть застосовува­тись як апаратні, так і програмні засоби попередньої вибірки. При використанні апарат­них засобів зазвичай при промаху додатково до вибірки відсутнього в кеш пам'яті блоку вибирається наступний, або кілька наступних блоків. Це дає виграш, оскільки процесор не чекає на попередньо вибраний блок. Такий підхід може бути використаний як до кеш пам'яті даних, так і команд, але є більш ефективним для кеш пам'яті команд. При ви­користанні програмних засобів до програми, або до компілятора, додаються спеціальні команди попередньої вибірки.

Для зменшення значення коефіцієнта промахів використовуються також спеціаль­ні підходи по оптимізації компіляторів, зокрема об'єднання даних та команд у блоки, об'єднання циклів, черговість циклів, злиття масивів і т. д.

В останніх комп'ютерах для підвищення ефективності кеш пам'яті вводяться більш складні механізми її функціонування за рахунок ускладнення контролера та організації внутрішньої пам'яті. Це, зокрема, створення так званої неблокуючої кеш пам'яті, яка при наявності промаху продовжує взаємодію з процесором, використовуючи механізм невпорядкованого виконання або спеціальні розряди в асоціативних регістрах, будучи при цьому багато блоковою, та реалізація пріоритетності читання над записом.