Fundamentos de Arquitectura CPU: Pipeline, Caché y Optimización del Rendimiento
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,31 KB
Arquitectura Pipeline: Propiedades y Desafíos
Propiedades Fundamentales del Pipeline
El pipeline (tubería) permite el traslapo en la ejecución de instrucciones para lograr una instrucción por ciclo (IPC), aunque la latencia individual de la instrucción no se reduce. Un pipeline tiene $N$ etapas y mejora significativamente el funcionamiento de la CPU.
Modificaciones y Optimización del Pipeline
Las modificaciones comunes para optimizar el pipeline incluyen:
- Aumento del número de etapas (esta acción está limitada).
- Implementación de ranuras de retardo (delay slots).
- Optimización de ramificación (predicción de saltos).
Problemas y Azares (Hazards) en Pipelines
Los pipelines enfrentan limitaciones en el número de etapas deseables. Existen azares de datos y azares de control. Estos problemas se manifiestan como:
- Burbujas (Bubbles): Tiempos muertos.
- Problemas de instrucciones que se demoran o que esperan cálculos en otra.
- Latencias.
Jerarquía de Memoria y Caché
Definición de Memoria Caché
La memoria caché es una memoria rápida, “escondida” y ubicada junto a la CPU. Opera casi a la velocidad del procesador y es la segunda en la jerarquía de memoria. La CPU va siempre ahí a buscar la siguiente instrucción o dato. Hay dos tipos principales (Instrucciones y Datos) y su tamaño es limitado.
Necesidad de la Caché en Procesadores Modernos
Se requiere caché porque la memoria principal (RAM) es lenta. La caché mejora el desempeño de la CPU porque corre a una velocidad muy cercana a la del procesador.
Desafíos y Fallos de la Memoria Caché
Estas memorias están limitadas por su tamaño, lo que produce mucho traspaso (swapping) de información con la memoria principal. Se requieren algoritmos sofisticados para su gestión, y aun así pueden fallar (cache misses), lo que reduce el desempeño de la CPU.
Propiedades del Mapeo Directo (Direct Mapping)
El mapeo directo traspasa información desde o hacia una posición de memoria principal al mismo lugar en la caché siempre. Se puede extender permitiendo que varias direcciones de memoria principal compartan datos de distintas localizaciones en la caché.
Función del TLB (Translation Lookaside Buffer)
El TLB es una tabla, similar a una caché, que almacena los traspasos de direcciones virtuales: guarda el número de la página y su correspondiente número de marco de página (page frame number).
Coherencia, Periféricos y Procesadores Superescalares
Los dispositivos periféricos sin caché no simplifican el sistema; el procesador necesita una lógica de snooping. Si bien los dispositivos periféricos son más simples, esto ocurre a expensas de que el sistema operativo garantice la coherencia después de accesos DMA (Acceso Directo a Memoria).
Los procesadores superescalares acceden a varias direcciones de memoria en un ciclo de reloj, y en consecuencia, el tamaño de la caché debe aumentarse. Una posibilidad simple es usar un múltiplo de la longitud del bloque, lo cual mantiene la tasa de aciertos (hit rate) aproximadamente constante. Una solución más eficiente es aumentar el tamaño del caché sin cambiar la longitud del bloque, evitando así que aumente la sobrecarga del mecanismo write-back.
Predicción de Ramificación y Latencia
Impacto de una Ramificación No Tomada (Branch Miss)
Cuando una ramificación no se toma correctamente, puede ocurrir que la siguiente instrucción no esté en caché L1. Esto obliga al sistema a buscarla en la RAM o en el disco duro (HD), lo que genera una gran demora. El proceso de recuperación implica:
- Consultar el TLB para ver en qué memoria está la dirección.
- Una vez localizada, hay que sacar el bloque del caché y llevarlo a L2 o a RAM.
- Finalmente, se coloca el bloque en L1.
Latencia en Ciclos de Reloj (Estimación)
La ejecución y recuperación de datos puede tomar varios ciclos, dependiendo del nivel de la jerarquía de memoria:
- L1 a L2: 2 o más ciclos.
- L2 a RAM: Aproximadamente 30 ciclos.
- L2 a L1: 5 ciclos.
- Lectura de dirección: 2 ciclos.
Propósito de la Predicción de Ramificación
La predicción es necesaria para mejorar el comportamiento del computador y mantener los MIPS (Millones de Instrucciones por Segundo) altos. Al no predecir bien un salto, puede que tome muchos ciclos encontrar datos o instrucciones. Si se predice correctamente, esa información estará disponible en caché L1.
Causas de una Detención (Stall) del Procesador
Una detención (stall) ocurre cuando la predicción es mala y la próxima instrucción se encuentra en el disco duro, generando una espera prolongada. Las causas principales incluyen:
- Instrucción no disponible en caché (Instruction Cache Miss).
- Dato no disponible en caché (Data Cache Miss).
- Mala predicción de ramificación en un pipeline.
- Azares que no se pueden manejar.
- Cargas de datos que la RAM no puede alcanzar a suministrar.