22
  Arquitectura Von Newman Facultad de Ingeniería Universidad Nacional Autónoma de México  Ing. Gabriel Castillo Hernández

Arquitectura Von Newman

Embed Size (px)

Citation preview

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 1/21

 

Arquitectura Von Newman

Facultad de IngenieríaUniversidad Nacional Autónoma de México

 

Ing. Gabriel Castillo Hernández

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 2/21

 

Funcionamiento de una computadora

El Procesador Ideal

El objetivo de este capítulo es presentar el funcionamiento general de una computadoraconstituida por una Unidad Central de Proceso (CPU) y su memoria principal . Laarquitectura y operación se presenta con base en una computadora idealizada (basadaen la arquitectura propuesta por Von Newman) que denominaremos Procesador Ideal .

Arquitectura mínima de una computadora

Los componentes más elementales de una computadora son:

La unidad central de proceso. La tarea principal de la unidad central de

proceso (o CPU por sus siglas en inglés) está encargada de la recuperación,

interpretación y ejecución de las instrucciones de un programa. Dichas

instrucciones se encuentran almacenadas en la memoria principal (o

simplemente memoria) de la computadora.

La memoria principal. Es un arreglo consecutivo de celdas, cada celda

tiene la capacidad de almacenar un número de dígitos binarios determinado

(datos o instrucciones); además, cada celda es identificada mediante un

identificador único denominado dirección de la celda de memoria. En la memoria

principal se almacenan tanto datos como los programas que operan sobre esos

datos.

Canal de comunicación. Un canal de comunicación (o Bus) es

básicamente un conjunto de líneas utilizadas para la transmisión de señales

eléctricas, a menudo dichas señales representan valores binarios. Es importante

resaltar el hecho de que un canal de comunicación es incapaz de retener 

información (en su expresión más sencilla un canal de comunicación es un

conjunto de cables de cobre). En una computadora podemos distinguir los

siguientes tipos de canales de comunicación:

1) Bus de datos. Utilizado para la transmisión de datos entre las celdas de

memoria y el procesador, por este viaja la información que almacenada en las

celdas o la que se desea almacenar en ellas, este hecho implica que el Bus de

datos es bidireccional (las señales –datos- viajan en ambos sentidos).

2) Bus de direcciones. Utilizado por el CPU para seleccionar la celda que

desea utilizar, es decir permite comunicar la dirección de la celda. Por su

naturaleza este Bus es unidireccional.

3) Bus de control. Este canal de comunicación es empleado para transmitir 

señales de control desde el procesador y hacia el procesador. Señales típicas

son la de selección de memoria, señales y la de lectura y/o escritura de memoria.

La figura 1 muestra el esquema arriba descrito.

 

Capítul

o

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 3/21

Un análisis más detallado del CPU nos permite identificar los siguientes componentes:

1) Registros asociados al manejo de la memoria:

Registro de dirección de memoria. El registro de dirección de memoria

(o MAR Memory Address Register ) es el registro empleado por el CPU para

polarizar el bus de direcciones. Cada vez que el CPU necesita utilizar la memoria

colocará en el MAR la dirección de la celda a emplear (ya sea para lectura o para

escritura).

Registro de retención de memoria. El registro de retención de memoria

(o MBR Memory Buffer Register) tiene dos funciones básicas:

(a) Durante la lectura de la memoria debe censar las líneas del Bus de datos y

retener dichos valores. Previamente la celda de la cual se está recuperando

la información ha colocado su información en el Bus de datos y lo mantienesin cambio por unos instantes.

(b) Durante la escritura a una celda de memoria proporciona al Bus de datos el

valor que el CPU desea colocar en memoria, manteniendo estables las

señales por un periodo de tiempo.

2) Registros asociados a la ejecución de una instrucción:

Registros de instrucción. Recordemos que en la memoria se encuentra

almacenado el programa que deseamos ejecutar, por lo que es necesario que el

CPU tome cada una de las instrucciones del programa y la traslade dentro de él,

para ello emplea el MAR (para especificar la dirección donde se encuentra lainstrucción) y el MBR (para recibir el código de la instrucción), sin embargo, una

vez que el MBR ha recibido la instrucción debe de trasladarse dicho valor a un

2

...01n

Celda de memoria

0

1

2

.

.

.

3

4

.

.

.

m

m-1

Dirección de memoria

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 4/21

lugar adecuado para su posterior interpretación. El registro de instrucción (o IR

Instruction Register ) es utilizado para este fin.

Registros de propósito general. Las instrucciones que el procesador 

ejecuta, básicamente modifican datos que se encuentra almacenados en la

memoria. Al igual que las instrucciones, es necesario que dichos datos sean

llevados al interior del CPU, esta labor es responsabilidad del programador. Paracumplir dicha tarea el programador debe hacer uso de registros de

almacenamiento temporal y que por las características propias del CPU son

limitados en número, a estos registros se les conoce como registros de propósito

general.

3) Otros elementos:

Unidad de control. La unidad de control (o CU Control Unit ) es un

subsistema encargado de llevar a cabo el control de todas las operaciones del

CPU.

Unidad aritmética y lógica. La unidad aritmética y lógica (o ALU

 Arithmetic and Logic Unit ) es un subsistema capaz de ejecutar operaciones

aritméticas (sumas, restas, etc.) y lógicas (comparaciones, conjunciones,

disyunciones, etc.)

Registro de Banderas. El registro de banderas (o Flags) es un registro

especial cuyo contenido es modificado principalmente por la ALU para reflejar el

resultado de la última operación realizada. A menudo es empleado también para

reflejar estados especiales del procesador.

Canales de comunicación internos. Dentro del CPU existen canales de

comunicación que permiten transferir información de un registro a otro o de un

registro a la ALU, sin embargo y para facilitar el entendimiento de la arquitectura

no se presentan y tampoco se detallan en esta exposición, baste saber que es

posible comunicar información internamente.

Conjunto de Instrucciones. Todo procesador es capaz de ejecutar un

número finito de operaciones, a menudo este conjunto de instrucciones (o

Instruction Set ) no excede el ciento y, generalmente, el nombre de las

instrucciones, su operación e interpretación dependen de cada procesador en

particular.

La figura 2 muestra el esquema completo de la arquitectura mínima de una computadora.

3

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 5/21

Esquemas de direccionamiento

Un programa de computadora es básicamente un conjunto de instrucciones. Para que unprogramador pueda escribir dichas instrucciones es necesario que respete un conjunto dereglas, como es natural, estas reglas han evolucionado con el avance de la tecnología.

 A continuación se realizará una revisión de dicha evolución(sin pretender ser riguroso niexhaustivo). Para ello utilizaremos como modelo una de las instrucciones más sencillas: lasuma de dos variables, colocando el resultado en una tercera. (Por ejemplo A,B y R).Esta revisión nos permitirá enriquecer la arquitectura mínima de una computadora, encada esquema se sugerirán nuevas estructuras y se establecerá cómo debe realizarse laoperación de suma.

Esquema de direccionamiento de 4 direcciones o 3+1 direcciones

 Aunque actualmente el concepto de programa secuencial es natural1, ello nonecesariamente siempre ha sido cierto. De hecho originalmente, era necesario especificar la instrucción que debería ejecutarse una vez terminada de ejecutar la instrucción actual,así para nuestro ejemplo, la instrucción quedaría como:

I30: SUMAR A,B,C,I40

1 Es decir una vez que una instrucción es ejecutada la instrucción que debe ser ejecutada a continuación es la

siguiente en secuencia, de acuerdo con el orden de escritura del programa.

4

ALU

Registros de Propósito General

Banderas

Unidad de Control

MAR 

MBR 

IR 

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 6/21

La cual puede ser interpretada como: “La instrucción 30 es: suma A y B y el resultadoalmacenarlo en C, una vez realizado lo anterior, ejecutar la instrucción 40” .

En este formato es posible identificar los siguientes elementos:

1) Un número de instrucción, el cual identifica la instrucción en cuestión: I30

2) Una operación a realizar: suma

3) Los operandos que deberán ser utilizados en la instrucción, a menudo dichos

operandos se encuentran almacenados en la memoria, por lo cual es necesario

proporcionar la dirección de cada uno: A y B

4) Un resultado que representa el lugar donde se almacenará el resultado de la

operación, igual que los operandos a menudo también representa una localidad

de memoria: C

5) El número de la instrucción que deberá ejecutarse una vez terminada esta

instrucción: I40

Debido a que en este formato se requiere especificar cuatro direcciones de memoria (dosde operandos, una de resultados y una más de instrucción siguiente) a este esquema sele denomina de 4 direcciones o de 3+1 direcciones.

Este esquema no introduce nuevos componentes en la arquitectura básica de lacomputadora. En los párrafos siguientes se presenta la evolución natural de esteesquema de direccionamiento.

Esquema de 3 direcciones

Uno de los primeros cambios que se pueden introducir al esquema de 3+1 direcciones esla suposición de que las instrucciones deben efectuarse en forma secuencial de acuerdocon el orden de escritura del programa, Una vez introducido este cambio, la instrucción desuma queda como:

I30: SUMAR A,B,C

Como puede observarse el campo de instrucción siguiente ha desaparecido, siendo lainstrucción a ejecutar una vez terminada esta la instrucción I31.

Como resultado de los cambios anteriores es necesario que el CPU lleve un controlinterno de la dirección donde se encuentra almacenada la instrucción que esta ejecutandoen un momento dado. El nuevo componente, encargado de llevar el control de la

secuencia del programa, se denomina Contador de Programa (o PC Program Counter ).

 Además, debido a que la naturaleza secuencial de los programas, se requiere de unainstrucción especial para indicar al procesador que rompa la secuencia y que ejecute a

continuación una instrucción que no es la siguiente, esta instrucción es la instrucción

de salto (JMP ) o ruptura de secuencia2.

Esquema de 2 direcciones

La siguiente modificación es la eliminación del campo de resultados, asumiendo para ello,que uno de los dos operandos funcionará como operando y campo de resultado. Nuestro

ejemplo tendrá la forma:

2 Esta instrucción de salto es similar a la instrucción goto de lenguajes tales como basic o C.

5

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 7/21

I29: COPIAR C,AI30: SUMAR C,B

En este ejemplo se asume que el operando que funciona como operando y campo deresultados es el primero. Por lo que la explicación del programa es copiar el contenido de

 A a C (I29) y sumar a C el contenido de B (I30).

Este esquema no introduce elementos nuevos en la arquitectura. Los cambios implican,como se verá posteriormente, que el código generado para cada instrucción es mássencillo (se requiere especificar menos información por instrucción), aunque se requierende más instrucciones para realizar una misma tarea.

Esquema de 1 dirección

Es posible simplificar aún más el esquema, para ello se requiere aceptar que todas lasoperaciones aritméticas y lógicas se realizarán siempre utilizando un registro especial

denominado Acumulador . La función del Acumulador es doble: servir como operando y

como registro de resultados. Son necesarias dos instrucciones especiales:cargar el acumulador con un valor ( LDA 16 por ejemplo cargará el acumulador 

con un número 16 ) y mover el contenido del acumulador a otro registro o

celda de memoria (STA X por ejemplo cargaría el contenido del acumulador en la

variable X ). Nuestro ejemplo tendrá la forma:

I29: LDA AI30: SUMAR BI31: STA C

Esquema de 0 direcciones

El esquema de 0 direcciones hace uso de una pila (stack) sobre cuyo tope se realizan lasoperaciones. A menudo dicha pila no se encuentra localizada dentro del CPU sino masbien en la memoria. Este hecho permite que en el un caso extremo se pueda utilizar todala memoria para la pila. Generalmente, las pilas comienzan en las partes más altas dememorias y su crecimiento (debido a operaciones de carga y descarga) se lleva a cabohacia las localidades más bajas de memoria. Dentro del CPU se lleva a cabo solamenteel registro de la posición del tope de la pila, el registro encargado de esta tarea es el

apuntador del tope de la pila (SP o Stack Pointer). Además son necesarias

las instrucciones de carga (PUSH) y descarga (POP), aunque el esquema de estas

instrucciones es de 1 dirección. Nuestro ejemplo tendrá la forma:

I29: PUSH A

I30: PUSH BI31: SUMARI32: POP C

Arquitectura completa de una computadora

Una vez revisados los esquemas de direccionamiento, en la figura 3 se presenta elesquema de la arquitectura completa del procesador. Los componentes y su función hansido explicados con anterioridad.

6

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 8/21

El procesador Ideal

Como se mencionó en la introducción del presente capítulo, una computadora idealizadadenominada Procesador Ideal  se utilizará para explicar la operación general de unacomputadora.

Arquitectura

Los componentes que forman al Procesador Ideal se presentan en el esquema 4.

7

ALU

Registros de Propósito General

Banderas

Unidad de Control

MAR 

MBR 

IR PC SP

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 9/21

El registro de banderas del procesador ideal, consta de cuatro banderas, las cuales sepresentan a continuación.

Banderas

