Vous êtes sur la page 1sur 43

1

Estructura de Computadores

Módulo B. Arquitectura del procesador

Tema 2. Tipos de datos, formato de la instrucción máquina,


modos de direccionamiento y repertorio de instrucciones

Contenidos

1. Tipos de datos y caracterización.


2. Representación de números, caracteres e información lógica.
3. Estructura básica de un computador
4. Elementos importantes de la arquitectura
5. Organización de la Memoria desde el punto de vista del Programador.
6. Modos de direccionamiento.
7. Instrucciones máquina.
8. Alternativas de diseño del repertorio de instrucciones.
9. Arquitecturas CISC y RISC.
10. Ejemplos: Motorola MC68000 y MIPS R2000.

estructura de computadores

1
3

1. Tipos de datos
Contenidos de la memoria EJEMPLO
⌦ El contenido de una palabra de memoria es una En una palabra de memoria de 32 bits
se puede codificar
colección de 0’s y 1’s
a) Un número entero entre -(231-1) y +(231-1)
⌦ Depende de cómo se interprete esa palabra, codificado mediante magnitud y signo
ésta puede representar:
Datos
b31 b30 ... b1 b0

b31 = 0 para nos positivos


Numéricos Bit de signo
b31 = 1 para nos negativos
Enteros (Magnitud y signo, C’1, C’2, ...)
Magnitud = b30x230 + ··· + b1x21 + b0x20
Reales (Punto fijo, Punto flotante, ...)
b) 32 dígitos Booleanos o lógicos
Decimales (BCD, Exceso-3, ...)
Booleanos o lógicos b31 b30 ... b1 b0
TRUE, FALSE bk = 0 ⇒ FALSE
bk = 1 ⇒ TRUE 0 ≤ k ≤ 31
Caracteres
c) Cuatro caracteres ASCII
Letras, dígitos decimales, signos puntuación
Representación más común: ASCII 8 bits 8 bits 8 bits 8 bits
Instrucciones
Carácter Carácter Carácter Carácter
OPCODE + operandos ASCII ASCII ASCII ASCII
d) Una instrucción máquina

8 bits 24 bits

Código de Información de Direccionamiento


Operación

estructura de computadores

1. Tipos de datos
Caracterización de los tipos de datos
⌦ Un tipo de datos es una sucesión de bits caracterizada por dos propiedades:
Su dominio, que es el conjunto de valores que el dato puede tomar y depende de:
El tipo de representación
El tamaño o número de bits utilizado para la representación
Las operaciones que pueden realizarse sobre ese dato
⌦ Se dice que una arquitectura soporta un determinado tipo de datos si
Tiene asignada al menos una representación de ese tipo de datos
Dispone de un conjunto de operaciones para manipular esa representación

Tipos de datos

Numéricos

Enteros Reales Decimales Lógicos Caracteres

Representaciones: Representaciones: Representaciones: Representaciones: Representaciones:


• Magnitud y signo • Punto fijo • BDC • Compacto • ASCII
• C’1 • Punto flotante • Exceso-3 • No compacto • UNICODE
• C’2 • ... • ... • ...
• ...

estructura de computadores

2
5

2. Representación de Números
⌦ La representación de datos numéricos presenta algunos problemas derivados de la
naturaleza digital del computador:
Los números deben representarse con un número finito de bits lo que limita su rango y
precisión
Es necesario adaptar las operaciones a los números binarios
Errores de representación, redondeo, desbordamiento,…
⌦ Notación posicional. Un número de n dígitos en base r se representa:
(N)r = (Xn-1Xn-2…X0)r
Dígito más significativo Dígito menos significativo

⌦ Notación polinomial. Además se satisface la siguiente igualdad (obtener la


representación decimal, sustitución en serie):
(N)r = Xn-1rn-1+Xn-2rn-2+…+X0r0

⌦ Cambios de base (Ne.Nf)r → (?.?)s


1.- (Ne)r = (Xn-1sn-1+Xn-2sn-2+…+X0s0)r =(Ne)s 1.- (Nf)r = (X-1s-1+X-2s-2+…+Xms-m)r =(Nf)s
2.- (Ne)r /s= (Xn-1sn-2+Xn-2sn-3+…+X1)+X0/S 2.-(Nf)r s = X-1 + (X-2s-1+…+Xms-m+1)
3.- X0 es dígito menos significativo 3.-X-1 es el dígito más significativo
4.- Continuar con (Ne)r /s 4.-Continuar con (Nf)r s

estructura de computadores

2. Representación de Números
⌦ Números Naturales (N) enteros sin signo representados usando binario puro.

⌦ Con n bits para representar números naturales:

Número mayor: 2n-1

Número menor: 0

Rango de Representación N∈ [2n-1,0].

⌦ Si se execede el rango de representación se produce desbordamiento (overflow)

⌦ Números Enteros (Z) enteros con signo:


Magnitud y Signo: Usa un bit para almacenar el signo del número
Rango de representación N∈ [-2n-1-1, 2n-1-1]
Hay dos podibles representaciones para el cero
Complemento a la base: Obtener el opuesto teniendo (sólo se usan n bits)
C2(N) = 2n- N.
Rango de representación: N∈ [-2n-1, 2n-1-1]
Una única representación para el 0

estructura de computadores

3
7

2. Representación de Números
Representación de datos numéricos decimales
⌦ Cada dígito decimal se codifica mediante un grupo de 4 bits
BCD: los dígitos decimales se codifican mediante su equivalente binario
Exceso-3: los dígitos decimales se codifican sumando 3 a su equivalente binario

Decimal BCD Exc.-3 Empaquetamiento


⌦ Decimal empaquetado
0 0000 0011
2 dígitos decimales por byte
1 0001 0100
2 0010 0101 Dig. 1º Dig. 2º Dig. 3º Dig. 4º Dig. 5º Dig. 6º
3 0011 0110 Byte 1 Byte 2 Byte 3
4 0100 0111
⌦ Decimal no empaquetado
5 0101 1000 1 dígito decimal por byte
6 0110 1001
0111 1010 X Dig. 1º X Dig. 2º X Dig. 3º
7
8 1000 1011 Byte 1 Byte 2 Byte 3
9 1001 1100

estructura de computadores

2. Representación de caracteres e información lógica.

Representación de caracteres
⌦ Los caracteres son necesarios para representación de la información escrita
Letras del alfabeto (a, b, ..., z, A, B, ..., Z, á, é, ..., ü, ...)
Signos de puntuación (, ; : . ¿? ¡! -)
Caracteres numéricos (0, 1, ..., 9)
⌦ Existen diversas alternativas de codificación (7 u 8 bits por carácter)
ASCII (www.asciitable.com)
UNICODE (16 bits) (www.unicode.org)

Representación de información lógica o booleana


⌦ Para representar información lógica se necesita un único bit
TRUE = 1
FALSE = 0
⌦ Representación compacta
8 dígitos booleanos por byte
Necesidad instrucciones complejas para acceder al dato booleano
⌦ Representación no compacta
1 dígito booleano por byte
Instrucciones de acceso sencillas pero se desperdician 7 bits

estructura de computadores

4
9

2. Representación de Números Reales


⌦ Números Reales usando n bits:
Enteros: El número de bits limita el rango, pero se representan exactamente
Reales: El número de bits limita tanto el rango como su precisión
⌦ Representación en punto fijo:
Un nº fijo de bits representa la parte entera y otro la decimal
El punto decimal se coloca entre ambas partes en un lugar fijo
El rango representable es muy limitado
Signo Parte entera Parte decimal
Puede utilizar aritmética entera (1 bit) (21 bits) (10 bits)

N = ± (b30 *220 + b29 *219 + .... + b10*20 + b9 *2-1 + ....+ b0 *2-10 ) b31 b30 ··· b10 b9 ··· b0

⌦ Representación en punto flotante:


Se utiliza notación científica normalizada (todos los dígitos a la derecha de la coma)
Ejemplo: 254.23 103 → 0.25423 106 (Normalizar)
En general los números los expresaremos como:
N = ± m × 2e, m ∈ (1,1/2] (m: mantisa, e: exponente)

Ejemplo: El Computador Simple


Usa 32 bits para representar números reales
Mantisa representada con 24 bits en el convenio magnitud y signo
Exponente representado con 8 bits en el convenio magnitud y signo
SM MANTISA SE EXPONENTE
1bit 23bits 1bit 7bits

estructura de computadores

10

2. Representación de Números Reales


Ejemplo: El Computador Simple
En esta representación un número cualquiera es:
se (E …E )
N = (-1) SM (0.1m22m21…m0) × 2(-1) 6 0

Dado que el número está Emayor=28-1-1=127


normalizado podemos suponer Emenor=-127
que la mantisa es de la forma 0.1

Rango de la representación, Número Mayor = 0.111…1 × 2127 ~ 2127 ~ 1038


Número más próximo a cero = 0.100…0 × 2-127 = 2-128 ~ 10-38
Además el número de mantisas es el mismo para cada exponente
223 números
Mayor densidad de
números entorno al 0

20 21 22 23 24
Precisión de la representación. La precisión mayor es 2-24 ~ 10-7 ⇒ 7 dígitos
0.100…1 2e - 0.100…0 2e = 0.000…1 2e
Usando esta representación números sencillos (0.1) pueden no tener una representación
exacta

estructura de computadores

5
11

