Habíamos visto en un post anterior, los bloques básicos que constituyen la arquitectura de una CPU, y de paso nos habíamos podido hacer una idea de como funciona la CPU. Sin embargo, las CPUs modernas son mucho más complejas e incluyen varios de estos bloques básicos, y aunque no voy a pasar a describir en profundidad la arquitectura de las CPUs modernas, si creo que es el momento de introducir dos conceptos que oiremos mucho: Los núcleos e hilos de un procesador.

Los núcleos (cores)

¿Qué es realmente un núcleo?. Un núcleo es el componente que ejecuta las instrucciones, que es la función básica de la CPU. Si utilizamos la arquitectura básica de la CPU que vimos en el post anterior, el núcleo sería la unidad de control.

A principios de este siglo empezaron a llegar al mercado los procesadores con más de un núcleo, en inglés “core”, que fueron llamados Multi core. Lógicamente, los del siglo pasado quedaron con el nombre de Single core, ya que entonces sólo tenían un núcleo. Hoy en día encontramos procesadores con hasta 10 núcleos o más, y si hablamos de GPUs…, todavía muchos más.

En cualquier caso, puedo ejecutar una instrucción por núcleo a la vez, con lo que si tengo varios núcleos podré ejecutar tantas instrucciones a la vez como núcleos tenga. Estaría procesando instrucciones en paralelo con un único procesador, anteriormente, antes de que existiera la CPU multicore, para realizar procesamiento paralelo estábamos obligados a utilizar varias CPUs. Y como podrás imaginarte, el procesamiento paralelo aumenta considerablemente el rendimiento.

Los Hilos (Thread)

¿Y los hilos?, ¿qué son y para que valen?. Un hilo puede ser definido como el flujo de instrucciones para realizar una tarea. Recordemos que un núcleo puede ejecutar sólo una instrucción a la vez.

De esta forma, si tuviéramos un núcleo con dos hilos, podríamos ejecutar dos tareas simultáneamente. En realidad, como ya he dicho varias veces, sólo ejecutamos una instrucción por núcleo a la vez, entonces, ¿Cómo podemos ejecutar dos tareas simultáneamente con dos hilos y un solo núcleo?. En realidad, las tareas no se ejecutan simultáneamente, el núcleo va alternando las instrucciones que ejecuta de uno y otro hilo, y como lo hace a gran velocidad, tenemos la sensación de que ambos hilos se ejecutan a la vez, que ambas tareas se están ejecutando al mismo tiempo, aunque en realidad no es así.

Lo descrito en el párrafo anterior implementa la opción de multitarea por hardware, o si se prefiere, multihilo. Sin embargo, para aprovechar esta característica, el programa que ejecute las tareas tiene que haber sido programado haciendo uso de esta característica.

El multihilo puede activarse y desactivarse desde la BIOS.

Y un último apunte: Quizás estés pensando que tú ya tenias multitarea desde hace mucho tiempo, con tu ordenador de toda la vida, con un núcleo y un hilo. Vale, esa multitarea era por software, y sigue estando hoy en día. El sistema operativo se ocupa de distribuir el tiempo de procesador entre las distintas tareas de acuerdo a unas prioridades.