ІЄРАРХІЧНА ОРГАНІЗАЦІЯ ПАМ’ЯТІ

Зазвичай розглядається взаємодія усередині ієрархії пам'яті між двома сусідніми рівнями.

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

організація
При зверненні до кожного рівня ієрархії можливі два результати. Або шуканий блок знаходиться на запитуваному рівні (попадання – hit) або він відсутній (промах – miss) і доводиться звертатися до наступного рівня ієрархії, що має меншу швидкість вибірки. Ефективність механізму зберігання даних можна описати часткою попадань (hit rate). Механізм організації кожного рівня ієрархії повинен забезпечувати можливість розміщення будь-якого блоку нижчого рівня ієрархії. Звідси – необхідний якийсь асоціативний механізм відображення блоку з рівня ієрархії, що нижче лежить, на вищележачий.

Ієрархія пам'яті в ЕОМ показано на рис. 17. Місткість пам'яті зростає зверху вниз на малюнку, вартість зберігання байта (слова) та швидкість вибірки байта (слова) зростає знизу вгору.

  • кеш першого рівня, об'ємом кілька кілобайт з часом доступу 2-3 такти, вбудований безпосередньо в процесор;
  • кеш другого рівня з часом доступу 3-5 тактів та обсягом кілька десятків кілобайт, розташований на одній платі із центральним процесором;
  • кеш третього рівня з часом доступу 5-7 тактів та обсягом кілька сотень кілобайт на системній платі тощо.

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

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

Коротка історія обчислювальної техніки та створення програмного забезпечення дозволила розробникам ЕОМ зробити один важливий висновок: фізичної пам'яті, що є на ЕОМ, завжди мало для задоволення потреб програміста. Забезпечувати ЕОМ оперативної пам'яттю великого обсягу невигідно з економічних міркувань. Усвідомлення цього факту призвело до ідеї організації віртуальної пам'яті.Віртуальним називають абстрактний ресурс, який насправді фізично не існує, але моделюється за допомогою наявних технічних засобів.

Системи віртуальної пам'яті можна розділити на два класи: системи з фіксованим розміром блоків, які називаються сторінками, та системи зі змінним розміром блоків, які називаються сегментами. Нижче розглянуто обидва типи організації віртуальної пам'яті.

Кеш-пам'ять

Як говорилося вище, призначення кеш-пам'яті – тимчасове зберігання даних, і команд, часто використовуваних процесором. Основною структурною одиницею кеш-пам'яті є так званий рядок кешу (cache line). Довжина рядка кешу зазвичай становить 32, 64, 128 або 256 байт.

Існують три основні способи організації кеш-пам'яті: 1) кеш із прямим відображенням; 2) повністю асоціативний кеш; 3) набірно асоціативний кеш.

Рис 18. Кеш-пам'ять. а) із прямим відображенням; б) повністю асоціативна; в) набірно-асоціативна.

Третій вид кеш-пам'яті -набірно-асоціативна (див. рис 18 в)) -це змішана конструкція, що поєднує у собі простоту пам'яті з прямим відображенням та ефективність асоціативного кешу. Рядки кешу поєднуються в набори по 2, 4, 8 і т.д. штук. Середні біти визначають не рядок, а набір. Конкретний рядок у наборі вибирається за допомогою асоціативного порівняння для всіх рядків, що входять до набору.

Нехай контролер кеш-пам'яті виявив, що дані, потрібні зараз для процесора, в кеш-пам'яті відсутні. Потрібно прочитати рядок, що містить необхідні дані з оперативної пам'яті, та розмістити його в кеш-пам'яті. Для цього необхідно вирішити, який з рядків кешу слід видалити для розміщення даних, що знову надійшли. Для вибору рядка, що підлягає заміщенню, найчастіше використовується так званий алгоритм LRU (від Least Recently Used – найвикористовуваний найдовше). Суть алгоритму у цьому, що з кожним елементом зберігається історія його використання останнім часом. З усіх існуючих елементів вибирається той, до якого найдовше не було звернень. Недоліком алгоритму вважатимуться необхідність зберігання та обробки великої кількості інформації про історію використання елемента даних, що стає особливо важливим при використанні кеша великого обсягу. Тому в системах з кеш пам'яттю великого обсягу часто застосовується більш простий алгоритм, за яким рядок, що витісняється, вибирається випадковим чином. Як показує практичний досвід, при великому обсязі кеш-пам'яті алгоритм випадкового заміщення незначно програє алгоритму LRU ефективності, але значно виграє за простотою реалізації.

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

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

Істотно зменшити втрати продуктивності дозволяє інший спосіб запису, який називаєтьсябуферизованим наскрізним записом (buffered write through). Процесор передає дані контролеру кеша і на цьому операція запису для процесора вважається закінченою. Дані, що записуються, зберігаються в буфері контролера кеша і переписуються з буфера в оперативну пам'ять у ті моменти часу, коли процесор не робить звернень до пам'яті і системна шина вільна.

Третій спосіб організації називаєтьсязворотним записом (write back). При цьому способі навантаження тракти обміну даними між процесором і пам'яттю максимально знижується. Процесор записує лише кеш-пам'ять. У кожний момент часу існує лише одна "справжня" копія даних, що знаходиться в кеш-пам'яті. Перезапис даних із кеш-пам'яті в основну пам'ять здійснюється лише тоді, коли один рядок кешу замінюєтьсяінший, причому перезаписується лише рядок цілком. Для цього кожен рядок кешу забезпечується додатковою ознакою «брудних» даних, яка встановлюється, якщо цей рядок здійснювався запис. При встановленій ознакі рядок, що витісняється з кешу, переписується в оперативну пам'ять, інакше він не переписується. Подібний спосіб запису, у поєднанні з алгоритмом витіснення даних LRU описаним вище, дозволяє позбутися «зайвих» звернень до пам'яті для даних, що часто використовуються, наприклад лічильників циклів, тимчасових робочих змінних і т.д.