Ecosistemas de software: principios de construcción

imagen



Este artículo lo pasa mal. Hace un par de meses me pidieron que escribiera una reseña sobre el tema de la construcción de ecosistemas de software para diferentes arquitecturas. Al principio negué y bromeé con el espíritu de que el ecosistema no es biología. Ni siquiera es tecnología. Se trata exclusivamente de dinero. Y a veces de política. Luego reunió su voluntad en un puño, sus pensamientos en un montón, se sentó y escribió todo literalmente en un día. En inglés. Luego, la revisión se tradujo al chino y se publicó. En el camino, el traductor mejoró significativamente el texto y agregó un par de pensamientos interesantes. Entonces decidí que el texto podría ser de interés para la audiencia de Habr, y también me sería útil poder consultarlo en el futuro. Y comenzó a esculpir la versión rusa, armado con el original en inglés y la traducción al chino. Fue la misma lucha con términos específicos en inglés (¿ecosistema de software? = Ecosistema de software,habilitación? = promoción, ingeniero de aplicaciones? = ingeniero de aplicaciones) y jeroglíficos aún desconocidos. Como resultado, el texto ruso tomó más tiempo que el inglés y el chino combinados ... Sucede.





Durante las últimas cuatro o cinco décadas, hemos visto muchos esfuerzos para llevar al mercado nuevas arquitecturas de procesadores y microcontroladores. Muy pocos de estos han demostrado tener éxito a largo plazo. Dos de los ejemplos más reveladores son la arquitectura x86 para servidores y PC y ARM para teléfonos móviles y microcontroladores. El resto ocupan (ocuparon) un pequeño nicho o no existieron por mucho tiempo. Por supuesto, uno de los componentes clave del éxito de una arquitectura informática en su conjunto es su capacidad para satisfacer las necesidades más importantes de los clientes en su segmento. Para los servidores, esta demanda es el rendimiento; para los dispositivos móviles, bajo consumo de energía / batería de larga duración. Pero otro factor importante es la presencia de un rico ecosistema de software,lo que le permite desarrollar de manera efectiva un nuevo software, así como portar el existente. La creación de ecosistemas es un proceso costoso y que requiere mucho tiempo, ya que se debe desarrollar todo el software de aplicación requerido. Pero solo así la arquitectura puede ocupar el segmento de mercado objetivo. Sin embargo, una vez que se desarrolla un ecosistema, sirve como un mecanismo de defensa natural, evitando que las arquitecturas de la competencia ingresen al mercado. En este artículo, el autor resume las lecciones clave aprendidas de la experiencia aplicada a la tarea de construir un ecosistema ARM en el segmento del mercado de servidores.Pero solo así la arquitectura puede ocupar el segmento de mercado objetivo. Sin embargo, una vez que se desarrolla un ecosistema, sirve como un mecanismo de defensa natural, evitando que las arquitecturas de la competencia ingresen al mercado. En este artículo, el autor resume las lecciones clave aprendidas de la experiencia aplicada a la tarea de construir un ecosistema ARM en el segmento del mercado de servidores.Pero solo así la arquitectura puede ocupar el segmento de mercado objetivo. Sin embargo, una vez que se desarrolla un ecosistema, sirve como un mecanismo de defensa natural, evitando que las arquitecturas de la competencia ingresen al mercado. En este artículo, el autor resume las lecciones clave aprendidas de la experiencia aplicada a la tarea de construir un ecosistema ARM en el segmento del mercado de servidores.



El desafío de hoy



Hoy asistimos al momento más interesante del mercado de la microeléctrica. A diferencia de hace 5 años, cuando Intel controlaba el 95% del mercado corporativo, hoy tenemos más innovaciones arquitectónicas que nunca. El primero en mencionar los chips de la serie Ryzen , que compiten seriamente con Intel. Sin embargo, esta innovación no es una innovación arquitectónica: los procesadores AMD utilizan el ecosistema x86 desarrollado. Su ventaja radica en su implementación eficiente. Otras innovaciones son más interesantes porque requieren la construcción de un nuevo ecosistema de software.



