Dos hilos, un núcleo: cómo funciona el multihilo simultáneo
Antecedentes y motivación
- Contexto de la introducción de SMT: Se introdujo para aumentar la utilización de los recursos del procesador. Un procesador tiene cientos de registros, varias unidades de carga/almacenamiento y unidades aritméticas. Para aprovecharlos mejor, se usan técnicas de paralelismo a nivel de instrucciones (ILP).
- Canalización de instrucciones: La ejecución de instrucciones se divide en varias etapas para procesar una nueva instrucción adicional en cada ciclo. Cuanto más profunda es la tubería, más instrucciones se pueden procesar en paralelo.
- Arquitectura superescalar: Puede emitir múltiples instrucciones en cada ciclo. Por ejemplo, los procesadores Intel Core i7 modernos pueden emitir 4 instrucciones por ciclo.
- Desperdicio horizontal y vertical: Es el desperdicio de recursos que ocurre cuando no se pueden encontrar suficientes instrucciones independientes. El desperdicio horizontal ocurre cuando el procesador no puede encontrar suficientes instrucciones independientes, y el vertical ocurre cuando todas las instrucciones dependen de la instrucción que se está ejecutando actualmente.
Implementación de SMT en procesadores Intel
- Replicación del estado arquitectónico: Para ejecutar dos hilos al mismo tiempo, se replica el estado arquitectónico del procesador. Gracias a esto, un procesador físico aparece ante el sistema operativo como dos procesadores lógicos.
- Compartición y replicación de recursos: Algunos recursos se replican y otros se comparten. La decisión de replicarlos o no depende de varios factores, como el consumo de energía y el espacio real en el chip.
Microarquitectura del procesador
- Frontend, backend y unidad de retirada: La microarquitectura del procesador se divide en tres partes. El frontend obtiene y decodifica instrucciones, el backend asigna recursos de ejecución y ejecuta las instrucciones, y la unidad de retirada confirma en el estado arquitectónico los resultados de las instrucciones ejecutadas.
Detalles de la implementación de SMT
- Frontend: Está compuesto por varios elementos como el puntero de instrucciones, la caché de trazas, la caché ITLB y la cola de uops. Cada componente se replica o se comparte para dar soporte a los dos procesadores lógicos.
- Backend: Está compuesto por el asignador de recursos, el renombrado de registros, la cola de preparación de instrucciones y el programador de instrucciones. El asignador de recursos alterna entre los procesadores lógicos en cada ciclo.
- Unidad de retirada: Rastrea cuándo las instrucciones están listas para confirmarse en el estado arquitectónico y las confirma en el orden correcto.
Subsistema de memoria
- TLB: Una pequeña caché que traduce direcciones virtuales a direcciones físicas. Se comparte dinámicamente entre los dos procesadores lógicos.
- Cachés L1, L2 y L3: Cada núcleo de CPU tiene su propia caché L1. La caché L2 puede variar según la microarquitectura, y la caché L3 se comparte entre núcleos.
Impacto de SMT en el rendimiento
- Ejecución de un solo hilo: Al ejecutar un solo hilo en un núcleo con SMT activado, el rendimiento puede degradarse porque los recursos se comparten.
- Ejecución de dos hilos: El rendimiento puede variar según los patrones de acceso a caché. Los hilos cooperativos pueden mejorar el rendimiento, pero los hilos competitivos pueden degradarlo.
- Vulnerabilidades de seguridad: En los últimos años se han descubierto problemas de seguridad relacionados con SMT. Debido al uso compartido de recursos y a la ejecución especulativa de instrucciones, existe la posibilidad de que se filtren datos sensibles.
Conclusión
- Decidir si usar SMT: SMT fue diseñado para aumentar la utilización de los recursos de la CPU y el rendimiento en el procesamiento de instrucciones, pero implica trade-offs en rendimiento y seguridad. Es importante decidir si usar SMT o no según la carga de trabajo.
Resumen de GN⁺
- Comprender SMT: SMT fue diseñado para aumentar la utilización de los recursos de la CPU y el rendimiento en el procesamiento de instrucciones.
- Rendimiento y seguridad: SMT puede ayudar a mejorar el rendimiento, pero la contención de recursos y las vulnerabilidades de seguridad también pueden provocar degradación del rendimiento y problemas de seguridad.
- Decidir si usarlo: Se debe decidir cuidadosamente si usar SMT o no según la carga de trabajo. Si se necesita el máximo rendimiento, conviene desactivar SMT.
- Proyectos relacionados: También vale la pena consultar la implementación de SMT de AMD y proyectos de análisis del rendimiento de SMT en procesadores ARM.
Aún no hay comentarios.