メニーコア(manycore; many-core)プロセッサとは、高度な並列処理を行うために設計された特殊なマルチコア・プロセッサのことで、多数のより単純で独立したプロセッサ・コア(数十コアから数千コア以上)を含んでいる。メニーコア・プロセッサは、組み込みコンピュータや高性能コンピューティングで広く使われている。 メニーコア・プロセッサは、マルチコア・プロセッサとは異なり、明示的な並列処理
マルチコア・アーキテクチャとの対比
対照的に、より広いカテゴリのマルチコア・プロセッサは、通常、並列コードと直列コードの両方を効率的に実行するように設計されているため、高いシングルスレッド性能 (例えば、より多くのシリコンをアウト・オブ・オーダー実行、より深いパイプライン、より多くのスーパースカラー実行ユニット、より大きな一般的なキャッシュに割り当てる) と共有メモリに重点を置いている。これらの技術は、単一スレッドで暗黙的な並列性を見つけることにランタイム・リソースを割いている。これらの技術は、シングルコア・プロセッサから(下位互換性を持って)継続的に進化してきたシステムで使用される。通常は「数個」のコア(例:2,4,8)を持ち、ヘテロジニアス・システム(異機種システム)では、GPUなどのマルチコア・アクセラレータで補完されることもある。 キャッシュ・コヒーレンシーは、マルチコア・プロセッサのスケーリングを制限する問題である。メニーコア・プロセッサは、メッセージパッシング[1]、スクラッチパッドメモリ、DMA[2]、パーティション化グローバルアドレス空間[3]、読み取り専用/非コヒーレントキャッシュなどの方法で、この問題を回避できる。チップ上ネットワーク
モチベーション
メニーコア・プロセッサは、クラスタやベクトル・プロセッサなどの高性能コンピューティングに由来する技術と(概念的に)より多くの共通点を持つ可能性がある[5]。
GPUは、複数のシェーダ処理ユニット (英語版) を備えたメニーコア・プロセッサの一形態と考えられ、高度に並列化されたコード (高スループットだが、シングルスレッドの性能が極端に劣る) にのみ適している。 マルチコア・プロセッサで構築された多くのコンピューターは、100万個以上の個別のCPUコアを持っている。
適切なプログラミングモデル
メッセージ・パッシング・インタフェース
OpenCL [6]または計算カーネル(英語版)をサポートするその他のAPI
パーティション化グローバルアドレス空間
アクターモデル
OpenMP [7]
データフロー
メニーコア・システムのクラス
メニーコア・ベクトルプロセッサとして説明できるGPU
超並列パラレルプロセッサアレイ (英語版)
単純プロセッサの非同期配列 (英語版)
特定のメニーコア・アーキテクチャ
ZettaScaler - 日本のPEZY Computing 2048コアモジュール
Xeon Phiコ・プロセッサ[8] - MIC(Many Integrated Cores)アーキテクチャ
Tilera
Adapteva Epiphany Architecture - PGAS スクラッチパッドメモリを使用したメニーコアチップ
Coherent Logix hx3100 Processor - HyperX Architecture をベースとした100コアDSP/GPPプロセッサ
Movidius Myriad 2 - マシンビジョンのためのメニーコアAIアクセラレータ
Kalray - データ集約型のタスクのためのメニーコアPCI-Eアクセラレータ
Teraflops Research Chip - メッセージパッシングを使用したメニーコアプロセッサ
TrueNorth - チップアーキテクチャ上にメニーコア・ネットワークを備えたAIアクセラレータ
Green arrays - 低消費電力アプリケーション向けのメッセージパッシングを使用したメニーコアプロセッサ
Eyeriss - 組み込みビジョンアプリケーション用の畳み込みニューラルネットを実行するために設計されたメニーコアプロセッサ[9]
100万以上のCPUコアを備えたメニーコア・コンピューター