Бафер асоцијативног превођења
Бафер асоцијативног превођења (TLB) () је кеш меморија која користи MMU да побољша брзину превода виртуелног адресног простора. Сви тренутни десктоп, лаптоп и сервер процесори садрже један или више TLB-а у хардверу за управљање меморијом, и он је скоро увек присутан у било којем хардверу који подржава страничење или сегментацију виртуелне меморије.

TLB је понекад имплементиран као контексно-адресибилна меморија (CAM). Кључ претраге контексно-адресибилне меморије је виртуелна адреса а резултат претраге је физичка адреса. Уколико је тражена адреса присутна у TLB, CAM претрага брзо даје подударање и преузета физичка адреса може да се користи за приступ меморији. Ово се назива TLB погодак. Уколико тражена адреса није у TLB-у, то је промашај, и превод се наставља претрагом табеле страница у процесу који се назива . Page walk је скуп процес, јер подразумева читање садржаја више меморијских локација и користи их за израчунавање физичке адресе. Након што је утврђена физичка адреса помоћу Page walk-а, виртуелна адреса преко мапирања физичке адресе је унесена у TLB. Операција више заједничких TLB имплементација користи хеш табелу, слично као и имплементација CAM-а.

Преглед 

Бафер асоцијативног превођења (TLB) има фиксиран број слотова који садрже следеће уносе:

 табеле страница, које мапирају виртуелне адресе у
 физичке адресе
 средње табеле адреса
 Сегментне табеле, које мапирају виртуелне адресе у
 сегментне адресе
 средње табеле адреса
 адерсе табела страница.

Виртуелна меморија је простор гледано од стране процесора. Овај простор је често сегментиран у страницама фиксне величине. Табеле страница (обично се чувају у меморији) прате где се складиште виртуалне странице у физичкој меморији. TLB је кеш од табеле станица, то јест, само подскуп садржаја табеле странице је одржан у ТЛБ.

Референцирање на физичке меморијске адресе, TLB се може налазити између CPU-a и кеша процесора, између кеша процесора и главне мемроје, или између више-нивоа кеша. Постављање одређује да ли ће кеш користити физичко или виртуелно адресирање. Ако је кеш виртуелно адресиран, захтев је послат директно од процесора кешу, и TLB је приступљено само на промашају кеша. Ако је кеш физички адресиран, процесор ради проналажење ТЛБ-а на свакој меморијској операцији и резултујућа физичка адреса се шаље кешу.

У Харвардској архитектури, дели виртуелни адресни простор или хардверски приступ меморији може да постоји за инструкције и податке. То може да доведе до различитих бафера асоцијативног превођења за сваку врсту приступам као ITLB и DTLB.

Заједничка оптимизација за физички адресиран кеш је да паралелно обави TLB претрагу са кеш приступом. Битови ниског реда сваке виртуелне меморије (тј. у виртуелној меморији) систем има странице од 4 KB, 12 најижих битова виртуелне меморије) представљају офсет на жељену адресу унутар стране, и на тај начин они се не мењају у преводу витуелно-у-физичко. Током кеш приступа, обављају се два корака: индекс се користи да пронађе ставку у кеш меморији, а затим ознаке за пронађене кеш линије се пореде. Ако је кеш структуиран на такав начин да може бити индексиран користећи само битове који се не мењају у преводу, кеш може да обавља своју "индекс" операцију, док TLB преводи горње битове на адресу. Онда, преведа адреса од TLB -а се пребаци на кеш. Кеш врши поређење ознаке да одреди да ли је овај приступ био погодак или промашај. Могуће је да се изврши TLB проналажење паралелно са кеш приступом чак и ако кеш мора бити индексиран коришћењем неких битова који могу да се мењају на адреси превода; видети секцију адресне промене у кеш чланку за више детаља о виртуелном адресирању које се односи на кеш и TLB.

Последице перформанси 
CPU мора да приступи главној меморији за:
 инстукције кеш промашаја
 податке кеш промашаја
 TLB промашај
Трећи случај (најједноставнији случај), где је жељена информација заправо у кешу, али информација за виртуелно-у-физичко превођење није у 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 су подељена статички између две нити)  and a unified 512-entry L2 TLB for 4 KiB pages, оба 4-струко асоцијативна.

Неки TLB могу имати одвојене секције за мале и велике странице.

