|
|
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.
|

|
|