2do.parcial.orga1
TRANSCRIPT
-
8/17/2019 2do.parcial.orga1
1/6
Organización del Computador I - Segundo Parcial - Segundo Cuatrimestre 2010
Este examen se aprueba obteniendo al menos 65 puntos. El parcial es a libro abierto, con locual se puede utilizar todo lo definido en las prácticas y todo lo que se dió en clase, colocandoreferencias claras. Las soluciones a ejercicios de la práctica que se utilicen deben ser transcriptas.Justifique todas sus respuestas.
Ejercicio 1 ejercicio3.tex (25 puntos)
La microarquitectura de una máquina condatos de 16 bits y direcciones de 7 bits se mues-tra en el gráfico. La ALU sólo posee las ope-raciones ALU ADD y ALU SUB. El incrementadorposee 2 operaciones que operan sobre su entra-da: ADDER INC incrementa 1, y ADDER CPY sólolo copia. El registro PSW mantiene almacenadolos flags y actualmente no usa el bit 15.
Se desea dotar a esta máquina de soportepara atender una única interrupción. Para ello se
agrega una nueva entrada a la CPU (INTR) quesolicita la interrupción. Las instrucciones STI yCLI habilitan o deshabilitan la atención de la in-terrupción. En caso de haber una interrupciónla dirección de inicio de la rutina de atención seencuentra en la posición de memoria 0x0000.
a) (5ptos) Extienda la microarquitectura para poder soportar interrupciones. Justifique por sepa-rado el agregado de cada componente.
b) (10ptos) Describa las acciones de la unidad de control para ejecutar la instrucción STI (habilitarinterrupciones).
c) (10ptos) Describa las acciones de la unidad de control luego de ejecutar una instrucción (esdecir, los pasos que debe realizar el hardware en caso de existir una solicitud de interrupci ón).
Solución de jgaleotti . (24 de noviembre de 2010)
a) Se extiende la microarquitectura de la siguiente manera:
Se utiliza el bit número 15 para almacenar el flag de habilitación de interrupciones (IF)
-
8/17/2019 2do.parcial.orga1
2/6
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 registroSP
Se agrega una conexión del registro PC al bus interno B.
Se agrega la constante 0x0000 conectada al bus interno A.
b) Implementación de la instrucción 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ón se transmite de la memoria al CPU en bloques de 32 bits, ya que estees el tamaño de los registros de la arquitectura. El procesador cuenta con 4 KB de memoriacaché dispuestos en ĺıneas de 32 bytes.
a) (5ptos) Indique qué bits de la dirección corresponden a los campos tag , line e index en caso deutilizar:
i) una caché asociativa p or conjuntos de 2 v́ıas
ii) una caché de mapeo directo
b) (10ptos) Realice el seguimiento de la siguiente secuencia de lecturas a memoria utilizando lacaché asociativa por conjuntos de 2 v́ıas, y suponiendo una polı́tica de reemplazo FIFO. Indiquehits, misses, desalojos y accesos desalineados cuando corresponda.
1) 0xABEA8
2) 0xABEB3
3) 0xBBEA8
4) 0xCBEBE
5) 0xBBEA0
6) 0xCBEC0
c) (10ptos) Supongamos ahora que se utiliza la caché de mapeo directo, y que en la misma ya
se encuentra cacheada la dirección 0xDCB35. Si se utiliza una poĺıtica de escritura write-back write-allocate y se realiza una escritura a la dirección 0xDCB3C, seguida de otra a la dirección0xAAB32 ¿cuántos accesos a memoria se producen? Justifique.
Solución de Gonzalo Sainz-Tr´ apaga . (24 de noviembre de 2010)
-
8/17/2019 2do.parcial.orga1
3/6
a) Tenemos direcciones de 20 bits, palabras de 32 bits y direccionamiento a byte. Dado que cadaĺınea tiene 32 bytes, tendremos un index de 5 bits para ambos tipos de caché. Para la de mapeodirecto, tendremos 128 lı́neas lo cual nos deja 7 bits de line y los restantes 8 serán de tag . Asu vez, para la asociativa por conjuntos de dos v́ıas tendremos solo 64 conjuntos, y por ende 6bits para el campo set y 9 para tag .
b)
Dirección Tag Line Resultado Caché Notas0xABEA8 0x157 0 x35 Miss {0x35:0x157}0xABEB3 0x157 0x35 Hit {0x35:0x157}0xBBEA8 0x177 0x35 Miss {0x35:0x157,0x177 }0xCBEBE 0x197 0x35 Miss + Miss {0x35:0x177,0x197 - 0x36:0x197} Desalojo + Desalineado0xBBEA0 0x177 0x35 Hit {0x35:0x177,0x197 - 0x36:0x197}0xCBEC0 0x197 0x36 Hit {0x35:0x177,0x197 - 0x36:0x197}
c) La primera escritura corresponde a la misma ĺınea y tag que la que ya se encontraba cargada.Por lo tanto, al tratarse de una caché write-back , los cambios se hacen a caché y no se propagana memoria.
La segunda escritura tiene la misma ĺınea que la anterior, pero un tag diferente. Por tratarsede una caché write-allocate , será necesario realizar un desalojo. Sin embargo, por haber sidoescrita en la operación anterior, este desalojo involucrará un acceso a memoria para realizar laescritura, para un total de dos.
En total, se producirán 2 accesos a memoria.
Ejercicio 3 ejercicio1.tex (25 puntos) Se posee un microprocesador Orga1 con soporte para1 interrupción para implementar un sistema de control de la barrera de un estacionamiento. Elfuncionamiento esperado del sistema es el siguiente:
1) El automovilista presiona un botón que activa el motor de apertura de la barrera.
2) Una vez que el veh́ıculo cruza la barrera un sensor especialmente ubicado activa el motor paracerrar la barrera.
3) La barrera sólo funciona 12 horas al d́ıa (desde el momento de encendido del sistema). Si elautomovilista presiona el botón fuera del horario de atención, la barrera no se levanta.
Además del microprocesador Orga1, se cuenta con los siguientes dispositivos de E/S:
Un botón con un registro de E/S (BUTTON DATA). Si se lee el valor 1 del registro de E/Ssignifica que el botón está siendo presionado por el automovilista. Si por el contrario, se leeel valor 0, significa que el botón no está siendo presionado.
Un motor con un registro de E/S (MOTOR CTRL) para controlar la barrera. Si se escribe elvalor 1 en su registro de E/S, el motor levanta la barrera. Si por el contrario, se escribe elvalor 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á captando un automóvil. En cambio, si se lee el valor 0, no hayningún automóvil en el rango del sensor.
Un clock que emite un pulso por una ĺınea de salida (llamada CLOCK OUT) cada 10 minutos.
a) (5ptos) Grafique un esquema de conexión del sistema indicando claramente como conectaŕıalos registros de los dispositivos a los puertos de E/S de la máquina Orga1. No olvide graficarla ĺınea de interrupción.
b) (8ptos) Escriba la rutina de atención de interrupciones para controlar el paso de las 12 horas.(Ayuda: 12 horas equivalen a 720 minutos).
c) (7ptos) Escriba (primero en pseudo-código y luego en lenguaje ensamblador) la rutina de controldel sistema. Recordar que la barrera sólo debe funcionar dentro del horario.
d) (5ptos) Suponiendo que el microprocesador puede ejecutar 750 millones de instrucciones porsegundo. ¿ Cuánto tarda en ejecutarse la rutina de atención de interrupciones ?
Solución de Juan Pablo Galeotti y Francisco Garćıa Eij´ o. (22/11/2010)
-
8/17/2019 2do.parcial.orga1
4/6
a) Conexiones:
BUTTON_DATA => FFF0
MOTOR_CTRL => FFF1
SENSOR_DATA => FFF2
CLOCK_OUT => INT_R
b) Rutina de atención 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 R0, 0x0001 ; Me fijo si el estacionamiento esta abierto
JNE control
CMP [0xFFF0], 0x0001 ; Si esta abierto, leo el botonJNE control
MOV [0xFFF1], 0x0001 ; Si esta oprimido, subo la barrera
test: CMP [0xFFF2], 0x0000 ; Me fijo si el automovil ya paso
JNE test
MOV [0xFFF1], 0x0000 ; Si ya paso, bajo la barrera
JMP control
d) Como por segundo se ejecutan 750 millones de instrucciones. El tiempo en ejecutar una instruc-ción es de: 1
750000000 1,333 ηSeg por lo tanto el timpo máximo en ejecutar la RAI será de
8 ∗ 1,333 ηSeg 10,67 ηSeg.
Ejercicio 4 ejercicio4.tex (25 puntos)Se tiene una máquina con un procesador Orga1 conectado a controlador DMA y a dos dispo-
sitivos de entrada (IO 1 y IO 2), el ob jetivo espećıfico de este DMAC es el de leer los datos de losdos dispositivos y copiarlos en la memoria principal pero de forma entrelazada (es decir, se debe
-
8/17/2019 2do.parcial.orga1
5/6
leer la misma dirección, primero de IO 1, luego de IO 2, luego se lee la pr óxima dirección de IO 1y aśı hasta sucesivamente).
Para su programación el DMAC cuenta con los siguientes registros de E/S de 16 bits:
D MA M EM A DD R D ire cc íon en memoria principal a partir de la cual los datosdeben ser copiados.
DMA IO ADDR Dirección de memoria en el espacio de los dispositivosdesde donde se quiere leer los datos.
D MA S IZE Cant idad total de los datos a t rans fer ir .
DMA CTRL STATUS Bit mas significativo en 1 indica que el DMAC se encuentratrabajando, 0 en caso contrario.Bit menos significativo en 1 le indica al DMAC que puedeiniciar las transferencia.
Por otro lado, el dispositivo IO 1 cuenta con los siguientes registros de E/S de 16 bits:
IO 1 ADDR Dirección a leer dentro del dispositivo.IO 1 CTRL Escribiendo el valor 0xFFFF se provoca la lectura del dispositivo.IO 1 STATUS Indica con el valor 0x0001 que el dispositivo está leyendo,
Con 0x0000 indica que el dispotivo ha finalizado la lectura.IO 1 DATA 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 yIO 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-código delcontrolador DMA.
Solución de Agustı́n Nieto. (23/11/10)
While(TRUE){
While(DMA_CTRL_STATUS[0]!=1){ //Miro el bit que me indica el inicio de la transferencia
/*SKIP*/
}
DMA_CTRL_STATUS[15]=1; //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++; //Incremento iteradores
DMA_IO_ADDR++;
size-=2; //Decremento size en 2
}
DMA_CTRL_STATUS[15]=0; //Indico que el DMAC termino de trabajar.
DMA_CTRL_STATUS[0]=0; //Para que no vuelva a entrar al ciclo.
requestInt() // DMAC solicita interrupcion al CPU
}
-
8/17/2019 2do.parcial.orga1
6/6