2. Representación de Números Reales


Estándar IEEE754 de precisión simple (32 bits)
⌦ Motivación del estándar
Década de los 90, representación propia de números reales (bits y formato de la mantisa y
exponente).
Falta de portabilidad de códigos que manejen números. Cray y IBM 370 números próximos
a cero iguales a cero en * y / y distintos en + e if
Desarrollado en 1985 tras las primeras iniciativas de Intel 1976, fue implementado por
primera vez en el Intel i486 en 1989
⌦ Formato
Signo Exponente Mantisa • Exponente representado en
(1 bit) (8 bits) (23 bits) exceso a 127
e127=e+127 → e=e127-127
b31 b30 ··· b b22 ··· b0
23
• El rango del exponente es
emayor=255-127=128
emenor=0-127=-127

⌦ En esta representación un número cualquiera es:


N = (-1) SM (1.m22m21…m0) × 2(E7…E0)-127

estructura de computadores

12

2. Representación de Números Reales


Estándar IEEE754 de precisión simple (32 bits)
Exponente Mantisa Número
(11111111)127=128 00..00 = 0 ±∞ (Overflow)
(11111111)127=128 ≠0 NaN (Ej: 0/0)
(00000000)127=-127 00..00 = 0 ±0
(00000000)127=-127 ≠0
N = (-1) SM (0.m22m21…m0) × 2-126
Formato Desnormalizado
[-126,127] -
N = (-1) SM (1.m22m21…m0) × 2(E7…E0)-127

⌦ Precisión 0.0…1 = 2-23~10-7 ⇒ 7 dígitos decimales de precisión


⌦ Número mayor: 1.11…1 × 2127 ~ 2128 ~1038
⌦ Número más próximo a cero:
Sin extensión 1.00…0 × 2-126 = 2-126 ~10-38
Desnormalización 0.0…1 × 2-126 = 2-149 ~10-45

Underflow Overflow
0 2-149 2-126 2128

estructura de computadores

6
13

2. Representación de Números Reales


Ejemplos:
1. Obtener la representación decimal del número 0xBE600000 codificado en el
estándar IEEE754

0xBE600000 = 1011 1110 0110 0000 … 0000


Signo = 1 = negativo
Exponente = 0111 1100 = 7C = 124 ⇒ (124)127 = 124 – 127 = -3
Número = -1 1.11 × 2-3 = - (1 + 0.5 + 0.25) × 2-3 = -1.75 ×0.125 = -0.21875

2. Obtener la representación del número 23.875 en el formato IEEE754

Parte entera 23 = 10111


Parte fraccionaria 0.875 = 0.111
Número sin normalizar = 10111.111 ⇒ 1.0111111 × 24
Mantisa = 0111111
Exponente = 4 ⇒ (4)127 = 4 + 127 = 131 = 1000 0011
23.875 =1 1000 0011 011111100000000000000000
= 1100 0001 1011 1111 0000 0000 0000 0000 = 0xC1BF0000

estructura de computadores

14

2. Representación de Números Reales

Error de Redondeo unitario


Truncamiento fl(X)=Xt : Descartar los bits de la mantisa que exceden la
precisión
Exceso fl(X)=Xe : Descarta los bits de la mantisa y aumenta en “uno”
Redondeo fl(X)=Xr: Xe o Xt, en función de la distancia a X

Xt X Xe Xt X Xe

Error Absoluto: |Xt-X|


Error Relativo: |Xt-X|/|X| = eps
En general Xr = X(1+eps)
Error por Desbordamiento: Debido al rango

estructura de computadores

7
15

2. Representación de Números Reales

Acumulación de Errores de Redondeo


Operación
Normalizar
Redondear
Ejemplo: Usando 5 dígitos (eps = 10-5 )
X = 0,31426 103 x+y = 92,84126 103 → 0,9284126 105 → 0,92841 105
y = 0,92577 105 Error Relativo = 8,5 10-6

En general fl(x op y) = (x op y) (1 + eps)


Ejemplo fl(x(y+z))=x(y+z)(1+2eps)
Anulación Catastrófica: Restas entre elementos muy próximos
Ejemplo (eps=10-16)
(-100.0 + 100.0 + 10-15) 1032 = 1017
(-100.0 + 10-15 + 100.0) 1032 = 0

estructura de computadores

16

3. Estructura básica de un computador


Arquitectura del repertorio de instrucciones
⌦ Conjuntos de atributos de un computador que son visibles a:
El programador en lenguaje máquina,
El sistema operativo o
El compilador
⌦ Engloba los siguientes elementos
Conjunto de registros visibles al programador
Conjunto de instrucciones máquina o ensamblador
Tipos básicos de datos soportados por las instrucciones máquina
Modos de direccionamiento
Mecanismos de E/S

Organización hardware del sistema


⌦ Conjunto de módulos básicos que componen el computador
CPU (ALU, unidad de control, registros, ...)
Memoria (memoria principal, memoria cache, memoria virtual)
E/S (periféricos, controladores, sistema de interrupciones, DMA, ...)
Buses (buses del sistema, buses de expansión, etc.)
⌦ Funcionamiento y alternativas de implementación de los módulos básicos
⌦ Interconexión e interacción entre los mismos

estructura de computadores

8
17

3. Estructura básica de un computador


Módulos básicos
Esquema
CPU (Unidad Central de Proceso)
Realiza la ejecución de las instrucciones
Unidad de Control (UC) C Unidad de Memoria
Cont. Prog. (PC) P Almacena las instrucciones y los datos
Reg. Estado (SR)
R0
Unidad
U Unidad de E/S
•• Registros
Aritmético
Transfiere información entre el computador
• Lógica
(ALU) y los dispositivos periféricos
R7
Reg. Instr. (IR)
Reg. Dir. Mem. (MAR)
Reg. Dat. Mem. (MDR) Elementos de interconexión: BUSES
Bus Datos Bus de datos
Bus Direcc. Para transferencia de datos entre la CPU y
Bus Control memoria o E/S
Bus de direcciones
Para especificar la dirección de memoria
MEMORIA E/S o la dirección del registro de E/S
Bus de control
Señales de control de la transferencia
(reloj, lectura/escritura, etc.)

estructura de computadores

18

3. Estructura básica de un computador


Características principales del modelo Von Neumann

⌦ Su funcionamiento se basa en el concepto de programa almacenado en memoria


La memoria principal almacena
Instrucciones: programa que controla el funcionamiento del computador
Datos: datos que procesa y genera dicho programa
⌦ Las palabras en memoria siguen una organización lineal
Todas las palabras de memoria tienen el mismo tamaño
No hay distinción explícita entre instrucciones y datos

estructura de computadores

9
19

3. Estructura básica de un computador


Características principales del modelo Von Neumann

⌦ La ejecución de las instrucciones es secuencial


El secuenciamiento de las instrucciones es implícito, y viene determinado por el
orden en que han sido almacenadas en la memoria
Este secuenciamiento sólo puede ser modificado por instrucciones específicas de
salto
El contador de programa (PC) indica en cada instante cual es la siguiente instrucción
a ejecutar
⌦ Las fases que se distinguen en la ejecución de una instrucción son
Búsqueda de la instrucción en memoria (Fetch) y cálculo de la direcc. de
instrucción siguiente
Descodificación de la instrucción por parte de la CPU
Búsqueda de los operandos de la instrucción
Ejecución de la instrucción
Escritura del resultado

estructura de computadores

20

4. Elementos importantes de la arquitectura


Elementos de la CPU
Unidad de proceso o ruta de datos (data-path)
⌦ Unidad Aritmético-Lógica (ALU)
Realiza las operaciones aritméticas y lógicas que indican las instrucciones del programa
⌦ Banco de Registros
Conjunto de registros visibles al usuario
Almacena los datos y los resultados con los que trabaja la ALU
⌦ Registros especiales
Contador de programa, registro de estado, dirección del dato en memoria, etc.
⌦ Buses internos
Caminos de interconexión entre los elementos anteriores
Unidad de control o ruta de control (control-path)
⌦ Genera las señales necesarias para que la unidad de proceso ejecute las instrucciones
de forma adecuada
⌦ Es un sistema secuencial. Su complejidad depende de
La complejidad de la unidad de proceso y del número y tipo de instrucciones a ejecutar

estructura de computadores

10
21

4. Elementos importantes de la arquitectura


Registros importantes
⌦ Contador de programa (PC, “Program Counter”)
Almacena la dirección de la siguiente instrucción a ejecutar
Cada vez que se accede a una instrucción se le suma una cantidad igual a la longitud de la misma
⌦ Registro de estado (SR, “Status Register”)
Almacena códigos o bits de condición (Z, N, C, V, etc.)
También almacena otra información de estado (máscara interrupciones, bit de traza, etc.)
⌦ Puntero de pila (SP, “Stack Pointer”)
⌦ Registros de datos o de propósito general (Di ó Ri)
Se utilizan para almacenar datos del programa temporalmente
También pueden usarse para direccionamiento y manipulación de direcciones
⌦ Registros de direcciones (Ai)
Se utilizan para para direccionamiento y manipulación de direcciones
No siempre se distinguen de los registros de datos
Códigos de condición del registro de estado
Bits de estado Significado
Z (cero) Se activa siempre que el resultado una operación es cero (cero)
N (negativo) Se activa siempre que el resultado una operación es negativo
C (acarreo) Se activa siempre que el resultado una operación produce acarreo (carry)
V (desbordamiento) Se activa siempre que el resultado una operación produce desbordamiento (overflow)

