Re: Xbox 360
高津@ドーガです。
記事 <YAS.05May19010638@kirk.is.tsukuba.ac.jp> で
Yasushi Shinjoさんは書きました
> 128ビットのレジスタが128個か。4個の単精度の浮動小数点が4個同
> 時に load できて、何かできるですよね。何でしたっけ。sum of
> square みたいなの。ポリゴンのレンダリングでよく出てくるんで
> したっけ。
3DCGだと、3次元空間というと文字通り3要素があるわけですが、
アフィン変換するときは 4x4 の行列を使いますし、四元数なら4次のベクトル
ですから、8個や16個の浮動小数点を並列処理できるようになるよりは、
4個単位のままでレジスタ数が増えた方が便利だと思います。
4つ組として一番便利なのは、内積・行列の積とかでの、2ベクトルの個々の
要素積の和を求める処理(sum of product) かと思います。2つ入力に同じ
レジスタを指定すれば、sum of square =ベクトルの長さの二乗 になりますし。
ってとこまで書いたところで、ちょっと VMX の命令を調べてみたのですが、
sum of square も sum of product も無いんですね。
4つの浮動小数点演算を同時におこなえますよ、というものばかりで、
4個の浮動小数点を元に何かする命令はありません。
単に、3次・4次のベクトルを扱うのに、4個組なら 1ベクトル=1レジスタで便利、
というところでしょうか。
4x4の行列の積だと、入力と出力合わせて、4要素のベクトルが12個要りますし、
そういう処理をやってると32個ではちょっと心許ないので、レジスタ数を128個に
増やすというのは使ってる側からすると便利だと思います。
問題は、レジスタが増えるとコンテキストスイッチが重くなる、ということですね。
スレッドを固定的にCPUに割り当てるとか、ノンプリエンプティブにスレッドを
切り換えるといったことをしないと、逆に遅くなるでしょうねぇ…
PROJECT TEAM DoGA 高津正道 taka2@doga.jp
TBD00456@nifty.ne.jp
PROJECT TEAM DoGAのホームページ → http://doga.jp/
5月22日(日) 今日のマーフィーの法則 [バン・ロイの第1法則]
忠告の善し悪しを区別できる人は、忠告を必要としていない。
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735