Przygotujcie się na programistów Androida, nadchodzi nowy kompilator Androida

Opublikowany: 2022-03-11

Fragmentacja od lat jest źródłem frustracji programistów i konsumentów Androida; teraz wydaje się, że sprawy się pogorszą, zanim się poprawią. Znowu nadchodzi nowy kompilator Androida, a na froncie sprzętu pojawiły się godne uwagi zmiany, które mogą mieć wpływ na programistów.

Gdy Dalvik zniknie z pola widzenia, wiele osób spodziewało się, że nowe środowisko wykonawcze ART obsługujące 64-bity Google będzie działać przez lata, co prawdopodobnie będzie, ale w najbliższej przyszłości zostanie poddane gruntownej modernizacji. Oprócz oferowania obsługi sprzętu 64-bitowego, ART wprowadził również kompilację z wyprzedzeniem (AOT), podczas gdy Dalvik był kompilatorem just-in-time (JIT). Nowy kompilator zoptymalizowany odblokuje jeszcze więcej możliwości.

Ilustracja kompilatora Androida

Jeśli chodzi o rozwój sprzętu, pojawiły się nowe trendy oraz kilku nowych i starych graczy w branży System-on-Chip dla smartfonów, ale o tym zajmę się później.

Najpierw przyjrzyjmy się planom wykonawczym Google.

Dalvik, ART, ART z nowym kompilatorem Android

ART został wprowadzony w zeszłym roku wraz z Androidem 5.0, uruchamianym na Nexusie 9 i Nexusie 6, chociaż ten ostatni używał 32-bitowego procesora ARMv7-A. Jednak zamiast być projektowanym od zera, ART był w rzeczywistości ewolucją Dalvik, który odszedł od JIT.

Dalvik kompiluje aplikacje na bieżąco, jeśli to konieczne. To oczywiście zwiększa obciążenie procesora, wydłuża czas potrzebny do uruchomienia aplikacji i wpływa na żywotność baterii. Ponieważ ART kompiluje wszystko z wyprzedzeniem, podczas instalacji, nie musi tracić cykli zegara na kompilację za każdym razem, gdy urządzenie uruchamia aplikację. Skutkuje to bardziej płynną obsługą, jednocześnie zmniejszając zużycie energii i wydłużając żywotność baterii.

Co więc zrobi teraz Google?

Ponieważ ART został opracowany w celu wykorzystania nowych, 64-bitowych rdzeni procesorów ARMv8, które zaczęły pojawiać się w sieci pod koniec ubiegłego roku, oryginalny kompilator wydaje się być tymczasowym środkiem zaradczym. Oznaczało to, że priorytetem był czas wprowadzenia produktu na rynek, a nie wydajność i optymalizacja. Nie oznacza to, że ART była tylko spartaczoną pracą w pośpiechu, ponieważ tak nie było; środowisko uruchomieniowe działa dobrze i zostało pochwalone przez programistów i użytkowników.

Istnieje jednak pole do ulepszeń i teraz wydaje się, że Google od jakiegoś czasu pracuje nad znacznie ulepszonym kompilatorem, a wysiłki prawdopodobnie poprzedzają oficjalną premierę ART. Brytyjski projektant układów scalonych, ARM, ujawnił niedawno kilka interesujących faktów na temat planów wykonawczych Google, wskazując na nowy kompilator „optymalizacji” dla ART. Nowy kompilator oferuje pośrednie reprezentacje (IR), które umożliwiają manipulowanie strukturą programu przed wygenerowaniem kodu. Wykorzystuje pojedynczy poziom reprezentacji pośredniej, zorganizowanej jako wykres bogaty w informacje, który dostarcza lepsze informacje częściom kompilatora, które są świadome architektury.

Nowy kompilator Androida dla programistów Androida

Kompilator „Szybki” wykorzystuje dwa poziomy reprezentacji pośredniej, z prostymi połączonymi listami instrukcji i zmiennych, ale traci ważne informacje podczas tworzenia IR.

ARM twierdzi, że nowy kompilator „optymalizujący” przyniesie wiele znaczących korzyści, opisując go jako „wielki krok naprzód” w zakresie technologii kompilatorów. Kompilator zapewni lepszą infrastrukturę do przyszłych optymalizacji i pomoże poprawić jakość kodu.

Kluczowe funkcje optymalizacji i szybkiego kompilatora

