Post on 24-Jan-2016
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
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.
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)
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.
Lenguaje de máquina MIPS
Unidad Central de Proceso
Lenguaje de assembler MIPS
Unidad Central de Proceso
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
Archivo Ejecutable
Archivo Fuente
Assembler
Archivo Fuente
Assembler
Archivo Objeto
Archivo Objeto
Archivo Fuente
Archivo Objeto
Assembler
Biblioteca
Vinculador
Unidad Central de Proceso
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)
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
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.
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
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
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
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
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
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
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
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
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
Unidad Central de ProcesoMAQUINAS DE CERO DIRECCIONES
LOAD BLOAD CLOAD DLOAD EMPYADDLOAD FLOAD GDIVSUBMPYSTORE A
Ejemplo: A= B*(C + D *E -F/G)
Tipos de operaciones
Transferencias de datos. Aritméticas. Lógicas. Conversión. Entrada/Salida. Control del sistema. Control de flujo.
Transferencia de datos Especificar:
Fuente. Destino. Cantidad de datos.
LD: transferencia de memoria a algun registro.
STORE: transferencia de algun registro a la memoria.
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).
Lógicas
Operaciones bit a bit. AND, OR, NOT.
Conversión Ejemplo: conversión de binario a
decimal. TR
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).
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
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.
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
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