Architektura Architektura a vývoj PC 2.a vývoj PC 2.
Ing. Vladislav Bezouška, Ph.D.
Architektura 8086
Adresová sběrnice20bit = 1MB
Částečný multiplex sDatovou sběrnicí16bit tj. 0-65635
Dvě nezávislé jednotky.
Překrytí fáze čtení a zpracování - zrychlení
ES –Extra SegmentDS – Data SegmentSS – Stack SegmentCS – Code Segment
Segmentování paměti po 64KB
Obrázek převzat z lit. č.1
Architektura 8086Vý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:Výhody segmentace:
–Stačí pouze 16bit ALU a interní sběrnice mezi Stačí pouze 16bit ALU a interní sběrnice mezi registry! (levnější chip!)registry! (levnější chip!)
–Kratší strojový kód (kratší adresa)Kratší strojový kód (kratší adresa)
–Podpora multitasku (přepínání segmentových Podpora multitasku (přepínání segmentových registrů, relativní adresace)registrů, relativní adresace)
Princip segmentace
OFFSET
SEGMENT
Limit
BASE
OPERAND
OPERAND = SEGMENT + OFFSET
16 bit
16 bit
16 bitů 216 = 64k
Princip segmentace 8086
OFFSET
SEGMENT
Limit
BASE
OPERAND
OPERAND = SEGMENT * 16 + OFFSET
0000
0000
20 bit
16 bit
16 bit
16+4=20 bitů 220 = 1M
Limit = OFFSET =16 bitů 216 = 64k
Princip segmentace 8086Příklad segmentace :
1)SEG = 1F36, OFFSET = 0A5D1F36 * 16 + 0A5D = 1FDBD
2)SEG = 1FB1, OFFSET = 02AD1FB1* 16 + 02AD= 1FDBD
Pro různé adresy segmentů a offsetů se dostáváme na stejné paměťové místo
Přerušení 8086
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.
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Š
Í
Přerušení instrukcí:Přerušení je vyvoláno instrukcí. Odpovídá volání podprogramu.
1) Registr příznaků do zásobníku2) Do CS 16bit adresa vektoru přerušení3) IP+1 do zásobníku4) IP se přepíše adresou programu přerušení
VN
ITŘ
NÍ
Procesy při přerušení:
Ostatní prvky architektury 8086I/O:1) Adresování přímé (16bit)2) Adresování mapované do hlavní pamětiDMA (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 8086Matematický 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
Architektura 802864 paralelně pracující
částiBU – R/W do paměti
IU- zprac. instrukcí
AU-přepočet adres
EU – provedení instr.
24bit…16MB1GB virtuální paměti
Procesor může pracovat ve dvou režimech-Realný (jako 8086)
- Chráněný (s virtuální pamětí)
Obrázek převzat z lit. č.1
Programátorský pohled na 80286
AX
SP
BP
DI
SI
DX
BX
CX
16 bitů
CS
SS
DS
ES
16 bitů
LDTR
TR
GDTR
IDTR
16 bitů
48 bitů
Stejné jako u 8086!
Instrukční registr nás nebude zajímat.
MSW
Stavový registr
Nové registry !
DESKRIPTORY
Změněný význam!SELEKTORY
selektory a deskriptoryOFFSET
relativní odkaz do paměti, počítá se od nějaké bázové adresy
8086SEGMENT – obsahuje bázovou adresu
80286SELEKTOR – obsahuje INDEX do tabulky bázových
adres (deskriptorů)!DESKRIPTOR – obsahuje bázovou adresu a další
informaceLDTR a GDTR – odkazy na tabulky lokálních (aktivní procesy) a globálních (všechny procesy) deskriptorů
Princip segmentace80286
GDTR nebo LDTRBASE
48 bitů celkem24 bitů na bázovou adresu224 = 16M paměťového prostoru
deskriptorSELEKTOR
Tabulka deskriptorů
8k položek
16 bitů celkem13 bitů na index213 = 8k deskriptorů
BASE ADDRESS
48 bitů celkem24 bitů na bázovou adresu224 = 16M paměťového prostoru
položka tabulky64 bitů celkem 48 bitů deskriptor24 bitů na adresu
přesun
BASE
OFFSET
OPERAND Limit segmentu
64k
16 bitů64k rozsah
80286Má 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.