Intel 8086 - Intel 8086

Intel 8086
Intel C8086.jpg
Vzácný procesor Intel C8086 ve fialovém keramickém DIP balíčku s postranně pájenými piny
Obecná informace
Spuštěno 1978
Přerušeno 1998
Běžní výrobci
Výkon
Max. Taktovací frekvence CPU 5 MHz až 10 MHz
Šířka dat 16 bitů
Šířka adresy 20 bitů
Architektura a klasifikace
Min. velikost funkce 3 µm
Instrukční sada x86-16
Fyzické specifikace
Tranzistory
Koprocesor Intel 8087 , Intel 8089
Balíčky
Zásuvka
Produkty, modely, varianty
Varianty
Dějiny
Předchůdce Intel 8085
Nástupce 80186 a 80286 (oba byly představeny na začátku roku 1982)

8086 (také volal iAPX 86 ) je 16bitový mikroprocesor čip navržený společností Intel od začátku roku 1976 a 8. června 1978, kdy byl propuštěn. Intel 8088 , vydáno v červenci 1, 1979, je mírně upravený čip s externí 8-bitové datové sběrnice (umožňuje použití levnějších a méně podpůrných IO ), a je pozoruhodný jako procesorem v původní IBM PC designu.

8086 dala vzniknout architektuře x86 , která se nakonec stala nejúspěšnější řadou procesorů společnosti Intel. 5. června 2018 Intel vydal limitovanou edici procesoru oslavující 40. výročí Intel 8086 s názvem Intel Core i7-8086K .

Dějiny

Pozadí

V roce 1972 Intel uvedl na trh 8008 , první 8bitový mikroprocesor. Implementovala instrukční sadu navrženou společností Datapoint s ohledem na programovatelné terminály CRT , což se také ukázalo jako poměrně obecné. Zařízení potřebovalo několik dalších integrovaných obvodů k výrobě funkčního počítače, částečně kvůli tomu, že byl zabalen do malého 18kolíkového „paměťového balíčku“, což vylučovalo použití samostatné adresové sběrnice (Intel byl v té době především výrobcem DRAM ).

O dva roky později společnost Intel uvedla na trh 8080 s využitím nových 40pólových balíků DIL původně vyvinutých pro integrované obvody kalkulaček, které umožňují samostatnou sběrnici adres. Má rozšířenou sadu instrukcí, která je kompatibilní se zdrojem (není binárně kompatibilní ) s 8008 a také obsahuje některé 16bitové instrukce, které usnadňují programování. Zařízení 8080 bylo nakonec nahrazeno 8085 (1977) založeným na vyčerpání zátěže , které vystačilo s jediným napájecím zdrojem +5 V namísto tří různých provozních napětí dřívějších čipů. Dalšími dobře známými 8bitovými mikroprocesory, které se v těchto letech objevily, jsou Motorola 6800 (1974), General Instrument PIC16X (1975), MOS Technology 6502 (1975), Zilog Z80 (1976) a Motorola 6809 (1978).

První design x86

Obraz procesoru procesoru Intel 8086

Projekt 8086 byl zahájen v květnu 1976 a původně byl zamýšlen jako dočasná náhrada za ambiciózní a zpožděný projekt iAPX 432 . Šlo o pokus upozornit na méně zpožděné 16 a 32bitové procesory jiných výrobců (například Motorola , Zilog a National Semiconductor ) a zároveň čelit hrozbě ze Zilogu Z80 (navrhl bývalý Zaměstnanci společnosti Intel), která se stala velmi úspěšnou. Architektura i fyzický čip byly proto vyvinuty poměrně rychle malou skupinou lidí a za použití stejných základních mikroarchitekturních prvků a technik fyzické implementace, jaké byly použity pro mírně starší 8085 (a pro které by 8086 také fungoval jako pokračování) .

8086, uváděný na trh jako zdroj kompatibilní , byl navržen tak, aby umožnil, aby byl montážní jazyk pro 8008, 8080 nebo 8085 automaticky převeden na ekvivalentní (suboptimální) zdrojový kód 8086 s malou nebo žádnou ruční úpravou. Aby to bylo možné, programovací model a sada instrukcí (volně) vychází z modelu 8080. Design 8086 byl však rozšířen tak, aby podporoval plné 16bitové zpracování.

