8080 – architektura

Než se podíváme na jednotlivé instrukce, ukážeme si, co v takovém procesoru 8080 vlastně je a jak to můžeme použít.

Procesor 8080 byl uveden na trh v roce 1974. Bohužel, trpěl několika nedostatky, z nichž snad největší bylo to, že výstupy procesoru snesly jen malé zatížení. Brzy přišla varianta 8080A, která byla naprosto totožná co do vývodů a instrukcí, ale měla posílené vývody a byla rychlejší. Když se dneska hovoří o mikroprocesoru 8080, má mluvčí na mysli nejčastěji právě „áčkovou“ variantu.

Mikroprocesor 8080 byl v jednom pouzdře DIL se 40 vývody.

 

Z těchto 40 vývodů bylo 16 pro adresovou sběrnici (A0-A15), 8 pro datovou (D0-D7), 4 piny sloužily k napájení (zem, +5V, +12V, -5V) a zbytek byly řídicí signály(RESET, INT, WR apod.)

Mikroprocesor pro svou činnost vyžadoval dva podpůrné obvody – 8224, který se staral o správné generování a fázování hodin, a 8228, který posiloval datovou sběrnici a zároveň se staral o generování řídicích signálů MEMR, MEMW, IOR, IOW a dalších. (MEMx obsluhovaly paměť, IOx vstupně-výstupní zařízení, R znamenalo čtení, W zápis).

Díky šestnácti adresním linkám může mikroprocesor adresovat paměť o kapacitě 64kB (2^16). Z paměti může přenést osmibitové slovo (tedy hodnotu 0-255).

Architektura 8080

V procesoru se nachází několik základních bloků:

  • Časovací a řídicí obvody se starají o správnou synchronizaci ostatních částí, o správné vyhodnocení řídicích signálů, co přicházejí zvenčí, a o posílání stavových informací ven.
  • Registr instrukcí drží instrukční kód, načtený z paměti, dokud jej nezpracuje dekodér.
  • Dekodér instrukcí rozloží instrukční kód na posloupnost základních operací, o jejichž provedení se postará řadič.
  • ALU, neboli aritmeticko-logická jednotka se stará o základní matematické operace (sčítání, odčítání, AND, OR, XOR) s osmibitovými čísly.
  • Akumulátor (též registr A) je osmibitový pracovní registr procesoru. S ním se provádí naprostá většina operací, zejména aritmetické, logické či porovnávací.
  • Pracovní registry B, C, D, E, H a L jsou registry, které může programátor využít pro dočasné uložení hodnot. Jsou opět osmibitové. Některé instrukce ale dokážou pracovat s tzv. registrovým párem – v takovém případě se berou registry B a C, resp. D a E / H a L jako jeden šestnáctibitový registr. Pár registrů H a L je často používán pro uložení adresy při nepřímém adresování – např. „do akumulátoru se přesouvá hodnota, která je uložena v paměti na adrese, uložené v registrech HL“.
  • Ukazatel zásobníku, zvaný též registr SP, je šestnáctibitový registr, v němž je uložena adresa tzv. zásobníku. Více si o jeho funkci řekneme v kapitole o podprogramech.
  • Programový čítač (registr PC) je šěstnáctibitový registr, v němž je uložena adresa, z níž procesor čte instrukci. Po přečtení instrukce se zvýší o 1, 2 nebo 3, takže ukazuje na další instrukci. (Záleží na délce instrukce)
  • Příznakový registr F není pro většinu instrukcí samostatně přístupný. Obsahuje několik tzv. příznakových bitů, které udržují informaci o tom, jestli poslední výsledek byl 0, jestli byl záporný, jestli při výpočtu přetekla hodnota přes hranici 255 (nebo pod 0) atd. Podle těchto bitů pak může procesor vykonat tzv. podmíněné instrukce.

Krom těchto částí obsahuje procesor i další skryté registry (W, Z, ACT), ke kterým ale nemá programátor přístup. Mikroprocesor je používá pro ukládání mezivýsledků dle své potřeby.

Operace, cykly T, M

Po zapnutí napájení nebo po signálu RESET je procesor uveden do základního stavu. Je zakázáno přerušení (k pojmu přerušení se dostaneme později) a do registru PC (šestnáctibitový ukazatel na instrukci) je uložena nula. Ostatní registry mají obsah takový, jaký měly před RESETem (po zapnutí napájení tedy náhodný).

Hodiny běží… Co se v procesoru děje?

Probíhá první strojový cyklus (zvaný M1). V tomto cyklu procesor pošle na adresovou sběrnici obsah registru PC (teď to je 0), zvýší obsah tohoto registru o 1 a pošle požadavek „čtení z paměti“ (MEMR). Systém okolo by se měl postarat, aby na tento požadavek odpověděla paměť a poslala po datové sběrnici obsah na dané adrese. Mikroprocesor si tento obsah přečte, uloží do registru instrukcí, dekóduje a provede požadovanou činnost. Někdy není potřeba žádný dodatečný čas, jindy se například zapisuje do paměti nebo z ní čte, takže procesor zařadí některé z cyklů M2, M3, M4, M5. Po dokončení instrukce se celý proces opakuje.

V případě, že instrukce vyžaduje nějaký parametr, následují cykly čtení z paměti. Instrukce může jako parametr požadovat 1 nebo 2 bajty. Ty jsou načteny z adresy PC+1 a PC+2. PC je zvýšen o 2 nebo 3. Instrukce je pak provedena (což si opět může vyžádat nějaké strojové cykly) a po jejím dokončení se celý proces zase opakuje.

Strojový cyklus M1 se skládá ze čtyř nebo pěti taktů systémových hodin. Protože každá instrukce obsahuje vždy cyklus M1, v němž je načtena a dekódována, tak je jasné, že nejrychlejší instrukce zabere čtyři hodinové cykly (zapisuje se jako 4T). Pokud běží hodiny na frekvenci 2MHz, tak budou ty nejrychlejší instrukce prováděny s frekvencí 500kHz (tj. každá bude trvat 2 mikrosekundy). Nejpomalejší instrukce zaberou 18 taktů (18T). Informace o tom, jak je která instrukce „dlouhá“ (tj. kolik T trvá procesoru, než ji zpracuje) je důležitá ve chvíli, kdy je třeba optimalizovat kód a zrychlit jej.

Líbil se vám článek? Podpořte autora na Patreonu
Příspěvek byl publikován v rubrice 8080. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

2 komentáře u 8080 – architektura

  1. Roman Bórik napsal:

    >> Jsou vynulovány registry a do registru PC (šestnáctibitový ukazatel na instrukci) je uložena nula. <<

    Aj keď to nie je zásadná vec, s ktorou by niekto bežne počítal, musím upresniť jeden detail. Po signále RESET sa nuluje iba register PC a zakazuje sa prerušenie. Ostatné pracovné registre (vrátane akumulátora) sa nemenia a teda majú obsah rovnaký, ako pred príchodom signálu RESET. Ak prichádza signál RESET po pripojení napájania, nie je obsah pracovných registrov definovaný.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *