Creazione di una libreria che implementi primitive di messagge passing attraverso l'utilizzo di hardware dedicato. 1. Introduzione Questa esercitazione si colloca nell'ambito della realizzazione di una piattaforma di simulazione per sistemi embedded multiprocessore (MPSIM). Tale piattaforma ha come obiettivo quello di permettere l'investigazione di metodi per ottimizzare la performance, in velocità e dissipazione, di System-On-Chip (SoC). Un ruolo chiave per questo tipo di dispositivi viene assunto dalla comunicazione di dati tra i processori, come possibilitàper lo sviluppo di applicazioni parallele (vedere lezione: "Exploring the MPSoC Design Space: the MPARM environment"). 2. Scopo del Progetto Obiettivo finale dello sviluppo saràlo sviluppo e il testing di una serie di funzioni che appoggiandosi ad apposito hardware dedicato implementino il passaggio di dati tra i processori. Nell'ambito di questo progetto ci si occuperà dello svilluppo di hardware dedicato e della scrittura di funzioni che si appoggino alle funzionalità messe a disposizione dai Sistem Operativi deidcati attraversando "verticalmente" tutte le risorse di un moderno dispositivo embedded. In particolare si estenderà una libreria gia implementata in linguaggio "C" per supportare, la sospensione e la riattivazione dei task, per determinate condizioni di ricezione ed invio dei messaggi. Occupandosi di come gestire le memorie locali utilizzate per la comunicazione in maniera da evitare il più possibile conflitti e della gestione del lock dei semafori di controllo per massimizzare performance e il consumo energetico. 3. Passi implementativi Lo sviluppo del progetto potrà essere portato avanti in più fasi. 3.1 Prima fase Obiettivo: Comprensione dell'ambiente di simulazione e decisione sul tipo di primitive da supportare. Comprensione della piattaforma di simulazione, dell'hardware dedicato e del supporto ai thread e dello scheduling fornito dal sistema operativo RTMES. Approfondimento sulle primitive per la comunicazione e decisione della tipologia di primitive da supportare nella libreria. In questa fase è importante comprendere bene anche la libreria precedentemente sviluppata per poi decidere come e in che maniera appoggiarsi a questa nello sviluppo. 3.2 Seconda fase Obiettivo: Estensione dell'hardware e scrittura delle primitive di invio messaggi. Questa fase e' il cuore del progetto! Ci si occuperà di estendere l'hardware deidcato in modo da permettere il supporto alle interruzioni, successivamente si scriveranno le funzioni di invio e ricezione messaggi progettate al punto precedente. 3.3 Terza fase Obiettivo: validazione della libreria e dell'hardware sviluppato. In questa fase si scriverrano dei primi semplici benchmark che permettano di approfondire il funzionamento della libreria e delle estensioni hardware. Eg. Un bench che metta in pipe piu' processori ognuno in attesa di un messagio dal precedente nella pipe. 3.4 Quarta fase Obiettivo: sviluppo di bemchmark. Durante questa fase una volta implementata la libreria e le estensioni all'hardware dedicato ci si occupera' della ricerca di applicazioni da parrallelizzare o gia parallelizzate che possano sfruttare le primitive sviluppate. 3.5 Quinta fase Obiettivo: simulazione finale della libreria. Simulazione finale della libreria e misura delle performance comparate alla implementazione con shared memory di RTEMS, tramite appositi benchmark. 4. Documentazione - www.systemc.org - www.rtems.com in particolare il manuale RTEMS C User's Guide Capitolo 5: Task Manager. - Documentazione MPSIM