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

Documentos relacionados