Architektúra mikroprocesora (po anglicky)
Dobová reklama spoločnosti Intel v časopise *Electronics* z mája 1974
Tesla MHB8080A v plastovom puzdre
Tesla MHB8080AC v keramickom puzdre
Sovietsky klon 580ВМ80 v keramickom puzdre
**Intel 8080** je 8-bitový mikroprocesor firmy Intel, uvedený na trh v apríli 1974, čiastočne spätne kompatibilný s mikroprocesorom Intel 8008.

História
--------

Dva roky po uvedení 8008 sa v apríli 1974 objavil na trhu mikroprocesor 8080 s hodinovou frekvenciou 2 MHz. Na nasledujúce štyri roky ovládol trh a dominoval mikroprocesorovému priemyslu. Procesor mal však aj veľký nedostatok: malú zaťažovaciu schopnosť budičov zberníc, kvôli čomu bol už po pár mesiacoch nahradený procesorom 8080A, u ktorého došlo taktiež k zmene technológie z PMOS na NMOS, čo prinieslo určité zvýšenie rýchlosti. Takmer vždy, keď sa hovorí o procesore 8080, myslí sa v skutočnosti na procesor 8080A. 8080 bol prvý mikroprocesor dostatočne výkonný na to, aby sa dal použiť ako jadro počítača a všeobecne bol považovaný za prvý skutočne použiteľný mikroprocesorový dizajn. Používal sa v mnohých prvých počítačoch: MITS Altair 8800, IMSAI 8080. Bol základom pre stroje bežiace pod operačným systémom CP/M. Vyznačoval sa spätnou kompatibilitou s 8008.

Klony a tzv. second cource 8080 čipy vyrábali firmy AMD, National, Siemens, Texas Instruments. Procesor bol taktiež populárny vo Východnom bloku. Klony sa vyrábali v Sovietskom zväze pod označením K580IK80, v Poľsku ho produkoval závod UNITRA CEMI a niesol označenie 7880. Aj česko-slovenský procesor MHB8080A, vyrábaný v Tesle Piešťany, resp. licenčne v maďarskom Tungsrame a použitý v množstve dobových počítačov (PMI-80, PMD 85, Didaktik Alfa a Beta, PP01 – 03, IQ 151, Consul 2717, MAŤO, Plan 80, …), taktiež patril ku klonom 8080.

Jeden z kľúčových vývojárov 8080, Federico Faggin (zodpovedný za layout čipu), po odchode z Intelu založil spoločnosť Zilog, kde pokračoval vo vývoji 8080 a vyvinul procesor Z80, ktorý je plne nadol kompatibilný s 8080. Tento krok zrejme vyvolal nevôľu vedenia Intelu, keďže v oficiálnych materiáloch Intela dnes nie je ani jediná zmienka o Fagginovi. Intel pritom pokračoval vo vývoji 16-bitovými procesormi 8086/8088, ktoré však už neboli s 8080 binárne kompatibilné, avšak Intel inzeroval kompatibilitu na úrovni zdrojových kódov.

Technické parametre
-------------------

Prvá verzia 8080 pracovala na technológii PMOS a dosahovala hodinovú frekvenciu 2 MHz. Štruktúra zodpovedala počtu 4 500 tranzistorov. Neskoršie varianty 8080A, ktoré už boli založené na technológii NMOS dosahovali frekvencie 2,67 až 3,125 MHz. Okrem týchto verzií sa vyrábal aj variant značená „military" (M8080A), ktorá bola schopná pracovať v skutočne extrémnych teplotách od mínus 55 do plus 125 °C. Procesor sa dodával v štyridsaťpinovom DIP puzdre. Oproti 8008 došlo k veľkej zmene, ktorú privítali najmä programátori. Z čipu bol odstránený zásobník a „umiestnili" ho do pamäte. Týmto zásobník vlastne nebol vôbec obmedzený a mohol byť akokoľvek veľký (podľa veľkosti dostupnej pamäte, samozrejme). Počiatok zásobníka bol vždy v najvyššej pamäťovej bunke a rástol smerom nadol. Na jeho vrchol ukazoval šestnásťbitový register SP (Stack Pointer).

Dátová zbernica mikroprocesora bola osembitová, adresová šestnásťbitová a tak procesor mohol adresovať až 64 KiB pamäte. K šiestim 8b univerzálnym registrom bolo možné pristupovať jednotlivo alebo ako k trom 16b, čo mikroprocesoru umožnilo pracovať s dátami so šírkou šestnásť bitov. Tieto univerzálne registre boli pomenované B, C, D, E, H a L. (Dvojica H-L sa využívala k nepriamemu adresovaniu) Okrem nich existoval samozrejme 8b akumulátor, 16b ukazovateľ zásobníka (SP) a 16b čítač inštrukcií (PC, Program Counter). V registri príznakov (Flag) sa podľa výsledkov vykonaných inštrukcí nastavovalo päť bitov, boli to:

