Наскільки важливий кеш L3 для процесорів AMD?
Дійсно, має сенс оснащувати багатоядерні процесори виділеної пам'яттю, яка буде використовуватися спільно всіма доступними ядрами. У цій ролі швидкий кеш третього рівня (L3) може істотно прискорити доступ до даних, які запитуються найчастіше. Тоді ядер, якщо існує така можливість, не доведеться звертатися до повільної основної пам'яті (ОЗУ, RAM).
По крайней мере, в теорії. Нещодавно AMD анонсувала процесор Athlon II X4, який представляє собою модель Phenom II X4 без кешу L3, натякаючи на те, що він не такий і необхідний. Ми вирішили безпосередньо порівняти два процесори (з кешем L3 і без), щоб перевірити, як кеш впливає на продуктивність.
Як працює кеш?
Перед тим, як ми заглибимося в тести, важливо зрозуміти деякі основи. Принцип роботи кеша досить простий. Кеш буферизует дані якомога ближче до обчислювальних ядер процесора, щоб знизити запити CPU в більш віддалену і повільну пам'ять. У сучасних настільних платформ ієрархія кеша включає цілих три рівня, які передують доступ до оперативної пам'яті. Причому кеші другого і, зокрема, третього рівнів служать не тільки для буферизації даних. Їх мета полягає в запобіганні перевантаження шини процесора, коли ядер необхідно обмінятися інформацією.
Попадання і промахи
Ефективність архітектури кешей вимірюється відсотком влучань. Запити даних, які можуть бути задоволені кешем, вважаються влученнями. Якщо даний кеш не містить потрібні дані, то запит передається далі по конвеєру пам'яті, і зараховується промах. Звичайно, промахи призводять до більшого часу, який потрібен для отримання інформації. В результаті в обчислювальному конвеєрі з'являються "бульбашки" (простої) і затримки. Потрапляння, навпаки, дозволяють підтримати максимальну продуктивність.
Запис в кеш, ексклюзивність, когерентність
Політики заміщення диктують, як в кеші звільняється місце під нові записи. Оскільки дані, що записуються в кеш, рано чи пізно повинні з'явитися в основний пам'яті, системи можуть робити це одночасно із записом в кеш (write-through) або можуть маркувати дані області як "брудні" (write-back), а виконувати запис в пам'ять тоді, коли вона буде витіснятися з кешу.
Дані в декількох рівнях кешу можуть зберігатися ексклюзивно, тобто без надмірності. Тоді ви не знайдете однакових рядків даних в двох різних ієрархіях кеша. Або кеші можуть працювати інклюзивної, тобто нижні рівні кеша гарантовано містять дані, присутні в верхніх рівнях кешу (ближче до процесорного ядра). У AMD Phenom використовуються ексклюзивний кеш L3, а Intel дотримується стратегії інклюзивної кеша. Протоколи когерентності стежать за цілісністю і актуальністю даних між різними ядрами, рівнями кешей і навіть процесорами.
Більший за обсягом кеш може містити більше даних, але при цьому спостерігається тенденція збільшення затримок. Крім того, великий за обсягом кеш споживає чимала кількість транзисторів процесора, тому важливо знаходити баланс між "бюджетом" транзисторів, розміром кристала, енергоспоживанням і продуктивністю / затримками.
Записи в оперативній пам'яті можуть прив'язуватися до кешу безпосередньо (direct-mapped), тобто для копії даних з оперативної пам'яті існує тільки одна позиція в кеші, або вони можуть бути асоціативні в n-ступеня (n-way associative), тобто існує n можливих розташувань в кеші, де можуть зберігатися ці дані. Більш висока ступінь асоціативності (аж до повністю асоціативних кешей) забезпечує найкращу гнучкість кешування, оскільки існуючі дані в кеші не потрібно переписувати. Іншими словами, висока n-ступінь асоціативності гарантує більш високий відсоток влучень, але при цьому збільшується затримка, оскільки потрібно більше часу на перевірку всіх цих асоціацій для потрапляння. Як правило, найбільша ступінь асоціації розумна для останнього рівня кешування, оскільки там доступна максимальна ємність, а пошук даних за межами цього кеша призведе до звернення процесора до повільної оперативної пам'яті.
Наведемо кілька прикладів: у Core i5 і i7 використовується 32 кбайт кеша L1 з 8-way асоціативністю для даних і 32 кбайт кеша L1 з 4-way для інструкцій. Зрозуміле бажання Intel, щоб інструкції були доступні швидше, а у кеша L1 для даних був максимальний відсоток влучень. Кеш L2 у процесорів Intel має 8-way асоціативністю, а кеш L3 у Intel ще "розумнішими", оскільки в ньому реалізована 16-way асоціативність для максимізації влучень.
Однак AMD слід іншої стратегії з процесорами Phenom II X4, де використовується кеш L1 з 2-way асоціативністю для зниження затримок. Щоб компенсувати можливі промахи ємність кеша була збільшена в два рази: 64 кбайт для даних і 64 кбайт для інструкцій. Кеш L2 має 8-way асоціативність, як і у дизайну Intel, але кеш L3 у AMD працює з 48-way асоціативністю. Але рішення вибору тієї чи іншої архітектури кешу не можна оцінювати без розгляду всієї архітектури CPU. Цілком природно, що практичне значення мають результати тестів, і нашою метою якраз була практична перевірка всієї цієї складної багаторівневої структури кешування.