É incrível o esforço que os fabricantes de microprocessadores fazem para aumentar a performance dos processadores modernos. Técnicas como superpipeline, execução especulativa, execução fora de ordem, previsão de desvio e cache de memória, foram implementadas com o objetivo de aumentar o desempenho dos processadores. A tecnologia HyperThreading, desenvolvida pela Intel, é mais uma técnica criada para oferecer maior eficiência na utilização dos recursos de execução do processador. Segundo a Intel, a HyperThreading oferece um aumento de desempenho de até 30% dependendo da configuração do sistema.
A tecnologia HyperThreading simula em um único processador físico dois processadores lógicos. Cada processador lógico recebe seu próprio controlador de interrupção programável (APIC) e conjunto de registradores. Os outros recursos do processador físico, tais como, cache de memória, unidade de execução, unidade lógica e aritmética, unidade de ponto flutuante e barramentos, são compartilhados entre os processadores lógicos. Em termos de software, significa que o sistema operacional pode enviar tarefas para os processadores lógicos como se estivesse enviando para processadores físicos em um sistema de multiprocessamento.
 clique para ampliar Figura 1: Comparação de um processador com e sem tecnologia HyperThreading.
Na Figura 1 vemos o diagrama de dois processadores. Em nosso diagrama, os registradores e controlador de interrupção foram chamados de “AS“. Na área denominada de “recursos de execução” estão todos os recursos que o processador necessita para executar as instruções. O processador da esquerda não suporta a tecnologia Hyper-Threading. O processador da direita suporta, duplicando seus registradores e controladores e compartilhado os recursos de execução entre os processadores lógicos, parecendo assim um sistema com dois processadores.
Os modernos sistemas operacionais são SMP (Multiprocessamento Simétrico), ou seja, podem trabalhar com mais de um processador instalado no sistema, dividindo às tarefas entre os mesmos. A tecnologia HyperThreading estende essa idéia de forma que os sistema operacionais e software aplicativos dividam as tarefas entre os processadores lógicos.
 clique para ampliar Figura 2: Sistema Multiprocessado sem tecnologia HyperThreading.
 clique para ampliar Figura 3: Processador com tecnologia Hyper-Threading.
As instruções CPUID são utilizadas pelo sistema operacional e aplicativos para identificar a presença da tecnologia HyperThreading nos processadores. Para quem não sabe, as instruções CPUID servem para informar ao software as características do processador instalado. Obviamente, os sistemas operacionais e sofware aplicativos têm que suportar a tecnologia HyperThreading para usufruir dos processamentos simultâneos.
O primeiro processador da Intel a implementar a tecnologia HyperThreading foi o Intel Xeon. O Intel Xeon utiliza a arquitetura NetBurst e é voltado para o mercado de servidores. Apesar do foco da tecnologia HyperThreading ser os processadores para servidores de rede, já existem chipsets (Intel 845PE) para os novos processadores Pentium 4 que utilizam a tecnologia HyperThreading.
|