Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne

Slides:



Advertisements
Présentations similaires
Cours de Langage C Récursivité. Objectifs de la séance 11 Connaître la récursivité. Mesurer un temps d’exécution. 2.
Advertisements

TP 1 BIS Programmation structurée à l’aide de fonctions (FC) et de bloc fonctionnels (FB)
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
Cours COMPOSANTES DES VECTEURS Dimitri Zuchowski et Marc-Élie Lapointe.
appareil de mesure (pHmètre P310 Chauvin-Arnoux) Pierre DIEUMEGARD,
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Information, Calcul, Communication
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Présentation J’ai quelques grandes (et petites) questions que je souhaite soumettre à votre sagacité. Vos suggestions me seront certainement utiles et.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Algorithmique demander jeu du pendu.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Système de commande automatique Linéarité- L'équation des éléments
CHAPITRE III Hypothèses de la Résistance des Matériaux
Information, Calcul, Communication
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Communication, Calcul
Mettre le son et cliquer
Les Instructions – Organigramme
Principes de programmation (suite)
Polymorphisme : règles
Fonctions logiques et algèbre booléenne
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Algorithmique & Langage C
Information, Communication, Calcul
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Présentation Structure données abstraite (TDA) Rappel : File
Semaine #4 INF130 par Frédérick Henri.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
La question de ce module
Information, Communication, Calcul
Notion De Gestion De Bases De Données
Cours N°10: Algorithmiques Tableaux - Matrices
Programmation Orientée Objet
Formation sur les bases de données relationnelles.
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Thème Sujet à développer
CRITERES DE QUALITE 1) PRECISION 2) RAPIDITE 3) AMORTISSEMENT
Assembleur, Compilateur et Éditeur de Liens
NUMERATION et REPRESENTATION DES NOMBRES
Mettre le son et cliquer
La projection orthogonale à vues multiples
Architecture matérielle des ordinateurs
Lois de Probabilité Discrètes
Lois de Probabilité Discrètes
Introduction au routage de PCB
De Scratch à Python : une transition douce… COMMUNICATION
Laboratoire V: Création d’un protocole expérimental
MATHÉMATIQUES FINANCIÈRES I
Nouveautés concernant le Sport des enfants J+S en 2019
Information, Calcul, Communication
Reconnaissance de formes: lettres/chiffres
Information, Calcul, Communication
Tris Simples/Rapides.
Présenté par Viviane Lévesque
Type Tableau Partie 1 : Vecteurs
Transcription de la présentation:

Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne fait partie de son cours d’introduction à l’information, à la communication, et au calcul. Il s’inscrit dans le 3e module de ce cours qui porte sur le fonctionnement et la sécurité des systèmes informatiques.

Où en sommes-nous ? Technologie des mémoires Hiérarchie de mémoires Concept Objectif Réalisation Lecture Ecriture Gestion LRU Exemple Pourquoi – Localité L’exemple du videoclip précédent a montré pratiquement que l’algorithme LRU est un bon prédicteur du bloc à éjecter de la cache quand elle est pleine … … mais cela n’explique pas pourquoi ses prédictions sont bonnes. Expliquer ce pourquoi est le but de ce dernier clip sur le sujet.

Revoyons de plus près la boucle de la somme de n entiers somme des premiers n entiers entrée : n sortie : m s  0 tant que n > 0 s  s + n n  n – 1 m  s Rejetons un œil sur la boucle de l’algorithme de sommation des N premiers entiers que nous avons utilisé comme exemple dans le clip précédent pour illustrer les prédictions LRU.

1er phénomène: Accès répétés à des addresses identiques Proc Tant que n > 0 s  s + n n  n – 1 lire @13 (en cache dans n-1 cas) charger bloc @12 placer bloc @12 retourner 2 lire @14 (en cache) retourner 0 lire @13 (en cache) somme s, n (0 + 2) écrire 2 @14 (en cache) somme n, -1 (2 – 1) écrire 1 @ 13 (en cache) On observe dans chaque exécution de cette boucle un 1er phénomène: En le bref laps de temps de l’exécution de la boucle, le processeur accède 2x à s et 4x à n … … et cette boucle peut être répétée des centaines voire des milliers de fois ou plus. cache 12 n s ? mémoire principale 4 8 12 m n s

C’est ce qu’on appelle la localité temporelle En cache parce qu’il y a eu des accès à la même variable à des instants rapprochés dans le temps C’est typique de la réalité Tous les algorithmes “intéressants” accédant de façon répétée aux mêmes variables (Pendant une semaine à la neige, on réutilise son snowboard tous les jours) En termes clairs, le processeur réaccède de très nombreuses fois aux mêmes variables pendant une fenêtre de temps non-négligeable. Cette observation n’est pas un hasard mais une réalité typique de la quasi totalité des programmes. Tous les programmes implémentant des algorithmes intéressants comportent des boucles qui réaccèdent de nombreuses fois aux mêmes variables au cours de leur exécution. Le groupe de variables auxquelles un programme réaccède peut certes évoluer lentement au cours de son exécution mais cette «localité temporelle», puisque tel est son nom, existe bel et bien surtout au sein des nombreuses boucles, même si elle évolue progressivement entre ces boucles. En termes de bagages de vacances de neige, on a besoin de son snowboard tous les jours. Donc il est intéressant de l’emporter en sachant qu’il sera intensément utilisé. 12 n s

1er phénomène: Accès consécutifs à des addresses proches Tant que n > 0 s  s + n n  n – 1 lire @13 charger bloc @12 placer bloc @12 retourner 2 lire @14 (en cache) retourner 0 lire @13 (en cache) somme s, n (0 + 2) écrire 2 @14 (en cache) somme n, -1 (2 – 1) écrire 1 @ 13 (en cache) On observe par ailleurs un 2nd phénomène dans l’exécution de ce programme: Le programme accède typiquement à des variables – n et s – qui se trouvent non seulement impliquées dans les mêmes calculs mais de ce fait aussi situées à des adresses tombant dans les mêmes blocs de la mémoire – 12 dans le cas présent. cache 12 n s ? mémoire principale 4 8 12 m n s

C’est ce qu’on appelle la localité spatiale En cache parce qu’il y a eu des accès à des variables différentes mais à des adresses rapprochées dans l’espace C’est typique de la réalité Tous les algorithmes “intéressants” travaillent avec une série de variables liées entre elles (Si on va skier, on a besoin du ski gauche et du ski droit … et des bottines associées) En termes clairs encore une fois, le processeur accède quasi simultanément à des variables qui sont logiquement impliquées dans les même calculs et donc typiquement co-situées. Cette observation n’est pas non plus un hasard mais une réalité typique de tous les programmes. Tous les programmes implémentant des algorithmes intéressants manipulent ensemble des groupes de variables liées aussi bien conceptuellement que physiquement. Les groupes de variables auxquelles un programme accède évoluent certes au cours de son exécution mais cette «localité spatiale», puisque tel est son nom, existe bel et bien dans tout programme. En termes de bagages de vacances de ski, on a besoin tous les jours non seulement du ski gauche mais aussi du ski droit car ils font partie du même programme. Il est donc intéressant d’emporter les deux en sachant qu’ils seront toujours utilisés ensemble. 12 n s

Et si les blocs étaient plus petits Proc 2 mots au lieu de 4 Plus de petits blocs en cache n et s seraient dans des blocs différents => Cela causerait 2 défauts de cache au lieu de 1 => Moins de localité spatiale mais … … performance maintenue avec une cache plus petite Parlant de variables co-situées dans les mêmes blocs on peut se demander ce qui arriverait si on prenait des blocs plus petits, p.ex. de 2 mots au lieu de 4. 1 Cela permettrait d’accommoder plus de blocs plus petits dans une cache de même taille. 2 Par contre n et s atterriraient dans des blocs différents, 3 ce qui causerait 2 défauts de cache au lieu d’un seul. 4 La localité spatiale en souffrirait … … mais on pourrait maintenir la performance avec une cache plus petite. cache 12 n 14 s mémoire principale 2 : 12 14 m : : n s

Et si les blocs étaient plus grands Proc 8 mots au lieu de 4 Moins de grands blocs en cache m, n, et s ne peuvent pas être en mémoire en même temps => Cela causerait 2 défauts de cache au lieu de 1 à chaque exécution du programme => Moins de localité temporelle mais … … performance maintenue avec une cache plus grande Inversement on peut se demander ce qui arriverait si on prenait des bloc plus grands, p.ex. de 8 mots au lieu de 4. 1 Cela permettrait d’accommoder moins de blocs plus grands dans une cache de même taille. 2 Par contre m, n et s ne pourraient plus se retrouver en cache en même temps, 3 ce qui causerait aussi 2 défauts de cache au lieu d’un seul à chaque exécution du programme. 4 Donc ici c’est la localité temporelle qui souffrirait … … mais on pourrait maintenir la performance avec une cache plus grande. cache 8 n s s mémoire principale 8 m n s s

Localité spatiale & temporelle vs. taille des blocs Beaucoup de petits blocs Meilleure localité temporelle Moins bonne localité spatiale Quelques grands blocs Meilleure localité spatiale Moins bonne localité temporelle Plus de défauts de cache Blocs plus grands Au final on voit que si on réduit la taille des blocs cela favorise la localité temporelle mais nuit à la localité spatiale … et vice versa. Quelque part il doit donc y avoir une taille de blocs optimale pour laquelle le nombre de défauts de cache est minimal. Cet optimum dépend cependant de la taille de la cache et du comportement du programme. Or quand on construit un ordinateur on doit fixer la taille de sa cache et celle de ses blocs. Il y a donc peut de chance que les choix du constructeur soient optimaux pour TOUS les programmes. L’important est qu’ils soient proches de l’optimum pour le mélange de programmes qui vont typiquement tourner dessus ledit ordinateur, ce qui est heureusement le cas dans la pratique courante. Optimum dépendant de la taille de la cache et de la nature du programme