Що таке кеш процесора?

Сучасні процесори працюють неймовірно швидко; вони можуть значно перевершити системну оперативну пам'ять. Такий дисбаланс швидкості між процесором і пам’яттю призведе до того, що ваш процесор буде часто простоювати, чекаючи, поки йому будуть надіслані дані, щоб він міг продовжити виконання процесу. Щоб цього не сталося, дозволяючи процесору продовжувати працювати швидше й швидше, використовується кеш ЦП.

Як кеш процесора прискорює процесор?

Кеш ЦП розроблений так, щоб він працював якомога швидше, а потім кешував дані, які запитує ЦП. Швидкість кешу ЦП оптимізована трьома способами: затримка, пропускна здатність і близькість. Кеш ЦП працює з дуже низькими затримками, що мінімізує час, необхідний для повернення результату. Наприклад, Intel i9-9900k має затримку кешу 0,8, 2,4 і 11,1 наносекунд для кеш-пам'яті L1, L2 і L3 відповідно. Для порівняння, затримка сучасної високошвидкісної ОЗУ становить близько 14 наносекунд.

Порада. Рівні кешу будуть більш детально пояснені пізніше, але просто кажучи, нижні шари кешу швидші, але дорожчі, тому мають меншу ємність. Наносекунда — це мільярдна частина секунди, тому затримка в 0,8 секунди означає, що для повернення результату потрібно менше мільярдної секунди.

З точки зору пропускної здатності, кеш-пам’ять ЦП пропонує значні покращення продуктивності в порівнянні з традиційними сховищами та оперативною пам’яттю. Швидкість зчитування кеш-пам'яті L1 і L3 може досягати піку 2,3 ТБ/с і 370 ГБ/с відповідно, тоді як пропускна здатність RAM зазвичай становить близько 40 ГБ/с. Ця збільшена пропускна здатність означає, що кеш ЦП може передавати дані до ЦП набагато швидше, ніж оперативна пам’ять.

Для досягнення максимально можливої ​​швидкості кеш-пам'ять ЦП фактично вбудовано в кремнієвий кристал самого ЦП. Це мінімізує відстань, яку необхідно пройти будь-яким електричним сигналам, тому затримка буде якомога меншою. Наприклад, коли кеш-пам'ять L3 вперше було переміщено з материнської плати на кристал ЦП, тодішній процесор (Pentium 4 EE) зміг підвищити продуктивність на 10-20%.

Архітектура кешу процесора

Сучасні ЦП зазвичай використовують три шари кешу ЦП з позначкою L1-3, причому кеш з меншим номером ближче до ядер ЦП, швидший і дорожчий. Кожне окреме ядро ​​ЦП у багатоядерному ЦП має власний кеш L1. Зазвичай він поділяється на дві частини, L1I і L1D. L1I використовується для кешування інструкцій для ЦП, а L1D використовується для кешування даних, на яких ці інструкції мають виконуватися.

Кожне ядро ​​ЦП зазвичай також має власний кеш L2 на сучасному ЦП. Кеш L2 є більшим і повільним, ніж кеш L1, і використовується в основному для зберігання даних, які інакше не поміщалися б у кеш L2. Наявність виділеного кешу L2 для кожного ядра дозволяє уникнути суперечок з кеш-пам’яттю. Конфлікт за кеш-пам’яттю — це те, коли різні ядра борються за місце в кеші для своїх власних робочих навантажень, що може призвести до очищення важливих даних із кешу.

Кеш 3-го рівня зазвичай використовується між усіма ядрами ЦП процесора. Знову ж таки, кеш L3 повільніше, ніж кеш L2, але дешевший і більший. Надаючи спільний кеш, можна зменшити кількість даних, які будуть дублюватися на нижчих рівнях кешу для кожного ядра.

Порада. Як приклад, за розмірами кешу Intel i9-9900K має 64 КБ L1 і 256 КБ кеш-пам’яті L2 на ядро ​​(загалом 512 КБ L1 і 2 МБ L2), він також має 16 МБ спільного кешу L3.

Як використовується кеш ЦП?

Усі рівні кешу ЦП використовуються для прискорення продуктивності процесора шляхом кешування даних з ОЗП. Коли ЦП запитує дані, він зазвичай спочатку виконує пошук у своїх шарах кешу, намагаючись отримати дані якомога швидше. Якщо дані виявлено в кеші, то ЦП може продовжити обробку. Якщо даних немає в кеші, що називається промахом кешу, то центральний процесор повинен перевірити оперативну пам’ять, а потім жорсткий диск, якщо даних там теж немає. Швидші шари завжди спочатку перевіряються на максимальну продуктивність.

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