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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

Перемикання завдань[ред.ред. код]

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

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

Багаторівневі TLB[ред.ред. код]

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

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

Див. також[ред.ред. код]