ESTRUCTURA DE COMPUTADORES PROBLEMAS DEL TEMA 1

Documentos relacionados
Ejercicios del tema 5. Jerarquía de de Memoria

Memoria virtual Ejercicios resueltos

Problemas de estructura y tecnología de computadores Hoja 6: Temas 12, 13 y 14

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

Caché. Matías Barbeito Organización del computador 1 2 cuatrimestre 2011

PROBLEMAS TEMA 2: Unidad de memoria Problemas propuestos en examen ORGANIZACIÓN DE MEMORIA

Ejercicios de Arquitectura de Computadoras

Práctica 5 - Memoria Cache

Ejercicios Jerarquía de Memoria

La solución es colocar un memoria más pequeña y rápida entre la CPU y la memoria principal.

Tema 5 (III) Jerarquía de Memoria

Arquitectura de Computadores Problemas (hoja 4). Curso

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Clase Práctica Memoria Caché

EJERCICIOS DEL TEMA 4

EJERCICIOS DE MEMORIA:

Arquitectura de Computadoras

Clase Práctica - caché

ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA. SOLUCIONES Problemas de Gestión de Memoria Etiqueta Índice byte

ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA. SOLUCIONES EJERCICIOS BOLETÍN TEMA 3 (Gestión de Memoria). Curso 04/05.

PROBLEMAS TEMA 1: Estructuras de interconexión de un computador

Test: Conteste exclusivamente en HOJA DE LECTURA ÓPTICA. No olvide marcar que su tipo de examen es C

Jerarquía de memoria y memoria caché Ejercicios resueltos

4. Cuánta memoria puede direccionar con registros de 16 bits si la palabra es de 20 bits? Respuesta: Se puede direccionar 2 20 = 1Mb.

Estructura de Computadores

Ejercicio 1) Un sistema realiza una gestión de memoria virtual mediante

QUÉ ES LA MEMORIA CACHÉ?

Universidad Euskal Herriko del País Vasco Unibertsitatea Arquitectura de Computadores I Sistema de memoria 1

Microprocesadores para comunicaciones. Escuela Técnica Superior de Ingenieros de Telecomunicación. Organización y estructura de las memorias caché

Tema II. Unidad de memoria

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES

Tema 5. El sistema de memoria

Sistemas Operativos. Trabajo Práctico N ō 6

Asignatura: ASSEMBLER INF-153 LABORATORIO 1

Tema II. Unidad de memoria

Resolución de los Ejercicios de la Hoja 4

Primera Parte (5 puntos)

LECCIÓN 1. DISEÑO DE SISTEMAS DE MEMORIA

Ejercicios de multiprocesadores

Respuestas al Problemario Memoria Cache

MEMORIA EJERCICIO 1 EJERCICIO 2

EJERCICIOS RESUELTOS DEL TEMA 5

Tema 5: Memorias. Índice Conceptos básicos Parámetros característicos Jerarquía de memoria Memoria principal Tecnologías Estructura Mapa de memoria

RELACIÓN DE PROBLEMAS DE LÓGICA PROGRAMADA (TEMA 4)

Cuál es la frecuencia de acceso de una memoria de acceso aleatorio con un tiempo de acceso de 80 nseg. y un tiempo de ciclo de 100 nseg.?.

Práctica 5 - Memoria

Introducción a la Computación. Capitulo 4 Memoria Cache

Sistemas Electrónicos Digitales

ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA. Problemas de Gestión de Memoria.

Clase Práctica - caché

Estructura de Computadores. 1. Ejercicios Resueltos 1.1. Tema 3. La unidad de memoria I. La memoria física

Organización de Computadoras. Clase 10

Práctica 8 - Performance

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Tema 4. Estructura de un ordenador elemental

Ing. Carlos Bacalla Página 1 de 5

Trabajo Práctico Número 6

Arquitectura de Computadores II Clase #3

Organización de Computadoras. Clase 6

Organización de computadoras. Clase 11. Universidad Nacional de Quilmes. Lic. Martínez Federico

Trabajo Práctico Número 6 Arquitectura de Computadoras

ARQUITECTURA DE SISTEMAS PARALELOS. 3º ITIS. PROBLEMA DE MEMORIA VIRTUAL.

Estructura de Computadores Ingeniería Técnica en Informática de Sistemas. BOLETIN 4: Memoria


Guía de ejercicios # 11 - Jerarquía de memoria

Clase Práctica Memoria Caché

Memoria Caché. Organización de Computadoras Universidad Nacional de Quilmes

Tema 6: Memoria virtual. Óscar David Robles Sánchez Sofía Bayona Beriso David Miraut Andrés Luis Rincón Córcoles

TEORÍA (5 puntos) Puntuación: Desplazamiento

Arquitectura de Computadores. Apellidos, Nombre:

Memoria y caché. Organización del Computador I, verano de 2016

Procedimiento para el diseño de un mapa de memoria de un sistema basado en microprocesador:

25 de junio de /1 APELLIDOS, NOMBRE:

De qué hablamos cuando hablamos de Memoria Cache?

Ejercicios sobre gestión de memoria

Memoria Caché. 2do cuatrimestre de 2010

Memoria Cache. Clase Práctica Organización del computador I 2º Cuatrimestre de octubre. María Elena Buemi

MemoriaCache. Clase Práctica Organización del computador I 1º Cuatrimestre de mayo. María Elena Buemi

Enunciados de problemas. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Organización lógica Identificación de bloque

Diagrama a bloques de una computadora

Mapa de memoria. memoria CACHÉ

Análisis de la Afirmación I organización 2D

DIAGRAMA A BLOQUES DE UNA COMPUTADORA

TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL


LABORATORIO DE COMPUTADORAS

2002 Junio - 2 ª semana

Bus de direcciones. Bus de datos

Sistema de memoria. Introducción

Organización de computadoras. Clase 4. Universidad Nacional de Quilmes. Lic. Martínez Federico

Tema 6 (II) Jerarquía de Memoria

Memoria. Otros temas sobre cachés

Guía de ejercicios # 3 Memoria, Buses, Q2 y Accesos

1) En un DLX con segmentación ejecutamos el siguiente fragmento de código:

MEMORIA CENTRAL. Memoria central. 1

PROBLEMAS TEMA 1: Estructuras de interconexión de un computador

Ejercicios de jerarquía de memoria

Transcripción:

7.- Un memoria tiene 16 Mbytes de capacidad con palabras de 32 bits y trabaja con una memoria caché de 256 Kb dividida en 256 bloques agrupados en conjuntos de 2. a. Cuántos bits hay en cada uno de los campos de dirección de memoria? b. Si a partir de cierto momento la secuencia de direcciones solicitadas por la CPU es 0x050010, 0x00FE01, 0x108010, 0x000010, 0x00EF00, 0x10801A, 0x1F00F1, 0x0A080F, 0x0FFF25, 0x25EF4F, 0x0ABDE3, 0x0FFF43, 0x0A080F, 0x0080DE. Explicar razonadamente cuál será la evolución de los registros de etiqueta de los bloques de memoria caché afectados suponiendo que el algoritmo de reemplazo usado es el L.R.U.. Especificar la evolución de los contadores de uso de cada uno de estos bloques. Supóngase que inicialmente los bloques afectados de memoria caché están vacíos. Memoria cache 256 Kb 256 bloques de 1Kb. Memoria principal 16 Mb 16 K bloques de 1 Kb. Nº de conjuntos = 256/2 = 128 conjuntos de 2 bloques Si el tamaño de palabra es 32 bits las direcciones de memoria serán de 22 bits, o sea tengo una memoria de 4 Mpalabras de 32 bits por palabra El formato de dirección de memoria será: Etiqueta (7 bits) Conjunto (7 bits) Palabra (8 bits) Para las direcciones indicadas tendremos: Dirección Etiqueta Conjunto Palabra 050010H 0AH 00H 10H 00FE01H 01H 7EH 01H 108010H 21H 00H 10H 000010H 00H 00H 10H 00EF00H 01H 6FH 00H 10801AH 21H 00H 1AH 1F00F1H 3EH 00H F1H 0A080FH 14H 08H 0FH 0FFF25H 1FH 7FH 25H 25EF4FH 4BH 6FH 4FH 0ABDE3H 15H 3DH E3H 0FFF43H 1FH 7FH 43H 0A080FH 14H 08H 0FH 0080DEH 01H 00H DEH Los conjuntos involucrados son: 00H, 08H, 3DH, 6FH, 7EH y 7FH La evolución del contenido de los bloques de la cache es la siguiente:

00 08 3D 6F 7E 7F 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0A 1 2 00 1 2 3E 1 2 3 4 5 6 7 1 2 21 1 2 0 1 2 3 4 5 6 7 01 1 2 3 4 5 6 7 14 1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 10 11 12 14 1 1 2 3 4 5 6 7 8 9 10 15 1 2 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 01 6 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 4B 1 2 3 4 1 01 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 1F 1 2 0 1 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14

8. Sea un ordenador con una memoria de 1 Mb de capacidad y longitud de palabra de 32 bits. Esta máquina tiene una memoria caché de 16 Kb dividida en bloques de 64 bytes. Supongamos que, a partir de un cierto momento, la secuencia de direcciones solicitadas por la CPU es : 0x01FCA, 0x05FCD, 0x0D7C0, 0xD5C7, 0x027C4, 0x04FCB, 0x155C4, 0x04FC0, 0x077C3, 0x047C0, 0x185C3. Las funciones de mapa que pueden usarse son: i. Correspondencia directa ii. Correspondencia asociativa iii. Correspondencia asociativa por conjuntos de 2 vias c. Cuántos bits tiene cada uno de los campos de dirección en cada caso? d. Comparar las funciones de mapa utilizando el algoritmo de reemplazo LRU Tamaño bloque 64 bytes ( 2 4 palabras de 32 bits) campo palabra de 4 bits Nº de bloques en caché : 2 8 bloques Nº de bloques en memoria principal : 2 14 bloques Entonces tendremos los siguientes formatos : Directa : Etiqueta 6 bits Bloque 8 bits Palabra 4 bits Asociativa : Etiqueta 14 bits Palabra 4 bits Asociativa por conjuntos de 2 bloques Etiqueta 7 bits Conjunto 7 bits Palabra 4 bits Vamos a ver la evolución de la caché al ejecutar el programa anterior en los tres supuestos: Directa: Bloques 1 2 3 4 5 6 7 8 9 10 11 5C 0D 0D 0D 15 15 15 15 18 7C 0D 0D 02 02 02 02 07 04 04 FC 01 05 05 05 05 04 04 04 04 04 04 Se producen 3 faltas frías y 7 faltas por conflicto. Asociativa: en este caso si partimos de la caché vacía se producen 10 faltas frías. Asociativa por conjuntos de 2 vias: Conjunto 1 2 3 4 5 6 7 8 9 10 11 5C 1ª 1ª 1ª 1ª 1ª 1ª 1ª 30 2ª 2ª 2ª 2ª 2ª 7C 03 03 1A 1A 1A 09 09 09 09 08 08 0B 0B 0B 04 04 04 04 0E 0E 0E En este caso tenemos 4 faltas frías y 6 faltas por conflicto.

9.- Se dispone de un computador con memoria principal de 16 Mpalabras y tiempo de acceso de 100 ns y una memoria caché con organización asociativa por conjuntos con las siguientes características: tiempo de acceso 40 ns, 512 conjuntos, 2 bloques por conjunto, 4 palabras por bloque, política de reemplazo FIFO, lectura siempre a través de la caché y postescritura con ubicación en escritura (escribe primero en la caché y cuando se desaloja el bloque escribe en memoria principal). En un instante determinado se empieza a ejecutar el siguiente fragmento de programa: ADD (R1),(R2) INC R2 ADD (R1),(R2) CALL RUTINA... RUTINA: PUSH R3 En ese instante inicial el contenido de los registros y direcciones implicadas es el siguiente: R1= 0x808, R2= 0x814, R3= 0x52, PC= 0x10, SP= 0x1810, RUTINA= 0x1008 En ese instante el contenido de la caché es el siguiente: Conjunto 2 Conjunto 3 Conjunto 4 Conjunto 5 Etiqueta bloque 1 (*) 8 0 (*) 1 1 Etiqueta bloque 2 0 2(*) 2 3 (*) Donde (*) indica el bloque mas antiguo del conjunto. Generar la traza de este fragmento de programa. Indicar el tiempo que tarda en ejecutarse el fragmento de programa considerado, si tenemos en cuenta que el tiempo que tarda en ejecutar las instrucciones aritméticas es de 10 ns y que todas las instrucciones ocupan una palabra de memoria. A partir de los datos iniciales tendremos: Bloque: 4 palabras = 2 2 ; luego el campo de palabra es de 2 bits Cache: 512 conjuntos = 2 9 ; luego el campo de conjunto será de 9 bits Memoria principal: 16Mpalabras 2 24 palabras 2 22 bloques 2 13 bloques/conjunto ; luego el campo de etiqueta tiene 13 bits Etiqueta 13 bits Conjunto 9 bits Palabra 2 bits Vamos a ver como evoluciona la memoria caché al ir ejecutando el programa: Dirección Etiqueta Conjunto Palabra Acción PC 000010 0 4 0 Leer instrucción 011 000808 1 2 0 Leer operando (r1) 011

