Processori multicore e virtualizzazione

L’aumento della complessità delle applicazioni software ha richiesto un aumento più che proporzionale della potenza di calcolo necessaria a soddisfarla. L’aumento delle prestazioni dei processori è stata ottenuta, fino a qualche anno fa, attraverso lo scaling frequenziale e un contemporaneo scaling della geometria di integrazione, cercando di tenere sotto controllo i consumi di potenza. Questo approccio ha tenuto in vita la legge di Moore per diversi anni, anche se i limiti della geometria di integrazione denunciavano una imminente crisi del trend di sviluppo proiettato da tale legge. A salvare la legge di Moore è stata l’introduzione della tecnologia multicore e della tecnologia di virtualizzazione che congiuntamente hanno consentito di aprire prospettive di sviluppo di ben più lunga durata rispetto a quella che ormai era prospettabile con l’approccio tradizionale. Multicore e virtualizzazione rappresentano oggi un binomio tecnologico che offre agli sviluppatori di sistemi embedded la possibilità di innovazione che nessun’altra tecnologia è stata in grado di offrire negli ultimi dieci anni. La tecnologia multicore non solo offre maggiore efficienza computazionale rispetto ai single core, ma soprattutto offre la flessibilità della scalabilità, cioè di aumentare la potenza computazionale del sistema senza aumentare la frequenza di clock del processore, ma solo utilizzando un processore con un numero di core superiore a quello precedente. Questo aggiornamento in termini di potenza computazionale, senza ricorrere all’aumento della frequenza di clock, porta anche ad un aumento dell’efficienza energetica del sistema, aspetto questo particolarmente importante per i sistemi embedded. La tecnologia della virtualizzazione, altrettanto emergente come quella del multicore, consente di eseguire più macchine virtuali sullo stesso hardware di elaborazione, in maniera astratta rispetto alla natura dello stesso hardware sottostante. La virtualizzazione è quindi intesa a consentire l’esecuzione contemporanea di ambienti o completi sistemi operativi su un solo dispositivo. Pur essendo riconosciute come tecnologie importanti e innovative, multicore e virtualizzazione non trovano nel mondo dello sviluppo embedded la necessaria esperienza e conoscenza che queste richiedono. La maggior parte degli sviluppatori non non ha esperienza relativa alla messa in esecuzione su processori multicore di processi eseguibili in parallelo. Sin dall’introduzione della tecnologia multicore, gli stessi produttori di processori hanno capito che c’è una grossa differenza tra la programmazione per single-core e quella per multicore. C’è il problema del parallelismo che o lo sviluppatore deve codificare in qualche maniera utilizzando i linguaggi tradizionali di programmazione, oppure il compilatore deve essere in grado di estrarre e codificare adeguatamente il parallelismo intrinseco contenuto nell’applicazione che lo sviluppatore ha codificato con un linguaggio non orientato al parallelismo. Intel, per esempio, con l’introduzione dei primi processori multicore, ha reso disponibile un compilatore C++ e un compilatore Fortran, capaci di individuare e codificare opportunamente quelle parti del codice di programmazione che, pur scritte in modalità sequenziale, evidenzia proprietà di natura parallela, rendendo in tal modo effettiva l’esecuzione multithreading su architetture multicore. Un’ulteriore iniziativa per aiutare gli sviluppatori a superare le problematiche legate allo sviluppo software per le piattaforme multicore è consistita nel rendere disponibile come open source project la Threading Building Blocks (TBB), una libreria software C++ che semplifica la problematica dello software di applicazioni che vengono eseguite in parallelo. L’obiettivo di questa apertura è stata la necessità di rendere accessibile al programmatore il parallelismo messo a disposizione dai processori multicore.

Virtualizzazione e sistemi operativi
La virtualizzazione è la tecnologia che consente di mettere in esecuzione più di un ambiente o sistema operativo (per esempio un sistemo operativo real-time e un sistema operativo general purpose) sullo stesso sistema. La virtualizzazione in questo caso necessita di un sistema supervisore con capacità di protezione di un ambiente operativo rispetto all’altro, con l’obiettivo di rendere il sistema più affidabile e sicuro. Wind River ha sviluppato un hypervisor (Wind River hypervisor) che realizza uno livello software di intermediazione tra un processore multicore Intel (eventualmente anche single-core) e il sistema operativo Rtos WxWorks e Linux (Wind River Linux). Questi due sistemi operativi, il primo real-time e il secondo general purpose, virtualizzano il sistema in maniera ottimale per eseguire in parallelo, e con la dovuta efficienza, applicazioni real-time su segnali eimmagini e applicazioni non real-time su interfacce uomo-macchina. WxWorks, Wind River Linux e Wind River hypervisor sono disponibili per un’ampia gamma di processori Intel. Per esempio, sul Intel Core 2 Duo processor, essendo disponibili due core coprocessor, uno dei due core può eseguire le funzioni che hanno un timing esecutivo più critico, mentre l’altro core esegue le funzioni di interfaccia uomo-macchina. Wind River hypervisor consente il partizionamento della scheda fisica di processing in un insieme di schede virtuali. Ogni scheda virtuale può ospitare un intero sistema operativo oppure un minimo esecutivo. Grazie a una serie di strumenti di configurazione, è possibile ottenere la ripartizione dei core, della memoria e dei dispositivi fisici della scheda fisica. I core possono essere allocati su una singola scheda virtuale, oppure possono essere condivisi tra più schede virtuali, grazie alla disponibilità di opportuni algoritmi di scheduling. La memoria viene anch’essa partizionata in modo che ogni scheda virtuale ha un suo spazio di memorizzazione unico e robusto, cioè che non provoca problemi o conflitti con le altre schede virtuali. Questo meccanismo di virtualizzazione va oltre l’aspetto contingente del multicore ed è applicabile in generale ad hardware di elaborazione non integrati su un’unica scheda o su un unico processore, quindi a sistemi multischeda o multiprocessore. La virtualizzazione che Wind River hypervisor rende disponibile sopra lo strato hardware su cui risiede, consente di realizzare sistemi ad esecuzione parallela molto affidabili in quanto, pur apparendo come un sistema unico, l’hardware sottostante è costituito da parti fisicamente distinte, quindi indipendenti relativamente a possibili guasti (tollerante dei guasti).

