Cours Archi 4
Cours Archi 4
Cours Archi 4
➽ Exemple d’architecture – Unité de commande : Automate qui envoie les ordres aux registres, aux unit és de
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
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 : registres de n bits constitués de la concaténation de n bascules.
Processeur Memoire Interfaces E/S Une mémoire est un vecteur de registres, chacun étant repéré par une adresse
(équivalente à l’indice d’un tableau).
bus Adresse
Memoire Donnees
RD
– Processeur (CPU) : coeur de l’ordinateur. C’est lui qui traite les informations. WR
– Mémoire : stocke les instructions et les données des programmes.
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.
Entrées-Sorties
Caractéristiques d’un processeur
– Unités d’entrée : Clavier, souris, scanner, convertisseur analogique/digital, etc...
– Unités de sortie : Ecran, imprimante, convertisseur numérique/analogique, etc... – nombre de bits de l’Unité Arithmétique et Logique
– Unités d’entrée/sortie : Transferts d’information de et vers l’ordinateur. Mémoires – dimension de l’espace adressable
de masse ou secondaires : disquettes, CD-ROM, DVD, clefs USB, etc... – fréquence de fonctionnement (nombre de cycles par seconde)
Unite
– jeu d’instructions
Unite Unite
d’E/S d’E/S d’E/S
– architecture interne
bus peripherique
– puissance en Mips (Millions d’instructions par seconde) et en Mflops (Millions
d’opérations flottantes par seconde)
Interfaces E/S
Types de processeurs
Processeur Memoire
(controleurs)
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é.
abstraction des niveaux inférieurs.
Codage des informations Codage des entiers relatifs (signés) sur n bits
– 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
X
n−2
instructions d’un programme à une forme exploitable par l’ordinateur. S(A) = (−1)an−1 ai 2i
– L’objet de taille minimale accessible est un octet (byte en anglais) soit 8 bits. 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 X
n−2
– 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 X
n−1
χe (A) = ai 2i − e
(non-signés), d’entiers relatifs ou de réels. i=0
Soit A = an−1 an−2 ...a1 a0 un code binaire, la valeur décimale N (A) de l’entier X
n−2
Φm (A) = −an−1 2 n−1−m
+ ai 2i−m = 2−m Z(A)
naturel représenté par A peut être calculé par :
i=0
X
n−1
N (A) = ai 2i Exemple : Soit A=3E20h représentant un réel codé sur 16 bits avec m =7:
i=0
Φ7 (A) = 124, 25
Exemple : le code 0101 0111b (en hexadécimal : 57h) représente l’entier 87 codé
sur 8 bits.
forme : m = 1, f . Seule la partie fractionnaire f est codée et ceci sur 23 bits 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
(Φ23 (F )).
0x70 p q r s t u v w x y z { — } ˜
– L’exposant est codée sur 8 bits par excédent 127.
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
– Instructions de contrôle d’exécution. ➯ Le passage d’un chiffre à son code ASCII consiste à rajouter $30 à ce chiffre.
– Format : dépend du type d’instruction. Exemples :
Quelques caractères de contrôles :
– traitement :
NUL absence de caractère SOH début d’entète STX début de texte
code opération adresse 1er opérande adresse 2ème opérande adresse résultat
ETX fin de texte EOT fin de transmission ENQ interrogation
– chargement/rangement :
ACQ accusé réception BEL sonnette BS retour arrière
code opération adresse registre adresse mot en mémoire HT tabulation horizontale LF ligne suivante VT tabulation verticale
– contrôle : FF page suivante CR retour chariot NAK reçu avec erreur
code opération code condition adresse de branchement 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
f
m UAL p ....... si = a i ⊕ b i ⊕ r i ri+1 = ai .bi + ((ai ⊕ bi ).ri )
indicateurs
– Additionneur n bits à propagation de retenue :
n a n−1 bn−1 a 1 b1 a 0 b0
S rn rn−1 r2 r1 r0
add add add
C’est un circuit combinatoire qui produit un résultat (S) sur n bits fonction des
s s1 s0
données présentes sur ses entrées (E1 et E2) et de la fonction à réaliser (f) et met à
jour des indicateurs.
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 = 0 (pas de retenue).
Elle met par ailleurs à jour des indicateurs en fonction du résultat de l’opération
Soit le bit C (Carry) du registre de condition égal à 0 (C=rn ).
effectuée :
– Addition d’entiers codés sur k × n bits (précision multiple).
– Z : indicateur mis à 1 si le résultat de l’opération est 0. 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é.
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
Z(X) = N (X) − 2 xn−1 n
d’opérateurs logiques 1 bit :
– Soit A et B les codes des nombres Z(A) et Z(B) et S le code du résultat tel ai
que Z(S) = Z(A) + Z(B). On montre que le résultat de Z(A) + Z(B) est bi
le même que le résultat de N (A) + N (B) si
V = rn−1 ⊕ rn = 0
– L’addition d’entiers relatifs est donc identique à celle d’entiers naturels. La seule
f 0 1 2 3
chose qui change, c’est l’indicateur qui permet de savoir si le r ésultat est exact (C
si
en non-signé, V en signé).
La commande f du multiplexeur permet de sélectionner l’opération à effectuer.
Soustraction
– Entiers naturels : Opérations de décalage
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
ne pas être décalé (f = 0), ou être décalé d’un bit vers la droite (f = 1) ou vers la
celui de la soustraction si r n = 1. Dans ce cas, on calcule C = r¯n .
gauche (f = 2).
– Entiers relatifs :
s n−1 s1 s0
Z(B̃) = −Z(B) d’ou : Z(A) − Z(B) = Z(A) + Z(B̃). Le résultat est s2
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 0 1 2 0 1 2 0 1 2
– Prendre le complément à 2 de B
dn−1 d1 d0
– l’ajouter à A
– Vérifier le résultat : C=0 en contexte non-signé, V=0 en contexte signé
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 s1
– Machine de Moore : la fonction de sortie ne dépend que de l’état courant.
Chemins de données
Mémoire
– Registre : Elément de base constitué de n bascules de type D. Permet de Donnee
LR R WR RD
S n
L Rs Rs
n
L Rd Rd
n
Adresse
Decodage
L’activation du signal LRd provoque la copie de la donnée du registre Rs dans le
registre Rd , opération notée : Rd ← Rs .
Différentes Architectures
– Choix pour le stockage transitoire des données : Von Neumann vs Harvard
– accumulateurs (registres spécialisés) Architecture de Von Neumann
– pile bus donnees
– pas de stockage
bus adresses
– Sources de données pour l’UAL :
– registres/mémoire Architecture de Harvard
– registres/registres instructions donnees
– mémoire/mémoire memoire
CPU
memoire
instructions donnees
WRF D in
Jeu d’instructions j
Le jeu d’instructions que l’on veut fournir au processeur est divis é en 4 familles : R[0] 0
16
1. Instructions de traitement : opérations arithmétiques et logiques effectuées par R[1] Yj
l’UAL entre registres (pas d’opérations directement avec la mémoire) 15
Decodage
2. Instructions de chargement/rangement : instructions permettant des transferts
0
registre/registre et registre/mémoire. 16
Yi
3. Instructions de branchement : branchements conditionnels et inconditionnel.
R[15] 15
4. Instructions pour la programmation modulaire : gestion de la pile syst ème, 4
i
sous-programmes et interruptions.
Banque de registres
DBUS
16
Registres
Memoire
E1 E2
4
f
S
Z N V C
I
-
LPC
12
L IR LPC
WR PC ABUS
Unite RD
de
Commande SP
16
WR RD
IR
+1
+
H 12
L IR Processeur V.1
4 D in
j
16 Yj
Les instructions de traitement sont effectuées par l’Unité Arithmétique et Logique. Registres
Ce sont des opérations du type : R[i] ← f (R[i], R[j]) codées sur 16 bits suivant 16 Yi Memoire
4
i
le format (appelé format a) : 4 E1 E2
4
f
S
c.o. c.c.o i j
LPC
12
– c.o : code opératoire. Egal à 0 pour toutes les instructions de traitement L IR
WR
LPC
PC ABUS
Unite RD
(instruction générique). de i
j LSP
Commande SP
Transferts de données
– Opérations de l’UAL : registres → registres
Modifications de l’architecture
– 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].
celà le multiplexeur muxAd.
– 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] Ceci conduit à la version 3 de notre processeur.
– Adressage immédiat : R[i] ← valeur
4 E1 E2
4
15...12 11...8 7...4 3...0 f
S
c: c.o. 0 i 0 Z N V C EUAL
LI
valeur 5
2
Jeu d’instructions
IR(11..0)
LPC 1
12
L IR LPC
WR PC 0 ABUS
Unite
format c.o. mnémonique fonction RD
de i
j LSP SP
a 1 move Ri,Rj R[i] ← R[j] Commande f
muxAd
EUAL
b 2 load adresse R[0] ← M [adresse] LI
16
WRF WR RD
b 3 store adresse M [adresse] ← R[0] IR muxAd
E Ri
a 4 load Ri,[Rj] R[i] ← M [R[j]] E Rj
+1
E1 : R[i] ← R[j] R2
R[i]<−f(R[i],R[j])
– On sélectionne R[j] et on le relie à DBUS : j=IR(3..0), ERj
=1 E0
c.o.=0
H
– On sélectionne R[i] et on copie DBUS dedans : i=IR(7..4), WRF = 1 H
R[i]<−R[j]
E1
E2 : R[0] ← M [adresse] c.o=1
– On sélectionne R[j] et on le connecte à ABUS : j=IR(3..0), muxAd=2 – E3 : muxAd=1, i=0, ERi = 1, WR=1
– On effectue l’écriture en mémoire (M [ABU S] ← DBU S ) : WR=1 – E4 : j=IR(3..0), muxAd=2, RD=1, i=IR(7..4), WRF = 1
– PC est connecté à ABUS, on connecte M[PC] à DBUS : muxAd=0, RD=1 – E6 : muxAd=0, RD=1, i=IR(7..4), WRF = 1, LP C = 1
Modifications de l’architecture
Format d’instruction :
L’instruction de branchement (instruction générique) peut être exécuté de la manière
15...12 11...9 8...0
format c :
c.o. c.c.o deplacement 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 :
c.o. c.c.o. mnémonique condition c.c.o.=IR(9..11)
Calcul condition
7 0 bra deplacement 1
7 1 bns deplacement N
7 2 bvs deplacement V condition
7 3 beq deplacement Z Ce calcul est fait dans l’unité de commande.
7 4 blo deplacement C
– On rajoute la possibilité d’additionner PC avec les bits 0..9 de IR (déplacement) :
7 5 blt deplacement N⊕V
7 6 bls deplacement C+Z
c’est le rôle du multiplexeur mux1.
7 7 ble deplacement Z +(N ⊕ V) – Le déplacement étant un entier relatif sur 9 bits, on doit l’étendre à 12 bits pour
conserver l’information de signe (circuit EXT).
16 DBUS
Programmation modulaire
WRF 16
E Ri E Rj
j
4 D in Sous-programmes, fonctions.
16 Yj
Registres
Principe : Interrompre le programme en cours pour exécuter un sous-programme
Memoire
puis revenir au programme en cours (programme appelant).
16 Yi
4
i
4 E1 E2
4 Instruction
f
S
Sous−Programme
Z N V C EUAL
LI jsr
5
2
IR(11..0)
LPC 1
12
L IR LPC
WR PC 0 ABUS
Unite RD rts
de i
j LSP SP
Commande f Programme
muxAd appelant
EUAL
LI IR(8..0)
16
WRF WR RD
IR
Nécessite de stocker l’adresse de retour.
EXT
muxAd +1
E Ri
E Rj 0 1 mux1
mux1
Registre spécialisé : un seul niveau de sous-progamme possible.
+
H
L IR 12
Processeur V.4 ➱ Utilisation d’une structure de données de type pile
Analyse de l’instruction
Si condition=1, l’exécution de l’instruction peut être représentée, en notation RTL, Pile système
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.
R1
Implémentation de la pile : adresses hautes (Ex : FFFh) et empilage vers les
H IR<−M[PC], PC<− PC+1
adresses basses.
R2
R[i]<−f(R[i],R[j])
c.o.=0 E0 ...
H
H FFD SP
FFE SP valeur 2 SP
FFF valeur 1 valeur 1 valeur 1
E7
PC<−PC+deplacement empilage depilage
c.o=7
condition=1
c.o.=7 et condition=0
16 DBUS
WRF 16
E Ri E Rj E PC
4 E1 E2
4
15...12 11...0 f
S
b: c.o. adresse Z N V C
LI EUAL
5
2
Interruptions matérielles
Analyse des instructions (2)
– 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.
– Sélectionner R[i] : i=IR(7..4), et le connecter à DBUS : ERi = 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,
– Elle se matérialise sur notre processeur par l’activation d’une ligne reli é à l’unité
– décrémenter SP : mux1=2, mux2=1, LSP = 1.
de commande du processeur (ligne int).
pop Ri : Pour réaliser R[i] ← M [SP ] il faut :
– Le sous programme à exécuter est localisée à une adresse fixée par le
– incrémenter SP : mux1=0, mux2=1, LSP = 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,
(retour vers l’état R1).
– sélectionner R[i] et charger DBUS dedans : i=IR(7..4), WRF =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.
Machine à états
Masque d’interruptions
R1
– Le départ en interruption consiste à charger le pointeur de programme PC avec
H IR<−M[PC], PC<− PC+1
l’adresse du sous programme d’interruption après la fin d’une instruction et avant
R2 le retour à l’état R1 (recherche de la prochaine instruction).
R[i]<−f(R[i],R[j])
c.o.=0
E0
H – 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
d’IT. C’est le rôle de l’indicateur IE.
M[SP]<−PC, SP<−SP−1 PC<−adresse
jsr
c.o=8 E81 E82
– Si IE=1 et int=1, on se déroute vers le SP d’IT et on met IE à 0.
SP<−SP+1 PC<−M[SP]
c.o=9 E91 E92
rts
Sinon (IE=0 ou int=0), on traite les instructions normalement.
EA
M[SP]<−R[i], SP<−SP−1 push – A la fin du SP d’IT, on remet à 1 l’indicateur IE pour pouvoir traiter la prochaine
c.o=A
Modification de l’architecture
Instructions supplémentaires
– on rajoute la ligne d’entrée int
format c.o. mnémonique fonction
– on rajoute le bit IE au registre d’indicateurs I. Ce bit peut être mis à 1 (signal SIE)
a C sei Autorisation interruptions
où à 0 (signal CIE) a D cli Interdiction interruptions
– on connecte le registre I au bus de données en lecture et écriture : rajout du a E rti retour d’interruption
16 DBUS
Machine à états
WRF 16
E Ri E Rj E PC
PC<−addIT I<−M[SP] PC<−M[SP]
j
4 D in IE<−0 SP<−SP−1
16 Yj
I3 I2 SP<−SP−1 I1
Registres
int=1 et IE=1
Yi Memoire
16 int=0 ou IE=0
4
i
R1
4 E1 E2
4
muxI f
1 0
S H
IR<−M[PC], PC<− PC+1
IE Z N V C AddIT
LI EUAL 4
5
2 R2
EI C IE
mux3
IR(11..0) R[i]<−f(R[i],R[j])
LPC 0 1 1
12 E0
L IR LPC c.o.=0
S IE
WR PC 0 ABUS H
Unite RD
H
de i 3
j LSP SP
Commande f
E IR muxAd
EUAL IE<−1
LI IR(8..0)
16 EC
WRF WR RD c.o=C
IR muxAd +1
EXT
−1
E Ri IE<−0
E Rj mux1
mux2 0 1 0 1 2
ED
mux1 c.o=D
mux2 I<−M[SP]
E IR mux3 SP<−SP+1 SP<−SP+1 PC<−M[SP]
H E PC
+
EE1 EE2 EE3
12 c.o=E
L IR
int
muxI
EI
Processeur V.6
Interruptions logicielles
– Une interruption logicielle est une interruption provoquée par le programmeur
(instruction trap). On parle aussi de “trappe logicielle”. Synthèse de l’unité de commande
– 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.
f1
R2
f2
M[SP]<−PC M[SP]<−I
SP<−SP−1 SP<−SP−1 PC<−adresse
f 1 = a.b + a.b + a.c
EF1 EF2 EF3
c.o=F
f 2 = a.b.c + a.b + a.c
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
Demande d’interruption : dans le cas d’une demande d’IT, l’état suivant dépend de implémenté gràce à un réseau PLA.
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.
Unité de commande
Unité de commande micro-programmée 0 AdIT=19h
➟ L’unité de commande peut être vue comme un interpréteur d’instructions qui, à int.IE 0 1
+1
partir du code opération, ordonne une séquence de micro-instructions pour en +
5
assurer l’exécution.
➟ Chaque instruction du processeur est vue comme un micro-programme, chaque IR(15..12) cond
4 1
cycle correspondant à une micro-instruction de ce micro-programme.
0 ROM de commande
5
➟ Le rôle d’une micro-instruction est d’activer certains signaux de commande pour
distributeur 2
activer un chemin de données. Les bits qui composent la micro-instruction sont 5
muPC
donc les signaux de commande du chemin de données.
mux 2
Signaux de commande
– un dispositif de chargement de µPC avec l’adresse de début d’un micro-instruction correspondant à l’état R1 (phase 1 de la recherche d’instruction).
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.
Architecture de la mémoire
Deux classes de mémoire : Boı̂tier mémoire
Din
➟ Mémoire principale (où centrale) : m
– reliée directement au processeur par un bus rapide
k
– capacité limitée : typiquement 1 Go adresse
boitier
– volatile
memoire
– accès aléatoire : temps d’accès indépendant l’adresse de stockage
2k x m bits
➟ Mémoire secondaire (où de masse) : CS
– reliée au bus système par un processeur d’E/S R/W
OE
– supports magnétiques où optiques, capacité importante : plusieurs centaines
de Go. m
– non-volatile Dout
– accès séquentiel : accès par blocs
– PROM
– EPROM A0
Decodeur CS1 ...
12
CS2
– flash
CS
D3..D0
bus donnees 4
Décodage d’adresse
L’adresse d’un mot-mémoire peut être décomposé en deux parties : l’adresse du
mot-mémoire dans le boitier et l’adresse localisant le boitier dans l’espace Décodage d’adresse
adressable (poids forts de l’adresse). 0000 EPROM 8Ko 0000 EPROM
2000 8Ko x 4
➟ 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
8000 RAM 8000 RAM
adressable. A000 8Ko 4Ko x 2
➟ Décodage partiel : On n’utilise qu’un sous-ensemble des lignes d’adresse pour C000
réaliser la fonction de sélection.
Si x lignes ne sont pas utilisées, le boitier occupe 2x fois sa dimension dans FFFC
FFFF 4o FFFF 4o x 4096
l’espace adressable. On parle d’efffet de miroir. La même information est
disponible à partir d’adresses différents. Decodage complet 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.
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
diminuent. temporelle.
Lorsque le processeur doit accéder à une information, la recherche est effectuée ➟ Localité spatiale : A un instant donné le processeur fait référence à des objets
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
– Sinon, il y a défaut de cache. La lecture doit se faire dans la mémoire principale ➟ Localité temporelle : En général, si un processeur à fait récemment référence à
ce qui bloque le processeur pendant plusieurs cycles. un objet, il va très probablement y faire à nouveau référence (structures
C’est le gestionnaire de cache qui se charge de gérer celà. Pour le processeur, itératives).
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.
Mémoire associative
n−1 0
Mémoire cache associative
Decodeur presence
mot 0
n etat
etiq[0] bloc[0]
donnee num. bloc
adresse etiq[1] l bloc[1] memoire
mot 1 l ... ...
Encodeur principale
de
etiq[2^l−1] bloc[2^l−1]
priorite presence
adresse R/W
logique de com.
k wait
l
mot
mot 2^k−1 adresse dans le bloc
donnee
➟ 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.