Écosystèmes logiciels: principes de construction

image



Cet article a du mal. Il y a quelques mois, on m'a demandé de rédiger une critique sur la création d'écosystèmes logiciels pour différentes architectures. Au début, j'ai nié et plaisanté dans l'esprit que l'écosystème n'est pas la biologie. Ce n'est même pas la technologie. C'est exclusivement une question d'argent. Et parfois sur la politique. Puis il a rassemblé sa volonté en un poing, ses pensées en un tas, s'est assis et a tout écrit littéralement en un jour. En anglais. La revue a ensuite été traduite en chinois et publiée. En cours de route, le traducteur a considérablement amélioré le texte et ajouté quelques réflexions intéressantes. Ensuite, j'ai décidé que le texte pourrait intéresser le public de Habr, et aussi utile pour moi d'y faire référence à l'avenir. Et il a commencé à sculpter la version russe, armé de l'original anglais et de la traduction chinoise. C'était la même lutte avec des termes anglais spécifiques (écosystème SW? = Écosystème logiciel,activation? = promotion, ingénieur d'application? = ingénieur d'application) et des hiéroglyphes encore obscurs. En conséquence, le texte russe a pris plus de temps que l'anglais et le chinois réunis ... Cela arrive.





Au cours des quatre ou cinq dernières décennies, nous avons vu beaucoup d'efforts pour mettre sur le marché de nouvelles architectures de processeurs et de microcontrôleurs. Très peu d’entre eux se sont avérés efficaces à long terme. Deux des exemples les plus révélateurs sont l'architecture x86 pour les serveurs et les PC et ARM pour les téléphones mobiles et les microcontrôleurs. Les autres occupent (occupent) une petite niche ou n'existent pas longtemps. Bien entendu, l'un des éléments clés du succès d'une architecture informatique dans son ensemble est sa capacité à répondre aux besoins des clients les plus importants de son segment. Pour les serveurs, il s'agit d'une demande de performances, pour les appareils mobiles, faible consommation d'énergie / longue durée de vie de la batterie. Mais un autre facteur important est la présence d'un écosystème logiciel riche,qui vous permet de développer efficacement de nouveaux logiciels, ainsi que de porter l'existant. La création d'un écosystème est un processus très long et coûteux, car tous les logiciels d'application nécessaires doivent être développés. Mais ce n'est qu'ainsi que l'architecture peut occuper le segment de marché cible. Cependant, une fois qu'un écosystème est développé, il sert de mécanisme de défense naturel, empêchant les architectures concurrentes d'entrer sur le marché. Dans cet article, l'auteur résume les principaux enseignements tirés de l'expérience appliquée à la tâche de construction d'un écosystème ARM dans le segment de marché des serveurs.Mais ce n'est qu'ainsi que l'architecture peut occuper le segment de marché cible. Cependant, une fois qu'un écosystème est développé, il sert de mécanisme de défense naturel, empêchant les architectures concurrentes d'entrer sur le marché. Dans cet article, l'auteur résume les principales leçons tirées de l'expérience appliquée à la tâche de construction d'un écosystème ARM dans le segment de marché des serveurs.Mais ce n'est qu'ainsi que l'architecture peut occuper le segment de marché cible. Cependant, une fois qu'un écosystème est développé, il sert de mécanisme de défense naturel, empêchant les architectures concurrentes d'entrer sur le marché. Dans cet article, l'auteur résume les principales leçons tirées de l'expérience appliquée à la tâche de construction d'un écosystème ARM dans le segment de marché des serveurs.



Le défi d'aujourd'hui



Aujourd'hui, nous assistons à la période la plus intéressante du marché de la microélectrique. Contrairement à il y a 5 ans, quand Intel contrôlait 95% du marché des entreprises, nous avons aujourd'hui plus d'innovations architecturales que jamais. Le premier à mentionner les puces de la série Ryzen , qui rivalisent sérieusement avec Intel. Cependant, cette innovation n'est pas architecturale: les processeurs AMD utilisent l'écosystème x86 développé. Leur avantage réside dans leur mise en œuvre efficace. D'autres innovations sont plus intéressantes car elles nécessitent la construction d'un nouvel écosystème logiciel.



