Intel D8086-2 – microprocessore 16 bit HMOS a 8 MHZ
Definizione
Il D8086-2 è una variante dell’8086 prodotta da Intel, un microprocessore 16 bit con bus esterno multiplexato indirizzi/dati, pensato per sistemi a microprocessore con memoria e periferiche esterne su bus parallelo. Il suffisso “-2” identifica la versione con frequenza nominale fino a 8 MHZ, collocandosi tra l’8086 “base” e l’8086-1.
Dal punto di vista architetturale, l’8086 introduce un modello a segmenti e una separazione interna in unità di bus e unità di esecuzione, con meccanismo di prefetch che migliora l’uso della banda di memoria rispetto a un’esecuzione strettamente sequenziale.

Bus interface unit (BIU) ed execution unit (EU): prefetch e coda istruzioni
Le funzioni interne sono divise logicamente in due blocchi:
BIU (bus interface unit): si occupa di fetch delle istruzioni, gestione della coda interna, accessi a memoria/I/O e rilocazione degli indirizzi (segmentazione).
EU (execution unit): decodifica ed esegue le istruzioni, richiedendo al BIU gli operandi e demandando al BIU letture/scritture esterne.
L’aspetto pratico è che la BIU può precaricare istruzioni mentre la EU sta eseguendo: fino a 6 byte dello stream istruzioni possono essere accodati, riducendo i “buchi” sul bus e migliorando le prestazioni percepite a parità di frequenza.
Organizzazione memoria: 20 bit di indirizzamento e segmenti da 64K
L’8086 fornisce un indirizzo a 20 bit, quindi indirizza direttamente fino a 1 MB di spazio (00000h–FFFFFh). La memoria è organizzata logicamente in segmenti:
Code, data, extra data, stack: ciascuno fino a 64 KB.
I segmenti sono allineati su confini di 16 byte (paragraph boundary).
Le referenze memoria sono calcolate come base di segmento + offset, con selezione del registro di segmento tipicamente automatizzata dalle regole dell’architettura.
In pratica, questo modello consente programmi strutturati e rilocabili, ma richiede gestione consapevole dei segmenti (specie in assembly o nei runtime più vicini all’hardware).
Bus esterno: 16 bit, banche alta/bassa e gestione byte pari/dispari
Fisicamente la memoria è vista come due banche da 8 bit:
low bank su D7–D0
high bank su D15–D8
Il processore usa A0 e BHE per abilitare selettivamente byte pari/dispari o una word intera. Le word possono trovarsi anche su indirizzi dispari: in quel caso il BIU esegue due accessi esterni (penalità di prestazione per operandi word, non per fetch istruzioni, che tipicamente avviene a word).
Minimum mode e maximum mode: perché esistono due modalità
Il pin MN/MX definisce la modalità di sistema:
Minimum mode: l’8086 genera direttamente i segnali di controllo del bus (sistemi semplici, single-processor).
Maximum mode: l’8086 emette linee di status codificate (S0–S2) e un controllore esterno (tipicamente 8288) genera i comandi di bus in stile MULTIBUS; utile per sistemi più complessi e con coprocessori/altre master sul bus.
In pratica, maximum mode è la scelta tipica quando si vogliono configurazioni più “modulari” (coprocessore matematico, DMA/bus mastering evoluto, architetture più strutturate).
Segnali chiave e progettazione del sistema
Alcuni segnali risultano centrali nel progetto:
ALE per latchare l’indirizzo durante T1 (dato che AD0–AD15 sono multiplexati).
READY per inserire wait states con memorie lente.
HOLD/HLDA (minimum) oppure RQ/GT (maximum) per arbitraggio bus con altri master.
LOCK per sequenze critiche (impedisce ad altri master di acquisire il bus durante finestre sensibili).
QS0/QS1 per monitorare lo stato della coda istruzioni (utile in debug o logiche esterne di tracking).
Schizzo dei collegamenti più importanti
AD15..AD0 (indirizzo/dati multiplexati) A19..A16 + BHE/A0 ┌────────────────────────────────────────────────────────────────────────┐ │ D8086-2 │ │ │ │ AD15..AD0 ────────────────┬───────────────► 8282/8283 (latch indirizzi)│ │ │ │ │ └───────────────► 8286/8287 (transceiver dati)│ │ │ │ ALE ─────────────────────────► latch enable │ │ RD/WR o (S0..S2 + 8288) ─────► controlli di bus │ │ READY ───────────────────────► wait states │ │ MN/MX ───────────────────────► minimum / maximum mode │ └────────────────────────────────────────────────────────────────────────┘ │ ├────────► memoria (RAM/ROM) su bus 16 bit (banche high/low) └────────► periferiche I/O (read/write I/O cycles)
Tabella 1 – Dati di identificazione e specifiche
| Caratteristica | Valore indicativo |
|---|---|
| Dispositivo | Intel D8086-2 |
| Classe | Microprocessore 16 bit |
| Tecnologia | HMOS (famiglia 8086) |
| Frequenza nominale | Fino a 8 MHZ (speed grade “-2”) |
| Indirizzamento | 20 bit, spazio fino a 1 MB |
| Bus dati esterno | 16 bit (con gestione byte tramite A0/BHE) |
| Bus indirizzi esterno | Fino a A19 (con AD multiplexati e latch esterni) |
| Package tipico | 40 pin (DIP/CERDIP e versioni plastic) |
| Modalità di sistema | Minimum mode / maximum mode tramite MN/MX |
Tabella 2 – Aspetti operativi e progettuali
| Aspetto | Significato pratico |
|---|---|
| BIU/EU con prefetch | Migliore utilizzo del bus: la BIU può accodare fino a 6 byte di istruzioni mentre la EU esegue |
| Segmentazione 64K | Struttura code/data/stack: potente ma richiede gestione corretta di base+offset |
| AD multiplexati | Serve latch esterno (ALE + 8282/8283 o equivalenti) per stabilizzare gli indirizzi |
| READY e wait states | Consente l’uso di memorie/periferiche più lente senza violare i timing |
| Minimum vs maximum mode | Minimum: controllo bus “diretto”. Maximum: status + controllore (8288) per sistemi più complessi |
| A0/BHE e banche memoria | Accessi efficienti su word allineate; penalità su word a indirizzo dispari (due cicli) |
| LOCK e arbitraggio bus | Protegge sequenze critiche e riduce rischi di contesa in sistemi multi-master |