Conviene haber comprendido Camino de datos y unidad de control.
Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.
Ubícate antes de avanzar
Al terminar deberías poder relacionar Pipeline con Riesgos de datos y resolver un caso nuevo.
Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.
Las secciones 1–4 se pueden estudiar en papel. Desde RISC-V conviene preparar el simulador Ripes.
Abrir la guía de herramientas →Diagnóstico rápido: ¿cómo se relacionan Pipeline y Riesgos de datos? +
No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.
Aprende el tema paso a paso
Analizarás por qué el solapamiento ideal se rompe y cómo hardware y software reducen detenciones sin cambiar el resultado del programa.
- El pipeline aumenta el flujo, no elimina el trabajo
- Forwarding acerca un resultado antes de escribirlo en el registro
- Una rama obliga a decidir qué instrucciones eran correctas
El pipeline aumenta el flujo, no elimina el trabajo
Registros entre etapas conservan el resultado parcial de varias instrucciones. Tras llenar una línea equilibrada, podría completarse una instrucción por ciclo; el llenado, vaciado y los riesgos elevan el CPI real.
El período queda limitado por la etapa más lenta más el registro.
Más etapas pueden permitir frecuencia mayor, pero penalizan los riesgos.
CPI ideal cercano a 1 no significa un ciclo por instrucción de latencia.
¿Cuántos ciclos ideales tardan 20 instrucciones en un pipeline de cinco etapas?
Mostrar respuesta +
Aproximadamente 20 + 4 = 24 ciclos, suponiendo etapas llenas, sin riesgos ni detenciones.
Forwarding acerca un resultado antes de escribirlo en el registro
Una dependencia RAW aparece cuando una instrucción necesita un valor aún no escrito. El reenvío toma el resultado desde una etapa posterior; un load-use normalmente necesita además una burbuja porque el dato llega más tarde.
RAW es una dependencia verdadera.
Un stall congela parte del pipeline e inserta trabajo vacío.
Reordenar instrucciones independientes puede aprovechar la espera.
¿Por qué lw seguido de una operación dependiente suele necesitar un stall?
Mostrar respuesta +
El dato de lw aparece después de acceder a memoria, demasiado tarde para la etapa Execute inmediata de la siguiente instrucción.
Una rama obliga a decidir qué instrucciones eran correctas
Mientras se resuelve un salto, el procesador ya buscó instrucciones del camino supuesto. Si la elección cambia, debe descartarlas. Predicción, resolución temprana y organización del código reducen la penalización, nunca la vuelven gratuita.
Una predicción acertada mantiene ocupado el pipeline.
Una equivocación vacía trabajo especulativo.
Desenrollar un ciclo reduce ramas, pero aumenta código y registros.
¿Eliminar una rama siempre acelera el programa?
Mostrar respuesta +
No. Puede añadir instrucciones, presión de registros o accesos. La mejora depende de frecuencia, predicción y costo alternativo, por eso se mide.
Tu recorrido en tres ideas
- El pipeline aumenta el flujo, no elimina el trabajo
- Forwarding acerca un resultado antes de escribirlo en el registro
- Una rama obliga a decidir qué instrucciones eran correctas
Dibuja el pipeline y reduce una burbuja
Integra etapas, dependencias RAW, disponibilidad del dato, forwarding, stalls, flush y CPI.
Una carga alimenta una suma inmediata y pocas instrucciones después aparece una rama dependiente.
Procedimiento
- Dibuja cada instrucción por ciclo y marca productor y consumidor.
- Indica en qué etapa existe el dato y qué ruta de forwarding es posible.
- Inserta la detención mínima y prueba un reordenamiento con una instrucción independiente.
Evidencia mínima
- Diagrama antes y después.
- Ciclos, instrucciones y CPI.
- Resultado de registros y memoria idéntico.
Mostrar razonamiento modelo +
Forwarding desde ALU resuelve muchas dependencias, pero load-use suele esperar porque el dato aparece tras memoria. Mover una instrucción independiente al hueco ayuda solo si no cambia excepciones ni dependencias.
Para ir más lejos¿Cómo cambia la penalización si la rama se resuelve una etapa antes?
Comprueba que puedes usarlo
Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.
Suponer que forwarding elimina todos los stalls.
Comparar dos programas sin validar que producen el mismo resultado.
Ahora hazlo sin guía
Analiza una secuencia con RAW y rama; dibuja el pipeline, identifica burbujas y propone una reordenación segura.
Mostrar pauta de corrección +
- Nombra productor, consumidor y etapa disponible.
- Distingue forwarding de stall y flush.
- Calcula ciclos y CPI antes y después.
