Gaianews

Vincere il caos nei moderni computer a multiprocessore

Scritto da Redazione di Gaianews.it il 11.05.2010

Centro di elaborazione dati della NASA - Fonte WikipediaUSA – Chi di noi non ha mai pensato che il computer, simbolo del successo della logica matematica e forse il compimento del sogno dell’intelligenza meccanica, sia in realtà una macchina caotica – per non dire dispettosa? Gli ingegneri risponderebbero: i computer non giocano a dadi. Eppure, uno scienziato dell’Università di Washington ha ammesso che nei computer c’è qualcosa che non va e ha tentato di correre ai ripari con un semplice manifesto: se inserisci lo stesso comando in diversi computer, dovresti ottenere lo stesso risultato. Sfortunatamente, questo è lontano da ciò che succede con molte delle attuali macchine. A parte l’aspetto esteriore, i computer moderni si comportano in modi completamente diversi, dice Luis Ceze, un ricercatore in Informatica e Ingegneria presso l’Università di Washington.

Ed ecco l’ammissione di colpa: “Con i vecchi sistemi a monoprocessore, il comportamento era esattamente lo stesso se inserivi gli stessi comandi. I computer di oggi sono non deterministici. Anche se tu dai lo stesso comando, potresti ottenere diversi risultati,” dice Ceze.

Ceze e altri ricercatori hanno sviluppato un modo per far sì che i moderni processori possano comportarsi in modi predicibili, in particolare impacchettando i comandi e assegnandoli a specifici sottosistemi. Questi comandi vengono ancora eseguiti in parallelo, senza quindi perdere i vantaggi dei moderni processori “multi-core”, ossia con più unità di elaborazione separate, ma non ci saranno – promette Ceze – comportamenti caotici.

Fino a pochi anni fa, ogni computer aveva un processore, almeno nei personal computer usati dalla stragrande maggioranza della gente. Ma oggi lo standard per i prodotti di consumo è quantomeno un processore dual-core, ed anche le macchine cosiddette quad-core sono sempre più comuni sugli scaffali dei negozi. I supercomputer, quelli usati per compiti impegnativi come l’elaborazione di modelli meteorologici, la simulazione di esplosioni nucleari e così via, impiegano computer formati da centinaia o anche migliaia di unità di elaborazione.

Da un lato questa tecnica permette ai computer di andare più veloci e di usare meno potenza per gli stessi risultati che si otterrebbero da un monoprocessore. D’altro canto i ssitemi multiprocessore  sono responsabili di errori molto difficili da individuare, che bloccano i  browser web o altri programmi.

Il problema non è così diverso dal classico esempio del caos nel quale un battito d’ali di una farfalla in un luogo provoca un uragano dall’altro capo del globo. I moderni computer a condivisione di memoria devono trascinare attività in esecuzione da un punto all’altro del sistema. La velocità con la quale le informazioni viaggiano può subire piccole variazioni, a causa delle diverse distanze dovute alla geometria interna o dalla temperatura dei collegamenti. Le informazioni possono arrivare con un diverso ordine e portare a errori inaspettati, anche in attività che sono state eseguite senza problemi già  centinaia di volte.

“Con i sistemi multi-processore il trend è di avere sempre più errori a causa della difficoltà di scrivere codice per tali sistemi,” dice Ceze. “E questi problemi di concorrenza sono molto più difficili da risolvere rispetto ad un normale baco di programmazione.”

Una applicazione del sistema sviluppato dai ricercatori dell’Università di Washington è di di rendere questi errori riproducibili, in modo da poter testare i programmi in modo corretto.

“Abbiamo sviluppato una tecnica di base che può essere utilizzata in un ampio range di sistemi, dai cellulari ai centri di calcolo. In ultimo, vorrei che fosse sempre più semplice per tutti sviluppare sistemi sicuri, a basso consumo e con grandi prestazioni di calcolo.”

L’anno scorso Ceze con altri due collaboratori,  Oski e Peter Godman hanno fondato una compagnia per commercializzare la loro tecnologia. PetraVM (http://petravm.com/) è stata inizialmente chiamata così dalla parola greca di roccia, per indicare le solide basi su cui si vorrebbe costruire un sistema informatico. Presto questa startup rilascerà il primo prodotto, Jinx, che promette di scovare i cosiddetti bug dovuti al parallelismo dei sistemi a multiprocessore prima di altri sistemi tradizionali di identificazione degli errori.

“Possiamo comprimere gli effetti di migliaia di persone che usano uno stesso programma nei pochi minuti di sviluppo dell’applicazione da testare,” dice Ceze. “Vogliamo permettere alle persone di scrivere codice per sistemi a multiprocessore senza diventare matti.”

La compagnia ha già qualche grande nome tra i clienti in fase di test per il nuovo software, anche se Ceze non ha voluto svelare le loro identità.

“Se il comportamento casuale dei computer ci irrita come mormali utilizzatori, immaginiamo come la possono prendere le banche o altre attività critiche quando un sistema pagato milioni sbaglia a fare i conti.”

Noi ce lo auguriamo, anche da comuni mortali.

© RIPRODUZIONE RISERVATA