Byly také přidány nové druhy pokynů; plná podpora pro podepsané celá čísla, base + offset adresování a self-opakování operace byly blízký Z80 designu, ale byli všichni trochu obecnější vyráběny v 8086. instrukce přímo podporují vnořené Algol -rodinný jazyky, jako Pascal a PL / M byly také přidal. Podle hlavního architekta Stephena P. Morseho to byl výsledek přístupu zaměřeného více na software než při návrhu dřívějších procesorů Intel (návrháři měli zkušenosti s prací s implementacemi kompilátorů). Mezi další vylepšení patřily mikrokódované instrukce násobení a dělení a struktura sběrnice lépe přizpůsobená budoucím koprocesorům (například 8087 a 8089 ) a víceprocesorovým systémům.

První revize instrukční sady a architektury na vysoké úrovni byla připravena zhruba po třech měsících, a protože nebyly použity téměř žádné nástroje CAD, na čipu současně pracovali čtyři inženýři a 12 lidí s rozvržením. 8086 trvala od nápadu k funkčnímu produktu o něco více než dva roky, což bylo v letech 1976–1978 považováno za poměrně rychlé řešení pro složitý design.

8086 byl sekvenován pomocí směsi náhodných logik a mikrokódů a byl implementován pomocí obvodů nMOS s deplecí zatížení s přibližně 20 000 aktivními tranzistory (29 000 počítajících všechna místa ROM a PLA ). Brzy byl přesunut do nového rafinovaného výrobního postupu nMOS s názvem HMOS (pro vysoce výkonný MOS), který společnost Intel původně vyvinula pro výrobu rychlých statických produktů RAM . Následovaly verze HMOS-II, HMOS-III a nakonec plně statická verze CMOS pro zařízení napájená bateriemi, vyráběná pomocí procesů Intel CHMOS . Původní čip měřil 33 mm² a minimální velikost prvku byla 3,2 μm.

Architekturu definoval Stephen P. Morse s pomocí Bruce Ravenela (architekta 8087) při upřesňování finálních revizí. Logický designér Jim McKevitt a John Bayliss byli hlavními inženýry vývojového týmu na úrovni hardwaru a Bill Pohlman manažerem projektu. Dědictví 8086 přetrvává v základní sadě instrukcí dnešních osobních počítačů a serverů; 8086 také propůjčil své poslední dvě číslice pozdějším rozšířeným verzím návrhu, jako je Intel 286 a Intel 386 , z nichž všechny se nakonec staly známými jako rodina x86 . (Další odkaz je, že ID dodavatele PCI pro zařízení Intel je 8086 h .)

Podrobnosti

Přiřazení pinů 8086 v režimu min a max

Autobusy a provoz

Všechny interní registry, stejně jako interní a externí datové sběrnice, jsou 16 bitů široké, což pevně zakládá identitu „16bitového mikroprocesoru“ 8086. 20bitová externí adresová sběrnice poskytuje 1  MB fyzického adresního prostoru (2 20 = 1 048 576). Tento adresní prostor je adresován pomocí „segmentace“ vnitřní paměti. Datová sběrnice je multiplexována s adresovou sběrnicí, aby se všechny řídicí linky vešly do standardního 40pólového dvojitého řadového balíčku . Poskytuje 16bitovou sběrnici I/O adres a podporuje 64  kB samostatného prostoru I/O. Maximální lineární adresní prostor je omezen na 64 kB, jednoduše proto, že interní registry adres/indexů jsou široké pouze 16 bitů. Programování přes 64 KB hranice paměti zahrnuje úpravu registrů segmentů (viz níže); tato obtíž existovala, dokud architektura 80386 nezavedla širší (32bitové) registry (hardware pro správu paměti v 80286 v tomto ohledu nepomohl, protože její registry jsou stále široké pouze 16 bitů).

Hardwarové režimy

Některé z ovládacích pinů, které přenášejí základní signály pro všechny externí operace, mají více než jednu funkci v závislosti na tom, zda je zařízení provozováno v min. Nebo max. Režimu. První režim je určen pro malé jednoprocesorové systémy, zatímco druhý je pro střední nebo velké systémy využívající více než jeden procesor (druh víceprocesorového režimu). Při použití koprocesoru 8087 nebo 8089 je vyžadován maximální režim. Režim určuje napětí na pinu 33 (MN/ MX ). Změna stavu kolíku 33 mění funkci některých dalších pinů, z nichž většina souvisí s tím, jak CPU zpracovává (místní) sběrnici. Režim je obvykle pevně zapojen do obvodu, a proto jej nelze softwarově změnit. Fungování těchto režimů je popsáno z hlediska časovacích diagramů v listech a manuálech společnosti Intel. V minimálním režimu jsou všechny řídicí signály generovány samotným 8086.

