Nulová stránka - Zero page

Nula strana nebo základna strana je blok paměti na počátku z počítače ‚s adresního prostoru ; tj. stránka, jejíž počáteční adresa je nula. Velikost stránky závisí na kontextu a význam paměti s nulovou stránkou oproti vyšší adresované paměti je velmi závislý na architektuře počítače. Například Motorola 6800 a MOS Technology 6502 procesorové rodiny léčit prvních 256 bajtů z paměti zvlášť, zatímco mnoho jiných procesorů ne.

Na rozdíl od modernějšího hardwaru byla v 70. letech RAM počítače stejně rychlá nebo rychlejší než CPU. Proto dávalo smysl mít málo registrů a používat hlavní paměť jako rozšířený fond dalších registrů. V počítačích s relativně širokou 16bitovou adresovou sběrnicí a srovnatelně úzkou 8bitovou datovou sběrnicí by přístup k nulovým umístěním stránek mohl být rychlejší než přístup k jiným umístěním.

Adresování nulové stránky má nyní většinou historický význam, protože vývoj technologie integrovaných obvodů způsobil, že přidání více registrů na CPU je levnější a operace CPU mnohem rychlejší než přístup k RAM.

Velikost

Skutečná velikost nulové stránky v bajtech je určena návrhem mikroprocesoru a ve starších provedeních se často rovná největší hodnotě, na kterou lze odkazovat registry indexování procesoru. Například výše uvedené 8bitové procesory mají 8bitové indexové registry a velikost stránky 256 bajtů. Jejich nulová stránka proto sahá od adresy 0 do adresy 255.

Počítače s několika registry CPU

V raných počítačích, včetně PDP-8 , měla nulová stránka speciální režim rychlého adresování , který usnadňoval její použití pro dočasné ukládání dat a kompenzoval relativní nedostatek registrů CPU . PDP-8 měl pouze jeden registr, takže adresování nulové stránky bylo zásadní.

Na rozdíl od modernějšího hardwaru byla v 70. letech RAM počítače stejně rychlá nebo rychlejší než CPU. Proto dávalo smysl mít málo registrů a používat hlavní paměť jako rozšířený fond dalších registrů. V počítačích s relativně širokou 16bitovou adresovou sběrnicí a srovnatelně úzkou 8bitovou datovou sběrnicí by přístup k nulovým umístěním stránek mohl být rychlejší než přístup k jiným umístěním. Vzhledem k tomu, že umístění nulové stránky by bylo možné řešit jediným bajtem , mohly by být pokyny k nim přístup menší a rychlejší načítání.

Například technologie MOS 6502 má pouze jeden obecný registr (akumulátor). Aby se tato slabina vykompenzovala a získala výkonnostní výhoda, byla navržena tak, aby speciálně využívala nulovou stránku, poskytovala speciální pokyny, které jsou menší, což vyžaduje méně cyklů načítání paměti a rychlejší spouštění. Mnoho pokynů je pro adresy nulové stránky a nenulové stránky kódováno odlišně:

 LDA $00            ; zero page
 LDA $0000          ; non-zero page

Výše uvedené dvě instrukce oba dosahují stejného: načtou hodnotu místa v paměti $ 00 do registru .A (akumulátoru). První instrukce je však dlouhá pouze dva bajty a k dokončení vyžaduje tři cykly hodin. Druhá instrukce je dlouhá tři bajty a ke spuštění vyžaduje čtyři hodinové cykly. Tento rozdíl v době provádění může být v opakujícím se kódu značný.

Nulové ukazatele

Na rozdíl od původního preferenčního použití nulové stránky některé moderní operační systémy jako FreeBSD , Linux a Microsoft Windows ve skutečnosti znepřístupňují nulovou stránku, aby zachytila ​​použití nulových ukazatelů . Takové hodnoty ukazatelů mohou legitimně označovat neinicializované hodnoty nebo sentinelové uzly , ale neodkazují na platné objekty. Chybový kód se může pokusit o přístup k objektu pomocí nulového ukazatele, což může být chyceno na úrovni operačního systému jako narušení přístupu do paměti .

Přerušit vektory

Některé počítačové architektury si však počátek adresního prostoru stále vyhrazují pro jiné účely; například systémy Intel x86 rezervují prvních 256 dvojitých slov adresního prostoru pro tabulku vektorů přerušení (IVT), pokud běží v reálném režimu .

Podobná technika použití nulové stránky pro hardwarově související vektory byla použita v architektuře ARM. Ve špatně napsaných programech by to mohlo vést k chování „ofla“, kdy se program pokusí přečíst informace z nezamýšlené oblasti paměti a považuje spustitelný kód za data nebo naopak. To je obzvláště problematické, pokud je k ukládání vektorů systémových skoků použita oblast nulové stránky a firmware je podveden k jejich přepsání.

CP/M

V 8bitovém CP/M slouží nulová stránka ke komunikaci mezi běžícím programem a operačním systémem.

Adresování stránky

V některých architekturách procesorů, jako je 4bitový procesor Intel 4004 , byla paměť rozdělena na stránky (256 bajtů) a při řízení toku překračovaly hranice stránky zvláštní opatření , protože některé pokyny ke stroji vykazovaly odlišné chování, pokud se nacházejí v několik posledních pokynů na stránce, takže pro přeskakování mezi stránkami bylo doporučeno jen několik pokynů.

Viz také

Reference

Další čtení