(57)【要約】【課題】ブリッジを介してＰＣＩエクスプレスバスに接続されているＰＣＩデバイスのデータ転送効率を向上させる。【解決手段】互いに異なるメモリデータ転送プロトコルが規定されたＰＣＩエクスプレスバス２とＰＣＩバス６とを接続するブリッジ１であって、ＰＣＩバス６に接続されるＰＣＩデバイス７に搭載されていてＰＣＩデバイス７がメモリリードを要求する際に参照される値を格納するキャッシュラインサイズ１レジスタ７３と同一の値を格納するものであって、かつ、キャッシュラインサイズ１レジスタ７３に対するＣＰＵ５等からの問い合わせに対してキャッシュラインサイズ１レジスタ７３に代わって回答される値が格納されるキャッシュラインサイズコピー１レジスタ１１を備えている。【選択図】図２
2012118772.tif 000002
【特許請求の範囲】
【請求項１】
互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するバス接続装置であって、
前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を格納するものであって、かつ、該第１のレジスタに対する問い合わせに対して該第１のレジスタに代わって回答される値が格納される第２のレジスタを備える
ことを特徴とするバス接続装置。
【請求項２】
前記デバイスからのメモリリード要求に応じて前記第１のバスに対して発信されるパケットのデータ長を格納する第３のレジスタを
さらに備えることを特徴とする請求項１に記載のバス接続装置。
【請求項３】
前記第１のバスがＰＣＩエクスプレスバスであり、
前記第２のバスがＰＣＩバスであり、
前記第１のレジスタがキャッシュラインサイズレジスタである
ことを特徴とする請求項１又は２に記載のバス接続装置。
【請求項４】
前記第１のバスがＰＣＩエクスプレスバスであり、
前記第２のバスがＰＣＩバスであり、
前記第１のレジスタがキャッシュラインサイズレジスタであり、
前記第３のレジスタがリードマルチプルコマンド又はリードラインコマンドに対する転送長を格納するレジスタである
ことを特徴とする請求項２に記載のバス接続装置。
【請求項５】
互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するバス接続方法であって、
前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を第２のレジスタに格納する過程と、
前記第１のレジスタに対する問い合わせに対して該第１のレジスタに代えて前記第２のレジスタが格納する値を回答する過程と
を含むことを特徴とするバス接続方法。
【請求項６】
互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するためのバス接続プログラムであって、
前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を第２のレジスタに格納する過程と、
前記第１のレジスタに対する問い合わせに対して該第１のレジスタに代えて前記第２のレジスタが格納する値を回答する過程と
をコンピュータによって実行させることを特徴とするバス接続プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスとＰＣＩエクスプレス（以下、ＰＣＩｅ）バスとを接続する際に用いて好適なバス接続装置、バス接続方法及びバス接続プログラムに関する。
【背景技術】
【０００２】
特許文献１には、ＰＣＩバスとメモリバスとを接続するブリッジ（バス接続回路）に関する技術が記載されている。この特許文献１に記載されている技術は、複数のマスタ（ターゲット（スレーブ）に対してデータの読み書きを要求する側）のそれぞれに対応させてプリフェッチバッファを用意し、ＲＥＱ（アービトレーションのリクエスト信号）、ＧＮＴ（アービトレーションのグラント信号）からバスマスタを判定し、対応するプリフェッチバッファにリードデータを格納することでテータ転送の効率を高めようとするものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３３４５５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＰＣＩでは、システムＣＰＵ（中央処理装置）のキャッシュラインサイズ（キャッシュにおいて一まとまりで管理されるデータの単位の大きさ）に合わせて、メモリリードデータ長が決められるようになっている。
【０００５】
一方、ＰＣＩｅはＰＣＩとは異なるメモリデータ転送プロトコルが規定されたものであって、ＰＣＩｅでは、キャッシュラインサイズに関係なく、送信パケット内のレングスで１ＤＷ（ＤＷＯＲＤ；４ｂｙｔｅ）から１０２４ＤＷ（４Ｋｂｙｔｅ）のデータ転送長が指定される。
【０００６】
そのため、ＰＣＩｅにブリッジを介してＰＣＩデバイスが接続された場合、ＰＣＩｅのシステムでは、キャッシュラインサイズに転送長を合わせる要求がないにもかかわらず、ＰＣＩにより、キャッシュラインサイズに、データ転送長が固定されるため、メモリリードの転送効率が低下し、システムの性能が低下させられていた。
【０００７】
ＰＣＩでは、メモリリード系で３種類のコマンドをサポートしている。メモリリードコマンドはシングル（バーストなし）の、リードラインコマンドは単数キャッシュライン分の、そして、リードマルチプルコマンドは複数のキャッシュライン分（例えば２ライン分）のメモリリード要求を示す。よって、ＰＣＩのメモリリードデータ転送長は、シングル、１キャッシュライン分、複数（例えば２キャッシュ）ライン分以下に固定されることになる。
【０００８】
図８を参照する。図８は、本発明を検討する際に本出願人において背景とした技術の一例（以下、第一の例）を示す図である。この第一の例では、システムＣＰＵ（５）を、３２ビットＣＰＵとし、ブリッジ（１００）に接続されているＰＣＩバス（６）に対してＰＣＩデバイス１（７）が接続されている。このＰＣＩデバイス１（７）には、ＣＰＵ転送用として１２８ｂｙｔｅのメモリリードバッファであるＣＰＵバッファ１（７１）が設けられている。さらに、ＰＣＩデバイス１（７）には、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送用として４ＫｂｙｔｅのメモリリードバッファであるＤＭＡバッファ１（７２）が設けられている。３２ビットＣＰＵ（５）のキャッシュラインサイズは６４ｂｙｔｅなので、ＰＣＩデバイス１（７）内部のキャッシュラインサイズ１レジスタ（７３）には、６４ｂｙｔｅが設定される。
【０００９】
なお、ブリッジ（１００）は、ＰＣＩｅバス（２）とＰＣＩバス（６）とを接続する接続装置であり、ブリッジ（１００）には、ＰＣＩｅバス（２）を介してルートコンプレックス（Ｒｏｏｔ  Ｃｏｍｐｌｅｘ）（３）が接続され、ルートコンプレックス（３）にはローカルバス（４）を介してシステムＣＰＵ（５）が接続されている。
【００１０】
このＰＣＩデバイス１（７）のＣＰＵバッファ１（７１）とＤＭＡバッファ１（７２）を満たすためのメモリリードは、それぞれ１２８ｂｙｔｅ、４Ｋｂｙｔｅであり、どちらも１キャッシュライン分（６４ｂｙｔｅ）を超える。よって、どちらもリードマルチプルコマンドによるアクセスとなる。リードマルチプルコマンドの転送長が２キャッシュライン分（１２８ｂｙｔｅ）に設定されるとすると、ＤＭＡの４Ｋｂｙｔｅリードは、ＰＣＩバス（６）、ＰＣＩｅバス（２）上のそれぞれで、３２回の１２８ｂｙｔｅリードアクセスに分割され、転送効率が低下させられる。なお、リードマルチプルコマンドの転送長を２キャッシュライン分（１２８ｂｙｔｅ）に設定する場合、ブリッジ（１００）内の所定のレジスタ（１００１）にはリードマルチプルコマンドの転送長（リードマルチプルコマンドサイズ）の１２８ｂｙｔｅがキャッシュラインサイズの２倍であることが設定される。
【００１１】
また、メモリリードマルチプルコマンドの転送長をＤＭＡに合わせて、６４キャッシュラインサイズ分に設定すると、ＣＰＵバッファ１（７１）を満たすのに必要な１２８ｂｙｔｅのメモリリードに対し、毎回４Ｋｂｙｔｅのリードアクセスが発生し、転送効率が低下させられる。
【００１２】
また、他の背景技術（以下、第二の例）として、図８に示すように、ＰＣＩバス（６）に対して、ＣＰＵ、ＤＭＡ転送用に、それぞれ８ｂｙｔｅ、６４ｂｙｔｅのメモリリードバッファであるＣＰＵバッファ２（８１）とＤＭＡバッファ２（８２）を有するＰＣＩデバイス２（８）とが接続されたとする。この場合、ＰＣＩデバイス２（８）はＰＣＩアダプタ９に搭載されている。このＰＣＩデバイス２（８）のＣＰＵバッファ２（８１）、ＤＭＡバッファ２（８２）を満たすためのメモリリードは、それぞれ８ｂｙｔｅ、６４ｂｙｔｅであり、どちらも１キャッシュライン分（６４ｂｙｔｅ）以下である。よって、どちらもメモリリードラインコマンドによるアクセスとなる。なお、ＰＣＩデバイス１（７）と同様に、ＰＣＩデバイス２（８）内部のキャッシュラインサイズ２レジスタ（８３）にも６４ｂｙｔｅが設定される。この例では、ＣＰＵバッファ２（８１）を満たすのに必要な８ｂｙｔｅのメモリリードに対し、ＰＣＩｅバス（２）上で毎回６４ｂｙｔｅのリードアクセスが発生し、転送効率が低下させられる。
【００１３】
なお、特許文献１に記載されている技術を利用することを考えた場合、第一の例の構成において、ＣＰＵバッファ１（７１）とＤＭＡバッファ１（７２）がプリフェッチバッファに対応するものと考えることができる。すなわち、第一の例では、ＰＣＩバス（６）に、プリフェッチバッファに対応するものとして、ＣＰＵ、ＤＭＡ転送用にそれぞれ１２８ｂｙｔｅ、４ＫｂｙｔｅのメモリリードバッファとなるＣＰＵバッファ１（７１）とＤＭＡバッファ１（７２）を有するＰＣＩデバイス１（７）が接続されていると考えることができる。この場合、特許文献１の技術では、プリフェッチバッファ長をＤＭＡのバッファサイズである４Ｋｂｙｔｅに設定すると、ＣＰＵのメモリリードに必要な１２８ｂｙｔｅに対し、毎回４Ｋｂｙｔｅのリードアクセスが発生する。他方、ＣＰＵのバッファサイズである、２キャッシュライン分（１２８ｂｙｔｅ）に設定すると、ＤＭＡの４Ｋｂｙｔｅリードは、ＰＣＩバス、ＰＣＩｅバス上のそれぞれで、３２回の１２８ｂｙｔｅリードアクセスに分割され、転送効率が低下させられる。
【００１４】
そこでこの発明は、上述の課題を解決することのできるバス接続装置、バス接続方法及びバス接続プログラムを提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するため、本発明は、互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するバス接続装置であって、前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を格納するものであって、かつ、該第１のレジスタに対する問い合わせに対して該第１のレジスタに代わって回答される値が格納される第２のレジスタを備えることを特徴とするバス接続装置である。
【００１６】
また、この本発明は、互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するバス接続方法であって、前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を第２のレジスタに格納する過程と、前記第１のレジスタに対する問い合わせに対して該第１のレジスタに代えて前記第２のレジスタが格納する値を回答する過程とを含むことを特徴とするバス接続方法である。
【００１７】
また、この本発明は、互いに異なるメモリデータ転送プロトコルが規定された第１のバスと第２のバスとを接続するためのバス接続プログラムであって、前記第２のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を第２のレジスタに格納する過程と、前記第１のレジスタに対する問い合わせに対して該第１のレジスタに代えて前記第２のレジスタが格納する値を回答する過程とをコンピュータによって実行させることを特徴とするバス接続プログラムである。
【発明の効果】
【００１８】
本発明のバス接続装置は、例えばＰＣＩｅバスからなる第１のバスと、例えばＰＣＩバスからなる第２のバスとを接続するバス接続装置であって、その場合に、ＰＣＩバスに接続されるＰＣＩデバイスに搭載されていてＰＣＩデバイスがメモリリードを要求する際に参照される値を格納する第１のレジスタと同一の値を格納するものであって、かつ、例えばＣＰＵ等からの第１のレジスタに対する問い合わせに対して第１のレジスタに代わって回答される値が格納される第２のレジスタを備えている。したがって、第１のレジスタに最適な転送長を設定することでＰＣＩデバイスへのデータ転送効率を向上させることができる。その際、第１のレジスタの値を第２のレジスタに保持させるとともに、第１のレジスタへの問い合わせに対して第２のレジスタの値を回答するようにしているので、ＰＣＩバスのように第１のレジスタの値の書き換えに制限があるような場合でも、第１のレジスタの値の書き換えに伴う問題を回避することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態を説明するためのブロック図である。
【図２】図１のブリッジ（１）における処理の流れを示す図である。
【図３】図１のブリッジ（１）における他の処理の流れを示す図である。
【図４】図１のブリッジ（１）における処理の流れを示すフローチャートである。
【図５】図１のブリッジ（１）における処理の流れを示す他のフローチャートである。
【図６】本発明の他の実施形態を説明するためのブロック図である。
【図７】図６のブリッジ（１ａ）における処理の流れを示す図である。
【図８】背景技術としてのブリッジ（１００）を示すブロック図である。
【図９】図８のブリッジ（１００）における処理の流れを示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明によるバス接続装置（以下、ブリッジと称する。ただし、ブリッジは、ＰＣＩｅ−ｔｏ−ＰＣＩブリッジ、ＰＣＩｅブリッジ等とも呼ぶことができる。）の実施の形態について説明する。なお、本実施形態のブリッジが主に特徴とする点は、各ＰＣＩデバイスに設定されたキャッシュラインサイズレジスタの値をシステム上の不整合を生じさせることなく書き換える手段を有することと、各ＰＣＩデバイスからのリードマルチプルコマンドの転送長をキャッシュラインサイズに限定せず、各ＰＣＩデバイスが搭載するバッファメモリのサイズに適した値に設定する手段を有することである。そのため、本発明のブリッジは、キャッシュラインサイズレジスタの値を書き換えた際に不整合を回避するために用いるレジスタ等の構成を備えることを一つの構成上の特徴としている。なお、それらの構成は、システムＣＰＵによって実行されるドライバ等のソフトウェアによって制御される。その際、レジスタの値の書き換え等の制御は、ドライバによって、ＯＳ（オペレーションシステム）のカーネルによる各レジスタの初期化等の後で実行されるものとする。ただし、カーネルとドライバの役割についてはそれに限定されるものではない。また、ＰＣＩ拡張ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）等にレジスタの制御を行うソフトウェア（あるいはその一部）を格納しておき、システム起動時にＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）の制御下でレジスタの制御を行うようにしてもよい。
【００２１】
図１は、本発明のブリッジの第一の実施形態を示すブロック図である。なお、図１では各構成において、本発明が特徴とする部分に係る内部構成のみを示している。また、図２および図３は、図１のブリッジ（１）の動作を説明するためのブロック図である。なお、各図において、他の図と同一の構成には同一の符号を用いている。
【００２２】
なお、ブリッジ（１）、ＰＣＩデバイス１（７）、およびＰＣＩデバイス２（８）については、特に説明を行わない限り、構成および動作については、ＰＣＩ−ＳＩＧ（Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）によるＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ、ＰＣＩ  Ｅｘｐｒｅｓｓ（商標）  Ｂａｓｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ、およびＰＣＩ  Ｅｘｐｒｅｓｓ（商標）  ｔｏ  ＰＣＩ／ＰＣＩ−Ｘ  Ｂｒｉｄｇｅ Ｓｐｅｃｉｆｉｃａｔｉｏｎに従って構成されているものとする。すなわち、例えば、ブリッジ（１）には、図示していないものの、上記の仕様に従ってＰＣＩバスプロトコルとＰＣＩｅバスプロトコルとを相互に変換するための構成が設けられている。
【００２３】
図１に示すブリッジ（１）には、レジスタ（１１）〜（１６）が設けられている。キャッシュラインサイズコピー１レジスタ（１１）およびキャッシュラインサイズコピー２レジスタ（１２）は、キャッシュラインサイズを格納するためのレジスタであり、システム（カーネル）からのＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）の内部のキャッシュラインレジスタへのアクセスに対し、ＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）の代わりに、ブリッジ（１）が応答するためのレジスタである。ラインサイズＲ／Ｗ１レジスタ（１３）、ラインサイズＲ／Ｗ２レジスタ（１４）は、ＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）のキャッシュラインサイズ１レジスタ（７３）、キャッシュラインサイズ２レジスタ（８３）の値を書き換えるための値を格納するレジスタである。すなわち、ラインサイズＲ／Ｗ１レジスタ（１３）、ラインサイズＲ／Ｗ２レジスタ（１４）には、キャッシュラインサイズ１レジスタ（７３）、キャッシュラインサイズ２レジスタ（８３）内の書き換え後の値と同一の値が保持されることになる。リードマルチプルサイズ１レジスタ（１５）、リードマルチプルサイズ２レジスタ（１６）は、それぞれＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）からのリードマルチプルコマンドに対する転送長を設定するためのレジスタである。ＲＥＱ１，２、ＧＮＴ１，２はＰＣＩバス（６）上のアービトレーション信号で、リードライン、リードマルチプルコマンドの発行元のＰＣＩデバイスを特定するために用いられる。
【００２４】
なお、ＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）のキャッシュラインサイズ１レジスタ（７３）、キャッシュラインサイズ２レジスタ（８３）は、ＰＣＩ−ＳＩＧ策定のＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎに規定されているコンフィグレーションレジスタ内のキャッシュラインサイズレジスタに対応するものである。また、後述するコンフィグレーションレジスタ内のコマンドレジスタのメモリライトアンドインバリデートイネーブルビットやメモリライト・アンド・インバリデートコマンド（ＭＷＩコマンド）についても上記の仕様に規定されているものである。
【００２５】
次に、図１の構成の動作について、図２〜図５を参照して説明する。図２および図３は、図１の構成における処理の流れを説明するためのブロック図である。図４および図５は、レジスタの初期設定時およびＣＰＵ（５）からＰＣＩデバイス１（７）、２（８）内のコンフィグレーションレジスタに対するアクセスの際の処理の流れを示すフローチャートである。各ＰＣＩデバイス１（７）、２（８）は、デバイス内部にキャッシュラインサイズレジスタ（図２のキャッシュラインサイズ１レジスタ（７３）およびキャッシュラインサイズ２レジスタ（８３））を有し、まず、システムの初期設定時、そこにシステム（カーネル）が、システムＣＰＵ（５）のキャッシュラインサイズの値を書き込む（図４のステップＳ１１）。以後、各ＰＣＩデバイス１（７）、２（８）は、その値から、ＣＰＵ（５）のキャッシュラインサイズを認識し、リードデータの要求長が１キャッシュライン以下であれば、リードラインコマンド、１キャッシュラインを超える場合は、リードマルチプルコマンドを発行する。
【００２６】
本実施形態では、ドライバによって、各ＰＣＩデバイス１（７）、２（８）のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットがディスエーブルに設定された後、システム（カーネル）によって設定されたキャッシュラインサイズレジスタ（すなわちキャッシュラインサイズ１レジスタ（７３）およびキャッシュラインサイズ２レジスタ（８３））の値が書き換えられる。その際、キャッシュラインサイズレジスタの値は、ＰＣＩデバイス１（７）、２（８）のリードバッファサイズ（ＣＰＵバッファ１（７１）、ＣＰＵバッファ２（８１）のサイズ）に対応するように書き換えられる。したがって、キャッシュラインサイズレジスタの値は、ＣＰＵ（５）のキャッシュラインサイズと常に一致するようには設定されない。さらに、各ＰＣＩデバイス１（７）、２（８）のリードマルチプルコマンドに対する転送長がブリッジ（１）内のリードマルチプルサイズ１レジスタ（１５）、リードマルチプルサイズ２レジスタ（１６）に設定される。
【００２７】
書き換え後のキャッシュラインサイズレジスタ（キャッシュラインサイズ１レジスタ（７３）およびキャッシュラインサイズ２レジスタ（８３））の値は、例えば、ＣＰＵ転送用のリードバッファサイズ（すなわちＣＰＵバッファ１（７１）およびＣＰＵバッファ２（８１）のサイズ）に一致する値とすることができる。ただし、１つのＰＣＩデバイスに複数のＣＰＵ転送用のリードバッファが搭載されているような場合には、例えば、最大のバッファに一致するサイズとしたり、使用頻度が高いと予想されるバッファのサイズに一致するサイズとしたりというように書き換え後の値を設定することができる。また、リードマルチプルサイズ１レジスタ（１５）、リードマルチプルサイズ２レジスタ（１６）に設定されるリードマルチプルコマンドに対する転送長については、例えば、ＤＭＡ転送用のリードバッファサイズ（ＤＭＡバッファ１（７２）、ＤＭＡバッファ２（８２）のサイズ）に一致すように設定することがきる。
【００２８】
なお、キャッシュラインサイズレジスタは、複数の機能で使用されるレジスタであるが、その一つとして、マスタデバイスがメモリにアクセスする際に、シングル（メモリリード）、リードライン、リードマルチプルラインコマンドのどれを使用するかを決定する場合に参照されるレジスタである。また、メモリライトアンドインバリデートイネーブルビットは、マスタデバイスによるメモリライトアンドインバリデートコマンドの使用の可否を設定するビットである。値が１の場合には使用が許可される。したがって、ディスエーブルされた場合（＝値が０に設定された場合）、マスタデバイスはメモリライトアンドインバリデートコマンドを使用できない。また、メモリライトアンドインバリデートコマンドは、メモリライトコマンドと意味的には同一のコマンドであるが、不必要なキャッシュライトバックを省略するために用意されたものである。
【００２９】
各ＰＣＩデバイス１（７）、２（８）は、書き換えられた新たなキャッシュラインサイズの値に従い、メモリリードラインまたはメモリリードマルチプルコマンドを発行する。ＰＣＩ（６）上でメモリリードライン、メモリリードマルチプル要求が発生すると、ブリッジ（１）は、ＲＥＱ、ＧＮＴでＰＣＩマスタを特定し、そのマスタに割り当てられたレジスタの値、すなわちリードラインコマンドでは、ラインサイズＲ／Ｗ１レジスタ（１３）またはラインサイズＲ／Ｗ２レジスタ（１４）の値を、リードマルチプルコマンドでは、リードマルチプルサイズ１レジスタ（１５）またはリードマルチプルサイズ２レジスタ（１６）の値を、レングス値とするパケットをＰＣＩｅ（２）に発信する。
【００３０】
図９を参照する。上述した本発明が背景とした技術では、システムが立ち上がる際、システム（カーネル）により、各ＰＣＩデバイス１（７）、２（８）内のキャッシュラインサイズ１レジスタ（７３）、２レジスタ（８３）にシステムＣＰＵ（５）のキャッシュラインの値、６４ｂｙｔｅ（３２ｂｉｔＣＰＵの場合）が設定される。システム（カーネル）によって設定された各ＰＣＩデバイス１（７）、２（８）内部のキャッシュラインサイズ１レジスタ（７３）、２レジスタ（８３）の値を、ドライバなどが書き換えると、そのまま何も対策を行わない場合、システム上の不整合によりシステムが正常動作しない。例えば、各ＰＣＩデバイス１（７）、２（８）に設定されたキャッシュラインサイズ１（７３）、２（８３）の値とカーネルが認識したＣＰＵのキャッシュラインサイズが異なると、エラーを表示し、縮退させられる。
【００３１】
図３を参照する。上述した図４のステップＳ１１に続き、本発明のブリッジ（１）では、ドライバによって、上記カーネルの設定値、６４ｂｙｔｅが、ブリッジ（１）内のレジスタ（キャッシュラインサイズコピー１レジスタ（１１）、キャッシュラインサイズコピー２レジスタ（１２））にコピーされる（図４のステップＳ１２）。その後、ＰＣＩデバイス１（７）のドライバが、ＰＣＩデバイス１（７）の内部のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットをディスエーブルに設定する（図４のステップＳ１３）。そして、ドライバが、ブリッジ（１）内のレジスタ（ラインサイズＲ／Ｗ１レジスタ（１３））を介して、ＰＣＩデバイス１（７）内部のキャッシュラインサイズ１レジスタ（７３）を１２８ｂｙｔｅに書き換える（図４のステップＳ１４）。以降、図５に示すように、カーネルからＰＣＩデバイス１（７）の内部のキャッシュラインサイズ１レジスタ（７３）へのアクセスには（図５のステップ９のステップＳ２１で「ＹＥＳ」の場合）、キャッシュラインサイズコピー１レジスタ（１１）を用いて、ブリッジ（１）が応答し（図５のステップＳ２２）、ＰＣＩデバイス１（７）は切り離される。これにより、カーネルからは、ＰＣＩデバイス１（７）内部のキャッシュラインサイズ１レジスタ（７３）が６４ｂｙｔｅから１２８ｂｙｔｅに書き換えられたことを認識できず、システム上の不整合が生じることはなくなる。
【００３２】
なお、ＣＰＵ（５）からのＰＣＩデバイス１（７）へのキャッシュラインサイズ以外についてのコンフィグレーションレジスタへの問い合わせには（図５のステップＳ２１で「ＮＯ」の場合）、ブリッジ（１）が、ＰＣＩデバイス１（７）に対してＣＰＵ（５）からの問い合わせ内容をプロトコルを変換して送信する（図５のステップＳ２３）。そして、ブリッジ（１）が、ＰＣＩデバイス１（７）から回答を受信すると（図５のステップＳ２４）、ＰＣＩデバイス１（７）からの回答内容をＣＰＵに対してプロトコルを変換して送信する（図５のステップＳ２５）。
【００３３】
図２を参照する。本発明のブリッジ（１）のＰＣＩバス（６）に、上述した背景技術の第一の例と同様に、ＣＰＵ、ＤＭＡ転送用として、それぞれ１２８ｂｙｔｅ、４Ｋｂｙｔｅのメモリリードバッファを有するＰＣＩデバイス（７）が接続されたとする。
【００３４】
本実施形態では、ＰＣＩデバイス１（７）のキャッシュラインサイズレジスタ（キャッシュラインサイズ１レジスタ（７３））の値が、システム上の不整合を生じさせることなく、６４ｂｙｔｅから１２８ｂｙｔｅに書き換えられる。これにより、ＣＰＵバッファ（ＣＰＵバッファ１（７１））のリード要求が、リードマルチプルからリードラインコマンドに変わり、さらに、リードラインの転送長が６４ｂｙｔｅから１２８ｂｙｔｅになる。
【００３５】
また、ＰＣＩデバイス１（７）からのメモリリードマルチプルコマンドに対し４Ｋｂｙｔｅの転送長がブリッジ（１）内の対応するレジスタ（リードマルチプルサイズ１レジスタ（１５））に設定される。これにより、ＤＭＡバッファ（ＤＭＡバッファ１（７２））のリード要求で使用されるリードマルチプルコマンドの転送長が４Ｋｂｙｔｅになる。結果、本発明のブリッジ（１）により、このＰＣＩデバイス１（７）のＣＰＵ、ＤＭＡのＰＣＩバス、ＰＣＩｅバス上でのメモリリード転送長を、このＰＣＩデバイスのそれぞれのリードバッファサイズである１２８ｂｙｔｅ、４Ｋｂｙｔｅに合わせることができ、転送効率を向上できる。
【００３６】
また、上述した背景技術の第二の例の場合の条件でも同様に、本発明により、ＰＣＩデバイス２（８）のキャッシュラインサイズ２レジスタ（８３）の値が、６４ｂｙｔｅから８ｂｙｔｅに書き換えられ、このＰＣＩデバイス２（８）からの、メモリリードマルチプルコマンドに対し６４ｂｙｔｅの転送長がブリッジ（１）内の対応するレジスタ（リードマルチプルサイズ２レジスタ（１６））に設定される。これにより、このＰＣＩデバイス２（８）のＣＰＵ、ＤＭＡのＰＣＩバス（６）、ＰＣＩｅバス（２）上でのメモリリード転送長を、このＰＣＩデバイス２（８）のそれぞれのリードバッファサイズである８ｂｙｔｅ、６４ｂｙｔｅに合わせることができ、転送効率を向上できる。
【００３７】
なお、本発明により、各アダプタ（ＰＣＩデバイス１（７）、ＰＣＩデバイス２（８））のコンフィグレーションレジスタ内のキャッシュラインサイズの値が書き換えられると、ＰＣＩのメモリライト・アンド・インバリデートコマンド（ＭＷＩコマンド）が不正に発行される場合があるため、ＰＣＩデバイスの内部のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットが、本発明によりディスエーブルに設定される。ＰＣＩｅ−ｔｏ−ＰＣＩブリッジでは、ＰＣＩのメモリライト・アンド・インバリデートコマンド（ＭＷＩコマンド）を通常のメモリライトコマンドとして扱うため、コマンドレジスタのＭＷＩイネーブルビットがディスエーブルにされても、システム性能に影響はない。ＰＣＩｅのシステムでは、ＰＣＩのＭＷＩコマンドによらず、ブリッジが、ＰＣＩ上でメモリライトサイクルがキャッシュランサイズ長以下で分断されないよう、キャッシュラインサイズの大きさのライトバッファの空きを確保することで、キャッシュラインサイズ分のライトデータをＰＣＩｅの一つのパケットに収め、システム側（メモリコントローラ）が、ＰＣＩｅのパケットのスタートアドレス、レングス情報から、ライトバックキャッシュをダーティにすることで、ＰＣＩのメモリライトアンドインバリデートコマンドの機能を実現している。
【００３８】
以上のように、本発明では、メモリリードライン、メモリリードマルチプルコマンドに対し、各ＰＣＩデバイスの転送パターンにあわせた転送長を設定することで、転送効率の最適化を図り、システム性能の向上を実現できる。
【００３９】
次に、本発明の他の実施形態について説明する。図６を参照すると、本発明の他の実施形態をブリッジ（１ａ）として構成している。なお、図６において、図１〜図３と同一の構成には同一の符号を用いている。リードラインサイズ１レジスタ（１７）、リードラインサイズ２レジスタ（１８）は、ＰＣＩデバイス１（７）、ＰＣＩデバイス２（８）においてリードラインコマンドで用いられるバッファのサイズに適するように、リードラインコマンドに対する転送長が設定されるレジスタである。ＰＣＩ上でメモリリードライン要求が発生すると、ブリッジ（１ａ）は、ＲＥＱ、ＧＮＴでＰＣＩマスタを特定し、そのマスタに割り当てられた、リードラインサイズ１レジスタ（１７）、リードラインサイズ２レジスタ（１８）の値を、レングス値とするパケットをＰＣＩｅ（２）に発信する。上記の図１〜図３を参照して説明した第一の実施形態では、リードラインコマンドが発生した場合に、ラインサイズＲ／Ｗ１レジスタ（１３）またはラインサイズＲ／Ｗ２レジスタ（１４）の値をレングス値とするパケットをＰＣＩｅ（２）に発信することとしていたが、本実施形態ではリードラインサイズ１レジスタ（１７）、リードラインサイズ２レジスタ（１８）の値をレングス値とするパケットをＰＣＩｅ（２）に発信する点が異なっている。リードラインサイズ１レジスタ（１７）、リードラインサイズ２レジスタ（１８）以外は、第一の実施形態と同様の構成、動作である。
【００４０】
図７を参照する。図７に示す構成では、図６のブリッジ（１ａ）に対して、ＰＣＩバス（６）を介して、ＰＣＩデバイス１（７）に代えて、ＰＣＩデバイス１（１０）が接続されている。ＰＣＩデバイス１（１０）は、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、ＤＭＡ転送用として、それぞれ１２８ｂｙｔｅ、２５６ｂｙｔｅ、４ＫｂｙｔｅのメモリリードバッファであるＣＰＵバッファＡ１（１０１）、ＣＰＵバッファＢ１（１０２）、ＤＭＡバッファ１（１０３）を有している。本実施形態では、ＰＣＩデバイス１（１０）のキャッシュラインサイズ１レジスタ（１０４）の値が、システム上の不整合を生じさせることなく、６４ｂｙｔｅから２５６ｂｙｔｅに書き換えられる。また、このＰＣＩデバイス１（１０）からのメモリリードライン、メモリリードマルチプルコマンドに対し、１２８ｂｙｔｅ、４Ｋｂｙｔｅの転送長がブリッジ（１ａ）内の対応するレジスタ（リードラインサイズ１レジスタ（１７）、リードマルチプルサイズ１レジスタ（１５））に設定される。これにより、ＣＰＵ−Ａ、ＣＰＵ−Ｂ、ＤＭＡバッファ（ＣＰＵバッファＡ１（１０１）、ＣＰＵバッファＢ１（１０２）、ＤＭＡバッファ１（１０３））のリード要求が、１２８ｂｙｔｅ、２回の１２８ｂｙｔｅ、４Ｋｂｙｔｅの転送となる。ＣＰＵ−ＢよりＣＰＵ−Ａの方が、メモリリードの頻度が高い場合、上記の第一の実施形態の様に、メモリリードラインコマンドの転送長を、本実施形態により変更された後のキャッシュラインサイズ１レジスタ（１０４）の値に固定することより、リードラインサイズ１レジスタ（１７）で転送長を設定できるようにした方が、転送効率を向上できる。
【００４１】
以上のように、ＰＣＩでは、各ＰＣＩデバイスの構成、転送パターンにかかわらず、システムＣＰＵのキャッシュラインサイズに合わせて、メモリリードデータ転送長が、固定されていた。本発明では、ＰＣＩｅにブリッジを介してＰＣＩデバイスが接続された場合、ＰＣＩｅのシステムでは、キャッシュラインサイズに転送長を合わせる要求がないので、メモリリード転送長を、ＣＰＵのキャッシュラインサイズではなく、各ＰＣＩデバイスに最適な転送長に設定することで、各ＰＣＩデバイスのデータ転送効率を向上させることができる。より具体的には、本発明では、メモリリードライン、メモリリードマルチプルコマンドに対し、各ＰＣＩデバイスの転送パターンにあわせた転送長を設定することで、転送効率の最適化を図り、システム性能の向上を実現できる。
【００４２】
なお、本発明の実施の形態は上記に限定されず、ブリッジ（１）、（１ａ）に接続するＰＣＩデバイスの個数を１個または３以上の複数個としたり、ＰＣＩデバイスに代えてＰＣＩ−ｔｏ−ＰＣＩブリッジを接続するようにしたりする変更等を適宜行うことができる。ただし、その場合には、ブリッジ（１）、（１ａ）内のレジスタ（１１）〜（１８）の個数を対応するように変更しておく。また、ブリッジ（１）、（１ａ）を用いた制御を行うためのプログラムは、コンピュータ読み取り可能な記録媒体や通信回線を介して流通させることができる。
【符号の説明】
【００４３】
１、１ａ  ブリッジ（バス接続装置）
２  ＰＣＩｅバス
５  システムＣＰＵ
６  ＰＣＩバス
７、１０  ＰＣＩデバイス１
８  ＰＣＩデバイス２
１１  キャッシュラインサイズコピー１レジスタ
１２  キャッシュラインサイズコピー２レジスタ
１３  ラインサイズＲ／Ｗ１レジスタ
１４  ラインサイズＲ／Ｗ２レジスタ
１５  リードマルチプルサイズ１レジスタ
１６  リードマルチプルサイズ２レジスタ
１７  リードラインサイズ１レジスタ
１８  リードラインサイズ２レジスタ
７１  ＣＰＵバッファ１
７２、１０３  ＤＭＡバッファ１
７３、１０４  キャッシュラインサイズ１レジスタ
８１  ＣＰＵバッファ２
８２  ＤＭＡバッファ２
８３  キャッシュラインサイズ２レジスタ
１０１  ＣＰＵバッファＡ１
１０２  ＣＰＵバッファＢ１
【図１】
2012118772.tif 000003
【図２】
2012118772.tif 000004
【図３】
2012118772.tif 000005
【図４】
2012118772.tif 000006
【図５】
2012118772.tif 000007
【図６】
2012118772.tif 000008
【図７】
2012118772.tif 000009
【図８】
2012118772.tif 000010
【図９】
2012118772.tif 000011