【手続補正書】
【提出日】平成19年2月1日(2007.2.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データフローモデルに応じた既存のソフトウェアプログラムの処理フローの再設定と該データフローモデルに応じた新しいソフトウェアプログラムの開発とのうち少なくとも一方のためにコンピュータで実行される方法であって、該方法は、
画面表示を表示することを含み、
ユーザがメモリ領域を指定し該メモリ領域を複数のブロックに分割することができるようにすることを含み、該複数のブロックの各ブロックは、関数に関連付けられた数値の集合を定義し、
ユーザがブロックの集合を定義することができるようにすることを含み、集合に含まれる各ブロックは、前記データフローモデルに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義される数値を前記関数に基づいて変換し、
ユーザがブロック間の依存性を割り当てることができるようにすることを含み、各依存性は、各ブロックの前記所定のステートに基づいて前記複数のブロックのうちの複数ブロック間の関係を示す
ことを特徴とする。
【請求項２】
データフローモデルに応じた既存のソフトウェアプログラムの処理フローの再設定と該データフローモデルに応じた新しいソフトウェアプログラムの開発とのうち少なくとも一方のための、ユーザインターフェイスを表示する開発ツールを含むデータ処理システムであって、
前記ユーザインターフェイスは、メモリ領域を定義し該メモリ領域を複数のブロックに分割する命令を受け取るように構成された第１の図表を含み、該複数のブロックの各ブロックは、関数に関連付けられた数値の集合を定義し、
前記ユーザインターフェイスは、ブロックの集合を定義する命令を受け取るように構成された第２の図表を含み、集合に含まれる各ブロックは、前記データフローモデルに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を関数に基づいて変換し、
前記ユーザインターフェイスは、ブロック間の依存性を表わす情報を受け取るように構成された第３の図表を含み、各依存性は、各ブロックの前記所定のステートに基づいて前記複数のブロックのうちの複数ブロック間の関係を示すことを特徴とする。
【請求項３】
請求項２に記載の図表を用いたユーザインターフェイスにおいて、２つのブロック間の依存関係は、２つのブロックの一方に関連付けられたプログラムの部分が他方のブロックに関連付けられたプログラムの部分よりも前に実行されることが必要であることを意味することを特徴とする請求項２に記載のデータ処理システム。
【請求項４】
データ処理システムは、
第１プログラムとデータフローモデルに応じた第２ソフトウェアプログラムを開発する開発ツールとを格納したメモリと、
前記開発ツールを実行する少なくとも１つのプロセッサと
を具備しており、
前記第２プログラムは、（ｉ）複数のブロックに分割されるメモリ領域を含み、該複数のブロックの各ブロックは、関数に関連付けられた数値の集合を定義するとともに、前記第１プログラムの指定された部分に対応する所定のステートを有し、実行時に前記第１プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換し、更に前記第２プログラムは、（ｉｉ）ブロック間の依存性を含み、各依存性は、２つのブロック間の関係を示すとともに、関係に係る第２のブロックに関連付けられる第１プログラムの部分よりも前に該関係に係る第１のブロックに関連付けられた第１プログラムの部分が実行されることが必要であることを意味することを特徴とするデータ処理システム。
【請求項５】
記憶されている依存性に従って第２プログラムを実行するための複数の並列プロセッサを具備することを特徴とする請求項４に記載のデータ処理システム。
【請求項６】
データフローモデルに応じた既存のソフトウェアプログラムの処理フローの再設定と該データフローモデルに応じた新しいソフトウェアプログラムの開発とのうち少なくとも一方のためのデータ処理システムであって、前記システムは、
命令を格納したメモリと、
前記命令に応答するとともにユーザが次に示すことをすることができるように構成されたプロセッサと
を具備することを特徴とする。
（ｉ）メモリ領域を指定するとともに、該メモリ領域を複数のブロックに分割すること。ここで、該複数のブロックの各ブロックは、関数に関連付けられた数値の集合を定義する。
（ｉｉ）ブロックの集合を定義すること。ここで、集合に含まれる各ブロックは、前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を関数に基づいて変換する。
（ｉｉｉ）ブロック間の依存性を割り当てること。ここで、各依存性は、各ブロックの前記所定のステートに基づいて前記複数のブロックのうちの複数ブロック間の関係を示す。
【請求項７】
データフローモデルに応じた既存のソフトウェアプログラムの処理フローの再設定を行うための方法と前記データフローモデルに応じた新しいソフトウェアプログラムの開発を行うための方法とのうち少なくとも一方を実行するためのデータ処理システムを制御するための命令を格納したコンピュータ可読媒体であって、前記方法が次に示すステップを含むことを特徴とする。
（ｉ）ユーザが、メモリ領域を指定し、該メモリ領域を複数のブロックに分割することができるようにするステップ。ここで、該複数のブロックの各ブロックは関数に関連付けられた数値の集合を定義する。
（ｉｉ）ユーザが、ブロックの集合を定義することができるようにするステップ。ここで、集合に含まれる各ブロックは、前記データフロープログラムに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換する。
（ｉｉｉ）ユーザが、ブロック間の依存性を割り当てることができるようにするステップ。ここで、各依存性は、各ブロックの前記所定のステートに基づいて前記複数のブロックのうちの複数ブロック間の関係を示す。
【請求項８】
データフローモデルに応じた既存のソフトウェアプログラムの処理フローの再設定を行うための方法と前記データフローモデルに応じた新しいソフトウェアプログラムの開発を行うための方法とのうち少なくとも一方を実行するためのデータ処理システムを制御するための命令を格納したコンピュータ可読媒体であって、前記方法が次に示すステップを含むことを特徴とする。
（ｉ）メモリ領域を定義し該メモリ領域を複数のブロックに分割するための命令を受け取るように構成された第１の図表を表示するステップ。ここで、該複数のブロックの各ブロックは、関数に関連付けられた数値の集合を定義する。
（ｉｉ）ブロックの集合を定義するための命令を受け取るように構成された第２の図表を表示するステップ。ここで、集合に含まれる各ブロックは、前記データフロープログラムに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換する。
（ｉｉｉ）ブロック間の依存性を表わす情報を受け取るように構成された第３の図表を表示するステップ。ここで、各依存性は、各ブロックの前記所定のステートに基づいて前記複数のブロックのうちの複数ブロック間の関係を示す。
【請求項９】
２つのブロック間の依存関係は、該２つのブロックの一方に関連付けられたプログラムの部分が他方のブロックに関連付けられたプログラムの部分よりも前に実行されることが必要であることを意味することを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
マルチプロセッサコンピュータシステムにおけるデータフローモデルに応じたソフトウェアプログラムの実行最適化方法であって、
前記実行最適化方法は、メモリ領域情報を受け取ることを含み、
前記メモリ領域情報は、メモリ領域を定義する複数のブロックを表わすブロック情報を含み、
各ブロックは、関数に関連付けられた数値の集合を定義するとともに、前記データフローモデルに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換し、
前記メモリ領域情報は、更に、ブロック間の依存性を表わす依存性情報を含み、
各依存性は、２つのブロック間の関係を示し、関係に係る第１のブロックに関連付けられたプログラムの部分が該関係に係る第２のブロックに関連付けられたプログラムの部分よりも前に実行されることが必要であることを意味し、
前記実行最適化方法は、更に、前記メモリ領域情報を組織化するキューを生成することを含む
ことを特徴とする。
【請求項１１】
更に、前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記キューは少なくとも２つの部分を有し、各部分は優先度を有し、
前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行することには、
各ブロックに割り当てられた優先度を用いて前記キューの２つの部分にブロックを配置すること
を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行することには、
更に、
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいて前記キューの２つの部分からブロックを選択することを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択することには、
キューの高い優先度の部分からブロックを選択することと、
キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有る場合には、該依存関係が全て満足されたか否かを判定して、該ブロックに関連する全ての依存関係が満足されたと判定されるときに、該ブロックに関連付けられたプログラムコードの実行を開始することとを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択することには、
キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有り、該依存関係が全て満足されるに至っていないと判定されるときに、キューの低い優先度の部分からブロックを選択することと、キューの低い優先度の部分から選択されたブロックに関連付けられた依存関係が有り、該依存関係が全て満足されたと判定されるときに、キューの低い優先度の部分から選択された前記ブロックに関連付けられたプログラムコードの実行を開始することとを含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、各ブロックに割り当てられた優先度を用いて各キューが異なる優先度を有する少なくとも２つのキューにブロックを配置することを含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
前記キューにおける組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、更に、高い優先度を有するキューのブロックを低い優先度を有するキューのブロックよりも優先するようにして各キューの優先度に基づいてキューからブロックを選択することを含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、
ブロックを実行するための資源が利用可能であるが該ブロックの全ての依存関係が満足されるに至っていない場合に、該ブロックの実行に必要であり利用可能なデータを予め読み出すことを含むことを特徴とする請求項１１に記載の方法。
【請求項１９】
前記メモリ領域情報を組織化する前記キューを生成することには、
各ブロックに対応するノードをグラフ上に設けて、メモリ情報に基づく有向非環状グラフを生成することと、
予め定めた関数に従って有向非環状グラフを走査することと、
前記有向非環状グラフの走査に基づいて前記キューに各ブロックを識別する情報を配置することとを含むことを特徴とする請求項１０に記載の方法。
【請求項２０】
予め定めた関数に従って前記有向非環状グラフを走査することには、
ブロックが自身よりも小さい重みを有するブロックに対してデータ依存性を有することが無いように各ブロックに重み付けをすること
を含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
マルチプロセッサコンピュータシステムにおいて実行するためにデータフロープログラムに応じたソフトウェアプログラムを最適化するシステムであって、
前記システムは、メモリ領域情報によって特徴付けられるプログラムを格納したメモリを具備し、
前記メモリ領域情報は、メモリ領域を定義する複数のブロックを表わすブロック情報を含み、
各ブロックは、関数に関連付けられた数値の集合を定義するとともに、前記データフローモデルに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換し、
前記メモリ領域情報は、更に、ブロック間の依存性を表わす依存性情報を含み、
各依存性は、２つのブロック間の関係を示し、関係に係る第１のブロックに関連付けられたプログラムの部分が該関係に係る第２のブロックに関連付けられたプログラムの部分よりも前に実行されることが必要であることを意味し、
前記システムは、更に、前記メモリ領域情報を組織化するキューを生成するように構成された少なくとも１つのプロセッサを具備することを特徴とする。
【請求項２２】
前記マルチプロセッサコンピュータシステムは、前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記キューは少なくとも２つの部分を有し、各部分は優先度を有し、
前記プロセッサが前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行するときには、
前記プロセッサは各ブロックに割り当てられた優先度を用いて前記キューの２つの部分にブロックを配置する
ことを特徴とする請求項２２に記載のシステム。
【請求項２４】
前記プロセッサが前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行するときには、
前記プロセッサは、キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいて前記キューの２つの部分からブロックを選択することを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記プロセッサがキューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択するときには、
前記プロセッサは、キューの高い優先度の部分からブロックを選択して、キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有る場合には、該依存関係が全て満足されたか否かを判定して、該ブロックに関連する全ての依存関係が満足されたと判定されるときに、該ブロックに関連付けられたプログラムコードの実行を開始することを特徴とする請求項２４に記載のシステム。
【請求項２６】
前記プロセッサがキューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択するときには、
前記プロセッサは、キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有り、該依存関係が全て満足されるに至っていないと判定されるときに、キューの低い優先度の部分からブロックを選択して、キューの低い優先度の部分から選択されたブロックに関連付けられた依存関係が有り、該依存関係が全て満足されたと判定されるときに、キューの低い優先度の部分から選択された前記ブロックに関連付けられたプログラムコードの実行を開始することを特徴とする請求項２５に記載のシステム。
【請求項２７】
前記プロセッサが、前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行するときには、前記プロセッサは、各ブロックに割り当てられた優先度を用いて各キューが異なる優先度を有する少なくとも２つのキューにブロックを配置することを特徴とする請求項２２に記載のシステム。
【請求項２８】
前記プロセッサが、前記キューにおけるメモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行するときには、前記プロセッサは、高い優先度を有するキューのブロックを低い優先度を有するキューのブロックよりも優先するようにして各キューの優先度に基づいてキューからブロックを選択することを特徴とする請求項２７に記載のシステム。
【請求項２９】
前記プロセッサが前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行するときには、
前記プロセッサは、ブロックを実行するための資源が利用可能であるが該ブロックの全ての依存関係が満足されるに至っていない場合に、該ブロックの実行に必要であり利用可能なデータを予め読み出すことを特徴とする請求項２２に記載のシステム。
【請求項３０】
前記プロセッサが前記メモリ領域情報を組織化する前記キューを生成するときには、
前記プロセッサが、
（ｉ）各ブロックに対応するノードをグラフ上に設けることによって、メモリ情報に基づく有向非環状グラフを生成し、
（ｉｉ）予め定めた関数に従って有向非環状グラフを走査し、そして、
（ｉｉｉ）前記有向非環状グラフの走査に基づいて前記キューに各ブロックを識別する情報を配置する
ことを特徴とする請求項２１に記載のシステム。
【請求項３１】
前記プロセッサが予め定めた関数に従って前記有向非環状グラフを走査するときには、
前記プロセッサは、ブロックが自身よりも小さい重みを有するブロックに対してデータ依存性を有することが無いように各ブロックに重み付けをする
ことを特徴とする請求項３０に記載のシステム。
【請求項３２】
マルチプロセッサコンピュータシステムにおけるデータフローモデルに応じたソフトウェアプログラムの実行最適化方法を実行するための命令を格納したコンピュータ可読媒体であって、
前記実行最適化方法は、メモリ領域情報を受け取ることを含み、
前記メモリ領域情報は、メモリ領域を定義する複数のブロックを表わすブロック情報を含み、
各ブロックは、関数に関連付けられた数値の集合を定義するとともに、前記データフローモデルに応じた前記プログラムの指定された部分に対応する所定のステートを有し、実行時に前記プログラムは、前記ブロックにより定義された数値を前記関数に基づいて変換し、
前記メモリ領域情報は、更に、ブロック間の依存性を表わす依存性情報を含み、
各依存性は、２つのブロック間の関係を示し、関係に係る第１のブロックに関連付けられたプログラムの部分が該関係に係る第２のブロックに関連付けられたプログラムの部分よりも前に実行されることが必要であることを意味し、
前記実行最適化方法は更に、前記メモリ領域情報を組織化するキューを生成することを含む
ことを特徴とする。
【請求項３３】
前記実行最適化方法は、更に、前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することを含むことを特徴とする請求項３２に記載のコンピュータ可読媒体。
【請求項３４】
予め定めた関数に従って前記有向非環状グラフを走査することには、
ブロックが自身よりも小さい重みを有するブロックに対してデータ依存性を有することが無いように各ブロックに重み付けをすること
を含むことを特徴とする請求項３３に記載のコンピュータ可読媒体。
【請求項３５】
前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行することには、
更に、
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいて前記キューの２つの部分からブロックを選択することを含むことを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３６】
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択することには、
キューの高い優先度の部分からブロックを選択することと、
キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有る場合には、該依存関係が全て満足されたか否かを判定して、該ブロックに関連する全ての依存関係が満足されたと判定されるときに、該ブロックに関連付けられたプログラムコードの実行を開始することとを含むことを特徴とする請求項３５に記載のコンピュータ可読媒体。
【請求項３７】
前記キューは少なくとも２つの部分を有し、各部分は優先度を有し、
前記キューにおける前記メモリ領域情報の組織に従って各ブロックに関連付けられたプログラムの指定された部分を実行することには、
各ブロックに割り当てられた優先度を用いて前記キューの２つの部分にブロックを配置することを含む
ことを特徴とする請求項３３に記載のコンピュータ可読媒体。
【請求項３８】
キューの高い優先度の部分のブロックをキューの低い優先度の部分のブロックよりも優先するようにして、キューの各部分の優先度に基づいてキューの２つの部分からブロックを選択することには、
キューの高い優先度の部分から選択された前記ブロックに関連付けられた依存関係が有り、該依存関係が全て満足されるに至っていないと判定されるときに、
キューの低い優先度の部分からブロックを選択することと、キューの低い優先度の部分から選択されたブロックに関連付けられた依存関係が有り、該依存関係が全て満足されたと判定されるときに、キューの低い優先度の部分から選択された前記ブロックに関連付けられたプログラムコードの実行を開始することと
を含むことを特徴とする請求項３５に記載のコンピュータ可読媒体。
【請求項３９】
前記キューにおけるメモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、
更に、高い優先度を有するキューのブロックを低い優先度を有するキューのブロックよりも優先するようにして各キューの優先度に基づいてキューからブロックを選択することを含むことを特徴とする請求項３８に記載のコンピュータ可読媒体。
【請求項４０】
前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、
各ブロックに割り当てられた優先度を用いて各キューが異なる優先度を有する少なくとも２つのキューにブロックを配置することを含むことを特徴とする請求項３３に記載のコンピュータ可読媒体。
【請求項４１】
前記キューにおける前記メモリ領域情報の組織に従って、各ブロックに関連付けられたプログラムの指定された部分を実行することには、
ブロックを実行するための資源が利用可能であるが該ブロックの全ての依存関係が満足されるに至っていない場合に、該ブロックの実行に必要であり利用可能なデータを予め読み出すことを含むことを特徴とする請求項３３に記載のコンピュータ可読媒体。
【請求項４２】
前記メモリ領域情報を組織化する前記キューを生成することには、
各ブロックに対応するノードをグラフ上に設けて、メモリ情報に基づく有向非環状グラフを生成することと、
予め定めた関数に従って有向非環状グラフを走査することと、
前記有向非環状グラフの走査に基づいて前記キューに各ブロックを識別する情報を配置することとを含むことを特徴とする請求項３２に記載のコンピュータ可読媒体。