Android開発者を引き締め、新しいAndroidコンパイラが登場します
公開: 2022-03-11断片化は、Androidの開発者と消費者にとって何年にもわたってフラストレーションの原因となってきました。 今では、状況が良くなる前に状況が悪化するようです。 新しいAndroidコンパイラが再び登場し、ハードウェアの面で注目に値する開発がいくつかあり、開発者に影響を与える可能性があります。
Dalvikが見えなくなったため、多くの人がGoogleの新しい64ビット対応のARTランタイムが何年も続くと予想していました。おそらくそうなるでしょうが、近い将来、大幅なオーバーホールが行われるでしょう。 ARTは64ビットハードウェアのサポートを提供することに加えて、事前(AOT)コンパイルも導入しましたが、Dalvikはジャストインタイム(JIT)コンパイラでした。 新しい最適化コンパイラは、さらに多くの可能性を解き放ちます。
ハードウェアの開発に関しては、スマートフォンのシステムオンチップ業界にはいくつかの新しいトレンドといくつかの新旧のプレーヤーがありますが、それについては後で説明します。
まず、Googleのランタイムプランを見てみましょう。
Dalvik、ART、ARTと新しいAndroidコンパイラ
ARTは昨年Android5.0で導入され、Nexus9とNexus6でリリースされましたが、後者は32ビットのARMv7-ACPUを使用していました。 ただし、ARTはゼロから設計されるのではなく、実際にはJITから離れたDalvikの進化形でした。
Dalvikは、必要に応じてその場でアプリをコンパイルします。 これにより、明らかにCPU負荷が増加し、アプリケーションの起動に必要な時間が長くなり、バッテリーの寿命が長くなります。 ARTはすべてを事前にコンパイルするため、インストール時に、デバイスがアプリを起動するたびにコンパイル時にクロックサイクルを無駄にする必要はありません。 これにより、ユーザーエクスペリエンスがよりスムーズになり、同時に消費電力が削減され、バッテリーの寿命が延びます。
では、Googleは次に何をするつもりですか?
ARTは、昨年末にオンラインになり始めた新しい64ビットARMv8 CPUコアを利用するために開発されたため、元のコンパイラは一時的な手段であったようです。 これは、効率と最適化ではなく、市場投入までの時間が優先されることを意味しました。 それはそうではなかったので、ARTが単なる失敗した急ぎの仕事であったという意味ではありません。 ランタイムはうまく機能し、開発者とユーザーから賞賛されています。
ただし、改善の余地があり、現在、Googleは大幅に改善されたコンパイラに取り組んでいるようであり、その努力はおそらくARTの公式リリースよりも前のものです。 英国のチップデザイナーであるARMは最近、Googleのランタイム計画に関するいくつかの興味深い事実を明らかにし、ART用の新しい「最適化」コンパイラを指摘しました。 新しいコンパイラは、コード生成の前にプログラム構造を操作できる中間表現(IR)を提供します。 情報が豊富なグラフとして構造化された単一レベルの中間表現を使用し、コンパイラーのアーキテクチャー対応部分により良い情報を提供します。
「クイック」コンパイラは、命令と変数の単純なリンクリストを使用して、2つのレベルの中間表現を使用しますが、IRの作成中に重要な情報を失います。
ARMは、新しい「最適化」コンパイラが多くの重要な利点を提供すると主張しており、コンパイラ技術の観点からは「大きな飛躍」と表現しています。 コンパイラは、将来の最適化のためのより優れたインフラストラクチャを提供し、コード品質の向上に役立ちます。
最適化とクイックコンパイラの主な機能
ARMは、2つのコンパイラの違いを単一のスライドで概説し、「最適化」コンパイラにより、レジスタの使用効率が向上し、スタックへの流出が少なくなり、実行に必要なコードが少なくなると主張しました。
ARMは次のように述べています。
Quickには、非常に単純なレジスタ割り当てアルゴリズムがあります。
- IRの情報の欠如
- 複雑さよりもコンパイル速度–JITとしての起源
- パフォーマンスの低下–スタックに大量のレジスタがこぼれた
最適化では、ライナースキャンレジスタ割り当てを使用します。
- パフォーマンスと時間の間の優れた妥協点
- 活性分析が使用されます
- スタックへのレジスタの流出を最小限に抑える」
新しいコンパイラはまだ開発中ですが、ARMはいくつかのパフォーマンス数値を共有しました。 合成CPUテストでは、コンパイラーは15〜40パーセントの範囲でパフォーマンスを向上させます。 コンパイル速度は約8%向上します。 ただし、同社は、新しいコンパイラが成熟するにつれて、数値が「毎日変化する」と警告しています。
焦点は、現在コンパイル速度とファイルサイズに明らかな利点がある「クイック」コンパイラとほぼ同等を達成することにあります。
今のところ、それはトレードオフのように見えます。 新しい「最適化」コンパイラは、CPUにバインドされたアプリケーションと合成ベンチマークで印象的なパフォーマンスの向上をもたらしますが、コンパイルが最大8%遅くなるファイルが10%大きくなります。 最後の2つの数値は、CPUパフォーマンスの向上よりも重要であるように見えますが、CPU負荷に関係なく、RAMやストレージなどのさらに限られたリソースを使用して、すべてのアプリに適用されることに注意してください。 64ビットでコンパイルすると、32ビットでコンパイルするよりも多くのRAMが消費されることに注意してください。
デバイスの応答性とユーザーエクスペリエンスに影響を与えるため、コンパイル速度と起動時間の低下も懸念事項です。
マルチコア軍拡競争
ランタイムやコンパイラに関係なく、もう1つの懸念事項は、ARMv7-AおよびARMv8アーキテクチャに基づくマルチコアプロセッサの人気です。 オクタコアの流行は2013年に始まり、安価なマーケティングスタントとしてすぐに却下されました。 クアルコムの幹部は、オクタコアプロセッサを「ばかげた」と「ばかげた」とまで呼んでおり、エンジニアは「ばかげていない」ので、会社は何も作らないと言った。 同じ幹部はまた、AppleA7での64ビットサポートを「仕掛け」と表現しました。
2年早送りすると、64ビットのQualcommオクタコアCortex-A53スマートフォンが机の上にありますが、問題の幹部は彼の名前のプラークに異なる役職を持っています。
来年は、8コアのチップでは不十分であるかのように、10コアのアプリケーションプロセッサをベースにした最初のデバイスが登場します。 最初の10コアスマートフォンチップは、Helio X20の形でMediaTekから提供され、huge.Medium.TINYと呼ばれるCPUコアの3つのクラスターを備えています。 楽しそうに聞こえます、そしてそれは良くなります。 新世代のIntelプロセッサをベースにした最初の手頃なAndroidデバイスが間もなく登場します。
ARMコア戦争と、それが開発者と消費者にとって何を意味するのかを見てみましょう。 ARMSoCオクタコア設計には2つの異なるバージョンがあります。 ハイエンドソリューションは、ARMのbig.LITTLEレイアウトを使用する傾向があり、4つの低電力コアと4つの大コアを高負荷に使用します。 チップに8つのARMCPUコアを固定する2番目の方法は、同一のコア、またはクロック速度が異なる2つのクラスターで同一のコアを使用することです。
主要なモバイルチップメーカーは、ハイエンドデバイスのbig.LITTLEチップと、主流製品の通常のオクタコアの両方のアプローチを使用する傾向があります。 どちらのアプローチにも長所と短所があるので、詳しく見てみましょう。
ARM big.LITTLEと通常のオクタコア:
異なるCPUコアの2つのクラスターを使用すると、big.LITTLEデザインで優れたシングルスレッドパフォーマンスと効率が得られます。 トレードオフは、単一のCortex-A57コアがおよそ4つの小さなCortex-A53コアのサイズであり、効率が低いことです。
8つの同一のコア、または異なるクロックを持つ2つのクラスターで8つの同一のコアを使用すると、費用効果が高く、電力効率が高くなります。 ただし、シングルスレッドのパフォーマンスは低くなります。
ARMv8コアに基づく現世代のbig.LITTLEデザインでは、最も安価な28nm製造ノードを使用できません。 20nmでも、一部の設計では多くのスロットルが発生するため、持続的なパフォーマンスが制限されます。 Cortex-A53 CPUコアに基づく標準オクタコアは28nmで効果的に実装できるため、チップメーカーは20nmや16/ 14nm FinFETなどの最先端の製造ノードを使用する必要がなく、コストを抑えることができます。
チップ設計のトレンドに飽き飽きしたくはありませんが、2015年と2016年のモバイルプロセッサで覚えておくべきいくつかの基本事項が重要です。
- ほとんどのチップは28nm製造ノードとCortex-A53コアを使用するため、シングルスレッドのパフォーマンスが制限されます。
- 大きなCortex-A57コアは、SamsungとQualcommの2つの主要な設計で実装されていますが、他のチップメーカーはそれをスキップして、Cortex-A72コアを待っているようです。
- マルチスレッドのパフォーマンスは、今後18か月でますます重要になります。
- 20nmおよびFinFETノードが大幅に安くなるまで(2016年以降)、大幅なパフォーマンスの向上は期待できません。
- 10コアのデザインも登場します。
これらの点はすべて、Android開発者にとって特定の意味を持っています。 チップメーカーがスマートフォンやタブレットチップの大部分で28nmプロセスに固執している限り、開発者はマルチスレッドパフォーマンスを活用し、効率に集中するために最善を尽くす必要があります。

ARTと新しいコンパイラは、パフォーマンスと効率の向上に大いに役立つはずですが、物理法則を破ることはできません。 古い32ビットデザインは、今後多くのデバイスで使用されることはなく、最も安価なデバイスでさえ、64ビットシリコンとAndroid5.0で出荷され始めています。
Android 5.xのユーザーベースはまだ比較的小さいですが、急速に成長しており、64ビットチップとAndroid5.0を搭載した100ドルから150ドルの携帯電話が登場するようになりました。 64ビットAndroidへの移行は順調に進んでいます。
大きな問題は、Dalvikが新しい最適化コンパイラをいつ入手するかということです。 今年後半、または来年Android6.0でリリースされる可能性があります。 確かに言うにはまだ時期尚早です。
モバイルに登場するヘテロジニアスコンピューティング
覚えておくべき別のことがあります。 モバイルグラフィックスは、特にハイエンドプロセッサでより強力になっているため、チップメーカーは、ゲームやビデオデコード以外の用途にそれらを利用するために、舞台裏で多くの作業を行っています。 ヘテロジニアスコンピューティングは数年前から存在しており、PCが高度に並列化されたタスクをGPUにオフロードできるようになっています。
同じテクノロジーがモバイルプロセッサにも登場し、CPUコアとGPUコアを効果的に融合しています。 このアプローチにより、開発者は特定のタイプのプログラム、つまりOpenCLロードをGPUに実行することで、パフォーマンスを向上させることができます。 開発者はスループットに集中でき、プロセッサはCPUとGPUでの並列実行を自動的に処理します。
もちろん、これはすべてのアプリで機能し、すべての状況で負荷を軽減するわけではありませんが、一部のニッチでは、パフォーマンスを向上させ、消費電力を削減するのに役立つはずです。 負荷に応じて、SoCはコードの処理方法を自動的に決定し、一部のタスクにはCPUを使用し、他のタスクにはGPUをオフロードします。
並列化されたアプリケーションを扱っているので、このアプローチは画像処理の最大の改善をもたらすことが期待されます。 たとえば、超解像画像とリサンプル画像を使用する必要がある場合、OpenCLではプロセスをさまざまな段階に分割できます。 プロセスにfind_neighbor
、 col_upsample
、 row_upsample
、 sub
、 blur2
などのさまざまなステージが含まれる場合、ハードウェアは、特定のタスクを最適に処理するコアの種類に応じて、CPUコアとGPUコアに最も効率的な方法で負荷を分散します。仕方。 これにより、パフォーマンスが1桁向上するだけでなく、消費電力の削減にも役立ちます。
Intelは死から戻ってきた、そしてそれは死体に似合っている
Intelはモバイル革命に乗り遅れ、実質的に市場をARMとそのハードウェアパートナーに譲りました。 しかし、米国のチップメーカーには、ベンチで数年を過ごしてカムバックするための資金とリソースがあります。
昨年、Intelはタブレット用のAtomプロセッサの販売に助成金を支給し、1年足らずで出荷量を4倍に増やしました。 現在、新しいSoFIAAtomx3プロセッサを搭載したスマートフォンセグメントに注目しています。 率直に言って、これらのチップは実際にはチップの巨人によって製造されていないため、Intelプロセッサと呼ばれるべきかどうかは完全にはわかりません。 SoFIAプロセッサは、中国のチップメーカーと協力して、厳しい予算で設計されています。 それらは28nmノードで製造されており、低速で小型で安価です。
これは一部のカジュアルなオブザーバーにとっては驚きかもしれませんが、Intelはハイエンドのモバイルソリューションに悩まされていません。 ローエンドのSoFIAパーツは、50ドルから150ドルの価格のコモディティ化されたAndroidフォンに電力を供給します。 最初のデザインは2015年の第2四半期末までに出荷を開始する予定であり、それらのほとんどはアジア市場だけでなく、世界の他の地域の新興市場向けにもデザインされます。 それらのいくつかは北米とヨーロッパで見られる可能性がありますが、Intelの焦点は中国とインドにあるようです。
Intelは、Atom x5およびx7プロセッサで賭けをヘッジしています。これらのプロセッサは、完全に新しいアーキテクチャに加えて、同社の最先端の14nm製造ノードを使用します。 ただし、これらの製品は、少なくとも当面はスマートフォンではなくタブレット向けです。
大きな問題は、私が答えを持っていないことですが、Intelがそのベルトの下でいくつのデザインの勝利を得ることができるかということです。 アナリストはこの問題について意見が分かれており、出荷予測は現時点では推測のように見えます。
昨年、Intelは、タブレット市場で足場を固めるために、損失を維持し、数十億ドルを燃やすことをいとわないことを証明しました。 新しいAtomチップ、特にスマートフォンのSoFIA製品で同じアプローチを使用するかどうかを言うのはまだ時期尚早です。
これまでのところ、Intel SoFIAプロセッサをベースにした実際の製品は1つしか見ていません。それは、3G接続を備えた中国の69ドルのタブレットです。 これは本質的に特大の電話であるため、ご想像のとおり、エントリーレベルのSoFIA電話のコストははるかに低くなる可能性があります。 ホワイトボックスのスマートフォンやタブレットメーカーにとっては魅力的な提案であるに違いありません。背面に「IntelInside」ステッカーが貼られた50ドルから100ドルのデバイスを簡単に設計できるからです。これは、マーケティングの観点からは良さそうです。
残念ながら、来年かそこらで出荷されるインテルの携帯電話とタブレットの数を推測することしかできません。 私たちは明らかに数百万のユニット、数千万のユニットを扱っていますが、問題は次のとおりです。 ほとんどのアナリストは、Intelが今年2000万から5000万のAtom x3プロセッサを出荷すると信じています。これは、スマートフォンの出荷総数が今年12億台に達すると予測されていることを考えると、バケツの減少です。 ただし、Intelは冷酷で、燃やすお金があり、これらのチップで利益を上げる必要はありません。 2015年末までに市場の3〜4%を獲得する可能性がありますが、市場シェアは2016年以降も成長を続けるはずです。
これはAndroid開発者にとって何を意味しますか?
Intelは、特定の互換性の問題により、一部のAndroid開発者の間で評判が悪くなりました。 ハードウェアはほとんどのデバイスで使用されている標準のARMコアとは大きく異なっていたため、これは数年前の実際の問題でした。
幸いなことに、この会社は2年間で大きな進歩を遂げました。 広範なトレーニングプログラム、包括的なドキュメントなどを提供します。 実際、LinkedInの求人情報をひと目見ると、Intelは数十人のAndroid開発者を採用しており、毎月いくつかの新しい欠員が出ています。
それで、すべてがうまくいっていますよね? まあ、それは…
先週、IntelのAtom Z3560をベースにした新しいAsusの電話をテストする機会がありましたが、結果に満足していると言わざるを得ません。 これは、低価格のデバイスで4GBのRAMをアドレス指定できる優れたハードウェアプラットフォームです。 Asusは、今年は3,000万台を販売できると考えています。これは、Intelのスマートフォン市場シェアを考えると本当に印象的です。
唯一の問題は、一部のAndroidアプリがIntelハードウェア上でまだ誤動作することです。 通常、それは大きすぎるものではありませんが、奇妙なクラッシュ、非現実的なベンチマークスコア、その他の互換性の癖が発生します。 悪いニュースは、開発者がハードウェア関連の問題に対処するために多くのことを行うことができないということですが、テスト用にいくつかのIntelベースのデバイスを入手することは良いスタートです。 良いニュース:Intelはすべてを最後まで整理するために最善を尽くしているので、そうする必要はありません。
ARMハードウェアに関しては、さらに多くのクラスターでより多くのCPUコアが見られます。 シングルスレッドのパフォーマンスは、多くの主流のデバイス、つまりクアッドコアおよびオクタコアのCortex-A53SoCをベースにした安価な電話では制限されたままになります。 新しいGoogle/ARMコンパイラがそのようなデバイスのパフォーマンスを向上させることができるかどうかを言うのは時期尚早です。 彼らはおそらくそうするでしょう、しかしどれくらいですか? ヘテロジニアスコンピューティングは、来年注目すべきもう1つのトレンドです。
まとめとして、Android開発者が2015年後半と2016年にソフトウェアとハードウェアに関して期待すべきことは次のとおりです。
- エントリーレベルおよび主流の市場セグメントにおけるより多くのインテルx86プロセッサー。
- インテルの市場シェアは2015年にはごくわずかですが、2016年以降に成長する可能性があります。
- より多くのARMv8マルチコアデザインがオンラインになります。
- 新しい「最適化された」ARTコンパイラ。
- ヘテロジニアスコンピューティングが登場しますが、しばらく時間がかかります。
- FinFET製造ノードとCortex-A72に移行すると、より多くのパフォーマンスと機能が利用できるようになります。