A hiperthreading reduz o desempenho do núcleo único?
Esta é uma pergunta que geralmente surge ao discutir os benefícios e desvantagens da hiperthreading. A hiperthreading é uma tecnologia que permite que um único núcleo físico atue como dois núcleos lógicos, dobrando efetivamente o número de threads que um processador pode lidar. No entanto, há algum debate sobre se o hiperthreading realmente melhora o desempenho ou se pode potencialmente dificultar o desempenho do núcleo único. Vamos explorar ainda mais este tópico.
Primeiro, é importante entender como o hiperthreading funciona. Quando um único núcleo é hiperthreado, ele é dividido em dois núcleos virtuais, cada um capaz de executar seu próprio conjunto de instruções. Isso permite ao processador lidar com vários threads simultaneamente, melhorando o desempenho geral de multitarefa. No entanto, isso não significa necessariamente que o desempenho de um único núcleo será melhorado.
De fato, alguns argumentam que a hiperthreading pode realmente reduzir o desempenho do núcleo único. Isso ocorre porque os recursos de um núcleo físico, como unidades de cache e execução, são compartilhados entre os dois núcleos lógicos criados pela hiperthreading. Isso pode levar ao aumento da contenção por esses recursos, potencialmente diminuindo a execução individual de threads.
Além disso, a hiperthreading pode não fornecer um impulso significativo no desempenho para aplicativos que não sejam otimizados para aproveitar vários threads. Muitos jogos, por exemplo, são principalmente de thread único e podem não ver uma melhoria perceptível da hiperthreading.
No entanto, vale a pena notar que o impacto da hiperthreading no desempenho do núcleo único pode variar dependendo da carga de trabalho específica e da arquitetura do processador. Em alguns casos, a hiperthreading pode realmente melhorar o desempenho do núcleo único, permitindo que o processador utilize melhor os recursos disponíveis.
Não há resposta definitiva para a pergunta sobre se o hiperthreading reduz o desempenho do núcleo único. Depende em grande parte das circunstâncias e carga de trabalho específicas. Alguns usuários podem optar por desativar o hiperthreading em certos cenários em que o desempenho principal é uma prioridade, enquanto outros podem preferir deixá -lo permitido tirar proveito dos recursos de multitarefa aumentados.
Aqui estão alguns itens importantes:
- A hiperthreading é uma tecnologia que permite que um único núcleo físico atue como dois núcleos lógicos.
- A hiperthreading pode melhorar o desempenho multitarefa, permitindo que o processador lide com vários threads simultaneamente.
- Alguns argumentam que o hiperthreading pode potencialmente reduzir o desempenho do núcleo único, aumentando a contenção para recursos compartilhados.
- A hiperthreading pode não fornecer um impulso significativo no desempenho para aplicativos que não são otimizados para vários threads.
- O impacto da hiperthreading no desempenho do núcleo único pode variar dependendo da carga de trabalho e da arquitetura do processador.
- Não há resposta definitiva para que o hiperthreading reduz o desempenho do núcleo único, pois depende em grande parte das circunstâncias específicas.
Aqui estão algumas perguntas baseadas no texto:
- O que é hiperthreading?
- A hiperthreading melhora o desempenho multitarefa?
- Pode hiperthreading potencialmente reduzir o desempenho do núcleo único?
- Todas as aplicações se beneficiam da hiperthreading?
- Como o impacto do hiperthreading no desempenho do núcleo único varia?
- Existe uma resposta definitiva para se o hiperthreading reduz o desempenho do núcleo único?
- Que fatores devem ser considerados ao decidir se deve ativar ou desativar a hiperthreading?
- Os jogos são normalmente otimizados para vários tópicos?
- O hiperthreading pode melhorar o desempenho geral de multitarefa?
- Quais são algumas desvantagens em potencial da hiperthreading?
- Existe um consenso sobre se o hiperthreading é benéfico ou prejudicial ao desempenho do núcleo único?
- Pode desativar o hiperthreading melhorar o desempenho do núcleo único?
- O hiperthreading pode melhorar a utilização dos recursos disponíveis?
- O hiperthreading deve ser ativado ou desativado para jogos?
- A AMD CPUS são inferiores às CPUs Intel em termos de desempenho de hiperthreading?
- A hiperthreading oferece qualquer vantagem para os jogos?
A hiperthreading é uma tecnologia que permite que um único núcleo físico atue como dois núcleos lógicos.
Sim, a hiperthreading pode melhorar o desempenho multitarefa, permitindo que o processador lide com vários threads simultaneamente.
Sim, alguns argumentam que o hiperthreading pode potencialmente reduzir o desempenho do núcleo único, aumentando a contenção para recursos compartilhados.
Não, a hiperthreading pode não fornecer um impulso significativo no desempenho para aplicativos que não são otimizados para vários threads.
O impacto da hiperthreading no desempenho do núcleo único pode variar dependendo da carga de trabalho e da arquitetura do processador.
Não, não há resposta definitiva, pois depende em grande parte das circunstâncias específicas.
Fatores como a carga de trabalho específicos e a prioridade dada ao desempenho do núcleo único devem ser considerados ao decidir se deve ativar ou desativar a hiperthreading.
Não, muitos jogos são principalmente de tiro único e podem não ver uma melhoria notável da hiperthreading.
Sim, a hiperthreading pode melhorar o desempenho geral da multitarefa, permitindo que o processador lide com vários threads simultaneamente.
Algumas desvantagens em potencial da hiperthreading incluem maior contenção por recursos compartilhados e desaceleração potencial da execução individual de threads.
Não, não há consenso, pois depende em grande parte das circunstâncias e carga de trabalho específicas.
Em alguns casos, desativar a hiperthreading pode melhorar o desempenho do núcleo único, reduzindo a contenção para recursos compartilhados.
Sim, em alguns casos, a hiperthreading pode melhorar a utilização dos recursos disponíveis, permitindo que o processador os aloque melhor.
Depende do jogo específico e se é otimizado para vários tópicos. Alguns jogos podem se beneficiar da hiperthreading, enquanto outros podem não ver uma melhoria perceptível.
Não há resposta definitiva para esta pergunta, pois o desempenho das CPUs da AMD e da Intel pode variar dependendo das circunstâncias específicas e da carga de trabalho.
A hiperthreading pode fornecer vantagens para os jogos em determinados cenários em que o jogo é otimizado para vários tópicos e pode aproveitar o aumento dos recursos de multitarefa.
A hiperthreading reduz o desempenho do núcleo único
Ao aceitar todos os cookies, você concorda com o uso de cookies para fornecer e manter nossos serviços e site, melhorar a qualidade do Reddit, personalizar o conteúdo e publicidade do Reddit e medir a eficácia da publicidade.
A hiperthreading reduz o desempenho do núcleo único
Isso não faz nenhum sentido, basicamente tudo o que é feito aqui pode ser tratado através do Windows ou mesmo Unix em si.
Primeiro: a hiperthreading é por si só uma melhoria de desempenho, então por que você por qualquer motivo o desativaria? Quero dizer, se um título tiver problemas, você pode definir não apenas a afinidade de processamento, mas também a afinidade principal através do gerente de tarefas. Se você tiver algum conceito de como funciona o multithreading, saberia que os microprocessadores modernos são capazes de escrever várias instruções por ciclo do relógio e, além disso, utilizando vários threads do mesmo processo.
Não vejo razão para o objetivo desta ferramenta, tudo pode ser feito no gerente de tarefas.
Além disso, teoricamente não deve haver como melhorar o desempenho sem aumentar diretamente a velocidade de processamento do chip, ou melhorar a utilização (ou adaptação) das instruções no próprio chip do processador.
Visualizzazione Di 16 – 30 Comentário su 48
6 LUG 2015, ORE 23:21
Messaggio Originale Di Timdimmdrive:
Messaggio Originale Di yumri:
Como e/ou por que o hyperthreading ajudaria ou machucaria jogos? Na verdade, a maioria dos jogos usa apenas 1 ~ 4 núcleos agora e o hyperthreading fará um programa de núcleo duplo como 4 núcleos que UM, dependendo de como ele lida com isso, pode ser melhor pode ser pior, mas de uma situação elecrica . O hyperthreading está abaixado por ter 1 núcleo de execução 2 threads como isso é explicado para mim de qualquer maneira, você não pode ter o mesmo núcleo em peças de ajuste com uma carga eletrônica, portanto, por que são apenas 2 threads em vez de 4 cada, mas porque eles têm 4 partes que você pode ter 2 correndo de uma só vez e nesse por que o hiper threading machucaria de tudo de tudo ?
Imagine um núcleo de CPU é um trabalhador de check-out que está em uma mercearia, tocando suas compras. Agora imagine que ela tem 1 desses cintos transportadores com 1 cliente, e o caixa está ligando para o cliente. O caixa pega 1 pedaço de comida, soa e depois pega mais 1. O cliente e sua comida = jogos/programas e o caixa = núcleo da CPU.
Agora imagine o mesmo caixa, mas em vez de 1 correia transportadora com 1 cliente, o caixa possui 2 cintos transportadores, cada um com seu próprio cliente. Então agora o caixa pode ligar para dois clientes ao mesmo tempo. No entanto, o caixa só pode tocar 1 pedaço de comida por vez. Então o caixa pega 1 pedaço de comida do cliente A e, em seguida, 1 peça do cliente B, e outra peça do cliente A, etc. É assim que o hyperthreading funciona (em poucas palavras). O hyperthread é a segunda correia transportadora com o segundo cliente.
Então agora imagine agora que você tem que comprar 100 peças de comida. O que é mais rápido? 2 cintos transportadores separados, cada um indo para seu próprio caixa, ou 1 caixa com 2 cintos transportadores?
A resposta é 2 cintos transportadores, cada um indo para seu próprio caixa. Aka 2 núcleos da CPU. Como 1 caixa só pode fazer o check-out 1 item por vez, independentemente de 2 correias transportadoras, enquanto 2 caixas podem fazer o dobro do trabalho como 1.
É por isso que, se você tem a capacidade de escolher, sempre faça seu jogo estar em núcleos de CPU reais vs estar em processadores virtuais de hiperthreads.
Ok, eu recebo sua anologia, porém, seria que a anologia significa que os jogos não funcionariam tão bem na CPU da AMD depois que eles foram transformados em módulos? À medida que os módulos dividem as 2 primeiras células das últimas 2 células para fazer 2 núcleos parciais dentro de 1 módulo de um núcleo completo ? Isso é a mesma coisa no conceito, pois o hiper threading da Intel faz apenas o hiperthreading faz isso em uma única linha em vez de 2 linhas de células, assim como fazê -lo em 2 linhas de células são melhores ou piores do que fazê -lo em 1 linha de células? Ou você quer dizer que as CPUs AMD são todas inferiores a todas as Intel CPUs ?
i get your ananolgy and yes if it was anything but electronity it would apply but lines of cells passing a voltage of 1v ussualy from one cell to another thus the part about not able to have it be side by side with the instruction at the same time Intel does it by using 1 line and AMD does it by using 2 lines and calling each half of that 1 line a seperate core thus your program will then not work as well if at all on AMD CPUs. Faz sentido em um nível de pensamento de software, sim, simplesmente não em um nível de pensamento de hardware é tudo.
Se funcionar tão maravilhosamente me explica como e por que, como eu não entendi, e não vou comprar até entender.
6 LUG 2015, ORE 23:30
^ Eu não vou citar também para a razão..
Sem fx amd não * dividido * células,
Os chips AMD FX são base modulares sim, como eles têm 2 núcleos físicos antes de um modular. Como sempre esses núcleos compartilham algum aspecto do dado, como a FPU etc..
AMD FX Dose de fato tem 8 núcleos físicos, 1 thread por um núcleo..
A coisa com a Intel HT é que ele é doe 2 threads por um núcleo.. e ambos os tópicos precisam compartilhar todos os aspectos do núcleo e da CPU. Qual é uma das razões pelas quais a AMD FX out pré -formou a Intel HT, em threads multi -threads, aplicativo multi -núcleos..
Os núcleos de FX da AMD de Beacse precisam compartilhar o FPUCT com um modular, embora sejam completas classificadas pela Intel em um único thread, pré -forma. Isso é expecualmente verdadeiro se ht estiver desativado.. Você pode desativar núcleos nos chips AMD FX para corresponder 1 núcleo por 1 modular e depois não ter nada sendo compartilhado entre eles exceto o cache L3
Para a AMD, essa é uma das maiores razões pelas quais a metade do coreboost é mais rápida do que o Core Full Core Boost.
Na minha CPU 8120 Normal é 3.1GHz, núcleo completo (8 núcleos) é 3.4GHz e meio núcleo (núcleos 4x, 1 por modular) é 4.0GHz
Se você desativar HT na Intel, pode oc mais o chip do que ter HT ativado também.
Ultima Modifica da Maddoggyca; 6 LUG 2015, ORE 23:36
7 LUG 2015, minério 1:34
Eu nunca coloco as células “divididas” da AMD, eu disse que a AMD usa uma linha para as etapas 1 e 2, depois outra linha para as etapas 3 e 4, enquanto a Intel usa a mesma linha de liga de silício para as etapas 1, 2, 3 e 4 não tendo loop de volta, e o loop de volta é o motivo pelo qual e como os módulos de AMD funcionam e a linha reta é como a hiperthreading funciona.
Ainda não entendem por que o HT degradaria o Profiment Probalby, que deve fazer para mais núcleos do que o necessário do que em tê -lo no mesmo núcleo que a carga elecrtic será a mesma de qualquer maneira com ou sem hiperthering on. O mesmo com os núcleos da AMD a carga eletróica em como eles fazem núcleos.
Além disso, como você disse, a pré -formância de núcleo única é melhor com a Intel, não uma única linha, mas o núcleo único é, pois nada não faz um único thread e não e não fazem threads múltiplos por ciclo de relógio.
I am sorry that it does not make sense to me but if it is true then it is and whatever at higher speeds over that of 3GHz it stops mattering as no game sees any differnece of that speed at this time that is and if you can just turn that one option off ,i forget which one it was but it made my CPU always run at the overclocked speed and if you can do that then this program has no use as what it does is force the turbo to kick in and make it go faster that way it seems and turbo does not work well with hyperthreading.
7 LUG 2015, Ore 2:03
hmm sem AMD e Intel não fazem threads multi por um ciclo de relógio. Somente Intel com HT habilitou a dose 2 threads por um ciclo de relógio.. também um ciclo de relógio é como .000000001.. Aka reallllly rápido. *Este é MHZ, GHZ entra. Quanto mais rápido, mais rápido o ciclo do relógio. Quanto mais rápido o ciclo significa mais fios dentro e fora da CPU.. Aka seus dados ficam calados mais rapidamente e mais dados são calulados na mesma quantidade de tempo do que uma CPU mais lenta
Este é o melhor e mais simples diagrama a seguir o ciclo de relógio explicando, o ciclo de threads e a Intel HT .
Núcleo único, rosca única = 1 ciclo, o fio começa e termina ao mesmo tempo o ciclo do relógio inicia/termina
Núcleo único, hiper thread = 1 ciclo.. HT é quando 1 núcleo roda 2 threads, um começa no início do ciclo do relógio e termina no final do ciclo do relógio. O segundo tópico começa no meio do ciclo do relógio e termina no meio do próximo ciclo.. (repita)
Dose Intel ht não inicie 2 thread ao mesmo tempo, nem a dose inicia 2 threads no início do ciclo do relógio, bem como nem a dose termine 2 threads ao mesmo tempo. Lá fora definido para a razão solo de que um tópico em teoria não precisa esperar que outro tópico termine usando o restante da CPU. No entanto, este não é o caso .. A colação de threads acontece o tempo todo, embora você nunca veja ou o conhecesse, e raramente a dose afeta o PC ou o sistema operacional e você tem 1: 1000000000000000 Chance dela bsod todo o sistema.. mas a dose ainda causa problemas de pré -forma que uma única operação de núcleo e encadeamento não precisa lidar com
Esta é uma das razões pelas quais os jogos e o aplicativo principal único funcionam um pouco mais rápido no chip Intel que HT desativou. Há uma chance zero de um tópico ter que esperar outro para terminar.
Quanto aos jogos que são multi -núcleo habilitados, é melhor descarregá -los para núcleos dedicados que lidam com 1 thread por um ciclo para evitar ter um fio esperando em outro para terminar o que quer que possa estar fazendo..
Isso soa tudo redunente e ligeiramente rediculices quando você pensa em quão rápido é um ciclo e na rapidez. Mas as pessoas realmente se preocupam em obter a velocidade mais rápida possível do hardware lá. Mesmo que sejam alguns Milasegunds de ganho.
Ultima Modifica da Maddoggyca; 7 Lug 2015, Ore 2:23
7 Lug 2015, Ore 3:55
ok, acho que você tem o que hiper threading faz de errado. Hyper Threading permite que as instruções de vários homens sejam feitas pelo mesmo núcleo ao mesmo tempo se ambas. Sim 1 O ciclo do relógio é muito rápido em torno de 1 nanossegundo ou mais para 1 ciclo de relógio, mas as instruções de vários vários. if a program is the only program on a core then yes it will be able to use the core whenever it needs to use that core and if it is an actual core all the better so not saying that using this old old trick from 2003 is not good anymore i am just saying i do not see any benefit from using it anymore when the OS and the CPU itself already do it for you as the hypothical differnee is minimal at best depending on the speed of the core(s) of course.
7 LUG 2015, ORE 4:08
Aqui está a imagem das obras internas de uma CPU real e por que digo o que digo
http: // www.CBTRICKS.com/rádios/presidente/george/gráficos/george_main_sch.gif
your picture is overly simplifed for the users who do not understand electronic engineering and need it put into simple terms but what you are saying does not make sense as you can run mulple instructions per clock cycle in that ( george ) CPU it is not a CPU made to go very fast and Intel and AMD make theirs probalby very extremely diffenret form that one but it is the simplistic CPU workings on a diagram sheet that is not copyrighted
Sua lógica funciona se estivesse em um círculo reto sim, mas quando não passa em um ciclo, nem um padrão definido, exceto um método definido pela quantidade de átomos não . Sim, se você estiver executando um jogo de núcleo duplo e o segundo núcleo termina as instruções antes do primeiro núcleo, provavelmente você terá uma tela azul, pois o segundo núcleo estará na mesma linha que o primeiro núcleo, mas por trás dela e feito apenas para ir em um mesmo ritmo não mais rápido e não mais lento, mas a mesma velocidade . As CPUs de Morden podem ter seus núcleos em velocidades diffnret, a menos que definido de outra forma no BIOS o que esse programa suponha é enviar uma mensagem para executar todos os núcleos na velocidade máxima que elimina esse “Problrem” e aumenta a velocidade da velocidade máxima / a velocidade listada, mas a maioria das CPUs não é executada naquele 3GHz ou a qualquer coisa que seja de mercado que é comercial.2GHz a 1.8GHz para conservar a vida da CPU e conservar o uso de energia.
O que você disse na última parte de “Mesmo que seja alguns miliscondos de ganho” bem se estiver executando uma CPU de nova ou última geração, sua velocidade de estoque a 100% será 3.0GHz a 3.2 GHz fazendo a diferença alguns nanossegundos de ganho no máximo. 12 nanaoseconds whcih is the best case for how much time this program will save you by it running on a last CPU generation CPU or the one before that at stock speeds is undetectable by the human brain our brain needs around 150miliseconds to 200 miliseconds to preserve anything at all whcih still is pretty fast but not as fast as 12 nanoseconds.
Este programa é feito para hardware de baixo nível então e, portanto, não para mim, talvez para você, mas não para mim.
7 LUG 2015, ORE 7:07
Messaggio Originale Di Timdimmdrive:
A resposta é muito fácil:
A hiperthreading não é uma CPU de verdade. Em vez disso, é uma CPU virtualizada. Se você estiver jogando um jogo que só pode usar 2 threads da CPU de uma só vez, terá um desempenho muito melhor, dando a ele 2 núcleos reais da CPU, versus 1 núcleo real da CPU e 1 CPU virtual Core. Portanto, o que o CPUCORES faz é garantir que um jogo não esteja usando hiperthreading e, em vez disso, está usando apenas núcleos reais. Nota: Esta é uma opção no software. Você pode ativá-lo/desativá-lo por jogo. Aqui está uma boa leitura sobre o que o hiperthreading é: https: // pt.Wikipedia.org/wiki/hiper-threading
“Tudo pode ser feito no gerente de tarefas. “
Isso não está correto. Alguns dos vídeos e descrições do que os cpucores explicarão mais. Por exemplo, não apenas toca o jogo real em si. Ele identifica e modifica como seus processos de sistema operacional estão em execução, seus processos que não são de jogo, seu próprio jogo e envolvem tudo em um programa integrado a vapor extremamente fácil de usar.
“Teoricamente não há como melhorar o desempenho sem aumentar diretamente a velocidade de processamento do chip”
Isso não está correto. A maneira mais fácil de entender é a seguinte: o que é melhor para um jogo? 70% de CPU de um núcleo, ou 100% de CPU de um núcleo? É exatamente isso que os cpucores farão – ele limpará quais processos são o quê e depois apresentará um núcleo quase 100% limpo e não utilizado para o seu jogo de vapor. (Entre outros recursos de cpucores).
Eu tenho alguns vídeos de cpucores sendo usados por alguns jogos reais. Encorajo você a verificar isso: http: // steamcomunity.com/app/384300/discussões/
Espero que ajude você a entender as coisas.
Tim, por favor, elabore algumas coisas para mim. Como exatamente os cpucores permitem um jogo que funciona com 70% do núcleo (eu honestamente nunca vi um jogo corretamente construído que não usa 100% núcleo) para executar 100% do núcleo? Você não pode forçar um programa a usar mais da carga da CPU. Não acredito que o fechamento dos processos tenha algum efeito no desempenho do jogo (já testei essa teoria muitas vezes no passado). Também é notável que 95% dos processos adicionais que estão em execução adjacentes ao seu jogo são necessários para o RAN do Windows e quaisquer processos adicionais são necessários, como gerentes de áudio, programas específicos para motoristas, etc. Outro exemplo: quando eu lanço o GTA V, preciso do processo de clube social para permanecer ativo para jogar o jogo. Mas os únicos processos “extras” que estão em execução quando eu é um gerenciador de downloads, Foobar2000 e um console de comutação de hardware MSI. Eu testei essa teoria enquanto escrevi isso e notei absolutamente nenhuma diferença no desempenho ou suavidade do meu jogo depois de fechar esses processos extras.
Eu concordo, no entanto, o hiper-threading tem uma tendência a tornar as coisas instáveis. Eu não concordo que o hiper-threading degradará o desempenho. Todo o hiper-threading deve fazer é gerenciar com eficiência o carregamento de um processador. Alguns aplicativos de carregamento fortemente, como editores de fotos/vídeos e videogames, são adequados para executar com hiper-threading habilitados e desativá-lo por qualquer motivo pode resultar em mais problemas do que ele corrige.
Eu também li em algum lugar (não tenho experiência pessoal disso) que desativar a hiper-threading causará jogos com carregamento de textura pesada (como TES: Skyrim) para sofrer um grande golpe no tempo de carregamento.
Tim, eu sou um usuário experiente de PC. Minha experiência excede mais de 10 anos sem contar as intermináveis horas de pesquisa sobre tópicos como este. Eu preciso que você me diga algo que não sei.
Ultima Modifica da Ketonasarus; 7 Lug 2015, Ore 7:20
7 Lug 2015, Ore 13:01
finalmente uma pessoa que recebe sobre hiperthreading . Também no seu link acima, parece que, se a CPU for rápida o suficiente como 3GHz ou mais rápido, desativar o hiperthreading não dará nenhum impulso de desempenho, a menos que você também esteja em overclock, mas este programa não é para overclock.
E sim, eu vejo seu ponto, mas de como eu entendo, o programa força o Turboboost a estar em vigor, que é básico sobrecarregar para uma explosão de velocidade de vez em quando, porque você disse se não pode ulitir 100% de um núcleo, mesmo se você usar este programa, ele não . No entanto, você pode fazer o Windows pensar e dizer que é e enganar a CPU a usar recursos extras para se fazer ir rápido do que a velocidade do estoque e/ou na velocidade do estoque, porque a ulização aumentando, assim o aumento da velocidade que as pessoas pensam que este programa lhes dá.
Ultima Modifica da Yumri; 7 LUG 2015, ORE 13:05
8 LUG 2015, minério 11:41
Messaggio Originale Di Gs-r:
Todo o hiper-threading deve fazer é gerenciar com eficiência o carregamento de um processador. Alguns aplicativos de carregamento fortemente, como editores de fotos/vídeos e videogames, são adequados para executar com hiper-threading habilitados e desativá-lo por qualquer motivo pode resultar em mais problemas do que ele corrige.
Sim. Isso é “tudo o que deve fazer”, mas recebo a suspeita de que você está interpretando mal o que o ‘carregamento’ real aqui é e como funciona ou não funciona.
O que o hiper-threading faz é dividir um núcleo físico em dois núcleos lógicos. Esses dois núcleos lógicos têm um estado de execução separado para que eles pode Execute tarefas em paralelo, mas elas precisam compartilhar e disputar recursos como um barramento de sistema ou caches de memória da CPU para que eles Não pode sempre executar em paralelo.
Isso é extremamente importante para entender. Você precisa estar executando o software escrito de uma maneira específica para aproveitar os truques de agendamento de hiper-threading, sem um dos núcleos lógicos em um par bloqueando o outro.
O exemplo mais simples é um tópico que executa um trabalho computacional pesado em um núcleo lógico, enquanto seu núcleo lógico irmã está liberando os dados de volta para a RAM principal e puxando novos dados para outros cálculos.
Que tipo de software opera principalmente dessa maneira? Software que executa cálculos em fluxos de dados. Os exemplos canônicos desse tipo são o software de codificação ou decodificação de áudio e vídeo.
Na prática, a maioria dos softwares não está bem paralela para permitir que dois núcleos lógicos funcionem de maneira totalmente descontraída. Haverá colisões. Muitos e muitos deles, mais dentro de um único segundo do que você pode contar com as mãos coletivas da platéia em um filme de filme lotado.
No entanto, vários curtos períodos de operações paralelas e sem colisão ainda são mais rápidas do que não ter operações paralelas. E, portanto, a execução de threads mulitple com hiper-threading ainda é mais rápido do que executar apenas um único fio de cada vez sem hiper-threading, onde o agendador do sistema operacional precisa entrar em jogo e você pode pagar a pena total de comutação de contexto.
Então, como isso afeta os jogos?
Bem. Depende da maior parte de quantos núcleos físicos sua CPU tem disponível e quantos threads simultâneos seu jogo aparecerá.
Os jogos antigos geralmente são um único thread e, portanto, muitos jogos independentes de desenvolvedores iniciais que ainda não têm uma boa compreensão da multi-threading (ou estão construindo algo leve o suficiente para que não precise de multi-threading). Para obter o máximo de desempenho desse jogo, você deseja executar o único tópico do jogo em um dos processadores lógicos e manter tudo fora do outro o máximo possível. Certifique -se de que um processador lógico nunca seja bloqueado por nada que o outro possa querer fazer.
Para jogos com vários threads e sistemas multi-core, o mesmo princípio se mantém: Idealmente, você deseja que cada tópico ativo no jogo seja executado em um processador lógico e mantenha sua irmã livre de atividade para que não possa bloquear o primeiro.
Onde fica interessante é quando você tem menos núcleos físicos do que o jogo tem tópicos.
Nesses casos, pode ser muito vantajoso correr com hiper rosqueamento ativado e ambos núcleos lógicos emparelhados sob um núcleo físico sob carga total. Embora os processadores lógicos possam colidir de vez em quando e diminuir a velocidade, eles geralmente também têm períodos em paralelo, e no geral terá um desempenho melhor do que o sistema operacional que teria que agendar dois tópicos no mesmo núcleo e submeter custos completos de comutação de contexto.
Os benefícios exatos ainda variam de acordo com o jogo: depende de quão bem cada thread permanece fora do caminho um do outro. Também variará com o particular geração da CPU que você está usando. A Intel ficou cada vez melhor em realizar otimizações e programar truques a cada nova geração de CPUs e um I3 ou i7 moderno sofrerá em média menos colisões executando o mesmo software do que uma geração mais antiga de i3 ou i7.
Jogos anteriores
Isso fez uso de threading múltiplo normalmente usaria apenas dois fios simultâneos, porque as CPUs mais antigas geralmente tinham apenas dois núcleos físicos de sobra. Mesmo ao executar esses jogos em um i3, se o hiper-threading habilitou (criando quatro núcleos lógicos a partir de seus dois núcleos físicos), é mais provável que diminua o desempenho devido a colisões. A menos que você agende explicitamente esses dois tópicos para executar em núcleos físicos separados. A maioria dos jogos antigos não faz isso, porque o sistema operacional Windows não tinha como discernir quais núcleos lógicos eram pares até o Windows 7. É aí que software como cpucores pode forçá -lo para você.
Jogos modernos
normalmente use quatro núcleos. Os motivos são um pouco mais variados. Pode ser porque os desenvolvedores de mecanismos de jogo não conseguiram gerenciar uma divisão mais granular ou porque os consoles de jogo rnodern têm apenas quatro núcleos disponíveis e o jogo é uma versão multi-plataforma.
Para um i3 executando esses jogos, geralmente é um bom idéia para ativar o hiper-threading e manter todos os quatro núcleos lógicos sob carga total, para que você atinja a quantidade máxima de paralelização para esse sistema. Enquanto para um i7 (quatro núcleos físicos, oito núcleos lógicos), geralmente é ruim permitir hiper-threading, a menos que você isole threads em núcleos físicos separados.
Jogos modernos escritos em motores modernos também sabem como consultar quais núcleos são lógicos e quais são emparelhados e o farão quando executados em um sistema operacional Windows moderno que pode relatar esse tipo de informação. (Isto é: Windows 7 ou mais.) Iirc Unreal Engine 3 tem esse tipo de tecnologia a bordo.
Ao lidar com um jogo escrito em um mecanismo assim, não faz muito sentido ‘desativar o hiper-threading’ (leia; isolar um jogo para desarranjar os processadores lógicos) para ele em cpucores, porque o jogo já lidará com isso por conta própria.
A hiperthreading reduz o desempenho do núcleo único
O Reddit e seus parceiros usam cookies e tecnologias semelhantes para proporcionar uma experiência melhor.
Ao aceitar todos os cookies, você concorda com o uso de cookies para fornecer e manter nossos serviços e site, melhorar a qualidade do Reddit, personalizar o conteúdo e publicidade do Reddit e medir a eficácia da publicidade.
Ao rejeitar cookies não essenciais, o Reddit ainda pode usar certos cookies para garantir a funcionalidade adequada de nossa plataforma.
Para mais informações, consulte nosso aviso de cookie e nossa política de privacidade .
[Resolvido] O hiperthreading afeta o desempenho?
Você está usando um navegador desatualizado. Pode não exibir este ou outros sites corretamente.
Você deve atualizar ou usar um navegador alternativo.
Mangasoy
8 de novembro de 2021 61 2 35
Meu amigo me pergunte, qual é o melhor entre i5 4690 e i7 3770. o i7 tem hiperthreading enquanto i5 não. Então é o i5 pior que i7?
Ele quer construir um PC para jogos baratos, e este PC será presenteado como um presente de aniversário para meus amigos, irmão, então espero que as respostas sejam úteis
Kanewolf
Eu e meu amigo cientes das diferenças de soquete, só queremos saber se o hiper threading ajudará no desempenho.
Para a maioria dos softwares, sim. O software escrito para utilizar totalmente as CPUs físicas pode se beneficiar de ter hiperthreading desativado. O software comercial não está escrito dessa maneira. Por que? Porque o software comercial precisa ser executado em dezenas de CPUs diferentes. Se você estava escrevendo software personalizado para o YouTube, por exemplo, você pode otimizá -lo para CPUs específicas. YouTube teria milhares do mesmo hardware exatamente. Ao otimizar para esse hardware e, em seguida. Eu fui engenheiro em sistemas onde uma etapa básica de configuração.
Lutfij
Titã
Moderador
7 de outubro de 2009 49.405 3.748 153.390
Com que tipo de jogo ele deseja tributar o sistema?
Drea.Drechsler
Campeão
16 de outubro de 2017 9.449 2.474 52.290
Quanto isso afeta o desempenho pode ser discutível e condicional, mas tudo mais igual, sim.
JohnBonhamsghost
Glorioso
14 de janeiro de 2016 6.970 1.078 49.190
O hiper-threading afeta o desempenho?
tudo depende do software específico envolvido.
Alguns usam hiper-threading, alguns dos núcleos mais dedicados da CPU, outros apenas do núcleo único.
Que preço eles estariam pagando por esta antiga ou 4ª geração CPU?
Ele quer construir
Este tipo de conversa é sempre mais fácil com o comprador/construtor real.
Peça que eles façam contato por si mesmos através deste tópico ou criando um novo.
Mangasoy
8 de novembro de 2021 61 2 35
Com que tipo de jogo ele deseja tributar o sistema?
Jogos como Minecraft, GTA V, CS GO, esse tipo de jogo
Mangasoy
8 de novembro de 2021 61 2 35
tudo depende do software específico envolvido.
Alguns usam hiper-threading, alguns dos núcleos mais dedicados da CPU, outros apenas do núcleo único.
Que preço eles estariam pagando por esta antiga ou 4ª geração CPU?
Este tipo de conversa é sempre mais fácil com o comprador/construtor real.
Peça que façam contato com eles mesmos através deste tópico ou criando um novo.
Ambos são CPU em segunda mão a cerca de 20 dólares, o i5 é 21 dólares e i7 é 24 dólares em uma loja de computadores local
JohnBonhamsghost
Glorioso
14 de janeiro de 2016 6.970 1.078 49.190
i5 é 21 dólares e i7 é 24
Compre ‘ambos.
Mangasoy
8 de novembro de 2021 61 2 35
Compre ‘ambos.
Qual ele deveria usar no PC?
e eu esqueci de mencionar, ele está procurando uma CPU para emparelhar com seu antigo GTX 950
Nighthawk117
Honroso
27 de setembro de 2021 2.029 633 10.540
Meu amigo me pergunte, qual é o melhor entre i5 4690 e i7 3770. o i7 tem hiperthreading enquanto i5 não. Então é o i5 pior que i7?
Ele quer construir um PC para jogos baratos, e este PC será presenteado como um presente de aniversário para meus amigos, irmão, então espero que as respostas sejam úteis
Hyper Threading faz uma diferença significativa na maioria dos jogos modernos, além de beneficiar a multifateria. O 3770 é a melhor CPU, mas observe que eles não usam o mesmo soquete.
Mangasoy
8 de novembro de 2021 61 2 35
Hyper Threading faz uma diferença significativa na maioria dos jogos modernos, além de beneficiar a multifateria. O 3770 é a melhor CPU, mas observe que eles não usam o mesmo soquete.
Eu e meu amigo cientes das diferenças de soquete, só queremos saber se o hiper threading ajudará no desempenho.
Nighthawk117
Honroso
27 de setembro de 2021 2.029 633 10.540
Eu e meu amigo cientes das diferenças de soquete, só queremos saber se o hiper threading ajudará no desempenho.
Depende do software, mas da experiência como regra geral, eu sempre escolheria o chip hiper -thread. As diferenças de núcleo único são pequenas, o hiper threading dará uma melhor experiência no PC e proporcionará uma jogabilidade mais suave em jogos modernos. Se você quiser jogar Battlefield V, por exemplo, o 3770 é o melhor chip para isso, porque usará todos os 8 threads. Alguns desses jogos não são muito suaves nos chips 4C/4T mais antigos.
Kanewolf
Titã
Moderador
29 de maio de 2013 35.821 2.774 153.790
Eu e meu amigo cientes das diferenças de soquete, só queremos saber se o hiper threading ajudará no desempenho.
Para a maioria dos softwares, sim. O software escrito para utilizar totalmente as CPUs físicas pode se beneficiar de ter hiperthreading desativado. O software comercial não está escrito dessa maneira. Por que? Porque o software comercial precisa ser executado em dezenas de CPUs diferentes. Se você estava escrevendo software personalizado para o YouTube, por exemplo, você pode otimizá -lo para CPUs específicas. YouTube teria milhares do mesmo hardware exatamente. Ao otimizar para esse hardware e, em seguida. Fui engenheiro em sistemas em que uma etapa básica de configuração era desativar o hiperthreading no BIOS.
Se você tem um software específico que precisa executar no máximo, então você compare os dois lados e corre com o melhor desempenho.
O hiper-threading diminui os dois threads em um núcleo?
Isso já pode ser respondido em outro tópico, mas aqui vai de qualquer maneira. Suponha que eu tenha um processador de 4 núcleo com 8 threads de hiper threading. Vamos pegar o Intel i7-4770k como exemplo. Faz o fato de haver dois tópicos funcionando simultaneamente em um único núcleo lento ou ambos os threads para baixo em comparação com a que apenas um tópico funcionava em um único núcleo. Estou falando sobre a taxa de transferência líquida de um único thread, não a taxa de transferência ampla do sistema. Parece-me que, se um processador estiver sendo executado no modo de hiper-lida, que precisaria gastar muito tempo gerenciando recursos compartilhados, como caches, unidades de execução, pipelines, etc. Em outras palavras, parece que o “desempenho por thread” seria menor do que em uma CPU com 4 núcleos e 4 threads do que em uma CPU com 4 núcleos e 8 threads. Por favor, esclareça, explique e elabore.
Mais opções
Redleader
Ars legatus legionis
Depende de como é implementado e o que os tópicos estão realmente fazendo (e.g. Eles lutam por cache despejando a memória um do outro ou algo parecido). Mas em geral, não. Coisas como cache e tal não são realmente “gerenciadas”, da perspectiva do hardware; Um valor de memória é um valor de memória, não importa de onde vem. Para obter instruções no pipeline, você deve acompanhar qual conjunto de registros cada instrução está se referindo (já que cada thread terá seu próprio), mas em um processador X86 moderno, você deve fazer isso de qualquer maneira, pois, na verdade.
O interessante sobre o SMT é como ele se encaixa naturalmente no que um processador amplo e supercalar já tem que fazer.
Mais opções
Tom Dunkerton
Ars Praefectus
Obrigado Redleader. Não sei por que, mas acho que um núcleo quatro sem hiper-threading seria mais rápido por thread do que um núcleo duplo com hiper-threading. O que estou perdendo?
Mais opções
Breze
Ars Praefectus
O único caso em que encontrei onde o Hyperthreading degrada o desempenho é a matemática numérica. Se você estiver analisando dados bem organizados, poderá manter o núcleo ocupado. E se você estiver trabalhando muito, pode ficar grande demais para o cache. Então você deseja espalhar seus cálculos pelos núcleos para obter o cache de todos (e ao mesmo tempo, minimizando a comunicação. é uma arte!). Em geral, você tem metade da largura de banda para ‘o que for’ por núcleo se tiver hiperthreads, mas não tenho certeza de que muitas pessoas executam códigos de largura de banda com frequência.
Eu acho que o que você está perdendo é que os núcleos são tão incrivelmente rápidos que eles quase sempre aguardam dados, a menos que seu código esteja atento com muito cuidado. É um problema de latência, você também pode ter outro fio descobrindo o que ele pedirá enquanto o primeiro está esperando.
Dito isto, você está essencialmente certo de que 4 núcleos reais são mais rápidos que 2 reais/2 hiper. É apenas que 2 reais/2 hiper são mais rápidos que 2 reais por conta própria, todas as outras coisas sendo iguais.
Além disso, suponho que, como os hyperthreads compartilham hardware, eles poderiam compartilhar dados através do cache. Então, suponho que se você tivesse dois tópicos com um monte de comunicação, eles poderiam ser mais felizes em uma vez. Não tenho certeza de como isso funciona na prática. Parece que seria uma combinação estranha de ajuste bom e ruim (se houver comunicação suficiente para que isso seja bom, eles talvez não devam ser dois tópicos, eu acho?)
Editar: a diretriz lembra -se vagamente a ver que, mantendo o número de núcleos reais constantes, a hiperthreading é boa por cerca de 30% e altera o desempenho extra. Não 100%.
Mais opções
Redleader
Ars legatus legionis
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29436487#P29436487: KLBS68DB disse:
Tom Dunkerton [/url] “: klbs68db] Não sei por que, mas acho que um núcleo quatro sem hiper-threading seria mais rápido por thread do que um núcleo duplo com hiper-threading. O que estou perdendo?
Meu palpite seria que você não tem um ótimo entendimento de como um computador funciona. A Ars Technica teve vários artigos muito bons sobre este tópico há cerca de dez anos. Pode valer a pena desenterrá -los.
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29438331#P29438331: KLBS68DB disse:
Breze [/url] “: klbs68db]
Dito isto, você está essencialmente certo de que 4 núcleos reais são mais rápidos que 2 reais/2 hiper. É apenas que 2 reais/2 hiper são mais rápidos que 2 reais por conta própria, todas as outras coisas sendo iguais.
Não é “2 real/2hyper”. Você ainda tem exatamente 2 núcleos, é apenas que cada um pode executar 2 threads de uma só vez. Nenhum deles é mais “real” do que o outro.
Mais opções
continuum
Ars legatus legionis
Moderador
Acabamos de ter uma discussão sobre isso, pode ajudar?
Mais opções
Tom Dunkerton
Ars Praefectus
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29439557#P29439557: 1CD9UD67 disse:
continuum [/url] “: 1cd9ud67] Acabamos de discutir isso, pode ajudar?
Mais opções
Breze
Ars Praefectus
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29439055#P29439055: 172mk6gh disse:
Redleader [/url] “: 172mk6GH]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29436487#P29436487: 172mk6gh disse:
Tom Dunkerton [/url] “: 172mk6gh] Não sei por que, mas acho que um núcleo quatro sem hiper-threading seria mais rápido por tópico do que um núcleo duplo com hiper-fibra. O que estou perdendo?
Meu palpite seria que você não tem um ótimo entendimento de como um computador funciona. A Ars Technica teve vários artigos muito bons sobre este tópico há cerca de dez anos. Pode valer a pena desenterrá -los.
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29438331#P29438331: 172mk6gh disse:
Breze [/url] “: 172mk6gh]
Dito isto, você está essencialmente certo de que 4 núcleos reais são mais rápidos que 2 reais/2 hiper. É apenas que 2 reais/2 hiper são mais rápidos que 2 reais por conta própria, todas as outras coisas sendo iguais.
Não é “2 real/2hyper”. Você ainda tem exatamente 2 núcleos, é apenas que cada um pode executar 2 threads de uma só vez. Nenhum deles é mais “real” do que o outro.
Bem, ele não está errado, pois quatro núcleos reais geralmente são mais rápidos que dois com hiperthreading (I, por outro
Mais opções
JLARJA
Centurion de Ars
Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente! Por que a Intel ou qualquer outra pessoa faria processadores de núcleo duplo ou quadro, se você pudesse obter o mesmo desempenho com hiper-thread-core ou dual-core?
Mais opções
picado
Ars legatus legionis
Assinator++
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29440315#P29440315: ISM45JMP disse:
JLARJA [/url] “: ism45jmp] Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente!
Isso depende do que os tópicos estão fazendo. Dois tópicos competindo pelos mesmos recursos de hardware (ambos pesados da FPU, ambos limitados à memória, etc.), mas dois tópicos que não estão competindo tanto (um Thread FPU pesado, o outro com praticamente nenhum FPU, por exemplo, e ambos se comportando razoavelmente bem em relação ao cache) não terão uma competição tão grande.
A nomenclatura normal para discutir isso é 4C/8T (quatro núcleos, oito fios), 2C/4T (dois núcleos, quatro threads), etc. Não há diferença nos processadores modernos entre os dois threads (ou mais) por núcleo para uma designação “dois núcleo, dois hiper”.
Mais opções
Byosys
Ars Praefectus
Assinator++
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29441313#P29441313: 26Miaqlu disse:
Fitten [/url] “: 26miaqlu]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29440315#P29440315: 26Miaqlu disse:
JLARJA [/url] “: 26miaqlu] Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente!
Isso depende do que os tópicos estão fazendo. Dois tópicos competindo pelos mesmos recursos de hardware (ambos pesados da FPU, ambos limitados à memória, etc.), mas dois tópicos que não estão competindo tanto (um Thread FPU pesado, o outro com praticamente nenhum FPU, por exemplo, e ambos se comportando razoavelmente bem em relação ao cache) não terão uma competição tão grande.
A nomenclatura normal para discutir isso é 4C/8T (quatro núcleos, oito fios), 2C/4T (dois núcleos, quatro threads), etc. Não há diferença nos processadores modernos entre os dois threads (ou mais) por núcleo para uma designação “dois núcleo, dois hiper”.
Enquanto o hiperthreading não pode ajudar o desempenho de threads únicos, sua sobrecarga é geralmente muito pequena. Fora de alguns casos como Fitten descreve, a hiperthreading é geralmente muito boa em utilizar partes não utilizadas do processador executam vários threads em paralelo no mesmo núcleo físico, acelerando as coisas. Por exemplo, o uso de um segundo fio em partes não utilizadas de um núcleo físico pode impedir que o agendador precise interromper a tarefa que você se preocupa em lidar com tarefas de fundo.
Mais opções
Hat Monster
Ars legatus legionis
Assinator
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29441313#p29441313: 3jxfynh2 disse:
Fitten [/url] “: 3jxfynh2]
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29440315#p29440315: 3jxfynh2 disse:
JLARJA [/url] “: 3jxfynh2] Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente!
A nomenclatura normal para discutir isso é 4C/8T (quatro núcleos, oito fios), 2C/4T (dois núcleos, quatro threads), etc. Não há diferença nos processadores modernos entre os dois threads (ou mais) por núcleo para uma designação “dois núcleo, dois hiper”.
Sim existe. A CPU identifica como processadores “físicos” e “lógicos” – cada núcleo é físico + lógico. O sistema operacional normalmente (a menos que o gerenciamento de energia intervenha) agendará para o físico antes da lógica. Android (dispositivos Nexus, sem sofis.Pequenas coisas), por exemplo, requer uma certa carga e um certo relógio mínimo sendo alcançado antes de acordar outro núcleo.
Mais opções
Breze
Ars Praefectus
Com hiper threading, a máquina tem 2 (ou 4 [alguém já viu 3?]) fios por núcleo físico. O mapeamento dos threads usados -> threads depende do ambiente. Dependendo da carga de trabalho, pode fazer sentido agendar tarefas para tópicos em núcleos físicos separados. OpenMP, por exemplo, não, mas você pode forçá -lo a.
Parece mais provável que seu sistema operacional esteja fazendo uma distinção arbitrária entre os threads, do que alguns de seus threads são especiais. Faz sentido marcar arbitrariamente um tópico por núcleo como ‘extra.’Dessa forma, o programador pode dizer “comece a agendar tarefas nos threads reais” quando eles realmente querem dizer “Atribua threads um por núcleo.”
Mais opções
Redleader
Ars legatus legionis
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29443099#P29443099: 2856Vwww disse:
Breze [/url] “: 2856Vwww] com hiper rosqueamento, a máquina tem 2 (ou 4 [alguém já viu 3?]))
Claro, a Qualcomm Hexagon é de 3 vias SMT.
Mais opções
Redleader
Ars legatus legionis
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29442833#P29442833: Zynp60yg disse:
Chapéu monstro [/url] “: zynp60yg]
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29441313#P29441313: Zynp60yg disse:
Fitten [/url] “: zynp60yg]
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29440315#P29440315: Zynp60yg disse:
JLARJA [/url] “: zynp60yg] Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente!
A nomenclatura normal para discutir isso é 4C/8T (quatro núcleos, oito fios), 2C/4T (dois núcleos, quatro threads), etc. Não há diferença nos processadores modernos entre os dois threads (ou mais) por núcleo para uma designação “dois núcleo, dois hiper”.
Sim existe. A CPU identifica como processadores “físicos” e “lógicos” – cada núcleo é físico + lógico.
Até onde eu sei, isso é apenas uma coisa organizacional para ajudar o sistema operacional a alocar tópicos corretamente. A escolha de qual é “física” é arbitrária.
Mais opções
Netmasteroc3
Ars Praefectus
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29442833#p29442833: 3rsj3eod disse:
Chapéu monstro [/url] “: 3rsj3eod]
Sim existe. A CPU identifica como processadores “físicos” e “lógicos” – cada núcleo é físico + lógico.
Er, não é assim que as CPUs da Intel apresentam informações ou, Afaik, operam eletricamente. Todos os tópicos são lógicos, não há conceito de um tópico físico ou um tópico lógico enquanto você os descreve. Um núcleo pode executar 1 ou mais (2, 4 no caso de fios Xeon Phis). Essa é a extensão da visibilidade que você tem no sistema. Internamente, o hardware de decodificação/despacho/cronograma do front-end não é um revestimento especial, nem precisa, simplesmente rastreia n-threads até o limite permitido.
As informações do CPUID reflete este tópico lógico como um conceito infantil para um núcleo físico. O sistema operacional pode obviamente rastrear quais threads estão executando em quais CPUs, mas não há visibilidade no agendador ou unidades de execução do núcleo além disso.
Mais opções
Hat Monster
Ars legatus legionis
Assinator
Eu não disse nada sobre “fios físicos” ou “tópicos lógicos”. Eu disse que um núcleo da CPU se apresenta ao sistema operacional como um processador físico e lógico. Isso ajuda o agendador do sistema operacional a economizar energia (não acorde outro núcleo se um núcleo de smting puder levar outro tópico) ou executar melhor (use dois núcleos em vez de um).
No que diz respeito aos fios, eles estão apenas “correndo”. Nenhum dos dois tem prioridade sobre o outro, eles recebem recursos como e quando o despachante da CPU decide.
Mais opções
Netmasteroc3
Ars Praefectus
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29446355#P29446355: 7e0sh86s disse:
Chapéu monstro [/url] “: 7e0sh86s]
Eu disse que um núcleo da CPU se apresenta ao sistema operacional como um processador físico e lógico. Eu disse que um núcleo da CPU se apresenta ao sistema operacional como um processador físico e lógico.
Não tenho certeza se estamos falando um do outro ou não. Embora seu nitpick seja totalmente tangencial ao ponto que eu estava fazendo.
O que estou dizendo é que, pelo menos para a Intel, o relacionamento físico-lógico é hierárquico e que o hardware não desenha ou apresenta uma distinção da maneira como você é. Um processador físico é um núcleo; Cada núcleo contém 1 ou mais processadores lógicos. Este foi o caso de voltar pelo menos para os P4s, tanto quanto eu sei dos dados do CPUID que tenho.
A distinção que você está desenhando não corresponde à realidade, pelo menos não da maneira que eu (e parece que o líder) está interpretando.
Do ponto de vista do hardware, os processadores lógicos são uma tags na lógica que rastreia que registram arquivos e instruções pertencem a qual tópico-não qualquer construto real. Do ponto de vista do software, um processador físico é apenas um contêiner que agrupa processadores e caches lógicos para que o sistema operacional saiba sobre o arranjo físico no silício.
Mais opções
picado
Ars legatus legionis
Assinator++
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29446355#P29446355: Mrito0bp disse:
Hat monster [/url] “: mrito0bp] Nem se tem prioridade sobre o outro, eles recebem recursos como e quando o despachante da CPU decide.
Que é o que eu disse
Mais opções
Jimbopalmer
Tribunus de Ars angusticlavius
Assinator
Vou levar outro ponto de vista sobre o que o OP perguntou.
Em um hiperthread muito precoce, havia algumas cargas de trabalho em que era mais lento do que a mesma tarefa com ela desligada.
Isso não é verdade em anos.
Se você tiver uma única tarefa, ele funcionará o mais rápido com o hiperthreading ligado como o desligado.
Se, como exemplo, você tiver uma CPU com dois núcleos e capaz de 4 threads, ele executará um único fio tão rápido quanto um único núcleo, CPU de thread único na mesma velocidade do relógio. Se você iniciar um segundo tópico, provavelmente será atribuído ao segundo núcleo e, exceto os gargalos de memória, ambos funcionarão na mesma velocidade que o uso de dois PCs na mesma velocidade do relógio. A taxa de transferência aumenta em 100%
Depois de iniciar o terceiro tópico (não o terceiro tópico!) Um núcleo começará a hiperthreading, o que geralmente melhora a taxa de transferência em apenas mais 30%, portanto, cada núcleo é retardado em 35%, em média. (Novamente, isso depende da carga de trabalho, diferentes algoritmos já podem estar aguardando recursos 35% do tempo. Alguns algoritmos podem estar tão vinculados à memória que dois núcleos executando apenas dois threads podem conflitar)
Depois que todos os quatro tópicos estiverem em uso, você está recebendo cerca de 2.6 vezes a taxa de transferência de um único fio; portanto, comparado a esse único fio em execução na mesma máquina, é provável que seja apenas 65%. Mas não solucionou por causa do hyerthreading, diminuiu a velocidade porque você pediu ao seu computador para fazer 4 tarefas separte. Se você pedir uma única CPU rosqueada de núcleo único para realizar 4 tarefas de computação, e seria apenas 25% tão rápido quanto uma única tarefa.
A hiperthreading é uma vitória sempre que o fabricante não tem espaço para adicionar núcleos. Em um futuro com matrizes menores e resoluções mais finas, mais núcleos e hiperthreading serão cada vez mais comuns. Quase a única outra coisa para a qual eles usam transistores são caches cada vez maiores, que ajudam as cargas de trabalho a não.
Mais opções
JLARJA
Centurion de Ars
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29441313#P29441313: JVVFTVYO disse:
Fitten [/url] “: jvvftvyo]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29440315#P29440315: JVVFTVYO disse:
JLARJA [/url] “: jvvftvyo] Até onde eu posso ler, o pôster original está perguntando especialmente se a taxa de transferência de um único thread é afetado por outro thread executado no mesmo núcleo. Claro que é imensamente!
Isso depende do que os tópicos estão fazendo. Dois tópicos competindo pelos mesmos recursos de hardware (ambos pesados da FPU, ambos limitados à memória, etc.), mas dois tópicos que não estão competindo tanto (um Thread FPU pesado, o outro com praticamente nenhum FPU, por exemplo, e ambos se comportando razoavelmente bem em relação ao cache) não terão uma competição tão grande.
A nomenclatura normal para discutir isso é 4C/8T (quatro núcleos, oito fios), 2C/4T (dois núcleos, quatro threads), etc. Não há diferença nos processadores modernos entre os dois threads (ou mais) por núcleo para uma designação “dois núcleo, dois hiper”.
É uma boa teoria (e faz ótimos diagramas em slides de marketing), mas eu realmente gostaria de vê -la testada em algum lugar. A última vez que vi alguns testes no site de revisão, este foi na era P4, quando o hiper-threading foi uma coisa nova. Eles realmente não conseguiram encontrar um par de cargas de trabalho que correm bem juntos, embora considerando a arquitetura de P4, não é realmente surpreendente.
Alguém sabe se isso foi testado ultimamente? Especialmente Haswell parece que poderia se sair bem nesse teste, embora já se sai muito bem em muitos testes de taxa de transferência de hiper-thread.
A propósito, eu amo hiper-threading. É ótimo para compilar grandes bases de código C (++), que é o que eu faço o tempo todo no trabalho. Mas não há dúvida de que o número duplo de núcleos seria ainda melhor.
Mais opções
picado
Ars legatus legionis
Assinator++
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29450801#P29450801: 1CF23TGA disse:
Jlarja [/url] “: 1cf23tga]
Alguém sabe se isso foi testado ultimamente?
Foi muito testado ao longo dos anos (facilmente encontrado pesquisando o Google). Os resultados variam dependendo de cargas de trabalho e algoritmos. Como mencionado acima, os threads que competem pelos mesmos recursos podem exibir vários comportamentos diferentes, enquanto outros cenários se desenrolam favoravelmente (até 20% mais rápido de execução de processo geral em testes favoráveis ao HT). Existem casos especiais em que o HT pode ter uma desaceleração significativa (concorrência grave de recursos), mas na maioria das vezes, as desacelerações parecem estar dentro da margem de erro dos testes. Como sempre, é importante encontrar testes semelhantes às tarefas que se espera executar para determinar os efeitos do HT no desempenho geral e se vale a pena ter ativado ou não.
Mais opções
Redleader
Ars legatus legionis
Em Haswell, o back -end é muito mais largo (7 portas), e mais delas podem executar operações inteiras, então provavelmente a escala é um pouco diferente, porque será menos disputada por portas de execução:
Com 4 portas para carga/lojas, 4 para inteiro e 2 para filial, mesmo dois tópicos executando cargas de trabalho inteiras idênticas provavelmente não introduzem muita contenção.
Mais opções
JLARJA
Centurion de Ars
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29453201#P29453201: 1G7FY5RL disse:
Fitten [/url] “: 1G7FY5RL]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29450801#P29450801: 1G7FY5RL disse:
JLARJA [/url] “: 1G7fy5rl]
Alguém sabe se isso foi testado ultimamente?
Foi muito testado ao longo dos anos (facilmente encontrado pesquisando o Google). Os resultados variam dependendo de cargas de trabalho e algoritmos. Como mencionado acima, os threads que competem pelos mesmos recursos podem exibir vários comportamentos diferentes, enquanto outros cenários se desenrolam favoravelmente (até 20% mais rápido de execução de processo geral em testes favoráveis ao HT). Existem casos especiais em que o HT pode ter uma desaceleração significativa (concorrência grave de recursos), mas na maioria das vezes, as desacelerações parecem estar dentro da margem de erro dos testes. Como sempre, é importante encontrar testes semelhantes às tarefas que se espera executar para determinar os efeitos do HT no desempenho geral e se vale a pena ter ativado ou não.
Não quis dizer uma carga de trabalho com ou sem hiper-threading. Que está sendo testado o tempo todo (Core i5 vs i7). Eu quis dizer executar duas cargas de trabalho diferentes (algo que está flutuando pesado como raytracing e inteiro pesado como compilação paralela C ++) juntos, onde poderíamos ver aqueles “não desacelerando outro thread”, tipo de resultado.
Da sua resposta acima (20 % mais rápido processo geral), vejo que ainda estamos falando de coisas diferentes. Às vezes, você não se importa com o progresso geral, mas com uma única tarefa (que pode ser um ou mais tópicos, realmente não importa, desde que não consiga atingir todo o processador).
Antes de hiper-threading, você pode executar projetos de computação distribuídos o tempo todo em segundo plano. Eles foram executados com prioridade ociosa, então não desaceleraram as coisas (pelo menos não tanto que você notaria). Hoje em dia isso não funciona, já que ter tópicos DC correndo junto com outras coisas em núcleos hiper-lineados vão desacelerar as outras coisas.
Outro exemplo da vida real: no meu DVR baseado em mythtv, tive que limitar a detecção comercial de segundo plano a usar apenas um tópico em um 4C/8T i7 4771, porque o uso de mais estava interferindo com a reprodução de HD, que atinge quatro tópicos quase totalmente (eu não sei por que ele usa apenas quatro threads. Talvez quem codificou não confia em hiper-threading. Se usasse todos os 8 threads, não haveria um problema). Não ajuda que a detecção comercial seja executada com altos valores agradáveis, ele ainda rouba o tempo de uma tarefa mais importante em primeiro plano de obter imagens sem problemas na TV.
Eu acredito que esse é o tipo de situação que o pôster original estava perguntando sobre. Nesta situação, o hiper-threading diminui as coisas de uma maneira que não faz no caso de não threading. Você pode culpar o usuário por ser estúpido ou ser estúpido e dizer que tudo está funcionando como projetado. Eu não discordo nem me importo. Estou apenas tentando responder à pergunta original .
Mais opções
Netmasteroc3
Ars Praefectus
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29457345#P29457345: TCEZXJMB disse:
Jlarja [/url] “: tcezxjmb]
Outro exemplo da vida real: no meu DVR baseado em mythtv, tive que limitar a detecção comercial de segundo plano a usar apenas um tópico em um 4C/8T i7 4771, porque o uso de mais estava interferindo com a reprodução de HD, que atinge quatro tópicos quase totalmente (eu não sei por que ele usa apenas quatro threads.
A questão maior em minha mente é por que está levando 4 tópicos e muito tempo de computação para reproduzir o conteúdo HD.
Reprodução de 1080 h.264 e h.265 O conteúdo não é tão exigente, e você tem muita CPU para lidar com isso. Ou coloque de outra maneira, a reprodução do conteúdo de 1080p no meu computador come apenas 10% do meu tempo de CPU (i5-2500k) e eu posso codificar o conteúdo de 1080p em ou melhor que o tempo real e assistir a 1080p conteúdo ao mesmo tempo e a reprodução permanece suave e o codificador permanece como deve ser. O caso é essencialmente o mesmo no meu i7-4980HQ no meu MBP.
Mais opções
JLARJA
Centurion de Ars
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29457527#P29457527: CKO73P2V disse:
Netmasteroc3 [/url] “: cko73p2v]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29457345#P29457345: CKO73P2V disse:
Jlarja [/url] “: cko73p2v]
Outro exemplo da vida real: no meu DVR baseado em mythtv, tive que limitar a detecção comercial de segundo plano a usar apenas um tópico em um 4C/8T i7 4771, porque o uso de mais estava interferindo com a reprodução de HD, que atinge quatro tópicos quase totalmente (eu não sei por que ele usa apenas quatro threads.
A questão maior em minha mente é por que está levando 4 tópicos e muito tempo de computação para reproduzir o conteúdo HD.
Reprodução de 1080 h.264 e h.265 O conteúdo não é tão exigente, e você tem muita CPU para lidar com isso. Ou coloque de outra maneira, a reprodução do conteúdo de 1080p no meu computador come apenas 10% do meu tempo de CPU (i5-2500k) e eu posso codificar o conteúdo de 1080p em ou melhor que o tempo real e assistir a 1080p conteúdo ao mesmo tempo e a reprodução permanece suave e o codificador permanece como deve ser. O caso é essencialmente o mesmo no meu i7-4980HQ no meu MBP.
Não está usando o método mais ideal (porque aparentemente não consegue lidar.264 que sai do conector da TV a cabo de vez em quando) e faz algum outro processamento também (o desinteresse é provavelmente a etapa mais exigente). Nenhuma aceleração de hardware (parte disso “não usando o método mais ideal”). Além disso, a taxa de bits geralmente é maior do que você vê em conteúdo streamable ou para download (4-5 GBs / hora é bastante normal, eu acho).
Editar: normalmente a carga é em torno de dois fios totalmente utilizados, a propósito. A caixa de quatro threads acontece com frequência o suficiente para ser incômodo. Especialmente porque não apenas pula ou gagueja, muitas vezes termina a reprodução por completo (talvez Mythtv pense que a gravação terminou, eu não sei).
Tocar os mesmos arquivos com o VLC funciona muito melhor, exceto quando o VLC apenas se recusa a jogá -los. É incrivelmente difícil assistir TV hoje em dia.
Mais opções
picado
Ars legatus legionis
Assinator++
[url = http: // arstechnica.com/civis/viewtopic.php?p = 29457345#P29457345: 2mvy04fa disse:
Jlarja [/url] “: 2mvy04fa]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29453201#P29453201: 2mvy04fa disse:
Fitten [/url] “: 2mvy04fa]
[url = http: // arstechnica.com/civis/viewtopic.php?P = 29450801#P29450801: 2mvy04fa disse:
Jlarja [/url] “: 2mvy04fa]
Alguém sabe se isso foi testado ultimamente?
Foi muito testado ao longo dos anos (facilmente encontrado pesquisando o Google). Os resultados variam dependendo de cargas de trabalho e algoritmos. Como mencionado acima, os threads que competem pelos mesmos recursos podem exibir vários comportamentos diferentes, enquanto outros cenários se desenrolam favoravelmente (até 20% mais rápido de execução de processo geral em testes favoráveis ao HT). Existem casos especiais em que o HT pode ter uma desaceleração significativa (concorrência grave de recursos), mas na maioria das vezes, as desacelerações parecem estar dentro da margem de erro dos testes. Como sempre, é importante encontrar testes semelhantes às tarefas que se espera executar para determinar os efeitos do HT no desempenho geral e se vale a pena ter ativado ou não.
Não quis dizer uma carga de trabalho com ou sem hiper-threading. Que está sendo testado o tempo todo (Core i5 vs i7). Eu quis dizer executar duas cargas de trabalho diferentes (algo que está flutuando pesado como raytracing e inteiro pesado como compilação paralela C ++) juntos, onde poderíamos ver aqueles “não desacelerando outro thread”, tipo de resultado.
Da sua resposta acima (20 % mais rápido processo geral), vejo que ainda estamos falando de coisas diferentes. Às vezes, você não se importa com o progresso geral, mas com uma única tarefa (que pode ser um ou mais tópicos, realmente não importa, desde que não consiga atingir todo o processador).
Antes de hiper-threading, você pode executar projetos de computação distribuídos o tempo todo em segundo plano. Eles foram executados com prioridade ociosa, então não desaceleraram as coisas (pelo menos não tanto que você notaria). Hoje em dia isso não funciona, já que ter tópicos DC correndo junto com outras coisas em núcleos hiper-lineados vão desacelerar as outras coisas.
Outro exemplo da vida real: no meu DVR baseado em mythtv, tive que limitar a detecção comercial de segundo plano a usar apenas um tópico em um 4C/8T i7 4771, porque o uso de mais estava interferindo com a reprodução de HD, que atinge quatro tópicos quase totalmente (eu não sei por que ele usa apenas quatro threads. Talvez quem codificou não confia em hiper-threading. Se usasse todos os 8 threads, não haveria um problema). Não ajuda que a detecção comercial seja executada com altos valores agradáveis, ele ainda rouba o tempo de uma tarefa mais importante em primeiro plano de obter imagens sem problemas na TV.
Eu acredito que esse é o tipo de situação que o pôster original estava perguntando sobre. Nesta situação, o hiper-threading diminui as coisas de uma maneira que não faz no caso de não threading. Você pode culpar o usuário por ser estúpido ou ser estúpido e dizer que tudo está funcionando como projetado. Eu não discordo nem me importo. Estou apenas tentando responder à pergunta original .
Na verdade, eu tinha digitado um pouco sobre isso na outra mensagem, mas a excluí. Stokes tem algumas apresentações de HT aqui em ARs que são bons para ler/assistir. No entanto, na explicação mais simples, são emitidas instruções dos dois fluxos de instrução HT para preencher ‘lacunas’ nos recursos ociosos do processador. Algumas das instruções de ambos os fluxos precisarão dos mesmos recursos ao mesmo tempo. Quando isso acontecer, essa disputa será necessariamente serializada para essas instruções. Em um mundo perfeito (ou com recursos suficientes), eles podem ser emitidos em paralelo e nenhum impacto será visto. No entanto, se cada núcleo simplesmente tivesse 2x os recursos necessários, seria efetivamente dois núcleos físicos separados, então por que não apenas fazer dois núcleos separados?
Pense nos velhos tempos do tempo simples, cortando um único núcleo (núcleo de rosca única). Se o tópico ocultou uma espera, por exemplo, o sistema operacional poderia impedir esse tópico e agendar outro. Tudo isso estava no nível do sistema operacional. No entanto, o sistema operacional realmente não conseguia ver no nível do cache, nem gostaria, porque a sobrecarga para agendar outra tarefa no corte do tempo é enorme em comparação com uma falta de cache, por exemplo. Então agora temos SMT/HT, que está em hardware e * pode * ver no nível de erros de cache e correntes de risco de execução (ciclos de relógio de um dígito) e podem emitir instruções de vários threads/contextos de hardware para aproveitar vantagem dos recursos de hardware de núcleo inativo.
Portanto, estenda isso (um conjunto idealizado de exemplos simplificados. Suponha que todos os recursos principais sejam iguais. Como todos os recursos do tipo inteiro, ignore o ponto flutuante ou outros). Se você tem dois tópicos idênticos que estão operando de maneira a não haver barracas (dados ou não) e o núcleo não possui recursos extras sobre o que um thread pode usar (esse não é o caso dos processadores HT atuais. Eles têm mais) então os tópicos levarão hipoteticamente 2x o tempo todo, o tempo de parede, assumindo um agendamento perfeitamente justo (tome uma instrução de um fluxo, depois um do outro, repita) para terminar porque é como embaralhar dois decks de cartas juntos em um shuffle perfeito. O baralho de resultados finais é 2x tão alto quanto um dos decks originais, porque agora existem 2x o número de cartas no baralho resultante (comparável a 2x o tempo de execução do Wallclock Time de Wallclock).
Agora, quanto mais barracas acontecem (ou mais recursos um núcleo tiver. ou ambos) significam que, mais vezes os recursos podem estar ociosos para um tópico em que o outro tópico pode ser executado sem afetar a execução do primeiro tópico. Você pode entrar em uma situação em que a execução do segundo tópico teve um impacto zero na execução do primeiro tópico até o tempo de execução de ponta a ponta do que o primeiro tópico teria encontrado se o segundo tópico não existisse. O tópico teria experimentado exatamente o mesmo tempo de execução de Wallclock com ou sem o outro thread HT executando. Esse segundo cenário também seria o mesmo que ter dois núcleos físicos, cada um com apenas um contexto (como temos em processadores multicore e não-HT atualmente) ou um núcleo 1C/2T com o dobro dos principais recursos que qualquer um tópico poderia usar, ou uma quantidade perfeita de barracas/misses de cache, etc.
Portanto, a realidade está em algum lugar no meio, mas podemos criar cenários (talvez artificiais) em que a penalidade do tempo de execução do Wallclock do melhor caso é de 0% e o pior é, digamos, 100%. O que se pode experimentar na execução de Wallclock de um único thread depende dos recursos principais e dos fluxos de instrução de ambos os Thread. Os processadores HT não tendem a ter 2x a quantidade de recursos que um único tópico poderia usar. Os fluxos de instrução não têm um conjunto perfeito de necessidades/barracas/missões de cache, para que vários fluxos de instrução possam ser intercalados de uma maneira que nenhum fio seja impactado pelos outros. Por outro lado, os processadores HT podem aproveitar uma granularidade de “esperar” em um processador que não seja visível no nível do sistema operacional e que seria muito caro para aproveitar, em qualquer caso (corte de tempo), a fim de melhorar a taxa de transferência de vários threads de execução. Embora qualquer thread possa experimentar um tempo de execução mais longo, a tarefa geral (ambos/todos os threads juntos) pode experimentar um tempo de execução mais curto de parede em comparação com não ter HT. Dado o altamente dependente da natureza da carga de trabalho da pergunta, eu hesitaria em tentar adivinhar qualquer número na desaceleração de Wallclock, até mesmo tentando construir um caso “médio”.
No entanto. Eu diria que se você estiver preocupado com o tempo de execução de Wallclock de um único tópico, desativando (ou não ter) HT provavelmente seria o caminho a seguir. Se você está preocupado com o desempenho geral do sistema, o tempo de execução de Wallclock de uma tarefa ou várias tarefas simultâneas, então ativar o HT provavelmente seria o caminho a seguir. Eu sei por experiência pessoal que as VMs, por exemplo, se beneficiam muito bem da HT. Eu também escrevi uma série de aplicações em que a geração de tantos threads quanto os contextos de HT em um ambiente HT também mostram bom aumento de taxa. No entanto, do mundo do HPC, eu sei que mesmo os códigos de FPU “pesados” tendem a realmente ser menos pesados da FPU do que se pode pensar (40% da instrução FPU do fluxo de instruções sobre algum código de resolução. o restante instruções inteiras). No entanto, nesses códigos, a utilização do cache seria um grande fator (reduzindo efetivamente o cache ao compartilhar threads com HT) e os acidentes de cache na memória principal podem começar a ser um fator mais significativo (os algoritmos adaptativos do tamanho de cache podem ajudar lá, no entanto).