# Intel 80387

L'Intel 80387 (abbreviazioni comuni: "80387", "387") è un coprocessore matematico prodotto da Intel a partire dal 1987. In particolare è un microprocessore monolitico special purpose progettato per essere utilizzato come unità di calcolo in virgola mobile insieme alla famiglia di CPU Intel 80386.
L'Intel 80387 è disponibile in due versioni: 80387DX funzionante con processori 80386DX e 80387SX funzionante con le CPU 80386SX.
L'Intel 80387 venne introdotto nel 1987, quasi due anni dopo la presentazione sul mercato dell'Intel 80386. Questa prima versione era fabbricata con tecnologia CHMOS III a 1,5 micron: poteva funzionare al massimo a 25 MHz ma, in compenso, i suoi requisiti energetici erano piuttosto bassi.

## Caratteristiche

Dal punto di vista software, questo coprocessore è praticamente identico ai suoi predecessori 80287 e 8087: anche il 387 aveva uno stack di 8 registri a 80 bit, supportava lo stesso standard IEEE 754 e aveva lo stesso set di istruzioni, a cui però aggiungeva ulteriori funzioni trigonometriche.
Esternamente, l'interfaccia hardware con il processore principale era quella adottata dal 287, stante anche qui l'impossibilità di duplicare tutto il meccanismo di MMU nel coprocessore. Unica differenza di rilievo, l'intervallo di porte di I/O usate di default per le comunicazioni fra CPU e FPU venne spostato molto più in alto: invece delle porte da F8h a FFh usate dal 287, che potevano venire lette o scritte accidentalmente in caso di errori nei programmi, la coppia 386/387 usava le porte da 800000F8h a 800000FFh, molto oltre il range normalmente usato all'epoca per le porte di I/O e quindi, sperabilmente, meno suscettibili di errati accessi.

## Versioni

Dell'Intel 80387 sono state prodotte e commercializzate varie versioni. Nella tabella sottostante sono riportate le versioni del microprocessore Intel 80387 commercializzate. Di ogni variante viene riportato il part number e la frequenza di clock del core.
| part number | frequenza |
| A80387-16 A80387-16B | 16 MHz |
| A80387-20 A80387-20B | 20 MHz |
| A80387-25 | 25 MHz |

## Varianti

Dell'Intel 80387 sono state prodotte e commercializzate anche tre varianti: l'Intel i387DX, l'Intel i387SX e l'Intel i387SL.

### Intel i387DX

Nel 1989, senza clamori, la Intel comincia a commercializzare questa nuova versione, fabbricata con un processo CMOS più evoluto che la rende in grado di funzionare a 33MHz: oltre alla maggiore velocità massima il 387DX è anche più veloce della vecchia versione, a parità di clock, di circa il 20%.
Il 387DX è l'unico, fra i coprocessori matematici per 386, che supporti l'esecuzione asincrona: infatti è costituito da una unità di controllo bus, che lavora alla stessa velocità di clock del processore, e dall'unità di calcolo vera e propria, che può essere fatta funzionare con un clock ausiliario fornito sul pin NUMCLK2 della FPU a patto che l'ingresso CKM (ClocK Mode) sia tenuto a livello basso. Comunque il rapporto fra clock della CPU e clock della FPU deve essere compreso fra 0,62 e 1,4. In tutti gli altri "cloni" del 387 il pin CKM non è collegato, quindi devono tutti funzionare alla velocità della CPU principale.

### Intel i387SX

Questa versione venne studiata per accoppiarsi con l'80386SX, la versione ridotta del 386. Internamente era un 387 completo, ma con una unità bus dimezzata a 16 bit. L'unità di calcolo era però quella del 387 prima versione, più lenta.

### Intel i387SL

Per affiancare la versione SL (per portatili) del 386, la Intel produsse un coprocessore apposito: il 387SL era basato sul core 387DX, ed era fabbricato con un processo CHMOS completamente statico. Integrava anche funzioni di controllo dei consumi energetici.