インテル® Hyperflex™ アーキテクチャー高性能デザイン・ハンドブック

ID 683353
日付 10/04/2021
Public
ドキュメント目次

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を実行し、回路のパフォーマンスを向上させることができます。