* carry (CY) pri prenose z najvyššieho (7.) bitu,
* parity (P), ak bol vo výsledku operácie párny počet jednotiek,
* auxiliary (AC) sa nastavil, ak došlo k prenosu z 3. do 4. bitu (BCD aritmetika)
* zero (ZF) bol rovný jednej, ak bol výsledok operácie 0
* a sign (S) pre záporné výsledky (resp. jednotku v najvyššom bite)

Okrem týchto registrov využívala aritmeticko-logická jednotka ešte dva ďalšie ako pomocné, avšak k týmto nie je možné programátorsky pristupovať. S týmito pracovala na 8b paralelnej sčítačke založená aritmeticko-logická jednotka a uchovával sa v nich obsah akumulátora a ďalšieho operandu v priebehu operácie.

Využívali sa aj na dočasné ukladanie adries a dát pri vnútorných presunoch v procesore. Ďalej existoval 8b register inštrukcií, ktorý si pamätal číslo práve dekódovanej a vykonávanej inštrukcie. V 16b adresovom registri sa zase uchovávala adresa, až kým sa neskončila práca s miestom v pamäti, na ktoré register ukazoval.

Na vykonanie každej inštrukcie bolo potrebných od jedného do piatich taktov, podľa zložitosti konkrétnej inštrukcie. Počet inštrukcií je 78. Keby sme to však brali z veľmi prísneho hľadiska a rozlišovali didaktickú stránku (napr. spôsob adresovania pri MOV inštrukcii), dopracovali by sme sa k číslu 244. Pôvodne malo byť v inštrukčnej sade presne 256 inštrukcií. Do praxe sa nedostalo dvanásť inštrukcií (konkrétne XTHL), ktoré navrhol Stanley Mazor a ktoré dovoľovali vymeniť vrchol zásobníka s registrom HL. Táto operácia by na svoje vykonanie vyžadovala päť cyklov. Aj z tohto dôvodu sa projektový manažér M. Shima rozhodol XTHL inštrukciu/e do súboru nezaradiť a v inštrukčnej sade tým vznikla „diera".

Inštrukcie sa delia do týchto skupín:

* inštrukcie pre presun údajov so šírkou osem bitov. Sú veľmi rýchle a krátke.
* inštrukcie pre presun šestnásťbitových údajov. Dáta je možné adresovať priamo alebo nepriamo a taktiež je možné pracovať s priamymi operandami (to isté aj pri 8b presunoch)
* aritmetické inštrukcie pre osembitové operandy. Táto skupina veľmi intenzívne využíva akumulátor.

Najčastejšie aj nastavujú príznaky vo flag registri. Vďaka príznakom carry je možné realizovať sčítanie a odčítanie čísel prakticky ľubovoľnej šírky.

* aritmetické inštrukcie pre šestnásťbitové operandy boli pôvodne určené pre pripravovanie adries (tu vykonával HL register funkciu 16b akumulátora). Dajú sa však využiť aj pre iné úlohy so 16b údajmi.
* inštrukcie pre logické operácie sa realizujú zásadne v akumulátore a so všetkými jeho bitmi.
* inštrukcie bitového posuvu. Môže sa posúvať buď ôsmimi bitmi v akumulátore alebo deviatimi bitmi s využitím indikátora carry vo flag registri.
* skokové inštrukcie, a to tak podmienené ako aj nepodmienené. Môže sa využiť priame alebo nepriame adresovanie
* inštrukcie pre volanie podprogramov
* inštrukcie návratu – jedna inštrukcia nepodmieneného návratu a osem typov podmienených návratov
* V/V inštrukcie (IN a OUT) pracujú iba s akumulátorom a priamou adresou
* špeciálne inštrukcie, ktoré sa využívajú ako riadiace (HALT, EI)

Pri vyvolaní prerušenia procesor na základe obsahu zbernice vyvolal jednu z ôsmich prerušovacích rutín (ktoré sa dali vyvolať aj skrátenou inštrukciou volania podprogramu, akési „softwarové prerušenie"). Procesor mal tiež oddelený pamäťový priestor (64 KiB, typu von Neumann, t. j. spoločný pre dáta aj pamäť), a menší I/O (vstupno-výstupný) priestor, ku ktorému sa pristupovalo zvláštnymi inštrukciami. Všetky tieto vlastnosti boli prebraté aj procesormi typu x86.

Napájanie procesora je trojité: Udd = +12 V / 40 mA, Ucc = +5 V / 60 mA, Ubb = −5 V / 0,01 mA (typické odbery). Maximálny príkon je 1,25 W (podľa max. odberov napájacích vetiev) resp. 1,5 W (absolútne prípustné maximum stratového výkonu puzdra). Toto trojité napájanie je jedným z veľkých nedostatkov procesora. Konkurenčný procesor Z80, aj nasledovník Intel 8085, oba uvedené na trh v roku 1976, si naproti tomu vystačia len s jednoduchým päťvoltovým napájaním, ako väčšina logických integrovaných obvodov z tejto éry. Perióda hodín mikroprocesora sa pohybuje v rozmedzí od 0,48 až po 2 mikrosekundy, u 8080A-1 je dolná hodnota na úrovni 0,32 mikrosekúnd. Dátová zbernica je obojsmerná a trojstavová. Adresová je taktiež trojstavová, ale už len výstupná.

Procesor s v aplikáciách zapájal obvykle spolu s ďalšími 2 sprievodnými obvodmi: 8224, ktorý generoval požadovaný 2-fázový (prekrývajúci sa) hodinový signál; a 8228, ktorý dekódoval interný stav procesora, vysielaný na dátovú zbernicu v určitých fázach funkcie procesora. Intel ďalej vyvinul pre 8080 celú rodinu periférnych obvodov, z ktorých sa mnohé stali defacto štandardom aj pre iné rodiny procesorov (najmä 8086/8088, pričom 8088 bola navonok 8-bitová verzia 16-bitového procesora 8086 vyvinutá práve kvôli možnosti priamo pripojiť tieto obvody) a niektoré z nich dodnes pretrvávajú zaintegrované do chipsetov moderných PC (čítač/časovač (timer) 8253, prerušovací kontrolér (interrupt controller) 8259, kontrolér priameho prístupu do pamäte (DMA controller) 8237).

Referencie
----------

1. 1 2  Intel. From CPU to software, the 8080 Microcomputer is here. *Electronic News* (New York: Fairchild Publications), 1974-04-15, s. 44 – 45. Dostupné online [cit. 2018-02-11].
2. ↑  MHB8080A In:  *Katalog elektronických součástek, konstrukčních dílů, bloků : 1 Integrované obvody* [online]. Tesla Eltos, 1986, [cit. 2018-07-26]. Dostupné online.
3. ↑  MARTIN, Donald P.. *Microcomputer Design*. 2. vyd. Northbrook : Martin Research, 1976. Dostupné online. Kapitola 3.1 The 8080.
4. 1 2   *Intel 8080A/8080A-1/8080A-2 8-bit N-channel mircroprocessor : [datasheet]* [online]. Intel, 1986, [cit. 2018-07-26]. Dostupné online.

Iné projekty
------------

Commons
* Spolupracuj na Commons Commons ponúka multimediálne súbory na tému **Intel 8080**

Externé odkazy
--------------

* Intel 8080A/8080A-1/8080A-2 8-bit N-channel mircroprocessor – katalógový list obvodu
* Intel 8080 Microcomputer Systems User's Manual (1975)
* Inštrukčná sada 8080 v tabuľkovej forme s údajmi o dĺžke, časovaní a dotknutých príznakových bitoch
* Mikroprocesor 8080 – seriál o procesore a podporných obvodoch v časopise Amatérske rádio (1983 – 84, 30 strán)
* MHB8080A v katalógoch súčiastok československej Tesly (1983 – 89)
* Telemark Assembler – krížový assembler pre 8080, 8085, Z80 a ďalšie 8-bitové architektúry
* ASM80 – online krížový assembler a IDE pre 8080, 8085, Z80 a 6502, vrátane emulátorov hw
* Z88DK – krížový prekladač jazyka C pre množstvo platforiem založených na 8080, 8085 a Z80

| * z
* d
* u
Zoznam procesorov Intel |
| --- |
| Procesory mimo x86 | 
* 4004
* 4040
* 8008
* 8080
* 8085
* iAPX 432
* i860
* i960

 |
| Procesory x86 a x86-64 | 
* 8086
* 8088
* 80186
* 80188
* 80286
* 80386
* 80486
* Pentium
* Pentium Pro
* Pentium MMX
* Pentium II
* Celeron
* Pentium III
* Pentium 4
* Pentium M
* Pentium D
* Celeron M
* Atom
* Core
* Xeon

 |
| Mikroarchitektúry x86 a x86-64 | 
* P5
* P6
* Intel Core
* Nehalem
* Sandy Bridge
* Ivy Bridge
* Haswell
* Broadwell
* Skylake
* Kaby Lake
* Coffee Lake
* Cannonlake
* Icelake
* Tigerlake

 |
| Procesory IA-64 | 
* Itanium
* Itanium 2

 |
| Mikrokontroléry | 

|  |  |
| --- | --- |
| MCS-48 | 
* 8020
* 8021
* 8022
* 8031
* 8035
* 8039
* 8040
* 8041
* 8042
* 8044
* 8048
* 8049
* 8050
* 8242
* 8243
* 8344
* 8641
* 8741
* 8742
* 8744
* 8748
* 8749

 |
| MCS-51 | 
* 8031
* 8032
* 8051
* 8052
* 8054
* 8058
* 8351
* 8352
* 8354
* 8358
* 8751
* 8752
* 8754
* 8758
* 80151
* 80152
* 80251
* 83151
* 83152
* 83251
* 87151
* 87152
* 87251

 |
| MCS-96 | 
* 8094
* 8095
* 8096
* 8098
* 8394
* 8395
* 8396
* 8397
* 8398
* 8794
* 8795
* 8796
* 8797
* 8798
* 80296
* 83196
* 87196

 |

 |