title: Intel 8087
text: # Intel 8087
  
  L'Intel 8087 fu il primo coprocessore matematico prodotto dalla Intel, e fu progettato per essere utilizzato insieme all'Intel 8088 e all'8086. Lo scopo dell'8087 era di accelerare i calcoli in virgola mobile: la velocità di calcolo aumentava dal 20% al 500% a seconda dell'applicazione specifica. Fu prodotto inizialmente con clock di 5 MHz, e successivamente portato ad 8 MHz (modello 8087-2) e 10 MHz (modello 8087-1).
  
  Questo coprocessore aggiungeva circa 60 nuove istruzioni disponibile al programmatore, il set x87, il cui codice mnemonico iniziava per "F" per distinguerle dalle istruzioni standard per gli interi dell'8086/88, e i cui opcodes iniziavano tutti con i cinque bit "11011": oltre a divisione, somma e moltiplicazione l'8087 poteva calcolare radici quadrate, tangenti ed elevamenti a potenza. Poteva operare anche con interi, sebbene molto più lentamente.
  
  L'interfaccia fra l'8087 e il processore principale 8086/8088 era, in pratica, una "non interfaccia": l'8087 condivideva gli stessi bus dati, indirizzi e segnali della CPU e duplicava internamente tutta la logica di decodifica delle istruzioni dell'8086. Quindi leggeva le istruzioni caricate dal processore principale finché non riconosceva una istruzione in virgola mobile (compito facile, vista la particolarità dei suoi opcodes): allora l'8086 si fermava e subentrava l'8087, che a operazione finita accedeva alla memoria (se necessario) e poi segnalava al processore principale di ripartire.
  
  L'8087 (e tutti i suoi successori) non fornisce un insieme di registri utilizzabili liberamente, ma offre uno stack di 8 registri da 80 bit che vanno da ST0 a ST7, e tutte le istruzioni operano implicitamente su ST0, la cima dello stack, se non altrimenti specificato: per questo motivo le istruzioni del coprocessore non hanno quasi mai argomenti. I risultati dei calcoli vengono salvati in memoria effettuando push e pop dei valori di questo stack.
  
  Quando la Intel progettò l'8087 puntava a creare un formato standard per i futuri progetti. In effetti, una delle caratteristiche di maggior successo di questo coprocessore fu l'introduzione di uno dei primi standard per i PC x86: il formato in virgola mobile IEEE 754. L'8087 forniva due tipi base di tipi di dati a virgola mobile: singola precisione a 32 e doppia precisione a 64 bit, anche se internamente tutti i dati venivano silenziosamente portati a 80 bit per aumentare la precisione sui calcoli complessi. Inoltre l'8087 forniva un formato BCD a 80 bit e dati interi a 16, 32 e 64 bit.
  
  L'8087, annunciato nel 1980, fu affiancato da nuove versioni per i successivi modelli di CPU: prima l'80287, poi l'80387DX/SX. L'Intel 80486, il Pentium e tutte le CPU successive inclusero un coprocessore matematico direttamente nel proprio core ponendo fine, di fatto, all'era dei coprocessori matematici esterni. L'Intel 486SX era una CPU con la FPU disabilitata, ed era possibile affiancarla a un 487.
  
  Essendo un componente relativamente costoso, e al tempo stesso non necessario a tutti gli utilizzatori dei personal computer del tempo, i costruttori prevedevano sulla scheda madre uno zoccolo vuoto, atto all'inserimento del coprocessore, fornito come opzione, all'eventuale cliente che ne avesse fatto richiesta.
  
  