Macht euch bereit, Android-Entwickler, ein neuer Android-Compiler kommt

Veröffentlicht: 2022-03-11

Fragmentierung ist seit Jahren eine Quelle der Frustration für Android-Entwickler und Verbraucher; Jetzt sieht es so aus, als würden die Dinge noch schlimmer werden, bevor sie besser werden. Ein neuer Android-Compiler kommt wieder, und es gibt einige bemerkenswerte Entwicklungen an der Hardwarefront, die Entwickler betreffen könnten.

Da Dalvik nicht mehr im Bilde ist, erwarteten viele Leute, dass die neue 64-Bit-fähige ART-Laufzeitumgebung von Google jahrelang bestehen bleiben würde, was wahrscheinlich auch der Fall sein wird, aber sie wird in naher Zukunft grundlegend überarbeitet. Neben der Unterstützung von 64-Bit-Hardware führte ART auch die AOT-Kompilierung (Ahead-of-Time) ein, während Dalvik ein Just-in-Time-Compiler (JIT) war. Der neue optimierte Compiler wird noch mehr Möglichkeiten eröffnen.

Abbildung des Android-Compilers

Was Hardware-Entwicklungen betrifft, gibt es einige neue Trends und einige neue und alte Spieler in der Smartphone-System-on-Chip-Branche, aber dazu komme ich später.

Werfen wir zunächst einen Blick auf die Laufzeitpläne von Google.

Dalvik, ART, ART mit neuem Android-Compiler

ART wurde letztes Jahr mit Android 5.0 eingeführt und startete auf dem Nexus 9 und Nexus 6, obwohl letzteres eine 32-Bit-ARMv7-A-CPU verwendete. ART wurde jedoch nicht von Grund auf neu entwickelt, sondern war eigentlich eine Weiterentwicklung von Dalvik, das sich von JIT wegbewegte.

Dalvik kompiliert Apps bei Bedarf spontan. Dies erhöht natürlich die CPU-Last, erhöht die Zeit, die zum Starten von Anwendungen benötigt wird, und beeinträchtigt die Akkulaufzeit. Da ART bei der Installation alles im Voraus kompiliert, muss es nicht jedes Mal, wenn das Gerät eine App startet, Taktzyklen für die Kompilierung verschwenden. Dies führt zu einer reibungsloseren Benutzererfahrung, während gleichzeitig der Stromverbrauch gesenkt und die Akkulaufzeit verlängert wird.

Was wird Google also als nächstes tun?

Da ART entwickelt wurde, um die neuen 64-Bit-ARMv8-CPU-Kerne zu nutzen, die Ende letzten Jahres online gingen, scheint der ursprüngliche Compiler eine Notlösung gewesen zu sein. Das bedeutete, dass Time-to-Market im Vordergrund stand, nicht Effizienz und Optimierung. Das bedeutet nicht, dass ART nur ein verpatzter Eiljob war, denn das war es nicht; die Laufzeit funktioniert gut und wurde von Entwicklern und Benutzern gelobt.

Es gibt jedoch Raum für Verbesserungen, und jetzt scheint Google seit einiger Zeit an einem stark verbesserten Compiler zu arbeiten, und die Bemühungen gehen wahrscheinlich vor der offiziellen Veröffentlichung von ART. Der britische Chipdesigner ARM enthüllte kürzlich einige interessante Fakten über Googles Laufzeitpläne, die auf einen neuen „optimierenden“ Compiler für ART hinweisen. Der neue Compiler bietet Intermediate Representations (IR), die eine Manipulation der Programmstruktur vor der Codegenerierung ermöglichen. Es verwendet eine einzelne Ebene der Zwischendarstellung, die als informationsreicher Graph strukturiert ist und den architekturbewussten Teilen des Compilers bessere Informationen liefert.

Neuer Android-Compiler für Android-Entwickler

Der „Quick“-Compiler verwendet zwei Ebenen der Zwischendarstellung mit einfachen verknüpften Listen von Anweisungen und Variablen, aber er verliert wichtige Informationen während der IR-Erstellung.

ARM behauptet, dass der neue „Optimizing“-Compiler eine Reihe bedeutender Vorteile bieten wird, und beschreibt ihn als „großen Sprung nach vorne“ in Bezug auf die Compiler-Technologie. Der Compiler bietet eine bessere Infrastruktur für zukünftige Optimierungen und trägt zur Verbesserung der Codequalität bei.

Optimierende und schnelle Compiler-Schlüsselfunktionen

ARM skizzierte den Unterschied zwischen den beiden Compilern auf einer einzigen Folie und behauptete, dass der „Optimizing“-Compiler eine effizientere Registernutzung, weniger Überlauf auf den Stack und weniger Code zur Ausführung ermögliche.

