Télécom, Examen d'architecture Cours de F. Pétrot, 3 heures, tout documents autorisés. 1 Exercice 1 : Multiprocesseur (2pts) Soit un système constitué de 2 processeurs avec des caches de données sans gestion de la cohérence, ayant une politique d'écriture write-through, et une mémoire. Question 1 (1pt) Illustrez le problème de la cohérence des données entre ces différentes éléments à l'aide de quelques instruction (en assembleur MIPS ou MicroBlaze) tournant sur les 2 processeurs. On suppose maintenant que l'instruction MIPS inval $2 peut invalider la ligne de cache cachant l'adresse contenue dans le registre $2 (elle est sans action si la ligne n'est pas cachée). Question 2 (1pt) Toujours en l'absence de cohérence matérielle, modi ez votre code a n qu'il garantisse que la dernière donnée lue est bien la dernière donnée écrite. 2 Exercice 2 : Analyse quantitative (3pts) Soit les hypothèses suivantes : un processeur exécute une instruction RISC par cycle ; la latence de lecture d'une ligne de cache est de l = 12 cycles ; les écritures sont non-bloquantes ; pour une application donnée, le pourcentage d'instructions de lecture est de 20%, que nous notons r = 0:20. le taux de miss m est de 8% pour le cache de données, et on considère qu'il n'y a pas de miss sur les instructions. Question 3 (0,5pt) Donnez la formule générale du CPI(l; r; m) dans ces conditions. Faites l'application numérique avec les valeurs fournies. On ajoute la gestion de la mémoire virtuelle. Un miss dans la TLB coûte tl = 10 cycles, avec un taux de miss tm de 0:2%. Question 4 (1pt) Donnez la formule générale du CPI(l; r; m; tl; tm) dans ces conditions. Faites l'application numérique avec les valeurs fournies. Une faute de page coûte fl = 10 6 cycles, et le taux d'échec de pagination est de fm = 3 10 4 %. Question 5 (1.5pt) Donnez la formule générale du CPI(l; r; m; tl; tm; fl; fm) dans ces conditions. Faites l'application numérique avec les valeurs fournies. Examen d'architecture - 1S page - 1
3 Exercice 3 : Invalidation logicielle d'une ligne de cache (4pts) On suppose que le processeur MIPS possède une nouvelle instruction permettant d'acceder directement à son cache de donnée a n d'en invalider le contenu. Cette instruction s'appelle inval et prend comme argument un registre contenant une adresse. Cette adresse est émise sur le bus d'adresse en direction du cache (bus ADDR[31 :0] sur le schéma du cache). Cette instruction va nécessiter l'ajout d'un peu de matériel (au moins une petite machine à état) dans le cache. FRZ A[31:2] ADDR[31:0] DATAOUT[31:0] D[31:0] DATAIN[31:0] tag index ADDR[m 1:0] offset LA DV SDx WEDx SD0 WED0 DIRECTORY OE WE CE DATA[n 1:p+1] DATA[p] EVINCE DATA[p 1:0] == HIT FIG. 1 Architecture du cache. Les signaux ADDR, DATAIN et DATAOUT sont connectés au processeur, ainsi que le signal FRZ qui gèle le processeur. Le signal D est connecté au bus. Les autres signaux sont internes au cache, et géré par des machines à états non représentées. Le signal EVINCE n'est pas utile dans cet exercice. Son comportement est le suivant : si la donnée à l'adresse considérée n'est pas dans le cache, alors l'instruction est sans effet. Si la donnée à l'adresse considérée est cachée, alors la ligne de cache doit être invalidée. Question 6 (1pt) Identi ez sur le schéma le bit de validité et spéci ez, en français, la manière dont une invalidation se déroule. Question 7 (1pt) Ajoutez sur le schéma du cache (dont vous ne recopierez que la partie utile sur votre copie) les éléments matériels nécessaires, et donnez la liste des signaux utilisés. Question 8 (2pt) Dessinez l'automate d'état qui gère l'invalidation. Précisez sur les arcs les conditions de transitions, dans chaque état la valeur des signaux de Moore, et sur les arcs les signaux de Mealy (s'il y en Examen d'architecture - 1S page - 2
a). 4 Exercice 4 : Sauvegarde d'une ligne de cache Write-Back sur PI-Bus (5pts) On se propose de concevoir le matériel nécessaire à la sauvegarde d'une ligne d'un cache Write-Back lors de son évincement. La ligne est constituée de 4 mots. On suppose que le cache est à correspondance directe, dont l'architecture est illustrée par la gure 1, comme pour l'exercice précédent. Les signaux D[31 :0] et A[31 :2] sont respectivement les signaux de données et d'adresse du PI-Bus. Le circuit sera réalisé sous la forme d'une machine d'état pilotant un chemin de données. On suppose que l'on dispose d'une mémoire simple accès (c.-à-d. que l'on ne peut pas lire et écrire dedans au même cycle), dont l'interface est : DATA[127 :0], donnée en entrée (reçue), lors d'une écriture ou donnée en sortie (fournie), lors d'une lecture ; OE, lecture si 1 reçu par la memoire ; WE, écriture si 1, reçu par la memoire ; ADDR, adresse de l'action (lecture ou écriture, reçue) ; CE, selection de la mémoire (reçue). Cette mémoire est asynchrone, ainsi les différents signaux d'entrée doivent être stable lorsque CE passe à 1, et c'est l'opération précisée sur ces signaux qui est effectuée. Le cache fournit un signal EVINCE qui, s'il vaut 1, indique qu'il faut évincer la ligne dont l'adresse est disponible sur les ls ADDR[31 :0]. Question 9 (1pt) Précisez l'utilisation des signaux ADDR, LA et DV en trois lignes, et ajoutez le matériel nécessaire à la construction du signal ADDR. Il est inutile de recopier le cache, ne dessinez sur votre feuille que la partie demandée. Le bus utilisé pour effectuer le transfert des mots consituant la ligne de cache est le PI-Bus. Un diagramme des temps du transfert est donnée dans la gure 2. Nous dé nissons un PI-Bus allégé dont les signaux sont les suivants : Examen d'architecture - 1S page - 3
CLK REQA GNTA * ACK RDY RDY WAT RDY RDY READ OPC WD4 WD4 WD4 WD4 WD4 A A0 A1 A2 A3 A3 SEL* D D0 D1 D2 D3 FIG. 2 Chronogramme de l'écriture de 4 mots Nom emis reçu commentaires RESETN environnement tous remise à zéro. CLK environnement tous horloge système, active sur front montant. REQ x maître x BCU Requête du maître x pour le bus. GNT x BCU maître x Donne le bus au maître x. READ maître esclave Lecture si 1, écriture si 0. OPC[3 :0] maître esclave, BCU Type de transfert. A[31 :2] maître esclave, BCU Adresse du transfert. D[31 :0] maître, esclave esclave, maître Donnée. ACK[2 :0] esclave, BCU maître Réponse au transfert. SEL y BCU esclave y Sélection de l'esclave y. Les signaux sont tous actifs à l'état haut, hormis le RESETN qui est actif à l'état bas. Nous rappellons que les adresses sont sur 30 bits, les 2 bits de poids faibles étant dé nis par les opcodes spéci ants le transfert, et que les octets signi catifs sont alignés à droite. Les signaux READ, OPC et A sont positionnés au cycle n, et les signaux ACK et D sont positionnés au cycle n + 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 WD4. Question 10 (0,5pt) Le cache est-il un maître ou un esclave sur le PI-Bus? Question 11 (0,5pt) Précisez l'interface de l'automate qui séquence l'évincement de la ligne de cache et Examen d'architecture - 1S page - 4
dites si les signaux de sortie sont des signaux de Moore ou de Mealy. Question 12 (3pt) Donnez le diagramme d'états en précisant sur chaque arc les conditions de transition. Etiquetez les nœuds avec les valeurs des sorties de Moore et les arcs avec les valeurs des sorties de Mealy. 5 Exercice 5 : processeur RISC (7pts) 5.1 Annulation d'instructions On désire ajouter au MIPS R3000 l'instruction bne,a $x, $y label qui permet d'annuler l'instruction qui suit le bne,a si le branchement n'est pas pris. Ce type d'instruction est utile en sortie de boucle, car elle permet de faire dans le delay slot une instruction qui ne doit être faite que si l'on itère la boucle. Question 13 (3pt) En supposant que l'on dispose du pipeline à 5 étages rappellé gure 3, précisez les modi cations à apporter pour l'implantation de cette instruction. indiquez les ajouts de matériel pour chaque étage (s'il y en a) indiquez précisément l'impact sur les bypass IF DE EXE MEM WB ALU zero pc mémoire instruction @ 4 d @rs @rt @rd banc de registres wd rs rt ALU mémoire données @ wd d ext FIG. 3 Le pipeline à 5 étages du MIPS 5.2 Instructions sur 64 bits On suppose que l'on désire à présent faire une instruction d'addition sur 64 bits, sachant que l'on ne dispose que d'une ALU 32 bits, avec cependant la retenue sortante. La syntaxe est add64b $rd, $rs, $rt. Examen d'architecture - 1S page - 5
La contrainte est que les registre spéci és dans l'instruction ont un numéro de registre pair. Lors de son exécution, l'instruction, add64b reste durant 2 cycles dans l'étage EXE, comme illustré cidessous. Au 1er cycle, elle met à jour le registre 2n avec les poids faibles du résultat, et au 2ème le registre 2n + 1 avec les poids forts. Une bulle est insérée dans le pipeline lors du décodage de l'instruction add64b, car il est prévu que cette instruction passe 2 cycles dans l'étage EXE. L'instruction qui suit le add64b est chargée, mais patiente 1 cycle dans l'étage IF avant d'être décodée (on passe donc 2 cycles dans l'étage IF). t t + 1 t + 2 t + 3 t + 4 t + 5 t + 6 t + 7 t + 8 add64b IF DEC EXE EXE MEM WB add IF bulle DEC EXE MEM WB ori bulle IF DEC EXE MEM WB Question 14 (0,5pt) L'instruction pourrait-elle patienter dans l'étage DEC? Justi ez votre réponse. Question 15 (1pt) En prenant en compte la contrainte de numérotation des registres, proposez une manière d'accéder aux bons registres en fonction du cycle d'exécution (1er ou 2nd cycle) de l'instruction. Question 16 (3,5pts) Ajoutez au pipeline le matériel nécessaire à la bonne exécution de cette instruction. détaillez la manière de détecter l'instruction et de geler partiellement le pipeline ; détailler le fonctionnement de l'étage EXE ; détaillez les modi cations que cela peut impliquer sur les différents bypass. Examen d'architecture - 1S page - 6