(57)【特許請求の範囲】
【請求項１】
第１のデスクリプタに含まれる第１の状態情報に従い選択したエントリに示される、記憶部上の第１の領域に対するデータの書き込みおよび読み出しのうち少なくとも書き込みを行う第１の入出力部と、
第２のデスクリプタに含まれる第２の状態情報に従い選択したエントリに示される前記記憶部上の第２の領域に対するデータの書き込みおよび読み出しのうち少なくとも読み出しを行う第２の入出力部と、
前記第１の領域を示す情報と、該第１の領域を示す情報が格納されるエントリの状態を示す前記第１の状態情報とを含む前記第１のデスクリプタと、前記第２の領域を示す情報と、該第２の領域を示す情報が格納されるエントリの状態を示す前記第２の状態情報とを含む第２のデスクリプタとを、前記第１の入出力部が前記書き込みを行うデータを待機している期間に作成する作成部と、
前記第１の入出力部による前記第１の領域に対するデータの前記書き込みに応じて前記第１の状態情報を更新し、前記第２の入出力部による前記第２の領域に対するデータの前記読み出しに応じて前記第２の状態情報を更新する更新部と、
前記第１のデスクリプタおよび前記第２のデスクリプタの作成を完了した前記作成部の動作を抑制し、前記第１の入出力部の前記記憶部に対するデータの書き込みが終了した場合に該第１の入出力部の動作を抑制し、前記第２の入出力部の前記記憶部に対するデータの読み出しが終了した場合に該第２の入出力部の動作を抑制する間欠制御部と
を有する
ことを特徴とする情報処理装置。
【請求項２】
前記第１の状態情報および前記第２の状態情報は、
前記エントリの情報が無効であることを示す第１の状態と、
前記エントリの情報が有効であることを示す第２の状態と
を含み、
前記第２の状態情報は、データの読み出し待ちを示す第３の状態をさらに含み、
前記第２の入出力部は、
データの読み出しを行う場合には前記第３の状態の前記第２の状態情報を選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の入出力部および前記第２の入出力部が動作を抑制された状態から復帰する復帰手順を保持する復帰手順保持部と、
前記間欠制御部により動作が抑制された前記第１の入出力部および前記第２の入出力部を、前記復帰手順保持部に保持される前記復帰手順に従い、動作が抑制された状態から復帰させる復帰制御部と
をさらに有する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
第１のデスクリプタに含まれる、記憶部上の第１の領域を示す情報が格納されるエントリの状態を示す第１の状態情報に従い選択したエントリに示される該第１の領域に対するデータの書き込みおよび読み出しのうち少なくとも書き込みを行う第１の入出力部と、
第２のデスクリプタに含まれる、前記記憶部上の第２の領域を示す情報が格納されるエントリの状態を示す第２の状態情報に従い選択したエントリに示される該第２の領域に対するデータの書き込みおよび読み出しのうち少なくとも読み出しを行う第２の入出力部と、
前記第１の入出力部による前記第１の領域に対するデータの書き込みに応じて前記第１の状態情報を更新し、前記第２の入出力部による前記第２の領域に対するデータの読み出しに応じて前記第２の状態情報を更新する更新部と、
前記第１のデスクリプタおよび前記第２のデスクリプタを作成する作成部と、
前記第１のデスクリプタおよび前記第２のデスクリプタの作成を完了した前記作成部の動作を抑制し、前記第１の入出力部の前記記憶部に対するデータの書き込みが終了した場合に該第１の入出力部の動作を抑制し、前記第２の入出力部の前記記憶部に対するデータの読み出しが終了した場合に該第２の入出力部の動作を抑制する間欠制御部と
を有するコンピュータに、
前記第１のデスクリプタおよび前記第２のデスクリプタを、前記第１の入出力部が前記記憶部に対して前記書き込みを行うデータを待機している期間に前記作成部に作成させるステップを実行させるためのプログラム。
【請求項５】
第１のデスクリプタに含まれる第１の状態情報に従い選択したエントリに示される、記憶部上の第１の領域に対するデータの書き込みおよび読み出しのうち少なくとも書き込みを行う第１の入出力ステップと、
第２のデスクリプタに含まれる第２の状態情報に従い選択したエントリに示される前記記憶部上の第２の領域に対するデータの書き込みおよび読み出しのうち少なくとも読み出しを行う第２の入出力ステップと、
前記第１の領域を示す情報と、該第１の領域を示す情報が格納されるエントリの状態を示す前記第１の状態情報とを含む前記第１のデスクリプタと、前記第２の領域を示す情報と、該第２の領域を示す情報が格納されるエントリの状態を示す前記第２の状態情報とを含む第２のデスクリプタとを、前記第１の入出力ステップが前記書き込みを行うデータを待機している期間に作成する作成ステップと、
前記第１の入出力ステップによる前記第１の領域に対するデータの前記書き込みに応じて前記第１の状態情報を更新し、前記第２の入出力ステップによる前記第２の領域に対するデータの前記読み出しに応じて前記第２の状態情報を更新する更新ステップと、
前記第１のデスクリプタおよび前記第２のデスクリプタの作成を完了した前記作成ステップの動作を抑制し、前記第１の入出力ステップによる前記記憶部に対するデータの書き込みが終了した場合に該第１の入出力ステップの動作を抑制し、前記第２の入出力ステップによる前記記憶部に対するデータの読み出しが終了した場合に該第２の入出力ステップの動作を抑制する間欠制御ステップと
を有する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、プログラムおよび情報処理方法に関する。
【背景技術】
【０００２】
情報処理装置内の各部を、必要に応じて起動または停止状態に制御し、情報処理装置全体の消費電力を抑制する制御の一つとして、間欠制御と呼ばれる制御方法が知られている。
【０００３】
間欠制御の一例として、ＣＰＵ(Central  Processing  Unit)が転送データの入出力に関する情報であるデスクリプタ情報を作成し、入力部および出力部がこのデスクリプタ情報を参照して転送データの入出力を制御する方法が知られている。
【０００４】
この制御方法によれば、ＣＰＵは、デスクリプタ情報を作成してから次のデスクリプタ情報を作成するまでの間、動作を停止させることができる。また、入力部は、デスクリプタ情報を参照して転送データをバッファメモリに格納した後、次の転送データの到来まで動作を停止させる。出力部は、転送データのバッファメモリへの書き込みが終了した時点で起動され、デスクリプタ情報を参照してバッファメモリに書き込まれた転送データを出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３７９２０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
各入出力部に対して間欠制御を行う場合、入出力処理のイベント（例えば、ネットワークからのフレーム受信）が発生する度に、ＣＰＵがデスクリプタ情報を作成することになる。したがって、入力処理のイベントの頻度に比例して、ＣＰＵ動作のオーバーヘッドが増加するため、スループットが低下するという問題点があった。
【０００７】
また、高い低消費電力効果を狙ってＣＰＵを停止させている場合には、デスクリプタ情報の作成などのためにＣＰＵを再スタートさせたり、さらには、必要に応じてオペレーティングシステムやミドルウェアなどを復帰させなければならないことが考えられる。この場合、オーバーヘッドの増加が顕著となってしまうという問題点があった。
【０００８】
一方、ＣＰＵを停止させるとスループットが低下する可能性が高くなるため、ＣＰＵに対して間欠制御を行わないことも考えられる。しかしこの場合、ＣＰＵが動作し続けることになるので、間欠制御による低消費電力化の効果が薄れてしまうという問題点があった。
【０００９】
本発明は、上記の問題を鑑みてなされたものであって、転送データの入出力処理に際してより効果的に低消費電力化を行うことを目的とする。
【課題を解決するための手段】
【００１０】
実施形態の情報処理装置は、作成部が、記憶部上の第１の領域を示す情報と、第１の領域を示す情報が格納されるエントリの状態を示す第１の状態情報とを含む第１のデスクリプタと、第２の領域を示す情報と、第２の領域を示す情報が格納されるエントリの状態を示す第２の状態情報とを含む第２のデスクリプタとを、第１の入出力部が書き込みを行うデータを待機している期間に作成する。更新部が、第１の入出力部による第１の領域に対するデータの書き込みに応じて第１の状態情報を更新し、第２の入出力部による第２の領域に対するデータの読み出しに応じて第２の状態情報を更新する。間欠制御部が、第１のデスクリプタおよび第２のデスクリプタの作成を完了した作成部の動作を抑制し、第１の入出力部の記憶部に対するデータの書き込みが終了した場合に第１の入出力部の動作を抑制し、第２の入出力部の記憶部に対するデータの読み出しが終了した場合に第２の入出力部の動作を抑制する。
【図面の簡単な説明】
【００１１】
【図１】図１は、既存技術による情報処理装置の一例の機能ブロック図である。
【図２】図２は、既存技術による状態フラグが取り得る値を示す略線図である。
【図３】図３は、既存技術による間欠制御の一例のフローチャートである。
【図４】図４は、既存技術によるデスクリプタ情報の例を示す略線図である。
【図５】図５は、第１の実施形態による情報処理装置の一例の機能ブロック図である。
【図６】図６は、第１の実施形態による状態フラグが取り得る値を示す略線図である。
【図７】図７は、第１の実施形態による間欠制御の一例のフローチャートである。
【図８】図８は、第１の実施形態によるデスクリプタ情報の例を示す略線図である。
【図９】図９は、第１の実施形態によるデスクリプタ情報の例を示す略線図である。
【図１０】図１０は、第１の実施形態によるデスクリプタ情報の例を示す略線図である。
【図１１】図１１は、第１の実施形態を適用可能な情報処理装置の一例の構成を示すブロック図である。
【図１２】図１２は、第２の実施形態による情報処理装置の一例の機能ブロック図である。
【図１３】図１３は、第２の実施形態による間欠処理の一例のフローチャートである。
【図１４】図１４は、第３の実施形態による情報処理装置の一例の機能ブロック図である。
【図１５】図１５は、第３の実施形態による間欠制御の一例のフローチャートである。
【発明を実施するための形態】
【００１２】
（既存技術）
以下に、各実施形態に係る情報処理装置について説明する。先ず、理解を容易とするために、既存の技術によるデータ転送方法を適用した情報処理装置について説明する。図１は、既存の技術による間欠制御を行う情報処理装置１００の機能を示す一例の機能ブロック図である。
【００１３】
情報処理装置１００は、第１入出力制御部１０１、第２入出力制御部１０２、第１入出力部１０３、第２入出力部１０４、間欠制御部１０５および記憶部１０６を有する。記憶部１０６は、コンピュータなどにおけるメインメモリに相当し、第１入出力デスクリプタ情報１１０および第２入出力デスクリプタ情報１１２が記憶されると共に、データを一時的に格納するデータバッファ１１１が設けられる。
【００１４】
第１入出力部１０３は、情報処理装置１００のデータの入出力を行うインターフェイス機能を提供する。第１入出力部１０３の具体的な例としては、ネットワークインターフェイスのコントローラが挙げられる。第１入出力部１０３は、ＤＭＡＣ(Direct  Memory  Access  Controller)を有する。
【００１５】
記憶部１０６に格納される第１入出力デスクリプタ情報１１０は、第１入出力部１０３のＤＭＡＣから参照されるもので、このＤＭＡＣがデータ転送を行う上で必要となる情報を含む。より具体的には、第１入出力デスクリプタ情報１１０は、例えば書き込み先メモリ番地、読み出し元メモリ番地、転送するデータのサイズ情報などのメモリ領域に関する情報を含むエントリからなる。また、このエントリには、エントリの状態を示す情報（状態フラグと呼ぶ）をさらに含む。第１入出力デスクリプタ情報１１０は、第１入出力制御部１０１によって更新される。
【００１６】
第１入出力制御部１０１は、第１入出力部１０３に対して転送指示を与えると共に、第１入出力部１０３がデータの入出力を行った際に、第１入出力デスクリプタ情報１１０の更新を行う。第１入出力制御部１０１および後述する第２入出力制御部１０２は、ＣＰＵ(Central  Processing  Unit)上で動作するソフトウェアとして構成される。なお、ＣＰＵは、プログラムに従い、この情報処理装置１００の全体の動作を制御する。
【００１７】
第２入出力部１０４は、上述した第１入出力部１０３と同様に、情報処理装置１００におけるデータの入出力を行うインターフェイス機能を提供する部位である。第２入出力部１０４の具体的な例としては、ＳＤ（登録商標）メモリカードのコントローラが挙げられる。第２入出力部１０４は、ＤＭＡＣを有する。
【００１８】
記憶部１０６に格納される第２入出力デスクリプタ情報１１２は、第２入出力部１０４のＤＭＡＣから参照されるもので、このＤＭＡＣがデータ転送を行う上で必要となる情報を含む。第２入出力デスクリプタ情報１１２の構成は、上述した第１入出力デスクリプタ情報１１０と同様なので、ここでの説明を省略する。第２入出力デスクリプタ情報１１２は、第２入出力制御部１０２によって更新される。
【００１９】
第２入出力制御部１０２は、第２入出力部１０４に対して転送指示を与えると共に、第２入出力部１０４がデータの入出力を行った際に、第２入出力デスクリプタ情報１１２の更新を行う。
【００２０】
間欠制御部１０５は、第１入出力部１０３および第２入出力部１０４の起動および停止を、間欠的に制御する。また、間欠制御部１０５は、第１入出力制御部１０１および第２入出力制御部１０２による制御が不要な場合に適宜ＣＰＵを停止し、必要になった際には、ＣＰＵを起動することができる。
【００２１】
データバッファ１１１は、第１入出力部１０３と第２入出力部１０４との間で転送されるデータを一時的に格納するために、記憶部１０６上に設けられた領域である。
【００２２】
図２は、既存の技術による状態フラグが取り得る値の遷移を示す。このように、状態フラグは、空き状態５０と、割当済み状態５１との２の状態を取ることができる。初期値は、空き状態５０とされる。第１入出力部１０３や第２入出力部１０４がデータバッファ１１１に対してデータの読み書きを行うに当たり、ＣＰＵが第１入出力デスクリプタ情報１１０や第２入出力デスクリプタ情報１１２を作成すると、各エントリの状態フラグが空き状態５０から割当済み状態５１に更新される。なお、実際には、ＣＰＵは、状態フラグが割当済み状態５１の状態で、各エントリを作成する。
【００２３】
また、第１入出力部１０３や第２入出力部１０４が、第１入出力デスクリプタ情報１１０や第２入出力デスクリプタ情報１１２を参照してデータ転送を行うと、転送されたデータに対応するエントリの状態フラグが割当済み状態５１から空き状態５０に更新される。
【００２４】
図３は、既存技術による間欠制御の一例のフローチャートを示す。間欠制御では、情報処理装置１００の各部を、必要に応じて起動／停止することによって、情報処理装置１００全体の消費電力を抑制したり、必要最低限に絞る制御を行う。
【００２５】
以下では、情報処理装置１００の第１入出力部１０３に対して転送データが入力され、この転送データを第２入出力部１０４に渡す場合を例にとって説明する。また、第１入出力部１０３が動作している期間は、第２入出力部１０４の動作を抑制（停止）し、第２入出力部１０４が動作している期間は、第１入出力部１０３の動作を抑制するものとする。
【００２６】
ステップＳ１００で、間欠制御部１０５は、第２入出力部１０４の動作を停止させるように制御する。それと共に、間欠制御部１０５は、第１入出力部１０３を起動させるように制御する。第１入出力部１０３は、起動され転送データの入力を待機する。次のステップＳ１０１で、転送データが第１入出力部１０３に入力される。
【００２７】
第１入出力部１０３は、転送データが入力された旨を、第１入出力制御部１０１に通知する。例えば、第１入出力部１０３は、転送データが入力されると、ＣＰＵに対して割り込みを掛ける。この割り込みにより割り込みハンドラが立ち上がり、ＣＰＵ上で第１入出力制御部１０１による動作が開始される。
【００２８】
次のステップＳ１０２で、第１入出力制御部１０１は、第１入出力部１０３からのデータ入力の通知に応じて第１入出力デスクリプタ情報１１０を作成し、記憶部１０６に書き込む。図４（ａ）は、この第１入出力デスクリプタ情報１１０の例を示す。第１入出力デスクリプタ情報１１０において、入力される転送データに応じて、データバッファ１１１における当該転送データの書き込み先番地とサイズ情報とを含むエントリが作成される。それと共に、割当済み状態５１を示す状態フラグが当該エントリに格納される。
【００２９】
第１入出力制御部１０１は、第１入出力デスクリプタ情報１１０の書き込みを行うと、第１入出力部１０３に対して第１入出力デスクリプタ情報１１０の準備が整った旨を伝え、転送データの転送を指示する。
【００３０】
次のステップＳ１０３で、第１入出力部１０３は、第１入出力制御部１０１からの転送指示に従い、転送データをデータバッファ１１１に書き込む。すなわち、第１入出力部１０３は、ステップＳ１０２で記憶部１０６に書き込まれた第１入出力デスクリプタ情報１１０を参照して、状態フラグが割当済み状態５１を示しているエントリから書き込み先番地とサイズ情報とを取得し、取得されたこれらの情報に従い転送データをデータバッファ１１１に書き込む。書き込みが終了すると、第１入出力部１０３は、その旨を間欠制御部１０５に通知する。
【００３１】
間欠制御部１０５は、第１入出力部１０３による転送データの書き込みが終了した旨が通知されると、次のステップＳ１０４で、第１入出力部１０３に対して動作停止の指示を出すと共に、第２入出力部１０４に対して起動の指示を出す。この指示に応じて、第２入出力部１０４が起動される。
【００３２】
処理はステップＳ１０５に移行し、第２入出力部１０４が起動されると、第２入出力制御部１０２は、第２入出力デスクリプタ情報１１２を作成し、記憶部１０６に書き込む。図４（ｂ）は、この第２入出力デスクリプタ情報１１２の例を示す。第２入出力デスクリプタ情報１１２において、転送データが書き込まれている読み出し元番地と、転送データの転送先を示す書き込み先番地と、読み出しの際のデータサイズを示すサイズ情報からなるエントリが作成される。それと共に、割当済み状態５１を示す状態フラグが当該エントリに格納される。
【００３３】
第２入出力制御部１０２は、第２入出力デスクリプタ情報１１２の書き込みを行うと、第２入出力部１０４に対して第２入出力デスクリプタ情報１１２の準備が整った旨を伝え、転送データの読み出しを指示する。
【００３４】
次のステップＳ１０６で、第２入出力部１０４は、第２入出力デスクリプタ情報１１２を参照し、状態フラグが割当済み状態５１を示しているエントリから読み出し元番地、書き込み先番地およびサイズ情報を取得する。そして、取得した読み出し元番地およびサイズ情報に基づきデータバッファ１１１から転送データを読み出し、書き込み先番地に対して転送する。転送処理が完了すると、その旨が間欠制御部１０５に通知される。
【００３５】
そして、処理がステップＳ１００に戻され、間欠制御部１０５により第１入出力部１０３が起動され、第２入出力部１０４が停止される。
【００３６】
以上説明した既存技術による制御では、ステップＳ１０１で転送データが入力される度に、第１入出力制御部１０１による第１入出力デスクリプタ情報１１０の書き込みと、第２入出力制御部１０２による第２入出力デスクリプタ情報１１２の書き込みとが発生する。そのため、ＣＰＵの動作を停止させることが困難であり、間欠制御による低消費電力化の効果も限定的なものとなってしまう。
【００３７】
（第１の実施形態）
次に、第１の実施形態について説明する。図５は、本第１の実施形態による情報処理装置１Ａの機能を示す一例の機能ブロック図である。情報処理装置１Ａは、記憶部２００、第１入出力部２１３、第２入出力部２１４、間欠制御部２１５および転送制御部２２０を有する。
【００３８】
記憶部２００は、コンピュータなどにおけるメインメモリに相当し、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２が記憶されると共に、データを一時的に格納するデータバッファ２１１が設けられる。なお、図５では、記憶部２００が１のメモリからなるように示されているが、これはこの例に限定されず、記憶部２００の記憶内容を複数のメモリに分散させてもよい。
【００３９】
第１入出力部２１３および第２入出力部２１４は、上述した第１入出力部１０３および第２入出力部１０４と同様に、情報処理装置１Ａのデータの入出力を行うインターフェイス機能を提供する。第１入出力部２１３および第２入出力部２１４は、それぞれＤＭＡＣを有する。
【００４０】
記憶部２００に格納される第１入出力デスクリプタ情報２１０は、第１入出力部２１３のＤＭＡＣから参照されるもので、このＤＭＡＣがデータ転送を行う上で必要となる情報を含む。より具体的には、第１入出力デスクリプタ情報２１０は、例えば読み出し元番地、書き込み先番地、転送するデータのサイズ情報などのメモリ領域に関する情報を含むエントリを有する。なお、サイズ情報は、例えば第１入出力デスクリプタ情報２１０が転送データの書き込みに関する場合、データバッファ２１１におけるデータの書き込み単位のデータサイズを用いることができる。各エントリには、当該エントリの状態を示す状態フラグが格納される。本第１の実施形態においては、状態フラグは、当該エントリに示されるメモリ領域の状態をさらに示す。
【００４１】
記憶部２００に格納される第２入出力デスクリプタ情報２１２は、第２入出力部２１４のＤＭＡＣから参照されるもので、このＤＭＡＣがデータ転送を行う上で必要となる情報を含む。第２入出力デスクリプタ情報１１２の構成は、上述した第１入出力デスクリプタ情報２１０と同様なので、ここでの説明を省略する。なお、例えば第２入出力デスクリプタ情報２１２が転送データの書き込みに関する場合、サイズ情報は、データバッファ２１１におけるデータの読み出し単位のデータサイズを用いることができる。
【００４２】
図示は省略するが、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２は、ＣＰＵ上でプログラムに従い実行される機能である第１入出力制御機能および第２入出力制御機能により作成および更新される。これら第１入出力制御機能および第２入出力制御機能は、上述した第１入出力制御部１０１および第２入出力制御部１０２に相当する。
【００４３】
データバッファ２１１は、上述のデータバッファ１１１と同様に、第１入出力部２１３と第２入出力部２１４との間で転送されるデータを一時的に格納するために、記憶部２００上に設けられた領域である。
【００４４】
間欠制御部２１５は、第１入出力部２１３および第２入出力部２１４の動作を、間欠的に抑制するように制御する。また、間欠制御部１０５は、第１入出力制御機能および第２入出力制御機能が第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２の作成を行わない期間に、適宜ＣＰＵの動作を抑制することができる。
【００４５】
転送制御部２２０は、第１入出力部２１３および第２入出力部２１４に対して、転送データの転送指示を出す。また、転送制御部２２０は、第１入出力部２１３や第２入出力部２１４による転送データの転送に伴い、第１入出力デスクリプタ情報２１０や第２入出力デスクリプタ情報２１２の状態フラグを更新する。
【００４６】
図６は、本第１の実施形態による状態フラグが取り得る値の遷移を示す。本第１の実施形態では、状態フラグは、空き状態６０と、割当済み状態６１と、バッファ済み状態６２との３の状態を取ることができる。
【００４７】
空き状態６０は、空き状態６０を示す状態フラグが格納されるエントリが無効とされている状態である。すなわち、空き状態６０を示す状態フラグは、そのエントリが未定義、若しくは、当該エントリに格納される情報の使用が終了したことを示す。状態フラグが空き状態６０のエントリは、新たな情報で更新することができる。状態フラグの初期値は、この空き状態６０とされる。
【００４８】
割当済み状態６１は、割当済み状態６１を示す状態フラグが格納されるエントリが有効とされている状態である。すなわち、割当済み状態６１を示す状態フラグは、そのエントリに対して情報が割り当てられ、当該情報が使用待ちになっていることを示す。状態フラグが割当済み状態６１のエントリは、更新が禁止される。
【００４９】
バッファ済み状態６２は、バッファ済み状態６２を示す状態フラグが格納されるエントリにおいて、読み出し元番地に示されるデータバッファ２１１の領域に、読み出し待ちの転送データが格納されていることを示す。バッファ済み状態６２を示す状態フラグは、データバッファ２１１から転送データを読み出す場合にのみ、定義される。
【００５０】
状態フラグの初期値は、空き状態６０を示す値とされる。第１入出力制御機能や第２入出力制御機能により第１入出力デスクリプタ情報２１０や第２入出力デスクリプタ情報２１２が作成され、記憶部２００に書き込まれた時点で、各エントリの状態フラグがそれぞれ割当済み状態６１にセットされる。状態フラグが空き状態６０のエントリを残しておいてもよい。
【００５１】
一例として、第１入出力部２１３が転送データをデータバッファ２１１に書き込み、第２入出力部２１４がデータバッファ２１１から転送データを読み出す場合について考える。この場合、第１入出力部２１３は、転送データが入力され転送制御部２２０から転送指示が出されると、第１入出力デスクリプタ情報２１０を参照し、状態フラグが割当済み状態６１とされているエントリを選択し、選択したエントリの情報に従いデータバッファ２１１に対して転送データを書き込む。
【００５２】
転送データの書き込みに伴い、転送制御部２２０は、第１入出力デスクリプタ情報２１０における当該エントリの状態フラグを割当済み状態６１から空き状態６０に更新すると共に、第２入出力デスクリプタ情報２１２の対応するエントリの状態フラグを割当済み状態６１からバッファ済み状態６２に更新する。
【００５３】
第２入出力部２１４は、転送制御部２２０から転送指示が出されると、第２入出力デスクリプタ情報２１２を参照し、状態フラグがバッファ済み状態６２とされているエントリを選択し、当該エントリの情報に従いデータバッファ２１１から転送データを読み出す。転送データの読み出しに伴い、転送制御部２２０は、第２入出力デスクリプタ情報２１２における当該エントリの状態フラグをバッファ済み状態６２から空き状態６０に更新する。
【００５４】
図７は、本第１の実施形態による間欠制御の一例のフローチャートを示す。以下では、情報処理装置１Ａの第１入出力部２１３に対して転送データが入力され、この転送データを第２入出力部２１４に渡す場合を例にとって説明する。また、第１入出力部２１３が動作している期間は、第２入出力部２１４の動作を抑制（停止）し、第２入出力部２１４が動作している期間は、第１入出力部２１３の動作を抑制するものとする。
【００５５】
なお、例えば第１入出力部２１３の動作の抑制は、第１入出力部２１３の動作を停止させることで実現できる。第１入出力部２１３の動作の停止は、当該第１入出力部２１３に対する電源の供給を停止することで行う。これに限らず、当該第１入出力部２１３に対するクロック信号を停止させてもよい。第２入出力部２１４についても同様である。また、ＣＰＵ（第１入出力制御機能および第２入出力制御機能）についても、同様にして動作の抑制を行うことができる。以下では、各部についての動作の抑制を、各部の動作を停止することで行うものとして説明する。
【００５６】
また、図示は省略するが、情報処理装置１Ａは、図１を用いて説明した情報処理装置１００において第１入出力デスクリプタ情報１１０および第２入出力デスクリプタ情報１１２をそれぞれ更新する、第１入出力制御部１０１および第２入出力制御部１０２に相当する機能を有している。これらの機能は、ＣＰＵにより実行される。
【００５７】
ステップＳ２００で、間欠制御部２１５は、第２入出力部２１４の動作を停止させ、第１入出力部２１３を起動させるように制御する。第１入出力部２１３は、転送データの入力を待機する。
【００５８】
次のステップＳ２０１で、第１入出力制御機能および第２入出力制御機能は、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を作成し、記憶部２００に書き込む。このとき、第１入出力制御機能および第２入出力制御機能は、例えば、読み出し元番地、書き込み先番地およびサイズ情報として、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２それぞれに対して予め定められた値を用いて、各エントリを作成する。それと共に、第１入出力制御機能および第２入出力制御機能は、作成した各エントリに対して、割当済み状態６１の状態フラグを格納する。
【００５９】
図８（ａ）は、ステップＳ２０１で作成された第１入出力デスクリプタ情報２１０の例を示す。転送データの書き込み側では、各エントリに含まれる情報は、書き込み先番地およびサイズ情報とされ、各エントリの状態フラグは、割当済み状態６１に設定される。なお、書き込み先番地およびサイズ情報を含まないエントリを作成することができ、この場合には、状態フラグを空き状態６０に設定する。
【００６０】
本第１の実施形態では、エントリを、第１入出力部２１３に入力される転送データに相当するエントリ数よりも多く、作成しておくとよい。例えば、第１入出力部２１３に入力される転送データをデータバッファ２１１に書き込むために２エントリが必要である場合、ステップＳ２０１では、３以上のエントリを予め作成しておく。
【００６１】
図８（ｂ）は、ステップＳ２０１で作成された第２入出力デスクリプタ情報２１２の例を示す。転送データの読み出し側では、各エントリに含まれる情報は、読み出し元番地、書き込み先番地およびサイズ情報とされ、各エントリの状態フラグは、割当済み状態６１に設定される。この場合においても、書き込み先番地およびサイズ情報を含まないエントリを作成することができ、この場合には、状態フラグを空き状態６０に設定する。
【００６２】
また、第２入出力デスクリプタ情報２１２においても、エントリを、データバッファ２１１に書き込まれる転送データ、すなわち、第１入出力部２１３に入力される転送データに相当するエントリ数よりも多く、作成しておく。このように、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２それぞれにおいて、書き込みや読み出しの対象となる転送データに相当するエントリ数よりも多く、エントリを作成しておくことで、ＣＰＵを停止できる時間が長くなり、低消費電力化の効果が増大する。
【００６３】
また、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２について、読み出しに関するデスクリプタ（例えば第２入出力デスクリプタ情報２１２）の各エントリのサイズ情報の合計が、書き込みに関するデスクリプタ（例えば第１入出力デスクリプタ情報２１０）の各エントリのサイズ情報の合計以上になるように作成すると好ましい。図８（ａ）および図８（ｂ）の例では、図８（ａ）に示される第１入出力デスクリプタ情報２１０の各エントリのサイズ情報の合計が１０２４バイトであるのに対し、図８（ｂ）に示される第２入出力デスクリプタ情報２１２の各エントリのサイズ情報の合計が１５３６バイトとされている。このようにすることで、後述するステップＳ２１０の判定が容易となる。
【００６４】
図７のフローチャートの説明に戻り、ステップＳ２０１で第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２の記憶部２００に対する書き込みが終了したら、処理がステップＳ２０２に移行される。ステップＳ２０２では、間欠制御部２１５がＣＰＵの動作を停止する。この場合、間欠制御部２１５は、ＣＰＵ全体の動作を停止させてもよいし、ＣＰＵにおける例えば第１入出力制御機能および第２入出力制御機能の動作のみを停止させることも考えられる。
【００６５】
次のステップＳ２０３で、転送データが第１入出力部２１３に入力される。転送制御部２２０から入力された転送データの転送指示が第１入出力部２１３に渡されると、ステップＳ２０４で、第１入出力部２１３は、転送データをデータバッファ２１１に書き込む。すなわち、第１入出力部２１３は、転送指示を受け取ると、記憶部２００上の第１入出力デスクリプタ情報２１０を参照し、状態フラグが割当済み状態６１となっているエントリを選択する。そして、選択したエントリに格納される情報に従い、入力された転送データをデータバッファ２１１に書き込む。転送データの書き込みが終了すると、第１入出力部２１３は、その旨を転送制御部２２０に通知する。
【００６６】
処理はステップＳ２０５に移行され、転送制御部２２０は、転送データの書き込み終了の通知に応じて、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２の状態フラグの更新を行う。すなわち、転送制御部２２０は、第１入出力デスクリプタ情報２１０の、転送データが書き込まれた書き込み先番地を含むエントリの状態フラグを、割当済み状態６１から空き状態６０に更新する。それと共に、転送制御部２２０は、第２入出力デスクリプタ情報２１２の、当該書き込み先番地に対応する読み出し元番地を含むエントリの状態フラグを、割当済み状態６１からバッファ済み状態６２に更新する。
【００６７】
図９（ａ）は、上述した図８（ａ）の状態からステップＳ２０５で状態フラグが更新された第１入出力デスクリプタ情報２１０の例を示す。この例では、転送データが書き込まれた書き込み先番地を含む第１エントリおよび第２エントリにおいて、状態フラグが割当済み状態６１から空き状態６０に更新されている。すなわち、第１エントリおよび第２エントリの情報は、転送データが書き込まれたことにより、使用済みとなり、更新することができる。
【００６８】
図９（ｂ）は、上述した図８（ｂ）の状態からステップＳ２０５で状態フラグが更新された第２入出力デスクリプタ情報２１２の例を示す。この例では、転送データが書き込まれた書き込み先番地に対応する読み出し元番地を含む第１エントリにおいて、状態フラグが割当済み状態６１からバッファ済み状態６２に更新されている。
【００６９】
ステップＳ２０５で状態フラグの更新がなされると、その旨が間欠制御部２１５に通知され、処理はステップＳ２０６に移行される。ステップＳ２０６で、間欠制御部２１５は、状態フラグの更新通知に応じて、第１入出力部２１３に対して動作停止の指示を出すと共に、第２入出力部２１４に対して起動の指示を出す。この指示に応じて、第２入出力部２１４が起動される。第２入出力部２１４の起動が完了すると、転送制御部２２０は、第２入出力部２１４に対して転送指示を出す。
【００７０】
次のステップＳ２０７で、第２入出力部２１４は、転送制御部２２０からの転送指示に応じて、データバッファ２１１から転送データを読み出す。すなわち、第２入出力部２１４は、転送指示に応じて、記憶部２００上の第２入出力デスクリプタ情報２１２を参照し、状態フラグがバッファ済み状態６２となっているエントリを選択する。そして、第２入出力部２１４は、選択したエントリに格納される情報に従いデータバッファ２１１から転送データを読み出し、書き込み先番地で示される書き込み先に転送する。第２入出力部２１４は、転送データの読み出しが終了すると、その旨を転送制御部２２０に通知する。
【００７１】
次のステップＳ２０８で、転送制御部２２０は、第２入出力部２１４からの読み出し終了の通知に応じて、第２入出力デスクリプタ情報２１２の、転送データが読み出された読み出し元番地を含むエントリの状態フラグを、バッファ済み状態６２から空き状態６０に更新する。
【００７２】
図１０は、上述した図９（ｂ）の状態からステップＳ２０８で状態フラグが更新された第２入出力デスクリプタ情報２１２の例を示す。この例では、転送データが読み出された読み出し元番地を含む第１エントリにおいて、状態フラグがバッファ済み状態６２から空き状態６０に更新されている。
【００７３】
ステップＳ２０８で状態フラグの更新がなされると、その旨が間欠制御部２１５に通知され、処理はステップＳ２０９に移行される。ステップＳ２０９で、間欠制御部２１５は、状態フラグの更新通知に応じて、第２入出力部２１４に対して動作停止の指示を出すと共に、第１入出力部２１３に対して起動の指示を出す。この指示に応じて、第１入出力部２１３が起動される。第１入出力部２１３は、起動されると、転送データの入力を待機する。
【００７４】
次のステップＳ２１０で、第１入出力部２１３は、第１入出力デスクリプタ情報２１０を参照し、フラグが定義済みのエントリの有無を判定する。例えば、第１入出力部２１３は、第１入出力デスクリプタ情報２１０に、状態フラグが割当済み状態６１になっているエントリが存在するか否かを判定する。若し、存在すると判定した場合、処理がステップＳ２０３に戻され、第１入出力部２１３により次の転送データの入力が待機される。
【００７５】
一方、ステップＳ２１０で、第１入出力部２１３が、第１入出力デスクリプタ情報２１０にフラグが定義済みのエントリが無いと判定した場合には、処理がステップＳ２１１に移行される。この場合、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済みのエントリを追加する必要がある。そのため、ステップＳ２１１で、間欠制御部２１５は、ＣＰＵを起動するように制御する。
【００７６】
次のステップＳ２１２で、第１入出力制御機能および第２入出力制御機能は、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済み（例えば状態フラグが割当済み状態６１）のエントリを追加し、記憶部２００に書き込む。エントリが追加された第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を記憶部２００に書き込むと、第１入出力制御機能および第２入出力制御機能は、その旨を間欠制御部２１５に通知する。
【００７７】
そして、処理がステップＳ２１３に移行され、間欠制御部２１５によりＣＰＵの動作が停止され、処理がステップＳ２０３に戻される。なお、ＣＰＵは、自ら動作を停止させるように制御してもよい。
【００７８】
以上のように、本第１の実施形態によれば、ＣＰＵ（第１入出力制御機能および第２入出力制御機能）は、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を転送データの入力以前に予め用意する。そして、転送データの入力以後の処理は、予め用意されたこれら第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に基づき、転送制御部２２０が実行する。
【００７９】
そのため、ＣＰＵは、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を用意した後は、動作する必要が無い。したがって、本第１の実施形態は、転送データの入力の度にＣＰＵ（第１入出力制御部１０１および第２入出力制御部１０２）が第１入出力デスクリプタ情報１１０および第２入出力デスクリプタ情報１１２を作成した既存技術に比べ、より効果的に低消費電力化を実現できる。
【００８０】
図１１は、本第１の実施形態を適用可能な情報処理装置１の一例のハードウェア構成を示す。情報処理装置１は、例えば、ＣＰＵ１１、ＲＡＭ(Random  Access  Memory)１２、ＲＯＭ(Read  Only  Memory)１３、ＰＭＵ(Power  Management  Unit)１４、ＮＩＣ(Network  Interface  Card)１５、転送制御部１６およびＳＳＤ(Solid  State  Disk)１７を有し、各部がバス１０で互いに通信可能に接続される。これに限らず、キーボードなどのユーザ操作部や、ディスプレイに表示を行う表示部をさらに有していてもよい。
【００８１】
ＣＰＵ１１は、ＲＯＭ１３やＳＳＤ１７に予め記憶されるプログラムに従い、ＲＡＭ１２をワークメモリとして用いて、この情報処理装置１の全体の動作を制御する。ＲＡＭ１２は、上述の記憶部２００に対応し、データバッファ２１１が設けられると共に、第１入出力デスクリプタ情報２１０や第２入出力デスクリプタ情報２１２が書き込まれる。また、第１入出力制御機能や第２入出力制御機能は、ＣＰＵ１１上で動作するプログラムのモジュールとして動作させることができる。
【００８２】
ＮＩＣ１５は、ＬＡＮ(Local  Area  Network)やインターネットといったネットワークに対する接続を制御するもので、例えば上述した第１入出力部２１３に対応する。ＮＩＣ１５は、ＤＭＡＣ２０を有し、例えばバス１０を介したデータ通信は、このＤＭＡＣ２０により制御される。ＳＳＤ１７は、不揮発性の半導体メモリからなり、ＣＰＵ１１上で動作するプログラムや、各種データが格納される。ＳＳＤ１７は、例えば上述した第２入出力部２１４に対応する。ＳＳＤ１７は、ＤＭＡＣ２１を有し、例えばバス１０を介したデータ通信は、このＤＭＡＣ２１により制御される。
【００８３】
なお、第１入出力部２１３は、ＮＩＣ１５に限らず、データの入出力を行うインターフェイスであれば、例えばＵＳＢ(Universal  Serial  Bus)やＩＥＥＥ(Institute  of  Electrical  and  Electronics  Engineers)１３９４など他のインターフェイスを適用してもよい。同様に、第２入出力部２１４は、ＳＳＤ１７に限られず、ＨＤＤ(Hard  Disk  Drive)でもよいし、ＣＤ(Compact  Disk)やＤＶＤ(Digital  Versatile  Disk)といったディスク記録媒体を読取可能なドライブ装置でもよい。また、上述では、第１入出力部２１３が転送データの入力側で、第２入出力部２１４が出力側であるように説明したが、これはこの例に限定されず、両者を入れ替えてもよい。
【００８４】
ＰＭＵ１４は、ＣＰＵ１１の制御に従い、この情報処理装置１全体の電源制御を行う。このとき、ＰＭＵ１４は、ＣＰＵ１１やＮＩＣ１５、ＳＳＤ１７の電源をそれぞれ個別に制御することができる。ＰＭＵ１４は、上述した間欠制御部２１５に対応する。
【００８５】
転送制御部１６は、上述の転送制御部２２０に対応し、ＮＩＣ１５およびＳＳＤ１７に対して転送データの転送指示を与えると共に、ＲＡＭ１２に書き込まれている第１入出力デスクリプタ情報２１０や第２入出力デスクリプタ情報２１２の更新を行う。
【００８６】
（第２の実施形態）
次に、第２の実施形態について説明する。図１２は、本第２の実施形態による情報処理装置１Ｂの機能を示す一例の機能ブロック図である。なお、図１２において、上述した図５と共通する部分には同一の符号を付し、詳細な説明を省略する。
【００８７】
本第２の実施形態による情報処理装置１Ｂは、上述した第１の実施形態による情報処理装置１Ａに対して、デスクリプタ情報更新代行部２３０が追加されている。このデスクリプタ情報更新代行部２３０は、第１の実施形態による転送制御部２２０における第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２の状態フラグの更新処理を、当該転送制御部２２０に代わって実行するものである。
【００８８】
また、本第２の実施形態では、第１入出力部２１３’は、第１入出力デスクリプタ情報２１０に相当するデスクリプタ情報を、入力された転送データなどに応じて自身で生成するようになっている。デスクリプタ情報の作成は、例えば、第１入出力部２１３’が有するＤＭＡＣが行う。デスクリプタ情報更新代行部２３０は、第１入出力部２１３’が入力された転送データに従い作成、更新したデスクリプタ情報を、上述した第１入出力デスクリプタ情報２１０に書き換える。
【００８９】
なお、デスクリプタ情報更新代行部２３０の追加に伴い、転送制御部２２０’は、第１入出力部２１３’および第２入出力部２１４に対する転送指示のみを行うことになる。第２入出力部２１４および間欠制御部２１５の機能は、第１の実施形態で説明した機能と同一である。すなわち、第２入出力部２１４は、転送指示に従い、第２入出力デスクリプタ情報２１２を参照してデータバッファ２１１のデータの読み書きを行う。また、間欠制御部２１５は、第１入出力部２１３’および第２入出力部２１４の起動および停止を制御すると共に、ＣＰＵの起動および停止を制御する。
【００９０】
本第２の実施形態における状態フラグの各状態（空き状態６０、割当済み状態６１およびバッファ済み状態６２）は、上述の第１の実施形態と同様であるので、ここでの説明を省略する。
【００９１】
図１３は、本第２の実施形態による間欠処理の一例のフローチャートを示す。なお、図１３において、上述した図７のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。
【００９２】
以下では、情報処理装置１Ｂの第１入出力部２１３’に対して転送データが入力され、この転送データを第２入出力部２１４に渡す場合を例にとって説明する。また、第１入出力部２１３’が動作している期間は、第２入出力部２１４の動作を停止し、第２入出力部２１４が動作している期間は、第１入出力部２１３’の動作を停止するものとする。
【００９３】
また、図示は省略するが、情報処理装置１Ｂは、上述した情報処理装置１Ａと同様に、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２をそれぞれ更新する、ＣＰＵ上で動作する第１入出力制御機能、第２入出力制御機能を有する。
【００９４】
ステップＳ２００で、間欠制御部２１５は、第２入出力部２１４の動作を停止させ、第１入出力部２１３’を起動させるように制御する。第１入出力部２１３’は、転送データの入力を待機する。
【００９５】
次のステップＳ２０１で、第２入出力制御機能は、第２入出力デスクリプタ情報２１２を作成し、記憶部２００に書き込む。このとき、図８（ｂ）を用いて説明したように、第２入出力制御機能は、例えば読み出し元番地、書き込み先番地およびサイズ情報を含む各エントリを作成すると共に、作成した各エントリに対して、割当済み状態６１の状態フラグを格納する。
【００９６】
次のステップＳ２０２では、間欠制御部２１５は、ＣＰＵの動作を停止させる。このとき、ＣＰＵの第１入出力制御機能および第２入出力制御機能を実行する動作のみを停止させてもよいし、ＣＰＵの全体の動作を停止させてもよい。また、ＣＰＵの動作は、ＣＰＵ自身が停止させてもよい。
【００９７】
次のステップＳ２０３で、転送データが第１入出力部２１３’に入力される。転送制御部２２０’から転送データの転送指示が第１入出力部２１３’に渡されると、ステップＳ２０４で、第１入出力部２１３’は、転送データをデータバッファ２１１に書き込む。
【００９８】
次のステップＳ２０４Ａで、第１入出力部２１３’は、ステップＳ２０４で書き込んだ転送データについて、データバッファ２１１への書き込み先番地およびサイズ情報を含むエントリを作成し、第１入出力デスクリプタ情報２１０として記憶部２００に書き込む。このとき、当該エントリに、割当済み状態６１の状態フラグを格納する。第１入出力部２１３’は、第１入出力デスクリプタ情報２１０を記憶部２００に書き込むと、その旨をデスクリプタ情報更新代行部２３０に通知する。
【００９９】
デスクリプタ情報更新代行部２３０は、第１入出力部２１３’からの通知に応じて、次のステップＳ２０５Ａで、第１入出力デスクリプタ情報２１０のおよび第２入出力デスクリプタ情報２１２の状態フラグを更新する。すなわち、第１入出力デスクリプタ情報２１０における、ステップＳ２０４Ａで書き込まれたエントリに設定された状態フラグを、割当済み状態６１から空き状態６０に更新する。それと共に、第２入出力デスクリプタ情報２１２における、ステップＳ２０４Ａで第１入出力部２１３’で書き込まれたエントリに含まれる書き込み先番地に対応する読み出し元番地を有するエントリの状態フラグを、バッファ済み状態６２に更新する。状態フラグの更新がなされると、その旨が間欠制御部２１５に通知される。
【０１００】
処理はステップＳ２０６に移行され、間欠制御部２１５は、状態フラグの更新通知に応じて、第１入出力部２１３’に対して動作停止の指示を出すと共に、第２入出力部２１４に対して起動の指示を出す。この指示に応じて、第２入出力部２１４が起動される。第２入出力部２１４の起動が完了すると、転送制御部２２０’は、第２入出力部２１４に対して転送指示を出す。
【０１０１】
次のステップＳ２０７で、第２入出力部２１４は、転送制御部２２０’からの転送指示に応じて第２入出力デスクリプタ情報２１２を参照し、状態フラグがバッファ済み状態６２となっているエントリを選択する。そして、第２入出力部２１４は、選択したエントリに格納される情報に従いデータバッファ２１１から転送データを読み出し、書き込み先番地で示される書き込み先に転送する。第２入出力部２１４は、転送データの読み出しが終了すると、その旨を転送制御部２２０’に通知する。
【０１０２】
次のステップＳ２０８で、転送制御部２２０’は、第２入出力部２１４からの読み出し終了の通知に応じて、第２入出力デスクリプタ情報２１２の、転送データが読み出された読み出し元番地を含むエントリの状態フラグを、バッファ済み状態６２から空き状態６０に更新する。状態フラグが更新されると、その旨が間欠制御部２１５に通知される。
【０１０３】
次のステップＳ２０９で、間欠制御部２１５は、状態フラグの更新通知に応じて、第２入出力部２１４に対して動作停止の指示を出すと共に、第１入出力部２１３’に対して起動の指示を出す。この指示に応じて、第１入出力部２１３’が起動される。第１入出力部２１３’は、起動されると、転送データの入力を待機する。
【０１０４】
次のステップＳ２１０で、第１入出力部２１３’は、第１入出力デスクリプタ情報２１０を参照し、フラグが定義済み、例えば状態フラグが割当済み状態６１となっているエントリが存在するか否かを判定する。若し、存在すると判定した場合、処理がステップＳ２０３に戻され、第１入出力部２１３’により次の転送データの入力が待機される。
【０１０５】
一方、ステップＳ２１０で、第１入出力部２１３’が、第１入出力デスクリプタ情報２１０にフラグが定義済みのエントリが無いと判定した場合には、処理がステップＳ２１１に移行される。この場合、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済みのエントリを追加する必要がある。そのため、ステップＳ２１１で、間欠制御部２１５は、ＣＰＵを起動するように制御する。
【０１０６】
次のステップＳ２１２で、第１入出力制御機能および第２入出力制御機能は、それぞれ第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済み（例えば状態フラグが割当済み状態６１）のエントリを追加し、記憶部２００に書き込む。エントリが追加された第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を記憶部２００に書き込むと、第１入出力制御機能および第２入出力制御機能は、その旨を間欠制御部２１５に通知する。
【０１０７】
そして、処理がステップＳ２１３に移行され、間欠制御部２１５によりＣＰＵの動作が停止され、処理がステップＳ２０３に戻される。なお、ＣＰＵは、自ら動作を停止させるように制御してもよい。
【０１０８】
このように、本第２の実施形態によれば、第１入出力部２１３’が第１入出力デスクリプタ情報２１０に相当するデスクリプタ情報を、入力された転送データなどに応じて自身で生成するような場合であっても、第１の実施形態と同様の効果を得ることができる。すなわち、第１入出力部２１３’が作成したデスクリプタ情報は、デスクリプタ情報更新代行部２３０により更新され、ＣＰＵは、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を用意した後は、動作する必要が無く、より効果的に低消費電力化を実現できる。
【０１０９】
なお、本第２の実施形態による情報処理装置１Ｂのハードウェア構成としては、図１１を用いて説明した第１の実施形態による情報処理装置１に対して、デスクリプタ情報更新代行部２３０を追加してバス１０接続することで実現することができる。
【０１１０】
（第３の実施形態）
次に、第３の実施形態について説明する。図１４は、本第３の実施形態による情報処理装置１Ｃの機能を示す一例の機能ブロック図である。なお、図１４において、上述した図５と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１１１】
本第３の実施形態による情報処理装置１Ｃは、上述した第１の実施形態による情報処理装置１Ａに対して、復帰制御部２４０が追加されている。また、記憶部２００には、第１入出力部２１３”および第２入出力部２１４”を停止状態から起動させる際の復帰手順をそれぞれ示す第１入出力復帰手順情報２４１および第２入出力復帰手順情報２４２が記憶される。
【０１１２】
復帰制御部２４０は、例えば第１入出力部２１３”を起動させる際には、第１入出力復帰手順情報２４１を参照する。そして、第１入出力復帰手順情報２４１の内容に従い第１入出力部２１３”に対して復帰指示を出して、第１入出力部２１３”を起動させる。第２入出力部２１４”を起動させる場合も同様に、復帰制御部２４０は、第２入出力復帰手順情報２４２を参照し、第２入出力部２１４”に対して復帰指示を出す。
【０１１３】
なお、第１入出力部２１３”および第２入出力部２１４”は、復帰制御部２４０からの復帰指示に従い起動される点以外は、第１の実施形態による第１入出力部２１３および第２入出力部２１４と同等の機能を有する。
【０１１４】
本第３の実施形態における状態フラグの各状態（空き状態６０、割当済み状態６１およびバッファ済み状態６２）は、上述の第１の実施形態と同様であるので、ここでの説明を省略する。
【０１１５】
図１５は、本第３の実施形態による間欠制御の一例のフローチャートを示す。なお、図１５において、上述した図７のフローチャートと共通する処理には同一の符号を付し、詳細な説明を省略する。
【０１１６】
以下では、情報処理装置１Ｃの第１入出力部２１３”に対して転送データが入力され、この転送データを第２入出力部２１４”に渡す場合を例にとって説明する。また、第１入出力部２１３”が動作している期間は、第２入出力部２１４”の動作を停止し、第２入出力部２１４”が動作している期間は、第１入出力部２１３”の動作を停止するものとする。
【０１１７】
また、図示は省略するが、情報処理装置１Ｃは、上述した情報処理装置１Ａと同様に、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２をそれぞれ更新する、ＣＰＵ上で動作する第１入出力制御機能、第２入出力制御機能を有する。
【０１１８】
ステップＳ２００で、間欠制御部２１５は、第２入出力部２１４”の動作を停止させ、第１入出力部２１３”を起動させるように制御する。第１入出力部２１３”は、転送データの入力を待機する。なお、ここでは、第１入出力部２１３”は、予め起動されているものとする。
【０１１９】
次のステップＳ２０１で、第１入出力制御機能および第２入出力制御機能は、それぞれ第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を作成し、記憶部２００に書き込む。このとき、図８（ａ）および図８（ｂ）を用いて説明したように、第１入出力制御機能および第２入出力制御機能は、例えば読み出し元番地、書き込み先番地およびサイズ情報を含むエントリを作成すると共に、作成した各エントリに対して、割当済み状態６１の状態フラグを格納する。
【０１２０】
次のステップＳ２０２で、間欠制御部２１５は、ＣＰＵの動作を停止させる。このとき、ＣＰＵの第１入出力制御機能および第２入出力制御機能を実行する動作のみを停止させてもよいし、ＣＰＵの全体の動作を停止させてもよい。また、ＣＰＵの動作は、ＣＰＵ自身が停止させてもよい。
【０１２１】
次のステップＳ２０３で、転送データが第１入出力部２１３”に入力される。第１入出力部２１３”は、転送制御部２２０から転送データの転送指示が第１入出力部２１３”に渡されると、ステップＳ２０４で、転送データをデータバッファ２１１に書き込む。転送データの書き込みが終了すると、第１入出力部２１３”は、その旨を転送制御部２２０に通知する。
【０１２２】
次のステップＳ２０５で、転送制御部２２０は、転送データの書き込み終了の通知に応じて、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２の状態フラグの更新を行う。すなわち、転送制御部２２０は、第１入出力デスクリプタ情報２１０の、転送データが書き込まれた書き込み先番地を含むエントリの状態フラグを、割当済み状態６１から空き状態６０に更新する。それと共に、転送制御部２２０は、第２入出力デスクリプタ情報２１２の、当該書き込み先番地に対応する読み出し元番地を含むエントリの状態フラグを、割当済み状態６１から済み状態６２に更新する。状態フラグの更新がなされると、その旨が間欠制御部２１５に通知される。
【０１２３】
次のステップＳ２０６で、間欠制御部２１５は、状態フラグの更新通知に応じて、第１入出力部２１３”に対して動作停止の指示を出す。また、間欠制御部２１５は、第２入出力部２１４”に対して起動の指示を出すと共に、復帰制御部２４０に対して、第２入出力部２１４”が起動される旨を通知する。
【０１２４】
次のステップＳ２２０で、復帰制御部２４０は、第２入出力部２１４”の起動通知に応じて第２入出力復帰手順情報２４２を参照する。そして、第２入出力復帰手順情報２４２の内容に従い第２入出力部２１４”に対して復帰指示を出して、第２入出力部２１４”を設定し、起動させる。第２入出力部２１４”の起動が完了すると、転送制御部２２０は、第２入出力部２１４”に対して転送指示を出す。
【０１２５】
次のステップＳ２０７で、第２入出力部２１４”は、転送制御部２２０からの転送指示に応じて第２入出力デスクリプタ情報２１２を参照し、状態フラグがバッファ済み状態６２となっているエントリを選択する。そして、第２入出力部２１４”は、選択したエントリに格納される情報に従いデータバッファ２１１から転送データを読み出し、書き込み先番地で示される書き込み先に転送する。第２入出力部２１４”は、転送データの読み出しが終了すると、その旨を転送制御部２２０に通知する。
【０１２６】
次のステップＳ２０８で、転送制御部２２０は、第２入出力部２１４”からの読み出し終了の通知に応じて、第２入出力デスクリプタ情報２１２の、転送データが読み出された読み出し元番地を含むエントリの状態フラグを、バッファ済み状態６２から空き状態６０に更新する。状態フラグの更新がなされると、その旨が間欠制御部２１５に通知される。
【０１２７】
次のステップＳ２０９で、間欠制御部２１５は、状態フラグの更新通知に応じて、第２入出力部２１４”に対して動作停止の指示を出す。また、間欠制御部２１５は、第１入出力部２１３”に対して起動の指示を出すと共に、復帰制御部２４０に対して、第１入出力部２１３”が起動される旨を通知する。
【０１２８】
次のステップＳ２２１で、復帰制御部２４０は、第１入出力部２１３”の起動通知に応じて第１入出力復帰手順情報２４１を参照する。そして、第１入出力復帰手順情報２４１の内容に従い第１入出力部２１３”に対して復帰指示を出して、第１入出力部２１３”を設定し、起動させる。
【０１２９】
次のステップＳ２１０で、第１入出力部２１３”は、第１入出力デスクリプタ情報２１０を参照し、フラグが定義済み、例えば状態フラグが割当済み状態６１となっているエントリが存在するか否かを判定する。若し、存在すると判定した場合、処理がステップＳ２０３に戻され、第１入出力部２１３”により次の転送データの入力が待機される。
【０１３０】
一方、ステップＳ２１０で、第１入出力部２１３”が、第１入出力デスクリプタ情報２１０にフラグが定義済みのエントリが無いと判定した場合には、処理がステップＳ２１１に移行される。この場合、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済みのエントリを追加する必要がある。そのため、ステップＳ２１１で、間欠制御部２１５は、第１入出力制御機能および第２入出力制御機能すなわちＣＰＵを起動するように制御する。
【０１３１】
次のステップＳ２１２で、第１入出力制御機能および第２入出力制御機能は、第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２に対して、フラグが定義済み（例えば状態フラグが割当済み状態６１）のエントリを追加し、記憶部２００に書き込む。エントリが追加された第１入出力デスクリプタ情報２１０および第２入出力デスクリプタ情報２１２を記憶部２００に書き込むと、第１入出力制御機能および第２入出力制御機能は、その旨を間欠制御部２１５に通知する。
【０１３２】
そして、処理がステップＳ２１３に移行され、間欠制御部２１５により第１入出力制御機能および第２入出力制御機能すなわちＣＰＵの動作が停止され、処理がステップＳ２０３に戻される。なお、ＣＰＵは、自ら動作を停止させるように制御してもよい。
【０１３３】
このように、本第３の実施形態によれば、第１入出力部２１３”および第２入出力部２１４”の起動の際に、停止状態から起動状態への復帰を制御する復帰制御部２４０が設けられている。そのため、第１入出力部２１３”および第２入出力部２１４”が起動された際に、即座にデータ転送処理を開始できる。
【０１３４】
なお、本第３の実施形態による情報処理装置１Ｃのハードウェア構成としては、図１１を用いて説明した第１の実施形態による情報処理装置１に対して、復帰制御部２４０を追加してバス１０接続することで実現することができる。
【０１３５】
なお、上述では、第２の実施形態および第３の実施形態がそれぞれ独立して実施可能であるように説明したが、これはこの例に限定されない。すなわち、第２の実施形態および第３の実施形態を組み合わせて実施することも可能である。
【０１３６】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１３７】
１，１Ａ，１Ｂ，１Ｃ  情報処理装置
１０  バス
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＲＯＭ
１４  ＰＭＵ
１５  ＮＩＣ
１６，２２０，２２０’  転送制御部
１７  ＳＳＤ
２０，２１  ＤＭＡＣ
６０  空き状態
６１  割当済み状態
６２  バッファ済み状態
２００  記憶部
２１０  第１入出力デスクリプタ情報
２１１  データバッファ
２１２  第２入出力デスクリプタ情報
２１３，２１３’，２１３”  第１入出力部
２１４，２１４”  第２入出力部
２１５  間欠制御部
２３０  デスクリプタ情報更新代行部
２４０  復帰制御部
２４１  第１入出力復帰手順情報
２４２  第２入出力復帰手順情報
【図１】
0005694100.tif 000002
【図２】
0005694100.tif 000003
【図３】
0005694100.tif 000004
【図４】
0005694100.tif 000005
【図５】
0005694100.tif 000006
【図６】
0005694100.tif 000007
【図７】
0005694100.tif 000008
【図８】
0005694100.tif 000009
【図９】
0005694100.tif 000010
【図１０】
0005694100.tif 000011
【図１１】
0005694100.tif 000012
【図１２】
0005694100.tif 000013
【図１３】
0005694100.tif 000014
【図１４】
0005694100.tif 000015
【図１５】
0005694100.tif 000016