Módulo 06 Modos de direccionamiento

Slides:



Advertisements
Presentaciones similares
El modelo de Von Neumann
Advertisements

Arquitectura de Conjunto de Instrucciones (ISA)
ISA (Instruction Set Architecture)
Tema 2: Lenguaje máquina
Arquitectura de Computadores Clase 19 Memoria Caché: Funciones de Correspondencia IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Ingeniería de Aplicaciones para la Web Semántica Segundo Cuatrimestre 2005 Clase 11 Conclusiones Mg. A. G. Stankevicius.
Es el software que controla el conjunto de operaciones de una computadora. Proporciona el mecanismo por el cual un usuario puede solicitar la ejecución.
INFORMÁTICA BÁSICA CURSO DE NIVELACIÓN. CAPITULO I Conceptos Básicos  Objetivo  Introducir al alumno en los conceptos básicos de la informática, tanto.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
Módulo 02 Sistemas de Representación
Organización de computadoras
“Los Sistemas Operativos”
Módulo 00 Administrivia.
Módulo 00 Administrivia.
Capitulo 2 Tratamiento de Datos
Pipelining Peligros de control.
U.T. 11: Introducción A Las Bases De Datos
El procesador Diseño del control.
UNIDAD CENTRAL DE PROCESO CPU.
Datapath para las instrucciones de brinco
EL CPU.
ADMINISTRACíON DE LA MEMORIA EN SISTEMAS RECIENTES
Arquitecturas alternativas UNIVERSIDAD TECNOLOGICA DE PUEBLA TECNOLOGIAS DE LA INFORMACION Y COM. AREA REDES Y TELECOMUNICIONES ADMINISTRACION DE SERVIDORES.
Módulo 9 Automatización industrial Unidad 1 Introducción a los autómatas programables. Clase 03: Software de un Relé programable.. Nivel: IV medio Especialidad:
COMPUTADORA Una computadora es una colección de circuitos integrados  y otros componentes relacionados que puede ejecutar con exactitud, rapidez y de.
Unidad 7: Nivel Interno Algunos Conceptos Importantes
ARQUITECTURA DE HARD WARE COMPONENTES EN BLOQUES DEL PROCESADOR
Diferencias entre las arquitecturas de 64 bits de AMD e intel.
Clase 7 Assembly - Simulador MSX88.
Organización del Computador
Tipos de Datos abstractos
Definición de un Sistema Distribuido
Organización del Computador
Estructura de Computadores (EUI: 2º ITIS) Tema 4: Diseño del procesador (parte II)1 Diseño de la Unidad de Control Multiciclo: Microprogramación Introducción.
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
LÓGICA DE PROGRAMACIÓN
Memoria virtual.
ORGANIZACIÓN Y ADMINISTRACIÓN DE LA MEMORIA VIRTUAL
ICAS REDES Y SUBREDES LIA. Reginaldo Sánchez Carranza.
Almacenamiento El computador tiene 2 aspectos
JAVIER ANDRES MARTÀ MARTINEZ CODIGO 37772
PICOBLAZE RESUMEN.
Conocer los fundamentos de la programación estructurada
Estas dos líneas de código permiten al Asm iniciar en Code Segment
Conceptos Relacionados Unidad I. Parte A.
Lenguaje Ensamblador. Repertorio de instrucciones Microprocesador Z80.
1 Dirección IP - Características Las direcciones IP se denominan direcciones lógicas. Tienen un direccionamiento Jerárquico. Representan una conexión de.
P P AGINACION FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS FACULTAD DE INGENIERÍA INDUSTRIAL Y DE SISTEMAS.
8. Diseño del Procesador Fundamentos de los Computadores
Introducción de Base de Datos
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
Fundamentos de la Programación I
EL SISTEMA COMPUTACIONAL Contenido Mg. Ing. CIP. Francisco Mori L El Sistema Computacional II. Componentes III. Ejecución de Programas IV. Estructura de.
Tema: Componentes lógicos de un ordenador. Mediante el sistema de numeración binario, es decir, usando los dígitos 0 y 1. Lo único que transmite,
LICENCIATURA EN SISTEMAS COMPUTACIONALES EN ADMINISTRACION
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
Operaciones con Acumuladores
ESTRUCTURA DE SISTEMAS OPERATIVOS Carbajal Rojas karla.
El procesador Datapath y control.
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
INTRODUCCIÓN A LA INFORMÁTICA
Características de los Sistemas Operativos
1 ALU (Unidad aritmético lógica) Registros Unidad de control I/O y buses internos (usualmente 3 estados) I/O y buses internos Los buses I/O son de tres.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS - MENDOZA MOLINA ARIANA
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
ARQUITECTURA DE UN MICROPROCESADOR. ESTRUCTURA BÁSICA DE UN SISTEMA MICROPROGRAMABLE A. Hardware CPU (chip microprocesador): es un circuito integrado.
Transcripción de la presentación:

