Está en la página 1de 148

Universidad Tecnológica Nacional

Facultad Regional Tucumán


Ingeniería en Sistemas de Información

[ Arquitectura de Computadores ]

ORGANIZACIÓN DE LA COMPUTADORA

Año 2010

Präsentat
ion

1 Arquitectura de Computadores
[ Índice ]

43.1. Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
2 Arquitectura de Computadores Präsentat
ion
[ Índice ]

43.1. Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
3 Arquitectura de Computadores Präsentat
ion
[ Organización ] Máquina von Neumann

1023
Ejemplo:
:
¿Cómo sumar el contenido de 867
la posición 867 con el :
contenido de la posición 562 y 778
almacenar el resultado en la
:
posición 778?
562
:
2
1
0

Memoria de 1024 × 8

4 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Ejemplo:
:
¿Cómo sumar el contenido de 867
la posición 867 con el :
contenido de la posición 562 y
almacenar el resultado en la
778 +
:
posición 778?
562
:
2
1
0

Memoria de 1024 × 8

5 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución:
:
1. Leer en la memoria la 867
posición 867 :
778
:
output
562
:
2
1
0

Decoder & Read/Write


Memoria de 1024 × 8
Dirección 867 Read
6 Arquitectura de Computadores Präsentat
ion
[ Organización ] Máquina von Neumann

1023
Solución:
:
1. Leer en la memoria la 867
posición 867 :
2. Almacenar lo leído en un 778
registro externo
:
output
562
:
2
AC
1
0

Decoder & Read/Write


Memoria de 1024 × 8

7 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución:
:
1. Leer en la memoria la 867
posición 867 :
2. Almacenar lo leído en un 778
registro externo
:
3. Leer en la memoria la output
posición 562 562
:
2
AC
1
0

Decoder & Read/Write


Memoria de 1024 × 8
Dirección 562 Read
8 Arquitectura de Computadores Präsentat
ion
[ Organización ] Máquina von Neumann

1023
Solución:
:
1. Leer en la memoria la 867
posición 867 :
2. Almacenar lo leído en un 778
registro externo
:
3. Leer en la memoria la output
posición 562 562
4. Sumar lo leído con el : sumador
registro externo 2
AC
1
0

Decoder & Read/Write


Memoria de 1024 × 8

9 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución:
:
1. Leer en la memoria la 867
posición 867 :
input
2. Almacenar lo leído en un 778
registro externo
:
3. Leer en la memoria la
posición 562 562
4. Sumar lo leído con el : sumador
registro externo 2
5. Almacenar la suma en la 1
posición 778
0

Decoder & Read/Write


Memoria de 1024 × 8
Dirección 778 Write
10 Arquitectura de Computadores Präsentat
ion
[ Organización ] Máquina von Neumann

1023
Solución general:
: Unidad de
867 aritmética
:
y lógica
778
:
562
: Unidad
de control
2
1 Programa
0

Decoder & Read/Write


Memoria de 1024 × 8

11 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución general:
: Unidad de
El programa le da 867 aritmética
instrucciones a la :
y lógica
Unidad Central. 778
:
Ejemplo:
562
: Unidad
00100001 110110011
de control
significa leer en la 2
memoria 110110011 y 1 Programa
almacenar la lectura
0
en el registro AC de la
ALU.
Decoder & Read/Write
Memoria de 1024 × 8

12 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución general:
: Unidad de
El programa le da 867 aritmética
instrucciones a la :
y lógica
Unidad Central. 778
:
Ejemplo:
562
: Unidad
00100001 110110011
de control
significa leer en la 2
memoria 110110011 y 1 Programa
almacenar la lectura
0
en el registro AC de la Significa
ALU. leer y
Decoder & Read/Write
Memoria de 1024 × 8 almacenar
en AC

13 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución general:
: Unidad de
El programa le da 867 aritmética
instrucciones a la :
y lógica
Unidad Central. 778
:
Ejemplo:
562
: Unidad
00100001 110110011
de control
significa leer en la 2
memoria 110110011 y 1 Programa
almacenar la lectura
0
en el registro AC de la Significa lo que se
ALU. debe leer:
Decoder & Read/Write
Memoria de 1024 × 8 110110011 = 867

14 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann

1023
Solución general:
: Unidad de
El programa le da 867 aritmética
instrucciones a la :
y lógica
Unidad Central. 778
:
Ejemplo:
562
: Unidad
00100001 110110011
de control
significa leer en la 2 :
memoria 110110011 y 1 110110011
almacenar la lectura
0 000100001
en el registro AC de la
ALU.
Decoder & Read/Write
Memoria de 1024 × 8

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 considerar el tipo de dato contenido en la
misma.

3. La ejecución se produce siguiendo una secuencia de


instrucción tras instrucción (a no ser que dicha secuencia se
modifique explícitamente).

16 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
Estructura

17 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
Detalles • 1000 x 40 bit words
– Binary number
– 2 x 20 bit instructions
Palabra número
01 39

Signo

Palabra instrucción
0 8 19 20 28 39

Codop Dirección Codop Dirección

18 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
Detalles

Palabra instrucción
0 8 19

Codop 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.

19 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
Detalles

• Conjunto de registros ( en CPU)


– Memory Buffer Register (MBR)
– Memory Address Register (MAR)
– Instruction Register (IR)
– Instruction Buffer Register (IBR)
– Program Counter (PC)
– Accumulator (AC)
– Multiplier Quotient (MQ)

20 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
Detalles de la estructura
máquina von Neumann

(CC)

21 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.

(CC)

22 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.

(CC)

23 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.

(CC)

24 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.

(CC)

25 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.

(CC)

26 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.

(CC)

27 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.

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).

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)

30 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)|
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 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 Descripción


00010010 STOR M(X,8:19) Reemplazar el campo de dirección
de la izquierda de M(X) por los 12
bits de la derecha de AC.
00010011 STOR M(X,28:39) Reemplazar el campo de dirección
de la derecha de M(X) por los 12
bits de la derecha de AC.

32 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.

33 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) % transfiere el contenido de 867 a AC


ADD M(562) % AC ← AC + M(562)
STOR M(778) % transfiere AC a la memoria 778

34 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) % transfiere el contenido de 867 a AC


ADD M(562) % AC ← AC + M(562)
STOR M(778) % transfiere AC a la memoria 778

35 Arquitectura de Computadores Präsentat


ion
[ Organización ] Máquina von Neumann
¿Cómo se almacena el programa?

LOAD M(867) 00000001 001101100011


ADD M(562) 00000100 001000110010
STOR M(778) 00100001 001100001010

36 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.

37 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.

LOAD M(867) % transfiere el contenido de 867 a AC


RSH % divide el acumulador entre dos
RSH % divide el acumulador entre dos
RSH % divide el acumulador entre dos
STOR M(778) % transfiere AC a la memoria 778

38 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.

39 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.

1. LOAD M(867) % transfiere el contenido de 867 a AC


2. SUB M(562) % AC ← AC - M(562)
3. JUMP +M(3,28:39) % salta si AC ≥ 0 (i.e. M(867)≥ M(562))
4. LOAD M(500) % transfiere el contenido de 500 a AC
5. STOR M(501) % 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.
40 Arquitectura de Computadores Präsentat
ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
41 Arquitectura de Computadores Präsentat
ion
[ Organización ] Unidad de control

periféricos Computador

Unidad
Central de Memoria
Proceso Principal
CPU

Computador Sistema de
interconexión

Entrada
Salida
Líneas de
comunicación

42 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

Ejemplo:

Bus de Direcciones

Memoria Periféricos Bus de Control


CPU
Principal

Memoria
Secundaria Bus de Datos

43 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

Ejemplo:

44 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

CPU

Computer Unidad
Registros Aritmética y
I/O
Lógica
System CPU
Bus Interconexión
Memory
Interna de la CPU

Unidad
de
Control

45 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

Unidad de Control

CPU
Lógica
ALU Secuencial
Internal Control
Unit
Bus
Unidad de control
Registers de registros y
decodificadores

Memoria
de control

46 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

Unidad de Control

CPU
Lógica
ALU
La unidad de control Secuencial
controla el
Control
Unitfuncionamiento de la CPU:
Internal
Bus
Unidad de control
• controla las transferencias de
Registers de registros y
datos desde hacia la CPU y decodificadores
• controla la ALU.
Memoria
de control

47 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
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.

48 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
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.

decoder Se activa sólo una salida


codop

49 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
Componentes del
computador:

50 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
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.
51 Arquitectura de Computadores Präsentat
ion
[ Organización ] Unidad de control

Registros

ALU