estructura de computadores

22

4. Elementos importantes de la arquitectura


Pila del sistema
⌦ Es una zona de memoria para almacenar datos y/o instrucciones de forma temporal
⌦ El acceso a la pila es restringido
Sólo se puede añadir o eliminar un elemento al final de la pila, llamado cabecera de la pila
Funciona igual que una pila de objetos (p. ej. platos) en la que sólo se puede añadir o
eliminar un objeto del final pero no de la mitad.
También se llama memoria LIFO (Last-In-First-Out, o último que entra primero que sale)
El puntero de pila es un registro que siempre apunta a la cabecera de la pila
Se llaman base de la pila y cabecera de la pila a las direcciones tope por ambos lados de la pila
⌦ Las operaciones básicas sobre una pila son:
PUSH: para poner un nuevo elemento en la cabecera de la pila
POP: para eliminar un elemento de la cabecera de la pila

estructura de computadores

11
23

5. Organización de la Memoria
Organización de la memoria (*) (*) Desde el punto de vista del programador

⌦Los datos e instrucciones que manipula un programa se almacenan en la memoria


Temporalmente se pueden almacenar datos en los registros de la CPU para su manipulación: el
acceso a un registro es mucho más rápido que el acceso a memoria
Eventualmente pueden solicitarse datos a los dispositivos de E/S
⌦Organización de la memoria en palabras
La memoria se organiza en grupos de n bits llamados palabras de memoria
Los computadores actuales utilizan anchos de palabra entre 16 y 64 bits
Cada palabra de memoria tiene asignado un identificador llamado dirección de memoria
El rango de direcciones de memoria es un número entre 0 y 2k-1
Esas 2k direcciones distintas constituyen el espacio de direcciones del computador
Para especificar una dirección dentro de ese rango se necesitan k bits de dirección

EJEMPLO MEMORIA
0 Palabra 0
⌦ Computador de 32 bits con 16 Mbytes de memoria 1 Palabra 1
Ancho de palabra: 32 bits (4 bytes)

Dirección
Nº de palabras en memoria: 4 M palabras (222)
i Palabra i
Espacio de direcciones: 222 palabras
Nº de bits de dirección necesarios: 22
2k-1 Palabra 2k-1

n bits
estructura de computadores

24

5. Organización de la Memoria
⌦Sin embargo, es posible que la arquitectura permita que el tamaño de la información mínima
direccionable sea menor que una palabra de memoria:
Se llama unidad direccionable, a la mínima cantidad de información que tiene una dirección
única
Es común que en un computador de ancho de palabra 16, 32 ó 64 bits, el tamaño de la
unidad direccionable sea de 1 byte (8 bits)
⌦Cuando el ancho de palabra y tamaño de la unidad direccionable no coinciden aparecen 2
problemas:
Alineamiento: cómo relacionar las direcciones de las palabras con las direcciones de las
unidades direccionables
Ordenamiento: cómo repartir el contenido de una palabra en un conjunto consecutivo de
unidades direccionables

Alternativas de alineamiento Dirección del byte Dirección del byte

⌦ Palabras no alineadas: permitir que una 0 1 2 3 0 1 2 3


palabra tenga cualquier dirección 4 5 6 7 4 5 6 7
El interfaz de memoria debe secuenciar los
accesos (ya que podrán requerirse varios para 8 9 10 11 8 9 10 11
obtener la información)
12 13 14 15 12 13 14 15
⌦ Palabras alineadas: limitar las direcciones de
palabra según su tamaño ... ...
Los bytes en cualquier dirección, las palabras de
16 bits en direcciones pares, las de 32 bits en 2k-4 2k-3 2k-2 2k-1 2k-4 2k-3 2k-2 2k-1
direcciones múltiplos de 4...
Se desperdicia memoria palabras palabras
alineadas no alineadas
estructura de computadores

12
25

5. Organización de la Memoria
Alternativas de ordenamiento
⌦ Big-Endian: los bytes dentro de una palabra se ordenan comenzando por el de menor dirección
La dirección de la palabra coincide con la dirección del primer byte
⌦ Little-Endian: los bytes dentro de una palabra se ordenan comenzando por el de mayor dirección
La dirección de la palabra coincide con la dirección del último byte

Big-Endian Little-Endian
Dirección del byte Dirección del byte

Ejemplo Palabra 0 0 1 2 3 Palabra 0 3 2 1 0

⌦ Queremos almacenar el número Palabra 4 4 5 6 7 Palabra 4 7 6 5 4


hexadecimal $AABBCCDD (4 bytes)
en la palabra de memoria 184:

Big-Endian Little-Endian
184 185 186 187 187 186 185 184 Palabra 2k-4 2k-4 2k-3 2k-2 2k-1 Palabra 2k-4 2k-1 2k-2 2k-3 2k-4
184: AA BB CC DD 184: AA BB CC DD
⌦ Big-Endian: el byte más significativo del dato (AA) se
Visto de otro modo:
almacena en la dirección de byte con valor numérico más
184 AA 184 DD bajo (184)
185 BB 185 CC ⌦ Little-Endian: el byte más significativo del dato (AA) se
186 CC 186 BB almacena en la dirección de byte con valor numérico más
187 DD 187 AA alto (187)

estructura de computadores

26

6. Modos de Direccionamiento
a. Definición
⌦Forma de especificar la ubicación de los datos y modos para acceder a ellos

⌦Los datos que maneja una instrucción máquina pueden estar ubicados en:
En la propia instrucción

En un registro de la CPU

En la memoria del computador

Modos de direccionamiento básicos Notación


⌦ Inmediato Ri Registro nº i de la CPU
⌦ Directo a registro (Ri) Contenido del registro Ri
⌦ Directo a memoria (absoluto) (X) Contenido de la posición de memoria con
⌦ Indirecto con registro dirección X
⌦ Indirecto con memoria EA Dirección efectiva de un operando
⌦ Indirecto con pila SP Puntero de pila (Stack Pointer)
⌦ Indirecto con desplazamiento

estructura de computadores

13
27

6. Modos de Direccionamiento
b. Modo de Direccionamiento Inmediato
⌦ El operando está contenido en un campo de la propia instrucción máquina
⌦ Sintaxis: opcode #A

Instrucción:

opcode A

operando = A

⌦ Uso de constantes e inicialización de variables


⌦ Ventaja: No requiere accesos adicionales a memoria
⌦ Desventaja: El campo de la instrucción destinado al operando inmediato
limita el rango

estructura de computadores

28

6. Modos de Direccionamiento
c. Modo de Direccionamiento Directo a Registro
⌦ El operando está contenido en un registro de la CPU
⌦ Sintaxis: opcode Ri

Instrucción:
Registros
opcode Ri R0

operando = (Ri) Ri operando


Rn

⌦ Almacenamiento de variables en uso durante varias operaciones.


⌦ Ventaja: La codificación del registro requiere un número reducido de bits. No
supone referencias adicionales a memoria
⌦ Desventaja: Número limitado de registros

estructura de computadores

14
29

6. Modos de Direccionamiento
d. Modo de Direccionamiento Directo a Memoria (Absoluto)
⌦ La dirección efectiva del operando está especificada en la instrucción
⌦ Sintaxis: opcode A

Instrucción:
Memoria
opcode A 0


EA = A A operando


2k-1

⌦ Ventaja: Sólo requiere de un acceso a memoria.


⌦ Desventaja: Zona direccionable limitada.

estructura de computadores

30

6. Modos de Direccionamiento
e. Modo de Direccionamiento Indirecto con Registro
⌦ La dirección efectiva del operando está almacenada en el registro especificado
en la instrucción
⌦ Sintaxis: opcode (Ri)
Instrucción:
opcode Ri Memoria
0

EA = (Ri) Registros
R0 (Ri) operando

Ri Dirección operando

Rn 2k-1

⌦ Ventaja: Mayor zona referenciable.


⌦ Desventaja: Requiere acceder a un registro y memoria

estructura de computadores

15
31

6. Modos de Direccionamiento
f. Modo de Direccionamiento Indirecto con Memoria
⌦ La dirección efectiva del operando está almacenada en la dirección de
memoria especificada en la instrucción
⌦ Sintaxis: opcode (A)
Memoria
Instrucción:
0
A


opcode
(A) operando
EA = (A)


A Dirección operando


2k-1
⌦ Implementación de paso por referencia de parámetros a subrutinas (punteros)
⌦ Ventaja: Mayor zona referenciable.
⌦ Desventaja: Requiere dos accesos a memoria

estructura de computadores

32

6. Modos de Direccionamiento
h. Modo de Direccionamiento de Pila
⌦ El operando está almacenado en la cabecera de la pila del computador
⌦ Sintaxis: opcode (SP)

Instrucción:
Pila (en memoria)
opcode SP operando

registro de pila

EA = (SP)

⌦ Soporte para la implementación de subrutinas.


⌦ Ventaja: No es necesario especificar el operando en la instrucción

estructura de computadores

16
33

6. Modos de Direccionamiento
i. Indirectos con desplazamiento
⌦ La dirección del operando es de la forma: EA = base + desplazamiento.

Modo de Direccionamiento Indirecto con Registro Base


