16.06.2013 Views

Elaborazione Numerica dei Segnali

Elaborazione Numerica dei Segnali

Elaborazione Numerica dei Segnali

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!