Arquitectura del Conjunto de Instrucciones

Diseño de ISA: codificación de instrucciones, modos de direccionamiento, formatos de código de operación y lenguaje ensamblador.

La Arquitectura del Conjunto de Instrucciones (ISA) es el contrato entre hardware y software—define qué instrucciones entiende la CPU, cómo se codifican en binario y cómo se especifican los operandos. Diseñar una buena ISA significa equilibrar la simplicidad (fácil de decodificar en hardware) con la expresividad (operaciones útiles para los programadores). La ISA es la decisión arquitectónica más importante en el diseño de una CPU.

Objectives

  • Definir la ISA y su papel como interfaz hardware-software
  • Diseñar formatos de codificación de instrucciones (código de operación, operandos)
  • Explicar los modos de direccionamiento comunes (inmediato, registro, directo, indirecto)
  • Escribir programas simples en lenguaje ensamblador
  • Comparar formatos de instrucción de longitud fija y longitud variable

Key Takeaways

  • ISA = el contrato hardware-software que define instrucciones y codificación
  • El código de operación identifica la operación; los campos de operando especifican las fuentes de datos
  • Modos de direccionamiento: inmediato, registro, directo, indirecto, indexado
  • RISC: longitud fija, carga-almacenamiento, muchos registros, decodificación simple
  • CISC: longitud variable, registro-memoria, instrucciones complejas

Applications

  • Arquitectura ARM: ISA RISC dominante en mercados móviles, embebidos y cada vez más en servidores.
  • Arquitectura x86: ISA CISC que impulsa la computación de escritorio y servidores durante más de 40 años.
  • RISC-V: ISA de código abierto que permite el diseño de procesadores personalizados y la educación.
  • Diseño de Compiladores: Los compiladores deben generar código eficiente dirigido a la ISA.

Practice Problems

Problem 1: Diseña un formato de instrucción de 16 bits para una CPU con 16 instrucciones y 4 registros. ¿Cuántos bits para código de operación, fuente, destino?

Problem 2: ¿Qué modo de direccionamiento es: LOAD R3, [R1 + 8]?

Problem 3: Escribe una secuencia simple en ensamblador para calcular R3 = R1 + R2 × 4 (suponiendo que existe multiplicación).

Problem 4: ¿Por qué las arquitecturas RISC prefieren instrucciones de longitud fija?