Zilog Z80

**Zilog Z80** on Zilogi 1970. aastate lõpul loodud 8-bitine neljanda põlvkonna mikroprotsessor. Peaaegu sama nimekuju (Z-80) oli Zilogi loodud arvutil. 

Võrreldes kolmanda ja teise põlvkonna protsessoritega pakub Z80 efektiivsemat mälukasutust ja suuremat käskude läbilaskevõimet. Protsessor on tarkvaraliselt kokkusobiv edasiarendus Intel 8080 protsessorist ning oli samuti mõeldud eelkõige manussüsteemides kasutamiseks. Kuni 1980. aastate keskpaigani oli Zilog Z80 koduarvutitel üks kõige laialdasemalt kasutusel olevaid protsessoreid. Protsessorit toodetakse ja müüakse tänapäevani.

## Ajalugu
Zilog Z80 loonud ettevõtte asutasid 1974. aasta lõpus Intelist lahkunud füüsik Federico Faggin ja elektrotehnik Ralph Ungermann. Faggin oli selleks ajaks oma töö jooksul Fairchild Semiconductoris ja Intelis töötanud fundamentaalse transistorite ja pooljuhtide toomise tehnoloogia kallal. Samuti lõi ta mälude ja mikroprotsessorite loomise põhimetoodika ning juhtis Intel 4004 ja Intel 8080 loomist. Faggini ja Ungermanniga liitus nende protsessorite transistorite tasandi juhtivdisainer Masatoshi Shima. Märtsiks 1976 oli Zilogis valmis Z80 protsessor koos selle juurde kuuluva assembleril põhineva arendussüsteemiga. Sama aasta juulis lasti protsessor ametlikult müüki. Järgneva aasta jooksul töötati välja ja lasti müüki palju Z80 jaoks disainitud tugikiipe.

Enne, kui Zilog aasta lõpuks oma tootmisüksuse valmis sai, tootsid esimesi protsessoreid Synertek ja Mostek, kuna neil oli piisav võimekus tootmaks kiipe, mis vajasid tööks vaid üht välist toitesisendit. Disaini kopeerisid ka mõned Jaapani ja Nõukogude Liidu firmad.

Z80 käsustik oli loodud olema kahendsüsteemis kokkusobiv Inteli 8080 protsessoriga, et ilma muudatusi vajamata töötaks sellel enamlevinud rakendustarkvara, nagu näiteks CP/M operatsioonisüsteem ja Inteli PL/M kompilaator, ning selle genereeritud väljund. Masatoshi Shima disainis enamiku protsessori mikroarhitektuurist ning transistoritasandi elektroonikast. Zilogi tegevjuht Faggin oli ise tihedalt seotud protsessori elementide paigutamisega kiibi sees, tehes oma sõnul 80-tunniseid töönädalaid. Faggin on välja öelnud, et protsessori arendamise lõpuosas pidi ta endale lühinägelikkuse tekkimise tõttu prillid ostma.

## Võrdlus Intel 8080-ga
Zilog Z80-l oli mitmeid eeliseid Intel 8080 ees, näiteks:

* Täiustatud käsustik ühebitise adresseerimisega, võimalus teha bittide nihutamist ja ümberpööramist ka mujal, kui akumulaatoris, programmi tsüklis käitamise võimalus, programmiloendurist lähtuvad hargnemised
* Parem katkestuste süsteem
* Üks ainus 5V toitesisend, samal ajal, kui Intel 8080 vajas -5 V, +5 V ja +12 V sisendeid
* Ühefaasiline taktsignaal
* Sisseehitatud DRAM-i värskendamise loogika, mille jaoks muidu oleks vaja eraldiseisvat elektroonikat
* Multipleksimata andme- ja aadressisiin

Selle tulemusel võttis Z80 üle nii Intel 8080 kui ka selle järeltulija 8085 turuosa ning muutus kiiresti üheks populaarseimaks 8-bitiseks protsessoriks. Aja jooksul täiendati protsessorit, muutes kõrgemaks võimalikku maksimaalset taktsignaali sagedust – originaalne Z80 töötas taktsagedusel 2,5&nbsp;MHz, Z80A taktsagedus on 4&nbsp;MHz, Z80B taktsagedus 6&nbsp;MHz ja Z80H töötab taktsagedusel 8&nbsp;MHz.

## Programmeerimine ja registrid
Programmeerimismudel ja registrikomplekt on küllaltki levinud, kuna pärinevad Inteli protsessoriseerialt. Z80 lisas 16-bitised IX ja IY registrid, mida peamiselt kasutatakse baasaadressi registritena, kui mõni käsk omab konstantset nihet, kuid on muuhulgas kasutatavad ka 16-bitiste akumulaatoritena. Z80 muutis ka kõik teised 16-bitised registrid laiatarberegistriteks, toetades korraga 16 biti mälust lugemist ja kirjutamist. Samuti on Intel 8080-ga kokkusobivad AF, BC, DE ja HL registrid jagatud Z80-s kahte komplekti, võimaldades protsessoril nende vahel kiirelt vahetada. See tuleb kasuks kõrge prioriteediga katkestuste kiireks teenindamiseks. Kuna protsessoril puudub sisemine programmimälu, siis tuleb programm kirjutada välisele mälukiibile. Enamik Z80 protsessoreid kasutavad arvutiseadmed on paigutanud programmimälu mäluruumi alumisse 32 KB (A15 = 0) ja RAM-i mäluruumi ülemisse 32 KB (A15 = 1).

### Registrid
Z80 ja Intel 8080 ühised registrid

* `AF`: 8-bitine akumulaator (A) and lipubitid (F) – carry, zero, minus, paarsus/ületäitumine, half-carry (BCD jaoks), Liida/lahuta (N), samuti BCD jaoks
* `BC`: 16-bitine andme/aadressiregister, või kaks 8-bitist registrit
* `DE`: 16-bitine andme/aadressiregister, või kaks 8-bitist registrit
* `HL`: 16-bitine akkumulaator/aadressiregister, või kaks 8-bitist registrit
* `SP`: stack pointer, 16-bitine
* `PC`: programmiloendur, 16-bitine

Z80 uued registrid

* `IX`: 16-bitine indeksi või baasregister 8-bitistele nihetele, või kaks 8-bitist registrit
* `IY`: 16-bitine indeksi või baasregister 8-bitistele nihetele, või kaks 8-bitist registrit
* `I`: Katkestusvektorite baasregister, 8-bitine
* `R`: DRAM värskenduste loendur, 8 bitti (MSB-d ei loendata)
* `AF'`: alternatiivne akumulaator ja lipubitid (*võetakse kasutusele ja loobutakse kasutamisest EX AF-i, AF-i abil*)
* `BC'`, `DE'`ja `HL'`: alternatiivsed registrid (võetakse kasutusele ja loobutakse kasutamisest *EXX-i abil*)
* Neli bitti katkestuste staatuse ja katkestuste režiimi jaoks

### Assemblerkeel
Z80 assemblerkeel sisaldab 158 käsku, sealhulgas kõiki 78 käsku, mis pärinevad Intel 8080A protsessorilt. Käsud saab jagada peamistesse gruppidesse eesmärgi järgi.

* Andmete laadimise ja vahetamise käsud
* Ploki kaupa ülekandmise ja otsimise käsud
* Bitinihete ja roteerimise käsud
* Bittide manipuleerimise käsud (Set, Reset, Test)
* Hargnemise käsud
* Sisend-/väljundkäsud
* Põhilised käsud protsessori enda juhtimiseks.

Näide Z80 jaoks kirjutatud assemblerprogrammist, mis laadib A registrisse väärtuse 22, laadib selle HL registrisse ja peatab protsessori töö.
```asm
LD a, 22
LD hl, a
HALT
```


Z80 jaoks mõeldi välja täiesti uued käskude tähistused, kuna Intel omab oma assemblerkeele mnemoonilistele tähistustele autoriõigust. Protsessori manuaalis on toodud välja ka kahendkoodis kõikide käskude esitamine, võimaldades soovi korral luua lülititega programmeeritavaid seadmeid.

Suurimad vahed Inteli süntaksiga on järgmised:
* Kõikidele registritele ja registripaaridele viidatakse eranditult nende täisnimedega
* Sulge kasutatakse järjepidevalt näitamaks "mälu sisu sellel aadressil", erandiks mõned hargnemiskäsud
* Kõik laadimis- ja salvestamiskäsud kasutavad sama nime, LD, ehk LOAD teised laialt levinud käsud, nagu ADD ja INC kasutavad sama nime, hoolimata aadressirežiimist või operandide suurusest. See on võimalik, kuna operandid ise sisaldavad piisavalt informatsiooni.

## Riistvara
Originaalset Z80 protsessorit müüdi DIP 40 korpuses. Täna on müügil ka QFP korpusega kiibid. Kuigi protsessor toetab väliste dekodeerimisahelate olemasolul ka mitme Sisend-/väljundseadmega korraga suhtlemist, on Zilog loonud lisakiipe, mis mõeldud protsessori võimekuse laiendamiseks. Täiendavasse valikusse kuuluvad taimerite ja loendurite (CTC) kiip, jadaühenduse sisend-väljundkiip (SIO), otsemällupöörduskiip (DMA), paralleelühenduse sisend-/väljundkiip (PIO) ja 2x järjestikpordikiip (DART). Nagu ka Inteli 8080, 8085 ja 8086 protsessoritel, on ka Z80-l eraldi kontrollviigud ja aadressiruum sisend-/väljundseadmetega suhtlemiseks, ning kuigi osad protsessorit kasutavad seadmed kasutasid mällu kaardistatud sisend-/väljundseadmeid, kasutasid enamikud seda mõne lisakiibiga suhtlemiseks.


Fail:Basic Measuring Instruments - Math Processor 83002190 - Zilog Z80 PIO Z84C2008PEC-3919.jpg|PIO Z84C2008PEC
Fail:Basic Measuring Instruments - Math Processor 83002190 - Zilog Z80 CTC Z84C3008PEC-3918.jpg|CTC Z84C3008PEC
Fail:Basic Measuring Instruments - Math Processor 83002190 - Zilog Z80 SIO Z84C4008PEC-3920.jpg|SIO Z84C4008PEC


Protsessorist on toodetud nii NMOS- kui ka CMOS-variante. NMOS võimaldas suure jõudlusega seadmeid luua madalate hindadega, ning CMOS-kiibid olid võimekad, säilitades samas madala energiatarbe.

## Kasutuskohad
Z80 võeti kasutusele arvukates seadmetes, esimesed neist CP/M operatsioonisüsteemiga ja suunatud ärisektorisse, kuniks 1977 lasi RadioShack välja TRS-80 Model 1 arvuti, mis oli üks esimesi massiliselt kodutarbimiseks mõeldud arvuteid. Neist on laialdasemalt tuntud Heathkit H89, Osborne 1, Kaypro seeria ning Epson QX-10 seadmed. Z80 protsessorit kasutasid ka kõik TRS-80 järgnevad mudelid 2–4, ning oli planeeritud ka viienda mudeli protsessoriks. See arvuti aga tootmisse ei jõudnud. Teine laialdaselt tuntud Z80 protsessorit kasutav kodukasutuseks mõeldud arvuti oli Sinclair Researchi 1982. aastal välja lastud värvilise operatsioonisüsteemiga ZX Spectrum. ZX Spectrumi populaarsusest tulenevalt on selle tarkvara internetis arhiveeritud, ning vastavate rakenduste olemasolul ka tänapäeval originaalseadme peal käivitatav.

Arvutustehnika teed rajanud seadmete hulka, mis Z80 protsessoril toimisid, kuuluvad ka Amstrad CPC ja Commorde 128. Inteli 6502 arhitektuuri kasutavatel seadmetel oli võimalik Z80-t kasutada vastava laienduskaardi abil.

Protsessorit kasutati ka mängukonsoolides, näiteks Colecovisioni ja Sega Master Systemi seadmetes. Z80 protsessorist tuletatud Sharpi protsessorit kasutas originaalne GameBoy käeshoitav mängukonsool. Street Fighter 2 arkaadversioon kasutas protsessorit helikaardina. Protsessorit on kasutatud ka satelliitidel.

Tänu oma lihtsusele on Zilog Z80 peale ehitatud hobi- ja haridusfookusega projekte ka tänapäeval, peamiselt ise kokku joodetavate komplektide näol, nagu näiteks RC2014 arvuti, mis käitab Microsoft BASIC-ut.

Tänapäeval võib protsessorit leida veel ka mõningatest Texas Instrumentsi kalkulaatoritest, kus suuremat arvutusvõimekust ei ole lihtsalt vaja.

## Viited