Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Procesory 3. generace. Pro přiblížení novějších procesorů se neobejdeme bez výkladu procesoru 8086 z jehož konstrukce vycházejí. Téměř současně s osmibitovými.

Podobné prezentace


Prezentace na téma: "Procesory 3. generace. Pro přiblížení novějších procesorů se neobejdeme bez výkladu procesoru 8086 z jehož konstrukce vycházejí. Téměř současně s osmibitovými."— Transkript prezentace:

1 Procesory 3. generace

2 Pro přiblížení novějších procesorů se neobejdeme bez výkladu procesoru 8086 z jehož konstrukce vycházejí. Téměř současně s osmibitovými procesory 3. generace se na trhu objevily i šestnáctibitové mikroprocesory. Svým instrukčním souborem i koncepcí přímo navazovaly na tehdy existující mikroprocesory. Výhodou takovéto koncepce je příbuznost nebo i slučitelnost programového vybavení, a to nejen u vlastního mikroprocesoru ale i celého mikropočítače.

3 Přes nesporné výhody se však první 16bitové monolitické mikroprocesory šířily velmi pomalu. Bylo to způsobeno vysokou cenou těchto obvodů. Skutečný nástup 16bitových mikroprocesorů však trh zaznamenal až od roku 1978. Tehdy tři největší výrobci ohlásili nové typy. Jsou to firmy: 1)Intel se svým typem 8086 a obsáhlým souborem pomocných obvodů, doplněných ještě dalšími specializovanými mikroprocesory. 2) Zilog s typem Z8000 3) Motorola s MC 68000

4 Přes některé nesporné výhody mikroprocesorů Z8000 a MC 68000 se na trhu nejvíce prosadil mikroprocesor 8086, hlavně pro své rozsáhlé doplňkové vybavení a pro velmi dobrou návaznost na starší mikropočítačovou techniku.

5 Procesor I8086 včetně vnitřní struktury

6 Mikroprocesor 8086 je 16bitová paralelně pracující jednotka (CPU) svojí funkcí navazující na typy 8080 a 8085. Výkonností však tyto typy mnohonásobně převyšuje. K výhodám 8086 patří nejen možnost komunikovat po 16 i 8bitové sběrnici ale i značné rozšíření instrukčního souboru o aritmetické operace s 8 i 16bitovými operandy včetně dělení násobení a operace s řetězci. Orientací na bázové registry tato architektura dovoluje snadnou implementaci dynamicky přemístitelných programů a to i po přeložení do strojového jazyka. Přitom můžeme adresovat hlavní paměť do rozsahu přes 1 MB. To znamená, že lze program přemístit do různých částí paměti aniž bychom museli měnit odkazy na konkrétní adresy tohoto programu (viz dále).

7 Mikroprocesor 8086 je vhodný jak pro jednoprocesorové systémy s jednoduchou sběrnicí (minimální mod činnosti) tak konstrukci multiprocesorových (víceprocesorových) systémů (maximální mod). Tomu je přizpůsobena volitelnost funkcí některých vývodů. Mikroprocesor 8088 bude popisován společně s 8086 přesto že je označován za 8bitový procesor. Ve skutečnosti odpovídá svou vnitřní strukturou i instrukčním souborem typu 8086. Liší se tím že s okolím komunikuje po 8bitové sběrnici. To znamená že 16bitová slova přenáší ve dvou osmibitových slabikách. Nevýhodou 8088 oproti 8086 je tedy zpomalení toku dat vně mikroprocesoru.

8 Sběrnice  datová : 16bitová (u 8088 jen 8bitová), obousměrná multiplexovaná s částí adresové sběrnice.  adresová : 20bitová, pouze výstupní, třístavová, částečně multiplexovaná s datovou sběrnicí (vývody AD 15 - AD 0 u 8086 a AD 7 - AD 0 u 8088)

9 Stavová informace Na vývodech S 7 až S 0 (informace pro součinnost s ostatními obvody) částečně multiplexovaná s adresovou sběrnicí.

10 Architektura procesoru Základem architektury 8086 jsou dvě procesní jednotky. První EU (Execution Unit) vykonává operace předepsané instrukcemi. Druhá BIU (BUS Interface Unit) zprostředkovává komunikaci mezi vstupy, výstupy a jednotkou EU.

