170 likes | 347 Views
Architektura a vývoj PC 2. Ing. Vladislav Bezouška, Ph.D. 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. Architektura 8086.
E N D
Architektura a vývoj PC 2. Ing. Vladislav Bezouška, Ph.D.
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 Architektura 8086 Dvě nezávislé jednotky. Překrytí fáze čtení a zpracování - zrychlení Obrázek převzat z lit. č.1
Výhody : • Segmentace • Dynamická přemístitelnost • Adresy jsou relativná vzhledem k adrese segmentu Architektura 8086 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.
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 Architektura 8086 • 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)
Princip segmentace 16 bit OFFSET OPERAND Limit SEGMENT BASE 16 bit OPERAND = SEGMENT + OFFSET 16 bitů 216 = 64k
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 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
24bit…16MB 1GB virtuální paměti Architektura 80286 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
MSW CS Stavový registr SS DS ES Programátorský pohled na 80286 16 bitů 16 bitů AX 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ů
OFFSET 16 bitů64k rozsah 48 bitů celkem24 bitů na bázovou adresu224 = 16M paměťového prostoru Limit segmentu 64k OPERAND BASE BASE ADDRESS 16 bitů celkem13 bitů na index213 = 8k deskriptorů přesun SELEKTOR deskriptor Tabulka deskriptorů 8k položek BASE GDTR nebo LDTR 48 bitů celkem24 bitů na bázovou adresu224 = 16M paměťového prostoru položka tabulky64 bitů celkem 48 bitů deskriptor24 bitů na adresu Princip segmentace80286
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
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.