Eu estou tentando descobrir detalhes sobre caches (em particular, quais caches são compartilhados entre núcleos e quais não são) e se esbarraram em uma inconsistência.
sudo lshw
diz
*-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
mas lscpu
reivindicações
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
Não me preocupo muito com a adição de instruções e cache de dados, mas para onde foi o L2?
Observado em uma máquina executando o Ubuntu 10.10, ou para uname -a
falar:
Linux name 2.6.35-32-generic #66-Ubuntu SMP Mon Feb 13 21:04:32 UTC 2012 x86_64 GNU/Linux
Essa é uma pergunta geral, mas observe que nem as especificações mais precisas do fabricante que eu encontrei nem a Wikipedia têm os detalhes necessários.
Pergunta de bônus não relacionada: External Cache
significa que o cache é compartilhado entre os (quatro) núcleos (e Internal Cache
o oposto)?
cpu
cache
system-information
Rafael
fonte
fonte
Respostas:
Obrigado por adicionar as informações extras sobre o processador à sua pergunta. Ajuda saber que os exemplos que você publicou se referem a um
Intel Core i7-920 Processor
.As informações fornecidas por
lscpu
são mais precisas porque incluem todos os três níveis de cache, L1, L2 e L3. Parece quelshw
foi modificado minimamente para refletir a adição de um cache L3 da Intel às suas CPUs. Em vez de exibir informações sobre todos os três níveis de caches, as informações sobre o tamanho do cache L3 são aparentemente relatadas como cache L2.Suponho que as especificações analisadas não incluam o cache L1 e L2 porque, dentro de uma determinada microarquitetura, são todas iguais. Por exemplo, para Nehalem, isso é " cache / núcleo L1 de 64 KB (dados L1 de 32 KB + instrução L1 de 32 KB) e cache / núcleo L2 de 256 KB. ".
Acredito que dar a cada núcleo seus próprios L1 e L2 com um único L3 comum muito maior foi introduzido pela primeira vez como parte da Nehalem (microarquitetura) (em novembro de 2008?).
Não sei por que
lshw
usa o termoExternal Cache
para se referir ao L3. Mas isso me parece enganador, já que o cache L3 está na matriz da CPU e não o que eu consideraria externo . Mais uma vez, é como tentar usar um software antigo para descrever um hardware mais novo e fazer apenas alterações mínimas no software.(Provavelmente mais poderia ser aprendido observando o código fonte real, mas não tive tempo para tentar fazer isso.)
Por fim, sim, o cache L3 é compartilhado entre os núcleos / threads. A citação a seguir é do artigo da Wikipedia vinculado acima: "O hyperthreading é reintroduzido juntamente com uma redução no L2, que foi incorporada como cache L3, que pode ser usado por todos os núcleos " .
fonte
lshw
retorna os resultados do cache que ele faz. Mas, possivelmente, eles não quiseram alterar seu formato de saída por preocupação, pois poderiam quebrar um script que analisava sua saída. Você pode pintar-se em um canto com muita facilidade com as ferramentas de software.