lshw e lscpu discordam em caches - o que é certo?

13

Eu estou tentando descobrir detalhes sobre caches (em particular quais caches são compartilhados entre os núcleos e quais não são) e tenho stumpled 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

Eu não me preocupo muito com o compartilhamento de instruções e cache de dados, mas onde L2 foi?

Observado em uma máquina rodando o Ubuntu 10.10, ou para deixar 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

Esta é uma pergunta geral, mas note que nem a especificação do fabricante mais precisa eu encontrei nem 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)?

    
por Raphael 05.04.2012 / 12:52

1 resposta

3

Obrigado por adicionar as informações extras sobre o processador à sua pergunta. É útil saber que os exemplos que você postou 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 que lshw foi apenas modificado minimamente para refletir a adição da Intel de um cache L3 em 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 aparentemente são relatadas como cache L2.

Suponho que as especificações que você examinou não incluam o cache L1 e L2, porque dentro de uma determinada microarquitetura elas são todas iguais. Por exemplo, para Nehalem isto é " 64 KB L1 cache / core (32 KB L1 Data + 32 KB L1 Instruction) e 256 KB L2 cache / core. ".

Eu acredito que dar a cada núcleo seu próprio L1 e L2 com um único L3 comum, muito maior, foi introduzido pela primeira vez como parte da Nehalem (microarquitetura) (em novembro de 2008?).

Eu não sei porque lshw usa o termo External Cache para se referir ao L3. Mas parece-me enganoso, uma vez que a cache L3 está na CPU e não o que eu consideraria external . Novamente, parece que estamos tentando usar um software antigo para descrever um hardware mais novo, enquanto fazemos apenas alterações mínimas no software.

(Provavelmente mais poderia ser aprendido olhando para o código-fonte real, mas eu não tive tempo para tentar fazer isso.)

Finalmente, sim, o cache L3 é compartilhado entre os núcleos / threads. A citação a seguir é do artigo da Wikipedia vinculado acima, " Hyper-threading é reintroduzido junto com uma redução em L2, que foi incorporada como L3 Cache que é utilizável por todos os núcleos . "

    
por 14.05.2012 / 19:48