11 EU a BIU pracují relativně nezávisle. To dovoluje překrytí fáze zápisu, čtení a výběru instrukce s fází vykonání předchozí instrukce. Tím ve většině případů zdánlivě mizí fáze výběru. Operační jednotka EU je u 8086 a 8088 stejná. Obsahuje 16bitovou aritmetickologickou jednotku ALU, která zpracovává operandy v souladu se stavem CPU, nastavuje indikátory a ovládá registry. Registry i všechny přenosy dat v EU jsou 16bitové. EU nemá přímý přístup k systémové sběrnici. Data i instrukce získává z BIU. Požaduje-li EU přístup k paměti nebo periferijnímu zařízení žádá BIU o čtení nebo zápis. Adresy v EU jsou 16bitové BIU je upravuje pro styk s pamětí na 20bitové. Tím je umožněn přístup k úplné paměti.

12 Jednotka BIU je funkčně shodná u 8086 a 8088, liší se jen v částech spolupracujících přímo s vnějšími sběrnicemi. V době kdy EU vykonává instrukci předvídá BIU chod programu a vybírá z paměti následující instrukce, které ukládá do registru instrukcí (v BIU). Tyto registry jsou organizovány jako paměť FIFO. Fronta v 8086 může uchovat 6 bytů instrukcí, v 8088 jen 4 byty.

13 BIU v 8086 požaduje přečtení další slabiky jakmile se ve frontě uvolní alespoň 2 byty (16bitová instrukce) a EU nepožaduje styk se sběrnicí. U 8088 je tento požadavek již při uvolnění jednoho bytu. Jakmile program u 8086 požaduje výběr jen z liché adresy BIU čte byt a pak vybírání pokračuje čtením slov o dvou bytech z následujících sudých adres.

14 Fronta instrukcí značně zvyšuje rychlost práce mikroprocesoru neboť EU nemusí čekat na výběr příští instrukce. Výjimkou je případ, kdy aktuální instrukce předává řízení instrukci mimo běžné pořadí (instrukce skoků, volání a návratů). Pak je ovšem obsah fronty zbytečný a obsažené instrukce se v ní nulují. Další instrukci předává BIU přímo EU a znovu plní frontu.

15 Význam jednotlivých signálů : AD 0 - AD 15 - časově multiplexovaná adresová a datová sběrnice A 19 /S 6 -A 16 /S 3 - časově multiplexovaná adresová a stavová sběrnice BHE/S 7 - spolu s A 0 definuje přenos (A 0 = 0, BHE = 1) spodního či horního bytu (A 0 = 1, BHE = 0) slova RD - čtení dat z I/O či paměti READY - odezva paměti či periferie na požadavek čtení INTR - požadavek na přerušení procesoru (vzorkovaný) TEST - řídící signál NMI - nemaskovaný požadavek přerušení RESET - nulování procesoru

16 CLK - hodinky procesoru, f = 5 - 10 MHz, střída 1:3 MN/MX - signál pro minimální či maximální variantu procesoru S 0 - S 2 - stavové signály procesoru RQ/GT 0,RQ/GT 1 - signály pro přebírání sběrnic systému CPU LOCK - zablokování sběrnice pro ostatní procesory QS 1, QS 0 - definice stavu fronty instrukcí M/IO - určení spolupráce CPU s pamětí či periferiemi WR - zápis dat INTA - potvrzení přerušení ALE - impuls pro zápis adresy do vyrovnávací paměti

17 DT/R - řízení směru přenosu dat DEN - definuje časový interval přenosu dat mezi CPU a systémem HOLD - požadavek na odpojení procesoru od sběrnice HLDA - potvrzení odpojení procesoru od sběrnice

18 Stavová sběrnice S 2 - S 0 definuje v maximálním módu stavy sběrnice a stavové bity S 3 a S 4 informují o tom, který segment registr byl použit pro vytvoření adresy daného cyklu. Z následující tabulky je vidět, že kombinace čísel S 3 a S 4 udává jeden ze 4 segmentů (segmentových registrů), který je použit pro zápis adresy cyklu. Bit S 5 dává informaci o uvolnění přerušení, bit S 7 indikuje 1 cyklus v přerušovací sekvenci.

19 Tabulka stavů procesoru 8086

20 Uložení dat Paměti procesorů vyvinutých firmou Intel jsou rozděleny po bytech. Každý byt jak bylo již dříve řečeno obsahuje 8 bitů s číslováním 0 - 7, kde nejnižší řád má bit 0. Do paměti se 16bitová slova (2byty) ukládají tak, že na nižší adrese je byt nižšího řádu. Adresa slova je adresou bytu nižšího řádu. Na příklad číslo 1234 H je uloženo v paměti jako posloupnost dvou bytů 34 H 12 H.

