Module EN 216 Conception d’un processeur avec jeu d’instructions élémentaires Travail Préliminaire c EN 216 2015 1 EN216 - Processeur D. Dallet, C. Leroux & C. Jego Définition d’un schéma bloc hiérarchique pour un processeur minimal 8 bits L’objectif de ce module est d’assembler des fonctions élémentaires (combinatoires et séquentielles) pour réaliser un processeur programmable avec un jeu d’instructions élémentaires. L’architecture conçue sera intégrée sur une carte de prototypage FPGA. 1 Présentation du processeur Le processeur proposé est un processeur 8-bits à usage universel. Il est capable d’exécuter 4 types d’instructions. Ce processeur est basé sur un registre accumulateur appelé ACCU de taille 8 bits. Son jeu d’instructions est donné dans le tableau suivant. Abréviation Codage de l’instruction NOR ADD 00 AAAAAA1 01 AAAAAA1 STA JCC 10 AAAAAA1 11 DDDDDD2 (1) Description de l’instruction ACCU = ACCU NOR Mem[AAAAAA] ACCU = ACCU + Mem[AAAAAA] mise à jour de la retenue Mem[AAAAAA] = ACCU Si Carry = O alors PC DDDDDD sinon effacer la retenue (Carry = 0) AAAAAA : bits d’adressage ; (2) DDDDDD : bits de données Tab. 1: Jeu d’instructions du processeur Chaque instruction est codée sur 8 bits. Deux bits pour coder le type de l’opération (code-op) et 6 bits pour coder l’opérande ou l’adresse de l’opérande dans la mémoire selon le type d’instruction. Son architecture mémoire est de type Von Neumann (programme et données dans la même mémoire). L’interface mémoire est constituée d’un bus de données, d’un bus d’adresse et de signaux de contrôles. Le bus de données est de taille 8 bits, tandis que le bus d’adresse est de taille 6 bits. Ainsi, le compteur programme (Program Counter, PC) est de taille 6 bits et l’espace d’adressage est de 26 = 64 octets. Les instructions NOR et ADD correspondent respectivement à un opération logique et à une opération arithmétique devant être réalisée par une Unité Arithmétique et Logique (UAL) sur deux opérandes. L’une des opérandes provient du registre accumulateur ACCU. Quant à l’autre, elle est issue de la mémoire. L’instruction STA permet l’écriture du contenu du registre accumulateur ACCU dans la mémoire. Enfin, l’instruction JCC est une instruction conditionnelle plus complexe. Elle permet : — soit d’effacer le contenu de la bascule mémorisant la valeur de la retenue (Carry), D. Dallet, C. Leroux & C. Jego 2 Bordeaux IPB ENSEIRB-MATMECA EN216 - Processeur — soit un saut du compteur programme PC. Il est possible d’obtenir des macro-instructions à partir de ces quatre instructions de base comme le montre le Tableau suivant. Abréviation Code assembleur CLR LDA mem 00 NOR allone 1 NOR allone 1 ADD mem NOR zero 2 NOR zero 2 ADD mem ADD one 3 NOT SUB mem (1) allone : 111111 ; Description de l’instruction ACCU ACCU ACCU ACCU ACCU ACCU ACCU (2) = = = = = = = ACCU ACCU ACCU ACCU ACCU ACCU ACCU zero : 000000 ; (3) NOR NOR ADD NOR NOR ADD ADD 111111 = 000000 111111 = 000000 mem=mem 000000 000000 mem= (NOT mem) 000001 = (NOT mem+1) one : 000001 Tab. 2: Macro-instructions correspondant à des instructions supplémentaires courantes 2 Compréhension du jeu d’instruction 2.1 Interprétation du contenu de la mémoire du processeur Le tableau en annexe 1 contient un exemple de contenu pour la mémoire du processeur. Remplir ce tableau en indiquant successivement : — la valeur binaire du contenu de la mémoire, — l’interprétation du code assembleur, — la valeur décimale du registre accumulateur ACCU, — la valeur binaire du contenu de la mémoire après exécution, — la valeur hexadécimale du contenu de la mémoire après exécution. 2.2 Calcul du PGCD de deux nombres entiers Le Plus Grand Commun Diviseur (PGCD) de deux nombres entiers naturels est le plus grand entier naturel qui divise simultanément ces deux entiers. Il existe plusieurs méthodes pour trouver cet entier naturel. L’une d’entre-elles est l’algorithme des différences ou des soustractions successives. Le principe est le suivant : Si un nombre est diviseur de 2 nombres a et b alors il est aussi un diviseur de leur différence. Si cette différence est positive alors on remplace a par la valeur de la différence sinon on remplace b par la valeur de la différence D. Dallet, C. Leroux & C. Jego 3 Bordeaux IPB ENSEIRB-MATMECA EN216 - Processeur Exemple : a = 60 et b = 36 60–36 = 24 alors le PGCD est aussi diviseur de 24 et on remplace 60 par ce nombre, 24–36 = −12 alors le PGCD est aussi diviseur de 12 et on remplace 36 par ce nombre, 24–12 = 12 alors le PGCD est aussi diviseur de 12 et on remplace 24 par ce nombre, 12–12 = 0 alors le PGCD est 12. Il est possible de programmer cet algorithme à partir des quatre instructions du processeur minimal 8 bits comme le montre la figure suivante. start : NOR NOR ADD ADD JCC STA ADD JCC JCC allone; b; one; a; neg; a; allone; end ; start; Accu = X NOR 11111111= 0 Accu = not (b) Accu = not (b) + 1= - b Accu = a - b si carry= 0 alors neg sinon carry=0 a=Accu Accu = Accu + 11111111 d’où carry =1 sauf si a=0 si carry= 0 alors end sinon carry=0 carry=0 alors start NOR ADD STA JCC zero; one; b; start; Accu = Accu’ NOR 00000000 = not (Accu’) Accu = not (Accu’) + 1 = -Accu’ b=Accu si carry= 0 alors start sinon carry=0 JCC end ; carry=0 alors end neg : end : (le résultat est en b) Figure 1. Programme assembleur du PGCD (a,b) Fig. 1: Programme assembleur du PGCD(a,b) Analyzer ce programme puis le dérouler pour a et b valant respectivement 40 et 24. 1. Analyzer ce programme puis le dérouler pour a et b valant respectivement 40 et 24. L’exécution de ce programme par le processeur minimal 8 bits implique de configurer la 2. L’exécution de ce programme processeuretminimal 8 bitsPour implique de configurer mémoire contenant à la fois par les le instructions les données. ce faire, remplissez lale mémoire contenant à la fois les instructions et les données. Pour ce faire, remplissez le contenu du tableau de contenu du tableau de l’annexe 2. l’annexe 2. Partie 2 : Définition du schéma bloc du processeur minimal 8 bits 3 Définition du schéma bloc du processeur minimal 8 bits Comme expliquer lors du cours d’introduction de ce module, l’architecture de base d’un Comme expliquer lors du trois coursparties d’introduction ce module, l’architecture de base d’un processeur comprend : opérative,demémorisation et contrôle. Rappelons que processeur le comprend trois parties : opérative, contrôle. Rappelons que le Nous processeur conçu autour processeur est conçu autourmémorisation d’un registre et accumulateur appelé ACCU. allonsest étudier successivement ces trois parties pourNous le processeur minimal 8 bits dans la cette pour le d’un registre accumulateur appelé ACCU. allons étudier successivement cessuite troisdeparties seconde partie. processeur minimal 8 bits dans la suite de cette seconde partie. 1-1 Partie opérative La conception de l’architecture de la partie opérative s’effectue à partir du jeu d’instructions D. Dallet, C. Leroux & C. Jego 4 Bordeaux IPB ENSEIRB-MATMECA défini précédemment. Il faut déterminer : le type, la taille et le nombre de ressources de temporisation (registre ou bascule) nécessaires, 3.1 Partie opérative 3.1 EN216 - Processeur Partie opérative La conception de l’architecture de la partie opérative s’effectue à partir du jeu d’instructions défini précédemment. Il faut déterminer : — le type, la taille et le nombre de ressources de temporisation (registre ou bascule) nécessaires, — les opérations que doit être capable d’effectuer l’unité arithmétique et logique et ses accès, — les connexions (bus) et leur taille permettant l’échange de données entre les éléments constituant la partie opérative, — les connexions (bus) et leur taille permettant l’échange de données entre la partie opérative et les autres parties (mémoire et contrôle), — les différents signaux d’entrée/sortie pour le pilotage des éléments de la partie opérative. Répondre à l’ensemble de ces questions avant de proposer une architecture pour la partie opérative. 3.2 Partie mémorisation Le processeur nécessite une mémoire permettant un accès unique en lecture ou en écriture. Cela correspond à une mémoire de type RAM simple port. L’adressage et donc la quantité d’information qu’il est possible de mémoriser sont directement proportionnelles à la taille du compteur programme PC. Par ailleurs, pour faciliter la mise en œuvre, nous choisissons d’utiliser une mémoire synchrone sur front descendant de l’horloge (bloc synchrone qui ne rajoute pas de cycle supplémentaire lors des accès). Enfin, des signaux de contrôle seront nécessaires pour initialiser le contenu de la mémoire, pour autoriser les accès et pour spécifier le type d’accès (lecture ou écriture). A partir de ce cahier des charges, donner un schéma de la mémoire en définissant les différents accès et en spécifiant leur taille respective. 3.3 Partie contrôle Le modèle d’architecture de la partie contrôle qui a été donné lors du cours d’introduction est constitué d’un compteur programme PC, d’un registre d’instruction IR et d’une machine à états finis (Finite State Machine, FSM). D’autres composants peuvent être utilisés selon le cas échéant (multiplexeurs ou autres. . . ). La principale difficulté concerne la définition de la machine à états finis. La première étape consiste à répertorier l’ensemble des signaux de contrôle que doit produire la FSM et l’information qu’elle reçoit pour assurer le contrôle. Dresser l’ensemble des signaux nécessaires au contrôle : — de la partie opérative, — de la partie mémoire, — des autres éléments de la partie contrôle (PC, IR et multiplexeurs). Définir le cahier des charges de la FSM sachant qu’elle doit respecter une organisation classique de contrôle basée sur six cycles comme présenté dans le cours d’introduction : — Init, D. Dallet, C. Leroux & C. Jego 5 Bordeaux IPB ENSEIRB-MATMECA 3.4 Schéma bloc du processeur EN216 - Processeur — Fetch Instruction, — Decode, — Fetch Operands, — Execute, — Store. Proposer un graphe d’états pour la FSM. Vous vous en servirez ensuite lors de la description VHDL de la FSM. Dès lors, vous disposer de l’ensemble des éléments pour donner un schéma bloc de la partie contrôle. 3.4 Schéma bloc du processeur Donner le schéma bloc final du processeur minimal 8 bits correspondant à l’instanciation des trois parties précédemment décrites. D. Dallet, C. Leroux & C. Jego 6 Bordeaux IPB ENSEIRB-MATMECA