La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES

Presentaciones similares


Presentación del tema: "TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES"— Transcripción de la presentación:

1 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

2 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación Tal y como vimos en el tema anterior, a la colección de todas las instrucciones que puede ejecutar un procesador se le denomina conjunto de instrucciones, y a la completa descripción de dicho conjunto, arquitectura del conjunto de instrucciones. La arquitectura del conjunto de instrucciones determina cómo debe ser el hardware del procesador y cómo debe estar organizado. Por ello, los manuales de usuario de los procesadores se enfocan principalmente en la descripción del conjunto de instrucciones que el procesador puede ejecutar, así como de los elementos del procesador que son accesibles al programador. Las instrucciones se definen y almacenan en la memoria del procesador en lenguaje binario, lo cual constituye el llamado código máquina. El lenguaje que sustituye los códigos de operación binarios y las direcciones por nombres simbólicos se denomina lenguaje ensamblador. El formato de las instrucciones se representa mediante una caja rectangular simbolizando los bits de la instrucción en binario. Estos bits se dividen en grupos llamados campos: Campo de código de operación (opcode), que especifica la operación a realizar. - Campo de dirección(es), que proporciona direcciones de memoria o de registros. Campo de modo, que especifica la forma en que se interpreta el campo de direcciones. En el presente tema estudiaremos las instrucciones típicas que se pueden encontrar en procesadores comerciales, así como los diferentes formatos en que pueden presentarse, haciendo especial énfasis en el direccionamiento de los operandos.

3 CICLO DE OPERACIÓN BÁSICO DE UN PROCESADOR
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.1.- Conceptos de arquitectura de computación CICLO DE OPERACIÓN BÁSICO DE UN PROCESADOR La unidad de control de un procesador se diseña para ejecutar cada una de las instrucciones de un programa efectuando la siguiente secuencia de pasos: 1.- Obtener la instrucción de memoria. Almacenarla en un registro de control. 2.- Decodificar la instrucción. 3.- Localizar los operandos empleados en la instrucción. 4.- Obtener de la memoria los operandos (si fuese necesario) 5.- Ejecutar la operación en la ruta de datos. 6.- Almacenar el resultado en un lugar adecuado. 7.- Volver al paso 1 y para procesar la siguiente instrucción. La unidad de control del procesador consta de un registro especial, el contador de programa PC (Program Counter). Su contenido apunta a la posición de memoria de la instrucción que se va a ejecutar a continuación, y se incrementa cada vez que se lee una instrucción del programa almacenado en la memoria. La decodificación del paso 2 determina la operación a ejecutar y el modo de direccionamiento de la instrucción. En el paso 3, los operandos se localizan según el modo de direccionamiento y el campo de direcciones de la instrucción. El procesador ejecuta la instrucción sobre los operandos, almacena el resultado y regresa al paso 1 para obtener la siguiente instrucción del programa.

4 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación CONJUNTO DE REGISTROS El conjunto de registros está formado por todos los registros del procesador accesibles al programador: El contador de programa PC. - Banco de registros de la ruta de datos. - El Puntero de pila SP (Stack Pointer). Permite definir estructuras LIFO en la memoria. - El registro de estado del procesador PSR (Processor Status Register). Permite almacenar los bits de estado C, N, V y Z de la ALU. Estos bits de estado, normalmente denominados banderines (flags), pueden utilizarse para tomar decisiones que determinen el flujo de ejecución del programa. - Los procesadores constan además de una serie de registros que normalmente no son accesibles al programador: El registro de instrucción IR. - El registro CAR. - Registros ocultos del banco de registros de la ruta de datos. Sólo son accesibles a los microprogramas para, por ejemplo, almacenar resultados parciales durante la ejecución de una instrucción. - Los registros de pipeline en procesadores segmentados. -

5 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

6 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.2.- Direccionamiento de operandos En una instrucción de manipulación de datos, como por ejemplo la instrucción ADD que vimos en el tema anterior, se necesita especificar tanto los datos que se van a sumar, como el destino del resultado. Esto se conoce como direccionamiento de operandos. Dichos operandos pueden encontrarse tanto en el banco de registros como en la memoria. Si la dirección del operando forma parte de la instrucción, se tiene un direccionamiento explícito. En caso contrario, se tiene un direccionamiento implícito. El número de operandos que se pueden direccionar explícitamente en una instrucción es un factor importante a tener en cuenta a la hora de definir la arquitectura del conjunto de instrucciones de un procesador. Como ejemplo, supongamos que se quiere evaluar la siguiente expresión aritmética: X = (A+B)(C+D) con instrucciones de tres, dos, una y cero direcciones. Supondremos además que: Los operandos están en direcciones de memoria representadas por las letras A, B, C y D. La operación no debe alterar sus contenidos. - Con operando nos vamos a referir tanto a datos como a resultados. La longitud de la instrucción dependerá del número de operandos direccionables. El resultado se almacena en la memoria, en una dirección representada por X. - Las operaciones aritméticas que se pueden utilizar son la suma ADD y la multiplicación MUL sobre dos operandos. - Las operaciones de transferencia de datos que se pueden utilizar son LD (de memoria a registro), ST (de registro a memoria) y MOVE (entre registros o posiciones de memoria). -

7 INSTRUCCIONES DE TRES DIRECCIONES
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos INSTRUCCIONES DE TRES DIRECCIONES Programa para el cálculo de X = (A+B)(C+D) utilizando instrucciones de tres direcciones: ADD T1, A, B M[T1]  M[A] + M[B] ADD T2, C, D M[T2]  M[C] + M[D] MUL X, T1, T2 M[X]  M[T1]  M[T2] T1 y T2 son posiciones de memoria para almacenar los resultados parciales del cálculo. El mismo programa puede usar registros como posiciones de almacenamiento temporal: ADD R1, A, B R1  M[A] + M[B] ADD R2, C, D R2  M[C] + M[D] MUL X, R1, R2 M[X]  R1  R2 El uso de registros puede reducir el tiempo de ejecución del programa entre 5 y 9 veces. Ventaja: Se reducen las longitudes de los programas para la evaluación de expresiones. Inconveniente: El código binario de la instrucción necesita más bits para poder especificar las tres direcciones (sobre todo si son posiciones de memoria).

