Intel 8086 - Intel 8086
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
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
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
|
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 immed
enter
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ý, _memcpy
který 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. REP
Instrukce způsobí, že následující MOVSB
zopakovat, dokud CX je nula, automatické zvyšování SI a DI a dekrementování CX jak to opakuje. Alternativně lze MOVSW
instrukci 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á REP
instrukci, pokud je použita jako in-line předpona MOVSB
instrukce, jako v REP MOVSB
.
Tato rutina bude fungovat správně, pokud bude přerušena, protože čítač programu bude nadále ukazovat na REP
instrukci, 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
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).
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.
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).
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é
- Počet tranzistorů
- iAPX , pro název iAPX
Poznámky
Reference
externí odkazy
- Datové listy Intel
- Seznam 8086 CPU a jejich klonů na CPUworld.com
- 8086 vývodů
- Rozhraní maximálního režimu
- Uživatelská příručka 8086 Říjen 1979 INTEL Corporation ( dokument PDF )
- 8086 programové kódy pomocí emulátoru emu8086 (verze 4.08)
- Emulátor Intel 8086/80186 napsaný v jazyce C, tento soubor je součástí většího emulátoru počítače
-
Shirriff, Ken (červen 2020). „Pohled na kostku procesoru 8086“ .
- - (červen 2020). „Smršťovací bit: Jak Intel zmenšil procesor 8086“ .
- - (červenec 2020). „Registry procesoru Intel 8086: od čipu po tranzistory“ .
- - (srpen 2020). „Reverzní inženýrství zmije uvnitř Intel 8086“ .
- - (srpen 2020). „Zpětné inženýrství aritmetické/logické jednotky 8086 z fotek kostek“ .