Numeri in virgola mobile.
I numeri in virgola mobile, del tipo A x 10<sup>B</sup>, prendono questo nome perché in questa rappresentazione numerica la virgola decimale della prima parte del numero (A, la "mantissa" o "significante") può variare liberamente; può essere posizionata ovunque, a seconda di ciò che meglio si adatta ai calcoli da eseguire, e il valore dell'esponente (B) può essere regolato per mantenere costante l'ordine di grandezza dell'intero numero. Vedere la Figura 1: 1,234 x 10<sup>6</sup> è identico a 1234 x 10<sup>3</sup>. La pratica più diffusa è quella di presentare e memorizzare i numeri in un formato standardizzato con la virgola decimale posizionata dopo la prima cifra diversa da zero.


Per l'ingegnere che lavora con rappresentazioni digitali di segnali del mondo reale, come l'audio di alta qualità, gran parte del valore dell'utilizzo della matematica in virgola mobile per l'elaborazione risiede non solo nella libertà di posizionare la virgola decimale ovunque, ma anche nella varietà di numeri che la notazione può rappresentare. Lo standard più frequentemente utilizzato nell'elaborazione e nel calcolo dei segnali è l'IEEE 754 e, al suo interno, il cosiddetto numero a singola precisione può avere un valore appartenente a un intervallo (decimale) di circa -10³⁹ a +10³⁹. La notazione in virgola mobile è un argomento a sé stante e una ricerca su internet a riguardo, o sull'IEEE 754, fornirà informazioni molto più dettagliate di quanto la maggior parte dei non matematici possa immaginare, tra cui la memorizzazione binaria dei numeri, la gestione dei numeri "speciali", come lo zero, e le distinzioni dettagliate tra aritmetica in virgola mobile, a virgola fissa e intera.


Indipendentemente dalla posizione del numero all'interno dell'intervallo, la porzione della mantissa ha sempre una risoluzione di circa 23 bit, il che la rende adatta a segnalare contenuti come l'audio a 24 bit.


Mantenimento della fedeltà del segnale:
le sfide fondamentali che gli ingegneri devono affrontare nella progettazione di una catena di segnale audio potrebbero non essere cambiate dal passaggio dall'analogico al digitale. I segnali audio hanno un'ampia gamma dinamica e contengono informazioni cruciali per una riproduzione fedele del contenuto, che devono essere preservate a entrambe le estremità della gamma del segnale: i livelli più alti e quelli più bassi. Lungo il percorso del segnale audio, il segnale può essere filtrato, mixato, livellato o amplificato in diverse fasi di elaborazione. Quando la progettazione avveniva nel dominio analogico, il progettista doveva monitorare continuamente i livelli del segnale per assicurarsi che rimanessero al di sopra del rumore di fondo, garantendo al contempo che i picchi del contenuto non si avvicinassero troppo ai livelli massimi degli amplificatori; c'era sempre il rischio di perdere informazioni aggiungendo rumore alle basse frequenze o saturando i picchi.

Utilizzo2Una situazione analoga si presenta quando il segnale viene elaborato nel dominio digitale. I valori dei dati che rappresentano il contenuto devono rientrare in un intervallo definito di numeri per evitare la perdita di informazioni, sia per sovraccarico che per corruzione. Numerose fasi dell'elaborazione del segnale, in particolare il filtraggio, richiedono successive operazioni matematiche – principalmente moltiplicazioni – che possono variare il valore assoluto dei dati in intervalli molto ampi. Quando l'intervallo di numeri è limitato, occorre prestare particolare attenzione affinché la "finestra di variabilità" dei valori relativi – nel caso di contenuti audio, dal più forte al più debole – rimanga entro l'intervallo disponibile; nel dominio analogico, al di sopra del rumore di fondo ma al di sotto della tensione di alimentazione.


Tradizionalmente, i dispositivi di elaborazione del segnale digitale che utilizzano l'aritmetica in virgola mobile sono stati significativamente più costosi delle loro controparti a virgola fissa. Un approccio comune è stato quello di sviluppare una versione iniziale di un progetto di elaborazione del segnale in un ambiente a virgola mobile, consentendo ai valori numerici di assumere liberamente qualsiasi valore all'interno del vasto spazio numerico disponibile. Una volta che gli algoritmi funzionano secondo le specifiche, il prototipo viene convertito in hardware a virgola fissa, più economico. Parte di questo processo prevede l'ispezione dei valori numerici generati dal prodotto funzionante lungo la catena del segnale e l'introduzione di fattori di scala nei punti appropriati per mantenere i valori entro intervalli utilizzabili. È valido anche l'approccio opposto: i responsabili di progetto possono scegliere di implementare i progetti su hardware target più costoso per abbreviare e ridurre i costi del processo di sviluppo.


La tecnologia di processo consente di realizzare unità a virgola mobile (FPU) di dimensioni ridotte.
I due metodi descritti in precedenza si basano sul presupposto che i coprocessori a virgola mobile occupino un'ampia area di silicio, aumentando così il costo dei dispositivi. Tuttavia, le attuali tecnologie di fabbricazione del silicio fanno sì che ciò non sia più necessariamente vero. Ora è possibile combinare un core di microprocessore a 32 bit, del tipo presente nei microcontrollori di fascia media, con un'unità a virgola mobile pienamente conforme allo standard IEEE754 in un'unità economicamente vantaggiosa. Ad esempio, i microcontrollori AVR UC3 di Atmel offrono già prestazioni molto elevate per l'elaborazione del segnale digitale, con supporto sia per l'aritmetica a virgola fissa che per quella intera. L'aggiunta di un'unità a virgola mobile a singola precisione modifica le opzioni a disposizione dei progettisti in diversi modi.

Diagramma di utilizzoIl primo vantaggio, derivante dalle osservazioni sui sistemi numerici a virgola mobile menzionate in precedenza, è l'eliminazione di molte problematiche relative agli intervalli e alle scale numeriche. Attraverso fasi successive del processo, e data la vasta gamma disponibile, il valore del segnale può (in larga misura) assumere qualsiasi valore assoluto richiesto; l'informazione essenziale, ovvero la gamma dinamica del segnale, sarà sempre contenuta nella rappresentazione frazionaria a 24 bit della mantissa del numero a virgola mobile. Ciò elimina la necessità di monitorare costantemente la scala per mantenere il numero entro i limiti.
I vantaggi di un'unità a virgola mobile (FPU) integrata, tuttavia, vanno oltre la semplice libertà di progettazione; le prestazioni sono migliorate perché l'FPU può eseguire operazioni come la moltiplicazione e la divisione di precisione in pochi cicli di clock, operazioni che su un core non potenziato richiederebbero decine di cicli. Nei dispositivi AVR UC3, l'unità a virgola mobile (FPU) esegue la maggior parte delle istruzioni a virgola mobile a 32 bit in un singolo ciclo e un'operazione di moltiplicazione e accumulazione a 32 bit in due cicli di clock, rispetto ai 30-50 cicli necessari per completare la stessa operazione aritmetica senza un'unità FPU. Queste prestazioni migliorate possono essere sfruttate per aumentare notevolmente la quantità di elaborazione del segnale che un microcontrollore può eseguire, oppure possono rappresentare una significativa riduzione della potenza richiesta per ottenere un determinato output.
La combinazione MCU + FPU si traduce in un campo di applicazione più ampio.


