O Hyperthreading é uma alternativa mais barata e mais lenta ao uso de núcleos duplos
O Intel Manual Volume 3 - Guia de programação do sistema - 325384-056BR Setembro de 2015 8.7 "ARQUITETURA DE TECNOLOGIA INTEL HYPER-THREADING TECHNOLOGY" descreve HT brevemente. Ele contém o seguinte diagrama:
TODO é mais lento em quanto percentual, em média, em aplicativos reais?
O hyperthreading é possível porque os núcleos modernos de CPUs únicas já executam várias instruções ao mesmo tempo com o pipeline de instruções https://en.wikipedia.org/wiki/Instruction_pipelining
O pipeline de instruções é uma separação de funções dentro de um único núcleo para garantir que cada parte do circuito seja usada a qualquer momento: leitura de memória, instruções de decodificação, instruções de execução, etc.
O Hyperthreading separa ainda mais as funções usando:
um único back-end, que realmente executa as instruções com seu pipeline.
O núcleo duplo possui dois back-ends, o que explica o maior custo e desempenho.
dois front-ends, que recebem dois fluxos de instruções e os ordenam de maneira a maximizar o uso de pipelining do back-end único, evitando riscos .
O núcleo duplo também teria 2 front-ends, um para cada back-end.
Existem casos extremos em que a reordenação de instruções não traz benefícios, tornando inútil o hyperthreading. Mas produz uma melhora significativa na média.
Dois hyperthreads em um único núcleo compartilham níveis de cache adicionais (TODO quantos? L1?) Do que dois núcleos diferentes, que compartilham apenas L3, consulte:
A interface que cada hyperthread expõe ao sistema operacional é semelhante à de um núcleo real e ambas podem ser controladas separadamente. Assim, cat /proc/cpuinfo
mostra-me 4 processadores, apesar de eu ter apenas 2 núcleos com 2 hyperthreads cada.
Os sistemas operacionais podem, no entanto, tirar vantagem de saber quais hyperthreads estão no mesmo núcleo para executar vários encadeamentos de um determinado programa em um único núcleo, o que pode melhorar o uso do cache.
Este vídeo da LinusTechTips contém uma explicação não técnica de ânimo leve: https://www.youtube.com/watch?v=wnS50lJicXc