Date: Tue, 26 Oct 99 19:02:16 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:28737] Re: =?ISO-2022-JP?B?GyRCJSwhPCVZJUMlOCUzJWwlLyU3JWclcyRLJEQbKEIg?= =?ISO-2022-JP?B?GyRAGyRCJCQkRiROPEFMZCRHJDkbKEI=?= To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <199910261000.TAA10278@cafe.muraoka.info.waseda.ac.jp> 首藤です。敬称略。 結論: (Java3D などのライブラリだけではなくて) JIT コンパイラも、MMX 命令など、 メディアプロセッサ的な命令群を活用し得る。 [JavaHouse-Brewers:28588] Sirakawa> SIMDについても、各社がいろんな仕様の物をだした結果、 Sirakawa> JavaでもこなれたAPIを与えることができるかもしれません。 石田> もし、今後、仮想マシンがSIMDをサポートし、Java3Dが一般化されれば、 石田> 高速性を要求されるアプリケーション開発も可能になるかもしれませんね。 MMX, SSE, 3D Now! (, Enhanced SSE :-P) 命令など、 SIMD で処理を行う命令は、主にプログラマがアセンブリコード (や C の intrinsics) を直接記述して使うものだということは確かに その通りなのですが [JavaHouse-Brewers:28499] 高木> 仮想マシンがというより、JITコンパイラがですね。byteやshortの配列に対 高木> する処理をいかにマノレチメディア命令を使うようコード生成するかですね。 コンパイラが SIMD の処理を行う命令を扱おうという研究もなされています。 例えば、Pentium Compiler Group (http://www.goof.com/pcg/) の開発している C コンパイラは、MMX 命令を吐くことができます。 (効果はまだ出せていないようですが。) また、なんとまあ驚いたことに、Java の JIT コンパイラに MMX 命令を生成させようという研究もなされています。 こういった論文が手もとにあります。 Intel の Micro-Computer Research Labs. にいる、 並列化コンパイラの世界で有名な人達です。 Aart J. C. Bik, Milind Girkar, Mohammad R. Haghighat, "Incorporating Intel MMX Technology into a Java JIT Compiler", 1ページ目の下にこう書いてあるので、この journal を入手すれば読めるはずです。 accepted for Special issue "Scientific Programming" journal (high performance Java Compilation and Run-time Issues) ネットワーク上で入手可能かどうかは知りません。 きちんと読んでないんですが、vector loop detection という語が見えるので、 高木さんの言う通りです。 [JavaHouse-Brewers:28504] 高木> 「SIMD」という言葉は元々はベクトル型計算機などの計算機アーキテクチャの 高木> 形式を指す語でした。それが最近はもっと広義に捉えられていわゆるマルチメ 高木> ディア命令のことを指すようになったわけですが、そこに存在する両者の類似 高木> 性からもわかるように、ベクトル計算機用の、ループ処理をベクトル処理命令 高木> に変換するベクトル化コンパイラの技術が、マルチメディア命令への変換にも 高木> 応用できるはずです。問題はJava言語の厳密な仕様を満たせるかどうか…。 JIT で MMX、 思いつくだけなら誰でもできますが、実際にやってしまうところが何とも。 SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp