Investigación del rendimiento de subprocesos múltiples en Zen 3 y AMD Ryzen 5000

Una de las historias en torno a las generaciones iniciales de procesadores Zen de AMD fue el efecto del Multi-Threading simultáneo (SMT) en el rendimiento. Al ejecutar con este modo habilitado, como es predeterminado en la mayoría de las situaciones, los usuarios vieron aumentos significativos en el rendimiento en situaciones que podrían aprovechar. Las razones de este aumento del rendimiento se basan en dos factores en competencia: primero, por qué el núcleo está diseñado para ser tan subutilizado por un hilo, o segundo, la construcción de una estrategia SMT eficiente para aumentar el rendimiento. En esta revisión, echamos un vistazo a la última arquitectura Zen 3 de AMD para observar los beneficios de SMT.

¿Qué es el subproceso múltiple simultáneo (SMT)?

A menudo consideramos que cada núcleo de CPU puede procesar un flujo de instrucciones en serie para cualquier programa que se esté ejecutando. Multi-Threading simultáneo, o SMT, permite que un procesador ejecute dos flujos simultáneos de instrucciones en el mismo núcleo del procesador, compartiendo recursos y optimizando el tiempo de inactividad potencial en un conjunto de instrucciones al tener un conjunto secundario para entrar y aprovechar la subutilización. Dos de los factores limitantes en la mayoría de los modelos de computación son la latencia de la memoria o la computación, y SMT está diseñado para intercalar conjuntos de instrucciones para optimizar el rendimiento de la computación mientras oculta la latencia de la memoria.


Una vieja diapositiva de Intel, que tiene su propio término de marketing para SMT: Hyper-Threading

Cuando SMT está habilitado, dependiendo del procesador, permitirá que dos, cuatro u ocho subprocesos se ejecuten en ese núcleo (hemos visto algunas soluciones esotéricas de cómputo en memoria con 24 subprocesos por núcleo). Las instrucciones de cualquier subproceso se reorganizan para procesarse en el mismo ciclo y mantener alta la utilización de los recursos básicos. Debido a que se utilizan varios subprocesos, esto se conoce como extracción de paralelismo a nivel de subproceso (TLP) de una carga de trabajo, mientras que un solo subproceso con instrucciones que pueden ejecutarse simultáneamente es el paralelismo a nivel de instrucción (ILP).

¿Es SMT algo bueno?

Depende de a quien le preguntes.

SMT2 (dos subprocesos por núcleo) implica la creación de estructuras básicas suficientes para contener y administrar dos flujos de instrucciones, así como administrar cómo esas estructuras principales comparten recursos. Por ejemplo, si un búfer en particular en su diseño principal está destinado a manejar hasta 64 instrucciones en una cola, si el promedio es menor que eso (como 40), entonces el búfer está subutilizado y un diseño SMT habilitará el búfer se alimenta de media a la cima. Ese búfer podría aumentarse a 96 instrucciones en el diseño para tener en cuenta esto, asegurando que si ambos flujos de instrucciones se ejecutan a un ‘promedio’, ambos tendrán suficiente margen de maniobra. Esto significa que vale la pena utilizar dos subprocesos, por solo 1,5 veces el tamaño del búfer. Si todo lo demás funciona, entonces duplica el rendimiento por menos del doble del diseño central en el área de diseño. Pero en modo ST,donde la mayor parte de ese búfer de 96 de ancho está lleno en menos del 40%, debido a que todo el búfer tiene que estar encendido todo el tiempo, podría estar desperdiciando energía.

Pero, si un diseño de núcleo se beneficia de SMT, entonces quizás el núcleo no se haya diseñado de manera óptima para un solo hilo de rendimiento en primer lugar. Si habilitar SMT le brinda al usuario un rendimiento doble exacto y un escalado perfecto en todos los ámbitos, como si hubiera dos núcleos, entonces quizás haya un problema directo con cómo está diseñado el núcleo, desde las unidades de ejecución hasta los búferes y la jerarquía de caché. Se sabe que los usuarios se quejan de que solo obtienen un aumento del 5-10% en el rendimiento con SMT habilitado, indicando que no funciona correctamente; esto podría deberse solo a que el núcleo está mejor diseñado para ST. De manera similar, afirmar que una ganancia de rendimiento de + 70% significa que SMT está funcionando bien podría ser más una señal para un diseño de núcleo desequilibrado que desperdicia energía.

