- Google hat RISC-V-Unterstützung in AOSP integriert, um Android auf eine neue CPU-Architektur auszuweiten, und erweitert dies von einer experimentellen Phase hin zur Zusammenarbeit im Ökosystem
- Die anfängliche Unterstützung orientiert sich am rva22-Profil sowie an den Erweiterungen Vector und Vector Crypto, mit dem Fokus darauf, den Funktionsumfang abzustimmen, der für die von Android erwartete Performance-Implementierung nötig ist
- Schon heute lässt sich Android für RISC-V mit Cuttlefish bauen, testen und ausführen, doch das ART-Backend und Compiler-Optimierungen sind noch nicht fertiggestellt
- Für Ende 2023 werden die Festlegung des NDK ABI und öffentliche CI-Canary-Builds erwartet; für 2024 sind öffentliche Emulatoren zum Testen mehrerer Formfaktoren geplant
- Da das Portieren von Android allein nicht ausreicht, bereitet Google gemeinsam mit dem RISE Project, RISC-V International sowie der Community rund um Toolchains und Support-Bibliotheken auch die App-Entwicklungsumgebung vor
RISC-V-Unterstützung kommt in Android
- Android ist ein Open-Source-Betriebssystem, das verschiedene Gerätetypen und CPU-Architekturen unterstützt, und RISC-V wird als Ziel für eine neue Plattform hinzugefügt
- RISC-V ist eine freie und offene Instruction Set Architecture (ISA) und verfolgt den Ansatz, die branchenweite Zusammenarbeit aus der Open-Source-Software in das Hardware-Ökosystem zu übertragen
- Seit seiner Entstehung vor zehn Jahren an der UC Berkeley wurde es schnell im Embedded- und Mikrocontroller-Bereich übernommen und expandiert jüngst in Accelerators, Server und Mobile Computing
Von der Annahme von Patches zur Reife der Unterstützung
- Google kündigte auf dem RISC-V Summit im November 2022 an, RISC-V-Patches für Android anzunehmen
- Inzwischen geht es über die reine Annahme von Patches hinaus und bewegt sich in Richtung einer ausgereifteren RISC-V-Unterstützung in Android
- Da RISC-V eine modulare ISA mit vielen optionalen Erweiterungen ist, muss ein anfänglicher Pflicht-Funktionsumfang definiert werden, um die von Android erwartete hohe Performance zu liefern
- Die Grundlage umfasst das rva22-Profil
- Auch die Erweiterungen Vector und Vector Crypto sind enthalten
Lokal baubare und ausführbare AOSP-Umgebung
- Die Android-Unterstützung für RISC-V lässt sich wie andere AOSP-Plattformziele mit dem Cuttlefish Virtual Device auf einer lokalen Maschine bauen, testen und ausführen
- Der zugehörige Code ist unter google/android-riscv64 zu finden
- Ein Ausführungsbeispiel sieht wie folgt aus
$ lunch aosp_cf_riscv64_phone-userdebug
$ m -j
$ launch_cvd -cpus=8 -memory_mb=8192
- Mit einem vncviewer kann man sich mit dem laufenden Gerät verbinden und damit interagieren
Noch offene Optimierungsaufgaben
- Die aktuellen Patches ermöglichen es, eine grundlegende Android-Open-Source-Project-Erfahrung zu bauen und auszuführen, sind aber noch nicht vollständig optimiert
- Die Arbeit am ART-Optimierungs-Backend der Android Runtime läuft noch
- Auch AOSP, externe Projekte und Compiler sind noch nicht so weit, dass sie unter Nutzung der neuesten ratifizierten Erweiterungen vollständig optimierten und kompakten Code erzeugen
- Ziel der aktuellen Phase ist weniger eine fertige Produktumgebung als vielmehr die Ermöglichung von Experimenten und Zusammenarbeit
Entwicklertests und Emulator-Roadmap
- Für Ende 2023 wird die Festlegung des NDK ABI erwartet
- Canary-Builds sollen bald auch in der öffentlichen Android-CI bereitgestellt werden
- Um riscv64-Android-Anwendungen auf Host-Maschinen einfacher testen zu können, ist geplant, die RISC-V-Ausführung auf x86-64 und ARM64 zu unterstützen
- Für 2024 ist ein öffentlicher Emulator mit vollständigem Funktionsumfang geplant, mit dem Anwendungen für verschiedene Geräte-Formfaktoren getestet werden können
- Laut der Ankündigung zur Zusammenarbeit mit Qualcomm wird erwartet, dass der erste Formfaktor Wearables sein wird
Zusammenarbeit im Ökosystem und RISE Project
- Das Portieren des Android-Betriebssystems allein reicht nicht aus; auch das umgebende Software-Ökosystem muss vorbereitet werden
- Google arbeitet mit der Community und RISE zusammen
- Das RISE Project wurde gegründet, um die Verfügbarkeit von Software für leistungsstarke und energieeffiziente RISC-V-Prozessorkerne zu beschleunigen, auf denen High-Level-Betriebssysteme laufen
- Der Anwendungsbereich umfasst nicht nur Android, sondern auch Linux und andere Betriebssysteme
- Zu den adressierten Anwendungsdomänen gehört auch High-Performance Computing
- Die teilnehmenden Unternehmen sind Andes, Google, Intel, Imagination Technologies, MediaTek, Nvidia, Qualcomm Technologies, Red Hat, Rivos, Samsung, SiFive, T-Head und Ventana
Standardisierung und Wege zur Mitwirkung
- Google baut seine Investitionen in RISC-V International über die bestehende Premium-Mitgliedschaft und die Beteiligung im Board of Directors hinaus weiter aus
- Mehrere Mitwirkende übernehmen zentrale Rollen in horizontalen Komitees, Arbeitsgruppen und technischen Komitees und beteiligen sich an Spezifikationsdesign und Ratifizierung
- Die RISC-V-Unterstützung in Android hängt von breiten Beiträgen ab, von der LLVM-Toolchain bis zu grundlegenden Support-Bibliotheken
- Wichtige Ressourcen für Beiträge und Tests sind:
- google/android-riscv64: bietet Informationen zum Bauen und Testen der RISC-V-Unterstützung in Android, zu bekannten Problemen sowie zu Möglichkeiten, zu AOSP, Toolchains und Support-Bibliotheken beizutragen
- RISC-V Android SIG: eine Mailingliste, auf der man den Fortschritt verfolgen und Vorschläge sowie Feedback einbringen kann
- Google sucht nach Wegen, damit Android-Entwickler, die nativen Code schreiben, neue Plattformen ebenso einfach adressieren können wie Java- und Kotlin-Entwickler
1 Kommentare
Hacker-News-Kommentare
Erwartet man wirklich, dass Entwickler sich vorbereiten? Das ist der falsche Ansatz. Standardmäßig sollte der Aufwand nahe 0 liegen, so wie Apple es beim M1-Umstieg gemacht hat, und danach sollten optionale Optimierungen möglich sein.
Man erinnere sich daran, als Google sagte, Android-Apps sollten auf x86 getestet werden, und später noch einmal auf MIPS. Am Ende ist nichts passiert, und Entwickler werden ihre Zeit nicht verschwenden.
Apple hat Entwicklern DTK-Systeme für 500 Dollar vermietet, damit sie ARM-Hardware ausprobieren und ihre Apps portieren konnten. Das war weit von 0 Aufwand entfernt, die Hardware musste zurückgegeben werden, und anfangs gab es nicht einmal ein 500-Dollar-Guthaben für den Kauf eines Serienprodukts. Erst nach absehbarem Gegenwind wurde das korrigiert.
Google stellt stattdessen einen Software-Emulator bereit, was viel einfacher zu handhaben ist und keine komplizierte Gerätelogistik erfordert. Tatsächlich müssen sich vor allem diejenigen vorbereiten, die NDK-Apps entwickeln oder RISC-V-Hardware unterstützen.
Java-/Kotlin-Apps müssen nicht portiert werden, also ist das nach meinem Maßstab nahe an 0 Aufwand.
MIPS scheint Google nicht besonders stark vorangetrieben zu haben; es war eher einfach vorhanden.
Außerdem richtet sich der Artikel mit AOSP-Builds und ausstehenden Patches eher an Gerätehersteller als an App-Entwickler. Er fordert App-Entwickler nicht wirklich zu irgendetwas auf, sondern sagt am Ende vielmehr: „Wir werden uns ansehen, wie man es nativen Android-Entwicklern genauso leicht machen kann wie Java- und Kotlin-Entwicklern, neue Plattformen ins Visier zu nehmen.“
x86 ist dank Chromebooks weiterhin weit verbreitet. Wenn man kein NDK verwendet, gibt es für Entwickler wegen eines neuen Targets nichts zu tun.
Das „you“ hier folgt der Formulierung des Titels und bezieht sich nicht auf eine bestimmte Person.
Wird die C-Erweiterung, gegen die Qualcomm sich so stark stellt, dann nötig?
Siehe dazu den zugehörigen Unterthread: https://news.ycombinator.com/item?id=37996820
Qualcomms neuestes Material ist https://lists.riscv.org/g/tech-profiles/attachment/400/0/AOS...; darin behaupten sie, dass die von ihnen vorgeschlagenen Zics-Erweiterungen, die „RISC-V ein wenig mehr wie aarch64 machen“, zusammen mit 32-Bit-Long-Jumps eine bessere Code-Dichte als RV64GC erreichen und zudem nicht die Nachteile der C-Erweiterung haben, die sie immer wieder kritisieren.
Wenn Qualcomm beschließt, einen RISC-V-Snapdragon ohne C-Erweiterung zu bauen, ist schwer vorstellbar, wie Android-NDK-Apps funktionieren sollen, die diese Erweiterung nutzen. Ohne irgendeine Art Trap-und-Emulation wäre das absurd langsam.
Wenn Google RV64GC oder RV64G_Zics vorschreibt, könnte sich das hier entscheiden.
C-Instruktionen wegzulassen oder zu ändern ist allerdings keine Option mehr, sobald es echte Auslieferungen gibt; im Moment ist das meiste noch Emulator-Testing, daher könnte es nicht allzu sehr ins Gewicht fallen.
Die eigentliche Frage ist: warum?
Siehe: https://www.quora.com/Why-was-the-ARM-Thumb-instruction-set-...
Nebenbei: Als ich vom neuen AOSP-Emulator erfahren habe, dachte ich aus irgendeinem Grund, man müsse
acloudausführen, um in AOSP statt Goldfish den Cuttlefish-Emulator zu verwenden.acloudweigerte sich aber zu starten, wenn es nicht auf Ubuntu lief.Ich habe sogar einen
LD_PRELOAD-Hack ausprobiert, der die Ausgabe der Funktionunameändert, aber danach wollte esdpkgausführen. Ich nutze NixOS.Den alten Emulator korrekt zum Laufen zu bringen, ist wirklich mühsam, und der neue Emulator hat viele Vorteile.
Seltsamerweise war mir aber überhaupt nicht klar, dass man einfach direkt
launch_cvdausführen kann.Ich hoffe, dass „Android for RISC-V“ erfolgreicher wird als das komplette Desaster „Android for x86“. Ich habe immer noch ein Lenovo-x86-Android-Tablet.
Wenn ich diesen Artikel lese, schafft er allerdings nicht gerade viel Vertrauen. Hohe Hoffnungen, geringe Erwartungen.
Eher sollte man sich wohl Sorgen machen, dass die ARM-Unterstützung stagniert.
Nicht jeder ist ein reicher Amerikaner mit einem ARM-MacBook.
Vor einigen Jahren wurde Android recht breit in Embedded-Bereichen eingesetzt, in denen kein Smartphone oder Tablet, aber ein grafischer Touchscreen nötig war. Heute ist es fast nur noch für Smartphones und in gewissem Maß für Tablets.
Der Grund ist, dass kleinere Anbieter, anders als Smartphone- und Tablet-Hersteller, die sehr komplexen neuen Änderungen in Android nicht mehr mitgehen konnten und nach und nach abgesprungen sind.
Ich kenne die Lage nicht so genau: Gibt es wichtige Smartphones, die RISC-V implementieren? Und erfordert das Änderungen über den gesamten Stack hinweg? Es dürfte ja wohl nicht damit getan sein, nur das Betriebssystem auszutauschen.
Ich bin mir nicht sicher, wo du die Grenze zwischen „Stack“ und „Betriebssystem“ ziehst. Kannst du das etwas genauer ausführen?
Den AOSP-Port für das LiCheePi 4A habe ich noch nicht ausprobiert. Ich sollte ihn wohl einfach mal laufen lassen, um zu sehen, ob er funktioniert.
Es ist einfacher, Minecraft aus dem Play Store herunterzuladen, als die komplette Toolchain zu bootstrappen, die nötig ist, um PolyMC zum Laufen zu bringen.
Google Android wäre das Letzte, was ich auf RISC-V installieren würde.
Wenn man es vermeiden kann, ist es eine dumme Entscheidung, Android auszuführen — erst recht, wenn man durch den Architekturwechsel die Chance hat, auf reines Linux umzusteigen.
Das Problem ist Banking. Zumindest in Schweden ist man noch auf die mobile BankID angewiesen. Sie wird zum Beispiel auch für Online-Käufe über 20 Dollar benötigt und funktioniert nur unter iOS und Android.
Also etwa eine fertige Lösung, die Android effizient in KVM ausführt, oder einen Ansatz, der Android-Kernel-Funktionen und einen RPC-Server im Userspace bereitstellt.
Wenn es das nicht gibt, bleibt einem für den Zugriff auf mobile Apps nichts anderes übrig, als Android auszuführen, und das ist praktisch unverzichtbar.
Wenn man kein Smartphone hat oder keines nutzen möchte, kann man ein kleines Gerät zur Authentifizierung bekommen. Es wirkt seltsam, dass Schweden jeden mit einem Bankkonto dazu zwingt, auch ein Smartphone zu besitzen. Besonders, weil es viele ältere Menschen geben dürfte, die kein Smartphone haben.