190 likes | 393 Views
ISA (Instruction Set Architecture). Arquitectura del conjunto de instrucciones. Instruction Set Architecture (ISA ) Arquitectura del conjunto de instrucciones. software. Conjunto de instrucciones. hardware. Modelo de von Neumann. - Las instrucciones y los datos están en la misma memoria.
E N D
ISA(Instruction Set Architecture) Arquitectura del conjunto de instrucciones
Instruction Set Architecture (ISA) Arquitectura del conjunto de instrucciones software Conjunto de instrucciones hardware Arquitectura de Computadoras
Modelo de von Neumann - Las instrucciones y los datos están en la misma memoria. - Las instrucciones son leídas de la memoria y ejecutadas en la unidad de procesamiento (CPU), una a una. - Las instrucciones son almacenadas en la misma secuencia de ejecución. - La unidad de control es responsable del control de la lectura y ejecución de las instrucciones. Arquitectura de Computadoras
Instruction Set Architecture (ISA) ¿Qué es un conjunto de instrucciones? • La frontera entre el hardware y el software • Cada instrucción es directamente ejecutada por el hardware Arquitectura de Computadoras
Instruction Set Architecture (ISA) ¿Cómo se representa? • Con un formato binario. El hardware solo entiende bits. • Los objetos físicos son bits, bytes, palabras (words). • Tamaño típico de palabra: 4 u 8 bytes (32 o 64 bits). Arquitectura de Computadoras
Instruction Set Architecture (ISA) Dos opciones de tamaño de las instrucciones: • Fijo. Cada instrucción ocupa el mismo número de bytes. • Variable. Cada instrucción ocupa distintos números de bytes. Arquitectura de Computadoras
Abstracción Bajando el nivel de abstracción revela otras informaciones Arquitectura de Computadoras
Ejemplo ampliado swap(int v[], int k) { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; } swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Arquitectura de Computadoras
Instrucciones • Por lo general son operaciones simples que pueden ser ejecutadas directamente por el hardware. • Se identifican por un opcode (código de operación). • Ejemplo de MIPS: add $s0, $s1, $s2 • El opcode es “add” (suma) • Tienen operandos: 0, 1, 2 o 3. • La instrucción de arriba tiene 3 operandos. • Significa s0 = s1 + s2 Arquitectura de Computadoras
Instrucciones Dos opciones de direccionamiento: • Implícito. El opcode implica la dirección de los operandos. • Ejemplo en una máquina de pila (stack) add • La instrucción saca (pop) dos valores de la pila, hace la suma y deja (push) el resultado en la pila. Arquitectura de Computadoras
Instrucciones • Explícito. Las direcciones vienen en los operandos. • Ejemplo de MIPS: add $s0, $s1, $s2 • Dos operandos fuentes: s1 y s2 • Un operando destino: s0 • s0 = s1 + s2 Arquitectura de Computadoras
0 Datos 1 Datos 2 Datos 3 Datos 4 Datos 5 Datos ... Organización de la memoria • Se puede ver como un vector (arreglo de una dimensión). • Una dirección de memoria es un índice del vector. Con n bits, se puede direccionar hasta 2n – 1 datos Arquitectura de Computadoras
0 Datos 32 bits 4 Datos 32 bits 8 Datos 32 bits 12 Datos 32 bits ... Organización de la memoria • Alineación. La dirección de una palabra en memoria comienza en un múltiplo del número de bytes que ocupa una palabra. • Ejemplo de memoria con palabras alineadas de 4 bytes. Arquitectura de Computadoras
Organización de la memoria • Hay dos formas de guardar una palabra multi-byte en memoria: • Big-endian. El byte mas significativo se guarda en la dirección mas baja. • Little-endian. El byte menos significativo se guarda en la dirección mas baja. Arquitectura de Computadoras
0001 0010 0011 0100 0101 0110 0111 1000 Byte mas significativo Byte menos significativo Big-endian/Little-endian • Ejemplo: guardar la palabra de 4 bytes 1234567816 en la dirección 1000. Arquitectura de Computadoras
Byte mas significativo 0001 0010 1000 0011 0100 1001 1002 0101 0110 0111 1000 Byte menos significativo 1003 Big-endian Arquitectura de Computadoras
Byte menos significativo 0111 1000 1000 0101 0110 1001 1002 0011 0100 0001 0010 Byte mas significativo 1003 Little-endian Arquitectura de Computadoras
Big-endian/Little-endian • Intel x86 es little-endian. • Sun SPARC es big-endian. Arquitectura de Computadoras
Instrucciones típicas • Aritméticas: suma (add), resta (sub), multiplicación (mul), división (div). • Lógicas: and, or, xor, not. • Movimiento de datos: copia (copy), carga (load), guarda (store), mueve (move). • Control: brinca (jump), brinca condicional (jump if), llama subrutina (call), regresa de subrutina (ret). • Sistema: llamadas a funciones del sistema operativo. Arquitectura de Computadoras