Alla fine degli anni ‘80, in un’aula dell’Istituto di Fisica Teorica al Politecnico Federale di Losanna, un ricercatore della Cray Corporation teneva un seminario sul loro ultimo progetto: un nuovo supercomputer basato sulla tecnologia dell’arseniuro di gallio, al posto del silicio. Con l’arseniuro di gallio, era l’argomento, si potevano ottenere, per ragioni fisiche che non stiamo qui a discutere, frequenze di clock maggiori: nel caso del Cray 3, ben 474 MHz. Secondo il ricercatore, sperare di ottenere frequenze del genere con il silicio sarebbe stato praticamente proibitivo.
Il Cray 3 fu sostanzialmente un fallimento, per svariate ragioni, e ne fu venduto solo uno. La storia è andata avanti in altro modo, ed oggi abbiamo tranquillamente processori da 4 e più GHz (4000 e più MHz) basati su silicio nei nostri PC, e processori di potenza di gran lunga superiore al Cray 3 nelle nostre tasche.
Progressi imprevedibili
Quello che è successo è che sono cambiate le stesse metodologie di progettazione e realizzazione dei circuiti, e questo ha portato a progressi, rimanendo nella tecnologia del silicio, che non erano prima prevedibili.
Questo genere di considerazioni devono essere fatte quando si leggono articoli interessanti come questo apparso sul Guardian qualche settimana fa. Siamo abituati a considerare la legge di Moore, e cioè l’idea, in realtà declinata in vari modi, della crescita esponenziale del numero di transistor nei circuiti dei processori e quindi della loro potenza di calcolo, come un fatto oggettivo, e come fatto altrettanto oggettivo il suo limite. In altri termini, ci si aspetta un andamento simile a quello nella figura seguente.
Curva di Moore ed effetto saturazione: andamento esponenziale e poi asintotico
In realtà, simili “leggi” nascondono realtà molto intricate e innovazioni tecnologiche che si succedono nel tempo, creando andamenti che possono essere più complessi. Ad esempio il ricercatore della Cray Corp. sopra citato non riteneva evidentemente possibile poter “spingere” il silicio fino ai limiti a cui si spinge oggi. Si sbagliava.
Possiamo pensare che l’incremento delle performance dei processori possa ancora andare avanti o ci stiamo veramente avvicinando al punto di stabilizzazione? In realtà buona parte del progresso nel campo della progettazione dei processori sta non solo nella “forza bruta” (numero di transistor, velocità di clock) quanto nella natura del processore medesimo: processori superscalari, istruzioni vettoriali, out-of-order execution, etc., e anche nel progresso nella tecnologia dei compilatori. L’evoluzione verso i processori multicore, in cui in un solo package, eventualmente sopra un solo wafer di silicio, vengono realizzati più processori, diventa un fatto naturale. Invece che raddoppiare la velocità di un singolo processore, raddoppiamo il numero di processori. Ultimamente, nelle applicazioni di punta del cosiddetto “supercalcolo”, vengono utilizzati i processori massicciamente paralleli delle schede grafiche (GPU computing): una scheda grafica da videogiocatore può avere un migliaio o migliaia di core, e distribuendo il calcolo sui vari core si possono ottenere velocità di calcolo notevoli (ovviamente non proporzionale al numero di core: il calcolo va distribuito ed i vari processi devono sincronizzarsi e scambiare dati).
Il risultato è un continuo aumento della potenza di calcolo disponibile, pur rimanendo sostanzialmente nell’ambito della medesima tecnologia del silicio, a dispetto di chi pensava che la saturazione nella curva di cui sopra fosse vicina. Il punto dell’articolo del Guardian, pur interessante, e cioè il fatto che il raggiungimento del punto di saturazione nella curva debba farci tornare a pratiche di programmazione più “snelle” e meno divoratrici di risorse, risulta però difficile da fare. Si, è vero; anni fa ho buttato i dischetti – originali – di Photoshop 1.1 per Mac: due-tre dischetti da 800 k l’uno. Le versioni attuali viaggiano, credo – non ne faccio più uso – intorno a qualche gigabyte, quindi abbiamo avuto un incremento di un fattore prossimo ai tre zeri nella dimensione del software che installiamo comunemente.
Discorso analogo per le prestazioni: un 486 ci dava, decenni fa, una sensazione di velocità mai sperimentata prima, mentre un Intel Core 2 Duo oggi sembra un “polmone” inutilizzabile. Certamente è cambiato il software, ma è mia opinione che non sia cambiato, allargandosi nel consumo di risorse, solo perché ha trovato spazio in cui allargarsi (secondo la nozione, abbastanza comune, che il software sia come un gas, che si espande in tutto lo spazio che trova disponibile). Pensiamo infatti al peso delle interfacce utente, sempre più sofisticate e complesse, adatte a monitor di grandi dimensioni e ad alta risoluzione, o ad una quantità di funzioni che vengono aggiunte. Le funzioni ci sono, non è tutto spazio sprecato.
Il vero limite
Il problema semmai è un altro. Il vero limite che stiamo raggiungendo è quello dell’utilità effettiva di tutta questa potenza di calcolo e di tutto questo spazio. Anche considerando la sofisticazione del software moderno e delle sue interfacce, raramente l’utilizzatore comune ha bisogno della potenza di calcolo del suo computer. Ce ne accorgiamo ad esempio usando un Chromebook: il mio, con un processore Celeron che definire entry-level è un eufemismo, 4 gb di RAM e solamente 32 GB di disco a stato solido risulta essere un computer per utilizzo generale (navigazione web, email, Netflix, visione di foto e video, scrittura di documenti di testo o presentazioni) più che valido e molto, molto più utile di un tablet (non per altro per la presenza di una tastiera fisica). Per un utilizzo familiare e personale (non videoludico) raramente può servire una potenza di calcolo maggiore di quella di un computer da 3-400 euro: questo è il vero limite su cui siamo andati a sbattere, il limite dell’utilizzabilità delle risorse hardware disponibili, per cui hardware potente è davvero utile sono in casi particolari (o nel settore del videogaming, che è un discorso a parte).