
ARM big.LITTLEは、 Arm Holdingsが開発した異種コンピューティングアーキテクチャで、比較的バッテリー消費が少なく低速なプロセッサ コア ( LITTLE ) と、比較的強力で電力消費の多いプロセッサ コア ( big ) を組み合わせたものです。その目的は、クロック スケーリングのみの場合よりも動的なコンピューティング ニーズによく適応し、消費電力が少ないマルチ コア プロセッサを作成することです。ARM のマーケティング資料では、一部のアクティビティで最大 75% の電力削減が約束されています。[ 1 ]最も一般的には、ARM big.LITTLE アーキテクチャは、マルチ プロセッサ システム オン チップ(MPSoC)の作成に使用されます。
2011 年 10 月、big.LITTLE はCortex-A15とアーキテクチャ的に互換性を持つように設計されたCortex-A7とともに発表されました。[ 2 ] 2012 年 10 月、ARM はcortex-A53およびCortex-A57 ( ARMv8-A ) コアを発表しました。これらも big.LITTLE チップで使用できるように相互に互換性があります。[ 3 ] ARM はその後、Computex 2013でCortex-A12を発表し、続いて2014 年 2 月にCortex-A17を発表しました。Cortex-A12 と Cortex-A17 はどちらも、big.LITTLE 構成で Cortex-A7 と組み合わせることもできます。[ 4 ] [ 5 ]
特定のCMOSロジックライブラリの場合、1秒あたりのロジックスイッチング回数が増えるほどアクティブ電力は増加し、トランジスタ数が増えるほどリーク電力は増加します。非常に高速なアウトオブオーダーCPUが非常に低速でアイドル状態になっている場合、リーク電力がはるかに少ない(トランジスタ数が少ない)CPUで同じ処理を実行できます。たとえば、より小さなメモリキャッシュを使用したり、アウトオブオーダー実行を削除するなどのよりシンプルなマイクロアーキテクチャを使用したりすることができます。big.LITTLEは、同じシステムで電力効率と速度の両方を最適化する方法です。
実際には、big.LITTLEシステムは驚くほど柔軟性に欠ける場合があります。問題の一つは、SoCが提供する電源ドメインとクロックドメインの数と種類が、オペレーティングシステムが提供する標準的な電源管理機能と一致しない可能性があることです。もう一つは、CPUの能力が同等ではなくなり、適切なソフトウェアタスクを適切なCPUに割り当てるのが難しくなることです。これらの問題のほとんどは、電子回路とソフトウェアの柔軟性を高めることで解決されつつあります。
big.LITTLE デザインでは、実際の SoC レイアウトとカーネルに実装されているスケジューラに応じて、異なるプロセッサ コアを配置する方法が 3 つあります[ 6 ]。[ 7 ]

クラスタモデルアプローチは、プロセッサを「ビッグ」コアまたは「リトル」コアの同一サイズのクラスタに配置する、最初の最も単純な実装です。オペレーティングシステムのスケジューラは一度に 1 つのクラスタしか認識できません。プロセッサ全体の負荷が低から高に変化すると、システムは別のクラスタに切り替わります。その後、関連するすべてのデータは共通のL2 キャッシュを通過し、アクティブなコア クラスタの電源がオフになり、もう一方のクラスタがアクティブになります。キャッシュ コヒーレント インターコネクト (CCI) が使用されます。このモデルはSamsung Exynos 5 Octa (5410)に実装されています。 [ 8 ]

カーネル内スイッチャ (IKS) による CPU マイグレーションでは、「ビッグ」コアと「リトル」コアをペアにし、 1 つのチップ内に同じペアが多数存在する可能性があります。各ペアは、いわゆる仮想コアとして動作し、実際のコアは 1 つだけが (完全に) 電源オンされ、同時に動作します。「ビッグ」コアは需要が高いときに使用され、「リトル」コアは需要が低いときに使用されます。仮想コアの需要が (高から低の間で) 変化すると、入力側のコアの電源がオンになり、実行状態が転送され、出力側のコアがシャットダウンされ、新しいコアで処理が続行されます。切り替えはcpufreqフレームワークを介して行われます。完全な big.LITTLE IKS 実装は Linux 3.11 で追加されました。big.LITTLE IKS はクラスタマイグレーション ( § クラスタ切り替え) の改良版であり、主な違いは各ペアがスケジューラから見えることです。
より複雑な構成としては、「ビッグ」コアと「リトル」コアを非対称にグループ化する方法があります。1つのチップに1つまたは2つの「ビッグ」コアと多数の「リトル」コアが搭載されている場合もあれば、その逆の場合もあります。Nvidiaは、Tegra 3システムオンチップに搭載された低消費電力の「コンパニオンコア」で、これに似た構成を実現しました。

big.LITTLEアーキテクチャの最も強力な使用モデルは、すべての物理コアを同時に使用できるヘテロジニアスマルチプロセッシング(HMP)です。この場合、優先度または計算強度の高いスレッドは「big」コアに割り当てられ、バックグラウンドタスクなどの優先度または計算強度の低いスレッドは「LITTLE」コアで実行できます。[ 9 ] また、このモデルでは、「big」コアと「LITTLE」コアの数が一致している必要もありません。
このモデルは、 Samsung Exynos 5 Octa シリーズ (5420、5422、5430) [ 10 ] [ 11 ]およびApple A11から始まるApple A シリーズプロセッサ[ 12 ]に実装されています。 別の例としては、ヘキサコアRockchip RK3399 SoC があります。
ペアリングされた構成により、既存の動的電圧および周波数スケーリング(DVFS) 機能を使用して、オペレーティングシステムに対して透過的に切り替えを行うことができます。カーネル ( Linux など) の既存の DVFS サポートは、周波数/電圧のリストを認識し、既存のハードウェアと同様に、必要に応じてそれらを切り替えます。ただし、ローエンド スロットでは「Little」コアがアクティブになり、ハイエンド スロットでは「Big」コアがアクティブになります。これは、2012 年以降、Linux の「deadline」 CPU スケジューラ (同名の I/O スケジューラと混同しないように) によって提供されている初期のソリューションです。[ 13 ]cpufreq
あるいは、すべてのコアをカーネルスケジューラに公開し、各プロセス/スレッドの実行場所を決定することもできます。これは非ペアリング構成で必要になりますが、ペアリングされたコアでも使用できる可能性があります。これはカーネルスケジューラにとって特有の問題となります。カーネルスケジューラは、少なくとも最新の汎用ハードウェアでは、SMPシステム内のすべてのコアが異種ではなく同種であると想定できていました。Linux 5.0 の 2019 年の追加機能であるEnergy Aware Scheduling は、コアを異なる方法で考慮するスケジューラの例です。[ 14 ] [ 15 ]
2017 年 5 月、ARM は big.LITTLE の後継として DynamIQ を発表しました。[ 16 ] DynamIQ は、マルチコア プロセッサの設計において、より高い柔軟性と拡張性を実現すると期待されています。big.LITTLE とは対照的に、クラスタ内のコアの最大数を Armv8.2 CPU では 8 に、Armv9 では 12 に、Armv9.2 では 14 に増やし[ 17 ]、単一のクラスタ内でさまざまなコア設計を可能にし、最大 32 個のクラスタを構成できます。この技術では、コアごとの電圧制御のきめ細かさと L2 キャッシュの速度も向上しています。
しかし、DynamIQは従来のARM設計とは互換性がなく、当初はCortex-A75およびCortex-A55 CPUコアとその後継機種のみでサポートされます。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)