Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

2.3.3.1. Floating Point Custom Instruction 2 コンポーネント

浮動小数点カスタム命令は、どの Nios II プロセッサー・デザインにも追加できます。浮動小数点除算ハードウェアは、他の命令より多くのリソースを必要とします。Floating Point Hardware 2 コンポーネントは以下の単精度浮動小数点演算をサポートしています。
  • 加算
  • 減算
  • 乗算
  • 除算
  • 平方根
  • 比較
  • 整数変換
  • 最小
  • 最大
  • 否定
  • 絶対

その他の浮動小数点演算 ( 倍精度演算を含む ) は、ソフトウェア・エミュレーションで実装されています。コンポーネントには、次のデバイスリソースを必要とします。

  • 最大 2,500 個の 4 入力 LE
  • 9 x 9 ビット 乗算器
  • 3x M9K メモリー

次の表は、a と b が単精度浮動小数点値とみなされています。

表 4.  Floating Point Custom Instruction 2 演算の概要
演算 2 N 3 サイクル 結果 非正規化数 丸め GCC インターフェイス
fdivs 255 16 a ÷ b 0 にフラッシュ Nearest a / b
fsubs 254 5 a – b 0 にフラッシュ Faithful a – b
fadds 253 5 a + b 0 にフラッシュ Faithful a + b
fmuls 252 4 a x b 0 にフラッシュ Faithful a * b
fsqrts 251 8 0 にフラッシュ Faithful sqrtf() 4
floatis 250 4 int_to_float(a) 適用外 適用外 キャスティング
fixsi 249 2 float_to_int(a) 0 にフラッシュ 切り捨て キャスティング
round 248 2 float_to_int(a) 0 にフラッシュ Nearest lroundf()4
Reserved 234 ~ 247 未定義 未定義      
fmins 233 1 (a < b) ? a : b サポート可能 なし fminf()4
fmaxs 232 1 (a < b) ? b : a サポート可能 なし fmaxf()4
fcmplts 231 1 (a < b) ? 1 : 0 サポート可能 なし a < b
fcmples 230 1 (a ≤ b) ? 1 : 0 サポート可能 なし a <= b
fcmpgts 229 1 (a > b) ? 1 : 0 サポート可能 なし a > b
fcmpges 228 1 (a ≥ b) ? 1 : 0 サポート可能 なし a >= b
fcmpeqs 227 1 (a = b) ? 1 : 0 サポート可能 なし a == b
fcmpnes 226 1 (a ≠ b) ? 1 : 0 サポート可能 なし a != b
fnegs 225 1 -a サポート可能 なし -a
fabss 224 1 |a| サポート可能 なし fabsf()

サイクル列は、命令を実行するのに必要なサイクル数を指定します。組み合わせカスタム命令は 1 サイクルかかります。マルチサイクルのカスタム命令には少なくとも 2 サイクルが必要です。Nios II プロセッサーはカスタム命令からの結果を登録し、ソースオペランド・バイパス・マルチプレクサーの g 線遅延のための別のサイクルを可能にするため、N サイクル・マルチサイクル・カスタム命令はカスタム命令内にN - 2 レジスターステージを待機します。サイクル数には、命令が 2 サイクル以内に結果を使用する場合、マルチサイクル・カスタム命令に続く命令が Nios II/f によってストールされる余分なサイクル ( 最大 2 つ ) は含まれません。これらの余分なサイクルはマルチサイクル命令が遅延命令であるために発生します。

Qsys では、Floating Point Hardware 2 コンポーネントはComponent LibraryタブのEmbedded Processors にあります。

Nios II ソフトウェア・ビルド・ツール (SBT) には、Floating Point Custom Instruction 2 コンポーネントのソフトウェア・サポートが含まれています。Floating Point Custom Instruction 2 コンポーネントがハードウェアに存在する場合、Nios II コンパイラーは浮動小数点演算のカスタム命令と newlib 算術ライブラリーを使用するようにコードをコンパイルします。

2 これらの名前は、GCC がサポートしていない丸め以外の対応する GCC コマンドライン・オプションの名前と一致します。
3 操作での 8 ビットの固定カスタム命令を指定します。
4 Nios II GCC バージョン 4.7.3 は、 -mcustom-<operation> コマンドライン・オプションとこれらのオペレーションのプラグマサポートがあっても、newlib 浮動小数点関数の呼び出しを同等のカスタム命令に確実に置き換えることができません。 代わりに、カスタム命令は GCC の __builtin_custom_* 機能を使用して直接呼び出す必要があります。Floating Point Custom Instruction 2 コンポーネントには、カスタム命令を直接呼び出すために必要な #define マクロを提供する C ヘッダーファイルが含まれています。