Eu ouvi o termo hyper-threading lançado recentemente, o que exatamente é hyper-threading e por que é importante?
Eu ouvi o termo hyper-threading lançado recentemente, o que exatamente é hyper-threading e por que é importante?
Respostas:
O Hyper-threading é onde seu processador finge ter 2 núcleos físicos, mas possui apenas 1 e mais lixo.
O objetivo do hyperthreading é que, muitas vezes, quando você está executando um código no processador, há partes do processador que estão ociosas. Ao incluir um conjunto extra de registros da CPU, o processador pode agir como se tivesse dois núcleos e, assim, usar todas as partes do processador em paralelo. Quando os dois núcleos precisam usar um componente do processador, um deles acaba esperando, é claro. É por isso que não pode substituir processadores dual-core e esses.
O Hyper-Threading é o local em que dois threads podem ser executados em um núcleo de thread único. Quando um encadeamento no núcleo em questão está parado ou em um estado de parada, o hyperthreading permite que o núcleo trabalhe em um segundo encadeamento.
O hyperthreading faz com que o sistema operacional pense que o processador tem o dobro do número de núcleos e geralmente produz uma melhoria de desempenho, mas apenas na região de 15 a 30% do total - embora, em algumas circunstâncias, possa haver um impacto no desempenho (= <20%).
Atualmente, a maioria dos chips Atom e todos os i7 (e chips equivalentes ao Xeon) possuem hyper-threading, assim como alguns P4s mais antigos. No caso dos átomos, é uma tentativa desesperada de melhorar o desempenho sem aumentar muito o consumo de energia; no caso dos i7s, os diferencia da gama de chips i5.
O trabalho de processamento complexo não se beneficiará muito do HT, mas certas tarefas (simples, altamente multiencadeadas), como a codificação de vídeo, se beneficiam do HT. Na realidade, não há muito nele ...
Quando um núcleo único pode atuar como núcleo duplo
A implementação da Intel de Multi-Threading Simultâneo é conhecida como Tecnologia Hyper-Threading ou Tecnologia HT.
A HT Technology faz com que um único processador apareça, da
perspectiva do software , como vários processadores lógicos. Isso permite que os sistemas operacionais e aplicativos planejem vários encadeamentos para processadores lógicos, como
faria nos sistemas multiprocessadores.
O Hyperthreading permite que um único processador execute dois threads simultaneamente, mas não em todas as condições.
O Hyperthreading não duplica o desempenho de um sistema, pode aumentar o desempenho utilizando melhor os recursos inativos, resultando em maior taxa de transferência para certos tipos importantes de carga de trabalho. Um aplicativo em execução em um processador lógico de um núcleo ocupado pode esperar um pouco mais da metade da taxa de transferência obtida durante a execução sozinha em um processador não com hyperthread. As melhorias no desempenho do hyperthreading são altamente dependentes dos aplicativos, e alguns aplicativos podem sofrer degradação no desempenho com o hyperthreading, porque muitos recursos do processador (como o cache) são compartilhados entre processadores lógicos.
A tecnologia Intel Hyper-Threading faz com que cada núcleo possa ter dois processadores lógicos que compartilham a maioria dos recursos do núcleo, como caches de memória e unidades funcionais
Hyperthreading é aumentar o número de instruções independentes no pipeline; tira proveito da arquitetura superescalar, na qual várias instruções operam em dados separados em paralelo
A Intel diz que o hiperencadeamento é altamente eficiente porque utiliza recursos que, de outra forma, seriam inativos ou subutilizados.
Ligações:
Wikipedia
StackOverflow
Multi-Core Programming Edição Digital pg # 8
Para expandir o que já foi dito, o hyperthreading significa que um único núcleo da CPU pode manter dois contextos de execução separados e alternar rapidamente entre eles, emulando efetivamente dois núcleos no nível do hardware.
Você obtém um benefício de velocidade modesto para cargas de trabalho multithread quando comparado a um núcleo único normal. No entanto, não chega nem perto do benefício de ter dois núcleos independentes. Em termos de desempenho, é melhor pensar nisso como um pequeno aumento no desempenho multithread em um único núcleo, em vez de ter um desempenho que se aproxima de dois núcleos. O tamanho do aumento de velocidade varia de acordo com a carga de trabalho - de fato, para algumas cargas de trabalho, o aumento de desempenho é bastante decente.
O núcleo hyperthreaded possui apenas uma unidade de execução principal, mas algumas outras partes de uma CPU associadas às instruções de preparação para processamento e manutenção de um estado de execução são duplicadas.
Os núcleos do processador têm um pipeline de instruções - uma fila de instruções futuras a serem executadas, que estão sendo constantemente atualizadas, prontas para a CPU executar a instrução no início dessa fila. As CPUs as utilizam para otimizar a velocidade de execução, observando essas instruções futuras e realizando pré-processamento simples e de baixo nível, sempre que possível (essas otimizações incluem "execução fora de ordem" e "previsão de ramificação").
Os núcleos hyperthreaded possuem pipelines de instruções duplas e, junto com um segundo conjunto de registros, é onde você obtém o benefício de velocidade para cargas de trabalho multithread. A alternância entre contextos de encadeamento não descarta o pipeline ou os registros, e o pipeline e os registros para o outro encadeamento permanecem prontos e "quentes" para que possam ser alternados e usados imediatamente.