O que é hiper threading em processadores Intel. Tecnologia Hyper-Threading - o que é? Como habilitar e usar? Fatores de software e hardware

O que é hiper threading em processadores Intel. Tecnologia Hyper-Threading - o que é? Como habilitar e usar? Fatores de software e hardware

Hoje resolvi abordar o tema conveniência de adquirir processadores com Hiper-Threading(Hyper Trading) para jogos.

A primeira coisa a notar é que não pode haver uma resposta clara à questão colocada. Para alguns, o Hyper-Threading é uma necessidade, mas para outros será um desperdício desnecessário de dinheiro. Analisarei ambas as opções e depois de ler o artigo (espero) todos poderão avaliar de forma independente qual desses casos é o seu e, consequentemente, tirarão conclusões WEIZED sobre a conveniência de adquirir um processador com Hyper-Threading para si.

Hiper-Threading implica dividir o processamento de dados pelo núcleo do processador em 2 threads paralelos. O ponto é bem capturado pela seguinte citação:

Quando ocorre uma pausa durante a execução de um thread em um dos processadores lógicos (como resultado de uma falha de cache, erro de previsão de desvio ou espera pelo resultado de uma instrução anterior), o controle é transferido para o thread em outro processador lógico . Assim, enquanto um processo aguarda, por exemplo, dados da memória, os recursos computacionais do processador físico são utilizados para processar outro processo.

Aplicativos que NÃO precisam de Hyper-Threading.

Hyper-Threading NÃO é necessário para:

  • 90% dos jogos de computador, tanto modernos quanto os que serão lançados nos próximos anos;
  • aplicações de escritório.

Justificativa para a inutilidade do Hyper-Threading.

Hiper-Threading tem uma grande diferença nos ganhos de produtividade de 0% (ou seja, total inutilidade) a 30% (o que é muito perceptível), o que depende dos seguintes fatores:

1. Otimização de uma única aplicação para trabalhar com 8 ou mais threads.

Se o aplicativo não estiver otimizado para 8 threads, o Hyper-Threading não fornecerá nenhum benefício.

Em alguns casos, tentativas de software “não treinado” de trabalhar com 8 núcleos resultam até no fato de um processador de 8 threads apresentar resultados piores do que seu “irmão mais novo” sem Hyper-Threading.

2. Porcentagem de carga da CPU

Quanto maior a porcentagem de carga do processador, mais perceptível será o impacto do Hyper-Threading. E vice-versa - com carga baixa você não notará sua influência.

Com base nesses dados, podemos concluir que Hyper-Threading NÃO é necessário para:

  • 90% dos jogos de computador, modernos e que serão lançados nos próximos anos. Eles não fornecem carga de CPU suficiente;
  • aplicações de escritório.

Onde o Hyper-Threading é NECESSÁRIO?

  • Os benefícios são inegáveis Hyper-Threading em 3D Max e em outro prof. formulários. Nas minhas experiências, esta tecnologia reduziu o tempo de renderização em 30%;
  • O Hyper-Threading também é útil para os 10% melhores jogos de computador modernos (como Crysis 3), bem como para jogos semelhantes que serão lançados no futuro.

Mais razões para usar o Hyper-Threading para jogos

Embora existam poucos jogos no PC hoje otimizados para 8 threads, ainda acho que faz sentido comprar um i7 com 8 threads, principalmente pensando no futuro.

Primeiramente computadores para jogos no meu entendimento, eles deveriam focar não na maioria dos jogos, mas nos melhores jogos. Mas, na verdade, hoje existem jogos otimizados para 8 threads e com carga de CPU de 70+%.

Em segundo lugar, só podemos esperar melhorias nos jogos e, como consequência, um aumento nas suas exigências ao CPU. Principalmente levando em consideração o fato de que os consoles JÁ possuem 8 núcleos e isso deve ser tomado como a “barra” dos sistemas de jogos para os próximos anos.

Noto que neste caso não se trata da especulação de um blogueiro individual, mas sim das previsões de duas equipas dos melhores profissionais que trabalham em plataformas como PS e XBox.

Em terceiro lugar, o processador envelhece 2 a 3 vezes mais devagar que a placa de vídeo. Este fato permite que você substitua a placa de vídeo, digamos, em um ou dois anos, e assim tenha a oportunidade de desfrutar dos novos jogos atuais. Mas isso só é possível se o processador aguentar tanto a nova placa de vídeo quanto o novo jogo. Caso contrário, ele se tornará um elo limitante e não permitirá que a placa de vídeo mostre todo o seu potencial em qualquer jogo específico que exija processador.

Levando em consideração todos os três pontos, comprar um processador com Hyper-Threading parece uma decisão bastante razoável para computadores para jogos.

Há informações na Internet sobre a inutilidade Hipernegociação basicamente.

Por conta própria, decidi realizar um miniteste, renderizando uma pequena cena com o Hyper-Trading ativado e desativado.

Portanto, primeiro o Hyper trading está desativado. Tempo de renderização 188 seg.

Ligue-o. O tempo de renderização é reduzido para 151 segundos.

Os usuários que configuraram o BIOS pelo menos uma vez provavelmente já notaram que existe um parâmetro Intel Hyper Threading que não está claro para muitos. Muitas pessoas não sabem o que é essa tecnologia e para que finalidade ela é utilizada. Vamos tentar descobrir o que é Hyper Threading e como você pode habilitar o uso desse suporte. Também tentaremos descobrir quais vantagens essa configuração oferece para a operação do computador. Em princípio, não há nada difícil de entender aqui.

Intel Hyper Threading: o que é?
Se não nos aprofundarmos na selva da terminologia informática, mas sim em termos simples, então esta tecnologia foi desenvolvida para aumentar o fluxo de comandos processados ​​​​simultaneamente pelo processador central. Os chips de processador modernos normalmente usam apenas 70% de seus recursos de computação disponíveis. O resto fica, por assim dizer, na reserva. Quanto ao processamento do fluxo de dados, na maioria dos casos apenas um thread é utilizado, apesar do sistema utilizar um processador multi-core.

Princípios operacionais básicos
Para aumentar as capacidades do processador central, foi desenvolvida uma tecnologia especial Hyper Threading. Essa tecnologia facilita a divisão de um fluxo de comando em dois. Também é possível adicionar um segundo thread a um já existente. Somente esse thread é virtual e não funciona no nível físico. Essa abordagem pode aumentar significativamente o desempenho do processador. Todo o sistema, conseqüentemente, começa a funcionar mais rápido. Os ganhos de desempenho da CPU podem variar um pouco. Isso será discutido separadamente. No entanto, os próprios desenvolvedores da tecnologia Hyper Threading afirmam que ela não atinge um kernel completo. Em alguns casos, o uso desta tecnologia é cem por cento justificado. Se você conhece a essência dos processadores Hyper Threading, o resultado não o deixará esperando muito.

Referência histórica
Vamos mergulhar um pouco na história desse desenvolvimento. O suporte Hyper Threading apareceu pela primeira vez apenas nos processadores Intel Pentium 4. Mais tarde, a implementação desta tecnologia continuou na série Intel Core iX (X aqui significa série de processadores). É importante notar que por algum motivo ele está faltando na linha de chips de processadores Core 2. É verdade que naquela época o aumento da produtividade era bastante fraco: algo em torno de 15-20%. Isso indicava que o processador não possuía o poder computacional necessário e a tecnologia criada estava praticamente à frente de seu tempo. Hoje, o suporte para a tecnologia Hyper Threading já está disponível em quase todos os chips modernos. Para aumentar a potência do processador central, o próprio processo utiliza apenas 5% da superfície do chip, deixando espaço para processamento de comandos e dados.

