Бафер асоцијативног превођењаБафер асоцијативног превођења (TLB) (енгл. translation lookaside buffer) је кеш меморија која користи MMU да побољша брзину превода виртуелног адресног простора. Сви тренутни десктоп, лаптоп и сервер процесори садрже један или више TLB-а у хардверу за управљање меморијом, и он је скоро увек присутан у било којем хардверу који подржава страничење или сегментацију виртуелне меморије. TLB је понекад имплементиран као контексно-адресибилна меморија (CAM). Кључ претраге контексно-адресибилне меморије је виртуелна адреса а резултат претраге је физичка адреса. Уколико је тражена адреса присутна у TLB, CAM претрага брзо даје подударање и преузета физичка адреса може да се користи за приступ меморији. Ово се назива TLB погодак. Уколико тражена адреса није у TLB-у, то је промашај, и превод се наставља претрагом табеле страница у процесу који се назива енгл. page walk. Page walk је скуп процес, јер подразумева читање садржаја више меморијских локација и користи их за израчунавање физичке адресе. Након што је утврђена физичка адреса помоћу Page walk-а, виртуелна адреса преко мапирања физичке адресе је унесена у TLB. Операција више заједничких TLB имплементација користи хеш табелу, слично као и имплементација CAM-а.[1] ПрегледБафер асоцијативног превођења (TLB) има фиксиран број слотова који садрже следеће уносе:[2]
Виртуелна меморија је простор гледано од стране процесора. Овај простор је често сегментиран у страницама фиксне величине. Табеле страница (обично се чувају у меморији) прате где се складиште виртуалне странице у физичкој меморији. TLB је кеш од табеле станица, то јест, само подскуп садржаја табеле странице је одржан у ТЛБ.[3] Референцирање на физичке меморијске адресе, TLB се може налазити између CPU-a и кеша процесора, између кеша процесора и главне мемроје, или између више-нивоа кеша. Постављање одређује да ли ће кеш користити физичко или виртуелно адресирање. Ако је кеш виртуелно адресиран, захтев је послат директно од процесора кешу, и TLB је приступљено само на промашају кеша. Ако је кеш физички адресиран, процесор ради проналажење ТЛБ-а на свакој меморијској операцији и резултујућа физичка адреса се шаље кешу. У Харвардској архитектури, дели виртуелни адресни простор или хардверски приступ меморији може да постоји за инструкције и податке. То може да доведе до различитих бафера асоцијативног превођења за сваку врсту приступам као ITLB и DTLB. Заједничка оптимизација за физички адресиран кеш је да паралелно обави TLB претрагу са кеш приступом. Битови ниског реда сваке виртуелне меморије (тј. у виртуелној меморији) систем има странице од 4 KB, 12 најижих битова виртуелне меморије) представљају офсет на жељену адресу унутар стране, и на тај начин они се не мењају у преводу витуелно-у-физичко. Током кеш приступа, обављају се два корака: индекс се користи да пронађе ставку у кеш меморији, а затим ознаке за пронађене кеш линије се пореде. Ако је кеш структуиран на такав начин да може бити индексиран користећи само битове који се не мењају у преводу, кеш може да обавља своју "индекс" операцију, док TLB преводи горње битове на адресу. Онда, преведа адреса од TLB -а се пребаци на кеш. Кеш врши поређење ознаке да одреди да ли је овај приступ био погодак или промашај. Могуће је да се изврши TLB проналажење паралелно са кеш приступом чак и ако кеш мора бити индексиран коришћењем неких битова који могу да се мењају на адреси превода; видети секцију адресне промене у кеш чланку за више детаља о виртуелном адресирању које се односи на кеш и TLB. Последице перформансиCPU мора да приступи главној меморији за:
Трећи случај (најједноставнији случај), где је жељена информација заправо у кешу, али информација за виртуелно-у-физичко превођење није у TLB. Сви су подједнако спори, па програм "регулише", TLB ће се изводити подједнако лоше као и једна инструкција регулисања или кеш податак. Зато је важно добро функционисање TLB-а. Вишеструки TLBСлично кешу, TLB може имати више нивоа. CPU може бити (сада је угланом тако) уграђен са вишеструким TLB-ом, на пример мали "L1" TLB (потенцијално потпуно асоцијативан) је екстремно брз, а већи "L2" TLB који је на неки начин спорији. Када се ITLB и DTLB користе, процесор може имати три (ITLB1, DTLB1, TLB2) или четири бафера асоцијативног превођења. На пример, Интелова Nehalem микроархихектура има четворосмерни скуп асоцијативног L1 DTLB са уносом за 4 KiB стране и 32 уносом за 2/4 MiB стране, L1 ITLB са 128 уносом за 4 KiB стране користе четворосмерну асоцијативност и 14 потпуно асоцијативних уноса за 2/4 MiB стране (оба дела ITLB су подељена статички између две нити)[4] and a unified 512-entry L2 TLB for 4 KiB pages,[5] оба 4-струко асоцијативна.[6] Неки TLB могу имати одвојене секције за мале и велике странице. Руковање TLB промашајимаДве шеме за руковање TLB промашајима се обично могу наћи у савременим архитектурама:
Itanium архитектура пружа могућност коришћења софтверског или хардверског управљања бафером асоцијативног превођења.[11] У Alpha архихектури TLB-ом се управља у PALcode, пре него у ОС-у. PALcode за процесор може бити специфичан за процесор и оперативни систем, ово омогућава да различите верзије PALcode спроведу различите формате табеле страница за различите оперативне системе, без захтева тог TLB формата и упутства за контролу TLB -а.[12] Типичан TLBОво су типичне перформансе нивоа TLB-а:[13]
Ако TLB погодак узме 1 циклус радног такта, промашај узме 30 циклуса радног такта, и стопа промашаја је 1%, ефективна стопа меморијског циклуса је просек од 1 × 0.99 + (1 + 30) × 0.01 = 1.30 (1.30 циклуса радног такта по меморијском приступу). Контексни прекидачНа контексном прекидачу, неки TLB уноси могу постати неважећи, јер је виртуелно-у-физичко мапирање другачије. најједноставнија стратегија да се ово реши је да се потпуно испразни TLB. Новији процесори користе боље стртегије маркирајући који процес уноса је за. То значи да ако други процес траје само кратко време и скочи назад на први процес, ипак може имати валидне ставке, тиме штедећи време да их поново учита. На пример у Alpha 21264, сваки TLB унос је означен са "бројем адресног простора" (ASN), и само TLB уноси са ASN подударањем тренутног задатка се сматрају важећим. Други пример је Intel Pentium Pro, PGE заставица у регистру CR4 и G заставица странице-директоријума или странице-табеле уноса може да се користи за спречавање да често коришћене странице буду аутоматски поништене у TLB-у на замену таскова или учитавање регистра CR3. Док је селективно пражњење TLB-а опција у софтверском управљању TLB-ом, једина опција у неким хардверским TLB-а (на пример, TLB у Intel 80386)) је комплетно пражњење TLB на контексном прекидачу. Други хардверски бафери асоцијативног превођења (нпр, TLB у Intel 80486 и касније x86 процесори, и TLB уARM процесорима) омогућавају пражњење појединих ставки из индексираних TLB од стане виртуелне адресе. Виртуелизација и x86 TLBСа појавом виртуализације за консолидацију сервера, много труда је отишло чинећи x86 архитектуру лакшом за виртуелизацију и да се обезбеде боље перформансе виртуелних машина на x86 хардверу.[14][15] На дугој листи таквих промена x86 архитектуре, TLB је последња. Нормално, уноси у x86 TLB нису повезани са било којим адресним простором. Дакле, сваки пут када се врши промена у адресном простору, као што је контекстни прекидач, цео TLB мора да се испразни. Одржавање ознаке која ће повезивати сваки TLB унос са адресним простором у софтверу и упоређујући ову ознаку током TLB претраге и TLB пражњења је веома скупо, посебно јер је x86 TLB дизајниран да ради са веома малим кашњењем и потпуно у хардверу. Године 2008., и Intel (Nehalem)[16] и AMD (SVM)[17] су увели ознаке као део TLB уласка и наменски хардвер који проверава ознаке током претраживања. Иако нису у потпуности искоришћени, предвиђено је да у будућности, ове ознаке ће идентификовати адресни простор на коме сваки TLB унос припада. Стога контексни прекидач неће резултовати у TLB пражњењу; него само мења ознаку текућег адресног простора на ознаку адресног простора новог задатка. Види јошРеференце
Литература
|
Portal di Ensiklopedia Dunia