Simulazione totale dei sistemi

La cosiddetta piattaforma virtuale è il modello di simulazione di sistema che si basa sulla filosofia della simulazione totale, cioè dell’hardware target inteso come un insieme di funzionalità tutte simulabili in un contesto unico, cioè il sistema come unica entità integrata. Il sistema, in accordo con questo modello unificato, consente di eseguire il software target (sistema operativo, applicazione, firmware, middleware, ecc. ) in maniera identica a quella che consente l’hardware target (quello fisico), inclusa la performance real-time. Si tratta quindi di un approccio alla progettazione, che pur avvalendosi delle metodologie e tecnologie della simulazione, riduce a zero il disallineamento tra simulazione ed emulazione, applicando il concetto di “simulazione totale”. La peculiarità di Simics di Wind River sta anche nella sua capacità di estendere questo concetto di simulazione a tutte le fasi del ciclo di vita del sistema, quindi includendo anche la fase di test, produzione e mantenimento del sistema. Si tratta quindi di un approccio olistico allo sviluppo delle applicazioni di natura computazionale che favorisce il “system thinking”, cioè quel modello di pensiero orientato al sistema come entità integrate e non come funzioni che possono essere trattate separatamente. I vantaggi della simulazione sono ben noti agli sviluppatori dal tempo in cui sono stati introdotti i primi microcalcolatori, quando cioè non era possibile sviluppare e verificare il software direttamente sull’hardware, ma allo stesso tempo ne erano noti i limiti, in particolare la performace non real-time, ma anche la mancata integrazione con il resto del sistema. Il superamento di questi limiti della tecnologia di simulazione dei sistemi consente di fruire dei vantaggi della simulazione senza subirne gli svantaggi. In particolare poter fare anche quello che non consente di fare il sistema hardware a causa della sua natura fisica, per esempio congelare, salvare, comunicare e ripristinare lo stato del sistema in tutta la sua totalità, è la principale peculiarità della simulazione, per esempio la possibilità è quella di eseguire un processo in maniera inversa per indagare e scoprire dove un fenomeno di malfunzionamento si è manifestato (è il concetto di macchina del tempo). La “piattaforma virtuale” è un vero e proprio nuovo paradigma di progettazione che accelera enormemente il processo di sviluppo dei sistemi e delle applicazioni che questi sistemi devono eseguire. Secondo alcune stime, la progettazione basata sul modello della “piattaforma virtuale” consente di ridurre i costi del 45%, il tempo di completamento del ciclo di sviluppo e di produzione del 66% e il tempo di verifica funzionale del 35%.

Simics di Wind River
Wind River ha recentemente introdotto Simics, un ambiente di simulazione totale che mette a disposizione dello sviluppatore uno strumento di progettazione completamente software per lo sviluppo di sistemi software. Uno dei principali vantaggi è quello di consentire la completa esplorazione dell’intero sistema prima che la realizzazione hardware sia effettivamente disponibile. La natura completa di questo simulatore consente di andare anche molto oltre questo indubbio vantaggio. Per esempio è possibile verificare la funzionalità hardware e software man mano che questa evolve nel tempo, analizzandone l’impatto. Nella fase di sviluppo il simulatore non solo consente di sviluppare in maniera efficiente il software ad alto livello in quanto allo stesso tempo è possibile sviluppare e verificare il software a basso livello malgrado la non disponibilità dell’hardware. In tal modo lo sviluppo del software è completamente parallelo a quello dell’hardware, e tutte le problematiche di integrazione tra hardware e software sono completamente evitate. Il reverse debug per esempio è una delle vantaggiose conseguenze della tecnologia della simulazione che consente di risolvere in maniera particolarmente efficiente gli errori e i malfunzionamenti difficilmente identificabili in quanto variabili nel tempo e nel modo di manifestarsi. Questa modalità di debug, possibile solo sul simulatore, consente di evitare l’indeterminazione hardware/software nella classificazione dei malfunzionamenti, che rappresenta una delle principali problematiche della fase di integrazione. I vantaggi della simulazione totale, così come è stata concepita in Simics, vanno oltre quelli ovvi della fase di sviluppo, integrazione e test. I vantaggi si propagano anche alla fase di rilascio e mantenimento del sistema. Quando il sistema ha raggiunta una sufficiente di maturità nella fase di sviluppo, allora può essere condiviso sia nella sua totalità, sia nelle sue parti, con gli altri partner. La non dipendenza stretta dall’hardware consente di distribuire versioni custom del sistema, proprio perché Simics è riconfigurabile e completamente hardware indipendente. Molto interessanti sono le possibilità di simulazione globale che offre Simics relativamente al mantenimento del sistema. È possibile configurare un laboratorio virtuale per la manutenzione e di conseguenza poter attrezzare gruppi di manutenzione geograficamente distribuiti e dotati di un equivalente virtuale del prodotto finale. Di conseguenza è possibile mantenere la validità del prodotto indipendentemente dall’obsolescenza dell’hardware.