Unidad de
Control Bus de Bus de Bus de
control datos direcciones

Bus del sistema


52 Arquitectura de Computadores Präsentat
ion
[ Organización ] Unidad de control
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. Uso general
2. Datos
3. Direcciones
4. Códigos de condición

53 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

¿cuántos registros de propósito general?

• Ó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.

54 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control

¿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.

55 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
Ejemplos de organización de registros:

56 Arquitectura de Computadores Präsentat


ion
[ Organización ] Unidad de control
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
57 Arquitectura de Computadores Präsentat
ion
[ Organización ] Unidad de control
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:

• 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
58 Arquitectura de Computadores Präsentat
ion
[ Organización ] Unidad de control
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…)

• 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

59 Arquitectura de Computadores Präsentat


ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
60 Arquitectura de Computadores Präsentat
ion
[ Organización ] Ciclos fetch, decode, exe

1. Recuperar la siguiente
instrucción desde 2. Decodificar el patrón de
memoria (apuntada por bits en el registro de
el program counter) y instrucción IR
luego incrementar el
program counter.

3. Ejecutar la instrucción
indicada en el registro de
instrucción IR

Ciclo de instrucción
61 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.

62 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.

63 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

64 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:
65 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:
66 Arquitectura de Computadores Präsentat
ion
[ Organización ] Ciclos fetch, decode, exe
3. El registro de PC se
incrementa en uno
(toma el valor 301) y se
capta la siguiente
instrucción que se
carga en AC (5941).

Ejemplo:
67 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:
68 Arquitectura de Computadores Präsentat
ion
[ Organización ] Ciclos fetch, decode, exe
5. El registro PC se
incrementa en 1 (toma
el valor 302) y se capta
la siguiente instrucción
(2941) desde la nueva
posición de memoria,
cargándola en AC.

Ejemplo:
69 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:
70 Arquitectura de Computadores Präsentat
ion
[ Organización ] Ciclos fetch, decode, exe

¿Cuántos ciclos de
instrucción se
necesitan?

71 Arquitectura de Computadores Präsentat


ion
[ Organización ] Ciclos fetch, decode, exe

¿Cuántos ciclos de
instrucción se
necesitan?

R/. Tres

72 Arquitectura de Computadores Präsentat


ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
73 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

74 Arquitectura de Computadores
[ Organización ] Conjunto de instrucciones
1.- Instrucciones de transferencias de datos

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

75 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

76 Arquitectura de Computadores
[ Organización ] Conjunto de instrucciones
2.- Instrucciones aritméticas

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

77 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.

78 Arquitectura de Computadores
[ Organización ] Conjunto de instrucciones
3.- Instrucciones lógicas

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

79 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.

80 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


81 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.

82 Arquitectura de Computadores
[ Organización ] Conjunto de instrucciones
5.- Entrada / salida

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

83 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.

84 Arquitectura de Computadores
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
85 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.

86 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.


87 Arquitectura de Computadores Präsentat
ion
[ Organización ] Modos de direccionamiento
• Instrucción

Instrucción
Opcode Número (N)

88 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento

1. Inmediato
2. Directo (o absoluto)
3. Indirecto
4. Registro
5. Indirecto con registro
6. Desplazamiento (Indexado)

89 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 1. Inmediato

Instruction
Opcode Operand

90 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

91 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 2. Directo (o absoluto)
Instruction
Opcode Address A
Memory

Operand

92 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

93 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 3. Indirecto
Instruction
Opcode Address A
Memory

Pointer to operand

Operand

94 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

95 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 4. Registro
Instruction
Opcode Register Address R
Registers

Operand

96 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 4. Registro
• 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

97 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 5. Indirecto con registro
Instruction
Opcode Register Address R
Memory

Registers

Pointer to Operand Operand

98 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

99 Arquitectura de Computadores Präsentat


ion
[ Organización ] Modos de direccionamiento
• 6. Desplazamiento
Instruction
Opcode Register R Address A
Memory

Registers

Pointer to Operand + Operand

100 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)

101 Arquitectura de Computadores Präsentat


ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
102 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler

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. Cargar el contenido de 500 en el acumulador.


2. Sumar al acumulador el contenido de 501.
3. Sumar al acumulador el contenido de 502.
4. Almacenar el acumulador en la posición 503.

103 Arquitectura de Computadores Präsentat


ion
[ Organización ] Assembler
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

