(57)【要約】【課題】生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいてＧＣスレッドの数を制御するための方法を提供する。【解決手段】方法は、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定することを含む。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。方法は、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の１つからコピー作業のために戻ってくるＧＣスレッドの数を決定することをさらに含む。【選択図】図３
2020077416.tif 000002
【特許請求の範囲】
【請求項１】
生きているオブジェクト（live object）をコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいてＧＣスレッドの数を制御するための、コンピュータによって実施される方法であって、
プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて前記状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの前記数を決定するステップであって、オブジェクト参照の前記予測数はオブジェクト参照の過去の平均数を使用して計算される、前記決定するステップと、
前記プロセッサ・デバイスによって、現在盗むことができるタスクの前記数が前記しきい値以上であることに応答し、現在盗むことができるタスクの前記数に基づいて前記状態のうちの前記所与の１つからコピー作業のために戻ってくるＧＣスレッドの前記数を決定するステップと、を含む、コンピュータによって実施される方法。
【請求項２】
オブジェクト参照の前記過去の平均数は、過去に作成された子タスクの数を示す、請求項１に記載のコンピュータによって実施される方法。
【請求項３】
オブジェクト参照の前記過去の平均数は、作成する子タスクの現在の数を決定するために使用される、請求項２に記載のコンピュータによって実施される方法。
【請求項４】
前記状態のうちの前記所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドについて前記決定された数を使用して前記コピーＧＣのプロセスを実行することをさらに含む、請求項１に記載のコンピュータによって実施される方法。
【請求項５】
複数の前記決定するステップは、前記状態のうちの１つから前記所与の状態への状態移行に応答して実行される、請求項１に記載のコンピュータによって実施される方法。
【請求項６】
前記スピン状態は、スピン・ループを実行することおよびタスクを盗もうとすることを含む、請求項１に記載のコンピュータによって実施される方法。
【請求項７】
前記イールド状態は、前記ＧＣスレッドのうちの別の１つにイールドすることおよびタスクを盗もうとすることを含む、請求項１に記載のコンピュータによって実施される方法。
【請求項８】
前記スリープ状態は、ある期間スリープすることおよびタスクを盗もうとすることを含む、請求項１に記載のコンピュータによって実施される方法。
【請求項９】
生きているオブジェクト（live object）をコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスにおいてＧＣスレッドの数を制御するためのコンピュータ処理システムであって、
プログラム・コードを記憶するためのメモリと、
現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の過去の平均数を使用して計算される、オブジェクト参照の予測数に基づいて前記状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの前記数を決定するため、
および、
現在盗むことができるタスクの前記数が前記しきい値以上であることに応答し、現在盗むことができるタスクの前記数に基づいて前記状態のうちの前記所与の１つからコピー作業のために戻ってくるＧＣスレッドの前記数を決定するための、
前記プログラム・コードを実行するためのプロセッサ・デバイスと、を含む、コンピュータ処理システム。
【請求項１０】
前記コピーＧＣのプロセスの一部分を実施するためのデックのセットをさらに含む、請求項９に記載のコンピュータ処理システム。
【請求項１１】
オブジェクト参照の前記過去の平均数は、過去に作成された子タスクの数を示す、請求項９に記載のコンピュータ処理システム。
【請求項１２】
オブジェクト参照の前記過去の平均数は、作成する子タスクの現在の数を決定するために使用される、請求項１１に記載のコンピュータ処理システム。
【請求項１３】
コンピュータ・プログラムであって、請求項１ないし８のいずれか１項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【請求項１４】
請求項１３に記載のコンピュータ・プログラムを記録した、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、データ処理に関し、より詳細には平均オブジェクト参照に基づいた、コピー・ガベージ・コレクションのためのワーク・スティーリング（work-stealing）におけるスピン・カウントの削減に関する。
【背景技術】
【０００２】
Ｏｐｅｎ  Ｊａｖａ（Ｒ）  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ  （ＯｐｅｎＪＤＫ）におけるコピー・ガベージ・コレクション（ＧＣ）（copying Garbage Collection）の際、負荷分散のためにワーク・スティーリングが使用される。ここで、ワーク・スティーリングにおけるタスクはオブジェクトである。
【０００３】
所有者スレッド（owner thread）はデック（両端キュー）にあるすべてのタスクを終えると、他のスレッドのデックから他のタスクを盗もうとし始める。
【０００４】
ＧＣスレッドは、複数回連続してタスクを盗むことに失敗すると、別のモードに移行する。他のモードは、盗みをもう１度試行する次のステップ：（１）スピン・ループ（spin loop）して次にタスクを盗もうとする、（２）イールド（yield）して次にタスクを盗もうとする、（３）スリープして次にタスクを盗もうとする、を繰り返すものである。すべてのＧＣスレッドのデックが空になったとき、ＧＣが終わる。
【０００５】
盗むことができるタスクがほとんどないとき、盗みが成功する見込みは小さくなる。オブジェクトが平均して参照をほとんど持たない場合、より少数のタスクしか持たないという状況が生じ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、スピン・ループはＣＰＵのリソースを消費する。したがって、コピー・ガベージ・コレクションのためのワーク・スティーリングにおいて、スピン・カウントを削減する必要がある。
【課題を解決するための手段】
【０００７】
本発明の態様によれば、生きているオブジェクト（live object）をコピーし、スピン状態（spin state）、イールド状態（yield state）およびスリープ状態（sleep state）を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいてＧＣスレッドの数を制御するための、コンピュータによって実施される方法が提供される。方法は、プロセッサ・デバイスによって、現在盗むことができる（stealable）タスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定することを含む。オブジェクト参照の予測数はオブジェクト参照の過去の平均数を使用して計算される。方法は、プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の１つからコピー作業のために戻ってくるＧＣスレッドの数を決定することをさらに含む。
【０００８】
本発明の別の態様によると、コンピュータ・プログラム製品は、生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいて、ＧＣスレッドの数を制御するために提供される。コンピュータ・プログラム製品は、プログラム命令が組み込まれた非一過性コンピュータ可読記憶媒体を含む。プログラム命令は、コンピュータに方法を実行させるためにコンピュータによって実行可能である。方法は、コンピュータのプロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定することを含む。オブジェクト参照の予測数はオブジェクト参照の過去の平均数を使用して計算される。方法は、プロセッサ・デバイスによって、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の１つからコピー作業のために戻ってくるＧＣスレッドの数を決定することをさらに含む。
【０００９】
本発明のさらに別の態様によると、コンピュータ処理システムは、生きているオブジェクトをコピーし、スピン状態、イールド状態およびスリープ状態を含む状態を伴うコピー・ガベージ・コレクション（ＧＣ）のプロセスにおいて、ＧＣスレッドの数を制御するために提供される。コンピュータ処理システムは、プログラム・コードを記憶するためのメモリを含む。コンピュータ処理システムは、現在盗むことができるタスクの数がしきい値より小さいことに応答し、オブジェクト参照の予測数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定するためのプログラム・コードを実行するためのプロセッサ・デバイスをさらに含む。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。プロセッサは、現在盗むことができるタスクの数がしきい値以上であることに応答し、現在盗むことができるタスクの数に基づいて状態のうちの所与の１つからコピー作業のために戻ってくるＧＣスレッドの数を決定するプログラム・コードをさらに実行する。
【００１０】
これらおよび他の特徴と利点とは、添付の図面と関連づけて読まれるべき次の例示的実施形態の詳細な説明から明らかとなろう。
【００１１】
次の説明では、次の図を参照して好ましい実施形態の詳細が提供される。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態による、本発明が適用され得る例示的処理システムを示すブロック図である。
【図２】本発明の一実施形態による、本発明が適用され得る例示的シナリオ／プロセスを示すハイレベル・ブロック図である。
【図３】本発明の一実施形態による、生きているオブジェクトをコピーするコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいて、コピー作業を処理するＧＣスレッドの数を制御するための例示的方法を示すフロー図である。
【発明を実施するための形態】
【００１３】
本発明は、パラレル・コピー・ガベージ・コレクション（ＧＣ）（parallel copying garbage collection）に関するスピン数の少ない（spin-less）ワーク・スティーリングを対象とする。
【００１４】
一実施形態において、本発明は、通常、かなりの量のコンピュータのリソースがスピン・ループの実行に従事していると、可能な際にはスピン・ループの実行を回避するよう構成されている。このようにして、より効率的なコピー・ガベージ・コレクションを実行することができる。
【００１５】
ブロック（Ａ）およびブロック（Ｂ）を含み、ブロック（Ａ）がワーク・スティーリングでコピーすることを含み、ブロック（Ｂ）がスピン、イールド、スリープを伴って終了することを含む一実施形態において、本発明は、多くの不必要な移行を回避することによって、ブロック（Ｂ）からブロック（Ａ）への移行からのＧＣスレッドの数を制御する。一実施形態において、いくつのＧＣスレッドがブロック（Ｂ）からブロック（Ａ）へ移行すべきかを案出する１つの評価基準として平均オブジェクト参照を使用することによって、制御が達成される。このようにして、いくつのＧＣスレッドが（Ｂ）から（Ａ）へ移行すべきかを推定するという非常に困難なタスクが回避される。さらに、本発明は、十分なＧＣスレッドがブロック（Ａ）へとすでに移行したという保証によってブロック（Ｂ）におけるスピン・カウントを有利に削減し、残りのブロック（Ｂ）のＧＣスレッドはタスクの存在を頻繁にチェックする必要がない。
【００１６】
図１は、本発明の一実施形態による、本発明が適用され得る例示的処理システム１００を示すブロック図である。処理システム１００は、システム・バス１０２を介して他の構成品と動作可能に結合された少なくとも１つのプロセッサ（ＣＰＵ）１０４を含む。キャッシュ１０６、読み出し専用メモリ（ＲＯＭ）１０８、ランダム・アクセス・メモリ（ＲＡＭ）１１０、入出力（Ｉ／Ｏ）アダプタ１２０、サウンド・アダプタ１３０、ネットワーク・アダプタ１４０、ユーザ・インターフェース・アダプタ１５０およびディスプレイ・アダプタ１６０は、システム・バス１０２に動作可能に結合されている。少なくとも１つのグラフィックス処理ユニット（ＧＰＵ）１９４は、システム・バス１０２を介して少なくともＣＰＵ１０４に結合されている。ＣＰＵ１０４またはＧＰＵ１９４あるいはその両方は、１つまたは複数のコアを含んでよい。一実施形態において、少なくとも１つのＣＰＵ１０４またはＧＰＵ１９４あるいはその両方は、マルチスレッド処理を実行するよう構成されている。一実施形態において、ＲＡＭ１１０の一部分は、デックのセット１１０Ａを実施するために使用される。一実施形態において、デックのセット１１０Ａは、ヒープを実施するために使用され得る。例えば、一実施形態において、デックのセット１１０Ａは、各デックがヒープの半分に相当する２つのデックを含み得る。もちろん、本明細書に提供される本発明の教示があれば、本発明の思想を維持しつつ、他のデック数および他の構成が使用され得る。
【００１７】
第１の記憶デバイス１２２および第２の記憶デバイス１２４は、Ｉ／Ｏアダプタ１２０によってシステム・バス１０２と動作可能に結合されている。記憶デバイス１２２および記憶デバイス１２４は、ディスク記憶デバイス（例えば、磁気ディスク記憶デバイスまたは光学ディスク記憶デバイス）、ソリッド・ステート磁気デバイスなどのいずれであってもよい。記憶デバイス１２２および記憶デバイス１２４は、同じ型の記憶デバイスでもよく、異なる型の記憶デバイスであってもよい。
【００１８】
スピーカ１３２は、サウンド・アダプタ１３０によってシステム・バス１０２に動作可能に結合されている。トランシーバ１４２は、ネットワーク・アダプタ１４０によってシステム・バス１０２に動作可能に結合されている。ディスプレイ・デバイス１６２は、ディスプレイ・アダプタ１６０によってシステム・バス１０２に動作可能に結合されている。
【００１９】
第１のユーザ入力デバイス１５２、第２のユーザ入力デバイス１５４および第３のユーザ入力デバイス１５６は、ユーザ・インターフェース・アダプタ１５０によってシステム・バス１０２に動作可能に結合されている。ユーザ・インターフェース１５２、１５４および１５６は、キーボード、マウス、キーパッド、画像取込デバイス、モーション・センシング・デバイス、マイク、少なくとも２つの前述のデバイスの機能性を組み込んだデバイスなどのいずれであってよい。もちろん、本発明の思想を維持しつつ、他の型の入力デバイスを使用することもできる。ユーザ入力デバイス１５２、１５４および１５６は、同じ型のユーザ入力デバイスでもよく、異なる型のユーザ入力デバイスでもよい。ユーザ入力デバイス１５２、１５４、および１５６は、情報のシステム１００への入力およびシステム１００からの出力に使用される。
【００２０】
もちろん、当業者であれば容易に企図されるように、処理システム１００は他の要素（図示せず）を含んでもよく、同様に一定の要素を省いてもよい。例えば、当業者であれば容易に理解されるように、様々な他の入力デバイスまたは出力デバイスあるいはその両方が、それらの特定の実施内容によって、処理システム１００に含まれてよい。例えば、様々な型のワイヤレスまたは有線あるいはその両方の、入力デバイスまたは出力デバイスあるいはその両方が使用され得る。そのうえ、当業者であれば容易に理解されるように、追加のプロセッサ、コントローラ、メモリなどが、様々な構成において利用されてもよい。処理システム１００のこれらおよび他の変形形態は、本明細書に提供される本発明の教示があれば、当業者であれば容易に企図される。
【００２１】
さらに、処理システム１００は、本明細書で説明される方法の少なくとも一部、例えば、図２の方法２００の少なくとも一部を実行し得ることが理解される。
【００２２】
図２〜図３は、本発明の様々な実施形態による、様々な例示的方法を示す図である。方法は、コピー・ガベージ・コレクション（ＧＣ）の様々な態様を対象とする。一実施形態において、コピーＧＣは、デック（両端キュー）のセット、もしくは「ソース（source）」または「ｆｒｏｍ」領域および「行先（destination）」または「ｔｏ」領域が実施され得る、他のタイプのメモリ構造の使用を含んでよい。ソース領域は、現在の作業領域であり、行先領域は、ガベージ・コレクション専用の領域に相当し得る。コピーＧＣの一実施形態において、オブジェクトは、ソース空間（例えば、ソースのデック用空間（source deque space））から行先空間（例えば、行先のデック用空間（destination deque space））へコピーされる。ガベージ・コレクションの際に、ガベージ・コレクタは、メモリに（ソース領域と同じ大きさの）空の行先領域を作成し、（ポインタが必ず行先領域を参照するようにして）生きているオブジェクトをソース領域から行先領域へコピーし、ソース領域を処分して、最後に行先領域を新しいソース領域として使用する。一実施形態において、デックのセットまたは他の構造は、ヒープを実施するために使用され得る。
【００２３】
これらの方法の説明において、用語「元のオブジェクト」は、コピーＧＣの際に行先場所へとコピーされる、ソース空間のオブジェクトを意味する。さらに、通常「元のオブジェクトが」に続く、用語「コピーされたもの」は、ソース場所からそこにすでにコピーされた、行先場所に存在するオブジェクトを意味する。
【００２４】
図２は、本発明の実施例による、本発明が適用され得る例示的シナリオ／プロセス２００を示すハイレベル・ブロック図である。
【００２５】
シナリオ／プロセス２００は、ワーク・スティーリングでコピーＧＣする際の状態移行を含む。
【００２６】
次のタスク、
（ブロックＡ−２０１）ワーク・スティーリングでコピーする、および、
（ブロックＢ−２０２）スピン、イールドまたはスリープを伴って終了する、
が実行される。
【００２７】
前述のタスクに関して、Ｎ回連続して盗むことに失敗する２２１、および、少なくとも１つのタスクが存在する２２２。
【００２８】
すべてのスレッドが終了する２２３に応答して、ＧＣが終了する２０３。
【００２９】
一実施形態において、本発明は、ブロックＢ（すなわち、「スピン、イールドまたはスリープを伴って終了する」）におけるスピン・カウントを減らすために使用され得る。
【００３０】
図３は、本発明の一実施例による、生きているオブジェクトをコピーするコピー・ガベージ・コレクション（ＧＣ）のプロセスを実施するコンピュータ・システムにおいてＧＣスレッドの数を制御するための例示的方法３００を示すフロー図である。方法３００は、スピン状態、イールド状態およびスリープ状態を含む状態を含む。
【００３１】
ブロック３１０では、現在盗むことができるタスクの数が、しきい値より小さいかどうかを決定する。そうであれば、ブロック３２０に進む。そうでなければ、ブロック３３０に進む。
【００３２】
しきい値は、ユーザにより選択可能であり、例えば、非限定的に、ＧＣスレッドの総数に基づいてもよい。
【００３３】
ブロック３２０では、オブジェクト参照の予測数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定する。オブジェクト参照の予測数は、オブジェクト参照の過去の平均数を使用して計算される。オブジェクト参照の過去の平均数は、ワーク・スティーリングのプロセスの間、あるタスクから新しいタスクを作成する際にいくつのオブジェクト参照が解消したのかを記録して計算することによって決定される。
【００３４】
ブロック３３０では、現在盗むことができるタスクの数に基づいて状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドの数を決定する。
【００３５】
ブロック３４０では、状態のうちの所与の１つからワーク・スティーリングでコピーするために戻ってくるＧＣスレッドについて決定された数を使用してコピーＧＣのプロセスを実行する。このようにして、古くなった参照が回収され、相応するメモリが他の用途のために開放される。
【００３６】
本発明は、たとえ現在盗むことができるタスクの数が少なくても、平均オブジェクト参照という評価基準を使用することで、いくつのＧＣスレッドが作業に戻るのかの判断を誤ることはないということが理解される。この評価基準は、子タスクがいくつ作成されたのかについての過去の記録であり、子タスクが次にいくつ作成されるのかを判断するのに使用される。
【００３７】
本発明は、いかなる可能な技術詳細レベルで統合されたシステム、方法またはコンピュータ・プログラム製品あるいはそれらの組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を遂行させるため、コンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでもよい。
【００３８】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスであってよい。コンピュータ可読記憶媒体は、例えば、非限定的に、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたは前述のものの任意の適切な組合せであってよい。より具体的なコンピュータ可読記憶媒体の非網羅的一覧には、次のもの、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）ディスク、パンチ・カードまたは命令が記録された溝中の隆起構造のような機械的に符号化されたデバイスおよび前述のものの任意の適切な組合せが含まれる。本明細書で使用されるコンピュータ可読記憶装置は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体を通じて伝播する電磁波（例えば、光ファイバ・ケーブルを通る光パルス）、またはケーブルを通じて送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【００３９】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれの計算／処理デバイスへと、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含み得る。各計算／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を、それぞれの計算／処理デバイスの中のコンピュータ可読記憶媒体に記憶のために転送する。
【００４０】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ（state-setting data）、またはＳＭＡＬＬＴＡＬＫ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは同様の言語のような、従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンド・アロン型ソフトウェア・パッケージとして、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータ上もしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の型のネットワークを通じてユーザのコンピュータと接続されてよく、あるいは接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータとなされてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して電子回路をカスタマイズし得る。
【００４１】
本発明の態様が、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品についてのフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得るということが理解されよう。
【００４２】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶された命令により、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んだ製品を含むべく、コンピュータ可読媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示するものであってもよい。
【００４３】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータによって実施されるプロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の演算ステップを実行させるものであってもよい。
【００４４】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態による、アーキテクチャ、機能性ならびにシステム、方法およびコンピュータ・プログラム製品の可能的な実施の動作を例示する。この点に関し、フローチャートまたはブロック図の各ブロックは、指定された論理関数を実施するための１つまたは複数の実行可能な命令を含むモジュール、セグメント、または命令の一部分に相当し得る。いくつかの代替的実施では、ブロックに記された機能は、図に記された順とは異なって生じ得る。例えば、連続して示された２つのブロックは、実際、含まれる機能性によって、実質的に同時に実行されてよく、または、ブロックは、ときには逆順で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロックおよびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する、または、専用ハードウェアおよびコンピュータ命令の組合せを遂行する専用ハードウェア・ベースのシステムによって実施され得るということにも注意されたい。
【００４５】
本発明の「一実施形態（one embodiment）」または「実施形態（an embodiment）」、ならびにこれらの他の変形形態に対する本明細書中の参照は、実施形態に関連して説明された特定の特色、構造、特徴などが、本発明の少なくとも１つの実施形態に含まれるということを意味する。したがって、本明細書全体にわたって様々な場所に出現する「一実施形態において（in one embodiment）」または「実施形態において（in an embodiment）」という句、ならびにいかなる他の変形形態の出現は、すべて必ずしも同一の実施形態を示しているとは限らない。
【００４６】
例えば、「Ａ／Ｂ」、「ＡまたはＢあるいはその両方（A and/or B）」および「ＡおよびＢのうちの少なくとも１つ（at least one of A and B）」という場合の、次の「／」、「〜または〜あるいはその両方（and/or）」、および「少なくとも１つの（at least one of）」のいずれの使用も、第１に記載の選択肢（Ａ）のみの選択、または第２に記載の選択肢（Ｂ）のみの選択、または両方の選択肢（ＡおよびＢ）の選択を包含することが意図されているということが理解されるべきである。さらなる例として、「Ａ、ＢまたはＣあるいはその組合せ（A, B, and/or C）」および「Ａ、ＢおよびＣのうちの少なくとも１つ（at least one of A, B, and C）」という場合、このような言い回しには、第１に記載の選択肢（Ａ）のみの選択、または第２に記載の選択肢（Ｂ）のみの選択、または第３に記載の選択肢（Ｃ）のみの選択、または第１および第２に記載の選択肢（ＡおよびＢ）のみの選択、または第１および第３に記載の選択肢（ＡおよびＣ）のみの選択、または第２および第３に記載の選択肢（ＢおよびＣ）のみの選択、または３つすべての選択肢（ＡおよびＢおよびＣ）の選択を包含することが意図されている。これは、記載された項目の数だけ拡張されてよいことが、当業者であれば容易に明白となろう。
【００４７】
システムおよび方法の好ましい実施形態（例示的かつ非限定的であることが意図されている）を説明したが、上記の教示に照らして当業者であれば変更や変形がなされ得るということに注意されたい。したがって、開示された特定の実施形態において、添付の特許請求の範囲によって概説されるように、発明の範囲内である改変がなされてもよいということが理解されよう。こうして、特許法が要求する詳細および細目とともに本発明の態様を説明したが、特許証によって保護される、請求され望まれている内容が、添付の特許請求の範囲で述べられる。
【符号の説明】
【００４８】
１００  処理システム
１０２  システム・バス
１０４  プロセッサ（ＣＰＵ）
１０６  キャッシュ
１０８  読み出し専用メモリ（ＲＯＭ）
１１０  ランダム・アクセス・メモリ（ＲＡＭ）
１１０Ａ  デックのセット
１２０  入出力（Ｉ／Ｏ）アダプタ
１２２  第１の記憶デバイス
１２４  第２の記憶デバイス
１３０  サウンド・アダプタ
１３２  スピーカ
１４０  ネットワーク・アダプタ
１４２  トランシーバ
１５０  ユーザ・インターフェース・アダプタ
１５２  第１のユーザ入力デバイス
１５４  第２のユーザ入力デバイス
１５６  第３のユーザ入力デバイス
１６０  ディスプレイ・アダプタ
１６２  ディスプレイ・デバイス
１９４  グラフィックス処理ユニット（ＧＰＵ）
２００  方法、シナリオ／プロセス
３００  方法
【図１】
2020077416.tif 000003
【図２】
2020077416.tif 000004
【図３】
2020077416.tif 000005