14

私が覚えている限りでは、IEEE 754 は、非正規化数をより高速に処理するためのフラッシュ ツー ゼロ モードについて何も述べていませんが、一部のアーキテクチャではこのモードが提供されています (例: http://docs.sun.com/source/806-3568/ncg_lib .html )。

この技術文書の特定のケースでは、非正規化数の標準処理がデフォルトであり、flush-to-zero を明示的に有効にする必要があります。デフォルト モードでは、非正規化数もソフトウェアで処理されるため、処理が遅くなります。

私は、実行時に発生する可能性のある値の正しい (場合によっては不正確な) 範囲を予測しようとする組み込み C 用の静的アナライザーに取り組んでいます。実行時に問題が発生する可能性を排除するために使用できるようにすることを目的としているため (たとえば、重要な組み込みコード)、正しいことを目的としています。これには、分析中に可能なすべての動作をキャプチャする必要があり、したがって、浮動小数点計算中に生成されるすべての可能な値が必要です。

この文脈では、私の質問は 2 つあります。

  1. 組み込みアーキテクチャの中で、flush-to-zero のみを提供するアーキテクチャはありますか? 彼らはおそらく「IEEE 754」として宣伝する権利を必要としないでしょうが、十分に近い IEEE 754 スタイルの浮動小数点演算を提供することができます。

  2. 組み込みコンテキストで両方を提供するアーキテクチャの場合、反応時間をより予測可能にするために、システムによってゼロへのフラッシュがアクティブ化される可能性は低いですか (これらの組み込みシステムの一般的な制約)?

浮動小数点値に使用する区間演算でのゼロへのフラッシュの処理は、それを行う必要があることがわかっている場合は十分に簡単です。私の質問は、それを行う必要があるかどうかです。

4

2 に答える 2

9

はい、両方の質問に答えます。ゼロへのフラッシュのみをサポートするプラットフォームもあれば、ゼロへのフラッシュがデフォルトであるプラットフォームも多数あります。

また、多くの組み込みおよび dsp プラットフォームが「Denormals Are Zero」モードを使用していることにも注意してください。これは、浮動小数点セマンティクスのもう 1 つの欠点です。


FTZ 対 DAZ の詳細な説明を編集します。

FTZ では、演算が通常の演算で非正規化結果を生成する場合、代わりにゼロが返されます。実装によっては常に正のゼロにフラッシュするものもあれば、正または負のゼロにフラッシュするものもあることに注意してください。どちらの動作にも依存しないことがおそらく最善です。

DAZ では、操作への入力が非正規化である場合、その場所にゼロが代入されます。繰り返しますが、どのゼロが置換されるかについての一般的な保証はありません。

これらのモードをサポートする一部の実装では、それらを個別に設定できます (また、一部の実装では 2 つのうちの 1 つだけをサポートします)。そのため、いずれかのモードを個別に、または一緒にモデル化できるようにする必要がある場合があります。

一部の実装では、これら 2 つのモードを「Flush to Zero」に組み合わせていることにも注意してください。たとえば、ARM VFP の「ゼロへのフラッシュ」モードは、FTZ と DAZ の両方です。

于 2010-01-18T02:54:19.650 に答える
2

ARM Cortex コアにはゼロへのフラッシュ オプションがあり、それを無視する方法を理解するのは困難です。繰り返しになりますが、フォーラムからビジネスのアドバイスを受けないでください。あなたの顧客と話してください。

于 2010-01-18T02:42:12.903 に答える