Intel 80386

Intel 80386 (též i386, 386) je v informatice označení procesoru od firmy Intel uvedeného v roce 1986. Procesor rozšířil chráněný režim předcházejícího procesoru Intel 80286 () na novou 32bitovou instrukční sadu, tzv. IA-32, se kterou jsou kompatibilní i dnešní procesory pro osobní počítače PC. Kompatibilní procesory vyráběly firmy AMD (viz AMD Am386), Chips and Technologies, IBM a Cyrix. Procesor byl využíván v IBM PC kompatibilních počítačích řady PC AT do poloviny 90. let 20. století, výroba byla ukončena v září 2007. Následovníkem byl Intel 80486.

Charakteristika 

Předchůdcem procesoru Intel 80386 byl Intel 80286, který přinesl chráněný režim a segmentaci operační paměti. Procesor Intel 80386 rozšířil chráněný režim o novou 32bitovou instrukční sadu s podporou stránkování paměti, která je dnes označována jako IA-32 a stala se základem moderních operačních systémů (Windows NT, Linux, macOS). Dle kontextu je architektura tohoto procesoru označována též jako x86. S procesorem 80386 jsou zpětně kompatibilní i moderní 32bitové procesory (např. Pentium, Athlon), ale i 64bitové procesory architektury x86-64.

Procesor podporuje 32bitové adresy, takže dokáže adresovat až 4 GiB operační paměti (232). Starší modely procesorů neměly zapojeny všechny vývody, takže maximální velikost paměti byla omezena. Datová sběrnice byla též 32bitová. Později po uvedení prvního procesoru 80386 byl uveden lacinější model i386SX, který používal 16bitovou datovou sběrnici, po které byla data přenášena ve dvou cyklech. Pro odlišení byly procesory s vnější 32bitovou sběrnicí označovány jako i386DX. Procesor neměl interní cache, avšak pro využití plného výkonu procesoru byla nutná. Proto byla na základních deskách osazena externí, zpravidla 8 až 128 kB velká cache. Jednou z cest zlevnění základních desek byla absence cache (případně byly na desce pouze prázdné patice), což však snižovalo výkon.

Systém řízení paměti má dvě úrovně: segmentaci a stránkování. Segmentace je vyšší úroveň a nelze ji zcela vypnout (minimální nastavení je jeden kódový a jeden datový segment přes celou paměť). Segmenty mohou mít libovolnou velikost, zatímco stránky pevně danou velikost 4 KiB nebo 4 MiB.

Procesor podporuje privilegovaný režim, který umožňuje operačnímu systému plnou kontrolu nad počítačem, což umožňuje implementovat multitasking (současný zdánlivý běh více úloh) a víceuživatelský operační systém (oddělení uživatelů pomocí oprávnění).

Procesor 80386
32bit procesor firmy intel

a byl uveden na trh v roce 1985.

Pracuje s 32bitovými daty i adresou, z čehož
vyplývá, že může pracovat až se 4 GB fyzické či 64 TB virtuální paměti.

Může však pracovat i s 16bitovou adresovou
sběrnicí při využití speciálního signálu.

Procesor s označením 80386SX je sice plně
kompatibilní s procesorem 80386DX (dále jen 80386), ale vnější strukturu má
16bitovou.

To znamená, že vnější datová sběrnice je
16bitová a adresová sběrnice 24bitová.

Při zpracování 16bitových programů je rychlost
obou verzí stejná.

Při zpracování 32bitových programů je však
menší, protože 32bitová data musí procesor 80386SX přenášet ve dvou krocích.

K procesoru je navržen a dodáván 32bitový
matematický koprocesor s označením 80387 (pro 80386SX koprocesor 80387SX).

Procesor umí
spolupracovat i s koprocesorem 80287, ale musí programově vědět, který
koprocesor je vlastně připojen.

Procesor pracuje ve 3 režimech práce :
– reálném,
– chráněném,
– virtuální 8086 (V86).

Reálný režim je slučitelný s reálným režimem procesoru 8086
obdobně jako u procesoru 80286.

Po nulování je procesor automaticky nastaven
do reálného režimu.

Chráněný režim je slučitelný s chráněným režimem procesoru 80286.

Adresová sběrnice je využita v plné šíři, nemá
však vyvedeny bity A0 a A1, které jsou dekódovány v procesoru spolu s informací
o velikosti dat.

Procesor se skládá z 6 paralelně pracujících
jednotek, a to:
Sběrnicová jednotka (Bus Interface Unit -
BIU) organizuje styk obvodů procesoru s okolím a též činnost sběrnic. To
znamená, že organizuje přenos dat mezi procesorem, pamětí, sběrnicemi I/O a
koprocesorem. Dále přijímá požadavky na čtení instrukcí a přenos dat, které
provádí podle priority. Pracuje zásadně s fyzickými adresami a pomocí jednotek
segmentace a stránkování se musí adresa převést na adresu fyzickou.

