Qué es el Hyper Threading y para qué sirve?
Qué es el Hyper Threading y para qué sirve?
Un día estamos aburridos, entramos al administrador de tareas de nuestro ordenador Windows y aparece que tenemos un procesador de 2 núcleos físicos y 4 lógicos…nos alegramos de tener un procesador de 4 núcleos cuando en la ficha de especificaciones de nuestro ordenador ponía 2 núcleos. Puede que haya sido un problema de fábrica…pero no, en realidad tenemos 2 núcleos. Los 4 núcleos lógicos se deben al Hyper Threading que es un sistema usado principalmente por Intel® que lo que hace es “engañar” de cierta forma a nuestro sistema diciendole que tiene 4 núcleos (de ahí que sean lógicos). Esto provoca que los procesos se repartan entre esos núcleos lógicos que se corresponde cada uno con hilo de ejecución o thread en inglés. Así no parece que tenga mucho sentido, pero vamos a usar el siguiente ejemplo.
Apps multi hilo
Imagina que tenemos una caja de chocolates y estamos 2 personas. Cada persona tiene una boca y 2 manos, pero puede comer los chocolates usando una mano o dos. Usando una mano, habrá momentos en los que la boca se encuentre inactiva debido a que la mano aún no le proporcionó el siguiente chocolate. Sin embargo usando dos manos podemos llevar un chocolate con una mientras la otra prepara otra ración. Así cuando la boca haya terminado con la primera ración, tenemos la segunda mano con la siguiente ración preparada. Con esto conseguimos que la boca no esté en ningún momento inactiva.
Por si no lo habéis notado, en este ejemplo las bocas serían los núcleos físicos y las manos, los lógicos o hilos. La caja de chocolates sería una aplicación que puede usar varios hilos gracias a la paralelización. Pero también tenemos apps que están hechas para usar un único hilo. Como ejemplo de una app de ese tipo usaremos un helado.
Apps mono hilo
Un helado tienes que comerlo de arriba hacia abajo, si empiezas por abajo pues te complicarás la vida y mucho… En cuanto a las manos, se podrían usar las dos para sujetar el helado pero con una sobra y seremos más eficientes usando la otra mano para hacer otras cosas. Así es como se utiliza el Hyper Threading en una app mono hilo, no se usa para la app en sí sino para otros procesos ajenos a la misma cuando el núcleo esté esperando nuevas instrucciones de la app en cuestión (es decir, inactivo).
Con este último ejemplo concluimos entonces que esta función viene bastante bien en general pero es mucho más útil con apps multihilo que con apps de un solo hilo.
Fuente para la información: Intel®