Spatial Multithreading (SMT) es una técnica avanzada de paralelismo a nivel de instrucción que permite a un único núcleo de procesador ejecutar múltiples hilos de ejecución de forma concurrente, asignando cada hilo a diferentes recursos funcionales (unidades de ejecución, registros, cachés) dentro del mismo núcleo. A diferencia del Time-Slice Multithreading, donde los hilos comparten recursos en el tiempo, SMT explota el paralelismo a nivel de instrucción (ILP) y el paralelismo a nivel de hilo (TLP) simultáneamente, manteniendo múltiples estados de programa (program counters, registros) activos y alternando entre ellos para mantener las unidades de ejecución ocupadas, incluso cuando un hilo está estancado esperando datos.
La implementación más conocida de Spatial Multithreading es Intel Hyper-Threading Technology (HT), que permite que un solo núcleo físico aparezca como dos núcleos lógicos al sistema operativo, duplicando el número de hilos que pueden ejecutarse concurrentemente. Otros ejemplos incluyen la implementación de SMT en procesadores IBM POWER (como POWER8 y POWER9, que soportan hasta 8 hilos por núcleo) y en arquitecturas ARM de alta gama. Estas implementaciones buscan maximizar la utilización de las unidades de ejecución, las cachés y los buses de memoria, reduciendo los ciclos de inactividad que ocurrirían si solo un hilo estuviera activo.
Para un Arquitecto de Sistemas, Spatial Multithreading es crucial porque impacta directamente en el rendimiento de las aplicaciones y en la eficiencia del hardware. Si bien SMT puede mejorar significativamente el throughput en cargas de trabajo con alto paralelismo y baja contención de recursos, también introduce trade-offs. Puede haber contención por recursos compartidos (como cachés L1/L2, ancho de banda de memoria) entre hilos lógicos, lo que puede degradar el rendimiento de aplicaciones sensibles a la latencia o con patrones de acceso a memoria intensivos. Un arquitecto debe considerar si habilitar SMT es beneficioso para la carga de trabajo específica, especialmente en entornos de virtualización o contenedores donde la asignación de recursos es crítica, y entender que un 'núcleo lógico' no es equivalente a un 'núcleo físico' en términos de capacidad de procesamiento bruto.