d. defour, b. goossens, d. parello a quoi servent les registres? d. defour, b. goossens et d....

41
D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Upload: eveline-dos-santos

Post on 03-Apr-2015

111 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

A quoi servent les registres?

D. Defour, B. Goossens et D. Parello

Page 2: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Plan de l'exposé

● Parallélisme dans le code source.● Code machine et IPC.● Renommage et IPC.● Chargement/rangement et calcul.● Pourquoi des registres?● Un processeur sans registre.

D. Defour, B. Goossens, D. Parello

Page 3: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Parallélisme dans le code source

void saxpy( float x[], float y[], float a, uint n) { uint i; for (i=0; i<n; i++) y[i] += x[i]*a;}

Le nombre d'Instructions exécutées Par Cycle estborné par le nombre d'opérateurs du processeur.

n calculs indépendants.2 lectures, puis 1 produit, puis 1 sommepuis 1 écriture, le tout n fois.

D. Defour, B. Goossens, D. Parello

Page 4: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Code machine d'architecture RISC

saxpy: // x dans R1, y dans R2, a dans F1, n dans R3 CLR R8 // i=0 CMP R9, R8, R3 // i==n BEQ R9, fin // if (i==n) returne: FLD F2, R1(R8) // F2=x[i] FMUL F3, F2, F1 // F3=a*x[i] FLD F4, R2(R8) // F4=y[i] FADD F5, F4, F3 // F5=y[i]+a*x[i] FST F5, R2(R8) // y[i]+=a*x[i] ADD R8, R8, 1 // i++ CMP R9, R8, R3 // i!=n BNE R9, e // if (i!=n) goto efin: RET

D. Defour, B. Goossens, D. Parello

Page 5: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Caractéristiques du code machine RISC

Les données en mémoire sont chargées enregistre (chargement).

Les sources et la destination de tout calculsont des registres.

Les résultats à conserver sont écrits en mémoire(rangement).

D. Defour, B. Goossens, D. Parello

Page 6: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Quelles différences entre source et assembleur?

L'indépendance des calculs a disparu.

La (i)ème itération dépend de la (i-1)ème par le calculde i et parce qu'elles emploient les mêmes registres.

La dépendance sur i séquentialise le lancementdes itérations au rythme du délai de l'additionneur.

La dépendance sur les registres séquentialise lesopérations au rythme des délais des opérateurs.

D. Defour, B. Goossens, D. Parello

Page 7: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

La dépendance sur i séquentialise le lancementdes itérations au rythme du délai de l'additionneur.

On ne peut démarrer les chargements de x[i] etde y[i], amorces de la chaîne des calculs du tour i,qu'une fois que i est établi, donc au plus tôt quandla valeur incrémentée de R8 sort de l'additionneur.

