« Fonctionnement d'un ordinateur/Les mémoires cache » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 278 :
===Les caches non bloquants de type succès après défaut===
 
Sur certainesles mémoirescaches cachenon-bloquants, lors d'un défaut de cache, on doit attendre que toute la ligne concernée par le défaut de cache soit chargée avant d'être utilisable. UnOr, cachela stocketaille desd'une lignesligne de cache dont la taille est supérieure à la largeur du bus mémoire., Ence conséquence,qui fait qu'une ligne de cache est chargée en plusieurs fois, morceaux par morceaux. CertainsEt secela sontpermet demandésune sioptimisation onqui nedonne pouvaitles pascaches gagnernon-bloquants quelquesles cyclesplus enbasiques jouantqui dessussoient. Eh bien cL'estoptimisation lerevient casà ! Certains processeurs sont capables d'utiliser un morceau de ligne de cache tout juste chargé alors que la ligne de cache complète n'est pas totalement lue depuis la mémoire. Avec cette technique, le cache est utilisable lors d'un défaut de cache, ce qui fait qu'il est légèrement non bloquant. Ces processeurs incorporent un tampon de remplissage de ligne (''line-fill buffer''), une sorte de registre, qui stocke le dernier morceau d'une ligne de cache à avoir été chargé depuis la mémoire. Ce morceau est stocké avec un tag, qui indique l'adresse du bloc stocké dans le tampon de remplissage de ligne. Ainsi, un processeur qui veut lire dans le cache après un défaut peut accéder à la donnée directement depuis le tampon de remplissage de ligne, alors que la ligne de cache n'a pas encore été totalement recopiée en mémoire.
 
Pour améliorer encore plus les performances, et utiliser au mieux ce tampon de remplissage de ligne, les processeurs actuels implémentent des techniques de ''critical word load. Pour faire simple, on va comparer le chargement d'une ligne de cache avec et sans critical word load'. Sans ''critical word load'', la ligne de cache est chargée morceau par morceau, dans l'ordre de placement de ces morceaux en mémoire. Mais si l'adresse lue ou écrite par le processeur n'est pas le premier mot mémoire de la ligne de cache, il devra attendre que celui-ci soit chargé. Durant ce temps d'attente, les blocs qui précédent la donnée demandée par le processeur seront chargés. Avec le ''critical word load'', le contrôleur mémoire va charger les blocs en commençant par le bloc dans lequel se trouve la donnée demandée, avant de poursuivre avec les blocs suivants, avant de revenir au début du bloc pour charger les blocs restants. Ainsi, la donnée demandée par le processeur sera la première disponible.
 
===Les caches non bloquants de type défaut après défaut===