Clase Práctica - caché Organización del Computador 1 Verano 008 Ejercicio 1 1 Una computadora utiliza una caché de mapeo directo de 3 líneas de 16 palabras cada una La memoria principal mide 0 palabras y es direccionable a palabra a) cuántas líneas posee la memoria principal? a cuántos bloques corresponde? La memoria posee 0 palabras Cada línea de caché es de 16 ( 4 ) palabras, entonces la memoria tiene 0 = 16 líneas 4 Por otro lado, la caché tiene 3 líneas por lo que la memoria estará dividida en bloques de 3 líneas Si tenemos 16 líneas de memoria y bloques de 3 ( 5 ) líneas, tendremos 16 = 11 5 bloques de memoria b) Mostrar el formato de una dirección de memoria vista desde la caché (tag, line, index) Cuáles de estos campos deben guardarse en la caché? Como la línea es de 16 palabras y se utiliza direccionamiento a palabra, el campo index tendrá 4 bits Teniendo en cuenta que la caché tiene 3 líneas, el campo line tendrá 5 bits Además sabemos que la memoria está dividida en 11 bloques, por lo que el campo tag tendrá 11 bits Sólo debemos guardar el tag tag line index 11 bits 5 bits 4 bits A modo de verificación notemos que la suma de los tamaños de los tres campos da veinte, que es justamente la cantidad de bits necesaria para asignar direcciones a este tipo de memoria (de 0 palabras con direccionamiento a palabra) c) En qué lugar de la caché se guarda la palabra que se encuentra en la dirección de memoria 0x0DB63? Mostrar cómo queda la caché al leer dicha dirección Primero, analicemos la dirección 0x0DB63; que en binario sería 0000 1101 1011 0110 0011 Escribamos cómo ve esta dirección la caché: 1 Ejercicio 1 del capítulo 6, L Null & J Lobur, Essentials of Computer Organization and Architecture 1
tag line index 0000 1101 101 1 0110 0011 0x6D 0x16 0x3 Entonces, luego del pedido, la línea 0x16 de la caché corresponderá al bloque 0x6D En el índice 3 de esa línea estará la palabra cuya dirección en memoria principal es 0x0DB63 Ejercicio Una computadora utiliza una caché asociativa de 64 líneas de 3 palabras La memoria principal cuenta con 16 palabras y es direccionable a palabra a) cuántas líneas posee la memoria principal? Cada línea tiene 3 palabras de largo Entonces la cantidad de líneas de la memoria será 16 5 = 11 b) Mostrar el formato de una dirección de memoria vista desde la caché (tag, index) Cuáles de estos campos deben guardarse en la caché? La línea tiene 3 palabras; luego, alcanzan con cinco bits para el índice En el punto anterior vimos que hay 11 líneas en memoria principal; entonces, bastan con once bits para el tag tag index 11 bits 5 bits c) En qué lugar de la caché se guarda la palabra que se encuentra en la dirección de memoria 0xF8C9? Mostrar cómo queda la caché al leer dicha dirección Ejercicio 3 del capítulo 6, L Null & J Lobur, Essentials of Computer Organization and Architecture
Como antes, comencemos por analizar la dirección 0xF8C9; en binario se escribe como 1111 1000 1100 1001 Utilizando el punto anterior sabemos que para esta dirección el tag es 0x7C6 y que el index es 9 Entonces, luego de procesar el pedido de la palabra cuya dirección es 0xF8C9, la primer línea libre (o marcada como no válida) de la caché correspondería a la línea de memoria principal 0x7C6; donde la palabra pedida ocupa el lugar indicado por el índice 9 La siguiente figura muestra un ejemplo en el cual se asume que la caché estaba vacía antes de procesar el pedido Ejercicio 3 3 Se tiene una computadora con 7 palabras de memoria principal La caché tiene una capacidad total de 15 líneas de 64 palabras cada una a) Mostrar el formato de una dirección de memoria para una caché asociativa por conjuntos de vias La memoria tiene 7 palabras Como cada línea tiene 64 palabras, la memoria tiene 7 6 = 1 líneas La caché tiene vias de 14 líneas cada una, entonces la memoria principal se encuentra dividida en 1 14 = 7 bloques tag line index 7 bits 14 bits 6 bits b) Cómo queda cargada la caché al leer primero la posición de memoria 0x01178FC y luego 0x03178FC? La primer dirección de memoria (000 0001 0001 0111 1000 1111 1100 en binario) será interpretada por la caché como 0x01 (tag), 0x05E3 (conjunto), 0x3C (índice) Si en ese conjunto las dos vías estuvieran libres, la memoria caché podría quedar como se muestra en la siguiente figura 3 Ejercicio 5 del capítulo 6, L Null & J Lobur, Essentials of Computer Organization and Architecture 3
(Recordar que se carga toda la línea) La segunda dirección de memoria (000 0011 0001 0111 1000 1111 1100 en binario) será interpretada por la caché como 0x03 (tag), 0x05E3 (conjunto), 0x3C (índice) Siguendo con el ejemplo de la figura anterior, la caché cambiaría como se muestra a continuación (Recordar que se carga toda la línea) Ejercicio 4 Una computadora tiene palabras y registros de 64 bits Todas las instrucciones tienen 64 bits de tamaño fijo Dado el siguiente programa que calcula el producto escalar de dos vectores (el tamaño de los vectores se encuentra guardado en R4): 4
MOV R0,0 MOV R1,v1 MOV R,v MOV R3,0 ciclo: ADD R3,[R1] MUL R3,[R] ADD R0,R3 MOV R3,0 INC R1 INC R DEC R4 JNZ ciclo La etiqueta ciclo se encuentra cargada en la posición de memoria 0x0000 0000 0000 00F0 Los dos vectores (v1 y v) se encuentran en la posición 0xF000 0000 0000 00F0 y 0xFFFF 0000 0000 00F0 Suponiendo que la caché tiene un tamaño para guardar datos de 16K, analizar la tasa de aciertos para las siguientes configuraciones: a) Mapeo directo con líneas de 8 palabras b) Asociativa por conjuntos de vías con líneas de 8 palabras y algoritmo de reemplazo LRU 5