Software-Ökosysteme: Bauprinzipien

Bild



Dieser Artikel hat es schwer. Vor ein paar Monaten wurde ich gebeten, eine Rezension zum Thema Erstellen von Software-Ökosystemen für verschiedene Architekturen zu schreiben. Zuerst leugnete ich und scherzte im Geiste, dass das Ökosystem keine Biologie ist. Es ist nicht einmal Technologie. Hier geht es ausschließlich um Geld. Und manchmal über Politik. Dann sammelte er seinen Willen zu einer Faust, Gedanken auf einem Haufen, setzte sich und schrieb alles buchstäblich an einem Tag. Auf Englisch. Die Rezension wurde dann ins Chinesische übersetzt und veröffentlicht. "Unterwegs" hat der Übersetzer den Text erheblich verbessert und einige interessante Gedanken hinzugefügt. Dann entschied ich, dass der Text für das Habr-Publikum von Interesse sein könnte und auch für mich nützlich sein könnte, um in Zukunft darauf zu verweisen. Und er begann, die russische Version zu formen, bewaffnet mit dem englischen Original und der chinesischen Übersetzung. Es war der gleiche Kampf mit bestimmten englischen Begriffen (SW-Ökosystem? = Software-Ökosystem,Aktivieren von? = Promotion, Application Engineer? = Application Engineer) und immer noch obskuren Hieroglyphen. Infolgedessen dauerte der russische Text länger als der englische und der chinesische Text zusammen ... Es passiert.





In den letzten vier oder fünf Jahrzehnten haben wir große Anstrengungen unternommen, um neue Prozessor- und Mikrocontroller-Architekturen auf den Markt zu bringen. Nur sehr wenige davon haben sich langfristig als erfolgreich erwiesen. Zwei der aussagekräftigsten Beispiele sind die x86-Architektur für Server und PCs sowie ARM für Mobiltelefone und Mikrocontroller. Der Rest besetzt entweder eine kleine Nische oder existiert nicht lange. Eine der Schlüsselkomponenten für den Erfolg einer Computerarchitektur insgesamt ist natürlich die Fähigkeit, die wichtigsten Kundenanforderungen in ihrem Segment zu erfüllen. Für Server ist diese Anforderung Leistung, für mobile Geräte geringer Stromverbrauch / lange Akkulaufzeit. Ein weiterer wichtiger Faktor ist das Vorhandensein eines reichhaltigen Software-Ökosystems.Dies ermöglicht es Ihnen, neue Software effektiv zu entwickeln und die vorhandene zu portieren. Die Schaffung eines Ökosystems ist ein sehr zeitaufwändiger und teurer Prozess, da alle erforderlichen Anwendungssoftware entwickelt werden müssen. Aber nur so kann Architektur das Zielmarktsegment einnehmen. Sobald ein Ökosystem entwickelt ist, dient es als natürlicher Abwehrmechanismus und verhindert, dass konkurrierende Architekturen auf den Markt kommen. In diesem Artikel fasst der Autor die wichtigsten Lehren aus den Erfahrungen beim Aufbau eines ARM-Ökosystems im Servermarktsegment zusammen.Aber nur so kann Architektur das Zielmarktsegment einnehmen. Sobald ein Ökosystem entwickelt ist, dient es als natürlicher Abwehrmechanismus und verhindert, dass konkurrierende Architekturen auf den Markt kommen. In diesem Artikel fasst der Autor die wichtigsten Lehren aus den Erfahrungen beim Aufbau eines ARM-Ökosystems im Servermarktsegment zusammen.Aber nur so kann Architektur das Zielmarktsegment einnehmen. Sobald ein Ökosystem entwickelt ist, dient es als natürlicher Abwehrmechanismus und verhindert, dass konkurrierende Architekturen auf den Markt kommen. In diesem Artikel fasst der Autor die wichtigsten Lehren aus den Erfahrungen beim Aufbau eines ARM-Ökosystems im Servermarktsegment zusammen.



Die heutige Herausforderung



Heute erleben wir die interessanteste Zeit auf dem Mikroelektrikmarkt. Anders als vor 5 Jahren, als Intel 95% des Unternehmensmarktes kontrollierte, haben wir heute mehr architektonische Innovationen als je zuvor. Die ersten, die die Chips der Ryzen- Serie erwähnen , die ernsthaft mit Intel konkurrieren. Diese Innovation ist jedoch keine architektonische Innovation: AMD-Prozessoren nutzen das entwickelte x86-Ökosystem. Ihr Vorteil liegt in ihrer effizienten Umsetzung. Andere Innovationen sind interessanter, weil sie den Aufbau eines neuen Software-Ökosystems erfordern.



Die von NVidia entwickelte und angeführte "Revolution der künstlichen Intelligenz" hat die Landschaft des Servermarktes revolutioniert. Sie schuf ein völlig neues Segment, das fast ausschließlich von seinem Schöpfer kontrolliert wurde. Es basiert auf -parallele Programmierplattform CUDA . CUDA (erstmals 2007 eingeführt) ist eines der interessanten Beispiele für den Aufbau eines Ökosystems. Wir werden es später genauer betrachten. Im Gegenzug versucht Intel, eine eigene GPU (teilweise basierend auf der Gen- GPU ) einzuführen , um auf dem Gebiet der künstlichen Intelligenz wettbewerbsfähig zu sein. Intel hat das OneAPI- Toolkit zur Erstellung der Programmierumgebung eingeführt . Dies ist ein ehrgeiziges Konzept einer universellen Methode zur Programmierung von Beschleunigern (GPU, AI, FPGA usw.). Darüber hinaus verwendet Intel Open Source für OneAPI, wodurch die Schnittstelle attraktiver ist als Closed Source-Modelle. Im Zentrum des OneAPI-Konzepts stehtDatenparallel C ++ . Es handelt sich um eine Reihe von C ++ - Erweiterungen, die auf dem CYCL-Standard basieren. Es scheint mir, dass der Erfolg dieses interessanten Versuchs von der Aufnahme dieser Erweiterungen in zukünftige C ++ - Standards abhängt. Und auch von der effektiven Implementierung der Intel GPU. Das jüngste Beispiel ist die Durchdringung der ARM-Architektur mit künstlicher Intelligenz, Cloud und Hochleistungsrechnen. Die ARM-Architektur ist bekannt für ihren Erfolg auf Märkten mit geringem Stromverbrauch und verfügt über ein bedeutendes Software-Ökosystem. Ein Versuch, in höhere Marktsegmente einzudringen, erscheint daher selbstverständlich. Dies ist der interessanteste Fall für uns, und wir werden ihn unter verschiedenen Gesichtspunkten genauer betrachten.



Technologie



Technologischer Hintergrund, den ich hier gegeben habe .



Wirtschaft



Die zunehmende Konkurrenz von AMD zu Intel hat zu einem erheblichen "Preiskampf" zwischen den Prozessorriesen geführt. Dies senkt die Einnahmen der Produzenten, erleichtert aber den Endverbrauchern das Leben. Im Bereich der künstlichen Intelligenz sehen wir im Gegenteil die Dominanz von NVidia, die den Preis für den Markt bestimmt. Und hier suchen Verbraucher aktiver nach alternativen Systemen.



Politik



Im Zusammenhang mit der Zunahme der geopolitischen Spannungen haben China und Russland die Weichen für die Entwicklung eines zu 100% unabhängigen Ökosystems gestellt. Dies bedeutet jedoch mehr als nur Hardwareunabhängigkeit. Software spielt eine ebenso wichtige Rolle. Viele Anwendungen müssen migriert oder ersetzt werden, um echte Unabhängigkeit zu gewährleisten. Das Bild unten zeigt die Situation in Russland.



Bild



Der politische Faktor führt zu einer starken Nachfrage nach Ressourcen, um Softwarelücken zu schließen und diese Bemühungen langfristig zu unterstützen. Hinter der Schaffung des ARM-Ökosystems stehen mehrere mächtige Kräfte. Es gibt aber auch sehr ernste Probleme. Lassen Sie mich einige davon nennen:



Typisches Henne-Ei-Problem im Frühstadium



Einige kommerzielle Closed-Source-Anwendungen werden zum De-facto-Standard für wichtige Segmente. Zum Beispiel SAP-Hana, Oracle für Datenbanken, VMWarefür die Virtualisierung usw. Normalerweise sind Entwickler nicht daran interessiert, ihre Produkte auf einer Architektur zu portieren und zu warten, die keinen ausreichenden Marktanteil hat. Auf der anderen Seite kaufen Endbenutzer keine Hardware, die von der Software nicht unterstützt wird. Es gibt verschiedene Möglichkeiten, diesen Teufelskreis zu durchbrechen. Die erste besteht darin, Softwarefirmen (großes) Geld für die Portierung zu zahlen. Die zweite besteht darin, eine wettbewerbsfähige Lösung zu schaffen, die entweder das Produkt vom Markt verdrängt oder die gewünschte Portierung erzwingt. Der dritte besteht darin, einen der großen benutzerdefinierten Entwickler davon zu überzeugen, ihn zu "pushen". Keiner der Wege ist jedoch einfach oder billig.



Legacy-Software



Die meisten Anwendungen auf dem Servermarkt wurden jahrzehntelang für die dominierende x86-Architektur geschrieben und optimiert. Explizit oder implizit ging es mehr um Single-Threaded-Performance als um massive Parallelität. Selbst wenn der Quellcode verfügbar ist, sind möglicherweise erhebliche Nacharbeiten und Optimierungen erforderlich, um auf ARM-Servern erfolgreich ausgeführt zu werden.



Es stehen viele Probleme am Horizont, und um sie zu lösen, sollten wir sie untersuchen



Lehren aus der Vergangenheit



Die Geschichte verschiedener Architekturen und Software-Ökosysteme ist für sie ein interessantes Thema, aber selbst die Mindestabdeckung übersteigt das Volumen dieses Artikels erheblich (ausreichend für mehrere Dissertationen). Daher werde ich einige bemerkenswerte Fälle beschreiben, die uns helfen können, die aktuellen Umstände zu steuern.



In den frühen



Tagen Als Intel Mitte der 70er Jahre seinen ersten 8-Bit-8080-Prozessor herausbrachte, hatte es wenig architektonischen Vorteil gegenüber seinen Konkurrenten, dem Motorola 6800 oder dem Zilog Z80.... Intel war jedoch der erste, der die Bedeutung von Software für die Förderung von Hardware erkannte. Sie war auch die erste, die ihren eigenen Compiler einführte, um die Kosten für die Softwareentwicklung zu beschleunigen, zu vereinfachen und zu senken. Es waren die Tools, die Intel einen wichtigen Wettbewerbsvorteil verschafften und es ihm ermöglichten, frühzeitig erfolgreich zu sein. Intel führte später MKL für die lineare Algebra VTune einfür die Programmoptimierung und viele andere Tools, die eine wichtige Rolle bei der Bildung des x86-Ökosystems gespielt haben. Darüber hinaus hat Intel die Kompatibilität seiner Tools garantiert. Später erkannte Intel die Bedeutung des Betriebssystems, das den Betrieb der Hardware verwaltet. Das Tandem mit Microsoft (Wintel) wurde für etwa drei Jahrzehnte zur dominierenden Kraft auf dem PC-Markt. Mit der Entwicklung des Servermarktes sind Linux und Open Source im Allgemeinen jedoch sehr relevant geworden. Somit wurde Intel zum Hauptverantwortlichen für den Linux-Kernel und befindet sich immer noch auf Position 1 (raten Sie mal, wer Nummer 2 ist?). Vor allem hat Intel die Binärkompatibilität (Abwärtskompatibilität) seiner Plattformen stets strikt eingehalten. Die Tatsache, dass Binärdateien, die für eine frühere Generation von Architektur erstellt wurden, bei einer späteren Generation sofort einsatzbereit sind,und erlaubte x86, die dominierende Kraft zu werden. Der Aufbau eines Ökosystems braucht Zeit, aber es lohnt sich.



Sonnenaufgang und Sonnenuntergang



