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
Scarica

Realizzazione di un`applicazione per un sistema