000814 1 5 0 Leer operando (r2) 011 000808 1 2 0 Escribir resultado (r1) 011 000011 0 4 1 Leer instrucción 012 000012 0 4 2 Leer instrucción 013 000808 1 2 0 Leer operando (r1) 013 000815 1 5 1 Leer operando (r2) 013 000808 1 2 0 Escribir resultado 013 013 0 4 3 Leer instrucción 014 00180F 3 3 3 Guardar PC en pila 01008 001008 2 2 1 Leer instrucción 01009 00180E 3 3 2 Guardar R3 en pila 01009 Conjuntos Inic. 10 808 814 808 11 12 808 815 808 13 180F 1008 180E 2 1 1 1 1 1 2 3 0 8 2 3 3 4 0 0 0 0 0 2 5 1 1 1 3 L L L E L L L L E L E L E Para la segunda pregunta tendremos: Instrucción Dirección Acción Tiempo Observaciones ADD 000010 Leer instrucción 40 000808 Leer operando (r1) 40 000814 Leer operando (r2) 40 Sumar 10 000808 Escribir resultado (r1) 40 INC 000011 Leer instrucción 40 Incrementar 10 ADD 000012 Leer instrucción 40 000808 Leer operando (r1) 40 000815 Leer operando (r2) 40 Sumar 10 000808 Escribir resultado 40 CALL 013 Leer instrucción 40 00180F Guardar PC en pila 40 Fallo 100+ 100 + 40 (+) PUSH 001008 Leer instrucción 40 Fallo 100 +40 00180E Guardar R3 en pila 40 Total 550 ns + 380 ns

(+) Suponemos que en 100 ns se reescribe el bloque descargado en la memoria principal, en otros 100 ns se carga el bloque de memoria principal en la cache. Y luego se vuelve a leer la palabra de nuevo.

10.- Sea un sistema dotado de memoria cache de código de 8Kpalabras con correspondencia asociativa por conjuntos de dos bloques y 512 bloques de capacidad. El tiempo de acceso a la memoria principal es de 1 μs y el de acceso a la cache de 100 ns. En este sistema se ejecuta un programa cuyo código se extiende desde la dirección 00400H hasta la 03500H. En este programa existen dos bucles anidados; el mas interno se ejecuta 10 veces y comprende desde la dirección 012FDH a la 014E0H; el bucle exterior se ejecuta 2 veces y sus instrucciones se encuentran entre las direcciones 00F00H y 030F0H. Dentro del bucle mas interno se accede a 5 variables dos veces y al principio se accede a estas variables una sola vez. Suponiendo que el código es lineal: Cuánto tiempo se empleará en la ejecución del programa si no está instalada la memoria cache? Calcular el índice de aciertos para este programa cuando se instala una memoria cache con el algoritmo FIFO Cuánto tiempo se empleará en leer las instrucciones del programa con la cache instalada? Tenemos 256 conjuntos y bloques de 16 palabras, como las direcciones de memoria principal son de 20 bits, las direcciones de memoria tienen el siguiente formato: Etiqueta (8 bits) Conjunto (8 bits) Palabra (4 bits) La estructura del programa es la siguiente: Inicio: Bucle: Bucle1: Fin Bucle1 Fin Bucle Fin 00400H ----- 00EFFH 00F00H ------ 012FCH 012FDH --(10 veces)--- 014E0H 014E1H ---(2 veces)-- 030F0H 030F1H ----- 03500H El número de instrucciones a ejecutar es: Parte A: Parte B Parte C Parte D Parte E De 00400H a 00EFFH tenemos : 11x 256 = 2816 instrucciones De 00F00H a 012FCH tenemos : 3FCH = 1020 instrucciones De 012FDH a 014E0H tenemos : 1E3H = 483 instrucciones De 014E1H a 030F0 tenemos : 1C0FH = 7183 instrucciones De 030F1H a 03500H tenemos : 40FH = 1039 instrucciones

