Il microprocessore Intel 8086, introdotto nel 1978, è considerato il capostipite della celebre architettura x86, ancora oggi alla base di molti processori moderni. È stato progettato per offrire maggiore potenza rispetto ai predecessori 8008 e 8080, migliorando notevolmente le capacità di calcolo, l’accesso alla memoria e la flessibilità del linguaggio macchina.

L’Intel 8086 è un microprocessore a 16 bit, il che significa che può elaborare dati a 16 bit per volta. Questo rappresenta un netto salto rispetto agli 8 bit dei processori precedenti. Anche il bus indirizzi è più ampio: è largo 20 bit, il che consente di indirizzare fino a 1.048.576 locazioni di memoria, ovvero 1 megabyte. Per l’epoca era una capacità molto elevata, sebbene non tutta la memoria fosse direttamente accessibile in modo lineare.
Per superare il limite dell’accesso diretto a soli 64 kilobyte (capacità di un indirizzo a 16 bit), l’8086 introduce un sistema di segmentazione della memoria. La memoria è divisa in segmenti da 64 KB, e per accedere a una locazione specifica si combinano due registri: un registro di segmento (segment register) e un offset a 16 bit. I segmenti disponibili sono quattro: CS (code segment), DS (data segment), SS (stack segment), ES (extra segment). L’indirizzo fisico reale si ottiene moltiplicando il valore del registro di segmento per 16 e sommando l’offset. Questo meccanismo consente l’accesso all’intero megabyte di memoria disponibile.
Il microprocessore è composto da due unità principali: l’unità di esecuzione (EU) e l’unità di interfaccia con il bus (BIU). L’unità di esecuzione si occupa dell’elaborazione delle istruzioni, usando l’ALU, i registri e i flag. L’unità di interfaccia gestisce il collegamento con la memoria e le periferiche, occupandosi di prelevare le istruzioni e metterle in una coda (instruction queue) che rende possibile la cosiddetta esecuzione in pipelining. Questo significa che mentre un’istruzione viene eseguita, la successiva può già essere prelevata, aumentando la velocità complessiva del processore.
Il processore dispone di una serie di registri a 16 bit suddivisi in tre gruppi. Il primo gruppo comprende i registri generali: AX, BX, CX e DX, ciascuno dei quali può essere suddiviso in due registri da 8 bit (per esempio AX si divide in AH e AL). Il secondo gruppo include i registri indice e puntatori: SI (source index), DI (destination index), SP (stack pointer) e BP (base pointer). Questi vengono usati per operazioni su stringhe, accesso a memoria e gestione dello stack. Il terzo gruppo è formato dai registri di segmento già citati: CS, DS, SS, ES.
Il registro IP (instruction pointer) tiene traccia dell’indirizzo della prossima istruzione da eseguire all’interno del segmento di codice. Inoltre, l’8086 dispone di un registro dei flag, che indica lo stato del processore e dei risultati delle operazioni, come il flag zero, carry, sign, overflow, direction, interrupt enable, e altri.
Il bus dati del processore può essere a 16 bit, ma nella versione 8086 è effettivamente largo 16 bit, mentre nella versione 8088, più economica e compatibile con l’IBM PC originale, il bus dati è stato ridotto a 8 bit pur mantenendo l’architettura interna a 16 bit.
Il ciclo macchina dell’8086 è più sofisticato rispetto ai predecessori. Le istruzioni vengono prelevate dalla memoria e inserite in una coda a 6 byte, da cui l’unità di esecuzione le legge. Questo sistema di coda consente un primo livello di parallelismo, migliorando l’efficienza. Il processore supporta istruzioni a lunghezza variabile, che possono andare da 1 a 6 byte.
Il set di istruzioni dell’8086 è molto più ricco di quello dell’8080. Oltre alle normali operazioni aritmetiche, logiche e di controllo di flusso, supporta operazioni su stringhe, gestione avanzata dello stack, e istruzioni specifiche per segmenti e puntatori. Esistono anche istruzioni per la gestione delle interruzioni, che possono essere mascherabili o non mascherabili, e sono fondamentali per il controllo delle periferiche.
L’input/output è gestito tramite istruzioni dedicate (IN e OUT), con un sistema separato dalla memoria, chiamato I/O mappato. Il processore può indirizzare fino a 65.536 porte di I/O, grazie a un bus indirizzi I/O a 16 bit.
Un’altra caratteristica importante è il supporto per la programmazione strutturata e modulare, grazie all’uso esteso dello stack e alla possibilità di effettuare chiamate a subroutine e ritorni, con il salvataggio automatico degli indirizzi.
Il microprocessore Intel 8086 rappresenta una svolta nell’evoluzione dei sistemi di calcolo, introducendo l’architettura x86 a 16 bit, un accesso alla memoria fino a 1 MB tramite segmentazione, una pipeline rudimentale con la divisione in due unità, e un ricco set di istruzioni. Grazie a queste caratteristiche, ha posto le basi per lo sviluppo dei PC moderni e ha influenzato in modo determinante l’intera industria dell’informatica.
Leggi anche…
