La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arquitectura de Conjunto de Instrucciones (ISA)

Presentaciones similares


Presentación del tema: "Arquitectura de Conjunto de Instrucciones (ISA)"— Transcripción de la presentación:

1 Arquitectura de Conjunto de Instrucciones (ISA)
Universidad Simón Bolívar Departamento de Electrónica y Circuitos EC2721 – Arquitectura del Computador I Prof. Osberth De Castro Clase 02 Arquitectura de Conjunto de Instrucciones (ISA) La memoria como interfaz de programación del computador. Ejecución de una instrucción Unidad de Control Cableada y Microprogramada Arquitectura de Conjunto de Instrucciones (ISA) Modelos de Memoria: Memoria de Programa y Memoria de Datos. Modelos de instrucción: Modos de direccionamiento y Flujo de Programa. Basado en A. Tanenbaum, Structured Computer Organization, Fifth Edition, (c) 2006 Pearson Education, Inc.

2 Interfaz de usuario del computador
Unidad de Control como interfaz de usuario: Difícil de usar e implementar por su cercanía al complejo Camino de Datos. Muchas tecnologías posibles en su implementación Unidades de Control Cableadas Unidades de Control Microprogramadas. Se considera parte de la microarquitectura. Memoria como Interfaz de Usuario: Una memoria externa puede tener diferentes tamaños y usos, sin afectar el diseño de la microarquitectura. Bajo costo por bit en comparación con los registros y almacenes de Control más rápidos. Universidad Simón Bolívar

3 La Memoria como Interfaz de Usuario.
El usuario llena la memoria con el programa que quiere ejecutar en el computador. ¿Dónde se coloca el programa? ¿Cómo luce un programa, cómo lo acepta el computador? ¿Dónde se colocan los operandos a usar? ¿Dónde de buscan los resultados del programa? El Computador (Microarquitectura) busca en la memoria el programa del usuario y lo ejecuta. ¿Dónde se busca el programa? ¿Cómo luce un programa, cómo se ejecuta? ¿Dónde se buscan los opoerandos del usuario? ¿Dónde de colocan los resultados del programa? Universidad Simón Bolívar

4 Ejecución de un programa en Memoria
Ejecutar un programa es ejecutar una secuencia de instrucciones que el usuario ha colocado en memoria. La microarquitectura debe ajustarse para esta ejecución secuencial en un ciclo infinito, de modo que pueda ejecutar cualquier cantidad de instrucciones de la memoria. Ciclo infinito de ejecución de instrucciones. Inicio Buscar siguiente Instrucción en memoria Ejecutar instrucción Universidad Simón Bolívar

5 Ciclo de incstrucción y Unidad de Control
Unidad de Control Cableada (ejemplo: MIPS) Máquina de estados por hardware. Es una máquina de estados cableada. Unidad de Control Microprogramada (ejemplo: Mic-1) Microprograma en almacén de control que realiza el ciclo. En este esquema, cada instrucción del usuario puede ser un Microprograma, de modo que “Ejecutar una Instrucción” es “Correr un Microprograma” Inicio Buscar siguiente Instrucción en memoria Ejecutar instrucción Universidad Simón Bolívar

6 Ciclo de ejecución por microprograma en Mic-1
Primera aproximación de Microprograma en Mic-1 Inicializar valores en registros del Mic-1. Colocar en MAR ó PC la dirección de la siguiente instrucción. Leer. Interpretar la instrucción que llega a MDR ó MBR. Ir a paso 2. Dirección de la siguiente Instrucción: puede ser: La dirección siguiente en memoria. diri2 = diri1+ (n bytes) Dirección indicada por la instrucción actual (saltos) Interpretación: La instrucción puede indicar varias cosas al Microprograma: Una Microinstrucción válida del Mic-1 para ejecutar. La dirección de una Microinstrucción en el almacén de control. (sólo sirve para instrucciones simples) La dirección inicial de un conjunto secuencial de Microinstrucciones. (Cada instrucción se interpreta como un Microprograma) Universidad Simón Bolívar

