Smazaný obsah Přidaný obsah
portalizace
Bez shrnutí editace
Řádek 2:
[[Soubor:Sharp LH0080A.jpg|thumb|Klon vyráběný firmou SHARP.]]
[[Soubor:Z84C0010FEC_LQFP.png|thumb|[[LQFP]] verze procesoru Z80.]]
'''Zilog Z80''' je osmibitový [[procesor|mikroprocesor]], navržený firmou [[Zilog]] a prodávaný od  července [[1976]]. Byl široce používán jak ve  stolních počítačích tak pro  armádní účely. Z80 a jeho klony tvoří jednu z  nejvíce používaných CPU sérií všech dob a společně se  sérií [[MOS Technology 6502]] dominoval trhu s  osmibitovými počítači od  začátku 70.    do  poloviny  80. let 20.  století.
 
Zilog licencoval design Z80 několika dodavatelům, ačkoli mnoho východoevropských a ruských výrobců vyrábělo nelicencované kopie (U880D v  počítačích [[Robotron]]). To  umožnilo výrobkům menších společností prosadit se  na  trhu vedle větších společností, jako třeba [[Toshiba]]. V  důsledku toho Zilog, od  uvedení procesoru na  trh, vyrobil méně než polovinu procesorů Z80. V  posledních desetiletích se  Zilog soustředí na  stále rostoucí trh s  [[Embedded systém|vestavěnými systémy]] (pro  který jsou učeny původní Z80 a  Z180) a na  nejnovější z  rodiny [[Jednočipový počítač|mikrokontrolérů]], Z80-kompatibilní.
 
Ačkoli už  dříve Zilog uskutečnil pokusy s  pokročilými mikropočítači, jako byly architektury Z80 (Z800 a  Z280), tyto čipy se  nikdy neuchytily. Společnost se  také snažila proniknout na  trh s pracovními stanicemi s jejich procesorem Z8000 a  32bitovým Z80000 (ani  jeden nesouvisí s 8bitovým procesorem Z80).
 
== Stručná historie a přehled ==
Z80 se objevil, když Federico Faggin, po práci na  procesoru  [[Intel 8080]], opustil společnost Intel a na konci roku 1974 vstoupil do  firmy Zilog. Společně s  Raplhem Ungermanem uvedli v červenci 1976 procesor Z80 na  trh. Byl navržen aby  byl [[zpětná kompatibilita|zpětně kompatibilní]] s  procesorem Intel  8080, zejména CP/M operační systém mohl fungovat bez jakýchkoli dalších úprav. K vývoji procesoru Z80 přispěl také další z návrhářů procesorů [[Intel 4004]] a  [[Intel 8080|8080]], Masatoshi Shima.
 
Patrně nejslavnější použití a boom přinesla procesoru řada domácích [[počítač]]ů [[Sinclair ZX Spectrum]].
Později ho firma [[SEGA]] nasadila v [[herní konzole|herních konzolích]] [[Master System]] a [[Game Gear]].
Firma [[Nintendo]] použila v konzolích [[Game Boy]] a [[Game Boy Color]] klon procesoru Z80 od  firmy [[Sharp]].
 
Procesor Z80 byl také použit v [[Japonsko|japonském]] domácím počítači [[Sord M5]].
 
V  [[Československo|Československu]] byly na základě Z80 vyráběny počítače [[Ondra (počítač)|Ondra]] a [[Didaktik]].
 
V  současnosti je  Z80 stále používán např. ve  [[Embedded systém|vestavěných systémech]], [[Jednočipový počítač|mikrokontrolérech]] nebo v [[elektronika|elektronice]] (například programovatelné [[kalkulátor]]y, [[Počítačová tiskárna|tiskárny]], [[Syntezátor|syntezátory]] či [[MP3 přehrávač]]e atd.)
 
Z80 nabízí mnoho skutečných vylepšení oproti 8080
 
