SlideShare una empresa de Scribd logo
1 de 131
Descargar para leer sin conexión
[ Arquitectura de Computadores ]
ORGANIZACIÓN DE LA COMPUTADORA
Präsentat
ion
Año 2010
Universidad Tecnológica Nacional
Facultad Regional Tucumán
Ingeniería en Sistemas de Información
1
2
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
3
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1
0
Memoria de 1024 × 8
Ejemplo:
¿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?
4
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1
0
Memoria de 1024 × 8
Ejemplo:
¿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?
+
5
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1
0
Memoria de 1024 × 8
Decoder & Read/Write
output
Solución:
1. Leer en la memoria la
posición 867
Dirección 867 Read
6
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1
0
Memoria de 1024 × 8
Solución:
1. Leer en la memoria la
posición 867
2. Almacenar lo leído en un
registro externo
Decoder & Read/Write
output
AC
7
[ Organización ]
Präsentat
ion
Máquina von Neumann
Memoria de 1024 × 8
Solución:
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
AC
1023
:
867
:
778
:
562
:
2
1
0
Decoder & Read/Write
output
Dirección 562 Read
8
[ Organización ]
Präsentat
ion
Máquina von Neumann
Memoria de 1024 × 8
Solución:
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
AC
1023
:
867
:
778
:
562
:
2
1
0
Decoder & Read/Write
output
sumador
9
[ Organización ]
Präsentat
ion
Máquina von Neumann
Memoria de 1024 × 8
Solución:
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
1023
:
867
:
778
:
562
:
2
1
0
Decoder & Read/Write
sumador
Dirección 778 Write
input
10
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1 Programa
0
Memoria de 1024 × 8
Solución general:
Decoder & Read/Write
Unidad de
aritmética
y lógica
Unidad
de control
11
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1 Programa
0
Memoria de 1024 × 8
Solución general:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Decoder & Read/Write
Unidad de
aritmética
y lógica
Unidad
de control
12
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1 Programa
0
Memoria de 1024 × 8
Solución general:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Decoder & Read/Write
Unidad de
aritmética
y lógica
Unidad
de control
Significa
leer y
almacenar
en AC
13
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2
1 Programa
0
Memoria de 1024 × 8
Solución general:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Decoder & Read/Write
Unidad de
aritmética
y lógica
Unidad
de control
Significa lo que se
debe leer:
110110011 = 867
14
[ Organización ]
Präsentat
ion
Máquina von Neumann
1023
:
867
:
778
:
562
:
2 :
1 110110011
0 000100001
Memoria de 1024 × 8
Solución general:
El programa le da
instrucciones a la
Unidad Central.
Ejemplo:
00100001 110110011
significa leer en la
memoria 110110011 y
almacenar la lectura
en el registro AC de la
ALU.
Decoder & Read/Write
Unidad de
aritmética
y lógica
Unidad
de control
15
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
Máquina von Neumann
Estructura
17
[ Organización ]
Präsentat
ion
Máquina von Neumann
Detalles • 1000 x 40 bit words
– Binary number
– 2 x 20 bit instructions
0 1 39
0 8 19 20 28 39
Codop Dirección Codop Dirección
Signo
Palabra número
Palabra instrucción
18
[ Organización ]
Präsentat
ion
Máquina von Neumann
Detalles
0 8 19
Codop Dirección
Palabra instrucció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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
Máquina von Neumann
Detalles de la estructura
máquina von Neumann
(CC)
21
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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,0:19) Saltar a la instrucción indicada
por la mitad izquierda de M(X)
00001110 JUMP M(X,20:39) Saltar a la instrucción indicada
por la mitad derecha de M(X)
29
[ Organización ]
Präsentat
ion
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,0:19) Si AC ≥ 0 saltar a la instrucción
indicada por la mitad izquierda
de M(X)
00001000 JUMP +M(X,20:39) Si AC ≥ 0 saltar a la instrucción
indicada por la mitad derecha de
M(X)
30
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
Máquina von Neumann
LOAD M(867) 00000001 001101100011
ADD M(562) 00000100 001000110010
STOR M(778) 00100001 001100001010
¿Cómo se almacena el programa?
36
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
RSH % divide el acumulador entre dos
STOR M(778) % transfiere AC a la memoria 778
38
[ Organización ]
Präsentat
ion
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
[ Organización ]
Präsentat
ion
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
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
41
[ Organización ]
Präsentat
ion
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
42
[ Organización ]
Präsentat
ion
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.
43
[ Organización ]
Präsentat
ion
Ciclos fetch, decode, exe
Ciclo decode (decodificación):
FUNCION: Decodifica los bits presentes en IR
1. Interpreta el código de operación.
44
[ Organización ]
Präsentat
ion
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
45
[ Organización ]
Präsentat
ion
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:
46
[ Organización ]
Präsentat
ion
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:
47
[ Organización ]
Präsentat
ion
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:
48
[ Organización ]
Präsentat
ion
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:
49
[ Organización ]
Präsentat
ion
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:
50
[ Organización ]
Präsentat
ion
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:
51
[ Organización ]
Präsentat
ion
Ciclos fetch, decode, exe
¿Cuántos ciclos de
instrucción se
necesitan?
52
[ Organización ]
Präsentat
ion
Ciclos fetch, decode, exe
¿Cuántos ciclos de
instrucción se
necesitan?
R/. Tres
53
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
54
[ Organización ]
Präsentat
ion
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.
55
[ Organización ]
Präsentat
ion
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
56
[ Organización ]
Präsentat
ion
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)
57
[ Organización ]
Präsentat
ion
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
58
[ Organización ]
Präsentat
ion
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
59
[ Organización ]
Präsentat
ion
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
60
[ Organización ]
Präsentat
ion
Assembler
Ejemplo sencillo: implementar T = X + Y + Z
000 0010 0101 0000 0000
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
Lenguaje
máquina
61
[ Organización ]
Präsentat
ion
Assembler
Ejemplo sencillo: implementar T = X + Y + Z
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
Programa
en hexa
62
[ Organización ]
Präsentat
ion
Assembler
Ejemplo sencillo: implementar T = X + Y + Z
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
Programa
simbólico
63
[ Organización ]
Präsentat
ion
Assembler
Ejemplo sencillo: implementar T = X + Y + Z
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
Programa
en assembler
64
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
65
[ Organización ]
Präsentat
ion
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.
66
[ Organización ]
Präsentat
ion
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.
67
[ Organización ]
Präsentat
ion
Subrutinas
Uso de subrutinas:
Programa
principal
Subrutina
Llamado a
Subrutina
68
[ Organización ]
Präsentat
ion
Subrutinas
Uso de subrutinas:
Programa
principal
Subrutina
Llamado a
Subrutina
Llamado a
Subrutina
j
j+1
69
[ Organización ]
Präsentat
ion
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.
70
[ Organización ]
Präsentat
ion
Subrutinas
Ejemplo:
Se desea hacer un programa que realice las siguientes
operaciones:
(0100) ← (0100) + 5
(0200) ← (0200) + 5
(0204) ← (0204) + 5
71
[ Organización ]
Präsentat
ion
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.
72
[ Organización ]
Präsentat
ion
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
73
[ Organización ]
Präsentat
ion
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
¿Qué pasa si el programa
principal estaba usando A?
74
[ Organización ]
Präsentat
ion
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
¿Qué pasa si el programa
principal estaba usando A?
kaput!!
75
[ Organización ]
Präsentat
ion
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 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
Solución: se usa la pila
76
[ Organización ]
Präsentat
ion
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)
77
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
78
[ Organización ]
Präsentat
ion
Interrupciones
El ciclo de una instrucción (sin interrupción)
79
[ Organización ]
Präsentat
ion
Interrupciones
Diagrama de estado (sin interrupción)
80
[ Organización ]
Präsentat
ion
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
81
[ Organización ]
Präsentat
ion
Interrupciones
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
1 2 3 4 5 6 t
CPU
solicita
datos
CPU
recibe
datos
Unidad de disco
lee y envía datos
82
[ Organización ]
Präsentat
ion
Interrupciones
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
1 2 3 4 5 6 t
¿Qué hace
la CPU en
este tiempo?
CPU
solicita
datos
CPU
recibe
datos
83
[ Organización ]
Präsentat
ion
Interrupciones
Ejemplo sin interrupciones: un programa quiere leer
datos del disco duro.
1 2 3 4 5 6 t
¿Qué hace
la CPU en
este tiempo?
NADA!!
la CPU espera…
CPU
solicita
datos
CPU
recibe
datos
84
[ Organización ]
Präsentat
ion
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)
85
[ Organización ]
Präsentat
ion
Interrupciones
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.
1 2 4 t
CPU
solicita
datos
CPU
recibe
datos
CPU
hace
otra cosa
Unidad de disco
lee y envía datos
3
interrupción
86
[ Organización ]
Präsentat
ion
Interrupciones
Ejemplo con interrupciones: un programa quiere leer datos
del disco duro.
1 2 4 t
CPU
solicita
datos
CPU
recibe
datos
CPU
hace
otra cosa
Unidad de disco
lee y envía datos
3
interrupción
Ahorro de
tiempo
87
[ Organización ]
Präsentat
ion
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
88
[ Organización ]
Präsentat
ion
Interrupciones
El ciclo de una instrucción (con interrupción)
89
[ Organización ]
Präsentat
ion
Interrupciones
Diagrama de estado (con interrupción)
90
[ Organización ]
Präsentat
ion
Interrupciones
CPU
ROM RAM
Bus de direcciones
Bus de datos
A12
A11
:
A0
A12
CECE
RD RD
WR
A0A0A11 A11
D0D7
D0D7 D0D7
A0A12
WR
RD
MREQ
91
[ Organización ]
Präsentat
ion
Interrupciones
CPU
I/O RAM
Bus de direcciones
Bus de datos
CE
CE
A0A11
D0D7
D0D7
A0A12
WR
RD
MREQ
decoder
ROM
CE
INT
IORQ
92
[ Organización ]
Präsentat
ion
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.
93
[ Organización ]
Präsentat
ion
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
94
[ Organización ]
Präsentat
ion
Interrupciones
95
[ Organización ]
Präsentat
ion
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.
96
[ Organización ]
Präsentat
ion
Interrupciones
Interrupción múltiple (secuencial)
97
[ Organización ]
Präsentat
ion
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.
98
[ Organización ]
Präsentat
ion
Interrupciones
Interrupción múltiple (anidadas)
99
[ Organización ]
Präsentat
ion
Interrupciones
Secuencia temporal de varias interrupciones
100
Präsentat
ion
[ Índice ]
43.1 Máquina de von Neumann
43.2 Fetch, decodificación, ejecución
43.3 Programación en assembler
43.4 Mecanismos de subrutinas
43.5 E/S e interrupciones
43.7
43.6 Estructuras de Interconexión
101
La Conexión
• Todas las unidades deben estar conectadas
• Hay Diferentes tipos de conexión para
diferentes tipos de unidades
– Memoria
– Input/Output
– CPU
102
Módulos de una Computadora
103
Conexiones de la Memoria
• Recibe y envía los datos
• Recibe direcciones (o ubicaciones)
• Recibe señales de control
– Read
– Write
– Tiempos
104
Conexiones de Input/Output (1)
• Similar a la memoria desde el punto de vista
de las computadoras
• Output (Salida)
– Recibe datos de la computadora
– Envía datos a los periféricos
• Input (Entrada)
– Recibe datos de los periféricos
– Envía datos a la Computadora
105
Conexión de Input/Output (2)
• Recibe señales de control de la
computadora
• Envia señales de control a los periféricos
– e.g. Giro del disco
• Recibe direcciones de la computadora
– e.g. Número de puerto para identificar un
periférico
• Envía señales de interrupción (control)
106
Conexiones de la CPU
• Lee instrucciones y datos
• Escribe los datos (después del
procesamiento)
• Envía señales de control a otras
• Recibe (y actúa sobre) interrupciones
107
Buses
• Hay una serie de sistemas de interconexión
posibless
• Las estructuras de BUS único y BUSES
múltiples son las más comunes
• e.g. Buses de Control/Direcciones/Datos
(PC)
108
Que es un Bus?
• Una vía de comunicación que permite
conectar dos o más dispositivos
• Usualmente transmiten
• A menudo agrupados
– Un número de canales en un bus
– e.g. Un bus de datos de 32 bits son 32 canales
independientes de un bit
• No se toman en cuenta las líneas que
proveen la energía eléctrica
109
Bus de Datos
• Transmite Datos
– Recuerde que no hay ninguna diferencia entre
"datos" e "instrucción" en este nivel
• El ancho del BUS es un factor clave en la
determinación del rendimiento
– 8, 16, 32, 64 bit
110
Bus de Direcciones
• Identifica el origen y destino de los datos
• e.g. La CPU necesita leer una instrucción
(datos) desde una ubicación determinada en
la memoria
• El Ancho del bus determina la capacidad
máxima de la memoria del sistema
– e.g. El 8080 tiene un bus de direcciones de 16
bits con lo cual su espacio de dirección es de 64
k
111
Bus de Control
• Controla y Sincroniza la información
– Señal de read/write (lectura/escritura) de la
memoria
– Requerimientos de Interrupciones
– Señales de Reloj (Clock)
112
Esquema de Interconexión de
Bus
113
¿Grande y amarillo?
• Que aspecto tienen los BUSES?
– Líneas paralelas en las placas de circuitos
– Cables de cinta
– Bahías de conectores de placas madres
• e.g. PCI
– Conjuntos de cables
114
Realización física de la
arquitectura de bus
115
Problemas en Buses Simples
• Gran cantidad de dispositivos en un solo
bus conducen a :
– Retrasos de propagación
• Largos recorridos de los datos implican que la
coordinación requerida para usar el único bus puede
afectar al rendimiento
• Si se incrementa la transferencia de datos se afecta
la capacidad del BUS
• La mayoría de los sistemas utilizan varios
buses para superar estos problemas
116
Tradicional (ISA)
(con cache)
117
Bus de Alto Rendimiento
118
Tipos de Buses
• Dedicados
– Líneas separadas de datos y direcciones
• Multiplexado
– Lineas Compartidas
– Linea de control de Dirección Válida o Dato
Válido
– Ventaja – Menor número de líneas
– Desventajas
• Control mucho mas complejo
• Rendimiento final
119
Arbitraje de Bus
• Más de un módulo controla el BUS
• e.g. Controlador de CPU y DMA
• Solo un módulo por vez puede controlar al
BUS
• El arbitraje puede ser centralizado o
distribuido
120
Arbitraje Centralizado o
Distribuido
• Centralizado
– Dispositivo de hardware único controla el
acceso al bus
• Controlador de bus
• Árbitro
– Puede ser parte de la CPU o estar separado
• Distribuido
– Cada módulo puede reclamar el Bus
– Lógica de control sobre todos los módulos
121
Temporización
• Coordinación de eventos en bus
• Sincrónico
– Eventos determinados por las señales de reloj
– El Bus de control incluye línea de reloj
– Un solo 1-0 es un ciclo de bus
– Todos los dispositivos pueden leer la línea de
reloj
– Normalmente por cada ciclo se produce un
único evento
122
Diagrama de temporización
sincrónica
123
Temporización asincrónica :
diagrama de lectura
124
Temporización asincrónica :
diagrama de escritura
125
Bus PCI
• Interconexion de componentes Periféricos
• Intel lo hizo de dominio público
• 32 o 64 bit
• 50 lineas
126
Lineas de Bus PCI (requeridas)
• Líneas de sistemas
– Incluyen lineas de “clock” y “reset”
• Direcciones y Datos
– 32 lineas de multiplexado temporal para
direcciones/datos
– Lineas de Interrupción & validación
• Control de la interfaz
• Arbitraje
– No compartido
– Conexión directa a árbitro de bus PCI
• Lineas de Error
127
Lineas de Bus PCI (Opcional)
• Lineas de Interrupción
– No compartidas
• Soporte de Caché
• Extensión de Bus de 64-bit
– 32 lineas Adicionales
– Tiempo multiplexado
– 2 líneas para habilitar dispositivos para aceptar
usar la transferencia de 64 bits
• JTAG/Boundary Scan
– Para probar procedimientos
128
Comandos PCI
• Transacción entre iniciador (maestro) y
destino
• Master reclama bus
• Determina tipo de transacción
– e.g. I/O read/write
• Fase de dirección
• Una o más fases de Datos
129
Diagrama de tiempos de lectura
PCI
130
Arbitro de Bus PCI
131
Arbitraje de Bus PCI

