La question de ce module

Slides:



Advertisements
Présentations similaires
CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
Advertisements

TP 1 BIS Programmation structurée à l’aide de fonctions (FC) et de bloc fonctionnels (FB)
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
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.
INFO 2014 Fichiers et base de données Philippe Fournier-Viger Département d’informatique, U.de Moncton Bureau D216,
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
NOTIONS INFORMATIQUES : RAPPEL
Les mémoires de l’ordinateur
La spécialité math en TS
La technologie des mémoires
L’ordinateur et ses composants
Architecture des ordinateurs, Environnement Numérique de Travail
TIC (Techniques de l’Information et de la Communication)
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Table des matières, citation, mise en page
Architecture des microordinateurs
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Utilisation de Windows
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
Rappels et présentation des supports de stockage
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
Les composants informatiques
Architecture de machines Le microprocesseur
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Semaine #7 INF130 par Frédérick Henri.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Information, Calcul, Communication
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
Semaine #4 INF130 par Frédérick Henri.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Présentation de la carte graphique
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
Gestion des fichiers Niv2
TIC (Techniques de l’Information et de la Communication)
Formation sur les bases de données relationnelles.
Composantes principales des ordinateurs
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Qu’est-ce qu’un ordinateur ?. Ordinateur – calculateur Un ordinateur est une machine qui permet de réaliser, d’exécuter des opérations, des calculs, c’est.
Architecture des ordinateurs
Les unités de volume L’unité: 1 octet = 1 caractère
Gestion des fichiers GIF-1001 Ordinateurs: Structure et Applications, Hiver 2015 Jean-François Lalonde Source:
ARCHITECTURE DES ORDINATEURS
Mémoire: cache, RAM, disque dur
NUMERATION et REPRESENTATION DES NOMBRES
B.Shishedjiev - Informatique
Introduction aux microprocesseurs
Architecture matérielle des ordinateurs
1 Décodage d’adresses et mémoires Introduction Définition, Caractéristiques des mémoires Classification des mémoires La mémoire centrale Caractéristiques.
LES MEMOIRES.
Chapitre 7 : Les mémoires
Notions de base sécurité
18 octobre 2007 Fonctionnement d’un ordinateur Achat d’un ordinateur
Présentation 4 : Sondage stratifié
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Information, Calcul, Communication
Logiciel de présentation
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Notions de base sécurité
Type Tableau Partie 1 : Vecteurs
Traitement de TEXTE 2 Stage – Semaine 3.
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

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 ?

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é)

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.

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

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

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

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

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)

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 175-350 To Bande magnétique

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

Les caractéristiques en perspective Latence Débit Coût ($/Go) Capacité Rétention Processeurs ns GHz RAM 1 - 100 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 !

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

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 !

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

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

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

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

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

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

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)

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

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

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

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

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

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 / écrire @ adresse 4 …. 1 2 3 4 N

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

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

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 !

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

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

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 lire @ adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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

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

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 lire @ adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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

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

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

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

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

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

PAUSE

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

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 28 @ adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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 28 @ adresse 9 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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

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 10 @ adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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 10 @ adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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 10 @ adresse 2 cache 8 23 17 90 104 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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 10 @ adresse 2 cache 8 23 17 90 104 block 0 mémoire principale 4 8 12 40 45 100 16 23 17 90 104

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 10 @ 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

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 10 @ 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

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

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

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 !?) lire @ 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

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 lire @ 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

Q3: Que se passe-t-il quand la cache est pleine ? Proc 1. Le processeur envoie l’adresse du mot à référencer lire @ 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

Q3: Que se passe-t-il quand la cache est pleine ? Proc 2. Défaut de cache et cache pleine lire @ 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

Q3: Que se passe-t-il quand la cache est pleine ? Proc 3. Effacement du bloc le plus ancien lire @ 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

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 lire @ 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

Q3: Que se passe-t-il quand la cache est pleine ? Proc 5. La mémoire centrale renvoie le bloc manquant lire @ 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

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 lire @ 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

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 lire @ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Exécution @14 = 0 (en cache!) Tant que n > 0 lire @13 s  s + n n  n – 1 Proc lire @13 @13 pas en cache (défaut) charger bloc @12 placer bloc @12 retourner 2 lire @14 (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

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

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

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

Exécution écrire 2 @14 Tant que n > 0 s  s + n n  n – 1 lire @13 Proc écrire 2 @14 cache 12 lire @13 @13 pas en cache (défaut) 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) n=2 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

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

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 lire @13 @13 pas en cache (défaut) 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) ? mémoire principale 4 8 12 m=0 n=2 s=0

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

Exécution écrire 1 @13 Tant que n > 0 s  s + n n  n – 1 lire @13 Proc lire @13 @13 pas en cache (défaut) 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) écrire 1 @13 cache 12 n=1 s=2 ? mémoire principale 4 8 12 m=0 n=2 s=0

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

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

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 -> (100 + 6n - 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

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

Regardons de plus près les accès en cache Proc 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) Tant que n > 0 s  s + n n  n – 1 cache 12 n s ? mémoire principale 4 8 12 m n s

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 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) 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 à 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

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 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) 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 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

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

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

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

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

Les utilisateurs ne peuvent ignorer la localité

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]; }

Résultats