Руковање TLB промашајима 
Две шеме за руковање TLB промашајима се обично могу наћи у савременим архитектурама:
 Са хардверским управљањем TLB, процесор аутоматски пролази кроз табеле страница (користећи CR3 регистар на x86) да види да ли има валидног уноса за специфичну виртуелну адресу. Ако унос постоји, доводи се у TLB и приступ TLB-а се поново покушава: овог пута погодиће се приступ, и програм може нормално да се процесира. Ако CPU пронађе не валидан унос за виртуелну адресу у табели страница, он подиже изузетак грешке стране, којим Оперативни систем мора да рукује. Руковање грешкама странице обично подразумева довођење жељеног податка у физичку меморију, постављање улаза табеле страна на мапирану нетачну виртуелну адресу на одговарајућу физичку адресу, и поновно покретање програма. Са хардверским управљањем бафером асоцијативног превођења, формат TLB уноса није видљив софтверу, па се може променити од процесора до процесора без изазивања губитка компатибилности за програме.
 Са софтверским управљањем TLB-ом, TLB промашај генерише изузетак - "TLB промашај", и код ОС-а је одговоран за претрагу табеле страница и обављање превођења у софтверу. Оперативни систем затим учитава превод у TLB и рестартује програм са изузетком које је изазвао TLB промашај. Као и код хардверског управљања TLB-ом, ако ОС пронађе не валидан превод у табели страница, јавиће се грешка странице, и према томе ОС мора да рукује њом. Скуп инструкција процесора који има софтверско управљање TLB-ом има инструкције које дозвољавају учитавање уноса у било који слот у TLB-у. Формат TLВуноса је дефинисан као део скупа инструкција архитектуре (ISA) MIPS архихектура прецизира софтверско управљање TLB-ом; SPARC V9 архихектура дозвољава имплементацију SPARC V9 да нема MMU, MMU са софтверским управљањем TLB-ом, или MMU са хардверским TLB управљањем, и UltraSPARC архихектура прецизира софтверско TLB управљање;.

Itanium архитектура пружа могућност коришћења софтверског или хардверског управљања бафером асоцијативног превођења.

У Alpha архихектури TLB-ом се управља у PALcode, пре него у ОС-у. PALcode за процесор може бити специфичан за процесор и оперативни систем, ово омогућава да различите верзије PALcode спроведу различите формате табеле страница за различите оперативне системе, без захтева тог TLB формата и упутства за контролу TLB -а.

Типичан TLB 
Ово су типичне перформансе нивоа TLB-а:

 величина: 12—4,096 уноса 
 време поготка: 0.5—1 циклус радног такта
 казна промашаја: 10—100 циклуса радног такта
 стопа промашаја: 0.01—1%

Ако 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 хардверу. На дугој листи таквих промена x86 архитектуре, TLB је последња.

Нормално, уноси у x86 TLB нису повезани са било којим адресним простором. Дакле, сваки пут када се врши промена у адресном простору, као што је контекстни прекидач, цео TLB мора да се испразни. Одржавање ознаке која ће повезивати сваки TLB унос са адресним простором у софтверу и упоређујући ову ознаку током TLB претраге и TLB пражњења је веома скупо, посебно јер је x86 TLB дизајниран да ради са веома малим кашњењем и потпуно у хардверу. Године 2008., и Intel (Nehalem) и AMD (SVM) су увели ознаке као део TLB уласка и наменски хардвер који проверава ознаке током претраживања. Иако нису у потпуности искоришћени, предвиђено је да у будућности, ове ознаке ће идентификовати адресни простор на коме сваки TLB унос припада. Стога контексни прекидач неће резултовати у TLB пражњењу; него само мења ознаку текућег адресног простора на ознаку адресног простора новог задатка.

Види још 
 Управљање меморијом
 Paging

Референце

Литература 
 

