Какво представлява Translation Lookaside Buffer?

Процесорите са невероятно сложни зверове. Има огромен брой взаимосвързани части, които всички трябва да работят в перфектен унисон, за да постигнат нивата на производителност, които виждаме. Производителността на паметта е ключов фактор за производителността на съвременните процесори, по-специално като ограничаващ фактор.

Защо скоростта на паметта е толкова важна?

Процесорите са невероятно бързи, като най-новите поколения работят на 5,7 GHz при подходящо охлаждане. Това им позволява да изпълняват 5,7 милиарда операции всяка секунда. Много от тези операции извършват действие върху някакъв тип данни, които трябва да бъдат съхранени в паметта.

Основната системна памет, известна като RAM, също е много бърза. За съжаление е много бърз в сравнение с всичко друго освен процесора. Абсолютната латентност на съвременната RAM от висок клас е от порядъка на 60 наносекунди. За съжаление, това означава приблизително 342 цикъла на процесора. За да се ускори достъпът до паметта, се използва кеш на процесора, който динамично кешира данни. Този кеш се намира на самата матрица на процесора и използва SRAM клетки, а не DRAM клетки, което го прави много по-бърз. За съжаление, кешът на процесора също е много по-малък от системната RAM, като общо не достига дори 100 MB. Все пак, въпреки миниатюрния си размер, многослойната CPU кеш система значително увеличава производителността на системата.

Тук идва виртуалната памет, за да обърка всичко

Съвременните компютри използват система, наречена виртуална памет. Вместо да се разпределят адреси на физическа памет към процеси, се използват адреси на виртуална памет. Всеки процес има собствено адресно пространство на виртуалната памет. Това има две предимства. Първо, той осигурява лесно разделяне между паметта, която принадлежи на един процес, и паметта, която принадлежи на друг. Това помага за предотвратяване на атаки, при които злонамерен софтуер чете данни от паметта на друг софтуер, като потенциално има достъп до чувствителна информация. Той също така скрива структурата на физическата памет от процеса. Това позволява на процесора да премести рядко използвани битове памет към файл за виртуална памет в хранилището, без непременно да го демонтира от виртуална RAM. Това позволява на компютъра внимателно да управлява сценарии, при които е необходима повече RAM, отколкото е физически налична. Без виртуална памет,

За съжаление, ако използвате адреси на виртуална памет, компютърът трябва действително да преведе тези адреси на виртуална памет в адреси на физическа памет, за да прочете данните. Това изисква таблица за съхраняване на всички преводи на адреси на виртуална памет към адреси на физическа памет. Размерът на това директно зависи от количеството използвана RAM. Като цяло е сравнително малък, поне в сравнение с капацитета на системната RAM памет. За съжаление, ако съхранявате транслацията между виртуални адреси и физически адреси в RAM, трябва да направите две заявки към RAM за всяка заявка към RAM. Един за намиране на физическия адрес за заявка и след това друг за действителен достъп до това местоположение.

Въведете буфера за превод отстрани

Решението на този проблем е таблицата за превод да се съхранява някъде по-бързо. Кешът на процесора би паснал добре на сметката, поне от гледна точка на скоростта. Проблемът с това обаче е, че кешът на процесора е малък и вече е силно използван. Таблицата не само не се побира в кеша, но това би нарушило нейното вече определящо производителността използване.

Разбира се, ако принципът на кеша вече работи за достъп до паметта, защо не го повторите за таблицата за превод? И точно това е Translation Lookaside Buffer или TLB. Това е високоскоростен кеш за скорошни преводи на адреси. Не е достатъчно голям, за да съхрани цялата маса, но малкият му размер означава, че може да реагира много бързо, в рамките на един такт.

Всяка заявка за памет преминава през TLB. Ако има TLB хит, той може да предостави адреса на физическата памет за действителната заявка, като обикновено добавя единичен цикъл на латентност. Ако има TLB пропуск, търсенето трябва да се извърши от основната памет. Има малко нарушение на производителността при пропуск на TLB от около 5 цикъла, загуба, която е повече от засенчена от латентността на достъпа до паметта. След като преводът на адреса бъде извлечен от системната RAM памет, той се вкарва в TLB и след това заявката се повтаря с незабавно TLB попадение.

Забележка: Има различни схеми за изваждане на TLB. Някои могат да използват схема First In, First Out или FIFO. Други могат да използват схема за най-рядко използване или LFU.

В редките случаи, когато няма запис в таблицата за преобразуване на адреси, се причинява грешка в страницата, тъй като исканите данни не са в RAM. След това операционната система трябва да се справи с грешката и да прехвърли данните от паметта в RAM, преди заявката да може да продължи.

Заключение

Translation Lookaside Buffer, или TLB, е високоскоростен кеш на процесора, предназначен за кеширане на скорошни преводи на адреси от файла на страницата в системната RAM памет. Това е необходимо, тъй като системите с виртуална памет, както са внедрени във всички съвременни компютри, биха изисквали две заявки към RAM за всяка заявка към RAM. Един за преобразуване на адреса на виртуалната памет в адрес на физическа памет, а друг за действителен достъп до физическия адрес. Чрез кеширане на скорошни преводи латентността на паметта може да бъде значително намалена за 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. Този инструмент може да ви спести време и