JP2012118772A - バス接続装置、バス接続方法及びバス接続プログラム - Google Patents
バス接続装置、バス接続方法及びバス接続プログラム Download PDFInfo
- Publication number
- JP2012118772A JP2012118772A JP2010268111A JP2010268111A JP2012118772A JP 2012118772 A JP2012118772 A JP 2012118772A JP 2010268111 A JP2010268111 A JP 2010268111A JP 2010268111 A JP2010268111 A JP 2010268111A JP 2012118772 A JP2012118772 A JP 2012118772A
- Authority
- JP
- Japan
- Prior art keywords
- register
- bus
- pci
- read
- cache line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】ブリッジを介してPCIエクスプレスバスに接続されているPCIデバイスのデータ転送効率を向上させる。
【解決手段】互いに異なるメモリデータ転送プロトコルが規定されたPCIエクスプレスバス2とPCIバス6とを接続するブリッジ1であって、PCIバス6に接続されるPCIデバイス7に搭載されていてPCIデバイス7がメモリリードを要求する際に参照される値を格納するキャッシュラインサイズ1レジスタ73と同一の値を格納するものであって、かつ、キャッシュラインサイズ1レジスタ73に対するCPU5等からの問い合わせに対してキャッシュラインサイズ1レジスタ73に代わって回答される値が格納されるキャッシュラインサイズコピー1レジスタ11を備えている。
【選択図】図2
【解決手段】互いに異なるメモリデータ転送プロトコルが規定されたPCIエクスプレスバス2とPCIバス6とを接続するブリッジ1であって、PCIバス6に接続されるPCIデバイス7に搭載されていてPCIデバイス7がメモリリードを要求する際に参照される値を格納するキャッシュラインサイズ1レジスタ73と同一の値を格納するものであって、かつ、キャッシュラインサイズ1レジスタ73に対するCPU5等からの問い合わせに対してキャッシュラインサイズ1レジスタ73に代わって回答される値が格納されるキャッシュラインサイズコピー1レジスタ11を備えている。
【選択図】図2
Description
本発明は、例えばPCI(Peripheral Components Interconnect)バスとPCIエクスプレス(以下、PCIe)バスとを接続する際に用いて好適なバス接続装置、バス接続方法及びバス接続プログラムに関する。
特許文献1には、PCIバスとメモリバスとを接続するブリッジ(バス接続回路)に関する技術が記載されている。この特許文献1に記載されている技術は、複数のマスタ(ターゲット(スレーブ)に対してデータの読み書きを要求する側)のそれぞれに対応させてプリフェッチバッファを用意し、REQ(アービトレーションのリクエスト信号)、GNT(アービトレーションのグラント信号)からバスマスタを判定し、対応するプリフェッチバッファにリードデータを格納することでテータ転送の効率を高めようとするものである。
ところで、PCIでは、システムCPU(中央処理装置)のキャッシュラインサイズ(キャッシュにおいて一まとまりで管理されるデータの単位の大きさ)に合わせて、メモリリードデータ長が決められるようになっている。
一方、PCIeはPCIとは異なるメモリデータ転送プロトコルが規定されたものであって、PCIeでは、キャッシュラインサイズに関係なく、送信パケット内のレングスで1DW(DWORD;4byte)から1024DW(4Kbyte)のデータ転送長が指定される。
そのため、PCIeにブリッジを介してPCIデバイスが接続された場合、PCIeのシステムでは、キャッシュラインサイズに転送長を合わせる要求がないにもかかわらず、PCIにより、キャッシュラインサイズに、データ転送長が固定されるため、メモリリードの転送効率が低下し、システムの性能が低下させられていた。
PCIでは、メモリリード系で3種類のコマンドをサポートしている。メモリリードコマンドはシングル(バーストなし)の、リードラインコマンドは単数キャッシュライン分の、そして、リードマルチプルコマンドは複数のキャッシュライン分(例えば2ライン分)のメモリリード要求を示す。よって、PCIのメモリリードデータ転送長は、シングル、1キャッシュライン分、複数(例えば2キャッシュ)ライン分以下に固定されることになる。
図8を参照する。図8は、本発明を検討する際に本出願人において背景とした技術の一例(以下、第一の例)を示す図である。この第一の例では、システムCPU(5)を、32ビットCPUとし、ブリッジ(100)に接続されているPCIバス(6)に対してPCIデバイス1(7)が接続されている。このPCIデバイス1(7)には、CPU転送用として128byteのメモリリードバッファであるCPUバッファ1(71)が設けられている。さらに、PCIデバイス1(7)には、DMA(Direct Memory Access)転送用として4KbyteのメモリリードバッファであるDMAバッファ1(72)が設けられている。32ビットCPU(5)のキャッシュラインサイズは64byteなので、PCIデバイス1(7)内部のキャッシュラインサイズ1レジスタ(73)には、64byteが設定される。
なお、ブリッジ(100)は、PCIeバス(2)とPCIバス(6)とを接続する接続装置であり、ブリッジ(100)には、PCIeバス(2)を介してルートコンプレックス(Root Complex)(3)が接続され、ルートコンプレックス(3)にはローカルバス(4)を介してシステムCPU(5)が接続されている。
このPCIデバイス1(7)のCPUバッファ1(71)とDMAバッファ1(72)を満たすためのメモリリードは、それぞれ128byte、4Kbyteであり、どちらも1キャッシュライン分(64byte)を超える。よって、どちらもリードマルチプルコマンドによるアクセスとなる。リードマルチプルコマンドの転送長が2キャッシュライン分(128byte)に設定されるとすると、DMAの4Kbyteリードは、PCIバス(6)、PCIeバス(2)上のそれぞれで、32回の128byteリードアクセスに分割され、転送効率が低下させられる。なお、リードマルチプルコマンドの転送長を2キャッシュライン分(128byte)に設定する場合、ブリッジ(100)内の所定のレジスタ(1001)にはリードマルチプルコマンドの転送長(リードマルチプルコマンドサイズ)の128byteがキャッシュラインサイズの2倍であることが設定される。
また、メモリリードマルチプルコマンドの転送長をDMAに合わせて、64キャッシュラインサイズ分に設定すると、CPUバッファ1(71)を満たすのに必要な128byteのメモリリードに対し、毎回4Kbyteのリードアクセスが発生し、転送効率が低下させられる。
また、他の背景技術(以下、第二の例)として、図8に示すように、PCIバス(6)に対して、CPU、DMA転送用に、それぞれ8byte、64byteのメモリリードバッファであるCPUバッファ2(81)とDMAバッファ2(82)を有するPCIデバイス2(8)とが接続されたとする。この場合、PCIデバイス2(8)はPCIアダプタ9に搭載されている。このPCIデバイス2(8)のCPUバッファ2(81)、DMAバッファ2(82)を満たすためのメモリリードは、それぞれ8byte、64byteであり、どちらも1キャッシュライン分(64byte)以下である。よって、どちらもメモリリードラインコマンドによるアクセスとなる。なお、PCIデバイス1(7)と同様に、PCIデバイス2(8)内部のキャッシュラインサイズ2レジスタ(83)にも64byteが設定される。この例では、CPUバッファ2(81)を満たすのに必要な8byteのメモリリードに対し、PCIeバス(2)上で毎回64byteのリードアクセスが発生し、転送効率が低下させられる。
なお、特許文献1に記載されている技術を利用することを考えた場合、第一の例の構成において、CPUバッファ1(71)とDMAバッファ1(72)がプリフェッチバッファに対応するものと考えることができる。すなわち、第一の例では、PCIバス(6)に、プリフェッチバッファに対応するものとして、CPU、DMA転送用にそれぞれ128byte、4KbyteのメモリリードバッファとなるCPUバッファ1(71)とDMAバッファ1(72)を有するPCIデバイス1(7)が接続されていると考えることができる。この場合、特許文献1の技術では、プリフェッチバッファ長をDMAのバッファサイズである4Kbyteに設定すると、CPUのメモリリードに必要な128byteに対し、毎回4Kbyteのリードアクセスが発生する。他方、CPUのバッファサイズである、2キャッシュライン分(128byte)に設定すると、DMAの4Kbyteリードは、PCIバス、PCIeバス上のそれぞれで、32回の128byteリードアクセスに分割され、転送効率が低下させられる。
そこでこの発明は、上述の課題を解決することのできるバス接続装置、バス接続方法及びバス接続プログラムを提供することを目的としている。
上記課題を解決するため、本発明は、互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するバス接続装置であって、前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を格納するものであって、かつ、該第1のレジスタに対する問い合わせに対して該第1のレジスタに代わって回答される値が格納される第2のレジスタを備えることを特徴とするバス接続装置である。
また、この本発明は、互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するバス接続方法であって、前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を第2のレジスタに格納する過程と、前記第1のレジスタに対する問い合わせに対して該第1のレジスタに代えて前記第2のレジスタが格納する値を回答する過程とを含むことを特徴とするバス接続方法である。
また、この本発明は、互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するためのバス接続プログラムであって、前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を第2のレジスタに格納する過程と、前記第1のレジスタに対する問い合わせに対して該第1のレジスタに代えて前記第2のレジスタが格納する値を回答する過程とをコンピュータによって実行させることを特徴とするバス接続プログラムである。
本発明のバス接続装置は、例えばPCIeバスからなる第1のバスと、例えばPCIバスからなる第2のバスとを接続するバス接続装置であって、その場合に、PCIバスに接続されるPCIデバイスに搭載されていてPCIデバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を格納するものであって、かつ、例えばCPU等からの第1のレジスタに対する問い合わせに対して第1のレジスタに代わって回答される値が格納される第2のレジスタを備えている。したがって、第1のレジスタに最適な転送長を設定することでPCIデバイスへのデータ転送効率を向上させることができる。その際、第1のレジスタの値を第2のレジスタに保持させるとともに、第1のレジスタへの問い合わせに対して第2のレジスタの値を回答するようにしているので、PCIバスのように第1のレジスタの値の書き換えに制限があるような場合でも、第1のレジスタの値の書き換えに伴う問題を回避することができる。
以下、図面を参照して本発明によるバス接続装置(以下、ブリッジと称する。ただし、ブリッジは、PCIe−to−PCIブリッジ、PCIeブリッジ等とも呼ぶことができる。)の実施の形態について説明する。なお、本実施形態のブリッジが主に特徴とする点は、各PCIデバイスに設定されたキャッシュラインサイズレジスタの値をシステム上の不整合を生じさせることなく書き換える手段を有することと、各PCIデバイスからのリードマルチプルコマンドの転送長をキャッシュラインサイズに限定せず、各PCIデバイスが搭載するバッファメモリのサイズに適した値に設定する手段を有することである。そのため、本発明のブリッジは、キャッシュラインサイズレジスタの値を書き換えた際に不整合を回避するために用いるレジスタ等の構成を備えることを一つの構成上の特徴としている。なお、それらの構成は、システムCPUによって実行されるドライバ等のソフトウェアによって制御される。その際、レジスタの値の書き換え等の制御は、ドライバによって、OS(オペレーションシステム)のカーネルによる各レジスタの初期化等の後で実行されるものとする。ただし、カーネルとドライバの役割についてはそれに限定されるものではない。また、PCI拡張ROM(read only memory)等にレジスタの制御を行うソフトウェア(あるいはその一部)を格納しておき、システム起動時にBIOS(Basic Input/Output System)の制御下でレジスタの制御を行うようにしてもよい。
図1は、本発明のブリッジの第一の実施形態を示すブロック図である。なお、図1では各構成において、本発明が特徴とする部分に係る内部構成のみを示している。また、図2および図3は、図1のブリッジ(1)の動作を説明するためのブロック図である。なお、各図において、他の図と同一の構成には同一の符号を用いている。
なお、ブリッジ(1)、PCIデバイス1(7)、およびPCIデバイス2(8)については、特に説明を行わない限り、構成および動作については、PCI−SIG(Special Interest Group)によるPCI Local Bus Specification、PCI Express(商標) Base Specification、およびPCI Express(商標) to PCI/PCI−X Bridge Specificationに従って構成されているものとする。すなわち、例えば、ブリッジ(1)には、図示していないものの、上記の仕様に従ってPCIバスプロトコルとPCIeバスプロトコルとを相互に変換するための構成が設けられている。
図1に示すブリッジ(1)には、レジスタ(11)〜(16)が設けられている。キャッシュラインサイズコピー1レジスタ(11)およびキャッシュラインサイズコピー2レジスタ(12)は、キャッシュラインサイズを格納するためのレジスタであり、システム(カーネル)からのPCIデバイス1(7)、PCIデバイス2(8)の内部のキャッシュラインレジスタへのアクセスに対し、PCIデバイス1(7)、PCIデバイス2(8)の代わりに、ブリッジ(1)が応答するためのレジスタである。ラインサイズR/W1レジスタ(13)、ラインサイズR/W2レジスタ(14)は、PCIデバイス1(7)、PCIデバイス2(8)のキャッシュラインサイズ1レジスタ(73)、キャッシュラインサイズ2レジスタ(83)の値を書き換えるための値を格納するレジスタである。すなわち、ラインサイズR/W1レジスタ(13)、ラインサイズR/W2レジスタ(14)には、キャッシュラインサイズ1レジスタ(73)、キャッシュラインサイズ2レジスタ(83)内の書き換え後の値と同一の値が保持されることになる。リードマルチプルサイズ1レジスタ(15)、リードマルチプルサイズ2レジスタ(16)は、それぞれPCIデバイス1(7)、PCIデバイス2(8)からのリードマルチプルコマンドに対する転送長を設定するためのレジスタである。REQ1,2、GNT1,2はPCIバス(6)上のアービトレーション信号で、リードライン、リードマルチプルコマンドの発行元のPCIデバイスを特定するために用いられる。
なお、PCIデバイス1(7)、PCIデバイス2(8)のキャッシュラインサイズ1レジスタ(73)、キャッシュラインサイズ2レジスタ(83)は、PCI−SIG策定のPCI Local Bus Specificationに規定されているコンフィグレーションレジスタ内のキャッシュラインサイズレジスタに対応するものである。また、後述するコンフィグレーションレジスタ内のコマンドレジスタのメモリライトアンドインバリデートイネーブルビットやメモリライト・アンド・インバリデートコマンド(MWIコマンド)についても上記の仕様に規定されているものである。
次に、図1の構成の動作について、図2〜図5を参照して説明する。図2および図3は、図1の構成における処理の流れを説明するためのブロック図である。図4および図5は、レジスタの初期設定時およびCPU(5)からPCIデバイス1(7)、2(8)内のコンフィグレーションレジスタに対するアクセスの際の処理の流れを示すフローチャートである。各PCIデバイス1(7)、2(8)は、デバイス内部にキャッシュラインサイズレジスタ(図2のキャッシュラインサイズ1レジスタ(73)およびキャッシュラインサイズ2レジスタ(83))を有し、まず、システムの初期設定時、そこにシステム(カーネル)が、システムCPU(5)のキャッシュラインサイズの値を書き込む(図4のステップS11)。以後、各PCIデバイス1(7)、2(8)は、その値から、CPU(5)のキャッシュラインサイズを認識し、リードデータの要求長が1キャッシュライン以下であれば、リードラインコマンド、1キャッシュラインを超える場合は、リードマルチプルコマンドを発行する。
本実施形態では、ドライバによって、各PCIデバイス1(7)、2(8)のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットがディスエーブルに設定された後、システム(カーネル)によって設定されたキャッシュラインサイズレジスタ(すなわちキャッシュラインサイズ1レジスタ(73)およびキャッシュラインサイズ2レジスタ(83))の値が書き換えられる。その際、キャッシュラインサイズレジスタの値は、PCIデバイス1(7)、2(8)のリードバッファサイズ(CPUバッファ1(71)、CPUバッファ2(81)のサイズ)に対応するように書き換えられる。したがって、キャッシュラインサイズレジスタの値は、CPU(5)のキャッシュラインサイズと常に一致するようには設定されない。さらに、各PCIデバイス1(7)、2(8)のリードマルチプルコマンドに対する転送長がブリッジ(1)内のリードマルチプルサイズ1レジスタ(15)、リードマルチプルサイズ2レジスタ(16)に設定される。
書き換え後のキャッシュラインサイズレジスタ(キャッシュラインサイズ1レジスタ(73)およびキャッシュラインサイズ2レジスタ(83))の値は、例えば、CPU転送用のリードバッファサイズ(すなわちCPUバッファ1(71)およびCPUバッファ2(81)のサイズ)に一致する値とすることができる。ただし、1つのPCIデバイスに複数のCPU転送用のリードバッファが搭載されているような場合には、例えば、最大のバッファに一致するサイズとしたり、使用頻度が高いと予想されるバッファのサイズに一致するサイズとしたりというように書き換え後の値を設定することができる。また、リードマルチプルサイズ1レジスタ(15)、リードマルチプルサイズ2レジスタ(16)に設定されるリードマルチプルコマンドに対する転送長については、例えば、DMA転送用のリードバッファサイズ(DMAバッファ1(72)、DMAバッファ2(82)のサイズ)に一致すように設定することがきる。
なお、キャッシュラインサイズレジスタは、複数の機能で使用されるレジスタであるが、その一つとして、マスタデバイスがメモリにアクセスする際に、シングル(メモリリード)、リードライン、リードマルチプルラインコマンドのどれを使用するかを決定する場合に参照されるレジスタである。また、メモリライトアンドインバリデートイネーブルビットは、マスタデバイスによるメモリライトアンドインバリデートコマンドの使用の可否を設定するビットである。値が1の場合には使用が許可される。したがって、ディスエーブルされた場合(=値が0に設定された場合)、マスタデバイスはメモリライトアンドインバリデートコマンドを使用できない。また、メモリライトアンドインバリデートコマンドは、メモリライトコマンドと意味的には同一のコマンドであるが、不必要なキャッシュライトバックを省略するために用意されたものである。
各PCIデバイス1(7)、2(8)は、書き換えられた新たなキャッシュラインサイズの値に従い、メモリリードラインまたはメモリリードマルチプルコマンドを発行する。PCI(6)上でメモリリードライン、メモリリードマルチプル要求が発生すると、ブリッジ(1)は、REQ、GNTでPCIマスタを特定し、そのマスタに割り当てられたレジスタの値、すなわちリードラインコマンドでは、ラインサイズR/W1レジスタ(13)またはラインサイズR/W2レジスタ(14)の値を、リードマルチプルコマンドでは、リードマルチプルサイズ1レジスタ(15)またはリードマルチプルサイズ2レジスタ(16)の値を、レングス値とするパケットをPCIe(2)に発信する。
図9を参照する。上述した本発明が背景とした技術では、システムが立ち上がる際、システム(カーネル)により、各PCIデバイス1(7)、2(8)内のキャッシュラインサイズ1レジスタ(73)、2レジスタ(83)にシステムCPU(5)のキャッシュラインの値、64byte(32bitCPUの場合)が設定される。システム(カーネル)によって設定された各PCIデバイス1(7)、2(8)内部のキャッシュラインサイズ1レジスタ(73)、2レジスタ(83)の値を、ドライバなどが書き換えると、そのまま何も対策を行わない場合、システム上の不整合によりシステムが正常動作しない。例えば、各PCIデバイス1(7)、2(8)に設定されたキャッシュラインサイズ1(73)、2(83)の値とカーネルが認識したCPUのキャッシュラインサイズが異なると、エラーを表示し、縮退させられる。
図3を参照する。上述した図4のステップS11に続き、本発明のブリッジ(1)では、ドライバによって、上記カーネルの設定値、64byteが、ブリッジ(1)内のレジスタ(キャッシュラインサイズコピー1レジスタ(11)、キャッシュラインサイズコピー2レジスタ(12))にコピーされる(図4のステップS12)。その後、PCIデバイス1(7)のドライバが、PCIデバイス1(7)の内部のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットをディスエーブルに設定する(図4のステップS13)。そして、ドライバが、ブリッジ(1)内のレジスタ(ラインサイズR/W1レジスタ(13))を介して、PCIデバイス1(7)内部のキャッシュラインサイズ1レジスタ(73)を128byteに書き換える(図4のステップS14)。以降、図5に示すように、カーネルからPCIデバイス1(7)の内部のキャッシュラインサイズ1レジスタ(73)へのアクセスには(図5のステップ9のステップS21で「YES」の場合)、キャッシュラインサイズコピー1レジスタ(11)を用いて、ブリッジ(1)が応答し(図5のステップS22)、PCIデバイス1(7)は切り離される。これにより、カーネルからは、PCIデバイス1(7)内部のキャッシュラインサイズ1レジスタ(73)が64byteから128byteに書き換えられたことを認識できず、システム上の不整合が生じることはなくなる。
なお、CPU(5)からのPCIデバイス1(7)へのキャッシュラインサイズ以外についてのコンフィグレーションレジスタへの問い合わせには(図5のステップS21で「NO」の場合)、ブリッジ(1)が、PCIデバイス1(7)に対してCPU(5)からの問い合わせ内容をプロトコルを変換して送信する(図5のステップS23)。そして、ブリッジ(1)が、PCIデバイス1(7)から回答を受信すると(図5のステップS24)、PCIデバイス1(7)からの回答内容をCPUに対してプロトコルを変換して送信する(図5のステップS25)。
図2を参照する。本発明のブリッジ(1)のPCIバス(6)に、上述した背景技術の第一の例と同様に、CPU、DMA転送用として、それぞれ128byte、4Kbyteのメモリリードバッファを有するPCIデバイス(7)が接続されたとする。
本実施形態では、PCIデバイス1(7)のキャッシュラインサイズレジスタ(キャッシュラインサイズ1レジスタ(73))の値が、システム上の不整合を生じさせることなく、64byteから128byteに書き換えられる。これにより、CPUバッファ(CPUバッファ1(71))のリード要求が、リードマルチプルからリードラインコマンドに変わり、さらに、リードラインの転送長が64byteから128byteになる。
また、PCIデバイス1(7)からのメモリリードマルチプルコマンドに対し4Kbyteの転送長がブリッジ(1)内の対応するレジスタ(リードマルチプルサイズ1レジスタ(15))に設定される。これにより、DMAバッファ(DMAバッファ1(72))のリード要求で使用されるリードマルチプルコマンドの転送長が4Kbyteになる。結果、本発明のブリッジ(1)により、このPCIデバイス1(7)のCPU、DMAのPCIバス、PCIeバス上でのメモリリード転送長を、このPCIデバイスのそれぞれのリードバッファサイズである128byte、4Kbyteに合わせることができ、転送効率を向上できる。
また、上述した背景技術の第二の例の場合の条件でも同様に、本発明により、PCIデバイス2(8)のキャッシュラインサイズ2レジスタ(83)の値が、64byteから8byteに書き換えられ、このPCIデバイス2(8)からの、メモリリードマルチプルコマンドに対し64byteの転送長がブリッジ(1)内の対応するレジスタ(リードマルチプルサイズ2レジスタ(16))に設定される。これにより、このPCIデバイス2(8)のCPU、DMAのPCIバス(6)、PCIeバス(2)上でのメモリリード転送長を、このPCIデバイス2(8)のそれぞれのリードバッファサイズである8byte、64byteに合わせることができ、転送効率を向上できる。
なお、本発明により、各アダプタ(PCIデバイス1(7)、PCIデバイス2(8))のコンフィグレーションレジスタ内のキャッシュラインサイズの値が書き換えられると、PCIのメモリライト・アンド・インバリデートコマンド(MWIコマンド)が不正に発行される場合があるため、PCIデバイスの内部のコンフィグレーションレジスタのコマンドレジスタのメモリライトアンドインバリデートイネーブルビットが、本発明によりディスエーブルに設定される。PCIe−to−PCIブリッジでは、PCIのメモリライト・アンド・インバリデートコマンド(MWIコマンド)を通常のメモリライトコマンドとして扱うため、コマンドレジスタのMWIイネーブルビットがディスエーブルにされても、システム性能に影響はない。PCIeのシステムでは、PCIのMWIコマンドによらず、ブリッジが、PCI上でメモリライトサイクルがキャッシュランサイズ長以下で分断されないよう、キャッシュラインサイズの大きさのライトバッファの空きを確保することで、キャッシュラインサイズ分のライトデータをPCIeの一つのパケットに収め、システム側(メモリコントローラ)が、PCIeのパケットのスタートアドレス、レングス情報から、ライトバックキャッシュをダーティにすることで、PCIのメモリライトアンドインバリデートコマンドの機能を実現している。
以上のように、本発明では、メモリリードライン、メモリリードマルチプルコマンドに対し、各PCIデバイスの転送パターンにあわせた転送長を設定することで、転送効率の最適化を図り、システム性能の向上を実現できる。
次に、本発明の他の実施形態について説明する。図6を参照すると、本発明の他の実施形態をブリッジ(1a)として構成している。なお、図6において、図1〜図3と同一の構成には同一の符号を用いている。リードラインサイズ1レジスタ(17)、リードラインサイズ2レジスタ(18)は、PCIデバイス1(7)、PCIデバイス2(8)においてリードラインコマンドで用いられるバッファのサイズに適するように、リードラインコマンドに対する転送長が設定されるレジスタである。PCI上でメモリリードライン要求が発生すると、ブリッジ(1a)は、REQ、GNTでPCIマスタを特定し、そのマスタに割り当てられた、リードラインサイズ1レジスタ(17)、リードラインサイズ2レジスタ(18)の値を、レングス値とするパケットをPCIe(2)に発信する。上記の図1〜図3を参照して説明した第一の実施形態では、リードラインコマンドが発生した場合に、ラインサイズR/W1レジスタ(13)またはラインサイズR/W2レジスタ(14)の値をレングス値とするパケットをPCIe(2)に発信することとしていたが、本実施形態ではリードラインサイズ1レジスタ(17)、リードラインサイズ2レジスタ(18)の値をレングス値とするパケットをPCIe(2)に発信する点が異なっている。リードラインサイズ1レジスタ(17)、リードラインサイズ2レジスタ(18)以外は、第一の実施形態と同様の構成、動作である。
図7を参照する。図7に示す構成では、図6のブリッジ(1a)に対して、PCIバス(6)を介して、PCIデバイス1(7)に代えて、PCIデバイス1(10)が接続されている。PCIデバイス1(10)は、CPU−A、CPU−B、DMA転送用として、それぞれ128byte、256byte、4KbyteのメモリリードバッファであるCPUバッファA1(101)、CPUバッファB1(102)、DMAバッファ1(103)を有している。本実施形態では、PCIデバイス1(10)のキャッシュラインサイズ1レジスタ(104)の値が、システム上の不整合を生じさせることなく、64byteから256byteに書き換えられる。また、このPCIデバイス1(10)からのメモリリードライン、メモリリードマルチプルコマンドに対し、128byte、4Kbyteの転送長がブリッジ(1a)内の対応するレジスタ(リードラインサイズ1レジスタ(17)、リードマルチプルサイズ1レジスタ(15))に設定される。これにより、CPU−A、CPU−B、DMAバッファ(CPUバッファA1(101)、CPUバッファB1(102)、DMAバッファ1(103))のリード要求が、128byte、2回の128byte、4Kbyteの転送となる。CPU−BよりCPU−Aの方が、メモリリードの頻度が高い場合、上記の第一の実施形態の様に、メモリリードラインコマンドの転送長を、本実施形態により変更された後のキャッシュラインサイズ1レジスタ(104)の値に固定することより、リードラインサイズ1レジスタ(17)で転送長を設定できるようにした方が、転送効率を向上できる。
以上のように、PCIでは、各PCIデバイスの構成、転送パターンにかかわらず、システムCPUのキャッシュラインサイズに合わせて、メモリリードデータ転送長が、固定されていた。本発明では、PCIeにブリッジを介してPCIデバイスが接続された場合、PCIeのシステムでは、キャッシュラインサイズに転送長を合わせる要求がないので、メモリリード転送長を、CPUのキャッシュラインサイズではなく、各PCIデバイスに最適な転送長に設定することで、各PCIデバイスのデータ転送効率を向上させることができる。より具体的には、本発明では、メモリリードライン、メモリリードマルチプルコマンドに対し、各PCIデバイスの転送パターンにあわせた転送長を設定することで、転送効率の最適化を図り、システム性能の向上を実現できる。
なお、本発明の実施の形態は上記に限定されず、ブリッジ(1)、(1a)に接続するPCIデバイスの個数を1個または3以上の複数個としたり、PCIデバイスに代えてPCI−to−PCIブリッジを接続するようにしたりする変更等を適宜行うことができる。ただし、その場合には、ブリッジ(1)、(1a)内のレジスタ(11)〜(18)の個数を対応するように変更しておく。また、ブリッジ(1)、(1a)を用いた制御を行うためのプログラムは、コンピュータ読み取り可能な記録媒体や通信回線を介して流通させることができる。
1、1a ブリッジ(バス接続装置)
2 PCIeバス
5 システムCPU
6 PCIバス
7、10 PCIデバイス1
8 PCIデバイス2
11 キャッシュラインサイズコピー1レジスタ
12 キャッシュラインサイズコピー2レジスタ
13 ラインサイズR/W1レジスタ
14 ラインサイズR/W2レジスタ
15 リードマルチプルサイズ1レジスタ
16 リードマルチプルサイズ2レジスタ
17 リードラインサイズ1レジスタ
18 リードラインサイズ2レジスタ
71 CPUバッファ1
72、103 DMAバッファ1
73、104 キャッシュラインサイズ1レジスタ
81 CPUバッファ2
82 DMAバッファ2
83 キャッシュラインサイズ2レジスタ
101 CPUバッファA1
102 CPUバッファB1
2 PCIeバス
5 システムCPU
6 PCIバス
7、10 PCIデバイス1
8 PCIデバイス2
11 キャッシュラインサイズコピー1レジスタ
12 キャッシュラインサイズコピー2レジスタ
13 ラインサイズR/W1レジスタ
14 ラインサイズR/W2レジスタ
15 リードマルチプルサイズ1レジスタ
16 リードマルチプルサイズ2レジスタ
17 リードラインサイズ1レジスタ
18 リードラインサイズ2レジスタ
71 CPUバッファ1
72、103 DMAバッファ1
73、104 キャッシュラインサイズ1レジスタ
81 CPUバッファ2
82 DMAバッファ2
83 キャッシュラインサイズ2レジスタ
101 CPUバッファA1
102 CPUバッファB1
Claims (6)
- 互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するバス接続装置であって、
前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を格納するものであって、かつ、該第1のレジスタに対する問い合わせに対して該第1のレジスタに代わって回答される値が格納される第2のレジスタを備える
ことを特徴とするバス接続装置。 - 前記デバイスからのメモリリード要求に応じて前記第1のバスに対して発信されるパケットのデータ長を格納する第3のレジスタを
さらに備えることを特徴とする請求項1に記載のバス接続装置。 - 前記第1のバスがPCIエクスプレスバスであり、
前記第2のバスがPCIバスであり、
前記第1のレジスタがキャッシュラインサイズレジスタである
ことを特徴とする請求項1又は2に記載のバス接続装置。 - 前記第1のバスがPCIエクスプレスバスであり、
前記第2のバスがPCIバスであり、
前記第1のレジスタがキャッシュラインサイズレジスタであり、
前記第3のレジスタがリードマルチプルコマンド又はリードラインコマンドに対する転送長を格納するレジスタである
ことを特徴とする請求項2に記載のバス接続装置。 - 互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するバス接続方法であって、
前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を第2のレジスタに格納する過程と、
前記第1のレジスタに対する問い合わせに対して該第1のレジスタに代えて前記第2のレジスタが格納する値を回答する過程と
を含むことを特徴とするバス接続方法。 - 互いに異なるメモリデータ転送プロトコルが規定された第1のバスと第2のバスとを接続するためのバス接続プログラムであって、
前記第2のバスに接続されるデバイスに搭載されていて該デバイスがメモリリードを要求する際に参照される値を格納する第1のレジスタと同一の値を第2のレジスタに格納する過程と、
前記第1のレジスタに対する問い合わせに対して該第1のレジスタに代えて前記第2のレジスタが格納する値を回答する過程と
をコンピュータによって実行させることを特徴とするバス接続プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010268111A JP2012118772A (ja) | 2010-12-01 | 2010-12-01 | バス接続装置、バス接続方法及びバス接続プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010268111A JP2012118772A (ja) | 2010-12-01 | 2010-12-01 | バス接続装置、バス接続方法及びバス接続プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012118772A true JP2012118772A (ja) | 2012-06-21 |
Family
ID=46501516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010268111A Pending JP2012118772A (ja) | 2010-12-01 | 2010-12-01 | バス接続装置、バス接続方法及びバス接続プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012118772A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010310A (zh) * | 2023-03-21 | 2023-04-25 | 广东华芯微特集成电路有限公司 | 一种sdr-sdram控制器及其控制方法 |
-
2010
- 2010-12-01 JP JP2010268111A patent/JP2012118772A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010310A (zh) * | 2023-03-21 | 2023-04-25 | 广东华芯微特集成电路有限公司 | 一种sdr-sdram控制器及其控制方法 |
CN116010310B (zh) * | 2023-03-21 | 2023-07-04 | 广东华芯微特集成电路有限公司 | 一种sdr-sdram控制器及其控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7958298B2 (en) | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment | |
US7526592B2 (en) | Interrupt control system and storage control system using the same | |
CN105224488B (zh) | 一种pci总线控制器及其控制方法 | |
US20040107265A1 (en) | Shared memory data transfer apparatus | |
US6636927B1 (en) | Bridge device for transferring data using master-specific prefetch sizes | |
US9003091B2 (en) | Flow control for a Serial Peripheral Interface bus | |
JP5209461B2 (ja) | 集積回路内のデバイス間のデータ転送 | |
WO2005091812A2 (en) | Pvdm (packet voice data module) generic bus protocol | |
JP2002278921A (ja) | 異なるバス獲得プロトコルを有するバス・マスタ間を調停するための方法及びシステム | |
WO2015169054A1 (zh) | 一种实现数据一致性的方法、装置及计算机存储介质 | |
KR20040091733A (ko) | Usb 호스트 제어기 | |
JP2003296267A (ja) | バスシステム及びバスシステムを含む情報処理システム | |
JP2006113689A (ja) | バスブリッジ装置およびデータ転送方法 | |
EP1746497B1 (en) | Apparatus and method for sparse line write transactions | |
US6754780B1 (en) | Providing data in response to a read command that maintains cache line alignment | |
JP6843508B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
US6996655B1 (en) | Efficient peer-to-peer DMA | |
WO2012124431A1 (ja) | 半導体装置 | |
JP2012118772A (ja) | バス接続装置、バス接続方法及びバス接続プログラム | |
KR20200143922A (ko) | 메모리 카드 및 이를 이용한 데이터 처리 방법 | |
JP2005520248A (ja) | Usbホストコントローラ | |
JP2011070372A (ja) | Dma転送制御装置 | |
WO2021093249A1 (zh) | 外部设备访问计算机内存的方法 | |
EP1742147B1 (en) | Microprocessor apparatus and method for enabling variable width data transfers | |
CN114641764A (zh) | 总线系统及操作总线系统的方法 |