¿De qué memoria leen realmente los datos las CPU?

¿De qué memoria leen realmente los datos las CPU?

De acuerdo con mi propio entendimiento, para que la CPU procese los datos, deben colocarse enRAM, mientras tanto, las propias CPU tienenmemoria caché, que también se utiliza para acceder a los datos. Es un hecho bastante conocido que el caché de la CPU está "más cerca" de la CPU y es más rápido que cualquier otro tipo de memoria. Pero no me queda claro si es obligatorio que los datos estén en la caché de la CPU para ser procesados. Si es así, ¿cómo puede la caché conservar una gran cantidad de datos? (el tamaño de la caché tiende a ser pequeño, en comparación con la RAM, hasta unos pocos MB, más a menudo menos de 1). Si no, ¿cómo decide una CPU qué parte de los datos se mantendrá en su caché?

También estoy un poco confundido por el intercambio. ¿Pueden las CPU tratarlo como parte de la RAM y abordar los datos almacenados allí directamente desde el disco duro?

Respuesta1

El caché de la CPU no almacena los datos, solo acelera el acceso.

La explicación más básica del caché es que cuando la CPU lee un byte particular de la RAM, esos datos también se copian en el caché. La próxima vez que la CPU necesite leer ese byte, el controlador de memoria ve que está en la caché y, en lugar de realizar una llamada lenta a la RAM, simplemente le entrega a la CPU los datos de la caché.

Sin embargo, hay dos problemas específicos con esta explicación:

  1. El caché tiene un tamaño finito. Debido a esto, cuando se agregan datos, eventualmente necesitará deshacerse (o "eliminar") los datos antiguos para dejarles espacio. Hay muchas maneras de hacer esto, y la metodología exacta no importa exactamente en esta discusión, pero lo que sí importa es que después de un tiempo, es posible que los datos ya no estén en el caché y luego tengas que salir. a la memoria principal de todos modos.

  2. Cuando se escriben datos, también necesita actualizar o eliminar los datos del caché que se almacenó previamente en esa dirección. Hay tres formas principales de manejar esto:

    • Escritura reescrita: al utilizar el método de reescritura, los datos primero se escriben en la memoria caché y luego, finalmente, se escriben en la memoria principal. Esto tiene una serie de ventajas para el rendimiento, pero puede causar problemas en algunas circunstancias.
    • Escritura directa: utilizando el método de escritura directa, los datos se escriben simultáneamente tanto en la memoria caché como en la memoria principal. Este es un rendimiento menor que la reescritura, pero es más seguro.
    • Escritura simultánea: con el método de escritura simultánea, los datos se escriben directamente en la memoria principal y luego los datos que estaban en la misma ubicación se eliminan de la memoria caché. Esto rara vez se utiliza, excepto en casos de uso muy específicos.

Entonces, para responder a su pregunta sobre la RAM versus el caché de la CPU, técnicamente ambos, pero los datos finalmente provienen de la RAM en casi todos los casos. Si está interesado en aprender más sobre esto específicamente, le sugeriría leer los siguientes dos artículos de Wikipedia:

https://en.wikipedia.org/wiki/Cache_(informática)

https://en.wikipedia.org/wiki/CPU_cache

Ahora, en cuanto a la cuestión del espacio de intercambio, ese es un concepto completamente diferente que está vinculado a la memoria virtual y la paginación. Tratar de explicar eso aquí me llevaría a escribir la mayoría de un par de artículos de Wkipedia, por lo que en su lugar te señalaré directamente los artículos en cuestión:

https://en.wikipedia.org/wiki/Virtual_memory

https://en.wikipedia.org/wiki/Paging

información relacionada