Repertorio de Instrucciones PDF
Document Details
Uploaded by SpellboundBoltzmann1846
Universidad de la Cuenca del Plata
Tags
Related
Summary
Esta presentación describe los conceptos y formatos de instrucciones de lenguaje de máquina y ensamblador, incluyendo el conjunto de instrucciones, operaciones y modos de direccionamiento. La información se presenta con ejemplos y diagrams para explicar el repertorio de instrucciones.
Full Transcript
Instrucciones: concepto y formatos. Lenguaje de máquina y assembly. Conjunto de instrucciones: operaciones, formatos y modos de direccionamiento. 1 1 Introduc Objetivos: ción Entender qué hace una instrucción Examinar y reconocer los dis...
Instrucciones: concepto y formatos. Lenguaje de máquina y assembly. Conjunto de instrucciones: operaciones, formatos y modos de direccionamiento. 1 1 Introduc Objetivos: ción Entender qué hace una instrucción Examinar y reconocer los distintos tipos de operandos. Reconocer los distintos tipos de operaciones que pueden especificarse mediante instrucciones máquina. 2 Repertorio de instrucciones El funcionamiento de la CPU esta determinado por las instrucciones que ejecuta. El conjunto de instrucciones distintas que la CPU puede ejecutar se denomina repertorio de instrucciones. Cada instrucción tiene: Un ciclo de búsqueda (igual para todas) Un ciclo de ejecución (distinto para cada una) 3 Repertorio de instrucciones O en una forma más detallada: 4 Repertorio de instrucciones Cada instrucción de máquina es una cadena de bits. Está dividida en campos, en los que la información está codificada. Por ejemplo: El código de operación (“opcode”) dice qué se hace (“Cargar el registro B”). La dirección (“address”) indica donde está el operando (“el 5 contenido de la dirección 310”). Repertorio de Esteinstrucciones esquema se denomina formato de instrucción. Cada repertorio emplea en general más de un formato. Durante su ejecución la instrucción se escribe en el Registro de Instrucción (IR). La Unidad de Control extrae y decodifica los datos de los distintos campos para realizar la operación. Cada instrucción debe contener la información que necesita la CPU para su ejecución. Un formato general de una instrucción es: 6 Representación de instrucciones Sin embargo, es difícil para el programador tratar con las representaciones binarias de las instrucciones de máquina (Una simplificación es usar códigos hexadecimales) Sin embargo, es más manejable utilizar una representación simbólica de la instrucción. Los códigos de operación se representan por medio de abreviaturas, llamadas mnemónicos que indican la operación. Por ejemplo: ADD - adición (suma) AND, OR, XOR - operaciones 7 SUB - sustracción (resta) Representación de instrucciones Los operandos también se pueden representar de manera simbólica. Por ejemplo: MOV reg1 , [dir1] La instrucción copia (mueve) el valor contenido en la posición de memoria llamada dir1, a un registro de la CPU denominado reg1. Esto da lugar al Lenguaje Ensamblador o Assembly: Textual (usa mnemónicos, no códigos numéricos) Lenguaje Ensamblador Por ejemplo (1): Inicio: MOV R0, 0x0010 MOV R1, 0x0001 ADD R0, R1 JMP Inicio Aquí, Inicio es una etiqueta Por ejemplo (2): V1: DW 0x001F V2: DW 0x0FF0 ADD R0, Programa Ensamblador El programa llamado Ensamblador toma el código fuente y lo traduce a un código máquina Para esto, realiza los siguientes pasos: Resuelve las directivas dirigidas al Ensamblador. Calcula el tamaño de cada una de las instrucciones, y en base a ello resuelve los valores de las etiquetas. Traduce todas las instrucciones a ceros y unos de acuerdo al formato de la instrucción. 10 Alto nivel / bajo nivel Un lenguaje de alto nivel expresa las instrucciones de forma algebraica concisa utilizando variables: Por ej.: X=X+Y Un lenguaje a nivel máquina expresa las operaciones de manera elemental, implicando operaciones de transferencia de datos a o desde registros. Para el ejemplo anterior, pueden ser necesarias tres instrucciones máquina: 1)Cargar un registro con el contenido de la posición de memoria X 2) Sumar al registro el contenido de la posición de memoria Y y almacenar el resultado en otro 11 registro. Alto nivel / bajo nivel En general, una instrucción de alto nivel puede requerir varias instrucciones de máquina. El lenguaje de alto nivel expresa operaciones en forma concisa usando variables. El lenguaje de máquina expresa las operaciones en forma básica involucrando movimiento de datos y uso de registros Cualquier programa escrito en lenguaje de alto nivel se debe convertir a un lenguaje de máquina para ser ejecutado. El conjunto de instrucciones de máquina debe ser capaz de expresar cualquiera de12 Elementos de una Instrucción Código de operación (CodOp) Especifica la operación a realizar (suma, E/S, etc.) Dirección de la siguiente instrucción Indica a la CPU de donde captar la siguiente instrucción tras completarse la ejecución de la instrucción actual. Referencia a operandos fuente La operación puede implicar uno o más operandos fuente, que son entradas para la instrucción. Referencia al operando resultado: La operación puede producir un resultado, salida de la instrucción denomina Los operandos pueden ser un registro, una 13 posición dirección. de memoria, o un dispositivo de E/S. Número de direcciones de una instrucción (1) En el esquema anterior, cada campo necesita un número determinado de bits, cuya suma dará la longitud total de la instrucción Esto significa que la instrucción será más “larga” y ocupará más espacio en memoria, cuanto más campos explícitos tenga. Una primera opción es eliminar el campo de “dirección de la próxima instrucción”, haciéndola implícita mediante el uso del registro Contador de Programa (PC). 14 Instrucciones de tres direcciones 15 Instrucciones de dos direcciones Una de las direcciones debe hacer el servicio doble de uno de los operandos y del resultado. Requiere almacenamiento temporario para algún operando Reduce la longitud de la instrucción 16 Instrucciones de una dirección Una segunda dirección debe estar implícita. Usualmente es el registro acumulador (AC), que funciona como fuente de un operando y destino. 17 Instrucciones de 0 (cero) direcciones Todas las direcciones son implícitas Usan una pila, una estructura en memoria del tipo last-in- first-out (el ultimo en entrar es primero en salir). Ej.: c = a + b push a push b add pop c 18 ¿Cúantas direcciones por instrucción? (1)de diseño. Es una decisión básica Menos direcciones ‒ CPU menos compleja ‒ Instrucciones más cortas y simples ‒ Más instrucciones por programa ‒ Rápidas instrucciones de captación/ejecución de instrucciones Más direcciones ‒ Instrucciones más complejas y largas ‒ Permite disponer de un mayor numero de registros de uso general Las operaciones realizadas Inter-registros son mas rápidas ‒ Menos instrucciones por programa Por razones de flexibilidad y facilidad para utilizar varios registros, las maquinas contemporáneas emplean una combinación 19 ¿Cúantas direcciones por instrucción? (2) Otros aspectos a considerar ‒ Si una dirección hace referencia a una posición de memoria o a un registro. Si hay menos registros, entonces se necesitan menos bits para referenciarlos ‒ Una máquina puede permitir diversos modos de direccionamiento Dicha especificación consume uno o más bits. ‒ La mayoría de los diseños de CPU hacen uso de varios formatos de instrucciones 20 Tipos de instrucciones Las instrucciones de máquina se clasifican en: Procesamiento de Datos: instrucciones aritméticas y lógicas. Almacenamiento de datos: instrucciones de transferencias de información dentro del CPU y la memoria. Entrada/salida: instrucciones de transferencia entre la CPU/memoria y dispositivos de comunicación con el exterior. 21 Tipos de operandos Las instrucciones máquina operan con datos. Las categorías más importantes son: Direcciones En ocasiones debe realizarse algún cálculo sobre la referencia de un operando. Se consideran como números enteros sin signo. Números Enteros, punto fijo/flotante Caracteres ASCII, BCD, etc. Datos lógicos Bits o flags: una palabra se considera una unidad de n elementos o datos de 1 bit, donde cada elemento vale 0 o 1. Permiten almacenar una matriz de datos binarios o booleanos, con lo que la memoria se utiliza más eficientemente, o bien permiten la manipulación de bits 22 individuales de un dato. Tipos de operaciones En todas las máquinas se encuentran tipos generales de operaciones: 1)Transferencia de datos 2)Aritméticas 3)Lógicas 4)De conversión 5)De E/S 6)De control del sistema 7)De control de flujo. 23 Tipos de operaciones: Transferencia de Es el tipo más básico de datosson las instrucción; operaciones son las más sencillas que puede realizar la CPU. Debe especificar: ‒ Posiciones del operando fuente ‒ Posiciones del operando destino Podrían ser de memoria, un registro o la cabecera de una pila. ‒ Longitud de los datos a transferir ‒ El modo de direccionamiento para cada operando. Si el origen y el destino son registros, la CPU hace la operación interna. Si uno o ambos operandos están en memoria La CPU debe realizar alguna o todas las siguientes tareas: 1. Calcular la dirección de memoria basándose en el modo de direccionamiento utilizado. 2. Si la dirección hace referencia a memoria virtual: traducir de dirección virtual a real. Tipos de operaciones: Aritméticas Suma, Resta, Multiplicación, División Existen siempre para enteros con signo (coma fija) A menudo se proporcionan para números en punto flotante y para decimales empaquetados Pueden incluir varias instrucciones de un solo operando ‒ Increment (a++): incrementa en 1 el operando ‒ Decrement (a--): decrementa en 1 el operando ‒ Negate (-a): cambia el signo del operando ‒ Absolute: obtiene el valor absoluto del operando Su ejecución puede implicar operaciones de transferencia de datos para ubicar los operandos como entradas a la ALU y para 25 almacenar la salida de la ALU. Tipos de operaciones: a)Operaciones Lógicas para manipular bits individuales dentro de una palabra o de otra unidad direccionable. AND, OR, XOR, NOT Pueden aplicarse desde bit a bit hasta n bits Si dos registros contienen los siguiente: (R1)= 10100101 ; Contenido de la posición R1 (R2)= 00001111 ; Contenido de la posición R2 (R1) AND (R2)=00000101 Esta operación puede utilizarse como mascara, para poner a 0 ciertos bits y seleccionar otros. 26 Tipos de operaciones: b)Funciones Lógicas de desplazamiento y rotación. Desplazamiento lógico: se desplazan a la derecha o a la izquierda los bits de la palabra Desplazamiento aritmético: trata el dato como entero con signo, y no desplaza el bit de signo Rotación o desplazamiento cíclico. Preserva todos los bits con que se esta operando. Ej.: Ir volcando sucesivamente cada bit en la posición mas a la izquierda, donde puede ser identificado comprobando el bit de signo del dato. 27 Operaciones de desplazamiento y de rotación 28 Tipos de operación: Conversión Cambian el formato u operan sobre el formato de los datos. Ej. Conversión de decimal a binario. Convierte un código de 8 bits a otro ‒ TR R1, R2, L ‒ Translate ‒ R2: Contiene la dirección de comienzo de una tabla de códigos de 8 bits. ‒ Se traducen los L bytes que comienzan en la dirección especificada por R1. ‒ Se sustituye cada byte por el contenido del elemento de la tabla indexada por dicho byte. ‒ Por ej.: Para convertir de EBCDIC a ASCII 29 Tipos de operaciones: Entrada/Salida Las instrucciones admiten aproximaciones muy diversas. Incluyen E/S programadas aisladas. Incluyen E/S programadas asignadas en memoria. Instrucciones de movimiento de datos (mapeo de memoria) Pueden ser hechas mediante un controlador separado (DMA). Muchas implementaciones ofrecen solo unas pocas instrucciones de E/S con acciones especificas indicadas mediante parámetros, códigos o palabras de órdenes. 30 Tipos de operaciones: Control del sistema Son instrucciones privilegiadas. La CPU necesita estar en un estado específico Están reservadas para ser usadas por el sistema operativo Ej: Leer o alterar un registro de control Ej.: para leer o modificar una clave de protección de memoria 31 Tipos de operaciones: Control de flujo o transferencia Existe una de seriecontrol de instrucciones cuya misión es cambiar la secuencia de ejecución. La operación que realiza la CPU es actualizar el PC para que contenga la dirección de alguna instrucción que esta en memoria Varias razones para utilizar estas instrucciones: ‒ Si se va a procesar una tabla o una lista de elementos lo normal es utilizar un bucle de programa. ‒ Los programas incluyen tomas de decisión ‒ Para programas muy largos, se parte la tarea en trozos más pequeños. 32 Tipos de operaciones: Control de flujo o transferencia de(Salto). a) Bifurcación control Ejemplo: Se ejecuta el salto (se actualiza el PC con la dirección especificada en el operando) si se cumple la condición. Si no se cumple se ejecuta la instrucción siguiente ‒ BRZ X de la asecuencia (saltar ( se incrementa X si el resultado es cero) el PC de forma ‒ BRP habitual). X ( saltar a la posición X, si el resultado es positivo) ‒ BRN X (saltar a X si el resultado es negativo) ‒ BR0 X (saltar a la posición X, si el resultado es Resultado: referencia a la ultima operación ejecutada desbordamiento) que afecte al código de condición. ‒ Otro ejemplo con una instrucción de 3 direcciones: BRE R1, R2, X Saltar a X si el contenido de R1 = R2 33 Instrucciones de bifurcación 34 Tipos de operaciones: Control de flujo o transferencia b)Salto implícito deuna (“SKIP”). Incluye dirección de manera implícita. Implica que se control va a saltar una instrucción La dirección implícita es igual a la dirección de la siguiente instrucción mas la longitud de una instrucción. Ej.: Instrucción “incrementar y saltar si es cero” (ISZ) c)Llamada a procedimiento Procedimiento : programa autoconsistente que se incorpora en uno mas grande. Razones de su uso: economía y modularidad. 35 Procedimientos anidados 36 Tipos de operaciones: Control de flujo o transferencia Una llamada de hacerse a procedimiento puede desde distintos puntos la CPU debe guardar la control dirección de retorno en algún sitio. Existen 3 lugares habituales: ‒ Un registro ‒ Al principio de procedimiento ‒ En la cabecera de una pila: es la opción mas potente y más general 37 Direccionami Como se vio, una instrucción utiliza un campo de bits ento para expresar el código de operación: lo que hace. Pero también necesita una importante cantidad de bits para especificar de dónde provienen los datos: direccionarlos. Es importante reducir el tamaño de esa referencia. Hay dos métodos generales para lograrlo: 1)Si un operando va a usarse varias veces puede colocarse en un registro. ‒ el acceso es más rápido. ‒ se necesitan menos bits para referenciar un registro que para una posición de memoria. 2)Referenciar uno o más operandos en forma implícita.elDependiendo ofrezca repertorio de del caso, el programador 38 podrá hacer uso de estas posibilidades, utilizando instrucciones. Modos de direccionamiento Los modos de direccionamiento son distintas formas en que una misma operación puede ejecutarse para reducir el número de bits de la instrucción o hacer un manejo más eficiente de los datos. Por lo tanto, una misma operación puede dar lugar a varias instrucciones, con un modo de direccionamiento diferente: 1. Inmediato 2. Directo 3. Indirecto 4. Registro 5. Indirecto con registro 6. Con desplazamiento (Indexado) 39 Modos de La direccionamiento Unidad de Control determina el modo de direccionamiento que utiliza cada instrucción mediante: ‒ CodOps diferentes, o bien, ‒ Uno o más bits en un campo de modo, que indica que tipo de direccionamiento se emplea Notación: ‒ 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 de memoria que contiene el operando que se referencia. 40 ‒ (X) = Contenido de la posición X. Direccionamiento inmediato Modo (1) 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. 41 Direccionamiento inmediato El (2)en la propia operando está presente instrucción: ‒ Operando = A ‒ E.j. ADD 5 ‒ Suma 5 al contenido del acumulador Rápido / muy sencillo Ventaja: Una vez captada la instrucción, no se requiere una referencia a memoria para obtener el operando; se ahorra un ciclo de memoria en el ciclo de instrucción. Desventaja: Rango limitado. Tamaño del número limitado a la longitud del campo de direcciones,42 Direccionamiento directo (1) El campo de direcciones contiene la dirección efectiva del operando EA = A P.ej., 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 43 Direccionamiento directo (2) Codo p 44 Direccionamiento indirecto Problema (1) del modo anterior: La longitud 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 P. ej., ADD (A) ‒ Agrega el contenido de la celda apuntada por el 45 Direccionamiento indirecto (2) Codo p 46 Direccionamiento indirecto Espacio (3) grande. de direccionamiento Si longitud de la palabra = N bits , se dispone de un espacio de 2N direcciones. Desventajas: ‒ La ejecución de la instrucción requiere dos referencias a memoria para captar el operando: una para captar su dirección y otra para obtener su valor. ‒ Lento. 47 Direccionamiento de registro (1) referencia un registro, El campo de direcciones 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 48 Direccionamiento de registro(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. 49 Direccionamiento de registro(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. P 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 resulta conveniente implementarla en registro en lugar de memoria principal. 50 Direccionamiento de registro (4) Codo p 51 Direccionamiento indirecto con registro Es análogo al indirecto ‒ EA = (R) (1) 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. 52 Direccionamiento indirecto con registro (2) Codo p 53 Direccionamien to con Modo muy potente: combina desplazamient direccionamiento directo e indirecto con registro. ‒ o (1) 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. Desplazamiento relativo ‒ Direccionamiento ‒ o viceversa con registro Indexadbase. Tres ‒ o. versiones: 54 Direccionamient o con desplazamient Codo o (2) p 55 Direccionamiento Esrelativo (1) 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. P. ej., toma el operando de la posición 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. 56 Direccionamiento con registro- EA = A + (R) base (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 57 Direccionamiento indexado Es (3) del registro-base. inverso a la interpretación El registro referenciado contiene un desplazamiento positivo Campo dirección es una dirección de memoria principal contiene más bits que un campo de direcciones de una instrucción 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 ‒ EA Las =A referencias a registro pueden ser explicitas +R 58 o implícitas. Direccionamiento indexado (4) Ejemplo: Dada una lista de números 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 cada operación, el registro se 59 incrementa en 1. Direccionamiento de pila 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. El operando está (implícitamente) en el tope de la pila. Son de hecho, direcciones de acceso indirecto con registro. Las instrucciones máquina no necesitan incluir una referencia a memoria, operan implícitamente con la 60 cabecera de la pila. Referen cias Stallings, Williams - Organización y Arquitectura de Computadoras - 5º Ed. - Prentice Hall. Año 2000. → Capítulos 9 y 10 61