Camino de datos para instrucciones de formato R
En la ejecución de una instrucción tipo R, lo primero que se realiza es la lectura de la instrucción de memoria y se incrementa el PC. Luego se leen dos registros -los operandos- del banco de registros del procesador, para ello el banco de registros recibe como entrada los números de los registros (5 bits). La lectura se realiza en cada flanco de reloj. También recibe como entrada el número del registro donde se realizará la escritura (32 bits). La salida del banco de registros corresponde a los datos leídos de los registros, estos serán las entradas de la ALU (32 bits) que realiza una operación con ellos y dirige el resultado (32 bits) a la entrada de datos del banco de registros para guardarlo.
Algunas instrucciones que forman parte de este grupo son:
- Suma y resta de enteros: para add y sub, en caso de overflow el resultado no se guarda en el registro destino, en cambio addu y subu ignoran el overflow.
- Operaciones de lógica binaria.
- Multiplicación y división entera. Con signo se tienen las instrucciones mult y div, sin signo multu y divu. El resultado de la multiplicación es de 64 bits divididos en 32 bits de bajo orden (LO) y 32 bits de orden alto (HI). En la división el cociente se guarda en los 32 bits LO y el residuo en los HI; y si el divisor es 0 entonces el resultado es impredecible.
- Operaciones de desplazamiento (shift operation) donde se encuentran las instrucciones sll (también usada para la multiplicación binaria), srl y sra si es un desplazamiento en una cantidad constante y los sllv, srlv y srav si son en una cantidad variable, en ellas el bit de signo se desplaza desde la izquierda y se usa el registro Sa. Sll y srl son los registros para el desplazamiento lógico a la derecha o izquierda y sra para el desplazamiento aritmético a la derecha. Sllv, srlv y srav son iguales a los mencionados anteriormente pero un registro se utiliza para la cantidad de cambio.
- Las operaciones de movimiento de data que se tienen en este tipo son: LO→rd (mflo rd), HI→rd (mfhi rd), LO→rs (mtlo rs) y HI→ rs(mthi rs).