O lshw e o lscpu discordam dos caches - o que é certo?

14

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 lscpureivindicaçõ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 -afalar:

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 Cachesignifica que o cache é compartilhado entre os (quatro) núcleos (e Internal Cacheo oposto)?

Rafael
fonte
Dois pensamentos. Primeiro, o que o fabricante diz? Minha abordagem provavelmente seria procurar as especificações da CPU e tentar seguir adiante a partir daí. Segundo, se é algo que você pode fazer, eu ficaria curioso para ver o que você conseguiu se tentasse isso depois de inicializar um Live CD / USB para o Ubuntu ou Fedora mais recente. (? Talvez seja um bug que já está fixado Suponho que há outras maneiras de verificar se existia um bug e foi corrigido, mas ...)
irracional John
@irrationalJohn: Bom argumento sobre especificações oficiais (embora não relacionado à questão mais geral). Infelizmente, as especificações nem ajudam (veja editar). Além disso, não posso mexer na máquina.
Raphael

Respostas:

3

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 lscpusão mais precisas porque incluem todos os três níveis de cache, L1, L2 e L3. Parece que lshwfoi 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 lshwusa o termo External Cachepara 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 " .

John irracional
fonte
Obrigado pela ajuda em relação às especificações. Ainda assim, ter que caçar especificações é péssimo se tivermos ferramentas que pretendam o que queremos.
Raphael
A @RI não sabia que você ainda estava procurando alguma coisa. Francamente, o problema que normalmente tenho com a Intel é que há muita informação fornecida. Em que tipo de informação você está interessado? Olhando para a direita, na página Intel i7-920, você encontrará Links rápidos . O link da folha de dados leva você a uma página de documentos técnicos . Existem dois volumes nos processadores i7-900 antes mesmo de listar as especificações mecânicas e térmicas. Desenvolvedor de software aparece em outra página. Muitos para listar.
John irracional
Bem, comparei algoritmos paralelos para que a arquitetura de cache fosse importante. É uma pena que as ferramentas GNU / Linux aparentemente não sejam (todas) confiáveis. Enfim, a pergunta era mais sobre as ferramentas do que sobre a máquina específica em que eu estava trabalhando.
Raphael
@ Rafael Eu realmente não sei por que lshwretorna 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.
irracional John