Intel 8086

Intel 8086 Descrizione di questa immagine, commentata anche di seguito Una versione con cassa in ceramica C8086. Informazioni generali
Produzione Dal 1978 al 1990
Creatore Intel
spettacoli
Frequenza da 4,77  MHz  a 10  MHz
Specifiche fisiche
alloggiamento Dip in ceramica o plastica a 40 pin
Finezza dell'incisione µm
Il parametro dell'intestazione è obbligatorio.Architettura e classificazione
Architettura x86

L' Intel 8086 (noto anche come iAPX 86 ) è un microprocessore CISC a 16 bit prodotto da Intel a partire dal 1978 . È il primo processore della famiglia x86 , che è diventata l' architettura di processore più popolare nel mondo dei personal computer , workstation e server per computer grazie alla scelta di IBM di utilizzarlo come base per esso.' IBM PC rilasciato pochi anni dopo. Il suo principale concorrente era il Motorola 68000 rilasciato nel 1979 e utilizzato in particolare nell'Apple Macintosh .

Fu lanciato nel maggio 1978 al prezzo di 360 dollari .

Successore dell'8080 , un processore a 8 bit, adotta un'architettura totalmente a 16 bit: i registri, il bus dati ei calcoli sono effettuati a 16 bit. Il suo bus di indirizzi è di 20 bit, il che gli consente di indirizzare 1 MB di spazio di memoria. In confronto, il 68000 sarà una soluzione ibrida a 16/32 bit un anno dopo, utilizzando registri a 32 bit, un bus di indirizzi a 24 bit e un bus dati e ALU a 16 bit.

Contiene 29.000 transistor incisi in 3 µm . La sua potenza di calcolo va da 0,33 MIPS (quando con clock a 4,77  MHz come nel PC IBM ) fino a 0,75 MIPS per la versione a 10  MHz .

Capace di eseguire le 4 operazioni fondamentali sui numeri interi (ADD, SUB, MUL, DIV), può anche essere esteso tramite l'interconnessione con un coprocessore Intel 8087 che aggiunge capacità di elaborazione dei numeri in virgola mobile.

Storia

Il progetto 8086 è iniziato nel maggio 1976. Inizialmente è stato concepito come un sostituto temporaneo dell'iAPX 432 , un progetto molto ambizioso che non è stato ancora completato e che, pochi anni dopo, sarà un fallimento commerciale. Intel sperava quindi di estromettere i processori della concorrenza (inclusi Motorola , Zilog e MOS Technology ) contrastando la minaccia dello Z80 , progettato da un ex dipendente Intel che lavorava sull'8080.

L'architettura del chip è stata sviluppata rapidamente da un piccolo gruppo di persone, utilizzando le stesse tecniche di produzione dell'Intel 8085 per garantire la compatibilità.

Consentendo l'uso dello stesso linguaggio assembly dell'8008, 8080 e 8085, l'8086 si presentava così come perfettamente compatibile, richiedendo poca o nessuna modifica del codice sorgente dei programmi. Tuttavia, offre un supporto completo a 16 bit, a differenza dell'8080 e dell'8085 che avevano solo funzionalità di base a 16 bit.

Sempre con l'obiettivo di facilitarne l'adozione, il produttore declinerà nel 1979 una versione denominata 8088 i cui bus esterni sono ridotti a 8 bit (dati) e 16 bit (indirizzo) per renderla più compatibile con le schede madri a 8 bit progettate per l' Intel8080 . Questo approccio esisterà anche per i suoi successori come l' 80186 (80188).

aneddoto

Nel 2002, a causa dell'obsolescenza dei suoi sistemi di validazione, la NASA è stata costretta ad acquistare processori 8086 su eBay perché non venivano prodotti da Intel dagli anni '90.

Nel 2018, Intel ha lanciato un processore in edizione limitata, Intel Core i7 - 8086K , per commemorare i 40 anni dell'Intel 8086.

Confezione

Esistono diverse versioni dell'8086, con diversi tipi di box e diverse frequenze massime supportate.

Gli alloggiamenti possono essere in ceramica o plastica. Il suffisso 8086 indica la frequenza massima: 5  MHz per l'8086, 8  MHz per l'8086-2 e 10  MHz per l'8086-1.

varianti

Nel 1979 Intel lanciò una variante di questo processore, ma con un bus dati esterno di soli 8 bit, si trattava dell'Intel 8088 . È stata questa versione più economica che è stata scelta da IBM per creare il primo PC IBM .

