Intel 8086 | |
---|---|
procesor | |
Mikroprocesor Intel 8086 | |
Výroba | 8. června 1978 až 1990 |
Vývojář | Intel |
Výrobci |
|
Frekvence CPU | 4-16 MHz |
Produkční technologie | HMOS , CHMOS , 3 µm |
Instrukční sady | x86-16 _ |
Konektor | |
Nuclei | |
Intel 8085Intel 8088 |
Intel 8086 (známý jako iAPX 86/10 v letech 1980-85) je první 16bitový mikroprocesor společnosti Intel . Byl vyvíjen od jara 1976 a uveden na trh 8. června 1978 [1] . Architektura instrukční sady implementovaná v procesoru se stala základem známé architektury x86 . Procesory této architektury se staly nejúspěšnější řadou procesorů Intel. Moderní procesory této architektury si zachovávají schopnost provádět všechny instrukce této sady.
Mírně upravená verze procesoru s 8bitovou datovou sběrnicí , vydaná v roce 1979 pod názvem Intel 8088 , byla použita v osobních počítačích IBM PC a IBM PC/XT .
V roce 1972 Intel vydal 8008 , první 8bitový mikroprocesor. Používal instrukční sadu vyvinutou společností Datapoint Corporation pro programovatelné počítačové terminály , která je vhodná i pro procesory pro všeobecné použití. Tento procesor vyžadoval několik dalších čipů pro použití v plnohodnotném počítači, částečně proto, že používal malé 18pinové pouzdro používané pro čipy DRAM společnosti Intel , a proto nemohl mít samostatnou adresovou sběrnici.
O dva roky později, v roce 1974, byla uvedena na trh 8080 v novém 40pinovém DIP pouzdru původně navrženém pro čipy kalkulačky . Měl samostatnou adresovou sběrnici a rozšířenou sadu instrukcí, která byla kódově (ne binárně) kompatibilní s 8008, doplněnou pro pohodlí programování několika 16bitovými instrukcemi. Procesor Intel 8080 je často označován jako první skutečně použitelný a užitečný mikroprocesor. To bylo nahrazeno Intel 8085 v roce 1977 , s jediným napájecím napětím (+5 V) namísto tří různých na jeho předchůdci a několika dalšími vylepšeními. Nejznámějšími soupeři byly 8bitové Motorola 6800 (1974), Microchip PIC 16X (1975) (zde pravděpodobně odkazuje na procesor General Instrument CP1600 ), MOS Technology 6502 (1975), Zilog Z80 (1976) a Motorola 6809 (1978 ). ).
Trh s 8bitovými mikroprocesory byl koncem 70. let přeplněn a Intel opustil pokusy prosadit se na něm a vydal svůj první 16bitový procesor. Projekt 8086 byl zahájen v květnu 1976 a původně byl koncipován jako dočasná náhrada za ambiciózní a opožděný projekt iAPX 432 (také známý jako 8800) . . Jednalo se na jedné straně o pokus odolat méně pozdním 16- a 32bitovým procesorům od jiných výrobců (jako jsou Motorola, Zilog a National Semiconductor ) a na straně druhé o boj s hrozbou ze strany Zilog Z80. (vyvinutý týmem vedeným Federicem , který opustil Intel). ), který se stal velmi úspěšným. První verzi architektury 8086 (instrukční systém, přerušení, paměť a I/O) vyvíjel od poloviny května do poloviny srpna Stephen Morse . Poté se vývojový tým rozrostl na čtyři lidi, kteří předložili dva hlavní designové dokumenty – „8086 Architectural Specifications“ a „8086 Device Specifications“. Při vývoji nebyly použity specializované CAD programy a diagramy byly vytvořeny z textových znaků. Byly použity již testované prvky mikroarchitektury a fyzické implementace, především z Intel 8085.
Procesor Intel 8086 je vylepšený procesor Intel 8080 , a přestože si vývojáři nestanovili za cíl dosáhnout plné softwarové kompatibility, většina programů napsaných pro Intel 8080 může po rekompilaci běžet na Intel 8086. Nový procesor přináší spoustu změn, které umožnily výrazné (10x) zvýšení výkonu oproti předchozí generaci firemních procesorů.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Registry 8086 |
Celkem má procesor Intel 8086 14 16bitových registrů : 8 obecných registrů (AX, BX, CX, DX), 2 indexové registry (SI, DI), 2 ukazatele (BP, SP), 4 segmentové registry (CS , SS , DS, ES), programový čítač nebo ukazatel instrukcí (IP) a registr příznaků (FLAGS, obsahuje 9 příznaků). Datové registry (AX, BX, CX, DX) přitom umožňují adresovat nejen celé registry, ale i jejich spodní polovinu (registry AL, BL, CL, DL) a horní polovinu (AH, BH, CH, DH registry), což nejen umožnilo použití 16bitového softwaru , který byl v té době nový, ale také si zachovalo zpětnou kompatibilitu s 8bitovými programy (ačkoli musely být alespoň překompilovány ).
Velikost adresové sběrnice byla zvýšena z 16 bitů na 20 bitů, což umožnilo adresovat 1 MB (2 20 bajtů) paměti. Datová sběrnice byla 16bitová. V mikroprocesoru však datová a adresová sběrnice používaly stejné kolíky na obalu. To vedlo k tomu, že není možné současně aplikovat adresy a data na systémovou sběrnici. Multiplexování adres a dat v průběhu času umožňuje použít pouze 20 pinů balíčku, ale snižuje přenosovou rychlost. Vzhledem k tomu, že provádění jednotlivých instrukcí je menší než I/O cyklus, byla do procesoru (poprvé) zavedena 6bajtová instrukční vyrovnávací paměť, což umožnilo provádět např. sčítací instrukce v paralelně s I/O instrukcemi.
Protože registry a ALU procesoru 8086 jsou 16bitové, omezuje to operace výpočtu adresy a její maximální velikost. Pro výpočet adres větších než 16 bitů by bylo nutné rozšířit registry a ALU a přepracovat instrukční sadu, což by vedlo ke zvýšení počtu tranzistorů, složitosti a ceně procesoru.
Klesající ceny paměti však způsobily, že procesor byl ziskový pro aplikace, které vyžadovaly zpracování velkého množství dat. Rozšíření adresního prostoru bylo jedním z požadavků na nový procesor [2] . V důsledku toho bylo zvoleno kompromisní schéma: prováděcí jednotka (EU) procesoru byla ponechána 16bitová a adresní prostor byl rozšířen v jednotce rozhraní procesorové sběrnice (BIU) implementací segmentovaného adresování paměti , což zvyšuje adresu. šířka sběrnice do 20 bitů.
Segmentované adresování paměti využívá skutečnosti, že přístupy do paměti na straně procesoru lze snadno rozdělit na programový kód, zpracování dat a přístupy do zásobníku . Přístupy k různým typům obsahu paměti jsou mapovány na nezávislé oblasti paměti v segmentech rozšířeného adresního prostoru . 8086 používá čtyři 16bitové segmentové registry pro toto mapování adres:
Každý segmentový registr specifikuje adresu začátku segmentu v paměti a segmenty se mohou překrývat nebo překrývat. Standardně se registr CS používá při načítání instrukcí, registr SS se používá při provádění operací zásobníku a registry DS a ES se používají při přístupu k datům. V případě přístupu k datům lze výchozí registr segmentů změnit přidáním speciální předpony pro nahrazení segmentu [3] před kód instrukce .
V tomto případě jsou v rámci segmentu použity 16bitové prováděcí adresy, uložené v programovém čítači , ukazateli zásobníku nebo vypočtené podle typu adresování specifikovaného v kódu instrukce. Ve skutečnosti jsou procesoru vždy k dispozici 4 paměťové oblasti o velikosti 64 KB. Pokud je tento objem nedostatečný, program musí zahrnout řídicí logiku segmentového registru. Tato logika může výrazně zpomalit přístup k paměti, takže kompilátory z jazyků na vysoké úrovni pro platformu x86 umožňují specifikovat model paměti v souladu s požadovaným množstvím kódu a dat.
Fyzická 20bitová adresa, která umožňuje adresovat až 1 MB paměti, se získá sečtením prováděcí adresy a hodnoty segmentového registru vynásobené 16. Vzhledem k přítomnosti násobení 16 se segment vždy spustí na 16bajtové hranici bloku, nazývané odstavec . To může plýtvat pamětí, pokud použitá data segmentu nejsou násobkem odstavce. Zejména to byl jeden z důvodů, proč vývojáři opustili implementaci 24bitové adresy v 8086, protože velikost odstavce se zvýšila na 256 bajtů [2] .
Možné přetečení při výpočtu fyzické adresy v procesoru 8086 je ignorováno. Například instrukce nepodmíněného skoku na adresu 0010 16 s hodnotou segmentu kódu FFFF 16 skočí na fyzickou adresu 0. To se nestává u starších procesorů x86, jako je 80286, který měl 24 adresních řádků, takže IBM PC / Na počítačích AT bylo zavedeno speciální hradlo Gate A20, které násilně resetuje bit A20 adresové systémové sběrnice.
Protože u starších procesorů x86 byly zavedeny nové způsoby rozšiřování adresního prostoru, byla metoda používaná procesorem 8086 nazývána „ reálným režimem adresování “.
Příkazový systém procesoru Intel 8086 se skládá z 98 příkazů (a více než 3800 jejich variant): 19 příkazů pro přenos dat, 38 příkazů pro zpracování dat, 24 příkazů pro přechod a 17 příkazů pro řízení procesoru. K dispozici je 7 režimů adresování. Mikroprocesor neobsahuje instrukce pro práci s čísly s pohyblivou řádovou čárkou. Tato funkce je implementována samostatným čipem zvaným matematický koprocesor , který je nainstalován na základní desce. Koprocesor vůbec nemusel vyrábět Intel (Intel model 8087 ), například někteří výrobci čipů, jako Weitek , vydávali koprocesory výkonnější než Intel.
Instrukční sada procesoru Intel 8086 obsahuje některé velmi výkonné řetězcové instrukce. Pokud má instrukce předponu REP (z anglického repeat, opakování), pak bude procesor provádět operace s bloky – přesun datového bloku, porovnávání datových bloků, přiřazení určité hodnoty bloku dat o určité velikosti atd., to znamená, že jedna instrukce 8086 s prefixem REP může provádět 4-5 instrukcí, které jsou vykonávány na některých jiných procesorech. Podobné techniky byly implementovány i v jiných procesorech – Zilog Z80 měl instrukce pro přesun a vyhledávání bloků a Motorola 68000 umí provádět operace s bloky pomocí pouhých dvou příkazů.
Mikroprocesor Intel 8086 využívá primitivní formu pipeliningu . Blok rozhraní sběrnice dodává tok příkazů do prováděcího zařízení prostřednictvím 6bajtové fronty příkazů. Načítání a provádění nových instrukcí tedy může probíhat současně. To výrazně zvyšuje propustnost procesoru a eliminuje nutnost čekat na načtení instrukce z paměti, když je rozhraní mikroobvodu zaneprázdněno jinými operacemi.
Procesor se vyráběl v keramických a plastových obalech se 40 piny. K dispozici byly verze s frekvencemi 5, 8 a 10 MHz, označené jako 8086, 8086-2 a 8086-1 [4] .
Hlavními konkurenty mikroprocesoru Intel 8086 byly čipové sady Motorola 68000 , Zilog Z8000 , F-11 a J-11 rodiny PDP -11 , MOS Technology 65C816 . Do určité míry byly v oblasti vojenského vývoje konkurenty implementace procesorů MIL-STD-1750A .
Analogy mikroprocesoru Intel 8086 byly takové vývoje jako NEC V30 , který byl o 5 % produktivnější než Intel 8086, ale byl s ním plně kompatibilní. Sovětským analogem byl mikroprocesor K1810VM86 , který byl součástí řady mikroobvodů K1810 .
Procesory 8086 a 8088 mohou pracovat ve dvou režimech: maximální a minimální [5] .
Maximální režim se používá ve složitých víceprocesorových systémech, je vyžadován i pro práci s matematickým koprocesorem 8087. pracuje s matematickým koprocesorem 8087, který lze nainstalovat do patice na základní desce počítače.
Minimální režim se používá v jednoprocesorových systémech. V tomto režimu procesor sám generuje řídicí signály systémové sběrnice.
Hardwarový režim je určen schématem přepínání procesoru a nelze jej softwarově změnit. Pro nastavení režimu slouží pin 33 (MN / MX ), který je připojen buď ke zdroji napájení nebo ke společnému vodiči. Změna stavu kolíku 33 změní funkce osmi dalších procesorových kolíků zodpovědných za řízení systémové sběrnice a komunikaci s ostatními procesory.
Pro vytvoření mikroprocesorového systému založeného na procesorech 8086 a 8088 Intel vyrobil následující podpůrné čipy [6] :
Také mikroobvody dříve vyvinuté pro procesory 8080 a 8085 [6] by mohly být použity s procesory :
Zpočátku byl procesor Intel 8086 používán v průmyslových systémech. Jeho masovému uplatnění bránila poměrně vysoká cena – 360 $ v době oznámení [7] . Navíc 16bitový paměťový subsystém používaný procesorem obvykle vyžadoval dvakrát více čipů než 8bitový, což zvyšovalo velikost, složitost a cenu desek s plošnými spoji. V souvislosti s tímto vedením Intelu bylo na konci vývoje Intel 8086 rozhodnuto o vydání rozpočtové verze [8] . Procesor Intel 8088 v době oznámení stál 124,8 $ [9] a používal 8bitový paměťový subsystém, díky čemuž byl ekonomicky atraktivnější. Stal se základem jednoho z nejznámějších osobních počítačů - IBM PC .
Byl použit procesor Intel 8086:
Projekt emulátoru procesoru Intel 8086 na STM32 MK : [14]
procesory Intel | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|