(58)【調査した分野】(Int.Cl.,DB名)
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御回路であって、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力する排他コマンド変換回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成する排他コマンド生成回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とするバス制御回路。
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御回路と、
前記第1バス仕様の内部回路と、
前記バス制御回路と前記内部回路の間で信号の受け渡しを行う内部接続回路と、
前記バス制御回路と前記第2バス仕様の外部バスの間で信号の受け渡しを行う外部接続回路と、を有し、
前記バス制御回路は、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力する排他コマンド変換回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成する排他コマンド生成回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とする半導体集積回路。
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御方法であって、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力し、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取り、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成し、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する、
ことを特徴とするバス制御方法。
【発明を実施するための形態】
【0016】
以下、本実施形態に係るバス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法の実施例を、添付図面を参照して詳述する。
図1は、本実施形態に係る情報処理装置の一例を示すブロック図である。
図1において、参照符号100はSoC(半導体集積回路)を示し、200はPCIe(登録商標)バスを示す。
【0017】
図1では、一例として、AXI(登録商標)仕様の2つのSoC(SoC#0,SoC#1)100がPCIeバス(PCIe)200で繋がれているが、SoC100の数は、2つに限定されず、また、SoC100の仕様は、AXIに限定されない。さらに、複数のSoC100を繋ぐバスも、PCIe200に限定されるものではない。
【0018】
なお、SoC100は、1つの半導体集積回路(チップ)として形成することもできるか、複数のチップとして形成することもできる。また、
図1において、回路基板300は、SoC100(コントローラ)およびメモリ101により形成され、複数の回路基板300により情報処理装置(例えば、サーバ装置)を形成しているが、本実施形態は、様々な構成に対して幅広く適用することが可能である。
【0019】
図1に示されるように、各回路基板300は、SoC100およびメモリ(例えば、DDR(Double-Data-Rate) Memory)101を含む。なお、回路基板300は、他の様々なチップ(半導体集積回路)を含んでもよい。SoC100は、バス制御回路(排他アクセス回路)1,CPU102,内部接続回路(Interconnect)103、メモリ接続回路(104,105)、外部接続回路(106,107)および様々なIP(IP(Intellectual Property)コア,IPマクロ)108を含む。
【0020】
メモリ接続回路は、例えば、メモリ(DDR Memory)101との接続を制御するメモリ制御回路(DDR Controller)104、および、メモリ101のインタフェースIPマクロ(DDR PHY)105を含む。外部接続回路は、例えば、PCIe200を介して他のSoC100(回路基板300)との接続(リンク)を制御するリンク制御回路(PCIe Link)106、および、PCIe200のインタフェースIPマクロ(PCIeの物理層:PCIe PHY)107を含む。
【0021】
内部接続回路103は、例えば、AXI仕様に基づいて、CPU102と、メモリ制御回路(DDR Controller)104,バス制御回路1およびIPマクロ108の間で信号(データおよびコマンド)の受け渡しを行う。なお、CPU102,メモリ制御回路104およびIPマクロ108等は、AXI仕様(内部バス仕様)の内部回路を形成する。ここで、バス制御回路1は、内部接続回路103によるAXI仕様の信号を受け取って変換し、外部接続回路(リンク制御回路106およびPCIeの物理層107)を介してPCIe(外部バス)200に出力する。また、バス制御回路1は、PCIe200から外部接続回路(106,107)を介して入力された信号を変換し、AXI仕様の内部接続回路103(CPU102,メモリ制御回路104およびIPマクロ108等)に出力する。
【0022】
バス制御回路1は、排他コマンド変換ブロックA-1、排他応答発行ブロックA-2、排他コマンド生成ブロックB-1、および、排他応答受信ブロックB-2を含み、それぞれのSoC100に設けられている。
【0023】
ここで、一方のSoC#0からPCIe200を介して他方のSoC#1に排他コマンドを出力するとき(SoC#0からSoC#1への排他アクセス発行時)、それぞれのSoC100におけるブロックA-1,A-2,B-1,B-2は次のように動作する。一方のSoC#0では、A-1およびB-2がオン(活性化)してA-2およびB-1がオフ(不活性化)し、他方のSoC#1では、A-1およびB-2がオフしてA-2およびB-1がオンする。
【0024】
なお、排他アクセスとは、例えば、SoC#0とSoC#1があるリソース(メモリ等)を共有する場合に、SoC#0がその共有リソースの特定部分(メモリの特定アドレス等)にアクセスしている間は、SoC#1がその共有リソースの特定部分にアクセスできないようにすることで、その共有リソースの整合性を保持するようにした排他制御を含むアクセスのことである。また、排他コマンドとは、その排他アクセスを要求するコマンドのことであり、例えば、排他リードコマンドと排他ライトコマンドを含む。
【0025】
一方、通常アクセスとは、例えば、上記排他制御を含まないアクセスである。また、通常コマンドとは、その通常アクセスを要求するコマンドのことであり、例えば、通常リードコマンドと通常ライトコマンドを含む。
【0026】
図2は、
図1に示す情報処理装置における半導体集積回路にそれぞれ設けられたバス制御回路の一例を示すブロック図である。
図2に示されるように、各半導体集積回路(SoC#0,SoC#1)100において、バス制御回路(PCIe Exclusive Access Unit)1は、内部接続回路103から、PCIe200に接続された外部接続回路106,107に信号を変換する第1変換部(Interconnect to PCIe Bus Bridge)11を含む。さらに、バス制御回路1は、PCIe200に接続された外部接続回路106,107から、内部接続回路103に信号を変換する第2変換部(PCIe to Interconnect Bus Bridge)12を含む。
【0027】
第1変換部11は、内部接続回路103からの排他コマンドを受け取って変換し、PCIe200に接続された外部接続回路106,107に出力するもので、コマンド変換ブロックA-1、排他応答発行ブロックA-2、および、セレクタ10を含む。
【0028】
ここで、コマンド変換ブロックA-1は、例えば、内部接続回路103から、半導体集積回路100内部の排他制御に適合したフォーマットを有するAXI仕様の排他コマンドを受け取り、PCIe仕様に適合した別フォーマットを有するAXI仕様の排他コマンドに変換して外部接続回路106,107に出力する回路である。
【0029】
また、排他応答発行ブロックA-2は、例えば、排他コマンド生成ブロックB-1から、内部接続回路103からのAXI仕様の排他コマンドに含まれる排他応答情報を受け取り、PCIe仕様に適合した排他応答情報を外部接続回路106,107に発行する回路である。なお、セレクタ10は、コマンド変換ブロックA-1または排他応答発行ブロックA-2の出力を選択して、PCIe200に出力する回路である。
【0030】
第2変換部12は、PCIe200からの排他コマンドを受け取って変換し、内部接続回路103に出力するもので、排他コマンド生成ブロックB-1および排他応答受信ブロックB-2を含む。
【0031】
ここで、排他コマンド生成ブロックB-1は、例えば、PCIe200に接続された外部接続回路106,107から、PCIe仕様に適合したフォーマットを有するAXI仕様の排他コマンドを受け取り、半導体集積回路100内部の排他制御に適合した別フォーマットを有するAXI仕様の排他コマンドを生成して内部接続回路103に出力する回路である。また、排他応答受信ブロックB-2は、外部接続回路106,107から、PCIe200に発行された排他コマンドに対する排他応答情報を受け取り、A-1に出力する回路である。
【0032】
次に、
図3〜
図9を参照して、本実施形態において排他アクセスを変換する異なる2種類のバス仕様として、PCIe(登録商標)およびAXI(登録商標)を適用する場合の例を説明し、その後、
図10〜
図23を参照して、本実施形態を詳述する。
【0033】
図3は、
図1に示す情報処理装置におけるPCIeのパケットのTLPヘッダを使用して排他コマンドを送信する例を説明するための図であり、AXIのMisc信号を入力する場合を説明するためのものである。ここで、Misc信号は、例えば、AXIにおいてユーザが定義することが可能なユーザ信号であり、種々の(miscellaneous)情報を伝播するために使用可能な信号である。なお、
図3は、PCIeのパケットのTLP(Transaction Layer Packet)ヘッダにおけるメモリ書き込み要求ヘッダ(Memory Write Request Header)、並びに、メモリ読み出しおよびアトミック操作要求ヘッダ(Memory Read and AtomicOp Request Headers)を示している。
【0034】
図1を参照して説明したように、例えば、一方のSoC#0から他方のSoC#1への排他アクセス発行時には、SoC#0では、ブロックA-1およびB-2がオンし、SoC#1では、A-2およびB-1がオンする。ここで、PCIeのTLPヘッダは、
図3に示されるような構成を有し、例えば、ユーザに開放されているTH(TLP Processing Hint present)ビット,ST[7:0]フィールドおよびPH(Processing Hint)ビットを使用して排他アクセスの変換を行う。なお、本明細書では、例えば、AXIにおける排他コマンドを組み込むPCIeのビットフィールドとして、TLPヘッダを使用した例を説明するが、これは、単なる例であり、PCIe仕様における様々なビットフィールドを使用することができる。
【0035】
すなわち、SoC#0では、PCIeのTLPヘッダにおけるTHビット,ST[7:0]フィールドおよびPHビットを、AXIのMisc信号のPCIeへの入力として扱うようになっている。SoC#0の外部接続回路106,107は、AXIのMisc信号のビット情報に基づいて、PCIeのTLPヘッダにおけるTHビット,ST[7:0]フィールドおよびPHビットを生成する。Misc信号は例えば、後述するAXIのARUSER[x:0]とAWUSER[x:0]を含む。
【0036】
また、SoC#1では、PCIeのTLPヘッダにおけるTHビット,ST[7:0]フィールドおよびPHビットのAXIへの入力として、AXIのMisc信号を扱うようになっている。ここで、SoC#1の外部接続回路106,107は、PCIeのTLPヘッダにおけるTHビット,ST[7:0]フィールドおよびPHビットのビット情報に基づいて、AXIのMisc信号を生成する。Misc信号は例えば、後述するAXIのARUSER[x:0]とAWUSER[x:0]を含む。
【0037】
なお、Misc信号入力として扱うビットは、PCIeのTLPヘッダにおけるTHビット,ST[7:0]フィールドおよびPHビットに限定されるものではなく、ユーザに開放されている他のビットを使用してもよい。さらに、排他アクセスの変換に使用するビットは、TLPヘッダにおけるものに限定されないのはもちろんである。
【0038】
図4および
図5は、AXIの基本構成を説明するための図である。
図4(a)に示されるように、AXIは、読み出し用のリードアドレス(AR)チャネル"Read address channel"およびリードデータ(R)チャネル"Read data channel"を含む。さらに、AXIは、書き込み用のライトアドレス(AW)チャネル"Write address channel",ライトデータ(W)チャネル"Write data channel"およびライト応答(B)チャネル"Write response channel"を含む。すなわち、AXIは、5つのチャネルを含んでいる。
【0039】
図4(b)は、AXIにおける読み出し動作を説明するためのものであり、
図4(c)は、AXIにおける書き込み動作を説明するためのものである。なお、
図4(b)および
図4(c)において、例えば、"AXI Master"としては、
図1のSoC#0におけるCPU102を想定し、"AXI Slave"としては、
図1のSoC#1におけるメモリ(DDR Memory)101を想定する。
【0040】
また、"AXI Master"と"AXI Slave"の間には、SoC#0における内部接続回路103,バス制御回路1および外部接続回路106,107、PCIe200、並びに、SoC#1における外部接続回路106,107および内部接続回路103等が介在する。
【0041】
図4(b)に示されるように、"AXI Master"から"AXI Slave"(SoC#1におけるメモリ101)のデータを読み出す場合、
図4(a)に示すARおよびRを使用する。また、
図4(c)に示されるように、"AXI Master"から"AXI Slave"にデータを書き込む場合、
図4(a)に示すAW,WおよびBを使用する。
【0042】
図5に示されるように、トランザクションの動作として、各チャネルは、バリッド(VALID)/レディ(READY)/伝送する情報(Information)の信号を含み、VALID/READYのハンドシェークで情報を受け渡す。ここで、CLKは、クロックを示す。
【0043】
まず、送信側は、情報とその情報が有効であることを示すVALID信号をアサートし(
図5のT1)、受信側は、その有効な情報を受け取れることを示すためにREADYをアサートする。例えば、VALIDおよびREADYが共に高レベル『H』である時のクロックエッジでハンドシェーク成立する。なお、送信側は、
図5のT2まで、InformationとVALIDを保持する。このようにして、情報の受け渡しが完了する。
【0044】
図6は、AXIにおける信号の例を説明するための図である。本実施形態では、例えば、太枠で囲った信号ARLOCK[1:0],ARUSER[x:0],RRESP[1:0],AWLOCK[1:0],AWUSER[x:0]およびBRESP[1:0]を使用する。ここで、ARLOCK[1:0]は、アトミックアクセスを示し、通常/排他/ロックアクセスを指定する信号(AXI3(AXIのバージョン3)のみ)であり、ARUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の1つである。また、RRESP[1:0]は、読み出し応答(リード応答)を示し、リード転送の結果ステータスを示す信号である。なお、[x:0]は任意のビット幅であることを表す。
【0045】
さらに、AWLOCK[1:0]は、アトミックアクセスを示し、通常/排他/ロックアクセス(AXI3のみ)を指定する信号であり、AWUSER[x:0]は、ユーザ信号であり、ユーザが定義することが可能な信号であって、上述したMisc信号の1つである。また、BRESP[1:0]は、書き込み応答(ライト応答)を示し、ライト転送の結果ステータスを示す信号である。
【0046】
図7は、AXIにおける排他アクセスの一例を説明するための図である。
図7(a)に示されるように、2ビットの信号AxLOCK[1:0]の値『00』,『01』,『10』および『11』は、それぞれ『通常アクセス』,『排他アクセス』,『ロックアクセス』および『予約済み(Reserved)』を示す。なお、AxLOCK[1:0]は、ARLOCK[1:0]およびAWLOCK[1:0]の両方を示す。また、AxLOCK[1:0]の値『10』は、AXI4(AXIのバージョン4)では削除されている。
【0047】
図7(b)は、マスタ0(Master 0:例えば、SoC#0のCPU102)によるスレーブ0(Slave 0:例えば、SoC#0のメモリ101)のアクセスと、マスタ1(Master 1:例えば、SoC#1のCPU102)によるスレーブ0のアクセスが競合する場合を示す。なお、スレーブ1(Slave 1)は、例えば、SoC#1のメモリ101が対応する。
【0048】
図7(b)に示されるように、排他アクセスは、例えば、マスタ0およびマスタ1による特定のアドレス(SoC#0のメモリ101)へのアクセスが競合する場合に、例えば、セマフォ型の処理により実現することが可能である。ここで、排他アクセスの実現には、スレーブ0(SoC#0のメモリ101)に対して、排他アクセスモニタを設けることが求められる。ここで、
図7(b)に示すSlave 0の排他アクセスモニタは、Slave 0をアクセスするアドレスを監視し、例えば、Master 0からSlave 0への排他アクセス中に、Master 1がSlave 0の別のアドレスにはアクセス可能とすることができる。
【0049】
図8は、AXIにおいて使用される応答を説明するための図である。
図8に示されるように、例えば、AXIで使用されるレスポンス(応答)は、2ビットのRRESP[1:0]およびBRESP[1:0]の値『00』,『01』,『10』および『11』に対して、"OKAY","EXOKAY","SLVERR"および"DECERR"の4種類ある。
【0050】
ここで、"OKAY"は、通常アクセス成功もしくは排他アクセス失敗を示し、"EXOKAY"は、排他読み出し、または、排他書き込みのいずれかが成功したことを示し、そして、"SLVERR"は、スレーブエラーを示し、スレーブからマスタへのエラー通知である。また、"DECERR"は、デコードエラーを示し、アクセス先のアドレスにスレーブが存在しないことを示し、通常、インターコネクトが生成する。
【0051】
すなわち、ライト(書き込み)の場合、バースト全体に対して、1つの応答を返し、また、リード(読み出し)の場合、バースト内のデータ転送ごとに応答を返すようになっている。ここで、データ転送ごとに異なる応答を返すことが可能であり、また、途中でエラーが発生しても、要求された回数の転送をすることが求められる。
【0052】
図9は、AXIにおける排他アクセスの動作を説明するための図である。ここで、排他アクセスの動作において、基本は、セマフォアクセス(リード・モディファイ・ライト)である。
【0053】
図9(a)に示されるように、マスタが排他リードを実施(ARLOCK[0:1]=『01』)すると、排他モニタは、アドレスとIDを保存し、スレーブは"EXOKAY"で、リードデータを返す。なお、排他アクセスに対応しないスレーブは、"OKAY"を返すことで、マスタに非対応であることを通達することができる。
【0054】
図9(b)に示されるように、マスタがデータのモディファイ(modify)を実施すると、この間、排他モニタは、セマフォ領域が他のマスタによって書き換えられないかを監視する。なお、排他モニタは、他のマスタ(ID)からの書き込みや、他のアドレスへの排他リードが発生しない限り監視を続行する。
【0055】
図9(c)に示されるように、マスタが更新後のデータを排他ライト(AWLOCK[0:1]=『01』)すると、排他モニタは、同じアドレスを監視中であれば、排他性が保証されるため、ライトを実施し、"EXOKAY"を返す。また、排他モニタは、そのアドレスを監視中でなければ、排他性が保証されないため、ライト動作は行わずに"OKAY"を返すことになる。
【0056】
ところで、PCIeには、排他制御の機能が設けられていないため、例えば、AXIが適用された2つのSoC#0とSoC#1をPCIeにより接続したシステム(情報処理装置)では、適切な排他制御を行うことが難しい。
【0057】
図10は、
図1に示す情報処理装置におけるリードアクセス動作の一例を説明するための図である。
図11は、
図10に示す情報処理装置における排他リードアクセス動作の一例を説明するための図であり、排他リードアクセス動作におけるAXIコマンドの変換を説明するためのものである。
【0058】
図10および
図11において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはAXIであり、排他リードアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはPCIeであり、排他リードアクセスに対応していない。なお、
図11において、『xxxx』はリードデータを示し、『yy』は排他応答を示す。また、Misc信号としては、ARUSER[x:0]を使用(例えば、排他アクセス=『1』)する。
【0059】
図10および
図11に示されるように、まず、SoC#0のCPU102(CPU#0)から排他リードアクセス(排他リードコマンド)を発行し(処理S1)、排他コマンド変換ブロックA-1により排他リードコマンドを保持する(処理S2:AR ARLOCK=『01』)。次に、A-1により、AXIのMisc信号に排他リード情報をセットする(処理S3:AR ARUSER=『1』)。さらに、A-1から、例えば、SoC#0の外部接続回路(リンク制御回路106およびPCIe PHY107:PCIe#0)に対して、通常リードコマンド(Misc信号付き)を発行する(処理S4:AR ARLOCK=『00』,ARUSER=『1』)。
【0060】
そして、PCIe#0(SoC#0の外部接続回路)からPCIe#1(SoC#1の外部接続回路)に、ヘッダ情報に排他制御情報を含むリードコマンドを発行し(処理S5)、PCIe#1から排他コマンド生成ブロックB-1に通常リードコマンド(Misc信号付き)を発行する(処理S6:AR ARLOCK=『00』,ARUSER=『1』)。また、B-1により通常リードコマンド(Misc信号付き)を保持し(処理S7)、Misc信号の排他リード情報から排他リードコマンドを生成する(処理S8)。
【0061】
次に、B-1からSoC#1のメモリ101(DDR#1)に排他リードコマンドを発行し(処理S9:AR ARLOCK=『01』)、DDR#1が排他リード応答を発行し(処理S10)、そして、B-1により排他リード応答を保持する(処理S11:R RDATA=『xxxx』,RRESP=『yy』)。
【0062】
さらに、B-1から、通常リードコマンドの応答としてリードデータ(Read Data)をPCIe#1に出力し(処理S12:R RDATA=『xxxx』,RRESP=『00』)、B-1から、保持された排他リード応答に基づいて、排他リード応答であることを示す識別情報(排他リード応答情報)を排他応答発行ブロックA-2に発行する(処理S13:R RRESP=『yy』)。また、A-2により、排他リード応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1 は、通常ライトコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理S14:AW AWLOCK=『00』,W WDATA=『yy』,B BRESP=『00』)。
【0063】
そして、PCIe#1からPCIe#0にリードデータ(Read Data)/ライトデータ(Write Data)を転送し(処理S15)、PCIe#0からA-1に通常リードコマンドに対するリードデータを転送する(処理S16:R RDATA=『xxxx』,RRESP=『00』)。また、PCIe#0から排他応答受信ブロックB-2に排他リード応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、通常ライトの成功を示す応答をPCIe#0に発行する(処理S17:AW AWLOCK=『00』,W WDATA=『yy』,B BRESP=『00』)。さらに、B-2からA-1に排他リード応答情報を転送し(処理S18:W WDATA=『yy』)、A-1によりリードデータ/排他リード応答情報をマージし、排他リード応答をCPU#0に転送する(処理S19:R RDATA=『xxxx』,RRESP=『yy』)。
【0064】
以上のようにして、例えば、排他リード機能が用意されていないPCIeを介して接続された、2つの排他リード機能を有するAXI仕様の半導体集積回路(SoC)間における排他リード処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【0065】
図12は、
図1に示す情報処理装置におけるライトアクセス動作の一例を説明するための図である。
図13は、
図12に示す情報処理装置における排他ライトアクセス動作の一例を説明するための図であり、排他ライトアクセス動作におけるAXIコマンドの変換を説明するためのものである。
【0066】
図12および
図13において、SoC#0およびSoC#1の内部でコマンドや各種情報の受け渡しに使用されるバスはAXIであり、排他ライトアクセスに対応している一方、SoC#0とSoC#1の間でコマンドや各種情報の受け渡しに使用されるバスはPCIeであり、排他ライトアクセスに対応していない。なお、
図13において、『xx』はライトデータを示し、『yy』は排他応答を示す。また、Misc信号としては、AWUSER[x:0]を使用(例えば、排他アクセス=『1』)する。
【0067】
図12および
図13に示されるように、まず、CPU#0(SoC#0のCPU102)から排他ライトアクセス(排他ライトコマンド)を発行し(処理S21)、排他コマンド変換ブロックA-1により排他ライトコマンドを保持する(処理S22:AW AWLOCK=『01』,W WDATA=『xx』)。次に、A-1により、AXIのMisc信号に排他ライト情報をセットする(処理S23)。さらに、A-1から、例えば、PCIe#0(SoC#0の外部接続回路106,107)に対して、通常ライトコマンド(Misc信号付き)を発行する(処理S24:AW AWLOCK=『00』,AWUSER=『1』,W WDATA=『xx』)。
【0068】
そして、PCIe#0からPCIe#1にヘッダ情報に排他制御情報を含むライトコマンドを発行し(処理S25)、PCIe#1から排他コマンド生成ブロックB-1に通常ライトコマンド(Misc信号付き)を発行し、B-1は通常ライトコマンド(Misc信号付き)を受け取り、PCIe#1に受け取り成功を示す応答を発行する(処理S26:AW AWLOCK=『00』,AWUSER=『1』,W WDATA=『xx』,B BRESP=『00』)。また、B-1により通常ライトコマンド(Misc信号付き)を保持し(処理S27)、Misc信号の排他ライト情報から排他ライトコマンドを生成する(処理S28)。
【0069】
次に、B-1からDDR#1(SoC#1のメモリ101)に排他ライトコマンドを発行し(処理S29:AW AWLOCK=『01』,W WDATA=『xx』)、DDR#1が排他ライト応答を発行し(処理S30)、そして、B-1により排他ライト応答を保持する(処理S31:B BRESP『yy』)。
【0070】
さらに、B-1から、保持された排他ライト応答に基づいて、排他ライト応答であることを示す識別情報(排他ライト応答情報)を排他応答発行ブロックA-2に発行し(処理S32:B BRESP『yy』)、A-2により、排他ライト応答情報をライトデータ(Write Data)とする通常ライトコマンドをPCIe#1に発行し、PCIe#1通常ライドコマンドを受け取り、A-2に通常ライトの成功を示す応答を発行する(処理S33: AW AWLOCK=『00』,W WDATA=『yy』,B BRESP=『00』)。
【0071】
また、PCIe#1からPCIe#0にライトデータを転送し(処理S34)、PCIe#0から排他応答受信ブロックB-2に排他ライト応答情報をライトデータとする通常ライトコマンドを発行し、B-2は通常ライトコマンドを受け取り、PCIe#0に通常ライトの成功を示す応答を発行する(処理S35: AW AWLOCK=『00』,W WDATA=『yy』,B BRESP=『00』)。そして、B-2からA-1に排他ライト応答情報を転送し(処理S36)、A-1により排他ライト応答をCPU#0に転送する(処理S37:B BRESP=『yy』)。
【0072】
以上のようにして、例えば、排他ライト機能が用意されていないPCIeを介して接続された、2つの排他ライト機能を有するAXI仕様の半導体集積回路(SoC)間における排他ライト処理を実現することが可能になる。すなわち、異なる仕様のバス間においても排他アクセスの伝搬を可能とすることができる。
【0073】
図14は、
図10および
図11に示す情報処理装置における排他リードアクセス動作の他の例を説明するための図であり、AXIのMisc信号を使わずに排他リードアクセス動作を行う例を説明するためのものである。
【0074】
図14と、前述した
図11の比較から明らかなように、Misc信号を使わずに排他リードアクセス動作を行う本変形例では、
図11に示す処理S1〜S19に加えて、さらなる処理S4'およびS6'が設けられている。
【0075】
すなわち、排他コマンド変換ブロックA-1からPCIe#0に対して、通常リードを発行する処理S4(AR ARLOCK=『00』,ARUSER=『1』)と共に、処理S4'を行う。処理S4'では、A-1からPCIe#0に対して、例えば、AW AWLOCK=『00』,W WDATA=『1』とすることにより、排他リード情報をAXIの通常ライトコマンドとして発行する。そして、PCIe#0は、通常ライトコマンドを受け取り、A-1に受け取り成功を示す応答を発行する。
【0076】
さらに、PCIe#1から排他コマンド生成ブロックB-1に通常リードを発行する処理S6(AR ARLOCK=『00』,ARUSER=『1』)と共に、処理S6'を行う。処理S6'では、PCIe#1からB-1に対して、例えば、AW AWLOCK=『00』,W WDATA=『1』とすることにより、排他リード情報をAXIの通常ライトコマンドとして発行し、B-1は、通常ライトコマンドを受け取り、PCI#1に受け取り成功を示す応答を発行する。
【0077】
そして、B-1は、通常リードコマンド(処理S6)と排他リード情報の通常ライトコマンド(処理S6')から、AXIの排他リードコマンドを生成する。同様に、排他ライトアクセス動作もMisc信号を使用することなく実現することが可能である。このように、PCIeのMisc信号を使用せずに排他アクセス処理を実現することができる。
【0078】
図15は、本実施形態に係る情報処理装置の他の例を示すブロック図であり、AXI仕様の3つのSoC(SoC#0,SoC#1,SoC#2)100がPCIe200で繋がれた情報処理装置の例を示すものである。すなわち、
図15と、前述した
図1の比較から明らかなように、
図15に示す情報処理装置は、
図1に示す情報処理装置に対して、SoC#2を追加したものに対応する。
【0079】
ここで、SoC#2およびメモリ101による回路基板300は、例えば、マザーボードに相当し、このマザーボード(SoC#2)のソケットに対して、2つの回路基板300(SoC#0,SoC#1)を差し込んだものに相当する。このとき、SoC#0〜SoC#2には、それぞれのSoC(半導体集積回路)を識別するための番号(SoC番号)、或いは、SoC#0〜SoC#1には、SoC100が搭載された回路基板300を識別するためのポート番号(マザーボード(SoC#2)のソケットに相当する番号)が割り当てられる。
【0080】
なお、
図15は、例えば、SoC#0のCPU102が、SoC#1に接続されたメモリ101をアクセスする場合を想定したもので、SoC#0のバス制御回路1におけるブロックA-1およびB-2と、SoC#1のバス制御回路1におけるブロックA-2およびB-1が活性化(オン)されている。また、SoC#2には、2組の外部接続回路(106,107)およびバス制御回路1が設けられているが、SoC#0とSoC#1間のアクセス時には、それぞれのバス制御回路1におけるA-1,A-2,B-1,B-2は全て不活性化(オフ)されている。さらに、SoC100(回路基板300)の数は、2個または3個に限定されるものではなく、さらに多数のSoC(回路基板)が接続されてもよいのは、前述した通りである。
【0081】
図16は、
図2に示すバス制御回路(排他アクセス回路)におけるリードチャネルの排他コマンド変換ブロックの一例を説明するための図である。
図16に示されるように、排他コマンド変換ブロックA-1は、
図10および
図11を参照して説明したリードアクセス動作時に、リードアドレス(AR)チャネルの変換処理を行うブロックA-11およびリードデータ(R)チャネルの変換処理を行うブロックA-12を含む。
【0082】
ブロックA-11は、
図10および
図11における処理S1により、CPU#0(内部接続回路103)からS_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK,D_A1_ARID[x]およびD_A1_ARUSER[0]に変換してPCIe#0に出力する(処理S4)。なお、以下に詳述するように、S_A1_ARLOCKおよびS_A1_ARADDRは、D_A1_ARLOCKおよびD_A1_ARADDRとして使用する。
【0083】
すなわち、A-11は、S_A1_ARLOCK=『01』(排他アクセス)のとき、D_A1_ARLOCK=『00』(通常アクセス)、D_A1_ARID[x]=『1』(Rチャネルでの排他コマンド識別用に、xビットのARID[x-1:0]に付加)、および、D_A1_ARUSER[0]=『1』(排他コマンド情報)をPCIe#0に出力する。また、A-11は、S_A1_ARLOCK=『01』のとき、D_A1_ARADDRの値を、B2_ARADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【0084】
さらに、A-11は、S_A1_ARLOCK=『01』ではないとき、S_A1_ARLOCKおよびS_A1_ARADDRを受け取り、D_A1_ARLOCK=S_A1_ARLOCK、D_A1_ARID[x]=『0』、および、D_A1_ARUSER[0]=『0』に変換してPCIe#0に出力する。
【0085】
ブロックA-12は、
図10および
図11における処理S16により、PCIe#0からS_A1_RID[x]およびS_A1_RRESPを受け取り、D_A1_RRESPに変換して内部接続回路103(CPU#0)に出力する(処理S19)。すなわち、A-12は、S_A1_RID[x]=『1』のとき、D_A1_RRESP=B2_RRESP(排他応答値)をCPU#0に出力する。また、A-12は、S_A1_RID[x]=『0』のとき、D_A1_RRESP=S_A1_RRESPをCPU#0に出力する。なお、B-2は、A-12に対して、B2_RRESPを出力する。
【0086】
図17は、
図2に示すバス制御回路におけるライトチャネルの排他コマンド変換ブロックの一例を説明するための図である。
図17に示されるように、排他コマンド変換ブロックA-1は、
図12および
図13を参照して説明したライトアクセス動作時に、ライトアドレス(AW)チャネルの変換処理を行うブロックA-13,ライトデータ(W)チャネルの変換処理を行うブロックA-14およびライト応答(B)チャネルの変換処理を行うブロックA-15を含む。
【0087】
ブロックA-13は、
図12および
図13における処理S21により、CPU#0からS_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK,D_A1_AWID[x]およびD_A1_AWUSER[0]に変換してセレクタ10(PCIe#0)に出力する(処理S22〜S24)。ここで、以下に詳述するように、S_A1_AWLOCKおよびS_A1_AWADDRは、D_A1_AWLOCKおよびD_A1_AWADDRとして使用する。
【0088】
すなわち、A-13は、S_A1_AWLOCK=『01』(排他アクセス)のとき、D_A1_AWLOCK=『00』(通常アクセス)、D_A1_AWID[x]=『1』(Bチャネルでの排他コマンド識別用に、xビットのAWID[x-1:0]に付加)、および、D_A1_AWUSER[0]=『1』(排他コマンド情報)をセレクタ10に出力する。また、A-13は、S_A1_AWLOCK=『01』のとき、D_A1_AWADDRの値を、B2_AWADDR(コマンド識別用)として、排他応答受信ブロックB-2に転送する。
【0089】
さらに、A-13は、S_A1_AWLOCK=『01』ではないとき、S_A1_AWLOCKおよびS_A1_AWADDRを受け取り、D_A1_AWLOCK=S_A1_AWLOCK、D_A1_AWID[x]=『0』、および、D_A1_AWUSER[0]=『0』に変換してセレクタ10に出力する。ここで、排他アクセスか否かを示すS_A1_AWLOCKは、2ビットのデータ(『01』)とされているが、1ビットのデータ(『0』または『1』)であってもよい。
【0090】
ブロックA-14は、
図12および
図13における処理S21により、CPU#0からS_A1_AWLOCKを受け取り、D_A1_WID[x]に変換してセレクタ10(PCIe#0)に出力する(処理S22〜S24)。すなわち、A-14は、S_A1_AWLOCK=『01』(排他アクセス)のとき、D_A1_WID[x]=『1』(AWチャネルと合わせるため)とし、S_A1_AWLOCK=『01』ではないとき、D_A1_WID[x]=『0』とする。なお、A-14の出力(D_A1_WID[x])は、セレクタ10に入力される。
【0091】
ブロックA-15は、S_A1_BID[x]およびS_A1_BRESPを受け取り、D_A1_BRESPに変換して内部接続回路103(CPU#0)に出力する(処理S37)。すなわち、A-15は、S_A1_BID[x]=『1』のとき、D_A1_BRESP=B2_BRESP(排他応答値)をCPU#0に出力し、S_A1_BID[x]=『0』のとき、D_A1_BRESP=S_A1_BRESPをCPU#0に出力する。ここで、排他応答受信ブロックB-2は、A-15に対して、B2_BRESPを出力する。また、セレクタ10には、排他応答発行ブロックA-2の出力(AW,WおよびBチャネルの出力)も入力され、例えば、
図21を参照して後に詳述する排他応答発行識別信号(SS)を受信したときは、A-2の出力を選択し、そうでないときは、A-1の出力を選択する。
【0092】
図18は、
図2に示すバス制御回路における排他応答受信ブロックの一例を説明するための図である。
図18に示されるように、排他応答受信ブロックB-2は、
図10〜
図13を参照して説明したアクセス動作時に、排他コマンド変換ブロックA-1およびPCIe#0との間で信号の遣り取りおよび変換を行う3つのブロックB-21,B-22およびB-23を含む。
【0093】
ブロックB-21は、排他コマンド変換ブロックA-1からB2_ARADDRおよびB2_AWADDRを受け取ると共に、PCIe#0のAWチャネルからS_B2_AWADDRを受け取り、排他応答受信識別信号(SR)を生成してB-22に出力する。すなわち、B-21では、S_B2_AWADDRがB2_ARADDRまたはB2_AWADDRと合致した場合、A-1から発行した排他コマンドに対する排他応答であると判定し、排他応答受信識別信号SRをB-22に出力する。
【0094】
ブロックB-22は、PCIe#0からのWチャネルを介してS_B2_WDATAを受け取り、B-21からの排他応答受信識別信号SRに基づいて、S_B2_WDATAをB2_RRESPおよびB2_BRESPに変換してA-1に出力する。すなわち、排他応答受信識別信号SRにより、A-1から発行した排他コマンドに対する排他応答であることが分かったら、S_B2_WDATAに乗っている排他応答値をB2_RRESPまたはB2_BRESPとしてA-1に転送する。なお、ブロックB-23は、PCIe#0からのライト応答(B)チャネルの情報を受け取るブロックであるが、本実施形態と関係が薄いので、その説明は省略する。
【0095】
図19は、
図2に示すバス制御回路におけるリードチャネルの排他コマンド生成ブロックの一例を説明するための図である。
図19に示されるように、排他コマンド生成ブロックB-1は、
図10および
図11を参照して説明したリードアクセス動作時に、ARチャネルの変換処理を行うブロックB-11およびRチャネルの変換処理を行うブロックB-12を含む。
【0096】
ブロックB-11は、
図10および
図11における処理S6として、PCIe#1からS_B1_ARLOCK,S_B1_ARADDRおよびS_B1_ARUSERを受け取り、D_B1_ARLOCKおよびD_B1_ARID[y]に変換して内部接続回路103(DDR#1)に出力する(処理S7〜S10)。
【0097】
すなわち、B-11は、S_B1_ARUSER[0]=『1』(排他コマンド)のとき、D_B1_ARLOCK=『01』(排他コマンド)、および、D_B1_ARID[y]=『1』(Rチャネルでの排他コマンド識別用に、yビットのARID[y-1:0]に付加)をDDR#1に出力する。また、B-11は、S_B1_ARUSER=『1』のとき、D_B1_ARADDRの値を、A2_ARADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-11は、S_B1_ARUSER[0]=『0』のとき、D_B1_ARLOCK=S_B1_ARLOCK、および、D_B1_ARID[y]=『0』をDDR#1に出力する。
【0098】
ブロックB-12は、
図10および
図11における処理S11として、S_B1_RRESPおよびS_B1_RID[y]を受け取り、D_B1_RRESPに変換してPCIe#1に出力する(処理S12)。すなわち、B-12は、S_B1_RID[y]=『1』のとき、D_B1_RRESP=『00』、および、A2_RRESP=S_B1_RRESP(排他応答値)をPCIe#1に出力する。さらに、B-12は、A-2に対して、A2_RRESPを出力する。
【0099】
図20は、
図2に示すバス制御回路におけるライトチャネルの排他コマンド生成ブロックの一例を説明するための図である。
図20に示されるように、排他コマンド生成ブロックB-1は、
図12および
図13を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックB-13,Wチャネルの変換処理を行うブロックB-14およびBチャネルの変換処理を行うブロックB-15を含む。
【0100】
ブロックB-13は、
図12および
図13における処理S26により、PCIe#1からS_B1_AWLOCK,S_B1_AWADDRおよびS_B1_AWUSER[0]を受け取り、D_B1_AWLOCKおよびD_B1_AWID[y]に変換して内部接続回路103(DDR#1)に出力する(処理S27〜S30)。
【0101】
すなわち、B-13は、S_B1_AWUSER[0]=『1』(排他コマンド)のとき、D_B1_AWLOCK=『01』(排他コマンド)、D_B1_AWID[y]=『1』(Bチャネルでの排他コマンド識別用に、yビットのAWID[y-1:0]に付加)、および、D_B1_AWADDRの値を、A2_AWADDR(コマンド識別用)として、排他応答発行ブロックA-2に転送する。さらに、B-13は、S_B1_AWUSER[0]=『0』のとき、D_B1_AWLOCK=S_B1_AWLOCK、および、D_B1_AWID[y]=『0』をDDR#1に出力する。
【0102】
ブロックB-15は、S_B1_BRESPおよびS_B1_BID[y]を受け取り、D_B1_BRESPに変換してPCIe#1に出力する。すなわち、B-15は、S_B1_BID[y]=『1』のとき、D_B1_BRESP=『00』、および、A2_BRESP=S_B1_BRESP(排他応答値)をPCIe#1に出力する。さらに、B-15は、A-2に対して、A2_BRESPを出力する。
【0103】
また、B-15は、S_B1_BID[y]=『0』のとき、D_B1_BRESP=S_B1_BRESPをPCIe#1に出力する。なお、ブロックB-14は、PCIe#1からのWチャネルのデータをそのまま通過させてDDR#1に出力する。
【0104】
図21は、
図2に示すバス制御回路におけるライトチャネルの排他応答発行ブロックの一例を説明するための図である。
図21に示されるように、排他応答発行ブロックA-2は、
図12および
図13を参照して説明したライトアクセス動作時に、AWチャネルの変換処理を行うブロックA-21,Wチャネルの変換処理を行うブロックA-22およびBチャネルの変換処理を行うブロックA-23を含む。
【0105】
ブロックA-21は、
図12および
図13における処理S32により、排他コマンド生成ブロックB-1からB1_ARADDRおよびB1_AWADDRを受け取り、D_A2_AWADDRに変換してセレクタ10(PCIe#1)に出力する(処理S13)。すなわち、A-21は、後述するブロックA-22からの排他応答発行識別信号SSを受信すると、B1_ARADDRまたはB1_AWADDRの値をD_A2_AWADDRとして、排他応答用のAWコマンドをAWチャネル(セレクタ10)に発行する。
【0106】
ブロックA-22は、B-1からB1_RRESPおよびB1_BRESPを受け取り、D_A2_WDATAに変換してセレクタ10(PCIe#1)に出力する。すなわち、A-22は、B1_RRESPまたはB1_BRESPを受信したら排他応答を発行するため、排他応答発行識別信号SSをAWチャネルおよびセレクタ10に転送する。また、B1_RRESPまたはB1_BRESPの値を排他応答値として、D_A2_WDATAに変換する。なお、ブロックA-23は、本実施形態と関係が薄いので、その説明は省略する。
【0107】
ここで、
図21および
図17に示されるように、PCIe#1と排他コマンド変換ブロックA-1および排他応答発行ブロックA-2の間にはセレクタ10が設けられ、このセレクタ10により選択された信号が、PCIe#1とA-1またはA-2の間で転送される。すなわち、セレクタ10は、排他応答発行識別信号SSを受信したときは、A-2の経路を選択し、そうでないときは、A-1の経路を選択するようになっている。
【0108】
図22および
図23は、
図1および
図2を参照して説明した情報処理装置におけるSTビット[7:0]を含むヘッダ情報の生成/復元方法を説明するための図であり、
図15を参照して示したSoC番号やポート番号の情報の取得を説明するためのものである。なお、
図22および
図23では、例えば、メモリ(DDR Memory 101),メモリ接続回路(104,105)およびIPマクロ(108)等は、関係が薄いので省略されている。
【0109】
図22に示されるように、SoC100は、例えば、
図1を参照して説明したSoCに対して、さらに、フラッシュ(Flash)メモリコントローラ111,電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリ(または、eEPROM)114を制御する。
【0110】
フラッシュメモリコントローラ111,電子ヒューズ(eFUSE)112および設定値レジスタ113を含む。なお、フラッシュメモリコントローラ111は、例えば、外部に設けられたフラッシュメモリや不揮発性メモリ(Electrically Erasable Programmable Read-Only Memory:Flash/eEPROM:外部メモリ)114を制御する。
【0111】
外部メモリ(Flash/eEPROM)114または電子ヒューズ112には、予めSoC番号やポート番号が格納され、例えば、電源起動時に、CPU(または、コントローラ)102が、その外部メモリ114や電子ヒューズ112に格納された値を読み出して、設定値レジスタ113にコピーする。そして、設定値レジスタ113にコピーされた値は、バス制御回路(排他アクセス回路)1により読み出され、それぞれのSoCが識別された状態で、前述した排他アクセス処理が行われる。なお、設定値レジスタ113を経由せずに、CPU102が、外部メモリ114や電子ヒューズ112から読み出した値を、直接バス制御回路1に設定することもできる。
【0112】
具体的に、
図23に示されるように、
図3を参照して説明したPCIeのTLPヘッダにおけるSTビット(ST[7:0])を使用することができる。すなわち、バス制御回路(PCIe Exclusive Access Unit)1は、例えば、SoC#0の設定値レジスタ113からSoC番号(SoC Number[5:0])およびポート番号(Port Number)を読み出す。さらに、内部接続回路(Interconnect)103を介してAxLOCK[1:0]およびAxADDR[31:0]を読み出し、例えば、前述した処理を行って、AxUSER[7:0],AxUSER[10:8]およびAxADDR[31:0]を、PCIe#に出力する。
【0113】
ここで、SoC#0におけるデータは、例えば、SoC Number[5:0]+Port Number+AxLOCK[1:0] → AxUSER[7:0] → ST[7:0]といった変換(生成)を行い、また、AxLOCK[1:0] → AxUSER[10:8] → TH+PH[1:0]といった変換を行うことで、ヘッダ情報に変換する。なお、前述したように、例えば、AxLOCKは、AxLOCK[1:0]といった2ビットの情報ではなく、1ビットの情報でよいが、例えば、『01』が排他アクセスで『00』が通常アクセスというように使用することができる。また、AxUSER[10:8]は、3ビットの情報を転送できるが、例えば、1ビットを固定して、他の2ビットを使用すればよい。
【0114】
このようにして、例えば、PCIeのTLPヘッダのST[7:0],THおよびPH[1:0]として組み入れられた情報は、例えば、SoC#1において復元される。すなわち、例えば、TH+PH[1:0] → AxUSER[10:8] → AxLOCK[1:0]とし、また、ST[7:0] → AxUSER[7:0] ] → 応答用送信元情報保持として、PCIeのTLPヘッダに組み込まれた情報を復元する。このようにして、SoC#1では、PCIe#1から、AxUSER[7:0],AxUSER[10:8]およびAxADDR[31:0]が、バス制御回路1に入力され、バス制御回路1から、内部接続回路103にAxLOCK[1:0]およびAxADDR[31:0]が出力される。
【0115】
なお、SoC#1においても、設定値レジスタ113が設けられ、上述したのとは逆向き(SoC#1からSoC#0)の処理を行うことができるのはいうまでもない。また、上述したPCIeのTLPヘッダにおけるST[7:0],THおよびPH[1:0]の使用は単なる例であり、ヘッダの他のビットフィールド、或いは、各バス仕様における適切なビットフィールドの使用も可能なのはいうまでもない。
【0116】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではない。また、明細書のそのような記載は、発明の利点および欠点を示すものでもない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【0117】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御回路であって、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力する排他コマンド変換回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成する排他コマンド生成回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とするバス制御回路。
【0118】
(付記2)
前記第1排他コマンドは、前記第1バス仕様に基づいて予め用意されたコマンドであり、
前記第2排他コマンドは、排他アクセスを行うために、前記第2バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする付記1に記載のバス制御回路。
【0119】
(付記3)
前記第2排他コマンドを生成するための、前記第2バス仕様における所定のビットフィールドは、前記第2バス仕様におけるパケットのヘッダ部分に含まれる、
ことを特徴とする付記2に記載のバス制御回路。
【0120】
(付記4)
さらに、
前記排他応答発行回路から出力される排他応答発行識別信号に基づいて、前記第2バス仕様の第2バスに繋がる経路と、前記排他コマンド変換回路による経路または前記排他応答発行ブロックによる経路との接続を制御するセレクタを有する、
ことを特徴とする付記1乃至付記3のいずれか1項に記載のバス制御回路。
【0121】
(付記5)
前記第1バス仕様の第1バスは、AXI(登録商標)仕様のバスである、
ことを特徴とする付記1乃至付記4のいずれか1項に記載のバス制御回路。
【0122】
(付記6)
前記第2バス仕様の第2バスは、PCIe(登録商標)仕様のバスである、
ことを特徴とする付記1乃至付記5のいずれか1項に記載のバス制御回路。
【0123】
(付記7)
前記第2排他コマンドは、前記PCIe(登録商標)仕様のバスのTLPヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする付記6に記載のバス制御回路。
【0124】
(付記8)
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第2排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第2排他コマンドに対する排他応答情報に基づいて、前記第1排他コマンドに対する排他応答を生成する、
ことを特徴とする付記1乃至付記7のいずれか1項に記載のバス制御回路。
【0125】
(付記9)
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常アクセスコマンドに対する応答と前記第2排他コマンドに対する排他応答情報に基づいて、前記第1排他コマンドに対する排他応答を生成する、
ことを特徴とする付記8に記載のバス制御回路。
【0126】
(付記10)
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第1排他コマンドに対する排他応答を受け取り、前記第1排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第1排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第1排他コマンドに対する排他応答情報に基づいて、前記第2排他コマンドに対する排他応答情報を生成する、
ことを特徴とする付記1乃至付記9のいずれか1項に記載のバス制御回路。
【0127】
(付記11)
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第1排他コマンドに対する排他応答に基づいて、前記第1排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする付記10に記載のバス制御回路。
【0128】
(付記12)
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御回路と、
前記第1バス仕様の内部回路と、
前記バス制御回路と前記内部回路の間で信号の受け渡しを行う内部接続回路と、
前記バス制御回路と前記第2バス仕様の外部バスの間で信号の受け渡しを行う外部接続回路と、を有し、
前記バス制御回路は、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力する排他コマンド変換回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成する排他コマンド生成回路と、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する排他応答発行回路と、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取る排他応答受信回路と、を有する、
ことを特徴とする半導体集積回路。
【0129】
(付記13)
前記第1排他コマンドは、前記第1バス仕様に基づいて予め用意されたコマンドであり、
前記第2排他コマンドは、排他アクセスを行うために、前記第2バス仕様における所定のビットフィールドに基づいて生成される、
ことを特徴とする付記12に記載の半導体集積回路。
【0130】
(付記14)
前記第1バス仕様の第1バスは、AXI(登録商標)仕様のバスである、
前記第2バス仕様の第2バスは、PCIe(登録商標)仕様のバスである、
ことを特徴とする付記12または付記13に記載の半導体集積回路。
【0131】
(付記15)
前記第2排他コマンドは、前記PCIe(登録商標)仕様のバスのTLPヘッダにおける所定のビットフィールドに基づいて生成される、
ことを特徴とする付記14に記載の半導体集積回路。
【0132】
(付記16)
前記第2排他コマンドを生成する、前記TLPヘッダにおける所定のビットフィールドは、前記半導体集積回路を識別する情報、および、排他アクセスか否かを示す情報を含む、
ことを特徴とする付記15に記載の半導体集積回路。
【0133】
(付記17)
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、
前記排他応答受信回路は、前記排他コマンド変換回路に、前記第2排他コマンドに対する排他応答情報に発行し、
前記排他コマンド変換回路は、前記第2排他コマンドに対する排他応答情報に基づいて、前記第1排他コマンドに対する排他応答を生成する、
ことを特徴とする付記12乃至付記16のいずれか1項に記載の半導体集積回路。
【0134】
(付記18)
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、
前記排他コマンド変換回路は、通常コマンドに対する応答を受け取り、前記通常アクセスコマンドに対する応答と前記第2排他コマンドに対する排他応答情報に基づいて、前記第1排他コマンドに対する排他応答を生成する、
ことを特徴とする付記17に記載の半導体集積回路。
【0135】
(付記19)
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第1排他コマンドに対する排他応答を受け取り、前記第1排他コマンドに対する排他応答に基づいて、前記排他応答発行回路に、前記第1排他コマンドに対する排他応答情報を発行し、
前記排他応答発行回路は、前記第1排他コマンドに対する排他応答情報に基づいて、前記第2排他コマンドに対する排他応答情報を生成する、
ことを特徴とする付記12乃至付記18のいずれか1項に記載の半導体集積回路。
【0136】
(付記20)
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、
前記排他コマンド生成回路は、前記第1排他コマンドに対する排他応答に基づいて、前記第1排他コマンドに対する排他応答情報に加えて、通常コマンドに対する応答を生成する、
ことを特徴とする付記19に記載の半導体集積回路。
【0137】
(付記21)
付記12乃至付記20のいずれか1項に記載の半導体集積回路と、
少なくとも前記半導体集積回路に接続され、前記半導体集積回路と前記半導体集積回路とは別の回路によって共有されるメモリと、を有する、
ことを特徴とする回路基板。
【0138】
(付記22)
付記21に記載の回路基板を複数有する情報処理装置であって、
それぞれの前記回路基板は、前記第2バス仕様の第2バスにより接続されている、
ことを特徴とする情報処理装置。
【0139】
(付記23)
第1フォーマットを有する、排他アクセスに対応した第1バス仕様の第1排他コマンドと、前記第1バス仕様とは異なり、排他アクセスに対応しない第2バス仕様に適合した第2フォーマットを有する、前記第1バス仕様の第2排他コマンドを相互に変換して、前記第1バス仕様および前記第2バス仕様の間における排他コマンドの伝搬を行うバス制御方法であって、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第1排他コマンドを受け取り、前記第2排他コマンドに変換して出力し、
前記第1排他コマンドから前記第2排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を受け取り、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドを受け取って前記第1排他コマンドを生成し、
前記第2排他コマンドから前記第1排他コマンドへの変換のときに、前記第2排他コマンドに対する排他応答情報を発行する、
ことを特徴とするバス制御方法。