Académique Documents
Professionnel Documents
Culture Documents
d’instructions élémentaires
Contexte et projet
Camille Leroux
camille.leroux@enseirb-matmeca.fr
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
Algorithme
???
ALGORITHME
CONCEPTION
Fréquence Elevée
Débit Elevée
Complexité Faible
Puissance Faible
Energie Faible
Flexibilité Faible
Fréquence Elevée
Débit Faible
Complexité Elevée
Puissance Elevée
Energie Elevée
Flexibilité Elevée
Fréquence Elevée
Débit Elevé
Complexité Elevée
Puissance Elevée
Energie Elevée
Flexibilité Modérée
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
opérations de l’unité
opérative
Registres
Mémoire globale PC IR
contenant le
programme
E/S
(séquencement des
opérations) et les Mémoire
données
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
3 phases clés
Processeur
Unité de contrôle Unité opérative
commande
UAL
+1
Contrôleur état
LOAD : charger le
Registres
registre avec la valeur
qui se trouve en
PC IR 10 11
mémoire
E/S
...
10
Mémoire
...
3 phases clés
Processeur
Unité de contrôle Unité opérative
commande
UAL
EXECUTE : passer le +1
Contrôleur état
contenu de certains
Registres
registres à travers
l’UAL, puis stocker le
PC IR 10 11
résultat dans un
registre
E/S
...
10
Mémoire
...
3 phases clés
Processeur
Unité de contrôle Unité opérative
commande
UAL
+1
Contrôleur état
STORE : stocker la
Registres
valeur du registre
(résultat) dans un
PC IR 10 11
emplacement mémoire
E/S
...
10
Mémoire
...
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
5 cycles d’instruction
Processeur
Unité de contrôle Unité opérative
commande
UAL
FETCH Contrôleur état
INSTRUCTION : lire
Registres
l’instruction suivante
dans la mémoire pour
PC IR
la charger dans le R0 R1
registre IR
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
5 cycles d’instruction
Processeur
Unité de contrôle Unité opérative
commande
UAL
Contrôleur état
DECODE :
Registres
déterminer le type de
l’instruction qui a été
PC IR
chargée dans IR R0 R1
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
5 cycles d’instruction
Processeur
Unité de contrôle Unité opérative
commande
UAL
FETCH Contrôleur état
OPERANDS :
Registres
transférer les données
de la mémoire vers les
PC IR
registres de l’unité R0 R1
opérative
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
5 cycles d’instruction
Processeur
Unité de contrôle Unité opérative
commande
UAL
Contrôleur état
EXECUTE : faire
Registres
passer le contenu de
certain registres à PC IR
R0 R1
travers l’UAL
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
5 cycles d’instruction
Processeur
Unité de contrôle Unité opérative
commande
UAL
Contrôleur état
STORE : stocker la
valeur du Registres
registre(résultat) dans
un emplacement PC IR
R0 R1
mémoire
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
HARVARD Processeur
4 Accès simultané aux programme et
données
Mémoire de Mémoire de
(Fetch inst. et Fetch oprd chevauchées) programme données
Harvard
Processeur
PRINCETON (Von Neumann)
4 Peu de fil de connexion
Mémoire
4 Implémentation simple (programme et données)
Princeton
(Von Neumann)
Déclinaison 3 Déclinaison 4
Mémoire Mémoire Mémoire Mémoire Mémoire Mémoire Mémoire Mémoire
programme données données programme données données données données
(programme et données)
Processeur
La mémoire cache est intégrée
au processeur (au sein de la
même puce)
Petite taille (< 1MB) Cache
Accès très rapide
Retient une copie d’une petite
partie de la mémoire Mémoire
Accès réussi ou manqué ! Technologie moins rapide et moins chère,
généralement séparée sur une autre puce
PC100 Processeur
Fetch Decode Fetch Exec. Store Unité de contrôle Unité opérative
inst. oprends. results
clk
commande
UAL
Contrôleur état
Registres
PC IR
100 R0 R1
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
PC100 Processeur
Fetch Decode Fetch Exec. Store
Unité de contrôle Unité opérative
inst. oprends. results
clk commande
UAL
+1
PC101 Contrôleur état
Fetch Decode Fetch Exec. Store
inst. oprends. results
Registres
clk
PC IR 10
101 R0 R1
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
PC100 Processeur
Fetch Decode Fetch Exec. Store
Unité de contrôle Unité opérative
inst. oprends. results
clk commande
UAL
PC101 Contrôleur état
Fetch Decode Fetch Exec. Store
inst. oprends. results Registres
clk
PC IR 10 11
PC102 101 R0 R1
Fetch Decode Fetch Exec. Store
inst. oprends. results
clk
E/S
...
100 load R0, M[500] 10
500
101 Inc R1, R0 Mémoire 501
102 store [M501], R1 ...
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
Mémoire
Mémoire :
Architecture Von Neumann (prog. et données partagent la mémoire)
Bus de données (1 entrée et 1 sortie)
Bus d’adresse
Signaux de contrôles
Camille Leroux (Bordeaux INP) EN210 - Conception processeur 31 / 73
Architecture du processeur
Unité de contrôle :
Compteur de programme (PC)
Registre d’instruction (RI)
Machine d’état
Unité de traitement :
Registre ACCU
UAL : NOR et ADD uniquement
Registre carry
STA écrit le contenu de ACCU dans la mémoire et réinitialise carry
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
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 de l’instruction.
Camille Leroux (Bordeaux INP) EN210 - Conception processeur 34 / 73
Mémoire du processeur minimal 8 bits
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000
01 X"47" 01000111
02 X"86" 10000110
03 X"C4" 11000100
04 X"C4" 11000100
05 X"00" 00000000
06 X"00" 00000000
07 X"7E" 01111110
08 X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000
01 X"47" 01000111
02 X"86" 10000110
03 X"C4" 11000100
04 X"C4" 11000100
05 X"00" 00000000
06 X"00" 00000000
07 X"7E" 01111110
08 X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000 ACCU = ACCU 00000000
NOR mem[8] 00000001
01 X"47" 01000111
02 X"86" 10000110
03 X"C4" 11000100
04 X"C4" 11000100
05 X"00" 00000000 donnée X"00" 00000000
06 X"00" 00000000 donnée X"00" 00000000
07 X"7E" 01111110 donnée X"7E" 01111110
08 X"FE" 11111110 donnée X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000 ACCU = ACCU 00000000
NOR mem[8] 00000001
01 X"47" 01000111 ACCU = ACCU 00000001
+ mem[7] 01111111
02 X"86" 10000110
03 X"C4" 11000100
04 X"C4" 11000100
05 X"00" 00000000 donnée X"00" 00000000
06 X"00" 00000000 donnée X"00" 00000000
07 X"7E" 01111110 donnée X"7E" 01111110
08 X"FE" 11111110 donnée X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000 ACCU = ACCU 00000000
NOR mem[8] 00000001
01 X"47" 01000111 ACCU = ACCU 00000001
+ mem[7] 01111111
02 X"86" 10000110 mem[6] = ACCU
03 X"C4" 11000100
04 X"C4" 11000100
05 X"00" 00000000 donnée X"00" 00000000
06 X"00" 00000000 donnée X"7F" 01111111
07 X"7E" 01111110 donnée X"7E" 01111110
08 X"FE" 11111110 donnée X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000 ACCU = ACCU 00000000
NOR mem[8] 00000001
01 X"47" 01000111 ACCU = ACCU 00000001
+ mem[7] 01111111
02 X"86" 10000110 mem[6] = ACCU
03 X"C4" 11000100 PC = 04 01111111
04 X"C4" 11000100
05 X"00" 00000000 donnée X"00" 00000000
06 X"00" 00000000 donnée X"7F" 01111111
07 X"7E" 01111110 donnée X"7E" 01111110
08 X"FE" 11111110 donnée X"FE" 11111110
Adr. Hex Bin Interprétation Valeur Accu Mem (hex) Mem (bin)
00 X"08" 00001000 ACCU = ACCU 00000000
NOR mem[8] 00000001
01 X"47" 01000111 ACCU = ACCU 00000001
+ mem[7] 01111111
02 X"86" 10000110 mem[6] = ACCU
03 X"C4" 11000100 PC = 04 01111111
04 X"C4" 11000100 PC = 04 01111111
05 X"00" 00000000 donnée X"00" 00000000
06 X"00" 00000000 donnée X"7F" 01111111
07 X"7E" 01111110 donnée X"7E" 01111110
08 X"FE" 11111110 donnée X"FE" 11111110
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
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.
Exercice 1 : Avec l’algorithme précédemment énoncé, calculez le
PGCD de 40 et 24 puis de 14 et 29.
Exercice 2 : Ecrivez le pseudo-code de cet algorithme et transformez
le pour qu’il utilise le jeu d’instructions du proceseeur 8 bits.
Pseudo-code Version 1 :
diff = a-b
while(diff != 0)
diff = a-b
if(diff < 0)
b = -diff
else
a = diff
end if
end while
ACCU = a-b
while(ACCU != 0)
ACCU = a-b // ACCU = diff
if(ACCU < 0)
b = -ACCU // b = - diff
else
a = ACCU // a = diff
end if
end while
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
Mémoire
Registre ACCU
UAL : NOR et ADD uniquement
Registre carry
STA écrit le contenu de ACCU dans le mémoire et réinitialise carry
Quelle est la taille de l’ACCU ?
Définissez l’architecture globale de l’unité de traitement.
Détaillez l’ensemble des signaux d’entrée/sortie.
Détaillez l’ensemble des signaux de contrôles.
1 Introduction
2 Architectures et technologies d’intégration
3 Architecture de base d’un processeur universel
Unité opérative
Unité de contrôle
Mémoire
4 Processeur 8 bits
Architecture
Compréhension du jeu d’instructions
Macro-instructions
Compilation d’un algorithme
5 Conception de l’architecture
6 Travaux Pratiques
Règles à suivre :
Signal de reset (rst) asynchrone actif à 1
Synchronisation sur front montant d’horloge (clk)
Signal d’activation (ce) actif à ’1’ dans TOUS les process séquentiels
Partir du top level : CPU_bootloader.vhd
TO DO :
Créer un projet Vivado
Ajouter les fichiers sources
Décrire les blocs
Instancier les blocs dans UC, UT, UM
boot
UC UT
boot
1
tx
Boot Loader rx
boot
boot boot scan memory
ENABLE R/W ADR D OUT D IN
UM
carry 8
boot
FSM UAL
8
6 8
2 6
R1 ACCU
RI PC 8
boot
6
1
8 6 8
tx
Boot Loader rx
boot
boot boot scan memory
RAM
16
carry
boot
FSM UAL
16
6 16
2 6
R1 ACCU
RI PC 16
boot
6
1
16 6 16
tx
Boot Loader rx
boot
boot boot scan memory
RAM
rx
CPU bootloader.vhd
scan memory
process ce
rst
clk tx
1
RAM out.txt
0xOF write int file.vhd UART recv.vhd
0x13 8
0x50
0x52
0xC9
...