As coisas são muito mais complexas do que eram nos dias de uma instrução de CPU por um ciclo de clock.
Agora há um pipeline para cada instrução que consiste em várias etapas. Ouvi até 41, embora isso tenha sido um tempo atrás e não tenho idéia de como são os pipelines de CPU atuais. Sei que se o pipeline for longo o suficiente, você poderá iniciar uma nova instrução no pipeline antes que a última instrução termine, às vezes no mesmo ciclo de clock, para que seu núcleo único 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 o processador processa as 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 tirar proveito do longo pipeline com segurança , o chip apresentará dois núcleos de processador separados ao agendador do sistema operacional e instruções alternativas enviadas a cada núcleo, para que duas instruções para o mesmo "núcleo" nunca estejam no pipeline ao mesmo tempo. Dessa forma, podemos ter certeza de que quaisquer instruções executadas simultaneamente não interferem entre si. Isso é chamado de hyperthreading .
Vale a pena notar aqui que, embora o hyperthreading possa aumentar significativamente a quantidade de trabalho que você obtém do seu processador, ele não chega nem perto de ter tantos núcleos físicos. Dependendo da sua carga de trabalho, pode significar uma melhoria de 15% ou 40%. Em algumas circunstâncias, convém desabilitar o recurso para que os núcleos restantes tenham acesso exclusivo total ao cache L1 / L2 desse núcleo (às vezes isso é feito com servidores de banco de dados dedicados).
Quando seu chip se anuncia como tendo 2 núcleos com 4 threads, isso significa que é um processador de núcleo duplo que suporta hyperthreading.