Preparatevi sviluppatori Android, è in arrivo un nuovo compilatore Android

Pubblicato: 2022-03-11

La frammentazione è stata per anni fonte di frustrazione per sviluppatori e consumatori Android; ora sembra che le cose peggioreranno prima di migliorare. Un nuovo compilatore Android è in arrivo, ancora una volta, e ci sono alcuni sviluppi degni di nota sul fronte hardware, che potrebbero interessare gli sviluppatori.

Con Dalvik fuori dai giochi, molte persone si aspettavano che il nuovo runtime ART con capacità a 64 bit di Google durerà per anni, cosa che probabilmente accadrà, ma nel prossimo futuro subirà una profonda revisione. Oltre a offrire supporto per hardware a 64 bit, ART ha anche introdotto la compilazione AOT (Anteprima del tempo), mentre Dalvik era un compilatore JIT (just-in-time). Il nuovo compilatore ottimizzato sbloccherà ancora più possibilità.

Illustrazione del compilatore Android

Per quanto riguarda gli sviluppi hardware, ci sono alcune nuove tendenze e alcuni nuovi e vecchi attori nel settore dei System-on-Chip per smartphone, ma ci arriverò più avanti.

Innanzitutto, diamo un'occhiata ai piani di runtime di Google.

Dalvik, ART, ART con il nuovo compilatore Android

ART è stato introdotto con Android 5.0 l'anno scorso, lanciato su Nexus 9 e Nexus 6, sebbene quest'ultimo utilizzasse una CPU ARMv7-A a 32 bit. Tuttavia, invece di essere progettato da zero, ART è stata in realtà un'evoluzione di Dalvik, che si è allontanata da JIT.

Dalvik compila app al volo, se necessario. Questo, ovviamente, aggiunge più carico della CPU, aumenta il tempo necessario per avviare le applicazioni e incide sulla durata della batteria. Poiché ART compila tutto in anticipo, al momento dell'installazione, non deve sprecare cicli di clock nella compilazione ogni volta che il dispositivo avvia un'app. Si traduce in un'esperienza utente più fluida, riducendo allo stesso tempo il consumo energetico e aumentando la durata della batteria.

Quindi cosa farà Google dopo?

Poiché ART è stato sviluppato per sfruttare i nuovi core della CPU ARMv8 a 64 bit, che hanno iniziato a essere online alla fine dell'anno scorso, il compilatore originale sembra essere stato una misura di ripiego. Ciò significava che la priorità era il time-to-market, non l'efficienza e l'ottimizzazione. Ciò non significa che ART fosse solo un lavoro di fretta fallito, perché non lo era; il runtime funziona bene ed è stato elogiato da sviluppatori e utenti.

Tuttavia, c'è spazio per miglioramenti e ora sembra che Google stia lavorando da un po' su un compilatore notevolmente migliorato e lo sforzo probabilmente precede il rilascio ufficiale di ART. Il progettista di chip britannico, ARM, ha recentemente rivelato alcuni fatti interessanti sui piani di runtime di Google, indicando un nuovo compilatore "Optimizing" per ART. Il nuovo compilatore offre rappresentazioni intermedie (IR) che consentono la manipolazione della struttura del programma prima della generazione del codice. Utilizza un unico livello di rappresentazione intermedio, strutturato come un grafico ricco di informazioni, che fornisce informazioni migliori alle parti del compilatore consapevoli dell'architettura.

Nuovo compilatore Android per sviluppatori Android

Il compilatore "Quick" utilizza due livelli di rappresentazione intermedia, con semplici elenchi collegati di istruzioni e variabili, ma perde informazioni importanti durante la creazione di IR.

ARM afferma che il nuovo compilatore "Ottimizzazione" offrirà una serie di vantaggi significativi, descrivendolo come un "grande balzo in avanti" in termini di tecnologia del compilatore. Il compilatore offrirà un'infrastruttura migliore per ottimizzazioni future e aiuterà a migliorare la qualità del codice.

Ottimizzazione e funzionalità chiave del compilatore rapido

