2.1 Introducción a la arquitectura de computadoras
La arquitectura de computadoras es una disciplina central en el campo de la informática que estudia el diseño, la organización y la interacción entre los componentes de un sistema computacional. Esta área abarca tanto aspectos de hardware como de software que interactúan directamente con él, proporcionando principios fundamentales para construir sistemas eficientes, robustos y adaptables. Comprender su funcionamiento resulta esencial para analizar cómo se implementan, optimizan y escalan los sistemas informáticos en diversos contextos tecnológicos (Stallings 2021; Tanenbaum 2016; Murdocca and Heuring 2000; Bryant and O’Hallaron 2015).
Uno de los conceptos clave en esta disciplina es la distinción entre arquitectura de computadoras y organización de computadoras. La arquitectura se refiere a los elementos visibles para el programador, como el conjunto de instrucciones, los registros y los modos de direccionamiento. La organización, en cambio, se enfoca en los detalles físicos de implementación, tales como el diseño de circuitos y los ciclos de reloj necesarios para cada operación (Stallings 2021; Tanenbaum 2016; Murdocca and Heuring 2000; John L. Hennessy and Patterson 2017a; Bryant and O’Hallaron 2015).
Distinguir esta diferencia es crucial para analizar cómo los diseños arquitectónicos han evolucionado en respuesta a las crecientes demandas de rendimiento, eficiencia energética y escalabilidad. En este sentido, arquitecturas como ARM y RISC-V se han consolidado en sistemas embebidos y dispositivos móviles debido a su simplicidad estructural y bajo consumo energético (Waterman and Asanović 2014; Harris and Harris 2015; Null 2023). En contraste, la arquitectura x86 ha adoptado un enfoque híbrido que combina características de CISC y RISC, permitiéndole adaptarse a los exigentes requerimientos del mercado (Bryant and O’Hallaron 2015; Stallings 2021; Patterson et al. 2014).
El análisis de una arquitectura de computadoras implica examinar múltiples dimensiones técnicas que inciden en su desempeño y aplicabilidad. Entre las más relevantes se encuentran:
- Repertorio de instrucciones: conjunto de operaciones que el procesador puede ejecutar directamente.
- Capacidad de procesamiento: determinada por el número de bits con los que opera la CPU (por ejemplo, 32 o 64 bits).
- Modos de direccionamiento de memoria: mecanismos mediante los cuales una instrucción accede a posiciones de memoria, como el direccionamiento directo, indirecto, segmentado o lineal.
- Jerarquía de memoria y mecanismos de entrada/salida: estructuras que influyen en la eficiencia del acceso a datos y en la interacción con dispositivos periféricos.
- Grado de paralelismo: capacidad de ejecutar múltiples instrucciones o tareas simultáneamente, ya sea a nivel de instrucción (ILP) o de procesos (TLP).
Estos dimensiones técnicas adquieren especial relevancia en sistemas contemporáneos aplicados a inteligencia artificial, internet de las cosas (IoT), computación en la nube y ciberseguridad, donde el equilibrio entre rendimiento, consumo energético y escalabilidad resulta determinante (David A. Patterson and Hennessy 2016a; Harris and Harris 2015; Belli et al. 2020).
Un componente esencial en el estudio de esta disciplina es la arquitectura del conjunto de instrucciones (ISA, por sus siglas en inglés), que define la interfaz entre el hardware y el software (John L. Hennessy and Patterson 2017a). La ISA especifica las operaciones disponibles, la codificación de las instrucciones y las formas de manipular los datos. Esta interfaz es fundamental para el diseño de compiladores, sistemas operativos y herramientas de simulación, ya que permite abstraer el funcionamiento del hardware a nivel lógico y facilita la portabilidad del software.
El diseño arquitectónico implica tomar decisiones que suponen compromisos (trade-offs), tales como la complejidad del hardware frente al rendimiento, o la eficiencia energética frente a la flexibilidad funcional. Estas decisiones determinan la aplicabilidad de una arquitectura en distintos dominios tecnológicos. Por ejemplo:
- La arquitectura x86 resulta adecuada para entornos que requieren alto rendimiento y compatibilidad con software legado.
- La arquitectura ARM se prefiere en dispositivos móviles debido a su bajo consumo energético (David A. Patterson and Hennessy 2016a; Harris and Harris 2015; Belli et al. 2020).
- RISC-V, por su parte, destaca por su apertura, modularidad y flexibilidad, lo que la convierte en una alternativa atractiva para investigación, docencia y aplicaciones personalizadas (David A. Patterson and Hennessy 2017; Waterman and Asanović 2014).
En síntesis, el estudio de la arquitectura de computadoras permite comprender el funcionamiento interno de los sistemas, optimizar el desarrollo de soluciones tecnológicas complejas y fomentar la innovación en ingeniería de sistemas. Su enseñanza resulta fundamental en la formación en ciencias de la computación y disciplinas afines.
Desde una perspectiva educativa, el uso de herramientas de simulación contribuye a una comprensión progresiva de los conceptos arquitectónicos, al permitir experimentar con distintas arquitecturas y observar de forma interactiva el comportamiento del hardware (Akram and Sawalha 2019b; Menchón, Tosini, and Goñi, n.d.). Esta dimensión didáctica adquiere especial importancia en el desarrollo de la herramienta propuesta en esta tesis, centrada en la arquitectura x86. Dicha arquitectura, ampliamente difundida en contextos académicos e industriales, también presenta desafíos significativos desde el punto de vista pedagógico, debido a su complejidad estructural y diversidad funcional.