Arquitectura de Conjunto de Instrucciones (ISA)

Slides:



Advertisements
Presentaciones similares
El modelo de Von Neumann
Advertisements

El nivel de la Microprogramación
Composición Interna de un Procesador
MIPS Intermedio.
MICRO Y MACRO ARQUITECTURA
Unidad 2: Organización del CPU
Cetina Luna Luis Antonio Irma Lizette Espinosa Negrete Omar Alberto Herrera Caamal Rigoberto Lizarraga Hernandez.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 7 – Funciones y Procedimientos.
COMPUTACION PARALELA GLORIA PATRICIA FLOREZ ANGIE PAOLA ANCHICO.
PROGRAMACIÓN I CENTRO DE ESTUDIOS INTEGRADOS EL MARISCAL - CEIM Ing. Luisa Fernanda Arenas Castañeda Feb 6 de 2016.
Una estrategia para evitar la sucesiones repetidas de instrucciones convertir la secuencia en un procedimiento e invocarlo cada vez que se necesite.
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
ITESCO – Arquitectura Computadoras L. S. C. A. Raúl Monforte Chulin - MORCH Systems 1.1. Arquitectura básica y sus operaciones. Objetivo: El estudiante.
Organización de computadoras
Microprocesador Estructura interna.
Estructuras de interconexión de un computador
Pipelining Peligros de control.
Unidad aritmético-lógica
El procesador Diseño del control.
Pipelining Datapath y control.
Datapath para las instrucciones aritméticas y lógicas
Datapath para las instrucciones de brinco
EL CPU.
Universidad Simón Bolívar
Organización del Computador
En la siguiente presentación veremos algunos términos que debemos conocer para iniciar la educación virtual.
Tema 4 Elementos para el Desarrollo de Algoritmos
Datapath para las instrucciones de carga y almacenamiento (load/store)
Otros temas sobre cachés
Unidad 7: Nivel Interno Algunos Conceptos Importantes
Arquitectura 2013 Explicación 4.
Tema 6. Conceptos básicos de programación Clase 1
Computación Curso 2017.
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.
Tema 4 Elementos para el Desarrollo de Algoritmos
MENU SOFWARE Y HADWARE DISPOSITIVOS DE SALIDA DISPOSITIVOS DE ENTRADA
Unidad 2. Algoritmos Unidad 4. Control de flujo
Pipelining Introducción.
Almacenamiento El computador tiene 2 aspectos
Scratch Presentado por: Valentina Agudelo Huerfano J.M.
Estas dos líneas de código permiten al Asm iniciar en Code Segment
PROGRAMACIÓN 1 INTRODUCCIÓN
Conceptos básicos.
Organización de la memoria
Modelo de Von Neumman U.A.C.M Alejandra Andrade.
Introducción a las ciencias de la computación Antonio López Jaimes
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
Tipos de Datos abstractos
Fundamentos de la Programación I
Tipos de Datos abstractos
Pipelining Peligros de control.
Microarquitectura Modelo de estudio: Mic-1
Estructuras de Datos Dinámicas
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
Centro Universitario UAEM Ecatepec Asignatura: Introducción al software base Licenciatura en informática Administrativa Lia 4to semestre Mtra. Patricia.
Curso de Programación Estructurada
Informática Ingeniería en Electrónica y Automática Industrial
El procesador Datapath y control.
Programación Estructurada
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
Memoria Cachés.
Otros temas sobre cachés
Estructura de un equipo microinformático
Arquitectura de Hardware
Organización del caché
Compiladores: Generación de Código
Pipelining Peligros de control.
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:

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.

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

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

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

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

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

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

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

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 … 0x00000014 0x00000010 0x0000000C 0x00000008 F2 0x00000004 10 7A 60 0x00000000 03 9B PC= 0 Instrucción= 0x060 Microprograma en el almacén de Control. Universidad Simón Bolívar

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

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

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

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 0x001 /* lee el OPCODE */ 0x001 GOTO 0x002 /* NOP */ 0x002 PC = PC + 1; fetch; GOTO (MBR or 0x000) /* Este fetch trae el OP1*/ . . . 0x060 PC = PC + 1; fetch; GOTO 0x061 /* Este fetch lee el OP2*/ 0x061 H = MBR; GOTO 0x062 /* Guardar OP1 en H*/ 0x062 MDR = H + MBR; GOTO 0x063 /* SUMA. MBR tiene OP2*/ 0x063 PC = PC + 1; fetch; GOTO 0X064 /* Este fetch lee RES1*/ 0x064 PC = PC + 1; fetch; GOTO 0X065 /* Este fetch lee la sig. Inst.*/ 0x065 MAR = MBR; wr; GOTO 0x002 /* Escribe suma y sale a sig. Inst.*/ Universidad Simón Bolívar

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 0x00000000 Memoria de Programa Universidad Simón Bolívar

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

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

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

ISA - Implementación de Pilas En el ejemplo, la Pila contiene 3 elementos, y la “dirección base” de la Pila es la 0x00001000 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). . . . 0x00001010 0x0000100C 0x00000003 0x00001008 J 0x00001004 I 0x00001000 Memoria de Datos (no pila) 0x00000000 Memoria de Programa SP PC Universidad Simón Bolívar

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

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

ISA –Variables Locales y Pilas de Operandos . . . 0x00001010 0x0000100C 0x00000003 0x00001008 J 0x00001004 I 0x00001000 L 0x00000FFC K 0x00000FF8 0x00000FF4 0x00000FF0 Memoria de Datos (no pila ni variables locales) 0x00000000 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

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

ISA – Marcos de Variables locales y Pilas . . . 0x0000100C 0x00000003 0x00001008 J 0x00001004 I 0x00001000 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 0x00000000 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

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 0x00001010 = CPP + 3 GVP = Global Variable Pointer y CPP = Constant Pool Pointer l k j i GVP 0x00000001 0x00001010 0x000FD230 0x000000AF CPP Universidad Simón Bolívar

ISA – Modelos de Memoria de Datos. . . . 0x0000100C 0x00000003 0x00001008 J 0x00001004 I 0x00001000 L 0x00000FFC K 0x00000FF8 Z 0x00000FF4 0x000000A6 0x00000FF0 0x00000FEC Y 0x00000FE8 X 0x00000FE4 0x0000080C C 0x00000808 B 0x00000804 A 0x00000800 0x0000010C 0c00000100 0x00000108 0x000FAB30 0x00000104 0x00000010 0x00000100 0x000000F0 Memoria de programa Función F2 0x00000000 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

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

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

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

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