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

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

5.2.2.1. 乗算および除算の性能

Nios II/f コアは、次のハードウェア・マルチプライヤーのオプションがあります。

  • DSP ブロック—ターゲットデバイスで使用可能な DSP ブロック・マルチプライヤーを含みます。このオプションは、32 ビットの乗算をサポートする ハードウェア・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
  • エンベデッド・マルチプライヤー—ターゲットデバイスで使用可能な専用のエンベデッド・マルチプライヤーを含みます。このオプションは、エンベデッド・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
  • ロジックエレメント—ロジックエレメント (LE) リソースから構築されたハードウェア・マルチプライヤーを含みます。
  • なし—ハードウェア・マルチプライヤーを含みません。この場合、乗算演算はソフトウェアーでエミューレートされます。

Nios II/f コアでは、ALU の LE ベースの除算回路を含むハードウェア除算オプションも提供しています。

ALU オプションを含めると、1 つ以上の演算命令の性能が向上します。

注: エンベデッド・マルチプライヤーの性能はターゲット FPGA ファミリーにより異なります。
表 67.  Nios II/f コアにおけるハードウェア乗算および除算の概要
ALU オプション ハードウェアの詳細 命令ごとのサイクル レイテンシー・サイクルの結果 サポートされる命令
ハードウェア乗算および除算なし 乗算および除算命令は例外を生成する なし
ロジック・エレメント 32×4 ビット乗算器を含む ALU 11 +2 mulmuli
32 ビット乗算器 32×32 ビット乗算器を含む ALU 1 +2 mulmulimulxssmulxsumulxuu
16 ビット乗算器 16×16 ビット乗算器を含む ALU 1 +2 mulmuli
16 ビット乗算器 4 つの 16×16ビット乗算器を含む ALU 2 +2 mulmulimulxssmulxsumulxuu
ハードウェア除算 SRT Radix-2 除算回路を含む ALU 35 +2 divdivu

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)