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

アクセスカウンタ

zoom RSS SPARC64系のFMAについて

<<   作成日時 : 2017/08/07 11:56  

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

 きっかけは次の記事を読んで、SPARC64でのFMA(Fused Multiply Add : 積和演算)の実装がSPARC64VIという記述に「いやSPARC64IIIからあったはず」と思ったので確認してみようと思ったこと。

FMA (Fused Multiply-Add) について色んな観点でまとめてみた(小清水さんとコンピューター数学)

 調査結果から先に結論を言うと:
・SPARC64Vはunfused、SPARC64VI以降はfused
・それ以前のSPARC64GPについてはfusedの可能性が高い

 積和演算はx × y + zを一命令で実行する。fusedはこれらの乗算と加算を行った後に丸め処理を行う。unfusedは乗算を行った後に丸めを1回、その結果と加算を行った後にまた丸めを1回行う。

 SPARC64系のマイクロアーキテクチャ実装について整理すると:
・SPARC64III以前はHaLの設計/実装
・SPARC64IVはSPARC64IIIのエンハンス版で富士通の実装
・SPARC64III/SPARC64IVはまとめてSPARC64GPと(富士通により)呼ばれている
・SPARC64V以降は富士通の設計/実装

 SPARC64系はSPARC V9の仕様に加えて独自拡張としてFMA命令を持っている。WikipediaによるとSPARC64VI以降はfusedとあるがこのへんから見ていく。
Multiply–accumulate operation(Wikipedia)
HAL SPARC64(Wikipedia)

□SPARC64VとSPARC64VIについて

SPARC JPS1 Implementation Supplement: Fujitsu SPARC64 V(Fujitsu Limited Release 1.0, 1 July 2002)

All of the operations above are treated as separate multiply and add/subtract
operations in SPARC64 V. That is, a multiply operation is first performed with a
complete rounding step (as if it were a single multiply operation), and then an add/
subtract operation is performed with a complete rounding step (as if it were a single
add/subtract operation). Consequently, at most two rounding errors can be
incurred.


UNIXサーバ用プロセッサ「SPARC64 V」(Revision 1.0 August 2004 富士通株式会社)

画像


 浮動小数点乗算器と浮動小数点加算器は別々になっている。

SPARC64™ VI Extensions(Fujitsu Limited Release 1.3, 27 Mar. 2007)

The instruction is treated as fused multiply and add/subtract operations on SPARC64 VI. That is, a multiply operation is first performed with infinite precision without rounding step, and then an add/subtract operation is performed with a complete rounding step. Consequently, at most one rounding error can be incurred.


 ということで仕様書によるとSPARC64Vはunfused FMA、SPARC64VIはfused FMA。

あと、@ogawatterさんより: 1-GHz HAL SPARC64 Dual Floating Point Unit with RAS Features

□SPARC64GP(SPARC64III/SPARC64IV)について

SPARC64-III User’s Guide(HAL Computer Systems, Inc. May 1998)


A.23.1 IMPDEP2 (Floating-point Multiply-Add/Subtract)
All of the operations above can incur at most one rounding error.



画像


 SPARC64IIIは浮動小数点演算ユニット(FPU)の中に乗算と加算を続けて行うことのできる積和演算器を持っている。この演算による丸めエラーの発生は最大1つであること、また積和演算器の中でわざわざ乗算の後でいったん丸めて加算器に渡すというのは考えにくい。

 あと、傍証として以下を見つけた。
http://interval.louisiana.edu/reliable_computing.archive/reliable_computing.0312
> This is not correct. The IBM RS/6000 systems, shipped in February
> 1990, were the first, and the PowerPC descendants used by IBM and
> Apple include these instructions. Since then, IBM S/390 G5 (1999),
> Intel IA-64 (2000), SGI MIPS IV (R5000, R8000, R10000, and R12000)
> (1992 and later), and SPARC64-GP (2000) have provided the operation.
> HP PA-RISC (1996) provides it, but with double rounding.


 ということでそのものズバリの記述は見つけられなかったがSPARC64IIIの積和演算(FMA)は丸めが1回である可能性が高い。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




SPARC64系のFMAについて 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる