He escuchado los términos hyper-threading y multi-threading, pero ¿cuál es exactamente la diferencia entre ellos? ¿Qué tipo de procesador Intel los usa?
He escuchado los términos hyper-threading y multi-threading, pero ¿cuál es exactamente la diferencia entre ellos? ¿Qué tipo de procesador Intel los usa?
Respuestas:
Multithreading se refiere a la tarea general de ejecutar más de un hilo de ejecución dentro de un sistema operativo. El subprocesamiento múltiple se denomina más genéricamente "multiprocesamiento", que puede incluir múltiples procesos del sistema (un ejemplo simple en Windows sería, por ejemplo, ejecutar Internet Explorer y Microsoft Word al mismo tiempo), o puede consistir en un proceso que tiene múltiples subprocesos dentro eso.
Multithreading (o debería decir, multiprocesamiento) es un concepto de software . Prácticamente cualquier CPU completa de Turing puede realizar subprocesos múltiples, incluso si la computadora solo tiene un núcleo de CPU y ese núcleo no admite hyperthreading. Para admitir el multiprocesamiento, la CPU intercalará la ejecución de diferentes subprocesos de ejecución, ejecutando uno, luego otro, y luego otro, donde el sistema operativo dividirá el tiempo disponible en "segmentos" y dará una cantidad de tiempo aproximadamente igual a cada hilo (el tiempo no tiene que ser igual, pero así es como se hace a menos que un proceso solicite una prioridad más alta).
Tenga en cuenta que, cuando haya más subprocesos de ejecución de software que intentan ejecutarse en un momento dado que haya subprocesos de ejecución de hardware (simultáneos) disponibles , estos subprocesos de software se "intercalarán" entre los núcleos disponibles. En el caso de un "uniprocesador" (un núcleo de CPU sin hyperthreading), si tiene más de un hilo de software, siempreser intercalado Si tiene una CPU de 4 núcleos con hyperthreading, eso es 8 "subprocesos de hardware", lo que significa que la CPU puede ejecutar 8 subprocesos simultáneos de ejecución en el mismo instante, por lo que si tuviera 8 subprocesos de software tratando de ejecutarse, todos podrían ejecutarse a la vez ; pero si tuviera 9 subprocesos de software, uno de los subprocesos de hardware tendría que intercalar un par de subprocesos (el par exacto de subprocesos elegido dependería de la implementación del planificador del sistema operativo).
Hyperthreading, por otro lado, se refiere a una tecnología de hardware muy específica creada por Intel, que permite que un solo núcleo de procesador intercale múltiples hilos de ejecución de manera más eficiente. En otras palabras, una CPU con hyperthreading proporcionará un rendimiento que es algo mayor que una CPU que de otra manera es la misma pero sin hyperthreading, porque la CPU hyperthreaded podrá equilibrar simultáneamente dos (a veces más, pero hyperthreading generalmente es 2- manera) hilos de ejecución en un núcleo dado.
Sin embargo, hyperthreading es estrictamente más lento que tener núcleos físicos completamente separados, porque hay algunos tipos de operaciones que pueden alterar las ventajas de rendimiento de hyperthreading, mientras que hay menos operaciones que pueden causar un evento con núcleos completamente separados.
Tome el siguiente ejemplo, donde se supone que "1 núcleo" realiza exactamente lo mismo en todos los ejemplos:
Ejemplo 1: 2 núcleos, sin hyperthreading.
Ejemplo 2: 4 núcleos, sin hyperthreading.
Ejemplo 3: 2 núcleos con hyperthreading.
Ejemplo 4: 4 núcleos con hyperthreading.
En este caso, el ejemplo 4 siempre será el más rápido. El ejemplo 2 a veces puede ser tan rápido como el ejemplo 4, en cargas de trabajo que son extremadamente inadecuadas para aprovechar las optimizaciones de hyperthreading.
El Ejemplo 3, por otro lado, podría a veces, en cargas de trabajo donde el hipertrachado es más ventajoso, ser casi tan rápido como el Ejemplo 2, aunque tenga la mitad de núcleos físicos.
El Ejemplo 1, por supuesto, será el más lento de todos los ejemplos, pero a veces puede ser tan rápido como el Ejemplo 3, cuando se ejecuta una carga de trabajo poco adecuada para hyperthreading.
En los puntos de referencia del mundo real con las CPU Intel modernas, generalmente encontramos que el hyperthreading produce, en términos muy generales, una mejora del rendimiento del 20% al 40% en comparación con no hyperthreading (con el caso de "no hyperthreading" siendo comparado al deshabilitar la función hyperthreading en el BIOS). Ocasionalmente habrá cargas de trabajo donde la desactivación de hyperthreading muestra una ventaja de rendimiento , pero estas cargas de trabajo pueden ser raras en el uso real. Pero, si tuviera que elegir entre 4 núcleos con hyperthreading u 8 núcleos, suponiendo que cada núcleo tenga el mismo rendimiento, elegiría la CPU de 8 núcleos cada vez.
Multithreading es un término para el procesamiento paralelo en el nivel del sistema operativo. El procesador no tiene nada que ver con multihilo.
Hyperthreading es un concepto de Intel que implementa el procesamiento "simultáneo" de múltiples subprocesos en un solo núcleo de procesador. El sistema operativo ve dos núcleos de procesador, aunque solo hay un núcleo físico.