problemario mic-2 y mic-3
Transcripción
problemario mic-2 y mic-3
PROBLEMARIO MIC-2 Y MIC-3 1. a. Codifique en lenguaje microensamblador para Mic-2 la instrucción de IJVM IPAR. Esta instrucción toma una palabra del tope de la pila y genera el bit de paridad par correspondiente a ella, dejando el resultado como nuevo tope de la pila. b. ¿Esta codificación será distinta a la realizada para Mic-1? Justifique su respuesta. c. Ejecute en Mic-3 y compare con los tiempos de ejecución en Mic-1 y Mic-2. IPAR Esta instrucción debe calcular el bit de paridad del dato, construir el nuevo dato (el cual consiste en un dato cuyo bit 31 es el bit de paridad calculado) y colocarlo nuevamente en el tope de la pila. Se utilizará la paridad PAR, es decir, el valor del bit de paridad será tal que el número de unos del dato resultante (PXXXX....XXXX) sea PAR. Ejemplo: un dato inicial en el tope de la pila es 0XXXX....XXXX, y el dato final en el tope de la pila debe ser PXXXX....XXXX, donde P es el bit de paridad generado. 2. Codifique en lenguaje microensamblador para los procesadores Mic-1 y Mic-2 la siguiente instrucción de IJVM. ISAV Esta instrucción saca dos palabras del tope de la pila y las suma con una variable local, dejando el resultado en el tope del stack y su formato es: ISAV Numvar Cod. Op. Indice No utilice la pila para operaciones intermedias. Compare el numero de instrucciones en Mic1 y Mic2 y el tiempo de ejecución con respecto a Mic-3. SOLUCION Mic-1 H=LV MAR=H+MBRU; rd MAR=SP=SP-1; rd H=MDR H=H + TOS PC=PC+1; fetch TOS=MDR=H+MDR; wr; goto main1 Mic-2 MAR=LV+MBR1; rd MAR=SP=SP-1; rd H=MDR+TOS TOS=MDR=H+MDR; wr; goto (MBR1) MIC-3 MAR=LV+MBR1; rd MAR=SP=SP-1; rd H=MDR+TOS TOS = MDR= H+MDR; wr; goto (MBR1) A= MBR1U B= LV C=A+B A=SP MAR=C; rd C=A-1 MDR=MEM MAR=C; rd MDR=MEM A=MDR B=TOS C=A+B H=C A=MDR B=H C=A+B TOS=MDR =C; wr; goto MBR1 MEM=MDR 3. La siguiente instrucción se ha codificado para máquina Mic-3. Encuentre las dependencias de lectura y: a. b. c. d. Marque las dependencias de lectura. Indique los retardos que debieran añadirse para respetarlas. Diga cuál es el número de ciclos necesarios para realizar la instrucción completa. Escriba la microinstrucción correspondiente en lenguaje microensamblador Mic-2 en la primera fila de la tabla. 1 1 A= MBR2U; B= LV 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 C=A+B 17 18 19 20 21 22 2 3 4 5 6 7 8 9 10 A= MBR2U; B= LV MAR=C,rd C=A+B MDR=mem MAR=C,rd A=MDR MDR=mem C=A H=C A=MDR C=A A=H OPC=C C= NOT(A) TOS=C A=OPC,B=TOS C=A AND B A=OPC TOS=C C= NOT(A) OPC=C A=H,B=OPC C=A AND B A=SP OPC=C C=A+1 MAR=SP=C A=TOS,B=OPC C=A OR B TOS=MDR=C, wr,goto(MBR1) mem=MDR Arquitectura del Computador l Solución Examen Parcial Nº 2 Abr/Jul/05 1. (3 puntos) Si un computador maneja entrada/salida asignada en memoria (Verdadero o Falso): __F__ Cada operación de entrada/salida involucra una operación de lectura/escritura en memoria. __V__ Se pueden efectuar operaciones de entrada/salida con las mismas instrucciones que se utilizan para las operaciones de memoria. __F__ La memoria y los dispositivos de entrada/salida usan distintos espacios de direcciones. 2. (4 puntos) Responda Verdadero o Falso: __V__ Al retornar de una interrupción se deben restablecer los registros del procesador. __F__ Las operaciones de DMA requieren la intervención continua del CPU para la transferencia de datos. __F__ La entrada/salida por encuesta es la más apropiada para dispositivos de alta velocidad. __F__ El bus SCSI no requiere de arbitraje 3. (3 puntos) Implemente la instrucción DLOAD en Mic-2. La instrucción tiene un índice de 1 byte y almacena en la pila la variable local que está en esa posición y la variable siguiente. Compare los tiempos de ejecución entre Mic-2 y Mic-3. La solución más eficiente es: Dload1 H = MAR = LV + MBR1U; rd Dload2 MAR = SP = SP + 1; wr Dload3 MAR = H + 1; rd Dload4 MAR = SP = SP + 1; wr Dload5 TOS = MDR; goto (MBR1) Siguiendo la ejecución en MIC-3: Ciclo 1 2 3 4 5 6 7 8 9 10 Dload1 A = MBR1U B = LV C=A+B H = MAR = C; rd MDR = MEM Dload2 A = SP C=A+1 MAR = SP = C; wr MEM = MDR Dload3 Dload4 Dependencia RAW A=H C=A+1 MAR = C; rd MDR = MEM A = SP C=A+1 MAR = SP = C; wr MEM = MDR Dload5 Dependencia RAW A = MDR C=A TOS = C; goto (MBR1) Con la convención usual de TMIC3 = 1/3 TMIC2, la instrucción se ejecuta en Mic-2 en un tiempo 5 T mientras que en Mic-3 requiere 10 TMIC3 = 10/3 TMIC2. El tiempo se reduce en un 33% en Mic-3 MIC2, 5. (2 puntos) ¿Cual es la diferencia entre una subrutina y una rutina de atención a una interrupción? Una subrutina es llamada desde determinados puntos de un programa; una rutina de atención o servicio se ejecuta en respuesta a una interrupción y no es llamada explícitamente desde el programa. 6. (3 puntos) Explique que es una dependencia RAW o lectura después de escritura. La dependencia RAW ocurre cuando se trata de utilizar el valor de un registro o posición de memoria antes de haber sido modificada. 7. (3 puntos) Una cierta computadora posee los siguientes periféricos: teclado, disco duro, impresora de chorro de tinta, ratón, una señal de alarma de una planta, modem de 9600 bps. Enumere los dispositivos según la prioridad de interrupción que usted le asignaría de menor a mayor. Justifique su respuesta. Teclado – Velocidad de tecleado de un ser humano, no es prioritario Impresora – Periférico lento, posiblemente tiene una memoria de datos, no requiere atención inmediata. Modem – Se pueden perder datos de no ser atendido con prontitud Ratón – Una buena interfaz de usuario requiere que sea atendido rápidamente para mantener el movimiento continuo del cursor. Disco duro – Dispositivo de alta tasa de transferencia, se pueden perder datos de no ser atendido. Alarma – Señal de peligro, máxima necesidad de atención. Esta respuesta no es única, y depende del criterio que se use para justificar la solución propuesta. 8. (4 puntos) Suponga que en una máquina los dispositivos de I/O están conectados al árbitro de la siguiente manera: Línea de REQUEST4: dispositivos D10, D3 y D9 Línea de REQUEST3: dispositivos D15, D2 y D1 Línea de REQUEST2: dispositivos D4, D14 y D8 Línea de REQUEST1: dispositivos D12, D7, D6 y D5 La línea REQUEST1 tiene mayor prioridad que la REQUEST2 y ésta mayor prioridad que la REQUEST3. Además en cada línea los dispositivos se encuentran conectados en daisy chain, estando el identificado con el número mayor más cerca del CPU. Suponga que todas las interrupciones se atienden y resuelven en cuatro unidades de tiempo. Señale en un diagrama de tiempo en qué tiempo se atienden y resuelven las peticiones si los dispositivos solicitan interrupción de la siguiente forma: En t = 0: solicitan interrupción D9 y D3 En t = 3: solicitan interrupción D4 y D1 En t = 7: solicitan interrupción D7 y D10 En t = 10: solicitan interrupción D8 y D5 El orden de prioridad de los dispositivos, de mayor a menor, es: D12, D7, D6, D5, D14, D8, D4, D15, D2, D1, D10, D9, D3. Si no se consideran interrupciones anidadas, el diagrama de tiempos de la ejecución es: t Atendido Pendientes 0 D9 D3 4 D4 D1, D3 8 D7 D1, D10, D3 12 D5 D8, D1, D10, D3 16 D8 D1, D10, D3 20 D1 D10, D3 24 D10 D3 28 D3 – Si se permite anidar interrupciones, se tiene: t 0 3 7 11 15 19 23 27 28 Atendido D9 D4 D7 D5 D8 D1 D10 D9 D3 Pendientes D3 D1, D9 (1), D3 D1, D10, D9 (1), D3 D8, D1, D10, D9 (1), D3 D1, D10, D9 (1), D3 D10, D9 (1), D3 D9 (1), D3 D3 – 9. (4 puntos) Se tiene un procesador de 16 Bits con registro Acumulador y acceso a 8 Registros de propósito general (R0 a R7). El set de instrucciones del procesador contiene las instrucciones SUB opr y LOAD opr, donde SUB realiza la operación Acumulador = Acumulador – opr y LOAD realiza la operación Acumulador = opr. opr es un argumento que puede indicar al menos 4 modos distintos de direccionamiento conocidos. Suponiendo que inicialmente el registro Acumulador contiene el valor 0x2A00, y que los Registros de propósito general y la Memoria Principal inicialmente tienen los contenidos que se indican en las tablas, indique el contenido final del Acumulador para cada una de las siguientes instrucciones (ejecutadas consecutivamente), cada una de las cuales utiliza el modo de direccionamiento que se indica en el comentario correspondiente: Instrucción Operando Modo de Direccionamiento Acumulador (contenido) 0x2A00 Memoria Principal Dirección Contenido a. SUB R2 Registro Indirecto -> 0x2800 0x0130 b. SUB 0x100 Directo -> 0x1700 . . . … R7 0xEA2A 0x0120 0x0200 R6 0x2034 . . . … R5 0x0050 0x0110 0X0070 R4 0x0110 . . . ... R3 0x0A10 0x0100 0X1100 R2 0x0120 . . . … R1 0x0!D5 0x00F0 0x0130 R0 0XFFFF c. LOAD R4 Registro Directo -> 0x0110 d. SUB 0xF0 Indirecto -> 0xEF10 Operandos: a) 0x2A00 – 0x0200 b) 0x2800 – 0x1100 d) 0x0110 – 0x1200 0x1200 Reg Contenido 10. (7 puntos) El siguiente programa en assembler del micro-controlador 68HC08 genera una forma de onda arbitraria en el puerto B. Suponiendo que la frecuencia de bus es de 8 MHz.: a) Describa de forma precisa la operación realizada por el programa. (3 puntos) b) Cada cuánto tiempo se escribe un valor en el puerto B? (2 puntos) c) Cuál es la frecuencia de la señal generada? (2 puntos) a) El programa consiste en un lazo que extrae valores de la tabla que representa a la forma de onda y los envía al puerto B. La selección del siguiente valor se realiza usando como índice el byte más significativo de una suma de 16 bits; este contador puede imaginarse como una parte entera (AccumMSB) y una parte fraccionaria (AccumLSB), o como un ajuste grueso y un ajuste fino del período (al sumar sucesivamente el valor Frac_K al LSB, se genera eventualmente un carry que se lleva al MSB). La constante N = Int_K,Frac_K es un número en base 256 ( Int_K ! 256 equivalente en el sistema decimal es 0 + Frac_K ! 256 "1 ), cuyo N = 7 + $6C/256 = 7 + 108/256 = 7,421875. El lazo continua la suma indefinidamente, pero como AccumMSB tiene tamaño de un byte, se hace automáticamente una operación de residuo entre 256 (la primera vez se llega hasta el valor 252, que se “incrementa” en el lazo siguiente a 259-256 = 3, y así sucesivamente), volviendo a barrer la tabla. PortB equ $01 DAC Frac_K Int_K equ equ equ ORG RMB RMB ORG EQU clr clr Port $6C $07 $50 AccumLSB 1 AccumMSB 1 $6E00 START * Asy AccumLSB ; inicializar el contador de 16 bits AccumMSB ;(duración) comentario SG1 lda AccumLSB ;(3) comienzo del lazo; se suma al byte menos add #Frac_K ;(2) significativo la constante Frac_K sta AccumLSB ;(3) guardar el valor incrementado lda AccumMSB ;(3) sumar la constante Int_K y adc #Int_K ;(2) el posible “carry” al byte mas significativo sta AccumMSB ;(3) guardar el valor incrementado tax ;(1) cargar el registro de indice lda Table,X ;(4) obtener el siguiente valor de la señal sta DAC ;(3) y enviarlo al puerto B bra SG1 ;(3) continuar indefinidamente ;Tabla con 256 valores definiendo un ciclo de la señal Table FCB $80,$83,$86,$89,$8C,$90,$93,$96 . . . . . . . . FCB $67,$6A,$6D,$70,$74,$77,$7A,$7D ORG $FFFE ; vector de “reset” DW START b) La duración en ciclos de bus de cada instrucción del lazo se anota arriba en el comentario respectivo. Así, el intervalo entre dos ejecuciones de “sta DAC” es de 27 ciclos. A 8 MHz., el tiempo entre dos escrituras consecutivas sobre el puerto B es 27 x 125 ns = 3,375 !s. c) Cada pasada por la tabla va a generar un nuevo ciclo de la señal (si bien no exactamente igual al anterior, los indices no se repiten idénticos en cada vuelta, ya que no hay una relación entera entre el número de valores de la tabla y la constante N). Puesto que la tabla tiene 256 valores y se toma en promedio uno cada N, en cada ciclo de señal se toman en promedio 256/N = 34,4926 valores. Con el tiempo entre muestras calculado en (b), la frecuencia es: f = 1 = 8, 59 kHz 34, 4926 ! 3, 375 µ s Puede llegarse a un valor aproximado contando el número de muestras tomadas en el primer barrido de la tabla, que es 34, y usando este número en la fórmula anterior. La frecuencia resultante es f = 8,71 kHz. El programa permite generar señales en una gama de frecuencias deseadas, cambiando el valor de N. Si, por ejemplo, quisiéramos generar una señal de 10 kHz, la constante N sería: N = 256 ! 3, 375 µ s ! 10 kHz = 8, 64 con Int_K = 8 y Frac_K = 0,64 ! 256 = 163,84 " 164 = $A4