logo
AOM / Мельник А

10.2.4.4. Частково-асоціативне відображення

Взаємодія основної пам'яті з кеш пам'яттю з використанням частково-асоціативного відображення показана на рис. 10.12а. Тут послідовно розміщені блоки кеш пам'яті об'єд­нуються в сектори рівної ємності. Зазвичай один сектор містить 2, 4, 8 блоків. Основна пам'ять ділиться на секції, за кожною з яких закріплюється тег, що вказує номер секції. Кількість таких секцій рівна відношенню ємності основної пам'яті до ємності секції. При цьому ємність секції рівна відношенню ємності кеш пам'яті до кількості блоків в секторі кеш пам'яті. Тобто кількість блоків в секції основної пам'яті рівна кількості блоків в кеш пам'яті, поділеній на кількість блоків в секторі кеш пам'яті. Таким чином, в такій реаліза­ції, як і при прямому відображенні, використовується схема вибору сектора в кеш пам'яті за молодшими розрядами адреси блоку основної пам'яті, але в такому секторі кеш пам'яті знаходиться одразу вміст декількох блоків основної пам'яті, вибір між якими здійсню-

372

ється на основі асоціативного пошуку. Тут так само, як це було зроблено для прямого відображення, k-розрядне поле адреси блоку в основній пам'яті розбивається на дві час­тини: поле тега г та поле номера блоку s (рис. 10.12b), причому тег вказує номер секції основної пам'яті, а в полі номера блоку вказується номер блоку в секції основної пам'яті та відповідно в кеш пам'яті.

Для наведеного вище прикладу, коли кількість блоків в основній пам'яті рівна 225, а в кеш пам'яті - 29, причому кількість блоків в секторі кеш пам'яті рівна 2, маємо: повна розрядність адреси п = ЗО, причому поле адреси блоків основної пам'яті займає k= 25 розрядів, поле номера тега (тобто номера секції в основній пам'яті) г .= 17 розрядів, поле номера блоку в секції (в кеш пам'яті) п = 8 розрядів, поле адреси слова в блоці m= 5 роз­рядів (рис. 10.12b).

Контролер кеш пам'яті за допомогою восьми середніх розрядів слова адреси зверта­ється до визначеного цими розрядами блоку власної пам'яті. Зрозуміло, що шуканий в такий спосіб блок завжди присутній в кеш пам'яті. Адже кеш пам'ять вміщує 512 блоків. Але вміст віднайденого блоку кеш пам'яті може бути копією не одного, а одного з декіль­кох дозволених на копіювання блоків основної пам'яті. Наприклад, до нульового блоку кеш пам'яті дозволено копіювати вміст наступних блоків основної пам'яті: 0, 64, 128, 192, 256 і т. д. Усього до кожного блоку кеш пам'яті можна скопіювати вміст одного з 217 = 131072 блоків основної пам'яті, оскільки ємність основної пам'яті в 131072 разів переви­щує ємність кеш пам'яті. Для того, щоб визначити, чи є поточне наповнення вказаного блоку кеш пам'яті відповідним до запиту процесора, використовують вміст старших 17 бітів адреси основної пам'яті.

Потрібно відзначити, що якраз частково-асоціативне відображення найчастіше ви­користовується в сучасних комп'ютерах, причому кількість блоків в одній секції кеш пам'яті зазвичай не перевищує чотирьох. Основною перевагою тут є те, що кеш пам'ять поєднує переваги пам'яті з довільним та з асоціативним доступом (рис. 10.13).

373

При даному способі відображення кожен рядок кеш пам'яті вміщує наступну інфор­мацію: тег, який вказує вміст блоку якої секції основної пам'яті переписано до даного блоку кеш пам'яті, розряд достовірності (valid bit V), який вказує, чи вміст даного блоку кеш пам'яті дійсно належить блоку основної пам'яті, вказаному s розрядами поля адре­си, розряд модифікації (dirty bit D), який інформує про внесення змін до вмісту блоку кеш пам'яті, а також вміст блоку основної пам'яті, вказаного s розрядами поля адреси. Коли процесору потрібний операнд із блоку з певною адресою, контролер кеш пам'яті вибирає з секторів пам'яті тегів відповідні номеру блоку в кеш пам'яті теги, та порівнює 'їх з відповідними г розрядами адреси, в яких вказано тег. При наявності в кеш пам'яті відповідного тега, та при одиничному значенні розряду достовірності, кеш пам'ять ви­дає сигнал підтвердження попадання та надає доступ до відповідного блоку.