8 INSTRUCCIONES DE DOS DIRECCIONES
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos INSTRUCCIONES DE DOS DIRECCIONES En la instrucción sólo hay dos direcciones explícitas (registros o posiciones de memoria). Se supone implícitamente que el resultado de la operación indicada en la instrucción se almacena en la dirección del primer operando indicado explícitamente. Programa para el cálculo de X = (A+B)(C+D) utilizando instrucciones de dos direcciones: MOVE T1, A M[T1]  M[A] ADD T1, B M[T1]  M[T1] + M[B] MOVE X, C M[X]  M[C] ADD X, D M[X]  M[X] + M[D] MUL X, T1 M[X]  M[X]  M[T1] Al igual que en el caso de las tres direcciones, se pueden usar registros en lugar de las posiciones de memoria para almacenar los cálculos parciales. Para poder realizar el cálculo deseado ha habido que: Introducir operaciones de transferencia de datos MOVE. - Aumentar la longitud del programa. Como contrapartida, la longitud de la instrucción es menor.

9 INSTRUCCIONES DE UNA DIRECCIÓN
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos INSTRUCCIONES DE UNA DIRECCIÓN En la instrucción sólo hay una dirección explícita. El procesador utiliza implícitamente un registro acumulador ACC para poder realizar tanto las operaciones aritméticas, siendo la fuente de uno de los operandos y el destino del resultado, como las de transferencia de datos. Programa para el cálculo de X = (A+B)(C+D) utilizando instrucciones de una dirección: LD A ACC  M[A] ADD B ACC  ACC + M[B] ST X M[X]  ACC LD C ACC  M[C] ADD D ACC  ACC + M[D] MUL X ACC  ACC  M[X] Ha aumentado el número de líneas de programa y el número de accesos a memoria.

10 INSTRUCCIONES DE CERO DIRECCIONES
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos INSTRUCCIONES DE CERO DIRECCIONES Para llevar a cabo operaciones aritméticas con cero direcciones, todas ellas deben ser implícitas. El procesador utiliza una estructura LIFO llamada pila (stack), de la que las instrucciones toman los datos y en donde almacenan los resultados: - TOS (top of stack) es la palabra más arriba en la pila. - TOS-1 es la palabra inmediatamente debajo, TOS-2 la siguiente, etc. - Cuando se usan uno o varios operandos en una operación, se eliminan de la pila. La palabra por debajo pasa a ser la nueva TOS. - Cuando se genera un resultado, se coloca en la pila pasando a ser el nuevo TOS. De este modo, TOS y algunas palabras ubicadas por debajo son las direcciones implícitas de los operandos, y TOS es la dirección implícita del resultado. Por ejemplo, la instrucción de suma sería simplemente “ADD”, y la operación que se llevaría a cabo sería TOSTOS+TOS-1. Para meter y sacar datos de la pila se usan las instrucciones: PUSH (empujar). PUSH X transfiere la palabra en la dirección X de la memoria al TOS. - POP (sacar). POP X transfiere el TOS a la dirección X de la memoria.

11 INSTRUCCIONES DE CERO DIRECCIONES
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos INSTRUCCIONES DE CERO DIRECCIONES Volviendo a nuestro cálculo de ejemplo, el programa con instrucciones de cero direcciones será el siguiente: Pila Notación posfijo A B + C D PUSH A TOS  M[A] A PUSH B TOS  M[B] B A ADD TOS  TOS + TOS-1 A+B PUSH C TOS  M[C] C A+B PUSH D TOS  M[D] D C A+B ADD TOS  TOS + TOS-1 C+D Notación infijo y posfijo (o notación polaca inversa, propuesta por el matemático polaco Jan Lukasiewicz) A+B MUL TOS  TOS  TOS-1 (A+B)(C+D) POP X M[X]  TOS Se necesitan en total ocho instrucciones, una más que en el caso de instrucciones de una dirección. Como contrapartida, sólo las instrucciones PUSH y POP utilizan direccionamiento explícito.

12 ARQUITECTURAS DE DIRECCIONAMIENTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos ARQUITECTURAS DE DIRECCIONAMIENTO Arquitectura memoria a memoria: - Los operandos se toman directamente de la memoria, y el resultado se envía directamente a la memoria. - Las instrucciones de manipulación y transferencia de datos contienen entre uno y tres campos de direcciones. - El procesador sólo tiene registros de control. Es el caso del ejemplo del cálculo X=(A+B)(C+D) con instrucciones de tres direcciones: ADD T1, A, B M[T1]  M[A] + M[B] ADD T2, C, D M[T2]  M[C] + M[D] MUL X, T1, T2 M[X]  M[T1]  M[T2] Las instrucciones, al incluir muchas direcciones, ocupan más de una posición de memoria. El programa anterior necesita 21 accesos a memoria (si cada instrucción ocupa cuatro posiciones de memoria, y en cada instrucción se leen dos operandos de memoria y se almacena el resultado en memoria) En la práctica este tipo de arquitecturas no se usa debido a que son lentas: Se necesita un elevado número de accesos a memoria, tanto en la fase de búsqueda de las instrucciones del programa como en la de su ejecución. Dar la posibilidad de que todas las instrucciones puedan acceder directamente a memoria incrementa la complejidad de las estructuras de control, dando como resultado que el período de la señal de reloj tenga que ser más largo. -

13 ARQUITECTURAS DE DIRECCIONAMIENTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos ARQUITECTURAS DE DIRECCIONAMIENTO Arquitectura registro a registro y carga/almacenamiento: - Permiten una sola dirección de memoria, y restringen su uso a las instrucciones de carga y almacenamiento. - Las instrucciones de manipulación de datos acceden solamente a registros. - El procesador necesita un banco de registros con un tamaño adecuado. En esta arquitectura, el programa ejemplo para el cálculo de X=(A+B)(C+D) será: LD R1, A R1  M[A] LD R2, B R2  M[B] ADD R3, R1, R2 R3  R1 + R2 LD R1, C R1  M[C] LD R2, D R2  M[D] ADD R1, R1, R2 R1  R1 + R2 MUL R1, R1, R3 R1  R1  R3 ST X, R1 M[X]  R1 PUSH A PUSH B ADD PUSH C PUSH D MUL POP X Sólo las instrucciones de carga y almacenamiento ocupan dos posiciones de memoria, así que leer el programa implica 13 accesos a memoria. La ejecución requiere 5 accesos a memoria. En total, 18 accesos a memoria. Este tipo de arquitecturas se usa más en la práctica porque, aunque se necesiten más instrucciones en el programa, el número total de accesos a memoria se reduce y, por tanto, son más rápidas.

14 ARQUITECTURAS DE DIRECCIONAMIENTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.2.- Direccionamiento de operandos ARQUITECTURAS DE DIRECCIONAMIENTO Arquitectura de memoria-registro: - Incluyen instrucciones de dos o tres direcciones con una o dos direcciones de memoria. - La longitud del programa y el número de accesos a memoria tienden a estar en un punto intermedio de las dos arquitecturas anteriores. Ejemplo de instrucción: ADD R1, A R1  R1 + M[A] Este tipo de arquitectura se usa cuando se quiere dar compatibilidad con programas antiguos. Arquitectura de un solo acumulador: Permiten instrucciones con una sola dirección para acceder a la memoria. - El procesador sólo dispone del acumulador para hacer operaciones. Es el caso del ejemplo del cálculo X=(A+B)(C+D) con instrucciones de una sola dirección. Esta arquitectura es ineficiente debido a que requiere un gran número de accesos a memoria. Se usa en el caso de aplicaciones sencillas y de bajo coste, que no precisen de un alto rendimiento. Arquitectura de pila: Las instrucciones de manipulación de datos usan una pila de la que obtener los datos y en la que almacenar el resultado. - Para la transferencia de datos se usan instrucciones de una sola dirección. En la arquitectura de un solo acumulador, cada instrucción ocupa dos posiciones de memoria. Por tanto, leer el programa implica 14 accesos a memoria. La ejecución, otros 7. En total 21, los mismos que en el caso de instrucciones con tres direcciones. Es el caso del ejemplo del cálculo X=(A+B)(C+D) con instrucciones de cero direcciones. Esta arquitectura resulta especialmente útil para la rápida interpretación de lenguajes de alto nivel, en los que la representación intermedia del código utiliza operaciones con la pila. Para que sea eficiente, el procesador almacena directamente gran parte de las posiciones de la pila.

15 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

16 DEFINICIÓN TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.3.- Modos de direccionamiento DEFINICIÓN El modo de direccionamiento especifica una regla para interpretar o modificar el campo de direcciones de la instrucción antes de que se haga realmente referencia al operando. A la dirección del operando generada mediante la aplicación de esa regla se la denomina dirección efectiva. Opcode Modo Dirección u operando Formato de la instrucción: Los procesadores utilizan técnicas de modo de direccionamiento para ajustarse a las siguientes características: Proporcionar flexibilidad al usuario en la programación mediante punteros a memoria, contadores para el control de bucles, indexar datos y reubicar programas. - Reducir el número de bits de los campos de direcciones de la instrucción. A veces el campo de modo forma parte del Opcode. Disponer de varios modos de direccionamiento proporciona al programador experimentado la posibilidad de escribir programas que requieran pocas instrucciones. Sin embargo, el uso de modos de direccionamiento complejo puede implicar un mayor tiempo de ejecución.

17 MODO IMPLÍCITO MODO INMEDIATO MODO REGISTRO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO IMPLÍCITO El operando se especifica implícitamente en el código de operación, por lo que la instrucción no necesita de un campo de direcciones. Ejemplos: Operaciones sobre el contenido del acumulador (complementar acumulador). - Operaciones con la pila (ADD). MODO INMEDIATO El operando se especifica directamente en la instrucción. En vez de tener un campo de direcciones, la instrucción posee un campo de operando. Ejemplo: inicialización de un registro con un valor constante. MODO REGISTRO Se tiene cuando el campo de direcciones de la instrucción especifica un registro del procesador en lugar de una posición de memoria. El operando está contenido en el registro direccionado en la instrucción.

18 MODO REGISTRO INDIRECTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO REGISTRO INDIRECTO La instrucción direcciona un registro del procesador en el que está la dirección de memoria donde se encuentra el operando. Para acceder al operando correctamente, el programador debe asegurarse de que la dirección efectiva esté ya disponible en el registro. La ventaja de este modo de direccionamiento es que el campo de direcciones de la instrucción necesita menos bits que los que serían necesarios para especificar una dirección de memoria directamente. MODO AUTOINCREMENTO (AUTODECREMENTO) Este modo es igual al anterior, incluyendo una operación de incremento (decremento) del registro que contiene la dirección de memoria del operando. Puntero es un registro que contiene una dirección de memoria. Ejemplo: ADD (R1)+, 3 M[R1]  M[R1]+3, R1  R1+1 Se utiliza cuando se requiere hacer una misma operación sobre un conjunto de datos (array) almacenado en posiciones consecutivas de la memoria. En el ejemplo anterior, R1 contendrá la dirección del primer dato en el array. Cada vez que se ejecuta la instrucción, se hace la operación sobre el dato y el registro se incrementa para apuntar al siguiente dato del array.

19 MODO DE DIRECCIONAMIENTO DIRECTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO DE DIRECCIONAMIENTO DIRECTO El campo de direcciones de la instrucción proporciona directamente la dirección efectiva. Opcode Modo ADRS Siguiente instrucción Programa 800 Datos 250 251 252 500 PC=250 ACC Opcode: Carga ACC Modo: Dirección directa ADRS: 500 Operación: ACC  800 PC  252 (a) Transferencia de datos Ejemplos: Opcode Modo ADRS Siguiente instrucción Programa Instrucción 300 301 302 500 PC=300 ACC Opcode: Bifurcación si ACC=0 Modo: Dirección directa ADRS: 500 Operación: PC  500 si ACC=0 PC  302 si ACC≠0 (b) Salto condicional

20 MODO DE DIRECCIONAMIENTO INDIRECTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO DE DIRECCIONAMIENTO INDIRECTO El campo de direcciones de la instrucción proporciona la dirección en que se encuentra la dirección efectiva. Opcode Modo ADRS Siguiente instrucción Programa 800 Datos 250 251 252 500 PC=250 ACC Opcode: Carga indirecta ACC Modo: Dirección indirecta ADRS: 500 Operación: ACC  625 PC  252 Transferencia de datos Ejemplo: 625 Operación: ACC  M[M[ADRS]]

21 MODO DE DIRECCIONAMIENTO RELATIVO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO DE DIRECCIONAMIENTO RELATIVO La dirección efectiva se obtiene como suma de la parte de dirección de la instrucción y el contenido del PC. La parte de dirección de la instrucción es un número con signo. Transferencia de datos Ejemplo: Opcode Modo ADRS Siguiente instrucción Programa 800 Datos 250 251 252 752 PC=250 ACC Opcode: Carga ACC Modo: Dirección relativa ADRS: 500 Operación: ACC  800 PC  252 Operación: ACC  M[ADRS+PC] Este tipo de direccionamiento se usa frecuentemente en instrucciones de salto condicional cuando la dirección de bifurcación está cercana a la instrucción de salto. Este direccionamiento genera instrucciones más compactas, ya que la dirección relativa necesita de menos bits que una dirección de memoria.

22 MODO DE DIRECCIONAMIENTO INDEXADO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento MODO DE DIRECCIONAMIENTO INDEXADO La dirección efectiva se obtiene como suma de la parte de dirección de la instrucción y el contenido de un registro del procesador, llamado registro índice. Este puede ser un registro especial del procesador o simplemente cualquiera de los registros del banco de registros. Se usa cuando se desea acceder o manipular un array de datos almacenado en la memoria: El campo de direcciones de la instrucción marca el comienzo del array. - Cada operando del array se almacena en memoria en una dirección relativa a su comienzo. La distancia entre la dirección de comienzo y la dirección del operando es el valor del índice almacenado en el registro. Así, con la misma instrucción se puede acceder a cualquier operando del array mediante el uso del registro índice. Si los operandos están consecutivos en la memoria, se accede a cada uno de ellos incrementando el registro índice. El registro índice puede ser un registro especial de la CPU o simplemente cualquiera de los registros del banco de registros. MODO DE REGISTRO BASE La dirección efectiva se obtiene como suma de la parte de dirección de la instrucción y el contenido de un registro del procesador, llamado registro base. Mientras que en el modo indexado el registro índice contiene un número que es relativo a la parte de dirección de la instrucción, en este modo el registro base es el que contiene la dirección base y el campo de direcciones de la instrucción proporciona el desplazamiento relativo.

23 Siguiente instrucción
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.3.- Modos de direccionamiento RESUMEN Para comparar los diferentes modos de direccionamiento, consideraremos como ejemplo una operación de carga del acumulador: PC=250 250 Opcode Modo 251 ADRS o NBR R1=400 252 Siguiente instrucción Opcode: Carga ACC ADRS o NBR: 500 ACC 400 700 500 800 Modo Nemónico Transferencias Dir. ef. ACC Directo LDA ADRS ACC  M[ADRS] 752 600 Inmediato LDA #NBR ACC  NBR 800 300 Indirecto ACC  M[M[ADRS]] LDA [ADRS] Relativo LDA $ADRS ACC  M[ADRS+PC] 900 200 Indexado LDA ADRS (R1) ACC  M[ADRS+R1] Registro LDA R1 ACC  R1  400 LDA (R1) ACC  M[R1] Registro indirecto

24 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

25 ARQUITECTURA RISC TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.4.- Arquitecturas de conjunto de instrucciones ARQUITECTURA RISC Los procesadores de conjunto reducido de instrucciones RISC (Reduced Instruction Set Computers) tienen las siguientes propiedades: 1ª) Las instrucciones sólo realizan operaciones elementales. Los accesos a memoria se restringen a las instrucciones de carga y almacenamiento. Las instrucciones de manipulación de datos son de registro a registro. 2ª) Número limitado de modos de direccionamiento. 3ª) Los formatos de todas las instrucciones tienen la misma longitud. 4ª) Características de la arquitectura RISC: Su objetivo es conseguir un alto rendimiento (alta velocidad de ejecución). Por ello los accesos a memoria se limitan a las instrucciones de carga y almacenamiento. 1ª) Necesita un banco de registros relativamente grande. 2ª) Al tener las instrucciones una longitud fija, modos de direccionamiento limitados, y realizar sólo operaciones básicas, la unidad de control es relativamente simple, y típicamente está cableada. 3ª) La organización interna del procesador es en pipeline. 4ª)

26 ARQUITECTURA CISC TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.4.- Arquitecturas de conjunto de instrucciones ARQUITECTURA CISC Los procesadores de conjunto de instrucciones complejo CISC (Complex Instruction Set Computers) tienen las siguientes propiedades: 1ª) Las instrucciones realizan tanto operaciones elementales como complejas. Los accesos a memoria están disponibles en prácticamente todos los tipos de instrucciones. 2ª) Gran número de modos de direccionamiento. 3ª) Los formatos de las instrucciones son de diferente longitud. 4ª) Características de la arquitectura CISC: Su objetivo es proporcionar instrucciones que faciliten realizar programas compactos y así ahorrar memoria. 1ª) En la arquitectura CISC la ejecución puede llegar a ser bastante eficiente si se reducen en lo posible los accesos a memoria. Comentar que las arquitecturas de los procesadores actuales están comprendidas entre los extremos RISC y CISC. Debido a la alta accesibilidad de la memoria, el banco de registros es reducido. 2ª) Debido a la complejidad de las instrucciones y la diversidad de sus formatos, la unidad de control es compleja y suele utilizar microprogramación. 3ª) Internamente, las instrucciones CISC se convierten en una secuencia de instrucciones RISC, siendo procesadas mediante un pipeline tipo RISC. 4ª)

27 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

28 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.5.- Instrucciones de transferencia de datos Las instrucciones de transferencia de datos mueven un dato de un lugar del procesador a otro, sin modificarlo. Las típicas transferencias son entre memoria y los registros del procesador, entre estos y los registros de entrada/salida (E/S), y entre los propios registros de procesador: Load LD Desde una posición de memoria a un registro del procesador. Nombre Nemónico Descripción Store ST Desde un registro del procesador a una posición de memoria. Move MOVE Desde un registro del procesador a otro. También se utiliza para transferir datos entre dos posiciones de memoria. Exchange XCH Intercambia datos entre dos registros del procesador o entre dos posiciones de memoria. Push PUSH Pop POP Transferencia de datos con la pila Input IN Output OUT Transferencia de datos con registros E/S

29 TRANSFERENCIA DE DATOS CON LA PILA
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.5.- Instrucciones de transferencia de datos TRANSFERENCIA DE DATOS CON LA PILA La arquitectura basada en pila posee características que facilitan ciertos tipos de procesamiento de datos y de control de tareas. Así, en algunas calculadoras y procesadores se usan pilas para la evaluación de expresiones aritméticas. Las pilas en memoria se organizan mediante un registro especial, llamado puntero de pila SP (Stack Pointer). El registro SP contiene la dirección del TOS. PUSH es la instrucción que almacena datos en la pila, y POP la que los extrae de ella: PUSH R1 SP  SP-1 M[SP]  R1 SP se inicializa con la dirección de memoria donde quiera iniciarse la pila (104 en el ejemplo). PUSH POP POP R1 R1  M[SP] SP  SP+1 Dir. Memoria Salvo en el caso de pilas integradas en el procesador, se usa la pila de memoria sólo para las llamadas a subrutinas. Dependiendo del orden en que se hagan las operaciones de transferencia de datos y de incremento o decremento del SP, SP apunta al TOS o a la dirección inmediatamente disponible para almacenar un nuevo dato. Obsérvese que los datos no se borran de memoria realmente al hacer POP, pero se escriben encima al hacer un nuevo PUSH.

30 TRANSFERENCIA DE DATOS CON REGISTROS E/S
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.5.- Instrucciones de transferencia de datos TRANSFERENCIA DE DATOS CON REGISTROS E/S Los registros E/S, llamados comúnmente puertos, son los que utiliza un procesador para intercambiar datos con dispositivos externos (periféricos). Normalmente cada puerto disponible tendrá asociado un código de dirección. Las direcciones de los puertos pueden asignarse de dos formas: Sistemas con E/S independiente o separada. a) Sistemas con E/S mapeada o ubicada en memoria. b) El rango de direcciones asignadas a la memoria y a los puertos de E/S son independientes entre sí. - El procesador tiene instrucciones de transferencia de datos diferentes, según se trate de transferencias con la memoria o con los puertos E/S: LD y ST para la memoria, e IN y OUT para los puertos. - Se asigna un subrango de direcciones de memoria para direccionar los puertos E/S: cada puerto E/S se trata como una posición de memoria más. - El procesador no tiene instrucciones de transferencia de datos específicas para E/S, se usan las mismas que las de la memoria, LD y ST. - Debido a la complejidad extra que conlleva la E/S independiente, el procesador con E/S mapeada requiere menos lógica interna, es más barato y rápido (tipo RISC). -

31 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

32 INSTRUCCIONES ARITMÉTICAS
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.6.- Instrucciones de manipulación de datos Las instrucciones de manipulación de datos realizan operaciones sobre los datos, proporcionando los recursos de cálculo del procesador. Son de tres tipos: 1º) Instrucciones aritméticas. 2º) Instrucciones lógicas y de manipulación de bits. 3º) Instrucciones de desplazamiento. INSTRUCCIONES ARITMÉTICAS Incremento INC Suma uno. Si todos los bits son 1, genera una palabra con todos los bits a 0. Nombre Nemónico Descripción Decremento DEC Restar uno. Si todos los bits son 0, genera una palabra con todos los bits a 1. Suma ADD Resta SUB Multiplicación MUL División DIV En procesadores sencillos sólo están disponibles las operaciones de suma y de resta. En esos casos, la multiplicación y la división se tienen que hacer mediante programas. Normalmente estas operaciones están disponibles para diferentes tipos de datos. Suma con ADDC Suma dos operandos teniendo en cuenta el acarreo del cálculo anterior. acarreo Permite cálculos de doble precisión. Resta con SUBB Resta dos operandos teniendo en cuenta el acarreo (borrow) del cálculo acarreo anterior. Permite cálculos de doble precisión. Resta inversa SUBR Invierte el orden de los operandos, haciendo la resta B-A en lugar de A-B. Negativo NEG Halla el complemento a dos del operando.

33 INSTRUCCIONES LÓGICAS Y DE MANIPULACIÓN DE BITS
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.6.- Instrucciones de manipulación de datos INSTRUCCIONES LÓGICAS Y DE MANIPULACIÓN DE BITS Mediante la aplicación de operaciones lógicas, estas instrucciones permiten la manipulación de bits o de grupos de bits en palabras almacenadas en registros o en memoria. Normalmente, estas instrucciones tratan cada bit del operando individualmente. Poner a 0 (Clear) CLR Pone todos los bits del operando a 0. Nombre Nemónico Descripción Poner a 1 (Set) SET Pone todos los bits del operando a 1. Complementar NOT Complementa los bits del operando. Producto lógico AND Suma lógica OR OR exclusiva XOR Realizan la función lógica correspondiente entre dos operandos bit a bit. AND se usa con máscaras para poner selectivamente a 0 algunos bits de los operandos, OR para ponerlos a 1, y XOR para complementarlos. Complementar COMC el acarreo Estas instrucciones sobre el bit de acarreo pueden definirse para los demás bits de estado del procesador. Poner a 0 el acarreo CLRC (Clear Carry) Poner a 1 el acarreo SETC (Set Carry)

34 INSTRUCCIONES DE DESPLAZAMIENTO
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.6.- Instrucciones de manipulación de datos INSTRUCCIONES DE DESPLAZAMIENTO Permiten desplazar o rotar los bits de un operando de diversas formas: Nombre Nemónico Descripción Desplazamiento lógico a la derecha SHR C Desplazamiento lógico a la izquierda SHL C Desplazamiento aritmético a la izquierda SHLA C Desplazamiento aritmético a la derecha SHRA Rotación a la izquierda ROL Rotación a la derecha ROR C Rotación a la derecha con acarreo RORC Rotación a la izquierda con acarreo ROLC C C Los ejemplos son del procesador Intel IA-32 ISA. Indicar que la diferencia entre los desplazamientos lógicos y aritméticos suele ser que en los aritméticos se puede ver modificado el bit V de overflow, y en los lógicos no. Algunos procesadores tienen un formato para la instrucción de desplazamiento con varios campos: 1º) OP: Código de operación que indica un desplazamiento. 2º) REG: Dirección que especifica la localización del operando. 3º) TYPE: Código de dos bits que indica el tipo de desplazamiento. 4º) RL: Código de un bit que indica la dirección de desplazamiento. 5º) COUNT: Código de k bits que indica el número de posiciones a desplazar.

35 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

36 NOTACIÓN DE PUNTO FLOTANTE
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.7.- Aritmética de punto flotante NOTACIÓN DE PUNTO FLOTANTE En muchos cálculos científicos, el rango de los números que se utilizan es muy grande. Para poder representar tales números en un procesador se utiliza la notación de punto flotante. Los números en punto flotante tienen dos partes: a) Mantisa (F): Contiene el signo del número y una fracción. b) Exponente (E): indica la posición del punto decimal. Ejemplo: F = E = +04 Los números decimales N en punto flotante se interpretan como: N = F×10E. Un número binario B en punto flotante se representa de forma similar, salvo que se usa la base 2. Así, por ejemplo, con 8 bits para la mantisa y 6 para el exponente, el número binario se representaría por: F: E: Indica el signo B = F×2E = +( )2×24 Se dice que un número en punto flotante está normalizado cuando el dígito más significativo de la mantisa es distinto de 0. Por ejemplo, la mantisa decimal está normalizada, mientras que no. Los números normalizados proporcionan la máxima precisión posible. Comentar que el 0 no se puede normalizar, se representa con todos los bits de la mantisa en 0 y los del exponente en 0. Con 36 bits en complemento a 2 se pueden representar números entre -2 a la 35 y 2 a la 35 menos 1. Hay que dividir entre 2 a la 35 para mover a la izquierda el punto decimal en 35 posiciones. Esto da el 1 menos 2 a la menos 35 del ejemplo es 2 a la 11 menos 1. La notación de punto flotante incrementa el rango de los números que se pueden representar en un registro de un determinado tamaño. a) Permite representar enteros en el intervalo [-247, 247-1], aproximadamente 1.4×1014. Ejemplo: un registro de 48 bits: En punto flotante con 36 bits de mantisa y 12 de exponente, los números positivos y negativos más grandes que se pueden representar son: (1-2-35)×22047, aprox. 1.6×10616. b)

37 OPERACIONES ARITMÉTICAS
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.7.- Aritmética de punto flotante OPERACIONES ARITMÉTICAS Las operaciones aritméticas con números en punto flotante son más complicadas que con números enteros, su ejecución lleva más tiempo y requiere un hardware más complejo. Para hacer sumas y restas es necesario alinear los puntos decimales: hay que igualar los exponentes para poder sumar las mantisas. × 102 × 102 Se modifica el número de menor exponente desplazando la mantisa a la derecha un número de posiciones igual a la diferencia de exponentes Ejemplo: × 102 × 10-1 × 102 Si se produce un acarreo final (overflow), se desplaza la mantisa una posición a la derecha y se incrementa el exponente, para que el resultado final de la suma esté normalizado. Si en una resta el resultado contiene ceros en los dígitos más significativos de la mantisa, se desplaza a la izquierda y se decrementa el exponente para normalizarlo. Ejemplo: × 105 × 105 × 105 En el ejemplo de la suma, al hacer los desplazamientos a la derecha se pierde precisión. Hacerlos a la izquierda no es factible por excederse el número de bits de la mantisa. Todos los ejemplos mostrados son de números en decimal, para mayor claridad. En binario es lo mismo pero en base 2. × 103 Se desplaza la mantisa dos lugares a la izquierda y se decrementa el exponente dos veces En la mayoría de los procesadores, la normalización de los resultados se realiza automáticamente. La multiplicación y la división no necesitan alinear los puntos decimales. Para multiplicar, se hace el producto de las mantisas y se suman los exponentes. Para dividir, se dividen las mantisas y se restan los exponentes.

38 EXPONENTE SESGADO TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.7.- Aritmética de punto flotante EXPONENTE SESGADO Normalmente, los procesadores usan para la mantisa una notación de magnitud y signo. En el caso de los exponentes, en la mayoría de los casos se utilizan los llamados exponentes sesgados (biased exponents). El sesgo es un valor fijo que se suma al exponente de forma que, internamente, todos los exponentes pasen a ser positivos. En consecuencia, se elimina el signo del exponente. Ejemplo: Supongamos que manejamos un rango de exponentes E decimales entre -99 y +99. Por tanto, para su representación necesitamos dos dígitos más el signo. Utilizando como sesgo el valor 99, se tiene que el exponente sesgado e será: e = E  Si E = -99, se tiene e = 0 Si E = +99, se tiene e = 198 Así, el exponente sesgado se representará en un registro de tres dígitos como un número positivo en el rango de 000 a 198. El uso de exponentes sesgados tiene varias ventajas: Al ser números positivos, es más fácil comparar su magnitud relativa a la hora de hacer operaciones en punto flotante. - El exponente más negativo se convierte a exponente sesgado con todos los dígitos a 0. De esta forma, el cero se representa con la mantisa en cero y el exponente sesgado también en 0. -

39 NOTACIÓN ESTÁNDAR TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.7.- Aritmética de punto flotante NOTACIÓN ESTÁNDAR Las instrucciones aritméticas que realizan operaciones con datos en punto flotante utilizan habitualmente el subfijo F. Ejemplo: ADDF. Hay dos formatos estándar para la representación de operandos en punto flotante: Datos en precisión simple (32 bits), o real corto. - Datos en precisión doble (64 bits), o real largo. Cuando están disponibles los dos tipos de datos en un procesador, el nemónico de las instrucciones de precisión simple usa el subfijo FS, y los de doble precisión el subfijo FL (del inglés floating-point short y long). Ejemplos: ADDFS y ADDFL. El formato estándar IEEE (Institute of Electrical and Electronics Engineers) para un operando en precisión simple es: s e f 22 23 30 31 . . . 1 bit 8 bits 23 bits En la mantisa se inserta implícitamente un bit 1 a la izquierda del punto decimal, lo cual expande el número total de bits a 24 y hace que el operando deba estar siempre normalizado. A la componente del número binario en punto flotante, que consiste en un bit 1 implícito a la izquierda del punto decimal, junto con los bits del campo f, recibe el nombre de parte significativa. Aunque ese 1 no está presente, el hardware lo tiene en cuenta a la hora de hacer operaciones. Ejemplos: Campo f Parte significativa Equivalente decimal 1.50 1.25 1.00 (si e0)

40 Exponente sesgado e = E+127
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.7.- Aritmética de punto flotante NOTACIÓN ESTÁNDAR En el exponente se usa un sesgo igual a 127. el rango válido para los exponentes va desde -126 ( ) hasta +127 ( ). Exponente E en decimal Exponente sesgado e = E+127 Decimal Binario Ejemplos: El valor del número representado se obtiene aplicando la expresión: (-1)s × (1.f) × 2e-127 La mayor magnitud que se puede representar es: ( )× = (2-2-23)× ×1038 El valor de N=1.111…11 se puede calcular teniendo en cuenta que N+0.000…01=2. Como 0.000…01 es 2^(-23), se tiene que N=2-2^(-23). En los números no normalizados se asume que el bit a la izquierda del punto decimal es 0 en vez de 1. La menor magnitud que se puede representar es: ( )× = (1+2-23)× ×10-38 Los valores máximo ( ) y mínimo ( ) del exponente se reservan para representar condiciones excepcionales: Con e = 255 y f = 0 se representa . a) Con e = 255 y f  0 se representa NaN (Not a Number), se ignora el signo (Ej.: -1). b) Con e = 0 y f = 0 se representa 0. c) Con e = 0 y f  0 se tiene un número no normalizado (magnitud < 1.18×10-38). d)

41 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

42 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.8.- Instrucciones de control de programa Las instrucciones de un programa se almacenan en posiciones de memoria consecutivas. Cada vez que se extrae una instrucción de la memoria, el PC se incrementa para apuntar a la siguiente instrucción del programa. Las instrucciones de control de programa permiten alterar el flujo de ejecución de los programas actuando sobre el contenido del PC. Con ellas, los procesadores pueden ejecutar diferentes secuencias de instrucciones en función de los resultados de cálculos previos. Bifurcación (Branch) BR Salto (Jump) JMP Nombre Nemónico Descripción Normalmente se diferencian sólo en el modo de direccionamiento, que suele ser directo o indirecto en los saltos, y relativo en las bifurcaciones. Son instrucciones de una sola dirección, y transfieren la dirección efectiva al PC. Pueden ser incondicionales o condicionales. Salto implícito (Skip) SKP Salta la siguiente instrucción de la secuencia si se cumple una determinada condición. Para ello incrementa el PC en su fase de ejecución. No necesita campo de direcciones. Puede combinarse con una instrucción de salto incondicional para hacer una bifurcación condicional. En el primer tipo de instrucciones de comparación se tienen tres direcciones, dos de los operandos en registros y la tercera la dirección de salto en memoria. En el segundo tipo, el tercer operando es otro registro cuyo contenido se pone a 0 o a 1. Estas dos se diferencian de la tercera en que no modifican los bits de estado. Instrucciones para el manejo de subrutinas. Llamada a subrutina CALL Retorno de subrutina RET Comparación CMP Realiza la comparación de dos operandos mediante una substracción, pero sin almacenar el valor de la resta. Puede producir un salto condicional, cambiar el contenido de un registro o modificar los bits de estado. Test mediante AND TEST Realiza la función AND de dos operandos, pero sin almacenar el resultado. Puede producir los mismos efectos que la instrucción de comparación.

43 INSTRUCCIONES DE SALTO CONDICIONAL
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.8.- Instrucciones de control de programa INSTRUCCIONES DE SALTO CONDICIONAL Comprueban los bits de estado para una determinada condición: si es cierta, el control de programa se transfiere a la dirección efectiva, y si es falsa se continúa con la ejecución de la instrucción siguiente. Condición de bifurcación Nemónico Test Descripción Bifurcación si es cero BZ Z = 1 Bifurcación si no es cero BNZ Z = 0 El bit de estado Z se usa para comprobar si el resultado de una operación de la ALU es 0. Bifurcación si hay acarreo BC C = 1 Bifurcación si no hay acarreo BNC C = 0 El bit de acarreo C se usa para comprobar el acarreo después de una suma o resta en la ALU. También se utiliza en las instrucciones de desplazamiento para comprobar el bit saliente. Bifurcación si negativo BN N = 1 Bifurcación si positivo BNN N = 0 El bit de estado N refleja el estado del bit más significativo de la salida de la ALU, tanto si representa el signo como si no. Bifurcación si no hay desbordamiento BNV V = 0 Bifurcación si hay desbordamiento BV V = 1 El bit de desbordamiento V se usa en operaciones aritméticas de números con signo.

44 INSTRUCCIONES DE SALTO CONDICIONAL
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.8.- Instrucciones de control de programa INSTRUCCIONES DE SALTO CONDICIONAL Las comparaciones de dos palabras A y B se hacen mediante una operación de resta (A-B). El resultado no se almacena, pero los bits de estado se ven afectados. Para números binarios sin signo: Bifurcación si es menor o igual BLE A  B C+Z = 1 Condición de bifurcación Nemónico Condición Bits de estado Bifurcación si es mayor BH A > B C+Z = 0 Bifurcación si es mayor o igual BHE A ≥ B C = 0 Bifurcación si es menor BL A < B C = 1 Bifurcación si no es igual BNE A  B Z = 0 Bifurcación si es igual BE A = B Z = 1 Para números binarios con signo: Bifurcación si es menor o igual BLE A  B (NV)+Z = 1 Condición de bifurcación Nemónico Condición Bits de estado Bifurcación si es mayor BG A > B (NV)+Z = 0 Bifurcación si es mayor o igual BGE A ≥ B NV = 0 Bifurcación si es menor BL A < B NV = 1 Bifurcación si no es igual BNE A  B Z = 0 Bifurcación si es igual BE A = B Z = 1 El acarreo en los números sin signo es el bit de borrow (complemento del acarreo en la suma del complemento a dos).

45 SUBRUTINAS TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.8.- Instrucciones de control de programa SUBRUTINAS Es relativamente frecuente que conjuntos de instrucciones en un programa se repitan. En lugar de copiar varias veces en memoria las mismas secuencias de instrucciones, se almacenan una única vez en lo que se denomina subrutina. Cada vez que se necesite ejecutar esa secuencia se hace un salto a la primera instrucción de la subrutina. Cuando se termine de ejecutar la subrutina, se hace otro salto para volver al programa principal. La instrucción de llamada a subrutina CALL posee un campo de dirección y realiza dos operaciones: Guarda el valor del PC en una zona de almacenamiento temporal (dirección de retorno). 1ª) La dirección de la instrucción CALL se carga en el PC (primera instrucción de la subrutina). 2ª) La última instrucción de una subrutina es la de retorno al programa principal RET: carga en el PC la dirección almacenada por la instrucción CALL. Algunos procesadores utilizan una pila como almacenamiento temporal de las direcciones de retorno, lo cual permite manejar subrutinas anidadas: CALL dir: SP  SP-1 Decrementa el puntero de pila. M[SP]  PC Almacena la dirección de retorno en la pila. PC  dir Transfiere el control a la subrutina. RET: PC  M[SP] Transfiere la dirección de retorno al PC. SP  SP+1 Incrementa el puntero de pila.

