Structure d`un processeur: Unité de traitement Les processeurs

publicité
Structure d'un processeur:
Unité de traitement
Eduardo Sanchez
EPFL
Les processeurs
• Un processeur est une machine réalisant un traitement d’information
• Exemple:
Réaliser la somme de 100 nombres
100
somme = xi
i =1
• Deux choses sont nécessaires pour réaliser le processeur:
• un algorithme
• les ressources pour exécuter l’algorithme (éléments de stockage et de
traitement de l’information)
Eduardo Sanchez
2
• L’algorithme pourrait être:
loop:
somme = 0
for i=1 to 100
somme = somme + xi
end loop
Eduardo Sanchez
3
• Les ressources nécessaires pourraient être:
Xi
0
CK
• 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
4
• Un processeur peut toujours être décomposé en deux parties:
• l’unité de contrôle (chargée du séquencement de l’algorithme)
• 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
reset
CK
unité
de
contrôle
unité
de
traitement
signaux de status
sorties de contrôle
reset
CK
sorties de données
• 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
5
Exemple
• Concevoir un processeur capable de compter le nombre de 1
•
présents dans un mot d’entrée
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
6
• L’unité de traitement a besoin de 4 éléments de stockage, un par
•
variable de l’algorithme (data, mask, ocount, temp)
La structure genérale du processeur serait donc:
inport
start
signaux de contrôle
unité
de
contrôle
CK
reset
unité
de
traitement
data≠0
done
outport
Eduardo Sanchez
7
Unité de traitement
• Pour stocker les 4 variables de l’algorithme, on utilise un dispositif
avec 8 registres à double accès:
3
WA
WEN
reset
8 registres
CK
3
RAA
RAB
A
3
B
Deux des 8 registres peuvent être lus en même temps, en donnant leurs adresses (RAA
et RAB).
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
8
• Pour les opérations sur les données nous utilisons une ALU et un
shifter:
2
S
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
A
M
S
B
shifter
ALU
A
A and B
A B
A or B
A - 1
A + B
A - B
A + 1
S2
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
shifter
shift left
rotate left
shift right
rotate right
NOP
NOP
NOP
NOP
Eduardo Sanchez
9
inport
1
IE
WA
WEN
3
reset
CK
RAA
8 registres
3
3
M
S
SH
0
A
B
A
B
RAB
2
shifter
3
0
OE
comparateur
outport
data≠0
Eduardo Sanchez
10
• Dix-huit bits sont nécessaires pour contrôler cette unité de traitement:
17
16
IE
sélection
de l’entrée
0 résultat
1 inport
adresse
d’écriture
14
WA
13
12
WEN
10
RAA
9
7
6
RAB
4
M S
3
1
SH
0
OE
output
enable
enable
d’écriture
adresse du
registre A
adresse du
registre B
opérations de l’ALU
A ces 18 bits, il faut ajouter
le signal done, actif lorsque
le calcul est terminé
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
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
Téléchargement