Como todos sabemos, los procesadores de arquitectura x86 dominan actualmente los mercados de PC y servidores, mientras que los procesadores de arquitectura Arm dominan el mercado móvil y ocupan una gran participación de mercado en el mercado de IoT. Sin embargo, en los últimos años, la arquitectura RISC-V se ha vuelto muy popular en el campo del Internet de las cosas que se centra en la eficiencia energética debido a sus ventajas como el código abierto, las instrucciones optimizadas y la escalabilidad.

Impulsado por RISC-V International y fabricantes de chips relacionados, RISC-V también ha comenzado a ingresar al mercado de servidores con mayores requisitos de rendimiento.

A principios de 2023, RISC-V International identificó HPC como un área de prioridad estratégica para el crecimiento de RISC-V y, junto con las extensiones vectoriales recientemente aprobadas y una gran cantidad de esfuerzos de software HPC para portar bibliotecas y herramientas clave de HPC, está claro que el impulso en esta área está creciendo rápidamente.

Muchos proyectos en todo el mundo, como el proyecto europeo eProcessor, la CPU Esperanto con miles de núcleos RISC-V y el proyecto RISE de múltiples proveedores destinado a desarrollar soporte para componentes de software clave de RISC-V, pueden promover la popularidad de RISC-V en la informática de alta gama, incluida la HPC, y, en última instancia, permitir a la comunidad construir supercomputadoras en torno a esta tecnología.

Además, las primeras investigaciones sobre aplicaciones respaldan los beneficios que RISC-V puede aportar a las cargas de trabajo de alto rendimiento.

En diciembre de 2022, la startup de chips Ventana Microsystems lanzó la primera CPU VeyronV1 de 192 núcleos basada en arquitectura RISC-V del mundo en la Cumbre RISC-V.

Según los informes, VeyronV1 utiliza tecnología avanzada de proceso de 5 nm, basada en el núcleo RISC-V de alto rendimiento desarrollado por Ventana, diseño de 8 tuberías, admite ejecución fuera de orden, con una frecuencia principal de hasta 3,6 GHz, cada clúster tiene hasta 16 núcleos y múltiples clústeres pueden admitir hasta Se expande a 192 núcleos, tiene 48 MB de caché L3 compartido, tiene medidas avanzadas de mitigación de ataques de canal lateral. IOMMU y Advanced Interrupt Architecture (AIA) admiten funciones RAS integrales y métodos de ajuste de rendimiento de software de arriba hacia abajo para satisfacer diversas necesidades del centro de datos.

Según datos divulgados por Ventana, en la prueba SPECint2017,Con un consumo de energía de 300 W, la versión de 128 núcleos de VeyronV1 está significativamente por delante del AMDEPYCMilan7763 de 64 núcleos (280 W) y es dos veces más potente que el AWS Graviton G3 de 64 núcleos (núcleo Neoversev1) y el Intel Xeon Ice Lake8380 de 40 núcleos (270 W). Por supuesto, esto se debe principalmente al hecho de que el número de núcleos ha alcanzado el doble que el de los productos de la competencia.

Cabe señalar que VeyronV1 no tiene SIMD o unidad de ejecución vectorial, lo que será muy desventajoso para los procesadores de servidor Intel o AMD con AVX-512.

Además, VeyronV1 no se encuentra actualmente en producción en masa. Anteriormente se prometió proporcionar muestras a los clientes en el segundo o tercer trimestre de este año. Por lo tanto, los datos anunciados oficialmente anteriormente todavía están en el papel.

Por el contrario, el chip de servidor RISC-V de 64 núcleos SG2042 lanzado por un fabricante nacional en marzo de este año se envió en pequeños lotes.

Recientemente, el investigador extranjero Nick Brown realizó pruebas reales en este chip a través del conjunto de pruebas RAJAPerf y descubrió que, en comparación con los últimos chips RISC-V ampliamente disponibles, su rendimiento promedio por núcleo aumentó de 5 a 10 veces. Sin embargo, bajo cargas de trabajo de subprocesos múltiples, el rendimiento promedio de las CPU x86 de alto rendimiento sigue siendo entre 4 y 8 veces mayor.

Según el informe de investigación, el procesador RISC-V de 64 núcleos funciona a 2 GHz, consta de cuatro núcleos C920 de alto rendimiento y adopta un diseño de tubería superescalar multiproblema fuera de orden de 12 niveles.

El C920 proporciona el conjunto de instrucciones RV64GCV con tres unidades de decodificación, cuatro de cambio de nombre/programación, ocho de emisión/ejecución y dos de carga/almacenamiento. Admite la extensión estándar de vectorización (RVVv0.7.1), el ancho del vector es de 128 bits, admite los tipos de datos FP16, FP32, INT8, INT16, INT32 e INT64. Sin embargo, C920 no admite la vectorización FP64.

El punto flotante de doble precisión es la base de la gran mayoría de las cargas de trabajo de alto rendimiento, por lo que los núcleos que pueden soportar la vectorización de estas operaciones pueden proporcionar un mayor rendimiento para HPC, según el estudio. Cada núcleo C920 también contiene 64 KB de caché L1 de instrucciones (I) y datos (D), 1 MB de caché L2, compartido entre el clúster de cuatro núcleos, y 64 MB de caché del sistema L3, compartido por todos los núcleos del clúster. También están disponibles cuatro controladores de memoria DDR4-3200 y 32 carriles PCIeGen4.

Una consideración importante para las cargas de trabajo HPC es la vectorización y, dado que el núcleo C920 solo admite RVVv0.7.1, la compatibilidad con el compilador es un desafío. La versión actual del compilador RISC-VGNU no admite ninguna versión de las extensiones vectoriales. Aunque el repositorio GNU contiene una rama rvv next, que está diseñada para soportar rvvv1.0, no se mantenía activamente en el momento en que los investigadores escribieron su estudio.

Además, había una rama rvv-0.7.1 para rvvv0.7.1, pero esta rama se eliminó. Debido a la falta de soporte para GCC principal, T-Head proporciona su propia bifurcación del compilador GNU (Xuantie GCC), que está optimizado para sus procesadores.

El compilador personalizado de T-Head admite tanto RVVv0.7.1 como sus propias extensiones personalizadas. Si bien se han proporcionado varias versiones de este compilador, GCC8.4, como parte de su versión 20210618, ofrece las mejores capacidades de vectorización automática, por lo que esta fue la versión elegida para los experimentos de evaluación comparativa realizados por los investigadores.

Esta versión del compilador genera un componente RVV específico de longitud de vector (VLS) que es específico del ancho de vector de 128 bits del C920. Todos los núcleos se compilaron en el nivel de optimización tres y todos los resultados informados se promediaron en cinco ejecuciones.

Comparación con otros núcleos RISC-V de alto rendimiento

Los investigadores compararon el rendimiento del SG2042 con las placas de desarrollo StarFive VisionFiveV1 y VisionV2. V1 contiene StarFive JH7100SoC, mientras que V2 contiene StarFive JH7110SoC.

Ambos SoC, JH7100 y JH7110, están construidos sobre el núcleo RISC-VSiFiveU74 de 64 bits, con el JH7100 con dos núcleos y el JH7110 con cuatro núcleos. El SoC aparece funcionando a 1,5 GHz y el núcleo U74 contiene caché L1 de 32 KB (D) y 32 KB (I). Ambos modelos de SoC también contienen caché 2MBL2 compartido entre núcleos.

Sin embargo, SiFiveU74 solo ofrece RV64GC y, por lo tanto, no admite extensiones vectoriales RISC-V.

△La Figura 1 muestra la comparación de rendimiento de un solo núcleo entre VisionFiveV2 y V1 y SG2042 en términos de doble precisión (FP64) y precisión simple (FP32). Donde la barra es el número promedio de veces más rápido o más lento en toda la categoría, y las líneas van de mayor a menor.

Como se puede ver en la Figura 1, un solo núcleo C920 supera a los núcleos U74 de V2 y V1 tanto en precisión doble como simple.

Con doble precisión, el rendimiento promedio del núcleo C920 es de 4,3 a 6,5 ​​veces mayor que el del U74 en V2 funcionando con doble precisión. Además, en precisión simple, el C920 obtuvo entre 5,6 y 11,8 veces el rendimiento promedio de referencia. Esa es una ganancia de rendimiento impresionante y no hay núcleos en el C920 que funcionen más lento que el U74.

El rendimiento de algunos núcleos en el C920 es muy impresionante, por ejemplo, el punto de referencia establecido en la memoria del grupo de algoritmos se ejecuta 40 veces más rápido en FP32 y 18 veces más rápido en FP64 que el U74.

Es importante enfatizar que este punto de referencia se realiza en estos núcleos en la mejor configuración posible, es decir, la vectorización se utiliza en el C920, pero la vectorización no es compatible con el U74 y, por lo tanto, no está disponible en V1 o V2.

Existe una diferencia de rendimiento significativa entre FP32 y FP64 en el SG2042, lo que indica que, de hecho, las operaciones vectoriales del C920 no son compatibles con FP64. En comparación, la diferencia de rendimiento entre ejecutar precisión doble y simple en V2 es mucho menor.

Un aspecto de los resultados de la Figura 1 que sorprendió a los investigadores fue que VisionFiveV1 era significativamente más lento que V2. Teniendo en cuenta que las pruebas solo ejecutaron RAJAPerf en un solo núcleo, la naturaleza de doble núcleo y cuádruple núcleo del chip no importa ya que ambos contienen el mismo núcleo U74, por lo que el rendimiento debería ser bastante similar.

Sin embargo, V1 es de seis a tres veces más lento que V2 con precisión doble y de una a tres veces más lento con precisión simple. Si bien se puede suponer que el V1 puede estar funcionando a una frecuencia de reloj más baja que el V2, aunque ambos figuran funcionando a 1,5 GHz en la hoja de datos, no hay documentación ni salida en la máquina para confirmar esto.

Como se puede ver en la Figura 1, el rendimiento logrado por un solo núcleo C920 es impresionante en comparación con los núcleos RISC-V disponibles públicamente. T-Head describe el núcleo como un procesador RISC-V de alto rendimiento.

Las pruebas también muestran mejoras significativas en el rendimiento en todo el conjunto de pruebas en comparación con el U74, que anteriormente se consideraba la mejor opción entre las RISC-VCPU ampliamente disponibles para experimentar con cargas de trabajo HPC.

Además del rendimiento de un solo núcleo, el SG2042 también está significativamente por delante del SoC JH7100 de V1 y JH7110 de V2 en términos de número de núcleos.

Comparación con el rendimiento de la CPU del servidor x86

Entonces, en comparación con otros chips de servidor x86 comerciales, ¿cómo funciona el SG2042 en cargas de trabajo HPC?

En este sentido, los investigadores lo compararon con otras CPU utilizadas en servidores de la generación actual, a saber, el AMD RomeEPYC7742 de 64 núcleos, el Intel Broadwell Xeon E5-2695 de 18 núcleos, el Intel Ice Lake Xeon 6330 de 28 núcleos y el Intel Sandy Bridge Xeon E5-2609 de 4 núcleos.

Las pruebas solo se realizaron en los núcleos físicos de estas CPU x86, ya que todo SMT está deshabilitado de forma predeterminada.

El AMDEPYC7742 contiene 64 núcleos físicos en cuatro regiones NUMA, cada una con 16 núcleos, pero ocho controladores de memoria. Cada núcleo contiene 32 KB (I) y 32 KB (D) de caché L1, 512 KB de caché L2 y 16 MB de caché L3 compartidos entre los cuatro núcleos. El EPYC7742 brinda soporte para AVX2, tiene registros vectoriales de 256 bits de ancho, el doble de ancho que el SG2042, y admite la vectorización para FP64.

Los 18 núcleos físicos del Intel Xeon E5-2695 están ubicados en un área NUMA, lo que proporciona 32 KB (I) y 32 KB (D) de caché L1, 256 KB de caché L2 y 45 MB de caché L3 compartidos entre núcleos. Al igual que el AMD EPYC7742, el Xeon E5-2695 es compatible con AVX2 y tiene cuatro controladores de memoria.

El Intel Xeon 6330 es la última CPU comparada, con los 28 núcleos físicos en una región NUMA, con 8 controladores de memoria, con caché L1 de 32 KB (I) y 48 KB (D), caché de 1 MBL2 por núcleo y caché L3 compartido de 43 MB. Xeon6330 admite AVX512 y proporciona registros vectoriales de 512 bits de ancho.

El Intel Xeon E5-2609 es la CPU más antigua de esta prueba. Fue lanzado en 2012 y ofrece sólo cuatro núcleos físicos. Cada núcleo tiene caché L1 de 64 KB (I) y 64 KB (D), así como caché L2 de 256 KB y caché compartido de 10 MBL3. Este E5-2609 solo admite AVX, por lo que la longitud del registro vectorial es la misma que la del SG2042, 128 bits, aunque AVX admite FP64.

En todas las pruebas,Los investigadores desactivaron el hyperthreading en el núcleo físico x86.Los investigadores utilizaron GCC versión 8.3 en todos los sistemas excepto ARCHER2, y la compilación siempre se realizó en el nivel de optimización O3. Un sistema que se ejecuta en el número de subprocesos de mayor rendimiento.

△La Figura 4 muestra el rendimiento de un solo núcleo de cada chip que ejecuta el conjunto de pruebas en FP64. Donde la barra es el número promedio de veces más rápido o más lento en toda la categoría, y las líneas van de mayor a menor. SG2042 es la línea base media.

A partir de los resultados de la prueba,Todos los núcleos x86 funcionaron mejor que el C920, excepto el antiguo núcleo Xeon E5-2609, que tuvo un rendimiento promedio más lento en las categorías de prueba de algoritmos y transmisión.

Las CPU AMD EPYC7742 e Intel Xeon6330 tienden a funcionar mejor que la Intel XeonE5-2695, lo cual es comprensible ya que la XeonE5-2695 es el modelo más antiguo de los tres.

△La Figura 5 muestra la cantidad de veces que el rendimiento de un solo núcleo de cada chip ejecuta el conjunto de pruebas en FP32 en comparación con la línea base.

Como puede ver en la Figura 5, el AMD EPYC7742 es bastante mediocre cuando se ejecuta en precisión simple versus precisión doble, mientras que el rendimiento promedio del procesador Intel es igual de bueno. De hecho, cuando se utiliza FP32, el antiguo núcleo Xeon E5-2609 supera al C920 en promedio en todos los niveles.

Sin embargo, el gráfico de barras promedio de la Figura 5 no proporciona una imagen completa.

El C920 solo admite la vectorización para FP32 y, de hecho, como se puede ver en las líneas de la Figura 5 y la Figura 4, la velocidad máxima de muchas clases de referencia para FP32 es más rápida que la de FP64.

Además, hay más núcleos más lentos que funcionan más lentamente en una CPU x86 que en un C920 en FP32. Estos núcleos es donde se aplica efectivamente la autovectorización y, de hecho, se puede ver que para la clase de referencia lcals, al menos un núcleo en todas las CPU x86 tiene un rendimiento peor que el C920.

En resumen, en términos de comparación de rendimiento de un solo núcleo, el rendimiento promedio de AMD EPYC7742 bajo FP32 es 3 veces más rápido que C920, Intel XeonE5-2695 es 2 veces más rápido, Intel Xeon6330 también es 4 veces más rápido, XeonE5-2609 es 2 veces más rápido y estos números bajo FP64 son 4 veces, 4 veces, 5 veces y 20% más rápidos respectivamente.

△Comparación de rendimiento de subprocesos múltiples de FP64, que informa la cantidad de veces más rápido o más lento que la línea base

La Figura 6 muestra la comparación de rendimiento del FP64 de doble precisión.

Se puede ver que las pruebas de clase básica, lcals, polybench y stream son las que más se benefician de más núcleos, por lo que el rendimiento promedio del SG2042 es mejor que el del antiguo Xeon E5-2609.

△ Comparación de rendimiento de subprocesos múltiples de FP32, que informa la cantidad de veces más rápido o más lento que la línea de base

La Figura 7 muestra la comparación de rendimiento de subprocesos múltiples de FP32, y estos resultados contienen las mayores diferencias. Para mejorar la legibilidad, los investigadores restringieron el eje vertical y etiquetaron los valores reales que excedían ese valor.

Cuando se trata de FP32 multiproceso, el SG2042 tiende a funcionar ligeramente mejor que el FP64 frente a CPU x86, aunque la clase Polybench es un caso atípico porque funciona mucho mejor en las tres últimas CPU x86 y el Intel Xeon E5-2609 funciona mucho peor.

En resumen, al comparar el rendimiento multiproceso del SG2042 con las CPU x86, su rendimiento promedio de 64 núcleos es mejor que el del Intel Xeon E5-2609 de 4 núcleos en todos los tipos de pruebas comparativas que se ejecutan en FP32 y FP64.

El rendimiento del AMD EPYC7742 de 64 núcleos en FP32 y FP64 es 8 veces y 5 veces mayor que el del SG2042 respectivamente. El Intel Xeon E5-2695 de 18 núcleos logra un promedio de 6 veces y 4 veces en precisión simple y doble precisión respectivamente. Finalmente, el Intel Xeon6330 de 28 núcleos funciona 6 veces y 8 veces mejor en FP32 y FP64 respectivamente.

en conclusión:

Aunque muchas empresas están desarrollando actualmente prototipos de hardware RISC-V de alto rendimiento, hasta ahora, las opciones han sido muy limitadas cuando se busca ejecutar cargas de trabajo en software RISC-V disponible comercialmente, dijeron los investigadores.

De todos modos, si bien estas soluciones permiten la experimentación con RISC-V, arquitectónicamente no proporcionan las características necesarias para producir cargas de trabajo de alto rendimiento. Entonces, si bien la comunidad HPC está interesada en RISC-V, no está del todo preparada para la tecnología.

Por supuesto, como el primer chip de servidor RISC-V multinúcleo ampliamente disponible en el mundo para HPC, el SG2042 puede aumentar significativamente el interés y la adopción de RISC-V en la comunidad HPC. Sin embargo, una cuestión clave es que todavía está muy por detrás de las CPU x86 que prevalecen en la generación actual de supercomputadoras.

Aún así, este es un chip de servidor RISC-V muy interesante que ofrece algunos cambios significativos en comparación con el hardware RISC-V actualmente disponible comercialmente.

Si bien el rendimiento aún no está al nivel de las CPU de servidor x86, se debe enfatizar que los proveedores de RISC-V han recorrido un largo camino en un corto período de tiempo. Por el contrario, las CPU x86 tienen una larga historia y se benefician de sus muchos años de desarrollo.

En la actualidad, el principal competidor de RISC-V en el mercado de CPU para servidores es la CPU para servidores Arm. Después de todo, en teoría, RISC-VCPU puede tener un costo menor, mayor personalización y escalabilidad que Arm CPU.

Para la próxima generación de procesadores RISC-V de alto rendimiento, los investigadores creen que proporcionar RVVv1.0 será muy útil, ya que proporcionará el uso de GCC y Clang de línea principal para compilar código vectorizado.

Además, proporcionar vectorización FP64, registros vectoriales más amplios, mayor caché L1 y más controladores de memoria por región NUMA también puede aportar importantes beneficios de rendimiento y ayudar a cerrar la brecha con los procesadores x86 de alto rendimiento.


acceso:

Centro comercial Jingdong