Як працює TLB та кеш даних?


15

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

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

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

Малюнок


Це питання занадто довго. Чи можете ви витягнути з цього вузьке, конкретне питання, а потім відредагувати своє запитання, щоб звести це до лише одного конкретного питання? Частина задати гарне запитання включає ретельно продумати те, що є мінімальною сутністю того, що вам потрібно знати, і включити лише те, що є актуальним і важливим для цього питання. Наприклад, якщо у вас є конкретний питання про те, як працюють TLB, замість того, щоб демпінгувати все це, як щодо спроби скласти єдине вузько розроблене питання про TLB?
DW

Гаразд, мій намір полягав у тому, щоб показати те, що я вже розумію з цього приводу, оскільки більшість людей на обміні стеками не люблять відповідати на запитання, не запитуючи певного зусилля (зрозуміло). Я думаю, я не можу зробити всіх щасливими. Можливо, я просто відредагую його своїм запитанням жирним шрифтом чи щось.
audiFanatic

@DW це краще?
audiFanatic

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

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

Відповіді:


23

Я думаю, я бачу вашу плутанину. TLB та кеш даних - це два окремих механізму. Вони обидва сховища, але вони кешують різні речі:

  • Тому TLB виконує функцію спеціального кешу для цього пошуку. TLB має кілька записів TLB, де кожен запис TLB містить як віртуальну адресу, так і відповідну її фізичну адресу.

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

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

    Тому кеш даних виконує функцію спеціального кешу для читання пам'яті. Кеш даних містить деякі записи кешу, де кожен запис кешу містить фізичну адресу та значення пам'яті за цією адресою.

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

Вони обидва кеша, але служать різному призначенню. Процесор використовує обидва для кожної операції з пам'яттю: спочатку використовує TLB для перетворення з віртуальної адреси на фізичну адресу, потім перевіряє кеш даних, щоб пришвидшити процес зчитування значення, збереженого в пам'яті за цією адресою.

Більш детально ви можете прочитати статтю Вікіпедії про TLB . Якщо ви здійснюєте пошук, на TLB та кешах даних є багато іншої інформації. Я пропоную шукати "TLB" і "кеш L1" або "кеш L2" (останні 2 - це види кеш-даних).

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


1
Дякую! Що прояснило переважно все. Я витрачав багато часу на дослідження цього (кілька днів), я просто не міг знайти чіткої, лаконічної інформації, яка поєднала б це все разом (плюс моя розгубленість, ймовірно, не допомогла моєму пошуку). Як аналогія, я відчував, ніби я в аптеці шукав ліки від якоїсь недіагностованої недуги; використовуючи лише симптоми як керівництво.
audiFanatic

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

1
VПV+1П+1V+2П+2V+4095П+4095

iii

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