A questão dos conflitos e do desempenho
É claro que tudo isso é bom, mas em alguns casos pode haver lentidão no processamento de dados. Isso se deve principalmente ao chamado módulo de previsão de ramificação e ao tamanho insuficiente do cache quando ele é recarregado constantemente. Se falamos do módulo principal, então neste caso a situação é tal que em alguns casos o primeiro thread pode necessitar de dados do segundo, que podem não estar processados ​​naquele momento ou estar na fila para processamento. Também não menos comuns são as situações em que o núcleo do processador central está com uma carga muito pesada e, apesar disso, o módulo principal continua enviando dados para ele. Alguns programas e aplicativos, por exemplo, jogos online que consomem muitos recursos, podem ficar seriamente lentos apenas porque não estão otimizados para o uso da tecnologia Hyper Threading. O que acontece com os jogos? O sistema informático do usuário, por sua vez, tenta otimizar os fluxos de dados da aplicação para o servidor. O problema é que o jogo não sabe distribuir fluxos de dados de forma independente, agrupando tudo em uma pilha. Em geral, pode simplesmente não ter sido projetado para isso. Às vezes, em processadores dual-core, o aumento de desempenho é significativamente maior do que em processadores de 4 núcleos. Estes últimos simplesmente não possuem poder computacional suficiente.

Como habilitar o Hyper Threading no BIOS?
Já descobrimos um pouco o que é a tecnologia Hyper Threading e conhecemos a história de seu desenvolvimento. Estamos perto de entender o que é a tecnologia Hyper Threading. Como ativar esta tecnologia para uso no processador? Tudo é feito de forma bastante simples aqui. Você deve usar o subsistema de gerenciamento do BIOS. O acesso ao subsistema é feito através das teclas Del, F1, F2, F3, F8, F12, F2+Del, etc. Se você estiver usando um laptop Sony Vaio, há uma entrada específica para eles quando você usa a tecla ASSIST dedicada. Nas configurações do BIOS, se o processador que você está usando suporta a tecnologia Hyper Threading, deve haver uma linha de configuração especial. Na maioria dos casos, parece tecnologia Hyper Threading e, às vezes, função. Dependendo do desenvolvedor do subsistema e da versão do BIOS, este parâmetro pode ser configurado no menu principal ou nas configurações avançadas. Para habilitar esta tecnologia, você deve entrar no menu de opções e definir o valor como Habilitado. Depois disso, você precisa salvar as alterações feitas e reinicializar o sistema.

Como a tecnologia Hyper Threading é útil?
Concluindo, gostaria de falar sobre as vantagens que o uso da tecnologia Hyper Threading proporciona. Para que serve tudo isso? Por que é necessário aumentar a potência do processador ao processar informações? Os usuários que trabalham com aplicativos e programas que consomem muitos recursos não precisam explicar nada. Muitas pessoas provavelmente sabem que os pacotes de software gráfico, matemático e de design requerem muitos recursos do sistema durante a operação. Por causa disso, todo o sistema fica tão carregado que começa a ficar terrivelmente lento. Para evitar que isso aconteça, é recomendado ativar o suporte Hyper Threading.

15.03.2013

A tecnologia Hyper-Threading apareceu nos processadores Intel, é assustador dizer, há mais de 10 anos. E no momento é um elemento importante dos processadores Core. No entanto, a questão da necessidade do HT nos jogos ainda não está totalmente clara. Decidimos realizar um teste para entender se os jogadores precisam de um Core i7 ou se um Core i5 é melhor. E também descubra o quão melhor o Core i3 é que o Pentium.


A tecnologia Hyper-Threading, desenvolvida pela Intel e utilizada exclusivamente nos processadores da empresa, a começar pelo memorável Pentium 4, é algo dado como certo no momento. Um número significativo de processadores das gerações atuais e anteriores está equipado com ele. Ele será usado em um futuro próximo.

E deve-se admitir que a tecnologia Hyper-Threading é útil e tem um efeito positivo no desempenho, caso contrário a Intel não a utilizaria para posicionar seus processadores dentro da linha. E não como elemento secundário, mas como um dos mais importantes, senão o mais importante. Para deixar claro do que estamos falando, preparamos uma tabela que facilita a avaliação do princípio de segmentação dos processadores Intel.


Como você pode ver, existem poucas diferenças entre o Pentium e o Core i3, bem como entre o Core i5 e o Core i7. Na verdade, os modelos i3 e i7 diferem do Pentium e do i5 apenas no tamanho do cache de terceiro nível por núcleo (sem contar a frequência do clock, é claro). O primeiro par possui 1,5 megabytes e o segundo par possui 2 megabytes. Esta diferença não pode afetar fundamentalmente o desempenho dos processadores, uma vez que a diferença no tamanho do cache é muito pequena. É por isso que Core i3 e Core i7 receberam suporte para a tecnologia Hyper-Threading, principal elemento que permite que esses processadores tenham vantagem de desempenho em relação ao Pentium e Core i5, respectivamente.

