Що таке Translation Lookaside Buffer?

Процесори — неймовірно складні звірі. Існує величезна кількість взаємопов’язаних частин, які всі мають працювати в ідеальному синхроні, щоб досягти рівня продуктивності, який ми бачимо. Продуктивність пам’яті є ключовим фактором у продуктивності сучасних процесорів, особливо як обмежуючий фактор.

Чому швидкість пам'яті так важлива?

Процесори неймовірно швидкі, останні покоління працюють на частоті 5,7 ГГц за належного охолодження. Це дозволяє їм виконувати 5,7 мільярдів операцій щосекунди. Багато з цих операцій виконують дії з деякими типами даних, які потрібно зберігати в пам’яті.

Основна системна пам'ять, відома як RAM, також дуже швидка. На жаль, він дуже швидкий у порівнянні з будь-чим, крім процесора. Абсолютна затримка сучасної оперативної пам’яті високого класу становить близько 60 наносекунд. На жаль, це означає приблизно 342 цикли ЦП. Для прискорення доступу до пам'яті використовується кеш процесора, який динамічно кешує дані. Цей кеш розташований на самому кристалі ЦП і використовує комірки SRAM, а не комірки DRAM, що робить його набагато швидшим. На жаль, кеш процесора також набагато менший за системну оперативну пам’ять, зазвичай не досягаючи навіть 100 Мб. Тим не менш, незважаючи на свій невеликий розмір, багаторівнева система кешу центрального процесора значно підвищує продуктивність системи.

Тут з’являється віртуальна пам’ять, щоб усе зіпсувати

Сучасні комп’ютери використовують систему, яка називається віртуальною пам’яттю. Замість того, щоб розподіляти адреси фізичної пам’яті для процесів, використовуються адреси віртуальної пам’яті. Кожен процес має власний адресний простір віртуальної пам'яті. Це має дві переваги. По-перше, це забезпечує легке розділення між пам’яттю, яка належить одному процесу, та пам’яттю, яка належить іншому. Це допомагає запобігти атакам, коли зловмисне програмне забезпечення зчитує дані з пам’яті іншого програмного забезпечення, потенційно отримуючи доступ до конфіденційної інформації. Він також приховує структуру фізичної пам’яті від процесу. Це дозволяє центральному процесору переміщувати рідко використовувані біти пам’яті у файл підкачки на сховищі, не обов’язково відключаючи його з віртуальної оперативної пам’яті. Це дозволяє комп’ютеру обережно керувати сценаріями, коли потрібно більше оперативної пам’яті, ніж фізично. Без віртуальної пам'яті,

На жаль, якщо ви використовуєте адреси віртуальної пам’яті, комп’ютер повинен фактично перетворити ці адреси віртуальної пам’яті на адреси фізичної пам’яті, щоб прочитати дані. Для цього потрібна таблиця для зберігання всіх трансляцій адрес віртуальної пам’яті в адреси фізичної пам’яті. Розмір цього безпосередньо залежить від обсягу використовуваної оперативної пам'яті. Загалом він досить малий, принаймні в порівнянні з ємністю системної оперативної пам’яті. На жаль, якщо ви зберігаєте трансляцію між віртуальними адресами та фізичними адресами в оперативній пам’яті, вам потрібно зробити два запити до оперативної пам’яті для кожного запиту до оперативної пам’яті. Один, щоб знайти фізичну адресу для запиту, а інший, щоб фактично отримати доступ до цього місця.

Введіть буфер перегляду перекладу

Рішення цієї проблеми полягає в тому, щоб зберегти таблицю перекладу десь швидше. Кеш-пам'ять центрального процесора добре відповідатиме вимогам, принаймні з точки зору швидкості. Однак проблема полягає в тому, що кеш ЦП крихітний і вже активно використовується. Таблиця не тільки не поміщається в кеш-пам’яті, але це може порушити її використання, яке вже визначає продуктивність.

Звичайно, якщо принцип кешу вже працює для доступу до пам'яті, чому б не повторити його для таблиці перекладу? І це саме те, що таке Translation Lookaside Buffer, або TLB. Це високошвидкісний кеш для останніх перекладів адрес. Він недостатньо великий, щоб зберігати всю таблицю, але його малий розмір означає, що він може реагувати дуже швидко, протягом одного такту.

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

Примітка. Існують різні схеми виселення TLB. Деякі можуть використовувати схему «першим увійшов», «першим вийшов» або FIFO. Інші можуть використовувати схему найменшого використання або LFU.

У рідкісних випадках, коли немає запису в таблиці перетворення адрес, виникає помилка сторінки, оскільки запитані дані відсутні в оперативній пам’яті. Потім ОС повинна обробити помилку та перенести дані зі сховища в оперативну пам’ять, перш ніж запит зможе продовжитися.

Висновок

Translation Lookaside Buffer, або TLB, — це високошвидкісний кеш ЦП, призначений для кешування останніх перекладів адрес із файлу сторінки в системній оперативній пам’яті. Це необхідно, оскільки системи віртуальної пам’яті, реалізовані в усіх сучасних комп’ютерах, вимагатимуть двох запитів до оперативної пам’яті для кожного запиту до оперативної пам’яті. Один для перетворення адреси віртуальної пам’яті в адресу фізичної пам’яті, а інший для фактичного доступу до фізичної адреси. За допомогою кешування останніх перекладів можна значно зменшити затримку пам’яті для звернень TLB.

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


Як клонувати жорсткий диск

Як клонувати жорсткий диск

У сучасну цифрову епоху, коли дані є цінним активом, клонування жорсткого диска в Windows може бути вирішальним процесом для багатьох. Цей вичерпний посібник

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Ви стикаєтеся з повідомленням про помилку під час завантаження комп’ютера, у якому йдеться про те, що драйвер WUDFRd не вдалося завантажити на ваш комп’ютер?

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Ви відчуваєте код помилки NVIDIA GeForce 0x0003 на робочому столі? Якщо так, прочитайте блог, щоб дізнатися, як швидко та легко виправити цю помилку.

Що таке SMPS?

Що таке SMPS?

Перш ніж вибрати SMPS для свого комп’ютера, дізнайтеся, що таке SMPS і значення різних показників ефективності.

Чому мій Chromebook не вмикається

Чому мій Chromebook не вмикається

Отримайте відповіді на запитання «Чому мій Chromebook не вмикається?» У цьому корисному посібнику для користувачів Chromebook.

Як повідомити Google про фішинг

Як повідомити Google про фішинг

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

Roomba зупиняється, залипає та розвертається – виправлення

Roomba зупиняється, залипає та розвертається – виправлення

Вирішіть проблему, коли ваш робот-пилосос Roomba зупиняється, залипає та продовжує обертатися.

Як змінити налаштування графіки на Steam Deck

Як змінити налаштування графіки на Steam Deck

Steam Deck пропонує надійний і універсальний ігровий досвід прямо у вас під рукою. Однак, щоб оптимізувати вашу гру та забезпечити найкраще

Що таке безпека на основі ізоляції?

Що таке безпека на основі ізоляції?

Я збирався заглибитися в тему, яка стає все більш важливою у світі кібербезпеки: безпека на основі ізоляції. Такий підхід до

Як використовувати Auto Clicker для Chromebook

Як використовувати Auto Clicker для Chromebook

Сьогодні я збирався заглибитися в інструмент, який може автоматизувати повторювані завдання на вашому Chromebook: Auto Clicker. Цей інструмент може заощадити ваш час і