La «révolution de l'intelligence artificielle» lancée et menée par NVidia a révolutionné le paysage du marché des serveurs. Elle a créé un tout nouveau segment, presque exclusivement contrôlé par son créateur. Il est basé sur la plateforme de programmation parallèle CUDA . CUDA (introduit pour la première fois en 2007) est l'un des exemples intéressants de construction d'un écosystème, nous l'examinerons plus en détail plus tard. À son tour, Intel tente d'introduire son propre GPU (basé en partie sur le système graphique Gen ) pour rivaliser dans le domaine de l'intelligence artificielle. Intel présente OneAPI Toolkit pour créer un environnement de programmation... Il s'agit d'un concept ambitieux de méthode universelle de programmation d'accélérateurs (GPU, AI, FPGA, etc.). De plus, Intel utilise l'open source pour OneAPI, ce qui rend l'interface plus attrayante que les modèles à source fermée. Data Parallel C ++ joue un rôle central dans le concept OneAPI . C'est un ensemble d'extensions C ++ basé sur le standard CYCL. Il me semble que le succès de cette tentative intéressante dépendra de l'inclusion de ces extensions dans les futurs standards C ++. Et aussi de la mise en œuvre efficace du GPU d'Intel. Le dernier exemple est la pénétration de l'architecture ARMdans le domaine de l'intelligence artificielle, du cloud et du calcul haute performance. L'architecture ARM est connue pour son succès sur les marchés de faible puissance et dispose d'un écosystème logiciel important. Par conséquent, une tentative de pénétrer des segments de marché supérieurs semble naturelle. C'est le cas le plus intéressant pour nous, et nous l'examinerons plus en détail sous divers points de vue.



Technologie



Contexte technologique que j'ai donné ici .



Économie



La concurrence accrue d'AMD à Intel a conduit à une «guerre des prix» significative entre les géants des processeurs. Cela réduit les revenus des producteurs, mais facilite la vie des utilisateurs finaux. Au contraire, dans le domaine de l'intelligence artificielle, nous constatons la domination de NVidia, qui dicte le prix au marché. Et ici, les consommateurs recherchent plus activement des systèmes alternatifs.



Politique



En lien avec la montée des tensions géopolitiques, la Chine et la Russie ont tracé la voie du développement d'un écosystème 100% indépendant. Cependant, cela signifie plus qu'une simple indépendance matérielle. Le logiciel joue un rôle tout aussi important. De nombreuses applications doivent être migrées ou remplacées pour une véritable indépendance. L'image ci-dessous illustre la situation en Russie.



image



Le facteur politique crée une forte demande de ressources pour combler les lacunes logicielles et un soutien à long terme pour ces efforts. Il y a plusieurs forces puissantes derrière la création de l'écosystème ARM. Mais il y a aussi des problèmes très graves. Permettez-moi d'en citer quelques-uns:



Problème typique de la poule et de l'œuf au stade précoce



Certaines applications commerciales de source fermée deviennent de facto la norme pour des segments importants. Par exemple, SAP-Hana, Oracle pour les bases de données, VMWarepour la virtualisation, etc. Habituellement, les développeurs ne sont pas intéressés par le portage et la maintenance de leurs produits sur une architecture qui ne dispose pas d'une part de marché suffisante. D'un autre côté, les utilisateurs finaux n'achètent pas de matériel que le logiciel ne prend pas en charge. Il existe plusieurs façons de briser ce cercle vicieux. Le premier est de payer (énormément) d'argent aux éditeurs de logiciels pour le portage. Le second est de créer une solution compétitive qui poussera le produit hors du marché ou forcera le portage souhaité. Le troisième est de convaincre l'un des grands développeurs custom de "pousser" sur lui. Cependant, aucun des deux itinéraires n'est facile ou bon marché.



Logiciels hérités



La plupart des applications du marché des serveurs ont été écrites et optimisées pendant des décennies pour l'architecture x86 dominante. Explicitement ou implicitement, le pari était plus mis sur les performances mono-thread que sur le parallélisme massif. Ainsi, même si le code source est disponible, des retouches et une optimisation importantes peuvent être nécessaires pour s'exécuter correctement sur les serveurs ARM.



