You are on page 1of 50

TEMA 3: ARQUITECTURA DEL CONJUNTO

DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.1.- Conceptos de arquitectura de computacin
Tal y como vimos en el tema anterior, a la coleccin de todas las instrucciones que puede
ejecutar un procesador se le denomina conjunto de instrucciones, y a la completa descripcin
de dicho conjunto, arquitectura del conjunto de instrucciones.
La arquitectura del conjunto de instrucciones determina cmo debe ser el hardware del
procesador y cmo debe estar organizado. Por ello, los manuales de usuario de los
procesadores se enfocan principalmente en la descripcin del conjunto de instrucciones que el
procesador puede ejecutar, as como de los elementos del procesador que son accesibles al
programador.
Las instrucciones se definen y almacenan en la memoria del procesador en lenguaje binario, lo
cual constituye el llamado cdigo mquina. El lenguaje que sustituye los cdigos de operacin
binarios y las direcciones por nombres simblicos se denomina lenguaje ensamblador.
El formato de las instrucciones se representa mediante una caja rectangular simbolizando los
bits de la instruccin en binario. Estos bits se dividen en grupos llamados campos:
- Campo de cdigo de operacin (opcode), que especifica la operacin a realizar.
- Campo de direccin(es), que proporciona direcciones de memoria o de registros.
- Campo de modo, que especifica la forma en que se interpreta el campo de direcciones.
-
En el presente tema estudiaremos las instrucciones tpicas que se pueden encontrar en
procesadores comerciales, as como los diferentes formatos en que pueden presentarse,
haciendo especial nfasis en el direccionamiento de los operandos.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.1.- Conceptos de arquitectura de computacin

CICLO DE OPERACIN BSICO DE UN PROCESADOR


La unidad de control de un procesador se disea para ejecutar cada una de las
instrucciones de un programa efectuando la siguiente secuencia de pasos:
1.- Obtener la instruccin de memoria. Almacenarla en un registro de control.
2.- Decodificar la instruccin.
3.- Localizar los operandos empleados en la instruccin.
4.- Obtener de la memoria los operandos (si fuese necesario)
5.- Ejecutar la operacin en la ruta de datos.
6.- Almacenar el resultado en un lugar adecuado.
7.- Volver al paso 1 y para procesar la siguiente instruccin.
La unidad de control del procesador consta de un registro especial, el contador de
programa PC (Program Counter). Su contenido apunta a la posicin de memoria de la
instruccin que se va a ejecutar a continuacin, y se incrementa cada vez que se lee una
instruccin del programa almacenado en la memoria.
La decodificacin del paso 2 determina la operacin a ejecutar y el modo de
direccionamiento de la instruccin.
En el paso 3, los operandos se localizan segn el modo de direccionamiento y el campo
de direcciones de la instruccin.
El procesador ejecuta la instruccin sobre los operandos, almacena el resultado y regresa
al paso 1 para obtener la siguiente instruccin del programa.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.1.- Conceptos de arquitectura de computacin

CONJUNTO DE REGISTROS
El conjunto de registros est formado por todos los registros del procesador accesibles al
programador:
- El contador de programa PC.
- Banco de registros de la ruta de datos.
- El Puntero de pila SP (Stack Pointer). Permite definir estructuras LIFO en la memoria.
- El registro de estado del procesador PSR (Processor Status Register). Permite
almacenar los bits de estado C, N, V y Z de la ALU. Estos bits de estado, normalmente
denominados banderines (flags), pueden utilizarse para tomar decisiones que
determinen el flujo de ejecucin del programa.
Los procesadores constan adems de una serie de registros que normalmente no son
accesibles al programador:
- El registro de instruccin IR.
- El registro CAR.
- Registros ocultos del banco de registros de la ruta de datos. Slo son accesibles a los
microprogramas para, por ejemplo, almacenar resultados parciales durante la
ejecucin de una instruccin.
- Los registros de pipeline en procesadores segmentados.

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos
En una instruccin de manipulacin de datos, como por ejemplo la instruccin ADD que
vimos en el tema anterior, se necesita especificar tanto los datos que se van a sumar, como
el destino del resultado. Esto se conoce como direccionamiento de operandos. Dichos
operandos pueden encontrarse tanto en el banco de registros como en la memoria.
Si la direccin del operando forma parte de la instruccin, se tiene un direccionamiento
explcito. En caso contrario, se tiene un direccionamiento implcito.
El nmero de operandos que se pueden direccionar explcitamente en una instruccin es
un factor importante a tener en cuenta a la hora de definir la arquitectura del conjunto de
instrucciones de un procesador.
Como ejemplo, supongamos que se quiere evaluar la siguiente expresin aritmtica:
X = (A+B)(C+D)
con instrucciones de tres, dos, una y cero direcciones. Supondremos adems que:
- Los operandos estn en direcciones de memoria representadas por las letras A, B, C y D.
La operacin no debe alterar sus contenidos.
- El resultado se almacena en la memoria, en una direccin representada por X.
- Las operaciones aritmticas que se pueden utilizar son la suma ADD y la multiplicacin
MUL sobre dos operandos.
- Las operaciones de transferencia de datos que se pueden utilizar son LD (de memoria a
registro), ST (de registro a memoria) y MOVE (entre registros o posiciones de memoria).

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

INSTRUCCIONES DE TRES DIRECCIONES


Programa para el clculo de X = (A+B)(C+D) utilizando instrucciones de tres direcciones:
ADD T1, A, B

M[T1] M[A] + M[B]

ADD T2, C, D

M[T2] M[C] + M[D]

MUL X, T1, T2

M[X] M[T1] M[T2]

T1 y T2 son posiciones de memoria para almacenar los resultados parciales del clculo.
El mismo programa puede usar registros como posiciones de almacenamiento temporal:
ADD R1, A, B

R1 M[A] + M[B]

ADD R2, C, D

R2 M[C] + M[D]

MUL X, R1, R2

M[X] R1 R2

