Tema5 Repertoriosde instrucciones: Modosde ... · modos de direccionamiento y > rango de...

23
Bibliografía: William Stallings Organización y Arquitectura de computadores 5ta. Edition. Editorial Pearson Educación.- Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato Objetivos: Antes vimos: Qué hace una instrucción. Tipos de operandos y de operaciones que pueden especificarse mediante instrucciones de máquina. Ahora los aspectos a tener en cuenta: Cómo especificar la dirección de un operando. ? Cómo se organizan los bits de una instrucción para definir las direcciones de los operandos y la operación que realiza dicha instrucción ?

Transcript of Tema5 Repertoriosde instrucciones: Modosde ... · modos de direccionamiento y > rango de...

Bibliografía: William Stallings

Organización y Arquitectura de computadores

5ta. Edition. Editorial Pearson Educación.-

Tema 5

Repertorios de instrucciones:

Modos de direccionamiento y

formato

Objetivos:

• Antes vimos: Qué hace una instrucción. Tipos de operandos y de operaciones que puedenespecificarse mediante instrucciones de máquina.

• Ahora los aspectos a tener en cuenta:

• Cómo especificar la dirección de un operando. ?

• Cómo se organizan los bits de una instrucciónpara definir las direcciones de los operandos y la operación que realiza dicha instrucción ?

Contenidos:

• Modos de Direccionamiento

• Formatos de instrucciones—Longitud de las instrucciones

—Asignación de los bits

—Instrucciones de longitud variable

Direccionamiento:

• El campo de direcciones en un formato de instrucción esta bastante limitado.

• Seria deseable referenciar un rango elevado de posiciones en memoria principal o de memoria virtual.

• Existen diversas técnicas:

• Compromiso entre:—Rango de direcciones y/o flexibilidad de direccionamiento

—Numero de referencias a memoria y/o complejidad de calculo de las direcciones.

Modos de direccionamiento

• 1.- Inmediato

• 2.- Directo

• 3.- Indirecto

• 4.- Registro

• 5.- Indirecto con registro

• 6.- Con desplazamiento (Indexado)

• 7.- Pila

Notación a utilizar:

A= Contenido de un campo de dirección en la instrucción.

R= Contenido de un campo de dirección en la instrucción que referencia un registro.

EA= Dirección real (efectiva) de la posición que contiene el operando que se referencia.

(X)= Contenido de la posición X.

Consideraciones:

• Prácticamente todas las arquitecturas ofrecen mas de uno de estos modos.

• Problema a resolver: Como determina la unidad de control que modo de direccionamiento se esta utilizando en cada instrucción.?—Codops diferentes emplean modos distintos

— Uno o mas bits pueden utilizarse como campo de modo.

— Este campo de modo indica que tipo de direccionamiento

• Otra cuestión: Dirección efectiva (EA). — Sin memoria virtual: La EA es una dirección de memoria principal

o un registro

— Con memoria virtual: La EA es una dirección virtual o un registro. La correspondencia real con una dirección física dependerá del mecanismo de paginación.

— No esta por tanto visible al programador.

Direccionamiento inmediato (1.1)

a) Modo de direccionamiento inmediato

OperandoCodop

•Este modo puede utilizarse para definir y utilizar constantes, o para fijar valores iniciales de variables.

•Normalmente el número se almacena en complemento a dos; el bit más a la izquierda del campo operando se utiliza como bit de signo.

Direccionamiento inmediato (1.2)

• El operando está en realidad presente en la propia instrucción:

• Operando = A

• e.j. ADD 5—Suma 5 al contenido del acumulador

—5 es el operando

• No se requiere una referencia a memoria para obtener el operando, ahorrándose un ciclo

• Rápido / Mas sencilla

• Desventaja: Rango limitado. Tamaño del nrolimitado a la long. del campo de direcciones, que es pequeño comparado con la longitud de la palabra.

Direccionamiento Directo (2.1)

• Campo de direcciones contiene la direcciónefectiva del operando

• EA= A

• e.j. ADD A—Busca en memoria la dirección A para el operando

• Sólo requiere una referencia a memoria

• No necesita ningún cálculo especial

• Espacio de direcciones restringido

Diagrama de Direccionamiento Directo (2.2)

Direccionamiento indirecto (3.1)

• Problema del modo anterior: La long. del campo de direcciones es normalmente < la longitud de la palabra- > limita el rango de direcciones.

• El campo de direcciones referencia la direcciónde una palabra de memoria

• La palabra de memoria contiene la direccióncompleta del operando

• EA = (A)—Mira en A, encuentra el contenido de A (A) y buscaallí el operando

• e.j. ADD (A)

—Agrega el contenido de la celda apuntada por el contenido de A al acumulador

Diagrama de direccionamiento indirecto (3.2)

Address AOpcode

Instruction

Memory

Operand

Diagrama de direccionamiento indirecto(4)

Address AOpcode

Instruction

Memory

Operand

Pointer to operand

Direccionamiento indirecto (3.3)

• Espacio de direccionamiento grande

• Si N bits = longitud de la palabra, se dispone de un espacio de 2N direcciones.

• Puede ser anidado, multinivel o en cascada —e.j. EA = ((..(A)..))

—“Indicador de indirección”: 0: contiene el valor de EA

— 1: se invoca otro nivel.

• Desventajas:

• La ejecución de la inst. requiere dos referencias a memoria para captar el operando: una para captar su dirección y otra para obtener su valor.

• Demasiado lento

Direccionamiento de registro (4.1)

• El campo de direcciones referencia un registro, en lugar de una dirección de memoria principal. EA = R

• Un campo de direcciones que referencia a registros consta de 3 o 4 bits, ->pueden referenciarse un total de 8 o 16 registros de uso general

• Es necesario un campo pequeño de direcciones en la instrucción—Instrucciones más cortas

—Instrucciones de captación más rápidas

Direccionamiento de registro(4.2)

• No se requieren referencias a memoria

• Ejecución muy rápida

• Desventaja: Espacio de direcciones muy limitado

• Las CPU modernas emplean múltiples registrosde uso general.

• Requiere una buena programación en lenguajeensamblador (ej. cuando se desarrollancompiladores) para conseguir una ejecucióneficiente.

Direccionamiento de registro(4.3)

• En caso de utilizar masivamente este tipo, los registros de la CPU se utilizan intensivamente.

• Debido a su numero limitado se deben utilizar eficientemente solo si tiene sentido.

• Ej: almacenamiento de resultados intermedios de un calculo. Implementación de un algoritmo de multiplicación en complemento a dos, una cierta variable se referencia muchas veces, y seria conveniente implementarla en registro en lugar de memoria principal.

Diagrama de Direccionamiento de

registro (4.4 )

Register Address ROpcode

Instruction

Registers

Operand

Direccionamiento indirecto con registro (5)

• Es análogo al indirecto

• EA = (R)

• El operando está en una celda de memoriareferenciada mediante el contenido del Registro R

• La limitación del espacio se supera: haciendo que R, referencie a una posición de palabra completa ( un registro), que contenga la dirección.

• Emplea una referencia menos a memoria que el direccionamiento indirecto.

Diagrama de Direccionamiento Indirecto con Registro

(5.2)

Register Address ROpcode

Instruction

Memory

OperandPointer to Operand

Registers

Direccionamiento con desplazamiento (6)

• Modo muy potente: combina direccionamiento directo e indirecto con registro.

• EA = A + (R)

• Requiere que las instrucciones tengan dos campos de direcciones, al menos uno de ellos es explícito.—A = valor base, se utiliza directamente

— R = registro que contiene el desplazamiento, cuyo contenido se suma a A para obtener la dirección efectiva.

— o viceversa

• Tres versiones:—Desplazamiento relativo

— Direccionamiento con registro base.

— Indexado.

Diagrama de direccionamiento con

desplazamiento (6)

Register ROpcode

Instruction

Memory

OperandPointer to Operand

Registers

Address A

+

Direccionamiento relativo (6.1)

• Es una versión del direccionamiento con desplazamiento

• R= Contador de programa, PC

• La dirección de instrucción actual se suma al campo de direcciones

• EA = A + (PC): La dirección efectiva es un desplazamiento relativo a la dirección de la instrucción.

• i.e. toma el operando de la celda A a partir de la localización corriente apuntada por el PC

• Si la mayoría de las referencias a memoria están próximas a la instrucción en ejecución, permite ahorrar bits de direcciones en la instrucción.

Direccionamiento con Registro Base (6.2)

• El registro referenciado contiene una direcciónde memoria

• Y el campo de dirección contiene un desplazamiento desde dicha dirección

• R contiene un apuntador a la dirección de memoria base

• R (la referencia a registro) puede ser explícita o implícita

Direccionamiento indexado (6.3)

• Es opuesto a la interpretación del registro-base.• Registro referenciado contiene un desplazamiento

positivo• Campo dirección es una dirección de memoria

principal=> contiene + bits que un campo de direcciones de una instr. comparable que emplee el método anterior• El método para calcular EA en ambos es igual• A = base• R = contiene un desplazamiento positivo desde esa

dirección • EA = A + R• Las referencias a registro pueden ser explicitas o

implícitas.• Mecanismo eficiente para ejecutar operaciones iterativas.

— EA = A + R— R++

Direccionamiento indexado (6.4)

• Ejemplo: Dado una lista de nros. almacenados a partir de la posición A .

• Se quiere sumar 1 a cada elemento de la lista.

• Se necesita-> captar c/elemento, sumar 1 y memorizar el resultado.

• La secuencia de direcciones efectivas necesarias es:

• A, A+1, A+2, ….

• El valor A se almacena en el campo de dirección de la instrucción;

• El registro elegido (registro índice) se inicializa a 0.

• Luego de c/operación, el registro se incrementa en 1.

• Esta operación puede hacerse automáticamente, como parte del ciclo de instrucción (autoindexado).

Combinaciones (6.5)

• El autoindexado con incremento:

• EA = A + (R) .

• (R)<- (R) + 1;

Combinaciones (6.5)

• El autoindexado con incremento:

• EA = A + (R) .

• (R)<- (R) + 1;

• Hay dos posibilidades de indexación:

• Post-indexado (la indexación se realiza después de la indirección)

• EA = (A) + (R)

• Pre-indexado ( la indexación se realiza antes de la indirección)

• EA = (A+(R))

• Un repertorio no incluye ambos tipos simultáneamente.

Direccionamiento de Pila (7)

• Pila: Matriz lineal de posiciones

• Los elementos se añaden en la cabecera.

• La pila tiene asociado un puntero, cuyo valor es la dirección de la cabecera o tope de la pila.

• El puntero de pila se mantiene en un registro.

• Operando está (implícitamente) en el tope de la pila.

• Son de hecho, direcciones de acceso indirecto con registro.

• Las instrucciones maquina no necesitan incluir una referencia a memoria, operan implícitamente con la cabecera de la pila.

• Bastante comunes en microprocesadores.

Modos de direccionamiento del Pentium

II

• Mecanismo de traducción de direcciones del Pentium II produce una dirección,

• Denominada “dirección virtual o efectiva”: es un desplazamiento dentro de un segmento.

• 12 modos de direccionamiento disponibles para permitir la ejecución eficiente de lenguajes de alto nivel.— Inmediato

— Registro

— Con desplazamiento

— Base

— Base con desplazamiento

— Indice escalado con desplazamiento

— Base con índice y desplazamiento

— Base con índice escalado y desplazamiento

— Relativo

Cálculos en el modo de

direccionamiento del Pentium II

PowerPC Addressing Modes

• Carga/ memorizacion— Indirecto

– Instructiones incluye un desplazamiento de 16 bits, que se suma a un registro base ( algunos de los registros de uso general).

– Puede reemplazar el contenido del registro base con una nueva dirección.

— Indirecto indexedo– La instrucción referencia un registro base y otro índice, pudiendo ambos ser

cualesquiera de los registros de uso general.

– EA es la suma de los contenidos de los dos registros.

• Direccionamiento de bifurcaciones— Absoluto

— Relativo

— Indirecto

• Instrucciones aritméticas. — Operando debe estar en un registro o bien formar parte de la

instrucción.

— Para las operaciones aritméticas en coma flotante, todos los operandos se encuentran en registros decoma flotante, solo se utiliza direccionamiento de registros.

PowerPC Memory Operand

Addressing Modes

Como se organizan los bits de una instrucción:

Formatos de instrucciones

• Descripción en bits de una instrucción en términos de las distintas partes que la componen.

• Incluye un código de operación (codop)

• Incluye (implícita o explícitamente) ninguno o algunos operandos.

• Cada operando explicito se referencia según los modos vistos.

• El formato debe indicar (implícita o explícitamente) el modo de direccionamiento para cada operando

• En la mayoría de los repertorios de instrucciones se emplea más de un formato de instrucción

• Existe una gran variedad de diseños de formatos

• Analizaremos aspectos claves del diseño:

Longitud de instrucción (I)

• El aspecto de diseño mas básico a considerar.• Afecta y se ve afectada por:

—Tamaño de memoria — Organización de memoria — Estructura de buses — Complejidad de la CPU — Velocidad de la CPU

• Programadores desean + codops + operandos +, modos de direccionamiento y > rango de direcciones) -> requiere de mas bits, y empuja hacia longitudes de instrucción mayores.

• Compromiso entre el deseo de disponer de un repertorio de instrucciones máquina potente y la necesidad de ahorrar espacio.

• Todo empuja a longitudes de inst. mayores, pero:• Una long de 32 bits ocupa el doble de espacio de una de

16, pero probablemente no es el doble de útil.

Longitud de instrucción (II)

• Otra consideración: Debiera cumplirse que el tamaño de la instrucción fuera igual al tamaño de las transferencias a memoria ( tamaño del bus de datos).

• O que uno fuera un múltiplo del otro.

• Si así no fuera: no se consigue un nro. entero de instrucciones durante un ciclo de captación.

• Esto afecta la velocidad de transferencia de la memoria

• La velocidad del procesador ha aumentado mucho

• Cuello de botella: solución uso de memoria cache o de instrucciones mas cortas.

• Las instrucciones de 16 bits pueden captarse el doble de rápido que las de 32, pero no pueden ejecutarse el doble de rápido.

Longitud de instrucción (III)

• Otra consideración: La longitud de la instruccióndebiera ser un múltiplo de la long. de un carácter (8 bits) y de la long. de los nros en coma fija.

• La long. de palabra de memoria: unidad “natural” de organización.

• La palabra define normalmente el tamaño de los números en coma fija (gralmente coinciden)

• El tamaño de palabra suele coincidir, con el tamaño de transferencias a memoria.

• Seria deseable que una palabra almacenara un nro. entero de caracteres.

• SINO: Se perderían bits en cada palabra cuando se almacenan múltiples caracteres o,

• Habría caracteres partidos entre dos palabras. • Por ej. IBM debió pasar de arquitecturas de 36 bits a las

de 32 bits en la serie ( 700/7000)

Asignación de los bits ( I )

• Otro aspecto a considerar: como asignar los bits en el formato de la instrucción?

• Relación clave entre codops y capacidad de direccionamiento. (+ codops – bits direccionamiento)

• Existen codops de long. variable

• Factores que afectan la definición del uso dado a los bits de direccionamiento: —Número de modos de direccionamiento

— Número de operandos

— Registros frente a memoria

— Número de conjuntos de registros

— Rango de direcciones

— Granularidad de las direcciones

Asignación de los bits ( II )

• Número de modos de direccionamiento — Un modo puede indicarse de manera implícita ( indexación)

—Los modos explícitos requieren uno o mas bits de modo.

• Número de operandos—Las instrucciones actuales permiten dos operandos.

—C/dirección de operando podria requerir su propio indicador de modo, o el uso del indicador de modo podrá estar limitado a solo uno de los campos de direcciones.

Asignación de los bits ( III )

• Registros frente a memoria—Maquina debe disponer de registros para traer los datos a la CPU para procesarlos.

—Con varios registros solo se necesitan unos pocos bits para especificar el registro.

—Diversos estudios indican que es aconsejable disponer de 8 a 32 registros visibles para el usuario.

• Número de conjuntos de registros—Varias maquinas tienen un conj. de registros de uso general, que contiene 8 o 16 registros.

—Suelen emplearse para guardar datos y para almacenar direcciones para direccionamiento con desplazamiento.

—Tendencia actual: grupos de registros especializados.

Asignación de los bits ( IV )

• Rango de direcciones:— Para referencia a memoria, este rango esta relacionado con el

nro. de bits de direccionamiento.— Esto impone limitación, raramente se emplea direccionamiento

directo.— En direccionamiento con desplazamiento: el rango se amplia al

definido por la longitud del registro de direcciones.— Es conveniente permitir desplazamientos bastantes mas largos

que los del registro de direcciones y esto necesita de un nro. relativamente grande de bits de direcciones en la instrucción.

• Granularidad de las direcciones:— Para direcciones que referencian a memoria en lugar de

registros.— Con palabras de 16 o 32 bits, una dirección puede referenciar

una palabra o un byte, según elija el diseñador.— El direccionamiento por bytes es conveniente para manipular

caracteres, pero requiere, para un tamaño de memoria dado, de mas bits de direcciones.

Asignación de los bits ( IV )

• Al momento de determinar la asignacionde bits en un formato:

• Gran cantidad de factores a tener en cuenta y sopesar.

Instrucciones de longitud variable

• Esta táctica hace mas fácil proporcionar un amplio repertorio de codops de log. Variable.

• El direccionamiento puede ser mas flexible, con varias combinaciones de referencias a registros y a memoria y modos de direccionamiento.

• Desventajas: Aumento de complejidad de la CPU.

• CONCLUSION:

• El formato de instrucción define la forma de los distintos campos. Su diseño es una tarea dificil, que debe considerar la longitud de las instrucciones, fija o variable, los nros de bits de los codops y de cada referencia a operando y a la forma en que se determina el modo de direccionamiento