Plateforme CALF: Processeur
Le processeur CALF est un processeur libre et ouvert basé sur l’architecture RISC-V. Au sein de la plateforme CALF, il est responsable de l’exécution des programmes permettant la réalisation d’application. La microarchitecture du processeur est conçu autour d’une machine d’états finis. Il réalise donc une implémentation multi-cycle de l’exécution des opérations, pouvant aller de 4 à 7 cycles selon le type d’instructions et des paramètres utilisés.
Machine d’états finis
Au sein du processeur, une machine d’états finis (ou FSM) est resonsable du séquencement de l’exécution de chaque instruction. Voici les différentes états existants:
s0BOOTest l’état au démarrage du système. Le processeur reste dans cet état jusqu’à ce que le bootloader ait terminé ses différentes opérations au démarrage.s1IF0ets1IF1sont les deux états nécessaires à la récupération en mémoire de l’instruction (Instruction Fetch). Durant le cycles1IF0, une requête de lecture est envoyée vers la mémoire à l’adresse contenu par le PC (Program Counter). Durant le cycles1IF1, la réponse de la mémoire est sauvegardée dans le registre interneinstrcontenant l’instruction à exécuter. Dans le cas où les accès mémoires s’effectuent en un seul cycle, seuls1IF0est utilisé: tout est effectué dans le même cycle.s2IDest l’état où se déroule le décodage de l’instruction (Instruction Decode). L’instruction récupérée précédemment est interprétée et traduite en signaux internes pour pilotes les différentes mécanismes d’exécution (ALU, accès mémoires etc.). C’est également à ce cycle que sont lus les différents registres servant d’opérandes depuis les registres généraux (GPR pour General Purpose Registers).s3ALUest l’état durant lequel la plupart des opérations arithmétiques et logique sont effectuées.s3BRUest l’état durant lequel les opérations liées aux branchements conditionnels et aux sauts sont effectuées.s3ADDRest l’état durant lequel l’adresse mémoire pour les accès (chargement ou rangement) est calculée.s4MEM0ets4MEM1sont les deux états nécessaires pour effectuer un accès mémoire pour une donnée. Durant le cycles4MEM0, une requête de lecture est envoyée vers la mémoire à l’adresse calculées danss3ADDR. Durant le cycles4MEM1, la réponse de la mémoire est sauvegardée dans les registres internes. Dans le cas où les accès mémoires s’effectuent en un seul cycle, seuls4MEM0est utilisé: tout est effectué dans le même cycle.s5WBest l’état où se déroule l’écriture du résultat (Write Back). Selon l’instruction exécutée, le registre de destination correspondant dans les GPR est modifié avec la valeur précédemment calculée.
Interface mémoire
Ajout d’une instruction
Le processeur CALF est basé sur l’ISA RISC-V. Ce jeu d’instructions est organisé autour d’une base d’instructions extensibles pour permettre le support d’opérations gérées par le matériel selon les besoins du système final. Dans cette partie, nous allons voir comment le processeur peut être modifié pour ajouter de nouvelles instructions.
Arithmétique ou logique
Exemple maxu extension B
