Sobre las tendencias de desarrollo de la arquitectura del procesador, o por qué creo en el éxito de Huawei en el mercado de servidores

Vivimos en tiempos interesantes. Me parece que los próximos 2-3 años determinarán a dónde irá el desarrollo de la arquitectura durante la próxima década. Ahora en el mercado de procesadores de servidores hay varios jugadores que representan enfoques de tecnología completamente diferentes. Y esto es muy bueno (incluso me resulta difícil decir en qué sílaba recae el énfasis en la última palabra :))
.
Pero incluso hace 5-6 años, parecía que el tiempo se congeló y el desarrollo se detuvo. Descanse en varios tipos de restricciones (muro de alimentación, muro de escalabilidad, etc.). Hablé un poco sobre eso aquí. La ley de Moore fue cuestionada y los teóricos particularmente ardientes sugirieron introducir correcciones logarítmicas en ella :) El dominio de Intel en el mercado de procesadores de servidores parecía inquebrantable en ese momento. AMD no mostró una competencia seria, las GPGPU de NVidia parecían un producto puramente nicho, y los intentos de ARM de ingresar al mercado de servidores no tuvieron éxito.

Todo ha cambiado con el desarrollo de segmentos como el aprendizaje automático y la inteligencia artificial. Las GPGPU resultaron estar mucho mejor "adaptadas" a las operaciones de convolución y multiplicación de matrices (especialmente con poca precisión) que las CPU. Además, NVidia pudo demostrar un aumento en el número de transistores, incluso antes de la ley de Moore. Esto ha llevado al mundo de las arquitecturas de servidores a convertirse en bipolares. En un extremo está la CPU x86, un motor de latencia adaptado para ocultar latencias fuera de servicio. Su ventaja innegable es su excelente rendimiento en aplicaciones de subproceso único (rendimiento de subproceso único). La desventaja es la gran área y la cantidad de transistores. En el otro extremo de la GPGPU está el motor de rendimiento, una gran cantidad de elementos informáticos sin complicaciones (UE). Aquí, lo opuesto es cierto: el tamaño de un elemento es pequeño,lo que le permite colocar una gran cantidad de ellos en un chip. Por otro lado, el rendimiento de las aplicaciones de un solo hilo deja mucho que desear ...

Por desgracia, los intentos de combinar CPU y GPU de alta potencia en un solo paquete no han tenido éxito hasta ahora. Al menos por la razón de que dicho chip consumirá y disipará demasiada energía. Por lo tanto, las soluciones discretas están ahora en tendencia. Realmente no creo en ellos por dos razones. En primer lugar, la arquitectura se vuelve más compleja y aparecen gags adicionales en forma de bus que conecta la CPU y la GPU, y una estructura de memoria heterogénea. La segunda dificultad está en parte relacionada con la primera, y consiste en el hecho de que tales soluciones son mucho más difíciles de programar. Cada uno de los modelos de programación de acelerador existentes (CUDA de NVidia, DPC ++ de Intel, OpenCL u OpenMP) tiene sus propias ventajas y desventajas. Al mismo tiempo, ninguno de ellos es universal ni dominante.

Me parece que desde el punto de vista del desarrollo de la arquitectura, AMD dio el paso correcto, que introdujo el procesador Rome. Debido a la compacidad del núcleo (en comparación con Intel), se pudieron colocar más núcleos en un caso. Sin embargo, esto por sí solo no es suficiente: para que una solución de este tipo escale el rendimiento, es necesario cuidar la comunicación correcta entre los núcleos (sin núcleo) y la calidad de los tiempos de ejecución paralelos. Los ingenieros de AMD lograron resolver ambos problemas y obtener resultados muy competitivos en uno de los puntos de referencia industriales más importantes: la CPU SPEC. La solución de AMD se encuentra entre los polos proporcionados por Nvidia e Intel. Pero está mucho más cerca de lo último. Esto sigue siendo el mismo "gran núcleo". La media dorada entre los enfoques polares, me parece, requiere núcleos más compactos.Y de las arquitecturas existentes, ARM tiene la mejor oportunidad de ocupar este nicho.
imagen
Entonces, ¿por qué ARM es exactamente de Huawei? Encontré esta respuesta por mí mismo: con un aumento en el número de núcleos en un chip, la importancia del rendimiento de un núcleo disminuye (pero hasta cierto límite), y la importancia de la comunicación entre los núcleos y con la memoria aumenta. Y la comunicación es el área donde Huawei es un líder mundial. Es el diseño sin núcleo (y no solo y ni siquiera el núcleo) lo que determinará el rendimiento del sistema. Y aquí, creo, tenemos buenas posibilidades.

Sin embargo, las arquitecturas ideales existen solo en el vacío. En realidad, siempre es necesario correlacionarse con la cantidad y la estructura del software existente en el mercado de servidores. Y ha sido escrito y optimizado para X86 durante años. Tomará mucho tiempo y esfuerzo hacerlo más "amigable" para la arquitectura ARM. Hay mucho trabajo por delante tanto en el campo de las herramientas de software (compiladores, bibliotecas, tiempos de ejecución) como en el campo de la adaptación de aplicaciones (ingeniería de aplicaciones). Pero creo que el camino será superado por el que camina.

All Articles