ARM ha delineato la differenza tra i due compilatori in un'unica diapositiva, affermando che il compilatore "Ottimizzazione" consente un utilizzo più efficiente del registro, meno versamenti nello stack e richiede meno codice per l'esecuzione.

Ecco come la mette ARM:

Quick ha un algoritmo di allocazione dei registri molto semplice.

  • Mancanza di informazioni nell'IR
  • Velocità di compilazione rispetto alla complessità: nasce come JIT
  • Scarse prestazioni: molti registri sono stati versati sullo stack

L'ottimizzazione utilizza l'allocazione del registro di scansione lineare.

  • Ottimo compromesso tra prestazioni e tempo
  • Viene utilizzata l'analisi della vivacità
  • Ridurre al minimo lo spilling del registro per impilare"

Sebbene il nuovo compilatore sia ancora in fase di sviluppo, ARM ha condiviso alcuni dati sulle prestazioni; nei test sintetici della CPU, il compilatore produce un aumento delle prestazioni compreso tra il 15 e il 40 percento. La velocità di compilazione è aumentata di circa l'8%. Tuttavia, la società avverte che le cifre "cambiano ogni giorno" man mano che il nuovo compilatore matura.

L'obiettivo è raggiungere una quasi parità con il compilatore "Quick", che attualmente ha un chiaro vantaggio in termini di velocità di compilazione e dimensione del file.

In questo momento, sembra un compromesso; il nuovo compilatore "Ottimizzato" offre notevoli miglioramenti delle prestazioni nelle applicazioni legate alla CPU e nei benchmark sintetici, ma si traduce in file più grandi del 10% che vengono compilati circa l'8% più lentamente. Sebbene le ultime due cifre sembrino essere superate dai miglioramenti delle prestazioni della CPU, tieni presente che si applicheranno a tutte le app, indipendentemente dal carico della CPU, utilizzando risorse ancora più limitate come RAM e spazio di archiviazione. Ricorda che la compilazione a 64 bit occupa già più RAM rispetto alla compilazione a 32 bit.

Anche qualsiasi riduzione della velocità di compilazione e dei tempi di avvio è fonte di preoccupazione, a causa del suo effetto sulla reattività del dispositivo e sull'esperienza dell'utente.

La corsa ARM multicore

Un'altra fonte di preoccupazione, indipendentemente dal runtime e dal compilatore, è la popolarità dei processori multicore basati sulle architetture ARMv7-A e ARMv8. La mania dell'octa-core è iniziata nel 2013 ed è stata rapidamente liquidata come una trovata di marketing a buon mercato. Un dirigente di Qualcomm è arrivato al punto di definire i processori octa-core "sciocchi" e "stupidi", dicendo che l'azienda non ne farebbe nessuno perché i suoi ingegneri "non sono stupidi". Lo stesso dirigente ha anche descritto il supporto a 64 bit sull'Apple A7 come un "espediente".

Avanti veloce di due anni e ho uno smartphone Qualcomm octa-core Cortex-A53 a 64 bit sulla mia scrivania, mentre il dirigente in questione ha un titolo di lavoro diverso sulla targa.

braccio multipolare

Come se i chip a 8 core non bastassero, il prossimo anno vedremo i primi dispositivi basati su processori applicativi a 10 core. Il primo chip per smartphone a 10 core proviene da MediaTek sotto forma di Helio X20 e sarà caratterizzato da tre cluster di core CPU, soprannominati huge.Medium.TINY. Sembra divertente e migliora; presto inizieremo a vedere i primi dispositivi Android economici basati su una nuova generazione di processori Intel.

Diamo un'occhiata alle guerre principali di ARM e al loro significato per sviluppatori e consumatori. Esistono due versioni distinte dei design octa-core ARM SoC. Le soluzioni di fascia alta tendono a utilizzare il layout big.LITTLE di ARM, utilizzando quattro core a bassa potenza e quattro core grandi per un carico elevato. Il secondo modo per inserire otto core CPU ARM in un chip consiste nell'utilizzare core identici o core identici in due cluster con velocità di clock diverse.

I principali produttori di chip mobili tendono a utilizzare entrambi gli approcci, chip big.LITTLE nei dispositivi di fascia alta, insieme a normali octa-core sui prodotti tradizionali. Entrambi gli approcci hanno i loro pro e contro, quindi diamo un'occhiata più da vicino.

ARM big.LITTLE vs. Regular Octa-Core:

L'uso di due cluster di diversi core della CPU consente buone prestazioni ed efficienza a thread singolo su progetti big.LITTLE. Il compromesso è che un singolo core Cortex-A57 ha all'incirca le dimensioni di quattro piccoli core Cortex-A53 ed è meno efficiente.

L'utilizzo di otto core identici, o otto core identici in due cluster con clock diversi, è conveniente ed efficiente dal punto di vista energetico. Tuttavia, le prestazioni del thread singolo sono basse.

L'attuale generazione di progetti big.LITTLE basati su core ARMv8 non può utilizzare il nodo di produzione a 28 nm più economico. Anche a 20 nm, alcuni modelli mostrano molto throttling, che limita le loro prestazioni sostenute. Gli octa-core standard basati su core CPU Cortex-A53 possono essere implementati efficacemente a 28 nm, quindi i produttori di chip non devono utilizzare nodi di produzione all'avanguardia come FinFET a 20 nm o 16/14 nm, il che mantiene bassi i costi.

ARM big.LITTLE vs. Octa-Core regolare

Non voglio annoiarvi a morte con le tendenze del design dei chip, ma è importante tenere a mente alcune nozioni di base per i processori mobili 2015 e 2016:

  • La maggior parte dei chip utilizzerà nodi di produzione a 28 nm e core Cortex-A53, limitando le prestazioni a thread singolo.
  • Il grande core Cortex-A57 è implementato in due progetti principali di Samsung e Qualcomm, ma sembra che altri produttori di chip lo stiano saltando e stiano aspettando il core Cortex-A72.
  • Le prestazioni multithread diventeranno sempre più rilevanti nei prossimi 18 mesi.
  • Non ci si può aspettare grandi guadagni in termini di prestazioni fino a quando i nodi 20nm e FinFET non diventeranno significativamente più economici (2016 e oltre).
  • Stanno arrivando anche i design a 10 core.

Tutti questi punti hanno alcune implicazioni per gli sviluppatori Android. Finché i produttori di chip sono bloccati su processi a 28 nm per la maggior parte dei chip di smartphone e tablet, gli sviluppatori dovranno fare del loro meglio per sfruttare le prestazioni multi-thread e concentrarsi sull'efficienza.

ART e i nuovi compilatori dovrebbero fare molto per migliorare le prestazioni e l'efficienza, ma non saranno in grado di infrangere le leggi della fisica. I vecchi design a 32 bit non verranno utilizzati in molti dispositivi in ​​futuro e anche i dispositivi più economici stanno iniziando a essere forniti con silicio a 64 bit e Android 5.0.

Sebbene Android 5.x abbia ancora una base di utenti relativamente piccola, sta crescendo rapidamente e si espanderà ancora più velocemente ora che arrivano telefoni da $ 100 a $ 150 con chip a 64 bit e Android 5.0. Il passaggio ad Android a 64 bit sta andando bene.

La grande domanda è quando Dalvik otterrà il nuovo compilatore ottimizzato. Potrebbe essere lanciato entro la fine dell'anno o il prossimo anno con Android 6.0; è ancora presto per dirlo con certezza.

Computing eterogeneo in arrivo sui cellulari

C'è un'altra cosa da tenere a mente; la grafica mobile sta diventando più potente, specialmente sui processori di fascia alta, quindi i produttori di chip stanno lavorando molto dietro le quinte per sfruttarli per usi diversi dai giochi e dalla decodifica video. L'elaborazione eterogenea è in circolazione da alcuni anni, consentendo ai PC di scaricare attività altamente parallelizzate sulla GPU.

La stessa tecnologia sta ora arrivando ai processori mobili, fondendo efficacemente CPU e core GPU. L'approccio consentirà agli sviluppatori di sbloccare maggiori prestazioni eseguendo determinati tipi di programmi, in particolare i carichi OpenCL, sulla GPU. Gli sviluppatori potranno concentrarsi sul throughput, mentre i processori gestiranno automaticamente l'esecuzione parallela su CPU e GPU.

Calcolo eterogeneo

Ovviamente, questo non funzionerà in tutte le app e ridurrà il carico in tutte le situazioni, ma in alcune nicchie dovrebbe sbloccare più prestazioni e aiutare a ridurre il consumo energetico. A seconda del carico, il SoC deciderà automaticamente come elaborare il codice, utilizzando la CPU per alcune attività e scaricandone altre sulla GPU.

Poiché abbiamo a che fare con applicazioni parallelizzate, si prevede che l'approccio produrrà i maggiori miglioramenti nell'elaborazione delle immagini. Ad esempio, se è necessario utilizzare immagini a super risoluzione e ricampionare, il processo potrebbe essere suddiviso in diverse fasi in OpenCL. Se il processo coinvolge fasi diverse, come find_neighbor , col_upsample , row_upsample , sub e blur2 , l'hardware distribuirà il carico tra i core di CPU e GPU nel modo più efficiente, a seconda del tipo di core che gestirà l'attività data nel migliore dei modi strada. Ciò non solo migliorerà le prestazioni di un ordine di grandezza, ma aiuterà anche a ridurre il consumo energetico.

Intel è tornata dai morti e sembra buono per un cadavere

Intel ha perso la rotta sulla rivoluzione mobile e ha praticamente ceduto il mercato ad ARM e ai suoi partner hardware. Tuttavia, il chipmaker statunitense ha i soldi e le risorse per passare qualche anno in panchina e fare una rimonta.

L'anno scorso Intel ha sovvenzionato le vendite dei suoi processori Atom per tablet, riuscendo a quadruplicare le spedizioni in meno di un anno. Ora sta rivolgendo la sua attenzione al segmento degli smartphone con i nuovi processori SoFIA Atom x3. Francamente, non sono del tutto sicuro che questi chip debbano essere anche chiamati processori Intel perché non sono effettivamente prodotti dal gigante dei chip. I processori SoFIA sono progettati con un budget limitato, in collaborazione con i produttori di chip cinesi. Sono prodotti sul nodo a 28 nm, sono lenti, piccoli ed economici.

interl e Android

Questo potrebbe sorprendere alcuni osservatori casuali, ma Intel non si preoccupa delle soluzioni mobili di fascia alta; Le parti SoFIA di fascia bassa alimenteranno telefoni Android mercificati con un prezzo compreso tra $ 50 e $ 150. I primi modelli dovrebbero iniziare a essere spediti entro la fine del secondo trimestre del 2015 e la maggior parte di essi sarà progettata per i mercati asiatici, così come per i mercati emergenti di altre parti del mondo. Sebbene sia possibile che ne vedremo alcuni in Nord America ed Europa, l'attenzione di Intel sembra essere su Cina e India.

Intel sta coprendo le sue scommesse con i processori Atom x5 e x7, che utilizzeranno un'architettura completamente nuova oltre al nodo di produzione all'avanguardia a 14 nm dell'azienda. Tuttavia, questi prodotti sono destinati ai tablet piuttosto che agli smartphone, almeno per il momento.

La grande domanda, quella a cui non ho una risposta, è quante vittorie di progettazione Intel può ottenere. Gli analisti sono divisi sulla questione e le previsioni di spedizione sembrano approssimative a questo punto.

L'anno scorso Intel ha dimostrato di essere disposta a sostenere perdite e bruciare miliardi di dollari per prendere piede nel mercato dei tablet. È ancora troppo presto per dire se utilizzerà lo stesso approccio con i nuovi chip Atom, in particolare i prodotti SoFIA per smartphone.

