Che cos’è un’unità in virgola mobile?

Un’unità in virgola mobile è un blocco funzionale di un processore di computer che esegue operazioni aritmetiche in virgola mobile. Conosciuta anche con l’acronimo FPU, un’unità a virgola mobile può essere anche un coprocessore fisicamente separato. Una FPU di solito accede ai dati tramite le stesse modalità di indirizzamento del resto del processore e generalmente include i propri registri. Un processore utilizza una FPU per calcolare funzioni aritmetiche trigonometriche, logaritmiche e di base in virgola mobile. Utilizza anche una FPU per caricare, archiviare e confrontare i numeri in diversi tipi di dati interi e in virgola mobile.

Molti processori non includono un’unità in virgola mobile. La maggior parte dei microprocessori prodotti da Intel Corporation e Motorola Incorporated prima della fine degli anni ‘1980 non ne include uno, ad esempio. Anche molti processori RISC (Reduced Instruction Set Computing) e controller integrati non ne hanno uno. Questi chip includono un’unità logica aritmetica (ALU) per eseguire funzioni aritmetiche intere di base e logiche bit a bit. Tuttavia, la matematica in virgola mobile è gestita da un coprocessore esterno o da una libreria software.

La maggior parte dei processori e dei sistemi software implementa lo standard IEEE (Institute of Electrical and Electronics Engineers) per le operazioni in virgola mobile. Lo standard IEEE-754 è stato rilasciato per la prima volta nel 1985 e ampliato nel 2008 per includere tipi di dati aggiuntivi. Definisce diversi tipi di dati interi e in virgola mobile, ciascuno con la propria precisione, rappresentazione e intervallo numerico. Definisce anche molte operazioni aritmetiche, metodi di arrotondamento e gestione delle eccezioni come una divisione per zero. Indipendentemente dal fatto che i calcoli vengano eseguiti da un’unità in virgola mobile o meno, lo standard in virgola mobile IEEE garantisce risultati identici.

Oltre ad addizione, sottrazione, moltiplicazione e divisione, un’unità in virgola mobile può eseguire molte altre operazioni. Questi spesso includono il ridimensionamento, la radice quadrata e i calcoli logaritmici. Solitamente vengono fornite anche funzioni trigonometriche seno, coseno e tangente parziale. I numeri interi e in virgola mobile possono essere confrontati con la FPU e convertiti da una precisione all’altra. Possono anche essere arrotondati in entrambe le direzioni e memorizzati direttamente nella memoria principale del processore.

L’FPU di un processore grafico può includere funzioni spesso ripetute comuni alla rotazione o all’animazione di oggetti tridimensionali. Molti controller embedded sono progettati con processori ottimizzati per l’elaborazione del segnale digitale (DSP). Questi possono essere utilizzati in applicazioni audio e di comunicazione e possono contenere FPU, che sono utili per le trasformate di Fourier veloci (FFT), ad esempio. I processori di crittografia spesso includono una FPU per il calcolo ad alta velocità di algoritmi di crittografia pesanti. I processori multi-core generici possono anche includere un’unità in virgola mobile per ogni normale core del processore.