Memory Type Range Registers

Z Wikipedie, otevřené encyklopedie

Memory Type Range Registers (zkratka MTRR) je v informačních technologiích sada řídících registrů procesoru, které poskytují doplňující informace o tom, jak se má pracovat s pamětí cache při přístupu do různých oblastí operační paměti. Využívá sadu programovatelných registrů, které jsou specifické pro daný procesor (Model-specific register, MSR) a jsou k dispozici ve většině moderních procesorů.

Režimy paměti cache[editovat | editovat zdroj]

Možné módy přístupu do oblastí paměti jsou:

  • uncached (bez účasti cache)
  • write-through
  • write-combining – data jsou střádána v cache, aby mohla být později přenesena ve větších blocích, u zápisů do grafické paměti může zvýšit rychlost až 2,5×
  • write-protect
  • write-back – data jsou zapsána do cache, ta je označena jako „špinavá“ (anglicky dirty) a až později jsou zapsána do operační paměti

U procesorů x86-64 jsou doplňující bity použity pro využití stínové paměti ROM (anglicky shadow ROM) a pro paměťově mapované I/O.

MTRRs v x86 procesorech[editovat | editovat zdroj]

U dřívějších systémů s x86 architekturou, zejména tam kde cache byla realizována samostatnými čipy mimo CPU, je tato funkce řízena chipsetem a konfigurována přes nastavení BIOSu.

Když byla CPU cache přesunuta dovnitř CPU, procesory implementovaly pevně daný rozsah MTRRs. Ten pokryje první megabyte paměti, aby byla kompatibilní s tím, co v tom okamžiku poskytuje PC-BIOS. Toto se používá pro kontrolu cache politiky potřebné pro VGA přístupy a všechny ostatní paměťové přístupy provedené, když je systém v reálném módu.

Procesory poskytují přes první MiB počet variabilních rozsahů MTRRs, které mohou být volně umístěné a dokonce se překrývat. Tyto variabilní rozsahy MTRRs mohou být použity k nastavení cachovací politiky grafické paměti a ostatních paměťových rozsahů požívaných PCI zařízením.

Počínaje rodinou Intel P6 procesorů (Pentium Pro, Pentium II a pozdějších), mohou být MTRRs použity pro kontrolu přístupu procesoru do paměti.

Cyrix 6x86, 6x86MX a MII procesory mají ARRs (Address Range Registers), které poskytují podobné funkce jako MTRRs.

AMD K6-2 (stupňování 8 a vyšší) a K6-III procesory mají dva MTRRs. AMD Athlon rodina poskytuje 8 druhů Intel MTRRs.

Centaur C6 WinChip má 8 MCRs, umožňující write-combining.

VIA Cyrix III a VIA C3 procesory, nabízí 8 Intel druhů MTRRs.

Paměťové rozhraní procesorů AMD K8 podporuje Rozšířený pevný rozsah MTRR kódování typu pole (Extended fixed-range MTRR Type-Field Encodings). To určuje, zda přístupy k určitému adresovému rozsahu jsou prováděny přístupem RAM přes "přímo propojenou architekturu" (Direct Connect Architecture), nebo je vykonává paměťově mapovaný I/O. To umožňuje například implementaci stínové paměti (Shadow RAM) kopírováním obsahu ROM do paměti RAM.

Nastupující technologie[editovat | editovat zdroj]

Novější x86 procesory (zejména 64bitové) podporují vyspělejší techniku nazvanou Page Attribute Tables, která umožňuje nastavit režim pro každou tabulku stránek zvlášť, místo použití omezeného počtu registrů s hrubým rozlišením regionů paměti. Hodí se zejména pro současné systémy, které používají 8GB paměti i na notebooku a ještě více v desktopech nebo serverech. Detailní podrobnosti, jak MTRRs pracují, jsou popsány v manuálech procesorů.