Repertorio de instrucciones y formato de la instrucción máquina

Anuncio
1
Estructura y Tecnología de Computadores
Módulo C. Arquitectura del procesador
Tema 5. Repertorio de instrucciones y formato de la
instrucción máquina
José Manuel Mendías Cuadros
Dpto.
Dpto. Arquitectura de Computadores y Automática
Universidad Complutense de Madrid
2
contenidos
1. Repertorio de instrucciones
Clasificación de las instrucciones. Transferencia de datos. Instrucciones aritméticas.
Instrucciones lógicas y de manipulación de bits. Desplazamiento y rotación. Control de flujo.
Otras instrucciones
2. Aplicaciones del repertorio de instrucciones
Ejecución alternativa. Ejecución iterativa. Subrutinas
3. Formato de la instrucción máquina
Lenguaje ensamblador vs. código máquina. Elementos constitutivos de una instrucción
máquina. Alternativas de diseño del formato de instrucción. Número de operandos explícitos
de una instrucción. Ejemplo de diseño del formato de la instrucción máquina. Ciclo de
instrucción
4. Arquitecturas CISC y RISC
Arquitecturas CISC. Problemas de las arquitecturas CISC. Características de las
arquitecturas RISC. Ventajas y desventajas de las arquitecturas RISC. Computadores CISC
y computadores RISC.
5. Ejemplos
MC68000. Arquitectura MIPS
estructura y tecnología de computadores
3
1. repertorio de instrucciones
Clasificación de las instrucciones
Ö Transferencia de datos, permiten el movimiento entre distintos dispositivos de
almacenamiento del computador
Ö Aritméticas, permiten realizar operaciones de tipo aritmético
Ö Lógicas y de manipulación de bits, permiten realizar operaciones lógicas, bit a
bit, entre los operandos o manipular un bit del operando
Ö Desplazamiento y rotación, permiten desplazar o rotar un operando a la decha.
o la izda. un nº determinado de bits
Ö Control de flujo, permiten romper la secuencia normal de ejecución
Ö Otras instrucciones
Ø Transformación de datos
Ø Manipulación de direcciones
Ø Creación de marcos de almacenamiento local
Ø Control del sistema
Ø E/S
estructura y tecnología de computadores
4
1. repertorio de instrucciones
Trasferencia de datos
Ö Permiten el movimiento entre distintos dispositivos de almacenamiento del computador:
Ø Reg → Reg
Ø Reg → Mem
Ø Reg → Pila
Ø Mem → Reg
Ø Mem → Mem
Ø Mem → Pila
Ø Pila → Reg
Ø Pila → Mem
Ö Necesario especificar:
Ø
Ø
Ø
Ø
Tipo de movimiento
Dirección de operandos fuente y destino
Tamaño de datos a mover (byte, palabra, doble palabra, ...)
Nº de elementos a mover (para movimientos múltiples)
Instrucción
Operación
Descripción
MOVE
fuente,destino
destino ← fuente
Transfiere palabra de reg. a reg., reg. a mem, mem. a reg
o mem. a mem. (fuente= mem. o reg.; destino = mem. o reg.)
LOAD
STORE
PUSH
POP
MOVEM
Ri, dir
dir, Ri
fuente
destino
fnte., dest., n
Ri ← dir
Ri ← dir
Pila ← fuente
destino ← Pila
fnte0 ← dest0 ......
....... fnten-1 ← destn-1
Transfiere palabra de memoria a registro
estructura y tecnología de computadores
Transfiere palabra de registro a memoria
Transfiere palabra de mem. o reg. a la cabecera de pila
Transfiere palabra de cabecera de pila a mem. o reg.
Transfiere n palabras a partir de una dir. inicial fuente
y una dir. inicial destino
5
1. repertorio de instrucciones
Instrucciones aritméticas
Ö Permiten realizar operaciones de tipo aritmético
Ö Necesario especificar:
Ø
Ø
Ø
Ø
Tipo de operación (suma, resta, multiplicación, división, etc.)
Tipo de operandos y de aritmética (con signo, sin signo, entera, punto flotante, BCD, ...)
tamaño de datos sobre los que se opera
Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el repertorio)
Instrucción
Operación
Descripción
ADD
SUB
dest ← fnt1+fnt2
dest ← fnt1-fnt2
Suma dos operandos
Resta dos operandos
fnte1,fnte2,dest
fnte1,fnte2,dest
MULT
fnte1,fnte2,dest
dest ← fnt1*fnt2
Multiplica dos operandos
DIV
fnte1,fnte2,dest
dest ← fnt1/fnt2
Divide dos operandos
NEG
fnte,dest
dest ← - fnt
Cambia de signo al operando
ABS
fnte,dest
dest ← Abs(fnt)
Obtiene el valor absoluto del operando
INC
DEC
COMP
fnte,dest
fnte,dest
fnte1,fnte2
dest ← fnt+1
dest ← fnt-1
fnt1-fnt2
Suma 1 al operando
Resta 1 al operando
Activa Estado
Compara dos operandos y activa los bits de
estado según el resultado de la comparación
estructura y tecnología de computadores
6
1. repertorio de instrucciones
Instrucciones lógicas y de manipulación de bits
Ö Permiten realizar operaciones lógicas, bit a bit, entre los operandos o manipular un
bit del operando
Ö Necesario especificar:
Ø
Ø
Ø
Ø
Tipo de operación (AND, OR, NOT, Bit Clear, Bit Set, etc)
Tamaño de datos sobre los que se opera (byte, palabra, doble palabra, ...)
Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el repertorio)
El número de bit en las instrucciones de manipulación de bit
Instrucción
Operación
Descripción
AND
OR
NOT
XOR
fnte1,fnte2,dest
fnte1,fnte2,dest
fnte,dest
fnte1,fnte2,dest
dest ← fnt1 AND fnt2
dest ← fnt1 OR fnt2
dest ← NOT fnt
dest ← fnt1 XOR fnt2
Realiza la Y lógica de dos operandos
Realiza la O exclusiva de dos operandos
BCLR
dest, n
dest(n) ← 0
Pone a cero el bit especificado
Realiza la O lógica de dos operandos
Realiza la negación lógica del operando
BSET
dest, n
dest(n) ← 1
Pone a uno el bit especificado
BTST
fnte, n
Estado ← fnte(n)
Activa estado según valor del bit indicado
estructura y tecnología de computadores
7
1. repertorio de instrucciones
Desplazamiento y rotación
Ö Permiten desplazar o rotar un operando a la decha. o la izda. un nº determinado de bits
Ö Necesario especificar:
Ø
Ø
Ø
Ø
Tipo de operación (desplazamiento izda. o decha., rotación izda. o decha., )
Tamaño de datos sobre los que se opera (byte, palabra, doble palabra, ...)
Dirección del operando
Nº de bits a desplazar o rotar
Instrucción
Operación
Descripción
0
LSL
fnte,n
LSR
fnte,n
ASL
fnte,n
ASR
fnte,n
Desplaz. aritm. decha. n bits (Arith. Shift Right)
RL
dest, n
Rotación izda. n bits (Rotate Left)
RR
dest, n
Rotación decha. n bits (Rotate Right)
0
Desplaz. lógico izda. n bits (Logic Shift Left)
Desplaz. lógico decha. n bits (Logic Shift Right)
0
Desplaz. aritm. izda. n bits (Arith. Shift Left)
estructura y tecnología de computadores
8
1. repertorio de instrucciones
Control de flujo
Ö Permiten romper la secuencia normal de ejecución y saltar a una determinada dirección
especificada en la instrucción o implícita
Ö Necesario especificar:
Ø Dirección de siguiente instrucción a ejecutar si el salto es explícito
Instrucción
Operación
Descripción
JMP
dir
PC ← dir
Salta (Jump) a la dirección especificada
Bcc
dir
If cc=TRUE then PC ← dir
Else PC ← PC + long_instr
Bifurca (Branch) a la dirección especificada si la
JSR
dir
Estado, PC → Pila; PC ← dir
Salto a subrutina; guarda en pila PC y estado
RTS
SKIP
NOP
n
condición es cierta
Estado, PC ← Pila
Retorno de subrutina; recupera de pila PC y estado
PC ← PC + n* long_instr
Salta el nº de instrucciones especificado
PC ← PC + long_instr
No ejecuta ninguna operación, pero la ejecución
continúa secuencialmente
estructura y tecnología de computadores
9
1. repertorio de instrucciones
Control de flujo (cont
.)
(cont.)
Ö Las instrucciones de bifurcación o salto condicional (Bcc), saltan o no en función de la
condición especificada
Ö Esta condición se calcula a partir de los bits de condición del registro de estado
Ø Los bits de condición se activan según el resultado de las instrucciones ejecutadas anteriormente
Condic.
Nombre
Es cierta si
EQ
NEQ
GT
GE
LT
LE
Z
NZ
P
N
C
NC
V
NV
T
F
Igual (Equal)
No igual (No equal)
Mayor que (Greater Than)
Mayor o igual (Gr. or Eq.)
Menor que (Less Than)
Menor o igual (Les.or Eq.)
Cero (Zero)
No cero (No Zero)
Positivo
Negativo
Acarreo (Carry)
No acarreo (No Carry)
Desbord. (Overflow)
No desbord. (No Overfl.)
Verdad (True)
Falso (False)
En una comparación previa los operandos son iguales
En una comparación previa los operandos son distintos
En una comparación previa el primer operando es mayor que el segundo
En una comparación previa el primer operando es mayor o igual que el segundo
En una comparación previa el primer operando es menor que el segundo
En una comparación previa el primer operando es menor o igual que el segundo
El resultado de una operación anterior es cero
El resultado de una operación anterior es distinto de cero
El resultado de una operación anterior es positivo
El resultado de una operación anterior es negativo
El resultado de una operación anterior ha producido acareo
El resultado de una operación anterior no ha producido acareo
El resultado de una operación anterior ha producido desbordamiento
El resultado de una operación anterior no ha producido desbordamiento
Siempre cierta
Siempre falsa
estructura y tecnología de computadores
10
1. repertorio de instrucciones
Otras instrucciones
Ö En este grupo están englobadas distintas instrucciones
Ø Transformación de datos
Ø Cambian el formato de los datos, por ej. de decimal a binario
Ø Manipulación de direcciones
Ø Permiten calcular la dirección efectiva de un operando y almacenarla en un registro o en
pila, p. ej.
ü LEA fnte, reg
(Load effective address: reg ← Dirección de fnte)
ü PEA fnte
(Push Effective Address: Pila ← Dirección de fnte)
Ø Creación de marcos de almacenamiento local
ü Permiten reservar espacio en la pila del sistema, p. ej:
ü LINK reg, #tam (Pila ← reg, reg ← SP, SP ← SP+tam)
ü UNLK reg
(SP ← reg, reg ← Pila)
Ø Control del sistema
Ø Suelen ser instrucciones privilegiadas que usa el sistema operativo, p. ej.:
ü RESET, para reiniciar el computador (PC ← valor inicial)
ü RTE: retorno de excepción o interrupción
Ø E/S
Ø Para entrada y salida de datos entre el computador y dispositivos periféricos, p. ej.:
ü IN dir_perif, reg
(reg ← perif)
ü OUT dir_perif, reg
(perif ← reg )
estructura y tecnología de computadores
11
2. aplicaciones del repertorio de instrucciones
Ejecución alternativa
Ö Según el valor de cierta condición o valor, se decide entre varios caminos de ejecución
simple
doble
···
if a cc b then
bloque
end
···
end
múltiple
···
if a0 cc0 b0 then
bloque0
else if a1 cc1 b1 then
bloque1
···
else if an ccn bn then
bloquen
else
blqelse
end
···
if1
ifn
else
end
···
CMP
a, b
Bcc
end
bloque
···
···
CMP
Bcc0
bloque0
JMP
CMP
Bcc1
bloque1
JMP
···
CMP
Bccn
bloquen
JMP
blqelse
···
···
if a cc b then
blqthen
else
blqelse
end
···
else
end
a0, b0
if1
end
a1, b1
if2
end
an, bn
else
end
tabla
selectiva
···
case a of
0: bloque0
1: bloque1
···
n: bloquen
end
···
etq0
etq1
etqn
end
···
CMP
a, b
Bcc
else
blqthen
JMP
end
blqelse
···
DATA etq0
DATA etq1
···
DATA etqn
···
MOVE a, D1
LEA
tabla(D1*tam_dir), A1
JMP
(A1)
bloque0
JMP end
bloque1
JMP end
···
bloquen
···
estructura y tecnología de computadores
12
2. aplicaciones del repertorio de instrucciones
Ejecución iterativa
Ö Según el valor de cierta condición, se decide repetir la ejecución de cierto bloque de código
con evaluación al final
con evaluación al principio
···
repeat
bloque
until a cc b
···
···
while a cc b do
bloque
end
···
···
repeat bloque
CMP
a, b
Bcc
repeat
···
con un número definido de iteraciones
···
for c := n to m do
bloque
end
···
for
end
estructura y tecnología de computadores
···
MOVE
CMP
BGT
bloque
INC
JMP
···
n, c
m, c
end
c
for
while
end
···
CMP
a, b
Bcc
end
bloque
JMP
while
···
13
2. aplicaciones del repertorio de instrucciones
Subrutinas
···
procedure sub( a, b :integer; var c : integer )
begin
bloque
end
···
sub( x, y, z );
···
sub
etq
···
PUSH
PUSH
PUSH
PUSH
MOVE
MOVE
MOVE
bloque
POP
POP
POP
POP
RTS
···
PUSH
PUSH
PEA
JSR
ADD
···
SR
D0
D1
A0
14(SP), D0
18(SP), D1
20(SP), A0
A0
D1
D0
SR
Suponiendo:
ü una memoria direccionada por bytes
ü un tamaño palabra de 16 bits
ü un tamaño de dirección de 32 bits
ü que un integer se representa mediante palabra
MEMORIA
0
preservación del contexto
SP
(A0)
acceso a parámetros actuales
(D1)
(D0)
(SR)
restauración del contexto
etq
x
y
z
sub
#8, SP
posiciones relativas
de los parámetros
actuales
14(SP)
retorno al programa llamante
EA(z)
paso de parámetros actuales
y
18(SP)
x
20(SP)
llamada a la subrutina
liberación del área de parámentros
¡no válidas si crece
la pila!
k
2 -1
estructura y tecnología de computadores
14
2. aplicaciones del repertorio de instrucciones
MEMORIA
0
SP
(A0)
(D1)
(D0)
sub
etq
···
LINK
PUSH
PUSH
PUSH
PUSH
bloque
POP
POP
POP
POP
UNLK
RTS
···
PUSH
PUSH
PEA
JSR
ADD
···
¡siempre
válidas!
(SR)
Ai, #-6
SR
D0
D1
A0
creación del área local de variables
preservación del contexto
A0
D1
D0
SR
Ai
restauración del contexto
x
y
z
sub
#8, SP
paso de parámetros actuales
-6(Ai) ≡ loc3
-4(Ai) ≡ loc2
-2(Ai) ≡ loc1
Ai
(puntero
de marco)
(Ai)
marco de activación de sub
···
procedure sub( a, b :integer; var c : integer )
var loc1, loc2, loc3 :integer
begin
bloque
end
···
sub( x, y, z );
···
etq
destrucción del área local de variables
retorno al programa llamante
liberación del área de parámetros
estructura y tecnología de computadores
EA(z)
2k-1
8(Ai)
y
12(Ai)
x
14(Ai)
posiciones relativas
de los parámetros
actuales y de las
variables locales
15
2. aplicaciones del repertorio de instrucciones
Anidamiento de subrutinas
MEMORIA
0
SP
valores del contexto
de la 1ª activación
variables locales
a la 2ª activación
Ai
(puntero de
marco)
dirección de retorno a la 1ª activación y valor
del puntero de marco en la 1ª activación
marco de 2ª
activación de sub
Suponiendo que la subrutina sub
es recursiva, la foto de la pila
tras dos llamadas es:
parámetros actuales
de la 2ª activación
marco de 1ª
activación de sub
valores del contexto
del programa principal
variables locales
a la 1ª activación
dirección de retorno al programa principal y valor anterior
del registro que actuará como puntero de marco
parámetros actuales
de la 1ª activación
2k-1
estructura y tecnología de computadores
16
···
FORM LOAD
ADD
ADD
STORE
···
I
DATA
J
DATA
K
DATA
N
DATA
···
MEMORIA
I
J
K
N
0
2
3
4
0
ensamblador
cargador
código objeto
código ejecutable
101
0010001000000001
102
0001001000000010
103
0001001000000011
104
0011001000000100
201
0000000000000010
202
0000000000000011
203
0000000000000100
204
0000000000000000
2k-1
enlazador
código objeto
···
código objeto
estructura y tecnología de computadores
Lenguaje ensamblador
vs.
vs. código máquina
lenguaje máquina
lenguaje
ensamblador
3. formato de la instrucción máquina
17
3. formato de la instrucción máquina
Ö Ensamblador (assembler):
Ø Resuelve las etiquetas de instrucciones y datos
ð Relativas a PC para instrucciones
ð Relativas a algún registro para datos
Ø Expande macros y pseudo-instrucciones
Ø Interpreta las directivas de ensamblaje
Ø Fija la representación de los datos
Ø Traduce las instrucciones a código máquina
Ø Crea el fichero objeto
ð Determina cabeceras, segmentos de código y segmentos de datos
ð Crea tablas de símbolos: símbolos no resueltos + símbolos visibles
ð Añade información para la depuración
Ö Enlazador (linker):
Ø Combina varios códigos objeto, resolviendo las referencias cruzadas
Ø Crea un código ejecutable
Ö Cargador (loader):
Ø
Ø
Ø
Ø
Lee y carga sobre memoria el código ejecutable
Inicializa registros, pila y argumentos
Fija los vectores de excepción
Salta a la rutina de inicio del programa
estructura y tecnología de computadores
18
3. formato de la instrucción máquina
Elementos constitutivos de una instrucción máquina
Ö Código de operación (opcode)
Ø Especifica el tipo de operación a realizar: Suma, Resta, Y lógica, Movimiento de datos, etc.
Ö Operandos fuente
Ø La instrucción puede involucrar uno o más operandos fuente (o ninguno)
Ø Estos podrán especificarse utilizando distintos modos de direccionamiento
Ö Operando destino
Ø Si la instrucción produce un resultado deberá especificar el operando destino
Ø Este podrá especificarse utilizando distintos modos de direccionamiento
Ö Instrucción siguiente
Ø En ocasiones es necesario especificar cuál es la siguiente instrucción a ejecutar
Ø Normalmente la ejecución del programa es secuencial
ð La dirección de la siguiente instrucción suele ser implícita:
ð
Dir. instrucción siguiente = Dir. instrucción actual + Longitud instrucción actual
Ø En las instrucciones de salto sí es necesario especificar la dir. de la siguiente instrucción
ð Ruptura de la secuencia normal del programa
Instrucción máquina:
opcode
op. fuente 1
····
estructura y tecnología de computadores
op. fuente n
op. destino
instruc. siguiente
19
3. formato de la instrucción máquina
Alternativas de diseño del formato de instrucción
Ö A la hora de diseñar el formato de las instruc. máquina de un repertorio, debemos decidir:
Ø Cuál será la longitud de las instrucciones
ð Todas las instrucciones de igual longitud
ð Instrucciones de distinta longitud, según el tipo de operación a realizar
Ø De cuántos campos constará la misma (dependiendo del tipo de instrucción)
Ø Cuántos bits ocuparán cada uno de esos campos
Ø Codificación de cada campo
Ö Los principales factores a tener en cuenta para decidir este formato son:
Ø Número de operaciones distintas presentes en el repertorio
ð Aritméticas, lógicas, de control, de movimiento de datos, ...
Ø Número de operandos de la instrucción (incluyendo operandos fuente y destino)
ð Instrucciones sin operandos
ð Instrucciones con 1, 2, 3, ... operandos
Ø Modos de direccionamiento disponibles para cada operando
ð Inmediato, absoluto, de registro, indirecto, .....
Ø Tamaño y tipos de datos soportados
ð Bit, byte, palabra, doble palabra, ....
ð Caracteres, BCD, magnitud y signo, complemento a 2, punto flotante, ....
estructura y tecnología de computadores
20
3. formato de la instrucción máquina
Número de operandos explícitos en una instrucción
Ö Una operación típica de un computador (p. ej. A = B + C) suele tener tres operandos
Ø Dos operandos fuente (B y C) y un operando destino (A)
Ö Las principales alternativas que se presentan son:
Ø
Ø
Ø
Ø
Instrucciones con tres operandos explícitos
Instrucciones con dos operandos explícitos
Instrucciones con un único operando explícito
Instrucciones sin operandos explícitos
Instrucciones con tres operandos explícitos
Ö Se especifican los tres operandos en la instrucción máquina
Ø
Ejemplo
Cada operando puede soportar distintos modos de direccionamiento
Ö Formato flexible, pero ocupa mucho espacio
ADD A, B, C
A← B+C
Instrucciones con dos operandos explícitos
Ö Dos operandos explícitos y uno implícito
Ø
Ø
Uno de los operandos actúa como fuente y destino
Cada operando puede soportar distintos modos de direccionamiento
Ö Es menos flexible, pero ocupa menos espacio
estructura y tecnología de computadores
Ejemplo
ADD B, C
B← B+C
21
3. formato de la instrucción máquina
Número de operandos explícitos en una instrucción (cont
.)
(cont.)
Instrucciones con un único operando explícito
Ö Se especifican un sólo operando en la instrucción máquina
Ø
Ø
Uno de los operandos y el resultado se almacenan en un registro
especial del procesador: el acumulador
El operando puede soportar distintos modos de direccionamiento
Ejemplo
ADD B
Ö Formato muy reducido, pero poco flexible
Acum. ← B + Acum.
Instrucciones sin operandos explícitos
Ö Tanto los operandos como el resultado se almacenan en la pila
del sistema
Ö Ocupa muy poco espacio
Ö Requiere varias instrucciones previas de acceso a la pila
Ejemplo
ADD
(SP) ← (SP) + (SP-1)
Pila (antes)
SP
B
C
Pila (después)
SP
B+C
estructura y tecnología de computadores
22
3. formato de la instrucción máquina
Número de operandos explícitos en una instrucción: EJEMPLO
Ö Escribir los programas simbólicos para la siguiente operación:
Y = (A-B)/(C+D*E)
en un computador de 0, 1, 2 ó 3 direcciones, utilizando las instrucciones que sean
necesarias y sin sobreescribir el contenido de ninguno de los operandos fuente
3 operandos
SUB
MULT
ADD
DIV
Y, A, B
T, D, E
T, T, C
Y, Y, T
(Y ← A-B)
(T ← D*E)
(T ← T+C)
(Y ← Y/T)
2 operandos
MOVE
SUB
MOVE
MULT
ADD
DIV
Y, A
Y, B
T, D
T, E
T, C
Y, T
(Y ← A)
(Y ← Y-B)
(T ← D)
(T ← T*E)
(T ← T+C)
(Y ← Y/T)
1 operando
LOAD
MULT
ADD
STORE
LOAD
SUB
DIV
STORE
estructura y tecnología de computadores
D
E
C
Y
A
B
Y
Y
(Ac ← D)
(Ac ← Ac*E)
(Ac ← Ac+C)
(T ← Ac)
(Ac ← A)
(Ac ← Ac-B)
(Ac ← Ac/Y)
(Y ← Ac)
0 operandos
PUSH
PUSH
MULT
PUSH
ADD
PUSH
PUSH
SUB
DIV
POP
E
D
C
B
A
Y
23
3. formato de la instrucción máquina
Ejemplo de diseño del formato de la instrucción máquina
Ö Diseñar el formato de las instrucciones de un computador con 8 registros de propósito
general que permita codificar en una instrucción de 32 bits lo siguiente:
Ø 12 instrucciones de 3 operandos
Ø Dos operandos que permiten direccionamiento absoluto e indirecto de memoria
Ø Un operando que permite direccionamiento de registro en indirecto de registro
Ø 150 instrucciones de 2 operandos
Ø Un operando que permite direccionamiento absoluto e indirecto de memoria
Ø Un operando que permite direccionamiento de registro en indirecto de registro
Ø 30 instrucciones de 0 operandos
Ö Nota: El campo dirección de los operandos con direccionamiento absoluto e indirecto de memoria
será de 11 bits.
Solución
Ö Los operandos que permiten direccionamiento absoluto e indirecto de memoria requieren:
Ø
Ø
1 bit para especificar el modo de direccionamiento (m=0 → absoluto; m=1 → indirecto)
11 bits para especificar la dirección
Ö Los operandos que permiten direccionamiento de registro en indirecto de registro requieren:
Ø
Ø
1 bit para especificar el modo de direccionamiento (m=0 → de registro; m=1 → indirecto de reg.)
3 bits para especificar el número de registro (ya que tenemos 8 registros)
estructura y tecnología de computadores
24
3. formato de la instrucción máquina
Solución (Cont
.)
(Cont.)
Ö Para las 12 instrucciones de tres operandos necesitamos:
Ø
Ø
Ø
4 bits para especificar el tipo de operación: del 0 (0000) al 11 (1011)
12 bits para especificar el primer y segundo operando respectivamente
4 bits para especificar el tercer operando
Ö Para las 150 instrucciones de dos operandos necesitamos:
Ø
Ø
Ø
8 bits para especificar el tipo de operación: del 0 (0000000) al 149 (1010101)
12 bits para especificar el primer operando
4 bits para especificar el tercer operando
Ö Para las 30 instrucciones sin operandos necesitamos:
Ø
5 bits para especificar el tipo de operación: del 0 (00000) al 29 (11101)
Instrucción de 3 operandos
4
1
tipo
m1
Código
Operación
11
1
dir1
11
m2
Operando 1
dir2
Operando 2
Instrucción sin operandos
1
3
4
8
tipo
Código oper.
4
1
m1
11
dir1
No usado Operando 1
8
1111 11111111
Operando 3
Código operación
5
15
tipo
No usado
Nomenclatura
Instrucción de 2 operandos
1111
4
m3 reg
1
3
m2 reg
Operando 2
estructura y tecnología de computadores
mk: modo de direccionamiento del operando k
dirk: dirección del operando k
reg: número de registro
tipo: tipo de instrucción a ejecutar
25
acceso de CPU
a memoria o E/S
Lectura de
instrucción
operación
interna a la CPU
3. formato de la instrucción máquina
Cálculo de EA
de instrucción
Lectura de
operando
Escritura de
resultado
varios
operandos
Decodificación
de instrucción
Cálculo de EA
de operando
varios
resultados
Cálculo de EA
de resultado
Operación
cadena
o vector
Ciclo de instrucción
estructura y tecnología de computadores
26
4. arquitecturas CISC y RISC
Arquitecturas CISC (Computador
(Computador de conjunto de instrucciones complejo)
Ö Desde los años 60 (en que aparece la unidad de control microprogramada) hasta
principio de los años 80 la tendencia ha sido incrementar la complejidad de la CPU
Ø Gran número de instrucciones en el repertorio e instrucciones complejas
Ø Uso de gran número de modos de direccionamiento complejos
Ö Esta tendencia se debe a varias razones:
Ø Aparecen lenguajes de programación de alto nivel cada vez más sofisticados
ð Diseño de instrucciones complejas que permitan implementar instrucciones de alto nivel
directamente o con un pequeño número de instrucciones máquina
ð Una instrucción de alto nivel compleja implementable directamente en hardware, mejora la
eficiencia del programa ya que se ejecuta mucho más rápidamente
Ø Gracias al uso de unidad de control microprogramada, se pueden implementar estas
instrucciones máquinas complejas de forma simple, sin demasiado coste para el diseñador
Ø Facilidad para mantener la compatibilidad hacia abajo con los miembros de la misma familia
ð Añadir nuevas instrucciones al repertorio, manteniendo las antiguas
estructura y tecnología de computadores
27
4. arquitecturas CISC y RISC
Problemas de las arquitecturas CISC
Ö Los estudios de ejecución de programas en arquitecturas CISC revelan que
Ø La mayor parte de las instrucciones complejas apenas si se utilizan en programas reales
Ø Lo mismo ocurre con modos de direccionamiento complejos
Ö Dificultad para diseñar compiladores eficientes
Ø Al aumentar la complejidad del repertorio se hace cada vez más difícil diseñar compiladores que
aprovechen realmente esta gran variedad y versatilidad de instrucciones máquina
Ö Las instrucciones ocupan mucho espacio en memoria
Ø Al existir un gran número de instrucciones y de modos de direccionamiento se necesita mucho
espacio para codificar las instrucciones máquina y se tarda más tiempo en leerlas de memoria
Ø El tiempo de acceso a memoria para captar instrucciones (Fetch) resulta cada vez más crítico
conforme evolucionan los computadores
Ö Debido a estos problemas a principio de los 80 surge la arquitectura RISC (Computador
de conjunto de instrucciones reducido)
Ø Idea básica: hacer rápidos y eficientes los casos más comunes a costa de reducir la velocidad
en los casos menos comunes
estructura y tecnología de computadores
28
4. arquitecturas CISC y RISC
Características de las arquitecturas RISC
Ö Repertorio de instrucciones simple y ortogonal
Ø Sólo se dispone de instrucciones máquina básicas
Ø Repertorio ortogonal: no existen varias instrucciones distintas para realizar la misma operación
Ö Modos de direccionamiento sencillos
Ø Cada operando sólo soporta unos pocos modos de direccionamiento simples
Ö Formatos de instrucción uniformes
Ø Número reducido de formatos de instrucciones distintos
Ø Todas las instrucciones de longitud similar
Ö Tipos de datos simples
Ø Las instrucciones sólo soportan unos pocos tipos de datos básicos distintos
Ö Arquitectura de tipo registro-registro
Ø Sólo las instrucciones LOAD (Mem → Reg) y STORE (Reg → Mem) hacen referencia a memoria
Ø El resto de instrucciones (aritméticas, lógicas, etc.) son de tipo registro-registro,
Ø Tanto los operandos fuente como destino son registros de la arquitectura
Ø Las arquitecturas RISC suelen caracterizarse por disponer de un gran número de registros de
propósito general
estructura y tecnología de computadores
29
4. arquitecturas CISC y RISC
Ventajas de las arquitecturas RISC
Ö Su estructura es mucho más simple
Ø Es más rápido y puede trabajar a mayor velocidad
Ø Su diseño es más sencillo y barato
Ö Instrucciones más cortas
Ø Tardan menos tiempo en leerse de memoria
Ö Mayor simplicidad para generar código máquina
Ø Los compiladores son más eficientes y más sencillos de diseñar
Desventajas de las arquitecturas RISC
Ö El compilador genera un mayor número de instrucciones máquina
Ø Se necesitan varias instrucciones para ejecutar las instrucciones de alto nivel
Ø Mayor número de instrucciones ↔ Instrucciones más rápidas
Ö Más difícil mantener la compatibilidad entre computadores de la misma familia
Ø Para diseñar un repertorio simple no se pueden “heredar” todas las instrucciones
estructura y tecnología de computadores
30
4. arquitecturas CISC y RISC
Computadores CISC
Ö VAX 11 (desaparecido)
Ö IBM Mainframes (serie 360, 370 y descendientes)
Ö Intel 80x86 (i8086, i80286, i80386, i80486, Pentium, Pentium II, Pentium III)
Ö Motorola MC68xxx (MC68000, MC68010, MC68020, MC68030, MC68040, MC68060 )
Computadores RISC
Ö
Ö
Ö
Ö
Ö
Ö
Ö
Motorola MC88000 (desaparecido)
MIPS Rxxxx (R2000, R3000, R4000, R5000, R8000, R10000, R12000)
Sun SPARC (SPARC, Super SPARC 2, Ultra SPARC I, Ultra SPARC II, Ultra SPARC III)
HP PA-RISC (7100, 7200, 7300, 8000, 8200, 8500)
PowerPC (601, 602, 603, 604, 620, 630, Power3)
DEC Alpha (21064, 21064a, 21066a, 21164, 21164a, 21264)
Intel 80860, Intel 80960
estructura y tecnología de computadores
31
5. ejemplos: MC68000
Características del MC68000
Ö Procesador CISC de 16 bits
Ø
Ø
Ø
Ø
Ø
Ø
Aprox. 90 instrucciones máquina
12 modos de direccionamiento
9 formatos de instrucción distintos y con tamaños de una a cinco palabras
Ancho del bus de datos: 16 bits
Tamaño mínimo direccionable: 1 byte
Ancho del bus de direcciones: 24 bits (224 bytes = 16 Mbytes de memoria direccionables)
Ö Modos de funcionamiento
Ø Modo usuario
Ø Modo normal de ejecución de programas
Ø No tiene acceso a determinadas instrucciones privilegiadas
Ø No tiene acceso a determinados registros del supervisor
Ø Modo supervisor
Ø Modo de ejecución del Sistema Operativo y durante el tratamiento de interrupciones
Ø Tiene acceso a todas las instrucciones privilegiadas y a registros del supervisor
estructura y tecnología de computadores
32
5. ejemplos: MC68000
Tipos de datos y organización de la memoria
Ö Bit
Ö Enteros sin signo o con signo (complemento a 2)
Ø Tamaño Byte (8 bits) → se representa como .b (byte)
Ø Tamaño Palabra (16 bits) → se representa como .w (word)
Ø Tamaño Doble Palabra o Palabra Larga (16 bits) → se representa como .l (long word)
Ö Decimal BCD empaquetado (dos dígitos BCD por byte)
Memoria (Ordenación Big-Endian)
Palabra
$000000
$000002
Byte $000000
Byte $000001
Byte $000002
Byte $000003
.
.
.
.
.
$FFFFFE
Byte $FFFFFE
$000000
7
$000000
15
$000000
31
Byte 0 (8 bits)
0
Palabra 0 (16 bits)
0
Doble Palabra 0 (32 bits)
0
BCD 0 (2 dígitos)
Byte $FFFFFF
estructura y tecnología de computadores
$000000
1
0
33
5. ejemplos: MC68000
Registros de la arquitectura
31
16 15
8 7
D0
D1
D2
D3
D4
D5
D6
D7
31
Ö Registros de datos (D0-D7)
0
16 15
Ocho
Registros
de Datos
Siete
Registros
de Direcciones
Puntero de Pila
A7
(USP) de Usuario
31
0
Puntero de Pila
A7'
(SSP) de Supervisor
0
8 7
15
SR
CCR
31
0
PC
Ö Registros de direcciones (A0-A6)
Ø Para operaciones con direcciones
Ø Tamaños: .w, .l
0
A0
A1
A2
A3
A4
A5
A6
Ø Para operaciones con datos
Ø Tamaños: .b, .w, .l
Registro de Estado
(CCR = Reg. de
códigos de condición)
Contador
de Programa
Ö Punteros de pila (A7, A7’)
Ø Uno para usuario (A7=USP)
Ø Otro para supervisor (A7’=SSP)
Ö Registro de Estado (SR)
Ø Parte más significativa: sólo
accesible en modo supervisor
Ø Parte menos significativa: códigos
de condición (CCR)
Ö Contador de programa (CP)
Ø Apunta a la siguiente instrucción a
ejecutar
estructura y tecnología de computadores
34
5. ejemplos: MC68000
Registro de estado (SR)
Byte del Supervisor
15
T
13
S
10
8
I2 I1 I0
Códigos de condición
Byte del Usuario (CCR)
0
4
X N Z V C
Modo Traza
Estado
Supervisor
Máscara
Interrupciones
Extensión
Negativo
Códigos de
Condición
Cero
Overflow
Carry
estructura y tecnología de computadores
C (“Carry” o acarreo)
Se activa cuando se produce un arrastre
de suma o de resta
V (“oVerflow” o desbordam.)
Se activa cuando el resultado de una
operación no se puede expresar en C’2
dentro del tamaño seleccionado
Z (“Zero” o cero)
Se activa cuando el resultado de una
operación es cero
N (Negativo)
Se activa cuando el resultado de una
operación es negativo
X (eXtensión)
Se activa cuando hay arrastre decimal en
operaciones BCD
35
5. ejemplos: MC68000
Modos de direccionamiento
Modo de direccionamiento
Direccionamiento directo de registro
Directo de registro de datos
Directo de registro de direcciones
Direccionamiento indirecto de registro
Indirecto de registro
Indirecto de registro con postincremento (*)
Indirecto de registro con predecremento (*)
Indirecto de registro con desplazamiento
Indirecto de registro indexado con desplazamiento
Direccionamiento absoluto
Absoluto corto
Absoluto largo
Direccionamiento relativo al contador de programa
Relativo al PC con desplazamiento
Relativo al PC indexado con desplazamiento
Direccionamiento inmediato
Cálculo de EA
Sintaxis
EA = Dn
EA = An
Dn
An
EA = (An)
EA = (An); An + N → An
An + N → An; EA = (An)
EA = (An) + d16
EA = (An) + (Ri) + d8
(An)
(An)+
-(An)
d16(An)
d8(An,Ri.X)
EA = XXXX
EA = XXXXXX
XXXX
XXXXXX
EA = (PC) + d16
EA = (PC) + (Ri) + d8
d16(PC)
d8(PC,Ri.X)
Operando = XXXXXXXX
#XXXXXXXX
NOTAS
EA = Dirección Efectiva
Dn = Registro de datos
An = Registro de direcciones
N = 1 si .B, 2 si .W, 4 si .L
Ri = Registro índice (de datos o direcc.)
d8 = Desplazamiento de 8 bits
d16= Desplazamiento de 16 bits
PC = Contador de Programa
estructura y tecnología de computadores
36
5. ejemplos: MC68000
Formato de las instrucciones
Ö Características
Ø Instrucciones de 0, 1 y 2 operandos
Ø 9 formatos distintos
Ø Longitud entre 1 y 5 palabras
Ö Contenidos de una instrucción máquina
Ø Palabra operación (OW, siempre presente)
Ø Primera palabra de la instrucción
ü Código de operación
ü Modos de direccionamiento y
tamaño de los operandos
Ø Palabras de extensión (EW, de 0 a 4)
Ø Información adicional de los operandos
ü Valor inmediato
ü Desplazamiento
Ö Codificación modos de direccionamiento
Ø Dos campos: Modo y Registro (6 bits)
estructura y tecnología de computadores
Formato genérico de la instrucción máquina
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
OW: Palabra operación( opcode, tamaño, EA)
EW para operando inmediato (si existe, una o dos palabras)
EW para dirección efectiva fuente (si existe, una o dos palabras)
EW para dirección efectiva destino (si existe, una o dos palabras)
Instrucciones de 0 operandos
Sintáxis:
OP
Instrucciones de 1 operando
Sintáxis:
OP destino
Operación: destino ← OP (destino)
Instrucciones de 2 operando
Sintáxis:
OP fuente, destino
Operación: destino ← (fuente) OP (destino)
37
5. ejemplos: MC68000
Formato de las instrucciones (cont
.)
(cont.)
Instrucciones sin operandos (1 formato)
EA
Codificación de los modos de
direccionamiento
Directo de reg. de datos
Directo de reg. de direcciones
Indirecto de reg.
Indirecto de reg. con postincremt.
Indirecto de reg. con predecrem.
Indirecto de reg. con desplaz.
Indirecto de reg. Index. con desplaz.
Absoluto corto
Absoluto largo
Relativo al PC con desplaz.
Relativo al PC index. con desplaz.
Inmediato
modo
Registro
000
001
010
011
100
101
110
111
111
111
111
111
Nº de reg. (Dn)
Nº de reg. (An)
Nº de reg. (An)
Nº de reg. (An)
Nº de reg. (An)
Nº de reg. (An)
Nº de reg. (An)
000
001
010
011
100
OW:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
codigo_op
Ejemplos:
RTS
NOP
Instrucciones con un operando (2 formatos)
OW:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EA destino
codigo_op
tamaño
modo
Campo tamaño
00
01
10
Tamaño operando
byte (.B)
palabra (.W)
doble palabra (.L)
Ejemplos:
CLR.L D0
NEG.B (A3)
(a)
registro
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW:
Ejemplos:
(b)
registro
codigo_op
SWAP R1
estructura y tecnología de computadores
38
5. ejemplos: MC68000
Formato de las instrucciones (cont
.)
(cont.)
Instrucciones de dos operandos con operando
inmediato corto (2 formatos)
Instrucciones con 2 operandos (3 formatos)
OW:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EA destino
EA fuente
cod_op tamaño
Campo tamaño
01
11
10
registro
modo
registro
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
(a)
OW:
Tamaño operando
byte (.B)
palabra (.W)
doble palabra (.L)
Ejemplos:
OW:
modo
MOVE.L
modo
registro
OW:
(b)
(a)
dato
MOVEQ
#100, D0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EA destino
codigo_op
dato
codigo_op
modo
Ejemplo:
ADD.L D0, D1
OR.W #S00FF,D3
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
codigo_op
registro
modo_op
registro
Ejemplos:
0
(b)
registro
1 ≤ dato ≤ 8
Campo modo-op
Byte Palabra Doble pal. Operación
000 001
010
<registro> OP <EA> → registro
100 101
110
<EA> OP <registro> → EA
OW:
registro
Ejemplo:
D7, 4(A5)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
codigo_op
registro modo_op EA fuente/destino
Ejemplos:
codigo_op
-128 ≤ dato ≤ 127
ADDQ
SUBQ
#2, D3
#1, D7
Instrucciones de bifurcación condicional (Bcc, 1 formato)
15
(c)
ABCD -(A0), -(A1)
EXG D1, A2
estructura y tecnología de computadores
OW:
14
13
codigo_op
Ejemplo:
12
11
10
9
condicion
BEQ dir1
8
7
6
5
4
3
2
desplazamiento
1
0
39
5. ejemplos: MC68000
Repertorio de instrucciones
Notación utilizada
CÓDIGOS DE CONDICIÓN:
*
–
0
1
U
Afectado.
No afectado.
Puesto a 0 (clear).
Puesto a 1 (set).
No definido.
Modo de
direccionamiento
Dn
An
(An)
(An)+
-(An)
d16(An)
d8(An,Ri.X)
XXXX
XXXXXX
d16(PC)
d8(PC,Ri.X)
#XXXXXXXX
ea
X
X
X
X
X
X
X
X
X
X
X
X
dea
X
mea
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Categorías de EA
cea
aea
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
adea
X
amea
acea
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
estructura y tecnología de computadores
40
5. ejemplos: MC68000
Repertorio de instrucciones
MOVIMIENTO DE DATOS
Mnemotécnico
EXG
LEA
LINK
Sintaxis
EXG Rm,Rn
LEA <cea>,An
LINK An,#<d16>
Tamaño
L
L
No
MOVE
MOVE from SR
MOVE to CCR
MOVE to SR
MOVE.t <ea>,<adea>
MOVE SR,<adea>
MOVE <adea>,CCR
MOVE <adea>,SR
L,W,B
W
W
W
MOVE USP
MOVE USP,An
L
MOVE USP
MOVE An,USP
L
MOVEA
MOVEM
MOVEA.t <ea>,An
MOVEM.t <lista_reg>,<cea>
MOVEM.t <lista_reg>,–(An)
MOVEM.t <cea>,<lista_reg>
MOVEM.t (An)+,<lista_reg>
MOVEP.t Dn,d(Am)
MOVEP.t d(Am),Dn
MOVEQ #<d8>,Dn
PEA <cea>
SWAP Dn
UNLK An
MOVEM
MOVEP
MOVEQ
PEA
SWAP
UNLK
estructura y tecnología de computadores
XNZVC
–––––
–––––
–––––
L,W
L,W
Función
Rm↔Rn
dirección fuente→An
An→–(SP); SP→An
SP+d16→SP
(fuente)→destino
SR→destino
(fuente)→CCR
IF S=1 SR→destino
ELSE EXCEPCIÓN
IF S=1 USP→An
ELSE EXCEPCIÓN
IF S=1 An→USP
ELSE EXCEPCIÓN
(fuente)→destino
registros→destino
L,W
(fuente)→registros
–––––
L,W
(fuente)→destino
–––––
L
L
W
No
dato (8 bits)→destino
dirección→–(SP)
Dn[31:16]↔Dn[15:0]
An→SP; (SP)+→An
–**00
–––––
– **0 0
–––––
–**00
–––––
*****
*****
*****
*****
–.–.–.–.–.
–––––
41
5. ejemplos: MC68000
ARITMÉTICA ENTERA
Mnemotécnico
ADD
Tamaño
L,W ,B
Función
(fuente)+(destino)→destino
XNZVC
*****
L,W
L,W ,B
L,W ,B
L,W ,B
(fuente)+(destino)→destino
Dato+(destino)→destino
d3+(destino)→destino
(fuente)+(destino)+X→destino
–––––
*****
*****
*****
CLR
CMP
CMPA
CMPI
CMPM
DIVS
Sintaxis
ADD.t <ea>,Dn
ADD.t Dn, <amea>
ADDA.t <ea>,An
ADDI.t # <dato>,<adea>
ADDQ.t# <d3>, <aea>
ADDX.t Dm,Dn o
ADDX.t –(Am),–(An)
CLR.t <adea>
CMP.t <ea>,Dn
CMPA.t <ea>,An
CMPI.t #<Dato>,<adea>
CMPM.t (Am)+,(An)
DIVS <dea>,Dn
L,W ,B
L,W ,B
L,W
L,W ,B
L,W ,B
W
–
–
–
–
–
–
DIVU
DIVU <dea>,Dn
W
EXT
MULS
MULU
NEG
NEGX
SUB
L,W
W
W
L,W ,B
L,W ,B
L,W ,B
L,W
L,W ,B
L,W ,B
L,W ,B
(destino)–(fuente)→destino
(destino)–Dato→destino
(destino)–d3→destino
(destino)–(fuente)–X→destino
–––––
*****
*****
*****
TAS
EXT.t Dn
MULS <dea>,Dn
MULU <dea>,Dn
NEG.t <adea>
NEGX.t <adea>
SUB.t <ea>,Dn
SUB.t Dn, <amea>
SUBA.t <ea>,An
SUBI.t # <dato>,<adea>
SUBQ.t# <d3>, <aea>
SUBX.t Dm,Dn
SUBX.t –(Am),–(An)
TAS <adea>
0→destino
(destino)–(fuente);activa CCR
(destino)–(fuente);activa CCR
(destino)–Dato; activa CCR
(destino)–(fuente);activa CCR
(destino)/(fuente)→destino;
Cociente→destino[15:0],
Resto→destino[31:16]
(destino)/(fuente)→destino;
Cociente→destino[15:0],
Resto→destino[31:16]
Dn(Extend en signo)→Dn
(fuente)*(destino)→destino
(fuente)*(destino)→destino
0–(destino)→destino
0–(destino)–X→destino
(destino)–(fuente)→destino
B
TST <adea>
L,W ,B
Test (destino)→CCR;
1→destino[bit 7]
Test (destino)→CCR
–**00
TST
ADDA
ADDI
ADDQ
ADDX
SUBA
SUBI
SUBQ
SUBX
0100
****
****
****
****
***0
–***0
–**00
–**00
–**00
*****
*****
*****
–**00
estructura y tecnología de computadores
42
5. ejemplos: MC68000
OPERACIONES LÓGICAS
Mnemotécnico
AND
Tamaño
L,W,B
Función
(fuente)<AND>(destino)→destino
XNZVC
–**00
ANDI
ANDI to CCR
ANDI to SR*
Sintaxis
AND.t <dea>,Dn
AND.t Dn,<amea>
ANDI.t #<dato>,<adea>
ANDI #<d8>,CCR
ANDI #<d16>,SR
L,W,B
B
W
–**00
*****
*****
EOR
EORI
EORI to CCR
EORI to SR*
EOR.t Dn,<adea>
EORI.t #<dato>,<adea>
EORI #<d8>,CCR
EORI #<d16>,SR
L,W,B
L,W,B
B
W
NOT
OR
NOT.t <adea>
OR.t <dea>,Dn
OR.t Dn,<amea>
ORI.t #<dato>, <adea>
ORI #<d8>,CCR
ORI #<d16>,SR
L,W,B
L,W,B
dato<AND>(destino)→destino
d8<AND>CCR →CCR
IF S=1 d16 <AND>SR→SR
ELSE EXCEPCIÓN
(fuente)<XOR>(destino)→destino
dato<XOR>(destino)→destino
d8<XOR>CCR →CCR
IF S=1 d16<XOR>SR→SR
ELSE EXCEPCIÓN
<NOT>(destino)→destino
(fuente)<OR>(destino)→destino
ORI
ORI to CCR
ORI to SR*
L,W,B
B
W
dato<OR>(destino)→destino
d8<OR>CCR→CCR
IF S=1 d16<OR>SR→SR
ELSE EXCEPCIÓN
–**00
–**00
*****
*****
–**00
–**00
–**00
*****
*****
DESPLAZAMIENTOS Y ROTACIONES
Mnemotécnico
ASL/ASR
ASL/ASR
Sintaxis
ASL/ASR Dm,Dn
ASL/ASR #<d3>,Dn
ASL/ASR<amea>
Tamaño
L,W,B
LSL/LSR
Igual que ASL/ASR
W (contador
desplaz.=1)
Idem
ROL/ROR
Igual que ASL/ASR
Idem
ROXL/ROXR
Igual que ASL/ASR
Idem
estructura y tecnología de computadores
Función
(destino) desplaz. aritmet. de
<num> bits→destino
(destino) desplaz. aritmet. de
1 bit →destino
(destino) desplaz. logico de
<num> (o 1)bits→destino
(destino) rotado
<num> (o 1)bits→destino
(destino) rotado (con exten.)
<num> (o 1)bits→destino
XNZVC
*****
*****
***0*
–**0*
***0*
43
5. ejemplos: MC68000
MANIPULACIÓN DE BITS
Mnemotécnico
BCHG
BCLR
Sintaxis
BCHG Dm,Dn o
BCHG #<d8>,Dn
BCHG Dm, <amea> o
BCHG #<d8>,<amea>
Igual que BCHG
BSET
Igual que BCHG
BTST
BTST Dm,Dn o
BTST #<d8>,Dn
BTST Dm,<mea> o
BTST #<d8>,<mea>
BCHG
BTST
Tamaño
L (bit mod 32)
XNZVC
––*––
B (bit mod 8)
Función
<NOT>(destino[bit])→flag Z;
<NOT>(destino[bit])→destino[bit]
Igual
––*––
L (bit mod 32)
<NOT>(destino[bit])→flag Z;
0→destino[bit]
<NOT>(destino[bit])→flag Z;
1→destino[bit]
<NOT>(destino[bit])→flag Z
B (bit mod 8)
Igual
––*––
––*––
––*––
––*––
OPERACIONES DE CONTROL DE PROGRAMA
Mnemotécnico
Bcc
Sintaxis
Bcc <etiqueta>
Tamaño
Desplaz. 16 bits
Función
IF cc True PC+despl.→PC
XNZVC
–––––
Bcc.S
BRA
BSR
DBcc
Bcc.S <etiqueta>
BRA <etiqueta>
BSR <etiqueta>
DBccDm, <etiqueta>
Desplaz. 8 bits
Despl. 8 o 16 bits
Despl. 8 o 16 bits
Desplaz. 16 bits
–––––
–––––
–––––
–––––
JMP
JSR
Scc
JMP <cea>
JSR <cea>
Scc <adea>
No
No
B
RTR
RTS
RTR
RTS
No
No
IF cc True PC+despl.→PC
PC+desp.→PC
PC→–(SP); PC+desp.→PC
IF cc False
Dm–1 → Dm
IF Dm ≠–1
PC+desp.→PC
ELSE PC+2→PC (instr. sig.)
destino→PC
PC→–(SP); destino→PC
IF cc True $FF→destino
ELSE $00 →destino
(SP)+→CCR; (SP)+→PC
(SP)+→PC
–––––
–––––
–––––
*****
–––––
estructura y tecnología de computadores
44
5. ejemplos: MC68000
OPERACIONES EN BCD
Mnemotécnico
ABCD
NBCD
SBCD
Sintaxis
ABCD Dm,Dn
ABCD –(Am),–(An)
NBCD<adea>
SBCD Dm,Dn
SBCD –(Am),–(An)
Tamaño
B
B
B
Función
(fuente10)+(destino10)+X→
destino10
0–(destino10)–X→destino10
(fuente10)–(destino10)–X→
destino10
XNZVC
*U*U*
Función
IF S=1 activa RESET
ELSE EXCEPCIÓN
IF S=1 (SP)+→SP;(SP)+→PC
ELSE EXCEPCIÓN
IF S=1 d16→SR;PC+4→PC;
Pausa hasta excepcion
ELSE EXCEPCIÓN
IF Dn<0 OR Dn>(fuente)
EXCEPCIÓN
PC→–(SSP);SR→–(SSP)
Vector #4→PC
PC→–(SSP);SR→–(SSP)
Vector #4→PC
IF V=1 EXCEPCIÓN
PC+2→PC
XNZVC
–––––
*U*U*
*U*U*
OPERACIONES DE CONTROL DEL SISTEMA
Mnemotécnico
RESET*
Sintaxis
RESET
Tamaño
No
RTE*
RTE
No
STOP*
STOP #<d16>
No
CHK
CHK <dea>,Dn
W
ILLEGAL
ILLEGAL
No
TRAP
TRAP #<d4>
No
TRAPV
NOP
TRAPV
NOP
No
No
estructura y tecnología de computadores
*****
*****
– * UUU
–––––
–––––
–––––
–––––
45
5. ejemplos: arquitectura MIPS
Características generales
Ö Procesador RISC de 32 bits
Ø ~70 instrucciones máquina
ð Repertorio ortogonal
ð Instrucciones clasificadas en cuatro grupos
ü
ü
ü
ü
Movimiento de datos
Aritmética entera, logicas y desplazamiento
Control de flujo
Aritmética en punto flotante
Ø 4 modos de direccionamiento
ð Inmediato
ð Directo de registros
ð Indirecto con desplazamiento
ð Indirecto con desplazamiento relativo al PC
Ø Banco de 64 registros (32 bits cada uno)
ð 32 de propósito general (R0-R31)
ð 32 para instrucciones en punto flotante (F0-F31). Pueden usarse como:
ü 32 registros para operaciones en simple precisión (32 bits)
ü 16 registros para operaciones en doble precisión (64 bit)
Ø 3 formatos de instrucción distintos con longitud única de 32 bits
Ø Arquitectura registro-registro
ð Sólo las instrucciones de LOAD y STORE hacen referencia a memoria
ð El resto de instrucciones operan sobre registros
ü Instrucciones con tres operandos: 2 op. fuente y 1 op. Destino
ü Notación ensamblador: op x, y, z x ← (y) op (z)
estructura y tecnología de computadores
46
5. ejemplos: arquitectura MIPS
Tipos de datos
Ö Enteros
Ö Reales en punto flotante
Ø Tamaño Byte (8 bits)
Ø Tamaño Media palabra (16 bits)
Ø Tamaño Palabra (32 bits)
Ø Simple precisión (32 bits)
Ø Doble precisión (64 bits)
Memoria (Ordenación Little-Endian)
Palabra
$00000000
$00000004
Media palabra $0
Byte $0
Byte $4
Media palabra $2
Byte $1
Byte $5
Media palabra $4
Byte $2
Byte $6
Byte $3
Byte $7
Bit signo
$0 0
Byte $0 (8 bits)
7
Media palabra $0 (16 bits)
$0 0
15
Palabra $0 (32 bits)
.
.
.
.
.
Media palabra $6
$FFFFFFFC
estructura y tecnología de computadores
$0 0
31
Real Simple precisión $0 (32 bits)
$0 0
31
Real Doble Precisión $0 (64 bits)
$0 0
$4
63
47
5. ejemplos: arquitectura MIPS
Modos de direccionamiento
Ö Directo
de registro
op
rs
rt
rd
registro
Ö Inmediato
op
rs
rt
Inmed.
Ö Indirecto con
desplazamiento
op
rs
rt
Inmed.
registro
Ö Indirecto con
desplazamiento
relativo a PC
op
rs
PC
rt
Memoria
+
Inmed.
Memoria
+
estructura y tecnología de computadores
48
5. ejemplos: arquitectura MIPS
Formato de la instrucción máquina
Ö Instrucción de tipo I
Ø Instrucciones de LOAD/STORE
6
5
5
16
op
rs1
rd
Inmed.
Código Reg. Reg.
Operac. fuente destino
Valor
inmediato
Ö Instrucción de tipo R
6
5
op
5
5
11
rs1 rs2 rd función
Código Reg. Reg.
Reg. Función
Operac. fnte. 1 fnte. 2 destino a realizar
LW $1, 30($2)
R1 ← Mem(30+(R2))
SF 60($5), $10
Mem(60+(R5)) ← (R10)
Ø Instruc. con operando inmediato
Ej.: ADDI $7, $9, #30
R7 ← (R9) + 30
Ø Instruc. de bifurcación condicional
Ej.: BNE $5, $6, #0x0C if (R5 ≠ R6) then PC ← 0x0C
Ej.:
Ø Instruc. aritméticas, lógicas y desplazamiento
de tipo de registro-registro
Ej.: SUB $1, $2, $3
R1 ← (R2) - (R3)
SLL $1, $2, $3
R1 ← (R2) << (R3)
Ø Campo función: Especifica el tipo de operación a realizar
Suma, Resta, Mult. Div., And, Or, Desplaz., etc.
Ö Instrucción de tipo J
6
26
op
Código
Operac.
Dirección destino
Ø Instrucciones de salto
Ej.: J dir
PC ← dir
Dirección destino
del salto
estructura y tecnología de computadores
49
5. ejemplos: arquitectura MIPS
Repertorio de instrucciones
Instrucción de movimiento de datos
Instrucción Significado
Ejemplo
Operación
LB
Load byte
LB
R2 [24-31] ← Mem(40+(R3))8; R1[0-23]←(signo(Mem(40+(R3))))24
LBU
Load byte unsigned
LBU $2, 40($3)
R2 [24-31] ← Mem(40+(R3))8; R1[0-23]←(0)24
LH
Load half word
LH
R2 [16-31] ← Mem(40+(R3))16; R1[0-15]←(signo(Mem(40+(R3))))16
$2, 40($3)
$2, 40($3)
LHU
Load half word unsigned
LHU $2, 40($3)
R2 [16-31] ← Mem(40+(R3))16; R1[0-15]←(0)16
LW
Load word
LW
$2, 40($3)
R2 [0-31] ← Mem(40+(R3))32
LF
Load Float
LF
$2, 40($3)
F2 [0-31] ← Mem(40+(R3))32
LD
Load double float
LD
$2, 40($3)
F2 [0-31], F3 [0-31] ← Mem(40+(R3))64
SB
Store byte
SB
40($3),$2
Mem(40+(R3))8 ← R2 [24-31]
SH
Store half word
SB
40($3),$2
Mem(40+(R3))16 ← R2 [16-31]
SW
Store word
SB
40($3),$2
Mem(40+(R3))32 ← R2 [0-31]
SF
Store float
SB
40($3),$2
Mem(40+(R3))32 ← F2 [0-31]
SD
Store double float
SB
40($3),$2
Mem(40+(R3))64 ← F2 [0-31], F3 [0-31]
estructura y tecnología de computadores
50
5. ejemplos: arquitectura MIPS
Repertorio de instrucciones
Instrucción de aritmética entera, lógicas y desplazamiento
Instrucción
ADD/ADDU
ADDI/ADDIU
SUB/SUBU
SUBI/SUBIU
MULT/MULTU
DIV/DIVU
Significado
Suma con/sin signo
Suma inmediato con/sin signo
Resta con/sin signo
Resta inmediato con/sin signo
Multiplicación con/sin signo
División con/sin signo
Ejemplo
ADD $1,$2,$3
ADDI $1,$2,#5
SUB $1,$2,$3
SUBI $1,$2,#5
MULT $1,$2,$3
DIV $1,$2,$3
AND
ANDI
OR
ORI
XOR
XORI
SLL/SRL
SLLI/SRLI
SRA
SRAI
Scc *
SccI *
Y lógica
Y lógica con inmediato
O lógica
O lógica con inmediato
O exclusiva
O exclusiva con inmediato
Desplaz. lógico Izda./decha.
Desp. Lóg. Izda./decha. con inmed.
Desplaz. aritmético derecha
Desplaz. aritm. Dcha. con inmed.
Set condicional
Set condicional con inmediato
AND
ANDI
OR
ORI
XOR
XORI
SLL
SLLI
SRA
SRA
SLT
SEQI
(*) cc = LT, GT, LE, GE, EQ, NE
estructura y tecnología de computadores
$1,$2,$3
$1,$2,#5
$1,$2,$3
$1,$2,#5
$1,$2,$3
$1,$2,#5
$1,$2,$3
$1,$2,#4
$1,$2,$3
$1,$2,#4
$1,$2,$3
$1,$2,#0
Operación
R1 ← (R2) + (R3)
R1 ← (R2) + 5
R1 ← (R2) - (R3)
R1 ← (R2) - 5
R1 ← (R2) * (R3)
R1[0-15] ← Cociente ((R2) / (R3))
R1[16-31] ← Resto ((R2) mod (R3))
R1 ← (R2) AND (R3)
R1 ← (R2) AND 5
R1 ← (R2) OR (R3)
R1 ← (R2) OR 5
R1 ← (R2) XOR (R3)
R1 ← (R2) XOR 5
R1 ← (R2) << (R3)
R1 ← (R2) << 4
R1 ← (R2) << (R3) (mantiene signo)
R1 ← (R2) << 4 (mantiene signo)
if (R2)<(R3) then R1 ← 1, else R1 ← 0
if (R2) = 0 then R1 ← 1, else R1 ← 0
51
5. ejemplos: arquitectura MIPS
Repertorio de instrucciones
Instrucción de control de flujo
Instrucción
J
JR
BEQZ
BNEQZ
JAL
JALR
TRAP
RFE
Significado
Salto (jump)
Salto con registro
Bifurcación condic. si igual a cero
Bifurcación condic. si distinto de cero
Salto y link
Salto y link con registro
Provoca una excepción
Retorno de excepción
Ejemplo
J dir
JR $2
BEQZ dir, $4
BNEQZ dir, $4
JAL dir
JALR dir, $2
Operación
PC ← dir
PC ← (R2)
if (R4) = 0 then PC ← (R4)
if (R4) ≠ 0 then PC ← (R4)
R31 ← (PC) + 4; PC ← dir
R31 ← (PC) + 4; PC ← (R2)
Instrucción de aritmética en punto flotante
Instrucción
ADDF/ADDD
SUBF/SUBD
MULTF/MULTD
DIVF/DIVD
CVTI2F/CVTI2D
CVTF2I/CVTF2D
CVTD2I/CVTD2F
Significado
Suma en punto flotante simple/doble precisión
Resta en punto flotante simple/doble precisión
Multiplicación en punto flotante simple/doble precisión
División en punto flotante simple/doble precisión
Convierte entero a real simple precisión / doble precisión
Convierte real simple precisión a entero / real doble precisión
Convierte real doble precisión a entero / real simple precisión
estructura y tecnología de computadores
Descargar