3 puntos por GN⁺ 2024-07-29 | Aún no hay comentarios. | Compartir por WhatsApp

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.

Aún no hay comentarios.