Como resultado, um cache um pouco maior e suporte a Hyper-Threading permitirão preços significativamente mais altos para processadores. Por exemplo, os processadores da linha Pentium (cerca de 10 mil tenge) são aproximadamente duas vezes mais baratos que o Core i3 (cerca de 20 mil tenge), e isso apesar de fisicamente, no nível de hardware, serem absolutamente idênticos e, consequentemente , têm o mesmo custo . A diferença de preço entre o Core i5 (cerca de 30 mil tenge) e o Core i7 (cerca de 50 mil tenge) também é muito grande, embora menos de duas vezes nos modelos mais novos.


Quão justificado é esse aumento de preço? Qual ganho real o Hyper-Threading proporciona? A resposta é conhecida há muito tempo: o aumento varia, tudo depende da aplicação e da sua otimização. Decidimos verificar o que o HT pode fazer nos jogos, como uma das aplicações “domésticas” mais exigentes. Além disso, este teste será um excelente complemento ao nosso material anterior sobre o efeito do número de núcleos do processador no desempenho dos jogos.

Antes de passarmos aos testes, vamos relembrar (ou descobrir) o que é a tecnologia Hyper-Threading. Como a própria Intel disse ao apresentar esta tecnologia há muitos anos, não há nada particularmente complicado nisso. Na verdade, tudo o que é necessário para introduzir o HT no nível físico é adicionar não um conjunto de registradores e um controlador de interrupção a um núcleo físico, mas dois. Nos processadores Pentium 4, esses elementos adicionais aumentaram o número de transistores em apenas cinco por cento. Nos núcleos Ivy Bridge modernos (assim como no Sandy Bridge e no futuro Haswell), os elementos adicionais para até quatro núcleos não aumentam o dado em nem 1 por cento.


Registros adicionais e um controlador de interrupção, juntamente com suporte de software, permitem que o sistema operacional veja não um núcleo físico, mas dois núcleos lógicos. Ao mesmo tempo, o processamento dos dados de dois fluxos que são enviados pelo sistema ainda ocorre no mesmo núcleo, mas com algumas funcionalidades. Um thread ainda tem todo o processador à sua disposição, mas assim que alguns blocos da CPU são liberados e ociosos, eles são imediatamente entregues ao segundo thread. Graças a isso, foi possível utilizar todos os blocos do processador simultaneamente e, assim, aumentar sua eficiência. Como a própria Intel afirmou, o aumento de desempenho em condições ideais pode chegar a 30%. É verdade que esses indicadores são verdadeiros apenas para o Pentium 4, com seu pipeline muito longo, e os processadores modernos se beneficiam menos do HT;

Mas as condições ideais para o Hyper-Threading nem sempre são as mesmas. E o mais importante, o pior resultado do HT não é a falta de ganho de desempenho, mas sim a sua diminuição. Ou seja, sob certas condições, o desempenho de um processador com HT cairá em relação a um processador sem HT devido ao fato de que os custos indiretos de divisão de threads e organização de uma fila excederão significativamente o ganho do cálculo de threads paralelos, o que é possível neste caso específico. E esses casos ocorrem com muito mais frequência do que a Intel gostaria. Além disso, muitos anos de uso do Hyper-Threading não melhoraram a situação. Isto é especialmente verdadeiro para jogos que são muito complexos e nada padronizados em termos de cálculo de dados e aplicações.

Para descobrir o impacto do Hyper-Threading no desempenho dos jogos, usamos novamente nosso sofrido processador de teste Core i7-2700K e simulamos quatro processadores ao mesmo tempo, desativando núcleos e ligando/desligando o HT. Convencionalmente, eles podem ser chamados de Pentium (2 núcleos, HT desabilitado), Core i3 (2 núcleos, HT habilitado), Core i5 (4 núcleos, HT desabilitado) e Core i7 (4 núcleos, HT habilitado). Por que condicional? Em primeiro lugar, porque segundo algumas características não correspondem a produtos reais. Em particular, a desativação dos núcleos não leva a uma redução correspondente no volume do cache de terceiro nível - seu volume para todos é de 8 megabytes. E, além disso, todos os nossos processadores “condicionais” operam na mesma frequência de 3,5 gigahertz, o que ainda não foi alcançado por todos os processadores da linha Intel.


No entanto, isto é ainda melhor, pois graças à mudança constante de todos os parâmetros importantes, poderemos descobrir o real impacto do Hyper-Threading no desempenho dos jogos sem quaisquer reservas. E a diferença percentual de desempenho entre nosso Pentium “condicional” e Core i3 será próxima da diferença entre processadores reais, desde que as frequências sejam iguais. Também não deve ser confundido que estamos utilizando um processador com arquitetura Sandy Bridge, já que nossos testes de eficiência, que você pode ler no artigo “Bare Performance - Examining the Efficiency of ALUs and FPUs”, mostraram que a influência do Hyper- Threading nas últimas gerações de processadores Core permanece inalterado. Muito provavelmente, este material também será relevante para os próximos processadores Haswell.

Bem, parece que todas as questões relativas à metodologia de teste, bem como aos recursos operacionais da tecnologia Hyper-Threading, foram discutidas e, portanto, é hora de passar para o mais interessante - os testes.

Mesmo em um teste em que estudamos o impacto do número de núcleos do processador no desempenho dos jogos, descobrimos que o 3DMark 11 é completamente relaxado quanto ao desempenho da CPU, funcionando perfeitamente mesmo em um núcleo. O Hyper-Threading teve a mesma influência “poderosa”. Como você pode ver, o teste não percebe diferenças entre Pentium e Core i7, sem falar nos modelos intermediários.

Metrô 2033

Mas o Metro 2033 notou claramente o surgimento do Hyper-Threading. E ela reagiu negativamente a ele! Sim, isso mesmo: habilitar o HT neste jogo tem um impacto negativo no desempenho. Um pequeno impacto, é claro – 0,5 quadros por segundo com quatro núcleos físicos e 0,7 com dois. Mas esse fato dá todos os motivos para dizer que o Metro 2033 Pentium é mais rápido que o Core i3, e o Core i5 é melhor que o Core i7. Esta é a confirmação do fato de que o Hyper-Threading não mostra sua eficácia sempre e nem em todos os lugares.

Crise 2

Este jogo apresentou resultados muito interessantes. Em primeiro lugar, notamos que a influência do Hyper-Threading é claramente visível nos processadores dual-core - o Core i3 está à frente do Pentium em quase 9 por cento, o que é bastante para este jogo. Vitória para HT e Intel? Na verdade não, já que o Core i7 não apresentou nenhum ganho em relação ao Core i5 visivelmente mais barato. Mas há uma explicação razoável para isso: Crysis 2 não pode usar mais de quatro fluxos de dados. Por conta disso, vemos um bom aumento no dual-core com HT – ainda assim, quatro threads, ainda que lógicos, são melhores que dois. Por outro lado, não havia lugar para colocar threads adicionais do Core i7; quatro núcleos físicos eram suficientes; Assim, com base nos resultados deste teste, podemos notar o impacto positivo do HT no Core i3, que é visivelmente melhor que o Pentium aqui. Mas entre os processadores quad-core, o Core i5 novamente parece uma solução mais razoável.

Campo de Batalha 3

Os resultados aqui são muito estranhos. Se no teste de número de núcleos o campo de batalha foi um exemplo de aumento microscópico, mas linear, então a inclusão do Hyper-Threading introduziu o caos nos resultados. Aliás, podemos afirmar que o Core i3, com os seus dois núcleos e HT, acabou por ser o melhor de todos, à frente até do Core i5 e Core i7. É estranho, claro, mas ao mesmo tempo, Core i5 e Core i7 estavam novamente no mesmo nível. O que explica isso não está claro. Muito provavelmente, a metodologia de teste neste jogo desempenhou um papel aqui, que apresenta erros maiores do que os benchmarks padrão.

No último teste, F1 2011 mostrou-se um dos jogos que critica bastante a quantidade de núcleos, e neste teste voltou a nos surpreender com o excelente impacto da tecnologia Hyper-Threading no desempenho. E novamente, como em Crysis 2, a inclusão do HT funcionou muito bem em processadores dual-core. Veja a diferença entre nosso Core i3 condicional e Pentium - é mais que dupla! É claramente visível que faltam dois núcleos ao jogo e, ao mesmo tempo, seu código é tão bem paralelizado que o efeito é incrível. Por outro lado, você não pode discutir com quatro núcleos físicos - o Core i5 é visivelmente mais rápido que o Core i3. Mas o Core i7, novamente, como nos jogos anteriores, não mostrou nada de extraordinário em comparação com o Core i5. O motivo é o mesmo: o jogo não pode usar mais de 4 threads e a sobrecarga de execução do HT reduz o desempenho do Core i7 abaixo do nível do Core i5.

Um velho guerreiro não precisa de Hyper-Threading mais do que um ouriço precisa de uma camiseta - sua influência não é tão claramente perceptível como em F1 2011 ou Crysis 2. No entanto, ainda notamos que ativar o HT em um processador dual-core trouxe 1 quadro extra. Certamente isso não é suficiente para dizer que o Core i3 é melhor que o Pentium. No mínimo, esta melhoria claramente não corresponde à diferença de preço destes processadores. E nem vale a pena mencionar a diferença de preço entre Core i5 e Core i7, já que o processador sem suporte HT novamente se mostrou mais rápido. E visivelmente mais rápido - em 7%. Goste ou não, afirmamos novamente o fato de que quatro threads é o máximo para este jogo e, portanto, o HyperThreading neste caso não ajuda o Core i7, mas atrapalha.

Hiper-Threading (hiper threading, 'hiper threading', hyper threading - russo) - tecnologia desenvolvida pela empresa Informações, permitindo que o núcleo do processador execute mais de um (geralmente dois) threads de dados. Uma vez que se descobriu que um processador típico na maioria das tarefas não utiliza mais do que 70% de todo o poder computacional, optou-se por utilizar uma tecnologia que permite, quando determinadas unidades computacionais estão ociosas, carregá-las com trabalho com outro thread. Isso permite aumentar o desempenho do kernel de 10 a 80% dependendo da tarefa.

Entendendo como funciona o Hyper-Threading .

Digamos que o processador realize cálculos simples e ao mesmo tempo o bloco de instruções esteja ocioso e SIMD extensões.

O módulo de endereçamento detecta isso e envia os dados para cálculo posterior. Se os dados forem específicos, esses blocos serão executados mais lentamente, mas os dados não ficarão ociosos. Ou eles irão pré-processá-los para processamento rápido adicional pelo bloco apropriado. Isso proporciona ganhos adicionais de desempenho.

Naturalmente, o thread virtual não atinge um kernel completo, mas isso permite que você alcance quase 100% eficiência do poder computacional, carregando quase todo o processador com trabalho, evitando que ele fique ocioso. Com tudo isso, para implementar a tecnologia HT leva apenas cerca de 5% espaço adicional no chip e o desempenho às vezes pode ser adicionado 50% . Esta área adicional inclui blocos de registro adicionais e previsões de ramificação, que calculam em fluxo onde o poder de computação pode ser usado atualmente e enviam dados para lá a partir do bloco de endereçamento adicional.

Pela primeira vez, a tecnologia apareceu em processadores Pentium4, mas não houve grande aumento no desempenho, já que o processador em si não possuía alto poder computacional. O aumento foi na melhor das hipóteses 15-20% , e em muitas tarefas o processador funcionou muito mais devagar do que sem HT.

Desacelerar processador devido à tecnologia Hiper Threading, ocorre se:

  • Cache insuficiente por tudo isso e reinicia ciclicamente, desacelerando o processador.
  • Os dados não podem ser processados ​​corretamente pelo preditor de ramificação. Ocorre principalmente devido falta de otimização para determinado software ou suporte do sistema operacional.
  • Também pode ocorrer devido a dependências de dados, quando, por exemplo, o primeiro thread requer dados imediatos do segundo, mas ainda não está pronto ou está na fila para outro thread. Ou os dados cíclicos requerem certos blocos para processamento rápido e são carregados com outros dados. Pode haver muitas variações de dependência de dados.
  • Se o núcleo já estiver muito carregado e o módulo de previsão de ramificação “insuficientemente inteligente” ainda enviar dados que retardam o processador (relevante para Pentium4).

Depois Pentium4, Informações começou a usar a tecnologia apenas a partir de Núcleo i7 primeira geração, pulando a série 2 .

O poder computacional dos processadores tornou-se suficiente para a implementação completa do hyperthreading sem muitos danos, mesmo para aplicações não otimizadas. Mais tarde, Hiper-Threading apareceu em processadores de classe média e até mesmo em processadores portáteis e de baixo custo. Usado em todas as séries Núcleo eu (i3; i5; i7) e em processadores móveis Átomo(de jeito nenhum). O interessante é que os processadores dual-core com HT, obtenha um ganho de desempenho maior do que os quad-core usando Hiper-Threading, de pé 75% quad-nuclear completo.

Onde a tecnologia HyperThreading é útil?

Será útil para uso em conjunto com programas profissionais, gráficos, analíticos, matemáticos e científicos, editores de vídeo e áudio, arquivadores ( Photoshop, Corel Draw, Maya, 3D’s Max, WinRar, Sony Vegas e etc.). Todos os programas que utilizam um grande número de cálculos, HT definitivamente será útil. Felizmente, em 90% casos, tais programas estão bem otimizados para seu uso.

HiperThreading indispensável para sistemas de servidor. Na verdade, foi parcialmente desenvolvido para esse nicho. Graças a HT, você pode aumentar significativamente a produção do processador quando há um grande número de tarefas. Cada thread será descarregado pela metade, o que tem um efeito benéfico no endereçamento de dados e na previsão de ramificação.

Muitos jogos de computador, têm uma atitude negativa em relação à presença Hiper-Threading, devido ao qual o número de quadros por segundo diminui. Isto se deve à falta de otimização para Hiper-Threading do lado do jogo. A otimização apenas por parte do sistema operacional nem sempre é suficiente, especialmente quando se trabalha com dados incomuns, diversos e complexos.

Em placas-mãe que suportam HT, você sempre pode desativar a tecnologia hyperthreading.

20 de janeiro de 2015 às 19h43

Mais uma vez sobre Hyper-Threading

  • Testes de sistemas de TI,
  • Programação

Houve um tempo em que era necessário avaliar o desempenho da memória no contexto da tecnologia Hyper-threading. Chegamos à conclusão de que a sua influência nem sempre é positiva. Quando surgiu um quantum de tempo livre, surgiu o desejo de continuar a pesquisa e considerar os processos em andamento com a precisão dos ciclos e bits do relógio da máquina, utilizando software de nossa própria concepção.

Plataforma em estudo

O objeto dos experimentos é um laptop ASUS N750JK com processador Intel Core i7-4700HQ. Frequência de clock de 2,4 GHz, aumentada no modo Intel Turbo Boost até 3,4 GHz. Instalados 16 gigabytes de RAM DDR3-1600 (PC3-12800), operando em modo de canal duplo. Sistema operacional – Microsoft Windows 8.1 64 bits.

Fig.1 Configuração da plataforma em estudo.

O processador da plataforma em estudo contém 4 núcleos, que, quando a tecnologia Hyper-Threading está habilitada, fornece suporte de hardware para 8 threads ou processadores lógicos. O firmware da plataforma transmite essas informações ao sistema operacional por meio da tabela ACPI MADT (Multiple APIC Description Table). Como a plataforma contém apenas um controlador de RAM, não existe uma tabela SRAT (System Resource Affinity Table), que declara a proximidade dos núcleos do processador aos controladores de memória. Obviamente, o laptop em estudo não é uma plataforma NUMA, mas o sistema operacional, para efeito de unificação, o considera como um sistema NUMA com um domínio, conforme indicado pela linha NUMA Nodes = 1. Fato que é fundamental para o nosso experimentos é que o cache de dados de primeiro nível tem tamanho de 32 kilobytes para cada um dos quatro núcleos. Dois processadores lógicos compartilhando um núcleo compartilham os caches L1 e L2.

Operação em estudo

Estudaremos a dependência da velocidade de leitura de um bloco de dados em seu tamanho. Para isso, escolheremos o método mais produtivo, ou seja, a leitura de operandos de 256 bits utilizando a instrução AVX VMOVAPD. Nos gráficos, o eixo X mostra o tamanho do bloco e o eixo Y mostra a velocidade de leitura. Em torno do ponto X, que corresponde ao tamanho do cache L1, esperamos ver um ponto de inflexão, pois o desempenho deve cair após o bloco processado sair dos limites do cache. Em nosso teste, no caso de processamento multithread, cada um dos 16 threads iniciados funciona com um intervalo de endereços separado. Para controlar a tecnologia Hyper-Threading dentro da aplicação, cada thread utiliza a função da API SetThreadAffinityMask, que define uma máscara na qual um bit corresponde a cada processador lógico. Um valor de bit único permite que o processador especificado seja usado por um determinado thread; um valor zero proíbe isso. Para 8 processadores lógicos da plataforma em estudo, a máscara 11111111b permite a utilização de todos os processadores (Hyper-Threading está habilitado), a máscara 01010101b permite a utilização de um processador lógico em cada núcleo (Hyper-Threading está desabilitado).

As seguintes abreviações são usadas nos gráficos:

MBPS (megabytes por segundo)velocidade de leitura do bloco em megabytes por segundo;

CPI (relógios por instrução)número de ciclos de clock por instrução;

TSC (contador de carimbo de data/hora)Contador de ciclo da CPU.

Nota: A velocidade do clock do registro TSC pode não corresponder à velocidade do clock do processador quando executado no modo Turbo Boost. Isso deve ser levado em consideração na interpretação dos resultados.

No lado direito dos gráficos, é visualizado um dump hexadecimal das instruções que compõem o corpo do loop da operação alvo executada em cada uma das threads do programa, ou os primeiros 128 bytes deste código.

Experiência nº 1. Um tópico



Figura 2 Leitura de thread único

A velocidade máxima é 213.563 megabytes por segundo. O ponto de inflexão ocorre em um tamanho de bloco de cerca de 32 kilobytes.

Experiência nº 2. 16 threads em 4 processadores, Hyper-Threading desabilitado



Figura 3 Leitura com dezesseis tópicos. O número de processadores lógicos usados ​​é quatro

O Hyper-Threading está desabilitado. Velocidade máxima 797598 megabytes por segundo. O ponto de inflexão ocorre em um tamanho de bloco de cerca de 32 kilobytes. Como esperado, em comparação com a leitura com um thread, a velocidade aumentou aproximadamente 4 vezes, com base no número de núcleos em funcionamento.

Experiência nº 3. 16 threads em 8 processadores, Hyper-Threading habilitado



Figura 4 Leitura com dezesseis tópicos. O número de processadores lógicos usados ​​é oito

O Hyper-Threading está ativado. A velocidade máxima é de 800.722 megabytes por segundo, como resultado da ativação do Hyper-Threading, quase não aumentou; A grande desvantagem é que o ponto de inflexão ocorre em um tamanho de bloco de cerca de 16 kilobytes. A ativação do Hyper-Threading aumentou ligeiramente a velocidade máxima, mas a queda na velocidade agora ocorre na metade do tamanho do bloco - cerca de 16 kilobytes, portanto a velocidade média caiu significativamente. Isso não é surpreendente, pois cada núcleo possui seu próprio cache L1, enquanto os processadores lógicos do mesmo núcleo o compartilham.

conclusões

A operação estudada se adapta muito bem a um processador multi-core. Razões: Cada núcleo contém seu próprio cache L1 e L2, o tamanho do bloco de destino é comparável ao tamanho do cache e cada thread funciona com seu próprio intervalo de endereços. Para fins acadêmicos, criamos essas condições em um teste sintético, reconhecendo que as aplicações do mundo real geralmente estão longe da otimização ideal. Mas habilitar o Hyper-Threading, mesmo nessas condições, teve um efeito negativo; com um ligeiro aumento na velocidade de pico, há uma perda significativa na velocidade de processamento de blocos cujo tamanho varia de 16 a 32 kilobytes.
Visualizações