Esta es la dicotomía de Multi-Threading simultáneo. Si funciona bien, el usuario obtiene un rendimiento adicional. Pero si funciona demasiado bien, tal vez sea indicativo de un núcleo que no se adapta a una carga de trabajo en particular. La respuesta a la pregunta “¿Es SMT algo bueno?” es más complicado de lo que parece a primera vista.

Podemos dividir los sistemas que usan SMT:

• X86 de alto rendimiento de Intel
• X86 de alto rendimiento de AMD
• POWER / z de alto rendimiento de IBM
• Algunos diseños basados ​​en brazos de alto rendimiento
• Diseños de computación en memoria de alto rendimiento
• Hardware de IA de alto rendimiento

En comparación con los que no:

• X86 de alta eficiencia de Intel
• Todos los procesadores Arm de tipo smartphone
• Diseños exitosos basados ​​en brazos de alto rendimiento
• Cargas de trabajo de HPC altamente enfocadas en x86 con cuellos de botella de cómputo

(Tenga en cuenta que Intel llama a su implementación SMT ‘HyperThreading’, que es un término de marketing específicamente para Intel).

En este punto, solo hemos estado discutiendo SMT donde tenemos dos subprocesos por núcleo, conocidos como SMT2. Algunos de los diseños de hardware más esotéricos van más allá de SMT basado en dos subprocesos por núcleo y utilizan hasta ocho. Verá esto estilizado en la documentación como SMT8, en comparación con SMT2 o SMT4. Así es como IBM aborda algunos de sus diseños. ¡Algunas aplicaciones de computación en memoria llegan tan lejos como SMT24 !

Existe una clara tendencia entre los sistemas habilitados para SMT y los sistemas sin SMT, y ese parece ser el marcador de alto rendimiento. La única excepción es el reciente procesador Apple M1 y los núcleos Firestorm.

Cabe señalar que para los sistemas que admiten SMT, se puede deshabilitar para forzarlo a un hilo por núcleo, para que se ejecute en modo SMT1. Esto tiene algunos beneficios importantes:

Permite que cada hilo tenga acceso a un núcleo completo de recursos. En algunas situaciones de carga de trabajo, tener dos subprocesos en el mismo núcleo significará compartir recursos y provocar una latencia adicional involuntaria, lo que puede ser importante para las cargas de trabajo críticas de latencia donde se requiere un rendimiento determinista (el mismo). También reduce la cantidad de subprocesos que compiten por la capacidad L3, en caso de que sea un factor limitante. Además, en caso de que se requiera software para probar todos los demás flujos de trabajo en busca de datos, para un procesador de 16 núcleos como el 5950X, eso significa llegar solo a otros 15 subprocesos en lugar de otros 31 subprocesos, lo que reduce la diafonía potencial limitada por la conectividad de núcleo a núcleo.

El otro aspecto es el poder. Con un solo subproceso en un núcleo y ningún otro subproceso para saltar si los recursos están subutilizados, cuando hay un retraso causado por extraer algo de la memoria principal, entonces la potencia del núcleo sería menor, proporcionando presupuesto para que otros núcleos aumenten en frecuencia. Esto es un arma de doble filo si el núcleo todavía está en un voltaje alto mientras espera datos en un modo deshabilitado SMT. SMT de esta manera puede ayudar a mejorar el rendimiento por vatio, asumiendo que habilitar SMT no genera competencia por recursos y posiblemente paradas más largas esperando por datos.

Las cargas de trabajo empresariales de misión crítica que requieren un rendimiento determinista y algunos códigos HPC que requieren grandes cantidades de memoria por subproceso a menudo desactivan SMT en sus sistemas implementados. Las cargas de trabajo de los consumidores a menudo no son tan críticas (al menos en términos de escala y $$$), por lo que el tema a menudo no se trata en detalle.

La mayoría de los procesadores modernos, cuando están en modo habilitado para SMT, si están ejecutando un solo flujo de instrucciones, funcionarán como si estuvieran en modo SMT desactivado y tendrán acceso completo a los recursos. Algunos software se aprovechan de esto, generando solo un hilo para cada núcleo físico en el sistema. Debido a que las estructuras del núcleo se pueden particionar dinámicamente (ajusta los recursos para cada subproceso mientras los subprocesos están en progreso) o se pueden compartir estáticamente (se ajusta antes de que comience una carga de trabajo), las situaciones en las que los dos subprocesos en un núcleo están creando su propio cuello de botella se beneficiarían de tener solo un subproceso por núcleo activo. Saber cómo una carga de trabajo usa un núcleo puede ayudar al diseñar software diseñado para hacer uso de múltiples núcleos.

Aquí hay un ejemplo de un núcleo Zen3, que muestra todas las estructuras. Uno de los puntos de progreso con cada nueva generación de hardware es reducir la cantidad de estructuras asignadas estáticamente dentro de un núcleo, ya que las estructuras dinámicas a menudo brindan la mejor flexibilidad y el máximo rendimiento. En el caso de Zen3, solo tres estructuras todavía están particionadas estáticamente: la cola de tienda, la cola de retiro y la cola de microoperaciones. Es lo mismo que Zen2.

SMT en AMD Zen3 y Ryzen 5000

Al igual que los anteriores procesadores basados ​​en Zen de AMD, la serie Ryzen 5000 que usa núcleos Zen3 también tiene un diseño SMT2. De forma predeterminada, esto está habilitado en cada BIOS de consumidor, sin embargo, los usuarios pueden optar por deshabilitarlo a través de las opciones de firmware.

Para este artículo, hemos ejecutado nuestro procesador AMD Ryzen 5950X, un procesador Zen3 de alto rendimiento de 16 núcleos, en los modos SMT Off y SMT On a través de nuestro conjunto de pruebas y a través de algunos puntos de referencia estándar de la industria. Los objetivos de estas pruebas son determinar las respuestas a las siguientes preguntas:

1- ¿Existe un beneficio de un solo hilo al deshabilitar SMT?
2- ¿Cuánto aumento de rendimiento proporciona la habilitación de SMT?
3- ¿Hay un cambio en el rendimiento por vatio al habilitar SMT?
4- ¿Tener SMT habilitado da como resultado una mayor latencia de la carga de trabajo? *

* más importante para cargas de trabajo empresariales / de bases de datos / IA

El mejor argumento para habilitar SMT sería un resultado No-Lots-Yes-No. Por el contrario, el mejor argumento en contra de SMT sería un Sí-Ninguno-No-Sí. Pero debido a que las estructuras centrales se construyeron teniendo en cuenta la SMT habilitada, las respuestas rara vez son tan claras.

Sistema de prueba

Para nuestro conjunto de pruebas, debido a la obtención de nuevos módulos de memoria DDR4-3200 de 32 GB para las pruebas de Ryzen, volvimos a ejecutar nuestro conjunto de pruebas estándar en el Ryzen 9 5950X con SMT activado y SMT desactivado. De acuerdo con nuestra metodología de prueba habitual, probamos la memoria según las especificaciones oficiales de JEDEC para cada procesador en cuestión.

Rendimiento de la CPU

Para simplificar, enumeramos los diferenciales de rendimiento porcentuales en todas nuestras pruebas de CPU; el número que se muestra es el% de rendimiento de tener SMT2 habilitado en comparación con tener la configuración deshabilitada. Nuestro paquete de pruebas consta de más de 120 pruebas, cuyos detalles completos se pueden encontrar en nuestro artículo #CPUOverload .

Aquí están los resultados de un solo hilo.

Curiosamente, nuestro rendimiento de un solo subproceso estuvo dentro de un solo punto porcentual en toda la pila (SPEC es de + 1,2%). Dado que podría decirse que el modo ST debería dar más recursos a cada subproceso para mayor coherencia, el hecho de que no veamos ninguna diferencia significa que la implementación de AMD de dar acceso a un solo subproceso a todos los recursos incluso en el modo SMT es bastante buena.

Las pruebas multiproceso son un poco más diversas:

Aquí tenemos una serie de diferentes factores que afectan los resultados.

Comenzando con las dos pruebas que puntuaron estadísticamente peor con SMT2 habilitado: yCruncher y AIBench. Ambas pruebas están limitadas a la memoria y al cálculo en partes, donde el ancho de banda de la memoria por subproceso puede convertirse en un factor limitante en el tiempo de ejecución general. yCruncher es posiblemente un punto de referencia sintético matemático, y AIBench todavía es una carga de trabajo de IA en beta temprana para Windows, por lo que está bastante lejos de los casos de uso del mundo real.

La mayoría del resto de los puntos de referencia se encuentran entre una ganancia de + 5% a + 35%, que incluye varias de nuestras pruebas de renderizado, dinámica molecular, codificación de video, compresión y criptografía. Aquí es donde podemos ver ambos hilos en cada núcleo intercalados dentro de los búferes y las unidades de ejecución, que es el objetivo de un diseño SMT. Todavía hay algunos cuellos de botella en el sistema que afectan a ambos subprocesos que obtienen acceso total absoluto, que podrían ser el tamaño del búfer, la tasa de retiro, las limitaciones de la cola de operaciones, las limitaciones de la memoria, etc., es probable que cada punto de referencia sea diferente.

Los dos valores atípicos son 3DPM / 3DPMavx y Corona. Estos tres son 45% +, con 3DPM yendo 66% +. Ambas pruebas son muy ligeras en cuanto a los requisitos de memoria caché y memoria, y utilizan la distribución de puertos de ejecución de Zen3 aumentada para un buen uso. Estos puntos de referencia también son pesados ​​en computación, por lo que dividir parte del acceso a la memoria y la computación en el núcleo ayuda a que los diseños SMT2 mezclen esas operaciones con un mayor efecto. El hecho de que 3DPM en el modo AVX2 obtenga un mayor beneficio podría deberse a la combinación de operaciones para una implementación de carga / almacenamiento de AVX2: hay menos espera para extraer datos de las cachés y menos contención, lo que se suma a un rendimiento adicional.

En general

En un mundo ideal, ambos subprocesos en un núcleo tendrán acceso completo a todos los recursos y no se bloquearán entre sí. Sin embargo, eso solo significa que el segundo hilo parece tener su propio núcleo por completo. El método SMT inverso, de usar un núcleo global y dividirlo en núcleos virtuales sin contención, se conoce como VISC , y la compañía detrás de eso fue comprada por Intel hace unos años, pero aún no ha salido nada. Por ahora, tenemos SMT y, por diseño, acelerará algunas cargas de trabajo clave cuando esté habilitado.

En nuestros resultados de CPU, los puntos de referencia de un solo subproceso no mostraron ningún aumento con SMT habilitado / deshabilitado en nuestras cargas de trabajo sintéticas o del mundo real. Esto significa que incluso en el modo habilitado para SMT, si se está ejecutando un hilo, obtiene todo lo que ofrece el núcleo.

Para las pruebas de subprocesos múltiples, existe claramente un espectro de cargas de trabajo que se benefician de SMT.

Aquellos que no lo hacen son hiper-optimizados en base a un hilo por núcleo o sensibles a la latencia de la memoria.

La mayoría de las cargas de trabajo del mundo real experimentan un pequeño aumento, un promedio del 22%. El renderizado y el trazado de rayos pueden variar según el motor y la cantidad de recursos de ancho de banda / caché / núcleo que requiere cada hilo, lo que podría mover el cuello de botella de ejecución a otra parte de la cadena. Para la ejecución de pruebas limitadas que no sondean la memoria o la caché en absoluto, que para ser honesto, es más probable que sean cargas de trabajo informáticas hiper optimizadas, puntuadas hasta + 77% en nuestras pruebas.

Rendimiento de juego (GPU discreta)

Para nuestras pruebas de juegos, usamos nuestro AMD Ryzen 9 5950X emparejado con una tarjeta gráfica NVIDIA RTX 2080 Ti. Nuestro conjunto de pruebas estándar consta de 12 títulos, probados en cuatro configuraciones:

Etapa 1: juego real (calidad máxima de 1080p o equivalente)
Etapa 2: Todo sobre los píxeles (calidad ‘4K mínimo’)
Etapa 3: Medio bajo (‘1440p mínimo’)
Etapa 4: Mínimos mínimos (720p mínimo o inferior)

Las tres configuraciones finales son un conjunto de juegos con CPU limitada y ayudan a encontrar el límite de dónde nos movemos de CPU limitada a GPU limitada. Algunos usuarios se resisten a esta prueba por considerarla irrelevante; sin embargo, estas configuraciones se han solicitado ampliamente a lo largo de los años. El contrario a esta prueba es la primera configuración, a 1080p Máximo: esto se solicita dado que 1080p es la resolución de juego más popular, y Calidad Máxima porque esta tarjeta gráfica debería poder manejar casi todo a esa resolución a velocidades de cuadro muy reproducibles.

En situaciones de juego del mundo real, hay muy poco para elegir entre tener SMT habilitado o deshabilitado. Casi universalmente, es beneficioso o un poco mejor tenerlo habilitado, con F1 2019, Civilization 6 y Far Cry 5 aparentemente los mejores destinatarios. También agregué el resultado de la Etapa 3 de World of Tanks, solo porque ese punto de referencia realmente no tiene un menú de configuración adecuado.

Con nuestra configuración de alta resolución con una calidad mínima, solo hay un valor atípico en Civilization 6 en las velocidades de cuadro promedio, que parecen ser un poco más altas cuando SMT está habilitado.

En la configuración más media, estamos comenzando a ver más variaciones (Borderlands obtiene un pequeño porcentaje de SMT). Estamos empezando a ver que Deus Ex: MD disminuye un poco con SMT habilitado.

Este es quizás nuestro conjunto de resultados más variado, con Deus Ex: MD mostrando una caída de casi un 10% con SMT habilitado. DEMD generalmente se considera un título de CPU, pero también lo es Chernobylite, que ve una ganancia del 6%. Borderlands es + 8-10% con SMT habilitado, que es más un juego moderno. Sin embargo, dudo que alguien esté jugando con estas resoluciones.
Rendimiento general del juego

Si tomamos promedios completos de todos los puntos de datos, entonces estamos viendo una ganancia aproximada de + 1% en el rendimiento en los escenarios más complejos en todos los ámbitos.

En realidad, cualquier pérdida o ganancia depende en gran medida del título en cuestión y puede oscilar de un lado a otro de la línea. Está claro que Deus Ex prefiere SMT desactivado, y F1 2019 o Borderlands prefieren SMT activado, pero estamos hablando de buenos márgenes aquí.

Consumo de energía, temperatura

Otros dos argumentos para tener SMT activado o desactivado se reducen al consumo de energía y la temperatura.

Con SMT habilitado, se espera que la utilización del núcleo sea mayor, con más instrucciones fluyendo y procesándose por ciclo. Esto naturalmente aumenta los requisitos de energía en el núcleo, pero también puede reducir la frecuencia del núcleo. La compensación está destinada a ser que el trabajo que atraviesa el núcleo debería ser más que suficiente para compensar la energía adicional utilizada o cualquier frecuencia más baja. La frecuencia más baja debería permitir un rendimiento más eficiente, asumiendo que el voltaje se ajusta en consecuencia.

Aquí es quizás donde AMD e Intel difieren ligeramente. El rango de frecuencia turbo de Intel está estrictamente limitado a valores de frecuencia específicos basados ​​en la carga del núcleo, independientemente de cuántos subprocesos estén activos o cuántos subprocesos por núcleo estén activos. La actividad es un poco más oportunista cuando alcanzamos la potencia de estado estable, aunque exactamente qué tan lejos de la línea dependerá de lo que la placa base haya establecido en la longitud de la potencia. La frecuencia de AMD es continuamente oportunista desde el momento en que se aplica la carga: obviamente se reduce a medida que se cargan más núcleos, pero se equilibrará hacia arriba y hacia abajo en función de la carga del núcleo en todo momento. Por el lado de las térmicas, esto dependerá de la densidad de calor que se genere en cada núcleo, pero esto también actúa como un circuito de retroalimentación en el algoritmo turbo si no se ha alcanzado el límite de potencia.

Para nuestro análisis aquí, hemos elegido dos puntos de referencia. Agisoft, que es una prueba de subprocesos variables, funciona prácticamente de la misma manera con SMT On / Off, y 3DPMavx, una prueba MT pura que obtiene la mayor ganancia de SMT.

Agisoft

Photoscan de Agisoft es un creador de imágenes 2D para modelos 3D, que utiliza docenas de imágenes 2D de alta calidad para generar mapas de puntos relacionados para formar un modelo 3D, antes de finalmente texturizar el modelo utilizando las imágenes proporcionadas. Se utiliza para archivar artefactos, así como para convertir esculturas 2D en escenas 3D. Nuestra prueba analiza un conjunto estandarizado de fotos de 85 x 18 megapíxeles, con un resultado medido en el tiempo para completar.

