Carga Calculadora de Hyperthreading [duplicata]

0

Eu tenho um núcleo dual core i5 com hyperthreading. Como o hyperthreading permite que o tempo de CPU não utilizado seja usado por outros processos, por que isso faria parecer 4 processadores lógicos (2 por núcleo real). Como isso é diferente da execução fora de ordem?

Vamos dizer que core0 / core1 são um core e core2 / core3 são outro. Se core0 e core2 estiverem em 100%, minha CPU terá 100% de carga ou apenas 50%? Se todos eles estiverem em 100%, o que isso implica? Além disso, como os processos tendem a ser executados no core0 e core2 em vez de core1 e core3?

    
por agz 26.06.2013 / 21:41

2 respostas

1

O HT é como uma execução fora de ordem, exceto pelo fato de poder programar um thread completamente diferente, em vez de apenas reordenar as instruções. Às vezes, a CPU fica inativa porque ela já reordenou todas as instruções possíveis e ainda está aguardando dados ou qualquer outra coisa. O HT permite que outro thread esteja pronto para ser executado enquanto o primeiro está esperando.

Ainda existem apenas dois núcleos físicos em seu sistema. Se core0 e core2 estiverem em 100%, então seu processador está em 100%. Se os núcleos lógicos (core0, core1, core2 e core3) estiverem todos em 100%, então sua CPU está, na verdade, sendo executada em aproximadamente 115% do total sem hyper-threading.

O motivo pelo qual você vê o uso de núcleo alternativo é porque core0 e core1 compartilham o mesmo núcleo físico, e core2 e core3 compartilham o mesmo núcleo físico. Se o sistema operacional agendasse core0 e core1 em vez de core0 e core2, metade do processador ficaria ocioso na maior parte do tempo.

    
por 26.06.2013 / 21:47
1

Since hyperthreading allows for unused cpu time to be used by other processes, why would this make it seem like 4 logical processors (2 per actual core). How is this different than out of order execution?

Isso não está totalmente correto. O Hyper-threading simplesmente adiciona uma unidade de execução adicional por núcleo (em hardware ), mas compartilha o restante do núcleo, e é por isso que em certos casos o hyperthreading pode realmente reduzir o desempenho. Além disso, o hyperthreading não explicitamente "permite que o tempo de CPU não utilizado seja usado por outros processos". Isso é tratado pelo agendador de processo do seu sistema operacional.

O Hyperthreading, no entanto, expõe outro "núcleo" ao sistema operacional, permitindo que ele agende mais programas para serem executados simultaneamente. Exceto nos casos em que isso esgotaria o hardware compartilhado em um núcleo Hyperthreaded (por exemplo, se dois encadeamentos estiverem sendo executados em unidades de execução separadas em um núcleo Hyperthreaded que usam intensamente o cache, que é compartilhado por ambos os encadeamentos em um núcleo HT). Para detalhes técnicos sobre hyperthreading, consulte o Datasheet do processador Intel Core, Volume 1 .

Lets say core0/core1 are one core and core2/core3 are another. If core0 and core2 are at 100% is my cpu at 100% load or only 50%? Also, how come processes tend to execute on core0 and core2 rather than core1 and core3?

Depende de quais partes do seu processador estão sendo estressadas (o ganho de desempenho do HT é muito específico do aplicativo, veja novamente acima). Tecnicamente, você pode estar usando apenas 50% das unidades de execução no Core 0, mas o restante do hardware no núcleo pode ser carregado em 100% (por exemplo, se o programa usar muito o cache).

Para obter detalhes, consulte a pergunta Como a afinidade do processador do Windows funciona com CPUs com hyperthread? .

    
por 26.06.2013 / 21:54