Arq. Von Neumann

28
1 Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009 Departamento de Sistemas Informáticos Universidad de Castilla La Mancha Programación en Lenguaje Ensamblador. Práctica 1 Práctica 1. Introducción. Arquitectura Von Neumann. Formatos de Instrucción. Modos de direccionamiento 1. Introducción 2. Arquitectura Von Neumann: 2.1. Principios básicos de funcionamiento. 2.2. Fases de ejecución de instrucciones máquina. 3. Formatos de instrucción. 4. Modos de direccionamiento: 4.1. Implícito 4.2. Inmediato 4.3. Directo Absoluto 4.4. Indirecto 5. Ejercicios

Transcript of Arq. Von Neumann

Page 1: Arq. Von Neumann

1

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

Práctica 1. Introducción. Arquitectura VonNeumann. Formatos de Instrucción. Modos de direccionamiento

1. Introducción

2. Arquitectura Von Neumann:

2.1. Principios básicos de funcionamiento.

2.2. Fases de ejecución de instrucciones máquina.

3. Formatos de instrucción.

4. Modos de direccionamiento:

4.1. Implícito

4.2. Inmediato

4.3. Directo Absoluto

4.4. Indirecto

5. Ejercicios

Page 2: Arq. Von Neumann

2

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.1. IntroducciónConcepto de COMPUTADOR:

“Máquina electrónica que acepta datos de entrada, efectúa con ellos unas operaciones aritméticas y/o lógicas y produce resultados de salida, todo ello sin intervención de un operador humano y bajo el control de un programa previamente almacenado en el computador”

• Actualmente se habla de “computador electrónico digital”– “electrónico”: se basa en tecnología electrónica– “digital”: la información se representa con un sistema digital

de tipo binario

COMPUTADORENTRADAS SALIDAS

Datos de entrada

e instrucciones

Datos de salida

(resultados)

Page 3: Arq. Von Neumann

3

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

PROCESADOR CENTRAL (CPU)

1.2. Arquitectura Von Neumann

MEMORIA PRINCIPAL

(Datos e Instrucciones)

UNIDAD DE CONTROL

(UC)

Señales de control y de estado

MEMORIA SECUNDARIA

o MASIVA

Datos e instrucciones

ENTRADA

Datos e instrucciones

Instrucciones Datos

SALIDADatos

Resultados o datos de salidaUNIDAD

ARITMÉTICOLÓGICA

(ALU)

Page 4: Arq. Von Neumann

4

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.2.1. Principios Básicos de Funcionamiento• Programa: conjunto de instrucciones almacenadas en la MP

que se ejecutan secuencialmente (salvo saltos) y realizan una tarea específica– Cada instrucción se trae de la MP a la CPU, junto con los

operandos correspondientes• Esquema general de conexión CPU - MP

Memoria Principal

MAR.

PC

IR

MDRControl

C.P.U.

R0

R1

...

Rn

ALU

BusControl

BusDatos

Bus Direcciones Bus del

Sistema

Page 5: Arq. Von Neumann

5

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.2.1. Principios Básicos de Funcionamiento (II)• CPU

– UC– ALU– Registros

• Específicos– IR (Instruction Register, Registro de Instrucción): instrucción que actualmente se

está ejecutando– PC (Program Counter, Contador de Programa): dirección de la siguiente

instrucción que debe ejecutarse.– MAR (Memory Address Register, Registro de Direcciones de Memoria):

dirección de memoria a la que se está accediendo– MDR (Memory Data Register, Registro de Datos de Memoria): datos

leídos/escritos de/en memoria

• Generales: almacenamiento temporal de datos

• Buses: líneas para la comunicación entre las distintas unidades.– Bus del sistema: comunica CPU con MP

• Bus de direcciones: conecta MAR con MP• Bus de datos: conecta MDR con MP• Bus de control: gobierna (controla) la comunicación entre CPU y MP

Page 6: Arq. Von Neumann

6

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

Operación de lectura

• CPU– Poner dirección de

memoria a leer en MAR

– Activar RD

– Esperar READY

– Recoger el dato del MDR

– Desactivar RD

• MemoriaAnte una señal de RD

– Recoger dirección de memoria del bus de direcciones

– Decodificar dirección

– Copia palabra decodificada al bus de datos

– Activar señal READY

– Esperar desactivación de RD

– Desactivar READY

Memoria

Decod

Bus de direcciones

Bus de datos

WR

READY

MDR MAR

CPU

Unidad

de ControlRD

Memoria

Decod

Bus de direcciones

Bus de datos

WR

READY

MDR MARMAR

CPU

Unidad

de ControlRD

1.2.1. Principios Básicos de Funcionamiento (III)

Page 7: Arq. Von Neumann

7

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

Operación de escritura

• CPU– Poner dirección de memoria a

escribir en MAR

– Poner dato a escribir en MDR

– Activar WR

– Esperar READY

– Desactivar WR

• MemoriaAnte una señal de WR

– Recoger dirección de memoria del bus de direcciones

– Decodificar dirección

– Copia el contenido del bus de datos en la palabra decodificada

– Activar READY

– Esperar desactivación de WR

– Desactivar READY

Memoria

Decod

Bus de direcciones

Bus de datos

WR

READY

MDR MAR

CPU

Unidad

de ControlRD

Memoria

Decod

Bus de direcciones

Bus de datos

WR

READY

MDR MARMAR

CPU

Unidad

de ControlRD

1.2.1. Principios Básicos de Funcionamiento (IV)

Page 8: Arq. Von Neumann

8

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

MDR MAR

Memoria

Decod

Bus de direcciones

Bus de datos

CPU

Unidad

de Control

RDWR

0 1 0 1 0 1 1 1

0 1 0 1 0 1 1 1

0 0 1 1 0

Operación de Escritura en Memoria

Page 9: Arq. Von Neumann

9

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.2.2. Fases de la Ejecución de las Instrucciones Máquina

• Programa cargador:– introduce el programa a ejecutar en posiciones consecutivas de

memoria principal (forma parte del S.O.)– Inicializa el PC con la dirección de la primera instrucción del programa

• Una vez cargado el programa, el S.O. indica al computador que pase el control a la 1ª instrucción del programa cargado

• A partir de entonces, la CPU repite las siguientes fases:– lleva de MP a la CPU la instrucción que corresponde a la dirección

contenida en PC y lo incrementa (CAPTACIÓN O BÚSQUEDA)– la CPU recibe la instrucción, la analiza (decodifica) y, en caso

necesario, lee los operandos necesarios desde memoria (DECODIFICACIÓN)

– la UC envía las señales de control necesarias para realizar las operaciones que implica la instrucción (EJECUCIÓN)

– se vuelve al primer paso (ejecución de la siguiente instrucción)

Page 10: Arq. Von Neumann

10

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

• Fase de Captación o Búsqueda de Instrucción:

– MAR ← PC, RD– PC ← PC+1, esperar a memoria– RI ← MDR ← M(MAR)

• Fase de Decodificación:

– Decodifica código de operación de la instrucción

– Rn ← OPERANDO

• Fase de Ejecución:

– Genera señales de control necesarias– Almacenamiento de resultados

1.2.2. Fases de la Ejecución de las Instrucciones Máquina (II)

Page 11: Arq. Von Neumann

11

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.2.2. Fases de la Ejecución de las Instrucciones Máquina (III)

Ejemplo de ejecución de instrucciones:

Supongamos una computadora con el siguiente lenguaje máquina:

CCóódigodigo InstrucciInstruccióónn DescripciDescripcióónn

ENT M(m) 000mmmmm memoria ← teclado

SAL M(m) 001mmmmm pantalla ← memoria

CAR R0,M(m) 010mmmmm Registro ← memoria

ALM M(m),R0 011mmmmm memoria ← Registro

MOV Rx,Ry 1000xxyy Rx ← Ry

SUM Rx,Ry 1010xxyy Rx ← Rx+Ry

Las instrucciones tienen un tamaño de 8 bits y la memoria de esta computadora tiene 32 palabras de 8 bits

Page 12: Arq. Von Neumann

12

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

ENT M(29)

ENT M(30)

CAR R0,M(29)

MOV R1,R0

CAR R0,M(30)

SUM R0,R1

ALM M(31),R0

SAL M(31)

ENT M(29) 00011101

ENT M(30) 00011110

CAR R0,M(29) 01011101

MOV R1,R0 10000100

CAR R0,M(30) 01011110

SUM R0,R1 10100001

ALM M(31),R0 01111111

SAL M(31) 00111111

1.2.2. Fases de la Ejecución de las Instrucciones Máquina (IV)

Programa que sume 2 números tomados del teclado y saque el resultado por pantalla.

ENT M(m)

SAL M(m)

CAR R0,M(m)

ALM M(m),R0

MOV Rx,Ry

SUM Rx,Ry

Page 13: Arq. Von Neumann

13

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.3. Formatos de Instrucción (I)

• Formato de instrucción:– Es la representación de la instrucción.– Especifica el significado de cada uno de los bits que

constituyen la instrucción.– La longitud del formato es el número de bits que la

componen.

• Información que debe contener una instrucción:– Operación a realizar.– Dirección de los operandos.– Dirección del resultado.– Dirección de la siguiente instrucción.– Modo de representación de los operandos.

Page 14: Arq. Von Neumann

14

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.3. Formatos de Instrucción (II)

• Las instrucciones se dividen en campos (cadenas de bits contiguos)

• Tipos básicos de campos:– Código de operación: indica la operación a realizar– Campo de operandos (puede no existir o dividirse en

subcampos): contiene los operandos o las direcciones de los operandos

• Formatos típicos de instrucción:

Código de operación Operandos

n bits m bits

Código de operación Instrucción sin dirección

Código de operación

Instrucción de 1 dirección

Código de operación

Instrucción de 2 direcciones

Dirección

Dir. 1 Dir. 2

Page 15: Arq. Von Neumann

15

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.3.1. Características del Formato de Instrucción

• Un computador tiene uno o unos pocos formatos de instrucción.• Los formatos son sistemáticos. El primer campo suele ser el código de

operación.• Las instrucciones cortas son preferibles a las largas (ahorro de memoria

y rapidez de ejecución). Para ello se usan técnicas de direccionamiento implícito.– sólo las instrucciones de bifurcación tienen campo de instrucción

siguiente;– no se suele especificar la representación de los operandos;– el resultado suele coincidir con el primer operando.

• Los tamaños de los formatos encajan en la palabra de la máquina• Cuando el computador tiene varios formatos, el código de operación

distingue entre ellos.• Los tamaños de los campos que expresan direcciones deben

corresponder con los mapas direccionados.

Page 16: Arq. Von Neumann

16

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4. Modos de direccionamiento

1.4.1. Direccionamiento Implícito

1.4.2. Direccionamiento Inmediato

1.4.3. Direccionamiento Directo

1.4.4. Direccionamiento Indirecto

Page 17: Arq. Von Neumann

17

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4. Modos de Direccionamiento (I)

• Ciclo de instrucción: secuencia de operaciones que lleva a cabo un procesador cuando ejecuta una instrucción.

• Una de las actividades que se llevan a cabo durante un ciclo de instrucción consiste en determinar la dirección de los operandos que intervienen en dicha instrucción.

• Modos de direccionamiento: formas distintas especifican el lugar concreto donde se encuentran esos operandos.

• ¿Por qué no incluye la instrucción directamente el operando o su dirección?– Ahorro de espacio.– Estructuras de datos (listas, vectores, matrices, ...).– Código reubicable: puede ejecutarse en cualquier

zona de la memoria.

Page 18: Arq. Von Neumann

18

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.1. Direccionamiento Implícito

• El operando se encuentra en un registro que estáimplícitamente especificado en el propio código de operación– Por ejemplo instrucciones de desplazamiento o rotación de

los bits del acumulador– Ventaja: no ocupa espacio en la instrucción– Inconveniente: restringe la aplicación de la operación

• Ejemplo (i8085):– Rotación a la izquierda del acumulador con intervención del

bit de acarreo (el código del acumulador no aparece explícitamente en la instrucción)

RAL:0001 0111

código operación

Page 19: Arq. Von Neumann

19

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.2. Direccionamiento Inmediato

• El operando está contenido dentro de la propia instrucción– Ventaja: no requiere posteriores referencias a memoria.– Inconveniente: el rango del operando está limitado por el

tamaño del campo de dirección.• Ejemplo (i8085): ADI O3H 1100 0110

código operación operando

0000 0011

• Hay máquinas que permiten distintos tamaños de operandosinmediatos

ALU

A

OPCOD. OP

MEMORIA

INSTRUCCIÓNPC

Page 20: Arq. Von Neumann

20

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.3. Direccionamiento Directo

• Existen dos tipos:

1.4.3.1. Direccionamiento directo ABSOLUTO1.4.3.2. Direccionamiento directo RELATIVO

Page 21: Arq. Von Neumann

21

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.3.1 Direccionamiento Directo Absoluto (I)• La instrucción contiene la dirección del operando• Podemos tener los siguientes casos:

– Registro: el campo de dirección contiene el identificador del registro donde se encuentra el operando.

– Memoria: el campo de dirección contiene la dirección completa de M.P. donde se encuentra el operando.

• Ejemplo (i8085): Direccionamiento directo a registro

10010 001

A � A - C

código del registro

C

SUB C

Page 22: Arq. Von Neumann

22

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.3. Direccionamiento Directo Absoluto (II)

• Ejemplo (i8085): Direccionamiento directo a memoria

LDA 1000

ALU

A

1000 COD. OP.

MEMORIA

8

OPERANDO 1000

Page 23: Arq. Von Neumann

23

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.3. Direccionamiento Directo Relativo

• La instrucción no contiene la dirección del operando, sino un desplazamiento D sobre una dirección marcada por un puntero; la dirección del operando se calcula sumando D al puntero de referencia– Ventaja: necesita menos bits que el anterior modo– Inconveniente: necesita realizar una suma

MEMORIA

P-2d-1

C. OP D +

P+2d-1-1

0

2m-1

Zona de direccionamiento

Puntero

P

Page 24: Arq. Von Neumann

24

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.4.5. Direccionamiento Indirecto

• La instrucción indica la palabra de memoria o el registro que contiene la dirección del operando

→ requiere un acceso adicional a M.P.

• Se pueden plantear indirecciones de más de un nivel.

DIR. OPERANDO

INSTRUCCIÓN

COD. OP. DIR. MEM.

MEMORIA

OPERANDO

Page 25: Arq. Von Neumann

25

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.5. Ejercicios (I)

1.1. Considera un computador con una Memoria Principal de 64K palabras. ¿Qué número de bits tendrá su MAR? ¿Qué número de bits tendrá su PC?

1.2. Sea una memoria de 32 Mbits que se accede en palabras de 16 bits. a. ¿Cuántos bits de direccionamiento son necesarios?b. ¿Y si la memoria fuese de 32 Mbytes?

1.3. ¿Cuál de las siguientes memorias no es posible?a. 10 bits de dirección, 1024 palabras de memoria, 8 bits por palabra.b. 10 bits de dirección, 10 palabras de memoria, 1042 bits por palabra.c. 9 bits de dirección, 1024 palabras de memoria, 10 bits por palabra.d. 1024 bits de dirección, 10 palabras de memoria, 10 bits por palabra.

Page 26: Arq. Von Neumann

26

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.5. Ejercicios (II)

1.4. Cierta computadora se puede equipar con 262.144 bytes de memoria principal. ¿Por quéescoge el fabricante un número tan peculiar, en lugar de uno más fácil de recordar, como por ejemplo 250.000?

1.5. Tenemos un ordenador con un bus de direcciones de 24 bits. La memoria principal tiene un capacidad de 2Mbytes, siendo el tamaño de palabra de memoria de 2 bytes. Indica si es posible ampliar la memoria de este ordenador a 256 Mbits.

Page 27: Arq. Von Neumann

27

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.5. Ejercicios (III)

1.6. Se denomina Unidad Central de Proceso al conjunto de:

a. Memoria principal, Unidad de Control y unidades de entrada/salida.

b. Unidad de Control, registros y Unidad Aritmético-Lógica.

c. Unidad de Control, Unidad Aritmético-Lógica y buses.

d. Unidad de Control, Unidad Aritmético-Lógica, IR, PC, MDR, MAR.

Page 28: Arq. Von Neumann

28

Escuela de Ingenieros Industriales de Albacete. Informática Industrial 2008-2009Departamento de Sistemas Informáticos

Universidad de Castilla La Mancha

Programación en Lenguaje Ensamblador. Práctica 1

1.5. Ejercicios (IV)

1.7. Un computador soporta dos modos de direccionamiento diferentes: directo e indirecto. El formato de las instrucciones es el siguiente:

–Si el bit de direccionamiento es 1 se usará el modo de direccionamiento directo y si es 0 se usará el modo de direccionamiento indirecto.

–El código de operación correspondiente a la instrucción para sumar al acumulador un dato de la memoria, dejando el resultado en el acumulador, es 1100. –La memoria contiene los siguientes datos:

Antes de ejecutar la instrucción, el contenido del acumulador es 2B58H. ¿Cuál será el contenido del acumulador después de ejecutar las siguientes instrucciones?

a. 1100 1 0110100

b. 1100 0 0110101

Código de operación Bit de direccionamiento Dirección

4 bits 1 bit 7 bits

ContenidoDirección

33H34H

36H35H

34H37H

35H36H