Tema 5 Repertorios de instrucciones: Modos de direccionamiento y

Anuncio
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:
• 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.2.3.4.5.6.7.-
Inmediato
Directo
Indirecto
Registro
Indirecto con registro
Con desplazamiento (Indexado)
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á 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 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
Diagrama de direccionamiento indirecto(4)
Instruction
Opcode
Address A
Memory
Pointer to operand
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 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)
• 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;
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ó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
Descargar