Aubrac
Aubrac est le nom d’une race française de vaches originaire du Plateau de l’Aubrac dans le centre de la France. Elle est notamment élevée pour son lait utilisé pour le fromage Laguiole.
Cette page et les suivantes décrivent le processeur Aubrac. Il permet l’exécution dans l’ordre d’une instruction par cycle. Il est conçu autour d’un pipeline et de deux niveaux de mémoires caches. Basé sur l’ISA RISC-V, il est développé en Chisel3 et se veut hautement configurable (taille des données, nombre d’étages, extensions du jeu d’instructions supportées etc.).
Vue globale
La Figure 1 représente le processeur Aubrac entier. Celui-ci est composé de 8 parties. Le Front-End est responsable de la récupération des instructions en mémoire. Le NLP est responsable de la prédiction des aléas du flot de contrôle. Le Back-End est responsable du décodage et de l’exécution des instructions. L’unité de gestion des champs matériels (HFU) est une unité d’exécution dédiée à la contextualisation (CHAMP ISA). Le module des I/O est utilisé pour les mécanismes addressables en mémoire spécifiques au processeur (e.g. les timers privilégiés). Enfin, L1I, L1D et L2 sont respectivement le cache d’instruction de niveau 1, le cache de données de niveau 1 et le cache unifié de niveau 2.
Support du jeu d’instructions
Le processeur Aubrac est basé sur l’ISA RISC-V. Il supporte actuellement les bases 32 et 64 bits du jeu d’instructions.
Extension | Version | Implementée ? | Testée ? | Optionnelle ? | Dépendances |
---|---|---|---|---|---|
M | 2.0 | ||||
A | 2.1 | ||||
B | 1.0.0 | ||||
Zicsr | |||||
Zicntr | |||||
Zifencei | 2.0 |
Comme décrit dans la Tableau 1, de multiples extensions sont actuellemnt implémentées dans Aubrac. La plupart d’entre elles sont optionnelles: les différents mécanismes matériels dédiés peuvent être totalement supprimés lors de la génération du Verilog.
Si les versions 32 et 64 bits sont implémentées, seule la version 32 bits est actuellement utilisée et testée. Un travail supplémentaire est nécessaire pour vérifier les instructions spécifiques à la version 64 bits, comme celles dédiées à la manipulation de mots de 32 bits.