UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 31 de enero de 2003 Ejercicio 1 (4 puntos). La figura adjunta presenta el esquema simplificado de una CPU de 32 bits. La CPU se encuentra conectada a una memoria, que se direcciona a nivel de byte y que requiere dos ciclos para las operaciones de lectura y escritura. El banco de registros incluye los registros de propósito general visibles al usuario. Este banco consta de 16 registros con dos puertas de salida (A y B) y una puerta de entrada (A´). El primer registro (R0) del banco se encuentra cableado a cero. La unidad aritmético-lógica es capaz de realizar 16 operaciones aritméticas y lógicas (sumar, restar, multiplicar, dividir, incrementar, decrementar, etc.). PC FP CM L E “0100” A B 0 Banco de Registros 1 2 Mux. X XY 1 2 3 Mux. Y Estado Memoria Principal D TP Bus de Direcciones FRA1 FRA2 A' 0 3 Operador OP DB DA XX RA TD TSA TRD CR SP FSD FD FSA FLM TBRA TRA TSD TA I PO Estado Comparador Unidad de Control RF Reloj Oscilador FI TRM Bus de Datos TI =0 <0 Desbord. Acarreo Interr. . Inhib. Int. Núcl./Usu. FEST RM FEM Señales de Control DA DB OP XX XY ........ Control de E/S Sobre esta arquitectura se quiere analizar el impacto que tienen, en cuanto a rendimiento, diferentes juegos de instrucciones sobre la siguiente sentencia de un lenguaje de alto nivel: A = B + C; Considerando que los valores correspondientes a las variables A, B y C residen en memoria y que las tres variables corresponden a datos de tipo entero, se quiere analizar tres tipos de modelos de ejecución: 1. Modelo de ejecución Registro-Registro. 2. Modelo de ejecución Memoria-Memoria. Para este modelo considere que la dirección de memoria 0 tiene almacenado de forma cableada el valor 0. 3. Modelo de ejecución a pila. En este caso considere que los datos que se apilan y desapilan se encuentran en memoria principal. Se pide: a) Microprograme a nivel de operaciones elementales el ciclo de fetch. Indique además, para cada operación elemental, las señales de control necesarias. b) Para cada uno de los modelos de ejecución anterior indique las instrucciones en ensamblador que son necesarias para ejecutar la sentencia de alto nivel A = B + C; c) Para cada una de las instrucciones en ensamblador obtenidas anteriormente, indique el formato que debería tener la correspondiente instrucción de máquina. Considere que en todos los modelos se desea disponer de 130 instrucciones de máquina. d) Determine cuál de los modelos de ejecución anterior permite ejecutar en un menor número de ciclos la sentencia A = B + C; Ejercicio 2 (3 puntos). Escriba en ensamblador del MIPS R2000 una función que realice la factorización de un número entero. Esta función recibe en $a0 el número entero a factorizar e imprime por pantalla todos los factores primos del número pasado como argumento. La factorización de un número supone encontrar la descomposición del mismo como producto de números primos. Por ejemplo: Factorizar(15) = 5 * 3 * 1 Factorizar(30) = 5 * 3 * 2 * 1 Factorizar(72) = 3 * 3 * 2 * 2 * 2 * 1 Ejercicio 3 (3 puntos). Un computador de 32 bits que se direcciona a nivel de byte posee una memoria caché de datos de 4 KB y una caché de instrucciones de 2 KB. Ambas cachés utilizan una función de correspondencia directa y su tamaño de bloque es de 4 palabras. El tiempo de acceso al sistema de memoria en caso de acierto es de 20 ns. En caso de fallo, el tiempo de acceso (incluyendo la actualización de la caché) es de 100 ns. La memoria caché utiliza una política de actualización diferida (post-escritura, write-back o copy-back). El tiempo para escribir un bloque de memoria caché a memoria principal es también de 100 ns. En el computador descrito se ejecuta el siguiente fragmento de código, que se almacena a partir de la dirección de memoria 0x00F00000: bucle: move $t0, $zero lw $t1, x($t0) sw $t1, y($t0) addi $t0, $t0, 4 bne $t0, 12, bucle fin: Donde x se corresponde con la dirección de memoria 0x70000000 e y se corresponde con la dirección de memoria 0x00000400. Todas las instrucciones usadas en el fragmento de código ocupan una palabra cada una. Se pide: a) Determine cuál es le tiempo medio de acceso a memoria para el programa descrito. b) Si se sustituye la memoria caché de datos, por otra que utilice una función de correspondencia asociativa por conjuntos de 4 entradas (4 vías) que utiliza una política de sustitución FIFO ¿cuál será el tiempo?