Sei sulla pagina 1di 51

Algoritmos I.

El modelo de von Neumman


La idea central del modelo de computación
propuesto por John von Neumann es almacenar las
instrucciones del programa en una computadora en
su propia memoria, logrando con ello que la
máquina siga los pasos definidos por su programa
almacenado.

Una computadora de programa almacenado tiene la


siguiente configuración general, muy parecida al
diseño original de las computadoras de Babbage,
aunque no está basada en él.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


MEMORIA

UNIDAD UNIDAD CENTRAL


DE UNIDAD
DE
PROCESAMIENTO DE SALIDA
ENTRADA

Esquema básico de una computadora actual

En este esquema se observan las relaciones


estructurales que existen entre las diversas
unidades que configuran la máquina.
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


La unidad central de procesamiento (CPU) contiene
a la unidad de aritmética y lógica (que hace los
cálculos) y a la unidad de control.

Para poder operar bajo el modelo de von Neumann


es necesario resolver el problema de comunicar a la
computadora las operaciones por efectuar sobre los
datos previamente almacenados en la memoria.

“La función de la memoria es guardar datos.”

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


La memoria será un conjunto de celdas (o casillas)
con las siguientes características:

a) Cada celda puede contener un valor numérico.


b) Cada celda tiene la propiedad de ser
direccionable. Se puede distinguir una de otra
por medio de un número unívoco que es su
dirección.

Las celdas de la memoria tienen que estar


organizadas de modo que faciliten la localización de
cualquiera de ellas con un esfuerzo mínimo.
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Se puede hacer referencia a una celda por medio de
su dirección. Se usará un apuntador para dirigirse
a alguna celda cualquiera.

Apuntador

51 52 53 54 55
4 0 1 9 7

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Cada celda tiene una dirección.

La celda 51 contiene un valor de 4.

Apuntador

51 52 53 54 55
4 0 1 9 7

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Con lo anterior podemos almacenar (y recuperar)
valores en la memoria por medio de una dirección
unívoca.

Es posible definir dos operaciones elementales


sobre ella: leer el contenido de una celda y escribir
un valor en una celda.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Operaciones sobre la memoria (Lectura):

a) Decidir cual celda se va a leer (proporcionar su


dirección).
b) Esperar un tiempo fijo para accesar a la memoria
y traer así el valor depositado en esa celda (la
celda no pierde su valor; sólo se trae un copia del
dato y no el dato mismo).
c) Recoger ese dato y dar por terminada la
operación de lectura. Dirección
Obtener copia

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Operaciones sobre la memoria (Escritura):

a) Proporcionar el dato que se desea depositar en una


celda.
b) Proporcionar la dirección de la celda sobre la que se
desea hacer la escritura del dato.
c) Esperar un tiempo fijo para accesar a la memoria y
deposite el dato en la celda designada, para dar por
terminada la operación de escritura. (Si la celda en
cuestión ya tenía un valor, éste se pierde, pues es
reemplazado por el nuevo).
Dirección Grabar el dato
Proporcionar el dato

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


¿Cómo almacenar las instrucciones en la memoria?

¿De que forma se pueden poner las instrucciones


en las celdas?

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Si en las celdas de memoria sólo caben números,
entonces habrá que traducir las instrucciones a
números para poder almacenarlas. (Concepto de
Códificación).

Para codificar las instrucciones se debe considerar


cuántas y cuáles son las instrucciones disponibles y
qué esquema de codificación se empleará.

Se debe encontrar un código adecuado para que a


cada instrucción definida se corresponda uno, y sólo
un, valor númerico.
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Tabla de Instrucciones (que forma parte de la unidad
de control), especie de diccionario electrónico.

Instrucción Código interno


SUMA 57
RESTA 42
... ...
... ...
Utilizaremos el nombre de Lenguaje máquina para
referirnos al código que maneja la unidad central de
procesamiento.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Utilizando el modelo anterior, escribir un programa
para sumar 5 + 7.

