• ベストアンサー

ベクトル型CPUとは?役に立つのでしょうか?

最近、スパコンが、仕分けで話題で興味を持ったのですが、 ベクトル型CPUというのはスカラー型とどう違うのでしょうか?(Wikipediaも仕組みについて具体的なことが書いてなかったので・・・) 単に、複数の処理を同時に行うのがベクトル型のCPUでしょうか?それなら、スカラー型を複数つなげたクラスタによる並列計算と変わらないと思うのですが、何か違うがあるのでしょうか? スカラーCPUはマーケットで成功していてコストパフォーマンスがいいから、ベクトル型CPUが存在する意義がいまいち分かりません。 ベクトル型CPUの仕組みと、その意義について分かりやすく教えていただけると幸いです。

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

  • ベストアンサー
回答No.2

シミュレーション・・というのか学術計算ではベクトルの乗算・・要するに(x1,x2,x3・・)と(y1,y2,y3・・)という数字の組の間でx1・y1+x2・y2+x3・y3・・・・のような乗算と加算を行うという演算が多用されるわけですね. そこで,このようなベクトル単位でのデータフェッチだの演算だのを1命令で「せーの,どん!」で行えるようにしたのがベクトルプロセッサというわけです.x86でもSIMD命令がありますけど,あれをもっと大規模化したようなものと思えばよろしいかと.PCの世界では3Dグラフィックスの高速化のために,グラフィックスチップ側にGPUと呼ばれる演算ユニットを導入しているものが数多くありますが,これも3Dグラフィック用途に特化したベクトルプロセッサの一種ですね. ハードウェア的にはデータのまとめアクセスと積和演算の並列処理ですからパイプライン化もしやすくて性能も稼ぎやすいというのは利点でしょうか. もちろん,この「せーの,どん!」できる演算が多くないと宝の持ち腐れになってしまうわけで,いかにしてベクトル演算器に間断なくデータを投入できるかというのが性能を引き出すポイントです. 現在は汎用CPU(スカラー型ですね)が相当高速かつ安価になってきましたので,ベクトルプロセッサで性能を稼ぐよりもこうした汎用プロセッサを大量に並べて並列演算処理させてしまう方がいいんでない?という方向に向いてますね. 仕分けで話題のものもSPARCベースですからやはりスカラー型でしょう.

その他の回答 (3)

回答No.4

 学校で習うBASIC言語に for~next文というのがあります。配列計算する場合に使うわけですが、その繰り返し命令文をひとつひとつの命令に分けて処理すると速く計算できるのが想像できると思います。そのとき、ひとつのプログラムでメモリを計算制御できるように多数のプロセッサをメモリに割当てしたのがベクトル型です。したがって直接一塊りのメモりを操作しています。その計算した結果を元に、次の計算に速やかに移ることができます。地球環境を計算する場合、時間が刻一刻と変化する場合を考えればわかっていただけると思います。  一方、スカラー型はクラスタのように幾つものコンピュータをネットワークでつないだ使い方ですが、接続されたコンピュータから別のコンピュータの一塊りのメモリを自由に使うことはできないという制限があるのです。個々のCPUが設置されたコンピュータに対してのみメモリを制御することができます。ですから、大きな配列を計算する場合は、計算に必要な配列データを取り込まなければなりません。そして計算が終わったならば配列データを元に戻してあげなければなりません。これは口でいうのは簡単なのですが、他のCPUのことも考えなければなりません。その上で、次の計算に移ることを考えれば複雑さは半端ではありません。  時間系列を配慮しない一度切りの計算にはスカラー型が向き、時間系列を配慮して次から次への計算につながるような使い方をする場合はベクトル型が向いているというわけです。概ね、メモリとCPUが連動しているのがベクトル型、メモリとCPUが分離・不連動なのがスカラー型と分離できるでしょう。ソフトウェアから見た使い易さではベクトル型に軍配が上がるように思います。

参考URL:
http://pc.watch.impress.co.jp/docs/news/20090825_310614.html
white-tiger
質問者

お礼

皆様、 おかげさまで非常に良く理解できたと思います。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

「同じ計算をたくさんのデータに対して行う」, いわゆる SIMD では「スカラ型を複数つなげる」と無駄がでますよね (「同じ計算をする」ことがわかっているなら, デコーダは 1つでいいはず). あと, データをあっちこっちのプロセッサに転送しまくって効率が大暴落する可能性もないわけじゃない. GPGPU とかやりだすと「ベクトル型」といえなくもない.

回答No.1

この辺りを参考に。 http://chikyu-to-umi.com/earth/yo_simu.htm 通常の民生用CPUはスカラ型。 1度に1つの演算しか処理できません。 同時に見えてもタイムシェアリングで同時に見せかけているだけです。 それに対してベクトル型は複数の演算を同時に実行することが出来ます。 >スカラー型を複数つなげたクラスタによる並列計算と変わらないと思うのですが、何か違うがあるのでしょうか? メモリ<=>CPU間と並列CPU間(もしくは並列PC)では速度がまったく違います。 もちろんベクトル型CPUを使用したとしてもクラスタ化などの並列処理は併用するでしょう。 並列処理をもっと根底の部分で行って、もっと高速化しようということでしょうね。

関連するQ&A

専門家に質問してみよう