* Rozšířená [[instrukční sada]] obsahující blokové operace, manipulace s  bity a  relativní skoky
* Nové indexové registry IX a  IY s podporovou adresování ''base+offset''
* Lepší systém [[přerušení]]
** Více automatický a  obecný vektorizovaný systém přerušení, ''mode  2'', stejně jako pevný vektor přerušení systému, ''mode  1'', pro  jednoduchý systém s  minimálním hardwarem (''mode 0'' je  8080-kompatibilní).
** Nemaskovatelné přerušení ([[NMI]] – Non Maskable Interrupt), může být použito v  případě výpadku napájení a/nebo při jiné události s  vysokou prioritou (umožňuje minimalistickému systému Z80 snadno implementovat dvouúrovňové schéma přerušení v  ''mode  1'').
** Dva soubory registrů, mezi kterými lze rychle přepínat, což umožňuje zrychlit reakci na přerušení.
* Menší požadavky hardwaru.
** Jeden 5V zdroj napájení (''procesor  8080 potřeboval +5V/+5V/+12V'').
** Jednofázové 5V hodiny (''procesor 8080 potřeboval dvoufázový generátor hodin s  vysokou amplitudou'').
** Vestavěný obnovovací mechanismus pro paměti [[DRAM]], který se jinak musí řešit externími obvody.
** Nemultiplexová sběrnice
 
Z80 vystřídal procesor 8080 a jeho nástupce 8085, na trhu s  procesory a stal se  jedním z  nejpopulárnějších 8bitových [[Procesor|CPU]]. Možná, že  klíčem, který zapříčinil úspěch procesoru Z80 byl zabudovaný DRAM refresh a ostatní funkce, které dovolovaly systému aby  byl postaven s  menším počtem podpůrných čipů (později, většina Z80 systémů byli vestavěné systémy, které typicky používaly statickou [[RAM]], a  proto nepotřebovali tento refresh).
 
Podle originálního designu [[NMOS]] se  určená horní hranice frekvence postupně zvyšuje z  původních 2,5 MHz, přes dobře známé 4 MHz (Z80A), až  na  6 MHz (Z80B) a 8 MHz (Z80H). [[CMOS]] verze byla také vyvinuta se  stanovenými limity frekvencí v  rozsahu od  4 MHz až  do  20 MHz pro  verzi, která se  prodává dnes. CMOS verze také umožňovala spánek s  nízkou spotřebou se  zachováním vnitřních stavů (nemá žádnou dolní hraniční frekvenci). Plně kompatibilní s  deriváty HD64180/Z180 a eZ80, ty jsou v současné době určené až  pro 33 MHz a 50 MHz.
 
== Technický popis ==
Řádek 43:
=== Programovací model a nastavení registrů ===
 
Programovací mode a nastavení registrů jsou konvenční a podobně souvisejí s  rodinou [[x86]]. U procesoru Z80 jsou kompatibilní registry procesoru 8080, AF,BC,DE,HL, duplikovány jako dvě od  sebe oddělené banky, kde procesor může rychle přepínat z  jedné banky do  jiné, což je  užitečná vlastnost pro urychlení odezvy u jednoúrovňového přerušení s  vysokou prioritou. Tato vlastnost byla představena v Datapoint 200, ale v  procesoru 8008 nebyla Intelem implementována. Nastavení duálního registru dává smysl, Z80 (stejně jako ve většině procesorů té doby) byl skutečně určen pro  použití v [[Terminál (informatika)|terminálech]], nikoli pro  použití v [[Osobní počítač|osobních počítačích]]. Podle jednoho z  designérů, Masatoshi Shima, se  trh zaměřil na  vysoce výkonný tisk, velké cash registry a inteligentní terminály. Také se  ukázalo být velmi užitečné vysoce optimalizované, manuální kompletování kódování. Některý software, hlavně hry pro  [[MSX]], [[Sinclair ZX Spectrum]] a další počítače založené na  Z80, optimalizovali kód na  extrémní úroveň, mimo jiné použili také duplicitní registry.
 
'''Registry'''
 
Stejně jako v  procesoru 8080, 8bitové registry jsou vetšinou spojeny, aby  poskytovaly 16bitovou verzi. Kompatibilní registry procesoru  8080 jsou:
* AF: 8bitový akumulátor (A) a Flag bity (F) carry, zero, minus, parity/overflow, half-carry (používané pro BCD kód), a Add/Subtract Flag (obvykle nazývaný N) také pro BCD kód
* BC: 16bitový data/address registr nebo dva 8bitové registry
Řádek 54:
* SP: stack pointer, 16 bitů
* PC: program counter, 16 bitů
Nové registry zavedené v  Z80 jsou:
* IX: 16bitový index nebo base registr pro 8bitový immediate offsets
* IY: 16bitový index nebo base registr pro 8bitový immediate offsets
* I: interrupt vector base registr, 8 bitů
* R: DRAM refresh counter, 8 bitů
* AF´: alternativní (nebo stínový) akumulátor a flag (přepínatelný dovnitř a ven s  EX AF, AF´)
* BC´, DE´ a HL´: alternatvní (nebo stínový) registr (přepínatelný dovnitř a ven s  EXX)
* Čtyři bity interupt status a interrupt mode status
 
