スーパースカラーとは

初期のコンピューターは完全にシーケンシャルでした。 プロセッサが受け取った各命令は、次の命令を開始する前に完全に完了する必要がありました。 ほとんどの命令には、命令フェッチ、命令デコード、実行、メモリ アクセス、ライトバックの 5 つの段階があります。 これらのステージはそれぞれ、完了する必要がある命令を取得し、操作を値から分離します。 操作を実行し、結果が書き込まれるレジスタを開き、開いたレジスタに結果を書き込みます。 登録。

これらの各段階は、完了するまでに 1 サイクルかかります。 残念ながら、データがレジスタにない場合は、CPU キャッシュまたはシステム RAM から要求する必要があります。 これははるかに遅く、数十または数百のクロック サイクルのレイテンシが追加されます。 その間、他のデータや命令を処理できないため、他のすべての処理は待機する必要があります。 このタイプのプロセッサ設計は、クロック サイクルごとに実行される命令が 1 つ未満であるため、サブスカラーと呼ばれます。

パイプラインのないサブスカラー プロセッサでは、各命令の各部分が順番に実行されます。 この設計では、サイクルごとに完了する命令は 1 つ未満しか達成できません。

スカラーへのパイプライン処理

システム パイプラインを適用することで、スカラー プロセッサを実現できます。 実行される命令の 5 つのステージのそれぞれは、実際のプロセッサ コアのハードウェアの異なるビットで実行されます。 したがって、各ステージのハードウェアに入力するデータに注意すれば、サイクルごとに各ステ​​ージをビジー状態に保つことができます。 完璧な世界では、これにより 5 倍の速度が得られ、プロセッサが完全にスカラーになり、サイクルごとに完全な命令が実行される可能性があります。

スカラー パイプライン プロセッサでは、命令実行の各ステージをクロック サイクルごとに 1 回実行できます。 これにより、サイクルごとに 1 つの命令が完了する最大スループットが可能になります。

実際には、プログラムは複雑で、スループットが低下します。 たとえば、「a = b + c」と「d = e + f」という 2 つの加算命令がある場合、これらは問題なくパイプラインで実行できます。 ただし、「a = b + c」の後に「d = a + e」が続く場合は、問題があります。 これらの 2 つの命令が互いに直接続いていると仮定すると、「a」の新しい値を計算するプロセスは完了していません。 ましてや、2 番目の命令が「a」の古い値を読み取って、 「ド」。

この動作は、次の命令を分析し、別の命令に依存する命令が連続して実行されないようにするディスパッチャを含めることで対抗できます。 これを修正するために、実際にはプログラムを間違った順序で実行します。 多くの命令は必ずしも前の命令の結果に依存していないため、これは機能します。

パイプラインをスーパースカラーに拡張する

スーパースカラー プロセッサは、サイクルごとに複数の完全な命令を実行できます。 これを行う 1 つの方法は、パイプラインを拡張して、各ステージを処理できるハードウェアのビットが 2 つ以上になるようにすることです。 このようにして、各サイクルのパイプラインの各ステージに 2 つの命令を含めることができます。 これにより、ハードウェアが二重化されるため、明らかに設計の複雑さが増しますが、優れたパフォーマンスのスケーリングの可能性が提供されます。

スーパースカラー パイプライン プロセッサでは、各サイクルのパイプラインの各ステージに複数の命令を含めることができます。 これにより、サイクルごとに複数の完了した命令の最大命令スループットが可能になります。

ただし、パイプラインの増加によるパフォーマンスの向上は、これまでのところ効率的にスケーリングするだけです。 熱およびサイズの制約により、いくつかの制限が課せられます。 また、スケジューリングがかなり複雑になります。 効率的なディスパッチャーは、2 つの命令セットのいずれも処理中の他の命令の結果に依存しないようにする必要があるため、さらに重要になっています。

分岐予測子はディスパッチャの一部であり、プロセッサのスーパースケーラが高度になるほど重要性が増します。 一部の命令には 2 つの潜在的な結果があり、それぞれが異なる次の命令につながる可能性があります。 簡単な例は「if」ステートメントです。 「これが本当ならあれをし、そうでなければこの別のことをする」. 分岐予測子は、分岐操作の結果を予測しようとします。 次に、予想される結果に従って命令を事前にスケジュールし、実行します。

最新の分岐予測器には多くの複雑なロジックがあり、分岐予測の成功率は 98% 程度になります。 予測が正しければ、実際の結果を待つために浪費される可能性のある時間を節約できます。 命令とその結果はすべて破棄され、真の命令が代わりに実行されます。 待った。 したがって、予測の成功率が高いと、パフォーマンスが著しく向上します。

結論

コンピュータ プロセッサは、クロック サイクルごとに複数の命令を実行できる場合、スーパースカラーと見なされます。 初期のコンピューターは完全にシーケンシャルで、一度に 1 つの命令しか実行しませんでした。 これは、各命令が完了するまでに 1 サイクル以上かかることを意味していたため、これらのプロセッサはサブスカラーでした。 命令の各ステージでステージ固有のハードウェアを使用できるようにする基本的なパイプラインは、クロック サイクルごとに最大 1 つの命令を実行できるため、スカラーになります。

個々の命令が 1 つのクロック サイクルで完全に処理されるわけではないことに注意してください。 それでも少なくとも 5 サイクルはかかります。 ただし、複数の命令を同時にパイプラインに入れることができます。 これにより、サイクルごとに 1 つまたは複数の完了した命令のスループットが可能になります。

スーパースケーラーを、ハイパースケール コンピューティング リソースを提供できる企業を指すハイパースケーラーと混同しないでください。 ハイパースケール コンピューティングには、コンピューティング、メモリ、ネットワーク帯域幅、ストレージなどのハードウェア リソースを需要に応じてシームレスにスケーリングする機能が含まれています。 これは通常、大規模なデータ センターやクラウド コンピューティング環境で見られます。