(57)【特許請求の範囲】
【請求項１】
発生したイベント情報をシステムメモリへ出力するイベント制御部と、
前記システムメモリに記録されているイベントを実行するプロセッサに対して、前記イベント制御部から前記システムメモリへ出力されたイベントの実行を要求する割り込み信号を出力する割り込み制御部と、を備え、
前記割り込み制御部は、
第１および第２の割り込み信号を出力するタイミングをそれぞれ示す第１および第２の割り込み信号出力タイマを有し、
前記イベント制御部は、
発生した第１のイベント情報を蓄積し、前記第１の割り込み信号出力タイマに同期して、蓄積された前記第１のイベント情報を前記システムメモリに出力する第１のイベントバッファと、
発生した第２のイベント情報を蓄積し、前記第２の割り込み信号出力タイマに同期して、蓄積された前記第２のイベント情報を前記システムメモリに出力する第２のイベントバッファと、を有し、
前記第１の割り込み信号出力タイマがタイムアウトするときに前記第２の割り込み信号出力タイマが起動中である場合には、前記第１の割り込み信号出力タイマに同期して出力されるべき前記第１のイベントバッファに蓄積された前記第１のイベント情報を、前記第２の割り込み信号出力タイマに同期して前記システムメモリへ出力する、ホストコントローラ装置。
【請求項２】
前記イベント制御部は、
前記第１の割り込み信号出力タイマがタイムアウトしてから前記第２の割り込み信号出力タイマがタイムアウトするまでの期間が所定期間内である場合には、前記第１のイベントバッファに蓄積された前記第１のイベント情報を、前記第２の割り込み信号出力タイマに同期して前記システムメモリへ出力する、請求項１記載のホストコントローラ装置。
【請求項３】
前記システムメモリおよび前記プロセッサと、システムバスを介して情報の入出力を行うシステムインターフェース部をさらに備え、
前記システムインターフェース部は、
前記第１および第２のイベント情報及び前記第１および第２の割り込み信号の少なくとも一方を前記システムバスへ出力する際に起動される、請求項１に記載のホストコントローラ装置。
【請求項４】
前記第１および第２のイベント情報および前記第１及び第２の割り込み信号の少なくとも一方が前記システムバスへ出力される際に、前記システムインターフェース部に対して電力を供給する電力制御部をさらに備える、請求項３記載のホストコントローラ装置。
【請求項５】
前記第１および第２の割り込み信号出力タイマは、それぞれ対応する前記第１および第２のイベント情報が前記システムメモリに出力された後に起動され、
前記第１および第２の割り込み信号はそれぞれ、前記第１および第２の割り込み信号出力タイマが満了した後に、前記システムメモリへ出力される請求項１記載のホストコントローラ装置。
【請求項６】
請求項１乃至５のいずれか１項に記載のホストコントローラ装置と、
前記ホストコントローラ装置から出力される前記第１および第２のイベント情報を蓄積するシステムメモリと、
前記ホストコントローラ装置から出力される前記第１および第２の割り込み信号を受け取り、前記第１のおよび第２の割り込み信号に基づいて、前記システムメモリに蓄積されているイベント情報に基づくイベントを実行するプロセッサと、を備える情報処理装置。
【請求項７】
発生した第１および第２のイベント情報をシステムメモリへ出力する際に、
プロセッサに対して第１および第２の割り込み信号を出力するタイミングを示し、前記第１および第２のイベント情報にそれぞれ対応づけられた第１および第２の割り込み信号出力タイマが起動されているか否かを判定し、
第１の割り込み信号出力タイマがタイムアウトしたときに前記第２の割り込み信号出力タイマが起動していた場合には、
前記第１の割り込み信号出力タイマに対応づけられた前記第１のイベント情報を、前記第２の割り込み信号出力タイマに同期して、前記第２の割り込み信号出力タイマに対応付けられた前記第２のイベント情報とともに前記システムメモリへ出力する、イベント情報出力方法。
【請求項８】
前記第１および第２のイベント情報を前記システムメモリへ出力する際に、
前記システムメモリおよび前記プロセッサと、システムバスを介して情報の入出力を行うシステムインターフェース部を起動する、請求項７記載のイベント情報出力方法。
【請求項９】
前記第１および第２の割り込み信号出力タイマは、対応する前記第１および第２のイベント情報が前記システムメモリへ出力された後に起動され、
前記第１および第２の割り込み信号は、対応する前記第１および第２の割り込み信号出力タイマが満了した後に、前記システムメモリへ出力される請求項７記載のイベント情報出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムメモリに記録されているイベント情報にかかるイベントを、プロセッサに対して割り込み信号を出力することにより実行させるホストコントローラ装置に関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）デバイスが接続されるホスト装置は、ＵＳＢデバイスとの通信を制御するために、ＵＳＢホストコントローラを搭載している。ホスト装置は、例えばノート型パーソナルコンピュータ（以下、ノートＰＣと称する）等がある。ノートＰＣは、バッテリを用いて動作させることがあるため、省電力化が求められている。そのため、ノートＰＣに搭載するＵＳＢホストコントローラについても消費電力の削減が求められている。
【０００３】
特許文献１には、ホスト装置の内蔵スロットに接続されているＵＳＢデバイスが使用されているか否かを検出し、ＵＳＢデバイスが使用されていない場合、そのＵＳＢデバイスに関するＣＰＵへの割り込み信号の出力を停止することが記載されている。これにより、ホストコントローラの消費電力の削減を実現することができる。
【０００４】
特許文献２には、ＵＳＢホストコントローラは、データ転送を必要とするエンドポイントを特定することにより、特定したエンドポイントのみにデータ転送を行うことが記載されている。これにより、設定されているエンドポイント全てにデータ転送を行う場合と比較して、消費電力の削減が見込まれる。エンドポイントとは、ＵＳＢシステムバスにおいてデータ転送を行うために用いられる転送用バッファである。
【０００５】
特許文献３には、システムリセット信号と、レジュームリセット信号とのいずれかを選択して、選択信号をＵＳＢホストコントローラへ供給することが記載されている。システムリセット信号は、コンピュータシステムに電源が初期投入された場合に、コンピュータシステム全体をリセットする信号である。レジュームリセット信号は、サスペンド状態から通常状態へ復帰する際に発生し、サスペンドにより電源オフされているデバイスをリセットする信号である。これらの信号を切り替えて用いることにより、ＵＳＢホストコントローラが電源オフされていた場合には、レジュームリセット信号を用いることにより、通常状態へ復帰させることができる。これにより、ＵＳＢホストコントローラの低消費電力を実現することができる。
【０００６】
上述したように、ＵＳＢホストコントローラの省電力化を図るために様々な技術が用いられている。
【０００７】
ここで、非特許文献１には、ｘＨＣＩ（extensible Host Controller Interface for Universal Serial Bus）準拠ＵＳＢホストコントローラは、イベントが発生した場合、システムメモリ上のＥｖｅｎｔ  Ｒｉｎｇを更新することが記載されている。例えば、イベントとは、Ｄｏｗｎ  Ｐｏｒｔに接続されたＵＳＢデバイスの切断等により、接続状況が変化することである。ＵＳＢホストコントローラは、Ｅｖｅｎｔ  Ｒｉｎｇを更新した後に、ＣＰＵに対して割り込み通知を出力し処理を要求する。ただし、ＵＳＢホストコントローラからＣＰＵに対する割り込み通知の出力は、Ｉｎｔｅｒｒｕｐｔ  Ｍｏｄｅｒａｔｉｏｎ（以下、ＩＭＯＤと称する）によって定められた時間を空ける必要がある。そのため、ＵＳＢホストコントローラは、前回の割り込み通知の出力からＩＭＯＤ時間を経過していない場合、ＩＭＯＤ時間経過後に割り込み通知を出力する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−２０２９４３号公報
【特許文献２】特開２００９−０９３４１８号公報
【特許文献３】特開平１１−１９４８４７号公報
【非特許文献】
【０００９】
【非特許文献１】extensible Host Controller Interface for Universal Serial Bus (xHCI) Revision 1.0、 Intel Corporation、 2010年5月21日
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＵＳＢホストコントローラは、消費電力を減らすためにホストコントローラ内部のクロックを止め、システムバスがＰＣＩＥｘｐｒｅｓｓの場合には、Ｌｉｎｋ  ＳｔａｔｅをＬ１に遷移させる等の省電力モードを実行する。ここで、非特許文献１に記載されているＵＳＢホストコントローラは、Ｅｖｅｎｔ  Ｒｉｎｇを更新するために、システムメモリへアクセスを行う必要がある。そのため、ＵＳＢコントローラは、イベント発生毎に省電力モードから通常モードに復帰して、Ｅｖｅｎｔ  Ｒｉｎｇを更新してから再び省電力モードに戻るという動作を繰り返す。
【００１１】
しかし、ＵＳＢホストコントローラ上で発生するイベントは、ＩＭＯＤとは非同期に発生する。そのため、Ｅｖｅｎｔ  Ｒｉｎｇの更新は不定期に行われる。ＣＰＵがイベントの処理を開始するのはＩＭＯＤ時間経過後に割り込み信号が出力されるタイミングである。そのため、ＩＭＯＤ時間内のＥｖｅｎｔ  Ｒｉｎｇの更新のたびに省電力モードが解除されることにより、ＵＳＢホストコントローラにおいて無駄な電力が消費されるという問題が生じる。
【課題を解決するための手段】
【００１２】
本発明の第１の態様にかかるホストコントローラ装置は、発生したイベント情報をシステムメモリへ出力するイベント制御部と、前記システムメモリに記録されているイベントを実行するプロセッサに対して、前記イベント制御部から前記システムメモリへ出力されたイベントの実行を要求する割り込み信号を出力する割り込み制御部と、を備え、前記イベント制御部は、前記割り込み制御部が前記プロセッサに対して割り込み信号を出力するタイミングと同期して前記発生したイベント情報を前記システムメモリへ出力するものである。
【００１３】
このようなホストコントローラ装置を用いることにより、割り込み信号がプロセッサへ出力されるタイミングと同期して発生したイベント情報をシステムメモリへ出力することができる。これにより、イベント情報を出力することによるシステムメモリへのアクセス頻度を減少させることができるため、ホストコントローラ装置の省電力化を図ることができる。
【００１４】
本発明の第２の態様にかかる情報処理装置は、発生したイベント情報をシステムメモリへ出力するイベント制御部と、前記システムメモリに記録されているイベントを実行するプロセッサに対して、前記イベント制御部から前記システムメモリへ出力されたイベントの実行を要求する割り込み信号を出力する割り込み制御部と、を備え、前記イベント制御部は、前記割り込み制御部が前記プロセッサに対して割り込み信号を出力するタイミングと同期して前記発生したイベント情報を前記システムメモリへ出力するホストコントローラ装置と、前記ホストコントローラ装置から出力されるイベント情報を蓄積するシステムメモリと、前記ホストコントローラ装置から出力される割り込み信号を受け取り、前記割り込み信号に基づいて、前記システムメモリに蓄積されているイベント情報に基づくイベントを実行するプロセッサと、を備えるものである。
【００１５】
このような情報処理装置を用いることにより、割り込み信号がプロセッサへ出力されるタイミングと同期して発生したイベント情報をシステムメモリへ出力することができる。これにより、イベント情報を出力することによるシステムメモリへのアクセス頻度を減少させることができるため、情報処理装置の省電力化を図ることができる。
【００１６】
本発明の第３の態様にかかるイベント情報出力方法は、発生したイベント情報をシステムメモリへ出力する際に、プロセッサに対して割り込み信号を出力するタイミングを示す割り込み信号出力タイマが起動されているか否かを判定し、前記割り込み信号出力タイマが起動されている場合に、前記割り込み信号出力タイマに同期して前記発生したイベント情報を前記システムメモリへ出力するものである。
【００１７】
このようなイベント情報出力方法を用いることにより、割り込み信号がプロセッサへ出力されるタイミングと同期して発生したイベント情報をシステムメモリへ出力することができる。これにより、イベント情報を出力することによるシステムメモリへのアクセス頻度を減少させることができるため、このイベント情報出力方法に用いられるホストコントローラ装置の省電力化を図ることができる。
【発明の効果】
【００１８】
本発明により、省電力化を図りつつシステムメモリへイベント情報を出力することができるホストコントローラ装置、情報処理装置及びイベント情報出力方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態１にかかるホスト装置の構成図である。
【図２】実施の形態１にかかるＵＳＢホストコントローラの構成図である。
【図３】実施の形態１にかかるＵＳＢホストコントローラの動作を示す図である。
【図４】実施の形態１にかかるＵＳＢホストコントローラの動作を示す図である。
【図５】実施の形態１にかかるＵＳＢホストコントローラにおけるイベント情報通知処理のフローチャートである。
【図６】実施の形態２にかかるＵＳＢホストコントローラの構成図である。
【図７】実施の形態２にかかるＵＳＢホストコントローラの動作を示す図である。
【図８】実施の形態３にかかるＵＳＢホストコントローラの動作を示す図である。
【図９】実施の形態３にかかるＵＳＢホストコントローラにおけるイベント情報通知処理のフローチャートである。
【図１０】実施の形態４にかかるＵＳＢホストコントローラにおけるイベント情報通知処理のフローチャートである。
【発明を実施するための形態】
【００２０】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１を用いて本発明の実施の形態１にかかるホスト装置の構成例について説明する。ホスト装置１０は、例えば、パーソナルコンピュータや、ノートブック型パーソナルコンピュータ等であり、ＵＳＢデバイスを接続することができる装置である。
【００２１】
ホスト装置１０は、ＣＰＵ２０と、システムメモリ３０と、外部メモリ４０と、ＵＳＢホストコントローラ５０とを備えている。また、ＣＰＵ２０と、システムメモリ３０と、外部メモリ４０と、ＵＳＢホストコントローラ５０とは、システムバス１５を介して接続されている。
【００２２】
ＣＰＵ２０は、ホスト装置１０における情報処理を制御するプロセッサの一つの例である。ＣＰＵ２０は、システムメモリ３０に記録されている処理内容（処理プログラム）を実行する。システムメモリ３０は、例えば、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等により構成される。外部メモリ４０は、例えば、ハードディスク装置や、光ディスク装置等であってもよい。外部メモリ４０には、テキストデータや、音声データ、動画データ等が記録されていてもよい。
【００２３】
ＵＳＢホストコントローラ５０は、ホスト装置１０にＵＳＢデバイス装置を接続するために用いられる。ＵＳＢホストコントローラ５０は、ＣＰＵ２０から出力された信号もしくはデータ等をＵＳＢデバイス装置へ出力し、ＵＳＢデバイス装置から出力された信号もしくはデータをＣＰＵ２０又はシステムメモリ３０へ出力する。つまり、ＵＳＢホストコントローラ５０は、ＣＰＵ２０及びシステムメモリ３０と、ＵＳＢデバイス装置との間の通信を仲介する。
【００２４】
続いて、図２を用いて本発明の実施の形態１にかかるＵＳＢホストコントローラ５０の構成例について説明する。ＵＳＢホストコントローラ５０は、ＵＳＢインタフェース部５１と、外部インタフェース部５２と、電力制御部５３と、割り込み制御部５４と、ＩＭＯＤタイマ保持部５５と、イベント制御部５６と、イベント抽出部５７と、イベントバッファ５８と、システムインタフェース部５９と、を備えている。
【００２５】
ＵＳＢインタフェース部５１は、Ｄｏｗｎｐｏｒｔに接続されたＵＳＢデバイス装置とデータ転送を行う。具体的には、ホスト装置１０からＵＳＢデバイス装置へのデータ転送、及び、ＵＳＢデバイス装置からホスト装置１０へのデータ転送は、ＵＳＢインタフェース部５１を介して行われる。ホスト装置１０とＵＳＢデバイス装置との間において転送されるデータは、テキストデータや、映像データ等であってもよく、ＵＳＢデバイス装置の動作を制御するために用いられる制御データ等であってもよい。ＵＳＢインタフェース部５１は、例えば、ＵＳＢデバイス装置からホスト装置１０に対するデータ転送が発生した場合に、イベント情報をイベント制御部５６へ出力する。
【００２６】
外部インタフェース部５２は、例えば、ＵＳＢデバイス装置に対する電力制御（ＶＢＵＳ制御）を行うために用いられる。外部インタフェース部５２は、ＵＳＢホストコントローラ５０にＵＳＢデバイス装置が接続されたこと、及び、ＵＳＢデバイス装置との接続が解除されたことを検出する。また、外部インタフェース部５２は、ＵＳＢデバイス装置が接続されている状態において、ＵＳＢホストコントローラ５０とＵＳＢデバイス装置との間に発生した障害等も検出する。外部インタフェース部５２は、ＵＳＢデバイス装置との接続、接続解除又はＵＳＢデバイス装置との間の障害を検出した場合、イベント情報をイベント制御部５６へ出力する。
【００２７】
電力制御部５３は、ＵＳＢホストコントローラ５０内のそれぞれの構成要素に対する電力供給を制御する。例えば、電力制御部５３は、ＵＳＢホストコントローラ５０が低消費電力モードもしくは省電力モードに遷移した場合に、それぞれの構成要素に対する電力供給を停止もしくは供給する電力量を減少させる。
【００２８】
割り込み制御部５４は、割り込み信号を、システムインタフェース部５９を介してＣＰＵ２０へ出力する。割り込み信号は、ＵＳＢホストコントローラ５０において発生したイベントの処理を要求するために、ＣＰＵ２０へ出力される信号である。ＣＰＵ２０は、割り込み信号を受け取ると、システムメモリ３０に記録されているイベント情報にかかる処理を実行する。
【００２９】
割り込み制御部５４は、ＩＭＯＤタイマ保持部５５を有している。ＩＭＯＤタイマ保持部５５は、割り込み信号の出力タイミングを示すＩＭＯＤタイマを保持している。割り込み制御部５４は、ＩＭＯＤタイマにより定められた期間が経過した後に、割り込み信号をＣＰＵ２０へ出力することができる。これにより、ＩＭＯＤタイマにより定められた期間内は、ＣＰＵ２０に対して割り込み信号が通知されることはない。そのため、ＣＰＵ２０が割り込み信号を受け取る頻度を減少させることができるため、ＣＰＵ２０の処理負荷を抑制することができる。さらに、割り込み制御部５４は、ＩＭＯＤタイマに関する情報をイベント制御部５６へ出力する。
【００３０】
ＩＭＯＤタイマは、割り込み制御部５４から割り込み信号が出力されたタイミング、つまり、割り込み制御部５４から割り込み信号が出力された直後に起動される。ＩＭＯＤタイマは、予め定められた期間が経過すると、タイムアウトする。割り込み制御部５４は、ＩＭＯＤタイマが起動されていない状態において、イベント制御部５６からイベント発生に関する情報を受け取ると、割り込み信号を出力する。また、割り込み制御部５４は、ＩＭＯＤタイマが起動されている状態において、イベント制御部５６からイベント発生に関する情報を受け取ると、ＩＭＯＤタイマがタイムアウトした後に、割り込み信号を出力する。
【００３１】
イベント制御部５６は、イベント抽出部５７と、イベントバッファ５８と、を有している。イベントバッファ５８は、ＵＳＢインタフェース部５１及び外部インタフェース部５２から出力されたイベント情報を受け取り、蓄積する。また、イベントバッファ５８は、ＵＳＢインタフェース部５１及び外部インタフェース部５２以外からもＵＳＢホストコントローラ５０内において発生したイベント情報を受け取り、蓄積してもよい。
【００３２】
イベント抽出部５７は、イベントバッファ５８に蓄積されたイベント情報を抽出し、システムインタフェース部５９を介してシステムメモリ３０へ出力する。システムメモリ３０は、イベント情報を蓄積する領域（以下、Ｅｖｅｎｔ  Ｒｉｎｇと称する）を有しており、イベント抽出部５７から出力されたイベント情報は、Ｅｖｅｎｔ  Ｒｉｎｇに蓄積される。システムメモリ３０は、イベント抽出部５７からイベント情報を受け取る毎に、Ｅｖｅｎｔ  Ｒｉｎｇを更新して、受け取ったイベント情報を蓄積する。
【００３３】
イベント抽出部５７は、ＩＭＯＤタイマ保持部５５から出力されたＩＭＯＤタイマに関する情報を受け取る。ＩＭＯＤタイマに関する情報には、ＩＭＯＤタイマが起動されているか否かに関する情報、及び、ＩＭＯＤタイマがタイムアウトするタイミング情報等が含まれる。
【００３４】
イベント抽出部５７は、ＩＭＯＤタイマが起動されていない場合には、イベントバッファ５８に蓄積されているイベント情報を抽出し、システムメモリ３０へ出力する。イベント抽出部５７は、ＩＭＯＤタイマが起動されており、ＩＭＯＤタイマがタイムアウトしていない場合には、イベント情報をシステムメモリ３０へ出力しない。つまり、イベント情報は、一定期間イベントバッファ５８に蓄積された状態となる。イベント抽出部５７は、ＩＭＯＤタイマが起動されており、ＩＭＯＤタイマがタイムアウトした場合には、イベントバッファ５８に蓄積されているイベント情報を抽出し、システムメモリ３０へ出力する。
【００３５】
システムインタフェース部５９は、システムバス１５と接続されている。システムインタフェース部５９は、ホスト装置１０からシステムバス１５を介して出力されたデータを受け取る。また、システムインタフェース部５９は、割り込み制御部５４から出力される割り込み信号及びイベント制御部５６から出力されるイベント情報を、システムバス１５を介して、ＣＰＵ２０及びシステムメモリ３０へ出力する。
【００３６】
システムインタフェース部５９は、ホスト装置１０とＵＳＢホストコントローラ５０との間におけるデータ転送が発生しない場合、つまり、システムバス１５にデータが流れない状態の場合、消費電力を抑えるために、低消費電力モードに遷移する。低消費電力モードは、省電力モードと称されてもよい。システムインタフェース部５９は、低消費電力モードと、通常電力モードとのいずれかのモードが設定され動作する。低消費電力モードは、通常電力モードと比較して少ない消費電力により動作し、電力が供給されずに動作が停止している状態も含む。通常電力モードは、低消費電力モードと比較して多い消費電力により動作する。さらに、低消費電力モードと通常電力モードとの間に、消費する電力量に応じて、複数のモードが設定されてもよい。
【００３７】
システムインタフェース部５９は、電力制御部５３から電力の供給を受ける。システムインタフェース部５９は、例えば、ＣＰＵ２０又はシステムメモリ３０へ出力するデータがある場合にのみ、通常電力モードにより動作し、その他の場合は、低消費電力モードで動作してもよい。この場合、電力制御部５３は、割り込み制御部５４から、割り込み信号が出力される旨のメッセージを受けた場合に、システムインタフェース部５９に電力を供給し通常電力モードに遷移させてもよい。さらに、電力制御部５３は、イベント制御部５６からイベント情報を出力する旨のメッセージを受けた場合に、システムインタフェース部５９に電力を供給し通常電力モードに遷移させてもよい。電力制御部５３は、割り込み制御部５４及びイベント制御部５６から割り込み信号及びイベント情報が出力される旨のメッセージを受けていない場合、システムインタフェース部５９に対して供給する電力を減らす、もしくは、停止して低消費電力モードに遷移させてもよい。
【００３８】
続いて、図３を用いて本発明の実施の形態１にかかるＵＳＢホストコントローラ５０の動作例について説明する。図３において、Ｐｏｗｅｒ  Ｍｏｄｅとは、システムインタフェース部５９が動作するモードを示している。Ｌｏｗは、低消費電力モードを示しており、Ｎｏｒｍａｌは、通常電力モードを示している。また、図３は、イベントＡ、Ｂ、Ｃ、Ｄが発生し、イベントバッファ５８に蓄積されている状態を示している。
【００３９】
はじめに、イベントＡが発生した状態では、ＩＭＯＤタイマは起動されていない。そのため、イベント制御部５６は、イベントＡに関する情報をシステムメモリ３０へ出力し、Ｅｖｅｎｔ  Ｒｉｎｇを更新する。この時、システムインタフェース部５９は、通常電力モードにより動作している。割り込み制御部５４は、イベントＡに関する情報が出力された後に割り込み信号（Ｉｎｔｅｒｒｕｐｔ）をＣＰＵ２０へ出力し、ＩＭＯＤタイマを起動させる。
【００４０】
ＣＰＵ２０は、割り込み信号を受け取ると、システムメモリ３０に蓄積されているイベントＡに関する処理を実行する。システムインタフェース部５９は、割り込み信号及びイベント情報が出力されなくなると、通常電力モードから低消費電力モードへ遷移する。
【００４１】
イベントＢが発生した状態では、ＩＭＯＤタイマが起動されており、ＩＭＯＤタイマは、タイムアウトしていない。そのため、イベントＢに関する情報は、イベントバッファ５８に蓄積され、システムメモリ３０へ出力されない。イベントＣ及びＤについても同様に、システムメモリ３０へ出力されず、イベントバッファ５８に蓄積される。ＩＭＯＤタイマが、タイムアウトした後に、イベント抽出部５７は、イベントＢ、Ｃ及びＤに関する情報をシステムメモリ３０へ出力し、Ｅｖｅｎｔ  Ｒｉｎｇを更新する。この時、システムインタフェース部５９は、低消費電力モードから通常電力モードに遷移して動作している。
【００４２】
割り込み制御部５４は、イベントＢ、Ｃ及びＤに関する情報が出力されたことにより、割り込み信号をＣＰＵ２０へ出力する。割り込み制御部５４から割り込み信号が出力されることにより、再度ＩＭＯＤタイマが起動される。
【００４３】
ここで、図４を用いて、本発明を適用する前における、イベントが発生するたびにＥｖｅｎｔ  Ｒｉｎｇが更新される動作例について説明する。図４においては、イベントＢ、Ｃ及びＤの発生に伴い、イベント抽出部５７は、イベント情報をシステムメモリ３０に出力し、Ｅｖｅｎｔ  Ｒｉｎｇを更新する。そのため、システムインタフェース部５９は、イベント情報がシステムメモリ３０へ出力されるたびに、通常電力モードに遷移している。図４においては、図３と比較して、システムインタフェース部５９が通常電力モードにて動作している期間が長い。そのため、本発明を用いることにより、システムインタフェース部５９の省電力化を図れることは明らかである。
【００４４】
続いて、図５を用いて本発明の実施の形態１にかかるＵＳＢホストコントローラ５０におけるイベント情報通知処理の流れについて説明する。はじめに、ＵＳＢインタフェース部５１及び外部インタフェース部５２から発生したイベント情報がイベント制御部５６へ出力される（Ｓ１１）。ＵＳＢインタフェース部５１及び外部インタフェース部５２から出力されたイベント情報は、イベントバッファ５８に蓄積される。
【００４５】
次に、イベント抽出部５７は、ＩＭＯＤタイマが起動中であるか否かを判定する（Ｓ１２）。ＩＭＯＤタイマが起動中であるか否かは、割り込み制御部５４から出力されるＩＭＯＤタイマに関する情報に含まれている。イベント抽出部５７は、ＩＭＯＤタイマが起動中であると判定した場合、イベント情報を抽出せず、イベント情報をイベントバッファ５８へ格納した状態にしておく（Ｓ１３）。
【００４６】
次に、イベント抽出部５７は、ＩＭＯＤタイマがタイムアウトしているか否かを判定する（Ｓ１４）。ＩＭＯＤタイマがタイムアウトしているか否かは、割り込み制御部５４から出力されるＩＭＯＤタイマに関する情報に含まれている。イベント抽出部５７は、ＩＭＯＤタイマが、タイムアウトしていると判定した場合、イベントバッファ５８から蓄積されているイベント情報を抽出し、システムメモリ３０へ出力する（Ｓ１５）。
【００４７】
次に、割り込み制御部５４は、システムメモリ３０へ出力されたイベント情報を実行させるために、ＣＰＵ２０へ割り込み信号を出力する（Ｓ１６）。次に、割り込み制御部５４は、ＩＭＯＤタイマを起動する（Ｓ１７）。
【００４８】
ステップＳ１２において、イベント抽出部５７は、ＩＭＯＤタイマが起動していないと判定した場合、ステップＳ１３及び１４の処理を行わず、ステップＳ１５の処理を実行する。また、ステップＳ１４において、ＩＭＯＤタイマがタイムアウトしていないと判定した場合、ステップＳ１３の処理を繰り返す。
【００４９】
以上説明したように、本発明の実施の形態１にかかるＵＳＢホストコントローラ５０を用いることにより、割り込み信号を出力するタイミングと同期して、イベント情報がシステムメモリ３０へ出力される。つまり、複数のイベント情報がイベントバッファ５８に蓄積されている場合、ＩＭＯＤタイマがタイムアウトした後に、まとめて複数のイベント情報がシステムメモリ３０へ出力される。そのため、ＵＳＢホストコントローラ５０からシステムメモリ３０に対してアクセスする頻度が減少する。これにより、システムインタフェース部５９を通常電力モードにて動作させる時間を減らし、低消費電力モードにて動作させる時間を増加させることができるため、ＵＳＢホストコントローラ５０の低消費電力化を実現することができる。
【００５０】
（実施の形態２）
続いて、図６を用いて本発明の実施の形態２にかかるＵＳＢホストコントローラ６０の構成例について説明する。ＵＳＢホストコントローラ６０は、ＵＳＢインタフェース部５１と、外部インタフェース部５２と、電力制御部５３と、システムインタフェース部５９と、割り込み制御部６１と、イベント制御部６３とを備えている。ＵＳＢインタフェース部５１と、外部インタフェース部５２と、電力制御部５３と、システムインタフェース部５９とは、図２において説明したＵＳＢホストコントローラ５０に備えられている構成と同じであるため、詳細な説明を省略する。
【００５１】
図６における割り込み制御部６１は、複数のＩＭＯＤタイマ保持部６２を有する。また、イベント制御部６３は、イベント抽出部６４と、複数のイベントバッファ６５とを有する。ＩＭＯＤタイマ保持部６２は、それぞれのイベントバッファ６５におけるＩＭＯＤタイマを保持する。そのため、割り込み制御部６１は、イベントバッファ６５と同じ数のＩＭＯＤタイマ保持部６２を有している。もしくは、ひとつのＩＭＯＤタイマ保持部６２が、複数のＩＭＯＤタイマを管理してもよい。
【００５２】
イベント抽出部６４は、複数のイベントバッファ６５それぞれからイベント情報を抽出して、システムメモリ３０へ出力する。ここで、図７を用いてＵＳＢホストコントローラ６０の動作例について説明する。図７は、イベント制御部６３が、二つのイベントバッファ６５を有する例を示している。二つのイベントバッファを、イベントバッファＡ、イベントバッファＢとして説明する。また、イベントバッファＡにおいて用いられるＩＭＯＤタイマをＩＭＯＤタイマＡとし、イベントバッファＢにおいて用いられるＩＭＯＤタイマをＩＭＯＤタイマＢとする。
【００５３】
イベントバッファＡにおいて、ＩＭＯＤタイマＡが起動される前に発生したイベントＡは、即座にシステムメモリ３０へ出力され、ＣＰＵ２０に対して割り込み信号も出力される。割り込み信号が出力された後、ＩＭＯＤタイマＡが起動される。ＩＭＯＤタイマＡが起動中に発生したイベントＢ、Ｃ、Ｄは、ＩＭＯＤタイマＡがタイムアウトした後にまとめてシステムメモリ３０へ出力され、Ｅｖｅｎｔ  Ｒｉｎｇ  Ａが更新される。Ｅｖｅｎｔ  Ｒｉｎｇ  Ａが更新された後に、ＣＰＵ２０に対して割り込み信号が通知され、再びＩＭＯＤタイマＡが起動される。
【００５４】
イベントバッファＢにおいては、すでにＩＭＯＤタイマＢが起動されている状態を示している。ＩＭＯＤタイマＢが起動中に発生したイベントｂ、ｃ、ｄは、ＩＭＯＤタイマＢがタイムアウトした後にまとめてシステムメモリ３０へ出力される。これにより、Ｅｖｅｎｔ  Ｒｉｎｇ  Ｂが更新される。上述したＥｖｅｎｔ  Ｒｉｎｇ  Ａは、イベントバッファＡに蓄積されていたイベント情報を蓄積する領域であり、Ｅｖｅｎｔ  Ｒｉｎｇ  Ｂは、イベントバッファＢに蓄積されていたイベント情報を蓄積する領域である。
【００５５】
図７においては、ＩＭＯＤタイマＡと、ＩＭＯＤタイマＢとは異なるタイミングにて動作している。これは、イベントバッファＡ及びＢに保持されるイベントが、任意のタイミングで発生し、これに伴い、ＩＭＯＤタイマＡとＩＭＯＤタイマＢとがそれぞれ異なるタイミングに起動されるからである。
【００５６】
以上説明したように、本発明の実施の形態２にかかるＵＳＢホストコントローラ６０を用いることにより、複数のイベントバッファを有する場合においても、それぞれのイベントバッファ毎にＩＭＯＤタイマを管理することができる。そのため、ＵＳＢホストコントローラ６０からシステムメモリ３０に対してアクセスする頻度が減少する。これにより、システムインタフェース部５９を通常電力モードにて動作させる時間を減らし、低消費電力モードにて動作させる時間を増加させることができるため、ＵＳＢホストコントローラ６０の低消費電力化を実現することができる。
【００５７】
（実施の形態３）
続いて、図８を用いて本発明の実施の形態３にかかるＵＳＢホストコントローラの動作例について説明する。実施の形態３にかかるＵＳＢホストコントローラは、図６のＵＳＢホストコントローラ６０を用いる。
【００５８】
本図においては、イベントバッファＢのＩＭＯＤタイマＢが、ＩＭＯＤタイマＡよりも先に起動している状態を示している。実施の形態２では、イベントバッファＢにおいて、ＩＭＯＤタイマＢが起動中に発生したイベントｂ、ｃ、ｄは、ＩＭＯＤタイマＢがタイムアウトされると、システムメモリ３０に出力される。これに対して、実施の形態３においては、イベントバッファＢに蓄積されているイベントｂ、ｃ、ｄは、ＩＭＯＤタイマＢではなく、ＩＭＯＤタイマＡがタイムアウトされた後に、システムメモリ３０に出力される。つまり、ＩＭＯＤタイマＡが起動中に発生したイベントＢ、Ｃ、Ｄと、イベントｂ、ｃ、ｄが、同じタイミングにシステムメモリ３０へ出力される。また、これに伴い、割り込み信号も同じタイミングにＣＰＵ２０へ出力される。
【００５９】
続いて、図９を用いて本発明の実施の形態３にかかるＵＳＢホストコントローラ５０におけるイベント情報通知処理の流れについて説明する。はじめに、ＵＳＢインタフェース部５１及び外部インタフェース部５２において発生したイベント情報がイベント制御部５６へ出力される（Ｓ２１）。ここでは、イベントバッファＢに蓄積されるべきイベント情報が発生したとする。そのため、発生したイベント情報は、イベントバッファＢに蓄積される。
【００６０】
次に、イベント抽出部６４は、ＩＭＯＤタイマＢが起動中であるか否かを判定する（Ｓ２２）。ＩＭＯＤタイマＢが起動中であるか否かは、割り込み制御部６１から出力されるＩＭＯＤタイマＢに関する情報に含まれている。イベント抽出部６４は、ＩＭＯＤタイマＢが起動中であると判定した場合、イベント情報を抽出せず、イベント情報をイベントバッファへＢ格納した状態にしておく（Ｓ２３）。
【００６１】
次に、イベント抽出部６４は、ＩＭＯＤタイマＡが起動中であるか否かを判定する（Ｓ２４）。ＩＭＯＤタイマＡが起動中であるか否かは、割り込み制御部６１から出力されるＩＭＯＤタイマＡに関する情報に含まれている。イベント抽出部６４は、ＩＭＯＤタイマＡが起動中であると判定した場合、イベントバッファＡにイベント情報が蓄積されているか否かを判定する（Ｓ２５）。
【００６２】
イベント抽出部６４は、イベントバッファＡにイベント情報が蓄積されていると判定した場合、ＩＭＯＤタイマＡとＩＭＯＤタイマＢとのタイムアウトタイミングが、所定期間内にあるか否かを判定する（Ｓ２６）。具体的には、ＩＭＯＤタイマＡが、ＩＭＯＤタイマＢがタイムアウトした後、予め定めた期間が経過する前までにタイムアウトするか否かを判定する。
【００６３】
イベント抽出部６４は、ＩＭＯＤタイマＡとＩＭＯＤタイマＢのタイムアウトタイミングが、所定期間内にあると判定した場合、イベントバッファＢに蓄積されているイベント情報を、ＩＭＯＤタイマＢがタイムアウトし、さらにＩＭＯＤタイマＡがタイムアウトした後に、システムメモリ３０へ出力する（Ｓ２７）。つまり、イベント抽出部６４は、イベントバッファＢに蓄積されているイベント情報を、ＩＭＯＤタイマＢがタイムアウトした後ではなく、ＩＭＯＤタイマＡがタイムアウトした後に、システムメモリ３０へ出力する。
【００６４】
次に、割り込み制御部６１は、ＣＰＵ２０に対して割り込み信号を出力した後に、ＩＭＯＤタイマＢを再び起動する（Ｓ２８）。また、割り込み制御部６１は、ＩＭＯＤタイマＢと共に、ＩＭＯＤタイマＡも再び起動する。
【００６５】
ステップＳ２２において、イベント抽出部６４は、ＩＭＯＤタイマＢが起動中ではないと判定した場合、イベントバッファＢに蓄積されているイベント情報をシステムメモリ３０へ出力する（Ｓ２９）。次に、割り込み制御部６１は、ＣＰＵ２０に対して割り込み信号を出力した後に、ＩＭＯＤタイマＢを起動する（Ｓ３０）。
【００６６】
ステップＳ２４において、イベント抽出部６４は、ＩＭＯＤタイマＡが起動中ではないと判定した場合、ＩＭＯＤタイマＢがタイムアウトした後に、イベントバッファＢに蓄積されているイベント情報をシステムメモリ３０へ出力する（Ｓ３１）。次に、次に、割り込み制御部６１は、ＣＰＵ２０に対して割り込み信号を出力した後に、ＩＭＯＤタイマＢを起動する（Ｓ３２）。
【００６７】
ステップＳ２５において、イベント抽出部６４は、イベントバッファＡにイベント情報が蓄積されていないと判定した場合、ステップＳ３１の処理を実行する。また、ステップＳ２６において、イベント抽出部６４は、ＩＭＯＤタイマＡとＩＭＯＤタイマＢのタイムアウトタイミングが、所定期間内にないと判定した場合もステップＳ３１の処理を実行する。
【００６８】
上述したように、ステップＳ２４において、ＩＭＯＤタイマＡが起動中か否かを判定することにより、イベントバッファＢに蓄積された情報を、ＩＭＯＤタイマＡがタイムアウトした後にイベント情報を出力するか、ＩＭＯＤタイマＢがタイムアウトした後にイベント情報を出力するかを選択することができる。
【００６９】
また、ＩＭＯＤタイマＡが起動中であっても、イベントバッファＡにイベント情報が蓄積されていなければ、ＩＭＯＤタイマＡがタイムアウトした後に、イベントバッファＡに蓄積されたイベント情報がシステムメモリ３０へ出力されることはない。そのため、ステップＳ２５において、イベントバッファＡにイベント情報が蓄積されているか否かを判定して、イベントバッファＢに蓄積された情報を、ＩＭＯＤタイマＡがタイムアウトした後にイベントバッファＡに蓄積されているイベント情報とともに出力するか、ＩＭＯＤタイマＢがタイムアウトした後に出力するかを選択する。
【００７０】
さらに、ＩＭＯＤタイマＡが起動中であり、イベントバッファＡにイベント情報が蓄積されている場合においても、ＩＭＯＤタイマＢがタイムアウトした後、ＩＭＯＤタイマＡがタイムアウトするまでに長い時間経過すると、イベントバッファＢに蓄積されたイベント情報の処理が長期間実行されず放置されてしまうという問題がある。そのため、ステップＳ２６において、ＩＭＯＤタイマＢがタイムアウトした後、イベントバッファＢに蓄積されているイベント情報の処理が実行されないまま放置することができる許容時間内に、ＩＭＯＤタイマＡがタイムアウトするか否かを判定する。
【００７１】
以上説明したように、本発明の実施の形態２におけるＵＳＢホストコントローラ６０の動作例と比較して、システムインタフェース部５９を低消費電力モードにて動作させる時間を増加させることができ。そのため、実施の形態２におけるＵＳＢホストコントローラと比較して、さらに低消費電力化を実現することができる。
【００７２】
（実施の形態４）
続いて、図１０を用いて本発明の実施の形態４にかかるＵＳＢホストコントローラの動作例について説明する。実施の形態４にかかるＵＳＢホストコントローラは、図２のＵＳＢホストコントローラ５０を用いる。
【００７３】
ステップＳ４１乃至Ｓ４３までの処理は、図５におけるステップＳ１１乃至Ｓ１３までの処理と同様であるため、詳細な説明を省略する。次に、イベント抽出部５７は、イベントバッファ５８に蓄積されたイベント情報が、所定数以上であるか否かを判定する（Ｓ４４）。イベントバッファ５８が閾値として用いる所定数については、任意の値に変更することができる。イベント抽出部５７は、イベントバッファ５８に蓄積されたイベント情報が所定数以上ではないと判定した場合、ＩＭＯＤタイマがタイムアウトしているか否かを判定する（Ｓ４５）。
【００７４】
ＩＭＯＤタイマがタイムアウトしているか否かは、割り込み制御部５４から出力されるＩＭＯＤタイマに関する情報に含まれている。イベント抽出部５７は、ＩＭＯＤタイマが、タイムアウトしていないと判定した場合、ステップＳ４５の処理を繰り返し実行する。イベント抽出部５７は、ＩＭＯＤタイマが、タイムアウトしていると判定した場合、イベントバッファ５８から蓄積されているイベント情報を抽出し、システムメモリ３０へ出力する（Ｓ４６）。
【００７５】
ステップＳ４２において、イベント抽出部５７は、ＩＭＯＤタイマが動作中でではないと判定した場合、ステップＳ４３乃至Ｓ４５の処理を実行せず、ステップＳ４６の処理を実行する。また、ステップＳ４４において、イベント抽出部５７は、イベントバッファ５８に蓄積されたイベント情報が、所定数以上であると判定した場合、ステップＳ４５の処理を実行せず、ステップＳ４６の処理を実行する。ステップＳ４７及びＳ４８の処理は、図５におけるステップＳ１６及びＳ１７の処理と同様であるため、詳細な説明を省略する。
【００７６】
以上説明したように、本発明の実施の形態４にかかるＵＳＢホストコントローラ５０は、イベントバッファ５８に蓄積されたイベント情報の数に応じて、システムメモリ３０に対してイベント情報を出力するか否かを判定することができる。ＵＳＢホストコントローラ５０からシステムメモリ３０に対して、まとめて大量のイベント情報が出力された場合に、システムバスを占有する時間が長くなる。これに対して、上述したように、イベントバッファ５８に蓄積されたイベント情報の数が、所定数に達した場合に、イベント抽出部５７は、ＩＭＯＤタイマがタイムアウトする前にイベントバッファ５８に蓄積されたイベント情報をシステムメモリ３０に出力することにより、システムバスを占有する時間を制御することができる。
【００７７】
ただし、イベントバッファ５８に蓄積されるイベント情報の数が所定数に達するまで、イベント抽出部５７からシステムメモリ３０に対してイベント情報が出力されない場合には、イベントバッファ５８に蓄積されたイベント情報にかかるイベントが実行されるまでの時間が長くなり、適切ではない。そのため、イベントバッファ５８に蓄積されたイベント情報が所定数に達していない場合においても、ＩＭＯＤタイマがタイムアウトしたか否かを判定し、ＩＭＯＤタイマがタイムアウトした場合には、イベント抽出部５７は、システムメモリ３０に対してイベント情報を出力することができる。
【００７８】
このようにすることにより、システムインタフェース部５９を低消費電力モードにて動作させる時間を増加させるとともに、システムバスの占有時間と、それぞれのイベント情報にかかるイベントが実行されるまでの時間とのバランスを調整することができる。
【００７９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態４における、イベントバッファ５８に蓄積されたイベント情報の数に応じて、イベント抽出部５７からシステムメモリ３０に対してイベント情報が出力可否を決定する処理を、実施の形態３及び４において実行してもよい。
【符号の説明】
【００８０】
１０  ホスト装置
１５  システムバス
２０  ＣＰＵ
３０  システムメモリ
４０  外部メモリ
５０  ＵＳＢホストコントローラ
５１  ＵＳＢインタフェース部
５２  外部インタフェース部
５３  電力制御部
５４  割り込み制御部
５５  ＩＭＯＤタイマ保持部
５６  イベント制御部
５７  イベント抽出部
５８  イベントバッファ
５９  システムインタフェース部
６０  ＵＳＢホストコントローラ
６１  割り込み制御部
６２  ＩＭＯＤタイマ保持部
６３  イベント制御部
６４  イベント抽出部
６５  イベントバッファ
【図１】
0005681576.tif 000002
【図２】
0005681576.tif 000003
【図３】
0005681576.tif 000004
【図４】
0005681576.tif 000005
【図５】
0005681576.tif 000006
【図６】
0005681576.tif 000007
【図７】
0005681576.tif 000008
【図８】
0005681576.tif 000009
【図９】
0005681576.tif 000010
【図１０】
0005681576.tif 000011