Módulo 06 Modos de direccionamiento

Copyright Copyright © 2011-2017 A. G. Stankevicius Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera. Una copia de esta licencia está siempre disponible en la página http://www.gnu.org/copyleft/fdl.html. La versión transparente de este documento puede ser obtenida de la siguiente dirección: http://cs.uns.edu.ar/~ags/teaching Organización de Computadoras - Mg. A. G. Stankevicius

Contenidos Tipos de instrucciones. Formato de instrucción. Modos de direccionamiento. Directo vs. Indirecto. Absoluto vs. Relativo. Código automodificable. Código independiente de la posición. La arquitectura OCUNS. Organización de Computadoras - Mg. A. G. Stankevicius

Tipos de instrucciones Las instrucciones que componen el set de instrucciones de una cierta arquitectura se clasifican en las siguientes categorías: De procesamiento: las instrucciones usuales aritméticas y lógicas. De acceso a memoria: para transferir información desde y hacia memoria. De transferencia de datos: para enviar y recibir información de los dispositivos de entrada/salida. De control: las instrucciones que alteran el flujo de control del programa en ejecución. Organización de Computadoras - Mg. A. G. Stankevicius

Tipos de instrucciones Nótese que no todas las instrucciones hacen referencia al mismo número de argumentos: Por caso, la instrucción ADD en una arquitectura registro a registro debe hacer referencia a tres argumentos, dos de entrada y uno de salida. En contraste, la instrucción NEG en una arquitectura de 1-address más registro sólo especifica un argumento, el cual hace las veces de argumento de entrada y también de salida. Organización de Computadoras - Mg. A. G. Stankevicius

Formato de instrucción Recordemos que las instrucciones a nivel de lenguaje máquina están compuestas por una secuencia de unos y ceros. Esta secuencia debe codificar esencialmente los siguientes aspectos: De qué instrucción se trata. El conjunto de argumentos (tanto origen como destino) sobre los cuales se ha de operar . Opcionalmente, una referencia a la próxima instrucción (arquitecturas de 4-addresses). Organización de Computadoras - Mg. A. G. Stankevicius

Formato de instrucción Conceptualmente, una instrucción máquina se compone de los siguientes campos: Un campo de opcode, de tamaño fijo o variable, el cual codifica de qué instrucción se trata. Cero o más campos argumento, dependiendo del tipo de instrucción codificado por el campo de opcode. Los campos argumento describen cómo y dónde encontrar los argumentos. Los modos de direccionamiento indican cómo se deben interpretar los campos argumento. Organización de Computadoras - Mg. A. G. Stankevicius

Diseño del set de instrucciones Definición del conjunto de operaciones: Cuántas y cuáles operaciones considerar. Cuán complejas han de ser. Tipos de datos nativos. Codificación elegida para las instrucciones: Longitud de la instrucción (variable vs. fija). Cantidad de campos argumento en cada instrucción. Tamaño de los campos argumento en cada caso. Organización de Computadoras - Mg. A. G. Stankevicius

