Escolar Documentos
Profissional Documentos
Cultura Documentos
Organizacio
Este examen se aprueba obteniendo al menos 65 puntos. El parcial es a libro abierto, con lo
cual se puede utilizar todo lo definido en las practicas y todo lo que se dio en clase, colocando
referencias claras. Las soluciones a ejercicios de la practica que se utilicen deben ser transcriptas.
Justifique todas sus respuestas.
Ejercicio 1 ejercicio3.tex (25 puntos)
La microarquitectura de una m
aquina con
datos de 16 bits y direcciones de 7 bits se muestra en el gr
afico. La ALU s
olo posee las operaciones ALU ADD y ALU SUB. El incrementador
posee 2 operaciones que operan sobre su entrada: ADDER INC incrementa 1, y ADDER CPY solo
lo copia. El registro PSW mantiene almacenado
los flags y actualmente no usa el bit 15.
mem_read
mem_write
Memoria
Busexterno
MEM_ADDR
MEM_DATA
IR
PC
ALU
Z
ADDER
inc,copy
PSW
AUX
BusinternoA
BusinternoB
a) (5ptos) Extienda la microarquitectura para poder soportar interrupciones. Justifique por separado el agregado de cada componente.
b) (10ptos) Describa las acciones de la unidad de control para ejecutar la instruccion STI (habilitar
interrupciones).
c) (10ptos) Describa las acciones de la unidad de control luego de ejecutar una instruccion (es
decir, los pasos que debe realizar el hardware en caso de existir una solicitud de interrupcion).
Soluci
on de jgaleotti. (24 de noviembre de 2010)
a) Se extiende la microarquitectura de la siguiente manera:
...
MEM_ADDR
0x0000
inc_sp,
dec_sp,
copy_sp
PC
inc_pc,
copy_pc
ADDER
PSW
...
AUX
AUX_2
MEM_DATA
IR
SP
SUB_ADD
add,sub
BusinternoA
BusinternoB
Se utiliza el bit n
umero 15 para almacenar el flag de habilitacion de interrupciones (IF)
4) 0xCBEBE
2) 0xABEB3
5) 0xBBEA0
3) 0xBBEA8
6) 0xCBEC0
c) (10ptos) Supongamos ahora que se utiliza la cache de mapeo directo, y que en la misma ya
se encuentra cacheada la direcci
on 0xDCB35. Si se utiliza una poltica de escritura write-back
write-allocate y se realiza una escritura a la direccion 0xDCB3C, seguida de otra a la direccion
0xAAB32 cu
antos accesos a memoria se producen? Justifique.
Soluci
on de Gonzalo Sainz-Tr
apaga. (24 de noviembre de 2010)
a) Tenemos direcciones de 20 bits, palabras de 32 bits y direccionamiento a byte. Dado que cada
lnea tiene 32 bytes, tendremos un index de 5 bits para ambos tipos de cache. Para la de mapeo
directo, tendremos 128 lneas lo cual nos deja 7 bits de line y los restantes 8 seran de tag. A
su vez, para la asociativa por conjuntos de dos vas tendremos solo 64 conjuntos, y por ende 6
bits para el campo set y 9 para tag.
b)
Direcci
on
0xABEA8
0xABEB3
0xBBEA8
0xCBEBE
0xBBEA0
0xCBEC0
Tag
0x157
0x157
0x177
0x197
0x177
0x197
Line
0x35
0x35
0x35
0x35
0x35
0x36
Resultado
Miss
Hit
Miss
Miss + Miss
Hit
Hit
Cache
{0x35:0x157}
{0x35:0x157}
{0x35:0x157,0x177
{0x35:0x177,0x197
{0x35:0x177,0x197
{0x35:0x177,0x197
Notas
}
- 0x36:0x197}
- 0x36:0x197}
- 0x36:0x197}
Desalojo + Desalineado
c) La primera escritura corresponde a la misma lnea y tag que la que ya se encontraba cargada.
Por lo tanto, al tratarse de una cache write-back, los cambios se hacen a cache y no se propagan
a memoria.
La segunda escritura tiene la misma lnea que la anterior, pero un tag diferente. Por tratarse
de una cache write-allocate, ser
a necesario realizar un desalojo. Sin embargo, por haber sido
escrita en la operaci
on anterior, este desalojo involucrara un acceso a memoria para realizar la
escritura, para un total de dos.
En total, se producir
an 2 accesos a memoria.
Ejercicio 3 ejercicio1.tex (25 puntos) Se posee un microprocesador Orga1 con soporte para
1 interrupci
on para implementar un sistema de control de la barrera de un estacionamiento. El
funcionamiento esperado del sistema es el siguiente:
1) El automovilista presiona un bot
on que activa el motor de apertura de la barrera.
2) Una vez que el vehculo cruza la barrera un sensor especialmente ubicado activa el motor para
cerrar la barrera.
3) La barrera s
olo funciona 12 horas al da (desde el momento de encendido del sistema). Si el
automovilista presiona el bot
on fuera del horario de atencion, la barrera no se levanta.
Adem
as del microprocesador Orga1, se cuenta con los siguientes dispositivos de E/S:
Un bot
on con un registro de E/S (BUTTON DATA). Si se lee el valor 1 del registro de E/S
significa que el bot
on est
a siendo presionado por el automovilista. Si por el contrario, se lee
el valor 0, significa que el bot
on no esta siendo presionado.
Un motor con un registro de E/S (MOTOR CTRL) para controlar la barrera. Si se escribe el
valor 1 en su registro de E/S, el motor levanta la barrera. Si por el contrario, se escribe el
valor 0, el motor baja la barrera.
Un sensor con un registro de E/S (SENSOR DATA). Si se lee el valor 1 del registro de E/S
quiere decir que el sensor est
a captando un automovil. En cambio, si se lee el valor 0, no hay
ning
un autom
ovil en el rango del sensor.
Un clock que emite un pulso por una lnea de salida (llamada CLOCK OUT) cada 10 minutos.
a) (5ptos) Grafique un esquema de conexion del sistema indicando claramente como conectara
los registros de los dispositivos a los puertos de E/S de la maquina Orga1. No olvide graficar
la lnea de interrupci
on.
b) (8ptos) Escriba la rutina de atenci
on de interrupciones para controlar el paso de las 12 horas.
(Ayuda: 12 horas equivalen a 720 minutos).
c) (7ptos) Escriba (primero en pseudo-codigo y luego en lenguaje ensamblador) la rutina de control
del sistema. Recordar que la barrera solo debe funcionar dentro del horario.
d) (5ptos) Suponiendo que el microprocesador puede ejecutar 750 millones de instrucciones por
segundo. Cu
anto tarda en ejecutarse la rutina de atencion de interrupciones ?
Soluci
on de Juan Pablo Galeotti y Francisco Garca Eij
o. (22/11/2010)
a) Conexiones:
BUTTON_DATA
MOTOR_CTRL
SENSOR_DATA
CLOCK_OUT
=>
=>
=>
=>
FFF0
FFF1
FFF2
INT_R
b) Rutina de atenci
on de interrupciones:
rutina_atencion_Int :
ADD R1, 0x000A ; Sumo 10 minutos a la hora actual
CMP R1, 0x02D0 ; 12 horas = 12 * 60 minutos = 720 minutos = 0x02D0
JGE abrir_o_cerrar
JMP fin
abrir_o_cerrar:
CMP R0, 0x0001 ; Observo si esta abierto o cerrado
JE cerrar
MOV R0, 0x0001 ; Abrimos
MOV R1, 0x0000 ; Reseteamos el contador de minutos
JMP fin
cerrar:
MOV R0, 0x0000 ; Cerramos
MOV R1, 0x0000 ; Reseteamos el contador de minutos
fin:
IRET
c) Control de la barrera:
while (true) {
if (abierto==true) {
if (boton_apretado==true) {
levantar_barrera();
while (sensor_ocupado==true) {
// skip
}
bajar_barrera();
}
}
}
control: CMP
JNE
CMP
JNE
MOV
test:
CMP
JNE
MOV
JMP
R0, 0x0001
control
[0xFFF0], 0x0001
control
[0xFFF1], 0x0001
[0xFFF2], 0x0000
test
[0xFFF1], 0x0000
control
d) Como por segundo se ejecutan 750 millones de instrucciones. El tiempo en ejecutar una instruc1
' 1,333 Seg por lo tanto el timpo maximo en ejecutar la RAI sera de
ci
on es de: 750000000
8 1,333 Seg ' 10,67 Seg.
Direcci
on en memoria principal a partir de la cual los datos
deben ser copiados.
Direcci
on de memoria en el espacio de los dispositivos
desde donde se quiere leer los datos.
Cantidad total de los datos a transferir.
Bit mas significativo en 1 indica que el DMAC se encuentra
trabajando, 0 en caso contrario.
Bit menos significativo en 1 le indica al DMAC que puede
iniciar las transferencia.
Por otro lado, el dispositivo IO 1 cuenta con los siguientes registros de E/S de 16 bits:
IO 1 ADDR
IO 1 CTRL
IO 1 STATUS
IO 1 DATA
Direcci
on a leer dentro del dispositivo.
Escribiendo el valor 0xFFFF se provoca la lectura del dispositivo.
Indica con el valor 0x0001 que el dispositivo esta leyendo,
Con 0x0000 indica que el dispotivo ha finalizado la lectura.
Registro donde se almacena el dato una vez finalizada la lectura.
while(DMA_SIZE>0){
writeIO(IO_1_ADDR, DMA_IO_ADDR);//Direccion a leer en IO_1
writeIO(IO_1_CTRL, 0xFFFF);
//Digo al IO_1 que lea
while(readIO(IO_1_STATUS)!=0x0000){//Espero que termine de leer
/*SKIP*/
}
dato_io_1=readIO(IO_1_DATA)
//Incremento iteradores
//Decremento size en 2
}
DMA_CTRL_STATUS[15]=0;
DMA_CTRL_STATUS[0]=0;