⌦ La dirección efectiva del operando se calcula sumando el campo desplaza-
miento al contenido del registro especificado
⌦ Sintaxis: opcode desp(Ri)

Instrucción:
Memoria
opcode Ri desp 0


Registros
EA = (Ri)+desp (Ri)+desp operando
R0


Ri Dirección base
+

Rn 2k-1

estructura de computadores

34

6. Modos de Direccionamiento
j. Modo de Direccionamiento Indirecto Relativo al Contador de Programa
Programa
⌦ Es un direccionamiento registro-base que utiliza implícitamente el contador
de programa
⌦ Sintaxis: opcode desp(PC)

Instrucción: Memoria
0
opcode desp

+ (PC)+desp operando

Contador de Programa

EA = (PC)+desp
2k-1

⌦ La dirección efectiva es un desplazamiento a la dirección de la instrucción


(implementación de bucles y bifurcaciones)

estructura de computadores

17
35

6. Modos de Direccionamiento
k. Modo de Direccionamiento Indirecto con Registro Base y Registro
Registro Índice
⌦ La dirección efectiva del operando se calcula sumando el campo desplazamiento
al contenido de los registros especificados: Base (Ri) e Índice (Rj)
⌦ Sintaxis: opcode desp(Ri, Rj)
Instrucción:
opcode Ri Rj desp
Memoria
Registros 0
R0


Ri Dirección base operando

+


Rj Índice
EA = (Ri) +(Rj)+desp

Rn 2k-1

estructura de computadores

36

6. Modos de Direccionamiento
Otros modos de direccionamiento
Modo Sintáxis Dir. Efectiva
Indirecto con registro Opcode (Ri)+ EA = (Ri)
postincrementado Ri ← (Ri) + 1

Indirecto con registro Opcode (Ri)- EA = (Ri)


postdecrementado Ri ← (Ri) –1

Indirecto con registro Opcode +(Ri) Ri ← (Ri) + 1


preincrementado EA = (Ri)

Indirecto con registro Opcode -(Ri) Ri ← (Ri) – 1


predecrementado EA = (Ri)

Indirecto con registro Opcode (Ri×S) EA = (Ri) ×S


escalado

Registro-base escalado Opcode desp(Ri×S) EA = (Ri) ×S+desp Alinimiento


S=1,2,4,8
Registro-base indexado y Opcode desp(Rj,Ri×S) EA = (Rj)+(Ri) ×S+desp
escalado con despl.

estructura de computadores

18
37

6. Modos de Direccionamiento
l. Algunas Aplicaciones de los Modos de Direccionamiento
Acceso a variables del tipo array
⌦ El primer elemento del array es el 0
⌦ El tamaño de cada elemento del array es una palabra
⌦ Dirección del elemento i-ésimo
EA(A[i]) = EA(A[0]) + i
⌦ Direccionamienro Indirecto con registro base y registro índice. Memoria

Dirección Base A[0]


A[1]
Ínidice +
A[i]

⌦Si los elementos ocupan más de una palabra, usar A[n-1]


direccionamientos escalados

estructura de computadores

38

6. Modos de Direccionamiento
l. Algunas Aplicaciones de los Modos de Direccionamiento
Acceso a variables del tipo estructura o registro

⌦La estructura o registro comienza en el primero de sus campos


⌦El tamaño de cada elemento es variable pero conocido
⌦La dirección efectiva de un campo es:
EA(var.campo)=EA(var) + desp_campo
⌦Direccionamiento indirecto de registro con desplazamiento

Memoria

struct
struct var
var {{
long Dirección Base
long int campo1;
int campo1; campo1
int
int campo2;
campo2; Desplazamiento + campo2
}}

estructura de computadores

19
39

6. Modos de Direccionamiento
l. Algunas Aplicaciones de los Modos de Direccionamiento

Operaciones de Pila
⌦Las operaciones básicas sobre una pila (PUSH y POP) pueden realizarse utilizando los modos de
direccionamiento autoindexados. (La pila crece hacia posiciones inferiores)

PUSH R1 ↔ MOVE R1, -(SP) POP R1 ↔ MOVE (SP)+,R1


Situación inicial Operación PUSH Operación POP
MEMORIA MEMORIA
MEMORIA
0 0
0 •
• •
• SP •
• 12 •
• •
91
SP 91
4 SP

PILA
(Puntero de pila) 4
4

PILA

PILA

• •
• • •
• •
• 320 320
320 •
• •
• • •
• •
• 2k-1 2k-1
2k-1
R1 12 R1 91

estructura de computadores

40

6. Modos de Direccionamiento
Ejemplo

Mostrar el contenido de todos los registros y posiciones de memoria afectadas (sin incluir el
PC) por la ejecución de cada una de las instrucciones, suponiendo que partimos siempre
de las condiciones iniciales especificadas:
Instrucciones:
a) CLR.L -(A1) Condiciones
Condicionesiniciales:
iniciales:
b) CLR.W D2 REGISTROS
REGISTROS MEMORIA
MEMORIA
c) MOVE.W $1204,D1 A1:00001202
A1:00001202 001200:1111
001200:1111
d) MOVE.W #$1204,D1 A2:00001204
A2:00001204 001202:2222
001202:2222
e) MOVE.B (A2)+,$1200 D1:01020304
D1:01020304 001204:3333
001204:3333
f) MOVE.L D1,-(A2) D2:F0F1F2F3
D2:F0F1F2F3 001206:4444
001206:4444
g) MOVE.L (A1)+,D2 001208:5555
001208:5555
00120A:6666
00120A:6666

estructura de computadores

20
41

7. Instrucciones máquina

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 de computadores

42

7. Instrucciones máquina
Trasferencia de datos
⌦ Permiten el movimiento entre distintos dispositivos de almacenamiento del computador:
Reg → Reg Mem → Reg Pila → Reg
Reg → Mem Mem → Mem Pila → Mem
Reg → Pila Mem → Pila
⌦ 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
MOVE fnte,dest dest ← fnte
LOAD Ri, dir Ri ← (dir)
STORE dir, Ri dir ← (Ri)
PUSH fnte Pila ← fnte
POP dest dest ← Pila
MOVEM fnte, dest, n fnte0 ← dest0 ...
fnten-1 ← destn-1
estructura de computadores

21
43

7. Instrucciones máquina
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, 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 fnt1,fnt2,dest dest ← fnt1+fnt2 Suma dos operandos
SUB fnt,dest dest ← dest-fnt Resta dos operandos
MULT fnt,dest dest ← dest⋅fnt Multiplica dos operandos
DIV fnt1,fnt2,dest dest ← fnt1 ÷fnt2 Divide dos operandos
NEG fnt,dest dest ← - fnt Cambia de signo al operando
ABS fnt,dest dest ← Abs(fnt) Obtiene el valor absoluto del operando
INC fnt,dest dest ← fnt+1 Suma 1 al operando
DEC fnt,dest dest ← fnt-1 Resta 1 al operando
COMP fnt1,fnt2 fnt1-fnt2 Compara dos operandos y fija los bits
Activa Estado de estado según el resultado
estructura de computadores

44

7. Instrucciones máquina

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 fnt1,fnt2,dest dest ← fnt1 AND fnt2 Realiza la Y lógica de dos operandos
OR fnt1,fnt2,dest dest ← fnt1 OR fnt2 Realiza la O lógica de dos operandos
NOT fnt,dest dest ← NOT fnt Realiza la negación lógica del operando
XOR fnt1,fnt2,dest dest ← fnt1 XOR fnt2 Realiza la O exclusiva de dos operandos
BCLR dest, n dest(n) ← 0 Pone a cero el bit especificado
BSET dest, n dest(n) ← 1 Pone a uno el bit especificado

BTST fnt, n Estado ← fnte(n) Activa estado según valor del bit indicado

estructura de computadores

22
45

7. Instrucciones máquina

Instrucciones de 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


LSL fnt,n 0 Desplaz. lógico izda. n bits (Logic Shift Left)

LSR fnt,n 0 Desplaz. lógico decha. n bits (Logic Shift Right)

ASL fnt,n 0 Desplaz. aritm. izda. n bits (Arith. Shift Left)

ASR fnt,n Desplaz. aritm. decha. n bits (Arith. Shift Right)

RL fnt, n Rotación izda. n bits (Rotate Left)

RR fnt, n Rotación decha. n bits (Rotate Right)

estructura de computadores

46

7. Instrucciones máquina
Instrucciones de 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
⌦ Es necesario especificar la dirección de la siguiente instrucción que debe ejecutarse 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 Bifurca (Branch) a la dirección especificada si la

else PC ← PC + 1 condición es cierta

estructura de computadores

23
47

7. Instrucciones máquina
Instrucciones de Control de flujo
⌦ 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 que se
activan en relación a la ejecución de las instrucciones anteriores:
⌦ Explícita: Mediante el uso de instrucciones de comparación
⌦ Implícita: Modificación de los códigos de condición de instrucciones ordinarias

Condic. Nombre Es cierta si


EQ Igual (Equal) En una comparación previa los operandos son iguales
NEQ No igual (No equal) En una comparación previa los operandos son distintos
GT Mayor que (Greater Than) En una comparación previa el primer operando es mayor que el segundo
GE Mayor o igual (Gr. or Eq.) En una comparación previa el primer operando es mayor o igual que el segundo
LT Menor que (Less Than) En una comparación previa el primer operando es menor que el segundo
LE Menor o igual (Les.or Eq.) En una comparación previa el primer operando es menor o igual que el segundo
Z Cero (Zero) El resultado de una operación anterior es cero
NZ No cero (No Zero) El resultado de una operación anterior es distinto de cero

