Estoy tomando un Sistema de curso de Arquitectura y tengo problemas para entender cómo directa caché funciona.

He buscado en varios lugares y ellos lo explican de una manera diferente que me pone aún más confundido.

Lo que no puedo entender es ¿cuál es la Etiqueta y el Índice, y la forma en que son seleccionados?

La explicación de mi conferencia es:
«La dirección se divide en dos partes
índice (e.g 15 bits) utilizado para tratar (32k) Carneros directamente
Resto de la dirección, la etiqueta se almacena y se compararon con los de la etiqueta. «

Donde hace que la etiqueta de vino? ¿ No puede ser la dirección completa de la ubicación de memoria en RAM desde hace directa caché inútil (cuando se compara con el totalmente asociativa de caché).

Muchas gracias.

  • u debe leer este tema de la «Arquitectura de computadores» por Morris Mano libro. Esto se explica no en buena forma.
  • plz.. ir a través del enlace de abajo, creo que va a ayudar a entender claramente el concepto de asignación directa en la caché y los parámetros como la etiqueta de índice csciwww.etsu.edu/tarnoff/labs4717/x86_sim/direct.html
  • en el enlace que hace referencia, en el diagrama, ¿por qué son los dos últimos bloques no consecutivos(2^n -1)? Que no sigue el patrón donde el bloque de identificadores fueron consecutivos – 1,2,3,….
  • y en el mismo enlace, lo que hace a la memoria en » etiqueta de identificación exclusiva donde ese bloque vinieron de la memoria.» significa (¿qué tipo de memoria)?
  • Véase también etiqueta de índice y terminología para asociativa cachés. Enlace de Paul Clayton archivo de Andy Glew del CompArch wiki.
InformationsquelleAutor Percentage | 2013-04-10

