Professional Documents
Culture Documents
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.
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.
ADD T2, C, D
MUL X, T1, 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).
M[T1] M[A]
ADD T1, B
MOVE X, C
M[X] M[C]
ADD X, D
MUL X, 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.
ACC M[A]
ADD
ST
M[X] ACC
LD
ACC M[C]
ADD
MUL
ST
M[X] ACC
TOS M[B]
ADD
B
A
A+B
PUSH C
TOS M[C]
C
A+B
PUSH D
TOS M[D]
D
C
A+B
ADD
C+D
A+B
MUL
(A+B)(C+D)
POP
M[X] TOS
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
ADD T2, C, D
MUL X, T1, T2
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
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.
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
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.
ADD
(R1)+, 3
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.
250
251
ACC
Opcode
Modo
PC=300
ADRS
300
301
ACC
500
800
Carga ACC
Direccin directa
500
ACC 800
PC 252
ADRS
Programa
Datos
Opcode:
Modo:
ADRS:
Operacin:
Modo
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
250
251
ACC
Opcode
Modo
ADRS
Opcode:
Modo:
ADRS:
Operacin:
Operacin:
ACC M[M[ADRS]]
800
Datos
800
625
Datos
250
251
ACC
Opcode:
Modo:
ADRS:
Operacin:
Carga ACC
Direccin relativa
500
ACC 800
PC 252
Operacin:
ACC M[ADRS+PC]
Opcode
Modo
ADRS
800
Datos
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
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
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
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.
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.
Nemnico
Descripcin
Load
LD
Store
ST
Move
MOVE
Exchange XCH
Push
PUSH
Pop
POP
Input
IN
Output
OUT
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).
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
Suma con
acarreo
ADDC
Resta con
acarreo
SUBB
Resta inversa
SUBR
Negativo
NEG
Nemnico
Descripcin
Poner a 0 (Clear)
CLR
Poner a 1 (Set)
SET
Complementar
NOT
Producto lgico
Suma lgica
OR exclusiva
AND
OR
XOR
Poner a 0 el acarreo
(Clear Carry)
Poner a 1 el acarreo
(Set Carry)
Complementar
el acarreo
CLRC
SETC
COMC
INSTRUCCIONES DE DESPLAZAMIENTO
Permiten desplazar o rotar los bits de un operando de diversas formas:
Nombre
Nemnico
Descripcin
SHR
SHL
SHRA
SHLA
Rotacin a la derecha
ROR
Rotacin a la izquierda
ROL
RORC
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.
Ejemplo: 6132.789
F = +.6132789
E = +04
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.
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
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
0.35000 103
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.
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)
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
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).
Nemnico
Descripcin
Bifurcacin (Branch)
Salto (Jump)
BR
JMP
SKP
Llamada a subrutina
Retorno de subrutina
CALL
RET
Comparacin
CMP
TEST
Nemnico
Test
Descripcin
Bifurcacin si es cero
BZ
Z=1
Bifurcacin si no es cero
BNZ
Z=0
BC
C=1
BNC
C=0
Bifurcacin si negativo
BN
N=1
Bifurcacin si positivo
BNN
N=0
BV
V=1
BNV
V=0
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
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
RET:
PC M[SP]
SP SP+1
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.
Interrupciones externas
Procesador (CPU)
Fin de ejecucin
de instruccin
Reconocimiento
de interrupcin
Pila en
memoria