Буфер асоціативної трансляції

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Translation lookaside buffer)
Перейти до навігації Перейти до пошуку
Схема, що показує трансляцію адрес за участі TLB.

Бу́фер асоціати́вної трансля́ції (англ. Translation lookaside buffer, TLB) — це спеціалізований кеш центрального процесора, що використовується для прискорення трансляції адреси віртуальної пам'яті на адресу фізичної пам'яті.[1][2] TLB використовується всіма сучасними процесорами з підтримкою сторінкової організації пам'яті. TLB містить фіксований набір записів (від 8 до 4096) і є асоціативної пам'яттю. Кожен запис містить відповідність адреси сторінки віртуальної пам'яті адресі фізичної пам'яті. Якщо адреса відсутня в TLB, процесор обходить таблиці сторінок і зберігає отриману адресу в TLB, що займає в 10-60 разів більше часу, ніж отримання адреси з запису, яка вже закешувалася TLB. Ймовірність промаху TLB невисока і складає в середньому від 0,01% до 1%.

Перемикання завдань

[ред. | ред. код]

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

  • збереження TLB в оперативній пам'яті;
  • специфікація приналежності запису TLB до певного адресного простору.

Багаторівневі TLB

[ред. | ред. код]

У сучасних процесорах може бути реалізовано кілька рівнів TLB з різною швидкістю роботи і розміром. Самий верхній рівень TLB буде містити невелику кількість записів, але буде працювати з дуже високою швидкістю, аж до декількох тактів. Наступні рівні стають повільніші, але, разом з тим і більші.

Іноді верхній рівень TLB розділяється на 2 буфери, один для сторінок, що містять виконуваний код, і інший - для оброблюваних даних.

Див. також

[ред. | ред. код]

Джерела

[ред. | ред. код]
  1. Mittal, Sparsh (2017), A survey of techniques for architecting TLBS, Concurrency and Computation: Practice and Experience, 29 (10): e4061, doi:10.1002/cpe.4061, архів оригіналу за 30 січня 2021, процитовано 7 травня 2020
  2. Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), Faster Translations (TLBs) (PDF), Arpaci-Dusseau Books, архів оригіналу (PDF) за 13 січня 2022, процитовано 7 травня 2020