recebo metade da velocidade da CPU para um único thread se o HT estiver ligado? [duplicado]

1

Se eu tiver um único núcleo de 2,6 GHz, por exemplo, isso significa que com hyperthreading eu tenho apenas 1,3 GHz para um único thread que meu aplicativo tem ou está sob demanda somente se eu usar (digamos que meu aplicativo é o único coisa que roda no computador ... por causa do caso no os corre)

single thread single core não HT: segmento executado em 2,6 GHz single thread single core com HT: thread roda em 1.3GHz?

se não é a metade da velocidade assumindo que eu tenho apenas um único thread executando quanta degradação é com HT on? 10% mais?

    
por Jas 09.09.2014 / 18:00

2 respostas

1

Não, isso não significa isso. Toda tarefa pode ser executada em um único thread na velocidade máxima. Quando um desses é bloqueado (por exemplo, enquanto se espera por IO relativamente lento da memória principal), outro segmento pode executar a velocidade do núcleo completo.

Observe que, com uma configuração de encadeamento dual de núcleo único, você só pode usar alguns dos recursos em um encadeamento ao mesmo tempo. Por exemplo. Se você tem dois segmentos que querem ser executados e ambos precisam ler dados da memória principal, apenas um thread pode fazer isso. O outro terá que esperar. Se você tiver dois encadeamentos e um estiver fazendo algo puramente on-die (por exemplo, usando a ALU) enquanto o outro estiver lendo da memória principal, ambos poderão ser executados ao mesmo tempo.

Pense nisso como uma loja com dois funcionários, mas apenas uma caixa registradora. Se ambos precisarem acessar a caixa registradora, será preciso esperar (não fazer nada). Ou, com sorte, apenas um precisa acessar a caixa registradora e o outro está ocupado conversando com o próximo cliente enquanto a primeira pessoa opera o cadastro. (Assim fazendo duas coisas simultaneamente).

if it is not half the speed assuming I have only a single thread running how much degradation is it with HT on? 10%? else?

Depende de por programa. O pior caso ao vivo que ouvi é uma desaceleração total de 30% * 2 (como na verdade, mais lento com o HT ativado). O melhor caso teórico é quase um ganho de 100%. Na prática, parece ter uma média de 30% de ganho de velocidade em relação ao uso de HT.

* 2 : A redução de 30% foi no código de produção real de uma teia de aranha. Mas coisas piores são possíveis. Por exemplo. um banco de dados permitia apenas dois encadeamentos em uma CPU de 2 núcleos, 4 encadeamentos e um planejador que agendava ambos os encadeamentos persistentemente no mesmo núcleo físico.

10-09-2014: adicionados dois links com informações relevantes:
Da Wikipedia: Hyper-threading
Wikipedia: Multithreading simultâneo

    
por 09.09.2014 / 18:23
3

Não, a velocidade do relógio não funciona dessa maneira. As unidades de execução no núcleo são executadas na mesma velocidade, independentemente de qual segmento elas estão operando em nome ou se o núcleo físico tem HT ativado ou desativado.

    
por 09.09.2014 / 18:23