[Suzaku:00397] Re: suzaku-v の浮動小数点について
Suzuki, Ryouzaburou
email@hidden
2005年 8月 22日 (月) 10:20:38 JST
<email@hidden> の、
"[Suzaku:00395] Re: suzaku-vの浮動小数点について" において、
"Yasushi SHOJI <email@hidden>"さんは書きました:
> At Thu, 18 Aug 2005 12:10:11 +0900,
> 村上 健次 wrote:
> >
> > 以前の話となってしまいますが、浮動小数点の対応ですが、
> > 進んでいますでしょうか?
>
> ごめんなさい。遅れています。2.6系で float/doubleの対応を行う予定ですが
> よいでしょうか? 2.4系が必要ですか?
> --
> yashi
シンビーの鈴木です。
もしかしたら、以前に議論済みかもしれませんが、、、個人的な意見を
書かせていただきます。
カーネルによる「float/doubleの対応」の事だと思いますが、どうなん
でしょう?個人的には Linux としては必要だと思いますが、組み込み
という面を考えるとアプリケーション側は no-fpu でコンパイルするほ
うがよいと思います。
no-fpu での gcc/glibc 等の環境の構築は crosstool で作ることが出
来ます。
http://www.penguinppc.org/dev/crosstool.php
sh demo-ppc405.sh
を使えば作れます。必要なファイルを方々からインターネット経由でと
ってこようとするので注意が必要です。このシェルを動かすのに環境変
数の設定もした気がするけど、ちょっとわすれちゃいました。
+++++++
FPU を使ったプログラムを 405 系のコアで動かすと、
1) FPU 命令実行時に例外が発生
2) カーネル内で例外処理に対応。FPU の動作をエミュレートする
3) アプリケーションに処理が戻る。アプリケーション側では FPU が無
かったことを意識しないですむ。
という処理になるかと思います。当然、本来不必要な例外処理を通るの
で、全体としてはパフォーマンスが落ちると思います。浮動小数点演算
ではパフォーマンスが重要かと思いますので、-mno-fpu オプションで
コンパイルし、FPU を使わないようなアプリケーションにする方がよい
と思います。
カーネルが FPU をエミュレートするのは互換性のためだと思います。
例えば、FPU を使った実行オブジェクトしかないとか、なんらかの都合
でリコンパイルする手間が大変あるいはコストがかかる、などの場合に、
カーネルが FPU をエミュレートしてくれると大変助かります。
もし、全部リコンパイル可能な環境があるなら、-mno-fpu を個人的に
はお勧めします。まぁ、技術的以外の諸事情で使えないという話はよく
あるので、なんとも言えませんが。
+++++++
ところで、2.4 系のカーネルソースを読むとあたかも FPU が無いとき
の処理があるように見えるのですが、これはちゃんと動いてないようで
すね。なぜでしょう?405 系の先祖はどうやら MontaVista の IBM の
ボード用にポーティングしたもののようですが、オリジナルの移植ミス
ですかね?それとも、ソースだけあって、中途半端なものが配布されて
いる PPC 全体の問題なのでしょうか?
Virtex-4 になると、浮動小数点のコアが FPGA で提供されるようです。
非常に興味深いところです。
--
鈴木量三朗@東京
email@hidden
suzaku メーリングリストの案内