Application specific o general purpose?

I Digital Signal Processor rappresentano una delle più importanti tecnologie di computing per applicazioni real-time in campi sia di natura industriale che consumer. I Dsp sono processori ottimizzati per applicazioni orientate all'elaborazione numerica del segnale con requisiti di natura real-time, e sono quindi processori application-specific. Si tratta di processori che hanno un'architettura computazionale particolarmente ottimizzata e orientata ad esegure nel minor tempo possibile algoritmi di elaborazione numerica del segnale. Questa caratterizzazione dei Dsp ha portato nel tempo a una continua ottimizzazione di queste architetture in accordo con lo sviluppo della tecnologia microelettronica. Prima disponibili solo sotto forma di di Mcu-As (Application Specific) con architetture ad elevato parallelismo esecutivo (Harvard, Vliw, ecc.), poi anche sotto forma di Fpga (con parallelismo esecutivo pieno). A queste due soluzioni Application-Specific se ne sono affiancate ora anche altre di natura non application specific, come le Mcu con supporto computazionale per l'elaborazione numerica del segnale. Pur essendo i Dsp una tecnologia di riferimento per tutti i settori applicativi, dall'industriale al consumer, dal medicale all'automotive, quasi tutti i produttori di processori concorrono in questo enorme mercato. Inoltre, l'utilizzo sempre più esteso di tecnologia Dsp nelle applicazioni consumer ha fatto crescere ulteriormente l'interesse dell'industria dei semiconduttori in questo mercato.
L'evoluzione tecnologica dei sistemi è nella direzione dell'embedding e dell'interazione con il mondo fisico, e conseguentemente i dispositivi elettronici richiedono un crescente utilizzo delle metodologie di elaborazione del segnale e dei relativi dispositivi digitali che ne consentono l'implementazione, i Dsp. Audio digitale, grafica, imaging e video digitale, imaging medicale, comunicazione e telecomunicazione digitale, sono solo alcuni esempi di applicazioni che richiedono la tecnologia del signal processing in modalità sempre più intensiva, in contesti applicativi ultra embedded, a costi sempre più ridotti e con stringenti requisiti real-time. L'elaborazione del segnale è basata su un utilizzo intensivo di algoritmi matematici anche molto complessi, in domini di misura che richiedono elaborazioni matematiche (trasformate) che trattano i dati in una modalità non nativa dei processori (dati vettoriali invece che scalari, dati complessi invece che reali, funzioni matematiche trascendenti come le trigonometriche, le logaritmiche, le iperboliche invece che algebriche, ecc.). Anche l'informazione di segnale non è nativa dei processori digitali, essendo funzione continua del tempo, quindi che richiede di essere campionata e convertita in seguenze di numeri sincrone con il tempo, condizione che impone da una parte l'introduzione delle periferiche analogiche nell'architettura del processore e dall'altra la capacità di gestire il real-time (il processore deve essere in grado di eseguire gli algoritmi che eseguono i calcoli numerici man mano che arrivano le informazioni (i campioni del segnale) e in un tempo inferiore al tempo di aggiornamento dei dati di segnale. L'architettura dei Dsp è ottimizzata per eseguire gli algoritmi di calcolo matematico in un contesto di elaborazione non nativo dell'elaboratore tradizionale. In particolare deve implementare un'Alu (Aritmetic-Logic Unit) veloce, flessibile e a elevatissimo parallelismo esecutivo (pipelining) e dotato di unità aritmentiche e logiche non presenti nelle Alu tradizionali (Moltiplicatore-Accumulatore, barrel-shifter, controllo automatico della saturazione aritmetica, gestione automatica della precisione numerica, ecc.), deve disporre di un sistema che non limita il flusso dati da e verso l'Alu, deve supportare in hardware la precisione estesa e la gamma dinamica dei numeri, deve disporre di una doppia Alu per l'indirizzamento distinta da quella aritmetica, deve eseguire numerose operazioni per ciclo istruzione e deve eseguire con supporto hardware il controllo del flusso di programma (cicli iterativi a controllo harware). I Dsp sono fondamentalmente processori a set ridotto di istruzioni e come tali trovano nei processori ad architettura Risc i loro diretti competitori, anche se i Risc general purpose non sono application-specific. Questi comunque, pur non disponendo di architetture computazionali ad elevato parallelismo esecutivo (per esempio Harvard), grazie alla ottimizzazione Risc si stanno arricchendo di funzionalità computazionali per il supporto del signal processing, rendendo in tal modo disponibile agli sviluppatori una soluzione compromesso tra il Dsp altamente ottimizzato e la Mcu orientata all'elaborazione non di segnale.

Super Harvard Architecture Dsp

Analog Devices, con l'architettura Sharc (Super Harvard Architecture Computer), ha implementato un Dsp ad altissime prestazioni e ottimizzato per l'esecuzione efficente di algoritmi di elaborazione digitale del segnale. Si tratta di un'architettura a 32 bit floating-point basata sull'architettura di computing Harvard, potenziata in modo da ottenere le massime prestazioni in termini di esecuzione. L'architettura Super Harvard implementata da Analog Devices nei Dsp Sharc è una estensione dell'architettura Harvard classica (basata sulla separazione della memoria di programma da quella dati) con l'aggiunta di un processore di I/O con bus dedicato.
Le caratteristiche dell'architettura Sharc sono:

- 32/40-Bit Ieee Floating-Point Math

- 32-Bit Fixed-Point Multipliers con 64-Bit Product e 80-Bit Accumulation

- No Arithmetic Pipeline (tutti i calculi sono eseguiti in un solo ciclo di clock)

- Supporto hardware dell'indirizzamento a buffer circolare
- 32 Address Pointers Support 32 Circular Buffers
- Cicli iterative a supporto hardware fino a 6 livelli di nesting
- Algebraic Assembly Language
- Operazioni aritmetiche a controllo condizionale

- Bit Manipulation, Divide & Square Root, Bit Field Deposit & Extract

- Dma per traferimenti di dati a sovraccarico nullo in background e a piena velocità di clock.

Questa efficentissima architettura Dsp è arrivata alla quarta generazione e integra una serie di periferiche application-specific che permettono di ottenere una rapida implementazione di applicazioni senza aggiungere complessità al sistema e senza perdita di prestazioni. Questo set di periferiche sono raggruppate insieme sotto il nome di Digital Applications Interface come blocchi funzionali connessi tra loro attraverso un sistema programmabile detto Signal Routing Unit. Questa è una vera innovazione in quanto consente di realizzare un sistema completo e flessibile di interconnessioni tra i blocchi periferici all'interno del chip. Allo scopo di aumentare il parallelismo esecutivo, Analog Devices ha realizzato Tiger Sharc, un Dsp per applicazioni multiprocessing e prestazioni superiori ai Bflops (Billion Floating-Point Operations per Second). Questo Dsp combina un'ampia disponibilità di memoria con due unità esecutive indipendenti e parallele, entrambe dotate a loro volta di una doppia Alu, una floating point (Ieee a 32 bit a singola precisione estendibile fino a 40 bit) e una fixed-point a precicione multipla (8, 16, 32 e 64 bit). Data la sua architettura superscalare, è in grado di eseguire fino a 4 istruzioni per ciclo, quindi fino a 24 operazioni fixed-point (a 16 bit) o 6 operazioni floating-point. Dotato di 4 bus indipendenti a 128 bit, ognuno capace di comunicare con 6 banchi da 4 Mbit, consente di trasferire dati a 33,6 Gbyte/s.

Dsp multicore

I singoli Dsp possono aumentare tramite il parallelismo interno le loro prestazioni, ma fino a un certo limite. Per aumentare le prestazioni computazionali, più core Dsp possono essere integrati insime in modalità multicore. È questo il caso del Dsp StarCore di Freescale. In particolare il Dsp MSC8256 integra sei core Dsp StarCore operanti da 800 MHz fino a 1 GHz. MSC8256 è un Dsp altamente integrato che contiene sei sottosistemi Dsp StarCore SC3850, ognuno dotato di cache L1 istruzioni e di cache dati, di cache L2 dati/istruzioni e 1056 kbyte di memoria condivisa. Ogni SC3850 dispone di quattro Alu con doppia Mac, per una performace esecutiva di 8000 milioni di moltiplicazione con accumulo al secondo a 1 GHz, quindi 48000 Mmacs per l'intero dispositivo. Gli StarCore SC3850 sono Dsp con le seguenti caratteristiche:

- 32 Kbyte 8-way level 1 instruction cache

- 32 Kbyte 8-way level 1 data cache

- 512 Kbyte 8-way level 2 unified instruction/data cache

- Memory management unit
- Enhanced programmable interrupt controller

- Debug e profiling unit

- Due timer a 32-bit

Very Long Instruction Word Dsp e System-on-Chip

Texas Instruments ha implementato l'elevato parrallelismo esecutivo basandosi sull'architettura Very Long Instruction Word. Questa architettura utilizza numerose unità esecutive parallele e un formato di istruzione che codifica tutte le operazioni eseguibili dalle unità. La famiglia di Dsp di Texas Instruments che implementa in maniera ottimizzata ed estensiva questa architettura esecutiva parallela è C6000. I C6000 di Texas Instruments sono Dsp a 32 bit ad elevatissimo parallelismo esecutivo in cui 8 unità esecutive parallele vengono controllate tramite un'istruzione Vliw da 256 bit. Le istruzioni per ogni unità esecutiva è a 32 bit e codificano una singola operazione. Queste istruzioni rappresentano i campi operazione di un'istruzione da 256 bit (8 x 32) eseguita a ogni ciclo di clock. Tutte le unità esecutive, una volta ricevuta la propria istruzione è in grado di eseguire in parallelo alle altre unità la propria operazione. In tal modo il Dsp può eseguire algoritmi a una velocità di picco 8 volte superiore alla velocità del clock. La condivisione dei dati dalla memoria, in un contesto ad elevato parallelismo come quello implicato dall'architettura Vliw è possibile grazie a un sistema di gestione hardware della memoria. L'approccio System-on-Chip combinato con quello Vliw ha consentito a Texas Instruments di combinare la potenza computazionale dell'architettura Dsp C6000 con quella dell'architettura di computing Risc Arm. Il Digital Media TMS320DM6467T System-on-Chip (DMSoC) integra sullo stesso chip un Arm926EJ-S a 500 MHz e un C64x+.
Il Dsp TMS320C64x è caratterizzato da:

- Advanced Very-Long-Instruction-Word Debug TMS320C64x+ Dsp Core

- Otto unità funzionali indipendenti

- 16K-Byte di Instruction Cache
- 6 ALU (32-/40-Bit) ognuna che supporta 8K-Byte di Data Cache Single 32-Bit, Dual
- 16-Bit, o Quad 8-Bit e 2 moltiplicatori 16 x 16-Bit (risultato a 32-Bit) in un solo ciclo di clock

- Architettura Load-Store senza allineamento

- 64 registri a 32-Bit General-Purpose.

Dsp Mcu-based