Рачунарска меморија
Централна процесорска јединица
Бафер асоцијативног превођења ( TLB ) ( ) је кеш меморија која користи MMU да побољша брзину превода виртуелног адресног простора . Сви тренутни десктоп , лаптоп и сервер процесори садрже један или више TLB-а у хардверу за управљање меморијом , и он је скоро увек присутан у било којем хардверу који подржава страничење или сегментацију виртуелне меморије . TLB је понекад имплементиран као контексно-адресибилна меморија ( CAM ) . Кључ претраге контексно-адресибилне меморије је виртуелна адреса а резултат претраге је физичка адреса . Уколико је тражена адреса присутна у TLB , CAM претрага брзо даје подударање и преузета физичка адреса може да се користи за приступ меморији . Ово се назива TLB погодак . Уколико тражена адреса није у TLB-у , то је промашај , и превод се наставља претрагом табеле страница у процесу који се назива \ . Page walk је скуп процес , јер подразумева читање садржаја више меморијских локација и користи их за израчунавање физичке адресе . Након што је утврђена физичка адреса помоћу Page walk-а , виртуелна адреса преко мапирања физичке адресе је унесена у TLB . Операција више заједничких TLB имплементација користи хеш табелу , слично као и имплементација CAM-а . Преглед Бафер асоцијативног превођења ( TLB ) има фиксиран број слотова који садрже следеће уносе : табеле страница , које мапирају виртуелне адресе у физичке адресе средње табеле адреса Сегментне табеле , које мапирају виртуелне адресе у сегментне адресе средње табеле адреса адерсе табела страница . Виртуелна меморија је простор гледано од стране процесора . Овај простор је често сегментиран у страницама фиксне величине . Табеле страница ( обично се чувају у меморији ) прате где се складиште виртуалне странице у физичкој меморији . TLB је кеш од табеле станица , то јест , само подскуп садржаја табеле странице је одржан у ТЛБ . Референцирање на физичке меморијске адресе , TLB се може налазити између CPU-a и кеша процесора , између кеша процесора и главне мемроје , или између више-нивоа кеша . Постављање одређује да ли ће кеш користити физичко или виртуелно адресирање . Ако је кеш виртуелно адресиран , захтев је послат директно од процесора кешу , и TLB је приступљено само на промашају кеша . Ако је кеш физички адресиран , процесор ради проналажење ТЛБ-а на свакој меморијској операцији и резултујућа физичка адреса се шаље кешу . У Харвардској архитектури , дели виртуелни адресни простор или хардверски приступ меморији може да постоји за инструкције и податке . То може да доведе до различитих бафера асоцијативног превођења за сваку врсту приступам као ITLB и DTLB . Заједничка оптимизација за физички адресиран кеш је да паралелно обави TLB претрагу са кеш приступом . Битови ниског реда сваке виртуелне меморије ( тј. у виртуелној меморији ) систем има странице одKB,најижих битова виртуелне меморије ) представљају офсет на жељену адресу унутар стране , и на тај начин они се не мењају у преводу витуелно-у-физичко . Током кеш приступа , обављају се два корака : индекс се користи да пронађе ставку у кеш меморији , а затим ознаке за пронађене кеш линије се пореде . Ако је кеш структуиран на такав начин да може бити индексиран користећи само битове који се не мењају у преводу , кеш може да обавља своју " индекс " операцију , док TLB преводи горње битове на адресу . Онда , преведа адреса од TLB -а се пребаци на кеш . Кеш врши поређење ознаке да одреди да ли је овај приступ био погодак или промашај . Могуће је да се изврши TLB проналажење паралелно са кеш приступом чак и ако кеш мора бити индексиран коришћењем неких битова који могу да се мењају на адреси превода ; видети секцију адресне промене у кеш чланку за више детаља о виртуелном адресирању које се односи на кеш и TLB . Последице перформанси CPU мора да приступи главној меморији за : инстукције кеш промашаја податке кеш промашаја TLB промашај Трећи случај ( најједноставнији случај ) , где је жељена информација заправо у кешу , али информација за виртуелно-у-физичко превођење није у TLB . Сви су подједнако спори , па програм " регулише " , TLB ће се изводити подједнако лоше као и једна инструкција регулисања или кеш податак . Зато је важно добро функционисање TLB-а . Вишеструки TLB Слично кешу , TLB може имати више нивоа . CPU може бити ( сада је угланом тако ) уграђен са вишеструким TLB-ом , на пример мали " L1 " TLB ( потенцијално потпуно асоцијативан ) је екстремно брз , а већи " L2 " TLB који је на неки начин спорији . Када се ITLB и DTLB користе , процесор може имати три ( ITLB1 , DTLB1 , TLB2 ) или четири бафера асоцијативног превођења . На пример , Интелова Nehalem микроархихектура има четворосмерни скуп асоцијативног L1 DTLB са уносом заKiB стране иуносом за4 MiB стране , L1 ITLB сауносом заKiB стране користе четворосмерну асоцијативност ипотпуно асоцијативних уноса за4 MiB стране ( оба дела ITLB су подељена статички између две нити ) and a unifiedentry L2 TLB forKiB pages , обаструко асоцијативна . Неки TLB могу имати одвојене секције за мале и велике странице . Руковање TLB промашајима Две шеме за руковање TLB промашајима се обично могу наћи у савременим архитектурама : Са хардверским управљањем TLB , процесор аутоматски пролази кроз табеле страница ( користећи CR3 регистар на x86 ) да види да ли има валидног уноса за специфичну виртуелну адресу . Ако унос постоји , доводи се у TLB и приступ TLB-а се поново покушава : овог пута погодиће се приступ , и програм може нормално да се процесира . Ако CPU пронађе не валидан унос за виртуелну адресу у табели страница , он подиже изузетак грешке стране , којим Оперативни систем мора да рукује . Руковање грешкама странице обично подразумева довођење жељеног податка у физичку меморију , постављање улаза табеле страна на мапирану нетачну виртуелну адресу на одговарајућу физичку адресу , и поновно покретање програма . Са хардверским управљањем бафером асоцијативног превођења , формат TLB уноса није видљив софтверу , па се може променити од процесора до процесора без изазивања губитка компатибилности за програме . Са софтверским управљањем TLB-ом , TLB промашај генерише изузетак - " TLB промашај " , и код ОС-а је одговоран за претрагу табеле страница и обављање превођења у софтверу . Оперативни систем затим учитава превод у TLB и рестартује програм са изузетком које је изазвао TLB промашај . Као и код хардверског управљања TLB-ом , ако ОС пронађе не валидан превод у табели страница , јавиће се грешка странице , и према томе ОС мора да рукује њом . Скуп инструкција процесора који има софтверско управљање TLB-ом има инструкције које дозвољавају учитавање уноса у било који слот у TLB-у . Формат TLВуноса је дефинисан као део скупа инструкција архитектуре ( ISA ) MIPS архихектура прецизира софтверско управљање TLB-ом ; SPARC V9 архихектура дозвољава имплементацију SPARC V9 да нема MMU , MMU са софтверским управљањем TLB-ом , или MMU са хардверским TLB управљањем , и UltraSPARC архихектура прецизира софтверско TLB управљање ; . Itanium архитектура пружа могућност коришћења софтверског или хардверског управљања бафером асоцијативног превођења . У Alpha архихектури TLB-ом се управља у PALcode , пре него у ОС-у . PALcode за процесор може бити специфичан за процесор и оперативни систем , ово омогућава да различите верзије PALcode спроведу различите формате табеле страница за различите оперативне системе , без захтева тог TLB формата и упутства за контролу TLB -а . Типичан TLB Ово су типичне перформансе нивоа TLB-а : величина:4,096 уноса време поготка:5—1 циклус радног такта казна промашаја:100 циклуса радног такта стопа промашаја:01—1% Ако TLB погодак узмециклус радног такта , промашај узмециклуса радног такта , и стопа промашаја је , ефективна стопа меморијског циклуса је просек од× 0.99 + ( 1 + 30 ) × 0.01 = 1.3030 циклуса радног такта по меморијском приступу ) . Контексни прекидач На контексном прекидачу , неки TLB уноси могу постати неважећи , јер је виртуелно-у-физичко мапирање другачије. најједноставнија стратегија да се ово реши је да се потпуно испразни TLB . Новији процесори користе боље стртегије маркирајући који процес уноса је за . То значи да ако други процес траје само кратко време и скочи назад на први процес , ипак може имати валидне ставке , тиме штедећи време да их поново учита . На пример у Alpha сваки TLB унос је означен са " бројем адресног простора " ( ASN ) , и само TLB уноси са ASN подударањем тренутног задатка се сматрају важећим . Други пример је Intel Pentium Pro , PGE заставица у регистру CR4 и G заставица странице-директоријума или странице-табеле уноса може да се користи за спречавање да често коришћене странице буду аутоматски поништене у TLB-у на замену таскова или учитавање регистра CR3. Док је селективно пражњење TLB-а опција у софтверском управљању TLB-ом , једина опција у неким хардверским TLB-а ( на пример , TLB у Intel је комплетно пражњење TLB на контексном прекидачу . Други хардверски бафери асоцијативног превођења ( нпр , TLB у Intelи касније x86 процесори , и TLB уARM процесорима ) омогућавају пражњење појединих ставки из индексираних TLB од стане виртуелне адресе . Виртуелизација и x86 TLB Са појавом виртуализације за консолидацију сервера , много труда је отишло чинећи x86 архитектуру лакшом за виртуелизацију и да се обезбеде боље перформансе виртуелних машина на x86 хардверу . На дугој листи таквих промена x86 архитектуре , TLB је последња . Нормално , уноси у x86 TLB нису повезани са било којим адресним простором . Дакле , сваки пут када се врши промена у адресном простору , као што је контекстни прекидач , цео TLB мора да се испразни . Одржавање ознаке која ће повезивати сваки TLB унос са адресним простором у софтверу и упоређујући ову ознаку током TLB претраге и TLB пражњења је веома скупо , посебно јер је x86 TLB дизајниран да ради са веома малим кашњењем и потпуно у хардверу . Године , и Intel ( Nehalem ) и AMD ( SVM ) су увели ознаке као део TLB уласка и наменски хардвер који проверава ознаке током претраживања . Иако нису у потпуности искоришћени , предвиђено је да у будућности , ове ознаке ће идентификовати адресни простор на коме сваки TLB унос припада . Стога контексни прекидач неће резултовати у TLB пражњењу ; него само мења ознаку текућег адресног простора на ознаку адресног простора новог задатка . Види још Управљање меморијом Paging Референце Литература Рачунарска меморија Централна процесорска јединица