【手続補正書】
【提出日】平成28年8月17日(2016.8.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理リソース割り当て方法であって、
予め選択されたデータ場所を有するデータにマッピングされた命令を識別する工程と、
処理リソース割り当て装置により、前記予め選択されたデータ場所に基づいて第１の処理装置（ＰＵ）から第２のＰＵに前記命令のコールを転送するか否かを判定する工程と、
を含む処理リソース割り当て方法。
【請求項２】
前記第１のＰＵに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令を前記キャッシュ・メモリ装置にロードする工程と、
前記命令に関連付けられた境界において、前記キャッシュ・メモリ装置に、余分なコードの組をインジェクトする工程であって、前記命令がターゲット命令であり、前記余分なコードの組は、前記コールを特定のＰＵに転送するか否かを前記第１のＰＵが判定することを可能にするよう構成される、工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３】
予め選択された１つ又は複数の実行可能なルーチンそれぞれに対応する１つ又は複数の実行可能なルーチン名を識別する工程と、
前記１つ又は複数の実行可能なルーチン名に基づいて、前記余分なコードの組を選択して、参照渡しコールから値渡しコールに前記コールを変換する工程と、
を更に含む請求項２記載の処理リソース割り当て方法。
【請求項４】
前記第１のＰＵ及び前記第２のＰＵそれぞれに関連付けられた第１のキャッシュ・メモリ装置及び第２のキャッシュ・メモリ装置を識別する工程と、
第１のデータの組及び第２のデータの組それぞれに関連付けられた第１のデータ場所及び第２のデータ場所を識別する工程であって、前記第１のデータ場所及び前記第２のデータ場所は前記第１のキャッシュ・メモリ装置内及び前記第２のキャッシュ・メモリ装置内それぞれに配置される、工程と、
前記第１のデータ場所及び前記第２のデータ場所に基づいて前記第１のデータの組及び前記第２のデータの組それぞれに対する前記第１のキャッシュ・メモリ装置及び前記第２のキャッシュ・メモリ装置の割り当てを行う工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項５】
前記命令にマッピングされたデータの組を識別する工程と、
前記第１のキャッシュ・メモリ装置でなく前記第２のキャッシュ・メモリ装置に前記データの組が現在記憶されていることを判定して、それにより、前記第１のＰＵから前記第２のＰＵに前記コールを転送することを決定する工程と、
を更に含む請求項４記載の処理リソース割り当て方法。
【請求項６】
前記第１のＰＵ及び前記第２のＰＵそれぞれに関連付けられた第１のキャッシュ・メモリ装置及び第２のキャッシュ・メモリ装置を識別する工程と、
前記第１のＰＵにより、前記コールにアクセスする工程であって、前記コールは、前記予め選択されたデータ場所に前記命令がマッピングされている旨を示す引数を含む、工程と、
前記第１のＰＵによって前記引数を解析する工程であって、前記予め選択されたデータ場所が前記第１のキャッシュ・メモリ装置内に配置されていない旨の判定を行う、工程と、
前記判定に基づいて潜在的なリダイレクト・コールとして前記コールを識別する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項７】
前記予め選択されたデータ場所が前記第２のキャッシュ・メモリ装置に配置されていない旨を判定する工程であって、それにより、前記第１のＰＵにより、前記潜在的なリダイレクト・コールに関連付けられたターゲット・コードを実行することの決定を行う、工程と、
前記決定に基づいて前記第１のＰＵにより、前記ターゲット・コードを実行する工程と、
を更に含む請求項６記載の処理リソース割り当て方法。
【請求項８】
前記予め選択されたデータ場所が前記第２のキャッシュ・メモリ装置内に配置されていることを判定する工程であって、それにより、前記潜在的なリダイレクト・コールを実際のリダイレクト・コールとして識別する、工程と、
前記第１のＰＵから前記第２のＰＵに前記実際のリダイレクト・コールを転送する工程と、
を更に含む請求項６記載の処理リソース割り当て方法。
【請求項９】
前記命令に関連付けられたコード又はデータ・メモリ場所を識別する工程と、
前記第２のＰＵに関連付けられた前記コード又はデータ・メモリ場所に基づいて前記第１のＰＵから前記第２のＰＵに前記コールを転送する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１０】
前記コード又はデータ・メモリ場所が前記第２のＰＵ及び複数の他のＰＵに関連付けられていることを判定する工程と、
前記第２のＰＵに対応する現在利用可能な処理機能を反映する数値測定を定義する工程と、
複数の他の現在利用可能な処理機能それぞれを反映する複数の他の数値測定を定義する工程であって、前記複数の他の現在利用可能な処理機能は前記複数の他のＰＵそれぞれに対応する、工程と、
前記数値測定が前記他の数値測定それぞれよりも大きいことに基づいて前記第１のＰＵから前記第２のＰＵに前記コールを転送する工程と、
を更に含む請求項９記載の処理リソース割り当て方法。
【請求項１１】
特定のリソースを選択する工程と、
前記第２のＰＵに割り当てられている前記特定のリソースの制御の度合いに基づき、前記特定のリソースへのアクセスを前記第１のＰＵが欠いていることに基づき、かつ、前記特定のリソースへのアクセスを１つ又は複数の他のＰＵが欠いていることに基づいて前記第１のＰＵから前記第２のＰＵに前記コールを転送する工程と、
を更に含む請求項９記載の処理リソース割り当て方法。
【請求項１２】
前記命令を記憶させた共有ランダム・アクセス・メモリ（ＲＡＭ）装置を選択する工程と、
前記共有ＲＡＭ装置のセクタをリダイレクト・セクタとして識別する工程と、
前記命令が前記リダイレクト・セクタに記憶されているか否かを判定する工程であって、それにより、前記第１のＰＵから前記第２のＰＵに前記コールを転送するか否かを判定する、工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１３】
共有ＲＡＭ装置を選択する工程と、
前記共有ＲＡＭ装置の１つ又は複数のセクタを１つ又は複数のリダイレクト・セクタそれぞれとして識別する工程と、
前記命令を含むプログラムを識別する工程と、
前記プログラムに対応するスタティック・コードにアクセスする工程と、
前記スタティック・コードのサイズに基づいて前記１つ又は複数のリダイレクト・セクタの全体としてのサイズを定義することにより、前記共有ＲＡＭ装置をパーティショニングする工程と、
前記パーティショニング及びＰＵ仕様に基づいて前記１つ又は複数のリダイレクト・セクタのうちの１つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの量をロードする工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１４】
前記共有ＲＡＭ装置の１つ又は複数の別々のセクタを１つ又は複数の非リダイレクト・セクタそれぞれとして識別する工程と、
前記プログラムに対応する少なくとも１つの共有ライブラリの１つ又は複数の部分にアクセスする工程と、
前記少なくとも１つの共有ライブラリの１つ又は複数の部分及び前記スタティック・コードの全体としてのサイズに基づいて前記１つ又は複数のリダイレクト・セクタの前記全体としてのサイズを定義することにより、前記共有ＲＡＭ装置をプロポーショニングする工程と、
前記プロポーショニング及び前記ＰＵ仕様に基づいて前記１つ又は複数の非リダイレクト・セクタのうちの１つ又は複数の選択された非リダイレクト・セクタに、又は前記１つ又は複数のリダイレクト・セクタのうちの１つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの１つ又は複数の部分をロードする工程、及び／又は、
前記プロポーショニング及び前記ＰＵ仕様に基づいて前記１つ又は複数の非リダイレクト・セクタのうちの１つ又は複数の選択された非リダイレクト・セクタに、又は１つ又は複数のリダイレクト・セクタのうちの１つ又は複数の選択されたリダイレクト・セクタに前記少なくとも１つの共有ライブラリの前記１つ又は複数の部分をロードする工程と、
を更に含む請求項１３記載の処理リソース割り当て方法。
【請求項１５】
前記第１のＰＵに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令に関連付けられたコード又はデータを前記キャッシュ・メモリ装置にフェッチする工程と、
前記第１のＰＵに関連付けられたＰＵデータ・パスを識別する工程と、
前記ＰＵデータ・パス内のシャドー・レジスタ値を、前記コード又はデータに関連付けられた少なくとも１つのＰＵを示すＰＵ識別子を前記シャドー・レジスタ値が反映するように規定する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１６】
前記命令に関連付けられたコードを識別する工程と、
少なくとも１つの共有メモリ・コヒーレンス・マシン命令を含む実行可能なルーチンを識別する工程と、
前記実行可能なルーチンが前記第２のＰＵに関連付けられていることに基づき、かつ、前記コードが、前記少なくとも１つの共有メモリ・コヒーレンス・マシン命令にマッピングされていることに基づき、前記第１のＰＵから前記第２のＰＵに前記コールを転送する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１７】
前記命令に関連付けられた大域メモリ場所を識別する工程と、
第３のＰＵが前記大域メモリ場所へのアクセスを欠いていること、及び前記第１のＰＵが前記大域メモリ場所へのアクセスを有していることの結果として、前記第３のＰＵから前記第１のＰＵへ前記コールを自動的に転送する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１８】
特定のＰＵに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記予め選択されたデータ場所が前記キャッシュ・メモリ装置内に配置されていることに基づいて前記データに関連付けられた特定のデータ・タイプに対する前記キャッシュ・メモリ装置の割り当てを行う工程と、
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程と、
前記プログラミング言語に対応するライブラリにアクセスする工程であって、前記ライブラリは、メモリ割り当てコールを含むコンストラクタを規定し、前記メモリ割り当てコールは前記特定のデータ・タイプを有する情報にマッピングされる、工程と、
前記割り当てに基づいて、前記メモリ割り当てコールに対する修正を実現する工程であって、それにより、前記プログラムの修正バージョン及び修正メモリ割り当てコールを作成する、工程と、
前記修正の結果として前記情報が前記キャッシュ・メモリ装置にロードされるように、前記修正されたメモリ割り当てコールを行う工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項１９】
前記コールを行う工程であって、それにより、前記割り当ての結果として前記特定のＰＵにより、前記プログラムの前記修正バージョンを実行する、工程と、
を更に含む請求項１８記載の処理リソース割り当て方法。
【請求項２０】
１つ又は複数のコード・ライブラリを識別する工程と、
前記１つ又は複数のコード・ライブラリに関連付けられた参照渡しソース・コードにアクセスする工程と、
前記参照渡しソース・コードを値渡しサポート・コードに変換する工程であって、それにより、転送ライブラリを生成する、工程と、
前記転送ライブラリを利用して、前記データの参照渡しでなく、値渡しを行う工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項２１】
前記コール内の１つ又は複数のポインタを識別する工程と、
前記１つ又は複数のポインタを変換する工程であって、それにより、前記データの参照渡しでなく値渡しを行うよう前記コールを構成する、工程と、
前記第１のＰＵから前記第２のＰＵへの前記コールの転送を実行する工程と、
前記転送中に前記データの値渡しを行う工程であって、それにより、前記データの局所の複製を第１のキャッシュ・メモリ装置に記憶し、前記第２のＰＵが前記第１のキャッシュ・メモリ装置を含む、工程と、
前記１つ又は複数のポインタを前記局所の複製にリマッピングする工程であって、それにより、第２のキャッシュ・メモリ装置にアクセスすることなく、前記コールを実行することを可能にし、前記第１のＰＵが、前記第２のキャッシュ・メモリ装置を含む、工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項２２】
遠隔プロシージャ・コール（ＲＰＣ）を起動させる工程であって、それにより、前記第１のＰＵから前記第２のＰＵに前記コールを転送する、工程、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項２３】
前記第１のＰＵ及び前記第２のＰＵそれぞれに関連付けられた第１の局所メモリ・マップ及び第２の局所メモリ・マップを識別する工程と、
前記第１の局所メモリ・マップと前記第２の局所メモリ・マップとの間の区別を識別する工程と、
前記区別に基づいてメモリ・アドレス変換を生成する工程と、
前記メモリ・アドレス変換を利用して前記ＲＰＣを構成する工程と、
を更に含む請求項２２記載の処理リソース割り当て方法。
【請求項２４】
前記第１のＰＵ及び前記第２のＰＵそれぞれに関連付けられた第１のキャッシュ・メモリ装置及び第２のキャッシュ・メモリ装置を識別する工程と、
前記第１のキャッシュ・メモリ装置に記憶され、前記命令に関連付けられたデータ値を識別する工程と、
前記ＲＰＣの結果として前記第２のキャッシュ・メモリ装置に前記データ値を記憶する工程と、
を更に含む請求項２２記載の処理リソース割り当て方法。
【請求項２５】
前記第２のキャッシュ・メモリに前記データ値が記憶されるまで前記第２のＰＵによる前記コールの実行を遅延させる工程と、
を更に含む請求項２４記載の処理リソース割り当て方法。
【請求項２６】
制御の第１のスレッドに関連付けられた実行可能なルーチン及び前記命令を含むプログラムにアクセスする工程と、
前記コール内の１つ又は複数のポインタを識別する工程と、
前記１つ又は複数のポインタを変換する工程であって、前記データの参照渡しでなく値渡しを行うよう前記コールを構成して、それにより、制御の第２のスレッドを作成する、工程と、
前記第２のＰＵに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記ＲＰＣの結果として前記データの値渡しを行う工程であって、それにより、前記データの局所の複製を前記キャッシュ・メモリ装置に記憶し、前記第２のＰＵに前記制御の第２のスレッドを供給する、工程と、
前記制御の第１のスレッドが前記制御の第２のスレッドと無関係であることの結果として、前記第２のＰＵが前記命令の実行を前記制御の第２のスレッドに基づいて行う一方で、前記制御の第１のスレッドに基づいて前記第１のＰＵにより、前記実行可能なルーチンを行う工程であって、前記実行可能なルーチンが、前記実行中に生成されたデータ値に対するリターン要求を欠いている、工程と、
を更に含む請求項２２記載の処理リソース割り当て方法。
【請求項２７】
前記データにマッピングされた第１の実行可能なルーチンを行う第１のプロセッシング・コアを識別する工程であって、前記第１の実行可能なルーチンは共有メモリ・コヒーレンス・マシン命令を含む、工程と、
第２のプロセッシング・コアにおいて第２の実行可能なルーチンにアクセスする工程と、
プロシージャ・コールを起動する工程であって、それにより、前記第２の実行可能なルーチンが前記データにマッピングされていることに基づき、かつ、前記共有メモリ・コヒーレンス・マシン命令を含む前記第２の実行可能なルーチンに基づき、前記第２のプロセッシング・コアから前記第１のプロセッシング・コアに前記第２の実行可能なルーチンを転送する、工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項２８】
別々のＰＵは、前記第１のプロセッシング・コア及び前記第２のプロセッシング・コアそれぞれを含み、前記プロシージャ・コールがＲＰＣである、
請求項２７記載の処理リソース割り当て方法。
【請求項２９】
単一のＰＵは、前記第１のプロセッシング・コア及び前記第２のプロセッシング・コアを何れも含み、前記プロシージャ・コールがＲＰＣである、
請求項２７記載の処理リソース割り当て方法。
【請求項３０】
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、１つ又は複数の仮想関数を有するクラスに属するデータ項目が、仮想関数テーブル（ＶＦＴ）にマッピングされた１つ又は複数のＶＦＴポインタを含むように前記ＶＦＴを実現するよう前記プログラミング言語が構成される、工程と、
前記プログラミング言語に関連付けられたコンストラクタを識別する工程であって、前記コンストラクタは前記１つ又は複数のＶＦＴポインタを規定するよう構成される、工程と、
前記プログラムのロード中に前記コンストラクタ周りにラッパ・コールをインジェクトする工程であって、それにより、前記１つ又は複数の仮想関数に対する１つ又は複数のＲＰＣ決定ラッパを含む、ＶＦＴへのポインタで、前記１つ又は複数のＶＦＴポインタを置き換える、工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３１】
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、１つ又は複数の仮想関数を有するクラスに属するデータ項目が、ＶＦＴにマッピングされた１つ又は複数のＶＦＴポインタを含むように前記ＶＦＴを実現するよう前記プログラミング言語が構成される、工程と、
ＲＰＣ決定コードがコールされることなく、前記１つ又は複数の仮想関数が１つ又は複数のＲＰＣそれぞれに自動的に誘導されるように複数のＲＰＣの実現の結果として前記ＶＦＴを修正する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３２】
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、１つ又は複数の仮想関数を有するクラスに属するデータ項目が、ＶＦＴにマッピングされた１つ又は複数のＶＦＴポインタを含むように前記ＶＦＴを実現するよう前記プログラミング言語が構成される、工程と、
ＲＰＣ決定コードがコールされることなく、前記１つ又は複数の仮想関数が前記プログラムに関連付けられた局所コードに自動的に誘導されるように１つ又は複数のＲＰＣの実現がないことの結果として前記ＶＦＴを修正する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３３】
複数の条件分岐にマッピングされたコードを含む前記命令の予め定義されたバージョンにアクセスする工程と、
前記命令の複数の修正バージョンを生成する工程であって、前記修正バージョンはそれぞれ、前記複数の条件分岐のうちの別の条件分岐をたどるよう修正されたコードを含む工程と、
前記複数の修正バージョンそれぞれに関連付けられた複数の挙動を予測する工程と、
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
前記実行可能なルーチンに関連付けられたランタイム挙動を識別する工程と、
前記ランタイム挙動に対応する前記修正バージョンの予測された挙動に基づいて前記実行可能なルーチンの動作中の実行のために前記複数の修正バージョンのうちの修正バージョンを選択する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３４】
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第１の実現形態及び第２の実現形態を識別する工程であって、前記仮想関数は前記第１の実現形態を指し示すＶＦＴエントリを含み、前記仮想関数は更に、複数のＶＦＴのうちの第１のＶＦＴにマッピングされたＶＦＴポインタを含む、工程と、
前記第１の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第１の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動の動作解析を行う工程であって、それにより、前記第２の実現形態が前記分岐挙動に対応する度合いが、前記第１の実現形態が前記分岐挙動に対応する度合いよりも大きいことを判定する、工程と、
前記動作解析に基づいて前記複数のＶＦＴのうちの第２のＶＦＴに前記ＶＦＴポインタをリマッピングする工程であって、前記第２のＶＦＴが、前記第２の実現形態にマッピングされたポインタを含む、工程、又は、
前記動作解析に基づいて前記第２の実現形態を指し示すよう前記ＶＦＴエントリを更新する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３５】
前記命令に関連付けられたプログラムにアクセスする工程であって、前記プログラムは、予め定義されたコール・サイトにマッピングされた予め定義された関数を含む、工程と、
前記予め定義されたコール・サイトにより、前記予め定義された関数のコールを行う工程と、
前記コールの結果として、前記予め定義された関数によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて、前記予め定義されたコール・サイトを修正する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３６】
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第１の実現形態及び第２の実現形態を識別する工程であって、前記仮想関数は前記第１の実現形態を指し示すＶＦＴエントリを含み、前記仮想関数は更に、複数のＶＦＴのうちの第１のＶＦＴにマッピングされたＶＦＴポインタを更に含む、工程と、
前記第１の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第１の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて前記仮想関数の考えられる将来の挙動を予測する工程と、
前記考えられる将来の挙動の動作解析を行う工程であって、それにより、前記第２の実現形態が前記考えられる将来の挙動に対応する度合いが、前記第１の実現形態が前記考えられる将来の挙動に対応する度合いよりも大きいことを判定する、工程と、
前記動作解析に基づいて前記複数のＶＦＴのうちの第２のＶＦＴに前記ＶＦＴポインタをリマッピングする工程であって、前記第２のＶＦＴが、前記第２の実現形態にマッピングされたポインタを含む、工程、又は、
前記動作解析に基づいて前記第２の実現形態を指し示すよう前記ＶＦＴエントリを更新する工程と、
を更に含む請求項１記載の処理リソース割り当て方法。
【請求項３７】
コンピュータ・システムに、請求項１乃至３６のいずれか一項に記載の方法を実行させるコンピュータ・プログラム。
【請求項３８】
請求項３７に記載のコンピュータ・プログラムを記録したコンピュータ可読記憶媒体。