PDA

View Full Version : FPU con esecuzione fuori ordine


antoniod82
28-08-2008, 14:02
ciao,

Per il mio esame di architetura dei calcolatori mi è stata assegnata la discussione di un paper che tratta un processore in grado di svolgere operazioni in virgola mobile, con la possibilità di eseguire operazioni fuori ordine.

Vi linko di seguito il testo integrale del paper dove ho evidenziato le parti relative ai miei seguenti dubbi dubbi:

http://www.myupload.dk/showfile/83632de722.pdf

1.è scritto che il processore utilizza "four compliant rounding mode", credo si tratti del parallel rounding algorithm di cui parla a pg 3. Sapete in cosa consiste quest'algoritmo?

2.il coprocessore sotto esame è a 32 bits: s'intende che le istruzioni che tratta (codice operativo + operando) siano lunghe 32 bits o che generi indirizzi di memoria lunghi 32 bits?

3. L'unità aritmetica del coprocessore lavora su valori in virgola mobile a doppia precisione.
La differenza tra virgola mobile a precisione doppia/singola è solo nel numero di cifre utilizzate per rappresentare la parte decimale?
Per il processore in esame mi pare di capire che i registri del register file hanno 67 bits: 64 per i dati + 3 per gestire le eccezioni , vi pare plausible o ho equivocato?? (nelle architetture studiate nn avevo mai letto di una cosa del genere...)

4.La tecnica della previsione delle eccezioni rende inutile l'uso del reorder buffer: mi spieghereste in parole povere, secondo voi questo come può accadere?



grazie, ciao

antoniod82
29-08-2008, 13:01
up: se nessuno di voi si cimenta , mi deludete....

Speedy L\'originale
29-08-2008, 17:39
Qua secondo me il 90% delle persona ke passa in questa sezione conosce + o - meno la parte pratica dei processori, io sono uno di quelli, ma ke conosce effettivamnete come funziona il processore qualcuno c'è e ogni tanto salta fuori, ma sono molto pochi.

T'invito a leggere tra i commenti delle prove dei processori ogni tanto salta fuori qualcuno ke se ne intende parecchio.

antoniod82
29-08-2008, 19:58
ti ringrazio per la diritta, proverò a contattare privamente questi utenti.

ciao

Mason
29-08-2008, 23:00
ricordi eoni fa, ti conviene chiedere in programmazione

antoniod82
06-09-2008, 23:46
questa risposta mi è stata data in privato dall'utente Fire Hurricane attualmente sospeso:

2 ) che tratta istruzioni di 32bit, quello della memoria penso sia legato ad una questione di SW.

3) I calcoli in virgola mobile sono svolti dalla FPU (Floating Point Unit) e possono essere di 4 tipi di arrotondamento secondo lo standard IEEE 754:
a precisione singola (32 bit)
a precisione doppia (64 bit)
a precisione singola estesa (≥ 43 bit)
a precisione doppia estesa (≥ 79 bit)

I calcoli in virgola mobile sono il metodo usato dai processori per elaborazione dei dati e rappresentare numeri razionali (e approssimare numeri reali) in modo simile alla notazione scientifica, però in base 2.
Basti sapere questo senza spiegare il campo di mantissa, il campo di esponente e il segno.

Purtroppo per spiegare la precisione doppia bisognerebbe spiegare la precisione singola ma hai detto di volere risposte brevi

Ricapitolando: la precisione doppia è un metodo di arrotondamento per la visualizzazione di numeri in virgola mobile (utilizzati dalla cpu per compiere operazioni) di lunghezza doppia rispetto a quella singola e pari a 64bit

4) questa non la so di preciso però solo guardando i termini te lo posso spiegare almeno terra terra :

il reorder buffer, penso sia un buffer. Sai a cosa serve un buffer no ? funziona come un imbuto trasforma un flusso non continuo in uno continuo e costante senza interruzioni. Una previsioni delle eccezzioni quindi le interruzioni dovute ad applicazioni o ad un segnale SW quindi dovrebbe permettere di saltare all'istruzione successiva in tempo da evitare l'eccezione.


1) BOH ! Sinceramente forse so di che parli ma mi sembra na vaccata.

colgo l'occasione per ringraziarlo.

greeneye
07-09-2008, 01:08
Prendi tutto con beneficio dell'inventario...non mastico di queste cose da 15 anni.


