Top Banner
1 1 Estructura de Computadores Estructura 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 instrucciones modos de direccionamiento y repertorio de instrucciones 2 estructura de computadores estructura de computadores Contenidos 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.
43

R-1 Arquitectura Del computador Microprocesadores Introduccion

Jun 19, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: R-1 Arquitectura Del computador Microprocesadores Introduccion

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.

Page 2: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 3: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 4: R-1 Arquitectura Del computador Microprocesadores Introduccion

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.

Page 5: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 6: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 7: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 8: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 9: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 10: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 11: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 12: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 13: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 14: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 15: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 16: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 17: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 18: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 19: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 20: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 21: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 22: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 23: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 24: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 25: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 26: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 27: R-1 Arquitectura Del computador Microprocesadores Introduccion

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”

Page 28: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 29: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 30: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 31: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 32: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 33: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 34: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 35: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 36: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 37: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 38: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 39: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 40: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 41: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 42: R-1 Arquitectura Del computador Microprocesadores Introduccion

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

Page 43: R-1 Arquitectura Del computador Microprocesadores Introduccion

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