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 lscpu
pré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 -a
parler:
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 Cache
signifie- t-il que le cache est partagé entre les (quatre) cœurs (et Internal Cache
l'inverse)?
cpu
cache
system-information
Raphael
la source
la source
Réponses:
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 à un
Intel Core i7-920 Processor
.Les informations fournies par
lscpu
sont plus précises car elles incluent les trois niveaux de cache, L1, L2 et L3. Il semble que celalshw
n'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 termeExternal Cache
pour 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 . "
la source
lshw
renvoie 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.