Características deseables Al diseñar el set de instrucciones máquina se busca satisfacer los siguientes objetivos: Asegurar la completitud del set de instrucciones. Poder hacer uso de la totalidad de la memoria disponible. Que el set de instrucciones sea ortogonal con respecto a los modos de direccionamiento implementados por la arquitectura. Contar con un tamaño fijo de instrucciones. Organización de Computadoras - Mg. A. G. Stankevicius

Ortogonalidad Denominaremos a un set de instrucciones como ortogonal cuando todos los modos de direccionamiento implementados estén disponibles a todos los tipos de instrucciones. En otras palabras, set de instrucciones es ortogonal si el modo de direccionamiento está especificado dentro del campo argumento (por caso, el set de instrucciones de la arquitectura PDP-11). En contraste, la practica usual es determinar el modo de direccionamiento a partir del campo de opcode (por caso, la arquitectura OCUNS). Organización de Computadoras - Mg. A. G. Stankevicius

Ortogonalidad La ortogonalidad brinda sin duda una mayor libertad a los programadores (en particular a quienes implementen compiladores). No obstante, la ortogonalidad suele extender la longitud promedio de las instrucciones. A mayor tamaño promedio de instrucciones, hará falta un mayor ancho de banda a memoria. Recordemos que la tecnología de los procesadores avanza con mayor rapidez que la tecnología de la memoria principal. Organización de Computadoras - Mg. A. G. Stankevicius

Tamaño fijo vs. variable Con respecto al tamaño de instrucción, surgen naturalmente dos alternativas: Una posibilidad es que todas las instrucciones tengan el mismo tamaño, es decir, que el tamaño esté prefijado. Otra posibilidad es que cada instrucción tenga el menor tamaño posible, lo que implica que el tamaño de las instrucciones no estará prefijado, sino que será variable. Organización de Computadoras - Mg. A. G. Stankevicius

Tamaño fijo Ventajas: Se simplifica notablemente la etapa de decodificación de la instrucción, ya que el opcode ocupa una posición conocida (y fija) dentro de la secuencia de unos y ceros que codifica la instrucción. Desventajas: El tamaño debe ser lo suficientemente grande como para codificar todas las instrucciones. Un formato fijo de gran tamaño requiere contar un amplio ancho de banda a memoria. Organización de Computadoras - Mg. A. G. Stankevicius

Tamaño variable Ventajas: Cada instrucción ocupa el menor tamaño posible. Es posible contar con instrucciones de gran tamaño, por caso, con múltiples referencias a memoria. Desventajas: Se complica y posiblemente ralentiza la decodificación de las instrucciones. Esta alternativa no es apropiada para las arquitecturas superescalares, ya que requieren decodificar múltiples instrucciones en cada ciclo. Organización de Computadoras - Mg. A. G. Stankevicius

El camino del medio Un cierto formato de instrucciones fijo de k + n bits, cuenta con k bits para el opcode y n bits para un único operando. Este formato de instrucción permite a lo sumo 2k opcodes y hacer referencia de a lo sumo 2n direcciones de memoria. ¿Cómo elegir adecuadamente k y n? Ciertamente, lo ideal sería que tanto k como n fueran variables, según el tipo de instrucción. Organización de Computadoras - Mg. A. G. Stankevicius

El camino del medio Otro ejemplo, supongamos que se dispone de un formato fijo de 16 bits, que debe abarcar lo siguiente: 15 instrucciones de 3 operandos de 4 bits. 14 instrucciones de 2 operandos de 4 bits. 31 instrucciones de 1 operando de 4 bits. 16 instrucciones sin operandos. Aparentemente quedan libres 4 bits para codificar apenas 16 de estas instrucciones... Organización de Computadoras - Mg. A. G. Stankevicius

Expansión del opcode ¿Qué tal si los opcodes del 0000 (0) a 1110 (14) codificaran las operaciones de tres operandos, pero el opcode 1111 (15) se interpretara de una manera especial? El opcode “reservado” 1111 podría ser interpretado como que se deben ir a buscar bits de opcode adicionales (ahora disponibles pues las restantes instrucciones tienen menor cantidad de operandos). 0 3 4 7 8 11 12 15 opcode C ó exp op B ó exp op A ó exp op Organización de Computadoras - Mg. A. G. Stankevicius

Expansión del opcode Así siguiendo, se puede arribar por ejemplo a la siguiente codificación: 0000-1110 operando B operando A operando C 0 3 4 7 8 11 12 15 1111 operando B operando A 0000-1101 0 3 4 7 8 11 12 15 1111 0000-1111 operando A 1110-1111 0 3 4 7 8 11 12 15 1111 0000-1111 0 3 4 7 8 11 12 15 Organización de Computadoras - Mg. A. G. Stankevicius

Tamaño variable de operandos En general, se requieren menos bits para codificar un registro que una dirección completa de memoria. La expansión del opcode también permite la coexistencia de operandos de distinto tamaño. Nótese que este problema está siendo resuelto sin comprometer el proceso de decodificación. La técnica de expansión de opcode sigue calificando como un formato de instrucción de tamaño fijo. Organización de Computadoras - Mg. A. G. Stankevicius

Modos de direccionamiento Muy pocos bits permiten codificar una gran cantidad de instrucciones que hagan uso de pequeñas constantes o de los registros del procesador. No obstante, no se puede afirmar lo mismo al considerar el uso de operandos que residan en memoria principal. En particular existe una cierta correlación entre el desempeño de un sistema en concreto y la cantidad de memoria principal disponible. Organización de Computadoras - Mg. A. G. Stankevicius

Modos de direccionamiento En internet se suele atribuir a don Bill Gates la siguiente frase: “640KB is enough for anyone” Más allá de la veracidad o no de la atribución, el hecho que cada vez nos resulte más simpática encierra una gran verdad. Los diseñadores de la PDP-11 acotaron: “el peor error que se puede cometer al diseñar una arquitectura es no contar con la suficiente cantidad de bits de direccionamiento” Organización de Computadoras - Mg. A. G. Stankevicius

Espacio de direccionamiento Un campo argumento de n bits posibilita hacer uso de un espacio de 2n locaciones. Arquitectura Tam. de Palabra Bits de address Espacio de Dir. C=64 8 16 64KB PDP-11 VAX 32 4GB Intel 8086 16/20 1MB Intel 80286 16/24 16MB Intel 80386 AMD64 64 36/40-52/48-64 64GB/4PB/6EB Organización de Computadoras - Mg. A. G. Stankevicius

Espacio de direccionamiento Al crecer n, se exploraron alternativas para minimizar la cantidad de bits ocupados por las instrucciones: Evitar de ser posible las instrucciones que hagan referencia a locaciones de memoria. Implementar alguna forma de expansión de signo, para almacenar sólo una parte de la dirección de las locaciones de memoria referenciadas. Hacer uso de registros auxiliares implícitos. Organización de Computadoras - Mg. A. G. Stankevicius

Modos implementados en HW Los diseñadores de las distintas arquitecturas han ensayado muy diversos modos de direccionamiento a manera de respuesta a estos cuestionamientos. No obstante, pocas arquitecturas implementan la totalidad de los modos de direccionamiento. En general se adopta un subconjunto que es implementado en hardware, dejando el resto para ser simulado vía software. Organización de Computadoras - Mg. A. G. Stankevicius

Modos implementados en HW Por caso, el Motorola 6809 implementa en HW: Nombre Mnemónico Op. Accedido Registro Ri Registro Indirecto (Ri) M[Ri] Absoluto addr M[addr] Absoluto Indirecto (addr) M[M[addr]] Inmediato #const const Auto-incremento (Ri)+ M[Ri]; Ri++ Auto-decremento -(Ri) --Ri; M[Ri] PC Relativo PC(const) M[PC + const] Base Ri(addr) M[Ri + addr] Indexado addr(Ri) M[addr + Ri] Base indexado Ri(Rj) M[Ri + Rj] Organización de Computadoras - Mg. A. G. Stankevicius

Inmediato Interpretación: el contenido del campo argumento es el operando. Ejemplos: add #5 (pila) add R0, #5 (CISC) add R0, R0, #5 (RISC) instrucción add #5 0000: ⋮ 9FFF: A000: A001: A002: FFFF: 28 A0 ⋮ 00 1E F5 02 02 A0 F1 05 EA ⋮ ⋮ B2 00 memoria pila del programa Organización de Computadoras - Mg. A. G. Stankevicius

Inmediato Características: También se lo conoce como modo literal. Altamente eficiente, pues no requiere acceder a memoria (el operando es obtenido al acceder inicialmente a memoria para traer la instrucción). El rango puede estar acotado a la cantidad de bits disponibles en el formato de la instrucción. Se lo utiliza para operar con valores constantes. En caso de no estar soportado por el hardware, se lo puede simular a nivel de lenguaje ensamblador. Organización de Computadoras - Mg. A. G. Stankevicius

Absoluto Interpretación: el contenido del campo argumento es la ubicación en memoria del operando. Ejemplos: push A002 (stack) mov R0, [A002] (CISC) load R0, A002 (RISC) instrucción push A002 0000: ⋮ 9FFF: A000: A001: A002: FFFF: 28 A0 ⋮ 00 1E F5 02 02 A0 F1 05 EA ⋮ ⋮ B2 00 memoria pila del programa Organización de Computadoras - Mg. A. G. Stankevicius

Absoluto Características: También se lo conoce como modo memoria directo. Implica un acceso adicional a memoria (aparte del acceso inicial para traer la instrucción). La instrucción contiene la dirección efectiva del argumento. El espacio de direcciones está acotado por la cantidad de bits permitidos por el formato de instrucción. No es práctico para recorrer estructuras de datos (¿por qué razón?). Organización de Computadoras - Mg. A. G. Stankevicius

Código automodificable El modo directo es apropiado para acceder a tipos de datos simples (por caso, variables), no así a tipos de datos complejos. Para recorrer tipos complejos (tales como arreglos o registros), tenemos que modificar en tiempo de ejecución al campo argumento de la instrucción. Este tipo de código se lo denomina automodificable. El emplear código automodificable complica la interpretación del significado de un programa. La alternativa más adecuada consiste en hacer uso de referencias indirectas. Organización de Computadoras - Mg. A. G. Stankevicius

Directo vs. indirecto La idea detrás del modo indirecto consiste en agregar un paso adicional en la búsqueda del argumento: En el modo directo accedemos al valor deseado. En el indirecto accedemos a una dirección de memoria en la cual encontraremos el valor deseado. Este paso adicional implica un segundo acceso a memoria. push A000 0000: ⋮ 9FFF: A000: A001: A002: FFFF: 28 ⋮ 1E 02 A0 05 ⋮ B2 memoria Organización de Computadoras - Mg. A. G. Stankevicius

Absoluto indirecto Interpretación: el contenido del campo argumento es la ubicación en memoria de la dirección del operando. Ejemplo: push (A000) (stack) instrucción push A000 0000: ⋮ 9FFF: A000: A001: A002: FFFF: 28 A0 ⋮ 00 1E F5 02 02 A0 F1 05 EA ⋮ ⋮ B2 00 memoria pila del programa Organización de Computadoras - Mg. A. G. Stankevicius

Absoluto indirecto Características: También se lo conoce como memoria indirecto. Implica dos accesos adicionales a memoria (aparte del acceso inicial para traer la instrucción). Extremadamente flexible, permite recorrer cualquier estructura de datos, si bien está actualmente en desuso por lo oneroso en tiempo de ejecución. De ser requerida su flexibilidad, se lo puede simular haciendo uso de otros modos de direccionamiento. Organización de Computadoras - Mg. A. G. Stankevicius

