Pagine

La recente scoperta del bug relativo alle istruzioni AVX nelle nuovissime CPU Skylake a diversi utenti avrà fatto sicuramente tornare alla mente il bug FDIV del primo Pentium. Se per molti si tratta di un semplice richiamo dovuto al termine “bug”, i più canuti tra noi avranno sicuramente notato alcune somiglianze tra i due casi. In entrambi i casi, infatti, si tratta di una CPU che Intel ha definito come determinante per la propria strategia (qui le affermazioni riguardo Skylake). In entrambi i casi si tratta quindi di CPU che hanno svolto (o svolgeranno) il ruolo di spartiacque tecnologico, e per questo hanno portato con sé sfide ingegneristiche straordinarie. Non solo, ma il problema anche in questo caso riguarda dei calcoli sui numeri primi!

Se Skylake è la prima architettura di Intel che vuole andare a concorrere in tutte le fasce di mercato, dal Mobile al Server, il Pentium fu la prima CPU supescalare di Intel, in grado cioè di effettuare due operazioni per clock (con conseguente maggiore difficoltà nel gestire contemporaneamente le unità Integer e FPU rispetto alle CPU 80486).

 

Alla fine, diverse migliaia di CPU vennero trasformate in costosi portachiavi

 

Fino al 80486 compreso, Intel aveva un team di sviluppo che si occupava del blocco Integer della CPU, ed una che si occupava del blocco FPU, ma con il Pentium si rese necessario la creazione di una nuova divisione, che avrebbe gestito l'integrazione dei due blocchi ed avrebbe dovuto scoprire, e correggere, eventuali bug.

A capo di questa divisione c'era Vin Dham, il quale prima della messa in produzione del Pentium utilizzò un espediente per migliorare l'efficienza del gruppo da lui guidato (un espediente oggi molto utilizzato dalle Software House): per ogni bug scoperto, l'ingegnere (o il team, nel caso la scoperta fosse stata effettuata da più persone) avrebbe ricevuto 100$ bonus. Questo trucco, se da un lato costò ad Intel diverse migliaia di dollari supplementari, dall'altro migliorò notevolmente la situazione.

