ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones
Instruction Set Architecture (ISA) Arquitectura del conjunto de instrucciones software Conjunto de instrucciones hardware Universidad de Sonora 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. Universidad de Sonora 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 Universidad de Sonora 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). Universidad de Sonora 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. Universidad de Sonora Arquitectura de Computadoras
Abstracción Bajando el nivel de abstracción revela otras informaciones Universidad de Sonora 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 Universidad de Sonora 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 Universidad de Sonora 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. Universidad de Sonora 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 Universidad de Sonora Arquitectura de Computadoras
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. 1 2 3 4 5 Datos ... Con n bits, se puede direccionar hasta 2n – 1 datos Universidad de Sonora Arquitectura de Computadoras
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. 4 8 12 ... Datos 32 bits Universidad de Sonora 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. Universidad de Sonora Arquitectura de Computadoras
Big-endian/Little-endian Ejemplo: guardar la palabra de 4 bytes 1234567816 en la dirección 1000. 0001 0010 0011 0100 0101 0110 0111 1000 Byte mas significativo Byte menos significativo Universidad de Sonora Arquitectura de Computadoras
Big-endian 0001 0010 0011 0100 0101 0110 0111 1000 Byte mas significativo Byte menos significativo 1000 1001 1002 1003 Universidad de Sonora Arquitectura de Computadoras
Little-endian 0111 1000 0101 0110 0011 0100 0001 0010 Byte menos significativo Byte mas significativo 1000 1001 1002 1003 Universidad de Sonora Arquitectura de Computadoras
Big-endian/Little-endian Intel x86 es little-endian. Sun SPARC es big-endian. Universidad de Sonora 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. Universidad de Sonora Arquitectura de Computadoras