¿obtengo la mitad de la velocidad de la CPU para un solo subproceso si HT está activado? [duplicar]

1

Esta pregunta ya tiene una respuesta aquí:

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?

Jas
fuente
2
No; Todo Hyperthreading es la capacidad de un solo núcleo para manejar dos hilos separados a la vez. Investigue un poco más sobre el tema antes de hacer preguntas de seguimiento.
Ramhound

Respuestas:

1

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

Hennes
fuente
Entiendo que estás tratando de simplificar las cosas, pero las simplificaciones que en realidad incluyen declaraciones falsas son, en mi opinión, no aceptables. Por ejemplo, la analogía de la cabina de peaje implica fuertemente que uno u otro hilo avanza, lo cual no es cierto. Los dos hilos utilizan diferentes unidades de ejecución en el núcleo, por lo que ambos progresan al mismo tiempo.
David Schwartz
Cierto. Debería encontrar una mejor analogía. Piensa Tal vez la primera persona contando dinero (por ejemplo, usando un ALU) mientras la segunda persona está ocupada con un segundo automóvil. Aunque todavía no es genial. Tal vez debería rascar esa parte o expandirla significativamente.
Hennes
¿Tal vez una tienda con dos empleados pero solo una caja registradora?
David Schwartz
3

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.

David Schwartz
fuente