En total tendremos: 2816 + 2x(1020 + 10x 483 + 7183) + 1039 = 29921 instrucciones Además tenemos accesos a la memoria para leer las variables, el total de accesos por datos es : 5 + 10x5x2 = 105 accesos a memoria. El nº total de accesos a memoria principal es de 30131 por tanto el tiempo total es 30131 µseg. Para el segundo punto vamos a comprobar la evolución de la memoria caché al ejecutar el programa: Conjunto Parte A Parte B Parte C Parte D Parte B2 Parte C2 Parte D2 Parte E 01 03 02 00 02 01 03 0F 10 01 03 02 02 01 03 01 03 02 2F 30 01 03 02 01 03 02 3F 40 01 03 02 00 02 01 03 4E 4F 50 00 02 01 03 00 02 01 03 00 02 01 03 EF F0 00 02 01 00 02 01 01 00 02 00 02 01 FF 01 00 02 Fallos 176 64 31 449 32 0 64 65 Al comenzar a ejecutar el programa se producen fallos por inicialización hasta llenar la caché (512 fallos). En ese momento se ha ejecutado hasta la instrucción 023FF, a partir de

ahí se producen fallos por conflicto que pondremos en las columnas sucesivas. Al final del bucle externo tendremos en la caché la situación indicada en la segunda columna. El nº total de fallos es de 949 Nº de referencias = 29921 Indice de aciertos = (29921-949)/29921 = 0,97 En cuanto a la tercera pregunta el tiempo requerido será: 896 * 1 μs + 29921 * 100ns = 3888,1 μs

11.- Un computador tiene una memoria principal de 64Kpalabras de 16 bits. También tiene una memoria caché totalmente asociativa de 2Kpalabras y 256 palabras por bloque. Suponemos que la caché está inicialmente vacía y que el algoritmo de reemplazo es MRU (Most Recently Used, más recientemente usado). Suponemos que la CPU ejecuta un bucle 5 veces, en el que accede a 2301 palabras, desde la dirección 0 a la 2300. Si la caché es 7 veces más rápida que la memoria principal, se pide: a) Formato de direcciones de memoria. b) Calcular el tiempo que se tarda en realizar estos accesos a memoria principal si el computador no tuviera memoria caché. c) Evolución de la memoria caché al ejecutar los bucles. d) Calcular cuántos fallos de caché se producen y sus causas e) Si cada vez que se produce un fallo primero se mueve el bloque completo de memoria principal a memoria caché y luego se lee el dato de la caché, calcular el tiempo que tarda la CPU en realizar estos accesos a memoria. Problemas de estructura y tecnología de computadores. S. Dormido y otros prob. 2-13 a) Las direcciones son de 16 bits al tener 64 Kpalabras. El campo de palabra es de 8 bits porque cada bloque tiene 256 palabras. La memoria principal tiene 256 bloques, por tanto el campo de etiqueta es de 8 bits. Etiqueta (8 bits) Palabra (8 bits) b) Si el tiempo de acceso a caché t c, a memoria principal será de 7 t c. Por lo que el tiempo total será : 2301x7 t c x5 c) Vamos a construir una tabla auxiliar para ver los bloques que intervienen en el bucle. Direcciones en decimal Direccional en hexadecimal Etiqueta de bloque 0-255 0000-00FF 00 256-511 0100-01FF 01 512-767 0200-02FF 02 768-1023 0300-03FF 03 1024-1279 0400-04FF 04 1280-1535 0500-05FF 05 1536-1791 0600-06FF 06 1780-2047 0700-07FF 07 2048-2303 0800-08FF 08 La caché tiene 8 bloques (2Kpalabras/256 palabras/bloque). Su evolución es la siguiente: Bloque caché Bucle 1 Bucle 2 Bucle 3 Bucle 4 Bucle 5 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 ¾ 4 4 4 4 4/5 5 5 5 5 5/6 6 6 6 6 6/7 7 7 7 7 7/8 8 8 8 8