Není zde žádný přímý přístup k  alternativním registrům, místo toho jsou použity dvě speciální instrukce, EX AF, AF a EXX, každá přepíná jeden nebo dva flip-flop [[Multiplexor|multiplexery]]. To umožňuje rychlé prohození kontextu pro  obsluhu přerušení: EX AF, AF´ mohou být použity samostatně (pro opravdu jednoduché a rychlé přerušení) nebo dohromady s  EXX aby se  vyměnila celá sada AF, BC, DE, HL. Stále je  to rychlejší, než přidávání toho samého registru do  fronty (pomalejší, nižší priorita, víceúrovňová přerušení běžně používají frontu k  ukládání registrů).
 
Refresh registr, R, se  zvýší pokaždé, když CPU vykoná opcode (operační kód) nebo opcode prefix a proto nemá žádný přímí vztah s  vykonáním programu. Toto se někdy používá pro generování [[Pseudonáhodná čísla|pseudonáhodných čísel]] ve  hrách a také ve  schématech ochrany softwaru. V  některých návrzích je  také použit jako „hardware“ counter, slavný příklad toho je  [[ZX81]], který umožňuje sledovat pozici písmene na  televizní obrazovce tím, že  spouští přerušení okolo obalu (připojením INT do A6).
 
Interupt vector registr, I, se  používá u  Z80 konkrétně pro přerušení ''mode  2'' (vybraný IM 2 instrukcí). Dodává nejvyšší byt ze  základních adres pro  128-vstupní tabulku obsluhy adres, které jsou vybírány přes ukazatel zaslání CPU během vědomého přerušení cyklu. Nejnižší byt ze základních adres je napevno nastaven na  nulu. Ukazatel identifikuje zejména periferní čip a/nebo periferní funkci nebo akci, kde jsou čipy normálně spojeny v  takzvaném [[Sériové zapojení|sériovém zapojení]] pro  prioritní řešení. Stejně jako refresh registr, tento registr je někdy použit také kreativně, u přerušení v ''mode  0'' a  ''1'' může být použit jednoduše jako další 8bitový data registr.
 
===Z80 - jazyk symbolických adres===
Řádek 73:
====Datapoint 2200 a Intel 8008====
 
První [[jazyk symbolických adres]] (dále jen [[assembler]]) pro  Intel 8008 byl založen na  velmi jednoduché (ale systematické) syntaxi, zděděné od  [[Datapoint 2200|Datapointu 2200]]. Pro původní čip Intel 8008 byla později tato originální syntaxe změněna na  novou, poněkud tradičnější formu assembleru. V tu samou dobu byl assembler rozšířen, aby se  přizpůsobil přidání nových adresních možností ve více pokročilém čipu Intel 8080 (Intel 8008 a 8080 sdíleli jazykovou podskupinu bez toho aby  byly binárně kompatibilní, nicméně, Intel 8008 byl binárně kompatibilní s  Datapointem 2200).
 
V tomto procesu, symbolický název (neboli mnemonická zkratka) L, pro  LOAD, byla nahrazena různými zkratkami slov LOAD, STORE a MOVE, a ty byli smíchány s ostatními symbolickými písmeny. Symbolický název písmene M, pro paměť, byl odstraněn ze  symbolických instrukcí, aby  se  stal syntakticky samostatným operandem, zatímco [[Registr procesoru|registry]] a kombinace registrů byli velmi rozporuplně označeny. Buď zkrácením operandu (MVI D, LXI H a podobně) nebo v rámci vlastních symbolických instrukcí (LDA, LHLD a podobně) nebo obojím najednou (LDAX B, STAX D a podobně).
 
{| class="wikitable"
|-
! Datapoint 2200 &a i8008
! i8080
! Z80
! i8086/i8088
|-
! beforepřed rokem ~1973
! ~1974
! 1976
Řádek 192:
====Nová syntaxe====
 
Protože [[Intel]] prohlašoval, že  vlastní práva na  symbolické názvy, musela být v assembleru vyvinuta nová [[Syntax|syntaxe]].
Tentokrát byl použit mnohem systematičtější přístup:
* Všechny registry, včetně párových registrů jsou explicitně označeny jejich celými jmény.
* Závorky jsou běžně použity k označení "obsahu paměti", s výjimkou nějakých skokových instrukcí.
* Všechny LOAD a STORE instrukce používají stejný symbolický název, LD pro LOAD (byl to návrat ke zjednodušenému slovníku z Datapointu 2200). Ostatní běžné instrukce, jako například ADD a INC, používali stejný symbolický název, bez ohledu na  adresní režim nebo velikost operandu. To je možné právě proto, že  operand už  sám o sobě obsahuje dostatek informací.
 
Tyto zásady umožňovali přímočaře zjistit jména a tvary všech instrukcí procesoru Z80.
 
S výjimkou pojmenování rozdílů, a navzdory určitému rozporu v základní registrové struktuře, syntaxe Z80 a 8086 je v podstatě izomorfní pro  velkou část instrukcí. V assembleru pro  8080 a 8086 existují pouze docela povrchnínedůležité podobnosti (jako například slovo  MOV, nebo písmeno  X pro rozšířené registry). [[ProgramProgramy]] pro procesor  8080 mohou být přeloženy do strojového kódu pro procesor 8086 pomocí speciálního assembleru nebo přeloženy do  jazyku symbolických adres pomocí překladatelského programu.
 
===Instrukční sada a kódování===
 
Procesor Z80 používá  252 z 256 možných kódů jednotlivých [[Bajt|bajtů]] opcodu ([[Strojový kód|operační kód]] - "kořenové instrukce"). Čtyři zbývající kódy jsou značně používané jako opcode prefix.
CB a ED povolí speciální instrukce a DD nebo FD vyberou IX+d nebo IY+d příslušně (v některých případech bez posunutí "d") v místě HL. Toto schéma dává procesoru Z80 velké množství permutací instrukcí a registrů. Zilog je kategorizuje do  158 různých instrukčních typů, 78  z nich jsou ty samé jako u procesoru Intel 8080 (umožňují provoz programů z  procesoru  8080 na  procesoru  Z80).
Dokumentace k Z80 dělí skupiny instrukcí do následujících kategorií:
 
Řádek 220:
* Rotace a posun
 
V originálním procesoru Z80 nejsou dostupné několikanásobné instrukce. Rozdílné velikosti a varianty sčítání, posunu a rotace mají někdy rozdílné účinky na  příznaky, a to proto, že  z procesoru 8080 byly zkopírovány příznaky ovlivňující vlastnosti. Instrukce LOAD neovlivňuje příznaky (s výjimkou LOAD registru  I a R, které jsou pro zvláštní účely). Instrukce index registru jsou užitečné pro snížení délky kódu a zatímco některé nejsou o mnoho rychlejší než  ekvivalentní sekvence jednodušších operací, nepřímo šetří čas pro  vykonání instrukce tím, že  snižuje potřebu uložit a obnovit registry. O deset let mladší design [[Z180]] si  mohl ze začátku dovolit více "čipového prostoru", který umožňuje o něco účinnější implementaci (mimo jiné používá širší [[ALU]]). Podobné věci mohou být řečeny o [[Z800]], [[Z280]] a [[Z380]]. Nicméně až  roku 2001, když  byl vydán procesor [[eZ80]] umožňující plné [[Pipelining|zřetězení instrukcí]] (neboli [[Pipelining]]), se  jim tyto instrukce konečně přiblížili svou efektivitou v  cyklech jak jen to bylo technicky možné, to jest vzhledem ke  kódování v Z80 kombinovaném se  schopností realizovat 8bitové čtení nebo zápis v každém hodinovém cyklu. Stejně tak instrukce pro  16bitové sčítání nejsou v originálním procesoru Z80 příliš rychlé (11  hodinových cyklů). Nicméně, jsou asi  dvakrát rychlejší, než když se vykonávají ty samé výpočty pomocí 8bitových operací. A stejně tak důležité je, že  snižují množství operací s registry.
 
== Externí odkazy ==