(57)【要約】【課題】ＵＳＢデバイスのサスペンド状態への移行が未処理データ等の存在によって妨げられることの防止。【解決手段】ＵＳＢホストからのサスペンドのための要求の受信に応答し、多機能ＵＳＢデバイスをサスペンドし；各デバイス機能を不定状態、ロック状態、又はアンロック状態に割り当て；アンロック状態にある所与の機能に未処理のデータ又はホスト注意喚起のための要求がある場合、当該デバイスに対しレジュームすることを許可し、前記所与の機能をロック状態に割り当て；それ以外の場合、たとえロック状態にある１以上の機能に未処理のデータがある場合であっても、サスペンドを維持することを含む、多機能ＵＳＢデバイスの電力を管理するシステム及び方法。【選択図】図３
2014523584.tif 000002
【特許請求の範囲】
【請求項１】
多機能ＵＳＢデバイスの電力を管理する方法であって、
ＵＳＢホストからのサスペンドのための要求の受信に応答し、前記デバイスをサスペンドするステップと、
各機能を不定状態、ロック状態又はアンロック状態に割り当てるステップと、
前記アンロック状態にある所与の機能に、未処理のデータ又はホスト注意喚起のための要求がある場合、前記デバイスに対しレジュームすることを許可し、前記所与の機能を前記ロック状態に割り当てるステップと、
それ以外の場合、たとえ前記ロック状態にある１以上の機能に未処理のデータがある場合であっても、前記サスペンドを維持するステップと
を含む方法。
【請求項２】
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能は前記ＵＳＢを介して動作していないと判断した場合、前記機能を前記不定状態に割り当てるステップと、
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みを完了することはできないと判断した場合、前記機能を前記ロック状態に割り当てるステップと、
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みをすることはできないと判断した場合、前記機能を前記アンロック状態に割り当てるステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記デバイスが起動モードにあること、
インタフェース設定が構成中であること、又は
前記機能に関連する前記エンドポイントの中に、パイプに結合されたものが無いこと
のうちの何れかの判断により、前記ＵＳＢを介して所与の機能が動作していないと判断するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記デバイスが、前記ホストにおいて関連ドライバがアンロードされたこと、又は前記ホストにおいて関連アプリケーションがクローズされたことを示すクラス又はベンダ固有コマンドを受信したこと、
前記デバイスが、前記ホストが前記所与の機能を含まない構成を選択したことを示す情報を受信したこと、又は
前記デバイスが、前記機能の前記インタフェース又はエンドポイントを目標とするクラス又はベンダ固有コマンドをいずれも受信することなく、及び、前記所与の機能のパイプに結合された何れかのエンドポイント上の何れかの転送又はトランザクションを完了することなく、デバイス制御によるサスペンド又はホスト要求によるサスペンドからレジュームしたこと
のうちの何れかの判断により、前記所与の機能を使用して前記ホストへの書き込みを完了することはできないと判断するステップをさらに含む、請求項３に記載の方法。
【請求項５】
関連シリアルバスコントローラが、前記機能エンドポイントに向けて送信された信号を検出したこと、
前記機能を含むコマンドを受信したこと、
前記所与の機能に結合されたトランザクションが、何れかのエンドポイントにおいて完了したこと、又は
前記機能のパイプに結合されたトランザクションが、何れかのエンドポイントにおいて完了したこと
のうちの何れかの判断により、前記所与の機能を使用して前記ホストに書き込むことができると判断するステップをさらに含む、請求項３に記載の方法。
【請求項６】
前記ホストが、前記機能に関連する前記エンドポイントのうちの何れに対しても、トランザクションを発行していないと判断する他の条件をさらに含む、請求項４に記載の方法。
【請求項７】
前記ホストが、前記機能に関連する前記エンドポイントのうちの何れに対しても、トランザクションを発行していないと判断する他の条件をさらに含む、請求項５に記載の方法。
【請求項８】
多機能ＵＳＢデバイスの電力を管理する方法であって、
ＵＳＢホストからのサスペンドのための要求の受信に応答し、前記デバイスをサスペンドするステップと、
各機能をロック状態、又はアンロック状態に割り当てるステップと、
前記アンロック状態にある所与の機能に、未処理のデータ又はホスト注意喚起のための要求がある場合、前記デバイスに対しレジュームすることを許可し、前記所与の機能を前記ロック状態に割り当てるステップと、
それ以外の場合、たとえ前記ロック状態にある１以上の機能に未処理のデータがある場合であっても、前記サスペンドを維持するステップと
を含む方法。
【請求項９】
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みを完了することはできない、又は、前記機能は、前記ＵＳＢを介して動作していないと判断した場合、前記機能を前記ロック状態に割り当てるステップと、
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みをすることはできないと判断した場合、前記機能を前記アンロック状態に割り当てるステップと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記デバイスが起動モードにあること、
インタフェース設定が構成中であること、又は
前記機能の前記エンドポイントの中に、パイプに結合されたものが無いこと
のうちの何れかの判断により、前記ＵＳＢを介して所与の機能が動作していないと判断するステップをさらに含む、請求項９に記載の方法。
【請求項１１】
前記デバイスが、前記ホストにおいて関連ドライバがアンロードされたこと、又は前記ホストにおいて関連アプリケーションがクローズされたことを示すクラス又はベンダ固有コマンドを受信したこと、
前記デバイスが、前記ホストが機能を含まない構成を選択したことを示す情報を受信したこと、又は
前記デバイスが、前記機能の前記インタフェース又はエンドポイントを目標とするクラス又はベンダ固有コマンドをいずれも受信することなく、及び、前記所与の機能のパイプに結合された何れかのエンドポイント上の何れかの転送を完了することなく、デバイス制御によるサスペンド又はホスト要求によるサスペンドからレジュームしたこと
のうちの何れかの判断により、前記機能を使用して前記ホストへの書き込みをすることはできないと判断するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ホストが、前記機能に関連する前記エンドポイントのうちの何れに対しても、トランザクションを発行していないと判断する他の条件をさらに含む、請求項１１に記載の方法。
【請求項１３】
多機能デバイスのサスペンド動作を管理するための電力管理モジュールであって、
前記デバイスをサスペンドし、
個々の機能のエンドポイントを調べ、
前記機能エンドポイントを調べた結果に基づいて、個々の機能を、関連ホストクラス又はファンクションドライバの認識された状態に関連する少なくともロック状態及びアンロック状態のうちの一方に割り当て、
前記アンロック状態にある所与の機能に、未処理のデータ又はホスト注意喚起のための要求がある場合、前記デバイスに対しレジュームすることを許可し、前記所与の機能を前記ロック状態に割り当て、
それ以外の場合、たとえいずれの前記ロック状態にある１以上の機能に未処理のデータがある場合であっても、前記サスペンドを維持する
ように構成された１以上のプロセッサを含む、電力管理モジュール。
【請求項１４】
前記１以上のプロセッサは、
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みを完了することはできないと判断した場合、前記機能を前記ロック状態に割り当て、
前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能を使用して前記ホストへの書き込みをすることはできないと判断した場合、前記機能を前記アンロック状態に割り当てる
ようにさらに構成される、請求項１３に記載の電力管理モジュール。
【請求項１５】
前記１以上のプロセッサは、前記デバイスが、前記機能に関連するエンドポイントにおけるホスト信号伝送活動に基づいて、前記機能が前記ＵＳＢを介して動作していないと判断した場合、前記機能を前記不定状態に割り当てるようにさらに構成される、請求項１４に記載の電力管理モジュール。
【請求項１６】
前記デバイスが起動モードにあること、
インタフェース設定が構成中であること、又は
前記機能のエンドポイントの中に、パイプに結合されたものが無いこと
のうちの何れかの判断により、前記ＵＳＢを介して前記機能が動作していないと判断することをさらに含む、請求項１５に記載の電力管理モジュール。
【請求項１７】
前記デバイスが、前記ホストが機能を含まない構成を選択したことを示す情報を受信したこと、又は
前記デバイスが、前記機能の前記インタフェース又はエンドポイントを目標とするクラス又はベンダ固有コマンドをいずれも受信することなく、及び、前記所与の機能のパイプに結合された何れかのエンドポイント上の何れかの転送を完了することなく、デバイス制御によるサスペンド又はホスト要求によるサスペンドからレジュームしたこと
のうちの何れかの判断により、前記機能を使用して前記ホストへの書き込みを完了することはできないと判断することをさらに含む、請求項１６に記載の電力管理モジュール。
【請求項１８】
関連シリアルバスコントローラが、前記機能エンドポイントに向けて送信された信号を検出したこと、
前記機能を含むコマンドを受信したこと、又は
所与の機能エンドポイントに結合されたトランザクション又は転送が、何れかのエンドポイントにおいて完了したこと
のうちの何れかの判断により、前記機能を使用して前記ホストに書き込むことができると判断する、請求項１７に記載の電力管理モジュール。
【請求項１９】
前記１以上のプロセッサは、機能に向けて送信された何らかのホスト信号について、ロックされた機能の機能エンドポイントを調べ、前記機能状態をロックからアンロックへ変更するように構成される、請求項１４に記載の電力管理モジュール。
【請求項２０】
前記ホストが、前記機能に関連する前記エンドポイントのうちの何れかに対してトランザクションを発行していると判断する他の条件をさらに含む、請求項１８に記載の電力管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１１年６月３０日にTerrill M. Moore他により出願された「Power Management Module for USB Devices」と題する米国仮特許出願第６１／５０３，３４９に基づく優先権を主張するものであり、当該米国仮特許出願は、参照により、本明細書に援用される。
【０００２】
発明の分野
本発明は、概して、ユニバーサル・シリアル・バス（ＵＳＢ）デバイスに関し、特に、ＵＳＢを介して動作をサスペンド（一時停止）及びレジューム（再開）するＵＳＢデバイスに関する。
【背景技術】
【０００３】
背景情報
過去１５年にわたって、ＵＳＢは、大容量記憶装置、スマートフォン、デジタルカメラ、メディアプレイヤー、モデム、キーボード等のような非常に様々なＵＳＢデバイスをパーソナルコンピュータ（ＰＣ）その他のホストシステムに接続するための、優勢ではないにしても、好ましい技術として浮上してきた。対象となるデバイスは、複数の独立して制御される機能を含み、例えば、スマートフォンは、カメラ、マルチメディアプレイヤー等を含む場合がある。ユーザは、多機能デバイスを例えばＰＣ上のＵＳＢポートに差し込むことにより、又は、多機能デバイスをハブ上のＵＳＢポートに差し込み、更にそれをＰＣ上のＵＳＢポートに差し込むことにより、多機能デバイスをＵＳＢに接続することができる簡便さ及び単純さを享受する。製造業者及びソフトウェア開発者もまた、それをサポートする単一の標準的インタフェースを有することの利益を享受する。
【０００４】
ＵＳＢは一般に、ホスト制御下で動作する。ホストは、デバイスの個々の機能に関連するクラス又はカスタムファンクションドライバを利用して、デバイスの種々の機能と通信し、種々のデバイス機能とホストとの間におけるデータ転送及び注意喚起のための要求を制御する。ホストは、クラス又はファンクションドライバを使用して周知の態様で動作し、ホストにより決定されるような種々の時点で、必要に応じて種々のデバイス機能をポーリングし、未処理のデータ又は要求をその機能に関連するデバイスハードウェアからホストへ移動させる。デバイス機能は、例えばハードウェアからデータが移動されたと判断することより、事実上、ホストへのデータ転送が発生したものと判断する。デバイス機能はさらに、常にではないが、ホストから確認メッセージを受け取る場合がある。同様に、デバイス機能は、その機能に関連するハードウェアにデータが移動されたときに、ホストからそのデバイスへのデータ転送又は要求が発生したものと判断する。
【０００５】
バスが実質的に活動していないとホストが判断した場合、すなわち、ホストがデバイスへ移動させるデータを有しておらず、デバイスがホストへ移動させるデータ又は要求を有していないとホストが判断した場合、ホストは、そのデバイスを含むＵＳＢバスの１以上の部分をサスペンドする場合がある。ホストがデバイスに対し、ホストからの注意喚起を要求することを可能にすることを望む場合、ホストは、サスペンドする前に、標準コマンドＳＥＴ＿ＦＥＡＴＵＲＥ（ＲｅｍｏｖｅＷａｋｅｕｐＥｎａｂｌｅ）をそのデバイスに送信する。そして、ホストが行うべき作業を何も有していない場合、ホストも同様にサスペンドする。その後、ホストがデバイスとメッセージを交換する準備が整ったときに、ホストは、そのデバイスを含むＵＳＢバスの１以上の部分をレジュームする。
【０００６】
サスペンドされたバスに気付いた所与のデバイスは、サスペンドしなければならない。その後、デバイスが注意喚起を必要とする場合において、ホストが前もってＳＥＴ＿ＦＥＡＴＵＲＥ（ＲｅｍｏｔｅＷａｋｅｕｐＥｎａｂｌｅ）コマンドを送信していた場合、そのデバイスは、「ｒｅｍｏｔｅ  ｗａｋｅｕｐ」信号をホストへ送信することができる。ただし、デバイスは、サスペンドを確認するために３ミリ秒だけ待つ必要があり、ホストは通常、ホストがバスを実際にサスペンドする幾らか前に、デバイスへの問合せを中止しなければならない。もしデバイスの１以上の機能からホストへ移動又は書き込みすべき未処理のデータがある場合、及び／又は、１以上の機能がホストの注意喚起を必要としている場合、デバイスは、ホストがサスペンド処理を開始した後、かつデバイスがそのサスペンドを認識する前のこのインターバルに、未処理のデータ及び／又は要求をホストに移動させることを試みる場合がある。この場合、未処理のデータ及び／又は要求をホストへ移動させることを試みるために、デバイスは、サスペンドした後直ぐに、ホストに対しその動作の再開を要求しなければならない。
【０００７】
ホストによりサポートされていないデバイス機能がある場合、その後、問題が発生することがある。ホストが、多機能デバイスの１以上の機能のためのクラス又はファンクションドライバのうちの１以上を全く有効化していない場合、すなわち、無効化していた場合、ホストは、１以上の機能からデータ又は要求を移動させるデバイスの試みに応答しない。例えば、種々のプッシュボタン、又は、他の何らかの種類の独立した行為に関連する種々の機能を含むデバイスを考えて欲しい。デバイス機能は、有効な関連クラス又はファンクションドライバがホストに存在するか否かを知らない。もしデバイス機能が、自身がホストからの注意喚起を必要とすることに自発的に気付いた場合、例えばボタンの１つが押された場合、デバイス機能は、そのデバイスの適当な機能エンドポイントに、注意喚起のための要求を置く。一方、ホスト上に有効な関連クラス又はファンクションドライバが存在しない場合、ホストは、その未処理の要求に気付くことはなく、その要求に応答しないかもしれない。従って、要求は未処理のままとなる。
【０００８】
従って、デバイスは、デバイスがサスペンドすることや、サスペンド状態に留まることを妨げるトランザクションを実施することができない。その結果、「デッドロック」状況が生じる。デッドロック状況において、デバイスは、未処理のデータ及び要求を処理するためのホストを起動（wake）することによりサスペンド要求に応答し、ホストは再び、デバイスが転送するデータ又は未処理の要求を有していないものと判断する。なぜなら、ホストがデバイスにある未処理のデータ又は要求を「見る」ことを可能にする有効なホストクラス又はファンクションドライバが存在しないからである。ホストは再び、サスペンド要求を送信し、デバイスは再び、ホストを起動することによってそのサスペンド要求に応答する。以下同様に続けられる。従って、デバイスは、最大電力消費で動作する非サスペンドモードに留まり、又は、非サスペンドモードに戻り続け、さらに、ホストを繰り返し起動し、ホストもまた、最大電力消費で動作しなければならない。
【０００９】
重要なことは、ＵＳＢ低速、最大速、及び高速デバイスの場合、バスを介したサスペンド／レジューム指示が全て、デバイスレベルの処理である点である。ホストが、多機能デバイスの一機能を使用しているのではないことを知らせる標準的方法はなく、また、ホストが多機能デバイス上の種々の機能の特定のサブセットからの起動イベントにしか関心を持たないことを知らせる方法もない。
【発明の開示】
【課題を解決する手段】
【００１０】
本発明は、ＵＳＢに接続された多機能デバイスが、ホストからサスペンド要求を受信した後、多機能デバイスのサスペンド動作を制御する電力管理モジュール、及び、当該モジュールの動作方法である。デバイスが自動的にサスペンドし、又は電力管理モジュールによってサスペンドモードにされた後、電力管理モジュール、及び動作方法は、実質的に個々の機能エンドポイントの状態を調べることによって、各機能について個別に、個々の機能が所定の「不定」、「ロック」又は「アンロック」状態にあるか否かを判断する。
【００１１】
状態は、実質的には、機能エンドポイントの状態により決定されるような、認識されたホストの活動に基づいて、デバイスの全体像から定義される。不定状態は、機能がＵＳＢを介して使用可能でない場合があること、従って、関連ホストクラス又はファンクションドライバが有効である場合もあれば、有効でない場合もあることを示す認識されたホスト活動に基づく。ロック状態は、所与の機能がホストへのデータ転送を完了できないこと、すなわち、関連ホストクラス又はファンクションドライバが有効でない可能性が高いことを示す認識されたホスト活動に基づく。アンロック状態は、所与の機能がホストへのデータ転送を完了する場合があること、従って、関連ホストクラス又はファンクションドライバが有効であることを示す認識されたホスト活動に基づく。モジュールは、実質的に、各デバイス機能についてステートマシンを管理する。
【００１２】
もしモジュール又は方法が、全てのデバイス機能の各々を不定又はロックのいずれかとして分類した場合、モジュール又は方法は、たとえ所与の機能が未処理のデータ又はホストからの注意喚起のための要求を有している場合であっても、デバイスに対し、起動を要求しないように命令する。もしモジュール又は方法が、デバイス機能のうちの少なくとも１つがアンロック状態にあるものと判断した場合、モジュール又は方法は、たとえアンロック状態にある機能のエンドポイントに、データ及び／又はホストに対する要求が未処理のまま存在する場合であっても、デバイスに対し、リモート起動を要求するように命令する。電力管理モジュール又は方法はさらに、未処理のデータ又は要求を有するアンロック状態にある種々の機能をロック状態に割り当てる。もしデバイスがレジューム活動に応答してサスペンド要求を受信した場合、電力管理モジュール又は方法は、個々の機能のエンドポイントの状態を検査し、異なる状態に割り当てなければならない機能があるかどうかを判断する。そのような機能がなければ、当該モジュールはデバイスを制御してデバイスをサスペンドし、ホスト活動の結果として、デバイス機能のうちの１以上がアンロック状態に割り当てられ、データ又は要求が未処理のままとされるか、又はホスト活動がデバイスを積極的に起動するまで、デバイスはサスペンド状態に留まる。
【００１３】
機能エンドポイントの状態により決定されるような個々のデバイス機能の状態に基づく、サスペンド要求に対するデバイスの応答のかかる制御によって、デバイスが非サスペンド動作モードでデッドロックすることや、非サスペンド動作モードへ不必要に戻ることが回避される。その結果、未処理のデータ及び／又は要求をホストへ移動させる試みであって、そのような試みに応答しないホストに対する未処理のデータ及び／又は要求の移動の試みによって、デバイスのサスペンドが妨げられることは無くなる。以下の本発明の説明は、添付の図面を参照する。
【図面の簡単な説明】
【００１４】
【図１】本発明に従って構成されたシステムを示す機能ブロック図である。
【図２】図１のシステムの電力管理モジュールにより管理されるステートマシンを示すフロー図である。
【図３】図１のシステムの電力管理モジュールの詳細な動作を示すフロー図である。
【発明を実施するための形態】
【００１５】
ここで、図１を参照すると、ホスト１０１は、ユニバーサル・シリアル・バス（ＵＳＢ）１３０に接続され、当該バスを介して接続された多機能デバイス１１０と通信する。説明を簡単にするために、単一の接続デバイスが示されている。ホスト及びデバイスは、プロセッサ１０４、１１４、メモリ１０２、１１２、及びシリアル・バス・コントローラ１０９、１１９、並びに、周知のＵＳＢ仕様に従って周知の態様で動作する他の周知の構成要素（図示せず）を含む。
【００１６】
バスを介して通信をする前に、ホスト及びデバイスは、周知の態様でエニュメレイション処理を実施し、当該処理において、ホストとデバイスとの間で情報を交換するために、デバイス・エンドポイント１２２０を有する制御チャネルを確立し、すなわち、デバイスバッファ空間を割り当てる。通信は、ホストと、デバイス上の種々の機能との間においても確立される。デバイスは、所与の機能について、機能からホストへデータ及び要求を転送することを可能にするとともに、ホストから機能へデータ、コマンド、及び要求を転送することを可能にするための、１以上のインタフェース１２０１、１２０２、…１２０ｉ及び１以上の関連デバイス・エンドポイント１２２１、…、１２２Ｅをさらに構成する。
【００１７】
デバイスの個々の機能へ送信される情報、及びデバイスの個々の機能から受信された情報を処理するために、ホストは、エニュメレーション処理の一環として、デバイスとの情報交換に基づき、周知の態様で、個々のデバイス機能のＵＳＢクラス、並びに適当なホストクラス又はカスタムファンクションドライバ１０６１、…１０６Ｄ、及び起動すべき、すなわちロード又は有効化すべきアプリケーション１０８１、…１０８Ａを決定する。周知のように、デバイスも、個々のデバイスクラス又はファンクションドライバ１１６ｉ、及び関連アプリケーション１１８ｉを備え、同様に動作する。
【００１８】
周知の下位トランスポート層及びドライバ（図示せず）は、ホスト１０１及びデバイス１１０において動作し、適当なＵＳＢ仕様に従って、ＵＳＢ１３０を介したデータ及び制御情報の輸送を可能にする。よく知られているように、ホストとデバイスとの間の通信は、ＵＳＢを介して、種々の「パイプ」において発生する。「パイプ」は、個々のホスト・エンドポイント（図示せず）及びデバイス・エンドポイント１２２ｉにより定義される。例えば、デバイス上の所与の機能は、データをホストへ送信するために構成された少なくとも１つのエンドポイント、すなわち、関連入力パイプのためのエンドポイントを有する場合がある。さらに、かかる機能は通常、ホストからデータを受信するために構成された少なくとも１つの関連エンドポイント、すなわち、出力パイプのためのエンドポイントを有する場合がある。必要に応じて、所与の機能は、複数の入力パイプ及び／又は出力パイプのために構成された複数のエンドポイントを有する場合がある。デバイス・エンドポイント０は、制御パイプ、すなわちホストとの制御情報の交換のための通信チャネルの一部として構成される。エンドポイント０は、デバイスの全ての機能について共通であり、制御パイプを介してデバイスに送信されるコマンドは、必要に応じてクラス又は機能／ベンダー固有のものとして識別される場合があり、従って、機能インタフェース及び／又はエンドポイントアドレスを含む場合がある。
【００１９】
同じく周知のように、デバイスによっては、異なるホストオペレーティングシステムとの間で互換性を有する選択可能な構成を有する場合がある。エニュメレーションの際、ホストは、適当な構成を選択し、エニュメレーションは、それに従って続けられる。選択可能な構成によっては、可能な全てのエンドポイントではなく特定の可能なエンドポイントの構成しか必要としない場合もあるが、選択可能な構成によっては、全てのエンドポイントを構成する場合もある。
【００２０】
デバイス・エニュメレーションが完了した後、ホスト１０１は、ホストによってサポートされるデバイス機能の全てについて、ホストクラス又はファンクションドライバ１１６ｉ、及び関連アプリケーション１１８ｉを有効化し、又はロードし、デバイス１１０は、当該デバイスの全ての機能について、エンドポイント１２２ｊを構成した。その後、ホストによってサポートされるデバイス機能をユーザに提供するために、ホスト及びデバイスは、ＵＳＢ１３０を介して通信する。なお、例えばベンダー固有のクラスドライバのような、必要なクラス又はファンクションドライバが、ホストにインストールされず、又は当該ドライバがホストにとって使用可能でない場合、ホストは、必ずしもデバイスのあらゆる機能をサポートしない場合がある。また、ホストは、例えばデバイス機能の不活動、又はホスト若しくはデバイスにおける故障といった様々な理由から、特定のクラスドライバ及び／又は関連アプリケーションを停止、すなわちアンロード又は無効化する場合がある。従って、ホストは、種々のデバイス機能をサポートするために、任意の時点で無効化される場合がある。ただし、個々のデバイス機能には、対応するホストクラス又はファンクションドライバが有効ではないことが、通知されない場合がある。そのため、デバイスファンクションドライバ１１６ｉ及びアプリケーション１１８ｉは、恰も個々のデバイス機能のための対応する有効なホストクラス又はファンクションドライバが存在するかのように、動作を続ける。
【００２１】
ＵＳＢ１３０は実質的に休止状態であるとホスト１０１が判断した場合、すなわち、ホストクラスドライバ１０６ｉによってデバイスへ送信又は移動させるべきデータは無く、かつ、ホストによってサポートされるデバイス機能からホストへ移動させるべき関連未処理データ又は要求も無いとホストが判断した場合、デバイス及びホストにおける電力消費を低減するために、ホストはデバイスに対し、サスペンド要求を発行する場合がある。デバイス１１０がサスペンド要求を受信すると、デバイスは、その要求に対し、どのように応答するかを決定しなければならない。なお、サスペンド要求は、デバイスに対して行われるものであり、デバイスの個々の機能に対して行われるものではなく、ホストは、未処理のデータ又は要求を有していない有効なホストクラス又はファンクションドライバによりサポートされる機能に基づいて、サスペンド要求を発行する。所与のデバイス機能のための有効なホストクラス又はファンクションドライバが無い場合、ホストは、デバイスにおいて何が行われているかに関わらず、その所与のデバイス機能が、恰もホストへ移動させるべきデータを有していないかのように動作する。なぜなら、ホストは、その機能の動作を知らないからである。
【００２２】
デバイス１１０がホストからサスペンド要求を受信すると、デバイス１１０に関連する電力管理モジュール１２４は、そのデバイスが、ホスト１０１からのサスペンド要求に対しどのように応答するかを制御する。これを行うために、電力管理モジュール１２４は、関連エンドポイントの状態（単数又は複数）を調べ、所定の機能状態のための条件を満たしているか否かを判断することにより、各機能を３つの定義された状態のうちの１つに割り当てる。３つの定義された状態は、不定、ロック、及びアンロックである。これらの状態は、デバイスにおいて認識されるようなホスト活動に基づいて定義され、実質的には、ホストへの転送を完了するためのデバイスの認識された能力に関連する。
【００２３】
不定状態では、デバイスにおいて、関連ホストクラス又はファンクションドライバが有効であるか否かを判断することができない。従って、機能エンドポイントが調べられ、エンドポイントの状態から、その機能がＵＳＢ１３０を介して確立されるか否かが判断される。ロック状態とは、エンドポイントの状態から、その機能がホストにデータを書き込み、又はホストにデータを移動させることができないことをデバイスが認識している状態である。アンロック状態とは、エンドポイントの状態から、その機能がホストにデータを書き込み、又はホストにデータを移動させる場合があることをデバイスが認識している状態である。
【００２４】
電力管理モジュール１２４がホストからのサスペンド要求に対するデバイスの応答をどのように制御するかを説明する前に、電力管理モジュールにより使用される個々の状態の定義について、さらに詳細に説明する。電力管理モジュールは、ホスト活動に基づいて個々の機能エンドポイントを調べること、すなわち、個々の機能エンドポイントの状態を判断することにより判断されるような、適合する種々の条件に基づいて、種々の機能に状態を割り当てる。従って、電力管理モジュールは、制御チャネルエンドポイント（これは、あらゆる機能に関連する）を含む個々の機能エンドポイントを調べ、それらのエンドポイントの状態から、デバイスがサスペンド要求を受信した時点において、所与の機能により、異なる状態のための条件が満たされているか否かを判断する。
【００２５】
不定状態のための条件は、所与の機能が開始モードにあること；又は、機能インタフェース設定が構成中であること；又は、種々の機能エンドポイントの中に、パイプに結合されたものが存在しないことである。例えば、デバイスが、所与の機能のためのＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮ（構成セット）コマンドを受信し、かつ、ホストがまだ、その所与の機能に関連するデバイスエンドポイントに対し、活動又はクラスコマンドを何も命じていない場合、その所与の機能は、不定状態のための条件を満たすものとして分類されることになる。
【００２６】
より具体的には、発明者らは、ホストが関連する有効なホストクラス又はファンクションドライバ及び／又はアプリケーションを有しているか否かが明らかでないことを示すデバイスにより認識されるようなホスト活動に基づいて、不定状態を定義した。従って、未処理のデータ及び／又はホスト注意喚起のための要求をホストへ移動させるためのデバイスからの要求に、ホストが応答するか否かは、明らかではない。
【００２７】
アンロック状態のための条件は、デバイス・シリアルバスコントローラ１１９が、機能エンドポイントへ送信された信号を検出したこと；又は、関連デバイス機能を含むクラス若しくはベンダー特定コマンドが受信されたこと；又は、機能エンドポイントに結合された何れかのエンドポイントにおいて、トランザクションが完了したこと；又は、機能のパイプに結合された何れかのエンドポイントにおいて、転送が完了したこと；又は、ホストが、機能に関連するエンドポイントの何れかに対し、トランザクションを発行していることである。（以下、これらの条件をまとめて「アクティビティ・インジケーション」と呼ぶ）。例えば、もし所与のエンドポイントが、所与の機能のための出力エンドポイントであり、トランザクションが、その出力パイプに結合されたエンドポイントにおいて完了した場合、その所与の機能は、アンロック状態の条件を満たすものと判断される。
【００２８】
より具体的には、発明者らは、所与の機能に対応するホストクラス若しくはファンクションドライバ、及び／又はクローズされた関連アプリケーションをホストがまだアンロードしていないことを示す、デバイスにより認識されるようなホスト活動に基づいて、アンロック状態を定義した。従って、ホストは、機能エンドポイントにおける未処理のデータ又は注意喚起のための要求を移動させるためのデバイスからの要求に、少なくとも応答するものと予想される。
【００２９】
ロック状態のための条件は、その機能に対応するクラス又はファンクションドライバがホストにおいてアンロード若しくは無効化され、又はその機能に関連するアプリケーションがホストにおいて閉じられ若しくは無効化されたことを示す、クラス若しくはベンダー固有コマンドが受信されたこと；又は、ホストがその機能を含まない構成を選択したことを示す情報を、デバイスが受信したこと；又は、その機能が判断不能な状態にあるときにデバイスがサスペンド要求を受信したこと；又は、その機能がアンロック状態にあるときにデバイスがサスペンド要求を受信し、デバイスがホストからの注意喚起を必要とし、及び、最後のレジューム以降、何もアクティビティ・インジケーションが受信されていないことである。
【００３０】
より具体的には、ロック状態とは、ホストにおいて関連クラス又はファンクションドライバがアンロードされ、及び／又は、ホストにおいて関連アプリケーションが閉じられたことが分かっている、又は少なくともその可能性があるものと、デバイスにおいて判断されるような状態として定義された。従って、その機能が、ホストのための未処理データを有しているか否かに関わらず、デバイスをサスペンドさせるべき状況が存在する。なぜなら、電力管理モジュールは、ホストはその機能からの要求に応答しない可能性が高いと判断しているからである。
【００３１】
次に、図２を参照すると、電力管理モジュール１２４は、各デバイス機能についてステートマシンを管理し、デバイスがサスペンド要求を受信した時に、デバイス機能の状態を変化させるべきか否かを判断する。ステートマシンは、３つの定義された状態３０２、３０４、３０６から構成される。
【００３２】
不定状態３０２にある機能は、機能エンドポイントの状態、又はコマンドの受信により、ホストが、有効又は無効な関連ホストクラス又はファンクションドライバ、及び／又はアプリケーションを有していることが明らかになるまで、不定状態に留まる。例えば、当該機能は、ホストが機能エンドポイントに信号を送信し、その状態がアンロック状態に変わるまで、又は、アクティビティ・インジケーションを有しないレジューム／サスペンドサイクルによって、ファンクションドライバが活動していないこと、すなわち、ファンクションドライバがアンロード又は無効化されていることが明らかとなり、機能状態がロック状態に変わるまで、不定状態に留まる。
【００３３】
アンロック状態３０４にある機能は、ホストが未処理のデータ若しくは要求を移動させている間は、アンロック状態に留まる。すなわち、未処理のデータ若しくは要求がない場合、ホストは、機能エンドポイントに信号を送信し、又は、制御エンドポイント０を介して、機能インタフェース若しくはエンドポイントのためのアドレスを含むクラス固有又はベンダー固有のコマンドを送信する。サスペンド要求の受信時にデータ又は要求が未処理であり、最後のレジューム以降、アクティビティ・インジケーションを受信していない場合、電力管理モジュールは、その機能の状態をロック状態に変更する。デバイスが再起動された場合、デバイスがホストからＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮコマンドを受信した場合、又は、ホストが多数の周知の方法のうちの何れかを使用して、デバイスをＵＳＢ２．０仕様のセクション９．１．２に規定されるようなＵＳＢで定義されたデフォルト又はアドレス状態に戻した場合、電力管理モジュールは、その機能の状態を不定状態に変更する。
【００３４】
ロック状態３０６にある機能は、ホストが未処理のデータ及び要求を移動させるまで、ロック状態に留まる。すなわち、未処理のデータ若しくは要求がない場合、ホストは、機能エンドポイントに信号を送信し、及び／又は、制御エンドポイント０を介して、機能インタフェース若しくはエンドポイントのためのアドレスを含むクラス固有若しくはベンダー固有のコマンドを送信し、機能状態は、アンロック状態に変化する。デバイスが再起動された場合、デバイスがホストからＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮコマンドを受信した場合、又は、ホストが多数の周知の方法のうちの何れかを使用して、デバイスをＵＳＢ２．０仕様のセクション９．１．２に規定されるようなＵＳＢで定義されたデフォルト又はアドレス状態に戻した場合、電力管理モジュールは、その機能の状態を不定状態に変更する。
【００３５】
次に、図３をさらに参照すると、電力管理モジュール１２４は、サスペンド要求を受信した後、機能エンドポイントを調べることにより判断されるような個々の機能の状態に基づいて、下記の処理を実施する。ステップ２００において、デバイスは、電力管理モジュールによって管理されている１以上の機能を含む構成を選択し、有効化するためのＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮコマンドをホストから受信する。このコマンドを受信すると、電力管理モジュールは、機能状態をデフォルト状態に、例えばアンロック状態にセットする。なぜなら、これらの機能は、ホストによりサポートされていると考えられるからである。ステップ２０２において、デバイスは、デバイス・シリアル・バス・コントローラ１１９により検出されたＵＳＢバス・サスペンドイベントに応答し、自身の動作をサスペンドする。その後、電力管理モジュールは、デバイスが、サスペンド状態に留まるか、それとも、ホストのリモート起動によりレジュームするかを決定しなければならない。
【００３６】
電力管理モジュール１２４は、各機能の状態を判断する。ステップ２０４である。電力管理モジュールは、所与の機能について、その機能の状態を変更すべきか否かを決定するために、関連する機能エンドポイントを調べる。すなわち、関連機能エンドポイントの状態を判断する。従って、電力管理モジュールは、各機能について個別に、図２を参照して上で説明したような、異なる状態条件の条件が満たされているか否かを判断する。その後、デバイス機能の全てが不定、及びロック状態にある場合、電力管理モジュールは、デバイス機能のうちの１以上においてデータ又は要求が未処理である場合であっても、デバイスがサスペンド状態に留まるようにデバイスを制御する。ステップ２０６、２０７である。
【００３７】
もしデバイス機能のうちの１以上がアンロック状態にある場合、電力管理モジュールは、アンロック機能においてデータ又は要求が未処理であるか否かを判断する。そして、電力管理モジュールは、デバイスがホストのリモート起動を実施することを許可し、従って、デバイス機能にレジュームを許可する。電力管理モジュールはさらに、未処理のデータ又は要求を有する個々のアンロックされた機能の状態を、ロック状態に変化させる。ステップ２０６、２０８、２１０である。アンロック状態にある機能から、未処理のデータ又は要求が無い場合、電力管理モジュール１２４は、デバイスをサスペンド状態に留まらせる。ステップ２０９である。
【００３８】
ステップ２１４において、もしデバイスが、レジューム活動に応答し、サスペンド要求を受信した場合、デバイスは、自動的に、又は電力管理モジュールの制御に従って、再びサスペンドする。ステップ２０２である。電力管理モジュールは、機能の状態を変化させるべきであるか否かを決定するために、機能エンドポイントを調べる。ステップ２０４である。ただし、データ及び注意喚起のための要求が依然として未処理の状態に留まっている場合であっても、機能はロック状態にあり、電力管理モジュールは、それらの機能をロック状態に留まらせるべきことを決定する。従って、デバイスは、サスペンド状態に留まる。ステップ２０４、２０６、２０７である。従って、電力管理モジュール１２４は、デバイスがホストからサスペンド要求を受信するたびに、ホストによりサポートされていない機能における未処理のデータ及び注意喚起のための要求が原因で、デバイスがデッドロック状態になることや、レジュームし続ける無限ループに入ることを防止する。従って、デバイスは、電力管理モジュールの命令又は方法に従って動作している場合、適切にサスペンド状態に留まり、ホストがデバイスとの間で活発に通信する準備が再び整ったことを示す信号を発するまで、その電力消費を低減する。
【００３９】
例えばシステムを起動するためのユーザ活動に応答し、ホストがデバイスとの活動のための信号を送信した場合、デバイスはレジュームし、電力管理モジュールは、電力管理イベントを終了する。その後、電力管理モジュールは、次の電力管理イベントトリガ、すなわち、ホストからの次のサスペンドコマンドを待ち、デバイスのサスペンド応答を再び制御する。ステップ２１２、２１３である。
【００４０】
電力管理モジュールは、エンドポイントを繰り返し調べる代わりに、エンドポイント・ステータス・レジスタ（図示せず）を使用する場合があり、当該レジスタには、個々のエンドポイントの状態を知らせるためのフラグがセットされる。例えば、エンドポイントがホストから信号を受信した場合、フラグがセットされる場合がある。その後、電力管理モジュールは、レジスタを検査することにより、エンドポイントの状態を調べることができる。必要であれば、個々のデバイス機能に関連するエンドポイントについて、個別のレジスタを使用してもよい。ただし、制御チャネル又はエンドポイント０を介した信号伝送は、受信したコマンドのタイプに基づいて、すなわち、標準コマンドであるか、又はコマンドに関連する機能に関連するアドレス情報を有するクラス／ベンダ固有コマンドであるかに基づいて、決定されなければならない場合がある。レジスタは、制御エンドポイント０について複数のエントリを含む場合がある。なぜなら、このエンドポイントは全ての機能について共通であり、フラグはアドレス情報に基づいてセットされるからである。あるいは、クラス又はベンダ固有コマンドが受信された場合、個々の機能に関連する他のエンドポイントについて、フラグがセットされる場合がある。なぜなら、信号伝送は、ホストにおいて、関連ホストクラス又はファンクションドライバが有効であることを示しているからである。あるいは、この場合も、それらの機能は、適当なフラグを管理することによって、ソフトウェアで実施される場合がある。ソフトウェアベースのアプローチは、あまり効果的ではないが、既存のデバイスシリアルバスコントローラハードウェアに変更を加えることなく、実施することができる。
【００４１】
電力管理モジュールは、事前電力管理イベントトリガの終了後、すなわち、デバイスがホスト活動信号に基づいてレジュームした後に、エンドポイントにおいて行われたホスト活動に依存する場合がある。代替又は追加として、電力管理モジュールは、個々の機能の最後の構成後に、エンドポイントにおいて行われたホスト活動を検査する場合がある。説明したように、電力管理モジュールは、エンドポイントを調べ、又は必要に応じてレジスタを調べ、エンドポイントの状態から、又はデバイスの全体像から、個々の機能について、ホストクラス又はファンクションドライバが有効であるか否かを判断する。
【００４２】
ステートマシンにロック状態及び不定状態を含めることは、効率のためである。もしある機能が不定状態にある場合、電力管理モジュールは、その状態をアンロック状態、又はロック状態へ変更すべきか否かを判断するために、あらゆる関連エンドポイントを調べなければならない。しかし、ロック状態にある機能の場合、全ての機能エンドポイント及び制御チャネルエンドポイントの状態を考慮する必要は無い場合がある。例えば、もしサスペンド時にデータが未処理である場合、次のサスペンド要求の受信後に、未処理のデータを有する出力エンドポイントのみを調べる必要がある場合がある。また、もし未処理のデータが無い場合、ホストが機能状態をアンロック状態に変更すべきことを知らせる信号をエンドポイントのうちの１つに向けて送信した後、全部よりも少ない数のエンドポイントを調べる必要がある場合がある。同様に、機能がアンロック状態にある場合、電力管理モジュールは、機能エンドポイントのうちのいずれか１つにおいてホスト信号が検出されたときに、全部よりも少ない数のエンドポイントを調べる場合がある。ホストの信号伝送は、例えば、機能入力エンドポイントからデータをポーリング若しくは移動させることであっても、データ若しくはコマンドを出力エンドポイントへ移動させることであっても、あるいは、制御エンドポイント０を介して機能インタフェース若しくはエンドポイントに向けて送信されたクラス若しくはベンダー固有コマンドを受信することであってもよい。
【００４３】
これら３つの状態の使用により、電力管理モジュールは、不定状態にある機能のエンドポイントの数に比べて少数の、ロック状態又はアンロック状態にある機能のエンドポイントを調べることが可能となるが、代わりに、電力管理モジュールは、ステートマシンにおいてたった２つの状態、すなわち、ロック状態及びアンロック状態を有するように動作する場合がある。その後、電力管理モジュールは、デバイスがサスペンド要求を受信するたびに、何らかの機能の状態を変化させるべきか否かを判断するために、ロックされた機能の全てのエンドポイントを調べる。
【００４４】
電力管理モジュール及び／又はステートマシンは、ハードウェア、ファームウェア、及び／又はソフトウェアで実施される場合がある。電力管理モジュールは、１以上のプロセッサを含み、及び／又は、デバイス・プロセッサ１１４を使用する場合がある。デバイス・プロセッサ１１４は、複数の通信プロセッサからなる場合がある。
【００４５】
なお、デバイスがサスペンドする前にホストがＳＥＴ＿ＦＥＡＴＵＲＥ（機能セット）（ＲｅｍｏｔｅＷａｋｅｕｐＥｎａｂｌｅ（リモート起動有効化））コマンドを送信しない場合、電力管理装置は、デバイスに対し、サスペンドサイクル中にリモート起動信号をホストへ送信することを許可することができない。ただし、電力管理装置は依然として、各機能の状態を追跡しなければならない。なぜなら、ホストはその後、デバイスをレジュームし、ＳＥＴ＿ＦＥＡＴＵＲＥ（ＲｅｍｏｔｅＷａｋｅｕｐＥｎａｂｌｅ）コマンドを送信した後に、デバイスをサスペンドする場合があるからである。あるいは、この状況では、電力管理装置は、追跡した各機能の状態をアンロック状態又は不定状態にセットする場合がある。
【図１】
2014523584.tif 000003
【図２】
2014523584.tif 000004
【図３】
2014523584.tif 000005
【国際調査報告】
2014523584.tif 000006
2014523584.tif 000007