Politecnico di Milano Realizzazione di un'applicazione per un sistema multiprocessore: analizzare e prevenire eventi sismici con Diopsis740 Relatore: Prof. Fabrizio FERRANDI Correlatore: Ing. Marco D. SANTAMBROGIO Tesi di Laurea di: Michele SANTORO A.A. 2004/2005 Sommario • Obiettivi e Motivazioni • Introduzione all’architettura Diopsis 740 • Implementazione dell’algoritmo • Verifica delle prestazioni su scheda • Conclusioni e sviluppi futuri Michele Santoro 2 Obiettivi • Studio dell’architettura bi-processore della Atmel Corporation Diopsis 740. • Trarre vantaggio dall’architettura per lo sviluppo di un’applicazione reale: determinare il ritardo di propagazione di onde sismiche al fine di individuare l’epicentro. Michele Santoro 3 Motivazioni • Determinare con precisione l’origine dei terremoti e trovare un legame tra l’insorgere di diversi terremoti, è alla base dei nuovi studi che mirano a riconoscere le cause e, infine, prevenire un sisma. • Per essere in grado di fare delle previsioni è, pertanto, necessario possedere un gran numero di registrazioni di sismi, il più possibile accurate. Michele Santoro 4 DIOPSIS 740 - Introduzione • Vantaggi architettura: • (ARM) Parallelismo e sincronizzazione • (DSP) Elevate potenza nel calcolo • Problematiche: • Comunicazione • Alte prestazioni Michele Santoro 5 JTST (JigTeST for Diopsis740) Display USB Porte Seriali RS232 [0-1] Diopsis 740 Reset Alimentazione I/O Audio Michele Santoro 6 Blocco operazionale di DIOPSIS • Unità Aritmetico Logica: in un unico ciclo 10 operazioni su numeri interi o reali • 4 moltiplicazioni • 4 addizioni • 2 unità shift/logic e 2 generatori di indirizzi di memoria Particolarmente indicato per operazioni su numeri complessi Michele Santoro 7 La cross-correlazione • Quando c’è l’esigenza di analizzare due segnali è necessario determinare che relazione sussiste tra questi. DIOPSIS 740 Punto di max somiglianza U(t) Due generici segnali V(t-t) Risultato della cross-correlazione Cross-correlazione discreta Michele Santoro 8 L’implementazione • Sincronizzazione e parallelismo: La suddivisione dei compiti tra i due processori Lettura non consentita dai semafori Riempie il buffer #1 Buffer #1 Semaforo Rosso per mAgic ARM Scrittura non consentita dai semafori Buffer #2 Preleva i dati dal buffer #2 Michele Santoro mAgic Semaforo Verde per mAgic 9 Ottimizzazione del Codice • La parte da ottimizzare è il ciclo principale eseguito da mAgic: Codice C Codice Assembler for(k=0;k<(N-h);k++){ zc[h]=zc[h]+z1[k]*z2[k+h]; for(k=0;k<(N-h);k++){ \\legge i valori VMS2RF_U(valy1,punty1); }; VMS2RF_U(valy2,punty2); […] for(k=0;k<(N-h);k++){ zc[h]=zc[h]+z1[k+h]*z2[k]; }; \\ li moltiplica VFMUL(muly2y1h,valy2,valy1h) ;[…] \\ somma i risultati CADD(sumy2y1h,sumy2y1h,muly2y1h); […] } Cicle unrolled for(k=0;k<(N-h);k++){ VMS2RF_U(valy1,punty1); VMS2RF_U(valy2,punty2); […] CADD(sumy2y1h,sumy2y1h,muly2y1h); […] VFMUL(muly2y1h,valy2,valy1h) ;[…] VFMUL(muly2y1h,valy2,valy1h) ;[…] VMS2RF_U(valy1,punty1); VMS2RF_U(valy2,punty2); […] VMS2RF_U(valy1,punty1); VMS2RF_U(valy2,punty2); } Software pipelining for(k=0;k<(N-h);k++){ CADD(sumy2y1h,sumy2y1h,muly2y1h); […] CADD(sumy2y1h,sumy2y1h,muly2y1h); […] VFMUL(muly2y1h,valy2,valy1h) ;[…] VFMUL(muly2y1h,valy2,valy1h) ;[…] VMS2RF_U(valy1,punty1); VMS2RF_U(valy2,punty2); VMS2RF_U(valy1,punty1); CADD(sumy2y1h,sumy2y1h,muly2y1h); […] […] VMS2RF_U(valy2,punty2); […] } Michele Santoro 10 Grafici del profilo della PMA • PMA = Program Memory Address Codice Assembler Codice C Software pipelining Do - while Cicle unrolled Michele Santoro 11 Valutazione delle prestazioni • Confronto indicativo tra le prestazioni teoriche e quelle reali Prestazioni teoriche: tramite accessi alla PMA Prestazioni reali: Tramite il valore assunto da un contatore interno Aumento teorico di velocità della funzione Legenda: U+S+A+W: Codice unrolled + sw pipelining + asm + while U+S+A+F: Codice unrolled + sw pipelining + asm + for S+F+A: sw pipelining + asm + for A: assembler C: codice C Aumento reale di velocità della funzione Michele Santoro 12 Conclusioni e Sviluppi Futuri • Conclusioni • Metodologia solida per la programmazione di piattaforme multi-processore: la potenza dei sistemi dedicati. • Calcolo del ritardo di propagazione tra le onde sismiche per la determinazione dell’epicentro • Sviluppi Futuri • Completare e analizzare lo studio per il filtraggio di segnali provenienti direttamente attraverso gli ingressi analogici della scheda JTST • Estendere il dominio di applicabilità alla localizzazione di una sorgente qualsiasi Michele Santoro 13 FINE PRESENTAZIONE Michele Santoro 14