En este artículo vamos a dedicar un rato a explicar que son los hilos de un procesador o también llamados threads en inglés o subprocesos en programación, para así identificar las diferencias fundamentales entre estos y los núcleos del procesador. Entre los usuarios menos expertos e incluso los más avanzados, aún existe bastante confusión acerca de este tema. Por eso nos hemos propuesto aclara estos términos en la medida de los posible.
Este concepto de hilos de procesamiento no es fundamental saberlo a la hora de comprar un procesador para un usuario normal. En la mayoría de ocasiones, mejor más que menos, eso se cumple casi siempre. Donde sí que necesitamos saber bien que son los hilos, es en los trabajos de desarrollo de programas. Dependiendo de cómo esté programada y compilada una aplicación, tendrá una ejecución más optimizada para procesadores de más hilos que núcleos. Y es aquí a donde trataremos de llegar en nuestra explicación.
Índice de contenidos
Qué son los núcleos de un procesador
Vamos a comenzar explicando qué son los núcleos de nuestro procesador, así tendremos este conocimiento previo para no confundirnos.
Sabemos que un procesador se encarga de llevar a cabo y ejecutar las instrucciones de los programas que están cargados en la memoria RAM de nuestro ordenador. Por él pasan prácticamente todas las instrucciones que son necesarias para realizar las típicas tareas en nuestro PC, navegar, escribir, ver fotos, etc. En el apartado físico, un procesador es un circuito integrado formado por millones de transistores que forman puertas lógicas para dejar pasa o no los bits de datos en forma de energía, sin más.
Pues este pequeño chip alberga en su interior distintos módulos que podemos llamar núcleos, además de otros elementos que ahora no nos interesan. Los procesadores de hace unos años tenían uno solo de estos núcleos, y eran capaces de procesar una instrucción por cada ciclo. Estos ciclos se miden en Megahertzios (MHz), mientras más MHz, mas instrucciones podremos hacer cada segundo.
Ahora no solo tenemos un núcleo, sino varios. Cada núcleo representa un subprocesador, es decir, que cada uno de estos subprocesadores ejecutará una de estas instrucciones, pudiendo así ejecutar varias de ellas en cada ciclo de reloj con una CPU de varios núcleos. Si tenemos un procesador de 4 núcleos, podremos ejecutar 4 instrucciones de forma simultánea en lugar de una sola. Entonces, la mejora de rendimiento se cuadriplica. Si tenemos 6, pues 6 instrucciones al mismo tiempo. De esta forma es como los procesadores actuales son muchísimo más potentes que los antiguos.
Y recuerda, estos núcleos están presentes físicamente en nuestro procesador, no es algo virtual ni creado por código.
Qué son los hilos de procesamiento o threads
Los hilos, threads o subprocesos no forman parte física del procesador, no al menos en lo que se refiere a más cantidad de núcleos o algo por el estilo.
Podemos definir un hilo de procesamiento como el flujo de control de datos de un programa. Es un medio que permite administrar las tareas de un procesador y de sus diferentes núcleos de una forma más eficiente. Gracias a los hilos, las unidades mínimas de asignación, que son las tareas o procesos de un programa, pueden dividirse en trozos para así optimizar los tiempos de espera de cada instrucción en la cola del proceso. Estos trozos se llaman subprocesos o threads.
Dicho de otra forma, cada hilo de procesamiento contiene un trozo de la tarea a realizar, algo más simple de realizar que si introducimos la tarea completa en el núcleo físico. De esta forma la CPU es capaz de procesar varias tareas al mismo tiempo y de forma simultánea, de hecho, podrá hacer tantas tareas como hilos tenga, y normalmente son una o dos por cada núcleo. En los procesadores que tienen por ejemplo 6 núcleos y 12 hilos serán capaces de dividir los procesos en 12 tareas distintas en lugar de solamente 6.
Esta forma de trabajar hace que los recursos del sistema sean administrados de forma más equitativa y eficiente. Ya sabes…el divide y vencerás de toda la vida. Estos procesadores se denominan multi-hilo. Por ahora, lo que debemos tener claro es que un procesador con 12 hilos, no va a tener 12 núcleos, los núcleos son algo de origen físico y los hilos algo de origen lógico.
Eso seguramente haya quedado algo abstracto y difícil de entender, así que vamos a ver cómo se traduce si hablamos de la arquitectura de un programa en nuestro ordenador.
Los programas, procesos e hilos
Todos sabemos qué es un programa, es un código que se almacena en nuestro ordenador y que está destinado a llevar a cabo alguna tarea concreta. Una aplicación es un programa, un driver también lo es e incluso el sistema operativo es un programa capaz de ejecutar otros programas en su interior. Todos ellos están almacenados en forma binaria, ya que el procesador solo entiende de unos y ceros, corriente / no corriente.
Los procesos del programa
Para ejecutar un programa, este se carga en memoria, la memoria RAM. Este programa es cargado mediante procesos, los cuales llevan su código binario asociado y los recursos que necesita para operar, que serán asignados de forma “inteligente” por el sistema operativo.
Los recursos básicos que necesita un proceso son, un contador de programa, y una pila de registros.
- Contador de programa (CP): se llama puntero de instrucciones, y realiza el seguimiento de la secuencia de instrucciones que se vayan procesando.
- Registros: es un almacén ubicado en el procesador en donde se puede guardar una instrucción, una dirección de almacenamiento o cualquier otro dato.
- Pila: es la estructura de datos que almacena la información relativa a las instancias que un programa tiene activas en el ordenador.
Entonces cada programa está dividido en procesos, y está almacenado en un lugar determinado en memoria. Además, cada proceso se ejecuta de forma independiente, y esto es muy importante de entender porque así es como el procesador y el sistema son capaces de ejecutar varias tareas al mismo tiempo, lo que denominamos sistema multitarea. Este sistema de procesamiento es el culpable de que podamos seguir trabajando en nuestro PC, aunque un programa se haya quedado bloqueado.
Los hilos de un proceso
Aquí es donde hacen acto de presencia los hilos de procesamiento, denominados subprocesos en los sistemas operativos. Un hilo es la unidad de ejecución de un proceso. Podemos dividir el proceso en subprocesos, y cada uno de ellos será un hilo de ejecución.
Si un programa no es multi-hilo, los procesos dentro de él solamente tendrán un hilo, así que solamente se podrán procesar de una sola vez. Por el contrario, si tenemos procesos multi-hilo, estos podrán dividirse en varios trozos, y cada uno de esos hilos comparte los recursos asignados al proceso. Por eso dijimos que la ejecución en múltiples hilos es más eficiente.
Además, cada hilo cuenta con su propia pila de registros por lo que podrán procesarse dos o más de ellos al mismo tiempo, al contrario que un solo proceso, que tendrá que ejecutarse todo de una sola vez. Los subprocesos son tareas más sencillas que permiten ejecutar un proceso de forma dividida. Y esta es básicamente la función final de los hilos de procesamiento. Cuantos más hilos, mayor división de procesos, y mayor volumen de cálculos simultáneos y entonces, mayor eficiencia.
Todavía no hemos terminado, aún tenemos la pregunta pendiente de ¿Qué ocurre entonces con un núcleo con doble hilo? Ya dijimos que cada núcleo es capaz de ejecuta una sola instrucción a la vez. La CPU cuenta con un complejo algoritmo que divide de la forma más eficiente posible los tiempos de ejecución, así asigna a cada tarea un determinado intervalo de ejecución. El cambio entre tareas es tan rápido, que dará la sensación de que el nucleo ejecuta tareas de forma paralela.
¿Podemos ver esos hilos o subprocesos en el sistema?
No de una forma demasiado detallada, pero si, podremos verlos, tanto en Windows como Mac.
En el caso de Windows, tan solo tendremos que abrir al administrador de tareas y situarnos sobre “rendimiento”. Luego pulsaremos abajo en el enlace de “monitor de recursos”. En esta nueva ventana tendremos dividido cada proceso en consumo de la CPU y en subprocesos (threads), estos será los hilos.
En el monitor de actividad de Mac, tendremos directamente los subprocesos enumerados en la pantalla principal.
Con esto finalizamos nuestro artículo sobre qué son los hilos de procesamiento de una CPU. Ciertamente es un tema algo complejo de explicar y bastante abstracto, especialmente para usuarios que no comprendan completamente cómo funciona un procesador. Pero en este caso tenemos buenas noticias porque también tenemos un artículo bastante bueno hablando de cómo funciona un procesador y cómo se realiza el ciclo de instrucción completo.
Visita nuestros artículos sobre:
Esperamos que todo haya quedado más o menos claro, y agradecemos que nos hayas elegido para saber más sobre este tema.