O que são threads e o que eles fazem no processador?

27

Eu estava olhando as estatísticas da CPU Intel Pentium e5700 .

Possui dois núcleos e dois threads. O que os threads fazem pelo processador? Existe alguma relação entre o número de núcleos e o número de threads? Qual é o objetivo dos segmentos para o sistema em geral?

impossível3
fonte
É o número de threads que a CPU pode lidar de cada vez ou algumas estatísticas falsas que a Intel inventou.
digitxp
3
Votado para fechar como IMO, isso é muito geral - embora eu sempre hesite em dizer "apenas pesquise no Google", o objetivo do Superusuário (e sites semelhantes) é responder a perguntas reais, não ser um dicionário de termos técnicos que são facilmente pesquisados ​​em recursos mais apropriados.
Shinrai
3
@Shinrai Eu editei isso para torná-lo menos genérico #
Simon Sheehan

Respostas:

21

A contagem de núcleos é o número físico de núcleos na matriz da CPU, enquanto a contagem de threads é o número de threads de aplicativos individuais que podem ser executados simultaneamente na própria CPU. Sem nenhum hardware adicional ou especial, isso é igual à contagem de núcleos. Alguns processadores, no entanto, terão mais threads do que núcleos.

Algumas CPUs Intel têm um recurso chamado hyperthreading , que permite que um sistema operacional veja o dobro da quantidade de núcleos lógicos por núcleo físico. Isso permite que o sistema operacional agende e execute o dobro da quantidade de threads simultaneamente; portanto, no caso da CPU à qual vinculei acima, existem quatro núcleos físicos, mas oito lógicos (para que você possa executar oito threads simultaneamente).

Cada aplicativo individual em execução no sistema operacional é de thread único ou de vários threads (pense em cada thread como um "sub-aplicativo"). Os aplicativos single-threaded requerem apenas um thread para serem executados na CPU, enquanto os aplicativos multi-threaded têm muitos sub-threads em execução simultaneamente. Núcleos adicionais, ou hyperthreading, permitem que mais threads de aplicativos sejam executados simultaneamente de uma só vez.

Isso permite que aplicativos multithread ( não single threaded) sejam executados muito mais rapidamente, pois mais de um thread pode ser executado ao mesmo tempo na CPU.


Apenas uma observação final, o hyperthreading melhora o desempenho de alguns aplicativos multithread especificamente otimizados para ele (já que ainda há apenas metade do número de núcleos físicos, pois são lógicos). Em alguns vários casos, as aplicações podem correr mais rápido com Hyperthreading disabled (embora muitas aplicações fazer beneficiar dele). Independentemente do hyperthreading, um aumento no número de núcleos físicos sempre beneficiará aplicativos multithread.

Avanço
fonte
1
Você poderia explicar o que os threads fazem pelo processador? 1 para mencionar hyperthreading embora, como é muito comum agora (parece ser em tudo do i3)
Simon Sheehan
Cada processo possui pelo menos um thread. Quando o processo aciona a CPU, o encadeamento principal é executado até que a sua CPU seja ativada. Um processo pode gerar outro encadeamento e agora duas partes do mesmo processo estarão em execução e solicitarão turnos da CPU. Todos os processos são programas e, com esse mecanismo, duas coisas no mesmo programa podem estar em execução ao mesmo tempo. É mais rápido do que criar um novo processo (ou seja, bifurcar ou carregar um novo programa), mas menos seguro. Os processos são isolados um do outro, os threads de um processo não.
LawrenceC
E se eu criei um programa java multithread com 50 threads simultâneos em execução e o estou executando no Intel i7-4790K, que possui 4 núcleos e 8 threads. Isso significa que apenas 8 desses 50 threads no aplicativo java estão sendo executados simultaneamente e o restante está em uma fila? Como isso funciona #
Donato
@Donato, o sistema operacional interrompe qualquer thread em execução para permitir que os outros tenham algum tempo para concluir seu trabalho. A qualquer momento, apenas 8 threads estão em execução na CPU e cada núcleo está constantemente alternando entre diferentes threads; é útil pensar neles como "trabalhos" (tendo em mente que os trabalhos também podem ter uma prioridade). Cada núcleo fará algum trabalho para um determinado encadeamento e, em seguida, é interrompido pelo agendador de tarefas do sistema operacional para passar para um trabalho diferente, realizar algum trabalho nesse trabalho, e assim sucessivamente, até o quarto, até que o trabalho seja concluído.
Breakthrough
@ Breakthrough, Re " para que você possa executar oito threads simultaneamente ", quais são as limitações dessa simultaneidade quando comparadas à verdadeira simultaneidade oferecida por núcleos reais individuais? Além disso, como é possível que "os aplicativos possam ser executados mais rapidamente com o hyperthreading desativado "?
Pacerier
9

Um "núcleo" representa um subconjunto físico real de um processador que, por si só, pode lidar com o processamento, enquanto um "encadeamento" é quantos processos reais o processador pode manipular ao mesmo tempo. A Intel desenvolveu uma tecnologia que eles rotulam de "hiperencadeamento". Essa técnica permite que um núcleo físico (que normalmente só seria capaz de lidar com um segmento por vez) agora possa lidar com dois segmentos simultaneamente.

Um encadeamento é uma tarefa que o processador deve manipular. Para uma explicação simples, você pode assumir que todo aplicativo que você abre (como pintura, bloco de notas, media player) tem seu próprio encadeamento ... agora isso não significa que você só pode abrir 2 aplicativos de uma só vez, simplesmente porque o processador e o sistema operacional funcionam tão rapidamente em 'alternar threads' para atender às necessidades de todos os aplicativos que você abriu. Você terá um desempenho melhor com mais núcleos, porque agora pode distribuir todo o trabalho para mais processadores.

Por exemplo, meu computador de trabalho possui um i7. O i7 possui 4 núcleos físicos, mas cada núcleo pode executar um 'hyperthreading', o que permite que esse processador processe 8 threads de uma só vez. Portanto, se eu abrir o gerenciador de tarefas, verá 8 caixas para a escala de desempenho do processador.

Uma regra geral é que mais núcleos físicos são melhores que mais threads. Portanto, se você estivesse comparando processadores com 4 núcleos e 4 threads, seria melhor que 2 núcleos e 4 threads. Mas quanto mais threads o seu processador puder suportar, melhor será o desempenho durante a multitarefa e, para algumas aplicações muito intensas (edição de vídeo, CAD, CAM, Compressão, Criptografia, etc.), ele próprio utilizará mais de um núcleo por vez.

CenterOrbit
fonte
O que você quer dizer com "caixas"?
Pacerier
google.com/…
CenterOrbit
-1

clicando nos links de um artigo no IE ou chrome, sempre que você clica em um tópico. quanto mais você clicar nos links, mais tópicos. tem uma CPU de 4 núcleos, você tem até 8 threads; pode abrir 8 links antes de começar a ter um problema. desconsiderando sua conexão com a internet. então cada núcleo cobre dois desses links (threads) que você abriu. essa é a ideia da IMO. se isso faz algum sentido para alguém.

marc g.
fonte
Não, não é isso que threads estão no contexto de CPUs ou a pergunta que foi feita.
music2myear 18/07