Download Instrucción - Bienvenidos al Departamento de Computación e

Document related concepts
no text concepts found
Transcript
Pontificia Universidad Católica de Chile
Escuela de Ingeniería
Departamento de Ciencia de la Computación
[ Arquitectura de Computadores ]
ORGANIZACIÓN DEL COMPUTADOR
IIC 2342
Semestre 2005-2
Domingo Mery
Präsentat
ion
D.Mery
1
Arquitectura de Computadores
[ Índice ]
3.1. Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
2
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1. Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
3
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
1023
Ejemplo:
:
867
¿Cómo sumar el contenido de
la posición 867 con el
contenido de la posición 562 y
almacenar el resultado en la
posición 778?
:
778
:
562
:
2
1
0
Memoria de 1024  8
D.Mery
4
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
1023
Ejemplo:
:
867
¿Cómo sumar el contenido de
la posición 867 con el
contenido de la posición 562 y
almacenar el resultado en la
posición 778?
:
778
+
:
562
:
2
1
0
Memoria de 1024  8
D.Mery
5
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
1023
Solución:
:
867
1. Leer en la memoria la
posición 867
:
778
:
output
562
:
2
1
0
Decoder & Read/Write
Memoria de 1024  8
Dirección 867
D.Mery
6
Read
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
1023
Solución:
:
867
1. Leer en la memoria la
posición 867
2. Almacenar lo leído en un
registro externo
:
778
:
output
562
:
2
AC
1
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
7
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
1023
Solución:
:
867
1. Leer en la memoria la
posición 867
2. Almacenar lo leído en un
registro externo
3. Leer en la memoria la
posición 562
:
778
:
output
562
:
2
AC
1
0
Decoder & Read/Write
Memoria de 1024  8
Dirección 562
D.Mery
8
Read
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
1023
Solución:
:
867
1. Leer en la memoria la
posición 867
2. Almacenar lo leído en un
registro externo
3. Leer en la memoria la
posición 562
4. Sumar lo leído con el
registro externo
:
778
:
output
562
sumador
:
2
AC
1
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
9
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
1023
Solución:
:
867
1. Leer en la memoria la
posición 867
2. Almacenar lo leído en un
registro externo
3. Leer en la memoria la
posición 562
4. Sumar lo leído con el
registro externo
5. Almacenar la suma en la
posición 778
:
input
778
:
562
sumador
:
2
1
0
Decoder & Read/Write
Memoria de 1024  8
Dirección 778
D.Mery
10
Write
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Solución general:
1023
Unidad de
aritmética
y lógica
:
867
:
778
:
562
Unidad
de control
:
2
1
Programa
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
11
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Solución general:
1023
Unidad de
aritmética
y lógica
:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
867
:
778
:
562
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Unidad
de control
:
2
1
Programa
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
12
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Solución general:
1023
Unidad de
aritmética
y lógica
:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
867
:
778
:
562
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Unidad
de control
:
2
1
Programa
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
13
Significa
leer y
almacenar
en AC
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Solución general:
1023
Unidad de
aritmética
y lógica
:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
867
:
778
:
562
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Unidad
de control
:
2
1
Programa
0
Decoder & Read/Write
Memoria de 1024  8
D.Mery
14
Significa lo que se
debe leer:
110110011 = 867
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Solución general:
1023
Unidad de
aritmética
y lógica
:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
867
:
778
:
562
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Unidad
de control
:
2
:
1
110110011
0
000100001
Decoder & Read/Write
Memoria de 1024  8
D.Mery
15
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Principios:
1. Los datos y las instrucciones se almacenan en una sola
memoria de lectura-escritura.
2. Los contenidos de esta memoria se direccionan indicando
su posición, sin considera el tipo del de dato contenido en la
misma.
3. La ejecución se produce siguiendo una secuencia de
instrucción tras instrucción (a no se que dicha secuencia se
modifique explícitamente).
D.Mery
16
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Estructura
D.Mery
17
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Detalles
Máquina von Neumann
• 1000 x 40 bit words
– Binary number
– 2 x 20 bit instructions
Palabra número
01
39
Signo
Palabra instrucción
0
Codop
D.Mery
8
19 20
Dirección
Codop
18
28
39
Dirección
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles
Palabra instrucción
0
Codop
8
19
Dirección
• La parte codop (los primeros 8 bits) especifican cuál
instrucción será ejecutada.
• La parte de la dirección (los 12 bits restantes) especifican cuál
de las 1000 posiciones de memoria está implicada en la
instrucción. Esta parte es denominada X.
D.Mery
19
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles
• Set of registers (storage in CPU)
– Memory Buffer Register (MBR)
– Memory Address Register (MAR)
– Instruction Register (IR)
– Instruction Buffer Register (IBR)
– Program Counter (PC)
– Accumulator (AC)
– Multiplier Quotient (MQ)
D.Mery
20
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
máquina von Neumann
D.Mery
21
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
MBR:
Memory Buffer Register
Contiene una palabra que debe
ser almacenada en la memoria, o
es usado para recibir una palabra
procedente de la memoria.
D.Mery
22
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
MAR:
Memory Adress Register
Especifica la dirección en
memoria de la palabra que va a
ser escrita o leída en MBR.
D.Mery
23
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
IR:
Instruction Register
Contiene los 8 bits del código de
operación de la instrucción que se
va a ejecutar.
D.Mery
24
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
IBR:
Instruction Buffer Register
Empleado para almacenar
temporalmente la instrucción
contenida en la parte derecha de
una palabra en memoria.
D.Mery
25
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
PC:
Program Counter
Contiene la dirección de la próxima
pareja de instrucciones que van a
ser captadas de la memoria.
D.Mery
26
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Detalles de la estructura
AC y MQ:
Accumulator y Multiplier
Quotient
Se emplean para almacenar
operandos y resultados de
operaciones de la ALU
temporalmente. Por ejemplo, el
resultado de multiplicar dos
números de 40 bits es un número
de 80 bits; los 40 bits más
significativos se almacenan en AC
y los menos significativos se
almacenan en MQ.
D.Mery
27
(CC)
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE TRANSFERENCIA DE DATOS:
• Se transfieren datos entre la memoria y los registros de la ALU
o entre dos registros de la ALU.
D.Mery
Codop
Instrucción
Descripción
00001010
LOAD MQ
Transferir el contenido del registro
MQ a AC
00001001
LOAD MQ,M(X)
Transferir el contenido de la
posición de memoria X a MQ
00100001
STOR M(X)
Transferir el contenido de AC a la
posición de memoria X
00000001
LOAD M(X)
Transferir M(X) a AC
00000010
LOAD –M(X)
Transferir –M(X) a AC
00000100
LOAD |M(X)|
Transferir |M(X)| a AC
28
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE SALTO INCONDICIONAL:
• Normalmente, la unidad de control ejecuta instrucciones
secuencialmente en la memoria. Las instrucciones de salto
pueden cambiar este orden (ej. Operaciones repetitivas).
D.Mery
Codop
Instrucción
Descripción
00001101
JUMP M(X,8:19)
Saltar a la instrucción indicada
por la mitad izquierda de M(X)
00001110
JUMP M(X,28:39)
Saltar a la instrucción indicada
por la mitad derecha de M(X)
29
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE SALTO CONDICIONAL:
• El salto depende de una condición, esto permite puntos de
decisión.
Codop
Instrucción
Descripción
00001111
JUMP +M(X,8:19)
Si AC ≥ 0 saltar a la instrucción
indicada por la mitad izquierda
de M(X)
00001000
JUMP +M(X,28:39) Si AC ≥ 0 saltar a la instrucción
indicada por la mitad derecha de
M(X)
D.Mery
30
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE ARITMÉTICA:
• Son las operaciones realizadas por la ALU.
D.Mery
Codop
Instrucción
Descripción
00000101
ADD M(X)
AC  AC + M(X)
00000111
ADD |M(X)|
AC  AC + |M(X)|
00000110
SUB M(X)
AC  AC - M(X)
00001000
SUB |M(X)|
AC  AC - |M(X)|
00001011
MUL M(X)
[AC][MQ]  AC  M(X)
00001100
DIV M(X)
[AC][MQ]  AC ÷ M(X)
00010100
LSH
AC  AC  2
00010101
RSH
AC  AC ÷ 2
31
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE ARITMÉTICA:
• Son las operaciones realizadas por la ALU.
Codop
Instrucción
Descripción
00000101
ADD M(X)
AC  AC + M(X)
00000111
ADD |M(X)|
AC  AC + |M(X)|
SUB
00000110
AC por
AC -hardware?
M(X)
¿Cómo
se M(X)
implementan
D.Mery
00001000
SUB |M(X)|
AC  AC - |M(X)|
00001011
MUL M(X)
[AC][MQ]  AC  M(X)
00001100
DIV M(X)
[AC][MQ]  AC ÷ M(X)
00010100
LSH
AC  AC  2
00010101
RSH
AC  AC ÷ 2
32
Arquitectura de Computadores
Präsentat
ion
Circuitos sincrónicos
[ Sistemas Digitales ]
shift register a la derecha = divisioón entre dos
D
CK
D.Mery
Q
D
Q
D
CK
CK
33
Q
D
Q
CK
Arquitectura de Computadores
Präsentat
ion
Circuitos sincrónicos
[ Sistemas Digitales ]
shift register a la izquierda = multiplicación por dos
D
CK
D.Mery
Q
D
Q
D
CK
CK
34
Q
D
Q
CK
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
INSTRUCCIONES DE MODIFICACIÓN DE DIRECCIONES:
• Permite que la ALU haga operaciones con las direcciones y
las inserte en instrucciones almacenadas en memoria. Esto
permite una considerable flexibilidad de direccionamiento en un
programa.
Codop
Instrucción
00010010 STOR M(X,8:19)
00010011
D.Mery
STOR M(X,28:39)
Descripción
Reemplazar el campo de dirección
de la izquierda de M(X) por los 12
bits de la derecha de AC.
Reemplazar el campo de dirección
de la derecha de M(X) por los 12
bits de la derecha de AC.
35
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Ejercicio:
Escribir un programa que sume el número almacenado en la
posición 867 más el número almacenado en la posición 562. El
resultado de la suma (sin considerar acarreo) se debe
almacenar en la posición 778.
D.Mery
36
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Ejercicio:
Escribir un programa que sume el número almacenado en la
posición 867 más el número almacenado en la posición 562. El
resultado de la suma (sin considerar acarreo) se debe
almacenar en la posición 778.
LOAD M(867)
ADD M(562)
STOR M(778)
D.Mery
% transfiere el contenido de 867 a AC
% AC  AC + M(562)
% transfiere AC a la memoria 778
37
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Ejercicio:
Escribir un programa que sume el número almacenado en la
posición 867 más el número almacenado en la posición 562. El
resultado de la suma (sin considerar acarreo) se debe
almacenar en la posición 778.
LOAD M(867)
ADD M(562)
STOR M(778)
D.Mery
% transfiere el contenido de 867 a AC
% AC  AC + M(562)
% transfiere AC a la memoria 778
38
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
¿Cómo se almacena el programa?
LOAD M(867)
ADD M(562)
STOR M(778)
D.Mery
00000001 001101100011
00000100 001000110010
00100001 001100001010
39
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Ejercicio:
Escribir un programa que divida el número almacenado en la
posición 867 por 8. El resultado de la división (sin considerar el
resto ni la parte fraccionaria) se debe almacenar en la posición
778.
D.Mery
40
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Ejercicio:
Escribir un programa que divida el número almacenado en la
posición 867 por 8. El resultado de la división (sin considerar el
resto ni la parte fraccionaria) se debe almacenar en la posición
778.
LOAD M(867)
RSH
RSH
RSH
STOR M(778)
D.Mery
%
%
%
%
%
transfiere el contenido de
divide el acumulador entre
divide el acumulador entre
divide el acumulador entre
transfiere AC a la memoria
41
867 a AC
dos
dos
dos
778
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Máquina von Neumann
Ejercicio:
Escribir un programa que compare el número almacenado en la
posición 867 con el número almacenado en la posición 562. Si
el primero es menor que el segundo copiar el contenido de la
memoria 500 en la memoria 501, de lo contrario se almacena
en 501 el contenido de 867 menos el contenido de 562.
D.Mery
42
Arquitectura de Computadores
Präsentat
ion
Máquina von Neumann
[ Organización ]
Ejercicio:
Escribir un programa que compare el número almacenado en la
posición 867 con el número almacenado en la posición 562. Si
el primero es menor que el segundo copiar el contenido de la
memoria 500 en la memoria 501, de lo contrario se almacena
en 501 el contenido de 867 menos el contenido de 562.
1.
2.
3.
4.
5.
LOAD M(867)
SUB M(562)
JUMP +M(3,28:39)
LOAD M(500)
STOR M(501)
%
%
%
%
%
transfiere el contenido de 867 a AC
AC  AC - M(562)
salta si AC ≥ 0 (i.e. M(867)≥ M(562))
transfiere el contenido de 500 a AC
transfiere AC a la memoria 501
En la posición derecha de 3 debe estar almacenado 5, de
esta manera la tercera instrucción salta a la dirección 5
si AC ≥ 0.
D.Mery
43
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
44
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Computador
periféricos
Unidad
Central de
Proceso
CPU
Memoria
Principal
Sistema de
interconexión
Computador
Entrada
Salida
Líneas de
comunicación
D.Mery
45
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Ejemplo:
Bus de Direcciones
Memoria
Principal
Memoria
Secundaria
D.Mery
Periféricos
CPU
Bus de Control
Bus de Datos
46
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Ejemplo:
D.Mery
47
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
CPU
Computer
Registros
I/O
System
Bus
Unidad
Aritmética y
Lógica
CPU
Interconexión
Interna de la CPU
Memory
Unidad
de
Control
D.Mery
48
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Unidad de Control
CPU
Lógica
Secuencial
ALU
Internal Control
Unit
Bus
Unidad de control
de registros y
decodificadores
Registers
Memoria
de control
D.Mery
49
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Unidad de Control
CPU
ALU
Internal
Bus
Registers
Lógica
Secuencial
controla
el
La unidad de control
Control
Unitfuncionamiento de la CPU:
Unidad de control
• controla las transferencias de
de registros y
datos desde hacia la CPU y decodificadores
• controla la ALU.
Memoria
de control
D.Mery
50
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Función de la unidad de control:
1. Para cada instrucción hay un único código que ejecutará
esa instrucción.
2. Acepta la instrucción y genera las señales de control
necesarias para que la instrucción se ejecute.
D.Mery
51
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Función de la unidad de control:
1. Para cada instrucción hay un único código que ejecutará
esa instrucción.
codop
D.Mery
decoder
2. Acepta la instrucción y genera las señales de control
necesarias para que la instrucción se ejecute.
52
Se activa sólo una salida
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Componentes del
computador:
D.Mery
53
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Tareas de la CPU:
1. Captar instrucción: la CPU lee una instrucción de la
memoria.
2. Interpretar instrucción: la instrucción se decodifica para
determinar qué acción es necesaria.
3. Captar datos: la ejecución de una instrucción puede exigir
leer datos de la memoria o de un módulo I/O.
4. Procesar datos: en la ejecución se puede exigir llevar a
cabo alguna operación aritmética o lógica con los datos.
5. Escribir datos: los resultados de la ejecución pueden exigir
escribir datos en la memoria o en un módulo I/O.
D.Mery
54
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Registros
ALU
Unidad de
Control
Bus de
control
Bus de
datos
Bus de
direcciones
Bus del sistema
D.Mery
55
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Un procesador incluye registros visibles para el usuario y
registros de control/estado.
Registros visibles:
•
pueden referenciarse en las instrucciones de
máquina.
•
pueden ser:
1.
2.
3.
4.
Uso general
Datos
Direcciones
Códigos de condición
D.Mery
56
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
¿cuántos registros de propósito general?
•
•
•
D.Mery
Óptimo entre 8 y 32
Si hay muy pocos registros entonces se necesitan
demasiados accesos a memoria.
Más registros no reducen considerablemente las
referencias a memoria y hace la CPU más compleja.
57
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
¿De cuántos bits deben ser los registros?
•
Deben ser de un número suficiente tal que se puedan
manejar las direcciones a memoria.
•
Además deben ser capaces de manejar una palabra
completa.
•
A veces se combinan dos registros para conformar
uno solo.
D.Mery
58
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Ejemplos de organización de registros:
D.Mery
59
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Un procesador incluye registros visibles para el usuario y
registros de control/estado.
Registros de control y estado:
•
se usan para controlar el funcionamiento de la CPU:
1. PC = program counter: contiene la dirección de la
instrucción a captar
2. IR = instruction register: contiene la última instrucción
captada
3. MAR = memory address register: contiene la dirección
de una posición de memoria
4. MBR = memory buffer register: contiene la palabra de
datos a escribir en memoria, o la palabra leída más
recientemente
D.Mery
60
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Un procesador incluye registros visibles para el usuario y
registros de control/estado.
Registros de control y estado:
Adicionalmente se cuenta con PSW = program status word:
•
•
•
•
•
D.Mery
Signo: contiene le bit de signo del resultado de última
operación
Cero: puesto a uno cuando el resultado es 0
Acarreo: puesto a uno si en la suma hay acarreo o en la
resta hay un adeudo del bit más significativo
Igual: puesto a uno si el el resultado de una comparación
lógica es la igualdad
Desbordamiento: Usado para indicar desbordamiento
aritmético
61
Arquitectura de Computadores
Präsentat
ion
Unidad de control
[ Organización ]
Un procesador incluye registros visibles para el usuario y
registros de control/estado.
Registros de control y estado:
Adicionalmente se cuenta con PSW = program status word:
(cont…)
•
•
D.Mery
Interrupciones: usado para permitir o inhabilitar
interrupciones
Supervisor: indica si la CPU funciona en modo
supervisor o usuario. Únicamente en modo supervisor se
pueden ejecutar ciertas instrucciones privilegiadas y se
puede acceder a ciertas áreas de memoria
62
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
63
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
1. Recuperar la siguiente
instrucción desde
memoria (apuntada por
el program counter) y
luego incrementar el
program counter.
2. Decodificar el patrón de
bits en el registro de
instrucción IR
3. Ejecutar la instrucción
indicada en el registro de
instrucción IR
Ciclo de instrucción
D.Mery
64
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
Ciclo fetch (captación):
FUNCION: Lleva la siguiente instrucción de la memoria a la CPU
1. El program counter tiene la dirección de la siguiente
instrucción.
2. El procesador capta la instrucción de la memoria direccionada
por el PC.
3. Se incremente PC en 1.
4. El código de la instrucción se carga en IR.
D.Mery
65
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
Ciclo decode (decodificación):
FUNCION: Decodifica los bits presentes en IR
1. Interpreta el código de operación.
D.Mery
66
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
Ciclo execution (ejecución):
FUNCION: Ejecuta la instrucción.
•
Procesador-memoria: transferencia CPU ↔ memoria
•
Procesador-I/O: transferencia CPU ↔ módulo I/O
•
Procesamiento de datos: operaciones aritméticas o lógicas
•
Control: cambio de secuencias (eje: JUMP), etc.
•
Combinación de las anteriores
D.Mery
67
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
1. El PC contiene el
valor 300. Se carga
esta instrucción en IR
(esto implica el uso de
MAR y MBR)
Ejemplo:
D.Mery
68
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
2. Los primeros 4 bits
de IR (“1”) indican que
el acumulador AC se
va a cargar con un
dato de la memoria.
Los restantes 12 bits
especifican la dirección
(es decir “940”).
Ejemplo:
D.Mery
69
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
3. El registro de PC se
incrementa y se capta
la siguiente instrucción.
Ejemplo:
D.Mery
70
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
4. Los primeros 4 bits
(“5”) indican que la
instrucción es de suma
entre el acumulador y
una memoria. Los
siguientes 12 bits
indican la dirección de
memoria (“941”). El
contenido de AC y el
de la posición 941 se
suman y el resultado
se almacena en AC.
Ejemplo:
D.Mery
71
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
5. El registro PC se
incrementa en 1 y se
capta la siguiente
instrucción.
Ejemplo:
D.Mery
72
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
6. Los primeros 4 bits
indican (“2”) que el
acumulador se debe
almacenar en una
memoria. Los
siguientes 12 bits
indican la dirección de
la memoria (“941”). El
contenido de AC se
almacena en la
posición 941.
Ejemplo:
D.Mery
73
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
¿Cuántos ciclos de
instrucción se
necesitan?
D.Mery
74
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Ciclos fetch, decode, exe
¿Cuántos ciclos de
instrucción se
necesitan?
R/. Tres
D.Mery
75
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
76
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Conjunto de instrucciones
Las instrucciones de una CPU a otra difieren
bastante, sin embargo en todas las CPU se puede
encontrar el siguiente conjunto de instrucciones:
1.- Instrucciones de transferencias de datos
2.- Instrucciones aritméticas
3.- Instrucciones lógicas
4.- Control de flujo
5.- Entrada / Salida
D.Mery
77
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
1.- Instrucciones de transferencias de datos
D.Mery
MOVE
transferir registros en la CPU
STORE
registro → memoria
LOAD
memoria → registro
CLEAR
pone un registro en ceros
SET
pone un registro en unos
PUSH
introduce en la pila
POP
extrae en la pila
78
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
1.- Instrucciones de transferencias de datos
Acciones:
Transfiere datos de una posición a otra.
Si se implica a la memoria:
• determina la dirección de la memoria
• inicia lectura/escritura en memoria
D.Mery
79
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
2.- Instrucciones aritméticas
D.Mery
ADD
suma dos operandos
SUBSTRACT
resta dos operandos
MULTIPLY
multiplica dos operandos
DIVIDE
divide dos operandos
ABSOLUTE
calcula valor absoluto del operando
NEGATE
cambia el signo del operando
INCREMENTE
sube en 1 el operando
DECREMENTE
baja en 1 el operando
80
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
2.- Instrucciones aritméticas
Acciones:
Puede implicar transferencias de datos, antes y/o después.
Realiza la operación en la ALU
Actualiza códigos e indicadores de condición.
D.Mery
81
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
3.- Instrucciones lógicas
D.Mery
AND
Y lógico bit a bit
OR
O lógico bit a bit
NOT
no lógico bit a bit
XOR
o exclusivo lógico bit a bit
TEST
evalúa condiciones
COMPARE
comparación de dos operandos
SHIFT
desplazamiento izquierda o derecha
ROTATE
desplazamiento cíclico
82
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
3.- Instrucciones lógicas
Acciones:
Puede implicar transferencias de datos, antes y/o después.
Realiza la operación en la ALU
Actualiza códigos e indicadores de condición.
D.Mery
83
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
4.- Control de flujo
JUMP
salto incondicional
JUMP CON
salto condicional
JUMP SUB
salto a subrutina
RETURN
retorno de subrutina
SKIP
incrementa PC en 1
SKIP CON
incremento condicional de PC en 1
HALT
detiene la ejecución del programa
WAIT
detiene la ejecución hasta una condición
NOP
no ejecuta operación alguna
D.Mery
84
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
4.- Control de flujo
Acciones:
Actualiza el contador de programa.
En el caso de llamadas y retornos de subrutinas, gestiona la
transferencia y enlace de parámetros.
D.Mery
85
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
5.- Entrada / salida
D.Mery
INPUT
transferir I/O → memoria o registro
OUTPUT
transferir memoria o registro → I/O
START I/O
inicializa dispositivo I/O
TEST I/O
transfiere información de estado de I/O
86
Arquitectura de Computadores
[ Organización ]
Conjunto de instrucciones
5.- Entrada / salida
Acciones:
Cursa una orden a un módulo de E/S
En el caso de E/S asignada en memoria, determina la dirección de
memoria correspondiente.
D.Mery
87
Arquitectura de Computadores
Instrucciones
[ Organización ]
Algunas instrucciones del Z-80
LD A, (dirección)
LD A, valor
LD (dirección), A
LD B, A
LD HL, valor
carga el contenido de la memoria 'dirección' en el registro A
carga 'valor' en el registro A
carga el contenido del registro A en la memoria apuntada
por 'dirección'
carga el contenido del registro A en el registro B
carga 'valor' en el registro HL
NOTA: En el Z-80, los registros A y B son de un byte, el registro HL es de
dos bytes y las direcciones son de 16 bits.
D.Mery
88
Arquitectura de Computadores
Präsentat
ion
Instrucciones
[ Organización ]
Algunas instrucciones del Z-80
NOTA: En el Z-80, los registros A y B son de un byte, el registro HL es de
dos bytes y las direcciones son de 16 bits.
ADD A, B
SUB B
ADD (HL)
carga en A los 8 bits menos significativos de la suma A + B
carga en A los 8 bits menos significativos de la resta A - B
carga en A los 8 bits menos significativos de la suma de A
con el contenido de la memoria que apunta el registro HL
INC HL
incrementa en 1 el registro HL
INC A
incrementa en 1 el registro A
INC B
incrementa en 1 el registro B
DEC A
decrementa en 1 el registro A
DEC B
decrementa en 1 el registro B
DEC HL
decrementa en 1 el registro HL
JP NZ, label el programa salta a la dirección 'label' si la última operación
aritmética no es cero
D.Mery
89
Arquitectura de Computadores
Präsentat
ion
Instrucciones
[ Organización ]
Examen de licenciatura 2004-2:
Escriba un programa en ensamblador Z-80 que calcule el
checksum de un vector de 256 bytes ubicado en las
direcciones de memoria 0800h a 08FFh. El checksum
calculado debe ser una palabra de 8 bits correspondiente al
byte menos significativo de la suma de los 256 bytes del
vector. El programa además debe comparar el checksum
calculado con el checksum verdadero que se encuentra
almacenado en la dirección 0900h. Si ambos valores son
iguales, se debe escribir el byte 00h en la dirección de
memoria 0A00h. Si ambos valores son distintos, se debe
escribir en la dirección de memoria 0A00h los 8 bits menos
significativos de la diferencia 'checksum verdadero menos
checksum calculado'.
D.Mery
90
Arquitectura de Computadores
Präsentat
ion
Instrucciones
[ Organización ]
Solución
LOOP
D.Mery
LD HL,0800H
LD A,00H
LD B,A
ADD (HL)
INC HL
DEC B
JP NZ,LOOP
LD B,A
LD A,(0900H)
SUB B
LD (0A00H),A
91
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
92
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
Una instrucción tiene “operandos”:
Ej: ADD A,(940)
%( A = A + (940))
Los operandos son A y el contenido de 940.
D.Mery
93
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
Una instrucción tiene “operandos”:
Ej: ADD A,(940)
%( A = A + (940))
Los operandos son A y el contenido de 940.
¿Cómo se pueden referenciar los operandos?
R/. Con los modos de direccionamiento.
D.Mery
94
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• Instrucción
Instrucción
Opcode
D.Mery
Número (N)
95
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
1.
2.
3.
4.
5.
6.
D.Mery
Modos de direccionamiento
Inmediato
Directo (o absoluto)
Indirecto
Registro
Indirecto con registro
Desplazamiento (Indexado)
96
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 1. Inmediato
Instruction
Opcode
D.Mery
Operand
97
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 1. Inmediato
• Operando es parte de la instrucción
• Operando = N
• Ej: ADD 5
– Suma 5 al acumulador
– 5 es un operando
• No hay referencia adicional a memoria
• Rápido
• Rango limitado
D.Mery
98
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 2. Directo (o absoluto)
Instruction
Opcode
Address A
Memory
Operand
D.Mery
99
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 2. Directo (o absoluto)
• El operando está en la dirección
referenciada por N
• Operando = (N)
• Ej: ADD (941) %A = A + (941)
• Hay sólo un acceso a la memoria
D.Mery
100
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 3. Indirecto
Instruction
Opcode
Address A
Memory
Pointer to operand
Operand
D.Mery
101
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 3. Indirecto
• Operando está en la memoria que
direcciona la memoria direccionada por N
• Operando = ((N))
• Existe acceso múltiple a la memoria para
encontrar el operando
• Este direccionamiento es muy lento
D.Mery
102
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 4. Registro
Instruction
Opcode
Register Address R
Registers
Operand
D.Mery
103
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 4. Registro
•
•
•
•
•
•
•
D.Mery
El operando es un registro de la CPU
Operando = Registro indicado por N, RN
Número limitado de registros
Instrucción rápida
Instrucción corta
No acceso a memoria
Espacio de direcciones limitado
104
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 5. Indirecto con registro
Instruction
Opcode
Register Address R
Memory
Registers
Operand
Pointer to Operand
D.Mery
105
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 5. Indirecto con registro
• El operando está en la memoria
direccionada por un registro.
• Operando = (RN)
• Hay un acceso menos a memoria que en
direccionamiento indirecto
D.Mery
106
Arquitectura de Computadores
Präsentat
ion
Modos de direccionamiento
[ Organización ]
• 6. Desplazamiento
Instruction
Opcode Register R Address A
Memory
Registers
Pointer to Operand
D.Mery
+
107
Operand
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Modos de direccionamiento
• 6. Desplazamiento
• El número N de la instrucción se parte en
2: una parte N1 indica un registro y otra
indica una dirección N2
• Operando = (RN1 + N2)
D.Mery
108
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
D.Mery
Instrucciones 68000
109
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
Formato de las instrucciones del 68000:
Label
Dirección
nemotécnico[.S]
operando1,[operando2]
Instrucción
Operandos
Longitud de
los operandos
B = byte
W = word
L = large word
D.Mery
110
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
Formato de las instrucciones del 68000:
Label
nemotécnico[.S]
INICIO
MOVE.B
operando1,[operando2]
D3,D4
Copia el byte menos significativo de D3 en D4
D.Mery
111
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
Formato de las instrucciones del 68000:
Label
nemotécnico[.S]
INICIO
MOVE.B
operando1,[operando2]
D3,D4
Copia el byte menos significativo de D3 en D4
WARNING:
En el 68000 la sintaxis es al revés que otros
Procesadores. Esta instrucción significa que
Datos de D3 se copian en D4 y NO VICEVERSA!!
D.Mery
112
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
Formato de las instrucciones del 68000:
Label
nemotécnico[.S]
operando1,[operando2]
Para usar números:
%
$
binario
hexagesimal
Ejemplo:
D.Mery
ADD.W %000000001000111110001,D2
MOVE.L #$18,D6
113
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
LA MEMORIA
La memoria principal de este computador está formada por celdas de un byte (8
bits), que constituyen la unidad básica de lectura o escritura, identificándose
mediante una dirección.
Los procesos de lectura y escritura pueden realizarse con varias celdas
consecutivas simultáneamente, debiendo indicar el procesador a la memoria
principal dos parámetros, la dirección de la primera celda de memoria y la
longitud de la información a la que se desea acceder. Siendo esta longitud de:
[B]
[W]
[L]
D.Mery
un byte
dos bytes (una palabra) o
cuatro bytes (palabra larga).
114
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
LA MEMORIA
8 bits
500
B
W
501
L
502
503
504
D.Mery
115
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
LA MEMORIA (cont.)
El tamaño máximo de la memoria viene determinado por el número de bits de los
registros de direcciones que tiene el procesador, siendo en el caso del Motorola
68000 de 32 bits pero, debido a limitaciones en el montaje sólo pueden utilizarse
24 como máximo, desde 0 hasta FFFFFF .
El procesador puede leer y escribir información de diferentes tamaños, existiendo
una norma para almacenar las palabras (W) y las palabras largas (L), y siendo
esta la de comenzar por el byte más significativo.
Existen 7 registros de direcciones y son: A0, A1, A2, A3, A4, A5 y A6, siendo éstos
de 32 bits aunque sólo pudiendose utilizar 24 bits para direccionar como antes se
ha mencionado.
D.Mery
116
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
LA MEMORIA
500
8 bits
8 bits
8 bits
0F
09
08
A4
34
501
502
AF
503
C0
504
Almacenamiento de
$0F en 500
(Byte)
D.Mery
Almacenamiento de
$09A4 en 500
(Word)
117
Almacenamiento de
$0834AFC0 en 500
(Large)
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
REGISTROS DE DATOS
El Motorola 68000 consta de 8 registros de datos, que son D0, D1, D2, D3, D4,
D5, D6 y D7. Cada uno consta de 32 bits. En muchas instrucciones existe la
posibilidad de especificar el tamaño del dato, indicándose este mediante el sufijo
S (B, W y L), que va añadido al nemotécnico de la instrucción.
La forma en que se almacenan los datos en los registros, viene dada por su
longitud, ya que como ésta es variable, irán ocupándolos de izquierda a derecha
empezando por el bit menos significativo del registro.
D.Mery
118
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO
Existen cuatro modos de direccionamiento:
1.- Direccionamiento inmediato: almacena el operando precedido del símbolo #
en el registro indicado.
Ejemplo: MOVE.L #$18,D6
Significa: D6.L  $18
Para recordar:
%
$
D.Mery
119
binario
hexagesimal
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
2.- Direccionamiento directo o absoluto: almacena el operando que está en la
dirección de memoria especificada en el registro de datos indicado.
Ejemplo: ADD.W %000000001000111110001,D2 suma la palabra que está en la
dirección de memoria indicada, a D2.
Significa: D2.W  D2.W + (%000000001000111110001)
Para recordar:
%
$
D.Mery
120
binario
hexagesimal
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
3.- Direccionamiento mediante registro: apunta a la dirección del registro
donde está el dato.
Ejemplo: MOVE.B D3,D4 copia el contenido del registro D3 (byte) a D4.
Significa: D4.B  D3.B
D.Mery
121
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
a)
Direccionamiento mediante registro normal: se da la dirección del registro
donde está la dirección del dato. El nombre del registro se escribe entre
paréntesis.
Ejemplo: ADD.B (A0),D6 suma el contenido de la posición de memoria (byte)
cuya dirección está en A0 al registro D6, guardando el resultado en este
último.
Significa: D6.B  D6.B + (A0)
D.Mery
122
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
b)
Direccionamiento relativo a registro con posincremento: incrementa en
una cantidad de memoria, según sea el tamaño del operando (1 para B, 2
para W y 4 para L), después de traer el contenido de la posición de memoria
indicada por el registro de direcciones.
Ejemplo: MOVE.W (A0)+,D0 copia en D0 el contenido de la posición de
memoria direccionada por A0 y luego incrementa en 2 el contenido de A0.
Significa:
D.Mery
D0.W  (A0)
A0  A0 + 2
123
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
c) Direccionamiento relativo a registro con predecremento: Decrementa en
una cantidad de memoria, según sea el tamaño del operando, el registro de
direcciones y trae despues el contenido de la posición de memoria cuya dirección
es el nuevo valor de dicho registro.
Ejemplo: MOVE.B -(A0),D0 decrementa en uno el contenido del registro A0 y
luego copia en D0 el contenido de la nueva posición de memoria direccionada por
A0.
Significa:
D.Mery
A0  A0 – 1
D0.B  (A0)
124
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
d) Direccionamiento relativo a registro con desplazamiento: El contenido de
la posición de memoria cuya dirección viene dada por la suma del valor del
registro de direcciones y una cantidad fija denominada desplazamiento, pudiendo
ser este positivo o negativo y su valor viene condiciondo por el tamaño del
operando.
Ejemplo: MOVE.L 6(A0),D1 copia en el registro D1 el contenido de la posición de
memoria cuya dirección viene dada por la suma de 6 multiplicado por 4(L) al
contenido de A0.
Significa:
D.Mery
D1.L  (A0 + 6×4)
125
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
e) Direccionamiento relativo a registro con índice: Este modo de
direccionamiento es la extensión natural del anterior, ya que permite usar
desplazamientos variables, utilizando como desplazamiento el resultado de
sumar un número fijo al contenido de un registro de datos denominado registro
índice.
Ejemplo: MOVE.B 4(A0,D1), D0 copia en el registro D0 el contenido de la
posición de memoria cuya dirección es el resultado de sumar el número 4, el
contenido del registro A0 y el contenido del registro D1. Este modo de
direccionamiento no altera el registro de direcciones ni el registro índice.
Significa:
D.Mery
D0.B  (4+A0+D1)
126
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
f) Direccionamiento relativo al contador de programa con desplazamiento:
Cuando es necesario hacer referencia a un operando relativo a la posición de la
proxima instrucción que va a ser ejecutada.
Ejemplo: MOVE.B 24(PC),D0 copia en el registro D0 el contenido de la posición
de memoria cuya dirección es la suma de 24 y el valor del contador del programa.
Significa:
D.Mery
D0.B  (24+PC)
127
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
MODOS DE DIRECCIONAMIENTO (cont...)
4.- Direccionamiento relativo a registro:
g) Direccionamiento relativo al contador de programa con índice: Utiliza
como desplazamiento el resultado de sumar un número fijo al contenido de un
registro de datos.
Ejemplo: MOVE.B 24(PC,D0),D1 copia en el registro D1 el contenido de la
posición de memoria cuya dirección es el resultado de sumar el número 24, el
contador de programa y el contenido del registro D0.
Significa:
D.Mery
D1.B  (24 + PC + D0)
128
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
FORMATOS DE INSTRUCCIONES
Los formatos empleados para las instrucciones utilizan una o más palabras de
16 bits. La primera palabra especifica el código de la operación y en muchos
casos la dirección de un operando. Las especificaciones para completar los
operandos, cuando no es suficiente con una palabra van a continuación de la
primera palabra. Cada operando utilizará como máximo dos palabras de
ampliación, equivalente a una palabra larga, después de la del código de
operación, por lo que la instrucción más larga del Motorola 68000 ocupa 5
palabras (10 bytes), siendo 1 para el código de instrucción, 2 palabras de
ampliación para el operando origen, y 2 palabras de ampliación más para el
operando destino.
D.Mery
129
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
FORMATOS DE INSTRUCCIONES
La información que identifica la situación exacta del operando, denominada
dirección efectiva, se codifica en los formatos de instrucción mediante dos
campos, siendo uno el modo de direccionamiento (MD) y el otro el de registro.
Cada campo tiene un tamaño de 3 bits y se incluyen en la primera palabra de
instrucción. El campo MD identifica el modo de direccionamiento empleado y el
campo CR indica el registro empleado para obtener la dirección del operando. A
veces se utilizan las palabras de ampliación ya que la dirección efectiva requiere
incluir más información sobre la situación del operando en la palabra de
instrucción.
D.Mery
130
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
INSTRUCCIONES CONDICIONALES
Al realizar operaciones matemáticas existe la posibilidad de desbordamiento,
por lo que se realiza un test automáticamente, quedando el resultado
almacenado en un registro de control, dedicado especialmente a tal efecto,
denominado registro de código de condición (CCR), pudiendose leer mediante la
instrucción MOVE. Este registro consta de 5 flags que se almacenan en los 5 bits
menos significativos del registro de estado (SR).
D.Mery
131
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
INSTRUCCIONES CONDICIONALES
Estos 5 bits tienen las siguientes denominaciones, ordenadas desde el bit menos
significativo:
C indicador de acarreo (carry flag): indica el valor del bit de acarreo de la
posición más significativa del resultado de una operación, poniéndose a 1 si existe
desbordamiento.
V indicador de desbordamiento (overflow flag): indica si en el resultado de una
operación en complemento a 2 existe desbordamiento, poniendose a 1.
Z es el indicador de cero (zero flag): se pone a 1 cuando sea 0 el resultado de
una operación aritmetica o lógica.
N es el indicador de número negativo (negative flag): se pone a 0 si es positivo
y a 1 si es negativo el signo del resultado de una operación en complemento a 2.
X es el indicador extendido (extended flag): funciona de la misma manera que
C, pero únicamente con operaciones aritméticas o de desplazamiento.
D.Mery
132
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
INSTRUCCIONES DEL 68000
1.- Instrucciones de transferencias de datos
2.- Instrucciones aritméticas
3.- Instrucciones lógicas
4.- Instrucciones de desplazamiento y rotación
5.- Instrucciones de manipulación de bits
6.- Instrucciones de operación en código BCD
7.- Instrucciones de ramificación y salto
8.- Instrucciones de manejo de subrutinas
D.Mery
133
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
1.- Instrucciones de transferencias de datos
El conjunto de estas instrucciones permite el movimiento de datos entre
registros de la CPU, entre registros y memoria y entre posiciones de
memoria. Estas son las siguientes:
D.Mery
Instrucción
MOVE
Descripción
MOVEA
Copia direcciones
MOVEQ
Copia rápido registros de datos (8 bits)
MOVEM
Copia de memoriaS a registroS
EXG y SWAP
Intercambio de contenidos
LEA y PEA
Determina dirección efectiva de operando
LINK y UNLINK
Facilita el uso de la pila en saltos a subrutinas
Copia de datos de fuente a destino
134
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
2.- Instrucciones aritméticas
El Motorola 68000 dispone de instrucciones para las 4 operaciones
aritméticas, sobre operandos binarios, y suma y resta sobre datos
codificados en BCD. Además de cambio de signo para ambos tipo de datos,
instrucciones de comparación, extensión de signo y actualización de los
códigos de condición (CCR) según el valor de un dato:
D.Mery
Instrucción
ADD / SUB
Descripción
ADDA / SUBA
Suma / resta direcciones
ADDI / SUBI
Suma / resta con direccionamiento inmediato
ADDQ / SUBQ
Suma / resta rápida (8 bits)
ADDX / SUBX
Suma / resta incluyendo el flag X
CLR
Carga un cero binario en el operando
Suma resta general
135
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
2.- Instrucciones aritméticas (cont…)
El Motorola 68000 dispone de instrucciones para las 4 operaciones
aritméticas, sobre operandos binarios, y suma y resta sobre datos
codificados en BCD. Además de cambio de signo para ambos tipo de datos,
instrucciones de comparación, extensión de signo y actualización de los
códigos de condición (CCR) según el valor de un dato:
D.Mery
Instrucción
MULS y MULU
Descripción
DIVS y DIVU
Division signed & Division unsigned
CMP
Compara dos operandos
CMPA
Compara dos direcciones
CMPI
Compara utilizando direccionamiento inmediato
NEG
Complemento a 2
NEGX
Negación extendida considerando flag X
Multiply signed & Multiply unsigned
136
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
3.- Instrucciones lógicas
El Motorola 68000 dispone de cuatro instrucciones que realizan funciones
lógicas, que actúan bit a bit sobre datos de 8, 16, ó 32 bits y cuatro para
manejar bits individuales sobre datos de 8 ó 32 bits.
D.Mery
Instrucción
AND
Descripción
ANDI
And con direccionamiento inmediato
EOR / EORI
Or exclusivo / con direccionamiento inmediato
NOT
Negación lógica
OR / ORI
Or lógico / con direccionamiento inmediato
TST
Comprueba un operando
Scc
Comprueba los códigos de condición CCR
And lógico
137
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
4.- Instrucciones de desplazamiento
Se caracterizan por desplazar o rotar el operando bit a bit a la derecha o a la
izquierda. El operando destino, que es el afectado por el desplazamiento o
por la rotación siempre será un registro de datos.
D.Mery
Instrucción
ASL / ASR
Descripción
LSL / LSR
Logical shift left / right
ROL / ROR
Rotate left / right
ROXL / ROXR
Rotate left / right incluyendo flag X
Aritmetic shift left / right
138
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
5.- Instrucciones de manipulación de bits
El Motorola 68000 permite comprobar, poner a cero , poner a uno e invertir
los bits individuales de un valor entero. El resultado lo pone en el flag Z.
D.Mery
Instrucción
BTST
Descripción
BCLR
Bit clear
BSET
Bit set
BCHG
Bit change
Bit test
139
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
6.- Instrucciones de operación en código BCD
El Motorola 68000 permite comprobar, poner a cero , poner a uno e invertir
los bits individuales de un valor entero. El resultado lo pone en el flag Z.
D.Mery
Instrucción
ABCD
Descripción
NBCD
Niego el destino
SBCD
Resta fuente al destino
Suma fuente al destino
140
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
7.- Instrucciones de ramificación y salto
Bcc (Branch on condition code) Label: salta a label cuando cc es verdadero:
Bcc
D.Mery
Condición (cc)
BEQ
LABEL
Z
BNE
LABEL
Z'
BCS
LABEL
C
BCC
LABEL
C'
BHI
LABEL
C' · Z'
BLS
LABEL
C+Z
BMI
LABEL
N
BPL
LABEL
N'
BVS
LABEL
V
BVC
LABEL
V'
BGT
LABEL
Z' · [[N · V] + [N' · V']]
BGE
LABEL
[N · V] +[N' · V']
BLT
LABEL
[N · V'] + [N' · V]
BLE
LABEL
Z + [N · V'] + [N' · V]
141
Arquitectura de Computadores
Präsentat
ion
Instrucciones 68000
[ Organización ]
7.- Instrucciones de ramificación y salto (cont…)
D.Mery
Instrucción
DBcc
Descripción
BRA
Branch incondicional (direccionamiento relativo)
JMP
Jump incondicional (direccionamiento absoluto)
STOP
Se detiene la CPU
NOP
No ejecuta operación (sirve como delay)
Decrement and branch on condition
142
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
8.- Instrucciones de manejo de subrutinas
BSR y JSR: (Branch to Subrutine y Jump to Subrutine) el operando
asociado con estas instrucciones debe ser la dirección de memoria en la
que se comienza la subrutina, con direccionamiento absoluto para JSR,
y relativo a PC para BSR. Al ejecutarse cualquiera de las dos
instrucciones, se almacena automáticamente en la pila el valor del
contador de programa en el momento anterior al salto, cuando su
contenido apunta a la dirección de comienzo de la instrucción siguiente a
JSR o BSR.
La subrutina debe tener como última instrucción a ejecutar RTS (Return
from Subrutine) o RTR (Return and Restore). Ambas recuperan de la
pila el valor del contador del programa, lo que permite reanudar la
ejecución del programa precisamente en el punto que había sido
abandonado. La instrucción RTR también repone el CCR extrayendo
una palabra de la pila inmediatamente antes de recuperar el PC. La
subrutina debe llevar a la pila, justamente encima de las posiciones que
contienen la posición de retorno, una palbra cuyos 5 bits menos
significativos serán llevados al CCR al ejecutarse RTR, que puede ser
una copia del CCR al entrar en la subrutina, o cualquier otro valor.
D.Mery
143
Arquitectura de Computadores
Präsentat
ion
[ Organización ]
Instrucciones 68000
Reference Manual
68000.pdf
D.Mery
144
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
145
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Esta operación se podría hacer en un microprocesador
teniendo las variables X, Y, Z almacenadas en la memoria,
por ejemplo: X en la posición 500, J en la 501 y K en la 502,
y ejecutando las siguientes instrucciones:
1.
2.
3.
4.
D.Mery
Cargar el contenido de 500 en el acumulador.
Sumar al acumulador el contenido de 501.
Sumar al acumulador el contenido de 502.
Almacenar el acumulador en la posición 503.
146
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Suponiendo un código binario para las instrucciones:
1. Cargar el contenido de 500 en el acumulador:
0010 0101 0000 0000
D.Mery
147
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Suponiendo un código binario para las instrucciones:
1. Cargar el contenido de 500 en el acumulador:
0010 0101 0000 0000
Este código significa cargar en el acumulador
el contenido de esto
(0101 0000 0000 significa 500)
D.Mery
148
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Suponiendo un código binario para las instrucciones:
1. Cargar el contenido de 500 en el acumulador:
0010 0101 0000 0000
2. Sumar al acumulador el contenido de 501.
0011 0101 0000 0001
3. Sumar al acumulador el contenido de 502.
0011 0101 0000 0010
4. Almacenar el acumulador en la posición 503.
0001 0101 0000 0011
D.Mery
149
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Además hay que poner en las direcciones 500, 501 y
502 los valores de las variables X, Y y Z:
500
501
502
D.Mery
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
150
X es 0021
Y es 0032
Z es 011A
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
D.Mery
Programa en binario:
Explicación
000
001
002
003
:
500
501
502
503
0010 0101 0000 0000
0011 0101 0000 0001
0011 0101 0000 0010
0001 0101 0000 0011
A  (500)
A  A + (501)
A  A + (502)
(503)  A
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
0000 0000 0000 0000
Dato X
Dato Y
Dato Z
Libre para escribir T
151
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
000
001
002
003
:
500
501
502
503
D.Mery
0010 0101 0000 0000
0011 0101 0000 0001
0011 0101 0000 0010
0001 0101 0000 0011
Lenguaje
máquina
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
0000 0000 0000 0000
152
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Programa
en hexa
000
001
002
003
:
500
501
502
503
D.Mery
0010 0101 0000 0000
0011 0101 0000 0001
0011 0101 0000 0010
0001 0101 0000 0011
000
001
002
003
2500
3501
3502
1503
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
0000 0000 0000 0000
500
501
503
504
0021
0032
011A
0000
153
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Programa
simbólico
000
001
002
003
:
500
501
502
503
D.Mery
0010 0101 0000 0000
0011 0101 0000 0001
0011 0101 0000 0010
0001 0101 0000 0011
000
001
002
003
LDA (500)
ADD (501)
ADD (502)
STA (503)
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
0000 0000 0000 0000
500
501
502
503
DAT 0021
DAT 0032
DAT 011A
DAT 0000
154
Arquitectura de Computadores
Präsentat
ion
Assembler
[ Organización ]
Ejemplo sencillo: implementar T = X + Y + Z
Programa
en assembler
000
001
002
003
:
500
501
502
503
D.Mery
0010 0101 0000 0000
0011 0101 0000 0001
0011 0101 0000 0010
0001 0101 0000 0011
INICIO
LDA (VX)
ADD (VY)
ADD (VZ)
STA (VT)
0000 0000 0010 0001
0000 0000 0011 0010
0000 0001 0001 1010
0000 0000 0000 0000
VX
VY
VZ
VT
DAT 0021
DAT 0032
DAT 011A
DAT 0000
155
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
156
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Uso de subrutinas:
Frecuentemente la misma pieza de código debe escribirse
varias veces en muchas partes diferentes de un programa.
En vez de repetir el código cada vez que sea necesario, hay
una ventaja obvia si las instrucciones comunes se escriben
solamente una vez.
Un conjunto de instrucciones comunes que pueden utilizarse
en un programa muchas veces se denomina subrutina.
D.Mery
157
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Uso de subrutinas:
Cada vez que la subrutina se utiliza en la parte del programa
principal, una ramificación se ejecuta al comienzo de la
subrutina.
Después que la subrutina ha sido ejecutada, una ramificación
se hace de nuevo al programa principal.
D.Mery
158
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Uso de subrutinas:
Programa
principal
Subrutina
Llamado a
Subrutina
D.Mery
159
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Uso de subrutinas:
Programa
principal
Subrutina
Llamado a
Subrutina
Llamado a
Subrutina
D.Mery
j
j+1
160
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Uso de subrutinas:
Los registros y las memorias son comunes para el programa
principal y para la subrutina, i.e., se consideran variables
globales.
Ventaja: la comunicación de los parámetros entre el
programa principal y la subrutina es simple y rápido.
Desventaja: el programador puede olvidar que ciertos
registros usados por en el programa principal no deben ser
alterados en la subrutina, esto puede causar serios
problemas y la detección de este error es difícil.
D.Mery
161
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
D.Mery
162
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
La mejor solución sería utilizando una subrutina que tenga
como parámetro una dirección X y que realice la operación:
(X)  (X) + 5
El programa principal debe cargar correctamente el registro
X y llamar a la subrutina tres veces.
D.Mery
163
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
Programa principal
LOAD X,0100
CALL SUM5
LOAD X,0200
CALL SUM5
LOAD X,0204
CALL SUM5
D.Mery
Subrutina
SUM5 LOAD A,(X)
ADD 5
STORE (X),A
RET
164
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
¿Qué pasa si el programa
principal estaba usando A?
Programa principal
LOAD X,0100
CALL SUM5
LOAD X,0200
CALL SUM5
LOAD X,0204
CALL SUM5
D.Mery
Subrutina
SUM5 LOAD A,(X)
ADD 5
STORE (X),A
RET
165
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
¿Qué pasa si el programa
principal estaba usando A?
kaput!!
Programa principal
LOAD X,0100
CALL SUM5
LOAD X,0200
CALL SUM5
LOAD X,0204
CALL SUM5
D.Mery
Subrutina
SUM5 LOAD A,(X)
ADD 5
STORE (X),A
RET
166
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100)  (0100) + 5
(0200)  (0200) + 5
(0204)  (0204) + 5
Solución: se usa la pila
Programa principal
LOAD X,0100
CALL SUM5
LOAD X,0200
CALL SUM5
LOAD X,0204
CALL SUM5
D.Mery
Subrutina
SUM5 PUSH A
LOAD A,(X)
ADD 5
STORE (X),A
POP A
RET
167
Arquitectura de Computadores
Präsentat
ion
Subrutinas
[ Organización ]
La Pila (stack):
Existe una memoria direccionada por el registro SP (stack
pointer). ¿Cómo se usa?
Cada vez que se hace PUSH X:
(SP)  X
SP  SP + 1
Cada vez que se hace POP X:
SP  SP - 1
X  (SP)
(es posible hacer PUSH X y luego POP Y)
D.Mery
168
Arquitectura de Computadores
Präsentat
ion
[ Índice ]
3.1 Máquina de von Neumann
3.2 Unidad de control
3.3 Fetch, decodificación, ejecución
3.4 Conjunto de instrucciones
3.5 Programación en assembler
3.6 Formatos de instrucción
3.7 Modos de direccionamiento
3.8 Mecanismos de subrutinas
3.9 E/S e interrupciones
D.Mery
169
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
El ciclo de una instrucción (sin interrupción)
D.Mery
170
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Diagrama de estado (sin interrupción)
D.Mery
171
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo sin interrupciones: un programa quiere leer datos
del disco duro.
1. El programa solicita datos a la unidad de disco.
2. La unidad de disco recibe solicitud y posiciona el cabezal
del disco en la posición deseada.
3. La unidad lee los datos.
4. La unidad verifica consistencia de los datos (checksum)
5. if OK (Envía los datos a la CPU) else GOTO 3
6. La CPU recibe datos y continúa su programa
1
D.Mery
2
3
4
172
5
6
t
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
Unidad de disco
lee y envía datos
CPU
recibe
datos
CPU
solicita
datos
1
D.Mery
2
3
4
173
5
6
t
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
¿Qué hace
la CPU en
este tiempo?
CPU
recibe
datos
CPU
solicita
datos
1
D.Mery
2
3
4
174
5
6
t
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
¿Qué hace
la CPU en
este tiempo?
CPU
solicita
datos
1
D.Mery
CPU
recibe
datos
NADA!!
la CPU espera…
2
3
4
175
5
6
t
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.
1. El programa solicita datos a la unidad de disco.
2. La CPU no espera datos, hace otra cosa: por ejemplo
ejecuta otro programa o continua ejecutando el mismo
programa siempre que pueda prescindir de los datos
solicitados.
3. La unidad de disco se encarga de leer los datos
correctamente. Cuando los datos están listos la unidad
de disco “interrumpe” a la CPU.
4. La CPU deja de hacer lo que está haciendo y atiende la
interrupción, i.e., recibe los datos de la unidad de disco.
t (CPU)
t (unidad de disco)
D.Mery
176
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.
CPU
solicita
datos
CPU
hace
otra cosa
CPU
recibe
datos
1
2
4
3
t
interrupción
Unidad de disco
lee y envía datos
D.Mery
177
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.
CPU
solicita
datos
CPU
hace
otra cosa
CPU
recibe
datos
1
2
4
3
Ahorro de
tiempo
t
interrupción
Unidad de disco
lee y envía datos
D.Mery
178
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
La interrupción es el mecanismo mediante el cual otros
módulos pueden interrumpir una secuencia normal de
procesamiento.
• Programa: por ejemplo división por cero
• Temporizador: cuando se cumple un tiempo específico
• E/S: cuando hay algo que comunicar
• Hardware: cuando ocurre una falla
D.Mery
179
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
El ciclo de una instrucción (con interrupción)
D.Mery
180
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Diagrama de estado (con interrupción)
D.Mery
181
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Bus de direcciones
A0
A12
A12
CPU
MREQ
A12
A11
:
A0
RD
WR
D0
D7
Bus de datos
D7
D0
ROM
A11
D.Mery
D0
D7
WR
RAM
RD
RD
CE
CE
A0
A11
A0
182
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Bus de direcciones
A0
A12
CPU
INT
MREQ
RD
WR
IORQ
D0
D7
decoder
Bus de datos
D0
D7
I/O
ROM
RAM
CE
CE
CE
A11
D.Mery
A0
183
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Funcionamiento de las interrupciones (posibilidad 1):
1. El dispositivo I/O cuando necesita interrumpir solicita
atención y envía una señal INT a la CPU.
2. La CPU termina su instrucción y envía un
reconocimiento a quien interrumpe mediante la señal
IORQ (I/O request).
3. El dispositivo envía por el bus de datos un byte y la
CPU forma una dirección a partir de este byte.
4. La CPU salta a esta dirección y ejecuta el programa
de atención a la interrupción.
5. La CPU finaliza esta rutina de interrupción y regresa
a la dirección que estaba en el momento de la
interrupción.
D.Mery
184
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Funcionamiento de las interrupciones (posibilidad 2):
1. Igual
2. Igual
3. La CPU al saber que es el dispositivo X el que
interrumpe lee el elemento X del “vector de
interrupciones” ubicado en algún lugar de la
memoria, a partir de este elemento calcula la
dirección de memoria de la rutina de atención de la
interrupción.
4. Igual
5. Igual
D.Mery
185
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
D.Mery
186
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Interrupciones múltiples:
1. Inhibición de interrupciones:
• La CPU ignora las interrupciones cuando ya está
procesando una interrupción.
• Las interrupciones ocurridas quedan pendientes y se
ejecutan en una determinada secuencia una vez que la
CPU termine la primera interrupción.
D.Mery
187
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Interrupción múltiple (secuencial)
D.Mery
188
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Interrupciones múltiples (cont):
2. Definición de prioridades
• Interrupciones de baja prioridad pueden ser interrumpidas
por interrupciones de mayor prioridad.
• Cuando una interrupción de prioridad alta ha sido
atendida, la CPU regresa a la interrupción previa.
D.Mery
189
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Interrupción múltiple (anidadas)
D.Mery
190
Arquitectura de Computadores
Präsentat
ion
Interrupciones
[ Organización ]
Secuencia temporal de varias interrupciones
D.Mery
191
Arquitectura de Computadores
Präsentat
ion