Види і принципи роботи кеш-пам'яті b>
p>
Реферат по предмету: Інформатика та
Обчислювальна техніка виконав студент групи 4381С Гаффарова Р.З. p>
Камський Державний Політехнічний
Інститут p>
Кафедра ЕОУП p>
р. Набережні Човни p>
2003 г. p>
Одним з найважливіших пристроїв
комп'ютера є пам'ять, або запам'ятовуючий пристрій (ОЗУ). За визначенням,
даному в книзі "Інформатика в поняттях і термінах", ОЗП --
"функціональна частина цифрової обчислювальної машини, призначеної для
запису, збереження і видачі інформації, представлених у цифровому вигляді. "
Однак під це визначення потрапляє як власне пам'ять, так і зовнішні
запам'ятовуючі пристрої (типу накопичувачів на жорстких і гнучких дисках, магнітній
стрічки, CD-ROM), які краще віднести до пристроїв введення/виводу інформації.
Таким чином під комп'ютерною пам'яттю в подальшому буде розумітися тільки
"внутрішня пам'ять комп'ютера: ОЗУ, ПЗУ, кеш пам'ять і флеш-пам'ять". p>
Однак ОЗУ працює набагато
повільніше процесора. Інша справа - кеш. Дуже швидка і дуже дорога пам'ять.
Але саме через дорожнечу в комп'ютерній системі об'єм кеш складає всього
10-15% від обсягу звичайної ОЗУ. А також використовуються спеціальні алгоритми роботи
материнської плати і процесора, що забезпечують максимальну продуктивність
за наявності вбудованої кеш-пам'яті. p>
1. Загальні поняття про кешуванні і кеш-пам'яті b>
p>
Існуюча вже більше 100 років
архітектура комп'ютера, запропонована ще Фон Нейманом, практично не зазнала
зміни. Все також процесор оточує оперативна, постійна і зовнішня
пам'ять. І все також оперативна пам'ять, що є однією зі швидкісних
елементів пам'яті всередині комп'ютера, не досягає за швидкістю процесор на
кілька порядків. p>
Природно, що такий «гальмо»
у вигляді одного з необхідних елементів комп'ютера не влаштовував його творців.
Тим більше, що у великих комп'ютерах вже давно існувало поняття кеш-пам'яті
(cashe-memory), більш швидкою, ніж ОЗУ, але
меншої місткості. Було вирішено перенести її архітектуру з БЕВМ на звичайні
персональні комп'ютери. p>
Принцип роботи кеш-пам'яті
полягає в наступному. Процесор рідко використовує весь обсяг ОЗУ практично
одночасно. Скакати з одного кута пам'яті в інший, періодично пошвиріваясь
по всьому його об'єму - це не найкращий спосіб використання ресурсів комп'ютера.
Найчастіше всі звернення процесора до пам'яті зосереджені в невеликій області
(як показує статистика - 5-10% від загального обсягу). Якщо дані з
області як або апаратно скопіювати в кеш, а потім постійно звіряти кеш і
ОЗУ на предмет цілісності даних, то можна забезпечити режим роботи, при
якому процесор буде звертатися тільки до кеш-пам'яті, витрачаючи на це
значно менше ресурсів і часу, ніж звичайно. p>
Природно, що весь обсяг ОЗП
скопіювати в кеш немає можливості - такий обсяг кеш-пам'яті за ціною порівнюється
з вартістю комп'ютера, а сенсу зменшувати обсяг ОЗУ теж немає. Було вирішено
реалізувати алгоритм роботи процесора, кеш-пам'яті і ОЗУ апаратно, щоб не
витрачати ресурси процесора. p>
Принцип полягає в наступному:
коли процесор звертається до певної комірці пам'яті, сегмент пам'яті
певного обсягу (цей обсяг називається об'ємом сторінки кеш) копіюється у
кеш повністю. Якщо процесор далі не зробить глобальний стрибок на інший,
далекий від поточного, адреса пам'яті, то подальша робота процесора буде
відбуватися безпосередньо з кеш, минаючи ОЗУ, а контролер кеш-пам'яті в проміжках,
коли процесор зайнятий обчисленнями (або паралельно з роботою процесора)
буде відновлювати вірні дані в ОЗУ або в кеш (у разі наявності
пристроїв, що безпосередньо працюють з пам'яттю). Природно, чим більше буде
сторінок і чим більше буде їх обсяг - тим вище буде швидкість роботи
процесора. p>
Починаючи з 386-х процесорів
кеш-пам'ять встановлювалася на більшість материнських плат. Все це дозволяло
підвищувати продуктивність систем не в рази, а на порядки. Але з виходом 486
процесора кеш-пам'ять була розділена: з'явився кеш, реалізований
безпосередньо на кристалі процесора (в 486DX).
Незважаючи на малий його обсяг - 1 Кб - це вже був стрибок у продуктивності і
дуже великий: адже кеш, розташований на кристалі процесора працює на
частоті процесора, що в кілька разів перевищує швидкість роботи кеш-пам'яті,
встановленої на материнській платі. p>
Починаючи з 486 процесорів
кеш-пам'ять відчуває такий поділ на кеш 1-го рівня - встановлений на
кристалі (або в одному корпусі) процесора і працює з ним на одній частоті,
і кеш 2-го рівня, встановлений на материнській платі, що працює швидше
звичайної ОЗУ, але повільніше кеша першого рівня. p>
Проте цим не обмежується
використання кеш-пам'яті. Адже таким чином її можна використовувати там, де
існує проблема швидкодії, але є можливість організувати інформацію. До
таким застосуванням відносять: p>
апаратне кешування жорстких
дисків (кеш-пам'ять встановлюється безпосередньо на жорсткому диску або на
спеціальному контролері); p>
програмне кешування CD-ROM, а також інших пристроїв зберігання
інформації (програмно - за допомогою операційної системи, апаратно - на самому
пристрої або на контролері). p>
І не тільки: сьогодні часто-густо
навіть самий простий пристрій має своєю пам'яттю, що працює швидше,
ніж сам пристрій. До таких відносять принтери, сканери, модеми і т.д. p>
Але все-таки найбільш популярної
є кеш-пам'ять першого рівня (процесорна) і другий (встановлена на
материнської плати). p>
2. Внутрішній кеш процесора b>
p>
Внутрішньо кешування звернень
до пам'яті застосовується в процесорах, починаючи з 486-го. З кешуванням пов'язані
нові функції процесорів, біти регістрів і зовнішні сигнали. p>
Процесори 486 і Pentium мають внутрішній кеш першого рівня, в Pentium Pro і Pentium II є і
вторинний кеш. Процесори можуть мати як єдиний кеш інструкцій і даних, так і
загальний. Виділений кеш інструкцій зазвичай використовується тільки для читання. Для
внутрішнього кеша зазвичай використовуються складальні-асоціативна архітектура. p>
Рядки в кеш-пам'яті виділяються
тільки при читанні, політика запису перших процесорів 486 - тільки Write Through (наскрізна
запис) - повністю програмно-прозора. Більш пізні модифікації 486-го і
всі старші процесори дозволяють перемикатися на політику Write Back (зворотній
запис). p>
Роботу кешу розглянемо на
прикладі чотирьохканального набірної-асоціативного кеша процесора 486. Кеш
є несекторірованним - кожен біт достовірності (Valid bit) відноситься до цілої рядку, так що
стоку не може бути "частково достовірної". p>
Роботу внутрішньої кеш-пам'яті
характеризують такі процеси: обслуговування запитів процесора на звернення
до пам'яті, виділення і заміщення строк для кешування областей фізичної
пам'яті, забезпечення узгодженості даних внутрішнього кеша та оперативної
пам'яті, управління кешуванням. p>
Будь-який внутрішній запит процесора
на звернення до пам'яті спрямовується на внутрішній кеш. Теги чотирьох рядків
набору, який обслуговує цю адресу, порівнюються зі старшими бітами
запитаного фізичної адреси. Якщо адресуемая область представлена в рядку
кеш-пам'яті (випадку потрапляння-cache hit), запит на читання обслуговується тільки кеш-пам'яті, не
виходячи на зовнішню шину. Запит на запис модифікує цього рядка, і в
залежно від політики запису або відразу виходить на зовнішню шину (при наскрізної
запису), або трохи пізніше (при використанні алгоритму зворотного запису). p>
У разі промаху (Cache Miss) запит на
запис направляється тільки на зовнішню шину, а запит на читання обслуговується
складніше. Якщо цей заріс відноситься до Кешована області пам'яті, виконується
цикл заповнення цілого рядка кеша - всі 16 байт (32 для Pentium) читаються з оперативної пам'яті і поміщаються в одну з
рядків кеша, що обслуговує цю адресу. Якщо витребувані дані не
укладаються в одному рядку, заповнюється і сусідня. Заповнення рядка процесор
намагається виконати самим швидким способом - пакетним циклом з 32-бітними
передачами (64-бітними для Pentium і старше). p>
Внутрішній запит процесора на
дані задовольняється відразу, як тільки витребувані дані зчитуються з
ОЗУ - заповнення рядка до кінця може відбуватися паралельно з обробкою
отриманих даних. Якщо в наборі, який обслуговує цю адресу пам'яті,
є вільна рядок (з нульовим бітом достовірності), заповнена буде вона і
для неї встановиться біт достовірності. Якщо вільних рядків у наборі немає, буде
заміщена рядок, до якої найдовше не було звернень. Вибір рядка для
заміщення виконується на основі аналізу біт LRU
(Least Recently Used) за алгоритмом "псевдо-LRU".
Ці біти (по три на кожний з наборів) модифікуються при кожному зверненні до
рядку даного набору (кеш-попаданні або заміщення). p>
Таким чином, виділення і
заміщення строк виконуватися тільки кеш-промахів читання, при промахи запису
заповнення рядків не проводиться. Якщо затребувана область пам'яті присутній
у рядку внутрішнього кеша, то він обслуговуватиме цей запит. Керувати кешуванням
можна тільки на етапі заповнення рядків; крім того, існує можливість їх
анулювання - оголошення недостовірними і очищення всієї кеш-пам'яті. p>
Очищення внутрішньої кеш-пам'яті
при наскрізний запису (обнулення біт достовірності всіх рядків) здійснюється
зовнішнім сигналом FLUSH # за один такт системної шини (і,
звичайно ж, за сигналом RESET). Крім того, є інструкції
анулювання INVD і WBINVD. Інструкція INVD анулює рядка
внутрішнього кешу без вивантаження модифікованих рядків, тому її необережне
використання при включеній політики зворотного запису може привести до
порушення цілісності даних в ієрархічній пам'яті. Інструкція WBINVD попередньо вивантажує модифіковані рядки в
основну пам'ять (при наскрізний запису її дію співпадає з INVD). При зворотного запису очищення кешу має на увазі і
вивантаження всіх модифікованих строк в основну пам'ять. Для цього, природно,
може знадобитися і значне число тактів системної шини, необхідних для
проведення всіх операцій запису. p>
Анулювання рядків виконується
зовнішніми схемами - воно необхідне в системах, у яких в оперативну пам'ять
запис може проводити не тільки один процесор, а й інші контролери шини
- Процесор або периферійні контролери. У цьому випадку потрібні спеціальні
засоби для підтримки узгодженості даних у всіх щаблях пам'яті - у
первинної та вторинної кеш-пам'яті і динамічного ОЗУ. Якщо зовнішній (по
відношенню до розглянутого процесору) контролер виконує запис в пам'ять,
процесору має бути поданий сигнал AHOLD. З цього
сигналу процесор негайно віддає керування шиною адреси A [31:4], на якій зовнішнім контролером встановлюється
адреса пам'яті, що супроводжується стробі EADS #. Якщо
адресована пам'ять присутній у первинному кеші, процесор анулює рядок
- Скидає біт достовірності цього рядка (вона звільняється). Анулювання
рядка процесор виконує в будь-якому стані. p>
Управління заповненням кешу
можливо і на апаратній і на програмному рівнях. Процесор дозволяє
кешувати будь-яку область фізичної пам'яті, але зовнішні схеми можуть забороняти
процесору кешувати певні області пам'яті. Це робиться за різними
причин, часто пов'язаним з певними умовами створення комп'ютерної
системи. p>
3. Зовнішній кеш процесора b>
p>
На відміну від внутрішньої
кеш-пам'яті, зовнішня більше нагадує звичайну пам'ять. Однак алгоритм роботи з
ній практично такою ж. p>
Зовнішня кеш-пам'ять складається з
пам'яті даних, побудована на мікросхемах SRAM, і контролера кеша. У
кеш-пам'яті зберігається інформація, копійований з основної оперативної пам'яті.
Кожного разу при звертанні мікропроцесора до пам'яті контролер кеш-пам'яті
перевіряє наявність даних в кеші. Якщо ці дані в кеші є ( "попадання"), то
мікропроцесор отримує дані з кеша. Якщо цих даних немає ( "промах"),
виконується звичайний цикл звернення до оперативної пам'яті DRAM. p>
Основним чинником, що визначає
ймовірність потрапляння, є ємність кеш-пам'яті. Як правило, при обсязі
кеша в 2 Кбайта ймовірність потрапляння становить від 50 до 60%. Оскільки розмір
кеш-пам'яті на сучасних комп'ютерах перевищує 256 Кбайт, то ймовірність
попадання буде вище 90% (для комп'ютерів із обсягом пам'яті ~ 256 Мбайт.) p>
Для реалізації кеш-пам'яті в
даний час розроблені ефективні однокристальних контролери. Найбільш
широкого поширення набули контролери i82385 фірми Intel і A38152 фірми
Asustec Microsystems. P>
Контролер i82385 підтримує
32 Кбайта кеш-пам'яті, і може працювати в двох конфігураціях: p>
кеш-пам'яті з прямим
відображенням; p>
двоканальна
модульно-асоціативна кеш-пам'ять. p>
Перша конфігурація
характеризується простотою реалізації, однак вона виявляється неефективною при
роботи в мультизадачності системах. У двоканальної реалізації кеш-пам'ять
розбиває всі 4 Гбайтное адресний простір на 262144 сторінки по 16 Кбайт.
32-х розрядний фізичну адресу складається з четирнадцатіразрядного адреси,
визначає інформацію в кеш-пам'яті, і восемнадцатіразрядного тега,
визначає номер сторінки. Кожен адреса оперативної пам'яті може бути
відображений в одну з двох осередків кеш-пам'яті. p>
Особливість контролера
кеш-пам'яті - забезпечення можливості паралельної роботи мікропроцесора з
кеш-пам'яті і периферійних пристроїв з оперативною пам'яттю в режимі прямого
доступу. Під час запису даних за адресами, що знаходяться в кеші, контролер
ліквідує копії цих блоків в кеші. Всю роботу із синхронізації даних у DRAM
і кеші бере на себе цей контролер. p>
Одним з популярних контролерів
кеш-пам'яті є однокристальний контролер кеш-пам'яті фірми ASUSTEC,
спільно з пам'яттю даних 32 Кбайта забезпечує вірогідність попадання більше
95%. Це досягається завдяки використанню чотирьохканального
модульно-асоціативного звернення, який відображає адреса оперативної пам'яті
в одну з чотирьох клітинок кеш-пам'яті. При цьому, внаслідок організації
послідовного звернення до пам'яті даних, потрібне підключення лише одного
банку пам'яті даних. p>
Контролер A38152 фірми Asustec
має апаратні і програмні засоби, що забезпечують зв'язаність інформації:
логіка стеження за шиною, яка забезпечує ліквідацію копій блоків у
кеш-пам'яті, завдання області адрес, не відображається в кеш-пам'ять. p>
На багатьох материнських платах
можна вибирати між однорівневої або багаторівневої системами організації
пам'яті. За замовчуванням встановлюється ражім багаторівневої пам'яті. Якщо Ви
встановіть режим однорівневої пам'яті, то кеш-пам'ять SRAM просто додається до
адресного простору основної оперативної пам'яті. Однорівневу пам'ять краще
використовувати, коли внутрішній кеш процесора за об'ємом перевершує ємкість
кеш-пам'яті на материнській платі. p>
4. Додаткова кеш-пам'ять і програмне кешування b>
p>
4.1. Кешування дисків b>
p>
Проте кеш-пам'ять процесора і
оперативної пам'яті - це не єдиний варіант її використання. Фактично
кешування як процес збільшення швидкості за рахунок підміни пристрою більше
швидким, використовується вже давно. Причому не апаратно, а програмно (апаратно
теж, але це залишається за високим парканом закритих технологій виробників
жорстких дисків та інших пристроїв). p>
Операційна система MS-DOS з 4 версії має у своєму складі
smartdrive програму, що дозволяє найбільш використовувані дані з жорсткого диска
(або дисків) перенести в пам'ять комп'ютера. При цьому ОС, звертаючись до диску,
буде фактично звертатися до пам'яті, за рахунок чого збільшиться швидкодія.
Пізніше, при найменшій завантаженні дані з пам'яті будуть скинуті на диск. P>
Природно, так як ідеалу не
існує, то і в даній моделі доводиться чимось жертвувати. Такий жертвою
є вільна пам'ять. Проте якщо на перших комп'ютерах з об'ємом пам'яті
1-16 Мб це було істотно, то сьогодні, коли обсяг пам'яті нерідко всього лише
в кілька разів менше обсягу диска, виділити під кеш 4-16 Мб не так вже й
страшно. p>
Але сьогодні думати про це
користувачеві немає необхідності. Сучасні операційні системи Windows 95/98/Me/2000/XP організують кеш для жорсткого диска (і взагалі для всіх пристроїв
зберігання інформації) у пам'яті самостійно, автоматично виділяючи під будь-яке
пристрій необхідний обсяг і роблячи це абсолютно непомітно для користувача. p>
Єдиним недоліком
подібної організації залишається те, що у разі зникнення живлення (і не дуже
хорошому блоці живлення) дані з пам'яті на диск ОС скинути не встигне, і вони
буде втрачено. p>
Варто додати, що сьогодні
практично всі жорсткі диски мають вбудований кеш для збільшення роботи.
Причому йому не властивий недолік, описаний нами вище. Сучасні
технології дозволяють жорсткого диска навіть після зникнення живлення нормально
очищати кеш і завершувати роботу. p>
4.2. Файл підкачки як кеш b>
p>
Проте, говорячи про кеш, не можна не
згадати про таку його своєрідною реалізації, як файл підкачки у Windows. Здавалося б: якщо комп'ютер і так гальмує через роботу з
ОЗУ, то навіщо створювати зайві проблеми і скидати частина даних з ОЗП на диск
- Адже це ще більше зменшить швидкість роботи системи. Однак цілі тут
зовсім інші. p>
Основне призначення файлу
підкачки полягає в тому, щоб дозволити активній програмі скористатися
практично всім об'ємом пам'яті, встановленим на комп'ютері. Природно, що
якщо ви працюєте в word і друкуєте (вже дві години) три
сторінки якогось тексту, то всі 512 Мб ОЗУ вам не потрібні. Але якщо сфера вашої
діяльності - відео, звуки або робота в інтернеті (особливо в ролі web-майстра), то це вже є істотним плюсом ОС. Ви
можете запустити всі потрібні вам програми, а потім не тільки користуватися
практично 100% обсягу ОЗУ, встановленого на комп'ютері, але і використовувати
його в якості такого собі величезного буфера обміну. p>
Крім того, дана організація
дозволяє виконати ще одну функцію: періодичну оптимізацію даних,
що містяться в ОЗУ з метою більш раціонального його використання. Видалення
даних, вже не використовуються, а також збереження даних, рідко використовуються, на
диску, дозволяє вивільнити додатковий обсяг простору. p>
Висновок b>
p>
Кеш-пам'ять, що з'явилася в кінці
80-х, спочатку була доступна декому і найчастіше їй пророкували коротке
майбутнє: ціни на неї були астрономічні, а реальної збільшення швидкодії
було недостатньо. Однак бум високих технологій в 90-х змінив ставлення
користувачів і фахівців до подібного явища: зараз кеш люблять і зменшують
найчастіше у випадку знову ж таки дорожнечі зі сльозами. p>
Випустивши 486 процесор, фірма Intel здійснила справжню революцію. Тут не тільки наявність
вбудованого математичного співпроцесора і множення частоти, але ще й наявність
вбудованого кеш. Сумно визнати, але з цього моменту подібних революцій Intel вже не виробляла. P>
Після цього був Pentium Pro, що несе на собі
вже два рівні кеш-пам'яті, а потім і Pentium II, аналогічний попередньому, але більш швидкий і більше
дешевий. p>
Потім намітилося поділ:
вбудований кеш другого рівня забезпечував серйозний підйом продуктивності,
але коштувала дорого. Тому в дешевих моделях процесорів (Celeron Covington - 266-300
МГц) його встановлювати не поспішали (знову ж таки є думка, що кеш-то там є,
просто його робота заборонена). p>
Проте в такій моделі
Celeron - Mednocino (300-433 МГц) кеш другого пам'яті вже був. І на сьогоднішній
день, принаймні Intel, більше не заявляє про те, що
збирається позбавляти будь-який свій майбутній процесор цього корисного додачу. p>
Список літератури b>
p>
Гук. М. Процесори intel від 8086 до Pentium 4.
З-Питербург - "Пітер Паблішинг" - 2002. P>
В.Е. Фігурне IBM PC для
користувача; 8 видання. Москва --
«Фінанси», 2001. P>
Огляд процесорів та шин ПВМ.
Москва - 2001. P>
косячки Р. Дід мороз - червоний
ніс. Компьютерра-Спецвипуск, Зима 2002, Зимові подарунки. С. 8-13. P>
радівські Н. Шляхи апгрейда.
Компьютерра-Спецвипуск, Зима 2002, Зимові подарунки. С. 14-21. P>