Le caratteristiche di Simics
Ecco le principali caratteristiche di Simics che permettono allo sviluppatore, ma anche al project manager, di gestire con la massima efficienza un progetto di sistema complesso e la messa a punto dei processi applicativi:
Stop totale del sistema - Contrariamente a quanto possibile sul sistema fisico (hardware/software), il sistema virtuale può essere fermato completamente e in maniera sincrona; questa funzionalità è particolarmente significativa se il sistema è ad architettura multicore e ricco di periferiche. Un altro importante vantaggio è che dopo lo stop è possibile eseguire il debug come se il sistema non fosse stato fermato, potendo mantenere integro il timing (interrupt, driver, multi-trading, ecc.) ed ovviare il problema del time-out per il processi fermi in attesa di risultati.
Ripetitibilità - La caoticità comportamentale del sistema fisico non consente la ripetibilità del processo che, per esempio, ha prodotto un malfunzionamento, ma anche semplicemente che ha prodotto dei risultati che si vogliono valutare per ottimizzare il sistema. Il sistema virtuale consente la perfetta ripetibilità dei processi semplicemente tramite il caricamento di un pre-debug system checkpoint e della conseguente esecuzione. Il sistema di virtualizzazione garantisce la perfetta riesecuzione del processo nelle medesime condizioni precedenti registrate fino al checkpoint (va osservato che la ripetizione esclude tutte le modifiche successive fatte sul sistema).
Esecuzione inversa - L’esecuzione inversa è una funzionalità complementare della ripetibilità che, nella implementazione di simulazione totale implementata da Simics, consente di risalire in maniera inversa ad un punto significativo del processo (per esempio un punto di malfunzionamento), ottenendo tutte le necessarie informazioni utili al debug e test del sistema. Durante l’esecuzione inversa del processo nel sistema virtuale i breakpoint hardware e software continuano ad essere eseguiti.
Breakpoint virtuali - Mentre nell’emulazione la natura dei breakpoint è strettamente legata all’hardware di emulazione, nella simulzione implementata in Simics la natura dei breakpoint è illimitata, consentendo in tal modo di eseguire stop di esecuzione legati ad eventi non riconducibili a elementi del sistema; per esempio il sistema si ferma quando è trascorsa una certa quantità di tempo nel target virtuale. Questa virtualizzazione dei breakpoint non richiede la modifica del codice del sistema target.
Mal funzionamenti virtuali - Simics consente di iniettare dei malfunzionamenti in qualsiasi parte del sistema (memoria, processore, registri, ecc.) e in qualsiasi fase dell’esecuzione del processo.
Testing parallelo - Il test parallelo viene eseguito utilizzando dei grossi server oppure cluster di Pc o altre risorse di computing che consentono di mettere in esecuzione molte istanze della piattaforma virtuale.

Simics ha un ambiente di sviluppo precostituito e basato su Eclipse, che consente di programmare in C/C++, di eseguire il debug e di integrare toolset software standard. Simics supporta una serie di architetture di computing industry standard come Mips, Arm, Spark M68K, ecc. L’ultima release di Simics include vari miglioramenti che permettono soprattutto di affrontare la complessità dei sistemi, in particolare quelli orientati alle applicazioni in ambito Internet of Things). In particolare l’inclusione del linguaggio SystemC tra i linguaggi di programmazione è coerente con la natura multicore e multiprocessing che caratterizza sempre più spesso le applicazioni rilasciate in ambito IoT. Un significativo miglioramento ha riguardato anche l’introduzione della condivisione della simulazione tra gruppi tramite la definizione di un checkpoint server che consente la gestione dei checkpoint tra i gruppi che partecipano alla progettazione.

 

Pubblica i tuoi commenti