estructura de computadores

48

7. Instrucciones máquina
Ejemplo: estructuras de decisión iterativas simples
falso CMP
if (A>B) { cierto
A>B CMP A,B
A,B
S1 BGT
BGT L1
L1
} S2
S2
S1 S2 ....
....
else {
JMP
JMP FIN
FIN
S2 L1 S1
} L1 S1
FIN ....
....
FIN
FIN ....
....

for(i=ini;i<fin;i++) i=ini
MOVE
MOVE ini,
ini, D0
D0
{ MOVE
MOVE fin,
fin, D1
D1
S1 cierto falso FOR
FOR CMP
CMP D1,D0
D1,D0
i<=fin
BGT
BGT FIN
FIN
}
S1
S1
S1
FIN
ADD
ADD #1,D0
#1,D0
i=i+1
BRA
BRA FOR
FOR
FIN
FIN ....
....

estructura de computadores

24
49

7. Instrucciones máquina
Instrucciones de Control de flujo
⌦ Instrucciones de soporte para la programación con subrutinas
⌦ Las subrutinas se pueden llamar desde cualquier punto.
⌦ Debe ser posible el anidamiento de subrutinas
⌦ Una vez finalizada la subrutina debe continuar la ejecución en el programa de origen.

Instrucción Operación Descripción


JSR dir SR, PC → Pila; Salto a subrutina; guarda en pila PC y estado
PC ← dir
RTS Estado, PC ← Pila Retorno de subrutina; recupera de pila PC y
estado

estructura de computadores

50

7. Instrucciones máquina
Llamadas a procedimientos

$4000
$4000 inicio
inicioMOVE
MOVE #$0,D0
#$0,D0
PC $4501 ....
....
$4500
$4500 JSR
JSR sub1
sub1 PC $4501 PC $4601
$4501
$4501 MOVE
MOVE D0,$3000
D0,$3000
....
....
SP
$4600
$4600 fin
fin HALT
HALT
$4601 SP SP 4501
$4601 sub1
sub1 ADD
ADD #$3,D0
#$3,D0
...
...
$4630
$4630 JSR
JSR sub2
sub2 PC $4651
PC $4631 $4631
$4631 ADD
ADD D0,D1
D0,D1
$4650
$4650 RTS
RTS
$4651
$4651 sub2
sub2 CMP
CMP D0,D3
D0,D3 4631
...
... SP 4501
SP 4501
$4700
$4700 RTS
RTS

estructura de computadores

25
51

7. Instrucciones máquina
Llamadas a procedimientos (Paso de Parámetros)
⌦ Registros: Limitado por el número de registros. Difícil programación.
⌦ Memoria: Implica más accesos a memoria
⌦ Pila: Además de almacenar la dirección de retorno, se guardan los parámetros de la
subrutina. Permite procedimientos reentrantes.

Paso de Parámetros Guardar Contexto 3


(PUSH) 1

JSR 2
Restaurar Contexto 4
Liberación de Parámetros
5 RTS
6
1 2 3

Contexto

dir dir
Param n Param n Param n

Param 0 Param0 Param0

6 5 4

estructura de computadores

52

7. Instrucciones máquina
Otras instrucciones
Gestión de Marcos de Activación
⌦ Las variables locales de una subrutina se almacenan en la pila
⌦ El acceso a estas variables se simplifica mediante un puntero de marco de activación
(frame pointer)

Paso de Parámetros LINK FP,#tam


SP (PUSH)
Guardar Contexto
Contexto JSR

Liberación de Parámetros
Variables Locales Restaurar Contexto
UNLK FP
Marco de FP (sub. Origen) FP RTS
Activación
Puntero de Marco
Dirección Retorno
de Activación

LINK FP,#tam (SP ← FP, FP ← SP, SP ← SP+tam)


Parámetros
UNLK FP (SP ← FP, FP ← Pila)

estructura de computadores

26
53

7. Instrucciones máquina
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)
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 de computadores

54

8. Diseño del repertorio de instrucciones


Introducción
⌦ Instrucción Máquina: Acción elemental que puede ejecutar un computador
⌦ Arquitectura de un Procesador: “Conjunto de recursos operativos disponibles para
un programador en el nivel del lenguaje máquina” (ISA: Instruction Set
Architecture)
Tipos de Datos (Tema 3.1)
Conjunto de Registros Disponibles (Tema 3.1)
Modos de Direccionamiento (Tema 3.2.1)
Conjunto de Instrucciones (Tema 3.2.2)

Absoluto MUL, enteros, dir. absoluto


⌦Ortogonalidad: “El repertorio de
Directo
instrucciones de un computador es ADD MUL MOVE
ortogonal si puede combinar los
entero
factores anteriores sin restricción”
flotante

estructura de computadores

27
55

8. Diseño del repertorio de instrucciones


Elementos constitutivos de una instrucción máquina
⌦ Código de operación (opcode)
⌦ Operandos fuente
Número de operandos
Direccionamiento
⌦ Operando destino
Direccionamiento
⌦ Instrucción siguiente
Ruptura del secuencimiento implícito de instrucciones

Instrucción máquina:

opcode op. fuente 1 · · · · op. fuente n op. destino instruc. siguiente

estructura de computadores

56

8. Diseño del repertorio de instrucciones


Alternativas de diseño del formato de instrucción
⌦ Elementos de diseño:
Longitud de las instrucciones
Número de campos que conforman cada instrucción
Tamaño (en bits) de cada campo
Codificación de cada campo
⌦ Factores de Diseño:
Número de operaciones distintas presentes en el repertorio
Número de operandos de la instrucción (incluyendo operandos fuente y destino)
Modos de direccionamiento disponibles para cada operando
Tamaño y tipos de datos soportados

Un buen diseño del repertorio de instrucciones, uniforme y regular simplifica la


lógica del procesador

estructura de computadores

28
57

8. Diseño del repertorio de instrucciones


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 Ejemplo


⌦ Se especifican los tres operandos en la instrucción máquina ADD A, B, C A← B+C
⌦ Formato flexible, pero ocupa mucho espacio

Instrucciones con dos operandos explícitos Ejemplo


⌦ Dos operandos explícitos y uno implícito, uno de los
ADD B, C B← B+C
operandos actúa como fuente y destino
⌦ Es menos flexible, pero ocupa menos espacio

estructura de computadores

58

8. Diseño del repertorio de instrucciones

Número de operandos explícitos en una instrucción (cont.


(cont.))

Instrucciones con un único operando explícito Ejemplo


⌦ Se especifican un sólo operando en la instrucción máquina. Uno ADD B Ac. ← B + Ac.
de los operandos y el resultado se almacenan en un registro
especial del procesador: el acumulador
⌦ Formato muy reducido, pero poco flexible

Instrucciones sin operandos explícitos Ejemplo


⌦ Tanto los operandos como el resultado se almacenan ADD (SP) ← (SP) + (SP-1)
en la pila del sistema
⌦ Ocupa muy poco espacio
⌦ Requiere varias instrucciones de acceso a la pila
Pila (antes)
Pila (después)
SP B
SP B+C
C

estructura de computadores

29
59

8. Diseño del repertorio de instrucciones


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 (MOVE dest, fte; LOAD fte; STORE dest; PUSH fte, POP dest ) y sin
sobreescribir el contenido de ninguno de los operandos fuente

3 operandos 1 operando 0 operandos


SUB Y, A, B (Y ← A-B) LOAD D (Ac ← D) PUSH E
MULT T, D, E (T ← D*E) MULT E (Ac ← Ac*E) PUSH D
ADD T, T, C (T ← T+C) ADD C (Ac ← Ac+C) MULT
DIV Y, Y, T (Y ← Y/T) STORE Y (Y ← Ac) PUSH C
LOAD A (Ac ← A) ADD
2 operandos SUB B (Ac ← Ac-B) PUSH B
DIV Y (Ac ← Ac/Y) PUSH A
MOVE Y, A (Y ← A) STORE Y (Y ← Ac) SUB
SUB Y, B (Y ← Y-B) DIV
MOVE T, D (T ← D) POP Y
MULT T, E (T ← T*E)
ADD T, C (T ← T+C)
DIV Y, T (Y ← Y/T)

estructura de computadores

60

8. Diseño del repertorio de instrucciones


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:
13 instrucciones de 3 operandos
Un operando que permite direccionamiento directo e indirecto de registro
Dos operandos que permiten direccionamiento absoluto e indirecto de memoria
190 instrucciones de 2 operandos
Dos operandos que permiten direccionamiento directo e indirecto de registro
32 instrucciones de 0 operandos

estructura de computadores

30
61

9. Arquitecturas CISC y RISC

Arquitecturas CISC (Computador de conjunto de instrucciones complejo)


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 de computadores

62

9. 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 de computadores

31
63

9. 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 de computadores

64

9. Arquitecturas CISC y RISC

Ventajas de las arquitecturas RISC


⌦ El hardware de la arquitectura 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 de computadores

32
65

9. Arquitecturas CISC y RISC

Computadores CISC
⌦ VAX 11 (desaparecido)
⌦ IBM Mainframes (serie 360, 370 y descendientes)
⌦ Intel 80x86 (i8086, i80286, i80386, i80486, Pentiums)
⌦ 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 de computadores

