Por que minha CPU dual-core é reconhecida como uma CPU quad-core?

52

Meu processador é um Intel Core i3-380m . Como você pode ver, são 2 núcleos e 4 threads.

Embora o Ubuntu 11.04 e o Windows 7 pareçam pensar que é um processador de quatro núcleos:

Por que isso? É porque existem 2 threads por núcleo, dividindo a CPU em 4 unidades de processamento?

    
por seriousdev 30.08.2011 / 18:20

5 respostas

43

Como mencionado, você tem um sistema dual-core, com 2 threads por núcleo.

Isso é comercializado pela Intel como hyperthreading e tem sido feito de várias maneiras ao longo dos anos por vários fabricantes diferentes .

Para explicá-lo em sua forma mais simples, cada núcleo da CPU consiste em uma arquitetura "core" e várias em torno desse núcleo, que mantém informações de estado e processo para cada thread. Um único núcleo encadeado tem a arquitetura para manter 1 thread de informações de estado mantidas por vez, um núcleo com hyperthread mantém dois conjuntos distintos de informações de estado, permitindo que dois processos separados sejam executados de uma só vez, desde que eles requeiram diferentes partes do núcleo ( o que é razoavelmente provável que aconteça, já que o núcleo consiste em múltiplas unidades de múltiplos tipos diferentes de unidades de processamento).

Para simplificar como a CPU é vista no sistema, cada hyperthread é visto como uma CPU separada, portanto, um processador dual-core de 2 threads por núcleo aparece como um processador quad-core.

Também é possível que o sistema operacional use Core-parking (um recurso nos processadores Intel mais recentes) permite que o sistema operacional suspenda metade de um núcleo com hyperthreading para que, quando a capacidade de processamento extra do hyperthreading não for necessária, o desempenho de thread único seja aumentado o núcleo não está mais compartilhando o cache em dois segmentos e agora pode dedicar totalmente o cache on-core a um único thread.

    
por 30.08.2011 / 18:28
49

O motivo é hyperthreading , que o seu processador suporta. Hyperthreading não é o equivalente a um processador extra, mas pode realmente melhorar o desempenho em aplicativos multithread. Para cada núcleo do processador fisicamente presente, o sistema operacional aborda dois processadores virtuais e compartilha a carga de trabalho entre eles quando possível.

    
por 30.08.2011 / 18:24
12

As coisas são muito mais complexas do que eram nos dias de uma instrução de CPU por ciclo de clock.

Existe agora um pipeline para cada instrução que consiste em várias etapas. Eu ouvi até 41, embora isso tenha acontecido há um tempo e eu não tenho ideia de como são os atuais pipelines de cpu. Eu sei que se o pipeline é longo o suficiente, você pode iniciar uma nova instrução no pipeline antes da última instrução terminar, às vezes no mesmo ciclo de clock, para que o seu single core esteja efetivamente fazendo duas coisas ao mesmo tempo. >

Há um truque aqui, no entanto. Você não pode simplesmente usar isso para acelerar a taxa na qual seu processador mastiga através de instruções de um programa específico. Há um problema de correção envolvido: a próxima instrução pode depender do resultado ainda não determinado da instrução anterior. Para aproveitar o longo pipeline com segurança , o chip apresentará dois núcleos de processador separados para o planejador do sistema operacional e instruções alternativas enviadas para cada núcleo, de modo que duas instruções para o mesmo "core" nunca estejam em o gasoduto ao mesmo tempo. Desta forma, podemos ter certeza de que quaisquer instruções executadas simultaneamente não interferirão entre si. Isso é chamado hyperthreading .

Vale a pena notar aqui que, embora o hyperthreading possa aumentar significativamente a quantidade de trabalho que você recebe da sua CPU, não é nem de longe tão bom quanto ter muitos núcleos físicos. Dependendo da sua carga de trabalho, isso pode significar menos de 15% de melhoria ou até 40% de melhoria. Em algumas circunstâncias, você pode até querer desativar o recurso para que os núcleos restantes tenham acesso exclusivo total ao cache L1 / L2 para esse núcleo (isso às vezes é feito com servidores de banco de dados dedicados).

Quando o seu chip se anuncia como tendo 2 núcleos com 4 threads, isso significa que é um processador dual core que suporta hyperthreading.

    
por 30.08.2011 / 21:37
2

Dê uma olhada nesta página da Intel - muitas animações mostrando como o hyperthreading acelera suas tarefas.

A Utilization of Processor Resources é a melhor animação, olhe para ela e clique no botão "avançar".

    
por 30.08.2011 / 21:34
1

Why is this? Is it because there are 2 threads per core, dividing the CPU in 4 processing units?

Colocando isso de maneira simples, a resposta é sim. Cada núcleo da sua cpu pode suportar dois threads independentes, então 4 no total. Mas isso não significa que ele tenha o mesmo desempenho de uma CPU com encadeamento único de núcleo quádruplo. praticamente o desempenho de uma CPU dual-core de dois segmentos é menor do que o de uma CPU quad-core de um único thread. Como o AMD Phenom X4.

    
por 30.08.2011 / 21:23