¿Es la RAM un tipo de caché? Explica por qué o por qué no.

Yo diría que no exactamente . Preguntar “¿Es la RAM un tipo de caché?” Es como preguntar si el azúcar es un tipo de dulce o la harina es un tipo de pastel.

La RAM generalmente se refiere a circuitos de memoria digital que almacenan de miles a millones o miles de millones de bits de información, con un tiempo de acceso relativamente plano y generalmente bastante rápido. Las RAM se pueden leer o escribir con un costo similar. Las RAM más pequeñas tienden a ser más rápidas que las RAM más grandes. Las RAM son uno de los componentes básicos de un sistema informático.

Los cachés son una construcción y un concepto de nivel superior. Los cachés almacenan copias de información en una ubicación de acceso más rápido que su hogar original. Hay muchos tipos de caché. Por ejemplo:

  • Un procesador puede implementar una memoria caché. Esto almacena copias de información de una memoria más lenta en una memoria más cercana al procesador.
  • Un sistema operativo puede implementar un caché de disco. El disco en sí mismo puede implementar un caché también. Estos almacenan copias de información de un disco relativamente lento en una RAM mucho más rápida.
  • Un navegador web puede implementar un caché web. Esto almacena copias de páginas web y otros recursos web en su sistema local, donde puede cargarse más rápidamente que la búsqueda desde un servidor web.

Los cachés de memoria del procesador, en particular, usan RAM pequeñas y rápidas como almacenamiento, y contienen copias de información de RAM más grandes y lentas. Los procesadores modernos a menudo tienen múltiples niveles de caché: el nivel 1 suele ser pequeño y rápido, el nivel 2 es un poco más grande y más lento, y así sucesivamente. La RAM es un componente de la memoria caché, pero no es en sí misma una memoria caché. Los cachés de memoria del procesador son una construcción de hardware. Las máquinas de estado y otra lógica digital proporcionan al procesador la ilusión de que está hablando con una memoria rápida grande, cuando realmente está hablando con una memoria rápida pequeña, mientras que la lógica organiza el movimiento de datos entre el caché y las memorias más lentas debajo de él.

Los cachés de disco son una construcción de software. En lugar de ir al disco físico para cada acceso, el caché almacena copias de los datos a los que se accedió recientemente en la RAM. El disco en sí puede implementar algo de caché. Esas cachés son administradas por un pequeño procesador integrado en el disco. Es probable que su sistema operativo también implemente un caché de disco. Esto lo gestiona el núcleo del sistema operativo y generalmente se mantiene oculto de los programas. Su programa puede pensar que está leyendo y escribiendo en el disco, pero lo más probable es que esté interactuando con el caché. Los datos almacenados en caché se almacenan en la RAM y luego se copian en / desde el disco mediante software.

Un caché de navegador web también es una construcción de software. Su navegador web almacena copias de páginas y otros objetos que ha obtenido recientemente de la web. Almacena algunos de estos en el disco y otros en la RAM. Es administrado por software. La memoria caché del navegador tiene como objetivo hacer que su experiencia de navegación web sea más rápida, al mantener copias de los elementos a los que se accede a menudo localmente, donde se pueden leer más rápidamente. El caché del navegador usa RAM como parte de su implementación. Pero, de nuevo, la RAM en sí no es un caché. Algunas partes del mismo se utilizan como caché.

Es posible que vea un patrón aquí: la RAM es solo un circuito digital que puede almacenar información. Los cachés son una construcción de nivel superior que puede usar RAM en su implementación. La RAM en sí no es un caché, pero puede usarse como parte de un caché.

Sí, la RAM es un caché de almacenamiento a largo plazo más lento, como un SSD o HD.

Todo el almacenamiento es una jerarquía. Desde lo realmente rápido y costoso hasta lo barato y lento. Todo el juego está en caché, todo el camino hacia arriba y hacia abajo. Desafortunadamente, no somos muy perspicaces al respecto, y terminamos con una jerarquía no uniforme que hace que tengamos que traducir entre los diferentes niveles.

Mira cómo usamos realmente la RAM: cuando abrimos un archivo, lo leemos desde el almacenamiento en un búfer de RAM. Cuando escribimos un archivo, llenamos buffers y luego los empujamos a un archivo. ¿Cómo es que NO es un caché? Bueno, tenemos que administrarlo de forma manual, explícita y directa. ¿Cómo se verían las cosas si simplemente eliminamos eso y realmente almacenamos en caché las cosas?

Unix tiene una función mmap () que nos permite proporcionar una asignación de memoria para un archivo. ¿No simplificaría las cosas si la única forma de abrir un archivo fuera un mmap (), y luego solo las operaciones de memoria en esa región asignada?

Mibbes sí, mibbes no.

Así es como decimos “tal vez, tal vez no” en Escocia.

En el sentido de tener una copia de datos en algún lugar más rápido, entonces sí, a veces la RAM es un caché para los datos que residen en el disco. Por ejemplo, carga un archivo de texto, lo guarda en la RAM, eso es caché de datos basados ​​en disco que residen en la RAM.

Sin embargo, muy pocos programas realmente funcionan así. Si carga un archivo PNG en un programa de pintura. No está trabajando en los datos PNG, está trabajando en datos de mapa de bits que son mucho más grandes y completamente diferentes en términos de datos almacenados que PNG.

Lo mismo para XML, es casi seguro que no está trabajando en los datos XML en sí, probablemente esté trabajando con una representación como documento DOM u otra representación de objeto. Lo mismo para JSON, JPEG, MP3 y la mayoría de los otros tipos de datos. Es bastante raro tener el formato de almacenamiento igual que los datos de trabajo.

La RAM ciertamente se puede usar como caché, pero en mi experiencia, para la mayoría de los datos, no lo es, porque los datos en el disco y los datos en la RAM son generalmente completamente diferentes. Un archivo XML / texto se convierte en 1000 objetos Java o 1000 estructuras en C. Los datos almacenados en el disco tienden a ser una explicación de cómo crear datos en RAM, no son los mismos datos .

Eso es antes de ingresar a los datos que solo residen en la RAM, que es básicamente todo lo que hace su programa. ¿Sumas 1 + 1? Esos son los datos presentes en la RAM, pero no en el disco, por lo que la RAM no es un caché, es el almacén de datos principal.

Sin embargo, incluso antes de eso, incluso para esos archivos en su disco en este momento, generalmente la RAM no se usa como caché, se usa como un espacio de trabajo para reunir datos basados ​​en las explicaciones en el disco.

Volviendo a la pregunta, ¿la RAM es un tipo de caché?

Puede ser, pero generalmente no.

Un caché está hecho de carnero. Pero eso es como decir que una casa está hecha de ladrillos. Un caché debe, necesariamente, tener algo de ram. Pero también tiene otros componentes, como memorias direccionables de contenido o mecanismos similares. Los dos no están realmente en el mismo nivel de descripción, por lo que no son comparables.

No, la RAM es una cosa de propósito más general.

Un caché es solo una copia de algo almacenado en un medio más lento. La RAM se puede usar para eso, pero también para muchas otras cosas.