Relación entre la línea de caché y la página de memoria

  1. Si estoy en lo cierto, una página en una memoria principal es la unidad de unidad más pequeña para transferir datos entre la memoria principal y un dispositivo de almacenamiento externo, como un disco duro. Una línea de caché de una memoria principal es la unidad más pequeña para transferir datos entre la memoria principal y las cachés de la CPU.

  2. Me pregunto si el tamaño de una página es siempre o es mejor ser un número natural de tamaño de línea de caché? Si el tamaño de una línea de caché es de 64 bytes y el tamaño de una página de memoria es de 4 KB, entonces cada página tiene 4 KB / 64 bytes == 64 líneas de caché.

  3. ¿Son una página y una línea de caché ambos objetos fijos en una memoria? ¿O son simplemente cualquier bloque contiguo de una memoria de cierto tamaño, que puede comenzar y flotar en cualquier lugar dentro de la memoria?

  4. ¿Es siempre que una línea de caché no puede abarcar más de una página, es decir, parte de una línea de caché está en una página y la otra parte de la línea de caché está en otra página.

Gracias.

Comentarios

  • Las respuestas a sus preguntas dependen en gran medida de la arquitectura de la CPU.

Respuesta

  1. Una línea de caché es la unidad más pequeña con la que puede tocar la memoria física. Es decir, cuando lee / escribe 1 byte, una línea de caché completa que lo contiene se lee en la caché de la CPU y se vuelve a escribir. Tenga en cuenta que incluso las instrucciones que omiten el caché para escribir (instrucciones de transmisión efímeras) escriben en tamaños de línea de caché. Dependiendo de la CPU, los tamaños de las líneas de caché suelen ser de 32/64/128 bytes. Cuando las páginas de la memoria se escriben en el disco, se escriben en su totalidad. Esto sucederá cuando la presión de la memoria sea demasiado alta o con procesos de hibernación (y posiblemente para otros usos). También se leerán enteros cuando se necesiten nuevamente. Esto se debe principalmente a que el kernel no tiene forma de saber si la página se utiliza total o parcialmente. Otras operaciones de lectura / escritura de almacenamiento externo pueden tener granularidad arbitraria (por ejemplo: fwrite (..)).

  2. El tamaño de la página depende de la CPU / GPU. Para la mayoría de las CPU, los tamaños de página serán de al menos 4 KB y, por lo general, admitirán una combinación de 4 KB / 64 KB / 2 MB / 4 MB / 16 MB / 1 GB (no necesariamente todos admitidos al mismo tiempo). El tamaño siempre será una potencia de dos.

  3. Tanto una página como una línea de caché son contiguas y deben estar alineadas con su tamaño respectivo. Una línea de caché de 64 bytes siempre está alineada con 64 bytes y una página de 2 MB siempre está alineada con 2 MB.

  4. Debido al número 3, una línea de caché nunca puede abarcar 2 páginas, ya que los tamaños de página siempre será más grande que una línea de caché y siempre será un múltiplo del tamaño de una línea de caché.

Consulte esta excelente fuente para obtener una gran cantidad de información sobre la memoria: http://lwn.net/Articles/250967/

Comentarios

  • Es esta respuesta sigue siendo relevante en 2020? ¿Han cambiado estos tamaños?
  • Hasta donde yo sé, esos valores siguen siendo relevantes en la actualidad. Todas las CPU modernas x86 y x64 usan 64 bytes por línea de caché y 4 KB sigue siendo el tamaño de página más común en Windows y Linux. Para dispositivos integrados, consulte el manual interno de su procesador para obtener detalles sobre lo que es compatible.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *