2.4 Repertorio de instrucciones

El repertorio de instrucciones, o Instruction Set Architecture (ISA), es el conjunto de operaciones que un procesador puede ejecutar, incluyendo su representación binaria y el conjunto de reglas que definen la interacción entre el software y el hardware. El ISA define la interfaz entre el hardware y el software, abarcando instrucciones aritméticas, lógicas, de control y de manipulación de datos, así como los modos de direccionamiento y los formatos de instrucción. Por su influencia directa en el rendimiento, la eficiencia energética y la versatilidad del sistema, el ISA constituye un componente esencial en el diseño de arquitecturas de computadoras (John L. Hennessy and Patterson 2017a; Null 2023; Stallings 2021).

2.4.1 Características clave del ISA

Entre las características fundamentales a considerar en el diseño de un repertorio de instrucciones se encuentran las siguientes (John L. Hennessy and Patterson 2017a):

  • Tipos de operandos: representan los datos que las instrucciones pueden manipular, como enteros, números en punto flotante, caracteres y direcciones de memoria. Un ISA eficiente debe soportar una amplia variedad de operandos para maximizar su versatilidad.
  • Tipos de operaciones: incluyen las operaciones que el procesador puede realizar, como aritméticas (suma, resta), lógicas (AND, OR), de control (saltos, llamadas a subrutinas) y de manipulación de datos (almacenamiento, carga). Diversos autores destacan que un ISA bien diseñado debe lograr un equilibrio entre funcionalidad, simplicidad y eficiencia de implementación, aspectos fundamentales en el diseño de arquitecturas modernas (John L. Hennessy and Patterson 2017a; Null 2023).
  • Modos de direccionamiento: determinan cómo se especifican los operandos en las instrucciones. Entre los modos más comunes se encuentran el inmediato, directo, indirecto, mediante registros, con desplazamiento y basado en pila. Cada uno ofrece distintos niveles de eficiencia, flexibilidad y complejidad, siendo fundamentales para optimizar el acceso a datos y la ejecución de instrucciones.
  • Formato de las instrucciones: que definen las reglas para acceder a los operandos dentro de las instrucciones, se exploran con mayor detalle en la siguiente subsección.
Características repertorio de instrucciones

Figura 2.4: Características repertorio de instrucciones

El diseño de un repertorio de instrucciones eficiente y versátil es un desafío complejo que requiere un equilibrio entre funcionalidad, rendimiento y facilidad de uso. La selección adecuada de operandos, operaciones y modos de direccionamiento, junto con un formato de instrucción bien estructurado, son aspectos fundamentales para lograr una arquitectura de computadoras efectiva y adaptable a diversas aplicaciones. Estas características no solo definen las capacidades funcionales de un procesador, sino que también condicionan la manera en que las instrucciones interactúan con la memoria y los registros. A continuación, se profundiza en los modos de direccionamiento, uno de los elementos que más influye en la flexibilidad y eficiencia del repertorio de instrucciones.

2.4.2 Modos de direccionamiento

Los modos de direccionamiento definen los mecanismos mediante los cuales una instrucción especifica la ubicación de sus operandos, permitiendo así al procesador acceder a los datos en memoria o registros en tiempo de ejecución. A continuación, se describen los modos de direccionamiento más comúnmente implementados en las arquitecturas modernas (Stallings 2021; John L. Hennessy and Patterson 2017a):

  1. Inmediato: el operando está directamente incluido en la instrucción, permitiendo acceso rápido a valores constantes. Es eficiente para operaciones simples, aunque limitado a operandos pequeños.
  2. Directo: la instrucción contiene la dirección de memoria del operando. Es fácil de usar, pero está restringido por el rango de direcciones accesibles.
  3. Indirecto: la instrucción apunta a una dirección que contiene la ubicación real del operando, lo que amplía el rango de direcciones a costa de un acceso adicional a memoria.
  4. Registro: el operando se encuentra en un registro del procesador, proporcionando acceso extremadamente rápido, pero limitado por la cantidad de registros disponibles.
  5. Registro Indirecto: similar al modo indirecto, pero la dirección efectiva se obtiene a partir del contenido de un registro, lo que ofrece un buen equilibrio entre velocidad de acceso y capacidad de direccionamiento.
  6. Con Desplazamiento: combina una dirección base con un valor de desplazamiento, ideal para estructuras como arrays y matrices.
  7. Pila: el operando está en la parte superior de la pila, útil para gestionar subrutinas y el paso de parámetros.

Para complementar la descripción anterior, la Figura 2.5 presenta una representación esquemática de los modos de direccionamiento, mostrando gráficamente cómo se calcula la dirección efectiva (EA) en cada caso (Stallings 2021).

Modos de direccionamiento

Figura 2.5: Modos de direccionamiento

  • A = contenido de un campo de dirección en la instrucción
  • R = contenido de un campo de dirección en la instrucción que referencia a un registro
  • EA = dirección real (efectiva) de la posición que contiene el operando que se referencia

La tabla 2.3 detalla el cálculo de la dirección para cada modo de direccionamiento.

Tabla 2.3: Modos de direccionamiento básicos
Modo Algoritmo Ventaja Desventaja
Inmediato Operando ← A No referencia a memoria Operando de magnitud limitada
Directo EA ← A Es sencillo Espacio de direcciones limitado
Indirecto EA ← (A) Espacio de direcciones grande Referencias múltiples a memoria
Registro EA ← R No referencia a memoria Número limitado de registros
Indirecto con registro EA ← (R) Espacio de direcciones grande Referencia extra a memoria
Con desplazamiento EA ← A + (R) Flexibilidad Complejidad
Pila EA ← puntero de pila No referencia a memoria Aplicabilidad limitada

2.4.3 Formato de las instrucciones

El formato de las instrucciones especifica la disposición y codificación de los elementos que conforman una instrucción, como el código de operación (opcode), los operandos, los modos de direccionamiento y otros campos auxiliares. Esta organización impacta directamente en la facilidad de decodificación y en el rendimiento del procesador. Este formato afecta la rapidez de decodificación y la eficiencia general del procesador (John L. Hennessy and Patterson 2017a; Tanenbaum 2016):

  • Longitud de la instrucción: puede ser fija o variable. Las instrucciones de longitud fija permiten una decodificación más rápida y simplifican la lógica de control del procesador. En cambio, las instrucciones de longitud variable permiten una codificación más eficiente del espacio de memoria, a costa de una mayor complejidad en la etapa de decodificación.
  • Cantidad de operandos: las instrucciones pueden trabajar con diferentes números de operandos (de 0 a 3 o más). Una mayor cantidad de operandos incrementa la expresividad de las instrucciones, pero también puede derivar en una mayor complejidad de codificación y en un mayor uso de recursos del procesador.
  • Campos de instrucción: incluyen el opcode y campos adicionales como operandos, modos de direccionamiento y flags de condición. Estos campos determinan cuántas y qué tipo de operaciones puede ejecutar el procesador en un ciclo de reloj.

La Figura 2.6 muestra un ejemplo representativo de formato de instrucción, donde se visualizan los campos que la componen y su disposición en el código binario.

Formato de instrucciones

Figura 2.6: Formato de instrucciones

2.4.4 Comparativa de repertorios de instrucciones

La siguiente tabla 2.4 resume las características principales de los repertorios de instrucciones en tres arquitecturas ampliamente utilizadas: x86, ARM y RISC-V. Se consideran aspectos como la longitud de las instrucciones, la cantidad de operandos, su complejidad y los modos de direccionamiento que permiten.

Tabla 2.4: Comparativa de repertorios de instrucciones reales
Arquitectura Longitud instrucción Nº operandos Tipos de operandos Modos de direccionamiento
x86 Variable 0–3+ Complejos Muchos
ARM Fija (32 bits) 3 Simples Limitados
RISC-V Fija (32 bits) 3 Simples Extensible

Bibliografía

Hennessy, John L., and David A. Patterson. 2017a. Computer Architecture: A Quantitative Approach. 6th ed. Boston: Morgan Kaufmann.
Null, Linda. 2023. Essentials of Computer Organization and Architecture with Navigate Advantage Access. 6th ed. Burlington, MA: Jones & Bartlett Learning.
Stallings, William. 2021. Computer Organization and Architecture: Designing for Performance. 11th ed. Boston, MA: Pearson.
Tanenbaum, Andrew S. 2016. Structured Computer Organization. Pearson Education India.