Registry a pokyny

Registry Intel 8086
1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (bitová pozice)
Hlavní registry
  AH AL AX (primární akumulátor)
  BH BL BX (základna, akumulátor)
  CH CL CX (čítač, akumulátor)
  DH DL DX (akumulátor, rozšířený acc)
Rejstříkové registry
0 0 0 0 SI S ource I ndex
0 0 0 0 DI D estination I ndex
0 0 0 0 BP B ase p ointer
0 0 0 0 SP S tack P ointer
Počitadlo programů
0 0 0 0 IP I nstruction P ointer
Segmentové registry
CS 0 0 0 0 C ode S egment
DS 0 0 0 0 D ata S egment
ES 0 0 0 0 E xtra S egment
SS 0 0 0 0 S tack S egment
Stavový registr
  - - - - Ó D T S Z - A - P - C Vlajky

8086 má osm více či méně obecných 16bitových registrů (včetně ukazatele zásobníku, ale bez ukazatele instrukcí, příznakového registru a segmentových registrů). Ke čtyřem z nich, AX, BX, CX, DX, lze také přistupovat jako k dvojnásobku 8bitových registrů (viz obrázek), zatímco ke zbývajícím čtyřem, SI, DI, BP, SP, je pouze 16bitový.

Kvůli kompaktnímu kódování inspirovanému 8bitovými procesory je většina instrukcí operace s jednou adresou nebo se dvěma adresami, což znamená, že výsledek je uložen v jednom z operandů. V paměti může být nejvýše jeden z operandů, ale tento paměťový operand může být také cíl , zatímco druhý operand, zdroj , může být registr nebo okamžitý . Jediné místo v paměti lze také často použít jako zdroj i cíl, což kromě jiných faktorů dále přispívá k hustotě kódu srovnatelné (a často lepší než) v té době s většinou osmibitových počítačů.

Míra obecnosti většiny registrů je mnohem větší než v 8080 nebo 8085. Registry 8086 však byly specializovanější než ve většině současných minipočítačů a jsou také implicitně používány některými instrukcemi. I když je to pro programátora sestavování naprosto rozumné, přidělení registrů pro kompilátory je ve srovnání s více ortogonálními 16bitovými a 32bitovými procesory té doby, jako jsou PDP-11 , VAX , 68000 , 32016 atd. , Mnohem komplikovanější . Vzhledem k tomu, že je pravidelnější než poměrně minimalistické, ale všudypřítomné 8bitové mikroprocesory, jako jsou 6502 , 6800 , 6809 , 8085 , MCS-48 , 8051 a další současné stroje na bázi akumulátorů, je výrazně snazší zkonstruovat účinný generátor kódu pro architekturu 8086.

Dalším faktorem je to, že 8086 také zavedl některé nové instrukce (nejsou k dispozici v 8080 a 8085), aby lépe podporovaly stackové programovací jazyky na vysoké úrovni, jako je Pascal a PL/M ; některé z užitečnějších instrukcí jsou a, ret velikost , přímo podporující „Pascal call convention “. (V dalších procesorech 80186, 80286 a 80386 bylo přidáno několik dalších, jako například a .) push mem-op push immedenter

Hardwarově je podporován zásobník 64 kB (jeden segment) rostoucí směrem k nižším adresám ; 16bitová slova jsou vložena do zásobníku a na vrchol zásobníku ukazuje SS: SP. Existuje 256  přerušení , která lze vyvolat jak hardwarem, tak softwarem. Přerušení se mohou kaskádovat pomocí zásobníku pro ukládání zpátečních adres .

8086 má 64 K 8bitových (nebo alternativně 32 K 16bitových slov) prostor I/O portů .

Vlajky

8086 má 16bitový registr příznaků . Devět z těchto příznaků kódu stavu je aktivních a indikuje aktuální stav procesoru: Carry flag (CF), Parity flag (PF), Auxiliary carry flag (AF), Zero flag (ZF), Sign flag (SF), Trap příznak (TF), příznak přerušení (IF), příznak směru (DF) a příznak přetečení (OF). Také označované jako stavové slovo, je rozložení registru příznaků následující:

Bit 15-12 11 10 9 8 7 6 5 4 3 2 1 0
Vlajka   Z DF LI TF SF ZF   AF   PF   CF

Segmentace

