Arquitectura de Computadores PDF
Document Details
UCA Universidad de Cádiz
María Mercedes Rodríguez García
Tags
Summary
Estas diapositivas resumen aspectos de la jerarquía de memoria en arquitectura de computadores. Se cubre la memoria caché, memoria principal y disco duro, así como la transferencia de datos. Se discuten los distintos tipos de memoria caché(directa, asociativa por conjuntos y asociativa), los métodos de reemplazo y las políticas de escritura.
Full Transcript
Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Jerarquía de memoria Estas diapositivas deben ser completadas con anotaciones de clase Bibliografía Estructura y diseñ...
Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Jerarquía de memoria Estas diapositivas deben ser completadas con anotaciones de clase Bibliografía Estructura y diseño de computadores: Capítulo 5. Patterson y Hennessy. Editorial Reverte, 2011. Jerarquía de Memoria Caché Memoria principal Disco duro Jerarquía de Memoria El procesador solicita los datos y las instrucciones al primer nivel de la jerarquía (memoria caché). Jerarquía de Memoria Si están en la memoria caché, se produce un ACIERTO. Si no están en la memoria caché, se produce un FALLO. Jerarquía de Memoria En caso de fallo, buscar en el siguiente nivel de la jerarquía (memoria principal) y traer a caché. El controlador de memoria El controlador de memoria es el encargado de gestionar el acceso a memoria principal para actualizar el contenido de la caché. IMPORTANTE: Si los datos están en la memoria caché significa que también están en la memoria principal. ¿Por qué existe la memoria caché? Memoria muy rápida capaz de aprovechar la localidad temporal y la localidad espacial. Localidad temporal Si se accede a una posición de memoria, probablemente se accederá de nuevo a esta posición en un corto intervalo de tiempo. Localidad temporal La mayoría de los programas contienen bucles, por lo que probablemente se accederá repetidamente a las mismas instrucciones y datos. Por tanto, los programas presentan alta localidad temporal. Localidad espacial Si se accede a una posición de memoria, probablemente se accederá a las posiciones adyacentes en un corto intervalo de tiempo. Localidad espacial … Las instrucciones de un programa y 12: Add $t0, $t1, $t2 los elementos de un vector se 16: Sw $t0, 04 almacenan de forma contigua en 20: Sub $t2, $t5, $t3 memoria. Por tanto, los programas … presentan alta localidad espacial. Sistemas de caché multinivel -Figura obtenida de [PATT11]- Procesador AMD Opteron X4 Transferencia de información: memoria principal – memoria caché BLOQUE (CACHE LINE) MEMORIA CACHÉ PRINCIPAL Transferencia de información: memoria caché - procesador PALABRA PROCESADOR CACHÉ ¿Qué tamaño debe tener un bloque? Para aprovechar la localidad espacial, el tamaño del bloque debe ser SUPERIOR a una palabra. ¿Qué tamaño debe tener un bloque? Frecuencia de fallos Tamaño del bloque (bytes) -Figura obtenida de [PATT11]- ¡Perfecto! Si incrementamos el tamaño del bloque, disminuye la frecuencia de fallos debido a la localidad espacial. ¡Cuidado! no incrementarlo demasiado, puedo conseguir el efecto contrario. Memoria caché vs. Memoria principal MEMORIA CACHÉ MEMORIA PRINCIPAL 1 byte 1 bloque e.g., e.g., 256 4.294.967.296 posiciones posiciones … , i.e., , i.e., … 256 4.294.967.296 bloques bytes Memoria caché vs. Memoria principal CACHÉ MEMORIA PRINCIPAL 1 byte 1 bloque e.g., e.g., 256 4.294.967.296 posiciones posiciones … , i.e., , i.e., 256 4.294.967.296 bloques bytes … p.e., 1 bloque = 2 palabras, 1 palabra = 4 bytes Dirección de byte vs. Dirección de bloque 32 bits 00 … 0000 1.- ¿Cuál es la dirección del bloque 1? 00 … 0001 00 … 0010 2.- ¿Qué tienen en común las direcciones de los bytes del 00 … 0011 bloque 1? Bloque 1 00 … 0100 3.- ¿Cuál es la dirección del bloque 2? 00 … 0101 00 … 0110 4.- ¿Qué tienen en común las direcciones de los bytes del 00 … 0111 bloque 2? 00 … 1000 5.- Entonces, ¿Qué bits de la dirección se pueden ignorar si 00 … 1001 sólo queremos identificar bloques? 00 … 1010 00 … 1011 6.- En este ejemplo, ¿sería correcto considerar que la 00 … 1100 Bloque 2 dirección del bloque 1 es 00…0 y la dirección del bloque 2 es 00…1? 29 bits más significativos 00 … 1101 29 bits más significativos 00 … 1110 00 … 1111 Convirtiendo dirección de byte en dirección de bloque Dirección Byte Dirección Bloque = ---------------------------- Nº Bytes del bloque Convirtiendo dirección de byte en dirección de bloque 32 bits 29 bits 00 … 0000 00 … 0000 00 … 0001 00 … 0010 00 … 0011 Bloque 1 00 … 0100 00 … 0101 00 … 0110 00 … 1000 00 … 0111 Dirección Bloque = --------------- = 00…1000 00 … 1000 00 … 1000 8 00 … 1001 00 … 1010 00 … 1011 Bloque 2 00 … 1100 00 … 1101 00 … 1110 00 … 1111 Convirtiendo dirección de byte en dirección de bloque 32 bits 29 bits 00 … 0000 00 … 0000 00 … 0001 00 … 0010 00 … 0011 Bloque 1 00 … 0100 00 … 0101 00 … 0110 ¿Qué ocurre 00 … 0111 00 … 1000 00 … 1000 si la dirección del byte 00 … 1001 00 … 1010 es 00 … 1101? 00 … 1011 Bloque 2 00 … 1100 00 … 1101 00 … 1110 00 … 1111 Cuando se transmite un bloque de memoria principal a memoria caché, ¿en qué posición de la caché se almacena? depende del tipo de caché Caché directa Caché asociativa por conjuntos Cache asociativa Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Memoria caché directa Estas diapositivas deben ser completadas con anotaciones de clase Caché Directa El bloque que se transfiere desde la memoria principal se aloja en UNA posición determinada de la memoria caché. ¿En qué posición? DIRECCION BLOQUEMP MOD Nº BLOQUEScaché Las posiciones en la caché se denominan índices, por tanto, la fórmula anterior queda así INDICEcaché = DIRECCION BLOQUEMP MOD Nº BLOQUEScaché Veamos un ejemplo bloque 00 01 ¿En qué índice se situará el bloque de memoria 10 principal con dirección 11012? 11 CACHÉ DIRECTA Índicecaché = 13 MOD 4 = 110 = 012 1101 MEMORIA PRINCIPAL Seguimos con el ejemplo bloque 0000 1.- ¿Por qué el índice de la caché sólo tiene dos bits? 0001 0010 0011 2.- ¿En qué índice se almacenaría el bloque señalado 00 0100 0101 01 en amarillo? 10 0110 0111 11 1000 CACHÉ 1001 3.- ¿En qué índice se almacenaría el bloque señalado DIRECTA 1010 en verde? 1011 1100 1101 1110 4.- ¿Qué bloques de la memoria principal sólo 1111 MEMORIA podrían almacenarse en el índice 01? PRINCIPAL Seguimos con el ejemplo bloque LW $t0, 1101 0001 rosa 00 01 ? PROCESADOR PALABRA BLOQUE 0101 juan 10 11 CACHÉ DIRECTA 1001 ana 1101 pepe PROBLEMA MEMORIA El dato alojado en una posición determinada de la caché directa puede PRINCIPAL provenir de diferentes posiciones de memoria principal. En el ejemplo, el dato alojado en el índice 01 de la caché directa puede provenir de 4 posiciones diferentes de memoria principal. En el ejemplo, el procesador necesita el dato que está en la posición de memoria 1101, es decir, necesita el dato “pepe”. Para obtenerlo, el procesador se dirige al índice 01 de la caché. Pero, ¿realmente estará ahí el dato “pepe”? también podría estar el dato “rosa”, “juan” o “ana”. ¿Cómo puede saber el procesador qué dato se encuentra ahí? La etiqueta SOLUCIÓN Se añade un nuevo campo en cada entrada de la caché. Este campo se denomina etiqueta y contendrá la parte más significativa de la dirección que no forma parte del índice. La etiqueta bloque LW $t0, 1101 Índice Etiqueta Bloque 0001 rosa 00 PALABRA 01 11 pepe PROCESADOR 10 BLOQUE 0101 juan 11 CACHÉ DIRECTA 1001 ana 1101 pepe MEMORIA PRINCIPAL Siguiendo con el ejemplo El procesador está ejecutando la instrucción LW $t0, 1101: cargar en el registro $t0 1 el dato que está en la dirección de memoria 1101. 2 El procesador comprueba si el dato está en la memoria caché: 1º) Se posiciona en el índice 01 indicado por la dirección 1101 presente en la instrucción LW. 2º) Verifica si la etiqueta almacenada en ese índice coincide con la parte más significativa de la dirección 1101. Si coincide, el dato está en caché (ACIERTO). Si no coincide, el dato no está en caché (FALLO). Por ahora, podemos decir que las direcciones tienen 2 campos Etiqueta Índice Pero, realmente, las direcciones tienen 4 campos Etiqueta Índice BLOCKoffset BYTEoffset Las direcciones tienen 4 campos Etiqueta: identifica qué bloque de todos los candidatos posibles a ocupar un índice está almacenado en la caché. Índice: identifica en qué índice (posición) de la caché se almacena el bloque. BLOCKoffset: identifica una palabra dentro del bloque. BYTEoffset: identifica un byte dentro de la palabra. ¿Por qué son necesarios el BLOCKoffset y el BYTEoffset? Etiqueta + Índice → direcciona un bloque Etiqueta + Índice + BLOCKoffset → direcciona una palabra Etiqueta + Índice + BLOCKoffset + BYTEoffset → direcciona un byte Calculando el tamaño de la etiqueta Tamaño etiqueta = tamaño de la dirección – tamaño del índice – tamaño del BLOCKoffset – tamaño del BYTEoffset Calculando el tamaño de la etiqueta Tamaño etiqueta = m – n – BLOCKoffset – BYTEoffset Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Memoria caché asociativa por conjuntos Estas diapositivas deben ser completadas con anotaciones de clase Caché asociativa por conjuntos Es una caché que está dividida en conjuntos de bloques. Vías Si los conjuntos están formados por n bloques, se dice que es una caché asociativa por conjuntos de n vías. Índice Cada conjunto tiene un índice que lo identifica. ¿En qué conjunto se ubica un bloque? El bloque que se transfiere desde la memoria principal sólo puede ser situado en UN CONJUNTO determinado de la memoria caché asociativa por conjuntos. ¿En qué conjunto se ubica un bloque? INDICEcaché = DIRECCION BLOQUEMP MOD Nº CONJUNTOScaché Y dentro del conjunto, ¿en qué bloque? Método aleatorio: en cualquier bloque del conjunto. Método LRU (Least Recently Used): en el bloque del conjunto que lleva más tiempo sin utilizarse. Veamos un ejemplo bloque ¿En qué índice se situará el bloque de memoria principal con dirección 11012? 0 Índicecaché = 13 MOD 2 = 110 = 012 1 110 pepe BLOQUE El bloque se tiene que situar en el conjunto de CACHÉ ASOCIATIVA índice 1, dentro de ese conjunto puede POR CONJUNTOS DE 2 VÍAS emplazarse en cualquier bloque (método aleatorio) o en el bloque que lleva más tiempo 1101 pepe sin utilizarse (método LRU). La etiqueta LW $t0, 1101 Índice Etiqueta Bloque 0 PALABRA BLOQUE PROCESADOR 1 110 pepe 100 ana CACHÉ ASOCIATIVA POR CONJUNTOS DE 2 VÍAS 1001 ana 1101 pepe MEMORIA PRINCIPAL Siguiendo con el ejemplo El procesador está ejecutando la instrucción LW $t0, 1101: cargar en el registro $t0 1 el dato que está en la dirección de memoria 1101. 2 El procesador comprueba si el dato está en la memoria caché: 1º) Se posiciona en el conjunto con índice 1 indicado por la dirección 1101 presente en la instrucción LW. 2º) Verifica en paralelo todas las etiquetas de ese conjunto. En concreto, verifica si hay alguna etiqueta que coincida con la parte más significativa de la dirección 1101. Si hay alguna etiqueta que coincida, el dato está en caché (ACIERTO). Si no hay alguna etiqueta que coincida, el dato no está en caché (FALLO). Al igual que en la caché directa, las direcciones tienen 4 campos Etiqueta Índice BLOCKoffset BYTEoffset Las direcciones tienen 4 campos Etiqueta: identifica si el bloque está dentro del conjunto. Índice: identifica en qué conjunto de la caché se almacena el bloque. BLOCKoffset: identifica una palabra dentro del bloque. BYTEoffset: identifica un byte dentro de la palabra. Calculando el tamaño de la etiqueta Tamaño etiqueta = tamaño de la dirección – tamaño del índice – tamaño del BLOCKoffset – tamaño del BYTEoffset Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Arquitectura de la memoria caché Estas diapositivas deben ser completadas con anotaciones de clase Caché asociativa por conjuntos PALABRA PROCESADOR CACHÉ Ejemplo 1 PROCESADOR 1 Tamaño de palabra? -Figura obtenida de [PATT11]- 2 Nº de palabras por bloque? 3 Tipo de caché? Ejemplo 2 PROCESADOR -Figura obtenida de [PATT11]- 1 Tamaño de palabra? 2 Nº de palabras por bloque? 3 Tipo de caché? Ejemplo 3 -Figura obtenida de [PATT11]- 1 Tamaño de palabra? 2 Nº de palabras por bloque? PROCESADOR 3 Tipo de caché? Arquitectura de Computadores Grado en Ingeniería Informática María Mercedes Rodríguez García Resumen de las memorias caché Estas diapositivas deben ser completadas con anotaciones de clase Niveles de memoria caché L1 L2 L3 Niveles de memoria caché La caché L1: Cuando el procesador requiere un dato/instrucción siempre lo lee de caché L1. Es importante minimizar el tiempo de acceso a la caché L1. Las cachés L2 y L3: Cuando se produce un fallo en la caché L1, se busca el dato/instrucción en la caché L2. Si el dato no estuviese en la L2, se buscaría en la caché L3 y, en su defecto, en la memoria principal. Es importante minimizar la frecuencia de fallos en las cachés L2 y L3. Niveles de memoria caché ¿Qué características tendrá la caché L1? ¿Qué características tendrá la caché L2/L3? ¿Las decisiones de diseño son diferentes? Caché L1: ¿Cómo minimizar el tiempo de acceso? Disminuir el tamaño de la caché. Disminuir el grado de asociatividad. Caché L2 y L3: ¿Cómo minimizar la frecuencia de fallos? Frecuencia de fallos Frecuencia de fallos Tamaño del bloque (bytes) Asociatividad -Gráficas obtenidas de [PATT11]- Tipos de memoria caché Directa Asociativa por conjuntos Asociativa Tipos de memoria caché Directa: El bloque de memoria principal es ubicado en un bloque específico de la caché. Asociativa por conjuntos: El bloque de memoria principal es ubicado en un conjunto específico de la caché. Asociativa: El bloque de memoria principal es ubicado en cualquier bloque de la caché. Políticas de reemplazo Aleatoria LRU (Least Recently Used) Políticas de reemplazo Directa: Se reemplaza el bloque escogido aleatoriamente. LRU: Se reemplaza el bloque que lleva más tiempo sin utilizarse. Políticas de escritura: ¿Qué sucede cuando el procesador modifica un dato en la caché? Write-Through (Escritura Directa) Write-Back (Escritura Diferida) Políticas de escritura Escritura directa: El dato se actualiza en caché y simultáneamente en memoria principal. Escritura diferida: El dato se actualiza en caché y posteriormente en memoria principal. ¿cuándo? Cuando haya que reemplazar el bloque.