La "revolución de la inteligencia artificial" iniciada y liderada por NVidia ha revolucionado el panorama del mercado de servidores. Creó un segmento completamente nuevo, controlado casi exclusivamente por su creador. Está basado en -plataforma de programación paralela CUDA . CUDA (introducido por primera vez en 2007) es uno de los ejemplos interesantes de la construcción de un ecosistema, lo veremos con más detalle más adelante. A su vez, Intel está intentando introducir su propia GPU (basada en parte en la GPU Gen ) para competir en el campo de la inteligencia artificial. Intel ha introducido el kit de herramientas OneAPI para crear el entorno de programación . Este es un concepto ambicioso de un método universal para programar aceleradores (GPU, AI, FPGA, etc.). Además, Intel utiliza código abierto para OneAPI, lo que hace que la interfaz sea más atractiva que los modelos de código cerrado. Central para el concepto de OneAPI esDatos en paralelo C ++ . Es un conjunto de extensiones C ++ basadas en el estándar CYCL. Me parece que el éxito de este interesante intento dependerá de la inclusión de estas extensiones en los futuros estándares de C ++. Y también de la implementación efectiva de la GPU de Intel. El último ejemplo es la penetración de la arquitectura ARM en el campo de la inteligencia artificial, la nube y la informática de alto rendimiento. La arquitectura ARM es conocida por su éxito en los mercados de baja potencia y tiene un ecosistema de software importante. Por tanto, parece natural intentar penetrar en segmentos de mercado superiores. Este es el caso más interesante para nosotros, y lo consideraremos con más detalle desde varios puntos de vista.



Tecnología



Antecedentes tecnológicos que he dado aquí .



Economía



La creciente competencia de AMD a Intel ha llevado a una significativa "guerra de precios" entre los gigantes de los procesadores. Esto reduce los ingresos de los productores, pero facilita la vida de los usuarios finales. Por el contrario, en el campo de la inteligencia artificial, estamos viendo el dominio de NVidia, que dicta el precio al mercado. Y aquí los consumidores buscan más activamente sistemas alternativos.



Política



En relación con el aumento de las tensiones geopolíticas, China y Rusia se han embarcado en un curso para desarrollar un ecosistema 100% independiente. Sin embargo, esto significa algo más que independencia del hardware. El software juega un papel igualmente importante. Muchas aplicaciones deben migrarse o reemplazarse para garantizar una verdadera independencia. La siguiente imagen ilustra la situación en Rusia.



imagen



El factor político crea una fuerte demanda de recursos para cerrar las brechas de software y el apoyo a largo plazo para estos esfuerzos. Hay varias fuerzas poderosas detrás de la creación del ecosistema ARM. Pero también hay problemas muy graves. Permítanme nombrar algunos de ellos:



Problema típico del huevo y la gallina en etapa inicial



Algunas aplicaciones comerciales de código cerrado se están convirtiendo en el estándar de facto para segmentos importantes. Por ejemplo, SAP-Hana, Oracle para bases de datos, VMWarepara virtualización, etc. Por lo general, los desarrolladores no están interesados ​​en portar y mantener sus productos en una arquitectura que no tiene una participación de mercado suficiente. Por otro lado, los usuarios finales no compran hardware que el software no admita. Hay varias formas de romper este círculo vicioso. La primera es pagar (enorme) dinero a las empresas de software por la portabilidad. El segundo es crear una solución competitiva que empujará el producto fuera del mercado o forzará la portabilidad deseada. El tercero es convencer a uno de los grandes desarrolladores personalizados de que lo "presione". Sin embargo, ninguna ruta es fácil ni barata.



Software heredado



La mayoría de las aplicaciones en el mercado de servidores se han escrito y optimizado durante décadas para la arquitectura x86 dominante. De manera explícita o implícita, lo que estaba en juego era más el rendimiento de un solo subproceso que el paralelismo masivo. Por lo tanto, incluso si el código fuente está disponible, es posible que se requiera una reelaboración y una optimización importantes para que se ejecute correctamente en los servidores ARM.



Hay muchos problemas en el horizonte, y para solucionarlos debemos estudiar



Lecciones del pasado



La historia de varias arquitecturas y ecosistemas de software es un tema bastante interesante para ellos, pero incluso la cobertura mínima excede significativamente el volumen de este artículo (suficiente para varias disertaciones). Por lo tanto, describiré varios casos notables que pueden ayudarnos a navegar por las circunstancias actuales.



En los primeros



días, cuando Intel lanzó su primer procesador 8080 de 8 bits a mediados de los 70, tenía pocas ventajas arquitectónicas sobre sus competidores, el Motorola 6800 o Zilog Z80.... Sin embargo, Intel fue el primero en reconocer la importancia del software en la promoción del hardware. También fue la primera en presentar su propio compilador para acelerar, simplificar y reducir el costo del desarrollo de software. Fueron las herramientas las que crearon una ventaja competitiva importante para Intel y le permitieron tener éxito desde el principio. Intel introdujo posteriormente MKL para álgebra lineal, VTunepara la optimización de programas y muchas otras herramientas que han jugado un papel importante en la formación del ecosistema x86. Además, Intel ha garantizado la compatibilidad de sus herramientas. Más tarde, Intel se dio cuenta de la importancia del sistema operativo, que controla el funcionamiento del hardware. Su tándem con Microsoft (Wintel) se convirtió en la fuerza dominante en el mercado de PC durante aproximadamente tres décadas. Sin embargo, con el desarrollo del mercado de servidores, Linux y el código abierto en general se han vuelto muy relevantes. Por lo tanto, Intel se convirtió en el principal contribuyente al kernel de Linux y todavía se encuentra en la posición número 1 (¿adivina quién es el número 2?) Más importante aún, Intel siempre se ha adherido estrictamente a la compatibilidad binaria (compatibilidad con versiones anteriores) de sus plataformas. El hecho de que los binarios creados para cualquier generación anterior de arquitectura funcionen en una generación posterior lista para usar,y permitió que x86 se convirtiera en la fuerza dominante. Construir un ecosistema lleva tiempo, pero vale la pena.



Amanecer y atardecer



Este es el único contraejemplo en el que un ecosistema desarrollado jugó contra su creador. A principios de la década de 2000, Sun Microsystems tenía un nicho importante en el mercado de servidores SPARC. La empresa inició y desarrolló el ecosistema Java . Sin embargo, el problema es que la máquina Java se basa en un intérprete, no en un compilador. Entonces, cuando las circunstancias obligaron a Sun a abrir Java, fue el principio del fin. Al implementar el intérprete de Java para x86, Intel sacó gradualmente a Sun del mercado de servidores. La lección que se debe aprender es que los idiomas interpretados (tan populares hoy en día) no son defensores efectivos de la participación de mercado.



El éxito de ARM en el mercado de baja potencia



La arquitectura de la estación de trabajo ha liderado el mercado de teléfonos móviles y tabletas desde principios de la década de 2000. La naturaleza de su dominio es muy diferente a la de x86 en PC y servidores. ARM es una comunidad abierta: la licencia es relativamente económica, lo que crea los requisitos previos para que una gran cantidad de jugadores ingresen al juego. Y el sistema operativo abierto de Android reduce aún más la barrera de entrada. También jugó un papel cuando los principales actores (Samsung, Qualcomm, Huawei, etc.) se dieron cuenta de la necesidad de una alianza industrial para crear un ecosistema. Esto hizo posible construirlo en muy poco tiempo.



El intento de Intel de invadir el mercado móvil



Alrededor de 2007, Intel (o un poco antes) se dio cuenta del potencial del mercado de teléfonos móviles y tabletas e intentó conquistarlo. El proyecto se basó en la arquitectura Atom (x86 con bajo consumo de energía) y traducción binaria de ARM a x86 ( Houdini ). Este mecanismo aprovecha el ecosistema de software existente. Las aplicaciones se lanzaron en dispositivos Intel en un tiempo récord. Sin embargo, dos hechos jugaron en contra de Intel. El primero es la incapacidad de ponerse al día con ARM en términos de consumo de energía. El segundo es la complejidad de la traducción binaria de RISC a un conjunto de instrucciones CISC más complejo... Esta traducción implica una sobrecarga significativa que puede ser inaceptable para algunas clases de aplicaciones. Por lo tanto, la radiodifusión binaria puede verse como una herramienta de entrada al mercado, pero difícilmente puede servir como una solución a largo plazo.



