Процесор в комп’ютері є одним з основних компонентів, без якого нічого не буде працювати. Його завданням є зчитування інформації та її передача на інші комплектуючі, які пов’язані з материнською платою.
Процесор складається з декількох елементів, і процесор кеш – один з них.
Кеш-пам’ять
Кеш процесора – це одна зі складових, яка впливає на продуктивність, а точніше – його обсяг, рівні і швидкодію. Даний параметр давно застосовується у виробництві процесорів, що є доказом його корисності. Ось, що таке кеш простими словами.
Якщо використовувати мову програмування, то кеш – це пам’ять з надшвидкою швидкістю обміну даними, завдання якої зберігати і передавати тимчасову інформацію.
Тригери, на яких побудований кеш процесора, складаються повністю з транзисторів. Однак транзистори мають властивість займати велику кількість простору, на відміну від оперативної пам’яті, що складається з конденсаторів. У зв’язку з цим виникають чималі труднощі, які обмежують обсяг пам’яті. Незважаючи на такий маленький обсяг, кеш процесора – досить дорогий параметр. Але в той же час така структура володіє незмінним якістю, швидкістю. Тригери, які лежать в основі, не вимагають регенерації, а означає їх перехід з одного стану в інше відбувається з мінімальними затримками. Саме цей показник дає можливість кешу процесора працювати на його частотах.
Спочатку кеш-пам’ять була розміщена на теренах материнської плати. Тепер кеш процесора розташовується на самому CPU, що значно скорочує час доступу до нього.
Призначення
Як було описано раніше, головним завданням кешу процесора є буферизація даних і їх тимчасове зберігання. Саме це дає хороші показники при використанні додатків, де це необхідно.
Для кращого опису простими словами, що це таке кеш і його принципу роботи, можна провести аналогію з офісом. Оперативна пам’ять відіграє роль стелажа з файлами, куди періодично приходить бухгалтер, щоб забрати необхідні файли, а робочий стіл бухгалтера – це кеш.
На робочому столі бухгалтера розташовані речі, з якими він неодноразово контактує. Ці речі лежать тільки на столі, так як вимагають швидкого доступу до них. До цих речей періодично додаються дані, що були вилучені з стелажа. Коли ці дані стають непотрібними, вони містяться назад на стелаж. Така маніпуляція дозволяє очистити кеш-пам’ять, готуючи її до нових даних.
Таким чином, виходить, що центральний процесор, перш ніж запросити дані з оперативної пам’яті, перевіряє їх наявність в кеші. Ось що це таке кеш простими словами.
Рівні пам’яті
У більшості сучасних процесорів присутні кілька рівнів кеш-пам’яті. Частіше всього їх два або три: L1, L2 кеш L3.
Перший рівень кешу має властивість швидкого доступу до ядра процесора, працюючи на тих же частотах, що і процесор. Також грає роль буфера між процесором і комп’ютерною пам’яттю другого рівня.
Кеш L2 має більш потужними даними, що, на жаль, зменшує його швидкість роботи. Його завдання – забезпечувати перехід від першого до третього рівня.
Так як з кожним рівнем швидкість роботи падає, кеш мікропроцесора третього рівня має ще більш повільну швидкість доступу. Однак його швидкість доступу більш продуктивна, на відміну від стандартної оперативної пам’яті. В попередніх варіантах кеш різного рівня розташовувався на своєму ядрі, але кеш L3 розрахований на весь процесор.
Незалежний
Пристрій кешу складається з декількох рівнів і категорій. Мікропроцесори для серверів і комп’ютерів володіють трьома незалежними кэшами: з набором інструкцій, з даними і буфер асоціативної трансляції. Саме тому сверхоперативная пам’ять розділена на три рівня.
Набір інструкцій
Набір інструкцій, кеш необхідний для завантаження машинного коду, але що це таке? Машинним кодом можна назвати систему команд певної машини для обчислення, интерпретируемую центральним процесором цієї обчислювальної машини. Будь-яка програма, яка була написана на машинній мові, виконана в двійковому коді, з цього складаються машинні інструкції. Ще цей процес можна назвати “опкод” – двійковий код.
Що робить кеш з інструкціями? Даний вид кешу здатний виконувати тільки певну задачу у вигляді операції з даними. Тобто кеш містить певний набір інструкцій, кожна з яких займається своєю “роботою”. Це може бути обчислення, перехід від одних до інших або копіювання.
Кожна машинна інструкція містить у собі дві різновидів операцій: прості і складні. Коли виконується одна з таких операцій, відбувається її декодування в порядкової послідовності для тих пристроїв, до яких вона призначалася.
Кеш даних
Кеш-пам’ять даних призначена для зберігання інформації, яку запитує центральний процесор набагато частіше, ніж з оперативної пам’яті. З-за малого об’єму кеш-пам’яті процесора там зберігається тільки часто запитувана інформація. Однак розташування такого роду сховища, тобто на кристалі процесора, що дозволяє скорочувати час запиту, зводячи його до мінімуму.
У більшості сучасних процесорах використовується об’єм кешу до 16 мегабайт, але в процесорах, призначених для серверів, максимальний кеш процесора досягає 20 мегабайт і вище.
Буфер асоціативної трансляції
Цей вид кеша використовується для того, щоб прискорювати процес передачі даних з віртуальної пам’яті до фізичної.
Асоціативна пам’ять має закріплений набір записів. Кожна з таких записів зберігає в собі інформацію про передачу даних від віртуальної пам’яті до фізичної. У разі відсутності такої інформації, процесор самостійно знаходить дорогу і залишає дані про нього, але це займає набагато більше часу, ніж використання вже збережених даних.
Промахи в роботі
Як і види кешу, промахи теж поділяються на три категорії.
Перший вид називається промахом з читання інструкцій з кешу. Даний провокує велику затримку, тому що процесору знадобиться чимало часу, щоб завантажити необхідну інструкцію з пам’яті.
Читання з кеша даних теж має промахи. На відміну від першого випадку, промах читання даних працює не так повільно, тому що інші інструкції, які не відносяться до запиту, можуть продовжувати свою роботу. У свою чергу запитуваний ресурс буде проходити обробку в основній пам’яті.
Запис у кеш даних теж не обходиться без промахів. Промахи по запису не займають багато часу, так як їх можна поставити в свою чергу. Це дає можливість працювати іншим інструкціям, не порушуючи загального процесу. Промах з записом із заповненою чергою – це єдина перешкода в нормальній роботі центрального процесора.
Різновиди похибок
Перша різновид промаху, яка носить назву Compulsory misses, проявляється тільки в тому разі, якщо адреса запитується в перший раз. Виправляє таке положення попередня вибірка, яка може бути апаратної або програмної.
Промах Capacity misses викликається через кінцевого розміру кешу, який ніяк не залежить від асоціативної пам’яті або розміру лінії. Понять повного або майже заповненого кешу не буває, так як його лінії знаходяться в зайнятому стані. Нову кеш-лінію можна створити тоді, коли буде погашена будь-яка зайнята.
Conflict misses – це, як видно з назви, промах, що з’явився в результаті конфлікту. Таке трапляється, коли процесор запитує ті дані, які кеш вже витіснив.
Трансляція адреси і її різновиди
Більшість процесорів, які встановлені комп’ютери, засновані на певному вигляді віртуальної пам’яті. Тобто будь-яка програма, виконувана на апараті, розпізнає свій спрощений адресу, в якому вказано унікальний код і дані, що належать виключно цією програмою. Віртуальний адресний простір створюється для того, щоб кожна програма могла його використовувати і не залежати від розташування у фізичній пам’яті.
Завдяки трансляції з віртуального сховища фізична (ОЗП), такі маніпуляції проводяться з неймовірною швидкістю.
Процес трансляції адрес:
- Генератор адрес посилає на пристрій управління пам’яттю фізичну адресу, але по закінченню цілих кілька тактів. Ця особливість називається “Затримкою”.
- “Ефектом накладення” можна вважати процес, коли на один фізичний адресу доводиться кілька віртуальних. Процесори відтворюють їх у певному порядку, який контролює програма. Однак щоб виконати дану опцію, потрібно запитати перевірку наявності одного примірника копії, який знаходиться в кеші.
- Віртуальна адресна середовище поділена на блоки пам’яті закріпленого розміру, початок яких відповідає адресі з їх розмірами. Така особливість носить назву “Одиниця відображення”.
Кеші і їх ієрархія
Наявність декількох взаємодіючих кешей – це один із критерій більшості сучасних процесорів.
Процесори, які підтримують паралельність інструкцій, отримують доступ до інформації за методом конвеєра: зчитування інструкцій, процес трансляції у фізичні адреси віртуальних і зчитування інструкцій. Конвеєрний метод роботи сприяє розподілу завдань між трьома окремими кэшами, завдяки чому можна уникнути конфлікту з отриманням доступу. Це місце в ієрархії називається “Спеціалізовані кеші”, а процеси з такою особливістю мають Гарвардську архітектуру.
Інтенсивність влучень і затримка – це одна з основних проблем роботи з сверхоперативной пам’яттю. Справа в тому, що чим більше кеш і його відсоток попадання, тим більше буде затримка. Найчастіше, щоб оптимізувати роботу і вирішити цей конфлікт, використовуються рівні кешей, які сприяють буферизації між один одним.
Плюс системи рівнів у тому, що вони працюють в послідовності зростання. Спочатку перший рівень комп’ютерної пам’яті, який є швидким, але з малим об’ємом, задає швидкість процесора на його частотах. При промаху першого рівня процесор звертається до кешу другого рівня, у якого більший обсяг, але менше швидкість. Так продовжується до тих пір, поки процесор не отримає відповідь на запит від оперативної пам’яті. Це положення в ієрархії носить назву “Багаторівневі кеші”.
Унікальні або ексклюзивні кеші володіють властивістю зберігання даних тільки на одному певному рівні. Інклюзивний вид може зберігати інформацію на декількох рівнях сверхоперативной пам’яті, розміщуючи їх методом копіювання.
Рівень ієрархії, який носить назву “Кеш-трас”, виключає роботу декодера, так як сприяє прискореної завантаженні інструкцій, зменшуючи тепловіддачу центрального процесора. Його головною особливістю є здатність до збереження декодованих даних. Зберігаються інструкції розділені на дві групи: динамічні траси і базові блоки. У деяких випадках динамічна траса може бути побудована на декількох базових блоках, об’єднаних у групи. Таким чином, динамічна траса здатна зберігати дані оброблених блоків.