Hace menos de dos años, exploramos el primer servidor Arm SoC, que en teoría podría competir con el Intel Xeon E5s: Cavium ThunderX. El servidor de SoC demostró todo lo que se anunció, sin embargo, debido al bajo rendimiento de un solo subproceso y las dificultades para optimizar las características de energía, el SoC de 48 núcleos se asignó a nichos de mercado. Como resultado, el primer servidor Cavium SoC nunca pudo competir con el Xeon de Intel.

Pero Cavium no se rindió por razones obvias: en este momento, el mercado de servidores se ha vuelto más atractivo que nunca. Los centros de datos del gigante global Intel generan ingresos de aproximadamente 20 mil millones de dólares estadounidenses (!) Por año. Además, la rentabilidad es del 50%. En términos de ganancias y rotación de dinero, el mercado de servidores es muchas veces mayor que cualquier otro mercado de equipos. Entonces, después de lanzar ThunderX, Cavium prometió lanzar una segunda iteración: administración de energía mejorada, rendimiento mejorado de un solo subproceso e incluso más núcleos (54).
Lo que no juega en manos de Cavium es que si el usuario necesita un servidor, simplemente puede tomar una máquina Intel depurada y confiable. De hecho, las fuertes promesas de Arm, Calxeda, Broadcom, AppliedMicro en los últimos 5 años han seguido siendo promesas, causando una seria ola de escepticismo y desconfianza y la aparición del nuevo servidor Arm SoCs.
Sin embargo, la nueva creación de un Cavium externo merece atención. Se hicieron varios cambios, no solo la adición del número "2" al nombre: Cavium compró el diseño Vulcan de Avago. Vulcan es un diseño de procesador bastante ambicioso, desarrollado originalmente por el equipo de Arm Server SoC Broadcom, y tiene un legado mucho más grande que el ThunderX original. Además, basándose en su experiencia con ThunderX, Cavium pudo introducir algunas mejoras microarquitectónicas en el diseño de Vulcan, mejorando su rendimiento y potencia.
Como resultado, ThunderX2 "resultó" ser un núcleo más elaborado que la generación anterior. El núcleo ThunderX tenía una tubería muy corta y era poco probable que soportara dos instrucciones por ciclo, pero el núcleo Vulcan está diseñado para 8 descargas y ejecuta hasta 4 instrucciones por ciclo. Y aún más: las 4 transmisiones (SMT4) pueden estar activas al mismo tiempo, proporcionando una carga constante de back-end. El nuevo ThunderX2 SoC32 tiene 32 núcleos de este tipo con una frecuencia de hasta 2.5 GHz.

Con hasta 128 subprocesos y al menos ocho controladores DDR4, esta CPU debería funcionar bien en todas las cargas del servidor. En otras palabras, a diferencia de ThunderX (1), ThunderX2 es el primer procesador de servidor Arm y tiene todas las posibilidades de sacudir el equilibrio en el mercado de servidores.
Quién tiene más: especificaciones
Treinta y dos núcleos IPC altos en un paquete parecen prometedores. Pero, ¿cómo se ve el nuevo ThunderX2 en comparación con los productos AMD, Qualcomm e Intel? En la tabla a continuación, comparamos las especificaciones de varios SKU de servidor de gama alta.

Los lectores expertos notarán de inmediato que la parte superior de la línea de procesadores Intel es el Xeon Platinum 8180. Sin embargo, este SKU con 205 W TDP y un precio superior a $ 10,000 generalmente no es comparable con ningún procesador en la lista. Ya casi hemos cruzado la línea de la razón, incluido 8176, que, como nos parece, cae en esta lista de acuerdo con los parámetros de la SKU máxima de los bloques kernel / thread. De hecho, Cavium posiciona al Cavium 9980 como "comparable" con el Xeon Platinum 8164 (e Intel desempeña este papel 8176), pero con frecuencias ligeramente más bajas.
Sin embargo, en términos de rendimiento para el dólar, Cavium compara su buque insignia 9980 con Intel Xeon Gold 6148, y en este caso, el precio del procesador Cavium parece bastante apetitoso. Según los resultados de la prueba, el ThunderX2 más rápido está 30-40% por delante del Xeon 6148, mientras que la oferta de Cavium es $ 1,300 más barata. Un precio tan agresivo explica los rumores de que Qualcomm no va a ingresar al mercado de servidores.
Los datos en la tabla anterior muestran diferencias importantes entre los rivales. Intel parece tener la topología central más avanzada y la velocidad turbo más alta. Qualcomm, mientras tanto, parece más atractivo cuando se trata de rendimiento por vatio.

Al igual que el EPYC de AMD, es probable que el ThunderX2 de Cavium brille en el mercado informático de alto rendimiento (33% de mayor rendimiento, núcleos / subprocesos más altos). Al igual que con el diseño de AMD, el caché EPYC L3 es lento si necesita datos que no están en la ranura de caché local de 8 MB. ThunderX2 es mucho más complejo, con una arquitectura de anillo dual similar a la arquitectura de anillo Xeon v4 (Broadwell-EP). Según la información de Cavium, su arquitectura de anillo sin bloqueo es capaz de proporcionar rendimientos de hasta 6 TB / s.
Esta arquitectura de anillo está conectada a la interconexión del procesador coherente del Cavium (CCPI2 - en la parte superior de la figura), que opera a una velocidad de 600 Gbit / s. Esta conexión conecta dos nodos socket / NUMA. 56 carriles de PCIe 3.0 SoC están conectados al anillo, que Cavium ha ubicado entre 14 controladores PCIe. Estos 14 controladores pueden, a su vez, ramificarse a x4 o x1, como se muestra a continuación.

Además, admite SR-IOV, que es tan importante para la virtualización de E / S (Xen y KVM).
ThunderX: de fácil a complejo
Breve información. El ThunderX original era una versión mejorada de Octeon III: una CPU con la capacidad de ejecutar simultáneamente dos instrucciones (núcleo de doble problema) con dos canales cortos.

Una ventaja del diseño original de ThunderX es su alta eficiencia energética, especialmente para cargas de trabajo con bajo ILP (paralelismo de nivel de instrucción). Por supuesto, un transportador tan corto plantea serias limitaciones para aumentar la velocidad del reloj, y un diseño de diseño simple garantiza un rendimiento bajo de un solo subproceso con cargas ILP medias y altas, mientras que los procesadores fuera de servicio más avanzados pueden extraer la mayor cantidad de "paralelismo oculto" posible. ".
El "nuevo" núcleo del Cavium: Vulcan

En comparación con el ThunderX original, el núcleo del Vulcan ThunderX2 es una bestia completamente diferente. Anunciado en 2014 por Broadcom, Vulcan es un núcleo relativamente grande que controla 4 hilos simultáneos (SMT4). Como resultado, el back-end debería estar bien cargado incluso cuando se trabaja con cargas de servidor con bajo ILP.
Para garantizar la estabilidad de 4 transmisiones SMT, el front-end ThunderX2 puede extraer hasta 64 bytes de un caché de instrucciones asociativas de 8 vías de 32 KB, que está equipado con un sencillo prefetcher de "siguiente línea". Sin embargo, la elección de 8 comandos es posible solo si no hay ramificación en estos 64 bytes. De lo contrario, la selección se interrumpe en la bifurcación.
Esto significa que en el código de ramificación intensiva (bases de datos, AI ...), el buscador recibe un promedio de ± 5 instrucciones por ciclo, ya que una de las 5 instrucciones es una rama. Las instrucciones seleccionadas se envían al búfer de suavizado, un búfer en el que las instrucciones almacenadas se almacenan para la decodificación.

Luego, el decodificador funciona con un paquete de 4 instrucciones. Entre el decodificador y la fase de cambio de nombre, cada secuencia tiene un "buffer de deslizamiento", que consta de 8 paquetes. Con 4 subprocesos, se pueden almacenar hasta 32 paquetes (128 instrucciones) en cualquier momento.
Estas 4 instrucciones, el paquete, se mueven a lo largo de la tubería hasta que se alcanza una única cola de mensajes para el planificador. Al igual que el Detector de flujo de bucle de Intel (funciona como un pequeño caché), también tiene un búfer de bucle y un predictor. Este buffer de bucle elimina las predicciones de ramificación incorrectas y contiene μops decodificados que "acortan" la tubería y reducen la energía utilizada para la decodificación.
Se pueden ejecutar hasta 6 instrucciones a la vez. La implementación incluye 2 ranuras ALU / FP / NEON, 1 ranura ALU / tap, 2 ranuras de carga / almacenamiento (16 bytes) y 1 ranura de almacenamiento limpia que envía 16 bytes a la caché D. Hay un pequeño (Cavium no revelará cuánto) L1 TLB para cambiar con cero retraso de direcciones virtuales a físicas. No hay un captador previo de hardware para el caché L1 D1, pero el caché L2 tiene un captador previo de hardware bastante sofisticado que puede reconocer patrones (puede funcionar paso a paso o recuperar la siguiente línea).
Esto es suficiente para "alimentar" el back-end, que puede admitir 4 instrucciones por ciclo desde 4 hilos diferentes.
Diferencias en microarquitectura
Cavium ha publicado una cantidad limitada de información sobre los núcleos ThunderX2. Algunas características clave de varias arquitecturas de procesador se resumen a continuación.

Un análisis detallado está más allá del alcance de este artículo. Pero puedes leer los análisis de Johan De Gelas sobre la arquitectura de Falkor, Skylake y Zen en AnandTech. Nos limitamos a las diferencias más obvias.
Es bastante obvio que el rendimiento de un solo subproceso de Intel sigue fuera de competencia: el núcleo de Skylake es el núcleo que ejecuta la mayoría de las instrucciones sobre la marcha, y lo más importante, funciona a una mayor velocidad de reloj. El núcleo de ThunderX2 es diferente, ya que extrae un máximo de instrucciones por ciclo, capaz de soportar constantemente 4 hilos. El buscador capturará 8 equipos de un hilo, luego 8 del segundo hilo y continuará alternando entre hilos. Esto significa que una mala predicción puede reducir significativamente el rendimiento de un solo hilo.
Las SKU ThunderX2: 16 a 32 núcleos
El SKU utilizado para las pruebas es ThunderX2 CN9980 2.2. Este es el SKU de gama alta, contiene 32 núcleos a una frecuencia de 2.2 GHz con la capacidad de aumentar hasta 2.5 GHz.

Si crees en los planes de Cavium, en los próximos meses habrá muchos más SKU. Cavium afirma que el CN9980 estará disponible pronto con una frecuencia de 2.5 GHz y turbo de hasta 3 GHz.
Cavium enumeró todas sus SKU planificadas junto con SKU Intel comparables. Según la definición de Cavium, un SKU Intel comparable es un chip que alcanza el mismo SPECInRate (2017) bajo gcc que el SKU de Cavium.

Cavium cree que el CN9880 2.2 que obtuvimos es comparable al 8164. Mucho más caro. Para nuestras pruebas, lo comparamos con el 8176 (Intel SKU disponible para nosotros). No es que importe: 8176 tiene solo un 3% más de velocidad de reloj y 2 núcleos adicionales (+ 7%) en comparación con 8164. Sin embargo, tenga en cuenta que aunque el ThunderX2 Cavium realmente puede competir con los SKU de Intel indicados, ofrecen el mismo rendimiento para un tercio del costo de Intel SKU.
En la siguiente parte:
- Configuración de prueba y metodología
- Subsistema de memoria: ancho de banda
- Rendimiento de un solo subproceso: SPEC CPU2006
- SPEC CPU2006 Cont: rendimiento basado en el núcleo con SMT
Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes?
Apóyenos haciendo un pedido o recomendándolo a sus amigos, un
descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).
Dell R730xd 2 veces más barato? ¡Solo tenemos
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los Estados Unidos! Lea sobre
Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?