Intel 8080
Z Wikipédie
Intel 8080 bol jedným z prvých mikroprocesorov navrhnutých a vyrábaných firmou Intel.
[upraviť] 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. Osemdesiat osemdesiatka bol prvý mikroprocesor dostatočne silný 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 náš procesor MHB8080A vyrábaný v Tesle a používaný v počítači PMD 85 taktiež patril k množstvu klonov 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.
[upraviť] 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 púzdre. 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 kB 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 nerpiamemu 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 ôsmych 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 (64kB, 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 = +12V/40mA, Ucc = +5V/60mA, Ubb = -5V/0,01mA. Maximálny príkon je 1,2W. Toto trojité napájanie je jedným z veľkých nedostatkov procesora. Konkurenčný procesor Z80 naproti tomu potrebuje iba jedno päťvoltové napájanie. 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).