Contenuto
Ti trovi in: HOME »Programmi, progetti e risultati »I progetti »PRIN - Programmi di ricerca di Rilevante Interesse Nazionale»Programma di ricercaINIZIO_TESTO_DA_INDICIZZARE
PROGRAMMA DI RICERCA
italiano - english
Unità di Ricerca
Programmi di ricerca simili:
- 1 - Future applicazioni del paradigma peer-to-peer
- 2 - Sistemi ad oggetti estendibili (EOS)
- 3 - Studio e sviluppo di un sistema per il controllo e il monitoraggio in tempo reale del territorio per la prevenzione degli incendi
- 4 - Sviluppo di metodi innovativi per la misura di grandezze meccaniche nella ottimizzazione della riabilitazione del movimento
- 5 - Tecniche Robuste e di Ottimizzazione per Sistemi di Controllo ad Alte Prestazioni
- 6 - Sistemi e calcoli di ispirazione biologica e loro applicazioni -- BISCA
- 7 - Systems Biology: modellazione, linguaggi e analisi (Sybilla)
- 8 - Tecniche avanzate di controllo e identificazione per applicazioni innovative
- 9 - Metodologie avanzate per il controllo di sistemi ibridi
- 10 - Analisi di sistemi di Riduzione mediante sistemi di Transizione (ART)
Classificazione scientifico-disciplinare
- Area scientifico disciplinare: Ingegneria industriale e dell'informazione
Classificazione brevettuale
- PHYSICS
- COMPUTING; CALCULATING; COUNTING (score computers for games A63; combinations of writing applicances with computing devices B43K29/08)
- ELECTRICAL DIGITAL DATA PROCESSING (computers in which a part of the computation is effected hydraulically or pneumatically G06D; optically G06E; self-contained input or output peripheral equipment G06K; impedance networks using digital techniques H03H) [C9603]
- COMPUTING; CALCULATING; COUNTING (score computers for games A63; combinations of writing applicances with computing devices B43K29/08)
Classificazione geografica
- Regione: Piemonte
Bibliografia
[AK02] P. Abercrombie and M. Karaorman, “jContractor: bytecode instrumentation techniques for implementing design by contract in java”, K. Havelund and G. Rosu (eds.), ENTCS, vol. 70, Elsevier, 2002.[AHSW02] J. Appavoo, K. Hui, M. Stumm, R. Wisniewski, D. Da Silva, O. Krieger, and C. Soules, “An infrastructure for multiprocessor run-time adaptation”, In proc. of the 1st ACM workshop on self-healing systems, 2002.
[BDDP03] A. Benso, S. Di Carlo, G. Di Natale, P. Prinetto, “On-Line Self-Repair of FIR Filters”, IEEE Design & Test Of Computers. vol. 20, n.2, pp. 50-57, 2003
[BCDP02] A. Benso, S. Chiusano, G. Di Natale, P. Prinetto, “An on-line BIST RAM architecture with self-repair capabilities”, IEEE Trans. On Reliability. vol. 51, n. 1, pp. 123-128, 2002
[BCPR01] A. Benso, S. Chiusano, P. Prinetto, “A Self-Repairing Execution Unit for Microprogrammed Processors”. IEEE MICRO. vol. 21, n. 5 pp. 16-22, 2001
[BIN94] R.V. Binder, “Design for testability in object-oriented systems”, Communications of the ACM, 37(9), 1994.
[CA97] A. Carzaniga, G. P. Picco, and G. Vigna, “Designing Distributed Applications with Mobile Code Paradigms,” in Proc. 19th Conf. Software Eng. (ICSE’97), R. Taylor, ed., pp. 22–32, ACM Press, 1997.
[CHSU93] T. Chen, G. Sunada, “Design of a Self-testing and Self-repairing Structure for Highly Hierarchical Ultra Large Capacity Memory Chips”, IEEE Trans. On VLSI Systems, pp 88-97, Vol. 1, No. 2, 1993
[CM05] S. Colin and L. Mariani, “Run-time Verification, in Model-based Testing of Reactive Systems”, Springer-Verlgag LNCS n. 3472, 2005.
[CO02] K. Compton and S. Hauck, “Reconfigurable Computing: A Survey of Systems and Software”, ACM Computing Surveys, Vol. 34, No. 2, pp. 171–210, 2002.
[DMPT05] G. Denaro, L. Mariani, M. Pezzè, and D. Tosi, “Adaptive Runtime Verification for Autonomic Communication Infrastructures”, in proc. of the 1st IEEE Workshop on Autonomic Communications and Computing, 2005.
[DPT05] G. Denaro, M. Pezzè and D. Tosi, “Adaptive Integration of Third-Party Web Services”, in proc. of the Int. Workshop on Design and Evolution of Autonomic Application Software, ACM Press, 2005.
[EN04] “ENAMORADO: Enabling Nomadic Agents in a Multimedia-ORiented Architecture of Distributed Objects”, IST-2001-38285, http://projects.archetypon.com/enamorado/index.html
[FI99] S. Fischmeister, and W. Lugmayr, “The Supervisor-Worker Pattern”, Pattern Languages of Programs (PLoP'99), Allerton House, IL, 1999.
[FU98] A. Fuggetta, G. P. Picco, and G. Vigna, “Understanding Code Mobility”, vol. 24, no. 5, pp. 342-361, 1998.
[GS02] D. Garlan and B. Schmerl, “Model-based adaptation for self-healing systems”, in proc. of the 1st Workshop on Self-healing Systems, ACM Press, 2002.
[HALI88] N. Hasan, C. L. Liu, “Minimum Fault Coverage in Reconfigurable Arrays”, Digest of Papers, FTCS-18, pp. 348-353, 1988
[HL01] J. Hong and J. Landay, “An infrastructure approach to context-aware computing”, Human-Computer Interaction, 16, 2001.
[KABL98] A. Kablanian et al., “Built-In Self Repair System for Embedded Memories”, United States Patent n° 5764878, 1998
[KO02] D. Kotz, R. Gray, and D. Rus, “Future Directions for Mobile-Agent Research”, IEEE Distributed Systems Online, vol. 3, n.8, 2002.
[LMSP98] J. Lach, W. Mangione-Smith, M. Potkonjak, “Efficiently Supporting Fault-Tolerance in FPGAs”, ACM/SIGDA Sixth Int. Symposium on Field-Programmable Gate Arrays (FPGA ’98), 1998
[LZ97] H. Lee and B. Zorn, “BIT: A tool for instrumenting java bytecodes”, in proc. of the USENIX Symp. on Internet Technologies and Systems, 1997.
[MSH97] W. Mangione-Smith, B.Hutchings, “Configurable Computing: The Road Ahead”, Reconfigurable Architectures Workshop, 1997.
[MEY92] B. Meyer, “Applying design by contract”, IEEE Computer, vol. 25, 1992.
[NU94] M. Nuttall, “Survey of Systems Providing Process or Object Migration,” Technical Report Doc 94/10, Dept. of Computing, Imperial College, 1994.
[NW96] H. S. Nwana, “Software Agents: An Overview”, Knowledge Engineering Review: Intelligent Systems Research, AA&T, BT Laboratories, UK, pp. 206-244, 1996.
[OM95] Object Management Group, “CORBA: Architecture and Specification”, 1995.
[OGTH99] P. Oreizy, M. Gorlick, R. Taylor, D. Heimhigner, G. Johnson, N. Medvidovic, A. Quilici, D. Rosenblum, and A. Wolf, “An architecture-based approach to self-adaptive software”, IEEE Intelligent Systems, vol 14, 1999.
[TACoS03] M. Pezzè ed., Proc. of the Int. ETAPS Workshop on Testing and Analysis of Component-Based Systems, ENTCS, 82(6), Elsevier, 2003.
[TACoS04] M. Pezzè ed., Proc. of the second Int. ETAPS Workshop on Testing and Analysis of Component-Based Systems, ENTCS, vol. 116, Elsevier, 2004.
[WO95] M. Wooldridge and N. R. Jennings, “Agent Theories, Architectures and Languages: A Survey”, Intelligent Agents: ECAI-94 Workshop on Agent Theories, Architecture and Languages, pp. 1-32, 1995
Parole Chiave
SISTEMI RICONFIGURABILI; AGENTI MOBILI; INFRASTRUTTURE DISTRIBUITE; SISTEMI AFFIDABILI; SISTEMI AUTO-RIPARANTI; FPGACOMMUTA: Componenti hardware/software mutanti per sistemi distribuiti dinamicamente riconfigurabili
Politecnico di TorinoAbstract
Il progetto COMMUTA ha come obiettivo la definizione, la realizzazione e la sperimentazione di un'architettura distribuita riconfigurabile basata sulla possibilità di modificare dinamicamente i compenti hardware e software del sistema. L'aspetto più innovativo del progetto è la gestione della riconfigurabilità sia hardware sia software dell'architettura tramite l'utilizzo di Agenti Mobili.Gli agenti mobili sono particolari programmi software che possono essere inviati da un sistema ad un altro per essere eseguiti in un ambiente remoto. Un agente mobile è in grado di portare con sé il codice eseguibile ed i dati del programma. Arrivando nell'ambiente remoto, un agente può presentare le proprie credenziali e, se queste sono valide, ottenere accesso adeguato all'hardware, ai servizi e ai dati locali.
Il progetto COMMUTA intende spingere il concetto di Agenti Mobili a livello hardware, introducendo il concetto di hardware mobility. L'uso di logica programmabile, la cui funzione può essere modificata a runtime per ottimizzare le prestazioni del sistema o per rimpiazzare un componente hardware difettoso è un'idea nuova in quanto mai applicata prima ai sistemi auto-riparanti, nei quali a nostro parere essa ha il potenziale di divenire una importante innovazione.
Le funzionalità dell'architettura saranno sperimentate in una reale applicazione di controllo di sensori distribuiti, applicazione particolarmente significativa per la quale è richiesto il controllo di numerosi dispositivi distribuiti in ampie aree geografiche. In questo caso si suppone che il sistema operi in due diverse fasi. In una prima fase il sistema utilizza l'hardware riconfigurabile a disposizione per incrementare le prestazioni di algoritmi di filtraggio. In una seconda fase, a seguito di un guasto di un'unità di memoria per la gestione dei segnali di campo, utilizza lo stesso hardware per sostituire il modulo di memoria, implementando quindi anche l'algoritmo di filtraggio interamente in software.
Le conoscenze scientifiche dei tre partner del progetto COMMUTA hanno permesso di pianificare le attività in modo ottimale. L'unità del Politecnico di Torino ha una lunga e conclamata esperienza nel collaudo e nell'affidabilità di sistemi digitali, l'unità di Milano-Bicocca è tra i gruppi più attivi nel campo del test e adattabilità del software, e infine l'unità di Napoli Federico II ha una notevole e provata esperienza nel campo della sicurezza e di sistemi basati su Agenti Mobili. La complementarietà delle conoscenze ma anche l'ottimo affiatamento tra queste unità, già provato in progetti passati, permetterà al progetto COMMUTA di raggiungere tutti gli obiettivi tramite soluzioni innovative sia dal punto di vista scientifico sia da quello industriale.
Concettualmente, le attività saranno suddivise come segue:
ARCHITETTURA DEL SISTEMA DISTRIBUITO E DI MECCANISMI DI INTERAZIONE TRA LE DIVERSE COMPONENTI (Unità di Napoli Federico II):
· definizione di un'infrastruttura (in termini di minimi requisiti hardware e software) che sia in grado di gestire la ricerca e l'accesso agli agenti per poter configurare in modo adeguato il nodo di elaborazione;
· la definizione di modelli per l'analisi prestazionale del sistema in modo da poter determinare in maniera predittiva lo schema di riconfigurazione migliore
ARCHITETTURA HARDWARE DEL NODO DI ELABORAZIONE E RICONFIGURAZIONE DINAMICA (Unità del Politecnico di Torino)
· la definizione e progettazione di soluzioni architetturali del nodo di elaborazione in grado di rilevare, durante il normale funzionamento, eventuali guasti permanenti nelle componenti del nodo stesso e proporre efficienti ed efficaci soluzioni di riconfigurazione per la risoluzione del problema
TECNICHE DI SVILUPPO E TEST DI AGENTI SOFTWARE (Unità di Milano Bicocca)
· la definizione di tecniche di test e riconfigurazione del nodo di elaborazione composto da componenti hardware e software staticamente note ed altre dinamicamente riconfigurabili. <<<
Coordinatore Scientifico del Programma di Ricerca
Paolo PRINETTO Politecnico di TORINOObiettivo del Programma di Ricerca
Il costante sviluppo dei sistemi distribuiti porta alla necessità di considerare diversi scenari applicativi, che prevedono l'impiego di componenti hardware e software molto diversificate. Tale problema è particolarmente significativo nel caso di sistemi distribuiti impiegati in applicazioni di controllo industriale, quali ad esempio il controllo ambientale e il controllo di dispositivi in movimento. In questo caso si rende necessario considerare vincoli dovuti alla distribuzione dei componenti, alla loro localizzazione, alla necessità di prevedere dei meccanismi automatici di riconfiguarazione dei sistemi, sfruttando, ove possibile, la rete del sistema distribuito, e di integrare sistemi eterogenei di diversa natura, che hanno spesso limitate potenzialità hardware e software per i vicoli fisici del sistema (ad esempio, limitato consumo, etc.). Tali caratteristiche sono particolarmente significative in quelle applicazioni che richiedono l'im¬piego di numerose unità elaborative distribuite in ampie aree, non sempre facilmente raggiungibili e solitamente diverse tra loro. Inoltre, la natura stessa dei sistemi industriali implica che per molte applicazioni è requisito necessario progettare sistemi affidabili, sicuri e ad elevate prestazioni.In questo contesto, tra le problematiche di maggiore interesse scientifico ed applicativo si possono elencare:
• la gestione in sicurezza dell'accesso alle risorse di rete;
• la localizzazione di unità mobili;
• le richieste di elevate potenze di calcolo sia per consentire l'impiego di complesse tecniche di controllo distribuito, sia per gestire la trasmissione dati in modo efficiente e sicuro (ad esempio tecniche di compressione dati e di crittografia);
• la gestione di profili e delle configurazioni di sistema;
• l'affidabilità e il livello di tolleranza ai guasti del sistema, basate sulla definizione e realizzazione di tecniche di test automatico e sulla possibilità di disporre di meccanismi per la riconfigurazione dinamica.
Il progetto COMMUTA si pone come obiettivo primario la definizione di un modello originale che coniughi la mobilità del software, come astrazione del concetto fisico del nodo di elaborazione, e le tecniche basate sulla riconfigurazione dinamica dell'hardware.
Tale obiettivo primario verrà raggiunto attraverso il raggiungimento dei seguenti obiettivi intermedi:
1) Definizione di una società di Agenti Mobili (in termini sia software sia hardware) che permettano, oltre che alla mobilità del software, anche la programmazione di unità hardware (componenti hardware mobili).
2) Definizione, a livello del singolo nodo di elaborazione, di strategie di riconfigurazione che abbiano come obiettivo:
• l'incremento delle prestazioni, in modo da non legare la realizzazione del nodo ad una specifica applicazione, ma configurarlo dinamicamente in modo da adattare il sistema alle esigenze delle diverse applicazioni;
• l'aumento della tolleranza ai guasti, e/o la riparazione di un guasto, nel caso in cui il nodo di elaborazione sia stato opportunamente progettato per prevederne una riconfigurazione dinamica al fine di sostituire o riparare un suo componente guasto.
3) Definizione di strategie di riconfigurazione a livello di sistema che abbiano come obiettivo l'aumento delle prestazioni del sistema complessivo, o la sostituzione/riparazione di un intero nodo guasto. Si fa notare come nel controllo industriale sia necessario considerare l'impiego di unità di diversa complessità, dovendo rispettare numerosi vincoli di natura diversa e come tale modello possa essere applicato anche a sistemi molto complessi, ove l'affidabilità dei componenti hardware e non la potenza di calcolo sia un parametro determinante.
Per lo svolgimento del progetto si deve definire, realizzare e sperimentare un modello architetturale e di sviluppo delle applicazioni in grado di rispondere pienamente a tutti i requisiti di un sistema distribuito, tenendo conto dell'eterogeneità dei sistemi componenti. Tale modello richiede preventivamente l'analisi delle risorse hardware e software necessarie per la realizzazione di un sistema dinamicamente riconfigurabile ad elevate prestazioni. In particolare, l'interesse è posto sulle architetture di nodi di elaborazione basate sull'impiego sia di unità tradizionali, quali processori, memorie, unità di I/O, sia di unità hardware programmabili di tipo FPGA. Queste ultime sono viste come compenti in grado di specializzare il comportamento del nodo di elaborazione, al fine di consentirne l'incre¬mento di prestazioni e la riconfigurabilità. L'architettura fisica di un nodo di elaborazione va opportunamente analizzata al fine di identificarne il livello massimo di riconfigurabilità in relazione al modello architetturale adottato.
Un sistema che rispetti le specifiche definite da COMMUTA sarà quindi in grado di modificare dinamicamente le compenti hardware e software del sistema stesso mediante l'impiego di agenti mobili e di dispostivi hardware programmabili.
In sintesi, il modello architetturale proposto sarà basato su nodi di quattro diverse tipologie, che interagiscono mediante una rete di comunicazione di tipo wired o wireless:
• Sistemi agenzia: sistemi responsabili della gestione degli agenti software dedicati alla implementazione di unità funzionali ad elevate prestazioni, al test di nodi remoti ed alla riconfigurazione hardware di nodi remoti. Gli agenti sono entità software che possono migrare su un nodo periferico sia per sfruttare le capacità di elaborazione remota sia per configurare in modo opportuno le unità FPGA programmabili presenti sul nodo stesso. I Sistemi agenzia operano secondo il paradigma dei web-services, gestendo la pubblicazione dei servizi implementati dagli agenti mediante un server UDDI e offrendo meccanismi di ricerca evoluti.
• Nodi mutanti: sistemi composti, dal punto di vista fisico, da un'architettura di elaborazione di tipo classico (processore, memoria, I/O, etc.) e da unità FPGA programmabili dinamicamente. Il sistema dispone di un supporto a tempo di esecuzione per la gestione del software del nodo, che consente anche di attivare, in sicurezza, agenti software provenienti da Sistemi agenzia. L'attivazione può avvenire a seguito di una richiesta proveniente o dall'interno del sistema stesso o da un nodo esterno (sistema generante), il quale può avere funzioni complessive di monitoraggio del sistema o che necessità di attivare dinamicamente un servizio su un sistema remoto. Ne deriva che il nodo è dotato di una Unità per la gestione della riconfigurabilità, la quale è in grado di: attivare nuove funzioni in hardware su richiesta dell'agente, riconfigurare l'hardware del nodo stesso di elaborazione e, ove necessario, attivare la migrazione dell'agente.
• Nodi generanti: sistemi, come già precedentemente illustrato, in grado di svolgere proprie elaborazioni e di generare un'attività su un nodo remoto di tipo mutante. L'agente che determina la nuova attività può essere direttamente individuato dal nodo generante o essere reperito tramite i Sistemi agenzia.
• Nodi di rete: tutti i sistemi in grado di interagire con gli altri nodi della rete tramite scambio di messaggi.
Le funzionalità dell'architettura saranno sperimentate in una reale applicazione di controllo di sensori distribuiti, applicazione particolarmente significativa per la quale è richiesto il controllo di numerosi dispositivi distribuiti in ampie aree geografiche. In questo caso si suppone che il sistema operi in due diverse fasi. In una prima fase il sistema utilizza l'hardware riconfigurabile a disposizione per incrementare le prestazioni di algoritmi di filtraggio. In una seconda fase, a seguito di un guasto di un'unità di memoria per la gestione dei segnali di campo, utilizza lo stesso hardware per sostituire il modulo di memoria, implementando quindi anche l'algoritmo di filtraggio interamente in software. <<<
Durata
24 mesiBase di partenza scientifica nazionale o internazionale
I sistemi digitali interessano ormai ogni aspetto della nostra vita. E' verosimile che nel prossimo futuro saremo circondati da innumerevoli dispositivi eterogenei, da sistemi domestici ad applicazioni complesse nel settore medico, automobilistico, del trasporto pubblico, tutte comunicanti tra loro attraverso interfacce distribuite senza fili. Assisteremo all'emergere di una nuova società di sistemi digitali che vivono ed evolvono attorno e dentro la società umana. Gli individui di questa nuova società saranno sistemi digitali ubiqui ed eterogenei che forniranno alta produttività e grande flessibilità. L'infrastruttura di comunicazione di questa società si baserà quasi interamente su connessioni senza fili.I sistemi distribuiti pervasivi ed ubiqui rappresentano lo scenario di riferimento del progetto COMMUTA. Oltre ad occupare in ruolo centrale in ambienti digitalizzati, tali sistemi presentano numerosi requisiti non banali che rischiano di limitare l'effettiva realizzazione di tali scenari. Tali requisiti comprendono l'esigenza di scalabilità, personalizzazione dei servizi, flessibilità ed estensibilità [Fu98].
Diversi tipi di risposte sono state date a tali necessità. La maggior parte degli approcci, tuttavia, tenta di adattare modelli e tecnologie obsolete e spesso dà per scontato il tradizionale modello client-server. Ad esempio, CORBA [OM95] integra il meccanismo delle remote procedures calls (RPC) nel paradigma ad oggetti. Esso cerca di combinare i benefici del secondo in termini di modularità e riuso, con gli assestati meccanismi di comunicazione del primo. Tuttavia, questo approccio non assicura i livelli di flessibilità, personalizzazione, e riconfigurabilità necessari ad affrontare i requisiti problematici sopra menzionati.
Un approccio differente emerge dalle iniziative di ricerca incentrate sul concetto di codice mobile [FU98]. Il codice mobile può informalmente essere definito come la capacità di cambiare dinamicamente l'associazione tra frammenti di codice e la locazione dove essi sono eseguiti [Ca97]. Ciò implica, tra gli altri problemi, la gestione dell'associazione tra processi e l'ambiente di esecuzione. Sebbene il codice mobile ricordi la tradizionale idea di migrazione dei processi [NU94], esso ha implicazioni molto più ampie e differenze fondamentali. Caratteristiche essenziali dei sistemi per codice mobile (Mobile Code Systems - MCSs) sono [FU98]:
- Consapevolezza della locazione: le applicazioni sono coscienti della locazione occupata e possono prendere decisioni sulla base di tale coscienza.
- Inclusione esplicita della mobilità entro il modello di programmazione: il programmatore ha a disposizione meccanismi ed astrazioni che consentono l'invio ed il caricamento di frammenti di codice.
- Sfruttamento della mobilità per scopi specifici delle applicazioni: i sistemi per codice mobile non affrontano solo il problema del bilanciamento del carico. Al contrario, la mobilità consente di affrontare un insieme molto più vasto di requisiti, quali la personalizzazione dei servizi, la fault-tolerance, etc.
Il paradigma ad Agenti Mobili è una particolare caratterizzazione del concetto di codice mobile. Gli agenti sono software che presentano attributi di comportamento autonomo, proattività, reattività ed adattatività [Wo95] [Nw96]. In particolare, gli agenti mobili sono capaci di "spostarsi da un host all'altro sulla base della propria volontà" [Fi99].
E' tuttavia importante sottolineare che il concetto di mobilità, nelle sue diverse applicazioni, è essenzialmente limitato solo alla parte software. Ciò sembra in qualche modo ovvio se si guarda al tradizionale partizionamento dei calcolatori in una parte hardware statica ed una software logica, mobile. Tuttavia, questo partizionamento sta diventando via via più sfumato con l'emergere dell'idea di reconfigurable computing [Co02]. I sistemi basati su reconfigurable computing usano dispositivi Field-Programmable Gate Array (FPGA) o altre logiche riprogrammabili per accelerare l'esecuzione di algoritmi spostando i calcoli più onerosi nel substrato hardware riconfigurabile. In sistemi fortemente accoppiati, la riconfigurabilità risiede all'interno di unità funzionali inserite nel normale datapath del microprocessore. In un sistema completamente disaccoppiato, la parte riconfigurabile può addirittura essere una unità autonoma in rete.
Un concetto fondamentale è la possibilità di avere riconfigurazione a tempo di esecuzione (Run-Time Reconfigurability - RTR) [Co02]. Con l'RTR è possibile portare configurazioni hardware da e verso la parte di hardware riconfigurabile man mano che esse si rendano necessarie, e quindi usare un ampio insieme di componenti hardware anche quando siano disponibili limitate risorse riconfigurabili. Questo meccanismo introduce il concetto di hardware virtuale (simile alla tradizionale idea di memoria virtuale).
Negli ultimi anni, molti lavori di ricerca hanno sottolineato la possibilità di sfruttare la riconfigurazione a tempo di esecuzione per ottenere self-healing e self-adaptability in ambienti distribuiti ed eterogenei [Ko02]. Tuttavia, in tali ambienti la riconfigurabilità hardware a tempo di esecuzione necessita di essere unita a caratteristiche di autonomia e consapevolezza della locazione quali requisiti impliciti. Tali requisiti sono aspetti centrali della mobilità del codice ed in particolare degli agenti mobili, sebbene limitati in quel caso all'ambito software. E' quindi chiaro che, in ambienti distribuiti ed eterogenei, i paradigmi e concetti definti nel campo del codice mobile possono essere estesi alla riconfigurabilità hardware a tempo di esecuzione. Tale idea non è ancora stata applicata a sistemi self-healing e self-repairing, dove si ritiene che possa avere un impatto scientifico ed industriale molto significativo.
Nello scenario di riferimento del progetto COMMUTA, i sistemi riconfigurabili presenteranno le seguenti capacità:
–Self-Testing in linea concorrente: capacità di effettuare collaudi in parallelo ad operazioni non interrompibili, con riferimento sia a guasti permanenti sia transienti.
– Self-repairing: capacità di diagnosticare e correggere guasti.
– Self-reconfiguring: capacità di implementare particolari strategie di risoluzione dei problemi sulla base della riconfigurabilità autonoma dell'architettura allo scopo di garantire alti livelli di dependability e/o di performance.
– Estensione delle funzionalità: capacità di implementare particolari strategie di risoluzione dei problemi sulla base della riconfigurabilità autonoma dell'architettura allo scopo di aggiungere/estendere funzionalità del sistema.
In letteratura pochissimo lavoro è stato fatto per esplorare i potenziali vantaggi derivanti dall'estensione dei paradigmi per codice mobile (e agenti mobili in particolare) alla riconfigurazione a tempo di esecuzione di sistemi hardware/software.
La ricerca su applicazioni self-healing è per lo più limitata a componenti "riparabili" come memorie, processori, DSP, e FPGA [MSH97, LMSP98]. La maggior parte di tali attività è stata proposta come potenziali soluzioni per componenti autoriparanti a fine produzione [CHSU93, HALI88]. Nuove tecniche sono poi state introdotte per effettuare "riparazione soft" di memorie attraverso l'auto-riconfigurazione dello spazio degli indirizzi [KABL98, BCDP02].
Recentemente, un'architettura auto-riparante per processori micro-programmati è stata presentata in [BCPR01]. L'approccio proposto, completamente trasparente all'utente, permette di tollerare guasti multipli all'interno di unità funzionali del dispositivo con un degrado delle prestazioni proporzionale al numero di unità con guasti. In particolare, il dispositivo è in grado di riconfigurare dinamicamente il suo micro-codice per eseguire il calcolo richiesto, ricorrendo soltanto ad unità del sistema esenti da guasti.
Quanto ai DSP, [BDDP03] presenta un'architettura self-testable e self-repairable per filtri digitali Finite Impulse Response (FIR), che, oltre alle prestazioni eccellenti, garantisce alte caratteristiche di tolleranza ai guasti. La modularità dell'architettura dei filtri consente un'alta scalabilità ed una testabilità pressoché completa. In particolare, i meccanismi introdotti consentono di testare il filtro contemporaneamente al suo normale funzionamento e, in caso di guasto, di ripararlo in maniera trasparente senza perdite significative nella qualità del segnale di uscita o nelle prestazioni.
Scarsa è anche la ricerca sull'estensione delle funzionalità attraverso l'RTR ed i paradigmi di codice mobile. Il progetto ENAMORADO [En04], cofinanziato dalla Comunità Europea (IST-2001-38285), rappresenta un primo tentativo di usare agenti mobili in un contesto di reconfigurable computing. Esso mostra i vantaggi dell'uso di agenti mobili in un ambito comunque molto verticale (trasporto di codec per applicazioni multimediali) ed in effetti adopera un approccio pragmatico, orientato all'applicazione specifica. Una adeguata inquadratura teorica e metodologica per la mobilità dell'hardware non è ancora stata definita, e non esistono modelli generali per definire sistemi hardware/software riconfigurabili e mobili in applicazioni generali, che vadano dal controllo ed il self-testing al calcolo ad alte prestazioni.
Allo scopo di affrontare l'estensione dei paradigmi di codice mobile ad applicazioni di reconfigurable computing, occorre definire appropriate metodologie di progetto per l'ingegnerizzazione di sistemi a componenti capaci di adattarsi a mutazioni interne/esterne in maniera autonoma e dinamica. Occorre inoltre identificare nuove tecniche di test ed analisi dei sistemi riconfigurabili caratterizzati da un alto livello di adattatività, mobilità, configurabilità ed eterogeneità, ovvero la nuova classe di sistemi definiti nel progetto COMMUTA. In questo ambito il progetto di applicazioni complesse basate su agenti mobili è stato ampiamente studiato in letteratura [RPM00, AOSE04, WJK00, ELL00], ed il progetto COMMUTA sfrutterà pertanto le tecnologie esistenti per progettare i sistemi agenzia.
Tipicamente, l'ingegnerizzazione di sistemi auto-adattativi richiede la costruzione di un ciclo di retroazione nel sistema per controllare la sua dinamica. In particolare, il ciclo di retroazione completo per i sistemi eterogenei considerati in questo progetto è composto dai seguenti passi:
- Monitoraggio: meccanismi per osservare e tracciare il comportamento in esecuzione del sistema, e quindi identificare se la logica adattativa vada attivata o meno
- Diagnosi: meccanismi per selezionare le strategie di adattamento appropriate dall'analisi dei dati monitorari.
- Adattamento: meccanismi per modificare e riconfigurare i componenti e l'architettura del sistema secondo le strategie di adattamento scelte.
Il monitoraggio può essere affrontato con diverse tecnologie, mentre la diagnosi e l'adattamento sono supportati solo parzialmente dalle tecnologie esistenti. Il monitoraggio può incentrarsi sia sullo stato interno del sistema che sul suo ambiente operativo. Per monitorare lo stato interno di un sistema, si possono usare tecniche di instrumentazione del codice che si basano sull'inserimento punti di osservazione in specifiche locazioni di interesse. Le applicazioni instrumentate tracciano il flusso di controllo e dati durante l'esecuzione, e misurano indici di prestazioni (ad es. BIT in [LZ97]). Altri approcci sono basati sull'aggiunta di dispositivi built-in nel software che facilitano il testing (design for testability) [Bin94]. Il monitoraggio dell'ambiente di lavoro esterno è stato largamente studiato in applicazioni sensibili al contesto. Tali sistemi usano infrastrutture di sensori ambientali per rilevare cambiamenti nell'ambiente e adattare di conseguenza il comportamento delle applicazioni [HL01].
La rilevazione di comportamenti guasti richiede l'interpretazione dei dati monitorati secondo modelli di validazione dei comportamenti per decidere l'attivazione della logica di riconfigurazione. Comportamenti validi possono essere interpretati da asserzioni embedded. Le asserzioni sono vincoli formali sullo stato del programma in date locazioni, oppure proprietà temporali validate durante l'esecuzione valutando successioni di eventi. Le asserzioni sono state studiate dalla comunità del software engineering [Mey92], e sono supportate da diversi strumenti (come JContractor [AH02]). Le proprietà temporali sono largamente usate nella ricerca su verifica a run-time.
Gli approcci su menzionati possono essere adattati al progetto di sistemi riconfigurabili basati su componenti ed architetture software riconfigurabili. Recentemente, [DMPT05] ha proposto un approccio basato sull'instrumentazione e la derivazione automatica delle invarianti comportamentali per monitorare i comportamenti di infrastrutture di rete e reagire al rilevamento di anomalie.
Mentre la fase di monitoraggio rivela l'esigenza di riconfigurare il sistema, i meccanismi di diagnosi devono selezionare la strategia di riconfigurazione migliore per adattare dinamicamente il sistema alle nuove condizioni. Attualmente la diagnosi è supportata da meccanismi semplici che non scalano su sistemi riconfigurabili per applicazioni industriali. La strategia più comune è basata su una corrispondenza fissa tra dati monitorati e strategie di adattamento [GS02].
Recentemente, in [DPT05] è stato proposto un meccanismo di diagnosi basato sull'esecuzione dinamica di test cases per derivare informazioni addizionali utili per selezionare l'appropriata strategia di riconfigurazione. Più in generale, meccanismi di diagnosi dovrebbero richiedere un alto livello di flessibilità ed una reale capacità di ragionare sui dati raccolti e le proprietà del sistema, per derivare automaticamente nuove e più appropriate strategie di adattamento con attenzione sulle interferenze e gli effetti collaterali che possono insorgere dalla riconfigurazione del sistema.
L'adattamento e la riconfigurazione di un sistema richiedono meccanismi per pianificare, realizzare ed imporre dinamicamente cambiamenti nei componenti ed architetture a run-time, per rimuovere i guasti diagnosticati o i loro effetti. La maggior parte degli approcci per l'adattamento/riconfigurazione operano al livello architetturale, riconfigurando l'architettura software e gli stili architetturali che forniscono in maniera nativa la capacità di ripristinare dinamicamente la coordinazione e l'interazione tra componenti per garantire proprietà architetturali [OGTH99]. Esempi di capacità di riconfigurazione di architetture comprendono la possibilità di aggiungere dinamicamente server ridondanti, modificare la banda ammessa per una connessione, aggiungere o rimuovere componenti, modificare l'associazione tra componenti, e così via.
Studi recenti indicano che tali approcci funzionano bene per garantire proprietà non funzionali del sistema (come le prestazioni e la disponibilità del servizio) [VK03,GS02], ma non si prestano altrettanto bene a requisiti funzionali dato che è difficile specificare proprietà funzionali come vincoli architetturali.
L'approccio del progetto COMMUTA che garantisce requisiti funzionali è collegato all'uso dei paradigmi di codice mobile, agenti mobili e rilocazione del codice. In teoria, la rilocazione del codice dovrebbe permettere di modificare dinamicamente le funzionalità del sistema per riparare i guasti diagnosticati. Sebbene ancora lontana dall'obiettivo ideale, un'indagine preliminare è fornita in [AHSW02], che discute la possibilità di sostituire l'implementazione di un componente attivo nel sistema mantenendo la disponibilità della funzionalità del componente.
Il modello architetturale proposto dal progetto COMMUTA implementa la riconfigurazione dei nodi di calcolo attraverso web services a mobilità del codice, introducendo quindi aspetti legati alla qualità inaspettati e non ancora affrontati. <<<