Ecosistema CUDA



Si bien el éxito de Nvidia en el segmento de la IA es innegable, el desarrollo de su propio ecosistema CUDA todavía plantea mis preguntas. Por ejemplo, en el campo de la informática de alto rendimiento, la proporción de aplicaciones que utilizan CUDA sigue siendo baja. La razón es el alto costo de trasladar y mantener tales aplicaciones. Algunos desarrolladores portaron (con considerable ayuda de los ingenieros de NVidia) sus códigos, pero luego los abandonaron debido al costo de soporte. Por el contrario, en el segmento de la inteligencia artificial, la posición de Nidia es extremadamente fuerte. Sin embargo, los investigadores utilizan principalmente marcos de trabajo de nivel superior ( TensorFlow , PyTorchy así sucesivamente) y no programe directamente en CUDA. Esto nos lleva a la conclusión de que elegir el nivel correcto de abstracción para el "arnés de software" es de gran importancia para el avance del hardware.



Regreso al futuro



Ahora volvamos a nuestra tarea, armados con las lecciones del pasado.



Industry Alliance



El mayor problema con el ecosistema ARM en el segmento de servidores, a diferencia del móvil, es que todavía está muy fragmentado. Necesitamos algún tipo de centro de atracción para coordinar esfuerzos. La alianza parece bastante natural, dado que la participación de todos los proveedores de ARM en el mercado de servidores es de aproximadamente el 1%. Simplemente no tienen ninguna razón para competir. La tarea de construir un ecosistema en conjunto debe tener prioridad sobre la diferenciación entre ellos. Se han realizado varios intentos para crear tal alianza.



Se puede mencionar el Open Green Computing Consortium (openGCC - es difícil para un programador pensar en un nombre más loco), y nuestros recientes esfuerzosComité de Tecnología Avanzada ARM dentro de APKIT . Este podría ser un buen comienzo, pero ambas son alianzas locales. Open GCC es una organización china y APKIT es rusa. La industria dicta la necesidad de una alianza global que pueda servir para múltiples propósitos:



Sincronización e influencia regulatoria En



primer lugar, es necesario que exista algún acuerdo entre los propios proveedores de ARM para garantizar la portabilidad del software en múltiples plataformas de proveedores. En segundo lugar, brindará la oportunidad de trabajar con organismos de normalización locales e internacionales. En tercer lugar, enviará una señal poderosa a los gobiernos y las sociedades de que el ecosistema ARM emergente puede servir como una alternativa viable al existente. Si bien este hecho no se comprende completamente.



Trabajar con proveedores de sistemas operativos y aplicaciones



Como hemos visto por experiencia, los sistemas operativos juegan un papel central en la construcción de un ecosistema de software. También puede notar que los sistemas operativos desarrollados por los proveedores de hardware históricamente no han tenido mucho éxito (con la excepción de Apple). Por eso, trabajar con los proveedores de sistemas operativos es estratégicamente muy importante. Esto está sucediendo en parte ahora: parches, actualizaciones, que aparecen en las últimas versiones del kernel de Linux, compiladores y glibc, mejoran el rendimiento de los sistemas ARM para una amplia variedad de cargas de trabajo. Pero estos esfuerzos todavía están muy fragmentados, y cada proveedor lo hace por su cuenta, lo que generalmente lleva bastante tiempo. La Alianza puede ayudar a sincronizar estos esfuerzos y acelerar la adopción de actualizaciones.



También vimos que resolver el problema del huevo y la gallina en las primeras etapas del avance de una arquitectura puede ser muy difícil. La alianza podría proporcionar una influencia adicional en las negociaciones con los proveedores de software y ayudar a compartir la carga de la promoción temprana entre los fabricantes de hardware.



Sistema de distribución de software El



