竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS 80x87と68881/2 定数ロードの調査

<<   作成日時 : 2009/12/01 21:29   >>

ブログ気持玉 0 / トラックバック 0 / コメント 3

 浮動小数点のコプロセッサの、しかも定数ロード縛りの調査とは。

モトローラ 68881/68882 FP0〜FP7の80ビットレジスタを持つ。68020/68030プロセッサに限らず接続が簡単で、68000を始めFM-11(68B09E)やPC9801への接続例あり。
・FLOADC命令 定数番号により22個の定数をFPnにロードできる。
定数番号 値
$00 π
$0B Log10(2)
$0C e
$0D log2(e)
$0E log10(e)
$0F 0.0
$30 ln(2)
$31 ln(10)
$32 10E0 = 1.0
$33 10E1
$34 10E2
$35 10E4
$36 10E8
$37 10E16
$38 10E32
$39 10E64
$3A 10E128
$3B 10E256
$3C 10E512
$3D 10E1024
$3E 10E2048
$3F 10E4096
その他 未定義

 丸めに関する記述がなかったが、拡張精度(80bit)で扱うので倍精度、単精度に丸めて落とす時には問題ないのだろう。

インテル80x87(8087,80287,80387及び互換チップ) 数値はスタック上で扱う。
定数設定命令
・FLDL2E log2(e)
・FLDL2T log2(10)
・FLDLG2 log10(2)
・FLDLN2 ln(2)
・FLDPI π
・FLDZ +0.0
・FLD1 +1.0

 FLDZ,FLD1を除き丸めの影響を受ける。

log10(2)、log2(e)、ln(2)、π、0.0、1.0 が共通している。10進、2進を扱う関係で対数に関する定数が入っている。
両方のコプロセッサとも持っていないが0.0、1.0は積和演算(FMA)で乗算のみ、加算のみをさせるときに便利。IA-64は浮動小数点レジスタに0.0レジスタと1.0レジスタを持っている。
コプロセッサは浮動小数点演算のCISCだ。RISC系プロセッサのすべては定数ロードも超越関数も持っていない。平方根はあるがこれは除算回路と実装が似ているからついでだろう。

参考資料:
Oh!FM 1988年1月号 浮動小数点加速カードの製作
80x86/80x87 ファミリー・テクニカルハンドブック

80x86 80x87―ファミリー・テクニカルハンドブック80x86 80x87―ファミリー・テクニカルハンドブック
槌田 浩一

技術評論社 1993-11
売り上げランキング : 1088198

Amazonで詳しく見る
by G-Tools

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(3件)

内 容 ニックネーム/日時
SPARC (V9そのものではないですが、UltraSparc各種) には、
浮動小数定数レジスタこそ無いですが、
浮動小数定数ロード命令 fzero(+0.0), fone(+1.0) があります。

平方根は「ついで」でしょうけど、除算も含めておそらくベンチマーク(SPECcpu)対策ではないかと思います。
m.ukai
2009/12/03 11:21
fone は 1.0 ではなく all-1 (浮動小数点数としてはQNaNかな) でした。失礼。
m.ukai
2009/12/03 12:08
ありがとうございます。SPARC V9は定数ロード命令はないと思い込んでいました。
結局、浮動小数点定数は数学上の定数(πやe)、logで10進-2進-自然対数の変換をするためのあらかじめ計算した数(ln(2)など)、0,1,-1と±∞、NaNくらいでしょうか。
houmei
2009/12/04 14:14

コメントする help

ニックネーム
URL(任意)
本 文




80x87と68881/2 定数ロードの調査 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる