パイプライン処理とは、1つの命令をいくつかのステップに分け、各ステップに専用のハードウェアを設け、それぞれのハードウェアを並列かつ独立に動作させる方式です。それぞれのハードウェアは決められた処理しか行いませんが、必ず1クロックサイクルで処理を終わり、その結果を次のハードウェアに送ります。このハードウェアのつながりで命令を次々と処理すると、最後の演算結果は、必ず1クロックサイクル毎に出すことができますので、見かけ上1命令が1クロックサイクルで実行されることになります。
各ハードウェアの数をパイプラインの段数と呼びます。図2は6段パイプラインのハードウェアのイメージとパイプラインのシーケンスを、クロック基準に合わせて記述した例です。
スーパースカラはパイプライン処理のハードウェアを複数個並べて、同時に複数の命令を実行する方式です。ただし、単純に同じ回路を複数個並べるとハードウェアが大きくなり効率が悪いので、必要に応じた機能を複数個並列処理するようにします。
命令をフェッチする回路は複数命令分を同時に行えるようにします。命令デコード回路も複数命令を同時にデコードするようにします。
データ処理のハードウェアに関しては、処理内容に応じて、異なる処理のハードウェアを準備します。例えばデータを転送するだけのロード/ストアー命令にALUは必要ありませんので、ALUと別経路でのハードウェアを設けます。また、複雑な算術演算(積和演算など)はALUだけでは実行できないので、別のハードウェアを設けてALUとは並列に演算するようにします。図3にデュアルのスーパースカラの概念図を示します。
このように、実際のスーパースカラでは、命令の種類によって、各演算を処理するハードウェアを並列に設けています。具体例を次の章で紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.