tercer punto importante aquí es la distribución de software. Hoy en día, el software del servidor ARM generalmente se construye desde la fuente, lo que requiere tiempo y recursos de hardware. Mientras que para x86 hay un práctico esquema basado en RPM que se utiliza para la distribución. Hacer algo como esto requeriría mucho trabajo con los ISV y los proveedores de sistemas operativos. Y la alianza puede ser muy útil para ayudar en esta dirección.



Creación de herramientas eficaces



En el pasado, las herramientas de software han demostrado ser una herramienta confiable para el desarrollo de ecosistemas. Por lo tanto, hoy en día prestarles atención es de vital importancia. Uno de los mejores ejemplos es Intel Corporation, que combinó desarrolladores de software e ingenieros de aplicaciones en una sola organización, como se muestra a continuación. El rojo indica interacción crítica, el verde indica regular, el amarillo indica esporádica.



imagen



Esto asegura una estrecha colaboración entre los desarrolladores de herramientas. Esto permite a los ingenieros de aplicaciones (AE) utilizar las mejores herramientas de la industria. Los AE que ejecutan las mismas cargas de trabajo comparten conocimientos entre sí y brindan comentarios consolidados a los arquitectos de hardware. Etc. Etc. Todo esto condujo a un fenómeno interesante: los ingenieros que trabajaban en tal organización comenzaron a pensar no solo en sus productos, sino también en el panorama general del ecosistema. Tienen en cuenta la interdependencia entre ellos, así como el impacto en el ecosistema en su conjunto,

pero para crear una organización de este tipo, se necesita una especie de "lenguaje común" que todas las partes puedan utilizar para comunicarse. En algún momento, el método de análisis de microarquitectura TMAM se convirtió en tal.



imagen



TMAM proporciona una forma de recopilar, interpretar y utilizar eventos de microarquitectura para perfilar y optimizar aplicaciones.



imagen



La ventaja más importante de este método es que brinda una imagen objetiva de lo que está sucediendo en el hardware y le permite mejorar tanto el software como el mismo. Pero quizás lo más importante es que es un vehículo único para construir una organización de promoción de hardware eficaz.



Conclusión



La construcción de un ecosistema ARM en el mercado de servidores parece prometedora desde un punto de vista económico, político y tecnológico. Sin embargo, se lleva a cabo en el contexto de una fuerte competencia de la arquitectura x86 dominante. Además, los primeros problemas del avance de la arquitectura aún están lejos de resolverse. Sin embargo, creo que en el futuro ARM puede convertirse en una fuerza importante en el mercado de servidores. La creación de una alianza industrial global y una organización eficaz para la construcción de ecosistemas parece muy deseable.



La construcción de un ecosistema ARM en el mercado de servidores parece prometedora desde un punto de vista económico, político y tecnológico. Sin embargo, se lleva a cabo en el contexto de una fuerte competencia de la arquitectura x86 dominante. Además, los primeros problemas del avance de la arquitectura aún están lejos de resolverse. Sin embargo, creo que en el futuro ARM puede convertirse en una fuerza importante en el mercado de servidores. La creación de una alianza industrial global y una organización eficaz para la construcción de ecosistemas parece muy deseable.



Rusia es vista como uno de los escenarios más prometedores para construir el ecosistema ARM desde muchos puntos de vista. El compromiso del gobierno con la independencia de la información proporciona un apoyo a largo plazo para esta iniciativa. Sin embargo, el potencial del ecosistema ARM aún no se ha realizado plenamente a nivel gubernamental. Se necesita un trabajo serio para que nuestra voz sea escuchada. Otra razón es el mercado relativamente grande y la variedad de marcas personalizadas, tanto privadas como públicas. Por ejemplo, se pueden nombrar gigantes de extracción de recursos (Gazprom, Lukoil, Rosneft), bancos líderes (Sberbank, VTB, Alpha), proveedores de servicios móviles (MTC, Megafon, Beeline, Tele2). Existe una creciente conciencia de la necesidad de alternativas a la infraestructura existente (x86, IBM, Oracle), tanto en términos de seguridad como de precios.



Y por último, pero no menos importante, los recursos humanos. Hay muchos programadores en Rusia que tienen experiencia en la resolución de problemas de ecosistemas y piensan en estos términos.



All Articles