(57)【特許請求の範囲】
【請求項１】
プライマリ・バスとセカンダリ・バスとを接続するＰＣＩブリッジであって、
前記プライマリ・バスとセカンダリ・バスとの間のデータトランザクションを処理するＰＣＩ−ＰＣＩブリッジと、
前記セカンダリ・バス上のメモリから前記プライマリ・バス上のメモリへステータスを転送するＤＭＡアクセラレータと、
前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとが一つのデバイスとして動作するための、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに対する共通の設定情報を記憶する記憶手段と、
前記ＰＣＩ−ＰＣＩブリッジによるトランザクションと前記ＤＭＡアクセラレータによるトランザクションとを制御する制御手段と、
を有し、
前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに対する共通の設定情報は、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに共通のデバイスＩＤを含み、
前記ＤＭＡアクセラレータは、データ転送の終了を示すステータスを前記プライマリ・バス側に送信するために、前記プライマリ・バス上の第１のメモリからディスクリプタを読み出し、前記セカンダリ・バス上の第２のメモリから前記ステータスを読み出し、前記読み出したステータスを、前記ディスクリプタに示される前記第１のメモリの書き込み先に書き込み、前記第１のメモリの前記ディスクリプタにステータス転送完了を示すフラグを書き込むことを特徴とするＰＣＩブリッジ。
【請求項２】
前記ＤＭＡアクセラレータは、前記第１のメモリの前記ディスクリプタにステータス転送完了を示すフラグを書き込んだ後、現在のディスクリプタの情報に従って次のディスクリプタが有効か否かを判定し、有効であれば、次のディスクリプタを読み出すことを特徴とする請求項１記載のＰＣＩブリッジ。
【請求項３】
前記制御手段は、前記ＰＣＩ−ＰＣＩブリッジ及び前記ＤＭＡアクセラレータにおいて発生したトランザクションを調停するアービターであることを特徴とする請求項１記載のＰＣＩブリッジ。
【請求項４】
請求項１乃至３の何れか一項記載のＰＣＩブリッジと、前記プライマリ・バスに接続された第１のＣＰＵ及び前記第１のメモリ、前記セカンダリ・バスに接続された第２のＣＰＵ及び前記第２のメモリを有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライマリ・バスとセカンダリ・バスとを接続するＰＣＩブリッジ及びＰＣＩブリッジを搭載するシステムに関するものである。
【背景技術】
【０００２】
通信装置やＯＡ機器等の情報処理装置において、処理速度を向上させるためには、高速にデータを転送するバスが必要であり、その１つとして、ＰＣＩ（Peripheral Component Interconnect）バスがある。ここで、ＰＣＩバスはPCI Local Bus Specification, PCI-to-PCI Bridge Architecture Specification などで規定される。例えば、パソコン内部の各パーツ間を結ぶバスに適用されており、バス幅３２ビット、３３ＭＨｚ動作で１３２ＭＢ/ｓの仕様などがある。
【０００３】
図１を用いて、PCI Local Bus Specification Revision 2.3, におけるプロデューサー（Producer）とコンシューマー（Consumer）間のデータのトランザクションについて説明する。
【０００４】
図１において、プロデューサー１０１、フラグ（Flag）１０２、ステータス（Status）１０３はＰＣＩバス１に接続されている。一方、コンシューマー１０４、データ（Data）部１０５はＰＣＩバス０に接続されている。また、ＰＣＩバス０とＰＣＩバス１はＰＣＩ−ＰＣＩブリッジ（Bridge）で接続されている。
【０００５】
＜プロデューサー１０１からコンシューマー１０４へのデータ転送の場合＞
●プロデューサー１０１の動作
Ｐ１）データを生成（又は作成）すると、データ部１０５へライトする。
Ｐ２）データのライトが完了したことをフラグ１０２にセットする。
Ｐ３）コンシューマー１０４がデータ処理完了で書き込むステータス（Status）１０３を待つ。ここで、ステータス１０３はコンプリートリードである。
Ｐ４）コンプリートリードを認識すると、ステータス１０３のクリア（インコンプリートライトにする）を行い、次のデータ生成を開始する。そして、データ生成が完了すると、Ｐ１）に戻り、Ｐ１）〜Ｐ４）を繰り返す。
【０００６】
●コンシューマー１０４の動作
Ｃ１）プロデューサー１０１からのデータ生成（又は作成）完了フラグ１０２のセットを見つける。
Ｃ２）フラグ１０２をリセットし、データを処理する。
Ｃ３）データ処理が完了すると、データ処理完了のステータス１０３を書き込む。そして、ステータス書き込みが完了すると、Ｃ１）に戻り、Ｃ１）〜Ｃ３）を繰り返す。
【０００７】
＜コンシューマー１０４からプロデューサー１０１へのデータ転送の場合＞
●プロデューサー１０１の動作
Ｐ１）データの格納領域をデータ部１０５に用意する。
Ｐ２）データの格納領域が用意できたことをフラグ１０２にセットする。
Ｐ３）コンシューマー１０４がデータ処理完了で書き込むステータス１０３を待つ。ここで、ステータス１０３はコンプリートライトである。
Ｐ４）コンプリートライトを認識すると、ステータス１０３のクリア（インコンプリートリードにする）を行い、次のデータ格納領域用意を開始する。そして、データ格納領域の用意が完了すると、Ｐ１）に戻り、Ｐ１）〜Ｐ４）を繰り返す。
【０００８】
●コンシューマー１０４の動作
Ｃ１）プロデューサー１０１からのデータ領域完了フラグ１０２のセットを見つける。
Ｃ２）フラグ１０２をリセットし、データを処理する。
Ｃ３）データ処理が完了すると、データ処理完了のステータス１０３を書き込む。そして、ステータス書き込みが完了すると、Ｃ１）に戻り、Ｃ１）〜Ｃ３）を繰り返す。
【０００９】
これに対して、実際のシステムでは、図２に示すように構成される。この例では、図１に示すプロデューサー１０１をプライマリ・バス２０１、ＣＰＵ２０２、メモリ２０３で構成している。また、コンシューマー１０４をセカンダリ・バス２０４、ＣＰＵ２０５、メモリ２０７で構成し、セカンダリ・バス２０４上にＤＭＡアクセラレータ２０６を設け、ステータス転送をＤＭＡ転送で行うものとする。
【００１０】
図２に示すシステムのステータス転送は以下のような動作になる。尚、ディスクリプタは、プライマリ・バス２０１でステータスの書き込み先を示すものであり、ステータス・ライト・アドレスと次のディスクリプタ・アドレスと次のディスクリプタが有効であるか否かを示すフラグ情報とを埋め込むものである。また、ディスクリプタはいくつか適当な数量がチェーン状に用意されているものとする。
（１）ブリッジ２０８がプライマリ・バス２０１上のメモリ２０３からディスクリプタをリードする。
（２）ＤＭＡアクセラレータ２０６がブリッジ２０８からディスクリプタをリードする。
（３）ＤＭＡアクセラレータ２０６は更にセカンダリ・バス２０４上のメモリ２０７からステータスをリードする。
（４）ＤＭＡアクセラレータ２０６はブリッジ２０８へそのステータスをライトする。
（５）ブリッジ２０８がプライマリ・バス２０１上のメモリ２０３へそのステータスをライトする。
（６）ＤＭＡアクセラレータ２０６がブリッジ２０８へ新しいディスクリプタをライトする。
（７）ブリッジ２０８はプライマリ・バス２０１上のメモリ２０３へそのディスクリプタにステータス転送完了を示すフラグをライトする。
【００１１】
一方、ＰＣＩバス・データの転送効率を上げるためや、ＰＣＩバスによるデータ転送にかかわるＣＰＵの処理負荷を軽減するための技術も提案されている（例えば、特許文献１参照）。
【特許文献１】特開平９−３１９６９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来の技術であるセカンダリ・バス上にＤＭＡアクセラレータを設ける方法や特許文献１では、ステータス転送を含む全てのトランザクションはＰＣＩブリッジを通す必要があり、そのためにパフォーマンスの低下となっていた。
【００１３】
また、ＤＭＡアクセラレータやＤＭＡコントローラはセカンダリ・バス上にあったため、セカンダリ・バスを使って動作する必要があり、更にＰＣＩブリッジやＤＭＡのトランザクション順序のソフトウェア管理が複雑であった。
【００１４】
更には、セカンダリ・バスのハード・パフォーマンス低下やソフトウェア動作の制約につながっていた。
【００１５】
更には、ＰＣＩバスにおいて機能が複数ある場合に、それらの機能を同時に動作させることはできなかった。また、機能動作を開始する時に、初期設定を行って動作させ、動作切り換えはネゴシエーションをやり直すなど、面倒な処理が必要であった。
【００１６】
また、特許文献１では、ステータスを転送するなどデータの転送量が少ない場合には、向いていない、という問題もあった。
【００１７】
本発明は、上記課題を解決するためになされたもので、ＰＣＩ−ＰＣＩブリッジとＤＭＡアクセラレータを有するＰＣＩブリッジにおいて、ＤＭＡアクセラレータがセカンダリ・バス上の第２のメモリからプライマリ・バス上の第１のメモリへデータ転送の終了を示すステータスを送信することにより、そのステータスの送信のためにＰＣＩ−ＰＣＩブリッジのパフォーマンスが低下することを防ぐことを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、プライマリ・バスとセカンダリ・バスとを接続するＰＣＩブリッジであって、前記プライマリ・バスとセカンダリ・バスとの間のデータトランザクションを処理するＰＣＩ−ＰＣＩブリッジと、前記セカンダリ・バス上のメモリから前記プライマリ・バス上のメモリへステータスを転送するＤＭＡアクセラレータと、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとが一つのデバイスとして動作するための、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに対する共通の設定情報を記憶する記憶手段と、前記ＰＣＩ−ＰＣＩブリッジによるトランザクションと前記ＤＭＡアクセラレータによるトランザクションとを制御する制御手段と、を有し、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに対する共通の設定情報は、前記ＰＣＩ−ＰＣＩブリッジと前記ＤＭＡアクセラレータとに共通のデバイスＩＤを含み、前記ＤＭＡアクセラレータは、データ転送の終了を示すステータスを前記プライマリ・バス側に送信するために、前記プライマリ・バス上の第１のメモリからディスクリプタを読み出し、前記セカンダリ・バス上の第２のメモリから前記ステータスを読み出し、前記読み出したステータスを、前記ディスクリプタに示される前記第１のメモリの書き込み先に書き込み、前記第１のメモリの前記ディスクリプタにステータス転送完了を示すフラグを書き込むことを特徴とする。
【発明の効果】
【００２０】
本発明によれば、ＰＣＩ−ＰＣＩブリッジとＤＭＡアクセラレータを有するＰＣＩブリッジにおいて、ＤＭＡアクセラレータがセカンダリ・バス上の第２のメモリからプライマリ・バス上の第１のメモリへデータ転送の終了を示すステータスを送信することにより、そのステータスの送信のためにＰＣＩ−ＰＣＩブリッジのパフォーマンスが低下することを防ぐことができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００２２】
まず、図３を用いて、ＰＣＩバス上のステータス転送と、ディスクリプタの更新を行う本実施形態におけるＰＣＩブリッジの構成について説明する。
【００２３】
図３は、本実施形態におけるＰＣＩブリッジ３０７の構成の一例を示す図である。図３に示すように、プライマリ・バス３０１には、ＣＰＵ３０２とメモリ３０３が接続されている。ＣＰＵ３０２は、メモリ３０３やプライマリ・バス３０１上に接続される他の構成部を制御するものである。また、メモリ３０３は、ＣＰＵ３０２の制御動作に必要なパラメータを蓄積するものである。ここで、メモリ３０３には、例えばＰＣＩバスに関しては、データ、フラグ、ステータス、ディスクリプタなどが蓄積される。
【００２４】
尚、図３に示す例では、メモリ３０３は１つであるが、複数のメモリが接続されていても良い。また、プライマリ・バス３０１に接続されるその他の構成部については省略している。
【００２５】
一方、セカンダリ・バス３０４には、ＣＰＵ３０５とメモリ３０６が接続されている。ＣＰＵ３０５は、メモリ３０６やセカンダリ・バス３０４上に接続される他の構成部を制御するものである。また、メモリ３０６は、ＣＰＵ３０５の制御動作に必要なパラメータを蓄積するものである。ここで、メモリ３０６には、例えばＰＣＩバスに関しては、データ、ステータスなどが蓄積される。
【００２６】
尚、図３に示す例では、メモリ３０６は１つであるが、複数のメモリが接続されていても良い。また、セカンダリ・バス３０４に接続されるその他の構成部については省略している。
【００２７】
次に、プライマリ・バス３０１、セカンダリ・バス３０４間のＰＣＩブリッジ３０７は、プライマリ・バス３０１及びセカンダリ・バス３０４間でのトランザクションを行う。また、ＰＣＩブリッジ３０７は、ブリッジ回路部３０８、ＤＭＡアクセラレータ３０９、コンフィギュレーション・レジスタ３１０、アービター３１１で構成されている。
【００２８】
ＰＣＩブリッジ３０７において、ブリッジ回路部３０８は、図１に示すＰＣＩ−ＰＣＩブリッジ１０６に相当し、データのトランザクションは背景技術の欄で説明したような処理方法で行われる。ＤＭＡアクセラレータ３０９はステータスの転送とディスクリプタの更新を行う。コンフィギュレーション・レジスタ３１０はブリッジ回路部３０８やＤＭＡアクセラレータ３０９がＰＣＩバス上で一つのデバイスとして動くための各種設定用共通レジスタである。
【００２９】
即ち、ブリッジ回路部３０８とＤＭＡアクセラレータ３０９の設定をプライマリ・バス３０１からコンフィギュレーション・レジスタ３１０に書き込むことで設定できるように構成されている。
【００３０】
図４は、コンフィギュレーション・レジスタ３１０の構成の一例を示す図である。図４に示すように、コンフィギュレーション・レジスタ３１０は００番地から７Ｆ番地までのレジスタで構成され、共通のデバイスＩＤやインタラプト、ベースアドレスレジスタなどが設定できるようになっている。そして、各レジスタの設定内容はブリッジ回路部３０８やＤＭＡアクセラレータ３０９へ共通して作用する。
【００３１】
また、ＰＣＩブリッジ３０７のアービター３１１は、ブリッジ回路部３０８及びＤＭＡアクセラレータ３０９のトランザクションを区別するためのものである。
【００３２】
図５は、アービター３１１におけるキューイメージを示す図である。図５に示すように、アービター３１１には、ブリッジ回路部３０８用のキュー（ブリッジ１、ブリッジ２、ブリッジ３、ブリッジ４の４個）とＤＭＡアクセラレータ３０９用のキュー（ＤＭＡ１、ＤＭＡ２の２個）が用意されている。
【００３３】
ブリッジ回路部３０８及びＤＭＡアクセラレータ３０９において、トランザクションが発生すると、アービター３１１に対してエントリーを求め、エントリーが許可されると、そのトランザクションはキューに取り込まれる。そして、アービター３１１からの出力が可能になると、イネーブルが発行され、プライマリ・バス３０１へ出力される。ここで、取り込みや出力は時間（クロック）で管理され、取り込んだ順に出力される。図５に示す例では、ブリッジ２、ブリッジ１、ＤＭＡ２、ブリッジ４、ＤＭＡ１、ブリッジ３の順に取り込まれ、出力されている。
【００３４】
このように構成することにより、ブリッジ回路部３０８とＤＭＡアクセラレータ３０９との構成を簡略化でき、ＤＭＡアクセラレータ３０９はブリッジ回路部３０８を経由することなく、ＰＣＩバス上で直接、動作することが可能となる。
【００３５】
更に、ブリッジ回路部３０８及びＤＭＡアクセラレータ３０９を同時に動作させることが可能となる。
【００３６】
次に、図６を用いて、ＰＣＩバス上のステータス転送と、ディスクリプタの更新を行うＰＣＩブリッジ３０７の動作について説明する。
【００３７】
図６は、本実施形態におけるＰＣＩブリッジ３０７のステータス転送の一例を説明するための図である。図６に示す例では、セカンダリ・バス３０４のステータスをプライマリ・バス３０１へ転送する流れの一例を示している。
【００３８】
まず、データ転送においては、プライマリ・バス３０１側でディスクリプタを用意し、ディスクリプタの情報に従ってセカンダリ・バス３０４からのデータ転送完了を示すステータス送信をＤＭＡアクセラレータ３０９が行う。
（１）ＤＭＡアクセラレータ３０９がプライマリ・バス３０１のメモリ３０３のディスクリプタをリードする。
（２）ＤＭＡアクセラレータ３０９はセカンダリ・バス３０４のメモリ３０６に用意されているステータスをリードする。
（３）ＤＭＡアクセラレータ３０９はプライマリ・バス３０１のメモリ３０３へそのステータスを上述のディスクリプタが示した書き込み先にライトする。
【００３９】
即ち、プライマリ・バス３０１側では、ディスクリプタの更新を確認し、データ転送の終了を示すステータスが到着したことを知る。
（４）ＤＭＡアクセラレータ３０９はプライマリ・バス３０１のメモリ３０３へ上述したディスクリプタにステータス転送完了を示すフラグをライトする。
【００４０】
即ち、ＤＭＡアクセラレータ３０９はステータス送信が終了すると、ステータス送信完了を示すディスクリプタの更新を行い、現在のディスクリプタの情報に従って次のディスクリプタが有効か否かを判定する。ここで、有効であれば上記（１）に戻り、次のディスクリプタをリードし、上記（１）〜（４）を繰り返す。
【００４１】
このように構成することにより、セカンダリ・バスのトランザクションを減らし、セカンダリ・バスのパフォーマンスを向上させ、ソフトウェアの動作制約を少なくすることができる。即ち、ＰＣＩブリッジのパフォーマンスを向上させることができる。
【００４２】
また、ＰＣＩブリッジやＤＭＡアクセラレータのトランザクション順序のためのソフトウェア管理の簡単化ができる。
【００４３】
以上説明したように、本実施形態によれば、ＰＣＩブリッジとＤＭＡ・アクセラレータの構成を簡略化できる。
【００４４】
ＰＣＩバスのＰＣＩブリッジとＤＭＡアクセラレータの複数の機能を、複雑な処理なしに同時に動作させることができる。
【００４５】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００４６】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００４７】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００４８】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００４９】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合。
【００５０】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５１】
【図１】従来のプロデューサー（Producer）とコンシューマー（Consumer）間のデータのトランザクションを説明するための図である。
【図２】従来のシステムにおけるステータス転送を説明するための図である。
【図３】本実施形態におけるＰＣＩブリッジ３０７の構成の一例を示す図である。
【図４】コンフィギュレーション・レジスタ３１０の構成の一例を示す図である。
【図５】アービター３１１におけるキューイメージを示す図である。
【図６】本実施形態におけるＰＣＩブリッジ３０７のステータス転送の一例を説明するための図である。
【符号の説明】
【００５２】
３０１  プライマリ・バス
３０２  プライマリのＣＰＵ
３０３  プライマリのメモリ
３０４  セカンダリ・バス
３０５  セカンダリのＣＰＵ
３０６  セカンダリのメモリ
３０７  ＰＣＩブリッジ
３０８  ブリッジ回路部
３０９  ＤＭＡアクセラレータ
３１０  コンフィギュレーション・レジスタ
３１１  アービター
【図１】
0004724494.tif 000002
【図２】
0004724494.tif 000003
【図３】
0004724494.tif 000004
【図４】
0004724494.tif 000005
【図５】
0004724494.tif 000006
【図６】
0004724494.tif 000007