[Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda flavio<Integer> » 02/04/2017, 11:46

Salve, ho un problema su questa domanda:

Si consideri un microprocessore con architettura RISC, 8 stati di pipeline e un clock di 2.5 Ghz e si supponga di lavorare in condizioni ideali.

-Indicare il tempo di esecuzione (in nanosecondi) di una singola istruzione macchina.

Il mio procedimento è questo:

$ 1/(2.5*10^9) =2.5*10^-9 sec=0.0000000025 sec * 10^9 = 25000000000 $

ma sicuramente mi viene un numero troppo alto. Potreste gentilmente aiutarmi?

Grazie in anticipo.
flavio<Integer>
Junior Member
Junior Member
 
Messaggio: 72 di 168
Iscritto il: 22/04/2016, 10:49

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda vict85 » 02/04/2017, 12:50

Ricontrolla i calcoli: \(1ns = 10^{-9}s\)...

Comunque stai ignorando gli stati di pipeline. Non conosco bene la teoria relativa ai processori, quindi non posso indicarti come usare questo dato.
vict85
Moderatore
Moderatore
 
Messaggio: 9048 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda insideworld » 02/04/2017, 16:48

$1/(2.5 *10^9)=1/(2.5)*10^(-9)s=0.4*10^(-9)s$
sapendo che $10^(-9)$ $s$ $=1$ $ns$
hai $0.4$ $ns$
o se preferisci al posto della $s$ di secondi scrivi:$s=10^9 ns$
il risultato rimane $0.4*10^(-9) *10^9 $ns=$ 0.4$ $ns$
Ciao :D
EDIT formula
Ultima modifica di insideworld il 03/04/2017, 08:30, modificato 1 volta in totale.
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 90 di 306
Iscritto il: 13/01/2017, 15:24

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda probid » 02/04/2017, 20:31

Comunque stai ignorando gli stati di pipeline. Non conosco bene la teoria relativa ai processori, quindi non posso indicarti come usare questo dato.

In condizioni ideali si può parallelizzare l'esecuzione delle istruzioni in maniera tale che nello stesso ciclo di clock in cui l'$i$-esima si trova nello stadio $j$-esimo, la $(i+1)$-esima possa essere elaborata nel $(j-1)$-esimo, evitando di attendere il completamento dell'altra per iniziare ad essere eseguita.

Quindi mentre la prima istruzione richiede necessariamente il tempo per attraversare tutti gli 8 stati ($0.4ns \cdot 8 = 3.2ns$), le successive saranno elaborate contemporaneamente tranne che per l'ultimo stadio, con un tempo aggiuntivo per ciascuna ridotto ad un solo ciclo di clock ($0.4ns$).

Ciao!
probid
New Member
New Member
 
Messaggio: 21 di 82
Iscritto il: 01/10/2010, 19:30

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda apatriarca » 03/04/2017, 11:58

Il tempo di esecuzione di una singola istruzione sarà comunque sempre 8 cicli e rimane tale anche se fa parte di un grosso numero di istruzioni. Questo valore è infatti totalmente indipendente dallo stato delle altre istruzioni. Quello che cambia è il tempo di esecuzioni di \(n\) istruzioni. Detta in altro modo, il fatto di usare una pipeline non cambia la latenza, cioè il tempo che passa tra l'inizio di una istruzione e la sua fine, ma varia il throughput, cioè il numero di istruzioni che il processore è in grado di eseguire in una certa unità di tempo. In effetti la latenza sarà potenzialmente maggiore perché il tempo delle varie fasi della pipeline è uguale alla fase più lenta. In alcuni casi (in cui le istruzioni presentano grande dipendenza tra di esse e/o il processore non è capace di riordinare le istruzioni) una pipeline può quindi ridurre le performance invece di aumentarle.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4583 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda insideworld » 04/04/2017, 08:12

E' come dice @apatriarca, anche io mi ricordo così, era una di quelle domande trabocchetto...
mediamente ed in condizioni ideali si finisce di eseguire una istruzione ogni colpo di clock, però ciascuna istruzione ha impiegato 8 colpi di clock per essere eseguita
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 91 di 306
Iscritto il: 13/01/2017, 15:24

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda Albesa81 » 04/04/2017, 11:07

Nessun trucco, nessun trabocchetto.
Semplicemente, la pipeline riserva uno stadio per ogni istruzione e quindi, in condizioni ideali, ne "porta avanti" da 0 a N nello stesso istante (dove N è il numero massimo di istruzioni gestibili in contemporanea).
Albesa81
Junior Member
Junior Member
 
Messaggio: 97 di 341
Iscritto il: 21/12/2010, 12:02

Re: [Generico] tempo di esecuzione di una istruzione macchina in una pipeline

Messaggioda insideworld » 04/04/2017, 14:00

Il trabocchetto c'è quando non si capisce bene il funzionamento... :-D
se si capisce bene la struttura e il funzionamento della pipeline non ci sono problemi.

IMHO vedendo che (sempre in condizioni ideali ) il processore riesce a smaltire 10 istruzioni in 10 colpi di clock potrebbe venire da pensare che ogni istruzione viene eseguita in un tempo di clock, invece non è così, perchè, come hai detto tu
la pipeline riserva uno stadio per ogni istruzione e quindi, in condizioni ideali, ne "porta avanti" da 0 a N nello stesso istante (dove N è il numero massimo di istruzioni gestibili in contemporanea).

:smt023
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 92 di 306
Iscritto il: 13/01/2017, 15:24


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite