(57)【要約】【課題】複数のＣＰＵを有する情報処理装置に関し、デッドロックの発生を許容し、デッドロックの発生後に、その条件を解消できるようにし、しかも、ハードウエアコストの増加を小さく抑え、周波数性能の向上を図り易く、かつ、論理検証コストの増加も小さく抑えることができるようにする。【解決手段】デッドロック検出回路（３６、４６、５６、６６）がデッドロックを検出したときは、対応するコマンドキュー（３１、４１、５１、６１）内のコマンドを保全したまま、後続コマンドを先行処理する。そして、対応する先行処理済フラグ付加回路（３７、４７、５７、６７）により、先行処理した後続コマンドに先行処理済フラグを付加し、その後、先行処理済フラグを付加したコマンドはＮＯＰ扱いとする。【選択図】          図１
2006195860.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵを有する情報処理装置であって、
デッドロックの発生を監視し、デッドロックの発生を検出したときは、後続コマンドの先行処理制御を行う制御手段を有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記複数のＣＰＵの各々に対応して設けられていることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記後続コマンドに先行処理済フラグを付加するフラグ付加手段を有することを特徴とする請求項１記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵ（central processing unit）を有する情報処理装置に関する。
【背景技術】
【０００２】
複数のＣＰＵを有する情報処理装置では、その構造によっては、ＣＰＵ同士が、お互いにお互いの処理の完了を待ち続けて、自己の処理が行き詰まりとなる状態、即ち、デッドロック状態となる場合がある。
【０００３】
例えば、図５に示すように、ＣＰＵ１、２を有する情報処理装置において、ＣＰＵ１が「データＡを受け取ったら、データＢを提供する」という状態、ＣＰＵ２が「データＢを受け取ったら、データＡを提供する」という状態に同時になると、ＣＰＵ１は「データＢ提供待ち」の状態、ＣＰＵ２は「データＡ提供待ち」の状態となり、ＣＰＵ１、２間ではデータＡもデータＢも転送されず、デッドロック状態に陥ることになる。
【０００４】
デッドロック状態に陥ると、システム全体としては、その後の全ての処理が継続不可能となるため、何らかの対策が必要となる。従来においては、バッファ制御やビジー制御やキャンセル制御等の制御でデッドロック状態に陥らないように対策していた（例えば、特許文献１〜３参照）。
【０００５】
例えば、図６に示すように、ＣＰＵ１が「データＡを受け取ったら、データＢを提供する」という状態になった場合（ステップＰ１）、ＣＰＵ２は、「データＢを受け取ったら、データＡを提供する」という状態になると、デッドロックとなってしまうため、データＢの要求を後回しにしてデータＡを提供し（ステップＰ２）、そして、デッドロックとならないことを確認した後、データＢを要求し（ステップＰ３）、ＣＰＵ１がデータＢを提供する（ステップＰ４）というプロセスになるように制御されていた。
【０００６】
図７は従来の情報処理装置の一例の概略的構成図である。この情報処理装置は、２個のＣＰＵ１０、２０を有する情報処理装置の例であり、ＣＰＵ１０は、ＦＩＦＯ型のコマンドキュー１１、データを格納するメモリ１２、セレクタ１３及び選択制御回路１４を管理下に置いており、ＣＰＵ２０は、ＦＩＦＯ型のコマンドキュー２１、データを格納するメモリ２２、セレクタ２３、選択制御回路２４を管理下に置いている。
【０００７】
ＣＰＵ１０が管理する回路部において、コマンドキュー１１は、ＣＰＵ１０が出力したコマンドと、ＣＰＵ２０が出力したコマンドのうち、要求するデータがメモリ１２に記憶されているコマンドのコピーを格納するのに使用され、メモリ１２はＣＰＵ１０、２０に使用される。
【０００８】
セレクタ１３は、メモリ１２、２２が出力するデータのうち、ＣＰＵ１０がコマンドにより要求するデータを選択してＣＰＵ１０に与えるものである。選択制御回路１４は、コマンドキュー１１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ１３の選択動作を制御する選択制御信号をセレクタ１３に与えるものである。
【０００９】
また、ＣＰＵ２０が管理する回路部において、コマンドキュー２１は、ＣＰＵ２０が出力したコマンドと、ＣＰＵ１０が出力したコマンドのうち、要求するデータがメモリ２２に記憶されているコマンドのコピーを格納するのに使用され、メモリ２２はＣＰＵ１０、２０に使用される。
【００１０】
セレクタ２３は、メモリ１２、２２が出力するデータのうち、ＣＰＵ２０がコマンドにより要求するデータを選択してＣＰＵ２０に与えるものである。選択制御回路２４は、コマンドキュー２１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ２３の選択動作を制御する選択制御信号をセレクタ２３に与えるものである。
【００１１】
ここで、例えば、メモリ１２にデータＢが記憶され、メモリ２２にデータＡが記憶されている場合において、ＣＰＵ１０がデータＡを要求するコマンドＡreqを出力すると同時に、ＣＰＵ２０がデータＢを要求するコマンドＢreqを出力した場合には、コマンドＡreqがコマンドキュー１１に格納されると共に、コマンドＢreqがコマンドキュー２１に格納される。この場合、コマンドキュー１１では、コマンドＡreqが先頭コマンドとなり、コマンドキュー２１では、コマンドＢreqが先頭コマンドとなる場合がある。
【００１２】
この場合には、メモリ２２から読み出すべきデータＡをＣＰＵ１０に選択的に転送させるための選択制御回路１４によるセレクタ１３の制御のために、コマンドキュー１１に格納されているコマンドＡreqを保全したまま、メモリ２２からのデータＡの読み出しのためにコマンドＡreqのコピーをコマンドキュー２１に格納すると共に、メモリ１２から読み出すべきデータＢをＣＰＵ２０に選択的に転送させるための選択制御回路２４によるセレクタ２３の制御のために、コマンドキュー２１に格納されているコマンドＢreqを保全したまま、メモリ１２からのデータＢの読み出しのためにコマンドＢreqのコピーをコマンドキュー１１に格納するという状況が発生する。
【００１３】
この場合、コマンドキュー１１は先頭にコマンドＡreqを格納し、コマンドキュー２１は先頭にコマンドＢreqを格納しているので、コマンドＢreqが要求するデータＢのメモリ１２からの読み出し、及び、コマンドＡreqが要求するデータＡのメモリ２２からの読み出しは不可能となり、デッドロック状態が発生することになる。したがって、このような情報処理装置においては、何らかの対策が必要となる。
【特許文献１】特開２００２−２１５６００号公報
【特許文献２】特開平５−１０８５５９号公報
【特許文献３】特開平８−２４９２９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従来のデッドロック防止方法のように、デッドロック状態に陥らないように対策する場合には、ＣＰＵの動作を監視し、デッドロックの発生を防止するための回路を必要とするが、デッドロック発生防止回路は、ハードウエアコスト（物量）が大きく、回路構成も複雑となり、周波数性能の向上が図りにくいという問題点や、論理検証の難易度が上がり、検証期間が長期化するという問題点があった。
【００１５】
本発明は、かかる点に鑑み、デッドロックの発生を許容し、デッドロックの発生後に、その条件を解消できるようにし、しかも、ハードウエアコストの増加を小さく抑え、周波数性能の向上を図り易く、かつ、論理検証コストの増加も小さく抑えることができるようにした情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、複数のＣＰＵを有する情報処理装置であって、デッドロックの発生を監視し、デッドロックの発生を検出したときは、後続コマンドの先行処理制御を行う制御手段を有するものである。
【発明の効果】
【００１７】
本発明によれば、デッドロックの発生を検出したときは、後続コマンドの先行処理制御が行われるので、デッドロックの発生後に、その条件を解消でき、その後の処理を通常に継続することができる。
【００１８】
また、デッドロックの発生を監視し、デッドロックの発生を検出したときは、後続コマンドの先行処理制御を行う制御手段は、構成が複雑なものとならないので、ハードウエアコストの増加を小さく抑え、周波数性能の向上を図り易く、かつ、論理検証コストの増加も小さく抑えることができるという効果を得ることができる。
【発明を実施するための最良の形態】
【００１９】
図１は本発明の一実施形態の概略的構成図である。本発明の一実施形態は４個のＣＰＵ３０、４０、５０、６０を有する情報処理装置の例であるが、本発明は、これに限定されるものではない。
【００２０】
本発明の一実施形態では、ＣＰＵ３０は、ＦＩＦＯ型のコマンドキュー３１、データを格納するメモリ３２、セレクタ３３、３４、選択制御回路３５、デッドロック検出回路３６及び先行処理済フラグ付加回路３７を管理下に置いている。
【００２１】
ＣＰＵ４０は、ＦＩＦＯ型のコマンドキュー４１、データを格納するメモリ４２、セレクタ４３、４４、選択制御回路４５、デッドロック検出回路４６及び先行処理済フラグ付加回路４７を管理下に置いている。
【００２２】
ＣＰＵ５０は、ＦＩＦＯ型のコマンドキュー５１、データを格納するメモリ５２、セレクタ５３、５４、選択制御回路５５、デッドロック検出回路５６及び先行処理済フラグ付加回路５７を管理下に置いている。
【００２３】
ＣＰＵ６０は、ＦＩＦＯ型のコマンドキュー６１、データを格納するメモリ６２、セレクタ６３、６４、選択制御回路６５、デッドロック検出回路６６及び先行処理済フラグ付加回路６７を管理下においている。
【００２４】
ここで、ＣＰＵ３０が管理する回路において、コマンドキュー３１は、ＣＰＵ３０が出力したコマンドと、ＣＰＵ４０、５０、６０が出力したコマンドのうち、要求するデータがメモリ３２に記憶されているコマンドのコピーを格納するのに使用され、メモリ３２は、ＣＰＵ３０、４０、５０、６０に使用される。
【００２５】
セレクタ３３は、デッドロック検出回路３６が出力する選択制御信号に制御され、コマンドキュー３１に格納されたコマンドのうち、処理を実行するコマンドのオペランド部のアドレスをメモリ３２に与えるものである。
【００２６】
セレクタ３４は、メモリ３２、４２、５２、６２が出力するデータのうち、ＣＰＵ３０がコマンドにより要求するデータを選択してＣＰＵ３０に与えるものである。選択制御回路３５は、コマンドキュー３１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ３４の選択動作を制御する選択制御信号をセレクタ３４に与えるものである。
【００２７】
デッドロック検出回路３６は、コマンドキュー３１の先頭レジスタに対する先頭コマンドの占有時間を計測し、これが所定時間を経過したときは、デッドロック状態の発生を検出したと判定し、コマンドキュー３１に格納されているコマンドを保全したまま、後続コマンドを選択し、そのオペランド部のアドレスをメモリ３２に与えるための選択制御信号をセレクタ３３に与えるものである。
【００２８】
先行処理済フラグ付加回路３７は、コマンドキュー３１内のコマンドのうち、先頭コマンドに先行して処理した後続コマンドに、その後の処理においてＮＯＰ（no operation）扱いとするための先行処理済フラグを付加するものである。
【００２９】
また、ＣＰＵ４０が管理する回路において、コマンドキュー４１は、ＣＰＵ４０が出力したコマンドと、ＣＰＵ３０、５０、６０が出力したコマンドのうち、要求するデータがメモリ４２に記憶されているコマンドのコピーを格納するのに使用され、メモリ４２は、ＣＰＵ３０、４０、５０、６０に使用される。
【００３０】
セレクタ４３は、デッドロック検出回路４６が出力する選択制御信号に制御され、コマンドキュー４１に格納されたコマンドのうち、処理を実行するコマンドのオペランド部のアドレスを選択してメモリ４２に与えるものである。
【００３１】
セレクタ４４は、メモリ３２、４２、５２、６２が出力するデータのうち、ＣＰＵ４０がコマンドにより要求するデータを選択してＣＰＵ４０に与えるものである。選択制御回路４５は、コマンドキュー４１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ４４の選択動作を制御する選択制御信号をセレクタ４４に与えるものである。
【００３２】
デッドロック検出回路４６は、コマンドキュー４１の先頭レジスタに対する先頭コマンドの占有時間を計測し、これが所定時間を経過したときは、デッドロック状態の発生を検出したと判定し、コマンドキュー４１に格納されているコマンドを保全したまま、後続コマンドを選択し、そのオペランド部のアドレスをメモリ４２に与えるための選択制御信号をセレクタ４３に与えるものである。
【００３３】
先行処理済フラグ付加回路４７は、コマンドキュー４１内のコマンドのうち、先頭コマンドに先行して処理した後続コマンドに、その後の処理においてＮＯＰ扱いとするための先行処理済フラグを付加するものである。
【００３４】
また、ＣＰＵ５０が管理する回路において、コマンドキュー５１は、ＣＰＵ５０が出力したコマンドと、ＣＰＵ３０、４０、６０が出力したコマンドのうち、要求するデータがメモリ５２に記憶されているコマンドのコピーを格納するのに使用され、メモリ５２は、ＣＰＵ３０、４０、５０、６０に使用される。
【００３５】
セレクタ５３は、デッドロック検出回路５６が出力する選択制御信号に制御され、コマンドキュー５１に格納されたコマンドのうち、処理を実行するコマンドのオペランド部のアドレスを選択してメモリ５２に与えるものである。
【００３６】
セレクタ５４は、メモリ３２、４２、５２、６２が出力するデータのうち、ＣＰＵ５０がコマンドにより要求するデータを選択してＣＰＵ５０に与えるものである。選択制御回路５５は、コマンドキュー５１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ５４の選択動作を制御する選択制御信号をセレクタ５４に与えるものである。
【００３７】
デッドロック検出回路５６は、コマンドキュー５１の先頭レジスタに対する先頭コマンドの占有時間を計測し、これが所定時間を経過したときは、デッドロック状態の発生を検出したと判定し、コマンドキュー５１に格納されているコマンドを保全したまま、後続コマンドを選択し、そのオペランド部のアドレスをメモリ５２に与えるための選択制御信号をセレクタ５３に与えるものである。
【００３８】
先行処理済フラグ付加回路５７は、コマンドキュー５１内のコマンドのうち、先頭コマンドに先行して処理した後続コマンドに、その後の処理においてＮＯＰ扱いとするための先行処理済フラグを付加するものである。
【００３９】
また、ＣＰＵ６０が管理する回路において、コマンドキュー６１は、ＣＰＵ６０が出力したコマンドと、ＣＰＵ３０、４０、５０が出力したコマンドのうち、要求するデータがメモリ６２に記憶されているコマンドのコピーを格納するのに使用され、メモリ６２は、ＣＰＵ３０、４０、５０、６０に使用される。
【００４０】
セレクタ６３は、デッドロック検出回路６６が出力する選択制御信号に制御され、コマンドキュー６１に格納されたコマンドのうち、処理を実行するコマンドのオペランド部のアドレスを選択してメモリ６２に与えるものである。
【００４１】
セレクタ６４は、メモリ３２、４２、５２、６２が出力するデータのうち、ＣＰＵ６０がコマンドにより要求するデータを選択してＣＰＵ６０に与えるものである。選択制御回路６５は、コマンドキュー６１の先頭コマンドのオペランド部のアドレスをデコードしてセレクタ６４の選択動作を制御する選択制御信号をセレクタ６４に与えるものである。
【００４２】
デッドロック検出回路６６は、コマンドキュー６１の先頭レジスタに対する先頭コマンドの占有時間を計測し、これが所定時間を経過したときは、デッドロック状態の発生を検出したと判定し、コマンドキュー６１に格納されているコマンドを保全したまま、後続コマンドを選択し、そのオペランド部のアドレスをメモリ６２に与えるための選択制御信号をセレクタ６３に与えるものである。
【００４３】
先行処理済フラグ付加回路６７は、コマンドキュー６１内のコマンドのうち、先頭コマンドに先行して処理した後続コマンドに、その後の処理においてＮＯＰ扱いとするための先行処理済フラグを付加するものである。
【００４４】
図２は本発明の一実施形態で実行されるデッドロック解除動作を示す流れ図である。本発明の一実施形態においては、デッドロック検出回路により、デッドロックを検出すると（ステップＳ１）、対応するコマンドキュー内のコマンドは保全したまま、デッドロック検出回路の制御により後続コマンドを先行処理する（ステップＳ２）。そして、対応する先行処理済フラグ付加回路により、先行処理した後続コマンドに先行処理済フラグを付加し（ステップＳ３）、その後、先行処理済フラグが付加されたコマンドはＮＯＰ扱いとする（ステップＳ４）。
【００４５】
なお、後続コマンドの先行処理でも、デッドロックが解除されないとき、即ち、再度、デッドロックを検出したときは（ステップＳ１）、更に後続のコマンドを先行処理する（ステップＳ２）。そして、対応する先行処理済フラグ付加回路により、先行処理した後続コマンドに先行処理済フラグを付加し（ステップＳ３）、その後、先行処理済フラグが付加されたコマンドはＮＯＰ扱いとする（ステップＳ４）。
【００４６】
図３は本発明の一実施形態で実行されるデッドロック解除動作の一具体例を説明するための図である。例えば、メモリ３２にデータＢが記憶され、メモリ４２にデータＡが記憶されている場合において、ＣＰＵ３０がデータＡを要求するコマンドＡreqを出力すると同時に、ＣＰＵ４０がデータＢを要求するコマンドＢreqを出力した場合、コマンドＡreqはコマンドキュー３１に格納され、コマンドＢreqはコマンドキュー４１に格納される。この場合、コマンドキュー３１では、コマンドＡreqが先頭コマンドとなり、コマンドキュー４１では、コマンドＢreqが先頭コマンドとなる場合がある。
【００４７】
この場合には、メモリ４２から読み出すべきデータＡをＣＰＵ３０に選択的に転送させるための選択制御回路３５によるセレクタ３４の制御のために、コマンドキュー３１に格納されているコマンドＡreqを保全したまま、メモリ４２からのデータＡの読み出しのためにコマンドＡreqのコピーをコマンドキュー４１に格納すると共に、メモリ３２から読み出すべきデータＢをＣＰＵ４０に選択的に転送させるための選択制御回路４５によるセレクタ４４の制御のために、コマンドキュー４１に格納されているコマンドＢreqを保全したまま、メモリ３２からのデータＢの読み出しのためにコマンドＢreqのコピーをコマンドキュー３１に格納するという状況が発生する。
【００４８】
この場合、コマンドキュー３１は先頭にコマンドＡreqを格納し、コマンドキュー４１は先頭にコマンドＢreqを格納しているので、コマンドＢreqが要求するデータＢのメモリ３２からの読み出し、及び、コマンドＡreqが要求するデータＡのメモリ４２からの読み出しは不可能となり、デッドロック状態が発生する。
【００４９】
この場合には、デッドロック検出回路３６、４６がデッドロックを同時に検出する。そして、デッドロック検出回路３６は、コマンドキュー３１に格納されている先頭のコマンドＡreqの後続のコマンドＢreqを先行処理するための制御を行い、コマンドＢreqのオペランド部のアドレスがセレクタ３３を介してメモリ３２に与えられる。この結果、メモリ３２から読み出されたデータＢは、セレクタ４４を介してＣＰＵ４０に与えられる。そして、先行処理済フラグ付加回路３７により、コマンドキュー３１に格納されているコマンドＢreqに先行処理済フラグが付加される。
【００５０】
また、デッドロック検出回路４６は、コマンドキュー４１に格納されている先頭のコマンドＢreqの後続のコマンドＡreqを先行処理するための制御を行い、コマンドＡreqのオペランド部のアドレスがセレクタ４３を介してメモリ４２に与えられる。この結果、メモリ４２から読み出されたデータＡは、セレクタ３４を介してＣＰＵ３０に与えられる。そして、先行処理済フラグ付加回路４７により、コマンドキュー４１に格納されているコマンドＡreqに先行処理済フラグが付加される。
【００５１】
ここに、ＣＰＵ３０が出力したデータＡを要求するコマンドＡreqと、ＣＰＵ４０が出力したデータＢを要求するコマンドＢreqを原因とするデッドロック状態は解消し、コマンドキュー３１に格納されているコマンドＡreq、及び、コマンドキュー４１に格納されているコマンドＢreqは、処理済としてコマンドキュー３１、４１から消去される。
【００５２】
この結果、コマンドキュー３１に格納されているコマンドＢreqはコマンドキュー３１内で先頭のコマンドになると共に、コマンドキュー４１に格納されているコマンドＡreqはコマンドキュー４１内で先頭のコマンドになるが、これらのコマンドＡreq、Ｂreqには先行処理済フラグが付加されているので、ＮＯＰ扱いされて、コマンドキュー３１、４１から消去される。
【００５３】
図４は本発明の一実施形態で実行されるデッドロック解除動作の他の具体例を説明するための図である。例えば、メモリ３２にデータＢ、データＣが記憶され、メモリ４２にデータＡ、データＤが記憶されている場合において、ＣＰＵ３０がデータＡを要求するコマンドＡreqを出力すると同時に、ＣＰＵ４０がデータＢを要求するコマンドＢreqを出力し、ＣＰＵ５０がデータＣを要求するコマンドＣreqを出力し、ＣＰＵ６０がデータＤを要求するコマンドＤreqを出力した場合、コマンドＡreqはコマンドキュー３１に格納され、コマンドＢreqはコマンドキュー４１に格納され、コマンドＣreqはコマンドキュー５１に格納され、コマンドＤreqはコマンドキュー６１に格納される。
【００５４】
この場合、コマンドキュー３１では、コマンドＡreqが先頭のコマンドとなり、コマンドキュー４１では、コマンドＢreqが先頭のコマンドとなり、コマンドキュー５１では、コマンドＣreqが先頭のコマンドとなり、コマンドキュー６１では、コマンドＤreqが先頭のコマンドとなる場合がある。
【００５５】
この場合には、例えば、まず、メモリ３２から読み出すべきデータＣをＣＰＵ５０に選択的に転送させるための選択制御回路５５によるセレクタ５４の制御のために、コマンドキュー５１に格納されているコマンドＣreqを保全したまま、メモリ３２からのデータＣの読み出しのためにコマンドＣreqのコピーをコマンドキュー３１に格納すると共に、メモリ４２から読み出すべきデータＤをＣＰＵ６０に選択的に転送させるための選択制御回路６５によるセレクタ６４の制御のために、コマンドキュー６１に格納されているコマンドＤreqを保全したまま、メモリ４２からのデータＤの読み出しのためにコマンドＤreqのコピーをコマンドキュー４１に格納するという状況が発生する。
【００５６】
この場合、次に、メモリ４２から読み出すべきデータＡをＣＰＵ３０に選択的に転送させるための選択制御回路３５によるセレクタ３４の制御のために、コマンドキュー３１に格納されているコマンドＡreqを保全したまま、メモリ４２からのデータＡの読み出しのためにコマンドＡreqのコピーをコマンドキュー４１に格納すると共に、メモリ３２から読み出すべきデータＢをＣＰＵ４０に選択的に転送させるための選択制御回路４５によるセレクタ４４の制御のために、コマンドキュー４１に格納されているコマンドＢreqを保全したまま、メモリ３２からのデータＢの読み出しのためにコマンドＢreqのコピーをコマンドキュー３１に格納するという状況が発生する。
【００５７】
この場合、コマンドキュー３１は先頭にコマンドＡreqを格納し、コマンドキュー４１は先頭にコマンドＢreqを格納しているので、コマンドＢreqが要求するデータＢのメモリ３２からの読み出し、及び、コマンドＡreqが要求するデータＡのメモリ４２からの読み出しは不可能となり、デッドロック状態が発生する。
【００５８】
この場合には、デッドロック検出回路３６、４６は、デッドロックを同時に検出する。そして、デッドロック検出回路３６は、コマンドキュー３１に格納されている先頭のコマンドＡreqの後続のコマンドＣreqを先行処理するための制御を行い、コマンドＣreqのオペランド部のアドレスがセレクタ３３を介してメモリ３２に与えられる。この結果、メモリ３２から読み出されたデータＣがセレクタ５４を介してＣＰＵ５０に与えられる。そして、先行処理済フラグ付加回路３７により、コマンドキュー３１に格納されているコマンドＣreqに先行処理済フラグが付加される。
【００５９】
また、デッドロック検出回路４６は、コマンドキュー４１に格納されている先頭のコマンドＢreqの後続のコマンドＤreqを先行処理するための制御を行い、コマンドＤreqのオペランド部のアドレスがセレクタ４３を介してメモリ４２に与えられる。この結果、メモリ４２から読み出されたデータＤがセレクタ６４を介してＣＰＵ６０に与えられる。そして、先行処理済フラグ付加回路４７により、コマンドキュー４１に格納されているコマンドＤreqに先行処理済フラグが付加される。
【００６０】
ここに、コマンドＣreq、コマンドＤreqの処理は終了したので、コマンドキュー５１に格納されているコマンドＣreq及びコマンドキュー６１に格納されているコマンドＤreqは、処理済としてコマンドキュー５１、６１から消去される。しかし、コマンドＡreqとコマンドＢreqを原因とするデッドロック状態は解消していないので、デッドロック検出回路３６、４６は、再度、デッドロックを検出することになる。
【００６１】
そして、デッドロック検出回路３６は、コマンドキュー３１に格納されているコマンドＣreqの後続のコマンドＢreqを先行処理するための制御を行い、コマンドＢreqのオペランド部のアドレスがセレクタ３３を介してメモリ３２に与えられる。この結果、メモリ３２から読み出されたデータＢはセレクタ４４を介してＣＰＵ４０に与えられる。そして、先行処理済フラグ付加回路３７により、コマンドキュー３１に格納されているコマンドＢreqに先行処理済フラグが付加される。
【００６２】
また、デッドロック検出回路４６は、コマンドキュー４１に格納されているコマンドＤreqの後続のコマンドＡreqを先行処理するための制御を行い、コマンドＡreqのオペランド部のアドレスがセレクタ４３を介してメモリ４２に与えられる。この結果、メモリ４２から読み出されたデータＡがセレクタ３４を介してＣＰＵ３０に与えられる。そして、先行処理済フラグ付加回路４７により、コマンドキュー４１に格納されているコマンドＡreqに先行処理済フラグが付加される。
【００６３】
ここに、ＣＰＵ３０が出力したデータＡを要求するコマンドＡreqと、ＣＰＵ４０が出力したデータＢを要求するコマンドＢreqを原因とするデッドロック状態は解消し、コマンドキュー３１に格納されているコマンドＡreq及びコマンドキュー４１に格納されているコマンドＢreqは、処理済としてコマンドキュー３１、４１から消去される。
【００６４】
この結果、コマンドキュー３１に格納されているコマンドＣreqはコマンドキュー３１内で先頭コマンドになると共に、コマンドキュー４１に格納されているコマンドＤreqはコマンドキュー４１内で先頭コマンドになるが、これらのコマンドＣreq、Ｄreqには先行処理済フラグが付加されているので、ＮＯＰ扱いされて消去される。
【００６５】
更に、この結果、コマンドキュー３１では、コマンドＢreqが先頭コマンドになると共に、コマンドキュー４１では、コマンドＡreqが先頭コマンドになるが、コマンドＡreq、Ｂreqには先行処理済フラグが付加されているので、ＮＯＰ扱いされて消去される。
【００６６】
以上のように、本発明の一実施形態によれば、デッドロック検出回路３６、４６、５６、６６は、それぞれ、ＣＰＵ３０、４０、５０、６０におけるデッドロックの発生を監視し、デッドロックの発生を検出したときは、後続コマンドの先行処理制御を行うので、デッドロックの発生後に、その条件を解消できると共に、先行処理済フラグ付加回路３７、４７、５７、６７は、先行処理済の後続コマンドにＮＯＰ扱いするための先行処理済フラグを付加するので、その後の処理を通常通りに継続することができる。
【００６７】
また、本発明の一実施形態によれば、セレクタ３３、４３、５３、６３、デッドロック検出回路３６、４６、５６、６６及び先行処理済フラグ付加回路３７、４７、５７、６７を必要とすると共に、コマンドキュー３１、４１、５１、６１に先行処理済フラグ用の１ビットの領域を必要とするが、これらの回路は、ハードウエアコストが小さく、回路構成が複雑なものとならないので、ハードウエアコストの増加を小さく抑え、周波数性能の向上を図り易く、かつ、論理検証コストの増加も小さく抑えることができるという効果を得ることができる。
【図面の簡単な説明】
【００６８】
【図１】本発明の一実施形態の概略的構成図である。
【図２】本発明の一実施形態で実行されるデッドロック解除動作を示す流れ図である。
【図３】本発明の一実施形態で実行されるデッドロック解除動作の一具体例を説明するための図である。
【図４】本発明の一実施形態で実行されるデッドロック解除動作の他の具体例を説明するための図である。
【図５】デッドロックを説明するための図である。
【図６】従来のデッドロック防止方法を説明するための図である。
【図７】従来の情報処理装置の一例の概略的構成図である。
【符号の説明】
【００６９】
１、２…ＣＰＵ
１０、２０…ＣＰＵ
１１、２１…コマンドキュー
１２、２２…メモリ
１３、２３…セレクタ
１４、２４…選択制御回路
３０、４０、５０、６０…ＣＰＵ
３１、４１、５１、６１…コマンドキュー
３２、４２、５２、６２…メモリ
３３、４３、５３、６３…セレクタ
３４、４４、５４、６４…セレクタ
３５、４５、５５、６５…選択制御回路
３６、４６、５６、６６…デッドロック検出回路
３７、４７、５７、６７…先行処理済フラグ付加回路
【図１】
2006195860.tif 000003
【図２】
2006195860.tif 000004
【図３】
2006195860.tif 000005
【図４】
2006195860.tif 000006
【図５】
2006195860.tif 000007
【図６】
2006195860.tif 000008
【図７】
2006195860.tif 000009