Como se recordará las banderas son indicadores del estado general del procesador ymás específicamente proporcionan información sobre las operaciones aritméticas ylógicas. El significado de cada bandera se explica en los párrafos siguientes. Para losejemplos suponga que el contenido de los registros es el siguiente: R0=10, R1=20, R2=20y R3=255. Además, para efectos de estos ejemplos, se supone que los registros tendrán8 bits.

Bandera de Cero ( Zf Zero Flag )

La bandera de cero se encenderá cuando el resultado de la última operación aritmética escero. En caso contrario se apagará.

El resultado de la instrucción SUB R2,R1 es

0001 01000001 01000000 0000

por lo que la bandera Z se enciende.

El resultado de la instrucción ADD R2,R1 es

0001 01000001 01000010 1000

por lo que la bandera Z se apaga.

8

ALU Banderas

Unidad de Control

MAR 

MBR 

IR SPPC

R0 R1 R2 R3

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 10/21

Bandera de Signo (Sf Sign Flag)

La bandera de signo se encenderá siempre que el bit más significativo del resultado de laúltima operación aritmética sea uno. En caso contrario se apagará.

El resultado de la instrucción SUB R0,R1 es:

0000 10100001 01001111 0110

Como puede observarse en este caso el bit más significativo es 1 por lo que la bandera Sse enciende.

El resultado de la instrucción ADD R0,R1 es:

0000 10100001 01000001 1110

En este caso el bit más significativo es 0, por lo cual la bandera S se apaga.

Bandera de Acarreo (Cf Carry Flag)

La bandera de acarreo se enciende cuando el resultado de la operación aritmética generaun acarreo del bit más significativo hacia fuera. En caso contrario se apagará.

El resultado de la instrucción ADD R3,R0 es

1111 1111

0001 10101 0001 1001

como se observa existe un “acarreo” del bit más significativo (el octavo bit) hacia fuera por lo que la bandera de acarreo se enciende y en el registro R3 se almacena como resultadode la operación: 0001 1001

El resultado de la instrucción ADD R2,R1 es

0001 01000001 01000010 1000

en este caso no se tiene un bit de acarreo por lo que la bandera de acarreo se apaga.

Bandera de Overflow (Ov Overflow Flag)

La bandera de acarreo se enciende como resultado de efectuar el xor 3 entre la banderade acarreo y la de signo. La justificación y el significado de esta operación se verá másadelante. El resultado de la instrucción ADD R3,R0 es

3 Recuérdese que la operación binaria xor da como resultado 1 cuando alguno de los dos operandos es 1 pero no

ambos, 0 en cualquier otro caso

9

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 11/21

1111 11110001 1010

1 0001 1001

con lo que la bandera de acarreo se enciende (1) y la de signo se apaga (0) por lo que elxor entre estas dos banderas da como resultado que la bandera de overflow se encienda.

El resultado de la instrucción ADD R2,R1 es

0001 01000001 01000010 1000

con lo que la bandera de acarreo es 0 y la bandera de signo es 0, la bandera de overflowes por lo tanto 0.

Registros

Los registros de propósito general que es capaz de manejar el procesador ideal soncuatro:

Código Registro00 R0

01 R1

10 R2

11 R3

Modos de direccionamiento

Para completar la especificación del procesador es necesario especificar la manera enque el procesador tiene acceso a la información, tanto en los registros como en lamemoria. En la tabla siguiente se especifican dichos modos y en los párrafos posterioresse describen dichos modos.

Código Modo de direccionamiento00 No requiere4

01 Directo

10 Inmediato

11 Indirecto

Para la explicación que a continuación se presenta se empleará la instrucción mov .

Modo registro (o directo)

El más sencillo método de acceso a la información es el acceso directo, este modo dedireccionamiento corresponde al uso de los registros como la fuente de la información autilizar. Si un registro del procesador (por ejemplo R0) es utilizado como operando, con laconnotación de simplemente utilizar su contenido para la operación, entonces se dice queel operando en cuestión se encuentra en modo directo. Ejemplo:

MOV R0, R1

R0 y R1 son utilizados en modo directo. (Directamente se utiliza el contenido de losregistros). Este modo de direccionamiento es el más rápido, pues no se requiere que el

CPU utilice la memoria para ejecutar la instrucción.4 Este valor no es propiamente un modo de direccionamiento, se incluye aquí para completar la tabla. Su uso se

explicará más adelante.

10

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 12/21

Modo inmediato

Si el operando que es utilizado dentro de la instrucción corresponde a una constante,entonces se dice que el operando se encuentra en modo inmediato. La razón de estadenominación es que, como veremos más adelante, la constante en cuestión se

almacena a continuación del código de la instrucción. Por ejemplo:

MOV R0,3

El primer operando (R0) se encuentra en modo directo mientras que el segundo operandose encuentra en modo inmediato. Como es lógico, no necesariamente los dos operandotienen que tener el mismo modo de direccionamiento.

Modo indirecto

 A menudo el operando que se utilizará se encuentra almacenado en la memoria, por lotanto es necesario tener un mecanismo que nos permita hacer esto. Dicho mecanismovaría de procesador en procesador sin embargo siempre es necesario especificar ladirección. En el procesador ideal se utilizará un registro de propósito general paraespecificar la dirección de la celda de memoria que se desea emplear. Ejemplo:

MOV R0,(R1)

El primer operando se encuentra en modo directo, mientras que el segundo se encuentraen modo indirecto, la instrucción la podemos traducir como: “toma la dirección que seencuentra almacenada en el registro R1, ve a esa dirección de memoria y copia sucontenido en el registro R0” .

A menudo es posible combinar estos modos de operación para“crear” otros, sin embargo estos modos son básicos y

prácticamente cualquier procesador deberá ser capaz de utilizarlos.Aunque el procesador ideal no puede utilizar modos combinados,es atractiva la idea de poder ejecutar instrucciones tales como:MOV R0, (345) sin embargo, como se ha comentado, estaoperación no es posible ejecutarla con el procesador ideal. Decualquier manera será el manual del usuario del procesador el quedetermine qué operaciones pueden ejecutarse.

Conjunto de Instrucciones (Instruction Set)

Todo procesador es capaz de ejecutar un número finito de instrucciones, el procesador ideal no es la excepción y a continuación se presenta el listado completo de lasinstrucciones que es capaz de ejecutar.

Código Instrucción Op Zf  Sf  Cf  Ov Significado

 Aritméticas y Lógicas

00 INC 1 Incremento en 1

01 DEC 1 Decremento en 1

02 ADD 2 Suma

03 SUB 2 Resta

04 AND 2 Operación lógica and

05 OR 2 Operación lógica or 

06 NOT 1 Operación lógica not

07 CMP 2 Comparación

Ruptura de la secuencia del programa

11

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 13/21

Código Instrucción Op Zf  Sf  Cf  Ov Significado

08 JMP 1 Salto no condicionado

09 JZ 1 Salta si la bandera de cero está encendida

0A JNZ 1 Salta si la bandera de cero no está encendida

0B JS 1 Salta si la bandera de signo está encendida

0C JNS 1 Salta si la bandera de signo no está encendida

0D JC 1 Salta si la bandera de acarreo está encendida0E JNC 1 Salta si la bandera de acarreo no está encendida

0F JO 1 Salta si la bandera de sobreflujo está encendida

10 JNO 1 Salta si la bandera de sobreflujo no está encendida

11 CALL 1 Llamada a subrutina

12 RET 0 Regreso de subrutina

17 END 0 Termina programa

Manejo del stack 

13 PUSH 1

14 POP 1 Recupera del tope de la pila

15 PUSH SP 0 Guarda el SP en el tope la pila

16 POP SP 0 Recupera el SP del tope de la pila

Transferencia de Información18 MOV 2 Copia el contenido del op. 2 al op. 1

Formato de instrucción

Cada instrucción que el procesador debe ejecutar se encuentra almacenada en lamemoria de la computadora. De este lugar es de donde el CPU debe tomar cadainstrucción. Como se recordará cada celda de memoria es capaz de almacenar un ciertonúmero fijo de bits, por lo tanto, las instrucciones debe estar codificadas en dígitosbinarios para poder almacenarlas en la memoria. Para poder codificar las instruccionesserá necesario establecer un protocolo de codificación, dicho protocolo es único paracada procesador y por lo general es establecido por los diseñadores de procesador. Esteprotocolo de codificación es conocido como “Formato de la Instrucción”. A continuación sepresenta el formato de instrucción para el procesador ideal.

Las instrucciones que el procesador ideal puede ejecutar tienen un esquema dedireccionamiento de dos direcciones.

Cada instrucción del procesador ideal será codificada en una palabra de 16 bits. Elsignificado de cada bit se presenta en la tabla siguiente:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

B15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

Codificación de una instrucción

La manera de codificar una instrucción se explica a continuación, para ello supóngaseque se desea codificar la instrucción: ADD R0, (R1).

Los bits b15 a b13 no son utilizados en este formato por lo que los valores quealmacenemos en estos son irrelevantes. Utilizaremos el símbolo X para denotar lairrelevancia del valor de un bit.

Como primer paso se codifica el campo de instrucción siguiente, para ello se utiliza elcódigo de acuerdo a la tabla del conjunto de instrucciones. El código correspondiente a la

instrucción ADD es 02 (ó 0 0010 binario) con lo que se llenarán los bits b12 a b8:

12

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 14/21

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 b7 b6 b5 b4 b3 b2 b1 b0

El operando 1 de la instrucción es ADD R0,(R1) es R0, y el operando 1 está en mododirecto, por lo que el código a colocar en Modo Op1 es 00 (consulte la tabla de Modos dedireccionamiento) y para el campo Operando 1 es 01 (consulte la tabla de registros),agregando estos valores al código tendremos:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 b5 b4 0 0 b1 b0

Finalmente, el operando 2 de la instrucción es ADD R0,(R1) es R1, y el operando 2 estáen modo indirecto, por lo que el código a colocar en Modo Op2 es 11 y para el campo

Operando 2 es 01, agregando estos valores al código tendremos:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 1 1 0 0 0 1

Con lo cual el código de la instrucción ADD R0,(R1) es 0000 0010 0111 0001 (binario) o0271 (hexadecimal). Observe que los símbolos X han sido considerados como 0, estaserá la convención a utilizar.

Recuérdese que las instrucciones de un programa se encuentran almacenadas enmemoria, de modo que si la instrucción ADD R0,(R1) es parte de un programa dicha

instrucción se encontrará almacenada en la memoria, por ejemplo en la dirección 3FA:

Dirección Contenido de la

Memoria

3F9

3FA 0000 0010 0111 0001

3FB

Obsérvese que el proceso de codificación es reversible, es decir, a partir de un código deinstrucción 0271 (Hexadecimal) es posible deducir que la instrucción correspondiente es ADD R0,(R1). Se deja al lector realizar la comprobación.

Codificación de una instrucción con un operando en modo inmediato

Es particularmente importante entender la manera en que se codifica una instrucción queincluye una constante como uno de sus operandos (modo de direccionamientoinmediato).

Supóngase que se desea codificar la instrucción ADD R0,0 y por un momentoimaginemos que el código que generamos es 0001, ahora supóngase que deseamoscodificar la instrucción ADD R0,1 generamos el código 0002. Si seguimos en la misma

13

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 15/21

lógica, veremos que para cada valor posible de la constante tendremos que generar uncódigo distinto. Sin embargo, en esencia la instrucción es: “suma una constante(cualquiera que esta sea) a registro R0” , resulta atractiva la idea de generar un solocódigo y de alguna manera especificar la contante a usar de manera que no cambie elcódigo de la instrucción.

La solución al problema anteriormente planteado es la siguiente: Codificar la instrucciónsin incluir la constante, almacenando esta en la siguiente celda de memoria después delcódigo de instrucción, un ejemplo aclarará esta idea.

La instrucción ADD R1, 30 se codifica de la siguiente manera: por la instrucción, el mododel operando 1 y el código del operando 1 tenemos:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 b5 b4 0 1 b1 b0

Para el operando 2 tenemos que el modo de direccionamiento es inmediato, por lo que el

código es 10:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 1 0 0 1 b1 b0

 Ahora bien, en la instrucción ADD R1, 30 el segundo operando es una constante lo queya ha sido especificado por el modo de direccionamiento inmediato para el operando 2.De modo que el valor asignado para el operando 2 es irrelevante porque no se usará. Deesta manera tenemos:

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 1 0 0 1 X X

 Así pues, el código del operando es 0000 0010 0110 0100 (ó 0264 hex), y si estainstrucción se almacena en la dirección 3FB entonces la constante a utilizar para eloperando 2 (30) se debe almacenar en la dirección 3FC. La instrucción ADD R1, 30 sealmacenará en memoria como se muestra a continuación. Se deja al lector comprobar que la codificación de la instrucción ADD R1, 15 es el mostrado en las direcciones 3FD y3FE.

14

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 16/21

Dirección Contenido de la

Memoria

3F9

3FA 0000 0010 0111 0001

3FB 0000 0010 0110 0100

3FC 0000 0000 0001 1110

3FD 0000 0010 0110 0100

3FE 0000 0000 0000 1111

Ciclo de Instrucción

Una vez que el programa se encuentra en memoria el procesador puede ejecutarlo. Paraello ejecuta cada una de las instrucciones. El proceso de ejecución de cada instrucciónsigue una secuencia de pasos bien definidos, a esta secuencia se le denomina Ciclo deInstrucción. El Ciclo de Instrucción gobierna todos los procesos del procesador, y a su vezse divide entres etapas que a continuación se explican.

Ciclo de Fetch (Carga de instrucción)

Esta etapa es ejecutada cada vez que el procesador comienza la ejecución de unainstrucción. El objetivo principal de este ciclo es recuperar el código de la instrucción,almacenado en memoria, y transportarlo dentro del procesador hasta el IR.

Para llevar a cabo este ciclo el procesador efectúa una serie de operaciones mássencillas (llamadas microinstrucciones), recuerde que el PC contiene la dirección de lainstrucción que se debe ejecutar, las microinstrucciones que el procesador ejecuta en esteciclo son:

MAR←PC El PC es copiado al MBR 

MBR←(MAR) El MBR recibe el contenido de la celda de memoria cuyadirección esta almacenada en el MAR 

PC←PC+1 El PC se incrementa en 1 para apuntar al código de lainstrucción siguiente

IR←MBR El IR recibe el código de la instrucción que el microprocesador debe ejecutar 

Este ciclo es invariable para cualquier instrucción.

Observese que al finalizar el ciclo se tienen dos resultados importantes: el IR contiene elcódigo de la instrucción que se debe ejecutar y además el PC contiene la dirección de lasiguiente instrucción que se ejecutará una vez ejecutada la instrucción almacenada en el

IR.

15

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 17/21

Ciclo de Decode (Decodificación)

Una vez que en el IR se encuentra la instrucción el siguiente paso es el Ciclo de Decode.El Ciclo de Decodificación permite determinar qué instrucción se deberá ejecutar, esteproceso se puede realizar básicamente de manera inversa de cómo se codifica unainstrucción. Como este proceso lo lleva a cabo la Unidad de Control, no existen

microinstrucciones a ejecutar.

Ciclo de Execute (Ejecución)

Durante el ciclo de ejecución se ejecuta propiamente la instrucción. Lasmicroinstrucciones dependen de cada instrucción.

El proceso de ensamblado

Para desarrollar un programa, el programador utiliza las instrucciones que el procesador 

es capaz de ejecutar. La mecánica de escritura ha variado con el tiempo y depende de

varias cosas, entre ellas la computadora o el sistema para el cual se desarrolla el

programa, el sistema operativo bajo el cual se trabaja, los dispositivos periféricosdisponibles, etc., sin embargo y a grandes rasgos actualmente el proceso que se sigue de

manera regular es el siguiente:

El programador escribe su programa por medio de algún editor (por ejemplo edit de DOS,

el notePad de Windows o el vi de UNIX), normalmente se desea que el editor no debe

agregar código especial (lo cual descarta a editores como Word o Tex), el programa es

almacenado en un archivo.

Una vez que el programa está almacenado en disco es necesario transformarlo del

código en “Lenguaje humano” al correspondiente código binario. Para ello se emplea un

programa denominado ensamblador, el programa ensamblador sigue una serie de reglas

de ensamblado, similares a las presentadas en las páginas anteriores. Cada instruccióndel programa se traduce en un solo código binario equivalente.

Una vez ensamblado el archivo, y si este utiliza rutinas externas (es decir no escritas en el

mismo archivo fuente) escritas previamente es necesario llevar a cabo un proceso de

“ligado”, este proceso permite que las referencias a procedimientos externos

Directivas de ensamblado

Una directiva es una indicación que se le hace al programa ensamblador para que lleve a

cabo alguna acción. Las directivas no generan código ejecutable por el procesador. Las

más comunes son:

ORG: A menos que esta directiva este presente el ensamblador efectúa elproceso de ensamblado a partir de la dirección 0000H, posición en la cualcolocará el primer código ensamblado. Cuando de especifica la directivaORG el ensamblador cambia de dirección de ensamblado a la especificadapor esta directiva. Así por ejemplo, ORG 2300H indica al ensamblador que apartir de el punto en que aparece esta directiva, comience a ensamblar elcódigo subsecuente a partir de la dirección 2300H.

EQU: Esta directiva establece un valor que será utilizado como unaconstante a lo largo del programa. Esta constante no reserva espacio enmemoria, simplemente es una manera más cómoda para el programador deutilizar constantes. Así por ejemplo, en el código:

16

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 18/21

MAXIMO EQU 10...CMP R0,MAXIMO

La segunda instrucción es equivalente a CMP R0,10. De hecho, como se verá másadelante, el símbolo MAXIMO se agrega a la Tabla de Símbolos con un valor de 10 (ver 

ensamblador de dos pasadas más adelante). 

DB, DW: El objetivo de estas dos directivas es instruir al programa ensamblador paraque reserve en memoria espacio suficiente para almacenar información del tamaño de unbyte (8 bits) o de una palabra (16 bits). Por ejemplo en: 

X DW 10Y DB 20

La primera línea reserva una palabra de memoria, en la cual se almacenará un número10 y a cuya dirección se hará referencia por medio del símbolo X. La segunda líneareserva un byte de memoria conteniendo un número 20 y cuya dirección se referenciará

por medio del símbolo Y.

Es importante hacer notar que el ensamblador deberá tener capacidad para detectar inconsistencias tales como:

Z DB 1200

Recuérdese que en un byte el máximo número a almacenar es 1111 1111b, es decir 255(28-1) y en una palabra el máximo número es 111 111 111 111 1111b, es decir 65535(216-1).

Por otra parte, la dirección de memoria que el ensamblador selecciona es en generalarbitraría y solo esta sujeta a restricciones de unicidad del código.

Ensamblado de un programa sencillo

Problema: Supóngase que se tienen dos números almacenados en memoria, en las

direcciones 2000H y 2100H, se desea sumar estos números y el resultado se debe

colocar en la dirección 2200H. Codifique el programa para que procesador ideal que haga

esto.

Solución: A continuación se presenta el programa correpondiente.

(1) Inicio: Mov R0,2000H

(2) Mov R1,(R0)

(3) Mov R0,2100H

(4) Add R1,(R0)

(5) Mov R0,2200H

(6) Mov (R0),R1

(7) End

 A continuación se ensamblan cada una de las instrucciones del programa anterior:

17

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 19/21

(1) mov R0,2000H

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 1 0 0 0 0 1 1 0 0 0 X X

E inmediatamente después la constante 2000H

(2) mov R1,(R0)

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 1 0 0 0 0 1 1 1 0 1 0 0

(3) Mov R0,2100H

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 1 0 0 0 0 1 1 0 0 0 X X

E inmediatamente despúes la constante 2100H

(4) Add R1,(R0)

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 0 0 0 1 0 0 1 1 1 0 1 0 0

(5) mov R0,2200H

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 1 0 0 0 0 1 1 0 0 0 X X

E inmediatamente después la constante 2200H

(6) mov (R0),R1

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 1 0 0 0 1 1 0 1 0 0 0 1

(7) end

18

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 20/21

No usados Instrucción Modo Op1 Modo Op2 Operando1 Operando2

X X X 1 0 1 1 1 0 0 0 0 0 0 X X

El programa anterior al ensamblarse y cargarse en memoria, digamos a partir de ladirección 1000H se vería como:

1000 1860H

1001 2000H

1002 1874H

1003 1860H

1004 2100H

1005 0274H

1006 1860H

1007 2200H

1008 18D1H

1009 1700H

El ensamblador de 2 pasadas

En la sección anterior se mostró el proceso de ensamblado de un programa sencillo, sinembargo ¿ Qué sucede cuando el programa tiene que hacer uso de variables definidas por medio de directivas tales como DW o de instrucciones como saltos (absolutos ocondicionados), etc. ?

Supóngase que se desea hacer un programa que ordene un vector de 10 elementosalmacenados en memoria. El método de ordenamiento utilizado es el de intercambio. Acontinuación se muestra el código del programa correspondiente.

(1) Vector DW 1,3,4,2,0,3,4,2,1,9

(2) Inicio: Mov R0,Vector  

(3) Mov R1,1

(4) Ciclo: Mov R2,r1

(5) Ciclo2: Inc R2

(6) Cmp R1,10

(7) Jz Fin

19

5/16/2018 Arquitectura Von Newman - slidepdf.com

http://slidepdf.com/reader/full/arquitectura-von-newman 21/21

(8) Cmp (r1),(r2)

(9) Jns continua

(10) Mov R3,(r1)

(11) Mov (R1),(r2)

(12) Mov (r2),r3

(13) Continua: Inc R2

(14) Cmp R2,11

(15) Jns Ciclo2

(16) Inc R1

(17) Jmp Ciclo

(18) Fin: End

20