Ciao Mondo 3!

Unità Floating Point

 

10

 

In figura è visibile un diagramma semplificato dell’unità floating point (FP) contenuta in un modulo Bulldozer. Essa è organizzata come un coprocessore esterno, che riceve le istruzioni da eseguire dall’esterno e riporta i risultati indietro ai core richiedenti. Il collegamento tra unità FP e core interi è bidirezionale: riceve istruzioni e dati dai core interi, riporta un segnale di completamento indietro (il ritiro delle istruzioni è comunque gestito dai core interi), è collegato con due bus a 64 bit ai core interi per l’esecuzione di istruzioni di conversione da interi a numeri FP e viceversa ed è collegato alle unità di lettura e scrittura dei due core interi per l’esecuzione delle operazioni di memoria.

E’ composta da uno scheduler unificato, che può ricevere fino a 4 istruzioni per ciclo di clock a cicli alterni dalle due unità intere e mandare in esecuzione fino a 4 istruzioni per ciclo di clock, anche miscelando quelle di entrambi i thread, a 80/128 bit. Lo scheduler è completamente guidato dai dati: non appena i dati e l’unità di esecuzione necessaria sono liberi, l’istruzione è mandata in esecuzione, facendo attenzione ad essere equo tra i due thread.

Le unità di esecuzione sono 4 e sono in grado di eseguire 2 operazioni FMAC (Fused Multiply Accumulate, ossia una moltiplicazione e un accumulo fusi assieme, dunque un calcolo del tipo d=a+b*c) FP e 2 operazioni IMAC (Integer Fused Multiply Accumulate, come la FMAC ma su numeri interi) per ciclo. Le operazioni x87 sono gestite dalle FMAC. Le divisioni e le radici quadrate sono gestite sempre dalle FMAC. Alcune operazioni particolari sono gestite dalle IMAC, come quelle di permutazione, quelle di memoria da una delle due pipeline IMAC e i movimenti tra registri sono per la maggior parte eseguiti al volo senza occupare unità di esecuzione. Grazie a un brevetto depositato da AMD, le unità FMAC e IMAC sono in grado di eseguire anche addizioni o moltiplicazioni semplici con lo stesso circuito, senza duplicazioni inutili. Le unità sono a 128 bit e possono essere unite insieme per effettuare operazioni a 256 bit.

 

Pubblicità


Corsair

Articoli Correlati - Sponsored Ads