Se desea crear una función Integral que permite calcular la

Anuncio
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.
Descargar