La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

La question de ce module

Présentations similaires


Présentation au sujet: "La question de ce module"— Transcription de la présentation:

1

2 La question de ce module
Comment fonctionnent et avec quoi sont fabriqués les systèmes informatiques capables de traiter de l’information avec des algorithmes ?

3 La réponse de ce module Grâce à trois technologies …
Des transistors (pour le processeur et la mémoire vive) => Leçons 1 (Architecture) & 2 (Hiérarchie) Des disques et autres flashes (pour les mémoires mortes) => Leçon 3 (Stockage) Des réseaux (pour les communications entre machines et utilisateurs) => Leçon 4 (Réseaux) … qui demandent un permis de conduire La sécurité informatique => Leçon 5 (Sécurité)

4 Leçon III.2 – Hiérarchies de Mémoires
Faculté Informatique et Communications Babak Falsafi, André Schiper, Willy Zwaenepoel, Anastasia Ailamaki, Phil Janson Après avoir étudié au cours des deux premières leçons du module “Systèmes” les principes de fonctionnement du processeur et de la mémoire centrale d’un ordinateur de Von Neumann, cette troisième leçon va maintenant se tourner vers le fonctionnement des mémoires de masse et des réseaux de communication entre ordinateurs.

5 Nous vivons dans un univers numérique
Divertissements Vie Estimation pour 2017: bytes (=octets) (= 100 zetabytes) Commerce

6 Comment stocker tout cela dans les mémoires de nos ordinateurs ?
Unité arithm. Banc de registres Mémoire pour les données Décodeur Pointeur de ligne + 1 Mémoire pour les instructions

7 Plan de cette leçon Technologie des mémoires
Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple Hiérarchie des mémoires – le pourquoi

8 1. Technologies Hard Disk Array Registres du processeur Mémoire cache
On-Chip 2m Disque dur SSD 1.2m Robot à bandes magnétiques Mémoire primaire (RAM) Off-Chip Tablette FLASH USB FLASH

9 Caractéristiques importantes de chaque technologie
Coût Capacité = le nombre d’octets que peut contenir le support Coût unitaire = p.ex. par Go Performance Latence = le temps qu’il faut pour accéder à un octet donné sur le support Débit = le nombre d’octets consécutifs auxquels on peut alors accéder par seconde Rétention Volatilité = caractéristique des supports qui ne retiennent l’information que sous tension (mémoires vives) Rémanence = caractéristique des supports qui retiennent l’information même hors tension (mémoires mortes)

10 Capacité Support Texte Image Audio Video 10Ko 2 pages 100Ko 1 photo
1Mo Diskette 1 livre 1 photo HD 1 min. MP3 10Mo 1 min. hi-fi 100Mo 1Go 1h hi-fi 1h video 10Go 2500 plages 1h video HD 100Go Bibliothèque 1To “1000 films 10To Disque dur Librairie du Congrès US en poche” CDs DVDs RAM Flash To Bande magnétique

11 Capacité et latence 1 To 10 ms 10µs 10 ns 0.1 ns (10 GHz)

12 Les caractéristiques en perspective
Latence Débit Coût ($/Go) Capacité Rétention Processeurs ns GHz RAM ns Go/s 10 Mo - Go NON Flash µs 0.5 Go - To Oui Disques ms 100s Mo/s 0.05 > To Bandes magnétiques Encore plus lent ! Encore moins cher ! grand !

13 2. Le concept d’hiérarchie
Technologie des mémoires Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple Hiérarchie des mémoires – le pourquoi

14 Problème ! Capacité Bande magnétique Disque Flash RAM Performance
La mémoire RAM est la seule dont le débit et la latence puissent satisfaire les processeurs … MAIS elle présente un coût prohibitif et donc une taille limitée … sans compter qu’elle oublie tout quand on coupe le courant !

15 Cette leçon Mémoire Prochaine leçon Stockage
Solution: mémoires hiérarchiques On garde en mémoire rapide ce qu’on utilise momentanément Informations en usage Gérées automatiquement (utilisateur/programme pas impliqué) Volatiles Proc Cette leçon Mémoire on-chip Mémoire Mémoire off-chip FLASH Informations archivées Gérées “manuellement” (par utilisateur ou programme) Perennes Stockage Prochaine leçon Disque dur Bande magnétique

16 Une analogie avec la vie réelle
Habits dans la valise Espace limité Usage temporaire Le temps d’un voyage Selon le climat Couleurs assorties Avec vous …mais dans l’armoire Tous vos habits Permanent Uniquement à domicile

17 Une autre analogie avec la vie réelle
Musique/photos sur smartphone Espace limité Usage temporaire Dans votre poche, rapide … mais sur votre Laptop Capacité “illimitée” Tou(te)s les chansons/photos/films A la maison/au travail, distant

18 3. Le but Technologie des mémoires
Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple Hiérarchie des mémoires – le pourquoi

19 Mémoire cache et mémoire centrale
processeur mémoire cache (on chip) Mémoire RAM principale ou centrale (off chip)

20 Si l’information requise par le processeur est en cache
Accès immédiat mémoire cache (on chip)

21 Si l’information requise par le processeur est hors cache
Ordre d’accès passé à la mémoire centrale (2) Le processeur attend la la réponse (3) 1 3 mémoire cache (on chip) pas en cache 2 mémoire centrale (off chip)

22 capacité vitesse Le problème mémoire hors puce mémoire sur puce
Trop lente mémoire sur puce Trop chère Trop petite vitesse

23 toutes les données à la vitesse du processeur
L’objectif Idéalement: toutes les données à la vitesse du processeur capacité mémoire hors puce ??? mémoire sur puce vitesse

24 capacité ??? vitesse La réalité mémoire hors puce sur puce
Une mémoire aussi grande que celle hors puce mais seulement un peu moins rapide que la cache

25 4. La réalisation Technologie des mémoires
Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple Hiérarchie des mémoires – le pourquoi

26 Implémentation logique de la mémoire (cache et centrale)
La mémoire est composée de MOTS Typiquement 4 octets (32 bits) ou 8 octets (64 bits) par mot Chaque mot a une adresse entre 0 et N …. La mémoire comme table de mots 1 2 3 4 N

27 Accès logique à la mémoire (cache et centrale)
Processeur Le processeur donne à la mémoire Un ordre de lecture / écriture L’adresse du MOT concerné Lire / adresse 4 …. 1 2 3 4 N

28 Accès logique à la mémoire (cache et centrale)
Processeur registre contenu En cas de lecture la mémoire renvoie au processeur le contenu du mot de mémoire concerné En cas d’écriture le processeur donne en plus le contenu du registre à sauvegarder contenu contenu …. 1 2 3 4 N

29 Implémentation physique de la mémoire (cache et centrale)
mémoire principale …. 4 N cache .. BLOC de 4 mots (128 (ou 256) bits) processeur MOT (32 (ou 64) bits) Cache et mémoire centrale sont organisées en BLOCS Le transfert de données entre les deux se fait en blocs

30 Implémentation physique de la mémoire (cache et centrale)
mémoire principale …. 4 N cache .. BLOC de 4 mots (128 ou 256 bits) processeur MOT (32 ou 64 bits) La mémoire centrale est plus lente que la mémoire cache Mais elle échange 4 x plus d’informations en un coup !

31 Implémentation physique de la mémoire cache = mémoire associative
Comment savoir quels mots de la mémoire centrale se trouvent où dans la mémoire cache ? Chaque bloc de la mémoire cache est doté de bits supplémentaires Ces bits contiennent l’adresse du bloc correspondant dans la mémoire centrale cache …. 8 23 17 90 14 8 23 17 90 14 adresse données

32 Suivent 6 questions Proc cache 23 17 90 104 mémoire principale 40 45
Q1: comment le processeur lit-il un mot ? Q1.a: quand le mot est en cache ? Q1.b: quand le mot est hors cache ? Q2: comment le processeur écrit-il un mot ? Q2.a: quand le mot est en cache ? Q2.b: quand le mot est hors cache ? Q3: quid quand la cache est pleine ? Q4: quid quand le bloc remplacé a été modifié ? cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

33 Q1.a: Comment le processeur lit-il un mot quand le mot est en cache ?
1. Le processeur envoie un ordre de lecture à l’adresse du mot adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

34 Q1.a: Comment le processeur lit-il un mot quand le mot est en cache ?
2. La mémoire cache constate que le mot est présent cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

35 Q1.a: Comment le processeur lit-il un mot quand le mot est en cache ?
3. La mémoire cache renvoie le contenu du mot 17 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

36 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
1. Le processeur envoie un ordre de lecture à l’adresse du mot adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

37 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
2. La mémoire cache constate que le mot est absent cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

38 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
3. L’absence du mot cause un “défaut de cache” cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

39 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
4. La mémoire cache déclenche le chargement du bloc manquant cache 8 23 17 90 104 bloc 0 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

40 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
5. La mémoire centrale renvoie le bloc manquant cache 8 23 17 90 104 40 45 100 16 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

41 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
6. La mémoire cache enregistre le bloc manquant et son adresse cache 40 45 100 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

42 Q1.b: Comment le processeur lit-il un mot quand le mot est hors cache ?
7. La mémoire cache renvoie le mot demandé au processeur 100 cache 40 45 100 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

43 PAUSE

44 Suivent encore 4 questions
Proc Q1: comment le processeur lit-il un mot ? Q1.a: quand le mot est en cache ? Q1.b: quand le mot est hors cache ? Q2: comment le processeur écrit-il un mot ? Q2.a: quand le mot est en cache ? Q2.b: quand le mot est hors cache ? Q3: quid quand la cache est pleine ? Q4: quid quand le bloc remplacé a été modifié ? cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

45 Q2.a: Comment le processeur écrit-il un mot quand le mot est en cache ?
1. Le processeur envoie un ordre d’écriture à l’adresse du mot écrire adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

46 Q2.a: Comment le processeur écrit-il un mot quand le mot est en cache ?
2. La mémoire cache constate que le mot est présent écrire adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

47 Q2.a: Comment le processeur écrit-il un mot quand le mot est en cache ?
3. La mémoire cache écrit le mot et renvoie une confirmation au processeur confirmation cache 8 23 28 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

48 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
1. Le processeur envoie un ordre d’écriture à l’adresse du mot écrire adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

49 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
2. La mémoire cache constate que le mot est absent écrire adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

50 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
3. L’absence du mot cause un “défaut de cache” écrire adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

51 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
4. La mémoire cache déclenche le chargement du bloc manquant écrire adresse 2 cache 8 23 17 90 104 block 0 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

52 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
5. La mémoire centrale renvoie le bloc manquant écrire adresse 2 cache 8 23 17 90 104 40 45 100 16 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

53 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
6. La mémoire cache enregistre le bloc manquant et son adresse écrire adresse 2 cache 40 45 100 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

54 Q2.b: Comment le processeur écrit-il un mot quand le mot est hors cache ?
7. La mémoire cache écrit le mot et renvoie une confirmation au processeur confirmation cache 40 45 10 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

55 Suivent encore 2 questions
Proc Q1: comment le processeur lit-il un mot ? Q1.a: quand le mot est en cache ? Q1.b: quand le mot est hors cache ? Q2: comment le processeur écrit-il un mot ? Q2.a: quand le mot est en cache ? Q2.b: quand le mot est hors cache ? Q3: quid quand la cache est pleine ? Q4: quid quand le bloc remplacé a été modifié ? cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

56 Q3: Que se passe-t-il quand la cache est pleine ?
Proc Il faut remplacer un bloc Quel bloc choisir ? On remplace automatiquement le bloc utilisé le moins récemment = algorithme Least Recently Used (LRU) (=> on fait l’hypothèse qu’on n’en a plus besoin !?) adresse 4 cache 40 45 100 16 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

57 Q3: Que se passe-t-il quand la cache est pleine ?
Proc Comment savoir quel est le bloc utilisé le moins récemment ? A chaque bloc de la cache est associé un compteur Ces compteurs contiennent autant de bits que le nombre de blocs de cache A chaque accès à la cache Le compteur du dernier bloc adressé est mis à 1 Et tous les autres compteurs glissent de 1 bit vers la gauche Chaque compteur contient donc une puissance de 2 Le plus grand compteur indique le plus “ancien” bloc adresse 4 cache 0 1 40 45 100 16 1 1 8 23 17 90 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

58 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 1. Le processeur envoie l’adresse du mot à référencer adresse 4 cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 17 17 90 90 104 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

59 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 2. Défaut de cache et cache pleine adresse 4 cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 17 17 90 90 104 104 2 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

60 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 3. Effacement du bloc le plus ancien adresse 4 cache cache 40 40 45 45 100 100 16 16 1 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

61 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 4. Puis on procède comme quand la cache n’est pas pleine => La cache demande à la mémoire le bloc manquant adresse 4 cache 40 45 100 16 1 block 4 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

62 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 5. La mémoire centrale renvoie le bloc manquant adresse 4 cache cache 40 40 45 45 100 100 16 16 1 5 5 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

63 Q3: Que se passe-t-il quand la cache est pleine ?
Proc 6. La mémoire cache enregistre le bloc manquant et son adresse et met les compteurs à jour adresse 4 cache 40 45 100 16 2 4 5 5 1 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

