Вы находитесь на странице: 1из 19

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 estn en la misma memoria. - Las instrucciones son ledas de la memoria y ejecutadas en la unidad de procesamiento (CPU), una a una. - Las instrucciones son almacenadas en la misma secuencia de ejecucin. - La unidad de control es responsable del control de la lectura y ejecucin 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 instruccin es directamente ejecutada por el

hardware

Universidad de Sonora

Arquitectura de Computadoras

Instruction Set Architecture (ISA)


Cmo se representa?
Con un formato binario. El hardware solo entiende

bits. Los objetos fsicos son bits, bytes, palabras (words). Tamao tpico de palabra: 4 u 8 bytes (32 o 64 bits).

Universidad de Sonora

Arquitectura de Computadoras

Instruction Set Architecture (ISA)


Dos opciones de tamao de las instrucciones:
Fijo. Cada instruccin ocupa el mismo nmero de

bytes. Variable. Cada instruccin ocupa distintos nmeros de bytes.

Universidad de Sonora

Arquitectura de Computadoras

High-level language program (in C)

Abstraccin
Bajando el nivel de abstraccin revela otras informaciones
Assembly language program (for MIPS)

swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; }

C compiler

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

Assembler

Binary machine language program (for MIPS)

Universidad de Sonora

Arquitectura de Computadoras

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 7 00000011111000000000000000001000

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 (cdigo de operacin).


Ejemplo de MIPS:

add $s0, $s1, $s2 El opcode es add (suma)

Tienen operandos: 0, 1, 2 o 3. La instruccin de arriba tiene 3 operandos. Significa s0 = s1 + s2


Universidad de Sonora Arquitectura de Computadoras 9

Instrucciones
Dos opciones de direccionamiento:
Implcito. El opcode implica la direccin de

los operandos.
Ejemplo en una mquina de pila (stack)

add La instruccin saca (pop) dos valores de la pila, hace la suma y deja (push) el resultado en la pila.
Universidad de Sonora Arquitectura de Computadoras 10

Instrucciones
Explcito. 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

11

Organizacin de la memoria
Se puede ver como un vector (arreglo de una

dimensin). Una direccin de memoria es un ndice del vector.


0 1 2 3 4 5 ...
Universidad de Sonora Arquitectura de Computadoras 12 Datos Datos Datos Datos Datos Datos

Con n bits, se puede direccionar hasta 2n 1 datos

Organizacin de la memoria
Alineacin. La direccin de una palabra en memoria

comienza en un mltiplo del nmero 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

13

Organizacin de la memoria
Hay dos formas de guardar una palabra multi-byte en

memoria:
Big-endian. El byte mas significativo se guarda en la

direccin mas baja. Little-endian. El byte menos significativo se guarda en la direccin mas baja.

Universidad de Sonora

Arquitectura de Computadoras

14

Big-endian/Little-endian
Ejemplo: guardar la palabra de 4 bytes 1234567816 en la

direccin 1000.
0001 0010 0011 0100 0101 0110 0111 1000

Byte mas significativo

Byte menos significativo

Universidad de Sonora

Arquitectura de Computadoras

15

Big-endian
1000 1001 1002 1003 0001 0010 0011 0100 0101 0110 0111 1000 Byte menos significativo

Byte mas significativo

Universidad de Sonora

Arquitectura de Computadoras

16

Little-endian
1000 1001 1002 1003 0111 1000 0101 0110 0011 0100 0001 0010 Byte mas significativo

Byte menos significativo

Universidad de Sonora

Arquitectura de Computadoras

17

Big-endian/Little-endian
Intel x86 es little-endian.
Sun SPARC es big-endian.

Universidad de Sonora

Arquitectura de Computadoras

18

Instrucciones tpicas
Aritmticas: suma (add), resta (sub), multiplicacin

(mul), divisin (div). Lgicas: 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

19