7 Intérprete como Microprograma en Mic-1
Condiciones útiles para implementación en Mic-1: Usar facilidad “GOTO (MBR or NEXT_ADDRESS[0..7])” del Mic-1 para saltar al inicio del Microgrograma correspondiente a cada Instrucción. Esto obliga el uso de PC para leer instrucciones. Segunda aproximación de Microprograma en Mic-1 Inicializar valores en registros del Mic-1. Incluye ir a la primera instrucción. Colocar en PC la dirección de la siguiente instrucción. Leer. Interpretar la instrucción que llega a MBR. Ir a paso 2. 0x000 PC=dir de primera instrucción; fetch; GOTO 0x001 0x001 GOTO 0x002 /* NOP mientras llega instrucción*/ 0x002 GOTO (MBR or 0x000) 0x003 PC = PC + 1; fetch; GOTO 0x001 . . . 0x060 H = TOS…; GOTO 0x061 /* Inicio de instrucción */ 0x066 MDR = H; wr;…; GOTO 0x003 /*Fin de instrucción*/ 0x1FF Universidad Simón Bolívar

8 Intérprete como Microprogramas en Mic-1
Optimizaciones posibles: Adelantar la lectura de instrucciones de la memoria. Ir a I1, mientras se lee I2 de la memoria. Eliminar saltos innecesarios. Ultima Microinstrucción de In salta directo a lectura de siguiente Inicializar valores en registros del Mic-1. Colocar en PC la dirección de la instrucción I2. Leer. Interpretar la instrucción I1 que llega a MBR. Mientras termina, I2 llegará a MBR. Ir a paso 2. 0x000 PC=dir de primera instrucción;fetch; GOTO 0x001 0x001 GOTO 0x002 /* NOP mientras llega instrucción*/ 0x002 PC = PC + 1; fetch; GOTO (MBR or 0x000) . . . 0x060 H = TOS…; GOTO 0x061 /*Inicio de instrucción*/ 0x066 MDR = H; wr;…; GOTO 0x002 /*Fin de instrucción*/ 0x1FF Universidad Simón Bolívar

9 Intérprete como Microprogramas en Mic-1
Instrucciones del usuario en la memoria 0x000 PC = 0;fetch; GOTO 0x001 0x001 GOTO 0x002 /* NOP */ 0x002 PC = PC + 1; fetch; GOTO (MBR or 0x000) . . . 0x060 H = TOS…; GOTO 0x061 0x066 MDR = H; wr;…; GOTO 0x002 0x07A OPC = H…; GOTO 0x061 0x083 TOS = H;…; GOTO 0x002 0x0F2 GOTO 0x0F2 /* HALT */ 0x1FF 0xFFFFFFFF 01 0x 0x 0x C 0x F2 0x 10 7A 60 0x 03 9B PC= 0 Instrucción= 0x060 Microprograma en el almacén de Control. Universidad Simón Bolívar

10 Arquitectura de Conjunto de Instrucciones (ISA)
Problema: ¿Cuántas instrucciones implementar? ¿Dónde es mejor colocarlas? ¿Dónde están los operandos y datos? ¿Cómo implementar las instrucciones respecto a los datos y operandos? Estrategia: Establecer un modelo de datos y operandos. Establecer un formato de instrucción que maneje eficientemente el modelo de datos y operandos. Incluye un modelo de memoria relativamente fijo. Universidad Simón Bolívar

11 ISA - Datos y Operandos de Programas
Como argumentos de las instrucciones Hay que “leerlos” como parte de las instrucciones. Una instrucción puede ser mas de un byte ó palabra en la Memoria. Datos en lugares especiales de Memoria. El usuario sabe donde están los lugares, y el intérprete también. Se establece un modelo de memoria específico. Permite acceso complejo y flexible a operandos y resultados. Variables, tablas de datos, etc. Universidad Simón Bolívar

12 ISA - Datos como argumento de instrucciones
Una instrucción podrá contener argumentos ó no: En el caso del intérprete del ejemplo para Mic-1: Los argumentos se leen utilizando el PC y MBR, dentro del microprograma de la instrucción. Se debe garantizar mantener la consistencia del intérprete con respecto al PC y al MBR. Una instrucción puede no usar datos, ó no tener que indicarlos, pues el computador los conoce. Un argumento puede indicar: Valor del dato Lugar del dato ó resultado en memoria. OPCODE OPCODE OP1 OPCODE OP1 OP2 RES1 Universidad Simón Bolívar

13 ISA - Datos como argumento de instrucciones
Ejemplo: Suponga una instrucción “SUMAR”, cuyo microprograma está en la dirección 0x060 del almacén y debe sumar OP1 + OP2, y guardar el resultado en la dirección de memoria indicada por RES1. OPCODE OP1 OP2 RES1 0x60 0x05 0x13 0xF7 0x000 PC = 0;fetch; GOTO 0x /* lee el OPCODE */ 0x001 GOTO 0x /* NOP */ 0x002 PC = PC + 1; fetch; GOTO (MBR or 0x000) /* Este fetch trae el OP1*/ . . . 0x060 PC = PC + 1; fetch; GOTO 0x /* Este fetch lee el OP2*/ 0x061 H = MBR; GOTO 0x /* Guardar OP1 en H*/ 0x062 MDR = H + MBR; GOTO 0x /* SUMA. MBR tiene OP2*/ 0x063 PC = PC + 1; fetch; GOTO 0X /* Este fetch lee RES1*/ 0x064 PC = PC + 1; fetch; GOTO 0X /* Este fetch lee la sig. Inst.*/ 0x065 MAR = MBR; wr; GOTO 0x /* Escribe suma y sale a sig. Inst.*/ Universidad Simón Bolívar

14 ISA – Modelos de datos en Memoria
Los Datos en Memoria pueden ser: Operandos de instrucciones. Arreglos o tablas de datos. Datos Constantes. Se maneja con apuntadores a inicios de Bloques de memoria. Ejemplo: PC apunta a memoria de Programa. Cada Bloque puede tener su propia métrica de acceso. En Mic-1 se sugiere la métrica de byte, y para bloques de datos la métrica de Palabras de 4 bytes. ... Memoria de Datos Operandos Locales Memoria de Datos Especiales Memoria de Datos Constantes 0x Memoria de Programa Universidad Simón Bolívar

15 ISA - Modelos de Memoria de Operandos
De acuerdo con la forma en la que se calcula su dirección, en la Memoria de Datos, estos datos generalmente son: Variables Generales y de control. Necesarias para manejar los bloques, guardar apuntadores, variables globales, etc. Variables Locales y Marcos de Variables Locales (Frames) y Pilas de Marcos de Variables Locales (Frames Stack) Para implementación de operandos de Funciones y Programación estructurada. Pilas de Operandos (Stack) Para implementar métodos de cálculo especiales. Universidad Simón Bolívar

16 ISA - Pilas de Operandos (operand stack)
Es un modelo temporal de datos que permite rápido y simple acceso a datos, sólo incrementando direcciones en valor fijo. Los datos se “apilan” unos sobre otros cuando es necesario, con acceso directo al último incluido. Para hacer un cálculo se introducen los operandos en “la pila”, luego se hace la operación con ellos, y el resultado (si hay) se almacena en la misma pila, para que un cálculo posterior lo utilice. Universidad Simón Bolívar

17 ISA - Implementación de Pilas
Consiste en el uso de un Apuntador de Pila ó “Stack Pointer” (SP). A medida que es introduce un nuevo dato se incrementa* el apuntador, para mantenerlo siempre indicando el último dato SP (*) Dependiendo del computador, puede decrementarse ó incrementarse. Universidad Simón Bolívar

18 ISA - Implementación de Pilas
En el ejemplo, la Pila contiene 3 elementos, y la “dirección base” de la Pila es la 0x Para acceder al último dato incluido, sólo se lee el dato apuntado por SP. Para incluir un dato, sólo se incrementa SP en 1, y se escribe en memoria. Para excluir un dato sólo se decrementa SP. La pila puede crecer indefinidamente (con riesgos). . . . 0x 0x C 0x 0x J 0x I 0x Memoria de Datos (no pila) 0x Memoria de Programa SP PC Universidad Simón Bolívar

