JP2012128520A - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP2012128520A JP2012128520A JP2010277313A JP2010277313A JP2012128520A JP 2012128520 A JP2012128520 A JP 2012128520A JP 2010277313 A JP2010277313 A JP 2010277313A JP 2010277313 A JP2010277313 A JP 2010277313A JP 2012128520 A JP2012128520 A JP 2012128520A
- Authority
- JP
- Japan
- Prior art keywords
- master
- bus
- response
- transaction
- write
- 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
- Information Transfer Systems (AREA)
Abstract
【課題】 階層化されたバス構造をもつマルチマスタバスシステムにおいては、データを書き込む経路と読み出す経路によっては、書き込むマスタが共有メモリデバイスからのライト応答を待たずに、もう一方の読み出すマスタに通知し、データを読み出しても、ライトトランザクションとリードトランザクションの実行順序は保証されることがある。それにも関わらず、いつも共有メモリデバイスからのライト応答を待つことは不必要に性能を損なう。
【解決手段】 階層化されたバス構造をもつマルチマスタバスシステムにおいて、2つのマスタ間で共有メモリを介してデータの受け渡しを行う際に、データを書き込む経路と読み出す経路に応じて、最適なスレーブがライト応答を生成することで、ライトアクセスとリードアクセスの順序保証をする。
【選択図】 図1
【解決手段】 階層化されたバス構造をもつマルチマスタバスシステムにおいて、2つのマスタ間で共有メモリを介してデータの受け渡しを行う際に、データを書き込む経路と読み出す経路に応じて、最適なスレーブがライト応答を生成することで、ライトアクセスとリードアクセスの順序保証をする。
【選択図】 図1
Description
本発明はマルチマスタバスを有するデータ処理装置に関する。
近年、システムオンチップ(SOC)では、多様な機能を実現するためにバスに接続するマスタデバイス(以下、マスタ)の数が増加する傾向にある。マスタが増加すると高周波数を達成するための配置や配線が困難になるため、バスを階層化し、1つのバスに接続するマスタ数を減らす手法が取られる。この手法により、バスの階層化が進んでいる。
バスが階層化されたシステムにおいてマスタがスレーブデバイス(以下、スレーブ)にアクセスするとき、マスタが発行したトランザクションがスレーブに到達するまでに階層化された複数のバスを経由してスレーブに到達する。そして、スレーブからの応答も複数のバスを経由してマスタに到達する。そのためマスタがスレーブへのトランザクションを発行してから応答を受信するまでのレイテンシが大きくなり、システム性能が低下するという問題がある。
この問題に対応するため、従来のデータ処理装置は、マスタのライトトランザクションが、スレーブデバイスで実行される前に、ライトの応答を返すポステッドライト方式を採用することがある。例えば特許文献1に、アクセス先のスレーブデバイスによってポステッドライト方式を選択する技術が開示されている。
しかし、ポステッドライト方式を採用すると、マスタはライトトランザクションがスレーブデバイスで実行されたかどうかを検知できなかった。マルチマスタ構成のシステムにおいて、一般的に2つのマスタ間で共有メモリを介してデータの受け渡しを行う場合、データを書き込むマスタがライトトランザクションを発行した後に、もう一方の読み出すマスタに通知し、データを読み出す。ポステッドライト方式を採用すると、読み出すマスタのリードトランザクションが、書き込むマスタのライトトランザクションより先に実行される可能性があり、その場合正しいデータが読めなくなる可能性がある。
特許文献1に開示された技術においては、共有メモリデバイスを非ポステッド領域にし、書き込むマスタはライトトランザクションの応答を待ってから読み出すマスタに通知することで、正しいデータが読めることを保証している。
これによると、共有メモリデバイスにアクセスするマスタはいつもスレーブデバイスからのライトの応答を待つ。しかし、階層化されたバス構造をもつマルチマスタバスシステムにおいては、データを書き込む経路と読み出す経路によっては、書き込むマスタが共有メモリデバイスからのライト応答を待たずに、もう一方の読み出すマスタに通知し、データを読み出しても、ライトトランザクションとリードトランザクションの実行順序は保証されることがある。
これは、一般的に1つのシステムバスにバスマスタ、バススレーブが接続するバスシステムにおいて、1つのバスマスタがライトトランザクションを発行した後に同一アドレスにリードトランザクションを発行する場合、先に発行されたライトトランザクションと、後に発行されたリードトランザクションの実行される順序が変わらないことが保証されているからである。
図12(A)に従来の階層化されたバス構造のマルチマスタバスシステムを有するデータ処理装置1200を示す。1201は第一のバスであり、バスマスタとして、マスタA1202、マスタB1203、バススレーブとしてブリッジ1204が接続されている。1205は第二のバスであり、バスマスタとしてブリッジ1204、マスタC1206、バススレーブとしてスレーブデバイス1207が接続されている。スレーブデバイス1207は共有メモリとする。ブリッジ1204は第一のバス1201と第二のバス1205との間でインターフェースとして機能するブロックで、第一のバス1201上ではバススレーブとして動作し、第二のバス1205上ではバスマスタとして動作する。
次に、マスタA1202、マスタB1203間でスレーブデバイス1207を介してデータの受け渡しを行う動作について説明する。図12(B)は、マスタA1202がスレーブデバイス1207にデータを書き込み、マスタB1203がデータを読み出すシーケンスである。
マスタA1202がスレーブデバイス1207へデータを書き込むためのライトトランザクションをブリッジ1204に発行する(1211)。ブリッジ1204はスレーブデバイス1207にライトトランザクションを転送する(1212)。スレーブデバイス1207はライトトランザクションを受け取るとデータ書き込み処理を行い、ライト応答をブリッジ1204に返す(1213)。ブリッジ1204はライト応答をマスタA1202に返す(1214)。マスタA1202はライト応答を受信すると図示しない割り込み信号を使ってマスタB1203にライトの完了を通知する(1215)。
マスタB1203はライトの完了通知1215を受信するとスレーブデバイスのデータを読み込むためのリードトランザクションをブリッジ1204に発行する(1216)。ブリッジ1204はリードトランザクション1216を受信するとスレーブデバイス1207にリードトランザクションを転送する(1217)。スレーブデバイス1207はリード処理を行い、リード応答をブリッジ1204に返す(1218)。ブリッジ1204はリード応答をマスタB1203に転送する(1219)。
上記シーケンスによると、マスタA1202のスレーブデバイス1207へのライトトランザクションとマスタB1203のスレーブデバイス1207へのリードトランザクションは、スレーブデバイス1207から見ると第二のバスのバスマスタであるブリッジ1204によって発行される。
前述の通り、第二のバス1205のバスマスタであるブリッジ1204がライトトランザクション1212を発行した後に同一アドレスにリードトランザクション1217を発行する場合、先に発行されたライトトランザクションと、後に発行されたリードトランザクションの実行される順序が変わらないことが保証されている。そのためマスタA1202のライトトランザクション1211は、ブリッジ1204に到達した時点で後から到着するマスタB1203のリードトランザクション1217より先に実行されることが決定する。
また、いつもスレーブデバイス1207からのライト応答を待つ必要があるため、システム性能が損なわれてしまう。一方、マスタA1202、マスタC1206間で共有メモリを介してデータの受け渡しを行う場合はライトトランザクションとリードトランザクションの実行される順序保証をするためにスレーブデバイス1207からの応答を待つ必要がある。
本発明は上記課題に鑑みてなされたものであり、性能を損なうことなく、階層化されたバス構造を持つマルチマスタバスシステムにおけるライトトランザクションとリードトランザクションの順序保証をする。
上記課題を解決するため、本発明に係るデータ処理装置はマスタデバイスと、前記マスタデバイスが接続されている第1のバスと、スレーブデバイスが接続されている第2のバスと、前記第1のバスと前記第2のバスとの間で接続され、前記マスタデバイスから前記スレーブデバイスへのライトトランザクションを受信すると、前記スレーブデバイスからの応答を待たずに前記マスタデバイスに前記ライトトランザクションに対する応答を出力するインターフェースとを有することを特徴とする。
本発明によれば階層化されたバス構造を持つマルチマスタバスシステムにおいて、ライトトランザクションとリードトランザクションの実行順序を、システム性能の低下を抑えつつ保証することができる。
(実施形態1)
図1は本発明の一実施形態である実施形態1に係る、データ処理装置100の概略構成を示すブロック図である。101はシステムバス(第2のバス)、102はメインCPU、103はサブシステムである。サブシステム103の内部はサブシステムバス1031(第1のバス)、サブシステムCPU1032(マスタデバイス、以下CPU_Aと呼ぶ)、サブシステムCPU1033(以下CPU_Bと呼ぶ)を有する。システムバス101、サブシステムバス1031はトランザクション毎にマスタID、スレッドID情報が付加されるバスプロトコルである。
図1は本発明の一実施形態である実施形態1に係る、データ処理装置100の概略構成を示すブロック図である。101はシステムバス(第2のバス)、102はメインCPU、103はサブシステムである。サブシステム103の内部はサブシステムバス1031(第1のバス)、サブシステムCPU1032(マスタデバイス、以下CPU_Aと呼ぶ)、サブシステムCPU1033(以下CPU_Bと呼ぶ)を有する。システムバス101、サブシステムバス1031はトランザクション毎にマスタID、スレッドID情報が付加されるバスプロトコルである。
ここで、CPU_A1032のマスタIDを0、CPU_B1033のマスタIDを1、メインCPU102のマスタIDを2とする。CPU_A1032はマルチスレッドプロセッサであり、トランザクション発行時には、トランザクションにスレッドを識別するためのスレッドID情報を付加する。1034はCPU_A1032からCPU_B1033へ割り込みを発生させる割り込み信号である。
104はブリッジであり、サブシステムバス1031とシステムバス101との間でインターフェースとして機能する。ここで、サブシステムバス1031をマスタ側のバス(以下、マスタバスと呼ぶ)、システムバス101をスレーブ側のバス(以下、スレーブバスと呼ぶ)とする。トランザクションはマスタバスからスレーブバスへ転送され、応答はスレーブバスからマスタバスへ転送される。
105はシステムバス101に接続する共有メモリコントローラ(メモリ制御部)であり、共有メモリへのアクセス要求を受信したとき、共有メモリへのアクセスを制御し、応答信号を生成して出力する。106はCPU_A1032からメインCPU102への割り込み信号である。
メインCPU102はシステムバス101を経由して共有メモリへアクセスすることが可能である。CPU_A1031、CPU_B1032もまた、サブシステムバス1031、ブリッジ104、システムバス101を経由して共有メモリへアクセスすることが可能である。ブリッジ104はCPU_A1031、CPU_B1032が発行したトランザクションを、サブシステムバス1031を経由して受信し、システムバス101へ転送する。また、共有メモリコントローラ105が発行した応答を、システムバス101を経由して受信し、サブシステムバス1031へ転送する。ブリッジ104はポステッドライト方式の応答を自動生成する応答生成部1041を備える。
図2に応答生成部1041の内部構成を示す。201はマスタID保持部、202はスレッドID保持部であり、予めデータ処理装置の外部から値を設定する。203はトランザクション比較部であり、マスタバスから受信したトランザクションに付加されたマスタID情報(マスタ情報)とマスタID保持部201の値、スレッドID情報(スレッド情報)とスレッドID保持部202の値を比較し、一致、不一致を判定する。204は応答比較部であり、スレーブバスから受信した応答に付加されたマスタID情報とマスタID保持部201の値、スレッドID情報とスレッドID保持部202の値を比較し、一致、不一致を判定する。205はマスタバスインターフェース応答制御部であり、トランザクション比較部203が、一致と判定したときにライト応答を生成し、マスタバスに発行する。また、マスタバスインターフェース応答制御部205は、応答比較部204が不一致と判定したときにスレーブバスから受信した応答をマスタバスに転送する。
図3はブリッジ104の動作を示す。図3(A)はマスタバスからのトランザクションを受信した時のブリッジ104の動作を示す。図3(A)ではマスタバスからトランザクションを受信すると処理がスタートする。
まず、トランザクション比較部203はトランザクションがライトかどうかを判定する(S301)。ステップS301においてライトと判定すると、トランザクション比較部203は、さらにトランザクション情報に付加されたマスタIDとスレッドIDが保持部201、202の値と一致しているかを判定する(S302)。ステップS302において一致と判定すると、マスタバスインターフェース応答制御部205はライト応答を生成し、マスタバスに発行する(S303)。トランザクションをスレーブバスへ転送する(S304)。ステップS301においてトランザクションはライトではないと判定する、あるいは、S302においてマスタIDとスレッドIDとが保持部の値と一致しないと判定すると、ライト応答を生成することなくトランザクションをスレーブバスへ転送する。
図3(B)はスレーブバスからの応答受信時のブリッジ104の動作を示す。スレーブバスから応答を受信すると処理がスタートする。応答比較部204は応答に付加されたマスタIDとスレッドIDが保持部201、202の値と一致しているかを判定する(S305)。ステップ305で応答に付加されたマスタIDとスレッドIDが保持部201、202の値と一致しなければ、マスタバスインターフェース応答制御部205は応答をマスタバスへ転送する(S306)。一方ステップS305において一致していると判定すると、マスタバスへ転送することなく処理を終了する。
図4にこの装置において、CPU間で共有メモリを介してデータの受け渡しを伴う通信を行うシーケンスを示す。CPU_A1032はデータ転送前に、ブリッジ104内部のマスタID保持部201に0、スレッドID保持部202に1を設定する(401)。自動応答生成部1401への設定は他のマスタが行ってもよい。
402はCPU_A1032がメインCPU102にデータを渡すシーケンスである。CPU_A1032が、スレッドID番号が0のスレッドにて、共有メモリへデータを書き込むためのライトトランザクションを発行する(403)。ライトトランザクションには、マスタIDは0、スレッドIDは0の情報が付加される。なおスレッドID番号は通信相手となるバスマスタ(サブシステムCPU、メインCPUなどを含む)に応じて固有の値を設定するものとする。
ブリッジ104が、ライトトランザクション403を受信すると、内部のトランザクション比較部203によってマスタIDとスレッドIDの情報が、マスタID保持部201、スレッドID保持部202の値と一致しないと判定され、ライトトランザクションを共有メモリコントローラ105へ転送する(404)。
そして、共有メモリコントローラ105は、共有メモリへデータを書いた後にライト応答を発行する(405)。ブリッジ104はライト応答受信後、内部の応答比較部204において、マスタIDとスレッドIDの情報が、マスタID保持部201、スレッドID保持部202の値と一致しないと判定し、ライト応答をCPU_A1032へ転送する(406)。CPU_A1032はライト応答受信後に、メインCPU102に割り込み通知を発行し、データ書き込み完了を知らせる(407)。メインCPU102は共有メモリのデータを読み出すためのリードトランザクションを発行する(408)。共有メモリコントローラ105が、共有メモリのデータ読み出し完了後にリード応答を発行し、メインCPUはデータを受信する(409)。
本装置によると、CPU_A1032がライト応答406を受信した時点で共有メモリへのデータ書き込みは完了しており、408にてメインCPU102はCPU_A1032が書いたデータを読むことが保証できる。
一方、410はCPU_A1032がCPU_B1033にデータを渡すシーケンスである。CPU_A1032が、スレッドID番号が1のスレッドにて、共有メモリへデータを書き込むためのライトトランザクションを発行する(411)。ライトトランザクションには、マスタIDは0、スレッドIDは1の情報が付加される。
ブリッジ104が、ライトトランザクション411を受信すると、内部のトランザクション比較部203においてマスタIDとスレッドIDの情報が、マスタID保持部201、スレッドID保持部202の値と一致すると判定し、ライト応答を生成する(412)と共に、ライトトランザクションを共有メモリコントローラ105へ転送する(413)。
そして、共有メモリコントローラ105は、共有メモリへデータを書いた後にライト応答を発行する(414)。ブリッジ104ではライト応答受信後、内部の応答比較部204によって、マスタIDとスレッドIDの情報が、マスタID保持部201、スレッドID保持部202の値と一致すると判定され、CPU_A1032への転送は行わない。
CPU_A1032は412において発行されたライト応答受信後に、CPU_B1033に割り込み通知を発行し、データ書き込み完了を知らせる(415)。CPU_B1033は共有メモリのデータを読み出すためのリードトランザクションを発行する(416)。ブリッジ104は、リードトランザクション416を受信すると、内部のトランザクション比較部203においてリードと判定し、リードトランザクションを共有メモリコントローラ105へ転送する(417)。共有メモリコントローラ105は共有メモリへのデータ読み出し完了後にリード応答を発行する(418)。ブリッジ104はリード応答を受信すると、内部の応答比較部204においてリードと判定し、リードトランザクションをCPU_B1033へ転送する(419)。
本装置によると、CPU_A1032がライト応答412を受信した時点で必ずしも共有メモリへのデータ書き込みは完了していない。しかし、バスブリッジ104が発行するライトトランザクション413と、同一アドレスへのリードトランザクション417の実行される順序は保証される。さらに、CPU_A1032が411にて共有メモリ105へデータ書き込みを行ってから415にてCPU_B1032に割り込み通知を発行するまでの待ち時間を削減する。
以上、本実施形態によれば、CPU_A1032は同じ領域のスレーブデバイスへのアクセスであっても、メインCPU102にデータを渡すときはスレーブデバイスからのライト応答を、CPU_B1033にデータを渡すときはブリッジ104が生成するライト応答を受けて動く為、ライトトランザクションとリードトランザクションの実行順序の保証を、システム性能を損なうことなく可能にする。
(実施形態2)
次に実施形態2について説明する。なお、実施形態1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
次に実施形態2について説明する。なお、実施形態1と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
図5に実施形態2の応答生成部1041の内部構成を示す。504は応答比較部であり、マスタバスから受信したトランザクションに付加されたマスタID情報とマスタID保持部501の値、アドレスを示すアドレス情報(共有メモリアドレスのアドレス全体でもよいし、一部でもよい、又アドレス領域に割り当てた固有の値でもよい、以下、単にアドレスと称す)とアドレス保持部502の値を比較する。そして、一致するとき、対応するトランザクションIDを内部に備えるキューに保持しておく。応答比較部504はスレーブバスから受信した応答に付加されたトランザクションID情報と、キューに保持しているトランザクションIDの値を比較し、一致、不一致を判定する。
図6はブリッジ104の動作を示す。図6(A)はマスタバスからのトランザクション受信時のブリッジ104の動作を示し、マスタバスからトランザクションを受信すると処理がスタートする。
ステップS301、S303の処理は実施形態1と同様なので省略する。ステップS301においてライトと判定されると、トランザクション比較部203は、さらにトランザクション情報に付加されたマスタIDとアドレスが保持部501、502の値と一致しているかを判定する(S602)。
また実施形態2では、トランザクションがライトで、トランザクション情報に付加されたマスタIDとアドレスが保持部501、502の値と一致し、ライト応答を生成しマスタバスに発行した後、応答比較部504が対応するトランザクションIDをキューに保持する(S604)。そして次に、トランザクションをスレーブバスへ転送する(S605)。一方で、ステップS301においてトランザクションがライトと判定されない場合、あるいは、ステップS302においてマスタIDとアドレスが保持部501、502の値と一致しない場合、S603、S604は実行されずにトランザクションをスレーブバスへ転送する(S605)。
図6(B)はスレーブバスからの応答受信時のブリッジ104の動作を示す。スレーブバスから応答を受信すると処理がスタートする。応答比較部504は応答に付加されたトランザクションIDがキューに保持している値の内、どれかと一致しているかを判定する(S606)。応答に付加されたトランザクションIDがキューに保持しているどの値とも一致しなければ、マスタバスインターフェース応答制御部505は応答をマスタバスへ転送する(S607)。一方で、ステップS606で一致していると判定すると、キューから一致しているトランザクションID情報を消去し(S608)、応答をマスタバス1031へ転送することなく処理を終了する。
図7は実施形態2において、CPU間で共有メモリを介してデータの受け渡しを行うシーケンスを示す。CPU_A1032は、メインCPU102とのデータの受け渡しを共有メモリのアドレスA0番地で行い、CPU_B1033とのデータの受け渡しをアドレス共有メモリのA1番地で行うことを予め決めておく。CPU_A1032はデータ転送前に、ブリッジ104内部のマスタID保持部501に0、アドレス保持部502にA1を設定する(701)。自動応答生成部1401への設定は他のマスタが行ってもよい。
702はCPU_A1032がメインCPU102にデータを渡すシーケンスである。CPU_A1032が、共有メモリのA0番地へデータを書き込むためのライトトランザクションを発行する(703)。
ブリッジ104がライトトランザクション703を受信すると、内部のトランザクション比較部503によってマスタIDとアドレスの情報が、マスタID保持部501、アドレス保持部502の値と一致しないと判定され、ライトトランザクションを共有メモリコントローラ105へ転送する(704)。
そして、共有メモリコントローラ105は、共有メモリへデータを書いた後にライト応答を発行する(705)。ブリッジ104はライト応答受信後、内部の応答比較部504によって、マスタIDとアドレスの情報が、マスタID保持部501、アドレス保持部502の値と一致しないと判定され、ライト応答をCPU_A1032へ転送する(706)。CPU_A1032はライト応答受信後に、メインCPU102に割り込み通知を発行し、データ書き込み完了を知らせる(707)。メインCPU102は共有メモリのデータを読み出すためのA0番地へのリードトランザクションを発行する(708)。共有メモリコントローラ105が、共有メモリのデータ読み出し完了後にリード応答を発行し、メインCPUはデータを受信する(709)。
本装置によると、CPU_A1032がライト応答706を受信した時点で共有メモリへのデータ書き込みは完了しており、708にてメインCPU102はCPU_A1032が書いたデータを読むことを保証できる。
一方、710はCPU_A1032がCPU_B1033にデータを渡すシーケンスである。CPU_A1032が、共有メモリのA1番地へデータを書き込むためのライトトランザクションを発行する(711)。ライトトランザクションには、マスタIDは0、アドレスはA1の情報が付加される。
ブリッジ104がライトトランザクション711を受信すると、内部のトランザクション比較部503によってマスタIDとアドレスの情報が、マスタID保持部501、アドレス保持部502の値と一致すると判定され、ライト応答を生成する(712)と共に、ライトトランザクションを共有メモリコントローラ105へ転送する(713)。
そして、共有メモリコントローラ105は、共有メモリへデータを書いた後にライト応答を発行する(714)。ブリッジ104ではライト応答受信後、内部の応答比較部504によって、マスタIDとアドレスの情報が、マスタID保持部501、アドレス保持部502の値と一致すると判定され、CPU_A1032への転送は行わない。
CPU_A1032は712において発行されたライト応答受信後に、CPU_B1033に割り込み通知を発行し、データ書き込み完了を知らせる(715)。CPU_B1033は共有メモリのデータを読み出すためのリードトランザクションを発行する(716)。ブリッジ104は、リードトランザクション716を受信すると、内部のトランザクション比較部503においてリードと判定し、リードトランザクションを共有メモリコントローラ105へ転送する(717)。共有メモリコントローラ105は共有メモリへのデータ読み出し完了後にリード応答を発行する(718)。ブリッジ104はリード応答を受信すると、内部の応答比較部504においてリードと判定し、リードトランザクションをCPU_B1033へ転送する(719)。
本装置によると、715においてCPU_A1032が割り込み通知を発行した時点で必ずしも共有メモリへのデータ書き込みは完了していない。しかし、バスブリッジ104が発行するライトトランザクション713と、同一アドレスへのリードトランザクション717の実行される順序は保証される。さらに、CPU_A1032が711にて共有メモリ105へデータ書き込みを行ってから715にてCPU_B1032に割り込み通知を発行するまでの待ち時間を削減する。
以上、本実施形態によれば、複数の応答に関する情報をキューに保持しておくことで、より、トランザクションが同時並行的に複数生じる場合であってもライトトランザクションとリードトランザクションの実行順序を好適に保証できる。
(実施形態3)
本実施形態において、システムバスが更に階層化したデータ処理装置におけるマスタ間のデータ受け渡しについて説明する。なお、実施形態1、2と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
本実施形態において、システムバスが更に階層化したデータ処理装置におけるマスタ間のデータ受け渡しについて説明する。なお、実施形態1、2と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的にかわらないものについてはその説明を省略する。
図8は本発明の実施形態3に係る、ライト応答を生成する手段を備えたインターフェースブロックを含むデータ処理装置100のブロック構成図である。801は第1のシステムバス(第3のバス)、801−2は第二のシステムバス(第2のバス)、807は第二のシステムバスに接続するバスマスタである。第一のシステムバス801、第二のシステムバス801−2、サブシステムバス1031(第1のバス)はトランザクション毎にスレッド情報が識別できる情報(例えばスレッドID情報)が付加されるバスプロトコルである。
804は第一のブリッジ(第1のインターフェース)であり、サブシステムバス1031と第一のシステムバス801との間でインターフェースとして機能する。ここで、サブシステムバス1031をマスタバス、第一のシステムバス801をスレーブバスとする。また、804−2は第二のブリッジ(第2のインターフェース)であり、第一のシステムバス801と第二のシステムバス801−2との間でインターフェースとして機能する。
805はシステムバス801に接続する共有メモリコントローラであり、共有メモリへのアクセス要求を受信したとき、メモリへのアクセスを制御し、応答信号を生成する。808はCPU_A1032からバスマスタ807への割り込み信号である。
共有メモリコントローラ805は第二のシステムバス801−2に接続され、バスマスタ807は第二のシステムバス801−2を経由して共有メモリへアクセスすることが可能である。メインCPU102も、第二のブリッジ804−2、第二のシステムバス801−2を経由して共有メモリへアクセスすることが可能である。CPU_A1031、CPU_B1032も、サブシステムバス1031、第一のブリッジ804、第一のシステムバス801、第二のブリッジ804−2、第二のシステムバスを経由して共有メモリへアクセスすることが可能である。
第一のブリッジ804はCPU_A1031、CPU_B1032が発行したトランザクションを、サブシステムバス1031を経由して受信し、第一のシステムバス801へ転送する。また、第二のブリッジ804−2が発行した応答を、第一のシステムバス801を経由して受信し、サブシステムバス1031へ転送する。
第二のブリッジ804−2は、第一のブリッジ804、メインCPU102が発行したトランザクションを、第一のシステムバス801を経由して受信し、第二のシステムバス801−2へ転送する。また、共有メモリコントローラ805が発行した応答を、第二のシステムバス801−2を経由して受信し、第一のシステムバス801へ転送する。第一のブリッジ804と第二のブリッジ804−2の内部構成は同一で、内部にはポステッドライト方式の応答を自動生成する応答生成部8041を備える。
図9に応答生成部8041の内部構成を示す。901はブリッジID保持部であり、データ処理装置内の各ブリッジに其々ユニークに与えられるIDであり、予め外部から設定する。902はトランザクション比較部であり、マスタバスから受信したトランザクションに付加されたスレッドID情報とブリッジID保持部901の値を比較し、一致、不一致を判定する。903は応答比較部であり、スレーブバスから受信した応答に付加されたスレッドID情報とブリッジID保持部901の値を比較し、一致、不一致を判定する。904はマスタバスインターフェース応答制御部であり、トランザクション比較部902が、一致と判定したときにライト応答を生成し、マスタバスに発行する。応答比較部903が不一致と判定したときにスレーブバスから受信した応答をマスタバスに発行する。
図10は第一のブリッジ804、第二のブリッジ804−2の動作を示す。図10(A)はマスタバスからのトランザクション受信時のブリッジ804、第二ブリッジ804−2の動作を示す。
マスタバスからトランザクションを受信すると処理がスタートする。以降の処理において、ステップS1002以外は図3(A)と同様なので説明を省略する。ステップS301においてライトと判定すると、ステップS1002においてトランザクション比較部902が、トランザクション情報に付加されたスレッドIDが保持部901の値と一致しているかどうかを判定する。
図10(B)はスレーブバスからの応答受信時のブリッジ804、第二のブリッジ804−2の動作を示す。スレーブバスから応答を受信すると処理がスタートする。応答比較部903は応答に付加されたスレッドIDが保持部901の値と一致しているかを判定する(S1005)。一致していないと判定すると、マスタバスインターフェース応答制御部904は応答をマスタバスへ転送する(S1006)。S1005において一致していると判定すると、マスタバスへ転送することなく処理を終了する。
図11に実施形態3において、CPU間で共有メモリを介してデータの受け渡しを行うシーケンスを示す。CPU_A1032はデータ転送前にブリッジ804のブリッジID保持部に0、第二のブリッジ804−2のブリッジID保持部に1を設定する(1100、1101)。第一、第二のブリッジへの設定は他のマスタが行ってもよい。
1102はCPU_A1032がバスマスタ807にデータを渡すシーケンスである。CPU_A1032が、スレッドID番号が2のスレッドにて、共有メモリへデータを書き込むためのライトトランザクションを発行する(1103)。ライトトランザクションには、スレッドIDは2の情報が付加される。
ブリッジ804がライトトランザクション1103を受信すると、内部のトランザクション比較部902によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライトトランザクションを第二のブリッジ804−2へ転送する(1104)。第二のブリッジ804−2がライトトランザクション1104を受信すると、内部のトランザクション比較部902によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライトトランザクションを共有メモリコントローラ805へ転送する(1105)。
そして、共有メモリコントローラ805は、共有メモリへデータを書いた後にライト応答を発行する(1106)。第二のブリッジ804−2はライト応答受信後、内部の応答比較部903によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライト応答を第一のブリッジ804へ転送する(1107)。第一のブリッジ804はライト応答受信後、内部の応答比較部903によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライト応答をCPU_A1032へ転送する(1108)。CPU_A1032はライト応答1108受信後に、バスマスタ807に割り込み通知を発行し、データ書き込み完了を知らせる(1109)。バスマスタ807は共有メモリのデータを読み出すためのリードトランザクションを発行する(1110)。共有メモリコントローラ805が、共有メモリのデータ読み出し完了後にリード応答を発行し、バスマスタ807はデータを受信する(1111)。
本装置によると、1109においてCPU_A1032がライト応答1108を受信した時点で共有メモリへのデータ書き込みは完了しており、1110にてバスマスタ807はCPU_A1032が書いたデータを読むことを保証できる。
一方、1112はCPU_A1032がメインCPU102にデータを渡すシーケンスである。CPU_A1032が、スレッドID番号が1のスレッドにて、共有メモリへデータを書き込むためのライトトランザクションを発行する(1113)。ライトトランザクションには、スレッドIDは1の情報が付加される。
第一のブリッジ804がライトトランザクション1113を受信すると、内部のトランザクション比較部902によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライトトランザクションを第二のブリッジ804−2へ転送する(1114)。第二のブリッジ804−2がライトトランザクション1114を受信すると、内部のトランザクション比較部902によってスレッドIDの情報が、ブリッジID保持部901の値と一致すると判定され、ライト応答を生成する(1115)と共に、ライトトランザクションを共有メモリコントローラ805へ転送する(1117)。共有メモリコントローラ805は、共有メモリへデータを書いた後にライト応答を発行する(1118)。第二のブリッジ804−2がライト応答1118を受信後、内部の応答比較部903によってスレッドIDの情報が、ブリッジID保持部901の値と一致すると判定されるので、第一のブリッジ804への転送は行わない。
第一のブリッジ804がライト応答1115を受信後、内部の応答比較部903によってスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定され、ライト応答をCPU_A1032へ転送する(1116)。CPU_A1032はライト応答1116受信後に、メインCPU102に割り込み通知を発行し、データ書き込み完了を知らせる(1119)。メインCPU102は共有メモリのデータを読み出すためのリードトランザクションを発行する(1120)。第二のブリッジ804は、リードトランザクション1120を受信すると、内部のトランザクション比較部902においてリードと判定し、リードトランザクションを共有メモリコントローラ805へ転送する(1121)。共有メモリコントローラ805は共有メモリのデータ読み出し完了後にリード応答を発行する(1122)。第二のブリッジ804−2はリード応答を受信すると、内部の応答比較部903においてリードと判定し、リードトランザクションをメインCPU802へ転送する(1123)。
本装置によると、CPU_A1032がライト応答1116を受信した時点で必ずしも共有メモリへのデータ書き込みは完了していない。しかし、第二のバスブリッジ804−2が発行するライトトランザクション1117と、同一アドレスへのリードトランザクション1121の実行される順序は保証される。さらに、CPU_A1032が1113にて共有メモリ805へデータ書き込みを行ってから1119にてメインCPU102に割り込み通知を発行するまでの待ち時間を削減する。
一方、1124はCPU_A1032がCPU_B1033にデータを渡すシーケンスである。CPU_A1032が、スレッドID番号が0のスレッドにて、共有メモリへデータを書き込むためのライトトランザクションを発行する(1125)。ライトトランザクションには、スレッドIDは0の情報が付加される。第一のブリッジ804は、ライトトランザクション1125を受信すると、内部のトランザクション比較部902においてスレッドIDの情報が、ブリッジID保持部901の値と一致すると判定し、ライト応答を生成する(1126)。そして、ライトトランザクションを第二のブリッジ804−2へ転送する(1127)。第二のブリッジ804−2は、ライトトランザクション1127を受信すると、内部のトランザクション比較部902においてスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定し、ライトトランザクションを共有メモリコントローラ805へ転送する(1128)。
共有メモリコントローラ805は、共有メモリへデータを書いた後にライト応答を発行する(1129)。第二のブリッジ804−5はライト応答1129を受信後、内部の応答比較部903においてスレッドIDの情報が、ブリッジID保持部901の値と一致しないと判定し、ライト応答を第一のブリッジ804へ転送する(1130)。
第一のブリッジ804はライト応答1130を受信後、内部の応答比較部903においてスレッドIDの情報が、ブリッジID保持部901の値と一致すると判定し、CPU_A1032への転送は行わない。
CPU_A1032はライト応答1126受信後に、CPU_B1033に割り込み通知を発行し、データ書き込み完了を知らせる(1131)。CPU_B1033は共有メモリのデータを読み出すためのリードトランザクションを発行する(1132)。第一のブリッジ804はリードトランザクション1132を受信すると、内部のトランザクション比較部902においてリードと判定し、リードトランザクションを第二のブリッジ804−2へ転送する(1133)。
第二のブリッジ804−2はリードトランザクション1133を受信すると、内部のトランザクション比較部902においてリードと判定し、リードトランザクションを共有メモリコントローラ805へ転送する(1134)。共有メモリコントローラ805は共有メモリのデータ読み出し完了後にリード応答を発行する(1135)。第二のブリッジ804−2はリード応答1135を受信すると、内部の応答比較部903においてリードと判定し、リード応答をブリッジ804へ転送する(1136)。第一のブリッジ804はリード応答1136を受信すると、内部の応答比較部903においてリードと判定し、リード応答をCPU_B1033へ転送する(1137)。
本実施形態によると、CPU_A1032がライト応答1131を受信した時点で必ずしも共有メモリへのデータ書き込みは完了していない。しかし、第一のブリッジ804が発行するライトトランザクション1127と、同一アドレスへのリードトランザクション1133の実行される順序は保証される。さらに、CPU_A1032が1125にて共有メモリ805へデータ書き込みを行ってから1131にてメインCPU102に割り込み通知を発行するまでの待ち時間を削減する。
上記動作によれば、CPU_A1032は同じ領域のスレーブデバイスへのアクセスであっても、バスマスタ807にデータを渡すときはスレーブデバイスからのライト応答を、メインCPU102にデータを渡すときは第二のブリッジ804−2が生成するライト応答を、CPU_B8033にデータを渡すときはブリッジ804が生成するライト応答を受けて動く為、ライトトランザクションとリードトランザクションの実行順序の保証を、システム性能を損なうことなく可能にする。
なお、上述の実施形態では自動応答生成部1041、8041の設定(マスタID、スレッドID、アドレス)を外部から設定する様に説明しているが、予め共有メモリに設定値を格納しておき、メインCPU102またはサブシステムCPU_A、Bが共有メモリから値を読み出して設定するようにしてもよい。
Claims (8)
- マスタデバイスと、
前記マスタデバイスが接続されている第1のバスと、
スレーブデバイスが接続されている第2のバスと、
前記第1のバスと前記第2のバスとの間で接続され、前記マスタデバイスから前記スレーブデバイスへのライトトランザクションを受信すると、前記スレーブデバイスからの応答を待たずに前記マスタデバイスに前記ライトトランザクションに対する応答を出力するインターフェースと
を有することを特徴とするデータ処理装置。 - 前記インターフェースは、前記マスタデバイスを示すマスタ情報と前記マスタで実行されるスレッドを示すスレッド情報を保持する保持手段を備え、前記ライトトランザクションに付加されているマスタ情報とスレッド情報とが前記保持手段の保持しているマスタ情報とスレッド情報に一致したときにライト応答を出力することを特徴とする請求項1に記載のデータ処理装置。
- 前記第1のバス又は前記第2のバスに接続されているバスマスタを更に有し、前記マスタデバイスは前記ライトトランザクションを出力することで前記スレーブデバイスに接続されている共有メモリにデータを書き込み前記バスマスタに前記共有メモリに書き込んだデータを読み出させることで、前記マスタデバイスは前記バスマスタへ通信することを特徴とする請求項1に記載のデータ処理装置。
- 前記マスタデバイスは前記ライトトランザクションに対する応答に基づいて前記バスマスタに前記共有メモリからデータを読み出させるために通知をすることを特徴とする請求項3に記載のデータ処理装置。
- 前記第1のバス又は前記第2のバスに接続されている複数のバスマスタを更に有し、前記マスタデバイスは、通信相手のバスマスタに応じた固有のスレッド情報をライトトランザクションに付加して前記インターフェースへ出力することを特徴とする請求項3又は4に記載のデータ処理装置。
- 前記スレーブデバイスは共有メモリに接続されているメモリ制御手段であることを特徴とする請求項1乃至5のいずれか1項に記載のデータ処理装置。
- 前記インターフェースは、前記マスタデバイスを示すマスタ情報と前記マスタデバイスに割り当てられている共有メモリのアドレス情報を保持する保持手段を備え、ライトトランザクションに付加されているマスタ情報とアドレス情報とが前記保持手段の保持しているマスタ情報とアドレス情報とに一致したときに応答を出力することを特徴とする請求項1記載のデータ処理装置。
- マスタデバイスと、
前記マスタデバイスが接続されている第1のバスと、
スレーブデバイスが接続されている第2のバスと、
第3のバスと、
前記第1のバスと前記第3のバスとの間で接続され、前記マスタデバイスから前記スレーブデバイスへのライトトランザクションを受信すると、前記スレーブデバイスからの応答を待たずに前記マスタデバイスに前記ライトトランザクションに対する応答を出力する第1のインターフェースと、
前記第3のバスと前記第2のバスとの間で接続され、前記第1のインターフェースから前記スレーブデバイスへのライトトランザクションを受信すると、前記スレーブデバイスからの応答を待たずに前記第1のインターフェースに前記ライトトランザクションに対する応答を出力する第2のインターフェースと
を有することを特徴とするデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010277313A JP2012128520A (ja) | 2010-12-13 | 2010-12-13 | データ処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010277313A JP2012128520A (ja) | 2010-12-13 | 2010-12-13 | データ処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012128520A true JP2012128520A (ja) | 2012-07-05 |
Family
ID=46645499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010277313A Pending JP2012128520A (ja) | 2010-12-13 | 2010-12-13 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012128520A (ja) |
-
2010
- 2010-12-13 JP JP2010277313A patent/JP2012128520A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100592271C (zh) | 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法 | |
JP3807250B2 (ja) | クラスタシステム、コンピュータ及びプログラム | |
US7526592B2 (en) | Interrupt control system and storage control system using the same | |
JP5546635B2 (ja) | データ転送装置およびその制御方法 | |
JP2004171209A (ja) | 共有メモリデータ転送装置 | |
US7934029B2 (en) | Data transfer between devices within an integrated circuit | |
WO2008010397A1 (fr) | Contrôleur de mémoire | |
WO2016041191A1 (zh) | 读写数据的方法、装置、存储设备和计算机系统 | |
JP2006293927A (ja) | ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi | |
KR20020009823A (ko) | 버스 시스템 및 그 버스 중재방법 | |
JP2003296267A (ja) | バスシステム及びバスシステムを含む情報処理システム | |
CN104572571A (zh) | 用于处理消息的装置和方法 | |
CN116483259A (zh) | 一种数据处理方法以及相关装置 | |
JP3667585B2 (ja) | 分散メモリ型並列計算機及びそのデータ転送終了確認方法 | |
JP2012128520A (ja) | データ処理装置 | |
JP3615219B2 (ja) | システムコントローラ、コントロールシステムおよびシステムコントロール方法 | |
US8713205B2 (en) | Data transfer device and data transfer method | |
JP2011113163A (ja) | Ioアクセス通信システムにおけるエンドポイント間通信制御装置および方法 | |
JP2010118020A (ja) | リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム | |
JP2008511890A (ja) | アトミック・オペレーションを用いて情報単位を変更する方法及び装置 | |
JP2006338533A (ja) | Ecc回路を有するマルチレイヤバスシステム | |
JP2015014962A (ja) | 演算装置、演算方法、及びプログラム | |
JP6992295B2 (ja) | 電子装置 | |
JP2008165463A (ja) | バス制御装置 | |
JP2005208972A (ja) | コンピュータ装置及びシステム |