Elaborazione Numerica dei Segnali
Elaborazione Numerica dei Segnali
Elaborazione Numerica dei Segnali
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
6.6. <strong>Elaborazione</strong> Parallela: SIMD e Superscalari 131<br />
istruzione che il numero di istruzioni eseguite per ogni ciclo. Di conseguenza, le architetture<br />
<strong>dei</strong> nuovi DSP devono saper sfruttare in modo intelligente le tecniche di elaborazione<br />
parallela.Analizziamo qui brevemente due approcci: architetture SIMD e architetture<br />
superscalari.<br />
Sistemi con architettura SIMD (Single Instruction Multiple Data) devono permettere<br />
l’esecuzione parallela della stessa operazione su differenti dati. Per ottenere questo obbiettivo,<br />
il DSP deve contenere diversi bus dati e diverse unità di elaborazione: in questo<br />
modo in un ciclo la stessa istruzione può essere eseguita dalle varie unità di elaborazione su<br />
differenti dati. Nella Figura 6.9 viene evidenziata la presenza di due unità di elaborazione<br />
e di due bus dati nello stesso DSP.<br />
ALU MAC<br />
Unità A<br />
BUS Dati − A<br />
BUS Dati − B<br />
Figura 6.9 Architettura SIMD.<br />
ALU MAC<br />
Unità B<br />
L’elaborazione superscalare è una tecnica per aumentare la velocità di calcolo sfruttando<br />
invece il potenziale parallelismo a livello di istruzioni. E’ noto infatti che, in certe<br />
circostanze, alcune istruzioni possono essere eseguite in modo indipendente: avendo a<br />
disposizione un adeguato numero di unità di elaborazione, la loro esecuzione in parallelo<br />
sulle varie unità accelera il calcolo. Per chiarire con un esempio, si consideri la sequenza<br />
di istruzioni<br />
x = x + 1;<br />
y = x;<br />
in questo caso le istruzioni non possono essere eseguite in modo indipendente, perché<br />
in particolare il risultato dipende dall’ordine di esecuzione. Se invece consideriamo la<br />
sequenza<br />
x = x + 1;<br />
y = z;<br />
le due istruzioni possono essere eseguite in maniera indipendente: attribuendo a due distinte<br />
unità di elaborazione le due istruzioni ed eseguendole in parallelo, si ottiene il risultato<br />
corretto diminuendo il tempo di esecuzione. Questo è il principio generale: in una architettura<br />
superscalare, differenti unità concorrono all’avanzamento del calcolo eseguendo differenti<br />
istruzioni in parallelo. Va da se che nella programmazione superscalare deve essere