Más contenido relacionado

Similar a Capitulo03bis nuevo

Von neuman
Von neumanVon neuman
Von neuman
tuxman82
 
47835801 curso-plc-omron
47835801 curso-plc-omron47835801 curso-plc-omron
47835801 curso-plc-omron
Moi Torres
 

Similar a Capitulo03bis nuevo (20)

Von neuman
Von neumanVon neuman
Von neuman
 
Sia i cap4
Sia i cap4Sia i cap4
Sia i cap4
 
PROCESADOR
PROCESADORPROCESADOR
PROCESADOR
 
microprocesadores y microcontroladores
microprocesadores y microcontroladoresmicroprocesadores y microcontroladores
microprocesadores y microcontroladores
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Modelo von newman
Modelo von newmanModelo von newman
Modelo von newman
 
Ut03 1 cpu
Ut03 1 cpuUt03 1 cpu
Ut03 1 cpu
 
Sm parte 1
Sm parte 1Sm parte 1
Sm parte 1
 
Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.Sistema de Interconexión, Memoria Caché, Memoria Interna.
Sistema de Interconexión, Memoria Caché, Memoria Interna.
 
EL COMPUTADOR
EL COMPUTADOREL COMPUTADOR
EL COMPUTADOR
 
EL COMPUTADOR
EL COMPUTADOREL COMPUTADOR
EL COMPUTADOR
 
2023.1 S2 - Variables y Expresiones - CS1111_.pptx
2023.1 S2 - Variables y Expresiones - CS1111_.pptx2023.1 S2 - Variables y Expresiones - CS1111_.pptx
2023.1 S2 - Variables y Expresiones - CS1111_.pptx
 
El cpu
El cpuEl cpu
El cpu
 
El computador
El computadorEl computador
El computador
 
Computador
ComputadorComputador
Computador
 
El Computador
El ComputadorEl Computador
El Computador
 
Tema 1 (1)el computador
Tema 1 (1)el computadorTema 1 (1)el computador
Tema 1 (1)el computador
 
La computadora
La computadoraLa computadora
La computadora
 
47835801 curso-plc-omron
47835801 curso-plc-omron47835801 curso-plc-omron
47835801 curso-plc-omron
 
Procea
ProceaProcea
Procea
 

Último

CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
bingoscarlet
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
annavarrom
 

Último (20)

introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdfSesión N°2_Curso_Ingeniería_Sanitaria.pdf
Sesión N°2_Curso_Ingeniería_Sanitaria.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 

Capitulo03bis nuevo

  • 1. [ Arquitectura de Computadores ] ORGANIZACIÓN DE LA COMPUTADORA Präsentat ion Año 2010 Universidad Tecnológica Nacional Facultad Regional Tucumán Ingeniería en Sistemas de Información 1
  • 2. 2 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 3. 3 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 0 Memoria de 1024 × 8 Ejemplo: ¿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?
  • 4. 4 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 0 Memoria de 1024 × 8 Ejemplo: ¿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? +
  • 5. 5 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 0 Memoria de 1024 × 8 Decoder & Read/Write output Solución: 1. Leer en la memoria la posición 867 Dirección 867 Read
  • 6. 6 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 0 Memoria de 1024 × 8 Solución: 1. Leer en la memoria la posición 867 2. Almacenar lo leído en un registro externo Decoder & Read/Write output AC
  • 7. 7 [ Organización ] Präsentat ion Máquina von Neumann Memoria de 1024 × 8 Solución: 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 AC 1023 : 867 : 778 : 562 : 2 1 0 Decoder & Read/Write output Dirección 562 Read
  • 8. 8 [ Organización ] Präsentat ion Máquina von Neumann Memoria de 1024 × 8 Solución: 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 AC 1023 : 867 : 778 : 562 : 2 1 0 Decoder & Read/Write output sumador
  • 9. 9 [ Organización ] Präsentat ion Máquina von Neumann Memoria de 1024 × 8 Solución: 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 1023 : 867 : 778 : 562 : 2 1 0 Decoder & Read/Write sumador Dirección 778 Write input
  • 10. 10 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 × 8 Solución general: Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
  • 11. 11 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 × 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
  • 12. 12 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 × 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control Significa leer y almacenar en AC
  • 13. 13 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 × 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control Significa lo que se debe leer: 110110011 = 867
  • 14. 14 [ Organización ] Präsentat ion Máquina von Neumann 1023 : 867 : 778 : 562 : 2 : 1 110110011 0 000100001 Memoria de 1024 × 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
  • 15. 15 [ Organización ] Präsentat ion 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).
  • 17. 17 [ Organización ] Präsentat ion Máquina von Neumann Detalles • 1000 x 40 bit words – Binary number – 2 x 20 bit instructions 0 1 39 0 8 19 20 28 39 Codop Dirección Codop Dirección Signo Palabra número Palabra instrucción
  • 18. 18 [ Organización ] Präsentat ion Máquina von Neumann Detalles 0 8 19 Codop Dirección Palabra instrucció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. 19 [ Organización ] Präsentat ion 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. 20 [ Organización ] Präsentat ion Máquina von Neumann Detalles de la estructura máquina von Neumann (CC)
  • 21. 21 [ Organización ] Präsentat ion 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. 22 [ Organización ] Präsentat ion 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. 23 [ Organización ] Präsentat ion 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. 24 [ Organización ] Präsentat ion 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. 25 [ Organización ] Präsentat ion 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. 26 [ Organización ] Präsentat ion 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. 27 [ Organización ] Präsentat ion 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. 28 [ Organización ] Präsentat ion 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,0:19) Saltar a la instrucción indicada por la mitad izquierda de M(X) 00001110 JUMP M(X,20:39) Saltar a la instrucción indicada por la mitad derecha de M(X)
  • 29. 29 [ Organización ] Präsentat ion 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,0:19) Si AC ≥ 0 saltar a la instrucción indicada por la mitad izquierda de M(X) 00001000 JUMP +M(X,20:39) Si AC ≥ 0 saltar a la instrucción indicada por la mitad derecha de M(X)
  • 30. 30 [ Organización ] Präsentat ion 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. 31 [ Organización ] Präsentat ion 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. 32 [ Organización ] Präsentat ion 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. 33 [ Organización ] Präsentat ion 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. 34 [ Organización ] Präsentat ion 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. 35 [ Organización ] Präsentat ion Máquina von Neumann LOAD M(867) 00000001 001101100011 ADD M(562) 00000100 001000110010 STOR M(778) 00100001 001100001010 ¿Cómo se almacena el programa?
  • 36. 36 [ Organización ] Präsentat ion 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. 37 [ Organización ] Präsentat ion 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 RSH % divide el acumulador entre dos STOR M(778) % transfiere AC a la memoria 778
  • 38. 38 [ Organización ] Präsentat ion 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. 39 [ Organización ] Präsentat ion 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. 40 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 41. 41 [ Organización ] Präsentat ion 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
  • 42. 42 [ Organización ] Präsentat ion 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.
  • 43. 43 [ Organización ] Präsentat ion Ciclos fetch, decode, exe Ciclo decode (decodificación): FUNCION: Decodifica los bits presentes en IR 1. Interpreta el código de operación.
  • 44. 44 [ Organización ] Präsentat ion 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
  • 45. 45 [ Organización ] Präsentat ion 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:
  • 46. 46 [ Organización ] Präsentat ion 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:
  • 47. 47 [ Organización ] Präsentat ion 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:
  • 48. 48 [ Organización ] Präsentat ion 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:
  • 49. 49 [ Organización ] Präsentat ion 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:
  • 50. 50 [ Organización ] Präsentat ion 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:
  • 51. 51 [ Organización ] Präsentat ion Ciclos fetch, decode, exe ¿Cuántos ciclos de instrucción se necesitan?
  • 52. 52 [ Organización ] Präsentat ion Ciclos fetch, decode, exe ¿Cuántos ciclos de instrucción se necesitan? R/. Tres
  • 53. 53 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 54. 54 [ Organización ] Präsentat ion 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.
  • 55. 55 [ Organización ] Präsentat ion 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
  • 56. 56 [ Organización ] Präsentat ion 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)
  • 57. 57 [ Organización ] Präsentat ion 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
  • 58. 58 [ Organización ] Präsentat ion 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
  • 59. 59 [ Organización ] Präsentat ion 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
  • 60. 60 [ Organización ] Präsentat ion Assembler Ejemplo sencillo: implementar T = X + Y + Z 000 0010 0101 0000 0000 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 Lenguaje máquina
  • 61. 61 [ Organización ] Präsentat ion Assembler Ejemplo sencillo: implementar T = X + Y + Z 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 Programa en hexa
  • 62. 62 [ Organización ] Präsentat ion Assembler Ejemplo sencillo: implementar T = X + Y + Z 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 Programa simbólico
  • 63. 63 [ Organización ] Präsentat ion Assembler Ejemplo sencillo: implementar T = X + Y + Z 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 Programa en assembler
  • 64. 64 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 65. 65 [ Organización ] Präsentat ion 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.
  • 66. 66 [ Organización ] Präsentat ion 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.
  • 67. 67 [ Organización ] Präsentat ion Subrutinas Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina
  • 68. 68 [ Organización ] Präsentat ion Subrutinas Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina Llamado a Subrutina j j+1
  • 69. 69 [ Organización ] Präsentat ion 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.
  • 70. 70 [ Organización ] Präsentat ion Subrutinas Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) ← (0100) + 5 (0200) ← (0200) + 5 (0204) ← (0204) + 5
  • 71. 71 [ Organización ] Präsentat ion 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.
  • 72. 72 [ Organización ] Präsentat ion 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
  • 73. 73 [ Organización ] Präsentat ion 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 ¿Qué pasa si el programa principal estaba usando A?
  • 74. 74 [ Organización ] Präsentat ion 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 ¿Qué pasa si el programa principal estaba usando A? kaput!!
  • 75. 75 [ Organización ] Präsentat ion 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 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 Solución: se usa la pila
  • 76. 76 [ Organización ] Präsentat ion 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)
  • 77. 77 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 78. 78 [ Organización ] Präsentat ion Interrupciones El ciclo de una instrucción (sin interrupción)
  • 80. 80 [ Organización ] Präsentat ion 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
  • 81. 81 [ Organización ] Präsentat ion Interrupciones Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. 1 2 3 4 5 6 t CPU solicita datos CPU recibe datos Unidad de disco lee y envía datos
  • 82. 82 [ Organización ] Präsentat ion Interrupciones Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. 1 2 3 4 5 6 t ¿Qué hace la CPU en este tiempo? CPU solicita datos CPU recibe datos
  • 83. 83 [ Organización ] Präsentat ion Interrupciones Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. 1 2 3 4 5 6 t ¿Qué hace la CPU en este tiempo? NADA!! la CPU espera… CPU solicita datos CPU recibe datos
  • 84. 84 [ Organización ] Präsentat ion 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)
  • 85. 85 [ Organización ] Präsentat ion Interrupciones Ejemplo con interrupciones: un programa quiere leer datos del disco duro. 1 2 4 t CPU solicita datos CPU recibe datos CPU hace otra cosa Unidad de disco lee y envía datos 3 interrupción
  • 86. 86 [ Organización ] Präsentat ion Interrupciones Ejemplo con interrupciones: un programa quiere leer datos del disco duro. 1 2 4 t CPU solicita datos CPU recibe datos CPU hace otra cosa Unidad de disco lee y envía datos 3 interrupción Ahorro de tiempo
  • 87. 87 [ Organización ] Präsentat ion 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
  • 88. 88 [ Organización ] Präsentat ion Interrupciones El ciclo de una instrucción (con interrupción)
  • 90. 90 [ Organización ] Präsentat ion Interrupciones CPU ROM RAM Bus de direcciones Bus de datos A12 A11 : A0 A12 CECE RD RD WR A0A0A11 A11 D0D7 D0D7 D0D7 A0A12 WR RD MREQ
  • 91. 91 [ Organización ] Präsentat ion Interrupciones CPU I/O RAM Bus de direcciones Bus de datos CE CE A0A11 D0D7 D0D7 A0A12 WR RD MREQ decoder ROM CE INT IORQ
  • 92. 92 [ Organización ] Präsentat ion 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.
  • 93. 93 [ Organización ] Präsentat ion 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
  • 95. 95 [ Organización ] Präsentat ion 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.
  • 97. 97 [ Organización ] Präsentat ion 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.
  • 100. 100 Präsentat ion [ Índice ] 43.1 Máquina de von Neumann 43.2 Fetch, decodificación, ejecución 43.3 Programación en assembler 43.4 Mecanismos de subrutinas 43.5 E/S e interrupciones 43.7 43.6 Estructuras de Interconexión
  • 101. 101 La Conexión • Todas las unidades deben estar conectadas • Hay Diferentes tipos de conexión para diferentes tipos de unidades – Memoria – Input/Output – CPU
  • 102. 102 Módulos de una Computadora
  • 103. 103 Conexiones de la Memoria • Recibe y envía los datos • Recibe direcciones (o ubicaciones) • Recibe señales de control – Read – Write – Tiempos
  • 104. 104 Conexiones de Input/Output (1) • Similar a la memoria desde el punto de vista de las computadoras • Output (Salida) – Recibe datos de la computadora – Envía datos a los periféricos • Input (Entrada) – Recibe datos de los periféricos – Envía datos a la Computadora
  • 105. 105 Conexión de Input/Output (2) • Recibe señales de control de la computadora • Envia señales de control a los periféricos – e.g. Giro del disco • Recibe direcciones de la computadora – e.g. Número de puerto para identificar un periférico • Envía señales de interrupción (control)
  • 106. 106 Conexiones de la CPU • Lee instrucciones y datos • Escribe los datos (después del procesamiento) • Envía señales de control a otras • Recibe (y actúa sobre) interrupciones
  • 107. 107 Buses • Hay una serie de sistemas de interconexión posibless • Las estructuras de BUS único y BUSES múltiples son las más comunes • e.g. Buses de Control/Direcciones/Datos (PC)
  • 108. 108 Que es un Bus? • Una vía de comunicación que permite conectar dos o más dispositivos • Usualmente transmiten • A menudo agrupados – Un número de canales en un bus – e.g. Un bus de datos de 32 bits son 32 canales independientes de un bit • No se toman en cuenta las líneas que proveen la energía eléctrica
  • 109. 109 Bus de Datos • Transmite Datos – Recuerde que no hay ninguna diferencia entre "datos" e "instrucción" en este nivel • El ancho del BUS es un factor clave en la determinación del rendimiento – 8, 16, 32, 64 bit
  • 110. 110 Bus de Direcciones • Identifica el origen y destino de los datos • e.g. La CPU necesita leer una instrucción (datos) desde una ubicación determinada en la memoria • El Ancho del bus determina la capacidad máxima de la memoria del sistema – e.g. El 8080 tiene un bus de direcciones de 16 bits con lo cual su espacio de dirección es de 64 k
  • 111. 111 Bus de Control • Controla y Sincroniza la información – Señal de read/write (lectura/escritura) de la memoria – Requerimientos de Interrupciones – Señales de Reloj (Clock)
  • 113. 113 ¿Grande y amarillo? • Que aspecto tienen los BUSES? – Líneas paralelas en las placas de circuitos – Cables de cinta – Bahías de conectores de placas madres • e.g. PCI – Conjuntos de cables
  • 114. 114 Realización física de la arquitectura de bus
  • 115. 115 Problemas en Buses Simples • Gran cantidad de dispositivos en un solo bus conducen a : – Retrasos de propagación • Largos recorridos de los datos implican que la coordinación requerida para usar el único bus puede afectar al rendimiento • Si se incrementa la transferencia de datos se afecta la capacidad del BUS • La mayoría de los sistemas utilizan varios buses para superar estos problemas
  • 117. 117 Bus de Alto Rendimiento
  • 118. 118 Tipos de Buses • Dedicados – Líneas separadas de datos y direcciones • Multiplexado – Lineas Compartidas – Linea de control de Dirección Válida o Dato Válido – Ventaja – Menor número de líneas – Desventajas • Control mucho mas complejo • Rendimiento final
  • 119. 119 Arbitraje de Bus • Más de un módulo controla el BUS • e.g. Controlador de CPU y DMA • Solo un módulo por vez puede controlar al BUS • El arbitraje puede ser centralizado o distribuido
  • 120. 120 Arbitraje Centralizado o Distribuido • Centralizado – Dispositivo de hardware único controla el acceso al bus • Controlador de bus • Árbitro – Puede ser parte de la CPU o estar separado • Distribuido – Cada módulo puede reclamar el Bus – Lógica de control sobre todos los módulos
  • 121. 121 Temporización • Coordinación de eventos en bus • Sincrónico – Eventos determinados por las señales de reloj – El Bus de control incluye línea de reloj – Un solo 1-0 es un ciclo de bus – Todos los dispositivos pueden leer la línea de reloj – Normalmente por cada ciclo se produce un único evento
  • 125. 125 Bus PCI • Interconexion de componentes Periféricos • Intel lo hizo de dominio público • 32 o 64 bit • 50 lineas
  • 126. 126 Lineas de Bus PCI (requeridas) • Líneas de sistemas – Incluyen lineas de “clock” y “reset” • Direcciones y Datos – 32 lineas de multiplexado temporal para direcciones/datos – Lineas de Interrupción & validación • Control de la interfaz • Arbitraje – No compartido – Conexión directa a árbitro de bus PCI • Lineas de Error
  • 127. 127 Lineas de Bus PCI (Opcional) • Lineas de Interrupción – No compartidas • Soporte de Caché • Extensión de Bus de 64-bit – 32 lineas Adicionales – Tiempo multiplexado – 2 líneas para habilitar dispositivos para aceptar usar la transferencia de 64 bits • JTAG/Boundary Scan – Para probar procedimientos
  • 128. 128 Comandos PCI • Transacción entre iniciador (maestro) y destino • Master reclama bus • Determina tipo de transacción – e.g. I/O read/write • Fase de dirección • Una o más fases de Datos
  • 129. 129 Diagrama de tiempos de lectura PCI