Upload
tom-ibanez
View
230
Download
1
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