Eu ouvi os termos hyper-threading e multi-threading, mas qual é exatamente a diferença entre eles? Que tipo de processador Intel os usa?
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?
Respostas:
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.
fonte
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.
fonte