Architecture interne des
microprocesseurs
version 1.0
PHY 568 Alain Greiner
Objectif / Avertissement
On souhaite appliquer les différentes techniques de
circuiterie numérique synchrone présentées dans le cours
à la réalisation d’un (petit) microprocesseur 32 bits.
Le jeu d’instruction du processeur P32 est inspiré de celui
du processeur MIPS R3000, mais il est TRES fortement simplifié :
- pas de traitements sur les octets
- pas de traitement des interruptions
- pas de traitement des exceptions
- pas de mode protégé
- pas de mémoire virtuelle
- pas de caches
L’architecture microprogrammée proposée ci-dessous
est FORTEMENT sous-optimale par rapport aux techniques
d’architecture pipe-line et super-scalaire utilisées dans les
microprocesseurs actuels…
Alain Greiner 2
PHY 568
Principe des processeurs programmables
Programme
donnée ou
instruction
CK Etat
Données
Processeur adresse
programmable
La mémoire est un tableau dans lequel le processeur peut lire ou écrire.
Chaque case peut contenir un « mot » (par exemple un mot = 32 bits).
La mémoire contient à la fois le programme à exécuter et les données.
On suppose que toute lecture ou écriture prend un cycle.
Alain Greiner 3
PHY 568
Les registres du processeur P32
Il y a 5 registres visibles du programmeur :
– PC : registre 32 bits contenant l’adresse de la prochaine
instruction à exécuter
– A0, A1, A2, A3 : 4 registres accumulateurs 32 bits
contenant des résultats de calcul intermédiaires
L’exécution d’une instruction a pour effet de modifier
la valeur d’un ou de plusieurs registres.
Alain Greiner 4
PHY 568
Jeu d’instructions du processeur P32
op Ai,Aj,Ak Ai <= Aj op Ak opération entre registres
PC <= PC + 1
opi Ai,Aj,imd Ai <= Aj op imd opération avec opérande
PC <= PC + 1 immédiat
lw Ai, imd(Aj) Ai <= M[Aj + imd] lecture d’un mot en mémoire
PC <= PC + 1
sw Ai, imd(Aj) M[Aj + imd] <= Ai écriture d’un mot en mémoire
PC <= PC + 1
bne Ai, imd PC <= PC + 1 si Ai = 0 branchement conditionnel
PC <= PC + 1 + imd sinon
Alain Greiner 5
PHY 568
Format des instructions du processeur P32
Toutes les instructions sont codées sur 32 bits
L’instruction est codée sur 5 champs :
– CODOP (6 bits) : type de l’instruction
– R (2 bits) : numéro premier registre source
– S (2 bits) : numéro deuxième registre source
– T (2 bits) : numéro registre destination
– IMD (20 bits) : opérande immédiat
31 25 20 19 0
COP R S T IMD
Alain Greiner 6
PHY 568
Exécution des instructions
Les instructions du programme sont exécutées séquentiellement,
mais une instruction élémentaire a besoin de plusieurs cycles
pour s’exécuter…
Exemple : instruction lw Ai, Aj(imd)
3. lecture de l’instruction en mémoire M[PC] : 1 cycle
4. décodage de l’instruction : 1 cycle
5. calcul de l’adresse ad = Aj + Imd : 1 cycle
6. lecture de la donnée en mémoire M[ad] : 1 cycle
7. rangement de la donnée dans le registre Ai : 1 cycle
8. incrémentation du registre PC <= PC + 1 : 1 cycle
temps
instruction i instruction i+1 instruction i+2
Alain Greiner 7
PHY 568
Architecture Interne du processeur P32
Reset
Partie contrôle : séquenceur
Ck commandes indicateurs
32
Din
32
Partie opérative : chemin de données Dout
32
Adress
Alain Greiner 8
PHY 568
Partie opérative et partie contrôle
La partie opérative (ou « chemin de données ») contient les registres
32 bits et les opérateurs permettant de combiner entre eux les mots
de 32 bits.
Elle est capable d’exécuter des « tranferts élémentaires », c’est à dire
des transferts qui peuvent s’exécuter en un cycle.
La partie contrôle (ou « séquenceur ») est chargée d’enchaîner les
différents transferts élémentaires correspondant à l’exécution d’une
instruction.
Pour prendre ses décisions, elle dispose des indicateurs fournis par
la partie opérative, comme par exemple la valeur des champs CODOP,
R, S, et T de l’instruction stockée dans le registre IR.
Alain Greiner 9
PHY 568
Registres supplémentaires
Les 5 registres « visibles du logiciel » définissent l’état du processeur « du
point de vue du programmeur » : On décrit l’état de la machine après
l’exécution de l’instruction i, et avant l’exécution de l’instruction i+1…
Ils ne sont pas suffisants pour permettre l’exécution des instructions.
On ajoute 3 registres supplémentaires dans le chemin de données :
– registre AD : permet de stocker un résultat intermédiaire, comme par
exemple l’adresse de la donnée à lire ou écrire en mémoire
– registre IR : permet de stocker les 32 bits du code de l’instruction
courante pendant toute la durée d’exécution de cette instruction.
– registre DT : permet de stocker les 32 bits de la donnée qu’on vient de
lire en mémoire avant de la stocker dans un accumulateur Ai.
Alain Greiner 10
PHY 568
Chemin de données
CODOP NUL
12 1
32 Din
Result 32
bus OPX Dout
c PC A0 A3 AD IR DT
o
n 32 UAL
st
a
nt 32
e
s
bus OPY Adress
32 bus ADR
Alain Greiner 11
PHY 568
Transferts “interne” et “externe”
Din
Result
bus OPX Dout
c PC A0 A3 AD IR DT
o
n UAL
st
a
nt
e
s
bus OPY Adress
bus ADR
Ce chemin de données peut réaliser simultanément deux transferts :
un transfert « interne » et un transfert « externe » de type lecture.
Exemple : PC <= PC + 1 / DT <= M[AD]
Alain Greiner 12
PHY 568
Réalisation des registres 32 bits
WEN CK Registres à écritures conditionnelle : Il y a un
signal d’autorisation d’écriture WEN spécifique
pour chaque registre du chemin de données :
D31 Q31
WEN CK
D30 Q30
D29 D
Q29
1 Q
0
D3 Q3
D2 Q2
D1 Q1
D0 Q0
Alain Greiner 13
PHY 568
Réalisation des bus
32
Z [31:0]
sela selb selc
32 32 32
A[31:0] B[31:0] C[31:0]
Bi selb
Emetteur 3 états selb’ Zi 32 fois
non inverseur
selb
selb’
Alain Greiner 14
PHY 568
Réalisation de l’Unité Arithmétique et Logique
NUL
32 1
OPX 32
NUL-DETECT
MUX
32
32
32 RESULT
MUX
32
MUX
32
MUX
32
32
OPY
Alain Greiner 15
PHY 568
Implantation physique du chemin de données
Le chemin de données contient principalement des registres
32 bits à écriture conditionnelle, et des opérateurs combinatoires
vectorisés sur 32 bits :
- émetteurs 3 états sur 32 bits,
- multiplexeurs 2 vers 1 sur 32 bits
- additionneur soustracteur sur 32 bits
- décaleur sur 32 bits
- détecteur de nullité sur un mot 32 bits
On utilise une bibliothèque de cellules spécialisées pour la réalisation
de ces opérateurs « vectorisés » de façon à avoir une implantation
en colonnes régulières de hauteur 32 bits :
- les données sont des nappes de 32 fils horizontales en
métal 2 ou en métal 4.
- les signaux de contrôle sont des fils verticaux en métal 3,
qui sont amplifiés dans chaque colonne.
Alain Greiner 16
PHY 568
Organisation régulière des chemins de donnée
32
bits
émetteur Additionneur Mux Registre émetteur
Registre Or
de bus soustracteur de bus
Alain Greiner 17
PHY 568
Micro-instruction
A chaque cycle, la partie contrôle doit définir 5 commandes :
• Définition de l’opérande X
• Définition de l’opérande Y
• Définition de l’opération
• Définition du registre destination
• Définition du type de transfert avec la mémoire
On appelle « micro-instruction » une valeur particulière de
ces commandes, et « micro-programme » la séquence de
micro-instructions permettent d’exécuter une instruction.
La micro-instruction est donc un mot de commande
structuré en 5 champs :
OPX OPY ALU RES MEM
Alain Greiner 18
PHY 568
Langage de micro-programmation
Les différentes valeurs possibles pour les 5 champs de la micro-
instruction définissent le « langage de microprogrammation »
On utilise des mnémoniques pour améliorer la lisibilité :
OPX OPY ALU RES MEM
X_AO Y_IR A_SUM R_PC M_IF
X_A1 Y_IX A_DIF R_AD M_DR
X_A2 Y_AD A_OR R_A0 N_DW
X_A3 Y_DT A_AND R_A1 M_NOP
X_PC Y_C0 A_XOR R_A2
X_C0 Y_C1 A_SLL R_A3
A_SRL R_NOP
A_SRA
Alain Greiner 19
PHY 568
Langage de micro-programmation
OPX Signification
X_AO L’opérande X est le contenu du registre A0
X_A1 L’opérande X est le contenu du registre A1
X_A2 L’opérande X est le contenu du registre A2
X_A3 L’opérande X est le contenu du registre A3
X_PC L’opérande X est le contenu du registre PC
X_C0 L’opérande X est la constante 0
Alain Greiner 20
PHY 568
Langage de micro-programmation
OPY Signification
Y_IR L’opérande Y est l’opérande immédiat sans extension
de signe
Y_IX L’opérande Y est l’opérande immédiat avec extension
de signe
Y_AD L’opérande Y est le contenu du registre AD
Y_DT L’opérande Y est le contenu du registre DT
Y_C0 L’opérande Y est la constante 0
Y_C1 L’opérande Y est la constante 1
Alain Greiner 21
PHY 568
Langage de micro-programmation
ALU Sgnification
A_SUM result = X + Y
A_DIF result = X - Y
A_OR result = X or Y (opération logique bit à bit)
A_AND result = X and Y (opération logique bit à bit)
A_XOR result = X xor Y (opération logique bit à bit)
A_SLL result = X décalé à gauche
A_SRL result = Y décalé à droite sans extension de signe
A_SRA result = Y décalé à droite avec extension de signe
Dans le cas des décalages, le nombre de bits de décalage est défini
par la valeur des 5 bits de poids faible de l’opérande Y.
Alain Greiner 22
PHY 568
Langage de micro-programmation
RES signification
R_PC Ecriture du résultat dans le registre PC
R_AD Ecriture du résultat dans le registre AD
R_A0 Ecriture du résultat dans le registre A0
R_A1 Ecriture du résultat dans le registre A1
R_A2 Ecriture du résultat dans le registre A2
R_A3 Ecriture du résultat dans le registre A3
R_NOP Aucune écriture dans un registre interne
Alain Greiner 23
PHY 568
Langage de micro-programmation
MEM signification
M_IR lecture instruction : ADR <= PC / IR <= DIN
R_DR lecture donnée : ADR <= AD / DT <= DIN
M_DW écriture donnée : ADR <= AD / pas d’écriture IR ou DT
M_NOP Pas d’accès à la mémoire / pas d’écriture IR ou DT
Alain Greiner 24
PHY 568
Réalisation de la partie contrôle
Fonction de Fonction de
Génération Transition RESET
commandes CK indicateurs
(micro-instruction) (codop, nul)
La partie commande peut être réalisée comme un automate de Moore.
Chaque état de l’automate correspond à une micro-instruction.
Alain Greiner 25
PHY 568
Notations
Pour représenter graphiquement l’automate réalisant le séquenceur, il faut :
• attacher à chaque arc du graphe une expression Booléennes
ne dépendant que des signaux d’entrée (indicateurs).
• attacher à chaque état les valeurs des cinq champs définissant
les deux transferts (interne et externe) commandés par la micro-instruction.
transfert interne
On utilise la notation suivante pour représenter les états : transfert externe
Exemple :
OPX = X_PC
OPY = Y_C1
ALU = A_SUM
PC <= PC + 1
RES = R_PC
DT <= M[AD]
MEM = M_DR
Alain Greiner 26
PHY 568
Exemple de microprograme : instruction lw
lecture instruction NOP
en mémoire IR <= M[PC] cette partie du
microprogramme est
exécutées pour toutes
incrémentation PC PC <= PC + 1 les instructions.
décodage instruction NOP
(R=01) et COP=lw)… (R=11) et (COP=lw)
(R=00) et (COP=lw)
(R=01) et (COP=lw)
AD <= A0 + IX AD <= A1 + IX AD <= A2 + IX AD <= A3 + IX
NOP NOP NOP NOP
NOP
DT <= M[AD]
(T=00) (T=11)
(T=01) (T=10)
A0 <= DT + 0 A1 <= DT + 0 A2 <= DT + 0 A3 <= DT + 0
NOP NOP NOP NOP
Alain Greiner 27
PHY 568
Optimisation du micro-programme
On décide que la lecture de l’instruction (IR <= M[PC] est systématiquement effectuée
par la dernière micro-instruction du microprogramme de l’instruction précedente.
=> On gagne un cycle sur la durée moyenne d’exécution des instructions …
microprogramme optimisé
pour l’instruction lw PC <= PC + 1
NOP
(R=11) et (COP=lw)
(R=10) et COP=lw)…
(R=00) et (COP=lw)
(R=01) et (COP=lw)
AD <= A0 + IX AD <= A1 + IX AD <= A2 + IX AD <= A3 + IX
NOP NOP NOP NOP
NOP
DT <= M[AD]
(T=00) (T=11)
(T=01) (T=10)
A0 <= DT + 0 A1 <= DT + 0 A2 <= DT + 0 A3 <= DT + 0
IR <= M[PC] IR <= M[PC] IR <= M[PC] IR <= M[PC]
Alain Greiner 28
PHY 568
Réalisation physique de la partie contrôle
Lorsque le jeu d’instructions est suffisamment simple, l’automates qui réalise
le séquenceur comporte quelques dizaines d’états.
On peut utiliser une bibliothèque de cellules précaractérisées et les outils de
synthèse / placement / routage automatique pour la réalisation physique.
Si le jeu d’instruction est plus complexe, l’automate peut comporter plusieurs
centaines ou milliers d’états, avec trois conséquences :
• La complexité des expressions Booléennes à optimiser rend inefficaces
les outils de outils de synthèse.
• Le développement du micro-programme s’apparent à un travail de
développement logiciel (utilisation de sous-microprogrammes, avec
gestion d’une pile matérielle pour les adresses de retour).
• Le micro-programme est susceptible de subir des évolutions tardives,
difficilement compatibles avec une réalisation de type automate « cablé »
=> On peut utiliser une technique « ROM + microséquenceur.
Alain Greiner 29
PHY 568
ROM de micro-programme
Micro RESET
séquenceur
CK
Commandes Indicateurs
Alain Greiner 30
PHY 568