logo search
AOM / Мельник А

10.2.4.3. Пряме відображення

Взаємодія основної пам'яті з кеш пам'яттю з використанням прямого відображен­ня показана на рис. 10.10а. Тут вміст кожного блоку основної пам'яті можна копіюва­ти лише до наперед визначеного блоку кеш пам'яті Одна з можливих реалізацій ви­користовує розрядне відображення. Тут додатково до того, як це було зроблено для асоціативного відображення, k-розрядне поле адреси блоку в основній пам'яті розби­вається на дві частини: поле тега г та поле номера блоку s (рис. 10.10b). Тим самим основна пам'ять ділиться на секції, за кожною з яких закріплюється відповідна бирка (або ознака), яку називають тегом. Кількість R секцій (а значить і кількість тегів) рівна відношенню ємності основної пам'яті до ємності кеш пам'яті, або, що є тим самим, відношенню кількості К блоків в основній пам'яті, до кількості S блоків в кеш пам'яті. Розрядність поля тега визначається з виразу r = log2K/S = log2(2k/2s) = k - s. Кількість S блоків в кожній секції рівна кількості блоків в кеш пам'яті. Тобто ємність секції рівна ємності кеш пам'яті.

Наприклад, якщо в адресі блоку основної пам'яті присутні k розрядів, то молодші п з них вибирають, в який блок кеш пам'яті може копіюватись вміст блоку основної пам'яті. Отже, вміст всіх блоків з однаковими молодшими адресами потрапляє в один і той са­мий блок кеш пам'яті. Інші r=k-s розрядів адреси, що залишилися, використовуються як адресний тег, який використовується для порівняння з адресою, виданою процесором з метою пошуку номера секції в основній пам'яті.

370

Для наведеної вище умови, коли що основна пам ять має ємність 1 ГБ, а кеш пам ять -16 КБ, вони поділені на блоки ємністю по 32 Б, тобто кількість блоків в основній пам'яті рівна 225, а в кеш пам'яті - 29, маємо: повна розрядність адреси п = ЗО, причому поле адреси блоків основної пам'яті займає k25 розрядів, поле номера тега (тобто номера секції в основній пам'яті) г = 16 розрядів, поле номера блоку в секції (в кеш пам'яті) n = 9 розрядів, поле адреси слова в блоці m- 5 розрядів (рис. 10.10b).Зауважимо, що процесор не сприймає структурної інтерпретації адреси, наведеної на рис. 10.10b.Таку інтерпретацію адресі надає лише контролер кеш пам'яті, коли перехоплює цю адресу, що призначена основній пам'яті (в гарвардській архітектурі це може бути як пам'ять даних, так і пам'ять команд). Контролер кеш пам'яті за допомогою дев'яти середніх роз­рядів слова адреси звертається до визначеного цими розрядами блоку власної пам'яті. Зрозуміло, що шуканий в такий спосіб блок завжди присутній в кеш пам'яті. Адже кеш пам'ять вміщує 512 блоків. Але вміст віднайденого блоку кеш пам'яті може бути копією не одного, а одного з декількох дозволених на копіювання блоків основної пам'яті. На­приклад, до нульового блоку кеш пам'яті дозволено копіювати вміст наступних блоків основної пам'яті: 0, 128, 256, 512 і т. д. Усього до кожного блоку кеш пам'яті можна ско­піювати вміст одного з 216 = 65536 блоків основної пам'яті, оскільки ємність основної пам'яті в 65536 разів перевищує ємність кеш пам'яті. Постає завдання визначити, чи є поточне наповнення вказаного блоку кеш пам'яті відповідним до запиту процесора. За­вдання розв'язують за допомогою вмісту старших 16 бітів адреси основної пам'яті, які утворюють поле із назвою Тег

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

371

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

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