• Non ci sono risultati.

L’uso di processori programmabili è tipicamente suddiviso in due principali classi di applicazione: computing e sistemi embedded, il primo include computer desktop, notebook, workstation e sistemi server. Tutti questi sono accomunati dalla caratteristica che l’utente può programmarli in accordo con il grandissimo spettro di compiti che essi sono in grado di assolvere.

I sistemi embedded, invece, risultano avere una natura molto più specifica e si possono definire descrivendo le loro principali caratteristiche [28]:

• Ciascuno di essi svolge una particolare funzione di cui diamo qui di seguito alcuni esempi: controllo di circuiti elettrici, signal processing in sistemi audio e wireless. Ciò li differenzia dai processori per PC in quanto questi ultimi eseguono solitamente non uno, ma molti tipi di applicazioni diverse.

• Il modo di funzionare in real-time richiede delle specifiche tecniche molto esigenti, tra cui emerge, al primo posto, la velocità dell’apparato in cui le esecuzioni dei compiti vengono effettuate in tempo reale.

• Dato il tipo di utente al quale il prodotto è destinato si rende necessario, già in sede di progetto, porsi l’obiettivo di realizzare un sistema il più possibile pratico, funzionale ed esente da errori.

I processori di tipo embedded, quindi, sono tutti quelli programmabili, come i microcontrollori (MCU), i DSP, i microprocessori (MPU) e gli ASIP (application- specific instruction set processors).

Il notevole sviluppo del mercato che ultimamente si è verificato riguardo a questi processori è dovuto ad una grande varietà di ragioni tra le quali le più importanti sono:

• Flessibilità nel progetto: questo parametro è utile per ovviare a errori di design, per permettere variazione di specifiche e per favorire un’evoluzione futura del prodotto, aspetto certamente non secondario in un

settore in cui le innovazioni tecnologiche sono un elemento essenziale per imporsi sul mercato.

• Riutilizzo: è più facile riadattare un progetto esistente che ridisegnare un sistema complesso.

• Semplificazione del design: la presenza di un’elevata quantità di blocchi riconfigurabili e riprogrammabili rende più semplice il design di una porzione significativa del sistema. Inoltre operazioni complesse di signal processing o di microcontrollo sono spesso amministrate meglio via software piuttosto che via hardware.

I DSP di tipo embedded vengono classificati considerando i seguenti parametri: 1. Specializzazione aritmetica: un fattore distintivo dei DSP, rispetto alle

architetture degli altri microprocessori, è la presenza di un moltiplicatore/accumulatore parallelo e grazie a questa specializzazione aritmetica è possibile un incremento della velocità nell’esecuzione di algoritmi come quelli di filtraggio digitale e cross-correlazione.

2. Data type: i core dei processori embedded per le applicazioni di elettronica di consumo supportano tipicamente soltanto l’aritmetica in virgola fissa (fixed point). La ragione è che le unità in virgola mobile (floating point) necessitano di una maggiore area di silicio e dissipano una maggiore quantità di potenza.

Un tipo di DSP in virgola fissa è quello della famiglia ADSP-21xx la cui struttura è illustrata in figura 4.1.

3. Code type: molti processori sono in grado di eseguire operazioni in data pipeline. Per controllare questo tipo di operazioni si possono incontrare nelle architetture dei processori due differenti meccanismi: data-stationary e time-stationary coding [29].

4. Formato delle istruzioni: orthogonal e encoded format. Il primo è caratteristico di processori VLIW (very long instruction word) [30] e consiste in campi di controllo fissi che possono essere settati indipendentemente. Il formato encoded, invece, ha la caratteristica che l’interpretazione dei bit di istruzione come campi di controllo è diversa da istruzione a istruzione. La loro interpretazione corretta si deduce dal valore di bit designati nella word dell’istruzione (format bit o opcode bit). Il decoder delle istruzioni del processore si occuperà di trasformare i bit di istruzione in segnali di controllo da inviare alle differenti unità del processore. Quando un processore deve essere usato come embedded, il programma dell’applicazione molto spesso risiede nel chip stesso, quindi, il designer cercherà di restringere quanto più possibile la lunghezza della word dell’istruzione per diminuire così l’area del chip e soprattutto la dissipazione di potenza dovuta agli accessi alla program memory. Per questo motivo il formato di molti DSP è di tipo encoded.

5. Struttura della memoria: la maggior parte dei DSP e degli ASIP hanno una struttura della memoria e dei registri molto efficiente, la quale assicura un’alta velocità di comunicazione tra le differenti unità.

La struttura della memoria è spesso classificata in base all’accessibilità della data e program memory, esistono due architetture principali:

• Architettura Von Neumann: i processori che ne usufruiscono hanno un singolo spazio di memoria, che viene usato per immagazzinare sia dati che programmi. Questa architettura è caratteristica di processori CISC (complex instruction-set computers) di prima generazione.

• Architettura Harvard: è tipica dei processori RISC (reduced instruction-set computers) e dei DSP e si riferisce al fatto che la data e la program memory sono accessibili tramite hardware

separati. Nei RISC questo è implementato separando i bus della data e della program memory, mentre nei DSP i due spazi di memoria sono fisicamente separati. Nel caso della famiglia ADSP- 21xx ogni spazio è dotato del proprio generatore di indirizzi (figura 4.1). In processori per sistemi embedded i due spazi di memoria sono posizionati sul chip in modo da ridurre i tempi di accesso e la dissipazione di potenza nonché il costo del sistema.

6. Struttura dei registri: ogni processore contiene al suo interno un set di registri per la memorizzazione di valori intermedi dei dati. Questi set sono classificati come omogenei oppure eterogenei, i registri appartenenti al primo tipo sono completamente intercambiabili tra di loro, mentre quelli appartenenti al tipo eterogeneo servono a contenere operandi o risultati di istruzioni specifiche.

7. Controllo di flusso: La maggior parte dei DSP e degli ASIP supportano istruzioni di controllo di flusso standard. Comunque, esistono alcuni accorgimenti per migliorare le prestazioni del sistema in presenza di controllo di flusso, come, ad esempio, istruzioni con zero-overhead loop caratterizzate dal fatto che si può eseguire un algoritmo ripetitivo senza spendere cicli separati per il controllo del loop.

Perchè un progetto di tipo embedded ottenga una buona riuscita dipende in larga misura dalle caratteristiche del software di cui viene dotato il sistema. Infatti, per sfruttare al meglio le proprietà architetturali del processore, si deve fare ricorso ad un software il più possibile ottimizzato, in quanto i compilatori disponibili in commercio non sono in grado, per proprio conto, di trarre beneficio dall’architettura del sistema. In più, dal momento che molti processori sono soggetti a un ridotto tempo di vita e presentano anche una elevata specializzazione architetturale, i designer, nel progettarli, sono costretti a trascurare il supporto di un compilatore ad hoc.

Nel paragrafo successivo saranno esposti concetti relativi alla stesura di un software per sistemi embedded e alla sua compilazione, inoltre si illustreranno le modifiche e gli adattamenti eseguiti nel sistema di riconoscimento vocale in oggetto, così da permetterne l’implementazione come software embedded.

Documenti correlati