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