Simplemente mirando las temperaturas de la CPU mientras ejecutamos nuestra prueba Agisoft en el mundo real, nuestra configuración actual (MSI X570 Godlike con Noctua NH12S) muestra que ambas CPU fluctuarán alrededor de 74ºC sostenidos. Quizás el elemento interesante esté al comienzo de la prueba, donde las temperaturas de la CPU son más altas en el modo SMT Off. Mirando los datos, y durante SMT desactivado, el procesador está a 4300 MHz, en comparación con 4150 MHz cuando SMT está habilitado. Esto explicaría la diferencia.

En cuanto a la potencia, podemos seguir que durante la mayor parte de la prueba, ambos procesadores tienen un consumo de energía de paquete similar, alrededor de 130 W. El SMT Off consume más energía durante los primeros minutos de la prueba, debido a la frecuencia más alta. Claramente, la densidad térmica en esta parte de la prueba al tener solo un hilo por núcleo permite un turbo más alto.

Si medimos la potencia total de la prueba, es básicamente idéntica en cualquier métrica que importe. Más cerca del final de la prueba, donde la carga de trabajo tiene subprocesos más variables, aquí es donde el modo SMT Off parece estar bajo tensión. Este tiempo de finalización del punto de referencia es esencialmente el mismo debido a la naturaleza de la prueba, pero SMT Off tiene un 2% menos de potencia en general.

3DPMavx (movimiento de partículas 3D)

Nuestra prueba 3DPM es una secuencia algorítmica de movimiento tridimensional aleatorio no interactivo, diseñada para simular el movimiento de difusión molecular dentro de un gas o fluido. La simulación se hace no interactiva (es decir, no colisionarán dos moléculas) debido al movimiento promedio original de cada partícula teniendo en cuenta las colisiones. Nuestra prueba recorre seis algoritmos de movimiento a diez segundos cada uno, seguidos de diez segundos de inactividad, y el ciclo completo se repite seis veces, lo que demora unos 20 minutos, independientemente de qué tan rápido o lento sea el procesador. La cifra de rendimiento relacionada son millones de movimientos de partículas por segundo. Cada algoritmo se ha acelerado para AVX2.

Desde el punto de vista de la temperatura, está claro que el modo SMT Off vuelve a ofrecer un perfil térmico más alto. Las temperaturas esta vez alcanzan un máximo de 66ºC, pero es evidente la diferencia entre los dos modos.

En el lado de la energía, podemos ver por qué el modo SMT Off es más cálido: los núcleos consumen más energía. En cuanto a los datos, el modo SMT desactivado se ejecuta en ~ 4350 MHz, en comparación con SMT activado, que se acerca a 4000 MHz.

Con la frecuencia más alta con SMT desactivado, el consumo de energía total estimado es un 6,8% más alto. Esto parece ser muy constante a lo largo del punto de referencia, que dura aproximadamente 20 minutos en total.

Pero agreguemos los números de desempeño. Debido a que 3DPMavx puede aprovechar SMT On, ese modo obtiene una puntuación de + 77,5% al ​​tener dos subprocesos por núcleo en lugar de uno (una puntuación de 10245 frente a 5773). Combinado, esto hace que el modo SMT On sea un 91% mejor en rendimiento por vatio en este punto de referencia.

Conclusiones: SMT On

No estaba muy seguro de lo que íbamos a ver cuando comencé esta prueba. Conozco la teoría detrás de la implementación de SMT y lo que significa para los flujos de instrucciones que tienen acceso a los recursos centrales, y cómo los núcleos que tienen SMT en mente desde el principio se construyen de manera diferente a los núcleos que son solo un hilo por núcleo. Pero la teoría solo te lleva hasta cierto punto. Aparte de todos los mensajes del foro a lo largo de los años que hablan sobre ganancias / pérdidas de rendimiento cuando un producto tiene SMT habilitado, y las pocas demostraciones de procesadores de servidor que ejecutan cargas de trabajo enfocadas con SMT deshabilitado, en realidad vale la pena probar en cargas de trabajo reales para encontrar si hay una diferencia en absoluto.

Resumen de resultados

En nuestras pruebas, cubrimos tres áreas: Single Thread, Multi-Thread y Rendimiento de juegos.

En las cargas de trabajo de un solo subproceso, donde cada subproceso tiene acceso a todos los recursos en un solo núcleo, no vimos ningún cambio en el rendimiento cuando SMT está habilitado; todas nuestras cargas de trabajo estaban dentro del 1% en cada lado.

En cargas de trabajo de subprocesos múltiples, vimos un aumento promedio en el rendimiento de + 22% cuando SMT estaba habilitado. La mayoría de nuestras pruebas obtuvieron un aumento de rendimiento de + 5% a + 35%. Un par de cargas de trabajo obtuvieron peores resultados, principalmente debido a que la contención de recursos tiene tantos subprocesos en juego; el límite aquí es el ancho de banda de memoria por subproceso. Una carga de trabajo obtuvo una puntuación de + 60%, una carga de trabajo computacional con pocos o ningún requisito de memoria; esta carga de trabajo obtuvo una puntuación aún mejor en el modo AVX2, lo que demuestra que todavía hay algunos cuellos de botella que se alivian con menos instrucciones.

En los juegos, en general no hubo diferencias entre SMT activado y SMT desactivado, sin embargo, algunos juegos pueden mostrar diferencias en escenarios de CPU limitada. Deus Ex bajó casi un 10% cuando la CPU estaba limitada, sin embargo, Borderlands 3 subió casi un 10%. A medida que pasamos a un escenario más limitado de GPU, esas discrepancias se neutralizaron, y algunos juegos aún obtuvieron una mejora de puntos porcentuales de un solo dígito con SMT habilitado.

En cuanto a potencia y rendimiento, probamos dos ejemplos en los que el rendimiento en dos subprocesos por núcleo no vio ninguna mejora (Agisoft) o una mejora significativa (3DPMavx). En ambos casos, el modo SMT desactivado (1 hilo / núcleo) se ejecutó a temperaturas y frecuencias más altas. Para el punto de referencia por rendimiento fue aproximadamente igual, la energía consumida fue un par de puntos porcentuales menor cuando se ejecutó un hilo por núcleo. Para el punto de referencia, ejecutar dos subprocesos por núcleo tiene un gran aumento de rendimiento, la potencia en ese modo también fue menor y hubo una mejora significativa de + 91% en el rendimiento por vatio al habilitar SMT.

¿Qué significa esto?

Mencioné al principio del artículo que las ganancias de rendimiento de SMT se pueden ver desde dos puntos de vista diferentes.

La primera es que si SMT permite un mayor rendimiento, entonces es un cambio fácil de usar, y algunos usuarios consideran que si puede obtener un escalado perfecto, entonces si SMT es un diseño efectivo.

La segunda es que si SMT permite demasiado rendimiento, es indicativo de un mal diseño de núcleo. Si puede obtener un escalado perfecto con SMT2, entonces tal vez algo esté mal en el diseño del núcleo y el cuello de botella sea bastante malo.

Tener un escalado SMT deficiente no siempre significa que el SMT esté mal implementado; también puede implicar que el diseño del núcleo es muy bueno. Si un diseño SMT eficaz se puede interpretar como un diseño de núcleo deficiente, es bastante fácil ver que los proveedores no pueden tener ambas opciones. Cada diseño de núcleo tiene deficiencias (eso es cierto), y tanto Intel como AMD les dirán a sus usuarios que SMT permite que el sistema obtenga bits adicionales de rendimiento donde las cargas de trabajo pueden aprovecharlo, y para casos de uso del mundo real, hay son muy pocas desventajas.

Sabemos desde hace muchos años que tener dos subprocesos por núcleo no es lo mismo que tener dos núcleos; en el peor de los casos, hay cierta regresión del rendimiento a medida que más subprocesos intentan luchar por el espacio de caché, pero esos casos de uso parecen ser altamente especializado para HPC y tareas parecidas a las de una supercomputadora. SMT en el mundo real llena los vacíos donde los vacíos están disponibles, y esto ocurre principalmente en aplicaciones con muchos subprocesos múltiples sin contención de caché. En el mejor de los casos, SMT ofrece un rendimiento considerable por aumento de vatio. Pero en promedio, se pueden obtener pequeñas ganancias (+ 22% en MT) y el rendimiento de los juegos no se ve afectado, por lo que vale la pena mantenerlo habilitado en Zen 3.

Una respuesta a «Investigación del rendimiento de subprocesos múltiples en Zen 3 y AMD Ryzen 5000»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *