El simulador Dinero IV es uno de los más conocidos y usados para el modelado, estudio y evaluación de jerarquías de memoria. Sin embargo, no ofrece en principio un front-end que permita trabajar en modo gráfico, sino que funciona en modo comando desde un terminal. En el pasado, se desarrolló un front-end conocido como SJM (Simulador de Jerarquías de memoria) que se ha venido ampliando y mejorando en la ESII mediante TFGs, en general para ser usado en prácticas de asignaturas de la propia escuela como “Organización de Computadores". Desgraciadamente, el SJM se ha quedado obsoleto, principalmente por incompatibilidades con librerías de las últimas versiones de los sistemas operativos, en particular de Windows. En este proyecto se aborda el diseño de un nuevo front-end para el Dinero IV, partiendo de cero, esto es, no se trata de mejorar el SJM sino de un nuevo diseño que se ajuste a las particularidades de las últimas versiones de Windows. El hecho de que el Dinero IV sea un simulador de código abierto facilita obviamente la realización del proyecto. En principio, el nuevo front-end se desarrollaría en Visual Studio, y debería permitir modelar jerarquías de memoria con caché (en varios niveles opcionales, y separada o unificada también opcionalmente), memoria principal, y (si el usuario lo desea) memoria virtual (basada en paginación y con opción de TLB). Todos los parámetros de cada nivel (tamaño, organización, tiempos de acceso, etc.) deben ser configurables por el usuario. El front-end mostraría un entorno similar (aunque mejorado) al del SJM: visualización de trazas de memoria, desglose de direcciones, estructura de la jerarquía, estadísticas de funcionamiento, etc.
Las principales tareas a desarrollar en el proyecto serían las siguientes:
- Estudio y comprensión del código fuente del Dinero IV
- Diseñar el nuevo front-end para que permita modelar jerarquías de memoria con caché y memoria principal
- Añadir al diseño la posibilidad de añadir memoria virtual a la jerarquía de memoria
- Evaluar el simulador mejorado y ampliado mediante una batería de pruebas de simulación.
- Integración del proyecto en repositorio de control de versiones gitraap.
- Diseño y desarrollo de test unitarios.
- Documentar los resultados, incluyendo la memoria del TFG.
Las competencias que este proyecto puede contribuir a adquirir son las siguientes:
[CO8] Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
[CO9] Capacidad de conocer, comprender y evaluar la estructura y arquitectura de los computadores, así como los componentes básicos que los conforman.
[CO17] Capacidad para diseñar y evaluar interfaces persona computador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas
[CO19] Ejercicio original a realizar individualmente y presentar y defender ante un tribunal universitario, consistente en un proyecto de naturaleza profesional en el ámbito de la tecnología específica de la Ingeniería en Informática que ha realizado el estudiante. En este ejercicio se deben sintetizar e integrar las competencias adquiridas en las enseñanzas.
[IS1] Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.
[IS4] Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
[IC3] Capacidad de analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas.
[UCLM3] Correcta comunicación oral y escrita.
[INS1] Capacidad de análisis, síntesis y evaluación.
[INS2] Capacidad de organización y planificación.
[SIS5] Creatividad.