1) Se requieren tres casillas de la memoria. Dos


para los datos (5 y 7) y una para depositar el
resultado. Se escogen las casillas 21, 22 y 23

Instrucción Código interno


SUMA 57
RESTA 42
... ...
... ...

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


2) Hay que introducir todos los datos (e
instrucciones) en la memoria.

Se requiere de una instrucción para:

•llevar el contenido de una celda al acumulador


(celda especial, o registro contenido en la CPU).
•sumar.
•Devolver el contenido del acumulador a una celda
de la memoria.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


La forma de la instrucción para llevar el contenido
de una celda al acumulador es:

CARGA_AC dirección

Donde CARGA_AC es el nombre de la instrucción y


la dirección indica la celda de memoria cuyo valor se
desea llevar al acumulador.

CARGA_AC : es el nombre mnemónico de la


instrucción.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


La instrucción CARGA_AC ocupará el contenido de
una celda de la memoria.

La dirección será un número que ocupará un lugar


en otra celda.
Apuntador

51 52 53 54 55
CARGA_AC DIRECCION

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Esto quiere decir que la instrucción CARGA_AC
ocupará dos celdas en la memoria: una para el
código de operación y la otra para la dirección a la
que hace referencia.

Apuntador

51 52 53 54 55
CARGA_AC DIRECCION

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


En términos generales, habrá instrucciones que
ocupen una, dos y hasta tres o más celdas de
memoria.
Apuntador

51 52 53 54 55
CARGA_AC DIRECCION

Instrucción
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Las demás instrucciones que se requerirán son:

GUARDA_AC dirección

Que deposita el valor del acumulador en una celda


de la memoria y

SUMA dirección

Que suma al acumulador el contenido de la celda de


memoria descrita por la dirección.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Diccionario de datos.

Instrucción Código interno Longitud de la


Instrucción
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Programa para sumar 5 + 7. Se supone que la
celda 21 contiene un 5 y la celda 22 un 7.

Instrucción Dirección Código Comentarios


CARGA_AC 21 2121 Se coloca el primer
número en el acumulador.
SUMA 22 5722 Se efectúa la suma
GUARDA_AC 23 9623 El resultado queda en la
casilla 23
ALTO -- 70

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Fue necesario definir una instrucción ALTO para
lograr que la secuencia –cuando se ejecute- llegue a
un fin.

Esta nueva instrucción ocupa una sola casilla de


memoria, ya que no es necesario hacer referencia a
una nueva dirección.

Instrucción Dirección Código Comentarios


CARGA_AC 21 2121 Se coloca el primer número en el acumulador.
SUMA 22 5722 Se efectúa la suma
GUARDA_AC 23 9623 El resultado queda en la casilla 23
ALTO -- 70

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


El programa fuente se escribe en lenguaje
mnemónico. El programa objeto esta escrito en un
formato númerico.
Código objeto

2121 5722 9623 70


Código fuente

Instrucción Dirección Código Comentarios


CARGA_AC 21 2121 Se coloca el primer número en el acumulador.
SUMA 22 5722 Se efectúa la suma
GUARDA_AC 23 9623 El resultado queda en la casilla 23
ALTO -- 70

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Este programa sirve para sumar cualquier par de
números, siempre que residan en las casillas 21 y
22.

Hay que introducir el programa objeto en la memoria


de la computadora, para que pueda ejecutarse
luego. Aquí es importante elegir las casillas de la
memoria que se utilizarán para almacenar el
programa; esto es, en qué sección de la memoria se
va a cargar el programa.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


Una vez cargado, el programa objeto se verá así;

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Instrucciones de Programa Datos de programa

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

El modelo de von Neumann.


•Cada celda contiene un solo número de dos digitos.
•La celda 23 contiene un número no especificado
todavía (el resultado de la suma), que se tendrá una
vez ejecutado el programa

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Instrucciones de Programa Datos de programa


UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Cada una de las dos primeras celdas contiene un
número 21, pero en la primera, éste representa el
código de la instrucción CARGA_AC, mientras que
el mismo 21 representa, en la segunda celda, la
dirección 21.
Código de la instrucción CARGA_AC

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Dirección 21
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Obsérvese que una celda puede contener un mismo
número que significará dos cosas diferentes,
dependiendo del orden en que aparezcan respecto
al inicio.

Código de la instrucción CARGA_AC

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Dirección 21
UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.
Algoritmos I.

El modelo de von Neumann.


Cuando se ha cargado el programa objeto a partir
de la celda 10 de la memoria, hay que encontrar un
procedimiento para lograr que la computadora
comienze la ejecución del mismo y poder así
obtener los resultados deseados.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

La unidad de control.
La función principal de la unidad de control de la
CPU es dirigir la secuencia de pasos de modo que
la computadora lleve a cabo un ciclo completo de
ejecución de una instrucción y hacer esto con todas
las instrucciones de que conste el programa.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

La unidad de control.
I. Ir a la memoria y extraer el código de la
siguiente instrucción (que estará en la siguiente
celda de memoria por leer). Este paso se llama
ciclo de fetch (traer, ir por).
II. Decodificar la instrucción recién leida
(determinar de que instrucción se trata).
III. Ejecutar la instrucción.
IV. Prepararse para leer la siguiente casilla de
memoria (que contendrá la siguiente
instrucción), y volver al paso I para continuar.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

La unidad de control.
La unidad de control ejecutará varias veces este
ciclo de cuatro “instrucciones alambradas” a una
enorme velocidad.

Se llama así a estas instrucciones porque no


residen en memoria, ni fueron escritas por ningún
programador, sino que la máquina las ejecuta
directamente por medios electrónicos, y lo hará
mientras esté funcionando.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 0. El programa inicia en la celda número
10, entonces se debe indicar a la unidad de control
que esa celda contiene la primera instrucción.

Contador de Programa CP=10.

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Este paso es externo, no forma parte del programa, se tiene que hacer
“desde afuera”, para iniciar la operación de la computadora.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 1. La unidad de control ejecutará el paso I e
irá a la casilla 10 para leer su contenido, que es 21.

Paso # 2. La unidad de control ejecuta el paso II,


con lo que decodifica el 21 recien leído y determina
que se trata de una operación CARGA_AC
21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
Instrucción Código interno Longitud

CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Como la instrucción 21 tiene una longitud de dos
celdas, una para el código (21) y otra (la siguiente)
para la dirección de la celda cuyo valor se cargará
en el acumulador, la máquina deberá ajustar el valor
del contador de programa CP para que este apunte
a la celda siguiente (en este caso la celda 11).
21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
Instrucción Código interno Longitud

CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 3. La unidad de control ejecuta el paso III
para efectuar la operación de carga. La
computadora debe ir a la celda 11 y extraer su
contenido, pero ahora ya no lo considerará como
instrucción, sino como dirección.
21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Instrucción Código interno Longitud

se colocará en la celda 21 CARGA_AC 21 2


para extraer el valor GUARDA_AC 96 2
SUMA 57 2
que contenga (5) RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


La instrucción completa: 21 21 puede leerse: Cargar
el acumulador con el valor que esté contenido en la
celda cuya dirección aparece a la derecha de donde
se está leyendo ahora.

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

Instrucción Código interno Longitud

CARGA_AC 21 2
GUARDA_AC 96 2 REGISTRO ACUMULADOR
SUMA 57 2
UNIDAD DE CONTROL
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 4. La unidad de control ejecuta el paso IV,
para luego ejecutar todo el ciclo completo.

Obsérvese que es un ciclo ilimitado, que solo


terminará cuando se ejecute la la instrucción ALTO.
21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23

El CP=12.

Apuntará a la celda número 12.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 5. Se ejecuta (por segunda vez) el paso I de
la unidad de control. CP=12, apuntará a la celda 12.

Paso # 6. Se decodifica esa instrucción, que es


SUMA, por lo que el CP se prepara para apuntar a
la siguiente celda.

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Recuerde que la instrucción SUMA ocupa dos
celdas: una para el código de operación y otra para
la dirección de la celda cuyo contenido se sumará al
acumulador.

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 7. Se ejecuta la instrucción 57, con lo que
se añade el contenido de la celda 22 al acumulador

05 + 07

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


La dirección 22, reside en la celda 13, que es la que
actualmente apunta el contador de programa como
resultado del paso anterior.

Ahora el acumulador 05 + 07
Contendrá un 12 (5+7)

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 8. El CP se actualiza para apuntar a la celda
14, en la cual reside el código de la siguiente
instrucción.

Paso # 9. Se lee la celda 14 y se extrae su


contenido: 96

21 21 57 22 96 23 70 ... 05 07 ?? ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 10. Se decodifica la instrucción que es
GUARDA_AC, por lo que el CP se alista para
apuntar a la siguiente celda, que contedrá la
dirección de la celda en donde se guardará el
contenido del acumulador.

Paso # 11. Al ejecutarse esta instrucción se


deposita el valor del acumulador (12) en la celda
número 23, o sea, se deja el resultado de la suma
en la celda que de antemano se había preparado
para ese fin.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 10. Se decodifica la instrucción que es
GUARDA_AC, por lo que el CP se alista para
apuntar a la siguiente celda, que contedrá la
dirección de la celda en donde se guardará el
contenido del acumulador.

Paso # 11. Al ejecutarse esta instrucción se


deposita el valor del acumulador (12) en la celda
número 23, o sea, se deja el resultado de la suma
en la celda que de antemano se había preparado
para ese fin.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa

05 + 07

21 21 57 22 96 23 70 ... 05 07 12 ...
10 11 12 13 14 15 16 21 22 23
CARGA_AC 21 2
GUARDA_AC 96 2
SUMA 57 2
RESTA 42 2

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 12. La unidad de control regresa al paso I,
no sin antes actualizar el contador de programa para
que apunte a la celda 16, que es donde reside la
siguiente instrucción.

Paso # 13. Se lee la celda 16 y se extrae su


contenido: 70.

21 21 57 22 96 23 70 ... 05 07 12 ...
10 11 12 13 14 15 16 21 22 23

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Ejecución del programa


Paso # 14. Se decodifica esta instrucciónm que es
ALTO. El CP no se prepara para extraer un dato de
la siguiente celda porque la instrucción 70 ocupa
una celda.

Paso # 15. Se ejecuta esta instrucción, lo que


detiene a la unidad de control y a la máquina. De
esta manera se rompe el ciclo de los cuatro pasos.

21 21 57 22 96 23 70 ... 05 07 12 ...
10 11 12 13 14 15 16 21 22 23

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Conclusiones.
Dado el contenido de una celda, la computadora no
puede distinguir si se trata de una instrucción o de
un dato o dirección.

Debido a lo anterior, es responsabilidad de quien


maneja la máquina indicarle cuál es la celda donde
comienza el programa (esto se hizo por medio del
paso 0, que se describió como externo al programa).

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Conclusiones.
Una vez que el contador de programa apunta a la
ceda que contiene la primera instrucción, el resto del
proceso ocurre de manera automática e invisible
para el programador. Esto se debe a los ajustes
internos que se hacen al CP (en el paso II) que, a su
vez, dependen de la longitud de la instrucción que
se está ejecutando.

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.


Algoritmos I.

Referencia bibliográfica.
Estas notas fueron tomadas del libro:

Introducción a la computación y a la programación


estructurada.
Guillermo Levine Gutiérrez.
McGraw-Hill, Segunda Edición.
Editado en México 1991.

Compilador: ISC Raúl Oramas Bustillos.


Email: r_oramas@hotmail.com
r_oramas@yahoo.com

UDEO. Algoritmos I. ISC Raúl Oramas Bustillos.

Potrebbero piacerti anche