K dispozici jsou také čtyři 16bitové segmentové registry (viz obrázek), které umožňují 8086 CPU přistupovat k jedné megabajt paměti v netradičním způsobem. Spíše než zřetězení registru segmentů s registrem adres, jako u většiny procesorů, jejichž adresní prostor přesahuje jejich velikost registru, 8086 posouvá 16bitový segment pouze o čtyři bity před přidáním do 16bitového offsetu (16 × segment + offset) ), čímž se z 32bitového páru segment: offset vytvoří 20bitová externí (nebo efektivní nebo fyzická) adresa. Výsledkem je, že na každou externí adresu lze odkazovat pomocí 2 12 = 4096 různých segmentů: offsetové páry.

  0110 1000 1000 0111  0000 Segment , 16 bitů, posunuto o 4 bity vlevo (nebo vynásobeno 0x10)
+      0011 0100 1010 1001 Ofset , 16 bitů
                          
  0110 1011 1101 0001 1001 Adresa , 20 bitů

I když to mnoho programátorů považuje za komplikované a těžkopádné, má také výhody; malý program (méně než 64 kB) lze načíst počínaje pevným ofsetem (například 0000) ve vlastním segmentu, čímž se vyhnete nutnosti přemístění , s maximálně 15 bajty zarovnávacího odpadu.

Kompilátory pro rodinu 8086 běžně podporují dva typy ukazatelů , blízko a daleko . Blízké ukazatele jsou 16bitové offsety implicitně spojené s kódem nebo datovým segmentem programu, a proto je lze použít pouze v částech programu dostatečně malých, aby se vešly do jednoho segmentu. Daleké ukazatele jsou 32bitový segment: offsetové páry rozlišující na 20bitové externí adresy. Některé kompilátory také podporují obrovské ukazatele, které jsou jako vzdálené ukazatele, kromě toho, že aritmetika ukazatele na obrovském ukazateli s ním zachází jako s lineárním 20bitovým ukazatelem, zatímco aritmetika ukazatele na vzdáleném ukazateli se obtéká v jeho 16bitovém offsetu, aniž by se dotkla segmentové části adresy.

Aby se zabránilo potřebě specifikovat blízké a velké vzdálenosti u mnoha ukazatelů, datových struktur a funkcí, kompilátory také podporují „paměťové modely“, které určují výchozí velikosti ukazatelů. The Tiny (max 64k), malá (max 128) kompaktní (data> 64K), medium (kód> 64K), velká (kód, data> 64K) a velké (jednotlivá pole> 64K) modely pokrývají praktická kombinace poblíž , daleko a obrovské ukazatele na kód a data. Tyto malé modelu znamená, že kód a data jsou sdíleny v jednom segmentu, stejně jako ve většině procesorů založených na 8-bitové, a mohou být použity k vytvoření .cz souborů např. Předkompilované knihovny se často dodávají v několika verzích kompilovaných pro různé paměťové modely.

Podle Morse et al.,. návrháři skutečně uvažovali o použití 8bitového posunu (namísto 4bitového), aby vytvořili fyzický adresní prostor o velikosti 16 MB. Protože by to však vedlo k tomu, aby segmenty začínaly na 256bajtových hranicích a 1 MB byl u mikroprocesoru kolem roku 1976 považován za velmi velký, byla tato myšlenka zamítnuta. Rovněž nebylo k dispozici dostatek pinů v levném 40pólovém balíčku pro další čtyři piny adresové sběrnice.

V zásadě platí, že adresový prostor série x86 by byly rozšířeny v pozdějších procesory zvýšením hodnoty posunu, pokud aplikace získat jejich segmenty z operačního systému a nepřináší předpoklady o rovnocennosti různých segmentů: posun párů. V praxi bylo rozšířené používání „obrovských“ ukazatelů a podobných mechanismů a ploché 32bitové adresování umožněné pomocí 32bitových ofsetových registrů v 80386 nakonec rozšířilo omezený rozsah adresování obecnějším způsobem (viz níže).

Intel se mohl rozhodnout implementovat paměť v 16bitových slovech (což by eliminovalo signál BHE (Bus High Enable) spolu s velkou částí již popsaných složitostí adresové sběrnice). To by znamenalo, že ke všem kódům a datům instrukčních objektů by bylo nutné přistupovat v 16bitových jednotkách. Uživatelé 8080 již dávno zjistili, že procesor velmi efektivně využívá svou paměť. Díky velkému počtu 8bitových objektových kódů produkuje 8080 objektový kód tak kompaktní, jako některé z nejvýkonnějších minipočítačů na trhu v té době.

