Professional Documents
Culture Documents
Processor
Signal
SP
Nella parte intermedia cercheremo di dare degli utili
DSP A brief tutorial strumenti per comprendere che tipo di sistema operativo deve essere
scelto a seconda delle applicazioni che il DSP deve eseguire: una
visione sul “sistema di gestione dell’hardware” che soprattutto negli
Introduzione ultimi DSP raggiunge livelli di complessità paragonabili ai moderni
SO.
Accanto al ben noto mondo dei processori general purpose vi è Nell’ultima parte invece analizzeremo quelle che sono le
una famiglia di processori sviluppati per applicazioni numeriche applicazioni principali dei DSP ed ne analizzeremo in dettaglio
molto complesse: i DSP o processori per l’elaborazione di segnali qualcuna.
digitali.
Questi processori hanno trovato largo impiegonei primi anni in
applicazioni specialistiche nell’ambito dell’elaborazione digitale
(acquisizione e manipolazione dati) e delle telecomunicazioni o in
applicazioni altamente scientifiche (analisi di segnali radar, sismici,
analisi spettrale, ecc) ; solo negli ultimi anni con l’avvento
soprattutto delle nuove tecnologie multimediali hanno trovato vasta
applicazione accanto ai Personal Computer General Purpose di
ultima generazione.
SP
DSP sono avvantaggiati della crescente densità dei dispositivi
integrati.
Tecniche numeriche: digitale vs.
analogico. Benchè vi siano queste motivazioni di carattere generale,
occorre sottolineare che le analisi nel dominio numerico sono molto
più complesse e richiedono un enorme sforzo computazionale.
Le novità introdotte nelle architetture dei DSP sono legate Le tecniche numeriche, che si basano sulle prerogativi finora
strettamente all’implementazione di tecniche di analisi numerica di accennate, trovano vasto utilizzo in
segnali digitali: è opportuno quindi introdurre quali sono le
motivazioni per risolvere in modo digitale e non analogico alcune compressione audio e vocale
applicazioni di elaborazione dei segnali. Resta ben inteso che la
filtraggio numerico
banda di frequenza (benchè sia aumentata negli ultimi anni) delle
modulazione e demodulazione
applicazioni digitali non è illimitata, e i dispositivi analogici trovano
codifica e decodifica degli errori
vasta applicazione alle alte frequenze, dove tecnologicamnete non si
sono ancora raggiunti prestazioni ottimali con dispositivi numerici servo control
(si vedaono le figure inerenti alle frequenze di lavoro delle audio processing (noise surround, riduzione del rumore,
applicazioni dei DSP). cancellazione dell’echo, equalizzazione, ecc)
riconoscimento vocale
sintesi vocale
SP
deve garantire alte prestazioni ed un costo contenuto perchè è
rivolto alla grande massa dei consumatori);
consumo: bassa potenza, per ridurre i costi legati all’alto costo
delle batterie di alimentazione (es. telefonia cellulare, satelliti
per telecomunicazioni, ecc);
ottimizzazione delle memorie: l’alto costo delle memorie
SRAM (Static RAM: più veloci delle DRAM, ma molto più
ingombranti) e il basso spazio per implementazione su chip
impongono un attento uso di queste risorse;
tempi di progetto: i prodotti commerciali, a cui sono legati i
DSP, subiscono una forte concorrenza legata anche alla loro
veloce evoluzione: il tutto implica tempi di progetto
strettissimi.
SP
Tecnologie dei DSP.
1. Architettura hardware.
I processori convenzionali utilizzano l’architettura detta Von
Neumann con un singolo blocco di memoria, a cui si accede per
mezzo di un singolo bus di indirizzi ed un singolo bus di dati,
entrambi condivisi sia dalle istruzioni sia dai dati veri e propri
(vedi figura 1).
SP
SP
2. Execution control.
L’ottimizzazione di parti di codice specifiche per applicazioni di
tipo numerico viene realizzato attraverso l’uso combinato di
generatori di indirizzo specializzati e con uso di opportune tecniche
di caching.Alcuni dei modi di indirizzamento tipici dei DSP sono:
autoincremento
modulo (o circolare)
bit-reversed (per FFT)
Con generatori automatici di indirizzi che implementano tali
carateristiche diventa molto più efficiente l’implementazione di
algoritmi numerici con funzioni iterative (loop di codice).
L’indirizzamento a modulo (o circolare) permette al DSP di
simulare l’effetto di una linea di ritardi tipico dei i filtri numerici:
una serie di valori xi con i = 0. . . n viene memorizzata in memoria; in
alcuni algoritmi si utilizzano tali valori traslando per ogni ciclo di
calcolo gli estremi; tramite questo tipo di indirizzamento a fine ciclo
l’indirizzo viene ricalcolato automaticamente in modo da ripetere la
scansione più e più volte senza spostamenti di dato in memoria.
Sempre per aumentare l’efficienza dell’esecuzione di parti di codice
in modo iterativo si sono introdotti meccanismi di ripetizione delle
istruzioni.
Alcuni DSP hanno incorporato delle program cache, che altro
non sono che delle piccole memorie all’interno del processore, che
eliminano il bisogno di accedere alla memoria principale per alcune
istruzioni: quando si devono eseguire blocchi di istruzioni si imposta
il numero di ripetizioni e il codice da eseguire, al contrario dei
sistemi tradizionali che eseguono per ogni ciclo il fetch delle
istruzioni (nei moderni elaboratori si utilizzano tecniche di
ottimizzazione del flusso di istruzioni, ma ai tempi dei primi DSP Fig : Data Path
non erano ancora utilizzate).
Queste cache particolari variano da un DPS all’altro ed in 4. Set di istruzioni.
generale sono dispositivi molto più semplici ma più efficienti di L’insieme di istruzioni dei DSP sono specializzate per fare
quelli utilizzate nei GPP. operazioni di tipo complesso e permettono di effettuare più
Il tipo più semplice è un buffer che può contenere solo una sola operazioni contemporaneamente. Infatti devono sfruttare la
parola di codice (single instruction repeat buffer), che permette di possibilità date dal tipo di architettura Harvard, che permette
ripetere più volte la stessa istruzione (i processori TMS320c2x e l’esecuzione di più accessi in memoria separati e il calcolo
TMS320c5x utilizzano tale tecnica). contemporaneo su due dati contemporaneamente.
Alcuni dispositivi implementano un repeated buffer più grande: Le operazioni complesse riguardano il calcolo aritmetico su
l’AT&T DSP16xx utilizza un buffer di 16 istruzioni. numeri in floating point o fixed point (a seconda dei DSP): nei
Le architetture più sofistica permettono l’utilizzo di cache processori GPP tali operazioni non sono svolte con singole
complesse in cui si possono utilizzare più blocchi separati di istruzioni specializzate, ma da gruppi di istruzioni general purpose.
istruzioni da ripetere frequentemente. Negli ultimi anni sono state introdotte delle parole di istruzione
molto ampie (256 bit): VLIW che sta per Very Long Istructions
3. Data path. Word. Tali istruzioni permettono appunto operazioni multiple
Nei DSP si sono introdotti dei meccanismi hardware in modo da indipendenti una con l’altra. La tendenza è verso istruzioni sempre
eseguire le operazioni aritmetiche complesse in un singolo colpo di più lunghe, ma soprattutto ortogonali tra loro: cioè istruzioni la cui
clock. Il blocco principale è il cosiddetto MAC (Multiply- esecuzione può essere eseguita in parallelo.
Accumulate): tale dispositivo permette l’esecuzione di
un’operazione di moltiplicazione (in floating point o fixed point) e 5. Formato dei dati.
successiva somma in un accumulatore in un singolo colpo di clock. Le operazioni aritmetiche come l’addizione e la moltiplicazione
I registri utilizzati per raccogliere il risultato di tali operazioni sono il cuore degli algoritmi numerici e dei sistemi DSP. Quindi
non sono registri general purpose normali, ma sono registri specifici come conseguenza il tipo di formato numerico e il tipo di aritmetica
di larghezza tale da contenere gli errori risultanti da operazioni di implementata via hardware utilizzati hanno una profonda influenza
moltiplicazione su numeri di diverso ordine di grandezza. sulle performance e il comportamento del sistema.
Altri tipi di dispositivi specializzati utili<zati per incrementare La scelta per le applicazioni dei DSP ricade tra il formato a
l’efficienza delle operazioni su bit sono: Shifters, Guards bits, virgola fissa ed il formato floating point.
Saturation.
SP
Nell’aritmetica in virgola fissa, i numeri sono rappresentati in
un intervallo fisso tra –1 e +1 con precisione fissa pari a 1/2n, dove n
è il numero di bit. Per non perdere di precisione il prodotto di due
interi rappresentati su n bit deve essere rappresentato su 2xn bit
(infatti nei blocchi interni con moltiplicatore, il risultato viene messo
in registri più ampi per questo motivo), oppure se questo non è
possibile si cerca di scalare opportunamente i fattori per impedire
l’overflow.
Nell’aritmetica in floating point si ha una dinamica molto più
ampia, che corrisponde però ad una maggiore difficoltà di
implementazione hardware.
Il numero di bit è importante anche per determinare la dinamica
rappresentabile dei segnali analogici quantizzati. Facciamo qualche
esempio: con 8 bit si hanno 48 dB (= 20 log(1/2 8), con 16 bit si hanno
96 dB e con 32 bit si hanno 196 dB. Difficilmente si devono analizzare
segnali analogici con 196 dB di dinamica !!!! E’ per questo motivo che
i primi DSP erano dispositivi a 16 bit e quando i DSP a 16 bit
iniziarono ad essere troppo poco efficienti per le applicazioni più
avanzate la scelta cadde sul DSP56000 della Motorola che utilizzava
24 bit in virgola fissa.
SP
memorie condivise – inserire il nome del DSP dell’articolo di
6. I/O. Byte).
I DSP utilizzano delle tecniche avanzate per interfacciarsi con il
mondo esterno, soprattutto nelle famiglie in cui all’interno ci sono
piu’ bus di indirizzo e di dati, in cui occorre introdurre unità di 7. Linguaggi e Compilatori.
multiplazione molto efficienti. La programmazione dei DSP è uno dei grossi problemi che
caratterizza questa famiglia di processori. La mancanza fin dalle
prime generazioni di strumenti di programmazione semplici ed
efficienti è stato un grosso ostacolo all’implementazione e alla
diffusione di questi processori. In generale il linguaggio di
programmazione utilizzato è l’assembler nativo del processore:
solamente negli ultimi anni si sono costruiti dei compilatori ad alto
livello (C) e degli strumenti di debug efficienti, ma nello stesso
tempo semplici nel loro uso. Tali innovazioni sono state introdotte
anche per ridurre i tempi di sviluppo di programmi di elaborazione
digitale: tempi che diventano basilari nei campi di applicazione dei
DSP. Di seguito viene riportata una tabella esemplificativa che
illustra le principali differenza dei linguaggi di utilizzazione delle
varie famiglie di DSP a seconda della casa produttrice. Sottolineo
ancora una volta che il tipo di linguaggio utilizzato e gli strumenti di
sviluppo sono un paramentro importantissimo nella scelta del giusto
DSP, poichè in questi paramentri occorre tener conto i tempi e delle
risorse da dedicare allo sviluppo di applicazioni: quindi bisogna
tenere conto dei tempi che il mercato ci concede !!
Produttore Linguaggio
DSP assembly language like FORTRAN
Analog Devices
DSP assembly language like assembly
Fig 5: I/O di un DSP con Architettura Harvard interna. Texas Instruments
DSP assembly language like C
LUCENT (AT&T)
Si possono distinguere in generale tre sorgenti di informazione: DSP assembly language like Assembler
MOTOROLA
segnali dei dati e degli indirizzi entranti ed uscenti dal DSP;
Table 1 : Linguaggi di programmazione dei DSP
comunicazioni con controller esterni;
coordinamento con DSP connessi in cascata.
SP
modi di funzionamento idle e sleep: durante le fasi in cui applicazione, che si sono estese dal campo militare, delle
il processore non lavora viene portato in stati a basso telecomunicazioni e professionale fino al settore cosumer.
consumo (per es. i cellulari durante la conversazione nei I DSP vengono divisi principalmente in 4 generazioni;
momenti di silenzio vengono portati in condizione di elencheremo di seguito le principali caratteristiche che le
basso consumo in modo automatico ! ) ; contraddistinguono soffermandoci nella sezione che segue
alcuni dispositivi permettono di far diminuire la frequenza soprattutto sugli ultimi esemplari.
di lavoro a seconda delle applicazioni che devono eseguire; I primi DSP erano considerati fondamentalmente dei processori
alcuni DSP permettono di disabilitare le periferiche non veloci: il DSP32 prodotto dall’AT&T aveva un clock a 16 MHz
utilizzate. contro i 5 MHz dei clock dei PC suoi coetanei.
La prima generazione di DSP nasce nel 1982 ed e’ rappresentata
Comunque proprio per l’utilizzo di queste tecniche è in generale dal TMS32010 della Texas Instruments. Tale processore riassume le
molto difficile conoscere in dettaglio il consumo operativo dei caratteristiche dei DSP di quel periodo :
DSP: infatti in tali dispositivi il consumo varia anche a seconda
del tipo di algoritmo (e quindi di istruzioni) che esegue: in aritmetica a virgola fissa a 16 bit;
generale le case costruttrici danno dei valori tipici o massimi del architettura Hrvard;
consumo. accumulatori costruiti in hardware;
set di instruzioni specializzate per il calcolo numerico ;
♦♦♦ tempo di esecuzione MAC 390ns (oggi 228ns).
♦♦♦
10. Metriche e misure delle prestazioni.
Per misurare le prestazioni dei DSP sono stati introdotti negli
anni molti tipi di metriche. Tali metriche si possono dividere
Agli inizi degli anni 80 l’evoluzione tecnologica nel campo del
principalmente in indici di prestazione e tempi di esecuzione:
trattamento del silicio e quindi il successivo calo del prezzo di
mentre i primi sono delle semplici misure della velocità di
produzione di processori, ha dato il via alla progettazione ed alla
esecuzione media dei DSP, i secondi sono delle vere e proprie “gare
costruzione dei primi DSP. Ciò ha fatto aumentare i campi di
SP
di velocità” su campi di applicazione specifici. Gli indici di misura
non sono altamente affidabili e non sempre riescono a dare un’idea
obbiettiva delle prestazioni dei DSP appartenenti a famiglie e
costruttori diversi. Tale inefficienza nasce dal fatto che produttori
diversi utilizzano tecniche e filosofie di implementazione diverse
soprattutto per quanto riguarda l’implementazione delle istruzioni e Function Description Example of
degli algoritmi numerici utilizzati. Per questo motivo ultimamente,
si sono scelti un certo numeri di algoritmi fondamentali (vedi figura applicatio
a fianco) che trovano vastissima applicazione nel DSProcessing: le n
velocità di esecuzioni di questi “algorithm kernels” rappresentano
Filtro di tipo FIR che Speech
una buona misura delle prestazioni e soprattutto danno un buon
opera su blocchi di processing (e.g.
indice di prestazione e di confronto direttamente sulle maggiori Real Block FIR
dati reali G.728 speech
applicazioni dei DSP.
coding)
Seguono le definizioni di tali unità di misura. Iniziamo dai
.. su dati complessi equalizzazione di
primi. Complex Block
canale su
Il più diffuso dei parametri di prestazione è sicuramente il FIR
modem.
MIPS, che significa Millions of Istructions per Second: è un indice
Opera su un singolo Speech
del numero di istruzioni che il DSP riesce ad eseguire in media al Real Single-
campione di dato processing,
secondo. Occorre fare attenzione quando si paragonano DSP di sample FIR
reale. filtering,
diversi costruttori, perché a volte le stesse operazioni possono essere
Least-Mean-Square equalizzazione di
eseguite con una quantità di istruzioni macchina differente: quindi
Adaptive Filter: su canale, servo
un processore che esegue 40 MIPS può avere meno prestazioni di
LMS adaptive FIR un singolo campione control, liear
uno che ne esegue 50 MIPS.
di dato reale. predictive
Per superare l’ambiguità del MIPS si sono introdotti via via gli
coding.
indici MOPS (Millions of Operations per second) e MFLOPS
Infinite Impulse Audio
(Millions of Floating-point Operations per second).
IIR Response filter su processing, filtri.
Siccome le operazione di moltiplicazione-addizione sono la base
singolo dato.
di certe apllicazioni di analisi numerica si è anche introdotto il
Prodotto scalare di Convoluzione,
MACS (Multiplay-Accumulates per seconds).
due vettori. correlazione,
Nel secondo gruppo di metriche invece troviamo tutta una serie
moltiplicazione
di applicazioni specifiche: si tratta di una specie di olimpiade dei Vector Dot
di matrici,
processori, in cui vi sono una serie di specialità “sportive” (gli Product
multidimensional
algoritmi), in cui anche processori appartenenti a “nazioni diverse” e
signal
che implementano tecniche diverse gareggiano uno al fianco
processing.
dell’altro per il primo posto.
Somma di due Grafica,
Nella tabella a fianco viene fatto un elenco delle pricipali
vettori. combinazione di
tecniche numeriche: tali tecniche da come si può osservare coprono
Vector Add audio ed
tutti i campi di applicazione del mondo dei DSP. A redigere dei
immagini, ricerca
benchmark (una specie di pagella) sono delle agenzie specializzate
su vettori.
come la BDTi (Berkeley Design Tecnology Inc.)
Cerca la posizione Error control
del valore massimo coding, algoritmi
Vector Maximum
in un vettore. che usano blocchi
di floating point
Negli algoritmi per telefonia cellulare
il calcolo (IS-545 standard).
Convolutional
convoluzionale degli
Encoder
errori su blocchi di
bit.
manipolazioni di bit operazioni di
Finite State
ed operazioni di controllo
Machine
controllo
Fast Fourier Radar, Sonar,
Transform converte MPEG Audio,
256 point Radix-2 un segnale dal compressione,
FFT dominio del tempo analisi spettrale.
al dominio della
frequenza.
SP
Figura : DSP benchmarks.
11. DSP vs. general purpose processor : una
panoramica.
Abbiamo visto che una della maggiori caratteristiche dei DSP è
quella di eseguire moltiplicazioni complesse in virgola fissa o
floating point in un solo colpo di clock: questo grazie all’utilizzo sia
di un’architettura multibus che permetteva di eseguire piu’
operazioni in un solo colpo di clock e sia grazie all’incremento del
parallellismo delle operazioni prodotto da unità di tipo pipelined ,
nonchè da dispositivi di moltiplicazione-addizione e dai generatori
di indirizzo automatici.
Per aumentare il parallelismo interno dei GPP sono state
sviluppati processori superscalari, che eseguono 4 istruzioni in un
singolo colpo di clock. In più sono state introdotte nuove unità per
l’esecuzione di istruzioni multiple, un set di registri più ampi e
dispositivi per la predizione di salti condizionati (brench prediction
unit), che incrementano ulteriormente le prestazioni.
Sempre nella classe di processori di tipo RISC e CISC sono statio
introdotte unità hardware per eseguire in un solo colpo di clock
moltiplicazioni e moltiplicazioni-addizioni che sono ideali per
applicazioni DSP.
E’ iniziata la guerra !!
Riassumiamo i principali approcci seguiti per implementare su
GPP caratteristiche specidfiche dei DSP:
1. GPP con nessuna o poche specifiche simili ai DSP;
2. GPP con caratteristichwe simili ai DSP;
3. i co-processori DSP .
Il primo gruppo è rappresentato da processori come il Pentium
(P54C), PowerPC 604e, IDT R4650; benchè non abbiano unità che gli
permettono di operare come i DSP, raggiungono buone prestazioni
per i seguenti motivi:
clock elevati (più di 200 MHz, da 2 a 5 volte quelli dei DSP);
moltiplicazione ed istruzioni eseguite in un singolo colpo di
clock;
buona banda di memoria;
overhead nei loop ridotto dall’uso di unita di brench prediction;
generatori di indirizzi.
Kernel Architecture
Nel mondo dei DSP difficilmente si parla di sistemi operativi o
di gestione dei task, quello che in gergo informatico viene chiamato
kernel. In sistemi di tipo embedded, cioè per applicazioni specifiche,
il sistema viene coordinato in modi differenti, senza l’ausilio di un
codice che coordini e gestisca le applicazioni, anche perchè in tali
sistemi le risorse sono ottimizzate e un sistema di gestione
occuperebbe molto spazio.
SP
E’ bene introdurre sinteticamente alcuni concetti legati alle comunicazione e sincronizzazione dei task
possibilità offerte per implementare dei vetri e propri SO su gestore dei task (supervisor)
architetture DSP. gestore di memoria (per creare dei buffer per ogni task)
In seguito si elencheranno i principali tipi di kernel e come tutti elementi basilari di un sistema operativo !!
questi vengono utilizzati e si adattano ad applicazioni specifiche.
In generale si distinguono per complessità di implementazione e Multiprocesso Cooperativo
per gradi via via crescenti di efficienza le seguenti tipologie di Prendiamo un esempio pratico: consideriamo una segreteria
gestione: telefonica digitale multifunzione, in cui si eseguano sullo stesso
a) singolo processo + servizio di interrupt per I/O; segnale un’analisi vacale (speech recognition), una compressione dei
b) multiprocesso cooperativo; dati (recording compression) e la rilevazione dei toni di centrale
c) thread multipli a divisione di tempo con gestione round-robin; (tone detection). Ogni funzione deve essere eseguita da un processo
d) combinazione del punto b) e c); separato ed i processi devono essere coordinati in sequenza: ognii
e) mulritasking preeemptive. processo deve eseguire il suo task su un buffer di dati e cedere
successivamente la CPU agli altri processi.
Singolo processo + servizio di interrupt per I/O In un sistema di tipo cooperative, il kernel dovrebbe mantenere
• startup procedure una lista dei processi e gestire l’ordine di esecuzione, ma il
• Interrupt Service Routine meccanismo di switch è controllato da ogni singolo processo che alla
• comunicazione task/ISR fine del proprio compito cede le risorse (CPU, memoria, I/O) agli
• sincronizzazione altri........
In una architettura di questo tipo si ha bisogno in primis di una
procedura di inizializzazione, che renda disponibile gli interrupt e
configuri la frequenza di trasmissione dei dati da/per le periferiche
esterne.
Poi vi è la routine di gestione degli interrrupt (Interrupt Service
Routine): se il sistema non sopporta dei registri ombra (shadow
registers) [dove i registri utilizzati vengono spostati prima dell’inizio
della routine di interrupt e copiati nuovamente al termine di questa]
deve prima salvare tutte le varianbili di stato del processo e in
seguito riportarle a fine interruzione: questi non sono dettagli di
poco conto anche perchè un’imprecisione di questi meccanismi può
causare degli errori (bug) non sempre individuabili
immediatamente.
Più complesso è il meccanismo di comunicazione tra il processo Applicazioni.
e il servizio di interrupt. Tipicamente ISR gestisce un dato per ogni
interrupt, mentre il processo lavora su un buffer di dati: per
ottimizzare tale meccanismo per applicazioni di tipo real time
occorre avere almeno due buffer di sistema, in tal modo mentre il
processo elabora i dati in un buffere ISR riempie il secondo.
Tutto questo sistema ha bisogno di un meccanismo di
sincronizzazione, cioè di come il processo si accorge che un buffer
può essere elaborato: il modo più semplice è quello di controllare
regolarmente (poll) un flag per sapere se il buffer è pieno (un modo
non efficiente dal punto dello spereco delle risorse ma semplice). Per
sistemi che hanno un solo processo attivo, questo sistema di
gestione è molto efficiente e semplice da implementare: pensiamo ad
esempio a....
♦♦♦