Simultaneous Multi-Threading (SMT) es una técnica de microarquitectura que permite a un único núcleo de procesador ejecutar instrucciones de múltiples hilos de ejecución (threads) de forma simultánea en cada ciclo de reloj. A diferencia del multi-threading a nivel de sistema operativo o de proceso, SMT opera a nivel de hardware, aprovechando las unidades de ejecución o puertos de emisión que de otro modo estarían ociosos durante la ejecución de un solo hilo. Esto se logra manteniendo múltiples estados de registro (program counter, registros de propósito general) para cada hilo lógico, mientras que las unidades funcionales (ALUs, FPUs, etc.) y las cachés se comparten dinámicamente entre ellos. El objetivo principal es ocultar la latencia de la memoria y los stalls de ejecución, manteniendo las unidades de ejecución del núcleo lo más ocupadas posible.

La implementación más conocida de SMT en el mundo real es Intel Hyper-Threading Technology (HT Technology), presente en sus procesadores desde la arquitectura NetBurst (Pentium 4) y evolucionando hasta las arquitecturas modernas como Skylake, Coffee Lake y Alder Lake. AMD también implementa SMT en sus arquitecturas Zen (Zen, Zen 2, Zen 3, Zen 4), donde cada núcleo físico puede presentar dos hilos lógicos al sistema operativo. Otros ejemplos incluyen IBM POWER processors, que han utilizado SMT (hasta 8 hilos por núcleo en POWER9/10) para cargas de trabajo de servidor intensivas, y Oracle SPARC processors. Estos sistemas operativos y hypervisors son conscientes de SMT y programan los hilos lógicos como si fueran núcleos independientes, aunque comparten recursos físicos.

Para un Arquitecto de Sistemas, SMT es un factor crítico en la planificación de la capacidad y el diseño de la infraestructura. Si bien SMT puede ofrecer una mejora significativa en el rendimiento para cargas de trabajo con paralelismo a nivel de instrucción limitado o alta latencia de memoria, no proporciona el doble de rendimiento por núcleo físico. La contención por recursos compartidos como las cachés L1/L2, los buffers de reordenamiento y las unidades de ejecución puede introducir latencia y degradar el rendimiento para cargas de trabajo intensivas en CPU o con alta sensibilidad a la latencia. Es crucial entender que un 'núcleo lógico' no es un 'núcleo físico'. En entornos de virtualización o contenedores, la asignación de vCPUs debe considerar la topología SMT para evitar 'noisy neighbor' issues y garantizar un rendimiento predecible. Para aplicaciones de alto rendimiento o seguridad (ej. mitigación de ataques de side-channel como Spectre/Meltdown), a menudo se recomienda deshabilitar SMT o fijar procesos a núcleos físicos específicos para garantizar aislamiento y rendimiento determinista, lo que implica un trade-off entre rendimiento bruto y seguridad/predictibilidad.