2.4.2.1. 高速クロック・ドメイン
2.4.2.2. ループの再構築
2.4.2.3. コントロール信号のバックプレッシャー
2.4.2.4. FIFOステータス信号によるフロー・コントロール
2.4.2.5. スキッドバッファーを使用したフロー制御
2.4.2.6. リードモディファイライトメモリー
2.4.2.7. カウンターとアキュムレーター
2.4.2.8. ステートマシン
2.4.2.9. メモリー
2.4.2.10. DSPブロック
2.4.2.11. 一般ロジック
2.4.2.12. モジュラスと除算
2.4.2.13. リセット
2.4.2.14. ハードウェアの再利用
2.4.2.15. アルゴリズム要件
2.4.2.16. FIFO
2.4.2.17. 三進加算器
2.4.1.1. Shannonの分解
Shannonの分解は、ハイパー最適化で役割を果たします。シャノンの分解、またはシャノンの展開は、ブール関数を因数分解する方法です。関数は、F = x.Fx + x′Fx′として表現できます。ここで、x.Fxおよびx′Fx′は、xに関する関数Fの正および負の補因子です。(a, b, c, x) = x.(a, b, c, 1) + x′.F(a, b, c, 0)のように、4つの入力を持つ関数を因数分解できます。次の図。 Hyper-Optimizationでは、Shannonの分解によりx信号が入力ロジックのコーンのヘッドにプッシュされ、x信号がロジックコーンを通る最速のパスになります。 x信号は、他のすべての信号を犠牲にして最速のパスになります。Shannonの分解を使用すると、元の関数の面積コストも2倍になります。
図 40. Shannonの分解
図 41. Shannonの分解のロジック削減ロジック・シンセシスでは、次の図に示すように、定数駆動入力を使用し、補因子をわずかに削減することができます。
図 42. 繰り返したShannonの分解次の図は、Shannonの分解を繰り返し使用して、複数の重要な入力信号を持つ関数を分解し、面積コストを増加させる方法を示しています。
Shannonの分解はループのための効果的な最適化テクニックである場合があります。ループ内のロジックに対してShannonの分解を実行すると、ループ内のロジックがループ外に移動します。Compilerは、ループ外に移動されたロジックをパイプラインできるようになります。
図 43. Shannonの分解前のループの例この図は、1つのレジスター、4レベルの組み合わせロジック、および追加の入力を含むループを示しています。ループ内にレジスターを追加すると機能が変更されますが、Shannonの分解を実行することによってループ外にある組合せロジックを移動することができます。
ループ内のレジスターの出力は0または1です。ループにレジスターを供給する組み合わせロジックを複製し、1つのコピーの入力を0に、もう1つのコピーの入力を1に割り当てます。
図 44. Shannonの分解後のループの例そして、ループ内のレジスターは、次の図に示すように、2つのコピーの1つを選択します。
ループ内のロジックに対してShannonの分解を実行すると、ループ内のロジックの量が減ります。Compilerは、ループから削除されたロジックにレジスターのリタイミングまたはHyper-Pipeliningを実行し、回路のパフォーマンスを向上させることができます。