Finora ho visto solo un prodotto reale basato su un processore Intel SoFIA: un tablet cinese da $ 69 con connettività 3G. È essenzialmente un telefono di grandi dimensioni, quindi come puoi immaginare, un telefono SoFIA entry-level potrebbe finire per costare molto meno. Deve essere una proposta allettante per i produttori di smartphone e tablet white-box, dal momento che potrebbero facilmente progettare dispositivi da $ 50 a $ 100 con un adesivo "Intel Inside" sul retro, che, dal punto di vista del marketing, suona bene.

Sfortunatamente, possiamo solo immaginare quanti telefoni e tablet Intel verranno spediti nel corso del prossimo anno. Si tratta ovviamente di milioni di unità, decine di milioni, ma la domanda è: quante decine? La maggior parte degli analisti ritiene che Intel spedirà tra i 20 e i 50 milioni di processori Atom x3 quest'anno, il che è un calo considerando che le spedizioni totali di smartphone dovrebbero raggiungere 1,2 miliardi di dispositivi quest'anno. Tuttavia, Intel è spietata, ha soldi da bruciare e non deve realizzare un profitto su nessuno di questi chip. Potrebbe conquistare dal 3 al 4% del mercato entro la fine del 2015, ma la quota di mercato dovrebbe continuare a crescere nel 2016 e oltre.

Cosa significa questo per gli sviluppatori Android?

Intel ha avuto una cattiva reputazione tra alcuni sviluppatori Android a causa di alcuni problemi di compatibilità. Questo è stato un vero problema un paio di anni fa perché l'hardware era molto diverso dai core ARM standard utilizzati nella maggior parte dei dispositivi.

Fortunatamente, l'azienda ha fatto molti progressi nel corso dei due anni; offre ampi programmi di formazione, documentazione completa e altro ancora. In effetti, una rapida occhiata agli elenchi di lavoro di LinkedIn rivela che Intel sta assumendo dozzine di sviluppatori Android, con alcune nuove offerte di lavoro che si aprono ogni mese.

Quindi va tutto bene, no? Beh, dipende…

La scorsa settimana ho avuto la possibilità di testare un nuovo telefono Asus basato sull'Atom Z3560 di Intel, e devo dire che sono rimasto soddisfatto dei risultati; è una buona piattaforma hardware in grado di indirizzare 4 GB di RAM su un dispositivo economico. Asus pensa di poter vendere 30 milioni di unità quest'anno, il che è davvero impressionante data la quota di mercato degli smartphone di Intel.

L'unico problema è che alcune app Android continuano a comportarsi male sull'hardware Intel . Di solito, non è niente di troppo grande, ma si verificano strani arresti anomali, punteggi di benchmark non realistici e altre stranezze di compatibilità. La cattiva notizia è che gli sviluppatori non possono fare molto per risolvere i problemi relativi all'hardware, anche se ottenere alcuni dispositivi basati su Intel per i test sarebbe un buon inizio. La buona notizia: Intel sta facendo del suo meglio per sistemare tutto da capo, quindi non è necessario.

Per quanto riguarda l'hardware ARM, vedremo più core CPU in ancora più cluster. Le prestazioni a thread singolo rimarranno limitate su molti dispositivi tradizionali, in particolare telefoni economici basati su SoC Cortex-A53 quad e octa-core. È troppo presto per dire se i nuovi compilatori Google/ARM saranno in grado di aumentare le prestazioni su tali dispositivi. Probabilmente lo faranno, ma di quanto? L'informatica eterogenea è un'altra tendenza a cui prestare attenzione per il prossimo anno.

Per concludere, ecco cosa dovrebbero aspettarsi gli sviluppatori Android in termini di software e hardware tra la fine del 2015 e il 2016:

  • Più processori Intel x86 nei segmenti di mercato entry-level e mainstream.
  • La quota di mercato di Intel sarà trascurabile nel 2015, ma potrebbe crescere nel 2016 e oltre.
  • Altri design multicore ARMv8 in arrivo online.
  • Nuovo compilatore ART “ottimizzato”.
  • L'elaborazione eterogenea sta arrivando, ma ci vorrà del tempo.
  • La transizione ai nodi di produzione FinFET e Cortex-A72 sbloccherà più prestazioni e funzionalità.