Les processeurs

publicité
Les processeurs
Eduardo Sanchez
Laboratoire de Systèmes Logiques
Ecole Polytechnique Fédérale de Lausanne
Les processeurs
u Un processeur est une machine réalisant un traitement
d’information
u Exemple:
Réaliser la somme de 100 nombres
100
somme = ∑ x i
i =1
u Deux choses sont nécessaires pour réaliser le processeur:
X un algorithme
X les ressources pour exécuter l’algorithme (éléments de stockage et de
traitement de l’information)
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u L’algorithme pourrait être:
loop:
somme = 0
for i=1 to 100
somme = somme + xi
end loop
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Les ressources nécessaires pourraient être:
Xi
0
CK
u Les signaux de contrôle des ressources (en rouge dans la
figure) sont générés par l’unité chargée d’exécuter l’algorithme
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Un processeur peut toujours être décomposé en deux parties:
X l’unité de contrôle (chargée de l’exécution de l’algorithme)
X l’unité de traitement (ensemble d’éléments de stockage et de
traitement de l’information)
entrées de données
entrées de contrôle
signaux de contrôle
CK
unité
unité
de
de
contrôle
contrôle
unité
unité
de
de
traitement
traitement
signaux de status
sorties de contrôle
sorties de données
u A chaque cycle d’horloge, l’unité de contrôle doit générer tous
les bits qui contrôlent les ressources de l’unité de traitement.
L’unité de contrôle est une machine séquentielle
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Exemple
u Concevoir un processeur capable de compter le nombre de 1
présent dans un mot d’entrée
u Un algorithme possible est:
data ← inport
ocount ← 0
mask ← 1
while data ≠ 0 repeat
temp ← data and mask
ocount ← ocount + temp
data ← data >> 1
end while
outport ← ocount
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u L’unité de traitement a besoin de 4 éléments de stockage, un
par variable de l’algorithme (data, mask, ocount, temp)
u La structure genérale du processeur serait donc:
inport
start
signaux de contrôle
CK
unité
unité
de
de
contrôle
contrôle
data≠0
done
unité
unité
de
de
traitement
traitement
outport
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
CK
Exemple: unité de traitement
u Pour stocker les 4 variables de l’algorithme, on utilise un
dispositif avec 8 registres à double accès:
3
WA
WEN
8
8 registres
registres
CK
3
RAA
RENA
A
B
RAB
RENB
3
Deux des 8 registres peuvent être lus en même temps, en donnant leurs
adresses (RAA et RAB) et l’enable correspondant (RENA et RENB).
On peut écrire sur le registre WA, en envoyant l’enable correspondant (WEN).
Les registres utilisés sont R1 (data), R2 (mask), R3 (ocount), R4 (temp)
et R0 pour stocker la constante 0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Pour les opérations sur les données nous utilisons une ALU et
un shifter:
A
B
M
S
2
3
M
0
0
0
0
1
1
1
1
S1
0
0
1
1
0
0
1
1
S0
0
1
0
1
0
1
0
1
ALU
A
A and B
A ⊕ B
A or B
A - 1
A + B
A - B
A + 1
S
shifter
shifter
S2
0
0
0
0
1
1
1
1
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
S1
0
0
1
1
0
0
1
1
S0
0
1
0
1
0
1
0
1
shifter
shift left
rotate left
shift right
rotate right
NOP
NOP
NOP
NOP
u Une unité de traitement
possible serait:
inport
1
IE
0
3
WA
WEN
CK
RAA
RENA
8
8 registres
registres
3
A
B
A
B
3
RAB
RENB
M
S
SH
2
shifter
shifter
3
0
OE
comparateur
comparateur
outport
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
data≠0
u Vingt bits sont nécessaires pour contrôler cette unité de traitement:
19
18
IE
sélection
de l’entrée
0 ⇒ résultat
1 ⇒ inport
adresse
d’écriture
17
WA
16
15
WEN
14
13
RAA
enable
d’écriture
adresse du
registre A
12
11
RENA
10
9
RAB
enable de
lecture A
8
7
6
RENB
5
4
M S
2
1
0
SH
OE
output
enable
enable de
lecture B
adresse du
registre B
opérations de l’ALU
A ces 20 bits, il faut ajouter
le signal done, actif lorsque
le calcul est terminé
3
M
0
0
0
0
1
1
1
1
S1
0
0
1
1
0
0
1
1
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
S0
0
1
0
1
0
1
0
1
ALU
A
A and B
A ⊕ B
A or B
A - 1
A + B
A - B
A + 1
opérations du shifter
SH2
0
0
0
0
1
1
1
1
SH1
0
0
1
1
0
0
1
1
SH0
0
1
0
1
0
1
0
1
shifter
shift left
rotate left
shift right
rotate right
NOP
NOP
NOP
NOP
Exemple: unité de contrôle
data≠0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
outport ← ocount
done ← 1
S7
S7
data=0
data ← data >> 1
temp ← data and mask
S4
S4
S6
S6
mask ← 1
S3
S3
ocount ← ocount + temp
ocount ← 0
S2
S2
S5
S5
data ← inport
S1
S1
start=1
S0
S0
start=0
u L’unité de contrôle est une machine séquentielle, chargée de
séquencer l’algorithme et de générer les signaux de contrôle.
Son graphe des états découle directement de l’algorithme:
u Une implémentation, sous forme de machine de Moore, de
l’unité de contrôle serait:
D2
Q2
y2
D1
Q1
y1
start
data≠0
SLC
unité
de
traitement
D0
Q0
signaux
de
contrôle
y0
20
SLC
CK
done
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Une table d’états possible est:
start,data=0
00
01
11
S0
S1
S3
S2
S4
S5
S7
S6
000
001
011
010
100
101
111
110
y2y1y0
000
010
100
011
101
110
000
100
000
010
100
011
101
110
000
111
001
010
100
011
101
110
000
111
10
001
010
100
011
101
110
000
100
nop
data ← inport
mask ← 1
ocount ← 0
temp ← data and mask
ocount ← ocount + temp
outport ← ocount
data ← data >> 1
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
SH2
SH1
SH0
OE
done
nop
data ← inport
mask ← 1
ocount ← 0
temp ← data and mask
ocount ← ocount + temp
outport ← ocount
data ← data >> 1
S2
S1
S0
000
001
011
010
100
101
111
110
y2y1y0
WA2
WA1
WA0
WEN
RAA2
RAA1
RAA0
RENA
RAB2
RAB1
RAB0
RENB
S0
S1
S3
S2
S4
S5
S7
S6
IE
Le détail des signaux de sortie est:
0
1
0
0
0
0
0
0
ø
0
0
0
1
0
ø
0
ø
ø
1
1
0
1
1
1
ø
ø
1
1
1
1
1
0
ø
0
1
1
0
1
ø
0
ø
1
0
1
0
1
ø
1
0
1
1
1
1
1
0
1
ø
ø
0
0
0
0
0
0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
ø
ø
0
0
0
1
1
0
ø
ø
0
0
1
1
1
1
0
0
1
1
1
1
1
1
ø
ø
ø
0
0
1
0
0
ø
ø
ø
0
1
0
0
0
ø
ø
ø
0
0
0
0
0
0
0
0
1
1
1
1
1
ø
ø
1
0
0
0
0
0
ø
ø
1
1
1
1
1
1
ø
ø
ø
ø
ø
ø
ø
1
ø
ø
ø
ø
ø
ø
ø
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
Le calcul des variables d’état est:
y2
start
start
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
y0
y1
0
0
0
0
1
data=0
1
1
data=0
y2 + = y2 y1 + y2 y 0 + y2y1y 0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
1
y2
start
start
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
y0
y1
1
1
1
1
0
data=0
1
1
data=0
y1+ = y1y 0 + y2y1y 0 + ( data = 0) y1y 0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
0
y2
start
start
0
0
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
y0
y1
1
1
1
1
0
data=0
1
1
0
data=0
y 0 + = y2y1y 0 + y2 y1y 0 + ( data = 0) y2 y 0 + ( start ) y2 y 0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Le calcul des signaux de sortie est:
IE = y2 y1y 0
WA2 = y1y 0
WA1 = y2y1 + y2 y 0
WA0 = y1y 0 + y1y 0 = y1 ⊕ y 0
WEN = y1y2 + y1y 0 + y2 y 0
RAA2 = 0
RAA1 = y2 y 0
RAA0 = y2
RENA = y2 + y1
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
RAB2 = y1y 0
RAB1 = y1y 0
RAB0 = 0
RENB = y2 + y1y 0
M = y1 + y 0
S1 = y2y 0
S0 = 1
SH 2 = y2 + y 0 + y1
SH1 = 1
SH 0 = 0
OE = y2 y1y 0
done = y2 y1y 0
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Variations sur l’unité de traitement
u Pour augmenter la performance, il est courant de trouver des
unités de traitement capables de réaliser plusieurs opérations
en parallèle
u Problèmes:
X nombre élevé de bus
X nombre élevé de ports pour les registres
X parallélisme nécessaire dans l’application
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Exemple:
entrée 1
entrée 1
registres
registres
bus 1
bus 2
bus 3
bus 4
shifter
shifter
multiplicateur
multiplicateur
bus résultat 1
diviseur
diviseur
bus résultat 1
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Variations sur l’unité de contrôle
u La réalisation câblée d’une unité de contrôle utilise les méthodes
classiques de synthèse d’une machine séquentielle. Cette
méthodologie est donc très peu aisée à utiliser lorsque le nombre
d’états et/ou de sorties est très élevé
entrées de
contrôle
SLC
SLC
calcul
calcul de
de
l’état
l’état
futur
futur
signaux de
status
bb
aa
ss
cc
uu
ll
ee
ss
CK
SLC
SLC
calcul
calcul
des
des
sorties
sorties
sorties de
contrôle
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
signaux de
contrôle
u Une première simplification vient du remplacement des
systèmes logiques combinatoires (SLC) de la figure précédente
par des mémoires
u Ensuite, si l’on observe que la plupart des états se suivent en
séquence, on peut encore simplifier l’unité de contrôle en
remplaçant le registre d’états par un compteur.
Pour les cas où l’état futur n’est pas l’état présent plus un, il
faut prévoir un moyen de charger le compteur avec la valeur de
cet état futur
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
mémoire
mémoire
état
état
futur
futur
nouvelle
branche
branche
externe
compteur
compteur
mémoire
mémoire
sorties
sorties
signaux de
contrôle
CK
entrées de
contrôle
signaux de
status
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Une nouvelle simplification peut intervenir si l’algorithme utilise
plusieurs fois une même séquence, à des endroits différents:
ces séquences peuvent être remplacées par des sous-routines.
Pour cela, il est nécessaire d’ajouter une pile (stack), capable
de stocker l’état de retour à la fin de la sous-routine
u Ces derniers modèles d’unités de contrôle s’appellent unités
de contrôle microprogrammées
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
La microprogrammation
u L’unité de traitement d’un processeur réalise toujours des
opérations de type transfert de registres:
RRjj
RRkk
•••
•••
opérateurs
opérateurs
RRjj
Ri ← ƒ(Ri,Rj,...,Rn)
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
RRnn
u Une micro-opération est une opération exécutée en un cycle
d’horloge
u Un micro-ordre est le signal de contrôle d’une micro-opération
u Une micro-instruction est l’ensemble de micro-opérations
exécutées dans le même cycle d’horloge
u Un processeur est microprogrammée si les informations générées
par son unité de contrôle (les micro-ordres notamment) sont
stockées dans une mémoire: la mémoire de microprogramme ou
micromémoire.
Chaque mot de la micromémoire contient une micro-instruction
u Un microprogramme est une suite ordonnée de micro-instructions
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Une unité de contrôle microprogrammée est donc composée de
deux parties:
X la micromémoire, chargée de stocker les micro-instructions et de
générer donc à chaque cycle d’horloge les micro-ordres contrôlant les
micro-opérations du processeur
X un séquenceur, chargée de générer à chaque cycle d’horloge l’adresse de
la micro-instruction à chercher dans la micromémoire
CK
signaux de
contrôle
séquenceur
séquenceur
signaux de
status
micromémoire
micromémoire
micro-ordres
unité de
de traitement
traitement
unité
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
Exemple (version microprogrammée)
CK
start
data≠0
séquenceur
séquenceur
0
1
2
3
4
5
6
7
if start then 1
continue
continue
continue
continue
continue
if data≠0 then 4
jump 0
nop
data ← inport
ocount ← 0
mask ← 1
temp ← data and mask
ocount ← ocount + temp
data ← data >> 1
outport ← ocount, done ← 1
micro-ordres
unité de
de traitement
traitement
unité
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
u Le séquenceur serait:
séquenceur
CK
start
SLC
SLC
data≠0
unité de
de traitement
traitement
unité
Eduardo Sanchez
Ecole Polytechnique Fédérale de Lausanne
micro-ordres
variable à tester
adresse de saut
registre
+1
type de séquence
micromémoire
Téléchargement