introduccion - una máquina puede resolver problemas ejecutando instrucciones sencillas - programa:...

35
INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa : secuencia de instrucciones Instrucciones Básicas: Sumar dos números Comprobar si un número es cero Acceder a la memoria Conjunto de instrucciones primitivas Unidad Central de Proceso

Upload: tomas-morales-cuenca

Post on 24-Jan-2016

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

INTRODUCCION

- Una máquina puede resolver problemas

ejecutando instrucciones sencillas

- Programa: secuencia de instrucciones

Instrucciones Básicas:•Sumar dos números•Comprobar si un número es cero•Acceder a la memoria

Conjunto de instrucciones primitivas

Lenguaje Máquina

Unidad Central de Proceso

Page 2: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de Proceso

Máquina virtual M2, con lenguaje de máquina L2

Nivel 2

Los programas en L2, son interpretados por programas que se ejecutan en M1, o son traducidos a L1.

Máquina virtual Mn, con lenguaje de máquina Ln

Nivel nLos programas en Ln, son interpretados por un programa que se ejecuta en un nivel inferior, o son traducidos al lenguaje de una máquina de nivel inferior.

Máquina virtual M3, con lenguaje de máquina L3

Nivel 3

Los programas en L3, son interpretados por programas que se ejecutan en M2 o M1, o son traducidos a L2 oL1.

Máquina virtual M4, con lenguaje de máquina L4

Nivel 4

Máquina real M1, con lenguaje de máquina L1

Nivel 1Los programas en L1, pueden ser ejecutados directamente por los circuitos electrónicos.

Page 3: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de Proceso

Nivel de máquina del sistema operativo

Nivel 3

Nivel de lenguaje ensamblador

Nivel 4

Nivel de lenguajes orientados a problemas

Nivel 5

Nivel de máquina del sistema convencional

Nivel 2

Nivel de microprogramación

Nivel 1

Nivel de lógica digital

Nivel 0

Traducción (compilador)

Los microprogramas son ejecutados directamente por el hardware

Traducción (ensamblador)

Interpretación parcial

(sistema operativo)

Interpretación (microprograma)

Page 4: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de Proceso

Ejemplos de diferentes tipos de lenguajes basados en :

Una rutina que calcula e imprime la suma de los cuadrados de los enteros entre 0 y 100.

Page 5: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Lenguaje de máquina MIPS

Unidad Central de Proceso

Page 6: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Lenguaje de assembler MIPS

Unidad Central de Proceso

Page 7: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Lenguaje alto nivel ( “C” )

#include <stdio.h>

int main( int argc, char *argv[]){ int i; int sum = 0; for (i=0; i<100; i+1) sum = sum + i * i ; printf("Sum 0 .. 100 is %d\n",sum);}

Unidad Central de Proceso

Page 8: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Archivo Ejecutable

Archivo Fuente

Assembler

Archivo Fuente

Assembler

Archivo Objeto

Archivo Objeto

Archivo Fuente

Archivo Objeto

Assembler

Biblioteca

Vinculador

Unidad Central de Proceso

Page 9: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoORGANIZACIÓN BASICA DE COMPUTADORAS

Procesador (CPU)

Sumar dos números

Comprobar si un número es cero

Acceder a la memoria

Funciones

Unidad de Control

ALU Unidad Aritmética y

Lógica

Registros

......

Extraer instrucciones de la memoria

principal y determinar su tipo

Realizar las operaciones aritméticas y

lógicas Memoria de alta velocidad utilizada para almacenar resultados intermedios

y cierta información de control

Registro de Instrucción (RI)

Contador de Programa (CP)

Page 10: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoORGANIZACIÓN BASICA DE COMPUTADORAS

Memoria

Procesador (CPU)

Unidad de Control

ALU Unidad Aritmética y

Lógica

Registros

...... Disco Impresora

Bus

Page 11: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoEJECUCION DE LAS INSTRUCCIONES

Búsqueda dela Instrucción

Decodificación dela Instrucción

Búsqueda deOperandos

Ejecución dela Instrucción

Almacenamiento del Resultado

Próxima Instrucción

Se extrae de la memoria la siguiente instrucción y se la lleva al registro de Insrucción (RI).

Se determina el tipo de instrucción y los operandos que tiene.

Se busca el/los operandos y se los carga en los registros internos de la CPU.

Se ejecuta la operación.

Se almacena el resultado en el lugar apropiado.

Se pasa a la siguiente instrucción.

Page 12: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoEJECUCION DE LAS INSTRUCCIONES

Búsqueda dela Instrucción

Decodificación dela Instrucción

Búsqueda deOperandos

Ejecución dela Instrucción

Almacenamiento del Resultado

Próxima Instrucción

¿ Que debe especificarse ?• El formato o codificación de la instrucción

¿Cómo es decodificada?• Ubicación de los Operando y el Resultado

¿Qué otro lugar aparte de la memoria? ¿Cuántos operandos explícitos? ¿Cómo se localizan en memoria? ¿Cuál puede o no estar en memoria?

• Tipos de Datos y Tamaños

• Operaciones ¿Cómo son soportadas?

• Instrucción Sucesora Jumps, conditions, branches

Page 13: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoORGANIZACIÓN DE UN PROCESADOR 68000

EAR 32

TEMP 32

PC 32

CC

RegistrosGenerales

IR 16

A L U

Memoria e Interfase E / S

Bus Interno32x32

UnidadDe

Control

Page 14: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoORGANIZACIÓN DE LA CPU

A L U

A + B

A + B

A B

ADD R0,A,BR0

R1

R2

R5

R6

R3

R4

R7

Registros

Registro de salida de la ALU

Registro de entrada de la ALU

Camino de Datos en una máquina clásica de Von Neuman

A

B

Page 15: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoDIRECCIONAMIENTO SIMBOLICO

- Si queremos sumar dos números y almacenar su resultado, por lo general ocupan posiciones de memoria.

Lenguaje de Alto Nivel

X = Y + Z

10571 10732 27501

Notación: (10732) El contenido de 10732

(10732) + (27501) se almacena en (10571)

X = Y + Z

- Es conveniente independizar las variables de las posiciones de memoria:

(Y) + (Z) se almacena en (X)

1.- Contenido2.- Dirección

Page 16: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoREGISTROS

- Existen diferentes tipo de registros de acuerdo a su uso:Generales: no tienen un propósito específico

Acumulador: las operaciones se realizan sobre este registro.

Bandera: contiene información de control y de estado.

Datos: para manejar datos

Direcciones: para manejar direcciones. PC - program counter SP - stack pointer

Depende de la Arquitectura

Page 17: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoMAQUINAS DE TRES DIRECCIONES

- La operación X = Y + Z se le puede indicar a la CPU como una instrucción ADD y las direcciones X, Y, Z.

Ejemplo: A= B*(C + D *E -F/G)

ADD X,Y,Z significa sumar Y con Z y guardar en X

MPY T1,D, E

ADD T1,C, T1

DIV T2,F, G

SUB T1, T1,T2

MPY A,T1,B

Page 18: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoMAQUINAS DE DOS DIRECCIONES

- La operación X = X + Y se le puede indicar a la CPU como una instrucción ADD y las direcciones X, Y.

Ejemplo: A= B*(C + D *E -F/G)

ADD X,Y significa sumar X con Y y guardar en X

MPY D, E

DIV F, G

ADD D, C

SUB D, F

MOVE A, B

MPY A, D

MOVE A, DMPY A, EMOVE T1, FDIV T1, GSUB A, T1ADD A, CMPY A, B

Page 19: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoMAQUINAS DE UNA DIRECCION

- Para este tipo de máquinas se requiere de un registro Acumulador (AC).

Ejemplo: A= B*(C + D *E -F/G)

SUB A significa AC - A y guardar en AC

LOAD FDIV GSTORE T1LOAD DMPY EADD CSUB T1MPY BSTORE A

Page 20: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoMAQUINAS DE CERO DIRECCIONES

- Para este tipo de máquinas se requiere de una Pila de

registros. El registro del tope se denomina “Top Level”

(TL), al segundo “Secon Level” (SL) y así. Cada

registro contiene una palabra y se opera con los dos

registros del tope, almacena el resultado en SL y

descarta el TL.

LOAD A PUSH (A) en el tope de la Pila

STORE A POP (TL) y lo almacena en (A)

ADD (SL) + (TL) y guarda en (SL); POP

SUB (SL) - (TL) y guarda en (SL); POP

MPY (SL) * (TL) y guarda en (SL); POP

STORE (SL) / (TL) y guarda en (SL); POP

Page 21: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Unidad Central de ProcesoMAQUINAS DE CERO DIRECCIONES

LOAD BLOAD CLOAD DLOAD EMPYADDLOAD FLOAD GDIVSUBMPYSTORE A

Ejemplo: A= B*(C + D *E -F/G)

Page 22: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Tipos de operaciones

Transferencias de datos. Aritméticas. Lógicas. Conversión. Entrada/Salida. Control del sistema. Control de flujo.

Page 23: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Transferencia de datos Especificar:

Fuente. Destino. Cantidad de datos.

LD: transferencia de memoria a algun registro.

STORE: transferencia de algun registro a la memoria.

Page 24: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Aritméticas Add (sumar), Sub (restar), Mpy

(multiplicar), Div (dividir). Números enteros con signo. Puede incluir:

Increment: incrementa en 1 el operando (a++).

Decrement: decrementa en 1 el operando (a--).

Negate: cambia el signo del operador (-a).

Page 25: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Lógicas

Operaciones bit a bit. AND, OR, NOT.

Page 26: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Conversión Ejemplo: conversión de binario a

decimal. TR

Page 27: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Entrada/Salida Pueden ser instrucciones

específicas. Se pueden realizar utilizando

instrucciones de movimiento de datos (asignadas en memoria).

Se pueden realizadar a través de un controlador aparte (DMA).

Page 28: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Control de flujo Bifurcación:

Ejemplo: saltar a la posición x, si el resultado es 0. Salto implícito:

Ejemplo: incrementar y saltar, si es cero: ISZ Registro 1 Saltar xxxx ADD A cmp x,y : compara x con y. no afecta ningun

operando pero si a bit de control Llamada a procedimiento. CALL, JMP

Page 29: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar
Page 30: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar
Page 31: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar
Page 32: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar
Page 33: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Otras instrucciones condicionales ampliamente utilizadas CMP: Sirve para comparar. Internamente es una

resta entre los 2 operandos que se comparan JE: éste es un salto que se ejecuta cuando la

comparación anterior dio como resultado que los 2 operandos son iguales.

JNE: Salta si no es igual. JG: Salta si es mayor. JGE: Salta si es mayor o igual. JL: Salta si es menor. JLE: Salta si es menor o igual. JMP: Salta siempre.

Page 34: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Realice el codigo assembler para la siguiente expresion, suponiendo las siguientes direcciones:

Num1 [6000], num2 [4000], num3[4502], num4[4607] La respuesta debe quedar en la direccion [8000]

A =

(Num1+num2)*(num3+num4)

(num3*num4 + num1)Si num1 > num2

(Num2-num1)/(num3+num4)

(num3*num4 + num1)Si num2 >= num1

Page 35: INTRODUCCION - Una máquina puede resolver problemas ejecutando instrucciones sencillas - Programa: secuencia de instrucciones Instrucciones Básicas: Sumar

Para el siguiente pseudocodigo, escriba su correspondiente assembler:

Int a, b;A=5;B=10;While a<=b do

A=a+1B=b-1

End while