(57)【要約】いくつかの実施形態において、パイプライン変換を通じてシーケンシャルネットワークアプリケーションを自動的に並列化する方法及び装置が記載される。一実施形態において、その方法は、ネットワークプロセッサをＤステージプロセッサパイプラインに構成することを含む。構成されると、シーケンシャルネットワークアプリケーションプログラムは複数のＤパイプラインステージに変換される。変換されると、ＤパイプラインステージはＤステージプロセッサパイプライン内でパラレルに実行される。一実施形態において、シーケンシャルアプリケーションプログラムの変換は、シーケンシャルネットワークプログラムをフローネットワークモデルとしてモデリングし、複数の予備のパイプラインステージへとフローネットワークモデルから選択することによって実行される。他の複数の実施形態が記載及び請求される。
2007511835.tif 000002
【特許請求の範囲】
【請求項１】
１以上のプロセッサをＤステージのプロセッサパイプラインに配置する段階と、
１つのシーケンシャルアプリケーションプログラムを複数のＤパイプラインステージに変換する段階と、
前記複数のＤパイプラインステージを、前記Ｄステージのプロセッサパイプライン内でパラレルに実行する段階と
を備える方法。
【請求項２】
前記シーケンシャルアプリケーションプログラムを変換する段階は、
前記シーケンシャルアプリケーションプログラムについて１つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルから複数の予備のパイプラインステージを選択する段階と、
前記複数のＤパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変更する段階と
を有する請求項１に記載の方法。
【請求項３】
前記フローネットワークモデルを構築する段階は、
前記アプリケーションプログラムを１つの静的単一代入形式に変換する段階と、
前記アプリケーションプログラムの１つのループ本体について１つのコントロールフローグラフを構築する段階と、
前記コントロールフローグラフの１つのサマリグラフ及び前記コントロールフローグラフの特定された強連結構成要素（ＳＳＣ）に基づいて１つの依存グラフを構築する段階と、
前記依存グラフの１つのサマリグラフ及び特定された前記依存グラフの複数のＳＳＣノードに従って前記フローネットワークモデルを構築する段階と
を含む請求項２に記載の方法。
【請求項４】
前記フローネットワークモデルを構築する段階は、
１つの固有なソースノード及び１つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
前記依存グラフの前記サマリグラフにおいて特定されたそれぞれのＳＳＣノードについて１つのプログラムノードを前記フローネットワークモデルに加える段階と、
複数のプログラムノードによって定義されて使用されるそれぞれの変数について１つの変数ノードを前記フローネットワークモデルに加える段階と、
前記依存グラフの前記サマリグラフにおいてコントロール依存の１つのソースとして特定されたそれぞれのＳＳＣノードについて１つのコントロールノードＣを前記フローネットワークモデルに加える段階と、
対応する複数のプログラムノードを対応する複数の変数ノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階と、
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階と、
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの１つとの間に複数のエッジを生成する段階と
を含む請求項３に記載の方法。
【請求項５】
対応する複数のプログラムノードを対応する複数の変数ノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階は、
（ｉ）１つの変数ノードＶを定める１つのプログラムノードＮを選択する段階と、
（ｉｉ）前記フローネットワークモデルに、１つの重みＶＣｏｓｔを持つノードＮからノードＶへの定義エッジを加える段階と、
（ｉｉｉ）１つの変数ノードＶを定義するそれぞれのプログラムノードＮについて（ｉ）−（ｉｉ）を繰り返す段階と、
（ｉｖ）１つの変数ノードＷを使用する１つのプログラムノードＭを選択する段階と、
（ｖ）前記フローネットワークモデルに、１つの割り当てられた無限量の重みを持つ前記ノードＷから前記ノードＭへの１つのエッジを加える段階と、
（ｖｉ）１つの変数ノードＷを使用するそれぞれのプログラムノードＭについて（ｉｖ）−（ｖ）を繰り返す段階と
をさらに持つ請求項４に記載の方法。
【請求項６】
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階は、
（ｉ）１つの関連づけられたコントロールノードＣを持つ１つのプログラムノードＮを選択する段階と、
（ｉｉ）前記選択されたノードＮから前記関連づけられたコントロールノードＣへの１つの定義エッジを加える段階と、
（ｉｉｉ）１つの重みＣＣｏｓｔを前記エッジに関連づける段階と、
（ｉｖ）１つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて（ｉ）−（ｉｉｉ）を繰り返す段階と、
（ｖ）他のプログラムノードＭに１つのコントロール依存を持つ１つのプログラムノードＮを選択する段階と、
（ｖｉ）Ｍを前記コントロールノードＣに関連づける段階と、
（ｖｉｉ）前記関連づけられたコントロールノードＣから前記選択されたプログラムノードＮへの１つのエッジを加える段階と、
（ｖｉｉｉ）前記エッジに無限量の重みを割り当てる段階と、
（ｉｘ）他のプログラムノードＭに１つのコントロール依存を持つそれぞれのノードＮについて（ｖ）−（ｖｉｉｉ）を繰り返す段階と
を持つ請求項４に記載の方法。
【請求項７】
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの１つとの間に複数のエッジを生成する段階は、
（ｉ）前記フローネットワークモデルにおいて先行ノードを持たない１つのプログラムノードを選択する段階と、
（ｉｉ）前記ソースノードから前記選択されたプログラムノードへの１つのエッジを加える段階と、
（ｉｉｉ）ゼロの重みを前記エッジに割り当てる段階と、
（ｉｖ）先行ノードを持たないそれぞれのプログラムノードについて（ｉ）−（ｉｉｉ）を繰り返す段階と、
（ｖ）前記フローネットワークにおいて後続ノードを持たない１つのプログラムノードを選択する段階と、
（ｖｉ）前記選択されたプログラムノードから前記シンクノードへの１つのエッジを加える段階と、
（ｖｉｉ）ゼロの重みを前記加えられたエッジに割り当てる段階と、
（ｖｉｉｉ）前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて（ｖ）−（ｖｉｉ）を繰り返す段階と
を持つ請求項４に記載の方法。
【請求項８】
前記複数の予備のパイプラインステージを選択する段階は、
それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルを複数のＤ−１の連続するカットにカットする段階
を含む請求項２に記載の方法。
【請求項９】
カットする段階は、１つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
請求項８に記載の方法。
【請求項１０】
前記複数の予備のパイプラインステージを変更する段階は、
１つの予備のパイプラインステージを選択する段階と、
前記選択された予備のパイプラインステージへの及び前記選択された予備のパイプラインステージからの複数のライブ変数の適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
前記複数の選択された予備のパイプラインステージへの及び前記複数の選択された予備のパイプラインステージからのコントロールフローの適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
それぞれの予備のパイプラインステージについて、前記選択する段階、変更する段階、及び変更する段階を繰り返して、１つのパラレルネットワークアプリケーションの前記複数のＤパイプラインステージを形成する段階と
を含む請求項２に記載の方法。
【請求項１１】
記憶された複数の命令を持つ機械可読命令を備える製品であって、前記複数の命令が、
１以上のプロセッサをＤステージのプロセッサパイプラインに配置する段階と、
１つのシーケンシャルアプリケーションプログラムを複数のＤパイプラインステージに変換する段階と、
前記複数のＤパイプラインステージを、前記Ｄステージのプロセッサパイプライン内でパラレルに実行する段階と
を備える方法を実行すべくシステムをプログラムするために使用される製品。
【請求項１２】
前記シーケンシャルアプリケーションプログラムを変換する段階は、
前記シーケンシャルアプリケーションプログラムについて１つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルから複数の予備のパイプラインステージを選択する段階と、
前記複数のＤパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変更する段階と
を有する請求項１１に記載の製品。
【請求項１３】
前記フローネットワークモデルを構築する段階は、
前記アプリケーションプログラムを１つの静的単一代入形式に変換する段階と、
前記アプリケーションプログラムの１つのループ本体について１つのコントロールフローグラフを構築する段階と、
前記コントロールフローグラフの１つのサマリグラフ及び前記コントロールフローグラフの特定された強連結構成要素（ＳＳＣ）に基づいて１つの依存グラフを構築する段階と、
前記依存グラフの１つのサマリグラフ及び特定された前記依存グラフの複数のＳＳＣノードに従って前記フローネットワークモデルを構築する段階と
を含む請求項１２に記載の製品。
【請求項１４】
前記フローネットワークモデルを構築する段階は、
１つの固有なソースノード及び１つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
前記依存グラフの前記サマリグラフにおいて特定されたそれぞれのＳＳＣノードについて１つのプログラムノードを前記フローネットワークモデルに加える段階と、
複数のプログラムノードによって定義されて使用されるそれぞれの変数について１つの変数ノードを前記フローネットワークモデルに加える段階と、
前記依存グラフの前記サマリグラフにおいてコントロール依存の１つのソースとして特定されたそれぞれのＳＳＣノードについて１つのコントロールノードＣを前記フローネットワークモデルに加える段階と、
対応する複数のプログラムノードを対応する複数の変数ノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階と、
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階と、
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの１つとの間に複数のエッジを生成する段階と
を含む請求項１３に記載の製品。
【請求項１５】
対応する複数のプログラムノードを対応する複数の変数ノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階は、
（ｉ）１つの変数ノードＶを定める１つのプログラムノードＮを選択する段階と、
（ｉｉ）前記フローネットワークモデルに、１つの重みＶＣｏｓｔを持つノードＮからノードＶへの定義エッジを加える段階と、
（ｉｉｉ）１つの変数ノードＶを定義するそれぞれのプログラムノードＮについて（ｉ）−（ｉｉ）を繰り返す段階と、
（ｉｖ）１つの変数ノードＷを使用する１つのプログラムノードＭを選択する段階と、
（ｖ）前記フローネットワークモデルに、１つの割り当てられた無限量の重みを持つ前記ノードＷから前記ノードＭへの１つのエッジを加える段階と、
（ｖｉ）１つの変数ノードＷを使用するそれぞれのプログラムノードＭについて（ｉｖ）−（ｖ）を繰り返す段階と
をさらに持つ請求項１４に記載の製品。
【請求項１６】
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する１つの関連づけられた重みを持つ複数のエッジを生成する段階は、
（ｉ）１つの関連づけられたコントロールノードＣを持つ１つのプログラムノードＮを選択する段階と、
（ｉｉ）前記選択されたノードＮから前記関連づけられたコントロールノードＣへの１つの定義エッジを加える段階と、
（ｉｉｉ）１つの重みＣＣｏｓｔを前記エッジに関連づける段階と、
（ｉｖ）１つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて（ｉ）−（ｉｉｉ）を繰り返す段階と、
（ｖ）他のプログラムノードＭに１つのコントロール依存を持つ１つのプログラムノードＮを選択する段階と、
（ｖｉ）Ｍを前記コントロールノードＣに関連づける段階と、
（ｖｉｉ）前記関連づけられたコントロールノードＣから前記選択されたプログラムノードＮへの１つのエッジを加える段階と、
（ｖｉｉｉ）前記エッジに無限量の重みを割り当てる段階と、
（ｉｘ）他のプログラムノードＭに１つのコントロール依存を持つそれぞれのノードＮについて（ｖ）−（ｖｉｉｉ）を繰り返す段階と
を持つ請求項１４に記載の製品。
【請求項１７】
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの１つとの間に複数のエッジを生成する段階は、
（ｉ）前記フローネットワークモデルにおいて先行ノードを持たない１つのプログラムノードを選択する段階と、
（ｉｉ）前記ソースノードから前記選択されたプログラムノードへの１つのエッジを加える段階と、
（ｉｉｉ）ゼロの重みを前記エッジに割り当てる段階と、
（ｉｖ）先行ノードを持たないそれぞれのプログラムノードについて（ｉ）−（ｉｉｉ）を繰り返す段階と、
（ｖ）前記フローネットワークにおいて後続ノードを持たない１つのプログラムノードを選択する段階と、
（ｖｉ）前記選択されたプログラムノードから前記シンクノードへの１つのエッジを加える段階と、
（ｖｉｉ）ゼロの重みを前記加えられたエッジに割り当てる段階と、
（ｖｉｉｉ）前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて（ｖ）−（ｖｉｉ）を繰り返す段階と
を持つ請求項１４に記載の製品。
【請求項１８】
前記複数の予備のパイプラインステージを選択する段階は、
それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルを複数のＤ−１の連続するカットにカットする段階
を含む請求項１２に記載の製品。
【請求項１９】
カットする段階は、１つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
請求項１８に記載の製品。
【請求項２０】
前記複数の予備のパイプラインステージを変更する段階は、
１つの予備のパイプラインステージを選択する段階と、
前記選択された予備のパイプラインステージへの及び前記選択された予備のパイプラインステージからの複数のライブ変数の適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
前記複数の選択された予備のパイプラインステージへの及び前記複数の選択された予備のパイプラインステージからのコントロールフローの適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
それぞれの予備のステージについて、前記選択する段階、変更する段階、及び変更する段階を繰り返して、１つのパラレルネットワークアプリケーションの前記複数のＤパイプラインステージを形成する段階と
請求項１２に記載の製品。
【請求項２１】
１つのシーケンシャルアプリケーションプログラムから１つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルを複数の予備のパイプラインステージにカットする段階と、
１つのパラレルアプリケーションプログラムの複数のＤパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変換する段階と
を備える方法。
【請求項２２】
前記複数の予備のアプリケーションプログラムステージを変換する段階は、
（ｉ）１つの予備のアプリケーションプログラムステージを選択する段階と、
（ｉｉ）前記選択された予備のアプリケーションプログラムステージに対応する１つのパケットプロセッシングステージ（ＰＰＳ）ループについて生成された１つのコントロールフローグラフを選択する段階と、
（ｉｉｉ）前記選択された予備のパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
（ｉｖ）前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
（ｖ）１つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからＰＰＳループを再構築する段階と、
１つのパラレルネットワークアプリケーションプログラムのＤパイプラインステージを形成すべく、それぞれの予備のパイプラインステージについて(ｉ）−（ｖ）を繰り返す段階と、
を有する請求項２１に記載の方法。
【請求項２３】
前記コントロールフローを変換する段階は、
前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して１つの条件命令を構築する段階と、
前記ＣＦＧ内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
をさらに有する請求項２２に記載の方法。
【請求項２４】
前記コントロールフローを変換する段階は、
前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
をさらに有する請求項２２に記載の方法。
【請求項２５】
前記コントロールフローグラフを変換する段階は、
次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた１つの条件ノードの代替の後続ノードのそれぞれの中の前記コントロールオブジェクトの代替の値を配置する段階と、
前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
をさらに有する請求項２２に記載の方法。
【請求項２６】
記憶された複数の命令を持つ機械可読命令を備える製品であって、前記複数の命令が、
１つのシーケンシャルアプリケーションプログラムから１つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルを複数の予備のパイプラインステージにカットする段階と、
１つのパラレルアプリケーションプログラムの複数のＤパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変換する段階と
を備える方法を実行すべくシステムをプログラムするために使用される製品。
【請求項２７】
前記複数の予備のアプリケーションプログラムを変換する段階は、
（ｉ）１つの予備のアプリケーションプログラムステージを選択する段階と、
（ｉｉ）前記選択された予備のアプリケーションプログラムステージに対応する１つのパケットプロセッシングステージ（ＰＰＳ）ループについて生成された１つのコントロールフローグラフを選択する段階と、
（ｉｉｉ）前記選択された予備のパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
（ｉｖ）前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
（ｖ）１つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからＰＰＳループを再構築する段階と、
１つのパラレルネットワークアプリケーションプログラムのＤパイプラインステージを形成すべく、それぞれの予備のパイプラインステージについて(ｉ）−（ｖ）を繰り返す段階と、
を有する請求項２６に記載の製品。
【請求項２８】
前記コントロールフローグラフを変換する段階は、
前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して１つの条件命令を構築する段階と、
前記コントロールフローグラフ内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
をさらに有する請求項２６に記載の製品。
【請求項２９】
前記コントロールフローグラフを変換する段階は、
前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
をさらに有する請求項２６に記載の製品。
【請求項３０】
前記コントロールフローグラフを変換する段階は、
次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールオブジェクトの代替の値を、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた１つの条件ノードの代替の後続ノードのそれぞれの中に配置する段階と、
前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
をさらに有する請求項２８に記載の製品。
【請求項３１】
１つのプロセッサと、
前記プロセッサに結合された１つのメモリであって、１つのシーケンシャルアプリケーションプログラムのＤパイプラインステージへの変換を生じさせ、１つのＤステージのプロセッサパイプライン内で前記Ｄパイプランステージの並列実行を可能にする１つのコンパイラを有するメモリと
を備える装置。
【請求項３２】
前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての１つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数の予備のパイプラインステージの選択を生じさせ、前記複数のＤパイプランステージを形成すべくコントロールフロー及び変数の間の変換を実行して前記複数の予備のパイプラインステージの変更を生じさせる
請求項３１に記載の装置。
【請求項３３】
前記コンパイラは、前記複数のＤの予備パイプラインステージを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのＤ−１の連続する複数のカットを生じさせる
請求項３２に記載の装置。
【請求項３４】
１つのプロセッサと、
前記プロセッサに結合された１つのメモリコントローラと、
前記プロセッサに結合された１つのＤＤＲ  ＳＲＡＭメモリであって、１つのシーケンシャルアプリケーションプログラムのＤアプリケーションプログラムステージへの変換を生じさせ、１つのＤステージのプロセッサパイプライン内で前記Ｄアプリケーションプログラムステージの並列実行を可能にする１つのコンパイラを有するＤＤＲ  ＳＲＡＭメモリと
を備えるシステム。
【請求項３５】
前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての１つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数の予備のパイプラインステージの選択を生じさせ、前記複数のＤパイプランステージを形成すべくコントロールフロー及び変数の間の変換を実行して前記複数の予備のパイプラインステージの変更を生じさせる
請求項３４に記載のシステム。
【請求項３６】
前記コンパイラは、前記複数のＤの予備パイプラインステージを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのＤ−１の連続する複数のカットを生じさせる
請求項３５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の１以上の実施形態は、広くネットワークプロセッサアプリケーションの分野に関する。特に、本発明の１以上の実施形態は、パイプライン変換を通じてネットワークアプリケーションを自動的に並列化するための方法及び装置に関する。
【背景技術】
【０００２】
ネットワークプロセッサ（ＮＰ）は、パケット処理を実行するよう特に設計されている。従来、ネットワークプロセッサは、高速通信ルータのコア要素のようなパケット処理を実行するために使用されている。高速でのネットワークプロセッシングの独特な課題に対処すべく、現在のＮＰは概して高度にパラレルなマルチプロセッサアーキテクチャを持つ。例えば、インテル（登録商標）インターネット・エクスチェンジ（商標）アーキテクチャ（ＩＸＡ）ＮＰファミリに属するInternet exchange processor (IXP)シリーズは、マイクロエンジンクラスタを用いてパケットを処理するＮＰを含む。マイクロエンジンクラスタは、パラレルに動作する複数のマイクロエンジン（パケット処理能力を持つプログラム可能なプロセッサ）を備える。
【０００３】
しかしながら、ネットワークプロセッサによって利用される高度にパラレルなマルチプロセッサアーキテクチャと対照的に、従来のネットワークアプリケーションは逐次動作を用いて安易にコーディングされる。概して、そのようなネットワークアプリケーションは、典型的には永久に動作する１つのパケット処理ユニット（パケット処理ステージ（ＰＰＳ））を用いるようコーディングされる。したがって、１つの新たなパケットが到着すると、ＰＰＳは、パケットに一連のタスク（例えば、パケット受信、ルーティングテーブル検索、キューイング）を実行する結果として、それぞれのイタレーションが異なる１つのパケットを処理する無限ループ（すなわちＰＰＳループ）として表現される。
【０００４】
したがって、ネットワークプロセッサのパラレルなアーキテクチャとネットワークアプリケーションの逐次動作との間に大きなギャップが存在する。この問題に対処するひとつの方法は、並列プログラミングのパラダイムを、従来のネットワークアプリケーションのコーディングに適合させることである。当業者に知られているように、並列プログラムは、アプリケーションを複数のサブタスクに分割し、異なるサブタスクの間の同期と通信を管理し、種々のサブタスクを１つのマルチプロセッサシステムにマッピングすることを伴う。残念ながら、そのような並列プログラミングパラダイムは伝統的でなく、多くの人にとって馴染みがない。
【図面の簡単な説明】
【０００５】
本発明のいくつかの実施形態が、限定を目的としてではなく実例を目的として、添付の図面の複数の図に示される。
【０００６】
【図１】本発明の一実施形態に係る、１つのシーケンシャルアプリケーションプログラムのパイプライン変換を実行する並列化コンパイラを実装するコンピュータシステムのブロック図である。
【０００７】
【図２Ａ】本発明の一実施形態に係る、１つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。
【図２Ｂ】本発明の一実施形態に係る、１つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。
【０００８】
【図３Ａ】本発明の一実施形態に係る、１つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【図３Ｂ】本発明の一実施形態に係る、１つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【図３Ｃ】本発明の一実施形態に係る、１つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【０００９】
【図４】本発明の一実施形態に係る、図３ＡのシーケンシャルＰＰＳループの初期変換を示す。
【００１０】
【図５】本発明の一実施形態に係る、図３Ａの１つのＰＰＳループ本体から形成されるコントロールフローグラフ（ＣＦＧ）を示す。
【００１１】
【図６】本発明の一実施形態に係る、図５のＣＦＧのサマリグラフから形成される依存グラフを示す。
【００１２】
【図７】本発明の一実施形態に係る、図６の有向グラフのサマリグラフから形成されるコントロールフローモデルを示す。
【００１３】
【図８】本発明の一実施形態に係る、Ｄステージプロセッサパイプラインを提供すべく構成された１つのネットワークプロセッサを示すブロック図である。
【００１４】
【図９】本発明の一実施形態に係る、１つのシーケンシャルネットワークアプリケーションのパイプライン変換のための１つの方法を示すフローチャートである。
【００１５】
【図１０】本発明の一実施形態に係る、フローネットワークモデルの構築のためのフローチャートを示すブロック図である。
【００１６】
【図１１】本発明の一実施形態に係る、フローネットワークを構築するための１つの方法を示すフローチャートである。
【００１７】
【図１２】本発明の一実施形態に係る、フローネットワークを構築するための１つの方法を示すフローチャートである。
【００１８】
【図１３】本発明の一実施形態に係る、フローネットワークモデルからバランスのとれた１つの最小コストのカットを選択するための１つの方法を示すフローチャートである。
【００１９】
【図１４】本発明の一実施形態に係る、イタレーティブなバランスのとれたプッシュリラベルアルゴリズムを用いてネットワークフローモデルのバランスのとれた複数の最小コストのカットを実行するための１つの方法を示すフローチャートである。
【００２０】
【図１５】本発明の一実施形態に係る、１つのフローネットワークモデルの複数の最小カットをＤパイプラインステージに変換するための１つの方法を示すフローチャートである。
【００２１】
【図１６】本発明の一実施形態に係る、１つのフローネットワークモデルの複数の最小カットをＤパイプラインステージに変換するための１つの方法を示すフローチャートである。
【発明を実施するための最良の形態】
【００２２】
パイプライン変換を通じて１つのシーケンシャルネットワークアプリケーションを自動的に並列化するための方法及び装置が説明される。一実施形態において、その方法は、１つのＤステージプロセッサパイプラインへの１つのネットワークプロセッサの設定を含む。設定されると、１つのシーケンシャルネットワークアプリケーションがＤパイプラインステージに変換される。変換されると、Ｄパイプラインステージは、Ｄステージプロセッサパイプライン内でパラレルに実行される。一実施形態において、ネットワークアプリケーションの変換は、ネットワークアプリケーションを１つのフローネットワークモデルとしてモデリングし、フローネットワークモデルを、複数のＤ−１カットがＤパイプラインステージをもたらすようＤパイプラインステージにカッティングすることによって実行される。
【００２３】
以下の説明において、本発明の機能を説明するために特定の用語が用いられる。例えば、"ロジック"という用語は、１以上の機能を実行すべく構成されたハードウェア及び／又はソフトウェアを表す。例えば、"ハードウェア"の例は、１つの集積回路、１つの有限状態機械、又はロジックの組合せさえも含み、それらに限定又は制限されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタルシグナルプロセッサ、マイクロコントローラ、又は同種のもののような、１つのプロセッサの形をとってよい。
【００２４】
"ソフトウェア"の一例は、１つのアプリケーション、１つのアプレット、１つのルーチン、又は一連の命令でさえある形の、実行可能なコードを含む。ソフトウェアは任意のタイプのコンピュータ、或いはプログラマブル電子回路、揮発性メモリ（例えば、ランダムアクセスメモリ等）及び／又は不揮発性メモリ（例えば、リードオンリーメモリ"ＲＯＭ"、フラッシュメモリ）を含む半導体メモリデバイス、フレキシブルディスク、光ディスク（例えば、コンパクトディスク又はデジタルビデオディスク"ＤＶＤ"）、ハードディスク、テープ、又は同種のもののような機械可読メディアに記憶されてよい。
【００２５】
一実施形態において、本発明は、本発明の一実施形態に従うプロセス又はオペレーションをコンピュータ（又は他の複数の電子デバイス）が実行するようプログラムするために使用される記憶された複数の命令を持つ、機械又はコンピュータ可読メディアを含む製品として提供される。コンピュータ可読メディアは、フレキシブルディスク、光ディスク、コンパクトディスク、リードオンリーメモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去再書き込み可能 ROM（ＥＰＲＯＭ）、電気的消去再書き込み可能 ROM（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、又は同種のものを含むが、これらに限定されない。
【００２６】
図１は、本発明の一実施形態に係る、並列化コンパイラ２００を実装するコンピュータシステムを示すブロック図である。示されるように、コンピュータシステム１００は、メモリコントローラハブ（ＭＣＨ）１２０に結合された１つのＣＰＵ１１０、メモリ１４０、及びグラフィクスコントローラ１３０を備える。本明細書で説明されるように、ＭＣＨ１２０はノースブリッジと呼ばれ、一実施形態においてメモリコントローラと呼ばれる。さらに、コンピュータシステム１００は、Ｉ／Ｏ（入出力）コントローラハブ（ＩＣＨ）１６０を備える。本明細書で説明されるように、ＩＣＨ１６０はサウスブリッジ又はＩ／Ｏコントローラと呼ばれる。サウスブリッジ、すなわちＩＣＨ１６０は、ローカルＩ／Ｏ１５０及びハードディスクドライブデバイス（ＨＤＤ）１９０に結合される。
【００２７】
示される本実施形態において、ＩＣＨ１６０は、例えばＰＣＩ又はＰＣＩエクスプレス、ＰＣＩ−Ｘ、第３世代Ｉ／Ｏ（３ＧＩＯ）、又は同種の相互接続プロトコルを含むペリフェラルコンポーネントインターコネクト（ＰＣＩ）デバイス１７０のような、複数のＩ／Ｏデバイスを結合するＩ／Ｏバス１７２に結合される。ＭＣＨ１２０及びＩＣＨ１６０は一括して、チップセット１８０と呼ばれる。本明細書で説明されるように、"チップセット"という用語は、当業者が望ましいシステムの機能を実行すべくＣＰＵ１１０に結合された様々なデバイスを一括して表現するためによく知られた方法で用いられる。一実施形態において、メインメモリ１４０は、これらに限定されないが、ランダムアクセスメモリ（ＲＡＭ）、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、ラムバスＤＲＡＭ（ＲＤＲＡＭ）、ダイレクトＲＤＲＡＭ（ＤＲＤＲＡＭ）を含む揮発性メモリである。
【００２８】
従来のコンピュータシステムとは異なり、コンピュータシステム１００は、１つのシーケンシャルネットワークアプリケーションを１つのＤパイプラインステージのパラレルネットワークアプリケーションに変換するための並列化コンパイラ２００を含む。したがって、コンパイラ２００は、並列アーキテクチャと、従来のネットワークアプリケーションをコーディングするために使用されたシーケンシャルプログラミングモデルの間のギャップを埋め得る。この問題に対処するための１つの方法は、ネットワークアプリケーションを、パラレルプログラミングパラダイムを用いてコーディングすることである。残念ながら、そのようなパラレルプログラミングパラダイムは概して伝統的でなく、ネットワークプログラマにとって馴染みがない。本発明の一実施形態に従って、並列化コンパイラ２００は、図２Ａ及び２Ｂに示されるように、１つの逐次ネットワークアプリケーションを１つの並列ネットワークアプリケーションに自動的に変換する。
【００２９】
図２Ａを参照すると、シーケンシャルネットワークアプリケーションンの１つのシーケンシャルパケット処理ステージ（ＰＰＳ）２８０が示される。図２Ｂに図示されるように、ＰＰＳ２８０は、例えば図１のネットワークプロセッサ５００の１つのＤステージのプロセッサパイプライン内での実行のための３つのパイプラインステージのパラレルなネットワークアプリケーションパイプライン３００に変換される。一実施形態において、１つのネットワークアプリケーションのシーケンシャルＰＰＳは、例えば図３Ａ−３Ｃに関連して示されるようなパイプライン変換を通じて、１つのＤパイプラインステージのパラレルなネットワークアプリケーションに変換される。
【００３０】
2007511835.tif 000003
【００３１】
本明細書で説明されるように、"カット"という用語は、ＰＰＳループ本体を２つの部分に分割するコントロールフローポイントの組を意味する。一括して、１つのＰＰＳループ本体に対して実行された１以上のカットは、複数のＰＰＳパイプラインステージを形成する。一実施形態において、ＰＰＳループ本体がＤステージに分割された場合、複数のＤ−１カットがＰＰＳループ本体２９０から選択される。一実施形態において、複数のカットは重複していない。パラレルなＤパイプラインステージへのネットワークアプリケーションの変換の一実施形態において、ネットワークアプリケーションは、ネットワークアプリケーションの１つの初期の変換で始まる。
【００３２】
一実施形態において、ネットワークアプリケーションプログラムは、静的単一代入（ＳＳＡ）形式に変換される。典型的には、シーケンシャルＰＰＳ２９０（図３Ａ）は、図４に示されるように１つのＳＳＡコードシーケンス４００に変換される。変換されると、図３ＡのＰＰＳループ２９０のＰＰＳ本体について、１つのコントロールフローグラフが図４のＳＳＡコードシーケンス４００から形成される。一実施形態において、図３ＡのＰＰＳループ本体は、図５に示されるように、１つのコントロールフローグラフ（ＣＦＧ）としてモデル化される。本明細書で説明されるように、ＣＦＧは、それぞれの節点が１つの基本ブロックを表す、プログラムのコントロールのフローを表すグラフであり、それぞれのエッジが、基本ブロック間のコントロールのポテンシャルフローを表す。ＣＦＧは固有のソースノード（エントリ）を持つ。
【００３３】
典型的には、コントロールフローグラフ内のそれぞれのノードは、全てのカットが適用されると１つのパイプラインステージ内にあることが要求される。一実施形態において、図５のＣＦＧ４２０の複数の強連結構成要素（ＳＳＣ）ノードが特定される。１つのＳＳＣは、Ｓ内のいずれのノードがＳ内の他のいずれのノードから到達可能であり、Ｓがより大きいそのようないずれのセットのサブセットでないような、有向グラフの複数のノードのサブセットＳである。一旦特定されると、ＣＦＧ４２０のサマリが形成される。一実施形態において、サマリグラフ内での複数のＳＳＣノードの識別は、後のステージからの前のステージへのコントロール依存を除くために用いられる。したがって、一実施形態において、パイプライン変換は、本明細書で説明されたように、場合によってはループである、ＣＦＧ４２４０のいずれのＳＳＣノードを分割しない。
【００３４】
図６に示されるように、図５のＣＦＧ４２０のサマリグラフから依存グラフが形成される。一実施形態において、依存グラフ（ＤＧ）４６０は、前のステージから後のステージへのデータ依存を除くために使用される。一実施形態において、ＤＧ４６０は、非ループキャリーデータ及びコントロール依存に加えて、ＰＰＳループキャリーフロー依存を示す。したがって、ＰＰＳループキャリーフロー依存のソース及びシンクは、通例ＤＧ４６０の同じＳＳＣノードの中にある。有向グラフ４６０から有向グラフのサマリが形成され、その中に複数のＳＳＣノードも特定する。したがって、依存グラフ４６０についての複数のＳＳＣノードは、パイプライン変換が、１以上の隣り合うカット上にＳＳＣ全体を配置するカットの考察に限られることを保証する。
【００３５】
図７に関連して示されるように、一実施形態において、１つのコントロールフローモデル４８０は、図６の有向グラフ４６０の１つのサマリグラフから形成される。フローネットワークモデルは、１つの固有なソースノード及び１つの固有なシンクノード、並びに複数の命令を含む複数のプログラムノードを有する。固有なソース及びシンクノード並びに複数の命令を含むプログラムノードに加えて、変数ノード及びコントロールノードが、ライブセット内に含まれ得るそれぞれのオブジェクトについてフローネットワーク内に導入される。ＳＳＡ変換（図４）の後、全ての変数はただ１つの定義ポイントを持ち、したがってただ１つの定義エッジを持つ。これはコントロールノードの場合も同様である。
【００３６】
したがって、定義エッジに関連する重み（容量）（複数の変数についてのＶＣｏｓｔ及び複数のコントロールオブジェクトについてのＣＣｏｓｔ）は、エッジがカットである場合に関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。その上、そのようなエッジをカットすることがライブセットデータのいずれの伝達も招かないので、ソースから流出してシンクに流入するエッジの重みはゼロに設定される。他のエッジの全ては、それらがカッティングを受けないよう無限量の重みを持つ。図７のフローネットワークモデル４８０から、バランスのとれたコードサイズをもたらす複数のカットが選択され得る。
【００３７】
一実施形態において、選択された複数のカットは、１以上の以下の規則に従うことが通例要求される。選択された複数のカットは、後のステージから前のステージへのいずれのデータ又はコントロール依存を排除する。さらに、一実施形態は、隣接するステージの間の境界に存続するデータの最小化を要求する。本明細書で説明されるように、隣接するステージの境界に存続するデータは、"ライブセットデータ"と呼ばれる。さらなる実施形態において、複数のライブカットの選択は、アプリケーションプログラムステージの間でバランスの取れたコードサイズを提供するよう要求される。一実施形態において、複数のカットの選択は、バランスの取れた最小コストカットを提供するよう要求される。一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、図７のネットワークモデル内のバランスの取れた、最小コストの複数のカットを選択すべく利用される。
【００３８】
図８は、本発明の一実施形態に係る、Ｄステージプロセッサパイプラインを提供すべく構成されたネットワークプロセッサ（ＮＰ）１００を示すブロック図である。典型的には、２以上のプロセッサが、それぞれのステージがＰＰＳループの一部を持つ１つのパイプラインとして組織化される。したがって、プロセッサ当たりのリソース（例えば、キャッシュ）はより大量に利用され得る。それぞれのパケットの処理をパイプライン化することによって、パケット処理についての厳しいパフォーマンス費用が、全てのパイプラインステージにわたって分散され得る。したがって、ネットワークアプリケーションのスループットが向上される。前のステージから後のステージからの依存を除くことは、元のＰＰＳループのそれぞれのイタレーションの間での複雑な同期を回避する。バランスの取れた最小コストカットを選択することによって、ステージ間の通信が低減される。本発明の実施形態を実装するための手続き的な方法が、以下に説明される。
オペレーション
【００３９】
図９は、本発明の一実施形態に係る、シーケンシャルネットワークアプリケーションのようなシーケンシャルアプリケーションプログラムの６００のパイプライン変換についての方法を示すフローチャートである。プロセスブロック６０２において、１つのシーケンシャルネットワークアプリケーションについて１つのフローネットワークモデルが構築される。構築されると、プロセスブロック６６０において、フローネットワークモデルが、予備的な複数の（Ｄ）パイプラインステージに分割される。一実施形態において、フローネットワークモデルは、例えば図８のＮＰ５００のＤステージのプロセッサパイプライン内での実行のために、Ｄパイプラインステージに分割される。一実施形態において、フローネットワークモデルは、図７のフローネットワークモデル４８０によって示されるように形成される。プロセスブロック７００において、Ｄの予備パイプラインステージは、図２Ｂのアプリケーション３００のような、パラレルネットワークアプリケーションのＤパイプラインステージを形成すべく、それらの間のコントロールフロー及び変数伝達を実行するよう修正される。
【００４０】
図１０は、本発明の一実施形態に係る、図９のプロセスブロック６０２のフローネットワークモデルを構築するための方法６０４を示す一フローチャートである。プロセスブロック６０６において、例えば図４に図示されたように、シーケンシャルアプリケーションプログラムは静的単一代入（ＳＳＡ）形式に変換される。プロセスブロック６０８において、例えば図５に関連して示されたように、アプリケーションプログラムのループ本体から１つのコントロールフローグラフ（ＣＦＧ）が構築される。プロセスブロック５１２において、例えば図７に関連して示されたように、１つの依存グラフ（ＤＧ）が、プロセスブロック６１０で形成されたＣＦＧのサマリグラフ及びＣＦＧの特定された複数の強連結構成要素（ＳＳＣ）に基づいて、構築される。プロセスブロック６１６において、フローノードモデルが、プロセスブロック６１４で形成されたＤＧのサマリグラフ及びＤＧの特定された複数のＳＳＣノードに従って、構築される。一実施形態において、図７に関連して示されたようなフローネットワークモデルが、図３Ａのシーケンシャルアプリケーションプログラム２９０から生成される。
【００４１】
図１１は、本発明の一実施形態に係る、図１０のプロセスブロック６１６のフローネットワークモデルを構築するための方法６１８を示すフローチャートである。プロセスブロック６２０において、フローネットワークモデルは、固有な１つのソース及び固有な１つのシンクノードが割り当てられる。加えられると、プロセスブロック６２２において、ＤＧのサマリグラフ内で特定されたそれぞれのＳＳＣノードについて１つのプログラムノードがフローネットワークモデルに加えられる。複数のプログラムノードが加えられると、プロセスブロック６２４において、複数のプログラムノードによって定義されて使用されるアプリケーションプログラムのそれぞれの変数について１つの変数ノードがフローネットワークに加えられる。
【００４２】
プロセスブロック６２６において、ＤＧのサマリグラフ内でコントロール依存のソースであると特定されたそれぞれのＳＳＣノードについて１つのコントロールノードがフローネットワークに加えられる。プロセスブロック６２８において、対応する複数のプログラムノードを対応する複数の変数ノードに接続すべく、複数のエッジが生成される。プロセスブロック６３０において、対応する複数のプログラムノードを対応する複数のコントロールノードに接続すべく、複数のエッジが生成される。一実施形態において、それぞれの生成されたエッジに１つの重みが割り当てられる。プロセスブロック６３２において、複数のプログラムノードとソースノード及びシンクノードのうちの１つとの間に複数のエッジが生成される。一実施形態において、１つのフローネットワークモデルは、図１２に示されるように、方法６３６を示す一フローチャートに従って形成される。
【００４３】
フローネットワークモデルが形成されると、一実施形態において、複数の定義エッジに関連する重み（又は容量）（複数の変数についてのＶＣｏｓｔ及び複数のコントロールオブジェクトについてのＣＣｏｓｔ）は、フローネットワークモデル内の対応するエッジがカットである場合に、関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。このように、一実施形態において、フローネットワークモデルが形成されると、フローネットワークモデルがＤ（パイプラインの段数）のステージに分割される。したがって、この変換は、Ｄ−１の連続する複数のカットを、それぞれのカットがバランスの取れた最小コストのカットであるように、例えばネットワークアプリケーションプログラムのパケットプロセッシングステージ（ＰＰＳ）に適用する。
【００４４】
図１３は、本発明の一実施形態に係る、図９のプロセスブロック６６０のフローネットワークモデルのカッティングを実行するための方法６６１を示す一フローチャートである。プロセスブロック６６２において、それぞれのプログラムノード（Ｗ（Ｎ））の重みは、対応するノード内に含まれる命令の数に設定される。プロセスブロック６６４において、フローネットワークモデル内の非プログラムノードＮのそれぞれに０の重みが設定される。プロセスブロック６６５において、フローネットワークモデル内のそれぞれのプログラムノードＮについての重み（Ｗ（Ｎ））の合計が、値（Ｔ）内に記憶される。プロセスブロック６６８において、変数ｉは値１に設定され、変数ｄは値Ｄ（パイプラインの段数）に設定される。プロセスブロック６７０において、変数ｉが変数ｄ、すなわちパイプライン段数より小さいか否かが判断される。したがって、プロセスブロック６７２において、以下のように、バランスの取れた最小コストカットアルゴリズムが、フローネットワークモデル内の１つのカットを選択すべく使用される。
【数１】
2007511835.tif 000004
【００４５】
一実施形態において、ｄはバランスの程度であり、ｅは、１から０の範囲の予め定められた定数である、バランス自由度である。バランス自由度は、カットのバランスと重みとの間のトレードオフを反映する。バランス自由度が０に近い場合には、このアルゴリズムは、より小さく重み付けされたカットではなくよりバランスのとれたカットを検索する。代わりに、バランス自由度が１に近い場合には、アルゴリズムは、より小さくバランスのとれたカットではなくより重み付けされたカットを検索し、重みの最小化がより重要であるとみなされる。一実施形態において、バランス自由度の最適な値は、この発明のオペレーションを通じて容易に決定され得る。与えられた上の式において、カットのコストは最小化され、複数のアップストリームノードがパイプラインステージを形成する。プロセスブロック６９８において、変数ｉ及び変数ｄ並びに変数Ｔが更新され、プロセスブロック６７２がバランスの取れた最小コストカットの選択を可能にすべく繰り返される。
【００４６】
一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、フローネットワークモデル内のバランスの取れた最小コストの複数のカットを選択すべく使用される。一実施形態において、そのアルゴリズムは、Proc. 18th ACM STOC  (1986)のページ136-146の、A.V. Goldberg and R.E. Tarjanによる"A New Approach To The Maximum Flow Problem"に記載された繰り返しのバランスの取れたプッシュリラベルアルゴリズムから作られる。したがって、図１４は、 Proc. IEEE Int'l Conf. Computer-Aided Design (1994)のページ50-55の、H. Yang and D.F. Wongによる" Efficient Flow Based Min-Cut Balanced Partitioning"に説明されたような、プロセスブロック６７２の最小コストカットを選択するための方法６７４を示す一フローチャートである。
【００４７】
図１５は、本発明の一実施形態に係る、パラレルアプリケーションプログラムのＤパイプラインステージへの予備のパイプラインステージの変換の方法７０２のためのフローチャートである。プロセスブロック７０４において、予備のパイプラインステージが選択される。選択されると、プロセスブロック７０６において、選択されたステージに対応する１つのＰＰＳループについての１つのコントロールフローグラフが選択される。プロセスブロック７０８において、選択された予備のステージ内に含まれない複数の命令は、選択されたコントロールフローグラフから削除される。プロセスブロック７１０において、コントロールフローグラフは、前のステージから選択された予備のステージに伝達された変数及び複数のコントロールオブジェクトに従って変換される。プロセスブロック７１２において、ＰＰＳループ本体は、１つのパイプラインステージを形成すべく、変換されたコントロールフローグラフから再構築される。
【００４８】
したがって、Ｄの予備のパイプラインステージのそれぞれについてプロセスブロック７０４−７１２を繰り返すことによって、１つのシーケンシャルなネットワークアプリケーションは、１つのパラレルなネットワークアプリケーションのＤパイプラインステージに変換される。１つの代替の実施形態において、予備のパイプラインステージの変換は、図１６に図示されたフローチャートによって示される方法７２０に従って実行される。一実施形態において、コントロール依存は、サマライズされたＣＦＧから構築される。一方で、サマライズされたＣＦＧ内の条件節は、複数の基本ブロックを含む１つのループであり得る。プロセスブロック７３０において、当該ループの後続ブロックのそれぞれの中の対応するコントロールオブジェクトに異なる値が割り当てられる。さらに、プロセスブロック７２６において、当該条件の再構築は、プロセスブロック７２６に示されるように、全ての後続のブロックに分岐することによってループを置き換える。
【００４９】
１つの代替の実施形態において、この発見的方法の効果的な実装は、プッシュリラベルアルゴリズムをイタレーション毎に最初から実行する必要がない。典型的には、プッシュリラベルアルゴリズムは、以下のようにインクリメンタルに実装され得る。すなわち、（ａ）単純なプッシュリラベルアルゴリズムを用いてフローネットワークについて最初の最小カットを発見する、（ｂ）ノードがソース又はシンクにまとめられた後に、以下の初期状態でプッシュリラベルアルゴリズムを用いて、更新された最小カットを発見する。（ｉ）ソースから流出する全てのエッジのプリフローをそれらの容量にセットして、他の複数のエッジのプリフローを変更しないまま、それに応じて超過を更新し、（ｉｉ）ソースのラベルを新たなノード数にセットし、（ｉｉｉ）複数のノードがソースにまとめられた場合、他のノードのラベルを変更せず、そうでない場合には、複数のノードをゼロにセットする。
代替の実施形態
【００５０】
シーケンシャルなネットワークアプリケーションをＤパイプラインステージの、パラレルなネットワークアプリケーションに変換することを提供する並列化コンパイラの一実装のいくつかの態様が説明された。一方で、並列化コンパイラの種々の実装は、上記の機能を補完、追加、及び／又は置換をする多くの機能を提供する。異なる実施形態の実装において、複数の機能は、マルチプロセッサの一部又はネットワークプロセッサの一部として実装され得る。また、前述の記載は、説明を目的として、本発明の実施形態の包括的な理解を提供すべく具体的な用語を使用した。一方で、その具体的な詳細がこの発明の実施形態を実施するために必要ではないことは当業者に明らかだろう。
【００５１】
さらに、本明細書に記載された一実施形態は、フローネットワーク分析を用いるＤパイプラインステージの選択に向けられているが、他のグラフ理論経験則を用いてＤパイプライン段の選択が実行され得ることが当業者に理解されるだろう。実際、データフロー分析のような経験則、又はネットワークアプリケーションのモデルを分割するための他の類似のグラフ理論経験則は、添付の請求項によって定められるように、Ｄパイプラインステージの選択のための実施形態の範囲に含まれる。上述の実施形態は、本発明の実施形態の原理及びその実際の用途を適切に説明するために選択されて説明された。これらの実施形態は、それらによって、考えられる特定用途に適するような様々な変形とともに本発明及び種々の実施形態を適切に利用することを当業者に可能にすることを目的として、選択された。
【００５２】
本発明の実施形態の多くの特徴及び利点が前述の説明において記載されたが、本発明の種々の実施形態の構成及び機能の詳細とともに、本開示は一例に過ぎないことが理解されるべきである。いくつかのケースにおいて、あるサブアッセンブリが一つのそのような実施形態とともに単に詳細に説明された。しかしながら、そのようなサブアッセンブリが本発明の他の実施形態において使用され得ることが理解及び意図される。本発明の実施形態の原理の範囲内で、添付の請求項が表す、用語の広い一般的な意義によって示される限り、変形が詳細について、特に構成要素の構成及び処理についてなされ得る。
【００５３】
開示された典型的な実施形態及びベストモードにより、続く請求項によって定められる発明の実施形態の範囲内でありつつ開示された実施形態に変更及び変形がなされ得る。
【図１】
2007511835.tif 000005
【図２Ａ】
2007511835.tif 000006
【図２Ｂ】
2007511835.tif 000007
【図３】
2007511835.tif 000008
【図４】
2007511835.tif 000009
【図５】
2007511835.tif 000010
【図６】
2007511835.tif 000011
【図７】
2007511835.tif 000012
【図８】
2007511835.tif 000013
【図９】
2007511835.tif 000014
【図１０】
2007511835.tif 000015
【図１１】
2007511835.tif 000016
【図１２】
2007511835.tif 000017
【図１３】
2007511835.tif 000018
【図１４】
2007511835.tif 000019
【図１５】
2007511835.tif 000020
【図１６】
2007511835.tif 000021
【国際調査報告】
2007511835.tif 000022
2007511835.tif 000023
2007511835.tif 000024
2007511835.tif 000025
2007511835.tif 000026