1.1 Justificación

Los estudiantes y docentes de la asignatura de Arquitectura de Computadoras enfrentan múltiples desafíos a la hora de abordar los complejos conceptos teóricos inherentes a la arquitectura x86. Para los estudiantes, en particular, la introducción a la arquitectura de una computadora puede resultar abrumadora debido a la abstracción y el nivel de detalle técnico requerido. Por su parte, los docentes se ven limitados en la capacidad de ilustrar estos conceptos de manera gradual y progresiva debido a la falta de herramientas didácticas específicas para esta arquitectura. Ante estos desafíos, los simuladores juegan un papel crucial como herramientas de apoyo, al permitir la exploración y experimentación con los conceptos de forma visual e interactiva.

La necesidad de desarrollar un simulador específico para la arquitectura x86 se fundamenta en las limitaciones de los simuladores actuales, que no se adaptan de manera efectiva al plan de estudios específico de la asignatura Arquitectura de Computadoras, tal como se dicta en la Universidad Nacional de Entre Ríos. Aunque existen simuladores que apoyan la enseñanza de la arquitectura x86 en otros contextos (Radivojevic, Cvetanovic, and Ðordevic 2011; Nikolic et al. 2009), estos tienden a incluir una gran cantidad de contenidos preestablecidos. Si bien dichos contenidos son relevantes, introducir la arquitectura x86 en su totalidad desde las primeras instancias del curso puede resultar contraproducente para estudiantes principiantes, debido a la complejidad técnica y a la extensa cantidad de conceptos involucrados.

Esta tesis propone un enfoque alternativo: el desarrollo de una herramienta de simulación específicamente diseñada para apoyar la enseñanza de los contenidos de la asignatura Arquitectura de Computadoras. El sistema simulará una computadora basada en la arquitectura x86, ofreciendo una representación progresiva de su estructura y funcionamiento. Abordará de forma modular los principales componentes del sistema: la unidad central de procesamiento (CPU), la memoria principal, el módulo de entrada/salida (E/S) y los buses de comunicación.

Entre sus funcionalidades clave, permitirá: - Visualizar en detalle cada una de las etapas del ciclo de ejecución de instrucciones (fetch y execute). - Trabajar con un repertorio limitado y escalable de instrucciones en lenguaje ensamblador. - Ejecutar programas de forma paso a paso o completa. - Gestionar interrupciones básicas para simular la interacción con periféricos como teclado y pantalla. - Evaluar el rendimiento de los programas a partir de métricas observables durante la simulación.

Estas características facilitarán una comprensión progresiva de la arquitectura x86 y promoverán una experiencia de aprendizaje alineada con los objetivos del curso.

Tabla 1.1: Funcionalidades principales del simulador propuesto
Componente Funcionalidad Principal Propósito Didáctico
CPU Ciclo de instrucción, ejecución paso a paso Comprender la secuencia de ejecución
Memoria Lectura/escritura en tiempo real Visualizar acceso a datos
E/S Gestión básica de teclado/pantalla Simular interacción con periféricos
Instrucciones Conjunto limitado y ampliable Acompañar el avance del curso
Evaluación Métricas de rendimiento Analizar eficiencia de programas

Contar con un simulador adaptado específicamente a los contenidos de esta asignatura no solo facilita el proceso de aprendizaje, al presentar los conceptos de manera progresiva y alineada con la currícula, sino que también permite una experiencia de aprendizaje contextualizada. Esto fomenta un aprendizaje significativo, en el cual los estudiantes pueden conectar teoría y práctica de manera efectiva a través de una herramienta diseñada para abordar de forma gradual y específica los conceptos fundamentales del curso.

Para garantizar que el simulador sea robusto, modular, flexible y fácil de modificar o ampliar, se explorará la utilización de técnicas formales de modelado y simulación, como las redes de Petri y DEVS (Discrete Event System Specification). Estas técnicas permiten una separación conceptual entre las capas de modelado y simulación, lo cual facilita tanto la comprensión del software como su adaptación. Además, estas metodologías permiten que las simulaciones escalen de forma transparente, posibilitando su ejecución en entornos de cómputo paralelo o distribuido sin necesidad de modificar el modelo, lo que representa una ventaja significativa en términos de escalabilidad (Peterson 1981; B. Zeigler, Prähofer, and Kim 2000; Bernard P. Zeigler, Muzy, and Kofman 2018).

Bibliografía

Nikolic, B., Z. Radivojevic, J. Djordjevic, and V. Milutinovic. 2009. “A Survey and Evaluation of Simulators Suitable for Teaching Courses in Computer Architecture and Organization.” IEEE Transactions on Education 52 (4): 449–58. https://doi.org/10.1109/TE.2008.930097.
Peterson, James Lyle. 1981. Petri Net Theory and the Modeling of Systems. Prentice Hall PTR.
Radivojevic, Zaharije, Milos Cvetanovic, and Jovan Ðordevic. 2011. “Design of the Simulator for Teaching Computer Architecture and Organization.” In 2011 Second Eastern European Regional Conference on the Engineering of Computer Based Systems, 124–30. IEEE.
Zeigler, Bernard P., Alexandre Muzy, and Ernesto Kofman. 2018. Theory of Modeling and Simulation: Discrete Event & Iterative System Computational Foundations. Academic Press.
Zeigler, Bernard, Herbert Prähofer, and Tag Gon Kim. 2000. “Theory of Modeling and Simulation: Integrating Discrete Event and Continuous Complex Dynamic Systems 2 (January).