Il y a de nombreux problèmes à l'horizon, et pour les résoudre, nous devons étudier



Les leçons du passé



L'histoire des différentes architectures et écosystèmes logiciels est un sujet assez intéressant pour eux, cependant, même la couverture minimale dépasse largement le volume de cet article (assez pour plusieurs thèses). Par conséquent, je décrirai plusieurs cas notables qui peuvent nous aider à naviguer dans les circonstances actuelles.



Au début



, Quand Intel a sorti son premier processeur 8 bits 8080 au milieu des années 70, il avait peu d'avantage architectural sur ses concurrents le Motorola 6800 ou le Zilog Z80.... Pourtant, Intel a été le premier à reconnaître l'importance des logiciels dans la promotion du matériel. Elle a également été la première à introduire son propre compilateur pour accélérer, simplifier et réduire le coût du développement logiciel. Ce sont les outils qui ont créé un avantage concurrentiel important pour Intel et lui ont permis de réussir dès le début. Intel a ensuite introduit MKL pour l'algèbre linéaire, VTunepour l'optimisation des programmes et de nombreux autres outils qui ont joué un rôle important dans la formation de l'écosystème x86. De plus, Intel a garanti la compatibilité de ses outils. Plus tard, Intel a réalisé l'importance du système d'exploitation, qui gère le fonctionnement du matériel. Son tandem avec Microsoft (Wintel) est devenu la force dominante sur le marché des PC pendant environ trois décennies. Cependant, avec le développement du marché des serveurs, Linux et l'open source en général sont devenus très pertinents. Ainsi, Intel est devenu le principal contributeur au noyau Linux, et est toujours en position numéro 1 (devinez qui est le numéro 2?). Plus important encore, Intel a toujours strictement respecté la compatibilité binaire (rétrocompatibilité) de ses plates-formes. Le fait que les binaires créés pour toute génération d'architecture précédente fonctionnent sur une génération ultérieure hors de la boîte,et a permis à x86 de devenir la force dominante. Construire un écosystème prend du temps, mais cela en vaut la peine.



Lever et coucher du soleil



C'est le seul contre-exemple où un écosystème développé a joué contre son créateur. Au début des années 2000, Sun Microsystems occupait une place importante sur le marché des serveurs SPARC. L'entreprise a initié et développé l'écosystème Java . Le problème, cependant, est que la machine Java est basée sur un interpréteur et non sur un compilateur. Ainsi, lorsque les circonstances ont forcé Sun à ouvrir Java, c'était le début de la fin. En implémentant l'interpréteur Java pour x86, Intel a progressivement poussé Sun hors du marché des serveurs. La leçon à tirer est que les langues interprétées (si populaires aujourd'hui) ne sont pas des défenseurs efficaces des parts de marché.



Le succès d'ARM sur le marché de la faible puissance



L'architecture des postes de travail domine le marché des téléphones portables et des tablettes depuis le début des années 2000. La nature de sa domination est très différente de celle de x86 sur les PC et les serveurs. ARM est une communauté ouverte - la licence est relativement peu coûteuse, ce qui crée les conditions préalables pour un grand nombre de joueurs pour entrer dans le jeu. Et le système d' exploitation Android ouvert réduit encore la barrière à l'entrée. Le fait que les principaux acteurs (Samsung, Qualcomm, Huawei, etc.) se soient rendu compte de la nécessité d'une alliance industrielle pour créer un écosystème a également joué un rôle. Cela a permis de le construire en très peu de temps.



La tentative d'Intel d'envahir le marché mobile



Vers 2007, Intel (ou un peu plus tôt) a réalisé le potentiel du marché des téléphones mobiles et des tablettes et a tenté de le conquérir. Le projet était basé sur l'architecture Atom (x86 à faible consommation d'énergie) et la traduction binaire d'ARM vers x86 ( Houdini ). Ce mécanisme tire parti de l'écosystème logiciel existant. Les applications ont été lancées sur les appareils Intel en un temps record. Cependant, deux faits ont joué contre Intel. Le premier est l'incapacité de rattraper ARM en termes de consommation d'énergie. Le second est la complexité de la traduction binaire du RISC au jeu d'instructions CISC plus complexe ... Cette traduction implique une surcharge importante qui peut être inacceptable pour certaines classes d'applications. Ainsi, la diffusion binaire peut être considérée comme un outil d'entrée sur le marché, mais elle ne peut guère servir de solution à long terme.