4 Comentarios

  1. 86

    Bien. Así que primero vamos a entender cómo la CPU interactúa con la memoria caché.

    Hay tres capas de la memoria (en términos generales) – cache (generalmente de SRAM chips), main memory (generalmente de DRAM chips), y storage (generalmente magnéticos, como discos duros). Cada vez que la CPU necesita algún dato de algún lugar en particular, se busca primero en la caché para ver si está allí. La memoria caché se encuentra más cercano a la CPU en términos de la jerarquía de memoria, por lo que su tiempo de acceso es el que menos (y el costo es el más alto), por lo que si los datos de la CPU está buscando se puede encontrar allí, se constituye en un ‘hit’, y los datos se obtienen a partir de allí para el uso de la CPU. Si no está allí, entonces los datos tiene que ser movido desde la memoria principal a la memoria caché antes de que se puede acceder por la CPU (CPU generalmente interactúa sólo con la memoria caché), que incurre en una penalización de tiempo.

    Para averiguar si los datos son o no existe en la caché, varios algoritmos se aplican. Uno es este directo caché método. Para simplificar, vamos a suponer que un sistema de memoria donde hay 10 caché de los lugares de la memoria disponible (numeradas de 0 a 9), y el 40 principales ubicaciones de memoria disponible (numeradas de 0 a 39). Esta imagen lo resume:

    ¿Cómo directa caché en el trabajo?

    Hay 40 principales ubicaciones de la memoria disponible, pero sólo hasta un 10 pueden ser alojados en la memoria caché. Así que ahora, por algún medio, la petición de entrada de la CPU se debe redirigir a una ubicación de la memoria caché. Que tiene dos problemas:

    1. Cómo redirigir? Específicamente, ¿cómo hacerlo de una manera predecible que no van a cambiar a lo largo del tiempo?

    2. Si la ubicación de la memoria caché se llenó con algunos datos, la petición de entrada de la CPU tiene que identificar si la dirección desde la que se requiere de los datos es la misma que la dirección de cuyos datos se almacenan en esa ubicación.

    En nuestro sencillo ejemplo, podemos redirigir por una lógica simple. Dado que tenemos a la mapa 40 principales ubicaciones de memoria numerada de la serie, desde 0 a 39 a 10 caché ubicaciones numeradas del 0 al 9, la ubicación de la memoria caché para una ubicación de la memoria n puede ser n%10. Así 21 corresponde a 1, 37 corresponde a 7, etc. Que se convierte en el índice.

    Pero 37, 17, 7 corresponden todos a 7. Para diferenciar entre ellos, viene el etiqueta. Así, al igual que el índice es n%10, la etiqueta es int(n/10). Así que ahora 37, 17, 7 tienen el mismo índice 7, pero con diferentes etiquetas como 3, 1, 0, etc. Es decir, la asignación puede ser completamente especificada por los dos datos de la etiqueta y el índice.

    Así que ahora si llega una solicitud para la ubicación de la dirección del 29, que se traducirá en una etiqueta de 2 y el índice de 9. Índice corresponde a la ubicación de la caché de número, por lo que la ubicación de la caché no. 9 será consultado para ver si contiene los datos, y si es así, si los asociados de la etiqueta es de 2. Si sí, es una CPU de golpe y los datos se obtienen a partir de ese lugar de inmediato. Si está vacío, o la etiqueta no es 2, significa que contiene todos los datos correspondientes a alguna otra dirección de memoria y no 29 (a pesar de que tienen el mismo índice, lo que significa que contiene los datos de la dirección como de 9, 19, 39, etc.). Por lo que es una CPU de perder, y los datos de ubicación no. 29 en la memoria principal, tendrá que ser cargado en la memoria caché en el lugar 29 (y la etiqueta cambia a 2, y eliminar cualquier dato que había antes), después de lo cual será tomada por la CPU.

    • + 1 por tu gran explicación. Puedo pedir desde tag y index son suficientes, ¿por qué necesitamos offset?
    • Lo siento, no sé nada acerca de desplazamiento en directo caché.
    • Después nos encontramos con el bloque, el desplazamiento se utiliza para especificar los bytes que queremos dentro de ella.
    • las manos hacia abajo la mejor explicación hasta el momento
    • «Si no está allí, entonces los datos tiene que ser movido de la memoria principal» ¿por Qué se mudó, y no se copian?
    • Por «movido», que en realidad significaba «copiado».
    • Gracias por este precioso post!!!

  2. 12

    Vamos a usar un ejemplo. Una de 64 kilobytes de memoria caché, con 16 bytes de caché-líneas tiene 4096 diferentes líneas de caché.

    Que usted necesita para romper el discurso en tres partes diferentes.

    1. El más bajo de bits utilizados para informarle de los bytes dentro de una línea de caché cuando lo recibes de vuelta, esta parte no es utilizado directamente en la búsqueda en la caché. (bits 0 a 3 en este ejemplo)
    2. La siguiente bits se utilizan para el ÍNDICE de la memoria caché. Si usted piensa de la caché como una gran columna de líneas de caché, el índice de bits de decirle la fila que usted necesita mirar en sus datos. (bits 4-15 en este ejemplo)
    3. Todos los demás bits son de la ETIQUETA de bits. Estos bits se almacenan en la etiqueta de la tienda para los datos que tiene almacenados en la caché, y se comparan los bits correspondientes de la memoria caché solicitud a lo que hemos guardado para averiguar si los datos que estamos cacheing son los datos que se solicitan.

    El número de bits que se utilizan para el índice es log_base_2(number_of_cache_lines) [es realmente el número de series, pero en directo caché, hay el mismo número de líneas y conjuntos]

    • Yo creo que lo tengo, pero tengo otra pregunta ahora. Hasta el momento, me imaginé como una sola tabla, donde de alguna manera la dirección y los datos deben ser almacenados. A mí me parece que esta caché sería mejor representados en 3 tablas: uno es el que tiene las líneas de caché, con la ETIQUETA de ÍNDICE y de selección de bits, uno es el de la etiqueta de la tienda y uno es el almacén de datos. Cuando la CPU está tratando de acceder a un lugar, comprueba la ETIQUETA para ver si esa es la dirección que está buscando, comprueba si sigue siendo válido, a continuación, se carga los datos del almacén de datos mediante el uso del ÍNDICE.
    • No creo que te tengo. Sólo hay dos tablas. Una de las etiquetas y otro para los datos. Ambos utilizan el mismo índice, es decir, usted puede pensar de ellos en una sola tabla. Eso es todo lo que usted necesita. Pensar en ello.
    • Sólo para asegurarme de que entiendo. Cada línea de Caché tiene diferentes ETIQUETA de bits para identificar donde en la RAM de los bytes dentro de la línea de caché que se viene?
    • No es sólo la ETIQUETA bits pero la combinación de la ETIQUETA de ÍNDICE y los bits que indica dónde en la memoria principal, la línea de caché que pertenece. Lo más inteligente es que usted no necesita realmente para almacenar el ÍNDICE bits porque siempre son los mismos para una determinada línea de caché.
    • Como Danny dicho anteriormente y de lo que he aprendido, no son el índice de líneas sólo para identificar qué línea de caché de los datos es cuando se tiene un caché de direcciones? No debería tener nada que ver con la memoria principal.
    • Creo que hay un error en el ejemplo. Bits para el índice debe ser 4-15, en lugar de 4-13, porque log2(4096) = 12 bits

  3. 2

    Directa caché es como una tabla que tiene filas de la también llamada línea de la memoria caché y, al menos, 2 columnas, una para los datos y el otro para las etiquetas.

    Aquí es cómo funciona: Un acceso de lectura a la memoria caché se lleva la parte central de la dirección que se denomina índice y utilizarla como el número de fila. Los datos y la etiqueta, miró hacia arriba al mismo tiempo.
    Siguiente, la etiqueta debe ser en comparación con la parte superior de la dirección para decidir si la línea es de el mismo rango de direcciones en la memoria y es válido. Al mismo tiempo, la parte baja de la dirección puede ser utilizada para seleccionar los datos solicitados desde la línea de caché (asumo una línea de caché puede contener datos de varias palabras).

    Insistí un poco en el acceso de datos y de acceso de la etiqueta+comparar sucede en el mismo tiempo, ya que es la clave para reducir la latencia (el propósito de la memoria caché). La ruta de datos ram de acceso no se necesita de dos pasos.

    La ventaja es que una lectura es básicamente una simple búsqueda en la tabla y comparar.

    Pero es directo asignado eso significa que por cada lectura de la dirección no es exactamente un lugar en la memoria caché en la que estos datos pueden estar almacenados en caché. Por lo que la desventaja es que un montón de otras direcciones se asignan en el mismo lugar y pueden competir por el este de la línea de caché.

    • Hablando de paralelismo: Una de las notables propiedades del caché es que la etiqueta de ruta y la ruta de datos son independientes. En la etiqueta de la ruta de acceso, lectura y comparación de la etiqueta de la dirección son dos secuencial de operaciones que producen el hit/miss señal. En la ruta de datos, no es sólo una operación. El medio y la parte inferior del formulario de dirección de una dirección única para los datos de la RAM, para producir una sola palabra de salida. Cómo la RAM está organizada internamente en realidad no importa.
    • Sí, gracias por señalarlo. Los dos pasos que se describen en la ruta de datos es sólo un detalle de implementación de la ram.
    • Se puede ir en más detalle en la parte inferior y superior de una dirección? ¿Cómo identificar lo que la parte inferior es y lo que la parte superior es?
    • ¿Qué tan amplia es la memoria ram? La cantidad de palabras en una línea de caché que es la parte inferior de la dirección. La parte media está determinada por la cantidad de filas en la memoria ram. Para el resto de los bits es la parte superior.
  4. 0

    He encontrado un buen libro en la biblioteca que me ha ofrecido una explicación clara que yo necesitaba, y ahora voy a compartir aquí en el caso de que algún otro estudiante que se tropieza a través de este hilo, mientras que la búsqueda acerca de las cachés.

    El libro es «Arquitectura de computadores – Un Enfoque Cuantitativo» 3ª edición por Hennesy y Patterson, página 390.

    Primer lugar, tenga en cuenta que la memoria principal se divide en bloques de la caché.
    Si tenemos un 64 Bytes de caché y 1 GB de RAM, la RAM se divide en bloques de 128 KB (1 GB de RAM /64B de Caché = 128 KB tamaño de Bloque).

    Del libro:

    Donde puede un bloque se coloca en un caché?

    • Si cada bloque tiene un solo lugar puede aparecer en la caché, la memoria caché se dice que directa asignada. El destino de bloque se calcula mediante la fórmula: <RAM Block Address> MOD <Number of Blocks in the Cache>

    Por lo tanto, vamos a suponer que tenemos 32 bloques de memoria RAM y 8 bloques de caché.

    Si queremos almacenar el bloque 12 de la memoria RAM a la memoria caché, RAM bloque 12 se almacenan en la memoria Caché de bloques 4. Por qué? Porque 12 /8 = 1 resto 4. El resto es el destino de bloque.

    • Si un bloque se puede colocar en cualquier lugar de la memoria caché, la memoria caché se dice que totalmente asociativa.

    • Si un bloque se puede colocar en cualquier lugar en un conjunto limitado de lugares en la memoria caché, la memoria caché es conjunto asociativo.

    Básicamente, un conjunto es un grupo de bloques en la caché. Un bloque primero se asignan a un conjunto y, a continuación, el bloque puede ser colocado en cualquier lugar dentro del conjunto.

    La fórmula es: <RAM Block Address> MOD <Number of Sets in the Cache>

    Por lo tanto, vamos a suponer que tenemos 32 bloques de memoria RAM y una memoria caché se divide en 4 juegos (cada juego tener dos bloques, lo que significa 8 cuadras en total). De esta manera ajustada a 0 hubiera bloques 0 y 1, 1 habría bloques 2 y 3, y así sucesivamente…

    Si queremos almacenar la memoria RAM bloque de 12 en la memoria caché, la memoria RAM bloque se almacenan en la Caché de bloques de 0 o 1. Por qué? Porque 12 /4 = 3 resto 0. Por lo tanto, se selecciona 0 y el bloque se puede colocar en cualquier lugar dentro de 0 (que significa el bloque 0 y 1).

    Ahora voy a volver a la original de mi problema con las direcciones.

    Cómo es un bloque se encuentra si se encuentra en la memoria caché?

    Cada marco de bloque en la caché tiene una dirección. Sólo para que quede claro, un bloque de direcciones y de datos.

    La dirección de bloque se divide en varias piezas: Etiqueta de Índice y de Desplazamiento.

    La etiqueta se utiliza para encontrar el bloque dentro de la memoria caché, el índice sólo muestra el conjunto en el que el bloque se encuentra (lo que es bastante redundante) y el offset se utiliza para seleccionar los datos.

    Por «seleccionar datos» me refiero a que de una caché de bloques no va a ser, obviamente, más de uno de los lugares de la memoria, el desplazamiento se utiliza para seleccionar entre ellos.

    Así que, si quieres imaginar una tabla, estas serían las columnas:

    TAG | INDEX | OFFSET | DATA 1 | DATA 2 | ... | DATA N
    

    Etiqueta debería ser usado para encontrar el bloque, índice espectáculo en el que el conjunto del bloque, desplazamiento seleccione uno de los campos de su derecho.

    Espero que mi entendimiento de que esto es correcto, si no es por favor hágamelo saber.

    • Esto es incorrecto. La tabla contiene sólo datos y etiqueta, pero no de índice y de desplazamiento.
    • Tengo una buena respuesta desde este enlace: csciwww.etsu.edu/tarnoff/labs4717/x86_sim/direct.html
    • El índice y el desplazamiento corresponden a la posición dentro de la tabla. No están almacenados de forma explícita. Estoy seguro de que Hennesy y Patterson explicarlo bien, porque ese libro es excelente y bien conocido, pero has destrozado el último poco de ella en esta respuesta.
    • Asimismo, el índice no es redundante, ya que usted está diciendo, es esencial. No utilizar sólo la etiqueta para encontrar el bloque en la caché. Uso de la etiqueta y el índice.

Dejar respuesta

Please enter your comment!
Please enter your name here