No, eso no significa eso. Cada tarea puede ejecutarse en un solo hilo a toda velocidad. Cuando uno de estos se bloquea (por ejemplo, mientras espera un IO relativamente lento de la memoria principal), otro subproceso puede ejecutarse a la velocidad máxima del núcleo.
Tenga en cuenta que con un solo núcleo, configuración de doble hilo, solo puede usar algunos de los recursos en un hilo al mismo tiempo. Por ejemplo, si tiene dos subprocesos que desean ejecutarse y ambos necesitan leer datos de la memoria principal, solo un subproceso puede hacerlo. El otro tendrá que esperar. Si tiene dos subprocesos y uno está haciendo algo puramente en el dado (por ejemplo, usando la ALU) mientras el otro está leyendo desde la memoria principal, entonces ambos pueden ejecutarse al mismo tiempo.
Piense en ello como tener una tienda con dos empleados pero solo una caja registradora. Si ambos necesitan acceder a la caja registradora, entonces uno tendrá que esperar (no hacer nada). O, con suerte, solo uno necesita acceder a la caja registradora y el otro está ocupado hablando con el siguiente cliente mientras la primera persona opera la caja registradora. (Haciendo así dos cosas simultáneamente).
si no es la mitad de la velocidad, suponiendo que solo tengo un solo hilo ejecutándose, ¿cuánta degradación tiene con HT activado? 10%? ¿más?
Depende de por programa. El peor caso en vivo que escuché es una desaceleración total del 30% * 2 (como en realidad más lento con HT activado). El mejor caso teórico es casi un 100% de ganancia. En la práctica, parece promediar una ganancia de velocidad de aproximadamente 30% sobre el uso de no HT.
* 2 : La desaceleración del 30% estaba en el código de producción real de una araña web. Pero cosas peores son posibles. Por ejemplo, una base de datos solo permitió dos subprocesos en una CPU de 2 núcleos, 4 subprocesos y un planificador que programa ambos subprocesos de forma persistente en el mismo núcleo físico.
10-09-2014: Se agregaron dos enlaces con información relevante:
Wikipedia: Hyper-threading
Wikipedia: Multithreading simultáneo