Final de Septiembre

Anuncio
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES
I.T.I. Gestión, I.T.I. Sistemas e I. Superior, Grupos I y II
Examen final – 11 de septiembre de 2006
Apellidos:
Nombre:
D.N.I.:
Grupo:
Sistemas I ‰
Sistemas II ‰
Gestión I ‰
Gestión II ‰
Superior ‰
PARTE II: CUESTIONES TEÓRICO-PRÁCTICAS
1.
(2 puntos) Dada la ristra de 12 bits siguiente, 0011 1110 0111, se pide:
a)
(0,25 puntos) Calcular el número que representa si se interpreta como un
entero en representación sesgada.
b) (0,25 puntos) Calcular el número que representa si se interpreta como un
entero en complemento a 1.
c) (0,5 puntos) Calcular el número que representa si se interpreta como un
número real donde se reservan 4 bits para el exponente (sesgo normal) y 7
bits para la mantisa, la base oculta es 4.
d) (0,5 puntos) ¿Cuál es el error absoluto cometido al representar en el formato
del apartado c) el número real –6.35)10?.
e) (0,5 puntos) Calcular el número en binario natural de 8 bits si la ristra de 12
bits corresponde a una codificación Hamming con paridad impar.
2.
(2 puntos) Utilizando la metodología vista en clase para la inclusión de nuevas
instrucciones en el esquema de implementación multiciclo, realice las fases de
análisis y diseño de una nueva instrucción, “load_r_m $x, $y, $z”, que almacene
en el registro “x” el contenido de la dirección de memoria apuntada por el
registro “y” o el contenido del registro “z” en función del valor original de “x”. Si
“x” almacena originalmente el valor 4, la instrucción guarda la palabra de
memoria apuntada por “y” en “x”; en otro caso, “x” pasará a almacenar el
contenido del registro “z”:
load_r_m $x, $y, $z
# IF ($x == 4) $x = Memoria[$y];
# ELSE $x = $z;
La fase de diseño debe incluir: las modificaciones a realizar al camino de datos
(si las hay), los nuevos estados a añadir al autómata y el valor de las señales de
control en cada uno de los nuevos estados. La solución se puede dar sobre las
figuras que hay en el reverso, pero aun así habrá que justificar en papel las
modificaciones realizadas. Obviamente, también será necesario entregar la hoja
del examen con el nombre y los apellidos escritos en el lugar correspondiente.
3.
(2 puntos) Una empresa necesita escanear documentos de tamaño A4 a una
resolución de 300ppp (puntos por pulgada lineal) en escala de grises de 16 bits
(niveles de gris de 0 a 65535). Esto es, cada punto del papel produce 16 bits. El
documento A4 tiene un tamaño de 8 ¼ pulgadas de ancho y 11 ¾ de largo. Se
barajan dos posibilidades para comprar el escáner, que estará conectado a un
Pentium II a 300MHz:
i) Por el puerto paralelo, que tiene una velocidad de 360.360 bytes por segundo.
ii) Por el puerto USB 1.1, con una velocidad de 1,5 Mbytes por segundo.
Teniendo en cuenta estos datos, se quiere saber:
a)
(0,5 puntos) ¿Cuánto tiempo tardará en escanear una página un escáner
conectado por cada puerto i) y ii)?
b) (0,5 puntos) En el caso i) el puerto paralelo se programa por interrupciones
en las que se procesa un byte. Cada interrupción requiere de 200 ciclos para
ser procesada. ¿Qué porcentaje de CPU se dedica a la E/S en este caso?
c) (0,5 puntos) En el caso ii) se utiliza DMA. El controlador USB tiene un
buffer de 128 bytes, que se utiliza para hacer transferencias DMA. El tiempo
de programar el DMA para cada transferencia es de 500 ciclos, y el de tratar
la interrupción de finalización es de 200 ciclos. ¿Qué porcentaje de CPU se
dedica a la E/S en este caso?
d) (0,5 puntos) Finalmente se baraja otra estrategia: Polling. Cada cierto tiempo
la CPU pregunta al escáner si tiene un byte disponible. Cada una de estas
preguntas le llevan al procesador Pentium II 50 ciclos. Independientemente
de la conexión, se quiere que mientras se escanea un documento, el
procesador no pase más de un 10% sirviendo el proceso de polling de la E/S.
¿Cuánto tardará entonces en escanearse una página A4?
SOLUCIONES
1. (2 puntos) Dada la ristra de 12 bits siguiente, 0011 1110 0111, se pide:
a)
(0,25 puntos) Calcular el número que representa si se interpreta como un entero en representación sesgada.
N = 0011111001112 – S = 999 – 211 = 999 – 2048 = -1049
b) (0,25 puntos) Calcular el número que representa si se interpreta como un entero en representación de complemento a 1.
N = 0011111001112 = 999 (número positivo)
c)
(0,5 puntos) Calcular el número que representa si se interpreta como un número real donde se reservan 4 bits para el
exponente (sesgo normal) y 7 bits para la mantisa, la base oculta es 4.
(s,e,m) = 0 0111 1100111
s = 0 (positivo)
e = E + S = 0111 = 7, (S = 23 = 8) => E = 7-8 = -1
M = 0.m (normalización fraccionaria ya que B=4) = 0.1100 1112 = 12/16 + 14/256
M = 0.8046875
N = +0.8046875 × 4-1 = 0.201171875
d) (0,5 puntos) ¿Cuál es el error absoluto cometido al representar en el formato del apartado c) el número real –6.35? (se
realiza redondeo a la par).
N= -6.35; 6 = 1102 ; 0.35 ×16 = 5,6 (0101) ; 0,6 ×16 = 9,6 (1001) ; 0,6 ×16 = 9,6 (1001)
N=-110.0101100110012 = -0.01100101100110012 × 42 =>
(s=1, e=E+S=8+2=10=10102, m=0110010 11... => m=0110011)
Por tanto la ristra que representa –6.35 es 1 1010 0110011, que se corresponde con el número: N’=-(6/16+6/256) × 42 = 0.3984375 × 42 = -6.375
El error absoluto cometido es: error = 6.375-6.35=0.025
e)
(0,5 puntos) Calcular el número en binario natural de 8 bits si la ristra de 12 bits corresponde a una codificación
Hamming con paridad impar.
0 0 1 1 1 1 1 0 0 1 1 1
1 2 4 8
1
2
3
4
5
6
7
8
9
10
11
12
∑
1 1
1
1
1 1
1 1 1
1
1
1 1
1
1
1 1
4 5 5 3
El error se encuentra en el bit 1, que resulta ser un bit de paridad, por lo que la zona de datos no ha sido afectada. El número
enviado fue: N = 111101112 = 247.
2.
En primer lugar, debemos averiguar qué uso se va a hacer de los tres elementos básicos del camino de datos: banco
de registros, ALU y memoria.
•
•
•
Banco de registros: escribir $x, leer $x, leer $y, leer $z.
ALU: Restar $x, 4 y mirar señal Cero.
Memoria: leer Memoria[$y].
A continuación debemos establecer el orden en que se deben realizar estas operaciones a partir de las dependencias
existentes para llegar a una planificación del trabajo a realizar en los diferentes ciclos de ejecución:
Banco Reg:
Leer $y
Leer $x
Leer $z
Escribir $x*
ALU:
$x - 4
Memoria:
Leer Memoria[$y]
Como podemos observar, la instrucción requiere en el peor de los casos la lectura de 3 registros. Evidentemente, con la
estructura del banco de registros actual (dos puertos de lectura), se requieren dos ciclos para hacer dicha lectura. De esta
forma, leeremos primeramente los registros sobre los que tendremos que hacer alguna acción posterior con otra unidad
funcional ($x y $y), para después pasar a leer $z (observar que dicha lectura se realizará en paralelo con dichas acciones).
Finalmente, el valor a escribir en $x dependerá del resultado de la resta. Esto hace que el trabajo se reparta en los ciclos
de la siguiente manera:
Ciclos:
2
Banco Reg:
3
Leer $y
Leer $x
4
Escribir $x, (Memoria[$y] si
cero=1)
($z si cero = 0)
Leer $z
$x – 4
Leer Memoria[$y]
ALU:
Memoria:
El formato más adecuado para la instrucción es un formato R, ya que hay que especificar 3 registros. A continuación se
muestra una posible asignación de campos (rs, rt, rd) a registros:
Formato (R):
lrm
$x
$y
$z
--
--
Ciclos:
2
3
Banco de
Reg.:
A=Leer Reg[x]
B=Leer Reg[y]
A=Leer Reg[x]
B=Leer Reg[z]
ALU:
Memoria:
ALUOut = A – 4
MDR=Leer Mem[B]
Señales:
SelRegB = 1
SelALUA = 1
SelALUB = 01
ALUop = 01
IoD=10
LeerMem=1
SelRegB = 0
4
Escribir Reg[x], (MDR si
cero=1)
(B si cero=0)
ALUOut = A – 4
SelALUA = 1
SelALUB = 01
ALUop = 01
MemaReg=1
Lrm=1
RegDest=10
EscrReg=1
En gris aparecen aquellas operaciones que no podemos realizar con la ruta de datos actual, y en cursiva aquellas
señales de control que han sido añadidas, así como las acciones que es necesario mantener de un ciclo al siguiente para
asegurar la corrección del resultado. Serán necesarias las siguientes modificaciones en la ruta de datos:
•
•
•
B=Leer Reg[z]: añadir un nuevo multiplexor para poder leer a través del segundo puerto de lectura del banco de
registros bien el contenido del registro especificado en el campo rt del formato R, bien el especificado en el
campo rd. Este nuevo multiplexor estará controlado por la señal SelRegB.
Leer Mem[B]: añadir una nueva entrada al multiplexor controlado por la señal de control IoD procedente de la
salida del registro B—entrada 10—, que se ampliará hasta los 2 bits.
Escribir Reg[x]: añadir una nueva entrada al multiplexor controlado por la señal RegDest—entrada 10—de
forma que se pueda escribir también el registro especificado en el campo rs del formato R. Así mismo, será
necesario también añadir un nuevo multiplexor que seleccione el dato a escribir en el banco de registros (la
salida del multiplexor controlado por la señal de control MemaReg—a través de la entrada 0—o el contenido
del registro intermedio B—a través de la entrada 1—). Este multiplexor estará controlado por el resultado de
realizar la operación AND de la señal de control Lrm (se activa únicamente cuando ejecutamos la instrucción
l_r_m) y el complemento de la señal Cero de la ALU.
3.
Un folio A4 tiene 8,25 x 11,75 pulgadas, que multiplicadas por 300 puntos por pulgada lineal (90.000 puntos por pulgada
cuadrada) sale un total de 8,25 * 11,75 * 90.000 =8.724.375 puntos. Multiplicado por 2 bytes, 17.448.750 bytes.
a) A la máxima velocidad de transferencia, una página A4 tardará
17.448.750/360.360 = 48,42 segundos en el caso i), y
17.448.750 / (1.5*1024*1024) = 11.09 segundos en el caso ii).
b) El hardware genera 360.360 bytes por segundo, esto es, 360.360 interrupciones por segundo. Si tratar cada interrupción
tarda 200 ciclos, esto hace un total de 72.072.000 ciclos. La CPU va a 300 Mhz, esto es, 300.000.000 ciclos por segundo. En
recoger todas las interrupciones gasta entonces 72.072.000 / 300.000.000 = 24,024%.
c) En un segundo se producen por tanto en este caso 1.5 Mbytes (1.572.864 bytes). Como el buffer es de 128 bytes, se tienen
que realizar 1.572.864/128 = 12.288 transferencias DMA. Cada una necesita 500 + 200 ciclos. Por lo tanto, los ciclos que se
gastan en E/S son 12.288 * 700 = 8.601.600 ciclos. El porcentaje de ciclos dedicados a E/S será entonces
8.601.600/300.000.000 = 2,86%.
d) Un 10% de los 300.000.000 de ciclos por segundo del procesador son 30.000.000 de ciclos dedicados a E/S como
máximo. Cada polling tarda 50 ciclos, por lo que como máximo, se harán 30.000.000 / 50 sondeos = 600.000 sondeos. En
cada una de ellas, se lee un byte. Como el documento vimos que constaba de 17.448.750 bytes, a 600.000 bytes por segundo
tardará 17.448.750/600.000 segundos = 29,081 segundos.
Descargar