ARQUITECTURA DEL REPERTORIO DE INSTRUCCIONES Arquitectura del Repertorio de instrucciones Arquitectura del repertorio de instrucciones Repertorio de instrucciones Organización del almacenamiento Tipos de datos Estructuras de datos Formato de instrucciones Codificación y representación numérica Modos de direccionamiento REPERTORIO DE INSTRUCCIONES Arquitectura del Repertorio de instrucciones Punto de vista del sistema operativo y los compiladores del computador. Establece los atributos del sistema computacional vistos por el programador. Repertorio de instrucciones Establece la interfaz de software para un hardware determinado. Hay varias arquitecturas de hardware, cada una con un repertorio distinto Intel AMD Digital Alpha SGI MIPS Repertorio de Intrucciones Instrucción Requerimientos de una instrucción: Lugar donde se guardará el resultado Operandos de entrada Instrucción Operación Próxima instrucción Cada instrucción es una secuencia de ceros y unos. 10101011100110010001000100010001000100 Repertorio de Instrucciones Instrucción Notación para describir los campos de una instrucción: <operación> <operador1>,...,<operadorN>, resultado. Ejemplo: load R1, A move R1, R2 jump R2 Repertorio de Instrucciones Clasificación Según se especifican los operandos de entrada y salida. Repertorio de instrucciones Stack Acumulador Reg - Reg Registros Reg - Mem Mem - Mem Repertorio de Instrucciones Clasificación: Máquinas de stack Especifican la operación. Asume que los operandos están en posiciones fijas de memoria. CPU tiene un registro: top M Ejemplo add top Operador 1 Operador 2 M[top]⇦M[top]+M[top-1] Repertorio de Instrucciones Clasificación: Máquinas con acumulador El procesador tiene un registro especial denominado acumulador (acc) Ejemplo add A acc⇦acc+M[A] M Operador Dirección de memoria A Repertorio de Instrucciones Clasificación: Máquinas Registro-Registro AKA: Carga-Almacenamiento Las operaciones se efectúan sólo entre registros. 2 ó 3 operandos explícitos. Ejemplo add Ra,Rb,Rc load Ra,(Rb) Ra⇦Rb+Rc Ra⇦M[Rb] load (Rb),Ra M[Rb]⇦Ra Repertorio de Instrucciones Clasificación: Máquinas Registro-Memoria Los operandos pueden ser direcciones de memoria o registros internos. 2 ó 3 operandos explícitos. Ejemplo add Ra,Rb,(Rc) Ra⇦Rb+M[Rc] add (Ra),Rb,(Rc) M[Ra]⇦Rb+M[Rc] load Ra,Rb Ra⇦Rb Ra⇦M[Rb] load Ra,(Rb) load (Rb),Ra M[Rb]⇦Ra Repertorio de Instrucciones Comparación Cómo comparar: Número de bits por instrucción Número de instrucciones que se requieren para efectuar una operación. Cantidad de ciclos de reloj por instrucción Ejemplo: Comparar C=A+B en distintos repertorios. Repertorio de Instrucciones Comparación C=A+B en Máquina con acumulador load A acc ⇦M[A] Add B Store C acc ⇦acc + M[B] M[C]⇦acc C=A+B en Máquina carga-almacenamiento load R1,(A) load R2,(B) add R3,R1,R2 R1 ⇦M[A] R2 ⇦M[B] R3 ⇦R1 + R2 load (C),R3 M[C]⇦R3 C=A+B en Máquina registro-memoria load R1,(A) add R1,(B) load (C),R1 R1 ⇦M[A] R1 ⇦R1 + M[B] M[C]⇦R1 MODOS DE DIRECCIONAMIENTO Modos de direccionamiento Clasificación Registro Inmediato Desplazamiento Registro indirecto Modos de direccionamiento Indexado Directo Indirecto Auto Incremento Escalado Modos de direccionamiento Clasificación Registro Add R4, R3 R4⇦R4+R3 Inmediato Add R4, #40 o l ó s n o Estos s s o l p m e j e R4⇦R4+40 Desplazamiento Add R4, 100(R1) R4⇦R4+M[100+R1] Reg. Indirecto Add R4, 100(R1) R4⇦R4+M[100+R1] Modos de direccionamiento Clasificación Indexado Add R4,(R2+R3) R4⇦M[R4+R3] Directo Add R4, (1000) R4⇦R4+M[1000] Indirecto Add R4, @(R1) R4⇦R4+M[M[R1]] Auto Incremento Add R1, (R2)+ R1⇦R1+M[R2]; R2⇦R2+d Add R1, -(R2) R2⇦R2-d; R1⇦R1+M[R2] Escalado Add R1, 100(R2)[R3] R1⇦R1+M[100+R2+R3•d] Niveles de representación Algoritmos Lenguajes de alto nivel Assembler simbólico Lenguaje Máquina Transferencias Lógicas Control Físicas Niveles de representación Lenguajes de alto nivel temp = v[k]; v[k]=v[k+1]; v[k+1]=temp; v[k] 1 temp 2 v[k+1] 3 Variables almacenadas en memoria. Tipo datos ENTERO : 4[Bytes] Niveles de representación Lenguajes de alto nivel v[k] temp = v[k]; v[k]=v[k+1]; v[k+1]=temp; 1 temp 2 v[k+1] 3 Assembler simbólico load R0, 0(R2) load R1, 4(R2) store R1, 0(R2) store R0, 4(R2) R2 1 v[k] v[k+1] R0 4 3 2 R1 24 Estructura El ensamblador traduce el código assembler a un programa objeto. El ligador (linker) pasa el programa objeto a una secuencia binaria Niveles de representación ! Lenguaje de Máquina. Binario. Assembler simbólico El segmento anterior, una vez reemplazados los campos por 1 load R0, 0(R2)en hexadecimal según: escribirse R2 R0 v[k] load R1, 4(R2) 0x8e480000 store R1, 0(R2) 0x8e490004 4 v[k+1] 3 2 0xae490000 store R0, 4(R2) R1 0xae480004 Código de máquina Y en binario según: 1000 1110 0100 1000 1110 0100 1010 1110 0100 1010 1110 0100 1000 1001 1001 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0100 0000 0100 ! Transferencias. Las instrucciones podrían describirse por las transferencias lógica Niveles de representación Assembler simbólico load R0, 0(R2) load R1, 4(R2) store R1, 0(R2) R2 store R0, 4(R2) Transferencias R0=MEM[R2+0]; PC=PC+4; R1=MEM[R2+4];PC=PC+4; MEM[R2+0]=R1;PC=PC+4; MEM[R2+4]=R0;PC=PC+4 1 v[k] v[k+1] R0 4 3 2 R1 ! Control. Niveles de representación En forma alternativa puede describirse las secuencias de las señales de control que activan las transferencias físicas. El hardware interpreta el lenguaje de máquina, mediante una secuencia de microinstrucciones, cuya descripción son las señales de control que se activan en cada ciclo del reloj:. Control ! nPC_sel = “+4”, WEPC , WEIR ; WEA ; AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ; MemRd, WEM ; RegDst = "rt", Memtoreg = "mem", RegWr. Unidad Instrucción. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. nPC_sel = “+4”, WEPC , WEIR ; WEA ; AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ; MemRd, WEM ; RegDst = "rt", Memtoreg = "mem", RegWr. Unidad Instrucción. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. Unidad Registros. Escritura. nPC_sel = “+4”, WEPC , WEIR ; WEA ; WEB ; AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ; MemWr. Unidad Instrucción. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos. nPC_sel = “+4”, WEPC , WEIR ; WEA ; WEB ; AluSrc = "Op32", ExtOp = “sign”, AluCtr = “add”,WES ; MemWr. Unidad Instrucción. Unidad Registros. Lectura. Unidad Operaciones. Unidad Memoria Datos.