66

10. ejemplos: MC68000


Características del MC68000
⌦ Procesador CISC de 16 bits
Aprox. 100 instrucciones máquina
Cada instrucción soporta varios tamaños distintos y varios modos de direccionamiento
El número de combinaciones posibles es muy elevado
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 de computadores

33
67

10. 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 (32 bits) → se representa como .l (long word)
⌦ Decimal BCD empaquetado (dos dígitos BCD por byte)

Byte 0 (8 bits)
Memoria (Ordenación Big-Endian) $000000 7 0
Palabra
$000000 Byte $000000 Byte $000001
Palabra 0 (16 bits)
$000002 Byte $000002 Byte $000003
$000000 15 0
.
.
. Doble Palabra 0 (32 bits)
$000000 31
. 0
.
BCD 0 (2 dígitos)
$FFFFFE Byte $FFFFFE Byte $FFFFFF
$000000 1 0

estructura de computadores

68

10. ejemplos: MC68000


Registros de la arquitectura
31 16 15 8 7 0
D0
⌦ Registros de datos (D0-D7)
D1
Ocho
Para operaciones con datos
D2
D3 Registros Tamaños: .b, .w, .l
D4 de Datos
D5 ⌦ Registros de direcciones (A0-A6)
D6
D7 Para operaciones con direcciones
31 16 15 0
A0
Tamaños: .w, .l
A1
A2 Siete ⌦ Punteros de pila (A7, A7’)
A3 Registros
de Direcciones Uno para usuario (A7=USP)
A4
A5 Otro para supervisor (A7’=SSP)
A6
Puntero de Pila
⌦ Registro de Estado (SR)
A7
(USP) de Usuario Parte más significativa: sólo
31 0 accesible en modo supervisor
A7' Puntero de Pila
(SSP) de Supervisor Parte menos significativa: códigos
0 Registro de Estado de condición (CCR)
15 8 7
(CCR = Reg. de
CCR SR
códigos de condición) ⌦ Contador de programa (CP)
31 0 Contador Apunta a la siguiente instrucción a
PC de Programa ejecutar

estructura de computadores

34
69

10. ejemplos: MC68000

Registro de estado (SR) Códigos de condición


C (“Carry” o acarreo)
Byte del Supervisor Byte del Usuario (CCR)
Se activa cuando se produce un arrastre
15 13 10 8 4 0
de suma o de resta
T S I2 I1 I0 X N Z V C V (“oVerflow” o desbordam.)
Modo Traza Se activa cuando el resultado de una
Estado
operación no se puede expresar en C’2
Supervisor dentro del tamaño seleccionado
Máscara Z (“Zero” o cero)
Interrupciones
Se activa cuando el resultado de una
operación es cero
Extensión
N (Negativo)
Negativo
Códigos de Cero
Se activa cuando el resultado de una
Condición Overflow
operación es negativo
Carry X (eXtensión)
Se activa cuando hay arrastre decimal en
operaciones BCD

estructura de computadores

70

10. ejemplos: MC68000


Modos de direccionamiento
Modo de direccionamiento Cálculo de EA Sintaxis
Direccionamiento directo de registro
Directo de registro de datos Operando = (Dn) Dn
Directo de registro de direcciones Operando = (An) An
Direccionamiento indirecto de registro
Indirecto de registro EA = (An) (An)
Indirecto de registro con postincremento (*) EA = (An); (An) + N → An (An)+
Indirecto de registro con predecremento (*) (An) - N → An; EA = (An) -(An)
Indirecto de registro con desplazamiento EA = (An) + d16 d16(An)
Indirecto de registro indexado con desplazamiento EA = (An) + (Ri) + d8 d8(An,Ri.W ó .L)
Direccionamiento absoluto
Absoluto corto EA = XXXX XXXX
Absoluto largo EA = XXXXXX XXXXXX
Direccionamiento relativo al contador de programa
Relativo al PC con desplazamiento EA = (PC) + d16 d16(PC)
Relativo al PC indexado con desplazamiento EA = (PC) + (Ri) + d8 d8(PC,Ri.W ó .L)
Direccionamiento inmediato Operando = XXXXXXXX #XXXXXXXX
NOTAS
EA = Dirección Efectiva Ri = Registro índice (de datos o direcc.)
Dn = Registro de datos d8 = Desplazamiento de 8 bits
An = Registro de direcciones d16= Desplazamiento de 16 bits
N = 1 si .B, 2 si .W, 4 si .L PC = Contador de Programa

estructura de computadores

35
71

10. ejemplos: MC68000

Formato de las instrucciones


Formato genérico de la instrucción máquina
⌦ Características
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Instrucciones de 0, 1 y 2 operandos
OW: Palabra operación( opcode, tamaño, EA)
9 formatos distintos
Longitud entre 1 y 5 palabras EW para operando inmediato (si existe, una o dos palabras)

⌦ Contenidos de una instrucción máquina EW para dirección efectiva fuente (si existe, una o dos palabras)
Palabra operación (OW, siempre presente) EW para dirección efectiva destino (si existe, una o dos palabras)
Primera palabra de la instrucción
Código de operación
Modos de direccionamiento y Instrucciones de 0 operandos
tamaño de los operandos Sintáxis: OP
Palabras de extensión (EW, de 0 a 4) Instrucciones de 1 operando
Información adicional de los operandos
Sintáxis: OP destino
Valor inmediato
Operación: destino ← OP (destino)
Desplazamiento
Absoluto Instrucciones de 2 operando
⌦ Codificación modos de direccionamiento Sintáxis: OP fuente, destino
Dos campos: Modo y Registro (6 bits) Operación: destino ← (fuente) OP (destino)

estructura de computadores

72

10. ejemplos: MC68000

Formato de las instrucciones (cont.


(cont.))
Instrucciones sin operandos (1 formato)

EA 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Codificación de los modos de modo Registro OW: codigo_op
direccionamiento Ejemplos: RTS
Directo de reg. de datos 000 Nº de reg. (Dn) NOP
Directo de reg. de direcciones 001 Nº de reg. (An)
Indirecto de reg. 010 Nº de reg. (An)
Indirecto de reg. con postincremt. 011 Nº de reg. (An) Instrucciones con un operando (2 formatos)
Indirecto de reg. con predecrem. 100 Nº de reg. (An)
Indirecto de reg. con desplaz. 101 Nº de reg. (An) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Indirecto de reg. Index. con desplaz. 110 Nº de reg. (An) codigo_op tamaño EA destino (a)
Absoluto corto 111 000 OW: modo registro

Absoluto largo 111 001 Campotamaño Tamaño operando


00 byte (.B)
Relativo al PC con desplaz. 111 010 01 palabra (.W)
Relativo al PC index. con desplaz. 111 011 10 doble palabra(.L)
Inmediato 111 100 Ejemplos: CLR.L D0
NEG.B (A3)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW: codigo_op registro (b)

Ejemplos: SWAP D1

estructura de computadores

36
73

10. ejemplos: MC68000

Formato de las instrucciones (cont.


(cont.))
Instrucciones de dos operandos con operando
Instrucciones con 2 operandos (3 formatos) inmediato corto (2 formatos)

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW: cod_op tamaño EA destino EA fuente (a) OW: codigo_op registro 0 dato (a)
modo registro modo registro
Campotamaño Tamaño operando
01 byte (.B) -128 ≤ dato ≤ 127
11 palabra (.W)
10 doble palabra (.L) Ejemplo: MOVEQ #100, D0
Ejemplos: MOVE.L D7, 4(A5)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW: codigo_op dato codigo_op EA destino (b)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 modo registro
OW: codigo_op registro modo_op EA fuente/destino (b)
modo registro 1 ≤ dato ≤ 8
Campo modo-op
Byte Palabra Doble pal. Operación Ejemplo: ADDQ #2, D3
000 001 010 <registro> OP <EA> → registro
100 101 110 <EA> OP <registro> → EA
SUBQ #1, D7

Ejemplos: ADD.L D0, D1


Instrucciones de bifurcación condicional (Bcc, 1 formato)
OR.W #S00FF,D3
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW: codigo_op registro modo_op registro (c) OW: codigo_op condicion desplazamiento

Ejemplos: ABCD -(A0), -(A1) Ejemplo: BEQ dir1


EXG D1, A2

estructura de computadores

74

10. ejemplos: MC68000


MOVIMIENTO DE DATOS
Mnemotécnico Sintaxis Tamaño Función XNZVC
EXG EXG Rm,Rn L Rm↔Rn –––––
LEA LEA <cea>,An L dirección fuente→An –––––
LINK LINK An,#<d16> No An→–(SP); SP→An –––––
SP+d16→SP
MOVE MOVE.t <ea>,<adea> L,W,B (fuente)→destino –**00
MOVE from SR MOVE SR,<adea> W SR→destino –––––
MOVE to CCR MOVE <adea>,CCR W (fuente)→CCR *****
MOVE to SR MOVE <adea>,SR W IF S=1 SR→destino *****
ELSE EXCEPCIÓN
MOVE USP MOVE USP,An L IF S=1 USP→An *****
ELSE EXCEPCIÓN
MOVE USP MOVE An,USP L IF S=1 An→USP *****
ELSE EXCEPCIÓN
MOVEA MOVEA.t <ea>,An L,W (fuente)→destino –.–.–.–.–.
MOVEM MOVEM.t <lista_reg>,<cea> L,W registros→destino –––––
MOVEM.t <lista_reg>,–(An)
MOVEM MOVEM.t <cea>,<lista_reg> L,W (fuente)→registros –––––
MOVEM.t (An)+,<lista_reg>
MOVEP MOVEP.t Dn,d(Am) L,W (fuente)→destino –––––
MOVEP.t d(Am),Dn
MOVEQ MOVEQ #<d8>,Dn L dato (8 bits)→destino –**00
PEA PEA <cea> L dirección→–(SP) –––––
SWAP SWAP Dn W Dn[31:16]↔Dn[15:0] – **0 0
UNLK UNLK An No An→SP; (SP)+→An –––––