Il signal processing è sempre più ricorrente nelle applicazioni basate sulle Mcu. In queste applicazioni è necessario affiancare alla Mcu un Dsp di fascia medio-bassa per supportare la parte computazionale intensiva per l'esecuzione degli algoritmi di elaborazione del segnale. Questo approccio misto Mcu-Dsp è necessario in quanto la Mcu non ha l'architettura computazionale ottimizzata per il signal processing e a sua volta il Dsp non ha l'architettura di elaborazione efficente per il controllo di sistema. Questo approccio, pur essendo sufficente a supportare le applicazioni mixed-signal, è però molto oneroso dal punto di vista dell'embedding, quindi relativamente alle dimensioni, costi e consumi del sistema. L'approccio a questa problematica si è evoluto nel tempo con vari passaggi, per esempio con l'introdusione di sistemi ibridi microcontrollore-Dsp o Dsp-microcontrollore, intesi a far convergere su un unico chip in maniera ottimale le caratteristice computazionali del real-time computing e del controllo efficente del sistema. Con l'introduzione della famiglia M3, Arm ha creato i presupposti per l'utilizzo delle Mcu in contesti real-time ad elevate prestazione. Con la famiglia M4 ha conferito alla Mcu le necessarie funzionalità adatte al calcolo intensivo richiesto dal signal processing. STMicroelectronics ha basato sul core Arm Cortex-M4 operante a 180 MHz le Mcu STM32F427xx ed STM32F429xx per realizzare una serie di Mcu con capacità Dsp e architettura di sistema mixed-signal. Queste Mcu sono state ottimizzate a vari livelli di sistema per affrontare le problematiche applicative real-time e signal processing nel controllo, nell'automazione, nel medicale, nell'automotive, green, smart-grid, ecc.
Un esempio di integrazione funzionale Mcu-Dsp è per l'acceleratore di memoria Art (Adaptive real-time memory accelerator) integrato in questi dispositivi. Questo acceleratore di memoria, ottimizzato per Arm-M4 con Fpu, consente l'accesso veloce alla memoria Flash ad elevate frequenze di clock. L'acceleratore implementa una coda di instruction prefetch e una cache di branch che consente l'esecuzione del programma direttamente da memoria flash a 128 bit, a zero wait state e con clock a 180 MHz.
Box BoxBoxBoxBox
I requisiti di un Dsp efficente e performante
Un Dsp sofisticato deve avere un'unità coputazionale dotata di moltiplicatore hardware capace di eseguire la moltiplicazione in un solo ciclo di clock e deve essere in diretta connessione con l'accumulatore. Gli accumulatori devono essere dedicati e più di uno, in doppia precisione con estensione dei bit più significativi (per esempio un'architettura a 32 bit in doppia precisione l'accumulatore richiederebbe 64 bit e con un'estensione di 16 bit avrebbe in totale 80 bit). L'Alu deve anche avere la possibilità di eseguire contemporaneamente più operazioni aritmetiche (per esempio somma e sottrazione) e il controllo della saturazione aritmetica con capacità di recovery del calcolo corrente in maniera assolutamente automatica e non a controllo di programma. Il barrel shifter è inoltre un importante e fonamentale dispositivo aritmetico-logico (consente di spostare in un solo ciclo di clock da 1 a n posizioni i bit di un dato) considerando la lunghezza in bit dell'accumulatore e la ricorrente necessità di gestire la posizione dei bit durante il calcolo e per poter eseguire operazioni non supportate da hardware come la divisione, la radice quadrata, il calcolo trigonometrico, ecc. I generatori automatici, indipendenti e paralleli di indirizzamento, uno per ogni bus di indirizzamento della memoria, sono alla base del successo di un Dsp. L'indirizzamento nell'elaborazione digitale del segnale molto complesso (modulo N, bit reversing, con offset, a incremento variabile e algebrico, ecc.). Detti anche Alu di indirizzamento, devono essere in grado di calcolare l'indirizzo di accesso ai dati contemporaneamente (stesso ciclo di clock) al calcolo aritmetico logico eseguito sui dati.
L'accesso alla memoria deve essere multiplo e contemporaneo su più dati, sia in lettura, sia in scrittura, in modo che i dati siano immediatamente disponibili all'Alu senza cicli di clock aggiuntivi (il Dsp deve esere in grado di eseguire un'intera operazione aritmetica, inculuso l'accesso agli operandi, in un solo ciclo di clock).
La gestione degli interrupt di un Dsp deve essere veloce e deterministica. In particolarità la gestione veloce degli interrupt (fast interrupt) consente al Dsp di recuperare un dato o di gestire un evento nel tempo minimo possibile (un solo ciclo di clock), senza eseguire alcuna istruzione di controllo aggiuntiva. L'efficienza esecutiva degli algoritmi dipende essenzialmente dalla minimizzazione dell'esecuzione di istruzioni di controllo di programma (istruzioni condizionali e istruzioni di esecuzione iterativa). Un Dsp efficente deve eseguire solo operazioni di calcolo e pochissime istruzioni di controllo. Questo può avvenire se il Dsp implementa il controllo hardware (non firmware) delle condizioni di esecuzione delle istruzioni (if condizione ... then ...) e di iterazione (for ... , do while condizione ..., while condizione do ..., ecc.). L'efficienza a livello di core di un Dsp può essere resa critica dall'inefficenza di accesso alle periferiche, soprattutto quelle di natura analogica, come i codec. Questi, devono essere in grado di gestire a livello hardware il flusso dati, evitando al core di eseguire codice di gestione. La gestione con doppio buffer del flusso dati e l'eventuale trasformazione da non lineare a lineare del dato devono essere operazioni eseguite in hardware dal codec o dalla periferica di comunicazione seriale sincrona a cui il codec è collegato.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome