(57)【特許請求の範囲】
【請求項１】
第１バスに接続されている第１デバイスから該第１バスの使用が要求されたことに応答して、今回の要求よりも以前になされた該第１デバイスからの該第１バスの使用の要求に対して許可を与えたことに基づき、該第１バスとは異なる第２バスが使用中となっているか否かを判別するバス使用判別手段と、
前記バス使用判別手段によって前記第２バスが使用中であると判別した場合、前記第１デバイスに対して前記第１バスの使用を許可せず、該第２バスが使用中でないと判別した場合、該第１バスの使用を許可するバス使用許可手段と、
を備えるアービタ。
【請求項２】
前記第１デバイスが複数の機能を有するか否かを判別するデバイス判別手段をさらに備え、
前記バス使用許可手段は、前記デバイス判別手段によって前記第１デバイスが複数の機能を有すると判別した場合、前記バス使用判別手段による判別結果に関わらず、該第１デバイスに対して前記第１バスの使用を許可する、
ことを特徴とする請求項１に記載のアービタ。
【請求項３】
請求項１又は２に記載のアービタと、
前記第２バスに接続されている第２デバイスと、
前記バス使用許可手段によって前記第１バスの使用が許可されたことに応答して、前記第２デバイスに記憶されているデータの読出を要求する読出コマンドを前記第１バスを介して送出する前記第１デバイスと、
前記第１デバイスから前記第１バスを介して送出された前記読出コマンドを受信したことに応答して、該第１デバイスによる該読出コマンドの送出を停止させるとともに、前記第２デバイスから前記第２バスを介して前記データを読み出し、該データの読出の完了後、該読出コマンドを再度受信したことに応答して、該データを該第１バスを介して該第１デバイスに送出するバスブリッジと、を備え、
前記バス使用判別手段は、前記バスブリッジによって第２デバイスから前記第２バスを介して前記データが読み出されている場合、該第２バスが使用中であると判別する、
ことを特徴とするバス使用制御装置。
【請求項４】
第１バスに接続されている第１デバイスから該第１バスの使用が要求されたことに応答して、今回の要求よりも以前になされた該第１デバイスからの該第１バスの使用の要求に対して許可を与えたことに基づき、該第１バスとは異なる第２バスが使用中となっているか否かを判別するバス使用判別ステップと、
前記バス使用判別ステップによって前記第２バスが使用中であると判別した場合、前記第１デバイスに対して前記第１バスの使用を許可せず、該第２バスが使用中でないと判別した場合、該第１バスの使用を許可するバス使用許可ステップと、
を備えるバス使用制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アービタ、バス使用制御装置、及びバス使用制御方法に関し、特に、無駄なトランザクションによるバスの占有を削減しつつ、データを遅滞なく読出可能なアービタ、バス使用制御装置、及びバス使用制御方法に関する。
【背景技術】
【０００２】
ＰＣＩ（Peripheral Component Interconnect）バスを持つコンピュータ装置では、あるデバイスが他のデバイスからデータを読み出す場合、まず、バスの使用許可を得てから、リードコマンドの送出を実行するという手順で行われる。
【０００３】
しかしながら、リードコマンドを受けたデバイスがデータ送出の準備が出来ていない場合には、リトライ応答でデータ転送が終了され、リトライ終了したデバイスは、実際にデータが読み出せるまで、再度バス使用許可を得て、リードコマンドの送出を実行するといった手順を繰り返す必要がある。このため、リトライ応答で終了するトランザクションは、バスを占有する無駄なトランザクションとなってしまう。
【０００４】
このような無駄なトランザクションを削減するものとして、特許文献１には、一定期間、リトライ終了したデバイスからのバス使用許可を受け付けないで、無駄なトランザクションのバス占有を削減する技術が記載されている。
【特許文献１】特開２０００−２０７３５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、一定期間が経過する前にリードコマンドを受けたデバイスがデータ送出の準備が出来た場合でも、リトライ終了したデバイスからのバス使用許可を受け付けないため、データの読出が遅くなってしまうという問題があった。
【０００６】
また、リトライ終了したデバイスが複数機能を有するデバイスの場合でも、上記リトライ応答となった機能以外の機能からの要求も、ある一定期間受け付けることが出来ないため、データの読出が遅くなってしまうという問題があった。
【０００７】
本発明は、上記実状に鑑みてなされたものであり、無駄なトランザクションによるバスの占有を削減しつつ、データを遅滞なく読出可能なアービタ、バス使用制御装置、及びバス使用制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の第１の観点に係るアービタは、第１バスに接続されている第１デバイスから該第１バスの使用が要求されたことに応答して、今回の要求よりも以前になされた該第１デバイスからの該第１バスの使用の要求に対して許可を与えたことに基づき、該第１バスとは異なる第２バスが使用中となっているか否かを判別するバス使用判別手段と、前記バス使用判別手段によって前記第２バスが使用中であると判別した場合、前記第１デバイスに対して前記第１バスの使用を許可せず、該第２バスが使用中でないと判別した場合、該第１バスの使用を許可するバス使用許可手段と、を備える。
【０００９】
また、本発明の第２の観点に係るバス使用制御装置は、請求項１又は２に記載のアービタと、前記第２バスに接続されている第２デバイスと、前記バス使用許可手段によって前記第１バスの使用が許可されたことに応答して、前記第２デバイスに記憶されているデータの読出を要求する読出コマンドを前記第１バスを介して送出する前記第１デバイスと、前記第１デバイスから前記第１バスを介して送出された前記読出コマンドを受信したことに応答して、該第１デバイスによる該読出コマンドの送出を停止させるとともに、前記第２デバイスから前記第２バスを介して前記データを読み出し、該データの読出の完了後、該読出コマンドを再度受信したことに応答して、該データを該第１バスを介して該第１デバイスに送出するバスブリッジと、を備え、前記バス使用判別手段は、前記バスブリッジによって第２デバイスから前記第２バスを介して前記データが読み出されている場合、該第２バスが使用中であると判別する、ことを特徴とする。
【００１０】
さらに、本発明の第３の観点に係るバス使用制御方法は、第１バスに接続されている第１デバイスから該第１バスの使用が要求されたことに応答して、今回の要求よりも以前になされた該第１デバイスからの該第１バスの使用の要求に対して許可を与えたことに基づき、該第１バスとは異なる第２バスが使用中となっているか否かを判別するバス使用判別ステップと、前記バス使用判別ステップによって前記第２バスが使用中であると判別した場合、前記第１デバイスに対して前記第１バスの使用を許可せず、該第２バスが使用中でないと判別した場合、該第１バスの使用を許可するバス使用許可ステップと、を備える。
【発明の効果】
【００１１】
本発明によれば、無駄なトランザクションによるバスの占有を削減しつつ、データを遅滞なく読出可能なアービタ、バス使用制御装置、及びバス使用制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を実施するための最良の形態について説明する。
【００１３】
まず、本実施形態に係るＰＣＩ（Peripheral Component Interconnect）バス制御回路の構成について、図面を参照して説明する。
【００１４】
図１は、ＰＣＩバス制御回路の構成例を示すブロック図である。ＰＣＩバス制御回路１は、図１に示すように、複数（本実施形態では４個）のＰＣＩデバイス１１Ａ〜１１Ｄと、複数（本実施形態では２個）のＰＣＩバス１２Ａ及び１２Ｂと、ＰＣＩバスブリッジ１３と、アービタ１４と、から構成されている。
【００１５】
ＰＣＩバス１２Ａには、ＰＣＩデバイス１１ＡとＰＣＩデバイス１１Ｂとアービタ１４とが接続されており、ＰＣＩバス１２Ｂには、ＰＣＩデバイス１１ＣとＰＣＩデバイス１１Ｄとアービタ１４とが接続されている。ＰＣＩバス１２ＡとＰＣＩバス１２Ｂとは、ＰＣＩバスブリッジ１３を介して接続されている。
【００１６】
ＰＣＩデバイス１１Ｃとアービタ１４との間には、ＰＣＩデバイス１１Ｃからのバス使用要求信号ＲＥＣ−Ｃと、ＰＣＩデバイス１１Ｃに対するバス使用許可信号ＧＮＴ−Ｃとに対応した信号線がそれぞれ設けられている。ＰＣＩデバイス１１Ｄとアービタ１４との間には、ＰＣＩデバイス１１Ｄからのバス使用要求信号ＲＥＣ−Ｄと、ＰＣＩデバイス１１Ｄに対するバス使用許可信号ＧＮＴ−Ｄとに対応した信号線がそれぞれ設けられている。
【００１７】
ＰＣＩデバイス１１Ｃ、１１Ｄは、ＰＣＩデバイス１１Ａ、１１Ｂからデータを読み出す場合、それぞれバス使用要求信号ＲＥＱ−Ｃ、ＲＥＱ−Ｄを信号線を介してアービタ１４に対して送出することにより、ＰＣＩバス１２Ｂの使用を要求する。また、ＰＣＩデバイス１１Ｃ及び１１Ｄは、それぞれアービタ１４から信号線を介して送出されたバス使用許可信号ＧＮＴ−Ｃ、ＧＮＴ−Ｄを検知すると、リードコマンドをＰＣＩバス１２Ｂを介してＰＣＩバスブリッジ１３に対して送出する。
【００１８】
ＰＣＩデバイス１１Ｃ、１１Ｄは、ＰＣＩバスブリッジ１３からＰＣＩバス１２Ｂを介して送出されたリトライ応答を受け取ると、リードコマンドのＰＣＩバスブリッジ１３に対する送出を終了する。また、ＰＣＩデバイス１１Ｃ、１１Ｄは、ＰＣＩバスブリッジ１３によってＰＣＩデバイス１１Ａ、１１Ｂから読み出されたデータ（リードデータ）を受け取る。
【００１９】
ＰＣＩバスブリッジ１３は、ＰＣＩデバイス１１Ｃ、１１ＤからＰＣＩバス１２Ｂを介して送出されたリードコマンドを受けると、このリードコマンドを図示せぬ内部メモリに記憶し、ＰＣＩデバイス１１Ａ、１１Ｂからデータを読み出すとともに、リトライ応答をＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｃ、１１Ｄに対して送出する。
【００２０】
ＰＣＩバスブリッジ１３は、ＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が終了した後、ＰＣＩデバイス１１Ｃ、１１Ｄからリードコマンドを再度受けると、この読み出したデータ（リードデータ）をＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｃ、１１Ｄに対して送出する。
【００２１】
アービタ１４は、デバイス判別部１４１と、バス監視部１４２と、バス調停部１４３と、を備えている。
【００２２】
デバイス判別部１４１は、ＰＣＩバス１２Ａ及び１２Ｂの初期化時に、ＰＣＩバス１２Ｂに接続されているＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイス（マルチファンクションデバイス）であるか否かを判別し、その判別結果を、図示せぬ内部メモリに設けられた判別結果記憶領域に記憶する。
【００２３】
本実施形態において、ＰＣＩデバイス１１Ｃは、機能１１Ｃ−１及び１１Ｃ−２といった２つの異なる機能を有しているのに対し、ＰＣＩデバイス１１Ｄは、１つの機能のみを有している。このため、デバイス判別部１４１は、ＰＣＩバス１２Ａ及び１２Ｂの初期化時に、ＰＣＩデバイス１１Ｃを複数機能を有するデバイスと判別する一方で、ＰＣＩデバイス１１Ｄを単機能しか有しないデバイスと判別して、その判別結果を判別結果記憶領域に記憶する。
【００２４】
バス監視部１４２は、ＰＣＩバス１２Ｂを監視して、ＰＣＩデバイス１１Ｃ、１１ＤがＰＣＩバスブリッジ１３からリトライ応答を受けてリードコマンドのＰＣＩバスブリッジ１３に対する送出を終了したか否かを判別し、終了したと判別したときには、図示せぬ内部メモリに設けられたリトライ終了フラグをオン状態にセットする。
【００２５】
バス監視部１４２は、リトライ終了フラグがオンである場合、ＰＣＩバス１２Ａを監視して、ＰＣＩバスブリッジ１３によるＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が終了したか否かを判別し、終了したと判別したときには、リトライ終了フラグをクリアしてオフ状態にする。
【００２６】
バス調停部１４３は、リトライ終了フラグがオフである場合に、バス使用要求信号ＲＥＱ−Ｃ、ＲＥＱ−Ｄの双方を受けると、例えば固定プライオリティ、ラウンドロビンなどにより優先順位を決定し、ＰＣＩデバイス１１Ｃ、１１Ｄのうち、優先度が高いものに対してＰＣＩバス１２Ｂの使用許可を与える。
【００２７】
ＰＣＩデバイス１１ＣがＰＣＩデバイス１１Ｄよりも優先度が高い場合には、バス使用許可信号ＧＮＴ−Ｃを信号線を介して送出することにより、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可を与え、ＰＣＩデバイス１１ＤがＰＣＩデバイス１１Ｃよりも優先度が高い場合には、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出することにより、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可を与える。
【００２８】
バス調停部１４３は、リトライ終了フラグがオンである場合に、バス使用要求信号ＲＥＱ−Ｃ、ＲＥＱ−Ｄの双方又はいずれか一方を受けると、判別結果記憶領域の記憶内容に基づいて、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイスであるか否かを判別し、複数機能を有すると判別したデバイスに対しては、ＰＣＩバス１２Ｂの使用許可を与え、単機能しか有しないと判別したデバイスに対しては、ＰＣＩバス１２Ｂの使用許可を与えない。
【００２９】
本実施形態において、ＰＣＩデバイス１１Ｃは、２つの異なる機能を有していることから、バス調停部１４３は、リトライ終了フラグがオンである場合に、ＰＣＩデバイス１１Ｃからバス使用要求信号ＲＥＱ−Ｃを受けると、バス使用許可信号ＧＮＴ−Ｃを信号線を介して送出して、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可を与える。
【００３０】
これに対して、ＰＣＩデバイス１１Ｄは、１つの機能のみを有していることから、バス調停部１４３は、リトライ終了フラグがオンである場合に、ＰＣＩデバイス１１Ｄからバス使用要求信号ＲＥＱ−Ｄを受けても、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出せず、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可を与えない。
【００３１】
次に、上記構成を備えるＰＣＩバス制御回路が実行する動作について図面を参照しつつ説明する。
【００３２】
電源が投入されたりシステムがリセットされたりすると、ＰＣＩバス１２Ａ及び１２Ｂなどの初期化処理が実行される。この初期化処理において、ＰＣＩバス制御回路１のアービタ１４は、図２に示すデバイス判別処理を実行する。
【００３３】
このデバイス判別処理において、アービタ１４は、まず、図２に示すように、デバイス判別部１４１にて、ＰＣＩバス１２Ｂに接続されているＰＣＩデバイス１１Ｃ及び１１Ｄのそれぞれにつき、複数機能を有するデバイス（マルチファンクションデバイス）であるか否かを判別する（ステップＳ１）。
【００３４】
具体的に、ＰＣＩデバイス１１Ｃは、２つの異なる機能を有しているのに対し、ＰＣＩデバイス１１Ｄは、１つの機能のみを有していることから、ステップＳ１の処理では、ＰＣＩデバイス１１Ｃが複数機能を有するデバイスと判別され、ＰＣＩデバイス１１Ｄが単機能しか有しないデバイスと判別される。そして、アービタ１４は、ステップＳ１の処理にて取得された判別結果を、図示せぬ内部メモリに設けられた判別結果記憶領域に記憶する（ステップＳ２）。
【００３５】
このような初期化処理の終了後、定期的にタイマ割込処理が実行される。このタイマ割込処理において、アービタ１４は、図３に示すバス監視処理と、図４に示すバス調停処理と、を実行する。
【００３６】
このバス監視処理において、アービタ１４は、まず、図３に示すように、図示せぬ内部メモリに設けられたリトライ終了フラグがオンであるか否かを判別する（ステップＳ１１）。ここで、リトライ終了フラグがオフであると判別した場合（ステップＳ１１；Ｎｏ）、アービタ１４は、バス監視部１４２にてＰＣＩバス１２Ｂを監視することにより、ＰＣＩデバイス１１Ｃ、１１ＤがＰＣＩバスブリッジ１３からリトライ応答を受けてリードコマンドのＰＣＩバスブリッジ１３に対する送出を終了したか否かを判別する（ステップＳ１２）。
【００３７】
ここで、リードコマンドのＰＣＩバスブリッジ１３に対する送出が終了していないと判別した場合には（ステップＳ１２；Ｙｅｓ）、そのままバス監視処理を終了する一方で、終了したと判別した場合には（ステップＳ１２；Ｙｅｓ）、リトライ終了フラグをオン状態にセットしてから（ステップＳ１３）、バス監視処理を終了する。
【００３８】
これに対して、リトライ終了フラグがオンであると判別した場合（ステップＳ１１；Ｙｅｓ）、アービタ１４は、バス監視部１４２にてＰＣＩバス１２Ａを監視することにより、ＰＣＩバスブリッジ１３によるＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が終了したか否かを判別する（ステップＳ１４）。
【００３９】
ここで、ＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が終了していないと判別した場合には（ステップＳ１４；Ｎｏ）、そのままバス監視処理を終了する一方で、終了したと判別した場合には（ステップＳ１２；Ｙｅｓ）、リトライ終了フラグをクリアしてオフ状にしてから（ステップＳ１５）、バス監視処理を終了する。
【００４０】
このバス調停処理において、アービタ１４は、まず、図４に示すように、バス使用要求信号ＲＥＱ−Ｃ、ＲＥＱ−Ｄの双方又はいずれか一方を受けたか否かを判別することにより、ＰＣＩデバイス１１Ｃ、１１Ｄの双方又はいずれか一方からＰＣＩバス１２Ｂの使用が要求されたか否かを判別する（ステップＳ２１）。ここで、ＰＣＩデバイス１１Ｃ、１１ＤのいずれからもＰＣＩバス１２Ｂの使用が要求されていないとと判別した場合には（ステップＳ２１；Ｎｏ）、そのままバス調停処理を終了する。
【００４１】
一方、ＰＣＩデバイス１１Ｃ、１１Ｄの双方又はいずれか一方からＰＣＩバス１２Ｂの使用が要求されたと判別した場合には（ステップＳ２１；Ｙｅｓ）、図示せぬ内部メモリに設けられたリトライ終了フラグがオンであるか否かを判別する（ステップＳ２２）。ここで、リトライ終了フラグがオフであると判別した場合（ステップＳ２２；Ｎｏ）、アービタ１４は、ＰＣＩデバイス１１Ｃ、１１Ｄの双方からＰＣＩバス１２Ｂの使用が要求されたか、いずれか一方からＰＣＩバス１２Ｂの使用が要求されたかを判別する（ステップＳ２３）。
【００４２】
ＰＣＩデバイス１１Ｃ、１１Ｄの双方からＰＣＩバス１２Ｂの使用が要求されたと判別した場合（ステップＳ２３；Ｙｅｓ）、アービタ１４は、バス調停部１４３にて優先順位を決定し、ＰＣＩデバイス１１Ｃ、１１Ｄのうち、優先度が高いものに対してＰＣＩバス１２Ｂの使用許可を与え（ステップＳ２４）、バス調停処理を終了する。
【００４３】
具体的に、ステップＳ２４の処理では、ＰＣＩデバイス１１ＣがＰＣＩデバイス１１Ｄよりも優先度が高い場合、バス使用許可信号ＧＮＴ−Ｃを信号線を介して送出することにより、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可が与えられる。これに対して、ＰＣＩデバイス１１ＤがＰＣＩデバイス１１Ｃよりも優先度が高い場合には、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出することにより、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可が与えられる。
【００４４】
一方、ＰＣＩデバイス１１Ｃ、１１Ｄのいずれか一方からＰＣＩバス１２Ｂの使用が要求されたと判別した場合には（ステップＳ２３；Ｎｏ）、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄに対してＰＣＩバス１２Ｂの使用許可を与え（ステップＳ２５）、バス調停処理を終了する。
【００４５】
具体的に、ステップＳ２５の処理では、ステップＳ２３の処理にてＰＣＩデバイス１１ＣからＰＣＩバス１２Ｂの使用が要求されたと判別した場合、バス使用許可信号ＧＮＴ−Ｃを信号線を介して送出することにより、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可が与えられる。これに対して、ステップＳ２３の処理にてＰＣＩデバイス１１ＤからＰＣＩバス１２Ｂの使用が要求されたと判別した場合、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出することにより、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可が与えられる。
【００４６】
一方、リトライ終了フラグがオンであると判別した場合（ステップＳ２２；Ｙｅｓ）、アービタ１４は、バス調停部１４３にて、判別結果記憶領域の記憶内容に基づいて、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイスであるか否かを判別する（ステップＳ２６）。ここで、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが単機能しか有しないデバイスであると判別した場合には（ステップＳ２６；Ｎｏ）、そのままバス調停処理を終了する。
【００４７】
一方、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイスであると判別した場合（ステップＳ２６；Ｙｅｓ）、アービタ１４は、バス調停部１４３にて、複数機能を有すると判別したデバイスに対してＰＣＩバス１２Ｂの使用許可を与え（ステップＳ２７）、バス調停処理を終了する。
【００４８】
具体的に、２つの異なる機能を有するＰＣＩデバイス１１ＣからＰＣＩバス１２Ｂの使用が要求された場合、ステップＳ２６の処理では、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃが複数機能を有するデバイスであると判別されて、ステップＳ２７の処理にてバス使用許可信号ＧＮＴ−Ｃが信号線を介して送出して、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可が与えられる。
【００４９】
これに対して、１つの機能のみを有するＰＣＩデバイス１１ＤからＰＣＩバス１２Ｂの使用が要求された場合、ステップＳ２６の処理では、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｄが単機能しか有しないデバイスであると判別されて、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出せず、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可が与えられない。
【００５０】
続いて、上述したＰＣＩバス制御回路の動作について、具体例を挙げて説明する。
【００５１】
一例として、ＰＣＩバス１２Ａ及び１２Ｂが使用されていない状態において、１つの機能のみを有するＰＣＩデバイス１１ＤがＰＣＩデバイス１１Ａからデータを読み出す場合には、まず、バス使用要求信号ＲＥＱ−Ｄが信号線を介してアービタ１４に対して送出されることにより、ＰＣＩバス１２Ｂの使用が要求される。そして、この場合、アービタ１４は、図４に示すステップＳ２２の処理にてリトライ終了フラグがオフであると判別することなどから、ステップＳ２５の処理にてバス使用許可信号ＧＮＴ−Ｄを信号線を介して送出することにより、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可を与える。
【００５２】
ＰＣＩデバイス１１Ｄは、バス使用許可信号ＧＮＴ−Ｄを検知すると、リードコマンドをＰＣＩバス１２Ｂを介してＰＣＩバスブリッジ１３に対して送出する。そして、ＰＣＩバスブリッジ１３は、リードコマンドを受けると、受け取ったリードコマンドをＰＣＩバス１２Ａを介してＰＣＩデバイス１１Ａに対して送出するとともに、リトライ応答をＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｄに対して送出することにより、ＰＣＩデバイス１１Ｄによるリードコマンドの送出を終了させる。
【００５３】
このようにして、ＰＣＩデバイス１１Ｄによるリードコマンドの送出を終了した場合、ＰＣＩデバイス１１Ｄは、リードコマンドのＰＣＩバスブリッジ１３に対する送出を再度実行すべく、バス使用要求信号ＲＥＱ−Ｄを信号線を介してアービタ１４に対して送出することにより、ＰＣＩバス１２Ｂの使用を要求する一方で、アービタ１４は、図３に示すステップＳ１３の処理にて図示せぬ内部メモリに設けられたリトライ終了フラグをオン状態にセットする。
【００５４】
これにより、アービタ１４は、図４に示すステップＳ２２の処理にてリトライ終了フラグがオンであると判別し、また、ステップＳ２６の処理にてＰＣＩデバイス１１Ｄが１つの機能しか有していないと判別することから、バス使用許可信号ＧＮＴ−Ｄを信号線を介して送出せず、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可が与えられない。
【００５５】
その後、ＰＣＩバスブリッジ１３によるＰＣＩデバイス１１Ａからのデータの読出が終了して、この読み出したデータ（リードデータ）をＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｄに対して送出する準備ができた場合、アービタ１４は、図３に示すステップＳ１３の処理にてリトライ終了フラグをクリアしてオフ状態にする。
【００５６】
これにより、アービタ１４は、図４に示すステップＳ２２の処理にてリトライ終了フラグがオフであると判別することなどから、ステップＳ２５の処理にてバス使用許可信号ＧＮＴ−Ｄを信号線を介して送出することにより、ＰＣＩデバイス１１Ｄに対してＰＣＩバス１２Ｂの使用許可を与える。
【００５７】
ＰＣＩデバイス１１Ｄは、バス使用許可信号ＧＮＴ−Ｄを検知すると、リードコマンドをＰＣＩバス１２Ｂを介してＰＣＩバスブリッジ１３に対して送出する。そして、ＰＣＩバスブリッジ１３は、ＰＣＩデバイス１１Ａからのデータの読出が終了していることから、リードコマンドを再度受けると、リードデータをＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｄに対して送出する。
【００５８】
このようにして、ＰＣＩバス制御回路１は、１つの機能のみを有するＰＣＩデバイス１１Ｄからの無駄なトランザクションによるＰＣＩバス１２Ｂの占有を削減しつつ、ＰＣＩデバイス１１Ａからデータを読み出すことができる。
【００５９】
他の例として、ＰＣＩバス１２Ａ及び１２Ｂが使用されていない状態において、２つの機能を有するＰＣＩデバイス１１Ｃのうちの１つの機能１１Ｃ−１がＰＣＩデバイス１１Ａからデータを読み出す場合には、まず、バス使用要求信号ＲＥＱ−Ｃが信号線を介してアービタ１４に対して送出されることにより、ＰＣＩバス１２Ｂの使用が要求される。そして、この場合、アービタ１４は、図４に示すステップＳ２２の処理にてリトライ終了フラグがオフであると判別することなどから、ステップＳ２５の処理にてバス使用許可信号ＧＮＴ−Ｃを信号線を介して送出することにより、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可を与える。
【００６０】
ＰＣＩデバイス１１Ｃの機能１１Ｃ−１は、バス使用許可信号ＧＮＴ−Ｃを検知すると、リードコマンドをＰＣＩバス１２Ｂを介してＰＣＩバスブリッジ１３に対して送出する。そして、ＰＣＩバスブリッジ１３は、リードコマンドを受けると、受け取ったリードコマンドをＰＣＩバス１２Ａを介してＰＣＩデバイス１１Ａに対して送出するとともに、リトライ応答をＰＣＩバス１２Ｂを介してＰＣＩデバイス１１Ｃに対して送出することにより、ＰＣＩデバイス１１Ｃの機能１１Ｃ−１によるリードコマンドの送出を終了させる。
【００６１】
このようにして、ＰＣＩデバイス１１Ｃの機能１１Ｃ−１によるリードコマンドの送出を終了した場合、アービタ１４は、図３に示すステップＳ１３の処理にて図示せぬ内部メモリに設けられたリトライ終了フラグをオン状態にセットする。
【００６２】
その後、ＰＣＩデバイス１１Ｃのうちのもう１つの機能１１Ｃ−２がＰＣＩデバイス１１Ｂからデータを読み出す場合には、バス使用要求信号ＲＥＱ−Ｃが信号線を介してアービタ１４に対して送出されることにより、ＰＣＩバス１２Ｂの使用が要求される。
【００６３】
この場合、アービタ１４は、図４に示すステップＳ２２の処理にてリトライ終了フラグがオンであると判別し、また、ステップＳ２６の処理にてＰＣＩデバイス１１Ｃが２つの機能を有すると判別することから、バス使用許可信号ＧＮＴ−Ｃを信号線を介して送出して、ＰＣＩデバイス１１Ｃに対してＰＣＩバス１２Ｂの使用許可を与える。
【００６４】
ＰＣＩデバイス１１Ｄの機能１１Ｃ−２は、バス使用許可信号ＧＮＴ−Ｃを検知すると、リードコマンドをＰＣＩバス１２Ｂを介してＰＣＩバスブリッジ１３に対して送出する。そして、ＰＣＩバスブリッジ１３は、リードコマンドを受けると、受け取ったリードコマンドをＰＣＩバス１２Ａを介してＰＣＩデバイス１１Ｂに対して送出する。
【００６５】
このようにして、ＰＣＩバス制御回路１は、２つの機能を有するＰＣＩデバイス１１Ｃのうちの１つの機能１１Ｃ−１によるＰＣＩデバイス１１Ａからのデータの読出が終了する以前でも、もう１つの機能１１Ｃ−２によるＰＣＩデバイス１１Ｂからのデータの読出を実行することができる。
【００６６】
以上説明したように、本実施形態におけるＰＣＩ制御回路１によれば、アービタ１４は、ＰＣＩバス１２Ｂに接続されているＰＣＩデバイス１１Ｃ、１１Ｄからバス使用要求信号ＲＥＱ−Ｃ、ＲＥＱ−Ｄが送出されてＰＣＩバス１２Ｂの使用が要求されたことに応答して、図４に示すステップＳ２２の処理にてリトライ終了フラグがオンであるか否かを判別することにより、今回の要求よりも以前になされたＰＣＩデバイス１１Ｃ、１１ＤからのＰＣＩバス１２Ｂの使用が要求に対して許可を与えたことに基づいて、ＰＣＩバス１２Ａが使用中であるか否かを判別する。
【００６７】
ここで、ステップＳ２２の処理にてリトライ終了フラグがオフであれば、アービタ１４は、ＰＣＩバス１２Ａが使用中でないと判別して、ＰＣＩデバイス１１Ｃ、１１Ｄの双方からＰＣＩバス１２Ｂの使用が要求された場合には、ステップＳ２４の処理にて優先順位を決定し、ＰＣＩデバイス１１Ｃ、１１Ｄのうち、優先度が高いものに対してＰＣＩバス１２Ｂの使用を許可し、ＰＣＩデバイス１１Ｃ、１１Ｄのいずれか一方のみからＰＣＩバス１２Ｂの使用が要求された場合には、ステップＳ２５の処理にてＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄに対してＰＣＩバス１２Ｂの使用を許可する。
【００６８】
これに対して、ステップＳ２２の処理にてリトライ終了フラグがオンであれば、アービタ１４は、ＰＣＩバス１２Ａが使用中であると判別して、ステップＳ２６の処理にて図示せぬ内部メモリに設けられた判別結果記憶領域の記憶内容に基づいて、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイスであるか否かを判別する。
【００６９】
そして、アービタ１４は、ステップＳ２６の処理にてＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが複数機能を有するデバイスであると判別した場合（本実施形態ではＰＣＩデバイス１１ＤからＰＣＩバス１２Ｂの使用が要求された場合）、ＰＣＩバス１２Ｂの使用を許可する一方で、ＰＣＩバス１２Ｂの使用を要求したＰＣＩデバイス１１Ｃ、１１Ｄが単機能しか有しないデバイスであると判別した場合（本実施形態ではＰＣＩデバイス１１ＣからＰＣＩバス１２Ｂの使用が要求された場合）、ＰＣＩバス１２Ｂの使用を許可しない。
【００７０】
すなわち、アービタ１４は、単機能しか有しないＰＣＩデバイス１１ＤからＰＣＩバス１２Ｂの使用が要求された場合、ＰＣＩバス１２Ａが使用中であれば、ＰＣＩバス１２Ｂの使用を許可せず、ＰＣＩバス１２Ａが使用中でなければ、ＰＣＩバス１２Ｂの使用を許可する。これに対して、複数機能を有するＰＣＩデバイス１１ＣからＰＣＩバス１２Ｂの使用が要求された場合には、ＰＣＩバス１２Ａが使用中であるか否かに関わらず、ＰＣＩバス１２Ｂの使用を許可する。
【００７１】
このように、単機能しか有しないＰＣＩデバイス１１ＤからＰＣＩバス１２Ｂの使用が要求された場合において、ＰＣＩバス１２Ａが使用中であるとき、すなわち、ＰＣＩバスブリッジ１３によるＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が行われているときには、ＰＣＩバス１２Ｂの使用を許可しない。その後、ＰＣＩバスブリッジ１３によるＰＣＩデバイス１１Ａ、１１Ｂからのデータの読出が終了して、この読み出したデータ（リードデータ）をＰＣＩデバイス１１Ｄに対して送出する準備ができると、アービタ１４は、ＰＣＩバス１２Ａが使用中でないと判別することから、直ちにＰＣＩバス１２Ｂの使用を許可する。
【００７２】
また、複数機能を有するＰＣＩデバイス１１ＣからＰＣＩバス１２Ｂの使用が要求された場合においては、ＰＣＩバス１２Ａが使用中であるか否かに関わらず、アービタ１４は、直ちにＰＣＩバス１２Ｂの使用を許可する。
【００７３】
これにより、ＰＣＩバス制御回路１は、無駄なトランザクションによるＰＣＩバス１２Ｂの占有を削減しつつ、ＰＣＩデバイス１１Ａ、１１Ｂからデータを遅滞なく読み出すことができる。
【００７４】
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
【００７５】
上記実施形態では、２個のＰＣＩバス１２ＡとＰＣＩバス１２Ｂにそれぞれ２個ずつＰＣＩデバイス１１Ａ及び１１ＢとＰＣＩデバイス１１Ｃ及び１１Ｄとが接続されるものとして説明した。しかしながら、本発明は、これに限定されるものではなく、ＰＣＩバスの個数は、２個以上であれば任意であり、また、ＰＣＩ規格において、１個のＰＣＩバスに接続されるＰＣＩデバイスの個数は、最大１０個であり、この範囲の個数であれば、任意に変更可能である。
【図面の簡単な説明】
【００７６】
【図１】ＰＣＩバス制御回路の構成例を示すブロック図である。
【図２】デバイス判別処理の一例を示すフローチャートである。
【図３】バス監視処理の一例を示すフローチャートである。
【図４】バス調停処理の一例を示すフローチャートである。
【符号の説明】
【００７７】
１              ＰＣＩバス制御回路
１１Ａ〜１１Ｄ  ＰＣＩデバイス
１２Ａ，１２Ｂ  ＰＣＩバス
１３            ＰＣＩバスブリッジ
１４            アービタ
１４１          デバイス判別部
１４２          バス監視部
１４３          バス調停部
【図１】
0005245463.tif 000002
【図２】
0005245463.tif 000003
【図３】
0005245463.tif 000004
【図４】
0005245463.tif 000005