Paměťový model
Paměťový model je schéma adresování paměti použité v určité aplikaci. U nejstarších procesorů se při adresování paměti nerozlišovaly logické a fyzické adresy. Některé procesory mohou používat delší adresy než je velikost registrů a novější procesory mohou obsahovat jednotku správy paměti, která operačnímu systému usnadňuje správu paměti, a přináší možnost využívat různé metody adresování, různé délky adres a různé metody transformace adres, které se projevují v aplikacích jako používání různých paměťovým modelů.
Nejeden programátor upřednostňuje ploché rozložení paměti (anglicky flat memory model), což je model adresace, při kterém není rozlišován prostor pro strojový kód, data a virtuální pamětí. Jinak řečeno, číselně shodné ukazatele odkazují vždy na jeden a ten samý bajt RAM ve všech třech adresních prostorech.
Mnohé rané počítače ovšem ploché rozložení paměti nepodporovaly. Například stroje založené na harvardské architektuře vyžadovaly, aby úložiště strojového kódu bylo fyzicky oddělené od úložiště dat.
Dnešní moderní digitální signálové procesory (jako například Motorola 56000) mají tři oddělená úložiště – pro strojový kód (anglicky program storage), společné úložiště (anglicky coefficient storage) a úložiště dat (anglicky data storage). Některé z běžných instrukcí získávají data ze všech tří úložišť zároveň – menší počet úložišť (i kdyby tato v součtu byla o shodné velikosti) by výrazně zpomalila běh těchto instrukcí.
Modely adresace v raných x86 procesorech
[editovat | editovat zdroj]První počítače založené na architektuře x86 přistupovaly k adrese s využitím dvou čísel: segmentu paměti a offsetu (posunu od začátku) v daném segmentu. S některými segmenty bylo automaticky nakládáno jako se segmenty kódu – tyto pak byly vyhrazeny pro instrukce programu. Jiné byly nazývány segmenty zásobníku, další pak datovými segmenty. Ačkoli účel těchto segmentů byl různý, jejich rozdílné použití nebylo pomocí ochrany paměti chráněno a vyžadováno.
Ploché rozložení paměti je dnes preferovaným řešením pro mnoho programátorů. Začátky segmentů jsou nastaveny na nulu (první bajt virtuální paměti) a pro adresaci se používají pouze offsety (posunutí, indexy od začátku paměti). Ochranu pak v moderních operačních systémech, zejména na architektuře x86, zajišťuje technika stránkování paměti.