Universidad de Costa Rica
Escuela de Ciencias de la Computación e Informática
Introducción a la Computación
Ejecución de un Programa
Prof: Maureen Murillo R.
• Entender cómo se ejecuta un programa requiere
comprender cómo los diferentes dispositivos de
hardware trabajan e interactúan entre sí para llevar
Ejecución a cabo las tareas descritas en un programa.
de Programas
Presentación basada en las de:
•Prof. Yadira Solano
•Peter Norton
Programa Almacenado Lenguaje de Máquina
• Cada arquitectura de computador tiene su propio conjunto de
• Antiguamente, los programas estaban integrados en la instrucciones. Arquitecturas diferentes posiblemente tengan
unidad de control y eran parte de la máquina. instrucciones diferentes.
• Avance: los programas se codifican (se traducen a • Conjunto de instrucciones + Sistema de codificación =
instrucciones que entienda la máquina) y se almacenan Lenguaje de máquina
en la memoria principal. • Todos los programas escritos en lenguajes de programación de
• La unidad de control debe extraer el programa de la alto nivel, se traducen al lenguaje de máquina.
memoria, decodificar las instrucciones y ejecutarlas. • Por ejemplo, el lenguaje de máquina de un computador con
• Patrones de bits representan instrucciones. Ejemplo de una determinada arquitectura podría tener 80 instrucciones
instrucción: para llevar a cabo todas las tareas posibles.
13A7 (en hexadecimal)
0001 0011 1010 0111 (en binario)
Investigue: ¿cuántas instrucciones tienen los lenguajes
de máquina de los procesadores más recientes?
1
Tipos de Arquitecturas Tipos de Instrucciones
• Dependiendo del tamaño del conjunto de instrucciones del • Transferencia de datos
lenguaje de máquina, las arquitecturas de computadores se
dividen en 2: CISC y RISC. – cargar (load): copia de la Mem.Pr. a los registros de la CPU
• CISC (Complex Instruction Set Computer): – almacenar (store): copia de los registros de la CPU a la MP
– Posee un conjunto complejo y amplio de instrucciones. • Aritmética-lógica
– Máquina más fácil de programar: 1 sola instrucción CISC puede ser
equivalente a una secuencia de varias instrucciones RISC. – aritméticas (difiere suma de enteros y de fracciones)
– Más caro y difícil de construir la máquina. – lógicas (y, o, o exclusivo, desplazamiento, rotación)
– Menos eficiente la ejecución de las instrucciones.
• Control (dirigen la ejecución del programa)
• RISC (Reduced Instruction Set Computer):
– saltar (jump) o bifurcar (branch)
– Posee un conjunto reducido y simple de instrucciones.
– Programas más largos y difíciles de escribir. • incondicional
– Diseño de la CPU más sencillo. • condicional
– Más eficiente la ejecución de las instrucciones. – parar
Formato de Instrucciones Formato de Instrucciones
• Generalmente consta de dos partes: • Cada instrucción se codifica con 16 bits (4
– Código de operación (almacenar, sumar, dígitos hexadecimales)
saltar, etc.)
• Código de operación ocupa los primeros 4
– Operando: normalmente indica la dirección de
la información a manipular por el código de bits (primer dígito hexadecimal)
operación.
• Ejemplo: 2 bytes
1 3 A 7
Código de operación Operandos
1 = cargar registro con datos 3 = registro a cargar Código de operación Operando
A7 = dirección de memoria donde está el
dato que se cargará en el registro
1...C
2
Ejemplo de
Ejemplos de Instrucciones Arquitectura CPU-MP
Ejemplos:
Unidad Central de Proceso Memoria Principal
1347
Unidad de control Dirección Celda
aritmético--lógica
1 3 4 7 Registros
00:
R0
Contador de programa 01:
Cargar el R3 con el contenido de la celda de memoria 47 R1
Unidad aritmético
Bus 02:
R2
70C5 Registro de instrucción
2 bytes
7 0 C 5
FF 1 byte
RF 1 byte
Aplicar O al contenido de R12 y de R5, dejar el resultado en R0
16 registros 70C5 256 celdas
De
Ciclo de Máquina
co
la instrucción de
di
memoria según el patrón de
fic
• La CPU sigue un conjunto de pasos, llamado el dirección indicada bits del
ar
ciclo de máquina, para cada instrucción que por el contador de registro de
programa instrucción
ejecuta. e incrementarlo
r
ne
• El ciclo de máquina está formado de 2 ciclos más
te
Ob
pequeños:
– Ciclo de instrucción: en este ciclo la CPU lee o carga
un comando (instrucción) o dato de la memoria y lo Ejecuta
decodifica. r
– Ciclo de ejecución: la CPU ejecuta la instrucción, lo que la acción indicada
podría implicar que guarde el resultado en la memoria, en el registro de
dependiendo del tipo de instrucción. Ciclo de Máquina instrucción
3
Máquina Memoria Principal
Hipotética Dirección Celda
Instrucciones para “cargar”
00
01
02 Cargar el registro 3 con el R3 RAM
Unidad Central de Proceso 1347 contenido de la celda de 8B 47 8B
Unidad de control 3A 50 48 26
memoria 47 … …
aritmético--lógica
Registros 3B 0A
R0 3C 5A
Contador de programa
R1 50
Unidad aritmético
A2 A0 11
A4
A0 Bus A1 3A
R2 0A A2 12 R3 RAM
Registro de instrucción A3 3B 2347 Cargar el registro 3 con el 47 8B
A4 53 47
valor 47 48 26
1 12 3 A
B A5 12 … …
A6 33
RF A7 3C
A8 C0
A9 00
FF
Instrucción para “almacenar” Instrucción para “mover”
Mueve (en realidad copia) el R2 C7
4024 valor del registro 2 al registro 4. R3 …
R5 RAM R4 C7
Guarda el contenido del R5 ..
A2 47 8B
3548 registro 5 en la celda de 48 A2
memoria 48 … …
¡El registro fuente conserva su valor,
por lo que en realidad lo que se realiza
es una copia del valor!
4
Instrucciones para “sumar” Instrucciones lógicas
Complemento a dos: OR:
Suma los valores de los registros R2 12 Realiza un OR bit a bit entre los R2 BB
5524 2 y 4 en complemento a dos, y R3 … + 7245 patrones de los registros 4 y 5, y
… …
R4 0B R4 A3 OR
deja el resultado en el registro 5. R5 1D deja el resultado en el registro 2. R5 B9
Punto flotante: AND:
Suma los valores de los registros R4 6A Realiza un AND bit a bit entre los R2 A1
6F4E … … + 8245 … …
4 y 14, como punto flotante, y RE 38 patrones de los registros 4 y 5, y R4 A3 AND
deja el resultado en el registro 15. RF 6B deja el resultado en el registro 2. R5 B9
Instrucción de salto
Instrucciones lógicas A4
RAM
3B
Salto condicional:
A5 84
XOR: Salta a la instrucción localizada en la celda de A6 16
R2 1A
B2A5 memoria A5 si el valor del registro 2 es igual al … …
Realiza un XOR bit a bit entre los
9245 patrones de los registros 4 y 5, y
… … valor del registro 0. En otro caso, continúa con
D7
D8
B2
R4 A3 XOR
A5
deja el resultado en el registro 2. R5 B9 la secuencia normal de ejecución. D9 57
DA 42
Caso 1: Contador
Salto incondicional: R0 84
Rotación: D7 D9 A5 R1
5C
R2 … Compara el registro 0 con R.Instrucción R2 84
A403 Rota el patrón de bits del
… … B0A5 el mismo registro 0. Como B2A5 8416
registro 4, 3 veces a la R4 A3 74 Rotación
derecha. R5 … siempre son iguales,
siempre realizará el salto. Caso 2: Contador
D7 D9 R0 84
R1 5C
R.Instrucción R2 61
B2A5 5742
5
Operación “Y” (AND) Operación “O” (OR)
X Y X∧Y X Y X∨Y
0000 1111 máscara
0000 1111 máscara
0 0 0 1100 1100
0 0 0 1100 1100
1100 1111
0000 1100 0 1 1
0 1 0
1 0 1
1 0 0
1 1 1
1 1 1
Operación “O Exclusivo” (XOR) Ejemplo
Proceso para Sumar 2 Números
X Y X∨Y
1. Cargar registro X con operando 1 de la memoria.
1111 1111 máscara
2. Cargar registro Y con operando 2 de la memoria.
0 0 0 1101 0100
0 1 1 0010 1011 3. Sumar los contenidos X y Y en registro Z.
4. Almacenar contenido del registro Z en memoria.
1 0 1 5. Parar.
1 1 0
6
Ejemplo Ejercicio
Proceso para Dividir 2 Números
1. Cargar registro X con operando 1 de la memoria • Se quiere sumar dos valores, en notación de
2. Cargar registro Y con operando 2 de la memoria complemento a 2.
3. Si operando 2 es cero, saltar al paso 6 • Los valores se encuentran en las direcciones
4. Dividir el contenido del registro X por el contenido del de memoria: 3A y 3B.
registro Y, dejar resultado en Z
• El resultado debe quedar en la dirección de
5. Almacenar el contenido Z en la memoria
memoria 3C.
6. Parar
Ejercicio
• 113A
• 123B
• 5312
• 333C
• C000