Le cache L3 est-il partagé par tous les cœurs pour un processeur Sandy-Bridge E Xeon?


12

Dans une question connexe, j'ai demandé l'avantage d'un système à double processeur en termes de doublement du cache L3.

Cependant, j'ai remarqué que la série de processeurs Xeon E5-2600 a exactement 2,5 Mo de cache L3 par cœur .

Cela m'amène à croire que le système d'exploitation réserve 2,5 Mo de cache L3 par cœur. Cependant, j'ai également l'impression contradictoire que le cache L3 est partagé entre tous les cœurs. Il y a étonnamment peu d'informations ou de discussions à ce sujet.

Ma principale préoccupation est de savoir si les applications d'arrière-plan à faible priorité peuvent "monopoliser" le cache L3 et ralentir les performances des applications de premier plan à priorité plus élevée. Deux problèmes de performances spécifiques que j'ai motiver cette question.

  1. Compiler un certain programme C ++ nécessite 25 minutes sur mon système de développement actuel dans VS 2008, tandis que sur un autre système, il va beaucoup plus vite, ne nécessitant que 5 minutes sur VS 2008 avec des paramètres identiques - malgré le fait que j'ai un i7 presque haut de gamme. 970 CPU et RAM suffisante.

  2. Les programmes prennent souvent jusqu'à 20 secondes pour s'exécuter (c'est-à-dire afficher leur fenêtre principale) sur mon système; et sur une note connexe, le shell Windows nécessite jusqu'à 10 secondes pour afficher le menu contextuel de l'Explorateur Windows (et les comportements associés prennent également environ aussi longtemps), malgré mes tentatives pour limiter les entrées du menu contextuel (il y a actuellement peut-être 10 supplémentaires au-delà le défaut).

Mon système est certainement chargé d'un très grand nombre d'applications que j'ai installées (et désinstallées) au fil des ans, mais je fais néanmoins de mon mieux pour rationaliser le système.

J'ai également de nombreuses applications d'arrière-plan à faible priorité en cours d'exécution; en particulier les logiciels de sauvegarde en nuage redondants tels que CrashPlan, qui s'additionnent généralement pour utiliser environ 25% de l'utilisation totale du processeur sur ce système à 12 cœurs à 6 cœurs.

J'obtiendrai un nouvel ordinateur. Je sais que je continuerai à exécuter de nombreuses applications en arrière-plan et à installer / désinstaller de nombreux programmes. Si je pensais qu'obtenir un système à double processeur qui double non seulement les cœurs mais le cache L3 aiderait à surmonter les horribles performances du compilateur C ++ et le ralentissement général du système, je le ferais avec plaisir.

Il ne devrait y avoir aucune raison pour laquelle un système haut de gamme fonctionne si lentement, même avec de nombreux programmes et applications d'arrière-plan. Mais si mes problèmes se produisent, quelle que soit la puissance du processeur et le cache L3 que je donne au système, simplement parce que j'ai tellement de programmes et d'applications d'arrière-plan installés et en cours d'exécution, je ne veux pas gaspiller 2500 dollars supplémentaires sur un double processeur système qui n'aidera pas à résoudre mon problème.

Toutes les suggestions, en particulier en ce qui concerne ma question de savoir si le cache L3 est partagé entre tous les cœurs (de sorte que les applications d'arrière-plan à faible priorité pourraient concevablement monopoliser le cache L3, ralentir les programmes à priorité plus élevée), ou plutôt s'il est lié à un individu noyaux, serait apprécié.


Bonne question pour laquelle je n'ai pas personnellement de bonne réponse, sauf pour dire que j'avais également l'impression que L3 était partagée. Je voudrais simplement demander pourquoi diable vous appelez ces Xeons de `` 2e génération '' alors que `` Xeon '' est un produit Intel depuis une décennie maintenant. (Si c'est par analogie avec les puces Sandy Bridge i3 /
5/7

Intel qualifie la gamme de processeurs i7-2600 de "2e génération" ( ark.intel.com/products/family/59136/… ). Par «Xeon de 2e génération», j'entends la version équivalente des CPU de l'architecture Xeon Sandy-Bridge E du 6 mars 2012 ( en.wikipedia.org/wiki/… ).
Dan Nissenbaum

1
C'est l'analogie que je pensais que vous faisiez. C'est un mauvais (ce sont des i7 de 2e génération mais ce ne sont pas des Xeons de 2e génération), et je changerais le titre IMO ... Je m'attendais à trouver une question sur les processeurs de 12 ans et cela pourrait garder beaucoup de gens de cliquer ici. Peut-être changer la «2e génération» en «Sandy Bridge-E».
Shinrai

Réponses:


13

Sur ces processeurs, chaque cœur physique possède son propre cache L2. Le cache L3 est partagé par tous les cœurs et est inclusif - c'est-à-dire que toutes les données qui résident dans le cache L2 de n'importe quel noyau résident également sur le cache L3.

Bien que cela puisse sembler un gaspillage d'espace L3, cela rend en fait le L3 inestimable pour accélérer les opérations de mémoire intercœur. Le principal objectif du cache L3 est de servir de standard et de zone de transit pour les cœurs. Par exemple, si un cœur souhaite savoir si une région de mémoire peut être mise en cache par un autre cœur, il peut vérifier le cache L3. Si les informations ont été traitées par un cœur et doivent être traitées par un autre cœur, elles les transmettent via le cache L3 plutôt que la mémoire hors puce plus lente. Au-delà de cela, son impact sur les performances n'est pas grand-chose sauf pour les algorithmes inhabituels - le cache L2 est assez grand pour les petites choses et le cache L3 est trop petit pour les grandes choses.

Ainsi, alors que chaque cœur a son propre cache L2 de 256 Ko et effectivement 256 Ko réservés dans le cache L3, le solde est partagé par tous les cœurs. Une activité moins importante dans d'autres cœurs peut nuire aux performances d'une tâche plus importante qui bénéficie de l'utilisation de l'espace L3. Mais pour les raisons que j'ai mentionnées, ce n'est généralement pas un effet significatif dans la pratique et cela ne vaut généralement pas la peine de s'inquiéter au-delà de l'optimisation des opérations de "données en masse" (telles que la compression et l'analyse) pour minimiser la pollution du cache. (Par exemple, en utilisant des opérations non temporelles.)


0

Je crois comprendre que tous les niveaux de cache sont implémentés directement sur la puce et que L2 et L3 sont un dans la même (que seul Intel reconnaît la différence, AMD les combine.). Dans cet esprit, j'imagine que le cache L3 sur les processeurs n'est pas partagé entre les processeurs sur une carte mère à double connecteur. Cela est également logique en gardant à l'esprit qu'il est typique de voir des canaux de mémoire distincts pour la RAM par CPU.

Quelqu'un me corrige si je me trompe.


L2 et L3 ne sont pas du tout la même chose. Sur les conceptions Intel récentes, L1 / L2 est par cœur et petit (32k L1 I $ & D $ / 256k Lified unifié), tandis que L3 est inclusif et partagé par le GPU et tous les cœurs. L1 / L2 sont physiquement séparés, mais servent à des fins similaires (c'est-à-dire rendre l'accès à la mémoire rapide pour un seul cœur). Le L3 inclusif a un autre objectif: la cohérence entre les cœurs (et le GPU). Voir la réponse de @ DavidSchwartz.
Peter Cordes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.