Écosystème CUDA



Si le succès de Nvidia dans le segment de l'IA est indéniable, le développement de son propre écosystème CUDA pose toujours mes questions. Par exemple, en HPC, la proportion d'applications utilisant CUDA est encore faible. La raison en est le coût élevé du portage et de la maintenance de ces applications. Certains développeurs ont porté leurs codes (avec l'aide considérable des ingénieurs de NVidia), mais les ont ensuite abandonnés en raison du coût du support. Au contraire, dans le segment de l'intelligence artificielle, la position de Nidia est extrêmement forte. Cependant, les chercheurs utilisent principalement des frameworks de plus haut niveau ( TensorFlow , PyTorchetc.) et ne programmez pas directement dans CUDA. Cela nous amène à la conclusion que le choix du bon niveau d'abstraction pour le «harnais logiciel» est d'une grande importance pour l'avancement du matériel.



Retour vers le futur



Revenons maintenant à notre tâche, armés des leçons du passé.



Industry Alliance



Le plus gros problème de l'écosystème ARM dans le segment des serveurs, par opposition au mobile, est qu'il est encore très fragmenté. Nous avons besoin d'une sorte de centre de gravité pour coordonner les efforts. L'alliance semble naturelle, étant donné que la part de tous les fournisseurs ARM sur le marché des serveurs est d'environ 1%. Ils n'ont tout simplement aucune raison de rivaliser. La tâche de construction conjointe d'un écosystème doit primer sur la différenciation entre eux. Un certain nombre de tentatives ont été faites pour créer une telle alliance.



On peut citer l' Open Green Computing Consortium(openGCC - il est difficile pour un programmeur de penser à un nom plus farfelu), et nos efforts récents au sein du Comité ARM Advanced Technology au sein d'APCIT . Cela pourrait être un bon début, mais les deux sont des alliances locales. Open GCC est une organisation chinoise et APKIT est une organisation russe. L'industrie dicte la nécessité d'une alliance mondiale qui peut servir à plusieurs fins:



synchronisation et influence sur les régulateurs



Premièrement, il doit y avoir un accord entre les fournisseurs ARM eux-mêmes pour s'assurer que le logiciel est portable sur les plates-formes de différents fournisseurs. Deuxièmement, ce sera l'occasion de travailler avec les organismes de normalisation internationaux et locaux. Troisièmement, cela enverra un signal puissant aux gouvernements et aux sociétés que l'écosystème ARM émergent peut servir d'alternative viable à l'actuel. Bien que ce fait ne soit pas pleinement réalisé.



Travailler avec des fournisseurs de systèmes d'exploitation et d'applications



Comme nous l'avons vu par expérience, les systèmes d'exploitation jouent un rôle central dans la construction d'un écosystème logiciel. Vous remarquerez peut-être également que les systèmes d'exploitation développés par les fournisseurs de matériel n'ont pas toujours eu beaucoup de succès (à l'exception d'Apple). Il est donc stratégiquement très important de travailler avec les fournisseurs de systèmes d'exploitation. Une partie de cela se produit maintenant - les correctifs, les mises à jour, apparaissant dans les dernières versions du noyau Linux, les compilateurs et la glibc, améliorent les performances des systèmes ARM pour une grande variété de charges de travail. Mais ces efforts sont encore très fragmentés, chaque fournisseur le faisant seul, ce qui prend généralement assez de temps. L'Alliance peut aider à synchroniser ces efforts et accélérer l'adoption des mises à jour.



Nous avons également vu que résoudre le problème de la poule et de l'œuf au début de l'avancement d'une architecture peut être très difficile. L'alliance pourrait fournir un levier supplémentaire dans les négociations avec les fournisseurs de logiciels et aider à partager le fardeau de la promotion précoce entre les fabricants de matériel.



Système de distribution de logiciels Le



troisième point important ici est la distribution de logiciels. De nos jours, le logiciel serveur ARM est généralement construit à partir de la source, ce qui prend du temps et des ressources matérielles. Alors que pour x86, il existe un schéma pratique basé sur RPM utilisé pour la distribution. Faire quelque chose comme ça demandera beaucoup de travail avec les éditeurs de logiciels indépendants et les fournisseurs de systèmes d'exploitation. Et l'alliance peut être très utile pour aider dans cette direction.



Création d'outils efficaces



Par le passé, les outils logiciels se sont avérés être un outil fiable pour le développement des écosystèmes. Par conséquent, leur attention est aujourd'hui d'une importance cruciale. L'un des meilleurs exemples est Intel Corporation, qui a combiné des développeurs de logiciels et des ingénieurs d'application dans une seule organisation, comme indiqué ci-dessous. Le rouge indique une interaction critique, le vert indique une interaction régulière, le jaune indique une interaction sporadique.



image



Cela garantit une collaboration étroite entre les développeurs d'outils. Cela permet aux ingénieurs d'application (AE) d'utiliser les meilleurs outils de l'industrie. Les AE exécutant les mêmes charges de travail partagent leurs connaissances et fournissent des commentaires consolidés aux architectes matériels. Etc. Etc. Tout cela a conduit à un phénomène intéressant: les ingénieurs travaillant dans une telle organisation ont commencé à penser non seulement à leurs produits, mais aussi à la vue d'ensemble de l'écosystème. Ils prennent en compte l'interdépendance entre eux, ainsi que l'impact sur l'écosystème dans son ensemble,

mais pour créer une telle organisation, il faut un «langage commun» que toutes les parties peuvent utiliser pour communiquer. À un moment donné, la méthode d'analyse de la microarchitecture TMAM est devenue telle.



image



TMAM fournit un moyen de collecter, d'interpréter et d'utiliser des événements de microarchitecture pour profiler et optimiser les applications.



image



L'avantage le plus important de cette méthode est qu'elle donne une image objective de ce qui se passe dans le matériel et vous permet de l'améliorer à la fois et le logiciel. Mais peut-être plus important encore, c'est un moyen unique de créer une organisation efficace de promotion du matériel.



Conclusion



Construire un écosystème ARM sur le marché des serveurs semble prometteur d'un point de vue économique, politique et technologique. Cependant, il se déroule dans le contexte d'une forte concurrence de l'architecture x86 dominante. De plus, les premiers problèmes liés à l'avancée de l'architecture sont encore loin d'être résolus. Cependant, je crois qu'à l'avenir, ARM peut devenir une force sérieuse sur le marché des serveurs. La création d'une alliance industrielle mondiale et d'une organisation efficace de création d'écosystèmes semble hautement souhaitable.



Construire un écosystème ARM sur le marché des serveurs semble prometteur d'un point de vue économique, politique et technologique. Cependant, il se déroule dans le contexte d'une forte concurrence de l'architecture x86 dominante. De plus, les premiers problèmes liés à l'avancée de l'architecture sont encore loin d'être résolus. Cependant, je crois qu'à l'avenir, ARM peut devenir une force sérieuse sur le marché des serveurs. La création d'une alliance industrielle mondiale et d'une organisation efficace de création d'écosystèmes semble hautement souhaitable.



La Russie est considérée comme l'une des arènes les plus prometteuses pour la construction de l'écosystème ARM à bien des égards. L'engagement du gouvernement envers l'indépendance de l'information fournit un soutien à long terme à cette initiative. Cependant, le potentiel de l'écosystème ARM n'a pas encore été pleinement réalisé au niveau gouvernemental. Un travail sérieux est nécessaire pour que notre voix soit entendue. Une autre raison est le marché relativement important et la variété des marques personnalisées, privées et publiques. Par exemple, on peut citer les géants de l'extraction de ressources (Gazprom, Lukoil, Rosneft), les principales banques (Sberbank, VTB, Alpha), les fournisseurs de services mobiles (MTC, Megafon, Beeline, Tele2). On prend de plus en plus conscience du besoin d'alternatives aux infrastructures existantes (x86, IBM, Oracle), tant en termes de sécurité qu'en termes de tarification.



Et enfin, les ressources humaines. De nombreux programmeurs en Russie ont de l'expérience dans la résolution de problèmes d'écosystèmes et pensent en ces termes.



All Articles