Dies ist das einzige Gegenbeispiel, bei dem ein entwickeltes Ökosystem gegen seinen Schöpfer spielte. In den frühen 2000er Jahren hatte Sun Microsystems eine bedeutende Nische im SPARC-Servermarkt. Das Unternehmen initiierte und entwickelte das Java- Ökosystem . Das Problem ist jedoch, dass die Java-Maschine auf einem Interpreter und nicht auf einem Compiler basiert. Als die Umstände Sun zwangen, Java zu öffnen, war dies der Anfang vom Ende. Durch die Implementierung des Java-Interpreters für x86 hat Intel Sun schrittweise aus dem Servermarkt verdrängt. Die Lektion, die gelernt werden muss, ist, dass interpretierte Sprachen (die heute so beliebt sind) keine wirksamen Marktanteilsverteidiger sind.



Der Erfolg von ARM auf dem Low-Power-Markt



Die Workstation-Architektur ist seit Anfang der 2000er Jahre marktführend für Mobiltelefone und Tablets. Die Art seiner Dominanz unterscheidet sich stark von x86 in PCs und Servern. ARM ist eine offene Community - die Lizenz ist relativ günstig, was die Voraussetzungen dafür schafft, dass eine große Anzahl von Spielern am Spiel teilnehmen kann. Und das offene Android- Betriebssystem reduziert die Eintrittsbarriere weiter. Es spielte auch eine Rolle, als führende Akteure (Samsung, Qualcomm, Huawei usw.) die Notwendigkeit einer industriellen Allianz zur Schaffung eines Ökosystems erkannten. Dies ermöglichte es, es in sehr kurzer Zeit zu bauen.



Intels Versuch, in den Mobilfunkmarkt einzudringen



Um 2007 erkannte Intel (oder etwas früher) das Potenzial des Marktes für Mobiltelefone und Tablets und versuchte, es zu erobern. Das Projekt basierte auf der Atom-Architektur (x86 mit geringem Stromverbrauch) und der binären Übersetzung von ARM nach x86 ( Houdini ). Dieser Mechanismus nutzt das vorhandene Software-Ökosystem. Die Anwendungen wurden in Rekordzeit auf Intel-Geräten gestartet. Gegen Intel spielten jedoch zwei Tatsachen. Das erste ist die Unfähigkeit, ARM hinsichtlich des Stromverbrauchs einzuholen. Die zweite ist die Komplexität der binären Übersetzung von RISC in den komplexeren CISC- Befehlssatz... Diese Übersetzung ist mit einem erheblichen Aufwand verbunden, der für einige Anwendungsklassen möglicherweise nicht akzeptabel ist. Binärer Rundfunk kann daher als Markteintrittsinstrument angesehen werden, kann jedoch kaum als langfristige Lösung dienen.



Ökosystem CUDA



Während der Erfolg von Nvidia im AI-Segment unbestreitbar ist, wirft die Entwicklung eines eigenen CUDA-Ökosystems immer noch meine Fragen auf. Beispielsweise ist im Bereich des Hochleistungsrechnens der Anteil der Anwendungen, die CUDA verwenden, immer noch gering. Der Grund sind die hohen Kosten für die Portierung und Wartung solcher Anwendungen. Einige Entwickler portierten (mit erheblicher Hilfe von NVidia-Ingenieuren) ihre Codes, gaben sie jedoch später aufgrund der Supportkosten auf. Im Segment der künstlichen Intelligenz ist die Position von Nidia im Gegenteil extrem stark. Die Forscher verwenden jedoch meistens übergeordnete Frameworks ( TensorFlow , PyTorch)etc.) und nicht direkt in CUDA programmieren. Dies führt uns zu dem Schluss, dass die Wahl der richtigen Abstraktionsebene für das „Software-Harness“ für die Weiterentwicklung der Hardware von großer Bedeutung ist.



Zurück in die Zukunft



Kehren wir nun zu unserer Aufgabe zurück, bewaffnet mit den Lehren der Vergangenheit.



Industry Alliance