El uso de registros puede reducir el tiempo de ejecucin del programa entre 5 y 9 veces.
Ventaja: Se reducen las longitudes de los programas para la evaluacin de expresiones.
Inconveniente: El cdigo binario de la instruccin necesita ms bits para poder especificar
las tres direcciones (sobre todo si son posiciones de memoria).

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

INSTRUCCIONES DE DOS DIRECCIONES


En la instruccin slo hay dos direcciones explcitas (registros o posiciones de memoria).
Se supone implcitamente que el resultado de la operacin indicada en la instruccin se
almacena en la direccin del primer operando indicado explcitamente.
Programa para el clculo de X = (A+B)(C+D) utilizando instrucciones de dos direcciones:
MOVE T1, A

M[T1] M[A]

ADD T1, B

M[T1] M[T1] + M[B]

MOVE X, C

M[X] M[C]

ADD X, D

M[X] M[X] + M[D]

MUL X, T1

M[X] M[X] M[T1]

Al igual que en el caso de las tres direcciones, se pueden usar registros en lugar de las
posiciones de memoria para almacenar los clculos parciales.
Para poder realizar el clculo deseado ha habido que:
- Introducir operaciones de transferencia de datos MOVE.
- Aumentar la longitud del programa.
Como contrapartida, la longitud de la instruccin es menor.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

INSTRUCCIONES DE UNA DIRECCIN


En la instruccin slo hay una direccin explcita. El procesador utiliza implcitamente un
registro acumulador ACC para poder realizar tanto las operaciones aritmticas, siendo la
fuente de uno de los operandos y el destino del resultado, como las de transferencia de
datos.
Programa para el clculo de X = (A+B)(C+D) utilizando instrucciones de una direccin:
LD

ACC M[A]

ADD

ACC ACC + M[B]

ST

M[X] ACC

LD

ACC M[C]

ADD

ACC ACC + M[D]

MUL

ACC ACC M[X]

ST

M[X] ACC

Ha aumentado el nmero de lneas de programa y el nmero de accesos a memoria.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

INSTRUCCIONES DE CERO DIRECCIONES


Para llevar a cabo operaciones aritmticas con cero direcciones, todas ellas deben ser
implcitas. El procesador utiliza una estructura LIFO llamada pila (stack), de la que las
instrucciones toman los datos y en donde almacenan los resultados:
- TOS (top of stack) es la palabra ms arriba en la pila.
- TOS-1 es la palabra inmediatamente debajo, TOS-2 la siguiente, etc.
- Cuando se usan uno o varios operandos en una operacin, se eliminan de la pila. La
palabra por debajo pasa a ser la nueva TOS.
- Cuando se genera un resultado, se coloca en la pila pasando a ser el nuevo TOS.
De este modo, TOS y algunas palabras ubicadas por debajo son las direcciones implcitas
de los operandos, y TOS es la direccin implcita del resultado. Por ejemplo, la instruccin
de suma sera simplemente ADD, y la operacin que se llevara a cabo sera
TOSTOS+TOS-1.
Para meter y sacar datos de la pila se usan las instrucciones:
- PUSH (empujar). PUSH X transfiere la palabra en la direccin X de la memoria al TOS.
- POP (sacar). POP X transfiere el TOS a la direccin X de la memoria.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

INSTRUCCIONES DE CERO DIRECCIONES


Volviendo a nuestro clculo de ejemplo, el programa con instrucciones de cero direcciones
ser el siguiente:
Pila
Notacin posfijo
A
PUSH A
TOS M[A]
A
PUSH B

TOS M[B]

ADD

B
A

TOS TOS + TOS-1

A+B

PUSH C

TOS M[C]

C
A+B

PUSH D

TOS M[D]

D
C
A+B

ADD

TOS TOS + TOS-1

C+D
A+B

MUL

TOS TOS TOS-1

(A+B)(C+D)

POP

M[X] TOS

Se necesitan en total ocho instrucciones, una ms que en el caso de instrucciones de una


direccin. Como contrapartida, slo las instrucciones PUSH y POP utilizan
direccionamiento explcito.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

ARQUITECTURAS DE DIRECCIONAMIENTO
Arquitectura memoria a memoria:
- Los operandos se toman directamente de la memoria, y el resultado se enva
directamente a la memoria.
- Las instrucciones de manipulacin y transferencia de datos contienen entre uno y tres
campos de direcciones.
- El procesador slo tiene registros de control.
Es el caso del ejemplo del clculo X=(A+B)(C+D) con instrucciones de tres direcciones:
ADD T1, A, B

M[T1] M[A] + M[B]

ADD T2, C, D

M[T2] M[C] + M[D]

MUL X, T1, T2

M[X] M[T1] M[T2]

En la prctica este tipo de arquitecturas no se usa debido a que son lentas:


- Se necesita un elevado nmero de accesos a memoria, tanto en la fase de bsqueda de
las instrucciones del programa como en la de su ejecucin.
- Dar la posibilidad de que todas las instrucciones puedan acceder directamente a
memoria incrementa la complejidad de las estructuras de control, dando como resultado
que el perodo de la seal de reloj tenga que ser ms largo.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

ARQUITECTURAS DE DIRECCIONAMIENTO
Arquitectura registro a registro y carga/almacenamiento:
- Permiten una sola direccin de memoria, y restringen su uso a las instrucciones de
carga y almacenamiento.
- Las instrucciones de manipulacin de datos acceden solamente a registros.
- El procesador necesita un banco de registros con un tamao adecuado.
En esta arquitectura, el programa ejemplo para el clculo de X=(A+B)(C+D) ser:
LD
R1, A
R1 M[A]
PUSH A
LD
R2, B
R2 M[B]
PUSH B
ADD
LD

R3, R1, R2
R1, C

R3 R1 + R2
R1 M[C]

LD

R2, D

R2 M[D]

ADD
PUSH C
PUSH D

ADD
MUL
ST

R1, R1, R2
R1, R1, R3
X, R1

R1 R1 + R2
R1 R1 R3
M[X] R1

ADD
MUL
POP

Este tipo de arquitecturas se usa ms en la prctica porque, aunque se necesiten ms


instrucciones en el programa, el nmero total de accesos a memoria se reduce y, por
tanto, son ms rpidas.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.2.- Direccionamiento de operandos

ARQUITECTURAS DE DIRECCIONAMIENTO
Arquitectura de memoria-registro:
- Incluyen instrucciones de dos o tres direcciones con una o dos direcciones de memoria.
- La longitud del programa y el nmero de accesos a memoria tienden a estar en un punto
intermedio de las dos arquitecturas anteriores.
Ejemplo de instruccin:
ADD R1, A
R1 R1 + M[A]
Este tipo de arquitectura se usa cuando se quiere dar compatibilidad con programas antiguos.
Arquitectura de un solo acumulador:
- Permiten instrucciones con una sola direccin para acceder a la memoria.
- El procesador slo dispone del acumulador para hacer operaciones.
Es el caso del ejemplo del clculo X=(A+B)(C+D) con instrucciones de una sola direccin.
Esta arquitectura es ineficiente debido a que requiere un gran nmero de accesos a memoria. Se
usa en el caso de aplicaciones sencillas y de bajo coste, que no precisen de un alto rendimiento.
Arquitectura de pila:
- Las instrucciones de manipulacin de datos usan una pila de la que obtener los datos y en la
que almacenar el resultado.
- Para la transferencia de datos se usan instrucciones de una sola direccin.
Es el caso del ejemplo del clculo X=(A+B)(C+D) con instrucciones de cero direcciones.
Esta arquitectura resulta especialmente til para la rpida interpretacin de lenguajes de alto
nivel, en los que la representacin intermedia del cdigo utiliza operaciones con la pila. Para que
sea eficiente, el procesador almacena directamente gran parte de las posiciones de la pila.

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

DEFINICIN
El modo de direccionamiento especifica una regla para interpretar o modificar el campo de
direcciones de la instruccin antes de que se haga realmente referencia al operando. A la
direccin del operando generada mediante la aplicacin de esa regla se la denomina
direccin efectiva.
Formato de la instruccin:
Opcode

Modo

Direccin u operando

Los procesadores utilizan tcnicas de modo de direccionamiento para ajustarse a las


siguientes caractersticas:
- Proporcionar flexibilidad al usuario en la programacin mediante punteros a memoria,
contadores para el control de bucles, indexar datos y reubicar programas.
- Reducir el nmero de bits de los campos de direcciones de la instruccin.
Disponer de varios modos de direccionamiento proporciona al programador
experimentado la posibilidad de escribir programas que requieran pocas instrucciones. Sin
embargo, el uso de modos de direccionamiento complejo puede implicar un mayor tiempo
de ejecucin.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO IMPLCITO
El operando se especifica implcitamente en el cdigo de operacin, por lo que la
instruccin no necesita de un campo de direcciones.
Ejemplos:
- Operaciones sobre el contenido del acumulador (complementar acumulador).
- Operaciones con la pila (ADD).

MODO INMEDIATO
El operando se especifica directamente en la instruccin. En vez de tener un campo de
direcciones, la instruccin posee un campo de operando.
Ejemplo: inicializacin de un registro con un valor constante.

MODO REGISTRO
Se tiene cuando el campo de direcciones de la instruccin especifica un registro del
procesador en lugar de una posicin de memoria. El operando est contenido en el
registro direccionado en la instruccin.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO REGISTRO INDIRECTO


La instruccin direcciona un registro del procesador en el que est la direccin de
memoria donde se encuentra el operando.
Para acceder al operando correctamente, el programador debe asegurarse de que la
direccin efectiva est ya disponible en el registro.
La ventaja de este modo de direccionamiento es que el campo de direcciones de la
instruccin necesita menos bits que los que seran necesarios para especificar una
direccin de memoria directamente.

MODO AUTOINCREMENTO (AUTODECREMENTO)


Este modo es igual al anterior, incluyendo una operacin de incremento (decremento) del
registro que contiene la direccin de memoria del operando.
Ejemplo:

ADD

(R1)+, 3

M[R1] M[R1]+3, R1 R1+1

Se utiliza cuando se requiere hacer una misma operacin sobre un conjunto de datos
(array) almacenado en posiciones consecutivas de la memoria. En el ejemplo anterior, R1
contendr la direccin del primer dato en el array. Cada vez que se ejecuta la instruccin,
se hace la operacin sobre el dato y el registro se incrementa para apuntar al siguiente
dato del array.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO DE DIRECCIONAMIENTO DIRECTO


El campo de direcciones de la instruccin proporciona directamente la direccin efectiva.
Ejemplos:
(a) Transferencia de datos
(b) Salto condicional
PC=250

250
251

ACC

Opcode

Modo

PC=300

ADRS

252 Siguiente instruccin

300
301

ACC

500

800

Carga ACC
Direccin directa
500
ACC 800
PC 252

ADRS

Programa

Datos

Opcode:
Modo:
ADRS:
Operacin:

Modo

302 Siguiente instruccin

Programa
500

Opcode

Instruccin

Programa

Opcode:
Modo:
ADRS:
Operacin:

Bifurcacin si ACC=0
Direccin directa
500
PC 500 si ACC=0
PC 302 si ACC0

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO DE DIRECCIONAMIENTO INDIRECTO


El campo de direcciones de la instruccin proporciona la direccin en que se encuentra la
direccin efectiva.
Ejemplo: Transferencia de datos
PC=250

250
251

ACC

Opcode

Modo

ADRS

252 Siguiente instruccin


Programa
500

Opcode:
Modo:
ADRS:
Operacin:

Carga indirecta ACC


Direccin indirecta
500
ACC 625
PC 252

Operacin:

ACC M[M[ADRS]]

800

Datos
800

625

Datos

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO DE DIRECCIONAMIENTO RELATIVO


La direccin efectiva se obtiene como suma de la parte de direccin de la instruccin y el
contenido del PC. La parte de direccin de la instruccin es un nmero con signo.
Ejemplo: Transferencia de datos
PC=250

