(57)【要約】ＣＰＵおよびメモリが接続されたホストバスにブリッジを介して接続されたＰＣＩバスに接続するネットワークコントローラのステータスをＣＰＵに通知するステータス通知装置であって、ネットワークコントローラのステータスの優先度を判定する優先度判定部と、優先度の低いステータスを格納するステータスキューと、ＰＣＩバスの使用状況を判定するバスモニタと、ステータスの優先度が低い場合にはＰＣＩバスが使用されていない時にのみステータスキューに格納されたステータスのメモリへの書き込みを許可する出力許可部とを備える。
2005003981.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置および記憶装置が接続された第１のバスにブリッジを介して接続された第２のバスに接続するデバイスのステータスを該中央処理装置に通知するステータス通知装置であって、
前記ステータスの優先度を判定する優先度判定手段と、
前記第２のバスの使用状況を判定するバス使用状況判定手段と、
前記優先度判定手段による優先度の判定結果および前記バス使用状況判定手段による第２のバスの使用状況の判定結果に基づいて前記ステータスを記憶装置に書き込むステータス書き込み手段と、
を備えたことを特徴とするステータス通知装置。
【請求項２】
前記ステータス書き込み手段は、前記優先度判定手段がステータスの優先度が高いと判定した場合には、前記バス使用状況判定手段によるバス使用状況の判定結果にかかわらずステータスを記憶装置に書き込み、前記優先度判定手段がステータスの優先度が低いと判定した場合には、ステータスをキューに格納し、前記バス使用状況判定手段が第２のバスが使用されていないと判定するとキューに格納したステータスを記憶装置に書き込むことを特徴とする請求の範囲第１項に記載のステータス通知装置。
【請求項３】
前記優先度判定手段は、前記ステータスと優先度とを対応付けて記憶した優先度テーブルを用いて優先度を判定することを特徴とする請求の範囲第１項または第２項に記載のステータス通知装置。
【請求項４】
中央処理装置および記憶装置が接続された第１のバスにブリッジを介して接続された第２のバスに接続するデバイスのステータスを該中央処理装置に通知するステータス通知方法であって、
前記ステータスの優先度を判定する優先度判定工程と、
前記第２のバスの使用状況を判定するバス使用状況判定工程と、
前記優先度判定工程による優先度の判定結果および前記バス使用状況判定工程による第２のバスの使用状況の判定結果に基づいて前記ステータスを記憶装置に書き込むステータス書き込み工程と、
を含んだことを特徴とするステータス通知方法。
【請求項５】
前記ステータス書き込み工程は、前記優先度判定工程がステータスの優先度が高いと判定した場合には、前記バス使用状況判定工程によるバス使用状況の判定結果にかかわらずステータスを記憶装置に書き込み、前記優先度判定工程がステータスの優先度が低いと判定した場合には、ステータスをキューに格納し、前記バス使用状況判定工程が第２のバスが使用されていないと判定するとキューに格納したステータスを記憶装置に書き込むことを特徴とする請求の範囲第４項に記載のステータス通知方法。
【請求項６】
前記優先度判定工程は、前記ステータスと優先度とを対応付けて記憶した優先度テーブルを用いて優先度を判定することを特徴とする請求の範囲第４項または第５項に記載のステータス通知方法。
【発明の詳細な説明】
【技術分野】  この発明は、中央処理装置および記憶装置が接続された第１のバスにブリッジを介して接続された第２のバスに接続するデバイスのステータスを中央処理装置に通知するステータス通知装置およびステータス通知方法に関し、特に、不急な第２のバスの使用を無くし、もって第２のバスの使用効率を向上することができるステータス通知装置およびステータス通知方法に関するものである。
【背景技術】  従来、ホストバス（第１のバス）に接続するＣＰＵがホストバスにブリッジを介して接続されたＰＣＩバス（第２のバス）に接続するデバイスのステータスを取得する場合には、ＣＰＵがデバイスのステータスをポーリングしていた。
第８図は、従来のデバイスステータス通知方式を説明するための説明図である。同図に示すように、ブリッジ４０を介してＰＣＩバス５０に接続されたデバイスＣ８００のステータスをＣＰＵ１０が取得する場合には、ＣＰＵ１０がホストバス３０、ブリッジ４０およびＰＣＩバス５０を介してデバイスＣ８００のステータスレジスタ８１０を読み取っていた。なお、ＣＰＵがポーリングによってデバイスのステータスを読み出す技術については、特許文献１に開示されている。
また、ＣＰＵ１０がデバイスＣ８００をポーリングする代わりに、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）機能を用いて、デバイスＣ８００がステータスをメモリ２０に書き込み、ＣＰＵ１０がメモリ２０を読み出すことによってデバイスＣ８００のステータスを取得することもできる。たとえば、特許文献２〜４には、ＤＭＡ機能を用いてデバイスステータスをメモリに書き込む技術が開示されている。
【特許文献１】  特開昭５９−１２２２５７
【特許文献２】  特開昭５７−１０３５３０
【特許文献３】  特開２００１−４５０９５
【特許文献４】  特開平０９−２０４３１１
しかしながら、ポーリング方式の場合には、ステータスレジスタ８１０からのステータスの読み出しがＰＣＩバス５０を介しておこなわれ（▲１▼）、ＤＭＡ方式の場合には、ステータスのメモリ２０への書き込みがＰＣＩバス５０を介しておこなわれるため（▲２▼）、ＰＣＩバス５０に接続された他のデバイスＡ６０からデバイスＢ７０へデータ転送中（▲３▼）にポーリングまたはＤＭＡが発生すると、その度にデータ転送が中断され、ＰＣＩバス５０のデータ転送効率が悪くなるという問題点があった。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、不急なＰＣＩバス５０（第２のバス）の使用を無くし、もってＰＣＩバス５０の使用効率を向上することができるステータス通知装置およびステータス通知方法を提供することを目的としている。
【発明の開示】
上述した課題を解決し、目的を達成するため、本発明は、中央処理装置および記憶装置が接続された第１のバスにブリッジを介して接続された第２のバスに接続するデバイスのステータスを該中央処理装置に通知するステータス通知装置であって、前記ステータスの優先度を判定する優先度判定手段と、前記第２のバスの使用状況を判定するバス使用状況判定手段と、前記優先度判定手段による優先度の判定結果および前記バス使用状況判定手段による第２のバスの使用状況の判定結果に基づいて前記ステータスを記憶装置に書き込むステータス書き込み手段と、を備えたことを特徴とする。
また、本発明は、中央処理装置および記憶装置が接続された第１のバスにブリッジを介して接続された第２のバスに接続するデバイスのステータスを該中央処理装置に通知するステータス通知方法であって、前記ステータスの優先度を判定する優先度判定工程と、前記第２のバスの使用状況を判定するバス使用状況判定工程と、前記優先度判定工程による優先度の判定結果および前記バス使用状況判定工程による第２のバスの使用状況の判定結果に基づいて前記ステータスを記憶装置に書き込むステータス書き込み工程と、を含んだことを特徴とする。
かかる発明によれば、ステータスの優先度を判定し、第２のバスの使用状況を判定し、優先度の判定結果および第２のバスの使用状況の判定結果に基づいてステータスを記憶装置に書き込むこととしたので、不急な第２のバスの使用を無くし、もって第２のバスの使用効率を向上することができる。
【図面の簡単な説明】  第１図は、本実施の形態に係るデバイスステータス通知方式の概念を説明するための説明図であり、第２図は、本実施の形態に係るネットワークコントローラの構成を示す機能ブロック図であり、第３図は、優先度判定テーブルの一例を示す図であり、第４図は、本実施の形態に係るネットワークコントローラによるステータス通知動作を示すフローチャートであり、第５図は、本実施の形態に係るネットワークコントローラによる高優先度ステータス通知動作を説明するための説明図であり、第６図は、本実施の形態に係るネットワークコントローラによる低優先度ステータス通知動作を説明するための説明図であり、第７図は、デバイスＡからデバイスＢへのデータ転送中にネットワークコントローラにステータス通知要因が発生した場合のＰＣＩバスおよびホストバスのタイムチャートを示す図であり、第８図は、従来のデバイスステータス通知方式を説明するための説明図である。
【発明を実施するための最良の形態】  以下、添付図面を参照して、この発明に係るステータス通知装置およびステータス通知方法の好適な実施の形態を詳細に説明する。なお、本実施の形態では、本発明をネットワークコントローラに適用した場合を中心に説明する。
まず、本実施の形態に係るデバイスステータス通知方式の概念について説明する。第１図は、本実施の形態に係るデバイスステータス通知方式の概念を説明するための説明図である。
同図に示すように、本実施の形態に係るデバイスステータス通知方式では、ネットワークコントローラ１００がステータスをメモリ２０に書き込み、ＣＰＵ１０はネットワークコントローラ１００のステータスを取得するためにネットワークコントローラ１００をポーリングする代わりにメモリ２０をポーリングする（▲１▼）。このため、ＣＰＵ１０がデバイスステータスをポーリングする場合にＰＣＩバス５０が使用されることはなく、デバイスＡ６０からデバイスＢ７０へのデータ転送中（▲２▼）にＣＰＵ１０のポーリングが発生してもデータ転送が中断されることはない。
また、ネットワークコントローラ１００は、ＣＰＵ１０に通知すべきステータスの優先度を判定し、優先度が低い場合には、ステータスを直ちにメモリ２０に書き込むのではなく、ステータスキュー１５０に格納する。そして、ＰＣＩバス５０が使用されていない時に、ステータスキュー１５０に格納した低優先度ステータスをまとめて、ＰＣＩバス５０、ブリッジ４０およびホストバス３０を介してメモリ２０に書き込む（▲３▼）。
したがって、デバイスＡ６０からデバイスＢ７０へのデータ転送中にＣＰＵ１０に通知するステータスが発生しても、ステータスの優先度が低い場合にはデータ転送が中断されることはない。ただし、ネットワークコントローラ１００に発生したステータスの優先度が高い場合には、直ちにそのステータスをメモリ２０に書き込む（▲４▼）。
このように、本実施の形態係るデバイスステータス通知では、ネットワークコントローラ１００は、ＤＭＡ機能を用いてステータスをメモリ２０に書き込む場合に、ステータスの優先度を判定し、優先度が低い場合にはステータスキュー１５０に格納し、ＰＣＩバス５０が使用されていない時にまとめてステータスをメモリ２０に書き込むことによって、ＰＣＩバスを効率良く使用することができる。
次に、本実施の形態に係るネットワークコントローラ１００の構成について説明する。第２図は、本実施の形態に係るネットワークコントローラ１００の構成を示す機能ブロック図である。
同図に示すように、このネットワークコントローラ１００は、ＭＡＣ制御部１１０と、ステータス生成部１２０と、優先度判定部１３０と、ＤｅＭＵＸ１４０と、ステータスキュー１５０と、ＭＵＸ１６０と、バスモニタ１７０と、出力許可部１８０と、出力制御部１９０とを有する。
ＭＡＣ制御部１１０は、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２００とのデータ転送を制御する処理部である。なお、ＭＡＣ２００は、ネットワークとデータ授受をおこなう装置である。
ステータス生成部１２０は、ＭＡＣ２００からのエラー通知やＭＡＣ制御部１１０からのデータ転送完了通知などＣＰＵ１０への通知要因を受け、ＣＰＵ１０へ通知すべきステータスを生成する処理部である。
優先度判定部１３０は、ステータス生成部１２０からステータスの要因を受け取り、ステータスの優先度を判定する処理部であり、具体的には、優先度判定テーブルを用いてステータスの優先度を判定する。
第３図は、優先度判定テーブルの一例を示す図である。同図に示すように、この優先度判定テーブルは、ステータスの種類を示すラベルと、ステータスの優先度と、ステータスを識別するバイナリコードとをステータスごとに対応付けて記憶している。
たとえば、ラベルが「フレームチェックエラー」であるステータスは、優先度が「高」であり、バイナリコードが「０００１」であることを示し、ラベルが「受信完了」であるステータスは、優先度が「低」であり、バイナリコードが「００１１」であることを示している。
ＤｅＭＵＸ１４０は、優先度判定部１３０によるステータスの優先度判定結果に従ってステータスを出力制御部１９０に直接送るかステータスキュー１５０に格納するかを選択する処理部である。すなわち、優先度判定部１３０がステータスの優先度が高いと判定した場合には、ステータスを出力制御部１９０に直接送り、優先度判定部１３０がステータスの優先度が低いと判定した場合には、ステータスをステータスキュー１５０に格納する。
このように、優先度判定部１３０がステータスの優先度を判定し、優先度判定部１３０がステータスの優先度が低いと判定した場合に、ＤｅＭＵＸ１４０がステータスをステータスキュー１５０に格納してＰＣＩバス５０への出力を延期することによって、不急なＰＣＩバス５０の使用を避けることができる。
ステータスキュー１５０は、優先度判定部１３０が優先度が低いと判定したステータスを一時的に格納する記憶部であり、ＰＣＩバス５０が使用中である間は優先度が低いステータスを格納しておく。そして、このステータスキュー１５０に格納されたステータスは、ＰＣＩバス５０が使用中でなくなった時にまとめて出力制御部１９０に渡される。
ＭＵＸ１６０は、ＤｅＭＵＸ１４０から受け取った高優先度ステータスまたはステータスキュー１５０に格納された低優先度ステータスを出力制御部１９０へ渡す処理部である。
バスモニタ１７０は、ＰＣＩバス５０の状態を常に監視し、ＰＣＩバス５０が使用されているか否かを判定する処理部であり、判定した結果を出力許可部１８０に伝える。
出力許可部１８０は、ステータスの優先度およびＰＣＩバス５０の使用状況に基づいてメモリ２０へのステータスの書き込みを許可する処理部であり、具体的には、ステータスの優先度が高い場合には、ＰＣＩバス５０の使用状況にかかわらずメモリ２０へのステータスの書き込みを許可し、ステータスの優先度が低い場合には、ＰＣＩバス５０が使用中でなければメモリ２０へのステータスの書き込みを許可する。
この出力許可部１８０がステータスの優先度が低い場合に、ＰＣＩバス５０が使用中でない時だけメモリ２０へのステータスの書き込みを許可することによって、ＰＣＩバス５０の不急な使用を無くし、ＰＣＩバス５０を効率良く使用することができる。
出力制御部１９０は、出力許可部１８０の出力許可を受け、ＰＣＩバス５０、ブリッジ４０およびホストバス３０を介してメモリ２０へステータスの書き込みをおこなう処理部である。
次に、本実施の形態に係るネットワークコントローラ１００によるステータス通知動作ついて説明する。第４図は、本実施の形態に係るネットワークコントローラ１００によるステータス通知動作を示すフローチャートである。
同図に示すように、このネットワークコントローラ１００は、ＣＰＵ１０に通知する必要があるイベントが発生すると（ステップＳ４０１、肯定）、ステータス生成部１２０がステータスを生成し（ステップＳ４０２）、その要因を優先度判定部１３０に伝える。
すると、優先度判定部１３０がステータスの優先度を判定し（ステップＳ４０３）、優先度が高い場合には、出力許可部１８０が出力許可信号を生成し（ステップＳ４０４）、出力制御部１９０がメモリ２０への書き込みをおこなう（ステップＳ４０５）。
一方、優先度が低い場合には、ＤｅＭＵＸ１４０がステータスをステータスキュー１５０に格納し（ステップＳ４０６）、バスモニタ１７０によって判定されたＰＣＩバス５０の使用状況を参照して出力許可部１８０が、ＰＣＩバス５０がビジーである間は（ステップＳ４０７、ビジー）、出力許可をおこなわない。
また、ＰＣＩバス５０がアイドルである場合またはＰＣＩバス５０がアイドルになった場合（ステップＳ４０７、アイドル）、出力許可部１８０が出力許可信号を生成し（ステップＳ４０４）、ステータスキュー１５０に格納されたステータスをまとめて出力制御部１９０がメモリ２０へ書き込む（ステップＳ４０５）。
このように、優先度判定部１３０がステータスの優先度を判定し、ステータスの優先度とＰＣＩバス５０の使用状況に基づいて出力許可部１８０が出力許可信号を生成することによって、不急なＰＣＩバス５０の使用を無くし、ＰＣＩバス５０を効率良く使用することができる。
次に、本実施の形態に係るネットワークコントローラ１００が優先度の高いステータスを通知する場合の動作について説明する。第５図は、本実施の形態に係るネットワークコントローラ１００による高優先度ステータス通知動作を説明するための説明図である。
同図に示すように、たとえば、ＭＡＣ２００がフレームチェックエラーを検出し（▲１▼）、ステータス生成部１２０に通知すると（▲２▼）、ステータス生成部１２０はフレームチェックエラーのステータスを生成するとともにその要因を優先度判定部１３０に通知し、優先度判定部１３０が優先度テーブルを用いてフレームチェックエラーの優先度は高いと判定する（▲３▼）。
すると、ＤｅＭＵＸ１４０がこの判定結果を受け（▲４▼）、ステータスをＭＵＸ１６０経由で出力制御部１９０に渡す（▲５▼）。一方、優先度判定部１３０の判定結果を受けて出力許可部１８０は、ＰＣＩバス５０の使用状況にかかわらず出力許可信号を生成し出力制御部１９０に伝える（▲６▼）。そして、出力制御部１９０が、フレームチェックエラーのステータスをメモリ２０へ書き込む。
このように、このネットワークコントローラ１００は、フレームチェックエラーのような優先度の高いステータスについては、ＰＣＩバス５０の使用状況にかかわらず直ちにメモリ２０へ書き込む。
次に、本実施の形態に係るネットワークコントローラ１００が優先度の低いステータスを通知する場合の動作について説明する。第６図は、本実施の形態に係るネットワークコントローラ１００による低優先度ステータス通知動作を説明するための説明図である。
同図に示すように、たとえば、ＭＡＣ制御部１１０がデータの受信を完了し（▲１▼）、ステータス生成部１２０に転送完了を通知すると（▲２▼）、ステータス生成部１２０は受信完了のステータスを生成するとともにその要因を優先度判定部１３０に通知し、優先度判定部１３０が優先度テーブルを用いて受信完了の優先度は低いと判定する（▲３▼）。
すると、ＤｅＭＵＸ１４０がこの判定結果を受け（▲４▼）、ステータスをステータスキュー１５０に格納する。一方、優先度判定部１３０の判定結果を受けて出力許可部１８０は、バスモニタ１７０によるＰＣＩバス５０の使用状況判定結果（▲５▼）を参照し、ＰＣＩバス５０が使用中でない場合には、出力許可信号を生成して出力制御部１９０に伝える（▲６▼）。そして、出力制御部１９０が、受信完了のステータスをメモリ２０へ書き込む（▲７▼）。
これに対して、ＰＣＩバス５０が使用中である場合には、出力許可部１８０は、ＰＣＩバス５０が使用中でなくなるまで待ち、使用中でなくなると出力許可信号を生成して出力制御部１９０に伝える（▲６▼）。そして、出力制御部１９０が、受信完了のステータスをメモリ２０へ書き込む（▲８▼）。
このように、このネットワークコントローラ１００は、受信完了のような優先度の低いステータスについては、ＰＣＩバス５０が使用されていない時を利用してメモリ２０へ書き込む。
次に、従来のＣＰＵ１０によるポーリング方式を用いた場合のＰＣＩバス５０の動作および本実施の形態に係るステータス通知方式を用いた場合のＰＣＩバス５０の動作について説明する。第７図は、デバイスＡ６０からデバイスＢ７０へのデータ転送中にネットワークコントローラ１００にステータス通知要因が発生した場合のＰＣＩバス５０およびホストバス３０のタイムチャートを示す図である。
同図に示すように、従来のＣＰＵ１０によるポーリング方式では、デバイスＡ６０からデバイスＢ７０へのデータ転送中にＣＰＵ１０によるポーリングが発生すると、その度にＰＣＩバス５０がＣＰＵ１０に使用され、データ転送が中断される。そして、ネットワークコントローラ１００に発生した３つの低優先度ステータス通知要因は、要因発生後のＣＰＵ１０のポーリングによって検出される。
一方、本実施の形態に係るステータス通知方式では、デバイスＡ６０からデバイスＢ７０へのデータ転送中にネットワークコントローラ１００に優先度の低いステータス通知要因が発生した場合には、発生したステータス通知要因をデータ転送が完了するまでステータスキュー１５０に格納し、データ転送が終了した時点で３つまとめてメモリ２０に書き込む。このため、デバイスＡ６０からデバイスＢ７０へのデータ転送は中断されることなく早期に完了し、ＰＣＩバス５０を効率良く使用することができる。
また、本実施の形態に係るステータス通知方式では、ＣＰＵ１０はメモリ２０をポーリングしてネットワークコントローラ１００のステータスを取得するため、ポーリングにはホストバス３０のみを使用し、ＰＣＩバス５０を使用する必要はない。
上述したように、本実施の形態では、優先度判定部１３０がネットワークコントローラ１００に発生したステータスの優先度を判定し、ステータスの優先度が低い場合には、ＤｅＭＵＸ１４０が優先度の低いステータスをステータスキュー１５０に格納し、バスモニタ１７０がＰＣＩバス５０の使用状況を判定し、出力許可部１８０がＰＣＩバス５０が使用されていない時にのみステータスキュー１５０に格納されたステータスのメモリ２０への書き込みを許可することとしたので、不急なＰＣＩバス５０の使用を無くし、ＰＣＩバス５０を効率良く使用することができる。
なお、本実施の形態では、ＰＣＩバスに接続されたネットワークコントローラのステータスを、ブリッジを介してＰＣＩバスに接続されたホストバスに接続するＣＰＵに通知する場合について説明したが、本発明はこれに限定されるものではなく、ネットワークコントローラ以外のデバイスやＰＣＩバス以外のバスに接続されたデバイスのステータスを通知する場合にも同様に適用することができる。
以上説明したように、本発明によれば、デバイスのステータスの優先度を判定し、第２のバスの使用状況を判定し、優先度の判定結果および第２のバスの使用状況の判定結果に基づいてステータスを記憶装置に書き込むよう構成したので、不急な第２のバスの使用を無くし、もって第２のバスの使用効率を向上することができるという効果を奏する。
【産業上の利用可能性】  以上のように、本発明に係るステータス通知装置およびステータス通知方法は、バスに接続されたデバイスがブリッジおよび他のバスを介してＣＰＵにデバイスステータスを通知する場合に適している。
【図１】
2005003981.tif 000003
【図２】
2005003981.tif 000004
【図３】
2005003981.tif 000005
【図４】
2005003981.tif 000006
【図５】
2005003981.tif 000007
【図６】
2005003981.tif 000008
【図７】
2005003981.tif 000009
【図８】
2005003981.tif 000010
【国際調査報告】
2005003981.tif 000011
2005003981.tif 000012
2005003981.tif 000013
2005003981.tif 000014