Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
apuntes_arquitectura_computadores/3.1.2 Repertorio de instrucciones.pdf Estructura y Tecnología de Computadores Módulo 3.1.2 – Hoja de Problemas 1 Problema 1. Compare las máquinas de cero, una, dos y tres direcciones, escribiendo programas que calculen: X=(A+B*C)/(D‐E*F) para cada una de las cuatro máquinas. Las instrucciones de que se dispone son: 0 Direcciones 1 Dirección 2 Direcciones 3 Direcciones PUSH M LOAD M MOVE Z,Y (Z=Y) MOVE X,Y (X=Y) POP M STORE M ADD X,Y (X=X+Y) ADD X,Y,Z (X=Y+Z) ADD ADD M SUB X,Y (X=X‐Y) SUB X,Y,Z (X=Y‐Z) SUB SUB M MUL X,Y (X=X×Y) MUL X,Y,Z (X=Y*Z) MUL MUL M DIV X,Y (X=X/Y) DIV X,Y,Z (X=Y*Z) DIV DIV M Problema 2. Comparar los computadores de 1, 2 y 3 direcciones escribiendo los programas para calcular la expresión X= (A+B*C) / (D‐E*F‐G*H), siendo los repertorios los siguientes: a) 1 Dirección: LOAD M; STORE M; SUM M; RES M; MUL M; DIV M. b) 2 Direcciones: MOVE X,Y; SUM X,Y; RES X,Y; MUL X,Y; DIV X,Y c) 3 Direcciones: SUM X,Y,Z; RES X,Y,Z; MUL X,Y,Z; DIV X,Y,Z Donde M es una posición de memoria y X, Y, Z son direcciones de memoria o registros. Problema 3. Sea un computador con palabras de 32 bits. La CPU tiene 64 instrucciones diferentes de un operando, 32 registros de propósito general de 32 bits y posibilidad de direccionamiento directo a registro o indirecto con desplazamiento a registro‐base. a) Diseñar el formato de instrucción para este computador. Debe especificar un registro de dirección y un desplazamiento, además del modo de direccionamiento y código de operación. b) ¿Cuál es el máximo valor del desplazamiento (el desplaz. es un número en C2)? Problema 4. Un computador con palabras de 24 bits posee 16 instrucciones diferentes de un operando, 8 registros para de propósito general, y 3 modos de direccionamiento (directo a registro, indirecto con registro e indirecto con desplazamiento a registro‐base). a) Diseñar un formato de instrucción para este computador. Debe especificar el código de operación, el modo de direccionamiento, un registro y un desplazamiento. b) ¿Cuál es el rango de valores del desplazamiento en magnitud?, ¿y en C2? Problema 5. Un computador tiene un formato de instrucción de 11 bits donde el campo de operando es de 4 bits. ¿Es posible codificar en este formato 5 instrucciones de dos operandos, 45 de un operando y 48 sin operando? Justificar la respuesta. Problema 6. Un computador de 16 bits de ancho de palabra (instrucciones, palabra de memoria, registros) y 8 registros, tiene el siguiente repertorio de instrucciones: 14 instrucciones de referencia de un solo operando en memoria, con direccionamiento directo e indirecto de memoria, 31 instrucciones con dos operandos con los modos de direccionamiento directo e indirecto de registro y 32 instrucciones sin operando explícito. a) Especificar la codificación de las instrucciones. b) Especificar la zona de memoria alcanzable en cada tipo de direccionamiento y rango posible de valores de los operandos (en C2). Problema 7. Se tiene un computador con un ancho de palabra de 32 bits y con un banco de registros de 32 registros de 32 bits. El computador tiene 64 instrucciones diferentes y los siguientes modos de direccionamiento; directo de memoria, indirecto de memoria e indirecto con desplazamiento a registro‐ base. Estructura y Tecnología de Computadores Módulo 3.1.2 – Hoja de Problemas 2 a) Diseñar los dos formatos de las instrucciones de dos operandos sabiendo que siempre un operando está en memoria y otro en registro. b) Si cada dirección de memoria especifica un byte ¿qué zona de memoria se puede acceder con cada uno de los modos de direccionamiento? Problema 8. Sabiendo que el banco de registros contiene los siguientes datos: <R0>=0;<R1>=100;<R2>=89;<R3>=60;<R4>=5;<R5>=765, <R6>=676;<R7>=837 Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuación: <25>=87, <26>=986, <27>=75, <28>=876, <29>=63, <30>,=654 <200>=65, <201>=424, <202>=87, <203>=53, <204>=765, <205>=53, Indicar donde se almacena y cuál es el resultado de las siguientes instrucciones: a) ADD R3,R5,R4 b) SUB R3,R5,R4 c) SUB R3,R4,#45 Sabiendo que el primer operando de las operaciones es el destino Problema 9. Sabiendo que el banco de registros contiene los siguientes datos: <R0>=0;<R1>=100;<R2>=89;<R3>=29;<R4>=25;<R5>=27, <R6>=676;<R7>=837 Y que el contenido de un conjunto de posiciones de memoria es el que aparece a continuación: <25>=87, <26>=986, <27>=75, <28>=876, <29>=63, <30>,=203 <200>=29, <201>=424, <202>=28, <203>=30, <204>=27, <205>=53, Indicar donde se almacena y cuál es el resultado de las siguientes instrucciones: a) SUB R7,(200),(R3) b) MUL (202),(203),(204) Problema 10. Mostrar el contenido de todos los registros y posiciones de memoria afectadas (sin incluir el PC) por la ejecución de cada una de las siguientes instrucciones del MC68000: a) CLR.L ‐(A1) b) CLR.W D2 c) MOVE.W $1204,D1 d) MOVE.W #$1204,D1 e) MOVE.B (A2)+,$1200 f) MOVE.L D1,‐(A2) g) MOVE.L (A1)+,D2 Suponer que partimos siempre de las siguientes condiciones iniciales: REGISTROS: A1:00001202, A2:00001204, D1:01020304, D2:F0F1F2F3 MEMORIA: 001200:1111, 001202:2222, 001204:3333, 001206:4444, 001208:5555, 0120A:6666 Problema 11. Mostrar el contenido de todos los registros y posiciones de memoria afectadas (sin incluir el PC) por la ejecución de cada una de las siguientes instrucciones del MC68000: a) MOVEA.W ‐(A1),A3 b) CLR.B ‐11(A2) c) MOVE.W (A4)+,‐100(A1,D5.W) d) MOVE.W #$1FF,D5 Suponer que partimos siempre de las siguientes condiciones iniciales: REGISTROS: A1:00001504, A2:00001510, A3:11122233, A4:00001506, D5:FA000064 MEMORIA: 001500:1234,001502:5678,001504:9ABC,001506:EF11,001508:2233,00150A:4455 Problema 12. Suponiendo que se dan las siguientes condiciones iniciales en un MC68000: REGISTROS: A1:00001504, A2:00001510, A4:00001506 D3:11122233, D5:FA000070, D6:AB00FF9B Estructura y Tecnología de Computadores Módulo 3.1.2 – Hoja de Problemas 3 MEMORIA: 001500:1234, 001502:5678, 001504:9ABC 001506:EF11, 001508:2233, 00150A:4455 Mostrar el contenido de todos los registros y posiciones de memoria afectadas (incluyendo el contador de programa) por la ejecución de cada una de las instrucciones. Suponer que las instrucciones están en posiciones consecutivas de memoria, a partir de la direccion $2000, y que se ejecutan en secuencia. CLR.B ‐(A4) MOVE.L ‐124(A2, D5.W), ‐(A1) MOVE.W $64(A4, D6.W), D3 Problema 13. Considera el siguiente programa ARM. El programa llama a una subrutina HexOut para convertir el número VALUE a hexadecimal e imprimirlo en pantalla. SWI 0x11 sale del programa y SWI 0x00 imprime el carácter ubicado en los 8 bits menos significativos de r0 en pantalla. AREA Hex_Out, CODE, READONLY SWI_WriteC EQU &0 SWI_Exit EQU &11 ENTRY LDR r1, VALUE BL HexOut SWI Swi_Exit VALUE DCD &12345678 HexOut MOV r2, #8 LOOP MOV r0, r1, LSR #28 CMP r0, #9 ADDGT r0, r0, #‘A’-10 ADDLE r0, r0, #’0’ SWI SWI_WriteC MOV r1, r1, LSL #4 SUBS r2, r2, #1 BNE LOOP MOV pc, r14 END a) ¿Qué registros afecta la instrucción BL? b) ¿Qué hace la instrucción MOV r0, r1, LSR #28? c) ¿Cuál es el efecto de la instrucción MOV r1, r1, LSL #4? Problema 14. Transforme los siguientes fragmentos de programa al lenguaje ensamblador ARM a) f = (a+b)‐(c+d); b) if(a==b) f=a+b; else f=a‐b; apuntes_arquitectura_computadores/3.1.2.repertorio de instrucciones y formato de la insttruccion maquina.pdf 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Parte III. Diseño del procesador Módulo 3.1 Lenguaje máquina y ensamblador Ingeniería Técnica en Informática Facultad de Informática - Universidad Complutense de Madrid 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Índice 1 Repertorio de instrucciones Clasificación de las instrucciones 2 Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución iterativa Subrutinas 3 Formato de la instrucción máquina Alternativas de diseño Número de operandos explícitos Ejemplos 4 Arquitecturas CISC y RISC Arquitecturas CISC Arquitecturas RISC Ejempos 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Clasificación de las instrucciones (1/2) 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 no determinado de bits Control de flujo, permiten romper la secuencia normal de ejecución 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Clasificación de las instrucciones (2/2) Otras instrucciones Transformación de datos Manipulación de direcciones Creación de marcos de almacenamiento local Control del sistema Entrada / Salida 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Transferencia de datos (1/2) Permiten el movimiento entre distintos dispositivos de almacenamiento del computador (registros, memoria y pila) Necesario especificar Tipo de movimiento Dirección de operandos fuente y destino Tamaño de datos a mover (byte, palabra, doble palabra, ...) No de elementos a mover (para movimientos múltiples) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Transferencia de datos (2/2) Instrucción Operación Descripción MOVE fnte, dest dest ← fnte Transfiere palabra de reg. a reg., reg. a mem, mem. a reg o mem. a mem. (fuente= mem. o reg.; des- tino = mem. o reg.) LOAD Ri, dir Ri ← dir Transfiere palabra de memoria a registro STORE dir, Ri Ri ← dir Transfiere palabra de registro a memoria PUSH fnte Pila ← fnte Transfiere palabra de mem. o reg. a la cabecera de pila POP dest dest ← Pila Transfiere palabra de cabecera de pila a mem. o reg. MOVEM fnte, dest, n dest0 ← fnte0 Transfiere n palabras a partir de una dir. inicial fuente y una dir. inicial destino destn−1 ← fnten−1 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Instrucciones aritméticas (1/2) 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) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Instrucciones aritméticas (2/2) Instrucción Operación Descripción ADD fnt1,fnt2,dest dest←fnt1+fnt2 Suma dos operandos SUB fnt1,fnt2,dest dest←fnt1-fnt2 Resta dos operandos MULT fnt1,fnt2,dest dest←fnt1×fnt2 Multiplica dos operandos DIV fnt1,fnt2,dest dest←fnt1/fnt2 Divide dos operandos NEG fnte,dest dest←-fnte Cambia de signo al operando ABS fnte,dest dest←abs(fnte) Obtiene el valor absoluto INC fnte,dest dest←fnte+1 Suma 1 al operando DEC fnte,dest dest←fnte-1 Resta 1 al operando COMP fnt1,fnt2 fnt1-fnt2 Resta y activa los bits de estado según resultado 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Instrucciones lógicas y de manipulación de bits (1/2) 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Instrucciones lógicas y de manipulación de bits (2/2) Instrucción Operación Descripción AND fnt1,fnt2,dest dest←fnt1∧fnt2 Y lógica OR fnt1,fnt2,dest dest←fnt1∨fnt2 O lógica NOT fnte,dest dest← ¬fnte Negación XOR fnt1,fnt2,dest dest←fnt1⊕fnt2 O exclusiva BCLR dest,n dest(n)←0 Pone a 0 el bit n BSET dest,n dest(n)←1 Pone a 1 el bit n BTEST fnte,n Estado←fnte(n) Activa flag según bit n 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Desplazamiento y rotación (1/2) Permiten desplazar o rotar un operando a la decha. o la izda. un no 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 No de bits a desplazar o rotar 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Desplazamiento y rotación (2/2) Instrucción Operación Descripción LSL fnte,n Desp. lógico izda. n bits LSR fnte,n Desp. lógico dcha. n bits ASL fnte,n Desp. aritm. izda. n bits ASR fnte,n Desp. aritm. dcha. n bits RL fnte,n Rotación izquierda n bits RR fnte,n Rotación derecha n bits 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Control de flujo (1/4) 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 Las instrucciones de bifurcación o salto condicional (Bcc), saltan o no en función de la condición especificada (cc) 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 que se detallan en las siguientes tablas 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Control de flujo (2/4) Instrucción Operación Descripción JMP dir PC←dir Salta (Jump) a dir Bcc dir if(cc) PC←dir Bifurca (Branch) a dir else PC←PC+longInstr si (cc) es cierta JSR dir Pila←(PC,STR) Salto a subrutina PC←dir Guarda PC y estado RTS (PC,STR)←Pila Retorno subrutina, recupera PC y STR SKIP n PC←PC+n×longInstr Salta n instrucciones NOP PC←PC+longInstr No hace nada, siguiente instr. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Control de flujo (3/4) cc Nombre Cierta si EQ Igual (Equal) En una comparación previa los operandos son iguales NEQ No igual (No equal) En una comparación previa los operandos son distintos GT Mayor que (Greater Than) En una comparación previa el primer operan- do es mayor que el segundo GE Mayor o igual (Gr. or Eq.) En una comparación previa el primer operan- do es mayor o igual que el segundo LT Menor que (Less Than) En una comparación previa el primer operan- do es menor que el segundo LE Menor o igual (Les.or Eq.) En una comparación previa el primer operan- do es menor o igual que el segundo Z Cero (Zero) El resultado de una operación anterior es cero NZ No cero (No Zero) El resultado de una operación anterior es dis- tinto de cero 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Control de flujo (4/4) cc Nombre Cierta si P Positivo El resultado de una operación anterior es po- sitivo N Negativo El resultado de una operación anterior es ne- gativo C Acarreo (Carry) El resultado de una operación anterior ha producido acareo NC No acarreo (No Carry) El resultado de una operación anterior no ha producido acareo V Desbord. (Overflow) El resultado de una operación anterior ha producido desbordamiento NV No desbord. (No Overfl.) El resultado de una operación anterior no ha producido desbordamiento T Verdad (True) Siempre cierta F Falso (False) Siempre falsa 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Otras instrucciones (1/2) 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 LEA fnt,reg (Load effective address: reg ← Dir de fnt) PEA fnt (Push Effective Address: Pila ← Dir 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) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Repertorio de instrucciones Clasificación de las instrucciones Otras instrucciones (2/2) Control del sistema Suelen ser instrucciones privilegiadas que usa el sistema operativo 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 IN dirPerif,reg (reg←Periférico) OUT dirPerif,reg (Periférico←reg) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución alternativa Según el valor de cierta condición o valor, se decide entre varios caminos de ejecución Simple: Un sólo if Doble: if..else Múltiple: Múltiples if..elseif Selectiva: switch, case 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución alternativa simple . . . i f ( a cc b ) then b loque end · · · · · · CMP a , b BNcc end b loque end . . . 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución alternativa doble · · · i f ( a cc b ) then b l q th en e l s e b l q e l s e end · · · · · · CMP a , b BNcc e l s e b l q th en JMP end e l s e b l q e l s e end · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución alternativa múltiple · · · i f ( a0 cc0 b0 ) then b loque0 e l s e i f ( a1 cc1 b1 ) then b loque1 · · · e l s e i f ( an ccn bn ) then b loquen e l s e b l q e l s e end · · · CMP a0 , b0 BNcc0 i f 1 b loque0 JMP end i f 1 CMP a1 , b1 BNcc1 i f 2 b loque1 JMP end · · · i f n CMP an , bn BNccn e l s e b loquen JMP end e l s e b l q e l s e end · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución alternativa selectiva · · · case a of 0 : b loque0 1 : b loque1 · · · n : b loquen end · · · t a b l a DATA etq0 DATA etq1 · · · DATA etqn · · · MOVE a ,D1 LEA t a b l a (D1∗ tam_dir ) ,A1 JMP (A1) etq0 b loque0 JMP end etq1 b loque1 JMP end · · · etqn b loquen end · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución iterativa 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: repeat..until Con evaluación al principio: while Con un número definido de iteraciones: for i=1,n 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución iterativa Con evaluación al final · · · repeat b loque un t i l a cc b · · · · · · r e p e a t b loque CMP a , b BNcc r e p e a t · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución iterativa Con evaluación al principio · · · whi le a cc b do b loque end · · · · · · wh i l e CMP a , b BNcc end b loque JMP wh i l e end · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Ejecución iterativa Con un número definido de iteraciones · · · f o r c := n to m do b loque end · · · · · · MOVE n , c f o r CMP m, c BGT end b loque INC c JMP f o r end · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Llamada a subrutina (1/5) Supongamos: 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 · · · procedure sub ( a , b : i n teger ; var c : i n teger ) begin b loque end · · · sub ( x , y , z ) ; · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Llamada a subrutina (2/5) Parámetros sub(x,y,z) PUSH x PUSH y PEA z; !! JSR sub etq ... —Memoria— ... SP→ etq SP→ EA(z) SP→ y SP→ x ... 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Llamada a subrutina (3/5) Acceso a parámetros ;Salva contexto sub PUSH SR PUSH D0 PUSH D1 PUSH A0 MOVE 20(SP),D0 ;a MOVE 18(SP),D1 ;b MOVE 14(SP),A0 ;c en &z bloque —Memoria— ... SP→ (A0) SP→ (D1) 4(SP) SP→ (D0) 6(SP) SP→ (SR) 8(SP) etq 10(SP) EA(z) A0←14(SP) y D1←18(SP) x D0←20(SP) ... 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Llamada a subrutina (4/5) Restaura contexto POP A0 POP D1 POP D0 POP SR RTS —Memoria— ... SP→ (A0) →A0 SP→ (D1) →D1 SP→ (D0) →D0 SP→ (SR) →SR SP→ etq JMP etq SP→ EA(z) y x ... 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Llamada a subrutina (5/5) ; paso param PUSH x PUSH y PEA z ; l l amada JSR sub // l i b e r a c i ó n param etq ADD #8,SP · · · sub PUSH SR ; s a l v a con t e x to PUSH D0 PUSH D1 PUSH A0 ; a c ce so a param MOVE 14(SP) ,D0 MOVE 18(SP) ,D1 MOVE 20(SP) ,A0 b loque ; r e s t a u r a con t e x to POP A0 POP D1 POP D0 POP SR RTS ; r e t o r n o a etq 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Subrutina con variables locales (1/5) Llamada a subrutina: Variables locales Realizar la traza anterior con el siguiente fragmento de programa · · · procedure sub ( a , b : i n teger ; var c : i n teger ) var l oc1 , loc2 , l o c 3 : i n teger begin b loque end · · · sub ( x , y , z ) ; · · · 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Subrutina con variables locales (2/5) Parámetros sub(x,y,z) PUSH x PUSH y PEA z; !! JSR sub etq ... —Memoria— ... SP→ etq SP→ EA(z) SP→ y SP→ x ... 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Subrutina con variables locales (3/5) Acceso a parámetros ;Puntero de marco sub LNK Ai,#-6 ;Salva contexto PUSH SR PUSH D0 PUSH D1 PUSH A0 bloque El mapa de memoria de la figura constituye el marco de activación de la subrutina. —Memoria— SP→ (A0) SP→ (D1) SP→ (D0) SP→ (SR) SP→ -6(Ai)≡loc3 -4(Ai)≡loc2 -2(Ai)≡loc1 Ai→ (Ai) SP→ etq EA(z) 8(Ai) y 12(Ai) x 14(Ai) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Subrutina con variables locales (4/5) Restaura contexto POP A0 POP D1 POP D0 POP SR UNLK Ai RTS —Memoria— SP→ (A0) →A0 SP→ (D1) →D1 SP→ (D0) →D0 SP→ (SR) →SR SP→ (Ai) →Ai SP→ etq JMP etq SP→ EA(z) 8(Ai) y 12(Ai) x 14(Ai) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Subrutina con variables locales (5/5) ; paso param PUSH x PUSH y PEA z ; l l amada JSR sub // l i b e r a c i ó n param etq ADD #8,SP · · · ; á r ea l o c a l de v a r i a b l e s sub LNK Ai ,#−6 PUSH SR ; s a l v a con t e x to PUSH D0 PUSH D1 PUSH A0 b loque ; r e s t a u r a con t e x to POP A0 POP D1 POP D0 POP SR UNLK Ai RTS ; r e t o r n o a etq 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Aplicaciones del repertorio de instrucciones Subrutinas Anidamiento de subrutinas Suponiendo que la subrutina "‘sub"’ es recursiva, la evolución de la pila tras dos llamadas es la siguiente. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño De código ensamblador a programa en memoria 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño De código ensamblador a programa en memoria 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño De código ensamblador a programa en memoria Enlazador (Linker) Combina varios códigos objeto, resolviendo las referencias cruzadas Crea un código ejecutable 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño De código ensamblador a programa en memoria 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño De código ensamblador a programa en memoria Ciclo instrucción 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño Elementos constitutivos de una instrucción máquina 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, donde la dirección de la siguiente instrucción suele ser implícita: Dir. instr. siguiente = Dir. instr. actual + Longitud instr. 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 ..... op. fuente n op. destino instr. siguiente 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Alternativas de diseño Alternativas de diseño del formato de instrucción 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, ... 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Número de operandos explícitos Introducción Una operación típica de un computador (p. e. 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Número de operandos explícitos Instrucciones con tres operandos explícitos Se especifican los tres operandos en la instrucción máquina Cada operando puede soportar distintos modos de direccionamiento Formato flexible, pero ocupa mucho espacio Ejemplo ADD A,B,C (A←B+C) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Número de operandos explícitos 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 Ejemplo ADD B,C (B←B+C) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Número de operandos explícitos Instrucciones con un operando explícito Se especifica 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 Formato muy reducido, pero poco flexible Ejemplo ADD B (Acum.←B+Acum.) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Número de operandos explícitos 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)) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Ejemplos Ejemplo: Número de operandos 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 operandos, utilizando las instrucciones que sean necesarias y sin sobreescribir el contenido de ninguno de los operandos fuente. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Ejemplos Ejemplo: Diseño de instrucción máquina Diseño de 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: 12 instrucciones de 3 operandos Dos operandos, con direccionamiento absoluto e indirecto de memoria Un operando, con direccionamiento de registro en indirecto de registro 150 instrucciones de 2 operandos Un operando, con direccionamiento absoluto e indirecto de memoria Un operando, con 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. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Formato de la instrucción máquina Ejemplos Ejemplo: Diseño de instrucción máquina Solución 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas CISC Introducción CISC Complex Instruction Set Computer 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas CISC Introducción 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas CISC 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 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas CISC Problemas de las arquitecturas CISC 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas RISC Características 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas RISC Características Tipos de datos simples Las instrucciones sólo soportan unos pocos tipos de datos básicos distintos Arquitectura de tipo registro-registro Sólo algunas instrucciones MIPS: LOAD (Mem→Reg) y MIPS: 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Arquitecturas RISC 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Computadores CISC VAX 11 (desaparecido) IBM Mainframes serie 360, 370 y descendientes Intel 80x86 i8086, i80286, i80386, i80486, Pentium, Pentium II, ..., Pentium IV, IA64 Motorola MC68xxx MC68000, MC68010, MC68020, MC68030, MC68040, MC68060 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Características 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 MB de memoria direccionables) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Tipos de datos y direccionamiento Tipos de datos: Visto en tema anterior Registros de la arquitectura: Visto en tema anterior Registro de estado: Visto en tema anterior Modos de direccionamiento: Visto en tema anterior 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: 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: Contiene el código de operación, modos de direccionamiento y tamaño de los operandos Palabra de extensión (EW, de 0 a 4) Información adicional de los operandos: Valor inmediato y desplazamiento Codificación modos de direccionamiento Dos campos: modo y registro (6 bits) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Formato de las instrucciones 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Formato de las instrucciones EA Codificación de los modos de direccionamiento modo Registro Directo de reg. de datos 000 No de reg. (Dn) Directo de reg. de direcciones 001 No de reg. (An) Indirecto de reg. 010 No de reg. (An) Indirecto de reg. con postincr. 011 No de reg. (An) Indirecto de reg. con predecr. 100 No de reg. (An) Indirecto de reg. con desplaz. 101 No de reg. (An) Indirecto de reg. index. con deplaz. 110 No de reg. (An) Absoluto corto 111 000 Absoluto largo 111 001 Relativo al PC con deplaz. 111 010 Relativo al PC index. con deplaz. 111 011 Inmediato 111 100 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de 0 y 1 operandos Instrucciones de 0 operandos Instrucciones de 1 operando 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de 2 operandos 3 formatos 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Otras 2 operandos con operando inmediato corto Bifurcación condicional: Bcc 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de movimiento de datos INSTR. DESCRIPTION EXAMPLE Copies an 8-, 16- or 32-bit value from MOVE.B #$8C,D0 [D0]←$XXXXXX8C MOVE one memory location or register to MOVE.W #$8C,D0 [D0]←$XXXX008C another memory location or register MOVE.L #$8C,D0 [D0]←$0000008C Copies a source operand to an address register. MOVEA operates MOVEA.W #$8C00,A0 [A0]←$FFFF8C00 MOVEA only on words or longwords. MOVEA.W sign-extends the 16-bit MOVEA.L #$8C00,A0 [A0]←$00008C00 operand to 32 bits. Copies a 8-bit signed value in the range −128 to +127 to one of the eight MOVEQ #-3,D0 [D0]←$FFFFFFFD MOVEQ data registers. The data to be moved is sign-extended before it is copied to MOVEQ #4,D0 [D0]←$00000004 its destination. Transfers the contents of a group of registers specified by a list. The list of MOVEM registers is defined as Ai − Aj/Dp − Dq . MOVEM.L A0-A3/D0-D7,-(A7) ;copies all working MOVEM operates only on words or ;registers to stack longwords. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de aritmética entera INSTR. DESCRIPTION EXAMPLE ADDx/SUBx add/subtract the contents of a source to/from the ADDx contents of a destination and deposits the result in the ADD.W D0,D1 [D1]←$11118123 destination location. Direct memory-to-memory operations are ADD.L D0,D1 [D1]←$22228123 SUBx not permitted. Assume [D0]=$11118000 and ADDQ #N,D1 N ∈ [1, 8] [D1]=$11110123. SUB.L D1,D0 [D0]←$00007EDD MULU (multiply unsigned) forms the product of two 16-bit MULU integers. The 32-bit destination must be a data register. MULS MULU #$0800,D0 [D0]←$00400000 MULS is similar but treats data as signed. Assume [D0]=$ABCD8000. DIVU (divide unsigned) works with a 32-bit dividend and a DIVU 16-bit divisor. The dividend must be a data register. The 16-bit result is stored in the low word of the destination, and the DIVS #-3,D0 [D0]←$0002FFFC DIVS 16-bit remainder in the high word. DIVS is similar but treats data as signed. Assume [D0]=$0000000E, 1410. CRL (clear) writes zeros into the destination operand. NEG CLR (negate) performs a 2s complement operation on the CLR.B D0 [D0]←$1234B000 NEG destination data–subtracts it from zero. Assume CLR.L D0 [D0]←$00000000 [D0]=$1234B021. NEG.W D0 [D0]←$12344FDF Sign-extend increases the bit-size of a signed integer. EXT.W EXT converts an 8-bit into a 16-bit, and EXT.L converts a 16-bit EXT.W D0 [D0]←$12340021 into a 32-bit. Assume [D0]=$1234B021. EXT.L D0 [D0]←$FFFFB021 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones booleanas INSTR. DESCRIPTION EXAMPLE AND Bit-wise logical AND operation. Normally used to clear, or mask, ANDI.B # %0111111,D0 clear the 8th least ANDI certain bits in a destination operand. significant bit of D0 OR Bit-wise logical OR operation. Normally used to set certain bits in a ORI.B # %10101010,D0 set even bits of D0 ORI destination operand. lowest byte EOR Bit-wise logical XOR operation. EOR.B # %11111111,D0 XOR of the lowest byte of D0 EORI NOT Bit-wise NOT operation. Assume NOT.W D0 [D0]←$12340F0F [D0]=$1234F0F0. TST Similar to CMP #0,operand TST D0 update N,Z and clear V,C 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de desplazamiento y rotación INSTR. OPERATION SCHEME ASL Arithmetic shift left ASR Arithmetic shift right LSL Logic shift left LSR Logic shift right ROL Rotate left ROR Rotate right SWAP Swap words of a long word 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de manipulación de bits INSTR. DESCRIPTION EXAMPLE: Assume [D0]=$00000009 Bit test and set Causes the Z-bit to BSET be set if the specified bit is zero and BSET #2, D0 [D0]←$0000000D, Z←1 then forces the specified bit of the operand to be set to one Bit test and clear works like BSET BCLR except that the specified bit is BCLR #0, D0 [D0]←$00000008, Z←0 cleared (forced to zero) after it has been tested Bit test and change causes the BCHG value of the specified bit to be BCHG #4, D0 [D0]←$00000019, Z←1 reflected in the Z-bit and then toggles (inverts) the state of the specified bit BTST Bit test reflects the value of the BTST #2, D0 Z←1 specified bit in the Z-bit 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones BCD INSTR. DESCRIPTION EXAMPLE: Assume [X]=0, [D0]=48, [D1]=21 Adds the source operand and the X-bit to the ABCD destination operand using BCD arithmetic. This is ABCD D0,D1 [D1]←$00000069 a BYTE operation only; the X-bit is used to provide a mechanism for multi-byte BCD operations. Subtract the source operand and the X-bit from the SBCD destination operand using BCD arithmetic. This is SBCD D1,D0 [D0]←$00000027 a BYTE operation only, so the X-bit is used to provide a mechanism for multi-byte BCD operations. NBCD Subtract the destination operand and the X-bit NBCD D1 [D1]←$00000052 from zero. [X]←1, [V]←1, [C]←1 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de flujo INSTR. DESCRIPTION BRA BRA (branch always) implements an un- conditional branch, relative to the PC. The offset is expressed as an 8- or 16-bit signed integer. If the destination is outside of a 16-bit signed integer, BRA cannot be used. Bcc Bcc (branch conditional) is used whenever program execution must follow one of two paths depending on a condition. The con- dition is specified by the mnemonic cc. The offset is expressed as an 8- or 16-bit signed integer. If the destination is outside of a 16-bit signed integer, Bcc cannot be used. BSR,RTS BSR branches to a subroutine. The PC is saved on the stack before loading the PC with the new value. RTS is use to return from the subroutine by restoring the PC from the stack. JMP JMP (jump) is similar to BRA. The only difference is that BRA uses only relative ad- dressing, whereas JMP has more addressing modes, including absolute address (see re- ference manual). cc CONDITION BRANCH TAKEN IF CC Carry clear C = 0 CS Carry set C = 1 NE Not equal Z = 0 EQ Equal Z = 1 PL Plus N = 0 MI Minus N = 1 HI Higher than CZ = 1 LS Lower than or same as C + Z = 1 GT Greater than NV Z + NVZ = 1 LT Less than NV + NV = 1 GE Greater than or equal to NV + NV = 0 LE Less than or equal to Z + (NV + NV ) = 1 VC Overflow clear V = 0 VS Overflow set V = 1 T Always true Always F Always false Never 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MC68000 Instrucciones de control INSTR. DESCRIPTION MOVE ANDI Unique variations of MOVE, AND, OR and EOR that allow ORI altering the bits in the status and condition code registers. EORI TRAP performs three operations: (1) pushes the PC and SR TRAP to the stack, (2) sets the execution mode to supervisor and (3) loads the PC with a new value read from a vector table STOP loads the SR with an immediate operand and stops STOP the CPU. RESET asserts the CPU’s RESET line for 124 RESET cycles. If STOP or RESET are executed in user mode, a privilege violation occurs. 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Características 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Características 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) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Tipos de datos Enteros Tamaño Byte (8 bits) Tamaño Media palabra (16 bits) Tamaño Palabra (32 bits) Reales en punto flotante Simple precisión (32 bits) Doble precisión (64 bits) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Modos de direccionamiento Directo de registro Inmediato Indirecto con desplazamiento Indirecto con desplazamiento relativo a PC 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Formato de la instrucción máquina: Instrucción de tipo I Instrucciones de LOAD/STORE LW $1,30($2) R1←Mem(30+(R2)) SW 60($5),$10 Mem(60+(R5))←(R10) Instruc. con operando inmediato ADDI $7,$9,#30 R7←(R9)+30 Instruc. de bifurcación condicional BNE $5,$6,#0x0C if (R5 6=R6) PC←0x0C 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Formato de la instrucción máquina: Instrucción de tipo R Instruc. aritméticas, lógicas y desplazamiento de tipo de registro-registro El campo función especifica el tipo de operación a realizar: suma, resta, mult. div., and, or, desplaz., etc. Ejemplos SUB $1,$2,$3 R1←(R2)-(R3) SLL $1,$2,$3 R1←(R2)<<(R3)) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Formato de la instrucción máquina: Instrucción de tipo J Instrucciones de salto Ejemplo J dir PC←dir 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Instrucciones de movimiento de datos Instrucción Significado Ejemplo Operación LB Load byte LB $2,40($3) 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 $2,40($3) R2[16− 31]← Mem(40 + (R3))16; R1[0− 15]← (signo(Mem(40 + (R3))))16 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 SH 40($3),$2 Mem(40 + (R3))16 ← R2[16− 31] SW Store word SW 40($3),$2 Mem(40 + (R3))32 ← R2[0− 31] SF Store float SF 40($3),$2 Mem(40 + (R3))32 ← F2[0− 31] SD Store double float SD 40($3),$2 Mem(40 + (R3))64 ← F2[0− 31], F3[0− 31] 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Instrucciones de aritmética entera, lógicas y desplazamiento Instrucción Significado Ejemplo Operación ADD/ADDU Suma con/sin signo ADD $1,$2,$3 R1← (R2) + (R3) ADDI/ADDIU Suma inmediato con/sin signo ADDI $1,$2,#5 R1← (R2) + 5 SUB/SUBU Resta con/sin signo SUB $1,$2,$3 R1← (R2)− (R3) SUBI/SUBIU Resta inmediato con/sin signo SUBI $1,$2,#5 R1← (R2)− 5 MULT/MULTU Multiplicación con/sin signo MULT $1,$2,$3 R1← (R2)× (R3) DIV/DIVU División con/sin signo DIV $1,$2,$3 R1[0− 15]← Cociente((R2)/(R3)) R1[16− 31]← Resto((R2)/(R3)) AND Y lógica AND $1,$2,$3 R1← (R2) ∧ (R3) ANDI Y lógica con inmediato ANDI $1,$2,#5 R1← (R2) ∧ 5 OR O lógica OR $1,$2,$3 R1← (R2) ∨ (R3) ORI O lógica con inmediato ORI $1,$2,#5 R1← (R2) ∨ 5 XOR O exclusiva XOR $1,$2,$3 R1← (R2)⊕ (R3) XORI O exclusiva con inmediato XORI $1,$2,#5 R1← (R2)⊕ 5 SLL/SRL Desplaz. lógico Izda./decha. SLL $1,$2,$3 R1← (R2) << (R3) SLLI/SRLI Desp. Lóg. Izda./decha. con inmed. SLLI $1,$2,#4 R1← (R2) << 4 SRA Desplaz. aritmético derecha SRA $1,$2,$3 R1← (R2) << (R3) (mantiene signo) SRAI Desplaz. aritm. Dcha. con inmed. SRA $1,$2,#4 R1← (R2) << 4 (mantiene signo) Scc * Set condicional SLT $1,$2,$3 if ((R2) < (R3))R1← 1, elseR1← 0 SccI * Set condicional con inmediato SEQI $1,$2,#0 if ((R2) == 0)R1← 1, elseR1← 0 (*) cc = LT, GT, LE, GE, EQ, NE 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: MIPS Otras Instrucción de control de flujo Instrucción Significado Ejemplo Operación J Salto (jump) J dir PC ← dir JR Salto con registro JR $2 PC ← (R2) BEQZ Bifurcación condic. si igual a cero BEQZ dir,$4 if ((R4) == 0)PC ← (R4) BNEQZ Bifurcación condic. si distinto de cero BNEQZ dir,$4 if ((R4) 6= 0)PC ← (R4) JAL Salto y link JAL dir R31← (PC) + 4; PC ← dir JALR Salto y link con registro JALR dir,$2 R31← (PC) + 4; PC ← (R2) TRAP Provoca una excepción RFE Retorno de excepción Instrucción de aritmética en punto flotante Instrucción Significado ADDF/ADDD Suma en punto flotante simple/doble precisión SUBF/SUBD Resta en punto flotante simple/doble precisión MULTF/MULTD Multiplicación en punto flotante simple/doble precisión DIVF/DIVD División en punto flotante simple/doble precisión CVTI2F/CVTI2D Convierte entero a real simple precisión / doble precisión CVTF2I/CVTF2D Convierte real simple precisión a entero / real doble precisión CVTD2I/CVTD2F Convierte real doble precisión a entero / real simple precisión 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Origen ARM - Máquinas RISC Avanzadas (Advanced RISC Machines) Origen: Acorn RISC Machine, parte de un proyecto educativo (Inglaterra, 1984) 1987 - se convierte en el primer procesador RISC para uso comercial 1990 - escisión de Acorn Machines → ARM Ltd. ARM Ltd.: Creación de procesadores altamente configurables y adaptables a multitud de aplicaciones Innovaciones Formato de instrucciones comprimido (thumb), con descompresión dinámica del flujo de instrucciones Cauce segmentado (Pipeline) básico de 3 fases de gran simplicidad en el núcleo Gran trabajo en temas de desarrollo y depurado software 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Mercado: Datos del 2007 En el año 2005 ARM se estableció como líder del mercado (superando a Intel) en arquitecturas empotradas. El 30% del mercado fue absorbido por ARM en el 2006 (frente al 28% de Intel) 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Características ≈ 60 instrucciones máquina Repertorio ortogonal Instrucciones de 32 bits (salvo modo comprimido de 16 bits, thumb) alineadas en potencias de 4 en memoria Clasificadas en 3 grupos Instrucciones de proceso de datos: operaciones entre registros Instrucciones de transferencia de datos: carga-almacenamiento Instrucciones para el control del flujo Modos de direccionamiento (ver tema anterior) Indexados con pre y post incremento Desplazamiento relativos al PC 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Características Banco de 17 registros de 32 bits 15 registros de propósito general (R0-R14) R13: Puntero de pila R14: Retorno de función R15: Contador de programa CPSR: Registro de estado Instrucciones fijas 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 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Formato de instrucción Condición: Código de ejecución condicional De forma predeterminada el código indica ejecutar siempre CodOp: Código de operación Dos o tres registros (Rn, Rd y Rm) Operaciones sobre registros: Rd: Registro destino Rn: Registro primer operando Rm (opcional): Registro segundo operando Operaciones registro-memoria (carga-almacenamiento): Rd: Registro origen/destino Rn: Registro base para construcción dirección de memoria Otra información adicional Tamaño variable en función de la instrucción 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Formato de instrucción en ensamblador <codop>{<cond>}{S} Rd, Rn, operando2,{<desplazamiento>} codop: nemónico de la operación cond: sufijo opcional para ejecución condicional S: sufijo opcional para modificar códigos de condición (N,V,Z,C) Rd: Registro destino Rn: Registro del operando1 operando2: Puede ser un tercer registro (Rm) o un operando inmediato desplazamiento: Desplazamiento (shift) opcional sobre operando2 tipo de desplazamiento + #cantidad de bits a desplazar 3.1.2 Repertorio de instrucciones y formato de la instrucción máquina Arquitecturas CISC y RISC Ejempos Ejemplo: ARM Ejemplos de instrucciones Cód. Nemón. Interpretación Estado necesario/Resultado 0000 EQ Igual/igual a cero Z(1) 0001 NE Distinto Z(0) 0110 VS Desbordamiento V (1) 0111 VC No desbordamiento V (0) 1000 HI Mayor sin signo C(1)&Z(0) 1011 LT Menor con signo N 6= V 0000 AND AND lógico bit-a-bit Rd ← Rn ∧ Op2 0010 SUB resta Rd ← Rn − Op2 0011 RSB resta al revés Rd ← Op2− Rn 0100 ADD suma Rd ← Rn + Op2 1010 CMP comparar cod. cond: Rn − Op2 1101 MOV mover Rd ← Op2 000 MUL multiplicar Rd ← Rm × Rs Índice Repertorio de instrucciones Clasificación de las instrucciones Aplicaciones del repertorio de instrucciones Ejecución alternativa Ejecución iterativa Subrutinas Formato de la instrucción máquina Alternativas de diseño Número de operandos explícitos Ejemplos Arquitecturas CISC y RISC Arquitecturas CISC Arquitecturas RISC Ejempos apuntes_arquitectura_computadores/313_Rendimiento.pdf Rendimiento del procesadorRendimiento del procesador Módulo 3.1.3 R di i t d l dRendimiento del procesador Ingeniería Técnica en Informática de Sistemas Facultad de Informática Universidad Complutense de Madrid ÍndiceÍndice IntroducciónIntroducción Definiciones Relojj Frecuencia Ciclos promedio por instrucción Tiempo de ejecuciónTiempo de ejecución Métricas Tiempo de ejecuciónp j Millones de instrucciones por segundo (MIPS) Millones de operaciones en punto flotante por segundo (MFLOPS) E l ió d l di i tEvaluación del rendimiento Ley de Amdahl 2 Rendimiento del procesadorRendimiento del procesador IntroducciónIntroducción Al diseñar un computador debemos tener en cuenta dos Introducción (1/2)Introducción (1/2) Al diseñar un computador debemos tener en cuenta dos parámetros importantes CCoste Rendimiento Dependiendo del equilibrio que se haga de ellos se creará desde un ordenador personal (barato y rendimiento medio) hasta un supercomputador (caro y con un rendimiento muy alto) ¿Cuál es la medida apropiada de rendimiento? 3 Rendimiento del procesadorRendimiento del procesador IntroducciónIntroducción El usuario de un procesador puede decir que el Introducción (2/2)Introducción (2/2) El usuario de un procesador puede decir que el procesador A es mejor que el procesador B cuando A ejecuta su programa en menor tiempo que Bejecuta su programa en menor tiempo que B. El responsable de un centro de cálculo entenderá que A úes mejor que B si es capaz de ejecutar mayor número de trabajos por unidad de tiempo. El primero estará interesado en el tiempo de respuesta (response time) del procesador mientras que el segundo lo estará en la productividad (throughput). Pero en ambos casos la clave es el tiempo. 4 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Todos los computadores utilizan una señal periódica que Tiempo de ciclo y frecuenciaTiempo de ciclo y frecuencia Todos los computadores utilizan una señal periódica que determina el momento en que tienen lugar los eventos hardware dicha señal se llama relojhardware: dicha señal se llama reloj Tiempo de ciclo: tiempo que transcurre entre dos ticks (medido en s)(medido en s) Frecuencia de reloj: la inversa del tiempo de ciclo (medido en Hz = s−1)Hz = s ) EjemploEjemplo Un computador trabajando a 200 MHz (frecuencia) tiene un tiempo de ciclo de: j p Un computador trabajando a 200 MHz (frecuencia) tiene un tiempo de ciclo de: j p nssss MHz 5105105.0 102 1 200 1 98 8 =×=×=× = −− MHz 102200 5 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Ciclos de reloj por programa (1/2)Ciclos de reloj por programa (1/2) ¿(ciclos de reloj por programa) (instrucciones por¿(ciclos de reloj por programa) = (instrucciones por programa)? NO: diferentes instrucciones tardan diferentes cantidades de tiempo: La multiplicación tarda más ciclos que la suma Operaciones en punto flotante tardan más que operaciones en punto fijo Instrucciones con acceso a memoria tardan más que con i tacceso a registros LOAD ADD ADD MULT 7 ciclos 4 ciclos 4 ciclos 8 ciclos 6 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Ciclos de reloj por programa (2/2)Ciclos de reloj por programa (2/2) Los “ciclos promedio por instrucción” (CPI) se calculanLos “ciclos promedio por instrucción” (CPI) se calculan como una suma ponderada del número de ciclos que tarda por separado cada tipo de instruccióntarda por separado cada tipo de instrucción Operación Frecuencia Ciclos CPI % tiempoOperación Frecuencia Ciclos CPI % tiempo ALU 50 % 1 0.5 23 % LOAD 20 % 5 1.0 45 % STORE 10 % 3 0.3 14 % BRANCH 20 % 2 0.4 18 % 2.2 CPII t il jdCi l CPI×= programapor nesInstruccioprogramapor reloj de Ciclos 7 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones El tiempo de ejecución de un programa lo dividiremos Tiempo de ejecución (1/4)Tiempo de ejecución (1/4) El tiempo de ejecución de un programa lo dividiremos en las siguientes componentes: Ti dTiempo de respuesta Tiempo de CPU Ti d CPU d l iTiempo de CPU usado por el usuario. Tiempo de CPU usado por el S.O. 8 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Tiempo de respuesta Es el tiempo necesario para Tiempo de ejecución (2/4)Tiempo de ejecución (2/4) Tiempo de respuesta: Es el tiempo necesario para completar una tarea, incluyendo los accesos al disco, a la memoria las actividades de E/S y los gastos del S O Esmemoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el usuario. 9 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Tiempo de CPU: Es el tiempo que tarda en ejecutarse un Tiempo de ejecución (3/4)Tiempo de ejecución (3/4) Tiempo de CPU: Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otrosdebido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide en: Tiempo de CPU utilizado por el usuario: Es el tiempo que lap p p q CPU utiliza para ejecutar el programa del usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros programasutilizado para ejecutar otros programas Tiempo de CPU utilizado por el S.O.: Es el tiempo que el S.O. emplea para realizar su gestión interna.p p g Generalmente, nos referiremos a tiempo de CPU como al tiempo de CPU utilizado por el usuario.p p 10 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Tiempo de ejecución (4/4)Tiempo de ejecución (4/4) Ejemplo La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65% Ejemplo La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65% donde: Tiempo de CPU del usuario = 90.7 segundos Tiempo de CPU utilizado por el sistema = 12.9 segundos Ti d CPU 90 7 12 9 103 6 donde: Tiempo de CPU del usuario = 90.7 segundos Tiempo de CPU utilizado por el sistema = 12.9 segundos Ti d CPU 90 7 12 9 103 6Tiempo de CPU= 90.7 s+ 12.9 s = 103.6 s Tiempo de respuesta = 2 minutos 39 segundos =159 segundos Tiempo de CPU = 65% del tiempo de respuesta = 159 s*0.65 = 103.6 s Tiempo esperando opera iones de E/S /o el tiempo eje tando otras tareas Tiempo de CPU= 90.7 s+ 12.9 s = 103.6 s Tiempo de respuesta = 2 minutos 39 segundos =159 segundos Tiempo de CPU = 65% del tiempo de respuesta = 159 s*0.65 = 103.6 s Tiempo esperando opera iones de E/S /o el tiempo eje tando otras tareasTiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de respuesta = 159 segundos*0.35 = 55.6 segundos Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de respuesta = 159 segundos*0.35 = 55.6 segundos El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU del usuario sobre un sistema no cargado. El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU del usuario sobre un sistema no cargado. 11 Rendimiento del procesadorRendimiento del procesador DefinicionesDefiniciones Cálculo del tiempo de CPUCálculo del tiempo de CPU Tiempo de CPUTiempo de CPUTiempo de CPUTiempo de CPU ciclo) de (tiempoprograma)por nesInstruccio( ××CPI ¿De quién dependen las “instrucciones por programa”? programadores / compiladores / arquitectura del repertorio de instrucciones ¿De quién depende el “tiempo de ciclo”? tecnología / organización ¿De quién dependen el CPI? organización / arquitectura del repertorio de instruccionesg q p 12 Rendimiento del procesadorRendimiento del procesador MétricasMétricas Definición de rendimientoDefinición de rendimiento La definición del rendimiento (y la métrica más comúnmente utilizada) viene dada por la siguiente expresión Rendimiento La definición del rendimiento (y la métrica más comúnmente utilizada) viene dada por la siguiente expresión Rendimiento la siguiente expresiónla siguiente expresión ejecución) (tiempo 1R = Existen, además, otras métricas muy populares pero que pueden resultar ñ i l i t d l i bl t i t t di d Existen, además, otras métricas muy populares pero que pueden resultar ñ i l i t d l i bl t i t t di dengañosas por no incluir todas las variables anteriormente estudiadas.engañosas por no incluir todas las variables anteriormente estudiadas. 13 Rendimiento del procesadorRendimiento del procesador MétricasMétricas MIPS (1/3)MIPS (1/3) MIPS Millones de instrucciones por segundoMIPS: Millones de instrucciones por segundo MIPSMIPSMIPSMIPS 610ejecución)(tiempo programa)por nesinstruccio(MIPS × = 10ejecución)(tiempo × MIPSMIPS 610(CPI) reloj) de frecuencia(MIPS × = 10(CPI)× 14 Rendimiento del procesadorRendimiento del procesador MétricasMétricas MIPS (2/3)MIPS (2/3) Depende del repertorio de instruccionesDepende del repertorio de instrucciones El tiempo que tarda en ejecutarse una misma instrucción y el nº de instrucciones máquina que genera el compilador puede variar de un t i trepertorio a otro Dos programas “iguales” pueden tener comportamientos opuestos La medida de MIPS puede variar mucho de un programa a otrop p g Existen instrucciones que tardan más tiempo en ejecutarse que otras Los programas en los que abundan instrucciones “rápidas” tardan menos en ejecutarseen ejecutarse Los programas en los que abundan instrucciones “lentas” tardan más en ejecutarse Los fabricantes suelen dar medidas de MIPS muy optimistas Utilizan programas donde predominan instrucciones que tardan poco en ejecutarsej 15 Rendimiento del procesadorRendimiento del procesador MétricasMétricas MIPS (3/3)MIPS (3/3) Ejemplo Generación Potencia de cálculoGeneración Potencia de cálculo 1ª Válvula de vacío 0.04 MIPS 2ª Transistores 0.2 MIPS 3ª Circuitos integrados 1 MIPS3 Circuitos integrados 1 MIPS 4ª Microprocesador 10 MIPS 5ª Sistemas basados en micro 100 MIPS 16 Rendimiento del procesadorRendimiento del procesador MétricasMétricas MFLOPS (1/2)MFLOPS (1/2) MFLOPSMFLOPS Millones de instrucciones en punto flotante por segundo. fl l á dLas instrucciones en punto flotante son las que más tardan en ejecutarse S did l á fi bl d l di i t l d lSon una medida algo más fiable del rendimiento real del computador MIPSMIPS programa)porFLOPnesinstruccio( 610ejecución) (tiempo programa)por FLOP nesinstruccio(MFLOPS × = 17 Rendimiento del procesadorRendimiento del procesador MétricasMétricas MFLOPS (2/2)MFLOPS (2/2) Depende del repertorio de instrucciones en punto flotanteDepende del repertorio de instrucciones en punto flotante No todos los computadores ofrecen las mismas operaciones en punto flotante D di ti t d t t i t tDos programas distintos pueden tener comportamientos opuestos Es inútil para muchos programas Los programas enteros (sin operaciones en punto flotante) noLos programas enteros (sin operaciones en punto flotante) no pueden medirse en MFLOPS Existen instrucciones en punto flotante de distinto tiempo de ejecuciónejecución Por ejemplo: suma, resta, ... son rápidas; división, seno, exponencial, ... Son lentas Los fabricantes pueden dar también medidas de MFLOPS demasiado optimistas 18 Rendimiento del procesadorRendimiento del procesador Evaluación del rendimientoEvaluación del rendimiento Evaluación del rendimientoEvaluación del rendimiento El rendimiento se evalúa ejecutando programas realesEl rendimiento se evalúa ejecutando programas reales Programas “de juguete”: De 10 a 100 líneas de código con resultado conocidoresultado conocido Programas de prueba (benchmarks) sintéticos: simulan la frecuencia de operaciones y operandos de un abanico defrecuencia de operaciones y operandos de un abanico de programas reales Fragmentos de programas realesFragmentos de programas reales Programas típicos con cargas de trabajo fijas 19 Rendimiento del procesadorRendimiento del procesador Ley de AmdahlLey de Amdahl Ley de Amdahl (1/2)Ley de Amdahl (1/2) EjemploEjemploj p Se pretende viajar desde el Yelmo a Ciudad Real y el viaje se realiza en 2 fases: del Yelmo a Madrid (20h caminando) y de Madrid a Ciudad Real (en otro medio de transporte) j p Se pretende viajar desde el Yelmo a Ciudad Real y el viaje se realiza en 2 fases: del Yelmo a Madrid (20h caminando) y de Madrid a Ciudad Real (en otro medio de transporte)transporte)transporte) Medio de transporte Viaje desde Madrid (h) Mejora parcial (h) Viaje completo (h) Mejora total (h)p ( ) p ( ) p ( ) ( ) Caminando 50 1 70 1 Bicicleta 20 2.5 40 1.8 Moto 4 12.5 24 2.9 Coche 1.67 30 21.67 3.2 Tren 0 33 150 20 33 3 4 x 3.4x 150 Tren 0.33 150 20.33 3.4 Cuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejoraCuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejoraCuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejora de un aspecto de la máquina no incrementa el rendimiento global en una cantidad proporcional al tamaño de la mejora Cuando se pretende mejorar el rendimiento, debe tenerse en cuenta que la mejora de un aspecto de la máquina no incrementa el rendimiento global en una cantidad proporcional al tamaño de la mejora 20 Rendimiento del procesadorRendimiento del procesador Ley de AmdahlLey de Amdahl Ley de Amdahl (2/2)Ley de Amdahl (2/2) La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de sus componentes está limitada por la fracción de tiempo que se utiliza dicho Ley de Amdahl componente F== 1 j )( i mejora)sin tiempo(A ( ) m m m A FF +−1mejora)con (tiempo Donde: A Aceleración o ganancia en velocidad conseguida en el sistema completo debido a la mejora de uno de sus subsistemas. A F t d j h i t d id l b i t lt dAm Factor de mejora que ha introducido el subsistema alterado. Fm Fracción de tiempo que el sistema emplea el subsistema alterado. Hacer común el caso rápido o acelerar el caso comúnHacer común el caso rápido o acelerar el caso común 21 apuntes_arquitectura_computadores/introduccion al dise?o de un procesador.pdf Introducción al diseño de un Procesador Marcos Sánchez-Élez Martín Importancia del diseño de un procesador El rendimiento de un computador está determinado por el tiempo que la CPU tarda en ejecutar programas: El diseño del procesador determina: La duración del ciclo de reloj Número de ciclos de reloj por instrucción, en promedio Comúnmente estos dos factores tienen una relación inversa: Procesador monociclo 1 ciclo por instrucción Tiempo de ciclo largo Procesador multiciclo Varios ciclos por instrucción Tiempo de ciclo corto tiempo de CPU = (instrucciones por programa) × CPI × (tiempo de ciclo) Introducción al diseño de un procesador Introducción Marcos Sánchez-Élez Martín Metodologías para el diseño de un procesador Paso 1: Analizar el repertorio de instrucciones para obtener los requisitos de la ruta de datos La ruta de datos debe incluir tantos elementos de almacenamiento como registros sean visibles por el programador. Además puede tener otros elementos de almacenamiento transparentes. La ruta de datos debe incluir tantos tipos de elementos operativos como tipos de operaciones de cálculo se indiquen en el repertorio de instrucciones El significado de cada instrucción vendrá dado por un conjunto de transferencias entre registros. La ruta de datos debe ser capaz de soportar dichas transferencias. Paso 2: Establecer la metodología de temporización Monociclo (CPI = 1): todas las transferencias entre registros implicadas en una instrucción se realizan en un único ciclo de reloj. Multiciclo (CPI > 1): las transferencias entre registros implicadas en una instrucción se reparten entre varios ciclos de reloj. Introducción al diseño de un procesador Introducción Marcos Sánchez-Élez Martín Metodologías para el diseño de un procesador Paso 3: Seleccionar el conjunto de módulos (de almacenamiento, operativos e interconexión) que forman la ruta de datos. Paso 4: Ensamblar la ruta de datos de modo que se cumplan los requisitos impuestos por el repertorio, localizando los puntos de control. Paso 5: Determinar los valores de los puntos de control analizando las transferencias entre registros incluidas en cada instrucción. Paso 6: Diseñar la lógica de control. Introducción al diseño de un procesador Introducción Marcos Sánchez-Élez Martín Introducción Analizar el repertorio de instrucciones 68000 - CISC Intel (X86) - CISC MIPS – RISC ARM – RISC Introducción al diseño de un procesador Marcos Sánchez-Élez Martín Introducción Arquitectura MIPS Microprocessor without Interlocked Pipeline Stages Creado en 1981 por Hennessy Producido por Silicon Graphics (SGI) Utilizado por: TiVo Windows CE Cisco routers Nintendo 64 Sony PlayStation, PlayStation 2, PlayStation Portable. Introducción al diseño de un procesador Marcos Sánchez-Élez Martín Introducción R2000 (1985): procesador con operaciones multiciclo de multiplicación y división, dentro de un coprocesador matemático, los resultados de estas operaciones eran conseguidos a través de instrucciones particulares. Además, aunque los registros eran de 32 bits podían utilizarse como de 64 para doble precisión. R3000 (1988): añade una cache de 32KB (más tarde 64KB), una MMU para gestionar la memoria virtual, fue el primer procesador MIPS que tuvo éxito en el mercado (se vendieron 1 millón). Por ejemplo, fue utilizado en la Play Station, además en los primeros portátiles que utilizaban Windows CE. R4000 (1991): aumenta el conjunto de instrucciones a un procesador de 64 bits añadiendo la FPU dentro del chip. Todo esto permite un alto ciclo de reloj (a cambio se reducen las caches a 8KB) y una super-segmentación. Nintendo64 utiliza una CPU basada en este diseño, así como los primeros routers de Cisco (36x0 y 7x00) R8000 (1994): fue el primer procesador super-escalar que podía trabajar a la vez con dos ALUs y dos memorias. Su unidad FPU era perfecta para cálculos científicos, pero duró en el mercado sólo un año. R10000 (1995): tenía caches de 32 KB y su mayor innovación fue la utilización de la ejecución fuera de orden. R20000 (2006): 2 cores … no ha llegado a producirse Introducción al diseño de un procesador Marcos Sánchez-Élez Martín Introducción Arquitectura MIPS Todas las instrucciones tienen el mismo tamaño (32 bits) Todas las instrucciones tienen formato similar Código de operación 6 bits Sólo existen 3 formatos de instrucciones Accesos a memoria sencillos Directo registro con desplazamiento Introducción al diseño de un procesador Marcos Sánchez-Élez Martín Introducción op dirección 02631 6 bits
Compartir