説明

バス装置

【課題】データの並べ替えによるバス転送の効率向上を実現することのできるバス装置を得る。
【解決手段】インオーダ対応バスマスタ2−1からの転送データにIDを付加し、IDをIDキュー部7で保持する。転送制御部8は、IDキュー部7のIDとバススレーブ3−1、3−2からの転送データのIDが一致した場合はあて先のバスマスタに転送する。一致しない場合は後で転送するとしてトランザクションキュー部9に蓄積する。トランザクションキュー部9の転送データのIDとIDキュー部7のIDが一致した場合、転送制御部8はその転送データをあて先のバスマスタに転送する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、バスマスタとバススレーブ間に接続され、これらのバスマスタとバススレーブ間を相互にデータ転送を行うバス装置に関するものである。
【背景技術】
【0002】
バス装置等のデータの転送方法として、インオーダ転送とアウトオブオーダ転送がある。インオーダ転送とは、複数のコマンドを同時に受け付けた場合に、その順番を保ったままデータの入出力を行う方式であり、アウトオブオーダ転送とは、コマンドを受け付けた順番とは無関係にデータの入出力を行うことができる方式である。
バス装置としての転送効率を向上させるためには、アウトオブオーダに対応したバス装置が必要である。
従来、バススレーブからアウトオブオーダに転送されてくるデータに対してオーダバッファを設けてデータの並べ替えを行うようにしたものがあった(例えば、特許文献1参照)。このようなバス装置は、インオーダに並べ替えるため、求められる順序でレスポンスを転送することができた。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2007−133633号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載されたような従来のバス装置では、データの並べ替えについては開示しているが、並べ替えの制御方法については示されておらず、従って、並べ替えによるバス転送の効率向上を実際に実現するのは困難であった。
【0005】
この発明は上記のような課題を解決するためになされたもので、データの並べ替えによるバス転送の効率向上を実現することのできるバス装置を得ることを目的とする。
【課題を解決するための手段】
【0006】
この発明に係るバス装置は、転送データにIDを付加するID付加部と、IDを付加した転送データを蓄積する入力バッファ部と、入力バッファ部からあて先となるバススレーブへの転送制御を行う調停部と、ID付加部で付加したIDをキューイングするIDキュー部と、IDキュー部にキューイングされているIDと、いずれかのバススレーブから転送されてきたデータのIDの比較を行い、IDが一致した場合は、いずれかのバススレーブからの転送データをあて先となるバスマスタに転送し、一致しなかった場合は、後で転送すると判定する転送制御部と、転送制御部で後で転送すると判定されたIDのデータを蓄積するトランザクションキュー部とを備え、転送制御部は、トランザクションキュー部に蓄積するデータのIDと、IDキュー部からのIDが一致した場合に、そのIDのデータをトランザクションキュー部から取り出してあて先となるバスマスタに転送するようにしたものである。
【発明の効果】
【0007】
この発明のバス装置は、転送データにIDを付加してそのIDをIDキュー部に保持し、このIDキュー部のIDとバススレーブからの転送データのIDが一致した場合はあて先のバスマスタに転送し、一致しない場合は転送データを後で転送すると判定して、トランザクションキュー部に蓄積するようにしたので、データの並べ替えによるバス転送の効率向上を実現することができる。
【図面の簡単な説明】
【0008】
【図1】この発明の実施の形態1によるバス装置を示す構成図である。
【図2】この発明の実施の形態1によるバス装置の動作(その1)の説明図である。
【図3】この発明の実施の形態1によるバス装置の動作(その2)の説明図である。
【図4】この発明の実施の形態1によるバス装置の動作(その3)の説明図である。
【図5】この発明の実施の形態1によるバス装置におけるIDキュー部の格納数の説明図である。
【図6】この発明の実施の形態2によるバス装置を示す構成図である。
【発明を実施するための形態】
【0009】
実施の形態1.
図1は、この発明の実施の形態1によるバス装置1を示す構成図である。
図1において、バス装置1は、複数のバスマスタ(インオーダ対応バスマスタ2−1,アウトオブオーダ対応バスマスタ2−2)と、複数のバススレーブ3−1,3−2との間に設けられる装置であり、インオーダ対応バスマスタ2−1およびアウトオブオーダ対応バスマスタ2−2からの転送データをバススレーブ3−1,3−2に転送する。このバス装置1の内部にはインオーダ対応バスマスタ2−1に対応した構成として、ID付加部4、入力バッファ部5−1、IDキュー部7、転送制御部8、トランザクションキュー部9を設け、アウトオブオーダ対応バスマスタ2−2に対応した構成として、入力バッファ部5−2を設ける。また、バスマスタ2−1,2−2からバススレーブ3−1、3−2への転送データを制御する調停部6−1と、バススレーブ3−1、3−2からバスマスタ2−1,2−2への転送データを制御する調停部6−2を設ける。
【0010】
インオーダ対応バスマスタ2−1とは、転送データを送出した順番でバス装置1から転送データを受け取ることを要求とするマスタである。また、アウトオブオーダ対応バスマスタ2−2とは、転送データを送出した順番に関係なく、転送データを受けとることが可能なマスタである。バス転送効率を高めるにはアウトオブオーダ対応のバス装置が必要である。
【0011】
ID付加部4は、一つのインオーダ対応バスマスタ2−1に対して一つ設けられ、転送データにデータ識別情報であるIDを付加する機能部である。これにより、バス内部においてアウトオブオーダで転送が可能となり、インオーダ対応バスマスタ2−1とアウトオブオーダ対応バスマスタ2−2の混在が許され、バス内部においてアウトオブオーダ転送が可能となる。
【0012】
入力バッファ部5−1,5−2は、それぞれのバスマスタ2−1、2−2に対応して設けられ、各バスマスタ2−1,2−2から送られてきた転送データを格納するバッファである。
調停部6−1は、バスマスタ2−1,2−2からの転送データ(リクエスト)を調停する機能部であり、調停部6−2は、バススレーブ3−1、3−2からの転送データ(レスポンス)を調停する機能部である。
【0013】
IDキュー部7は、一つのインオーダ対応バスマスタ2−1に対して一つ設けられ、ID付加部4で付加されたIDをID付加部4から送られてきたIDデータ4aの順にキューイングするキューである。
【0014】
転送制御部8は、一つのインオーダ対応バスマスタ2−1に対して一つ設けられ、IDキュー部7の出力と、調停部6−2からの転送データのIDとを比較する。また、IDキュー部7の出力と、IDキュー部7からのIDをトランザクションキュー部9からの転送データのIDとを比較する。更に、転送制御部8は、調停部6−2からの転送データIDとIDキュー部7からのIDが一致すれば、調停部6−2からの転送データをインオーダ対応バスマスタ2−1へ転送する。不一致の場合は、トランザクションキュー部9へ調停部6−2から送られてきたデータをキューイングする。そして、転送制御部8は、トランザクションキュー部9にデータがある場合は、IDキュー部7からのIDとトランザクションキュー部9からのIDを比較し、IDが一致すれば、トランザクションキュー部9のデータをインオーダ対応バスマスタ2−1へ送出し、送出された転送データはトランザクションキュー部9から削除するよう構成されている。また、転送制御部8は、調停部6−2とトランザクションキュー部9からのIDがIDキュー部7のIDと一致しない場合は、調停部6−2からの転送データをトランザクションキュー部9に格納する。
【0015】
次に、実施の形態1のバス装置の動作について説明する。図2および図3は動作を説明するための説明図である。
まず、バスマスタ2−1、2−2からデータ転送要求が発行されると、これらのバスマスタ2−1、2−2に対応したそれぞれの入力バッファ部5−1、5−2は、これらの転送データを保持する。インオーダ対応バスマスタ2−1に対してはID付加部4によって入力バッファ部5−1に蓄積する前に転送データにIDを付加する。このようにしてバスマスタからの転送データとそのIDが入力バッファ部5−1とIDキュー部7に蓄積される。図2では、インオーダ対応バスマスタ2−1から、IDキュー部7に、ID1、ID2、ID3の順にIDが三つまでキューイングされたときを示している。
【0016】
次に、入力バッファ部5−1の転送データ5aと入力バッファ部5−2の転送データ5bが調停部6−1で調停され、アウトオブオーダでバススレーブ3−1、3−2に送られる。これにより、今度はバススレーブ3−1、3−2からバスマスタ2−1,2−2へ転送データ(レスポンス)が送られる。アウトオブオーダ対応なので、転送した順序でバス装置1に転送データが送られてくるとは限らない。また、バススレーブ3−1、3−2は同時に転送データを送出する場合もあるため、調停部6−2に転送データが送られ、調停によってどちらか、あるいは両方の転送データが転送制御部8に送られるか、アウトオブオーダ対応バスマスタ2−2への転送であれば、直接、バスマスタ2−2へ送られる。
【0017】
図2では、ID1ではなく、ID2のデータが先にバス装置1に転送されてきた様子を示している。このとき、IDキュー部7ではID1を先にインオーダ対応バスマスタ2−1に転送することを示しているため、ID2のデータをバスマスタ2−1へ転送することはできない。転送制御部8によって要求IDと転送IDを比較し、不一致が生じた場合はトランザクションキュー部9にID2の転送データを保持する。
【0018】
図3は、図2の次の動作を示す説明図である。ID2のデータがトランザクションキュー部9に保持された後、調停部6−2からインオーダ対応バスマスタ2−1への転送としてID1のデータが転送されてきたとする。このとき、IDキュー部7はID1を要求しており、転送制御部8でID1が一致するため、転送制御部8ではID1のデータをインオーダ対応バスマスタ2−1へ転送する。
【0019】
図4は、図3からの次の動作を示す説明図である。ID1のデータが転送終了したため、ID付加部4では次に転送要求があれば、ID1を割り当てることが可能となる。図4では、調停部6−2からID3の転送データが転送制御部8に転送されてきた様子を示している。このとき、IDキュー部7では、ID2の転送を要求しているため、トランザクションキュー部9にあるID2と一致する。転送制御部8では、IDキュー部7と調停部6−2と、トランザクションキュー部9のIDを比較し、一致IDのデータを選択する。このときは、トランザクションキュー部9にあるID2の転送データが選択され、インオーダ対応のバスマスタ2−1に転送データが送られる。同時にID3のデータがトランザクションキュー部9に保持される。このようにして、インオーダ対応バスマスタ2−1が送出した順にバス装置1内部で並べ替えを行う。並べ替えることが不要な転送データに対しては、転送制御部8によって直ちにインオーダ対応バスマスタ2−1に転送されるため、データ転送が遅れることはない。
【0020】
またIDは、入力バッファ部5−1で格納可能なデータ数と同じだけのIDが割り当てられることが考えられる。つまり、IDの割り当て範囲が16進数0x0から0xFまでであれば16個のデータを格納可能ということになる。0xFの次は0x0に戻るようにしてIDの割り当てビット幅が大きくならないようにすることがコスト削減のために望まれる。
【0021】
しかしながら、アウトオブオーダで転送する場合、一つのバスマスタから、バススレーブからのレスポンスを待たずに複数のバススレーブへ転送することが可能であるため、IDの割り当てを入力バッファ部5−1での格納データ数にバススレーブ数を加算した値のID割り当てを許可する。即ち、入力バッファ部5−1での格納データ数が16個であり、バススレーブ3−1、3−2の個数が2個であった場合、16+2=18個のID割り当てとする。
図5は、この状態を示す説明図である。
図示例では、ID3のデータはバススレーブ3−1、3−2から既に転送が完了しており、トランザクションキュー部9に格納されている。また、バススレーブ3−1はID1のデータ転送を処理中、バススレーブ3−2は、ID2のデータ転送を処理中であるとする。また、入力バッファ部5−1にはID4,3,5の3個の転送データが格納されている。このとき、IDキュー部7には入力バッファ部5−1の格納数+バススレーブの個数=5個のIDが格納される。
このようにすることで、ID割り当て範囲を最小限にすることが可能になり、コストを削減することができる。
【0022】
アウトオブオーダ対応のバスマスタ2−2はIDがバスマスタ内部ですでに与えられているとしているが、バス装置1内部でID付加部4によってIDを付加することも可能である。
【0023】
また、バス装置1は、明らかにアウトオブオーダ対応のバスマスタには、IDキュー部7、転送制御部8、トランザクションキュー部9は不要である。
【0024】
更に、IDキュー部7からは、キューがフルになった、あるいはある一定のデータ数がキューイングされた場合、優先信号7a(図1参照)を調停部6−1、6−2に送出するようにしてもよい。IDキュー部7にデータが蓄積されているということは、そのバスマスタの要求が調停部6−1、あるいは6−2によって優先されていないことを示しており、キューイングされたデータ数が多いほど、そのレイテンシは大きくなる。そこで、キューイング数に基づいて優先信号7aを生成して調停部6−1または6−2に送出する。優先信号7aを受信した調停部6−1または6−2において、そのバスマスタからの、あるいはバスマスタへの転送データを優先的に選択する。
【0025】
さらに、トランザクションキュー部9においてもキューイング数がフル、あるいは一定の値になった場合、同様に優先信号9a(図1参照)を調停部6−1または6−2に送出するようにしてもよい。
【0026】
以上のように、実施の形態1のバス装置によれば、任意のバスマスタからの転送データをあて先となるバススレーブに転送するバス装置において、転送データにIDを付加するID付加部と、IDを付加した転送データを蓄積する入力バッファ部と、入力バッファ部からあて先となるバススレーブへの転送制御を行う調停部と、ID付加部で付加したIDをキューイングするIDキュー部と、IDキュー部にキューイングされているIDと、いずれかのバススレーブから転送されてきたデータのIDの比較を行い、IDが一致した場合は、いずれかのバススレーブからの転送データをあて先となるバスマスタに転送し、一致しなかった場合は、後で転送すると判定する転送制御部と、転送制御部で後で転送すると判定されたIDのデータを蓄積するトランザクションキュー部とを備え、転送制御部は、トランザクションキュー部に蓄積するデータのIDと、IDキュー部からのIDが一致した場合に、IDのデータをトランザクションキュー部から取り出してあて先となるバスマスタに転送するようにしたので、データの並べ替えによるバス転送の効率向上を実現することができ、しかも、少ないバッファ容量でこれを実現することができる。
【0027】
また、実施の形態1のバス装置によれば、IDキュー部のキューの段数を、入力バッファ部の格納可能データ数とバススレーブ数とを加算した数としたので、ID割り当て範囲を最小限にすることが可能になり、コストを削減することができる。
【0028】
また、実施の形態1のバス装置によれば、調停部は、IDキュー部において、キューイングされたID数がある一定の値を超えると、IDキュー部にあるIDのデータを優先的に転送するようにしたので、更に効率的なデータ転送を行うことができる。
【0029】
実施の形態2.
図6は、この発明の実施の形態2によるバス装置1−1を示す構成図である。
実施の形態2のバス装置1aでは、実施の形態1のトランザクションキュー部9の代わりにトランザクションメモリ部10を設けている。このトランザクションメモリ部10は、IDキュー部7からのID情報7bに基づいて、IDをアドレスとして転送データを保持するメモリであり、転送制御部8aによって調停部6−2から送られてきた不一致の転送データをそのIDに対応したアドレスに保持する。また、トランザクションメモリ部10には、各転送データに対するIDが有効か否かを示すValidフラグ(図示せず)を備えている。
【0030】
また、トランザクションメモリ部10は転送制御部8aからID情報が送られてきた場合は、そのIDに対応したデータがあるかを調べ、あった場合はデータを転送制御部8aへ送出すると共に、Validフラグの情報であるValid情報10aを送出する。転送制御部8aは、基本的な機能は実施の形態1の転送制御部8と同様であるが、IDキュー部7からIDが送られてきた場合は、このIDをトランザクションメモリ部10に送出し、Valid情報10aが「Valid」を示していた場合にそのデータをあて先のバスマスタに転送するよう構成されている。それ以外の構成は、実施の形態1と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【0031】
次に、実施の形態2のバス装置の動作について説明する。
先ず、ID付加部4によるIDの付加やIDキュー部7におけるIDの格納といったバススレーブ3−1、3−2へのデータの送出については実施の形態1と同様である。また、実施の形態2においても、転送制御部8aは、実施の形態1と同様に、並べ替えが不要な転送データに対しては直ちにあて先となるインオーダ対応バスマスタ2−1に転送し、IDキュー部7からのIDと一致しなかった転送データはトランザクションメモリ部10に書き込む。トランザクションメモリ部10では、転送データが書き込まれると、そのValidフラグを「Valid」とする。
【0032】
また、転送制御部8aは、IDキュー部7からIDをトランザクションメモリ部10に送出する。トランザクションメモリ部10では、IDを受け取ると、そのIDに対応したアドレスに転送データが格納されているかを調べ、あった場合は、その転送データを転送制御部8aに送出すると共に、Valid情報10aを「Valid」として送出する。また、転送されたデータのValidフラグは「Invalid」とする。一方、そのアドレスに転送データが格納されていなかった場合は、Valid情報10aとして「Invalid」を送出する。このような処理を行うことにより、実施の形態1と同様に、インオーダ対応バスマスタ2−1が送出した順番にバス装置1a内部で並べ替えを行うことができる。
【0033】
尚、実施の形態2においても、IDキュー部7から調停部6−1または調停部6−2に対して優先信号7aを送出するようにしてもよい。
【0034】
以上のように、実施の形態2のバス装置によれば、トランザクションキュー部の代わりに、IDをアドレスとしたトランザクションメモリ部を備えたので、トランザクションメモリ部にあるデータは1サイクルでバスマスタへ送出可能である。そのため、レイテンシを改善することができる。
【符号の説明】
【0035】
1,1a バス装置、2−1 インオーダ対応バスマスタ、2−2 アウトオブオーダ対応バスマスタ、3−1,3−2 バススレーブ、4 ID付加部、4a IDデータ、5−1,5−2 入力バッファ部、5a,5b 転送データ、6−1,6−2 調停部、7 IDキュー部、7a,9a 優先信号、7b ID情報、8,8a 転送制御部、9 トランザクションキュー部、10 トランザクションメモリ部。