250
251

ACC

Opcode:
Modo:
ADRS:
Operacin:

Carga ACC
Direccin relativa
500
ACC 800
PC 252

Operacin:

ACC M[ADRS+PC]

Opcode

Modo

ADRS

252 Siguiente instruccin


Programa
752

800

Datos

Este tipo de direccionamiento se usa frecuentemente en instrucciones de salto condicional


cuando la direccin de bifurcacin est cercana a la instruccin de salto. Este
direccionamiento genera instrucciones ms compactas, ya que la direccin relativa
necesita de menos bits que una direccin de memoria.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

MODO DE DIRECCIONAMIENTO INDEXADO


La direccin efectiva se obtiene como suma de la parte de direccin de la instruccin y el
contenido de un registro del procesador, llamado registro ndice. Este puede ser un registro
especial del procesador o simplemente cualquiera de los registros del banco de registros.
Se usa cuando se desea acceder o manipular un array de datos almacenado en la memoria:
- El campo de direcciones de la instruccin marca el comienzo del array.
- Cada operando del array se almacena en memoria en una direccin relativa a su comienzo.
- La distancia entre la direccin de comienzo y la direccin del operando es el valor del ndice
almacenado en el registro.
As, con la misma instruccin se puede acceder a cualquier operando del array mediante el uso
del registro ndice. Si los operandos estn consecutivos en la memoria, se accede a cada uno de
ellos incrementando el registro ndice.

MODO DE REGISTRO BASE


La direccin efectiva se obtiene como suma de la parte de direccin de la instruccin y el
contenido de un registro del procesador, llamado registro base.
Mientras que en el modo indexado el registro ndice contiene un nmero que es relativo a la
parte de direccin de la instruccin, en este modo el registro base es el que contiene la direccin
base y el campo de direcciones de la instruccin proporciona el desplazamiento relativo.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.3.- Modos de direccionamiento

RESUMEN
Para comparar los diferentes modos de
direccionamiento, consideraremos como
ejemplo una operacin de carga del
acumulador:

Opcode:
Carga ACC
ADRS o NBR: 500
Modo

Nemnico

Transferencias

Directo

LDA ADRS

Inmediato

250

PC=250

251
R1=400

Opcode

Modo

ADRS o NBR

252 Siguiente instruccin

ACC
Dir. ef.

ACC

ACC M[ADRS]

500

800

LDA #NBR

ACC NBR

251

500

Indirecto

LDA [ADRS]
LDA @ADRS

ACC M[M[ADRS]]

800

300

Relativo

LDA $ADRS

ACC M[ADRS+PC]

752

600

Indexado

LDA ADRS (R1) ACC M[ADRS+R1]

900

200

Registro
Registro
indirecto

LDA R1

ACC R1

400

LDA (R1)

ACC M[R1]

400

700

400

700

500

800

752

600

800

300

900

200

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.4.- Arquitecturas de conjunto de instrucciones

ARQUITECTURA RISC
Los procesadores de conjunto reducido de instrucciones RISC (Reduced Instruction Set
Computers) tienen las siguientes propiedades:
1) Las instrucciones slo realizan operaciones elementales.
2) Los accesos a memoria se restringen a las instrucciones de carga y almacenamiento.
Las instrucciones de manipulacin de datos son de registro a registro.
3) Nmero limitado de modos de direccionamiento.
4) Los formatos de todas las instrucciones tienen la misma longitud.
Caractersticas de la arquitectura RISC:
1) Su objetivo es conseguir un alto rendimiento (alta velocidad de ejecucin). Por ello los
accesos a memoria se limitan a las instrucciones de carga y almacenamiento.
2) Necesita un banco de registros relativamente grande.
3) Al tener las instrucciones una longitud fija, modos de direccionamiento limitados, y
realizar slo operaciones bsicas, la unidad de control es relativamente simple, y
tpicamente est cableada.
4) La organizacin interna del procesador es en pipeline.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.4.- Arquitecturas de conjunto de instrucciones

ARQUITECTURA CISC
Los procesadores de conjunto de instrucciones complejo CISC (Complex Instruction Set
Computers) tienen las siguientes propiedades:
1) Las instrucciones realizan tanto operaciones elementales como complejas.
2) Los accesos a memoria estn disponibles en prcticamente todos los tipos de
instrucciones.
3) Gran nmero de modos de direccionamiento.
4) Los formatos de las instrucciones son de diferente longitud.
Caractersticas de la arquitectura CISC:
1) Su objetivo es proporcionar instrucciones que faciliten realizar programas compactos y
as ahorrar memoria.
2) Debido a la alta accesibilidad de la memoria, el banco de registros es reducido.
3) Debido a la complejidad de las instrucciones y la diversidad de sus formatos, la unidad
de control es compleja y suele utilizar microprogramacin.
4) Internamente, las instrucciones CISC se convierten en una secuencia de instrucciones
RISC, siendo procesadas mediante un pipeline tipo RISC.

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.5.- Instrucciones de transferencia de datos
Las instrucciones de transferencia de datos mueven un dato de un lugar del procesador a
otro, sin modificarlo.
Las tpicas transferencias son entre memoria y los registros del procesador, entre estos y
los registros de entrada/salida (E/S), y entre los propios registros de procesador:
Nombre

Nemnico

Descripcin

Load

LD

Desde una posicin de memoria a un registro del procesador.

Store

ST

Desde un registro del procesador a una posicin de memoria.

Move

MOVE

Desde un registro del procesador a otro. Tambin se utiliza para


transferir datos entre dos posiciones de memoria.

Exchange XCH
Push

PUSH

Pop

POP

Input

IN

Output

OUT

Intercambia datos entre dos registros del procesador o entre dos


posiciones de memoria.
Transferencia de datos con la pila
Transferencia de datos con registros E/S

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.5.- Instrucciones de transferencia de datos

TRANSFERENCIA DE DATOS CON LA PILA


