(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、インタロックバスがリトライをサポートしないバスである場合、従来技術を適用することができない。また、スプリットバスがアウトオブオーダ転送をサポートするバスであっても、スプリットバスに接続されるデバイスやIPコアは、保留中のアウトバウンドのアクセス要求が一定数を超えた状態では、インバウンドのリード要求に対して応答(リードデータ)を返せない場合がある。
【0006】
そこで本発明の目的は、リトライ不可能なインタロックバスとスプリットバスを接続するブリッジ回路において、バス競合時のデッドロックを回避するバスシステムを提供することである。
【課題を解決するための手段】
【0007】
本願の請求項1に係る発明は、スプリットバスと第1のインタロックバスを接続するブリッジ回路を備えたバスシステムであって、第1のブリッジ回路と、第2のブリッジ回路と、を備え、前記第1のブリッジ回路は、前記スプリットバスの第1のチャネルと前記第1のインタロックバスを接続し、前記第2のブリッジ回路は、前記スプリットバスの第2のチャネルと前記第1のインタロックバスを接続し、前記スプリットバス側から前記第1のインタロックバス側へのアクセスは、前記第1のチャネルを通して、前記第1のブリッジ回路で処理し、前記第1のインタロックバス側から前記スプリットバス側へのアクセスは、前記第2のチャネルを通して、前記第2のブリッジ回路で処理
し、前記第1のブリッジ回路は、前記スプリットバス側からのアクセス要求を受信するバッファを備え、前記第1のインタロックバスは、前記第1のインタロックバスに接続された各バスマスタのバス使用権を調停する第1の調停回路を備え、前記第1の調停回路は、前記バッファが保持しているアクセス要求の数に応じて、前記第1のブリッジ回路を除く前記第1のインタロックバスの各バスマスタのバス使用権を制限する、ことを特徴とするインタロックバスとスプリットバスを接続するブリッジ回路を備えたバスシステムである。
【0009】
本願の請求項
2に係る発明は、前記第1のインタロックバスのバスマスタの少なくとも1つは、前記第1のインタロックバスと第2のインタロックバスを接続する第3のブリッジ回路であって、前記第2のインタロックバスは、前記第2のインタロックバスの各バスマスタのバス使用権を調停する第2の調停回路を備え、前期第3のブリッジ回路は、前記第1のインタロックバスから前記第2のインタロックバスへのアクセスと、前記第2のインタロックバスから前記第1のインタロックバスへのアクセスを処理し、前記第2の調停回路は、前記バッファが保持しているアクセス要求の数に応じて、前記第3のブリッジ回路を除く前記第2のインタロックバスの各バスマスタのバス使用権を制限する、ことを特徴とする請求項
1に記載のインタロックバスとスプリットバスを接続するブリッジ回路を備えたバスシステムである。
【0010】
本願の請求項
3に係る発明は、前記第1の調停回路は、前記バッファが保持しているアクセス要求の数が第1の閾値を超えた場合に、前記第1のブリッジ回路を除く前記第1のインタロックバスの各バスマスタのバス使用権を制限し、前記バッファが保持しているアクセス要求の数が第2の閾値を下回った場合に、前記第1のインタロックバスの使用制限を解除し、前記第2の調停回路は、前記バッファが保持しているアクセス要求の数が、第3の閾値を超えた場合に、前記第2のブリッジ回路を除く前記第2のインタロックバスの各バスマスタのバス使用権を制限し、前記バッファが保持しているアクセス要求の数が第4の閾値を下回った場合に、前記第2のインタロックバスの使用制限を解除し、前記第2の閾値は前記第1の閾値以下であり、前記第4の閾値は前記第3の閾値以下である、ことを特徴とする請求項
2に記載のインタロックバスとスプリットバスを接続するブリッジ回路を備えたバスシステムである。
【発明の効果】
【0011】
本発明の請求項1に係る発明によれば、リトライ不可能なインタロックバスとスプリットバスを接続するブリッジ回路において、バス競合時のデッドロックを回避することができ
、また、バッファが保持しているアクセス要求の数に応じて第1のインタロックバスを調停することで、インタロックバスとスプリットバスの競合時のデッドロックを回避しつつ、バッファにたまったスプリットバス側からインタロックバスへのアクセス要求が第1のインタロックバス上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【0013】
更に、本発明の請求項
2に係る発明によれば、第1のインタロックバスがさらに別の第2のインタロックバスと接続されている場合、第2の調停回路が第2のインタロックバスから第1のインタロックバスへのアクセスを制限することで、第1のインタロックバスの負荷を減らし、バッファにたまったスプリットバス側から第1のインタロックバス側へのアクセス要求が第1のインタロックバス上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【0014】
そして、本発明の請求項
3に係る発明によれば、第1・第3の閾値を大きくすることで調停への介入を最小限に抑えつつ、第2・第4の閾値を小さくすることで、バッファにたまったスプリットバス側からインタロックバス側へのアクセス要求が第1のインタロックバス上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態を図面と共に説明する。
<第1の実施形態>
本発明の第1の実施形態として、内部バスがインタロックバスで構成されたデバイスを、プリント基板上のスプリットバスでCPUなどの対向デバイスと接続するシステムにおいて、デバイス内部のインタロックバスにインタロックバスとスプリットバスをブリッジする2つのブリッジ回路を設けた構成を示す。
【0017】
図1は、本発明の一実施形態におけるバスシステムの回路構成を示す図である。
本実施形態のバスシステム1は、内部バスがインタロックバス20で構成されたデバイス10をプリント基板上のスプリットバス50によりCPUコア31,DMAC32などを備えた対向デバイス30と接続して構成されており、デバイス10内のインタロックバス20には、該インタロックバス20とスプリットバス50とを接続する2つのブリッジ回路11,12が設けられている。
【0018】
第1のブリッジ回路11は、スプリットバス50の1つのチャネル(第1のチャネル)を介して対向デバイス30に接続し、第2のブリッジ回路12は、スプリットバスの別のチャネル(第2のチャネル)を介して対向デバイス30に接続する。
そして、スプリットバス50側からインタロックバス20側へのアクセスは、第1のチャネルを通して、第1のブリッジ回路11で処理し、インタロックバス20側からスプリットバス50側へのアクセスは、第2のチャネルを通して、第2のブリッジ回路12で処理する。
【0019】
ここで、仮にブリッジ回路が対向デバイス30とスプリットバス50の1つのチャネルでしか接続されていない場合を考えると、インタロックバス20側からスプリットバス50側へのリード要求(または完了を保証するライト要求)が発生しているときに、スプリットバス50側からインタロックバス20側へのアクセス要求が頻発し、例えばスプリットバス50の未完了トランザクション数(アウトスタンディング数)の上限に達した場合や、対向デバイス30の送信バッファとブリッジ回路の受信バッファが埋まって空きがなくなった場合などに、スプリットバス50側からインタロックバス20側へのリード応答(またはライト完了通知)を返すことが出来なくなる。インタロックバス20側からのリード(または完了を保証するライト)が完了しないと、スプリットバス50側からのアクセス要求がインタロックバス20に出ることができないため、バスのデッドロックが生じる。
【0020】
図1に示したバスシステム1の回路構成では、インタロックバス20に2つのブリッジ回路11,12設け、対向デバイス30とスプリットバス50を2つのチャネルで接続し、スプリットバス50側からインタロックバス20側へのアクセスと、インタロックバス20側からスプリットバス50側へのアクセスを分離してそれぞれのブリッジ回路11,12で処理することにより、バス競合時のデッドロックを確実に回避することが出来る。
【0021】
ここでは、ブリッジ回路11,12と対向デバイス30をスプリットバス50の2つのチャネルで接続した例を示しているが、スプリットバス50側からインタロックバス20側へのアクセス、およびインタロックバス20側からスプリットバス50側へのアクセスを接続するチャネルはそれぞれ複数あってもよい。例えば、スプリットバス50側からインタロックバス20側へのアクセスを2つのチャネルで接続して、これに対してインタロックバス20側のブリッジ回路を2つ用意して処理することが考えられる。この場合、チャネルの使い分けとして、アクセスの優先度で使用するチャネルを分ける使い方が考えられる。
【0022】
また
図1では、内部バス20がインタロックバスとして構成されたデバイス10をプリント基板上のスプリットバス50で対向デバイス30と接続する例を示しているが、デバイス10と対向デバイス30とが分かれて構成されている必要はなく、一つのデバイスの内部が多段のバスで構成され、インタロックバスとスプリットバスと2つのブリッジ回路を含むバスシステム全体が1つのデバイス内に実装されているような場合も含まれる。
【0023】
また、上記の例ではデバイス内部バスがインタロックバスでデバイス間バスがスプリットバスであったが、その逆に、デバイス内部バスがスプリットバスでデバイス間バスがインタロックバスであってもよい。また、インタロックバスとスプリットバスがともにデバイス間バスで、ブリッジ回路のみがデバイス内部に実装される構造であってもよい。
【0024】
更に、ここでは対向デバイス30と物理的に2つのチャネルで接続する場合を示しているが、対向デバイス30が複数の論理チャネルを1つの物理チャネルで実現する機能をサポートしている場合には、この機能を使用することも出来る。このような機能の例としては、PCI Expressのバーチャルチャネルがある。PCI Expressは規格上は最大8チャネルのバーチャルチャネルをサポートし、実デバイスとしても複数のバーチャルチャネルを備える製品が存在している。この場合、物理的な接続は1つのチャネルとしつつ、複数のバーチャルチャネルを用いることにより、上記同様にバスの競合時のデッドロックを回避できる。
【0025】
<第2の実施形態>
本実施形態では、第1の実施形態に対して調停回路を加えた構成を示す。本実施形態におけるバスシステムの基本的構成は、第1の実施形態と同様に
図1に示した構成を備えている。
【0026】
本実施形態において、第1のブリッジ回路11は、前記スプリットバス50側からのアクセス要求を受信するバッファを備えた構成とする。該バッファは、
図1に示すように第1のブリッジ回路11の構成要素であるPCIe IPコア13のRXバッファを用いてもよいし、第1のブリッジ回路11内に別のバッファとして設けてもよい。
また、第1のインタロックバス20は、第1のインタロックバス20に接続された各バスマスタのバス使用権を調停する第1の調停回路17を備えた構成とする。そして、第1の調停回路17は、バッファが保持しているアクセス要求の数に応じて、第1のブリッジ回路11を除く第1のインタロックバス20の各バスマスタのバス使用権を制限する。
【0027】
本実施形態の構成によれば、バッファが保持しているアクセス要求の数に応じてインタロックバス20を第1の調停回路17が調停することで、インタロックバス20とスプリットバス50の競合時のデッドロックを回避しつつ、バッファにたまったスプリットバス50側からインタロックバス20へのアクセス要求がインタロックバス20上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【0028】
<第3の実施形態>
本実施形態では、第2の実施形態に対して更に別のインタロックバスと調停回路を加えた構成を示す。本実施形態におけるバスシステムの基本的構成は、第1の実施形態と同様に
図1に示した構成を備えている。
【0029】
第1のインタロックバス20のバスマスタの少なくとも1つが、第1のインタロックバス20と別のインタロックバス51を接続する第3のブリッジ回路18である場合において、第2のインタロックバス51は、第2のインタロックバス51の各バスマスタのバス使用権を調停する第2の調停回路19を備えた構成とする。
【0030】
第3のブリッジ回路18は、第1のインタロックバス20から第2のインタロックバス51へのアクセスと、第2のインタロックバス51から第1のインタロックバス20へのアクセスを処理し、第2の調停回路19は、バッファが保持しているアクセス要求の数に応じて、第3のブリッジ回路18を除く第2のインタロックバス51の各バスマスタのバス使用権を制限する。
【0031】
本実施形態の構成によれば、第1のインタロックバス20がさらに別のインタロックバス51と接続されている場合、第2の調停回路19が第2のインタロックバス51から第1のインタロックバス20へのアクセスを制限することで、第1のインタロックバス20の負荷を減らし、バッファにたまったスプリットバス50側から第1のインタロックバス20側へのアクセス要求が第1のインタロックバス20上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【0032】
<第4の実施形態>
本実施形態では、第2,3の実施形態における調停回路のより詳細な動作を示す。本実施形態におけるバスシステムの基本的構成は、第1の実施形態と同様に
図1に示した構成を備えている。
【0033】
本実施形態のバスシステム1では、第1の調停回路17は、バッファが保持しているアクセス要求の数が第1の閾値を超えた場合に、第1のブリッジ回路11を除く第1のインタロックバス20の各バスマスタのバス使用権を制限し、バッファが保持しているアクセス要求の数が第1の閾値を下回った場合に、第1のインタロックバス20の使用制限を解除するように制御する。
【0034】
また、第2の調停回路19は、バッファが保持しているアクセス要求の数が、第3の閾値を超えた場合に、第3のブリッジ回路18を除く第2のインタロックバス51の各バスマスタのバス使用権を制限し、バッファが保持しているアクセス要求の数が第4の閾値を下回った場合に、第2のインタロックバスの使用制限を解除する。
【0035】
ここで、第2の閾値は、第1の閾値以下に設定する。閾値の値としては、第1のブリッジ回路11のバッファ数にもよるが、例えばバッファ数がN=128の場合には、第1の閾値はP=32(<N)で、第2の閾値はQ=2(≦P)などとすればよい。
また、同様に第4の閾値は、第3の閾値以下に設定する。閾値の値としては、例えば第3の閾値はU=32(<N)で、第4の閾値はV=2(≦U)などとすればよい。
第1の調停回路17または第2の調停回路19の何れか一方にのみ、このような設定を適用することも出来るし、両方に適用してもよい。
【0036】
本実施形態の構成によれば、第1・第3の閾値を大きくすることで調停への介入を最小限に抑えつつ、第2・第4の閾値を小さくすることで、バッファにたまったスプリットバス50側からインタロックバス20側へのアクセス要求が第1のインタロックバス20上で優先的に処理され、アクセス要求が過剰にバッファにたまることを防ぐことができる。
【0037】
<その他の実施形態>
これまで説明してきた第1〜4の実施形態以外にも、次のような別の実施形態によっても、本発明の課題を解決することが出来る。
図2は、本実施形態におけるバスシステムの簡易の回路構成図である。
図2において、
図1の回路構成図に対応する構成については同一の符号を付与している。
【0038】
本実施形態では、スプリットバス50と第1のインタロックバス20をブリッジするブリッジ回路11に、インタロックバス20側からスプリットバス50側へのリード要求に対するリード応答とインタロックバス20側からスプリットバス50側へのリード要求が発生していない場合にスプリットバス50側から発生するアクセス要求(ターゲットアドレスやライトデータ)を処理する第1の経路と、インタロックバス20側からスプリットバス50側へのリード要求が発生している場合にスプリットバス50側から発生するアクセス要求を処理する第2の経路を設け、第1の経路と第2の経路をセレクタ回路21により選択される構成としている。
【0039】
また、インタロックバス20側からスプリットバス50側へのリード要求が発生している場合にスプリットバス50側から発生するアクセス要求を退避するバッファを第2の経路に設ける。バッファのサイズNとしては、1回のリード応答待ちでバッファに退避されるアクセス要求数の最大数に対して2倍以上とすることが望ましく、システム構成にも依存するが、例えば128とする。
【0040】
本実施形態のバスシステム1において、インタロックバス20からスプリットバス50へのリード要求があった場合、スプリットバス50からの応答(リードデータ)を受信するまで、スプリットバス50から受け取ったアクセス要求を第2の経路上に設けられたバッファに退避する。スプリットバス50側のデバイスまたはIPコアから見ると、アクセス要求がバッファに退避されると、そのアクセス要求はスプリットバス50上では完了したことになり、保留状態とはならない。このため、スプリットバス50側のデバイスまたはIPコアは、リード要求を受けると応答(リードデータ)を返すことができる。ブリッジ回路11は、スプリットバスからの応答を受信して、これをインタロックバス20に返し、インタロックバス20が解放されてから、バッファに退避していたスプリットバス50からのアクセス要求に従ってインタロックバス20にアクセスする。
【0041】
また、
図2に示すように、インタロックバス20に接続されている複数のバスマスタからのバス使用要求を調停する第1の調停回路17を設ける。第1の調停回路17は、バッファに退避されたスプリットバス50側からのアクセス要求の数に応じて、インタロックバス20側からのアクセスを制限し、インタロックバス20側へのアクセスを優先するように、インタロックバス20の調停を行う。
【0042】
更に、
図3に示すように、第1のインタロックバス20とデバイス外部の第2のインタロックバス51を接続する第3のブリッジ回路18が存在する構成において、第2のインタロックバス51の使用を調停する第2の調停回路19を設ける。第2の調停回路19は、バッファに退避されたスプリットバス50側からのアクセス要求の数に応じて、第2のインタロックバス51からの第1のインタロックバス20へのアクセスを制限し、第1のインタロックバス20の占有率を低減させるよう調停を行う。
【0043】
このような構成を備えたバスシステム1では、第1の調停回路17は、ブリッジ回路11内の第2の経路上に設けられたバッファに退避されたアクセス要求の数が、予め定められた第1の閾値を超えた場合に、第1のブリッジ回路11を除く第1のインタロックバス20の各バスマスタのバス使用権を制限し、ブリッジ回路内の第2の経路上に設けられたバッファに退避されたアクセス要求の数が予め定められた第2の閾値よりも減少した場合には、第1のインタロックバス20の使用制限を解除する。
第2の閾値は、第1の閾値よりも小さく設定する。例えば、第1の閾値はP=32(<N)で、第2の閾値はQ=2(<P)とする。
【0044】
同様に、第2の調停回路19は、ブリッジ回路11内の第2の経路上に設けられたバッファに退避されたアクセス要求の数が、予め定められた第3の閾値を超えた場合に、第3のブリッジ回路18を除く第2のインタロックバス51の各バスマスタのバス使用権を制限し、ブリッジ回路11内のバッファに退避されたアクセス要求の数が予め定められた第4の閾値よりも減少した場合には、第2のインタロックバス51の使用制限を解除する。
第4の閾値は、第3の閾値よりも小さく設定する。例えば、第3の閾値はU=32(<N)で、第4の閾値はV=2(<U)とする。
第1の調停回路17または第2の調停回路19の何れか一方にのみ、このような設定を適用することも出来るし、両方に適用してもよい。
【0045】
以上、本発明の実施の形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。