Preparem-se Desenvolvedores Android, um novo compilador Android está chegando
Publicados: 2022-03-11A fragmentação tem sido uma fonte de frustração para desenvolvedores e consumidores do Android há anos; agora parece que as coisas vão piorar antes de melhorar. Um novo compilador Android está chegando, novamente, e há alguns desenvolvimentos notáveis na frente de hardware, que podem afetar os desenvolvedores.
Com Dalvik fora de cena, muitas pessoas esperavam que o novo tempo de execução ART de 64 bits do Google durasse anos, o que provavelmente acontecerá, mas terá uma grande reformulação em um futuro próximo. Além de oferecer suporte para hardware de 64 bits, o ART também introduziu a compilação antecipada (AOT), enquanto o Dalvik era um compilador just-in-time (JIT). O novo compilador otimizado desbloqueará ainda mais possibilidades.
Quanto aos desenvolvimentos de hardware, existem algumas novas tendências e alguns novos e antigos players na indústria de smartphones System-on-Chip, mas falarei sobre isso mais tarde.
Primeiro, vamos dar uma olhada nos planos de tempo de execução do Google.
Dalvik, ART, ART com novo compilador Android
O ART foi introduzido com o Android 5.0 no ano passado, lançado no Nexus 9 e Nexus 6, embora o último tenha usado uma CPU ARMv7-A de 32 bits. No entanto, em vez de ser projetado do zero, o ART foi na verdade uma evolução da Dalvik, que se afastou do JIT.
A Dalvik compila aplicativos em tempo real, conforme necessário. Isso, obviamente, adiciona mais carga de CPU, aumenta o tempo necessário para iniciar aplicativos e afeta a vida útil da bateria. Como o ART compila tudo com antecedência, na instalação, ele não precisa perder ciclos de clock na compilação toda vez que o dispositivo inicia um aplicativo. Isso resulta em uma experiência de usuário mais suave, ao mesmo tempo em que reduz o consumo de energia e aumenta a vida útil da bateria.
Então, o que o Google vai fazer a seguir?
Como o ART foi desenvolvido para aproveitar os novos núcleos de CPU ARMv8 de 64 bits, que começaram a ficar online no final do ano passado, o compilador original parece ter sido uma medida provisória. Isso significava que o time-to-market era a prioridade, não a eficiência e a otimização. Isso não significa que o ART foi apenas um trabalho apressado e malfeito, porque não era; o tempo de execução funciona bem e foi elogiado por desenvolvedores e usuários.
No entanto, há espaço para melhorias e, agora, parece que o Google está trabalhando em um compilador amplamente aprimorado há algum tempo, e o esforço provavelmente antecede o lançamento oficial do ART. O designer de chips britânico, ARM, revelou recentemente alguns fatos interessantes sobre os planos de tempo de execução do Google, apontando para um novo compilador “Otimizando” para ART. O novo compilador oferece representações intermediárias (IR) que permitem a manipulação da estrutura do programa antes da geração do código. Ele usa um único nível de representação intermediária, estruturado como um gráfico rico em informações, que fornece melhores informações para as partes do compilador que reconhecem a arquitetura.
O compilador “Quick” usa dois níveis de representação intermediária, com simples listas vinculadas de instruções e variáveis, mas perde informações importantes durante a criação do IR.
A ARM afirma que o novo compilador “Otimizando” oferecerá vários benefícios significativos, descrevendo-o como um “grande salto à frente” em termos de tecnologia de compilador. O compilador oferecerá uma infraestrutura melhor para futuras otimizações e ajudará a melhorar a qualidade do código.
Otimização e recursos-chave do compilador rápido
A ARM delineou a diferença entre os dois compiladores em um único slide, alegando que o compilador “Otimizando” permite um uso de registro mais eficiente, menos derramamento na pilha e precisa de menos código para ser executado.
Aqui está como o ARM coloca:
Quick tem um algoritmo de alocação de registradores muito simples.
- Falta de informação no RI
- Velocidade de compilação sobre complexidade – origens como JIT
- Desempenho ruim - muitos registros derramados na pilha
A otimização usa a alocação de registro de varredura de linha.
- Excelente compromisso entre desempenho e tempo
- A análise de vivacidade é usada
- Minimizando o derramamento de registros na pilha”
Embora o novo compilador ainda esteja em desenvolvimento, a ARM compartilhou alguns números de desempenho; em testes sintéticos de CPU, o compilador produz um aumento de desempenho na faixa de 15 a 40 por cento. A velocidade de compilação é aumentada em cerca de 8%. No entanto, a empresa alerta que os números “mudam diariamente” à medida que o novo compilador amadurece.
O foco está em alcançar uma paridade próxima com o compilador “Quick”, que atualmente tem uma clara vantagem na velocidade de compilação e no tamanho do arquivo.
No momento, parece uma troca; o novo compilador “Otimizado” oferece melhorias de desempenho impressionantes em aplicativos vinculados à CPU e benchmarks sintéticos, mas resulta em arquivos 10% maiores que compilam ~8% mais devagar. Embora os dois últimos números pareçam ser superados pelos ganhos de desempenho da CPU, lembre-se de que eles se aplicarão a todos os aplicativos, independentemente da carga da CPU, usando recursos ainda mais limitados, como RAM e armazenamento. Lembre-se que compilar em 64 bits já ocupa mais memória RAM do que compilar em 32 bits.
Qualquer redução na velocidade de compilação e nos tempos de inicialização também é uma fonte de preocupação, devido ao seu efeito na capacidade de resposta do dispositivo e na experiência do usuário.
A Corrida ARM Multicore
Outra fonte de preocupação, independentemente do tempo de execução e do compilador, é a popularidade dos processadores multicore baseados nas arquiteturas ARMv7-A e ARMv8. A mania do octa-core começou em 2013 e foi rapidamente descartada como um golpe de marketing barato. Um executivo da Qualcomm chegou a chamar os processadores octa-core de “bobos” e “burros”, dizendo que a empresa não faria nenhum porque seus engenheiros “não são burros”. O mesmo executivo também descreveu o suporte de 64 bits no Apple A7 como um “truque”.
Avanço rápido de dois anos e tenho um smartphone Qualcomm octa-core Cortex-A53 de 64 bits na minha mesa, enquanto o executivo em questão tem um cargo diferente em sua placa de nome.
Como se chips de 8 núcleos não fossem suficientes, no próximo ano veremos os primeiros dispositivos baseados em processadores de aplicativos de 10 núcleos. O primeiro chip de smartphone de 10 núcleos vem da MediaTek na forma do Helio X20, e contará com três clusters de núcleos de CPU, apelidados de enorme.Medium.TINY. Parece divertido e fica melhor; em breve começaremos a ver os primeiros dispositivos Android acessíveis baseados em uma nova geração de processadores Intel.
Vejamos as principais guerras do ARM e o que elas significam para desenvolvedores e consumidores. Existem duas versões distintas de designs octa-core ARM SoC. As soluções de ponta tendem a usar o layout big.LITTLE da ARM, usando quatro núcleos de baixa potência e quatro núcleos grandes para alta carga. A segunda maneira de colocar oito núcleos de CPU ARM em um chip é usar núcleos idênticos ou núcleos idênticos em dois clusters com velocidades de clock diferentes.
Os principais fabricantes de chips móveis tendem a usar ambas as abordagens, chips big.LITTLE em dispositivos de última geração, juntamente com octa-cores regulares em produtos convencionais. Ambas as abordagens têm seus prós e contras, então vamos dar uma olhada mais de perto.
ARM big.LITTLE vs. Regular Octa-Core:
O uso de dois clusters de diferentes núcleos de CPU permite um bom desempenho e eficiência de thread único em projetos big.LITTLE. A desvantagem é que um único núcleo Cortex-A57 tem aproximadamente o tamanho de quatro pequenos núcleos Cortex-A53 e é menos eficiente.
O uso de oito núcleos idênticos ou oito núcleos idênticos em dois clusters com clocks diferentes é econômico e eficiente em termos de energia. No entanto, o desempenho de thread único é baixo.
A geração atual de projetos big.LITTLE baseados em núcleos ARMv8 não pode usar o nó de fabricação de 28nm mais barato. Mesmo em 20 nm, alguns designs exibem muita limitação, o que limita seu desempenho sustentado. Os octa-cores padrão baseados em núcleos de CPU Cortex-A53 podem ser implementados efetivamente em 28nm, para que os fabricantes de chips não precisem usar nós de fabricação de ponta como FinFET de 20nm ou 16/14nm, o que mantém os custos baixos.
Não quero aborrecê-lo até a morte com as tendências de design de chips, mas é importante ter em mente alguns conceitos básicos para os processadores móveis de 2015 e 2016:
- A maioria dos chips usará nós de fabricação de 28nm e núcleos Cortex-A53, limitando o desempenho de thread único.
- O grande núcleo Cortex-A57 é implementado em dois designs principais da Samsung e da Qualcomm, mas outros fabricantes de chips parecem estar pulando e esperando pelo núcleo Cortex-A72.
- O desempenho multithread se tornará cada vez mais relevante nos próximos 18 meses.
- Grandes ganhos de desempenho não podem ser esperados até 20 nm e os nós FinFET se tornarem significativamente mais baratos (2016 e além).
- Os designs de 10 núcleos também estão chegando.
Todos esses pontos têm certas implicações para os desenvolvedores do Android. Enquanto os fabricantes de chips estiverem presos a processos de 28nm para a maioria dos chips de smartphones e tablets, os desenvolvedores terão que fazer o possível para aproveitar o desempenho multithread e se concentrar na eficiência.

