Upload
trankhanh
View
215
Download
0
Embed Size (px)
Citation preview
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