Plochý paměťový model - Flat memory model

Plochý paměťový model nebo lineární paměťový model odkazuje na paradigma adresování paměti, ve kterém „se paměť programu jeví jako jediný souvislý adresní prostor .“ CPU může přímo (a lineárně ) adresy všech dostupných paměťových míst, aniž by musely sáhnout k nějakým druhem segmentace paměti nebo stránkovací schémat.

Správu paměti a překlad adres lze stále implementovat na model ploché paměti, aby se usnadnila funkčnost operačního systému , ochrana zdrojů, multitasking nebo aby se zvýšila kapacita paměti nad limity stanovené fyzickým adresovým prostorem procesoru, ale klíčovým rysem modelu ploché paměti je, že celý paměťový prostor je lineární, sekvenční a souvislý.

V jednoduchém řadiči nebo v integrované aplikaci s jedním úkolem , kde není potřeba ani žádoucí správa paměti, je nejvhodnější model ploché paměti, protože poskytuje nejjednodušší rozhraní z pohledu programátora s přímým přístupem k celé paměti umístění a minimální složitost designu.

V obecném počítačovém systému, který vyžaduje multitasking, přidělování prostředků a ochranu, musí být systém ploché paměti rozšířen o nějaké schéma správy paměti, které je obvykle implementováno kombinací vyhrazeného hardwaru (uvnitř nebo vně CPU) a softwaru vytvořeného do operačního systému. Model ploché paměti (na úrovni fyzického adresování) stále poskytuje největší flexibilitu pro implementaci tohoto typu správy paměti.

Většina architektur procesorů implementuje design ploché paměti, včetně všech časných 8bitových procesorů, řady Motorola 68000 atd. Jedinou výjimkou byl původní 1686bitový mikroprocesor Intel 8086 , který implementoval hrubý segmentovaný model paměti, který umožňoval přístup na více než 64 KiB paměti bez nákladů na rozšíření všech adres na více než 16 bitů.

Paměťové modely

Většina moderních paměťových modelů spadá do jedné ze tří kategorií:

Plochý paměťový model

  • Jednoduché rozhraní pro programátory, čistý design
  • Největší flexibilita díky jednotné rychlosti přístupu (přepínače stránek se segmentovanou pamětí obvykle způsobují různou latenci kvůli delšímu přístupu na jiné stránky, a to buď kvůli extra logice CPU při změně stránky, nebo hardwarovým požadavkům)
  • Minimální hardware a CPU nemovitostí pro jednoduché aplikace řadičů
  • Maximální rychlost provedení
  • Není vhodný pro běžné výpočetní nebo multitaskingové operační systémy, pokud není vylepšen o další hardware / software pro správu paměti; ale to je téměř vždy případ moderních procesorů CISC , které implementují pokročilou technologii správy a ochrany paměti přes model ploché paměti. Linux např. Používá model ploché paměti, viz # Postupy segmentace paměti x86 .

Stránkovaný model paměti

  • Vhodné pro multitasking, obecný design operačního systému, ochranu zdrojů a přidělování
  • Vhodné pro implementaci virtuální paměti
  • Více nemovitostí CPU, poněkud nižší rychlost
  • Složitější programování
  • Pevné hranice stránky, ne vždy paměťově nejefektivnější
  • Toto je paměťový model Pentium Pro a novější procesory x86, které se používají v 32bitovém režimu adresování při adresování paměti pomocí 36bitových adres. Říká se tomu Rozšíření fyzické adresy

Segmentovaný paměťový model X86

  • Podobně jako stránkovaná paměť, ale stránkování je dosaženo implicitním přidáním dvou relativně posunutých registrů: segment: offset
  • Variabilní hranice stránky, efektivnější a flexibilnější než stránkovaný model paměti
  • Z pohledu programátora docela složité a trapné
  • Složitější pro kompilátory
  • Stránky se mohou překrývat / špatná ochrana zdrojů a izolace
  • Korespondence překladu více adres na jednu adresu: Mnoho kombinací segment: offset se vyřeší na stejnou fyzickou adresu
  • Větší šance na chyby programování
  • Implementováno v původních procesorech Intel 8086, 8088 , 80186 , 80286 a podporováno 80386 a všemi následujícími x86 stroji až po dnešní procesory Pentium a Core 2 . Tento paměťový model od té doby zůstal na strojích x86, které nyní poskytují vícerežimový provoz a zřídka pracují v kompatibilním segmentovém režimu. Podrobnosti najdete v segmentaci paměti x86 .

V rámci architektur x86 se při provozu v reálném režimu (nebo emulaci) počítá fyzická adresa jako:

Adresa = 16 × segment + offset

(Tj. 16bitový segmentový registr je posunut doleva o 4 bity a přidán k 16bitovému posunu, což má za následek 20bitovou adresu.)

Viz také

Reference