Multithreading: más potencia para los procesadores
Las aplicaciones y los juegos modernos suponen un reto cada vez mayor para el hardware. Además de los gráficos particularmente sofisticados y las enormes exigencias de memoria, la velocidad del núcleo del procesador es especialmente importante para trabajar sin problemas con un PC o un portátil. Para hacer frente a estos retos, los fabricantes de hardware desarrollan continuamente nuevas técnicas y arquitecturas para sus CPU. Una de estas técnicas es el multithreading. Con ella, el procesador consigue procesar varios hilos (una pequeña unidad de cálculo) más o menos simultáneamente. ¿Cómo funciona esto?
- Domina el mercado con nuestra oferta 3x1 en dominios
- Tu dominio protegido con SSL Wildcard gratis
- 1 cuenta de correo electrónico por contrato
¿Qué es el multithreading?
Para aumentar la velocidad del núcleo del procesador sin tener que cambiar la frecuencia del reloj, el multithreading permite a la CPU procesar varias tareas simultáneamente. Siendo más precisos: se procesan varios hilos al mismo tiempo. Un hilo puede entenderse como una hebra de un proceso. Los programas pueden dividirse en procesos y éstos, a su vez, en hilos individuales. Cada proceso consta de al menos un hilo.
Los procesos suelen procesarse de forma secuencial, es decir, un proceso tras otro. Esto no es óptimo, porque de esta manera las tareas tediosas bloquean el hardware. Si se necesita otro proceso de forma espontánea, este tiene que esperar su turno en la cola. Con el multithreading se procesan varios hilos de forma simultánea. Sin embargo, esta afirmación es solo parcialmente correcta: la simultaneidad de verdad solo puede garantizarse en raras ocasiones, aunque puede conseguirse en algunos casos.
De igual forma, la llamada pseudosimultaneidad también proporciona un aumento del rendimiento: el sistema organiza y calcula los hilos de forma tan inteligente que el usuario tiene la impresión de estar procesando simultáneamente. Esta forma de simultaneidad no debe confundirse con las capacidades de las CPU multinúcleo, en el que, si el sistema tiene varios microprocesadores, también se procesan varios procesos de forma simultánea.
Para que el multithreading se utilice eficazmente, el software debe estar preparado para ello. Si los desarrolladores no dividen (o no son capaces de dividir) sus programas en varios hilos, la tecnología no funcionará. Los gamers, por ejemplo, han comprobado a menudo que tienden a notar una caída del rendimiento cuando se activa el multithreading. En este caso, los juegos de ordenador no están diseñados con la tecnología de multithreading en mente. Por ello, el intento del sistema de procesar varios hilos simultáneamente tiene un efecto perjudicial.
Objetivos del multithreading
El objetivo final del multithreading es aumentar la velocidad de cálculo de un ordenador y, por tanto, su rendimiento. Para ello, se intenta optimizar la utilización de la CPU. En lugar de detenerse el sistema en un proceso durante mucho tiempo, aunque siga esperando datos, con el multithreading el sistema pasa rápidamente a la siguiente tarea. De este modo, apenas hay tiempos de espera.
Al mismo tiempo, el sistema reacciona más rápidamente a los cambios de prioridades. Cuando los usuarios o las aplicaciones necesitan repentinamente y sin planificación otra tarea, con la ayuda de los niveles de prioridad y los hilos cortos, el procesador también puede cambiar y dedicarse rápidamente a otra tarea.
La tecnología está diseñada principalmente para acelerar aplicaciones individuales que constan de varios procesos e hilos. De este modo, se pueden procesar varias tareas del mismo software más o menos en paralelo. Esto tiene sentido en la edición de vídeo, por ejemplo: una escena puede ser renderizada en segundo plano mientras el usuario está editando la siguiente escena.
Con el multithreading, los fabricantes de chips tienen la posibilidad de acelerar sus CPUs sin generar un consumo de energía mucho mayor. Mientras que las frecuencias de reloj más altas también generan más calor, que luego tiene que ser disipado de forma costosa, este no es el caso de los multithreading.
¿Cómo funciona el multithreading?
El multithreading es el resultado de una interacción entre el hardware y el software. Los programas y procesos se dividen en hilos individuales y la CPU los procesa en estas unidades más pequeñas. Se distingue entre el multithreading basado en hardware y el basado en software.
Basado en hardware
Los programas individuales proporcionan sus procesos divididos en hilos para el multithreading basado en hardware. El sistema operativo se encarga de la gestión de los hilos y decide qué hilo se transmite primero a la CPU. A continuación, el procesador procesa los hilos de forma simultánea o pseudosimultánea.
En la práctica, se pueden encontrar diferentes implementaciones de multithreading basadas en hardware.
Switch on Event Multithreading (SoEMT)
SoEMT trabaja con dos hilos: uno en primer plano y otro en segundo plano. El cambio entre los niveles (lo que se denomina cambio de contexto) tiene lugar a través de eventos. Un evento de este tipo puede ser, por ejemplo, la entrada del usuario, pero también el mensaje de que un hilo sigue esperando datos y, por tanto, no puede seguir procesándose. A continuación, el sistema cambia rápidamente al segundo hilo y mueve al primero a un segundo plano. El primer hilo solo se sigue procesando cuando llega la información requerida. Es entonces cuando el sistema reacciona rápidamente y crea una pseudosimultaneidad entre los hilos en primer y segundo plano.
El Switch on Event Multithreading también se conoce como Coarse-grained multithreading. Se denomina de grano grueso porque la técnica es más adecuada para tiempos de espera más largos. Mientras que otras técnicas reaccionan aún más rápido, SoEMT aprovecha sus fortalezas con bloques de hilos más grandes.
Time-Slice-Multithreading
Mientras que SoEMT activa el cambio entre hilos mediante un evento, con el time slicing se activan en intervalos de tiempo fijos. Aunque no haya terminado de procesar el primer hilo, el procesador alinea otro y solo vuelve a cambiar en el siguiente intervalo para seguir trabajando en el primer hilo. Cualquier progreso en el procesamiento de un hilo se guarda en la memoria RAM.
El reto consiste en elegir la longitud adecuada del intervalo. Si el intervalo es demasiado corto, los procesos apenas pueden avanzar de forma significativa. En cambio, si el intervalo es demasiado largo, se pierde la pseudosimultaneidad. En este caso, el usuario se daría cuenta de que los procesos se están procesando uno tras otro en lugar de en paralelo.
Simultaneous Multithreading (SMT)
La técnica Simultaneous Multithreading (SMT) garantiza una verdadera simultaneidad. Los pipelines acumulan los hilos que esperan a ser computados. El procesador procesa varios pipelines en paralelo. Así, en lugar de alternar entre dos hilos, las partes de los procesos se procesan simultáneamente. Un solo procesador actúa como varios procesadores (lógicos). En la práctica, la tecnología SMT está vinculada a la tecnología multinúcleo: con esta tecnología, un sistema con dos núcleos de procesamiento puede aparentar tener ocho núcleos hacia el exterior.
El fabricante de CPUs Intel tiene mucho éxito con la tecnología denominada Hyper-Threading (HTT). Mientras tanto, su competidor AMD también produce tecnologías semejantes. En ambos casos se trata de la técnica Simultaneous Multithreading.
Basado en software
Con el multithreading basado en software, la aplicación es la responsable de dividir los procesos en hilos. Los hilos llegan de manera individual al sistema operativo y al procesador. En este escenario, el hardware ni siquiera es consciente de las conexiones y trata cada hilo de forma individual. El sistema establece un nivel de prioridad para cada hilo. Los niveles más altos se procesan más rápidamente. Este sistema permite colar nuevos procesos que deben terminarse con rapidez. En el caso del proceso a largo plazo, solo se completa un hilo, lo que supone que los siguientes hilos acaben más atrás en la cola.
El multithreading basado en software es especialmente útil para sistemas con procesadores de un solo núcleo. Dado que los ordenadores modernos están ahora equipados con CPUs de mínimo dos núcleos, esta forma de multithreading es cada vez menos importante.
Multithreading vs. multitasking
Aunque las dos tecnologías pueden parecer similares a primera vista, el multitasking y el multithreading se basan en dos ideas diferentes. En principio, el multitasking solo significa que varios programas se ejecutan al mismo tiempo. La CPU cambia entre las tareas individuales. Sin embargo, las aplicaciones no se procesan simultáneamente (ni de forma simultánea ni de forma pseudosimultánea). Por regla general, el sistema operativo se encarga de la organización de las distintas tareas y asigna los procesos pendientes a la CPU. Para el usuario, parece que se están procesando varios programas simultáneamente, pero en realidad siempre se están alternando.
Si abres el administrador de tareas, puedes ver qué procesos tiene el sistema en ejecución uno al lado del otro. De igual manera, si abres el administrador de tareas de Mac, puedes echar un vistazo a cómo están organizadas las distintas tareas.
El multithreading busca un mayor grado de simultaneidad. Sin embargo, la tecnología trata principalmente de acelerar los programas individualmente. Mientras que el multitasking permite que diferentes programas se ejecuten a la vez, los hilos individuales para el multithreading se generan para un mismo programa. El procesamiento simultáneo de estas etapas del proceso hace que el software funcione más rápido.
El multithreading es una forma inteligente y económica de aumentar el rendimiento del procesador. Sin embargo, solo funciona si el software también está configurado para ello. Si quieres aumentar el rendimiento de tu ordenador sin utilizar el multithreading, también tienes otras alternativas. Sin embargo, si haces overclocking de la CPU, debes prestar mucha atención a la temperatura de la CPU, de lo contrario puedes hacer que todo tu sistema se paralice.