direccionamiento-de

Download Report

Transcript direccionamiento-de

Unidad Central de Proceso
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
Nivel n
Máquina virtual Mn, con
lenguaje de máquina Ln
Nivel 4
Máquina virtual M4, con
lenguaje de máquina L4
Nivel 3
Máquina virtual M3, con
lenguaje de máquina L3
Nivel 2
Máquina virtual M2, con
lenguaje de máquina L2
Nivel 1
Máquina real M1, con
lenguaje de máquina L1
Los 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.
Los programas en L3, son
interpretados por programas
que se ejecutan en M2 o M1,
o son traducidos a L2 oL1.
Los programas en L2, son
interpretados por programas
que se ejecutan en M1, o son
traducidos a L1.
Los programas en L1, pueden
ser ejecutados directamente
por los circuitos electrónicos.
Unidad Central de Proceso
Nivel 5
Nivel de lenguajes
orientados a problemas
Traducción (compilador)
Nivel 4
Nivel de lenguaje
ensamblador
Traducción (ensamblador)
Nivel 3
Nivel de máquina del
sistema operativo
Interpretación parcial
Nivel 2
Nivel de máquina del
sistema convencional
(sistema operativo)
Interpretación
(microprograma)
Nivel 1
Nivel 0
Nivel de
microprogramación
Nivel de lógica
digital
Los microprogramas son
ejecutados directamente por
el hardware
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.
Unidad Central de Proceso
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 Fuente
B
i
b
l
i
o
t
e
c
a
Archivo Fuente
Archivo Fuente
Assembler
Assembler
Assembler
Archivo
Objeto
Archivo
Objeto
Archivo
Objeto
Vinculador
Archivo Ejecutable
Unidad Central de Proceso
ORGANIZACIÓN BASICA DE COMPUTADORAS
Procesador
(CPU)
Unidad de
Control
ALU Unidad
Aritmética y
Lógica
Registros
...
...
Funciones
Sumar dos números
Comprobar si un número es cero
Acceder a la memoria
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
Contador de Programa (CP)
Registro de Instrucción (RI)
Unidad Central de Proceso
ORGANIZACIÓN BASICA DE COMPUTADORAS
Procesador
(CPU)
Unidad de
Control
ALU Unidad
Aritmética y
Lógica
Registros
...
...
Memoria
Disco
Impresora
Bus
Unidad Central de Proceso
EJECUCION DE LAS INSTRUCCIONES
Búsqueda de
la Instrucción
Se extrae de la memoria la siguiente instrucción y se la
lleva al registro de Insrucción (RI).
Decodificación de
la Instrucción
Se determina el tipo de instrucción y los operandos que
tiene.
Búsqueda de
Operandos
Se busca el/los operandos y se los carga en los registros
internos de la CPU.
Ejecución de
la Instrucción
Se ejecuta la operación.
Almacenamiento
del Resultado
Próxima
Instrucción
Se almacena el resultado en el lugar apropiado.
Se pasa a la siguiente instrucción.
Unidad Central de Proceso
EJECUCION DE LAS INSTRUCCIONES
Búsqueda de
la Instrucción
Decodificación de
la Instrucción
Búsqueda de
Operandos
Ejecución de
la 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 Proceso
ORGANIZACIÓN DE UN PROCESADOR 68000
PC
EAR
32
32
Memoria
e
Interfase
Bus Interno
32x32
E/S
IR
Registros
Generales
16
Unidad
De
Control
TEMP
ALU
32
CC
Unidad Central de Proceso
ORGANIZACIÓN DE LA CPU
A+B
R0
ADD R0,A,B
R1
R2
A
R3
R4
B
Registros
R5
R6
R7
A
B
Registro de entrada
de la ALU
ALU
A+B
Registro de salida de
la ALU
Camino de Datos en una máquina clásica de Von Neuman
Unidad Central de Proceso
DIRECCIONAMIENTO 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
Notación: (10732)
10732
27501
El contenido de 10732
X=Y+Z
1.- Contenido
2.- Dirección
(10732) + (27501) se almacena en (10571)
- Es conveniente independizar las variables de las
posiciones de memoria:
(Y) + (Z) se almacena en (X)
Unidad Central de Proceso
REGISTROS
- 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 Proceso
MAQUINAS 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.
ADD X,Y,Z significa sumar Y con Z y guardar en X
Ejemplo:
A= B*(C + D *E -F/G)
MPY
ADD
DIV
SUB
MPY
T1,D, E
T1,C, T1
T2,F, G
T1, T1,T2
A,T1,B
Unidad Central de Proceso
MAQUINAS 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.
ADD X,Y significa sumar X con Y y guardar en X
Ejemplo:
MPY
DIV
ADD
SUB
MOVE
MPY
A= B*(C + D *E -F/G)
D, E
F, G
D, C
D, F
A, B
A, D
MOVE
MPY
MOVE
DIV
SUB
ADD
MPY
A, D
A, E
T1, F
T1, G
A, T1
A, C
A, B
Unidad Central de Proceso
MAQUINAS DE UNA DIRECCION
- Para este tipo de máquinas se requiere de un registro
Acumulador (AC).
SUB A significa AC - A y guardar en AC
Ejemplo:
A= B*(C + D *E -F/G)
LOAD
F
DIV
G
STORE T1
LOAD
D
MPY
E
ADD
C
SUB
T1
MPY
B
STORE A
Unidad Central de Proceso
MAQUINAS 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 Proceso
MAQUINAS DE CERO DIRECCIONES
Ejemplo:
A= B*(C + D *E -F/G)
LOAD
LOAD
LOAD
LOAD
MPY
ADD
LOAD
LOAD
DIV
SUB
MPY
STORE
B
C
D
E
F
G
A
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]
(Num1+num2)*(num3+num4)
Si num1 > num2
(num3*num4 + num1)
A=
(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+1
B=b-1
End while