Jednotka správy paměti

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Memory management unit (MMU) je dnes součást CPU, dříve samostatná hardwarová součástka, umožňující procesoru přístup do operační paměti. Svojí funkcí zajišťuje překlad virtuální adresy na fyzickou, ochranu paměti, kontrolu cache, arbitraci sběrnice a v závislosti na architektuře také přepínání mezi paměťovými bankami.

Funkce[editovat | editovat zdroj]

MMU jednotky rozdělují virtuální adresní prostor na stránky. Velikost každé stránky se rovná mocnině čísla 2, obvykle několika KiB, nicméně může být i mnohem větší. Dolních n bitů z adresy (ofset bez čísla stránky) zůstávají beze změny. Horní bity z adresy označují číslo virtuální stránky. MMU překládá číslo virtuální stránky na fyzickou stránku nejprve pomocí asociativní cache paměti, nazývané TLB (Translation Lookaside Buffer). Pokud se požadovaná stránka v TLB nevyskytuje, je spuštěn pomalejší mechanismus, vyhledávání v tabulce stránek (EAT). Fyzické číslo stránky je zkombinováno s číslem rámce stránky (hodnota v tabulce stránek), což vytvoří kompletní fyzickou adresu. Položka v tabulce stránek, nebo TLB může také obsahovat informaci, zdali je na vybrané stránce zapsána nějaká informace, doba posledního použití, či přístupová oprávnění (uživatelský, nebo privilegovaný mód). Tyto informace mohou být využity mechanismem pro plánování procesů.

Občas položka TLB, nebo tabulka stránek neumožní přístup na virtuální stránku. To může být způsobeno tím, že na zvolené virtuální stránce není adresována žádná fyzická paměť (což bývá často důsledek softwarové chyby), anebo proto, že je požadovaná stránka odsunuta na disku. V tom případě vyšle MMU řadiči zprávu o výpadku stránky. Operační systém poté vykoná patřičnou obsluhu přerušení. Pokud ještě je v operační paměti volné místo, provede se přemapování a použité virtuální číslo stránky je nastaveno na novou fyzickou adresu. Pokud již volné místo v operační pamětí není, je pro účel přemapování zvolena "nahrazovacím" algoritmem existující stránka, s tím že původní data jsou uložena na pevný disk. Výhodná vlastnost MMU je také eliminace problému s fragmentovanou pamětí. Souvislý blok virtuálních adres může totiž být namapován na více bloků fyzické paměti, které nemusí být uloženy vcelku. Kromě toho může být každému procesu přidělen virtuální adresní prostor, do kterého nemají přístup ostatní procesy.

Přínos[editovat | editovat zdroj]

V nekterých případech může být chyba stránky označovaná za softwarovou chybu. Klíčovým přínosem MMU je ochrana paměti: OS může použít MMU k ochraně proti chybným programům, kterým znemožní přístup do paměti. Znamená to, že OS přiděluje každému programu svůj vlastní adresový prostor. MMU také zmírňuje problém fragmentace paměti. Potom co byli přiděleny bloky paměti a následné uvolněny, volná paměť může začít s fragmentací(přerušovanou), tak že největší souvislý blok volné paměti může být mnohem menší než celková velikost uvolněné paměti. Souvislý rozsah adres virtuální paměti, může být mapován na několik nesousedících bloků fyzické paměti. U prvních návrhů mikroprocesorů se správa paměti prováděla v samostatném integrovaném obvodu, jako je VLSI VI475 (1986), Motorola 68851(1984). Později mikroprocesory (například Motorola 68030 a Zilog Z280) umístili MMU spolu s CPU na stejný integrovaný obvod, stejně jako Intel 80286 a později x86 mikroprocesory.


Příklady[editovat | editovat zdroj]

Většina moderních systému rozděli paměť na stránky, které jsou 4-64 KB velké, často s možností využít obrovské stránky od 2 MB do 512MB. Stránka překladů je uložena v tzv. Translation Lookaside Buffer (TLB). Některé systémy, zejména starší RISC, byli v pasti, když nemohli najít stránku s překladem v TLB. Většina systému povoluje vypnout MMU.

VAX

Stránky VAX jsou velké 512 B , což je velmi malé. OS tak může zacházet s více stránkamy, jako s jednou velkou. Například,Linux má VAX skupiny po osmi strankách. To znamená, že systém pracuje s 4KB stránkou. VAX rozděluje paměť na čtyři pevně určené oblasti, každá o velikosti 1 GB. Jsou to:

  P0 prostor:používá se pro všeobecné účely dle procesu paměti, jako jsou haldy
  P1 prostor:(nebo také kontrolní prostor), který je také na procesu a obvykle se používá pro jádro, ... 
              a jiných procesů kontrolních struktur, které řídí operační systém.
  S0 prostor: (nebo také systémový prostor), který je globální pro všechny procesy operačního systému.
  S1 prostor: který je nepoužitý a je rezervován pro Digital.

Tabulky stránek jsou velké lineární pole. Za normálních okolností by to bylo velmi nehospodárné, pokud jsou adresy na obou stranách možného rozsahu, ale tabulka stránek pro aplikace je sama o sobě uložena v paměti stránkového linuxového jádra. Zde je dvou-úrovňový strom, umožňující aplikacím mít menší rozložoní paměti bez plýtvání místa na nevyužité položky stránkovací tabulky. VAX MMU se vyznačuje nedostatkem přístupový bit. Operační systémy, které implementují stránkování musí najít nějaký způsob, jak emulovat přístupový bit, jestliže má fungovat efektivně. Typicky, OS nebude pravidelně mapovat stránky tak že stránka bez přítomnosti poruchy může být použita aby OS nastavil přístupový bit.

MIPS

MIPS architektura podporuje až 64 zánznamů v TLB. Počet záznamů je konfigurovatelný v konfiguraci CPU před syntézou. TLB záznamy jsou dvojí. Každá položka TLB mapuje číslo virtuální stránky (VPN2) do jednoho ze dvou rámců (PFN0 nebo PFN1), v závislosti na nejmenším významovém bitu virtuální adresy. Tento bit a neni uložen v VPN2. Každá položka má vlastní velikost stránky, která může být libovolně velká od 1 KB do 256MB v násobcích po 4. Každý PFN v TLB záznamu má atribut cache a status bit. VPN2 má globální status bit a OS přiřazené ID, které je součástí virtuální adresy TLB záznamu. V případě že je tento bit v nule, PFN ukládá fyzickou adresu.

X86-64

x86-64 je 64-bitové rozšíření x86, které téměř úplně odstranilo segmentace. Je to použito téměř ve všech operačních systémech pro procesory 386 nebo novější. V dlouhodobém režimu jsou všechny segmentové kompenzace ignorovány s vyjímkou částí FS a GS. Při použití U 4KB stránek má tabulkový strom čtyři úrovně místo tří. Virtuální adresy jsou rozděleny takto: 16 bitů nepoužité, 9 bitů pro každou ze čtyř úrovní stromu(celkme 36) a 12 nejnižších bitů se přímo zkopíruje do výsledků. U 2 MB stránek má tabulkový strom pouze tři úrovně pro celkově 27 bitů. Některé novější CPU podporují 1 GB stránky s dvěma úrovněmi pro 30 bitů.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

Související články[editovat | editovat zdroj]