Você está na página 1de 6

n del Computador I - Segundo Parcial - Segundo Cuatrimestre 2010

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

Se desea dotar a esta m


aquina de soporte
para atender una u
nica interrupci
on. Para ello se
agrega una nueva entrada a la CPU (INTR) que
solicita la interrupci
on. Las instrucciones STI y
CLI habilitan o deshabilitan la atenci
on de la interrupci
on. En caso de haber una interrupcion
la direcci
on de inicio de la rutina de atencion se
encuentra en la posici
on de memoria 0x0000.

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)

Se agrega el registro SP para apuntar al tope del stack pointer


Se agrega el circuito SUB ADD para incrementar y decrementar en 1 unidad el el registro
SP
Se agrega una conexi
on del registro PC al bus interno B.
Se agrega la constante 0x0000 conectada al bus interno A.
b) Implementaci
on de la instrucci
on STI
PSW[15] := 1
c) Microprograma de la unidad de control:
if INTR==1 AND PSW[15]==1
; Apilo el PSW actual y decremento SP
MEM_ADDR := SP
MEM_DATA := PSW
MEM_WRITE
DEC_SP
SP := AUX_2
; Deshabilito las interrupciones
PSW[15] := 0
; Apilo el PC actual y decremento SP
MEM_ADDR := SP
MEM_DATA := PC
MEM_WRITE
DEC_SP
SP := AXU_2
; Apunto el PC al inicio de la RAI
MEM_ADDR := 0x0000
MEM_READ
PC := MEM_DATA
endif

Ejercicio 2 ejercicio2.tex (25 puntos)


Se dispone de una computadora cuyas direcciones de memoria son de 20 bits, y direccionan
a byte. La informaci
on se transmite de la memoria al CPU en bloques de 32 bits, ya que este
es el tama
no de los registros de la arquitectura. El procesador cuenta con 4 KB de memoria
cache dispuestos en lneas de 32 bytes.
a) (5ptos) Indique que bits de la direccion corresponden a los campos tag, line e index en caso de
utilizar:
i) una cache asociativa por conjuntos de 2 vas
ii) una cache de mapeo directo
b) (10ptos) Realice el seguimiento de la siguiente secuencia de lecturas a memoria utilizando la
cache asociativa por conjuntos de 2 vas, y suponiendo una poltica de reemplazo FIFO. Indique
hits, misses, desalojos y accesos desalineados cuando corresponda.
1) 0xABEA8

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

; Me fijo si el estacionamiento esta abierto


; Si esta abierto, leo el boton
; Si esta oprimido, subo la barrera
; Me fijo si el automovil ya paso
; Si ya paso, bajo la barrera

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.

Ejercicio 4 ejercicio4.tex (25 puntos)


Se tiene una m
aquina con un procesador Orga1 conectado a controlador DMA y a dos dispositivos de entrada (IO 1 y IO 2), el objetivo especfico de este DMAC es el de leer los datos de los
dos dispositivos y copiarlos en la memoria principal pero de forma entrelazada (es decir, se debe

leer la misma direcci


on, primero de IO 1, luego de IO 2, luego se lee la proxima direccion de IO 1
y as hasta sucesivamente).
Para su programaci
on el DMAC cuenta con los siguientes registros de E/S de 16 bits:
DMA MEM ADDR
DMA IO ADDR
DMA SIZE
DMA CTRL STATUS

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.

El dispositivo IO 2 posee registros equivalentes llamados IO 2 ADDR, IO 2 DATA, IO 2 CTRL y


IO 2 STATUS.
Suponga que se cuenta con las primitivas requestInt(), writeMem(dirMem, dato), readMem(dirMem),
writeIO(dirEnDisp, dato), readIO(dirEnDisp) vistas en clase. Escriba el pseudo-codigo del
controlador DMA.
Soluci
on de Agustn Nieto. (23/11/10)
While(TRUE){
While(DMA_CTRL_STATUS[0]!=1){
/*SKIP*/
}
DMA_CTRL_STATUS[15]=1;

//Miro el bit que me indica el inicio de la transferencia

//Seteo el bit que indica que el DMA esta trabajando

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)

//Traigo el dato leido

writeIO(IO_2_ADDR, DMA_IO_ADDR);//Direccion a leer en IO_2


writeIO(IO_2_CTRL, 0xFFFF);
//Digo al IO_2 que lea
while(readIO(IO_2_STATUS)!=0x0000){//Espero que termine de leer
/*SKIP*/
}
dato_io_2=readIO(IO_2_DATA);

//Traigo el dato leido

writeMem(DMA_MEM_ADDR,data_io_1); //Escribo los dos datos de


DMA_MEM_ADDR++;
//forma consecutiva
writeMem(DMA_MEM_ADDR,data_io_2);
DMA_MEM_ADDR++;
DMA_IO_ADDR++;
size-=2;

//Incremento iteradores
//Decremento size en 2

}
DMA_CTRL_STATUS[15]=0;
DMA_CTRL_STATUS[0]=0;

//Indico que el DMAC termino de trabajar.


//Para que no vuelva a entrar al ciclo.

requestInt() // DMAC solicita interrupcion al CPU


}

Você também pode gostar