En el bucle 1 al llegar el bloque 8 desaloja al último que se ha usado que es el 7. En los demás bucles el problema es similar. d) Según la tabla anterior se producen 8 fallos en frío y 5 fallos por capacidad. e) En cada acceso fallido se tiene que cargar la caché con el bloque en cuestión y luego se vuelve a acceder a la caché para leer la palabra. Tendremos pues dos componentes en el tiempo total: Tiempo de lectura de las 2301x5 palabras en caché = 2301x5xt c Tiempo de carga de los bloques en cache = 13x256x7t c Tiempo total = (2301x5 + 13x256)xt c

12.- Un computador tiene una memoria principal de 32Kpalabras de 16 bits. Tiene también una cache de 4K palabras dividida en conjuntos de 4 bloques con 64 palabras por bloque. Suponemos que la cache está inicialmente vacía. El procesador lee palabras de las posiciones 0, 1, 2,, 4351 en este orden. Entonces repite esta secuencia de lectura 9 veces mas. La cache es 10 veces mas rápida que la memoria principal. Estime la mejora resultante por el uso de la memoria cache, suponiendo una política LRU de reemplazo de bloques. Problemas de estructura y tecnología de computadores. S. Dormido y otros prob. 2-8 El tamaño del bloque es de 64 palabras = 2 6 ; luego el campo de palabra es de 6 bits. La caché tiene 4K palabras = 2 12 ; luego tiene 64 bloques y 16 conjuntos; por tanto el campo de conjunto tiene 4 bits. La memoria principal tiene 32K palabras = 2 15 ; luego tiene 512 bloques y 32 bloques por conjunto ; por tanto el campo de etiqueta es de 5 bits. El formato de direcciones será pues: Etiqueta (5 bits) Conjunto (4 bits) Palabra (6 bits) Si no tenemos instalada la memoria caché, llamando 10T al tiempo de acceso a memoria principal, tendremos que el tiempo que tarda en ejecutarse el programa es: T MP = 4352 x 10 x 10T = 435.200T Si tenemos memoria caché el tiempo total será el que corresponde a la lectura en memoria caché (suponemos que siempre lee de la caché), mas el tiempo de gestión de fallos. En este sentido podemos suponer que el tiempo de escritura del bloque en la caché se superpone con el de lectura en memoria principal y que el tiempo de búsqueda de etiquetas en la caché es despreciable al tratarse de memoria asociativa. Conjunto 0 Conjunto 1 Conjunto 2 Conjunto 3 B1 B2 B3 B4 etc 0 64/48 /64 16 16/0/64 32 32/16 48 48/32 1/65 65/49 17 17/1/65 33 33/17 49 49/33 2/66 66/50 18 18/2/66 34 34/18 50 50/34 3/67 67/51 19 19/3/67 35 35/19 51 51/35 Conjunto 4 4

4 20 20 36 36 52 52 Conjunto 15 15 15 31 31 47 47 63 63 Las 4352 primeras palabras corresponden a 68 bloques de la caché. Como la caché sólo tiene 64 bloques se llenarán todos ellos y además tendremos que efectuar las lecturas correspondientes a los bloques 64, 65, 66, 67. que reemplazarán a los bloques 0,1,2 y 3 de los conjuntos 0,1,2,3. Suponemos que el tiempo necesario para traer un bloque desde la memoria principal a la caché es la suma del tiempo empleado en traer cada una de las palabras del bloque. El tiempo empleado en este primer bucle será la suma del tiempo que se tarda en traer todos los bloques a la caché, mas el tiempo de lectura de cada palabra en la caché, menos el tiempo de las 68 primeras palabras de cada bloque cuya lectura se superpone con la escritura del bloque en la caché. Tendremos pues: T 1 = 4352 palabras x 10T/palabra + 4352 palabras x 1T/palabra - 68 palabras x 1T/palabra = 47804 T Para los demás bucles como se producen 5 fallos de bloque en 4 conjunto tendremos: T 2 = 5x4x64 palabras x 10T/palabra + 4352 x 1T/palabra 20 palabrasx 1T/palabra = 17132 T Por tanto en total T = 47804 T + 9x 17132T = 201992T Luego la mejora total obtenida es (435200-201992) /435200 = 0.538 casi un 54%

13.- Un computador tiene una memoria principal de 64Kpalabras de 16 bits y una caché de 8K palabras con correspondencia asociativa por conjuntos de 4 líneas de 16 palabras cada una. La CPU ejecuta un programa que comienza en la dirección 4352 y termina en la dirección 12591 repitiendo la secuencia del programa 5 veces mas. Teniendo en cuenta que el algoritmo de reemplazo es el FIFO y que la memoria principal tiene un tiempo de acceso de 200 ns y la caché de 40 ns y además está vacía inicialmente. Se pide: a) Calcular el nº de bits que utiliza cada campo del registro de direcciones de la memoria principal. b) Calcular el nº de palabras que tiene el programa c) Calcular la cantidad de bloques que tiene el programa y los números de bloque que le corresponden en la memoria principal. d) Calcular la dirección de inicio y la dirección final de los primeros y los dos últimos bloques del programa, tal y como se encuentra ubicado en memoria principal. e) Calcular la correspondencia entre cada bloque de la memoria principal y el conjunto de la caché. f) Calcular el tiempo que tarda en ejecutarse el programa si no hubiera memoria caché. g) Calcular el tiempo que tarda en ejecutarse el programa con memoria caché. h) Calcular el % de mejora que supone la utilización de memoria caché. Nota: La primera palabra de cada bloque se transmite directamente a la CPU a la vez que se transmite el bloque entero a la memoria caché. Estructura de computadores A. Soriano y otros pag. 168 a) Tenemos 16 palabras por bloque luego el campo de palabra es de 4 bits. El nº de bloques de la caché es de 2 13 /16 = 2 9 = 512. Luego el nº de conjunto es de 128 y por tanto el campo de conjunto es de 7 bits. Por último, el nº de bloques de memoria principal es 2 16 /16 = 2 12 y a cada conjunto le corresponden 32 bloques por lo que el campo de etiqueta es de 5 bits. Etiqueta (5 bits) Conjunto (7 bits) Palabra (4 bits) b) Comienza en la 4352 y termina en la 12591 por tanto son 8240 palabras c) La dirección inicial es 4352 que es la palabra 0 del bloque 272 (dividiendo 4352 entre 16 se obtiene de cociente 272 y de resto 0). La dirección final es 12591 que es la palabra 15 del bloque 786. En total tiene 515 bloques. d) Las direcciones pedidas son: inicio 272 = nº bloque X 16 = 272 x16 = 4352 final 272 = nº bloque x 16 + 15 = 272x16+15 = 4367 inicio 273 = 4368 final 273 = 4383 inicio 785 = 12560 final 785 = 12575 inicio 786 = 12576 final 786 = 12591

e) La correspondencia es asociativa por conjuntos luego a cada bloque de memoria principal se le asocia un bloque del conjunto que se obtiene calculando el resto de la división entera del nº de bloque de memoria principal y 128. f) En ausencia de caché el tiempo será = 8240x6x200 = 9888000 ns = 9.888 ms g) Tenemos que calcular los fallos de bloque al ejecutar el programa. En el primer bucle se rellena la caché como se indica en la primera columna de la tabla siguiente: Conjunto Bucle1 Bucle 2 Bucle 3 Bucle 4 Bucle 5 Bucle 6 384 384 0 512 512 640 640 768 768 15 16 17 18 19 399 399 527 527 655 655 783 783 272/784 784/656 400 400/272/784 528 528/400 656 656/528 273/785 785/657 401 401/273/785 529 529/401 657 657/529 274/786 786/658 402 402/274/786 530 530/402 658 658/530 275 275 403 403 531 531 659 659 127 383 383 511 511 639 639 767 767 donde vemos que se comienza a llenar por el bloque 272 en el conjunto 16 y llena la cache totalmente y produce 3 fallos por conflicto en los bloques 784,785 y 786.

En el bucle 2 y los siguientes tenemos 5 fallos de bloque en 3 conjuntos. Por lo tanto los tiempos empleados serán : T 1 = T fallos + T aciertos = 8240 x 200 ns + (8240 x 40 ns 515x40 ns) = 1,957 ms T 2 = T fallos + T aciertos = 5 x 3 x 16 x 200 ns + (8240 x 40 ns -5 x 3 x 40 ns) = 377μs Luego en total T = T 1 + 5xT 2 = 3.842 ms h) Luego el porcentaje de mejora es (9.888-3.842)/9.888 = 0.6114 o sea el 61,1%