19 ISA – Variables Locales
Son datos temporales cuyas direcciones se calculan con simple aritmética de índices de desplazamiento (offsets). Las Variables forman parte de un bloque ó “Marco de Variables Locales” de tamaño fijo. Se implementan con un Apuntador Base, normalmente llamado LVP ó LV (Local Variable Pointer), al que se suma un desplazamiento para acceder a un dato. l k j i LV En el ejemplo: Dirección de variable k = LV + 3 Dirección de variable l = LV + 4 Dirección de variable i = LV + 1 Universidad Simón Bolívar

20 ISA – Variables Locales y Pilas
k j LV SP cargar k en pila i k j LV SP cargar i en pila I + k k j i LV SP calcular l + k en pila SP k j i LV Antes de la operación k j = k + i i LV SP Guardar I + k en j En el ejemplo se realiza la operación j=k+i en un computador con Variables Locales y pilas de operandos Universidad Simón Bolívar

21 ISA –Variables Locales y Pilas de Operandos
. . . 0x 0x C 0x 0x J 0x I 0x L 0x00000FFC K 0x00000FF8 0x00000FF4 0x00000FF0 Memoria de Datos (no pila ni variables locales) 0x Memoria de Programa En el ejemplo: Hay una función con 4 Variables Locales. Se usa una Pila de Operandos, que en este instante tiene 3 elementos. Se tiene un programa que opera los datos, cuya instrucción actual es apuntada por PC SP LV PC Universidad Simón Bolívar

22 ISA – Marcos de Variables Locales y Pilas
Los marcos de Variables Locales se pueden “apilar” para implementar llamado a funciones. En el ejemplo: LVF1 es el apuntador base al bloque de variables locales asignado a la función F1. LVF2 es es el apuntador base al bloque de variables locales asignado a la función F1. F1 es una función que “llama” a F2. Dado que sólo se ejecuta una función a la vez en el computador, esta llamada modificará el valor del registro apuntador LV de LVF1 a LVF2. l k j i LVF2 l k j i LVF1 Universidad Simón Bolívar

23 ISA – Marcos de Variables locales y Pilas
. . . 0x C 0x 0x J 0x I 0x L 0x00000FFC K 0x00000FF8 Z 0x00000FF4 0x000000A6 0x00000FF0 0x00000FEC Y 0x00000FE8 X 0x00000FE4 Memoria de Datos (no pila ni variables locales) 0x000000F0 Memoria de programa Función F2 0x Memoria de Programa Función F1 En el ejemplo: Hay una función F1 con 3 Variables Locales, que “llama” a otra función F2, que tiene 4 Variables Locales. Se usa una Pila de Operandos, que en este instante tiene 3 elementos de la función F2. Se tiene un programa que opera los datos, cuya instrucción actual es apuntada por PC. Se ha dividido la memoria de programa por zonas asignadas a las instrucciones de de cada Función como Sub-programas. NOTA 1: este modelo supone que sólo una función se está ejecutando a la vez, de modo que los apuntadores LVF1 y LVF2 pueden ser en realidad dos instantes de tiempo para un único registro físico LV. Lo mismo aplica para el apuntador SP y PC. NOTA 2: la existencia de apuntadores para cada Pila y cada Marco de Variables obliga a tener mecanismos mas complejos de guardado de apuntadores. NOTA 3: fíjese en que la Pila de Operandos actual es utilizada sólo por la función F2, que es la que actualmente se está ejecutando y haciendo cálculos. SPF2 SPF1 LVF2 Registros físicos LVF1 SP= SPF2 LV= LVF2 PCF2 PC= PCF2 PCF1 Universidad Simón Bolívar

24 ISA – Variables Globales y Constantes
Son datos temporales ó constantes cuyas direcciones se calculan con simple aritmética de índices de desplazamiento (offsets). Las Variables y Constantes forman parte de bloques de tamaño fijo. Se implementan con un Apuntador Base al que se suma un desplazamiento para acceder a un dato. En el ejemplo: Dirección de variable global k = GVP + 3 y Dirección de constante 0x = CPP + 3 GVP = Global Variable Pointer y CPP = Constant Pool Pointer l k j i GVP 0x 0x 0x000FD230 0x000000AF CPP Universidad Simón Bolívar

25 ISA – Modelos de Memoria de Datos.
. . . 0x C 0x 0x J 0x I 0x L 0x00000FFC K 0x00000FF8 Z 0x00000FF4 0x000000A6 0x00000FF0 0x00000FEC Y 0x00000FE8 X 0x00000FE4 0x C C 0x B 0x A 0x 0x C 0c 0x 0x000FAB30 0x 0x 0x 0x000000F0 Memoria de programa Función F2 0x Memoria de Programa Función F1 SPF2 Ejemplo de modelo de memoria genérico que utiliza variables globales, locales, pilas de operandos, y marco ó pool de constantes. SPF1 LVF2 Registros físicos apuntadores SP= SPF2 LVF1 LV= LVF2 PC= PCF2 GVP CPP=0x100 GVP=0x800 CPP PCF2 PCF1 Universidad Simón Bolívar

26 ISA – Memoria y llamado a funciones
LV . . . PC b1=a3 b2=a2 SP b3 b4 Llamado efectivo de f2. Los parametros en Pila de f1 pasan a ser Variables locales de f2. PC “salta” a programa de f2. Prog.f2 Prog.f1 a3 a2 a1 LV . . . PC SP Para llamar a f2 se pasan primero los parámetros a f2 usando la pila. Prog.f2 Prog.f1 a3 a2 a1 . . . Retorno de f2 a f1. El resultado vuelve como elemento de pila de f1. Prog.f2 Prog.f1 LV PC Res.f2 SP SP a3 a2 a1 LV . . . Prog.f2 PC Prog.f1 Antes de que f1 llame a f2. Universidad Simón Bolívar

27 ISA – Modelos de Instrucción
Deben ajustarse a los modelos de memoria a implementar y proveer un rango amplio de operaciones útiles para el usuario/compilador. Modos de Direccionamiento: la forma en que se interpretan y usan las instrucciones de acuerdo con el acceso a los datos en el modelo de memoria. Flujo de Programa: forma en la que las instrucciones permiten hacer saltos condicionales, incondicionales, llamado a funciones, etc. Universidad Simón Bolívar

28 ISA – Modos de Direccionamiento
Direccionamiento implícito La instrucción no necesita especificar en sus argumentos el valor o dirección de un dato. Direccionamiento por pila No se usa argumento. El computador busca el dato en tope de la pila. Direccionamiento Inmediato El argumento expresa el valor del dato directamente. Direccionamiento Directo El argumento expresa la dirección de memoria en la que está un dato a operar. Direccionamiento indirecto El argumento expresa la dirección de memoria que “apunta” a otra dirección de memoria, cuyo contenido es el que se quiere operar. Direccionamiento relativo e indexado El argumento expresa un desplazamiento (offset) relativo a una dirección o apuntador conocido. Universidad Simón Bolívar

29 ISA – Modos de Direccionamiento
OPCODE OP1 OP2 RES1 0x60 0x05 0x13 0xF7 En esta instrucción, para el argumento OP1: Direccionamiento implícito: sería un dato, registro o dirección que la operación utilice, que no necesite ser indicado en el formato. Direccionamiento por pila: igual que el anterior. Si la operación hace algo con un dato de la pila, no necesita ser indicado en el formato. Direccionamiento Inmediato: OP1 podría significar que el dato a operar sea el valor 0x05. Direccionamiento Directo: OP1 podría significar que el dato a operar sea el valor que se encuentra en la dirección de memoria 0x05. Direccionamiento indirecto: OP1 podría significar que el dato a operar sea el valor que se encuentra en la dirección de memoria apuntada por la dirección de memoria 0x05. Direccionamiento relativo e indexado: OP1 podría significar que el dato a operar sea el valor que se encuentra en la dirección de memoria (dirección_base+0x05). Esta dirección base puede ser un apuntador. Por ejemplo: (LV+0x05), (SP+0x05), (CPP+0x05), (PC+0x05), etc. Universidad Simón Bolívar


Descargar ppt "Arquitectura de Conjunto de Instrucciones (ISA)"

Presentaciones similares


Anuncios Google