Das größte Problem mit dem ARM-Ökosystem auf der Serverseite im Gegensatz zum mobilen ist, dass es immer noch sehr fragmentiert ist. Wir brauchen eine Art Anziehungspunkt, um die Bemühungen zu koordinieren. Die Allianz erscheint natürlich, da der Anteil aller ARM-Anbieter am Servermarkt etwa 1% beträgt. Sie haben einfach keinen Grund, sich zu messen. Die Aufgabe, gemeinsam ein Ökosystem aufzubauen, sollte Vorrang vor der Differenzierung untereinander haben. Es wurden mehrere Versuche unternommen, eine solche Allianz zu schaffen.



Erwähnt werden kann das Open Green Computing Consortium (openGCC - es fällt einem Programmierer schwer, sich einen verrückteren Namen vorzustellen) und unsere jüngsten Bemühungen innerhalb dieses KonsortiumsARM Advanced Technology Committee innerhalb von APKIT . Dies mag ein guter Anfang sein, aber beide sind lokale Allianzen. Open GCC ist eine chinesische Organisation und APKIT ist eine russische. Die Branche schreibt die Notwendigkeit einer globalen Allianz vor, die mehreren Zwecken dienen kann:



Synchronisierung und regulatorischer Einfluss



Zunächst muss zwischen den ARM-Anbietern selbst eine gewisse Übereinstimmung bestehen, um die Portabilität der Software über mehrere Anbieterplattformen hinweg sicherzustellen. Zweitens bietet es die Möglichkeit, mit internationalen und lokalen Normungsgremien zusammenzuarbeiten. Drittens wird es ein starkes Signal an Regierungen und Gesellschaften senden, dass das aufkommende ARM-Ökosystem als tragfähige Alternative zum bestehenden dienen kann. Diese Tatsache ist zwar nicht vollständig realisiert.



Arbeiten mit Betriebssystem- und Anwendungsanbietern



Wie wir aus Erfahrung gesehen haben, spielen Betriebssysteme eine zentrale Rolle beim Aufbau eines Software-Ökosystems. Möglicherweise stellen Sie auch fest, dass von Hardwareanbietern entwickelte Betriebssysteme in der Vergangenheit nicht sehr erfolgreich waren (mit Ausnahme von Apple). Die Zusammenarbeit mit Betriebssystemanbietern ist daher strategisch sehr wichtig. Dies geschieht teilweise jetzt - Patches, Updates, die in den neuesten Versionen des Linux-Kernels, Compilern und glibc erscheinen, verbessern die Leistung von ARM-Systemen für eine Vielzahl von Workloads. Diese Bemühungen sind jedoch immer noch sehr fragmentiert, da jeder Anbieter dies für sich tut, was normalerweise ziemlich lange dauert. Die Allianz kann dabei helfen, diese Bemühungen zu synchronisieren und die Annahme von Updates zu beschleunigen.



Wir haben auch gesehen, dass es sehr schwierig sein kann, das Henne-Ei-Problem zu Beginn der Weiterentwicklung einer Architektur zu lösen. Die Allianz könnte zusätzliche Hebelwirkung bei Verhandlungen mit Softwareanbietern bieten und dazu beitragen, die Last der frühzeitigen Werbung unter den Hardwareherstellern zu teilen.



Softwareverteilungssystem Der



dritte wichtige Punkt hierbei ist die Softwareverteilung. Heutzutage wird ARM-Serversoftware normalerweise aus dem Quellcode erstellt, was Zeit und Hardwareressourcen erfordert. Während für x86 ein praktisches RPM-basiertes Schema für die Verteilung verwendet wird. So etwas zu tun, erfordert viel Arbeit mit den ISVs und Betriebssystemanbietern. Und die Allianz kann sehr nützlich sein, um in dieser Richtung zu helfen.



Erstellen effektiver Tools



In der Vergangenheit haben sich Software-Tools als zuverlässiges Tool für die Entwicklung von Ökosystemen erwiesen. Daher ist die Aufmerksamkeit für sie heute von entscheidender Bedeutung. Eines der besten Beispiele ist die Intel Corporation, die Softwareentwickler und Anwendungsingenieure in einer Organisation zusammenfasst, wie unten gezeigt. Rot zeigt kritische Interaktion an, Grün zeigt regelmäßig an, Gelb zeigt sporadisch an.



Bild



Dies gewährleistet eine enge Zusammenarbeit zwischen Tool-Entwicklern. Dies ermöglicht es Application Engineers (AEs), die besten Tools der Branche zu verwenden. AEs, auf denen dieselben Workloads ausgeführt werden, teilen ihr Wissen miteinander und geben Hardware-Architekten konsolidiertes Feedback. Usw. Usw. All dies führte zu einem interessanten Phänomen: Die Ingenieure, die in einer solchen Organisation arbeiteten, begannen nicht nur über ihre Produkte nachzudenken, sondern auch über das breite Bild des Ökosystems. Sie berücksichtigen die gegenseitige Abhängigkeit untereinander sowie die Auswirkungen auf das gesamte Ökosystem.

Um eine solche Organisation aufzubauen, benötigen Sie jedoch eine Art "gemeinsame Sprache", mit der alle Parteien kommunizieren können. Irgendwann wurde die TMAM-Mikroarchitektur-Analysemethode zu einer solchen.



Bild



TMAM bietet eine Möglichkeit zum Sammeln, Interpretieren und Verwenden von Mikroarchitekturereignissen, um Anwendungen zu profilieren und zu optimieren.



Bild



Der wichtigste Vorteil dieser Methode besteht darin, dass sie ein objektives Bild der Vorgänge in der Hardware liefert und es Ihnen ermöglicht, sowohl diese als auch die Software zu verbessern. Aber was vielleicht noch wichtiger ist, es ist ein einzigartiges Mittel zum Aufbau einer effektiven Organisation für Hardware-Werbung.



Fazit



Der Aufbau eines ARM-Ökosystems auf dem Servermarkt sieht aus wirtschaftlicher, politischer und technologischer Sicht vielversprechend aus. Es findet jedoch vor dem Hintergrund der starken Konkurrenz durch die dominierende x86-Architektur statt. Darüber hinaus sind die frühen Probleme der Weiterentwicklung der Architektur noch lange nicht gelöst. Ich glaube jedoch, dass ARM in Zukunft eine ernsthafte Kraft auf dem Servermarkt werden kann. Die Schaffung einer globalen Industrieallianz und einer effektiven Organisation zum Aufbau von Ökosystemen erscheint äußerst wünschenswert.



Der Aufbau eines ARM-Ökosystems auf dem Servermarkt sieht aus wirtschaftlicher, politischer und technologischer Sicht vielversprechend aus. Es findet jedoch vor dem Hintergrund der starken Konkurrenz durch die dominierende x86-Architektur statt. Darüber hinaus sind die frühen Probleme der Weiterentwicklung der Architektur noch lange nicht gelöst. Ich glaube jedoch, dass ARM in Zukunft eine ernsthafte Kraft auf dem Servermarkt werden kann. Die Schaffung einer globalen Industrieallianz und einer effektiven Organisation zum Aufbau von Ökosystemen erscheint äußerst wünschenswert.



Russland gilt unter vielen Gesichtspunkten als eine der vielversprechendsten Arenen für den Aufbau des ARM-Ökosystems. Das Engagement der Regierung für die Unabhängigkeit von Informationen unterstützt diese Initiative langfristig. Das Potenzial des ARM-Ökosystems wurde jedoch auf Regierungsebene noch nicht voll ausgeschöpft. Es ist ernsthafte Arbeit erforderlich, damit unsere Stimme gehört werden kann. Ein weiterer Grund ist der relativ große Markt und die Vielfalt der privaten und öffentlichen Sondermarken. Beispielsweise kann man ressourcenextrahierende Giganten (Gazprom, Lukoil, Rosneft), führende Banken (Sberbank, VTB, Alpha) und Mobilfunkanbieter (MTC, Megafon, Beeline, Tele2) nennen. Das Bewusstsein für die Notwendigkeit von Alternativen zur vorhandenen Infrastruktur (x86, IBM, Oracle) wächst, sowohl in Bezug auf die Sicherheit als auch in Bezug auf die Preisgestaltung.



Und zu guter Letzt die Humanressourcen. In Russland gibt es viele Programmierer, die Erfahrung in der Lösung von Ökosystemproblemen haben und in diesen Begriffen denken.



All Articles