回答:
スーパースカラープロセッサとは、単一のクロックサイクル中に複数の命令をディスパッチすることを意味します。これがマルチコアと区別される理由は、1つの命令カウンターしか取得できないためです。したがって、実行中の複数の命令を追跡しますが、すべての命令は単一のプログラムからのものです。これはまだ1つのプロセスにすぎません。ここで、「1つの命令カウンターを取得する」と言いましたが、技術的には、分岐予測スキームを使用しない限りコードに不均衡が生じることはありません(投機的実行:両方の分岐を同時に実行し、「間違った"予測の結果)。
マルチコアに入ると、複数の命令ストリームが同時に実行されます。重要な点は、各コア(独自の命令カウンターで実行)をスーパースカラーにして、各単一のプロセスをより迅速に実行できることです。
非常に長い命令語または「VLIW」と呼ばれるものを使用することにより、パイプライン処理や順序どおりの実行を行わずにスーパースカラーを持つことが可能です。これは「静的」スーパースカラーとも呼ばれます(つまり、コード自体にあります)。これは基本的に、同時に複数の命令を実行するのに十分なコンポーネントがあり、複数の命令を一度にフェッチして実行する場所です。最も単純な形で、「このプロセッサーは常に2つの命令を同時にフェッチして実行する」と言ったと想像してください。次に、コーダーが同じプロセスで同時に実行される作業を見つけることができる限り、スループットが2倍になります。まとめる2つの命令が見つからない場合は、1つの命令とNOPをペアにするだけです。このアイデアは、3、4、またはそれ以上の命令を同時に実行できるより良いバージョンのプロセッサを作成すると、古いコードがすべて壊れてしまうため、あまりよくありません。しかし、彼らはこれを非常に独創的な方法で解決しました。詳細を知りたい場合は、明示的に並列命令コンピューティングまたは「EPIC」のものをチェックする必要があります。
パイプライン処理を備えた動的スーパースカラーは、データに依存しない命令と命令レベルの並列処理の両方を利用できます。これにより、このような強力な組み合わせが実現します。基本的に、十分なハードウェアがあれば、できるだけ多くの独立した命令を同時に実行できます。
パイプライン処理と順不同の実行を伴う動的スーパースカラーは、本質的に命令レベルの並列処理の制限でした。同じステージで複数の命令を同時に実行して、データに依存せずに動作する操作を見つけようとしました。順不同で終了したり、順不同で開始したりする可能性があります。スーパースカラーの処理を実行している間、頭をまっすぐに保つために行う必要があるあらゆる種類のことがあります。マルチコアは、「ちょっとプログラマー!私が同時に解決できる複数の問題を私に与えてください!」と言います。そして、プログラマーは、コンパイルされたアセンブリーの数行を超えて独立して解決可能な問題を見つけることができるため、マルチコア向けのソリューションをより効率的にプログラミングできます。
スーパースカラーは、「これらの2つのプログラムをより速く実行する方法」のような問題を解決することすらできません。独立した各プログラムをより速く実行することしかできませんでした。
それが少しばらばらであるとすみません、それが役に立てば幸いです。
-編集-
複数のアイデアを混乱させたというajs410のポイントを考慮に入れるように変更されました。
80486やPentiumなどの以前のプロセッサを振り返ると、CPUは単一の論理的な処理単位でした。一度に1つの命令ストリームを実行します。1つのCPUも1つのシリコンチップでした。より高い処理能力が必要な場合は、2つの別個のCPUに適合するスロットを備えた高価なサーバーマザーボードを購入できます。次に、2つのCPUマシンと2つの処理コアがありました。
ある時点で、ムーアの法則により、シリコンには非常に多くのトランジスタがあり、2つのCPUのすべての回路を1つのチップに収めることができました。これで、名前の混乱の可能性があります。2つのCPUを搭載しているということは、古いスタイルの2つのシリコンパッケージまたは新しい単一のシリコンパッケージを持っているが、2つのプロセッサの処理設定を備えていることを意味します。これを解決するために、CPUが単一のシリコンパッケージであり、コアがその中の単一の論理処理ユニットであることを意味します。
スーパースカラーとは、パフォーマンスを向上させるためにコア内で使用される手法を指し、平均してサイクルごとにより多くの命令を処理できるようにします。スカラープロセッサは、サイクルごとに最大1つの命令を実行します。スーパースカラーは、サイクルごとに複数の命令を実行できる可能性があることを意味します。たとえば、プロセッサに整数演算用の機能ユニットと浮動小数点用の機能ユニットがある場合、同時に両方を使用して2つの命令を同時に実行しないでください。3つの整数ユニットと2つの浮動小数点ユニットがある場合はどうなりますか?これで、並列実行の可能性がさらに高まります。ただし、実装のためにさらに多くのトランジスタが必要であり、それを確実に動作させるには、はるかに複雑なロジックが必要です。現実の世界では、スーパースカラーは互いに補完し合うため、アウトオブオーダーデザインと組み合わせて使用される傾向があります。