(57)【特許請求の範囲】
【請求項１】
他の要求を追い越すこと及び他の要求から追い越されることのいずれも許容される追い越し許容要求と、他の要求を追い越すこと及び他の要求から追い越されることのいずれも禁止される追い越し禁止要求との少なくともいずれかの要求を出力する要求装置と、投入された要求を処理するとともに処理できない要求のリトライ処理を行なう要求処理装置とに接続される要求制御装置において、
前記要求装置が出力する要求を保持する保持部と、
前記保持部が保持する要求を取り出す取り出し順序を規定する取り出し順序情報を記憶する記憶部と、
前記記憶部が保持する取り出し順序情報に基づき、前記保持部が保持する要求を取り出す取り出し部と、
前記取り出し部が取り出した要求を前記要求処理装置に投入する投入部と、
前記保持部に保持された要求が、追い越し許容要求又は追い越し禁止要求のいずれであるかを判定する判定部と、
前記投入部が前記要求処理装置に投入した要求について前記要求処理装置がリトライを発生し、かつ、前記リトライを発生した要求を前記判定部が追い越し許容要求であると判定した場合、前記記憶部が記憶する取り出し順序情報について、前記リトライを発生した要求の取り出し順序が追い越し許容要求の取り出し順序の中で最も遅くなるように変更する制御部を有することを特徴とする要求制御装置。
【請求項２】
前記取り出し部は、
前記判定部が追い越し許容要求であると判定した要求よりも取り出し順序が早い追い越し禁止要求が存在しない場合に、前記保持部が保持する要求から前記追い越し許容要求であると判定した要求を取り出すことを特徴とする請求項１記載の要求制御装置。
【請求項３】
前記要求制御装置は、複数の要求装置に接続され、
前記判定部はさらに、前記保持部に保持された要求を出力した要求装置を判定し、
前記制御部は、前記投入部が前記要求処理装置に投入した要求について前記要求処理装置がリトライを発生し、かつ、前記リトライを発生した要求を前記判定部が追い越し許容要求であると判定した場合、前記判定部による前記保持部に保持された要求を出力した要求装置の判定結果に基づき、前記リトライを発生した要求の取り出し順序が、前記リトライを発生した要求を出力した要求装置からの追い越し許容要求の取り出し順序の中で最も遅くなるように変更することを特徴とする請求項１又は請求項２記載の要求制御装置。
【請求項４】
前記取り出し部は、前記判定部による前記保持部に保持された要求を出力した要求装置の判定結果に基づき、一の要求装置からの要求を前記記憶部から取り出すことができないが、他の要求装置からの要求を取り出すことができる場合、前記他の要求装置からの要求を取り出すことを特徴とする請求項３記載の要求制御装置。
【請求項５】
他の要求を追い越すこと及び他の要求から追い越されることのいずれも許容される追い越し許容要求と、他の要求を追い越すこと及び他の要求から追い越されることのいずれも禁止される追い越し禁止要求との少なくともいずれかの要求を出力する要求装置と、投入された要求を処理するとともに処理できない要求のリトライを行なう要求処理装置に接続され、前記要求装置が出力する要求を保持する保持部と、前記保持部が保持する要求をどのような順序で取り出すかの取り出し順序を規定する取り出し順序情報を記憶する記憶部を備える要求制御装置の制御方法において、
前記要求制御装置が有する取り出し部が、前記記憶部が保持する取り出し順序情報に基づき、前記保持部が保持する要求から要求を取り出し、
前記要求制御装置が有する投入部が、前記取り出し部が取り出した要求を前記要求処理装置に投入し、
前記要求制御装置が有する判定部が、前記保持部に保持された要求が、追い越し許容要求又は追い越し禁止要求のいずれであるかを判定し、
前記投入部が前記要求処理装置に投入した要求について前記要求処理装置がリトライを発生し、かつ、前記リトライを発生した要求を前記判定部が追い越し許容要求であると判定した場合、前記要求制御装置が有する制御部が、前記記憶部が記憶する取り出し順序情報について、前記リトライを発生した要求の取り出し順序が追い越し許容要求の取り出し順序の中で最も遅くなるように変更することを特徴とする要求制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他のリクエストから追い越されることも他のリクエストを追い越すことも禁止されている追い越し禁止リクエストおよび禁止されていない追い越し許容リクエストのいずれかを保持する各ポートからのリクエストを取り出してパイプラインへ投入する要求制御装置および要求制御装置の制御方法に関し、特に、処理対象のリクエスト間に部分的な追い越し禁止条件が課されている場合であっても、リクエスト処理の性能低下やハングアップを引き起こすことのない要求制御装置および要求制御装置の制御方法に関する。
【背景技術】
【０００２】
従来から、並列に設けられたポートにセットされたリクエストを取り出してパイプラインに投入するリクエスト制御装置が知られている。このリクエスト制御装置は、ＣＰＵ（Central  Processing  Unit）などの処理装置が各ポートに対して投入したリクエストを順々に取り出し、取り出した順序でパイプラインへ投入する。
【０００３】
しかし、上記したリクエスト制御装置には、ポート数がパイプラインに同時に投入可能なリクエスト数（以下、「パイプライン長」と記載する）よりも多い場合に、ハングアップを起こす危険性があるという問題がある。たとえば、ポート数が８、パイプライン長が４であり、ポートにセットされたリクエストを先着順でパイプラインに投入する場面を想定する。この場合、先着順に４つのリクエストがパイプラインへ投入されるが、この４つのリクエストがパイプラインで処理される条件として「ポートに残っている特定のリクエストの処理が完了していること」が課されている場合には、４つのリクエストがパイプライン上でリトライを繰り返すとパイプライン処理がハングアップしてしまう。
【０００４】
このような問題に、ポート数とパイプライン長との大小関係で対処することが考えられる。たとえば、ポート数をパイプラインに同時に投入可能なリクエスト数以下とすることも考えられるが、ポート数を少なくすると処理効率の面からみて好ましくない。また、パイプライン長を長くすることで上記した問題に対処することも考えられるが、パイプライン処理に遅延が発生してしまうため好ましくない。
【０００５】
このため、上記した問題にポートからのリクエスト取り出し順序の変更で対処するリクエスト制御手法が種々提案されている。たとえば、パイプライン上でリトライとなったリクエストを取り出し順の最下位に並べ直す技術がある。また、自リクエストの処理が完了することが他リクエストを処理するための条件となるリクエストを、到着順によらず取り出し順の上位に上げるという技術がある。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記したリクエスト順序の変更をおこなう従来技術は、リクエスト間の追い越しが許容されているリクエストのみを取り扱う場合にのみ効果を発揮する技術である。すなわち、上記した従来技術には、処理対象のリクエスト間に部分的な追い越し禁止条件が課されている場合には、リクエスト処理の性能低下を引き起こすおそれがあるという問題があった。
【０００７】
このため、処理対象のリクエスト間に部分的な追い越し禁止条件が課されている場合であっても、リクエスト処理の性能低下やハングアップを引き起こすことのないリクエスト制御手法をいかにして実現するかが大きな課題となっている。
【０００８】
本発明は、上述した従来技術の課題を解決するためになされたものであり、処理対象のリクエスト間に部分的な追い越し禁止条件が課されている場合であっても、リクエスト処理の性能低下やハングアップを引き起こすことのない要求制御装置および要求制御装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、他の要求を追い越すこと及び他の要求から追い越されることのいずれも許容される追い越し許容要求と、他の要求を追い越すこと及び他の要求から追い越されることのいずれも禁止される追い越し禁止要求との少なくともいずれかの要求を出力する要求装置と、投入された要求を処理するとともに処理できない要求のリトライ処理を行なう要求処理装置とに接続される要求制御装置において、前記要求装置が出力する要求を保持する保持部と、前記保持部が保持する要求を取り出す取り出し順序を規定する取り出し順序情報を記憶する記憶部と、前記記憶部が保持する取り出し順序情報に基づき、前記保持部が保持する要求を取り出す取り出し部と、前記取り出し部が取り出した要求を前記要求処理装置に投入する投入部と、前記保持部に保持された要求が、追い越し許容要求又は追い越し禁止要求のいずれであるかを判定する判定部と、前記投入部が前記要求処理装置に投入した要求について前記要求処理装置がリトライを発生し、かつ、前記リトライを発生した要求を前記判定部が追い越し許容要求であると判定した場合、前記記憶部が記憶する取り出し順序情報について、前記リトライを発生した要求の取り出し順序が追い越し許容要求の取り出し順序の中で最も遅くなるように変更する制御部を有する。
【発明の効果】
【００１０】
追い越し禁止条件が課されたリクエストを含む場合であってもこの追い越し禁止条件を満たしたうえで、リトライ扱いとなったリクエストの処理順序を遅らせて他のリクエストに処理機会を与えることによって、リクエスト処理の性能低下やハングアップを引き起こすことがないという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に、添付図面を参照して、本発明に係るリクエスト制御手法の好適な実施例を詳細に説明する。なお、以下では、本発明に係るリクエスト制御手法を、２つのＣＰＵコアから共有されるポートとパイプラインとの間に設けられるリクエスト制御装置に適用した場合について説明する。
【実施例】
【００１２】
まず、本発明に係るリクエスト制御手法の概要について図１を用いて説明する。図１は、本発明に係るリクエスト制御手法の概要を示す図である。なお、同図に示すポートは投入されたリクエストを１つ保持するものとする。また、同図に示すように、各ポートに投入されるリクエストにはリクエスト種別ＡとＢとがあり、リクエスト種別Ａは、他のリクエストを追い越すことも他のリクエストから追い越されることも許容されたリクエストをあらわす種別であり、リクエスト種別Ｂは、他のリクエストを追い越すことも他のリクエストから追い越されることも禁止されたリクエストをあらわす種別である。なお、以下の説明では、リクエスト種別Ａのリクエストを「Ａ型リクエスト」と、リクエスト種別Ｂのリクエストを「Ｂ型リクエスト」とそれぞれ記載することとする。
【００１３】
同図に示すように、リクエスト制御装置は、後述する取り出し順序情報に基づいて各ポートからリクエストを読み出し（図１の（１）参照）、読み出したリクエストをパイプラインへと投入する（図１の（２）参照）。そして、パイプラインへ投入したリクエストにリトライが発生した場合には（図１の（３）参照）、上記したリクエスト種別に基づいて取り出し順序を変更する（図１の（４）参照）とともに、取り出し順序情報を更新する。
【００１４】
ここで、図１の（４）に示した取り出し順序変更についてさらに詳細に説明する。同図の破線の矩形に示したように、取り出し順序が早いほうから、１、２、３、・・・のようにリクエストが並んでいる場面を想定する。この場合、先頭のＡ型リクエストがパイプライン上でリトライ扱いとなると、このリクエストを後方に並べ直す処理をおこなう。具体的には、リトライ扱いとなったＡ型リクエストを、最初にあらわれるＢ型リクエストの直前へ並べ直す。言い換えると、リトライ扱いとなったＡ型リクエストを、Ａ型リクエスト列の最後尾へ並べ直すことになる。
【００１５】
このようにすることで、追い越し条件が課されたＢ型リクエストの条件を破ることなく、リトライ対象となったリクエストの取り出し順序を遅らせることができるので、同図における２番目、３番目に並べられたリクエストを先に処理することができる。すなわち、すべてのポートに取り出しチャンスを与えることができるので、従来技術に示したようなハングアップを防止することができる。
【００１６】
また、取り出し順序が上位のリクエストがリトライ扱いになった場合に、取り出し順序が下位のリクエストをパイプラインへ投入することができるのでリクエスト処理の処理効率を向上させることができる。なお、リトライ扱いとなったリクエストをすぐにパイプラインへ再投入しても再びリトライ扱いとなる可能性が高いため、リトライ扱いとなったリクエストをＡ型リクエスト列の最後尾へ並べ直すことにはデメリットがない。
【００１７】
次に、本発明に係るリクエスト制御手法を適用したリクエスト制御装置について図２を用いて説明する。図２は、本発明に係るリクエスト制御手法を適用したリクエスト制御装置を示す図である。同図に示すように、リクエスト制御装置は、ＣＰＵ０およびＣＰＵ１の２つのＣＰＵコアによって共有されるポートとパイプラインとの間に設けられ、共有ポートから取り出したリクエストをパイプラインへと投入する処理をおこなう装置である。
【００１８】
ここで、共有ポートにはポート０〜ポート９の１０個のポートが設けられている。ポートを各ＣＰＵコア専用に用意した場合には各ＣＰＵコアに６個程度のポートが必要となることが一般的である。しかし、図２に示したように、ポートを共有ポートとした場合には、ポート数を１０個程度に削減することができる。その理由は、各ＣＰＵコアが出力するリクエスト数には偏りがあり、ポート数が少なくとも長い時間間隔でみればポートが不足する事態は起こりにくいからである。
【００１９】
次に、本実施例に係るリクエスト制御装置１０の構成について図３を用いて説明する。図３は、リクエスト制御装置１０の構成を示すブロック図である。同図に示すように、リクエスト制御装置１０は、制御部１１およびと記憶部１２を備えている。そして、制御部１１は、リクエスト取り出し部１１ａと、リクエスト投入制御部１１ｂと、リクエスト順序制御部１１ｃと、リクエスト種別判定部１１ｄとをさらに備えており、記憶部１２は、取り出し順序情報１２ａを記憶する。
【００２０】
制御部１１は、各ポートにセットされたリクエストを取り出してパイプラインへ投入するとともに、パイプライン上でリトライ扱いとなったリクエストの取り出し順序を変更する（取り出し順序を遅らせるよう並べ直す）処理をおこなう処理部である。
【００２１】
リクエスト取り出し部１１ａは、後述する取り出し順序情報１２ａに基づき、取り出し順序が先頭のリクエストを保持しているポートからリクエストを取り出すとともに、取り出したリクエストをリクエスト投入制御部１１ｂへ渡す処理をおこなう処理部である。
【００２２】
リクエスト投入制御部１１ｂは、リクエスト取り出し部１１ａから渡されたリクエストをパイプラインへ投入する処理をおこなう処理部である。また、このリクエスト投入制御部１１ｂは、パイプライン上でリクエストがリトライ扱いになった旨の信号を受信した場合に、その旨をリクエスト順序制御部１１ｃへ通知する処理をおこなう処理部でもある。
【００２３】
リクエスト順序制御部１１ｃは、パイプライン上でリトライ扱いとなったリクエストの取り出し順序を変更する処理をおこなう処理部である。また、このリクエスト順序制御部１１ｃは、変更した取り出し順序を記憶部１２の取り出し順序情報１２ａへ登録する処理をおこなう処理部でもある。なお、リクエスト順序制御部１１ｃによって更新された取り出し順序情報１２ａはリクエスト取り出し部１１ａによって参照され、リクエスト取り出し部１１ａがどのポートからリクエストを取り出すかを決定する際に用いられる。
【００２４】
ここで、リクエスト順序制御部１１ｃがおこなうリクエスト順序変更の例について図４および図５を用いて説明しておく。図４は、リクエスト順序変更の一例を示す図である。同図に示すように、取り出し順序が１のＡ型リクエストがリトライ扱いになった場合には、このリクエストを取り出し順序が最も早いＢ型リクエスト（図４における取り出し順序が４のＢ型リクエスト）の直前へ並べ直す。
【００２５】
すなわち、取り出し順序が１のＡ型リクエストをＡ型リクエスト列の最後尾に並べ直すことで、パイプライン上では、取り出し順序が２のＡ型リクエストを処理することが可能となる。なお、取り出し順序が２のＡ型リクエストを正常に処理した後、取り出し順序が３のＡ型リクエストがリトライ扱いになった場合には、このリクエストを取り出し順序が４のＢ型リクエストの直前へ並べ直すことになる。
【００２６】
このように、Ａ型リクエストがリトライ扱いとなった場合に、リトライ扱いとなったＡ型リクエストをＡ型リクエストの最後尾（すなわち、最も前にあるＢ型リクエストの直前）へ並べ直すことで、Ｂ型リクエストに課せられた追い越し禁止条件を破ることなく、リクエスト処理を継続することができる。なお、図４においては、説明をわかりやすくするためにリクエストの投入元が一つである場合について説明した。しかしながら、本実施例に係るリクエスト制御装置１０は、複数の投入元から投入されたリクエストを区別したうえでリクエスト順序を制御することができる。
【００２７】
そこで、以下では、投入元が異なるリクエストについてのリクエスト順序変更の例について図５を用いて説明する。図５は、投入元が異なるリクエストについてのリクエスト順序変更の一例を示す図である。なお、同図においては、ＣＰＵコア０が投入元であるリクエスト（１、４、６，８、１０）およびＣＰＵコア１が投入元であるリクエスト（２、３、５、７、９）をそれぞれ破線で囲うことによって区別して示しているが、これらのリクエストは取り出し順序に従って一列に並べられるものとする。
【００２８】
図５に示すように、ＣＰＵコア０が投入元であるＡ型リクエストがリトライ扱いになった場合には、このリクエストをＣＰＵコア０が投入元であるＢ型リクエスト（図５における１０のＢ型リクエスト）の直前へ並べ直す。また、ＣＰＵコア１が投入元であるＡ型リクエストがリトライ扱いになった場合には、このリクエストをＣＰＵコア１が投入元であるＢ型リクエスト（図５における７のＢ型リクエスト）の直前へ並べ直す。
【００２９】
このように、リクエストの投入元ごとにリクエスト順序を制御することで、各ＣＰＵコアにおけるリクエスト順序を遵守したうえでリクエスト順序を変更することができる。したがって、複数のＣＰＵコアによって共有された共有ポートから取り出したリクエストに追い越し禁止条件が課されたリクエストが含まれている場合であっても、ハングアップを起こすことなくリクエスト処理を効率良くおこなうことができる。
【００３０】
図３の説明に戻って、リクエスト種別判定部１１ｄについて説明する。リクエスト種別判定部１１ｄは、リクエスト順序制御部１１ｃが取り扱うリクエストのリクエスト種別（上記したＡ型リクエストまたはＢ型リクエスト）を判定し、判定結果をリクエスト順序制御部１１ｃに対して通知する処理をおこなう処理部である。なお、このリクエスト種別判定部１１ｄは、各リクエストの所定の部分に書き込まれているリクエスト種別を読み取ることによってリクエスト種別の判定をおこなう。
【００３１】
記憶部１２は、レジスタなどの記憶回路によって構成される記憶部であり、取り出し順序情報１２ａを記憶する。取り出し順序情報１２ａは、上記したリクエスト順序制御部１１ｃによって更新されるリクエスト取り出し順序をあらわす情報である。ここで、この取り出し順序情報１２ａの例について説明する。なお、以下では、レジスタの出力信号を用いて取り出し順序１２ａを回路として構成する場合について説明する。
【００３２】
また、以下に示す式においては、レジスタの出力信号をＯＲＤ＿ｉｊ（ｉ，ｊ＝０〜９）とし、ＯＲＤ＿ｉｊ＝１の場合に、ｉよりもｊを後に取り出すものとする。そして、以下に示す式において用いられる「＋」および「＆」は、それぞれ、論理和および論理積をあらわすものとする。
【００３３】
まず、新規リクエストをリクエスト取り出し順序の最後尾に並べる旨の情報について説明する。各ＣＰＵコアが出力した新規リクエストをＩＤｉ（ｉ＝０〜９）にセットする指示信号をＳＥＴ＿ＰＯＲＴ＿ｉとすると、ＯＲＤ＿ｉｊを、
【数１】
0004802241.tif 000002
のように更新する。なお、式（１）は、新規リクエストをリクエスト取り出し順序の最後尾に並べる旨をあらわしている。また、各ＣＰＵコアから新規リクエストを同時に受信した場合には、ＣＰＵコア０を前にすることとする。
【００３４】
次に、Ａ型リクエストをＢ型リクエストの直前へ並べ直す旨の情報について説明する。ＣＯＲＥｘ（ｘ＝０ｏｒ１）の先頭のＡ型列である旨をあらわすフラグをＣｘ＿ＶＯＴＥ＿ｉ（ｉ，ｊ＝０〜９）とすると、ＣｘＶＯＴＥ＿ｉは、
【数２】
0004802241.tif 000003
とあらわされる。なお、式（２）で用いられるＰＯＲＴ＿ｉ＿Ｃｘ＿Ｂ＿ＴＹＰＥ＿ＶＡＬは、式（３）であらわされる。
【００３５】
また、式（３）で用いられる、ＰＯＲＴ＿ｉ＿ＶＡＬは、ＰＯＲＴ＿ｉに有効なリクエストがセットされていることをあらわしており、ＰＯＲＴ＿ｉ＿ＣｘはＰＯＲＴ＿ｉの要求元がＣＯＲＥｘであることをあらわしている。そして、ＰＯＲＴ＿Ｂ＿ＴＹＰＥはＰＯＲＴ＿ｉがＢ＿ＴＹＰＥであることをあらわしている。
【００３６】
ここで、ＰＯＲＴ＿ｉがパイプラインでリトライになった場合、リトライ信号をＲＥＴＲＹ＿ｉとすると、ＣｘＶＯＴＥ＿ｉｊは、
【数３】
0004802241.tif 000004
とあらわされる。
【００３７】
そして、ＯＲＤ＿ｉｊを、
【数４】
0004802241.tif 000005
で更新し、さらに、
【数５】
0004802241.tif 000006
で更新することによって、ＯＲＤ＿ｉｊの値を決定する。各ポートからリクエストを取り出す際には、このＯＲＤ＿ｉｊを使用して取り出すポートＩＤを決定すればよい。なお、上記したＯＲＤ＿ｉｊの算出処理においては、特に優先的な処理が必要なリクエストコード（同時期に１個しか発生しない）を最優先に投入することができるようにＯＲＤ＿ｉｊを更新する制御も加えている。
【００３８】
次に、リクエスト制御装置１０がおこなうリクエスト取り出し処理の処理手順について図６を用いて説明する。図６は、リクエスト取り出し処理の処理手順を示すフローチャートである。同図に示すように、ＣＰＵコア０が投入元であるリクエストのうち先頭リクエストのリクエスト種別を判定し（ステップＳ１０１）、ＣＰＵコア１が投入元であるリクエストのうち先頭リクエストのリクエスト種別を判定する（ステップＳ１０２）。つづいて、双方（ＣＰＵコア０の先頭リクエストおよびＣＰＵコア１の先頭リクエスト）を取り出し可能であるか否かを判定する（ステップＳ１０３）。
【００３９】
そして、双方の先頭リクエストを取り出し可能である場合には（ステップＳ１０３，Ｙｅｓ）、取り出し順序が前の先頭リクエストを取り出して（ステップＳ１０４）処理を終了する。一方、ステップＳ１０３の判定条件を満たさなかった場合には（ステップＳ１０３，Ｎｏ）、さらに、片方の先頭リクエストを取り出し可能であるか否かを判定し（ステップＳ１０５）、片方の先頭リクエストを取り出し可能である場合には（ステップＳ１０５，Ｙｅｓ）、該当する先頭リクエストを取り出して（ステップＳ１０６）処理を終了する。なお、ステップＳ１０５の判定条件を満たさなかった場合には（ステップＳ１０５，Ｎｏ）、そのまま処理を終了する。
【００４０】
次に、リクエスト制御装置１０がおこなうリクエスト順序変更処理の処理手順について図７を用いて説明する。図７は、リクエスト順序変更処理の処理手順を示すフローチャートである。同図に示すように、リクエストのリトライが発生したか否かを判定し（ステップＳ２０１）、リクエストのリトライが発生した場合には（ステップＳ２０１，Ｙｅｓ）、リトライとなったリクエストを、投入元が同一のＣＰＵコアである追い越し許容リクエスト列（Ａ型リクエスト列）の最後尾に並べて（ステップＳ２０２）処理を終了する。なお、ステップＳ２０１の判定条件を満たさなかった場合には（ステップＳ２０１，Ｎｏ）、ステップＳ２０２をおこなうことなく処理を終了する。
【００４１】
上述してきたように、本実施例では、他のリクエスト間で追い越しを許容されている追い越し許容リクエストであるＡ型リクエストがパイプライン上でリトライ扱いとなった場合に、このＡ型リクエストを、他のリクエスト間で追い越しを禁止されている追い越し禁止リクエストであるＢ型リクエストの直前へと並べ直す旨の情報更新をリクエスト順序制御部がおこない、リクエスト取り出し部がリクエスト順序制御によって更新された情報を用いてポートからのリクエスト取り出しをおこなうよう構成したので、処理対象のリクエスト間に部分的な追い越し禁止条件が課されている場合であっても、リクエスト処理の性能低下やハングアップを引き起こすことがない。また、リクエスト順序制御を投入元ごとにおこなうよう構成したので、同一の投入元から投入されたリクエストのリクエスト順序を遵守することができる。
【００４２】
本実施例によれば、リクエストが追い越し禁止リクエストであるか追い越し許容リクエストであるかを判定し、ポートから取り出したリクエストがパイプラインにおいてリトライ扱いとなった場合に、リトライ扱いとなったリクエストが追い越し許容リクエストであると判定されたリクエストであるならば、このリクエストの取り出し順序を追い越し禁止リクエストの取り出し順序の直前に変更するよう構成したので、追い越し禁止条件が課されたリクエストを含む場合であってもこの追い越し禁止条件を満たしたうえで、リトライ扱いとなったリクエストの処理順序を遅らせて他のリクエストに処理機会を与えることによって、リクエスト処理の性能低下やハングアップを引き起こすことがないという効果を奏する。
【００４３】
また、本実施例によれば、追い越し許容リクエストであると判定したリクエストよりも取り出し順序が前の追い越し禁止リクエストが存在しないことを条件として追い越し許容リクエストを取り出すよう構成したので、追い越し禁止条件を遵守することができるという効果を奏する。
【００４４】
また、本実施例によれば、リクエストをポートに対して投入した投入元をさらに判定し、追い越し許容リクエストであると判定したリトライ扱いのリクエストの取り出し順序をこのリクエストと同一の投入元から投入された追い越し禁止リクエストの直前に変更するよう構成したので、同一の投入元から投入されたリクエストのリクエスト順序を遵守することができるという効果を奏する。
【００４５】
また、本実施例によれば、投入元ごとにリクエストの取り出し順序を管理しており特定の投入元に係る取り出し順序先頭のリクエストを取り出すことができない場合であっても他の投入元に係る先頭のリクエストを取り出すことができるならばこのリクエストを取り出すよう構成したので、特定の投入元から投入されたリクエストを処理できない場合であっても他の投入元から投入されたリクエストを処理することができる。したがって、リクエスト処理の処理効率を向上させることができるという効果を奏する。
【００４６】
（付記１）他のリクエストから追い越されることも他のリクエストを追い越すことも禁止されている追い越し禁止リクエストおよび禁止されていない追い越し許容リクエストのいずれかを保持する各ポートからのリクエストを取り出してパイプラインへ投入するリクエスト制御装置であって、リクエストが前記追い越し禁止リクエストであるか前記追い越し許容リクエストであるかを判定するリクエスト種別判定手段と、前記ポートから取り出したリクエストが前記パイプラインにおいてリトライ扱いとなった場合に、当該リクエストが前記リクエスト種別判定手段によって前記追い越し許容リクエストであると判定されたリクエストであるならば、当該リクエストの取り出し順序を前記追い越し禁止リクエストの取り出し順序の直前に変更するリクエスト順序制御手段とを備えたことを特徴とするリクエスト制御装置。
【００４７】
（付記２）前記リクエスト取り出し手段は、前記リクエスト種別判定手段が前記追い越し許容リクエストであると判定したリクエストよりも取り出し順序が前の前記追い越し禁止リクエストが存在しないことを条件として前記追い越し許容リクエストを取り出すことを特徴とする付記１に記載のリクエスト制御装置。
【００４８】
（付記３）前記リクエスト種別判定手段は、前記リクエストを前記ポートに対して投入した投入元をさらに判定し、前記リクエスト取り出し手段は、前記リクエスト種別判定手段が前記追い越し許容リクエストであると判定した前記リトライ扱いのリクエストの取り出し順序を当該リクエストの前記投入元に係る前記追い越し禁止リクエストの直前に変更することを特徴とする付記１または２に記載のリクエスト制御装置。
【００４９】
（付記４）前記リクエスト取り出し手段は、前記投入元ごとにリクエストの取り出し順序を管理しており特定の投入元に係る取り出し順序先頭のリクエストを取り出すことができない場合であっても他の投入元に係る先頭のリクエストを取り出すことができるならば当該リクエストを取り出すことを特徴とする付記３に記載のリクエスト制御装置。
【００５０】
（付記５）他のリクエストから追い越されることも他のリクエストを追い越すことも禁止されている追い越し禁止リクエストおよび禁止されていない追い越し許容リクエストのいずれかを保持する各ポートからのリクエストを取り出してパイプラインへ投入するリクエスト制御方法であって、リクエストが前記追い越し禁止リクエストであるか前記追い越し許容リクエストであるかを判定するリクエスト種別判定工程と、前記ポートから取り出したリクエストが前記パイプラインにおいてリトライ扱いとなった場合に、当該リクエストが前記リクエスト種別判定工程によって前記追い越し許容リクエストであると判定されたリクエストであるならば、当該リクエストの取り出し順序を前記追い越し禁止リクエストの取り出し順序の直前に変更するリクエスト順序制御工程とを含んだことを特徴とするリクエスト制御方法。
【００５１】
（付記６）前記リクエスト取り出し工程は、前記リクエスト種別判定工程が前記追い越し許容リクエストであると判定したリクエストよりも取り出し順序が前の前記追い越し禁止リクエストが存在しないことを条件として前記追い越し許容リクエストを取り出すことを特徴とする付記５に記載のリクエスト制御方法。
【００５２】
（付記７）前記リクエスト種別判定工程は、前記リクエストを前記ポートに対して投入した投入元をさらに判定し、前記リクエスト取り出し工程は、前記リクエスト種別判定工程が前記追い越し許容リクエストであると判定した前記リトライ扱いのリクエストの取り出し順序を当該リクエストの前記投入元に係る前記追い越し禁止リクエストの直前に変更することを特徴とする付記５または６に記載のリクエスト制御方法。
【００５３】
（付記８）前記リクエスト取り出し工程は、前記投入元ごとにリクエストの取り出し順序を管理しており特定の投入元に係る取り出し順序先頭のリクエストを取り出すことができない場合であっても他の投入元に係る先頭のリクエストを取り出すことができるならば当該リクエストを取り出すことを特徴とする付記７に記載のリクエスト制御方法。
【産業上の利用可能性】
【００５４】
以上のように、本発明に係るリクエスト制御装置およびリクエスト制御方法は、部分的に追い越し禁止条件が課されたリクエスト列のリクエスト制御に有用であり、特に、複数の投入元から投入されたリクエストのリクエスト制御に適している。
【図面の簡単な説明】
【００５５】
【図１】図１は、本発明に係るリクエスト制御手法の概要を示す図である。
【図２】図２は、本発明に係るリクエスト制御手法を適用したリクエスト制御装置を示す図である。
【図３】図３は、リクエスト制御装置の構成を示すブロック図である。
【図４】図４は、リクエスト順序変更の一例を示す図である。
【図５】図５は、投入元が異なるリクエストについてのリクエスト順序変更の一例を示す図である。
【図６】図６は、リクエスト取り出し処理の処理手順を示すフローチャートである。
【図７】図７は、リクエスト順序変更処理の処理手順を示すフローチャートである。
【符号の説明】
【００５６】
１０  リクエスト制御装置
１１  制御部
１１ａ  リクエスト取り出し部
１１ｂ  リクエスト投入制御部
１１ｃ  リクエスト順序制御部
１１ｄ  リクエスト種別判定部
１２  記憶部
１２ａ  取り出し順序情報
【図１】
0004802241.tif 000007
【図２】
0004802241.tif 000008
【図３】
0004802241.tif 000009
【図４】
0004802241.tif 000010
【図５】
0004802241.tif 000011
【図６】
0004802241.tif 000012
【図７】
0004802241.tif 000013