Ensimag 2A

publicité
Ensimag
2A
Ensimag 2A
Examen d’Architecture Avancée
Filières SLE/ISI, 3 heures, tous documents et calculette autorisés.
Lisez l’ensemble des questions relatives à un exercice avant de commencer à répondre !
1
Exercice 1 : Cache assurant la cohérence mémoire (8pts)
Soit p processeurs connectés chacun par un PI-Bus à la mémoire centrale partagée, par l’intermédiaire d’un
cache. Les caches sont tous identiques, à correspondance directe (direct mapping), à écriture systématique (write
through), structurés en 128 lignes de 4 mots de 32 bits. On fait également l’hypothèse que les seuls transferts qui
ont lieu sont des lectures ou des écritures de mots de 32 bits.
Rappels et préliminaires
On rappelle ici les signaux du PI-Bus :
Nom
emis
reçu
RESETN
environnement tous
CLK
environnement tous
REQx
maître x
BCU
GNTx
BCU
maître x
READ
maître
esclave
LOCK
maître
BCU
OPC[3 :0] maître
esclave, BCU
A[31 :2]
maître
esclave, BCU
D[31 :0]
maître, esclave esclave, maître
ACK[2 :0] esclave, BCU
maître
SELy
BCU
esclave y
commentaires
remise à zéro.
horloge système, active sur front montant.
Requête du maître x pour le bus.
Donne le bus au maître x.
Lecture si 1, écriture si 0.
Garde la propriété du bus.
Type de transfert.
Adresse du transfert.
Donnée.
Réponse au transfert.
Sélection de l’esclave y.
Les signaux sont tous actifs à l’état haut, hormis le RESETN qui est actif à l’état bas. Nous rappelons que les
adresses sont sur 30 bits, les 2 bits de poids faibles étant définis par les opcodes spécifiant le transfert, et que les
octets significatifs sont alignés à droite. Les signaux READ, OPC, LOCK et A sont positionnés au cycle t, et les
signaux ACK et D sont positionnés au cycle t + 1.
Le signal ACK peut prendre les valeurs suivantes :
symbole
WAT
RDY
description
transfert retardé.
transfert effectué.
Le signal OPC ne peut prendre que la valeur WDU dans notre exercice (uniquement transferts de mots de 32
bits).
Un exemple de chronogramme est donné dans la figure 1.
La mémoire utilisée pour implanter le cache est une mémoire simple accès, les lectures et les écritures ne peuvent
donc avoir lieu au même cycle.
L’interface du processeur vers le cache de données dont nous avons l’usage est la suivante :
– TYPE. Émis par le processeur, indiquant le type de transfert à effectuer. Dans un but de simplification, seules 3
valeurs sont possibles : NOP (pas de requête), RWD (requête de lecture d’un mot), WWD (requête de d’écriture
d’un mot).
Examen d’architecture - 2S
page - 1
Ensimag
2A
CYCLE
CLK
1
2
3
4
5
6
7
RWRD.HIT/FRZ<=0
IDLE
WWRD...../FRZ<=?
NOP/FRZ<=0
REQA
REQ<=0
ACK=RDY/FRZ<=0
GNTA*
RWRD.HIT/FRZ<=1
REQ
ACK
RDY
RDY
WAT
RDY
ACK=WAT/FRZ<=1
GNT
LOCK
FRZ<=1
GNT
READ
A
WDU
WDU
WDU
WDU
A0
A1
A2
A3
A3
ACK=WAT/FRZ<=1
A0
A3D2
LOCK<=1
REQ<=1
LOCK<=1
REQ<=0
FRZ<=1
ACK=WAT/FRZ<=1
SEL*
D
A1D0
D0
D1
D2
D3
SNOOPDO
F IGURE 1 – Chronogramme d’écritures successives en mémoire.
LOCK<=0
REQ<=0
ACK=RDY/FRZ<=1
FRZ<=1
WDU
D3
RDY
REQ<=1
OPC
Non considéré dans
cet exercice
LOCK<=1
REQ<=0
ACK=RDY/FRZ<=1
ACK=WAT/FRZ<=1
A2D1
ACK=RDY/FRZ<=1
LOCK<=1
REQ<=0
F IGURE 2 – Automate de chargement d’une
ligne de cache (sans la génération des sorties).
– ADR[31 :0]. Émis par le processeur, contenant l’adresse de la requête courante. Pour notre exercice ADR[1 :0]
= 00 ;
– FRZ. Reçu par le processeur. Si ce signal vaut 1, le processeur est gelé (combinatoirement, c.-à-d. que si DFRZ
passe à 1 dans un cycle, les registres du processeur ne sont pas modifiés à la fin du cycle).
Exercice proprement dit
On se propose dans cet exercice de concevoir un mécanisme implanté dans le cache qui espionne les transferts de
données en écriture et invalide la ligne de cache si une écriture a lieu à une adresse correspondant à une donnée
qui se trouve dans le cache.
On doit pour se faire ajouter un signal supplémentaire, SNOOPDO, émis par le contrôleur de bus à destination
des maîtres, qui est à 1 la première fois qu’une adresse est émise sur le bus par un maître. On voit sur le
chronogramme de la figure 1 que le signal SNOOPDO est à 1 chaque fois qu’une nouvelle adresse est présentée
sur le bus, mais qu’en cas de ACK=WAT, qui implique que le maître remet l’adresse suivante, le signal n’est pas
réactivé.
Question 1 (0.5pt)
Donnez la « structure » de l’adresse pour ce cache, c’est-à-dire le nombre de bits de tag, d’index et d’offset.
128 lignes d’ou 7 bits d’index, lignes de 4 mots, donc 2 bits d’offset, 2 bits pour l’octet dans le mot, et donc
32 - (7+2+2) = 21 bits de tags.
Question 2 (1pt)
Du point de vue du protocole de bus (et indépendamment du comportement attendu du cache qui sera l’objet de la
suite), qu’est-il absolument nécessaire de faire au niveau des caches lorsque le signal SNOOPDO est à 1 ? Dessinez le
petit circuit permettant de faire cette action. (Il n’y a pas de piège, la réponse est simple.)
Examen d’architecture - 2S
page - 2
Ensimag
2A
Échantillonner l’adresse !
Un registre avec @ sur data et snoopdo sur we
On change la sémantique du signal HIT. Ce signal indique à présent soit que la donnée requise par le processeur
est cachée, soit qu’il y a un hit externe, c’est à dire que la donnée écrite circulant sur le bus se trouve dans le
cache.
Question 3 (1pt)
Proposez une solution à faible coût matériel (typiquement sans dupliquer des choses existantes) permettant de calculer
ce signal. Faites le schéma de la partie opérative correspondante, sachant que le contrôle sera déterminé dans les 2
questions suivantes.
Un mux sur les fils d’adresse représentant le tag multiplexant soit l’adresse venant du processeur, soit
celle venant du bus. Le signal de hit correspond alors soit à un hit interne, soit à un hit externe. On utilisera le signal SNOOPDO pour commander le mux, qui s’il est actif fera passer l’adresse du bus qui a été
échantillonnée, et l’adresse du processeur sinon.
Question 4 (1pt)
En considérant les instants d’arrivée possibles des requêtes de lecture du processeur et des requêtes d’écriture circulant
sur le bus, décrivez le problème qui se pose sur le cache et proposez une solution qui garantisse un fonctionnement
correct. (On notera ici que le cache n’est pas maître des transferts qui ont lieu sur le bus, et qu’il ne peut intervenir sur
ceux-ci). Vous pouvez vous aider d’une table énumérant les 4 situations possibles pour expliquer votre raisonnement.
Requête de lecture du processeur et requête d’écriture circulant sur le bus :
Proc Bus
Problème ?
0
0
Pas de problème
1
0
Pas de problème
0
1
Pas de problème
1
1
Geler le processeur et donner la priorité au bus
Le chargement d’une ligne de cache pour un système mono-processeur se passe comme indiqué grossièrement
(on n’indique pas ici les sorties de l’automate pilotant le chemin de données) par l’automate de la figure 2, déjà
vu en cours.
On veut à présent prendre en compte le signal SNOOPDO dans les transitions de l’automate.
Question 5 (2pt)
– à quelle condition y a-t-il un hit externe ? Donnez l’équation logique permettant de la calculer.
– dans quels états de l’automate est-on certain de ne jamais avoir de hit externe ? Justifiez votre réponse.
xhit = hit.snoopdo d’après ce qui a été dit avant
Dans les états durant lequel le processeur est propriétaire du bus : A0, A1D0, A2D1, A3D2, D3
On fera l’hypothèse que l’on va dans un état INVAL pour invalider la ligne visée (écriture d’un 0 dans le bit de
validité).
Question 6 (2.5pt)
Ajoutez un ou des états INVAL là où cela est nécessaire dans l’automate. Modifiez les conditions de transitions des
états qui peuvent être sensibles à un hit externe pour prendre en compte le signal SNOOPDO et passer ainsi dans cet
état. Donnez également les transitions permettant de sortir de l’état INVAL.
Examen d’architecture - 2S
page - 3
Ensimag
2A
SNOOPDO.HIT/FRZ<=1
SNOOPDO.RWRD.HIT/FRZ<=0
IDLE
SNOOPDO.WWRD...../FRZ<=?
Non considéré dans
cet exercice
SNOOPDO.HIT/FRZ<=1
INVAL
SNOOPDO.NOP/FRZ<=0
1/FRZ<=0
WE <= 1
mux <= inval
REQ<=0
ACK=RDY/FRZ<=0
SNOOPDO.HIT/FRZ<=1
SNOOPDO.
RWRD.HIT/FRZ<=1
REQ
REQ<=1
ACK=WAT/FRZ<=1
GNT
FRZ<=1
GNT
D3
LOCK<=0
REQ<=0
ACK=RDY/FRZ<=1
FRZ<=1
ACK=WAT/FRZ<=1
A0
A3D2
LOCK<=1
REQ<=1
LOCK<=1
REQ<=0
FRZ<=1
ACK=WAT/FRZ<=1
A1D0
LOCK<=1
REQ<=0
ACK=RDY/FRZ<=1
ACK=WAT/FRZ<=1
A2D1
ACK=RDY/FRZ<=1
LOCK<=1
REQ<=0
Question bonus : inutile de s’y attaquer si vous n’avez pas fini le reste !
Au lieu d’invalider la ligne, on désire la mettre à jour, ce qui nécessite 2 états : UPDTR pour lire la ligne et UPDTW
pour la ré-écrire modifiée dans le cache, comme vu en cours.
Question 7 (bonus 1pt)
Quel est le problème si un hit externe à lieu (sur une autre ligne) lorsque l’automate est dans l’un de ces 2 états ?
Quelle est alors la seule solution pour assurer la cohérence des données ?
On est en train d’invalider une ligne à cause d’un précédent accès à une adresse dans le cache, et une
autre adresse est en train de circuler en écriture et on ne peut la prendre en compte, il y a donc risque
d’incohérence. La seule solution est alors d’invalider la totalité du cache car on ne sait pas quelle ligne
invalider
2
Exercice 2 : Analyse quantitative (2,5pts)
Soit les hypothèses suivantes :
– un processeur exécute une instruction RISC par cycle, et lit ou écrit une donnée en 1 cycle si elle est dans le
cache (cas hit). Les instructions sont supposées être dans un cache parfait, et n’interviennent donc pas dans les
calculs qui suivent. On prend comme hypothèse que si les accès mémoire donnée se faisaient en 1 cycle, le CPI
de la machine serait de 1 ;
– la latence de chargement d’une ligne de cache à partir de la mémoire est de l = 50 cycles ;
– pour une application donnée, le pourcentage d’instructions de lecture est de 20%, que nous notons r = 0.20,
et le pourcentage w d’instruction d’écriture est 12%, que nous noterons w = 0.12 ;
– le cache de données est write-back ; dans le cas où un accès mémoire fait miss, il faut dans 27% des cas (dirty
rate dr = 0.27) écrire la ligne en mémoire (ligne modifiée, dirty) avant de rapatrier la ligne désirée (stratégie
write allocate pour les écritures)
– les écritures font hit dans le cache dans 65% des cas : dwh = 0.65. Les écritures qui font miss sont synchronisées : on attend la disponibilité de la ligne en cache pour faire effectivement l’écriture avant de passer à
l’instruction suivante ;
– le taux de miss en lecture drm est de 8% (drm = 0.08) pour le cache de données
Question 8 (2pt)
Examen d’architecture - 2S
page - 4
Ensimag
2A
Donnez la formule générale du CPI(l, r, w, dwh, drm, dr) dans ces conditions, en supposant que le CPI avec un
cache parfait serait de 1. Faites l’application numérique avec les valeurs fournies.
CPI = ((1−(r+w))×1+r×(drm×l+(1−drm)×1)+w×(dwh×1+(1−dwh)×(2×l×dr+l×(1−dr))))
On multiplie par 2 la taille du cache des données, ce qui fait que les miss rates diminuent, dwh = 0.75 et
drm = 0.06, mais que le dirty rate en écriture augmente, donc dr = 0.42. En contrepartie, la fréquence de
fonctionnement du deuxième système est légèrement plus basse que celle du premier : fs2 = 0.985 × fs1 .
Question 9 (0,5pt)
Est-il utile de faire ce changement ? Justifiez votre réponse.
L’application numérique, que je n’ai pas faite, le dira !
3
Exercice 3 : Opérations atomiques (1pt)
Soit les instructions ll rt, imm(rs) et sc rt, imm(rs) vues en cours. On rappelle que si sc échoue, après
l’exécution de cette instruction le registre rt vaut 0, et sinon il vaut 1. On suppose que le registre $2 contient
l’adresse d’une case mémoire.
Question 10 (1pt)
Écrivez un programme qui incrémente le contenu de cette case mémoire de manière atomique à l’aide de ces instructions.
C’est très simple, juste pour voir s’ils sont venus en cours.
again :ll $1, 0($2)
add $1, $1, 1
sc $1, 0($)
beqz $1, again
nop
4
Exercice 4 : Processeur pipe-line à 8 étages (8,5pts)
Le successeur du processeur R3000 vu en cours est le R4000. Ce processeur, utilisé par exemple dans la playstation portable, possède un pipe-line à 8 étages : l’analyse de la solution classique à 5 étages montrait que les
étages critiques (ceux déterminant la période d’horloge) étaient les étages d’accès mémoire, qu’il s’agisse de la
mémoire instruction ou de la mémoire donnée. En effet, si ces mémoires sont des caches à gestion complexe (taille
importante, associativité importante, accès TLB pour traduction adresses logiques vers adresses physiques, . . . ),
les accès, même en cas de « hit », sont 3 fois plus lents que les opérateurs des autres étages du pipe-line.
On décide donc d’effectuer les accès mémoire en 3 étapes :
1. préparation de l’accès (étages Instruction First et Data First) ;
2. accès effectif, (étages Instruction Second et Data Second). C’est dans ces étages qu’une instruction est
effectivement lue, et que les données sont effectivement lues ou écrites ;
3. vérification du hit/miss (étages Register File et Tag Check). Le circuit "Calcul Hit" calcule combinatoirement
si l’instruction dans le registre IS/RF ou la donnée dans le registre DS/TC est valide en cas de lecture, et si
la donnée a fait un « hit » dans le cache en cas d’écriture. On rappelle qu’un hit (encore appelé « miss »)
peut servir à geler le processeur, . . .
Examen d’architecture - 2S
page - 5
Ensimag
2A
IF
IS
RF
EX
DF
DS
Calcul
hit
PC
Instruction memory
REG
TC
WB
Calcul
hit
ALU
Data memory
F IGURE 3 – Schéma du pipeline à 8 étages.
L’accès mémoire est alors réparti sur 3 étages du pipe-line : un nouvel accès mémoire peut être lancé à chaque
période d’horloge. On obtient alors le pipe-line à 8 étages schématisé sur la figure 3 ci-dessous (qui suffit à traiter
les opérations entre registres format R) :
Question 11 (0,5pt)
On peut remarquer que le schéma n’est pas exactement le même pour le cache mémoire instruction et pour le cache
mémoire donnée : expliquez pourquoi.
Parce que les instructions sont en lecture seulement, alors que les données sont en lecture et écriture.
Question 12 (1,5pts)
Pour une instruction de type STORE (écriture valeur registre en mémoire, sw rt, imm(rs)), une écriture sera toujours effectuée dans l’étage DS, alors que le « hit » ne sera calculé que dans l’étage TC. En considérant le bit de validité
v et le résultat de la comparaison du tag, précisez les 3 cas possibles et leur implication sur le fait que l’écriture ait
été faite à tort ou non. Comment proposez vous de traiter ce cas, dans le cas d’une stratégie write-through, sachant
que des accès mémoire peuvent être en cours dans l’étage DF et DS ? On demande ici une explication synthétique qui
précise les ressources nécessaires et les étapes de la gestion du cas, mais pas de schéma ou d’automate.
Cas possibles :
v
0
hit
x
1
0
1
1
commentaire
le cache ne contient pas de données dans la ligne considérée, écrire dedans
ne fait pas de mal
le cache contient une donnée qui n’est pas la bonne, et elle va donc être
écrasée de manière erronée
le cache contient la bonne donnée qui va donc être mise à jour
La stratégie la plus simple est d’invalider la ligne si l’on s’est trompé. Pour cela, il faut que le vecteur de
validité de la ligne soit un ensemble de registres 1 bit disponible dans l’étage TC, et l’on va forcer à zéro le
registre qui correspond à la ligne malencontreusement écrasée. C’est assez coûteux, car il faut redécoder
la partie index de l’adresse pour accéder au bon registre.
Question 13 (2pts)
Complétez le schéma pour les instructions de format « I » sw rs, imm(rt) et beq rt, rs, imm, sachant que le
calcul des adresses de branchement, ainsi d’ailleurs que le calcul de la condition du saut, se fait dans l’étage EX.
Inutile de faire tous les cas possibles (extension de signe ou pas, etc), faites simple pour montrer le principe.
Question 14 (2pts)
Quelles connexions supplémentaires (appelées bypass dans le cours) sont nécessaires pour assurer le « forwarding »
entre instructions de format R ? Redessiner le pipeline en les ajoutant.
Examen d’architecture - 2S
page - 6
Ensimag
2A
A faire, mais très similaire au cours.
Question 15 (1pts)
Étudiez l’exécution d’un LOAD (lw rt, imm(rs)) suivi d’instructions dépendantes. Combien de bulles (stall) doivent
être insérées au maximum ? Justifiez votre réponse. (On ne cherche pas à expliciter le cas du « miss » en lecture, ...)
La donnée lue est disponible après l’étage DS, il faut donc insérer deux bulles pour pouvoir entrer la donnée
valide devant l’ALU dans l’étage EX.
Question 16 (1pts)
Étudiez l’exécution d’un branchement. Est-ce que un effet retardé de 1 pour les branchements suffit à régler les
problèmes ? Combien de delay slots faudrait-il supporter ? Justifiez votre réponse.
Le calcul de la condition du saut se fait dans l’étage EX (cf question 13), il faut donc 3 cycles pour que le
branchement soit effectif, puisqu’il y a une instruction dans IF, dans IS et dans RF.
Question bonus : elle peut être faite même si vous n’avez pas répondu aux questions précédentes !
Question 17 (1pt)
En utilisant des compilateurs optimiseurs efficaces, le CPI de la version 5 étages du R4000 est de 1,16 ; le CPI de la
version 8 étages est de 1,54. De combien faut-il accélérer la fréquence d’horloge de la version 8 étages pour obtenir de
meilleures performances ? Le résultat vous paraît-il vraisemblable ?
1.54
Le rapport 1.32
≈ 1.33, donc il faut une fréquence 1.33 fois supérieure pour le que le R4000 soit concurrentiel. Or le ratio du nombre d’étage est de 1.6, donc on peut considérer que l’on peut multiplier la
fréquence du R3000 par 1.6 en passant à 8 étages. Comme 1.33 < 1.6, le résultat est vraisemblable.
Examen d’architecture - 2S
page - 7
Téléchargement