3.4.2.1. status レジスター
3.4.2.2. estatus レジスター
3.4.2.3. bstatus レジスター
3.4.2.4. ienable レジスター
3.4.2.5. ipending レジスター
3.4.2.6. cpuid レジスター
3.4.2.7. exception レジスター
3.4.2.8. pteaddr レジスター
3.4.2.9. tlbacc レジスター
3.4.2.10. tlbmisc レジスター
3.4.2.11. badaddr レジスター
3.4.2.12. config レジスター
3.4.2.13. mpubase レジスター
3.4.2.14. mpuacc レジスター
8.5.1. add
8.5.2. addi
8.5.3. and
8.5.4. andhi
8.5.5. andi
8.5.6. beq
8.5.7. bge
8.5.8. bgeu
8.5.9. bgt
8.5.10. bgtu
8.5.11. ble
8.5.12. bleu
8.5.13. blt
8.5.14. bltu
8.5.15. bne
8.5.16. br
8.5.17. break
8.5.18. bret
8.5.19. call
8.5.20. callr
8.5.21. cmpeq
8.5.22. cmpeqi
8.5.23. cmpge
8.5.24. cmpgei
8.5.25. cmpgeu
8.5.26. cmpgeui
8.5.27. cmpgt
8.5.28. cmpgti
8.5.29. cmpgtu
8.5.30. cmpgtui
8.5.31. cmple
8.5.32. cmplei
8.5.33. cmpleu
8.5.34. cmpleui
8.5.35. cmplt
8.5.36. cmplti
8.5.37. cmpltu
8.5.38. cmpltui
8.5.39. cmpne
8.5.40. cmpnei
8.5.41. custom
8.5.42. div
8.5.43. divu
8.5.44. eret
8.5.45. flushd
8.5.46. flushda
8.5.47. flushi
8.5.48. flushp
8.5.49. initd
8.5.50. initda
8.5.51. initi
8.5.52. jmp
8.5.53. jmpi
8.5.54. ldb / ldbio
8.5.55. ldbu / ldbuio
8.5.56. ldh / ldhio
8.5.57. ldhu / ldhuio
8.5.58. ldw / ldwio
8.5.59. mov
8.5.60. movhi
8.5.61. movi
8.5.62. movia
8.5.63. movui
8.5.64. mul
8.5.65. muli
8.5.66. mulxss
8.5.67. mulxsu
8.5.68. mulxuu
8.5.69. nextpc
8.5.70. nop
8.5.71. nor
8.5.72. or
8.5.73. orhi
8.5.74. ori
8.5.75. rdctl
8.5.76. rdprs
8.5.77. ret
8.5.78. rol
8.5.79. roli
8.5.80. ror
8.5.81. sll
8.5.82. slli
8.5.83. sra
8.5.84. srai
8.5.85. srl
8.5.86. srli
8.5.87. stb / stbio l
8.5.88. sth / sthio
8.5.89. stw / stwio
8.5.90. sub
8.5.91. subi
8.5.92. sync
8.5.93. trap
8.5.94. wrctl
8.5.95. wrprs
8.5.96. xor
8.5.97. xorhi
8.5.98. xori
5.2.2.1. 乗算および除算の性能
Nios II/f コアは、次のハードウェア・マルチプライヤーのオプションがあります。
- DSP ブロック—ターゲットデバイスで使用可能な DSP ブロック・マルチプライヤーを含みます。このオプションは、32 ビットの乗算をサポートする ハードウェア・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
- エンベデッド・マルチプライヤー—ターゲットデバイスで使用可能な専用のエンベデッド・マルチプライヤーを含みます。このオプションは、エンベデッド・マルチプライヤーを備えたアルテラ FPGA でのみ使用可能です。
- ロジックエレメント—ロジックエレメント (LE) リソースから構築されたハードウェア・マルチプライヤーを含みます。
- なし—ハードウェア・マルチプライヤーを含みません。この場合、乗算演算はソフトウェアーでエミューレートされます。
Nios II/f コアでは、ALU の LE ベースの除算回路を含むハードウェア除算オプションも提供しています。
ALU オプションを含めると、1 つ以上の演算命令の性能が向上します。
注: エンベデッド・マルチプライヤーの性能はターゲット FPGA ファミリーにより異なります。
| 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)