« Fonctionnement d'un ordinateur/L'architecture de base d'un ordinateur » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 99 :
====Caches et local stores====
 
[[File:Scratch-Pad-Memory.jpg|vignette|Illustration des mémoires caches et des ''local stores''. Le cache est une mémoire spécialisée, de type SRAM, intercalée entre la RAM et le processeur. Les ''local stores'' sont dans le même cas, mais ils sont composées du même type de mémoire que la mémoire principale (ce qui fait qu'ils sont abusivement mis au même niveau sur ce schéma).]]
Le troisième niveau est intermédiaire entre les registres et la mémoire principale. Dans la majorité des cas, la mémoire intercalée entre les registres et la mémoire RAM/ROM est ce qu'on appelle une '''mémoire cache'''. Celle-ci a quelques particularités qui la rendent vraiment différente d'une mémoire RAM ou ROM. Premièrement, et aussi bizarre que cela puisse paraitre, elle n'est jamais adressable ! Le contenu du cache est géré par un circuit qui s'occupe des échanges avec les registres et la mémoire principale : le programmeur ne peut pas gérer directement ce cache. Si cela peut paraitre contre-intuitif, tout s'éclairera dans le chapitre dédié à ces mémoires. De nos jours, ce cache est intégré dans le processeur. Dans le détail, le cache contient une copie de certaines données présentes en RAM. La copie présente dans le cache est accessible bien plus rapidement que celle en RAM, le cache étant beaucoup plus rapide que la RAM. Mais seule une faible partie de ces données sont présentes dans le cache, les autres données devant être lues ou écrites dans la RAM. Tout accès mémoire provenant du processeur est intercepté par le cache, qui vérifie si la donnée demandée est présente ou non dans le cache. Si c'est le cas, la donnée voulue est présente dans le cache : on a un '''succès de cache''' (cache hit) et on accède à la donnée depuis le cache. Sinon, c'est un '''défaut de cache''' (cache miss) : on est obligé d’accéder à la RAM ou de recopier notre donnée de la RAM dans le cache.
 
Le troisième niveau est intermédiaire entre les registres et la mémoire principale. Il regroupe deux types distincts de mémoires : les mémoires caches (du moins, certains caches) et les ''local stores''.
 
Le troisième niveau est intermédiaire entre les registres et la mémoire principale. Dans la majorité des cas, la mémoire intercalée entre les registres et la mémoire RAM/ROM est ce qu'on appelle une '''mémoire cache'''. Celle-ci a quelques particularités qui la rendent vraiment différente d'une mémoire RAM ou ROM. Premièrement, et aussi bizarre que cela puisse paraitre, elle n'est jamais adressable ! Le contenu du cache est géré par un circuit qui s'occupe des échanges avec les registres et la mémoire principale : le programmeur ne peut pas gérer directement ce cache. Si cela peut paraitre contre-intuitif, tout s'éclairera dans le chapitre dédié à ces mémoires. De nos jours, ce cache est intégré dans le processeur. Dans le détail, le cache contient une copie de certaines données présentes en RAM. La copie présente dans le cache est accessible bien plus rapidement que celle en RAM, le cache étant beaucoup plus rapide que la RAM. Mais seule une faible partie de ces données sont présentes dans le cache, les autres données devant être lues ou écrites dans la RAM. Tout accès mémoire provenant du processeur est intercepté par le cache, qui vérifie si la donnée demandée est présente ou non dans le cache. Si c'est le cas, la donnée voulue est présente dans le cache : on a un '''succès de cache''' (cache hit) et on accède à la donnée depuis le cache. Sinon, c'est un '''défaut de cache''' (cache miss) : on est obligé d’accéder à la RAM ou de recopier notre donnée de la RAM dans le cache.
 
Sur certains processeurs, les mémoires caches sont remplacées par des mémoires RAM appelées des '''local stores'''. Ce sont des mémoires RAM, identiques à la mémoire RAM principale, mais qui sont plus petites et plus rapides. Contrairement aux mémoires caches, il s'agit de mémoires adressables, ce qui fait qu'elles ne sont plus gérées automatiquement par le processeur : c'est le programme en cours d'exécution qui prend en charge les transferts de données entre local store et mémoire RAM. Ces local stores consomment moins d'énergie que les caches à taille équivalente : en effet, ceux-ci n'ont pas besoin de circuits compliqués pour les gérer automatiquement, contrairement aux caches. Côté inconvénients, ces local stores peuvent entrainer des problèmes de compatibilité : un programme conçu pour fonctionner avec des local stores ne fonctionnera pas sur un ordinateur qui en est dépourvu.