La arquitectura basada en pila posee caractersticas que facilitan ciertos tipos de procesamiento
de datos y de control de tareas. As, en algunas calculadoras y procesadores se usan pilas para
la evaluacin de expresiones aritmticas.
Las pilas en memoria se organizan mediante un registro especial, llamado puntero de pila SP
(Stack Pointer). El registro SP contiene la direccin del TOS.
PUSH es la instruccin que almacena datos en la pila, y POP la que los extrae de ella:
PUSH R1
POP R1

SP SP-1
M[SP] R1
R1 M[SP]
SP SP+1

Memoria
Dir.

PUSH

POP

SP se inicializa con la direccin de memoria donde quiera iniciarse la pila (104 en el ejemplo).

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.5.- Instrucciones de transferencia de datos

TRANSFERENCIA DE DATOS CON REGISTROS E/S


Los registros E/S, llamados comnmente puertos, son los que utiliza un procesador para
intercambiar datos con dispositivos externos (perifricos). Normalmente cada puerto
disponible tendr asociado un cdigo de direccin.
Las direcciones de los puertos pueden asignarse de dos formas:
a) Sistemas con E/S independiente o separada.
- El rango de direcciones asignadas a la memoria y a los puertos de E/S son
independientes entre s.
- El procesador tiene instrucciones de transferencia de datos diferentes, segn se trate
de transferencias con la memoria o con los puertos E/S: LD y ST para la memoria, e IN
y OUT para los puertos.
b) Sistemas con E/S mapeada o ubicada en memoria.
- Se asigna un subrango de direcciones de memoria para direccionar los puertos E/S:
cada puerto E/S se trata como una posicin de memoria ms.
- El procesador no tiene instrucciones de transferencia de datos especficas para E/S, se
usan las mismas que las de la memoria, LD y ST.
- Debido a la complejidad extra que conlleva la E/S independiente, el procesador con
E/S mapeada requiere menos lgica interna, es ms barato y rpido (tipo RISC).

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.6.- Instrucciones de manipulacin de datos
Las instrucciones de manipulacin de datos realizan operaciones sobre los datos,
proporcionando los recursos de clculo del procesador. Son de tres tipos:
1) Instrucciones aritmticas.
2) Instrucciones lgicas y de manipulacin de bits.
3) Instrucciones de desplazamiento.

INSTRUCCIONES ARITMTICAS
Nombre

Nemnico

Descripcin

Incremento

INC

Suma uno. Si todos los bits son 1, genera una palabra con todos los bits a 0.

Decremento

DEC

Restar uno. Si todos los bits son 0, genera una palabra con todos los bits a 1.

Suma
Resta
Multiplicacin
Divisin

ADD
SUB
MUL
DIV

En procesadores sencillos slo estn disponibles las operaciones de suma y de


resta. En esos casos, la multiplicacin y la divisin se tienen que hacer mediante
programas. Normalmente estas operaciones estn disponibles para diferentes
tipos de datos.

Suma con
acarreo

ADDC

Suma dos operandos teniendo en cuenta el acarreo del clculo anterior.


Permite clculos de doble precisin.

Resta con
acarreo

SUBB

Resta dos operandos teniendo en cuenta el acarreo (borrow) del clculo


anterior. Permite clculos de doble precisin.

Resta inversa

SUBR

Invierte el orden de los operandos, haciendo la resta B-A en lugar de A-B.

Negativo

NEG

Halla el complemento a dos del operando.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.6.- Instrucciones de manipulacin de datos

INSTRUCCIONES LGICAS Y DE MANIPULACIN DE BITS


Mediante la aplicacin de operaciones lgicas, estas instrucciones permiten la
manipulacin de bits o de grupos de bits en palabras almacenadas en registros o en
memoria.
Normalmente, estas instrucciones tratan cada bit del operando individualmente.
Nombre

Nemnico

Descripcin

Poner a 0 (Clear)

CLR

Pone todos los bits del operando a 0.

Poner a 1 (Set)

SET

Pone todos los bits del operando a 1.

Complementar

NOT

Complementa los bits del operando.

Producto lgico
Suma lgica
OR exclusiva

AND
OR
XOR

Realizan la funcin lgica correspondiente entre dos operandos bit a bit.


AND se usa con mscaras para poner selectivamente a 0 algunos bits de los
operandos, OR para ponerlos a 1, y XOR para complementarlos.

Poner a 0 el acarreo
(Clear Carry)
Poner a 1 el acarreo
(Set Carry)
Complementar
el acarreo

CLRC
SETC
COMC

Estas instrucciones sobre el bit de acarreo pueden definirse para los


dems bits de estado del procesador.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.6.- Instrucciones de manipulacin de datos

INSTRUCCIONES DE DESPLAZAMIENTO
Permiten desplazar o rotar los bits de un operando de diversas formas:
Nombre

Nemnico

Descripcin

Desplazamiento lgico a la derecha

SHR

Desplazamiento lgico a la izquierda

SHL

Desplazamiento aritmtico a la derecha

SHRA

Desplazamiento aritmtico a la izquierda

SHLA

Rotacin a la derecha

ROR

Rotacin a la izquierda

ROL

Rotacin a la derecha con acarreo

RORC

Rotacin a la izquierda con acarreo

ROLC

C
C

0
C

C
C
C

Algunos procesadores tienen un formato para la instruccin de desplazamiento con varios campos:
1) OP: Cdigo de operacin que indica un desplazamiento.
2) REG: Direccin que especifica la localizacin del operando.
3) TYPE: Cdigo de dos bits que indica el tipo de desplazamiento.
4) RL: Cdigo de un bit que indica la direccin de desplazamiento.
5) COUNT: Cdigo de k bits que indica el nmero de posiciones a desplazar.

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.7.- Aritmtica de punto flotante

NOTACIN DE PUNTO FLOTANTE


En muchos clculos cientficos, el rango de los nmeros que se utilizan es muy grande. Para
poder representar tales nmeros en un procesador se utiliza la notacin de punto flotante.
Los nmeros en punto flotante tienen dos partes:
a) Mantisa (F): Contiene el signo del nmero y una
fraccin.
b) Exponente (E): indica la posicin del punto decimal.