So drückt es ARM aus:

Quick hat einen sehr einfachen Registerzuweisungsalgorithmus.

  • Fehlende Informationen in der IR
  • Kompilierungsgeschwindigkeit statt Komplexität – Ursprünge als JIT
  • Schlechte Leistung – viele Register wurden auf den Stack verschüttet

Die Optimierung verwendet die Liner-Scan-Registerzuordnung.

  • Ausgezeichneter Kompromiss zwischen Leistung und Zeit
  • Es wird eine Lebendigkeitsanalyse verwendet
  • Minimierung des Überlaufens von Registern in den Stapel“

Obwohl sich der neue Compiler noch in der Entwicklung befindet, teilte ARM einige Leistungsdaten mit; In synthetischen CPU-Tests liefert der Compiler eine Leistungssteigerung im Bereich von 15 bis 40 Prozent. Die Kompilierungsgeschwindigkeit wird um etwa 8 Prozent erhöht. Das Unternehmen warnt jedoch davor, dass sich die Zahlen „täglich ändern“, wenn der neue Compiler ausgereift ist.

Der Fokus liegt darauf, nahezu Parität mit dem „Quick“-Compiler zu erreichen, der derzeit einen klaren Vorteil in Kompilierungsgeschwindigkeit und Dateigröße hat.

Im Moment sieht es nach einem Kompromiss aus; Der neue „optimierte“ Compiler liefert beeindruckende Leistungsverbesserungen in CPU-gebundenen Anwendungen und synthetischen Benchmarks, führt jedoch zu 10 Prozent größeren Dateien, die ~8 Prozent langsamer kompiliert werden. Während die letzten beiden Zahlen von den CPU-Leistungssteigerungen aufgewogen zu werden scheinen, bedenken Sie, dass sie unabhängig von der CPU-Auslastung für jede App gelten und noch begrenztere Ressourcen wie RAM und Speicher verbrauchen. Denken Sie daran, dass das Kompilieren in 64 Bit bereits mehr RAM beansprucht als das Kompilieren in 32 Bit.

Jede Verringerung der Kompilierungsgeschwindigkeit und der Startzeiten ist aufgrund ihrer Auswirkungen auf die Reaktionsfähigkeit des Geräts und die Benutzererfahrung ebenfalls ein Grund zur Besorgnis.

Das Multicore-ARM-Rennen

Ein weiterer Anlass zur Sorge, unabhängig von Laufzeit und Compiler, ist die Popularität von Multicore-Prozessoren, die auf ARMv7-A- und ARMv8-Architekturen basieren. Der Octa-Core-Wahn begann 2013 und wurde schnell als billiger Marketing-Gag abgetan. Ein Qualcomm-Manager ging so weit, Octa-Core-Prozessoren als „albern“ und „dumm“ zu bezeichnen und sagte, dass das Unternehmen keine herstellen würde, weil seine Ingenieure „nicht dumm“ seien. Derselbe Manager beschrieb auch die 64-Bit-Unterstützung auf dem Apple A7 als „Spielerei“.

Spulen wir zwei Jahre vor, und ich habe ein 64-Bit Qualcomm Octa-Core Cortex-A53 Smartphone auf meinem Schreibtisch, während der betreffende Manager eine andere Berufsbezeichnung auf seinem Namensschild hat.

Multicore-Arm

Als ob 8-Kern-Chips nicht genug wären, werden wir nächstes Jahr die ersten Geräte sehen, die auf 10-Kern-Anwendungsprozessoren basieren. Der erste 10-Core-Smartphone-Chip kommt von MediaTek in Form des Helio X20 und wird über drei Cluster von CPU-Kernen verfügen, die als huge.Medium.TINY bezeichnet werden. Klingt lustig, und es wird noch besser; Wir werden bald die ersten erschwinglichen Android-Geräte sehen, die auf einer neuen Generation von Intel-Prozessoren basieren.

Schauen wir uns die ARM-Kernkriege an und was sie für Entwickler und Verbraucher bedeuten. Es gibt zwei unterschiedliche Versionen von ARM-SoC-Octa-Core-Designs. High-End-Lösungen verwenden in der Regel das big.LITTLE-Layout von ARM, das vier Low-Power-Kerne und vier große Kerne für hohe Last verwendet. Die zweite Möglichkeit, acht ARM-CPU-Kerne in einen Chip zu stecken, besteht darin, identische Kerne oder identische Kerne in zwei Clustern mit unterschiedlichen Taktraten zu verwenden.

Führende Hersteller mobiler Chips neigen dazu, beide Ansätze zu verwenden, big.LITTLE-Chips in High-End-Geräten, zusammen mit regulären Octa-Cores in Mainstream-Produkten. Beide Ansätze haben ihre Vor- und Nachteile, also schauen wir uns das genauer an.

ARM big.LITTLE vs. normaler Octa-Core:

Die Verwendung von zwei Clustern mit unterschiedlichen CPU-Kernen ermöglicht eine gute Single-Thread-Leistung und Effizienz bei big.LITTLE-Designs. Der Kompromiss besteht darin, dass ein einzelner Cortex-A57-Kern ungefähr die Größe von vier kleinen Cortex-A53-Kernen hat und weniger effizient ist.

Die Verwendung von acht identischen Kernen oder acht identischen Kernen in zwei Clustern mit unterschiedlichen Takten ist kostengünstig und energieeffizient. Die Leistung einzelner Threads ist jedoch gering.

Die aktuelle Generation von big.LITTLE-Designs, die auf ARMv8-Kernen basieren, kann nicht den billigsten 28-nm-Fertigungsknoten verwenden. Selbst bei 20 nm weisen einige Designs eine starke Drosselung auf, was ihre dauerhafte Leistung einschränkt. Standard-Octa-Cores auf Basis von Cortex-A53-CPU-Kernen können effektiv in 28 nm implementiert werden, sodass Chiphersteller keine hochmodernen Fertigungsknoten wie 20-nm- oder 16/14-nm-FinFET verwenden müssen, was die Kosten niedrig hält.

ARM big.LITTLE vs. normaler Octa-Core

Ich möchte Sie nicht mit Chipdesign-Trends zu Tode langweilen, aber ein paar grundlegende Dinge sollten Sie bei den Mobilprozessoren 2015 und 2016 beachten:

  • Die meisten Chips verwenden 28-nm-Fertigungsknoten und Cortex-A53-Kerne, was die Single-Thread-Leistung einschränkt.
  • Der große Cortex-A57-Kern ist in zwei großen Designs von Samsung und Qualcomm implementiert, aber andere Chiphersteller scheinen ihn zu überspringen und auf den Cortex-A72-Kern zu warten.
  • Die Multithread-Leistung wird in den nächsten 18 Monaten immer relevanter.
  • Große Leistungssteigerungen sind nicht zu erwarten, bis 20nm und FinFET-Knoten deutlich billiger werden (2016 und darüber hinaus).
  • 10-Core-Designs kommen ebenfalls.

All diese Punkte haben bestimmte Auswirkungen auf Android-Entwickler. Solange die Chiphersteller für die meisten Smartphone- und Tablet-Chips bei 28-nm-Prozessen feststecken, müssen die Entwickler ihr Bestes geben, um die Multithread-Leistung zu erschließen und sich auf die Effizienz zu konzentrieren.

ART und neue Compiler sollten einen großen Beitrag zur Verbesserung von Leistung und Effizienz leisten, aber sie werden nicht in der Lage sein, die Gesetze der Physik zu brechen. Alte 32-Bit-Designs werden in Zukunft in vielen Geräten nicht mehr verwendet, und selbst die billigsten Geräte werden allmählich mit 64-Bit-Silizium und Android 5.0 ausgeliefert.

Obwohl Android 5.x immer noch eine relativ kleine Benutzerbasis hat, wächst es schnell und wird jetzt noch schneller expandieren, da 100- bis 150-Dollar-Telefone mit 64-Bit-Chips und Android 5.0 auf den Markt kommen. Die Umstellung auf 64-Bit-Android läuft gut.

Die große Frage ist, wann Dalvik den neuen Optimized-Compiler bekommen wird. Es könnte später in diesem Jahr oder nächstes Jahr mit Android 6.0 auf den Markt kommen; es ist noch zu früh, um es sicher zu sagen.

Heterogenes Computing auf dem Weg zu Mobilgeräten

Es gibt noch etwas anderes zu beachten; Mobile Grafiken werden immer leistungsstärker, insbesondere auf High-End-Prozessoren, sodass Chiphersteller hinter den Kulissen viel Arbeit leisten, um sie für andere Zwecke als Spiele und Videodecodierung zu erschließen. Heterogenes Computing gibt es seit einigen Jahren, wodurch PCs hochparallelisierte Aufgaben auf die GPU auslagern können.

Dieselbe Technologie kommt jetzt auch für mobile Prozessoren zum Einsatz, die CPU- und GPU-Kerne effektiv verschmelzen. Der Ansatz wird es Entwicklern ermöglichen, mehr Leistung freizusetzen, indem sie bestimmte Arten von Programmen, nämlich OpenCL-Ladevorgänge, auf der GPU ausführen. Entwickler können sich auf den Durchsatz konzentrieren, während Prozessoren automatisch die parallele Ausführung auf CPUs und GPUs übernehmen.

Heterogenes Rechnen

Natürlich wird das nicht in jeder App funktionieren und die Last in allen Situationen reduzieren, aber in einigen Nischen sollte es mehr Leistung freisetzen und helfen, den Stromverbrauch zu senken. Abhängig von der Auslastung entscheidet der SoC automatisch, wie Code verarbeitet wird, indem er die CPU für einige Aufgaben verwendet und andere an die GPU auslagert.

Da wir es mit parallelisierten Anwendungen zu tun haben, verspricht man sich von diesem Ansatz die größten Verbesserungen in der Bildverarbeitung. Wenn Sie beispielsweise Bilder mit Superauflösung und Resampling verwenden müssen, könnte der Prozess in OpenCL in verschiedene Phasen unterteilt werden. Wenn der Prozess verschiedene Phasen umfasst, wie z. B. find_neighbor , col_upsample , row_upsample , sub und blur2 , verteilt die Hardware die Last auf die effizienteste Weise auf CPU- und GPU-Kerne, je nachdem, welche Art von Kern die jeweilige Aufgabe am besten bewältigt Weg. Dies wird nicht nur die Leistung um eine Größenordnung verbessern, sondern auch dazu beitragen, den Stromverbrauch zu senken.

Intel ist von den Toten zurück und es sieht gut aus für eine Leiche

Intel hat den Anschluss an die mobile Revolution verpasst und den Markt praktisch an ARM und seine Hardwarepartner abgetreten. Der US-Chiphersteller hat jedoch das Geld und die Ressourcen, um einige Jahre auf der Bank zu verbringen und ein Comeback zu feiern.

Letztes Jahr subventionierte Intel den Verkauf seiner Atom-Prozessoren für Tablets und schaffte es, die Auslieferungen in weniger als einem Jahr zu vervierfachen. Mit neuen SoFIA Atom x3-Prozessoren richtet es seine Aufmerksamkeit nun auf das Smartphone-Segment. Ehrlich gesagt bin ich mir nicht ganz sicher, ob diese Chips überhaupt als Intel-Prozessoren bezeichnet werden sollten, da sie nicht wirklich vom Chipgiganten hergestellt werden. SoFIA-Prozessoren werden in Zusammenarbeit mit chinesischen Chipherstellern mit knappem Budget entwickelt. Sie werden auf dem 28-nm-Knoten hergestellt, sie sind langsam, winzig und billig.

interl und android

Dies mag einige zufällige Beobachter überraschen, aber Intel hält sich nicht mit High-End-Mobillösungen auf; Low-End-SoFIA-Teile werden handelsübliche Android-Telefone mit einem Preis zwischen 50 und 150 US-Dollar antreiben. Die ersten Designs sollten Ende des zweiten Quartals 2015 ausgeliefert werden, und die meisten von ihnen werden für asiatische Märkte sowie Schwellenmärkte in anderen Teilen der Welt entworfen. Während es möglich ist, dass wir einige von ihnen in Nordamerika und Europa sehen werden, scheint Intels Fokus auf China und Indien zu liegen.

Intel sichert seine Wetten mit Atom x5- und x7-Prozessoren ab, die eine völlig neue Architektur sowie den hochmodernen 14-nm-Fertigungsknoten des Unternehmens verwenden werden. Diese Produkte sind jedoch zumindest vorerst eher für Tablets als für Smartphones bestimmt.

Die große Frage, auf die ich keine Antwort habe, ist, wie viele Design-Wins Intel verbuchen kann. Analysten sind in dieser Frage geteilter Meinung, und die Versandprognosen sehen zu diesem Zeitpunkt wie Schätzungen aus.

Letztes Jahr hat Intel bewiesen, dass es bereit ist, Verluste hinzunehmen und Milliarden von Dollar zu verbrennen, um auf dem Tablet-Markt Fuß zu fassen. Es ist noch zu früh, um zu sagen, ob es bei neuen Atom-Chips, insbesondere Smartphone-SoFIA-Produkten, den gleichen Ansatz verfolgen wird.

Ich habe bisher nur ein wirkliches Produkt gesehen, das auf einem Intel SoFIA-Prozessor basiert – ein chinesisches 69-Dollar-Tablet mit 3G-Konnektivität. Es ist im Wesentlichen ein übergroßes Telefon, sodass ein SoFIA-Telefon der Einstiegsklasse, wie Sie sich vorstellen können, am Ende viel weniger kosten könnte. Es muss ein verlockendes Angebot für Hersteller von White-Box-Smartphones und -Tablets sein, da sie problemlos Geräte für 50 bis 100 US-Dollar mit einem „Intel Inside“-Aufkleber auf der Rückseite entwerfen könnten, was sich aus Marketingsicht gut anhört.

Leider können wir nur raten, wie viele Intel-Telefone und -Tablets im Laufe des nächsten Jahres oder so ausgeliefert werden. Wir haben es offensichtlich mit Millionen von Einheiten zu tun, Dutzenden von Millionen, aber die Frage ist: Wie viele Dutzend? Die meisten Analysten glauben, dass Intel in diesem Jahr zwischen 20 und 50 Millionen Atom x3-Prozessoren ausliefern wird, was ein Tropfen auf den heißen Stein ist, wenn man bedenkt, dass die gesamten Smartphone-Lieferungen in diesem Jahr voraussichtlich 1,2 Milliarden Geräte erreichen werden. Intel ist jedoch rücksichtslos, hat Geld zu verbrennen und muss mit keinem dieser Chips Gewinn machen. Es könnte bis Ende 2015 3 bis 4 Prozent des Marktes erobern, aber der Marktanteil sollte 2016 und darüber hinaus weiter wachsen.

Was bedeutet das für Android-Entwickler?

Intel hat bei einigen Android-Entwicklern aufgrund bestimmter Kompatibilitätsprobleme einen schlechten Ruf. Dies war vor ein paar Jahren ein echtes Problem, da sich die Hardware stark von den in den meisten Geräten verwendeten Standard-ARM-Kernen unterschied.

Glücklicherweise hat das Unternehmen in den zwei Jahren große Fortschritte gemacht; Es bietet umfangreiche Schulungsprogramme, umfassende Dokumentation und mehr. Tatsächlich zeigt ein kurzer Blick auf die LinkedIn-Stellenangebote, dass Intel Dutzende von Android-Entwicklern einstellt, wobei jeden Monat einige neue Stellen frei werden.

Es läuft also alles gut, oder? Es hängt davon ab…

Letzte Woche hatte ich die Gelegenheit, ein neues Asus-Telefon auf Basis von Intels Atom Z3560 zu testen, und ich muss sagen, dass ich mit den Ergebnissen zufrieden war; Es ist eine gute Hardwareplattform, die 4 GB RAM auf einem preisgünstigen Gerät adressieren kann. Asus glaubt, in diesem Jahr 30 Millionen Einheiten verkaufen zu können, was angesichts des Smartphone-Marktanteils von Intel wirklich beeindruckend ist.

Das einzige Problem ist, dass sich einige Android-Apps auf Intel-Hardware immer noch schlecht verhalten . Normalerweise ist es nicht zu groß, aber Sie bekommen einige seltsame Abstürze, unrealistische Benchmark-Ergebnisse und andere Kompatibilitätsmacken. Die schlechte Nachricht ist, dass Entwickler nicht viel tun können, um Hardwareprobleme zu beheben, obwohl es ein guter Anfang wäre, einige Intel-basierte Geräte zum Testen zu bekommen. Die gute Nachricht: Intel tut sein Bestes, um alles selbst zu regeln, damit Sie es nicht tun müssen.

Bei ARM-Hardware werden wir mehr CPU-Kerne in noch mehr Clustern sehen. Die Single-Thread-Leistung wird bei vielen Mainstream-Geräten begrenzt bleiben, insbesondere bei preiswerten Telefonen, die auf Quad- und Octa-Core-Cortex-A53-SoCs basieren. Es ist noch zu früh, um zu sagen, ob neue Google/ARM-Compiler in der Lage sein werden, die Leistung auf solchen Geräten zu steigern. Das werden sie wahrscheinlich, aber um wie viel? Heterogenes Computing ist ein weiterer Trend, auf den man nächstes Jahr achten sollte.

Abschließend ist hier, was Android-Entwickler in Bezug auf Software und Hardware Ende 2015 und 2016 erwarten sollten:

  • Mehr Intel x86-Prozessoren in Einstiegs- und Mainstream-Marktsegmenten.
  • Der Marktanteil von Intel wird 2015 vernachlässigbar sein, könnte aber 2016 und darüber hinaus wachsen.
  • Weitere ARMv8-Multicore-Designs kommen online.
  • Neuer „optimierter“ ART-Compiler.
  • Heterogenes Computing kommt, aber es wird eine Weile dauern.
  • Der Übergang zu FinFET-Fertigungsknoten und Cortex-A72 wird mehr Leistung und Funktionen freisetzen.