lshw et lscpu ne sont pas d'accord sur les caches - ce qui est vrai?

14

J'essaie de trouver des détails sur les caches (en particulier quels caches sont partagés entre les cœurs et lesquels ne le sont pas) et ont trébuché sur une incohérence.

sudo lshw dit

*-cache:0
     description: L1 cache
     physical id: a
     slot: Internal Cache
     size: 64KiB
     capacity: 64KiB
     capabilities: synchronous internal write-back
*-cache:1
     description: L2 cache
     physical id: b
     slot: External Cache
     size: 8MiB
     capabilities: synchronous internal write-back

mais lscpuprétend

L1d cache:   32K
L1i cache:   32K
L2 cache:   256K
L3 cache:  8192K

Je ne m'inquiète pas trop de l'ajout des instructions et du cache de données, mais où est passé L2?

Observé sur une machine exécutant Ubuntu 10.10, ou pour uname -aparler:

Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux

C'est une question générale, mais notez que ni les spécifications du fabricant les plus précises que j'ai pu trouver ni Wikipedia n'ont les détails nécessaires.

Question bonus sans rapport: cela External Cachesignifie- t-il que le cache est partagé entre les (quatre) cœurs (et Internal Cachel'inverse)?

Raphael
la source
Deux pensées. Tout d'abord, que dit le fabricant? Mon approche serait probablement de rechercher les spécifications du processeur, puis d'essayer de raisonner à partir de là. Deuxièmement, si c'est quelque chose que vous pourriez faire, je serais curieux de voir ce que vous obtiendriez si vous essayiez ceci après avoir démarré un Live CD / USB pour Ubuntu ou Fedora le plus récent. (Peut-être que c'est un bug qui est déjà corrigé? Je suppose qu'il existe d'autres façons de vérifier si un bug existait et a été corrigé, mais ...)
Irrationnel John
@irrationalJohn: Bon point sur les spécifications officielles (bien que sans rapport avec la question plus générale). Malheureusement, les spécifications ne sont même pas utiles (voir modifier). De plus, je ne peux pas altérer la machine.
Raphael

Réponses:

3

Merci d'avoir ajouté des informations supplémentaires sur le processeur à votre question. Il est utile de savoir que les exemples que vous avez publiés font référence à unIntel Core i7-920 Processor .

Les informations fournies par lscpusont plus précises car elles incluent les trois niveaux de cache, L1, L2 et L3. Il semble que cela lshwn'ait été que légèrement modifié pour refléter l'ajout par Intel d'un cache L3 à leurs processeurs. Au lieu d'afficher des informations sur les trois niveaux de caches, les informations sur la taille du cache L3 sont apparemment signalées comme cache L2.

Je suppose que les spécifications que vous avez examinées n'incluaient pas le cache L1 et L2 car dans une microarchitecture donnée, elles sont toutes identiques. Par exemple, pour Nehalem, il s'agit de " 64 Ko de cache / cœur L1 (32 Ko de données L1 + 32 Ko d'instructions L1) et 256 Ko de cache / cœur L2 ".

Je crois que donner à chaque cœur ses propres L1 et L2 avec un seul L3 commun, beaucoup plus grand, a été introduit pour la première fois dans le cadre de la Nehalem (microarchitecture) (en novembre 2008?).

je ne sais pas pourquoi lshw utilise le terme External Cachepour désigner le L3. Mais cela me semble trompeur car le cache L3 est sur le processeur et non pas ce que je considérerais comme externe . Encore une fois, cela revient à essayer d'utiliser un ancien logiciel pour décrire un matériel plus récent tout en n'apportant que des modifications minimes au logiciel.

(On pourrait probablement en apprendre davantage en regardant le code source réel, mais je n'ai pas eu le temps d'essayer de le faire.)

Enfin, oui le cache L3 est partagé entre les cœurs / threads. La citation suivante est tirée de l'article de Wikipédia lié ci-dessus, "L' hyper-threading est réintroduit avec une réduction de L2, qui a été incorporé en tant que cache L3 qui est utilisable par tous les cœurs . "

irrationnel John
la source
Merci pour l'aide concernant les spécifications. Pourtant, avoir à traquer les spécifications est nul si nous avons des outils qui prétendent à ce que nous voulons.
Raphael
@RI ne savait pas que vous cherchiez (encore) quelque chose. Franchement, le problème que j'ai habituellement avec Intel est qu'il y a trop d' informations fournies. Quel genre d'informations vous intéresse? En regardant à droite sur la page Intel i7-920, vous verrez des liens rapides . Le lien de la fiche technique vous amène à une page Documents techniques . Il y a deux volumes sur les processeurs i7-900 avant même de lister les spécifications mécaniques et thermiques. Le développeur de logiciels est sur une autre page. Trop pour être listé.
John irrationnel
Eh bien, j'ai comparé les algorithmes parallèles, donc l'architecture du cache était importante. Cela craint que les outils GNU / Linux ne soient apparemment pas (tous) fiables. Quoi qu'il en soit, la question portait davantage sur les outils que sur la machine spécifique sur laquelle je travaillais.
Raphael
@Raphael Je ne sais pas vraiment pourquoi lshwrenvoie les résultats du cache qu'il fait. Mais peut-être qu'ils ne voulaient pas changer leur format de sortie par crainte qu'ils ne cassent un script qui analysait leur sortie. Vous pouvez vous peindre dans un coin trop facilement avec des outils logiciels.
John irrationnel