Repasamos la diferencia entre los hilos y núcleos de un procesador.

A menudo hay mucha confusión en torno a los núcleos y los hilos. Muchas personas no saben cuál es la diferencia y otro tanto no sabe lo que es exactamente cada cosa. Para entender realmente cómo funciona un procesador, es menester saber diferenciar los dos términos.

A nivel de usuario no es tan importante (más allá de saciar la curiosidad y de tener la capacidad para elegir qué comprar), pero a nivel de desarrollo es vital si queremos desarrollar una aplicación que realmente funciona bien a nivel de consumo de recursos.

Núcleos

Una de las cosas más sonadas en cuanto a CPU’s son los núcleos (‘cores’ en inglés). Los cores son, como veremos más adelante, como un subprocesador en sí mismo. Antes, los procesadores eran de un solo núcleo (single core), por lo que no podían realizar más que una tarea al mismo tiempo.

Como un núcleo es un procesador en sí mismo, una CPU multinúcleo de dos núcleos pueda ejecutar dos tareas al mismo tiempo.

Es como nosotros, que solo podemos comer una sola cosa al mismo tiempo porque solo tenemos una boca. Llegados a un punto, se pasó a lo que denominamos como CPU multinúcleo (más de un núcleo, que equivaldría a que nosotros tuviésemos dos bocas para comer).

intel amt 3

Una CPU con dos núcleos sí que podría realizar dos tareas al mismo tiempo, pero no más. Uno de cuatro, pues cuatro, y así de forma correlativa con tantos núcleos como incorpore. Tener dos núcleos equivaldría a tener dos manos.

Hilos

Los hilos (‘thread‘ en inglés) son otra cosa totalmente distinta a los núcleos, aunque a menudo se confunden. Se puede definir como el flujo de control de programa. Ayudan de forma directa a la manera en la que un procesador administra sus tareas. La función de los hilos se podría decir que hace que los ‘tiempos de espera’ entre procesos se aprovechen mejor.

Aunque un núcleo solamente pueda realizar una tarea al mismo tiempo, se pueden usar los hilos para hacer creer al usuario (y al propio ordenador) que sí se puede hacer más de una cosa al mismo tiempo.

¿Y como es eso? Es muy simple: en vez de realizar una tarea por completo, divides la tarea en porciones (cada hilo se encarga de un aspecto concreto del programa), de modo que vas alternando entre porciones de tareas para que parezca que ambas se ejecutan al mismo tiempo.

cpu-564778_640

Es decir, hacemos un poco de un proceso y otro poco de otro proceso; cada uno de esos trozos se corresponde con el hilo. Así, no tenemos que esperar a que una tarea acabe para comenzar otra. El número de hilos corresponde de manera directa con el número de tareas que se pueden llevar a cabo de forma pseudoparalela (es decir, de forma ‘simultánea’).

Pongamos ahora, por ejemplo, que un programa tiene una tarea multihilo (dos, concretamente). Si nuestro procesador tiene dos hilos, podrá ejecutar estas tareas de forma simultánea. Además, accederán a los recursos del sistema de manera compartida, por lo que las tareas se realizan con un consumo de recursos inferior.

Generalmente por cada núcleo hay dos hilos (salvo excepciones)

con ht y sin ht

En el gráfico superior podemos ver lo que sería una definicion gráfica del uso de un procesador de 4 núcleos sin multi-hilo (imagen de arriba) y con multi-hilo (imagen de abajo). Las pelotas se corresponden con el número de tareas que puede procesador de forma pseudoparalela un mismo núcleo.

El doble de hilos no equivale al doble de núcleos

Esto de los hilos se le llama multi-threaded (también conocido como Hyperthread o HT en los procesadores de Intel), una tecnología que hace creer al ordenador por medio de software que tiene el doble de núcleos de los que realmente hay. Es lo que se llama procesador lógico, y por supuesto aun con el doble de procesadores, no se tiene el doble de rendimiento, ni siquiera tanto rendimiento como tendríamos con 4 núcleos físicos.

No obstante, esto no viene en todos los procesadores. El mío, por ejemplo, tiene 4 núcleos y 4 hilos, por lo que no se produce el multi-hilo. Aún teniéndolo, no sería compatible con todos los programas, pues el desarrollador tiene que haber diseñado la aplicación a conciencia. Y es ese precisamente una de las grandes ventajas del multi-hilo: el desarrollador tiene que haber hecho bien su trabajo.

Por otro lado, en caso de que tengamos multi-hilo, podemos activarlo o desactivarlo desde la BIOS, aunque viene por defecto activado (podría ser interesante porque hay programas muy antiguos que no lo soportan).

Noticias relacionadas