O ART e os novos compiladores devem percorrer um longo caminho para melhorar o desempenho e a eficiência, mas não serão capazes de quebrar as leis da física. Os designs antigos de 32 bits não serão usados em muitos dispositivos daqui para frente, e até os dispositivos mais baratos estão começando a ser fornecidos com silício de 64 bits e Android 5.0.
Embora o Android 5.x ainda tenha uma base de usuários relativamente pequena, ele está crescendo rapidamente e se expandirá ainda mais rápido agora que os telefones de US$ 100 a US$ 150 estão chegando com chips de 64 bits e Android 5.0. A transição para o Android de 64 bits está indo bem.
A grande questão é quando a Dalvik receberá o novo compilador otimizado. Ele pode ser lançado ainda este ano ou no próximo ano com o Android 6.0; ainda é cedo para dizer com certeza.
Computação heterogênea chegando aos celulares
Há outra coisa a ter em mente; gráficos móveis estão ficando mais poderosos, especialmente em processadores de ponta, então os fabricantes de chips estão fazendo muito trabalho nos bastidores para aproveitá-los para outros usos além de jogos e decodificação de vídeo. A computação heterogênea existe há alguns anos, permitindo que os PCs descarreguem tarefas altamente paralelizadas para a GPU.
A mesma tecnologia está chegando aos processadores móveis, fundindo efetivamente núcleos de CPU e GPU. A abordagem permitirá que os desenvolvedores obtenham mais desempenho executando certos tipos de programas, ou seja, cargas OpenCL, na GPU. Os desenvolvedores poderão se concentrar na taxa de transferência, enquanto os processadores lidarão automaticamente com a execução paralela em CPUs e GPUs.
Claro, isso não funcionará em todos os aplicativos e reduzirá a carga em todas as situações, mas em alguns nichos, deve desbloquear mais desempenho e ajudar a reduzir o consumo de energia. Dependendo da carga, o SoC decidirá automaticamente como processar o código, usando a CPU para algumas tarefas enquanto descarrega outras para a GPU.
Como estamos lidando com aplicativos paralelizados, espera-se que a abordagem produza as maiores melhorias no processamento de imagens. Por exemplo, se você precisar usar imagens de super-resolução e reamostragem, o processo pode ser dividido em diferentes estágios no OpenCL. Se o processo envolver diferentes estágios, como find_neighbor
, col_upsample
, row_upsample
, sub
e blur2
, o hardware distribuirá a carga entre os núcleos de CPU e GPU da maneira mais eficiente, dependendo de qual tipo de núcleo lidará com a tarefa da melhor maneira caminho. Isso não apenas melhorará o desempenho em uma ordem de magnitude, mas também ajudará a reduzir o consumo de energia.
Intel está de volta dos mortos e parece bom para um cadáver
A Intel perdeu o barco na revolução móvel e praticamente cedeu o mercado para a ARM e seus parceiros de hardware. No entanto, a fabricante de chips dos EUA tem dinheiro e recursos para passar alguns anos no banco e fazer um retorno.
No ano passado, a Intel subsidiou as vendas de seus processadores Atom para tablets, conseguindo quadruplicar os embarques em menos de um ano. Agora está voltando sua atenção para o segmento de smartphones com os novos processadores SoFIA Atom x3. Francamente, não tenho certeza absoluta de que esses chips devam ser chamados de processadores Intel porque na verdade não são produzidos pela gigante dos chips. Os processadores SoFIA são projetados com um orçamento apertado, em cooperação com fabricantes de chips chineses. Eles são fabricados no nó de 28nm, são lentos, minúsculos e baratos.
Isso pode ser uma surpresa para alguns observadores casuais, mas a Intel não está se preocupando com soluções móveis de ponta; peças SoFIA de baixo custo alimentarão telefones Android comoditizados com preços entre US$ 50 e US$ 150. Os primeiros projetos devem começar a ser enviados até o final do segundo trimestre de 2015, e a maioria deles será projetada para mercados asiáticos, bem como mercados emergentes em outras partes do mundo. Embora seja possível ver alguns deles na América do Norte e na Europa, o foco da Intel parece estar na China e na Índia.
A Intel está protegendo suas apostas com os processadores Atom x5 e x7, que usarão uma arquitetura completamente nova, além do nó de fabricação de 14nm de ponta da empresa. No entanto, esses produtos são destinados a tablets em vez de smartphones, pelo menos por enquanto.
A grande questão, para a qual não tenho resposta, é quantas vitórias de design a Intel pode obter. Os analistas estão divididos sobre o assunto e as previsões de embarque parecem estimativas neste momento.
No ano passado, a Intel provou que está disposta a suportar perdas e queimar bilhões de dólares para se firmar no mercado de tablets. Ainda é muito cedo para dizer se usará a mesma abordagem com os novos chips Atom, especialmente os produtos SoFIA para smartphones.
Eu só vi um produto real baseado em um processador Intel SoFIA até agora – um tablet chinês de US$ 69 com conectividade 3G. É essencialmente um telefone superdimensionado, então, como você pode imaginar, um telefone SoFIA de nível básico pode acabar custando muito menos. Deve ser uma proposta tentadora para fabricantes de smartphones e tablets de caixa branca, já que eles poderiam facilmente projetar dispositivos de US$ 50 a US$ 100 com um adesivo “Intel Inside” na parte de trás, o que, do ponto de vista do marketing, soa bem.
Infelizmente, só podemos adivinhar quantos telefones e tablets Intel serão lançados no próximo ano. Obviamente estamos lidando com milhões de unidades, dezenas de milhões, mas a questão é: quantas dezenas? A maioria dos analistas acredita que a Intel enviará entre 20 e 50 milhões de processadores Atom x3 este ano, o que é uma queda no balde, considerando que as remessas totais de smartphones devem atingir 1,2 bilhão de dispositivos este ano. No entanto, a Intel é implacável, tem dinheiro para queimar e não precisa lucrar com nenhum desses chips. Poderia capturar de 3 a 4 por cento do mercado até o final de 2015, mas a participação de mercado deve continuar crescendo em 2016 e além.
O que isso significa para desenvolvedores Android?
A Intel tem uma má reputação entre alguns desenvolvedores do Android devido a certos problemas de compatibilidade. Isso foi um problema real há alguns anos, porque o hardware era muito diferente dos núcleos ARM padrão usados na maioria dos dispositivos.
Felizmente, a empresa fez muitos progressos ao longo dos dois anos; oferece extensos programas de treinamento, documentação abrangente e muito mais. De fato, uma rápida olhada nas listas de empregos do LinkedIn revela que a Intel está contratando dezenas de desenvolvedores Android, com algumas novas vagas sendo abertas a cada mês.
Então, tudo está indo bem, certo? Bem, isto depende…
Na semana passada tive a oportunidade de testar um novo telefone Asus baseado no Atom Z3560 da Intel, e devo dizer que fiquei satisfeito com os resultados; é uma boa plataforma de hardware capaz de lidar com 4 GB de RAM em um dispositivo econômico. A Asus acha que pode vender 30 milhões de unidades este ano, o que é realmente impressionante, dada a participação de mercado de smartphones da Intel.
O único problema é que alguns aplicativos Android ainda se comportam mal no hardware Intel . Normalmente, não é nada muito grande, mas você obtém algumas falhas estranhas, pontuações de benchmark irreais e outras peculiaridades de compatibilidade. A má notícia é que os desenvolvedores não podem fazer muito para resolver problemas relacionados a hardware, embora obter alguns dispositivos baseados em Intel para testes seja um bom começo. A boa notícia: a Intel está fazendo o possível para resolver tudo, para que você não precise.
Quanto ao hardware ARM, veremos mais núcleos de CPU em ainda mais clusters. O desempenho de thread único permanecerá limitado em muitos dispositivos convencionais, ou seja, telefones baratos baseados em SoCs Cortex-A53 quad e octa-core. É muito cedo para dizer se os novos compiladores Google/ARM poderão ou não aumentar o desempenho em tais dispositivos. Eles provavelmente vão, mas por quanto? A computação heterogênea é outra tendência a ser observada no próximo ano.
Resumindo, aqui está o que os desenvolvedores do Android devem esperar em termos de software e hardware no final de 2015 e 2016:
- Mais processadores Intel x86 nos segmentos de mercado básico e mainstream.
- A participação de mercado da Intel será insignificante em 2015, mas poderá crescer em 2016 e além.
- Mais designs multicore ARMv8 chegando online.
- Novo compilador ART “otimizado”.
- A computação heterogênea está chegando, mas vai demorar um pouco.
- A transição para nós de fabricação FinFET e Cortex-A72 desbloqueará mais desempenho e recursos.