Torna alla prima pagina

     

Dalle valvole a Blue Gene

Ernesto Hofmann

 

L' evoluzione dei computer è veramente iniziata alla fine degli anni '50 con l'avvento del transistor. Prima di allora, infatti, le valvole ponevano insormontabili limiti alla miniaturizzazione dei circuiti elettronici e quindi al numero complessivo dei circuiti che potevano essere utilizzati da uno stesso computer. Con i transistor si intuì immediatamente che sarebbe stato possibile aggregare un numero sempre più grande di circuiti, a loro volta più veloci perchè di dimensioni sempre più piccole. Gordon Moore comprese tra i primi che questo fenomeno avrebbe avuto una straordinaria influenza sul futuro del computer ed enunciò a metà degli anni '60 un'ipotesi, che prese il nome di legge di Moore, secondo la quale la potenza di calcolo dei computer sarebbe raddoppiata circa ogni anno e mezzo a parità di costo per l'utente. In trent'anni la potenza di calcolo sarebbe dovuta aumentare quindi di un milione di volte: e di fatto così è avvenuto.
Per ottenere un simile risultato è stato necessario il concorso di molteplici ricerche e innovazioni che hanno riguardato non solo le tecnologie circuitali ma anche l'organizzazione complessiva del computer. Una tipica istruzione eseguita dal computer utilizza mediamente alcune decine di circuiti microelettronici. Più rapidi sono questi ultimi più veloce è l'esecuzione dell'istruzione. Ma un'istruzione, per essere eseguita, ha spesso bisogno di utilizzare operandi che potrebbero non essere immediatamente disponibili ai circuiti utilizzati dall'istruzione stessa. E' quindi necessaria una struttura di memoria che consenta ai dati più frequentementre utilizzati di essere immediatamente disponibili.

E dalla metà degli anni '60 era già evidente che per superare i vari colli di bottiglia che si potevano presentare nell'esecuzione di un'istruzione, occorreva una complessa organizzazione circuitale. Si era anche compreso che a parità di tecnologia circuitale si potevano ottenere più elevate prestazioni se venivano utilizzati contemporaneamente molteplici unità di elaborazione in grado di eseguire in parallelo gruppi differenti, e opportunanamente selezionati, di istruzioni. Simili sistemi, definiti multiprocessor, erano apparsi già alla fine degli anni '60 ma non erano sempre in grado di superare le difficoltà insite ai meccanismi di sincronizzazione di microattività eseguite in parallelo. All'inizio degli anni '70 si potè così assistere a un avvicendarsi di problemi e soluzioni via via che una tecnologia sempre più "circuitalmente densa" consentiva al tempo stesso una maggiore velocità e un più elevato numero di circuiti, parte dei quali poteva essere utilizzata per aumentare il parallelismo funzionale del computer. Furono così introdotte memorie di transito ad alta velocità, le cosiddette cache; canali intelligenti, accessi indipendenti alla memoria centrale, denominati interleaving; esecuzione simultanea di istruzioni indipendenti, ossia pipelining; sistemi a 2, 4, 6 vie,...

L'avvento dei supercomputer.

Negli stessi anni si evolvevano peraltro ulteriori tipi di computer, definiti supercomputer, progettati per ottenere prestazioni molto più elevate rispetto ai computer a uso generale, general purpose computer. Nella seconda metà degli anni '60 erano così apparsi l'ILLIAC IV, il CDC 6400, il 360/91, lo Staran,...
Tali supercomputer non solo utilizzavano le tecnologie circuitali più evolute dell'epoca ma usufruivano anche di organizzazioni interne molto complesse. Il loro obiettivo era in generale quello di risolvere essenzialmente problemi nei quali piuttosto che la casualità delle sequenza di istruzioni da eseguire, tipica degli ambienti commerciali, era la grande quantità di dati numerici sui quali occorreva eseguire ripetutamente sequenze di istruzioni abbastanza simili. E' stata volutamente semplificata al massimo la descrizione di tali sistemi proprio per metterne in luce la caratteristica più significativa, ossia l'essere tali sistemi sostanzialmente disegnati per ottenere elevate prestazioni per una ben definita e circoscritta classe di problemi. Tali caratteristiche si sono mantenute nel tempo e anche ora i supercomputer vengono disegnati per affrontare problemi essenzialmente numerici.

