インテルのみ表示可能 — GUID: iga1420656483984
Ixiasoft
インテルのみ表示可能 — GUID: iga1420656483984
Ixiasoft
5.2.2.1. 乗算および除算の性能
Nios II/f コアは、次のハードウェア・マルチプライヤーのオプションがあります。
- DSP ブロック—ターゲットデバイスで使用可能な DSP ブロック・マルチプライヤーを含みます。このオプションは、32 ビットの乗算をサポートする ハードウェア・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
- エンベデッド・マルチプライヤー—ターゲットデバイスで使用可能な専用のエンベデッド・マルチプライヤーを含みます。このオプションは、エンベデッド・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
- ロジックエレメント—ロジックエレメント (LE) リソースから構築されたハードウェア・マルチプライヤーを含みます。
- なし—ハードウェア・マルチプライヤーを含みません。この場合、乗算演算はソフトウェアーでエミューレートされます。
Nios II/f コアでは、ALU の LE ベースの除算回路を含むハードウェア除算オプションも提供しています。
ALU オプションを含めると、1 つ以上の演算命令の性能が向上します。
ALU オプション | ハードウェアの詳細 | 命令ごとのサイクル | レイテンシー・サイクルの結果 | サポートされる命令 |
---|---|---|---|---|
ハードウェア乗算および除算なし | 乗算および除算命令は例外を生成する | – | – | なし |
ロジック・エレメント | 32×4 ビット乗算器を含む ALU | 11 | +2 | mul、muli |
32 ビット乗算器 | 32×32 ビット乗算器を含む ALU | 1 | +2 | mul、muli、mulxss、mulxsu、mulxuu |
16 ビット乗算器 | 16×16 ビット乗算器を含む ALU | 1 | +2 | mul、muli |
16 ビット乗算器 | 4 つの 16×16ビット乗算器を含む ALU | 2 | +2 | mul、muli、mulxss、mulxsu、mulxuu |
ハードウェア除算 | SRT Radix-2 除算回路を含む ALU | 35 | +2 | div、divu |
1 命令あたりのサイクル値は、ALU が命令をディスパッチして各結果を生成できる最大レートを決定します。レイテンシー値は、結果がいつ使用可能になるかを判断します。バックツーバック命令とオペランド間の結果にデータ依存性がない場合、レイテンシーはスループットに影響しません。ただし、命令が以前の命令の結果に依存する場合、プロセッサーは結果が準備完了するまで結果レイーテンシー・サイクルを停止します。
次のコード例では、乗算演算 (1 命令サイクルと 2 回の結果レイテンシー・サイクル ) の直後に、乗算の結果を使用する加算演算が続きます。Nios II/f コアでは、ほとんどの ALU 命令と同様に、addi命令は 1 サイクルで実行されます。ただし、このコード例ではaddi命令の実行は乗算演算が完了するまで 2 サイクル追加されます。
mul r1, r2, r3 ; r1 = r2 * r3
addi r1, r1, 100 ; r1 = r1 + 100 (Depends on result of mul)
対照的に、次のコードはプロセッサーを停止させません。
mul r1, r2, r3 ; r1 = r2 * r3
or r5, r5, r6 ; No dependency on previous results
or r7, r7, r8 ; No dependency on previous results
addi r1, r1, 100 ; r1 = r1 + 100 (Depends on result of mul)