Arquitectura · Sección 8

Pipeline y riesgos

Ejecución solapada de instrucciones, dependencias, detenciones, reenvío y saltos que explican el rendimiento real de una CPU.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene haber comprendido Camino de datos y unidad de control.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Pipeline con Riesgos de datos y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 75 y 120 minutos o divide el laboratorio en dos sesiones.

04 / PREPARA EL LABORATORIO

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.

Ruta guiada · 3 lecciones

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.

Al terminar podrás
  • 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
01
Trabajo solapado

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.

01

El período queda limitado por la etapa más lenta más el registro.

02

Más etapas pueden permitir frecuencia mayor, pero penalizan los riesgos.

03

CPI ideal cercano a 1 no significa un ciclo por instrucción de latencia.

Comprueba lo aprendido · 01

¿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.

02
Dependencias de datos

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.

01

RAW es una dependencia verdadera.

02

Un stall congela parte del pipeline e inserta trabajo vacío.

03

Reordenar instrucciones independientes puede aprovechar la espera.

Comprueba lo aprendido · 02

¿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.

03
Cambios de control

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.

01

Una predicción acertada mantiene ocupado el pipeline.

02

Una equivocación vacía trabajo especulativo.

03

Desenrollar un ciclo reduce ramas, pero aumenta código y registros.

Comprueba lo aprendido · 03

¿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.

Resumen de la sección

Tu recorrido en tres ideas

  1. El pipeline aumenta el flujo, no elimina el trabajo
  2. Forwarding acerca un resultado antes de escribirlo en el registro
  3. Una rama obliga a decidir qué instrucciones eran correctas
PROFUNDIZACIÓN / LABORATORIO GUIADO

Dibuja el pipeline y reduce una burbuja

Integra etapas, dependencias RAW, disponibilidad del dato, forwarding, stalls, flush y CPI.

CASO

Una carga alimenta una suma inmediata y pocas instrucciones después aparece una rama dependiente.

Procedimiento

  1. Dibuja cada instrucción por ciclo y marca productor y consumidor.
  2. Indica en qué etapa existe el dato y qué ruta de forwarding es posible.
  3. 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?

CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Suponer que forwarding elimina todos los stalls.

ERROR 02

Comparar dos programas sin validar que producen el mismo resultado.

DESAFÍO INTEGRADOR

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
Una respuesta sólida:
  • Nombra productor, consumidor y etapa disponible.
  • Distingue forwarding de stall y flush.
  • Calcula ciclos y CPI antes y después.