C/C++、Fortran、Juliaなどのコンピュータ言語向けの最新のコンパイラのより有用な機能の1つは、バイナリを生成する前にコードの最適化を実行できることです。 VerilogにFPGAの「ハードウェア」特殊機能を作るための関数を書くとすれば、コンパイラは最適化を実行しますか?具体的な例として、Estrin's scheme for parallelized evaluationを使用する多項式エバリュエーターを設定したいとし、係数の一部が0であるとすれば、コンパイラはそれを見て有効なNOOPを最適化しますか?FPGA言語のコンパイラは最適化を実行しますか?
3
A
答えて
5
はい。あなたの例での最適化は、 "定数伝播"と呼ばれています。ブール式や算術式の最適化については、すべてのコンパイラで同じです。コンパイラは、できる表現を単純化します。別の最適化は「デッドコード削除」です。分岐条件が定数であると判明した場合は、選択されていない分岐を削除し、分岐を無条件にします。しかし、RTLがハードウェア表現に変換された後、最適化プロセスはソフトウェアコンパイラとは大きく異なります。
0
Verilogには、合成時に常に完全にアンロールされるgenerate文のループがあります。
+1
Verilogに書き込む_Any_ループは、生成するかどうかを問わず、ハードウェアに展開する必要があります。 –
関連する問題
- 1. CLR言語の最適化。言語コンパイラVS JITコンパイラ
- 2. コンパイラ述語の最適化
- 3. C++言語では、リストの初期化を使用するとコンパイラの最適化が行われますか?
- 4. JITコンパイラは不要な変数宣言を最適化(インライン化)しますか?
- 5. SitecoreのURLの最適化と言語
- 6. Doポインタはコンパイラの最適化を阻害しますか?
- 7. C/C++コンパイラはこのif文を最適化しますか?
- 8. コンパイラは未使用のプライベートメソッドを最適化しますか?
- 9. CSSのコンパイラの最適化
- 10. コンストラクタのコンパイラの最適化
- 11. C++コンパイラの最適化
- 12. グラム++コンパイラの最適化
- 13. GNUコンパイラの最適化
- 14. Javaコンパイラの最適化
- 15. Visual C++コンパイラの最適化
- 16. Erlangコンパイラの最適化
- 17. C#JITコンパイラはヌルチェックを最適化しますか?
- 18. C++:コンパイラは&変数を最適化しますか?離れて?
- 19. コンパイラはメソッド呼び出しを最適化できますか?
- 20. LLVMはどの最適化を実行しますか?
- 21. MATLABはテールコールの最適化を実行しますか?
- 22. PL/SQLはテール・コールの最適化を実行しますか?
- 23. Fregeはテールコールの最適化を実行しますか?
- 24. Molecular Dynamics Simulatorに最適な言語をプロダクションで実行します。 (Python + Numpy?)
- 25. C#コンパイラ/最適化コマンドラインオプションはJITterに影響しますか?
- 26. 論理プログラミングを使用して最適化する言語
- 27. コンパイラの動的最適化とは
- 28. FPGAをC言語のようにプログラミングできますか?
- 29. Mavenビルド中にJavaコンパイラを最適化しますか?
- 30. Cコンパイラはオブジェクトファイル全体を最適化できますか?
ループに適度な一定数の反復がある場合、コンパイラはそれをハードウェアに展開しますか?この種の言語では、標準の並列アンロール(ループが独立している場合)とシリアルアンロール(各繰り返しがある値を変更している場合)の両方の可能性があるようです。 –
_loops_はハードウェアに存在しません。ハードウェアには手順上の記述が存在しません。 RTLコードのウェイ・ループがハードウェアで実装されるのは、このフォーラムにとっては広すぎるトピックです。 –
これは当てはまりませんか?私はハードウェアの人ではないので、間違っている可能性がありますが、ハードウェアは、減少するカウンタがゼロでなく、「次の反復の準備ができました」フラグが設定されているときに実行される繰り返しを実装できるはずです。それらは可能ではない、あるいは何らかの形で実用的でない(すなわち不安定である)か? –