Registro Interpretación: el contenido del campo argumento es la ubicación del operando dentro del banco de registros. Ejemplos: add R0, #15 (CISC) add R0, R0, #15 (RISC) instrucción add R0 R0 #15 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 ⋮ 001F 1E FFF5 02 0002 A0 0DF1 05 EA00 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Registro Características: También se lo conoce como registro directo. Análogo al modo absoluto, usando al banco de registros del procesador como espacio de direcciones. Altamente eficiente ya que no requiere acceder a memoria (aparte del acceso inicial). Se puede codificar con muy pocos bits (puesto que direcciona un espacio bastante acotado). Junto al modo registro indirecto permite simular otros modos de direccionamiento. Organización de Computadoras - Mg. A. G. Stankevicius

Registro indirecto Interpretación: el contenido del campo argumento es la ubicación dentro del banco de registros de la dirección del operando. Ejemplo: add [R0], #15 (CISC) instrucción add R0 #15 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 ⋮ 001F 1E FFF5 02 0002 A0 0DF1 05 EA00 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Registro indirecto Características: Análogo al modo absoluto indirecto, pero recuperando la dirección del operando del banco de registros. Se puede codificar con muy pocos bits (puesto que direcciona un espacio bastante acotado). No obstante, al ser indirecto retiene la capacidad de direccionar la totalidad del espacio de direcciones. Resulta altamente flexible, permitiendo recorrer estructuras de datos complejas. Más eficiente que el modo absoluto indirecto, ya que sólo requiere un acceso a memoria (aparte del inicial). Organización de Computadoras - Mg. A. G. Stankevicius

Indexado Interpretación: el campo argumento contiene una dirección de base fija y un desplazamiento variable que sumados dan la ubicación en memoria del operando. Ejemplo: mov R0, [A000+R3] (CISC) load R0, A000(R3) (RISC) instrucción add R0 A000 R3 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 ⋮ 001F 1E FFF5 02 0002 A0 0DF1 + 05 EA00 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Indexado Características: Relativamente eficiente, puesto que requiere sólo un acceso a memoria (aparte del acceso inicial). La dirección de base de la estructura tiene que ser una dirección completa. El desplazamiento para poder variar se debe almacenar en un registro del procesador. Está pensado para recorrer múltiples elementos de una única estructura de datos. Organización de Computadoras - Mg. A. G. Stankevicius

Base Interpretación: el campo argumento contiene un desplazamiento fijo y una dirección de base variable que sumados dan la ubicación en memoria del operando. Ejemplo: mov R5, [R0 + 02] (CISC) load R5, R0(02) (RISC) instrucción add R5 R0 02 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 ⋮ 001F 1E FFF5 02 0002 A0 0DF1 + 05 EA00 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Base Características: Relativamente eficiente, puesto que requiere sólo un acceso a memoria (aparte del acceso inicial). La base para poder variar se debe almacenar en un registro del procesador. El desplazamiento usualmente está acotado a una cierta cantidad de bits. Usualmente se codifica este desplazamiento en dos complemento. Está pensado para acceder a un único elemento en múltiples estructuras de datos. Organización de Computadoras - Mg. A. G. Stankevicius

¿Base o indexado? Un error muy frecuente consiste en confundir los modos base e indexado. La clave para distinguirlos radica en observar qué codificamos dentro de la instrucción: En el modo indexado codificamos una dirección completa, esto es, un entero positivo que necesita de tantos bits como bits tengan las direcciones de memoria. En el modo base codificamos un desplazamiento signado, el cual es práctico incluso en caso de contar con pocos bits. Organización de Computadoras - Mg. A. G. Stankevicius

Base-indexado Interpretación: el campo argumento contiene una dirección de base y un desplazamiento, ambos variables, que sumados dan la ubicación en memoria del operando. Ejemplo: mov R5, [R0 + R3] (CISC) load R5, R0(R3) (RISC) instrucción add R5 R0 R3 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 ⋮ 001F 1E FFF5 02 0002 A0 0DF1 + 05 EA00 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Base-indexado Características: Relativamente eficiente, puesto que requiere sólo un acceso a memoria (aparte del acceso inicial). Tanto la base como el desplazamiento para poder variar deben ser almacenados en sendos registros del procesador. Máxima flexibilidad, permite recorrer múltiples elementos almacenados en múltiples estructuras de datos. Organización de Computadoras - Mg. A. G. Stankevicius

