• ベストアンサー

VLIWとスーパースカラについて

VLIWの作りやすさとスーパースカラの作りにくさについて教えてください。 なるべく詳しい回答をお願いします。 よろしくお願いします(m_m)

質問者が選んだベストアンサー

  • ベストアンサー
  • parts
  • ベストアンサー率62% (6366/10151)
回答No.1

詳しい回答が欲しいのに、この質問はちょっと・・・ね。本当にこの質問で知りたいなら、図書館にでも出向いて調べるのが妥当です。 SuperScalarは、スーパースケーラーとも言われます。 単純に実行パイプの数を増やす手法で、同時発行する命令を増やします。ただし、命令自体は、プロセッサに直列で入力されるため、それに沿ってどの命令とどの命令を並列で実行するかの計算が必要です。 同時実行できる命令は常に決まった条件に沿っている必要があり、その条件を超えて全ての命令を同時に実行できるわけではない。 (何でも同時に処理できるわけではないのは例えば、ある計算をするという命令と、結果を出力するという命令を一緒に処理したり、その結果を基に次の命令を出すという命令を同時に実行できない。結果はあくまで最初の命令が終わって結果が出てから出力するという命令がなければ処理できませんからね・・・) また、実行順序も正しくしなければ、正常に先に進めないこともある。そのため、スカラ型の演算子では実行予測(スケジューラー)を用い、実行する命令の順序をあらかじめ予測し、決めておく必要がある。また、同時に実行パイプに送り込んではならない命令を外す必要もある。 これに、失敗すると一度実行を停止し再度予測をし直すことになり、処理に時間を食う。 そのため、実行予測がプロセッサの処理において重要な地位を占めることになる。そこで、スカラ型では予測用のダイに使う半導体密度が大きくなりやすいのが特徴でその分、プロセッサの構造が複雑となる。そのため、ハードウェア面ではVLIWを用いたプロセッサより構造が複雑になる場合が多い。 これは、x86演算子やPower4などのプロセッサ技術に採用されており、ソフトウェアを使う上では最も使い易く製造しやすいのが特徴。 対して、VLIWは命令実行ユニットは最初から並列の命令をプロセッサ側に送れるように、プログラミング上で設定することで、この実行予測の必要性がなくなっています。そのため、プロセッサの半導体規模自体は節約できますし、並列処理をプロセッサでは直感的に行えます。 最近は、この利点から消費電力を減らすことなどを目的としたプロセッサに使われます。 しかし、それには大きな欠点もあります。 まず、最初に処理が単数もしくはプロセッサの並列実行最大数より少ないソフトなどを実行するときには、IPCが低下することがあります。そのため、パフォーマンスが並列実行度が低いソフトでは低下し、プロセッサリソースを無駄にします。 次に、命令自体を並列実行できる長い命令長にする必要があり、CPUプラットフォームに合わせたプログラミング命令の最適化(コンパイル)が必須です。これが、問題でVLIWでは実行ユニットの並列処理数を増やすと互換を失いますからね。また、直列型スケーラー命令で出来たプログラミングを使う場合にも最適化は必要です。 あらかじめ、並列の命令を実行できるようプログラミングし直す方法。(Intelの64bitプロセッサアイテニアムがこれ、32bit、x86にCrusoeに似たステップを踏む)この場合は、プラットフォーム自体が全く新しくなるため、ソフトウェアも既存のものは使えないが、フルパフォーマンスを発揮できる。 もう一つは、直列命令長の命令をソフトウェアで並列にコンパイルしVLIWエンコードしてからプロセッサで処理させる手法(トランスメタのCrusoeがCMSを用いこれを使っている)の2つがある。この場合は、変換するコンパイラソフトの変換精度によって性能が左右される。 ソフトを使うという意味で考えるとまだ、作り易いプロセッサではないが、ハードウェア面では単純で良い。 これは、x86を基準に記載しています。 作りやすい、作りにくいはあくまで何らかのプラットフォームを基準にして考えないとダメですし、ハードウェアだけで考えたときに作りやすいか、ソフトウェアもひっくるめて使えるようになるまでの段階で作りやすいかはまた別ですからね。 私は最近ミスが多いですから、当てにはならないかも知れませんが・・・参考にしてください。

関連するQ&A