Estou ajudando um amigo que está tentando executar vários threads em um sistema com um processador Intel Core i3-3217U.
De acordo com o site da Intel , esse processador possui 2 núcleos que suportam 4 threads por núcleo(?) (implicando 8 threads no total):
- Nº de núcleos: 2 (Número de núcleos é um termo de hardware que descreve o número de unidades de processamento central independentes em um único componente de computação (matriz ou chip).)
- Nº de Threads: 4 (Um Thread, ou thread de execução, é um termo de software para a sequência básica ordenada de instruções que podem ser passadas ou processadas por um único núcleo de CPU .) [ênfase minha]
No entanto, este outro site afirma:
- "Graças ao Intel Hyper-Threading, a contagem de núcleos é efetivamente dobrada, para 4 threads."
Pode-se esperar multiprocessar eficientemente 4 threads ou 8 threads com esse processador?
Embora existam implementações HT de 4 vias ou mais, digamos no Xeon Phi e alguns processadores de energia e 8 vias no Sparc - o HT da Intel tem apenas 2 threads por núcleo em seus processadores de consumidor, entusiasta e na maioria dos servidores
está mal escrito
Uma maneira fácil de ver isso "visualmente" é no gerenciador de tarefas do Windows, na visualização por 'núcleo'
Eu tenho um único soquete, ou o que um leigo consideraria um processador. Possui 8 núcleos 'físicos', o que se traduz em 16 processadores lógicos. É claro que a eficiência também dependeria do seu código, mas qualquer processador Intel com HT teria o dobro e não mais processadores lógicos como núcleos e um ou mais núcleos por soquete.
Você está apenas pensando demais / interpretando mal. Essa "descrição" significa apenas que um "thread de execução" em si não pode ser processado em paralelo por vários núcleos. Em outras palavras, está afirmando o fato de que, é a unidade "atômica" do multiprocessamento, que não se pode esperar que um único thread de execução seja dividido em mais partes para o multiprocessador processar. Esse é exatamente o ponto de multithreading simultâneo (o termo genérico para Hyper-Threading) - para permitir que um núcleo processe mais de um thread por vez (por assim dizer).
Em qualquer site de especificação, normalmente, a menos que o item seja chamado de "threads por núcleo", "número / número de threads" refere-se principalmente ao número total de threads de execução que um processador pode processar por vez - seu número de núcleos vezes seus threads por núcleo.
Embora o site da Intel seja ambíguo e confuso, a Wikipedia deixa a situação clara.
O artigo da Wikipedia sobre hyper-threading afirma:
Assim, cada núcleo pode ter no máximo 2 threads disponíveis para multiprocessamento. Em uma CPU dual core como a mencionada, o total será de 4 threads de multiprocessamento.
Esse artigo agora está um pouco desatualizado, pois o hyper-threading da Intel em seus chips Xeon Phi (Knights Mill) pode lidar com 4 threads por núcleo. Mas como a questão é sobre um processador i3, o entendimento de 2 threads por núcleo ainda está correto.