Saltar al contenido
Inicio

Multihilo simultáneo (SMT): definición y funcionamiento en CPU

Descubre qué es el SMT en CPU, cómo funciona y por qué mejora el rendimiento al ejecutar varios hilos simultáneamente en procesadores modernos.

El multithreading simultáneo, acrónimo de SMT (simultaneous multithreading), es una técnica para mejorar la eficiencia global de las CPU superescalares con multithreading de hardware. A diferencia de un procesador que ejecuta un solo hilo por núcleo, el SMT permite que varios hilos de ejecución independientes compartan el mismo núcleo y aprovechen mejor los recursos que ofrecen las arquitecturas informáticas modernas.

El concepto de multithreading es similar al de multitarea, pero se implementa a nivel de hilo de ejecución en los procesadores superescalares modernos. Su objetivo no es que todos los hilos avancen exactamente al mismo ritmo, sino aumentar el rendimiento total del chip y reducir los periodos en los que parte del hardware queda sin uso.

Cómo funciona el SMT

En un núcleo con SMT, el procesador mantiene el estado de más de un hilo al mismo tiempo y puede emitir instrucciones de distintos hilos dentro del mismo ciclo. Cuando un hilo queda esperando datos de memoria, su hueco puede ser aprovechado por otro hilo que sí tenga trabajo listo para ejecutar.

Esto resulta especialmente útil en situaciones como fallos de caché, dependencias entre instrucciones, ramas mal predichas o esperas largas de memoria. En todos esos casos, una parte del núcleo puede quedar infrautilizada si solo se ejecuta un hilo. El SMT intenta llenar esos huecos con instrucciones procedentes de otros hilos para aumentar el rendimiento global.

No obstante, SMT no duplica todo el procesador. Comparte muchas estructuras internas, como ciertas unidades de ejecución, colas de instrucciones y parte de la lógica de control. Por eso, su eficacia depende mucho del tipo de carga de trabajo: en algunos programas ofrece una mejora clara, mientras que en otros la ganancia es pequeña o incluso puede reducir el rendimiento si los hilos compiten demasiado por los mismos recursos.

Formas de aumentar el paralelismo en un chip

En el diseño de procesadores, hay dos formas de aumentar el paralelismo en el chip con menos requisitos de recursos:

  1. Técnica superescalar: que trata de aumentar el paralelismo a nivel de instrucción (ILP) ejecutando múltiples instrucciones al mismo tiempo (denominado: simultáneamente); despachando "simultáneamente" instrucciones (denominado: despacho de instrucciones) a múltiples unidades de ejecución redundantes construidas dentro del procesador.
  2. Técnica de multihilo a nivel de chip (CMT): utiliza el paralelismo a nivel de hilo (TLP) para ejecutar instrucciones de múltiples hilos dentro de un chip de procesador al mismo tiempo.

Tipos de multithreading y relación con los multinúcleo

Hay muchas maneras de soportar más de un hilo dentro de un chip, a saber:

  1. Multithreading intercalado (IMT) : Emisión intercalada de múltiples instrucciones de diferentes hilos, también denominada multithreading temporal. Puede dividirse en multithreading de grano fino o multithreading de grano grueso en función de la frecuencia de las emisiones intercaladas. El multithreading de grano fino emite instrucciones para diferentes hilos después de cada ciclo, mientras que el multithreading de grano grueso sólo cambia para emitir instrucciones de otro hilo cuando el hilo que se está ejecutando en ese momento provoca algunos eventos de larga latencia (como un fallo de página, etc.). El multithreading de grano grueso es más común para un menor cambio de contexto entre hilos. Para los procesadores con un pipeline por núcleo, el multithreading intercalado es la única forma posible, porque sólo puede emitir hasta una instrucción por ciclo.
  2. Multihilo simultáneo (SMT): Emitir varias instrucciones de varios hilos en un ciclo. El procesador debe ser superescalar para hacerlo. En la práctica, esto permite que un núcleo mezcle instrucciones procedentes de distintos hilos cuando tiene huecos de ejecución disponibles.
  3. Multiprocesamiento a nivel de chip (CMP o procesador multinúcleo): integra dos o más procesadores superescalares en un chip, cada uno de los cuales ejecuta hilos de forma independiente.
  4. Cualquier combinación de IMT/SMT/CMP

Diferencias clave entre IMT, SMT y CMP

La forma más sencilla de distinguir estas técnicas es fijarse en dos cosas: cuántas instrucciones puede emitir el procesador en un ciclo y de cuántos hilos proceden esas instrucciones. En el IMT, el núcleo alterna entre hilos de forma intercalada; en el SMT, un mismo núcleo superescalar puede emitir varias instrucciones de varios hilos en un solo ciclo; y en el CMP, el paralelismo se consigue porque hay varios núcleos físicos dentro del chip, cada uno con su propia ejecución independiente.