Ejemplo: 6132.789
F = +.6132789
E = +04

Los nmeros decimales N en punto flotante se interpretan como: N = F10 E.


Un nmero binario B en punto flotante se representa de forma similar, salvo que se usa la base
2. As, por ejemplo, con 8 bits para la mantisa y 6 para el exponente, el nmero binario +1001.11
se representara por:
F: 01001110
E: 000100
B = F2E = +(0.1001110) 24
Indica el signo

Se dice que un nmero en punto flotante est normalizado cuando el dgito ms significativo de
la mantisa es distinto de 0. Por ejemplo, la mantisa decimal 0.3512 est normalizada, mientras
que 0.0035 no. Los nmeros normalizados proporcionan la mxima precisin posible.
La notacin de punto flotante incrementa el rango de los nmeros que se pueden representar en
un registro de un determinado tamao. Ejemplo: un registro de 48 bits:
a) Permite representar enteros en el intervalo [-2 47, 247-1], aproximadamente 1.41014.
b) En punto flotante con 36 bits de mantisa y 12 de exponente, los nmeros positivos y
negativos ms grandes que se pueden representar son: (1-2-35)22047, aprox. 1.610616.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.7.- Aritmtica de punto flotante

OPERACIONES ARITMTICAS
Las operaciones aritmticas con nmeros en punto flotante son ms complicadas que con
nmeros enteros, su ejecucin lleva ms tiempo y requiere un hardware ms complejo.
Para hacer sumas y restas es necesario alinear los puntos decimales: hay que igualar los
exponentes para poder sumar las mantisas.
Ejemplo:

0.5372400 10
+ 0.1580295 10-1
2

Se modifica el nmero de menor exponente


desplazando la mantisa a la derecha un nmero de
posiciones igual a la diferencia de exponentes

0.5372400 102
+ 0.0001580 102

0.5373980 102
Si se produce un acarreo final (overflow), se desplaza la mantisa una posicin a la derecha y se
incrementa el exponente, para que el resultado final de la suma est normalizado.
Si en una resta el resultado contiene ceros en los dgitos ms significativos de la mantisa, se
desplaza a la izquierda y se decrementa el exponente para normalizarlo.
Ejemplo:

0.56780 105
- 0.56430 105
0.00350 105

Se desplaza la mantisa dos lugares a la izquierda y se


decrementa el exponente dos veces

0.35000 103

En la mayora de los procesadores, la normalizacin de los resultados se realiza automticamente.


La multiplicacin y la divisin no necesitan alinear los puntos decimales. Para multiplicar, se hace
el producto de las mantisas y se suman los exponentes. Para dividir, se dividen las mantisas y se
restan los exponentes.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.7.- Aritmtica de punto flotante

EXPONENTE SESGADO
Normalmente, los procesadores usan para la mantisa una notacin de magnitud y signo. En el
caso de los exponentes, en la mayora de los casos se utilizan los llamados exponentes sesgados
(biased exponents). El sesgo es un valor fijo que se suma al exponente de forma que,
internamente, todos los exponentes pasen a ser positivos. En consecuencia, se elimina el signo
del exponente.
Ejemplo:
Supongamos que manejamos un rango de exponentes E decimales entre -99 y +99. Por tanto,
para su representacin necesitamos dos dgitos ms el signo. Utilizando como sesgo el valor 99,
se tiene que el exponente sesgado e ser:
e = E + 99

Si E = -99, se tiene e = 0
Si E = +99, se tiene e = 198

As, el exponente sesgado se representar en un registro de tres dgitos como un nmero positivo
en el rango de 000 a 198.
El uso de exponentes sesgados tiene varias ventajas:
- Al ser nmeros positivos, es ms fcil comparar su magnitud relativa a la hora de hacer
operaciones en punto flotante.
- El exponente ms negativo se convierte a exponente sesgado con todos los dgitos a 0. De esta
forma, el cero se representa con la mantisa en cero y el exponente sesgado tambin en 0.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.7.- Aritmtica de punto flotante

NOTACIN ESTNDAR
Las instrucciones aritmticas que realizan operaciones con datos en punto flotante utilizan
habitualmente el subfijo F. Ejemplo: ADDF.
Hay dos formatos estndar para la representacin de operandos en punto flotante:
- Datos en precisin simple (32 bits), o real corto.
- Datos en precisin doble (64 bits), o real largo.
Cuando estn disponibles los dos tipos de datos en un procesador, el nemnico de las
instrucciones de precisin simple usa el subfijo FS, y los de doble precisin el subfijo FL (del
ingls floating-point short y long). Ejemplos: ADDFS y ADDFL.
El formato estndar IEEE (Institute of Electrical and Electronics Engineers) para un operando en
precisin simple es:
1 bit
8 bits
23 bits
s
31 30

e
...

f
23 22

...

En la mantisa se inserta implcitamente un bit 1 a la izquierda del punto decimal, lo cual expande
el nmero total de bits a 24 y hace que el operando deba estar siempre normalizado.
A la componente del nmero binario en punto flotante, que consiste en un bit 1 implcito a la
izquierda del punto decimal, junto con los bits del campo f, recibe el nombre de parte significativa.
Aunque ese 1 no est presente, el hardware lo tiene en cuenta a la hora de hacer operaciones.
Campo f
Ejemplos:
Parte significativa
Equivalente decimal
100 . . . 0
1.100 . . . 0
1.50
010 . . . 0
1.010 . . . 0
1.25
000 . . . 0
1.000 . . . 0
1.00 (si e0)

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.7.- Aritmtica de punto flotante

NOTACIN ESTNDAR
En el exponente se usa un sesgo igual a 127. el rango vlido para los exponentes va desde -126
(00000001) hasta +127 (11111110).
Ejemplos:
Exponente E
en decimal

Exponente sesgado e = E+127


Decimal

Binario

