1 Estructura y Tecnología de Computadores Módulo C. Arquitectura del procesador Tema 5. Repertorio de instrucciones y formato de la instrucción máquina José Manuel Mendías Cuadros Dpto. Dpto. Arquitectura de Computadores y Automática Universidad Complutense de Madrid 2 contenidos 1. Repertorio de instrucciones Clasificación de las instrucciones. Transferencia de datos. Instrucciones aritméticas. Instrucciones lógicas y de manipulación de bits. Desplazamiento y rotación. Control de flujo. Otras instrucciones 2. Aplicaciones del repertorio de instrucciones Ejecución alternativa. Ejecución iterativa. Subrutinas 3. Formato de la instrucción máquina Lenguaje ensamblador vs. código máquina. Elementos constitutivos de una instrucción máquina. Alternativas de diseño del formato de instrucción. Número de operandos explícitos de una instrucción. Ejemplo de diseño del formato de la instrucción máquina. Ciclo de instrucción 4. Arquitecturas CISC y RISC Arquitecturas CISC. Problemas de las arquitecturas CISC. Características de las arquitecturas RISC. Ventajas y desventajas de las arquitecturas RISC. Computadores CISC y computadores RISC. 5. Ejemplos MC68000. Arquitectura MIPS estructura y tecnología de computadores 3 1. repertorio de instrucciones Clasificación de las instrucciones Ö Transferencia de datos, permiten el movimiento entre distintos dispositivos de almacenamiento del computador Ö Aritméticas, permiten realizar operaciones de tipo aritmético Ö Lógicas y de manipulación de bits, permiten realizar operaciones lógicas, bit a bit, entre los operandos o manipular un bit del operando Ö Desplazamiento y rotación, permiten desplazar o rotar un operando a la decha. o la izda. un nº determinado de bits Ö Control de flujo, permiten romper la secuencia normal de ejecución Ö Otras instrucciones Ø Transformación de datos Ø Manipulación de direcciones Ø Creación de marcos de almacenamiento local Ø Control del sistema Ø E/S estructura y tecnología de computadores 4 1. repertorio de instrucciones Trasferencia de datos Ö Permiten el movimiento entre distintos dispositivos de almacenamiento del computador: Ø Reg → Reg Ø Reg → Mem Ø Reg → Pila Ø Mem → Reg Ø Mem → Mem Ø Mem → Pila Ø Pila → Reg Ø Pila → Mem Ö Necesario especificar: Ø Ø Ø Ø Tipo de movimiento Dirección de operandos fuente y destino Tamaño de datos a mover (byte, palabra, doble palabra, ...) Nº de elementos a mover (para movimientos múltiples) Instrucción Operación Descripción MOVE fuente,destino destino ← fuente Transfiere palabra de reg. a reg., reg. a mem, mem. a reg o mem. a mem. (fuente= mem. o reg.; destino = mem. o reg.) LOAD STORE PUSH POP MOVEM Ri, dir dir, Ri fuente destino fnte., dest., n Ri ← dir Ri ← dir Pila ← fuente destino ← Pila fnte0 ← dest0 ...... ....... fnten-1 ← destn-1 Transfiere palabra de memoria a registro estructura y tecnología de computadores Transfiere palabra de registro a memoria Transfiere palabra de mem. o reg. a la cabecera de pila Transfiere palabra de cabecera de pila a mem. o reg. Transfiere n palabras a partir de una dir. inicial fuente y una dir. inicial destino 5 1. repertorio de instrucciones Instrucciones aritméticas Ö Permiten realizar operaciones de tipo aritmético Ö Necesario especificar: Ø Ø Ø Ø Tipo de operación (suma, resta, multiplicación, división, etc.) Tipo de operandos y de aritmética (con signo, sin signo, entera, punto flotante, BCD, ...) tamaño de datos sobre los que se opera Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el repertorio) Instrucción Operación Descripción ADD SUB dest ← fnt1+fnt2 dest ← fnt1-fnt2 Suma dos operandos Resta dos operandos fnte1,fnte2,dest fnte1,fnte2,dest MULT fnte1,fnte2,dest dest ← fnt1*fnt2 Multiplica dos operandos DIV fnte1,fnte2,dest dest ← fnt1/fnt2 Divide dos operandos NEG fnte,dest dest ← - fnt Cambia de signo al operando ABS fnte,dest dest ← Abs(fnt) Obtiene el valor absoluto del operando INC DEC COMP fnte,dest fnte,dest fnte1,fnte2 dest ← fnt+1 dest ← fnt-1 fnt1-fnt2 Suma 1 al operando Resta 1 al operando Activa Estado Compara dos operandos y activa los bits de estado según el resultado de la comparación estructura y tecnología de computadores 6 1. repertorio de instrucciones Instrucciones lógicas y de manipulación de bits Ö Permiten realizar operaciones lógicas, bit a bit, entre los operandos o manipular un bit del operando Ö Necesario especificar: Ø Ø Ø Ø Tipo de operación (AND, OR, NOT, Bit Clear, Bit Set, etc) Tamaño de datos sobre los que se opera (byte, palabra, doble palabra, ...) Dirección de operandos fuente y destino (0, 1, 2 ó 3, según el repertorio) El número de bit en las instrucciones de manipulación de bit Instrucción Operación Descripción AND OR NOT XOR fnte1,fnte2,dest fnte1,fnte2,dest fnte,dest fnte1,fnte2,dest dest ← fnt1 AND fnt2 dest ← fnt1 OR fnt2 dest ← NOT fnt dest ← fnt1 XOR fnt2 Realiza la Y lógica de dos operandos Realiza la O exclusiva de dos operandos BCLR dest, n dest(n) ← 0 Pone a cero el bit especificado Realiza la O lógica de dos operandos Realiza la negación lógica del operando BSET dest, n dest(n) ← 1 Pone a uno el bit especificado BTST fnte, n Estado ← fnte(n) Activa estado según valor del bit indicado estructura y tecnología de computadores 7 1. repertorio de instrucciones Desplazamiento y rotación Ö Permiten desplazar o rotar un operando a la decha. o la izda. un nº determinado de bits Ö Necesario especificar: Ø Ø Ø Ø Tipo de operación (desplazamiento izda. o decha., rotación izda. o decha., ) Tamaño de datos sobre los que se opera (byte, palabra, doble palabra, ...) Dirección del operando Nº de bits a desplazar o rotar Instrucción Operación Descripción 0 LSL fnte,n LSR fnte,n ASL fnte,n ASR fnte,n Desplaz. aritm. decha. n bits (Arith. Shift Right) RL dest, n Rotación izda. n bits (Rotate Left) RR dest, n Rotación decha. n bits (Rotate Right) 0 Desplaz. lógico izda. n bits (Logic Shift Left) Desplaz. lógico decha. n bits (Logic Shift Right) 0 Desplaz. aritm. izda. n bits (Arith. Shift Left) estructura y tecnología de computadores 8 1. repertorio de instrucciones Control de flujo Ö Permiten romper la secuencia normal de ejecución y saltar a una determinada dirección especificada en la instrucción o implícita Ö Necesario especificar: Ø Dirección de siguiente instrucción a ejecutar si el salto es explícito Instrucción Operación Descripción JMP dir PC ← dir Salta (Jump) a la dirección especificada Bcc dir If cc=TRUE then PC ← dir Else PC ← PC + long_instr Bifurca (Branch) a la dirección especificada si la JSR dir Estado, PC → Pila; PC ← dir Salto a subrutina; guarda en pila PC y estado RTS SKIP NOP n condición es cierta Estado, PC ← Pila Retorno de subrutina; recupera de pila PC y estado PC ← PC + n* long_instr Salta el nº de instrucciones especificado PC ← PC + long_instr No ejecuta ninguna operación, pero la ejecución continúa secuencialmente estructura y tecnología de computadores 9 1. repertorio de instrucciones Control de flujo (cont .) (cont.) Ö Las instrucciones de bifurcación o salto condicional (Bcc), saltan o no en función de la condición especificada Ö Esta condición se calcula a partir de los bits de condición del registro de estado Ø Los bits de condición se activan según el resultado de las instrucciones ejecutadas anteriormente Condic. Nombre Es cierta si EQ NEQ GT GE LT LE Z NZ P N C NC V NV T F Igual (Equal) No igual (No equal) Mayor que (Greater Than) Mayor o igual (Gr. or Eq.) Menor que (Less Than) Menor o igual (Les.or Eq.) Cero (Zero) No cero (No Zero) Positivo Negativo Acarreo (Carry) No acarreo (No Carry) Desbord. (Overflow) No desbord. (No Overfl.) Verdad (True) Falso (False) En una comparación previa los operandos son iguales En una comparación previa los operandos son distintos En una comparación previa el primer operando es mayor que el segundo En una comparación previa el primer operando es mayor o igual que el segundo En una comparación previa el primer operando es menor que el segundo En una comparación previa el primer operando es menor o igual que el segundo El resultado de una operación anterior es cero El resultado de una operación anterior es distinto de cero El resultado de una operación anterior es positivo El resultado de una operación anterior es negativo El resultado de una operación anterior ha producido acareo El resultado de una operación anterior no ha producido acareo El resultado de una operación anterior ha producido desbordamiento El resultado de una operación anterior no ha producido desbordamiento Siempre cierta Siempre falsa estructura y tecnología de computadores 10 1. repertorio de instrucciones Otras instrucciones Ö En este grupo están englobadas distintas instrucciones Ø Transformación de datos Ø Cambian el formato de los datos, por ej. de decimal a binario Ø Manipulación de direcciones Ø Permiten calcular la dirección efectiva de un operando y almacenarla en un registro o en pila, p. ej. ü LEA fnte, reg (Load effective address: reg ← Dirección de fnte) ü PEA fnte (Push Effective Address: Pila ← Dirección de fnte) Ø Creación de marcos de almacenamiento local ü Permiten reservar espacio en la pila del sistema, p. ej: ü LINK reg, #tam (Pila ← reg, reg ← SP, SP ← SP+tam) ü UNLK reg (SP ← reg, reg ← Pila) Ø Control del sistema Ø Suelen ser instrucciones privilegiadas que usa el sistema operativo, p. ej.: ü RESET, para reiniciar el computador (PC ← valor inicial) ü RTE: retorno de excepción o interrupción Ø E/S Ø Para entrada y salida de datos entre el computador y dispositivos periféricos, p. ej.: ü IN dir_perif, reg (reg ← perif) ü OUT dir_perif, reg (perif ← reg ) estructura y tecnología de computadores 11 2. aplicaciones del repertorio de instrucciones Ejecución alternativa Ö Según el valor de cierta condición o valor, se decide entre varios caminos de ejecución simple doble ··· if a cc b then bloque end ··· end múltiple ··· if a0 cc0 b0 then bloque0 else if a1 cc1 b1 then bloque1 ··· else if an ccn bn then bloquen else blqelse end ··· if1 ifn else end ··· CMP a, b Bcc end bloque ··· ··· CMP Bcc0 bloque0 JMP CMP Bcc1 bloque1 JMP ··· CMP Bccn bloquen JMP blqelse ··· ··· if a cc b then blqthen else blqelse end ··· else end a0, b0 if1 end a1, b1 if2 end an, bn else end tabla selectiva ··· case a of 0: bloque0 1: bloque1 ··· n: bloquen end ··· etq0 etq1 etqn end ··· CMP a, b Bcc else blqthen JMP end blqelse ··· DATA etq0 DATA etq1 ··· DATA etqn ··· MOVE a, D1 LEA tabla(D1*tam_dir), A1 JMP (A1) bloque0 JMP end bloque1 JMP end ··· bloquen ··· estructura y tecnología de computadores 12 2. aplicaciones del repertorio de instrucciones Ejecución iterativa Ö Según el valor de cierta condición, se decide repetir la ejecución de cierto bloque de código con evaluación al final con evaluación al principio ··· repeat bloque until a cc b ··· ··· while a cc b do bloque end ··· ··· repeat bloque CMP a, b Bcc repeat ··· con un número definido de iteraciones ··· for c := n to m do bloque end ··· for end estructura y tecnología de computadores ··· MOVE CMP BGT bloque INC JMP ··· n, c m, c end c for while end ··· CMP a, b Bcc end bloque JMP while ··· 13 2. aplicaciones del repertorio de instrucciones Subrutinas ··· procedure sub( a, b :integer; var c : integer ) begin bloque end ··· sub( x, y, z ); ··· sub etq ··· PUSH PUSH PUSH PUSH MOVE MOVE MOVE bloque POP POP POP POP RTS ··· PUSH PUSH PEA JSR ADD ··· SR D0 D1 A0 14(SP), D0 18(SP), D1 20(SP), A0 A0 D1 D0 SR Suponiendo: ü una memoria direccionada por bytes ü un tamaño palabra de 16 bits ü un tamaño de dirección de 32 bits ü que un integer se representa mediante palabra MEMORIA 0 preservación del contexto SP (A0) acceso a parámetros actuales (D1) (D0) (SR) restauración del contexto etq x y z sub #8, SP posiciones relativas de los parámetros actuales 14(SP) retorno al programa llamante EA(z) paso de parámetros actuales y 18(SP) x 20(SP) llamada a la subrutina liberación del área de parámentros ¡no válidas si crece la pila! k 2 -1 estructura y tecnología de computadores 14 2. aplicaciones del repertorio de instrucciones MEMORIA 0 SP (A0) (D1) (D0) sub etq ··· LINK PUSH PUSH PUSH PUSH bloque POP POP POP POP UNLK RTS ··· PUSH PUSH PEA JSR ADD ··· ¡siempre válidas! (SR) Ai, #-6 SR D0 D1 A0 creación del área local de variables preservación del contexto A0 D1 D0 SR Ai restauración del contexto x y z sub #8, SP paso de parámetros actuales -6(Ai) ≡ loc3 -4(Ai) ≡ loc2 -2(Ai) ≡ loc1 Ai (puntero de marco) (Ai) marco de activación de sub ··· procedure sub( a, b :integer; var c : integer ) var loc1, loc2, loc3 :integer begin bloque end ··· sub( x, y, z ); ··· etq destrucción del área local de variables retorno al programa llamante liberación del área de parámetros estructura y tecnología de computadores EA(z) 2k-1 8(Ai) y 12(Ai) x 14(Ai) posiciones relativas de los parámetros actuales y de las variables locales 15 2. aplicaciones del repertorio de instrucciones Anidamiento de subrutinas MEMORIA 0 SP valores del contexto de la 1ª activación variables locales a la 2ª activación Ai (puntero de marco) dirección de retorno a la 1ª activación y valor del puntero de marco en la 1ª activación marco de 2ª activación de sub Suponiendo que la subrutina sub es recursiva, la foto de la pila tras dos llamadas es: parámetros actuales de la 2ª activación marco de 1ª activación de sub valores del contexto del programa principal variables locales a la 1ª activación dirección de retorno al programa principal y valor anterior del registro que actuará como puntero de marco parámetros actuales de la 1ª activación 2k-1 estructura y tecnología de computadores 16 ··· FORM LOAD ADD ADD STORE ··· I DATA J DATA K DATA N DATA ··· MEMORIA I J K N 0 2 3 4 0 ensamblador cargador código objeto código ejecutable 101 0010001000000001 102 0001001000000010 103 0001001000000011 104 0011001000000100 201 0000000000000010 202 0000000000000011 203 0000000000000100 204 0000000000000000 2k-1 enlazador código objeto ··· código objeto estructura y tecnología de computadores Lenguaje ensamblador vs. vs. código máquina lenguaje máquina lenguaje ensamblador 3. formato de la instrucción máquina 17 3. formato de la instrucción máquina Ö Ensamblador (assembler): Ø Resuelve las etiquetas de instrucciones y datos ð Relativas a PC para instrucciones ð Relativas a algún registro para datos Ø Expande macros y pseudo-instrucciones Ø Interpreta las directivas de ensamblaje Ø Fija la representación de los datos Ø Traduce las instrucciones a código máquina Ø Crea el fichero objeto ð Determina cabeceras, segmentos de código y segmentos de datos ð Crea tablas de símbolos: símbolos no resueltos + símbolos visibles ð Añade información para la depuración Ö Enlazador (linker): Ø Combina varios códigos objeto, resolviendo las referencias cruzadas Ø Crea un código ejecutable Ö Cargador (loader): Ø Ø Ø Ø Lee y carga sobre memoria el código ejecutable Inicializa registros, pila y argumentos Fija los vectores de excepción Salta a la rutina de inicio del programa estructura y tecnología de computadores 18 3. formato de la instrucción máquina Elementos constitutivos de una instrucción máquina Ö Código de operación (opcode) Ø Especifica el tipo de operación a realizar: Suma, Resta, Y lógica, Movimiento de datos, etc. Ö Operandos fuente Ø La instrucción puede involucrar uno o más operandos fuente (o ninguno) Ø Estos podrán especificarse utilizando distintos modos de direccionamiento Ö Operando destino Ø Si la instrucción produce un resultado deberá especificar el operando destino Ø Este podrá especificarse utilizando distintos modos de direccionamiento Ö Instrucción siguiente Ø En ocasiones es necesario especificar cuál es la siguiente instrucción a ejecutar Ø Normalmente la ejecución del programa es secuencial ð La dirección de la siguiente instrucción suele ser implícita: ð Dir. instrucción siguiente = Dir. instrucción actual + Longitud instrucción actual Ø En las instrucciones de salto sí es necesario especificar la dir. de la siguiente instrucción ð Ruptura de la secuencia normal del programa Instrucción máquina: opcode op. fuente 1 ···· estructura y tecnología de computadores op. fuente n op. destino instruc. siguiente 19 3. formato de la instrucción máquina Alternativas de diseño del formato de instrucción Ö A la hora de diseñar el formato de las instruc. máquina de un repertorio, debemos decidir: Ø Cuál será la longitud de las instrucciones ð Todas las instrucciones de igual longitud ð Instrucciones de distinta longitud, según el tipo de operación a realizar Ø De cuántos campos constará la misma (dependiendo del tipo de instrucción) Ø Cuántos bits ocuparán cada uno de esos campos Ø Codificación de cada campo Ö Los principales factores a tener en cuenta para decidir este formato son: Ø Número de operaciones distintas presentes en el repertorio ð Aritméticas, lógicas, de control, de movimiento de datos, ... Ø Número de operandos de la instrucción (incluyendo operandos fuente y destino) ð Instrucciones sin operandos ð Instrucciones con 1, 2, 3, ... operandos Ø Modos de direccionamiento disponibles para cada operando ð Inmediato, absoluto, de registro, indirecto, ..... Ø Tamaño y tipos de datos soportados ð Bit, byte, palabra, doble palabra, .... ð Caracteres, BCD, magnitud y signo, complemento a 2, punto flotante, .... estructura y tecnología de computadores 20 3. formato de la instrucción máquina Número de operandos explícitos en una instrucción Ö Una operación típica de un computador (p. ej. A = B + C) suele tener tres operandos Ø Dos operandos fuente (B y C) y un operando destino (A) Ö Las principales alternativas que se presentan son: Ø Ø Ø Ø Instrucciones con tres operandos explícitos Instrucciones con dos operandos explícitos Instrucciones con un único operando explícito Instrucciones sin operandos explícitos Instrucciones con tres operandos explícitos Ö Se especifican los tres operandos en la instrucción máquina Ø Ejemplo Cada operando puede soportar distintos modos de direccionamiento Ö Formato flexible, pero ocupa mucho espacio ADD A, B, C A← B+C Instrucciones con dos operandos explícitos Ö Dos operandos explícitos y uno implícito Ø Ø Uno de los operandos actúa como fuente y destino Cada operando puede soportar distintos modos de direccionamiento Ö Es menos flexible, pero ocupa menos espacio estructura y tecnología de computadores Ejemplo ADD B, C B← B+C 21 3. formato de la instrucción máquina Número de operandos explícitos en una instrucción (cont .) (cont.) Instrucciones con un único operando explícito Ö Se especifican un sólo operando en la instrucción máquina Ø Ø Uno de los operandos y el resultado se almacenan en un registro especial del procesador: el acumulador El operando puede soportar distintos modos de direccionamiento Ejemplo ADD B Ö Formato muy reducido, pero poco flexible Acum. ← B + Acum. Instrucciones sin operandos explícitos Ö Tanto los operandos como el resultado se almacenan en la pila del sistema Ö Ocupa muy poco espacio Ö Requiere varias instrucciones previas de acceso a la pila Ejemplo ADD (SP) ← (SP) + (SP-1) Pila (antes) SP B C Pila (después) SP B+C estructura y tecnología de computadores 22 3. formato de la instrucción máquina Número de operandos explícitos en una instrucción: EJEMPLO Ö Escribir los programas simbólicos para la siguiente operación: Y = (A-B)/(C+D*E) en un computador de 0, 1, 2 ó 3 direcciones, utilizando las instrucciones que sean necesarias y sin sobreescribir el contenido de ninguno de los operandos fuente 3 operandos SUB MULT ADD DIV Y, A, B T, D, E T, T, C Y, Y, T (Y ← A-B) (T ← D*E) (T ← T+C) (Y ← Y/T) 2 operandos MOVE SUB MOVE MULT ADD DIV Y, A Y, B T, D T, E T, C Y, T (Y ← A) (Y ← Y-B) (T ← D) (T ← T*E) (T ← T+C) (Y ← Y/T) 1 operando LOAD MULT ADD STORE LOAD SUB DIV STORE estructura y tecnología de computadores D E C Y A B Y Y (Ac ← D) (Ac ← Ac*E) (Ac ← Ac+C) (T ← Ac) (Ac ← A) (Ac ← Ac-B) (Ac ← Ac/Y) (Y ← Ac) 0 operandos PUSH PUSH MULT PUSH ADD PUSH PUSH SUB DIV POP E D C B A Y 23 3. formato de la instrucción máquina Ejemplo de diseño del formato de la instrucción máquina Ö Diseñar el formato de las instrucciones de un computador con 8 registros de propósito general que permita codificar en una instrucción de 32 bits lo siguiente: Ø 12 instrucciones de 3 operandos Ø Dos operandos que permiten direccionamiento absoluto e indirecto de memoria Ø Un operando que permite direccionamiento de registro en indirecto de registro Ø 150 instrucciones de 2 operandos Ø Un operando que permite direccionamiento absoluto e indirecto de memoria Ø Un operando que permite direccionamiento de registro en indirecto de registro Ø 30 instrucciones de 0 operandos Ö Nota: El campo dirección de los operandos con direccionamiento absoluto e indirecto de memoria será de 11 bits. Solución Ö Los operandos que permiten direccionamiento absoluto e indirecto de memoria requieren: Ø Ø 1 bit para especificar el modo de direccionamiento (m=0 → absoluto; m=1 → indirecto) 11 bits para especificar la dirección Ö Los operandos que permiten direccionamiento de registro en indirecto de registro requieren: Ø Ø 1 bit para especificar el modo de direccionamiento (m=0 → de registro; m=1 → indirecto de reg.) 3 bits para especificar el número de registro (ya que tenemos 8 registros) estructura y tecnología de computadores 24 3. formato de la instrucción máquina Solución (Cont .) (Cont.) Ö Para las 12 instrucciones de tres operandos necesitamos: Ø Ø Ø 4 bits para especificar el tipo de operación: del 0 (0000) al 11 (1011) 12 bits para especificar el primer y segundo operando respectivamente 4 bits para especificar el tercer operando Ö Para las 150 instrucciones de dos operandos necesitamos: Ø Ø Ø 8 bits para especificar el tipo de operación: del 0 (0000000) al 149 (1010101) 12 bits para especificar el primer operando 4 bits para especificar el tercer operando Ö Para las 30 instrucciones sin operandos necesitamos: Ø 5 bits para especificar el tipo de operación: del 0 (00000) al 29 (11101) Instrucción de 3 operandos 4 1 tipo m1 Código Operación 11 1 dir1 11 m2 Operando 1 dir2 Operando 2 Instrucción sin operandos 1 3 4 8 tipo Código oper. 4 1 m1 11 dir1 No usado Operando 1 8 1111 11111111 Operando 3 Código operación 5 15 tipo No usado Nomenclatura Instrucción de 2 operandos 1111 4 m3 reg 1 3 m2 reg Operando 2 estructura y tecnología de computadores mk: modo de direccionamiento del operando k dirk: dirección del operando k reg: número de registro tipo: tipo de instrucción a ejecutar 25 acceso de CPU a memoria o E/S Lectura de instrucción operación interna a la CPU 3. formato de la instrucción máquina Cálculo de EA de instrucción Lectura de operando Escritura de resultado varios operandos Decodificación de instrucción Cálculo de EA de operando varios resultados Cálculo de EA de resultado Operación cadena o vector Ciclo de instrucción estructura y tecnología de computadores 26 4. arquitecturas CISC y RISC Arquitecturas CISC (Computador (Computador de conjunto de instrucciones complejo) Ö Desde los años 60 (en que aparece la unidad de control microprogramada) hasta principio de los años 80 la tendencia ha sido incrementar la complejidad de la CPU Ø Gran número de instrucciones en el repertorio e instrucciones complejas Ø Uso de gran número de modos de direccionamiento complejos Ö Esta tendencia se debe a varias razones: Ø Aparecen lenguajes de programación de alto nivel cada vez más sofisticados ð Diseño de instrucciones complejas que permitan implementar instrucciones de alto nivel directamente o con un pequeño número de instrucciones máquina ð Una instrucción de alto nivel compleja implementable directamente en hardware, mejora la eficiencia del programa ya que se ejecuta mucho más rápidamente Ø Gracias al uso de unidad de control microprogramada, se pueden implementar estas instrucciones máquinas complejas de forma simple, sin demasiado coste para el diseñador Ø Facilidad para mantener la compatibilidad hacia abajo con los miembros de la misma familia ð Añadir nuevas instrucciones al repertorio, manteniendo las antiguas estructura y tecnología de computadores 27 4. arquitecturas CISC y RISC Problemas de las arquitecturas CISC Ö Los estudios de ejecución de programas en arquitecturas CISC revelan que Ø La mayor parte de las instrucciones complejas apenas si se utilizan en programas reales Ø Lo mismo ocurre con modos de direccionamiento complejos Ö Dificultad para diseñar compiladores eficientes Ø Al aumentar la complejidad del repertorio se hace cada vez más difícil diseñar compiladores que aprovechen realmente esta gran variedad y versatilidad de instrucciones máquina Ö Las instrucciones ocupan mucho espacio en memoria Ø Al existir un gran número de instrucciones y de modos de direccionamiento se necesita mucho espacio para codificar las instrucciones máquina y se tarda más tiempo en leerlas de memoria Ø El tiempo de acceso a memoria para captar instrucciones (Fetch) resulta cada vez más crítico conforme evolucionan los computadores Ö Debido a estos problemas a principio de los 80 surge la arquitectura RISC (Computador de conjunto de instrucciones reducido) Ø Idea básica: hacer rápidos y eficientes los casos más comunes a costa de reducir la velocidad en los casos menos comunes estructura y tecnología de computadores 28 4. arquitecturas CISC y RISC Características de las arquitecturas RISC Ö Repertorio de instrucciones simple y ortogonal Ø Sólo se dispone de instrucciones máquina básicas Ø Repertorio ortogonal: no existen varias instrucciones distintas para realizar la misma operación Ö Modos de direccionamiento sencillos Ø Cada operando sólo soporta unos pocos modos de direccionamiento simples Ö Formatos de instrucción uniformes Ø Número reducido de formatos de instrucciones distintos Ø Todas las instrucciones de longitud similar Ö Tipos de datos simples Ø Las instrucciones sólo soportan unos pocos tipos de datos básicos distintos Ö Arquitectura de tipo registro-registro Ø Sólo las instrucciones LOAD (Mem → Reg) y STORE (Reg → Mem) hacen referencia a memoria Ø El resto de instrucciones (aritméticas, lógicas, etc.) son de tipo registro-registro, Ø Tanto los operandos fuente como destino son registros de la arquitectura Ø Las arquitecturas RISC suelen caracterizarse por disponer de un gran número de registros de propósito general estructura y tecnología de computadores 29 4. arquitecturas CISC y RISC Ventajas de las arquitecturas RISC Ö Su estructura es mucho más simple Ø Es más rápido y puede trabajar a mayor velocidad Ø Su diseño es más sencillo y barato Ö Instrucciones más cortas Ø Tardan menos tiempo en leerse de memoria Ö Mayor simplicidad para generar código máquina Ø Los compiladores son más eficientes y más sencillos de diseñar Desventajas de las arquitecturas RISC Ö El compilador genera un mayor número de instrucciones máquina Ø Se necesitan varias instrucciones para ejecutar las instrucciones de alto nivel Ø Mayor número de instrucciones ↔ Instrucciones más rápidas Ö Más difícil mantener la compatibilidad entre computadores de la misma familia Ø Para diseñar un repertorio simple no se pueden “heredar” todas las instrucciones estructura y tecnología de computadores 30 4. arquitecturas CISC y RISC Computadores CISC Ö VAX 11 (desaparecido) Ö IBM Mainframes (serie 360, 370 y descendientes) Ö Intel 80x86 (i8086, i80286, i80386, i80486, Pentium, Pentium II, Pentium III) Ö Motorola MC68xxx (MC68000, MC68010, MC68020, MC68030, MC68040, MC68060 ) Computadores RISC Ö Ö Ö Ö Ö Ö Ö Motorola MC88000 (desaparecido) MIPS Rxxxx (R2000, R3000, R4000, R5000, R8000, R10000, R12000) Sun SPARC (SPARC, Super SPARC 2, Ultra SPARC I, Ultra SPARC II, Ultra SPARC III) HP PA-RISC (7100, 7200, 7300, 8000, 8200, 8500) PowerPC (601, 602, 603, 604, 620, 630, Power3) DEC Alpha (21064, 21064a, 21066a, 21164, 21164a, 21264) Intel 80860, Intel 80960 estructura y tecnología de computadores 31 5. ejemplos: MC68000 Características del MC68000 Ö Procesador CISC de 16 bits Ø Ø Ø Ø Ø Ø Aprox. 90 instrucciones máquina 12 modos de direccionamiento 9 formatos de instrucción distintos y con tamaños de una a cinco palabras Ancho del bus de datos: 16 bits Tamaño mínimo direccionable: 1 byte Ancho del bus de direcciones: 24 bits (224 bytes = 16 Mbytes de memoria direccionables) Ö Modos de funcionamiento Ø Modo usuario Ø Modo normal de ejecución de programas Ø No tiene acceso a determinadas instrucciones privilegiadas Ø No tiene acceso a determinados registros del supervisor Ø Modo supervisor Ø Modo de ejecución del Sistema Operativo y durante el tratamiento de interrupciones Ø Tiene acceso a todas las instrucciones privilegiadas y a registros del supervisor estructura y tecnología de computadores 32 5. ejemplos: MC68000 Tipos de datos y organización de la memoria Ö Bit Ö Enteros sin signo o con signo (complemento a 2) Ø Tamaño Byte (8 bits) → se representa como .b (byte) Ø Tamaño Palabra (16 bits) → se representa como .w (word) Ø Tamaño Doble Palabra o Palabra Larga (16 bits) → se representa como .l (long word) Ö Decimal BCD empaquetado (dos dígitos BCD por byte) Memoria (Ordenación Big-Endian) Palabra $000000 $000002 Byte $000000 Byte $000001 Byte $000002 Byte $000003 . . . . . $FFFFFE Byte $FFFFFE $000000 7 $000000 15 $000000 31 Byte 0 (8 bits) 0 Palabra 0 (16 bits) 0 Doble Palabra 0 (32 bits) 0 BCD 0 (2 dígitos) Byte $FFFFFF estructura y tecnología de computadores $000000 1 0 33 5. ejemplos: MC68000 Registros de la arquitectura 31 16 15 8 7 D0 D1 D2 D3 D4 D5 D6 D7 31 Ö Registros de datos (D0-D7) 0 16 15 Ocho Registros de Datos Siete Registros de Direcciones Puntero de Pila A7 (USP) de Usuario 31 0 Puntero de Pila A7' (SSP) de Supervisor 0 8 7 15 SR CCR 31 0 PC Ö Registros de direcciones (A0-A6) Ø Para operaciones con direcciones Ø Tamaños: .w, .l 0 A0 A1 A2 A3 A4 A5 A6 Ø Para operaciones con datos Ø Tamaños: .b, .w, .l Registro de Estado (CCR = Reg. de códigos de condición) Contador de Programa Ö Punteros de pila (A7, A7’) Ø Uno para usuario (A7=USP) Ø Otro para supervisor (A7’=SSP) Ö Registro de Estado (SR) Ø Parte más significativa: sólo accesible en modo supervisor Ø Parte menos significativa: códigos de condición (CCR) Ö Contador de programa (CP) Ø Apunta a la siguiente instrucción a ejecutar estructura y tecnología de computadores 34 5. ejemplos: MC68000 Registro de estado (SR) Byte del Supervisor 15 T 13 S 10 8 I2 I1 I0 Códigos de condición Byte del Usuario (CCR) 0 4 X N Z V C Modo Traza Estado Supervisor Máscara Interrupciones Extensión Negativo Códigos de Condición Cero Overflow Carry estructura y tecnología de computadores C (“Carry” o acarreo) Se activa cuando se produce un arrastre de suma o de resta V (“oVerflow” o desbordam.) Se activa cuando el resultado de una operación no se puede expresar en C’2 dentro del tamaño seleccionado Z (“Zero” o cero) Se activa cuando el resultado de una operación es cero N (Negativo) Se activa cuando el resultado de una operación es negativo X (eXtensión) Se activa cuando hay arrastre decimal en operaciones BCD 35 5. ejemplos: MC68000 Modos de direccionamiento Modo de direccionamiento Direccionamiento directo de registro Directo de registro de datos Directo de registro de direcciones Direccionamiento indirecto de registro Indirecto de registro Indirecto de registro con postincremento (*) Indirecto de registro con predecremento (*) Indirecto de registro con desplazamiento Indirecto de registro indexado con desplazamiento Direccionamiento absoluto Absoluto corto Absoluto largo Direccionamiento relativo al contador de programa Relativo al PC con desplazamiento Relativo al PC indexado con desplazamiento Direccionamiento inmediato Cálculo de EA Sintaxis EA = Dn EA = An Dn An EA = (An) EA = (An); An + N → An An + N → An; EA = (An) EA = (An) + d16 EA = (An) + (Ri) + d8 (An) (An)+ -(An) d16(An) d8(An,Ri.X) EA = XXXX EA = XXXXXX XXXX XXXXXX EA = (PC) + d16 EA = (PC) + (Ri) + d8 d16(PC) d8(PC,Ri.X) Operando = XXXXXXXX #XXXXXXXX NOTAS EA = Dirección Efectiva Dn = Registro de datos An = Registro de direcciones N = 1 si .B, 2 si .W, 4 si .L Ri = Registro índice (de datos o direcc.) d8 = Desplazamiento de 8 bits d16= Desplazamiento de 16 bits PC = Contador de Programa estructura y tecnología de computadores 36 5. ejemplos: MC68000 Formato de las instrucciones Ö Características Ø Instrucciones de 0, 1 y 2 operandos Ø 9 formatos distintos Ø Longitud entre 1 y 5 palabras Ö Contenidos de una instrucción máquina Ø Palabra operación (OW, siempre presente) Ø Primera palabra de la instrucción ü Código de operación ü Modos de direccionamiento y tamaño de los operandos Ø Palabras de extensión (EW, de 0 a 4) Ø Información adicional de los operandos ü Valor inmediato ü Desplazamiento Ö Codificación modos de direccionamiento Ø Dos campos: Modo y Registro (6 bits) estructura y tecnología de computadores Formato genérico de la instrucción máquina 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OW: Palabra operación( opcode, tamaño, EA) EW para operando inmediato (si existe, una o dos palabras) EW para dirección efectiva fuente (si existe, una o dos palabras) EW para dirección efectiva destino (si existe, una o dos palabras) Instrucciones de 0 operandos Sintáxis: OP Instrucciones de 1 operando Sintáxis: OP destino Operación: destino ← OP (destino) Instrucciones de 2 operando Sintáxis: OP fuente, destino Operación: destino ← (fuente) OP (destino) 37 5. ejemplos: MC68000 Formato de las instrucciones (cont .) (cont.) Instrucciones sin operandos (1 formato) EA Codificación de los modos de direccionamiento Directo de reg. de datos Directo de reg. de direcciones Indirecto de reg. Indirecto de reg. con postincremt. Indirecto de reg. con predecrem. Indirecto de reg. con desplaz. Indirecto de reg. Index. con desplaz. Absoluto corto Absoluto largo Relativo al PC con desplaz. Relativo al PC index. con desplaz. Inmediato modo Registro 000 001 010 011 100 101 110 111 111 111 111 111 Nº de reg. (Dn) Nº de reg. (An) Nº de reg. (An) Nº de reg. (An) Nº de reg. (An) Nº de reg. (An) Nº de reg. (An) 000 001 010 011 100 OW: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 codigo_op Ejemplos: RTS NOP Instrucciones con un operando (2 formatos) OW: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 EA destino codigo_op tamaño modo Campo tamaño 00 01 10 Tamaño operando byte (.B) palabra (.W) doble palabra (.L) Ejemplos: CLR.L D0 NEG.B (A3) (a) registro 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OW: Ejemplos: (b) registro codigo_op SWAP R1 estructura y tecnología de computadores 38 5. ejemplos: MC68000 Formato de las instrucciones (cont .) (cont.) Instrucciones de dos operandos con operando inmediato corto (2 formatos) Instrucciones con 2 operandos (3 formatos) OW: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 EA destino EA fuente cod_op tamaño Campo tamaño 01 11 10 registro modo registro 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (a) OW: Tamaño operando byte (.B) palabra (.W) doble palabra (.L) Ejemplos: OW: modo MOVE.L modo registro OW: (b) (a) dato MOVEQ #100, D0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 EA destino codigo_op dato codigo_op modo Ejemplo: ADD.L D0, D1 OR.W #S00FF,D3 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 codigo_op registro modo_op registro Ejemplos: 0 (b) registro 1 ≤ dato ≤ 8 Campo modo-op Byte Palabra Doble pal. Operación 000 001 010 <registro> OP <EA> → registro 100 101 110 <EA> OP <registro> → EA OW: registro Ejemplo: D7, 4(A5) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 codigo_op registro modo_op EA fuente/destino Ejemplos: codigo_op -128 ≤ dato ≤ 127 ADDQ SUBQ #2, D3 #1, D7 Instrucciones de bifurcación condicional (Bcc, 1 formato) 15 (c) ABCD -(A0), -(A1) EXG D1, A2 estructura y tecnología de computadores OW: 14 13 codigo_op Ejemplo: 12 11 10 9 condicion BEQ dir1 8 7 6 5 4 3 2 desplazamiento 1 0 39 5. ejemplos: MC68000 Repertorio de instrucciones Notación utilizada CÓDIGOS DE CONDICIÓN: * – 0 1 U Afectado. No afectado. Puesto a 0 (clear). Puesto a 1 (set). No definido. Modo de direccionamiento Dn An (An) (An)+ -(An) d16(An) d8(An,Ri.X) XXXX XXXXXX d16(PC) d8(PC,Ri.X) #XXXXXXXX ea X X X X X X X X X X X X dea X mea X X X X X X X X X X X X X X X X X X X X Categorías de EA cea aea X X X X X X X X X X X X X X X X adea X amea acea X X X X X X X X X X X X X X X X X X X estructura y tecnología de computadores 40 5. ejemplos: MC68000 Repertorio de instrucciones MOVIMIENTO DE DATOS Mnemotécnico EXG LEA LINK Sintaxis EXG Rm,Rn LEA <cea>,An LINK An,#<d16> Tamaño L L No MOVE MOVE from SR MOVE to CCR MOVE to SR MOVE.t <ea>,<adea> MOVE SR,<adea> MOVE <adea>,CCR MOVE <adea>,SR L,W,B W W W MOVE USP MOVE USP,An L MOVE USP MOVE An,USP L MOVEA MOVEM MOVEA.t <ea>,An MOVEM.t <lista_reg>,<cea> MOVEM.t <lista_reg>,–(An) MOVEM.t <cea>,<lista_reg> MOVEM.t (An)+,<lista_reg> MOVEP.t Dn,d(Am) MOVEP.t d(Am),Dn MOVEQ #<d8>,Dn PEA <cea> SWAP Dn UNLK An MOVEM MOVEP MOVEQ PEA SWAP UNLK estructura y tecnología de computadores XNZVC ––––– ––––– ––––– L,W L,W Función Rm↔Rn dirección fuente→An An→–(SP); SP→An SP+d16→SP (fuente)→destino SR→destino (fuente)→CCR IF S=1 SR→destino ELSE EXCEPCIÓN IF S=1 USP→An ELSE EXCEPCIÓN IF S=1 An→USP ELSE EXCEPCIÓN (fuente)→destino registros→destino L,W (fuente)→registros ––––– L,W (fuente)→destino ––––– L L W No dato (8 bits)→destino dirección→–(SP) Dn[31:16]↔Dn[15:0] An→SP; (SP)+→An –**00 ––––– – **0 0 ––––– –**00 ––––– ***** ***** ***** ***** –.–.–.–.–. ––––– 41 5. ejemplos: MC68000 ARITMÉTICA ENTERA Mnemotécnico ADD Tamaño L,W ,B Función (fuente)+(destino)→destino XNZVC ***** L,W L,W ,B L,W ,B L,W ,B (fuente)+(destino)→destino Dato+(destino)→destino d3+(destino)→destino (fuente)+(destino)+X→destino ––––– ***** ***** ***** CLR CMP CMPA CMPI CMPM DIVS Sintaxis ADD.t <ea>,Dn ADD.t Dn, <amea> ADDA.t <ea>,An ADDI.t # <dato>,<adea> ADDQ.t# <d3>, <aea> ADDX.t Dm,Dn o ADDX.t –(Am),–(An) CLR.t <adea> CMP.t <ea>,Dn CMPA.t <ea>,An CMPI.t #<Dato>,<adea> CMPM.t (Am)+,(An) DIVS <dea>,Dn L,W ,B L,W ,B L,W L,W ,B L,W ,B W – – – – – – DIVU DIVU <dea>,Dn W EXT MULS MULU NEG NEGX SUB L,W W W L,W ,B L,W ,B L,W ,B L,W L,W ,B L,W ,B L,W ,B (destino)–(fuente)→destino (destino)–Dato→destino (destino)–d3→destino (destino)–(fuente)–X→destino ––––– ***** ***** ***** TAS EXT.t Dn MULS <dea>,Dn MULU <dea>,Dn NEG.t <adea> NEGX.t <adea> SUB.t <ea>,Dn SUB.t Dn, <amea> SUBA.t <ea>,An SUBI.t # <dato>,<adea> SUBQ.t# <d3>, <aea> SUBX.t Dm,Dn SUBX.t –(Am),–(An) TAS <adea> 0→destino (destino)–(fuente);activa CCR (destino)–(fuente);activa CCR (destino)–Dato; activa CCR (destino)–(fuente);activa CCR (destino)/(fuente)→destino; Cociente→destino[15:0], Resto→destino[31:16] (destino)/(fuente)→destino; Cociente→destino[15:0], Resto→destino[31:16] Dn(Extend en signo)→Dn (fuente)*(destino)→destino (fuente)*(destino)→destino 0–(destino)→destino 0–(destino)–X→destino (destino)–(fuente)→destino B TST <adea> L,W ,B Test (destino)→CCR; 1→destino[bit 7] Test (destino)→CCR –**00 TST ADDA ADDI ADDQ ADDX SUBA SUBI SUBQ SUBX 0100 **** **** **** **** ***0 –***0 –**00 –**00 –**00 ***** ***** ***** –**00 estructura y tecnología de computadores 42 5. ejemplos: MC68000 OPERACIONES LÓGICAS Mnemotécnico AND Tamaño L,W,B Función (fuente)<AND>(destino)→destino XNZVC –**00 ANDI ANDI to CCR ANDI to SR* Sintaxis AND.t <dea>,Dn AND.t Dn,<amea> ANDI.t #<dato>,<adea> ANDI #<d8>,CCR ANDI #<d16>,SR L,W,B B W –**00 ***** ***** EOR EORI EORI to CCR EORI to SR* EOR.t Dn,<adea> EORI.t #<dato>,<adea> EORI #<d8>,CCR EORI #<d16>,SR L,W,B L,W,B B W NOT OR NOT.t <adea> OR.t <dea>,Dn OR.t Dn,<amea> ORI.t #<dato>, <adea> ORI #<d8>,CCR ORI #<d16>,SR L,W,B L,W,B dato<AND>(destino)→destino d8<AND>CCR →CCR IF S=1 d16 <AND>SR→SR ELSE EXCEPCIÓN (fuente)<XOR>(destino)→destino dato<XOR>(destino)→destino d8<XOR>CCR →CCR IF S=1 d16<XOR>SR→SR ELSE EXCEPCIÓN <NOT>(destino)→destino (fuente)<OR>(destino)→destino ORI ORI to CCR ORI to SR* L,W,B B W dato<OR>(destino)→destino d8<OR>CCR→CCR IF S=1 d16<OR>SR→SR ELSE EXCEPCIÓN –**00 –**00 ***** ***** –**00 –**00 –**00 ***** ***** DESPLAZAMIENTOS Y ROTACIONES Mnemotécnico ASL/ASR ASL/ASR Sintaxis ASL/ASR Dm,Dn ASL/ASR #<d3>,Dn ASL/ASR<amea> Tamaño L,W,B LSL/LSR Igual que ASL/ASR W (contador desplaz.=1) Idem ROL/ROR Igual que ASL/ASR Idem ROXL/ROXR Igual que ASL/ASR Idem estructura y tecnología de computadores Función (destino) desplaz. aritmet. de <num> bits→destino (destino) desplaz. aritmet. de 1 bit →destino (destino) desplaz. logico de <num> (o 1)bits→destino (destino) rotado <num> (o 1)bits→destino (destino) rotado (con exten.) <num> (o 1)bits→destino XNZVC ***** ***** ***0* –**0* ***0* 43 5. ejemplos: MC68000 MANIPULACIÓN DE BITS Mnemotécnico BCHG BCLR Sintaxis BCHG Dm,Dn o BCHG #<d8>,Dn BCHG Dm, <amea> o BCHG #<d8>,<amea> Igual que BCHG BSET Igual que BCHG BTST BTST Dm,Dn o BTST #<d8>,Dn BTST Dm,<mea> o BTST #<d8>,<mea> BCHG BTST Tamaño L (bit mod 32) XNZVC ––*–– B (bit mod 8) Función <NOT>(destino[bit])→flag Z; <NOT>(destino[bit])→destino[bit] Igual ––*–– L (bit mod 32) <NOT>(destino[bit])→flag Z; 0→destino[bit] <NOT>(destino[bit])→flag Z; 1→destino[bit] <NOT>(destino[bit])→flag Z B (bit mod 8) Igual ––*–– ––*–– ––*–– ––*–– OPERACIONES DE CONTROL DE PROGRAMA Mnemotécnico Bcc Sintaxis Bcc <etiqueta> Tamaño Desplaz. 16 bits Función IF cc True PC+despl.→PC XNZVC ––––– Bcc.S BRA BSR DBcc Bcc.S <etiqueta> BRA <etiqueta> BSR <etiqueta> DBccDm, <etiqueta> Desplaz. 8 bits Despl. 8 o 16 bits Despl. 8 o 16 bits Desplaz. 16 bits ––––– ––––– ––––– ––––– JMP JSR Scc JMP <cea> JSR <cea> Scc <adea> No No B RTR RTS RTR RTS No No IF cc True PC+despl.→PC PC+desp.→PC PC→–(SP); PC+desp.→PC IF cc False Dm–1 → Dm IF Dm ≠–1 PC+desp.→PC ELSE PC+2→PC (instr. sig.) destino→PC PC→–(SP); destino→PC IF cc True $FF→destino ELSE $00 →destino (SP)+→CCR; (SP)+→PC (SP)+→PC ––––– ––––– ––––– ***** ––––– estructura y tecnología de computadores 44 5. ejemplos: MC68000 OPERACIONES EN BCD Mnemotécnico ABCD NBCD SBCD Sintaxis ABCD Dm,Dn ABCD –(Am),–(An) NBCD<adea> SBCD Dm,Dn SBCD –(Am),–(An) Tamaño B B B Función (fuente10)+(destino10)+X→ destino10 0–(destino10)–X→destino10 (fuente10)–(destino10)–X→ destino10 XNZVC *U*U* Función IF S=1 activa RESET ELSE EXCEPCIÓN IF S=1 (SP)+→SP;(SP)+→PC ELSE EXCEPCIÓN IF S=1 d16→SR;PC+4→PC; Pausa hasta excepcion ELSE EXCEPCIÓN IF Dn<0 OR Dn>(fuente) EXCEPCIÓN PC→–(SSP);SR→–(SSP) Vector #4→PC PC→–(SSP);SR→–(SSP) Vector #4→PC IF V=1 EXCEPCIÓN PC+2→PC XNZVC ––––– *U*U* *U*U* OPERACIONES DE CONTROL DEL SISTEMA Mnemotécnico RESET* Sintaxis RESET Tamaño No RTE* RTE No STOP* STOP #<d16> No CHK CHK <dea>,Dn W ILLEGAL ILLEGAL No TRAP TRAP #<d4> No TRAPV NOP TRAPV NOP No No estructura y tecnología de computadores ***** ***** – * UUU ––––– ––––– ––––– ––––– 45 5. ejemplos: arquitectura MIPS Características generales Ö Procesador RISC de 32 bits Ø ~70 instrucciones máquina ð Repertorio ortogonal ð Instrucciones clasificadas en cuatro grupos ü ü ü ü Movimiento de datos Aritmética entera, logicas y desplazamiento Control de flujo Aritmética en punto flotante Ø 4 modos de direccionamiento ð Inmediato ð Directo de registros ð Indirecto con desplazamiento ð Indirecto con desplazamiento relativo al PC Ø Banco de 64 registros (32 bits cada uno) ð 32 de propósito general (R0-R31) ð 32 para instrucciones en punto flotante (F0-F31). Pueden usarse como: ü 32 registros para operaciones en simple precisión (32 bits) ü 16 registros para operaciones en doble precisión (64 bit) Ø 3 formatos de instrucción distintos con longitud única de 32 bits Ø Arquitectura registro-registro ð Sólo las instrucciones de LOAD y STORE hacen referencia a memoria ð El resto de instrucciones operan sobre registros ü Instrucciones con tres operandos: 2 op. fuente y 1 op. Destino ü Notación ensamblador: op x, y, z x ← (y) op (z) estructura y tecnología de computadores 46 5. ejemplos: arquitectura MIPS Tipos de datos Ö Enteros Ö Reales en punto flotante Ø Tamaño Byte (8 bits) Ø Tamaño Media palabra (16 bits) Ø Tamaño Palabra (32 bits) Ø Simple precisión (32 bits) Ø Doble precisión (64 bits) Memoria (Ordenación Little-Endian) Palabra $00000000 $00000004 Media palabra $0 Byte $0 Byte $4 Media palabra $2 Byte $1 Byte $5 Media palabra $4 Byte $2 Byte $6 Byte $3 Byte $7 Bit signo $0 0 Byte $0 (8 bits) 7 Media palabra $0 (16 bits) $0 0 15 Palabra $0 (32 bits) . . . . . Media palabra $6 $FFFFFFFC estructura y tecnología de computadores $0 0 31 Real Simple precisión $0 (32 bits) $0 0 31 Real Doble Precisión $0 (64 bits) $0 0 $4 63 47 5. ejemplos: arquitectura MIPS Modos de direccionamiento Ö Directo de registro op rs rt rd registro Ö Inmediato op rs rt Inmed. Ö Indirecto con desplazamiento op rs rt Inmed. registro Ö Indirecto con desplazamiento relativo a PC op rs PC rt Memoria + Inmed. Memoria + estructura y tecnología de computadores 48 5. ejemplos: arquitectura MIPS Formato de la instrucción máquina Ö Instrucción de tipo I Ø Instrucciones de LOAD/STORE 6 5 5 16 op rs1 rd Inmed. Código Reg. Reg. Operac. fuente destino Valor inmediato Ö Instrucción de tipo R 6 5 op 5 5 11 rs1 rs2 rd función Código Reg. Reg. Reg. Función Operac. fnte. 1 fnte. 2 destino a realizar LW $1, 30($2) R1 ← Mem(30+(R2)) SF 60($5), $10 Mem(60+(R5)) ← (R10) Ø Instruc. con operando inmediato Ej.: ADDI $7, $9, #30 R7 ← (R9) + 30 Ø Instruc. de bifurcación condicional Ej.: BNE $5, $6, #0x0C if (R5 ≠ R6) then PC ← 0x0C Ej.: Ø Instruc. aritméticas, lógicas y desplazamiento de tipo de registro-registro Ej.: SUB $1, $2, $3 R1 ← (R2) - (R3) SLL $1, $2, $3 R1 ← (R2) << (R3) Ø Campo función: Especifica el tipo de operación a realizar Suma, Resta, Mult. Div., And, Or, Desplaz., etc. Ö Instrucción de tipo J 6 26 op Código Operac. Dirección destino Ø Instrucciones de salto Ej.: J dir PC ← dir Dirección destino del salto estructura y tecnología de computadores 49 5. ejemplos: arquitectura MIPS Repertorio de instrucciones Instrucción de movimiento de datos Instrucción Significado Ejemplo Operación LB Load byte LB R2 [24-31] ← Mem(40+(R3))8; R1[0-23]←(signo(Mem(40+(R3))))24 LBU Load byte unsigned LBU $2, 40($3) R2 [24-31] ← Mem(40+(R3))8; R1[0-23]←(0)24 LH Load half word LH R2 [16-31] ← Mem(40+(R3))16; R1[0-15]←(signo(Mem(40+(R3))))16 $2, 40($3) $2, 40($3) LHU Load half word unsigned LHU $2, 40($3) R2 [16-31] ← Mem(40+(R3))16; R1[0-15]←(0)16 LW Load word LW $2, 40($3) R2 [0-31] ← Mem(40+(R3))32 LF Load Float LF $2, 40($3) F2 [0-31] ← Mem(40+(R3))32 LD Load double float LD $2, 40($3) F2 [0-31], F3 [0-31] ← Mem(40+(R3))64 SB Store byte SB 40($3),$2 Mem(40+(R3))8 ← R2 [24-31] SH Store half word SB 40($3),$2 Mem(40+(R3))16 ← R2 [16-31] SW Store word SB 40($3),$2 Mem(40+(R3))32 ← R2 [0-31] SF Store float SB 40($3),$2 Mem(40+(R3))32 ← F2 [0-31] SD Store double float SB 40($3),$2 Mem(40+(R3))64 ← F2 [0-31], F3 [0-31] estructura y tecnología de computadores 50 5. ejemplos: arquitectura MIPS Repertorio de instrucciones Instrucción de aritmética entera, lógicas y desplazamiento Instrucción ADD/ADDU ADDI/ADDIU SUB/SUBU SUBI/SUBIU MULT/MULTU DIV/DIVU Significado Suma con/sin signo Suma inmediato con/sin signo Resta con/sin signo Resta inmediato con/sin signo Multiplicación con/sin signo División con/sin signo Ejemplo ADD $1,$2,$3 ADDI $1,$2,#5 SUB $1,$2,$3 SUBI $1,$2,#5 MULT $1,$2,$3 DIV $1,$2,$3 AND ANDI OR ORI XOR XORI SLL/SRL SLLI/SRLI SRA SRAI Scc * SccI * Y lógica Y lógica con inmediato O lógica O lógica con inmediato O exclusiva O exclusiva con inmediato Desplaz. lógico Izda./decha. Desp. Lóg. Izda./decha. con inmed. Desplaz. aritmético derecha Desplaz. aritm. Dcha. con inmed. Set condicional Set condicional con inmediato AND ANDI OR ORI XOR XORI SLL SLLI SRA SRA SLT SEQI (*) cc = LT, GT, LE, GE, EQ, NE estructura y tecnología de computadores $1,$2,$3 $1,$2,#5 $1,$2,$3 $1,$2,#5 $1,$2,$3 $1,$2,#5 $1,$2,$3 $1,$2,#4 $1,$2,$3 $1,$2,#4 $1,$2,$3 $1,$2,#0 Operación R1 ← (R2) + (R3) R1 ← (R2) + 5 R1 ← (R2) - (R3) R1 ← (R2) - 5 R1 ← (R2) * (R3) R1[0-15] ← Cociente ((R2) / (R3)) R1[16-31] ← Resto ((R2) mod (R3)) R1 ← (R2) AND (R3) R1 ← (R2) AND 5 R1 ← (R2) OR (R3) R1 ← (R2) OR 5 R1 ← (R2) XOR (R3) R1 ← (R2) XOR 5 R1 ← (R2) << (R3) R1 ← (R2) << 4 R1 ← (R2) << (R3) (mantiene signo) R1 ← (R2) << 4 (mantiene signo) if (R2)<(R3) then R1 ← 1, else R1 ← 0 if (R2) = 0 then R1 ← 1, else R1 ← 0 51 5. ejemplos: arquitectura MIPS Repertorio de instrucciones Instrucción de control de flujo Instrucción J JR BEQZ BNEQZ JAL JALR TRAP RFE Significado Salto (jump) Salto con registro Bifurcación condic. si igual a cero Bifurcación condic. si distinto de cero Salto y link Salto y link con registro Provoca una excepción Retorno de excepción Ejemplo J dir JR $2 BEQZ dir, $4 BNEQZ dir, $4 JAL dir JALR dir, $2 Operación PC ← dir PC ← (R2) if (R4) = 0 then PC ← (R4) if (R4) ≠ 0 then PC ← (R4) R31 ← (PC) + 4; PC ← dir R31 ← (PC) + 4; PC ← (R2) Instrucción de aritmética en punto flotante Instrucción ADDF/ADDD SUBF/SUBD MULTF/MULTD DIVF/DIVD CVTI2F/CVTI2D CVTF2I/CVTF2D CVTD2I/CVTD2F Significado Suma en punto flotante simple/doble precisión Resta en punto flotante simple/doble precisión Multiplicación en punto flotante simple/doble precisión División en punto flotante simple/doble precisión Convierte entero a real simple precisión / doble precisión Convierte real simple precisión a entero / real doble precisión Convierte real doble precisión a entero / real simple precisión estructura y tecnología de computadores