Attualmente il supercomputer più potente viene stimato essere l'IBM ASCI White (Advanced Simulation Computer) utilizzato nei laboratori Lawrence Livermore per simulare esplosioni nucleari. ASCI White è un aggregato (cluster) costituito di 512 sistemi IBM RS/6000 SP ciascuno dei quali è a sua volta costituito di 16 processori che condividono una stessa memoria. L'intero complesso occupa uno spazio all'incirca equivalente a quello di due campi di pallacanestro. Gli 8192 processori di ASCI White hanno una capacità teorica complessiva di elaborazione equivalente a 12.3 teraflops (un teraflop equivale a mille miliardi di operazioni in virgola mobile al secondo). Poichè un personal computer attuale è teoricamente in grado di eseguire poco meno di un miliardo di istruzioni al secondo si può ipotizzare che la capacità elaborativa di ASCI White equivalga a quella di alcune migliaia di personal computer. ASCI White è anche mille volte più potente di Deep Blue il supercmputer che nel 1997 sconfisse il campione di scacchi Garry Kasparov.

Una simile potenza di calcolo potrebbe sembrare adeguata a risolvere problemi di grande complessità numerica, come appunto la simulazione di un'esplosione nulcleare o lo scontro di due sistemi stellari. ASCI White non è però in grado di risolvere una nuova classe di problemi che viene oggi posta dalla biologia.

Basti pensare che se continua a essere vera l'ipotesi di Moore, secondo la quale la potenza di calcolo raddoppia ogni diciotto mesi, è anche vero che la quantità dei dati che la genomica rende disponibili raddoppia ogni sei mesi.

Il ripiegamento delle proteine

Tra i problemi che oggi la scienza deve affrontare, dopo il sequenziamento del genoma umano, il più importante sembra essere quello del cosiddetto ripiegamento (folding) delle proteine. Una proteina è una molecola molto grande costruita da una particolare nanomacchina operante all'interno delle cellule, il ribosoma, che utilizza come stampo il DNA. Il ribosoma costruisce una catena di amminoacidi come se infilasse una dietro l'altra una serie di perle, scegliendo di volta in volta il particolare amminoacido, tra i tanti che fluttuano liberamente all'interno della cellula, in funzione di ciò che legge sullo specifico gene attivo. Quest'ultimo agisce quindi come una vera e propria sequenza di comandi per costruire una determinata proteina.

Nel nostro ragionamento semplificato abbiamo immaginato un filo di perle che, quasi ovviamente, sia disposto su di un piano. In realtà la proteina nel tempo stesso nel quale viene costruita, e inferiore al secondo, si ripiega su sè stessa assumendo una conformazione tridimensionale che è unica e identica per tutte le proteine di quel tipo. Ogni proteina ha quindi una ben precisa struttura tridimensionale.
Una delle maggiori scoperte di questo secolo è l'aver compreso che molte malattie degenerative sono causate da un errato ripiegamento (misfolding) di una specifica proteina. E' quindi di fondamentale importanza comprendere il meccanismo di ripiegamento delle proteine. Ciò infatti potrebbe aprire la via alla creazione di farmaci in grado di correggere tale degenerazione ancor prima di poter correggere il difetto a livello genetico, ossia nel DNA. E' intuibile che il computer sia lo strumento ideale per simulare matematicamente tale processo di ripiegamento.
Un modello molto semplificato potrebbe innanzitutto creare le sequenze di amminoacidi corrispondenti al particolare gene. Poichè la struttura di ogni amminoacido è ben conosciuta il computer è in grado di costruire un modello atomico complessivo della proteina in esame. A questo punto il computer dovrebbe calcolare tutte le forze esistenti tra i vari atomi (forze di legame, forze di Coulomb, forze di Van der Waals,..) e valutare come esse causino il ripiegamento della proteina su sè stessa.

