23/06 Work in Progress: 20230601

Development of a support tool for teaching Computer Structure

(gl) Desenvolvemento dunha ferramenta de apoio á docencia de Estrutura de Computadores (es) Desarrollo de una herramienta de apoyo a la docencia de Estructura de Computadores

Student

Miguel Castro Castro

Supervision

Diego Darriba López (UDC)
Emilio José Padrón González (UDC)

Breve descripción

Estrutura de Computadores é unha asignatura de segundo curso do Grao en Enxeñería Informática na que se estudia a organización, función e deseño dun procesador. Nesta asignatura preséntase o procesador segmentado, no que se incorpora paralelismo a nivel de instrución, como unha evolución do procesador multiciclo que se estudia na asignatura de Fundamentos de Computadores.

O director Diego Darriba desenvolveu a ferramenta MipsSim [1], que simula o funcionamento de procesadores MIPS multiciclo e MIPS segmentado a nivel de hardware. No seu estado actual soporta un subconxunto do repertorio de instrucións que soporta o procesador e non incorpora coprocesadores.

O obxectivo deste proxecto é a construcción dunha ferramenta interactiva, sinxela e portable que sirva de apoio para a aprendizaxe do funcionamento dun procesador RISC que incorpore paralelismo a nivel de instrucción. A ferramenta se poderá executar en diferentes sistemas operativos (Windows, OS X, Linux) e estudiarase a posibilidade de executala tamén en dispositivos móbiles ou HTML5.

Para a creación da interface valórase empregar un motor gráfico multiplataforma, como pode ser Godot Engine [2]. Godot Engine é un motor de videoxogos 2D e 3D, libre e de código aberto, aínda que a súa funcionalidade non está necesariamente limitada á creación de videoxogos.

[1] MipsSim: https://github.com/ddarriba/mips_sim

[2] Godot Engine: https://godotengine.org

Objetivos concretos

  • Estudio de Godot Engine como ferramenta para o desenvelvemento de aplicacións didácticas multiplataforma

  • Ampliación do simulador MipsSim para incorporar a posibilidade de configurar o pipeline e personalizar o seu comportamento para avaliar deseños alternativos. A versión actual de MipsSim implementa un pipeline ríxido.

    • Deseño e implementación no simulador dun procesador segmentado configurable no que se poda escoller as súas compoñentes: etapas de procesamento, unidades funcionáis e/ou coprocesadores.
    • Deseño e implementación dun coprocesador de punto flotante.
    • Incorporación ao simulador de novas instrucións: operacións en punto flotante e xestión de subrutinas.
  • Deseñar e implementar unha aplicación para o ensino do funcionamento e implementación dun procesador RISC (MIPS ou RISC-V) coas seguintes características

    • Soporte de paralelismo a nivel de instrucción
    • Visualización da unidade de control e estado das compoñentes hardwarbe
    • Ensinar o concepto de detección de riscos na execución e a súa importancia
    • Aplicación de técnicas para acelerar a execución: unidade de anticipación

Método de trabajo

Empregarase unha metodoloxía áxil, cun desenvolvemento iterativo que, con «sprints» de unha ou dúas semanas, vaia incorporando as funcionalidades necesarias en prototipos funcionais que poden ser probados ao final de cada iteración.

Fases principales

Análise e toma de requisitos

Estudio da versión actual de MipsSim e das ferramentas e tecnoloxías dispoñibles para o deseño dunha interface interactiva para MipsSim (Godot Engine, principalmente)

Deseño e implementación dunha interface interactiva básica en Godot para MipsSim

Deseño e implementación das ampliacións en MipsSim propostas

Incorporación iterativa de melloras na interface en Godot, evolucionando a ferramenta ata acadar o resultado final. Cada iteración producirá un prototipo que será probado e validado.

Material y medios necesarios

Para o desenvolvemento deste proxceto farase uso de ferramentas gratuitas e de licencia libre como Godot, GIT, GCC, MipsSim, etc.

Teaching and Researching in Computer Science/Engineering

My research interests include High Performance Computing (HPC) and Computer Graphics.