Відповіді:
Це залежить як від процесора (не лише серії процесорів, він може змінюватись від моделі до моделі), так і операційних систем, але є загальні принципи. Чи є процесор багатоядерним, це не має прямого впливу на цей аспект; той самий процес може виконуватись на декількох ядрах одночасно (якщо це багатопотокова), і пам’ять може бути поділена між процесами, тому синхронізація кешу неминуча, незалежно від того, що відбувається в контекстному комутаторі.
Коли процесор шукає місце пам'яті в кеші, якщо є MMU , він може використовувати або фізичну, або віртуальну адресу цього місця (іноді навіть комбінацію обох, але це не дуже актуально тут).
Що стосується фізичних адрес, не має значення, який процес отримує доступ до адреси, вміст може бути спільним. Таким чином, немає необхідності недійсність вмісту кешу під час переключення контексту. Якщо два процеси відображають однакову фізичну сторінку з різними атрибутами, цим обробляється MMU (виступаючи як MPU (блок захисту пам'яті)). Мінусом фізично адресованого кешу є те, що MMU повинен сидіти між процесором і кешем, тому пошук кешу відбувається повільно. Кеш-пам'ять L1 майже ніколи не є фізичною адресою; можуть бути кеші вищого рівня.
Одна і та ж віртуальна адреса може позначати різні місця пам'яті в різних процесах. Отже, з практично адресованим кешем процесор і операційна система повинні співпрацювати, щоб процес знайшов потрібну пам'ять. Існує кілька загальних методик. Код комутації контексту, наданий операційною системою, може визнати недійсним весь кеш; це правильно, але дуже дорого. Деякі архітектури процесора мають у своєму кеш-рядку місце для ASID (ідентифікатор адресного простору) апаратну версію ідентифікатора процесу, що також використовується MMU. Це ефективно відокремлює записи кеша від різних процесів, і означає, що два процеси, які відображають одну і ту ж сторінку, матимуть непослідовні перегляди тієї самої фізичної сторінки (зазвичай існує спеціальне значення ASID, що вказує на спільну сторінку, але їх потрібно очистити, якщо вони не відображаються в одній і тій же адресі у всіх процесах, де вони відображені). Якщо операційна система дбає про те, щоб різні процеси використовували адресні простори, що не перекриваються (що перемагає певну мету використання віртуальної пам’яті, але іноді це можна зробити), рядки кешу залишаються дійсними.
Більшість процесорів, що мають MMU, також мають TLB . TLB - це кеш відображень від віртуальних адрес до фізичних адрес. Перед тим, як шукати фізичні адреси кешів, слід проводити консультації з TLB для швидкого визначення фізичної адреси; процесор може почати пошук кешу до завершення пошуку TLB, оскільки часто рядки-кандидати можуть бути ідентифіковані із середніх бітів адреси, між бітами, що визначають зміщення в лінії кешу, і бітами, що визначають сторінку. Фактично керовані кеші обходять TLB, якщо трапляється кеш-пам'ять, хоча процесор може ініціювати пошук TLB, коли він запитує кеш, у разі пропуску.
Самим TLB слід керувати під час переключення контексту. Якщо записи TLB містять ASID, вони можуть залишатися на місці; операційній системі потрібно лише очистити записи TLB, якщо їх ASID змінив значення (наприклад, через те, що процес закінчився). Якщо записи TLB є глобальними, вони повинні бути визнані недійсними при переході в інший контекст.
Кеш типово не звертає уваги на контекстний комутатор. Тільки послідовність звернень до пам'яті визначає, які лінії кеша замінюються.
Політика заміни зазвичай є евристичною залежністю від виробника та конкретної мікроархітектури. Проблема полягає в тому, що евристика не може передбачити майбутнє, до якої адреси і, отже, кеш-лінія буде доступна далі.
Евристичний може бути простим, як LRU (найменш останнім часом). Але з сучасними процесорами евристика є більш складною.
Погляньте на посібник для розробників програмного забезпечення Intel® 64 та IA-32 архітектури Том 3 Розділ 11 пояснює кеш пам'яті та механізми управління кешем. AMD має це у розділі 7 Посібника з архітектурної програми AMD64 Том 2: Системне програмування . Для процесорів на базі ARM схоже, що PDF-файли доступні лише зареєстрованим клієнтам.