Está en la página 1de 40

Tema 5

Repertorios de instrucciones:
Modos de direccionamiento y
formato

Bibliografía: William Stallings


Organización y Arquitectura de computadores
5ta. Edition. Editorial Pearson Educación.-
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 ?
Contenidos:
• Primera parte) Modos de Direccionamiento
• Segunda parte) 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

Codop Operando

•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á presente en la propia instrucción:
• Operando = A
• e.j. ADD 5
—Suma 5 al contenido del acumulador
• Rápido / Mas sencilla
• Ventaja: Una vez captada la instrucción, no se
requiere una referencia a memoria para obtener el
operando, se ahorra un ciclo de memoria o de cache
en el ciclo de instrucción.
• Desventaja: Rango limitado. Tamaño del nro
limitado 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ón
efectiva 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ón
de una palabra de memoria
• La palabra de memoria contiene la dirección
completa del operando
• EA = (A)
—Mira en A, encuentra el contenido de A (A) y busca
allí 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)

Instruction
Opcode Address A
Memory

Operand
Direccionamiento indirecto (3.3)
• Espacio de direccionamiento grande
• Si N bits = longitud de la palabra, se dispone de un
espacio de 2N direcciones.
• Una variante: Puede ser anidado, multinivel o en
cascada
—e.j. EA = ((..(A)..))
—“Indicador de indirección” (I): 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 registros
de uso general.
• Requiere una buena programación en lenguaje
ensamblador (ej. cuando se desarrollan
compiladores) para conseguir una ejecución
eficiente.
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 )

Instruction
Opcode Register Address R
Registers

Operand
Direccionamiento indirecto con registro (5)

• Es análogo al indirecto
• EA = (R)
• El operando está en una celda de memoria
referenciada 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)

Instruction
Opcode Register Address R
Memory

Registers

Pointer to Operand Operand


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)

Instruction
Opcode Register R Address A
Memory

Registers

Pointer to Operand + Operand


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)
• EA = A + (R)
• El registro referenciado contiene una
dirección de 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;
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.
Segunda Parte) 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:
Formatos de instrucciones: aspectos
claves del diseño
• Longitud de instrucción
• Asignación de los bits
—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
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ón
debiera 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 asignacion
de 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

También podría gustarte