- Google está agregando soporte para RISC-V a AOSP para expandir Android a una nueva arquitectura de CPU, y lo está ampliando desde una etapa experimental hacia una colaboración más amplia con el ecosistema
- El soporte inicial toma como base el perfil rva22 y las extensiones vector y vector crypto, con foco en definir el conjunto de funciones necesario para lograr la implementación de rendimiento que Android espera
- Ya es posible compilar, probar y ejecutar Android para RISC-V con Cuttlefish, pero el backend de ART y las optimizaciones del compilador todavía no están terminados
- A finales de 2023 se espera la definición del ABI de NDK y builds canary públicas de CI, mientras que para 2024 están planeados emuladores públicos para probar varios formatos de dispositivo
- Como portar Android por sí solo no es suficiente, Google también está preparando el entorno de desarrollo de aplicaciones junto con RISE Project, RISC-V International y las comunidades de toolchains y bibliotecas de soporte
Soporte de RISC-V que llega a Android
- Android es un sistema operativo de código abierto que soporta varios tipos de dispositivos y arquitecturas de CPU, y está agregando RISC-V como nuevo objetivo de plataforma
- RISC-V es una arquitectura de conjunto de instrucciones (ISA) libre y abierta, un enfoque que busca llevar al ecosistema de hardware la forma de colaboración de toda la industria que ya existe en el software de código abierto
- Desde que fue creada en UC Berkeley hace 10 años, ha sido adoptada rápidamente en el ámbito embebido y de microcontroladores, y recientemente se ha expandido a aceleradores, servidores y computación móvil
De aceptar parches a una etapa madura de soporte
- Google anunció en el RISC-V Summit de noviembre de 2022 que comenzaría a aceptar parches de RISC-V para Android
- Ahora está pasando de simplemente aceptar parches a una etapa de maduración del soporte de RISC-V en Android
- Como RISC-V es una ISA modular con muchas extensiones opcionales, para ofrecer el alto rendimiento que Android espera es necesario definir un conjunto inicial de funciones obligatorias
- Entre los criterios se incluye el perfil rva22
- También se incluyen las extensiones vector y vector crypto
Entorno AOSP que puede compilarse y ejecutarse localmente
- El soporte de Android para RISC-V, como otros objetivos de plataforma de AOSP, puede compilarse, probarse y ejecutarse en una máquina local con Cuttlefish Virtual Device
- El código relacionado puede revisarse en google/android-riscv64
- Un ejemplo de ejecución es el siguiente
$ lunch aosp_cf_riscv64_phone-userdebug
$ m -j
$ launch_cvd -cpus=8 -memory_mb=8192
- Es posible interactuar con el dispositivo en ejecución conectándose con vncviewer
Tareas de optimización que aún quedan pendientes
- Los parches actuales permiten compilar y ejecutar la experiencia básica de Android Open Source Project, pero todavía no está en un estado completamente optimizado
- El trabajo del backend de optimización de ART de Android Runtime sigue en curso
- AOSP, los proyectos externos y los compiladores aún no han llegado al punto de generar código completamente optimizado y reducido aprovechando las extensiones ratificadas más recientes
- En esta etapa, el objetivo se acerca más a permitir la experimentación y la colaboración que a ofrecer un entorno de producto terminado
Hoja de ruta para pruebas de desarrolladores y emuladores
- Se espera que el ABI de NDK quede definido a finales de 2023
- También se prevé que pronto se ofrezcan builds canary en la CI pública de Android
- Se planea soportar la ejecución de RISC-V en x86-64 y ARM64 para facilitar las pruebas de aplicaciones Android riscv64 en la máquina host
- En 2024 están planeados emuladores públicos con un conjunto completo de funciones para probar aplicaciones en distintos formatos de dispositivo
- Según el anuncio de colaboración con Qualcomm, se espera que el primer formato de dispositivo sea el de wearables
Colaboración del ecosistema y RISE Project
- No basta con portar el propio sistema operativo Android; también es necesario preparar el ecosistema de software alrededor
- Google está colaborando con la comunidad y con RISE
- RISE Project fue creado para acelerar la disponibilidad de software en núcleos de procesador RISC-V de alto rendimiento y eficiencia energética capaces de ejecutar sistemas operativos de alto nivel
- Su alcance incluye no solo Android, sino también Linux y otros sistemas operativos
- Los dominios de aplicación objetivo también incluyen la computación de alto rendimiento
- Las empresas participantes son Andes, Google, Intel, Imagination Technologies, MediaTek, Nvidia, Qualcomm Technologies, Red Hat, Rivos, Samsung, SiFive, T-Head y Ventana
Estandarización y rutas de contribución
- Google sigue ampliando su inversión en RISC-V International, más allá de su membresía Premium actual y su participación en la junta directiva
- Varios colaboradores cumplen roles clave en comités horizontales, grupos de trabajo y comités técnicos, participando en el diseño y la ratificación de especificaciones
- El soporte de RISC-V en Android depende de contribuciones amplias, desde el LLVM toolchain hasta las bibliotecas básicas de soporte
- Los recursos principales para contribuir y probar son los siguientes
- google/android-riscv64: ofrece formas de compilar y probar el soporte de RISC-V en Android, problemas conocidos y oportunidades de contribuir a AOSP, al toolchain y a las bibliotecas de soporte
- RISC-V Android SIG: lista de correo donde se puede seguir el progreso y enviar propuestas y comentarios
- Google está buscando cómo lograr que los desarrolladores Android que escriben código nativo también puedan apuntar fácilmente a la nueva plataforma, así como los desarrolladores de Java y Kotlin pueden hacerlo con una plataforma nueva
1 comentarios
Opiniones de Hacker News
¿Se espera que los desarrolladores se preparen? El enfoque está mal. Como hizo Apple durante la transición a M1, lo predeterminado debería ser que el trabajo sea cercano a 0, y luego permitir optimizaciones opcionales.
Basta recordar cuando Google dijo que probaran las apps de Android en x86 y luego también en MIPS. Al final no pasó nada, y los desarrolladores no van a perder el tiempo.
Apple les alquiló a los desarrolladores sistemas DTK por 500 dólares para que pudieran probar hardware ARM y portar sus apps. Estuvo lejos de ser trabajo 0; además había que devolver el hardware y, al principio, ni siquiera había un crédito de 500 dólares para usar en la compra del producto de producción. Lo corrigieron recién después de una reacción previsible.
Google, en cambio, ofrece un emulador de software, así que es mucho más fácil de manejar y no requiere la logística complicada de dispositivos. En la práctica, quienes necesitan hacer trabajo de preparación son quienes crean apps con NDK o quienes dan soporte a hardware RISC-V.
Las apps Java/Kotlin no necesitan portarse, así que, para mí, eso es cercano a trabajo 0.
No creo que Google haya impulsado MIPS con mucha fuerza; más bien simplemente existía.
Además, este artículo está más dirigido a fabricantes de dispositivos que a desarrolladores de apps, y trata sobre compilaciones de AOSP y parches pendientes. No es un texto que les pida a los desarrolladores de apps hacer algo; de hecho, al final dice que “veremos formas de hacer que para los desarrolladores nativos de Android sea tan fácil apuntar a una nueva plataforma como lo es para los desarrolladores de Java y Kotlin”.
x86 sigue teniendo un uso amplio gracias a las Chromebook. Si no usas el NDK, no hay nada que hacer del lado del desarrollador por un nuevo destino.
Aquí “you” sigue la formulación del título; no se refiere a una persona específica.
¿Será necesaria la extensión C a la que Qualcomm se opone tanto?
Para el subhilo relacionado, ver https://news.ycombinator.com/item?id=37996820
El material más reciente de Qualcomm es https://lists.riscv.org/g/tech-profiles/attachment/400/0/AOS..., donde afirman que la extensión Zics que propusieron, “hacer que RISC-V se parezca un poco a aarch64”, junto con saltos largos de 32 bits, logra mejor densidad de código que RV64GC y no tiene las desventajas de la extensión C que ellos vienen cuestionando.
Si Qualcomm decide hacer un RISC-V Snapdragon sin la extensión C, es difícil ver cómo funcionarían las apps de Android NDK que usan esa extensión. Salvo que sea algo como una trampa seguida de emulación, sería ridículamente lento.
Si Google impone RV64GC o RV64G_Zics, esto podría resolverse ahí.
Dicho eso, quitar o cambiar instrucciones C no es una opción después de un despliegue real, y ahora quizá no importe tanto porque la mayoría está en etapa de pruebas con emuladores.
La verdadera pregunta es por qué.
Referencia: https://www.quora.com/Why-was-the-ARM-Thumb-instruction-set-...
Es un tema lateral, pero cuando me enteré del nuevo emulador de AOSP, por alguna razón pensé que para usar el emulador Cuttlefish en AOSP en lugar de Goldfish tenía que ejecutar
acloud. Peroacloudse negaba a ejecutarse si no era Ubuntu.Incluso probé un hack con
LD_PRELOADpara cambiar la salida de la funciónuname, pero después intentaba ejecutardpkg. Yo uso NixOS.Hacer funcionar bien el emulador anterior era realmente engorroso, y el nuevo emulador tiene muchas ventajas.
Pero, curiosamente, no tenía idea de que bastaba con ejecutar
launch_cvddirectamente.Espero que “Android for RISC-V” tenga más éxito que “Android for x86”, que fue un desastre total. Todavía tengo una tablet Lenovo x86 con Android.
Aun así, leer este artículo no me genera mucha confianza. Mis esperanzas son altas, pero mis expectativas son bajas.
Más bien creo que habría que preocuparse más por el estancamiento del soporte para ARM.
No todos son estadounidenses ricos con una MacBook ARM.
Hace unos años, Android se usaba bastante en el ámbito embebido cuando se necesitaba una pantalla táctil gráfica, no necesariamente en teléfonos o tablets; pero ahora quedó casi para teléfonos y, en cierta medida, tablets.
La razón es que, a diferencia de los fabricantes de teléfonos y tablets, las empresas pequeñas no podían seguir el ritmo de los nuevos cambios muy complejos de Android, así que se fueron alejando poco a poco.
No entiendo bien la situación: ¿existen teléfonos importantes que implementen RISC-V? ¿Y esto requiere cambios en todo el stack? No parece ser algo de solo cambiar el sistema operativo.
No estoy seguro de dónde trazas la línea entre “stack” y “sistema operativo”. ¿Podrías explicarlo un poco más?
Todavía no probé el port de AOSP para la LiCheePi 4A. Supongo que debería correrlo alguna vez solo para ver si funciona.
Es más fácil bajar Minecraft desde Play Store que hacer bootstrap de toda la toolchain necesaria para hacer funcionar PolyMC.
Google Android sería mi última opción entre las cosas para instalar en RISC-V.
Si se puede evitar, ejecutar Android es una elección tonta, y más aún si al cambiar de arquitectura existe la oportunidad de pasarse a Linux puro.
El problema es la banca. Al menos en Suecia todavía dependemos de BankID móvil. Por ejemplo, también se necesita para compras en línea de más de 20 dólares, y solo funciona en iOS y Android.
Por ejemplo, alguna solución lista para usar que ejecute Android de forma eficiente en KVM, o algo que proporcione funciones del kernel de Android y un servidor RPC en espacio de usuario.
Si no existe eso, no queda otra que correr Android para acceder a apps móviles, y eso es casi indispensable.
Si no tienes un smartphone o no quieres usarlo, puedes recibir un dispositivo pequeño para la autenticación. Suena raro que Suecia obligue a todos los que tienen una cuenta bancaria a tener también un smartphone. Sobre todo porque debe haber muchas personas mayores sin smartphone.