Apuntes de Verilog
Tema 8. Arquitectura de Ordenadores
Procesador MIPS para instrucciones tipo R
Procesador MIPS para instrucciones tipo R
5 de octubre 2025
Continuamos profundizando en el apasionante mundo del procesador MIPS, ahora con un diseño mejorado para ejecutar instrucciones tipo R.
Antes de ver el datapath un poco de teoría.
En un procesador MIPS, una instrucción R-type (acrónimo de Register-type) es un tipo de instrucción cuyo formato está diseñado para operaciones aritméticas y lógicas que trabajan únicamente con registros.
Características principales:
Usa tres registros:
rs → registro fuente 1
rt → registro fuente 2
rd → registro destino (donde se guarda el resultado)
Formato de 32 bits:
| op (6) | rs (5) | rt (5) | rd (5) | shamt (5) | funct (6) |
op: campo de operación (opcode), normalmente 000000 para todas las R-type.
rs: primer operando fuente.
rt: segundo operando fuente.
rd: registro destino.
shamt: shift amount (número de bits de desplazamiento, usado en shift).
funct: función que especifica la operación exacta (add, sub, and, or, etc.).
Ejemplos de instrucciones R-type en MIPS:
add $s1, $s2, $s3 → $s1 = $s2 + $s3
sub $t0, $t1, $t2 → $t0 = $t1 - $t2
and $a0, $a1, $a2 → $a0 = $a1 AND $a2
sll $t0, $t1, 2 → $t0 = $t1 << 2
En resumen:
Las R-type son las instrucciones que realizan operaciones aritméticas, lógicas o de desplazamiento entre registros, y su opcode es siempre 000000; la operación exacta la define el campo funct.
Partiendo del datapath básico que vimos en el Tema 7, vamos a añadir tres multiplexores: dos de 32 bits de ancho y uno de 5 bits de ancho.
El primer multiplexor llamado SCR_B_MUX permite a la ALU operar con dos registros (para instrucciones tipo-R) o con un registro y la constante IMM si operamos con instrucciones tipo-I.
El multiplexor RES_MUX selecciona el dato a introducir en el Register File entre el resultado de la ALU o el dato almacenado en el módulo Data Memory.
Por último el multiplexor WA_MUX de 5 bits, permite seleccionar diferentes direcciones según el tipo de instrucción.
El Controlador también se ha modificado para generar las señales de control alu_src, reg_dst y mem_to_reg para los tres multiplexores que hemos añadido.
La siguiente imagen muestra el datapath completo para procesar instrucciones tipo-R.
Para comprobar el funcionamiento del procesador, cargamos unas instrucciones de prueba en el módulo Instruction Memory.
Ejecutamos la simulación y verificamos que el procesador se comporta como se espera.
MIPS32 Single-Cycle Processor, thanks to Mr Moamen Wael for sharing!
MIPS Converter, herramienta online para codificar instrucciones
En este blog:
Puedes descargar las fuentes aquí abajo.