El valor del nmero representado se obtiene aplicando la expresin: (-1)s (1.f) 2e-127
La mayor magnitud que se puede representar es: (1.111...11)2254-127 = (2-2-23)2127 3.401038
La menor magnitud que se puede representar es: (1.000...01)21-127 = (1+2-23)2-126 1.1810-38
Los valores mximo (11111111) y mnimo (00000000) del exponente se reservan para representar
condiciones excepcionales:
a) Con e = 255 y f = 0 se representa .
b) Con e = 255 y f 0 se representa NaN (Not a Number), se ignora el signo (Ej.: -1).
c) Con e = 0 y f = 0 se representa 0.
d) Con e = 0 y f 0 se tiene un nmero no normalizado (magnitud < 1.1810 -38).

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.8.- Instrucciones de control de programa
Las instrucciones de un programa se almacenan en posiciones de memoria consecutivas. Cada
vez que se extrae una instruccin de la memoria, el PC se incrementa para apuntar a la siguiente
instruccin del programa.
Las instrucciones de control de programa permiten alterar el flujo de ejecucin de los programas
actuando sobre el contenido del PC. Con ellas, los procesadores pueden ejecutar diferentes
secuencias de instrucciones en funcin de los resultados de clculos previos.
Nombre

Nemnico

Descripcin

Bifurcacin (Branch)
Salto (Jump)

BR
JMP

Normalmente se diferencian slo en el modo de direccionamiento, que suele ser


directo o indirecto en los saltos, y relativo en las bifurcaciones. Son instrucciones
de una sola direccin, y transfieren la direccin efectiva al PC. Pueden ser
incondicionales o condicionales.

Salto implcito (Skip)

SKP

Salta la siguiente instruccin de la secuencia si se cumple una determinada


condicin. Para ello incrementa el PC en su fase de ejecucin. No necesita
campo de direcciones. Puede combinarse con una instruccin de salto
incondicional para hacer una bifurcacin condicional.

Llamada a subrutina
Retorno de subrutina

CALL
RET

Instrucciones para el manejo de subrutinas.

Comparacin

CMP

Realiza la comparacin de dos operandos mediante una substraccin, pero sin


almacenar el valor de la resta. Puede producir un salto condicional, cambiar el
contenido de un registro o modificar los bits de estado.

Test mediante AND

TEST

Realiza la funcin AND de dos operandos, pero sin almacenar el resultado.


Puede producir los mismos efectos que la instruccin de comparacin.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.8.- Instrucciones de control de programa

INSTRUCCIONES DE SALTO CONDICIONAL


Comprueban los bits de estado para una determinada condicin: si es cierta, el control de
programa se transfiere a la direccin efectiva, y si es falsa se contina con la ejecucin de la
instruccin siguiente.
Condicin de bifurcacin

Nemnico

Test

Descripcin

Bifurcacin si es cero

BZ

Z=1

Bifurcacin si no es cero

BNZ

Z=0

El bit de estado Z se usa para comprobar si el


resultado de una operacin de la ALU es 0.

Bifurcacin si hay acarreo

BC

C=1

Bifurcacin si no hay acarreo

BNC

C=0

Bifurcacin si negativo

BN

N=1

Bifurcacin si positivo

BNN

N=0

Bifurcacin si hay desbordamiento

BV

V=1

Bifurcacin si no hay desbordamiento

BNV

V=0

El bit de acarreo C se usa para comprobar el


acarreo despus de una suma o resta en la
ALU. Tambin se utiliza en las instrucciones de
desplazamiento para comprobar el bit saliente.
El bit de estado N refleja el estado del bit ms
significativo de la salida de la ALU, tanto si
representa el signo como si no.
El bit de desbordamiento V se usa en
operaciones aritmticas de nmeros con signo.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.8.- Instrucciones de control de programa

INSTRUCCIONES DE SALTO CONDICIONAL


Las comparaciones de dos palabras A y B se hacen mediante una operacin de resta (A-B). El
resultado no se almacena, pero los bits de estado se ven afectados.
Para nmeros binarios sin signo:
Condicin de bifurcacin

Nemnico

Condicin

Bits de estado

Bifurcacin si es mayor
Bifurcacin si es mayor o igual
Bifurcacin si es menor
Bifurcacin si es menor o igual
Bifurcacin si es igual
Bifurcacin si no es igual

BH
BHE
BL
BLE
BE
BNE

A>B
AB
A<B
A B
A= B
AB

C+Z = 0
C=0
C=1
C+Z = 1
Z=1
Z=0

Condicin de bifurcacin

Nemnico

Condicin

Bits de estado

Bifurcacin si es mayor
Bifurcacin si es mayor o igual
Bifurcacin si es menor
Bifurcacin si es menor o igual
Bifurcacin si es igual
Bifurcacin si no es igual

BG
BGE
BL
BLE
BE
BNE

A> B
A B
A< B
A B
A= B
A B

(NV)+Z = 0
NV = 0
NV = 1
(NV)+Z = 1
Z=1
Z=0

Para nmeros binarios con signo:

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.8.- Instrucciones de control de programa

SUBRUTINAS
Es relativamente frecuente que conjuntos de instrucciones en un programa se repitan. En lugar
de copiar varias veces en memoria las mismas secuencias de instrucciones, se almacenan una
nica vez en lo que se denomina subrutina. Cada vez que se necesite ejecutar esa secuencia se
hace un salto a la primera instruccin de la subrutina. Cuando se termine de ejecutar la subrutina,
se hace otro salto para volver al programa principal.
La instruccin de llamada a subrutina CALL posee un campo de direccin y realiza dos
operaciones:
1) Guarda el valor del PC en una zona de almacenamiento temporal (direccin de retorno).
2) La direccin de la instruccin CALL se carga en el PC (primera instruccin de la subrutina).
La ltima instruccin de una subrutina es la de retorno al programa principal RET: carga en el PC
la direccin almacenada por la instruccin CALL.
Algunos procesadores utilizan una pila como almacenamiento temporal de las direcciones de
retorno, lo cual permite manejar subrutinas anidadas:
CALL dir:

SP SP-1
M[SP] PC
PC dir

