isa (instruction set architecture) arquitectura del conjunto de instrucciones
TRANSCRIPT
ISA(Instruction Set Architecture)
Arquitectura del conjunto de instrucciones
Universidad de Sonora Arquitectura de Computadoras 2
Instruction Set Architecture (ISA)
Arquitectura del conjunto de instrucciones
Conjunto de instrucciones
software
hardware
Universidad de Sonora Arquitectura de Computadoras 3
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 4
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 5
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 6
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 7
Abstracción
Bajando el nivel de abstracción revela otras informaciones
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
00000000101000010000000000011000000000001000111000011000001000011000110001100010000000000000000010001100111100100000000000000100101011001111001000000000000000001010110001100010000000000000010000000011111000000000000000001000
Binary machinelanguageprogram(for MIPS)
C compiler
Assembler
Assemblylanguageprogram(for MIPS)
High-levellanguageprogram(in C)
Universidad de Sonora Arquitectura de Computadoras 8
Ejemplo ampliadoswap(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 9
InstruccionesPor 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, $s2El 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 10
InstruccionesDos opciones de direccionamiento:
Implícito. El opcode implica la dirección de los operandos.Ejemplo en una máquina de pila (stack)
addLa 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 11
InstruccionesExplícito. Las direcciones vienen en
los operandos.Ejemplo de MIPS:
add $s0, $s1, $s2Dos operandos fuentes: s1 y s2Un operando destino: s0s0 = s1 + s2
Universidad de Sonora Arquitectura de Computadoras 12
Organización de la memoriaSe puede ver como un vector (arreglo de una
dimensión).Una dirección de memoria es un índice del
vector.0
1
2
3
4
5
Datos
Datos
Datos
Datos
Datos
Datos
...
Con n bits, se puede direccionarhasta 2n – 1 datos
Universidad de Sonora Arquitectura de Computadoras 13
Organización de la memoriaAlineació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.
0
4
8
12
...
Datos 32 bits
Datos 32 bits
Datos 32 bits
Datos 32 bits
Universidad de Sonora Arquitectura de Computadoras 14
Organización de la memoriaHay 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 15
Big-endian/Little-endianEjemplo: 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 16
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 17
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 18
Big-endian/Little-endianIntel x86 es little-endian.Sun SPARC es big-endian.
Universidad de Sonora Arquitectura de Computadoras 19
Instrucciones típicasAritmé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.