Cours Architecture des ordinateurs

Transcription

Cours Architecture des ordinateurs
IUP SI - L3
Architecture d’un ordinateur
UPS
IUP SI - L3
Architecture d’un ordinateur
Architecture des ordinateurs
Processeur :
Plan du cours :
– Unités de calcul :
➽ Architecture d’un ordinateur
– Unité Arithmétique et logique (UAL)
➽ Codage des informations
– Eventuellement, unité de calcul sur les flottants (FPU)
– Mémoire interne (registres) : Utilisés pour stocker temporairement des
➽ Unité Arithmétique et Logique
informations
➽ Chemin de données
– Unité de commande : Automate qui envoie les ordres aux registres, aux unit és de
➽ Exemple d’architecture
calcul, au bus, a la mémoire et aux système d’entrées/sorties pour exécuter les
➾ Instructions de traitement
instructions d’un programme.
➾ Instructions de transfert
– Bus internes : permettent de tranférer les informations entre la mémoire, les
➾ Instructions de branchement
unités de calcul et l’unité de commande.
➾ Programmation modulaire
Remarque : Unités de calcul+Registres+Bus=chemin des données
➽ Synthèse de l’unité de commande
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture d’un ordinateur
–1–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture d’un ordinateur
Mémoire
Instructions et données sont codées en binaire et stockées en mémoire dans des
Unités fonctionnelles d’un ordinateur :
Processeur
Memoire
registres de n bits constitués de la concaténation de n bascules.
Une mémoire est un vecteur de registres, chacun étant repéré par une adresse
Interfaces E/S
(équivalente à l’indice d’un tableau).
Adresse
bus
RD
WR
– Processeur (CPU) : coeur de l’ordinateur. C’est lui qui traite les informations.
– Mémoire : stocke les instructions et les données des programmes.
Memoire
Donnees
On peut y accéder en lecture ou en écriture :
– Entrées/Sorties : Permettent à l’ordinateur de communiquer avec l’extérieur.
– En lecture, le signal RD met, sur le bus de donnéees, le contenu de la mémoire
Les différentes unités sont reliés par des bus de communication.
correspondant à l’adresse présente sur le bus d’adresses.
– En écriture, le signal WR stocke la valeur présente sur le bus de données à
l’emplacement correspondant à l’adresse présente sur le bus d’adresses.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–2–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Architecture d’un ordinateur
IUP SI - L3
Entrées-Sorties
Caractéristiques d’un processeur
– Unités d’entrée : Clavier, souris, scanner, convertisseur analogique/digital, etc...
– nombre de bits de l’Unité Arithmétique et Logique
– Unités de sortie : Ecran, imprimante, convertisseur numérique/analogique, etc...
– dimension de l’espace adressable
– Unités d’entrée/sortie : Transferts d’information de et vers l’ordinateur. Mémoires
– fréquence de fonctionnement (nombre de cycles par seconde)
de masse ou secondaires : disquettes, CD-ROM, DVD, clefs USB, etc...
Unite
d’E/S
Unite
d’E/S
Architecture d’un ordinateur
– jeu d’instructions
Unite
d’E/S
– architecture interne
– puissance en Mips (Millions d’instructions par seconde) et en Mflops (Millions
bus peripherique
d’opérations flottantes par seconde)
Processeur
Memoire
Interfaces E/S
(controleurs)
Types de processeurs
– processeurs “universels” : Exemples Pentium, Athlon, PowerPC, ...
bus systeme
– micro-contrôleurs : interfaces d’E/S intégrés.
Les unités d’entrée/sortie sont reliées au processeur par l’intermédiaire d’interfaces.
– DSP : processeurs spécialisés en traitement du signal
L’accès se fait par des adresses mémoires.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture d’un ordinateur
–5–
UPS
IUP SI - L3
Architecture d’un ordinateur
Architecture multi-niveaux
Bus de communication
– Niveau Applications :
Un bus est un ensemble de fils qui assurent la transmission d’informations de
– Niveau 6 : Langages d’applications (Matlab, langage G, mapple, ...)
même type véhiculées en parallèle. On distingue trois types de bus :
– Niveau 5 : Langages évolués (Pascal, Ada, C, ...)
– Bus de données : bidirectionnel. Nombre de lignes égal à la capacité de
– Niveau 4 : Langage d’assemblage (assembleur)
traitement de l’UAL.
– Niveau Système :
– Bus d’adresses : unidirectionnel. Permet de sélectionner les informations dans un
– Niveau 3 : Système d’exploitation (Unix, Windows, ...)
espace mémoire. Pour un bus de m bits, on peut distinguer 2m adresses.
– Niveau 2 : Macro-machine (langage machine)
– Bus de commande : assure la synchronisation des flux d’informations sur les bus
– Niveau 1 : Micro-machine (micro-instructions)
de données et d’adresses.
– Niveau 0 : Machine physique (circuits logiques)
Un bus est une ressource partagée (par les différents boitiers d’E/S notamment).
Chaque niveau fait appel aux services du niveau inférieur.
Une fonction de décodage d’adresse permet de sélectionner le boitier pouvant
Machine virtuelle : L’utilisation d’une machine à un niveau donné peut faire
accéder au bus à un instant donné.
Jean-Michel ENJALBERT - [email protected], 2005/2006
Jean-Michel ENJALBERT - [email protected], 2005/2006
abstraction des niveaux inférieurs.
–6–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Codage des informations
UPS
IUP SI - L3
Codage des informations
Codage des entiers relatifs (signés) sur n bits
Codage des informations
– Codage par signe et valeur absolue : le bit le plus à gauche ( bit le plus
– Les informations que peut traiter un ordinateur sont des suites de bits (0 ou 1), un
significatif) représente le signe du nombre (1 : nombre négatif).
codage est donc nécessaire pour passer des données symboliques et
instructions d’un programme à une forme exploitable par l’ordinateur.
S(A) = (−1)an−1
– L’objet de taille minimale accessible est un octet (byte en anglais) soit 8 bits.
n−2
X
i=0
Le codage de données et d’instructions utilise donc des multiples d’octets.
– Codage par complément à 2 : les nombres négatifs sont représentés par leur
– Notation hexadécimale (base 16 :{0,1,...,E,F}) : permet de représenter de
complément à 2. Celà revient a donner un poids négatif au bit le plus significatif.
manière plus synthétique un ensemble de bits. 4 bits peuvent être représentés
Z(A) = −an−1 2n−1
par un seul symbole. Ex : 3EF5h=0011111011110101b
– Codage des caractères : On utilise essentiellement le codage ASCII qui permet
n−2
X
ai 2 i
i=0
– Codage par excédent : Les nombres sont décalés d’une valeur e (en général
de coder 128 caractères en utilisant 7 bits. Les codes 0 à 31 sont des codes de
e = 2n−1 ou e = 2n−1 − 1).
contrôle.
– Codage des nombres : le codage varie suivant qu’il s’agit d’entiers naturels
χe (A) =
(non-signés), d’entiers relatifs ou de réels.
n−1
X
ai 2i − e
i=0
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
ai 2i
Codage des informations
–9–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Codage des informations
Codage des entiers naturels (non-signés) sur n bits
Codage des réels en virgule fixe
On utilise une numération positionnelle : chaque symbole du code à un poids qui
dépend de sa position. Les poids sont croissants de la gauche vers la droite en
Pour un codage sur n bits, on réserve m bits pour coder la partie fractionnaire.
puissance de 2 en binaire (puissance de 10 en décimal et de 16 en hexadécimal)
Soit A
Soit m le nombre de bits codant la partie fractionnaire du réel :
= an−1 an−2 ...a1 a0 un code binaire, la valeur décimale N (A) de l’entier
Φm (A) = −an−1 2
naturel représenté par A peut être calculé par :
N (A) =
n−1
X
n−1−m
+
n−2
X
ai 2i−m = 2−m Z(A)
i=0
Exemple : Soit A=3E20h représentant un réel codé sur 16 bits avec m
ai 2i
i=0
Φ7 (A) = 124, 25
Exemple : le code 0101 0111b (en hexadécimal : 57h) représente l’entier 87 codé
sur 8 bits.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–10–
Jean-Michel ENJALBERT - [email protected], 2005/2006
=7:
IUP SI - L3
UPS
Codage des informations
IUP SI - L3
Codage des réels en virgule flottante
Norme IEEE P754
Codage des caractères. Code ASCII sur 7 bits
En simple précision, le codage se fait sur 32 bits :
31
30 ... 23
22 ... 0
S
E
F
– Le bit S code le signe du nombre (1 pour un nombre négatif).
– La mantisse est recadrée entre 1 et 2 (2 exclu) avant d’être codée. Elle est de la
forme : m
= 1, f . Seule la partie fractionnaire f est codée et ceci sur 23 bits
(Φ23 (F )).
– L’exposant est codée sur 8 bits par excédent 127.
code
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
0x00
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
NP
CR
SO
0x10
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
0x20
SP
!
”
#
$
%
&
’
(
)
*
+
,
-
.
0x30
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
0x40
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
0x50
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
ˆ
0x60
‘
a
b
c
d
e
f
g
h
i
j
k
l
m
n
0x70
p
q
r
s
t
u
v
w
x
y
z
{
—
}
˜
Les caractères 0 a 31 et 127 sont des caractères de contrôle.
Le code A=S|E|F représente le réel :
Le 8ème bit peut avoir divers usages :
R(A) = (−1)S (1 + Φ23 (F ))2χ127 (E)
– contrôle de parité
– définition de caractères étendus (accentués par exemple).
Exemple : le nombre 1 a pour code : 3F800000h
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Codage des informations
Codage des informations
–13–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Codage des informations
Caractères de contrôle et propriétés du code ascii
Codage des instructions
➯ Les lettres de l’alphabet sont dans l’ordre croissant et se suivent : Un tri
alphabétique se ramène à un tri numérique.
– Types d’instructions :
➯ Le passage de minuscule en majuscule et vice-versa se fait simplement en
– Instructions de traitement.
inversant le bit 5 du code (soit + ou - $20)
– Instructions de chargement/rangement.
➯ Le passage d’un chiffre à son code ASCII consiste à rajouter $30 à ce chiffre.
– Instructions de contrôle d’exécution.
– Format : dépend du type d’instruction. Exemples :
Quelques caractères de contrôles :
– traitement :
code opération
adresse 1er opérande
adresse 2ème opérande
adresse résultat
– chargement/rangement :
code opération
adresse registre
adresse mot en mémoire
– contrôle :
code opération
code condition
adresse de branchement
Jean-Michel ENJALBERT - [email protected], 2005/2006
–14–
NUL
absence de caractère
SOH
début d’entète
STX
début de texte
ETX
fin de texte
EOT
fin de transmission
ENQ
interrogation
ACQ
accusé réception
BEL
sonnette
BS
retour arrière
HT
tabulation horizontale
LF
ligne suivante
VT
tabulation verticale
FF
page suivante
CR
retour chariot
NAK
reçu avec erreur
SYN
synchronisation
CAN
annulation
SUB
substitution
ESC
échappement
FS
séparateur de fichier
GS
séparateur de groupe
RS
séparateur d’article
US
séparateur d’unité
DEL
effaçer
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
UPS
IUP SI - L3
Unité Arithmétique et Logique
Unité Arithmétique et logique
Additionneur binaire
Au coeur du processeur, l’UAL effectue le traitement des informations.
E1
E2
n
– Demi-additionneur 1 bit :
n
s=a⊕b
r = a.b
– Additionneur complet 1 bit :
f
UAL
m
p
.......
indicateurs
si = a i ⊕ b i ⊕ r i
ri+1 = ai .bi + ((ai ⊕ bi ).ri )
– Additionneur n bits à propagation de retenue :
n
a n−1 bn−1
S
rn
C’est un circuit combinatoire qui produit un résultat (S) sur n bits fonction des
rn−1
add
r2
a 1 b1
add
r1
add
s1
s
données présentes sur ses entrées (E1 et E2) et de la fonction à réaliser (f) et met à
a 0 b0
r0
s0
jour des indicateurs.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
–17–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
Fonctions de l’UAL
L’UAL permet de réaliser différents types d’opérations sur des donnéees de la forme
Addition d’entiers naturels
S=f(E1,E2) :
– Addition d’entiers codés sur n bits :
– Des opérations arithmétiques : additions, soustractions, ...
– Des opérations logiques : ou, et, ou exclusif, ...
N (S) + 2n rn = N (A) + N (B)
– Des décalages et rotations.
Le résultat est exact si rn
Elle met par ailleurs à jour des indicateurs en fonction du résultat de l’opération
= 0 (pas de retenue).
Soit le bit C (Carry) du registre de condition égal à 0 (C=rn ).
effectuée :
– Addition d’entiers codés sur k
– Z : indicateur mis à 1 si le résultat de l’opération est 0.
× n bits (précision multiple).
Séquence de k additions en commençant par les poids faibles et en tenant
– N : indicateur mis à 1 pour un résultat négatif (bit le plus à gauche égal à 1).
compte de la retenue (bit C) du niveau précédent.
– C : mis à 1 en cas de retenue ou débordement en contexte non signé.
– V : mis à 1 en cas de débordement en contexte signé.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–18–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
UPS
IUP SI - L3
Unité Arithmétique et Logique
Opérations logiques
Addition d’entiers relatifs
Une Unité Arithmétique et Logique permet d’exécuter les fonctions logiques de
– On utilise un codage par complément à 2.
base : ET (AND), OU (OR), OU EXCLUSIF (XOR), PAS (NOT). Ces fonctions, pour
Si le mot-code X représente le nombe Z(X), on peut écrire :
des mots de n bits sont effectués en parallèle. Elles sont obtenus par juxtaposition
d’opérateurs logiques 1 bit :
n
Z(X) = N (X) − 2 xn−1
ai
bi
– Soit A et B les codes des nombres Z(A) et Z(B) et S le code du résultat tel
= Z(A) + Z(B). On montre que le résultat de Z(A) + Z(B) est
le même que le résultat de N (A) + N (B) si
que Z(S)
V = rn−1 ⊕ rn = 0
– L’addition d’entiers relatifs est donc identique à celle d’entiers naturels. La seule
f
chose qui change, c’est l’indicateur qui permet de savoir si le r ésultat est exact (C
0
en non-signé, V en signé).
1
si
2
3
La commande f du multiplexeur permet de sélectionner l’opération à effectuer.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
–21–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité Arithmétique et Logique
Soustraction
Opérations de décalage
– Entiers naturels :
Soit B̃ le complément à 2 de B. N (B̃)
= 2n − N (B). Si on additionne A et B̃
Les opérations de décalage sont obtenus au moyen d’un multiplexeur situé à la
on obtient S tel que
sortie de l’Unité Arithmétique et Logique. Suivant la commande f , le résultat S peut
N (S) + 2n rn = N (A) + N (B̃) = N (A) − N (B) + 2n Le résultat est
celui de la soustraction si r n = 1. Dans ce cas, on calcule C = r¯n .
ne pas être décalé (f
gauche (f
– Entiers relatifs :
= 0), ou être décalé d’un bit vers la droite (f = 1) ou vers la
= 2).
s n−1
Z(B̃) = −Z(B) d’ou : Z(A) − Z(B) = Z(A) + Z(B̃). Le résultat est
s n−2
exact si celui de l’addition est exact soit si V=0.
– En résumé, la soustraction se traite de la manière suivante :
f
– Prendre le complément à 2 de B
0 1 2
dn−1
– l’ajouter à A
s2
s1
s0
0 1 2
0 1 2
d1
d0
– Vérifier le résultat : C=0 en contexte non-signé, V=0 en contexte signé
Jean-Michel ENJALBERT - [email protected], 2005/2006
–22–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Chemin de données
IUP SI - L3
Chemin de données
Multiplexeur
Unité de commande
Seule la ligne correspondante au code de sélection se retrouve en sortie.
– Automate qui élabore les ordres pour assurer l’exécution de chaque instruction.
– Peut être modélisé par une machine à états synchrone.
s0
– Machine de Moore : la fonction de sortie ne dépend que de l’état courant.
fonction de sortie
entrees
s1
sorties
fonction etat suivant
e0
registre
etat courant
etat suivant
e1
horloge
e2
– Entrées : code instruction et indicateurs d’état (C, V, etc...).
– Sorties : signaux de commande pour piloter le chemin de données.
e3
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Chemin de données
–25–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Chemin de données
Chemins de données
Mémoire
– Registre : Elément de base constitué de n bascules de type D. Permet de
conserver des mots-codes de n bits.
E
LR
n
R
S
Donnee
WR
n
RD
L’activation du signal LR provoque la copie de la donnée présente sur le bus E
dans le registre R.
– Bus direct entre registres :
n
L Rs
Rs
n
L Rd
Rd
n
Adresse
L’activation du signal LRd provoque la copie de la donnée du registre Rs dans le
registre Rd , opération notée : Rd
Decodage
← Rs .
Jean-Michel ENJALBERT - [email protected], 2005/2006
–26–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Chemin de données
IUP SI - L3
Chemin de données
Transfert bus → registre
bus
RISC et CISC
LR1
registre 1
LR2
registre 2
Memoire
WR
– Processeurs de type CISC (Complex Instruction Set Computer) : nombreuses
instructions de la plus simple à la plus complexe. Formats très variables
Adresse
(non-homogène). Décodeur d’instructions et unité de commande complexes.
Transfert registre → bus
registre 1
registre 2
Nombreux modes d’adressage. Faible nombre de registres
registre 3
Exemples : familles Intel 80x86 et Motorola 680x0.
– Processeurs de type RISC (Reduced Instruction Set Computer) : Jeu
E
mux
0
d’instructions réduit mais exécution plus rapide (moins de cycles d’horloge).
1
Homogénéité du format et régularité de l’exécution. Décodeur simple mais
bus
compilateur plus complexe. Nombreux registres.
Exemples : PowerPC, Alpha, MIPS, Sparc, etc..
Memoire
RD
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Chemin de données
–29–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Chemin de données
Différentes Architectures
Von Neumann vs Harvard
– Choix pour le stockage transitoire des données :
– accumulateurs (registres spécialisés)
Architecture de Von Neumann
– pile
bus donnees
– registres généraux
Memoire
CPU
– pas de stockage
bus adresses
– Sources de données pour l’UAL :
– registres/mémoire
Architecture de Harvard
– registres/registres
instructions
– mémoire/mémoire
➱ 2 types d’architectures :
adresses
instructions
– CISC : accumulateurs, calculs registres/mémoire
donnees
memoire
donnees
CPU
memoire
instructions
adresses
donnees
– RISC : registres généraux, calculs registres/registres
Jean-Michel ENJALBERT - [email protected], 2005/2006
–30–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Exemple d’architecture
UPS
IUP SI - L3
Exemple d’architecture
Exemple d’architecture d’un processeur
Fonctions de l’UAL
Le processeur pris comme exemple d’étude comporte :
– Une Unité Arithmétique et Logique traitant des mots de 16 bits.
– Une banque de 16 registres généraux de 16 bits reliés par deux bus de donnés
Yi et Yj aux entrées E1 et E2 de l’UAL
– Un bus de données bidirectionnel de 16 bits DBUS
– Un bus d’adresses de 12 bits ABUS (Espace adressable : 8 Ko)
f
S
fonction
f
S
fonction
0
0
mise à zéro
8
E1
complément à 1
1
E1+E2
addition
9
E1.E2
ET logique
2
E1+E2+C
addition avec retenue
A
E1+E2
OU logique
3
E1-E2
soustraction
B
E1 ⊕ E2
OU exclusif
←−
E1
−
→
E1
←−
c E1
−→
c
E1
décalage à gauche
– Un registre PC contenant l’adresse de la prochaine instruction à exécuter.
4
E1-E2+C
soustraction avec retenue
C
– Un registre IR contenant le code de l’instruction à exécuter
5
E1+1
incrémentation
D
– Un registre SP contenant l’adresse du sommet de la pile système
6
E1-1
décrémentation
E
– Un registre d’indicateurs d’états I.
7
-E1
négation
F
décalage à droite
rotation à gauche via C
rotation à droite via C
– Une unité de commande générant les divers signaux de contrôle.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Exemple d’architecture
–33–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Exemple d’architecture
WRF
Jeu d’instructions
D in
j
Le jeu d’instructions que l’on veut fournir au processeur est divis é en 4 familles :
R[0]
R[1]
1. Instructions de traitement : opérations arithmétiques et logiques effectuées par
2. Instructions de chargement/rangement : instructions permettant des transferts
registre/registre et registre/mémoire.
3. Instructions de branchement : branchements conditionnels et inconditionnel.
0
R[15]
4. Instructions pour la programmation modulaire : gestion de la pile syst ème,
i
sous-programmes et interruptions.
16
16
15
4
Banque de registres
Jean-Michel ENJALBERT - [email protected], 2005/2006
–34–
Yj
15
Decodage
l’UAL entre registres (pas d’opérations directement avec la mémoire)
0
Jean-Michel ENJALBERT - [email protected], 2005/2006
Yi
IUP SI - L3
UPS
Exemple d’architecture
IUP SI - L3
Exemple d’architecture
Recherche et décodage des instructions
– Recherche de l’instruction en mémoire (état R1) :
– L’adresse de l’instruction dans PC est sur le bus d’adresses ABUS
Machine à états pour la recherche d’instructions
– L’activation du signal RD , met sur DBUS le code de l’instruction
– Le signal LR charge le contenu de DBUS dans le registre IR
– Le signal LP C charge le compteur PC avec sa valeur incrémenté de 1 pour
R1
préparer la recherche de l’instruction suivante.
H
Pendant l’état R1, les sorties actives sont RD , LR et LP C .
Le signal d’horloge fait passer l’unité de commande de l’état R1 à l’état R2. Les
opérations : IR
IR<−M[PC], PC<− PC+1
R2
← M [P C] et P C ← P C + 1 (notation RTL) sont effectives
au moment du changement d’état.
– Décodage de l’instruction (état R2) : L’analyse du contenu de IR par l’unité de
commande permet de générer les signaux permettant d’exécuter l’instruction
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–37–
UPS
Exemple d’architecture
DBUS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Exemple d’architecture
16
Registres
Memoire
E1
E2
S
Z
N
V
C
4
f
I
Unite
de
Commande
LPC
L IR
WR
RD
LPC
12
ABUS
PC
SP
16
WR
IR
RD
+1
L IR
H
12
+
Jean-Michel ENJALBERT - [email protected], 2005/2006
Processeur V.1
–38–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de traitement
UPS
IUP SI - L3
Format des instructions de traitement
Instructions de traitement
j
4
D in
Les instructions de traitement sont effectuées par l’Unité Arithmétique et Logique.
Ce sont des opérations du type : R[i]
DBUS
16
WRF
Registres
← f (R[i], R[j]) codées sur 16 bits suivant
i
le format (appelé format a) :
16
Yj
16
Yi
11...8
7...4
3...0
c.o.
c.c.o
i
j
Memoire
4
4
15...12
E1
E2
4
S
Z
– c.o : code opératoire. Egal à 0 pour toutes les instructions de traitement
N
V
C
(instruction générique).
– c.c.o. : complément au code opératoire. Permet de sélectionner l’opération à
f
EUAL
LI
LPC
L IR
WR
RD
i
j
f
EUAL
LI
WRF
Unite
de
Commande
effectuer. Signal f de l’UAL.
16
IR
LPC
LSP
12
SP
WR
L IR
Instructions de traitement
–41–
UPS
Jeu d’instructions de traitement
+
H
12
Processeur V.2
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de traitement
Analyse des instructions de traitement
c.o.
c.c.o
mnémonique
fonction
commande
actions
0
0
clr Ri
R[i] ← 0
i=IR(7..4)
0
1
add Ri,Rj
Yi ← R[i], E1 ← Yi
R[i] ← R[i] + R[j]
j=IR(3..0)
0
2
adc Ri,Rj
Yj ← R[j], E2 ← Yj
R[i] ← R[i] + R[j] + C
f=IR(11..8)
0
3
S ← f (E1, E2)
sub Ri,Rj
R[i] ← R[i] − R[j]
0
4
sbc Ri,Rj
EU AL = 1
DBU S ← S , Din ← DBU S
R[i] ← R[i] − R[j] − C
0
5
inc Ri
WRF = 1
R[i] ← Din
R[i] ← R[i] + 1
maj indicateurs
0
6
dec Ri
LI = 1
R[i] ← R[i] − 1
0
7
neg Ri
R[i] ← −R[i]
0
8
comp Ri
R[i] ← R[i]
0
9
and Ri,Rj
R[i] ← R[i].R[j]
0
A
or Ri,Rj
R[i] ← R[i] + R[j]
0
B
xor Ri,R[j]
0
C
lsl Ri
0
D
lsr Ri
0
E
rol Ri
0
F
ror Ri
R[i] ← R[i] ⊕ R[j]
←
−−
R[i] ← R[i]
−
−
→
R[i] ← R[i]
←
−−
R[i] ← R[i] via C
−
−
→
R[i] ← R[i] via C
Jean-Michel ENJALBERT - [email protected], 2005/2006
RD
+1
– j : indice du registre contenant le second opérande
IUP SI - L3
ABUS
PC
– i : indice du registre contenant le 1er opérande
Jean-Michel ENJALBERT - [email protected], 2005/2006
16
Machine à états
R1
H
IR<−M[PC], PC<− PC+1
R2
c.o.=0
H
–42–
E0
R[i]<−f(R[i],R[j])
H
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de transfert
UPS
IUP SI - L3
Instructions de transfert
Transferts de données
Modifications de l’architecture
– Opérations de l’UAL : registres → registres
– Transferts :
Pour effectuer les instructions de transfert qui viennent d’être définies, des
– registre → registre
améliorations doivent être apportées à l’architecture de notre processeur :
– registre → mémoire
– Il faut pouvoir connecter Ri et Rj en sortie sur DBUS. On rajoute pour cel à les
– mémoire → registre
portes 3 états commandées par ERi et ERj .
Modes d’adressage
– Le bus d’adresses ABUS doit pouvoir être alimenté par Rj (adressage indirect) où
par les 12 bits de poids faible du registre IR (adressage absolu). On rajoute pour
– Adressage direct de registre : R[i]
← R[j].
– Adressage absolu implicite : R[0] ← M [adresse] ou M [adresse] ← R[0]
– Adressage indirect : R[i] ← M [R[j]] ou M [R[j]] ← R[i]
– Adressage immédiat : R[i] ← valeur
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de transfert
celà le multiplexeur muxAd.
Ceci conduit à la version 3 de notre processeur.
–45–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de transfert
Formats des instructions de transfert
15...12
a:
11...8
c.o.
b:
7...4
0
i
15...12
11...0
c.o.
adresse
j
j
4
DBUS
16
WRF
3...0
E Ri
D in
Registres
i
16
Yj
16
Yi
c:
11...8
7...4
3...0
c.o.
0
i
0
Memoire
4
4
15...12
E1
E2
4
S
Z
valeur
N
V
C
LI
f
EUAL
5
Jeu d’instructions
format
c.o.
mnémonique
fonction
a
1
move Ri,Rj
R[i] ← R[j]
b
2
load adresse
R[0] ← M [adresse]
b
3
store adresse
M [adresse] ← R[0]
a
4
load Ri,[Rj]
R[i] ← M [R[j]]
a
5
store [Rj],Ri
M [R[j]] ← R[i]
c
6
load Ri,valeur
R[i] ← valeur
Jean-Michel ENJALBERT - [email protected], 2005/2006
Unite
de
Commande
16
IR
L IR
–46–
16
E Rj
H
2
LPC
L IR
WR
RD
i
j
f
EUAL
LI
WRF
muxAd
E Ri
E Rj
IR(11..0)
LPC
LSP
1
0
PC
12
ABUS
SP
muxAd
WR
RD
+1
+
12
Jean-Michel ENJALBERT - [email protected], 2005/2006
Processeur V.3
IUP SI - L3
UPS
Instructions de transfert
IUP SI - L3
Instructions de transfert
Analyse des instructions (1)
E1 : R[i]
R1
H
← R[j]
IR<−M[PC], PC<− PC+1
R2
– On sélectionne R[j] et on le relie à DBUS : j=IR(3..0), ERj
=1
– On sélectionne R[i] et on copie DBUS dedans : i=IR(7..4), WRF = 1
c.o.=0
H
E2 : R[0]
c.o=1
← M [adresse]
– On place adresse contenue dans IR sur ABUS : muxAd=1
c.o.=2
– on place la donnée (M (adresse)) sur DBUS : RD=1
– On sélectionne R[0] et on copie DBUS dedans : i=0, WRF
=1
c.o.=3
E3 : M [adresse] ← R[0]
– On place adresse contenue dans IR sur ABUS : muxAd=1
– On sélectionne R[0] et on le connecte à DBUS : i=0, ERi = 1
– On copie DBUS dans M [adresse] : WR=1
c.o.=4
c.o.=5
c.o=6
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–49–
UPS
Instructions de transfert
E0
E1
E2
E3
E4
E5
E6
R[i]<−f(R[i],R[j])
H
R[i]<−R[j]
R[0]<−M[adresse]
M[adresse]<−R[0]
R[i]<−M[R[j]]
M[R[j]<−R[i]
R[i]<−M[PC], PC<−PC+1
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Instructions de transfert
Analyse des instructions (2)
E4 : R[i]
← M [R[j]]
Résumé des signaux de commande :
– On sélectionne R[j] et on le connecte à ABUS : j=IR(3..0), muxAd=2
– E0 : muxAd=0, i=IR(7..4), j=IR(3..0), f=IR(11..8), EU AL
– On place M[R[j]] sur DBUS : RD=1
– On sélectionne R[i] et on copie DBUS dedans : i=IR(7..4), WRF
E5 :M [R[j]]
=1
– E1 : j=IR(3..0), ERj
= 1, i=IR(7..4), WRF = 1
– E2 : muxAd=1, RD=1, i=0, WRF = 1
– E3 : muxAd=1, i=0, ERi = 1, WR=1
– E4 : j=IR(3..0), muxAd=2, RD=1, i=IR(7..4), WRF = 1
– E5 : i=IR(7..4), ERi = 1, j=IR(3..0), muxAd=2, WR=1
– E6 : muxAd=0, RD=1, i=IR(7..4), WRF = 1, LP C = 1
← R[i]
– On sélectionne R[i] et on le connecte à DBUS : i=IR(7..4), ERi
=1
– On sélectionne R[j] et on le connecte à ABUS : j=IR(3..0), muxAd=2
– On effectue l’écriture en mémoire (M [ABU S]
E6 :R[i]
← DBU S ) : WR=1
← valeur
– PC est connecté à ABUS, on connecte M[PC] à DBUS : muxAd=0, RD=1
– On sélectionne R[i] et on écrit dedans : i=IR(7..4), WRF
– On incrémente PC pour l’instruction suivante : LP C
= 1, WRF = 1,
LP C = 1
=1
=1
Jean-Michel ENJALBERT - [email protected], 2005/2006
–50–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Instructions de branchements
IUP SI - L3
Instructions de branchements
Instructions de ruptures de séquence
Principe : Si une condition est vérifiée : sauter à une adresse spécifiée
Interprétation des conditions de branchement
Sinon : continuer en séquence.
cond?
faux
Généralement, une instruction de branchement conditionnel est précédé d’une
vrai
opération de comparaison ente 2 registres c’est à dire une soustraction : A-B.
Les conditions de saut peuvent alors être interprétées ainsi :
suite
–
–
– Condition de branchement : basée sur les indicateurs mis à jour par l’UAL
–
(Z,N,V,C).
–
– Adresse de branchement : on veut coder l’instruction sur un seul mot-code (16
–
bits). Or, c.o : 4 bits, adresse : 12 bits. Il faudrait un c.o. différent pour chaque test.
beq : branchement si A=B (A-B=0 d’ou Z=1)
blo : branchement si A < B en contexte non-signé
blt : branchement si A < B en contexte signé
bls : branchement si A ≤ B en contexte non-signé
ble : branchement si A ≤ B en contexte signé
Solution choisie : On utilise 3 bits (c.c.o) pour coder le test (8 possibilit és) et on
ne code qu’un déplacement relatif sur 9 bits (-256 à +255).
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–53–
UPS
Instructions de branchements
15...12
11...9
8...0
c.o.
c.c.o
deplacement
Instructions de branchements
L’instruction de branchement (instruction générique) peut être exécuté de la manière
suivante :
(deplacement est un entier relatif codé sur 9 bits.)
– On calcule la condition à l’aide d’un circuit combinatoire :
Z N V C
Jeu d’instructions :
mnémonique
IUP SI - L3
Modifications de l’architecture
Format d’instruction :
format c :
Jean-Michel ENJALBERT - [email protected], 2005/2006
c.o.
c.c.o.
7
0
bra deplacement
1
7
1
bns deplacement
N
7
2
bvs deplacement
V
7
3
beq deplacement
Z
7
4
blo deplacement
C
7
5
blt deplacement
N⊕V
7
6
bls deplacement
C+Z
7
7
ble deplacement
Z +(N ⊕ V)
c.c.o.=IR(9..11)
condition
Calcul condition
condition
Ce calcul est fait dans l’unité de commande.
– On rajoute la possibilité d’additionner PC avec les bits 0..9 de IR (déplacement) :
c’est le rôle du multiplexeur mux1.
– Le déplacement étant un entier relatif sur 9 bits, on doit l’étendre à 12 bits pour
conserver l’information de signe (circuit EXT).
Jean-Michel ENJALBERT - [email protected], 2005/2006
–54–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
4
E Ri
D in
Registres
i
16
Yj
16
Yi
16
E Rj
Principe : Interrompre le programme en cours pour exécuter un sous-programme
puis revenir au programme en cours (programme appelant).
4
E1
E2
4
S
Z
N
V
C
Instruction
f
Sous−Programme
EUAL
LI
jsr
5
2
LPC
L IR
WR
RD
i
j
f
EUAL
LI
WRF
muxAd
E Ri
E Rj
mux1
Unite
de
Commande
16
IR
L IR
Programmation modulaire
Sous-programmes, fonctions.
Memoire
4
IUP SI - L3
Programmation modulaire
DBUS
16
WRF
j
UPS
Instructions de branchements
IR(11..0)
LPC
LSP
1
12
ABUS
0
PC
rts
SP
Programme
appelant
muxAd
IR(8..0)
WR
EXT
+1
0
1
RD
Nécessite de stocker l’adresse de retour.
mux1
Registre spécialisé : un seul niveau de sous-progamme possible.
+
H
12
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
➱ Utilisation d’une structure de données de type pile
Processeur V.4
Instructions de branchements
–57–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Programmation modulaire
Analyse de l’instruction
Pile système
Si condition=1, l’exécution de l’instruction peut être représentée, en notation RTL,
par : PC ← PC+déplacement.
Structure de données de type LIFO implémentée en mémoire.
Les signaux de commande sont donc : mux1=1 et LP C
= 1.
Branchement à un sous-programme : empilage de l’adresse de retour
Dans le cas contraire, il n’y a rien à faire.
Retour du sous-programme : dépilage de l’adresse de retour
On peut représenter ceci par la machine à états :
Pointeur de pile : registre SP contenant l’adresse du sommet de la pile.
Implémentation de la pile : adresses hautes (Ex : FFFh) et empilage vers les
R1
H
IR<−M[PC], PC<− PC+1
adresses basses.
R2
c.o.=0
H
c.o=7
condition=1
R[i]<−f(R[i],R[j])
E0
E7
...
FFD
FFE
FFF
H
PC<−PC+deplacement
valeur 1
SP
valeur 2
valeur 1
empilage
SP
valeur 1
depilage
c.o.=7 et condition=0
Jean-Michel ENJALBERT - [email protected], 2005/2006
–58–
Jean-Michel ENJALBERT - [email protected], 2005/2006
SP
IUP SI - L3
Programmation modulaire
UPS
IUP SI - L3
Programmation modulaire
Formats des instructions de pile
a:
15...12
11...8
7...4
3...0
c.o.
0
i
0
b:
15...12
11...0
c.o.
adresse
j
DBUS
16
WRF
4
E Ri
D in
Registres
i
16
Yj
16
Yi
Memoire
4
4
E1
E2
4
S
Z
N
V
C
f
EUAL
LI
5
2
Jeu d’instructions
format
c.o.
mnémonique
fonction
b
8
jsr adresse
saut au sous-programme adresse
a
9
rts
retour d’un sous-programme
a
A
push Ri
M [SP ] ← R[i], SP ← SP + 1
a
B
pop Ri
SP ← SP + 1, R[i] ← M [SP ]
Unite
de
Commande
E IR
16
IR
L IR
IUP SI - L3
Programmation modulaire
H
–61–
UPS
LPC
L IR
WR
RD
i
j
f
EUAL
LI
WRF
muxAd
E Ri
E Rj
mux1
mux2
mux3
E PC
E IR
Jean-Michel ENJALBERT - [email protected], 2005/2006
16
E PC
E Rj
mux3
LPC
IR(11..0)
1
0
LSP
1
12
ABUS
0
PC
3
SP
muxAd
IR(7..0)
+1
mux2
0
1
0
EXT
1
WR
−1
2
RD
mux1
+
12
Processeur V.5
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Programmation modulaire
Analyse des instructions (1)
jsr adresse
Modification de l’architecture
L’instruction doit réaliser, en notation RTL :
Pour implémenter les instructions pour la programmation modulaire, il faut :
– Sauvegarde de l’adresse de retour sur la pile M [SP ]
– Pouvoir relier SP à ABUS : rajout de l’entrée 3 de muxAd.
de la pile : SP
– Pouvoir incrémenter et décrémenter SP : rajout de mux2 et d’une entrée sur
← P C et décrémentation
← SP − 1.
Les signaux de commande sont donc : muxAd=3, EP C
mux1.
mux1=2, mux2=1, LSP
– Pouvoir charger où ranger PC en mémoire : rajout de mux3 et de la porte 3 états
= 1, WR=1 ainsi que :
= 1 et sont générés dans l’état E81.
– Branchement à la 1ère instruction du sous-progammme : P C
commandée par EP C .
← IR(11..0). Le
transit de IR vers PC se fait par DBUS. Il faut pour celà générer les commandes :
– Pouvoir connecter la sortie de IR sur DBUS : rajout de la porte 3 états
mux3=1, EIR
commandée par EIR .
= 1 et LP C = 1. C’est fait dans l’état E82.
rts L’instruction doit
= 1 (état E91)
– Mettre M[SP] dans PC : muxAd=3, RD=1, mux3=1, LP C = 1 (état E92)
– Incrémenter SP : mux1=0, mux2=1, LSP
Jean-Michel ENJALBERT - [email protected], 2005/2006
–62–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Programmation modulaire
– Une interruption consiste à interrompre le programme en cours (tàche de fond)
push Ri : Pour réaliser M [SP ] ← R[i] il faut :
pour exécuter un sous-programme totalement indépendant.
= 1,
– Une interruption matérielle est provoquée par un événement externe provenant
– connecter SP à ABUS : muxAd=3,
d’une unité périphérique (Exemple : appui d’une touche du clavier).
– envoyer un ordre d’écriture à la mémoire : WR=1,
– décrémenter SP : mux1=2, mux2=1, LSP
– Elle se matérialise sur notre processeur par l’activation d’une ligne reli é à l’unité
= 1.
de commande du processeur (ligne int).
pop Ri : Pour réaliser R[i] ← M [SP ] il faut :
– incrémenter SP : mux1=0, mux2=1, LSP
– Le sous programme à exécuter est localisée à une adresse fixée par le
= 1 puis :
concepteur du système (vecteur d’interruption).
– connecter SP à ABUS : muxAd=3,
– L’interruption du programme ne peut se faire qu’à la fin de l’exécution en cours
– envoyer l’ordre de lecture à la mémoire : RD=1,
– sélectionner R[i] et charger DBUS dedans : i=IR(7..4), WRF
(retour vers l’état R1).
=1
– Le registre d’indicateurs (I) doit être sauvegardé sur la pile avant le départ en
Cette instruction prend 2 cycles (états EB1 et EB2).
interruption et restauré au retour.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–65–
UPS
Programmation modulaire
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Machine à états
Interruptions
Masque d’interruptions
R1
H
Interruptions
Interruptions matérielles
Analyse des instructions (2)
– Sélectionner R[i] : i=IR(7..4), et le connecter à DBUS : ERi
IUP SI - L3
– Le départ en interruption consiste à charger le pointeur de programme PC avec
IR<−M[PC], PC<− PC+1
l’adresse du sous programme d’interruption après la fin d’une instruction et avant
le retour à l’état R1 (recherche de la prochaine instruction).
R2
c.o.=0
H
E0
E81
c.o=9
E91
c.o=B
– La ligne de demande d’IT (int) n’est désactivée qu’à la fin du SP d’IT. Il faut
H
donc rajouter un indicateur indiquant que l’on est en train de traiter une demande
c.o=8
c.o=A
R[i]<−f(R[i],R[j])
EA
EB1
M[SP]<−PC, SP<−SP−1
SP<−SP+1
E82
E92
jsr
– Si IE=1 et int=1, on se déroute vers le SP d’IT et on met IE à 0.
PC<−M[SP]
rts
Sinon (IE=0 ou int=0), on traite les instructions normalement.
M[SP]<−R[i], SP<−SP−1
SP<−SP+1
d’IT. C’est le rôle de l’indicateur IE.
PC<−adresse
– A la fin du SP d’IT, on remet à 1 l’indicateur IE pour pouvoir traiter la prochaine
push
EB2
R[i]<−M[SP]
Jean-Michel ENJALBERT - [email protected], 2005/2006
interruption.
pop
–66–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Interruptions
IUP SI - L3
Interruptions
Modification de l’architecture
Instructions supplémentaires
– on rajoute la ligne d’entrée int
– on rajoute le bit IE au registre d’indicateurs I. Ce bit peut être mis à 1 (signal SIE)
où à 0 (signal CIE)
– on connecte le registre I au bus de données en lecture et écriture : rajout du
format
c.o.
mnémonique
fonction
a
C
sei
Autorisation interruptions
a
D
cli
Interdiction interruptions
a
E
rti
retour d’interruption
multiplexeur muxI et de de la porte 3 états EI .
Analyse des instructions
– on rajoute une entrée au multiplexeur muxAd fixant l’adresse du vecteur
d’interruptions.
“Instruction” d’interruption
notation RTL
Etat
signaux de commande
M [SP ] ← P C , SP ← SP − 1
I1
muxAd=3, EP C
M [SP ] ← I , SP ← SP − 1
I2
muxAd=3, EI
P C ← addIT , IE ← 0
I3
muxAD=4, RD=1, mux3=1, LP C
j
4
E Ri
D in
IE ← 0
ED
CIE = 1
rti
SP ← SP + 1
EE1
mux1=0, mux2=1, LSP
I ← M [SP ], SP ← SP + 1
EE2
muxAd=3, RD=1, muxI=1, LI
–69–
IUP SI - L3
Interruptions
Machine à états
PC<−addIT
IE<−0
I3
I<−M[SP]
SP<−SP−1
I2
4
muxI
Z
IE
1
0
N
V
E1
PC<−M[SP]
SP<−SP−1
C
LI
E2
4
C IE
S IE
E IR
16
IR
E IR
L IR
H
int
Unite
de
Commande
int=1 et IE=1
int=0 ou IE=0
f
H
AddIT
EUAL
5
EI
I1
R1
S
mux2
mux3
E PC
muxI
EI
mux3
LPC
IR(11..0)
1
0
LSP
1
0
PC
IR<−M[PC], PC<− PC+1
4
R2
2
LPC
L IR
WR
RD
i
j
f
EUAL
LI
WRF
muxAd
E Ri
E Rj
mux1
12
c.o.=0
H
ABUS
E0
muxAd
IR(8..0)
+1
mux2
0
1
0
R[i]<−f(R[i],R[j])
H
3
SP
EXT
1
WR
−1
2
c.o=C
RD
mux1
c.o=D
+
12
Jean-Michel ENJALBERT - [email protected], 2005/2006
c.o=E
Processeur V.6
–70–
EC
ED
EE1
IE<−1
IE<−0
SP<−SP+1
EE2
=1
=1
Jean-Michel ENJALBERT - [email protected], 2005/2006
4
i
=1
muxAd=3, RD=1, mux3=1, LP C
Memoire
Yi
16
EE3
P C ← M [SP ]
= 1, CIE=1
Yj
16
Registres
SIE = 1
cli
16
E PC
E Rj
signaux de commande
EC
mux1=0, mux2=1, LSP
UPS
DBUS
16
Etat
IE ← 1
= 1, WR=1 mux1=2, mux2=1, LSP = 1
Interruptions
WRF
notation RTL
sei
= 1, WR=1 mux1=2, mux2=1, LSP = 1
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
instruction
I<−M[SP]
SP<−SP+1
EE3
Jean-Michel ENJALBERT - [email protected], 2005/2006
PC<−M[SP]
=1
IUP SI - L3
UPS
Interruptions
IUP SI - L3
Unité de commande
Interruptions logicielles
– Une interruption logicielle est une interruption provoquée par le programmeur
Synthèse de l’unité de commande
(instruction trap). On parle aussi de “trappe logicielle”.
– Une différence avec un sous-programme (instruction jsr) est qu’une trappe
L’unité de commande a été modélisée comme une machine à états synchrone.
correspond à une adresse pré-fixée (numéro de trappe correspondant à une
Deux solutions peuvent être mises en oeuvre pour la réaliser :
entrée d’un vecteur d’interruption)
➽ Synthèse par PLA : Solution utilisée dans les processeurs de type RISC.
– Elle permet d’exécuter une procédure du système d’exploitation de manière
– Peu d’instructions ➯ complexité limitée
transparente.
– Rapidité ➯ grande fréquence de fonctionnement
– Comme une IT matérielle, une trappe logicielle provoque la sauvegarde dans la
➽ Synthèse par Micro-Programmation : processeurs de type CISC.
pile du registre d’indicateurs I.
– synthèse par PLA trop complexe.
Pour notre processeur, le codage choisi et de format b qui permet de coder
– évolutivité plus grande.
l’adresse dans l’instruction. En général, c’est un numéro qui est codé dans
l’instruction à partir duquel une adresse et calculée.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–73–
UPS
Interruptions
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
Programmable Logic Array
Instruction de trappe :
Matrices de portes ET et OU permettant de réaliser des fonctions logiques de type
c.o
instruction
notation RTL
Etat
signaux de commande
F
trap adresse
M [SP ] ← P C , SP ← SP − 1
EF2
muxAd=3, EP C
M [SP ] ← I , SP ← SP − 1
EF1
muxAd=3, EI
P C ← IR(11..0)
EF3
muxAd=1, RD=1, mux3=1, LP C
SIGMA-PI. Exemple :
= 1, WR=1
mux1=2, mux2=1, LSP =1
a
= 1, WR=1
b
mux1=2, mux2=1, LSP =1
H
=1
c
IR<−M[PC], PC<− PC+1
f1
f2
R2
c.o=F
EF1
M[SP]<−PC
SP<−SP−1
EF2
M[SP]<−I
SP<−SP−1
EF3
Jean-Michel ENJALBERT - [email protected], 2005/2006
f 1 = a.b + a.b + a.c
PC<−adresse
f 2 = a.b.c + a.b + a.c
–74–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Unité de commande
IUP SI - L3
Synthèse par PLA
Etat
etat courant
Horloge
Matrice
ET
termes
produits
registre
etat suivant
sorties
Matrice
OU
– Codage des états ➯ fonction etat suivant=f(etat present,entrees)
– Sorties : ne dépendent que de l’état présent : signaux de commandes
c.o.
cond
IR(15..12)
etat suiv.
code
si IE.int=0
etat suiv.
code
si IE.int=1
R1
00h
-
-
R2
01h
R2
01h
R2
01h
0
-
E0
02h
E0
02h
R2
01h
1
-
E1
03h
E1
03h
...
...
...
...
...
...
...
...
R2
01h
7
0
R1
00h
R1
00h
R2
01h
7
1
E7
08h
E7
08h
...
...
...
...
...
...
...
...
E0
02h
-
-
R1
00h
I1
19h
E1
03h
-
-
R1
00h
I1
19h
...
...
...
...
...
...
...
...
I1
19h
-
-
I2
1Ah
I2
1Ah
...
...
...
...
...
...
...
...
I4
1Ch
-
-
R1
00h
R1
00h
– Entrées : code instruction...
Bilan : 5 fonctions logiques à 11 entrées.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
code
courant
Application à une machine de Moore synchrone :
entrees
Unité de commande
Unité de commande
–77–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
Fonction Etat Suivant
Etape 1 : codage des états : La solution la plus simple est de coder les états de la
Signaux de commande
machine à états par des codes binaires croissants en partant de R1.
A chaque état est associé des signaux de commandes à activer, par exemple pour
Etats de la MEF : R1, R2, E0, E1, E2, E3, E4, E5, E6, E7, E81, E82, E91, E92, EA,
EB1, EB2, EC, ED, EE1, EE2, EE3, EF1, EF2, EF3, I1, I2, I3. Soit 28 états. Il faut
R1 : RD=1, LR
donc 5 bits pour coder un état.
A partir de là, il faut déterminer l’expression logique de chaque signal de commande
= 1, LP C = 1, muxAD=0.
en fonction du code des états dans lesquels le signal apparaı̂t.
Etape 2 : On construit un tableau dont chaque ligne représente une transition de la
Par exemple, RD doit être activé dans les états : R1, E2, E4, E6, E92, EB2, EE2,
machine à état dans laquelle on code l’état suivant en fonction de l’état courant et
EE3, EF3 et I3 dont les codes respectifs sont : 0, 4, 6, 8, 13, 16, 20, 21, 24 et 27.
des entrées (code opératoire : c.o. et condition).
L’expression logique est écrite sous forme d’une somme de produits pour être
implémenté gràce à un réseau PLA.
Demande d’interruption : dans le cas d’une demande d’IT, l’état suivant dépend de
la prise en compte ou pas de la demande. Si une demande doit être prise en
compte, l’état suivant est R1 sinon, c’est I1.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–78–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
UPS
IUP SI - L3
Unité de commande
Unité de commande
Unité de commande micro-programmée
0
int.IE
➟ L’unité de commande peut être vue comme un interpréteur d’instructions qui, à
AdIT=19h
0
1
partir du code opération, ordonne une séquence de micro-instructions pour en
5
assurer l’exécution.
IR(15..12)
➟ Chaque instruction du processeur est vue comme un micro-programme, chaque
cond
➟ Le rôle d’une micro-instruction est d’activer certains signaux de commande pour
0
distributeur
activer un chemin de données. Les bits qui composent la micro-instruction sont
2
5
muPC
mux
IUP SI - L3
Unité de commande
UPS
ROM de commande
5
donc les signaux de commande du chemin de données.
–81–
+1
1
4
cycle correspondant à une micro-instruction de ce micro-programme.
Jean-Michel ENJALBERT - [email protected], 2005/2006
+
2
Signaux de commande
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
L’unité de commande peut-être réalisée au moyen d’une architecture semblable à
Fonctionnement
celle d’un processeur c’est à dire composée :
ROM de commande
– d’une mémoire qui stocke les micro-instructions.
– d’une micro-unité de commande (micro-séquenceur) qui lit les instructions
La mémoire de commande est constitué de mots (1 par micro-instruction)
successives d’un micro-programme.
possédant autant de bits que de signaux de commande plus deux bits de
– d’un registre micro-pointeur de programme (µPC).
commande du multiplexeur mux.
Les dispositifs devant être mis en oeuvre sont :
La première adresse contient le code (signaux de commande) de la
– un dispositif d’incrémentation de µPC
micro-instruction correspondant à l’état R1 (phase 1 de la recherche d’instruction).
– un dispositif de chargement de µPC avec l’adresse de début d’un
micro-programme
Reamarque : Les micros-instructions sont stockées à des adresses correspondant
– un dispositif de retour à la phase de recherche d’instruction (état R1) a la fin
au codage des états choisis pour la réalisation par PLA. Un autre choix aurait été
d’une instruction courante.
possible.
– la possibilité de se dérouter vers une procédure d’interruption
Jean-Michel ENJALBERT - [email protected], 2005/2006
–82–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
UPS
IUP SI - L3
Commande du multiplexeur mux :
Unité de commande
Schéma du distributeur
– La commande mux=0 permet, s’il n’y a pas d’interruption à prendre en compte
Adresse
(int.IE=0), de charger µPC avec l’adresse 0 et donc de démarrer une recherche
d’instruction. Si une interruption doit être traitée, µPC sera chargée avec
0
1
0 0 0 1 0
0 0 0 1 1
E
F
1 1 0 0 1
1 0 1 1 0
l’adresse de la micro-instruction correspondante (I1).
La dernière instruction de chaque micro-programme contiendra donc ce code de
commande de mux.
– La commande mux=1 incrémente µPC et permet donc de passer à la
micro-instruction suivante du micro-programme (par exemple de l’ état E91 à E92).
– La commande mux=2 va charger µPC avec l’adresse fourni par le distributeur qui
0
dépend des entrées c.o et cond. Cette adresse est celle du micro-programme
c.o.=7 et cond=0
correspondant à l’instruction à exécuter.
0
1
On retrouve cette commande dans la micro-instruction R2. Elle correspond au
5
décodage de l’instruction du processeur à exécuter.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
–85–
UPS
adresse
micro−programme
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Unité de commande
Distributeur
Le distributeur doit associer l’adresse d’un micro-programme (dans la ROM de
commande) à un code opération (c.o.) suivant la valeur de cond.
-
Il est réalisé à l’aide d’une ROM de 16 mots de 5 bits contenant les adresses des
micro-programmes.
A l’adresse correspondant à la valeur de c.o. est codée l’adresse du
micro-programme, l’entrée cond étant traitée grace a un multiplexeur.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–86–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
UPS
IUP SI - L3
Architecture de la mémoire
Architecture de la mémoire
Boı̂tier mémoire
Deux classes de mémoire :
Din
➟ Mémoire principale (où centrale) :
– reliée directement au processeur par un bus rapide
– capacité limitée : typiquement 1 Go
k
adresse
boitier
memoire
2k x m bits
– volatile
– accès aléatoire : temps d’accès indépendant l’adresse de stockage
➟ Mémoire secondaire (où de masse) :
m
CS
R/W
OE
– reliée au bus système par un processeur d’E/S
– supports magnétiques où optiques, capacité importante : plusieurs centaines
m
de Go.
– non-volatile
Dout
– accès séquentiel : accès par blocs
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
–89–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
Association de boı̂tiers (banque de mémoire)
Mémoire principale
Exemple : réalisation d’une banque mémoire de 2 Méga-mots de 16 bits à partir de
boı̂tiers de 1 Méga-mot de 4 bits :
➟ Mémoire vive (volatile) : RAM
Extension du nombre de mots
– statique
– dynamique
A0..A19
A0
...
A19
➟ Mémoire morte (non-volatile) : ROM
CS
D3..D0
– PROM
– EPROM
– EEPROM
A20..A31
12
– flash
Decodeur
d’adresse
CS1
CS2
A0
...
A19
CS
D3..D0
bus donnees
Jean-Michel ENJALBERT - [email protected], 2005/2006
–90–
Jean-Michel ENJALBERT - [email protected], 2005/2006
4
IUP SI - L3
UPS
Architecture de la mémoire
IUP SI - L3
Architecture de la mémoire
Exemple de micro-système
Association de boı̂tiers (suite)
Extension de la longueur des mots
A0..A19
A20..A31
12
Decodeur
d’adresse
A0
...
A0
...
A0
...
A19
A19
A19
CS
CS
D3..D0
CS
D3..D0
D3..D0
A0
.
A12
A13
A14
A15
Processeur
CS
D15..D12
D11..D8
D3..D0
R/W
bus donnees
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
–93–
UPS
8
D7..D0
8
D7..D0
D7..D0
13
A0
.
A12
3
13
RAM
EPROM
CS
CS
R/W
R
Decodeur
d’adresses
A0
.
A12
8
D7..D0
2
A0
A1
PIA
CS
R/W
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
Décodage d’adresse
L’adresse d’un mot-mémoire peut être décomposé en deux parties : l’adresse du
Décodage d’adresse
mot-mémoire dans le boitier et l’adresse localisant le boitier dans l’espace
adressable (poids forts de l’adresse).
➟ Décodage complet : on utilise toutes les lignes d’adresse pour réaliser la
fonction de sélection. Le boitier n’utilise que sa propre dimension dans l’espace
adressable.
➟ Décodage partiel : On n’utilise qu’un sous-ensemble des lignes d’adresse pour
0000
2000
EPROM
8000
A000
RAM
8Ko
8Ko
0000
EPROM
8000
RAM
C000
8Ko x 4
4Ko x 2
réaliser la fonction de sélection.
FFFC
FFFF
Si x lignes ne sont pas utilisées, le boitier occupe 2x fois sa dimension dans
l’espace adressable. On parle d’efffet de miroir. La même information est
disponible à partir d’adresses différents.
4o
Decodage complet
FFFF
4o x 4096
Decodage partiel
Le décodage partiel est facile à réaliser mais gaspille l’espace adressable. Il est
réservé aux micro-systèmes figés.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–94–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
UPS
IUP SI - L3
Hiérarchie de mémoires
Architecture de la mémoire
Taux de succès et taux d’échec
La mémoire cache est d’autant plus efficace que les défauts de cache sont rares.
➟ Mémoire secondaire
Soit h le taux de succès et n le rapport en nombre de cycles entre un accès à la
➟ Mémoire principale
mémoire principale et un accès au cache, la réduction du temps d’accès peut être
➟ Mémoire cache de niveau 2
évalué par la relation : R
➟ Mémoire cache de niveau 1
Exemple : Pour h
= n/(h + n(1 − h))
= 0, 95 et n = 50, on obtient R = 14, 5, soit un temps moyen
➟ Registres internes
d’accès divisé par 14,5.
Plus on descend dans la hiérarchie, plus la capacité mais aussi le temps d’accès
Les taux de succès élevés sont obtenus grace aux principes de localité spatiale et
temporelle.
diminuent.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
–97–
UPS
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
Localité spatiale et temporelle
Le principe de localité affirme que les informations auxquelles va accéder le
processeur ont une forte probabilité d’être localisées dans une fenêtre spatiale et
Mémoire cache
une fenêtre temporelle.
➟ Localité spatiale : A un instant donné le processeur fait référence à des objets
Lorsque le processeur doit accéder à une information, la recherche est effectuée
proches du dernier qu’il a utilisé : code séquentiel (sauf rupture de séquence),
d’abord dans la mémoire cache.
données consécutives : tableaux, structures
– Si l’information est présente, elle est fournie immédiatement au processeur
➟ Localité temporelle : En général, si un processeur à fait récemment référence à
– Sinon, il y a défaut de cache. La lecture doit se faire dans la mémoire principale
un objet, il va très probablement y faire à nouveau référence (structures
ce qui bloque le processeur pendant plusieurs cycles.
itératives).
C’est le gestionnaire de cache qui se charge de gérer celà. Pour le processeur,
cette gestion est transparente.
La localité spatiale suggère de copier des blocs de mots dans le cache plutôt que
des mots isolés.
La localité temporelle suggère de conserver pendant quelque temps dans le cache
les informations auxquelles on vient d’accéder.
Jean-Michel ENJALBERT - [email protected], 2005/2006
–98–
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
UPS
Architecture de la mémoire
IUP SI - L3
Architecture de la mémoire
Découpage de l’espace adressable
Quelle que soit l’organisation physique de la mémoire, on peut définir une
organisation purement logique et découper celle-ci de différentes manières.
Mémoire cache
➟ Bloc mémoire (ou ligne) : un bloc mémoire représente un nombre fixe de mots
mémoire. La mémoire est découpée en blocs et une adresse mémoire peut être
➟ totalement associative : solution la plus naturelle mais complexe à réaliser.
vue comme la concaténation de l’adresse d’un bloc et de l’adresse du mot
➟ à correspondance directe : simple à réaliser mais moins efficace.
mémoire dans le bloc.
➟ à plusieurs voies (hybride) : compromis entre l’efficacité de la technique
associative et la simplicité du cache à correspondance directe.
➟ Page mémoire : On peut regrouper les blocs pour définir une page mémoire de
la même manière que l’on regroupe des mots pour définir un bloc.
L’adresse d’un mot mémoire se décompose alors en un numéro de page , un
numéro de bloc et une position dans le bloc.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–101–
UPS
Architecture de la mémoire
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
Architecture de la mémoire
Mémoire associative
n−1
mot 0
0
Mémoire cache associative
Decodeur
presence
etat
n
donnee
mot 1
adresse
Encodeur
de
priorite
etiq[0]
etiq[1]
...
num. bloc
l
etiq[2^l−1]
k
adresse
R/W
wait
mot 2^k−1
bloc[0]
bloc[1]
...
l
bloc[2^l−1]
presence
logique de com.
l
adresse dans le bloc
mot
donnee
Jean-Michel ENJALBERT - [email protected], 2005/2006
–102–
Jean-Michel ENJALBERT - [email protected], 2005/2006
memoire
principale
IUP SI - L3
UPS
Architecture de la mémoire
Remplacement d’un bloc
Si le cache est plein et que le processeur à besoin d’un bloc qui n’est pas dans le
cache, il faut remplacer un des blocs du cache. Plusieurs politiques de
remplacement sont possibles :
➟ aléatoire : très rapide mais peut supprimer un bloc à accès fréquent.
➟ FIFO : on utilise une file circulaire. Simple à implémenter et relativement
efficace.
➟ LRU (Least Recently Used) :La ligne dont le dernier accès et le moins récent et
celle qui sera remplacée.
Implémentation pratique : un bit d’état A est mis à 1 chaque fois que le
processeur accède à un bloc. A intervalle régulier, tous les bits A sont remis à 0.
Le gestionnaire remplace le premier bloc dont le bit A est à 0.
Jean-Michel ENJALBERT - [email protected], 2005/2006
IUP SI - L3
–105–
UPS
Architecture de la mémoire
Mémoire cache à correspondance directe
adresse
etiq[0]
etiq[1]
...
num. bloc
l
etat
etiq[2^l−1]
num page
bloc[0]
bloc[1]
...
l
bloc[2^l−1]
presence
R/W
wait
memoire
principale
logique de com.
l
adresse dans le bloc
mot
donnee
Jean-Michel ENJALBERT - [email protected], 2005/2006
–106–

Documents pareils