Pregătiți-vă dezvoltatorii Android, vine un nou compilator Android

Publicat: 2022-03-11

Fragmentarea a fost o sursă de frustrare pentru dezvoltatorii și consumatorii Android de ani de zile; acum se pare că lucrurile se vor înrăutăți înainte să se îmbunătățească. Un nou compilator Android vine, din nou, și există câteva evoluții demne de remarcat pe partea hardware, care ar putea afecta dezvoltatorii.

Cu Dalvik ieșit din imagine, mulți oameni se așteptau ca noul timp de rulare ART capabil de 64 de biți de la Google să rămână ani de zile, ceea ce probabil va fi, dar va primi o revizuire majoră în viitorul apropiat. Pe lângă faptul că oferă suport pentru hardware-ul pe 64 de biți, ART a introdus și compilarea ahead-of-time (AOT), în timp ce Dalvik era un compilator just-in-time (JIT). Noul compilator optimizat va debloca și mai multe posibilități.

Ilustrația compilatorului Android

În ceea ce privește evoluțiile hardware, există câteva tendințe noi și câțiva jucători noi și vechi în industria de smartphone-uri System-on-Chip, dar voi ajunge la asta mai târziu.

Mai întâi, să aruncăm o privire la planurile de rulare ale Google.

Dalvik, ART, ART cu noul compilator Android

ART a fost introdus cu Android 5.0 anul trecut, lansându-se pe Nexus 9 și Nexus 6, deși acesta din urmă folosea un procesor ARMv7-A pe 32 de biți. Cu toate acestea, în loc să fie proiectat de la zero, ART a fost de fapt o evoluție a lui Dalvik, care s-a îndepărtat de JIT.

Dalvik compilează aplicații din mers, după cum este necesar. Acest lucru, evident, adaugă mai multă sarcină procesorului, crește timpul necesar pentru lansarea aplicațiilor și are efecte asupra duratei de viață a bateriei. Deoarece ART compilează totul din timp, la instalare, nu trebuie să irosească ciclurile de ceas la compilare de fiecare dată când dispozitivul pornește o aplicație. Rezultă o experiență de utilizator mai fluidă, reducând în același timp consumul de energie și mărind durata de viață a bateriei.

Deci, ce va face Google în continuare?

Deoarece ART a fost dezvoltat pentru a profita de noile nuclee CPU ARMv8 pe 64 de biți, care au început să vină online la sfârșitul anului trecut, compilatorul original pare să fi fost o măsură intermediară. Aceasta a însemnat că prioritatea era time-to-market, nu eficiența și optimizarea. Nu înseamnă că ART a fost doar o treabă rătăcită, pentru că nu a fost; runtime-ul funcționează bine și a fost lăudat de dezvoltatori și utilizatori.

Cu toate acestea, există loc de îmbunătățire, iar acum, se pare că Google a lucrat la un compilator mult îmbunătățit de ceva vreme, iar efortul este probabil anterior lansării oficiale a ART. Designerul britanic de cipuri, ARM, a dezvăluit recent câteva date interesante despre planurile de rulare ale Google, indicând un nou compilator „Optimizing” pentru ART. Noul compilator oferă reprezentări intermediare (IR) care permit manipularea structurii programului înainte de generarea codului. Utilizează un singur nivel de reprezentare intermediară, structurat ca un grafic bogat în informații, care oferă informații mai bune părților conștiente de arhitectură ale compilatorului.

Noul compilator Android pentru dezvoltatorii Android

Compilatorul „Quick” folosește două niveluri de reprezentare intermediară, cu liste simple legate de instrucțiuni și variabile, dar pierde informații importante în timpul creării IR.

ARM susține că noul compilator „Optimizing” va oferi o serie de beneficii semnificative, descriindu-l ca un „marele salt înainte” în ceea ce privește tehnologia compilatorului. Compilatorul va oferi o infrastructură mai bună pentru optimizări viitoare și va ajuta la îmbunătățirea calității codului.

Optimizare și caracteristici cheie ale compilatorului rapid

ARM a evidențiat diferența dintre cele două compilatoare într-un singur diapozitiv, susținând că compilatorul „Optimizare” permite o utilizare mai eficientă a registrului, mai puțin răspândirea în stivă și are nevoie de mai puțin cod pentru a fi executat.

Iată cum spune ARM:

Quick are un algoritm de alocare a registrului foarte simplu.

  • Lipsa de informare în RI
  • Viteza de compilare peste complexitate – origini ca JIT
  • Performanță slabă – o mulțime de registre s-au vărsat în stivă

Optimizarea utilizează Liner Scan Register Allocation.

  • Compromis excelent între performanță și timp
  • Se folosește analiza de viabilitate
  • Minimizarea deversării registrului în stivă”

Deși noul compilator este încă în dezvoltare, ARM a împărtășit câteva cifre de performanță; în testele CPU sintetice, compilatorul produce o creștere a performanței în intervalul de 15 până la 40 la sută. Viteza de compilare este crescută cu aproximativ 8%. Cu toate acestea, compania avertizează că cifrele „se schimbă zilnic” pe măsură ce noul compilator se maturizează.

Accentul se pune pe atingerea aproape parității cu compilatorul „Quick”, care în prezent are un avantaj clar în viteza de compilare și dimensiunea fișierului.

În acest moment, pare un compromis; noul compilator „Optimizat” oferă îmbunătățiri impresionante ale performanței aplicațiilor legate de CPU și benchmark-urilor sintetice, dar are ca rezultat fișiere cu 10 la sută mai mari, care se compilează cu ~8 la sută mai lent. Deși ultimele două cifre par să fie depășite de câștigurile de performanță ale procesorului, rețineți că acestea se vor aplica pentru fiecare aplicație, indiferent de încărcarea procesorului, utilizând resurse și mai limitate, cum ar fi RAM și stocare. Amintiți-vă că compilarea pe 64 de biți ocupă deja mai multă memorie RAM decât compilarea pe 32 de biți.

Orice reducere a vitezei de compilare și a timpilor de lansare este, de asemenea, o sursă de îngrijorare, datorită efectului său asupra receptivității dispozitivului și experienței utilizatorului.

Cursa Multicore ARM

O altă sursă de îngrijorare, indiferent de runtime și compilator, este popularitatea procesoarelor multicore bazate pe arhitecturile ARMv7-A și ARMv8. Nebunia octa-core a început în 2013 și a fost rapid respinsă ca o cascadorie ieftină de marketing. Un director Qualcomm a mers atât de departe încât a numit procesoarele octa-core „prostii” și „proști”, spunând că compania nu va produce niciunul pentru că inginerii săi „nu sunt proști”. Același exec a descris, de asemenea, suportul pe 64 de biți pe Apple A7 ca un „gimmick”.

Doi ani înainte și am pe birou un smartphone Qualcomm octa-core Cortex-A53 pe 64 de biți, în timp ce directorul în cauză are un alt titlu de post pe placa sa cu numele.

braț multicore

De parcă cipurile cu 8 nuclee nu sunt suficiente, anul viitor vom vedea primele dispozitive bazate pe procesoare de aplicații cu 10 nuclee. Primul cip pentru smartphone cu 10 nuclee vine de la MediaTek sub forma Helio X20 și va avea trei grupuri de nuclee CPU, denumite huge.Medium.TINY. Sună distractiv și devine mai bine; în curând vom începe să vedem primele dispozitive Android accesibile, bazate pe o nouă generație de procesoare Intel.

Să ne uităm la războaiele de bază ale ARM și la ce înseamnă acestea pentru dezvoltatori și consumatori. Există două versiuni distincte de design ARM SoC octa-core. Soluțiile high-end tind să folosească aspectul big.LITTLE al ARM, folosind patru nuclee de putere redusă și patru nuclee mari pentru încărcare mare. A doua modalitate de a lipi opt nuclee CPU ARM într-un cip este să folosești nuclee identice sau nuclee identice în două grupuri cu viteze de ceas diferite.

Producătorii de cipuri mobile de top au tendința de a utiliza ambele abordări, cipurile mari.LITTLE în dispozitivele de ultimă generație, împreună cu octa-core-uri obișnuite pe produsele mainstream. Ambele abordări au argumente pro și contra, așa că haideți să aruncăm o privire mai atentă.

ARM big.LITTLE vs. Octa-Core obișnuit:

Folosirea a două grupuri de nuclee CPU diferite permite performanțe bune și eficiență pe un singur fir pe modele big.LITTLE. Schimbul este că un singur nucleu Cortex-A57 are aproximativ dimensiunea a patru nuclee Cortex-A53 mici și este mai puțin eficient.

Utilizarea a opt nuclee identice sau a opt nuclee identice în două grupuri cu ceasuri diferite este rentabilă și eficientă din punct de vedere energetic. Cu toate acestea, performanța unui singur fir este scăzută.

Generația actuală de modele big.LITTLE bazate pe nuclee ARMv8 nu poate folosi cel mai ieftin nod de producție de 28 nm. Chiar și la 20 nm, unele modele prezintă multă accelerare, ceea ce limitează performanța lor susținută. Octa-core-urile standard bazate pe nuclee CPU Cortex-A53 pot fi implementate eficient în 28nm, astfel încât producătorii de cipuri nu trebuie să folosească noduri de producție de ultimă oră, cum ar fi 20nm sau 16/14nm FinFET, ceea ce ține costurile scăzute.

ARM big.LITTLE vs. Octa-Core obișnuit

Nu vreau să vă plictisesc de moarte cu tendințele de design al cipurilor, dar câteva elemente de bază sunt importante de reținut pentru procesoarele mobile din 2015 și 2016:

  • Majoritatea cipurilor vor folosi noduri de producție de 28 nm și nuclee Cortex-A53, limitând performanța cu un singur fir.
  • Miezul mare Cortex-A57 este implementat în două modele majore de la Samsung și Qualcomm, dar alți producători de cipuri par să-l ignore și așteaptă nucleul Cortex-A72.
  • Performanța cu mai multe fire va deveni din ce în ce mai relevantă în următoarele 18 luni.
  • Nu se pot aștepta câștiguri mari de performanță până când 20nm și nodurile FinFET devin semnificativ mai ieftine (2016 și mai departe).
  • Vin și modele cu 10 nuclee.

Toate aceste puncte au anumite implicații pentru dezvoltatorii Android. Atâta timp cât producătorii de cipuri sunt blocați la procese de 28 nm pentru majoritatea cipurilor pentru smartphone-uri și tablete, dezvoltatorii vor trebui să facă tot posibilul pentru a atinge performanța cu mai multe fire și să se concentreze pe eficiență.

ART și noile compilatoare ar trebui să meargă un drum lung spre îmbunătățirea performanței și eficienței, dar nu vor putea încălca legile fizicii. Modelele vechi, pe 32 de biți, nu vor fi folosite în multe dispozitive, și chiar și cele mai ieftine dispozitive încep să fie livrate cu siliciu pe 64 de biți și Android 5.0.

Deși Android 5.x are încă o bază de utilizatori relativ mică, acesta crește rapid și se va extinde și mai rapid acum că sosesc telefoane de la 100 la 150 USD cu cipuri pe 64 de biți și Android 5.0. Trecerea la Android pe 64 de biți merge bine.

Marea întrebare este când va primi Dalvik noul compilator optimizat. S-ar putea lansa mai târziu în acest an, sau anul viitor cu Android 6.0; este încă prea devreme pentru a spune cu siguranță.

Calculul eterogen vine pe telefoane mobile

Mai este un lucru de reținut; Grafica mobilă devine din ce în ce mai puternică, în special pe procesoarele de ultimă generație, așa că producătorii de cipuri fac multă muncă în culise pentru a le folosi pentru alte utilizări decât jocuri și decodare video. Calculul eterogen există de câțiva ani, permițând computerelor să descarce sarcini extrem de paralele pe GPU.

Aceeași tehnologie vine acum și la procesoarele mobile, fuzionând efectiv nucleele CPU și GPU. Abordarea va permite dezvoltatorilor să deblocheze mai multe performanțe prin executarea anumitor tipuri de programe, și anume încărcări OpenCL, pe GPU. Dezvoltatorii se vor putea concentra pe debit, în timp ce procesoarele se vor ocupa automat de execuția paralelă pe procesoare și GPU.

Calcul eterogen

Desigur, acest lucru nu va funcționa în fiecare aplicație și va reduce sarcina în toate situațiile, dar în unele nișe, ar trebui să deblocheze mai multă performanță și să contribuie la reducerea consumului de energie. În funcție de încărcare, SoC va decide automat cum să proceseze codul, folosind CPU-ul pentru unele sarcini în timp ce le descarcă pe altele pe GPU.

Deoarece avem de-a face cu aplicații paralelizate, abordarea este de așteptat să producă cele mai mari îmbunătățiri în procesarea imaginilor. De exemplu, dacă trebuie să utilizați imagini de super-rezoluție și reeșantionați, procesul ar putea fi împărțit în diferite etape în OpenCL. Dacă procesul implică diferite etape, cum ar fi find_neighbor , col_upsample , row_upsample , sub și blur2 , hardware-ul va distribui sarcina între nucleele CPU și GPU în cel mai eficient mod, în funcție de tipul de nucleu care se va ocupa cel mai bine de sarcina dată. cale. Acest lucru nu numai că va îmbunătăți performanța cu un ordin de mărime, dar va ajuta și la reducerea consumului de energie.

Intel s-a întors din morți și arată bine pentru un cadavru

Intel a ratat barca pe revoluția mobilă și practic a cedat piața lui ARM și partenerilor săi hardware. Cu toate acestea, producătorul de cipuri din SUA are banii și resursele pentru a petrece câțiva ani pe bancă și a reveni.

Anul trecut, Intel a subvenționat vânzările procesoarelor sale Atom pentru tablete, reușind să dubleze de patru ori livrările în mai puțin de un an. Acum își îndreaptă atenția asupra segmentului de smartphone-uri cu noile procesoare SoFIA Atom x3. Sincer, nu sunt pe deplin sigur că aceste cipuri ar trebui să fie numite procesoare Intel, deoarece nu sunt de fapt produse de gigantul cipurilor. Procesoarele SoFIA sunt proiectate cu un buget restrâns, în cooperare cu producătorii chinezi de cipuri. Sunt fabricate pe nodul de 28nm, sunt lente, mici și ieftine.

interl și android

Acest lucru poate fi o surpriză pentru unii observatori ocazionali, dar Intel nu se deranjează cu soluții mobile de ultimă generație; Piesele SoFIA de ultimă generație vor alimenta telefoanele Android de bază, la prețuri cuprinse între 50 și 150 USD. Primele modele ar trebui să înceapă să fie livrate până la sfârșitul celui de-al doilea trimestru al anului 2015, iar cele mai multe dintre ele vor fi concepute pentru piețele asiatice, precum și piețele emergente din alte părți ale lumii. Deși este posibil să vedem unele dintre ele în America de Nord și Europa, Intel pare să se concentreze pe China și India.

Intel își acoperă pariurile cu procesoare Atom x5 și x7, care vor folosi o arhitectură complet nouă plus nodul de producție de 14 nm al companiei. Cu toate acestea, aceste produse sunt destinate mai degrabă tabletelor decât smartphone-urilor, cel puțin deocamdată.

Marea întrebare, la care nu am un răspuns, este câte câștiguri de design poate obține Intel în subordine. Analiștii sunt împărțiți în privința problemei, iar prognozele de expediere arată ca niște estimări în acest moment.

Anul trecut, Intel a dovedit că este dispusă să suporte pierderi și să ardă miliarde de dolari pentru a câștiga un loc pe piața tabletelor. Este încă prea devreme să spunem dacă va folosi aceeași abordare cu noile cipuri Atom, în special cu produsele SoFIA pentru smartphone-uri.

Până acum, am văzut un singur produs real bazat pe un procesor Intel SoFIA – o tabletă chinezească de 69 USD cu conectivitate 3G. Este în esență un telefon supradimensionat, așa că, după cum vă puteți imagina, un telefon SoFIA entry-level ar putea ajunge să coste mult mai puțin. Trebuie să fie o propunere tentantă pentru producătorii de smartphone-uri și tablete cu casete albe, deoarece ar putea proiecta cu ușurință dispozitive de 50-100 USD cu un autocolant „Intel Inside” pe spate, ceea ce, din perspectiva marketingului, sună bine.

Din păcate, putem doar ghici câte telefoane și tablete Intel vor fi livrate în următorul an. Avem, evident, de-a face cu milioane de unități, zeci de milioane, dar întrebarea este: câte zeci? Majoritatea analiștilor cred că Intel va livra între 20 și 50 de milioane de procesoare Atom x3 în acest an, ceea ce reprezintă o scădere, având în vedere că se estimează că livrările totale de smartphone-uri vor atinge 1,2 miliarde de dispozitive în acest an. Cu toate acestea, Intel este nemilos, are bani de ars și nu trebuie să facă profit pe niciunul dintre aceste cipuri. Ar putea capta 3 până la 4% din piață până la sfârșitul anului 2015, dar cota de piață ar trebui să continue să crească în 2016 și mai departe.

Ce înseamnă acest lucru pentru dezvoltatorii Android?

Intel a obținut o reputație proastă în rândul unor dezvoltatori Android din cauza anumitor probleme de compatibilitate. Aceasta a fost o problemă reală în urmă cu câțiva ani, deoarece hardware-ul era mult diferit de nucleele ARM standard utilizate în majoritatea dispozitivelor.

Din fericire, compania a făcut multe progrese în cei doi ani; oferă programe extinse de instruire, documentație cuprinzătoare și multe altele. De fapt, o privire rapidă asupra listelor de locuri de muncă LinkedIn dezvăluie că Intel angajează zeci de dezvoltatori Android, cu câteva noi posturi vacante deschizându-se în fiecare lună.

Deci totul merge bine, nu? Pai depinde…

Săptămâna trecută am avut ocazia să testez un nou telefon Asus bazat pe Intel Atom Z3560 și trebuie să spun că am fost mulțumit de rezultate; este o platformă hardware bună, capabilă să abordeze 4 GB de RAM pe un dispozitiv cu buget redus. Asus crede că poate vinde 30 de milioane de unități în acest an, ceea ce este cu adevărat impresionant având în vedere cota de piață a smartphone-urilor Intel.

Singura problemă este că unele aplicații Android încă se comportă prost pe hardware Intel . De obicei, nu este nimic prea mare, dar primești niște blocări ciudate, scoruri de referință nerealiste și alte ciudații de compatibilitate. Vestea proastă este că dezvoltatorii nu pot face mare lucru pentru a rezolva problemele legate de hardware, deși obținerea unor dispozitive bazate pe Intel pentru testare ar fi un început bun. Vestea bună: Intel face tot posibilul să rezolve totul la capăt, așa că nu trebuie să o faci.

În ceea ce privește hardware-ul ARM, vom vedea mai multe nuclee CPU în și mai multe clustere. Performanța unui singur fir va rămâne limitată pe multe dispozitive mainstream, și anume telefoanele ieftine bazate pe SoC-uri Cortex-A53 cu patru și octa-core. Este prea devreme să spunem dacă noile compilatoare Google/ARM vor putea sau nu spori performanța pe astfel de dispozitive. Probabil o vor face, dar cu cât? Calculul eterogen este o altă tendință de urmărit pentru anul viitor.

În concluzie, iată la ce ar trebui să se aștepte dezvoltatorii Android în ceea ce privește software-ul și hardware-ul la sfârșitul anului 2015 și 2016:

  • Mai multe procesoare Intel x86 în segmentele de piață entry-level și mainstream.
  • Cota de piață a Intel va fi neglijabilă în 2015, dar poate crește în 2016 și ulterior.
  • Mai multe modele ARMv8 multicore care vin online.
  • Noul compilator ART „Optimizat”.
  • Urmează calcularea eterogenă, dar va dura ceva timp.
  • Tranziția la nodurile de producție FinFET și Cortex-A72 va debloca mai multe performanțe și funcții.