1 EJERCICIO 1 Indica el contenido de la memoria después de la

Anuncio
CPU
EJERCICIO 1
Indica el contenido de la memoria después de la ejecución de la siguiente porción
de código, teniendo en cuenta la situación inicial:
(1) MOVEA.L
(2) MOVE.W
(3) MOVE.L
(4) MOVE.B
#$000A02, A0
(A0)+, D2
$000A00, $000A02
0(A0, D2.W), $000A01
Situación inicial:
$000A00
$000A01
$000A02
$000A03
$000A04
$000A05
$000A06
$000A07
AF
34
00
02
56
12
00
3D
EJERCICIO 2
Sabemos que los registros A3 y A4 de un procesador 68000 tienen almacenados
los valores A3=$305 y A4=$400. Escribir una sola instrucción en lenguaje
ensamblador con la cual se mueva el byte contenido en la posición de memoria
$304 a la posición $408 sin utilizar el modo de direccionamiento directo a
memoria.
EJERCICIO 3
Determinar qué ciclos de memoria producirá la ejecución de la siguiente
instrucción del MC68000, y en qué orden:
ADD.L
(A0)+, 4(A0)
Siendo el valor inicial de A0=$00000400, y de la memoria:
$00030C
$00030E
$000400
$000402
$000404
$3456
$7890
$1234
$5678
$9012
$000406
$000408
$00040A
$00040C
$00040E
$3456
$7890
$1234
$5678
$9012
Determinar para cada ciclo el valor del bus de direcciones, del bus de datos y de la
línea de Lectura/Escritura.
1
EJERCICIO 4
Determinar el contenido de los octetos de memoria comprendidos entre las
direcciones $4000 y $4007, suponiendo que inicialmente todos ellos valen $55,
después de ejecutar las siguientes instrucciones:
(1) MOVE.L
(2) MOVE.W
(3) MOVE.L
(4) MOVE.B
(5) MOVE.B
#$33, $4002
#$4444, $4000
#$6666, $4004
#$11, $4002
#$22, $4001
EJERCICIO 5
Se dispone de un procesador con un bus de datos de 16 bits, capaz de direccionar
64 Mbytes de memoria y cuyas instrucciones tienen un tamaño de 64 bits. Indicar
cuántos accesos a memoria realiza este procesador y con qué propósito se
realizan al ejecutar las siguientes instrucciones:
(1) MOVE.L
(2) ADD.W
(3) JMP
#$A0000, $F0AA00
$00FF, $0200
$FFFF
Nota: La nomenclatura, la semántica y los modos de direccionamiento de estas
instrucciones son similares a las del MC68000.
EJERCICIO 6
Tenemos un procesador MC68000 trabajando con un reloj de 12.5 MHz. A dicha
frecuencia el procesador tarda en realizar un ciclo de bus (lectura o escritura) 320
ns. Suponiendo que el procesador ha tardado 960 ns en ejecutar la instrucción
MOVE.L (A7), D0. Indica cuál es el número de palabras que ocupa el código
máquina de la instrucción.
EJERCICIO 7
Considera el siguiente conjunto de instrucciones:
I1 : MOVE #10,D1
I2 : ADD D1,D2,D3
I3 : SUB D3,D2, D4
I4 : ADD D3,D5,D6
;
;
;
;
D1 := 10
D3 := D1 + D2
D4 := D3 - D2
D6 := D3 + D5
a) Indica las dependencias de datos existentes entre las instrucciones.
b) Vamos a considerar una segmentación (pipeline) de 5 etapas (F:
extracción, D: decodificación, O: obtención de operandos, E: ejecución, W:
escritura de resultado). Completa el siguiente gráfico de los ciclos
necesarios para ejecutar dicha secuencia de instrucciones, de forma que se
2
obtenga el resultado correcto. Para ello deberán indicarse los retardos
necesarios según las dependencias de datos existentes, manteniendo una
instrucción en la misma etapa del pipeline durante los ciclos que se
considere necesario. Debe suponerse que todas las etapas del pipeline
duran 1 ciclo y que no se utiliza anticipación (data forwarding).
Ciclo/Inst.
I1
1
F
2
D
3
O
4
E
5
W
→D1
6
7
8
9
10
11
12
13
I2
I3
I4
3
14
Descargar