ARM przedstawił różnicę między tymi dwoma kompilatorami na jednym slajdzie, twierdząc, że kompilator „Optymalizacji” umożliwia bardziej efektywne wykorzystanie rejestrów, mniej rozlewania się na stos i wymaga mniej kodu do wykonania.

Oto jak ARM to określa:

Quick ma bardzo prosty algorytm alokacji rejestrów.

  • Brak informacji w IR
  • Szybkość kompilacji nad złożonością – początki jako JIT
  • Słaba wydajność – wiele rejestrów wylało się na stos

Optymalizacja wykorzystuje alokację rejestru skanowania liniowego.

  • Doskonały kompromis między wydajnością a czasem
  • Wykorzystywana jest analiza żywotności
  • Minimalizowanie przelewania się rejestru na stos”

Chociaż nowy kompilator jest wciąż w fazie rozwoju, ARM podzielił się kilkoma danymi dotyczącymi wydajności; w syntetycznych testach procesora kompilator zapewnia wzrost wydajności w zakresie od 15 do 40 procent. Szybkość kompilacji wzrasta o około 8 procent. Firma ostrzega jednak, że liczby „zmieniają się codziennie” wraz z dojrzewaniem nowego kompilatora.

Nacisk kładziony jest na osiągnięcie prawie parzystości z kompilatorem „Szybkim”, który obecnie ma wyraźną przewagę pod względem szybkości kompilacji i rozmiaru pliku.

W tej chwili wygląda to na kompromis; nowy „zoptymalizowany” kompilator zapewnia imponującą poprawę wydajności w aplikacjach związanych z procesorem i syntetycznych testach porównawczych, ale daje 10 procent większe pliki, które kompilują się ~8 procent wolniej. Chociaż wydaje się, że wzrost wydajności procesora przeważa nad dwoma ostatnimi wartościami, należy pamiętać, że będą one dotyczyć każdej aplikacji, niezależnie od obciążenia procesora, zużywając jeszcze bardziej ograniczone zasoby, takie jak pamięć RAM i pamięć masowa. Pamiętaj, że kompilacja w 64 bitach zajmuje już więcej pamięci RAM niż kompilacja w 32 bitach.

Każde skrócenie szybkości kompilacji i czasu uruchamiania jest również źródłem niepokoju, ze względu na jego wpływ na szybkość reakcji urządzenia i wrażenia użytkownika.

Wyścig wielordzeniowych ARM

Innym powodem do niepokoju, niezależnie od środowiska wykonawczego i kompilatora, jest popularność procesorów wielordzeniowych opartych na architekturach ARMv7-A i ARMv8. Szał na ośmiordzeniowe procesory rozpoczął się w 2013 roku i szybko został odrzucony jako tani chwyt marketingowy. Pewien dyrektor Qualcomm posunął się tak daleko, że nazwał ośmiordzeniowe procesory „głupimi” i „głupimi”, mówiąc, że firma ich nie wyprodukuje, ponieważ jej inżynierowie „nie są głupi”. Ten sam dyrektor również opisał obsługę 64-bitów w Apple A7 jako „sztuczkę”.

Przewińmy dwa lata do przodu i mam na biurku 64-bitowy, ośmiordzeniowy smartfon Qualcomm Cortex-A53, podczas gdy wspomniany dyrektor ma na swojej tabliczce z nazwiskiem inny tytuł.

ramię wielordzeniowe

Jakby 8-rdzeniowe układy nie wystarczyły, w przyszłym roku zobaczymy pierwsze urządzenia oparte na 10-rdzeniowych procesorach aplikacyjnych. Pierwszy 10-rdzeniowy chip smartfona pochodzi od MediaTek w postaci Helio X20 i będzie zawierał trzy klastry rdzeni procesora, nazwane ogromnymi.Średnimi.MAŁYMI. Brzmi fajnie i jest coraz lepiej; wkrótce zaczniemy widzieć pierwsze przystępne cenowo urządzenia z Androidem oparte na nowej generacji procesorów Intela.

Przyjrzyjmy się głównym warunkom ARM i ich znaczeniu dla programistów i konsumentów. Istnieją dwie różne wersje ośmiordzeniowych konstrukcji ARM SoC. Rozwiązania high-end zwykle wykorzystują układ big.LITTLE firmy ARM, wykorzystując cztery rdzenie o niskim poborze mocy i cztery duże rdzenie do dużego obciążenia. Drugim sposobem umieszczenia ośmiu rdzeni procesorów ARM w chipie jest użycie identycznych rdzeni lub identycznych rdzeni w dwóch klastrach o różnych częstotliwościach zegara.

Wiodący producenci chipów mobilnych zwykle stosują oba podejścia, chipy big.LITTLE w urządzeniach z najwyższej półki, a także zwykłe ośmiordzeniowe rdzenie w produktach głównego nurtu. Oba podejścia mają swoje plusy i minusy, więc przyjrzyjmy się bliżej.

ARM big.LITTLE kontra zwykły ośmiordzeniowy:

Korzystanie z dwóch klastrów różnych rdzeni procesora pozwala na uzyskanie dobrej jednowątkowej wydajności i wydajności w projektach big.LITTLE. Kompromis polega na tym, że pojedynczy rdzeń Cortex-A57 ma mniej więcej rozmiar czterech małych rdzeni Cortex-A53 i jest mniej wydajny.

Korzystanie z ośmiu identycznych rdzeni lub ośmiu identycznych rdzeni w dwóch klastrach z różnymi zegarami jest opłacalne i energooszczędne. Jednak wydajność pojedynczego wątku jest niska.

Obecna generacja projektów big.LITTLE opartych na rdzeniach ARMv8 nie może korzystać z najtańszego węzła produkcyjnego 28 nm. Nawet przy 20 nm niektóre projekty wykazują duże dławienie, co ogranicza ich stałą wydajność. Standardowe ośmiordzeniowe rdzenie oparte na rdzeniach procesora Cortex-A53 mogą być skutecznie zaimplementowane w 28 nm, więc producenci chipów nie muszą używać najnowocześniejszych węzłów produkcyjnych, takich jak 20 nm lub 16/14 nm FinFET, co obniża koszty.

ARM big.LITTLE kontra zwykły ośmiordzeniowy

Nie chcę cię zanudzać na śmierć trendami w projektowaniu chipów, ale w przypadku procesorów mobilnych z 2015 i 2016 r. należy pamiętać o kilku podstawach:

  • Większość chipów będzie wykorzystywać węzły produkcyjne 28 nm i rdzenie Cortex-A53, ograniczając wydajność pojedynczego wątku.
  • Duży rdzeń Cortex-A57 jest zaimplementowany w dwóch głównych projektach Samsunga i Qualcomma, ale inni producenci chipów wydają się go pomijać i czekają na rdzeń Cortex-A72.
  • Wydajność wielowątkowa stanie się coraz bardziej istotna w ciągu najbliższych 18 miesięcy.
  • Nie można oczekiwać dużych wzrostów wydajności, dopóki węzły 20 nm, a węzły FinFET nie staną się znacznie tańsze (2016 i później).
  • Nadchodzą również projekty 10-rdzeniowe.

Wszystkie te punkty mają pewne konsekwencje dla programistów Androida. Dopóki producenci chipów utkną w procesach 28 nm w przypadku większości chipów smartfonów i tabletów, programiści będą musieli zrobić wszystko, aby wykorzystać wielowątkową wydajność i skupić się na wydajności.

ART i nowe kompilatory powinny przejść długą drogę w kierunku poprawy wydajności i wydajności, ale nie będą w stanie łamać praw fizyki. Stare, 32-bitowe konstrukcje nie będą używane w wielu urządzeniach, które posuwają się naprzód, a nawet najtańsze urządzenia zaczynają być dostarczane z 64-bitowym układem krzemowym i systemem Android 5.0.

Chociaż Android 5.x wciąż ma stosunkowo niewielką bazę użytkowników, szybko rośnie i będzie się rozwijał jeszcze szybciej, teraz, gdy pojawiają się telefony o wartości 100 do 150 USD z 64-bitowymi chipami i Androidem 5.0. Przejście na 64-bitowego Androida przebiega pomyślnie.

Najważniejsze pytanie brzmi, kiedy Dalvik otrzyma nowy kompilator zoptymalizowany. Może wystartować jeszcze w tym roku lub w przyszłym roku z Androidem 6.0; jest jeszcze za wcześnie, aby powiedzieć na pewno.

Heterogeniczne przetwarzanie w telefonach komórkowych

Jest jeszcze jedna rzecz, o której należy pamiętać; mobilna grafika staje się coraz wydajniejsza, zwłaszcza na procesorach z wyższej półki, więc producenci chipów wykonują za kulisami dużo pracy, aby wykorzystać je do zastosowań innych niż gry i dekodowanie wideo. Obliczenia heterogeniczne istnieją już od kilku lat, dzięki czemu komputery PC mogą przenosić wysoce zrównoleglone zadania na GPU.

Ta sama technologia jest teraz dostępna w procesorach mobilnych, skutecznie łącząc rdzenie CPU i GPU. Podejście to pozwoli programistom odblokować większą wydajność poprzez wykonywanie na GPU określonych typów programów, a mianowicie obciążeń OpenCL. Deweloperzy będą mogli skupić się na przepustowości, podczas gdy procesory automatycznie zajmą się wykonywaniem równoległym na CPU i GPU.

Obliczenia heterogeniczne

Oczywiście to nie zadziała w każdej aplikacji i zmniejszy obciążenie we wszystkich sytuacjach, ale w niektórych niszach powinno odblokować większą wydajność i pomóc zmniejszyć zużycie energii. W zależności od obciążenia, SoC automatycznie zdecyduje, jak przetwarzać kod, używając procesora do niektórych zadań, podczas gdy inne odciąża GPU.

Ponieważ mamy do czynienia z aplikacjami równoległymi, oczekuje się, że podejście to przyniesie największe ulepszenia w przetwarzaniu obrazu. Na przykład, jeśli potrzebujesz użyć obrazów w super rozdzielczości i resamplingu, proces można podzielić na różne etapy w OpenCL. Jeśli proces obejmuje różne etapy, takie jak find_neighbor , col_upsample , row_upsample , sub i blur2 , sprzęt rozłoży obciążenie na rdzenie CPU i GPU w najbardziej efektywny sposób, w zależności od tego, jaki rdzeń najlepiej poradzi sobie z danym zadaniem sposób. To nie tylko poprawi wydajność o rząd wielkości, ale także pomoże zmniejszyć zużycie energii.

Intel powraca z martwych i dobrze wygląda na trupa

Intel przegapił łódź na rewolucję mobilną i praktycznie scedował rynek na ARM i jego partnerów sprzętowych. Jednak amerykański producent chipów ma pieniądze i środki, aby spędzić kilka lat na ławce i wrócić.

W zeszłym roku Intel dotował sprzedaż swoich procesorów Atom do tabletów, co pozwoliło na czterokrotne zwiększenie dostaw w niecały rok. Teraz zwraca uwagę na segment smartfonów z nowymi procesorami SoFIA Atom x3. Szczerze mówiąc, nie jestem do końca pewien, czy te chipy powinny być nawet określane jako procesory Intela, ponieważ tak naprawdę nie są one produkowane przez giganta chipów. Procesory SoFIA są projektowane przy ograniczonym budżecie, we współpracy z chińskimi producentami chipów. Są produkowane na węźle 28 nm, są powolne, malutkie i tanie.

Interl i Android

Może to zaskoczyć niektórych przypadkowych obserwatorów, ale Intel nie przejmuje się zaawansowanymi rozwiązaniami mobilnymi; tanie części SoFIA będą zasilać utowarowione telefony z Androidem w cenie od 50 do 150 USD. Pierwsze projekty powinny trafić do sprzedaży pod koniec drugiego kwartału 2015 roku, a większość z nich będzie przeznaczona na rynki azjatyckie, a także rynki wschodzące w innych częściach świata. Chociaż możliwe, że zobaczymy niektóre z nich w Ameryce Północnej i Europie, wydaje się, że Intel koncentruje się na Chinach i Indiach.

Intel stawia na procesory Atom x5 i x7, które będą wykorzystywać zupełnie nową architekturę oraz najnowocześniejszy 14 nm węzeł produkcyjny firmy. Produkty te są jednak przeznaczone raczej na tablety niż smartfony, przynajmniej na razie.

Wielkie pytanie, na które nie mam odpowiedzi, brzmi: ile wygranych projektów Intel może mieć na swoim koncie. Analitycy są podzieleni w tej kwestii, a prognozy wysyłek wydają się w tym momencie szacunkowe.

W zeszłym roku Intel udowodnił, że jest gotów ponieść straty i spalić miliardy dolarów, aby zdobyć przyczółek na rynku tabletów. Jest jeszcze za wcześnie, aby powiedzieć, czy zastosuje to samo podejście do nowych chipów Atom, zwłaszcza smartfonowych produktów SoFIA.

Do tej pory widziałem tylko jeden rzeczywisty produkt oparty na procesorze Intel SoFIA – chiński tablet za 69 USD z łącznością 3G. Jest to w zasadzie telefon o dużym rozmiarze, więc możesz sobie wyobrazić, że podstawowy telefon SoFIA może kosztować znacznie mniej. To musi być kusząca propozycja dla producentów smartfonów i tabletów z białym pudełkiem, skoro bez problemu mogliby zaprojektować urządzenia za 50-100 dolarów z naklejką „Intel Inside” na odwrocie, co z marketingowego punktu widzenia brzmi nieźle.

Niestety, możemy tylko zgadywać, ile telefonów i tabletów Intela zostanie dostarczonych w ciągu najbliższego roku. Mamy oczywiście do czynienia z milionami jednostek, dziesiątkami milionów, ale pytanie brzmi: ile dziesiątek? Większość analityków uważa, że ​​Intel dostarczy w tym roku od 20 do 50 milionów procesorów Atom x3, co jest spadkiem, biorąc pod uwagę prognozy, że łączna sprzedaż smartfonów osiągnie w tym roku 1,2 miliarda urządzeń. Jednak Intel jest bezwzględny, ma pieniądze do spalenia i nie musi zarabiać na żadnym z tych chipów. Do końca 2015 roku może przejąć od 3 do 4 procent rynku, ale udział w rynku powinien nadal rosnąć w 2016 roku i później.

Co to oznacza dla programistów Androida?

Intel zyskał złą reputację wśród niektórych programistów Androida ze względu na pewne problemy ze zgodnością. To był prawdziwy problem kilka lat temu, ponieważ sprzęt znacznie różnił się od standardowych rdzeni ARM używanych w większości urządzeń.

Na szczęście firma poczyniła duże postępy w ciągu tych dwóch lat; oferuje rozbudowane programy szkoleniowe, obszerną dokumentację i nie tylko. W rzeczywistości szybkie spojrzenie na oferty pracy na LinkedIn pokazuje, że Intel zatrudnia dziesiątki programistów Androida, a co miesiąc otwieranych jest kilka nowych wakatów.

Więc wszystko idzie dobrze, prawda? Cóż, to zależy…

W zeszłym tygodniu miałem okazję przetestować nowy telefon Asusa oparty na Atom Z3560 Intela i muszę przyznać, że byłem zadowolony z wyników; to dobra platforma sprzętowa zdolna do adresowania 4 GB pamięci RAM na urządzeniu budżetowym. Asus uważa, że ​​w tym roku może sprzedać 30 milionów sztuk, co jest naprawdę imponujące, biorąc pod uwagę udział Intela w rynku smartfonów.

Jedynym problemem jest to, że niektóre aplikacje na Androida nadal źle działają na sprzęcie Intela . Zwykle nie jest to nic wielkiego, ale zdarzają się dziwne awarie, nierealistyczne wyniki testów porównawczych i inne dziwactwa związane z kompatybilnością. Zła wiadomość jest taka, że ​​programiści nie mogą wiele zrobić, aby rozwiązać problemy związane ze sprzętem, chociaż zdobycie niektórych urządzeń opartych na procesorach Intela do testów byłoby dobrym początkiem. Dobra wiadomość: Intel dokłada wszelkich starań, aby wszystko uporządkować na swoim końcu, więc nie musisz.

Jeśli chodzi o sprzęt ARM, zobaczymy więcej rdzeni procesora w jeszcze większej liczbie klastrów. Wydajność pojedynczego wątku pozostanie ograniczona w przypadku wielu popularnych urządzeń, a mianowicie niedrogich telefonów opartych na cztero- i ośmiordzeniowych układach SoC Cortex-A53. Jest za wcześnie, aby stwierdzić, czy nowe kompilatory Google/ARM będą w stanie zwiększyć wydajność na takich urządzeniach. Pewnie tak, ale o ile? Komputery heterogeniczne to kolejny trend, na który należy zwrócić uwagę w przyszłym roku.

Podsumowując, oto czego deweloperzy Androida powinni oczekiwać pod względem oprogramowania i sprzętu na przełomie 2015 i 2016 roku:

  • Więcej procesorów Intel x86 w segmentach rynku podstawowego i głównego.
  • Udział Intela w rynku będzie znikomy w 2015 r., ale może wzrosnąć w 2016 r. i później.
  • Więcej wielordzeniowych projektów ARMv8 będzie dostępnych online.
  • Nowy „zoptymalizowany” kompilator ART.
  • Nadchodzi przetwarzanie heterogeniczne, ale zajmie to trochę czasu.
  • Przejście na węzły produkcyjne FinFET i Cortex-A72 odblokuje większą wydajność i funkcje.