Comunque Intel doveva commercializzare le CPU Pentium in fretta, e non avrebbe potuto aspettare un tempo indefinito per la scoperta di tutti i bug (cosa umanamente impossibile), quindi quando nel giugno del 1994 venne scoperto un ennesimo bug (l'FDIV, che descriveremo nella prossima pagina), le CPU Pentium erano già in commercio da quasi un anno, e ne erano stave vendute più di un milione.

Un bug tra centinaia … che danno avrebbe mai potuto arrecare ad Intel?


Un giorno di ottobre del 1994, un addetto al servizio clienti di Intel ricevette una telefonata da un certo Thomas Nicely, professore del dipartimento di matematica presso il Lynchburg College, in Virginia, lamentando uno strano errore con un programma da lui scritto. Questo programma, che lavorava sui numeri primi, dava un risultato errato quando si  effettuava un'operazione complessa, e più in particolare quando si divideva 1 per 824.633.702.441.

A nulla, comunque, valsero i tentativi di Nicely di spiegare il problema, descrivendo le prove da lui effettuate per eliminare di volta in volta il possibile responsabile dell'errore: ricontrollò più volte il codice del software, installò nuovamente il sistema operativo, cambiò hard disk e memoria RAM e riavviò diverse volte il sistema. Sempre il programma, a quell'operazione, gli dava un risultato errato. Quando provò il software su un PC dotato di CPU 80486 il risultato fu invece generato corretto. Nicely aveva dunque trovato il problema, la CPU Pentium, e più precisamente la FPU della stessa.

 

Da "Andy Grove: The Life and Times of an American Business Icon", di Richard Tedlow

 

A nulla però valse la sua opera di investigazione, in quanto il tecnico, bruscamente, affermò che i processori Pentium erano esenti da difetti di questo tipo, e che il problema era da ricercarsi esclusivamente nella configurazione utilizzata da Nicely. Fu comunque rassicurato che qualcuno dello staff, più preparato, lo avrebbe richiamato per risolvere la situazione.

Quest'ultimo si vide così quasi completamente abbandonato dal servizio di assistenza di Intel, in quanto l'addetto cestinò la richiesta del professore e nessuno lo richiamò. Ma come è potuto accadere? Al tempo il servizio di assistenza di Intel era suddiviso su tre livelli:

  • il primo livello, che impiegava circa mille centralinisti, era chiamato a rispondere a problematiche non specificatamente relate alle CPU d Intel, quanto a dubbi generali sui PC: il sistema operativo, un software particolare, la formattazione, ecc. Si trattava di un servizio messo a disposizione da Intel più per migliorare la propria immagine che per un'effettiva necessità tecnica;
  • qualora il problema si fosse rivelato eccessivamente difficile, la chiamata sarebbe dovuta essere trasferita alla seconda linea, composta da circa 250 impiegati con competenze tecniche decisamente più specialistiche. Questi potevano rispondere a domande specifiche, ed erano preparati principalmente sui prodotti della casa di Santa Clara;
  • nel caso il problema si fosse rivelato difficile o particolare anche per questi, la richiesta passava a dei veri e propri ingegneri, impiegati nelle specifiche divisioni (quella che si occupava delle FPU, quella che si occupava delle CPU 80486, quella che si occupava delle CPU Pentium, ecc).

La richiesta di Nicely, quindi, la si sarebbe dovuta passare immediatamente alla divisione che si occupava delle CPU Pentium (il terzo ed ultimo livello), ma sfortunatamente per Intel questo non avvenne. La cosa è tanto più ironica se si pensa che Intel era a conoscenza dell'esistenza di questo bug da diversi mesi. Eppure l'elenco dei bug conosciuti delle CPU non era tra gli strumenti utilizzati dai mille centralinisti della prima linea. Se quel centralinista fosse stato preparato meglio, forse Nicely sarebbe stato richiamato dalla divisione Pentium, ed avrebbe ricevuto gratuitamente una nuova CPU Pentium, questa con il bug fixato, visto che proprio in quel periodo stava andando in produzione la nuova variante aggiornata.

Cosa accadde, invece?


Nicely aspettò più di una settimana che qualcuno del servizio assistenza Intel lo richiamasse, ma le sue speranze furono presto disilluse. Nessuno si fece vivo. Così il buon professore cominciò ad inviare email e a fare telefonate ai propri colleghi matematici e fisici, sia per spiegare loro il problema incontrato, sia per sapere se anche altri lo avevano rilevato. La cosa si ingigantì tanto che la discussione finì per arrivare nella community “comp.sys.intel”. Presto diverse centinaia di persone furono in grado di riproporre perfettamente l'errore trovato da Nicely: non era la configurazione del buon matematico ad essere buggata, ma lo erano le CPU Pentium di prima generazione.

La faccenda uscì presto dai confini della community sopra citata, per giungere alle testate informatiche più importanti, come Electrical Engineering, appena un mese dopo la fatidica telefonata. Intel si scusò per l'accaduto, affermando che il bug era conosciuto da giugno, e propose di sostituire le CPU buggate a quegli utenti che necessitassero di una FPU pienamente funzionante.

Il coro di sdegno degli utenti Intel si levò rumorosissimo, e si scagliò contro l'arroganza della società di Santa Clara: perché avrebbero dovuto ricevere una CPU nuova solo alcune persone, e non tutte quelle che avevano comprato una CPU Pentium? Chi avrebbe deciso che un utente era di serie A ed uno di serie B?

A gettare benzina sul fuoco ci pensarono alcuni utenti con alcune storielle satiriche e barzellette, come per esempio:

A: Hai sentito del nuovo piano di Intel riguardo lo stipendio dei propri dipendenti?
B: Sì, puoi percepire lo stipendio ogni venerdì, ma a patto di mostrare che ti serva davvero.

A: Perché le CPU Pentium non le hanno chiamate 586?
B: Perché la somma di 486 e 100 nei primi Pentium avrebbe dato il risultato di 585,99999.

A: La sigla Pentium è acronimo di cosa?
B: Perfect Enough for Nine out of Ten Instructors at the University of Montana. Oppure: Pratically Every Now Thinks it's Useless for Math.

A: Un ingegnere Intel entra in un bar e ordina da bere. Il barman lo serve e gli dice: “Sono cinque dollari”. L'ingegnere Intel butta sul bancone una banconota da 5 dollari e risponde: “Tieni il resto!”.

 

Network World n.50, Dicembre 1994. Questa rivista, come molte altre, iniziarono a pubblicare battute, spedite dai lettori, relative al bug del Pentium

 

Le invettive rivolte ad Intel in quella community non si fermarono a giochi e semplici battute, arrivando a toccare in certi casi vette di violenza inimmaginabile per degli accademici. La situazione, comunque, sembrava ormai stabilizzata a fine novembre, e la dirigenza Intel credeva di aver superato la tempesta, cavandosela con la sostituzione di qualche migliaio di CPU.

Il 22 novembre, il giorno del Ringraziamento, arrivò come un fulmine a ciel sereno una telefonata direttamente ad Andy Groove, in quel momento all'Università di Stanford: saputo del bug, la CNN aveva mandato al quartier generale di Intel una troupe per realizzare un servizio da mandare in onda sulla rete nazionale. Il bug, fino a quel momento conosciuto da qualche migliaio di professori e nerd, sarebbe esploso tra l'utenza consumer, la quale non si sarebbe fatta problemi a portare avanti una class action miliardaria.

La situazione stava diventando esplosiva!


Il servizio della CNN, come previsto, si rivelò virale, soprattutto perché Intel all'epoca era solita decantare il Pentium come una CPU allo stato dell'arte. Nel giro di pochi giorni la storia del bug finì sulle pagine del New York Times, del Wall Street Journal, del Boston Globe e di altri quotidiani minori. Perfino David Letterman inserì il bug del Pentium in un paio dei suoi sketch al David Letterman Show.

La tempesta, comunque, cominciò già qualche minuto dopo il servizio della CNN. I telefoni del centro assistenza di Folsom, lo stesso cui si rivolse Nicely, cominciarono a squillare incessantemente, mandando in palla il sistema (si passò da circa 1.500 telefonate al giorno, a più di 7.000).

Nonostante le scuse di Intel, e l'utilizzo di studi che dimostrassero la poca incidenza di questo errore nell'uso comune della CPU (un pixel sbagliato su 4 milioni in un'immagine, ad esempio), sempre più utenti chiedevano la sostituzione della CPU perché: “e se in futuro dovessi farne uso professionale?”. Inoltre, Intel aveva venduto milioni di CPU difettose (e questo lo sapeva da giugno) senza informare la clientela. Un'eresia per il cliente statunitense! Si trattava di una frode bella e buona!

Sapendo che l'immagine è tutto in questo settore (ed Intel se la stava costruendo proprio in quel periodo con il motto e gli adesivi “Intel Inside”), Andy Grove, CEO della società, decise di effettuare un mastodontico piano di rientro delle CPU difettose (circa 1.500.000), e di non commercializzare oltre mezzo di CPU ancora nei magazzini. Un'operazione da oltre mezzo miliardo di dollari.

Se da un lato questa mossa venne a costare quasi quanto gli utili di un trimestre, dall'altro dimostrò agli analisti la forza economica del gigante di Santa Clara, capace di reggere l'urto di un tale inconveniente come fosse stata una leggera spallata. Non solo, ma se in un primo momento questo bug fece scendere la fiducia dei consumatori in Intel, la sostituzione della CPU per chi ne avesse fatto richiesta permise alla società di guadagnare una posizione di prestigio: qualunque cosa accada, Intel vi supporterà. Intel capì che il rapporto con il cliente, e non il prodotto in sé, è il fattore determinante per avere successo, ed è una strategia seguita ancora oggi tanto da Intel, quanto da diverse case di notevole successo, come ad esempio NVIDIA.

 

Da "Business Ethics: Case Studies and Selected Readings", di Marianne Jennings

 

Quell'esperienza, inoltre, insegnò ad Intel ad essere maggiormente trasparente riguardo i problemi che affliggono le proprie CPU. Da allora viene rilasciato, e tenuto aggiornato, un report con i bug conosciuti per ogni CPU.

 

Fonti:

  • "Business Ethics: Case Studies and Selected Readings", di Marianne Jennings
  • "Andy Grove: The Life and Times of an American Business Icon", di Richard Tedlow
  • "Andy Grove and the rise of the world's most powerful chip company", di Tim Jackson