【手続補正書】
【提出日】平成24年8月13日(2012.8.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力コードから並列実行可能なコードを生成するシステムであって、
１つ以上のプロセッサであって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定し、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定し、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成し、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定し、
並列実行可能なコードを生成する、
ように構成される１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続される１つ以上のメモリであって、前記１つ以上のプロセッサに命令を与えるように構成される１つ以上のメモリと、
を備えるシステム。
【請求項２】
請求項１に記載のシステムであって、
前記入力コードがバイナリコードである、システム。
【請求項３】
請求項１または２に記載のシステムであって、
前記静的解析には、前記入力コードを逆アセンブルして、前記入力コードを静的に生成される中間表現に変換する処理が含まれる、システム。
【請求項４】
請求項１ないし３のいずれかに記載のシステムであって、
前記静的解析には、並列実行が可能な静的中間表現の部分を特定する処理が含まれる、システム。
【請求項５】
請求項１ないし４のいずれかに記載のシステムであって、
前記静的解析には、インスツルメンテーションコードを挿入する処理が含まれる、システム。
【請求項６】
請求項１ないし４のいずれかに記載のシステムであって、
前記静的解析には、インスツルメンテーションコードを挿入する処理が含まれ、
前記動的解析には、前記インスツルメンテーションコードを実行する処理が含まれる、システム。
【請求項７】
請求項１ないし６のいずれかに記載のシステムであって、
前記動的解析には、プロファイル情報を決定する処理が含まれる、システム。
【請求項８】
請求項１ないし７のいずれかに記載のシステムであって、
前記動的解析には、ホットスポット情報を決定する処理が含まれる、システム。
【請求項９】
請求項１ないし８のいずれかに記載のシステムであって、
前記動的解析には、分岐ターゲット情報を決定する処理が含まれる、システム。
【請求項１０】
請求項１ないし９のいずれかに記載のシステムであって、
前記動的解析には、メモリ・エイリアス情報を決定する処理が含まれる、システム。
【請求項１１】
請求項１ないし１０のいずれかに記載のシステムであって、
前記動的解析には、動的ループ回数情報を決定する処理が含まれる、システム。
【請求項１２】
請求項１ないし１１のいずれかに記載のシステムであって、
前記プロセッサは、さらに、
並列部分を含むように前記中間表現を修正するように構成され、
修正された中間表現に基づいてアクセラレーション・コードを生成することを含む、システム。
【請求項１３】
請求項１ないし１２のいずれかに記載のシステムであって、
並列実行が可能な前記中間表現の部分が投機的に決定される、システム。
【請求項１４】
請求項１ないし１３のいずれかに記載のシステムであって、
並列実行が可能な前記中間表現の部分が投機的に決定され、検証コードが挿入される、システム。
【請求項１５】
入力コードから並列実行可能なコードを生成する方法であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定する工程と、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定する工程と、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成する工程と、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定する工程と、を備える方法。
【請求項１６】
コンピュータに入力コードから並列実行可能なコードを生成させるためのコンピュータプログラムであって、
複数のコンピュータ命令であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定するコンピュータ命令と、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定するコンピュータ命令と、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成するコンピュータ命令と、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定するコンピュータ命令と、を備える、コンピュータプログラム。
【請求項１７】
入力コードから並列実行可能なコードを生成するシステムであって、
１つ以上のプロセッサであって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定し、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成し、
前記中間表現を処理して、並列実行可能なコードを生成し、
前記並列実行可能なコードを格納し、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行する、
ように構成される１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続される１つ以上のメモリであって、前記１つ以上のプロセッサに命令を与えるように構成される１つ以上のメモリと、
を備えるシステム。
【請求項１８】
入力コードから並列実行可能なコードを生成する方法であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定する工程と、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成する工程と、
前記中間表現を処理して、並列実行可能なコードを生成する工程と、
前記並列実行可能なコードを格納する工程と、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行する工程と、
を備える方法。
【請求項１９】
コンピュータに入力コードから並列実行可能なコードを生成させるためのコンピュータプログラムであって、
複数のコンピュータ命令であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定するコンピュータ命令と、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成するコンピュータ命令と、
前記中間表現を処理して、並列実行可能なコードを生成するコンピュータ命令と、
前記並列実行可能なコードを格納するコンピュータ命令と、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行するコンピュータ命令と、を備える、
コンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
図１０は、プログラム表現のいくつかの例とそれらの相互関係を示す図である。たとえば、プログラムは、（高級言語またはアセンブリでコード化（符号化）された）ソース形式でも、バイナリ実行ファイルとして（コンパイルされているが実行可能ではない）オブジェクト形式でもよい。システムモジュールが、複数のオブジェクトファイルをリンクさせて、より大きく、より完全な実行ファイルを作成するようにしてもよい。また、システムモジュールが、プログラムが起動すると、起動したプログラムをメモリにロードするようにしてもよい。実行中のメモリ常駐アプリケーションは直接実行されるものでもよいし、あるいは、インタプリタ（解釈プログラム）内で実行されるものでもよい。また、プログラムは、中間表現のコンパイラ内に存在するものでもよく、コンパイラのコードジェネレータは、このプログラムを実行可能な形式に変換するものでもよい。実行可能な形式に変換されたプログラムをファイルに書き込み、メモリにロードして、直接実行することができる。あるいは、実行可能な形式に変換されたプログラムをインタプリタやランタイムに渡して実行させるようにしてもよい。
なお、本発明は、以下のような適用例により実現することもできる。
［適用例１］
入力コードから並列実行可能なコードを生成するシステムであって、
１つ以上のプロセッサであって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定し、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定し、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成し、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定し、
並列実行可能なコードを生成する、
ように構成される１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続される１つ以上のメモリであって、前記１つ以上のプロセッサに命令を与えるように構成される１つ以上のメモリと、
を備えるシステム。
［適用例２］
適用例１のシステムであって、
前記入力コードがバイナリコードである、システム。
［適用例３］
適用例１のシステムであって、
前記静的解析には、前記入力コードを逆アセンブルして、前記入力コードを静的に生成される中間表現に変換する処理が含まれる、システム。
［適用例４］
適用例１のシステムであって、
前記静的解析には、並列実行が可能な静的中間表現の部分を特定する処理が含まれる、システム。
［適用例５］
適用例１のシステムであって、
前記静的解析には、インスツルメンテーションコードを挿入する処理が含まれる、システム。
［適用例６］
適用例１のシステムであって、
前記静的解析には、インスツルメンテーションコードを挿入する処理が含まれ、
前記動的解析には、前記インスツルメンテーションコードを実行する処理が含まれる、システム。
［適用例７］
適用例１のシステムであって、
前記動的解析には、プロファイル情報を決定する処理が含まれる、システム。
［適用例８］
適用例１のシステムであって、
前記動的解析には、ホットスポット情報を決定する処理が含まれる、システム。
［適用例９］
適用例１のシステムであって、
前記動的解析には、分岐ターゲット情報を決定する処理が含まれる、システム。
［適用例１０］
適用例１のシステムであって、
前記動的解析には、メモリ・エイリアス情報を決定する処理が含まれる、システム。
［適用例１１］
適用例１のシステムであって、
前記動的解析には、動的ループ回数情報を決定する処理が含まれる、システム。
［適用例１２］
適用例１のシステムであって、さらに、
並列部分を含むように前記中間表現を修正し、
修正された中間表現に基づいてアクセラレーション・コードを生成することを含む、システム。
［適用例１３］
適用例１のシステムであって、
並列実行が可能な前記中間表現の部分が投機的に決定される、システム。
［適用例１４］
適用例１のシステムであって、
並列実行が可能な前記中間表現の部分が投機的に決定され、検証コードが挿入される、システム。
［適用例１５］
入力コードから並列実行可能なコードを生成する方法であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定する工程と、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定する工程と、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成する工程と、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定する工程と、を備える方法。
［適用例１６］
入力コードから並列実行可能なコードを生成するためのコンピュータプログラム製品であって、
コンピュータ読み取り可能な記憶媒体に具現化され、
複数のコンピュータ命令であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定するコンピュータ命令と、
前記入力コードを動的に解析することにより、前記入力コードのデータフローおよび制御フローの追加のアスペクトを決定するコンピュータ命令と、
前記静的解析によって決定された前記入力コードのデータフローおよび制御フローの前記アスペクトと、前記動的解析によって決定された前記入力コードのデータフローおよび制御フローの前記追加のアスペクトと、に少なくとも部分的に基づいて、前記入力コードの中間表現を生成するコンピュータ命令と、
前記中間表現を処理して、並列実行が可能な前記中間表現の部分を決定するコンピュータ命令と、を備える、コンピュータプログラム製品。
［適用例１７］
入力コードから並列実行可能なコードを生成するシステムであって、
１つ以上のプロセッサであって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定し、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成し、
前記中間表現を処理して、並列実行可能なコードを生成し、
前記並列実行可能なコードを格納し、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行する、
ように構成される１つ以上のプロセッサと、
前記１つ以上のプロセッサに接続される１つ以上のメモリであって、前記１つ以上のプロセッサに命令を与えるように構成される１つ以上のメモリと、
を備えるシステム。
［適用例１８］
入力コードから並列実行可能なコードを生成する方法であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定する工程と、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成する工程と、
前記中間表現を処理して、並列実行可能なコードを生成する工程と、
前記並列実行可能なコードを格納する工程と、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行する工程と、
を備える方法。
［適用例１９］
入力コードから並列実行可能なコードを生成するためのコンピュータプログラム製品であって、
コンピュータ読み取り可能な記憶媒体に具現化され、
複数のコンピュータ命令であって、
前記入力コードを静的に解析することにより、前記入力コードのデータフローおよび制御フローのアスペクトを決定するコンピュータ命令と、
データフローおよび制御フローの前記アスペクトに少なくとも部分的に基づいて、前記入力コードの中間表現を生成するコンピュータ命令と、
前記中間表現を処理して、並列実行可能なコードを生成するコンピュータ命令と、
前記並列実行可能なコードを格納するコンピュータ命令と、
前記入力コードの実行要求に応じて、前記格納された並列実行可能なコードを実行するコンピュータ命令と、を備える、
コンピュータプログラム製品。