104 Arquitectura de Computadores Präsentat


ion
[ Organización ] Assembler
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)

105 Arquitectura de Computadores Präsentat


ion
[ Organización ] Assembler
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
106 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler
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 0000 0000 0010 0001 X es 0021


501 0000 0000 0011 0010 Y es 0032
502 0000 0001 0001 1010 Z es 011A

107 Arquitectura de Computadores Präsentat


ion
[ Organización ] Assembler
Ejemplo sencillo: implementar T = X + Y + Z

Programa en binario: Explicación

000 0010 0101 0000 0000 A ← (500)


001 0011 0101 0000 0001 A ← A + (501)
002 0011 0101 0000 0010 A ← A + (502)
003 0001 0101 0000 0011 (503) ← A
:
500 0000 0000 0010 0001 Dato X
501 0000 0000 0011 0010 Dato Y
502 0000 0001 0001 1010 Dato Z
503 0000 0000 0000 0000 Libre para escribir T
108 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler
Ejemplo sencillo: implementar T = X + Y + Z

Lenguaje
000 0010 0101 0000 0000 máquina
001 0011 0101 0000 0001
002 0011 0101 0000 0010
003 0001 0101 0000 0011
:
500 0000 0000 0010 0001
501 0000 0000 0011 0010
502 0000 0001 0001 1010
503 0000 0000 0000 0000
109 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler
Ejemplo sencillo: implementar T = X + Y + Z

Programa
en hexa

000 0010 0101 0000 0000 000 2500


001 0011 0101 0000 0001 001 3501
002 0011 0101 0000 0010 002 3502
003 0001 0101 0000 0011 003 1503
:
500 0000 0000 0010 0001 500 0021
501 0000 0000 0011 0010 501 0032
502 0000 0001 0001 1010 503 011A
503 0000 0000 0000 0000 504 0000
110 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler
Ejemplo sencillo: implementar T = X + Y + Z

Programa
simbólico

000 0010 0101 0000 0000 000 LDA (500)


001 0011 0101 0000 0001 001 ADD (501)
002 0011 0101 0000 0010 002 ADD (502)
003 0001 0101 0000 0011 003 STA (503)
:
500 0000 0000 0010 0001 500 DAT 0021
501 0000 0000 0011 0010 501 DAT 0032
502 0000 0001 0001 1010 502 DAT 011A
503 0000 0000 0000 0000 503 DAT 0000
111 Arquitectura de Computadores Präsentat
ion
[ Organización ] Assembler
Ejemplo sencillo: implementar T = X + Y + Z

Programa
en assembler

000 0010 0101 0000 0000 INICIO LDA (VX)


001 0011 0101 0000 0001 ADD (VY)
002 0011 0101 0000 0010 ADD (VZ)
003 0001 0101 0000 0011 STA (VT)
:
500 0000 0000 0010 0001 VX DAT 0021
501 0000 0000 0011 0010 VY DAT 0032
502 0000 0001 0001 1010 VZ DAT 011A
503 0000 0000 0000 0000 VT DAT 0000
112 Arquitectura de Computadores Präsentat
ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
113 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas

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.

114 Arquitectura de Computadores Präsentat


ion
[ Organización ] Subrutinas

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.

115 Arquitectura de Computadores Präsentat


ion
[ Organización ] Subrutinas
Uso de subrutinas:

Programa Subrutina
principal

Llamado a
Subrutina

116 Arquitectura de Computadores Präsentat


ion
[ Organización ] Subrutinas
Uso de subrutinas:

Programa Subrutina
principal

Llamado a
Subrutina

Llamado a j
Subrutina j+1

117 Arquitectura de Computadores Präsentat


ion
[ Organización ] Subrutinas

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.
118 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
Ejemplo:

Se desea hacer un programa que realice las siguientes


operaciones:

(0100) ← (0100) + 5
(0200) ← (0200) + 5
(0204) ← (0204) + 5

119 Arquitectura de Computadores Präsentat


ion
[ Organización ] Subrutinas
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.
120 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
Ejemplo:

Se desea hacer un programa que realice las siguientes


operaciones:

(0100) ← (0100) + 5
(0200) ← (0200) + 5
(0204) ← (0204) + 5

Programa principal Subrutina


LOAD X,0100 SUM5 LOAD A,(X)
CALL SUM5 ADD 5
LOAD X,0200 STORE (X),A
CALL SUM5 RET
LOAD X,0204
CALL SUM5
121 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
Ejemplo:

Se desea hacer un programa que realice las siguientes


operaciones:

(0100) ← (0100) + 5
¿Qué pasa si el programa
(0200) ← (0200) + 5
principal estaba usando A?
(0204) ← (0204) + 5

Programa principal Subrutina


LOAD X,0100 SUM5 LOAD A,(X)
CALL SUM5 ADD 5
LOAD X,0200 STORE (X),A
CALL SUM5 RET
LOAD X,0204
CALL SUM5
122 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
Ejemplo:

Se desea hacer un programa que realice las siguientes


operaciones:

(0100) ← (0100) + 5
¿Qué pasa si el programa
(0200) ← (0200) + 5
principal estaba usando A?
(0204) ← (0204) + 5
kaput!!
Programa principal Subrutina
LOAD X,0100 SUM5 LOAD A,(X)
CALL SUM5 ADD 5
LOAD X,0200 STORE (X),A
CALL SUM5 RET
LOAD X,0204
CALL SUM5
123 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
Ejemplo:

Se desea hacer un programa que realice las siguientes


operaciones:

(0100) ← (0100) + 5
(0200) ← (0200) + 5 Solución: se usa la pila
(0204) ← (0204) + 5

Programa principal Subrutina


LOAD X,0100 SUM5 PUSH A
CALL SUM5 LOAD A,(X)
LOAD X,0200 ADD 5
CALL SUM5 STORE (X),A
LOAD X,0204 POP A
CALL SUM5 RET
124 Arquitectura de Computadores Präsentat
ion
[ Organización ] Subrutinas
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)


125 Arquitectura de Computadores Präsentat
ion
[ Índice ]

43.1 Máquina de von Neumann


43.2 Unidad de control
43.3 Fetch, decodificación, ejecución
43.4 Conjunto de instrucciones
43.5 Programación en assembler
43.6 Formatos de instrucción
43.7 Modos de direccionamiento
43.8 Mecanismos de subrutinas
43.9 E/S e interrupciones
126 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

El ciclo de una instrucción (sin interrupción)

127 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Diagrama de estado (sin interrupción)

128 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

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 2 3 4 5 6 t
129 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

Ejemplo sin interrupciones: un programa quiere leer


datos del disco duro.

Unidad de disco
lee y envía datos
CPU CPU
solicita recibe
datos datos

1 2 3 4 5 6 t
130 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

Ejemplo sin interrupciones: un programa quiere leer


datos del disco duro.

¿Qué hace
la CPU en
este tiempo?
CPU CPU
solicita recibe
datos datos

1 2 3 4 5 6 t
131 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

Ejemplo sin interrupciones: un programa quiere leer


datos del disco duro.

¿Qué hace
la CPU en
este tiempo?
CPU NADA!! CPU
solicita la CPU espera… recibe
datos datos

1 2 3 4 5 6 t
132 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones
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)
133 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.

CPU CPU CPU


solicita hace recibe
datos otra cosa datos

1 2 4 t
interrupción
3

Unidad de disco
lee y envía datos

134 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.

CPU CPU CPU


solicita hace recibe Ahorro de
datos otra cosa datos tiempo

1 2 4 t
interrupción
3

Unidad de disco
lee y envía datos

135 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

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

136 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

El ciclo de una instrucción (con interrupción)

137 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Diagrama de estado (con interrupción)

138 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Bus de direcciones
A12 A0 A12
A12 A11
:
CPU MREQ A0
RD
WR
D7 D0

Bus de datos
D7 D0 D7 D0

WR
ROM RAM
RD RD

CE CE

A11 A0 A11 A0

139 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Bus de direcciones
A12 A0

INT CPU MREQ


IORQ RD
WR
D7 D0 decoder
Bus de datos
D7 D0

I/O ROM RAM


CE CE
CE

A11 A0

140 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

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.
141 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

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

142 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

143 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

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.

144 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Interrupción múltiple (secuencial)

145 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

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.

146 Arquitectura de Computadores Präsentat


ion
[ Organización ] Interrupciones

Interrupción múltiple (anidadas)


147 Arquitectura de Computadores Präsentat
ion
[ Organización ] Interrupciones

Secuencia temporal de varias interrupciones


148 Arquitectura de Computadores Präsentat
ion

También podría gustarte