O número de núcleos da CPU parece incorreto

14

insira a descrição da imagem aqui

Como a imagem mostra, o número de processadores é 4.

Mas o intel i5-4210U possui apenas 2 núcleos, como mostrado abaixo. (Especificações próprias da Intel.)

insira a descrição da imagem aqui

Então, se o i5-4210U tiver apenas 2 núcleos do que o que "4" indica na 1ª foto?

lscpu dá este resultado:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 69
Stepping:              1
CPU MHz:               989.531
BogoMIPS:              4788.74
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3
foxtrot9
fonte
10
Por ter Hyperthreading , o que significa que a CPU apresenta quatro núcleos no sistema operacional, em vez de apenas os dois físicos, a fim de melhorar o desempenho. (" # of threads " da folha de especificações é o que as informações da CPU no Ubuntu estão mostrando para você)
JonasCz - Restabelece Monica em
3
A outra maneira de descobrir isso é fazer lscpue olhar CPU(s), Thread(s) per coree Core(s) per sockete Socket(s).
Edwinksl
@edwinksl, resultado adicionado de lscpu.
foxtrot9
2
Então você tem 4 "CPUs", também conhecidas como núcleos lógicos, 2 threads por núcleo físico (esta é a parte de hyperthreading), 2 núcleos físicos por soquete e 1 soquete. 4 = 2 * 2 * 1.
Edwinksl
você não ouviu hyperthreading que existe desde o pentium 4?
Phuclv

Respostas:

31

Sua CPU possui apenas 2 núcleos, mas suporta 4 threads simultâneos .

Isso é conseguido pela tecnologia Hyper-Threading da Intel, que permite executar dois threads separados em paralelo ao mesmo tempo em um único núcleo.

Portanto, 2 núcleos x 2 threads por núcleo significa 4 threads por CPU.

Byte Commander
fonte
1
Eu sei um pouco sobre threads, por isso estou curioso para saber como isso pode ser alcançado no nível do hardware? Quero dizer 2 threads por CPU?
precisa saber é o seguinte
7
Eu realmente não posso começar a explicar todo o conceito por trás do hyper threading aqui, isso explodiria a resposta. Em vez disso, gostaria de sugerir que você leia o artigo correspondente da wikipedia ou alimente seu mecanismo de pesquisa favorito com "hyperthreading".
Byte Commander
6
Em resumo, podemos dizer que um núcleo com capacidade de hyperthreading possui alguns elementos (estado da arquitetura, por exemplo, registros etc.) duplicados, enquanto outros (mecanismo de execução, cache) são compartilhados.
Byte Commander
5
@ foxtrot9 basicamente, um único thread de execução geralmente não usa nada perto de 100% do núcleo da CPU - a CPU gasta tempo aguardando o carregamento dos dados da memória e qualquer instrução não usa todos os pequenos circuitos (execução unidades) no núcleo que faz várias coisas. O HT permite que dois encadeamentos de execução compartilhem o núcleo, para que um possa executar enquanto o outro está aguardando, ou ambos podem executar se usarem conjuntos de unidades de execução separados. Mas como os dois threads precisam compartilhar recursos, algumas vezes um impede a execução do outro, portanto, não é tão rápido quanto 2 núcleos inteiros.
Hbbs #
@ Hobbs Explicação detalhada, mas simples, ótimo! Obrigado por este comentário informativo :)
Byte Commander
3

Como você pode ver na imagem que você forneceu da Intel, o número de threads é 4.

Então, eu diria que o Ubuntu está mostrando o número de threads e não dos núcleos

Nico T
fonte
1

No processador i5-4210 da Intel, existem 2 núcleos físicos que são divididos em 2 núcleos lógicos; esses núcleos lógicos são alcançados pela tecnologia hyper threading da Intel. Assim, o total é de 4 núcleos, como mostrado na foto. Esta informação também é dada na outra foto.

Moksh
fonte
Não sei por que as pessoas estão votando negativamente na sua resposta, o que você disse é verdade.
Anomalia virtual
As pessoas são burras então, eu não me importo.
Moksh
Apenas para fazer backup dessa resposta, a Wikipedia diz: "Para cada núcleo de processador fisicamente presente, o sistema operacional endereça dois núcleos virtuais (lógicos)".
Anomalia virtual
Thnx @lightswitchr
Moksh
1
Acho que as pessoas estão com voto negativo porque você disse que existem dois núcleos físicos e dois núcleos lógicos. Isso não é verdade, cada núcleo físico é dividido em dois núcleos lógicos, portanto, existem quatro núcleos lógicos (dois em execução em cada núcleo físico).
Runemoro 4/08/16