(57)【特許請求の範囲】
【請求項１】
ＰＣＩバスに接続される、任意にレジスタの設定が可能なデバイス固有領域を含むコンフィグレーション空間を持つＰＣＩデバイスであって、
前記デバイス固有領域として定義されるレジスタが実装され、データ収集指示を受けると、前記レジスタの内容に従って指示されたデータの収集を行うデータ収集制御手段と、
前記ＰＣＩバスを介して前記デバイス固有領域に対するコンフィグレーションアクセスを受けると、前記データ収集制御手段に対して前記データ収集指示を送出するとともに、該データ収集指示に応じて前記データ収集制御手段が収集したデータを前記ＰＣＩバス上に送出するコンフィグレーションアクセス制御手段とを有するＰＣＩデバイス。
【請求項２】
コンフィグレーションアクセスはコンフィグレーションライトとコンフィグレーションリードの２つのアクセスからなり、
データ収集手段は、前記コンフィグレーションライトによって、デバイス固有領域の所定のアドレスからの所定のビット数のレジスタに対してデータ収集を行うべきアドレスが書き込まれ、該書き込まれたアドレスに従ってデータが収集され、該収集されたデータが前記所定のビット数のレジスタに格納され、さらに前記コンフィグレーションリードによって、前記所定のビット数のレジスタに格納されたデータがコンフィグレーションアクセス制御手段に送出されるように構成されていることを特徴とする請求項１に記載のＰＣＩデバイス。
【請求項３】
コンフィグレーションアクセスはコンフィグレーションライトとコンフィグレーションリードの２つのアクセスからなり、
データ収集手段は、前記コンフィグレーションライトによって、デバイス固有領域の所定のアドレスのアドレス設定レジスタにデータ収集を行うべきアドレスの先頭アドレスが書き込まれ、該書き込まれた先頭アドレスから所定のバイト分のデータが収集され、該収集されたデータが前記デバイス固有領域の複数のアドレスにわたるレジスタ群に格納され、さらに前記コンフィグレーションリードによって、前記レジスタ群に格納されたデータが順次読み出されてコンフィグレーションアクセス制御手段に送出されるように構成されていることを特徴とする請求項１に記載のＰＣＩデバイス。
【請求項４】
データ収集手段は、デバイス固有領域の所定のアドレスに収集データのサイズを指定するためのサイズ指定用レジスタを有し、レジスタの設定アドレスに書き込まれた先頭アドレスから前記サイズ指定用レジスタで指定されたデータサイズ分のデータが収集されてレジスタ群に格納されるように構成されていることを特徴とする請求項３に記載のＰＣＩデバイス。
【請求項５】
データ収集手段は、コンフィグレーション空間に対して行われる操作であるコンフィグレーションサイクルの所定のビットによって定義された機能番号が格納される機能番号保持レジスタを有し、レジスタの設定アドレスに書き込まれた先頭アドレスから前記機能番号保持レジスタに格納されたデータで指定されるデータサイズ分のデータが収集されてレジスタ群に格納されるように構成されていることを特徴とする請求項３に記載のＰＣＩデバイス。
【請求項６】
コンフィグレーション空間のヘッダ領域として定義されるレジスタを実装するコンフィグレーションレジスタをさらに有し、
コンフィグレーションアクセス制御手段は、ＰＣＩバスを介して前記ヘッダ領域に対するコンフィグレーションアクセスを受けると、前記コンフィグレーションレジスタに対してアクセスするように構成されていることを特徴とする請求項１に記載のＰＣＩデバイス。
【請求項７】
ＰＣＩバスを介したデータ伝送を制御するＰＣＩバスインターフェース制御手段と、
所定のノーマルアクセス動作を制御するノーマルアクセス制御手段とをさらに有し、
前記ＰＣＩバスインターフェース制御手段が、前記ＰＣＩバスを介してコンフィグレーションアクセスを受けた場合は、コンフィグレーションアクセス手段に対して前記コンフィグレーションアクセスの内容に応じた動作の実行を指示し、前記ＰＣＩバスを介して前記コンフィグレーションアクセス以外のＰＣＩバストランザクションを受けた場合は、前記ノーマルアクセス制御手段に対してＰＣＩバストランザクションの内容に応じたノーマルアクセス動作の実行を指示するように構成されていることを特徴とする請求項１に記載のＰＣＩデバイス。
【請求項８】
請求項１乃至７のいずれか１項に記載のＰＣＩデバイスと、前記ＰＣＩデバイスが接続されるＰＣＩバスとを有するＰＣＩバスシステム。
【請求項９】
任意にレジスタの設定が可能なデバイス固有領域を含むコンフィグレーション空間を持つＰＣＩデバイスがＰＣＩバスに接続されたＰＣＩバスシステムにおいて行われるデータ収集方法であって、
前記デバイス固有領域を使用して、前記ＰＣＩデバイスに対してデータの収集を指示するコンフィグレーションアクセスを実行するステップと、
前記ＰＣＩデバイスが、前記コンフィグレーションアクセスに従って指定されたデータの収集を行い、該収集したデータを前記ＰＣＩバス上に送出するステップとを含むことを特徴とするデータ収集方法。
【請求項１０】
コンフィグレーションアクセスがコンフィグレーションライトとコンフィグレーションリードの２つのアクセスからなり、
前記コンフィグレーションライトによって、ＰＣＩデバイス内に実装されたデバイス固有領域の所定のアドレスからの所定のビット数のレジスタに対して、データ収集を行うべきアドレスを書き込むステップと、
前記ＰＣＩデバイスが、前記書き込まれたデータ収集を行うべきアドレスに従ってデータを収集し、該収集したデータを前記所定のビット数のレジスタに格納するステップと、
前記コンフィグレーションリードによって、前記所定のビット数のレジスタに格納されたデータを読み出すステップとを含むことを特徴とする請求項９に記載のデータ収集方法。
【請求項１１】
コンフィグレーションアクセスがコンフィグレーションライトとコンフィグレーションリードの２つのアクセスからなり、
前記コンフィグレーションライトによって、ＰＣＩデバイス内に実装されたデバイス固有領域の所定のアドレスのアドレス設定レジスタにデータ収集を行うべきアドレスの先頭アドレスを書き込むステップと、
前記ＰＣＩデバイスが、前記アドレス設定レジスタに書き込まれた先頭アドレスに従ってデータを収集し、該収集したデータを前記デバイス固有領域の複数のアドレスにわたるレジスタ群に格納するステップと、
前記コンフィグレーションリードによって、前記レジスタ群に格納されたデータを読み出すステップとを含むことを特徴とする請求項９に記載のデータ収集方法。
【請求項１２】
デバイス固有領域の所定のアドレスのレジスタをサイズ指定用レジスタとし、該サイズ指定用レジスタに収集すべきデータのサイズを設定するステップをさらに含み、
ＰＣＩデバイスによるデータ収集のステップが、レジスタの設定アドレスに書き込まれた先頭アドレスから前記サイズ指定用レジスタで指定されたデータサイズ分のデータを収集し、該収集したデータをレジスタ群に格納するステップであることを特徴とする請求項１１に記載のデータ収集方法。
【請求項１３】
コンフィグレーション空間に対して行われる操作であるコンフィグレーションサイクルの所定のビットによって定義された機能番号をＰＣＩデバイス内に実装された機能番号保持レジスタに格納するステップをさらに含み、
ＰＣＩデバイスによるデータ収集のステップが、レジスタの設定アドレスに書き込まれた先頭アドレスから前記機能番号保持レジスタに格納されたデータで指定されるデータサイズ分のデータを収集し、該収集したデータを前記デバイス固有領域の複数のアドレスにわたるレジスタ群に格納するステップであることを特徴とする請求項１１に記載のデータ収集方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスに接続されるＰＣＩデバイスおよびそのＰＣＩデバイスを備えるＰＣＩシステムに関する。さらには、そのＰＣＩデバイス内に格納されたデータを収集する方法に関する。
【０００２】
【従来の技術】
ＰＣＩバスはコンピュータ用バスアーキテクチャの一つであって、モデムカードやビデオカードなど種々のＰＣＩデバイスの接続（増設）が可能である。このようなＰＣＩバスを備えるＰＣＩバスシステムの一例として、特開平１０−２１１５２号公報には、大容量のＬＡＮ回線を収容してデータ通信を専用に行うＬＡＮＰ（ＬＡＮ  Ｐｒｏｃｅｓｓｏｒ）のシステムが開示されている。図１０は、そのシステムの概略構成を示すブロック図である。
【０００３】
図１０を参照すると、ＬＡＮＰは、中央処理装置（ＣＰＵ）２００と主記憶装置（ＭＥＭ）２０１がシステムバス２１０を介して接続され、システムバス２１０にＰＣＩバス制御用ＬＳＩ（ＰＣＬ）２０２が接続され、ＰＣＬ２０２にＬＡＮ回線接続アダプタ（ＮＩＣ）２０３およびホスト接続装置（ＯＬＡ）２０４がＰＣＩバス２１１を介して接続された構成となっている。
【０００４】
上記のＬＡＮＰは、ＮＩＣ２０３を介してＬＡＮ回線２２２と接続することができる。また、ＬＡＮＰは、ＯＬＡ２０４がＩＯインタフェース２１２を介して外部のホストコンピュータ２２１と接続されており、ホストコンピュータ２２１との間でデータの送受信を行うことができる。ここで、ＮＩＣ２０３およびＯＬＡ２０４は通信プロトコルを制御するＰＣＩ拡張カード（ＰＣＩデバイス）である。
【０００５】
図１１に、ＰＣＩ拡張カードの一例を示す。このＰＣＩ拡張カードは図１０に示したＯＬＡ２０４であって、その構成は、ホストコンピュータ２２１とのデータ伝送の制御を行うマイクロプロセッサ（ＭＰＵ）３０１と、ＰＣＩバス２１１を介したデータ転送の制御をＭＰＵ３０１とは独立して行うＰＣＩバスコントローラ（ＰＢＣ）３００と、データの一時記憶などに用いられる、ＤＲＡＭよりなるローカルメモリ（ＬＭ）３０２とからなる。ＰＢＣ３００およびＭＰＵ３０１はそれぞれ内部バスを介してＬＭ３０２に接続されており、それぞれがＬＭ３０２にアクセスしてデータの読み出し／書き込みを行うことができる。また、ＰＢＣ３００は、図１０に示したＣＰＵ２００やＭＥＭ２０１とのＰＣＩバス２１１を介したデータの送受信を行うことができる。
【０００６】
ＰＢＣ３００は、内部にＳＲＡＭで構成されたコンフィグレーション空間（ＣＦＧ）３１０を備える。コンフィグレーション空間はコンフィグレーション情報を記憶するための記録領域であって、システム設定時にコンフィグレーション情報が設定される。コンフィグレーション情報は定義済みヘッダ領域とデバイス依存領域からなり、通常は、ＰＣＩバス仕様で、全体として２５６バイトある。定義済みヘッダ領域は６４バイトであり、そのレイアウトはＰＣＩバスの規格として定められている。デバイス依存領域は１９２バイトあり、通常、各ＰＣＩデバイス毎に任意の情報を設定することができる。ＰＢＣ３００は、ＰＣＩバス２１１を介したＰＣＩバストランザクションを受け付けると、その受け付けたトランザクションの内容に応じて、ＬＭ３０２にアクセスしてデータの読み出し／書き込みを行ったり、ＰＣＩバス２１１を介したデータの転送を行ったりする。これらのデータ伝送に際して必要となる制御ビットやＰＣＩ拡張カードをＣＰＵ２００に認識させるめの情報などがコンフィグレーション情報として設定されている。
【０００７】
【発明が解決しようとする課題】
上述したようなＰＣＩ拡張カード（ＰＣＩデバイス）がＰＣＩバスに接続されるシステムにおいて、ＰＣＩデバイス内に故障が生じた場合には、そのＰＣＩデバイス内のデータ、例えば図１１のＬＭ３０２に記憶されているデータを収集して故障原因を解析する、といったことが行われる。また、ＰＣＩデバイスの開発時のデバッグの際にも、ＰＣＩデバイス内のデータの収集が行われる。
【０００８】
しかしながら、ＰＣＩデバイス内で障害が検出されている場合やデバッグ時には、ＰＣＩデバイス内のＰＣＩバス関連の設定情報が失われていたり、正しく設定されていなかったりする場合があり、そのような場合には、ＰＣＩデバイスは通常のＰＣＩバストランザクションを受け付けることができなくなり、その結果、ＰＣＩデバイス内のデータを収集することができなくなってしまう。
【０００９】
更に、ＰＣＩデバイスがＰＣＩトランザクションを受け付けられない状態の時に、オペレーティングシステム（ＯＳ）からＰＣＩデバイスに対して情報収集のためのＩＯトランザクションが発行されると、ＰＣＩデバイスはＯＳからのＩＯトランザクションの結果としてＰＣＩバス上に発行されるトランザクションに対する動作を保証できない。その場合、ＰＣＩホスト（図１０のＰＣＬ２０２）が致命的なエラーを検出するか、またはＰＣＩバス上のトランザクションが消失するというような事象が発生する。その結果、ＯＳが動作を続けることができなくなり、ＰＣＩデバイス内のデータ収集動作によりシステム全体が停止する（システムエラーの発生）という問題があった。
【００１０】
本発明の目的は、上記問題を解決し、データの収集を確実に行うことのできる、ＰＣＩデバイスおよびデータ収集方法を提供することにある。
【００１１】
本発明のさらなる目的は、そのようなＰＣＩデバイスを用いたＰＣＩバスシステムを提供することにある。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明のＰＣＩデバイスは、ＰＣＩバスに接続される、任意にレジスタの設定が可能なデバイス固有領域を含むコンフィグレーション空間を持つＰＣＩデバイスであって、
前記デバイス固有領域として定義されるレジスタが実装され、データ収集指示を受けると、前記レジスタの内容に従って指示されたデータの収集を行うデータ収集制御手段と、
前記ＰＣＩバスを介して前記デバイス固有領域に対するコンフィグレーションアクセスを受けると、前記データ収集制御手段に対して前記データ収集指示を送出するとともに、該データ収集指示に応じて前記データ収集制御手段が収集したデータを前記ＰＣＩバス上に送出するコンフィグレーションアクセス制御手段とを有する。
【００１３】
本発明のＰＣＩバスシステムは、上述のいずれかのＰＣＩデバイスと、前記ＰＣＩデバイスが接続されるＰＣＩバスとを有することを特徴とする。
【００１４】
本発明のデータ収集方法は、任意にレジスタの設定が可能なデバイス固有領域を含むコンフィグレーション空間を持つＰＣＩデバイスがＰＣＩバスに接続されたＰＣＩバスシステムにおいて行われるデータ収集方法であって、
前記デバイス固有領域を使用して、前記ＰＣＩデバイスに対してデータの収集を指示するコンフィグレーションアクセスを実行するステップと、
前記ＰＣＩデバイスが、前記コンフィグレーションアクセスに従って指定されたデータの収集を行い、該収集したデータを前記ＰＣＩバス上に送出するステップとを含むことを特徴とする。
【００１５】
上記のとおりの本発明においては、ＰＣＩバスにおけるコンフィギュレーションアクセスを利用してＰＣＩデバイス内に格納されたデータの収集が行われる。このＰＣＩバスにおけるコンフィギュレーションアクセスは、ＰＣＩデバイスに何も設定されていない状態であっても、ＰＣＩバス仕様で定義されるＩＤＥＳＬ信号により対象のＰＣＩデバイスを指定してアクセスすることが可能であるため、ＰＣＩバス上のＰＣＩデバイスの障害のみならず、ＯＳやデバイスドライバなどのソフトウェアの不具合によりＰＣＩバス動作に関する情報が正常に設定されていない場合でも、ＰＣＩデバイス内のデータを収集することが可能である。よって、本発明によれば、ＰＣＩデバイス内で障害が検出されている場合やデバッグ時に、ＰＣＩデバイス内のＰＣＩバス関連の設定情報が失われていたり、正しく設定されていなかったりしていても、ＰＣＩデバイス内のデータを収集することができる。
【００１６】
また、従来は、障害時の情報収集の際にＰＣＩホストが致命的なエラーを検出したり、ＰＣＩバス上のトランザクションが消失したりして、ＯＳが動作を続けることができなくなってシステム全体が停止する（システムエラーの発生）という問題があったが、本発明では、上記のとおり、障害時においてＰＣＩデバイス内のデータを収集する動作を確実に行うことが可能であるので、そのようなシステムエラーは発生しない。
【００１７】
【発明の実施の形態】
次に、本発明の実施形態について図面を参照して説明する。
【００１８】
本発明のＰＣＩデバイスは、周知のＰＣＩバスに接続されるものであって、例えばコンピュータのマザーボードに拡張ボード（カード）として取り付けられる。図１に、本発明のＰＣＩデバイスの一実施形態であるＰＣＩカードの概略構成を示す。
【００１９】
本実施形態のＰＣＩカード１０２は、ＰＣＩバス１０１に接続されるものであって、その構成は、ＰＣＩバスインターフェース制御部１０３、Ｃｏｎｆｉｇアクセス制御部１０４、ノーマルアクセス制御部１０５、ＰＣＩバストレーサ１０６、Ｃｏｎｆｉｇレジスタ１０７、内部レジスタ１０８、データ収集制御部１０９、内部バストレーサ１１０、内部バスインタフェース制御部１１１、内部バス１１２、ローカルメモリ１１３、マイクロプロセッサ（ＭＰＵ：Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１４からなる。
【００２０】
ＰＣＩカード１０２はコンフィグレーション空間という特別な２５６バイトのレジスタを有する。図２に、ＰＣＩバス仕様におけるコンフィギュレーション空間のアドレスマップの一例を示す。先頭より６４バイトはヘッダ領域（定義済みヘッダ領域）であって、各ＰＣＩデバイス毎に装備する必要がある。残りの１９２バイトはデバイス固有領域（デバイス依存領域）であって、その使用は各ＰＣＩデバイスで自由である。ヘッダ領域として定義されるレジスタはＣｏｎｆｉｇレジスタ１０７内に実装され、デバイス固有領域として定義されるレジスタはデータ収集制御部１０９内に実装される。後述するデータ収集制御部１０９へのデータ収集を指示するコンフィギュレーションアクセスは、この図２に示したコンフィギュレーション空間のデバイス固有領域を使用して実行される。
【００２１】
図３に、ＰＣＩバス仕様のコンフィギュレーションアクセスにおけるＡＤ（アドレス・データ）線のアドレスフェーズの定義を示す。ビット０〜１で「タイプ」、ビット７〜２で「レジスタ番号」、ビット１０〜８で「機能番号」、ビット３１〜１１で「予約」がそれぞれ定義されている。コンフィギュレーション空間のどのアドレスをアクセスするかは、ビット７〜２で定義されるレジスタ番号によって決定する。６ビットのレジスタ番号はダブルワード（３２ビット）単位での指定となるため、例えば１０ｈ〜３Ｆｈ（「＊＊ｈ」は１６進数表現であることを示す）の値であればデバイス固有領域を示している。
【００２２】
ＰＣＩバスインターフェース制御部１０３はＰＣＩバス１０１に接続されており、ＰＣＩバス１０１を介してコンフィグレーションアクセスを受けた場合は、Ｃｏｎｆｉｇアクセス制御部１０４に対してそのコンフィグレーションアクセスに応じた処理の実行を指示し、メモリリードやメモリライトなど、コンフィグレーションアクセス以外のＰＣＩバストランザクションを受け付けた場合は、ノーマルアクセス制御部１０５に対してそのＰＣＩバストランザクションに応じた処理の実行を指示する。
【００２３】
Ｃｏｎｆｉｇアクセス制御部１０４は、ＰＣＩバスインターフェース制御部１０３からの指示に従って、受け付けたコンフィグレーションアクセスの内容に応じて、Ｃｏｎｆｉｇレジスタ１０７へのアクセスを実行したり、データ収集制御部１０９に対してデータ収集の指示を出したりする。例えば、Ｃｏｎｆｉｇアクセス制御部１０４は、図３に示したコンフィギュレーションサイクルのビット７〜２で定義されるレジスタ番号が「００ｈ」〜「０Ｆｈ」であれば、図２に示したコンフィグレーション空間のヘッダ領域であるため、Ｃｏｎｆｉｇレジスタ１０７へのアクセスを実行し、レジスタ番号が「１０ｈ」〜「３Ｆｈ」であれば、図２に示したコンフィグレーション空間のデバイス固有領域であるため、データ収集制御部１０９にデータ収集を指示する。
【００２４】
ノーマルアクセス制御部１０５は、ＰＣＩバスインターフェース制御部１０３からの指示に応じて、受け付けたＰＣＩバストランザクションの内容に従って、内部レジスタ１０８へアクセスしたり、内部バスインターフェース制御部１１１を介して内部バス１１２へアクセスして、最終的にローカルメモリ１１３やＭＰＵ１１４へのアクセスを実行する。
【００２５】
ＰＣＩバストレーサ１０６は、ＰＣＩバスインターフェース制御部１０３を通して、ＰＣＩバス１０１上で実行されるトランザクションのトレースデータを格納する。同様に、内部バストレーサ１１０は内部バス１１４上で実行されるトランザクションのトレースデータを格納する。
【００２６】
データ収集制御部１０９は、デバイス固有領域に対するコンフィギュレーションアクセスによりＣｏｎｆｉｇアクセス制御部１０４からデータ収集の指示を受ると、その指示に従って、指示されたデータの収集を行う。例えばＰＣＩバストレーサ１０６に関するデータ収集指示であれば、データ収集制御部１０９は、ＰＣＩバストレーサ１０６からデータを読み出してＣｏｎｆｉｇアクセス制御部１０４へその読み出したデータを渡す。ローカルメモリ１１３に関するデータ収集指示であれば、データ収集制御部１０９は、内部バス１１２を介してローカルメモリ１１３へ指示を出してローカルメモリ１１３のダンプデータをリードし、Ｃｏｎｆｉｇアクセス制御部１０４へそのリードしたダンプデータを渡す。ＭＰＵ１１４に関するデータ収集指示であれば、データ収集制御部１０９は、内部バス１１２を介してＭＰＵ１１４へ指示を出してＭＰＵ１１４のダンプデータをリードし、Ｃｏｎｆｉｇアクセス制御部１０４へそのリードしたダンプデータを渡す。内部バストレーサ１１０に関するデータ収集指示であれば、データ収集制御部１０９は、内部バストレーサ１１０からデータを読み出し、Ｃｏｎｆｉｇアクセス制御部１０４へその読み出したデータを渡す。内部レジスタ１０８に関するデータ収集指示であれば、データ収集制御部１０９は、内部レジスタ１０８からデータを読み出し、Ｃｏｎｆｉｇアクセス制御部１０４へその読み出したデータを渡す。各々から収集されたデータはＰＣＩバスインターフェース制御部１０３を介してＰＣＩバス１０１へ出力される。
【００２７】
次に、本実施形態のＰＣＩカード１０２の動作について具体的に説明する。図４は、図１のＰＣＩカード１０２内でマッピングされているアドレス空間の一例を示す模式図である。この例では、アドレス「００００００００ｈ〜０００００３ＦＦｈ」は内部レジスタ領域、アドレス「０００００４００ｈ〜０００ＦＦＦＦＦｈ」は未使用、アドレス「００１０００００ｈ〜００１ＦＦＦＦＦｈ」はＰＣＩバストレーサ領域、アドレス「００２０００００ｈ〜００２ＦＦＦＦＦｈ」は内部バストレーサ領域、「００３０００００ｈ〜０１２ＦＦＦＦＦｈ」はローカルメモリ領域、「０１３０００００ｈ〜ＦＦＦＦＦＤＦＦｈ」は未使用、「ＦＦＦＦＦＥ００ｈ〜ＦＦＦＦＦＦＦＦｈ」はＭＰＵ領域となっている。
【００２８】
ＰＣＩバス１０１上のアドレスフェーズで、図３で図示されるコンフィギュレーションサイクルが実行された時、ＰＣＩカード１０２は、バスマスタであるＰＣＩホストにバス接続ではなく１対１で接続されるＩＤＳＥＬ（イニシャライズデバイスセレクト）信号がアサートされている（アクティブ状態）と、実行されているコンフィギュレーションサイクルがＰＣＩカード１０２自身をターゲットとしたコンフィギュレーションサイクルであることを認識する。つまり、コンフィギュレーションサイクルはターゲットとなるＰＣＩデバイスをＩＤＳＥＬ信号によって指定するため、ＰＣＩデバイス側、ここではＰＣＩカード１０２側に何の設定もされていない状態でもアクセス可能である。通常のメモリリード／ライトのトランザクションなどでは、ＰＣＩデバイス側にアドレス空間などの設定が完了した後でないと、アクセス不可能である。
【００２９】
ＰＣＩバス１０１から本ＰＣＩカード１０２に対するコンフィギュレーションアクセスを受け付けると、ＰＣＩバスインターフェース制御部１０３は、Ｃｏｎｆｉｇアクセス制御部１０４へ図３における機能番号及びレジスタ番号を通知する。Ｃｏｎｆｉｇアクセス制御部１０４は、ＰＣＩバスインターフェース制御部１０３から受け取った機能番号及びレジスタ番号によりアクセス先を判定する。ここで、ＰＣＩカード１０２が単一機能デバイスであると仮定すると、機能番号は０固定となる。この場合、アクセス先はレジスタ番号によって決定され、６ビットのレジスタ番号はダブルワード（３２ビット）単位でコンフィギュレーションレジスタを示し、それは図２で示される２５６バイトの領域のどのレジスタにアクセスするかを示す。
【００３０】
レジスタ番号はダブルワード単位で振られているため、レジスタ番号を４倍すると図２におけるレジスタのアドレスとなる。例えば、レジスタ番号が「０２ｈ」を示している場合、アドレスは「０８ｈ」で先頭から６４バイト以内のヘッダ領域となるから、Ｃｏｎｆｉｇアクセス制御部はＣｏｎｆｉｇレジスタ１０７にアクセスする。Ｃｏｎｆｉｇレジスタ１０７内のコンフィギュレーションレジスタはＰＣＩバス仕様に決められ、アドレス「０８ｈ」のレジスタはクラスコードとレビジョン番号を格納している。レジスタ番号が「１０ｈ」以上であれば、デバイス固有領域を指し示しているため、Ｃｏｎｆｉｇアクセス制御部１０４はデータ収集制御部１０９へデータ収集の指示を出す。つまり、図２のヘッダ領域はＣｏｎｆｉｇレジスタ１０７内に実装され、デバイス固有領域はデータ収集制御部１０９内に実装される。
【００３１】
データ収集制御部１０９にデータ収集を行わせるためには、２回のコンフィギュレーションアクセスを実行する必要がある。ここで、図２におけるデバイス固有領域はアドレス「４０ｈ」からの３２ビットのレジスタのみを使用する。つまり、コンフィギュレーションアクセスにおけるレジスタ番号は「１０ｈ」のみ使用する。
【００３２】
１回目のコンフィギュレーションアクセスでは、レジスタ番号「１０ｈ」に対してコンフィギュレーションライトを実行する。ライトするデータはデータ収集を行うアドレスであり、ＰＣＩカード１０２内のアドレスマッピングは図４で示されている通りである。例えば「００００００００ｈ」のアドレスであれば、データ収集制御部１０９は内部レジスタ１０８の先頭のレジスタのデータを収集する。また、データ収集制御部１０９は、このコンフィギュレーションライトによって指示されたアドレスが「００１０００００ｈ〜００１ＦＦＦＦＦｈ」であればＰＣＩバストレーサ１０６からデータを収集し、「００２０００００ｈ〜００２ＦＦＦＦＦｈ」であれば内部バストレーサ１１０からデータを収集し、「００３０００００ｈ〜０１２ＦＦＦＦＦｈ」であればローカルメモリ１１３からデータを収集し、「ＦＦＦＦＦＥ００ｈ〜ＦＦＦＦＦＦＦＦｈ」であればＭＰＵ１１４からデータを収集する。これらの収集データはレジスタ番号「１０ｈ」のレジスタに格納される。
【００３３】
２回目のコンフィギュレーションアクセスでは、レジスタ番号「１０ｈ」に対してコンフィギュレーションリードを実行する。このリードでは、データ収集制御部１０９が１回目のコンフィギュレーションライトにより収集したデータをＣｏｎｆｉｇアクセス制御部１０４へリプライする。Ｃｏｎｆｉｇアクセス制御部１０４は、ＰＣＩバスインターフェース制御部１０３を介してＰＣＩバス１０１へ収集データを出力する。
【００３４】
一方、ＰＣＩバス１０１から受け取ったトランザクションが通常のトランザクション、例えばメモリリードであれば、ＰＣＩバスインターフェース制御部１０３はノーマルアクセス制御部１０５へ制御を移し、ノーマルアクセス制御部１０５がそのメモリリードトランザクションで受け取ったアドレスと、ＰＣＩカード１０２として設定されているベースアドレスにより、ＰＣＩカード１０２内のどの領域に対するアクセスかを判定する。ＰＣＩカード１０２内のアドレスマッピングは図４に示されている通りである。例えば、上記メモリリードが内部レジスタ領域に対するアクセスであれば、ノーマルアクセス制御部１０５は内部レジスタ１０８にアクセスし、ローカルメモリ領域に対するアクセスであれば、ノーマルアクセス制御部１０５は内部バスインターフェース制御部１１１に指示を出して、内部バス１１２を介してローカルメモリ１１３にアクセスする。
【００３５】
なお、図４に示されているアドレスマッピングは、実際的にはＰＣＩカード１０２内がアドレスマッピングされていない場合であっても、図４の通りに仮想的にアドレスマッピングして、その仮想的なアドレスマッピングに従って動作することも可能である。
【００３６】
次に、上述のＰＣＩカードを備えるＰＣＩバスシステムについて説明する。図５は、図１に示したＰＣＩカードを備えるＰＣＩバスシステムの一構成例を示すブロック図である。このＰＣＩバスシステムは、ローカルバス３にＣＰＵ１、メモリ２、ＰＣＩホスト（ブリッジ）４がそれぞれ接続されており、ＰＣＩホスト（ブリッジ）４にはＰＣＩバス１０１を介してＰＣＩカード１０２が接続されている。ここで、ＰＣＩカード１０２は複数設けられてもよい。
【００３７】
ＣＰＵ１は、システム全体の動作を制御するものであって、その制御はメモリ２に予め記憶された種々のプログラムに従って行われる。メモリ２には、プログラムの１つとして、ＰＣＩカード１０２を制御するためのプログラム、すなわちデバイスドライバが用意されており、このデバイスドライバによってＰＣＩカード１０２の本来の動作と後述するような障害時のデータ収集動作が制御される。
【００３８】
図６は、図５のＰＣＩバスシステムにおける、ＰＣＩカード１０２の障害発生時のデータ収集動作の一例を示すフローチャートである。以下、図６を参照して障害発生時のデータ収集動作を説明する。
【００３９】
まず、ＰＣＩカード１０２内で障害を検出すると（ステップＳ１０）、ＰＣＩカード１０２はＰＣＩバス１０１へ割り込みを発生する方法などにより、障害が発生したことをデバイスドライバへ通知する（ステップＳ１１）。デバイスドライバは、障害の発生したＰＣＩカード１０２から障害発生の通知を受けると（ステップＳ１２）、その障害の発生したＰＣＩカード１０２に対して障害情報を収集するためにＰＣＩカード１０２内のデータ収集を指示する（ステップＳ１３）とともに、その指示に際して、まずデータ収集を行うアドレスをコンフィギュレーションライトにより通知する（ステップＳ１４）。障害の発生したＰＣＩカード１０２側では、データ収集制御部１０９がその指示されたアドレスのデータを収集する（ステップＳ１５）。次いで、デバイスドライバは、コンフィギュレーションリードを実行する（ステップＳ１６）。障害の発生したＰＣＩカード１０２側では、そのコンフィギュレーションリードを受けて、データ収集制御部１０９により収集されたデータがＰＣＩバスインタフェース制御部１０３を介してＰＣＩバス１０１上に送出される（ステップＳ１７）。デバイスドライバは、そのＰＣＩバス１０１上に送出されたデータを障害情報として例えばメモリ２内に格納する（ステップＳ１８）。
【００４０】
更にデータ収集を行う場合は、デバイスドライバが再度コンフィギュレーションライトによりデータ収集を行うアドレスを通知し、上述のステップＳ１４〜Ｓ１８の処理が繰り返される。必要な全てのデータが収集されると、データ収集動作を完了する（ステップＳ１９）。
【００４１】
以上説明したとおり、本形態のＰＣＩデバイスにおいては、ＰＣＩバスインターフェース制御部１０３を通して、ＰＣＩバス１０１からＰＣＩカード１０２に対するデータ収集を指示するコンフィギュレーションアクセスをＣｏｎｆｉｇアクセス制御部１０４が受け取ると、その指示に従ってＰＣＩバストレーサ１０６やローカルメモリ１１３などに格納されているデータの収集を行い、収集されたデータをＰＣＩバス１０１へ出力する。この動作により、ＰＣＩカード１０２内のＭＰＵ１１４がハングアップして停止しているような障害が発生している場合であっても、最も確実で安全なＰＣＩバストランザクションであるコンフィギュレーションアクセスによりＰＣＩカード１０２内のデータを収集することが可能になる。
【００４２】
また、ＰＣＩバス１０１におけるコンフィギュレーションアクセスは、ＰＣＩデバイスに何も設定されていない状態であっても、ＰＣＩバス仕様で定義されるＩＤＥＳＬ信号により対象のＰＣＩデバイスを指定してアクセスするため、ＰＣＩバス上のＰＣＩカード１０２の障害のみならず、ＯＳやドライバなどのソフトウェアの不具合によりＰＣＩバス動作に関する情報が正常に設定されていない状態にあったとしても、同様にＰＣＩカード１０２内のデータを収集することが可能となる。
【００４３】
上記のコンフィギュレーションアクセスの使用では、ＯＳが動作不可能になることはない。これは、元々コンフィギュレーションアクセスはＰＣＩバス初期化時に、ＰＣＩデバイスが接続されているかどうかを確認するリソースチェックの手段として使用されており、ＰＣＩデバイスが接続されているかどうか不明なリソースに対してコンフィギュレーションアクセスが実行されることを前提としているため、コンフィギュレーションアクセスに対してＰＣＩデバイスが応答せず、ＰＣＩホストが強制的にコンフィギュレーションアクセスをマスタアボートするような場合にも、致命的なエラーとはならないためである。従って、本形態では、ＰＣＩバス関連の情報が設定されていない場合でも、ＰＣＩデバイス内のデータをそのまま収集することができる。また、万が一、ＰＣＩバスインターフェース制御部１０３の故障によりＰＣＩトランザクションに対して応答できないような場合があったとしても、システムの停止に至る重大な問題を引き起こすことがなく、ＰＣＩデバイスから確実にデータを収集することが可能である。
【００４４】
（他の実施形態１）
上述の実施形態では、データ収集制御部１０９において使用されるＰＣＩコンフィギュレーション空間のデバイス固有領域はアドレス「４０ｈ」のレジスタのみである。そのため、３２ビット（つまり４バイト）のデータを収集する毎にアドレスの設定（デバイスドライバによるデータ収集を行うアドレスの通知）が必要とされる。つまり、４バイトのデータを収集するために２回のコンフィギュレーションアクセスが必要とされる。
【００４５】
図７は、データ収集制御部１０９において使用されるＰＣＩコンフィギュレーション空間のデバイス固有領域のレジスタ構造の一例を示す模式図である。この例では、デバイス固有領域のアドレス「４３ｈ〜４０ｈ」がデータ収集行うアドレスの先頭を設定するアドレス設定レジスタとされ、このアドレス設定レジスタで設定されたアドレスから６４バイト分のデータが収集され、アドレス「４４ｈ〜８３ｈ」までのデータ収集レジスタ群にその収集されたデータが格納される。アドレス「４４ｈ〜８３ｈ」までの１６個のレジスタを順々にコンフィギュレーションリードすることにより、まとめて６４バイトのデータ収集が可能となる。
【００４６】
前述の図１に示した例においては、６４バイトのデータ収集のためには３２回のコンフィギュレーションアクセスが必要であるが、図７に示したレジスタ構造にすることで、約半分の１７回のコンフィギュレーションアクセスで６４バイトのデータ収集が可能となる。
【００４７】
なお、図７の例では、まとめて収集されるデータ長は６４バイトであるが、データ長は４バイトから１９２バイトまでのいずれのサイズでも可能である。ただし、データ長を１９２バイトとする場合は、前述の実施形態と同様に、アドレス設定レジスタにも収集されたデータを格納する必要がある。
【００４８】
（他の実施形態２）
上述の図７の例では、収集されたデータを格納するデータ収集レジスタ群のサイズを予め決められたサイズに固定する必要がある。その場合、本当に必要な部分のみのデータ収集を行うことはできない。本形態では、必要に応じたサイズのデータを収集するために以下のようなデバイス固有領域のレジスタ構造を採用する。
【００４９】
図８は、データ収集制御部１０９において使用されるＰＣＩコンフィギュレーション空間のデバイス固有領域のレジスタ構造の一例を示す模式図である。この例では、デバイス固有領域のアドレス「４３ｈ〜４０ｈ」がデータ収集行うアドレスの先頭を設定するアドレス設定レジスタとされるとともに、アドレス「４７ｈ〜４４ｈ」が収集されるデータの大きさを設定する収集データ長設定レジスタとされ、アドレス設定レジスタに設定されたアドレスから収集データ長設定レジスタに設定されたサイズのデータが収集され、アドレス「４８ｈ〜ＸＸｈ」までのデータ収集レジスタ群にその収集されたデータが格納される。このように構成することにより、必要に応じたサイズのデータを収集することが可能となる。
【００５０】
（他の実施形態３）
上述の図８の例では、収集データ長設定レジスタを設けることにより収集されるデータの大きさを指示しているが、図３における機能番号を使用することによってもデータの大きさを指示することができる。
【００５１】
図９は、データ収集制御部１０９内のレジスタ構造の一例を示す模式図である。この例では、ＰＣＩコンフィギュレーション空間のデバイス固有領域としてのレジスタに加えて機能番号保持レジスタを備える。デバイス固有領域のアドレス「４３ｈ〜４０ｈ」がデータ収集行うアドレスの先頭を設定するアドレス設定レジスタとされ、このアドレス設定レジスタに設定された先頭アドレスから機能番号保持レジスタに格納されたデータによって指定されたサイズのデータが収集され、アドレス「４４ｈ〜ＸＸｈ」までのデータ収集レジスタ群にその収集されたデータが格納される。
【００５２】
本形態の場合は、まず、データ収集を行うためのアドレスをアドレス設定レジスタに設定するためのコンフィギュレーションライトが実行されるが、この時のアドレスフェーズの機能番号が機能番号保持レジスタに格納される。データフェーズでライトされるデータはアドレス設定レジスタに格納される。
【００５３】
機能番号は３ビットであり、従って、機能番号保持レジスタには３ビットのデータが格納される。つまり、３ビットのデータで８パターンのデータ長を指示することが可能である。例えば、４，８，１６，３２，６４，９６，１２８，１９２バイトのデータ長を設定することができる。これにより、機能番号を使用して自由に収集データ長を設定し、必要に応じたサイズのデータを収集することが可能になる。
【００５４】
【発明の効果】
以上説明したように、本発明によれば、ＰＣＩデバイスがどんな状態であっても、システムエラーを生じることなく、ＰＣＩデバイス内のデータを確実に収集することができるという効果がある。
【図面の簡単な説明】
【図１】本発明のＰＣＩデバイスの一実施形態であるＰＣＩカードの概略構成を示すブロック図である。
【図２】本発明に適用される、ＰＣＩバス仕様におけるコンフィギュレーション空間のアドレスマップの一例を示す模式図である。
【図３】本発明に適用される、ＰＣＩバス仕様のコンフィギュレーションアクセスにおけるＡＤ（アドレス・データ）線のアドレスフェーズの定義を示す模式図である。
【図４】図１に示すＰＣＩカード内でマッピングされているアドレス空間の一例を示す模式図である。
【図５】図１に示すＰＣＩカードを備えるＰＣＩバスシステムの一構成例を示すブロック図である。
【図６】図５に示すＰＣＩバスシステムにおけるデータ収集動作の一例を示すフローチャート図である。
【図７】図１に示すデータ収集制御部において使用されるＰＣＩコンフィギュレーション空間のデバイス固有領域のレジスタ構造の一例を示す模式図である。
【図８】図１に示すデータ収集制御部において使用されるＰＣＩコンフィギュレーション空間のデバイス固有領域のレジスタ構造の一例を示す模式図である。
【図９】図１に示すデータ収集制御部１０９内のレジスタ構造の一例を示す模式図である。
【図１０】特開平１０−２１１５２号公報に記載されたＬＡＮＰシステムの概略構成を示すブロック図である。
【図１１】図１０に示すＰＣＩ拡張カードの一例を示すブロック図である。
【符号の説明】
１、２００  ＣＰＵ
２  メモリ
３  ローカルバス
４  ＰＣＩホスト
１０１、２１１  ＰＣＩバス
１０２  ＰＣＩカード
１０３  ＰＣＩバスインターフェース制御部
１０４  Ｃｏｎｆｉｇアクセス制御部
１０５  ノーマルアクセス制御部
１０６  ＰＣＩバストレーサ
１０７  Ｃｏｎｆｉｇレジスタ
１０８  内部レジスタ
１０９  データ収集制御部
１１０  内部バストレーサ
１１１  内部バスインターフェース制御部
１１２  内部バス
１１３  ローカルメモリ
１１４、３０１  ＭＰＵ
２０１  ＭＥＭ
２０２  ＰＣＬ
２０３  ＮＩＣ
２０４  ＯＬＡ
２１０  システムバス
２１２  ＩＯインタフェース
２２０  ＬＡＮＰ
２２１  ホストコンピュータ
２２２  ＬＡＮ回線
３００  ＰＢＣ
３０２  ＬＭ
３１０  ＣＦＧ
【図１】
0003584977.tif 000002
【図２】
0003584977.tif 000003
【図３】
0003584977.tif 000004
【図４】
0003584977.tif 000005
【図５】
0003584977.tif 000006
【図６】
0003584977.tif 000007
【図７】
0003584977.tif 000008
【図８】
0003584977.tif 000009
【図９】
0003584977.tif 000010
【図１０】
0003584977.tif 000011
【図１１】
0003584977.tif 000012