¿Qué hace la CPU Intel mientras espera en la memoria?

Una computadora ejecuta una secuencia de instrucciones en la tubería. Cada instrucción se descompone en microoperaciones, y durante este proceso se etiquetan por dependencias. Entonces, cuando una operación requiere datos de DRAM, entonces espera y cualquier operación que dependa del resultado de la operación de espera también espera, pero pueden ejecutarse otras operaciones en la tubería que no dependen de ella, aunque sus resultados tienen que esperar para que todos las instrucciones pueden “retirarse” en el orden en que comenzaron la ejecución. Rápidamente el hilo se queda sin operaciones desbloqueadas, pero ahora si el núcleo tiene un segundo hilo (i7) puede comenzar a ejecutar instrucciones desde ese hilo. Cuando ambos subprocesos están bloqueados (o si la CPU solo tiene un subproceso por núcleo), entonces el núcleo tiene que esperar a que lleguen los datos desde la DRAM, pero, por supuesto, otros núcleos aún pueden ejecutarse.

Las CPU modernas hacen todo lo posible para evitar “esperar en la memoria”.

Lo hacen canalizando y anticipando las necesidades de memoria con anticipación.

Es como llamar a su pedido a Starbucks. Está listo cuando llegues allí.

Por supuesto que a veces te olvidas de llamar. O se equivocaron de orden. Luego terminas pasando el rato esperando que hagan tu bebida …

Las CPU más antiguas no miraban hacia el futuro y básicamente giraban sus ruedas esperando memoria.

Las CPU medianas miraron hacia el futuro, pero no fueron muy sofisticadas y terminaron esperando ocasionalmente. Especialmente en las instrucciones de ramificación, lo que provoca un vaciado de caché Las CPU modernas intentan hacer predicciones de bifurcación para mantener la tubería llena si la bifurcación ocurre o no.

Es una delgada línea entre tratar de asegurarse de que la CPU nunca espere los datos que necesita, y hacer que espere mientras busca un montón de cosas que tal vez no necesite …

En realidad, eso depende de lo que quieras decir con “esperar memoria”.

Si el procesador está esperando una carga de dram, por ejemplo, podría ejecutar operaciones utilizando caché y registrar datos, si se programa correctamente.

Si no tiene datos en caché o los valores no están presentes en la memoria de registro, entonces todo lo que la CPU puede hacer es detenerse o arriesgarse a obtener un valor incorrecto.