ヘテロジニアス・コンピューティング

ヘテロジニアス・コンピューティング (heterogeneous computing) は、異なる種類のプロセッサを組み合わせて構築したコンピュータシステム上で演算を行なうことである。用途に応じて適したプロセッサに処理を分担させることによって全体的な効率を高める。
通常、異種的（ヘテロジニアス）なプロセッサ環境では異なる複数の命令セットアーキテクチャ (ISA) を使用する。また、副プロセッサは主プロセッサとは大きく異なるアーキテクチャである。それゆえ、ヘテロジニアス環境向けソフトウェアの開発・実装には高い技術が必要となる。
異種性.
一般的にコンピューティングの文脈において異なる命令セットアーキテクチャ (ISA) のことを言及する「異種性」とは、単に異なるマイクロアーキテクチャを持つのではなく（例えば浮動小数点の数値処理はこの特殊例であり異種性と呼ばれることは稀）、メインプロセッサがあるアーキテクチャを持ち、他のプロセッサが別の（普通は非常に異なり、複数の場合もある）アーキテクチャを持つ、ということを意味する。
のヘテロジニアス・コンピューティングでは異なるISAを異なる方法で処理しなければならないことを意味していたが、では例えば、ヘテロジニアス・システム・アーキテクチャ（HSA）システムが存在し、同じ集積回路上などにある複数の種類のプロセッサ（CPUとGPUなど）を使用する際の（ユーザーにとっての）違いを解消しながら、両者の長所を提供する：CPUでオペレーティングシステムを走らせて従来の直列タスクを実行しながら、汎用GPU処理を行うなど（GPUはよく知られる3Dグラフィックスレンダリングの他に、非常に大きなデータセットに対する数学的に集中された計算を行うことができる）。
モダンなコンピューティングシステムでは製造技術の向上によって以前の個別部品がシステム・オン・チップ (SoC) へと統合されるようになり、異種性のレベルが次第に高まっている。例えば多くの新しいプロセッサには他のデバイス（SATA、PCI、イーサネット、USB、RFID、無線、UART、メモリコントローラ）と接続するための組み込み回路が含まれているほか、プログラマブル機能ユニットやハードウェアアクセラレータ（GPU、暗号コプロセッサ、プログラマブルネットワークプロセッサ、A/Vエンコーダ/デコーダなど）も搭載されている。
の研究では、複数のISAにより提供される多様性を利用したヘテロジニアスISAチップのマルチプロセッサが、一番良い同一ISAホモジニアスのアーキテクチャを21%も上回り、23%の省エネと32%の削減が可能であることを示している。AMDが2014年に発表したピン互換のARM / x86 SoC、コードネーム「Project Skybridge」は、ヘテロジニアスISA（ARM+x86）チップのマルチプロセッサが製作中であることを示唆している。
異種CPUトポロジー.
異種CPUトポロジーのシステムは同一ISAを使用するものの、コア自体が異なった速度のものとなっているシステムのことである。この構成はどちらかというと対称型マルチプロセッサに似ている（このようなシステムは技術的にはに当たるものの、コアの役割やデバイスアクセスには違いが存在しない）。
このようなトポロジーの一般的な使用はモバイルSoCの電力効率を向上させることにある。ARM big.LITTLEはその典型例であり、高速で高消費電力なコアと低速で低消費電力コアが組み合わされている。Apple Siliconも同様の構成のARMコアで作られている。また、IntelはLakefieldというコードネームのハイブリッドx86コアを製造しているが、それには命令セットの対応に大きな制限を含んでいる。
また、Alder Lakeも高性能コアと高効率コアを使用している。
プラットフォームの例.
ヘテロジニアス・コンピューティングのプラットフォームは、ハイエンドサーバーと高性能計算機から携帯電話やタブレット用の低消費電力の素子まで、あらゆる領域で使用される。SoCによる実装以外にも、例えばCPUとGPUを搭載した汎用コンピュータはヘテロジニアス・コンピューティング環境であると言える。たとえSoCであっても、異種プロセッサのメモリ空間が統合されているものもあれば、統合されていないものもある。
プログラミング環境の例.
副プロセッサ (ゲスト) をストリーム・プロセッシングで使うものや、主プロセッサ (ホスト) と副プロセッサ (ゲスト) の密な連携が可能なものが存在する。黎明期は独自の専用プログラミング言語を利用するなど、実験的なプログラミング環境が多数出現したが、普及が進むにつれ、標準C/C++あるいはその独自拡張が第1級言語として選ばれることが多くなっている。
ハードウェアや技術によって抽象化のレベルや関数ポインタあるいは仮想関数の使用可否、ホストとゲスト間のUnified Shared Memory (USM) やヘテロジニアス・ユニフォームメモリアクセス (hUMA) への対応などが異なっている。