Architektura a vývoj PC 2. Ing. Vladislav Bezouška, Ph.D.
Architektura 8086 ES –Extra Segment DS – Data Segment SS – Stack Segment CS – Code Segment Segmentování paměti po 64KB Adresová sběrnice 20bit = 1MB Částečný multiplex s Datovou sběrnicí 16bit tj. 0-65635 Dvě nezávislé jednotky. Překrytí fáze čtení a zpracování - zrychlení Obrázek převzat z lit. č.1
Architektura 8086 Výhody : Segmentace Dynamická přemístitelnost Adresy jsou relativná vzhledem k adrese segmentu Příklad: Moduly procesu „Task“ mají stejný SS, ES, DS, CS. Modul je adresován 16bit posunutím z IP příp. dalších registrů. Paměť je rozdělena na segmenty 216 = 64KB – počátek segmentu je v SS,CS,DS, ES. Paměť je organizována do 2 bank – sudá a lichá adresa.
Architektura 8086 Způsoby adresace: přímá: DS,CS + posunutí obsažené v instrukci nepřímá: v registrech je adresa paměť. místa kde je uložena skutečná adresa. Bázové : Báze + Offset (posunutí) Indexové: Index + Offset Výhody segmentace: Stačí pouze 16bit ALU a interní sběrnice mezi registry! (levnější chip!) Kratší strojový kód (kratší adresa) Podpora multitasku (přepínání segmentových registrů, relativní adresace)
OPERAND = SEGMENT + OFFSET Princip segmentace 16 bit OFFSET OPERAND Limit SEGMENT BASE 16 bit OPERAND = SEGMENT + OFFSET 16 bitů 216 = 64k
OPERAND = SEGMENT * 16 + OFFSET Princip segmentace 8086 Limit = OFFSET = 16 bitů 216 = 64k 20 bit 16 bit 0000 OFFSET OPERAND Limit 16 bit BASE SEGMENT 0000 OPERAND = SEGMENT * 16 + OFFSET 16+4=20 bitů 220 = 1M
Princip segmentace 8086 Příklad segmentace : SEG = 1F36, OFFSET = 0A5D 1F36 * 16 + 0A5D = 1FDBD SEG = 1FB1, OFFSET = 02AD 1FB1* 16 + 02AD= 1FDBD Pro různé adresy segmentů a offsetů se dostáváme na stejné paměťové místo
Přerušení 8086 VNĚJŠÍ VNITŘNÍ Maskované přerušení: Po aktivaci přerušení se dokončí instrukce. Poté 8086 získá od obvodu 8259A na dat. sběrnici tzv. vektor přerušení (8bit kód) a na jeho základě volá obslužný program. VNĚJŠÍ Ne-maskované přerušení: Procesor při vyvolání přerušení volá rovnou obslužný program. Používá se např. při výpadku napájení. Má větší prioritu a nelze zakázat. Přerušení instrukcí: Přerušení je vyvoláno instrukcí. Odpovídá volání podprogramu. Procesy při přerušení: VNITŘNÍ Registr příznaků do zásobníku Do CS 16bit adresa vektoru přerušení IP+1 do zásobníku IP se přepíše adresou programu přerušení
Ostatní prvky architektury 8086 I/O: Adresování přímé (16bit) Adresování mapované do hlavní paměti DMA (Přímý přístup do paměti): Obvod 8089 – výměna informací DMA-CPU prostřednictvím sdílené paměti. Přenos bloků. Přenos Paměť 1 Paměť 2 Přenos IO 1 IO 2 Řadič sběrnice detekuje stavové signály 8086 a generuje řídící signály
Ostatní prvky architektury 8086 Matematický koprocesor: Aritmetické, trigonometrické, exponenciální, logaritmické funkce s pevnou i pohyblivou řádovou čárkou. Speciální instrukce 80bit registry Dvě jednotky: řídící CU, Výpočetní NEU schopné pracovat nezávisle Funkce: koprocesor čte čte instrukce spolu s CPU a jestliže pozná výpočetní instrukci převezme řízení Poznámka: Koprocesory mohou mít i jiné funkce než výpočetní. Obecně je takto nazýván jakýkoli podřízený procesor komunikující s CPU po multi-procesorové sběrnici
Procesor může pracovat ve dvou režimech Chráněný (s virtuální pamětí) Architektura 80286 24bit…16MB 1GB virtuální paměti 4 paralelně pracující části AU-přepočet adres BU – R/W do paměti Procesor může pracovat ve dvou režimech Realný (jako 8086) Chráněný (s virtuální pamětí) EU – provedení instr. IU- zprac. instrukcí Obrázek převzat z lit. č.1
Programátorský pohled na 80286 16 bitů 16 bitů CS SS DS ES AX MSW Stavový registr BX CX Stejné jako u 8086! Instrukční registr nás nebude zajímat. DX SI DI Změněný význam! SELEKTORY BP SP 16 bitů 48 bitů Nové registry ! DESKRIPTORY LDTR GDTR TR IDTR
selektory a deskriptory OFFSET relativní odkaz do paměti, počítá se od nějaké bázové adresy 8086 SEGMENT – obsahuje bázovou adresu 80286 SELEKTOR – obsahuje INDEX do tabulky bázových adres (deskriptorů)! DESKRIPTOR – obsahuje bázovou adresu a další informace LDTR a GDTR – odkazy na tabulky lokálních (aktivní procesy) a globálních (všechny procesy) deskriptorů
Princip segmentace 80286 OFFSET OPERAND BASE BASE ADDRESS přesun Limit segmentu 64k 16 bitů 64k rozsah BASE ADDRESS 48 bitů celkem 24 bitů na bázovou adresu 224 = 16M paměťového prostoru položka tabulky 64 bitů celkem 48 bitů deskriptor 24 bitů na adresu přesun BASE deskriptor SELEKTOR Tabulka deskriptorů 8k položek 16 bitů celkem 13 bitů na index 213 = 8k deskriptorů GDTR nebo LDTR BASE 48 bitů celkem 24 bitů na bázovou adresu 224 = 16M paměťového prostoru
80286 Má k dispozici dvě tabulky deskriptorů GDTR a LDTR Každá tabulka může obsahovat až 8k deskriptorů, celkem tedy 16k deskriptorů Deskriptor obsahuje 24 bitovou adresu adresace až 16M fyzické paměti po 64k segmentech Celkem lze ovšem adresovat 2*8k*64k 1G virtuální paměti Ochrana přístupu deskriptorem pro zabezpečení mutitaskingu
Programátor má k dispozici stále segmenty o maximální velikosti 64k Procesor 80286 je v chráněném režimu neslučitelný s procesorem 8086 v reálném režimu Důvodem je jiný význam segmentového registru (báze), nyní se jedná o selektorový registr (index) Programátor má k dispozici stále segmenty o maximální velikosti 64k Nicméně tyto segmenty mohou být rozmístěny v prostoru až 16M fyzické paměti a až 1G paměti virtuální Z výše uvedených důvodů, nemohl být procesor 80286 v počítačích typu IBM PC AT pořádně využit. Pracoval pouze jako rychlá 8086 ! MS DOS pracuje pouze v reálném módu !
Literatura : [1] Hrázský J.: Mikropočítače a počítače II. Informatorium. Praha, 1996.