Pokud má 8086 zachovat 8bitové objektové kódy, a tedy efektivní využití paměti 8080, pak nemůže zaručit, že (16bitové) operační kódy a data budou ležet na hranici sudých lichých adres bajtů. První 8bitový operační kód posune další 8bitovou instrukci na lichý bajt nebo 16bitovou instrukci na hranici lichých a sudých bytů. Implementací signálu BHE a další potřebné logiky umožňuje 8086 instrukce existovat jako 1bajtové, 3bajtové nebo jakékoli jiné liché bytové objektové kódy.

Jednoduše řečeno: toto je výměna. Pokud je adresování paměti zjednodušeno tak, že k paměti je přístup pouze v 16bitových jednotkách, bude paměť využívána méně efektivně. Intel se rozhodl logiku zkomplikovat, ale využití paměti bylo efektivnější. To bylo v době, kdy byla velikost paměti podstatně menší a za příplatek, než na jakou jsou uživatelé dnes zvyklí.

Přenášení staršího softwaru

Malé programy mohou ignorovat segmentaci a používat pouze prosté 16bitové adresování. To umožňuje snadné přenesení 8bitového softwaru na 8086. Autoři většiny implementací DOS toho využili tím, že poskytli rozhraní pro programování aplikací velmi podobné CP/M a také zahrnovaly jednoduchý formát spustitelného souboru .com , identický na CP/M. To bylo důležité, když byly 8086 a MS-DOS nové, protože umožňovalo rychlé zpřístupnění mnoha stávajících aplikací CP/M (a dalších), což výrazně usnadnilo přijetí nové platformy.

Příklad kódu

Následující zdrojový kód assembleru 8086/8088 je pro podprogram pojmenovaný, _memcpykterý kopíruje blok datových bytů dané velikosti z jednoho umístění do druhého. Datový blok je kopírován po jednom bajtu a logika pohybu a smyčky dat využívá 16bitové operace.

 
 
 
 
 
 
 
 
 
 
 
0000:1000
 
0000:1000
0000:1000 55
0000:1001 89 E5
0000:1003 06
0000:1004 8B 4E 06
0000:1007 E3 11
0000:1009 8B 76 04
0000:100C 8B 7E 02
0000:100F 1E
0000:1010 07
 
0000:1011 8A 04
0000:1013 88 05
0000:1015 46
0000:1016 47
0000:1017 49
0000:1018 75 F7
 
0000:101A 07
0000:101B 5D
0000:101C 29 C0
0000:101E C3
0000:101F
; _memcpy(dst, src, len)
; Copy a block of memory from one location to another.
;
; Entry stack parameters
;      [BP+6] = len, Number of bytes to copy
;      [BP+4] = src, Address of source data block
;      [BP+2] = dst, Address of target data block
;
; Return registers
;      AX = Zero

            org     1000h       ; Start at 0000:1000h

_memcpy     proc
            push    bp          ; Set up the call frame
            mov     bp,sp
            push    es          ; Save ES
            mov     cx,[bp+6]   ; Set CX = len
            jcxz    done        ; If len = 0, return
            mov     si,[bp+4]   ; Set SI = src
            mov     di,[bp+2]   ; Set DI = dst
            push    ds          ; Set ES = DS
            pop     es

loop        mov     al,[si]     ; Load AL from [src]
            mov     [di],al     ; Store AL to [dst]
            inc     si          ; Increment src
            inc     di          ; Increment dst
            dec     cx          ; Decrement len
            jnz     loop        ; Repeat the loop

done        pop     es          ; Restore ES
            pop     bp          ; Restore previous call frame
            sub     ax,ax       ; Set AX = 0
            ret                 ; Return
            end proc

Výše uvedený kód používá registr BP (základní ukazatel) k vytvoření rámce volání , oblasti v zásobníku, která obsahuje všechny parametry a lokální proměnné pro provádění podprogramu. Tento druh konvence volání podporuje reentrantní a rekurzivní kód a od konce padesátých let minulého století jej používá většina jazyků podobných ALGOLU.

Výše uvedená rutina je poměrně těžkopádný způsob kopírování bloků dat. 8086 poskytuje vyhrazené pokyny pro kopírování řetězců bajtů. Tyto pokyny předpokládají, že zdrojová data jsou uložena na DS: SI, cílová data jsou uložena na ES: DI a že počet prvků ke kopírování je uložen v CX. Výše uvedená rutina vyžaduje, aby zdroj a cílový blok byly ve stejném segmentu, proto je DS zkopírován do ES. Sekci smyčky výše uvedeného lze nahradit:

0000:1011 FC
0000:1012 F3
0000:1013 A4
            cld                  ; Copy towards higher addresses
loop        rep                  ; Repeat until CX = 0
            movsb                ; Move the data block

Tím se zkopíruje blok dat po jednom bajtu. REPInstrukce způsobí, že následující MOVSBzopakovat, dokud CX je nula, automatické zvyšování SI a DI a dekrementování CX jak to opakuje. Alternativně lze MOVSWinstrukci použít ke kopírování 16bitových slov (dvojbajtů) najednou (v takovém případě CX místo počtu bytů počítá počet zkopírovaných slov). Většina assemblerů správně rozpozná REPinstrukci, pokud je použita jako in-line předpona MOVSBinstrukce, jako v REP MOVSB.

Tato rutina bude fungovat správně, pokud bude přerušena, protože čítač programu bude nadále ukazovat na REPinstrukci, dokud nebude dokončena kopie bloku. Kopie tedy bude pokračovat tam, kde skončila, když rutina služby přerušení vrátí kontrolu.

Výkon

Zjednodušený blokový diagram přes Intel 8088 (varianta 8086); 1 = hlavní & indexové registry; 2 = segmentové registry a IP; 3 = sčítač adresy; 4 = interní adresová sběrnice; 5 = fronta instrukcí; 6 = řídicí jednotka (velmi zjednodušené!); 7 = rozhraní sběrnice; 8 = interní databáze; 9 = ALU; 10/11/12 = externí adresa/data/řídicí sběrnice.

Přestože jsou multiplexované adresové a datové sběrnice částečně zastíněny jinými možnostmi návrhu v tomto konkrétním čipu, výkon mírně omezují; přenosy 16bitových nebo 8bitových veličin se provádějí ve čtyřhodinovém přístupovém cyklu paměti, který je rychlejší v 16bitových, i když pomalejších v 8bitových množstvích, ve srovnání s mnoha současnými 8bitovými procesory. Protože se pokyny liší od jednoho do šesti bytů, načítání a provádění se provádí souběžně a oddělují se do samostatných jednotek (jak to v dnešních procesorech x86 zůstává): Jednotka rozhraní sběrnice přivádí proud instrukcí do prováděcí jednotky prostřednictvím 6bajtové fronty předběžného načtení ( forma volně propojeného potrubí ), zrychlení operací s registry a immediáty , zatímco paměťové operace se zpomalily (o čtyři roky později byl tento problém s výkonem vyřešen u 80186 a 80286 ). Plná (namísto částečná) 16bitová architektura s ALU s plnou šířkou však znamenala, že nyní lze provádět 16bitové aritmetické instrukce s jediným cyklem ALU (místo dvou, pomocí interního přenosu, jako v 8080 a 8085) , což značně urychlí tyto pokyny. V kombinaci s ortogonalizacemi operací versus typy operandů a režimy adresování , stejně jako s dalšími vylepšeními, byl tento nárůst výkonu oproti 8080 nebo 8085 poměrně významný, a to navzdory případům, kdy mohou být starší čipy rychlejší (viz níže).

Doby provedení pro typické pokyny (v hodinových cyklech)
návod registrovat-registrovat okamžitě se zaregistrujte registr-paměť paměťový registr paměť okamžitá
mov 2 4 8+EA 9+EA 10+EA
ALU 3 4 9+EA, 16+EA, 17+EA
skok registr ≥ 11; štítek ≥ 15; stav, štítek ≥ 16
celočíselné násobení 70 ~ 160 (v závislosti na datech operandu a velikosti) včetně jakéhokoli EA
celočíselné dělení 80 ~ 190 (v závislosti na datech operandu a velikosti) včetně jakéhokoli EA
  • EA = čas pro výpočet efektivní adresy, v rozmezí od 5 do 12 cyklů.
  • Časování je nejlepší případ, v závislosti na stavu předběžného načtení, zarovnání instrukcí a dalších faktorech.

