1
1
Estructura de ComputadoresEstructura de Computadores
Módulo B. Arquitectura del procesador
Tema 2. Tema 2. Tipos de datos, formato de la instrucción máquina,Tipos de datos, formato de la instrucción máquina,modos de direccionamiento y repertorio de instruccionesmodos de direccionamiento y repertorio de instrucciones
2
estructura de computadoresestructura de computadores
ContenidosContenidos
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 computador4. Elementos importantes de la arquitectura5. 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.
2
3
estructura de computadoresestructura de computadores
En una palabra de memoria de 32 bits se puede codificara) Un número entero entre -(231-1) y +(231-1) codificado mediante magnitud y signo
b) 32 dígitos Booleanos o lógicos
c) Cuatro caracteres ASCII
d) Una instrucción máquina
⌦ El contenido de una palabra de memoria es una colección de 0’s y 1’s
⌦ Depende de cómo se interprete esa palabra, ésta puede representar:
DatosNuméricos
Enteros (Magnitud y signo, C’1, C’2, ...)Reales (Punto fijo, Punto flotante, ...)Decimales (BCD, Exceso-3, ...)
Booleanos o lógicosTRUE, FALSE
CaracteresLetras, dígitos decimales, signos puntuaciónRepresentación más común: ASCII
InstruccionesOPCODE + operandos
Contenidos de la memoriaContenidos de la memoria EJEMPLOEJEMPLO
b30b31 b0b1. . .
Bit de signob31 = 0 para nos positivosb31 = 1 para nos negativos
Magnitud = b30x230 + ··· + b1x21 + b0x20
8 bits 8 bits 8 bits 8 bits
CarácterASCII
CarácterASCII
CarácterASCII
CarácterASCII
8 bits 24 bits
Código deOperación
Información de Direccionamiento
b30b31 b0b1
bk = 0 ⇒ FALSEbk = 1 ⇒ TRUE 0 ≤ k ≤ 31
. . .
1. Tipos de datos1. Tipos de datos
4
estructura de computadoresestructura de computadores
⌦ 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ónEl 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 datosDispone de un conjunto de operaciones para manipular esa representación
Caracterización de los tipos de datosCaracterización de los tipos de datos
Tipos de datos
Numéricos
Lógicos CaracteresEnteros Reales Decimales
Representaciones:• Magnitud y signo• C’1• C’2• ...
Representaciones:• Punto fijo• Punto flotante• ...
Representaciones:• BDC• Exceso-3 • ...
Representaciones:• Compacto • No compacto
Representaciones:• ASCII• UNICODE• ...
1. Tipos de datos1. Tipos de datos
3
5
estructura de computadoresestructura de computadores
2. Representación de Números2. 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ónEs necesario adaptar las operaciones a los números binariosErrores 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
⌦ 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
Dígito más significativo Dígito menos significativo
6
estructura de computadoresestructura de computadores
⌦ 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)
2. Representación de Números2. Representación de Números
⌦ 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
4
7
estructura de computadoresestructura de computadores
Representación de datos numéricos decimalesRepresentación de datos numéricos decimales
⌦ Cada dígito decimal se codifica mediante un grupo de 4 bitsBCD: los dígitos decimales se codifican mediante su equivalente binarioExceso-3: los dígitos decimales se codifican sumando 3 a su equivalente binario
0000000100100011010001010110011110001001
BCD
0123456789
Exc.-3Decimal
0011010001010110011110001001101010111100
⌦ Decimal empaquetado2 dígitos decimales por byte
⌦ Decimal no empaquetado1 dígito decimal por byte
Dig. 1º Dig. 2º Dig. 3º Dig. 4º Dig. 5º Dig. 6º
Byte 1 Byte 2 Byte 3
X Dig. 1º X Dig. 2º X Dig. 3º
Byte 1 Byte 2 Byte 3
EmpaquetamientoEmpaquetamiento
2. Representación de Números2. Representación de Números
8
estructura de computadoresestructura de computadores
Representación de caracteresRepresentació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 Representación de información lógica o booleanabooleana⌦ Para representar información lógica se necesita un único bit
TRUE = 1FALSE = 0
⌦ Representación compacta8 dígitos booleanos por byteNecesidad instrucciones complejas para acceder al dato booleano
⌦ Representación no compacta 1 dígito booleano por byteInstrucciones de acceso sencillas pero se desperdician 7 bits
2. Representación de caracteres e información lógica.2. Representación de caracteres e información lógica.
5
9
estructura de computadoresestructura de computadores
⌦ Números Reales usando n bits:Enteros: El número de bits limita el rango, pero se representan exactamenteReales: 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 decimalEl punto decimal se coloca entre ambas partes en un lugar fijoEl rango representable es muy limitadoPuede utilizar aritmética entera
⌦ 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 SimpleUsa 32 bits para representar números realesMantisa representada con 24 bits en el convenio magnitud y signoExponente representado con 8 bits en el convenio magnitud y signo
SM MANTISA SE EXPONENTE1bit 23bits 1bit 7bits
Parte entera(21 bits)
Parte decimal(10 bits)
Signo(1 bit)
b31 ··· ···b30 b10 b9 b0N = ± (b30*220 + b29*219 + .... + b10*20 + b9*2-1 + ....+ b0*2-10 )
2. Representación de Números Reales2. Representación de Números Reales
10
estructura de computadoresestructura de computadores
Ejemplo: El Computador SimpleEn esta representación un número cualquiera es:
N = (-1) SM (0.1m22m21…m0) × 2(-1)se (E6…E0)
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
Precisión de la representación. La precisión mayor es 2-24 ~ 10-7 ⇒ 7 dígitos0.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
Dado que el número está normalizado podemos suponer que la mantisa es de la forma 0.1
Emayor=28-1-1=127Emenor=-127
20 21 22 23 24
223 números Mayor densidad de números entorno al 0
2. Representación de Números Reales2. Representación de Números Reales
6
11
estructura de computadoresestructura de computadores
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 ifDesarrollado en 1985 tras las primeras iniciativas de Intel 1976, fue implementado por primera vez en el Intel i486 en 1989
⌦ Formato
⌦ En esta representación un número cualquiera es:
N = (-1) SM (1.m22m21…m0) × 2(E7…E0)-127
Exponente(8 bits)
Mantisa(23 bits)
Signo(1 bit)
b31··· ···b30 b23 b22 b0
• Exponente representado en exceso a 127
e127=e+127 → e=e127-127
• El rango del exponente esemayor=255-127=128emenor=0-127=-127
2. Representación de Números Reales2. Representación de Números Reales
12
estructura de computadoresestructura de computadores
Estándar IEEE754 de precisión simple (32 bits)
⌦ 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
N = (-1) SM (1.m22m21…m0) × 2(E7…E0)-127-[-126,127]
N = (-1) SM (0.m22m21…m0) × 2-126
Formato Desnormalizado
≠0(00000000)127=-127±000..00 = 0(00000000)127=-127NaN (Ej: 0/0)≠0(11111111)127=128±∞ (Overflow)00..00 = 0(11111111)127=128NúmeroMantisaExponente
2-149 2-126 2128
Underflow Overflow
0
2. Representación de Números Reales2. Representación de Números Reales
7
13
estructura de computadoresestructura de computadores
Ejemplos:1. Obtener la representación decimal del número 0xBE600000 codificado en el
estándar IEEE754
0xBE600000 = 1011 1110 0110 0000 … 0000Signo = 1 = negativoExponente = 0111 1100 = 7C = 124 ⇒ (124)127 = 124 – 127 = -3Número = -1 1.11 × 2-3 = - (1 + 0.5 + 0.25) × 2-3 = -1.75 ×0.125 = -0.21875
Parte entera 23 = 10111Parte fraccionaria 0.875 = 0.111Número sin normalizar = 10111.111 ⇒ 1.0111111 × 24
Mantisa = 0111111Exponente = 4 ⇒ (4)127 = 4 + 127 = 131 = 1000 001123.875 =1 1000 0011 011111100000000000000000= 1100 0001 1011 1111 0000 0000 0000 0000 = 0xC1BF0000
2. Obtener la representación del número 23.875 en el formato IEEE754
2. Representación de Números Reales2. Representación de Números Reales
14
estructura de computadoresestructura de computadores
Error de Redondeo unitarioTruncamiento fl(X)=Xt : Descartar los bits de la mantisa que exceden la precisiónExceso 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
Error Absoluto: |Xt-X|Error Relativo: |Xt-X|/|X| = epsEn general Xr = X(1+eps)
Error por Desbordamiento: Debido al rango
Xt Xe Xt XeXX
2. Representación de Números Reales2. Representación de Números Reales
8
15
estructura de computadoresestructura de computadores
Acumulación de Errores de RedondeoOperaciónNormalizarRedondear
Ejemplo: Usando 5 dígitos (eps = 10-5 )X = 0,31426 103
y = 0,92577 105
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
x+y = 92,84126 103 → 0,9284126 105 → 0,92841 105
Error Relativo = 8,5 10-6
2. Representación de Números Reales2. Representación de Números Reales
16
estructura de computadoresestructura de computadores
⌦ 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 elementosConjunto de registros visibles al programadorConjunto de instrucciones máquina o ensambladorTipos básicos de datos soportados por las instrucciones máquinaModos de direccionamientoMecanismos de E/S
Arquitectura del repertorio de instruccionesArquitectura del repertorio de instrucciones
⌦ 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
Organización hardware del sistemaOrganización hardware del sistema
3. Estructura básica de un computador
9
17
estructura de computadoresestructura de computadores
MEMORIA E/S
Bus DatosBus Direcc.
Bus Control
CPU (Unidad Central de Proceso)Realiza la ejecución de las instrucciones
Unidad de MemoriaAlmacena las instrucciones y los datos
Unidad de E/STransfiere información entre el computadory los dispositivos periféricos
EsquemaEsquemaMódulos básicosMódulos básicos
Bus de datosPara transferencia de datos entre la CPU y memoria o E/S
Bus de direccionesPara especificar la dirección de memoria o la dirección del registro de E/S
Bus de controlSeñales de control de la transferencia (reloj, lectura/escritura, etc.)
Elementos de interconexión: BUSESElementos de interconexión: BUSES
Registros
Reg. Estado (SR)Cont. Prog. (PC)
R0
R7
•••
Unidad Aritmético
Lógica (ALU)
Unidad de Control (UC) CPU
Reg. Instr. (IR)Reg. Dir. Mem. (MAR)Reg. Dat. Mem. (MDR)
3. Estructura básica de un computador
18
estructura de computadoresestructura de computadores
⌦ 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
Características principales del modelo Características principales del modelo VonVon NeumannNeumann
3. Estructura básica de un computador
10
19
estructura de computadoresestructura de computadores
⌦ 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
Características principales del modelo Características principales del modelo VonVon NeumannNeumann
3. Estructura básica de un computador
20
estructura de computadoresestructura de computadores
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 RegistrosConjunto de registros visibles al usuario
Almacena los datos y los resultados con los que trabaja la ALU
⌦ Registros especialesContador de programa, registro de estado, dirección del dato en memoria, etc.
⌦ Buses internosCaminos 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 deLa complejidad de la unidad de proceso y del número y tipo de instrucciones a ejecutar
Elementos de la CPUElementos de la CPU
4. Elementos importantes de la arquitectura
11
21
estructura de computadoresestructura de computadores
Registros importantesRegistros importantes⌦ Contador de programa (PC, “Program Counter”)
Almacena la dirección de la siguiente instrucción a ejecutarCada 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 temporalmenteTambién pueden usarse para direccionamiento y manipulación de direcciones
⌦ Registros de direcciones (Ai)Se utilizan para para direccionamiento y manipulación de direccionesNo siempre se distinguen de los registros de datos
4. Elementos importantes de la arquitectura
Códigos de condición del registro de estadoCódigos de condición del registro de estadoBits de estado SignificadoZ (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)
22
estructura de computadoresestructura de computadores
Pila del sistemaPila 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 pilaFunciona 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 pilaSe 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 pilaPOP: para eliminar un elemento de la cabecera de la pila
4. Elementos importantes de la arquitectura
12
23
estructura de computadoresestructura de computadores
⌦Los datos e instrucciones que manipula un programa se almacenan en la memoriaTemporalmente 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 memoriaEventualmente pueden solicitarse datos a los dispositivos de E/S
⌦Organización de la memoria en palabrasLa memoria se organiza en grupos de n bits llamados palabras de memoria
Los computadores actuales utilizan anchos de palabra entre 16 y 64 bitsCada 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-1Esas 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
Organización de la memoria (*)Organización de la memoria (*)
⌦ Computador de 32 bits con 16 Mbytes de memoria
EJEMPLOEJEMPLO
(*) Desde el punto de vista del programador
n bits
Dire
cció
n
01
i
2k-1
Palabra 0Palabra 1
Palabra i
Palabra 2k-1
MEMORIA
5. 5. Organización de la Memoria
Ancho de palabra: 32 bits (4 bytes)Nº de palabras en memoria: 4 M palabras (222)Espacio de direcciones: 222 palabras Nº de bits de dirección necesarios: 22
24
estructura de computadoresestructura de computadores
⌦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 únicaEs 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 direccionablesOrdenamiento: cómo repartir el contenido de una palabra en un conjunto consecutivo de unidades direccionables
palabrasalineadas
palabrasno alineadas
Dirección del byteDirección del byte
⌦ Palabras no alineadas: permitir que una palabra tenga cualquier dirección
El interfaz de memoria debe secuenciar los accesos (ya que podrán requerirse varios para obtener la información)
⌦ 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 direcciones múltiplos de 4...Se desperdicia memoria
Alternativas de alineamientoAlternativas de alineamiento0 1 2 3
4 5 6 7
2k-4 2k-3 2k-2 2k-1
8 9 10 11
12 13 14 15
...
0 1 2 3
4 5 6 7
2k-4 2k-3 2k-2 2k-1
8 9 10 11
12 13 14 15
...
5. 5. Organización de la Memoria
13
25
estructura de computadoresestructura de computadores
⌦ Big-Endian: los bytes dentro de una palabra se ordenan comenzando por el de menor direcciónLa 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ónLa dirección de la palabra coincide con la dirección del último byte
Alternativas de ordenamientoAlternativas de ordenamiento
Little-Endian
Palabra 0
Palabra 2k-4
Palabra 4
Dirección del byte
3 2 1 0
7 6 5 4
2k-1 2k-2 2k-3 2k-4
Big-Endian
Palabra 0
Palabra 2k-4
Palabra 4
Dirección del byte
0 1 2 3
4 5 6 7
2k-4 2k-3 2k-2 2k-1
⌦ Big-Endian: el byte más significativo del dato (AA) se almacena en la dirección de byte con valor numérico más bajo (184)
⌦ Little-Endian: el byte más significativo del dato (AA) se almacena en la dirección de byte con valor numérico más alto (187)
EjemploEjemplo
184 AA185 BB186 CC187 DD
184 DD185 CC186 BB187 AA
⌦ Queremos almacenar el número hexadecimal $AABBCCDD (4 bytes) en la palabra de memoria 184:
Big-Endian Little-Endian184 185 186 187 187 186 185 184
184: AA BB CC DD 184: AA BB CC DD
Visto de otro modo:
5. 5. Organización de la Memoria
26
estructura de computadoresestructura de computadores
⌦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
a. Definicióna. Definición
⌦ Inmediato⌦ Directo a registro⌦ Directo a memoria (absoluto)⌦ Indirecto con registro⌦ Indirecto con memoria⌦ Indirecto con pila⌦ Indirecto con desplazamiento
Modos de direccionamiento básicosModos de direccionamiento básicosRi Registro nº i de la CPU(Ri) Contenido del registro Ri(X) Contenido de la posición de memoria con
dirección XEA Dirección efectiva de un operandoSP Puntero de pila (Stack Pointer)
NotaciónNotación
6. Modos de Direccionamiento6. Modos de Direccionamiento
14
27
estructura de computadoresestructura de computadores
⌦ El operando está contenido en un campo de la propia instrucción máquina⌦ Sintaxis: opcode #A
b. Modo de Direccionamiento Inmediatob. Modo de Direccionamiento Inmediato
operando = A
Instrucción:
opcode AA
⌦ 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
6. Modos de Direccionamiento6. Modos de Direccionamiento
28
estructura de computadoresestructura de computadores
⌦ El operando está contenido en un registro de la CPU⌦ Sintaxis: opcode Ri
c. Modo de Direccionamiento Directo a Registroc. Modo de Direccionamiento Directo a Registro
opcode RiRiRegistros
R0
operandoRi
Rn
……
operando = (Ri)
Instrucción:
⌦ 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
6. Modos de Direccionamiento6. Modos de Direccionamiento
15
29
estructura de computadoresestructura de computadores
⌦ La dirección efectiva del operando está especificada en la instrucción⌦ Sintaxis: opcode A
d. Modo de Direccionamiento Directo a Memoria (Absoluto)d. Modo de Direccionamiento Directo a Memoria (Absoluto)
opcode AAMemoria
0
operandoA
2k-1
……
EA = A
Instrucción:
⌦ Ventaja: Sólo requiere de un acceso a memoria.⌦ Desventaja: Zona direccionable limitada.
6. Modos de Direccionamiento6. Modos de Direccionamiento
30
estructura de computadoresestructura de computadores
⌦ La dirección efectiva del operando está almacenada en el registro especificado en la instrucción
⌦ Sintaxis: opcode (Ri)
e. Modo de Direccionamiento Indirecto con Registroe. Modo de Direccionamiento Indirecto con Registro
opcode RiRi Memoria0
operando(Ri)
2k-1
……
EA = (Ri)
Instrucción:
RegistrosR0
Dirección operandoRi
Rn
……
⌦ Ventaja: Mayor zona referenciable.⌦ Desventaja: Requiere acceder a un registro y memoria
6. Modos de Direccionamiento6. Modos de Direccionamiento
16
31
estructura de computadoresestructura de computadores
⌦ La dirección efectiva del operando está almacenada en la dirección de memoria especificada en la instrucción
⌦ Sintaxis: opcode (A)
EA = (A)
Instrucción:
⌦ Implementación de paso por referencia de parámetros a subrutinas (punteros)⌦ Ventaja: Mayor zona referenciable.⌦ Desventaja: Requiere dos accesos a memoria
f. Modo de Direccionamiento Indirecto con Memoriaf. Modo de Direccionamiento Indirecto con Memoria
opcode AA
Memoria0
operando(A)
2k-1
……
Dirección operandoA
…
6. Modos de Direccionamiento6. Modos de Direccionamiento
32
estructura de computadoresestructura de computadores
⌦ El operando está almacenado en la cabecera de la pila del computador⌦ Sintaxis: opcode (SP)
h. Modo de Direccionamiento de Pilah. Modo de Direccionamiento de Pila
opcodePila (en memoria)
operandoSP
…
EA = (SP)
Instrucción:
⌦ Soporte para la implementación de subrutinas.⌦ Ventaja: No es necesario especificar el operando en la instrucción
registro de pila
6. Modos de Direccionamiento6. Modos de Direccionamiento
17
33
estructura de computadoresestructura de computadores
⌦ La dirección del operando es de la forma: EA = base + desplazamiento.
i. Indirectos con desplazamientoi. Indirectos con desplazamiento
⌦ La dirección efectiva del operando se calcula sumando el campo desplaza-miento al contenido del registro especificado
⌦ Sintaxis: opcode desp(Ri)
Modo de Direccionamiento Indirecto con Registro BaseModo de Direccionamiento Indirecto con Registro Base
opcode RiRi despdesp
RegistrosR0
Dirección baseRi
Rn
……
Memoria0
operando(Ri)+desp
2k-1
……
+
EA = (Ri)+desp
Instrucción:
6. Modos de Direccionamiento6. Modos de Direccionamiento
34
estructura de computadoresestructura de computadores
⌦ Es un direccionamiento registro-base que utiliza implícitamente el contador de programa
⌦ Sintaxis: opcode desp(PC)
j. Modo de Direccionamiento Indirecto Relativo al Contador de Prj. Modo de Direccionamiento Indirecto Relativo al Contador de Programaograma
opcode despdesp
ContadorContador de de ProgramaPrograma+
Memoria0
operando(PC)+desp
2k-1
……
EA = (PC)+desp
Instrucción:
⌦ La dirección efectiva es un desplazamiento a la dirección de la instrucción (implementación de bucles y bifurcaciones)
6. Modos de Direccionamiento6. Modos de Direccionamiento
18
35
estructura de computadoresestructura de computadores
⌦ 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)
k. Modo de Direccionamiento Indirecto con Registro Base y Registk. Modo de Direccionamiento Indirecto con Registro Base y Registro Índicero Índice
opcode RiRi RjRj despdesp
Registros
Ri Dirección base
Rj
Rn
……
Índice
R0
+
Memoria0
operando
2k-1
……
Instrucción:
EA = (Ri) +(Rj)+desp
6. Modos de Direccionamiento6. Modos de Direccionamiento
36
estructura de computadoresestructura de computadores
Otros modos de direccionamientoOtros modos de direccionamiento
EA = (Rj)+(Ri) ×S+despOpcode desp(Rj,Ri×S)Registro-base indexado y escalado con despl.
EA = (Ri) ×S+despOpcode desp(Ri×S)Registro-base escalado
EA = (Ri) ×SOpcode (Ri×S)Indirecto con registroescalado
Ri ← (Ri) – 1EA = (Ri)
Opcode -(Ri)Indirecto con registropredecrementado
Ri ← (Ri) + 1EA = (Ri)
Opcode +(Ri)Indirecto con registropreincrementado
EA = (Ri)Ri ← (Ri) –1
Opcode (Ri)-Indirecto con registropostdecrementado
EA = (Ri)Ri ← (Ri) + 1
Opcode (Ri)+Indirecto con registropostincrementado
Dir. EfectivaSintáxisModo
AlinimientoS=1,2,4,8
6. Modos de Direccionamiento6. Modos de Direccionamiento
19
37
estructura de computadoresestructura de computadores
l. Algunas Aplicaciones de los Modos de Direccionamientol. Algunas Aplicaciones de los Modos de DireccionamientoAcceso a variables del tipo array
A[0]A[1]
A[i]
A[n-1]
⌦ 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
Ínidice +
⌦Si los elementos ocupan más de una palabra, usar direccionamientos escalados
6. Modos de Direccionamiento6. Modos de Direccionamiento
38
estructura de computadoresestructura de computadores
l. Algunas Aplicaciones de los Modos de Direccionamientol. Algunas Aplicaciones de los Modos de DireccionamientoAcceso a variables del tipo estructura o registro
campo1
campo2
struct var {
long int campo1;
int campo2;
}
struct var {
long int campo1;
int campo2;
}
Memoria
Dirección Base
Desplazamiento +
⌦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
6. Modos de Direccionamiento6. Modos de Direccionamiento
20
39
estructura de computadoresestructura de computadores
l. Algunas Aplicaciones de los Modos de Direccionamientol. Algunas Aplicaciones de los Modos de Direccionamiento
Operaciones de Pila
914
•••
•••
•••
320
MEMORIA
PILA
0
2k-1
SP(Puntero de pila)
Situación inicial
⌦Las operaciones básicas sobre una pila (PUSH y POP) pueden realizarse utilizando los modos de direccionamiento autoindexados. (La pila crece hacia posiciones inferiores)
914
••
•••
•••
320
MEMORIA
PILA
0
2k-1
SP 12
12R1
Operación PUSHPUSH R1 ↔ MOVE R1, -(SP)
Operación POP
4
••••
•••
•••
320
MEMORIA
PILA
0
2k-1
SP
91R1
POP R1 ↔ MOVE (SP)+,R1
6. Modos de Direccionamiento6. Modos de Direccionamiento
40
estructura de computadoresestructura de computadores
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:Instrucciones:a) CLR.L -(A1)
b) CLR.W D2
c) MOVE.W $1204,D1
d) MOVE.W #$1204,D1
e) MOVE.B (A2)+,$1200
f) MOVE.L D1,-(A2)
g) MOVE.L (A1)+,D2
Condiciones iniciales:REGISTROS MEMORIAA1:00001202 001200:1111A2:00001204 001202:2222D1:01020304 001204:3333D2:F0F1F2F3 001206:4444
001208:555500120A:6666
Condiciones iniciales:Condiciones iniciales:REGISTROS MEMORIAA1:00001202 001200:1111A2:00001204 001202:2222D1:01020304 001204:3333D2:F0F1F2F3 001206:4444
001208:555500120A:6666
EjemploEjemplo
6. Modos de Direccionamiento6. Modos de Direccionamiento
21
41
estructura de computadoresestructura de computadores
Clasificación de las instruccionesClasificació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 instruccionesTransformación de datosManipulación de direcciones Creación de marcos de almacenamiento localControl del sistemaE/S
7. Instrucciones máquina
42
estructura de computadoresestructura de computadores
Trasferencia de datosTrasferencia de datos⌦ Permiten el movimiento entre distintos dispositivos de almacenamiento del computador:
Reg → RegReg → MemReg → Pila
⌦ Necesario especificar:Tipo de movimientoDirección de operandos fuente y destinoTamaño de datos a mover (byte, palabra, doble palabra, ...)Nº de elementos a mover (para movimientos múltiples)
Mem → RegMem → MemMem → Pila
Pila → RegPila → Mem
Instrucción OperaciónMOVE fnte,dest dest ← fnteLOAD Ri, dir Ri ← (dir)STORE dir, Ri dir ← (Ri)PUSH fnte Pila ← fntePOP dest dest ← PilaMOVEM fnte, dest, n fnte0 ← dest0 ...
fnten-1 ← destn-1
7. Instrucciones máquina
22
43
estructura de computadoresestructura de computadores
Instrucciones AritméticasInstrucciones 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ónADD fnt1,fnt2,dest dest ← fnt1+fnt2 Suma dos operandosSUB fnt,dest dest ← dest-fnt Resta dos operandosMULT fnt,dest dest ← dest⋅fnt Multiplica dos operandosDIV fnt1,fnt2,dest dest ← fnt1 ÷fnt2 Divide dos operandosNEG fnt,dest dest ← - fnt Cambia de signo al operandoABS fnt,dest dest ← Abs(fnt) Obtiene el valor absoluto del operandoINC fnt,dest dest ← fnt+1 Suma 1 al operandoDEC fnt,dest dest ← fnt-1 Resta 1 al operandoCOMP fnt1,fnt2 fnt1-fnt2 Compara dos operandos y fija los bits
Activa Estado de estado según el resultado
7. Instrucciones máquina
44
estructura de computadoresestructura de computadores
Instrucciones Lógicas y de Manipulación de bitsInstrucciones 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ónAND 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
7. Instrucciones máquina
23
45
estructura de computadoresestructura de computadores
Instrucciones de Desplazamiento y RotaciónInstrucciones 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 operandoNº de bits a desplazar o rotar
Instrucción Operación Descripción
LSL fnt,n Desplaz. lógico izda. n bits (Logic Shift Left)
LSR fnt,n Desplaz. lógico decha. n bits (Logic Shift Right)
ASL fnt,n 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)
0
0
0
7. Instrucciones máquina
46
estructura de computadoresestructura de computadores
Instrucciones de Control de flujoInstrucciones 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ónJMP 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
7. Instrucciones máquina
24
47
estructura de computadoresestructura de computadores
Instrucciones de Control de flujoInstrucciones 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 siEQ Igual (Equal) En una comparación previa los operandos son igualesNEQ No igual (No equal) En una comparación previa los operandos son distintosGT Mayor que (Greater Than) En una comparación previa el primer operando es mayor que el segundoGE Mayor o igual (Gr. or Eq.) En una comparación previa el primer operando es mayor o igual que el segundoLT Menor que (Less Than) En una comparación previa el primer operando es menor que el segundoLE Menor o igual (Les.or Eq.) En una comparación previa el primer operando es menor o igual que el segundoZ Cero (Zero) El resultado de una operación anterior es ceroNZ No cero (No Zero) El resultado de una operación anterior es distinto de cero
7. Instrucciones máquina
48
estructura de computadoresestructura de computadores
if (A>B) {S1
}else {
S2}
CMP A,BBGT L1S2....JMP FIN
L1 S1....
FIN ....
CMP A,BBGT L1S2....JMP FIN
L1 S1....
FIN ....
Ejemplo: estructuras de decisión iterativas simplesEjemplo: estructuras de decisión iterativas simples
A>B
S1 S2
FIN
cierto falso
i<=fin
S1i=i+1 FIN
cierto falso
i=inifor(i=ini;i<fin;i++){
S1}
MOVE ini, D0MOVE fin, D1
FOR CMP D1,D0BGT FINS1ADD #1,D0BRA FOR
FIN ....
MOVE ini, D0MOVE fin, D1
FOR CMP D1,D0BGT FINS1ADD #1,D0BRA FOR
FIN ....
7. Instrucciones máquina
25
49
estructura de computadoresestructura de computadores
Instrucción Operación DescripciónJSR 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 yestado
Instrucciones de Control de flujoInstrucciones 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.
7. Instrucciones máquina
50
estructura de computadoresestructura de computadores
Llamadas a procedimientosLlamadas a procedimientos
$4000 inicio MOVE #$0,D0....
$4500 JSR sub1$4501 MOVE D0,$3000
....$4600 fin HALT$4601 sub1 ADD #$3,D0
...$4630 JSR sub2$4631 ADD D0,D1$4650 RTS$4651 sub2 CMP D0,D3
...$4700 RTS
$4000 inicio MOVE #$0,D0....
$4500 JSR sub1$4501 MOVE D0,$3000
....$4600 fin HALT$4601 sub1 ADD #$3,D0
...$4630 JSR sub2$4631 ADD D0,D1$4650 RTS$4651 sub2 CMP D0,D3
...$4700 RTS
$4501
SP
PC $4601
4501SP
PC
$4651
4501SP
PC
4631
$4631
4501SP
PC
$4501
SP
PC
7. Instrucciones máquina
26
51
estructura de computadoresestructura de computadores
Llamadas a procedimientos (Paso de Parámetros)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.
Param 0
Param n
Param0
Param n
dir
Param0
Param n
dir
Contexto
Paso de Parámetros(PUSH)
JSR
Liberación de Parámetros
Guardar Contexto
Restaurar Contexto
RTS
1
2
3
1 2 3
5 46
4
56
7. Instrucciones máquina
52
estructura de computadoresestructura de computadores
Otras instruccionesOtras instruccionesGestió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)
Parámetros
Dirección Retorno
FP (sub. Origen)
Variables Locales
Contexto
Puntero de Marco de Activación
FP
SP
LINK FP,#tam (SP ← FP, FP ← SP, SP ← SP+tam)UNLK FP (SP ← FP, FP ← Pila)
Marco de Activación
Paso de Parámetros(PUSH)
JSR
Liberación de Parámetros
LINK FP,#tam
Guardar Contexto
Restaurar Contexto
UNLK FP
RTS
7. Instrucciones máquina
27
53
estructura de computadoresestructura de computadores
Otras instruccionesOtras instrucciones⌦ En este grupo están englobadas distintas instrucciones
Transformación de datosCambian el formato de los datos, por ej. de decimal a binario
Manipulación de direccionesPermiten 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 sistemaSuelen 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/SPara 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 )
7. Instrucciones máquina
54
estructura de computadoresestructura de computadores
⌦ 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)
IntroducciónIntroducción
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
AbsolutoDirecto
enteroflotante
ADD MUL MOVE
MUL, enteros, dir. absoluto⌦Ortogonalidad: “El repertorio de instrucciones de un computador es ortogonal si puede combinar los factores anteriores sin restricción”
28
55
estructura de computadoresestructura de computadores
⌦ Código de operación (opcode)⌦ Operandos fuente
Número de operandosDireccionamiento
⌦ Operando destinoDireccionamiento
⌦ Instrucción siguienteRuptura del secuencimiento implícito de instrucciones
Elementos constitutivos de una instrucción máquinaElementos constitutivos de una instrucción máquina
opcode op. fuente 1 op. fuente n op. destino instruc. siguiente· · · ·
Instrucción máquina:
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
56
estructura de computadoresestructura de computadores
⌦ 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
Alternativas de diseño del formato de instrucciónAlternativas de diseño del formato de instrucción
Un buen diseño del repertorio de instrucciones, uniforme y regular simplifica la lógica del procesador
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
29
57
estructura de computadoresestructura de computadores
⌦ Una operación típica de un computador (p. ej. A = B + C) suele tener tres operandosDos operandos fuente (B y C) y un operando destino (A)
⌦ Las principales alternativas que se presentan son:Instrucciones con tres operandos explícitosInstrucciones con dos operandos explícitosInstrucciones con un único operando explícitoInstrucciones sin operandos explícitos
Número de operandos explícitos en una instrucciónNúmero de operandos explícitos en una instrucción
⌦ Se especifican los tres operandos en la instrucción máquina⌦ Formato flexible, pero ocupa mucho espacio
Instrucciones con tres operandos explícitosInstrucciones con tres operandos explícitos EjemploEjemplo
ADD A, B, C A ← B + C
⌦ Dos operandos explícitos y uno implícito, uno de los operandos actúa como fuente y destino
⌦ Es menos flexible, pero ocupa menos espacio
Instrucciones con dos operandos explícitosInstrucciones con dos operandos explícitos EjemploEjemplo
ADD B, C B ← B + C
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
58
estructura de computadoresestructura de computadores
⌦ 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
⌦ Formato muy reducido, pero poco flexible
Instrucciones con un único operando explícitoInstrucciones con un único operando explícito EjemploEjemplo
ADD B Ac. ← B + Ac.
⌦ Tanto los operandos como el resultado se almacenan en la pila del sistema
⌦ Ocupa muy poco espacio⌦ Requiere varias instrucciones de acceso a la pila
Instrucciones sin operandos explícitosInstrucciones sin operandos explícitos EjemploEjemplo
ADD (SP) ← (SP) + (SP-1)
SP BC
Pila (antes)
SP B+C
Pila (después)
Número de operandos explícitos en una instrucción (Número de operandos explícitos en una instrucción (cont.cont.))
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
30
59
estructura de computadoresestructura de computadores
Número de operandos explícitos en una instrucción: EJEMPLONú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
SUB Y, A, B (Y ← A-B)MULT T, D, E (T ← D*E)ADD T, T, C (T ← T+C)DIV Y, Y, T (Y ← Y/T)
3 operandos3 operandos
MOVE Y, A (Y ← A)SUB Y, B (Y ← Y-B)MOVE T, D (T ← D)MULT T, E (T ← T*E)ADD T, C (T ← T+C)DIV Y, T (Y ← Y/T)
2 operandos2 operandos
LOAD D (Ac ← D)MULT E (Ac ← Ac*E)ADD C (Ac ← Ac+C)STORE Y (Y ← Ac)LOAD A (Ac ← A)SUB B (Ac ← Ac-B)DIV Y (Ac ← Ac/Y)STORE Y (Y ← Ac)
1 operando1 operandoPUSH EPUSH DMULTPUSH CADD PUSH BPUSH ASUBDIVPOP Y
0 operandos0 operandos
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
60
estructura de computadoresestructura de computadores
Ejemplo de diseño del formato de la instrucción máquinaEjemplo 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 registroDos operandos que permiten direccionamiento absoluto e indirecto de memoria
190 instrucciones de 2 operandosDos operandos que permiten direccionamiento directo e indirecto de registro
32 instrucciones de 0 operandos
8. Diseño del repertorio de instrucciones8. Diseño del repertorio de instrucciones
31
61
estructura de computadoresestructura de computadores
Arquitecturas CISC (Computador de conjunto de instrucciones compArquitecturas CISC (Computador de conjunto de instrucciones complejo)lejo)
⌦ 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
9. Arquitecturas CISC y RISC9. Arquitecturas CISC y RISC
62
estructura de computadoresestructura de computadores
Problemas de las arquitecturas CISCProblemas 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 eficientesAl 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 memoriaAl 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
9. Arquitecturas CISC y RISC9. Arquitecturas CISC y RISC
32
63
estructura de computadoresestructura de computadores
Características de las arquitecturas RISCCaracterísticas de las arquitecturas RISC⌦ Repertorio de instrucciones simple y ortogonal
Sólo se dispone de instrucciones máquina básicasRepertorio ortogonal: no existen varias instrucciones distintas para realizar la misma operación
⌦ Modos de direccionamiento sencillosCada operando sólo soporta unos pocos modos de direccionamiento simples
⌦ Formatos de instrucción uniformesNúmero reducido de formatos de instrucciones distintosTodas las instrucciones de longitud similar
⌦ Tipos de datos simplesLas instrucciones sólo soportan unos pocos tipos de datos básicos distintos
⌦ Arquitectura de tipo registro-registroSólo las instrucciones LOAD (Mem → Reg) y STORE (Reg → Mem) hacen referencia a memoriaEl resto de instrucciones (aritméticas, lógicas, etc.) son de tipo registro-registro,
Tanto los operandos fuente como destino son registros de la arquitecturaLas arquitecturas RISC suelen caracterizarse por disponer de un gran número de registros de propósito general
9. Arquitecturas CISC y RISC9. Arquitecturas CISC y RISC
64
estructura de computadoresestructura de computadores
Ventajas de las arquitecturas RISCVentajas de las arquitecturas RISC⌦ El hardware de la arquitectura es mucho más simple
Es más rápido y puede trabajar a mayor velocidadSu diseño es más sencillo y barato
⌦ Instrucciones más cortasTardan menos tiempo en leerse de memoria
⌦ Mayor simplicidad para generar código máquinaLos compiladores son más eficientes y más sencillos de diseñar
Desventajas de las arquitecturas RISCDesventajas 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 nivelMayor número de instrucciones ↔ Instrucciones más rápidas
⌦ Más difícil mantener la compatibilidad entre computadores de la misma familiaPara diseñar un repertorio simple no se pueden “heredar” todas las instrucciones
9. Arquitecturas CISC y RISC9. Arquitecturas CISC y RISC
33
65
estructura de computadoresestructura de computadores
Computadores CISCComputadores 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 RISCComputadores 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
9. Arquitecturas CISC y RISC9. Arquitecturas CISC y RISC
66
estructura de computadoresestructura de computadores
Características del MC68000Características del MC68000⌦ Procesador CISC de 16 bits
Aprox. 100 instrucciones máquinaCada instrucción soporta varios tamaños distintos y varios modos de direccionamientoEl número de combinaciones posibles es muy elevado
12 modos de direccionamiento9 formatos de instrucción distintos y con tamaños de una a cinco palabrasAncho del bus de datos: 16 bitsTamaño mínimo direccionable: 1 byteAncho del bus de direcciones: 24 bits (224 bytes = 16 Mbytes de memoria direccionables)
⌦ Modos de funcionamientoModo usuario
Modo normal de ejecución de programasNo tiene acceso a determinadas instrucciones privilegiadas No tiene acceso a determinados registros del supervisor
Modo supervisorModo de ejecución del Sistema Operativo y durante el tratamiento de interrupcionesTiene acceso a todas las instrucciones privilegiadas y a registros del supervisor
10. ejemplos: MC6800010. ejemplos: MC68000
34
67
estructura de computadoresestructura de computadores
Tipos de datos y organización de la memoria Tipos de datos y organización de la memoria
$000000$000002
$FFFFFE
.
.
.
.
.
Memoria (Ordenación Big-Endian)Palabra
Byte $000000 Byte $000001
Byte $000002 Byte $000003
Byte $FFFFFE Byte $FFFFFF
⌦ 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)
Palabra 0 (16 bits)
Doble Palabra 0 (32 bits)
BCD 0 (2 dígitos)
07
15 0
310
1 0
$000000
$000000
$000000
$000000
10. ejemplos: MC6800010. ejemplos: MC68000
68
estructura de computadoresestructura de computadores
Registros de la arquitecturaRegistros de la arquitectura
31 0
OchoRegistrosde Datos
SieteRegistrosde Direcciones
Puntero de Pila
Contadorde Programa
A7(USP)
PC
de Usuario
D0D1D2D3D4D5D6D7
A0A1A2A3A4A5A6
31 016 15 8 7
31 016 15
Puntero de Pila
Registro de Estado(CCR = Reg. de códigos de condición)
A7'(SSP) de Supervisor
SR0715 8
CCR
31 0
⌦ Registros de datos (D0-D7)Para operaciones con datosTamaños: .b, .w, .l
⌦ Registros de direcciones (A0-A6)Para operaciones con direccionesTamaños: .w, .l
⌦ 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 supervisorParte menos significativa: códigos de condición (CCR)
⌦ Contador de programa (CP)Apunta a la siguiente instrucción a ejecutar
10. ejemplos: MC6800010. ejemplos: MC68000
35
69
estructura de computadoresestructura de computadores
Registro de estado (SR)Registro de estado (SR)
15 13 10 8 4 0T S I I I2 1 0 X N Z V C
Byte del Supervisor Byte del Usuario (CCR)
Modo Traza
EstadoSupervisor
MáscaraInterrupciones
ExtensiónNegativoCeroOverflowCarry
Códigos deCondición
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
Códigos de condiciónCódigos de condición
10. ejemplos: MC6800010. ejemplos: MC68000
70
estructura de computadoresestructura de computadores
Modo de direccionamiento Cálculo de EA SintaxisDireccionamiento directo de registroDirecto de registro de datosDirecto de registro de direcciones
Operando = (Dn)Operando = (An)
DnAn
Direccionamiento indirecto de registroIndirecto de registroIndirecto de registro con postincremento (*)Indirecto de registro con predecremento (*)Indirecto de registro con desplazamientoIndirecto de registro indexado con desplazamiento
EA = (An)EA = (An); (An) + N → An(An) - N → An; EA = (An)EA = (An) + d16EA = (An) + (Ri) + d8
(An)(An)+-(An)d16(An)d8(An,Ri.W ó .L)
Direccionamiento absolutoAbsoluto cortoAbsoluto largo
EA = XXXXEA = XXXXXX
XXXXXXXXXX
Direccionamiento relativo al contador de programaRelativo al PC con desplazamientoRelativo al PC indexado con desplazamiento
EA = (PC) + d16EA = (PC) + (Ri) + d8
d16(PC)d8(PC,Ri.W ó .L)
Direccionamiento inmediato Operando = XXXXXXXX #XXXXXXXX
Modos de direccionamientoModos de direccionamiento
NOTASEA = Dirección Efectiva Ri = Registro índice (de datos o direcc.)Dn = Registro de datos d8 = Desplazamiento de 8 bitsAn = Registro de direcciones d16= Desplazamiento de 16 bitsN = 1 si .B, 2 si .W, 4 si .L PC = Contador de Programa
10. ejemplos: MC6800010. ejemplos: MC68000
36
71
estructura de computadoresestructura de computadores
Formato de las instruccionesFormato de las instrucciones
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)
⌦ CaracterísticasInstrucciones de 0, 1 y 2 operandos9 formatos distintosLongitud entre 1 y 5 palabras
⌦ Contenidos de una instrucción máquinaPalabra operación (OW, siempre presente)
Primera palabra de la instrucciónCódigo de operaciónModos de direccionamiento y tamaño de los operandos
Palabras de extensión (EW, de 0 a 4)Información adicional de los operandos
Valor inmediatoDesplazamientoAbsoluto
⌦ Codificación modos de direccionamientoDos campos: Modo y Registro (6 bits)
Formato genérico de la instrucción máquina
Instrucciones de 0 operandosSintáxis: OP
Instrucciones de 1 operandoSintáxis: OP destinoOperación: destino ← OP (destino)
Instrucciones de 2 operandoSintáxis: OP fuente, destinoOperación: destino ← (fuente) OP (destino)
10. ejemplos: MC6800010. ejemplos: MC68000
72
estructura de computadoresestructura de computadores
Formato de las instrucciones (Formato de las instrucciones (cont.cont.))
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_opOW:
Instrucciones sin operandos (1 formato)
Ejemplos: RTSNOP
Campotamaño Tamañooperando00 byte (.B)01 palabra (.W)10 doblepalabra(.L)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op tamaño EA destino
modo registro (a)OW:
(b)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
codigo_op registroOW:
Instrucciones con un operando (2 formatos)
Ejemplos: CLR.L D0NEG.B (A3)
Ejemplos: SWAP D1
EACodificación de los modos dedireccionamiento
modo Registro
Directo de reg. de datosDirecto de reg. de direcciones
000001
Nº de reg. (Dn)Nº de reg. (An)
Indirecto de reg.Indirecto de reg. con postincremt.Indirecto de reg. con predecrem.Indirecto de reg. con desplaz.Indirecto de reg. Index. con desplaz.
010011100101110
Nº de reg. (An)Nº de reg. (An)Nº de reg. (An)Nº de reg. (An)Nº de reg. (An)
Absoluto cortoAbsoluto largo
111111
000001
Relativo al PC con desplaz.Relativo al PC index. con desplaz.
111111
010011
Inmediato 111 100
10. ejemplos: MC6800010. ejemplos: MC68000
37
73
estructura de computadoresestructura de computadores
Formato de las instrucciones (Formato de las instrucciones (cont.cont.))Instrucciones de dos operandos con operando inmediato corto (2 formatos)
Instrucciones de bifurcación condicional (Bcc, 1 formato)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op codigo_op EA destinodato (b)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op registro (a)dato0OW:
OW:
Ejemplo: MOVEQ #100, D0
-128 ≤ dato ≤ 127
Ejemplo: ADDQ #2, D3SUBQ #1, D7
1 ≤ dato ≤ 8
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
codigo_op condicion desplazamiento
Ejemplo: BEQ dir1
OW:
modo registro
Campotamaño Tamañooperando01 byte (.B)11 palabra (.W)10 doble palabra(.L)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op tamaño EAfuente
modo registro (a)EAdestinomodo registroOW:
Campomodo-opByte Palabra Doble pal. Operación000 001 010 <registro> OP<EA> → registro100 101 110 <EA>OP<registro> →EA
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op modo_op EAfuente/destinoregistro (b)OW:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op modo_opregistro (c)registroOW:
Instrucciones con 2 operandos (3 formatos)
Ejemplos: MOVE.L D7, 4(A5)
Ejemplos: ADD.L D0, D1OR.W #S00FF,D3
Ejemplos: ABCD -(A0), -(A1)EXG D1, A2
modo registro
10. ejemplos: MC6800010. ejemplos: MC68000
74
estructura de computadoresestructura de computadores
MOVIMIENTO DE DATOS Mnemotécnico Sintaxis Tamaño Función X N Z V C 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 – * * 0 0 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>
MOVEM.t <lista_reg>,–(An) L,W
registros→destino – – – – –
MOVEM MOVEM.t <cea>,<lista_reg> MOVEM.t (An)+,<lista_reg>
L,W (fuente)→registros – – – – –
MOVEP MOVEP.t Dn,d(Am) MOVEP.t d(Am),Dn
L,W (fuente)→destino – – – – –
MOVEQ MOVEQ #<d8>,Dn L dato (8 bits)→destino – * * 0 0 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 – – – – –
10. ejemplos: MC6800010. ejemplos: MC68000
38
75
estructura de computadoresestructura de computadores
ARITMÉTICA ENTERAMnemotécnico Sintaxis Tamaño Función X N Z V CADD ADD.t <ea>,Dn
ADD.t Dn, <amea>L,W,B (fuente)+(destino)→destino * * * * *
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
ADDX.t –(Am),–(An)L,W,B (fuente)+(destino)+X→destino * * * * *
CLR CLR.t <adea> L,W,B 0→destino – 0 1 0 0CMP 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;
Cociente→destino[15:0],Resto→destino[31:16]
– * * * 0
DIVU DIVU <dea>,Dn W (destino)/(fuente)→destino;Cociente→destino[15:0],Resto→destino[31:16]
– * * * 0
EXT EXT.t Dn L,W Dn(Extend en signo)→Dn – * * 0 0MULS MULS <dea>,Dn W (fuente)*(destino)→destino – * * 0 0MULU MULU <dea>,Dn W (fuente)*(destino)→destino – * * 0 0NEG 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
SUB.t Dn, <amea>L,W,B (destino)–(fuente)→destino * * * * *
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
SUBX.t –(Am),–(An)L,W,B (destino)–(fuente)–X→destino * * * * *
TAS TAS <adea> B Test (destino)→CCR;1→destino[bit 7]
– * * 0 0
TST TST <adea> L,W,B Test (destino)→CCR – * * 0 0
10. ejemplos: MC6800010. ejemplos: MC68000
76
estructura de computadoresestructura de computadores
OPERACIONES LÓGICASMnemotécnico Sintaxis Tamaño Función X N Z V CAND AND.t <dea>,Dn
AND.t Dn,<amea>L,W,B (fuente)<AND>(destino)→destino – * * 0 0
ANDI ANDI.t #<dato>,<adea> L,W,B dato<AND>(destino)→destino – * * 0 0ANDI 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 – * * 0 0EORI EORI.t #<dato>,<adea> L,W,B dato<XOR>(destino)→destino – * * 0 0EORI 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 – * * 0 0OR OR.t <dea>,Dn
OR.t Dn,<amea>L,W,B (fuente)<OR>(destino)→destino – * * 0 0
ORI ORI.t #<dato>, <adea> L,W,B dato<OR>(destino)→destino – * * 0 0ORI 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 ROTACIONESMnemotécnico Sintaxis Tamaño Función X N Z V CASL/ASR ASL/ASR Dm,Dn
ASL/ASR #<d3>,DnL,W,B (destino) desplaz. aritmet. de
<num> bits→destino* * * * *
ASL/ASR ASL/ASR<amea> W (contadordesplaz.=1)
(destino) desplaz. aritmet. de1 bit →destino
* * * * *
LSL/LSR Igual que ASL/ASR Idem (destino) desplaz. logico de<num> (o 1)bits→destino
* * * 0 *
ROL/ROR Igual que ASL/ASR Idem (destino) rotado<num> (o 1)bits→destino
– * * 0 *
ROXL/ROXR Igual que ASL/ASR Idem (destino) rotado (con exten.)<num> (o 1)bits→destino
* * * 0 *
10. ejemplos: MC6800010. ejemplos: MC68000
39
77
estructura de computadoresestructura de computadores
MANIPULACIÓN DE BITSMnemotécnico Sintaxis Tamaño Función X N Z V CBCHG BCHG Dm,Dn o
BCHG #<d8>,DnL (bit mod 32) <NOT>(destino[bit])→flag Z;
<NOT>(destino[bit])→destino[bit]– – * – –
BCHG BCHG Dm, <amea> oBCHG #<d8>,<amea>
B (bit mod 8) Igual – – * – –
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 oBTST #<d8>,Dn
L (bit mod 32) <NOT>(destino[bit])→flag Z – – * – –
BTST BTST Dm,<mea> oBTST #<d8>,<mea>
B (bit mod 8) Igual – – * – –
OPERACIONES DE CONTROL DE PROGRAMAMnemotécnico Sintaxis Tamaño Función X N Z V CBcc 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.→PCELSE 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 – – – – –
10. ejemplos: MC6800010. ejemplos: MC68000
78
estructura de computadoresestructura de computadores
a) Aritmética con signo
Condición Significado Cálculo
GT "Greater than" - mayor que Z + (N xor V) = 0
LT "Less than" - menor que N xor V = 1
GE "Greater or equal" - mayor o igual N xor V = 0
LE "Less or equal" - menor o igual Z + (N xor V) = 1
VS "Overflow" - desbordamiento V = 1
VC "No overflow" - no desbordamiento V = 0
PL "Plus" - más N = 0
MI "Minus" - menos N = 1
Condiciones soportadas por el MC68000 para instrucciones condicionales (Bcc, DBcc, Scc)
b) Aritmética sin signo
Condición Significado Cálculo
HI "Higher" - mayor Z + C = 0
CS "Carry set" - menor C = 1
CC "Carry clear" - mayor o igual C = 0
LS "Low or Same" - menor o igual Z + C = 1
c) Aritmética con signo o sin signo
Condición Significado Cálculo
EQ "Equal" - igual Z = 1
NE "No equal" - no igual Z = 0
T "True" - siempre cierto 1
F "False" - siempre falso 0
10. ejemplos: MC6800010. ejemplos: MC68000
40
79
estructura de computadoresestructura de computadores
OPERACIONES EN BCDMnemotécnico Sintaxis Tamaño Función X N Z V CABCD ABCD Dm,Dn
ABCD –(Am),–(An)B (fuente10)+(destino10)+X→
destino10
* U * U *
NBCD NBCD<adea> B 0–(destino10)–X→destino10 * U * U *SBCD SBCD Dm,Dn
SBCD –(Am),–(An)B (fuente10)–(destino10)–X→
destino10
* U * U *
OPERACIONES DE CONTROL DEL SISTEMAMnemotécnico Sintaxis Tamaño Función X N Z V CRESET* RESET No IF S=1 activa RESET
ELSE EXCEPCIÓN– – – – –
RTE* RTE No IF S=1 (SP)+→SP;(SP)+→PCELSE EXCEPCIÓN
* * * * *
STOP* STOP #<d16> No IF S=1 d16→SR;PC+4→PC;Pausa hasta excepcionELSE EXCEPCIÓN
* * * * *
CHK CHK <dea>,Dn W IF Dn<0 OR Dn>(fuente)EXCEPCIÓN
– * UUU
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 – – – – –
10. ejemplos: MC6800010. ejemplos: MC68000
80
estructura de computadoresestructura de computadores
⌦ Procesador RISC de 32 bitsRepertorio ortogonal
Aprox. 100 instrucc. máquina + 30 instrucc. de aritmética en punto flotanteCada instrucción soporta 1 único tamaño de operandos y 1 único modo de direccionamiento
Instrucciones clasificadas en cuatro gruposMovimiento de datosAritmética entera, logicas y desplazamientoControl de flujoAritmética en punto flotante
4 modos de direccionamientoInmediatoDirecto de registrosIndirecto con desplazamientoIndirecto con desplazamiento relativo al PC
3 formatos de instrucción distintos con longitud única de 32 bitsArquitectura registro-registro
Sólo las instrucciones de LOAD y STORE hacen referencia a memoriaEl resto de instrucciones operan sobre registros
Instrucciones con tres operandos: 2 op. fuente y 1 op. DestinoNotació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)
Características generalesCaracterísticas generales
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
41
81
estructura de computadoresestructura de computadores
⌦ EnterosTamaño Byte (8 bits)Tamaño Media palabra (16 bits)Tamaño Palabra (32 bits)
Tipos de datosTipos de datos⌦ Reales en punto flotante
Simple precisión (32 bits)Doble precisión (64 bits)
$00000000$00000004
$FFFFFFFC
.
.
.
.
.
Byte $0 (8 bits)
Media palabra $0 (16 bits)
Palabra $0 (32 bits)
70
0 15
0 31
0
$0
$0
$0
$0
Memoria (Ordenación Big-Endian)
PalabraByte $0 Byte $1Byte $4
Byte $2 Byte $3Byte $5 Byte $6 Byte $7
Media palabra $0 Media palabra $2
Media palabra $4 Media palabra $6
Real Simple precisión $0 (32 bits)0 31$0
63$4
Real Doble Precisión $0 (64 bits)
Bit signo
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
82
estructura de computadoresestructura de computadores
Modos de direccionamientoModos de direccionamiento
op rs rt rd
Inmed.
registro
⌦ Directo de registro
op rs rt
registro
⌦ Indirecto con desplazamiento
+
Memoria
Inmed.op rs rt⌦ Inmediato
Inmed.op rs rt
PC
⌦ Indirecto con desplazamiento relativo a PC
+
Memoria
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
42
83
estructura de computadoresestructura de computadores
Formato de la instrucción máquinaFormato de la instrucción máquina
⌦ Instrucción de tipo I
⌦ Instrucción de tipo R
Inmed.op rs1 rd6 5 5 16
Código Operac.
Reg.fuente
Reg.destino
Valorinmediato
Instrucciones de LOAD/STOREEj.: LW $1, 30($2) R1 ← Mem(30+(R2))
SF 60($5), $10 Mem(60+(R5)) ← (F10)Instruc. con operando inmediato
Ej.: ADDI $7, $9, 30 R7 ← (R9) + 30Instruc. de bifurcación condicional
Ej.: BNE $5, $6, 0x0C if (R5 ≠ R6) then PC ← PC+0x0C
Instruc. aritméticas, lógicas y desplazamiento de tipo de registro-registro
Ej.: SUB $7, $4, $3 R7 ← (R4) - (R3)Campo función: Especifica el tipo de operación a realizar
Suma, Resta, Mult. Div., And, Or, Desplaz., etc.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
op rs1 rs2 rd Func.
Código Operac.
Reg.Fnte. 1
Reg.Dest.
Función a realizar
Reg.Fnte. 2
6 5 5 65
⌦ Instrucción de tipo JInstrucciones de salto
Ej.: J dir PC ← dirop Dirección destinoCódigo Operac.
Dirección destinodel salto
6 26
shift
Desplaz.SLL/SRL
5
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
84
estructura de computadoresestructura de computadores
Repertorio de instruccionesRepertorio de instrucciones
Instrucción de movimiento de datosInstrucción Significado Ejemplo OperaciónLB 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]
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
43
85
estructura de computadoresestructura de computadores
Repertorio de instruccionesRepertorio de instruccionesInstrucción de aritmética entera, lógicas y desplazamientoInstrucción Significado Ejemplo OperaciónADD/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) + 5SUB/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) - 5MULT/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 5OR O lógica OR $1,$2,$3 R1 ← (R2) OR (R3)ORI O lógica con inmediato ORI $1,$2,5 R1 ← (R2) OR 5XOR O exclusiva XOR $1,$2,$3 R1 ← (R2) XOR (R3)XORI O exclusiva con inmediato XORI $1,$2,5 R1 ← (R2) XOR 5NOR 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) << 10SLLV/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) bitsROR Rotar a derecha ROR $1,$2,$3 R1 ← (R2) rotado a decha. (R3) bitsSRA 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 (<))
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
86
estructura de computadoresestructura de computadores
Repertorio de instruccionesRepertorio de instruccionesInstrucción de control de flujoInstrucción Significado Ejemplo OperaciónJ Salto (jump) J dir PC ← dirJR Salto con registro JR $2 PC ← (R2)JAL Salto y link JAL dir R31 ← (PC) + 4; PC ← dirBEQ Bifurcación condic. si igual BEQ $2,$4,desp if (R2) = (R4) then PC ← PC+desp+4BNE Bifurcación condic. si distinto BNE $2, $4,desp if (R2) ≠ (R4) then PC ← PC+desp+4Bcc/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ónRFE Retorno de excepción
Instrucción de aritmética en punto flotanteInstrucción SignificadoADDF/ADDD Suma en punto flotante simple/doble precisiónSUBF/SUBD Resta en punto flotante simple/doble precisiónMULTF/MULTD Multiplicación en punto flotante simple/doble precisiónDIVF/DIVD División en punto flotante simple/doble precisiónCVTI2F/CVTI2D Convierte entero a real simple precisión / doble precisiónCVTF2I/CVTF2D Convierte real simple precisión a entero / real doble precisiónCVTD2I/CVTD2F Convierte real doble precisión a entero / real simple precisión
10. Ejemplos: arquitectura MIPS10. Ejemplos: arquitectura MIPS
Top Related