¿Qué es el Hyperthreading?

Un técnico que sostiene una CPU sobre una placa base.
Maha Heang 245789 / Shutterstock.com

Hyperthreading fue una vez una característica que solo se encontraba en las CPU profesionales de alta gama . Sin embargo, Hyperthreading ahora también se encuentra en las CPU de consumo convencionales. Entonces, ¿qué es exactamente Hyperthreading? ¿Debería buscarlo en su próxima CPU?

¿Qué es un hilo de software?

Un subproceso de software es una secuencia de instrucciones procesadas por una CPU. Es la unidad básica de instrucciones programadas administradas por el  programador. El programador es un componente del sistema operativo que asigna recursos de hardware a los diversos tipos de software que se ejecutan en una computadora.

Cada aplicación que se ejecuta en su computadora existe como uno o más procesos. Los subprocesos son efectivamente segmentos de estos procesos enviados a la CPU para su ejecución. El programador asigna rápidamente subprocesos de diferentes programas en ejecución para garantizar que cada uno obtenga los recursos que necesita para ejecutarse en tiempo real.

Así es como su computadora puede “realizar múltiples tareas” y (por ejemplo) ejecutar un procesador de texto mientras también reproduce música y descarga un videojuego en segundo plano. Técnicamente, un núcleo de CPU no hace todos estos trabajos al mismo tiempo.

Entonces, si su sistema solo tiene una CPU de un solo núcleo, está haciendo malabarismos rápidamente con varios conjuntos de instrucciones, cambiando tan rápidamente entre ellos que para nuestros lentos cerebros humanos todo parece suceder en paralelo.

Relacionado:  Cómo numerar o etiquetar ecuaciones en Microsoft Word

Verdadero procesamiento paralelo en computadoras domésticas

Durante la mayor parte de la historia de la informática personal, su computadora solo tenía un núcleo de CPU. Bueno, en ese entonces no hablábamos de “núcleos” ya que solo había uno y era toda la CPU. Sin embargo, a mediados de la década de 2000, los fabricantes de CPU tuvieron la brillante idea de incluir dos CPU completas en un paquete de CPU. Estas CPU de doble núcleo podrían procesar dos hilos de instrucciones al mismo tiempo. Esto significaba que, por ejemplo, su videojuego podría tener el 100% de un núcleo y su sistema operativo podría tener el otro núcleo para sí mismo.

Hoy en día, los recuentos de núcleos de CPU están aumentando rápidamente. Las CPU convencionales con 6, 8 e incluso 10 núcleos son comunes. Las CPU de gama alta ofrecen docenas de núcleos y las CPU como el AMD Threadripper 3990X están repletas de la friolera de 64 núcleos.

El desarrollo de software también ha cambiado para aprovechar mejor toda esta potencia de CPU paralela. Las últimas consolas de videojuegos también están equipadas con ocho núcleos de CPU, por lo que los videojuegos que pueden hacer uso de tantos núcleos se están volviendo comunes rápidamente.

Poner núcleos de CPU en overdrive con Hyperthreading

Una CPU tradicional solo puede manejar un único subproceso, pero si tiene muchos núcleos de CPU diferentes en su sistema, puede manejar un número de subprocesos igual al número de núcleos que tiene. Esto parece estar bien, pero presenta un problema importante.

No todos los subprocesos requieren la misma cantidad de potencia de procesamiento. Por ejemplo, un subproceso que procesa video utilizará el 100% de la capacidad disponible del núcleo de la CPU, pero el subproceso que ejecuta su procesador de texto o página web de redes sociales solo necesita una fracción de la potencia que ofrece un núcleo de CPU moderno.

Relacionado:  Novedades de Chrome 89, disponible ahora

Asimismo, un videojuego puede tener múltiples hilos que se ejecutan en paralelo, como uno que maneja la física y otro que maneja la inteligencia artificial de los personajes. Estos son trabajos importantes, pero es posible que no necesiten todo un núcleo para funcionar correctamente.

Esto conduce a una situación en la que todos los núcleos de su CPU pueden estar ocupados con subprocesos, pero no le brindan toda la potencia de procesamiento que pueden. Ahí es donde entra en juego el hiperthreading.

El nombre genérico adecuado para hyperthreading es multiproceso simultáneo . «Hyperthreading» es en realidad un nombre de marketing patentado utilizado por Intel, pero al igual que con «Hoover», se ha convertido en un lenguaje común para la tecnología en su conjunto.

Una CPU que está equipada con los circuitos internos adecuados para permitir el hyperthreading puede ejecutar dos subprocesos separados al mismo tiempo. No es cambiar entre ellos como con la multitarea tradicional de un solo núcleo. Está ejecutando cada uno en paralelo.

Para el sistema operativo, parece que cada núcleo de CPU físico es en realidad dos núcleos, lo que le permite al programador asignar dos subprocesos a cada uno. Sin embargo, la cantidad total de potencia de procesamiento por núcleo sigue siendo exactamente la misma.

Por qué querrías Hyperthreading

Como mencionamos anteriormente, el hyperthreading se trata principalmente de asegurarse de no dejar la potencia de procesamiento sobre la mesa. Dejar que cada núcleo maneje dos subprocesos hace que sea más fácil para su sistema operativo aprovechar al máximo su hardware y evita una situación en la que todos los núcleos no se ejecutan cerca o a plena capacidad.

Relacionado:  Cómo encontrar descargas en una Mac

En el pasado, solo el software profesional, como los editores de video o los trabajos de procesamiento de datos científicos, realmente necesitaban hyperthreading. Los usuarios convencionales apenas tenían suficientes aplicaciones ejecutándose para necesitar tantos hilos. Los videojuegos también han tardado mucho en adoptar el uso de múltiples subprocesos, pero ahora los sistemas de juego de 8 núcleos son la corriente principal y el número de subprocesos seguirá aumentando.

Como tal, las nuevas CPU convencionales ahora cuentan con hyperthreading y es una característica que la mayoría de los usuarios deberían desear. Sin embargo, si obtiene una buena oferta en una CPU más antigua que no tiene hyperthreading, aún no es tan esencial que no pueda permitirse dejarla pasar.