21 V 16bitovém slově může být uloženo číslo buď bez znaménka či se znaménkem. Znaménko je uloženo v bitu nejvyššího řádu (viz kapitolu Přehled vývoje výpočetní techniky). Bez znaménka lze zobrazit libovolné číslo v intervalu 0 - 65 535. Se znaménkem je to pak interval -32 768 až +32 767. Záporná čísla jsou v inverzním kódu.

22 Organizace paměti Větší programy se nepíší jako jediná část, ale skládají se z většího počtu programových modulů, které se zcela samostatně překládají a odlaďují. Každý větší program se skládá z více procesů a každý proces z více modulů. Běžně se používá modulární programování s knihovnami programů a jejich spojování (link -linkování).

23 Tomu je přizpůsoben procesor 8086 tím, že má hlavní paměť rozdělitelnou na 4 segmenty (segmentové registry) : CS - segmentový registr kódu - (code segment) DS - datový segment - (data segment) SS - segmentový registr zásobníku - (stack segment) ES - zvláštní segmentový registr - (extra segment) Adresy v operační paměti jsou tím pádem relativní k počátečním adresám segmentů, kde počáteční adresy jsou v těchto registrech.

24 Moduly stejného procesu (task) mají společný segment zásobníku (SS) a mohou mít globální segment dat, jehož počáteční adresu určuje zvláštní segmentový registr (ES). Takováto segmentace má své výhody. Je oddělena počáteční adresa segmentu (určena segmentovým registrem) od adresového posunutí (ofsetu), který je relativní k počátku segmentu. V modulu se adresuje jen 16bitovým ofsetem, takže je modul nezávislý na svém umístění v paměti a lze ho přemisťovat vlastně jen obsahem segmentových registrů DS a CS.

25 Další výhodou segmentace je, že ji lze využít k vytvoření virtuální paměti a víceúrovňové ochraně paměti. Neposlední výhodou je, že segmentové registry jsou pro každý soubor (file) jen 4 a mohou být umístěny přímo v procesoru. Tím jsou eliminovány časové ztráty vznikající u struktur, které jsou uloženy mimo čip vlastního procesoru. To vše umožňuje zkrácení instrukcí, protože programové odkazy na program, data a zásobník probíhají s výběrem segmentů. Pak pro adresování paměti 1 MB stačí 16bitová adresa v EU.

26 8086 má 20bitovou adresu pro hlavní paměť. To odpovídá množině adres 00000 H až FFFFF H. Z předešlého víme že paměť pro 8086 je organizovaná slabikově. Může tedy mít 2 20 slabik (1 048 576 slabik).

27 Osmi nebo šestnáctibitová slova dat nebo instrukcí lze ukládat na libovolné adresy a to tak, že se slovo o dvou bytech ukládá do dvou sousedních adres. Nižší byt slova přijde na specifikovanou adresu a vyšší na následující vyšší adresu. Výrobce doporučuje ukládat slova přednostně na sudé adresy, neboť v tomto případě čtení nebo zápis slova CPU proběhne v jednom cyklu paměti zatímco na liché adrese jsou potřeba 2 cykly. Nedodržení tedy zpomaluje činnost ale na jiných vlastnostech mikropočítače se to neprojeví. Rychlost se snižuje navíc z toho důvodu, že se v procesoru musí ještě provést instrukce SWAP, to je výměna vyššího a nižšího bytu aby se dosáhlo správného pořadí bytů ve slovu.

28 Výběr paměťových bank V případě 8088 toto nedodržení průchodnost nesnižuje, protože procesor komunikuje po bytech. Přesto je výhodné toto pravidlo dodržet pro případ přenosu programu na mikroprocesor 8086.

29 Ukazatelé (pointers) jsou třídou dat používaných při adresování. Ukládají se vždy po dvou slovech (4 slabikách) jejich funkce bude vysvětlena dále. Architektura 8086/8088 (16bitová adresa EU a 20bitová vnější adresová sběrnice) předpokládá paměť rozdělenou na segmenty. Segment má délku 64 kB a jeho počáteční adresa v paměti musí být násobkem 16. Jiná omezení nejsou. Segmenty spolu mohou sousedit nebo se mohou částečně nebo zcela překrývat. Teoreticky jich může být neomezené množství. Segmentace je tedy pouze logické dělení a jeho strukturu určuje programátor.