Base-indexado indirecto La combinación de los modos base-indexado y absoluto indirecto genera dos posibles modalidades de uso: Pre-indexado indirecto: el registro base y el registro índice son sumados para obtener la dirección en memoria de la dirección del operando. Post-indexado indirecto: el registro base contiene la dirección en memoria de un valor el cual sumado al registro índice permiten obtener la dirección del operando. Organización de Computadoras - Mg. A. G. Stankevicius

Base-indexado indirecto Características: La misma crítica realizada acerca del modo absoluto indirecto se aplica en este nuevo contexto. La modalidad pre-indexado indirecto es útil para acceder a tablas de interrupciones. La modalidad post-indexado indirecto es útil para acceder a los campos de un registros, ya que por lo general éstos son gestionados a través de un puntero (es decir, la dirección en memoria del comienzo de la estructura). Organización de Computadoras - Mg. A. G. Stankevicius

PC relativo Interpretación: el campo argumento contiene un desplazamiento fijo el cual debe ser sumado al contenido del registro PC para obtener la dirección referida. Ejemplo: jz label instrucción jz FE 0000: ⋮ 9FFF: A000: A001: A002: FFFF: PC 28 A002 ⋮ 1E 02 A0 + 05 ⋮ B2 memoria Organización de Computadoras - Mg. A. G. Stankevicius

PC relativo Características: Requiere un único acceso a memoria (aparte del acceso inicial para traer la instrucción). El desplazamiento, un entero signado, suele estar representado en dos complemento. Los saltos condicionales usualmente hacen uso de este modo de direccionamiento para hacer referencia al destino de los mismos. Organización de Computadoras - Mg. A. G. Stankevicius

Código independiente de la posición Los modos de direccionamiento base y relativo permiten la construcción de código cuyo funcionamiento es independiente de la posición en la cual termine siendo cargado en memoria. Este tipo de código se denomina justamente independiente de la posición, o bien PIC (por su sigla en inglés, Position Independent Code). La clave a fin de obtener este tipo de código radica en evitar toda forma de direccionamiento absoluto. Organización de Computadoras - Mg. A. G. Stankevicius

Código independiente de la posición El advenimiento de modelos avanzado de gestión de memoria hizo que este tipo de código sea relevante en ciertos dominios de aplicación muy específicos. Por caso, las librerías de vinculación dinámica, las que son compartidas por múltiples aplicaciones al mismo tiempo. Esta también es una característica deseable para el código creado con el objeto de ser ejecutado en dispositivos embebidos. Organización de Computadoras - Mg. A. G. Stankevicius

Código independiente de la posición El código independiente de la posición se clasifica en dos grandes categorías: Estático: cuando el código inicialmente puede ser cargado en cualquier locación de memoria, pero una vez cargado en memoria deja de ser relocable. Dinámico: cuando el código puede ser cargado en cualquier locación de memoria y de ser necesario también puede ser relocado en todo momento. En general, para obtener código PIC dinámico se debe hacer uso exclusivo de referencias relativas. Organización de Computadoras - Mg. A. G. Stankevicius

Auto-decrement Interpretación: el campo argumento contiene una referencia a un registro el cual primero es decrementado y luego es usado como la dirección en memoria del operando. Ejemplo: mov -(R0), R1 (CISC) store R1, -(R0) (RISC) instrucción store R0 R1 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A000 A002 ⋮ 001F 1E FFF5 1F 00 02 0002 - A0 0DF1 05 EA00 2 ⋮ ⋮ B2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Auto-decrement Características: Relativamente eficiente, puesto que requiere sólo un acceso a memoria (aparte del acceso inicial). Equivale a ejecutar la siguiente secuencia de instrucciones (asumida una arquitectura de 16 bits): dec R0; dec R0; store R1, (R0) Permite gestionar con facilidad una estructura de pila, especialmente a la hora de implementar la operación de apilado (push). Organización de Computadoras - Mg. A. G. Stankevicius

