メニーコアプロセッサは、高度な並列処理のために設計された特殊なマルチコアプロセッサであり、数十個から数千個以上の、より単純で独立した多数のプロセッサコアを備えています。メニーコアプロセッサは、組み込みコンピュータや高性能コンピューティングにおいて広く利用されています。
メニーコアプロセッサは、マルチコアプロセッサとは異なり、最初から明示的な並列処理の度合いを高め、レイテンシとシングルスレッド性能の低下を犠牲にしてスループット(または消費電力の低減)を向上させるように最適化されています。
一方、マルチコアプロセッサというより広いカテゴリは、通常、並列コードとシリアルコードの両方を効率的に実行するように設計されており、そのため、シングルスレッドのパフォーマンス(例えば、アウトオブオーダー実行にシリコンをより多く割り当てる、パイプラインをより深くする、スーパースカラ実行ユニットを増やす、より大きく汎用的なキャッシュを使用するなど)と共有メモリに重点を置いています。これらの技術は、実行時リソースをシングルスレッド内の暗黙的な並列性を判断するために使用します。これらは、シングルコアプロセッサから(後方互換性を保ちながら)継続的に進化してきたシステムで使用されます。通常、「少数の」コア(例えば、2、4、8)を持ち、異種システムでは、マルチコアアクセラレータ( GPUなど)によって補完される場合があります。
キャッシュの一貫性は、マルチコアプロセッサのスケーリングを制限する問題です。メニーコアプロセッサは、メッセージパッシング[ 1 ] 、スクラッチパッドメモリ、DMA [ 2 ] 、パーティション化されたグローバルアドレス空間[ 3 ]、または読み取り専用/非コヒーレントキャッシュなどの方法でこれを回避できます。チップ上のネットワークとローカルメモリを使用するメニーコアプロセッサは、ソフトウェアにタスクの空間レイアウトを明示的に最適化する機会を与えます(たとえば、 TrueNorth 用に開発されたツールに見られるように)。[ 4 ]
マルチコアプロセッサは、クラスタやベクトルプロセッサなどの高性能コンピューティングに由来する技術と(概念的に)共通点が多い可能性がある。[ 5 ]
GPUは、複数のシェーダー処理ユニットを備えたマルチコアプロセッサの一種とみなすことができ、高度に並列化されたコード(高いスループットは得られるが、シングルスレッド性能は極めて低い)にのみ適している。
マルチコアプロセッサを搭載したコンピュータの中には、100万個以上のCPUコアを持つものもある。例としては以下のようなものがある。
かなりの数のスーパーコンピュータが500万個以上のCPUコアを搭載しています。GPUなどのコプロセッサも併用されている場合、それらのコアはコア数に含まれないため、さらに多くのコンピュータがこの目標値に達するでしょう。