En una computadora de uso general (como una PC normal), ¿cómo lee CPU
el archivo RAM
, asumiendo que primero lee desde el archivo Cache
.
Suponiendo que cache
es una memoria caché asociativa de conjuntos de n vías . De nuevo, tendríamos L1 Cache
y L2 Cache
.
Por lo general, CPU
lee una cantidad block
de datos del archivo RAM
. Así que estos blocks
pueden ser varios words
. ¿No cuesta esto muchos ciclos de tiempo/reloj? ¿Cómo es/puede hacerse esto más eficiente? (No estoy hablando de usar caché aquí, sino de la transferencia de datos)
RAM
es bastante más lento que el CPU
, ¿cómo se las CPU
arregla el todavía para ser eficiente?
Hay rendimiento y latencia.
En núcleos muy simples y lentos, la memoria caché se ejecuta a la misma velocidad que la CPU y puede proporcionar datos en 1 ciclo, por lo que los datos están disponibles de inmediato sin detenerse. Cuando hay una pérdida de caché, los datos se toman de la memoria principal y la latencia inicial puede ser de más de 10 ciclos. Lo bueno es que una vez que los primeros datos están disponibles, los siguientes datos se pueden obtener rápidamente, de ahí la idea de las transferencias en ráfaga y los rellenos de caché. La CPU solo necesita un byte, o una palabra de 32 bits, pero se transfieren 32 o 64 bytes a la vez desde la memoria al caché.
En las CPU más avanzadas, las que tienen reloj L1, L2, DRAM y gigahercios, incluso el contenido de la memoria caché L1 no se puede obtener de inmediato. Para la instrucción, existen mecanismos para predecir el flujo de instrucciones y obtener instrucciones por adelantado: Obtener continuamente direcciones consecutivas, a menos que la instrucción sea una bifurcación, una llamada,... Para datos, es más complejo. Al usar canalización, algunas CPU pueden tener varias transferencias de datos pendientes antes de detenerse. La verdadera solución actual para mitigar las largas latencias es la ejecución fuera de orden, la CPU hace todo el trabajo posible, incluso ejecutando instrucciones que no están en el orden del programa, para ocultar la larga latencia de instrucciones como lecturas y escrituras de datos.
Sí. Mediante el uso de RAM más eficiente, como la memoria que admite el modo de ráfaga.
Mediante el uso de caché, que es una memoria RAM más rápida, junto con un controlador de memoria que continúa leyendo de la RAM mientras la CPU está ocupada ejecutando lo que está en la memoria caché.
KyranF
crosley