Jak je patrné z těchto tabulek, operace s registry a bezprostředně probíhajícími událostmi byly rychlé (mezi 2 a 4 cykly), zatímco instrukce operandů paměti a skoky byly poměrně pomalé; skoky trvaly více cyklů než na jednoduchých 8080 a 8085 a 8088 (používané v IBM PC) navíc brzdil užší autobus. Důvody, proč byla většina pokynů souvisejících s pamětí pomalá, byly trojí:

  • Volně spojené jednotky načítání a provádění jsou účinné pro předběžné načítání instrukcí, ale ne pro skoky a náhodný přístup k datům (bez zvláštních opatření).
  • Nebyl poskytnut žádný vyhrazený sčítač adresy; rutiny mikrokódu k tomu musely použít hlavní ALU (i když tam byl vyhrazený segment + offsetový sčítač).
  • Adresové a datové sběrnice byly multiplexovány , což si vynutilo o něco delší (33 ~ 50%) sběrnicový cyklus než v typických současných 8bitových procesorech.

Výkon přístupu k paměti byl však drasticky zvýšen s novou generací procesorů Intel řady 8086. 80186 a 80286 oba měli vyhrazenou adresu výpočtu hardware, což šetří mnoho cyklů a 80286 také měl oddělené (non-multiplexované) adresy a datové sběrnice.

Plovoucí bod

8086/8088 lze připojit k matematickému koprocesoru a zvýšit výkon s plovoucí desetinnou čárkou na základě hardwaru/mikrokódu . Intel 8087 byl standardní matematický koprocesor pro 8086 a 8088, pracující na 80-bitových čísel. Výrobci jako Cyrix (kompatibilní s 8087) a Weitek ( není kompatibilní s 8087) nakonec přišli s vysoce výkonnými koprocesory s plovoucí desetinnou čárkou, které konkurovaly 8087.

Verze čipů

Taktovací frekvence byla původně omezena na 5 MHz, ale poslední verze v HMOS byly specifikovány pro 10 MHz. HMOS-III a CMOS verze byly vyrobeny po dlouhou dobu (alespoň zatímco do 1990) pro vestavěné systémy , i když jeho nástupce je 80186 / 80.188 (který zahrnuje některé periférie on-chip), je více populární pro embedded použití .

80C86, CMOS verze 8086, byla použita v GRiDPad , Toshiba T1200 , HP 110 a nakonec v letech 1998–1999 Lunar Prospector .

Pro balení byl Intel 8086 k dispozici jak v keramických, tak v plastových obalech DIP.

Keramická varianta D8086
Plastová varianta P8086

Seznam Intel 8086

Modelové číslo Frekvence Technologie Teplotní rozsah Datum vydání Cena (USD)
8086 5 MHz HMOS 0 ° C až 70 ° C 08.06.1978 86,65 USD
8086-1 10 MHz HMOS II Komerční
8086-2 8 MHz HMOS II Komerční Leden/únor 1980 200 dolarů
8086-4 4 MHz HMOS Komerční 72,50 USD
I8086 5 MHz HMOS Průmyslové −40 ° C až +85 ° C Květen/červen 1980 173,25 $
M8086 5 MHz HMOS Vojenský stupeň −55 ° C až +125 ° C
80C86 CMOS

Deriváty a klony

Kompatibilní - a v mnoha případech vylepšené - verze vyráběly společnosti Fujitsu , Harris / Intersil , OKI , Siemens , Texas Instruments , NEC , Mitsubishi a AMD . Například dvojice NEC V20 a NEC V30 byla hardwarově kompatibilní s 8088 a 8086, přestože NEC vyrobila originální klony Intel μPD8088D a μPD8086D, ale začlenila instrukční sadu 80186 spolu s některými (ale ne všemi) 80186 vylepšení rychlosti poskytující možnost upgradu sady instrukcí i rychlosti zpracování, aniž by výrobci museli upravovat své návrhy. Takové relativně jednoduché a málo výkonné procesory kompatibilní s 8086 v CMOS se stále používají ve vestavěných systémech.

Elektronický průmysl Sovětského svazu byl schopen replikovat 8086 jak průmyslovou špionáží, tak reverzním inženýrstvím . Výsledný čip K1810VM86 byl binární a pinově kompatibilní s 8086.

i8086 a i8088 byly jádra stolních počítačů EC1831 a EC1832 kompatibilních se sovětskou PC . (EC1831 je ES identifikace IZOT 1036C a EC1832 je ES identifikace IZOT 1037C, vyvinutého a vyrobeného v Bulharsku. EC znamená Единая Система.) Počítač EC1831 (IZOT 1036C) měl však oproti hardwaru IBM PC významné hardwarové rozdíly . EC1831 byl první počítač kompatibilní s PC s dynamickým určováním velikosti sběrnice (US patent č. 4,831,514). Později byly některé z principů EC1831 přijaty v PS/2 (US patent č. 5 548 786) a některých dalších strojích (britská patentová přihláška, publikace č. GB-A-2211325, publikováno 28. června 1989).

