O Hyperthreading já foi um recurso encontrado apenas em CPUs profissionais de ponta . No entanto, o Hyperthreading agora também é encontrado em CPUs convencionais. Então, o que exatamente é Hyperthreading e você deve procurá-lo em sua próxima CPU?
Índice
O que é um segmento de software?
Um thread de software é uma sequência de instruções que são processadas por uma CPU. É a unidade básica de instruções programadas gerenciadas pelo agendador. O planejador é um componente do sistema operacional que alocou recursos de hardware para os vários tipos de software em execução em um computador.
Cada aplicativo em execução no seu computador existe como um ou mais processos. Threads são efetivamente segmentos desses processos enviados à CPU para execução. O planejador atribui rapidamente threads de diferentes programas em execução para garantir que cada um obtenha os recursos de que precisa para ser executado em tempo real.
É assim que seu computador pode realizar “multitarefas” e (por exemplo) operar um processador de texto enquanto reproduz música e baixa um videogame em segundo plano. Tecnicamente, um núcleo da CPU não está realmente fazendo todas essas tarefas ao mesmo tempo.
Portanto, se o seu sistema tem apenas uma CPU de núcleo único, ele está rapidamente fazendo malabarismos com vários conjuntos de instruções, alternando tão rapidamente entre eles que, para nossos lentos cérebros humanos, tudo parece acontecer em paralelo.
Processamento paralelo verdadeiro em computadores domésticos
Durante a maior parte da história da computação pessoal, seu computador tinha apenas um núcleo de CPU. Bem, naquela época não falávamos sobre “núcleos” porque havia apenas um e era todo o processador. No entanto, em meados dos anos 2000, os fabricantes de CPU tiveram a brilhante idéia de colocar duas CPUs completas em um pacote de CPU. Essas CPUs dual-core poderiam, na verdade, processar dois threads de instruções ao mesmo tempo. Isso significava que, por exemplo, seu videogame poderia ter 100% de um núcleo e seu sistema operacional poderia ter o outro núcleo só para ele.
Hoje, as contagens de núcleos de CPU estão aumentando rapidamente. CPUs mainstream com 6, 8 e até 10 núcleos são comuns. As CPUs de última geração oferecem dezenas de núcleos e CPUs como o AMD Threadripper 3990X são recheadas com impressionantes 64 núcleos.
O desenvolvimento de software também mudou para tirar melhor proveito de todo esse poder da CPU paralela. Os mais recentes consoles de videogame também são equipados com oito núcleos de CPU, então videogames que podem fazer uso desses muitos núcleos estão rapidamente se tornando comuns.
Colocando núcleos de CPU em overdrive com Hyperthreading
Uma CPU tradicional só pode lidar com um único thread, mas se você tiver muitos núcleos de CPU diferentes em seu sistema, você pode lidar com um número de threads igual ao número de núcleos que você tem. Isso parece bom, mas apresenta um grande problema.
Nem todos os threads requerem a mesma quantidade de poder de processamento. Por exemplo, um encadeamento que está renderizando vídeo usará 100% da capacidade disponível do núcleo da CPU, mas o encadeamento que está executando seu processador de texto ou página da web de mídia social precisa apenas de uma fração da potência oferecida por um núcleo de CPU moderno.
Da mesma forma, um videogame pode ter vários threads que funcionam em paralelo, como um que lida com a física e outro que lida com a inteligência artificial do personagem. Essas tarefas são importantes, mas podem não precisar de um único núcleo para funcionar bem.
Isso leva a uma situação em que todos os núcleos da CPU podem estar ocupados com threads, mas não estão fornecendo todo o poder de processamento de que são capazes. É aí que o hyperthreading entra em cena.
O nome genérico apropriado para hyperthreading é multithreading simultâneo . “Hyperthreading” é na verdade um nome de marketing proprietário usado pela Intel, mas, assim como com “Hoover”, tornou-se uma linguagem comum para a tecnologia como um todo.
Uma CPU equipada com o circuito interno correto para habilitar o hyperthreading pode executar duas threads separadas ao mesmo tempo. Não é alternar entre eles como na multitarefa tradicional de núcleo único. Está executando cada um em paralelo.
Para o sistema operacional, parece que cada núcleo físico da CPU é na verdade dois núcleos, o que permite que o planejador atribua dois threads a cada um. No entanto, a quantidade total de capacidade de processamento por núcleo permanece exatamente a mesma.
Por que você deseja Hyperthreading
Como mencionamos acima, o hyperthreading trata principalmente de garantir que você não está deixando o poder de processamento sobre a mesa. Permitir que cada núcleo lide com dois threads torna mais fácil para o seu sistema operacional obter o máximo do seu hardware e evita uma situação em que cada núcleo não está funcionando próximo ou em plena capacidade.
No passado, apenas softwares profissionais como editores de vídeo ou trabalhos de processamento de dados científicos realmente precisavam de hyperthreading. Os usuários convencionais dificilmente tinham aplicativos em execução o suficiente para precisar de tantos threads. Os videogames também levaram muito tempo para adotar o uso de vários threads, mas agora os sistemas de jogos de 8 núcleos são comuns e o número de threads continuará aumentando.
Como tal, as novas CPUs mainstream agora apresentam hyperthreading e é um recurso que a maioria dos usuários deve desejar. No entanto, se você conseguir um bom negócio em uma CPU mais antiga que não tem hyperthreading, ainda não é tão essencial que você não pode deixar passar.