Si l'additionneur a une latence d'1 cycle, on peutdémarrer au plus une itération par cycle. L'IPCest borné par le nombre d'instructions par itération(dérouler la boucle pour augmenter l'IPC).

D. Defour, B. Goossens, D. Parello

Page 8: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

La dépendance sur les registres séquentialise lesopérations au rythme des délais des opérateurs.

Le chargement de x[i] dans F2 ne peut se fairequ'une fois que F2 est libre, c'est-à-dire quandl'instruction FMUL du tour i-1 a lu F2, doncquand x[i-1] a été chargé.

Le chargement de x[i] ne commence qu'une foisque le chargement de x[i-1] est achevé.

D. Defour, B. Goossens, D. Parello

Page 9: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Le produit a*x[i] dans F5 ne peut commencerqu'une fois que le produit a*x[i-1] a été lu parl'instruction FADD du tour i-1.

La dépendance sur les registres séquentialise lesopérations au rythme des délais des opérateurs.

D. Defour, B. Goossens, D. Parello

Page 10: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

(1) e: FLD F2, R1(R8)(2) FMUL F3, F2, F1(3) FLD F4, R2(R8)(4) FADD F5, F4, F3(5) FST F5, R2(R8)(6) ADD R8, R8, 1(7) CMP R9, R8, R3(8) BNE R9, e

LatencesFLD: 2FST: 2FMUL: 4FADD: 3ADD: 1CMP: 1BNE: 1

13, -, 2, -, -, -, 4, -, -, 5, 6, 7, 813, -, 2, -, -, -, 4, -, -, 5

IPC <= 8/11 (0,73)

D. Defour, B. Goossens, D. Parello

Page 11: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

L'effet des registres

En mappant l'espace des variables du programmesur l'espace des registres du processeur, on créeun ensemble de dépendances artificielles (lafonction de mappage est surjective, ce qui estinévitable puisque les variables sont plusnombreuses que les registres).

D. Defour, B. Goossens, D. Parello

Page 12: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

Page 13: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

La parade: le renommage

e: FLD F2, R1(R8) // FLD FF2-0, RR1-0(RR8-0) FMUL F3, F2, F1 // FMUL FF3-0, FF2-0, FF1-0 FLD F4, R2(R8) // FLD FF4-0, RR2-0(RR8-0) FADD F5, F4, F3 // FADD FF5-0, FF4-0, FF3-0 FST F5, R2(R8) // FST FF5-0, RR2-0(RR8-0) ADD R8, R8, 1 // ADD RR8-1, RR8-0, 1 CMP R9, R8, R3 // CMP RR9-1, RR8-1, RR3-0 BNE R9, e // BNE RR9-1, ee: FLD F2, R1(R8) // FLD FF2-1, RR1-0(RR8-1) FMUL F3, F2, F1 // FMUL FF3-1, FF2-1, FF1-0 FLD F4, R2(R8) // FLD FF4-1, RR2-0(RR8-1) FADD F5, F4, F3 // FADD FF5-1, FF4-1, FF3-1 FST F5, R2(R8) // FST FF5-1, RR2-0(RR8-1) ADD R8, R8, 1 // ADD RR8-2, RR8-1, 1 CMP R9, R8, R3 // CMP RR9-2, RR8-2, RR3-0 BNE R9, e // BNE RR9-2, e

D. Defour, B. Goossens, D. Parello

Page 14: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

(1) e: FLD F2, R1(R8)(2) FMUL F3, F2, F1(3) FLD F4, R2(R8)(4) FADD F5, F4, F3(5) FST F5, R2(R8)(6) ADD R8, R8, 1(7) CMP R9, R8, R3(8) BNE R9, e

LatencesFLD: 2FST: 2FMUL: 4FADD: 3ADD: 1CMP: 1BNE: 1

13, -, 2, -, -, -, 4, -, -, 56, 7, 8

13, -, 2, -, -, -, 4, -, -, 56, 7, 8

IPC <= 8

D. Defour, B. Goossens, D. Parello

Page 15: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Le renommage est matériel

Le matériel alloue et libère les registres derenommage.

A l'allocation, il puise dans une liste de registreslibres. A la libération, il alimente la liste des registreslibres.

Il y a un nombre fixe de registres de renommage.Ce nombre est une contrainte sur l'ILP.

D. Defour, B. Goossens, D. Parello

Page 16: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Le renommage augmente la surface du banc de registre

L'ensemble des registres de renommage est uneextension de l'ensemble des registres architecturaux.

Plus le banc de registres de renommage est grand,plus on peut tirer parti du parallélisme d'instruction,mais plus le temps d'accès aux registres est grand.

D. Defour, B. Goossens, D. Parello

Page 17: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

L'effet du renommage

Le renommage est une expansion del'ensemble des registres du compilateur versl'ensemble des registres du processeur.

Le compilateur insère les variables dans lesregistres architecturaux et le matériel corrigel'excès de centralisation que cela induit enexpansant les registres architecturaux sur lesregistres micro-architecturaux.

D. Defour, B. Goossens, D. Parello

Page 18: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

Page 19: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Architecture RISC (chargement/rangement)

a = b + c; LD R1, M[b]LD R2, M[c]ADD R3, R1, R2ST R3, M[a]

La hiérarchie mémoire se charge des échangesavec le banc de registres, commandés par lesinstructions de chargement et de rangementajoutées par le compilateur.

D. Defour, B. Goossens, D. Parello

Page 20: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Le chemin des données

D. Defour, B. Goossens, D. Parello

Page 21: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Architecture mémoire/mémoire

a = b + c;

Le plus direct est de lire M[b] et M[c] et écrire M[a].La hiérarchie mémoire doit transférer les sourcesdu point le plus proche où il en existe une copiejusqu'à l'opérateur d'addition, puis elle doit rangerle résultat à la place libre la plus proche.

D. Defour, B. Goossens, D. Parello

Page 22: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Remplacer les registres par L0

D. Defour, B. Goossens, D. Parello

Page 23: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Pourquoi des registres?

Réponse n°1: c'est un intermédiaire intéressant quirend l'exécution des instructions plus efficace.

Ce qui est vraiment nécessaire, c'est une mémoiremulti-ports ou multi-bancs (pour lire et écrire enparallèle) à laquelle les unités de calculs accèdentdirectement et située au premier niveau de lahiérarchie mémoire.

D. Defour, B. Goossens, D. Parello

Page 24: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Pourquoi des registres?

Réponse n°2: c'est un intermédiaire intéressantqui simplifie l'expression du code exécutable.

Ce qui est vraiment nécessaire, c'est de pouvoirdésigner de façon concise les sources et destinations des opérations.

La concision des noms peut être obtenue en nelaissant dans le code qu'un préfixe (partie statique), le matériel ajoutant le suffixe.

D. Defour, B. Goossens, D. Parello

Page 25: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Supprimer les registres?

Remplacer les architectures registre/registrepar une architecture mémoire/mémoire, c'esttransgresser un tabou vieux de 25 ans!

Si on tente en plus d'imposer un nouveaulangage machine, il y a peu de chances qu'onpuisse avoir du succès auprès des constructeurs!

D. Defour, B. Goossens, D. Parello

Page 26: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Sémantique des noms

Le compilateur, par les numéros de registres,désigne des mots en mémoire dont les adressessont la concaténation du numéro de registre etd'un numéro d'exemplaire généré dynamiquementpar le matériel.

ADD R1, R2, R3 // R[1:x] = R[2:y] + R[3:z]ADD R1, R1, 1 // R[1:x+1] = R[1:x] + 1// chaque écriture se fait dans un nouvel exemplaire// chaque lecture se fait dans l'exemplaire courant

D. Defour, B. Goossens, D. Parello

Page 27: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Construction des noms

Le compilateur fixe une partie du nom(le numéro de registre).

Le matériel complète les noms des sources et desdestinations des instructions extraites.

Un tel mécanisme est déjà employé pour lacomposition des adresses: le compilateur en fixeune partie que le matériel complète (numéro deprocessus par exemple).

D. Defour, B. Goossens, D. Parello

Page 28: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Construction des noms

Pour une source Rs, le complément est le derniernuméro d'exemplaire Ex affecté à Rs.

Le nom complet est (Rs, Ex).

Pour une destination Rd, le dernier numéro Eyaffecté à Rd est incrémenté.

Le nom complet est (Rd, Ey).

D. Defour, B. Goossens, D. Parello

Page 29: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Que représente le nom Rx?

Rx est un ensemble de variables en mémoire(l'ensemble des exemplaires de Rx).

Chaque exemplaire a une adresse unique qui leplace dans la hiérarchie mémoire.

Les exemplaires d'un processus sont distincts deceux d'un autre processus (adresses différentes).

D. Defour, B. Goossens, D. Parello

Page 30: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

e: FLD F2, R1(R8) // FLD FF2-0, RR1-0(RR8-0) FMUL F3, F2, F1 // FMUL FF3-0, FF2-0, FF1-0 FLD F4, R2(R8) // FLD FF4-0, RR2-0(RR8-0) FADD F5, F4, F3 // FADD FF5-0, FF4-0, FF3-0 FST F5, R2(R8) // FST FF5-0, RR2-0(RR8-0) ADD R8, R8, 1 // ADD RR8-1, RR8-0, 1 CMP R9, R8, R3 // CMP RR9-1, RR8-1, RR3-0 BNE R9, e // BNE RR9-1, ee: FLD F2, R1(R8) // FLD FF2-1, RR1-0(RR8-1) FMUL F3, F2, F1 // FMUL FF3-1, FF2-1, FF1-0 FLD F4, R2(R8) // FLD FF4-1, RR2-0(RR8-1) FADD F5, F4, F3 // FADD FF5-1, FF4-1, FF3-1 FST F5, R2(R8) // FST FF5-1, RR2-0(RR8-1) ADD R8, R8, 1 // ADD RR8-2, RR8-1, 1 CMP R9, R8, R3 // CMP RR9-2, RR8-2, RR3-0 BNE R9, e // BNE RR9-2, e

Exemple

D. Defour, B. Goossens, D. Parello

Page 31: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Où est la différence?

Ce n'est pas un renommage mais un ajout dynamique!

Le renommage remplace l'ancien nom par unnouveau. Cela anihile une éventuelle stratégie deplacement du compilateur.

La complétion des adresses conserve le préfixechoisi par le compilateur. Par exemple, lecompilateur peut distribuer sources et destinationspour équilibrer les accès aux partitions formant L0.

D. Defour, B. Goossens, D. Parello

Page 32: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Allocation/libération

Le renommage induit une allocation/libérationde registres de renommage.

La complétion des adresses induit une allocation(création d'une entrée de cache contenantl'exemplaire: première référence) et une libération(désallocation de la ligne de cache lorsqu'unnouvel exemplaire est alloué).(allocation/désallocation de lignes de cache)

D. Defour, B. Goossens, D. Parello

Page 33: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

La lecture des sources

La latence des accès n'est plus constante. Elledépend de la hiérarchie mémoire.

Pour un degré superscalaire d, plutôt que delire 2d sources et d'écrire d destinations parcycle d'une structure centralisée (lancementd'au plus d instructions prêtes par cycle), oneffectue des accès en lecture et en écrituredans L0.

Page 34: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

Combien de ports d'accès à L0?

Cela dépend du nombre moyen de lectureset d'écritures par instruction.

Avec simplescalar, on peut mesurer, pour undegré superscalaire d, le nombre de ports p endessous duquel l'IPC est sérieusement dégradé.Des mesures préliminaires ont montré qu'enmoyenne, pour un degré d, on effectue 0,8décritures et 1,2d lectures.

Page 35: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Quel IPC pour saxpy?

L'IPC du processeur avec renommage est bornépar le nombre d'instructions du corps de boucle,à cause de la dépendance des calculs des valeurssuccessives de i.

L'IPC potentiel du processeur sans registre n'estpas meilleur puisque la même contrainte n'estpas ôtée (l'IPC réel peut être meilleur grâce àune latence raccourcie).

D. Defour, B. Goossens, D. Parello

Page 36: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Quelle limite au parallélisme d'instruction?

On peut créer autant d'exemplaires d'un registrequ'on veut (limite de la taille des adresses).

Il faut néanmoins limiter les exemplaires à lacapacité du cache L0 (pour un accès en 1 cycle).

Pour restreindre l'allocation de nouvelles lignes,il faut réutiliser les lignes désallouées, donc lesnuméros d'exemplaires antérieurs.

D. Defour, B. Goossens, D. Parello

Page 37: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Quels avantages architecturaux?

Cette micro-architecture sans registre préserve unecompatibilité binaire totale avec les architecturesantérieures.

Dans une fonction, il n'y a pas de registreà sauver/restaurer.

Lors d'un changement de contexte, il n'y a pasde registre à sauver/restaurer.

D. Defour, B. Goossens, D. Parello

Page 38: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Quels avantages micro-architecturaux?

Le chemin de données est simplifié: il n'est pluscomposé que de niveaux hiérarchiques dont lepremier est accédé par les unités de calcul.

En quelque sorte, le nouveau chemin est le cheminantérieur amputé du banc de registres.

Dans une micro-architecture multi-thread, on neduplique que le compteur de programme. Lecache L0 est partagé.

D. Defour, B. Goossens, D. Parello

Page 39: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

D. Defour, B. Goossens, D. Parello

Quels avantages micro-architecturaux?

Le compilateur peut attribuer les “registres” enappliquant une stratégie qui distribue les accèsen lecture et en écriture.

Le cache L0 peut être réparti en bancs, chaquebanc étant une mémoire simple port. Les accèsà deux bancs sont indépendants. En multipliantles bancs, on multiplie les ports et le degré d'ILP.

Page 40: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Comment valider cette proposition?

Première étape: affiner la micro-architecture pourdéterminer le découpage pipeliné du traitementdes instructions. Comparer l'IPC à code exécutableet à cycle constants (simulation sim-outorder oumicrolib).

Seconde étape: modifier le compilateur pourproduire un code allégé et comparer le nombre nd'instructions exécutées.

T = (n / IPC) * c

D. Defour, B. Goossens, D. Parello

Page 41: D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello

Conclusion

D. Defour, B. Goossens, D. Parello