Title: Introducci
1Funcionamiento de las computadoras
- Introducción a las ciencias de la computación
- Antonio López Jaimes
UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD
IZTAPALAPA
2Plan de la presentación
- El modelo de von Neuman
- Funcionamiento de la computadora
3Plan de la presentación
- El modelo de von Neuman
- Funcionamiento de la computadora
4El modelo de von Neuman
- Cuál es la diferencia fundamental entre una
calculadora convencional y una computadora?
- La computadora se distingue de la calculadora por
su capacidad de seguir instrucciones escritas en
algún lenguaje y, además, almacenadas en su
propia memoria.
5Algoritmo vs programa
- Un algoritmo es una especificación libre de
ambigüedad de los pasos elementales para realizar
algún proceso. - Un programa es la transcripción de un algoritmo a
algún lenguaje de programación para resolver el
problema en una computadora. -
Programa
Traducción a algún lenguaje de programación
Algoritmo
(Implementación)
6Modelo de von Neumann
- La idea central del modelo de von Neumann es
almacenar las instrucciones del programa de una
computadora en su propia memoria, de manera que
la computadora siga los pasos definidos por su
programa.
7Modelo de von Neumann
Memoria
Programa
Datos de entrada
Unidad central de procesamiento
Unidad de entrada
Unidad de salida
8Modelo de von Neumann
Programa
Datos de entrada
9Unidades de entrada y salida
- Unidadades de entrada y salida dipositivos que
permiten la entrada y salida de datos desde y
hacia la memoria. - Ejemplos
Entrada Salida
Teclado Monitor
Mouse Impresora
Disco Disco
Lectora de tarjetas Bocinas
10Modelo de von Neumann
Programa
Datos de entrada
Unidad central de procesamiento
11Unidad central de procesamiento
- La unidad central de procesamiento (UCP) tiene
como función ejecutar instrucciones. La UCP se
compone de dos partes - La unidad aritmética y lógica (UAL), la cual se
encarga de hacer los cálculos. - La unidad de control interpreta las instrucciones
y determina el orden y la secuencia en que estas
se ejecutan.
UCP
Unidad aritmética y lógica
Unidad de control
12Unidad central de procesamiento
- Algunas instrucciones de la unidad aritmética y
lógica - Operaciones aritméticas con enteros
- Suma,
- resta,
- multiplicación.
- Operaciones lógicas
- Y (?),
- O (?),
- O exclusiva (?),
- negación (?).
13Modelo de von Neumann
Memoria
Programa
Datos de entrada
14Memoria
- La función de la memoria es almacenar datos
codificados numéricamente. - La memoria puede concebirse como un conjunto de
celdas con las siguientes características - Cada celda contiene solamente un valor numérico.
- Cada celda se distingue de otra por medio de una
dirección única.
15Memoria
- La memoria está organizada como un conjunto de
celdas numeradas secuencialmente, es decir como
un vector o arreglo. La UCP utiliza un apuntador
para dirigirse a una celda en memoria
especificando su dirección.
16Operaciones sobre la memoria
- La UCP puede efectuar dos operaciones básicas
sobre la memoria leer el contenido de una celda
y escribir un valor en una celda. - Para leer se realizan los siguientes pasos
- Proporcionar la dirección de la celda que se
desea leer. - Esperar que los circuitos de la memoria localicen
y traigan el valor contenido en la celda, y lo
dejen en una celda especial llamada registro. - Recoger el dato obtenido y terminar.
17Operaciones sobre la memoria
- Para escribir se efectúan los pasos siguientes
- Proporcionar a la memoria el dato que se desea
depositar en la memoria. - Proporcionar la dirección de la celda sobre la
cual se escribirá. - Esperar que los circuitos de la memoria depositen
el dato.
18Plan de la presentación
- El modelo de von Neuman
- Funcionamiento de la computadora
19Unidad central de procesamiento
- Para que la UCP pueda ejecutar cualquier
instrucción es necesario - Que las instrucciones sean entendibles por la
UCP. - Que las instrucciones estén almacenadas en la
memoria.
20Necesidad de codificar las instrucciones
- Las celdas de la memoria solamente pueden
almacenar datos numéricos, de manera que tenemos
que codificar todos los datos usando números. - Esto implica que también las instrucciones se
deben convertir en números para introducirlas en
la memoria. Esto es, las instrucciones se deben
codificar.
21Necesidad de codificar las instrucciones
- Para realizar esta codificación debemos encontrar
un esquema que asocie a cada instrucción de la
UCP un valor numérico único. - La unidad de control de la UCP tiene una especie
de diccionario que contiene la relación de las
intrucciones codificadas.
Instrucción Código
SUMA 30
RESTA 33
22Lenguaje máquina
- El lenguaje máquina se refiere al esquema de
codificación de instrucciones que entiende la
unidad central de procesamiento. - Los circuitos electrónicos de la unidad de
control de la computadora reconocen y ejecutan
solamente instrucciones codificadas en su
lenguaje máquina.
UCP
30
SUMA
Unidad aritmética y lógica
Unidad de control
23El acumulador de la UCP
- Para realizar operaciones con los datos, la UCP
necesita tener estos valores en una celda
especial o registro llamado acumulador. - Esta condición requiere de una instrucción que
lleve el contenido de una celda al acumulador, y
otra para devolver el contenido del acumulador a
una celda de la memoria.
Unidad aritmética y lógica
Unidad de control
Acumulador
24Plan de la presentación
- El modelo de von Neuman
- Funcionamiento de la computadora
- Un primer programa
25Un primer programa suma
- La suma de dos números cualesquiera.
- Necesitamos considerar tres cosas
- Se requieren tres celdas de memoria dos para los
datos (sumandos) y otra para depositar el
resultado. - Es preciso definir las instrucciones por efectuar
y su orden, y escribirlas en la codificación que
entiende la máquina. - Introducir los datos e instrucciones en la
memoria.
26Instrucciones para efectuar la suma
- CARGA ltdireccióngt
- Copia el contenido del acumulador en la celda con
la ltdireccióngt indicada.
UCP
Unidad aritmética y lógica
Unidad de control
Acumulador
30
Ejem CARGA 12
51
30
17
02
33
10
11
12
13
14
15
10
27Instrucciones para efectuar la suma
- GUARDA ltdireccióngt
- Lleva al acumulador el valor de la celda con la
ltdireccióngt especificada.
UCP
Unidad aritmética y lógica
Unidad de control
Acumulador
30
Ejem GUARDA 14
20
30
21
30
22
20
11
12
13
14
15
10
28Instrucciones para efectuar la suma
- SUMA ltdireccióngt
- Suma al acumulador el contenido de la celda
referida por ltdireccióngt.
UCP
Unidad aritmética y lógica
Unidad de control
Acumulador
302151
Ejem SUMA 13
20
30
21
30
22
20
11
12
13
14
15
10
29Instrucciones para efectuar la suma
- CARGA ltdireccióngt
- Lleva al acumulador el valor de la celda con la
ltdireccióngt especificada. - GUARDA ltdireccióngt
- Copia el contenido del acumulador en la celda con
la ltdireccióngt indicada. - SUMA ltdireccióngt
- Suma al acumulador el contenido de la celda
referida por ltdireccióngt. - ALTO
- Indica la terminación del proceso.
30Instrucciones básicas de la UCP
- Los nombres de las instrucciones son nombres
simbólicos (mnemónicos) para facilitar su uso,
pero la UCP solamente leerá sus códigos
asociados. - La instrucciones ocupan celdas en la memoria una
para su código y otra(s) para su(s) parámetro(s). - Por ejemplo, CARGA ltdireccióngt ocupa una celda
para su código y otra para la dirección. - La longitud de una instrucción es número de
celdas que ocupa en la memoria.
31Instrucciones básicas de la máquina
Instrucción Código Longitud
CARGA 20 2
GUARDA 02 2
SUMA 33 2
ALTO 70 1
Estos códigos son asignados de manera arbitraria
para nuestro ejemplo. Una UCP real tiene su
propia codificación de instrucciones.
32Secuencia ordenada de instrucciones
Suponemos que de alguna manera, en la celda 20
está el primer sumando y en la 21 el segundo
sumando.
5
7
?
Para sumar 89
20
21
22
Datos del programa
Código Instrucción Comentarios
2020 CARGA 20 Coloca el primer sumando en el acumulador (i.e., el 8)
3021 SUMA 21 Ejecutar la suma
0222 GUARDA 22 Colocar el resultado en la celda 22
70 ALTO Detener la ejecución
33Programa fuente
Código Instrucción Comentarios
2020 CARGA 20 Colocar el primer número en el acumulador
3021 SUMA 21 Ejecutar la suma
0222 GUARDA 22 Colocar el resultado en la celda 22
70 ALTO Detener la ejecución
Programa fuente
Programa escrito en lenguaje mnemónico, el cual
está más cercano al lenguaje entendible por los
humanos.
34Programa objeto
Código Instrucción Comentarios
2020 CARGA 20 Colocar el primer número en el acumulador
3021 SUMA 21 Ejecutar la suma
0222 GUARDA 22 Colocar el resultado en la celda 22
70 ALTO Detener la ejecución
Programa objeto
Programa escrito en lenguaje máquina (ejecutable,
binario), el cual entiende directamente la
computadora.
35Cargar el programa objeto
- Programa objeto
- Para ejecutarse, el programa objeto necesita ser
introducido en la memoria (i.e., ser cargado). - Un programa especial (sistema operativo) cargará
el programa objeto y asignará espacio para los
datos. - Tenemos un programa universal que suma
cualesquiera dos números en las celdas 20 y 21.
2020 3021 0222 70
20
30
21
02
22
70
5
7
20
11
12
13
14
15
16
20
21
22
10
Programa objeto
Datos del programa
36El contador de programa
- La UCP posee otro registro llamado contador de
programa (CP). - El CP contiene la dirección de la siguiente celda
de memoria a leer. - Para calcular la dirección de la siguiente
instrucción (actualizar CP), se toma en cuenta la
longitud de cada instrucción.
Unidad aritmética y lógica
Unidad de control
CP
Acumulador
37Ciclo de ejecución de la UCP
- Los pasos para ejecutar una intrucción son los
siguientes - I. Ir a la memoria y extraer el código de la
siguiente instrucción apuntada por el CP (ciclo
de fetch). - II. Decifrar la instrucción leída.
- III. Ejecutar la instrucción.
- IV. Actualizar el CP para apuntar a la siguiente
instrucción que será leída.
38Ciclo de ejecución de la UCP
Estas cuatro operaciones están alambradas. Es
decir, la máquina las ejecuta por medios
electrónicos. Este ciclo se ejecuta de manera
repetitiva a razón de millones de veces por
segundo.
I
Ciclo de fetch
II
IV
Decodificación
Actualización del CP
III
Ejecución
39Pasos en la ejecución de un programa
- 0. Indicar a la unidad de control la celda donde
inicia el programa. Esto es, colocar en el CP la
dirección de la celda inicial (10 en el ejemplo). - Esta tarea la realiza un programa especial, el
sistema operativo.
10
CP
40Pasos en la ejecución de un programa
- 1. La unidad de control leerá el contenido de la
celda 10, que es 20 (paso I).
Lee 20
Unidad de control
10
CP
41Pasos en la ejecución de un programa
- 2. La unidad de control decodifica el 20 y
determina que se trata de la instrucción CARGA
(paso II).
20 CARGA
(longitud 2)
Unidad de control
42Pasos en la ejecución de un programa
- 3. Se ejecuta la instrucción CARGA 20 (paso III).
La UCP cargará el contenido de la celda 20 en el
acumulador.
Unidad de control
13
11
CP
Acumulador
43Pasos en la ejecución de un programa
- 4. Se ejecuta el paso IV. La unidad de control
ajusta el valor del CP a 12. El ciclo continuará
hasta leer la instrucción ALTO.
Unidad de control
13
Acumulador
44Pasos en la ejecución de un programa
- 5. Se vuelve al paso I. Se leerá la celda CP12,
que contiene 30.
Unidad de control
Lee 30
13
Acumulador
45Pasos en la ejecución de un programa
- 6. Se decodifica la instrucción (paso II), que es
SUMA.
30 SUMA
(longitud 2)
Unidad de control
13
Acumulador
46Pasos en la ejecución de un programa
- 7. Se ejecuta la instrucción SUMA 21 (paso III).
Se suma al acumulador el contenido de la celda 21.
Unidad de control
4
13417
13
CP
Acumulador
47Pasos en la ejecución de un programa
- 8. Se ejecuta el paso IV nuevamente. El contador
de programa se iguala a 14.
Unidad de control
17
Acumulador
48Pasos en la ejecución de un programa
- 9. Se leerá la celda CP14, que contiene el
código 02 (paso I).
Unidad de control
Lee 02
17
Acumulador
49Pasos en la ejecución de un programa
- 10. Se decodifica la instrucción (paso II), que
es GUARDA.
02 GUARDA
(longitud 2)
Unidad de control
17
Acumulador
50Pasos en la ejecución de un programa
- 11. Se ejecuta la instrucción GUARDA 22 (paso
III). Se deposita el valor del acumulador (el
resultado de la suma) en la cela 22.
Resultado de la suma
Unidad de control
20
30
21
02
22
70
13
4
17
20
11
12
13
14
15
16
20
21
22
10
17
15
CP
Acumulador
51Pasos en la ejecución de un programa
- 12. Se ejecuta el paso IV nuevamente. El contador
se iguala a 16.
Unidad de control
20
30
21
02
22
70
13
4
17
20
11
12
13
14
15
16
20
21
22
10
17
Acumulador
52Pasos en la ejecución de un programa
- 13. Se leerá la siguiente instrucción en la celda
CP16, que contiene 70 (paso I).
Unidad de control
Lee 70
20
30
21
02
22
70
13
4
17
20
11
12
13
14
15
16
20
21
22
10
17
Acumulador
53Pasos en la ejecución de un programa
- 14. Se decodifica la instrucción (paso II), que
es ALTO.
70 ALTO
(longitud 1)
Unidad de control
20
30
21
02
22
70
13
4
17
20
11
12
13
14
15
16
20
21
22
10
17
Acumulador
54Pasos en la ejecución de un programa
- 15. Se ejecuta la instrucción ALTO (paso III). Se
detiene la unidad de control y el proceso
termina. Así se rompe el ciclo de cuatro pasos.
Resultado de la suma
Unidad de control
17
20
30
21
02
22
70
13
4
17
20
11
12
13
14
15
16
20
21
22
10
17
14
CP
Acumulador
55Modos de direccionamiento
- Existen dos modos de direccionamiento
- Direccionamiento directo. El parámetro o dato de
la operación se especifica mediante una dirección
escrita enseguida el código de la instrucción. - Direccionamiento inmediato. El dato con el que se
opera se especifica inmediantemente después del
código de la instrucción.
56Modos de direccionamiento
- Ejemplo
- Dir. directo Dir.
inmediato - SUMA 27 SUMA-i 27
27
Suma al acumulador cualquier valor contenido en
la celda con la dirección 27
Suma al acumulador el número 27
57Modos de direccionamiento
- Las operaciones de modo inmediato son menos
generales, pues están restringidas a un valor
fijo que forma parte del programa. - Las operaciones de modo directo, son más
versátiles ya que los valores referidos por la
dirección pueden cambiar de una ejecución a otra
sin modificar el programa (código fuente). -
58Nuevo diccionario de intrucciones
Direccionamiento directo Direccionamiento directo
Operación Código
CARGA 20
GUARDA 02
SUMA 30
RESTA 33
DIV 38
MULT 36
ALTO 70
Direccionamiento inmediato Direccionamiento inmediato
Operación Código
CARGA-i 21
SUMA-i 31
RESTA-i 34
DIV-i 39
MULT-i 37
59Instrucciones de entrada y salida
- La UCP se comunica con el exterior por medio de
la unidad de entrada usando un puerto de entrada
y otro de salida. - Las instrucciones para que llevan a cabo esta
operación son la siguientes - IN
- Toma el valor individual del puerto de entrada y
lo deposita en el acumulador. - OUT
- Copia el número del acumulador y lo deja en el
puerto de salida.
60Instrucciones de comparación
- Para determinar si el valor x es mayor, menor o
igual al valor y tenemos la siguientes
instrucciones - COMP ltdireccióngt
- Compara el contenido del acumulador con el valor
de la celda con la dirección indicada. - COMP-i ltdatogt
- Compara el contenido del acumulador con un número
dado.
61El registro bandera de la UCP
- El resultado de las operaciones COMP y COMP-i se
guarda en un registro de la UCP denominado
bandera. - Los posibles resultados que se guardan en la
bandera son
Igual Mayor que gt Mayor
o igual que gt Diferente lt gt Menor que lt
Menor o igual que lt
62Saltos condicionales e incondicionales
- En ciertas situaciones se requiere ejecutar una
sección de código A cuando se cumple una
condición, y en caso contrario, ejecutar otra
sección B. - Cajero automático
- Si la cadena es igual a la contraseña,
- entonces presentar menú de operaciones
- en otro caso, pedir la contraseña
nuevamente. - Si el saldo es mayor o igual a la cantidad por
retirar, - entonces saldo saldo cantidad retirada
- en otro caso, indicar que no hay saldo
disponible. -
63Saltos condicionales
- Ejecutar una secuencia A o B, implica saltarse
una de ellas dependiendo del resultado de una
comparación. - Para ello se requiere de una instrucción de salto
condicional como la siguiente - BRgt ltdireccióngt
- Salta a la celda con la dirección indicada si la
bandera indica MAYOR QUE. - De manera análoga, existe una instrucción de
salto condicional para cada resultado de una
comparación - BR, BRltgt, BRlt, BRgt, BRlt, BRgt
64Ejemplo de salto condicional
- Supongamos que tenemos un programa con una
secuencia de instrucciones A y otra secuencia B.
65Ejemplo de salto condicional
- Supongamos que tenemos un programa con una
secuencia de instrucciones A y otra secuencia B.
y también se ejecuta B
66Salto incondicional
- Si queremos que se ejecute solamente una de dos
posibles secuencias, entonces al final de la
primera sección habría que insertar una
instrucción para saltar incondicionalmente al
final de la segunda sección. - Esta instrucción es el salto incondicional
- BR ltdireccióngt
- Brinca inmediatamente a la celda con la dirección
indicada.
67Ejemplo de salto incondicional
- Supongamos que tenemos un programa con una
secuencia de instrucciones A y otra secuencia B.
Salta al final de B
68Circuito de memoria