Está en la página 1de 2

Para el procesador multiciclo, se modifica la unidad de registros como se indica en el diagrama.

Para realizar la instrucción: R[rd] = R[rs] – R[rt] + R[rd]; PC = PC + 4;


a) Indicar los valores de las señales de control, separadas por ciclo. Determinar el número de
ciclos para ejecutar la instrucción. 35 puntos
b) Indicar las transferencias físicas, separadas por ciclos. 35 puntos
c) Escribir el microprograma, con la notación vista en clases, indicando todas las líneas que
ejecutan la instrucción. 30 puntos.
SrcB
SrcRb RegDst RegW SrcA WEA WEB
r
busW

1
rt rs
0 Ra WE A
5
32
0 1 Rb 0
5
rd 2 rt 1 busA
5
rs 2 Rw
rd 0 RW 32
Registros 32
0
32-bit busB B
32 1
busW
busW
Solución

Transferencias físicas.

IR = MemInst[PC], PC = PC+4; Unidad Instrucción.


A = R[rs]; B= R[rt] Unidad Registros. Lectura.
S = sub( A , B); Unidad Operaciones.
A = S; B = R[rd] Unidad Registros. Lectura.
S = add( A , B); Unidad Operaciones.
R[rd] = S. Unidad Registros. Escritura.

Señales de control.

nPC_sel = “+4”, WEPC , WEIR ; Unidad Instrucción.


SrcRb = 0, SrcA = 0, SrcB = 0,WEA, WEB; Unidad Registros. Lectura.
AluSrc = "busB", AluCtr = “sub”,WES ; Unidad Operaciones.
SrcRb = 2, SrcA = 1, SrcB = 0,WEA, WEB ;Unidad Registros. Lectura
AluSrc = "busB", AluCtr = “add”,WES ; Unidad Operaciones.
RegDst = "rd", Memtoreg = "alu", RegWr. Unidad Registros. Escritura
Microprograma
fetch: IR = MemInst[PC], PC = PC+4; µPC = µPC +1;
A=R[rs], B=R[rt],if(COp == J) PC = (PC)&0xF0000000+add_26*4, µPC = T0[OP];
…..
…..
r: S = sub(A, B), µPC = µPC +1;
A=S, B=R[rd], µPC = µPC +1;
S = add(A, B), µPC = µPC +1;
R[rd] = S, µPC = 0.

También podría gustarte