30 Počátky jednotlivých segmentů jak bylo již výše zmíněno jsou průběžně definovány ve 4 segmentových registrech BIU - CS, DS, SS a ES. Každý z nich udržuje 16 bitů skutečné 20bitové adresy počátku některého segmentu. Těchto 16 bitů označujeme jako bázovou adresu segmentu (segmentovou adresu) a segmenty, jejichž segmentové adresy jsou právě v segmentových registrech, se nazývají aktuální segmenty (Current Segments).

31 Pro adresování v aktuálním segmentu stačí 16bitové posunutí (ofset). To může být zadáno v instrukci, v IP v BIU nebo v EU v indexregistrech SI a DI či v registrech SP a BP. Také může vzniknout dílčím posunutím.

32 Logická adresa místa v paměti zahrnuje segmentovou adresu a ofset (posunutí). Obě veličiny jsou 16bitové hodnoty bez znaménka. Předpokládáme, že nejnižší adrese v segmentu odpovídá nulová hodnota posunutí. Skutečná fyzická adresa (Physical adres), vztažená k hlavní paměti se v BIU generuje takto:

33 Do 20bitové sčítačky se zavede příslušná bázová adresa segmentu a posune se o 4 bity vlevo. Tím se převede na fyzickou adresu počátku segmentu, která má vždy 4 nejnižší bity nulové. Pak se přičte dodaný buď z IP nebo EU (IP je Instruction Pointer - programový ukazatel, což u 8080 odpovídá čítači instrukcí - PC). Výraz lze tedy definovat: Fyzická adresa = segmentová adresa * 2 4 + ofset 32bitový ukazatel v paměti se používá pro adresování dat a instrukcí mimo aktuální segmenty. Představuje tedy intersegmentovou adresu uloženou definovaným způsobem v paměti. Slovo na nižších adresách v paměti obsahuje hodnotu posunutí, slovo na vyšších adresách obsahuje segmentovou adresu

34 Tvorba 20bitové adresy

35 Segmentace a relativní adresování umožňuje nejen používat 16bitovou adresu při podstatně větší fyzické adrese, ale také práci s dynamicky přemístitelnými programy. To dovoluje efektivně využívat hlavní paměť a možnost pohodlného odkládání právě nepotřebných programů (na příklad na disk). Později se původní programy mohou vrátit na jiná než původní místa, aniž by to bylo na závadu jejich používání (tzv.relokace). Pravidla pro dynamickou přemístitelnost - program nesmí sám inicializovat nebo měnit svůj segmentový registr a nesmí přímo adresovat buňky mimo aktuální segment.

36 Rezervované oblasti paměti 8086 umožňuje rovnocenný přístup ke všem adresám hlavní paměti. Jsou však oblasti na obou koncích adresové množiny rezervované pro specifikované funkce a pro účely styku CPU s periferiemi.

37 Přímý přístup do paměti - DMA Procesor 8086 stejně jako 8088A používá signály HOLD a HLDA slučitelné s tradičními řadiči DMA 8257 a 8237.

38 Registry Registry EU 8086/8088 má 8 16bitových registrů, které dělíme na dvě skupiny. HL - čtyři registry zásobníkové paměti PI - skupina ukazatelů a indexregistrů Registry skupiny HL lze adresovat a používat jako 16bitový nebo dva 8bitové registry. Každý z těchto registrů se tedy dělí na dvě části horní např. AH a dolní AL. Každá polovina má tedy 8 bitů. Registry mohou být používány při většině aritmetických i logických operacích. Některé instrukce implicitně předpokládají využití určitých registrů.

39 Segmentové registry v BIU CS - (Code Segments) definuje aktuální segment programu, k jeho bázové adrese se vztahují všechny reference. Obsah IP je interpretován jako posunutí instrukce. IP je tedy čítačem instrukcí v rámci jednoho segmentu určeného obsahem CS.

40 SS - (Stack Segments) definuje aktuální segment zásobníku s délkou 64 kbyt. Ukazatel zásobníku SP v EU obsahuje ofset vrcholu zásobníku od bázové adresy zásobníku. Stejně jako u 8080A se zásobník zvětšuje shora dolů, to znamená že poslední obsazená adresa je tím nižší, čím více dat v zásobníku je. Šířka dat je 16 bitů a data se ukládají nebo vybírají po slovech tak, že se SP dekrementuje o 2, a pak se slovo uloží nebo se slovo vybere a SP inkrementuje o 2. Posunutí v SP se vztahuje pouze k aktuálnímu zásobníku, jehož bázová adresa je v registru SS.

41 DS - (Data Segment) a ES (Extra Segment) jsou dva segmentové registry pro data o celkové velikosti 128 kbyt. Program může při práci s daty směrovat činnost BIU do kteréhokoliv z aktuálních segmentů, ale předpokládá se, že proměnné jsou většinou v aktuálním segmentu dat DS, zatímco ES je segmentem rezervním. Posunutí pro proměnnou v segmentu dat závisí na způsobu adresace, který je specifikován v instrukci.

42 Registry procesoru 8086

43 Řetězce nebo bloky představují data s odlišnou adresací oproti ostatním datům. Za předpokladu že zdrojový operand instrukce zpracovávající řetězec se nalézá v aktuálním segmentu dat (může se nalézat i v jiném, pro tento účel specifikovaném segmentu), posunutí zdrojového operandu se získává ze zdrojového indexregistru SI v EU. Cílový operand instrukce řetězce je vždy v aktuálním extra segmentu a jeho posunutí se získává z cílového extraregistru DI v EU. Instrukce, které řetězec zpracovávají, nastavují SI a DI samočinně, a tak operace nad řetezcem probíhají postupně po slabikách nebo slovech.

44 Registr příznaků F 8086/8088 má 9 indikátorů umístěných v EU, které jsou uspořádány do 16bitového slova. Indikátory jsou jednobitové. Nastavují se v závislosti na výsledku v ALU nebo je definuje řídící funkce pro procesor.

45 Stavové indikátory AF (Auxiliary Carry Flag) - nastaví se do H při přenosu z dolní poloviny bytu t.j. z bitu b 3 do bitu b 4 při aritmetických operacích (stejně jako u 8080 AC) nebo při výpůjčce z horní poloviny bytu. Využívá se pro aritmetické operace v kódu BCD. CF (Carry Flag) - nastaví se tehdy, nastal-li přenos z nejvyššího bitu, či výpůjčka do nejvyššího bitu výsledku bez ohledu na operand (8 nebo 16 bitů). Využívá se při sčítání nebo odečítání vícebytových dat či rotacích.

46 OF (Overflow Flag) - aritmetické přeplnění. Nastaví se, jestliže délka výsledku operace přesahuje délku cílového registru - dojde k přetečení (může vyvolat interní přerušení programu). OF jako jediný ze stavových indikátorů nemá obdobu u 8080A. PF (Parity Flag) - nastaví se při sudé paritě výsledku, ale jen nižšího bytu bez ohledu na šířku operandu. SF (Sign Flag) - nastaví se při záporném výsledku operace. ZF (Zero Flag) - nastaví se, jestliže je výsledek aritmetické nebo logické operace nula

47 Řídící indikátory DF (Direction Flag) - jeho nastavení programem podmiňuje autodekrementaci registrů SI a DI při zpracování řetězců. To znamená jejich zpracování od vyšších adres k nižším. Nulování DF naopak znamená zpracování od nižších adres k vyšším To znamená, že zpracování řetězců probíhá zprava do leva. Po vynulování zleva doprava. IF (Interrupt-enable Flag) - nastavený IF povoluje přijmout CPU externí maskovatelný požadavek přerušení. IF neovlivňuje interní nebo externě nemaskovatelné požadavky o přerušení (obdoba INTE u 8080A). TF (Trap Flag) - po nastavení TF přechází CPU do krokového režimu pro účely ladění, takže je generováno vnitřní přerušení při každé instrukci.

48 Zásobník Procesor 8086 obdobně jako 8080 má řadu instrukcí pro práci se zásobníkem. Proto v libovolném místě operační paměti vymezuje programátor zásobník. Ten má strukturu LIFO (Last IN - FIRST OUT t.j. poslední dovnitř - první ven) a ukazatel zásobníku (SP) ukazuje na aktuální vrchol (TOS - Top of the stack), který však obsahuje ofsetovou část adresy právě zapsaných dat. Je na operátorovi, aby vymezil dostatečně velkou oblast paměti pro zamezení případné ztráty dat.

49 Zásobník, jeho plnění a výběr

