Коли кеш процесора відмивається назад до основної пам'яті?

Feb 23, 2025
Апаратне забезпечення

Якщо ви тільки починаєте дізнаватися, як працюють багатоядерні процесори, кешування, когерентність кеш-пам’яті та пам’ять, спочатку це може здатися трохи заплутаним. З огляду на це, сьогоднішня публікація запитань SuperUser містить відповіді на цікаве запитання читача.

Сьогоднішня сесія запитань і відповідей надійшла до нас люб’язно від SuperUser - підрозділу Stack Exchange, угруповання веб-сайтів із питань та відповідей на основі спільноти.

Питання

Читач SuperUser CarmeloS хоче знати, коли кеш процесора повертається до основної пам'яті:

Якщо у мене є процесор з двома ядрами, і кожне ядро ​​має власний кеш L1, чи можливо, що обидва Core1 і Core2 кешують одну і ту ж частину пам'яті одночасно? Якщо це можливо, яким буде значення основної пам'яті, якщо і Core1, і Core2 відредагували свої значення в кеші?

Коли кеш процесора відмивається назад до основної пам'яті?

Відповідь

Співробітники SuperUser Девід Шварц, sleske та Kimberly W мають відповідь за нас. Спочатку Девід Шварц:

Якщо у мене є процесор з двома ядрами, і кожне ядро ​​має власний кеш L1, чи можливо, що обидва Core1 і Core2 кешують одну і ту ж частину пам'яті одночасно?

Так, продуктивність була б жахливою, якби це було не так. Розглянемо два потоки, що запускають один і той же код. Вам потрібен цей код в обох кешах L1.

Якщо це можливо, яким буде значення основної пам'яті, якщо і Core1, і Core2 відредагували свої значення в кеші?

Старе значення буде в основній пам’яті, що не матиме значення, оскільки жодне ядро ​​його не прочитає. Перш ніж викинути змінене значення з кешу, його потрібно записати в пам'ять. Як правило, якийсь варіант Протокол MESI використовується. У традиційній реалізації MESI, якщо значення модифікується в одному кеші, воно взагалі не може бути присутнім у будь-якому іншому кеші на тому ж рівні.

Далі йде відповідь з sleske:

Так, наявність двох кеш-пам’ятей в одній області пам'яті може трапитися, і насправді це проблема, яка часто трапляється на практиці. Існують різні рішення, наприклад:

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

Проблема називається когерентністю кешу та Стаття у Вікіпедії по темі має хороший огляд проблеми та можливі шляхи її вирішення.

І наша остаточна відповідь від Kimberly W:

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

Інший протокол - це запис. У цьому випадку в будь-який час блок кешу записується на рівні п , відповідний блок на рівні n + 1 оновлюється. За концепцією це схоже на заповнення бланка вугільним папером знизу; все, що ви напишете зверху, копіюється на аркуші нижче. Це відбувається повільніше, оскільки очевидно передбачає більше операцій запису, але значення між кешами є більш послідовними. У схемі зворотного запису лише кеш найвищого рівня мав би найостанніше значення для певного блоку пам'яті.


Є що додати до пояснення? Звук у коментарях. Хочете прочитати більше відповідей від інших досвідчених користувачів Stack Exchange? Ознайомтесь із повним обговоренням тут .

Кредит зображення: Лемсіпматт (Flickr)

When Is A CPU’s Cache Flushed Back To Main Memory?

What Is The Difference Between Memory And SSD Cache In A PC Or NAS?

5 Cache و Virtual Memory

How To Clear Cache On Mac OS - Clear Memory Cache On Mac In 1-Click

Buffer Cache

Caching In: Understand, Measure, And Use Your CPU Cache More Effectively

How To Clear RAM Cache Memory | Fix RAM Cached Memory Too High Windows 10

NetApp WAFL, NVRAM And The System Memory Cache (new Version)


Апаратне забезпечення - Найпопулярніші статті

Кільце проти Nest Hello проти SkyBell HD: Який дзвінок для дзвінка для відео купити?

Апаратне забезпечення Jun 19, 2025

Якщо вам потрібен відеодзвінок для вхідних дверей, але ви не впевнені, який придбати, ми протестува..


Шановні компанії! Перестаньте вкладати голосовий контроль у все

Апаратне забезпечення Mar 20, 2025

З часів розвитку розумних технологій та розумних динаміків, таких як Echo, компанії докладають усіх �..


Чи можете ви грати на Mac?

Апаратне забезпечення Mar 12, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Маки мають масу переваг. Можливо, вам подобається простота macOS, сексуальний �..


Як виправити автоматичне ввімкнення або вимкнення функції "Покращення точності покажчика" в Windows

Апаратне забезпечення Dec 30, 2024

Windows “ Підвищення точності вказівника ”Настройка допомагає деяким мишам, але шкодить інш�..


Для чого саме використовується MAC-адреса?

Апаратне забезпечення Sep 3, 2025

Кожен апаратний апарат у вашій локальній мережі має MAC-адресу на додаток до IP-адреси, призначеної й�..


Випробуйте майбутнє комп’ютерів сьогодні: перетворіть свій Galaxy S4 на ПК за допомогою смарт-дока

Апаратне забезпечення Sep 10, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Чи замислювались ви коли-небудь, що сьогодні смартфони настільки просунуті,..


Яка різниця між HDMI та DVI? Що краще?

Апаратне забезпечення Jul 3, 2025

Вас бентежить шквал доступних сьогодні відеокабелів? Давайте подивимось на найважливіші відеокаб..


Чому слід робити джейлбрейк вашого пристрою iOS

Апаратне забезпечення Aug 20, 2025

НЕЗАГОТОВЛЕНИЙ ЗМІСТ Нещодавно було оголошено, що законно зламати ваш телефон / пристрої. Сьогодні ми р..


Категорії