Autor: Cássio Lima
É 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 Hyper-Threading, 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 Hyper-Threading oferece um aumento de desempenho de até 30% dependendo da configuração do sistema.
A tecnologia Hyper-Threading 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.
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 Hyper-Threading estende essa idéia de forma que os sistema operacionais e software aplicativos dividam as tarefas entre os processadores lógicos.
As instruções CPUID são utilizadas pelo sistema operacional e aplicativos para identificar a presença da tecnologia Hyper-Threading 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 Hyper-Threading para usufruir dos processamentos simultâneos.
O primeiro processador da Intel a implementar a tecnologia Hyper-Threading foi o Intel Xeon. O Intel Xeon utiliza a arquitetura NetBurst e é voltado para o mercado de servidores. Apesar do foco da tecnologia Hyper-Threading ser os processadores para servidores de rede, já existem chipsets (Intel 845PE) para os novos processadores Pentium 4 que utilizam a tecnologia Hyper-Threading.