Module EN 216 Conception d`un processeur avec jeu d`instructions

publicité
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
Téléchargement