50 Všechny odkazy na zásobník jdou přes registr SS (Stack Segment), který definuje současný segment zásobníku. Ukazuje na nejnižší adresu aktuálního segmentu zásobníku. Operace pracující se zásobníkem jsou opět PUSH a POP. Instrukce PUSH provede - snížení obsahu SP o dvě - uložení obsahu dvou bytů na adresu SP Instrukce POP provede - vyjmutí dvou bytů z vrcholu zásobníku - zvýší obsah SP o dvě

51 Přerušení Přerušení v procesoru 8086 využívají jak vnější zařízení (pro obsluhu), tak i procesor pro signalizaci výjimečných událostí (dělení nulou a pod.). Mimo to ho využívá operační systém a programy v pamětech ROM pro zpřístupnění vlastních služeb programátorovi. Přerušení se dělí do několika skupin, které se člení následovně :  vnější - nemaskovaná (vstupní signál NMI)  maskovaná (vstupní signál INTR)  vnitřní - instrukcí INTn  chybou při běhu programu Vnější přerušení, jak bylo již výše uvedeno má 2 vstupy pro přerušení INTR a NMI.

52 Přerušení INTR Vstup INTR je úrovňový a spolupracuje s obvodem 8259A (v tomto případě obvod 8259A spolupracuje s procesorem 8086 jiným způsobem než známe). Po aktivaci tohoto vstupu se vždy nejprve dokončí instrukce a poté se postupuje podle stavu indikátoru povolení přerušení IF.

53 Pro některé přerušovací vektory generované procesorem 8086 jsou v tabulce přerušovacích vektorů rezervována místa. Jedná se o následující přerušení: INT 0 - celočíselné dělení 0 (Divide by Zero) INT 1 - krokovací režim (Single-step) INT 2 - nemaskovatelná přerušení (NMI) INT 3 - ladící bod (Breakpoint Trap) INT 4 - přeplnění (Overflow Trap)

54 Přerušení INTR Přerušení INTR jsou uživatelská přerušení od INT 5 do INT 255. Je-li přerušení zakázáno (IF = 0), žádný požadavek není akceptován. Je-li přerušení povoleno (IF = 1) potvrzuje procesor přerušení signálem INTA. Na toto prvé INTA obvod 8259A upravuje své vnitřní stavy. Na druhé INTA vyšle na datovou sběrnici 8bitový kód - typ přerušení (vektor přerušení). Podle typu přerušení procesor volá odpovídající obslužný program žádajícího zařízení. V případě více žádostí o přerušení ve stejném okamžiku je proveden výběr podle priorit. Povolit přerušení INTR lze instrukcí STI (Set interrupt-enable flag) a zakázat instrukcí CLI (Clear interrupt-enable flag). Navíc lze pomocí obvodu 8259A maskovat přerušení.

55 Přerušení NMI Vstup NMI (non-maskable interrupt) reaguje na hranu a používá se pro identifikaci událostí ohrožujících počítač jako je výpadek napájení, chyba parity na sběrnici a podobně. Tento vstup má vyšší prioritu než INTR a nemůže být zakázán ! Procesor je schopen rozlišit 256 různých přerušení, kdy pro každé přerušení je uloženo 32 bitů adresy pro počátek obslužného programu. Adresy jsou uloženy v paměti v tabulce přerušovacích vektorů, kdy je počáteční adresa 0000 0000 s délkou 1 kB.

56 Přerušení instrukcí INTn Při přerušení instrukcí INTn (vyhrazena 4 přerušení) po vykonání instrukce s adresou A se provede následující posloupnost činností (srovnej s obdobnou činností u procesoru 8080) :  do zásobníku se uloží obsah registru příznaků  v registru příznaků se vynulují příznaky IF a TF  do zásobníku se uloží obsah registru CS  do registru CS se přepíše 16bitová adresa přerušovacího vektoru  do zásobníku se uloží obsah registru IP ukazující na adresu A+1  registr IP se přepíše 16bitovou adresou

57 Pro následující činnost je obdobně jako u procesoru 8080 třeba uschovat do zásobníku nejdůležitější registry pro obnovu činnosti přerušeného programu. Navíc se vynulováním IF zajistí nerušený průběh obsluhy přerušení. Pokud je to nezbytné, může programátor přerušení v průběhu obsluhy přerušení povolit.

