Micro-architecture Micro-programme Performances
Architecture des ordinateurs
Cours 4
5 novembre 2012
Archi 1/22
Micro-architecture Micro-programme Performances
Micro-architecture
Archi 2/22
Micro-architecture Micro-programme Performances
Intro
Comment assembler les differents circuits vus dans lescours precedents pour fabriquer un processeur ?
Comment interagir avec la memoire ?
L’UAL est en quelque sorte le cerveau de la machine.Comment peut-on la commander ? Quel langage utilise-t-onpour communiquer avec l’UAL ?
Comment de simples operations realisables par l’UALpeuvent-elles aboutir a un programme ?
Il n’y a pas de reponse universelle, pas de modeled’architecture. Pour chaque micro-processeur, des choix sontfaits, en essayant d’equilibrer le cout et les performances.
Dans ce cours : exemple theorique d’architecture, versionsimplifiee de celle presentee dans le livre d’A. Tanenbaum.
Archi 3/22
Micro-architecture Micro-programme Performances
Chemin des donnees : le role central des registres
Comment les differents elements present dans le processeurinteragissent-ils ?
UAL
Mémoireprincipale
UC
Unité de Commande
REGISTRES1
3
2
1 l’UC active certains registres pour :- lire en memoire- ecrire en memoire- transferer des donnees vers l’UAL- transferer des donnees depuis l’UAL
2 l’UC commande l’action de l’UAL
3 l’etat des registres permet de choisirla prochaine commande
De facon indirecte (par les registres) :
La memoire, l’UAL influent sur l’UC.
L’UC influe sur la memoire.
Archi 4/22
Micro-architecture Micro-programme Performances
Au niveau des registres
Bus C
Bus BBus A
RT
REGISTRESRAM
RAP
autre registre
RDM
mém
oire
pric
ipal
e
RDP
UAL
Les registres sont specialises, afind’aiguiller les informations entre lesdifferents composants :
RAM : Registre d’Adresses Memoire
RDM : Registre de Donnees Memoire
RAP : Registre d’Adresses de Prog.
RDP : Registre de Donnees de Prog.
RT : Registre Tampon
autres registres :- SP (adresse du sommet de la pile),- BP (adresse de la base de la pile),- registres de calcul,- ...
Archi 5/22
Micro-architecture Micro-programme Performances
Micro-architecture simple
Bus C
Bus BBus A
FLAGS
DEC
Compteur ordinal
UAL
Registre tampon
REGISTRES
Mémoireprincipale
Mémoire de commandes(microprogramme)
2 micro-instructionsn
n lignes
registres
lire, écrire
n lignes
registre de micro-instruction
Archi 6/22
Micro-architecture Micro-programme Performances
Boucle d’execution des micro-instructions
Boucle CHARGEMENT - DECODAGE - EXECUTION
Tant que VRAI (le processeur est alimente) faire :
1 Recuperer la micro-instruction courante en memoire et laplacer dans le registre de micro-instruction.
2 Modifier la valeur du compteur ordinal pour qu’il pointevers l’adresse de la prochaine micro-instruction.
3 Si besoin, localiser un mot (donnee/prog.) en memoireprincipale (charger le registre d’adresse).
4 Si besoin, charger le mot memoire dans un registre dedonnees.
5 Executer la micro-instruction.
Fin Tant que
Archi 7/22
Micro-architecture Micro-programme Performances
Micro-programme
Archi 8/22
Micro-architecture Micro-programme Performances
Microcode
Micro-instruction : mot binaire codant des signaux de commande :
10 1011001 0110111110 10 10 signaux de commande des registres et de la mémoire
signaux de commande de l'UAL
choix de la micro-inst. suivante
Micro-code : suite de micro-instructions stockees en memoire ROM
Instruction : (couche ISA) : bloc de micro-instructions realisantune “operation simple”
Exemples d’instructions :
instructions de deplacement : MOV, XCHG
manipulation de la pile : PUSH et POP
instructions arithmetiques et logiques : ADD, SUB, AND, OR et NOT
sauts et boucles : JUMP, Jxx, LOOPxx
appels de fonctions : CALL et RET
Archi 9/22
Micro-architecture Micro-programme Performances
Problemes de gestion de l’espace memoire
Probleme n◦1 Calculer ((1 + 2)× (3 + 4)) + ((5 + 6)× (7 + 8))en memorisant les calculs intermediaires.
Combien faut-il de registres dans ce cas la ?
Quel est le nombre maximal de registres utilises dans un calcul ?
Probleme n◦2 Stocker les variables locales des fonctions.
Ou sont conservees les variables locales des fonctions ?
Solution simple : attribuer a toutes les variables des adresses fixesdifferentes.
Probleme : que se passe-t-il si une fonction en appelle une autreou s’appelle elle-meme ?
Archi 10/22
Micro-architecture Micro-programme Performances
Solution : la Pile
la pile = espace de stockage situe en memoire principale.
taille variable
acces par le sommet
localisation en memoire :- adresse du fond de la pile- pointeur vers le sommet- adresses contigues
LIFO : Last In First Out
Operations :- PUSH (ajout)- POP (retrait)
ciseauxfraise
5WESTERN0xFF9A3.1415...
fond dela pile premier élément
ajouté
élément ajoutéen derniersommet
de la pile
Ajout d'un élément
ciseauxfraise
5WESTERN0xFF9A3.1415...
"technique"Suppression d'un élément
ciseauxfraise
5WESTERN0xFF9A
Archi 11/22
Micro-architecture Micro-programme Performances
Pile d’operandes
Calcul de ((1 + 2)× (3 + 4)) + ((5 + 6)× (7 + 8))
1 1 32
3 33
334
721
2156
2111
215
21117
211178
211115
21165
186
Archi 12/22
Micro-architecture Micro-programme Performances
Pile = bloc de variables locales
void fonctionA (void){ int a1, a2; ... fonctionB(0);}
void fonctionB (int i){ int b1, b2, b3; ... fonctionC(i);}
void fonctionC (int j){ int c1, c2; ... if (j==0) fonctionB(j+1);}
a1
a2
b1
b2
b3
a1
a2
c1
c2
b1
b2
b3
a1
a2
c1
c2
b1
b2
b3
c1
c2
b1
b2
b3
a1
a2
b1
b2
b3
c1
c2
b1
b2
b3
a1
a2
c1
c2
b1
b2
b3
a1
a2
b1
b2
b3
a1
a2
a1
a2
c1
c2
b1
b2
c1
c2
b1
b2
b3
a1
a2
b2
BP
SP
int main(int argc, char *argv[]){ fonctionA(); fonctionC(1); return 0;}
Archi 13/22
Micro-architecture Micro-programme Performances
Exemple d’instruction arithmetique : ADD
Role : “retirer” les deux elements au sommet de la pile, lesadditionner et placer le resultat au sommet de la pile.
1ere etape : recuperer les mots au sommets de la pile.
placer l’adresse du sommet de la pile (contenue dans leregistre SP) dans RAM ;
lire dans RDM le sommet de la pile et le placer dans RT ;
calculer l’adresse du mot juste “en dessous” du sommet de lapile et la placer dans RAM ainsi que dans le registre SP(supprime le 1er mot a additionner).
2eme etape : calculer la somme et la placer au sommet de la pile.
lire en memoire le mot pointe par RAM (place dans RDM) ;additionner RDM et RT ; mettre le resultat dans RDM ;
ecrire en memoire le contenu de RDM a l’adresse contenuedans RAM (a la place du second mot a additionner).
Archi 14/22
Micro-architecture Micro-programme Performances
Exemple d’operation sur la pile : PUSH num var
Role : mettre la variable locale num var au sommet de la pile(num var est dans le registre de donnees de programme RDP).
1ere etape : recuperer la variable locale designee par num var.
placer l’adresse du fond de la pile (gardee dans leregistre BP) dans le registre tampon RT ;
calculer l’adresse de la variable locale RT + RDP et mettrele resultat dans le registre d’adresse memoire RAM ;
lire la valeur de la variable locale dans le registre de donneesmemoire RDM ;
2eme etape : placer la variable locale au sommet de la pile.
calculer l’adresse du nouveau sommet de la pile et la placerdans RAM ainsi que dans le registre SP ;
ecrire en memoire le contenu de RDM a l’adresse pointee parle registre RAM.
Archi 15/22
Micro-architecture Micro-programme Performances
Appels de fonctions (CALL et RET)
BP
SP
paramA1
paramA2
varA1
varA2
pile .d'opérandesde fc_A y
paramA1
paramA2
varA1
varA2
pile .d'opérandesde fc_A y
BP
adresse courante de BP
paramB1
paramB2SP
paramA1
paramA2
varA1
varA2
pile .d'opérandes
BPancienne
adresse de BP
paramB1
paramB2
SP
varB1
varB2
pile .d'opérandesde fc_B y
BP
SP
paramA1
paramA2
varA1
varA2
pile .d'opérandesde fc_A y
1 fc_A (int paramA1, int param A2){2 int varA1, varA2; ...3 varA2 = varA1 + fc_B(1,2); ... }
4 int fc_B (int paramB1, int param B2){5 int varB1, varB2; ...6 return ...; }
état de la pile avant la ligne 3
état de la pile avant d'entrerdans fc_B
état de la pile dans fc_B
état de la pile au retour de fc_B
résultat de fc_B(1,2)
Archi 16/22
Micro-architecture Micro-programme Performances
Performances
Archi 17/22
Micro-architecture Micro-programme Performances
Comment ameliorer l’architecture ?
Lors de la conception d’une micro-architecture, plusieursparametres entre en consideration, notamment :
la rapidite
le cout
⇒ Trouver des compromis :par exemple, rajouter desregistres pour accederrapidement a plus dedonnees, mais pas trop carles registres coutent tres cher.
Exple : la memoire cache
Bus B
Bus C
Bus A
UAL
REGISTRES
autre exemple : rajout d’unbus A complet.
Archi 18/22
Micro-architecture Micro-programme Performances
Memoire cache : principe
En pratique, les acces a la memoire principale sont tres lents ;plusieurs cycles d’horloge sont souvent necessaires pour lesoperations en memoire.
Solution : rapprocher les donnees les plus souvent utilisees !
Principe de localite : a tout instant, un programme accede a unepetite partie de son espace d’adressage ; 2 types de localite :
Temporelle : Si un mot a ete utilise recemment, il a plusde chances d’etre reutilise (exemple : boucles) ;
Spatiale : Si un mot a ete utilise recemment, les mots avecdes adresses voisines ont plus de chances d’etre utilises(exemple : pile, tableaux) ;
Idee : on place dans le cache (memoire proche du processeur) :B Les donnees les plus recemment adressees ;B Les donnees en blocs (lignes de cache).
Archi 19/22
Micro-architecture Micro-programme Performances
Hierarchie des caches
cache
Processeur Mémoireprincipale
Cache unique
Caches séparés
cache de niveau 2
Mémoireprincipale
Processeur
L1 L1
cache de niveau 3
Carte mère
Boîtier processeur
Archi 20/22
Micro-architecture Micro-programme Performances
Cache direct
ligne de cache = 32 octets (en general, entre 4 et 64), soit 8 mots.
a chaque ligne on associe, 1 bit valide et un indicateur de 16 bitsqui identifie les adresses memoire correspondant a cette ligne.
adresse memoire ⇔ adresse virtuelle
indicateur ligne mot octet
1 seul emplacement possible dans le cache pour un mot donne !0-31, 65536-65567, 131072-131103, ... 32-63, 65568-65599, 131104-131135, ... ...
65404-65535, 131040-131071, ...
| | | | | | || | | | | | || | | | | | |
| | | | | | |
valide? indicateur ligne de 8 mots adresses correspondantes
2048
lign
es d
e ca
che
1 trouver la ligne de cache,2 verifier si elle est valide,3 verifier l’indicateur ; en cas d’echec, remplacement de la ligne.
Archi 21/22
Micro-architecture Micro-programme Performances
Cache associatif
1ère entrée 2ème entrée 3ème entrée 4ème entrée
Chaque entree du cache contient plusieurs blocs memoire(ici 4) en meme temps.
Besoin d’un algorithme pour choisir la page a effacer si unepage est manquante : LRU (Least Recently Used).
Compromis entre le nombre d’entrees et la complexite del’algorithme.
Rmq : A quel moment faire la mise a jour en memoire ?
Archi 22/22