Tanto per cominciare, chiariamo subito un punto: l'evoluzione
dei moderni processori è legata a tanti fattori, fra cui compilatori
buoni, raffinate tecniche litografiche per lo stampaggio
dei microcircuiti (a tal proposito, andate a leggere il nostro
articolo sulla tecnologia SOI recentemente adottata da AMD
), ottimizzazione degli strumenti di CAD per la sintesi
a tavolino di circuiti e layouts, etc. etc. Ma il fattore
fondamentale, il più importante di tutti, è il costo di tutto
questo. Non esiste il mecenatismo in elettronica; non importa
se sulla carta una architettura è meglio di un'altra: se non
ci sono i soldi per portarla avanti o se il target di mercato
cui essa è rivolta è troppo ridotto per garantire un ritorno
economico sufficiente da coprire le spese e il costo di sviluppo
dei successivi processori, l'architettura, per quanto geniale
essa possa essere, verrà bocciata senza appello. La storia dell'elettronica
questo insegna: l'evoluzione che ha portato dai calcolatori
grossi come magazzini di un supermercato fatti con valvole fino
a quelli con milioni di transistor integrati su un die di silicio
di pochi millimentri quadrati è stata fatta grazie all'abbattimento
dei costi che le nuove tecnologie recavano con sè . Chiarito
questo punto, partiamo per il nostro viaggio riassuntivo sulla
storia del computer...
Gli anni ' 70
Iniziamo
direttamente dagli anni '70, da quando cioè furono introdotti
i primi calcolatori basati su transistor altamente integrati,
ed esaminiamo la situazione hardware/sofware dell'epoca:
1) le memorie erano a nucleo (core) magnetico: in altri
termini erano lente, grosse e costosissime. Un esempio di memoria
di questo tipo è dato dal componente nella figura ( l'uomo tiene
in mano un 'modulo di memoria' da qualche centinaio di byte
costituito da piccoli toroidi di materiale ferromagnetico e
dai fili che ne alteravano lo stato di magnetizzazione tramite
corrente elettrica).
2) esistevano i compilatori, ma facevano acqua da tutte
le parti: il codice da questi prodotto era poco ottimizzato
e spesso talmente "sporco", cioè inefficiente, che conveniva
lavorare direttamente in assembler, spendendo ore ed ore a scrivere
codice che poi risultava difficile da correggere.
3) i dispositivi di memoria secondaria, anch'essi magnetici,
erano ancora più lenti e anch'essi molto costosi. La conseguenza
di tutto ciò è evidente: i programmi dovevano essere molto semplici
e molto compatti per risiedere in una memoria dalle dimensioni
di pochi Kbytes. Con l'avvento delle memorie dinamiche a semiconduttore,
a metà degli anni '70, la situazione migliorò un poco, ma basta
guardare la tabella in basso per avere un'idea dei costi.
| costo
di 1 Mbit di memoria a semiconduttore (in $) |
150.000
|
50.000
|
10.000
|
800
|
240
|
60
|
10
|
1
|
0.25
|
0.11
|
| Anno |
1974
|
1976
|
1979
|
1982
|
1985
|
1988
|
1991
|
1994
|
1997
|
2001
|
Lo stato di integrazione era di poche
migliaia di transistor su un singolo die di silicio, e per avere
un dispositivo completo di tutte le funzioni necessarie occorreva
collegare più chip , ognuno con mansioni diverse, sulla medesima
scheda madre (ricordate che ancora una decina di anni fa il
386 aveva bisogno del coprocessore matematico a parte per svolgere
i calcoli in virgola mobile?;-).
Splittare le mansioni su più chip, tenendo pure conto
della limitazione di banda dei bus, cioè delle piste di rame
sulla scheda, introduceva ulteriori ritardi nel trasferimento
dei segnali digitali da una parte all'altra. ( il problema si
è ripresentato in tempi recenti, da quando cioè si parla del
collo di bottiglia costituito dall'interfaccia memoria-chipset
e chipset-processore, in cui le centinaia di Mhz dei bus attuali
finiscono per creare diafonia fra le varie piste). Si avvertiva
la necessità di impacchettare quanta più logica possibile su
un singolo chip, anzichè rivolgersi ad architetture distribuite.
Il progresso tecnologico sulla via della miniaturizzazione dei
dispositivi condusse, nel lontano 1971, al debutto del primo
processore della Intel (Integrated Electronics), di cui
sotto vedete un esemplare.
Il
4004 era a tutti gli effeti un 'mini-computer' per l'epoca,
in quanto all'interno inglobava tutta la logica per funzionare
come processore general-purpose, cioè per applicazioni generali.
Consisteva di 2300 transistor, il package era dotato
di soli 16 piedini per la comunicazione col mondo esterno.
I registri cioè i dispositivi di memorizzazione interni, erano
a soli 4 bit (da cui la terminologia architettura a 4 bit dell'Intel
4004), poteva decodificare al massimo 45 istruzioni e correva
intorno al KHz. Sembra poco, ma fu un chip rivoluzionario poichè
stabilì in via definitiva il percorso che avrebbe seguito l'elettronica
negli anni a venire: e cioè cercare di integrare quante più
funzionalità possibili all'interno di un singolo chip, permettendo
ad applicazioni di natura diversa di girare sullo stesso processore.
Per avere un termine di paragone sull'importanza dell'integrazione,
basti pensare che nelle missioni Apollo degli anni '60, quelle
che portarono gli americani sul suolo lunare, il computer deputato
al controllo di guida del razzo era composto da 5000 chip, ognuno
a sua volta composto da tre transistor e 4 resistenze! In breve
ci si rese conto come un microprocessore fosse infinitamente
superiore ad una struttura distribuita per una serie di ragioni
che elencherò brevemente:
1) consuma di meno
2) produce meno calore e quindi richiede soluzioni meno raffinate
per il raffeddamento
3) occupa meno spazio
4) è più affidabile, cioè si guasta con meno frequenza rispetto
ad una soluzione cablata, perchè tutte le componenti interne
nascono con lo stesso procedimento e non esistono saldature
che possano saltare
5) è più veloce perchè i segnali percorrono cammini più brevi
e quindi si può salire in frequenza.
6) è più economico da produrre su larga scala.