Unidad5_direccionamiento_parte2

download Unidad5_direccionamiento_parte2

of 23

Transcript of Unidad5_direccionamiento_parte2

  • 8/17/2019 Unidad5_direccionamiento_parte2

    1/23

    Bibliografía: William StallingsOrganización y Arquitectura de computadores5ta. Edition. Editorial Pearson Educación.-

    Tema 5Repertorios de instrucciones:Modos de direccionamiento y

    formato

    Objetivos:

    • Antes vimos: Qué hace una instrucción. Tipos deoperandos 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 laoperación que realiza dicha instrucción ?

  • 8/17/2019 Unidad5_direccionamiento_parte2

    2/23

    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 deinstrucción esta bastante limitado.

    • Seria deseable referenciar un rango elevado deposiciones en memoria principal o de memoriavirtual.

    • Existen diversas técnicas:• Compromiso entre:

    —Rango de direcciones y/o flexibilidad dedireccionamiento

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

  • 8/17/2019 Unidad5_direccionamiento_parte2

    3/23

    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 quereferencia un registro.

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

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

  • 8/17/2019 Unidad5_direccionamiento_parte2

    4/23

    Consideraciones:

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

    • Problema a resolver: Como determina la unidad de controlque modo de direccionamiento se esta utilizando en cadainstrucció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á delmecanismo 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 utilizarconstantes, o para fijar valores iniciales devariables.•Normalmente el número se almacena encomplemento a dos; el bit más a la izquierda delcampo operando se utiliza como bit de signo.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    5/23

    Direccionamiento inmediato (1.2)

    • El operando está en realidad presente en lapropia 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 paraobtener 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 dela 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

  • 8/17/2019 Unidad5_direccionamiento_parte2

    6/23

    Diagrama de Direccionamiento Directo (2.2)

    Direccionamiento indirecto (3.1)

    • Problema del modo anterior: La long. del campode direcciones es normalmente < la longitud dela 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 busca

    allí el operando• e.j. ADD (A)

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

  • 8/17/2019 Unidad5_direccionamiento_parte2

    7/23

    Diagrama de direccionamiento indirecto (3.2)

    Address AOpcode

    Instruction

    Memory

    Operand

    Diagrama de direccionamiento indirecto(4)

    Address AOpcode

    Instruction

    Memory

    Operand

    Pointer to operand

  • 8/17/2019 Unidad5_direccionamiento_parte2

    8/23

    Direccionamiento indirecto (3.3)

    • Espacio de direccionamiento grande• Si N bits = longitud de la palabra, se dispone de

    un espacio de 2 N 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 referenciasa memoria para captar el operando: una paracaptar 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 aregistros consta de 3 o 4 bits, ->puedenreferenciarse un total de 8 o 16 registros de usogeneral

    • Es necesario un campo pequeño de direccionesen la instrucción —Instrucciones más cortas —Instrucciones de captación más rápidas

  • 8/17/2019 Unidad5_direccionamiento_parte2

    9/23

    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óneficiente.

    Direccionamiento de registro(4.3)

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

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

    • Ej: almacenamiento de resultados intermediosde un calculo. Implementación de un algoritmode multiplicación en complemento a dos, unacierta variable se referencia muchas veces, yseria conveniente implementarla en registro enlugar de memoria principal.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    10/23

    Diagrama de Direccionamiento deregistro (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 memoria

    referenciada mediante el contenido del Registro R

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

    • Emplea una referencia menos a memoria que eldireccionamiento indirecto.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    11/23

    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 eindirecto 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.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    12/23

    Diagrama de direccionamiento condesplazamiento (6)

    Register ROpcode

    Instruction

    Memory

    OperandPointer to Operand

    Registers

    Address A

    +

    Direccionamiento relativo (6.1)

    • Es una versión del direccionamiento condesplazamiento

    • 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 lainstrucción.

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

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

  • 8/17/2019 Unidad5_direccionamiento_parte2

    13/23

    Direccionamiento con Registro Base (6.2)

    • El registro referenciado contiene una direcciónde memoria

    • Y el campo de dirección contiene undesplazamiento desde dicha dirección

    • R contiene un apuntador a la dirección dememoria 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 direccionesde 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++

  • 8/17/2019 Unidad5_direccionamiento_parte2

    14/23

    Direccionamiento indexado (6.4)

    • Ejemplo: Dado una lista de nros. almacenados a partir dela 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)

  • 8/17/2019 Unidad5_direccionamiento_parte2

    15/23

    Combinaciones (6.5)

    • El autoindexado con incremento:• EA = A + (R) .• (R)

  • 8/17/2019 Unidad5_direccionamiento_parte2

    16/23

    Modos de direccionamiento del PentiumII• 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 dedireccionamiento del Pentium II

  • 8/17/2019 Unidad5_direccionamiento_parte2

    17/23

    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 utilizadireccionamiento de registros.

    PowerPC Memory OperandAddressing Modes

  • 8/17/2019 Unidad5_direccionamiento_parte2

    18/23

    Como se organizan los bits de una instrucción:Formatos de instrucciones

    • Descripción en bits de una instrucción en términos delas 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 deinstrucción mayores.

    • Compromiso entre el deseo de disponer de un repertoriode instrucciones máquina potente y la necesidad deahorrar 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.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    19/23

    Longitud de instrucción (II)

    • Otra consideración: Debiera cumplirse que el tamañode la instrucción fuera igual al tamaño de lastransferencias 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 deinstrucciones mas cortas.• Las instrucciones de 16 bits pueden captarse el doble de

    rápido que las de 32, pero no pueden ejecutarse eldoble 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” deorganización.

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

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

    • Seria deseable que una palabra almacenara un nro. enterode caracteres.

    • SINO: Se perderían bits en cada palabra cuando sealmacenan 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)

  • 8/17/2019 Unidad5_direccionamiento_parte2

    20/23

    Asignación de los bits ( I )

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

    • Relación clave entre codops y capacidad dedireccionamiento. (+ 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 modopodrá estar limitado a solo uno de los campos dedirecciones.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    21/23

    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 usogeneral, que contiene 8 o 16 registros.

    —Suelen emplearse para guardar datos y paraalmacenar direcciones para direccionamiento condesplazamiento.

    —Tendencia actual: grupos de registros especializados.

    Asignación de los bits ( IV )• Rango de direcciones:

    — Para referencia a memoria, este rango esta relacionado con elnro. de bits de direccionamiento.

    — Esto impone limitación, raramente se emplea direccionamientodirecto.

    — En direccionamiento con desplazamiento: el rango se amplia aldefinido por la longitud del registro de direcciones.

    — Es conveniente permitir desplazamientos bastantes mas largosque los del registro de direcciones y esto necesita de un nro.relativamente grande de bits de direcciones en lainstrucció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, demas bits de direcciones.

  • 8/17/2019 Unidad5_direccionamiento_parte2

    22/23

    Asignación de los bits ( IV )

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

    • Gran cantidad de factores a tener encuenta y sopesar.

    Instrucciones de longitud variable

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

    • El direccionamiento puede ser mas flexible, convarias combinaciones de referencias a registros ya 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 lasinstrucciones, fija o variable, los nros de bits delos codops y de cada referencia a operando y a laforma en que se determina el modo dedireccionamiento

  • 8/17/2019 Unidad5_direccionamiento_parte2

    23/23