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
Acomo 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+4comprobar que la ALU recive dichos operandos
- Ciclo ID, para calcular
PC+inm<<2para calcular el salto condicional
- Ciclo EX, ALUOp toma este valor para las instrucciones
lwysw. Debemos buscar si los operandos de la alu sonAyext(inm)calcular el offset de la dirección (ejm:4($s0))
Resta (01)ALUOp toma este valor únicamente cuando se ejecuta la instrucciónbeqen 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 operarAyB
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-16se concatenan al salir del Instruction register
j
Tipo I (Ciclos posibles: EX, MEM o WB)Miramos si se hace uso de los bits15-0como 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=1yMemAReg=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 operandosAyBe son usados activamente
- Aritmético-lógicas (Ciclo EX) → Los operandos de la ALU son
AyB
- Aritmético-lógicas (Ciclo WB) → La señal
EscrReg=1yMemAReg=0
