Che cos'è un'unità a virgola mobile?
Un'unità a virgola mobile è un blocco funzionale di un processore per computer che esegue operazioni aritmetiche in virgola mobile. Conosciuto anche con l'acronimo FPU, un'unità a virgola mobile può essere anche un coprocessore separato fisicamente. 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 le funzioni aritmetiche in virgola mobile trigonometriche, logaritmiche e di base. Utilizza inoltre 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à a virgola mobile. La maggior parte dei microprocessori prodotti da Intel Corporation e Motorola Incorporated prima della fine degli anni '80 non ne include uno, ad esempio. Molti processori RISC (Reduced Instruction Set Computing) e controller integrati non ne hanno nemmeno uno. Questi chip includono un'unità logica aritmetica (ALU) per eseguire l'aritmetica di numeri interi di base e le funzioni logiche bit a bit. La matematica a 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 altri tipi di dati. Definisce diversi tipi di dati interi e in virgola mobile, ciascuno con la propria precisione, rappresentazione e intervallo numerico. Definisce inoltre molte operazioni aritmetiche, metodi di arrotondamento e gestione delle eccezioni come una divisione per zero. Sia che la matematica sia eseguita da un'unità a virgola mobile o meno, lo standard IEEE a virgola mobile garantisce risultati identici.
Oltre ad addizione, sottrazione, moltiplicazione e divisione, un'unità a virgola mobile può eseguire molte altre operazioni. Questi includono spesso il ridimensionamento, la radice quadrata e i calcoli logaritmici. Di solito 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 archiviati direttamente nella memoria principale del processore.
La FPU di un processore grafico può includere funzioni spesso ripetute comuni alla rotazione o all'animazione di oggetti tridimensionali. Molti controller integrati 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 efficaci nelle trasformazioni veloci di Fourier (FFT), ad esempio. I processori di crittografia spesso includono una FPU per il calcolo ad alta velocità di algoritmi di crittografia pesanti per la matematica. I processori multi-core generali possono anche includere un'unità a virgola mobile per ciascun core del processore normale.