Auto-increment Interpretación: el campo argumento contiene una referencia a un registro es usado como la dirección en memoria del operando y luego es incrementado. Ejemplo: mov R2, (R0)+ (CISC) load R2, (R0)+ (RISC) instrucción load R0 R2 0000: ⋮ 9FFF: A000: A001: A002: FFFF: R0 R1 R2 R3 R4 R5 ⋮ RF 28 A002 A000 ⋮ 001F 1E FFF5 001F 1F 0002 00 0DF1 + 05 EA00 ⋮ ⋮ B2 2 0000 memoria banco de registros Organización de Computadoras - Mg. A. G. Stankevicius

Auto-increment Características: Relativamente eficiente, puesto que requiere sólo un acceso a memoria (aparte del acceso inicial). Equivale a ejecutar la siguiente secuencia de instrucciones (nuevamente, asumida una arquitectura de 16 bits): load R2, (R0); inc R0; inc R0 Permite gestionar con facilidad una estructura de pila, especialmente a la hora de implementar la operación de desapilado (pop). Organización de Computadoras - Mg. A. G. Stankevicius

La arquitectura OCUNS La arquitectura OCUNS nos servirá de banco de prueba sobre el cual pondremos en práctica las nociones recién introducidas acerca de los modos de direccionamiento. Es una arquitectura estilo RISC. Sus instrucciones son de tamaño fijo de 16 bits. El espacio de direcciones es de 256 bytes. Cuenta con 16 registros de propósito general, si bien el registro F se encuentra cableado a cero. No existe físicamente, es de papel y lápiz. Organización de Computadoras - Mg. A. G. Stankevicius

Set de instrucciones Organización de Computadoras - Mg. A. G. Stankevicius

Formato de instrucción El formato de instrucción adoptado hace uso de la técnica de expansión del opcode para determinar el tipo y número de los argumentos. Nótese que en este caso en particular no se está usando esta técnica para ir en busca de bits de opcode adicionales. Organización de Computadoras - Mg. A. G. Stankevicius

Modos de direccionamiento La arquitectura OCUNS cuenta con un reducido número de modos de direccionamiento: El modo registro directo está disponible en las operaciones aritmético lógicas (formatos I, II y III). El modo registro más desplazamiento está disponible en las instrucciones de transferencia de información desde y hacia memoria (formatos I y II). El modo absoluto y PC-relativo está disponible en las instrucciones de transferencia de control (formato II). Organización de Computadoras - Mg. A. G. Stankevicius

Lenguaje máquina Consideremos el siguiente fragmento de programa en lenguaje ensamblador: add R0, R1, R2 sub R3, R4, R5 hlt El lenguaje máquina asociado resulta : add R0, R1, R2 0000000000010010 = 0012h sub R3, R4, R5 0001001101000101 = 1345h hlt 1111000000000000 = F000h Organización de Computadoras - Mg. A. G. Stankevicius

Naturaleza RISC La naturaleza RISC de la arquitectura OCUNS se evidencia por caso en el hecho de que no cuenta con el modo inmediato. Por caso, ¿de qué manera se puede poner a cero el registro R0? add R0, RF, RF sub R0, R1, R1 xor R0, R2, R2 ... Organización de Computadoras - Mg. A. G. Stankevicius

Otras características Esta arquitectura seguirá siendo usada como banco de prueba de los restantes conceptos de bajo nivel que veremos en las siguientes clases: Proceso de ensamblado de un programa. Vinculación y carga en memoria. Relocación dinámica de código. El rol del sistema operativo en la atención de las interrupciones y de los traps. Programación de bajo nivel de la entrada/salida. Organización de Computadoras - Mg. A. G. Stankevicius

¿Preguntas? Organización de Computadoras - Mg. A. G. Stankevicius