(57)【要約】【課題】  リトライ処理によりリクエスト処理の処理性能が低下するという問題を解決したリクエスト処理装置を提供する。【解決手段】  リクエスト処理装置１００のリクエスト受信部３００は、リクエスト送信部２００から受信したリクエスト５０１が処理できない場合、リトライ情報を含むリトライ要求５０２をリクエスト送信部２００に送信する。リクエスト送信部２００は、リトライ要求５０２に含まれるリトライ情報をもとにリクエスト受信部３００がリトライを処理可能となるタイミングを求め、リトライのリクエスト５０１をリクエスト受信部３００に送信する。【選択図】      図１
2009037439.tif 000002
【特許請求の範囲】
【請求項１】
リクエスト受信部、及び、リクエスト送信部を含むリクエスト処理装置であって、
前記リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信する前記リクエスト受信部と、
前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信する前記リクエスト送信部と
を備えたことを特徴とするリクエスト処理装置。
【請求項２】
前記リトライ情報には、前記リクエスト受信部における前記リトライ要求を送信する時点からのリトライの処理順番を求めるための情報を含み、前記リクエスト送信部は、前記リクエストのリトライの処理順番を求めるための情報とリクエストの処理時間をもとに、前記リクエスト受信部が前記リクエストのリトライの処理可能となるタイミングを求めることを特徴とする請求項１に記載のリクエスト処理装置。
【請求項３】
前記リクエストのリトライの処理順番を求めるための情報は、前記リクエストのリトライの前記リクエスト受信部における処理順番を示す整理番号と、前記リクエスト受信部が前記リトライ要求を送信する時点において次に実行するリトライの前記整理番号を示す実行番号であり、前記リクエスト送信部は、前記整理番号、前記実行番号、及び前記リクエストの処理時間をもとに前記リクエスト受信部が前記リクエストを処理可能となるタイミングを求めることを特徴とする請求項２に記載のリクエスト処理装置。
【請求項４】
前記リクエストのリトライには、前記整理番号を含み、前記リクエスト受信部は、前記リクエスト受信部が前記リクエストのリトライを受信した時点において、前記リクエストのリトライに含まれる前記整理番号が次に実行するリトライの前記整理番号である場合に、前記リクエストを処理することを特徴とする請求項３に記載のリクエスト処理装置。
【請求項５】
前記リクエスト受信部は、前記リクエスト送信部からリトライでないリクエストを受信した時点において、未処理の前記リクエストのリトライがない場合、前記リトライでないリクエストを処理し、未処理の前記リクエストのリトライがある場合、前記リトライでないリクエストに対して前記リトライ要求を前記リクエスト送信部に送信することを特徴とする請求項１から４のいずれかに記載のリクエスト処理装置。
【請求項６】
リクエスト受信部が、
リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信するリトライ要求送信ステップと、
前記リクエスト送信部が、
前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信するリトライ送信ステップと
を含むことを特徴とするリトライ制御方法。
【請求項７】
前記リトライ情報には、前記リクエスト受信部における前記リトライ要求を送信する時点からのリトライの処理順番を求めるための情報を含み、前記リトライ送信ステップは、前記リクエストのリトライの処理順番を求めるための情報とリクエストの処理時間をもとに、前記リクエスト受信部が前記リクエストのリトライの処理可能となるタイミングを求めることを特徴とする請求項６に記載のリトライ制御方法。
【請求項８】
前記リクエストのリトライの処理順番を求めるための情報は、前記リクエストのリトライの前記リクエスト受信部における処理順番を示す整理番号と、前記リクエスト受信部が前記リトライ要求を送信する時点において次に実行するリトライの前記整理番号を示す実行番号であり、前記リトライ送信ステップは、前記整理番号、前記実行番号、及び前記リクエストの処理時間をもとに前記リクエスト受信部が前記リクエストを処理可能となるタイミングを求めることを特徴とする請求項７に記載のリトライ制御方法。
【請求項９】
前記リクエストのリトライには、前記整理番号を含み、
前記リクエスト受信部が、さらに、前記リクエスト受信部が前記リクエストのリトライを受信した時点において、前記リクエストのリトライに含まれる前記整理番号が次に実行するリトライの前記整理番号である場合に、前記リクエストを処理するリトライ処理ステップを含むことを特徴とする請求項８に記載のリトライ制御方法。
【請求項１０】
前記リクエスト受信部が、さらに、前記リクエスト送信部からリトライでないリクエストを受信した時点において、未処理の前記リクエストのリトライがない場合、前記リトライでないリクエストを処理し、未処理の前記リクエストのリトライがある場合、前記リトライでないリクエストに対して前記リトライ要求送信ステップによる前記リトライ要求の送信を行うリクエスト処理ステップを含むことを特徴とする請求項６から９のいずれかに記載のリトライ制御方法。
【請求項１１】
リクエスト受信部、及び、リクエスト送信部を含むリクエスト処理装置を
前記リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信する前記リクエスト受信部と、
前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信する前記リクエスト送信部と
して機能させることを特徴とするリクエスト処理装置用プログラム。
【請求項１２】
前記リトライ情報には、前記リクエスト受信部における前記リトライ要求を送信する時点からのリトライの処理順番を求めるための情報を含み、前記リクエスト送信部は、前記リクエストのリトライの処理順番を求めるための情報とリクエストの処理時間をもとに、前記リクエスト受信部が前記リクエストのリトライの処理可能となるタイミングを求めることを特徴とする請求項１１に記載のリクエスト処理装置用プログラム。
【請求項１３】
前記リクエストのリトライの処理順番を求めるための情報は、前記リクエストのリトライの前記リクエスト受信部における処理順番を示す整理番号と、前記リクエスト受信部が前記リトライ要求を送信する時点において次に実行するリトライの前記整理番号を示す実行番号であり、前記リクエスト送信部は、前記整理番号、前記実行番号、及び前記リクエストの処理時間をもとに前記リクエスト受信部が前記リクエストを処理可能となるタイミングを求めることを特徴とする請求項１２に記載のリクエスト処理装置用プログラム。
【請求項１４】
前記リクエストのリトライには、前記整理番号を含み、前記リクエスト受信部は、前記リクエスト受信部が前記リクエストのリトライを受信した時点において、前記リクエストのリトライに含まれる前記整理番号が次に実行するリトライの前記整理番号である場合に、前記リクエストを処理することを特徴とする請求項１３に記載のリクエスト処理装置用プログラム。
【請求項１５】
前記リクエスト受信部は、前記リクエスト送信部からリトライでないリクエストを受信した時点において、未処理の前記リクエストのリトライがない場合、前記リトライでないリクエストを処理し、未処理の前記リクエストのリトライがある場合、前記リトライでないリクエストに対して前記リトライ要求を前記リクエスト送信部に送信することを特徴とする請求項１１から１４のいずれかに記載のリクエスト処理装置用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はリトライ処理を備えたリクエスト処理装置、リトライ制御方法、及びリクエスト処理装置用プログラムに関する。
【背景技術】
【０００２】
共有リソースや共有装置へのアクセスにおいて、競合が発生した場合に、アクセス元からのリトライのタイミングを制御する方法として、リトライ間隔に固定時間を設定する方法や、リトライ間隔をランダムに変化させる方法が知られている。例えば、特許文献１に開示された技術においては、複数のスレーブ装置に優先順位が最も高いスレーブ装置の装置番号を通知し、各スレーブ装置が自装置の番号と通知された装置番号をもとにマスタ装置へのアクセス競合が発生した場合のリトライ間隔を決定する。特許文献２に開示された技術においては、プログラムから共有リソースへのアクセス競合が発生し、リトライでもアクセスに成功しない場合は、リトライ間隔を一定の演算により変化させて、リトライを行う。また、特許文献３に開示された技術においては、ＣＰＵが共有メモリへのアクセスのリトライを行う場合、リトライ間隔が徐々に長くなるように制御する。
【０００３】
【特許文献１】特開平８−６５３２０号公報
【特許文献２】特開２００１−３１２４１３号公報
【特許文献３】特開２００２−１４９４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したリトライ制御方法においては、リトライ間隔は、リトライ待ちの他のリクエストの数や競合状態の解消時間をもとに決められるものではない。このため、リトライ間隔が長すぎることにより共用リソースに空き時間が発生したり、リトライ間隔が短すぎることによりリトライが繰り返され、リクエスト処理の処理性能が低下するという問題があった。
（本発明の目的）
本発明の目的は、上述した課題である、リトライ処理によりリクエスト処理の処理性能が低下するという問題を解決したリクエスト処理装置、リトライ制御方法、及びリクエスト処理装置用プログラムを提供することである。
【課題を解決するための手段】
【０００５】
本発明のリクエスト処理装置は、リクエスト受信部、及び、リクエスト送信部を含むリクエスト処理装置であって、前記リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信する前記リクエスト受信部と、前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信する前記リクエスト送信部とを備えたことを特徴とする。
【０００６】
本発明のリトライ制御方法は、リクエスト受信部が、リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信するリトライ要求送信ステップと、前記リクエスト送信部が、前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信するリトライ送信ステップとを含むことを特徴とする。
【０００７】
本発明のリクエスト処理装置用プログラムは、リクエスト受信部、及び、リクエスト送信部を含むリクエスト処理装置を、前記リクエスト送信部から受信したリクエストが処理できない場合、前記リクエストに対してリトライ情報を含むリトライ要求を前記リクエスト送信部に送信する前記リクエスト受信部と、前記リクエスト受信部から受信した前記リトライ要求に含まれる前記リトライ情報をもとに前記リクエスト受信部が前記リクエストのリトライを処理可能となるタイミングを求め、前記リクエストのリトライを前記リクエスト受信部に送信する前記リクエスト送信部として機能させることを特徴とする。
【発明の効果】
【０００８】
本発明の効果は、リクエスト処理装置においてリトライが発生した場合に、リトライを効率的に行うことができることである。
【発明を実施するための最良の形態】
【０００９】
（第一の実施の形態）
次に、本発明の第一の実施の形態について図面を参照して詳細に説明する。図１に本発明の第一の実施の形態におけるリクエスト処理装置１００の構成を示す。図１を参照すると、本発明の第一の実施の形態におけるリクエスト処理装置１００は、リクエスト送信部２００（２００ａ、２００ｂ）とリクエスト受信部３００より構成される。リクエスト処理装置１００は、プログラムによって動作する情報処理装置であってもよい。
【００１０】
ここで、リクエスト送信部２００は、リクエスト受信部３００に対し、コマンドや命令等のリクエスト５０１を送信する。また、リクエスト送信部２００は、送信したリクエスト５０１に対して、リクエスト受信部３００からリトライ要求５０２を受信した場合、リトライ要求５０２に含まれるリトライ情報５５１をもとに待ち時間を求める。リクエスト送信部２００は、求めた待ち時間経過後、リクエスト５０１のリトライ（再送）を行う。
【００１１】
リクエスト受信部３００は、リクエスト送信部２００からリクエスト５０１を受信し、リクエスト５０１の処理を行う。また、リクエスト受信部３００は、リクエスト５０１の処理ができない場合、リクエスト送信部２００に対して、リトライ情報５５１を含むリトライ要求５０２を送信する。
【００１２】
次に本発明の第一の実施の形態の動作について図面を参照して詳細に説明する。
【００１３】
図２は、第一の実施の形態の動作を示すフローチャートである。また、図３及び図４は、第一の実施の形態における動作の例を示すタイムチャートである。ここでは、２つのリクエスト送信部２００ａ、２００ｂが、それぞれタイミング２、３（以降、Ｔ２、Ｔ３と記載する）において、リクエスト受信部３００にリクエスト５０１（ＲＱ１、ＲＱ２）を送信する場合を例に説明する。リクエスト受信部３００は、Ｔ２、Ｔ３において、他のリクエスト５０１を処理中であるものとする。また、リクエスト受信部３００が各リクエスト５０１を処理するために必要なリクエスト処理時間を４時刻（以降、４Ｔと記載する）とし、リクエスト送信部２００ａ、２００ｂには、当該リクエスト処理時間が予め設定されているものとする。
【００１４】
はじめに、リクエスト送信部２００は、リクエスト受信部３００にリトライでない新規のリクエスト５０１を送信する（ステップＡ１０１）。ここで、リクエスト送信部２００ａは、リクエスト５０１に、リトライ情報５５１を付加する。リトライ情報５５１は、リクエスト５０１がリトライかどうか示すリトライフラグ５５２、整理番号５５３、及び実行番号５５４より構成される。
【００１５】
リトライフラグ５５２は、１がリトライ、０がリトライではない通常のリクエスト５０１であることを示す。
【００１６】
リトライフラグ５５２が０（リトライでない）の場合、整理番号５５３と実行番号５５４は無効とする（ここでは、１を設定しておくものとする）。
【００１７】
リトライフラグ５５２が１（リトライ）の場合、整理番号５５３と実行番号５５４には、リクエスト受信部３００がリトライ要求５０２にて指定した整理番号５５３と実行番号５５４が設定される。
【００１８】
整理番号５５３と実行番号５５４は、リクエスト受信部３００により生成、保持されている。整理番号５５３は、リトライ対象となったリクエスト５０１のリトライの処理順番を示す。実行番号５５４は、次に実行されるリトライの整理番号５５３を示す。リクエスト受信部３００は、リトライ要求５０２を送信する際に、保持している整理番号５５３と実行番号５５４をリトライ要求５０２のリトライ情報５５１に設定してリクエスト送信部２００に送信する。リクエスト送信部２００は、リトライのリクエスト５０１を送信する際に、リトライ要求５０２で受信した整理番号５５３と実行番号５５４をリトライのリクエスト５０１のリトライ情報５５１に設定してリクエスト送信部２００に送信する。
【００１９】
図３、図４のタイムチャートにおいては、リクエスト５０１、リトライ要求５０２の括弧により囲まれた３つの数字がリトライ情報５５１（左から、リトライフラグ５５２、整理番号５５３、及び実行番号５５４）を示す。例えば、リクエスト送信部２００ａは、Ｔ２において、リクエスト５０１（ＲＱ１（０，１，１））をリクエスト受信部３００に送信する。同様に、リクエスト送信部２００ｂは、Ｔ３において、リクエスト５０１（ＲＱ２（０，１，１））をリクエスト受信部３００に送信する。
【００２０】
リクエスト受信部３００は、リクエスト送信部２００からリクエスト５０１を受信する（ステップＢ１０１）。リクエスト受信部３００は、リクエスト５０１を処理するか、リトライ要求５０２を送信するかを判定する。リクエスト受信部３００は、受信したリクエスト５０１がリトライでない場合は（リトライフラグ５５２＝０）、「他のリクエストを処理中でない」かつ「未処理のリトライ（リクエスト送信部２００にリトライ要求５０２を送信したリトライのうち、リクエスト送信部２００よりリトライのリクエスト５０１を受信していないもの）がない（リクエスト受信部３００が保持する整理番号５５３と実行番号５５４が同一である）」という条件を満たすとき、リクエスト５０１を処理する（ステップＢ１０２、Ｂ１０３）。この条件を満たさない（リクエスト５０１を処理できない）ときは、リクエスト受信部３００は、リトライ要求５０２を送信する。ここで、リクエスト５０１を処理する条件として、「未処理のリトライがない」ことが含まれている理由は、リクエスト５０１の処理順番を保証するためである。
【００２１】
例えば、リクエスト受信部３００は、Ｔ２において、リクエスト送信部２００ａからリクエスト５０１（ＲＱ１）を受信する。リクエスト受信部３００は、「他のリクエストを処理中である」ため、リトライ要求５０２の送信と判定する。同様に、リクエスト受信部３００は、Ｔ３において受信したリクエスト５０１（ＲＱ２）についても、リトライ要求５０２の送信と判定する。
【００２２】
リクエスト受信部３００は、リトライ要求５０２をリクエスト送信部２００に送信する（ステップＢ１０４）。ここで、リクエスト受信部３００は、リトライ要求５０２に、リトライ情報５５１を付加する。リクエスト受信部３００は、リトライ情報５５１のリトライフラグ５５２に１（リトライ）を、整理番号５５３と実行番号５５４に保持している値を設定する。リクエスト受信部３００は、リトライ要求５０２を送信するごとに、整理番号５５３に１を加算する（ステップＢ１０５）。なお、整理番号５５３と実行番号５５４の初期値は１であるものとする。
【００２３】
例えば、リクエスト受信部３００は、Ｔ３において、リトライ要求５０２（ＲＱ１（１，１，１））をリクエスト送信部２００ａに送信する。リクエスト受信部３００は、リトライ要求５０２（ＲＱ１）を送信すると、保持している整理番号５５３に１を加算して２とする。同様に、リクエスト受信部３００は、Ｔ４において、リトライ要求５０２（ＲＱ２（１，２，１））をリクエスト送信部２００ｂに送信する。リクエスト受信部３００は、リトライ要求５０２（ＲＱ２）を送信すると、整理番号５５３に１を加算して３とする。
【００２４】
リクエスト送信部２００は、リクエスト受信部３００からリトライ要求５０２を受信する（ステップＡ１０２）。リクエスト送信部２００は、リトライ要求５０２のリトライ情報５５１に含まれる整理番号５５３と実行番号５５４から待ち時間を求める（ステップＡ１０３）。待ち時間は、整理番号５５３、実行番号５５４から、当該リトライの処理される順番（＝整理番号５５３−実行番号５５４＋１）を求め、求めた順番とリクエスト処理時間を乗じることにより求められる。
【００２５】
例えば、リクエスト送信部２００ａは、Ｔ３において、リトライ要求５０２（ＲＱ１（１，１，１））を受信する。リトライ要求５０２（ＲＱ１）のリトライ情報５５１は、整理番号５５３＝１、実行番号５５４＝１であるため、このリトライはリクエスト受信部３００において１番目に処理を行うリトライとなる。したがって、処理される順番（１）と、リクエスト処理時間（４Ｔ）を乗じて、待ち時間を４Ｔとする。また、リクエスト送信部２００ｂは、Ｔ４において、リトライ要求５０２（ＲＱ２（１，２，１））を受信する。リトライ要求５０２（ＲＱ２）のリトライ情報５５１は、整理番号５５３＝２、実行番号５５４＝１であるため、このリトライはリクエスト受信部３００において２番目に処理を行うリトライとなる。したがって、処理される順番（２）と、リクエスト処理時間（４Ｔ）を乗じて、待ち時間を８Ｔとする。
【００２６】
リクエスト送信部２００は、１Ｔごとに待ち時間をカウント（減算）し（ステップＡ１０４）、０となるタイミングで、リトライのリクエスト５０１をリクエスト受信部３００に送信する（ステップＡ１０５、Ａ１０６）。ここで、リクエスト受信部３００は、リクエスト５０１のリトライ情報５５１に、リトライフラグ５５２＝１（リトライ）とリトライ要求５０２にて指定された整理番号５５３、実行番号５５４を付加する。
【００２７】
例えば、リクエスト送信部２００ａは、Ｔ８において、リクエスト５０１（ＲＱ１（１，１，１））をリクエスト受信部３００に送信する。また、リクエスト送信部２００ｂは、Ｔ１３において、リクエスト５０１（ＲＱ２（１，２，１））をリクエスト受信部３００に送信する。
【００２８】
リクエスト受信部３００は、リクエスト送信部２００からリトライのリクエスト５０１を受信する（ステップＢ１０１）。リクエスト受信部３００は、リクエスト５０１を処理するか、リトライ要求５０２を送信するかを判定する。リクエスト受信部３００は、受信したリクエスト５０１がリトライの場合は（リトライフラグ５５２＝１）、「他のリクエストを処理中でない」かつ「受信したリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３と、リクエスト受信部３００が保持する実行番号５５４が一致）」という条件を満たすとき、当該リトライのリクエスト５０１を処理する（ステップＢ１０２、Ｂ１０６、Ｂ１０７）。ここで、リトライのリクエスト５０１を処理する条件として、「要求されたリトライが次に実行するリトライである」が含まれている理由は、リトライの処理順番を保証するためである。リクエスト受信部３００は、リトライのリクエスト５０１の処理を開始すると、実行番号５５４に１を加算する（ステップＢ１０８）。
【００２９】
例えば、リクエスト受信部３００は、Ｔ８において、リクエスト送信部２００ａからリクエスト５０１（ＲＱ１（１，１，１））を受信する。Ｔ８においては、最初にリクエスト５０１（ＲＱ１）を受信したＴ２の時点で処理中であった、他のリクエスト５０１は終了している。Ｔ８においては、「他のリクエストを処理中でない」かつ「要求されたリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３（＝１）と、リクエスト受信部３００が保持する実行番号５５４（＝１）が一致）」であるため、リクエスト受信部３００は、Ｔ９から、リクエスト５０１（ＲＱ１）の処理を開始する。リクエスト受信部３００は、リクエスト５０１（ＲＱ１）の処理を開始すると、実行番号５５４に１を加算して２とする。同様に、リクエスト受信部３００は、Ｔ１３において、リクエスト送信部２００ｂからリクエスト５０１（ＲＱ２（１，２，１））を受信する。Ｔ１３においては、最初にリクエスト５０１（ＲＱ２（０，１，１））を受信したＴ３の時点で処理中であった、他のリクエスト５０１、及び、リクエスト５０１（ＲＱ１）は終了している。Ｔ１３においても、「他のリクエストを処理中でない」かつ「要求されたリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３（＝２）と、リクエスト受信部３００が保持する実行番号５５４（＝２）が一致）」であるため、リクエスト受信部３００は、Ｔ１４から、リクエスト５０１（ＲＱ２）の処理を開始する。リクエスト受信部３００は、リクエスト５０１（ＲＱ２）の処理を開始すると、実行番号５５４に１を加算して３とする。
【００３０】
なお、ステップＢ１０６において、リトライのリクエスト５０１を処理する条件が満たされない場合、リクエスト受信部３００は、リクエスト送信部２００にエラー応答や、再度、同じリトライ要求５０２を送信する等のエラー処理をするようにしてもよい（ステップＢ１０９）。
【００３１】
また、リクエスト５０１とリトライ要求５０２に関して、リクエスト受信部３００は、リトライ要求５０２を送信する際、受信したリクエスト５０１のリトライ情報５５１のみを上述の手順で設定したものをリトライ要求５０２としてリクエスト送信部２００に送信し、リクエスト送信部２００は、当該リトライ要求５０２をそのまま保持し、リトライ時にリトライのリクエスト５０１として、そのままリクエスト受信部３００に送信するようにしてもよい。
【００３２】
また、リクエスト送信部２００における待ち時間の算出は、リトライ情報５５１に含まれる整理番号５５３、実行番号５５４とリクエスト送信部２００に設定されたリクエスト処理時間を用いて行っているが、リクエスト受信部３００がリトライのリクエスト５０１を処理可能となるタイミングを求めることができれば、どのような情報を用いてもよい。例えば、リクエスト受信部３００が、リトライ要求５０２を送信する時点からの当該リトライの処理順番を求め、整理番号５５３、実行番号５５４の代わりにリトライ情報５５１としてリクエスト送信部２００に送信するようにし、リクエスト送信部２００は、当該処理順番とリクエスト処理時間を用いて待ち時間を算出してもよい。  なお、リクエスト送信部２００、リクエスト受信部３００の各処理のタイミング、リクエスト送信部２００とリクエスト受信部３００間のリクエスト５０１、リトライ要求５０２の送受信のタイミングについては、図３、図４のタイミングで動作するものとして説明したが、各処理間や、リクエスト５０１、リトライ要求５０２の送受信に、さらに遅延がある場合、当該遅延時間を待ち時間から適宜減ずることにより、同様のタイミングでリトライが実行できることは言うまでもない。
【００３３】
以上により、本発明の第一の実施の形態の動作が完了する。
【００３４】
本発明の第一の実施の形態によれば、リクエスト処理装置においてリトライが発生した場合に、リトライを効率的に行うことができる。その理由は、リクエスト送信部２００が、リトライ要求５０２のリトライ情報５５１をもとに、リクエスト受信部３００がリクエスト５０１を処理可能となるタイミングを求め、リトライのリクエスト５０１をリクエスト受信部３００に送信するためである。
（第二の実施の形態）
次に、本発明の第二の実施の形態について図面を参照して詳細に説明する。図５に本発明の第二の実施の形態におけるリクエスト処理装置１００の構成を示す。本発明の第二の実施の形態において、第一の実施の形態（図１）と同一の符号を有する構成要素は、特に説明のない限り、第一の構成要素と同一であるものとする。図５を参照すると、本発明の第二の実施の形態におけるリクエスト処理装置１００は、リクエスト送信部２００（２００ａ、２００ｂ、２００ｃ）とリクエスト受信部３００より構成される。
【００３５】
リクエスト送信部２００は、リクエスト生成部２１０、リトライ待ち制御部２２０、及びリクエスト送信制御部２６０より構成される。リクエスト生成部２１０は、リクエスト受信部３００に対するリクエスト５０１を生成する。リトライ待ち制御部２２０は、リクエスト受信部３００から受信したリトライ要求５０２を処理する。リクエスト送信制御部２６０は、リクエスト生成部２１０からのリトライでない新規のリクエスト５０１とリトライ待ち制御部２２０からのリトライのリクエスト５０１を選出し、リクエスト受信部３００へリクエスト５０１を送信する。
【００３６】
リトライ待ち制御部２２０は、リトライ格納部２５０、待ち時間算出部２３０、及び待ち時間カウント部２４０から構成される。リトライ格納部２５０は、リクエスト受信部３００からのリトライ要求５０２に対し、リトライのリクエスト５０１を格納する。待ち時間算出部２３０は、リトライ要求５０２のリトライ情報５５１をもとに、リトライを行うまでの待ち時間を算出する。待ち時間カウント部２４０は、待ち時間算出部２３０で求めた時間をカウントし、リトライ格納部２５０からリトライのリクエスト５０１を送出するタイミングを制御する。
【００３７】
リクエスト受信部３００は、リクエスト受信制御部３２０、リクエスト処理部３６０、及びリトライ要求発行部３１０より構成される。
【００３８】
リクエスト受信制御部３２０は、リクエスト送信部２００から受信したリクエスト５０１を処理するか、リクエスト送信部２００にリトライ要求５０２を送信するかを判定する。リクエスト処理部３６０は、リクエスト受信制御部３２０からのリクエスト５０１の処理を行う。また、リクエスト処理部３６０は、リクエスト５０１の処理中は、リトライ指示信号３６１により、リクエスト５０１の処理中であることをリクエスト受信制御部３２０に通知する。リトライ要求発行部３１０は、リトライ要求５０２を生成し、リクエスト送信部２００へ送信する。
【００３９】
リクエスト受信制御部３２０は、リクエスト選出部３５０、整理番号生成部３３０、及び実行番号生成部３４０より構成される。リクエスト選出部３５０は、リクエスト処理部３６０からのリトライ指示信号３６１をもとに、リクエスト５０１を処理するか、リトライ要求５０２を送信するかを判定する。リクエスト選出部３５０は、リクエスト５０１を処理すると判断した場合、リクエスト５０１をリクエスト処理部３６０に送る。また、リクエスト選出部３５０は、リトライ要求５０２を送信すると判断した場合、リトライ要求リクエスト信号３５１により、リトライ要求５０２の生成をリトライ要求発行部３１０に指示する。整理番号生成部３３０は整理番号５５３を保持し、整理番号信号３３１によりリトライ要求発行部３１０に通知する。実行番号生成部３４０は実行番号５５４を保持し、実行番号信号３４１によりリトライ要求発行部３１０に通知する。
【００４０】
次に本発明の第二の実施の形態の動作について図面を参照して詳細に説明する。
【００４１】
第二の実施の形態の動作を示すフローチャートについては、第一の実施の形態の動作を示すフローチャート（図２）と同一となる。図６、図７、及び図８は、第二の実施の形態における動作の例を示すタイムチャートである。ここでは、リクエスト送信部２００ａから２つのリクエスト５０１、リクエスト送信部２００ｂ、及びリクエスト送信部２００ｃからそれぞれ１つのリクエスト５０１を発行し、４つのリクエスト５０１全てがリトライとなる動作について説明する。また、第一の実施の形態と同様に、リクエスト受信部３００が各リクエスト５０１を処理するために必要なリクエスト処理時間を４Ｔとし、リクエスト送信部２００ａ、２００ｂ、及び２００ｃには、当該リクエスト処理時間が予め設定されているものとする。また、整理番号生成部３３０は、整理番号５５３の初期値として１を、実行番号生成部３４０も、実行番号５５４の初期値として１を保持しているものとする。
【００４２】
リクエスト送信部２００のリクエスト送信制御部２６０は、リクエスト生成部２１０にて生成された、リトライでない新規のリクエスト５０１をリクエスト受信部３００に送信する（ステップＡ１０１）。
【００４３】
例えば、リクエスト送信部２００ａのリクエスト送信制御部２６０ａは、Ｔ２において、リクエスト５０１（ＲＱ１−１（０，１，１））を、Ｔ３において、リクエスト５０１（ＲＱ１−２（０，１，１））をリクエスト受信部３００に送信する。また、リクエスト送信部２００ｂのリクエスト送信制御部２６０ｂは、Ｔ４においてリクエスト５０１（ＲＱ２−１（０，１，１））をリクエスト受信部３００に送信する。リクエスト送信部２００ｃのリクエスト送信制御部２６０ｃは、Ｔ７において、リクエスト５０１（ＲＱ３−１（０，１，１））をリクエスト受信部３００に送信する。
【００４４】
リクエスト受信部３００のリクエスト選出部３５０は、リクエスト送信部２００からリクエスト５０１を受信する（ステップＢ１０１）。リクエスト受信部３００は、リクエスト５０１を処理するか、リトライ要求５０２を送信するかを判定する。リクエスト選出部３５０は、受信したリクエスト５０１がリトライでない場合は（リトライフラグ５５２＝０）、「他のリクエストを処理中でない（リトライ指示信号３６１＝０）」かつ「未処理のリトライ（リクエスト送信部２００にリトライ要求５０２を送信したリトライのうち、リクエスト送信部２００よりリトライのリクエスト５０１を受信していないもの）がない（整理番号生成部３３０が保持する整理番号５５３と実行番号生成部３４０が保持する実行番号５５４が同一である）」という条件を満たすとき、リクエスト５０１をリクエスト処理部３６０へ送る（ステップＢ１０２、Ｂ１０３）。この条件を満たさない（リクエスト５０１を処理できない）ときは、リクエスト選出部３５０は、リトライ要求リクエスト信号３５１により、リトライ要求５０２の生成をリトライ要求発行部３１０に指示する。
【００４５】
例えば、リクエスト選出部３５０は、Ｔ２において、リクエスト５０１（ＲＱ１−１（０，１，１））を受信する。リクエスト選出部３５０は、「他のリクエストを処理中（リトライ指示信号３６１＝１）」であるため、リトライ要求リクエスト信号３５１により、リトライ要求５０２の生成を指示する。同様に、リクエスト選出部３５０は、Ｔ３、及びＴ４において受信したリクエスト５０１（ＲＱ１−２（０，１，１））、及びリクエスト５０１（ＲＱ２−１（０，１，１））についても、リトライ要求５０２の生成を指示する。また、リクエスト選出部３５０は、Ｔ７において受信した（ＲＱ３−１（０，１，１））については、「他のリクエストを処理中ではない（リトライ指示信号３６１＝０）」が、「未処理のリトライがある（整理番号生成部３３０が保持する整理番号５５３（＝４）と実行番号生成部３４０が保持する実行番号５５４（＝１）が同一でない）」ため、リトライ要求５０２の生成を指示する。
【００４６】
リトライ要求発行部３１０は、リトライ要求リクエスト信号３５１によるリトライ要求５０２の生成指示を受信すると、リトライ要求５０２を生成し、リクエスト送信部２００に送信する（ステップＢ１０４）。ここで、リトライ要求発行部３１０は、リトライ要求５０２に、リトライ情報５５１を付加する。リトライ要求発行部３１０は、リトライ情報５５１に、リトライフラグ５５２＝１（リトライ）、整理番号生成部３３０から取得した整理番号５５３、実行番号生成部３４０から取得した実行番号５５４を設定する。
【００４７】
例えば、リトライ要求発行部３１０は、Ｔ３において、リトライ要求５０２（ＲＱ１−１（１，１，１））を、Ｔ４において、リトライ要求５０２（ＲＱ１−２（１，２，１））をリクエスト送信部２００ａに送信する。同様に、リトライ要求発行部３１０は、Ｔ５において、リトライ要求５０２（ＲＱ２−１（１，３，１））を、リクエスト送信部２００ｂに送信する。また、リトライ要求発行部３１０は、Ｔ８において、リトライ要求５０２（ＲＱ３−１（１，４，１））を、リクエスト送信部２００ｃに送信する。
【００４８】
整理番号生成部３３０は、リトライ要求５０２が送信されると、保持している整理番号５５３に１を加算する（ステップＢ１０５）。
【００４９】
例えば、整理番号生成部３３０は、Ｔ３において、保持している整理番号５５３（＝１）に１を加算し、２とする。同様に、整理番号生成部３３０は、Ｔ４、Ｔ５、及びＴ８において、整理番号５５３に１を加算し、それぞれ、３、４、５とする。
【００５０】
リクエスト送信部２００のリトライ待ち制御部２２０は、リトライ要求５０２を受信し、リトライ格納部２５０に格納する（ステップＡ１０２）。待ち時間算出部２３０は、リトライ要求５０２のリトライ情報５５１に含まれる整理番号５５３と実行番号５５４から待ち時間を求める（ステップＡ１０３）。
【００５１】
例えば、リクエスト送信部２００ａは、Ｔ３において、リトライ要求５０２（ＲＱ１−１（１，１，１））を受信し、待ち時間算出部２３０ａは、整理番号５５３＝１、実行番号５５４＝１であることから、待ち時間を４Ｔとする。また、リクエスト送信部２００ａは、Ｔ４において、リトライ要求５０２（ＲＱ１−２（１，２，１））を受信し、待ち時間算出部２３０ａは、待ち時間を８Ｔとする。リクエスト送信部２００ｂは、Ｔ５において、リトライ要求５０２（ＲＱ２−１（１，３，１））を受信し、待ち時間算出部２３０ｂは、待ち時間を１２Ｔとする。リクエスト送信部２００ｃは、Ｔ８において、リトライ要求５０２（ＲＱ３−１（１，４，１））を受信し、待ち時間算出部２３０ｃは、待ち時間を１６Ｔとする。
【００５２】
待ち時間カウント部２４０は、待ち時間算出部２３０において求めた待ち時間を、リトライ格納部２５０に格納されたリトライごとに、１Ｔごとにカウント（減算）する（ステップＡ１０４）。待ち時間カウント部２４０は、待ち時間のカウンタが０となるタイミングで、リトライ格納部２５０に格納された当該リトライのリクエスト５０１をリクエスト送信制御部２６０に送る（ステップＡ１０５）。ここで、当該リトライのリクエスト５０１におけるリトライ情報５５１には、リトライフラグ５５２＝１（リトライ）とリトライ要求５０２にて指定された整理番号５５３、実行番号５５４が付加される。リクエスト送信制御部２６０は、リトライのリクエスト５０１をリクエスト受信部３００に送信する（ステップＡ１０６）。
【００５３】
例えば、リクエスト送信部２００ａのリクエスト送信制御部２６０ａは、Ｔ８において、リクエスト５０１（ＲＱ１−１（１，１，１））を、Ｔ１３において、リクエスト５０１（ＲＱ１−２（１，２，１））を、リクエスト受信部３００に送信する。また、リクエスト送信部２００ｂのリクエスト送信制御部２６０ｂは、Ｔ１８において、リクエスト５０１（ＲＱ２−１（１，３，１））をリクエスト受信部３００に送信する。リクエスト送信部２００ｃのリクエスト送信制御部２６０ｃは、Ｔ２５において、リクエスト５０１（ＲＱ３−１（１，４，１））をリクエスト受信部３００に送信する。
【００５４】
リクエスト受信部３００のリクエスト選出部３５０は、リクエスト送信部２００からリクエスト５０１を受信する（ステップＢ１０１）。リクエスト受信部３００は、リクエスト５０１を処理するか、リトライ要求５０２を送信するかを判定する。リクエスト選出部３５０は、受信したリクエスト５０１がリトライの場合は（リトライフラグ５５２＝１）、「他のリクエストを処理中でない（リトライ指示信号３６１＝０）」かつ「受信したリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３と、実行番号生成部３４０が保持する実行番号５５４が一致）」という条件を満たすとき、リクエスト５０１をリクエスト処理部３６０へ送る（ステップＢ１０２、Ｂ１０６）。リクエスト処理部３６０は、リクエスト選出部３５０から受信したリトライのリクエスト５０１の処理を開始する（ステップＢ１０７）。実行番号生成部３４０は、リトライのリクエスト５０１の処理を開始すると、保持している実行番号５５４に１を加算する（ステップＢ１０８）。
【００５５】
例えば、リクエスト選出部３５０は、Ｔ８において、リクエスト送信部２００ａからリクエスト５０１（ＲＱ１−１（１，１，１））を受信する。Ｔ８においては、最初にリクエスト５０１（ＲＱ１−１）を受信したＴ２の時点で処理中であった、他のリクエスト５０１は終了している。Ｔ８においては、「他のリクエストを処理中でない（リトライ指示信号３６１＝０）」かつ「要求されたリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３（＝１）と、実行番号生成部３４０が保持する実行番号５５４（＝１）が一致）」であるため、リクエスト選出部３５０は、リクエスト５０１（ＲＱ１−１）をリクエスト処理部３６０へ送る。リクエスト処理部３６０は、Ｔ９から、リクエスト５０１（ＲＱ１−１）の処理を開始する。実行番号生成部３４０は、保持している実行番号５５４に１を加算し、２とする。
【００５６】
同様に、リクエスト選出部３５０は、Ｔ１３において、リクエスト送信部２００ａからリクエスト５０１（ＲＱ１−２（１，２，１））を受信する。Ｔ１３においては、最初にリクエスト５０１（ＲＱ１−２（０，１，１））を受信したＴ３の時点で処理中であった他のリクエスト５０１、及び、リクエスト５０１（ＲＱ１−１）は終了している。Ｔ１３においては、「他のリクエストを処理中でない（リトライ指示信号３６１＝０）」かつ「要求されたリトライが次に実行するリトライである（リクエスト５０１のリトライ情報５５１に含まれる整理番号５５３（＝２）と、実行番号生成部３４０が保持する実行番号５５４（＝２）が一致）」であるため、リクエスト選出部３５０は、リクエスト５０１（ＲＱ１−２）をリクエスト処理部３６０へ送る。リクエスト処理部３６０は、Ｔ１４から、リクエスト５０１（ＲＱ１−２）の処理を開始する。実行番号生成部３４０は、保持している実行番号５５４に１を加算し、３とする。
【００５７】
さらに、リクエスト選出部３５０は、Ｔ１８において、リクエスト送信部２００ｂからリクエスト５０１（ＲＱ２−１（１，３，１））を受信し、リクエスト５０１（ＲＱ２−１）をリクエスト処理部３６０へ送る。リクエスト処理部３６０は、Ｔ１９から、リクエスト５０１（ＲＱ２−１）の処理を開始する。実行番号生成部３４０は、保持している実行番号５５４に１を加算し、４とする。また、リクエスト選出部３５０は、Ｔ２５において、リクエスト送信部２００ｃからリクエスト５０１（ＲＱ３−１（１，４，１））を受信し、リクエスト５０１（ＲＱ３−１）をリクエスト処理部３６０へ送る。リクエスト処理部３６０は、Ｔ２６から、リクエスト５０１（ＲＱ３−１）の処理を開始する。実行番号生成部３４０は、保持している実行番号５５４に１を加算し、５とする。
【００５８】
以上により、本発明の第二の実施の形態の動作が完了する。
【００５９】
本発明の第二の実施の形態によれば、リクエスト処理装置においてリトライが発生した場合に、リトライを効率的に行うことができる。その理由は、第一の実施の形態と同様に、リクエスト送信部２００が、リトライ要求５０２のリトライ情報５５１をもとに、リクエスト受信部３００がリクエスト５０１を処理可能となるタイミングを求め、リトライのリクエスト５０１を送信するためである。
【図面の簡単な説明】
【００６０】
【図１】本発明の第一の実施の形態の構成を示す図である。
【図２】本発明の第一の実施の形態の動作を示すフローチャートである。
【図３】本発明の第一の実施の形態の動作を示すタイミングチャートである。
【図４】本発明の第一の実施の形態の動作を示すタイミングチャート（図３のつづき）である。
【図５】本発明の第二の実施の形態の構成を示す図である。
【図６】本発明の第二の実施の形態の動作を示すタイミングチャートである。
【図７】本発明の第二の実施の形態の動作を示すタイミングチャート（図６のつづき）である。
【図８】本発明の第二の実施の形態の動作を示すタイミングチャート（図７のつづき）である。
【符号の説明】
【００６１】
１００    リクエスト処理装置
２００    リクエスト送信部
２１０    リクエスト生成部
２２０    リトライ待ち制御部
２３０    待ち時間算出部
２４０    待ち時間カウント部
２５０    リトライ格納部
２６０    リクエスト送信制御部
３００    リクエスト受信部
３１０    リトライ要求発行部
３２０    リクエスト受信制御部
３３０    整理番号生成部
３３１    整理番号信号
３４０    実行番号生成部
３４１    実行番号信号
３５０    リクエスト選出部
３５１    リトライ要求リクエスト信号
３６１    リトライ指示信号
３６０    リクエスト処理部
５０１    リクエスト
５０２    リトライ要求
５５１    リトライ情報
５５２    リトライフラグ
５５３    整理番号
５５４    実行番号
【図１】
2009037439.tif 000003
【図２】
2009037439.tif 000004
【図３】
2009037439.tif 000005
【図４】
2009037439.tif 000006
【図５】
2009037439.tif 000007
【図６】
2009037439.tif 000008
【図７】
2009037439.tif 000009
【図８】
2009037439.tif 000010