Conjunto de instrucciones

Un conjunto de instrucciones, repertorio de instrucciones, juego de instrucciones o ISA (del inglés instruction set architecture, «arquitectura del conjunto de instrucciones») es una especificación que detalla las instrucciones que una unidad central de procesamiento puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU. El término describe los aspectos del procesador generalmente visibles para un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.

Existen principalmente tres tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) y SISC ( Simple Instruction Set Computing).

La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de características de la microarquitectura, que son los elementos y técnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentran las microinstrucciones y los sistemas de caché.

Procesadores con diferentes diseños internos pueden compartir un conjunto de instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi idénticas del conjunto de instrucciones x86, aunque tienen diseños diferentes.

El lenguaje máquina

El lenguaje máquina está construido a partir de los estados discretos o instrucciones. En la arquitectura de procesamiento, una instrucción dada puede especificar:

  • Registros particulares para operaciones aritméticas, de direccionamiento o de control.
  • Ubicaciones particulares de la memoria.
  • Modos de direccionamiento para interpretar a los operandos.

Las operaciones más complejas se construyen a partir de estas, que (en una máquina Von Neumann) se ejecutan secuencialmente, o según el control de flujo.

Muchas o pocas de las operaciones disponibles incluidas en la mayoría de conjuntos son:

  • Desplazamiento.
    • Establecer un registro a un valor constante.
    • Mover datos desde una posición de memoria a un registro y viceversa. Esto se realiza para obtener datos para operaciones matemáticas y su almacenamiento.
    • Leer y escribir datos desde dispositivos de hardware.
  • Operaciones matemáticas.
    • Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos.
    • Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit en un par de registros, o el NOT de cada bit en un registro.
    • Comparar dos valores que se encuentren en registros(por ejemplo, si son iguales o si uno es mayor que otro).
  • Afectan al flujo de programa.
    • Saltar a otra posición del programa y ejecutar instrucciones allí.
    • Saltar a otra posición si se cumple cierta condición.
    • Saltar a otra posición, pero salvando la posición actual para poder volver (realizar una llamada, por ejemplo call printf).

Algunas computadoras incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de múltiples unidades funcionales.

Algunos ejemplos son:

  • Ahorro de registros en la pila.
  • Mover grandes bloques de memoria.
  • Complejas operaciones and/or con aritmética de coma flotante, tales como el seno o la raíz cuadrada.
  • Instrucciones que combinan ALU con un operando de la memoria más que de registros.

Un tipo complejo de la instrucción que ha llegado a ser particularmente popular recientemente es SIMD (Single Instruction, Multiple Data), una operación que realice la misma operación aritmética en pedazos múltiples de datos al mismo tiempo. SIMD tienen la capacidad de manipular vectores y matrices grandes en tiempo mínimo. Las instrucciones de SIMD permiten la paralelización fácil de los algoritmos implicados comúnmente en sonido, imagen, y el proceso video. Varias implementaciones de SIMD se han traído al mercado bajo nombres comerciales tales como MMX, 3DNow! y AltiVec.

El diseño de sistemas de instrucción es una edición compleja. Había dos etapas en la historia para el microprocesador. El primer era el CISC (Complex Instruction Set Computer) que tenía muchas instrucciones diferentes. En los años 1970, IBM hicieron la investigación y encontraron que muchas instrucciones en el sistema podrían ser eliminadas. El resultado era el RISC (Reduced Instruction Set Computer), una arquitectura que utiliza un sistema más pequeño de instrucciones. Un conjunto de instrucción más simple puede ofrecer el potencial para velocidades más altas, tamaño reducido del procesador, y consumo de energía reducido. Sin embargo, un conjunto más complejo puede optimizar operaciones comunes, mejorar memoria/eficiencia de caché, o simplificar la programación.

Other Languages