Information, calcul et communication (SMA/SPH) EPFL - Semestre d’automne 2014–2015 Semaine 10 : architecture des ordinateurs 1 Un programme à étudier Considérez le programme suivant : 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: charge continue_ppe charge charge charge charge continue_ppe charge charge charge charge continue_ppe charge charge charge charge continue_egal r4, r0, r5, r0, r1, r4, r1, r5, r1, r2, r4, r2, r5, r2, r3, r4, r4, 0 r1, 6 r0 r1 r5 1 r2, 11 r1 r2 r5 1 r3, 16 r2 r3 r5 1 1, 0 L’instruction « continue_ppe a, b, L »signifie « continue si a plus petit ou égal à b ». Elle compare les valeurs a et b et, si a≤b, l’exécution continue à la ligne L. Les opérandes a et b peuvent être soit des constantes soit indiquer les registres à lire pour obtenir les valeurs à comparer. L’instruction « continue_equal a, b, L », qui signifie « continue si a égal b », agit de manière similaire, mais si les deux valeurs sont identiques. a) Supposez que, avant le début de l’exécution, les registres contiennent les valeurs suivantes : r0 123 r1 473 r2 17 r3 365 Simulez l’exécution du programme jusqu’à sa fin. Quelle est la valeur de ces quatre registres à la fin de l’exécution ? b) Quelle est la fonction de ce programme ? Justifiez votre réponse. c) Que se passerait-il si on remplaçait toutes les instructions continue_ppe avec des instructions continue_pp qui réalisent la comparaison stricte a<b au lieu de a≤b ? 1 2 Somme de valeurs absolues Ecrivez un programme assembleur pour calculer la somme des valeurs absolues de deux nombres. Utilisez les instructions vues au cours (p.ex., somme r1, r2, r3 ou soustrait r1, r2, r3) et dans l’exercice précédent. Au départ, les registres r0 et r1 contiennent les deux nombres à traiter et la somme de leurs valeurs absolues doit se trouver dans le registre r2 à la fin du programme. 3 Circuit Considérez le circuit suivant où la notation x représente la négation logique du bit x (c.-à-d. x = 1 − x). Quelle est la table de la vérité de ce circuit ? Quelle fonction logique réalise-t-il ? Pour aller plus loin 4 Comparaison de valeurs horaires Ecrivez un programme assembleur qui détermine laquelle de deux heures, H1 et H2 , exprimées en heures et minutes entre 00:00 et 24:00, est la plus petite. Au départ, le registre r0 (resp. r2) contient le nombre des heures de H1 (resp. H2 ) et le registre r1 (resp. r3) contient les minutes de H1 (resp. H2 ). A la fin de l’exécution du programme, r4 doit contenir la valeur 1 si H1 est une heure strictement plus petite que H2 et 0 sinon. Exemple : si l’on doit comparer H1 =8h10 et H2 =21h45, on vous donne r0 = 8, r1 = 10, r2 = 21 et r3 = 45 et à la fin de l’exécution, r4 devra contenir 1. Rappel : l’instruction « continue_pp a, b, L » fait continuer l’exécution à la ligne L si a est un nombre strictement plus petit que b. 2 Information, calcul et communication (SMA/SPH) EPFL - Semestre d’automne 2014–2015 Semaine 11 : Mémoires hiérarchiques 1 Bande passante (des mémoires) Vous voudriez prendre un cours en ligne avec deux amis et vous avez besoin de télécharger les leçons vidéo sur un ordinateur. Mais vous avez un autre rendez-vous pour lequel vous devez partir dans 2 heures. La durée de la leçon est de 1 heure 45 minutes. Vous avez les ordinateurs suivants à disposition : — L’ordinateur A a un disque dur qui peut transférer un mot 1 chaque 5 µs. — L’ordinateur B a un disque dur avec bande passante de 400 Mo/s. — L’ordinateur C a un disque dur avec bande passante de 2 Mo/s. On suppose ici que la bande passante de l’accès Internet est largement supérieure à celle de l’accès aux disques. Quel(s) ordinateur(s) vous permettra/permettront de télécharger la leçon, de la regarder et de partir à temps pour votre rendez-vous si a) la taille du fichier de la leçon est de 800 Mo ? b) la taille du fichier de la leçon est de 2 Go ? 2 Acheter un ordinateur Vous êtes dans un magasin d’électronique et vous voudriez acheter un ordinateur. Vous hésitez entre deux possibilités : — L’ordinateur A a un processeur à 2 GHz et un disque dur ayant une bande passante de 400 Mo/s. Il a 8 Mo de cache ; — l’ordinateur B a un processeur à 3 GHz et et un disque dur ayant une bande passante de 12.5 MegaBlocs/s (chaque bloc se compose de 4 mots). Il a 4 Mo de cache. Que choisissez vous si vous désirez minimiser le temps nécessaire pour : a) lire un fichier ? b) exécuter un programme qui accède souvent à la mémoire ? (Remarquer que les caches de A et B sont du même modèle, mais il y a deux fois plus de blocs dans celui de A que dans celui de B.) 1 Bloc pair Cache: Mémoire: 0 1 Bloc impair 2 3 4 5 6 8 ... 12 ... 16 ... 20 ... ... ... ... ... 7 Figure 1 – Cache à accès direct. 3 Nombre de défauts de cache Vous avez une mémoire cache ayant une taille de 8 mots. La taille d’un bloc de mémoire cache est de 4 mots. La mémoire cache utilise un accès direct. Les blocs de mémoire ayant une adresse paire sont mis en correspondance avec le premier bloc dans la mémoire cache et les blocs de mémoire ayant adresse impaire sont mis en correspondance avec le second bloc dans la mémoire cache (voir Fig. ??). Par exemple, les blocs de mémoire contenant le mots 0–3 (addresse de bloc 0), 8–11 (addresse de bloc 2) et 16–19 (addresse de bloc 4) sont mis en correspondance avec le premier bloc dans la cache. Les blocs de mémoire contenant le mots 4–7 (addresse de bloc 1), 12–15 (addresse de bloc 3) et 20–23 (addresse de bloc 5) sont mis en correspondance avec le second bloc dans la cache. En supposant que la mémoire cache est vide au départ, combien de défauts de cache se produisent lorsque le processeur accède à la séquence d’adresses suivante : 1, 3, 8, 5, 20, 18, 19, 53, 9, 11, 4, 43, 5, 6, 9, 18 ? 4 Localité spatiale et temporelle Supposons que vous vouliez calculer la somme de deux grands vecteurs dont la taille est beaucoup plus grande que la taille de la mémoire cache. Quel type de localité est la plus pertinente pour cette application ? Est-ce qu’il vaut mieux avoir des petits blocs de cache pour cette application ? 1. En informatique, un mot est l’unité de base manipulée par un microprocesseur. La taille d’un mot s’exprime en bits ou en octets, et est souvent utilisée pour classer les microprocesseurs (32 bits, 64 bits. . . ). Dans ce cours, on considère qu’un mot est égal à 4 octets. [Référence : wikipedia.org] 2 Pour aller plus loin 5 Hiérachie de données : exemple du CERN L’accélérateur de particules LHC du CERN génère 1 Po/s (= 1015 octets/s), soit l’équivalent de 12 ans de vidéo en HD par seconde ! Il n’y a simplement aucune technologie au monde qui puisse enregistrer toutes ces données en temps réel. Même en mettant beaucoup de disques en parallèle on n’arriverait pas à construire une connexion assez rapide pour y enregistrer toutes ces données en temps réel sans en perdre. Une batterie de circuits logiques (hardware) analysent ces données en temps réel et les filtrent par un facteur de l’ordre de 1000 avant de les injecter directement dans les mémoires centrales d’une batterie de processeurs spécialisés qui les réduisent encore par un facteur de l’ordre de 1000. En arrondissant aux ordres de grandeur : a) Quel est le débit de données à stocker résultant ? b) Combien de disques à 100 Mo/s en parallèle sont nécessaires pour un tel débit ? c) Combien d’heures faut-il pour remplir ces disques de 1 To (= 1012 octets) chacun ? d) Quel volume de données cela représente-t-il en 1 an ? 6 Mémoire cache idéale L’algorithme de remplacement de blocs en mémoire cache vu en cours s’appelle « LRU », pour « Least Recently Used », car il consiste à toujours remplacer en cache le bloc utilisé le plus loin dans le passé (c.-à-d. le bloc non utilisé depuis le plus longtemp). Le meilleur de tous les algorithmes de remplacement serait celui qui donne toujours le nombre de défauts de cache minimal. Appelons « OPT » (pour optimal) cet algorithme théorique qui consiste à toujours remplacer en cache le bloc qui serait (ré)utilisé le plus loin dans le futur. Cet algorithme est irréalisable en pratique vu que la mémoire cache ne peut pas prédire le futur. LRU et OPT possèdent tous les deux de la bonne propriété qu’un accroissement de la taille de la mémoire cache ne conduit jamais à un accroissement du nombre de défauts de cache 2 . Après remplissage initial de la mémoire cache, 3 l’exécution d’un programme donné a causé 3000 défauts de cache pour une mémoire cache de taille 6 Mo gérée par l’algorithme LRU. Pour une cache de seulement 4 Mo gérée par le même LRU, le même programme a causé 5000 défauts de cache. 2. Ce n’est pas le cas de tous les algorithmes. Par exemple, un algorithme de gestion de file « FIFO (First-In-First-Out) » ne vérifie pas de cette propriété. 3. On ne compte donc pas ici les défauts de cache liés au remplissage initial. 3 Pour ce même programme et ces mêmes tailles de cache, quatre étudiants ont simulé le comportement qu’aurait eu l’algorithme OPT et on trouvé les résultats suivants : 6 Mo 3000 2000 2000 0 1er étudiant 2e étudiant 3eétudiant 4eétudiant 4 Mo 6000 3000 1000 3000 Plusieurs de ces étudiants ont fait des erreurs. Sauriez-vous dire lesquels et pourquoi ? 7 Achat : une analyse plus informative Vous êtes dans un magasin d’électronique et hésitez entre deux choix. Vous demandez plus de détails et découvrez que pour l’ordinateur A, chaque accès au cache prend 1 ns (=1 nanoseconde) et chaque défaut de cache prend 120 ns, tandis que pour l’ordinateur B, chaque accès au cache prend 1.2 ns et chaque défault de cache prend 100 ns. Vous décidez de prendre un exemple d’un programme réel pour comparer les deux ordinateurs. L’algorithme du programme envisagé est le suivant : Algorithme pour programme de test entrée : x entier naturel sortie : y entier naturel y←1 Si x = 0 ou x = 1 y←0 s ← 0, i ← 2 Tant que s ≤ x et y = 1 Si i divise x y←0 Sinon i←i+1 s←i×i Sortir : y Supposons que pour chaque ordinateur la mémoire cache contient 2 blocs et la mémoire en contient 4. Chaque bloc contient 4 mots. L’adresse d’un mot en mémoire est dans l’intervalle [0, 15]. Dans cet exercise on ne compte pas les accès mémoire necessaires pour lire les instructions. On suppose par ailleurs quele processeur a plus de 4 registres de sorte qu’avec le programme utilisé ici, une fois qu’une variable a été lue dans le cache il n’est pas nécessaire de la relre. Supposons enfin que x est stocké à l’adresse mémoire 0, y en 1, i en 12, et s à l’adresse 13 (toutes les variables sont initialement en mémoire), et que la valeur de x est initialement 4. a) Que fait le programme ci-dessus ? 4 b) Explicitez les accès à la mémoire que le programme fait pour lire les 4 variables. c) Combien d’accès au cache a-t-on ? Combien de défauts de cache a-t-on ? d) Si vous devez choisir l’ordinateur le plus rapide, lequel prendriez-vous sur la base de cet algorithme ? 5