Intel delinea la sua strategia Multi-Core

Aziende

Se oggi l’azienda è concentrata sugli annunci Dual Core, il futuro passa dal Multi-Core come racconta Justin Rattner, Direttore Corporate Technology Group Intel, che ha descritto a CRN le opportunità e le difficoltà che caratterizzano i processori paralleli

All’ultimo Intel Developer Forum di San Francisco, Intel ha delineato la propria strategia sui processori Multi-Core, che secondo il produttore dovrebbero dominare il futuro del computing. Il gigante dei chip prevede che i processori paralleli diventeranno la norma entro il 2015, dal momento che queste architetture mettono a disposizione l’unico modo per aumentare le capacità e le prestazioni dei sistemi di prossima generazione. In una intervista rilasciata a CRN Justin Rattner, Direttore Corporate Technology Group Intel, si è dichiarato convinto che il mondo si trova “Sull’orlo di quella che probabilmente sarà la transizione architetturale più importante nella storia del microprocessore…”. CRN: Perché abbiamo bisogno di processori sempre più veloci? Justin Rattner: Se vogliamo dei sistemi più simili all’uomo, capaci di accettare forme più naturali di input e di produrre forme più naturali di output, ci vuole una capacità di elaborazione più grande di vari ordini di grandezza rispetto a quella attualmente disponibile. È questo il tipo di sistemi che tutti vogliono. Nessuno invece vuole dei sistemi poco amichevoli e difficili da usare, che sembrano richiedere più assistenza di quella che offrono. CRN: È compito suo capire come si possono realizzare questi sistemi? J.R.: I processori hanno dei tempi di sviluppo così lunghi che bisogna ragionare con un anticipo di dieci anni. Quando pensiamo a un prodotto nella parte matura del suo ciclo di vita, pensiamo a cosa farà la gente con questi prodotti tra un decennio. È come essere nel 1985 e affermare che Internet diventerà enorme. Quattro o cinque anni fa, le tecnologie di hyper-threading e multi-core rivestivano un aspetto centrale per noi. Adesso i nostri sviluppatori stanno facendo un buon lavoro con due, quattro e otto core. Il Corporate Technology Group di Intel tende a pensare a più di otto core, a ciò che comincia ad accadere quando ci sono decine di Core per Die e potenzialmente centinaia di thread software in esecuzione in un singolo processore. La tecnologia dual-core è soltanto un sassolino nello stagno, che non obbliga molti ad affrontare direttamente le difficoltà di programmazione. In ogni caso, tra non più di cinque anni sarà necessario confrontare questi problemi con il computing parallelo e rendere disponibili i tool e le tecnologie che lo rendono pratico. Ci troviamo sull’orlo di quella che probabilmente sarà la transizione architetturale più importante nella storia del microprocessore. CRN: Quale tipo di difficoltà presenteranno le tecnologie Multi-Core e Multi-Threading? J.R.: Il fatto che la programmazione parallela non sia certamente una cosa banale è generalmente accettato. Le attuali tecniche di programmazione sono soggette a ogni tipo di errori dei quali è particolarmente difficile tenere traccia, soprattutto nel caso degli errori che dipendono dal tempo. Lo abbiamo valutato di recente nel quadro di un nostro studio interno. È emerso che il black-out elettrico che si è verificato nel nord-est degli USA nell’agosto del 2003 è dipeso da uno di questi errori dipendenti dal tempo. Un programma o un thread stava mantenendo un lock; un altro thread a priorità elevata non è riuscito a togliere il lock e tutto si è semplicemente bloccato. Quel sistema si è fermato perché si è verificato un abbraccio mortale tra questi due thread. Ha funzionato perfettamente per anni, ma si è bloccato in questo caso specifico. Anche la Nasa ha avuto uno di questi problemi perché un paio di thread si contendevano dei dati condivisi. CRN: Tutti questi thread all’interno del processore possono creare qualche tipo di paralisi dei dati? J.R.: Se è necessario provvedere al lock di due cose, qualcosa può andare storto. Dal momento che non si tratta di un’attività esclusiva ottengo questo lock, ma poi salta fuori che qualcun altro ottiene l’altro lock. Io aspetto che lui rilasci il suo e lui aspetta che io rilasci il mio. Poi c’è la forma opposta, che si chiama ‘Live Lock’. È simile a un loop infinito dove ci si insegue reciprocamente in tondo, senza mai riuscire ad avanzare. Gli errori come questo non si presentano nei programmi sequenziali tradizionali. In questi programmi viene effettuato un passo dopo l’altro e non ci sono problemi. L’ipotesi è che non stia accadendo nient’altro. Non c’è parallelismo e tutto va bene. Una delle maggiori difficoltà si presenta invece quando si adottano i nuovi approcci, che eliminano delle classi molto ampie di questi errori dipendenti dal tempo e presentano al programmatore una vista molto più semplificata del modo in cui si comporta il sistema. Ciò cambierà i linguaggi di programmazione, gli ambienti di runtime, i sistemi operativi, le interfacce con il set di istruzioni, letteralmente fino alla micro-architettura e alle interfacce interne del sistema. CRN: In che modo ciò influenzerà i programmatori e il settore nel suo complesso? J.R.: Per ottenere tutti i vantaggi sarà probabilmente necessario inventare dei nuovi linguaggi. Ciò non accade spesso, ma soltanto ogni dieci anni. L’esempio più recente è rappresentato da Java. Nessuno si aspettava che emergesse un nuovo linguaggio di programmazione ma, a causa di grosse inflessioni come Internet, qualche cambiamento importante ha favorito lo sviluppo di un nuovo linguaggio. Un’architettura multi-core dei processori è esattamente lo stesso tipo di evento a ottavo livello della scala Richter che dà la stura a ogni tipo di processi creativi. In un certo senso avevamo i giorni contati. Ci basavamo sulla capacità dei produttori di continuare a migliorare le prestazioni dei singoli thread. Tutti potevano dire: “…Stiamo ottenendo dei miglioramenti di prestazioni sufficienti per evitare di affrontare i problemi associati al parallelismo…”. In ogni caso, il multi-core esiste perché questi miglioramenti storici delle prestazioni dei singoli thread non sono più ottenibili. Adesso, il modo con cui è possibile ottenere un incremento delle prestazioni consiste nel guardare al parallelismo a livello di thread, non al parallelismo a livello di istruzioni. CRN: Intel sta lavorando a qualcuno di questi nuovi linguaggi? J.R.: Abbiamo un gran numero di progetti di ricerca correlati ai linguaggi. Uno è un linguaggio specifico al dominio. Ha una sintassi simile a quella del C, è stato progettato in modo specifico per le applicazioni orientate alle comunicazioni dei programmi, per le applicazioni packet oriented. Il programmatore scrive il codice che definisce come gestire un singolo pacchetto e il sistema lo mappa su thread e core, prendendosi cura di un gran numero di questioni di routine che possono complicare il lavoro del programmatore. Riteniamo che quello dei linguaggi specifici al dominio sia un trend molto importante. Dedichiamo molto tempo allo sviluppo di linguaggi sicuri, in modo da consentire al compilatore di fare di più per gestire la contemporaneità. I programmatori dovranno inoltre prendere in grande considerazione gli algoritmi sottostanti. Abbiamo dedicato decenni alla loro ottimizzazione per gli ambienti a singolo thread. Quando si incomincia a parlare di un numero significativo di thread e core, bisogna realmente tenere conto del tipo di algoritmi che si utilizzano. Qui ci sarà una curva di apprendimento piuttosto significativa. Attualmente, molti studenti escono dall’Università senza avere mai scritto un programma parallelo. Però, all’inizio della loro carriera dovranno scrivere dei programmi paralleli. Che lo vogliano o no. CRN: Se questo è un problema così importante, perché state incominciando a risolverlo soltanto ora? J.R.: Si tratta di un problema simile a quello dell’uovo e della gallina. Perché dovrei insegnare la programmazione parallela, se non ci sono computer da programmare al di là delle macchine ad alte prestazioni? Non ce n’era la necessità. Adesso che ci saranno centinaia di milioni di processori con due, quattro e otto core, questo sta trasformandosi in un problema quotidiano. Ci sarà bisogno di molto training e formazione per insegnare nuovi modi di ragionare su questi problemi. Con il passare degli anni, la produttività nella programmazione è arrivata a basarsi sull’introduzione di uno strato dopo l’altro di software, aumentando il livello di astrazione. La gente può scrivere in DB Script e spostare le montagne. Bisogna diventare in grado di farlo anche con i programmi paralleli.

Autore: ITespresso
Clicca per leggere la biografia dell'autore  Clicca per nascondere la biografia dell'autore