Examen intercuatrimestral (24/abril/2008)

Anuncio
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES
1º I.T.I.G. – I.T.I.S.
Examen Intercuatrimestral
Nombre: __SOLUCIÓN______________________________________
Madrid, 24 de abril de 2008.
NOTAS:
•
•
•
•
Duración: 60 minutos.
Se puede hacer a lápiz.
No se permiten apuntes ni calculadora.
No se permite desgrapar las hojas.
1. (2 puntos)
Indique cuáles de las siguientes afirmaciones son Verdaderas (V) o Falsas (F). Las
respuestas correctas cuentan 0’1 puntos y las erróneas cuentan -0’1 puntos.
Afirmación
1.- La memoria forma parte del Camino de Datos.
2.- En un computador basado en la arquitectura Von Neumann, el
procesamiento de los datos se realiza en el Camino de Datos.
3.- En lenguaje de máquina, cada instrucción está representada con cadenas de
0’s y 1’s.
4.- Utilizando un Bus Triestado, se pueden conectar varios emisores a un
mismo bus.
5.- La sustitución de los tubos de vacío por transistores dio lugar a los
ordenadores de 3ª generación.
6.- Un programa escrito en ensamblador de un Pentium puede ser
perfectamente ejecutado en un procesador MIPS.
7.- El tamaño del bus de direcciones depende de la cantidad de memoria a
direccionar.
8.- Dos ordenadores con la misma arquitectura tienen obligatoriamente el
mismo número de registros.
9.- La interconexión entre los registros y los elementos de proceso se puede
realizar mediante multiplexores.
10.- La señal WEN (Write-Enable) de un registro es la que permite colocar el
dato en el Bus, siempre que éste sea triestado.
11.- En las memorias de acceso aleatorio, el tiempo de acceso al dato no
depende de la posición del dato, pero sí depende del retardo de la circuitería.
12.- Los registros y las memorias SRAM y DRAM son de acceso aleatorio e
internas al ordenador.
13.- La memoria Cache aprovecha la localidad temporal de los datos, lo que
permite acceder antes al dato y optimizar el tiempo de ejecución del programa.
14.- Con la estructura interna del banco de registros vista en clase, no es
posible leer y escribir el mismo registro al ejecutar una instrucción.
15.- En las instrucciones de MIPS con direccionamiento implícito es
obligatorio no indicar el operando del resultado.
16.- El DVD se considera memoria terciaria dentro de la jerarquía de
memorias, y permite almacenar grandes cantidades de información.
V/F
V
V
V
V
F
F
V
V
V
F
V
V
V
F
V
V
1
17.- Un programa en una máquina CISC, por lo general, ocupa menos
posiciones de memoria que el mismo programa en una máquina RISC.
18.- Para leer un dato de un registro se debe activar la señal de lectura y
esperar a que se dé el flanco de reloj, por eso se dice que el acceso es asíncrono
19.- La transferencia de información entre las memorias primaria, secundaria y
terciaria se hace en grandes bloques de información.
20.- Con la instrucción sll se realizan desplazamientos a la izquierda, lo que
permite multiplicar el número original por potencias de 2.
V
F
V
V
2. (1’5 puntos)
Si trabaja con un procesador que direcciona posiciones de Memoria de 16 bits, con un
Bus de Direcciones de 32 líneas, indique la máxima cantidad de Memoria Principal que
puede direccionar expresándola en:
a) Bits
c) Kilobytes
b) Bytes
d) Gigabytes
Con 32 líneas en el bus de direcciones se pueden direccionar 232 posiciones =
22·230 posiciones = 4 Gigaposiciones de memoria (de 16 bits en este caso). Por
lo tanto la cantidad de memoria que se puede direccionar es:
a) Bits: 4 G x 16 bits = 64 Gbits = 236 bits = 68.719.476.736 bits.
b) Bytes: 4 G x 2 Bytes (16 bits) = 8 GB = 233 Bytes = 8.589.934.592 Bytes.
c) Kilobytes: 4 G x 2 Bytes = 8 GB = 8 · 220 kB = 8.388.608 kB
d) Gigabytes: 4G x 2 Bytes = 8 GB.
3. (1’5 puntos)
a) Dibuje una ALU de 1 bit con las funciones AND, OR y Suma Aritmética.
b) Modifique la ALU anterior para ampliarla con la función lógica XOR.
c) Dibuje una ALU de 4 bits, partiendo de ALU’s de 1 bit como la del apartado
anterior.
a) [Véase página 20 del tema 1]
2
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES
1º I.T.I.G. – I.T.I.S.
Examen Intercuatrimestral
b) Al multiplexor se le pone una entrada más (la 3) a la que entra el
resultado XOR de A y B.
c) [Véase página 21 del tema 1]
La solución es como la figura mostrada pero donde pone 31 hay que
poner 3, porque es de 4 bits.
4. (1 punto)
Se dispone de un sistema de computación basado en MIPS, y en un momento dado
algunos de los registros y parte de la memoria contienen la siguiente información:
s0
s1
s2
s3
s4
t0
t1
t2
0x1234.5678
0x1234.5677
0xAA83.7450
0x0000.000C
0x0000.1234
0xABEC.EDEE
0xAE10.ABCD
0xABCD.EF01
0x0000.1230
0x0000.1231
0x0000.1232
0x0000.1233
0x0000.1234
0x0000.1235
0x0000.1236
0x0000.1237
0xA1
0x1C
0xFE
0xCA
0xD0
0xDA
0xB0
0xCE
Sabiendo que la arquitectura es little endian, indique qué registros y/o posiciones de
memoria se modifican en cada una de las instrucciones siguientes. Considere dichas
instrucciones totalmente independientes unas de otras, es decir, para cada instrucción
tome los valores de registros y memoria indicados en la tabla anterior.
a) sub $t0,$s1,$s0
b) ori $t1,$s2,0xF1FA
c) sra $t2,$s2,0xC
d) sltiu $t0,$s1,0xB0CA
e) lw $s4,-4($s4)
f) sh $s2,2($s4)
3
a) sub $t0, $s1, $s0: esta instrucción realiza la siguiente operación t0 = s1
– s0. Como s1 = 0x1234.5677 y s0 = 0x1234.5678, se diferencian en 1,
pero como s1 < s0, la operación anterior devolverá -1, que en
hexadecimal de 32 bits es 0xFFFF.FFFF. Por lo tanto
t0 = 0xFFFF.FFFF.
b) ori $t1, $s2, 0xF1FA: esta instrucción hace la función lógica OR entre el
contenido del registro s2 y el valor inmediato 0x0000.F1FA. Como
s2 = 0xAA83.7450, al hacer la OR con 0x0000.F1FA el resultado será
t1 = 0xAA83.F5FA.
c) sra $t2, $s2, 0xC: esta instrucción realiza un desplazamiento aritmético
(extendiendo el signo) del contenido de s2 durante 0xC (12d) bits. Como
s2 = 0xAA83.7450, al desplazar 12 bits a la derecha extendiendo el
signo quedará t2 = 0xFFFA.A837
d) sltiu $t0, $s1, 0xB0CA: esta instrucción pone a ‘1’ el registro t0 si el
contenido de s1 es menor (sin tener en cuenta el signo) que el inmediato
0x0000.B0CA. Como s1 = 0x1234.5677 > 0x0000.B0CA, la condición no
se cumple y por tanto el resultado será t0 = 0x0000.0000.
e) lw $s4, -4($s4): esta instrucción lee una palabra (4 bytes) de memoria y
la almacena en el registro s4. La dirección base en la que se encuentra
el dato se calcula sumándole -4 bytes a la dirección indicada por s4.
Como s4 = 0x0000.1234, la dirección base a la que hay que acceder es
0x0000.1230, por lo tanto el resultado de la instrucción es s4 =
0xCAFE.1CA1 (hay que tener en cuenta que la arquitectura es little
endian).
f) sh $s2, 2($s4): esta instrucción escribe en memoria media palabra de
s2, es decir, los 2 bytes LSB del registro s2. La dirección base a partir de
la cual se escribe el dato se obtiene de sumar 2 bytes a la dirección
indicada por s4. Como s4 = 0x0000.1234, la dirección base del acceso
es
0x.0000.1236,
quedando
la
memoria
como
sigue:
0x0000.1236 = 0x50; y 0x0000.1237 = 0x74.
5. (1 punto)
Indique qué modo de direccionamiento se utiliza en el último operando de cada una de
las instrucciones del ejercicio anterior.
a)
b)
c)
d)
e)
f)
$s0: Direccionamiento directo absoluto (de registro).
0xF1FA: Direccionamiento inmediato.
0xC: Direccionamiento inmediato.
0xB0CA: Direccionamiento inmediato.
-4($s4): Direccionamiento directo relativo a registro base.
2($s4): Direccionamiento directo relativo a registro base.
6. (3 puntos)
Codifique, en ensamblador MIPS, una función que calcule la potencia positiva de un
número. Los argumentos son el número (Base) del cual se quiere calcular la potencia, y
el orden de la potencia (Exponente), de tal forma que el resultado que devuelva la
función sea: BaseExponente.
A continuación se le facilita dicha función en código C.
4
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES
1º I.T.I.G. – I.T.I.S.
Examen Intercuatrimestral
int Potencia(int Base, int Exponente)
{
int i, Resultado;
if (Exponente < 0)
// Se comprueba si el exponente es negativo
{
return -1;
// Si exp. < 0, se devuelve código de error.
}
else
{
Resultado = 1;
// Resultado si Exponente = 0.
for (i = 0; i < Exponente; i++) // Cálculo de la potencia.
Resultado = Resultado * Base;
return Resultado;
// Devolución del resultado.
}
}
Utilice: a0 = Base; a1 = Exponente; t0 = i; t1 = Resultado
Potencia:
slt
beq
addi
jr
else:
addi
add
for:
slt
beq
mul
addi
j
fin:
add
jr
$t2, $a1, $zero
$t2, $zero, else
$v0, $zero, -1
$ra
# Exponente < 0
$t1, $zero, 1
$t0, $zero, $zero
# Resultado = 1
# i = 0
$t2,
$t2,
$t1,
$t0,
for
# i < Exponente
$t0, $a1
$zero, fin
$t1, $a0
$t0, 1
$v0, $zero, $t1
$ra
# return -1
# Resultado *= Base
# i++
# return Resultado
5
Descargar