Architettura

Caratteristiche principali

Indirizzamento della memoria

Il processore ha un bus di indirizzi a 20 bit mentre la sua architettura è basata su un ALU a 16 bit. Per superare questo vincolo, il processore utilizza un meccanismo di segmentazione della memoria: l'indirizzo a un byte è ottenuto dalla combinazione di due registri a 16 bit tramite un'operazione di addizione che produce un risultato a 20 bit.

Concretamente, un cosiddetto registro di segmento delimita un blocco di memoria di 64 KB il cui indirizzo iniziale è uguale a value_of_register x 0x10 (quindi uno shift a sinistra di 4 bit: il valore 0x1234 specifica quindi l'indirizzo reale 0x12340). A questo valore proveniente dal registro di segmento si aggiunge un valore detto offset che proviene o da un altro registro più generale, oppure da un valore diretto del programma.

L'indirizzo di un byte viene quindi determinato come segue: indirizzo_fisico = valore_register_segmento x 0x10 + offset.

Il segmento è sempre identificato da uno dei 4 registri di segmento ALU: CS, DS, SS o ES.

Per convenzione, gli indirizzi segmentati sono indicati come segue: XX: YY o XX è il nome del registro di segmento utilizzato (o talvolta un valore diretto) e YY il nome del registro contenente l'offset (o ancora un valore diretto).

Ad esempio CS: IP è un indirizzo formato da una combinazione del registro del segmento di codice (CS) e del registro Instruction Pointer (IP).

Registri

A differenza del 68000, la cui architettura molto ortogonale permette di considerare la maggior parte dei registri come equivalenti, i registri dell'8086 hanno o una funzione dedicata, o caratteristiche specifiche che comportano operazioni che si applicano solo ad essi. È quindi importante avere una buona comprensione delle capacità di ciascuno dei registri e, per costruire un codice efficace, promuovere l'uso ottimale di questi.

interruzioni

Il processore dispone di un totale di 256 interrupt, alcuni relativi all'hardware, altri utilizzabili dal software. La tabella di interrupt è un blocco di memoria di 1024 byte che parte dall'indirizzo fisico 0x00000 e comprende 256 puntatori nella forma Segmento: Offset (quindi 4 byte ciascuno). La tabella del vettore di interrupt si estende quindi all'indirizzo 0x003FF. Ciascun puntatore indica l'indirizzo del gestore di interrupt associato. Quindi il primo puntatore corrisponde all'interruzione 0, ecc.

Quando viene alzato un interrupt di numero X, il processore carica nei registri CS:IP il puntatore presente all'indirizzo di memoria X*4, dopo averne salvato il contenuto nello stack.

Il numero dell'interruzione dipende dalla sua origine:

Poiché per ogni tipo di interrupt viene utilizzata la stessa logica di calcolo dell'indirizzo del gestore, non esiste una reale distinzione tra interrupt hardware, non mascherabili o software. Si consiglia quindi di evitare sovrapposizioni nell'assegnazione dei numeri.

I primi 5 interrupt sono riservati e prodotti dal processore stesso, direttamente o in combinazione con i componenti periferici:

Per questo motivo, gli interrupt hardware o software da 0 a 4 non possono essere utilizzati e, più in generale, la specifica riserva gli interrupt da 5 a 31 per l'utilizzo dell'hardware.

Tutti gli altri interrupt, oltre i 32, sono liberi di utilizzare e possono essere attivati ​​in particolare da un'istruzione INT x.

Porte di ingresso/uscita

Le porte di I/O hanno un proprio spazio di indirizzamento che copre un totale di 64 KB. Le porte vanno da 0x0000 a 0xFFFF e sono gestite da specifiche istruzioni:

Note e riferimenti

  1. (in) S. Mazor, "  Intel 8086's  " , IEEE Annals of the History of Computing , vol.  32, n °  1,gennaio-marzo 2010, pag.  75-79 ( DOI  10.1109/MAHC.2010.22 , leggi online )
  2. William J. Broad, "La  NASA controlla eBay per parti obsolete  " , New York Times ,12 maggio 2002
  3. Intel, "  Buon compleanno, 8086: Intel Core i7-8086K di ottava generazione in edizione limitata offre la migliore esperienza di gioco  " , Intel Newsroom,5 giugno 2018
  4. 8086 MICROPROCESSORE HMOS 16 BIT 8086 / 8086-2 / 8086-1 (dati tecnici ufficiali di Intel)