Qual é a diferença entre multithreading e hyperthreading? [fechadas]

10

Eu ouvi os termos hyper-threading e multi-threading, mas qual é exatamente a diferença entre eles? Que tipo de processador Intel os usa?

rosa
fonte
2
Você está tentando comparar coisas que não são diretamente comparáveis; apenas relacionado. É como perguntar "Qual é a diferença entre um pé e um sapato?" Além disso, o que sua pesquisa revelou até agora? Onde você está exatamente desligando determinando a diferença com base em definições facilmente coletadas da Internet?
Ƭᴇcʜιᴇ007
11
eu não sei nem Multithreading nem Hyperthreading colocar Estou pediu para conhecê-los
subiu
11
os nazis de estouro de pilha ter fechado o tema como sua 'off topic' ... É uma pergunta muito boa, é popular e não deve ser fechado ..
Robbo_UK

Respostas:

19

Multithreading refere-se à tarefa geral de executar mais de um encadeamento de execução em um sistema operacional. O multithreading é chamado genericamente de "multiprocessamento", que pode incluir vários processos do sistema (um exemplo simples no Windows seria, por exemplo, executar o Internet Explorer e o Microsoft Word ao mesmo tempo) ou pode consistir em um processo que possui vários threads dentro isto.

Multithreading (ou devo dizer, multiprocessamento) é um conceito de software . Praticamente qualquer CPU Turing-complete pode executar multithreading, mesmo se o computador tiver apenas um núcleo da CPU e esse núcleo não suportar hyperthreading. Para dar suporte ao multiprocessamento, a CPU entrelaçará a execução de diferentes threads de execução, executando um, depois outro e depois outro, em que o sistema operacional dividirá o tempo disponível em "fatias" e fornecerá uma quantidade aproximadamente igual de tempo para cada encadeamento (o tempo não precisa ser igual, mas normalmente é assim que é feito, a menos que um processo solicite uma prioridade mais alta).

Observe que, sempre que houver mais encadeamentos de execução de software tentando executar a qualquer momento do que encadeamentos de execução de hardware (simultâneos) disponíveis , esses encadeamentos de software serão "intercalados" entre os núcleos disponíveis. No caso de um "uniprocessador" (um núcleo de CPU sem hyperthreading), se você tiver mais de um encadeamento de software, eles sempreser intercalado. Se você possui uma CPU de 4 núcleos com hyperthreading, são 8 "threads de hardware", o que significa que a CPU pode executar 8 threads de execução simultâneos no mesmo instante; portanto, se você tivesse 8 threads de software tentando executar, todos eles poderiam ser executados ao mesmo tempo ; mas se você tivesse 9 threads de software, um dos threads de hardware teria que intercalar um par de threads (o par exato de threads escolhido dependeria da implementação do agendador do sistema operacional).


Por outro lado, o hyperthreading refere-se a uma tecnologia de hardware muito específica criada pela Intel, que permite que um único núcleo de processador intercale vários threads de execução com mais eficiência. Em outras palavras, uma CPU com hyperthreading fornecerá um desempenho um pouco maior que uma CPU que, de outra forma, é a mesma, mas sem hyperthreading, porque a CPU com hyperthread poderá equilibrar simultaneamente dois (às vezes mais, mas o hyperthreading geralmente é 2) maneira) threads de execução em um determinado núcleo.

No entanto, o hyperthreading é estritamente mais lento do que ter núcleos físicos completamente separados, porque existem alguns tipos de operações que podem prejudicar as vantagens de desempenho do hyperthreading, enquanto há menos operações que podem causar esse evento com núcleos completamente separados.

Pegue o exemplo a seguir, onde se supõe que "1 núcleo" execute exatamente o mesmo em todos os exemplos:

Exemplo 1: 2 núcleos, sem hyperthreading.
Exemplo 2: 4 núcleos, sem hyperthreading.
Exemplo 3: 2 núcleos com hyperthreading.
Exemplo 4: 4 núcleos com hyperthreading.

Nesse caso, o exemplo 4 sempre será o mais rápido. O exemplo 2 às vezes pode ser tão rápido quanto o exemplo 4, em cargas de trabalho extremamente inadequadas para aproveitar as otimizações do hyperthreading.

O Exemplo 3, por outro lado, pode, às vezes, em cargas de trabalho onde o hyperthreading é mais vantajoso, ser quase tão rápido quanto o Exemplo 2, mesmo que ele tenha metade do número de núcleos físicos.

O Exemplo 1, é claro, será o mais lento de todos os exemplos, mas às vezes pode ser tão rápido quanto o Exemplo 3, ao executar uma carga de trabalho pouco adequada ao hyperthreading.

Nos benchmarks do mundo real com os modernos processadores Intel, geralmente descobrimos que o hyperthreading resulta em, de maneira geral, uma melhoria de 20% a 40% no desempenho em comparação com nenhum hyperthreading (com o caso "no hyperthreading" sendo comparado ao desativar o recurso hyperthreading no BIOS). Ocasionalmente , haverá cargas de trabalho em que desativar o hyperthreading mostra uma vantagem de desempenho , mas essas cargas de trabalho podem ser raras no uso real. Mas, se eu tivesse uma escolha entre 4 núcleos com hyperthreading ou 8 núcleos, assumindo que cada núcleo tivesse o mesmo desempenho, eu escolheria a CPU de 8 núcleos sempre.

allquixotic
fonte
2
Para ser exato, multithreading e multiprocessing não são a mesma coisa. Os threads compartilham o contexto de execução com o processo ao qual estão associados, enquanto os processos têm seus próprios contextos de execução. No entanto, para esta resposta, essa distinção não é tão importante.
Tero Kilkanen
11
A tecnologia Hyperthreading não foi "criada pela Intel"; para o mainline x86, é apenas um nome de marca registrada para multithreading simultâneo. Se o Alpha 21464 tivesse sido produzido, teria sido um dos primeiros usuários proeminentes do SMT. A Intel produziu o primeiro uso lançado de SMT (possivelmente excluindo processadores menos conhecidos) com alguns Pentium 4s, mas a idéia básica não foi uma invenção da Intel.
Paul A. Clayton
2
Quibble: o hyperthreading não é estritamente mais lento que os núcleos separados. Podemos conceber casos (artificiais) em que o compartilhamento de caches L1 é um benefício maior do que usar os recursos de um núcleo. Outro caso peculiar pode ser quando um encadeamento está persistentemente ativo e outro manipula brevemente eventos intermitentes; acordar um núcleo intermitentemente é mais caro do que acordar um encadeamento em um núcleo ativo. Para encadeamentos com ILP extremamente baixo, se a contenção do cache não for um problema, a maior eficiência energética do uso de um único núcleo poderá permitir maior turbobostagem (melhor desempenho).
Paul A. Clayton
3
As respostas são editáveis ​​no SU, portanto, se vocês quiserem melhorar, sinta-se à vontade. Além disso, lembre-se do aparente nível de conhecimento do OP; até minha resposta por si só é provavelmente mais técnica do que eles esperavam ou queriam. Eu intencionalmente encobri alguns detalhes em favor da facilidade de explicação. Duvido que o OP esteja projetando processadores em breve e precise desesperadamente conhecer todos esses detalhes. Comentários interessantes, no entanto.
precisa saber é o seguinte
11
As edições sugeridas que alteram o conteúdo (ou seja, não apenas correções gramaticais / de digitação ou reformulações para maior clareza) provavelmente serão rejeitadas.
Paul A. Clayton
4

Multithreading é um termo para processamento paralelo no nível do sistema operacional. O processador não tem nada a ver com multithreading.

Hyperthreading é um conceito da Intel que implementa o processamento "simultâneo" de vários threads em um único núcleo de processador. O sistema operacional vê dois núcleos de processador, embora exista apenas um núcleo físico.

Tero Kilkanen
fonte