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é
- Nízká paměť - prvních 64 kB paměti (segment 0) v systému DOS
- Přemístění hranice stránky
Reference
Další čtení
- Bray, Andrew C .; Dickens, Adrian C .; Holmes, Mark A. (1983). Pokročilá uživatelská příručka pro mikropočítač BBC (3. vydání). Mikropočítačové centrum Cambridge. ISBN 0-946827-00-1.
- Roth, Richard L. (únor 1978) [1977]. „Přemístění není jen přesun programů“ . Dr. Dobba . Sv. 3 č. 2. Ridgefield, CA, USA: People's Computer Company . s. 14–20 (70–76). ISBN 0-8104-5490-4. #22. Archivováno od originálu na 2019-04-20 . Citováno 2019-04-19 .
- „1. Úvod: Zarovnání segmentů“. 8086 Family Utilities - Uživatelská příručka pro vývojové systémy založené na 8080/8085 (PDF) . Revize E (A620/5821 6K DD ed.). Santa Clara, Kalifornie, USA: Intel Corporation . Květen 1982 [1980, 1978]. p. 1-6. Objednací číslo: 9800639-04. Archivováno (PDF) z originálu na 2020-02-29 . Citováno 2020-02-29 .