Esistono numerosi esempi di sistemi critici in cui il codice deve rispettare scadenze in tempo reale e sfruttare la capacità di eseguire calcoli ad alta precisione in pochi cicli di CPU. La trasmissione di potenza in ambito automobilistico è uno di questi casi: un'unità di gestione del motore deve gestire input provenienti da sensori con intervalli dinamici molto ampi, ma il tempo disponibile per completare ogni ciclo di calcolo è interamente determinato dalla velocità di rotazione del motore. Vincoli simili si applicano a sistemi come l'ABS (sistema antibloccaggio dei freni) o le sospensioni attive. Nel controllo preciso dei motori elettrici, la capacità di gestire ampi intervalli di numeri è altrettanto preziosa perché gli algoritmi richiedono l'applicazione sequenziale di numerose trasformazioni complesse senza perdita di dati dovuta a errori; tuttavia, anche in questo caso, il tempo di calcolo è determinato dal periodo di rotazione del motore. In questi casi, sia la precisione che la velocità rappresentano vantaggi significativi. L'elaborazione del segnale digitale tramite FFT (Trasformata di Fourier Veloce) è un esempio familiare per molti ingegneri che si trovano ad affrontare problemi che possono essere risolti grazie all'accelerazione fornita dai calcoli matematici in virgola mobile. In un altro ambito applicativo, quello dei sistemi grafici e di editing, la qualità visiva dei risultati dipende dai calcoli geometrici precisi che consentono la visualizzazione di texture grafiche e caratteri stampati. In questo caso, potrebbero esserci meno limitazioni in tempo reale, ma le prestazioni e l'efficienza del sistema riflettono direttamente la capacità dell'unità a virgola mobile (FPU) di eseguire i calcoli in un minor numero di cicli. Ciascuno di questi settori ha tradizionalmente avuto accesso ai calcoli in virgola mobile, ma i progettisti che lavorano con i core dei microcontrollori, in generale, non ne hanno avuto la possibilità.

Utilizzo3La disponibilità dell'aritmetica in virgola mobile in questo tipo di processore modifica le dinamiche di selezione dei dispositivi per molte tipologie di progetti, in particolare nei dispositivi audio di consumo. La catena del segnale audio dimostra chiaramente il vantaggio offerto da un'architettura in virgola mobile ai progettisti. In molti casi, probabilmente nella maggior parte, la sorgente del segnale sarà una rappresentazione digitale che viene convertita nel formato numerico richiesto in pochi cicli. Al termine della catena del segnale, questo viene riconvertito nel dominio analogico del mondo reale; dopo la normalizzazione (un'operazione eseguita in un singolo ciclo), un convertitore D/A viene applicato ai numeri frazionari rappresentati nella mantissa, che contiene tutti i dati necessari. Qualsiasi deviazione che il segnale possa aver subito nell'intero intervallo dei numeri in virgola mobile viene semplicemente scartata; l'esponente non viene utilizzato e la massima precisione viene mantenuta durante l'intero processo.


I progettisti che lavorano sull'acquisizione e l'elaborazione del segnale in altri contesti, come sistemi industriali o strumentazione medica, e che necessitano di eseguire più fasi di elaborazione sui dati e di un'ampia gamma dinamica, scopriranno che l'integrazione di un core di microcontrollore generico con un'unità a virgola mobile (FPU) amplia le loro opzioni. In precedenza, un percorso del segnale con elaborazione in virgola mobile implicava inevitabilmente la combinazione di un microprocessore o microcontrollore con un DSP dedicato, con i relativi costi, dimensioni e consumo energetico. L'opzione di basare l'intero progetto su un DSP veniva spesso scartata perché il DSP non possedeva le capacità necessarie per gestire le funzioni di controllo richieste dal progetto.


Conclusione:
i mercati tipicamente associati ai microcontrollori, dove fattori come la facilità di connessione a segnali ed eventi esterni, il basso costo e il consumo energetico limitato sono stati predominanti, non avevano in precedenza accesso ai calcoli matematici in virgola mobile.


Il termine FPU (Floating Point Unit) ha in passato evocato connotazioni come complessità, fascia alta e spesso sistemi basati su DSP (Digital Signal Processor). In realtà, ora che i progressi nella tecnologia di processo hanno reso le FPU accessibili a una gamma molto più ampia di progetti, gli ingegneri possono sfruttare la precisione computazionale, l'ampia gamma dinamica e la semplificazione della programmazione offerte dai calcoli matematici in virgola mobile.

Autore: Haakon Skar, Direttore marketing AVR, Atmel.

Maggiori informazioni o un preventivo