Decrementa el puntero de pila.


Almacena la direccin de retorno en la pila.
Transfiere el control a la subrutina.

RET:

PC M[SP]
SP SP+1

Transfiere la direccin de retorno al PC.


Incrementa el puntero de pila.

TEMA 3: ARQUITECTURA DEL CONJUNTO


DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computacin.
3.2.- Direccionamiento de operandos.
3.3.- Modos de direccionamiento.
3.4.- Arquitecturas de conjunto de instrucciones.
3.5.- Instrucciones de transferencia de datos.
3.6.- Instrucciones de manipulacin de datos.
3.7.- Aritmtica de punto flotante.
3.8.- Instrucciones de control de programa.
3.9.- Interrupciones.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.9.- Interrupciones
Un interrupcin transfiere el control del programa que est en ejecucin a otro programa de
servicio como resultado de una peticin, ya sea interna o externa al procesador. El control
debe volver al programa original una vez se ha ejecutado el programa de servicio.
El tratamiento de las interrupciones es similar al que se hace con las subrutinas, salvo que:
1) Las interrupciones se producen de forma imprevisible.
2) La direccin del programa de servicio se determina por hardware.
3) Se almacena no slo el valor del PC, sino tambin los registros del procesador.
El uso de interrupciones est muy relacionado con los diferentes modos de funcionamiento
de un procesador:
- Modo supervisor. El procesador ejecuta el sistema operativo, programa que se encarga
de supervisar y controlar todos los elementos del computador.
- Modo usuario. El procesador ejecuta un programa de usuario. No se tiene acceso a un
conjunto de instrucciones privilegiadas, slo permitidas en el modo supervisor.
El paso de un modo de funcionamiento al otro se puede hacer como respuesta a una
interrupcin. El PSR, adems de almacenar los bits de estado, puede especificar qu
interrupciones estn permitidas y si el sistema est en modo usuario o supervisor.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.9.- Interrupciones
Posibilidades respecto del tratamiento de la informacin del procesador al producirse una interrupcin:
- Que slo se almacene el PC. El programa que realiza el procesado de los datos para dar servicio a
la interrupcin debe incluir instrucciones que permitan almacenar los contenidos importantes del
conjunto de registros.
- Que el contenido de todos los registros se almacene de forma automtica y transparente al usuario.
- Que el procesador emplee varios conjuntos de registros para cada modo de funcionamiento.
Posibilidades respecto del procedimiento hardware para seleccionar la direccin de la rutina de servicio:
- Se asigna una nica direccin de memoria. La rutina de servicio debe determinar la fuente de
interrupcin y proceder a atenderla.
- Se asignan diferentes direcciones para cada fuente de interrupcin posible.
- La direccin es proporcionada por la propia fuente de interrupcin.
Tratamiento de las interrupciones:
1) Se termina de ejecutar la instruccin del programa en curso.
2) Antes de acceder a la siguiente instruccin del programa, se comprueba si ha habido alguna
peticin de interrupcin.
3) Si se ha producido, se pasa a un ciclo de interrupcin hardware: se almacena el valor del PC y
de los registros del procesador en una pila, y se transfiere al PC la direccin de comienzo de la
rutina que da servicio a la interrupcin.
4) La ltima instruccin de la rutina de servicio es de retorno: se extrae de la pila la direccin de
retorno al programa en curso y se transfiere al PC, as como el resto de informacin de los
registros de procesador.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.9.- Interrupciones

TIPOS DE INTERRUPCIONES
Los principales tipos de interrupciones que provocan una ruptura en la ejecucin normal de un
programa son:
1) Interrupciones externas.
Pueden proceder de:
- Dispositivos de E/S, que solicitan o acaban una transferencia de datos.
- Dispositivos de temporizacin, cuando un determinado evento no finaliza en el tiempo
esperado (time-out).
- La deteccin de un fallo de alimentacin. El servicio puede incluir instrucciones para
almacenar la informacin relevante del procesador en un medio no voltil (disco
magntico).
2) Interrupciones internas.
Reciben tambin el nombre de excepciones. Pueden deberse a:
- Desbordamiento aritmtico. Ej.: divisin por cero.
- Desbordamiento de memoria. Ej.: se excede el tamao mximo de la pila, violacin de una
proteccin, puntero desbocado.
- Cdigo de operacin no vlido.
3) Interrupciones software.
Mientras que los dos tipos anteriores son iniciados por el hardware del procesador, una
interrupcin software se inicia mediante la ejecucin de una instruccin. Se emplean para
cambiar del modo usuario al modo supervisor y as solicitar algn servicio gestionado por el
sistema operativo.

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES


3.9.- Interrupciones

PROCESAMIENTO DE INTERRUPCIONES EXTERNAS


Si existen ms lneas de interrupciones
externas que entradas de interrupcin al
procesador, se conectan a una puerta OR para
formar una lnea comn.

Interrupciones externas

EI es un flip-flop de habilitacin de interrupcin


que el usuario puede poner a 1 o a 0 con dos
instrucciones, ENI (enable interrupt) y DSI
(disable interrupt), respectivamente. Est
incluido en el PSR.
Si se produce una peticin de interrupcin, ha
terminado de ejecutarse la instruccin en
Direccin del vector
curso, y EI = 1:
de interrupcin
INTACK 1
Se reconoce la interrupcin
SP SP-1
Decrementa el puntero de pila
M[SP] PC
Almacena la direccin de retorno en la pila
SP SP-1
Decrementa el puntero de pila
M[SP] PSR Almacena el estado del procesador en la pila
EI 0
Deshabilita las interrupciones
PC IVAD
Se accede a la rutina de servicio

Procesador (CPU)
Fin de ejecucin
de instruccin

Reconocimiento
de interrupcin
Pila en
memoria

La ltima instruccin de la rutina de servicio es un retorno. La pila se vaca y la direccin de vuelta al


programa original pasa al PC. Como EI est incluido en el PSR, el sistema de interrupciones, tal y como
estuviera definido en el programa original, se recupera automticamente.

You might also like