Académique Documents
Professionnel Documents
Culture Documents
Conception et réalisation
de processeurs à usage général
Clavier Processeur
M
M
M
M
État
Gérer l’argent
actuateurs
Gérer l’inventaire
pour rendre
la monnaie
senseur de Comment réaliser ce processeur?
pièces Concevoir un processeur à usage
spécifique?
Utiliser un processeur à usage
général? affichages
Contrôle État
• Mise en contexte
• Retour sur les processeurs à usage spécifique
• Processeurs à usage général: introduction
• Chemin des données
• Unité de contrôle
choixSource
registre d’état
0 état
constante 1 donnée
entréeExterne 2 A A
3
adresse
choixCharge B B
mémoire des données
charge
clk
choixA choixB opération
lecture/ecriture’
entree
clk
sortieExterne
registre
d’instructions etatUAL
sortie D Q
charge
signaux de controle
mémoire des instructions
contrôleur
compteur de
programme
adresse Q D
compte
charge
Conception et implémentation de systèmes numériques 14
Plan
• Mise en contexte
• Retour sur les processeurs à usage spécifique
• Processeurs à usage général: introduction
• Chemin des données
• Unité de contrôle
L’unité fonctionnelle peut parfois avoir un état entreposé dans des éléments à mémoire.
• Information sur un calcul précédent (p. ex. négatif, zéro, etc.).
choixSource
registre d’état
0 état
constante 1 donnée
entréeExterne 2 A A
3
adresse
choixCharge B B
mémoire des données
charge
clk
choixA choixB opération
lecture/ecriture’
entree
clk
sortieExterne
0
choixSource
registre d’état
0 état
1
R0
constante
donnée
entréeExterne 2 A A
3
R1
sortie bloc des registres UAL F
choixCharge
l 0 R2
- adresse e charge B B
mémoire des données
c c
c 1
h h o
t clk R3 choixA choixB opération
u
1 o
lecture/ecriture’ o
c centreec
p
r
clk i i é
h h h e
instruction
x
S
x
C
a o o
r
a
E 1 - 7
r i i c sortieExterne
o h t
g x x r
u a i
e A B i
r r o
t
c g n case op is
u when 0 => F <= A + B;
e e when 1 => F <= A - B;
r when 2 => F <= shift_right(A, 1);
e when 3 => F <= shift_left(A, 1);
when 4 => F <= not(A);
’ when 5 => F <= A and B;
when 6 => F <= A or B;
when 7 => F <= A;
R0 ← R1 0 0 1 1 - 7 1 when others => F <= (others => 'X');
end case;
R2 ← R1 + R3 0 2 1 1 3 0 1
R2 ← R2 ET R3 0 2 1 2 3 5 1
R3 ← M[25]Conception
3 et implémentation
3 1 - de- systèmes
- 1
numériques 19
Effectuer l’opération R0 ← R1
l
e
c c c
h h t
o
o o u
c c c p
i i r
h h h é
x x e
a o o r
instruction S C E
r i i a
o h c
g x x ti
u a ri
e A B o
r r t
n
c g u
e e r
e
’
R0 ← R1 0 0 1 1 - 7 1
R2 ← R1 + R3 0 2 1 1 3 0 1
R2 ← R2 ET R3 0 2 1 2 3 5 1
R3 ← M[25] 3 3 1 - - - 1
M[25] ← R0 - - 0 - 0 - 0
0
choixSource
registre d’état
0 état
constante 1 donnée R0
entréeExterne 2 A A
3
R1
sortie bloc des registres
+
UAL F
2 choixCharge
R2
- adresse
mémoire des données 1 charge B B
clk R3
choixA choixB opération
1 lecture/ecriture’
entree
clk
1 3 0
sortieExterne
lect
choi choi opé
char choi choi ureE
instruction xSo xCh rati case op is
ge xA xB critu when 0 => F <= A + B;
urce arge on when 1 => F <= A - B;
re’ when 2 => F <= shift_right(A, 1);
when 3 => F <= shift_left(A, 1);
when 4 => F <= not(A);
R0 ← R1 0 0 1 1 - 7 1 when 5 => F <= A and B;
when 6 => F <= A or B;
R2 ← R1 + R3 0 2 1 1 3 0 1 when 7 => F <= A;
when others => F <= (others => 'X');
R2 ← R2 ET R3 0 2 1 2 3 5 1 end case;
R3 ← M[25] 3 3 1 - - - 1
M[25] ← R0 - - 0 - 0 - 0
Conception et implémentation de systèmes numériques 21
Effectuer l’opération R2 ← R2 ET R3
0
choixSource
registre d’état
0 état
constante 1 donnée R0
entréeExterne 2 A A
3
R1
sortie bloc des registres
ET
UAL F
2 choixCharge
R2
- adresse
mémoire des données 1 charge B B
clk R3
choixA choixB opération
1 lecture/ecriture’
entree
clk
2 3 5
sortieExterne
lect
cho cho op
ure case op is
ixS ixC cha cho cho éra
instruction Ecri when 0 => F <= A + B;
our har rge ixA ixB tio when 1 => F <= A - B;
tur when 2 => F <= shift_right(A, 1);
ce ge n
e’ when 3 => F
when 4 => F
<=
<=
shift_left(A, 1);
not(A);
R0 ← R1 0 0 1 1 - 7 1 when 5 => F <= A and B;
when 6 => F <= A or B;
R2 ← R1 + R3 0 2 1 1 3 0 1 when 7 => F <= A;
R2 ← R2 ET R3 0 2 1 2 3 5 1 when others
end case;
=> F <= (others => 'X');
R3 ← M[25] 3 3 1 - - - 1
M[25] ← R0 - - 0 - 0 - 0
Conception et implémentation de systèmes numériques 22
Effectuer l’opération R3 ← M[25]
3
choixSource
registre d’état
0 état
constante 1 donnée R0
entréeExterne 2 A A
3
R1
sortie bloc des registres UAL F
…
3 choixCharge
R2
25 adresse
23des données
mémoire 1 charge B B
clk R3
choixA choixB opération
1 lecture/ecriture’
24
entree
clk
25 - - -
sortieExterne
…
lectu
choix choix
char choix choix opér reEcr
instruction Sour Char
ge A B ation iture
ce ge
’
R0 ← R1 0 0 1 1 - 7 1
R2 ← R1 + R3 0 2 1 1 3 0 1
R2 ← R2 ET R3 0 2 1 2 3 5 1
R3 ← M[25] 3 3 1 - - - 1
M[25] ← R0 - - 0 - 0 - 0
Conception et implémentation de systèmes numériques 23
Effectuer l’opération M[25] ← R0
-
choixSource
registre d’état
0 état
constante 1 donnée R0
entréeExterne 2 A A
3
R1
sortie bloc des registres UAL F
…
- choixCharge
R2
25 adresse
23des données
mémoire 0 charge B B
clk R3
choixA choixB opération
0 lecture/ecriture’
24
entree
clk
25 - 0 -
sortieExterne
…
charge
R0
charge
choixA
D Q A
2:4
R1
0
charge
choixCharge
1
2
3
D Q
R2
choixB
charge
D Q
registre
d’instructions etatUAL
sortie D Q
charge
signaux de controle
choixSource
mémoire des instructions choixCharge
charge
contrôleur choixA
compteur de choixB
programme reset
depart
opération
lectureEcriture’
adresse Q D quérir
IR <= MI[PC]
PC <= PC + 1
compte
décoder
charge exécuter
reset
depart
adresse Q D
compte
charge
exécuter
Le chemin des données exécute l’instruction.
bits 11-8 de Pour l’instruction qui nécessite un traitement par l’ALU, les
instruction condition
l’instruction 3 bits {op2|op1|op0} correspondent à l’encodage des
JUMP aucune 0000 opérations de l’ALU.
JZ zéro 0001
Pour l’instruction JUMP, les différentes combinaisons des
JNZ pas zéro 0010 bits 11-8 de l’instruction permettent d’avoir jusqu’à 16
JNeg négatif 0011 conditions différentes. Ce tableau en propose cinq.
JPos positif 0100
Conception et implémentation de systèmes numériques 38
Exemples d’encodage d’instructions
reset
depart
quérir
IR <= MI[PC]
PC <= PC + 1
UAL
écrire dans lire la
registre- JUMP
la mémoire mémoire
registre
charge <= '1' when etat = opUAL or etat = lireMemoire else '0';
L’adresse de la mémoire des données est contenue dans les bits 7 à 0 du registre
d’instructions, sauf pour les instructions concernant l’UAL.
Cependant, comme la sortie de la mémoire n’est pas sollicitée pour les instructions
concernant l’UAL, on peut se permettre de simplifier la description et ne pas
inclure de condition en rapport avec l’état de la machine.
R0 ← M[0] 8 0 0 0
R1 ← M[1] 8 1 0 1
R12 ← R0 – R1 1 C 0 1
JPos 5 C 4 0 6
R12 ← R1 – R0 1 C 1 0
M[3] ← R12 9 C 0 3
STOP F - - -
choixSource
registre d’état
0 état
constante 1 donnée
entréeExterne 2 A A
3
adresse
choixCharge B B
mémoire des données
charge
clk
choixA choixB opération
lecture/ecriture’
entree
clk
sortieExterne
registre
d’instructions etatUAL
sortie D Q
charge
signaux de controle
mémoire des instructions
contrôleur
compteur de
programme
adresse Q D
compte
charge
Conception et implémentation de systèmes numériques 46
Prochaine étape …
• L’écriture directe d’un programme en codes de 16 bits est ardue.
• Pour simplifier la tâche, on peut utiliser un programme spécial appelé
assembleur qui donne automatiquement les codes numériques des instructions
à partir de leur représentation symbolique.
• Pour les programmes très complexes, cependant, on utilise plutôt un
compilateur qui accepte en entrée un programme dans un langage de haut
niveau comme C ou Python et qui produit les codes des instructions.
• Le compilateur doit s’appuyer sur une connaissance approfondie des
instructions pouvant être réalisées par le processeur ainsi que des architectures
de son chemin des données et de son unité de contrôle.
• Un simulateur et un débogueur seraient bien aussi …
D Q
A D Q
D Q
CLK B
F
CLK D Q
CLK
C
CLK