2021-01-01から1ヶ月間の記事一覧

RISC-Vで関数ポインタ呼び出しにjalr t0を使ってはいけない

概要 RISC-Vでは、jalr t0という命令には特別な意味が割り当てられているので、関数ポインタを用いた関数呼び出しのために使うと一部のプロセッサで性能低下を引き起こします。 t0以外のレジスタを使う場合は問題なく動作するので、関数ポインタの格納にはt0…

glibcのexp(x)をいじめる

glibcのexp関数は、倍精度浮動小数点数の指数関数をソフトウェアで計算するものです。 glibcの実装(IBM Accurate Mathematical Libraryの実装を用いたもの)は、おそらく完全精度を達成しています。 完全精度とは、入力がどんな値であっても真の値に最も近…

Unit of Last Place (ULP) の定義について

On the definition of ulp(x) という論文を読んだメモです。 浮動小数点数の誤差を議論するとき、最終桁の重み (Unit of Last Place, ULP) が単位として使われます。 例えば、以下のような使い方をします。 最近接丸めをした場合、その丸め誤差は0.5ULP以下…

CVPシミュレータを解読したメモ

新年になりました。今年もよろしくお願いします。 Value prediction(値予測)の世界的な大会、Second Championship Value Prediction @ HPCA'21というのが開催されているそうです。 値予測というのは投機的実行の一種で、レジスタに書き込まれる値を予測す…