Cheatsheet Camino de Datos
Identificar ciclo (IF, ID, EX, MEM, WB)
IF
- Instruction register →
EscrIR
=1
ID
- ALU →
PC
+inm << 2
EX
- No interviene la memoria
- ALU con
A
como primer operando
MEM
IoD
=1
- Cuando interviene la memoria
LeerMem
||EscrMem
WB
EscrReg
=1
Identificar valor de ALUOp
Suma (00
)ALUOp puede tomar este valor en los siguientes casos:
- Ciclo IF, para calcular
PC
+4
comprobar que la ALU recive dichos operandos
- Ciclo ID, para calcular
PC
+inm
<<2
para calcular el salto condicional
- Ciclo EX, ALUOp toma este valor para las instrucciones
lw
ysw
. Debemos buscar si los operandos de la alu sonA
yext(inm)
calcular el offset de la dirección (ejm:4($s0)
)
Resta (01
)ALUOp toma este valor únicamente cuando se ejecuta la instrucciónbeq
en su ciclo EX para restar A menos B
Operación aritmético-lógica (10
)ALUOp solo toma este valor cuando se va a ejecutar una instrucción aritmético-lógica en su ciclo EX para operarA
yB
Identificar instrucción
Lo primero es identificar el formato de instrucción y el ciclo
Tipo J (Ciclos posibles: EX)Es facil, solo miramos si los bits25-16
se concatenan al salir del Instruction register
j
Tipo I (Ciclos posibles: EX, MEM o WB)Miramos si se hace uso de los bits15-0
como un unico valor en algúna unidad del camino de datos o si se accede a memoria o si se realiza el cálculo del desplazamientoA
+ext(inm)
lw
(Ciclo MEM) → La señalLeerMem
=1
- Almacenar resultado (
lw
) (Ciclo WB) → Las señalesEscrReg
=1
yMemAReg
=1
sw
(Ciclo MEM) → La señalEscrMem
=1
- Salto incondicional (Ciclo EX)
beq
→ La señalFuentePC
=00
Tipo R (Ciclos posibles: EX y WB)Miramos si los operandosA
yB
e son usados activamente
- Aritmético-lógicas (Ciclo EX) → Los operandos de la ALU son
A
yB
- Aritmético-lógicas (Ciclo WB) → La señal
EscrReg
=1
yMemAReg
=0