Jednotka předvýběru instrukcí (Instruction
Prefecht Unit – IPU) pracuje v době,
kdy je volná sběrnice a pomocí sběrnicové jednotky vybírá z paměti byty tvořící
další instrukce a ukládá je do fronty 16 bytů. Doplnění fronty je realizováno
tehdy, jsou-li vybrány alespoň 4 byty z fronty předvybraných instrukcí. V
případě větvení programu, návratu z podprogramu či přerušení se fronta
vyprázdní, čtou se nová místa z paměti, která jsou okamžitě zpracována a
předána dále ke zpracování. V procesoru 80286 byla tato jednotka součástí BIU.

Instrukční jednotka (Instruction Decode Unit
– IDU) vybírá z fronty předvýběru
byty a převádí je na mikroinstrukce, které ukládá do nové fronty až 3
dekódovaných instrukcí. Z prvního bytu instrukce se rozpoznává délka celé
instrukce (až 16 bytů). Tato jednotka též signalizuje BIU, zda instrukce
obsahuje odkaz na komunikaci s okolím procesoru prostřednictvím BIU.

Prováděcí jednotka (Execution Unit – EU) zpracovává mikroinstrukce. Vyžaduje však ke své
činnosti spolupráci dalších jednotek. Obsahuje posuvný registr, 32bitovou
sčítačku a odečítačku, 8bitovou násobičku a děličku, univerzální registry, blok
barrel schifter umožňující realizovat posun o více bitů během jediné periody
hodinového signálu (pro zrychlení násobení, dělení, posunu a generování
indexových adres) a další potřebné obvody.

Vlastnosti i80386 
- Jedná se o první 32bitový procesor firmy Intel,
– rok uvedení na trh: 1985,
– počet transistorů na čipu: 275 000,
– externí hodinová frekvence: 16, 20, 25 a 33
MHz,
– snaha o dodržení kompatibility s I80286,
– napájecí napětí: +5 V,
– instrukční fronta: 16 bajtů,
– patice PGA: 132 vývodů,
– procesor má možnost použití nové techniky
práce s operační pamětí, která se předtím užívala pouze u velkých výpočetních
systémů – stránkování,
– adresová sběrnice: 32 bitů,
– maximální reálný adresový prostor: 4 GB,
66
– virtuální adresový prostor: 64 TB,
– procesor používá 3 režimy činnosti:
– reálný,
– chráněný,
– virtuální.

Virtuální režim – je režim, který lze přepnout z chráněného režimu. V
tomto režimu je vytvořeno několik virtuálních izolovaných procesorů I8086.
Důsledkem je možnost např. v rámci operačního systému Windows sdílet operační
systém MS-DOS apod.
Procesor má možnost připojení externí paměti
Cache. Je to z toho důvodu, že zmíněný typ procesoru je oproti svým předchůdcům
podstatně rychlejší, a tak je zde nutnost čekání na výběr instrukce či dat z
operační paměti.

Procesor i80286

Vlastnosti 
Vydán v roce 1983 16bitový procesor pokročilé koncepce
134 000 tranzistorů na čipu výkon cca 0,21 až 2 cykly na instrukci
Pracuje pouze v maximálním módu
datová a adresová sběrnice jsou plně odděleny
sběrnice 16bitů vnější adresová sběrnice 24bitů
procesor může adresovat až 16 MB operační paměti respektive 1 giga byte virtuální paměti
Pouzdro PGA PIN GRI/ EREJB 4x17 vývodů celkem 64
4 vnitřní jednotky ALU,BU,AU
Kde BU jednotka styk s prostředím (Bass unit)
AU Adress UNIT slouží pro tvorbu adresace
IU Instruction UNIT slouží k předvýběru a dekódování instrukce
EU Execution Unit slouží k provádění instrukcí
Externí hodinová frekvence 8až 16 MHz později 20 až 25 MHz
2 módy činnosti: reálný – plně slučitelný s procesorem 8086 a chráněný – nové vlastnosti.

Zpětná kompatibilita 
Procesor 80386 je zpětně kompatibilní s 16bitovým reálným režimem procesoru Intel 8086 i s chráněným režimem procesoru Intel 80286. Proto umožňoval provoz starších operačních systémů a aplikací bez nutnosti změny jejich binární podoby. Po spuštění (resetu) je v procesoru aktivován reálný 16bitový režim procesoru 8086. Všechny segmenty mají délku 64 KiB (16 bitů) a lze adresovat paměť do velikosti 1 MiB. Jádro operačního systému nebo aplikace mohou využít pokročilejší režimy.

V 32bitovém chráněném režimu lze využít Virtual 8086 mode (VM86), ve kterém je možné nativně (tj. přímo) spouštět 16bitové aplikace, kterým je přidělen 1 MiB adresní prostor. V tomto virtuálním režimu je procesor schopen přímo zpracovávat odlišné 16bitové instrukce, aniž by narušil okolní paměť, která obsahuje 32bitové strojové instrukce.

DOS 
Operační systém DOS je 16bitový, takže nevyužíval přímo nové schopnosti procesoru 80386 a byl proto schopen přímo adresovat pouze 1 MiB operační paměti. Nicméně po zavedení ovladače HIMEM.SYS, případně EMM386.EXE byly speciálně naprogramované aplikace schopny využít i paměť nad hranici 1 MiB. Stejně tak například počítačová hra Doom po svém spuštění aktivovala pomocí DOS extenderu 32bitový chráněný režim a po svém ukončení vracela procesor zpět do 16bitového režimu.

Microsoft Windows 
Firma Microsoft poskytovala 16bitové Windows pro DOS od verze Windows 3.0 s podporou 32bitového chráněného režimu, který zpřístupňoval nové schopnosti procesoru 80386, i když samotné jádro systému bylo stále 16bitové. Windows 3.1 a Windows 3.11 již podporovaly pouze procesory s 32bitovým chráněným režimem (vyžadovaly alespoň procesor 80386). Windows NT využívají Virtual DOS machine (NTVDM), aby bylo možné v 32bitovém prostředí spouštět okno s 16bitovými aplikacemi.

Linux 
Operační systém Linux vyžadoval od počátku (tj. od roku 1991) 32bitový chráněný režim procesoru 80386. Aplikace pro DOS nebo Windows pro DOS, které jsou 16bitové, je možné spouštět například pomocí projektů Wine, DOSBox.

Registry 
Systém registrů je převzat z procesoru Intel 8086, jsou rozšířeny o další, jsou 32bitové vyjma segmentových registrů, které mají viditelnou 16bitovou část a neviditelnou (softwarově nepřístupnou) 64bitovou část cachující v chráněném módu obsah descriptoru. Aplikační registry jsou určeny k přímému použití s výjimkou registru (esp/sp) vyhrazeného jako ukazatel zásobníku:

 Šest 16bitových segmentových reg. (cs,ds,es,ss,fs,gs)
 Osm 32bitových aplikačních reg. (eax,ebx,ecx,edx,esi,edi,ebp,esp)
 U aplikačních registrů lze adresovat i spodních 16 bitů (ax,bx,cx,dx,si,di,bp,sp)
 U registrů pro všeobecné použití lze adresovat i spodních 2 x 8 bitů (al,ah,bl,bh,cl,ch,dl,dh)
 Instrukční čítač 32bitový (eip) nebo 16bitový (ip) podle velikosti slova instrukčního segmentu
 Řídící registr a množina vlajek (eflags)

Registry, se kterými je možné manipulovat pouze v privilegovaném režimu:
 Jeden řídící 32bitový registr s množinou vlajek (cr0), spodních 16bitů odpovídá registru MSW procesoru Intel 80286.
 Dva registry pro správu stránkování paměti (cr2,cr3)
 Ladící registry (dr0,dr1,dr2,dr3,dr6,dr7)

Důležité příznaky v registru eflags:
 VM (Virtual 8086 Mode) – je-li tento přepínač nastaven na 1 v chráněném režimu, aktivní proces je v režimu V86
 IOPL (IO Priority Level) - toto pole je dvoubitové a udává prioritu potřebnou k provádění vstupů a výstupů. Je-li priorita programu, který provádí v/v operaci nižší (numericky vyšší) než obsah pole IOPL, operace se neprovede a namísto toho se vyvolá výjimka GP (General Protection Fault)
 CF Carry - přenos do vyššího řádu aritmetických operací jednotky ALU
 OF Overflow - přetečení aritmetických operací jednotky ALU
 ZF Zero - výsledek aritmetické nebo logické operace je nula
 AF AuxCarry - přenos do vyššího 4bitového nible aritmetických operací jednotky ALU s BCD kódem
 PF Parity - sudá nebo lichá parita výsledku
 DF Direction - řídí směr zpracování při řetězcových operacích.

Důležité příznaky cr0:
 PG - zapnutí stránkování
 PE - zapnutí chráněného módu

Reference

Externí odkazy 
 

Procesory Intel
Architektura x86