- •1. Архітектура комп’ютерів
- •2. Поняття архітектури мікропроцесорів. Типи мікропроцесорів. Цикл обробки команди. Формування керуючих сигналів. Апаратне та мікропрограмне управління процесором. Суперскалярне виконання.
- •3. Виконання команд на конвеєрі. Конфлікти по даних та структурні конфлікти. Методи мінімізації структурних та конфліктів по даних. Особливості спекулятивного завантаження. Канали просування даних.
- •5. Класифікація архітектури комп’ютера за складом системи команд. Складна та проста система команд. Доповнена система команд. Спеціалізована система команд.
- •8. Організація захищеного режиму. Регістр стану процесора. Віртуальна пам’ять. Сегментація пам’яті. Сторінкова організація пам’яті.
- •9. Арифметико-логічні пристрої (алп). Структура й типи архітектури алп. Алгоритмічні операційні пристрої.
- •10. Типи архітектури кеш-пам’яті. Встановлення відповідності між рядками кеш-пам’яті та оперативною пам’яттю.
- •11. Організація напівпровідникових запам’ятовуючих пристроїв. Запам’ятовуючі елементи. Нарощування об’єму пам’яті. Розподіл ліній адреси. Керуючі сигнали. Буфер обміну даних.
- •13. Переривання. Типи переривання. Системні та програмні переривання. Процес обробки переривання центральним процесором. Організація введення-виведення за перериванням.
- •14. Організація введення-виведення в режимі прямого доступу до пам’яті. Робота контролера прямого доступу до пам’яті. Канали прямого доступу до пам’яті.
9. Арифметико-логічні пристрої (алп). Структура й типи архітектури алп. Алгоритмічні операційні пристрої.
10. Типи архітектури кеш-пам’яті. Встановлення відповідності між рядками кеш-пам’яті та оперативною пам’яттю.
Принципи кешування. Компромісом для побудови економічних і продуктивних систем є ієрархічний принцип організації оперативної пам’яті. Ідея полягає у сполученні основної пам’яті великого об’єму на DRAM з відносно невеликою кеш-пам’яттю на швидкодіючих мікросхемах SRAM.
Кеш-пам’ять є додатковим швидкодіючим місцем зберігання копій блоків інформації з основної пам’яті, імовірність звернення до яких у найближчий час є великою. Кеш-пам’ять зберігає обмежену кількість блоків даних і каталог (cache directory) – список їх поточної відповідності ділянкам основної пам’яті.
При кожному зверненні до пам’яті контролер кеш-пам’яті по каталогу перевіряє чи знаходиться дійсна копія потрібних даних у кеш-пам’яті. Якщо так, то це є випадком кеш-попадання (cache hit) і дані беруться з кеш-пам’яті. В іншому випадку фіксується кеш-промах (cache miss) і дані беруться з основної пам’яті. Звернення до основної пам’яті може починатися одночасно з пошуком у каталозі, а у випадку попадання – перериватися (архітектура Look Aside). Це економить час, але веде до збільшення енергоспоживання. Інший варіант – звернення до зовнішньої пам’яті починається тільки після фіксації промаху (архітектура Look Through), при цьому втрачається, принаймні, один такт процесора, проте заощаджується енергія.
Контролер кеш-пам’яті повинен забезпечувати когерентність (coherency) – узгодженість даних кеш-пам’яті обох рівнів з даними основної пам’яті, при умові, що звернення до цих даних може здійснюватися не тільки процесором, але й іншим активними (bus-master) адаптерами, підключеними до шини. Він оперує рядками (cache line) фіксованої довжини. Рядок може зберігати копію блока основної пам’яті. З кожним рядком кеш-пам’яті пов’язана інформація про адресу скопійованого в неї блока основної пам’яті та її стан. Рядок може бути дійсним (valid) – це означає, що в даний момент часу він достовірно відбиває відповідний блок основної пам’яті, або недійсним. Інформація про те, який саме блок займає даний рядок (тобто старша частина адреси або номер сторінки), та її стан – називається тегом (tag) і зберігається у спеціальній пам’яті тегів (tag RAM).
Запис блоку даних, що не має копії в кеш-пам’яті, відбувається в основну пам’ять. Поведінка контролера кеш-пам’яті при операції запису в пам’ять, коли копія потрібної ділянки знаходиться в деякому рядку кеш-пам’яті, визначається його політикою запису (write policy). Існують дві основні політики запису: наскрізний запис WT (write through) й обернений запис WB (write back).
В залежності від способу визначення взаємної відповідності рядка кеш-пам’яті та області основної пам’яті розрізняють три архітектури кеш-пам’яті: кеш-пам’ять прямого відображення (direct-mapped cache), повністю асоціативна кеш-пам’ять (fully associative cache) та їх комбінація – множинно-асоціативна кеш-пам’ять (set-associative cache).
Кеш-пам’ять прямого відображення. У кеш-пам’яті прямого відображення адреса пам’яті, по якій відбувається звернення, однозначно визначає рядок кеш-пам’яті, в якому може знаходитися потрібний блок. Принцип роботи такої кеш-пам’яті можна пояснити на прикладі несекторованої кеш-пам’яті об’ємом 256 Kбайт, розміром рядка 32 байти і об’ємом кешованої основної пам’яті 64 Mб, що показано на рис. 1.
Рис. 1. Кеш-пам’ять прямого відображення
Кешована область основної пам’яті умовно розбивається на сторінки (в даному випадку по 256 Kб), розмір яких співпадає з розміром кеш-пам’яті. Кеш-пам’ять поділяється на рядки (256 Kб/32 байт = 8 К рядків). Архітектура прямого відображення передбачає, що кожний рядок кеш-пам’ять може відображати з будь-якої сторінки керованої пам’яті, тільки відповідний їй рядок. На рис. 1 вони знаходяться на одному горизонтальному рівні. Оскільки об’єм основної пам’яті набагато більший за об’єм кеш-пам’яті, то на кожний рядок кеш-пам’яті може претендувати багато блоків з основної пам’яті з однаковою молодшою частиною адреси (зміщенням всередині сторінки). Номер сторінки в кеш-пам’яті називається індексом (index). Тег несе інформацію, який саме блок займає даний рядок (тобто старша частина адреси або номер сторінки). Крім адресної частини тегу, з кожним рядком кеш-пам’яті пов’язані біти ознак дійсності та модифікованості даних.
Така кеш-пам’ять має найпростішу апаратну реалізацію і застосовується у вторинній кеш-пам’яті більшості системних плат. Але вона володіє серйозним недоліком. Якщо у процесі виконання програми процесору по черзі потрібні будуть блоки пам’яті, які зміщені відносно один одного на величину, кратну розміру сторінки, то кеш-пам’ять «пробуксовуватиме» – працюватиме інтенсивно, але вхолосту (cache trashing). Чергове звернення буде заміщувати дані, зчитані у попередньому і необхідні у наступному зверненні, тобто матиме місце суцільна послідовність кеш-промахів.
Об’єм кешованої пам’яті
(Mcached)
при архітектурі прямого відображення
визначається об’ємом кеш-пам’яті
(Vcache)
і розрядністю пам’яті тегів (N):
.
Множинно-асоціативна кеш-пам’ять. Множинно-асоціативна архітектура кеш-пам’яті дозволяє кожному блоку кешованої пам’яті претендувати на один з декількох рядків кеш-пам’яті, об’єднаних в набір (set). Можна вважати, що в цій архітектурі є декілька паралельно і узгоджено працюючих каналів прямого відображення, де контролеру кеш-пам’яті доводиться приймати рішення про те, до якого рядка набору поміщувати черговий блок даних.
У найпростішому випадку кожний блок пам’яті може розташовуватися в один з двох рядків (two way set-associative cache – двоканальна множинно-асоціативна кеш-пам’ять). Така кеш-пам’ять повинна містити два банки пам’яті тегів (рис. 2).
Рис. 2. 2-канальна множинно-асоціативна кеш-пам’ять
Номер набору (індекс), в якому може відображатися потрібний блок даних, однозначно визначається середньою частиною адреси. Рядок набору, який відображає потрібний блок, визначається порівнянням тегів, паралельно виконуваним для всіх каналів кеш-пам’яті. Крім того, з кожним набором повинна бути пов’язана ознака, що визначає рядок, який підлягає заміщенню новим блоком даних у випадку кеш-промаху (на рис. 2 в його бік вказує стрілка). Кандидатом на заміщення звичайно вибирається рядок, до якого довше усього не зверталися (алгоритм LRU – Least Recently Used). Можливо також застосування алгоритму заміщення FIFO (першим увійшов – першим вийшов) або випадкового заміщення, що простіше, але менш ефективно.
Множинно-асоціативна архітектура широко застосовується для первинної кеш-пам’яті сучасних процесорів. Об’єм керованої пам’яті визначається таким самим чином, як для кеш-пам’яті прямого відображення, але в даному випадку фігурує об’єм одного банку (а не усієї кеш-пам’яті) і розрядність його комірок тегів.
Асоціативна кеш-пам’ять. У повністю асоціативної кеш-пам’яті будь-який його рядок може відображати будь-який блок пам’яті, що суттєво підвищує ефективність використання обмеженого об’єму кеш-пам’яті. При цьому всі біти адреси кешованого блоку, за виключенням бітів, що визначають зміщення даних у рядку, зберігаються в пам’яті тегів. У такій архітектурі для визначення наявності потрібних даних в кеш-пам’яті потрібно порівняння зі старшою частиною адреси тегів усіх рядків, а не одної або декількох, як при прямому відображенні або множинно-асоціативній архітектурі. Єдиним прийнятним рішенням при цьому є паралельний аналіз усіх комірок, що є складною апаратною задачею, яка поки що вирішена тільки для невеликих об’ємів первинної кеш-пам’яті.
