I Digital Signal Processor fanno parte di quella classe di processori noti anche come Application Specific Processor, in quanto concepiti appositamente per soddisfare in maniera ottimale i requisiti applicativi di specifiche applicazioni come quelle real-time ed embedded. La caratterizzazione di questo tipo di processore è l’architettura computazionale altamente ottimizzata per eseguire enormi quantità di operazioni di natura prevalentemente matematica (somme, sottrazioni, moltiplicazioni e divisioni) in tempi estremamente brevi, consumando meno energia possibile. La caratterizzazione dell’architettura computazionale è l’elevatissimo parallelismo esecutivo e l’implementazione hardware (piuttosto che firmware) delle istruzioni più ricorrenti negli algoritmi matematici. I Dsp sono diventati la tecnologia computazionale di riferimento per tutte quelle applicazioni dove il requisito real-time era il punto di riferimento, per esempio nelle applicazioni di riconoscimento delle immagini, della voce, di comunicazione ad altissima velocità e affidabilità, nelle applicazioni biomedicali, nella robotica, ecc. Malgrado i Dsp siano tutt’ora la soluzione processore più efficiente ed effettiva per lo sviluppo di sistemi embedded con requisiti di velocità, dimensioni e consumi di energia elettrica estremi, la complessità di sistema delle applicazioni di ultima generazione ha evidenziato i limiti applicativi del Dsp come processore ottimale per tali applicazioni, per esempio ove è richiesta l’esecuzione di un sistema operativo, non con caratteristiche real-time come quelli tipici dei sistemi non real-time, ma molto diffusi su molte applicazioni embedded non-real time. Per questo i produttori di Mcu si sono dedicati a sviluppare Mcu con capacità e caratteristiche equiparabili a quelle dei Dsp, in modo da offrire agli sviluppatori soluzioni di computing miste Dsp-Mcu, capaci di eseguire in maniera efficiente sia gli algoritmi matematici sia i processi di gestione del sistema (tipicamente i sistemi operativi non real-time). Il caso più emblematico è stato quello dell’evoluzione dell’architettura Arm verso il modello computazionale dei Dsp con la serie Mx di processori, primo tra tutti il Cortex M4. L’innovazione che le Mcu di ultima generazione hanno introdotto nell’architettura computazionale per supportare il calcolo Dsp, è l’istruzione Mac (Multiply and accumulate), che è alla base della maggior parte degli algoritmi matematici di digital signal processing. In tal modo le Mcu possono eseguire in maniera efficiente sia operazioni di natura matematico-algoritmica, sia operazioni di natura logica e procedurale come quelle tipiche della gestione di sistema.
Dsp Super Harvard
I Dsp si sono sviluppati nel tempo in modo da soddisfare sempre meglio i requisiti applicativi dei sistemi embedded, diventando sempre più performanti relativamente al target applicativo cui erano destinati, il pattern recognition.
Analog Devices si è impegnata nello sviluppo di architetture Dsp su singolo chip ottimizzate per applicazioni ad elevate prestazioni, come il trattamento del segnale audio e del segnale video. Con l’architettura Sharc (Super harvard architecture), introdotta per la prima volta nel 1994, Analog Devices rese disponibile in un single-chip una versione particolarmente efficiente e potenziata dell’architettura computazionale di riferimento per i Dsp, l’architettura ad elevatissimo parallelismo esecutivo Harvard, nota come alternativa con prestazioni altamente superiore rispetto alla architettura Von Neumann, correntemente implementata nelle Mcu. I Dsp della famigli Sharc implementano completamente in hardware l’aritmetica floating-point a 32 bit con precisione interna a 40 bit, senza limitazioni relativamente al formato di dati oggetto dell’elaborazione. I Dsp di Analog Devices sono stati i primi a implementare il linguaggio assembler con sintassi algebrica, in pratica una forma di linguaggio vicina alla sintassi tipica delle espressioni algebriche (quelle alla base degli algoritmi matematici). In tal modo Sharc è il primo Dsp programmabile con un linguaggio ad alto livello direttamente riferito all’hardware da cui viene eseguito. L’ampia memoria disponibile e una serie di periferiche di comunicazione molto sofisticate rendono questo Dsp ideale per numerose applicazioni che richiedono un elevato livello di parallelismo esecutivo, come le applicazioni audio consumer, l’imaging medicale, l’automazione industriale e la strumentazione di misura. I processori Dsp della famiglia Sharc consistono di ben quattro generazioni di prodotti caratterizzati da continuità nel tempo della compatibilità del codice e da costi relativamente bassi rispetto alle elevate prestazioni, capaci di aritmetica fixed e floating-point da 450 a 2700 Mflops.
Dsp superscalari
L’architettura ad alte prestazioni dei Dsp della famiglia Sharc di Analog Devices si è evoluta in un’architettura superscalare, denominata TigerSharc, che ha accelerato l’esecuzione a parità di frequenza di clock attraverso l’arricchimento del processore in termini di unità capaci di operare in parallelo e di istruzioni capaci di operare contemporaneamente su più dati: istruzioni diverse trattano i propri operandi contemporaneamente, su diverse unità hardware all’interno del chip stesso e dello stesso ciclo di clock (in genere un solo ciclo di clock). L’ottimizzazione computazionale è al massimo livello: il core può eseguire simultaneamente da una a quattro istruzioni a 32 bit come se fosse un’unica istruzione in un singolo ciclo in una pipeline di ben otto livelli. Il programmatore ha il controllo diretto dei tre componenti del core: la Ialu, i component block e il program sequencer. I processori TigerSharc hanno una pipeline di esecuzione a due cicli completamente interallacciate, in modo che quando un risultato può non essere disponibile per un’altra operazione e quindi questa dipende da tale risultato, vengono inseriti cicli di attesa in maniera automatica. Questi possono evitarsi se in fase di programmazione si evitano le dipendenze computazionali e di trasferimento dati. Il Dsp TigerSharc supporta la modalità Simd (Single instruction multiple data) che consente di far operare i blocchi computazionali in parallelo su gli stessi dati contemporaneamente, o su più dati differenti allo stesso tempo, ed eseguire in maniera differenziata e parallela quattro operazioni a 16 bit oppure otto operazioni a 8 bit. I processori TigerSharc dispongono di due Alu intere (Ialu) che consentono di gestire in maniera estremamente efficiente l’indirizzamento, e di un file di 31 registri multi-porta che servono come generatori di indirizzo (in modalità immediata, indiretta, con pre e post-modifica), modulo e bit-reverse, senza limiti per il posizionamento del buffer dati e con la possibilità di eseguire accessi alla memoria a word singole, doppie o quadruple. Una delle peculiarità dei Dsp della serie Sharc di Analog Devices è quella delle full-duplex link port. I Dsp ADSP-TS201S e ADSP-TS202S dispongono di quattro full-duplex link port, ognuna capace di trasmettere e ricevere a quattro bit, utilizzando la tecnologia Lvds a basso consumo e capace di operare a doppio rate a 500 MHz. Ogni link supporta fino a 500 Mbytes/s per direzione, per un totale di trasferimento combinato a 4 Gbytes al secondo.
Very Long Instruction Word
Un altro approccio di architettura computazionale ad alte prestazioni è stato implementato da Texas Instruments nella sua famiglia di Dsp TMSC6000 a cosiddetta architettura Vliw (Very long instruction word). L’architettura computazionale Vliw è una soluzione alternativa a quella Harvard per utilizzare il parallelismo esecutivo per rendere più veloce ed efficiente l’esecuzione del codice sequenziale della macchina Von Neuman. Il concetto Vliw, che risale agli anni ’80, si basa sulla dimensione dell’istruzione eseguibile dal processore; in pratica l’istruzione eseguibile è molto più lunga rispetto alla dimensione tipica dei processori non-Vliw. Tale istruzione consiste nell’impacchettamento di un certo numero di istruzioni base, per esempio 8 istruzioni a 32 bit impacchettate in una unica istruzione long a 256 bit. Queste vengono spacchettate run-time dal processore ed eseguite con il massimo livello di parallelismo possibile (idealmente in un solo ciclo di clock, se non ci sono stati di attesa tra le varie istruzioni del pacchetto). L’impacchettamento ottimale relativamente al massimo parallelismo in funzione del livello di parallelismo hardware disponibile da parte del processore, è a carico del compilatore che compila un codice sorgente sequenziale non parallelo (classico codice C), lo analizza e lo scompone in termini di potenziale parallelismo, quindi lo riorganizza in termini di sequenza di operazioni eseguibili in parallelo. La famiglia di Dsp TMS320C6x di Texas Instruments opera su istruzioni da 256 bit come combinazione di 8 istruzioni a 32 bit eseguibili in un singolo ciclo di clock. I chip sono ad altissima integrazione e sono in grado di eseguire alla velocità di 2000 Mips.
Digital Signal Controller
I Digital Signal Controller furono sviluppati per la prima volta da Motorola come evoluzione dell’architettura Dsp56000, allo scopo di soddisfare le esigenze applicative nel campo dei sistemi embedded orientati al controllo. L’idea innovativa era basata sull’arricchire di supporto hardware i compilatori di linguaggio C dell’architettura core di un Dsp altamente performante come il Dsp56156, la versione a 16 bit del Dsp56000 a 24 bit. Il risultato di questa innovazione era il microcontrollore-Dsp. Questa idea fu implementata alcuni anni dopo da parte di Microchip con la creazione del Digital Signal Controller, partendo dalla nota Mcu PIC. L’idea vincente fu quella di passare dall’architettura Von Neumann a quella Harvard e di mantenere la caratterizzazione tipica di una Mcu. Il PIC Dsc è un microcontrollore a 16 bit e allo stesso tempo un Digital Signal Processor. Il PIC Dsc utilizza un’architettura Harvard a bus modificato (cioè la memoria dati e quella di programma sono ad accesso separato ma ci sono meccanismi che consentono di accedere alla memoria di programma per memorizzare o prelevare dati o costanti), da cui ne deriva una maggiore flessibilità nell’accesso alla memoria per processi di natura non algoritmica, come quelli di gestione delle risorse di sistema, dell’interfaccia e della comunicazione. Inoltre il modello di programmazione è ortogonale relativamente al file di 16 registri dati general purpose. Una peculiarità che rende i PIC Dsc di Microchip compatibili in termini di prestazioni con i Dsp sono i fast interrupt, una modalità speciale di implementazione del controllo delle interruzioni in maniera deterministica e veloce. Un’altra caratterizzazione Dsp è l’unità aritmetica di indirizzamento che consente di minimizzare i cicli di clock necessari nella generazione complessa degli indirizzi tipica degli algoritmi Dsp. Normalmente l’architettura Harvard non consente il trasferimento di dati tra lo spazio dati e lo spazio di programma, ma il dsPIC dispone di una funzionalità chiamata Program Space Visibility che consente di far vedere un segmento da 32 K della memoria di programma flash attraverso gli indirizzi Ram. Il compilatore fa uso estensivo di questo meccanismo per gestire la memorizzazione e l’accesso alle costanti memorizzate nella Flash.