Escolar Documentos
Profissional Documentos
Cultura Documentos
NOTA IMPORTANTE:
El objetivo de esta gua es ayudar al alumno a resolver los ejercicios de ILP.
Los ejercicios se han clasificado en tipos con el nico objetivo de facilitar la
explicacin, pero esta clasificacin no existe en los libros de Arquitectura de
Computadores.
o No se presentarn ya que los ejercicios que realizamos tienen ciclos fijos pero se
puede requerir calcularlos.
o Nota: En la arquitectura MIPS, este riesgo no podr darse dado que la escritura
del registro R2 (instruccin SUB) se realizar siempre en algn ciclo posterior
que la escritura del mismo registro de la instruccin ADD.
1.- Sin forwarding: la decodificacin de los operandos se solapa con la fase de escritura
de los registros, es decir, hay que esperar a que la fase de WriteBack escriba en los
registros:
ADD R1, R2,R5
SUB R3, R1, R4
D
F
X
-
M
-
W
D X
ADD r1,R2,R3
Add r3,r4,r5
Add r4,r1,r6
1
F
2
D
F
3
E
D
F
4
M
E
-
5
W
M
D
3
E
-
4
M
-
5
W
D
W
E
D
F
X
D
M
X
W
M W
Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registros
intermedios del Pipeline
o Instrucciones de Memoria: En el siguiente ciclo de la fase de memoria.
LD R1, Dir
SUB R3, R1, R4
D
F
X
D
M
-
W
X M
Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registros
intermedios del Pipeline
o Instrucciones de salto como segunda instruccin: No se decodifica
ADD R1, R2,R5
BNZ R1, SALTO
D
F
X
-
M
D
W
X M
Nota: No se puede hacer en el mismo ciclo ya que en este caso se usan los registros
intermedios del Pipeline
Nota: NO se realiza la decodificacin ya que el resultado del salto se calcula en la fase de
ejecucin y estar disponible al final de esta fase.
N
F
M
W
F(1) D X
M
W
F(1) D X
Cuando hay saltos y se utiliza la tcnica de vaciado del pipe (o congelacin del pipe que
se considera equivalente) la direccin de salto efectiva se calcula en la fase de ejecucin
(al final), por tanto no puedes realizar el fetch de la siguiente instruccin hasta que no
termine la fase de ejecucin. Ten en cuenta que el registro contador de programa no est
en el banco de registro y por tanto no se actualiza en la etapa de W. Con o sin forwarding
se actualiza en la etapa E, una vez que se ha usado la ALU para determinar la direccin
efectiva
Salto Tomado: (en este caso acierta)
SALTO: (1) XXXX
D
X
F(1) D
M
X
W
M W
D
X
M W
F(n) F(1) D X M W
continuacin.
Ms de un ciclo en fase de memoria:
Cuando la fase de Memoria utilice ms de un ciclo slo se considerar la extensin de
esos ciclos para las instrucciones de acceso a memoria (LD ,ST). Ejemplo con 2 ciclos
para acceso a memoria.
1 2 3 4 5
6
7
Ld R1, 0(R2) F D E M M
W
ADD
F D E M W
R3,R4,1
ADD
F D E
M W
R5,R6,2
ST R7,R8,1
F D
E
M
M W
1 2
F D
F
3
E
D
F(I1)
4
M
E
-
5
W
M
D
F
10
W
E
D
F(i1)
M
E
-
W
M
D
F
W
E
D
M
W
D
F
X
F
M
D
W
X M
F1 F2 D X
F1 F2 D
M
X
W
M W
1
F
2
D
F
3
X
-
4
M
-
5
W
D
F
X
-
M
-
W
D
F
10
11
X
D
F
M
X
-
W
M
-
12
13
14
15
16
17
18
W
D
F
X
-
M
-
W
D
-
X
-
M
F
W
D
Nmero de ciclos bucle= Numero de iteraciones * ciclos por iteracin + ciclos extra
Suponiendo nmero de iteraciones=396/4=99
Nmero de ciclos por iteracin = ciclo 1-ciclo16=16
Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=2
Nmero de ciclos del bucle = 99*16+2=1586
Ejercicio 1.a) segmentacin 5 etapas/forwarding/No tomado, M=1 ciclo
Instruccin
LD R1 0(R2)
DADDI R1 R1 #1
SD R1 0(R2)
DADDI R2 R2 #4
DSUB R4 R3 R2
BNEZ R4 Loop
I_next
1
F
2
D
F
3
X
D
F
4
M
-
5
W
X
D
F
M
X
D
F
W
M
X
D
F
W
M
X
-
10
11
12
13
14
W
M
D
F
W
X
F
M
D
W
X
15
Nmero de iteraciones=396/4=99
Nmero de ciclos por iteracin = ciclo 1-ciclo9=9
Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=3
Nmero de ciclos del bucle = 99*9+3=894
Ejercicio 1.b) segmentacin 5 etapas/forwarding/tomado, M=1 ciclo
Instruccin
LD R1 0(R2)
DADDI R1 R1 #1
SD R1 0(R2)
DADDI R2 R2 #4
DSUB R4 R3 R2
BNEZ R4 Loop
I_next
1
F
2
D
F
3
X
D
F
4
M
-
5
W
X
D
F
M
X
D
F
W
M
X
D
F
W
M
X
-
10
11
12
13
W
M
D
F
W
X
D
M
X
W
M
14
15
Nmero de iteraciones=396/4=99
Nmero de ciclos por iteracin = ciclo 1-ciclo8=8
Ciclos extra = ciclos para que la ltima instruccin salga del pipeline (en amarillo)=4
Nmero de ciclos del bucle = 99*8+4=796