Чому кеш-пам'ять процесора настільки швидка?


58

Що робить кеш-пам'ять процесора набагато швидшою, ніж основна пам'ять? Я бачу певну користь у багаторівневій системі кешу. Має сенс, що менший кеш швидше шукати. Але повинно бути більше.


2
Що ви маєте на увазі під основною пам'яттю ?
marcocs

1
@marcocs відредаговано для наочності. Я маю на увазі кеш-пам'ять процесора та основну системну пам'ять, тобто знімні дими на більшості материнських плат.
ConditionRacer


2
@ratchetfreak Ага ... ОП досить чітко просить про близьку причину, а не про остаточну причину.
Кайл Странд

1
Нічого собі, я не думав, що колись буду використовувати ступінь комп'ютерної інженерії. Прийнята відповідь насправді не є відповіддю. Це відбувається тому, що кеш процесора працює на набагато більшій тактовій частоті (тактова частота процесора, близько 4 ГГц), а основна пам'ять працює на тактовій частоті шини (близько 1600 МГц). Мало того, кеш процесора може читати за 4 тактових цикли, але оперативна ОЗУ може зайняти 100 системних тактових циклів. Також системна оперативна пам’ять має суперечки з іншими периферійними пристроями, такими як диск або мережа, при цьому виділяється кеш процесора. Чим довший провід, тим повільніше тактова частота, на якій він може працювати. tinyurl.com/zkdsstd
Хлоя

Відповіді:


115

У випадку кешу процесора це швидше, оскільки він знаходиться на тій же штампі, що і процесор. Іншими словами, запитувані дані не повинні передаватися процесору; це вже є.

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

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

Тож переважно про місцевість . Кеш виключає етап передачі даних .

Місцевість - це вигадливий спосіб висловлювати дані "близько один до одного", або в часі, або в просторі. Кешування з меншою, швидшою (але, як правило, дорожчою) пам'яттю працює, тому що, як правило, порівняно невелика кількість загальних даних - це дані, до яких звертається найчастіше.

Подальше читання
кешу (обчислювальної техніки) у Вікіпедії


29
Я думаю, що це хороша відповідь. Однак, можливо, варто додати, що для кешування також є ієрархія витрат: мережевий накопичувач дешевший, ніж локальний жорсткий диск, який є дешевшим за оперативну пам’ять, що значно дешевше, ніж кеш-процесор. Якби не це, ми просто зробимо процесори зі 120 ГБ пам’яті на мікросхемі, і зробимо це з цим.
Чарльз Е. Грант

1
@ConditionRacer: Ті ж причини. L1 швидший, але дорожчий, тому вони дають вам трохи дуже дорогий L1, а більше - менш дорогий, але повільніше L2. Дивіться також stackoverflow.com/questions/3699582/…
Роберт Харві

9
"Чому L1 швидше, ніж L2" - це питання поза програмою для Programmers.SE, і його слід
задати

5
@ConditionRacer IIRC, це стосується технології, яка використовується для реалізації пам'яті. Я думаю, що L2 - це мікросхема DRAM, тоді як L1 - SRAM або щось подібне; набагато дорожче, але набагато швидше. Минуло десятиліття, відколи я працював у дизайні процесора…
Donal Fellows

4
@ CharlesE.Grant: хоча ієрархія витрат є хорошим прикладом, є ще одна причина, коли ми не маємо 120 ГБ кеш-пам’яті: адресація більшої пам’яті потребує більших адрес, тому або більші інструкції, або більше циклів процесора. Щоб найшвидше, кількість реєстрів повинна залишатися відносно невеликою. Звичайно, окрім регістрів, можна мати пам'ять на мікросхемі , але найшвидший рівень повинен залишатися невеликим, інакше це вже не буде таким швидким.
vsz

33

Це швидше, тому що і ближче, і тому, що це SRAM, а не DRAM.

SRAM є і може бути значно швидшим, ніж DRAM, значення зберігаються статично (S у S RAM), тому їх не потрібно оновлювати, що забирає цикли. DRAM є динамічним, як і крихітні акумуляторні батареї, вам доведеться регулярно підзаряджати акумулятори, щоб вони не стікали і не ставали нулями. Це краде час циклу, крім того, як ви маєте доступ до бітів тощо.

Перебуваючи на одній матриці або ближче, процесор зменшує зворотну поїздку, і L1, і L2 швидше, ніж DRAM з точки зору доступу.

SRAM швидше отримати доступ, ніж DRAM взяв яблука до яблук, і кеші, як правило, на мікросхемі або ближче або на більш швидких шинах, ніж DRAM, що робить час доступу також швидшим.


1
SRAM також більше спрацьовує за потужністю, тому вам доведеться додати до нього радіатори, і все, що працює від акумулятора, постраждає.
9000

1
Не кажучи вже про те, що збільшення SRAM збільшує ШЛЯЗЬ повільніше.
Darkhogg

домовилися, більше потужності та повільніше щодо інших sram. Я думаю, що це 4 транзистори за біт для sram і 1 за біт для драми. dram спирається на ємність у плода, де sram покладається на добру старомодну логіку. тож вам доведеться постійно живити всі ці транзистори, а не просто періодично перекачувати заряд.
old_timer