Il processo di ripiegamento dovrebbe essere modellato come una sequenza cinematografica nella quale per ogni fotogramma dovrebbero essere calcolate le forze e la progressiva deformazione della proteina in un arco di tempo che idealmente dovrebbe essere equivalente a un millesimo di miliardesimo di secondo. Per eseguire l'intero processo occorrerebbe quindi un milione di miliardi di fotogrammi.
Il modello di una proteina costituito da centinaia di atomi richiede il calcolo di milioni di interazioni reciproche che devono essere continuamente ricalcolate per ogni infinitesima variazione di forma della proteina stessa, ossia per ogni fotogramma del nostro ideale filmato, mentre è noto che già il problema di alcuni corpi celesti sottoposti alle mutue interazioni gravitazionali non può essere risolto esattamente. E' quindi intuibile che già a questo livello di simulazione occorre eseguire un'enorme quantità di calcoli per ogni fotogramma.
Gli odierni più potenti supercomputer impiegherebbero mesi per completare lasimulazione di meno di un milionesimo dell'intero processo di ripiegamento.

Occorre quindi una nuova classe di supercomputer molto più potenti di quelli attuali per affrontare i problemi posti dalla cosidetta proteomica.

Da Deep Blue a Blue Gene

La sconfitta del campione del mondo di scacchi, Garry Kasparov, da parte del computer IBM Deep Blue creò nel 1997 una grande sensazione.
Deep Blue era computer IBM RS/6000 con 32 nodi. Ogni nodo utilizzava una scheda con 8 processori VLSI specializzati per gli scacchi. Complessivamente Deep Blue utilizzava così 256 processori operanti in parallelo e in grado di eseguire da 100 a 200 miliardi di mosse in tre minuti.
Pochi compresero peraltro che alla base della strategia che aveva consentito a Deep Blue di vincere c'era un obiettivo molto più ambizioso, che era proprio quello di affrontare le complesse simulazioni richieste dalla cosiddetta dinamica molecolare, di cui il ripiegamento della proteina è un tipico esempio. Pur essendo due processi del tutto indipendenti il gioco degli scacchi e la predizione di una struttura proteica mostrano infatti sorprendenti rassomiglianze strutturali, tanto da venir definiti problemi convergenti.
Ambedue sono complessi problemi, essenzialmente algoritmici, che richiedono un'enorme quantità di operazioni per essere modellati su di un computer.
Ma ci sono anche alcune differenze. Mentre infatti nel gioco degli scacchi le regole sono relativamente poche e molto ben conosciute quelle che governano la costruzione di una proteina sono molto più complesse e ancora non pienamente comprese.
Come sempre nella storia dell'umanità non sarebbe però sorprendente se i progressi ottenuti in una disciplina non finissero col favorire l'evoluzione dell'altra.

Potremmo anche paradossalmente immaginare che un complesso algoritmo evolutosi nell'ambito della dinamica molecolare possa un giorno diventare anche un imbattibile campione nel gioco degli scacchi.

La realizzazione di algoritmi così sofisticati richiede peraltro una potenza di calcolo sempre più grande. Come ottenerla?

Deep Blue era solo un primo passo in questa direzione.

E' possibile costruire un computer che sia almeno cento volte più potente di ASCI White e che occupi molto meno spazio?

L'IBM Blue Gene è la risposta a questa domanda.

Blue Gene è costitutto di 36834 chip ciascuno dei quali contiene 16 megabyte di memoria e 40 processori indipendenti, ognuno di quali condivide con gli altri la stessa memoria ed è in grado di colloquiare anche con gli altri processori dell'intero complesso.
I chip con 40 processori vengono a loro volta aggregati su piastre (board) che ne contengono 36. Quattro board costituiscono un rack la cui potenza di calcolo è prossima a quella di ASCI White.
Infine 225 rack costuiscono l'intero complesso. Blue Gene è in sostanza un computer costituito da circa un milione di processori, ciascuno dei quali ha una capacità elaborativa di un miliardo di operazioni in virgola mobile al secondo. Blue Gene ha quindi una capacità teorica complessiva di oltre un milione di miliardi operazioni al secondo. Un simile sistema, costituito da così numerosi elementi, pone ovviamente molte difficoltà. Innanzitutto quella dei consumi e quindi del rafferddamento. Blue Gene utilizza un'architettura di microprocessore di tipo RISC (reduced instruction set computer) ma resta realmente fedele a quest'architettura. L'originale architettura RISC prevede un insieme ridotto di istruzioni di macchina e un disegno interno abbastanza semplice. Ma nel corso degli ultimi anni si è assistito un progressivo arricchimento funzionale dei microprocessori RISC che hanno finito con l'utilizzare milioni di transistor per introdurre non solo ulteriori istruzioni ma anche molteplici livelli di parallelismo interno. Popolandolo di un numero sempre più elevato di circuiti, anche specializzati, si è in pratica puntato più alla velocità del chip che alla sua efficienza energetica. Deep Blue era stato realizzato aggregando chip disegnati e costruiti ad hoc (custom chips) per riconoscere rapidamente le configurazioni della scacchiera. Questi chip specializzati svolgevano due terzi del lavoro necessario per decidere quale sarebbe stata la prossima mossa del computer scacchista. Blue Gene, in un certo senso, rovescia questa strategia puntando piuttosto al macroparallelismo dell'applicazione da eseguire su innumerevoli processori piuttosto che al microparallelismo del singolo processore. Ogni chip viene quindi disegnato in maniera abbastanza semplice, cercando di ridurre il numero di transistor necessari, rispetto agli attuali microprocessori RISC, ottenendo così un'efficienza termica per unità di superficie del chip molto migliore. In tal modo le dimensioni complessive di Blue Gene risultano decisamente più ridotte (meno di un quarto di ASCI White) e non c'è necessità di utilizzare complessi sistemi di raffreddamento ad acqua o a Freon come in molti attuali supercomputer.
In un supercomputer convenzionale costituito di alcune centinaia di processori un guasto si può presentare circa ogni due anni. Ma in una popolazione di un milione di microprocessori, come in Blue Gene, un guasto a un singolo processore si presenta in media ogni quattro giorni. Blue Gene è stato progettato per continuare a funzionare anche a fronte di simili eventualità. Lo stesso chip che contiene 32 processori è stato progettato per essere faulttolerant, ossia per poter continuare a essere attivo anche nel caso in cui un singolo processore debba essere isolato dagli altri perchè guasto. Anche le board sono faulttolerant e possono quindi essere dinamicamente isolate dall'intero sistema ed eventualmente rimosse. Blue Gene può così continuare a funzionare anche con una configurazione ridotta.

Con Blue Gene viene così proponendosi una nuova strategia per i supercomputer che è quella di utilizzare microprocessori ragionevolmente semplificati ma aggregati in enormi quantità per mezzo di nuove, molto sofisticate, tecniche di aggregazione. E' chiaro che il problema del parallelismo si sposta verso il software, sia di sistema sia applicativo, e verso tecnologie di sincronizzazione dell'intero aggregato che ne consentano una continua disponibilità.
Una simile modello, che ricorda quasi il sistema cellulare umano, potrà forse svilupparsi anche in altre direzioni. Per esempio singoli processori, come ulteriori supercomputer, potrebbero essere aggregati in un unico complesso attraverso la rete Internet, come già avviene con il cosiddetto Gridcomputing. Questi nuovi modelli di computing richiederanno certamente nuove architetture, nuovi sistemi operativi e nuovo software applicativo. Blue Gene certamente contribuirà a perfezionare molte idee in un simile contesto. Il suo stesso nome sembra emblematico di questa nuova visione cellulare dei grandi complessi di elaborazione.



 

 

Per contattarci Le iniziative in programma Le iniziative realizzate I Soci OTM Che cos'è l'Osservatorio