Sovětský klon K1810VM86
OKI M80C86A QFP-56
NEC μPD8086D-2 (8 MHz) z roku 1984, 19. týden JAPONSKO (klon Intel D8086-2)

Podpora čipů

  • Intel 8237 : řadič s přímým přístupem do paměti (DMA)
  • Intel 8251 : univerzální synchronní/asynchronní přijímač/vysílač s rychlostí 19,2 kbit/s
  • Intel 8253 : programovatelný intervalový časovač, 3x 16bitový max. 10 MHz
  • Intel 8255 : programovatelné periferní rozhraní, 3x 8bitové I/O piny používané pro připojení tiskárny atd.
  • Intel 8259 : programovatelný řadič přerušení
  • Intel 8279 : ovladač klávesnice/displeje, skenuje matici klávesnice a matici displeje jako 7-seg
  • Intel 8282 / 8283 : 8bitová západka
  • Intel 8284 : generátor hodin
  • Intel 8286 / 8287 : obousměrný 8bitový ovladač. V roce 1980 byly k dispozici obě verze Intel I8286/I8287 (průmyslové kvality) za 16,25 USD v množství 100.
  • Intel 8288 : řadič sběrnice
  • Intel 8289 : arbitr sběrnice
  • NEC µPD765 nebo Intel 8272A : disketový řadič

Mikropočítače využívající 8086

  • Intel Multibus kompatibilních jednodeskový počítač ISBC 86/12 byla vyhlášena v roce 1978.
  • Xerox nástroj na psaní poznámek byl jedním z prvních přenosných počítačových návrhů v roce 1978 a používá tři čipy 8086 (jako procesor, grafický procesor a I / O procesoru), ale nikdy nevstoupila v komerční produkci.
  • Společnost Seattle Computer Products dodala systémy 8086 na bázi autobusu S-100 (SCP200B) již v listopadu 1979.
  • Norský Mycron 2000, představený v roce 1980.
  • Jeden z nejvlivnějších mikropočítačů ze všech, IBM PC , používal Intel 8088 , verzi 8086 s 8bitovou datovou sběrnicí (jak je uvedeno výše).
  • První Compaq Deskpro používal 8086 běžící na 7,16 MHz, ale byl kompatibilní s přídavnými kartami určenými pro 4,77 MHz IBM PC XT a mohl přepnout CPU na nižší rychlost (která také přepnula ve vyrovnávací paměti paměťové sběrnice, aby simulovala 8088 má pomalejší přístup), aby se předešlo problémům s časováním softwaru.
  • V AT&T 6300 PC (vyrobeném společností Olivetti a celosvětově známém pod několika značkami a čísly modelů) byl použit 8 MHz 8086-2, stolní mikropočítač kompatibilní s IBM PC. M24 / PC 6300 má 8bitové rozšiřující sloty kompatibilní s IBM PC / XT, ale některé z nich mají proprietární rozšíření poskytující plnou 16bitovou datovou sběrnici CPU 8086 (koncepčně podobné 16bitovým slotům IBM PC AT , ale odlišný v detailech designu a fyzicky nekompatibilní) a všechna systémová periferie včetně palubního video systému také využívají 16bitové přenosy dat. Pozdější Olivetti M24SP představoval 8086-2 běžící na plném maximu 10 MHz.
  • Modely IBM PS/2 25 a 30 byly postaveny na frekvenci 8 MHz 8086.
  • Amstrad PC1512 , PC1640 , PC2086, PC3086 a PC5086 používali 8086 CPU na 8 MHz.
  • NEC PC-9801 .
  • Tyto Tandy 1000 SL-série a RL stroje použít 9,47 MHz 8086 CPU.
  • IBM Displaywriter zpracování textu stroj a Wang Professional Computer, vyráběný firmou Wang Laboratories , také používal 8086.
  • NASA používala původní 8086 CPU na zařízení pro pozemní údržbu programu Space Shuttle Discovery až do konce programu raketoplánů v roce 2011. Toto rozhodnutí bylo učiněno s cílem zabránit regresi softwaru, která by mohla být důsledkem upgradu nebo přechodu na nedokonalé klony.
  • Monitory procesu a oblastního záření KAMAN

Viz také

Poznámky

Reference

externí odkazy