4
SRAM в кешах, як правило, становить 6T, а не 4T. Також SRAM (безумовно, 6T варіант) є більш енергоефективним. Справжній розрив потужності в DRAM - це цикл оновлення, і SRAM просто не потребує цього. Транзистори SRAM черпають живлення при перемиканні, конденсатор DRAM весь час протікає. Якщо ви заміните герметичний ковпачок DRAM, ви отримаєте EEPROM, але це не швидко: якщо заряд важко витікати, також важко вийняти його нормальним способом.
MSalters

@dwelch CMOS FET не витрачають живлення, якщо вони знаходяться у відкритому чи закритому стані, тому аргумент про споживання електроенергії недійсний. Більше того, це логічне перемикання CMOS, яке змушує процесори витрачати більшу частину своєї потужності - поточні піки в проміжному стані (не-1 і не-0), тому ситуація зворотна тому, що ви говорите :)
Руслан,

21

Одне, що слід чітко згадати, - це вплив швидкості світла. У цьому відео Грейс Хоппер демонструє шматочок дроту довжиною близько стопи, тобто про те, наскільки електричний сигнал може пройти за одну наносекунд *. Якщо процесор працює на частоті 3 ГГц, то це означає відстань 4 "на тактовий цикл. Це важкий фізичний обмеження швидкості доступу до пам'яті. Це велика частина того, чому близькість до процесора (як це кеш L1) дозволяє пам'ять, щоб бути швидше.

EDIT * насправді, наскільки далеко може пройти світло у вакуумі, відстань через мідь / кремній менше.


2
Жорсткий межа для міді. Це добре, але я не вважав, наскільки смішно швидкими є сучасні процесори.
ConditionRacer

@ConditionRacer Я щойно додав виправлення, 11,8 дюймів - це світло у вакуумі.
Меттью Фінлай

2
Вам потрібно вдвічі зменшити це число, оскільки для отримання пам'яті вам потрібен зворотній шлях. Отже, це лише 5 см, а не 10 см за цикл затримки у вакуумі .
CodesInChaos

2
Швидкість світла тому основна шина пам'яті годинник зупинився все швидше кілька років тому (2000ish?) Це не прямий ефект - він повинен робити з CMOS логічних сигналів не досконалий квадратні хвилі більше на частотах шини - але гр показує чільне місце в математиці.
zwol

5

Інші відповіді вже охоплювали всі відповідні біти: місцеположення (і пов’язана з цим вартість передачі даних, ширина шини та годинник тощо); швидкість світла (знову ж таки, пов'язана з витратами на передачу та шириною шини та пропускною здатністю); різні технології пам'яті (SRAM vs.DRAM). Все це бачиться з урахуванням співвідношення витрат / ефективності .

Один біт, який був залишений, і він лише згадується в коментарі Darkhogg: більші кеші мають кращі показники показів, але триваліша затримка. Кілька рівнів кешу, де введено також для вирішення цього компромісу.

У цьому питанні є відмінне запитання та відповідь щодо електроніки SE

З відповідей мені здається, що слід виділити точку: логіка, яка виконує всі необхідні операції для кешу читання, не така проста (особливо якщо кеш задано асоціативний, як і більшість кешів сьогодні). Для цього потрібні ворота та логіка. Тож, навіть якщо ми виключимо вартість і помремо простір

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


5

В інших відповідях є багато хороших моментів, але, здається, один фактор відсутній: затримка розшифровки адреси.

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

Коли процесору потрібно отримати доступ до пам'яті, він надсилає команду в мікросхему пам'яті, щоб вибрати конкретне слово, яке воно хоче використовувати. Ця команда називається Вибір адреси стовпців (ми зараз ігноруємо адреси рядків). Тепер мікросхем пам'яті повинен активувати запитуваний стовпець, що він робить, надсилаючи адресу вниз по каскаду логічних воріт, щоб зробити єдине записування, яке з'єднується з усіма клітинками стовпця. Залежно від того, як він реалізований, буде певна кількість затримок для кожного біта адреси, поки результат не вийде з іншого кінця. Це називається затримкою пам'яті CAS. Оскільки ці біти доводиться досліджувати послідовно, цей процес займає набагато більше часу, ніж цикл процесора (який зазвичай має лише кілька транзисторів послідовно чекати). Це також займає набагато більше часу, ніж цикл шини (який, як правило, в кілька разів повільніше, ніж цикл процесора). Команда CAS на типовому мікросхемі пам'яті, швидше за все, набере порядку 5ns (IIRC - минув час, коли я дивився на таймінги), що на порядок більше, ніж цикл процесора.

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

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


-2

Однією з філософій, яку я вивчав, було апаратне рух отримати максимальну пропускну здатність в мінімумі, коли ми говоримо про будь-яку пам'ять, засновану на кеші, будь то кеш процесора, буфер кеш або кеш пам'яті для цієї мети. Основний мотив досягається тоді, коли найменше або немає апаратного руху для отримання / читання / запису даних і операція завершується швидше.

Передача даних з диска -> основна пам'ять (оперативна пам'ять) (тимчасове зберігання) -> кеш процесора (менший тимчасовий сховище біля процесора для часто доступних даних) -> процесор (обробка).

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

Буферний кеш - це основна область пам'яті, в якій зберігаються копії даних з останніх використовуваних дискових місць.

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

Довідка: Як працює пам'ять комп’ютера


"Філософія операційних систем - це ..." - це лише ваша думка чи ви можете якось підкріпити це?
гнат

Про це навчали під час вивчення Unix Моріса Баха. На жаль, жодної супровідної документації. Відредаговано ..
roshan4074

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