2010年4月21日水曜日

[あとで] ベクトル型のコンピュータとスカラー型のコンピュータ (http://piza.2ch.net/log2/infosys/kako/952/952253788.html)

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
ベクトル型のコンピュータとスカラー型のコンピュータ
1 名前: 情報系の学部生 投稿日: 2000/03/05(日) 19:56
ベクトル型のコンピュータというのは、ベクトル演算器を
持ち、並列計算を行うというように私は認識しております。
ベクトル計算っていうのは、ようはパイプライン処理ですよね?
それだったら今あるほとんどのコンピュータがパイプライン処理に
よる並列処理を実現しているので、ベクトル計算機とは言えないの
でしょうか。
さて、現在のコンピュータにはベクトル型とスカラー型があるそう
です。
と言うことは、明確な定義もあるはずです。
拙い知識で私がたてた仮説を以下に示します。
「CPU内部に、通常の演算を行うスカラー演算器の他にベクトル
演算を行う演算器を持つのがベクトル型のコンピュータである」
この仮説はあっているのでしょうか?
この仮説が正しいとなるとPlayStation2はベクトル型のコンピュ
ータになって まいます。
どなたか詳しい人、間違いを指摘してください。
よろしくお願いします。




2 名前: 名無しさん 投稿日: 2000/03/05(日) 22:54
PS2はベクトルの技術を使ったCPUと言われていますね。
専門家(大学の某先生:権威)もそう言っているから大きくは
間違っていないでしょう。
ですが、CISCとRISCの時と同じで、いずれこう言う区分けが
意味なくなるような気がします。

商売上の話で言えば、ベクトルは既に終わっています。
作っているのは国産のメーカだけ。市場も国内。


3 名前: 情報系の学部生 投稿日: 2000/03/05(日) 23:26
なんか自分の書いた文章に、自分の知りたいことが明確に
書かれていませんでした。
私が知りたいのは「ベクトル型とスカラー型の定義」です。
「パイプライン処理=ベクトル演算」という事にもあまり
自信がないです。


4 名前: 名無しさん 投稿日: 2000/03/06(月) 09:17
パイプラインは命令の各ステージを並行して実行するんじゃなかった?
ベクトルプロセッサは複数の命令を並行して実行するんだよね?
スーパーコンピュータなんてのも汎用機にベクトルプロセッサ付けただけのもんだったよ。
でHPFなんかでは行列演算なんかの各要素の計算を並列に実行すると。



5 名前: 文無し 投稿日: 2000/03/06(月) 11:11
ベクトル計算機はベクトル演算の際に現れる特定のパターンの
演算を高速化するためにパイルライン処理により演算を並列化
する機構ですが最近ではチップの集積度が上がってベクトル以
外の演算でも並列に処理できるような機構が備えられています
これを通常スーパースカラー処理と言います
ちなみにPS2で使用されるプロセッサEmotionEngine
はMIPS−ベースのRISCコアに2個のベクトルプロセッサーが
が搭載され10個の浮動積和演算回路と4個の浮動除算回路並びに初等
関数ユニットから構成されたSIMDプロセッサです
まぁこの構成を見る限りベクトルとかスカラーとか色分けせず両方の良
いところを併せて利用していると言うところですか


6 名前: 名無しさん 投稿日: 2000/03/06(月) 23:10
浮動小数点を扱えるSIMD命令があればベクトル計算機といえなくもない気がする。
MMX Pentiumは怪しいが、浮動小数点ベクトルユニットを
持つEE,P3あたりならベクトル計算機といっても良いかもしれず。

なお日本のスパコンでは、ベクトルパラレルが普通。
ベクトルユニットを持ったCPUを複数積んで並列動作で使う。

スカラー機と明示的に呼ばれるのは、ベクトル型でも
パラレル型でもないマシン(普通のPCとか)。
ただし、ベクトル機でも自動ベクトル化OFFにしたときに
こいつをスカラー性能とかいうこともある。
よって、ベクトル処理でない=スカラー処理で良いかと思う。

あとパイプラインは全然別の話。今のCPUならどれでも使ってる。
各ステージを細かく分断して1クロックで命令を実行できるように
するだけで 厳密には並列処理ではない。
命令は基本的に順に実行される。

この辺で並列に動作したら、スーパースカラというのが普通。
ALUを複数持つ場合がこれに相当。
PS2のEEは整数処理部分は64ビットALUが二つのスーパースカラ
(連動して128ビットALUとしても使えるようであるがよく知らん)
実数部分は、スカラ動作の浮動小数点演算機と、
32ビットx4のベクトル浮動小数点演算機が二つ(VU0,VU1)。
ただしこれらのVUも単なる積和演算機でなくプログラマブルで、
正確には、VLIWとか呼ばれてるアーキテクチャなはず。

結論としてPS2のEEは、整数周りはスーパースカラ、
(もちろん、パイプライン処理も同時に使用)
実数周りはベクトル処理。

1はそんなに外してないと思うけど、パイプラインとベクトル処理を
勘違いしている。この二つは全然別の概念。
パイプラインはMISD、ベクトルはSIMD が基本。
なお、SISDが純スカラー、MIMDがパラレルかと思う。



7 名前: 情報系の学部生 投稿日: 2000/03/07(火) 15:07
ベクトル演算とパイプラインについて間違った理解をしていたよう
なので、並列コンピュータ工学(昭晃堂)という本で調べてみました。
私の理解したところを書きますので間違いがありましたらつっこん
でください。
ベクトル計算機っていうのは、ベクトルレジスタを持ち、ベクトル
レジスタに対する命令を1命令で実行できる。
例をあげると
for i=0 to 100
a[i]=a[i]+3
next i
上記のような命令である。
上の例ではa[i]をベクトルレジスタにいれておいて、いっきに
計算できる。
このようなベクトル演算を行えるということは、ベクトルレジスタ
を持っている必要がある。
ということは、ベクトル計算機っていうのは、ベクトルレジスタ
を持っているということでいいのでしょうか?
それとも、 う明確な定義ができないようになっているのでしょうか
6の人の書かれたベクトルはSIMDっていうのは
複数のレジスタに対する演算を1命令で実行できるからという事で
よろしいですか。



8 名前: 名無しさん 投稿日: 2000/03/07(火) 15:48
レジスタだけでは計算できません。


9 名前: 6 投稿日: 2000/03/08(水) 03:20
7で解釈はあってる。EEはアセンブラで書いてそうだけど、
スパコンでは自動的にforループをベクトル命令に
置き換えてくれるのが普通(自動ベクトル化)。

ベクトル化はデータ並列。もちろんベクトルレジスタだけあっても無意味。
計算機アーキテクチャの教科書でSISD,MISD,SIMD,MIMDについて調べましょう。
情報系の学生ならこの辺は常識。数学でのスカラーとベクトルの概念と同じです。



10 名前: >7 投稿日: 2000/03/12(日) 10:14
メモリから読んで計算してメモリへ書きこむベクトル
計算機も存在しましたよ。古い話ですが。


11 名前: 名無しさん 投稿日: 2000/03/12(日) 10:27
>10
それは、マスクレジスタを使ったやつですか?



12 名前: 名無しさん 投稿日: 2000/03/14(火) 03:35
>6
ベクトル計算機ってのは 演算ユニットがパイプライン化されてる物でなかったか?
いわゆるMIPS2000(RISC)タイプのパイプラインは制御のパイプライン化。

VLIWの定義もちがってる思うが。
VLIWはVery Long Instruction Word architecture の略だろ。
VLIWの場合は、IF, IDは共通で EXステージから並列。

ちなみに
スーパスカラ、おおざぱにいって、制御のパイプラインを複数用意すること。
スーパパイプラインは、制御のパイプラインを細かくすること。

ベクトル計算機について、ヘネパタでしっかり一章さかれているから、それみろや。


13 名前: 投稿日: 2000/03/14(火) 19:10
>12
演算ユニットがパイプライン化されてるのは別にベクトルプロセッサだけとは
限らないと思います。ただ、ベクトル演算を行うと銘打っているプロセッサなら
たいがい演算ユニットでパイプライン処理をしているでしょうけどね。

ベクトルプロセッサというのは、例えば4つとか8つとかの、同一種類の演算を
一個の命令で一気にやってしまうことのできる機構を設けたプロセッサのことを
言うのではないでしょうか。

>VLIWの場合は、IF, IDは共通で EXステージから並列。

これはそうなんですが、一つの長い命令語を共通のIF, IDで処理するのと、
複数の命令を同時に複数のIF, IDで処理するのでは、
どこからどこまでが一つの命令語と解釈するかの違いしかないので、
最近では後者をVLIWとかVLIW的と呼んでしまう とが多いと思います。
こう考えると、スーパースカラとVLIWの違いは
インタロック機構の有無でしかなくなったりするんですね。


14 名前: 12 投稿日: 2000/03/15(水) 22:08
>12
SIMD/ベクトル演算ユニットは次のように区別して使われることが多いようです。

[1] レイテンシの長い演算(浮動小数点演算など)について,演算パイプラインのステージ
数を多くして各ステージの遅延を小さくし、スループットを向上させるような演算ユ
ニットをベクトル演算ユニットといいます。(VPやCRAYなど)
    ~~~~~~~~~~~~~~~~~~~~
[2] SIMDは,複数の同種の演算器を一命令で同時に実行するようなアーキテクチャを
指します。

どちらも一命令で、複数のデータを処理するという点では広義に"SIMD"なのですが、
演算のパイプラインステージを増やすことによって並列性を引き出すのか、演算器を
増やすことによって並列性を引き出すのかという違いがあります。
(制御パイプラインでの スーパパイプラインとスーパスカラ 違いに相当する)

ちなみに、MMXやSSE, SunのVISなどは、ビットスライス処理とかpacked SIMD処理と呼ばれ、
高精度の演算器にちょっとした工夫をすることで、複数の低精度の演算器として使用す
るというものなので、どちらかというと[2]です。(もっともSSEの浮動小数点ユニットは
パイプライン化されているので、[1]的なところもあります)



15 名前: 12 投稿日: 2000/03/15(水) 22:09
14 というわけなので、
>演算ユニットがパイプライン化されてるのは別にベクトルプロセッサだけとは
>限らないと思います。
はその通りですが、

>ただ、ベクトル演算を行うと銘打っているプロセッサなら
>たいがい演算ユニットでパイプライン処理をしているでしょうけどね。
これは[1]の通りなので、「たいがい」ではないと思います。

>ベクトルプロセッサというのは、例えば4つとか8つとかの、同一種類の演算を
>一個の命令で一気にやってしまうことのできる機構を設けたプロセッサのことを
>言うのではないでしょうか。
SIMD処理の真部分集合としてベクトル処理があるので、厳密には正しくないと思い
ます。

アーキテクチャ設計にあたっては、データバスの数や演算器数で、
回路の遅延、面積、消費電力がきまってくるので、 上のように区別されることが
多いです。もっとも、ソフトウェア屋さんやコンパイラ屋さんからみれば、大差な
いかもしれませんが。



16 名前: 12 投稿日: 2000/03/15(水) 22:11
>一つの長い命令語を共通のIF, IDで処理するのと、複数の命令を同時に複数のIF, ID
>で処理するのでは、 どこからどこまでが一つの命令語と解釈するかの違いしかないので、
>(中略)こう考えると、スーパースカラとVLIWの違いはインタロック機構の有無でしかなくなったりするんですね
命令レベル並列(ILP)を引き出すのに、ハードウェアをリッチにするような選択をすると
スーパスカラになり、いっぽうコンパイラにまかせてソフトウェアをリッチにするよう
な選択をするとVLIWのようなアーキテクチャになります。もちろん、折衷的なアーキテ
クチャも存在します。

インタロックのハードウェアの複雑は大変なもので、それらの回路を付加した場合、
消費電力の多さや、面積の大きさなどがなにかと問題になるので、区別されています。




17 名前: 12 投稿日: 2000/03/15(水) 22:15
マジレス書いて,ぼろだしそう。
ぼろがあったら指摘してください。
(16の「複雑は」じゃなくて「複雑さは」だよ
みたいな揚げ足は勘弁してください)


18 名前: 投稿日: 2000/03/15(水) 23:56
んー、単一の命令でいくつもの演算を一気にやってしまうための機能を
ハードウェア的に設けている演算機がベクトル演算機で、
ベクトル演算機を持つプロセッサをベクトルプロセッサと呼ぶのかと
思ってましたがそういうことでもないのですか?

ベクトル処理自体は、別に普通のプロセッサと賢いコンパイラがあればできるので、
ベクトル演算機とか言わないのかなと思ってたのですけど。
何かこっちの理解が間違ってるかも。


19 名前: 6,9だがこんな定義では? 投稿日: 2000/03/16(木) 23:22
ベクトル計算機(ベクトル型スパコン)で高速化されるのは、
配列に対するループ処理(for文)だけである。

それに対して、パイプライン処理やスーパスカラはそれ以外でも並列処理できる。
突き詰めれば、ベクトル=配列なわけで、突き詰めればこれ専用の演算機が
ベクトル演算機ではないか?

それとも、14の[1]は厳密にはパイプラインでベクトル演算機ではないか?

一言で言えば、

「ベクトル演算機=SIMD機」か?
「ベクトル演算機=配列専用演算機」か?

私は厳密な定義としては後者であるが、
大まかには前者の定義でも良いと考える。

MMXのような整数専用演算機はベクトル演算機でない(普通実数用に作る)ため、
SIMD→ベクトル演算機は真でない。

ベクトル演 機だからといって、SIMDとは限らないため、
ベクトル演算機→SIMDも真でない。

が、大まかにいって、ベクトル演算機=SIMDである。



20 名前: お前ら全部、落第 投稿日: 2000/04/26(水) 07:43
お前ら情報系の学生というなら全員どうしようもないから、大学やめろ。
世間の信用を失ってしまう。
だいたい、ヘネパタは非専門家にとっては良い本だが、専門家にとっては入門書に過ぎない。
説明を分かりやすくするために、エイヤッと言い切ってしまったり、難しくなりそうだと肝心なことを省いたりしている。
つまり、分かったつもりになりやすいが、それだけでは本当のことは修得できない本だ。
講義のテキストに使っている大学では、最初にそういう注意があったはずだ。
ヘネシー&パターソンが書いたものを典拠にするなら"quantiive approach 2nd edition"が当たり前だろうが。
お前ら本当に情報系の大学なのか?
そうだとしたら、ハズレ大学だな。


21 名前: 名無しさん 投稿日: 2000/04/27(木) 00:36
普通、ベクトル型というと
ベクトルレジスタ(64bitx256)とかに
メモリから(キャッシュからというのはあまりない)
(ダブルバッファリングとかして)
値をもってきて(オペランドなら2組)、
複数ある(256個とかある)演算器がいっぺんに計算して、
結果をベクトルレジスタにいれて、
メモリに書き戻すタイプのものを指します。
厳密な定義は無いのでベクトル型/SIMDの区分を比較しても
無意味です。
ヘネパタはいい本だけれど2nd ed.は邦訳がない。



22 名前: 21 投稿日: 2000/04/27(木) 00:43
上のははでなベクトルプロセッサで、
地味なもの(Power PCのG4のベクトルレジスタ周辺)は
キャッシュも使っています。





23 名前: 名無しさん 投稿日: 2000/04/27(木) 04:27
>20
というか、ヘネシー&パターソンの話を持ち出した書き込みに訂正レスがたくさんついた
というのがこのスレッドの流れなのではないかと。

>21
それでいいんですよね。
そもそも、データや命令流の概念の話であるSIMDやら何やらと、
実装レベルでの手法の一つであるベクトルプロセッサを横ならびに議論する感覚が
よく分からないってのがありますが。


24 名前: >20 投稿日: 2000/04/29(土) 04:59
ヘネパタだろうが何だろうが、なかば埃をかぶったような古典(失礼)専門書を読んで
云々できるような内容の話をしてるわけではないと思ったのだけど。


0 件のコメント:

コメントを投稿