estructura de computadores

37
75

10. ejemplos: MC68000


ARITMÉTICA ENTERA
Mnemotécnico Sintaxis Tamaño Función XNZVC
ADD ADD.t <ea>,Dn L,W ,B (fuente)+(destino)→destino *****
ADD.t Dn, <amea>
ADDA ADDA.t <ea>,An L,W (fuente)+(destino)→destino –––––
ADDI ADDI.t # <dato>,<adea> L,W ,B Dato+(destino)→destino *****
ADDQ ADDQ.t# <d3>, <aea> L,W ,B d3+(destino)→destino *****
ADDX ADDX.t Dm,Dn o L,W ,B (fuente)+(destino)+X→destino *****
ADDX.t –(Am),–(An)
CLR CLR.t <adea> L,W ,B 0→destino –0100
CMP CMP.t <ea>,Dn L,W ,B (destino)–(fuente);activa CCR –****
CMPA CMPA.t <ea>,An L,W (destino)–(fuente);activa CCR –****
CMPI CMPI.t #<Dato>,<adea> L,W ,B (destino)–Dato; activa CCR –****
CMPM CMPM.t (Am)+,(An) L,W ,B (destino)–(fuente);activa CCR –****
DIVS DIVS <dea>,Dn W (destino)/(fuente)→destino; –***0
Cociente→destino[15:0],
Resto→destino[31:16]
DIVU DIVU <dea>,Dn W (destino)/(fuente)→destino; –***0
Cociente→destino[15:0],
Resto→destino[31:16]
EXT EXT.t Dn L,W Dn(Extend en signo)→Dn –**00
MULS MULS <dea>,Dn W (fuente)*(destino)→destino –**00
MULU MULU <dea>,Dn W (fuente)*(destino)→destino –**00
NEG NEG.t <adea> L,W ,B 0–(destino)→destino *****
NEGX NEGX.t <adea> L,W ,B 0–(destino)–X→destino *****
SUB SUB.t <ea>,Dn L,W ,B (destino)–(fuente)→destino *****
SUB.t Dn, <amea>
SUBA SUBA.t <ea>,An L,W (destino)–(fuente)→destino –––––
SUBI SUBI.t # <dato>,<adea> L,W ,B (destino)–Dato→destino *****
SUBQ SUBQ.t# <d3>, <aea> L,W ,B (destino)–d3→destino *****
SUBX SUBX.t Dm,Dn L,W ,B (destino)–(fuente)–X→destino *****
SUBX.t –(Am),–(An)
TAS TAS <adea> B Test (destino)→CCR; –**00
1→destino[bit 7]
TST TST <adea> L,W ,B Test (destino)→CCR –**00

estructura de computadores

76

10. ejemplos: MC68000


OPERACIONES LÓGICAS
Mnemotécnico Sintaxis Tamaño Función XNZ VC
AND AND.t <dea>,Dn L,W,B (fuente)<AND>(destino)→destino –**00
AND.t Dn,<amea>
ANDI ANDI.t #<dato>,<adea> L,W,B dato<AND>(destino)→destino –**00
ANDI to CCR ANDI #<d8>,CCR B d8<AND>CCR →CCR *****
ANDI to SR* ANDI #<d16>,SR W IF S=1 d16 <AND>SR→SR *****
ELSE EXCEPCIÓN
EOR EOR.t Dn,<adea> L,W,B (fuente)<XOR>(destino)→destino –**00
EORI EORI.t #<dato>,<adea> L,W,B dato<XOR>(destino)→destino –**00
EORI to CCR EORI #<d8>,CCR B d8<XOR>CCR →CCR *****
EORI to SR* EORI #<d16>,SR W IF S=1 d16<XOR>SR→SR *****
ELSE EXCEPCIÓN
NOT NOT.t <adea> L,W,B <NOT>(destino)→destino –**00
OR OR.t <dea>,Dn L,W,B (fuente)<OR>(destino)→destino –**00
OR.t Dn,<amea>
ORI ORI.t #<dato>, <adea> L,W,B dato<OR>(destino)→destino –**00
ORI to CCR ORI #<d8>,CCR B d8<OR>CCR→CCR *****
ORI to SR* ORI #<d16>,SR W IF S=1 d16<OR>SR→SR *****
ELSE EXCEPCIÓN

DESPLAZAMIENTOS Y ROTACIONES
Mnemotécnico Sintaxis Tamaño Función XNZ VC
ASL/ASR ASL/ASR Dm,Dn L,W,B (destino) desplaz. aritmet. de *****
ASL/ASR #<d3>,Dn <num> bits→destino
ASL/ASR ASL/ASR<amea> W (contador (destino) desplaz. aritmet. de *****
desplaz.=1) 1 bit →destino
LSL/LSR Igual que ASL/ASR Idem (destino) desplaz. logico de ***0*
<num> (o 1)bits→destino
ROL/ROR Igual que ASL/ASR Idem (destino) rotado –**0*
<num> (o 1)bits→destino
ROXL/ROXR Igual que ASL/ASR Idem (destino) rotado (con exten.) ***0*
<num> (o 1)bits→destino

estructura de computadores

38
77

10. ejemplos: MC68000


MANIPULACIÓN DE BITS
Mnemotécnico Sintaxis Tamaño Función XNZ VC
BCHG BCHG Dm,Dn o L (bit mod 32) <NOT>(destino[bit])→flag Z; ––*––
BCHG #<d8>,Dn <NOT>(destino[bit])→destino[bit]
BCHG BCHG Dm, <amea> o B (bit mod 8) Igual ––*––
BCHG #<d8>,<amea>
BCLR Igual que BCHG <NOT>(destino[bit])→flag Z; ––*––
0→destino[bit]
BSET Igual que BCHG <NOT>(destino[bit])→flag Z; ––*––
1→destino[bit]
BTST BTST Dm,Dn o L (bit mod 32) <NOT>(destino[bit])→flag Z ––*––
BTST #<d8>,Dn
BTST BTST Dm,<mea> o B (bit mod 8) Igual ––*––
BTST #<d8>,<mea>

OPERACIONES DE CONTROL DE PROGRAMA


Mnemotécnico Sintaxis Tamaño Función XNZ VC
Bcc Bcc <etiqueta> Desplaz. 16 bits IF cc True PC+despl.→PC –––––
Bcc.S Bcc.S <etiqueta> Desplaz. 8 bits IF cc True PC+despl.→PC –––––
BRA BRA <etiqueta> Despl. 8 o 16 bits PC+desp.→PC –––––
BSR BSR <etiqueta> Despl. 8 o 16 bits PC→–(SP); PC+desp.→PC –––––
DBcc DBccDm, <etiqueta> Desplaz. 16 bits IF cc False –––––
Dm–1 → Dm
IF Dm ≠–1
PC+desp.→PC
ELSE PC+2→PC (instr. sig.)
JMP JMP <cea> No destino→PC –––––
JSR JSR <cea> No PC→–(SP); destino→PC –––––
Scc Scc <adea> B IF cc True $FF→destino –––––
ELSE $00 →destino
RTR RTR No (SP)+→CCR; (SP)+→PC *****
RTS RTS No (SP)+→PC –––––

estructura de computadores

78

10. ejemplos: MC68000


Condiciones soportadas por el MC68000 para instrucciones condicionales (Bcc, DBcc, Scc)

a) Aritmética con signo b) Aritmética sin signo

Condición Significado Cálculo Condición Significado Cálculo

GT "Greater than" - mayor que Z + (N xor V) = 0 HI "Higher" - mayor Z+C=0

LT "Less than" - menor que N xor V = 1 CS "Carry set" - menor C=1

GE "Greater or equal" - mayor o igual N xor V = 0 CC "Carry clear" - mayor o igual C=0
LE "Less or equal" - menor o igual Z + (N xor V) = 1
LS "Low or Same" - menor o igual Z+C=1
VS "Overflow" - desbordamiento V=1
c) Aritmética con signo o sin signo
VC "No overflow" - no desbordamiento V=0

PL "Plus" - más N=0 Condición Significado Cálculo

MI "Minus" - menos N=1 EQ "Equal" - igual Z=1

NE "No equal" - no igual Z=0

T "True" - siempre cierto 1

F "False" - siempre falso 0

estructura de computadores

39
79

10. ejemplos: MC68000


OPERACIONES EN BCD
Mnemotécnico Sintaxis Tamaño Función XNZVC
ABCD ABCD Dm,Dn B (fuente10)+(destino10)+X→ *U*U*
ABCD –(Am),–(An) destino10
NBCD NBCD<adea> B 0–(destino10)–X→destino10 *U*U*
SBCD SBCD Dm,Dn B (fuente10)–(destino10)–X→ *U*U*
SBCD –(Am),–(An) destino10

OPERACIONES DE CONTROL DEL SISTEMA


Mnemotécnico Sintaxis Tamaño Función XNZVC
RESET* RESET No IF S=1 activa RESET –––––
ELSE EXCEPCIÓN
RTE* RTE No IF S=1 (SP)+→SP;(SP)+→PC *****
ELSE EXCEPCIÓN
STOP* STOP #<d16> No IF S=1 d16→SR;PC+4→PC; *****
Pausa hasta excepcion
ELSE EXCEPCIÓN
CHK CHK <dea>,Dn W IF Dn<0 OR Dn>(fuente) – * UUU
EXCEPCIÓN
ILLEGAL ILLEGAL No PC→–(SSP);SR→–(SSP) –––––
Vector #4→PC
TRAP TRAP #<d4> No PC→–(SSP);SR→–(SSP) –––––
Vector #4→PC
TRAPV TRAPV No IF V=1 EXCEPCIÓN –––––
NOP NOP No PC+2→PC –––––

estructura de computadores

80

10. Ejemplos: arquitectura MIPS


Características generales
⌦ Procesador RISC de 32 bits
Repertorio ortogonal
Aprox. 100 instrucc. máquina + 30 instrucc. de aritmética en punto flotante
Cada instrucción soporta 1 único tamaño de operandos y 1 único modo de direccionamiento
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
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)
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)

estructura de computadores

40
81

10. Ejemplos: arquitectura MIPS

Tipos de datos
⌦ Enteros ⌦ Reales en punto flotante
Tamaño Byte (8 bits) Simple precisión (32 bits)
Tamaño Media palabra (16 bits) Doble precisión (64 bits)
Tamaño Palabra (32 bits)

Bit signo
Memoria (Ordenación Big-Endian)
Byte $0 (8 bits)
$0 0 7
Media palabra $0 Media palabra $2
Palabra
Media palabra $0 (16 bits)
$00000000 Byte $0 Byte $1 Byte $2 Byte $3
$0 0 15
$00000004 Byte $4 Byte $5 Byte $6 Byte $7
Palabra $0 (32 bits)
Media palabra $4 . Media palabra $6 $0 0 31
.
. Real Simple precisión $0 (32 bits)
. $0 0 31
.
Real Doble Precisión $0 (64 bits)
$FFFFFFFC $0 0
$4 63

estructura de computadores

82

10. Ejemplos: arquitectura MIPS


Modos de direccionamiento

⌦ Directo op rs rt rd
de registro
registro

⌦ Inmediato op rs rt Inmed.

⌦ Indirecto con op rs rt Inmed.


desplazamiento Memoria

registro +

⌦ Indirecto con
op rs rt Inmed.
desplazamiento Memoria
relativo a PC
PC +

estructura de computadores

41
83

10. Ejemplos: arquitectura MIPS


Formato de la instrucción máquina
⌦ Instrucción de tipo I Instrucciones de LOAD/STORE
6 5 5 16 Ej.: LW $1, 30($2) R1 ← Mem(30+(R2))
SF 60($5), $10 Mem(60+(R5)) ← (F10)
op rs1 rd Inmed. Instruc. con operando inmediato
Código Reg. Reg. Valor Ej.: ADDI $7, $9, 30 R7 ← (R9) + 30
Operac. fuente destino inmediato Instruc. de bifurcación condicional
Ej.: BNE $5, $6, 0x0C if (R5 ≠ R6) then PC ← PC+0x0C

⌦ Instrucción de tipo R Instruc. aritméticas, lógicas y desplazamiento de tipo de


6 5 5 5 5 6 registro-registro
Ej.: SUB $7, $4, $3 R7 ← (R4) - (R3)
op rs1 rs2 rd shift Func. Campo función: Especifica el tipo de operación a realizar
Suma, Resta, Mult. Div., And, Or, Desplaz., etc.
Código Reg. Reg. Reg. Desplaz. Función
Operac. Fnte. 1 Fnte. 2 Dest. SLL/SRL a realizar Campo Shift: Especifica la cantidad a desplazar en instrucc. de
desplazamiento (SLL, SLR, ..). Estas instrucciones no usan rs1
Ej.: SLL $1, $2, 8 R1 ← (R2) << 8

⌦ Instrucción de tipo J
6 26 Instrucciones de salto
op Dirección destino Ej.: J dir PC ← dir

Código Dirección destino


Operac. del salto

estructura de computadores

84

10. Ejemplos: arquitectura MIPS

Repertorio de instrucciones
Instrucción de movimiento de datos
Instrucción Significado Ejemplo Operación
LB Load byte LB $2, 40($3) 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 $2, 40($3) R2 [16-31] ← Mem(40+(R3))16; R1[0-15]←(signo(Mem(40+(R3))))16
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 de computadores

42
85

10. Ejemplos: arquitectura MIPS


Repertorio de instrucciones
Instrucción de aritmética entera, lógicas y desplazamiento
Instrucción Significado Ejemplo Operación
ADD/ADDU Suma con/sin signo ADD $1,$2,$3 R1 ← (R2) + (R3)
ADDI/ADDIU Suma inmediato con/sin signo ADDI $1,$2,5 R1 ← (R2) + 5
SUB/SUBU Resta con/sin signo SUB $1,$2,$3 R1 ← (R2) - (R3)
SUBI/SUBIU Resta inmediato con/sin signo SUBI $1,$2,5 R1 ← (R2) - 5
MULT/MULTU Multiplicación con/sin signo MULT $1,$2,$3 R1 ← (R2) * (R3)
DIV/DIVU División con/sin signo DIV $1,$2,$3 R1[0-15] ← Cociente ((R2) / (R3))
R1[16-31] ← Resto ((R2) mod (R3))
AND Y lógica AND $1,$2,$3 R1 ← (R2) AND (R3)
ANDI Y lógica con inmediato ANDI $1,$2,5 R1 ← (R2) AND 5
OR O lógica OR $1,$2,$3 R1 ← (R2) OR (R3)
ORI O lógica con inmediato ORI $1,$2,5 R1 ← (R2) OR 5
XOR O exclusiva XOR $1,$2,$3 R1 ← (R2) XOR (R3)
XORI O exclusiva con inmediato XORI $1,$2,5 R1 ← (R2) XOR 5
NOR NOR lógica NOR $1,$2,$3 R1 ← (R2) NOR (R3)
SLL/SRL Desplaz. lógico Izda./decha. constante SLL $1,$2,10 R1 ← (R2) << 10
SLLV/SRLV Desplaz. lógico Izda./decha. variable SLLV $1,$2,$3 R1 ← (R2) << (R3)
ROL Rotar a izquierda ROL $1,$2,$3 R1 ← (R2) rotado a izda. (R3) bits
ROR Rotar a derecha ROR $1,$2,$3 R1 ← (R2) rotado a decha. (R3) bits
SRA Desplaz. aritmético derecha constante SRAV $1,$2,10 R1 ← (R2) << 10 (mantiene signo)
SRAV Desplaz. aritmético derecha variable SRAV $1,$2,$3 R1 ← (R2) << (R3) (mantiene signo)
Scc/SccU * Set condicional con/sin signo SLT $1,$2,$3 if (R2)<(R3) then R1 ← 1, else R1 ← 0

(Siendo cc alguna de las condiciones siguientes: EQ (=); NE (<>); GE (>=); GT (>); LE (<=); LT (<))

estructura de computadores

86

10. Ejemplos: arquitectura MIPS


Repertorio de instrucciones
Instrucción de control de flujo
Instrucción Significado Ejemplo Operación
J Salto (jump) J dir PC ← dir
JR Salto con registro JR $2 PC ← (R2)
JAL Salto y link JAL dir R31 ← (PC) + 4; PC ← dir
BEQ Bifurcación condic. si igual BEQ $2,$4,desp if (R2) = (R4) then PC ← PC+desp+4
BNE Bifurcación condic. si distinto BNE $2, $4,desp if (R2) ≠ (R4) then PC ← PC+desp+4
Bcc/BccU Bifurcación condic. con/sin signo BGE $2, $4,desp if (R2) >= (R4) then PC ← PC+desp+4
(Siendo cc alguna de las condiciones siguientes: GE (>=); GT (>); LE (<=); LT (<))
BccZ Bifurcación condic. con cero BLTZ $2, desp if (R2) < 0 then PC ← PC+desp+4
(Siendo cc alguna de las condiciones siguientes: EQ (=); NE (<>); GE (>=); GT (>); LE (<=); LT (<))
TRAP Provoca una excepción
RFE Retorno de excepción

Instrucción de aritmética en punto flotante


Instrucción Significado
ADDF/ADDD Suma en punto flotante simple/doble precisión
SUBF/SUBD Resta en punto flotante simple/doble precisión
MULTF/MULTD Multiplicación en punto flotante simple/doble precisión
DIVF/DIVD División en punto flotante simple/doble precisión
CVTI2F/CVTI2D Convierte entero a real simple precisión / doble precisión
CVTF2I/CVTF2D Convierte real simple precisión a entero / real doble precisión
CVTD2I/CVTD2F Convierte real doble precisión a entero / real simple precisión

estructura de computadores

43

Vous aimerez peut-être aussi