Download Diapositiva 1
Document related concepts
no text concepts found
Transcript
ARQUITECTURA DE COMPUTADORAS MEMORIA CACHÉ Y ARREGLOS Prof. Juan Álvarez CONTENIDO NOVENA SEMANA Memoria caché. Tipos de memoria caché. Proceso de lectura/escritura en memoria SRAM. Arreglos de memorias. Stallings, William. Organización y Arquitectura de Computadores. 5ta. Edición. Editorial Prentice Hall, 2000. Código biblioteca: 004.22/S78 (Capítulo 4) Brey, Barry. Los Microprocesadores Intel. 3ra. Edición. Editorial Prentice Hall. 1995. Código de biblioteca: 004.165/B82M (Capítulo 10) MEMORIA CACHÉ Disminuye el tiempo de la transferencia de datos entre la memoria principal y el microprocesador. La memoria caché contiene una copia de partes de la memoria principal. Cuando la CPU intenta leer un dato de la memoria principal, hace una previa comprobación para determinar si el dato está en la Caché. Si es así, la CPU lee el dato de la caché. Si no es así, se direcciona la memoria principal y el dato allí residente se copia en la caché junto con un bloque de datos vecinos. MEMORIA CACHÉ MEMORIA CACHÉ Cuando se transfieren datos de la memoria principal hacia la memoria caché, se hace por bloques. Cada bloque consta de una cantidad k de bytes. Se sabe que cuando se hace uso de un dato en la memoria, existe una alta probabilidad que el siguiente y el subsiguiente dato que se utilice se encuentre muy cerca del dato previo. Por lo tanto, si un dato está en un bloque y es usado, es bastante frecuente encontrar el siguiente dato en el mismo bloque. Esto quiere decir también que cuando se carga un bloque en la memoria caché, se están cargando varios datos por anticipado, los cuales serán utilizados en un futuro inmediato. Entonces, además de ser la caché una memoria rápida, se anticipa a las necesidades del procesamiento. MEMORIA CACHÉ Esto se debe a que la ejecución de un programa es secuencial, excepto para las instrucciones de salto, bifurcación y llamada a subrutina. En la mayoría de los casos, la instrucción a leer de la memoria sigue inmediatamente a la última instrucción leída. Por otro lado, al procesar una estructura de datos, estos datos suelen estar ubicados próximos entre sí. Esta ley se resume en un cálculo simple: Sea Ts el tiempo promedio de acceso a un dato en el sistema CPU-Caché-MP. T1 es el tiempo de acceso a la memoria Caché. T2 es el tiempo de acceso a la memoria principal. MEMORIA CACHÉ H es la Tasa de aciertos o equivalentemente la probabilidad de que un dato se encuentre en la memoria caché. Ts H T1 (1 H ) (T1 T2 ) T1 (1 H ) T2 MEMORIA CACHÉ Sea Cs el costo promedio por bit del conjunto Caché-MP. C1 es costo promedio por bit de la memoria caché. C2 el costo promedio por bit de la memoria pricipal. S1 el tamaño de la memoria caché. S2 el tamaño de la memoria principal. C1S1 C2 S 2 Cs S1 S 2 Lo ideal sería que Cs = C2 ya que C1 >> C2, ello requiere que S1 << S2 . O sea que la capacidad de la memoria caché sea pequeña. Se quiere también que Ts = T1 ya que T1 << T2, ello requiere de un H = 1. Pero esto requiere que la memoria caché sea grande. ¿Cuál sería el tamaño ideal de la memoria caché? MEMORIA CACHÉ Hay otras preguntas: ¿qué valor de H se requiere para satisfacer los requisitos de prestaciones? ¿qué tamaño de memoria caché asegura el H necesario? ¿Satisface dicho tamaño el requisito del costo? La cantidad T1/T2 se conoce como eficiencia de acceso y es una medida de cuán próximo es el tiempo de acceso promedio (Ts) al tiempo de acceso de la memoria caché T1. T1 1 T2 1 (1 H ) T2 T1 MEMORIA CACHÉ Datos típicos de la memoria Caché Parámetro: Valor típico Tamaño del bloque: Tiempo de acierto: Penalidad de desacierto: Tiempo de acceso: Tiempo de transferencia: Razón de desacierto: Tamaño del caché: 4-128 bytes 1-4 ciclos 8-32 ciclos 6-10 ciclos 2-22 ciclos 0,01-0,2 1Kbyte - 256Kbyte MEMORIA CACHÉ En la memoria caché, cada línea incluye una etiqueta que identifica al bloque particular que ha sido copiado de la memoria principal. Como hay memos líneas de caché que bloques de memoria principal, se necesita un algoritmo que haga corresponder bloques de memoria principal a líneas de caché. La elección de la función de proyección determina cómo se organiza la caché. Se dan tres técnicas: directa, asociativa y asociativa por conjuntos. MEMORIA CACHÉ Caché de proyección directa Cada bloque de datos de la Memoria Principal puede ubicarse en una sóla un línea del caché. La ubicación normalmente es: número del bloque módulo = número de línea en la caché. Esto es económico, de acceso rápido (utilizado en caches del microprocesador L1 y L2). Pero la razón de desaciertos por competencia por bloque específico es mayor. MEMORIA CACHÉ Correspondencia asociativa Cualquier bloque de memoria puede ubicarse en cualquier línea del caché. El número completo del bloque es el tag. Este método es más caro (muchos comparadores). El Acceso es más lento, dato no está disponible hasta saber si el acceso fue un acierto o un desacierto (etapa de comparación y multiplexación). Pero la tasa de desaciertos por competencia por bloque es menor. MEMORIA CACHÉ Correspondencia asociativa por conjuntos. Es un esquema intermedio. Cada bloque memoria puede ser ubicado en uno de las N líneas del caché. Es más económico que el caché completamente asociativo, pero más caro que caché directo. El dato está disponible después de etapa de comparación y multiplexación. MEMORIA CACHÉ Buscando un bloque en la caché. En la caché de proyección directa: Acceso directo al bloque: cada bloque de memoria puede encontrarse sólo en una línea del caché. Bloque se encuentra por indexación (usando el número del bloque como índice). Se requiere comparar los Tags para saber si el bloque es realmente el que se busca. Bloque está disponible antes de terminar la comparación. MEMORIA CACHÉ ARREGLOS DE MEMORIAS Problema 1. Implementar las direcciones desde A800h hasta A9FFh utilizando memorias RAM de 512x8 bits, para un procesador de 8 bits en el bus de datos. Desde A800h hasta A9FFh hay 512 direcciones, cada una se conecta a un bus de datos de 8 bits. Por lo tanto se quiere implementar 512x8 bits. ARREGLOS DE MEMORIAS Esto corresponde exactamente a la capacidad de una memoria. El análisis de direcciones detalla: A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 0 1 0 1 0 0 x x x x x x x x x Las direcciones A8XXh y A9XXh tienen en común los bits A9, A10, A11, A12, A13, A14, A15 y con los valores que se indican en la tabla. ARREGLOS DE MEMORIAS Los otros bits toman todas las combinaciones posibles y su valor se marca con una “x”. La memoria debe activarse con estas direcciones, por lo tanto el Chip Select tiene la forma: CS = A15 A14 A13 A12 A11 A10 A9 Si la memoria se activa con cero: CS = A15 A14 A13 A12 A11 A10 A9 ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS En la figura adjunta se ilustra la conexión de los buses con la memoria. Los ocho bits de datos se conectan al bus de datos. El chip select se decodifica con un NAND de acuerdo a la ecuación encontrada. Los bits de direcciones restantes, que presentan todas las combinaciones posibles, se utilizan para direccionar la memoria. El control de lectura-escritura se conecta directamente al control WR. ARREGLOS DE MEMORIAS Problema 2. Implementar las direcciones desde A800h hasta A9FFh utilizando memorias RAM de 512x4 bits, para un procesador de 8 bits en el bus de datos. El análisis de direcciones es el mismo que en el problema anterior. Se requiere implementar 512x8 bits que se cubre con dos memorias de 512x4 bits. Aquí las memorias comparten el bus de datos. El decodificador es el mismo solo que implementado de una manera distinta. ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS Problema 3. La siguiente figura muestra un arreglo de cuatro memorias ROM que utiliza un decodificador de direcciones de 8 bits (74138) cuya tabla lógica se muestra en una figura después. Se pide: • Dar la capacidad de cada memoria y del arreglo • Dar el grupo de direcciones implementado en cada memoria. La capacidad de cada memoria es: 214 8 bits 16384 1byte 16KB ARREGLO DE MEMORIAS ARREGLO DE MEMORIAS Para activar la ROM1 es necesario que CE’ = 0. Ello implica que Y0’ = 0 y, de acuerdo con la tabla del decodificador, CBA = 000, G1 = 1, G2A’ = G2B’ = 0. Esto se traduce en los siguientes valores para las patillas de direcciones: A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 1 0 0 0 0 1 1 0 0 0 Las demás patillas de dirección deben tener todas las combinaciones de valores posibles ya que se utilizan para seleccionar las direcciones dentro de la memoria. Expresando las direcciones seleccionadas en hexadecimal para la primera memoria: desde 860000h hasta 863FFFh. ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS Se puede calcular los rangos de direcciones que activan las otras memorias de manera similar. Para la ROM2: desde 864000h hasta 867FFFh. Para la ROM3: desde 868000h hasta 86BFFFh. Para la ROM4: desde 86C000h hasta 86FFFFh. En conclusión, las direcciones implementadas en el arreglo van desde 860000h hasta 86FFFFh. ARREGLOS DE MEMORIAS Problema 4. La siguiente figura muestra un arreglo de cuatro memorias RAM que utiliza un decodificador de direcciones de 8 bits (74138). Se pide: • Dar la capacidad de cada memoria y del arreglo • Dar el grupo de direcciones implementado en cada memoria. La capacidad de cada memoria es: 210 8 bits 1024 bytes 1 KB ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS La RAM U2 se activa con Q4’ =0 y se tiene A12A11A10 = 100, A13 = 1, A14 = A15 = 0. De aquí que las direcciones implementadas son: A15 A14 A13 A12 A11 A10 A9 0 0 1 1 0 0 x A8 A7 A6 x x x de 3000h a 33FFh. De la misma manera se determina que para la RAM U1, las direcciones son de 3400h a 37FFh; para la RAM U3, de 3800h a 3BFFh; para la RAM U4, de 3C00h a 3FFFh. En resumen, las direcciones implementadas en el arreglo son de 3000h a 3FFFh. ARREGLOS DE MEMORIAS Problema 5. La siguiente figura muestra un arreglo de cuatro memorias RAM que utiliza un decodificador de direcciones de 8 bits (74138). Se pide: • Dar la capacidad de cada memoria y del arreglo • Dar el grupo de direcciones implementado en cada memoria. ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS Problema 6. La siguiente figura muestra un arreglo de cuatro memorias RAM que utiliza un decodificador de direcciones de 8 bits (74138). Se pide: • Dar la capacidad de cada memoria y del arreglo • Dar el grupo de direcciones implementado en cada memoria. ARREGLOS DE MEMORIAS ARREGLOS DE MEMORIAS Problema 7. La siguiente figura muestra un arreglo de ocho memorias que utiliza un decodificador de direcciones de 16 bits. Se pide: • Dar la capacidad de cada memoria y del arreglo • Dar el grupo de direcciones implementado en cada memoria. ARREGLOS DE MEMORIAS