(57)【要約】【課題】ユーザのスキルに依存することなく、最適なモジュール分割を行なえるようにする。【解決手段】データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出するコスト算出部２１と、前記コスト算出部２１によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する選択部２２と、を有する。【選択図】図７
2018112865.tif 000002
【特許請求の範囲】
【請求項１】
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出するコスト算出部と、
前記コスト算出部によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する選択部と、を有する、情報処理装置。
【請求項２】
前記所定コストは、最小コストである、請求項１に記載の情報処理装置。
【請求項３】
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、請求項１または請求項２に記載の情報処理装置。
【請求項４】
各モジュール分割候補に関する制約条件が予め設定され、
前記コスト算出部は、前記制約条件を満たすモジュール分割候補を作成する、または、前記選択部は、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、請求項１〜請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、請求項４に記載の情報処理装置。
【請求項６】
前記コスト算出部は、前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、請求項１〜請求項５のいずれか一項に記載の情報処理装置。
【請求項７】
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、
処理を、コンピュータに実行させる、プログラム。
【請求項８】
コンピュータによって実行される情報処理方法であって、
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理装置、プログラム、および情報処理方法に関する。
【背景技術】
【０００２】
近年、ＩＴビジネスの拡大に伴い、ＣＰＵ等のプロセッサによって実行されるソフトウェアを、ＬＳＩやＦＰＧＡ等の専用ハードウェアによって実行する、アクセラレーション技術の需要が増えてきている。アクセラレーション技術としては、ソフトウェアコードをハードウェアに変換する高位合成（ＨＬＳ）を行なうツールが実用化されている。なお、ＩＴはInformation Technologyの略記であり、ＣＰＵはCentral Processing Unitの略記であり、ＬＳＩはLarge Scale Integration circuitの略記である。ＦＰＧＡはFlexible Programmable Gate Arrayの略記であり、ＨＬＳはHigh-Level Synthesisの略記である。
【０００３】
通常、高位合成ツールによって扱うことのできる回路規模には限界がある。このため、アクセラレーションを行なう際には、与えられたソフトウェアコードを適切なサイズのモジュールに分割する、モジュール分割が行なわれる。このとき、モジュール分割の良し悪しは、レイアウト合成に要する工数や、最終的に得られたハードウェア回路の達成性能に大きく関わることが、経験上、知られている。ここで、レイアウト合成は、分割された複数のモジュールのそれぞれについて得られる高位合成結果（論理回路データ）を、ハードウェア回路データに合成する工程である。
【０００４】
一般に、上述したモジュール分割は、ソフトウェア設計およびハードウェア設計の両方の知識と経験を有する熟練者の人手作業によって行なわれる。このため、モジュール分割の良し悪しは、ユーザのスキルに依存することになる。したがって、ユーザのスキルに依存することなく、レイアウト合成を考慮した最適なモジュール分割を自動的に行なうことのできるツールの開発が望まれている。
【０００５】
現状では、例えば、ＲＴＬ（Register Transfer Level）のノード間の結線関係を示すグラフを生成し、生成したグラフを、予め用意された分割規則に従って分割し、最適な規模の部分回路を再構成する技術が提案されている（特許文献１参照）。また、例えば、データフローグラフに基づき消費電力を削減するようにモジュール分割を行なうべく、データフローグラフをデータパス上の中央点で二分割する操作を繰り返し、分割時に複数の分割候補がある場合、分割境界を横切るエッジ数（カット数）が最小となる分割候補を選択する技術が提案されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２２２４４２号公報
【特許文献２】特開２０１０−１１３４０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した前者の技術では、分割対象が、予め登録された既知の機能モジュールに限られる。このため、最適なモジュール分割を行なうことは困難である。
【０００８】
また、上述した後者の技術では、分割時に、二つのモジュールのパス長の平均化とモジュール間のカット数とが考慮されるが、データフローグラフ全体のカット数は考慮されていない。このため、データフローグラフ全体のカット数が最適になる保証が無く、最適なモジュール分割を行なうことは困難である。
【０００９】
一つの側面では、本件明細書に開示の発明は、ユーザのスキルに依存することなく、最適なモジュール分割を行なえるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本件の情報処理装置は、コスト算出部および選択部を有する。前記コスト算出部は、データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出する。前記選択部は、前記コスト算出部によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する。
【発明の効果】
【００１１】
ユーザのスキルに依存することなく、最適なモジュール分割を行なうことができる。
【図面の簡単な説明】
【００１２】
【図１】アクセラレーション工程を説明するフローチャートである。
【図２】（Ａ）はソフトウェアコードの一例を示す図、（Ｂ）は（Ａ）に示すソフトウェアコードから生成されるモジュール分割対象のデータフローグラフの一例を示す図、（Ｃ）は（Ｂ）に示すデータフローグラフについての高位合成に適したモジュール分割結果の一例を示す図である。
【図３】（Ａ）はソフトウェアコードの具体例を示す図、（Ｂ）は（Ａ）に示すソフトウェアコードから生成されるモジュール分割対象のデータフローグラフの具体例を示す図である。
【図４】（Ａ）は図３（Ａ）に示すソフトウェアコードのオリジナル記述に基づく図３（Ｂ）に示すデータフローグラフのモジュール分割結果を示す図、（Ｂ）は本実施形態による図３（Ｂ）に示すデータフローグラフの最適モジュール分割結果を示す図である。
【図５】本発明の一実施形態としての情報処理装置のハードウェア構成の一例を示すブロック図である。
【図６】本発明の一実施形態としての情報処理装置の機能構成の一例を示すブロック図である。
【図７】図６に示す情報処理装置の機能構成をより具体的に説明するブロック図である。
【図８】本実施形態におけるＴＦＩ（transitive fan-in）を説明する図である。
【図９】（Ａ）はモジュール分割対象のデータフローグラフの一例を示す図、（Ｂ）は（Ａ）に示すデータフローグラフにおけるノードＡ，ＢのＭリストを示す図である。
【図１０】（Ａ）は図９（Ａ）に示すデータフローグラフにおけるノードＣのモジュール分割候補を示す図、（Ｂ）は（Ａ）に示す各モジュール分割候補のＭリストを示す図、（Ｃ）は（Ａ）に示すデータフローグラフにおけるノードＣのＭリストを示す図である。
【図１１】図８，図９（Ａ）および図１０（Ａ）に示すデータフローグラフのモジュール分割結果を示す図である。
【図１２】本実施形態の情報処理装置におけるコスト算出部の動作を説明するフローチャートである。
【図１３】本実施形態の情報処理装置における選択部の動作を説明するフローチャートである。
【図１４】（Ａ）はモジュール分割対象のデータフローグラフの具体例を示す図、（Ｂ）は（Ａ）に示すデータフローグラフにおけるノードＡ〜ＣのＭリストを示す図である。
【図１５】（Ａ）はモジュール分割対象のデータフローグラフの具体例を示す図、（Ｂ）は（Ａ）に示すデータフローグラフにおけるノードＥ〜ＦのＭリストを示す図である。
【図１６】図１４（Ａ）および図１５（Ａ）に示すデータフローグラフの本実施形態によるモジュール分割結果を示す図である。
【図１７】図１４（Ａ）および図１５（Ａ）に示すデータフローグラフの従来手法によるモジュール分割結果を示す図である。
【発明を実施するための形態】
【００１３】
以下に、図面を参照し、本願の開示する情報処理装置、プログラム、および情報処理方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１４】
〔１〕本実施形態の概要
図１〜図４を参照しながら、本実施形態の概要について説明する。
上述のごとく高位合成ツールによって扱うことのできる回路規模には限界がある。そのため、図１に示すように、モジュール分割処理（ステップＳ１）を含むアクセラレーションが実行される。図１はアクセラレーション工程を説明するフローチャート（ステップＳ１〜Ｓ３）である。
【００１５】
アクセラレーション工程では、モジュール分割処理（ステップＳ１）によって、与えられたソフトウェアコード１０１が、適切なサイズの複数のモジュール、つまり複数のモジュール毎コード１０２に分割される。分割されたモジュール毎コード１０２のそれぞれについて高位合成処理（ステップＳ２）が施される。そして、モジュール毎コード１０２のそれぞれについて得られた高位合成結果である論理回路データ１０３は、レイアウト合成処理（ステップＳ３）によって、ハードウェア回路データに合成される。このようにしてソフトウェアコードがハードウェアに変換される。
【００１６】
本実施形態において開示される技術は、上述したアクセラレーション工程におけるモジュール分割処理（ステップＳ１）に適用される。
【００１７】
ここで、ステップＳ１において行なわれる、高位合成に適したモジュール分割の例を、図２（Ａ）〜図２（Ｃ）に示す。図２（Ａ）は、ソフトウェアコード（高位合成対象記述）１０１の一例を示す図である。図２（Ｂ）は、図２（Ａ）に示すソフトウェアコード１０１から生成されるモジュール分割対象のデータフローグラフ３２の一例を示す図である。図２（Ｃ）は、図２（Ｂ）に示すデータフローグラフ３２についての高位合成に適したモジュール分割結果の一例を示す図である。
【００１８】
図２（Ａ）に示すようなソフトウェアコード１０１は、そのままでは高位合成に適さない。このため、ソフトウェアコード１０１は、コンパイラ等によって、図２（Ｂ）に示すようなデータフローグラフ３２に変換され、本実施形態では、当該データフローグラフ３２を解析し設計対象回路全体の性能を考慮してデータフローグラフ３２における中間ノードが複数のモジュールに分割される。データフローグラフ３２は、後述するごとく、ソフトウェアコード１０１から生成される、演算の実行順序を示す情報として捉えることができる。
【００１９】
図２（Ｂ）において、Ｉ０〜Ｉ７は入力データを表す葉ノード（入力ノードともいう）であり、Ｏ０，Ｏ１は出力データを表す葉ノード（出力ノードともいう）である。また、細実線で示す楕円は、演算処理を表す中間ノードを示す。図２に示すデータフローグラフ３２には８個の中間ノードが含まれている。また、データフローグラフ３２において、上述したノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジである。
【００２０】
有向エッジに付された数値は、有向エッジによって接続するノード間の入出力信号線の配線幅に応じた値である。本実施形態において、当該数値は、モジュール分割による分割境界を有向エッジが横切る際の重み（コスト）を示すもので、当該重みは、後述するごとく、入出力信号線の配線幅に応じた値である。本実施形態では、上記数値を用い、データフローグラフ３２における中間ノードが、図２（Ｂ）に示すごとく、例えば、三つのモジュールＭ１，Ｍ２，Ｍ３（太線破線で囲む領域参照）に分割される。
【００２１】
このようなモジュール分割を行なうことで、分割後の各モジュールＭ１，Ｍ２，Ｍ３の回路規模と入出力数とが適切なものになる。したがって、図２（Ｃ）に示すごとく、各モジュールＭ１，Ｍ２，Ｍ３は、高位合成ツールの能力を最大限に引き出した状態で回路の生成を行なうことが可能である。
【００２２】
ここで、モジュール分割がレイアウト合成の結果に与える影響について、簡単に説明する。モジュール分割を行なうことなく高位合成およびレイアウト合成を行なった場合、配線領域において信号線が混雑し多数の未配線が生じ、レイアウト合成の結果は失敗に終わる可能性が高い。これに対し、モジュール分割を行なった後に高位合成およびレイアウト合成を行なう場合、図２（Ｂ）に示すようにデータフローを考慮したモジュール分割が行なわれる。したがって、配線領域における信号線の混雑度が高くならず、全ての信号線を適切な配線長で配線することができ、レイアウト合成の結果として適切なものが得られる可能性が高くなる。
【００２３】
そこで、本実施形態では、データフローグラフを入力としたモジュール分割問題において、後述する総カット数がコストとして用いられ、当該コストが最小（所定コスト）となるモジュール分割が、出力として選択される。以下では、データフローグラフ（DataFlow Graph）をＤＦＧと略記する場合がある。なお、本実施形態では、説明を簡単にするため、ＤＦＧループをもたない（acyclic）グラフを対象とするが、ループをもつ場合に対しても本発明に係る技術を拡張して適用することは可能である。
【００２４】
ここで、図３（Ａ）および図３（Ｂ）を参照して、高位合成対象記述であるソフトウェアコード１０１と、当該ソフトウェアコード１０１から生成されるモジュール分割対象のＤＦＧ３２の具体例とについて説明する。図３（Ａ）は、ソフトウェアコード１０１の具体例を示す図であり、図３（Ｂ）は、図３（Ａ）に示すソフトウェアコード１０１から生成されるモジュール分割対象のデータフローグラフ３２の具体例を示す図である。
【００２５】
図３（Ａ）に示すソフトウェアコード１０１においては、Ｃ言語の不動小数点データ型であるfloat型のデータ配列Ａ[３][６]，Ｂ[６][３]，ｘ[３]，ｙ[３]，ｚ[３]が定義され、これらのデータ配列に基づく演算処理ｚ＝Ａ＊（Ｂ＊ｘ）＋ｙが定義される。
【００２６】
図３（Ａ）に示すソフトウェアコード１０１から生成されるＤＦＧ３２は、図３（Ｂ）に示すように、入力ノードである４個の葉ノードＩ１〜Ｉ４と、出力ノードである１個の葉ノードＯ０とを含む。葉ノードＩ１〜Ｉ４およびＯ０は、それぞれデータ配列Ａ[３][６]，Ｂ[６][３]，ｘ[３]，ｙ[３]，ｚ[３]に対応する。なお、ＤＦＧ３２における葉ノードの実体は、回路の外部端子や、上位階層の回路とのデータ授受に使われるレジスタ／メモリ素子などであり、外界とのデータのインタフェースを概念として表している。
【００２７】
また、ＤＦＧ３２は、演算処理を表す３つの中間ノードＰ１〜Ｐ３を含む。中間ノードＰ１は、葉ノードＩ２からのＢ[６][３]と葉ノードＩ３からのｘ[３]との乗算処理を表す。中間ノードＰ２は、葉ノードＩ１からのＡ[３][６]と中間ノードＰ１からの乗算結果Ｂ[６][３]＊ｘ[３]との乗算処理を表す。中間ノードＰ３は、中間ノードＰ１からの乗算結果Ａ[３][６]＊（Ｂ[６][３]＊ｘ[３]）と葉ノードＩ４からのｙ[３]との加算処理を表す。したがって、データ配列ｚ[３]に対応する葉ノードＯ０は、中間ノードＰ３からの出力つまりＡ[３][６]＊（Ｂ[６][３]＊ｘ[３]）＋ｙ[３]となる。
【００２８】
図３（Ｂ）に示すＤＦＧ３２おいても、ノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジＥ１〜Ｅ７である。ＤＦＧ３２におけるエッジＥ１〜Ｅ７のそれぞれは、ノード間に流れるデータの配線幅、つまり入出力信号線の配線幅に応じた値を、重みとしてもつ。図中、エッジＥ１〜Ｅ７に付された数字が重みを表している。
【００２９】
本実施形態では、ノード間に流れるデータの配線幅に応じた値として、例えば、float変数の数が用いられる。float型の演算は３２ビットで行なわれるため、実際の配線幅はfloat変数の数×３２ビットとなるが、簡単のため、上述の通り、重みとしては、float変数の数を用いる。
【００３０】
例えば図３（Ｂ）において、葉ノードＩ１から中間ノードＰ２への有向エッジＥ１には重み３×６＝１８が付与され、葉ノードＩ２から中間ノードＰ１への有向エッジＥ２には重み３×６＝１８が付与される。また、葉ノードＩ３から中間ノードＰ１への有向エッジＥ３には重み３が付与され、葉ノードＩ４から中間ノードＰ３への有向エッジＥ４には重み３が付与される。さらに、中間ノードＰ１から中間ノードＰ２への有向エッジＥ５には重み１８／３＝６が付与され、中間ノードＰ２から中間ノードＰ３への有向エッジＥ６には重み１８／６＝３が付与される。そして、中間ノードＰ３から葉ノードＯ０への有向エッジＥ７には重み３が付与される。
【００３１】
ここで、本実施形態において、モジュール分割とは、ＤＦＧ全体のノード集合を、互いに連結される複数の部分集合（モジュール）に分割することをいう。また、モジュール毎（モジュール分割候補毎）のコストとしては、「総カット数」が用いられる。「総カット数」は、モジュール境界が横切る全てのエッジに付与された重みの総和として定義される。換言すると、「総カット数」は、モジュールの境界（モジュール分割候補の分割境界）を横切る複数のエッジに付与された重みの総和として定義される。
【００３２】
このとき、図３（Ｂ）に示すＤＦＧ３２を二つのモジュールに分割する場合について、図４（Ａ）および図４（Ｂ）を参照しながら考える。なお、図４（Ａ）は、図３（Ａ）に示すソフトウェアコード１０１のオリジナル記述に基づく、図３（Ｂ）に示すＤＦＧ３２のモジュール分割結果を示す図である。また、図４（Ｂ）は、本実施形態の技術による、図３（Ｂ）に示すＤＦＧ３２の最適モジュール分割結果を示す図である。
【００３３】
図４（Ａ）においては、図３（Ａ）に示すソフトウェアコード１０１のオリジナル記述に基づいて、図３（Ｂ）に示すＤＦＧ３２を二つのモジュールＭ１ａ，Ｍ２ａに分割した結果が示されている。図４（Ａ）に示す分割結果では、エッジＥ１〜Ｅ５およびＥ７がモジュールＭ１ａ，Ｍ２ａの境界を横切っているので、総カット数（コスト）は、１８＋１８＋３＋３＋６＋３＝５１であり、モジュール段数は２である。なお、モジュール段数は、入力側葉ノードから出力側葉ノードまでのパス上に存在するモジュールの数の最大数として定義され、分割後のモジュールによるデータ処理時間に応じた数値として捉えることができる。また、以下では、モジュール段数を単に段数と記載する場合がある。
【００３４】
一方、図４（Ｂ）においては、本実施形態の技術を用いて、図３（Ｂ）に示すＤＦＧ３２を二つのモジュールＭ１ｂ，Ｍ２ｂに最適分割した結果が示されている。図４（Ｂ）に示す分割結果では、エッジＥ１〜Ｅ４，Ｅ６およびＥ７がモジュールＭ１ｂ，Ｍ２ｂの境界を横切っているので、総カット数（コスト）は、１８＋１８＋３＋３＋３＋３＝４８であり、モジュール段数は２である。
【００３５】
つまり、図４（Ａ）および図４（Ｂ）に示す分割結果の総カット数は、それぞれ５１および４８である。したがって、図４（Ｂ）に示す分割結果の方が総カット数が少ない（コストが小さい）ため、モジュールＭ１ｂ，Ｍ２ｂ間の配線性は優れていると言える。
【００３６】
また、図４（Ａ）および図４（Ｂ）に示す分割結果のモジュール段数は、いずれも２である。したがって、モジュール毎のデータ処理時間が等しいとすると、図４（Ａ）および図４（Ｂ）に示す分割結果における回路遅延は同じであると言える。
【００３７】
そこで、本実施形態では、図４（Ｂ）に示すようなＤＦＧの最適モジュール分割結果を得るために、例えばコンピュータ（図５，図６の符号１０参照）等によって、以下のごとき処理が実行される。
【００３８】
本実施形態では、まず、ＤＦＧにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成する処理が実行される。この後、作成した複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出する処理が実行される。そして、算出したコストに基づき、複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する処理が実行される。このとき、ＤＦＧにおける入力側のモジュール分割候補からトポロジカル順にモジュール分割候補の前記コストを算出する処理を実行することが望ましい。
【００３９】
ここで、前記所定コストは、最小コストであってもよい。また、上述したように、各モジュール分割候補について算出されるコストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和（総カット数）であり、前記重みは、当該重みを付与されたエッジに対応する入出力信号線の配線幅に応じた値であってもよい。
【００４０】
さらに、各モジュール分割候補に関する制約条件が予め設定され、当該制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を分割対象モジュールとして選択する処理が実行されてもよい。このとき、制約条件は、各モジュール分割候補に含まれるノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つであってもよい。
【００４１】
上述のような処理を実行することで、ＤＦＧから複数のモジュール分割候補が作成され、モジュール分割候補毎に総カット数（コスト）が求められ、所定の総カット数となるモジュール分割候補が選択される。これにより、ユーザのスキルに依存することなく、最適なモジュール分割を行なうことができる。また、トポロジカル順にコストを算出することで、コストを算出するための計算量を削減することができる。
【００４２】
〔２〕本実施形態の情報処理装置のハードウェア構成
まず、図５を参照しながら、本実施形態の情報処理装置（コンピュータ）１０のハードウェア構成について説明する。図５は、当該ハードウェア構成の一例を示すブロック図である。
【００４３】
コンピュータ１０は、例えば、プロセッサ１１，ＲＡＭ（Random Access Memory）１２，ＨＤＤ（Hard Disk Drive）１３，グラフィック処理装置１４，入力インタフェース１５，光学ドライブ装置１６，機器接続インタフェース１７およびネットワークインタフェース１８を構成要素として有する。これらの構成要素１１〜１８は、バス１９を介して相互に通信可能に構成される。
【００４４】
プロセッサ（処理部）１１は、コンピュータ１０全体を制御する。プロセッサ１１は、マルチプロセッサであってもよい。プロセッサ１１は、例えばＣＰＵ，ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡのいずれか一つであってもよい。また、プロセッサ１１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００４５】
ＲＡＭ（記憶部）１２は、コンピュータ１０の主記憶装置として使用される。ＲＡＭ１２には、プロセッサ１１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２には、プロセッサ１１による処理に必要な各種データが格納される。アプリケーションプログラムには、コンピュータ１０によって本実施形態のモジュール分割機能を実現するためにプロセッサ１１によって実行されるプログラム（図６の符号３１参照）が含まれてもよい。
【００４６】
ＨＤＤ（記憶部）１３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう。ＨＤＤ１３は、コンピュータ１０の補助記憶装置として使用される。ＨＤＤ１３には、ＯＳプログラム，アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、ＳＣＭ（Storage Class Memory）や、フラッシュメモリ等の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００４７】
グラフィック処理装置１４には、モニタ（表示部，出力部）１４ａが接続されている。グラフィック処理装置１４は、プロセッサ１１からの命令に従って、画像をモニタ１４ａの画面に表示させる。モニタ１４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置等が挙げられる。
【００４８】
入力インタフェース１５には、キーボード１５ａおよびマウス１５ｂが接続されている。入力インタフェース１５は、キーボード１５ａやマウス１５ｂから送られてくる信号をプロセッサ１１に送信する。なお、マウス１５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル，タブレット，タッチパッド，トラックボール等が挙げられる。
【００４９】
光学ドライブ装置１６は、レーザ光等を利用して、光ディスク１６ａに記録されたデータの読み取りを行なう。光ディスク１６ａは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク１６ａには、ＤＶＤ（Digital Versatile Disc），ＤＶＤ−ＲＡＭ，ＣＤ−ＲＯＭ（Compact Disc Read Only Memory），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。
【００５０】
機器接続インタフェース１７は、コンピュータ１０に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース１７には、メモリ装置１７ａやメモリリーダライタ１７ｂを接続することができる。メモリ装置１７ａは、機器接続インタフェース１７との通信機能を搭載した非一時的な記録媒体、例えばＵＳＢ（Universal Serial Bus）メモリである。メモリリーダライタ１７ｂは、メモリカード１７ｃへのデータの書き込み、またはメモリカード１７ｃからのデータの読み出しを行なう。メモリカード１７ｃは、カード型の非一時的な記録媒体である。
【００５１】
ネットワークインタフェース１８は、ネットワーク１８ａに接続される。ネットワークインタフェース１８は、ネットワーク１８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行なう。
【００５２】
以上のようなハードウェア構成を有するコンピュータ１０によって、図６〜図１７を参照しながら後述する本実施形態のモジュール分割機能を実現することができる。
【００５３】
なお、コンピュータ１０は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム（後述するプログラム３１等）を実行することにより、本実施形態のモジュール分割機能を実現する。コンピュータ１０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、コンピュータ１０に実行させるプログラムをＨＤＤ１３に格納しておくことができる。プロセッサ１１は、ＨＤＤ１３内のプログラムの少なくとも一部をＲＡＭ１２にロードし、ロードしたプログラムを実行する。
【００５４】
また、コンピュータ１０（プロセッサ１１）に実行させるプログラムを、光ディスク１６ａ，メモリ装置１７ａ，メモリカード１７ｃ等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１１からの制御により、ＨＤＤ１３にインストールされた後、実行可能になる。また、プロセッサ１１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５５】
〔３〕本実施形態の情報処理装置の機能構成
次に、図６および図７を参照しながら、本実施形態の情報処理装置（コンピュータ）１０の機能構成について説明する。図６は、当該機能構成の一例を示すブロック図であり、図７は、図６に示す情報処理装置１０の機能構成をより具体的に説明するブロック図である。
【００５６】
コンピュータ１０は、コンパイラ等によってソフトウェアコード１０１から変換された
ＤＦＧ３２を解析し、設計対象回路全体の性能を考慮してＤＦＧ３２における中間ノードを複数のモジュールに分割する機能（モジュール分割機能）を果たす。このため、コンピュータ１０は、図６に示すように、少なくとも処理部２０，記憶部３０，入力部４０および表示部５０としての機能を有している。
【００５７】
処理部２０は、例えば図５に示すようなプロセッサ１１である。処理部２０は、プログラム３１を実行することで、後述するコスト算出部２１および選択部２２としての機能を果たす。
【００５８】
記憶部３０は、例えば図５に示すようなＲＡＭ１２，ＨＤＤ１３であり、モジュール分割機能を実現するための各種情報を記憶し保存する。当該各種情報としては、上述したプログラム３１およびＤＦＧ３２のほか、後述する制約条件３３，Ｍリスト（モジュールリスト）３４，モジュール分割結果３５などが含まれる。
【００５９】
ここで、プログラム３１は、前述の通り、処理部２０（プロセッサ１１）に、後述するコスト算出部２１および選択部２２としての機能を実行させるものである。
【００６０】
また、ＤＦＧ３２は、前述の通り、コンパイラ等によってソフトウェアコード１０１から変換されて得られる。
【００６１】
入力部４０は、例えば図５に示すようなキーボード１５ａおよびマウス１５ｂであり、ユーザによって操作され、モジュール分割に係る各種指示を行なう。なお、マウス１５ｂに代え、タッチパネル，タブレット，タッチパッド，トラックボール等が用いられてもよい。
【００６２】
表示部５０は、例えば図５に示すようなモニタ１４ａであり、その表示状態を、グラフィック処理装置１４を介して、表示制御部（図示略）によって制御される。本実施形態において、表示部５０は、例えば、ＤＦＧ３２や、当該ＤＦＧ３２のモジュール分割結果３５などをを表示出力する。
【００６３】
図７に示すように、本実施形態のモジュール分割機能を果たすコンピュータ１０に対する入力は、分割対象のＤＦＧ３２、および制約条件３３である。制約条件３３は、後述するごとく、各モジュール分割候補に関するもので、予め設定され、記憶部３０に保存される。このとき、制約条件３３は、各モジュール分割候補に含まれるノード（中間ノード）の数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つであってもよい。
【００６４】
ノードの数を採用する場合、ノードの数の上限値または下限値またはその両方が設定され、ノードの数が上限値以下であること、または、ノードの数が下限値以上であること、または、ノードの数が上限値以下かつ下限値以上であることが、制約条件３３として設定されてもよい。
【００６５】
面積を採用する場合、面積の上限値または下限値またはその両方が設定され、面積が上限値以下であること、または、面積が下限値以上であること、または、面積が上限値以下かつ下限値以上であることが、制約条件３３として設定されてもよい。
【００６６】
同様に、スループットを採用する場合、スループットの上限値または下限値またはその両方が設定され、スループットが上限値以下であること、または、スループットが下限値以上であること、または、スループットが上限値以下かつ下限値以上であることが、制約条件３３として設定されてもよい。
【００６７】
さらに、制約条件３３は、モジュール分割を行なった結果として得られる回路に対する要求速度やモジュールサイズの上限値または下限値またはその両方として設定されてもよい。なお、要求速度は、上述したモジュール段数として捉えることも可能である。また、モジュールサイズは、ノード（中間ノード）の数として捉えることも可能である。
【００６８】
コスト算出部２１は、ＤＦＧ３２における複数の演算単位である中間ノードから、一以上のノードを含む複数のモジュール分割候補（例えば図１０（Ａ）のＣ１〜Ｃ３参照）を作成する機能を有する。このとき、コスト算出部２１は、制約条件３３を満たすモジュール分割候補を作成することが望ましい。また、コスト算出部２１は、作成した複数のモジュール分割候補のそれぞれについて当該モジュール分割候補のコストである総カット数を算出する。
【００６９】
特に、本実施形態において、コスト算出部２１は、ＤＦＧ３２上の各中間ノードについて、各中間ノードを頂点とするモジュール分割のリストであるＭリスト３４を求める。Ｍリスト３４は、後述するごとく、モジュール分割候補毎に、ノード集合とコスト（総カット数）と出力集合とに関する情報を含む。Ｍリスト３４については、図８〜図１０（Ｃ）を参照しながら後述する。
【００７０】
選択部２２は、コスト算出部２１によって算出したコスト（Ｍリスト３４）に基づき、複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する。このとき、選択部２２は、制約条件３３を満たすモジュール分割候補を分割対象モジュールとして選択することが望ましい。なお、所定コストは、最小コストであってもよい。また、上述したように、各モジュール分割候補について算出されるコストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和（総カット数）であり、前記重みは、当該重みを付与されたエッジに対応する入出力信号線の配線幅に応じた値であってもよい。
【００７１】
特に、本実施形態において、選択部２２は、ＤＦＧ３２の最終段ノードのＭリスト３４に基づき、ＤＦＧ全体について最小コストのモジュール分割候補をバックトレースすることによって分割対象モジュールを求め、求めた分割対象モジュールをモジュール分割結果３５として出力保存する。
【００７２】
なお、本実施形態においては、ＤＦＧ３２における入力側のノードからトポロジカル順に前記コストを算出する処理を実行することが望ましい。ここで、トポロジカル順は、任意のノードｋについてのＭリスト３４を算出する時点において、当該ノードｋに対して直接的／間接的な入力になる全てのノードについてのＭリスト３４が算出済みであるような順序のことをいう。
【００７３】
例えば図８に示すＤＦＧ３２における中間ノードＡ，Ｂ，Ｃをトポロジカル順に並べると、Ａ→Ｂ→Ｃになる。また、例えば図１４（Ａ）に示すＤＦＧ３２における中間ノードＡ〜Ｆをトポロジカル順に並べると、Ａ→Ｂ→Ｃ→Ｄ→Ｅ→Ｆや、Ａ→Ｂ→Ｃ→Ｅ→Ｄ→Ｆや、Ａ→Ｃ→Ｂ→Ｄ→Ｅ→Ｆや、Ａ→Ｃ→Ｂ→Ｅ→Ｄ→Ｆや、Ａ→Ｂ→Ｄ→Ｃ→Ｅ→Ｆなどが考えられる。
【００７４】
〔４〕本実施形態の情報処理装置の動作
次に、図８〜図１３を参照しながら、Ｍリスト３４およびモジュール分割結果３５と、コスト算出部２１および選択部２２の動作とについて説明する。
【００７５】
〔４−１〕Ｍリスト
本実施形態では、ＤＦＧ３２における演算単位である中間ノード毎に、コスト（総カット数）に関する情報を含むモジュール分割情報であるＭリスト３４が、コスト算出部２１によって作成される。なお、中間ノードについては、単にノードという場合がある。
【００７６】
ここで、ノードｋのＭリスト３４は、ノードｋを頂点とするモジュール分割候補のリストである。
【００７７】
また、以下において、ノードｋに対して入力側に属する全てのノード、つまりノードｋに対して直接的または間接的な入力になる全てのノードを含むＤＦＧの部分グラフを、「ノードｋのtransitive fan-in (推移的ファンイン)」と呼び、ＴＦＩ（ｋ）と表記する。
【００７８】
例えば、図８に示すように、ノードＢのＴＦＩつまりＴＦＩ（Ｂ）は、太破線で囲む領域における部分グラフに対応し、ＴＦＩ（Ｂ）＝｛Ａ，Ｂ｝となる。同様に、ノードＣのＴＦＩつまりＴＦＩ（Ｃ）は、一点鎖線で囲む領域における部分グラフに対応し、ＴＦＩ（Ｃ）＝｛Ａ，Ｂ，Ｃ｝となる。
【００７９】
そして、上述したトポロジカル順の前提により、ノードｋのＭリスト３４を算出する時点で、ＴＦＩ（ｋ）に含まれる、ノードｋ以外の各ノードのＭリスト３４は算出済みであると仮定することができる。例えば、図８において、ノードＢのＭリスト３４を算出する時点で、ＴＦＩ（Ｂ）におけるノードＡのＭリスト３４は算出済みである。また、ノードＣのＭリスト３４を算出する時点で、ＴＦＩ（Ｃ）におけるノードＡ，ＢのＭリスト３４は算出済みである。
【００８０】
なお、図８は、本実施形態におけるＴＦＩを説明する図であり、図３（Ｂ），図４（Ａ）および図４（Ｂ）に示すＤＦＧと同様のＤＦＧ３２を示しているので、図８に示すＤＦＧ３２の説明は省略する。また、図８における中間ノードＡ，Ｂ，Ｃは、それぞれ図３（Ｂ），図４（Ａ），図４（Ｂ）における中間ノードＰ１，Ｐ２，Ｐ３に対応している。
【００８１】
本実施形態において、各モジュール分割候補は、Ｍリスト３４におけるモジュール分割情報として、「ノード集合」と「コスト」と「出力集合」とを有する。
【００８２】
「ノード集合」は、ノードｋを頂点とするモジュール分割候補に含まれるノードの集合である。
【００８３】
「コスト」は、当該モジュール分割候補を採用したときのＴＦＩ（ｋ）全体のコストである。
【００８４】
「出力集合」は、当該モジュール分割候補を採用したときのＴＦＩ（ｋ）内のモジュールの頂点ノードの集合である。この出力集合の情報は、後述するごとく、dominateされるモジュール分割候補を判定して削除する際に用いられる。
【００８５】
ここで、図９（Ａ）および図９（Ｂ）を参照しながら、図９（Ａ）に示すＤＦＧ３２におけるノードＡとノードＢのＭリスト３４の算出作成について説明する。なお、図９（Ａ）は、モジュール分割対象のＤＦＧ３２の一例を示す図である。図９（Ｂ）は、図９（Ａ）に示すＤＦＧ３２におけるノードＡ，ＢのＭリスト３４を示す図である。図９（Ａ）に示すＤＦＧ３２は、図８に示すＤＦＧ３２と同様であるので、その説明は省略する。
【００８６】
ある一つの中間ノードについてのＭリスト３４は、図９（Ｂ）に示すように、｛（｛ノード集合｝，コスト，｛出力集合｝），…｝と表記される。
【００８７】
各中間ノードについては一以上のモジュール分割候補が作成さる。そして、モジュール分割候補毎に、Ｍリスト３４に含まれるモジュール分割情報（｛ノード集合｝，コスト，｛出力集合｝）が作成される。
【００８８】
このとき、コストは、対象ノードよりも入力側のモジュール分割の総カット数、つまりモジュール境界が横切る全てのエッジに付与された重みの総和として定義される。また、出力集合は、そのモジュール分割候補が、他のモジュールの入力に成り得る可能性を表す。
【００８９】
図９（Ａ）に示すノードＡについては、モジュール分割候補のノード集合は｛Ａ｝の一組だけである。このとき、図９（Ｂ）に示すように、モジュール分割候補｛Ａ｝のコストである総カット数は１８＋３＋６＝２７となる。また、モジュール分割候補｛Ａ｝の出力集合は、ＴＦＩ（Ａ）＝｛Ａ｝内のモジュールの頂点ノードの集合であり、｛Ａ｝のみである。
【００９０】
図９（Ａ）に示すノードＢについては、モジュール分割候補のノード集合は｛Ｂ｝と｛Ａ，Ｂ｝との二組である。
【００９１】
このとき、図９（Ｂ）に示すように、モジュール分割候補｛Ｂ｝のコストである総カット数は１８＋２７＋３＝４８となる。また、モジュール分割候補｛Ｂ｝の出力集合は、ＴＦＩ（Ｂ）＝｛Ａ，Ｂ｝内のモジュールの頂点ノードの集合｛Ａ，Ｂ｝となる。モジュール分割候補が｛Ｂ｝の場合、ノードＢ自体が一つのモジュールになっている。このため、モジュール分割候補｛Ｂ｝は、ノードＢの入力であるノードＡを頂点とするモジュールが必要になり、ノードＡも出力集合に含まれることになる。
【００９２】
また、図９（Ｂ）に示すように、モジュール分割候補｛Ａ，Ｂ｝のコストである総カット数は１８＋１８＋３＋３＝４２となり、モジュール分割候補｛Ａ，Ｂ｝の出力集合は、ＴＦＩ（Ｂ）＝｛Ａ，Ｂ｝内のモジュールの頂点ノードの集合であり、｛Ｂ｝のみである。
【００９３】
〔４−２〕コスト算出部の動作
ここで、図１２に示すフローチャート（ステップＳ１１〜Ｓ１９）に従って、本実施形態の情報処理装置１０におけるコスト算出部２１の動作について説明する。コスト算出部２１は、ＤＦＧ３２の入力側中間ノードからトポロジカル順に中間ノードを対象ノードｋとして扱い、対象ノードｋに対し図１２に示すフローチャートによる処理を行なうことで、対象ノードｋについてのＭリスト３４を算出作成する。
【００９４】
まず、コスト算出部２１は、対象ノードｋを頂点とするモジュール分割候補を全て列挙する（ステップＳ１１）。トポロジカル順に処理を行なうことで、対象ノードよりも入力側の全てのノードのＭリスト３４は算出作成済みである。
【００９５】
コスト算出部２１は、列挙された一以上のモジュール分割候補のうちの一つを対象モジュール分割候補として選択し、選択した対象モジュール分割候補への直接的な入力である中間ノードの集合ＦＩを取得する（ステップＳ１２）。当該集合ＦＩを入力ノード集合ＦＩという。
【００９６】
コスト算出部２１は、入力ノード集合ＦＩの各中間ノードのＭリスト３４を取り出すとともに、対象モジュール分割候補と入力ノード集合ＦＩの各中間ノードとを組み合わせたものをＴＦＩ（ｋ）とする（ステップＳ１３）。
【００９７】
そして、コスト算出部２１は、入力ノード集合ＦＩの各中間ノードのＭリスト３４に基づき、対象モジュール分割候補の最小コストを算出し、算出した最小コストを対象モジュール分割候補のＭリスト３４に登録する（ステップＳ１４）。
【００９８】
このとき、コスト算出部２１は、対象モジュール分割候補の出力側カット数と、対象モジュール分割候補の入力側葉ノードのカット数と、入力ノード集合ＦＩの各中間ノードのＭリスト３４のうちの最小コストとを加算した値を、最小コストとして算出する。
【００９９】
ここで、対象モジュール分割候補の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジに付与された重みの合計である。また、対象モジュール分割候補の入力側葉ノードのカット数は、対象モジュール分割候補と入力側葉ノードとの間における分割境界を横切るエッジに付与された重みの合計である。
【０１００】
また、コスト算出部２１は、対象ノードｋと、入力ノード集合ＦＩの各中間ノードのＭリスト３４のうち最小コストのモジュール分割候補の出力集合との合併集合を、対象モジュール分割候補の出力集合として対象モジュール分割候補のＭリスト３４に登録する（ステップＳ１５）。
【０１０１】
そして、コスト算出部２１は、ステップＳ１１で列挙した全てのモジュール分割候補に対してステップＳ１２〜Ｓ１５の処理を行なったか否かを判断する（ステップＳ１６）。未処理のモジュール分割候補が存在する場合（ステップＳ１６のＮＯルート）、コスト算出部２１は、未処理の次のモジュール分割候補を選択し（ステップＳ１７）、ステップＳ１２の処理に戻る。
【０１０２】
一方、未処理のモジュール分割候補が存在しない場合（ステップＳ１６のＹＥＳルート）、コスト算出部２１は、予め設定された制約条件３３を満たさないモジュール分割候補を削除する（ステップＳ１８）。なお、コスト算出部２１は、ステップＳ１１でモジュール分割候補を列挙する際に、制約条件３３、例えばモジュール分割候補に属する中間ノードの数についての条件を満たさないモジュール分割候補を削除してもよい。
【０１０３】
最後に、コスト算出部２１は、制約条件３３を満たすが、他のモジュール分割候補によってdominate（支配）されるモジュール分割候補を削除してから（ステップＳ１９）、処理を終了する。ここで、「他のモジュール分割候補によってdominateされるモジュール分割候補」とは、コストが小さく、且つ、出力集合が同じか包含される、他のモジュール分割候補が存在するモジュール分割候補のことをいう。このように、コスト算出部２１は、制約条件３３を満たさないモジュール分割候補やdominateされるモジュール分割候補を除いたモジュール分割候補を含むＭリスト３４を作成する。
【０１０４】
この後、コスト算出部２１は、トポロジカル順に次の中間ノードを対象ノードｋとして選択し、図１２に示すフローチャートによる処理を繰り返し行ない、ＤＦＧ３２における全ての中間ノードについてのＭリスト３４を算出作成する。
【０１０５】
次に、図１０（Ａ）〜図１０（Ｃ）を参照しながら、図１２に示すフローチャートに従って、図１０（Ａ）に示すＤＦＧ３２におけるノードＣのＭリスト３４の算出作成について説明する。なお、図１０（Ａ）は、図９（Ａ）に示すＤＦＧ３２におけるノードＣのモジュール分割候補Ｃ１〜Ｃ３を示す図である。図１０（Ｂ）は、図１０（Ａ）に示す各モジュール分割候補Ｃ１〜Ｃ３のＭリスト３４を示す図である。図１０（Ｃ）は、図１０（Ａ）に示すＤＦＧ３２におけるノードＣのＭリスト３４を示す図である。図１０（Ａ）に示すＤＦＧ３２は、図８や図９（Ａ）に示すＤＦＧ３２と同様であるので、その説明は省略する。
【０１０６】
ここでは、中間ノードＣを対象ノードとする場合に、ノードＣのＭリスト３４を算出作成する手順と、算出作成されるノードＣのＭリスト３４とについて説明する。
【０１０７】
まず、図１０（Ａ）に示すＤＦＧ３２において中間ノードＣを頂点とするモジュール分割候補が列挙される（図１２のステップＳ１１参照）。このとき、３通りのモジュール分割候補Ｃ１，Ｃ２，Ｃ３が列挙される。例えば、モジュール分割候補Ｃ１，Ｃ２，Ｃ３は、それぞれ｛Ｃ｝，｛Ｂ，Ｃ｝，｛Ａ，Ｂ，Ｃ｝である。
【０１０８】
モジュール分割候補Ｃ１＝｛Ｃ｝を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補Ｃ１＝｛Ｃ｝への入力である入力ノード集合ＦＩ＝｛Ｂ｝が取得される（図１２のステップＳ１２参照）。
【０１０９】
そして、対象モジュール分割候補Ｃ１＝｛Ｃ｝のコストが算出される。このとき、対象モジュール分割候補Ｃ１の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジＥ７に付与された重み“３”の合計値“３”である。また、対象モジュール分割候補Ｃ１の入力側葉ノードＩ４のカット数は、対象モジュール分割候補Ｃ１と入力側葉ノードＩ４との間における分割境界を横切るエッジＥ４に付与された重み“３”の合計値“３”である。さらに、入力ノード集合ＦＩの各中間ノードのＭリスト３４のうちの最小コストは、図９（Ｂ）に示すように、ノード集合｛Ａ，Ｂ｝のコスト“４２”である。したがって、対象モジュール分割候補Ｃ１の最小コストは、３＋４２＋３＝４８となり、図１０（Ｂ）に示すように、モジュール分割候補Ｃ１のコストとして“４８”がＭリスト３４に登録される（図１２のステップＳ１４参照）。
【０１１０】
また、対象ノードＣと、入力ノード集合ＦＩの中間ノードＢのＭリスト３４のうち最小コスト“４２”のモジュール分割候補の出力集合｛Ｂ｝との合併集合｛Ｂ，Ｃ｝が、図１０（Ｂ）に示すように、対象モジュール分割候補Ｃ１の出力集合として対象モジュール分割候補Ｃ１のＭリスト３４に登録される（図１２のステップＳ１５参照）。これにより、モジュール分割候補Ｃ１については（｛Ｃ｝，４８，｛Ｂ，Ｃ｝）がＭリスト３４に登録される。
【０１１１】
ついで、モジュール分割候補Ｃ２＝｛Ｂ，Ｃ｝を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補Ｃ２＝｛Ｂ，Ｃ｝への入力である入力ノード集合ＦＩ＝｛Ａ｝が取得される（図１２のステップＳ１２参照）。
【０１１２】
そして、対象モジュール分割候補Ｃ２＝｛Ｂ，Ｃ｝のコストが算出される。このとき、対象モジュール分割候補Ｃ２の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジＥ７に付与された重み“３”の合計値“３”である。また、対象モジュール分割候補Ｃ２の入力側葉ノードＩ１，Ｉ４のカット数は、対象モジュール分割候補Ｃ１と入力側葉ノードＩ１，Ｉ４との間における分割境界を横切るエッジＥ１，Ｅ４に付与された重み“１８”と“３”の合計値“２１”である。さらに、入力ノード集合ＦＩの各中間ノードのＭリスト３４のうちの最小コストは、図９（Ｂ）に示すように、ノード集合｛Ａ｝のコスト“２７”である。したがって、対象モジュール分割候補Ｃ２の最小コストは、３＋２７＋２１＝５１となり、図１０（Ｂ）に示すように、モジュール分割候補Ｃ２のコストとして“５１”がＭリスト３４に登録される（図１２のステップＳ１４参照）。
【０１１３】
また、対象ノードＣと、入力ノード集合ＦＩの中間ノードＡのＭリスト３４のうち最小コスト“５１”のモジュール分割候補の出力集合｛Ａ｝との合併集合｛Ａ，Ｃ｝が、図１０（Ｂ）に示すように、対象モジュール分割候補Ｃ２の出力集合として対象モジュール分割候補Ｃ２のＭリスト３４に登録される（図１２のステップＳ１５参照）。これにより、モジュール分割候補Ｃ２については（｛Ｂ，Ｃ｝，５１，｛Ａ，Ｃ｝）がＭリスト３４に登録される。
【０１１４】
ついで、モジュール分割候補Ｃ３＝｛Ａ，Ｂ，Ｃ｝を対象モジュール分割候補として選択した場合、選択した対象モジュール分割候補Ｃ３＝｛Ａ，Ｂ，Ｃ｝への入力である入力ノード集合ＦＩ＝｛φ（空集合）｝が取得される（図１２のステップＳ１２参照）。
【０１１５】
そして、対象モジュール分割候補Ｃ３＝｛Ａ，Ｂ，Ｃ｝のコストが算出される。このとき、対象モジュール分割候補Ｃ３の出力側カット数は、対象モジュール分割候補の出力側における分割境界を横切るエッジＥ７に付与された重み“３”の合計値“３”である。また、対象モジュール分割候補Ｃ３の入力側葉ノードＩ１〜Ｉ４のカット数は、対象モジュール分割候補Ｃ１と入力側葉ノードＩ１〜Ｉ４との間における分割境界を横切るエッジＥ１〜Ｅ４に付与された重み“１８”，“１８”，“３”，“３”の合計値“４２”である。さらに、入力ノード集合ＦＩの各中間ノードのＭリスト３４のうちの最小コストは、入力ノード集合ＦＩが空集合であるため、“０”である。したがって、対象モジュール分割候補Ｃ３の最小コストは、３＋４２＝４５となり、図１０（Ｂ）に示すように、モジュール分割候補Ｃ２のコストとして“４５”がＭリスト３４に登録される（図１２のステップＳ１４参照）。
【０１１６】
また、入力ノード集合ＦＩ＝｛φ（空集合）｝であるため、対象ノードＣが、図１０（Ｂ）に示すように、対象モジュール分割候補Ｃ３の出力集合として対象モジュール分割候補Ｃ３のＭリスト３４に登録される（図１２のステップＳ１５参照）。これにより、モジュール分割候補Ｃ３については（｛Ａ，Ｂ，Ｃ｝，４５，｛Ｃ｝）がＭリスト３４に登録される。
【０１１７】
この時点で、モジュール分割候補Ｃ１，Ｃ２，Ｃ３が、制約条件３３を満たし、他のモジュール分割候補によってdominateされないのであれば、図１０（Ｂ）に示すごとく得られたモジュール分割情報は、そのまま、中間ノードＣのＭリスト３４として登録される。つまり、図１０（Ｃ）に示すごとく、中間ノードＣのＭリスト＝｛（｛Ｃ｝，４８，｛Ｂ，Ｃ｝），（｛Ｂ，Ｃ｝，５１，｛Ａ，Ｃ｝），（｛Ａ，Ｂ，Ｃ｝，４５，｛Ｃ｝）｝となる。
【０１１８】
〔４−３〕選択部の動作
ついで、図１３に示すフローチャート（ステップＳ２１〜Ｓ２５）に従って、本実施形態の情報処理装置１０における選択部２２の動作について説明する。図１２に示す処理でＤＦＧ３２の各中間ノードについてのＭリスト３４が作成された後、選択部２２は、図１３に示すフローチャートによる処理を行なう。つまり、選択部２２は、Ｍリスト３４のコストに基づき、ＤＦＧ３２の出力ノードから、最小コストのモジュール分割候補を分割対象モジュールとして選択しながらバックトレースする。
【０１１９】
まず、選択部２２は、ＤＦＧ３２の出力ノード（例えば図１１の中間ノードＣ参照）において、当該出力ノードのＭリスト３４から、最小コストのモジュール分割候補を採用する（ステップＳ２１）。
【０１２０】
選択部２２は、採用したモジュール分割候補への入力ノード（ＦＩの各ノード）を辿る、つまり入力ノードのバックトレースを行なう（ステップＳ２２）。
【０１２１】
そして、選択部２２は、バックトレースの結果、ＤＦＧ３２の入力側の葉ノード（例えば図１１の葉ノードＩ１〜Ｉ４参照）に到達したか否かを判断する（ステップＳ２３）。
【０１２２】
入力側の葉ノードに到達しない場合（ステップＳ２３のＮＯルート）、選択部２２は、前回採用したモジュール分割候補の入力ノード（ＦＩ）のＭリスト３４から、前回採用したモジュール分割候補のコスト算出に用いたモジュール分割候補を採用する（ステップＳ２４）。この後、選択部２２は、ステップＳ２２の処理に戻る。
【０１２３】
選択部２２によるバックトレース処理（ステップＳ２２〜Ｓ２４）は、バックトレースによって辿られる入力ノードが全て入力側葉ノードになるまで（ステップＳ２３でＹＥＳ判定となるまで）、再帰的に繰り返し実行される。
【０１２４】
バックトレースの結果、ＤＦＧ３２の入力側の葉ノードに到達した場合、選択部２２は、葉ノード到達時点までに採用したモジュール分割候補の集合を、分割対象モジュールつまりモジュール分割結果３５として出力保存し（ステップＳ２５）、処理を終了する。
【０１２５】
次に、図１１を参照しながら、図１３に示すフローチャートに従って、図８，図９（Ａ）および図１０（Ａ）に示すＤＦＧ３２についてのモジュール分割結果３５、つまり最小コストのモジュール分割候補の選択手順について説明する。なお、図１１は、図８，図９（Ａ）および図１０（Ａ）に示すＤＦＧ３２のモジュール分割結果３５を示す図である。図１１に示すＤＦＧ３２は、図８，図９（Ａ）および図１０（Ｃ）に示すＤＦＧ３２と同様であるので、その説明は省略する。
【０１２６】
まず、ＤＦＧ３２の出力ノードＣのＭリスト３４から、最小コストのモジュール分割候補を採用する（図１３のステップＳ２１参照）。このとき、図１０（Ｃ）に示す中間ノードＣのＭリスト３４を参照すると、ノードＣの最小コストは“４５”であり、最小コスト“４５”のモジュール分割候補Ｃ３のノード集合は｛Ａ，Ｂ，Ｃ｝である。
【０１２７】
したがって、特に制約条件３３が設定されていない場合、最小コスト“４５”のモジュール分割候補Ｃ３に対応するノード集合｛Ａ，Ｂ，Ｃ｝が、図１１に示すように、一つの分割対象モジュールＭ０として出力される（図１３のステップＳ２３のＹＥＳルートからステップＳ２５参照）。
【０１２８】
一方、制約条件３３として「一つのモジュールの容量が２ノード以内」が設定されている場合には、図１０（Ｃ）に示す中間ノードＣのＭリスト３４からノード集合｛Ａ，Ｂ，Ｃ｝のモジュール分割情報は削除される。このため、図１０（Ｃ）に示す中間ノードＣのＭリスト３４は｛（｛Ｃ｝，４８，｛Ｂ，Ｃ｝），（｛Ｂ，Ｃ｝，５１，｛Ａ，Ｃ｝）｝となる。したがって、ノードＣの最小コストは“４８”であり、最小コスト“４８”のモジュール分割候補Ｃ１のノード集合は｛Ｃ｝である。
【０１２９】
この後、ノードＣへの入力ノードを辿ると（図１３のステップＳ２２参照）、中間ノードＢに到達する（図１３のステップＳ２３のＮＯルート参照）。したがって、モジュール分割候補Ｃ１＝｛Ｃ｝への入力ノードＢについて、モジュール分割候補Ｃ１＝｛Ｃ｝のコスト“４８”の算出に用いたモジュール分割候補〔図９（Ｂ）に示すノードＢのＭリスト３４の（｛Ａ，Ｂ｝，４２，｛Ｂ｝）参照〕が採用される（図１３のステップＳ２４参照）。
【０１３０】
そして、採用したモジュール分割候補｛Ａ，Ｂ｝への入力ノードを辿ると（図１３のステップＳ２２参照）、入力側の葉ノードＩ１〜Ｉ３に到達する（図１３のステップＳ２３のＹＥＳルート参照）。したがって、葉ノード到達時点までに採用したモジュール分割候補の集合｛Ｍ１ｂ，Ｍ２ｂ｝が、分割対象モジュールつまりモジュール分割結果３５として出力される（図１３のステップＳ２５参照）。つまり、図１１に示すように、図４（Ｂ）に示した分割結果の例と同様、ＤＦＧ３２は、二つのモジュールＭ１ｂ，Ｍ２ｂに分割される。なお、モジュールＭ１ｂ＝｛Ａ，Ｂ｝であり、モジュールＭ２ｂ＝｛Ｃ｝である。
【０１３１】
〔５〕本実施形態の情報処理装置のより具体的な動作
次に、図１４（Ａ）〜図１７を参照しながら、本実施形態の情報処理装置１０による具体的な動作（モジュール分割動作）について説明する。
【０１３２】
ここで、図１４（Ａ）および図１５（Ａ）に示すモジュール分割対象のＤＦＧ３２の具体例について説明する。図１４（Ａ）および図１５（Ａ）では、同じＤＦＧ３２の具体例が示されている。
【０１３３】
図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２は、入力ノードである４個の葉ノードＩ１〜Ｉ４と、出力ノードである１個の葉ノードＯ０とを含む。また、ＤＦＧ３２は、演算処理を表す６つの中間ノードＡ〜Ｆを含む。
【０１３４】
また、図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２においても、ノード間の細線矢印は、ノード間のデータ依存性を表す有向エッジＥ１１〜Ｅ２０である。ＤＦＧ３２におけるエッジＥ１１〜Ｅ２０のそれぞれは、前述したエッジＥ１〜Ｅ７と同様、ノード間に流れるデータの配線幅、つまり入出力信号線の配線幅に応じた値を、重みとしてもつ。図中、エッジＥ１１〜Ｅ２０に付された数字が重みを表している。
【０１３５】
例えば図１４（Ａ）および図１５（Ａ）において、葉ノードＩ１から中間ノードＤへの有向エッジＥ１１と、葉ノードＩ２から中間ノードＢへの有向エッジＥ１２と、葉ノードＩ３から中間ノードＡへの有向エッジＥ１３とには、重み４が付与される。葉ノードＩ４から中間ノードＣへの有向エッジＥ１４には、重み２が付与される。また、中間ノードＡから中間ノードＢ，Ｃへの有向エッジＥ１５には、重み８が付与され、中間ノードＢから中間ノードＤ，Ｅへの有向エッジＥ１６には、重み４が付与される。さらに、中間ノードＣから中間ノードＥへの有向エッジＥ１７には、重み６が付与され、中間ノードＤから中間ノードＦへの有向エッジＥ１８には、重み４が付与される。そして、中間ノードＥから中間ノードＦへの有向エッジＥ１９には、重み４が付与され、中間ノードＦから葉ノードＯ０への有向エッジＥ２０には、重み４が付与される。
【０１３６】
以下、本実施形態による、図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２のモジュール分割（Ｍリスト３４の作成および最小コストの選択）について考える。ただし、ここでは、コストは総カット数であり、制約条件３３としては、「一モジュールに含まれる中間ノード数が４以下である」ことが設定されているものとする。
【０１３７】
ここでは、図１４（Ｂ）を参照して図１４（Ａ）に示すＤＦＧ３２におけるノードＡ〜ＣのＭリスト３４について説明し、図１５（Ｂ）を参照して図１５（Ａ）に示すＤＦＧ３２におけるノードＤ〜ＦのＭリスト３４について説明する。
【０１３８】
なお、図１４（Ｂ）は、図１４（Ａ）に示すＤＦＧ３２におけるノードＡ〜ＣのＭリスト３４を示す図であり、図１５（Ｂ）は、図１５（Ａ）に示すＤＦＧ３２におけるノードＥ〜ＦのＭリスト３４を示す図である。また、図１４（Ｂ）および図１５（Ｂ）において、各中間ノードのＭリスト３４は、既述のＭリスト３４と同様、モジュール分割候補毎のモジュール分割情報（｛ノード集合｝，コスト，｛出力集合｝）の集合として作成される。さらに、図１４（Ｂ）および図１５（Ｂ）において、中間ノードＡ〜Ｆの出現順序は、前述したトポロジカル順に相当する。
【０１３９】
上述したコスト算出部２１の機能により、図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２における中間ノードＡ〜ＦそれぞれのＭリスト３４は、図１４（Ｂ）および図１５（Ｂ）に示すように算出され作成される。
【０１４０】
図１４（Ｂ）に示すように、中間ノードＡを頂点とするモジュール分割候補はＡ１の一組のみである。当該候補Ａ１において、ノード集合は｛Ａ｝、コストは“１２”、出力集合は｛Ａ｝である。
【０１４１】
中間ノードＢを頂点とするモジュール分割候補は、Ｂ１，Ｂ２の二組である。候補Ｂ１において、ノード集合は｛Ｂ｝、コストは“２０”、出力集合は｛Ａ，Ｂ｝である。また、候補Ｂ２において、ノード集合は｛Ａ，Ｂ｝、コストは“２０”、出力集合は｛Ａ，Ｂ｝である。
【０１４２】
同様に、中間ノードＣを頂点とするモジュール分割候補は、Ｃ１，Ｃ２の二組である。候補Ｃ１において、ノード集合は｛Ｃ｝、コストは“２０”、出力集合は｛Ａ，Ｃ｝である。また、候補Ｃ２において、ノード集合は｛Ａ，Ｃ｝、コストは“２０”、出力集合は｛Ａ，Ｃ｝である。
【０１４３】
図１５（Ｂ）に示すように、中間ノードＤを頂点とするモジュール分割候補は、Ｄ１〜Ｄ３の三組である。候補Ｄ１において、ノード集合は｛Ｄ｝、コストは“２８”、出力集合は｛Ａ，Ｂ，Ｄ｝である。また、候補Ｄ２において、ノード集合は｛Ｂ，Ｄ｝、コストは“２８”、出力集合は｛Ａ，Ｂ，Ｄ｝である。候補Ｄ３において、ノード集合は｛Ａ，Ｂ，Ｄ｝、コストは“２８”、出力集合は｛Ａ，Ｂ，Ｄ｝である。
【０１４４】
中間ノードＥを頂点とするモジュール分割候補は、Ｅ１〜Ｅ７の七組である。候補Ｅ１において、ノード集合は｛Ｅ｝、コストは“３２”、出力集合は｛Ａ，Ｂ，Ｃ，Ｅ｝である。候補Ｅ２において、ノード集合は｛Ａ，Ｂ，Ｃ，Ｅ｝、コストは“１８”、出力集合は｛Ｂ，Ｅ｝である。候補Ｅ３において、ノード集合は｛Ａ，Ｃ，Ｅ｝、コストは“２６”、出力集合は｛Ａ，Ｂ，Ｅ｝である。候補Ｅ４において、ノード集合は｛Ｂ，Ｅ｝、コストは“３２”、出力集合は｛Ａ，Ｂ，Ｃ，Ｅ｝である。候補Ｅ５において、ノード集合は｛Ｃ，Ｅ｝、コストは“２６”、出力集合は｛Ａ，Ｂ，Ｅ｝である。候補Ｅ６において、ノード集合は｛Ｂ，Ｃ，Ｅ｝、コストは“２６”、出力集合は｛Ａ，Ｂ，Ｅ｝である。候補Ｅ７において、ノード集合は｛Ａ，Ｂ，Ｅ｝、コストは“３２”、出力集合は｛Ａ，Ｂ，Ｃ，Ｅ｝である。
【０１４５】
ここで、コスト算出に際し、入力ノード集合ＦＩに属するノードｋのＴＦＩ（ｋ）が重なり合う場合、当該重なり合う部分のコストを除去してコストを算出する必要がある。
【０１４６】
例えば、候補Ｅ１の場合つまり｛Ｅ｝を一つのモジュールとして分割する場合、候補Ｅ１のコストは以下のように算出される。｛Ｅ｝自体のコストは、出力の重み“４”と葉ノードの入力の重み“０”との合計“４”である。ＦＩのコストは、ノードＢ（候補Ｂ１）のコスト２０およびノードＣ（候補Ｃ１）のコスト２０である。ＦＩの重なり合う部分はノードＡであるので、重なり合う部分のコストは、ノードＡ（候補Ａ１）のコスト１２である。したがって、候補Ｅ１のコスト＝４＋２０＋２０−１２＝３２となる。
【０１４７】
同様に、例えば、候補Ｅ３の場合つまり｛Ａ，Ｃ，Ｅ｝を一つのモジュールとして分割する場合、候補Ｅ３のコストは以下のように算出される。｛Ａ，Ｃ，Ｅ｝自体のコストは、出力の重み“４”，“８”と葉ノードＩ３，Ｉ４の入力の重み“４”，“２”との合計“１８”である。ＦＩのコストは、ノードＢ（候補Ｂ１）のコスト２０である。ＦＩの重なり合う部分はノードＡであるので、重なり合う部分のコストは、ノードＡ（候補Ａ１）のコスト１２である。したがって、候補Ｅ３のコスト＝１８＋２０−１２＝２６となる。
【０１４８】
また、例えば、候補Ｅ４の場合つまり｛Ｂ，Ｅ｝を一つのモジュールとして分割する場合、候補Ｅ４のコストは以下のように算出される。｛Ｂ，Ｅ｝自体のコストは、出力の重み“４”，“４”と葉ノードＩ２の入力の重み“４”との合計“１２”である。ＦＩのコストは、ノードＣ（候補Ｃ１）のコスト２０である。このとき、ＦＩの入力Ａは、候補Ｃ１の出力集合｛Ａ，Ｃ｝によってカバーされるので、コストに計上する必要がない。したがって、候補Ｅ４のコスト＝１２＋２０＝３２となる。
【０１４９】
中間ノードＦを頂点とするモジュール分割候補は、Ｆ１〜Ｆ４，…である。候補Ｆ１において、ノード集合は｛Ｆ｝、コストは“３０”、出力集合は｛Ｂ，Ｄ，Ｅ，Ｆ｝である。候補Ｆ２において、ノード集合は｛Ｄ，Ｆ｝、コストは“２６”、出力集合は｛Ｂ，Ｅ，Ｆ｝である。候補Ｆ３において、ノード集合は｛Ｂ，Ｄ，Ｆ｝、コストは“３４”、出力集合は｛Ａ，Ｂ，Ｅ，Ｆ｝である。候補Ｅ４において、ノード集合は｛Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ｝、コストは“１８”、出力集合は｛Ｆ｝である。
【０１５０】
なお、図１５（Ｂ）において、一重取消線によって取り消されている候補（例えば候補Ｅ１，Ｅ５，Ｅ６，Ｅ７，Ｆ１，Ｆ３，…）は、他の候補によってdominateされた候補であるためにＭリスト３４から削除された候補を示す。
【０１５１】
また、図１５（Ｂ）において、二重取消線によって取り消されている候補（例えば候補Ｆ４）は、当該候補のノード集合に属する中間ノードの数が、制約条件３３である「一モジュールに含まれる中間ノード数が４以下である」ことを満たさないためにＭリスト３４から削除された候補を示す。
【０１５２】
そして、本実施形態では、図１４（Ｂ）および図１５（Ｂ）に示すように作成されたノードＡ〜ＦそれぞれのＭリスト３４に基づき、選択部２２の機能によって、図１６に示すごとく、モジュール分割候補Ｆ２とＥ２とが分割対象モジュール（モジュール分割結果３５）として選択される。図１６は、図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２の本実施形態によるモジュール分割結果３５を示す図である。
【０１５３】
このとき、選択部２２は、まず、ＤＦＧ３２の出力ノードＦのＭリスト３４（図１５（Ｂ）参照）から、最小コスト“２６”のモジュール分割候補Ｆ２を採用する。最小コスト“２６”のモジュール分割候補Ｆ２は、図１６のモジュールＭ３ｂに相当する。
【０１５４】
この後、選択部２２は、候補Ｆ２への入力ノードを辿ると、ＤＦＧ３２の出力ノードＦのＭリスト３４（図１５（Ｂ）参照）から、最小コスト“１８”のモジュール分割候補Ｅ２を採用する。最小コスト“１８”のモジュール分割候補Ｅ２は、図１６のモジュールＭ３ａに相当する。
【０１５５】
このように、本実施形態によれば、図１４（Ｂ）および図１５（Ｂ）に示すようなＤＦＧ３２は、図１６に示すように、二つのモジュールＭ３ａ，Ｍ３ｂに分割される。当該モジュール分割は、総カット数が“２６”であり、上述した最小コスト“２６”に一致している。
【０１５６】
ここで、上述した技術（例えば特許文献２）を図１４（Ｂ）および図１５（Ｂ）に示すようなＤＦＧ３２に適用した場合、図１７に示すように、入力側葉ノードＩ１〜Ｉ４と出力側葉ノードＯ０との間の最大パス長を二分するモジュール分割が行なわれる。図１７は、図１４（Ａ）および図１５（Ａ）に示すＤＦＧ３２の従来手法によるモジュール分割結果を示す図である。
【０１５７】
図１４（Ａ），図１５（Ａ），図１６および図１７に示すＤＦＧ３２において、最大パス長（最大ノード段数）は“４”であるため、当該最大パス長を二分する箇所は、一意に決まり、ノードＢとＤとの間およびノードＣとＥとの間となる。したがって、図１７に示すように、ＤＦＧ３２は、二つのモジュールＭ４ａ＝｛Ａ，Ｂ，Ｃ｝とＭ４ｂ＝｛Ｄ，Ｅ，Ｆ｝とに分割される。このようなモジュール分割の総カット数は“２８”であり、上述した本実施形態によるモジュール分割の総カット数（コスト）“２６”よりも劣っていることは明らかである。
【０１５８】
〔６〕本実施形態の効果
このように、本実施形態によれば、ＤＦＧ３２から複数のモジュール分割候補が作成され、モジュール分割候補毎に総カット数（コスト）が求められ、総カット数が最小となるモジュール分割候補が選択される。これにより、ユーザのスキルに依存することなく、最適なモジュール分割を行なうことができる。
【０１５９】
また、トポロジカル順にコストを算出することで、コストを算出するための計算量を削減することができる。つまりトポロジカル順に基づく計算処理を行なうことで、最適コストによるモジュール分割を効率よく求められることが保証される。
【０１６０】
さらに、高位合成ツールを用いた回路設計に対して、配線性を考慮した本実施形態のモジュール分割手法を適用することで、レイアウト合成に掛かる工数と設計結果として得られる回路の性能とのトレードオフが取れる設計環境を提供することができる。特に、本実施形態の技術は、ＬＳＩやＦＰＧＡなどのハードウェアデバイス向けの回路設計において有効に適用される。
【０１６１】
また、本実施形態のモジュール分割手法は、コスト（総カット数）を含むＭリスト３４の効率的な計算により、大規模なＤＦＧ３２に対する適用が可能である。例えば、ＤＦＧ３２のノード数をＮ、一モジュールの容量をノード数ｍとすると、一つのノードのＭリスト３４の計算は高々Ｏ(ｍ)である（Ｏ：order）。全てのノードについてＭリスト３４の計算を行なうため、トータルの計算量は、Ｏ(ｍ * Ｎ)であり、ＤＦＧ３２のサイズに比例する。
【０１６２】
〔７〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１６３】
例えば、上述した実施形態では、コストが総カット数である場合について説明したが、本発明はこれに限定されるものではない。総カット数以外に、例えば、回路の速度性能（最大遅延やスループットなど）を、コストとして用いることができる。ここで、ＤＦＧ上の最大モジュール段数を、回路の最大遅延と見なすことが可能である。
【０１６４】
また、上述した実施形態では、モジュール分割結果３５等の情報を出力する出力部が、当該情報を表示出力する、モニタ１４ａ等の表示部５０である場合について説明した。本発明はこれに限定されるものでなく、出力部は、当該情報を印刷出力する、プリンタ等の印刷装置であってもよく、上述した実施形態と同様の作用効果を得ることができる。
【０１６５】
〔８〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１６６】
（付記１）
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出するコスト算出部と、
前記コスト算出部によって算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する選択部と、を有する、情報処理装置。
【０１６７】
（付記２）
前記所定コストは、最小コストである、付記１に記載の情報処理装置。
【０１６８】
（付記３）
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記１または付記２に記載の情報処理装置。
【０１６９】
（付記４）
各モジュール分割候補に関する制約条件が予め設定され、
前記コスト算出部は、前記制約条件を満たすモジュール分割候補を作成する、または、前記選択部は、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、付記１〜付記３のいずれか一項に記載の情報処理装置。
【０１７０】
（付記５）
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記４に記載の情報処理装置。
【０１７１】
（付記６）
前記コスト算出部は、前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、付記１〜付記５のいずれか一項に記載の情報処理装置。
【０１７２】
（付記７）
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、
処理を、コンピュータに実行させる、プログラム。
【０１７３】
（付記８）
前記所定コストは、最小コストである、付記７に記載のプログラム。
【０１７４】
（付記９）
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和（総カット数）であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記７または付記８に記載のプログラム。
【０１７５】
（付記１０）
各モジュール分割候補に関する制約条件が予め設定され、
前記制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、処理を、前記コンピュータに実行させる、付記７〜付記９のいずれか一項に記載のプログラム。
【０１７６】
（付記１１）
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記１０に記載のプログラム。
【０１７７】
（付記１２）
前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、処理を、前記コンピュータに実行させる、付記７〜付記１１のいずれか一項に記載のプログラム。
【０１７８】
（付記１３）
コンピュータによって実行される情報処理方法であって、
データフローグラフにおける複数の演算単位であるノードから、一以上の前記ノードを含む複数のモジュール分割候補を作成し、
作成した前記複数のモジュール分割候補のそれぞれについて当該モジュール分割候補の入出力信号線の配線幅に応じたコストを算出し、
算出した前記コストに基づき、前記複数のモジュール分割候補から、所定コストとなる一以上のモジュール分割候補を、分割対象モジュールとして選択する、情報処理方法。
【０１７９】
（付記１４）
前記所定コストは、最小コストである、付記１３に記載の情報処理方法。
【０１８０】
（付記１５）
前記コストは、各モジュール分割候補の境界を横切る複数のエッジに付与された重みの総和（総カット数）であり、
前記重みは、当該重みを付与された前記エッジに対応する前記入出力信号線の配線幅に応じた値である、付記１３または付記１４に記載の情報処理方法。
【０１８１】
（付記１６）
各モジュール分割候補に関する制約条件が予め設定され、
前記制約条件を満たすモジュール分割候補を作成する、または、前記制約条件を満たすモジュール分割候補を前記分割対象モジュールとして選択する、付記１３〜付記１５のいずれか一項に記載の情報処理方法。
【０１８２】
（付記１７）
前記制約条件は、各モジュール分割候補に含まれる前記ノードの数、各モジュール分割候補の面積、各モジュール分割候補のスループットのうちの少なくとも一つである、付記１６に記載の情報処理方法。
【０１８３】
（付記１８）
前記データフローグラフにおける入力側のノードからトポロジカル順に前記コストを算出する、付記１３〜付記１７のいずれか一項に記載の情報処理方法。
【符号の説明】
【０１８４】
１０    コンピュータ（情報処理装置）
１１    プロセッサ（処理部）
１２    ＲＡＭ（記憶部）
１３    ＨＤＤ（記憶部）
１４    グラフィック処理装置
１４ａ    モニタ（表示部，出力部）
１５    入力インタフェース
１５ａ    キーボード（入力部）
１５ｂ    マウス（入力部）
１６    光学ドライブ装置
１６ａ    光ディスク
１７    機器接続インタフェース
１７ａ    メモリ装置
１７ｂ    メモリリーダライタ
１７ｃ    メモリカード
１８    ネットワークインタフェース
１８ａ    ネットワーク
１９    バス
２０    処理部
２１    コスト算出部
２２    選択部
３０    記憶部
３１    プログラム
３２    データフローグラフ（ＤＦＧ）
３３    制約条件
３４    Ｍリスト（モジュール分割情報）
３５    モジュール分割結果
４０    入力部
５０    表示部（出力部）
１０１    ソフトウェアコード
１０２    モジュール毎コード
１０３    論理回路データ
１０４    ハードウェア回路データ
【図１】
2018112865.tif 000003
【図２】
2018112865.tif 000004
【図３】
2018112865.tif 000005
【図４】
2018112865.tif 000006
【図５】
2018112865.tif 000007
【図６】
2018112865.tif 000008
【図７】
2018112865.tif 000009
【図８】
2018112865.tif 000010
【図９】
2018112865.tif 000011
【図１０】
2018112865.tif 000012
【図１１】
2018112865.tif 000013
【図１２】
2018112865.tif 000014
【図１３】
2018112865.tif 000015
【図１４】
2018112865.tif 000016
【図１５】
2018112865.tif 000017
【図１６】
2018112865.tif 000018
【図１７】
2018112865.tif 000019