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