Intel 8086 | |
---|---|
CPU | |
| |
Productie | 8 iunie 1978-1990 |
Dezvoltator | Intel |
Producătorii |
|
frecvența procesorului | 4-16 MHz |
Tehnologia de producție | HMOS , CHMOS , 3 µm |
Seturi de instrucțiuni | x86-16 _ |
conector | |
Nuclei | |
Intel 8085Intel 8088 |
Intel 8086 (cunoscut sub numele de iAPX 86/10 în 1980-85) este primul microprocesor Intel pe 16 biți . A fost dezvoltat din primăvara anului 1976 și lansat pe 8 iunie 1978 [1] . Arhitectura setului de instrucțiuni implementată în procesor a devenit baza binecunoscutei arhitecturi x86 . Procesoarele acestei arhitecturi au devenit cea mai de succes linie de procesoare Intel. Procesoarele moderne ale acestei arhitecturi păstrează capacitatea de a executa toate instrucțiunile acestui set.
O versiune ușor modificată a procesorului cu o magistrală de date pe 8 biți , lansată în 1979 sub numele Intel 8088 , a fost folosită în computerele personale IBM PC și IBM PC/XT .
În 1972, Intel a lansat 8008 , primul microprocesor pe 8 biți. Acesta a folosit un set de instrucțiuni dezvoltat de Datapoint Corporation pentru terminale de computer programabile , care este, de asemenea, potrivit pentru procesoarele de uz general. Acest procesor a necesitat mai multe cipuri suplimentare pentru a fi utilizate într-un computer cu drepturi depline, parțial pentru că folosea pachetul mic de 18 pini folosit pentru cipurile DRAM Intel și, prin urmare, nu putea avea o magistrală de adrese separată.
Doi ani mai târziu, în 1974, 8080 a fost lansat într-un pachet DIP nou, cu 40 de pini , conceput inițial pentru cipuri de calculator . Avea o magistrală de adrese separată și un set de instrucțiuni extins care era compatibil cu codul (nu binar) cu 8008, completat pentru comoditatea de programare cu mai multe instrucțiuni pe 16 biți. Procesorul Intel 8080 este adesea menționat ca fiind primul microprocesor cu adevărat utilizabil și util. A fost înlocuit cu Intel 8085 în 1977 , cu o singură tensiune de alimentare (+5 V) în loc de cele trei diferite de pe predecesorul său și alte câteva îmbunătățiri. Cei mai renumiți rivali au fost Motorola 6800 (1974) pe 8 biți , Microchip PIC 16X (1975) (aici probabil se referă la procesorul General Instrument CP1600 ), MOS Technology 6502 (1975), Zilog Z80 (1976) și Motorola 6809 (1978 ). ).
Piața microprocesoarelor pe 8 biți a fost supraaglomerată la sfârșitul anilor 1970 , iar Intel, renunțând la încercările de a-și pune picior în ea, lansează primul său procesor pe 16 biți. Proiectul 8086 a fost început în mai 1976 și a fost conceput inițial ca un înlocuitor temporar pentru proiectul ambițios și întârziat iAPX 432 (cunoscut și ca 8800) . . A fost o încercare, pe de o parte, de a rezista procesoarelor mai puțin tardive de 16 și 32 de biți de la alți producători (cum ar fi Motorola, Zilog și National Semiconductor ) și, pe de altă parte, de a combate amenințarea Zilog Z80. (dezvoltat de o echipă condusă de Federico care a părăsit Intel). ), care a devenit de mare succes. Prima versiune a arhitecturii 8086 (sistem de instrucțiuni, întreruperi, memorie și I/O) a fost dezvoltată de la jumătatea lunii mai până la jumătatea lunii august de Stephen Morse . Apoi, echipa de dezvoltare a fost mărită la patru persoane, care au prezentat două documente principale de proiectare - „8086 Architectural Specifications” și „8086 Device Specifications”. În timpul dezvoltării, nu au fost utilizate programe CAD specializate , iar diagramele au fost realizate din simboluri text. Au fost folosite elemente deja testate de microarhitectură și implementare fizică, în principal de la Intel 8085.
Procesorul Intel 8086 este un procesor Intel 8080 modernizat și, deși dezvoltatorii nu și-au propus obiectivul de a atinge compatibilitatea completă cu software-ul, majoritatea programelor scrise pentru Intel 8080 pot rula pe Intel 8086 după recompilare. Noul procesor aduce o mulțime de modificări care au permis o creștere semnificativă (de 10 ori) a performanței față de generația anterioară a procesoarelor companiei.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Înregistrări 8086 |
În total, procesorul Intel 8086 are 14 registre pe 16 biți : 8 registre de uz general (AX, BX, CX, DX), 2 registre index (SI, DI), 2 pointer (BP, SP), 4 registre segmente (CS). , SS , DS, ES), contor de program sau indicator de instrucțiuni (IP) și registru de steaguri (FLAGS, include 9 steaguri). În același timp, registrele de date (AX, BX, CX, DX) permit adresarea nu numai a registrelor întregi, ci și a jumătății lor inferioare (registruri AL, BL, CL, DL) și a jumătății superioare (AH, BH, CH, DH). registre), care nu numai că permiteau utilizarea software -ului pe 16 biți , care era nou la acea vreme, dar și păstrau compatibilitatea cu programele pe 8 biți (deși trebuiau cel puțin recompilate ).
Dimensiunea magistralei de adrese a fost crescută de la 16 biți la 20 de biți, ceea ce a făcut posibilă adresarea a 1 MB (2 20 de octeți) de memorie. Autobuzul de date era pe 16 biți. Cu toate acestea, într-un microprocesor, magistrala de date și magistrala de adrese foloseau aceiași pini de pe pachet. Acest lucru a condus la faptul că este imposibil să aplicați simultan adrese și date pe magistrala de sistem. Multiplexarea adreselor și a datelor de-a lungul timpului permite utilizarea a doar 20 de pini de pachet, dar reduce rata de date. Datorită faptului că execuția instrucțiunilor individuale este mai mică decât un ciclu I/O, un buffer de instrucțiuni de 6 octeți a fost introdus în procesor (pentru prima dată), acest lucru a făcut posibilă executarea, de exemplu, instrucțiuni de adăugare în paralel cu instrucțiunile I/O.
Deoarece registrele și ALU -urile procesorului 8086 sunt pe 16 biți, acest lucru impune o limită a operațiunilor de calcul a adresei și dimensiunea maximă a acesteia. Pentru a calcula adrese mai mari de 16 biți, ar fi necesară extinderea registrelor și ALU-urilor și reelaborarea setului de instrucțiuni, ceea ce, la rândul său, ar duce la creșterea numărului de tranzistori, a complexității și a costului procesorului.
Cu toate acestea, scăderea prețurilor la memorie a făcut ca procesorul să fie profitabil pentru aplicațiile care necesitau procesarea unor cantități mari de date. Extinderea spațiului de adrese a fost una dintre cerințele pentru noul procesor [2] . Ca urmare, a fost aleasă o schemă de compromis: unitatea de execuție (EU) a procesorului a fost lăsată pe 16 biți, iar spațiul de adrese a fost extins în unitatea de interfață magistrală procesorului (BIU) prin implementarea adresei de memorie segmentată , ceea ce mărește adresa. lățimea magistralei la 20 de biți.
Adresarea segmentată a memoriei exploatează faptul că accesările la memorie din partea procesorului pot fi ușor împărțite în cod de program, procesare de date și accesări la stivă . Accesurile la diferite tipuri de conținut de memorie sunt mapate în zone independente de memorie din segmentele de spațiu de adrese extinse . 8086 utilizează patru registre de segmente de 16 biți pentru această mapare a adresei:
Fiecare registru de segment specifică adresa de început a unui segment în memorie, iar segmentele se pot suprapune sau se suprapune. În mod implicit, registrul CS este utilizat la preluarea instrucțiunilor, registrul SS este utilizat când se efectuează operațiuni de stivă, iar registrele DS și ES sunt utilizate la accesarea datelor. În cazul accesului la date, registrul de segment implicit poate fi modificat prin adăugarea unui prefix special de înlocuire a segmentului [3] înaintea codului de instrucțiune .
În acest caz, în cadrul segmentului, sunt utilizate adrese de execuție pe 16 biți, stocate în contorul de program , pointerul stivei sau calculate în conformitate cu tipul de adresare specificat în codul de instrucțiune. De fapt, 4 zone de memorie de 64 KB fiecare sunt întotdeauna disponibile procesorului. Dacă acest volum este insuficient, programul trebuie să includă logica de control al registrului de segment. Această logică poate încetini semnificativ accesul la memorie, astfel încât compilatoarele din limbaje de nivel înalt pentru platforma x86 vă permit să specificați modelul de memorie în conformitate cu cantitatea necesară de cod și date.
Adresa fizică de 20 de biți, care permite adresarea până la 1 MB de memorie, se obține prin adăugarea adresei de execuție și a valorii registrului de segment, înmulțită cu 16. Datorită prezenței unei înmulțiri cu 16, un segment începe întotdeauna la o limită de bloc de 16 octeți, numită paragraf . Acest lucru poate risipi ceva memorie dacă datele de segment utilizate nu sunt multiplu ale unui paragraf. În special, acesta a fost unul dintre motivele pentru care dezvoltatorii au abandonat implementarea unei adrese pe 24 de biți în 8086, deoarece dimensiunea paragrafului a crescut la 256 de octeți [2] .
O posibilă depășire la calcularea unei adrese fizice în procesorul 8086 este ignorată. De exemplu, o instrucțiune de salt necondiționat la adresa 0010 16 cu o valoare a segmentului de cod de FFFF 16 va sări la adresa fizică 0. Acest lucru nu se întâmplă la procesoarele x86 mai vechi, cum ar fi 80286, care avea 24 de linii de adresă, deci IBM PC / Calculatoarele AT aveau o poartă specială Gate A20, care resetează forțat bitul A20 al magistralei sistemului de adrese.
Deoarece în procesoarele x86 mai vechi au fost introduse noi modalități de extindere a spațiului de adrese, metoda folosită de procesorul 8086 a fost numită „ mod real de adresare ”.
Sistemul de comandă al procesorului Intel 8086 este format din 98 de comenzi (și mai mult de 3800 dintre variantele acestora): 19 comenzi de transfer de date, 38 de comenzi de procesare a datelor, 24 de comenzi de tranziție și 17 comenzi de control al procesorului. Sunt posibile 7 moduri de adresare. Microprocesorul nu conține instrucțiuni pentru lucrul cu numere în virgulă mobilă. Această caracteristică este implementată de un cip separat numit coprocesor matematic , care este instalat pe placa de bază. Coprocesorul nu trebuia deloc fabricat de Intel (modelul Intel 8087 ), de exemplu, unii producători de cipuri, precum Weitek , au lansat coprocesoare care erau mai puternice decât Intel.
Setul de instrucțiuni pentru procesorul Intel 8086 include câteva instrucțiuni de șir foarte puternice. Dacă instrucțiunea are prefixul REP (din engleză repetare, repetiție), atunci procesorul va efectua operații cu blocuri - mutarea blocului de date, compararea blocurilor de date, atribuirea unei anumite valori unui bloc de date de o anumită dimensiune etc., adică o instrucțiune 8086 cu prefixul REP poate executa 4-5 instrucțiuni care sunt executate pe alte procesoare. Tehnici similare au fost implementate și în alte procesoare - Zilog Z80 avea instrucțiuni pentru mutarea și căutarea blocurilor, iar Motorola 68000 poate efectua operațiuni cu blocuri folosind doar două comenzi.
Microprocesorul Intel 8086 folosește o formă primitivă de pipelining . Blocul de interfață magistrală alimentează fluxul de comandă către dispozitivul de execuție printr-o coadă de comenzi de 6 octeți . Astfel, preluarea și executarea noilor instrucțiuni pot avea loc simultan. Acest lucru crește semnificativ debitul procesorului și elimină necesitatea de a aștepta ca instrucțiunea să fie citită din memorie atunci când interfața microcircuitului este ocupată cu alte operațiuni.
Procesorul a fost produs în pachete din ceramică și plastic cu 40 de pini. Au fost disponibile versiuni cu frecvențe de 5, 8 și 10 MHz, desemnate ca 8086, 8086-2 și 8086-1 [4] .
Principalii concurenți ai microprocesorului Intel 8086 au fost chipset-urile Motorola 68000 , Zilog Z8000 , F-11 și J-11 din familia PDP -11 , MOS Technology 65C816 . Într-o oarecare măsură, în domeniul dezvoltării militare, concurenții au fost implementări ale procesoarelor MIL-STD-1750A .
Analogii microprocesorului Intel 8086 au fost astfel de evoluții precum NEC V30 , care a fost cu 5% mai productiv decât Intel 8086, dar era pe deplin compatibil cu acesta. Analogul sovietic era microprocesorul K1810VM86 , care făcea parte din seria de microcircuite K1810 .
Procesoarele 8086 și 8088 pot funcționa în două moduri: maxim și minim [5] .
Modul maxim este folosit în sistemele complexe cu multiprocesor, este necesar și pentru a lucra cu coprocesorul matematic 8087. funcționează cu coprocesorul matematic 8087, care poate fi instalat într-un soclu de pe placa de bază a computerului.
Modul minim este utilizat în sistemele uniprocesor. În acest mod, procesorul generează singur semnalele de control al magistralei sistemului.
Modul hardware este determinat de schema de comutare a procesorului și nu poate fi schimbat de software. Pentru a seta modul, se folosește pinul 33 (MN / MX ), care este conectat fie la o sursă de alimentare, fie la un fir comun. Schimbarea stării pinului 33 modifică funcțiile altor opt pini de procesor responsabili pentru controlul magistralei de sistem și comunicarea cu alte procesoare.
Pentru a crea un sistem de microprocesor bazat pe procesoare 8086 și 8088, Intel a produs următoarele cipuri de suport [6] :
De asemenea, microcircuitele dezvoltate anterior pentru procesoarele 8080 și 8085 [6] ar putea fi utilizate cu procesoare :
Inițial, procesorul Intel 8086 a fost folosit în sistemele industriale. Aplicarea sa în masă a fost împiedicată de un preț destul de ridicat - 360 USD la momentul anunțului [7] . În plus, subsistemul de memorie pe 16 biți utilizat de procesor necesita de obicei de două ori mai multe cipuri decât unul pe 8 biți, crescând dimensiunea, complexitatea și costul plăcilor de circuite imprimate. În legătură cu această conducere a Intel, la sfârșitul dezvoltării Intel 8086, s-a decis lansarea unei versiuni bugetare [8] . Procesorul Intel 8088 la momentul anunțului costa 124,8 USD [9] și folosea un subsistem de memorie pe 8 biți, ceea ce îl făcea mai atractiv din punct de vedere economic. A devenit baza unuia dintre cele mai cunoscute computere personale - IBM PC .
A fost folosit procesorul Intel 8086:
Proiect de emulator de procesor Intel 8086 pe STM32 MK : [14]
procesoare Intel | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||
|