Como funciona o Hyper-Threading?

Por Ultradownloads
Pentium 4 HT

Quando vamos comprar um processador fabricado pela Intel, especialmente da linha Core (i3, i5 ou i7), nos acostumamos a ver a denominação hyper-threading, normalmente propagandeada como se dobrasse o número de núcleos disponíveis. Mas será realmente isso que acontece? Para responder, o Ultra Downloads preparou um tutorial explicando como o HT realmente funciona e quais são as vantagens em ter um processador com essa tecnologia.

Mas, indo por partes, vamos entender o que é uma thread.

Thread:

Threads são pequenas tarefas que o computador precisa executar de forma concorrente, ou seja, operações que um ou mais programas abertos precisam realizar e disputam pela "atenção" do processador. Este gerencia essas requisições utilizando um recurso chamado escalonamento, onde executa algumas operações do programa 1, em seguida do programa 2, e assim por diante, atendendo todas as tarefas ao mesmo tempo.

Como o processador é capaz de realizar bilhões de cálculos por segundo, esse escalonamento é muito rápido, então temos a noção de que todos os programas possuem uma unidade independente de processamento.

Pra simplificar, imagine que você possui um computador com um processador de apenas um núcleo e goste de trabalhar escrevendo textos, escutando música e navegando na internet ao mesmo tempo. Utilizando o Alt+Tab para navegar pelas janelas abertas temos a ideia de que tudo está acontecendo simultaneamente, mas na verdade o processador está distribuindo o seu processamento entre todos esses programas.

Esse conceito de threads também pode ser aplicado a processadores com dois ou mais núcleos, com uma pequena diferença. Como cada núcleo do computador é uma unidade de processamento independente, as threads são distribuídas entre eles, então menos escalonamentos são necessários para dividar a carga de trabalho, já que cada núcleo lida com uma parcela do trabalho total.

Essa capacidade do processador de lidar com várias threads ao mesmo tempo é chamada multi-threading, e é devido a essa tecnologia presente na maioria dos processadores modernos que podemos executar várias aplicações ao mesmo tempo, necessitando apenas de um sistema operacional multitarefa, como o Windows, Linux ou UNIX.

Abaixo temos uma imagem com o gerenciador de tarefas do Microsoft Windows. Reparem que que o gerenciador do Windows (Histórico de uso de CPU) não diferencia núcleos de processamento de threads, assumindo que o processador tenha 12 núcleos ao invés de 6.

Gerenciador de tarefas do Microsoft Windows

Já no CPU-Z, programa de inventário de hardware bastante respeitado por exibir as especificações corretamente, há uma diferenciação entre núcleos e threads, mostrada na parte inferior da tela:

Tela principal do CPU-z

Agora vamos entender o que é hyper-threading.

Hyper-threading:

A Intel lançou o seu primeiro modelo com a tecnologia hyper-threading em 2002 no modelo Xeon MP Foster, processador voltado para a linha de servidores, em seguida incorporando ao Pentium 4 (arquitetura Northwood) e em todos os modelos que vieram na sequência.

Embora o sistema operacional "enxergue" o dobro de núcleos de processamento presentes, na prática não é isso que acontece. Na verdade é que cada núcleo físico possui duas unidades lógicas independentes, cada uma com um controlador de interrupção programável (APIC) e conjunto de registradores próprio.

Essas modificações na arquitetura possibilitaram um ganho de produtividade em algumas tarefas específicas, desde que os softwares tenham suporte. Mas de quanto é esse ganho? Segundo a própria Intel, o aumento de performance seria de 25% em relação a um modelo de mesmo clock sem suporte à tecnologia, mas testes posteriores provaram que esse aumento não passava de 10% na maioria dos casos.

Processadores dual-core podem executar várias threads paralelas em um único programa, o hyper-threading tira proveito apenas de aplicações com instruções segmentadas, que utilizam "pipeline", e apenas poucas aplicações utilizam esse tipo de otimzação, como por exemplo os programas gráficos.

Como a velocidade dos processadores atualmente raramente passa dos 4 GHz por questões de arquitetura (já que a dissipação térmica cresce exponencialmente em relação à velocidade, ou seja, ele esquenta pra caramba com um ganho de desempenho pequeno), tecnologias desenvolvidas para aumentar a eficiência deles são sempre bem vindas. O hyper-threading não substitui os modelos de vários núcleos, mas os complementa, possibilitando que eles façam melhor uso dos recursos disponíveis.

Entendeu como funciona essa tecnologia? Ficou com alguma dúvida? Mande para nós!

Siga o Canaltech no Twitter!

Não perca nenhuma novidade do mundo da tecnologia.