ciao,
Per il mio esame di architetura dei calcolatori mi è stata assegnata la discussione di un paper che tratta un processore in grado di svolgere operazioni in virgola mobile, con la possibilità di eseguire operazioni fuori ordine.

Vi linko di seguito il testo integrale del paper dove ho evidenziato le parti relative ai miei seguenti dubbi dubbi:

http://www.myupload.dk/showfile/83632de722.pdf

1.è scritto che il processore utilizza "four compliant rounding mode", credo si tratti del parallel rounding algorithm di cui parla a pg 3. Sapete in cosa consiste quest'algoritmo?


No non c'entra nulla.
Semplicemente vuole dire che il coprocessore supporta i 4 tipi di 'arrotondamento' previsti dalla ieee754.
E' come al solito il problema di rappresentare con una entità continua con un numero che è necessariamente finito.


2.il coprocessore sotto esame è a 32 bits: s'intende che le istruzioni che tratta (codice operativo + operando) siano lunghe 32 bits o che generi indirizzi di memoria lunghi 32 bits?

Penso nessuna delle due proposte:
1) l'operando è 64 bit, quindi la lunghezza di codice op. + operando è >64bit
2) un coprocessore _non_ ha a che fare con la memoria

Semplicemente penso che l'interfaccia fisica con la cpu sia a 32bit


3. L'unità aritmetica del coprocessore lavora su valori in virgola mobile a doppia precisione.
La differenza tra virgola mobile a precisione doppia/singola è solo nel numero di cifre utilizzate per rappresentare la parte decimale?
Per il processore in esame mi pare di capire che i registri del register file hanno 67 bits: 64 per i dati + 3 per gestire le eccezioni , vi pare plausible o ho equivocato?? (nelle architetture studiate nn avevo mai letto di una cosa del genere...)


No, cambia anche la dimensione dell'esponente.

Questo è un fp a doppia precisione:
http://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/IEEE_754_Double_Floating_Point_Format.svg/618px-IEEE_754_Double_Floating_Point_Format.svg.png

E questo è uno a singola
http://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/IEEE_754_Single_Floating_Point_Format.svg/618px-IEEE_754_Single_Floating_Point_Format.svg.png


Il testo spiega chiaramente che cosa significano i tre bit in più: "the extra three bits stand for that operand is zero, operand in infinite ad operand is NaN" (NAN = Not A Number)
E continua: "These bits are set or unset in the last setup of arithmetic computation..."



4.La tecnica della previsione delle eccezioni rende inutile l'uso del reorder buffer: mi spieghereste in parole povere, secondo voi questo come può accadere?

grazie, ciao
Penso che tutto il nocciolo è che si tratta di un processore estremamente semplice.
Non è un out order sofisticato...in fin dei conti si accontenta di non farti aspettare una radice quadrata quando devi fare delle somme...

Immagina di essere un capocantiere e di avere 3 operai.

Puoi fare una lista dei lavori che gli devi far fare, ottimizzarla e alla fine passare i compiti ai poveretti o iniziare a dare un compito al primo e poi vedere se il secondo compito è assegnabile ad uno dei rimanenti o se ti tocca aspettare che il primo finisca.

In questo secondo caso (che è anche quello del processore) l'inizio delle istruzioni è 'in-order' mentre vengono completate 'out-order'.

esempio:

sequenza:
i1: load 2,2.54 [2 cicli]
i2: div 9,10,11 [18 cicli]
i3: add 6,7,8 [3 cicli]
i4: add 11,2,1 [3 cicli]
i5
i6
...

Esecuzione
ciclo 1:
i1 (blocco registro 2)

ciclo 2:
i2 (blocco registri 9,10 e 11)

ciclo 3:
termina i1 (il registro 2 torna disponibile)
i3 (blocco registri 6,7 e 8)

ciclo 4:
i4-----stallo devo accedere al registro 11 bloccato->blocco l'arrivo di nuove istruzioni fino alla risoluzione del problema

....

ciclo 6:
termina i3 (i registri 6,7 e 8 tornano disponibili)

.....

ciclo 20:
termina i2 (i registri 9,10 e 11 tornano disponibili)
riprendo l'esecuzione di i4
eseguo se possibile i5




Ciao
Giovanni

greeneye
09-09-2008, 15:23
Dimenticavo...il coprocessore va in stallo (e quindi blocca l'afflusso di istruzioni dalla cpu) anche quando deve eseguire una operazione e la relativa pipeline è occupata.