Où se trouvent exactement les caches L1, L2 et L3 dans l’ordinateur ?

Commençons par ceci:

Je pense que les derniers processeurs SMP utilisent des caches de niveau 3, donc je veux comprendre la hiérarchie des niveaux de cache et leur architecture.

Pour comprendre les caches, vous devez savoir quelques choses:

Un processeur a des registres. Les valeurs peuvent être directement utilisées. Rien n’est plus rapide.

Cependant, nous ne pouvons pas ajouter de registres infinis à une puce. Ces choses prennent de la place. Si nous agrandissons la puce, elle devient plus chère. C’est en partie parce que nous avons besoin d’une puce plus grande (plus de silicium), mais aussi parce que le nombre de puces présentant des problèmes augmente.

(Image d’une plaquette imaginaire de 500 cm2. J’en ai coupé 10 puces, chaque puce de 50cm2. L’un d’eux est cassé. Je le jette et il me reste 9 puces de travail. Maintenant, prenez la même plaquette et j’en ai coupé 100 copeaux, chacun dix fois plus petit. L’un d’eux s’il est cassé. Je jette la puce cassée et il me reste 99 puces de travail. C’est une fraction de la perte que j’aurais eue autrement. Pour compenser les plus gros jetons, je devrais demander des prix plus élevés. Plus que le prix du silicium supplémentaire)

C’est l’une des raisons pour lesquelles nous voulons de petites puces abordables.

Cependant, plus le cache est proche du processeur, plus il est accessible rapidement.

Ceci est également facile à expliquer; Les signaux électriques se déplacent près de la vitesse de la lumière. C’est rapide mais toujours une vitesse finie. Le processeur moderne fonctionne avec des horloges GHz. C’est aussi rapide. Si je prends un processeur 4 GHz, un signal électrique peut voyager d’environ 7,5 cm par tick d’horloge. C’est 7,5 cm en ligne droite. (Les puces sont tout sauf des connexions droites). En pratique, vous aurez besoin de beaucoup moins que ces 7,5 cm car cela ne laisse pas de temps aux puces pour présenter les données demandées et pour que le signal revienne.

En bout de ligne, nous voulons que le cache soit le plus proche physiquement possible. Ce qui signifie de grosses puces.

Ces deux éléments doivent être équilibrés (performances par rapport au coût).

Où se trouvent exactement les caches L1, L2 et L3 dans un ordinateur ?

En supposant uniquement du matériel de style PC (les ordinateurs centraux sont très différents, y compris dans les performances par rapport à celles du PC. balance des coûts) ;

IBM XT
Celui d’origine de 4,77 Mhz : Pas de cache. Le PROCESSEUR accède directement à la mémoire. Une lecture de la mémoire suivrait ce modèle:

  • Le CPU place l’adresse qu’il souhaite lire sur le bus mémoire et affirme l’indicateur de lecture
  • La mémoire place les données sur le bus de données.
  • La CPU copie les données du bus de données vers ses registres internes.

80286 (1982)
Toujours pas de cache. L’accès à la mémoire n’était pas un gros problème pour les versions à vitesse réduite (6 MHz), mais le modèle plus rapide fonctionnait jusqu’à 20 MHz et devait souvent être retardé lors de l’accès à la mémoire.

Vous obtenez alors un scénario comme celui-ci:

  • Le CPU met l’adresse qu’il veut lire sur le bus mémoire et affirme l’indicateur de lecture
  • La mémoire commence à mettre les données sur le bus de données. Le PROCESSEUR attend.
  • La mémoire a fini d’obtenir les données et elle est maintenant stable sur le bus de données.
  • La CPU copie les données du bus de données vers ses registres internes.

C’est une étape supplémentaire passée à attendre la mémoire. Sur un système moderne qui peut facilement être en 12 étapes, c’est pourquoi nous avons un cache.

80386: (1985)
Les PROCESSEURS deviennent plus rapides. À la fois par horloge et en fonctionnant à des vitesses d’horloge plus élevées.
La RAM devient plus rapide, mais pas autant que les processeurs.
En conséquence, plus d’états d’attente sont nécessaires.Certaines cartes mères contournent cela en ajoutant un cache (qui serait un cache de 1er niveau) sur la carte mère.

Une lecture de la mémoire commence maintenant par une vérification si les données sont déjà dans le cache. Si c’est le cas, il est lu à partir du cache beaucoup plus rapide. Si ce n’est pas la même procédure que celle décrite avec le 80286

80486: (1989)
C’est le premier processeur de cette génération qui a un cache sur le processeur.
Il s’agit d’un cache unifié de 8 Ko, ce qui signifie qu’il est utilisé pour les données et les instructions.

À cette époque, il devient courant de mettre 256 Ko de mémoire statique rapide sur la carte mère comme cache de 2e niveau. Ainsi cache de 1er niveau sur le CPU, cache de 2ème niveau sur la carte mère.

486 carte mère avec emplacement CPU et cache de 2ème niveau marqué

80586 (1993)
Le 586 ou Pentium-1 utilise un cache de niveau 1 divisé. 8 Ko chacun pour les données et les instructions. Le cache a été divisé de sorte que les caches de données et d’instructions puissent être réglés individuellement pour leur utilisation spécifique. Vous avez toujours un 1er cache petit mais très rapide près du processeur, et un 2ème cache plus grand mais plus lent sur la carte mère. (À une distance physique plus grande).

Dans la même zone de pentium 1, Intel a produit le Pentium Pro (‘80686’). Selon le modèle, cette puce avait un cache intégré de 256 Ko, 512 Ko ou 1 Mo. C’était aussi beaucoup plus cher, ce qui est facile à expliquer avec l’image suivante.

 Image d'un processeur pentium Pro, modèle de cache de 256 Ko

Notez que la moitié de l’espace de la puce est utilisée par le cache. Et c’est pour le modèle de 256 Ko. Plus de cache était techniquement possible et certains modèles étaient produits avec des caches de 512 Ko et 1 Mo. Le prix du marché pour ceux-ci était élevé.

Notez également que cette puce contient deux matrices. Un avec le processeur réel et le 1er cache, et un deuxième dé avec le 2ème cache de 256 Ko.

Pentium-2

Le pentium 2 est un noyau pentium pro. Pour des raisons d’économie, aucun 2ème cache n’est dans le processeur. Au lieu de cela, ce qui est vendu un CPU nous un PCB avec des puces séparées pour le CPU (et le 1er cache) et le 2ème cache.

Au fur et à mesure que la technologie progresse et que nous commençons à créer des puces avec des composants plus petits, il devient financièrement possible de remettre le 2ème cache dans le dé du PROCESSEUR réel. Cependant, il y a encore une scission. 1er cache très rapide blotti au CPU. Avec un 1er cache par cœur de PROCESSEUR et un 2ème cache plus grand mais moins rapide à côté du cœur.

 Image d'un pentium 2 'CPU' (avec et sans couvercle)

Pentium-3
Pentium-4
Ceci ne change pas pour le pentium-3 ou le pentium-4.

À cette époque, nous avons atteint une limite pratique sur la vitesse à laquelle nous pouvons horloge les PROCESSEURS. Un 8086 ou un 80286 n’avait pas besoin de refroidissement. Un pentium-4 fonctionnant à 3,0 GHz produit tellement de chaleur et utilise autant d’énergie qu’il devient plus pratique de placer deux processeurs séparés sur la carte mère plutôt qu’un processeur rapide.

(Deux PROCESSEURS de 2,0 GHz utiliseraient moins d’énergie qu’un seul PROCESSEUR de 3,0 GHz identique, mais pourraient faire plus de travail).

Cela pourrait être résolu de trois manières:

  1. Rendre les PROCESSEURS plus efficaces, afin qu’ils effectuent plus de travail à la même vitesse.
  2. Utiliser plusieurs processeurs
  3. Utiliser plusieurs PROCESSEURS dans la même « puce « .

1) Est un processus continu. Ce n’est pas nouveau et cela ne s’arrêtera pas.

2) A été réalisé très tôt (par exemple avec deux cartes mères Pentium-1 et le chipset NX). Jusqu’à présent, c’était la seule option pour construire un PC plus rapide.

3) Nécessite des processeurs où plusieurs « cœurs de processeur » sont intégrés dans une seule puce. (Nous avons ensuite appelé ce processeur un processeur double cœur pour augmenter la confusion. Merci marketing :))

Ces jours-ci, nous nous référons simplement au processeur comme un « noyau » pour éviter toute confusion.

Vous obtenez maintenant des puces comme le pentium-D (duo), qui est essentiellement deux cœurs pentium-4 sur la même puce.

 Pentium-D précoce (2 noyaux P4)

Rappelez-vous la photo de l’ancien pentium-Pro? Avec l’énorme taille du cache?
Voyez les deux grandes zones sur cette photo?

Il s’avère que nous pouvons partager ce 2ème cache entre les deux cœurs de PROCESSEUR. La vitesse diminuerait légèrement, mais un 2ème cache partagé de 512 Ko est souvent plus rapide que l’ajout de deux caches de 2ème niveau indépendants de la moitié de la taille.

Ceci est important pour votre question.

Cela signifie que si vous lisez quelque chose à partir d’un cœur de PROCESSEUR et essayez plus tard de le lire à partir d’un autre cœur qui partage le même cache, vous obtiendrez un accès au cache. La mémoire n’aura pas besoin d’être accessible.

Étant donné que les programmes migrent entre les CPU, en fonction de la charge, du nombre de cœurs et du planificateur, vous pouvez obtenir des performances supplémentaires en épinglant les programmes qui utilisent les mêmes données sur le même CPU (coups de cache sur L1 et inférieurs) ou sur les mêmes PROCESSEURS qui partagent le cache L2 (et obtiennent ainsi des échecs sur L1, mais des coups sur les lectures de cache L2).

Ainsi, sur les modèles ultérieurs, vous verrez des caches partagés de niveau 2.

 Image d'un processeur Core2 ouvert

Si vous programmez pour des PROCESSEURS modernes, vous avez deux options:

  1. Ne vous embêtez pas. Le système d’exploitation devrait pouvoir planifier les choses. Le planificateur a un impact important sur les performances de l’ordinateur et les gens ont consacré beaucoup d’efforts à l’optimiser. À moins que vous ne fassiez quelque chose de bizarre ou que vous optimisiez pour un modèle spécifique de PC, il vaut mieux utiliser le planificateur par défaut.
  2. Si vous avez besoin de chaque dernier bit de performance et que le matériel plus rapide n’est pas une option, essayez de laisser les marches qui accèdent aux mêmes données sur le même cœur ou sur un cœur avec accès à un cache partagé.

Je me rends compte que je n’ai pas encore mentionné le cache L3, mais ils ne sont pas différents. Un cache L3 fonctionne de la même manière. Plus grand que L2, plus lent que L2. Et il est souvent partagé entre les cœurs. S’il est présent, il est beaucoup plus grand que le cache L2 (sinon l’avoir n’aurait pas de sens) et il est souvent partagé avec tous les cœurs.

 modernecpuavecl3.png

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.