Instrucciones de máquina y tipos de software Software del sistema: Implementa sobre la máquina convencional («desnuda») una «máquina virtual»: la máquina operativa Software de aplicaciones: Hace uso de la máquina operativa Soporte (mínimo) del hardware para la protección: la UCP puede estar en «modo supervisor» o en «modo usuario» Instrucciones privilegiadas: Sólo se pueden ejecutar en modo supervisor (si no, la UCP genera interrupción por violación del modo usuario) c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 1 Formatos de instrucciones ADD .1, d CO MD1 CD1 MD2 CD2 MD3 CD3 DIR. SIG. CO CR MD CD (R1)+(d) −> R1 (e) una y media (a) cuatro ADD d3, d2, d1 (obsoletos) CO MD1 CD1 MD2 CD2 MD3 CD3 (d1)+(d2) −> d3 ADD .15, .1, .7 CO CR1 CR2 CR3 (R1)+(R7) −> R15 (f) media, media y media (b) tres ADD d2, d1 CO MD1 CD1 (c) dos MD2 CD2 ADD .1, .7 (d1)+(d2) −> d1 o: (d1)+(d2) −> AC CO CR1 CR2 ADD d CO MD CD (d) una (AC)+(d) −> AC (R1)+(R7) −> R1 (g) media y media CO CR DEC .1 (R1)−1 −> R1 (h) media CO PUSH, POP, ADD, SUB, ... (máquinas de pila) (i) cero c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 2 Modos de direccionamiento de la MP DE = f((CD),(MD)) Directo, o absoluto: DE = (CD) Inmediato: DE = la de la instrucción Indirecto: DE = (MP[(CD)]) = ((CD)) Indexado: DE = (CD) + (RX) Autoincremento y autodecremento Relativo • a programa • a página • a base • a segmento c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 3 Direccionamiento inmediato n−1 0 MD i=1 CO operando 7 0 (a) Instrucción en una palabra 7 0 MD i=1 CO MD operando i=1 CO operando (b) instrucción de dos bytes, con operando en el segundo c 2009 DIT-ETSIT-UPM (c) instrucción de cinco bytes, con operando de treinta y dos bits Instrucciones y direccionamiento transp. 4 Direccionamiento indirecto 7 n−1 0 MD 0 I=1 CO MD CO CD I=1 CD puntero puntero operando o instrucción operando o instrucción (a) instrucción, puntero y operando (o instrucción siguiente, en caso de bifurcación) en una palabra cada uno c 2009 DIT-ETSIT-UPM (b) instrucción de dos bytes, puntero de dos y operando (o instrucción siguiente) de uno transp. 5 Instrucciones y direccionamiento Direccionamientos indexados registro de índice MD CO J=1 CD + DE operando o instrucción registro de índice MD I=1 CO J=1 (a) direccionamiento indexado operando o instrucción CD MD + CO I=1 J=1 DE operando o instrucción DE CD + puntero puntero (b) direccionamiento postindexado c 2009 DIT-ETSIT-UPM registro de índice Instrucciones y direccionamiento (c) direccionamiento preindexado transp. 6 Puntero en registro Por ejemplo: ADD .0, [.1℄ (formato « 21 + 12 »): DE = (R1), operando = (MP[(R1)]) = ((R1)); (R0) + ((R1)) → R0 Autoincremento: Tras calcular DE se incrementa el puntero en un número igual al de bytes que ocupa el operando Ejemplo: ADD .0, [.1++℄: (R0) + ((R1)) → R0; (R1) + k → R1 Autodecremento: Se decrementa el puntero y luego se calcula DE Ejemplo: ADD .0, [--.1℄: (R1) – k → R1; (R0) + ((R1)) → R0 c 2009 DIT-ETSIT-UPM transp. 7 Instrucciones y direccionamiento Direccionamientos relativos (1) Relativo a programa: DE = (CD)+(CP) instrucc. u operando MD CD DE CO (prog) 0 + CD MD CO (prog) 1 DE instrucc. u operando + CP CP (a) (CD)>0 (b) (CD)<0 En muchas UCP sólo existe para las instrucciones de bifurcación c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 8 Direccionamientos relativos (2) 0000 PAGINA 0 Relativo a página: DE = (CD) + dir. pág. 00FF 0100 Ejemplo: MP de 64 KB (direcciones de 2 bytes) FE00 Instrucciones de 1 ó 2 bytes si P = 0, DE = A0 si P = 1, DE = FEA0 256 páginas de 256 bytes CO MD (CD)=A0 8 15 CP: FEA0 palabra direccionada A0 P A0 0 7 instrucción: PAGINA FE FE 15 DE: 0 FEA0 FEFF FF00 PAGINA FF 1 byte FFFF c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 9 Direccionamientos relativos (3) Relativo a base: DE = dir. previa + (RB) Registros de base y de límite: RB1 zona asignada al código RL1 RB2 zona asignada a los datos RL2 c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 10 Direccionamientos relativos (4) Relativo a segmento: DE = dir. previa + 2n×(RS) Ejemplo, con dir. previa de 16 bits, DE de 20 bits y n = 4: 15 0 dirección previa 15 + = 0 registro de segmento 0 0 0 0 19 0 dirección efectiva c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 11 Pilas PUSH POP Memoria de pila: cima cima Máquinas de pila: p n p n−1 p n+1 p n p n−1 p 0 p 0 PILA INICIAL cima PILA DESPUES DE INTRODUCIR p n p n−1 cima p n−1 p 0 p 0 PILA INICIAL PILA DESPUES DE EXTRAER Datos en la pila. En una máquina de pila «pura» no hay registros «visibles» (en el nivel de máquina convencional) Instrucciones en memoria de acceso aleatorio Instrucciones con direccionamiento implícito (a la cima) c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 12 Simulación de una pila en la MP MP −k +k (pop) (push) cima PP fondo ZONA RESERVADA PARA LA PILA Utilidad: anidamiento de subprogramas (con instrucciones CALL y RET) y de interrupciones c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 13 Repertorios de instrucciones De movimiento: LD, ST, LD.B, LD.H, LD.L... LDU, LDS, LDU.B... PUSH, POP, MOVE, IN, OUT Aritméticas, lógicas y de comparación: ADD, SUB, MUL, DIV, ADD.B... ADDC, ADDC.B... INC, DEC, NOT, AND, OR, CLR... CMP, CMP.B... De desplazamiento: SHR, SHL, ROR... De transferencia de control: BR, BZ, BNZ,... SKIP, SKIPZ... CALL, RET, RETI BRK (INT, o TRAP) De gobierno: HALT, EI, DI... c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 14 Medidas de prestaciones Velocidad (performance): V = 1/tpo.respuesta Potencia (throughput): P = trabajo/tiempo Con monoprogramación, P = V Con multiprogramación, P > V Ejemplo: con tres programas, A, B y C, P1A ESA P2A P1B ESB P2B PC (a) con monoprogramación P1A P1B PC P2A PC P2B PC ESA ESB t (b) con multiprogramación c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 15 Velocidad de la UCP: medidas elementales Tiempo de respuesta para un programa: TR = I × CPI/F para una instrucción: TRI = CPI/F (Si F en MHz, TR y TRI en µs). De aquí, velocidad «de la UCP»: V = 1/TRI = F/CPI MIPS Pero distintas instrucciones tienen distintos CPI... Mezcla de instrucciones: Ii instrucciones de Ci ciclos... CPI = I1×C1+I2×C2+... In×Cn I1+I2+... In MIPS depende de la mezcla, y, por tanto, del programa c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 16 Velocidad de la UCP: bancos de medida (benchmarks) Pequeños programas: factorial, quicksort... Benchmarks clásicos: Whetstone, Dhrystone... («perfil medio» de programas reales) SPECmarks (Standard Performance Evaluation Corporation): fp fp 1. Conjuntos de programas {P1int, P2int...}, {P1 , P2 ...},... 2. Vi = VPi (MM )/VPi (MR) (MM : UCP a medir; MR: UCP de referencia) 3. V = √ n V1 ×V2 × ...Vn SPECmarks SPEC CPU2006 = CINT2006 + CFP2006 (rendimiento conjunto de UCP, MP y compilador) c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 17 RISC/CISC Reduced Instruction Set Computer: Arquitectura load/store: Instrucciones de procesamiento con formato 21 + 12 + 21 Instrucciones sólo para las operaciones más frecuentes Formato de instrucciones regular: Una palabra de 32 o 64 bits; pocos formatos, y campos homogéneos Implementación (en el nivel de micromáquina) cableada c 2009 DIT-ETSIT-UPM Instrucciones y direccionamiento transp. 18