As palavras "CPU", "processador" e "core" são usadas de maneiras um tanto confusas. Eles se referem à arquitetura do processador. Um núcleo é a menor unidade independente que implementa um processador de uso geral; um processador é um conjunto de núcleos (em alguns sistemas ARM, um processador é um conjunto de clusters que são conjuntos de núcleos). Um chip pode conter um ou mais processadores (os chips x86 contêm um único processador, neste sentido da palavra processador ).
Hyperthreading significa que algumas partes de um núcleo são duplicadas. Um núcleo com hyperthreading é algumas vezes apresentado como um conjunto de dois “núcleos virtuais” - significando não que cada núcleo é virtual, mas que o plural é virtual porque eles não são realmente núcleos separados e eles terão que esperar enquanto o outro núcleo é fazendo uso de uma parte compartilhada.
No que diz respeito ao software, existe apenas um conceito útil em quase todos os lugares: a noção de threads paralelos de execução. Portanto, na maioria dos manuais de software, os termos CPU e processador são usados para significar qualquer peça de hardware que executa o código do programa. Em termos de hardware, isso significa um núcleo ou um núcleo virtual com hyperthreading.
Assim top
mostra 4 CPUs, porque você pode ter 4 threads em execução ao mesmo tempo. /proc/cpuinfo
tem 4 entradas, uma para cada CPU (nesse sentido). Os números processor
(que são o número das entradas cpuNUMBER
em /sys/devices/system/cpu
) correspondem a esses 4 segmentos.
/proc/cpuinfo
é um dos poucos lugares onde você obtém informações sobre qual hardware implementa esses threads de execução:
physical id : 0 siblings : 4 core id : 0 cpu cores : 2
significa que cpu0
é um dos 4 segmentos dentro do componente físico (processador) número 0, e isso é no núcleo 0 entre 2 neste processador.