Chaché

Las altas velocidades de reloj y los conjuntos de instrucciones complejas conducen a un nuevo problema, obtener datos dentro y fuera de la CPU lo suficientemente rápido, en este caso el cuello de botella es la memoria RAM.

Para ello alojamos una porción de memoria en el microprocesador, a esta memoria la llamamos caché. Como este es muy pequeño hablamos de una memoria de kilobytes quizá megabytes.

Manipular datos desde la caché presenta un interesante problema, la copia de datos de la caché ahora es diferente a la versión real almacenada en RAM, este desajuste debe registrarse, de modo que en algún momento pueda sincronizarse. Para este propósito la caché tiene un indicador especial para cada bloque de memoria llamado DIRTY BIT.

Paralelizar las tareas

Otro méotodo para optimizar un CPU es paralelizar las tareas, pero este trae otros problemas y uno es dependencia entre instrucciones.

Los procesadores actuales pueden reordenar dinámicamente las instrucciones con dependencias para minimizar las paradas y mantener las tuberias en movimiento, esto se conoce como ejecución fuera de orden.

Otro peligro son las instrucciones de salto condicional. Para este caso adivinan la ruta y comienza a ejecutar instrucciones básicas basadas en esa suposición, a esta técnica se le llama ejecución especulativa. Para minimizar estos casos se han desarrollado sofisticados procesos para adivinar en que dirección irán las ramas, llamada predicción de ramas. El lugar de tratarse de un 50/50, los procesadores actuales pueden adivinar con más de un 90% de precisión.

Procesadores Multi-Core

Procesadores multi-core, procesadores de 2 nucleos, 4 nucleos, entre otros...
Al encontrarse dentro de un mismo chip, pueden compartir recursos como la memoria caché, lo que permite que los nucleos trabajen en conjunto en computos compartidos.