Molti di voi, giovani figli della recente rivoluzione digitale, si staranno chiedendo cosa fossero i Coprocessori matematici. Quale funzione avevano queste diavolerie antiche, ora scomparse e inglobate in modo perpetuo nel Die delle CPU contemporanee?
Cercheremo di spiegarlo in poche parole. Le CPU x86 Intel, dall'8086 all'80386, erano indirizzate prevalentemente al calcolo di numeri interi, e questo sarebbe stato un grosso ostacolo per chi, come ingegneri o fisici, avesse voluto utilizzare tali processori in calcoli più complessi (applicazioni CAD, ad esempio). Per ovviare a ciò Intel introdusse i Coprocessori matematici, in grado di velocizzare notevolmente il calcolo dei numeri irrazionali, più comunemente conosciuti come calcoli in virgola mobile (Floating Point).
Questi coprocessori matematici dovevano essere acquistati a parte, e dovevano essere inseriti in un secondo Socket sulla scheda madre, così da coadiuvare nel lavoro il Microprocessore principale (da qui il nome “Co-processore”). Non solo, questi coprocessori erano anche molto, molto costosi.
Il costo era determinato necessariamente dall'ambito di utilizzo. Nell'uso comune (videoscrittura, videogame primitivi, ecc) un Coprocessore era del tutto superfluo, quindi Intel poteva permettersi il lusso di venderlo a prezzi elevatissimi ai pochi cui fosse assolutamente necessario. Il vecchio gioco della Domanda e dell'Offerta.
Alla casa di Santa Clara sembrava andare tutto bene, ma un bel giorno l'incanto si ruppe. Cosa spinse Intel, infine, ad interrompere la commercializzazione dei Coprocessori matematici? Vediamo di scoprirlo.
Come per i microprocessori x86 veri e propri, anche per i Coprocessori matematici Intel diede in licenza la produzione dei propri prodotti. Altre case, pagando delle Royalties, avrebbero potuto commercializzare dei cloni, spesso modificati per essere più prestanti o meno costosi da produrre. Questo ha permesso a molte case di entrare nel mercato dei Coprocessori, alcune con prodotti realizzati ex-novo. Tra queste ultime possiamo citare: AMD, Integrated Information Technology, Cyrix, Weitek, ULSI e Chip & Technologies. L'unica tra queste a produrre anche dei Microprocessori x86, al tempo, era AMD, per un semplice motivo: produrre un Coprocessore matematico era costoso e il mercato cui si rivolgeva era molto particolare. Perciò, a parte Intel e AMD, le altre case preferirono specializzarsi in quello che sapevano fare meglio.
Il primo Coprocessore matematico realizzato da Intel fu l'8087, commercializzato a partire dal 1980, due anni dopo l'arrivo delle CPU cui era rivolto, le 8086 (1978) e 8088 (1979). Negli anni seguenti, con l'entrata in produzione degli 80286 (1982) e 80386 (1985), furono commercializzati i Coprocessori 80287 (1982) e 80387 (1987).
A partire dal 1987 cominciarono a farsi vedere i primi Coprocessori realizzati ex-novo da società concorrenti, come il 1187 di Waitek, compatibile con l'8087, ma è solo nel 1989 che la lotta si fa veramente aspra, quando la semi sconosciuta Cyrix scuote tale mercato introducendo i due Coprocessori FasMath 83D87 e 83S87.
L'apertura a nuove aziende, se da un lato ha permesso ad Intel di guadagnare indirettamente attraverso le royalties, dall'altro ha messo in crisi la sua immagine di azienda leader. AMD nel campo dei microprocessori, ad esempio, è riuscita a produrre nel 1987 l'Am286, clone del 80286, operante alla frequenza di 20 MHz, quando la versione originale di Intel raggiungeva al massimo gli 8 MHz. Allo stesso modo l'entrata in campo di altri competitor nel settore dei Coprocessori ha lasciato spiazzata la casa di Santa Clara, la quale non si aspettava certamente tanta qualità, unita a prezzi decisamente concorrenziali.
Azienda | Coprocessore | Frequenza | Piattaforma | Prezzo |
Intel | 8087 | 10 MHz | 8086 | 270$ |
Intel | 8087 | 8 MHz | 8086 | 205$ |
Intel | 8087 | 4,77 MHz | 8086 | 142$ |
Intel | 80287 | 10 MHz | 80286 | 374$ |
Intel | 80287 | 8 MHz | 80286 | 326$ |
Intel | 80387 | 33 MHz | 80386DX | 994$ |
Intel | 80387 | 25 MHz | 80386DX | 814$ |
Intel | 80387 | 20 MHz | 80386DX | 647$ |
Intel | 80387 | 16 MHz | 80386DX | 570$ |
Intel | 80387SX | 20 MHz | 80386SX | 550$ |
Intel | 80387SX | 16 MHz | 80386SX | 506$ |
IIT | 2C87 | 20 MHz | 80286 | 419$ |
IIT | 2C87 |
12 MHz |
80286 | 339$ |
IIT | 2C87 | 10 MHz | 80286 | 319$ |
IIT | 2C87 | 8 MHz | 80286 | 293$ |
Cyrix | 83D87 | 33 MHz | 80386DX | 994$ |
Cyrix | 83D87 | 25 MHz | 80386DX | 814$ |
Cyrix | 83D87 | 20 MHz | 80386DX | 647$ |
Cyrix | 83D87 | 16 MHz | 80386DX | 570$ |
Cyrix | 83S87 | 20 MHz | 80386SX | 556$ |
Cyrix | 83S87 | 16 MHz | 80386SX | 506$ |
Cyrix | EMC87 | 33 MHz | 80386DX | 995$ |
Cyrix | EMC87 | 25 MHz | 80386DX | 795$ |
Cyrix | EMC87 | 20 MHz | 80386DX | 495$ |
Weitek | 3187 | 33 MHz | 80386DX | 995$ |
Weitek | 3187 | 25 MHz | 80386DX | 795$ |
Weitek | 3187 | 20 MHz | 80386DX | 495$ |
Fonte: PC Magazine, Febbraio 1991
Molti di voi, probabilmente, si staranno chiedendo come mai nel 1987, e negli anni seguenti, fossero commercializzati Coprocessori per CPU 286 e 386. Chi ha un po' di memoria sicuramente ricorderà che nel 1989 furono presentate le prime CPU 486. La risposta è abbastanza semplice, ma non scontata. Il 486, come vedremo nel penultimo paragrafo, è un'evoluzione molto particolare del 386, mentre il 386 non è nient'altro che una versione potenziata del 286, il quale a sua volta è un potenziamento del 8086. Si può affermare che Intel fino al 80386 ha puntato sull'aumento della potenza bruta con l'uscita di ogni processore, e questo ha consentito la piena compatibilità con tutti i programmi in commercio. Chi possedeva una CPU 286 o 386, quindi, non aveva necessariamente l'impellenza di aggiornare il PC, in quanto l'unica cosa che effettivamente cambiava era la sola velocità di elaborazione. Questo perché, al contrario di oggi, non vi erano particolari set di istruzioni cui si doveva fare riferimento (MMX, SSE, ecc).
Secondariamente, l'uscita di Coprocessori matematici Intel-compatibili sempre più veloci, e dal prezzo molto concorrenziale, poteva sopperire all'acquisto della più recente CPU Intel. Un 286 con Coprocessore matematico era sicuramente più veloce di qualsiasi 386 che ne era sprovvisto nei calcoli in virgola mobile, oltre a costare meno. La presenza di Coprocessori decisamente prestanti per piattaforme "vecchie", come l'IIT 2C87 a 20 MHz, fiaccava i tentativi di Intel di portare l'utenza ad aggiornare i propri Personal Computer.
Come è possibile osservare dal grafico, dopo l'introduzione del 486 i processori Intel delle generazioni precedenti hanno conosciuto un rapido declino, nonostante per quasi un lustro si siano divisi equamente il mercato. Quello che mi preme realmente mostrare attraverso il grafico è l'importanza che rivestivano le piattaforme 80286 e 80386, almeno fino alla metà del 1992. Questo fatto, unito alla presentazione da parte di Cyrix & Co. di Coprocessori matematici molto potenti, costrinse Intel a dare una bella sforbiciata ai listini, evitando un esodo della clientela dai propri prodotti. Nel giugno del 1991 il prezzo dell'Intel 80387 a 16 MHz e del Cyrix 83D87 a 16 MHz arrivò a toccare i 238 dollari. Quattro mesi prima il loro prezzo era di 570 dollari.
InfoWorld, Giugno 1991
Le aziende concorrenti della casa di Santa Clara, tra la fine degli anni '80 e l'inizio dei '90, riuscirono a proporre Coprocessori non solo migliori, ma anche più economici, consentendo a molte aziende e professionisti di evitare l'aggiornamento del proprio PC o l'acquisto di uno nuovo. Se da un lato ciò ha permesso a molti di risparmiare centinaia o migliaia di dollari, dall'altro ha fatto perdere ad Intel una montagna di soldi. Come abbiamo potuto osservare, l'azienda si trovò costretta a tagliare i prezzi dei propri prodotti.
Per spiegare meglio la situazione bisogna necessariamente portare quale prova qualche numero, così da dimostrare perché i Coprocessori di Cyrix e Weitek, principalmente, fossero tanto pericolosi per la casa di Santa Clara. Le parole, in simili contesti, contano poco. A venirci in aiuto, oltre alle riviste del settore, è uno studio del 1991 realizzato dal Professore in “Computer Sciences” John H. Letcher, dell'Università di Tulsa, Oklahoma. Il titolo di tale studio è “Getting numeric coprocessors up to speed, new processors require new techniques”.
Nelle testate specializzate, per analizzare l'efficienza dei Coprocessori si utilizzavano programmi di benchmarking specifici quali quelli indicati nella tabella di un numero di PC Magazine del Maggio del 1991. L'efficienza dei Coprocessori prodotti da Cyrix, se sulla carta era stratosferica, quando si osservavano i grafici dei benchmark non faceva certamente gridare al miracolo.
Le prestazioni allineate dei Coprocessori per 80386, e gli ottimi risultati dei 80486, nei benchmark commerciali
Al contrario, il Professor Letcher nel suo studio utilizza il Coprocessore Intel 80387 e i Cyrix 83D87/EMC87 in uno scenario reale: “There is a significant performance difference between the memory-mapped and 387-compatible modes, see Table2, which shows the performance of two mathematical algorithms I've used in designing medical imaging devices”. Letcher testa i Coprocessori attraverso algoritmi utilizzati in campo medico, più precisamente nell'elaborazione delle immagini delle Risonanze Magnetiche, ma soprattutto testa i Coprocessori Cyrix EMC87 utilizzando il Memory-Mapped, funzionalità non presente nei Coprocessori Intel, e che permette un più veloce scambio di dati tra Microprocessore e Coprocessore.
Come è possibile osservare dai risultati ottenuti, i Coprocessori Cyrix sono decisamente più veloci rispetto alla controparte Intel in modalità “Compatibile”, ed il vantaggio aumenta ancora se vengono sfruttate le peculiarità dei prodotti di Cyrix. Sempre nello studio si afferma che i Coprocessori Weitek hanno prestazioni simili a quelli Cyrix: "the Weitek 3167 comes in at speeds essentially equivalent to the Cyrix coprocessors".
Un vantaggio, comunque, che spesso si annulla nell'utilizzo dei Software Commerciali, come viene scritto in uno speciale su PC Magazine (02/1991):
Resta il fatto che i Coprocessori compatibili risultavano spesso più economici e/o prestanti rispetto alle controparti Intel tanto da provocare un notevole malcontento al quartier generale di Santa Clara. Bisognava trovare una soluzione per evitare che la situazione portasse a risvolti negativi sia dal punto di vista dell'immagine, sia dal punto di vista commerciale, ma soprattutto bisognava evitare che le Software House cominciassero a sfruttare le caratteristiche peculiari dei concorrenti. Nel campo dei Microprocessori è stato facile, è bastato non rinnovare la licenza di produzione alle compagnie eccessivamente efficienti (nel 1987 Intel rifiutò di cedere ad AMD la licenza per le CPU 80386), ma per i Coprocessori la situazione è diversa, in quanto non ricadono sotto la licenza x86 ed ogni azienda implementa algoritmi propri per le elaborazioni con virgola mobile. Che fare?
Nel paragrafo precedente abbiamo parlato del Memory-Mapped e del fatto che ogni Coprocessore avesse dei propri algoritmi per calcolare le variabili in virgola mobile. Molti, per questo, si staranno chiedendo cosa è il Memory-Mapped, e cosa significa, dal punto di vista commerciale, il fatto che ogni coprocessore avesse una propria via di elaborazione. Andiamo a rispondere.
Il Memory-Mapped è una funzionalità che permette al Coprocessore di comunicare con il Microprocessore e il Software in uso utilizzando gli indirizzi di memoria come delle caselle di posta. Questo permette al Coprocessore di lavorare sui dati in Floating-Point senza rallentare la CPU, in quanto ha una piccola porzione di Ram ad uso e consumo proprio dove memorizzare i dati da elaborare. Questo permette al Microprocessore di elaborare altri dati, in quanto non vi è più un accesso simultaneo alla medesima porzione di memoria.
I coprocessori Cyrix si dimostrarono tanto buoni che qualcuno mise in giro delle voci sulle loro presunte incompatibilità.
Incompatibilità che furono smentite da Cyrix stessa, anche attraverso una poderosa campagna pubblicitaria
come quella apparsa su InforWorld (Aprile, 1991)
Se il Memory-Mapping può portare notevoli vantaggi, come ha mostrato il Professor Letcher nella sua ricerca, porta con sé anche due difetti. Il primo era decisamente lieve: se un Software voleva avvantaggiarsi di tale funzione doveva essere programmato per farlo. Il secondo difetto era ben più grave, dal punto di vista commerciale. Non essendo standardizzato, ogni produttore di Coprocessori matematici implementava una versione propria del Memory-Mapped (Quantità di Ram allocata, indirizzi di memoria utilizzati, ecc). Così, se si voleva sfruttare il Memory-Mapping, si doveva scegliere fin da subito anche il produttore: Cyrix? Weitek? IIT?
Aggiornare il proprio Software per sfruttare il Memory-Mapped di ogni casa sarebbe stato molto costoso e laborioso, e questa fu una delle cause che frenò l'utilizzo della funzionalità, nonostante sia Cyrix sia Weitek ne fossero dei convinti sostenitori. Il non aver cercato e trovato un accordo, infine, ha fatto il gioco di Intel. Anche se potenzialmente molto più veloci delle controparti prodotte a Santa Clara, i Coprocessori di Cyrix e Weitek dovettero praticamente sempre lavorare in modalità Intel-compatibile, con i risultati che abbiamo osservato nei grafici di PC Magazine.
Per evitare che Cyrix, IIT, Weitek e le altre case potessero infastidirla più a lungo, Intel decise di toglierle di mezzo attraverso un'idea tanto semplice quanto difficile da mettere in pratica: integrare il Coprocessore matematico nella CPU. Questa idea fu alla base dell'80486, più tardi ribatezzato i486, in quanto un nome composto da soli numeri non può essere registrato come marchio commerciale (Intel cominciò, evidentemente, a comprendere quanto il marketing fosse importante).
Il 486, almeno ufficialmente, è stato commercializzato a partire dalla fine del 1989, ma solo alla fine del 1990 fu possibile vederlo in discrete quantità sul mercato. La causa di questa lenta commercializzazione era dovuta principalmente alla complessità del progetto stesso, che portò a bug più o meno gravi e ad un gran numero di chip difettosi.
Il vantaggio di avere un Coprocessore esterno al Processore era la semplicità dell'implementazione della soluzione: solitamente quando la CPU eseguiva dei calcoli e si trovava di fronte ad un calcolo in virgola mobile, questa si fermava ed entrava in funzione il coprocessore. Una volta eseguito il calcolo, trasmetteva il risultato alla CPU, la quale riprendeva il lavoro fino a che non fosse sopraggiunto un nuovo calcolo in virgola mobile. Il Coprocessore matematico esterno, inoltre, poteva avere una frequenza diversa rispetto al Microprocessore. Con l'integrazione il Coprocessore avrebbe dovuto avere la stessa frequenza del Microprocessore portando ad una conseguenza molto semplice: un numero maggiore di chip difettosi o impossibilitati a lavorare a certe frequenze.
Per limitare le possibilità di errori nell'implementazione i tecnici Intel decisero di utilizzare il Coprocessore matematico 80387, per due motivi: era rodato ed affidabile e, soprattutto, avrebbe permesso al futuro 486 di essere pienamente compatibile con i software fino ad allora utilizzati.
Un'altra importante innovazione del 486 fu l'introduzione di una Cache interna, di sola lettura, in grado di immagazzinare i dati usati più frequentemente. Essa permetteva un più veloce accesso ai dati, rispetto all'utilizzo della RAM, aumentando conseguentemente la velocità di elaborazione della CPU, come è possibile osservare dai molti benchmark pubblicati sulle riviste specializzate dell'epoca.
PC Magazine, novembre 1990
Per migliorare ulteriormente le performance, la casa di Santa Clara introdusse anche una primitiva unità di prefetching, così da velocizzare l'esecuzione dei programmi.
Il lavoro di Intel, comunque, si fermò ad un affinamento dell'architettura x86. Nessuna nuova istruzione particolare fu introdotta, così che i software fino ad allora utilizzati non necessitassero di modifiche per risultare pienamente compatibili.
In uno speciale su PC Magazine del Novembre del 1990, l'autore Douglas Boling scrisse: “In simple terms, a 486 is a combination microprocessor, floating-point math coprocessor, memory cache controller, and 8K of RAM cache, all in one chip”.
L'introduzione del 486 da parte di Intel fu "un fulmine a ciel sereno", sia per l'utenza sia per i suoi concorrenti. Se i primi si trovarono un Processore in grado quasi di doppiare prestazionalmente il precedente 80386, i secondi si accorsero che l'integrazione del Coprocessore matematico nella CPU avrebbe significato la propria scomparsa.
AMD, l'unica in grado di poter competere nel campo dei Microprocessori, si adattò più che discretamente, come abbiamo visto nello speciale di qualche mese fa, mentre Cyrix, specializzata nei Coprocessori, dovette cambiare completamente la tipologia di prodotto cui dedicarsi.
Altre case molto concorrenziali, come la IIT e la Weitek, si sono chiamate completamente fuori a causa delle eccessive spese per potersi riconvertire. La prima è sparita dalla scena internazionale, la seconda ha chiuso i battenti nel 1996, acquisita da Conexant System.
PC Magazine, gennaio 1992
La strada per il successo del 486 fu comunque lastricata di difficoltà. I primi esemplari si rivelarono buggati e di difficile produzione, tanto che furono commercializzati, nella versione DX (dotata di Coprocessore matematico funzionante), a prezzi attorno ai 1000 dollari. L'accoppiata 80386 più Coprocessore, se non si voleva spendere troppo, era ancora preferibile. Solo tra la fine del 1991 e l'inizio del 1992 si osservò finalmente l'invasione dei 486, grazie alla più affinata revisione DX2.
In quell'arco temporale Intel giocò comunque d'astuzia dal punto di vista del marketing, vendendo i 486 con il Coprocessore matematico non funzionante, e quindi disabilitato, come SX. Processori scandalosamente lenti, e comunque costosi, che vendettero bene perché fecero credere all'utenza meno smaliziata di avere un processore all'ultimo grido. Eppure, un contemporaneo AMD Am386 a 40 MHz, oltre a costare meno e a poter essere installato sulle vecchie schede madri, era anche più veloce. Per confronto, un Am386 a 40 MHz nel gennaio del 1992 costava 190 dollari, un 486SX a 20 MHz ben 242 dollari.
Bisogna comunque riconoscere ad Intel il merito di aver fatto evolvere i Microprocessori rendendoli decisamente più veloci e versatili, aprendo così l'era delle moderne CPU, nonostante il tutto sia partito principalmente da un fattore commerciale: eliminare almeno una parte della concorrenza. Oggi, quello che è riuscito con successo ad Intel, sta tentando di farlo AMD con le APU, ma in modo diverso. Non potendo contare su una buona base installata, la casa di Sunnyvale deve spingere su uno standard aperto, come OpenCL, a tutto vantaggio della concorrenza. Nel 1991 AMD, Cyrix e le altre case dovettero issare bandiera bianca nei confronti delle CPU Intel riguardo le unità di Floating Point, uniformandosi alla visione della casa di Santa Clara. Oggi, al contrario, possiamo sperare in un'evoluzione tecnologica a più vie, aperta a nuove soluzioni e capace di regalarci una sana battaglia sui prezzi.