説明

パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法

いくつかの実施形態において、パイプライン変換を通じてシーケンシャルネットワークアプリケーションを自動的に並列化する方法及び装置が記載される。一実施形態において、その方法は、ネットワークプロセッサをDステージプロセッサパイプラインに構成することを含む。構成されると、シーケンシャルネットワークアプリケーションプログラムは複数のDパイプラインステージに変換される。変換されると、DパイプラインステージはDステージプロセッサパイプライン内でパラレルに実行される。一実施形態において、シーケンシャルアプリケーションプログラムの変換は、シーケンシャルネットワークプログラムをフローネットワークモデルとしてモデリングし、複数の予備のパイプラインステージへとフローネットワークモデルから選択することによって実行される。他の複数の実施形態が記載及び請求される。


【発明の詳細な説明】
【技術分野】
【0001】
本発明の1以上の実施形態は、広くネットワークプロセッサアプリケーションの分野に関する。特に、本発明の1以上の実施形態は、パイプライン変換を通じてネットワークアプリケーションを自動的に並列化するための方法及び装置に関する。
【背景技術】
【0002】
ネットワークプロセッサ(NP)は、パケット処理を実行するよう特に設計されている。従来、ネットワークプロセッサは、高速通信ルータのコア要素のようなパケット処理を実行するために使用されている。高速でのネットワークプロセッシングの独特な課題に対処すべく、現在のNPは概して高度にパラレルなマルチプロセッサアーキテクチャを持つ。例えば、インテル(登録商標)インターネット・エクスチェンジ(商標)アーキテクチャ(IXA)NPファミリに属するInternet exchange processor (IXP)シリーズは、マイクロエンジンクラスタを用いてパケットを処理するNPを含む。マイクロエンジンクラスタは、パラレルに動作する複数のマイクロエンジン(パケット処理能力を持つプログラム可能なプロセッサ)を備える。
【0003】
しかしながら、ネットワークプロセッサによって利用される高度にパラレルなマルチプロセッサアーキテクチャと対照的に、従来のネットワークアプリケーションは逐次動作を用いて安易にコーディングされる。概して、そのようなネットワークアプリケーションは、典型的には永久に動作する1つのパケット処理ユニット(パケット処理ステージ(PPS))を用いるようコーディングされる。したがって、1つの新たなパケットが到着すると、PPSは、パケットに一連のタスク(例えば、パケット受信、ルーティングテーブル検索、キューイング)を実行する結果として、それぞれのイタレーションが異なる1つのパケットを処理する無限ループ(すなわちPPSループ)として表現される。
【0004】
したがって、ネットワークプロセッサのパラレルなアーキテクチャとネットワークアプリケーションの逐次動作との間に大きなギャップが存在する。この問題に対処するひとつの方法は、並列プログラミングのパラダイムを、従来のネットワークアプリケーションのコーディングに適合させることである。当業者に知られているように、並列プログラムは、アプリケーションを複数のサブタスクに分割し、異なるサブタスクの間の同期と通信を管理し、種々のサブタスクを1つのマルチプロセッサシステムにマッピングすることを伴う。残念ながら、そのような並列プログラミングパラダイムは伝統的でなく、多くの人にとって馴染みがない。
【図面の簡単な説明】
【0005】
本発明のいくつかの実施形態が、限定を目的としてではなく実例を目的として、添付の図面の複数の図に示される。
【0006】
【図1】本発明の一実施形態に係る、1つのシーケンシャルアプリケーションプログラムのパイプライン変換を実行する並列化コンパイラを実装するコンピュータシステムのブロック図である。
【0007】
【図2A】本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。
【図2B】本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。
【0008】
【図3A】本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【図3B】本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【図3C】本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
【0009】
【図4】本発明の一実施形態に係る、図3AのシーケンシャルPPSループの初期変換を示す。
【0010】
【図5】本発明の一実施形態に係る、図3Aの1つのPPSループ本体から形成されるコントロールフローグラフ(CFG)を示す。
【0011】
【図6】本発明の一実施形態に係る、図5のCFGのサマリグラフから形成される依存グラフを示す。
【0012】
【図7】本発明の一実施形態に係る、図6の有向グラフのサマリグラフから形成されるコントロールフローモデルを示す。
【0013】
【図8】本発明の一実施形態に係る、Dステージプロセッサパイプラインを提供すべく構成された1つのネットワークプロセッサを示すブロック図である。
【0014】
【図9】本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションのパイプライン変換のための1つの方法を示すフローチャートである。
【0015】
【図10】本発明の一実施形態に係る、フローネットワークモデルの構築のためのフローチャートを示すブロック図である。
【0016】
【図11】本発明の一実施形態に係る、フローネットワークを構築するための1つの方法を示すフローチャートである。
【0017】
【図12】本発明の一実施形態に係る、フローネットワークを構築するための1つの方法を示すフローチャートである。
【0018】
【図13】本発明の一実施形態に係る、フローネットワークモデルからバランスのとれた1つの最小コストのカットを選択するための1つの方法を示すフローチャートである。
【0019】
【図14】本発明の一実施形態に係る、イタレーティブなバランスのとれたプッシュリラベルアルゴリズムを用いてネットワークフローモデルのバランスのとれた複数の最小コストのカットを実行するための1つの方法を示すフローチャートである。
【0020】
【図15】本発明の一実施形態に係る、1つのフローネットワークモデルの複数の最小カットをDパイプラインステージに変換するための1つの方法を示すフローチャートである。
【0021】
【図16】本発明の一実施形態に係る、1つのフローネットワークモデルの複数の最小カットをDパイプラインステージに変換するための1つの方法を示すフローチャートである。
【発明を実施するための最良の形態】
【0022】
パイプライン変換を通じて1つのシーケンシャルネットワークアプリケーションを自動的に並列化するための方法及び装置が説明される。一実施形態において、その方法は、1つのDステージプロセッサパイプラインへの1つのネットワークプロセッサの設定を含む。設定されると、1つのシーケンシャルネットワークアプリケーションがDパイプラインステージに変換される。変換されると、Dパイプラインステージは、Dステージプロセッサパイプライン内でパラレルに実行される。一実施形態において、ネットワークアプリケーションの変換は、ネットワークアプリケーションを1つのフローネットワークモデルとしてモデリングし、フローネットワークモデルを、複数のD−1カットがDパイプラインステージをもたらすようDパイプラインステージにカッティングすることによって実行される。
【0023】
以下の説明において、本発明の機能を説明するために特定の用語が用いられる。例えば、"ロジック"という用語は、1以上の機能を実行すべく構成されたハードウェア及び/又はソフトウェアを表す。例えば、"ハードウェア"の例は、1つの集積回路、1つの有限状態機械、又はロジックの組合せさえも含み、それらに限定又は制限されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタルシグナルプロセッサ、マイクロコントローラ、又は同種のもののような、1つのプロセッサの形をとってよい。
【0024】
"ソフトウェア"の一例は、1つのアプリケーション、1つのアプレット、1つのルーチン、又は一連の命令でさえある形の、実行可能なコードを含む。ソフトウェアは任意のタイプのコンピュータ、或いはプログラマブル電子回路、揮発性メモリ(例えば、ランダムアクセスメモリ等)及び/又は不揮発性メモリ(例えば、リードオンリーメモリ"ROM"、フラッシュメモリ)を含む半導体メモリデバイス、フレキシブルディスク、光ディスク(例えば、コンパクトディスク又はデジタルビデオディスク"DVD")、ハードディスク、テープ、又は同種のもののような機械可読メディアに記憶されてよい。
【0025】
一実施形態において、本発明は、本発明の一実施形態に従うプロセス又はオペレーションをコンピュータ(又は他の複数の電子デバイス)が実行するようプログラムするために使用される記憶された複数の命令を持つ、機械又はコンピュータ可読メディアを含む製品として提供される。コンピュータ可読メディアは、フレキシブルディスク、光ディスク、コンパクトディスク、リードオンリーメモリ(CD−ROM)、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去再書き込み可能 ROM(EPROM)、電気的消去再書き込み可能 ROM(EEPROM)、磁気又は光カード、フラッシュメモリ、又は同種のものを含むが、これらに限定されない。
【0026】
図1は、本発明の一実施形態に係る、並列化コンパイラ200を実装するコンピュータシステムを示すブロック図である。示されるように、コンピュータシステム100は、メモリコントローラハブ(MCH)120に結合された1つのCPU110、メモリ140、及びグラフィクスコントローラ130を備える。本明細書で説明されるように、MCH120はノースブリッジと呼ばれ、一実施形態においてメモリコントローラと呼ばれる。さらに、コンピュータシステム100は、I/O(入出力)コントローラハブ(ICH)160を備える。本明細書で説明されるように、ICH160はサウスブリッジ又はI/Oコントローラと呼ばれる。サウスブリッジ、すなわちICH160は、ローカルI/O150及びハードディスクドライブデバイス(HDD)190に結合される。
【0027】
示される本実施形態において、ICH160は、例えばPCI又はPCIエクスプレス、PCI−X、第3世代I/O(3GIO)、又は同種の相互接続プロトコルを含むペリフェラルコンポーネントインターコネクト(PCI)デバイス170のような、複数のI/Oデバイスを結合するI/Oバス172に結合される。MCH120及びICH160は一括して、チップセット180と呼ばれる。本明細書で説明されるように、"チップセット"という用語は、当業者が望ましいシステムの機能を実行すべくCPU110に結合された様々なデバイスを一括して表現するためによく知られた方法で用いられる。一実施形態において、メインメモリ140は、これらに限定されないが、ランダムアクセスメモリ(RAM)、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAM(DDR SDRAM)、ラムバスDRAM(RDRAM)、ダイレクトRDRAM(DRDRAM)を含む揮発性メモリである。
【0028】
従来のコンピュータシステムとは異なり、コンピュータシステム100は、1つのシーケンシャルネットワークアプリケーションを1つのDパイプラインステージのパラレルネットワークアプリケーションに変換するための並列化コンパイラ200を含む。したがって、コンパイラ200は、並列アーキテクチャと、従来のネットワークアプリケーションをコーディングするために使用されたシーケンシャルプログラミングモデルの間のギャップを埋め得る。この問題に対処するための1つの方法は、ネットワークアプリケーションを、パラレルプログラミングパラダイムを用いてコーディングすることである。残念ながら、そのようなパラレルプログラミングパラダイムは概して伝統的でなく、ネットワークプログラマにとって馴染みがない。本発明の一実施形態に従って、並列化コンパイラ200は、図2A及び2Bに示されるように、1つの逐次ネットワークアプリケーションを1つの並列ネットワークアプリケーションに自動的に変換する。
【0029】
図2Aを参照すると、シーケンシャルネットワークアプリケーションンの1つのシーケンシャルパケット処理ステージ(PPS)280が示される。図2Bに図示されるように、PPS280は、例えば図1のネットワークプロセッサ500の1つのDステージのプロセッサパイプライン内での実行のための3つのパイプラインステージのパラレルなネットワークアプリケーションパイプライン300に変換される。一実施形態において、1つのネットワークアプリケーションのシーケンシャルPPSは、例えば図3A−3Cに関連して示されるようなパイプライン変換を通じて、1つのDパイプラインステージのパラレルなネットワークアプリケーションに変換される。
【0030】

【0031】
本明細書で説明されるように、"カット"という用語は、PPSループ本体を2つの部分に分割するコントロールフローポイントの組を意味する。一括して、1つのPPSループ本体に対して実行された1以上のカットは、複数のPPSパイプラインステージを形成する。一実施形態において、PPSループ本体がDステージに分割された場合、複数のD−1カットがPPSループ本体290から選択される。一実施形態において、複数のカットは重複していない。パラレルなDパイプラインステージへのネットワークアプリケーションの変換の一実施形態において、ネットワークアプリケーションは、ネットワークアプリケーションの1つの初期の変換で始まる。
【0032】
一実施形態において、ネットワークアプリケーションプログラムは、静的単一代入(SSA)形式に変換される。典型的には、シーケンシャルPPS290(図3A)は、図4に示されるように1つのSSAコードシーケンス400に変換される。変換されると、図3AのPPSループ290のPPS本体について、1つのコントロールフローグラフが図4のSSAコードシーケンス400から形成される。一実施形態において、図3AのPPSループ本体は、図5に示されるように、1つのコントロールフローグラフ(CFG)としてモデル化される。本明細書で説明されるように、CFGは、それぞれの節点が1つの基本ブロックを表す、プログラムのコントロールのフローを表すグラフであり、それぞれのエッジが、基本ブロック間のコントロールのポテンシャルフローを表す。CFGは固有のソースノード(エントリ)を持つ。
【0033】
典型的には、コントロールフローグラフ内のそれぞれのノードは、全てのカットが適用されると1つのパイプラインステージ内にあることが要求される。一実施形態において、図5のCFG420の複数の強連結構成要素(SSC)ノードが特定される。1つのSSCは、S内のいずれのノードがS内の他のいずれのノードから到達可能であり、Sがより大きいそのようないずれのセットのサブセットでないような、有向グラフの複数のノードのサブセットSである。一旦特定されると、CFG420のサマリが形成される。一実施形態において、サマリグラフ内での複数のSSCノードの識別は、後のステージからの前のステージへのコントロール依存を除くために用いられる。したがって、一実施形態において、パイプライン変換は、本明細書で説明されたように、場合によってはループである、CFG4240のいずれのSSCノードを分割しない。
【0034】
図6に示されるように、図5のCFG420のサマリグラフから依存グラフが形成される。一実施形態において、依存グラフ(DG)460は、前のステージから後のステージへのデータ依存を除くために使用される。一実施形態において、DG460は、非ループキャリーデータ及びコントロール依存に加えて、PPSループキャリーフロー依存を示す。したがって、PPSループキャリーフロー依存のソース及びシンクは、通例DG460の同じSSCノードの中にある。有向グラフ460から有向グラフのサマリが形成され、その中に複数のSSCノードも特定する。したがって、依存グラフ460についての複数のSSCノードは、パイプライン変換が、1以上の隣り合うカット上にSSC全体を配置するカットの考察に限られることを保証する。
【0035】
図7に関連して示されるように、一実施形態において、1つのコントロールフローモデル480は、図6の有向グラフ460の1つのサマリグラフから形成される。フローネットワークモデルは、1つの固有なソースノード及び1つの固有なシンクノード、並びに複数の命令を含む複数のプログラムノードを有する。固有なソース及びシンクノード並びに複数の命令を含むプログラムノードに加えて、変数ノード及びコントロールノードが、ライブセット内に含まれ得るそれぞれのオブジェクトについてフローネットワーク内に導入される。SSA変換(図4)の後、全ての変数はただ1つの定義ポイントを持ち、したがってただ1つの定義エッジを持つ。これはコントロールノードの場合も同様である。
【0036】
したがって、定義エッジに関連する重み(容量)(複数の変数についてのVCost及び複数のコントロールオブジェクトについてのCCost)は、エッジがカットである場合に関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。その上、そのようなエッジをカットすることがライブセットデータのいずれの伝達も招かないので、ソースから流出してシンクに流入するエッジの重みはゼロに設定される。他のエッジの全ては、それらがカッティングを受けないよう無限量の重みを持つ。図7のフローネットワークモデル480から、バランスのとれたコードサイズをもたらす複数のカットが選択され得る。
【0037】
一実施形態において、選択された複数のカットは、1以上の以下の規則に従うことが通例要求される。選択された複数のカットは、後のステージから前のステージへのいずれのデータ又はコントロール依存を排除する。さらに、一実施形態は、隣接するステージの間の境界に存続するデータの最小化を要求する。本明細書で説明されるように、隣接するステージの境界に存続するデータは、"ライブセットデータ"と呼ばれる。さらなる実施形態において、複数のライブカットの選択は、アプリケーションプログラムステージの間でバランスの取れたコードサイズを提供するよう要求される。一実施形態において、複数のカットの選択は、バランスの取れた最小コストカットを提供するよう要求される。一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、図7のネットワークモデル内のバランスの取れた、最小コストの複数のカットを選択すべく利用される。
【0038】
図8は、本発明の一実施形態に係る、Dステージプロセッサパイプラインを提供すべく構成されたネットワークプロセッサ(NP)100を示すブロック図である。典型的には、2以上のプロセッサが、それぞれのステージがPPSループの一部を持つ1つのパイプラインとして組織化される。したがって、プロセッサ当たりのリソース(例えば、キャッシュ)はより大量に利用され得る。それぞれのパケットの処理をパイプライン化することによって、パケット処理についての厳しいパフォーマンス費用が、全てのパイプラインステージにわたって分散され得る。したがって、ネットワークアプリケーションのスループットが向上される。前のステージから後のステージからの依存を除くことは、元のPPSループのそれぞれのイタレーションの間での複雑な同期を回避する。バランスの取れた最小コストカットを選択することによって、ステージ間の通信が低減される。本発明の実施形態を実装するための手続き的な方法が、以下に説明される。
オペレーション
【0039】
図9は、本発明の一実施形態に係る、シーケンシャルネットワークアプリケーションのようなシーケンシャルアプリケーションプログラムの600のパイプライン変換についての方法を示すフローチャートである。プロセスブロック602において、1つのシーケンシャルネットワークアプリケーションについて1つのフローネットワークモデルが構築される。構築されると、プロセスブロック660において、フローネットワークモデルが、予備的な複数の(D)パイプラインステージに分割される。一実施形態において、フローネットワークモデルは、例えば図8のNP500のDステージのプロセッサパイプライン内での実行のために、Dパイプラインステージに分割される。一実施形態において、フローネットワークモデルは、図7のフローネットワークモデル480によって示されるように形成される。プロセスブロック700において、Dの予備パイプラインステージは、図2Bのアプリケーション300のような、パラレルネットワークアプリケーションのDパイプラインステージを形成すべく、それらの間のコントロールフロー及び変数伝達を実行するよう修正される。
【0040】
図10は、本発明の一実施形態に係る、図9のプロセスブロック602のフローネットワークモデルを構築するための方法604を示す一フローチャートである。プロセスブロック606において、例えば図4に図示されたように、シーケンシャルアプリケーションプログラムは静的単一代入(SSA)形式に変換される。プロセスブロック608において、例えば図5に関連して示されたように、アプリケーションプログラムのループ本体から1つのコントロールフローグラフ(CFG)が構築される。プロセスブロック512において、例えば図7に関連して示されたように、1つの依存グラフ(DG)が、プロセスブロック610で形成されたCFGのサマリグラフ及びCFGの特定された複数の強連結構成要素(SSC)に基づいて、構築される。プロセスブロック616において、フローノードモデルが、プロセスブロック614で形成されたDGのサマリグラフ及びDGの特定された複数のSSCノードに従って、構築される。一実施形態において、図7に関連して示されたようなフローネットワークモデルが、図3Aのシーケンシャルアプリケーションプログラム290から生成される。
【0041】
図11は、本発明の一実施形態に係る、図10のプロセスブロック616のフローネットワークモデルを構築するための方法618を示すフローチャートである。プロセスブロック620において、フローネットワークモデルは、固有な1つのソース及び固有な1つのシンクノードが割り当てられる。加えられると、プロセスブロック622において、DGのサマリグラフ内で特定されたそれぞれのSSCノードについて1つのプログラムノードがフローネットワークモデルに加えられる。複数のプログラムノードが加えられると、プロセスブロック624において、複数のプログラムノードによって定義されて使用されるアプリケーションプログラムのそれぞれの変数について1つの変数ノードがフローネットワークに加えられる。
【0042】
プロセスブロック626において、DGのサマリグラフ内でコントロール依存のソースであると特定されたそれぞれのSSCノードについて1つのコントロールノードがフローネットワークに加えられる。プロセスブロック628において、対応する複数のプログラムノードを対応する複数の変数ノードに接続すべく、複数のエッジが生成される。プロセスブロック630において、対応する複数のプログラムノードを対応する複数のコントロールノードに接続すべく、複数のエッジが生成される。一実施形態において、それぞれの生成されたエッジに1つの重みが割り当てられる。プロセスブロック632において、複数のプログラムノードとソースノード及びシンクノードのうちの1つとの間に複数のエッジが生成される。一実施形態において、1つのフローネットワークモデルは、図12に示されるように、方法636を示す一フローチャートに従って形成される。
【0043】
フローネットワークモデルが形成されると、一実施形態において、複数の定義エッジに関連する重み(又は容量)(複数の変数についてのVCost及び複数のコントロールオブジェクトについてのCCost)は、フローネットワークモデル内の対応するエッジがカットである場合に、関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。このように、一実施形態において、フローネットワークモデルが形成されると、フローネットワークモデルがD(パイプラインの段数)のステージに分割される。したがって、この変換は、D−1の連続する複数のカットを、それぞれのカットがバランスの取れた最小コストのカットであるように、例えばネットワークアプリケーションプログラムのパケットプロセッシングステージ(PPS)に適用する。
【0044】
図13は、本発明の一実施形態に係る、図9のプロセスブロック660のフローネットワークモデルのカッティングを実行するための方法661を示す一フローチャートである。プロセスブロック662において、それぞれのプログラムノード(W(N))の重みは、対応するノード内に含まれる命令の数に設定される。プロセスブロック664において、フローネットワークモデル内の非プログラムノードNのそれぞれに0の重みが設定される。プロセスブロック665において、フローネットワークモデル内のそれぞれのプログラムノードNについての重み(W(N))の合計が、値(T)内に記憶される。プロセスブロック668において、変数iは値1に設定され、変数dは値D(パイプラインの段数)に設定される。プロセスブロック670において、変数iが変数d、すなわちパイプライン段数より小さいか否かが判断される。したがって、プロセスブロック672において、以下のように、バランスの取れた最小コストカットアルゴリズムが、フローネットワークモデル内の1つのカットを選択すべく使用される。
【数1】

【0045】
一実施形態において、dはバランスの程度であり、eは、1から0の範囲の予め定められた定数である、バランス自由度である。バランス自由度は、カットのバランスと重みとの間のトレードオフを反映する。バランス自由度が0に近い場合には、このアルゴリズムは、より小さく重み付けされたカットではなくよりバランスのとれたカットを検索する。代わりに、バランス自由度が1に近い場合には、アルゴリズムは、より小さくバランスのとれたカットではなくより重み付けされたカットを検索し、重みの最小化がより重要であるとみなされる。一実施形態において、バランス自由度の最適な値は、この発明のオペレーションを通じて容易に決定され得る。与えられた上の式において、カットのコストは最小化され、複数のアップストリームノードがパイプラインステージを形成する。プロセスブロック698において、変数i及び変数d並びに変数Tが更新され、プロセスブロック672がバランスの取れた最小コストカットの選択を可能にすべく繰り返される。
【0046】
一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、フローネットワークモデル内のバランスの取れた最小コストの複数のカットを選択すべく使用される。一実施形態において、そのアルゴリズムは、Proc. 18th ACM STOC (1986)のページ136-146の、A.V. Goldberg and R.E. Tarjanによる"A New Approach To The Maximum Flow Problem"に記載された繰り返しのバランスの取れたプッシュリラベルアルゴリズムから作られる。したがって、図14は、 Proc. IEEE Int'l Conf. Computer-Aided Design (1994)のページ50-55の、H. Yang and D.F. Wongによる" Efficient Flow Based Min-Cut Balanced Partitioning"に説明されたような、プロセスブロック672の最小コストカットを選択するための方法674を示す一フローチャートである。
【0047】
図15は、本発明の一実施形態に係る、パラレルアプリケーションプログラムのDパイプラインステージへの予備のパイプラインステージの変換の方法702のためのフローチャートである。プロセスブロック704において、予備のパイプラインステージが選択される。選択されると、プロセスブロック706において、選択されたステージに対応する1つのPPSループについての1つのコントロールフローグラフが選択される。プロセスブロック708において、選択された予備のステージ内に含まれない複数の命令は、選択されたコントロールフローグラフから削除される。プロセスブロック710において、コントロールフローグラフは、前のステージから選択された予備のステージに伝達された変数及び複数のコントロールオブジェクトに従って変換される。プロセスブロック712において、PPSループ本体は、1つのパイプラインステージを形成すべく、変換されたコントロールフローグラフから再構築される。
【0048】
したがって、Dの予備のパイプラインステージのそれぞれについてプロセスブロック704−712を繰り返すことによって、1つのシーケンシャルなネットワークアプリケーションは、1つのパラレルなネットワークアプリケーションのDパイプラインステージに変換される。1つの代替の実施形態において、予備のパイプラインステージの変換は、図16に図示されたフローチャートによって示される方法720に従って実行される。一実施形態において、コントロール依存は、サマライズされたCFGから構築される。一方で、サマライズされたCFG内の条件節は、複数の基本ブロックを含む1つのループであり得る。プロセスブロック730において、当該ループの後続ブロックのそれぞれの中の対応するコントロールオブジェクトに異なる値が割り当てられる。さらに、プロセスブロック726において、当該条件の再構築は、プロセスブロック726に示されるように、全ての後続のブロックに分岐することによってループを置き換える。
【0049】
1つの代替の実施形態において、この発見的方法の効果的な実装は、プッシュリラベルアルゴリズムをイタレーション毎に最初から実行する必要がない。典型的には、プッシュリラベルアルゴリズムは、以下のようにインクリメンタルに実装され得る。すなわち、(a)単純なプッシュリラベルアルゴリズムを用いてフローネットワークについて最初の最小カットを発見する、(b)ノードがソース又はシンクにまとめられた後に、以下の初期状態でプッシュリラベルアルゴリズムを用いて、更新された最小カットを発見する。(i)ソースから流出する全てのエッジのプリフローをそれらの容量にセットして、他の複数のエッジのプリフローを変更しないまま、それに応じて超過を更新し、(ii)ソースのラベルを新たなノード数にセットし、(iii)複数のノードがソースにまとめられた場合、他のノードのラベルを変更せず、そうでない場合には、複数のノードをゼロにセットする。
代替の実施形態
【0050】
シーケンシャルなネットワークアプリケーションをDパイプラインステージの、パラレルなネットワークアプリケーションに変換することを提供する並列化コンパイラの一実装のいくつかの態様が説明された。一方で、並列化コンパイラの種々の実装は、上記の機能を補完、追加、及び/又は置換をする多くの機能を提供する。異なる実施形態の実装において、複数の機能は、マルチプロセッサの一部又はネットワークプロセッサの一部として実装され得る。また、前述の記載は、説明を目的として、本発明の実施形態の包括的な理解を提供すべく具体的な用語を使用した。一方で、その具体的な詳細がこの発明の実施形態を実施するために必要ではないことは当業者に明らかだろう。
【0051】
さらに、本明細書に記載された一実施形態は、フローネットワーク分析を用いるDパイプラインステージの選択に向けられているが、他のグラフ理論経験則を用いてDパイプライン段の選択が実行され得ることが当業者に理解されるだろう。実際、データフロー分析のような経験則、又はネットワークアプリケーションのモデルを分割するための他の類似のグラフ理論経験則は、添付の請求項によって定められるように、Dパイプラインステージの選択のための実施形態の範囲に含まれる。上述の実施形態は、本発明の実施形態の原理及びその実際の用途を適切に説明するために選択されて説明された。これらの実施形態は、それらによって、考えられる特定用途に適するような様々な変形とともに本発明及び種々の実施形態を適切に利用することを当業者に可能にすることを目的として、選択された。
【0052】
本発明の実施形態の多くの特徴及び利点が前述の説明において記載されたが、本発明の種々の実施形態の構成及び機能の詳細とともに、本開示は一例に過ぎないことが理解されるべきである。いくつかのケースにおいて、あるサブアッセンブリが一つのそのような実施形態とともに単に詳細に説明された。しかしながら、そのようなサブアッセンブリが本発明の他の実施形態において使用され得ることが理解及び意図される。本発明の実施形態の原理の範囲内で、添付の請求項が表す、用語の広い一般的な意義によって示される限り、変形が詳細について、特に構成要素の構成及び処理についてなされ得る。
【0053】
開示された典型的な実施形態及びベストモードにより、続く請求項によって定められる発明の実施形態の範囲内でありつつ開示された実施形態に変更及び変形がなされ得る。

【特許請求の範囲】
【請求項1】
1以上のプロセッサをDステージのプロセッサパイプラインに配置する段階と、
1つのシーケンシャルアプリケーションプログラムを複数のDパイプラインステージに変換する段階と、
前記複数のDパイプラインステージを、前記Dステージのプロセッサパイプライン内でパラレルに実行する段階と
を備える方法。
【請求項2】
前記シーケンシャルアプリケーションプログラムを変換する段階は、
前記シーケンシャルアプリケーションプログラムについて1つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルから複数の予備のパイプラインステージを選択する段階と、
前記複数のDパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変更する段階と
を有する請求項1に記載の方法。
【請求項3】
前記フローネットワークモデルを構築する段階は、
前記アプリケーションプログラムを1つの静的単一代入形式に変換する段階と、
前記アプリケーションプログラムの1つのループ本体について1つのコントロールフローグラフを構築する段階と、
前記コントロールフローグラフの1つのサマリグラフ及び前記コントロールフローグラフの特定された強連結構成要素(SSC)に基づいて1つの依存グラフを構築する段階と、
前記依存グラフの1つのサマリグラフ及び特定された前記依存グラフの複数のSSCノードに従って前記フローネットワークモデルを構築する段階と
を含む請求項2に記載の方法。
【請求項4】
前記フローネットワークモデルを構築する段階は、
1つの固有なソースノード及び1つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
前記依存グラフの前記サマリグラフにおいて特定されたそれぞれのSSCノードについて1つのプログラムノードを前記フローネットワークモデルに加える段階と、
複数のプログラムノードによって定義されて使用されるそれぞれの変数について1つの変数ノードを前記フローネットワークモデルに加える段階と、
前記依存グラフの前記サマリグラフにおいてコントロール依存の1つのソースとして特定されたそれぞれのSSCノードについて1つのコントロールノードCを前記フローネットワークモデルに加える段階と、
対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階と
を含む請求項3に記載の方法。
【請求項5】
対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
(i)1つの変数ノードVを定める1つのプログラムノードNを選択する段階と、
(ii)前記フローネットワークモデルに、1つの重みVCostを持つノードNからノードVへの定義エッジを加える段階と、
(iii)1つの変数ノードVを定義するそれぞれのプログラムノードNについて(i)−(ii)を繰り返す段階と、
(iv)1つの変数ノードWを使用する1つのプログラムノードMを選択する段階と、
(v)前記フローネットワークモデルに、1つの割り当てられた無限量の重みを持つ前記ノードWから前記ノードMへの1つのエッジを加える段階と、
(vi)1つの変数ノードWを使用するそれぞれのプログラムノードMについて(iv)−(v)を繰り返す段階と
をさらに持つ請求項4に記載の方法。
【請求項6】
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
(i)1つの関連づけられたコントロールノードCを持つ1つのプログラムノードNを選択する段階と、
(ii)前記選択されたノードNから前記関連づけられたコントロールノードCへの1つの定義エッジを加える段階と、
(iii)1つの重みCCostを前記エッジに関連づける段階と、
(iv)1つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
(v)他のプログラムノードMに1つのコントロール依存を持つ1つのプログラムノードNを選択する段階と、
(vi)Mを前記コントロールノードCに関連づける段階と、
(vii)前記関連づけられたコントロールノードCから前記選択されたプログラムノードNへの1つのエッジを加える段階と、
(viii)前記エッジに無限量の重みを割り当てる段階と、
(ix)他のプログラムノードMに1つのコントロール依存を持つそれぞれのノードNについて(v)−(viii)を繰り返す段階と
を持つ請求項4に記載の方法。
【請求項7】
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階は、
(i)前記フローネットワークモデルにおいて先行ノードを持たない1つのプログラムノードを選択する段階と、
(ii)前記ソースノードから前記選択されたプログラムノードへの1つのエッジを加える段階と、
(iii)ゼロの重みを前記エッジに割り当てる段階と、
(iv)先行ノードを持たないそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
(v)前記フローネットワークにおいて後続ノードを持たない1つのプログラムノードを選択する段階と、
(vi)前記選択されたプログラムノードから前記シンクノードへの1つのエッジを加える段階と、
(vii)ゼロの重みを前記加えられたエッジに割り当てる段階と、
(viii)前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて(v)−(vii)を繰り返す段階と
を持つ請求項4に記載の方法。
【請求項8】
前記複数の予備のパイプラインステージを選択する段階は、
それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルを複数のD−1の連続するカットにカットする段階
を含む請求項2に記載の方法。
【請求項9】
カットする段階は、1つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
請求項8に記載の方法。
【請求項10】
前記複数の予備のパイプラインステージを変更する段階は、
1つの予備のパイプラインステージを選択する段階と、
前記選択された予備のパイプラインステージへの及び前記選択された予備のパイプラインステージからの複数のライブ変数の適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
前記複数の選択された予備のパイプラインステージへの及び前記複数の選択された予備のパイプラインステージからのコントロールフローの適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
それぞれの予備のパイプラインステージについて、前記選択する段階、変更する段階、及び変更する段階を繰り返して、1つのパラレルネットワークアプリケーションの前記複数のDパイプラインステージを形成する段階と
を含む請求項2に記載の方法。
【請求項11】
記憶された複数の命令を持つ機械可読命令を備える製品であって、前記複数の命令が、
1以上のプロセッサをDステージのプロセッサパイプラインに配置する段階と、
1つのシーケンシャルアプリケーションプログラムを複数のDパイプラインステージに変換する段階と、
前記複数のDパイプラインステージを、前記Dステージのプロセッサパイプライン内でパラレルに実行する段階と
を備える方法を実行すべくシステムをプログラムするために使用される製品。
【請求項12】
前記シーケンシャルアプリケーションプログラムを変換する段階は、
前記シーケンシャルアプリケーションプログラムについて1つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルから複数の予備のパイプラインステージを選択する段階と、
前記複数のDパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変更する段階と
を有する請求項11に記載の製品。
【請求項13】
前記フローネットワークモデルを構築する段階は、
前記アプリケーションプログラムを1つの静的単一代入形式に変換する段階と、
前記アプリケーションプログラムの1つのループ本体について1つのコントロールフローグラフを構築する段階と、
前記コントロールフローグラフの1つのサマリグラフ及び前記コントロールフローグラフの特定された強連結構成要素(SSC)に基づいて1つの依存グラフを構築する段階と、
前記依存グラフの1つのサマリグラフ及び特定された前記依存グラフの複数のSSCノードに従って前記フローネットワークモデルを構築する段階と
を含む請求項12に記載の製品。
【請求項14】
前記フローネットワークモデルを構築する段階は、
1つの固有なソースノード及び1つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
前記依存グラフの前記サマリグラフにおいて特定されたそれぞれのSSCノードについて1つのプログラムノードを前記フローネットワークモデルに加える段階と、
複数のプログラムノードによって定義されて使用されるそれぞれの変数について1つの変数ノードを前記フローネットワークモデルに加える段階と、
前記依存グラフの前記サマリグラフにおいてコントロール依存の1つのソースとして特定されたそれぞれのSSCノードについて1つのコントロールノードCを前記フローネットワークモデルに加える段階と、
対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階と
を含む請求項13に記載の製品。
【請求項15】
対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
(i)1つの変数ノードVを定める1つのプログラムノードNを選択する段階と、
(ii)前記フローネットワークモデルに、1つの重みVCostを持つノードNからノードVへの定義エッジを加える段階と、
(iii)1つの変数ノードVを定義するそれぞれのプログラムノードNについて(i)−(ii)を繰り返す段階と、
(iv)1つの変数ノードWを使用する1つのプログラムノードMを選択する段階と、
(v)前記フローネットワークモデルに、1つの割り当てられた無限量の重みを持つ前記ノードWから前記ノードMへの1つのエッジを加える段階と、
(vi)1つの変数ノードWを使用するそれぞれのプログラムノードMについて(iv)−(v)を繰り返す段階と
をさらに持つ請求項14に記載の製品。
【請求項16】
対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
(i)1つの関連づけられたコントロールノードCを持つ1つのプログラムノードNを選択する段階と、
(ii)前記選択されたノードNから前記関連づけられたコントロールノードCへの1つの定義エッジを加える段階と、
(iii)1つの重みCCostを前記エッジに関連づける段階と、
(iv)1つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
(v)他のプログラムノードMに1つのコントロール依存を持つ1つのプログラムノードNを選択する段階と、
(vi)Mを前記コントロールノードCに関連づける段階と、
(vii)前記関連づけられたコントロールノードCから前記選択されたプログラムノードNへの1つのエッジを加える段階と、
(viii)前記エッジに無限量の重みを割り当てる段階と、
(ix)他のプログラムノードMに1つのコントロール依存を持つそれぞれのノードNについて(v)−(viii)を繰り返す段階と
を持つ請求項14に記載の製品。
【請求項17】
前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階は、
(i)前記フローネットワークモデルにおいて先行ノードを持たない1つのプログラムノードを選択する段階と、
(ii)前記ソースノードから前記選択されたプログラムノードへの1つのエッジを加える段階と、
(iii)ゼロの重みを前記エッジに割り当てる段階と、
(iv)先行ノードを持たないそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
(v)前記フローネットワークにおいて後続ノードを持たない1つのプログラムノードを選択する段階と、
(vi)前記選択されたプログラムノードから前記シンクノードへの1つのエッジを加える段階と、
(vii)ゼロの重みを前記加えられたエッジに割り当てる段階と、
(viii)前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて(v)−(vii)を繰り返す段階と
を持つ請求項14に記載の製品。
【請求項18】
前記複数の予備のパイプラインステージを選択する段階は、
それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルを複数のD−1の連続するカットにカットする段階
を含む請求項12に記載の製品。
【請求項19】
カットする段階は、1つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
請求項18に記載の製品。
【請求項20】
前記複数の予備のパイプラインステージを変更する段階は、
1つの予備のパイプラインステージを選択する段階と、
前記選択された予備のパイプラインステージへの及び前記選択された予備のパイプラインステージからの複数のライブ変数の適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
前記複数の選択された予備のパイプラインステージへの及び前記複数の選択された予備のパイプラインステージからのコントロールフローの適切な伝達を可能にすべく、前記選択された予備のパイプラインステージを変更する段階と、
それぞれの予備のステージについて、前記選択する段階、変更する段階、及び変更する段階を繰り返して、1つのパラレルネットワークアプリケーションの前記複数のDパイプラインステージを形成する段階と
請求項12に記載の製品。
【請求項21】
1つのシーケンシャルアプリケーションプログラムから1つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルを複数の予備のパイプラインステージにカットする段階と、
1つのパラレルアプリケーションプログラムの複数のDパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変換する段階と
を備える方法。
【請求項22】
前記複数の予備のアプリケーションプログラムステージを変換する段階は、
(i)1つの予備のアプリケーションプログラムステージを選択する段階と、
(ii)前記選択された予備のアプリケーションプログラムステージに対応する1つのパケットプロセッシングステージ(PPS)ループについて生成された1つのコントロールフローグラフを選択する段階と、
(iii)前記選択された予備のパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
(iv)前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
(v)1つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからPPSループを再構築する段階と、
1つのパラレルネットワークアプリケーションプログラムのDパイプラインステージを形成すべく、それぞれの予備のパイプラインステージについて(i)−(v)を繰り返す段階と、
を有する請求項21に記載の方法。
【請求項23】
前記コントロールフローを変換する段階は、
前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して1つの条件命令を構築する段階と、
前記CFG内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
をさらに有する請求項22に記載の方法。
【請求項24】
前記コントロールフローを変換する段階は、
前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
をさらに有する請求項22に記載の方法。
【請求項25】
前記コントロールフローグラフを変換する段階は、
次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた1つの条件ノードの代替の後続ノードのそれぞれの中の前記コントロールオブジェクトの代替の値を配置する段階と、
前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
をさらに有する請求項22に記載の方法。
【請求項26】
記憶された複数の命令を持つ機械可読命令を備える製品であって、前記複数の命令が、
1つのシーケンシャルアプリケーションプログラムから1つのフローネットワークモデルを構築する段階と、
前記フローネットワークモデルを複数の予備のパイプラインステージにカットする段階と、
1つのパラレルアプリケーションプログラムの複数のDパイプラインステージを形成すべくコントロールフロー及び変数の間の伝達を実行して、前記複数の予備のパイプラインステージを変換する段階と
を備える方法を実行すべくシステムをプログラムするために使用される製品。
【請求項27】
前記複数の予備のアプリケーションプログラムを変換する段階は、
(i)1つの予備のアプリケーションプログラムステージを選択する段階と、
(ii)前記選択された予備のアプリケーションプログラムステージに対応する1つのパケットプロセッシングステージ(PPS)ループについて生成された1つのコントロールフローグラフを選択する段階と、
(iii)前記選択された予備のパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
(iv)前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
(v)1つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからPPSループを再構築する段階と、
1つのパラレルネットワークアプリケーションプログラムのDパイプラインステージを形成すべく、それぞれの予備のパイプラインステージについて(i)−(v)を繰り返す段階と、
を有する請求項26に記載の製品。
【請求項28】
前記コントロールフローグラフを変換する段階は、
前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して1つの条件命令を構築する段階と、
前記コントロールフローグラフ内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
をさらに有する請求項26に記載の製品。
【請求項29】
前記コントロールフローグラフを変換する段階は、
前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
をさらに有する請求項26に記載の製品。
【請求項30】
前記コントロールフローグラフを変換する段階は、
次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールオブジェクトの代替の値を、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた1つの条件ノードの代替の後続ノードのそれぞれの中に配置する段階と、
前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
をさらに有する請求項28に記載の製品。
【請求項31】
1つのプロセッサと、
前記プロセッサに結合された1つのメモリであって、1つのシーケンシャルアプリケーションプログラムのDパイプラインステージへの変換を生じさせ、1つのDステージのプロセッサパイプライン内で前記Dパイプランステージの並列実行を可能にする1つのコンパイラを有するメモリと
を備える装置。
【請求項32】
前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての1つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数の予備のパイプラインステージの選択を生じさせ、前記複数のDパイプランステージを形成すべくコントロールフロー及び変数の間の変換を実行して前記複数の予備のパイプラインステージの変更を生じさせる
請求項31に記載の装置。
【請求項33】
前記コンパイラは、前記複数のDの予備パイプラインステージを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのD−1の連続する複数のカットを生じさせる
請求項32に記載の装置。
【請求項34】
1つのプロセッサと、
前記プロセッサに結合された1つのメモリコントローラと、
前記プロセッサに結合された1つのDDR SRAMメモリであって、1つのシーケンシャルアプリケーションプログラムのDアプリケーションプログラムステージへの変換を生じさせ、1つのDステージのプロセッサパイプライン内で前記Dアプリケーションプログラムステージの並列実行を可能にする1つのコンパイラを有するDDR SRAMメモリと
を備えるシステム。
【請求項35】
前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての1つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数の予備のパイプラインステージの選択を生じさせ、前記複数のDパイプランステージを形成すべくコントロールフロー及び変数の間の変換を実行して前記複数の予備のパイプラインステージの変更を生じさせる
請求項34に記載のシステム。
【請求項36】
前記コンパイラは、前記複数のDの予備パイプラインステージを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのD−1の連続する複数のカットを生じさせる
請求項35に記載のシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公表番号】特表2007−511835(P2007−511835A)
【公表日】平成19年5月10日(2007.5.10)
【国際特許分類】
【出願番号】特願2006−539703(P2006−539703)
【出願日】平成16年11月5日(2004.11.5)
【国際出願番号】PCT/US2004/037160
【国際公開番号】WO2005/050444
【国際公開日】平成17年6月2日(2005.6.2)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】