【特許請求の範囲】
【請求項1】
任意のバスマスタからの転送データをあて先となるバススレーブに転送するバス装置において、
前記転送データにIDを付加するID付加部と、
前記IDを付加した転送データを蓄積する入力バッファ部と、
前記入力バッファ部からあて先となるバススレーブへの転送制御を行う調停部と、
前記ID付加部で付加したIDをキューイングするIDキュー部と、
前記IDキュー部にキューイングされているIDと、いずれかのバススレーブから転送されてきたデータのIDの比較を行い、当該IDが一致した場合は、前記いずれかのバススレーブからの転送データをあて先となるバスマスタに転送し、一致しなかった場合は、後で転送すると判定する転送制御部と、
前記転送制御部で後で転送すると判定されたIDのデータを蓄積するトランザクションキュー部とを備え、
前記転送制御部は、前記トランザクションキュー部に蓄積するデータのIDと、前記IDキュー部からのIDが一致した場合に、当該IDのデータをトランザクションキュー部から取り出してあて先となるバスマスタに転送することを特徴とするバス装置。
【請求項2】
IDキュー部のキューの段数を、入力バッファ部の格納可能データ数とバススレーブ数とを加算した数としたことを特徴とする請求項1記載のバス装置。
【請求項3】
調停部は、IDキュー部において、キューイングされたID数がある一定の値を超えると、前記IDキュー部にあるIDのデータを優先的に転送することを特徴とする請求項1または請求項2記載のバス装置。
【請求項4】
トランザクションキュー部の代わりに、IDをアドレスとしたトランザクションメモリ部を備えたことを特徴とする請求項1から請求項3のうちのいずれか1項記載のバス装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate