Esta pregunta ya tiene una respuesta aquí:
- Hyperthreading Calculating Load [duplicar] 2 respuestas
Si tengo un solo núcleo de 2.6GHz, por ejemplo, significaría que con hyperthreading solo tengo 1.3GHz para un solo subproceso que tiene mi aplicación o es bajo demanda solo si voy a usar (digamos que mi aplicación es lo único que se ejecuta en la computadora ... por el bien del caso, no se ejecuta ningún sistema operativo)
hilo único núcleo único sin HT: el hilo se ejecuta en 2.6GHz solo hilo núcleo único con HT: ¿el hilo se ejecuta en 1.3GHz?
si no es la mitad de la velocidad, suponiendo que solo tenga un solo hilo ejecutándose, ¿cuánta degradación tiene con HT activado? 10%? ¿más?
cpu
hyper-threading
Jas
fuente
fuente
Respuestas:
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).
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
fuente
No, las velocidades de reloj simplemente no funcionan de esa manera. Las unidades de ejecución en el núcleo se ejecutan a la misma velocidad independientemente de qué subproceso estén operando en nombre o si el núcleo físico tiene HT habilitado o deshabilitado.
fuente