UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ESTRUCTURA DE COMPUTADORES 1 de septiembre de 2003 Ejercicio 1 (3.5 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 tres 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 I PO Unidad de Control RF Reloj Oscilador Estado Comparador FI TRM Bus de Datos TI =0 <0 Desbord. Acarreo Interr. . Inhib. Int. Núcl./Usu. FEST RM FEM TSD TA Señales de Control DA DB OP XX XY ........ Control de E/S Se pide: a) Indicar los ciclos que ocuparía la instrucción de máquina que menor número de ciclos necesita para su ejecución en este computador. Indique para cada uno de los ciclos, las operaciones elementales y las señales de control que deben activarse. b) ¿Qué modificaciones se podrían hacer en este computador para reducir el número de ciclos anterior? c) Se quiere incluir en este computador la siguiente instrucción INC_BYTE .R. Esta instrucción incrementa el contenido del registro R en una unidad. Los valores que puede tener el registro van de 0 a 255, es decir, el incremento del registro con valor 255 produce un nuevo valor de 0. Si el registro incluye un valor fuera de rango se genera un desbordamiento. Microprograme a nivel de operaciones elementales esta instrucción. d) ¿Qué problemas plantea esta arquitectura para la implementación de esta instrucción? Proponga una modificación que reduzca el número de ciclos necesarios para su ejecución. Ejercicio 2 (3.5 puntos) Se desea crear una función en ensamblador para el MIPS R2000 llamada Integral que permite calcular la integral de una función entre dos valores dados. Para ello se utilizará el método de aproximación por rectángulos entre los dos puntos indicados. Este método consiste en sumar el área de un conjunto de rectángulos. F(x) b a F(a) xi xi+1 El área de cada uno de los rectángulos es el producto de la base por la altura. La base (B) de todos los rectángulos es igual y se calcula dividiendo el tamaño del segmento definido por [a, b] por el número de rectángulos (n) que se quieren usar (cuantos mas rectángulos se utilicen más preciso será el resultado). Al obtener el tamaño de la base se pueden definir un conjunto de puntos (xi) que nos ayudarán en los cálculos. La altura de cada rectángulo será el valor de F(x) en cada uno de los puntos indicados. Por ejemplo, el área del rectángulo indicado en la Figura será: B*F(xi) Por lo que el cálculo del área se reduce a sumar todas estas áreas: a b n F ( x ) B F ( xi ) 1 La función Integral recibirá los argumentos en los registros indicados: $a0: Dirección donde empieza el código de la función F(x). $a1: Coordenada x inicial (a). $a2: Coordenada x final (b). $a3: Número de rectángulos a utilizar (n). La función deberá devolver en el registro $v0 el resultado del calculo de la integral definida entre los puntos a y b para una función dada F(x). Téngase en cuenta que todos los valores con los que se trabaja son números reales (formato IEEE 754), por lo que habrá que hacer uso del coprocesador y de las instrucciones necesarias para ello. NOTA: La función F(x) siempre tiene un parámetro que se pasa en el registro $a0 y el valor devuelto se recibe en el registro $v0. Ejercicio 3 (3 puntos) Un computador de 32 bits que direcciona a nivel de byte tiene mapas de direcciones separados para memoria principal y para entrada/salida. Por ello, además de todas las instrucciones disponibles en el MIPS R2000 ofrece las siguientes instrucciones de máquina: in rdest, direccion out rdest, direccion El computador tiene conectado un scanner que permite digitalizar imágenes con una resolución de 1280x1024 pixels. El módulo de E/S del dispositivo tiene las siguientes características : Registro de control en la dirección 0x1100. Registro de estado en la dirección 0x1101. Buffer de datos que permite acceder a las direcciones en el rango 0x1000 a 0x10FF. Registro de datos adicional en la dirección 0x1102. Cuando se desea digitalizar una imagen se sitúa en le registro de control la instrucción INICIAR_RASTREO (0). En respuesta a esta instrucción el dispositivo digitaliza la imagen y cuando la digitalización ha finalizado cambia el valor del registro de estado pasando de DIGITALIZANDO (0) a PREPARADO (1). A continuación, se debe situar en el registro de control la instrucción SIGUIENTE_BLOQUE(1) para que el módulo cargue el siguiente bloque de datos en el buffer de datos. Cuando el módulo de entrada/salida recibe la instrucción SIGUIENTE_BLOQUE, coloca en el registro de estado el valor CARGANDO_BLOQUE (2) y cuando ha finalizado de cargar el bloque almacena en dicho registro el estado PREPARADO (1). Antes de almacenar en el registro de estado el valor PREPARADO se almacena en el registro de datos adicional el número de pixels que forman el bloque, que puede ser menor que 255 en el caso del último bloque. Las imágenes se digitalizan en color utilizando la codificación CMYK que requiere 4 bytes para representar un color. De este modo el color de cada pixel viene determinado por un valor de 32 bits. Como las imágenes tienen una resolución de 1280x1024, se necesitan exactamente 1,310,720 palabras de 32 bits para codificar una imagen digitalizada. Escriba un subprograma que realice la digitalización de una imagen (mediante entrada/salida programada) y almacene la imagen a partir de la dirección 0x00100000 de memoria principal.