Ця стаття є сирим з іншої мови. Можливо, вона створена за допомогою машинного перекладу або перекладачем, який недостатньо володіє обома мовами. (вересень 2015) |
Кеш процесора — кеш, який використовується центральним процесором (англ. CPU) для скорочення середнього часу доступу до пам'яті комп'ютера. Кеш — це швидша і менша за розміром пам'ять, яка зберігає копії даних, що часто використовуються, з головної пам'яті.
Коли процесору потрібно звернутися в пам'ять для читання або запису даних, він спочатку перевіряє, чи є їхні копії в кеші. У разі успіху перевірки процесор виконує операцію використовуючи кеш, що працює швидше ніж при використанні повільнішої основної пам'яті. Детальніше про затримки пам'яті див. (англ. SDRAM latency) SDRAM: tCAS, tRCD, tRP, tRAS
Більшість сучасних мікропроцесорів для настільних комп'ютерів і серверів мають щонайменше три незалежних кеші: кеш інструкцій для прискорення завантаження машинного коду, кеш даних для прискорення читання і запису даних і буфер асоціативної трансляції (TLB) для прискорення трансляції віртуальних (логічних) адрес у фізичні, як для інструкцій, так і для даних. Кеш даних часто реалізується у вигляді багаторівневого кешу (L1, L2, L3)..
Збільшення розміру кеш-пам'яті може позитивно впливати на продуктивність майже всіх застосунків, хоча в деяких випадках ефект незначний. Робота кеш-пам'яті зазвичай прозора для програміста, проте для її ефективного використання у деяких випадках застосовуються спеціальні алгоритмічні прийоми, які змінюють порядок обходу даних в ОЗП або підвищують їх локальність (наприклад, при блочному множенні матриць).
Принцип роботи
Даний розділ описує типовий кеш даних і деякі види кешу інструкцій; TLB може бути влаштований складніше, а кеш інструкцій — простіше. На діаграмі праворуч зображені основна і кеш-пам'ять. Кожен рядок — група комірок пам'яті, що містить дані, організовані в кеш-лінії. Розмір кожної кеш-лінії може розрізнятися у різних процесорах, але для більшості x86-процесорів він становить 64 байта. Розмір кеш-лінії зазвичай більше розміру даних, до якого є можливим доступ з однієї машинної команди (типові розміри від 1 до 16 байт). Кожна група даних в пам'яті розміром у 1 кеш-лінію має порядковий номер. Для основної пам'яті цей номер є адресою пам'яті з відкинутими молодшими бітами. У кеші кожної кеш-лінії додатково ставиться у відповідність тег, який є адресою продубльованих в цій кеш-лінії даних в основній пам'яті.
При звертанні процесора в пам'ять спочатку проводиться перевірка, чи зберігає кеш запитувані з пам'яті дані. Для цього проводиться порівняння адреси запиту з значеннями всіх тегів кешу, в яких ці дані можуть зберігатися. Випадок збігу з тегом якої-небудь кеш-лінії називається попаданням в кеш (англ. cache hit), зворотний випадок називається кеш-промахом (англ. cache miss). Попадання в кеш дозволяє процесору негайно провести читання або запис даних у кеш-лінії з збіглася тегом. Відношення кількості попадань в кеш до загальної кількості запитів до пам'яті називають рейтингом влучень (англ. hit rate), воно є мірою ефективності кешу для обраного алгоритму або програми.
У разі промаху в кеші виділяється новий запис, у тег якого записується адреса поточного запиту, а в саму кеш-лінію — дані з пам'яті після їх прочитання або дані для запису в пам'ять. Промахи з читання затримують виконання, оскільки вони вимагають запиту даних в більш повільної основної пам'яті. Промахи по запису можуть не давати затримку, оскільки потрібні дані можуть бути збережені в кеші, а запис їх в основну пам'ять можна зробити у фоновому режимі. Робота кешу інструкцій багато в чому схожа на вищенаведений алгоритм роботи кешу даних, але для інструкцій виконуються тільки запити на читання. Кеш інструкцій і даних можуть бути розділені для збільшення продуктивності (принцип, використовуваний в Гарвардській архітектурі) або об'єднані для спрощення апаратної реалізації.
Для додавання даних в кеш після кеш-промаху може знадобитися витіснення (англ. evict) раніше записаних даних. Для вибору заміщаючого рядка кешу використовується евристика, звана політика заміщення (англ. replacement policy). Основною проблемою алгоритму є передбачення, який рядок найімовірніше не буде потрібно для подальших операцій. Якісні передбачення складні, і апаратні кеші використовують прості правила, такі, як LRU. Відмітка деяких областей пам'яті як некешованих (англ. non cacheable) покращує продуктивність за рахунок заборони кешування рідко використовуваних даних. Промахи для такої пам'яті не створюють копію даних в кеші.
При запису даних у кеш повинен існувати певний момент часу, коли вони будуть записані в основну пам'ять. Це час контролюється політикою запису (англ. write policy). Для кешу зі наскрізним записом (англ. write-through) будь-який запис у кеш приводить до негайного запису в пам'ять. Інший тип кешів, зворотна запис англ. write-back (іноді також званий copy-back), відкладає запис на більш пізній час. У таких кешах відстежується стан кеш-лінійок ще не скинутих в пам'ять (відмітка бітом «брудний» англ. dirty). Запис в пам'ять проводиться при витісненні подібного рядка кешу. Таким чином, промах в кеші, що використовує політику зворотного запису, може вимагати двох операцій доступу в пам'ять, один для скидання стану старого рядка і інший — для читання нових даних.
Існують також змішані політики. Кеш може бути із наскрізним записом (англ. write-through), але для зменшення кількості транзакцій на шині записи можуть тимчасово міститися в чергу і об'єднуватися один з одним.
Дані в основній пам'яті можуть змінюватися не тільки процесор, але і периферією, що використовує прямий доступ до пам'яті, або іншими процесорами багатопроцесорні системи. Зміна даних призводить до застарівання їх копії в кеші (стан stale). В іншої реалізації, коли один процесор змінює дані в кеші, копії цих даних в кешах інших процесорів будуть помічені як stale. Для підтримки вмісту декількох кешів в актуальному стані використовується спеціальний протокол кеш когерентності.
Структура запису в кеші
Типова структура запису в кеші
Блок даних | тег | біт актуальності |
Блок даних (кеш-лінія) містить безпосередню копію даних з основної пам'яті. Біт актуальності означає, що даний запис містить актуальну (найсвіжішу) копію.
Структура адреси
тег | індекс | зміщення |
Адреса пам'яті, що розділяється (від старших біт до молодших) на Тег, індекс і зміщення. Довжина поля індексу дорівнює біт і відповідає ряду (рядку) кешу, використовуваної для запису. Довжина зсуву дорівнює .
Асоціативність
Асоціативність є компромісом. Перевірка більшого числа записів вимагає більше енергії, площі чипу, і, потенційно, часу. Якщо б існувало 10 місць, які алгоритм витіснення міг би відобразити місце в пам'яті, тоді перевірка наявності цього місця в кеші зажадала б переглянути 10 записів в кеші. З іншого боку, кеші з високою асоціативністю піддаються меншому кількості промахів (див. нижче «конфліктуючі промахи») і процесор витрачає менше часу на читання з повільної основної пам'яті. Існує емпіричне спостереження, що подвоєння асоціативності (від прямого відображення до 2-канальної або від 2- до 4-канальної) має приблизно такий же вплив на інтенсивність влучень (hit rate), що і подвоєння розміру кешу. Збільшення асоціативності понад 4 каналів приносить менший ефект для зменшення кількості промахів (miss rate) і зазвичай виробляється з інших причин, наприклад, через перетин віртуальних адрес.
В порядку погіршення (збільшення тривалості перевірки на потрапляння) та поліпшення (зменшення кількості промахів):
- кеш прямого відображення (англ. direct mapped cache) — найкращий час попадання і, відповідно, найкращий варіант для великих кешів;
- 2-канальний множинно-асоціативний кеш англ. 2-way set associative cache;
- 2-канальний skewed асоціативний кеш (англ. «the best for tradeoff …. caches whose sizes are in the range 4K-8K bytes» — André Seznec);
- 4-канальний множинно-асоціативний кеш (англ. 4-way set associative cache);
- повністю асоціативний кеш, (англ. fully associative cache) — найкращий (найнижчий) відсоток промахів (miss rate) і найкращий варіант при надзвичайно високих витратах при промаху (miss penalty).
Псевдо-ассоціативний кеш
Види промахів
Промах з читання з кешу інструкцій. Зазвичай дає дуже велику затримку, оскільки процесор не може продовжувати виконання програми (принаймні, виконання поточного потоку) і змушений простоювати в очікуванні завантаження інструкції з пам'яті.
Промах з читання з кешу даних. Зазвичай дає меншу затримку, оскільки інструкції, які не залежать від запитаних даних, можуть продовжувати виконуватися, поки запит обробляється в основній пам'яті. Після отримання даних з пам'яті можна продовжувати виконання залежних інструкцій.
Категорії промахів (Three Cs)
- Compulsory misses — промахи, викликані першою згадкою потрібної адреси. Розміри кешів і їх асоціативність не впливають на кількість даних промахів. Попередня вибірка (prefetching), як програмну, так і апаратну, може допомогти, так само, як і збільшення розміру кеш-лінії (як виду апаратного вибору). Такі промахи іноді називають «холодними».
- Capacity misses — промахи, викликані виключно кінцевим розміром кешу, що відбуваються незалежно від ступеня асоціативності або розміру кеш-лінії. Графік таких промахів щодо розміру кешу може дати деяку міру тимчасової локальності (temporal locality) деякого набору запитів в пам'ять. Варто зауважити, що не існує поняття повного кешу, порожнього кешу або майже повного кешу, так як кеші процесора майже весь час мають кеш-лінії в зайнятому стані, і, отже, практично кожен заклад нової лінії зажадає гасіння вже зайнята.
- Conflict misses — промахи, викликані конфліктом. Їх можна уникнути, якщо б кеш не витіснив запис раніше. Можна додатково розділити на промахи, викликані відображенням (конкретним значенням асоціативності) і промахи заміщення, які викликані конкретним алгоритмом вибору записів для заміщення.
Трансляція адрес
Більша частина процесорів загального призначення реалізує якийсь варіант віртуальної пам'яті. Коротко кажучи, кожна програма, що виконується на машині, бачить власний спрощений адресний простір, що містить код і дані тільки цієї програми. Будь-яка програма використовує свій віртуальний адресний простір незалежно від його місцезнаходження у фізичній пам'яті.
Наявність віртуальної пам'яті вимагає від процесора проведення трансляції віртуальних (математичних) адрес, використовуваних програмою, у фізичні адреси, відповідні реальному розташуванню в ОЗП. Частина процесора, провідна це перетворення, називається пристрій управління пам'яттю (MMU). Для прискорення трансляцій в MMU доданий кеш нещодавно використаних відображень (відповідностей віртуальних і фізичних адрес), званий Translation Lookaside Buffer (TLB).
Для подальшого опису важливі три особливості процесу трансляції адрес:
- Затримка: Фізичний адресу буде отримано від MMU тільки через деякий час, аж до декількох тактів, після подачі на вхід MMU віртуального адреси з генератора адрес.
- Ефект накладення: Кілька віртуальних адрес, які можуть відповідати одному фізичному. У більшості процесорів гарантується, що всі записи по фізичній адресою будуть здійснені в порядку, заданому програмою. Для виконання цієї властивості потрібна перевірка, що тільки один екземпляр копії даних з фізичної адреси знаходиться в даний момент в кеші.
- Одиниця відображення: Віртуальне адресний простір розбито на сторінки — блоки пам'яті фіксованого розміру, що починаються з адреси, кратних їх розміром. Наприклад, 4 ГБ адресного простору можна розділити на 1048576 сторінки по 4 КБ, для кожної з яких можливо незалежне відповідність фізичним сторінкам. У сучасних процесорах часто підтримується використання одночасно декількох розмірів сторінки, наприклад, 4 КБ і 2 МБ для x86-64, а в деяких сучасних AMD-процесорах ще і 1 ГБ.
Важливо також зауважити, що перші системи віртуальної пам'яті були дуже повільними, тому що вони вимагали перевірки таблиці сторінок (зберігається в основній ПАМ'ЯТІ) перед будь-яким програмним зверненням в пам'ять. Без використання кешування для відображень такі системи зменшують швидкість роботи з пам'яттю приблизно в 2 рази. Тому використання TLB дуже важливо і іноді його додавання в процесори передувало появі звичайних кешу даних та інструкцій.
По відношенню до віртуальної адресації кеші даних та інструкцій можуть бути поділені на 4 типи. Адреси в кешах використовуються для двох різних цілей: індексування і тегів.
- Physically indexed, physically tagged (PIPT) — фізично індексовані і фізично тегируемые. Такі кеші прості і уникають проблем з накладенням (aliasing), але вони повільні, так як перед зверненням в кеш потрібен запит фізичної адреси в TLB. Цей запит може викликати промах в TLB і додаткове звернення в основну пам'ять перед тим, як наявність даних буде перевірено в кеші.
- Virtually indexed, virtually tagged (VIVT) — віртуально індексовані і віртуально тегируемые. І для тегів, і для індексу використовується віртуальний адресу. Завдяки цьому перевірки наявності даних в кеші відбуваються швидше, не вимагаючи звернення до MMU. Однак виникає проблема накладання, коли кілька віртуальних адрес відповідають одному й тому ж фізичному. У цьому випадку дані будуть закешовані двічі, що сильно ускладнює підтримку когерентності. Іншою проблемою є омоніми, ситуації, коли один і той же віртуальний адресу (наприклад, у різних процесах) відображається різні фізичні адреси. Стає неможливим розрізнити такі відображення виключно по віртуальному індексу. Можливі рішення: скидання кешу при перемиканні між завданнями (context switch), вимога непересечения адресних просторів процесів, тегування віртуальних адрес ідентифікатором адресного простору (address space ID, ASID) або використання фізичних тегів. Також виникає проблема при зміні відображення віртуальних адрес у фізичні, що вимагає скидання кеш-ліній, для яких змінилося відображення.
- Virtually indexed, physically tagged (VIPT) — віртуально індексовані і фізично тегируемые. Для індексу використовується віртуальний адреса, а для тегу — фізичний. Перевагою над першим типом є менша затримка, оскільки можна шукати кеш-лінію одночасно з трансляцією адрес в TLB, однак порівняння тегу затримується до одержання фізичної адреси. Перевагою над другим типом є виявлення омонімів (homonyms), так як тег містить фізична адреса. Для даного типу потрібно більше біт для тегу, оскільки індексні біти використовують інший тип адресації.
- Physically indexed, virtually tagged — фізично індексовані і віртуально теговані кеші вважаються непотрібними і маргінальними і представляють виключно академічний інтерес.
Швидкість цих дій (затримка завантаження з пам'яті) критично важлива для продуктивності процесорів, і тому більшість сучасних L1-кешів є віртуально індексованими, що як мінімум дозволяє блоку MMU робити запит в TLB одночасно з запитом даних їх кеш-пам'яті.
Віртуальне тегування і механізм vhints
Але віртуальна індексація не є найкращим вибором для інших рівнів кешу. Вартість виявлення перетину віртуальних адрес (aliasing) зростає із збільшенням розміру кешу і, в результаті, більшість реалізацій L2 і більш далеких від процесора рівнів кешу використовують індексування за фізичними адресами
Досить тривалий час кеші використовували для тегів як фізичні, так і віртуальні адреси, хоча віртуальне тегування в даний час зустрічається дуже рідко. Якщо TLB-запит закінчується раніше запиту в кеш-пам'ять, фізичний адресу буде доступний для порівняння з тегом до моменту, коли це буде необхідно, і, отже, віртуальне тегування не потрібно. Великі кеші частіше тегуються фізичними адресами, і лише невеликі швидкодіючі кеші використовують для тегів віртуальні адреси. У сучасних процесорах загального призначення, віртуальне тегування замінено на механізм vhints, описаний далі.
Ієрархія кешів в сучасних мікропроцесорах
Більшість сучасних процесорів містять у собі кілька взаємодіючих кешів.
Спеціалізовані кеші
Суперскалярні процесори здійснюють доступ до пам'яті з декількох етапів конвеєра: читання інструкцій (instruction fetch), трансляція віртуальних адрес у фізичні, читання даних (data fetch). Очевидним рішенням є використання різних фізичних кешів для кожного з цих випадків, щоб не було боротьби за доступ до одного з фізичних ресурсів з різних стадій конвеєра. Таким чином, наявність конвеєра зазвичай призводить до наявності, принаймні, трьох роздільних кешів: кеш інструкцій, кеш трансляцій TLB і кеш даних, кожен з яких спеціалізується на своєму завданні.
Конвеєрні процесори, що використовують роздільні кеші для даних і інструкцій (такі процесори зараз повсюдні), називаються процесорами з Гарвардською архітектурою. Спочатку даний термін застосовувався для комп'ютерів, у яких інструкції і дані розділені повністю і зберігаються в різних пристроях пам'яті. Однак таке повне розділення не виявилося популярним, і більшість сучасних комп'ютерів мають один пристрій основної пам'яті, тому можуть вважатися машинами з архітектурою фон Неймана.
Багаторівневі кеші
Однією з проблем є фундаментальна проблема балансу між затримками кешу і інтенсивністю влучень. Великі кеші мають більш високий відсоток влучень але, разом з тим, і велику затримку. Щоб послабити протиріччя між цими двома параметрами, більшість комп'ютерів використовує кілька рівнів кешу, коли після маленьких і швидких кешів знаходяться більш повільні великі кеші (зараз — сумарно до 3 рівнів в ієрархії кешу).
У поодиноких випадках реалізують 4 рівні кеш-пам'яті.
Багаторівневі кеші зазвичай працюють в послідовності від менших кешів до великих. Спочатку відбувається перевірка найменшого і заразом — найшвидшого кешу першого рівня (L1), у разі попадання процесор продовжує роботу на високій швидкості. Якщо менший кеш дав промах, перевіряється наступний, трохи більший і більш повільний кеш другого рівня (L2), і так далі, поки не буде запиту до основного ОЗП.
По мірі того, як різниця затримок між ОЗП і найшвидшим кешем збільшується, в деяких процесорах збільшують кількість рівнів кешу (у деяких — до 3х рівнів на кристалі). Наприклад, процесор Alpha 21164 в 1995 році мав накристальний кеш 3го рівня в 96 КБ; IBM POWER4 у 2001 році мав до чотирьох кешу L3 32 МБ на окремих кристалах, що використовуються спільно декількома ядрами; Itanium 2 у 2003 році мав 6 МБ кеш L3 на кристалі; Xeon MP під кодом «Tulsa» у 2006 році — 16 МБ кешу L3 на кристалі, спільний на 2 ядра; Phenom II в 2008 році — до 6 МБ універсального кешу L3;Intel Core i7 у 2008 році — 8 МБ накристалльного кешу L3, який є інклюзивним та поділяється між усіма ядрами. Користь від кешу L3 залежить від характеру звернень програми в пам'ять.
Нарешті, з іншого боку ієрархії пам'яті знаходиться регістровий файл самого мікропроцесора, який можна розглядати як невеликий і найшвидший кеш в системі зі спеціальними властивостями (наприклад, статичне планування компілятором при розподілі регістрів). Детальніше див. . Регістрові файли також можуть мати ієрархію: Cray-1 (у 1976 році) мав 8 адресних «A»-регістрів і 8 скалярних «S»-регістрів загального призначення. Також машина містила набір з 64 адресних «B» і 64 скалярних «T» регістрів, звернення до яких було довше, але все ж значно швидше основний ОЗП. Ці регістри були введені через відсутність в машині кешу даних (хоча кеш команд в машині був)
- Витребувані дані зчитуються з кешу першого (англ. L1) рівня.
- Витребувані дані зчитуються з кешу другого (англ. L2) рівня.
- У разі відсутності потрібних даних в кешах, проводиться читання з ОЗП.
Ексклюзивність (винятковість) і інклюзивність
Для багаторівневих кешів потрібно робити нові архітектурні рішення.
Наприклад, в деякому процесорі можуть вимагати, щоб всі дані, що зберігаються в кеші L1, зберігалися також і в кеш-пам'яті L2. Такі пари кешів називають строго інклюзівними (англ. inclusive). Інші процесори (наприклад, AMD Athlon) можуть не мати такого вимоги, тоді кеші називаються ексклюзивні (виняткові) — дані можуть бути або в L1 або L2 кеш, але ніколи не можуть бути одночасно в обох.
Досі іншим процесорам (таким, як Pentium II, Pentium III і Pentium 4) не потрібні, щоб дані в кеші першого рівня також розміщувалися в кеші другого рівня, тим не менш, вони продовжують робити. Немає ніякого універсального загальноприйнятого імені для цієї проміжної політики, хоча часто використовується термін головним чином інклюзівно (англ. mainly inclusive).
Перевага виняткових кешів в тому, що вони зберігають більше даних. Це перевага більше, коли винятковий кеш L1 порівнянний за розміром з кешем L2, і менше, якщо кеш L2 у багато разів більше, ніж кеш L1. Коли L1 пропускає і L2 отримує доступ у разі попадання, рядок кешу попадання в L2 обмінюється з рядком в L1.
Victim cache
Victim cache або Victim buffer (дослівно «Кеш жертв») — це невеликий спеціалізований кеш, зберігає ті кеш-лінії, які нещодавно були витіснені з основного кешу мікропроцесора при їх заміщення. Цей кеш розташовується між основним кешем і його англ. refill path. Зазвичай кеш жертв є повністю асоціативним і служить для зменшення кількості конфліктних промахів (conflict miss). Багато часто використовувані програми не вимагають повного асоціативного відображення для всіх спроб доступу до пам'яті. За статистикою лише невелика частка звернень до пам'яті вимагає високого ступеня асоціативності. Саме для таких звернень є кеш жертв, що надає високу асоціативність для таких рідкісних запитів. Був запропонований (DEC) в 1990. Розмір такого кешу може становити від 4 до 16 кеш-ліній.
Кеш трас
Одним з найбільш екстремальних випадків спеціалізації кешів можна вважати кеш трас (англ. trace cache), використовуваний в процесорах Intel Pentium 4. Кеш трас — це механізм для збільшення пропускної здатності завантаження інструкцій і для зменшення тепловиділення (у разі Pentium 4) за рахунок зберігання декодованих трас інструкцій. Таким чином цей кеш виключав роботу декодера при повторному виконанні коду, що нещодавно виконувався
Однією з ранніх публікацією про кеші трас була стаття колективу авторів (, і ), що вийшла в 1996 році під назвою «Trace Cache: a Low Latency Approach to High Bandwidth Instruction Fetching.» (Кеш трас: низколатентный підхід для забезпечення високої пропускної спроможності завантаження інструкцій).
Кеш трас зберігає декодовані інструкції або після їх декодування, або після закінчення їх виконання. Узагальнюючи, інструкції додаються в кеш трас в групах, що представляють собою або базові блоки, або динамічні траси. Динамічна траса (шлях виконання) складається тільки з інструкцій, результати яких були значимі (використовувалися згодом), і видаляє інструкції, які знаходяться в не які працюють гілках, крім того, динамічна траса може бути об'єднанням декількох базових блоків. Така особливість дозволяє пристрою підвантаження інструкцій у процесорі завантажувати відразу декілька базових блоків без необхідності піклуватися про наявність розгалужень у потоці виконання.
Лінії трас зберігаються в кеші трас за адресами, відповідним лічильника інструкцій першої машинної команди з траси, до яких доданий набір ознак передбачення розгалужень. Така адресація дозволяє зберігати різні траси виконання, що починаються з однієї адреси, але представляють різні ситуації по результату передбачення розгалужень. На стадії підвантаження інструкції (instruction fetch) конвеєра інструкцій для перевірки попадання в кеш трас використовується як поточний лічильник інструкцій (program counter), так і стан провісника розгалужень. Якщо попадання сталося, лінія траси безпосередньо подається на конвеєр без необхідності опитувати звичайний кеш (L2) або основне ОЗП. Кеш трас подає машинні команди на вхід конвеєра, поки не скінчиться лінія траси, або поки не станеться помилка передбачення в конвеєрі. У разі промаху кеш трас починає будувати таку лінію траси, завантажуючи машинний код з кешу або з пам'яті.
Схожі кеші трас використовувалися в Pentium 4 для зберігання декодованих мікрооперацій і мікрокоду, що реалізує складні x86-інструкції. См повний текст роботи в Citeseer.
Реалізації
Історія
У ранні роки мікропроцесорних технологій доступу в пам'ять був лише трохи повільніше доступу до процесорним регістрів. Але з 1980х розрив у продуктивності між процесорами і пам'яттю став наростати. Мікропроцесори удосконалювалися швидше, ніж пам'ять, особливо в плані частоти функціонування, таким чином, пам'ять ставала вузьким місцем при досягненні повної продуктивності від системи. Хоча було технічно можливим мати основну пам'ять настільки ж швидко, як і процесор, був обраний більш економічний шлях: використовувати надмірну кількість низькошвидкісний пам'яті, але ввести в систему невелику, але швидку кеш-пам'ять, для пом'якшення розриву в продуктивності. В результаті отримали на порядок великі обсяги пам'яті, приблизно за ту ж ціну і з невеликими втратами загальної продуктивності.
Читання даних з кешу для сучасних процесорів зазвичай займає більш одного такту. Час виконання програм є чутливим до затримок читання з кешу даних першого рівня. Багато зусиль розробників, а також потужності і площі кристала при створенні процесора відводиться для прискорення роботи кешів.
Найпростішим кешем є віртуально індексований кеш прямого відображення. Віртуальний адресу підраховується за допомогою суматора, відповідна частина адреси виділяється і використовується для індексування SRAM, який поверне завантажуються дані. Дані можуть бути вирівняні по байтовим кордонів байтовому сдвигателе і потім передані наступної операції. При такому читанні не потрібна якась перевірка тегів, фактично немає навіть необхідності зчитувати тег. На більш пізніх стадіях конвейєра, перед закінченням виконання інструкції читання потрібно читання тегу і його порівняння з віртуальним адресою, щоб упевнитися, що сталося попадання в кеш. Якщо ж був промах, потрібно читання з пам'яті або більш повільного кешу з подальшим оновленням розглянутого кешу і перезапуском конвеєра.
Асоціативний кеш більш складний, тому що певний варіант тегу потрібно вважати для визначення, яку частину кешу вибрати. Кеш N-way set-associative першого рівня зазвичай зчитує одночасно всі N можливих тегів і N даних паралельно, потім проводить порівняння тегів з адресою і вибір даних, асоційованих з збіглася тегом. Кеш 2-го рівня в цілях економії енерговиділення іноді виконують спочатку читання тегів, і тільки потім читання одного елемента даних SRAM-даних.
Діаграма справа повинна показати, як відбувається використання різних частин адреси. Біт 31 адреси є найбільш значущим бітом (старшим), біт 0 — найменш значущим бітом (молодшим). На діаграмі показані дві SRAM, індексація і мультиплексування для 4 КБ, 2-way set-associative, віртуально індексованого і віртуально тегированного кешу з 64байтними блоками, 32бітною шириною читання і 32битным віртуальним адресою.
Оскільки кеш має розмір 4 КБ і лінії розміром 64 байта, у ньому зберігається 64 лінії, і ми можемо вважати за два рази з тегу SRAM, який містить 32 стовпця, кожен з яких містить кілька 21-бітних тегів. Хоча може бути використана будь-яка функція віртуальної адресації бітів 31 6, щоб індексувати тег і дані SRAM, найпростіше скористатися молодшими розрядами. Так само, тому що обсяг кешу складає 4 кБ, кеш має чотирибайтний шлях для читання і читання проводиться за двома шляхами для кожного доступу, дані SRAM складають 512 рядів шириною 8 байтів.
Більш сучасний кеш, можливо, був би 16-кілобайтним, чотирьохшляховим, набір-асоціативним, віртуально індексовані, віртуально влучаємим і фізично відмічаємим (тегом), з 32-бітовими рядками, 32-бітної шириною шини читання і 36-бітним фізичним адресуванням. Рекурентне співвідношення шляху читання для такого кешу виглядає дуже схоже з розглянутими вище. Замість тегів читаються віртуальні потрапляння (англ. vhits), і знову проводиться відповідність підмножини віртуального адресою. Пізніше, в конвеєрі, віртуальна адреса переводиться у фізичну адресу TLB, і проводиться читання фізичного тегу (тільки одне, так як віртуальне потрапляння поставляє шлях для читання кешу). В кінці фізична адреса порівнюється з фізичним тегом, щоб визначити, чи відбулося попадання.
Деякі процесори SPARC мали прискорені на кілька затримок затвора (англ. gate delay) L1 кеш за рахунок використання SRAM-декодерів замість суматора віртуальних адрес. Детальніше див. [en]
В X86
Коли x86 мікропроцесори досягли частот у 20 і більше мегагерц (починаючи зIntel 80386), для збільшення продуктивності в них було додано невелику кількість швидкої кеш-пам'яті. Це було необхідно через те, що використовується як системна ОПЕРАТИВНОЇ пам'яті DRAM мала значні затримки (до 120 нс), і вимагала такти для оновлення. Кеш був побудований на базі дорожчий, але значно більш швидкої SRAM, яка в ті часи мала затримки близько 10 нс. Ранні кеші були зовнішніми по відношенню до процесора і часто розташовувалися на материнській платі як 8 або 9 мікросхем в корпусах DIP, розташовані в сокети для можливості збільшення або зменшення розміру кешу. Деякі версії процесора I386 підтримували від 16 до 64 КБ зовнішнього кешу.
З виходом процесора Intel 80486 8 КБ кешу було інтегровано безпосередньо на кристал мікропроцесора. Цей кеш був названий L1 (першого рівня, англ. level 1), щоб відрізняти його від більш повільного кешу на материнській платі, названого L2 (другого рівня, англ. level 2). Останні були значно більше, аж до 256 КБ.
В подальшому випадки відділення кешу проводилися, виходячи лише з міркувань маркетингової політики, наприклад, у мікропроцесорі Celeron, побудованому на ядрі Pentium II.
У мікропроцесорі Pentium використовується роздільний кеш команд і даних. Буфер трансляції адрес (TLB) перетворює адреса в ОЗП відповідний адресу в кеші. Кеш даних Pentium використовує метод зворотного запису (англ. write-back), який дозволяє модифікувати дані в кеші без додаткового звернення до оперативної пам'яті (дані записуються в ОЗП тільки при видаленні з кешу) і протокол MESI (Modified, Exclusive, Shared, Invalid), який забезпечує когерентність даних в кешах процесорів і в ОЗП при роботі в мультипроцесорної системи.
Кожен з окремих кешів, даних і команд мікропроцесора Pentium MMX має обсягом 16 кБ і містить два порти, по одному для кожного виконавчого конвеєра. Кеш даних має буфер трансляції адрес (TLB).
Наступний варіант реалізації кешів у x86 з'явився в Pentium Pro, в якому кеш другого рівня (об'єднаний для даних і команд, розміром 8 кБ) розміщений в одному корпусі з процесором і кешем першого рівня, розміром 8 кБ, роздільним для даних і команд, і підняв його частоту до частоти ядра. Пізніше кеш другого рівня став розміщуватися на тому ж кристалі, що і процесор. (TLB)англ. DIB), нова архітектура кеш-пам'яті, використовує різні шини для підключення процесорного ядра з основною оперативною пам'яттю. Кеш першого рівня двухпортовий, неблокуючий, підтримує одну операцію завантаження і одну операцію запису за такт. Працює на тактовій частоті процесора. За такт передається 64 біта.
У мікропроцесорі Pentium II кеш першого рівня збільшено — 16 кбайт для даних і 16 кбайт для команд. Для кешу другого рівня використовується BSRAM, розташована на одній з процесором платі у картриджі S. E. C. для установки в Slot 1.
З зростанням популярності багатоядерних процесорів на кристал стали додавати кеш третього рівня, названі L3. Цей рівень кешу може бути загальним для декількох ядер і реалізовувати ефективну взаємодію між ядрами. Його обсяг зазвичай більше сумарного обсягу кешу всіх підключених до нього ядер і може досягати 16 МБ.
Популярним кеш на материнській платі залишався до ери виходу Pentium MMX і вийшов з ужитку з введенням SDRAM і зростанням різниці між частотою шини процесора і частотою ядра процесора: кеш на материнській платі став лише трохи швидше основний ОЗП.
Приклад кешу (процесорне ядро К8)
Наведена схема кешів ядра мікропроцесорів AMD K8, на якій видно як спеціалізовані кеші, так і їх багаторівневість.
Ядро використовує чотири різних спеціалізованих кешу: кеш інструкцій, TLB інструкцій, TLB даних і кеш даних:
- Кеш інструкцій складається з 64-байтних блоків, які є копією основної пам'яті, і може завантажувати до 16 байтів за такт. Кожен байт у цьому кеші зберігається в 10 бітах, а не у 8, причому в додаткових бітах відзначені кордону інструкцій (т. о. кеш проводить часткове преддекодирование). Для перевірки цілісності даних використовується лише контроль парності, а не ECC, так як біт парності займає менше місця, а в разі збою пошкоджені дані можна оновити правильною версією з пам'яті.
- TLB інструкцій, що містять копії записів з таблиці сторінок. На кожен запит читання команд потрібно трансляція математичних адрес у фізичні. Записи про трансляції бувають 4 — і 8-байтними, і TLB розбитий на 2 частини, відповідно одна для 4 КБ відображень і інша для 2 і 4 МБ відображень (великі сторінки). Таке розбиття спрощує схеми повністю асоціативного пошуку в кожній з частин. ОС і додатки можуть використовувати відображення різного розміру для частин віртуального адресного простору.
- TLB даних є здвоєним, і обидва буфера містять однаковий набір записів. Їх здвоєння дозволяє виробляти кожен такт трансляцію для двох запитів до даних одночасно. Так само, як і TLB інструкцій, цей буфер розділений між записами двох видів.
- Кеш даних містить 64-байтні копії фрагментів пам'яті. Він розділений на 8 банків (банок), кожний з яких містить по 8 кілобайт даних. Кеш дозволяє проводити по два запити до 8-байтовим даними кожен такт, за умови, що запити будуть оброблені різними банками. Тегові структури в кеші продубльовані, так як кожен 64-байтний блок розподілений по всьому 8 банкам. Якщо відбувається 2 запиту в один такт, вони працюють з власною копією теговій інформації.
Також в цьому ядрі використовуються багаторівневі кеші: дворівневі TLB інструкцій і даних (на другому рівні зберігаються лише записи про 4-кб відображеня), і кеш другого рівня (L2), уніфікований для роботи як з кешами даних та інструкцій 1-го рівня, так і для різних TLB. Кеш L2 є ексклюзивним для даних L1 L1 і інструкцій, тобто кожен ваш 8-байтовий фрагмент може знаходитися або в L1 інструкцій, або в даних L1 або L2. Винятком можуть бути лише байти, складові запису PTE, які можуть перебувати одночасно в TLB і в кеші даних під час обробки віртуального відображення з боку ОС. В такому випадку ОС відповідає за своєчасний скидання TLB після оновлення записів трансляції.
У мікропроцесорі DEC Alpha 21164 (випущений в листопаді 1995 року з тактовою частотою 333 МГц) кеш першого рівня може підтримувати деяка кількість (до 21) необроблених промахів. Є шестиелементний файл адрес необроблених промахів (англ. miss address file, MAF), кожен елемент якого містить адресу та регістр для завантаження при промаху (якщо адреси промаху належать одним рядком кешу, то в MAF вони розглядаються як один елемент).
Крім роздільних кешу L1 зі наскрізним записом, на кристалі процесора розташовані частково-асоціативний кеш L2 зі зворотним записом і контролер кешу L3, який працює як у синхронному, так і в асинхронному режимі.
У випущеному в березні 1997 року DEC Alpha 21164PC зовнішній кеш другого рівня; обсяг кешу команд збільшено до 16 кБ.
У мікропроцесорі DEC Alpha 21264 немає кешу другого рівня (контролер якого, тим не менш, розміщується на кристалі), але кеш першого рівня збільшено до 128 кбайт (по 64 кбайт для кешу команд і кеш даних відповідно).
Розробка Hewlett-Packard для наукових та інженерних обчислень PA-8000 містить буфер переупорядковування адрес (англ. ARB), що відслідковує всі команди завантаження/збереження, який дозволяє скоротити затримку адресування зовнішньої кеш-пам'яті даних і команд, яка в даному процесорі може мати обсяг до 4 МБ. Тим не менш, навіть ефективне управління зовнішнім кешем за допомогою високошвидкісних ліній управління і предвибірки даних і команд з основної пам'яті в кеш не скомпенсировало невисоку швидкість і високу вартість.
Усунути вказані недоліки вдалося PA-8500, в якому за рахунок техпроцесу 0,25 мкм вдалося додати на кристал 512 кБ кешу інструкцій і 1 МБ кешу даних.
Побудований на гарвардській архітектурі PowerPC 620 містить два вбудованих кешу, ємністю 32 кБ кожний, які мають власні блоки управління пам'яттю (англ. MMU) і функціонують незалежно один від одного. Команди і адреси переходів зберігається в кеші BTAC (англ. Branch Target Adress Cache).
Шинний інтерфейс процесора включає повну реалізацію підтримки кешу другого рівня (обсягом до 128 МБ, працює на частоті процесора удвічі/вчетверо меншою), і для управління роботою зовнішнього кешу не вимагає додаткових тактів. Реалізована комбінація наскрізний і зворотного запису, а також підтримка протоколу MESI.
Своя специфіка у кешу L1, застосовуваного в RA-10000, — кожна команда в кеші забезпечена додатковим четырехбитным тегом, який використовується в подальшому декодуванні та класифікації команди.
Див. також
Посилання
- Memory part 2: CPU caches [ 27 Січня 2021 у Wayback Machine.] Стаття на lwn.net (автор Ulrich Drepper) з детальним описом кешів
- написаний на VHDL
Це незавершена стаття про апаратне забезпечення. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ye sirim perekladom z inshoyi movi Mozhlivo vona stvorena za dopomogoyu mashinnogo perekladu abo perekladachem yakij nedostatno volodiye oboma movami Bud laska dopomozhit polipshiti pereklad veresen 2015 Kesh procesora kesh yakij vikoristovuyetsya centralnim procesorom angl CPU dlya skorochennya serednogo chasu dostupu do pam yati komp yutera Kesh ce shvidsha i mensha za rozmirom pam yat yaka zberigaye kopiyi danih sho chasto vikoristovuyutsya z golovnoyi pam yati Koli procesoru potribno zvernutisya v pam yat dlya chitannya abo zapisu danih vin spochatku pereviryaye chi ye yihni kopiyi v keshi U razi uspihu perevirki procesor vikonuye operaciyu vikoristovuyuchi kesh sho pracyuye shvidshe nizh pri vikoristanni povilnishoyi osnovnoyi pam yati Detalnishe pro zatrimki pam yati div angl SDRAM latency SDRAM tCAS tRCD tRP tRAS Bilshist suchasnih mikroprocesoriv dlya nastilnih komp yuteriv i serveriv mayut shonajmenshe tri nezalezhnih keshi kesh instrukcij dlya priskorennya zavantazhennya mashinnogo kodu kesh danih dlya priskorennya chitannya i zapisu danih i bufer asociativnoyi translyaciyi TLB dlya priskorennya translyaciyi virtualnih logichnih adres u fizichni yak dlya instrukcij tak i dlya danih Kesh danih chasto realizuyetsya u viglyadi bagatorivnevogo keshu L1 L2 L3 Zbilshennya rozmiru kesh pam yati mozhe pozitivno vplivati na produktivnist majzhe vsih zastosunkiv hocha v deyakih vipadkah efekt neznachnij Robota kesh pam yati zazvichaj prozora dlya programista prote dlya yiyi efektivnogo vikoristannya u deyakih vipadkah zastosovuyutsya specialni algoritmichni prijomi yaki zminyuyut poryadok obhodu danih v OZP abo pidvishuyut yih lokalnist napriklad pri blochnomu mnozhenni matric Princip robotiDiagrama keshiv CPU Danij rozdil opisuye tipovij kesh danih i deyaki vidi keshu instrukcij TLB mozhe buti vlashtovanij skladnishe a kesh instrukcij prostishe Na diagrami pravoruch zobrazheni osnovna i kesh pam yat Kozhen ryadok grupa komirok pam yati sho mistit dani organizovani vkesh liniyi Rozmir kozhnoyi kesh liniyi mozhe rozriznyatisya u riznih procesorah ale dlya bilshosti x86 procesoriv vin stanovit 64 bajta Rozmir kesh liniyi zazvichaj bilshe rozmiru danih do yakogo ye mozhlivim dostup z odniyeyi mashinnoyi komandi tipovi rozmiri vid 1 do 16 bajt Kozhna grupa danih v pam yati rozmirom u 1 kesh liniyu maye poryadkovij nomer Dlya osnovnoyi pam yati cej nomer ye adresoyu pam yati z vidkinutimi molodshimi bitami U keshi kozhnoyi kesh liniyi dodatkovo stavitsya u vidpovidnist teg yakij ye adresoyu produblovanih v cij kesh liniyi danih v osnovnij pam yati Pri zvertanni procesora v pam yat spochatku provoditsya perevirka chi zberigaye kesh zapituvani z pam yati dani Dlya cogo provoditsya porivnyannya adresi zapitu z znachennyami vsih tegiv keshu v yakih ci dani mozhut zberigatisya Vipadok zbigu z tegom yakoyi nebud kesh liniyi nazivayetsya popadannyam v kesh angl cache hit zvorotnij vipadok nazivayetsya kesh promahom angl cache miss Popadannya v kesh dozvolyaye procesoru negajno provesti chitannya abo zapis danih u kesh liniyi z zbiglasya tegom Vidnoshennya kilkosti popadan v kesh do zagalnoyi kilkosti zapitiv do pam yati nazivayut rejtingom vluchen angl hit rate vono ye miroyu efektivnosti keshu dlya obranogo algoritmu abo programi U razi promahu v keshi vidilyayetsya novij zapis u teg yakogo zapisuyetsya adresa potochnogo zapitu a v samu kesh liniyu dani z pam yati pislya yih prochitannya abo dani dlya zapisu v pam yat Promahi z chitannya zatrimuyut vikonannya oskilki voni vimagayut zapitu danih v bilsh povilnoyi osnovnoyi pam yati Promahi po zapisu mozhut ne davati zatrimku oskilki potribni dani mozhut buti zberezheni v keshi a zapis yih v osnovnu pam yat mozhna zrobiti u fonovomu rezhimi Robota keshu instrukcij bagato v chomu shozha na vishenavedenij algoritm roboti keshu danih ale dlya instrukcij vikonuyutsya tilki zapiti na chitannya Kesh instrukcij i danih mozhut buti rozdileni dlya zbilshennya produktivnosti princip vikoristovuvanij v Garvardskij arhitekturi abo ob yednani dlya sproshennya aparatnoyi realizaciyi Dlya dodavannya danih v kesh pislya kesh promahu mozhe znadobitisya vitisnennya angl evict ranishe zapisanih danih Dlya viboru zamishayuchogo ryadka keshu vikoristovuyetsya evristika zvana politika zamishennya angl replacement policy Osnovnoyu problemoyu algoritmu ye peredbachennya yakij ryadok najimovirnishe ne bude potribno dlya podalshih operacij Yakisni peredbachennya skladni i aparatni keshi vikoristovuyut prosti pravila taki yak LRU Vidmitka deyakih oblastej pam yati yak nekeshovanih angl non cacheable pokrashuye produktivnist za rahunok zaboroni keshuvannya ridko vikoristovuvanih danih Promahi dlya takoyi pam yati ne stvoryuyut kopiyu danih v keshi Pri zapisu danih u kesh povinen isnuvati pevnij moment chasu koli voni budut zapisani v osnovnu pam yat Ce chas kontrolyuyetsya politikoyu zapisu angl write policy Dlya keshu zi naskriznim zapisom angl write through bud yakij zapis u kesh privodit do negajnogo zapisu v pam yat Inshij tip keshiv zvorotna zapis angl write back inodi takozh zvanij copy back vidkladaye zapis na bilsh piznij chas U takih keshah vidstezhuyetsya stan kesh linijok she ne skinutih v pam yat vidmitka bitom brudnij angl dirty Zapis v pam yat provoditsya pri vitisnenni podibnogo ryadka keshu Takim chinom promah v keshi sho vikoristovuye politiku zvorotnogo zapisu mozhe vimagati dvoh operacij dostupu v pam yat odin dlya skidannya stanu starogo ryadka i inshij dlya chitannya novih danih Isnuyut takozh zmishani politiki Kesh mozhe buti iz naskriznim zapisom angl write through ale dlya zmenshennya kilkosti tranzakcij na shini zapisi mozhut timchasovo mistitisya v chergu i ob yednuvatisya odin z odnim Dani v osnovnij pam yati mozhut zminyuvatisya ne tilki procesor ale i periferiyeyu sho vikoristovuye pryamij dostup do pam yati abo inshimi procesorami bagatoprocesorni sistemi Zmina danih prizvodit do zastarivannya yih kopiyi v keshi stan stale V inshoyi realizaciyi koli odin procesor zminyuye dani v keshi kopiyi cih danih v keshah inshih procesoriv budut pomicheni yak stale Dlya pidtrimki vmistu dekilkoh keshiv v aktualnomu stani vikoristovuyetsya specialnij protokol kesh kogerentnosti Struktura zapisu v keshi Tipova struktura zapisu v keshi Blok danih teg bit aktualnosti Blok danih kesh liniya mistit bezposerednyu kopiyu danih z osnovnoyi pam yati Bit aktualnosti oznachaye sho danij zapis mistit aktualnu najsvizhishu kopiyu Struktura adresi teg indeks zmishennya Adresa pam yati sho rozdilyayetsya vid starshih bit do molodshih na Teg indeks i zmishennya Dovzhina polya indeksu dorivnyuye log 2 c a c h e r o w s displaystyle lceil log 2 cache rows rceil bit i vidpovidaye ryadu ryadku keshu vikoristovuvanoyi dlya zapisu Dovzhina zsuvu dorivnyuye log 2 d a t a b l o c k s displaystyle lceil log 2 data blocks rceil Asociativnist Grafik effektivnosti kesha kolichestvo promahov po osi ordinat v zavisimosti ot stepeni associativnosti i kolichestva kanalov Po osi absciss razmer kesha Asociativnist ye kompromisom Perevirka bilshogo chisla zapisiv vimagaye bilshe energiyi ploshi chipu i potencijno chasu Yaksho b isnuvalo 10 misc yaki algoritm vitisnennya mig bi vidobraziti misce v pam yati todi perevirka nayavnosti cogo miscya v keshi zazhadala b pereglyanuti 10 zapisiv v keshi Z inshogo boku keshi z visokoyu asociativnistyu piddayutsya menshomu kilkosti promahiv div nizhche konfliktuyuchi promahi i procesor vitrachaye menshe chasu na chitannya z povilnoyi osnovnoyi pam yati Isnuye empirichne sposterezhennya sho podvoyennya asociativnosti vid pryamogo vidobrazhennya do 2 kanalnoyi abo vid 2 do 4 kanalnoyi maye priblizno takij zhe vpliv na intensivnist vluchen hit rate sho i podvoyennya rozmiru keshu Zbilshennya asociativnosti ponad 4 kanaliv prinosit menshij efekt dlya zmenshennya kilkosti promahiv miss rate i zazvichaj viroblyayetsya z inshih prichin napriklad cherez peretin virtualnih adres V poryadku pogirshennya zbilshennya trivalosti perevirki na potraplyannya ta polipshennya zmenshennya kilkosti promahiv kesh pryamogo vidobrazhennya angl direct mapped cache najkrashij chas popadannya i vidpovidno najkrashij variant dlya velikih keshiv 2 kanalnij mnozhinno asociativnij kesh angl 2 way set associative cache 2 kanalnij skewed asociativnij kesh angl the best for tradeoff caches whose sizes are in the range 4K 8K bytes Andre Seznec 4 kanalnij mnozhinno asociativnij kesh angl 4 way set associative cache povnistyu asociativnij kesh angl fully associative cache najkrashij najnizhchij vidsotok promahiv miss rate i najkrashij variant pri nadzvichajno visokih vitratah pri promahu miss penalty Kesh pryamogo vidobrazhennya n kanalnij mnozhinno asociativnij kesh Povnistyu asociativnij kesh Psevdo associativnij kesh Vidi promahiv Promah z chitannya z keshu instrukcij Zazvichaj daye duzhe veliku zatrimku oskilki procesor ne mozhe prodovzhuvati vikonannya programi prinajmni vikonannya potochnogo potoku i zmushenij prostoyuvati v ochikuvanni zavantazhennya instrukciyi z pam yati Promah z chitannya z keshu danih Zazvichaj daye menshu zatrimku oskilki instrukciyi yaki ne zalezhat vid zapitanih danih mozhut prodovzhuvati vikonuvatisya poki zapit obroblyayetsya v osnovnij pam yati Pislya otrimannya danih z pam yati mozhna prodovzhuvati vikonannya zalezhnih instrukcij Kategoriyi promahiv Three Cs Compulsory misses promahi viklikani pershoyu zgadkoyu potribnoyi adresi Rozmiri keshiv i yih asociativnist ne vplivayut na kilkist danih promahiv Poperednya vibirka prefetching yak programnu tak i aparatnu mozhe dopomogti tak samo yak i zbilshennya rozmiru kesh liniyi yak vidu aparatnogo viboru Taki promahi inodi nazivayut holodnimi Capacity misses promahi viklikani viklyuchno kincevim rozmirom keshu sho vidbuvayutsya nezalezhno vid stupenya asociativnosti abo rozmiru kesh liniyi Grafik takih promahiv shodo rozmiru keshu mozhe dati deyaku miru timchasovoyi lokalnosti temporal locality deyakogo naboru zapitiv v pam yat Varto zauvazhiti sho ne isnuye ponyattya povnogo keshu porozhnogo keshu abo majzhe povnogo keshu tak yak keshi procesora majzhe ves chas mayut kesh liniyi v zajnyatomu stani i otzhe praktichno kozhen zaklad novoyi liniyi zazhadaye gasinnya vzhe zajnyata Conflict misses promahi viklikani konfliktom Yih mozhna uniknuti yaksho b kesh ne vitisniv zapis ranishe Mozhna dodatkovo rozdiliti na promahi viklikani vidobrazhennyam konkretnim znachennyam asociativnosti i promahi zamishennya yaki viklikani konkretnim algoritmom viboru zapisiv dlya zamishennya Translyaciya adres Bilsha chastina procesoriv zagalnogo priznachennya realizuye yakijs variant virtualnoyi pam yati Korotko kazhuchi kozhna programa sho vikonuyetsya na mashini bachit vlasnij sproshenij adresnij prostir sho mistit kod i dani tilki ciyeyi programi Bud yaka programa vikoristovuye svij virtualnij adresnij prostir nezalezhno vid jogo misceznahodzhennya u fizichnij pam yati Nayavnist virtualnoyi pam yati vimagaye vid procesora provedennya translyaciyi virtualnih matematichnih adres vikoristovuvanih programoyu u fizichni adresi vidpovidni realnomu roztashuvannyu v OZP Chastina procesora providna ce peretvorennya nazivayetsya pristrij upravlinnya pam yattyu MMU Dlya priskorennya translyacij v MMU dodanij kesh neshodavno vikoristanih vidobrazhen vidpovidnostej virtualnih i fizichnih adres zvanij Translation Lookaside Buffer TLB Dlya podalshogo opisu vazhlivi tri osoblivosti procesu translyaciyi adres Zatrimka Fizichnij adresu bude otrimano vid MMU tilki cherez deyakij chas azh do dekilkoh taktiv pislya podachi na vhid MMU virtualnogo adresi z generatora adres Efekt nakladennya Kilka virtualnih adres yaki mozhut vidpovidati odnomu fizichnomu U bilshosti procesoriv garantuyetsya sho vsi zapisi po fizichnij adresoyu budut zdijsneni v poryadku zadanomu programoyu Dlya vikonannya ciyeyi vlastivosti potribna perevirka sho tilki odin ekzemplyar kopiyi danih z fizichnoyi adresi znahoditsya v danij moment v keshi Odinicya vidobrazhennya Virtualne adresnij prostir rozbito na storinki bloki pam yati fiksovanogo rozmiru sho pochinayutsya z adresi kratnih yih rozmirom Napriklad 4 GB adresnogo prostoru mozhna rozdiliti na 1048576 storinki po 4 KB dlya kozhnoyi z yakih mozhlivo nezalezhne vidpovidnist fizichnim storinkam U suchasnih procesorah chasto pidtrimuyetsya vikoristannya odnochasno dekilkoh rozmiriv storinki napriklad 4 KB i 2 MB dlya x86 64 a v deyakih suchasnih AMD procesorah she i 1 GB Vazhlivo takozh zauvazhiti sho pershi sistemi virtualnoyi pam yati buli duzhe povilnimi tomu sho voni vimagali perevirki tablici storinok zberigayetsya v osnovnij PAM YaTI pered bud yakim programnim zvernennyam v pam yat Bez vikoristannya keshuvannya dlya vidobrazhen taki sistemi zmenshuyut shvidkist roboti z pam yattyu priblizno v 2 razi Tomu vikoristannya TLB duzhe vazhlivo i inodi jogo dodavannya v procesori pereduvalo poyavi zvichajnih keshu danih ta instrukcij Po vidnoshennyu do virtualnoyi adresaciyi keshi danih ta instrukcij mozhut buti podileni na 4 tipi Adresi v keshah vikoristovuyutsya dlya dvoh riznih cilej indeksuvannya i tegiv Physically indexed physically tagged PIPT fizichno indeksovani i fizichno tegiruemye Taki keshi prosti i unikayut problem z nakladennyam aliasing ale voni povilni tak yak pered zvernennyam v kesh potriben zapit fizichnoyi adresi v TLB Cej zapit mozhe viklikati promah v TLB i dodatkove zvernennya v osnovnu pam yat pered tim yak nayavnist danih bude perevireno v keshi Virtually indexed virtually tagged VIVT virtualno indeksovani i virtualno tegiruemye I dlya tegiv i dlya indeksu vikoristovuyetsya virtualnij adresu Zavdyaki comu perevirki nayavnosti danih v keshi vidbuvayutsya shvidshe ne vimagayuchi zvernennya do MMU Odnak vinikaye problema nakladannya koli kilka virtualnih adres vidpovidayut odnomu j tomu zh fizichnomu U comu vipadku dani budut zakeshovani dvichi sho silno uskladnyuye pidtrimku kogerentnosti Inshoyu problemoyu ye omonimi situaciyi koli odin i toj zhe virtualnij adresu napriklad u riznih procesah vidobrazhayetsya rizni fizichni adresi Staye nemozhlivim rozrizniti taki vidobrazhennya viklyuchno po virtualnomu indeksu Mozhlivi rishennya skidannya keshu pri peremikanni mizh zavdannyami context switch vimoga neperesecheniya adresnih prostoriv procesiv teguvannya virtualnih adres identifikatorom adresnogo prostoru address space ID ASID abo vikoristannya fizichnih tegiv Takozh vinikaye problema pri zmini vidobrazhennya virtualnih adres u fizichni sho vimagaye skidannya kesh linij dlya yakih zminilosya vidobrazhennya Virtually indexed physically tagged VIPT virtualno indeksovani i fizichno tegiruemye Dlya indeksu vikoristovuyetsya virtualnij adresa a dlya tegu fizichnij Perevagoyu nad pershim tipom ye mensha zatrimka oskilki mozhna shukati kesh liniyu odnochasno z translyaciyeyu adres v TLB odnak porivnyannya tegu zatrimuyetsya do oderzhannya fizichnoyi adresi Perevagoyu nad drugim tipom ye viyavlennya omonimiv homonyms tak yak teg mistit fizichna adresa Dlya danogo tipu potribno bilshe bit dlya tegu oskilki indeksni biti vikoristovuyut inshij tip adresaciyi Physically indexed virtually tagged fizichno indeksovani i virtualno tegovani keshi vvazhayutsya nepotribnimi i marginalnimi i predstavlyayut viklyuchno akademichnij interes Shvidkist cih dij zatrimka zavantazhennya z pam yati kritichno vazhliva dlya produktivnosti procesoriv i tomu bilshist suchasnih L1 keshiv ye virtualno indeksovanimi sho yak minimum dozvolyaye bloku MMU robiti zapit v TLB odnochasno z zapitom danih yih kesh pam yati Virtualne teguvannya i mehanizm vhints Ale virtualna indeksaciya ne ye najkrashim viborom dlya inshih rivniv keshu Vartist viyavlennya peretinu virtualnih adres aliasing zrostaye iz zbilshennyam rozmiru keshu i v rezultati bilshist realizacij L2 i bilsh dalekih vid procesora rivniv keshu vikoristovuyut indeksuvannya za fizichnimi adresami Dosit trivalij chas keshi vikoristovuvali dlya tegiv yak fizichni tak i virtualni adresi hocha virtualne teguvannya v danij chas zustrichayetsya duzhe ridko Yaksho TLB zapit zakinchuyetsya ranishe zapitu v kesh pam yat fizichnij adresu bude dostupnij dlya porivnyannya z tegom do momentu koli ce bude neobhidno i otzhe virtualne teguvannya ne potribno Veliki keshi chastishe teguyutsya fizichnimi adresami i lishe neveliki shvidkodiyuchi keshi vikoristovuyut dlya tegiv virtualni adresi U suchasnih procesorah zagalnogo priznachennya virtualne teguvannya zamineno na mehanizm vhints opisanij dali Iyerarhiya keshiv v suchasnih mikroprocesorah Bilshist suchasnih procesoriv mistyat u sobi kilka vzayemodiyuchih keshiv Specializovani keshi Superskalyarni procesori zdijsnyuyut dostup do pam yati z dekilkoh etapiv konveyera chitannya instrukcij instruction fetch translyaciya virtualnih adres u fizichni chitannya danih data fetch Ochevidnim rishennyam ye vikoristannya riznih fizichnih keshiv dlya kozhnogo z cih vipadkiv shob ne bulo borotbi za dostup do odnogo z fizichnih resursiv z riznih stadij konveyera Takim chinom nayavnist konveyera zazvichaj prizvodit do nayavnosti prinajmni troh rozdilnih keshiv kesh instrukcij kesh translyacij TLB i kesh danih kozhen z yakih specializuyetsya na svoyemu zavdanni Konveyerni procesori sho vikoristovuyut rozdilni keshi dlya danih i instrukcij taki procesori zaraz povsyudni nazivayutsya procesorami z Garvardskoyu arhitekturoyu Spochatku danij termin zastosovuvavsya dlya komp yuteriv u yakih instrukciyi i dani rozdileni povnistyu i zberigayutsya v riznih pristroyah pam yati Odnak take povne rozdilennya ne viyavilosya populyarnim i bilshist suchasnih komp yuteriv mayut odin pristrij osnovnoyi pam yati tomu mozhut vvazhatisya mashinami z arhitekturoyu fon Nejmana Bagatorivnevi keshi Odniyeyu z problem ye fundamentalna problema balansu mizh zatrimkami keshu i intensivnistyu vluchen Veliki keshi mayut bilsh visokij vidsotok vluchen ale razom z tim i veliku zatrimku Shob poslabiti protirichchya mizh cimi dvoma parametrami bilshist komp yuteriv vikoristovuye kilka rivniv keshu koli pislya malenkih i shvidkih keshiv znahodyatsya bilsh povilni veliki keshi zaraz sumarno do 3 rivniv v iyerarhiyi keshu U poodinokih vipadkah realizuyut 4 rivni kesh pam yati Bagatorivnevi keshi zazvichaj pracyuyut v poslidovnosti vid menshih keshiv do velikih Spochatku vidbuvayetsya perevirka najmenshogo i zarazom najshvidshogo keshu pershogo rivnya L1 u razi popadannya procesor prodovzhuye robotu na visokij shvidkosti Yaksho menshij kesh dav promah pereviryayetsya nastupnij trohi bilshij i bilsh povilnij kesh drugogo rivnya L2 i tak dali poki ne bude zapitu do osnovnogo OZP Po miri togo yak riznicya zatrimok mizh OZP i najshvidshim keshem zbilshuyetsya v deyakih procesorah zbilshuyut kilkist rivniv keshu u deyakih do 3h rivniv na kristali Napriklad procesor Alpha 21164 v 1995 roci mav nakristalnij kesh 3go rivnya v 96 KB IBM POWER4 u 2001 roci mav do chotiroh keshu L3 32 MB na okremih kristalah sho vikoristovuyutsya spilno dekilkoma yadrami Itanium 2 u 2003 roci mav 6 MB kesh L3 na kristali Xeon MP pid kodom Tulsa u 2006 roci 16 MB keshu L3 na kristali spilnij na 2 yadra Phenom II v 2008 roci do 6 MB universalnogo keshu L3 Intel Core i7 u 2008 roci 8 MB nakristallnogo keshu L3 yakij ye inklyuzivnim ta podilyayetsya mizh usima yadrami Korist vid keshu L3 zalezhit vid harakteru zvernen programi v pam yat Nareshti z inshogo boku iyerarhiyi pam yati znahoditsya registrovij fajl samogo mikroprocesora yakij mozhna rozglyadati yak nevelikij i najshvidshij kesh v sistemi zi specialnimi vlastivostyami napriklad statichne planuvannya kompilyatorom pri rozpodili registriv Detalnishe div Registrovi fajli takozh mozhut mati iyerarhiyu Cray 1 u 1976 roci mav 8 adresnih A registriv i 8 skalyarnih S registriv zagalnogo priznachennya Takozh mashina mistila nabir z 64 adresnih B i 64 skalyarnih T registriv zvernennya do yakih bulo dovshe ale vse zh znachno shvidshe osnovnij OZP Ci registri buli vvedeni cherez vidsutnist v mashini keshu danih hocha kesh komand v mashini buv Vitrebuvani dani zchituyutsya z keshu pershogo angl L1 rivnya Vitrebuvani dani zchituyutsya z keshu drugogo angl L2 rivnya U razi vidsutnosti potribnih danih v keshah provoditsya chitannya z OZP Eksklyuzivnist vinyatkovist i inklyuzivnist Dlya bagatorivnevih keshiv potribno robiti novi arhitekturni rishennya Napriklad v deyakomu procesori mozhut vimagati shob vsi dani sho zberigayutsya v keshi L1 zberigalisya takozh i v kesh pam yati L2 Taki pari keshiv nazivayut strogo inklyuzivnimi angl inclusive Inshi procesori napriklad AMD Athlon mozhut ne mati takogo vimogi todi keshi nazivayutsya eksklyuzivni vinyatkovi dani mozhut buti abo v L1 abo L2 kesh ale nikoli ne mozhut buti odnochasno v oboh Dosi inshim procesoram takim yak Pentium II Pentium III i Pentium 4 ne potribni shob dani v keshi pershogo rivnya takozh rozmishuvalisya v keshi drugogo rivnya tim ne mensh voni prodovzhuyut robiti Nemaye niyakogo universalnogo zagalnoprijnyatogo imeni dlya ciyeyi promizhnoyi politiki hocha chasto vikoristovuyetsya termin golovnim chinom inklyuzivno angl mainly inclusive Perevaga vinyatkovih keshiv v tomu sho voni zberigayut bilshe danih Ce perevaga bilshe koli vinyatkovij kesh L1 porivnyannij za rozmirom z keshem L2 i menshe yaksho kesh L2 u bagato raziv bilshe nizh kesh L1 Koli L1 propuskaye i L2 otrimuye dostup u razi popadannya ryadok keshu popadannya v L2 obminyuyetsya z ryadkom v L1 Victim cache Victim cache abo Victim buffer doslivno Kesh zhertv ce nevelikij specializovanij kesh zberigaye ti kesh liniyi yaki neshodavno buli vitisneni z osnovnogo keshu mikroprocesora pri yih zamishennya Cej kesh roztashovuyetsya mizh osnovnim keshem i jogo angl refill path Zazvichaj kesh zhertv ye povnistyu asociativnim i sluzhit dlya zmenshennya kilkosti konfliktnih promahiv conflict miss Bagato chasto vikoristovuvani programi ne vimagayut povnogo asociativnogo vidobrazhennya dlya vsih sprob dostupu do pam yati Za statistikoyu lishe nevelika chastka zvernen do pam yati vimagaye visokogo stupenya asociativnosti Same dlya takih zvernen ye kesh zhertv sho nadaye visoku asociativnist dlya takih ridkisnih zapitiv Buv zaproponovanij DEC v 1990 Rozmir takogo keshu mozhe stanoviti vid 4 do 16 kesh linij Kesh tras Odnim z najbilsh ekstremalnih vipadkiv specializaciyi keshiv mozhna vvazhati kesh tras angl trace cache vikoristovuvanij v procesorah Intel Pentium 4 Kesh tras ce mehanizm dlya zbilshennya propusknoyi zdatnosti zavantazhennya instrukcij i dlya zmenshennya teplovidilennya u razi Pentium 4 za rahunok zberigannya dekodovanih tras instrukcij Takim chinom cej kesh viklyuchav robotu dekodera pri povtornomu vikonanni kodu sho neshodavno vikonuvavsya Odniyeyu z rannih publikaciyeyu pro keshi tras bula stattya kolektivu avtoriv i sho vijshla v 1996 roci pid nazvoyu Trace Cache a Low Latency Approach to High Bandwidth Instruction Fetching Kesh tras nizkolatentnyj pidhid dlya zabezpechennya visokoyi propusknoyi spromozhnosti zavantazhennya instrukcij Kesh tras zberigaye dekodovani instrukciyi abo pislya yih dekoduvannya abo pislya zakinchennya yih vikonannya Uzagalnyuyuchi instrukciyi dodayutsya v kesh tras v grupah sho predstavlyayut soboyu abo bazovi bloki abo dinamichni trasi Dinamichna trasa shlyah vikonannya skladayetsya tilki z instrukcij rezultati yakih buli znachimi vikoristovuvalisya zgodom i vidalyaye instrukciyi yaki znahodyatsya v ne yaki pracyuyut gilkah krim togo dinamichna trasa mozhe buti ob yednannyam dekilkoh bazovih blokiv Taka osoblivist dozvolyaye pristroyu pidvantazhennya instrukcij u procesori zavantazhuvati vidrazu dekilka bazovih blokiv bez neobhidnosti pikluvatisya pro nayavnist rozgaluzhen u potoci vikonannya Liniyi tras zberigayutsya v keshi tras za adresami vidpovidnim lichilnika instrukcij pershoyi mashinnoyi komandi z trasi do yakih dodanij nabir oznak peredbachennya rozgaluzhen Taka adresaciya dozvolyaye zberigati rizni trasi vikonannya sho pochinayutsya z odniyeyi adresi ale predstavlyayut rizni situaciyi po rezultatu peredbachennya rozgaluzhen Na stadiyi pidvantazhennya instrukciyi instruction fetch konveyera instrukcij dlya perevirki popadannya v kesh tras vikoristovuyetsya yak potochnij lichilnik instrukcij program counter tak i stan provisnika rozgaluzhen Yaksho popadannya stalosya liniya trasi bezposeredno podayetsya na konveyer bez neobhidnosti opituvati zvichajnij kesh L2 abo osnovne OZP Kesh tras podaye mashinni komandi na vhid konveyera poki ne skinchitsya liniya trasi abo poki ne stanetsya pomilka peredbachennya v konveyeri U razi promahu kesh tras pochinaye buduvati taku liniyu trasi zavantazhuyuchi mashinnij kod z keshu abo z pam yati Shozhi keshi tras vikoristovuvalisya v Pentium 4 dlya zberigannya dekodovanih mikrooperacij i mikrokodu sho realizuye skladni x86 instrukciyi Sm povnij tekst roboti v Citeseer RealizaciyiIstoriya U ranni roki mikroprocesornih tehnologij dostupu v pam yat buv lishe trohi povilnishe dostupu do procesornim registriv Ale z 1980h rozriv u produktivnosti mizh procesorami i pam yattyu stav narostati Mikroprocesori udoskonalyuvalisya shvidshe nizh pam yat osoblivo v plani chastoti funkcionuvannya takim chinom pam yat stavala vuzkim miscem pri dosyagnenni povnoyi produktivnosti vid sistemi Hocha bulo tehnichno mozhlivim mati osnovnu pam yat nastilki zh shvidko yak i procesor buv obranij bilsh ekonomichnij shlyah vikoristovuvati nadmirnu kilkist nizkoshvidkisnij pam yati ale vvesti v sistemu neveliku ale shvidku kesh pam yat dlya pom yakshennya rozrivu v produktivnosti V rezultati otrimali na poryadok veliki obsyagi pam yati priblizno za tu zh cinu i z nevelikimi vtratami zagalnoyi produktivnosti Chitannya danih z keshu dlya suchasnih procesoriv zazvichaj zajmaye bilsh odnogo taktu Chas vikonannya program ye chutlivim do zatrimok chitannya z keshu danih pershogo rivnya Bagato zusil rozrobnikiv a takozh potuzhnosti i ploshi kristala pri stvorenni procesora vidvoditsya dlya priskorennya roboti keshiv Najprostishim keshem ye virtualno indeksovanij kesh pryamogo vidobrazhennya Virtualnij adresu pidrahovuyetsya za dopomogoyu sumatora vidpovidna chastina adresi vidilyayetsya i vikoristovuyetsya dlya indeksuvannya SRAM yakij poverne zavantazhuyutsya dani Dani mozhut buti virivnyani po bajtovim kordoniv bajtovomu sdvigatele i potim peredani nastupnoyi operaciyi Pri takomu chitanni ne potribna yakas perevirka tegiv faktichno nemaye navit neobhidnosti zchituvati teg Na bilsh piznih stadiyah konvejyera pered zakinchennyam vikonannya instrukciyi chitannya potribno chitannya tegu i jogo porivnyannya z virtualnim adresoyu shob upevnitisya sho stalosya popadannya v kesh Yaksho zh buv promah potribno chitannya z pam yati abo bilsh povilnogo keshu z podalshim onovlennyam rozglyanutogo keshu i perezapuskom konveyera Asociativnij kesh bilsh skladnij tomu sho pevnij variant tegu potribno vvazhati dlya viznachennya yaku chastinu keshu vibrati Kesh N way set associative pershogo rivnya zazvichaj zchituye odnochasno vsi N mozhlivih tegiv i N danih paralelno potim provodit porivnyannya tegiv z adresoyu i vibir danih asocijovanih z zbiglasya tegom Kesh 2 go rivnya v cilyah ekonomiyi energovidilennya inodi vikonuyut spochatku chitannya tegiv i tilki potim chitannya odnogo elementa danih SRAM danih Shlyah chitannya dlya 2 way associative cache Diagrama sprava povinna pokazati yak vidbuvayetsya vikoristannya riznih chastin adresi Bit 31 adresi ye najbilsh znachushim bitom starshim bit 0 najmensh znachushim bitom molodshim Na diagrami pokazani dvi SRAM indeksaciya i multipleksuvannya dlya 4 KB 2 way set associative virtualno indeksovanogo i virtualno tegirovannogo keshu z 64bajtnimi blokami 32bitnoyu shirinoyu chitannya i 32bitnym virtualnim adresoyu Oskilki kesh maye rozmir 4 KB i liniyi rozmirom 64 bajta u nomu zberigayetsya 64 liniyi i mi mozhemo vvazhati za dva razi z tegu SRAM yakij mistit 32 stovpcya kozhen z yakih mistit kilka 21 bitnih tegiv Hocha mozhe buti vikoristana bud yaka funkciya virtualnoyi adresaciyi bitiv 31 6 shob indeksuvati teg i dani SRAM najprostishe skoristatisya molodshimi rozryadami Tak samo tomu sho obsyag keshu skladaye 4 kB kesh maye chotiribajtnij shlyah dlya chitannya i chitannya provoditsya za dvoma shlyahami dlya kozhnogo dostupu dani SRAM skladayut 512 ryadiv shirinoyu 8 bajtiv Bilsh suchasnij kesh mozhlivo buv bi 16 kilobajtnim chotirohshlyahovim nabir asociativnim virtualno indeksovani virtualno vluchayemim i fizichno vidmichayemim tegom z 32 bitovimi ryadkami 32 bitnoyi shirinoyu shini chitannya i 36 bitnim fizichnim adresuvannyam Rekurentne spivvidnoshennya shlyahu chitannya dlya takogo keshu viglyadaye duzhe shozhe z rozglyanutimi vishe Zamist tegiv chitayutsya virtualni potraplyannya angl vhits i znovu provoditsya vidpovidnist pidmnozhini virtualnogo adresoyu Piznishe v konveyeri virtualna adresa perevoditsya u fizichnu adresu TLB i provoditsya chitannya fizichnogo tegu tilki odne tak yak virtualne potraplyannya postavlyaye shlyah dlya chitannya keshu V kinci fizichna adresa porivnyuyetsya z fizichnim tegom shob viznachiti chi vidbulosya popadannya Deyaki procesori SPARC mali priskoreni na kilka zatrimok zatvora angl gate delay L1 kesh za rahunok vikoristannya SRAM dekoderiv zamist sumatora virtualnih adres Detalnishe div en V X86 Chotiri mikroshemi kesh drugogo rivnya na materinskij plati dlya procesoriv simejstva i486 Roztashovuyutsya v bukvalnomu sensi mizh CP i OZP Koli x86 mikroprocesori dosyagli chastot u 20 i bilshe megagerc pochinayuchi zIntel 80386 dlya zbilshennya produktivnosti v nih bulo dodano neveliku kilkist shvidkoyi kesh pam yati Ce bulo neobhidno cherez te sho vikoristovuyetsya yak sistemna OPERATIVNOYi pam yati DRAM mala znachni zatrimki do 120 ns i vimagala takti dlya onovlennya Kesh buv pobudovanij na bazi dorozhchij ale znachno bilsh shvidkoyi SRAM yaka v ti chasi mala zatrimki blizko 10 ns Ranni keshi buli zovnishnimi po vidnoshennyu do procesora i chasto roztashovuvalisya na materinskij plati yak 8 abo 9 mikroshem v korpusah DIP roztashovani v soketi dlya mozhlivosti zbilshennya abo zmenshennya rozmiru keshu Deyaki versiyi procesora I386 pidtrimuvali vid 16 do 64 KB zovnishnogo keshu Z vihodom procesora Intel 80486 8 KB keshu bulo integrovano bezposeredno na kristal mikroprocesora Cej kesh buv nazvanij L1 pershogo rivnya angl level 1 shob vidriznyati jogo vid bilsh povilnogo keshu na materinskij plati nazvanogo L2 drugogo rivnya angl level 2 Ostanni buli znachno bilshe azh do 256 KB V podalshomu vipadki viddilennya keshu provodilisya vihodyachi lishe z mirkuvan marketingovoyi politiki napriklad u mikroprocesori Celeron pobudovanomu na yadri Pentium II U mikroprocesori Pentium vikoristovuyetsya rozdilnij kesh komand i danih Bufer translyaciyi adres TLB peretvoryuye adresa v OZP vidpovidnij adresu v keshi Kesh danih Pentium vikoristovuye metod zvorotnogo zapisu angl write back yakij dozvolyaye modifikuvati dani v keshi bez dodatkovogo zvernennya do operativnoyi pam yati dani zapisuyutsya v OZP tilki pri vidalenni z keshu i protokol MESI Modified Exclusive Shared Invalid yakij zabezpechuye kogerentnist danih v keshah procesoriv i v OZP pri roboti v multiprocesornoyi sistemi Kozhen z okremih keshiv danih i komand mikroprocesora Pentium MMX maye obsyagom 16 kB i mistit dva porti po odnomu dlya kozhnogo vikonavchogo konveyera Kesh danih maye bufer translyaciyi adres TLB Nastupnij variant realizaciyi keshiv u x86 z yavivsya v Pentium Pro v yakomu kesh drugogo rivnya ob yednanij dlya danih i komand rozmirom 8 kB rozmishenij v odnomu korpusi z procesorom i keshem pershogo rivnya rozmirom 8 kB rozdilnim dlya danih i komand i pidnyav jogo chastotu do chastoti yadra Piznishe kesh drugogo rivnya stav rozmishuvatisya na tomu zh kristali sho i procesor TLB angl DIB nova arhitektura kesh pam yati vikoristovuye rizni shini dlya pidklyuchennya procesornogo yadra z osnovnoyu operativnoyu pam yattyu Kesh pershogo rivnya dvuhportovij neblokuyuchij pidtrimuye odnu operaciyu zavantazhennya i odnu operaciyu zapisu za takt Pracyuye na taktovij chastoti procesora Za takt peredayetsya 64 bita U mikroprocesori Pentium II kesh pershogo rivnya zbilsheno 16 kbajt dlya danih i 16 kbajt dlya komand Dlya keshu drugogo rivnya vikoristovuyetsya BSRAM roztashovana na odnij z procesorom plati u kartridzhi S E C dlya ustanovki v Slot 1 Z zrostannyam populyarnosti bagatoyadernih procesoriv na kristal stali dodavati kesh tretogo rivnya nazvani L3 Cej riven keshu mozhe buti zagalnim dlya dekilkoh yader i realizovuvati efektivnu vzayemodiyu mizh yadrami Jogo obsyag zazvichaj bilshe sumarnogo obsyagu keshu vsih pidklyuchenih do nogo yader i mozhe dosyagati 16 MB Populyarnim kesh na materinskij plati zalishavsya do eri vihodu Pentium MMX i vijshov z uzhitku z vvedennyam SDRAM i zrostannyam riznici mizh chastotoyu shini procesora i chastotoyu yadra procesora kesh na materinskij plati stav lishe trohi shvidshe osnovnij OZP Priklad keshu procesorne yadro K8 Navedena shema keshiv yadra mikroprocesoriv AMD K8 na yakij vidno yak specializovani keshi tak i yih bagatorivnevist Yadro vikoristovuye chotiri riznih specializovanih keshu kesh instrukcij TLB instrukcij TLB danih i kesh danih Kesh instrukcij skladayetsya z 64 bajtnih blokiv yaki ye kopiyeyu osnovnoyi pam yati i mozhe zavantazhuvati do 16 bajtiv za takt Kozhen bajt u comu keshi zberigayetsya v 10 bitah a ne u 8 prichomu v dodatkovih bitah vidznacheni kordonu instrukcij t o kesh provodit chastkove preddekodirovanie Dlya perevirki cilisnosti danih vikoristovuyetsya lishe kontrol parnosti a ne ECC tak yak bit parnosti zajmaye menshe miscya a v razi zboyu poshkodzheni dani mozhna onoviti pravilnoyu versiyeyu z pam yati TLB instrukcij sho mistyat kopiyi zapisiv z tablici storinok Na kozhen zapit chitannya komand potribno translyaciya matematichnih adres u fizichni Zapisi pro translyaciyi buvayut 4 i 8 bajtnimi i TLB rozbitij na 2 chastini vidpovidno odna dlya 4 KB vidobrazhen i insha dlya 2 i 4 MB vidobrazhen veliki storinki Take rozbittya sproshuye shemi povnistyu asociativnogo poshuku v kozhnij z chastin OS i dodatki mozhut vikoristovuvati vidobrazhennya riznogo rozmiru dlya chastin virtualnogo adresnogo prostoru TLB danih ye zdvoyenim i obidva bufera mistyat odnakovij nabir zapisiv Yih zdvoyennya dozvolyaye viroblyati kozhen takt translyaciyu dlya dvoh zapitiv do danih odnochasno Tak samo yak i TLB instrukcij cej bufer rozdilenij mizh zapisami dvoh vidiv Kesh danih mistit 64 bajtni kopiyi fragmentiv pam yati Vin rozdilenij na 8 bankiv banok kozhnij z yakih mistit po 8 kilobajt danih Kesh dozvolyaye provoditi po dva zapiti do 8 bajtovim danimi kozhen takt za umovi sho zapiti budut obrobleni riznimi bankami Tegovi strukturi v keshi produblovani tak yak kozhen 64 bajtnij blok rozpodilenij po vsomu 8 bankam Yaksho vidbuvayetsya 2 zapitu v odin takt voni pracyuyut z vlasnoyu kopiyeyu tegovij informaciyi Takozh v comu yadri vikoristovuyutsya bagatorivnevi keshi dvorivnevi TLB instrukcij i danih na drugomu rivni zberigayutsya lishe zapisi pro 4 kb vidobrazhenya i kesh drugogo rivnya L2 unifikovanij dlya roboti yak z keshami danih ta instrukcij 1 go rivnya tak i dlya riznih TLB Kesh L2 ye eksklyuzivnim dlya danih L1 L1 i instrukcij tobto kozhen vash 8 bajtovij fragment mozhe znahoditisya abo v L1 instrukcij abo v danih L1 abo L2 Vinyatkom mozhut buti lishe bajti skladovi zapisu PTE yaki mozhut perebuvati odnochasno v TLB i v keshi danih pid chas obrobki virtualnogo vidobrazhennya z boku OS V takomu vipadku OS vidpovidaye za svoyechasnij skidannya TLB pislya onovlennya zapisiv translyaciyi DEC Alpha U mikroprocesori DEC Alpha 21164 vipushenij v listopadi 1995 roku z taktovoyu chastotoyu 333 MGc kesh pershogo rivnya mozhe pidtrimuvati deyaka kilkist do 21 neobroblenih promahiv Ye shestielementnij fajl adres neobroblenih promahiv angl miss address file MAF kozhen element yakogo mistit adresu ta registr dlya zavantazhennya pri promahu yaksho adresi promahu nalezhat odnim ryadkom keshu to v MAF voni rozglyadayutsya yak odin element Krim rozdilnih keshu L1 zi naskriznim zapisom na kristali procesora roztashovani chastkovo asociativnij kesh L2 zi zvorotnim zapisom i kontroler keshu L3 yakij pracyuye yak u sinhronnomu tak i v asinhronnomu rezhimi U vipushenomu v berezni 1997 roku DEC Alpha 21164PC zovnishnij kesh drugogo rivnya obsyag keshu komand zbilsheno do 16 kB U mikroprocesori DEC Alpha 21264 nemaye keshu drugogo rivnya kontroler yakogo tim ne mensh rozmishuyetsya na kristali ale kesh pershogo rivnya zbilsheno do 128 kbajt po 64 kbajt dlya keshu komand i kesh danih vidpovidno PA RISC Rozrobka Hewlett Packard dlya naukovih ta inzhenernih obchislen PA 8000 mistit bufer pereuporyadkovuvannya adres angl ARB sho vidslidkovuye vsi komandi zavantazhennya zberezhennya yakij dozvolyaye skorotiti zatrimku adresuvannya zovnishnoyi kesh pam yati danih i komand yaka v danomu procesori mozhe mati obsyag do 4 MB Tim ne mensh navit efektivne upravlinnya zovnishnim keshem za dopomogoyu visokoshvidkisnih linij upravlinnya i predvibirki danih i komand z osnovnoyi pam yati v kesh ne skompensirovalo nevisoku shvidkist i visoku vartist Usunuti vkazani nedoliki vdalosya PA 8500 v yakomu za rahunok tehprocesu 0 25 mkm vdalosya dodati na kristal 512 kB keshu instrukcij i 1 MB keshu danih PowerPC Pobudovanij na garvardskij arhitekturi PowerPC 620 mistit dva vbudovanih keshu yemnistyu 32 kB kozhnij yaki mayut vlasni bloki upravlinnya pam yattyu angl MMU i funkcionuyut nezalezhno odin vid odnogo Komandi i adresi perehodiv zberigayetsya v keshi BTAC angl Branch Target Adress Cache Shinnij interfejs procesora vklyuchaye povnu realizaciyu pidtrimki keshu drugogo rivnya obsyagom do 128 MB pracyuye na chastoti procesora udvichi vchetvero menshoyu i dlya upravlinnya robotoyu zovnishnogo keshu ne vimagaye dodatkovih taktiv Realizovana kombinaciya naskriznij i zvorotnogo zapisu a takozh pidtrimka protokolu MESI MIPS Svoya specifika u keshu L1 zastosovuvanogo v RA 10000 kozhna komanda v keshi zabezpechena dodatkovim chetyrehbitnym tegom yakij vikoristovuyetsya v podalshomu dekoduvanni ta klasifikaciyi komandi Div takozhKeshPosilannyaMemory part 2 CPU caches 27 Sichnya 2021 u Wayback Machine Stattya na lwn net avtor Ulrich Drepper z detalnim opisom keshiv napisanij na VHDL Ce nezavershena stattya pro aparatne zabezpechennya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi