(57)【要約】【課題】  コマンドを受信して当該コマンドの処理を実行する情報処理装置において、受信したコマンドのタイムアウト監視を確実に行なって、コマンド発行元によってタイムアウトが検出されることを防止できるようにする。【解決手段】  コマンド受信部１０がコマンドを受信した受信時刻を、当該コマンドに対応付けてコマンドバッファ２０に格納するタイムスタンプ部３０と、コマンドバッファ２０に格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウトを検出する読出タイムアウト検出部５０とをそなえ、読出タイムアウト検出部５０によって読出タイムアウトが検出された場合、コマンド実行部４０が、読出タイムアウトを検出された当該コマンドをコマンドバッファ２０から読み出して実行する。【選択図】  図１
2006285514.tif 000002
【特許請求の範囲】
【請求項１】
コマンドを受信するコマンド受信部と、
該コマンド受信部によって受信されたコマンドを一時的に格納する先入れ先出し方式のコマンドバッファと、
前記コマンド受信部がコマンドを受信した受信時刻を、当該コマンドに対応付けて前記コマンドバッファに格納するタイムスタンプ部と、
前記コマンドバッファに格納されたコマンドを読み出して実行するコマンド実行部と、
前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウトを検出する読出タイムアウト検出部とをそなえ、
前記読出タイムアウト検出部によってコマンドの読出タイムアウトが検出された場合、前記コマンド実行部が、前記読出タイムアウトを検出された当該コマンドを前記コマンドバッファから読み出して実行することを特徴とする、情報処理装置。
【請求項２】
前記読出タイムアウト検出部が、
前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウト時刻を算出する算出部と、
該算出部によって算出された読出タイムアウト時刻を保持する保持部と、
該保持部に保持された前記読出タイムアウト時刻と現在時刻とを比較する比較部と、
該比較部による比較の結果、当該読出タイムアウト時刻になった場合、当該コマンドの読出タイムアウトを検出したものと判断してその旨を前記コマンド実行部に通知する通知部とをそなえて構成されていることを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記算出部が、コマンドの前記読出タイムアウト時刻が当該コマンドの発行元が管理する実際のタイムアウト時刻よりも早い時刻になるように、当該読出タイムアウト時刻を算出することを特徴とする、請求項１または請求項２記載の情報処理装置。
【請求項４】
前記コマンド受信部によって受信されたコマンドに含まれるコマンド属性情報に基づいて、当該コマンドが優先的に実行すべき優先コマンドであるか否かを判定するコマンド判定部をそなえ、
該コマンド判定部が、前記コマンド受信部によって受信されたコマンドを優先コマンドであると判定した場合に、前記コマンド実行部が、当該コマンドを前記コマンドバッファから読み出して優先的に実行することを特徴とする、請求項１〜請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
前記コマンド判定部によって優先コマンドであると判定されたコマンドが前記コマンドバッファに格納されると値を１つカウントアップする一方、前記コマンドバッファから優先コマンドが読み出されると値を１つカウントダウンするカウンタをそなえ、
前記コマンド実行部が、前記カウンタの値が０になるまで、前記コマンドバッファからコマンドを読み出すことにより、前記コマンド判定部によって優先コマンドであると判定されたコマンドを読み出すことを特徴とする、請求項４記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンド発行元（例えば、ＣＰＵ；Central Processing Unit）が発行したコマンドを受信して当該コマンドの処理を実行する情報処理装置に関する。
【背景技術】
【０００２】
従来から、コマンド発行元（例えば、ＣＰＵ；Central Processing Unit）が発行したコマンドを受信する受信部と、この受信部が受信したコマンドを実行する実行部とをそなえ、受信部がコマンドを受信すると、実行部が当該コマンドを直接受け取るように構成された情報処理装置（以下、第１の情報処理装置という）がある。この第１の情報処理装置では、コマンドを受信した時刻（受領時刻）を記録することによって、当該コマンドに対してコマンド発行元がタイムアウトを検出しないようにコマンドの実行制御を行なっている。
【０００３】
しかしながら、第１の情報処理装置では、実行部があるコマンドを実行中に、受信部が他のコマンドを受信すると、実行部は、実行中のコマンドを一時中断して受信部が受信した他のコマンドを受け取らなければならないため、受信部がコマンドを次々に受信した場合には、実行中のコマンドの処理をなかなか完了することができなくなってしまい、その結果、実行中の当該コマンドのタイムアウトが検出されてしまう場合がある。
【０００４】
しかも、実行部によって実行中のコマンドが他のコマンドに対して優先的に実行すべきものである場合、すぐに実行する必要のない他のコマンドを受け取るために時間を割かなければならない。このように、優先的に実行すべき当該コマンドの処理を中断することは、処理時間に制限のあるシステムの性能に致命的なダメージを与えてしまう。
そこで、受信部と実行部との間に先入れ先出し（ＦＩＦＯ：First In First Out）方式のバッファを介装し、このバッファに受信部が受信したコマンドを一時的に格納しておいて、実行部がコマンド実行に影響のないタイミングでバッファからコマンドを取り出す（読み出す）ようにした情報処理装置（以下、第２の情報処理装置という）がある。
【０００５】
なお、下記特許文献１には、先入れ先出し方式のバッファにコマンドを格納する技術が開示されている。
【特許文献１】特開平６−２８６２７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した第２の情報処理装置では、コマンドをバッファに一時的に格納している間の時間を計測できないため、コマンドのタイムアウト監視を正確にできないという課題がある。
つまり、コマンドのバッファに格納されている間の時間を計測できないため、実行部がバッファからコマンドを取り出すと、取り出したコマンドがタイムアウト間近であり、実行部による処理が間に合わずにタイムアウトが検出されてしまう場合や、さらには、コマンドがバッファに格納されている間（すなわち、実行部が当該コマンドをバッファから取り出す前）に、タイムアウトを検出されてしまう場合が生じてしまう。
【０００７】
さらに、上述した第２の情報処理装置では、受信部によって受信されたコマンドは一時的にバッファに格納されるため、他のコマンドよりも優先的に実行すべきコマンドを受信した場合でも、当該コマンドは一時的にバッファに格納されてしまい、その結果、実行部は、当該コマンドをバッファから取り出して初めて他のコマンドよりも優先的に実行すべきコマンドが発行されていたことを認識する。
【０００８】
したがって、第２の情報処理装置では、コマンド発行元から他のコマンドよりも優先的に実行すべきコマンドが発行された場合でも、実行部が当該コマンドをバッファから取り出すまでの間は実行されることがなく、他のコマンドよりも優先的に実行すべきコマンドに対して的確に対処することができないという課題がある。
本発明は、このような課題に鑑み創案されたもので、コマンド発行元が発行したコマンドを受信して当該コマンドの処理を実行する情報処理装置において、受信したコマンドのタイムアウト監視を確実に行なって、コマンド発行元によってタイムアウトが検出されることを防止することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の情報処理装置は、コマンドを受信するコマンド受信部と、このコマンド受信部によって受信されたコマンドを一時的に格納する先入れ先出し方式のコマンドバッファと、前記コマンド受信部がコマンドを受信した受信時刻を、当該コマンドに対応付けて前記コマンドバッファに格納するタイムスタンプ部と、前記コマンドバッファに格納されたコマンドを読み出して実行するコマンド実行部と、前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウトを検出する読出タイムアウト検出部とをそなえ、前記読出タイムアウト検出部によってコマンドの読出タイムアウトが検出された場合、前記コマンド実行部が、前記読出タイムアウトを検出された当該コマンドを前記コマンドバッファから読み出して実行することを特徴としている（請求項１）。
【００１０】
なお、前記読出タイムアウト検出部が、前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウト時刻を算出する算出部と、この算出部によって算出された読出タイムアウト時刻を保持する保持部と、この保持部に保持された前記読出タイムアウト時刻と現在時刻とを比較する比較部と、この比較部による比較の結果、当該読出タイムアウト時刻になった場合、当該コマンドの読出タイムアウトを検出したものと判断してその旨を前記コマンド実行部に通知する通知部とをそなえて構成されていることが好ましい（請求項２）。
【００１１】
また、前記算出部が、コマンドの前記読出タイムアウト時刻が当該コマンドの発行元が管理する実際のタイムアウト時刻よりも早い時刻になるように、当該読出タイムアウト時刻を算出することが好ましい（請求項３）。
さらに。前記コマンド受信部によって受信されたコマンドに含まれるコマンド属性情報に基づいて、当該コマンドが優先的に実行すべき優先コマンドであるか否かを判定するコマンド判定部をそなえ、このコマンド判定部が、前記コマンド受信部によって受信されたコマンドを優先コマンドであると判定した場合に、前記コマンド実行部が、当該コマンドを前記コマンドバッファから読み出して優先的に実行することが好ましい（請求項４）。
【００１２】
なお、前記コマンド判定部によって優先コマンドであると判定されたコマンドが前記コマンドバッファに格納されると値を１つカウントアップする一方、前記コマンドバッファから優先コマンドが読み出されると値を１つカウントダウンするカウンタをそなえ、前記コマンド実行部が、前記カウンタの値が０になるまで、前記コマンドバッファからコマンドを読み出すことにより、前記コマンド判定部によって優先コマンドであると判定されたコマンドを読み出すことが好ましい（請求項５）。
【発明の効果】
【００１３】
このように、本発明によれば、コマンドの受信時刻に基づいて、読出タイムアウト検出部によって読出タイムアウトが検出されると、コマンド実行部が読出タイムアウトを検出されたコマンドをコマンドバッファから読み出して実行するため、受信したコマンドのタイムアウト監視を確実に行ないながら、コマンド発行元によってタイムアウトが検出されることを防止することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の一実施形態について
まず、図１に示すブロック図を参照しながら、本発明の一実施形態としての情報処理装置の構成について説明する。この図１に示すように、本情報処理装置１は、コマンド受信部１０，コマンドバッファ２０，タイムスタンプ部３０，コマンド実行部４０，読出タイムアウト検出部５０，及び送受信部６０をそなえて構成されている。
【００１５】
コマンド受信部１０は、コマンド発行元（例えば、１または複数のＣＰＵ；Central Processing Unit）２から発行されたコマンドを受信して、当該コマンドをコマンドバッファ２０に格納するものであり、さらに、コマンド判定部１１及び優先コマンド通知部１２をそなえて構成されている。
コマンド判定部１１は、コマンド受信部１０によって受信されたコマンドに含まれるコマンド属性情報に基づいて、当該コマンドが他のコマンドよりも優先的に実行すべきコマンド（優先コマンド）であるか否かを判定するものである。
【００１６】
ここで、コマンド受信部１０によって受信されたコマンドには、（１）コマンド発行元情報（InitID；Initiator Identification），（２）コマンド属性情報，及び（３）コマンド内容の３つのコマンド情報が含まれている。
まず、（１）コマンド発行元情報は、当該コマンドの発行元を示す情報である。
次に、（２）コマンド属性情報は、当該コマンドの属性を示すものであり、例えば、（ａ）Head Of Queue，（ｂ）Ordered，（ｃ）Simpleのいずれかを示している。
【００１７】
コマンド属性情報が（ａ）Head Of Queueである場合は、当該コマンドが他のコマンドよりも優先的に実行すべきコマンド（以下、優先コマンドという）であることを示している。
また、コマンド属性情報が（ｂ）Orderedである場合は、当該コマンドが実行順序を変更すべきでないコマンドであることを示している。
【００１８】
さらに、コマンド属性情報が、（ｃ）Simpleである場合は、当該コマンドが実行順序の変更が可能なコマンドであることを示している。
そして、（３）コマンド内容は、当該コマンドの処理（リード／ライト）内容を示すものである。
したがって、コマンド判定部１１は、コマンド受信部１０によって受信されたコマンドに含まれる（２）コマンド属性情報が、（ａ）Head Of Queueである場合には、当該コマンドが優先コマンドであると判定する。
【００１９】
優先コマンド通知部１２は、コマンド判定部１１がコマンド受信部１０によって受信されたコマンドが優先コマンドであると判定した場合に、コマンド実行部４０に対して、コマンド受信部１０が優先コマンドを受信した旨を通知するものである。
コマンドバッファ２０は、先入れ先出し（ＦＩＦＯ：First In First Out）方式の記憶部であり、コマンド受信部１０によって受信されたコマンドを一時的に格納するものである。
【００２０】
タイムスタンプ部３０は、コマンド受信部１０がコマンドを受信した受信時刻を、当該コマンドに対応付けてコマンドバッファ２０に格納するものであり、現在時刻を示す時計３１をそなえて構成されている。
したがって、コマンドバッファ２０には、コマンド毎に、コマンド情報としての（１）コマンド発行元情報，（２）コマンド属性情報，及び（３）コマンド内容と、（４）コマンド受信時刻とが格納される。
【００２１】
コマンド実行部４０は、コマンドバッファ２０に格納されたコマンドを読み出して（取り出して）実行するものであり、コマンド読出部４１，コマンドキュー４２，コマンド処理部４３，コマンド選択部４４，カウンタ４５，及び算出部５１をそなえて構成されている。なお、算出部５１は、読出タイムアウト検出部５０として機能するものであるため、後述する読出タイムアウト検出部５０の説明部分において詳述する。
【００２２】
コマンド読出部４１は、コマンドバッファ２０からコマンドを読み出すものであり、コマンド処理部４３によるコマンド実行処理に影響がないタイミングで、コマンドバッファ２０からコマンドを読み出す。
コマンドキュー４２は、コマンド読出部４１によって読み出されたコマンドを保持するものである。
【００２３】
コマンド処理部４３は、コマンドキュー４２に保持されたコマンドを取り出して実行するものである。
コマンド選択部４４は、コマンドキュー４２に保持される複数のコマンドの中から、コマンドに含まれるコマンド情報に基づいて、優先的に実行すべきコマンドを選択するものである。つまり、コマンド選択部４４は、コマンド処理部４３があるコマンドの処理を実行している場合には、コマンド処理部４３によって次に実行すべきコマンドを選択する。
【００２４】
例えば、コマンド選択部４４は、コマンドキュー４２に優先コマンドが保持されている場合には、当該優先コマンドを選択する。
したがって、コマンド処理部４３は、コマンド選択部４４によってコマンドが選択された場合には、当該コマンドをコマンドキュー４３から優先的に取り出して実行する。
また、コマンド選択部４４は、コマンドの受信時刻や後述する読出タイムアウト時刻等に基づいて、コマンド発行元２にタイムアウトを検出されるおそれが最も大きいコマンドを選択する。
【００２５】
さらに、コマンド選択部４４は、コマンドのタイムアウト（読出タイムアウトもしくはコマンド発行元２が管理するタイムアウト）が検出されない範囲で、コマンド内容及びコマンド属性情報に基づいて、複数のコマンドを効率良く実行すべく、コマンドを選択する。例えば、同一のディスクに対するアクセスを実行する複数のコマンドがコマンドキュー４２に保持されている場合、コマンド選択部４４は、これら複数のコマンドがコマンド処理部４３によって連続して実行されるように、コマンドを選択する。
【００２６】
カウンタ４５は、コマンドバッファ２０に格納されている優先コマンドの数をカウントするものであり、コマンド判定部１１によって優先コマンドであると判定されたコマンドがコマンドバッファ２０に格納されると値を１つカウントアップする一方、コマンドバッファ２０からコマンド読出部４１によって優先コマンドが読み出されると値を１つカウントダウンする。
【００２７】
ここで、優先コマンド通知部１２によってコマンド受信部１０が優先コマンドを受信した旨を通知された場合の、コマンド実行部４０の動作について説明すると、優先コマンド通知部１２によってコマンド受信部１０が優先コマンドを受信した旨を通知されると、まず、コマンド読出部４１が、コマンド処理部４３によるコマンド実行処理に影響がないタイミングで、即座に当該優先コマンドをコマンドバッファ２０から読み出す。このとき、コマンド読出部４１は、カウンタ４５に基づいて、カウンタ４５の値が“０”になるまでコマンドバッファ２０からコマンドを読み出すことにより、当該優先コマンドを読み出す。
【００２８】
そして、コマンド読出部４１によって読み出された優先コマンドがコマンドキュー４２に保持され、コマンド選択部４４が当該優先コマンドを選択することにより、コマンド処理部４３が当該優先コマンドの処理を優先的に実行する。
また、図１に示すように、読出タイムアウト検出部５０は、コマンドバッファ２０に格納されたコマンドの中で最初に格納された（つまり、最も古い）コマンドの受信時刻に基づいて、当該コマンドの読出タイムアウトを検出するものであり、算出部５１，保持部５２，比較部５３，及び通知部５４をそなえて構成されている。
【００２９】
ここで、読出タイムアウトとは、コマンド発行元２が管理するコマンドのタイムアウトとは異なり、コマンド発行元２がタイムアウトを検出することを防止するために設定された、コマンドバッファ２０からのコマンドの読み出し処理に対するタイムアウトである。
つまり、読出タイムアウトは、コマンド読出部４１がコマンドバッファ２０からコマンドを読み出して、コマンド処理部４３が当該コマンドの処理を実行しても、コマンド発行元２が当該コマンドに対してタイムアウトを検出しない範囲で設定され、したがって、読出タイムアウト検出部５０は、コマンド発行元２がタイムアウトを検出するよりも早く読出タイムアウトを検出する。
【００３０】
このため、後述する図４を参照しながら詳述するように、本情報処理装置１では、読出タイムアウト検出部５０がコマンドの読出タイムアウトを検出しても、その後、当該コマンドをコマンド読出部４１が読み出してコマンドキュー４２に格納し、コマンド選択部４４が当該コマンドを選択してコマンド処理部４３が当該コマンドの処理を優先的に実行することにより、コマンド発行元２が当該コマンドのタイムアウトを検出する前に当該コマンドの処理を完了することができる。
【００３１】
算出部５１は、コマンドバッファ２０に格納されたコマンドの中で最初に格納されたコマンドの受信時刻と、当該コマンドのコマンド情報であるコマンド内容とに基づいて、当該コマンドの読出タイムアウト時刻を算出するものである。
具体的には、算出部５１は、コマンドバッファ２０に格納されたコマンドの中で最初に格納されたコマンドのコマンド内容に基づいて、当該コマンドがリードコマンドであるかライトコマンドであるかのコマンドの種別を判断し、コマンドの種別毎に予め設定された時間を、当該コマンドの受信時刻に加えることによって、コマンド発行元２が管理する当該コマンドの実際のタイムアウト時刻よりも早い時刻になるように、当該コマンドの読出タイムアウト時刻を算出する。
【００３２】
つまり、算出部５１が読出タイムアウト時刻を算出するためにコマンドの受信時刻に加えるコマンドの種別毎の時間は、コマンド発行元２が管理するコマンドの種別毎のタイムアウト時間に対して、少なくとも、コマンド読出部４１が当該コマンドを読み出してコマンド処理部４２が当該コマンドの処理を実行するのに必要な時間分は短く設定されている。これにより、読出タイムアウト検出部５０による読出タイムアウトの検出によって、コマンド発行元２によるタイムアウトの検出を防止できるようになる。
【００３３】
また、算出部５１は、コマンド実行部４０のコマンド読出部４１がコマンドバッファ２０からコマンドを読み出す度に、読出タイムアウト時刻を算出し、算出した読出タイムアウト時刻を、読出タイムアウト時刻を保持する保持部５２に更新保持させる。
比較部５３は、保持部５２に保持された読出タイムアウト時刻と現在時刻とを比較するものであり、ここでは、タイムスタンプ部３０の時計３１を用いて、読出タイムアウト時刻と現在時刻とを比較する。
【００３４】
通知部５４は、比較部５３による比較の結果、現在時刻が保持部５２に保持された読出タイムアウト時刻になった場合、当該コマンドの読出タイムアウトを検出したものと判断して、その旨をコマンド実行部４０に通知するものである。
なお、通知部５４が読出タイムアウトの検出通知を行なった場合のコマンド実行部４０の動作については、後述する図４を参照しながら説明する。
【００３５】
送受信部６０は、コマンド発行元２とコマンド実行部４０との間での情報の送受信を行なうものであり、例えば、コマンド発行元２がタイムアウトを検出した場合には、かかるタイムアウトが、送受信部６０を介して、コマンド実行部４０に通知される。また、コマンド処理部４３によるコマンド実行処理の結果も、送受信部６０によって、コマンド実行部４０からコマンド発行元２に渡される。
【００３６】
次に、図２に示すフローチャート（ステップＳ１０〜Ｓ１４）を参照しながら、本情報処理装置１のコマンドを受信してから当該コマンドをコマンドバッファ２０に格納するまでの動作について説明する。
まず、コマンド発行元２から発行されたコマンドをコマンド受信部１０が受信すると（ステップＳ１０）、コマンド判定部１１が、当該コマンドのコマンド属性情報に基づいて、当該コマンドが優先コマンドであるか否かを判定する（ステップＳ１１）。
【００３７】
ここで、コマンド判定部１１が当該コマンドを優先コマンドであると判定すると（ステップＳ１１のＹｅｓルート）、優先コマンド通知部１２がコマンド実行部１３に対して優先コマンドを受信したことを通知し（ステップＳ１２）、コマンド受信部１０が当該コマンド（コマンド情報）をコマンドバッファ２０に格納する（ステップＳ１３）。
一方、コマンド判定部１１が当該コマンドを優先コマンドではないと判定すると（ステップＳ１１のＮｏルート）、上記ステップＳ１２をスキップして、コマンド受信部１０が当該コマンドをコマンドバッファ２０に格納する（ステップＳ１３）。
【００３８】
そして、タイムスタンプ部３０が、コマンドバッファ２０に格納された当該コマンドのコマンド情報と対応付けて、当該コマンドの受信時刻を格納して（当該コマンドのコマンド情報に受信時刻を加えて；ステップＳ１４）、処理を終了する。
次に、図３に示すフローチャート（ステップＳ１５〜Ｓ１８）を参照しながら、本情報処理装置１のコマンドバッファ２０からコマンドを読み出す際の動作について説明すると、まず、コマンド読出部４１が、コマンド処理部４３によって実行中のコマンド処理に影響が無いタイミングで、コマンドバッファ２０からコマンドを読み出す（ステップＳ１５）。
【００３９】
次いで、コマンドキュー４２が、コマンド読出部４１によってコマンドバッファ２０から読み出されたコマンドを保持する（ステップＳ１６）。
また、これと同時に、読出タイムアウト検出部５０の算出部５１が、コマンドバッファ２０から読み出されたコマンドの次にコマンドバッファ２０に格納されたコマンド（つまり、コマンドバッファ２０の中で最も古いコマンド）のコマンド情報に基づいて、当該コマンドの読出タイムアウト時刻を算出し（ステップＳ１７）、さらに、算出部５１が、算出した読出タイムアウト時刻を保持部５２にセット（更新保持）して（ステップＳ１８）、処理を終了する。
【００４０】
次に、図４に示すフローチャート（ステップＳ２０〜Ｓ３２）を参照しながら、本情報処理装置１のコマンド実行部４０による処理動作について説明すると、コマンド実行ループが開始されると（ステップＳ２０）、まず、コマンド実行部４０が、優先コマンド通知部１２からの優先コマンドの受信通知があるか否かを確認し（ステップＳ２１）、ここで、優先コマンド通知部１２から優先コマンドの受信通知がある場合（ステップＳ２１のＹｅｓルート）、コマンド読出部４１が、カウンタ４５の値が“０”になるまでコマンドバッファ２０からコマンドを読み出すことによって、当該優先コマンドを読み出してコマンドキュー４２に保持させる（ステップＳ２２）。そして、コマンド実行部４０は、コマンド実行ループの終点から再度コマンド実行ループの始点に戻る（ステップＳ３２，Ｓ２０）。
【００４１】
一方、優先コマンド通知部１２からの優先コマンドの受信通知がない場合（ステップＳ２１のＮｏルート）、コマンド実行部４０は、読出タイムアウト検出部５０の通知部５４からの読出タイムアウトの検出通知があるか否かを確認する（ステップＳ２３）。
ここで、通知部５４からの読出タイムアウトの検出通知がある場合（ステップＳ２３のＹｅｓルート）、コマンド読出部４１が、コマンドバッファ２０からコマンドを１つ読み出すことによって、当該読出タイムアウトが検出されたコマンドを読み出して、当該コマンドをコマンドキュー４２に保持させる（ステップＳ２４）。そして、コマンド実行部４０は、コマンド実行ループの終点から再度コマンド実行ループの始点に戻る（ステップＳ３２，Ｓ２０）。
【００４２】
一方、通知部５４からの読出タイムアウトの検出通知がない場合（ステップＳ２３のＮｏルート）、コマンド実行部４０は、コマンドキュー４２にコマンドが保持されておらず、コマンドキュー４２が空の状態であるか否かを確認する（ステップＳ２５）。
ここで、コマンドキュー４２が空であれば（ステップＳ２５のＹｅｓルート）、コマンド読出部４１が、コマンドバッファ２０からコマンドを１つ読み出して、コマンドキュー４２に保持させる（ステップＳ２４）。
【００４３】
そして、コマンド実行部４０は、コマンド実行ループの終点から再度コマンド実行ループの始点に戻る（ステップＳ３２，Ｓ２０）。
一方、コマンドキュー４２が空でなければ（ステップＳ２５のＮｏルート）、コマンド処理部４３が、コマンド選択部４４によるコマンド選択に基づいてコマンドキュー４２からコマンドを取得する（ステップＳ２６）。
【００４４】
なお、上記ステップＳ２２において取得された優先コマンドや、上記ステップＳ２４において取得された読出タイムアウトが検出されたコマンドは、このステップＳ２６において、コマンド選択部４４によって、コマンドキュー４２に保持された他のコマンドの優先度と比較された上で優先的に選択され、コマンド処理部４３によって優先的に処理を実行される。
【００４５】
これにより、優先コマンドに対してはコマンド処理部４３が迅速な処理を行なうことができるとともに、読出タイムアウトを検出されたコマンドに対しては、コマンド発行元２がタイムアウトを検出するよりも前に当該コマンドの処理を完了させることができるようになる。
次いで、コマンド処理部４３は、取得したコマンドを解析し（ステップＳ２７）、コマンド実行準備を行なう（ステップＳ２８）。
【００４６】
なお、コマンド処理部４３が行なうコマンドのコマンド実行準備では、例えば、当該コマンドがハードディスクにデータを書き込むものである場合や、ハードディスクからデータを読み出すものである場合には、コマンド処理部４３が、外部のハードディスクのコントローラ（ＨＤＣ：Hard Disk Controller）等に当該コマンドをセットアップする。
そして、コマンド処理部４３がコマンド処理の実行をスタートする（ステップＳ２９）が、この時点から、当該コマンド処理の実行が終了する（ステップＳ３１）までの間は、コマンド読出部４１によるコマンドバッファ２０からのコマンド読出処理が、コマンド処理部４３が実行中のコマンド処理に影響を与えないため、コマンド読出部４１が、可能な限りコマンドバッファ２０からコマンドを一つずつ読み出してコマンドキュー４２に保持させる（ステップＳ３０）。
【００４７】
そして、コマンド処理部４３によるコマンド処理が終了すると（ステップＳ３１）、コマンド実行部４０は、コマンド実行ループの終点から再度コマンド実行ループの始点に戻り（ステップＳ３２，Ｓ２０）、上述したステップＳ２０〜Ｓ３１までの処理を繰り返し実行する。
なお、ここでは、図４を参照しながら、コマンド実行部４０が、コマンド実行ループの開始時点で優先コマンド受信通知及び読出タイムアウト検出通知を確認する場合について説明したが（上記ステップＳ２１，Ｓ２３参照）、本情報処理装置１のコマンド実行部４０は、コマンドに対する処理を実行中（つまり、上記ステップＳ２６〜Ｓ３０の間）に、優先コマンド通知部１２から優先コマンドの受信通知を受け取ると、上記ステップＳ３０に示すタイミングで、コマンド読出部４１が上記ステップＳ２２と同様の処理を実行して、コマンドバッファ２０から当該優先コマンドを読み出してコマンドキュー４２に保持させる。
【００４８】
さらに、本情報処理装置１のコマンド実行部４０は、コマンドに対する処理を実行中（つまり、上記ステップＳ２６〜Ｓ３０の間）に、読出タイムアウト検出部５０の通知部５４から読出タイムアウトの検出を通知されると、上記ステップＳ３０に示すタイミングで、コマンド読出部４１が上記ステップＳ２４と同様の処理を実行して、コマンドバッファ２０から当該読出タイムアウトを検出されたコマンドを読み出してコマンドキュー４２に保持させる。
【００４９】
このように、本発明の一実施形態としての情報処理装置１によれば、タイムスタンプ部３０によって、コマンド受信部１０によって受信されたコマンドに対応付けて当該コマンドの受信時刻がコマンドバッファ２０に格納され、読出タイムアウト検出部５０の算出部５１が、かかる受信時刻に基づいて、当該コマンドの読出タイムアウト時刻を算出し、この読出タイムアウト時刻になると通知部５４がコマンド実行部４０に当該コマンドの読出タイムアウトの検出を通知するように構成され、さらに、コマンド読出部４１が当該読出タイムアウトの検出を通知されると、当該コマンドをコマンドバッファ２０から読み出してコマンドキュー４２に保持させ、コマンド選択部４４が当該コマンドを選択することにより、コマンド処理部４３が当該コマンドの処理を迅速に且つ優先的に実行するように構成されているため、コマンドバッファ２０に一時的に格納されたコマンドに対してタイムアウト監視を確実に行なって、コマンド発行元２によってタイムアウトが検出される前にコマンドを実行することができ、コマンド発行元２によってタイムアウトを検出されることを防止することができる。
【００５０】
このため、本情報処理装置１では、タイムアウトを検出された際に必要なエラー処理を実行せずにすむため、安定した性能を提供することができる。
例えば、コマンド発行元２によって発行されたコマンドが、ディスクドライブを用いるコマンド（リード要求もしくはライト要求）である場合、コマンド処理部４３による１つのコマンドの実行時間が２ｍｓだとすると、５つのコマンドで１０ｍｓの時間を要する。
【００５１】
しかしながら、コマンド発行元２によってタイムアウトが検出されてエラー処理を行なうと、例えばディスクの回転待ちが生じてしまう。ここでディスクの回転数が７２００ｒｐｍである場合には、１周の回転待ち時間はおよそ８ｍｓとなり、この分コマンドの実行時間が延びてしまうことになり、タイムアウトが検出されてエラー処理を実行した場合には、５つのコマンドで１８ｍｓの時間を要することになり、コマンドの実行時間が大幅に遅れて、５０％近い性能ダウンを余儀なくされてしまう。
【００５２】
したがって、タイムアウトが検出されることを防止することによって、安定した性能を提供することができるのである。
さらに、本情報処理装置１によれば、優先コマンド通知部１２によって優先コマンドを受信した旨がコマンド実行部４０に通知されると、コマンド読出部４１がコマンド処理部４３によるコマンド処理の実行に影響がないタイミングで即座に、カウンタ４５の値が“０”になるまでコマンドバッファ２０からコマンドを読み出すことによって、当該優先コマンドをコマンドバッファ２０から読み出す。
【００５３】
これにより、コマンド読出部４１によってコマンドバッファ２０から当該優先コマンドを確実に読み出すことができるとともに、当該優先コマンドを読み出すため、コマンドバッファ２０に格納されたすべてのコマンドを読み出す必要がなく、当該優先コマンドがコマンドバッファ２０に格納されてからコマンド読出部４１によって読み出されるまでの間にコマンドバッファ２０に格納された無用なコマンドについては読み出さない（つまり、優先コマンド通知部１２によって通知を受けてから当該優先コマンドをコマンドバッファ２０から読み出すまでの間にコマンドバッファ２０に格納された無用なコマンドを読み出すことがない）ため、その結果、コマンドバッファ２０から当該優先コマンドを効率良く読み出すことができ、当該優先コマンドに対して迅速な処理を行なうことができるようになる。
【００５４】
また、コマンド読出部４１によって読み出されてコマンドキュー４２に保持された当該優先コマンドは、コマンド選択部４４によって選択されてコマンド処理部４３によって優先的に実行されるため、コマンド発行元２から発行された優先コマンドの処理をコマンド処理部４３が即座に実行することができ、優先コマンドに対して的確に対処することができる。
【００５５】
〔２〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、コマンド実行部４０がカウンタ４５をそなえて構成された例をあげて説明したが、本発明はこれに限定されるものではなく、カウンタ４５を例えばコマンド受信部１０がそなえるように構成してもよい。
【００５６】
さらには、本発明の情報処理装置はカウンタ４５をそなえずに構成されていてもよく、この場合には、優先コマンド通知部１２によって、優先コマンドを受信した旨がコマンド実行部４０に通知されると、コマンド読出部４１が、コマンドバッファ２０に格納されているすべてのコマンドを読み出すことにより、当該優先コマンドをコマンドバッファ２０から読み出す。これにより、コマンドバッファ２０に格納された優先コマンドを確実に読み出すことができる。
【００５７】
また、上述した実施形態では、読出タイムアウト検出部５０の算出部５１が、読出タイムアウト時刻を算出するように構成したが、本発明はこれに限定されるものではなく、算出部５１が、コマンドバッファ２０に格納されたコマンドの中で最初に格納されたコマンドの受信時刻とコマンド種別とに基づいて、当該コマンドの読出タイムアウトを検出するまでの残り時間（読出タイムアウト時間）を算出するように構成してもよい。この場合、読出タイムアウト検出部５０が、比較部５３の代わりに、かかる残り時間を計る計時部をそなえるように構成して、この計時部が、かかる残り時間の経過を検知すると、通知部５４が当該コマンドの読出タイムアウトを検出した旨をコマンド実行部４０に通知するように構成することにより、上述した実施形態と同様の効果を得ることができる。
【００５８】
さらに、上述した実施形態では、コマンド実行部４０のコマンド選択部４４が、コマンドキュー４２に保持されたコマンドの中から優先的に実行すべきコマンドを選択するように構成したが、本発明はこれに限定されるものではなく、コマンド実行部４０が、コマンドキュー４２に保持された複数のコマンドを、コマンド処理部４３による処理順番に適宜（例えば、コマンドキュー４２に新たにコマンドが保持される度に）並び換えるように構成してもよく、これによっても上述した実施形態と同様の効果を得ることができる。
【００５９】
また、上述した実施形態において、何らかの原因によってコマンド発行元２がタイムアウトを検出してしまった場合には、コマンド実行部４０のコマンド処理部４３が当該タイムアウトを検出されたコマンドのエラー処理を実行するように構成してもよい。
この場合、本発明の情報処理装置１では、コマンドバッファ２０に格納されている複数のコマンドのそれぞれに、受信時刻が付加されていることに鑑み、タイムアウトを検出されたコマンドのエラー処理が完了すると、コマンド実行部４０が、次のコマンドの受信時刻に基づいて、当該コマンドがコマンド発行元２によってタイムアウトを検出されるか否かを判断し、タイムアウトを検出されないと判断した場合には、当該コマンドと、当該コマンドよりも受信時刻の遅い他のコマンドについてはエラー処理を実行してキャンセルすることなく、通常の処理を実行する一方、タイムアウトを検出されると判断した場合には、当該コマンドのエラー処理を実行して、さらに、次のコマンドに対して当該コマンドと同様の処理を行なうように構成することが好ましい。
【００６０】
つまり、あるコマンドに対してコマンド発行元２によってタイムアウトが検出された場合に、コマンド実行部４０が、受信時刻に基づいて、コマンド一つ一つに対してコマンド発行元２によってタイムアウトが検出されるか否かを判断するように構成することが好ましい。
これにより、上述した従来の第１，２の情報処理装置では、タイムアウトエラーが検出されると、このエラー処理のためにコマンドバッファ２０に格納されているすべてのコマンドもタイムアウトを検出されると想定して、コマンドバッファ２０に格納されているすべてのコマンドをキャンセルするように構成されているのに対して、本発明の情報処理装置では、コマンド実行部４０が、一つのコマンドに対してコマンド発行元２からタイムアウトが検出されても、他のコマンドに対してタイムアウトを検出されないと判断した場合には、すべてのコマンドをキャンセルすることがないため、無駄なタイムアウトエラー処理をなくすことができる。
【００６１】
なお、上述したコマンド受信部１０，コマンド判定部１１，優先コマンド通知部１２，タイムスタンプ部３０，コマンド受信部４１，コマンド処理部４３，コマンド選択部４４，カウンタ４５，算出部５１，保持部５２，比較部５３，通知部５４，及び送受信部６０としての機能は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（コマンド実行プログラム）を実行することによって実現されてもよい。
【００６２】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど）等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からコマンド実行プログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、それらのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
【００６３】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
【００６４】
上記コマンド実行プログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、コマンド受信部１０，コマンド判定部１１，優先コマンド通知部１２，タイムスタンプ部３０，コマンド受信部４１，コマンド処理部４３，コマンド選択部４４，カウンタ４５，算出部５１，保持部５２，比較部５３，通知部５４，及び送受信部６０としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００６５】
なお、本実施形態としての記録媒体としては、上述したフレキシブルディスク，ＣＤ，ＤＶＤ，磁気ディスク，光ディスク，光磁気ディスクのほか、ＩＣカード，ＲＯＭカートリッジ，磁気テープ，パンチカード，コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ），外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
【００６６】
〔３〕付記
（付記１）
コマンドを受信するコマンド受信部と、
該コマンド受信部によって受信されたコマンドを一時的に格納する先入れ先出し方式のコマンドバッファと、
前記コマンド受信部がコマンドを受信した受信時刻を、当該コマンドに対応付けて前記コマンドバッファに格納するタイムスタンプ部と、
前記コマンドバッファに格納されたコマンドを読み出して実行するコマンド実行部と、
前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウトを検出する読出タイムアウト検出部とをそなえ、
前記読出タイムアウト検出部によってコマンドの読出タイムアウトが検出された場合、前記コマンド実行部が、前記読出タイムアウトを検出された当該コマンドを前記コマンドバッファから読み出して実行することを特徴とする、情報処理装置。
【００６７】
（付記２）
前記読出タイムアウト検出部が、
前記コマンドバッファに格納されたコマンドの中で最初に格納されたコマンドの受信時刻に基づいて、当該コマンドの読出タイムアウト時刻を算出する算出部と、
該算出部によって算出された読出タイムアウト時刻を保持する保持部と、
該保持部に保持された前記読出タイムアウト時刻と現在時刻とを比較する比較部と、
該比較部による比較の結果、当該読出タイムアウト時刻になった場合、当該コマンドの読出タイムアウトを検出したものと判断してその旨を前記コマンド実行部に通知する通知部とをそなえて構成されていることを特徴とする、付記１記載の情報処理装置。
【００６８】
（付記３）
前記算出部が、前記コマンド実行部が前記コマンドバッファからコマンドを読み出す度に、前記読出タイムアウト時刻を算出するとともに、算出された当該読出タイムアウト時刻を前記保持部に更新保持させることを特徴とする、付記２記載の情報処理装置。
（付記４）
前記算出部が、コマンドの前記受信時刻と、当該コマンドの種別とに基づいて、前記読出タイムアウト時刻を算出することを特徴とする、付記２または付記３記載の情報処理装置。
【００６９】
（付記５）
前記算出部が、コマンドの前記読出タイムアウト時刻が当該コマンドの発行元が管理する実際のタイムアウト時刻よりも早い時刻になるように、当該読出タイムアウト時刻を算出することを特徴とする、付記２〜付記４のいずれか１項に記載の情報処理装置。
（付記６）
前記コマンド実行部が、
前記コマンドバッファからコマンドを読み出すコマンド読出部と、
該コマンド読出部によって読み出されたコマンドを保持するコマンドキューと、
該コマンドキューに保持されたコマンドを取り出して実行するコマンド処理部と、
前記コマンドキューに保持される複数のコマンドの中から優先的に実行すべきコマンドを選択するコマンド選択部とをそなえ、
前記コマンド処理部が、前記コマンド選択部によって選択されたコマンドを前記コマンドキューから優先的に取り出して実行することを特徴とする、付記１〜付記５のいずれか１項に記載の情報処理装置。
【００７０】
（付記７）
前記コマンド受信部によって受信されたコマンドに含まれるコマンド属性情報に基づいて、当該コマンドが優先的に実行すべき優先コマンドであるか否かを判定するコマンド判定部をそなえ、
該コマンド判定部が、前記コマンド受信部によって受信されたコマンドを優先コマンドであると判定した場合に、前記コマンド実行部が、当該コマンドを前記コマンドバッファから読み出して優先的に実行することを特徴とする、付記１〜付記６のいずれか１項に記載の情報処理装置。
【００７１】
（付記８）
前記コマンド実行部が、前記コマンドバッファに格納されているすべてのコマンドを読み出すことにより、前記コマンド判定部によって優先コマンドであると判定されたコマンドを読み出すことを特徴とする、付記７記載の情報処理装置。
（付記９）
前記コマンド判定部によって優先コマンドであると判定されたコマンドが前記コマンドバッファに格納されると値を１つカウントアップする一方、前記コマンドバッファから優先コマンドが読み出されると値を１つカウントダウンするカウンタをそなえ、
前記コマンド実行部が、前記カウンタの値が０になるまで、前記コマンドバッファからコマンドを読み出すことにより、前記コマンド判定部によって優先コマンドであると判定されたコマンドを読み出すことを特徴とする、付記７記載の情報処理装置。
【図面の簡単な説明】
【００７２】
【図１】本発明の一実施形態としての情報処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態としての情報処理装置のコマンド受信部によるコマンド受信の処理手順を説明するためのフローチャートである。
【図３】本発明の一実施形態としての情報処理装置のコマンドバッファからのコマンド読出時の処理手順を説明するためのフローチャートである。
【図４】本発明の一実施形態としての情報処理装置のコマンド実行部による処理手順を説明するためのフローチャートである。
【符号の説明】
【００７３】
１  情報処理装置
２  コマンド発行元
１０  コマンド受信部
１１  コマンド判定部
１２  優先コマンド通知部
２０  コマンドバッファ
３０  タイムスタンプ部
３１  時計
４０  コマンド実行部
４１  コマンド読出部
４２  コマンドキュー
４３  コマンド処理部
４４  コマンド選択部
４５  カウンタ
５０  読出タイムアウト検出部
５１  算出部
５２  保持部
５３  比較部
５４  通知部
６０  送受信部
【図１】
2006285514.tif 000003
【図２】
2006285514.tif 000004
【図３】
2006285514.tif 000005
【図４】
2006285514.tif 000006