64 Q4: quid quand le bloc remplacé a été modifié ?
Proc La 3e opération devient: 3. Le bloc le plus ancien doit être renvoyé en mémoire centrale adresse 4 cache cache 40 40 45 45 100 100 16 16 1 8 8 23 23 28 17 90 90 104 104 2 23 28 90 104 mémoire principale 4 8 12 40 45 100 16 5 5 23 17 90 104

65 5. Exemple Technologie des mémoires
Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple (typique des exercices et examens) Hiérarchie des mémoires – le pourquoi

66 Exemple de la leçon 3.1: Somme des entiers jusqu’à n
somme des premiers n entiers entrée : n sortie : m s  0 tant que n > 0 s  s + n n  n – 1 m  s

67 On va se concentrer sur la boucle
somme des premiers n entiers entrée : n sortie : m s  0 tant que n > 0 s  s + n n  n – 1 m  s

68 Notre ordinateur hypothétique
Proc Cache avec 2 blocs Mémoire avec 4 blocs Blocs de 4 mots (Pas de registres dans le processeur) cache ? ? mémoire principale 4 8 12

69 Emplacement hypothétique des données dans la mémoire
Proc s et m initialement 0 n initialement 2 cache ? ? mémoire principale 4 8 12 m=0 n=2 s=0

70 Exécution de la boucle Tant que n > 0 s  s + n n  n – 1 Proc
cache ? ? mémoire principale 4 8 12 m=0 n=2 s=0

71 Exécution lire @13 lire @ 13 Tant que n > 0 s  s + n n  n – 1
Proc cache ? ? mémoire principale 4 8 12 m=0 n=2 s=0

72 Exécution Tant que n > 0 lire @13 s  s + n
n  n – 1 @13 pas en cache (défaut) Proc cache ? ? mémoire principale 4 8 12 m=0 n=2 s=0

73 Exécution charger bloc @12 Tant que n > 0 lire @13 s  s + n
n  n – 1 @13 pas en cache (défaut) charger Proc cache ? ? charger mémoire principale 4 8 12 m=0 n=2 s=0

74 Exécution 12 Tant que n > 0 lire @13 s  s + n
n  n – 1 @13 pas en cache (défaut) charger Proc cache ? ? 12 n=2 s=0 mémoire principale 4 8 12 m=0 n=2 s=0

75 Exécution Tant que n > 0 s  s + n n  n – 1 lire @13
@13 pas en cache (défaut) charger placer Proc cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

76 Exécution @13 = 2 Tant que n > 0 lire @13 s  s + n
n  n – 1 @13 pas en cache (défaut) charger placer retourner 2 Proc @13 = 2 cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

77 Exécution lire @14 Tant que n > 0 lire @13 s  s + n
n  n – 1 @13 pas en cache (défaut) charger placer retourner 2 Proc cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

78 Exécution @14 = 0 (en cache!) Tant que n > 0 lire @13 s  s + n
n  n – 1 Proc @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 @14 = 0 (en cache!) cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

79 Exécution lire @13 Tant que n > 0 s  s + n lire @13 n  n – 1
Proc @13 pas en cache (défaut) charger placer retourner 2 (en cache!) retourner 0 cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

80 Exécution @13 = 2 (en cache!) Tant que n > 0 s  s + n n  n – 1
Proc @13 = 2 (en cache!) @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) cache 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

81 Exécution Tant que n > 0 s  s + n n  n – 1 lire @13
Proc cache @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) 12 n=2 s=0 ? mémoire principale 4 8 12 m=0 n=2 s=0

82 Exécution écrire 2 @14 Tant que n > 0 s  s + n n  n – 1 lire @13
Proc écrire cache 12 @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) n=2 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

83 Exécution lire @13 Tant que n > 0 s  s + n n  n – 1 lire @13
Proc cache 12 n=2 s=2 @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) ? mémoire principale 4 8 12 m=0 n=2 s=0

84 Exécution @13 = 2 Tant que n > 0 s  s + n n  n – 1 lire @13
Proc @13 = 2 cache 12 n=2 s=2 @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) ? mémoire principale 4 8 12 m=0 n=2 s=0

85 Exécution Tant que n > 0 s  s + n n  n – 1 lire @13
Proc @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) cache 12 n=2 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

86 Exécution écrire 1 @13 Tant que n > 0 s  s + n n  n – 1 lire @13
Proc @13 pas en cache (défaut) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) écrire 13 (en cache) écrire cache 12 n=1 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

87 Combien d’accès à la cache et à la mémoire ?
Tant que n > 0 s  s + n n  n – 1 Proc @13 pas en cache (défaut) charger placer retourner (en cache) retourner 0 (en cache) retourner 2 somme s, n (0 + 2) écrire (en cache) 1 somme n, -1 (2 – 1) écrire 13 (en cache) cache 12 n=1 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

88 Pour toutes les itérations suivantes de la boucle
Tant que n > 0 s  s + n n  n – 1 Proc (en cache) charger placer retourner 2 6 accès en cache, 0 défaut (en cache) retourner 0 retourner 2 somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) écrire 13 (en cache) cache 12 n=1 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

89 Au total Proc cache 12 n=1 s=2 ? mémoire principale m=0 n=2 s=0
Pour un total de 6n accès à la mémoire 6n - 1 en cache (à 1ns/accès) 1 défaut de cache => accès en mémoire (à 100ns) Performance totale -> ( n - 1) ns pas mal du tout si n est très grand ce qui est le cas en pratique cache 12 n=1 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

90 6. Pourquoi ça marche Technologie des mémoires
Hiérarchie des mémoires – le concept Hiérarchie des mémoires – le but Hiérarchie des mémoires – la réalisation Un exemple Hiérarchie des mémoires – le pourquoi

91 Regardons de plus près les accès en cache
Proc (en cache dans n-1 cas) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) écrire 13 (en cache) Tant que n > 0 s  s + n n  n – 1 cache 12 n s ? mémoire principale 4 8 12 m n s

92 Il y a deux cas de figure – Cas 1
Accès aux mêmes addresses proches dans le temps Proc Tant que n > 0 s  s + n n  n – 1 (en cache dans n-1 cas) charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) écrire 13 (en cache) cache 12 n s ? mémoire principale 4 8 12 m n s

93 C’est ce qu’on appelle la localité temporelle
En cache parce qu’il y a eu des accès à des adresses identiques répétés dans le temps C’est typique de la réalité Tous les algorithmes “intéressants” comportent des boucles accédant aux mêmes variables (Pendant une semaine à la neige, on réutilise son snowboard tous les jours) 12 n s

94 Il y a deux cas de figure – Cas 2
Accès à des adresses proches dans l’espace (mêmes blocs) Proc Tant que n > 0 s  s + n n  n – 1 charger placer retourner 2 (en cache) retourner 0 (en cache) somme s, n (0 + 2) écrire (en cache) somme n, -1 (2 – 1) écrire 13 (en cache) cache 12 n s ? mémoire principale 4 8 12 m n s

95 C’est ce qu’on appelle la localité spatiale
En cache parce qu’il y a eu des accès à des adresses différentes mais proches 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) 12 n s

96 Et si les blocs étaient plus petits
Proc 2 mots au lieu de 4 plus de petits blocs n et s seraient dans des blocs différents ce qui causerait 2 défauts de cache au lieu de 1 Moins de localité spatiale mais performance maintenue avec une cache plus petite cache 12 n 14 s mémoire principale 2 : 12 14 m : : n s

97 Et si les blocs étaient plus grands
Proc 8 mots au lieu de 4 moins de blocs en cache en même temps m, n, et s ne peuvent pas être en mémoire en même temps ce qui causerait 2 défauts de cache au lieu de 1 à chaque répétition du programme ‘somme’ Moins de localité temporelle mais peut être compensée par une cache plus grande cache 8 n s s mémoire principale m n s s

98 Localité spatiale vs. temporelle & Taille des blocs
Plus de défauts de cache Blocs plus grands Beaucoup de petits blocs Meilleure localité temporelle Moins bonne localité spatiale Quelques grands blocs Meilleure localité spatiale Moins bonne localité temporelle Optimum dépendant de la taille de la cache et de la nature du programme

99 Résumé Technologie – Capacité, latence, débit, volatilité Hiérarchie
Localité – spatiale, temporelle < taille cache  taille blocs  programme vitesse capacité mémoire combinée mémoire hors puce Mémoire sur puce Plus de défauts de cache Blocs plus grands

100 Les utilisateurs ne peuvent ignorer la localité

101 Somme d’éléments de matrice par lignes ou par colonnes ?
for (i=0;i<n;i++) { /* row by row */ for (j=0;j<n;j++) { /* then column by column */ acc += m[i][j]; } for (j=0;j<n;j++) { /* column by column */ for (i=0;i<n;i++) { /* then row by row */ acc += m[i][j]; }

102 Résultats


Télécharger ppt "La question de ce module"

Présentations similaires


Annonces Google