Introducción a las ciencias de la...

68
Funcionamiento de las computadoras Funcionamiento de las computadoras Introducción a las ciencias de la Introducción a las ciencias de la computación computación Antonio López Jaimes UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA UNIDAD IZTAPALAPA

Transcript of Introducción a las ciencias de la...

Funcionamiento de las computadorasFuncionamiento de las computadoras

Introducción a las ciencias de la Introducción a las ciencias de la computacióncomputación

Antonio López Jaimes

UNIVERSIDAD AUTÓNOMA METROPOLITANAUNIVERSIDAD AUTÓNOMA METROPOLITANAUNIDAD IZTAPALAPAUNIDAD IZTAPALAPA

25-oct-05 2

Plan de la presentaciónPlan de la presentación

• El modelo de von Neuman• Funcionamiento de la computadora

25-oct-05 3

Plan de la presentaciónPlan de la presentación

•• El modelo de von NeumanEl modelo de von Neuman• Funcionamiento de la computadora

25-oct-05 4

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

25-oct-05 5

Algoritmo vs programaAlgoritmo 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.

Traducción a algún lenguajede programación

(Implementación)ProgramaPrograma

AlgoritmoAlgoritmo

25-oct-05 6

Modelo de von NeumannModelo 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.

25-oct-05 7

Modelo de von NeumannModelo de von Neumann

Unidad Unidad central decentral de

procesamientoprocesamiento

MemoriaMemoria

Unidad Unidad dede

entradaentrada

Unidad Unidad dede

salidasalida

ProgramaDatos de entrada

25-oct-05 8

Modelo de von NeumannModelo de von Neumann

ProgramaDatos de entrada

MemoriaMemoria

Unidad Unidad dede

entradaentrada

Unidad Unidad dede

salidasalida

Unidad Unidad central decentral de

procesamientoprocesamiento

25-oct-05 9

Unidades de entrada y salida

• Unidadades de entrada y salida: dipositivos que permiten la entrada y salida de datos desde y hacia la memoria.

• Ejemplos:

BocinasLectora de tarjetas

DiscoDisco

ImpresoraMouse

MonitorTeclado

SalidaEntrada

25-oct-05 10

Modelo de von NeumannModelo de von Neumann

Unidad Unidad central decentral de

procesamientoprocesamiento

ProgramaDatos de entrada

MemoriaMemoria

Unidad Unidad dede

entradaentrada

Unidad Unidad dede

salidasalida

25-oct-05 11

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

Unidadaritméticay lógica

Unidadde

control

UCP

25-oct-05 12

Unidad 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 (¬).

25-oct-05 13

Modelo de von NeumannModelo de von Neumann

ProgramaDatos de entrada

Unidad Unidad central decentral de

procesamientoprocesamiento

Unidad Unidad dede

entradaentrada

Unidad Unidad dede

salidasalida

MemoriaMemoria

25-oct-05 14

Memoria

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

25-oct-05 15

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

1500

1501

1502

1503

1504

1505

57

14

293

78

10

206

1500

1501

1502

1503

1504

1505

57

14

293

78

10

206

Apuntador1500

1501

1502

1503

1504

1505

57

14

293

78

10

206

Apuntador

1500

1501

1502

1503

1504

1505

57

14

293

78

10

206

Apuntador

1500

1501

1502

1503

1504

1505

57

14

293

78

10

206

Apuntador

25-oct-05 16

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

25-oct-05 17

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

25-oct-05 18

Plan de la presentaciónPlan de la presentación

• El modelo de von Neuman•• Funcionamiento de la computadoraFuncionamiento de la computadora

25-oct-05 19

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

25-oct-05 20

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

25-oct-05 21

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

33RESTA30SUMA

CódigoInstrucción

25-oct-05 22

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

Unidadaritméticay lógica

Unidadde

control

UCPSUMA 30

25-oct-05 23

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

Acumulador

Unidadaritméticay lógica

Unidadde

control

25-oct-05 24

Plan de la presentaciónPlan de la presentación

• El modelo de von Neuman•• Funcionamiento de la computadoraFuncionamiento de la computadora

–– Un primer programaUn primer programa

25-oct-05 25

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

25-oct-05 26

Instrucciones para efectuar la suma• CARGA <dirección>

– Copia el contenido del acumulador en la celda con la <dirección> indicada.

UCP30

Unidadaritméticay lógica

Unidadde

controlAcumulador

Ejem: CARGA 12

51 30 17 02 331011 12 13 14 1510

25-oct-05 27

Instrucciones para efectuar la suma• GUARDA <dirección>

– Lleva al acumulador el valor de la celda con la <dirección> especificada.

UCP30

Unidadaritméticay lógica

Unidadde

controlAcumulador

Ejem: GUARDA 14

20 30 21 30 222011 12 13 14 1510

25-oct-05 28

Instrucciones para efectuar la suma• SUMA <dirección>

– Suma al acumulador el contenido de la celda referida por <dirección>.

UCP30+21=51

Unidadaritméticay lógica

Unidadde

controlAcumulador

Ejem: SUMA 13

20 30 21 30 222011 12 13 14 1510

25-oct-05 29

Instrucciones para efectuar la suma• CARGA <dirección>

– Lleva al acumulador el valor de la celda con la <dirección> especificada.

• GUARDA <dirección>– Copia el contenido del acumulador en la celda con

la <dirección> indicada.• SUMA <dirección>

– Suma al acumulador el contenido de la celda referida por <dirección>.

• ALTO– Indica la terminación del proceso.

25-oct-05 30

Instrucciones 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 <dirección> 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.

25-oct-05 31

Instrucciones básicas de la máquina

170ALTO

233SUMA

202GUARDA

220CARGA

LongitudCódigo*Instrucción

*Estos códigos son asignados de manera arbitraria para nuestro ejemplo. Una UCP real tiene su propia codificación de instrucciones.

25-oct-05 32

Secuencia ordenada de instruccionesSuponemos que de alguna manera, en la celda 20 está el primer sumando y en la 21 el segundo sumando.

5 713 48 19 Para sumar 8+9?20 21 22

Datos del programa

Colocar el resultado en la celda 22GUARDA 220222Detener la ejecuciónALTO70

Ejecutar la sumaSUMA 213021

Coloca el primer sumando en el acumulador (i.e., el 8)

CARGA 202020ComentariosInstrucciónCódigo

25-oct-05 33

Programa fuentePrograma fuente

Colocar el resultado en la celda 22GUARDA 220222Detener la ejecuciónALTO70

Ejecutar la sumaSUMA 213021

Colocar el primer número en el acumulador

CARGA 202020ComentariosInstrucciónCódigo

Programa fuente

Programa escrito en lenguaje mnemónico, el cual está más cercano al lenguaje entendible por los humanos.

25-oct-05 34

Programa objetoPrograma objeto

Colocar el resultado en la celda 22GUARDA 220222Detener la ejecuciónALTO70

Ejecutar la sumaSUMA 213021

Colocar el primer número en el acumulador

CARGA 202020ComentariosInstrucciónCódigo

Programa objeto

Programa escrito en lenguaje máquina (ejecutable, binario), el cual entiende directamente la computadora.

25-oct-05 35

Cargar el programa objetoCargar 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 20 30 21 02 22 70 5 710 11 12 13 14 15 16 20 21 22

13 48 19

Programa objeto Datos del programa

25-oct-05 36

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

CPAcumulador

Unidadaritméticay lógica

Unidadde

control

25-oct-05 37

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

25-oct-05 38

Ciclo de ejecución de la UCPEstas 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

Decodificación

IV IIActualización

del CP

III

Ejecución

25-oct-05 39

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

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

10CP

25-oct-05 40

Pasos 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 Unidadde control

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

10CP

25-oct-05 41

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

Unidadde control

⇒ CP=11

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

10CP

11CP

Puesto que CARGA es de longitud dos, la unidad de control ajusta CP para que apunte al parámetro.

25-oct-05 42

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

Unidadde control

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

11CP

13Acumulador

25-oct-05 43

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

Unidadde control

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

12CP

13Acumulador

25-oct-05 44

Pasos en la ejecución de un programa

• 5. Se vuelve al paso I. Se leerá la celda CP=12, que contiene 30.

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

12CP

Lee 30

13Acumulador

Unidadde control

25-oct-05 45

Pasos en la ejecución de un programa

• 6. Se decodifica la instrucción (paso II), que es SUMA.

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

30 = SUMA(longitud 2)

Unidadde control

1312CP Acumulador

⇒ CP=13

13CP

25-oct-05 46

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

Unidadde control

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

13CP

13+4=17Acumulador

+4

25-oct-05 47

Pasos en la ejecución de un programa

• 8. Se ejecuta el paso IV nuevamente. El contador de programa se iguala a 14.

Unidadde control

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

14CP

17Acumulador

25-oct-05 48

Pasos en la ejecución de un programa

• 9. Se leerá la celda CP=14, que contiene el código 02 (paso I).

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

14CP

Lee 02

17Acumulador

Unidadde control

25-oct-05 49

Pasos en la ejecución de un programa

14CP

• 10. Se decodifica la instrucción (paso II), que es GUARDA.

20 20 30 21 02 22 70 13 410 11 12 13 14 15 16 20 21 22

17Acumulador

02 = GUARDA

15CP

⇒ CP=15(longitud 2)

Unidadde control

25-oct-05 50

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

20

Resultado dela sumaUnidad

de control

20 30 21 02 22 70 13 4 1711 12 13 14 1610 15

15CP

20 21

17Acumulador

22

25-oct-05 51

Pasos en la ejecución de un programa

• 12. Se ejecuta el paso IV nuevamente. El contador se iguala a 16.

Unidadde control

15CP

1520 30 21 02 22 70 13 4 172011 12 13 14 20 21 2210 16

16CP

17Acumulador

25-oct-05 52

Pasos en la ejecución de un programa

• 13. Se leerá la siguiente instrucción en la celda CP=16, que contiene 70 (paso I).

Unidadde control

Lee 70

20 30 21 02 22 70 13 4 172011 12 13 14 15 20 21 2210 16

16CP

17Acumulador

25-oct-05 53

Pasos en la ejecución de un programa

• 14. Se decodifica la instrucción (paso II), que es ALTO.

70 13 416 20 21 22

17Acumulador

17

70 = ALTO(longitud 1)

Unidadde control

⇒CP no se mueve

16CP

20 30 21 02 222011 12 13 14 1510

25-oct-05 54

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

20

Resultado dela sumaUnidad

de control

20 30 21 02 22 70 13 4 1710 11 12 13 14 15 16

14CP

20 21 2217

17Acumulador

25-oct-05 55

Modos de direccionamientoModos de direccionamiento• Existen dos modos de direccionamiento:1. 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.

2. Direccionamiento inmediato. El dato con el que se opera se especifica inmediantemente después del código de la instrucción.

25-oct-05 56

Modos de direccionamientoModos de direccionamientoEjemplo:

Dir. directo Dir. inmediatoSUMA 27 SUMA-i 27

X + YAcumulador

X + 27Acumulador

51 Y 17 0226 27 28 29

27

Suma al acumulador elnúmero 27

Suma al acumulador cualquier valor contenido en la celdacon la dirección 27

25-oct-05 57

Modos de direccionamientoModos 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).

25-oct-05 58

Nuevo diccionario de intruccionesNuevo diccionario de intruccionesDireccionamiento

directo

36MULT38DIV33RESTA30SUMA

70

0220

Código

ALTO

GUARDACARGAOperación

Direccionamiento inmediato

39DIV-i

37MULT-i

31SUMA-i

34RESTA-i

21Código

CARGA-iOperación

25-oct-05 59

Instrucciones de entrada y salidaInstrucciones 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.

25-oct-05 60

Instrucciones de comparaciónInstrucciones de comparación

• Para determinar si el valor x es mayor, menor o igual al valor y tenemos la siguientes instrucciones:

• COMP <dirección>

– Compara el contenido del acumulador con el valor de la celda con la dirección indicada.

• COMP-i <dato>

– Compara el contenido del acumulador con un número dado.

25-oct-05 61

El registro bandera de la UCPEl 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:

Acumulador

Unidadaritméticay lógica

Unidadde

control

CPBandera

Igual = Mayor que > Mayor o igual que >=Diferente < > Menor que < Menor o igual que <=

25-oct-05 62

Saltos condicionales e incondicionalesSaltos 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 retiradaen otro caso, indicar que no hay saldo disponible.

25-oct-05 63

Saltos condicionalesSaltos 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:

• BR> <dirección>– 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=, BR<>, BR<, BR>, BR<=, BR>=

25-oct-05 64

Ejemplo de salto condicionalEjemplo de salto condicional• Supongamos que tenemos un programa con una

secuencia de instrucciones A y otra secuencia B.

CP Cargar el valor de la celda 650

CP Comparar ac. con el valor 10

CP Si el valor del ac. es igual a 10, saltar a la celda 1301

CP El valor del acumuladorfue igual a 10

CP

Se ejecuta la secuencia B

650 10 1244124612481250

Carga 650

Comp-i 10

BR= 1301

1ra. instr. de A

1300 Última intr. de A1ra. Instr. de B

1400 Última intr. de B

1301

Secuencia de Intrucciones de A

Secuencia de Intrucciones de B

25-oct-05 65

Ejemplo de salto condicionalEjemplo de salto condicional• Supongamos que tenemos un programa con una

secuencia de instrucciones A y otra secuencia B.

CP Comparar ac. con el valor 10

CPCP

CP Cargar el valor de la celda 650

Si el valor del ac. es igual a 10, saltar a la celda 1301

CP

CP y también se ejecuta B

CP El valor del acumuladores diferente de 10

Se ejecuta la secuencia A

650 35 1244124612481250

Carga 650

Comp-i 10

BR= 1301

1ra. instr. de A

1300 Última intr. de A1ra. Instr. de B

1400 Última intr. de B

1301

Secuencia de Intrucciones de A

Secuencia de Intrucciones de B CP

CP

25-oct-05 66

Salto incondicionalSalto 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 <dirección>

– Brinca inmediatamente a la celda con la dirección indicada.

25-oct-05 67

Ejemplo de salto incondicionalEjemplo de salto incondicional• Supongamos que tenemos un programa con una

secuencia de instrucciones A y otra secuencia B.

650 35

Secuencia de Intrucciones de A

Secuencia de Intrucciones de B

Carga 650

Comp-i 10

BR= 1303

1ra. instr. de A

Última intr. de A

1ra. Instr. de B

Última intr. de B

BR 1403

1244124612481250

1300

1402

13031301

1403

CPCP

Si el valor del ac. es igual a 10, saltar a la celda 1301

CP

CP Salta al final de B

CP El valor del acumuladores diferente de 10

Se ejecuta la secuencia A

CP

CP

25-oct-05 68

Circuito de memoriaCircuito de memoria