Simulador Pipeline RISC-V

Visualizador de ejecución multiciclo y riesgos de datos

Configuración del Procesador

¿Cómo funciona la segmentación o Pipeline en RISC-V?

La segmentación de instrucciones (pipelining) es una técnica fundamental en la arquitectura de computadores moderna que permite solapar la ejecución de múltiples instrucciones. En lugar de esperar a que una instrucción complete sus cinco fases funcionales, el procesador inicia la búsqueda de la siguiente instrucción inmediatamente.

Fundamentos de la ejecución segmentada de instrucciones

La segmentación es una técnica de optimización de hardware que solapa la ejecución de instrucciones. En lugar de procesar una sola instrucción de principio a fin (lo que limitaría la frecuencia de reloj al camino del peor caso), el procesador se divide en etapas secuenciales. Cada instrucción pasa exactamente un ciclo de reloj en cada etapa, lo que permite finalizar una nueva instrucción cada ciclo bajo condiciones ideales.

Las cinco etapas clásicas de MIPS/RISC-V

El pipeline académico divide la ejecución en cinco etapas bien diferenciadas: 1) Búsqueda de instrucción (IF - Instruction Fetch), que lee la instrucción de la memoria; 2) Decodificación (ID - Instruction Decode), que lee los registros y extrae los campos; 3) Ejecución (EX - Execute), que realiza operaciones ALU o calcula objetivos de salto; 4) Acceso a memoria (MEM - Memory Access), que lee/escribe datos en RAM; y 5) Escritura (WB - Write-Back), que escribe los resultados de vuelta en el banco de registros.

Riesgos estructurales, de datos y de control

El paralelismo introduce conflictos conocidos como riesgos (hazards). Los riesgos de datos ocurren cuando una instrucción depende del resultado de otra instrucción anterior que aún no ha escrito su valor en el banco de registros (RAW - Read After Write). Los riesgos de control ocurren cuando los saltos condicionales redirigen el flujo de ejecución, haciendo que las instrucciones buscadas en la etapa IF sean inválidas antes de que se decida la dirección en EX.

Mitigación de riesgos: Adelantamiento vs. Atascos

Para resolver los riesgos de datos, los procesadores modernos utilizan el Adelantamiento de datos (forwarding/bypassing), que enruta los valores calculados de los registros de pipeline EX/MEM o MEM/WB directamente a las entradas de la ALU, evitando el banco de registros. Si el adelantamiento es imposible (como en un riesgo Load-Use, donde los datos se leen de la memoria y se necesitan de inmediato), el hardware debe insertar un atasco (stall/bubble), deteniendo las instrucciones dependientes mientras permite avanzar al cargador.