QUIZZ Remarque : l ordre des réponses était différent selon les variantes. onc ne faites pas attention à la lettre correspondant à la réponse correcte mais seulement à la réponse correcte elle même qui est surlignée en jaune. Question 1 : quel circuit a pour sortie X selon la table de vérité suivante > X 1 0 0 1 1 0 Réponse : Question 2 : Quelle est la table de vérité de la sortie X de ce circuit > X 1 0 1 1 1 0 X 0 1 0 1 0 1 1 1 1 X 0 0 0 1 0 1 1 1 1 X 1 0 0 1 1 1 Réponse : 1
Question 3 : on désire réduire le temps pour effectuer une addition sur 64 bits par un facteur de (presque) 4. L idée est de gagner un facteur 2 supplémentaire par rapport à la solution vue en cours en remplaçant les additionneurs sur 32 bits par des additionneurs sur 16 bits. ombien faut il d additionneurs 16 bits en tout? deux réponses sont acceptées 3 15 7 16 Question 4 : un laptop est équipé d un processeur avec un niveau de mémoire cache (latence 10ns), une mémoire centrale (latence 150 ns) et un disque dur (latence 1ms). On observe la répartition suivante des accès aux données lorsqu on travaille sur une tâche T : 60% des accès aux données tirent parti de la mémoire cache ; pour les autres accès, 90% sont obtenus de la mémoire centrale tandis que le reste doit être demandé au disque dur. Quelle est la latence moyenne (en ns) pour cette tâche T? 100 40 060 181 100 141 Le programme assembleur suivant est exécuté avec une valeur entière strictement positive disponible dans le registre r0. Le résultat est chargé dans r4. Voici quelques précisions sur des instructions pouvant présenter une ambiguïté : cont_egal a, b, c fait continuer l exécution à la ligne c si les registres a et b sont égaux. divise ra, rb, rc effectue la division entière de rb par rc et range le résultat dans ra 0 : charge r1, 1 1 : charge r2, 0 2 : charge r3, 2 3 : cont_egal r0, r1, 7 4 : divise r0, r0, r3 5 : somme r2, r2, r1 6 : continue 3 7 : charge r4, r2 8 : stop Question 5 : Lorsque r0 vaut 9 comme valeur initiale, le résultat de l exécution est : 2 3 4 1 Question 6 : quel est l ordre de complexité de ce programme en fonction de r0? O(1) O(r0) O(r0 2 ) O(log(r0)) 2
Question 7 : e graphe de routeurs Internet montre la distance entre chaque nœud à coté de chaque lien. Par exemple, la distance entre et est de 3. Indiquer quelle est la table de routage du nœud parmi les choix suivants. Pour chaque destination (colonne de gauche) on indique la direction du prochain nœud (colonne du milieu) et la distance du plus court chemin (colonne droite). est. ir. ist. 8 4 3 est. ir. ist. 7 E 3 3 est. ir. ist. E 6 E 3 E 2 est. ir. ist. E 6 E 3 3 Réponse : Question 8 : on considère un réseau contenant plusieurs routeurs (,,,, N). On connaît seulement les tables de routage des nœuds, F et H données ci dessous : F H est. ir. ist. est. ir. ist. est. ir. ist. G 2 K N 3 G 2 2 L E 2 F N 2 N x y J I 2 J N 3 En se basant uniquement sur les informations fournies par ces tables et sur la règle de mémoriser seulement le plus court chemin dans une table, indiquer les valeurs correctes de x et de y : x = et y = 4 x = et y = 5 x = et y = 5 x = et y = 4 3
Question 9 : supposons que l EPFL soit reliée à d autres nœuds du réseau suisse comme ceci : Le réseau comporte 5 nœuds : EPFL, Unie, ETHZ, UniSG, USI. Les tables cidessous indiquent seulement la direction du nœud suivant pour une destination, ou un ensemble de destinations données. ans cette question, on peut remarquer que le chemin entre deux nœuds n est pas déterminé par le plus petit nombre de sauts. En effet, les tables prennent en compte aussi la capacité des liens. Par exemple, la capacité du lien EPFL > USI n est pas suffisante pour supporter la bande passante requise pour les communications entre EPFL et ETHZ, c est pourquoi les communications EPFL >ETHZ passent par Unie comme première étape, puis par USI car les liens Unie >USI et USI >ETHZ ont une plus grande capacité (remarque : un centre de calcul important est installé à USI). Enfin, il faut aussi remarquer que la capacité des liens dépend de la direction de transmission, ce qui explique qu une communication entre deux sites ne va pas forcément utiliser le même chemin dans les deux sens. Voici les tables : EPFL Unie ETHZ USI UniSG est. ir. est. ir. est. ir. est. ir. est. ir. Unie, EPFL EPFL UniSG UniSG EPFL EPFL ETHZ ETHZ ETHZ, Unie UniSG USI USI USI, ETHZ, UNISG USI Unie Unie Unie Unie USI, Unie, EPFL EPFL, USI USI ETHZ, UniSG ETHZ Indiquer la bonne réponse pour une communication établie entre l EPFL et UniSG dans les deux sens : EPFL >Unie >USI >ETHZ >UniSG et UniSG >ETHZ >USI >Unie >EPFL EPFL > USI > UniSG et UniSG >USI >EPFL EPFL > USI > UniSG et UniSG >ETHZ >USI >Unie >EPFL EPFL >Unie >USI >ETHZ >UniSG et UniSG >USI >EPFL Question 10 : Soit un ordinateur avec un processeur d horloge 2 GHz et une mémoire cache de 16 blocs, chaque bloc ayant une taille de 128 octets. La mémoire centrale présente une latence de 100 cycles d horloge du processeur. On désire exécuter un programme pour traiter séquentiellement un ensemble de données de 8 Ki (c'est à dire 2 13 octets) présent en mémoire centrale. Le programme lit un octet à la fois et accumule sa valeur dans un registre du processeur. On considère que cette accumulation (=addition) représente un cycle d horloge du processeur. Quel est le temps nécessaire pour réaliser cette tâche? 8192 ns 3200 ns 4146 ns 7296 ns USI 4
Question 11 : L expression memory wall désigne : Un accroissement croissant du coût des technologies de stockage L impossibilité de donner un accès rapide à une grande masse de donnée au processeur du fait de l espace nécessaire pour mémoriser une grande quantité de données. Une baisse de coût insuffisante des technologies de stockage à long terme L accroissement des performances des mémoires en terme de capacité alors que les processeurs s améliorent en terme de vitesse. Question 12 : Le stockage des données d un fichier sur le disque dur est organisé comme pour un tableau en mémoire centrale (en un seul bloc) constitué d un ensemble de blocs qui sont systématiquement déplacés à chaque modification du fichier pour être dans des secteurs consécutifs du disque. constitué d un ensemble de blocs dont les adresses sont mémorisées dans une table qui est entièrement recopiée en mémoire centrale lorsqu on lit des données du fichier soumis au risque de fragmentation à cause des chocs thermiques. Questions Ouvertes Question 1 : ssembleur Le pseudocode suivant calcule le PG (plus grand commun diviseur) de deux nombres entiers strictement positifs a et b, avec a>b : Tant que a%b (a modulo b) est différent de 0 c b b a % b a c Le résultat final est dans b. On demande d exprimer ce pseudocode en assembleur en supposant que les valeurs initiales de a et de b sont respectivement dans r0 et r1. Le résultat doit être rangé dans r2. Voici quelques précisions sur des instructions pouvant présenter une utilité : cont_egal ra, rb, c fait continuer l exécution à la ligne c si les registres ra et rb sont égaux. modulo ra, rb, rc calcule le reste de la division entière de rb par rc et range le résultat dans ra 0 : charge r4, 0 1 : modulo r3, r0, r1 2 : cont_egal r3, r4, 7 3 : charge r5, r1 4 : charge r1, r3 5 : charge r0, r5 6 : continue 1 7 : charge r2, r1 8 : stop 5
Question 2 : nalyse des accès au cache Nous voulons analyser l efficacité d un programme qui réalise un produit de matrices 2x2. haque valeur d une matrice est un mot (4 octets, 32 bits). // x_mn = élément mn de la matrice x (m = ligne, n = colonne) Pour i de 0 à 1: pour j de 0 à 1: r0 = 0 Pour k de 0 à 1: r1 = a_ik r2 = b_kj r0 = r0 + (r1 * r2) p_ij = r0 Les matrices sont rangées ligne par ligne en mémoire. Par exemple, une matrice serait rangée comme suit :... _00 _01 _10 _11... La mémoire cache a les caractéristiques et le comportement suivants : Le cache contient deux blocs haque bloc du cache contient deux mots de 4 octets chacun (= 8 octets) pproche de type Least Recently Used (LRU) lorsque un bloc doit être remplacé Une action d écriture du cache vers la mémoire centrale n est faite que lorsqu un bloc modifié doit être remplacé par un autre bloc. Lorsque le programme prend fin, les dernières actions d écriture du cache vers la mémoire centrale doivent aussi être faites. lignement des matrices en mémoire : le premier élément d une matrice apparait comme le premier élément du cache. Par exemple, la lecture de _00 provoque la lecture du bloc contenant _00 et _01. ans l analyse de l exécution de ce programme on peut supposer que les variables i, j et k sont mémorisées dans des registres et ne produisent pas de défaut de cache. Lorsque le programme commence son exécution, aucune des 3 matrices, et P ne sont dans le cache. ompléter le tableau ci dessous en indiquant seulement les accès à la mémoire centrale en lecture ou en écriture (pas les accès au cache). Préciser dans la colonne «bloc remplacé» quel est le bloc, s il y en a un, qui laisse sa place au nouveau bloc. il peut y avoir plus de lignes que nécessaire : 6
loc lu Type d opération : loc Explication (non demandée) N lecture/écriture remplacé 1 _00 lecture aucun _01 2 _00 _01 lecture aucun 3 _10 _11 lecture _00 _01 Le bloc _00 _01 a été ré utilisé 4 P_00 P_01 Lecture _00 _01 Le bloc P est lu (et modifié) dans le cache. e bloc sera écrit en mémoire juste avant d être remplacé par un autre à l étape6. 5 _00 Lecture _10 _11 _01 6 P_00 P_01 Ecriture aucun vant la lecture du bloc _00 _01 7 _00 _01 Lecture P_00 P_01 8 _10 _11 lecture _00 _01 Le bloc _00 _01 a été ré utilisé 9 P_00 P_01 lecture _00 _01 Le bloc P est lu (et modifié) dans le cache. e bloc sera écrit en mémoire juste avant d être remplacé par un autre à l étape11. 10 _10 lecture _10 _11 ébut de l Itération i=1 _11 11 P_00 P_01 Ecriture aucun vant la lecture du bloc _00 _01 12 _00 _01 Lecture P_00 P_01 13 _10 _11 Lecture _00 _01 Le bloc _10 _11 a été ré utilisé 14 P_10 P_11 Lecture _10 _11 Le bloc P est lu (et modifié) dans le cache. e bloc sera écrit en mémoire juste avant d être remplacé par un autre à l étape16. 15 _10 Lecture _10 _11 _11 16 P_10 P_11 Ecriture aucun vant la lecture du bloc _00 _01 17 _00 _01 Lecture P_10 P_11 18 _10 _11 Lecture _00 _01 Le bloc _10 _11 a été ré utilisé 19 P_10 P_11 Lecture _10 _11 Le bloc P est lu et modifié. 20 P_10 P_11 Ecriture aucun Écriture finale du bloc P en fin d exécution 7