2do.parcial.orga1

Upload: felixsafar3243

Post on 06-Jul-2018

220 views

Category:

Documents


0 download

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