Así funciona el HyperThreading, la característica que hace volar a tu procesador Intel

Escrito por Alberto García
Hardware

El HyperThreading es una tecnología propietaria de Intel que fue introducida en sus procesadores para servidores en 2002, y que más adelante se fue abriendo paso en algunos Pentium 4, aunque se dejó de aplicar en ellos y no volvieron a cobra protagonismo hasta los primeros Intel Core en 2009 basados en la arquitectura Nehalem, que abriendo la puerta a los actuales i3, i5 e i7. ¿En qué consiste y qué beneficios tiene?

HyperThreading: duplicando virtualmente el número de núcleos del procesador

El HyperThreading tenía como objetivo solventar una de las principales limitaciones que tienen los procesadores, que sólo pueden ejecutar una instrucción por núcleo sin esta tecnología. El tema está en que esto ocurre tan rápido que los usuarios no nos damos cuenta, y no percibimos el ligero retraso que hay entre ejecutar una tarea u otra.

Este retraso se origina por la forma en la que los datos de cada programa son enviados al procesador. Cada canal de datos (hilo, o thread en inglés) es programado y ejecutado de manera individual en el núcleo. Con HyperThreading lo que se consigue es que cada núcleo asigne recursos a dos hilos a la vez. Gracias a esto, las tareas se organizan de manera más eficiente en el procesador, y éste está menos tiempo parado, por lo que las tareas se realizan más rápido.

hyperthreading-intel-i7-administrador-de-tareas-windows

Por tanto, si ponemos como ejemplo un procesador i7 de 4 núcleos, este tendrá 8 hilos, y por ello cuando abrimos el Administrador de Tareas de Windows aparecen 8 recuadros en el apartado de CPU (si sólo aparece un recuadro, hacemos click derecho en la gráfica, y le damos a “Cambiar gráfico a” y seleccionamos “Procesadores lógicos”). Esto no quiere decir que el procesador tenga 8 núcleos, sino que tiene 8 “núcleos lógicos”, y 4 físicos. O lo que es lo mismo, dos hilos por cada núcleo físico.

Beneficios del HyperThreading

Para tareas básicas, como navegar por la web o escribir en Word, no vamos a notar apenas diferencia. Los procesadores actuales son tan potentes que apenas se nota esta tecnología en tareas tan poco exigentes, a pesar de que donde más reluzca el HyperThreading sea en la multitarea.

procesador-intel

Donde realmente se nota el HyperThreading es en programas exigentes, como los de edición de imágenes y vídeo, renderización en 3D, descomprimir y comprimir archivos, o incluso videojuegos. Cualquier cosa que requiera potencia de procesador va a verse beneficiada de una gestión más eficiente de las tareas.

Es importante que el programa esté bien diseñado para trabajar con múltiples hilos. En videojuegos no se suele notar mucho la diferencia porque es raro ver juegos que aprovechen el 100% de la CPU, de ahí que ese sea el motivo de que los i5 sean la opción multinúcleo más eficiente en rendimiento/precio para videojuegos.

CPU hyperthreading Crysis3

Donde sí merece la pena contar con HyperThreading para jugar es en el caso de los i3 de dos núcleos, o en juegos realmente exigentes con el procesador, como ha sido el caso de Battlefield 4 o Crysis 3, que estaban muy bien optimizados, y donde los i7 tienen cierta ventaja con respecto a los i5 a nivel de rendimiento.

Fuente > ADSLZone

Continúa leyendo
  • nova6k0

    En realidad la tecnología HyperThreading de Intel se basa en la optimización del uso de los ciclos de reloj. Cuando se ejecuta una instrucción existen ciclos de reloj sin uso o muertos, y cuando se vuelve a ejecutar otra instrucción seguida ocurre lo mismo. Sin embargo si se optimiza ese uso (menos ciclos muertos y más útiles, por decirlo fácil) el rendimiento aumenta, porque se pueden ejecutar dos hilos por ciclo de reloj.

    Sería algo como:

    Sin HT:

    Instrucción 1:

    Ciclo 1
    Ciclo 2M
    Ciclo 3M,
    Ciclo 4
    Ciclo 5M
    Ciclo 6
    Ciclo 7M
    Ciclo 8
    Ciclo 9M
    Ciclo 10…

    Instrucción 2:

    Ciclo 1
    Ciclo 2
    Ciclo 3M,
    Ciclo 4
    Ciclo 5M
    Ciclo 6M
    Ciclo 7
    Ciclo 8M
    Ciclo 9
    Ciclo 10M…

    Con HT:

    Instrucción 1:

    Ciclo 1
    Ciclo 2M
    Ciclo 3
    Ciclo 4
    Ciclo 5M
    Ciclo 6
    Ciclo 7
    Ciclo 8
    Ciclo 9M
    Ciclo 10…

    Instrucción 2:

    Ciclo 1
    Ciclo 2
    Ciclo 3,
    Ciclo 4
    Ciclo 5M
    Ciclo 6M
    Ciclo 7
    Ciclo 8
    Ciclo 9
    Ciclo 10M…

    La M significa ciclo muerto, y el número la posición del ciclo.

    Como véis con HT hay menos ciclos muertos y más útiles.

    Esto a la vez optimiza el consumo, ya que un ciclo consume nada, pero cientos de ellos es un ahorro importante.

    Salu2

  • Yevon

    En la universidad hicimos pruebas de rendimiento del hyperthreading de intel con diferentes tipos de procesado, y en casi ningún caso mejoraba el rendimiento de forma demasiado destacable. Es decir, que si tienes 4 núcleos con hyperthreading, no esperes ni mucho menos que tarde la mitad en comparación con uno de 4 núcleos sin. Simplemente es lo que comenta nova6k0, aprovecha mas eficientemente el procesador y puede significar ganancias de 0 a un 15% en problemas concretos. En la publicidad prácticamente te lo pintan como si duplicaras núcleos, pero es solo eso, publicidad.

    • ilfyff

      No sé qué te están enseñando en la universidad, pero que no sepáis que el HyperThreading solamente mejora el rendimiento cuando se hace uso de muchos hilos simultáneos…
      HyperThreading mejora fácilmente un 20-30% el rendimiento cuando se le da chicha como mínimo a todos los núcleos (reales+virtuales).

      • Yevon

        No se si me has leido bien, pero en mi comentario ya daba por hecho el mutithreading (Es obvio que para un programa de un solo proceso no tiene ventajas en ese escenario). Aunque he metido la pata y he puesto un 4 en vez de un 8 al hacer la comparación jaja, corregido…

        No tan facilmente ni mucho menos obtienes mejoras de rendimiento, depende mucho del tipo de problema al que te afrontes, y precisamente no suelen ser los que hacen uso los programas del dia a dia (que hagan uso de threads). Simplemente he dicho que si, que es una mejora, pero que intel te lo hace pintar como si fueras a obtener el mismo resultado con un procesador de 8 núcleos como con uno de 4 + hiperthreading de 2 por núcleo.

        Para que se entienda la gente, es como decir que 4 personas inteligentes sacarán las cajas de un camión igual de rápido que 8 personas idiotas. No se va a dar el caso, por muy bien que se organicen, los 8 tienen el doble de patas y el doble de brazos reales. Los que son 4 inteligentes irán mas rapido que unos de 4 normales, pero ni se acercarán a la velocidad del grupo de 8.

  • newbie temido

    En este tema suelen los usuarios mezclar peras con manzanas, no confundan nucleos fisicos con nucleos logicos, HT como bien mencionaron mas abajo solo optimiza el uso de un SOLO nucleo fisico para el multi tasking, por lo que las comparativas correctas deben hacerse de nucleos fisicos a nucleos fisicos, así tenemos que un procesador de 4 nucleos fisicos con HT se desempeñara mejor que uno igualmente de 4 pero que no tiene HT, OBVIAMENTE un procesador de 8 nucleos fisicos sera mejor, subsecuentemente uno de 8 con HT sera mejor que el de 8 sin HT, un ejemplo mas concreto el i7 6700 es un procesador que jamas ha pretendido ser de 8 nucleos fisicos es un procesador de 4 nucleos fisicos y 8 nucleos logicos, eso lo aventaja por mucho en multitarea de su homologo el i5 de la misma generación, así de simple.