Я думаю, я бачу вашу плутанину. TLB та кеш даних - це два окремих механізму. Вони обидва сховища, але вони кешують різні речі:
↦
Тому TLB виконує функцію спеціального кешу для цього пошуку. TLB має кілька записів TLB, де кожен запис TLB містить як віртуальну адресу, так і відповідну її фізичну адресу.
TLB дозволяє процесору дуже швидко перетворювати віртуальні адреси у фізичні адреси. Якщо інструкція просить процесор виконати деяку операцію з пам'яттю за (віртуальною) адресою, процесор спочатку перевіряє, чи містить TLB запис для цієї віртуальної адреси. Якщо це так, то це називається "кеш-хітом" для пошуку TLB, і оскільки запис TLB також містить перекладену фізичну адресу, процесор відразу знає, яку фізичну адресу використовувати. Якщо це не так, це пропуск кешу для пошуку TLB, і процесор повинен наполегливо робити віртуальне фізичне перетворення, переходячи по таблиці сторінок. (Після завершення цього перетворення він додає запис до TLB, щоб майбутні перетворення цієї віртуальної адреси відбувалися набагато швидше.)
Кеш даних - це кеш вмісту пам'яті. Основна пам'ять дозволяє вказати фізичну адресу та прочитати значення за цією фізичною адресою. Однак основна пам'ять повільна. Якби нам доводилося переходити в основну пам'ять кожного разу, коли ми хотіли зробити будь-яку операцію з пам'яттю, наш процесор був би дуже повільним.
Тому кеш даних виконує функцію спеціального кешу для читання пам'яті. Кеш даних містить деякі записи кешу, де кожен запис кешу містить фізичну адресу та значення пам'яті за цією адресою.
Кеш даних дозволяє процесору дуже швидко читати з пам'яті. Коли процесор хоче прочитати пам'ять за деякою (фізичною) адресою, він спочатку перевіряє кеш даних, щоб побачити, чи містить він запис кешу для цієї адреси. Якщо це так, це називається "зверненням кешу" (у кеш даних), і процесор може негайно використовувати значення даних, збережені в цьому записі кеша, не потребуючи контакту з основною пам'яттю. Якщо це не так, то це "пропущення кешу" (для кешу даних), і процесор повинен перейти в основну пам'ять. (Після того, як процесор отримує значення за цією адресою з основної пам'яті, він додає запис кешу в кеш даних, щоб спроби прочитати ту саму адресу потрапили в кеш даних.)
Вони обидва кеша, але служать різному призначенню. Процесор використовує обидва для кожної операції з пам'яттю: спочатку використовує TLB для перетворення з віртуальної адреси на фізичну адресу, потім перевіряє кеш даних, щоб пришвидшити процес зчитування значення, збереженого в пам'яті за цією адресою.
Більш детально ви можете прочитати статтю Вікіпедії про TLB . Якщо ви здійснюєте пошук, на TLB та кешах даних є багато іншої інформації. Я пропоную шукати "TLB" і "кеш L1" або "кеш L2" (останні 2 - це види кеш-даних).
(Для подальшої довідки: ми очікуємо, що ви зробите деяке дослідження свого питання, перш ніж запитати тут, і перевірити стандартні джерела Інтернету. Якщо відповідь можна знайти у Вікіпедії, ви не зробили достатньо досліджень самостійно. Можливо, у вас були Пощастить, якби ви перевірили в Інтернет-джерелах інформацію про те, як TLB, перш ніж запитати тут. Дивіться також, скільки зусиль для дослідження належить користувачам Overflow Overflow? Отже, скористайтеся можливістю використовувати це як урок, як можна покращити свій власний дослідницькі навички - те, що буде цінним для вас протягом усієї вашої кар’єри.)