58 Návrat do přerušeného programu zajistí instrukce IRET následující posloupností činností a to tak, že ze zásobníku :  obnoví obsah registru IP  obnoví obsah registru CS  obnoví obsah registru příznaků

59 Tabulka přerušovacích vektorů

60 Zapojení mikropočítače v minimálním módu

61 Zapojení mikropočítače 8086 v maximálním módu

62 Vstupy a výstupy Tak jako u 8080A i 8086 může pro styk s vnějšími zařízeními používat I/O brány odděleně adresované od hlavní paměti nebo situované do hlavní paměti. Pro oddělené adresování I/O používá 8086 16bitovou adresu. Instrukce IN a OUT mají tedy přístup k 64k 8bitových nebo 32k 16bitových vstupních bran a stejnému počtu bran výstupních. IN a OUT přenášejí data mezi aktuální bránou a střadačem (AL při přenosu slabiky a AX při přenosu slova. Výrobce doporučuje nepoužívat 8 I/O adres F8 H až FF H. Je to nutné z hlediska slučitelnosti s některými dalšími obvody.

63 Periferní zařízení lze i umístit adresově do prostoru paměti a pak se chovají jako paměťové součásti u nichž procesor nerozpozná rozdíl. Je-li tento systém I/O umístěn v paměti (memory mapped) jsou zde výrazné možnosti pro přístup k bráně I/O. Jedná se například o přenosy dat mezi procesorem a bránou, pro manipulace s bity v registrech periferie, se skupinou terminálů může být brána jako pole v paměti a adresována indexregistry a podobně. Za takovéto výhody se vždy ale platí, v tomto případě omezením prostoru pro skutečnou paměť a delšími časy při vykonávání instrukcí pracujících s adresami paměťového prostoru.

64 Přímý přístup do paměti - DMA V minimálním módu činnosti procesor 8086 generuje signály jako již dříve zmíněný obvod DMA (8257). Na rozdíl od obvodu DMA procesor 8086 adresuje paměť, která je fyzicky rozdělena na 2 části (nazývané též banky), kde jedna část je určena pro liché a druhá část pro sudé adresy. Pak i 8bitový obvod DMA musí střídavě vybírat tyto části tak, aby zpřístupnil souvislá pole bytů v paměti. Mnohem jednodušší způsob styku umožňuje stykový procesor 8089 - řadič sběrnice. Tento procesor se používá jako koprocesor pro CPU 8086. Jedná se vlastně o spojení dvou kanálů DMA s procesorem mající instrukční soubor orientovaný na operace I/O.

65 Může totiž oproti DMA obsluhovat zařízení I/O přímo. Mimo to může přenášet data buď po své vnitřní nebo systémové sběrnici a přitom pracovat s 8 nebo 16bitovými periferními zařízeními na 8 nebo 16bitové sběrnici. Dále je schopen přenášet data z paměti do paměti či z brány do brány. Tím je dosaženo toho, že vlastní procesor 8086 není zdržován a může pracovat maximální rychlostí.

66 Multiprocesorový systém Multiprocesorový systém používá dvou či více koordinovaných procesorů použitých pro řešení jedné úlohy. Výkon takovéhoto systému s rozdělením systémových funkcí mezi oddělenými ale přitom paralelně pracujícími procesory vzrůstá. Multiprocesorový systém vede k modulárnímu systému, který lze snadněji zdokonalovat. Vezměme jako příklad dvouprocesorový systém, kdy 8086 je CPU a 8089 ovládá I/O obvody. V případě změny programu se upravuje část pro procesor 8086, v případě změny I/O zařízení jen program pro 8089.

67 Procesor 8086 je navržen pro případný multiprocesorový systém, takže generuje signály potřebné pro koordinaci součinnosti procesorů. Pro tento systém jsou to signály :  LOCK  WAIT  TEST  ESC  RQ/GT a proto si je v krátkosti dále probereme.

68 LOCK Tento signál se uplatňuje jen v maximálním módu, v minimálním pak není k dispozici. Je aktivován jen po dobu vykonávání instrukce následující za doplňkovou instrukcí (prefix) LOCK. Informuje ostatní procesory, že CPU blokuje v tomto okamžiku lokální sběrnici.

69 WAIT a TEST Pomocí těchto signálů mohou být synchronizovány procesory s vnějšími událostmi a to tak, že při vykonání instrukce WAIT se procesor zastaví. Poté pravidelně každých 5 period hodin testuje vstupní signál TEST. Jestliže TEST = L, pak program pokračuje další instrukcí.

70 ESC ESC (escape) je instrukce koprocesoru 8087, která tomuto koprocesoru umožňuje získat operand či instrukci z programu pro 8086.

71 RQ/GT Signál se používá pro přidělování lokální sběrnice v maximálním módu. Jedná se o obousměrné signály používané pro korespondenční režim (handshaking) mezi procesory při sdílení sběrnice. Celý cyklus sestává ze 3 fází:  žádost o přidělení sběrnice  přidělení sběrnice  uvolnění sběrnice

72 Koprocesor žádá impulsem na špičce RQ/GT0 (RQ/GT1) o přidělení sběrnice. Procesor se odpojí a po stejném vedení oznámí koprocesoru, že se odpojil. Pokud má EU ve frontě instrukcí ještě některé instrukce, pak pokračuje ve své činnosti až do vyčerpání instrukcí, nebo než potřebuje výstup na sběrnici. V okamžiku, kdy koprocesor nepotřebuje sběrnici, pak vysílá do CPU signál o uvolnění sběrnice.

73 V případě současného příchodu signálů RQ/GT0 a RQ/GT1 má větší prioritu signál RQ/GT0. V případě, kdy přijde některá žádost později, pak bez ohledu na prioritu musí pozdější signál počkat na uvolnění sběrnice.

74 Způsoby adresace Existuje 6 způsobů adresování týkající se výpočtu ofsetové části adresy, které dále probereme. Ofset se vypočítá z následujících částí :  přímé adresy uložené v instrukci (Displacement)  báze (obsah registru BP či BX)  indexu (obsah registru SI či DI) Všechny dále uvedené způsoby vycházejí z jediného základního způsobu, který lze popsat následovně vypočtená adresa = přímá adresa + báze + index

75 Přímá adresa K ofsetové části adresy operandu z fyzické paměti je přiřazena 16bitová přímá adresa uložená v instrukci. Příkladně přímá adresa v instrukci MOV je segmentována přes DS, v jiných instrukcích jako JMP je segmentována přes CS.

76 Nepřímá adresa Ofsetové části adresy se přiřadí obsah některého z registrů SP, BP, BX, DI, SI. V těchto registrech je jen uložena adresa jejíž obsah nám teprve dává adresu.

77 Bázová adresa Ofsetová část adresy vznikne sečtením přímé adresy z instrukce s některým z bázových registrů (BP, BX). Adresy v těchto registrech určují počátky záznamu a přímá adresa pak obsahuje vzdálenost od počátku záznamu.

78 Indexovaná adresa Ofsetová část adresy vznikne sečtením přímé adresy z instrukce s některým z indexových registrů (SI, DI). Toho se používá pro přístup ke strukturám s pevnou počáteční adresou jako jsou pole, kde přímá adresa určuje počátek pole a SI (DI) je indexem vybírajícím daný byte pole. Bázové i indexové techniky jsou vlastně shodné, rozdíl je jen v použití toho kterého registru.

79 Kombinovaná adresa báze + index Je to kombinace bázové a indexové adresy. Ofset vznikne součtem hodnot uložených v bázové registru (BP,BX) a indexovém registru (DI,SI). Tohoto způsobu se využívá v případech, kdy se například mění počáteční adresa pole. Pak bázový registr určuje počáteční adresu pole a indexový registr jednotlivé prvky pole.

80 Kombinovaná adresa přímá + báze + index Ofset vzniká jako součet obsahu bázového registru (BP,BX), indexového registru (DI,SI) a přímé adresy z instrukce. Používá se pro přístup k velmi složitým strukturám. Bázový registr určuje počátek záznamu, přímá adresa určuje vzdálenost počátku uvnitř záznamu a obsah indexového registru vybírá jednotlivé prvky pole.

81 Start mikroprocesoru Po připojení napájení začne mikroprocesor pracovat s náhodně nastavenými registry. Je tedy třeba přivést bitový signál RESET. Příchod signálu ukončí CPU činnost a zůstane pasivním pokud bude RESET = H. Současně se vyprázdní fronta instrukcí a indikátory DS, SS, ES a IP jsou vynulovány.


Stáhnout ppt "Procesory 3. generace. Pro přiblížení novějších procesorů se neobejdeme bez výkladu procesoru 8086 z jehož konstrukce vycházejí. Téměř současně s osmibitovými."

Podobné prezentace


Reklamy Google