Il multicore anche per il real-time
Le applicazioni embedded real-time hanno sempre trovato nel parallelismo esecutivo la soluzione di architettura di computing che ha consentito di mantenere bassa la frequenza di clock per soddisfare i requisiti di basso consumo. Le architetture DSP sono ad elevatissimo parallelismo esecutivo, sia del codice che dei dati, ma la crescente complessità delle applicazioni real-time, in particolare quelle multimedia, hanno imposto anche ai DSP di aumentare la frequenza di clock, penalizzando in tal modo i consumi. La soluzione multicore ha consentito anche ai DSP di sfruttare ulteriormente il parallelismo tenendo bassa la frequenza di clock. I dispositivi dual core e tri-core di Freescale. MSC8112 e MSC8113, parte della famiglia multicore MSC812x, sono un esempio di ottimizzazione di soluzioni multicore per soddisfare i requisiti delle applicazioni multimediali, delle infrastrutture di telefonia Ipbx e dei media gateway, oltre ad essere utilizzabili come generici Dsp.

Multicore oltre ogni limite
Il prototipo di chip multicore messo a punto da Intel integra ben 80 core su un singolo chip e dimostra che nei prossimi 5-10 anni la tecnologia multicore offrirà soluzioni computazionali dell’ordine dei Teraflops (mille miliardi di operazioni floating point al secondo) su singolo chip. Questo prototipo frutto della ricerca di Intel, oltre a dimostrare quale livello di integrazione dei core sarà possibile entro i prossimi dieci anni, evidenzia anche una serie di altre possibilità altrettanto rilevanti, come quella di utilizzare piccoli core come elementi di integrazione dei chip processori. La configurazione in rete (2-D meshing network) è resa possibile grazie a un message passing router a cinque porte integrato in ogni core. Ne deriva un livello di scalabilità tale che permette di ottenere prestazioni ottimali sia in termini di comunicazione intercore, sia in termini di gestione fine del consumo di potenza elettrica, che per 1 Teraflops è di solo 62 watt, quella che consuma un computer desktop oggi per produrre una potenza di calcolo decisamente inferiore.

Tecnologia ottica per il multicore processing

La tecnologia multicore processing consente di superare il problema dell’esasperato scaling up della frequenza di clock e scaling down della geometria di integrazione, sfruttando la potenza del parallelismo esecutivo. Anche questa soluzione però non è esente da problemi. Uno dei più rilevanti è proprio l’intercomunicazione tra i core. Recentemente Ibm ha annunciato di aver realizzato uno switch nanofotonico di dimensioni 100 volte inferiori a quella della sezione traversale di un capello. Questo risultato è proprio quello che serve all’industria microelettronica del multicore computing per poter considerare la soluzione multicore ulteriormente sviluppabile oltre i risultati allo stato dell’arte del dual core e quad core. Dato che di tali switch se ne possono integrare fino a 2000 in un’area di 1 millimetroquadro, è conseguentemente possibile integrarne migliaia su un singolo chip per interconnettere numerosi core, a velocità compatibili a quelle richieste dal processing. L’aumento di prestazioni del multicore, utilizzando questi switch è impressionante se comparato a quello ottenibile con interconnessioni elettriche in rame tipicamente implementate nell’integrazione microelettronica. In particolare i consumi di potenza elettrica risulterebbero enormemente ridotti. La velocità di trasferimento dei dati tramite questi switch ottici è di 40 Gbit/s su una specifica lunghezza d’onda. Dato che gli switch possono operare su diverse lunghezze d’onda contemporaneamente, questi possono coprire una banda globale di oltre 1 Tbit/s. In tal modo non si evidenziano limitazioni alla velocità di trasferimento dati tra i core, anche se questi utilizzano dimensioni di parole dati di ampie dimensioni (per esempio 64 bit).

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome