スーパースカラー
スーパースカラCPUの設計では、1つのCPU内で命令レベル並列と呼ばれる並列コンピューティングの形態を作り、同じクロックレートでより多くの作業を行うことができるようにしています。これは、CPUが複数の命令を同時に実行する(命令ディスパッチと呼ばれる)ことで、1クロックサイクル中に複数の命令を実行することを意味します。各機能ユニットは、演算論理ユニット(ALU)、浮動小数点ユニット(FPU)、ビットシフタ、乗算器などのように、CPUコア内の実行リソースにすぎない。
ほとんどのスーパースカラCPUもパイプライン化されていますが、パイプライン化されていないスーパースカラCPUやパイプライン化されていないノンスーパースカラCPUもあり得ます。
スーパースカラー技術は、CPUコアのいくつかの特徴によってサポートされています。
- 命令は命令表から出てきます。
- CPUハードウェアは、どの命令がどのデータに依存しているかを調べることができます。
- 1クロックサイクルで複数の命令を読み出すことが可能
スカラープロセッサで実行される各命令は、一度に1つまたは2つのデータ項目を変更するが、ベクトルプロセッサで実行される各命令は、一度に多くのデータ項目を処理する。スーパースカラプロセッサは、この2つの混合物である。
- 各命令は1つのデータ項目を処理します。
- 各CPUコアの内部には重複する機能ユニットが複数存在し、複数の命令が独立したデータ項目を同時に処理するようになっている。
スーパースカラCPUでは、命令ディスパッチャがメモリから命令を読み込み、並列実行可能な命令を決定し、CPU内部で利用可能な複数の重複機能ユニットに命令をディスパッチします。
スーパースカラCPUの設計は、命令ディスパッチャの精度を向上させ、複数の機能ユニットを常にビジー状態に保つことを可能にすることに関係している。2008年現在、すべての汎用CPUはスーパースカラであり、典型的なスーパースカラCPUは、最大4つのALU、2つのFPU、2つのSIMDユニットを含む場合があります。ディスパッチャがすべてのユニットを常時ビジー状態にできないと、CPUの性能が低下してしまいます。
シンプルなスーパースカラパイプライン。一度に2つの命令をフェッチしてディスパッチすることで、1サイクルに最大2つの命令を完了させることができます。
4つのスーパースカラαプロセッサを搭載したCray T3e並列コンピュータのプロセッサボード
制限事項
SuperscalarのCPU設計における性能向上は、2つのことによって制限されています。
- 命令リストの組み込み並列性のレベル
- ディスパッチャとデータの依存性チェックの複雑さと時間的なコスト。
通常のスーパースカラCPU内で無限に高速な依存関係チェックを行っても、命令リスト自体が多くの依存関係を持っていれば、性能向上の可能性も制限されてしまうため、コード内に組み込まれている並列性の量も制限の一つとなります。
ディスパッチャの速度がどれだけ速くても、同時にディスパッチできる命令数には現実的な限界があります。ハードウェアの進歩により、CPUコアあたりの機能ユニット(例: ALU)の数は増えるでしょうが、命令の依存性をチェックする問題は、達成可能なスーパースカラースピッチングの制限がやや小さい限界まで増加します。-- 同時にディスパッチされる命令数は5~6個のオーダーになると思われます。
代替品
- 同時マルチスレッド(Simultaneous Multithreading):SMTと略されることが多いが、これはスーパースカラCPUの全体的な速度を向上させるための技術である。SMTでは、複数の独立したスレッドを実行することで、最新のスーパースカラプロセッサ内で利用可能なリソースをより有効に利用することができます。
- マルチコアプロセッサ:スーパースカラプロセッサは、冗長化された複数の機能ユニットがプロセッサ全体ではない点でマルチコアプロセッサとは異なる。1つのスーパースカラプロセッサは、ALU、整数乗算器、整数シフタ、浮動小数点演算装置(FPU)などの高度な機能ユニットで構成されています。多数の命令を並列に実行できるように、各機能ユニットのバージョンが複数ある場合もある。これは、1コアにつき1スレッドの複数のスレッドからの命令を同時に処理するマルチコアプロセッサとは異なります。
- パイプライン・プロセッサ:スーパースカラ・プロセッサも、複数の命令を様々な段階で同時に実行できるパイプライン・プロセッサとは異なります。
様々な代替技術は互いに排他的なものではなく、1つのプロセッサに組み合わせて使用することができます(そして頻繁に使用されます)。マルチコアプロセッサの中には、ベクトル機能を持つものもあります。
関連ページ
- 並列計算
- 命令レベルの並列性
- 同時マルチスレッド (SMT)
- マルチコアプロセッサ
質問と回答
Q:スーパースカラ技術とは何ですか?
A:スーパースカラ技術とは、基本的な並列計算の一形態で、複数の実行ユニットを同時に使用することにより、1クロックサイクルで複数の命令を処理することができます。
Q: スーパースカラ技術はどのように動作するのですか?
A: スーパースカラ技術では、命令が順番にプロセッサに入ってきて、実行中にデータの依存関係を探し、各クロックサイクルで複数の命令をロードします。
Q:スカラプロセッサーとベクトルプロセッサーの違いは何ですか?
A:スカラプロセッサーでは、命令は通常1つか2つのデータを同時に扱うのに対し、ベクトルプロセッサーでは、命令は通常多くのデータを同時に扱う。スーパースカラ・プロセッサは、1つの命令が1つのデータ項目を処理しますが、複数の命令が同時に実行されるため、プロセッサが一度に扱うデータ項目が多くなります。
Q: スーパースカラ・プロセッサにおいて、正確な命令ディスパッチャはどのような役割を果たすのでしょうか?
A:正確な命令ディスパッチャは、スーパースカラ・プロセッサにとって非常に重要なもので、実行ユニットが常に必要と思われる作業で忙しいことを保証します。もし命令ディスパッチャが正確でなければ、一部の処理を放棄することになり、スケーラープロセッサと同じ速度にならなくなってしまうからです。
Q: 通常のCPUがスーパースカラ化したのは何年か?
A:2008年に通常のCPUはすべてスーパースカラになりました。
Q: 通常のCPUには、何個のALU、FPU、SIMDユニットがあるのですか?
A:通常のCPUでは、ALUが4個、FPUが2個、SIMDが2個まで可能です。