web-dev-qa-db-fra.com

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

Où se trouvent exactement les caches L1, L2 et L3 situés dans l'ordinateur?

Je sais que nous utilisons Cache pour améliorer les performances en sélectionnant DATA et INSTRUCTIONS dans le cache plutôt que dans la mémoire principale.

Voici mes questions

  1. Où se trouve exactement le cache L1? . est sur la puce du processeur?
  2. Où se trouve exactement le cache L2?

  3. Où se trouve exactement le cache L3? est sur la carte mère?

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

28
siva

Commençons par ceci:

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

Pour comprendre les caches, vous devez connaître certaines choses:

Un processeur a des registres. Les valeurs qui 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. Cela s’explique en partie par le fait que nous avons besoin d’une puce plus grande (plus de silicium), mais aussi du fait que le nombre de puces présentant des problèmes augmente.

(Image d'une plaquette imaginaire de 500 cm2. J'ai coupé 10 morceaux, chaque morceau 50cm2 en taille. L'un d'eux est cassé. Je le jette et il me reste 9 jetons en état de marche. Maintenant, prenez la même plaquette et j'en coupe 100 jetons dix fois plus petits. L'un d'eux si cassé. Je jette le morceau cassé et il me reste 99 morceaux de travail. C'est une fraction de la perte que j'aurais autrement subie. Pour compenser les gros jetons, il faudrait que je demande des prix plus élevés. Plus que le prix du silicium supplémentaire)

C'est l'une des raisons pour lesquelles nous voulons des puces de petite taille et abordables.

Cependant, plus le cache est proche de la CPU, plus on peut y accéder rapidement.

C'est aussi facile à expliquer. Les signaux électriques voyagent près de la vitesse de la lumière. C'est rapide mais toujours une vitesse finie. Les processeurs modernes fonctionnent avec des horloges à GHz. C'est aussi rapide. Si je prends un processeur de 4 GHz, un signal électrique peut parcourir 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 aucun temps aux puces pour présenter les données demandées et au signal pour revenir.

En bout de ligne, nous voulons que le cache soit aussi proche que possible du point de vue physique. Ce qui signifie de gros morceaux.

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

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

En supposant que le matériel ne soit que de type PC (les ordinateurs centraux sont très différents, y compris en termes de performances et de coûts);

IBM XT
L'original 4.77Mhz: Pas de cache. La CPU accède directement à la mémoire. Une lecture de mémoire suivrait ce modèle:

  • La CPU place l'adresse qu'il veut lire sur le bus de mémoire et active 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 dans 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 à faible vitesse (6 Mhz), mais le modèle plus rapide fonctionnait jusqu'à 20 Mhz et nécessitait souvent un délai lors de l'accès à la mémoire.

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

  • La CPU place l'adresse qu'il veut lire sur le bus de mémoire et active l'indicateur de lecture
  • La mémoire commence à mettre les données sur le bus de données. La CPU attend.
  • La mémoire a fini de récupérer les données et celles-ci sont maintenant stables sur le bus de données.
  • La CPU copie les données du bus de données dans ses registres internes.

C'est une étape supplémentaire passée à attendre la mémoire. Sur un système moderne pouvant facilement comporter 12 étapes, nous avons donc un cache .

80386 : (1985)
Les processeurs deviennent plus rapides. Tous les deux 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, davantage d’états d’attente sont nécessaires. Certaines cartes mères contournent ce problème en ajoutant du cache (ce serait 1st niveau de cache) sur la carte mère.

Une lecture en 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 depuis le cache beaucoup plus rapide. Si ce n'est pas la même procédure que celle décrite avec le 80286

80486 : (1989)
Il s'agit du premier processeur de cette génération à disposer d'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 est courant de mettre 256 Ko de mémoire statique rapide sur la carte mère en tant que 2dakota du Nord cache de niveau. Donc 1st niveau de cache sur la CPU, 2dakota du Nord cache de niveau sur la carte mère.

486 motherboard with CPU location and 2nd level cache marked

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é scindé afin que les caches de données et d'instructions puissent être adaptés individuellement à leur utilisation spécifique. Vous avez encore un petit mais très rapide 1st cache près de la CPU, et une plus grande mais plus lente 2dakota du Nord cache sur la carte mère. (À une plus grande distance physique).

Dans la même région du 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 la photo suivante.

Picture of a pentium Pro CPU, 256KB cache model

Notez que la moitié de l'espace dans la puce est utilisée par le cache. Et ceci est pour le modèle 256KB. Plus de cache était techniquement possible et certains modèles ont été produits avec des caches de 512 Ko et 1 Mo. Le prix du marché pour ces derniers était élevé.

Notez également que cette puce contient deux matrices. Un avec le processeur actuel et 1st cache, et un deuxième dé avec 256 Ko 2dakota du Nord cache.

Pentium-2

Le pentium 2 est un pentium pro core. Pour des raisons d'économie no 2dakota du Nord le cache est dans la CPU. Au lieu de cela, ce qui est vendu à un CPU nous un PCB avec des puces séparées pour CPU (et 1st cache) et 2dakota du Nord cache.

À 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 placer le 2dakota du Nord cache en arrière dans la matrice CPU réelle. Cependant, il y a toujours une scission. Très vite 1st cache blotti dans la CPU. Avec un 1st cache par cœur de processeur et un plus gros mais moins rapide 2dakota du Nord cache à côté du noyau.

Picture of a pentium 2 'CPU' (both with and without cover)

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

Vers cette époque, nous avons atteint une limite pratique quant à la rapidité avec laquelle nous pouvons cadencer les processeurs. Un 8086 ou un 80286 n’avaient pas besoin de refroidissement. Un pentium-4 fonctionnant à 3,0 GHz produit tellement de chaleur et consomme tellement d'énergie qu'il devient plus pratique d'installer deux processeurs distincts sur la carte mère plutôt qu'un rapide.

(Deux processeurs à 2,0 GHz utiliseraient moins d'énergie qu'un processeur identique à 3 GHz identique, mais pourraient faire plus de travail).

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

  1. Améliorez l’efficacité des processeurs pour qu’ils travaillent davantage à la même vitesse.
  2. Utiliser plusieurs processeurs
  3. Utilisez plusieurs processeurs dans la même "puce".

1) Est un processus en cours. Ce n'est pas nouveau et ça ne va pas s'arrêter.

2) A été fait tôt (par exemple avec les cartes mères doubles 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 dans lesquels plusieurs "cpu core" sont intégrés dans une seule puce. (Nous avons ensuite appelé ce processeur un processeur dual core pour augmenter la confusion. Merci marketing :))

Ces jours-ci, nous nous référons simplement à la CPU en tant que "noyau" pour éviter toute confusion.

Vous obtenez maintenant des puces comme le pentium-D (duo), qui est fondamentalement deux noyaux de pentium-4 sur la même puce.

Early pentium-D (2 P4 cores)

Rappelez-vous la photo de l'ancien pentium-Pro? Avec la taille de cache énorme?
Voir les deux grandes zones de cette image?

Il se trouve que nous pouvons partager cela 2dakota du Nord cache entre les deux cœurs du processeur. La vitesse baisserait légèrement, mais un 512 Ko partagé 2dakota du Nord le cache est souvent plus rapide que l'ajout de deux indépendants 2dakota du Nord caches de niveau de la moitié de la taille.

Ceci est important pour votre question.

Cela signifie que si vous lisez quelque chose d'un cœur de processeur et que vous essayez ultérieurement de le lire d'un autre cœur qui partage le même cache, vous obtiendrez un succès. Il n’est pas nécessaire d’accéder à la mémoire.

Etant donné que les programmes migrent entre les processeurs, en fonction de la charge, du nombre de cœurs et du planificateur, vous pouvez obtenir des performances supplémentaires en épinglant des programmes qui utilisent les mêmes données dans le même processeur (cache des occurrences de niveau inférieur ou égal à L1). ) ou sur les mêmes processeurs partageant le cache L2 (et obtenant ainsi des échecs sur L1, mais des hits sur les lectures de cache L2).

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

Image of an open Core2 CPU

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

  1. Ne pas déranger. Le système d'exploitation devrait pouvoir planifier des choses. Le planificateur a un impact important sur les performances de l'ordinateur et les utilisateurs ont déployé beaucoup d'efforts pour l'optimiser. À moins que vous ne fassiez quelque chose de bizarre ou que vous n'optimisiez pas pour un modèle de PC spécifique, le programmateur par défaut vous convient mieux.
  2. Si vous avez besoin de toutes les dernières performances et qu'un matériel plus rapide n'est pas une option, essayez de laisser les bandes de roulement qui accèdent aux mêmes données sur le même cœur ou sur un cœur ayant accès à un cache partagé.


Je réalise 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 volumineux que le cache L2 (sinon, cela n'aurait aucun sens) et il est souvent partagé avec tous les cœurs.

modernCPUwithL3.png

46
Hennes

Ces caches sont des composants internes du processeur. Certains sont partagés entre des cœurs, certains sont individuels, dépend de la mise en œuvre. Mais tous sont situés sur une puce. Quelques détails: Processeur Intel® Core ™ i7, pris ici :

  • Cache de premier niveau d'instruction (L1) de 32 Ko d'instruction et de 32 Ko pour chaque cœur
  • Cache de second niveau (L2) d’instructions/données partagées de 256 Ko pour chaque cœur
  • Cache de dernier niveau (L3) d'instructions/données partagées de 8 Mo, partagé entre tous les cœurs

Photo de la puce du processeur (désolé, je ne connais pas le modèle exact). Vous pouvez voir que le cache occupe une place importante sur la puce:

alt text

14
Andrey

Ces jours-ci, les caches sont tous sur la matrice du processeur. Ils se trouvaient parfois sur la carte mère ou sur la carte fille du processeur, mais je ne pense pas que les processeurs actuels utilisent des caches en dehors de la puce.

5
Douglas Leeder

Le cache est presque toujours sur la puce pour un accès plus rapide. Voici un joli diagramme montrant une puce Intel à quatre cœurs avec le cache L3 en surbrillance. Lorsque vous regardez des images comme celle-ci d'une puce de processeur, les grandes zones uniformes sont généralement des banques de mémoire sur puce utilisées en tant que cache.

Nehalem Die (http://www.legitreviews.com/article/824/1/)

5
Michael Petito

Je ne suis pas sûr du L3, mais L1/L2 est toujours situé sur le processeur. Au niveau de la hiérarchie, L1 est généralement le cache d’instruction, L2 et L3 sont des caches de données.

0
Jas

L1 se trouve sur la puce du processeur, L2 se situe entre le processeur et la mémoire principale, mais il faut savoir que, dans certains systèmes, L2 se trouve sur la puce du processeur, tandis que dans un autre système, L2 se trouve sur la carte mère elle-même, et L3 est constamment situé sur la puce de la carte principale.

0
Qurban Yazdani