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

9
  1. Si estoy en lo correcto, 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 los cachés de la CPU.

  2. Me pregunto si un tamaño de página es siempre o 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 4KB, entonces cada página tiene 4KB / 64 bytes == 64 líneas de caché.

  3. ¿Una página y una línea de caché son 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.

Tim
fuente
2
Las respuestas a sus preguntas dependen mucho de la arquitectura de la CPU.
TMN

Respuestas:

8
  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 el 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 línea de caché suelen ser de 32/64/128 bytes. Cuando las páginas de 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 sea necesario nuevamente. Esto se debe principalmente a que el kernel no tiene forma de saber si la página se usa parcial o totalmente. Otras operaciones de lectura / escritura de almacenamiento externo pueden tener una 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 4KB y generalmente admitirán una combinación de 4KB / 64KB / 2MB / 4MB / 16MB / 1GB (no necesariamente todos compatibles 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 alinearse 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. ° 3, una línea de caché nunca puede abarcar 2 páginas, ya que los tamaños de página siempre serán más grandes que una línea de caché y siempre serán múltiplos 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/

Nicholas Frechette
fuente