ヘテロジニアスマルチコア

ヘテロジニアス・マルチコア (英: heterogeneous multi-core) は、異種の命令セットアーキテクチャ（instruction set architecture: ISA）を持つマイクロプロセッサが統合されたCPU、すなわち異種混在のマルチコアを表す用語。ヘテロジニアス・コンピューティングのために利用される。 対して、同種のコアを複数実装するプロセッサをホモジニアス・マルチコア (英: homogeneous multi-core) と言う。 ARMアーキテクチャのbig.LITTLEのように、ISAは同じであるものの、異なる動作クロック周波数を持つCPUコアからなる構成を、異種CPUトポロジー (heterogeneous CPU topologies) と呼ぶ。これは主に電力効率の向上を目的としている。異種CPUトポロジーは技術的には非対称型マルチプロセッシング（英語版） (asymmetric multi-processing: AMP) の特徴も含んでいるが、完全なメモリ共有型であり、どちらかというと対称型マルチプロセッシング (symmetric multi-processing: SMP) に近い。異種CPUトポロジーの場合、基本的に各プロセッサコアへのタスクの割り当て（スケジューリング）はオペレーティングシステムが管理し、アプリケーションソフトウェアからは個々のコアの違いを意識することはなく、透過的である。 初期のヘテロジニアス・マルチコアの製品として、PlayStation 3等に搭載されたCell Broadband Engineがあり、後のAMDによるCPUとGPUの統合製品（後にAPUと呼ばれる）とともに、マルチコア・アーキテクチャの方向性を決定付けたとされている。 例として、Cellプロセッサは、オペレーティングシステム (OS) によるシステム全体の制御等の汎用処理に特化した1個のコントロールポイントプロセッサ「Power Processor Element (PPE)」と、グラフィックスや音声のストリーム等のデータ処理に特化した複数のデータポイントプロセッサ「Synergistic Processor Element (SPE)」で構成される。これらのシンプルな異種コアを組み合わせることで、シングルスレッド性能とマルチスレッド性能を両立するアプローチをとっている。 モバイルデバイス環境ではCPUとGPUを統合したSoCが使われており、ヘテロジニアス・マルチコア環境とも言えるシステムが一般的となっているが、CPUとGPUのメモリ空間が統合されているわけではない。 ヘテロジニアス・マルチコア環境では、プロセッサごとのメモリ空間が異なっていたり、各プロセッサのISAやメモリアクセス特性に応じた固有のプログラミングが必要であったりと、利用上の難しさが問題視されており、そのような問題を解決するための方法も模索されている。 ヘテロジニアス・マルチコアCPUは、それまで主流だった同じアーキテクチャのCPUコアを1チップに複数搭載するホモジニアス・マルチコアCPUとは大きく異なり、1つのチップに異なる種類のアーキテクチャのCPUコアを搭載したCPUをいう。 その目的は、2つの方向性があると考えられている。 ヘテロジニアス・マルチコアならば、シングルスレッド性能を維持しつつ、マルチスレッド性能を大幅に高めることができる。 それぞれのCPUコアを最適化することによって、ホモジニアス・マルチコアCPUでは実現できない高効率処理を実現できる。 1の手法はソフトウェア指向型の設計であり、2の手法はハードウェア指向型の設計でもある。なお、この2つを組み合わせたヘテロジニアス・マルチコアという方法も十分に考えられる。 ヘテロジニアス・マルチコアが浮上して来た背景には、CPU単体での性能向上が行き詰まってきたという事情がある。 2000年頃までのCPU設計は、シングルコアで性能を引き上げるために、次の2点にフォーカスしてきた。 動作周波数の向上 IPC（Instructions Per Cycle: 1サイクルで実行できる命令数）の向上 この2つの目標を達成するために、動作周波数の向上にはパイプラインを細分化する事で対応し、IPCの向上には動的に命令レベルの並列性 (Instruction-Level Parallelism, ILP) を高めるアウト・オブ・オーダー実行とそれに付随するさまざまな高速化技術を導入することで対応してきた。 しかし、この2点を追求することによってシングルコアCPUは複雑化と高コスト化を招いた。現在[いつ?]市場に出回っている最先端のCPUでは、ILP向上のためのスケジューリング制御部分が膨大な面積を占めるようになってきている。そのため、ダイサイズ（半導体本体の面積）を2倍の大きさに増やしても、増やした面積の平方根分（約1.4倍）しか性能が向上しなくなり、最新[いつ?]のCPUでは「性能/消費電力」と「性能/ダイサイズ」が悪化した非効率なものとなった。 先端CPUの性能向上がこのように非効率になった背景には、シングルスレッドのスカラ演算性能を引き上げなければならないという呪縛が開発者にあったからである。x86アーキテクチャのCPUでは多数のソフトウェア資産を抱えている。そして、市場に流通しているものを初めとして、既存のアプリケーションの性能を引き上げるためには、シングルスレッドで、かつ、スカラー[要曖昧さ回避]演算の性能を向上させる必要に迫られていた。 ここ数年[いつ?]はCPUの周波数向上が鈍化してきている。さらにはCPU設計の複雑化に伴うトランジスタの集積密度増大による消費電力が増大し続けてきた。そして、より効率のいい性能向上が求められるようになってきている。そこで、CPU業界はマルチスレッド性能の向上へと向かい始めた。「CPUチップのマルチコア化によって「スレッドレベル並列性 (Thread-Level Parallelism, TLP)」を向上させれば、これまでより効率よくCPU性能を上げることができるようになるのではないだろうか?」と考えた。 しかし、ここにも問題があった。インテルやAMDはシングルスレッド性能も維持するために、従来のシングルコアCPUのコアを再利用してマルチコアを実現した。そのために、消費電力やダイエリア当たりの性能は依然としてそれほど向上しなかった。対称型デュアルコアCPUが登場した当時の半導体製造プロセスである90nmでは、2way以上のマルチコア化が難しく、対称型クアッドコアCPUが主流になるのは45nmプロセスに移行してからのことになった。その後もプロセスの微細化は進んでいるが、22nm世代でもコンシューマー向けのボリュームゾーンではデュアルコアやクアッドコアが主流のままとなっている。 この問題の解決策は単純な発想で、CPUコアをシンプルにすれば回避できる。複雑な制御機構を省けば、ずっと小さなCPUコアでそこそこの性能を維持することが可能である。つまり、「ポラックの法則」を逆に考えるなら、CPUコアのダイエリアを1/4にしても性能は1/2にしか落ちないことになる。シンプルなCPUコアなら多数搭載できるから、マルチスレッド性能はずっと高くなるだろう。簡単に「ダイエリア消費量ならびに電力効率のいいマルチコアCPUを作ることができるのではないか?」ということだった。 しかし、この手法ですらトレードオフがある。 シンプルコアにした場合には、シングルスレッドの性能が落ちる。 OSなどに多いコントロール系タスクと、マルチメディア系のストリーム処理、それぞれを高速に処理できるシンプルコアを作ることは難しい。 そこで出てきたアイディアが、ヘテロジニアス型のマルチコアである。 例としては、 シングルスレッド性能を追求した大型CPUコアと、シンプルな構造にして効率を追求した小型CPUコアを組み合わせれば、シングルスレッド性能を維持しつつ、高並列のマルチスレッド処理が実現可能。 CPUコアを、コントロール系CPUコアとデータ系CPUコアに切り分ける。コントロール系のCPUコアはOSを走らせることと制御のみを担当し、データ処理系のCPUコアはストリーム・データなどのリアルタイムデータ処理を担当する。 それぞれのアプローチに違いはあるが、異なるアーキテクチャを組み合わせることで、これまでの限界を乗り越えようとしている。 既存のCPUアーキテクチャーの限界を超えようとする試みは続けられている。それぞれの用途目的に特化したCPUであるとか、特化したCPUを組み合わせて新しいコアを作り出そうとする試みは続けられると推測される。 それだけでなく、「非同期設計CPU」、「再構成可能 (Reconfigurable) CPU」、さらには「光電子工学」や「光量子技術」を生かしたヘテロジニアス型のマルチコアCPUも将来実現するかも知れない。組み合わせにより既存の限界を超えるという手法は、システム工学における重要な手法でもある。