tipos sirve que para mis memoria informatica fotos directa definicion correspondencia caracteristicas caché cache borro borran c cpu-cache

sirve - Entendiendo la memoria caché de la CPU y la línea de caché



si borro la memoria cache se borran mis fotos (3)

  1. Los metadatos de la memoria caché generalmente no se cuentan como parte de la memoria caché en sí. Puede que ni siquiera se almacene en la misma parte de la CPU (podría estar en otro caché, implementado utilizando registros de CPU especiales, etc.).
  2. Esto depende de si su CPU buscará direcciones no alineadas. Si solo buscará direcciones alineadas, entonces el ejemplo que dio será correcto. Si la CPU recupera direcciones no alineadas, entonces podría obtener el rango 0xFFFF0008 a 0xFFFF0027.
  3. Los bytes del índice siguen siendo útiles, incluso cuando el acceso al caché está alineado. Esto le da a la CPU un método abreviado para hacer referencia a un byte dentro de una línea de caché que puede usar en su contabilidad interna. Puede obtener la misma información si conoce la dirección asociada con la línea de caché y la dirección asociada con el byte, pero es mucha más información para llevar.

Diferentes CPUs implementan el almacenamiento en caché de manera muy diferente. Para obtener la mejor respuesta a su pregunta, proporcione algunos detalles adicionales sobre la CPU en particular (tipo, modelo, etc.) de la que está hablando.

Estoy tratando de entender cómo está funcionando la memoria caché de la CPU. Digamos que tenemos esta configuración (como ejemplo).

  • Tamaño de caché 1024 bytes
  • Caché línea 32 bytes
  • 1024/32 = 32 líneas de caché todas juntas.
  • La línea de caché de Singel puede almacenar 32/4 = 8 pulgadas.

1) De acuerdo con esta configuración, la longitud de la etiqueta debe ser de 32-5 = 27 bits, y el tamaño del índice de 5 bits (2 ^ 5 = 32 direcciones para cada byte en la línea de caché).

Si el tamaño total de la memoria caché es 1024 y hay 32 líneas de memoria caché, ¿dónde se almacenan las etiquetas + los índices? (Hay otros 4 * 32 = 128 bytes.) ¿Significa que el tamaño real de la memoria caché es 1024 + 128 = 1152?

2) Si la línea de caché es de 32 bytes en este ejemplo, esto significa que los 32 bytes que se copian en la memoria caché cuando la CPU de la unidad necesita obtener un nuevo byte de la RAM. ¿Tengo razón al suponer que la posición de la línea de caché del byte solicitado estará determinada por su dirección?

Esto es lo que quiero decir: si la CPU solicitó el byte en [FF FF 00 08] , entonces la línea de caché disponible se llenará con los bytes desde [FF FF 00 00] a [FF FF 00 1F] . Y nuestro único byte requseted estará en la posición [08] .

3) Si la declaración anterior es correcta, ¿significa que los 5 bits que se usaron para el índice no son técnicamente necesarios ya que los 32 bytes están en la línea de caché de todos modos?

Por favor, hágamelo saber si tengo algo mal. Gracias


Esto se basa en mi vaga memoria, debería leer libros como "Arquitectura de computadora: un enfoque cuantitativo" por Hennessey y Patterson. Gran libro

Suponiendo una CPU de 32 bits ... (de lo contrario, sus cifras necesitarían usar> 4 bytes (quizás <8 bytes ya que algunos / la mayoría de las CPU de 64 bits no tienen todos los 64 bits de la línea de dirección utilizada)) para la dirección.

1) Creo que es al menos 4 * 32 bytes. Dependiendo de la CPU, los arquitectos de chips pueden haber decidido realizar un seguimiento de otra información además de la dirección completa. Pero generalmente no se considera parte del caché.

2) Sí, pero cómo se hace ese mapeo es diferente. Consulte Wikipedia - CPU cache - asociatividad Existe la caché mapeada directa simple y la caché mapeada asociativa más compleja. Desea evitar el caso en el que algún código necesita dos datos, pero las dos direcciones se asignan exactamente a la misma línea de caché.


Una memoria caché consta de datos y etiquetas RAM, dispuestas como un compromiso entre el tiempo de acceso y la eficiencia y el diseño físico. Te estás perdiendo una estadística importante: número de formas (conjuntos). Rara vez tiene cachés de un solo sentido, porque funcionan mal patológicamente con patrones simples. De todas formas:

1) Sí, las etiquetas ocupan espacio adicional. Esto es parte del compromiso de diseño: no desea que sea una gran fracción del área total, y el tamaño de la línea no es solo de 1 byte o 1 palabra. Además, se accede simultáneamente a todas las etiquetas para un índice, y eso puede afectar la eficiencia y el diseño si hay muchas formas. El tamaño es ligeramente más grande que su estimación. Por lo general, también hay algunos bits extra para marcar la validez y, a veces, sugerencias. Más formas y líneas más pequeñas necesitan una fracción mayor ocupada por las etiquetas, por lo que generalmente las líneas son grandes (32+ bytes) y las formas son pequeñas (4-16).

2) si. Algunos cachés también realizan una búsqueda de "palabra crítica primero", donde comienzan con la palabra que causó el relleno de línea, luego recuperan el resto. Esto reduce la cantidad de ciclos que la CPU está esperando por los datos que realmente solicitó. Algunos cachés se "escribirán" y no asignarán una línea si fallas en una escritura, lo que evita tener que leer primero toda la línea de caché, antes de escribir en ella (esto no siempre es una ganancia).

3) Las etiquetas no almacenarán los 5 bits inferiores ya que no son necesarios para coincidir con una línea de caché. Sólo se indexan en líneas individuales.

Wikipedia tiene una redacción bastante buena, aunque un poco intensa, sobre cachés: http://en.wikipedia.org/wiki/CPU_cache - vea "Implementación". Hay un diagrama de cómo se dividen los datos y las etiquetas. Yo, creo que todos deberían aprender esto porque realmente puedes mejorar el rendimiento del código cuando sabes de qué es capaz la máquina subyacente.