46 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.1.- Conceptos de arquitectura de computación. 3.2.- Direccionamiento de operandos. 3.3.- Modos de direccionamiento. 3.4.- Arquitecturas de conjunto de instrucciones. 3.5.- Instrucciones de transferencia de datos. 3.6.- Instrucciones de manipulación de datos. 3.7.- Aritmética de punto flotante. 3.8.- Instrucciones de control de programa. 3.9.- Interrupciones.

47 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.9.- Interrupciones Un interrupción transfiere el control del programa que está en ejecución a otro programa de servicio como resultado de una petición, ya sea interna o externa al procesador. El control debe volver al programa original una vez se ha ejecutado el programa de servicio. El tratamiento de las interrupciones es similar al que se hace con las subrutinas, salvo que: Las interrupciones se producen de forma imprevisible. 1º) La dirección del programa de servicio se determina por hardware. 2º) Se almacena no sólo el valor del PC, sino también los registros del procesador. 3º) El uso de interrupciones está muy relacionado con los diferentes modos de funcionamiento de un procesador: Modo supervisor. El procesador ejecuta el sistema operativo, programa que se encarga de supervisar y controlar todos los elementos del computador. - Modo usuario. El procesador ejecuta un programa de usuario. No se tiene acceso a un conjunto de instrucciones privilegiadas, sólo permitidas en el modo supervisor. - El paso de un modo de funcionamiento al otro se puede hacer como respuesta a una interrupción. El PSR, además de almacenar los bits de estado, puede especificar qué interrupciones están permitidas y si el sistema está en modo usuario o supervisor.

48 TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
3.9.- Interrupciones Posibilidades respecto del tratamiento de la información del procesador al producirse una interrupción: Que sólo se almacene el PC. El programa que realiza el procesado de los datos para dar servicio a la interrupción debe incluir instrucciones que permitan almacenar los contenidos importantes del conjunto de registros. - Que el contenido de todos los registros se almacene de forma automática y transparente al usuario. - Que el procesador emplee varios conjuntos de registros para cada modo de funcionamiento. - Posibilidades respecto del procedimiento hardware para seleccionar la dirección de la rutina de servicio: Se asigna una única dirección de memoria. La rutina de servicio debe determinar la fuente de interrupción y proceder a atenderla. - Se asignan diferentes direcciones para cada fuente de interrupción posible. - La dirección es proporcionada por la propia fuente de interrupción. - Tratamiento de las interrupciones: Se termina de ejecutar la instrucción del programa en curso. 1º) Antes de acceder a la siguiente instrucción del programa, se comprueba si ha habido alguna petición de interrupción. 2º) Si se ha producido, se pasa a un ciclo de interrupción hardware: se almacena el valor del PC y de los registros del procesador en una pila, y se transfiere al PC la dirección de comienzo de la rutina que da servicio a la interrupción. 3º) La última instrucción de la rutina de servicio es de retorno: se extrae de la pila la dirección de retorno al programa en curso y se transfiere al PC, así como el resto de información de los registros de procesador. 4º)

49 TIPOS DE INTERRUPCIONES
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.9.- Interrupciones TIPOS DE INTERRUPCIONES Los principales tipos de interrupciones que provocan una ruptura en la ejecución normal de un programa son: 1º) Interrupciones externas. Pueden proceder de: Dispositivos de E/S, que solicitan o acaban una transferencia de datos. - Dispositivos de temporización, cuando un determinado evento no finaliza en el tiempo esperado (time-out). - La detección de un fallo de alimentación. El servicio puede incluir instrucciones para almacenar la información relevante del procesador en un medio no volátil (disco magnético). - 2º) Interrupciones internas. Reciben también el nombre de excepciones. Pueden deberse a: Desbordamiento aritmético. Ej.: división por cero. - Desbordamiento de memoria. Ej.: se excede el tamaño máximo de la pila, violación de una protección, puntero desbocado. - A veces el término excepción se usa genéricamente para denotar una interrupción de tipo cualquiera. Código de operación no válido. - 3º) Interrupciones software. Mientras que los dos tipos anteriores son iniciados por el hardware del procesador, una interrupción software se inicia mediante la ejecución de una instrucción. Se emplean para cambiar del modo usuario al modo supervisor y así solicitar algún servicio gestionado por el sistema operativo.

50 PROCESAMIENTO DE INTERRUPCIONES EXTERNAS Interrupciones externas
TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES 3.9.- Interrupciones PROCESAMIENTO DE INTERRUPCIONES EXTERNAS Si existen más líneas de interrupciones externas que entradas de interrupción al procesador, se conectan a una puerta OR para formar una línea común. Interrupciones externas Procesador (CPU) Fin de ejecución de instrucción EI es un flip-flop de habilitación de interrupción que el usuario puede poner a 1 o a 0 con dos instrucciones, ENI (enable interrupt) y DSI (disable interrupt), respectivamente. Está incluido en el PSR. Reconocimiento de interrupción Si se produce una petición de interrupción, ha terminado de ejecutarse la instrucción en curso, y EI = 1: INTACK  1 Se reconoce la interrupción SP  SP-1 Decrementa el puntero de pila M[SP]  PC Almacena la dirección de retorno en la pila M[SP]  PSR Almacena el estado del procesador en la pila EI  0 Deshabilita las interrupciones PC  IVAD Se accede a la rutina de servicio Dirección del vector de interrupción Pila en memoria La última instrucción de la rutina de servicio es un retorno. La pila se vacía y la dirección de vuelta al programa original pasa al PC. Como EI está incluido en el PSR, el sistema de interrupciones, tal y como estuviera definido en el programa original, se recupera automáticamente.


Descargar ppt "TEMA 3: ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES"

Presentaciones similares


Anuncios Google