Memory Type Range Registers

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

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

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

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ů.