(57)【要約】  一般に、本開示は、デバイス／モジュール間コマンド実行に関するコンピュータ・システムのデバイス／モジュール間の通信を可能にする技術を説明する。本明細書で説明された技術によると、コンピュータ・システムのオペレーティング・デバイスは、クライアントからの、オペレーティング・デバイスにおいて実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信することができる。オペレーティング・デバイスは更に、１つ又は複数のクライアントが実行の完了を待機しているコマンドを示す少なくとも１つのコマンド完了インジケータを受信することができる。オペレーティング・デバイスは、少なくとも１つのコマンド完了インジケータが受信されたコマンドの実行の完了を示すインタラプトを生成することができる。インタラプトは、ジェネリック・インタラプト又はクライアント指定インタラプトであることができる。この方法で、クライアントがオペレーティング・デバイスのコマンド実行をモニタすることによって生じる非効率性が低減されうる。
2013539577.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティング・デバイスによって、１つ又は複数のクライアントからの、前記オペレーティング・デバイスによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信することと、
前記オペレーティング・デバイスによって、前記１つ又は複数のクライアントからの、前記１つ又は複数のクライアントが実行の完了を待機している少なくとも１つのコマンドを示す少なくとも１つのコマンド完了インジケータを受信することと、
前記少なくとも１つのコマンド完了インジケータが受信された前記少なくとも１つのコマンドの実行の完了を示すインタラプトを生成することと
を備える方法。
【請求項２】
前記インタラプトを生成することは、ジェネリック・インタラプトを生成することを含む、請求項１に記載の方法。
【請求項３】
前記オペレーティング・デバイスによって実行される１つ又は複数のコマンドを受信することは、複数のクライアントのうちの少なくとも１つからの１つ又は複数のコマンドを受信することを含み、前記ジェネリック・インタラプトを生成することは、前記少なくとも１つのコマンド完了インジケータが受信された少なくとも１つのコマンドが実行を完了したことを示すインジケーションを前記複数のクライアントの各々へ送信することを含む、請求項１に記載の方法。
【請求項４】
前記インタラプトを生成することは、実行の完了が前記インタラプトの生成の原因となった、少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子を提供することを含む、請求項１に記載の方法。
【請求項５】
前記インタラプトは更に、前記１つ又は複数のクライアントのうちの少なくとも１つによって取得するために、実行の完了がインタラプトの生成の原因となった前記少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子をバッファに格納することを含む、請求項１に記載の方法。
【請求項６】
前記１つ又は複数のクライアントからの前記１つ又は複数のコマンド・インジケーションを受信することは更に、前記１つ又は複数のクライアントが実行の完了を待機している少なくとも１つのコマンドを示す前記少なくとも１つのコマンド完了インジケータを受信することを含む、請求項１に記載の方法。
【請求項７】
前記インタラプトを生成することは、クライアント指定インタラプトを生成することを含む、請求項１に記載の方法。
【請求項８】
前記１つ又は複数のクライアントからの、前記少なくとも１つのコマンド完了インジケータが受信された発信元である、前記１つ又は複数のクライアントのうちの少なくとも１つのクライアントを識別する少なくとも１つのクライアント識別子を受信することを更に備える、請求項１に記載の方法。
【請求項９】
前記インタラプトを生成することは、クライアント指定インタラプトを生成することを含み、前記クライアント指定インタラプトは、前記少なくとも１つのクライアント識別子に少なくとも部分的に基づく、請求項８に記載の方法。
【請求項１０】
前記オペレーティング・デバイスによって実行されるコマンドを示す少なくとも１つのコマンド・インジケーションを受信することは、前記少なくとも１つのコマンド完了インジケータと、受信された前記少なくとも１つのコマンド完了インジケータの発信元である前記１つ又は複数のクライアントのうちの少なくとも１つのクライアントを識別する少なくとも１つのクライアント識別子とを受信することを含み、前記インタラプトを生成することは、前記少なくとも１つのクライアント識別子に少なくとも部分的に基づいてクライアント指定インタラプトを生成することを含む、請求項１に記載の方法。
【請求項１１】
コマンドを実行するように構成されたデバイス実行モジュールと、
１つ又は複数のクライアントからの、前記デバイス実行モジュールによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信するように構成されたコマンド受信モジュールと、
前記１つ又は複数のクライアントからの、前記１つ又は複数のクライアントが実行の完了を待機している少なくとも１つのコマンドを示す少なくとも１つのコマンド完了インジケータを受信するように構成されたインタラプト制御モジュールと
を備えるデバイスであって、
前記インタラプト制御モジュールは、コマンド完了インジケータが受信された前記少なくとも１つのコマンドの実行が完了すると、前記コマンド完了インジケータが受信されたコマンドが実行を完了したことを示すインタラプトを生成するように構成された、デバイス。
【請求項１２】
前記インタラプト制御モジュールは、ジェネリック・インタラプトであるインタラプトを生成するように構成された、請求項１１に記載のデバイス。
【請求項１３】
前記コマンド受信モジュールは、複数のクライアントのうちの少なくとも１つからの、前記コマンドを示す１つ又は複数のコマンド・インジケーションを受信するように構成され、インタラプト制御モジュールは、インタラプトを生成し、前記複数のクライアントの各々へ前記インタラプトを送信するように構成された、請求項１１に記載のデバイス。
【請求項１４】
前記インタラプト制御モジュールは、前記インタラプトを生成するように構成され、前記インタラプトは、その実行の完了が前記インタラプトの生成の原因となった前記少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子を含む、請求項１１に記載のデバイス。
【請求項１５】
前記インタラプト制御モジュールは、前記インタラプトを生成し、前記１つ又は複数のクライアントのうちの少なくとも１つによって取得するために、実行の完了が前記インタラプトの生成の原因となった前記少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子を格納するように構成された、請求項１１に記載のデバイス。
【請求項１６】
前記コマンド受信モジュールは、前記１つ又は複数のクライアントからの、前記少なくとも１つのコマンド完了インジケータを更に含む前記１つ又は複数のコマンド・インジケーションを受信するように構成された、請求項１１に記載のデバイス。
【請求項１７】
前記インタラプト制御モジュールは、クライアント指定インタラプトであるインタラプトを生成するように構成された、請求項１１に記載のデバイス。
【請求項１８】
前記インタラプト制御モジュールは更に、受信された前記少なくとも１つのコマンド完了インジケータの発信元である前記１つ又は複数のクライアントのうちの少なくとも１つのクライアントを識別する少なくとも１つのクライアント識別子を受信するように構成された、請求項１１に記載のデバイス。
【請求項１９】
前記インタラプト制御モジュールは前記インタラプトを生成するように構成され、前記インタラプトはクライアント指定インタラプトであり、前記クライアント指定インタラプトは、前記少なくとも１つのクライアント識別子に少なくとも部分的に基づく、請求項１８に記載のデバイス。
【請求項２０】
前記コマンド受信モジュールは、１つ又は複数のクライアントからの、受信された前記コマンド・インジケーションの発信元であるクライアントのアイデンティティを示す少なくとも１つのクライアント識別子と少なくとも１つのコマンド完了インジケータとを更に含むコマンド・インジケーションを受信するように構成された、請求項１１に記載のデバイス。
【請求項２１】
プログラマブル・プロセッサに、
１つ又は複数のクライアントからの、前記プログラマブル・プロセッサによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信させ、
前記１つ又は複数のクライアントからの、前記１つ又は複数のクライアントのうちの少なくとも１つが実行の完了を待機している少なくとも１つのコマンドを示す少なくとも１つのコマンド完了インジケータを受信させ、
前記少なくとも１つのコマンド完了インジケータが受信された少なくとも１つのコマンドの実行の完了を示すインタラプトを生成させる
ための命令を備えるコンピュータ読取可能記憶媒体。
【請求項２２】
前記インタラプトはジェネリック・インタラプトである、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２３】
前記１つ又は複数のコマンド・インジケーションは複数のクライアントから受信され、前記インタラプトは、前記１つ又は複数のクライアントのうちの少なくとも１つからのコマンド完了インジケータが受信された少なくとも１つのコマンドが実行を完了したことを示し、前記命令は、前記プログラマブル・プロセッサに、前記複数のクライアントの各々へ前記インタラプトを送信させる、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２４】
前記インタラプトは、実行の完了が前記インタラプトの生成の原因となった少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子を含む、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２５】
前記プログラマブル・プロセッサに、前記インタラプトを生成すると、少なくとも１つのコマンドの実行の完了が前記インタラプトの生成の原因となった前記少なくとも１つのコマンドを識別する少なくとも１つのコマンド識別子をバッファに収納させるための命令を更に備える、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２６】
前記１つ又は複数のクライアントから受信された前記１つ又は複数のコマンド・インジケーションは更に、前記少なくとも１つのコマンド完了インジケータを含む、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２７】
前記インタラプトはクライアント指定インタラプトである、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２８】
前記プログラマブル・プロセッサに、
前記１つ又は複数のクライアントからの、受信されたコマンド完了インジケータの発信元であるクライアントを識別する少なくとも１つのクライアント識別子を受信させる
ための命令を更に備える、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項２９】
前記インタラプトはクライアント指定インタラプトであり、前記クライアント指定インタラプトは、前記少なくとも１つのクライアント識別しに少なくとも部分的に基づく、請求項２９に記載のコンピュータ読取可能記憶媒体。
【請求項３０】
前記１つ又は複数のコマンド・インジケーションは更に、前記少なくとも１つのコマンド完了インジケータを含み、前記１つ又は複数のコマンド・インジケーションは更に、受信された前記１つ又は複数のコマンド・インジケーションの発信元であるクライアントを識別する少なくとも１つのクライアント識別子を含み、前記インタラプトは、前記少なくとも１つのクライアント識別子に少なくとも部分的に基づくクライアント指定インタラプトである、請求項２１に記載のコンピュータ読取可能記憶媒体。
【請求項３１】
１つ又は複数のクライアントからの、デバイスによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信するための手段と、
前記１つ又は複数のクライアントからの、前記１つ又は複数のクライアントが実行の完了を待機している前記１つ又は複数のコマンドのうちの少なくとも１つを示す少なくとも１つのコマンド完了インジケータを受信するための手段と、
前記少なくとも１つのコマンド完了インジケータが受信された少なくとも１つのコマンドの実行の完了を示すインタラプトを生成するための手段と
を備えるデバイス。
【請求項３２】
前記生成するための手段は、ジェネリック・インタラプトを生成するための手段を備える、請求項３１に記載のデバイス。
【請求項３３】
前記１つ又は複数のコマンド・インジケーションを受信するための手段は、複数のクライアントからの前記１つ又は複数のコマンド・インジケーションを受信するための手段を備え、前記インタラプトを生成するための手段は、前記複数のクライアントの各々へ前記インタラプトを送信するための手段を備え、前記インタラプトは、コマンド完了インジケータが受信された少なくとも１つのコマンドが実行を完了したことを示す、請求項３１に記載のデバイス。
【請求項３４】
前記インタラプトを生成するための手段は、その実行の完了が前記インタラプトの生成の原因となったコマンドを識別する少なくとも１つのコマンド識別子を含むインタラプトを生成するための手段を備える、請求項３１に記載のデバイス。
【請求項３５】
前記インタラプトを生成するための手段は、前記インタラプトを生成すると、その実行の完了が前記インタラプトの生成の原因となったコマンドを示す少なくとも１つのインジケーションをバッファに収納するための手段を備える、請求項３１に記載のデバイス。
【請求項３６】
前記１つ又は複数のコマンド・インジケーションは、前記少なくとも１つのコマンド完了インジケータを含む、請求項３１に記載のデバイス。
【請求項３７】
前記インタラプトを生成するための手段は、クライアント指定インタラプトを生成するための手段を備える、請求項３１に記載のデバイス。
【請求項３８】
前記１つ又は複数のクライアントからの、少なくとも１つのコマンド完了インジケータが受信されたコマンドを識別する少なくとも１つのクライアント識別子を受信するための手段を更に備える、請求項３１に記載のデバイス。
【請求項３９】
前記インタラプトを生成するための手段は、クライアント指定インタラプトを生成するための手段を備え、前記クライアント指定インタラプトは、前記少なくとも１つのクライアント識別子に少なくとも部分的に基づく、請求項３８に記載のデバイス。
【請求項４０】
前記１つ又は複数のコマンド・インジケーションは更に、前記少なくとも１つのコマンド完了インジケータと、受信された前記１つ又は複数のコマンド・インジケーションの発信元であるクライアントを識別する少なくとも１つのクライアント識別子とを更に含む、請求項３１に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、コンピュータ・システムのデバイス又はモジュール間での改善されたコマンド処理に関する。
【背景技術】
【０００２】
一般的なコンピュータ・システムは、データ処理、メモリ格納、命令処理などに関する指定された機能を実行する、複数の異なるデバイス又はデバイス内のモジュールを用いる。例えばコンピュータ・システムは、プログラム命令を実行し、例えばランダム・アクセス・メモリ（ＲＡＭ）、ハード・ドライブ、又は固体メモリといったシステムの他の構成要素とのインタフェースとなる、中央処理ユニット（ＣＰＵ）を用いることができる。いくつかのコンピュータ・システムは、例えばグラフィック・データ及び／又は命令の処理専用のグラフィック処理ユニット（ＧＰＵ）のような、専用の機能のための複数のプロセッサ構成要素を用いる。他のコンピュータ・システムは、複数の汎用プロセッサ構成要素を用いることができる。
【０００３】
多くの場合、クライアント・デバイスは、オペレーティング・デバイスからの１つ又は複数のコマンドの実行を要求することができる。例えば、ＣＰＵデバイス又はモジュールは、ＧＰＵがグラフィック・コマンドの処理に特に適しているという理由から、ＧＰＵデバイス又はモジュールからの一連のコマンド（プログラム）の実行を要求することができる。別の例において、ＣＰＵは、１つ又は複数のメモリ・デバイス又はモジュールにデータを格納するために実行される一連のコマンドを要求することができる。また別の例において、メモリ・デバイス又はコントローラ・モジュールは、処理の結果生じたデータを格納する前に、ＣＰＵ又はＧＰＵデバイス又はモジュールによるデータの処理を要求することができる。
【発明の概要】
【０００４】
一般に、本開示は、デバイス／モジュール間コマンド実行に関するコンピュータ・システムのデバイス／モジュール間の通信を可能にする技術を説明する。オペレーティング・デバイスは、１つ又は複数のクライアントが実行の完了を待機しているコマンドを示す少なくとも１つのコマンド完了インジケータを受信することができる。オペレーティング・デバイスは、少なくとも１つのコマンド完了インジケータが受信されたコマンドの実行の完了を示すインタラプトを生成することができる。インタラプトはジェネリック・インタラプト又はクライアント指定インタラプトであることができる。この方式で、クライアントがオペレーティング・デバイスのコマンド実行をモニタすることによって生じる非効率性が低減されうる。
【０００５】
一例において、方法は、オペレーティング・デバイスによって、１つ又は複数のクライアントからの、オペレーティング・デバイスによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信することを含む。方法は更に、オペレーティング・デバイスによって、１つ又は複数のクライアントからの、１つ又は複数のクライアントが実行の完了を待機しているコマンドを示す少なくとも１つのコマンド完了インジケータを受信することを含む。方法は更に、少なくとも１つのコマンド完了インジケータが受信された少なくとも１つのコマンドの実行の完了を示すインタラプトを生成することを備える。
【０００６】
別の例において、デバイスは、コマンドを実行するように動作可能なデバイス実行モジュールを含む。デバイスは更に、１つ又は複数のクライアントからの、デバイス実行モジュールによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信するように構成されたコマンド受信モジュールを含む。デバイスは更に、１つ又は複数のクライアントからの、１つ又は複数のクライアントが実行の完了を待機しているコマンドを示す少なくとも１つのコマンド完了インジケータを受信するように構成されたインタラプト制御モジュールを含む。インタラプト制御モジュールは、コマンド完了インジケータが受信されたコマンドの実行が完了すると、コマンド完了インジケータが受信されたコマンドが実行を完了したことを示すインタラプトを生成するように構成される。
【０００７】
別の例において、コンピュータ読取可能記憶媒体は、プログラマブル・プロセッサに、１つ又は複数のクライアントからの、プログラマブル・プロセッサによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信させるための命令を備える。コンピュータ読取可能記憶媒体は更に、プログラマブル・プロセッサに、１つ又は複数のクライアントのからの、１つ又は複数のクライアントのうちの少なくとも１つが実行の完了を待機している少なくとも１つのコマンドを示す少なくとも１つのコマンド完了インジケータを受信させるための命令を備える。コンピュータ読取可能記憶媒体は更に、プログラマブル・プロセッサに、コマンド完了インジケータが受信された少なくとも１つのコマンドの実行の完了を示すインタラプトを生成させるための命令を備える。
【０００８】
別の例において、デバイスは、１つ又は複数のクライアントからの、デバイスによって実行されるコマンドを示す１つ又は複数のコマンド・インジケーションを受信するための手段を含む。デバイスは更に、１つ又は複数のクライアントからの、１つ又は複数のクライアントが実行の完了を待機している１つ又は複数のコマンドのうちの少なくとも１つを示す少なくとも１つのコマンド完了インジケータを受信するための手段を含む。デバイスは更に、少なくとも１つのコマンド完了インジケータが受信された少なくとも１つのコマンドの実行の完了を示すインタラプトを生成するための手段を含む。
【０００９】
１つ又は複数の例の詳細が、添付図面及び以下の説明において記載される。他の特徴、目的、及び利点が、説明及び図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】図１は、本開示と整合が取れたコンピュータ・システム例を示すブロック図である。
【図２】図２は、本開示と整合が取れたコンピュータ・システム例を示すブロック図である。
【図３Ａ】図３Ａは、本開示と整合が取れたオペレーティング・デバイスの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図３Ｂ】図３Ｂは、本開示と整合が取れたクライアントの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図４Ａ】図４Ａは、本開示と整合が取れたオペレーティング・デバイスの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図４Ｂ】図４Ｂは、本開示と整合が取れたクライアントの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図５Ａ】図５Ａは、本開示と整合が取れたオペレーティング・デバイスの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図５Ｂ】図５Ｂは、本開示と整合が取れたクライアントの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図６Ａ】図６Ａは、本開示と整合が取れたオペレーティング・デバイスの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図６Ｂ】図６Ｂは、本開示と整合が取れたクライアントの観点からデバイス／モジュール間コマンド実行に関する通信のための方法の一例を示すフローチャートである。
【図７】図７は、図８乃至１０に関して説明された処理によって用いられたオペレーティング・デバイス２２の構成要素の一例を示すブロック図である。
【図８】図８は、本開示と整合が取れたデバイス／モジュール間コマンド実行に関する通信を容易にするためにクライアント・デバイスにおいて実行するために適用される処理の一例を示すフローチャートである。
【図９】図９は、本開示と整合が取れたデバイス／モジュール間コマンド実行に関する通信を容易にするためにオペレーティング・デバイスにおいて実行するために適用される処理の一例を示すフローチャートである。
【図１０】図１０は、本開示と整合が取れたデバイス／モジュール間コマンド実行に関する通信を容易にするためにオペレーティング・デバイスにおいて実行するために適用されるインタラプト生成処理の一例を示すフローチャートである。
【詳細な説明】
【００１１】
多くのコンピュータ・システム又はデバイスは、コンピュータ・システムの特定の機能を実行する複数の別々の構成要素（例えば、デバイス又はモジュール）に分割される。コンピュータ・システムの様々な構成要素は、単一のハードウェア・デバイスに組み込まれうる、あるいは複数の異なる専用デバイスによって組み込まれうる。例えばコンピュータ・システムの様々な構成要素は、１つ又は複数のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、ディスクリート・ロジック、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせとして実現されうる。
【００１２】
例えばコンピュータ・システムは、１つ又は複数のプロセッサ及び／又は１つ又は複数の記憶（例えば、メモリ）構成要素を用いることができる。コンピュータ・システムは、汎用プロセッサ及び／又はメモリ構成要素（ＣＰＵ、ＲＡＭメモリ、ハードドライブ・メモリ）の両方を用いることができ、更に、例えばグラフィック処理ユニット（ＧＰＵ）又は処理するためのグラフィック・データを格納するためのキャッシュ・メモリのような、特定のタスクに適した構成要素を用いることができる。ＧＰＵは、例えばビデオ及びオーディオの符号化／復号、圧縮、グラフィック・レンダリング、ビデオ及びオーディオ信号処理などのようなメディア関連作業負荷の性能を高める専用プロセッサであることができる。いくつかの例において、ＧＰＵは、無線通信デバイス（例えば、無線モバイル・ハンドセット又はデバイス）、デジタル・カメラ、デジタル・テレビ（ＴＶ）、ビデオ・カメラ、ビデオ電話、デジタル・マルチメディア・プレーヤ、パーソナル・デジタル・アシスタント（ＰＤＡ）、ビデオ・ゲーム・コンソール、パーソナル・コンピュータ又はラップトップ・デバイス、スマートブック／スマートホン、又は他の同様のデバイスに含まれうる。
【００１３】
典型的なコンピュータ・システム環境において、上記の個別の構成要素は、コンピュータ・システムの他の別の構成要素からのタスク又は機能の実行を要求するために適用されうる。例えばＣＰＵのようなクライアント・デバイスは、例えばＧＰＵのようなオペレーティング・デバイスからのグラフィック関連データ又は命令の処理に関するコマンドの実行を要求することができる。別の例において、ＧＰＵ（クライアント）は、ＣＰＵ（オペレーティング・デバイス）からの非グラフィック・データ又は命令の処理を要求することができる。別の例において、ＣＰＵ又はＧＰＵ（クライアント・デバイス）は、例えば実行される命令の場合ＲＡＭメモリ又は格納されるデータの場合ハードドライブ・メモリのようなメモリ（オペレーティング・デバイス）へのデータ又は命令の格納を要求することができる。同様に、メモリ構成要素（クライアント・デバイス）又はコントローラは、メモリ構成要素によってデータをセーブする前に、ＣＰＵ又はＧＰＵ（オペレーティング・デバイス）からの命令の実行を要求することができる。
【００１４】
図１は、典型的なコンピュータ・システム２の構成要素及び例えば本明細書で提供された開示と整合が取れたそのようなコンピュータ・システムのコマンド処理の態様を示すブロック図である。図２に示すように、システム２は、本明細書においてシステム２の構成要素として言及される複数の個別のデバイス又はモジュールを含む。システム２の構成要素は、例えば専用プロセッサ又はメモリ・ハードウェアのような個々の異なるハードウェア構成要素であることができる。その代わりシステム２の複数の構成要素は、例えばＣＰＵ、ＧＰＵ、及び／又はメモリが例えば特定用途向け集積回路（ＡＳＩＣ）又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）のような単一のチップに組み込まれたハードウェア構成要素を共有することができる。
【００１５】
システム２は、複数のクライアント４ａ乃至４ｅ（集合的にクライアント４）及び少なくとも１つのオペレーティング・デバイス２２を含む。複数のクライアント４ａ乃至４ｅは、システム・バス６を介してオペレーティング・デバイス２２に結合されうる。バス６は、例えばオペレーティング・デバイス２２によって実行されるコマンドの、クライアント４ａ乃至４ｅのうちの１つ又は複数による通信といった、構成要素２２と構成要素４のうちのいずれかとの間の通信をイネーブルするように動作可能である。
【００１６】
図１の例に示すように、クライアント４ａ乃至４ｅのうちの１つ又は複数は、オペレーティング・デバイス２２による１つ又は複数のコマンドの実行を要求することができる。いくつかの場合、複数のクライアント４ａ乃至４ｅは、同時又はほぼ同時にオペレーティング・デバイス２２によるコマンド実行を要求することができる。図１のシステム２によると、クライアント４ａ乃至４ｅの各々が、オペレーティング・デバイス２２によるコマンド実行を要求する。図示したように、クライアント４ａはコマンドＡ、Ｂ、及びＣの実行を要求し、クライアント４ｂはコマンドＤの実行を要求し、クライアント４ｃはコマンドＥの実行を要求し、クライアント４ｄはコマンドＦ及びＧの実行を要求し、クライアント４ｅはコマンドＨの実行を要求する。
【００１７】
また図１に示すように、クライアント４ａ乃至４ｅは、（クライアント４ｂ、４ｃ、及び４ｅがコマンドＤ、Ｅ、及びＨをそれぞれ）単一のコマンドの実行を要求することができる、あるいは、（クライアント４ａ及び４ｄが、コマンドＡ乃至Ｃからなる処理１０ａ及びコマンドＦ及びＧからなる処理１０ｂをそれぞれ）例えばプログラム又はコマンド命令の他のセットといった処理の形式で複数のコマンドの実行を要求することができる。図１に示すコマンド及び処理１０ａ乃至ｂの例は、例示目的のために簡略化された。一般的に、クライアントは、オペレーティング・デバイス２２によって実行される何百又は何千のコマンドからなる処理を送信するであろう。クライアントはしばしば、クライアントが他のコマンドを実行する又はシステム２の他の機能を実行する前に、オペレーティング・デバイス２２がコマンド又は処理（例えば、処理の最後のコマンド）の実行を完了することを必要としうる。
【００１８】
システム２は、コマンド・プロセッサ・モジュール１４を含む。コマンド・プロセッサ・モジュール１４は、クライアント４のうちの１つ又は複数から１つ又は複数のオペレーティング・デバイス２２へコマンドを転送するためのファネルとして動作することができる。コマンド・プロセッサ・モジュール１４は、クライアントからの１つ又は複数のコマンドを受信し、コマンドを順序付け、１つ又は複数のオペレーティング・デバイス２２へコマンドを割り当て、コマンドの１つ又は複数のインジケーションをオペレーティング・デバイス２２へ送信するために適用されうる。コマンド・プロセッサ・モジュール１４は、コマンドがいつ受信されたかに基づいてコマンドを順序付け、受信した順序でコマンドのインジケーションをオペレーティング・デバイス２２へ送信することができる。コマンド・プロセッサ・モジュール１４は、特定の処理（例えば、図１の処理１０ａ又は１０ｂ）のコマンドを連続して順序付けしないことができる。例えばコマンド・プロセッサ・モジュール１４は、処理１０ａのコマンドを、処理の実行を要求したクライアント以外のクライアントから受信した他のコマンドとインタリーブすることができる。
【００１９】
上述したように、コマンド・プロセッサ・モジュール１４は、コマンドの１つ又は複数のコマンド・インジケーションを１つ又は複数のオペレーティング・デバイス２２へ送信することができる。一例において、１つ又は複数のコマンド・インジケーションは、プログラム命令であることができる。他の例において、１つ又は複数のコマンド・インジケーションは、格納又は処理されるデータであることができる。また別の例において、１つ又は複数のコマンド・インジケーションは、メモリ・ロケーション、又は、１つ又は複数のオペレーティング・デバイス２２によってプログラム命令又はデータが発見され取り出されうるロケーションの他のインジケータであることができる。
【００２０】
コマンド・プロセッサ・モジュール１４は、多数の異なる方法で具現化されうる。一例において、コマンド・プロセッサ・モジュール１４は、例えばＣＰＵクライアントのような、クライアント・デバイス４ａ乃至４ｅのうちの１つの一部であるソフトウェア、ファームウェア、又はハードウェアの任意の組み合わせに組み込まれうる。他の例において、コマンド・プロセッサ・モジュール１４は、例えば専用マイクロプロセッサのような、クライアント・デバイス４ａ乃至４ｅのうちの１つの一部ではない専用のソフトウェア、ファームウェア、又はハードウェアの任意の組み合わせによって組み込まれうる。
【００２１】
システム２は更に、コマンド・バッファ１８を含む。コマンド・バッファ１８は、ハードウェア・レジスタ、メモリ・デバイス、又はメモリ・デバイスのメモリのブロックであることができる。コマンド・バッファ１８は、入力コマンド・バッファを含むことができる。入力コマンド・バッファは、オペレーティング・デバイス２２のデバイス実行モジュール２０による実行のためにコマンド・プロセッサ・モジュール１４を介してクライアント４ａ乃至４ｅから受信したコマンドを格納するために適用されるメモリ・ブロック、メモリ・デバイス、又はハードウェア・レジスタであることができる。コマンド・バッファ１８は、出力コマンド・バッファを更に含むことができる。出力コマンド・バッファは、オペレーティング・デバイス２２において実行が完了した少なくとも１つのコマンドのインジケーションを格納するために適用されるメモリ・ブロック、メモリ・デバイス、又はハードウェア・レジスタであることができる。
【００２２】
システム２は更に、コマンド受信モジュール２４を含む。コマンド受信モジュール２４は一般に、クライアント４からのコマンドを受信し、オペレーティング・デバイス２２のデバイス実行モジュール２０による実行のためにそれらを準備するために適用されうる。一例において、コマンド受信モジュール２４は、受信したコマンド・インジケータを、後続する実行のためにコマンド・バッファ１８の入力バッファに収納することができる。例えばクライアント４ａ乃至４ｅのうちの１つのようなクライアントは、オペレーティング・デバイス２２において実行されるコマンドを要求するコマンド・インジケーションを送信する。コマンド・インジケーションは、コマンド・プロセッサ・モジュール１４によって受信され、順序付けられ、オペレーティング・デバイス２２へ送信されうる。コマンド受信モジュール２４は、実行されるコマンドのコマンド・インジケーションを受信することができる。コマンド受信モジュール２４は、受信したコマンドにユニークなコマンド識別子を割り当てることができる。一例において、コマンド識別子は２進数であることができる。２進数は、コマンド識別子がコマンド受信モジュール２５によって受信されるたびにインクリメントする、連続的に生成された２進数であることができる。コマンド受信モジュール２４は、例えばコマンド識別子のようなコマンドのインジケーションをコマンド・バッファ１８の入力バッファに収納することができる。コマンド受信モジュール２４は、コマンドの実行を要求したクライアントへコマンド識別子を戻すことができる。一例において、コマンド識別子は、コマンド・プロセッサ・モジュール１４へ戻され、要求しているクライアントへ転送される。他の例において、コマンド識別子は、要求しているクライアントへ直接戻される。
【００２３】
クライアントへ戻されたコマンド識別子は、複数の目的を果たすことができる。一例において、コマンド識別子は、クライアントによって発行されたコマンドがオペレーティング・デバイス２２によって受信され、実行の準備ができたことを示す返答アクノレッジメントとして役立つことができる。別の例において、コマンド識別子は、コマンドが実行を完了したか否かを判定するためにクライアントがコマンドの実行をモニタすることを可能にすることができる。コマンド識別子は連続的に生成され、コマンド・インジケーションがコマンド受信モジュール２４によって受信されるたびに割り当てられうるので、コマンド識別子は更に、コマンドの実行の順序を示すことができる。
【００２４】
上述したように、多くの場合、複数のクライアントは、システム２の１つ又は複数の機能の実行を継続する前に、オペレーティング・デバイス２２によって実行される１つ又は複数のコマンドの実行の完了を待機しうる。一例において、クライアントは、処理の最後のコマンド（例えば、図１に示す処理１０ａのコマンドＣ）が実行を完了するまで待機しうる。典型的なコンピュータ・システムによると、コマンドが実行を完了したかを判定するために、クライアントは、クライアントが待機している特定のコマンドが完了したかを判定するためにコマンド・バッファ１８をモニタすることができる。そのため、クライアントは、オペレーティング・デバイス２２が所望のコマンドの実行を完了したことを示すコマンド識別子を出力コマンド・バッファが含むかを判定するために、コマンド・バッファ１８の出力コマンド・バッファを断続的に「ピン」（“ping”）する、又は出力コマンド・バッファのコンテンツをレビューすることができる。
【００２５】
クライアントがオペレーティング・デバイス２２コマンド・バッファ１８を「ピン」する必要があることは、多くの理由によって望ましくない。一般に、コマンド・バッファ１８を「ピン」する必要性によって、例えばプロセッサであるクライアント４のＣＰＵサイクルのようなクライアント４のリソースの望ましくない損失が生じうる。クライアントの「ピン」が極めて頻繁である場合、クライアントのコンピューティング・リソースは過度にストレスを受け、例えばクライアントの内部で実行されるコマンド又は機能の実行といった他の目的のために用いることができる貴重なＣＰＵサイクルを浪費しうる。クライアントのコマンド・バッファ１８の「ピン」が過度に少ない場合、クライアントは、オペレーティング・デバイス２２において実行されたコマンドが実際に実行を完了した後、実行が完了したことにクライアントが気づくまで、不当に待機しなければならず、それによってクライアントによる他のプログラム又は機能の内部実行を遅延させうる。このように、コンピュータ・システムにおけるデバイス／モジュール間コマンド実行に関する改善へのニーズがある。
【００２６】
コンピュータ・システムのコマンド実行における上記欠陥に応じて、デバイス／モジュール間コマンドに関する改善された通信を提供するシステム、方法、及びデバイスが本明細書に開示される。再び図１を参照すると、１つ又は複数のクライアント（例えば、クライアント４ａ乃至４ｅ）は、コマンド完了モジュール（図１におけるコマンド完了モジュール１２ａ乃至１２ｅ）とともに提供され、１つ又は複数のオペレーティング・デバイス２２は、インタラプト制御モジュール１６とともに提供される。以下で説明する様々な例において、コマンド完了モジュール１２及びインタラプト制御モジュール１６は、デバイス／モジュール間コマンド実行に関する通信を改善するために、互いの、またシステム２の他のシステム、モジュール、及びデバイスとのインタフェースとなる。
【００２７】
図２は、本明細書で提供された開示と整合が取れたデバイス／モジュール間コマンド実行に関する通信を改善するために適用されるコンピュータ・システム２のブロック図である。説明の目的のために、図２のシステム２は、単一のクライアント４ａ及び単一のオペレーティング・デバイス２２を用いて示されるが、当業者は、システム２が任意の数のクライアント又はオペレーティング・デバイスに適用可能であることを理解するであろう。
【００２８】
図２に示すように、クライアント４ａはバス６を介してオペレーティング・デバイス２２に結合される。クライアント４ａは、オペレーティング・デバイス２２の１つ又は複数のコマンドの実行を所望しうる。クライアント４ａは、システム２の他のコマンド又は機能の実行を継続する前に、１つ又は複数のコマンドの完了を待機することができる。図１に関して上述したように、クライアント４ａは、コマンド・プロセッサ・モジュール１４を介して、コマンド（例えば、図１に示す１つ又は複数のコマンド）のコマンド・インジケーション５０をオペレーティング・デバイス２２へ通信することができる。コマンド・インジケーション５０は、オペレーティング・デバイス２２においてコマンドを実行する要求を示すことができる。コマンド受信モジュール２４は、コマンド識別子６０をクライアント４ａへ戻すように動作可能であることができる。
【００２９】
クライアント４ａは少なくとも１つのコマンド完了モジュール１２ａを含む。一般的に言うと、コマンド完了モジュール１２ａは、クライアント４ａの観点からデバイス／モジュール間コマンド実行に関する通信を管理するように機能する。従ってコマンド完了モジュール１２ａは、クライアント４ａが実行の完了を待機している１つ又は複数のコマンドを示す少なくとも１つのコマンド完了インジケータ３０を送信することができる。
【００３０】
また図示したように、オペレーティング・デバイス２２は、少なくとも１つのインタラプト制御モジュール１６を含む。一般的に言うと、インタラプト制御モジュール１６は、オペレーティング・デバイス２２の観点からデバイス／モジュール間コマンド実行に関する通信を管理するように機能する。以下で更に詳しく説明される様々な例において、インタラプト制御モジュール１６は、コマンド完了インジケータ３０に基づいて、コマンド完了インジケータ３０が受信された１つ又は複数のコマンドが実行を完了したことを１つ又は複数のクライアントに示す少なくとも１つのインタラプト４０を送信するために適用される。
【００３１】
いくつかの例において、インタラプト４０は、システム２の全ての又はほとんどのデバイス及び／又はモジュールへ送信されるジェネリック・インタラプトである。他の例において、インタラプト４０は、コマンド完了インジケータ３０を提供した１つ又は複数の特定のクライアントへ送信されるクライアント指定インタラプトである。以下で更に詳しく説明される様々な例において、インタラプト制御モジュール１６は、インタラプト４０が生成されるべきかを判定するために１つ又は複数の比較を実行するように動作可能であることができる。一例において、インタラプト制御モジュール１６は、コマンドがオペレーティング・デバイス２２における実行を完了するとそれらのコマンドとコマンド完了インジケータ３０によって識別されたコマンドとを比較するように構成される。一致があることが発見された場合、インタラプト４０が生成されうる。システム２のジェネリック・インタラプト構成の一例において、コマンド完了モジュール１２ａは、コマンドがに関するコマンド・インジケーション５０がオペレーティング・デバイス２２へ送信された後のいつかの時点で、クライアント４ａがコマンドの実行の完了を待機していることを示す少なくとも１つのコマンド完了インジケータ３０を通信するように構成される。インタラプト制御モジュール１６は、コマンド完了インジケータ３０を受信し、比較のために（例えば、メモリ又はレジスタに）コマンド完了インジケータ３０を格納するように構成される。メモリ又はレジスタは、コマンド・バッファ１８の一部であることもそうでないこともある。上述したように、コマンド完了インジケータ３０は、コマンド識別子６０であることができる。インタラプト制御モジュール１６は、単一のコマンド完了インジケータ３０又は複数のコマンド完了インジケータ３０を比較のために格納することができる。オペレーティング・デバイス２２によって実行されたコマンドが完了すると、完了したコマンドのコマンド識別子６０が、１つ又は複数のコマンド完了インジケータ３０と比較される。
【００３２】
一例において、比較は、完了したコマンドとコマンド完了インジケータ３０との間の一致を判定することを含む。別の例において、比較は、どれが先に実行されるべきかを判定するために、例えばコマンド識別子６０の比較のようにコマンドの優先権の順序を判定することを含む。
【００３３】
インタラプト制御モジュール１６が、完了したコマンドとコマンド完了インジケータ３０との間の一致を判定した場合、コマンド完了インジケータ３０が受信されたコマンドが実行を完了したことを全てのクライアント（例えば、図１のクライアント４ａ乃至４ｅ）に通知するジェネリック・インタラプト４０が生成される。一例において、ジェネリック・インタラプト４０はコマンド識別子６０を含み、インタラプト４０が、クライアントによって送信されたコマンド完了インジケータ３０に向けられているかを各クライアントが判定することを可能にする。他の例において、インタラプト４０をトリガした完了済みコマンドを識別するコマンド識別子６０は、コマンド・バッファ１８の出力バッファに収納されうる。従って、ジェネリック・インタラプト４０を受信した１つ又は複数のクライアントは、インタラプト４０が、クライアントによって送信されたコマンド完了インジケータ３０に向けられるかを判定するために、コマンド・バッファ１８の出力バッファのコンテンツにアクセスしレビューすることができる。
【００３４】
システム２のジェネリック・インタラプト構成の別の例において、コマンド完了モジュール１２ａが、コマンド・インジケーション５０の転送に後続するステップにおいてコマンド完了インジケータ３０を提供するのではなく、コマンド完了インジケータ３０が、コマンド・インジケーション５０の転送とともにオペレーティング・デバイス２２へ通信されうる。一例において、コマンド・インジケーション５０は、コマンドを表す２進数又は言語であり、２進数又は言語のうちの１又は複数のビットが、コマンド完了インジケータ３０のためのフラグとして確保されうる。従って、クライアントがコマンドの実行の完了を待機している場合、１又は複数のビットが設定されうる。オペレーティング・デバイス２２及びインタラプト制御モジュール１６は、コマンド受信モジュール２４がコマンド・インジケーション５０を受信すると１つ又は複数のビットを読み取り、１つ又は複数のビットが、コマンドに関してコマンド完了インジケータ３０が送信されたことを示すコマンドのためのコマンド・インジケーション５０を格納するように構成されうる。コマンド・インジケーション５０はその後、上述したように、コマンドがオペレーティング・デバイス２２における実行を完了するとそれらのコマンドと比較されうる。
【００３５】
システム２のクライアント指定インタラプト構成の例において、コマンド完了モジュール１２ａは、コマンド・インジケーション５０の最初の送信に後続してコマンド完了インジケータ３０を通信する場合、クライアントを識別する１つ又は複数のクライアント識別子７０を通信するように構成されうる。この例によると、インタラプト制御モジュール１６は、１つ又は複数のバッファ、レジスタ、又は他のメモリ・ロケーションに、各コマンド完了インジケータ３０とともにクライアント識別子７０を格納するように適用されうる。１つ又は複数のバッファ、レジスタ、又は他のメモリ・ロケーションは、コマンド・バッファ１８の一部であることができる。それに応じて、インタラプト制御モジュール１６は、コマンド完了インジケータ３０が送信されたコマンドが完了すると（及び上述したような対応する比較がされると）、特定のコマンド完了インジケータ３０を発行した特定のクライアントにクライアント指定インタラプト４０を通信するように構成されうる。クライアント４はその後、インタラプト４０がそのクライアントに向けられているかを判定する必要なく、クライアント指定インタラプト４０をトリガしたコマンドの完了の結果生じたデータ又は他の情報にアクセスすることができる。
【００３６】
システム２のクライアント指定インタラプト構成の別の例において、クライアントは、コマンド・インジケーション５０をオペレーティング・デバイス２２へ通信する場合、コマンド完了インジケータ３０及びクライアント識別子７０の両方を提供するように適用されうる。コマンド完了インジケータ３０及びクライアント識別子７０は、コマンド完了インジケータ３０に関して上述したようにコマンド・インジケーション５０を表す２進数又は言語に含まれうる。それに応じて、上述した例と同様に、インタラプト制御モジュール１６は、比較を実行し、クライアント指定インタラプト４０を提供することができる。
【００３７】
図３Ａは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行通信のための方法の一例を示すフローチャート図である。図３Ａの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されうるが、他のコンピュータ・システムも考慮される。図３Ａの例は、例えば本明細書で説明されたオペレーティング・デバイス２２のようなオペレーティング・デバイスの観点から示される。図示したように、オペレーティング・デバイスは、１つ又は複数のクライアントからの、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを受信する（３０１）。１つ又は複数のコマンドは、入力コマンド・バッファに収納されうる。オペレーティング・デバイスは、コマンドを識別する少なくとも１つのコマンド識別子を、要求しているクライアントへ戻すことができる。
【００３８】
オペレーティング・デバイスは、１つ又は複数のクライアント・デバイスが実行の完了を待機している１つ又は複数のコマンドを示す少なくとも１つのコマンド完了識別子を受信することができる（３０２）。コマンド完了識別子は、１つ又は複数のクライアント・デバイスが実行の完了を待機している１つ又は複数のコマンドを識別するコマンド識別を示す少なくとも１つのインジケーションを含むことができる。
【００３９】
コマンド完了識別子と完了したコマンドとの比較に基づいて、オペレーティング・デバイスがコマンド完了インジケータを受信した任意のコマンドについて実行が完了すると、オペレーティング・デバイスによってジェネリック・インタラプトが生成され、１つ又は複数のクライアントへ通信される（３０３）。ジェネリック・インタラプトは、ジェネリック・インタラプトをトリガしたコマンドのためのコマンド識別子を含むことも含まないこともできる。
【００４０】
図３Ｂは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行通信のための方法の一例を示すフローチャート図である。図３Ｂの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されうるが、他のコンピュータ・システムも考慮される。図３Ｂに示す例は、例えば図１及び２に示すクライアント４のようなクライアントの観点から示される。図示したように、クライアントは、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンド８を示す少なくとも１つのコマンド・インジケーションを送信する（３１１）。クライアントは、オペレーティング・デバイスによって受信されたコマンドを識別する少なくとも１つのコマンド識別子をオペレーティング・デバイスから受信することができる。
【００４１】
クライアントは、クライアントが実行の完了を待機している１つ又は複数のコマンドを示す少なくとも１つのコマンド完了インジケータを送信する（３１２）。少なくとも１つのコマンド完了インジケータは、少なくとも１つのコマンド識別子を含むことができる。
【００４２】
クライアントは、１つ又は複数のクライアントのうちの少なくとも１つがコマンド完了識別子を送信したコマンドが実行を完了したことを示す少なくとも１つのインタラプトをオペレーティング・デバイスから受信する（３１３）。少なくとも１つのインタラプトは、インタラプトをトリガした完了済みコマンドを識別するコマンド識別子を含むことも含まないこともできる。
【００４３】
少なくとも１つのインタラプトがコマンド識別子を含む場合、クライアントは、インタラプトがクライアントに向けられているかを判定するためにインタラプトをレビューすることができる（３１４）。インタラプトがクライアントに向けられている場合、クライアントは、コマンドの実行の結果を取り出し、実行の完了に依存する機能の実行を継続することができる。
【００４４】
少なくとも１つのインタラプトがコマンド識別子を含まない場合、クライアントは、インタラプトが、クライアントがコマンド完了インジケータを送信した１つ又は複数のコマンドの実行の完了を示したかを判定するために、完了したコマンドが格納されているバッファにアクセスすることができる（３１５）。インタラプトがクライアントに向けられている場合、クライアントは、コマンドの実行の結果を取り出し、コマンドの実行の完了に依存する機能の実行を継続することができる。
【００４５】
図４Ａは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行のための方法の一例を示すフローチャート図である。図４Ａの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図４Ａの例は、例えば本明細書で説明されたオペレーティング・デバイス２２のようなオペレーティング・デバイスの観点から示される。図示したように、オペレーティング・デバイスは、１つ又は複数のクライアントからの、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを受信する（４０１）。
【００４６】
クライアントがコマンドの実行の完了を待機している場合、コマンド・インジケーションは、クライアントがそのコマンドの実行の完了を待機していることを示すコマンド完了識別子を含むことができる。一例において、コマンド完了識別子は、コマンド・インジケーションのうちの１又は複数のビットである。１又は複数のビットは、特定のコマンドが、クライアントが実行を待機しているコマンドであるか否かを示すために設定されうる。オペレーティング・デバイスは、１又は複数のビットを読み取り、クライアントがそのコマンドの実行の完了を待機しているかを判定するように適用されうる。
【００４７】
コマンド完了識別子と完了したコマンドとの比較に基づいて、オペレーティング・デバイスがコマンド完了インジケータを受信した任意のコマンドについて実行が完了すると、オペレーティング・デバイスによってジェネリック・インタラプトが生成され、１つ又は複数のクライアントへ通信される（４０２）。ジェネリック・インタラプトは、ジェネリック・インタラプトをトリガしたコマンドのためのコマンド識別子を含むことも含まないこともできる。
【００４８】
図４Ｂは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行通信のための方法の一例を示すフローチャート図である。図４Ｂの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図４Ｂに示す例は、例えば図１及び２に示すクライアント４のようなクライアントの観点から示される。図示したように、クライアントは、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンド８を示す少なくとも１つのコマンド・インジケーションを送信する（４１１）。コマンド・インジケーションは、クライアントが１つ又は複数のコマンドの実行の完了を待機していることを示す少なくとも１つのコマンド完了インジケータを含むことができる。一例において、コマンド完了識別子は、コマンド・インジケーションのうちの１又は複数のビットである。１又は複数のビットは、特定のコマンドが、クライアントが実行を待機しているコマンドであるか否かを示すために設定されうる。
【００４９】
クライアントは、１つ又は複数のクライアントのうちの少なくとも１つがコマンド完了識別子を送信したコマンドが実行を完了したことを示す少なくとも１つのインタラプトをオペレーティング・デバイスから受信する（４１２）。少なくとも１つのインタラプトは、インタラプトをトリガした完了済みコマンドを識別するコマンド識別子を含むことも含まないこともある。ジェネリック・インタラプトを受信すると、クライアントは、完了したコマンドが、クライアントが実行の完了を待機しているコマンドであるかを判定するために、ウェイクアップすることができる（４１３）。
【００５０】
少なくとも１つのインタラプトがコマンド識別子を含む場合、クライアントは、インタラプトが、クライアントによって送信されたコマンド・インジケーションにコマンド完了識別子が含まれたコマンドに向けられているかを判定するためにインタラプトをレビューすることができる（５１３）。インタラプトがクライアントに向けられている場合、クライアントは、コマンドの実行の結果を取り出し、実行の完了に依存する機能の実行を継続することができる。
【００５１】
少なくとも１つのインタラプトがコマンド識別子を含まない場合、クライアントは、インタラプトが、クライアントがコマンド完了インジケータを送信した１つ又は複数のコマンドの実行の完了を示したかを判定するために、完了したコマンドが格納されたバッファにアクセスすることができる（５１４）。インタラプトがクライアントに向けられている場合、クライアントは、コマンドの実行の結果を取り出し、コマンドの実行の完了に依存する機能の実行を継続することができる。
【００５２】
図５Ａは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行のための方法の一例を示すフローチャート図である。図５Ａの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図５Ａの例は、例えば本明細書で説明されたオペレーティング・デバイス２２のようなオペレーティング・デバイスの観点から示される。図示したように、オペレーティング・デバイスは、１つ又は複数のクライアントからの、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを受信する。１つ又は複数のコマンドは、入力コマンド・バッファに収納されうる（５０１）。オペレーティング・デバイスは、そのコマンドを識別する少なくとも１つのコマンド識別子を、要求しているクライアントへ戻すことができる。
【００５３】
オペレーティング・デバイスは、１つ又は複数のクライアント・デバイスが実行の完了を待機している１つ又は複数のコマンドを示す少なくとも１つのコマンド完了識別子を受信する（５０２）。コマンド完了識別子は、コマンド識別を示す少なくとも１つのインジケーションを含むことができる。更に、コマンド完了識別子は、コマンド完了識別子を送信したクライアントを識別する少なくとも１つのクライアント識別子を含む。
【００５４】
コマンド完了識別子と完了したコマンドとの比較に基づいて、オペレーティング・デバイスがコマンド完了インジケータを受信したコマンドについて実行が完了すると、オペレーティング・デバイスによってクライアント指定インタラプトが生成され、１つ又は複数のクライアントへ通信される（５０３）。オペレーティング・デバイスは、（例えば、５０２で）受信したクライアント識別子に基づいてクライアント指定インタラプトを送信することができる。クライアント指定インタラプトは、ジェネリック・インタラプトをトリガしたコマンドのためのコマンド識別子を含むことも含まないこともできる。
【００５５】
図５Ｂは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行のための方法の一例を示すフローチャート図である。図５Ｂの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図５Ｂに示す例は、例えば図１及び２に示すクライアント４のようなクライアントの観点から示される。図示したように、クライアントは、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを送信する（５１１）。クライアントは、オペレーティング・デバイスからの、受信されたコマンドを識別する少なくとも１つのコマンド識別子をオペレーティング・デバイスから受信することができる。
【００５６】
クライアントは、クライアントが実行の完了を待機している１つ又は複数のコマンドを示す少なくとも１つのコマンド完了インジケータを送信する（５１２）。少なくとも１つのコマンド完了インジケータは、少なくとも１つのコマンド識別子を含むことができる。更に、コマンド完了識別子は、クライアントを識別する少なくとも１つのクライアント識別子を含む。
【００５７】
クライアントは、クライアントがコマンド完了識別子を送信したコマンドが実行を完了したことを示す少なくとも１つのインタラプトをオペレーティング・デバイスから受信する（５１３）。少なくとも１つのインタラプトは、インタラプトをトリガした完了済みコマンドを識別するコマンド識別子を含むことも含まないこともできる。
【００５８】
少なくとも１つのインタラプトがコマンド識別子を含む場合、クライアントは、インタラプトをトリガしたコマンドがクライアントに向けられているかを判定するためにインタラプトをレビューすることができる（５１４）。クライアントは、コマンドの実行の結果を取り出し、実行の完了に依存する機能の実行を継続することができる。
【００５９】
少なくとも１つのインタラプトがコマンド識別子を含まない場合、クライアントは、インタラプトをトリガしたコマンドが、クライアントがコマンド完了インジケータを送信したコマンドであるかを判定するために、完了したコマンドが格納されたバッファにアクセスすることができる（５１５）。クライアントは、コマンドの実行の結果を取り出し、コマンドの実行の完了に依存する機能の実行を継続することができる。
【００６０】
図６Ａは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行のための方法の一例を示すフローチャート図である。図６Ａの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図６Ａの例は、例えば本明細書で説明されたオペレーティング・デバイス２２のようなオペレーティング・デバイスの観点から示される。図示したように、オペレーティング・デバイスは、１つ又は複数のクライアントからの、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを受信する（６０１）。クライアントがコマンドの実行の完了を待機している場合、コマンド・インジケーションは、クライアントがそのコマンドの実行の完了を待機していることを示すコマンド完了識別子を含むことができる。
【００６１】
一例において、コマンド完了識別子は、コマンド・インジケーションのうちの１又は複数のビットである。１又は複数のビットは、特定のコマンドが、クライアントが実行を待機しているコマンドであるか否かを示すために設定されうる。オペレーティング・デバイスは、１又は複数のビットを読み取り、クライアントがコマンドの実行の完了を待機しているかを判定するように適用されうる。更に、コマンド・インジケーションは、受信されたコマンド・インジケーションの発信元のクライアントを識別するクライアント識別子を含む。
【００６２】
コマンド完了識別子と完了したコマンドとの比較に基づいて、オペレーティング・デバイスがコマンド・インジケーションを有するコマンド完了インジケータを受信したコマンドについて実行が完了すると、オペレーティング・デバイスによってクライアント指定インタラプトが生成され、クライアント識別によって識別されたクライアントへ通信される（６０２）。クライアント指定インタラプトは、ジェネリック・インタラプトをトリガしたコマンドのためのコマンド識別子を含むことも含まないこともできる。
【００６３】
図６Ｂは、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行のための方法の一例を示すフローチャート図である。図６Ｂの方法は、例えば図１及び２に示すコンピュータ・システム２のようなコンピュータ・システムに従って実現されるが、他のコンピュータ・システムも考慮される。図６Ｂに示す例は、例えば図１及び２に示すクライアント４のようなクライアントの観点から示される。図示したように、クライアントは、オペレーティング・デバイスにおいて実行される１つ又は複数のコマンドを示す少なくとも１つのコマンド・インジケーションを送信する（６１１）。コマンド・インジケーションは、クライアントが１つ又は複数のコマンドの実行の完了を待機していることを示す少なくとも１つのコマンド完了インジケータを含む。一例において、コマンド完了識別子は、コマンド・インジケーションのうちの１又は複数のビットである。１又は複数のビットは、特定のコマンドが、クライアントが実行を待機しているコマンドであるか否かを示すために設定されうる。コマンド・インジケーションは更に、コマンド・インジケーションを送信しているクライアントを識別する少なくとも１つのクライアント識別子を含む。
【００６４】
クライアントは、クライアントがコマンド・インジケーションを送信したコマンドが実行を完了したことを示す少なくとも１つのインタラプトをオペレーティング・デバイスから受信する（６１２）。少なくとも１つのインタラプトは、インタラプトをトリガした完了済みコマンドを識別するコマンド識別子を含むことも含まないこともできる。
【００６５】
少なくとも１つのインタラプトがコマンド識別子を含む場合、クライアントは、コマンド・インジケータのアイデンティティが、インタラプトをトリガしたクライアントによって送信されたかを判定するために、インタラプトをレビューすることができる（６１３）。クライアントは、コマンドの実行の結果を取り出し、実行の完了に依存する機能の実行を継続することができる。
【００６６】
少なくとも１つのインタラプトがコマンド識別子を含まない場合、クライアントは、インタラプトをトリガしたコマンドのアイデンティティがクライアントによって受信されたかを判定するために、完了したコマンドが格納されたバッファにアクセスすることができる（６１４）。クライアントは、コマンドの実行の結果を取り出し、コマンドの実行の完了に依存する機能の実行を継続することができる。
【００６７】
図７乃至１０は一般に、本明細書で説明された開示と整合が取れたデバイス／モジュール間コマンド実行に関する通信を改善するためのシステム、方法、及びデバイスの特定の実施形態の一例を示す。図８乃至１１に示す例は、説明目的のみのために提供される。当業者は、本明細書で説明されたインタラプト・ベースのデバイス／モジュール間コマンド実行の様々な例が、図７乃至１０において説明された例に限定されないことを理解するであろう。
【００６８】
図７は一般に、図８乃至１０に関して説明された方法によって用いられるオペレーティング・デバイス２２の構成要素の一例を示す。上述したように、オペレーティング・デバイス２２は、コマンド・バッファ１８を含むことができる。コマンド・バッファ１８は、オペレーティング・デバイス２２のデバイス実行モジュール２０において実行されるコマンドのコマンド識別子６０を格納する入力コマンド・バッファを含むことができる。コマンド・バッファ１８は更に、オペレーティング・デバイス２２のデバイス実行モジュール２０における実行が完了したコマンドのコマンド識別子６０を格納する出力コマンド・バッファを含む。
【００６９】
図示したように、インタラプト制御モジュール１６は、インタラプト４０の生成を容易にするために用いられる値の比較のために用いられる一連のバッファ、レジスタ、メモリ・ブロックなどを含む。例えばインタラプト制御モジュール１６は、デバイス実行モジュール２０において現在実行しているコマンドのコマンド識別子６０を格納するように構成されたバッファ７０１を含むことができる。インタラプト制御モジュール１６は更に、１つ又は複数のコマンド識別子６０と１つ又は複数のコマンド完了インジケータ３０との比較をイネーブルするイネーブル・フラグを格納するように構成された比較イネーブル・バッファ７０２を含む。一例において、イネーブル・フラグは、インタラプト制御モジュール１６によってインタラプトが生成されるたびに偽に設定される。インタラプト制御モジュール１６は更に、比較するための１つ又は複数のコマンド完了インジケータ３０（例えば、コマンド完了インジケータ３０が受信されたコマンド）を格納するように構成された比較コマンド・バッファ７０３を含むことができる。
【００７０】
図８は、コマンド完了インジケータ３０をオペレーティング・デバイス２２へ通信するために、クライアントのコマンド完了モジュール１２ａによって実行されうる処理のフローチャート図を示す。クライアントは、コマンド完了インジケータ３０をインタラプト制御モジュール１６へ送信することによって処理を開始することができる（８０１）。上述したように、コマンド完了インジケータ３０は、クライアントが以前実行のためにオペレーティング・デバイス２２へ送信したコマンドのコマンド識別子６０であることができる。コマンド識別子６０は、コマンドがコマンド受信モジュール２４によって受信されるたびにインクリメントされる２進数であることができる。従ってコマンド識別子６０は、各コマンドに割り当てられたユニークな番号だけではなく、コマンド・バッファ１８の入力コマンド・バッファにおけるコマンドの実行の順序も表す。
【００７１】
以下で更に詳しく説明するように、ある条件が満たされた場合、コマンド完了制御モジュール１２は、インタラプト制御モジュール１６からの、コマンド完了インジケータ３０が送信されたコマンドのインジケーションを受信することができる（８０２）。コマンドのインジケーションは、実際のコマンド自体、コマンド識別子６０、又はコマンドがアクセスされうるメモリ・ロケーションのアドレスであることができる。コマンド完了モジュール１２ａはその後、クライアントが実行の完了を示すインタラプト４０を所望するコマンド完了インジケータ３０と戻された値との比較を実行することができる。コマンドのインジケーションが、送信されたコマンド完了インジケータによって示されたコマンドと一致した場合、コマンド完了モジュール１２ａは、自身が送信したコマンド完了インジケータ３０に関連付けられたコマンドが次に比較のための行に入ること、及びコマンド完了モジュール１２ａがインタラプト４０を受信することを予測しうることを知る。従ってクライアントは、インタラプト４０の受信を待機することができる（８０４）。
【００７２】
しかし、コマンドのインジケーションが戻されなかった場合、コマンド完了モジュール１２ａは、自身が送信したコマンド完了インジケータ３０の前に少なくとも１つの他のコマンドが比較されなければならないことを知る。従ってコマンド完了モジュール１２ａは、インタラプト制御モジュール１６へ別のコマンド完了インジケータ３０を再び送信する前にいくらかの期間待機することができる（８０３）。
【００７３】
図９は、インタラプト制御モジュール１６において実行することができる処理を示すフローチャート図である。インタラプト制御モジュール１６は、クライアントからのコマンド完了インジケータ３０を受信することができる（９０１）。上述したように、コマンド完了インジケータ３０は、クライアント４が実行の完了を待機しているコマンドを識別するコマンド識別子６０であることができる。
【００７４】
インタラプト制御モジュール１６は、現在実行中コマンド・バッファ７０１に格納されたコマンドのコマンド識別子６０と受信したコマンド完了インジケータ３０とを比較することができる（９０２）。この比較は、クライアントによって送信されたコマンド完了インジケータ３０に関連付けられたコマンドが実行をまだ完了していないことと、従ってインタラプト４０が必要ではないこととを確実にするために役立つ。一例において、インタラプト制御モジュール１６は、コマンド完了インジケータ３０を送信したクライアントへ任意の値を戻さないことがある。その場合クライアントは、例えば、時間切れのように、他の手段を介して、コマンド完了インジケータ３０が送信されたコマンドが既に完了したかを判定することができる。他の例において、インタラプト制御モジュール１６は、コマンド完了インジケータ３０によって識別されたコマンドが既に実行を完了したことを示す少なくとも１つのインジケーションを送信することができる。
【００７５】
受信したコマンド完了インジケータ３０が、現在実行中コマンド・バッファ７０１に格納されたコマンドより後に実行される場合、コマンド完了インジケータ３０に関連付けられたコマンド識別子６０は、比較コマンド・バッファ７０３に格納される。また、９０２において、コマンド完了インジケータ３０に関連付けられたコマンドが、現在実行中コマンド・バッファ７０１に格納されたコマンド識別子６０よりも後に実行されることが決定された場合、比較イネーブル・バッファ７０２に格納された比較イネーブル・フラグは、更なる比較をイネーブルするために真に設定される。インタラプト制御モジュール１６は、比較コマンド・バッファ７０３に現在格納されているコマンド識別子６０とコマンド完了インジケータ３０とを比較することができる（９０３）。受信したコマンド完了インジケータ３０に関連付けられたコマンドが、比較コマンド・バッファ７０３に現在格納されているコマンド識別子６０に関連付けられたコマンドよりも先に実行される場合、コマンド完了インジケータ３０に関連付けられたコマンドは、比較コマンド・バッファ７０３に格納されている既存のコマンドよりも前に優先権を与えられるべきである。一例によると、インタラプト制御モジュール１６は、受信したコマンド完了インジケータ３０に関連付けられたコマンド識別子６０を比較コマンド・バッファ７０３に書き込むことができる。インタラプト制御モジュール１６はまた、更なる比較をイネーブルするために比較イネーブル・バッファ８０２の比較イネーブル・フラグを真に設定することもできる（９０４）。
【００７６】
受信したコマンド完了インジケータ３０に関連付けられたコマンドが、比較コマンド・バッファ７０３に現在格納されているコマンド識別子６０に関連付けられたコマンドよりも後に実行される場合、高い優先順位のコマンドが、受信したコマンド完了インジケータ３０に関連付けられたコマンドより前に実行を完了しなければならない。従って、一例において、クライアントには何も戻されない。別の例において、高い優先順位の待機がスケジュールされたことを示す１つ又は複数のインジケーションがクライアントへ送信される。
【００７７】
インタラプト制御モジュール１６が他のステップを処理している間、コマンド完了インジケータ３０に関連付けられたコマンドが実行を完了していないことを確実にするために、コマンド完了インジケータ３０は、現在実行中コマンド・バッファ７０１に格納されたコマンド識別子６０と再び比較されうる（９０５）。コマンド完了インジケータ３０が、現在実行中コマンド・バッファ７０１に格納されたコマンド識別子６０よりも後に実行される場合、比較コマンド・バッファ７０３に現在格納されているコマンドのインジケーションがコマンド完了モジュール１２ａへ戻される（９０５）。図示されていない一例において、インタラプト制御モジュール１６は、比較コマンド・バッファ７０３に現在格納されているコマンドのインジケーションを戻す前に、インタラプト４０の生成を待機することができる。
【００７８】
図１０は、インタラプト４０を生成するためにインタラプト制御モジュール１６で実行することができる処理を示すフローチャート図である。コマンドが実行を完了すると、インタラプト制御モジュール１６は、例えばコマンド識別子６０のような、完了したコマンドを示すインジケーションを受信することができる（１００１）。インタラプト制御モジュール１６は、図９に関して説明された処理によって比較がイネーブルされたかを判定するために、比較イネーブル・バッファ８０２をチェックすることができる（１００２）。イネーブルされていない場合、比較は行われず、インタラプト４０は生成されない。イネーブルされていた場合、インタラプト制御モジュール１６は、現在実行中コマンド・バッファ８０１に格納されたコマンド識別子６０と、比較コマンド・バッファ７０３内のコマンド識別子６０とを比較することができる（１００３）。比較コマンド・バッファ７０３に格納されたコマンド識別子６０が、現在実行中コマンド・バッファ７０１に格納された識別子よりも後に実行される場合、インタラプト４０が生成されうる（１００４）。インタラプト４０は、１つ又は複数のクライアントへ送信されうる。上述したように、クライアントは、インタラプト４０がクライアントに向けられたかを判定するために、コマンド・バッファ１８の出力バッファ及び／又はインタラプト４０をレビューすることができる。クライアントはその後、処理の結果生じた情報又はデータを取り出し、インタラプト４０が生成されたコマンドに依存していた処理又はコマンドの実行を継続することができる。
【００７９】
本開示において説明された技術及び／又は構成要素（例えば、図１及び２に示すクライアント４、オペレーティング・デバイス２２、コマンド・プロセッサ・モジュール１４、コマンド完了モジュール１２ａ乃至ｅ、コマンド・バッファ１８、コマンド受信モジュール２４、インタラプト制御モジュール１６、デバイス実行モジュール２０）は、１つ又は複数の汎用マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ）、又は他の同等の論理デバイスのうちの任意の組み合わせによって実現されうる。従って、「プロセッサ」、「コントローラ」、「デバイス」、又は「モジュール」という用語は本明細書で用いられる場合、上記構成のうちの任意の１つ又は複数、あるいは本明細書で説明された技術の実現に適した他の任意の構成を称することができる。
【００８０】
本明細書に示す様々な構成要素（例えば、図１及び２に示すクライアント４ａ乃至４ｅ、オペレーティング・デバイス２２、コマンド・プロセッサ・モジュール１４、コマンド完了モジュール１２ａ乃至ｅ、コマンド・バッファ１８、コマンド受信モジュール２４、インタラプト制御モジュール１６、デバイス実行モジュール２０）は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせの任意の適切な組み合わせによって実現されうる。図面において、様々な構成要素は個別のユニット又はモジュールとして示される。しかし、これらの図面に関して説明された様々な構成要素のうちのいくつか又は全ては、共通のハードウェア、ファームウェア、及び／又はソフトウェアにおける結合されたユニット又はモジュールに統合されうる。従って、構成要素、ユニット、又はモジュールとして特徴を表すことは、説明の簡略化のために特定の機能特徴を強調することが意図されており、個別のハードウェア、ファームウェア、又はソフトウェアの構成要素によるそのような特徴の実現は必ずしも必要ではない。いくつかの場合、様々なユニットは、１つ又は複数のプロセッサによって実行されるプログラマブル処理として実現されうる。
【００８１】
本明細書でモジュール、デバイス、又は構成要素として説明された特徴（例えば、図１及び２に示すクライアント４ａ乃至４ｅ、オペレーティング・デバイス２２、コマンド・プロセッサ・モジュール１４、コマンド完了モジュール１２ａ乃至ｅ、コマンド・バッファ１８、コマンド受信モジュール２４、インタラプト制御モジュール１６、デバイス実行モジュール２０に関する特徴）は、統合論理デバイスにおいて集合的に、あるいは個別であるが相互運用可能な論理デバイスとして別々に実現されうる。様々な態様において、そのような構成要素（図１及び２に示すクライアント４ａ乃至４ｅ、オペレーティング・デバイス２２、コマンド・プロセッサ・モジュール１４、コマンド完了モジュール１２ａ乃至ｅ、コマンド・バッファ１８、コマンド受信モジュール２４、インタラプト制御モジュール１６、デバイス実行モジュール２０）は、例えば集積回路チップ又はチップセットのような集積回路デバイスとして集合的に称されうる１つ又は複数の集積回路デバイスとして少なくとも部分的に形成されうる。そのような回路は、単一の集積回路チップ・デバイ又は複数の相互運用可能な集積回路チップ・デバイスにおいて提供され、任意の様々なアプリケーション及びデバイスにおいて用いられうる。
【００８２】
本明細書で説明された技術及び／又は構成要素（例えば、図１及び２に示すクライアント４ａ乃至４ｅ、オペレーティング・デバイス２２、コマンド・プロセッサ・モジュール１４、コマンド完了モジュール１２ａ乃至ｅ、コマンド・バッファ１８、コマンド受信モジュール２４、インタラプト制御モジュール１６、デバイス実行モジュール２０）は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されうる。ソフトウェアによる実現の場合、この技術は、実行されるとプロセッサに上述した方法のうちの１つ又は複数を実行させる、コンピュータ読取可能媒体において符号化された命令を含むプログラム・コードを備えるコンピュータ読取媒体によって部分的に実現されうる。この場合、コンピュータ読取可能媒体は、例えば同期ダイナミック・ランダム・アクセス・メモリ（ＳＤＲＡＭ）のようなランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、不揮発性ランダ・アクセス・メモリ（ＮＶＲＡＭ）、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、ＦＬＡＳＨメモリ、磁気データ記憶媒体又は光学データ記憶媒体などを備えることができる。
【００８３】
本開示において様々な態様が説明された。これらの態様及び他の態様は、以下の特許請求の範囲の範囲内である。
【図１】
2013539577.tif 000003
【図２】
2013539577.tif 000004
【図３Ａ】
2013539577.tif 000005
【図３Ｂ】
2013539577.tif 000006
【図４Ａ】
2013539577.tif 000007
【図４Ｂ】
2013539577.tif 000008
【図５Ａ】
2013539577.tif 000009
【図５Ｂ】
2013539577.tif 000010
【図６Ａ】
2013539577.tif 000011
【図６Ｂ】
2013539577.tif 000012
【図７】
2013539577.tif 000013
【図８】
2013539577.tif 000014
【図９】
2013539577.tif 000015
【図１０】
2013539577.tif 000016
【国際調査報告】
2013539577.tif 000017
2013539577.tif 000018