Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilFrantiška Lišková
1
Univerzální procesor
2
Jako vhodný procesor na místo virtuálního univerzálního mikroprocesoru (procesoru) byl pro výklad jako vhodný typ vybrán procesor 8080 od firmy Intel, který se stal nejrozšířenějším procesorem ve své době a tím i standardním typem. Mikroprocesor je úplná 8bitová paralelní procesorová jednotka určená pro univerzální použití v číslicové technice. Tento monolitický procesor byl vyráběn technologií MOS-N.
3
Procesor I8080 včetně vnitřní struktury
4
Blokové schéma Procesor 8080 obsahuje následující funkční jednotky : pole registrů a adresovací logiky aritmetickologickou jednotku registr instrukcí a řídící obvody obousměrný 3stavový oddělovací registr sběrnice
6
Procesor 8080 obsahuje následující funkční jednotky : pole registrů a adresovací logiky aritmetickologickou jednotku registr instrukcí a řídící obvody obousměrný 3stavový oddělovací registr sběrnice
8
Procesor 8080 obsahuje následující funkční jednotky : pole registrů a adresovací logiky aritmetickologickou jednotku registr instrukcí a řídící obvody obousměrný 3stavový oddělovací registr sběrnice
10
Procesor 8080 obsahuje následující funkční jednotky : pole registrů a adresovací logiky aritmetickologickou jednotku registr instrukcí a řídící obvody obousměrný 3stavový oddělovací registr sběrnice
12
Celkové blokové schéma procesoru 8080
13
Propojení bloků je realizováno obousměrnou vnitřní sběrnicí, která přes obousměrný 3stavový oddělovací registr (buffer) navazuje na vnější obousměrmou datovou sběrnici. Komunikaci s vnějškem provádí procesor přenosem dat a informací o svém vnitřním stavu po 8bitové 3stavové datové obousměrné sběrnici D 0 - D 7
14
Adresy předává samostatnou jednosměrnou 16bitovou 3stavovou sběrnicí A 0 - A 15. 3stavová sběrnice znamená, že může nabývat logických úrovní L a H a navíc vysokoimpedančního stavu - t.j. procesor je elektronicky odpojen od sběrnice a předává její řízení jinému obvodu.
15
Procesor má 6 časovacích a řídících výstupů : SYNC, DBIN, WAIT, WR, HLDA, INTE a 4 řídící vstupy : READY, HOLD, INT, RESET Potřebuje 3 úrovně napájení a to : + 12 V, + 5 V, - 5 V a 2 hodinové vstupy : Φ 1, Φ 2.
16
Pole registrů Pole registrů obsahuje paměť RAM ve formě šesti 16bitových registrů a to : čítač instrukcí (programový čitač) - program counter (PC) ukazatel zásobníku - stack pointer (SP) 8bitových univerzálních registrů uspořádaných do dvojic a označených B,C; D,E; H,L dvojici 8bitových pomocných registrů pro dočasné ukládání dat W,Z (Temporary Registers).
17
Šest univerzálních registrů může být využíváno buď jako jednotlivé 8bitové registry nebo jako dvojice registrů o obsahu 2 byty. Nelze je libovolně spojovat, ale jen dvojice ležící vedle sebe : BC, DE, HL. Dvojregistr HL se využívá hlavně pro adresování paměti. H pro vyšší řády, L pro nižšší řády. Pomocné registry W a Z jsou nepřístupné programátorovi a užívají se jen pro vnitřní potřebu procesoru při vykonávání instrukcí.
18
Do této skupiny univerzálních registrů patří i 8bitový střadač (akumulátor) A. Všechny jmenované registry mají řadu shodných vlastností mezi něž patří následující možnosti : přesun bytu mezi registry přesun bytu mezi libovolným registrem a pamětí aritmetickologické operace s obsahem střadače a libovolného z registrů včetně střadače
19
Dále mají řadu individuálních vlastností : střadač obsahuje vždy jeden z operandů či výsledek libovolné aritmetickologické operace s osmibitovými daty registry B,C; D,E a H,L mohou být používány jako 16bitové registry registry H,L mohou sloužit i jako střadač při 16bitovém sčítání instrukcí DAD a lze je používat pro tzv. registrové adresování 8bitové slabiky (byte) t.j. pro adresování dat v operační paměti (16 bitů), data mohou být přenášena mezi vnitřní datovou sběrnicí a polem registrů přes multiplexer.
20
Data se 16 bity mohou být přenášena buď jen mezi dvojicemi registrů a nebo dvojicemi registrů a adresovým registrem či obvodem inkrement/dekrement. Adresový registr může přijímat data z kterékoliv dvojice univerzálních registrů a budí 16bitový výstupní oddělovací zesilovač adresové sběrnice A 0 - A 15. Obvod inkrenemt/dekrement přijímá data z adresového registru a vrací je do pole registrů. 16bitová data pak mohou být inkrementována či dekrementována nebo jen přenesena mezi dvojicemi registrů
21
Aritmetickologická jednotka ALU obsahuje následující registry : 8bitový akumulátor 8bitový pomocný akumulátor ACT 8bitový pomocný registr pro dočasné ukládání dat TMP 8bitový registr příznaků (Flag register)
22
8bitový registr příznaků (Flag register) obsahuje příznaky : nula - zero (Z) přenos - carry (CY) znaménko - signum (S) parita - parity (P) poloviční přenos - auxiliary carry (AC) 3 bity jsou nepoužity.
23
Poloviční přenos je přenos mezi spodní a horní polovinou bytu (to je mezi spodním a horním nibblem) a používá se při zpracování čísel v kódu BCD a zajišťuje převod čísel mezi čísly binárními a BCD.
24
V ALU se vykonávají všechny operace aritmetické a logické včetně rotací s 8bitovámi daty. Zdrojem dat pro ALU je pomocný akumulátor ACT, registr TMP a indikátor přenosu CY. Výsledek operace se pak přenáší buď na vnitřní sběrnici nebo do akumulátoru. ALU rovněž nastavuje klopné obvody příznaků. Rotace se však provádí jen v akumulátoru. Akumulátor může dostat data z ALU a vnitřní sběrnice a může dodat data do pomocného akumulátoru ACT a též na vnitřní sběrnici. Obsah akumulátoru a indikátoru polovičního přenosu CY může být testován pro účely dekadické korekce výsledků v průběhu instrukce DAA.
25
Jednotlivé klopné obvody registru příznaků se nastavují do H podle výsledků některých operací následovně : nula - při nulovém výsledku přenos - jestliže nastal přenos z nejvyššího bitu (b 7 ) znaménko - při záporném výsledku aritmetické operace parita - při sudém počtu H v akumulátoru po provedené aritmetické či logické operaci poloviční přenos - jestliže při aritmetické operaci nastal přenos mezi spodní a horní částí bytu (to je přenos z bitu b 3 na bit b 4 )
26
Registr instrukcí a řídící obvody V průběhu výběru instrukce se z paměti vybere její prvý byte, nazývající se operační znak (OP code), kterým se přenáší z vnitřní sběrnice do 8bitového registru instrukce. Obsah registru zpracovává dekodér instrukcí. Výstupy dekodéru spolu s časovými signály vytváří řídící signály pro pole registrů, ALU, oddělovací zesilovač datové sběrnice a též budí externí řídící signály.
27
Obousměrný oddělovací registr sběrnice Je to 8bitový obousměrný 3stavový registr (Data Bus Buffer), který odděluje vnitřní datovou sběrnici procesoru od sběrnice vnější (D 0 - D 7 ). V případě vstupu dat zaznamená okamžité úrovně na vstupu registru (z vnější sběrnice) a při dalším taktovacím impulsu jsou příslušné úrovně napětí (L,H) připojeny na sběrnici vnitřní. V případě výstupu dat přepíše z vnitřní sběrnice na sběrnici vnější výstupní signály a po přepisu do dalších obvodů přechází do 3 stavu. Slouží současně jako výkonový zesilovač.
28
Čítač instrukcí Čítač instrukcí uchovává adresu uložení instrukce v paměti programu a je automaticky inkrementován (k obsahu je připočtena 1) při každém výběru instrukce nebo jejího bytu.
29
Ukazatel zásobníku Ukazatel zásobníku slouží k ukládání výsledků a informací do souvislého bloku v operační paměti, kterému se říká zásobník. Uchovává adresu následujícího místa přístupného pro čtení v zásobníkové paměti. Jeho počáteční obsah může být libovolně předvolen, takže výsledky lze ukládat kdekoliv v operační paměti RWM RAM. Než je byte vložen (instrukce Push) do zásobníku je obsah ukazatele zásobníku snížen o 1 - dekrementován. Při vyjmutí byte ze zásobníku (instrukce Pop) je jeho obsah inkrementován. Protože je však adresa 2bytová, ukládají se oba byty a též obsah ukazatele je změněn o 2!
30
Z výše uvedeného vyplývá, že : při zápisu se obsah ukazatele zásobníku snižuje při čtení zvyšuje. To znamená, že poslední vložený údaj je čten jako první (systém LIFO - Last In First Out - poslední dovnitř a první ven !).
31
Časování Jak bylo již dříve řečeno, procesor pracuje synchronně s cyklickým průběhem. Potřebuje k tomu synchronizační impulsy - hodinové impulsy, které jsou dvoufázové (Φ 1,Φ 2 ) a nepřekrývají se. Impulsy Φ 1 rozdělují strojový cyklus do stavů. Časovací logika pak určuje začátek každého strojového cyklu ze signálu SYNC.
32
Cykly časování Každý instrukční cyklus obsahuje 1 - 5 strojových cyklů či taktů. Strojový cyklus je zapotřebí, když se CPU obrací na paměť či I/O. Každý strojový cyklus se skládá ze 3 - 5 stavů či fází. Stav je definován jako interval mezi 2 po sobě jdoucími vzestupnými hranami hodinových impulsů Φ 1.
33
Toto lze vše shrnout následovně : 1) Každá perioda hodin určuje stav 2) 3 - 5 stavů vytváří strojový cyklus 3) 1 - 5 strojových cyklů tvoří instrukční cyklus z toho vyplývá, že úplný instrukční cyklus vyžaduje v závislosti na typu instrukce 4 - 18 stavů.
34
Jak bylo již výše uvedeno, jedna instrukce může mít maximálně 5 strojových cyklů - ale různých! Těchto různých strojových cyklů s různým počtem stavů je 10. Jsou to : 1) Výběr (Fetch) - udává, že se procesor nachází v cyklu výběru prvého bytu instrukce 2) Čtení z paměti (Memory Read) udává, že datová sběrnice přijímá data čtená z paměti 3) Zápis do paměti (Memory Write) udává, že se provádí zápis do paměti 4) Čtení ze zásobníku (Stack Read) 5) Zápis do zásobníku (Stack Write)
35
6) Vstup (Input) udává, že je na adresové sběrnici adresa vstupní brány a vstupní data budou předána na datovou sběrnici 7) Výstup (Output) udává, že je na adresové sběrnici adresa výstupní brány a že datová sběrnice dostane výstupní data, jakmile bude WR aktivní 8) Přerušení (Interrupt) 9) Zastavení (Halt) 10) Přerušení zastavení (Halt - Interrupt)
36
Typy strojových cyklů
37
Procesor označuje zahajovaný strojový cyklus 8bitovým stavovým slovem, které je umístěno na výstupu datové sběrnice D 0 - D 7 v prvním stavu každého strojového cyklu. Stavové slovo je možno zachytit v registru (v čase T1) jak je ukázáno na obrázku a tabulce. Stavové signály jsou určeny pro řízení externích obvodů.
38
Řídící signály Procesor neindikuje své okamžité vnitřní stavy ale na výstupech INTE, HLDA, DBIN, WR, a WAIT předává signály pro přímé řízení externích obvodů. Dále jsou v každém cyklu testovány vstupní signály READY, HOLD a INTERRUPT. Vše je synchronizováno signálem SYNC.
39
Signál čekání - WAIT Jakmile procesor předá adresu paměti, může pomalá paměť požádat o přechod do čekacího stavu WAIT. To z toho důvodu, že pomalá paměť po adresaci a signálu pro čtení paměti není schopna dát okamžitě data na sběrnici. Žádost se provede tak, že na vstup READY je vyslána úroveň L. V tomto okamžiku vydá procesor signál WAIT (že čeká), a to až do té doby, kdy se na vstupu READY objeví úroveň H. Po celou tuto dobu procesor nepracuje a testuje READY (čeká na data). Teprve přechodem signálu READY do H oznamuje, že jsou data připravena.
40
Signál DBIN DBIN je zkratka DATA BUS IN. Tímto signálem se řídí směr toku dat buď do procesoru nebo z procesoru. Tento 1bitový signál říká kdy je sběrnice přepnuta pro příjem dat procesorem. Užívá se pro hradlování signálů z operační paměti nebo obvodů I/O do CPU.
41
Signál WR Je to signál, kterým se provádí zápis dat do paměti či I/O jednotek. Je-li WR = L jsou data na sběrnici platná a provádí se jejich zápis.
42
Signál HOLD Signál je požadavkem periferního zařízení na přechod CPU do stavu HOLD. Stav Hold znamená, že se procesor "odpojí" od datové a adresové sběrnice, t.j. že jeho výstupy přejdou do 3 stavu a řízení sběrnic se ujme periferní zařízení. Tím je umožněn přímý přístup do paměti perifernímu zařízení, které pak provede rychlý přenos velkého bloku dat (DMA) do nebo z paměti, což procesor tak rychle neumí!
43
Signál HLDA Je to výstupní signál indikující stav přechodu procesoru do stavu HOLD. Teprve po poté se DMA ujme funkce.
44
Signál INTE INTE je zkratka INTERRUPT ENABLE - povolení přerušení. Je to signál informující o stavu vnitřního klopného obvodu umožňující přerušení činnosti procesoru. Stav klopného obvodu lze měnit programově instrukcemi : EI - ENABLE INTERRUPT - povolení přerušení DI- DISSABLE INTERRUPT - zakázání přerušení (maskování)
45
Signál INT INT je zkratka INTERRUPT REQUEST což je požadavek periferie na přerušení činnost procesoru a na její obsluhu. Je akceptován, pokud signál INTE umožňuje příjem této žádosti. Na příklad při stisknutí některé klávesy na klávesnici požádá klávesnice signálem INT procesor, aby si z ní odebral data (písmeno, číslo, povel). Obdobně tiskárna, která dostává vždy k vytištění blok dat. Jestliže celý blok dat vytiskne, pomocí žádosti o přerušení požádá o "obsluhu", to je předání dalšího bloku dat.
46
Signál SYNC Je to puls, který indikuje probíhající strojní cyklus, pomocí něhož se zapisuje stav CPU v každém strojním cyklu. Vybavuje tak řídící sběrnici pro řízení všech obvodů.
47
Signál RESET Signálem RESET se provádí nulování procesoru, nuluje se programový čítač a klopné obvody INTE a HLDA.
48
Řídící sběrnice Výše jmenované signály však netvoří řídící sběrnici. Ta je realizována tak, že výstupní signály WR, DBIN a HLDA z procesoru 8080 se dekódují ve speciálním obvodu 8228 (popis viz další kapitola) a spolu se vstupním signálem tvoří řídící sběrnici : signály čtení : - MEMR - I/OR signály zápisu : - MEMW - I/OW potvrzení přerušení : - INTA vstup pro převedení výstupů do 3 stavu : - BUSEN
49
Na následujícím příkladu součtu dvou čísel si ukážeme celý tok signálů a dat, tak jak probíhá v mikroprocesoru. Zásadně se bude jednat o součet jednoho čísla uloženého ve střadači a druhého čísla uloženého v operační paměti. Z tohoto důvodu musí být již prvé číslo uloženo ve výše zmíněném střadači a v dvojregistru HL pak i adresa druhého čísla. Součet se pak vykoná pomocí instrukce ADD M.
50
Ve střadači musí být uložen první sčítanec. V dvojregistru HL musí být již uložena adresa druhého sčítance.
51
Řadič přepne obousměrnou datovou sběrnici pro příjem dat (DBIN) procesorem. Procesor adresuje pomocí programového čitače přes registr adresy paměti a zesilovač adresové sběrnice. To provádí blok časování a řízení.
52
V systémovém budiči je vygenerován signál pro čtení paměti. Poté paměť přenese data z paměťové buňky na obousměrnou datovou sběrnici.
53
Do procesoru se data dostanou přes obousměrný zesilovač datové sběrnice. Protože prvý v instrukci je vždy operační znak (OZ), pak řadič tyto data zapíše do registru instrukce.
54
V dekodéru instrukce se zjistí, že se jedná o 1bytovou instrukci ADD M. Poté řadič (blok časování a řízení) začne provádět následující činnost
55
Řadič přepne obousměrnou datovou sběrnici pro příjem dat procesorem (DBIN). Přepíše data z dvojregistru HL do registru adresy a přes zesilovač adresové sběrnice přivede adresu druhého sčítance na vstup operační paměti.
56
V systémovém budiči je vygenerován signál pro čtení paměti. Poté paměť dá data z paměťové buňky na obousměrnou datovou sběrnici - vlastně hodnotu druhého sčítance.
57
Do procesoru se data dostanou přes obousměrný zesilovač datové sběrnice (oddělovací registr).
58
Řadič zapíše data do pomocného registru a poté provede přepis dat ze střadače do záchytného registru střadače.. V tomto okamžiku jsou oba sčítance připraveny na obou vstupech ALU.
59
Řadič vygeneruje řídící signály pro součet dvou čísel. ALU tuto operaci provede a výsledek pošle na vnitřní obousměrnou datovou sběrnici.
60
Řadič přepíše výsledek jednak do střadače a jednak do registru příznaků (stavového registru).
61
Poté řadič zvýší obsah programového čitače o 1 a přepne programový čitač na registr adresy a znovu vygeneruje signál pro čtení paměti atd.
62
Obsluha vnějších zařízení Pro obsluhu vstupních a výstupních zařízení, snímačů, klávesnice atd. se používají dvě metody. Jsou to : 1) metoda dotazovací - provádí ji programově CPU 2) metoda přerušovací - je iniciována periferními zařízeními
63
Metoda dotazovací Tato metoda zvaná též Polling obsluhuje periferní zařízení tak, že ve více méně pravidelných časových intervalech se procesor postupně dotazuje jednotlivých zařízení, zda potřebují obsluhu či nikoliv.
64
Metoda dotazovací Pokud zařízení nepotřebuje obsluhu, přechází dotaz na další zařízení. Jestliže však toto prvé zařízení teprve dodatečně začne požadovat obsluhu,to je v době kdy bylo dotázáno další zařízení, pak musí počkat až se opět dostane na řadu!
65
Metoda dotazovací Tento systém obsluhy však ovlivňuje rychlost práce procesoru, protože většina dotazů je konána zbytečně a požadavky na přerušení nejsou přijímána dostatečně rychle.
66
Metoda přerušovací Při této druhé metodě - metodě přerušovací (Interrupt) - může procesor provádět svůj hlavní program a obsluhuje zařízení až v okamžiku, kdy je to nezbytně nutné t.j. je vyzván periferním zařízením k obsluze. Tato metoda je asynchronní. Jestliže pak procesor obdrží výzvu k obsluze zařízení,dokončí právě zpracovávanou instrukci, uloží návratovou adresu (PC + 1) a případně veškerá potřebná data do zásobníkové paměti a provede vlastní obsluhu zařízení. Po ukončení obsluhy přejde pomocí návratové adresy do místa, kde přerušil svou činnost a pokračuje v práci. Tímto způsobem lze řešit více úloh a zvýšit aktivitu počítače.
67
Každému zařízení je určena jeho priorita. Řadič priority přerušení pak pracuje jako řídící obvod v systému řízeném přerušením. Přijímá od periferních zařízení požadavky a zjišťuje jejich nejvyšší prioritu, při čemž určuje zda má právě zpracovávaný požadavek vyšší prioritu než nový, právě příchozí požadavek. Jestliže tomu tak je, pak opět procesor dokončí právě prováděnou instrukci, uloží návratovou adresu a případně další data do zásobníkové paměti a provede obsluhu zařízení s vyšší prioritou. Poté vyzvedne ze zásobníkové paměti návratovou adresu a případně další data a vrátí se k obsluze zařízení s nižší prioritou.
68
Po ukončení obsluhy tohoto zařízení vyzvedne ze zásobníkové paměti návratovou adresu a vrátí se zpět do hlavního programu. Každému perifernímu zařízení je přiřazen speciální program a s ohledem na jeho specifickou funkci nebo provozní požadavky (obslužný program). Po přerušení práce procesoru musí řadič přerušení předat procesoru instrukci, která vyvolá obslužný program vyžádaný příslušným periferním zařízením. Řadič dekóduje úroveň požadavku a předá ji jako vektor pro výběr obslužného programu přerušení.
69
Periferie přes I/O požaduje obsluhu a požádá o ni řadič přerušení.
70
Řadič přerušení zpracuje přerušení (priority) a požádá o přerušení procesor.
71
Procesor dokončí instrukci a uloží data do zásobníku (v paměti RAM) včetně návratové adresy.
72
Poté začne obsluhovat periferii, která o obsluhu žádala. Po ukončení obsluhy se procesor opět navrátí do přerušeného hlavního programu.
73
Zásobník V systému procesoru 8080 je možno vytvořit a používat zásobník. Zásobník je souvislá část paměti RWM RAM, která slouží pro přechodné ukládání adres, dat a podobně. Používá se hlavně při zpracování přerušení, volání podprogramů a návratů z nich.
74
Zásobník se vytváří od určité adresy směrem k nižším adresám. Tato vybraná adresa určuje dno zásobníku. Z tohoto důvodu pak poslední vložený údaj do zásobníku zaujímá nejnižší adresu. Adresu vrcholu zásobníku udržují všechny instrukce, které vkládají do zásobníku údaje či je z něho vybírají. Tato poslední aktuální adresa je v ukazateli zásobníku (SP). Údaje jsou ukládány v pořadí tak jak přišly. Poslední údaj, který je uložen na vrcholu zásobníku bude vybrán jako prvý.
75
Zásobník se nejčastěji používá při přerušení nebo volání podprogramů. Při vyvolání podprogramu z hlavního programu je nutno uchovat návratovou adresu programu. Před provedením návratu z podprogramu se příslušná návratová adresa vyzvedne ze zásobníku. Tento systém zajišťuje i několikanásobné "vnoření"
76
Hlavní program A na adrese Ax vyvolá podprogram B, ten po chvíli musí na adrese Bx vyvolat podprogram C a ten opět po chvíli musí na adrese Cx vyvolat podprogram D. Když se vykoná podprogram D, provede se návrat na adresu Cx+1, dokončí se podprogram C, provede se návrat na adresu Bx+1, dokončí se podprogram B a nastane návrat do hlavního programu na adresu Ax+1.
77
Velikost zásobníku není prakticky omezena. Je omezena jen velikostí části RWM RAM, která je pro tento účel vymezena. Je nutno kontrolovat, zda vrchol zásobníku nedosáhne oblasti vyhrazené pro program či data.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.