En otras palabras, el IMT busca aprovechar mejor un núcleo cuando solo puede emitir pocas instrucciones por ciclo; el SMT intenta llenar huecos de ejecución dentro de un núcleo más complejo; y el CMP aumenta el paralelismo total añadiendo más núcleos al procesador. Por eso, estas técnicas no son excluyentes y, en muchos diseños modernos, se combinan para obtener un mejor equilibrio entre rendimiento, consumo y coste de fabricación.

Ventajas y limitaciones del SMT

  • Mejor uso del hardware: reduce los tiempos en los que las unidades del núcleo quedan ociosas.
  • Más rendimiento por núcleo: puede aumentar el número de instrucciones completadas por ciclo en cargas adecuadas.
  • Coste relativamente contenido: ofrece una mejora interesante sin necesidad de duplicar todo el núcleo.
  • Depende de la aplicación: si los hilos compiten por los mismos recursos, la mejora puede ser pequeña.
  • No sustituye a más núcleos físicos: SMT mejora el aprovechamiento del procesador, pero no equivale a un procesador con más núcleos reales.

Por este motivo, el SMT suele combinarse con otras técnicas de diseño, como ejecución fuera de orden, predicción de saltos más precisa y jerarquías de caché eficientes. En conjunto, estas soluciones permiten que las CPU modernas mantengan un buen nivel de rendimiento incluso cuando una parte de la ejecución se detiene temporalmente.

Ejemplos de CPUs SMT modernas

  1. El Intel Pentium 4 fue el primer procesador moderno de sobremesa que implementó el multihilo simultáneo, a partir del modelo de 3,06 GHz lanzado en 2002, y desde entonces se introdujo en varios de sus procesadores. Intel denomina a esta funcionalidad Hyper-Threading Technology (HTT), y proporciona un motor básico de dos hilos SMT. Intel afirma que la velocidad mejora hasta un 30% en comparación con un Pentium 4 idéntico sin SMT.
  2. Los últimos diseños de la arquitectura MIPS incluyen un sistema SMT conocido como "MIPS MT".
  3. El IBM POWER5, anunciado en mayo de 2004, se presenta como un DCM de doble núcleo, o un MCM de cuatro u ocho núcleos, y cada núcleo incluye un motor SMT de dos hilos. La implementación de IBM es más sofisticada que las anteriores, ya que puede asignar una prioridad diferente a los distintos hilos, es más fina y el motor SMT puede activarse y desactivarse dinámicamente, para ejecutar mejor aquellas cargas de trabajo en las que un procesador SMT no aumentaría el rendimiento. Se trata de la segunda implementación de IBM del multithreading por hardware generalmente disponible.
  4. El Intel Atom, lanzado en 2008, es el primer producto de Intel que cuenta con SMT (comercializado como Hyper-threading) sin soporte de reordenación de instrucciones, ejecución especulativa o renombramiento de registros.

Páginas relacionadas

Preguntas y respuestas

P: ¿Qué es el multihilo simultáneo?

R: El multihilo simultáneo (SMT) es una técnica para mejorar la eficiencia general de las CPU superescalares con multihilo de hardware. Permite múltiples hilos de ejecución independientes para utilizar mejor los recursos que proporcionan las arquitecturas informáticas modernas.

P: ¿En qué se parece el SMT a la multitarea?

R: El multihilo es similar en concepto a la multitarea, pero se implementa a nivel de hilo de ejecución en los procesadores superescalares modernos, mientras que la multitarea se implementa a nivel de proceso.

P: ¿Cuáles son las dos formas de aumentar el paralelismo en chip?

R: Las dos formas de aumentar el paralelismo en chip son la técnica superescalar y la multitarea a nivel de chip (CMT).

P: ¿Cuáles son los distintos tipos de multihilo a nivel de chip?

R: Los distintos tipos de multihilo a nivel de chip incluyen el multihilo intercalado (IMT), el multihilo de grano fino, el multihilo de grano grueso y el multihilo simultáneo (SMT).

P: ¿Cómo se puede distinguir entre IMT/SMT/CMP?

R: El factor clave para distinguir entre IMT/SMT/CMP es observar cuántas instrucciones puede emitir el procesador en un ciclo y de cuántos hilos proceden las instrucciones.

P: ¿Qué tipo de procesador debe utilizarse para SMT?

R: Para SMT debe utilizarse un procesador superescalar.

P: ¿Qué tipo de procesador utiliza el multiprocesamiento a nivel de chip?

R: El multiprocesamiento a nivel de chip utiliza procesadores multinúcleo que integran dos o más procesadores superescalares en un chip, cada uno de los cuales ejecuta hilos de forma independiente.

Artículos relacionados

Autor

AlegsaOnline.com Multihilo simultáneo (SMT): definición y funcionamiento en CPU

URL: https://es.alegsaonline.com/art/90586

Compartir