Conception d’un processeur RISC-V
Encadrants
- Guillaume Duc
- Emails: guillaume.duc@telecom-paris.fr
- Bureaux: --
Nombre d'étudiant par instance du projet:
- Minimum: 2
- Maximum: 3
Nombre d'instances du projet :
1Sigles des UE couvertes et/ou Mots-clés :
Processeur, RISC-V, SystemVerilog, Assembleur, Pipeline, FPGALogo/Favicon
Description du projet :
Pendant la première partie d’INF107, vous avez construit, en cours et en TP, un processeur implémentant l’architecture de jeu d’instructions (Instruction Set Architecture, ISA) RISC-V RV32I. Pour le décrire, vous avez utilisé une représentation schématique (graphique) à partir de portes logiques de base (ET, OU, multiplexeurs…) et de bascules D.
Il existe d’autres méthodes pour représenter un circuit électronique et, en particulier, des langages de description matériel (Hardware Description Language, HDL). Ils permettent de décrire, dans un langage ressemblant à des langages informatiques comme le C, un circuit électronique. L’avantage d’une telle description est qu’elle peut être facilement interprétée par un programme informatique pour faire soit de la simulation (simuler dans le temps le comportement du circuit en fonction de stimuli sur les entrées), soit de la synthèse (construire un circuit “réel”, qui se comporte comme le circuit décrit, par assemblage de composants disponibles).
La première partie du projet consistera à découvrir le langage de description matériel SystemVerilog (qui sera vu ultérieurement en ELEC101) et à décrire, dans ce langage, le processeur simple (exécution des instructions en 1 cycle) vu en INF107. Vous devrez ensuite tester son bon fonctionnement à l’aide d’un simulateur et de suites de test pertinentes.
Vous intégrerez ensuite votre processeur dans un système plus large avec quelques périphériques simples (pilotage de LEDs et de boutons) pour pouvoir le tester “en vrai” en le synthétisant pour un FPGA (un FPGA est un circuit électronique qui peut être programmé pour réaliser différents circuits logiques).
Dans une deuxième partie du projet, vous améliorerez les performances du processeur en y ajoutant notamment un pipeline. Vous découvriez alors ses avantages en terme de performance mais également ses éventuels inconvénients concernant le fonctionnement et la programmation du processeur.
Dans une dernière partie, vous développerez, dans le langage que vous voulez, un assembleur, c’est-à-dire un programme qui traduit du code assembleur en code machine prêt à être exécuté par votre processeur.
Note : ce projet est également ouvert aux élèves qui n’auraient pas suivi INF107.
Objectifs du projet :
- Une première version simple (exécution en un seul cycle d’horloge) d’un processeur implémentant l’ISA RISC-V RV32I décrite en SystemVerilog
- Une deuxième version pipelinée (à 5 étages par exemple) du processeur décrite en SystemVerilog
- Un système, décrit en SystemVerilog, intégrant le processeur, ses mémoires et quelques périphériques simples (entrées/sorties numériques en particulier)
- Des suites de test (programmes assembleur) pertinentes permettant de vérifier le bon fonctionnement des deux versions du processeur
- Un assembleur fonctionnel
Références bibliographiques:
- Spécifications de l’ISA RISC-V RV32I : https://riscv.org/technical/specifications/
- Le cours d’INF107 sur le RISC-V : https://inf107.telecom-paris.fr/lectures/lecture-part1-riscv.pdf