Web Analytics
Privacy Policy Cookie Policy Terms and Conditions Floating Point Unit - Wikipedia

Floating Point Unit

Da Wikipedia, l'enciclopedia libera.

Esempio di FPU
Ingrandisci
Esempio di FPU

La Floating Point Unit (FPU, unità di calcolo in virgola mobile) è una parte della CPU specializzata nello svolgere i calcoli in virgola mobile. La maggior parte delle operazioni svolte sono semplice aritmetica (come addizioni o moltiplicazioni), ma alcuni sistemi sono in grado di svolgere calcoli esponenziali o trigonometrici (come estrazioni di radice o il calcolo del seno).

In molte architetture di personal computer e sistemi superiori la FPU è un componente integrato direttamente del microprocessore, tuttavia molti microcontrollori per applicazioni embedded non implementano nativamente l'unità FPU.

In passato l'implementazione della FPU veniva ottenuta tramite un coprocessore che veniva installato sulla scheda madre del computer. Nei microcomputer l'unità FPU poteva essere un'intera scheda di espansione e nei primi computer poteva consistere in un'intero armadio da aggiungere al sistema.

Non tutte le architetture implementano la FPU ma questo non vieta l'esecuzione di operazioni in virgola mobile dato che queste vengono eseguite tramite emulazione. L'emulazione permette di semplificare il progetto del processore riducendo i transistor e quindi il costo del sistema. Di contro l'emulazione è molto più lenta dell'esecuzione in hardware e quindi penalizza notevolmente l'esecuzione. L'emulazione più venir eseguita a livello di microcodice, di sistema operativo o di programma a livello utente.

Molte microarchitetture di processori separano fisicamente l'esecuzione in virgola mobile dall'esecuzione dei numeri interi. Questa separazione è dovuta alla presenza id istruzioni apposite per i numeri in virgola mobile e di registri appositi per ospitare i numeri in virgola mobile. Questo deriva da scelte di progettazione della architetture. Per esempio l'architettura x86 ha registri, istruzioni e potenzialmente anche un clock separato per la FPU dato che questa inizialmente era un componente esterno al processore e quindi questa era la soluzione più logica.

Le operazioni in virgola mobile spesso vengono eseguite tramite pipeline. Nelle prime architetture superscalari non in grado di eseguire istruzioni fuori ordine le operazioni in virgola mobile e le operazioni sugli interi venivano immesse nella stessa pipeline e separate solamente nella fasi esecuzione vera e propria. I moderni processori spesso implementano più unità di calcolo in virgola mobile per incrementare le prestazioni.

Spesso le FPU sono specializzate, le unità vengono divise in operazioni veloci o lente. Le operazioni veloci (tipo somme e moltiplicazioni) vengono eseguite ad un'unità specializzata mentre le operazioni più lente (come divisioni, radici quadrate, ecc...) vengono eseguite da un'altra unità.

In molte architetture le funzionali FPU sono fornite dall'unità che tratta anche le istruzioni multimediali SIMD.

[modifica] FPPU aggiuntive

Dall'inizio degli anni ottanta fino a metà degli anni novanta i personal computer IBM PC e compatibili consentivano l'aggiunta della FPU tramite coprocessore opzionale. Questo permetteva di contenere il costo ma di non limitare le prestazioni dei calcolo scientifici.

Gli IBM PC XT e i compatibili basati su Intel 8088 e 8086 avevano un socket opzionale per il coprocessore 8087. Gli AT su Intel 80286 e Intel 80386 aveva il socket per i coprocessori 80287 e 80387.

Con l'arrivo dei processori Intel 80486 l'unità di calcolo in virgola mobile venne integrata nel processore e quindi il socket sparì dalle schede madri. Gli unici computer con socket erano quelli basati su 80486SX un processore ridotto e non dotato di FPU. Visto il ridotto mercato delle FPU per 80486 in realtà Intel non sviluppo mai un vero coprocessore matematico per 80486. L'Intel 80487 in realtà era un processore 80486 completo che una volta installato disabilita completamente l'altro processore.

Oltre a Intel molte altre ditte svilupparono FPU per i processori x86. Tra le ditte si segnalano Cyrix che sviluppo FPU ad alte prestazioni totalmente compatibili X86 e Weitek che sviluppo FPU moto potenti ma non totalmente compatibili con le FPU X86.

Le FPU esterne non sono una caratteristica solo dei processori Intel, molte altre famiglie scelsero di rendere la FPU esterne nei primo modelli di processore. La famiglia più nota e la Motorola 68000 che fu utilizzata da macchine prodotte da Sun Microsystems, Apple Computer, Commodore, Atari, e altri. Spesso la FPU era presente di serie nella macchine di fascia alta mentre nelle macchine di fascia bassa era assente anche il socket. Motorola non produsse una FPU per ogni famiglia ma produsse due FPU generiche, la Motorola 68881 e 68882 che potevano venir controllate dai processori Motorola 68020 e 68030. Dal 68040 la FPU fu integrata nel processore sebbene esistessero delle versioni a basso costo senza FPU che potevano gestire quelle esterne.

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu