Де саме кеші L1, L2 та L3 розташовані в комп'ютері?


32

Де саме кеші L1, L2 та L3 розташовані в комп'ютері?

Я знаю, ми використовуємо кеш для підвищення продуктивності, вибираючи ДАНІ та ІНСТРУКЦІЇ з кеша, а не основної пам'яті.

Далі мої запитання

  1. Де саме розташований кеш L1? . знаходиться на чіпі процесора?
  2. Де саме розташований кеш L2?

  3. Де саме розташований кеш L3? знаходиться на материнській дошці?

Я думаю, що останні процесори SMP використовують кеші 3 рівнів, тому я хочу зрозуміти ієрархію рівня кешу та їх архітектуру.


1
Точна ієрархія різниться між різними процесорами. Щоб з'ясувати ієрархію кеша на вашій машині, ви можете використовувати утиліту CoreInfo.exe SysInternal в ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )

2
Крім того, чим більше кеш отримує (L3> L2> 1), тим далі він розташований від самого ядра (наприклад, затримка доступу до L3 вище, ніж L1).

Відповіді:


48

Почнемо з цього:

Я думаю, що останні процесори SMP використовують кеші 3 рівнів, тому я хочу зрозуміти ієрархію рівня кешу та їх архітектуру.

Щоб зрозуміти кеші, потрібно знати кілька речей:

ЦП має регістри. Цінності в цьому можна використовувати безпосередньо. Ніщо не швидше.

Однак ми не можемо додати нескінченні регістри до мікросхеми. Ці речі займають місце. Якщо ми зробимо чіп більшим, він стає дорожчим. Частина цього полягає в тому, що нам потрібен більший чіп (більше кремнію), а також тому, що кількість мікросхем з проблемами збільшується.

(Зобразіть уявну вафлю розміром 500 см. 2. Я вирізав з неї 10 фішок, кожен чіп розміром 50 см 2. Один з них зламаний. Я відкидаю його і залишаю в ньому 9 робочих чіпів. Тепер візьміть ту саму вафлю і я вирізаю 100 фішок від нього, кожен десять разів менший. Один з них, якщо він зламаний. Я відкидаю зламану мікросхему, і мені залишається 99 робочих чіпів. Це частка втрати, яку я в іншому випадку мала б. Компенсувати більший чіпів, мені потрібно запитати більш високі ціни. Більше, ніж просто ціна на додатковий кремній)

Це одна з причин, чому ми хочемо невеликі, доступні фішки.

Однак чим ближче кеш до процесора, тим швидше до нього можна отримати доступ.

Це також легко пояснити; Електричні сигнали рухаються майже зі швидкістю світла. Це швидка, але все ж кінцева швидкість. Сучасний процесор працює з тактовими частотами ГГц. Це теж швидко. Якщо я візьму процесор 4 ГГц, то електричний сигнал може подорожувати приблизно 7,5 см за тактовий годинник. Тобто 7,5 см по прямій лінії. (Фішки - це все, крім прямих з'єднань). На практиці вам знадобиться значно менше, ніж 7,5 см, оскільки це не дає часу чіпам представляти запитувані дані та передавати сигнал назад.

Підсумок, ми хочемо, щоб кеш був максимально близьким фізично. Що означає великі фішки.

Ці два мають бути збалансовані (ефективність та вартість).

Де саме розташовані кеші L1, L2 та L3 в комп'ютері?

Якщо припустити, що в стилі ПК є лише апаратне забезпечення (мейнфрейми зовсім інші, в тому числі в продуктивності та співвідношенні витрат);

IBM XT
Оригінальний 4,77 МГц: немає кешу. Процесор безпосередньо отримує доступ до пам'яті. Читання з пам'яті буде слідувати цій схемі:

  • Процесор ставить адресу, яку він хоче прочитати, на шину пам’яті і стверджує прочитаний прапор
  • Пам'ять ставить дані на шину даних.
  • ЦП копіює дані з шини даних у свої внутрішні регістри.

80286 (1982)
Досі немає кешу. Доступ до пам'яті не був великою проблемою для версій із меншою швидкістю (6 МГц), але більш швидка модель працювала до 20 МГц і часто потребувала затримки під час доступу до пам'яті.

Потім ви отримуєте такий сценарій:

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

Це додатковий крок, витрачений на очікування пам'яті. На сучасній системі, яка може легко пройти 12 кроків, саме тому у нас є кеш .

80386 : (1985)
Процесори стають швидшими. І за такт, і за допомогою бігу на більшій тактовій швидкості.
Оперативна пам’ять стає швидшою, але не настільки швидшою, як процесори.
В результаті потрібно більше станів очікування. Деякі материнські плати працюють навколо цього шляхом додавання кешу (це буде 1 - й кеш рівня) на материнській платі.

Читання з пам'яті тепер починається з перевірки, чи дані вже є в кеші. Якщо це так, воно читається з набагато швидшого кешу. Якщо це не та сама процедура, що описана з 80286

80486 : (1989)
Це перший процесор цього покоління, який має деякий кеш на процесорі.
Це уніфікований кеш-пам'ять у 8 КБ, що означає, що він використовується для даних та інструкцій.

Приблизно в цей час стає звичайним розміщувати 256 КБ швидкої статичної пам'яті на материнській платі як кеш 2- го рівня. Таким чином кеш 1- го рівня на процесорі, 2- й кеш-рівень рівня на материнській платі.

486 материнська плата з розташуванням процесора та кешем 2-го рівня

80586 (1993)
586 або Pentium-1 використовує кеш-розділення рівня 1. 8 КБ кожен для даних та інструкцій. Кеш був розділений, щоб кеш даних та інструкцій міг бути індивідуально налаштований для їх конкретного використання. У вас все ще є невеликий, але дуже швидкий 1- й кеш-пам'ять біля процесора, і більший, але повільніший 2- й кеш-пам'ять на материнській платі. (На більшій фізичній відстані).

У тій же області pentium 1 Intel випустила Pentium Pro ("80686"). Залежно від моделі, цей чіп мав 256 Кб, 512 КБ або 1 МБ в кеш-платі. Це було також набагато дорожче, що легко пояснити наступною картиною.

Зображення процесора pentium Pro, кеш-пам’яті 256 Кб

Зауважте, що половину місця в мікросхемі використовується кеш. І це для моделі 256 КБ. Технічно можливо більше кеш-пам'яті, і деякі моделі, де виробляються з кешами 512KB та 1MB. Ринкова ціна на них була високою.

Також зауважте, що цей чіп містить два плашки. Один з фактичним процесором та 1- м кешем, а другий з 2- го кешу 256 КБ .

Пентій-2

Пентій 2 - це серцевина pentium pro. З міркувань економії немає 2 - го кеш-пам'яті не знаходиться в CPU. Замість того, що продається CPU, ми використовуємо друковану плату з окремими чіпами для процесора (і 1- го кешу) та 2- го кешу.

За міру розвиток технологій , і ми починаємо ставити створювати чіпи з більш дрібними компонентами він отримує фінансову можливість поставити 2 - й кеш назад в реальному матриці процесора. Однак розкол все ще є. Дуже швидкий 1- й кеш притиснутий до процесора. З одним першим кешем на ядро ​​процесора та більшим, але менш швидким 2- м кешем поруч з ядром.

Зображення pentium 2 'CPU' (як із кришкою, так і без неї)

Pentium-3
Pentium-4
Це не змінюється для pentium-3 або pentium-4.

Приблизно за цей час ми досягли практичного обмеження щодо того, наскільки швидко ми можемо працювати з процесорами. 8086 або 80286 охолодження не потребували. Пентій-4, що працює на частоті 3,0 ГГц, виробляє стільки тепла і витрачає стільки енергії, що стає більш практичним ставити два окремих процесора на материнську плату, а не одну швидку.

(Два процесори 2,0 ГГц використовували б менше енергії, ніж один ідентичний процесор 3,0 ГГц, але могли б зробити більше роботи).

Це можна вирішити трьома способами:

  1. Зробіть процесори більш ефективними, щоб вони зробили більше роботи з однаковою швидкістю.
  2. Використовуйте кілька процесорів
  3. Використовуйте декілька процесорів в одній «чіпі».

1) Чи триває процес. Він не новий і не зупиниться.

2) Це було зроблено на ранніх стадіях (наприклад, з подвійними материнськими платами Pentium-1 та NX-чіпсетом). Досі це був єдиний варіант для побудови більш швидкого ПК.

3) Потрібні процесори, де кілька "процесорних ядер" вбудовані в один чіп. (Ми тоді назвали цей процесор двоядерним процесором, щоб збільшити плутанину. Дякую маркетингу :))

У наші дні ми просто називаємо процесор як «ядро», щоб уникнути плутанини.

Тепер ви отримуєте мікросхеми на зразок pentium-D (duo), що в основному є двома ядрами pentium-4 на одній мікросхемі.

Ранній пентий-D (2 ядра P4)

Пам'ятаєте картину старого pentium-Pro? З величезним розміром кешу?
Бачите дві великі області на цій фотографії?

Виявляється, що ми можемо поділитися , що 2 - й кеш між двома ядрами процесора. Швидкість знизиться незначно, але 512KiB загальної 2 - й кеш часто швидше , ніж додавання два незалежних 2 - го рівня кеші половини розміру.

Це важливо для вашого питання.

Це означає, що якщо ви прочитаєте щось з одного ядра процесора, а пізніше спробуєте прочитати його з іншого ядра, яке розділяє той самий кеш, що ви отримаєте кеш-хіт. Доступ до пам'яті не потрібно буде.

Оскільки програми мігрують між процесорами, залежно від навантаження, кількості ядра та планувальника, ви можете отримати додаткові показники, за допомогою закріплення програм, які використовують ті самі дані до одного і того ж процесора (кеш-хіти на L1 і нижче) або на тих же процесорах, які поділити кеш L2 (і, таким чином, отримати пропуски на L1, але хіти на кеш L2 читаються).

Таким чином, на пізніших моделях ви побачите загальні кеші рівня 2.

Зображення відкритого процесора Core2

Якщо ви програмуєте для сучасних процесорів, у вас є два варіанти:

  1. Не турбувати. ОС повинна мати можливість планувати речі. Планувальник має великий вплив на продуктивність комп'ютера, і люди витратили багато зусиль на оптимізацію цього. Якщо ви не зробите щось дивне або не оптимізуєте для однієї конкретної моделі ПК, вам краще з планувальником за замовчуванням.
  2. Якщо вам потрібен кожен останній біт продуктивності, а швидше апаратне забезпечення не є можливим, то спробуйте залишити протектори, які отримують доступ до тих же даних на тому ж ядрі або на ядрі, що мають доступ до спільного кешу.


Я розумію, що я ще не згадував кеш L3, але вони не відрізняються. Кеш L3 працює аналогічно. Більший за L2, повільніше, ніж L2. І його часто поділяють між ядрами. Якщо він присутній, це набагато більше, ніж кеш L2 (інакше його не має сенсу), і його часто ділять з усіма ядрами.

modernCPUwithL3.png


Яка чудова написання!
lukas.pukenis

"але другий кеш-пам'ять, розміщений на 512 Мб, -" Я думаю, що це 512 КБ.
lukas.pukenis

така відмінна відповідь! дякую за те, що поділився людиною
samsamara

14

Ці кеші є внутрішніми процесорами. Деякі діляться між ядрами, деякі - індивідуальними, залежить від реалізації. Але всі вони розташовані на мікросхемі. Деякі деталі: процесор Intel Intel® Core ™ i7, взятий тут :

  • Інструкція 32 КБ і кеш даних першого рівня кеш-пам'яті (L1) для кожного ядра
  • 256 Кб спільний кеш інструкцій / даних другого рівня (L2) для кожного ядра
  • 8-Мб спільний кеш інструкцій / даних останнього рівня (L3), спільний між усіма ядрами

Фото чіпа процесора (вибачте, не знаю точної моделі). Ви можете бачити, що кеш займає значну площу в чіпі:

alt текст


1
Якщо під чіпом ви маєте на увазі силіконові штампи, то останній рівень кешу може бути відключений. Наприклад, zEC12 IBM ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) використовує мультичіпний модуль з шістьма процесорними мікросхемами та двома спільними чіпами кешу з кешем L4. Crystal Well від Intel також пропонує кеш-пам'ять L4 без чіпа (також використовуючи eDRAM).
Пол А. Клейтон

5

Кеш майже завжди є чіпом для швидкого доступу. Ось приємна діаграма, що показує чотирьохядерний процесор Intel CPU з виділеним кешем L3. Коли ви дивитесь на подібні зображення процесорного відмирання, великі рівномірні області, як правило, є банками мікросхеми, яка використовується як кеш.

Nehalem Die (http://www.legitreviews.com/article/824/1/)


5

У ці дні всі кеші вмирають на процесорі. Вони інколи розташовувались на материнській платі або на дочірній платі процесора, але я не думаю, що є поточні процесори, які використовують кеш-пам'ять чіпів.


1
+1 за ці дні . У старі часи було інакше. (наприклад, кеш-пам'ять L2 на материнській платі в Cyrix / Pentium-1 раз)
Hennes

0

Я не впевнений у L3, але L1 / L2 завжди знаходиться на процесорі. В основному L1 - це кеш інструкцій, L2 і L3 - кеші даних.


L1 може бути спільним кешем (кеш інструкцій та даних). Є також процесори з L1 даними та кеш-інструкціями L1. А кеш L2 не завжди розташований на процесорі (навіть L1 не повинен бути в процесорі, але я пам’ятаю лише один комп’ютер, де це було так).
Геннес

0

L1 розташований на мікросхемі процесора, L2 розташований між процесором і основною пам'яттю, але є сенс знати, що в якійсь системі L2 знаходиться на мікросхемі процесора, а в якійсь іншій системі L2 знаходиться на самій материнській платі, а L3 постійно розташований на чіпі основної плати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.