(57)【要約】【課題】データの転送効率を向上させたバスシステムを提供する。【解決手段】データ幅が３２ビットのマスタ１０Ａ，１０Ｂと、マスタ１０Ａ，１０Ｂが接続されるマスタ側バス２０Ａ，２０Ｂと、データ幅が６４ビットのスレーブ５０と、スレーブ５０が接続されるスレーブ側バス４０と、マスタ側バス２０Ａ，２０Ｂとスレーブ側バス４０が接続されるバス調停器３０とを備える。そのバス調停器３０は、アドレス生成器３１によって、マスタ１０ＡのアドレスＡに対応したスレーブ５０のアドレスＣＡを生成するとともに、マスタ１０ＢのアドレスＢに対応したスレーブ５０のアドレスＣＢを生成し、スレーブ５０に対して、データＡ，ＢをそれらアドレスＣＡ，ＣＢに書き込む。【選択図】図１
2009129088.tif 000002
【特許請求の範囲】
【請求項１】
互いに独立した複数のマスタと、該複数のマスタがそれぞれ接続される複数のマスタ側バスと、前記複数のマスタのデータが書き込まれる１個のスレーブと、該スレーブが接続されるスレーブ側バスと、前記複数のマスタ側バスと前記スレーブ側バスが接続されるバス調停器とを備え、前記スレーブのデータ幅が前記複数のマスタの内の２以上のマスタの合計データ幅以上であるバスシステムにおいて、
前記バス調停器は、前記複数のマスタの内の２個以上のマスタが発行したアドレスをまとめて前記スレーブのアドレスを生成するアドレス生成手段を有することを特徴とするバスシステム。
【請求項２】
請求項１に記載のバスシステムにおいて、
前記バス調停器は、前記複数のマスタの内の２個以上のマスタが発行したアドレスを前記スレーブのアドレスに変換する変換テーブルを有することを特徴とするバスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ幅の小さい複数のマスタからデータ幅の大きいスレーブにデータ転送を行う際のデータ転送効率を向上させたバスシステムに関するものである。
【背景技術】
【０００２】
データとアドレスを同一バスにより時分割で転送するＰＣＩバス等の多重バス（マルチプレクスバス）において、バースト転送が採用されている。このバースト転送は、マスタ側からスレーブ側に開始アドレスを転送した後は、スレーブ側でそのアドレスがバスサイクルに応じてインクリメントされるようにして、１つのアドレスで複数のデータを連続して転送する手法である。従来では、バースト転送により、例えばデータ幅が３２ビットの２個のマスタから、それらのマスタよりデータ幅の大きい例えば６４ビットのスレーブに、同じバスサイクルでデータを書き込む際、図２、図３に示すように、２通りの転送方法があった。
【０００３】
図２において、１０Ａ，１０Ｂはデータ幅が３２ビットのマスタ、２０Ａ，２０Ｂは３２ビットのマスタ側バス、６０はバス２０Ａ，２０Ｂの一方を選択するバス調停器、４０はバス２０Ａ，２０Ｂのデータ幅の２倍（６４ビット）のスレーブ側バス、５０は６４ビットのスレーブである。
【０００４】
図２に示す方法は、マスタ１０Ａがバス２０Ａ，４０を介して、スレーブ５０に対して、３２ビットのデータＡをバースト転送して書き込む際に、バス調停器６０がバス２０ＡのデータＡを選択するものである。このとき、マスタ１０Ｂはマスタ１０Ａのバースト転送が終了するまでデータ転送を待機する。しかし、この方法は、スレーブ５０のデータ幅がマスタ１０Ａおよび１０Ｂのデータ幅よりも大きいにも拘わらず、バス４０のデータ幅が有効に利用されない。つまり、一方のバス２０Ａのデータ幅しか利用しないため、帯域が無駄になっている。
【０００５】
図３において、７０はデータを２個のバスサイクル毎保持するバス調停器であり、その他は図２と同じである。図３に示す方法は、マスタ１０Ａがバス２０Ａ，４０を介して、スレーブ５０に対して、３２ビットのデータＡをバースト転送して書き込む際に、バス調停器７０がデータＡを２個のバスサイクル毎一時的に保持し、データ幅を２倍の６４ビットにして、スレーブ５０に書き込む方法である。このときも、マスタ１０Ｂはマスタ１０Ａのバースト転送が終了するまで待機する。この方法は、マスタ１０Ａのデータ幅をスレーブ３０のデータ幅に合わせる際に、１個のバスサイクル分だけ、スレーブ５０へのデータ転送が行われないので、図２に示す方法と同様に、帯域が無駄になっている。以上の図２、図３に示す方法は、非特許文献１に記載がある。
【非特許文献１】OCP-IP Association "Open Core Protocol Specification 2.2",2006,OCP-IP Association
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以上の問題は、バスサイクルが同じ、あるいはマスタ１０Ａ，１０Ｂ側とスレーブ５０側とのデータ幅の関係が変わらない限り、不可避である。また、上記問題に加え、マスタ１０Ａ，１０Ｂがスレーブ５０に同時にデータの書き込み転送を行うことはできない。このように、従来では、スレーブのデータ幅を有効利用できず、データの転送効率が悪かった。
【０００７】
本発明の目的は、スレーブのデータ幅を有効利用できるようにして、データの転送効率を向上させたバスシステムを提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、請求項１にかかる発明は、互いに独立した複数のマスタと、該複数のマスタがそれぞれ接続される複数のマスタ側バスと、前記複数のマスタのデータが書き込まれる１個のスレーブと、該スレーブが接続されるスレーブ側バスと、前記複数のマスタ側バスと前記スレーブ側バスが接続されるバス調停器とを備え、前記スレーブのデータ幅が前記複数のマスタの内の２以上のマスタの合計データ幅以上であるバスシステムにおいて、前記バス調停器は、前記複数のマスタの内の２個以上のマスタが発行したアドレスをまとめて前記スレーブのアドレスを生成するアドレス生成手段を有することを特徴とする。
請求項２にかかる発明は、請求項１に記載のバスシステムにおいて、前記バス調停器は、前記複数のマスタの内の２個以上のマスタが発行したアドレスを前記スレーブのアドレスに変換する変換テーブルを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、２個以上のマスタが発行した２個以上のアドレスがバス調停器で結合されスレーブのアドレスが生成されるので、２個以上のマスタから２個以上のデータを同時に１個のスレーブに転送して書き込むことができ、転送効率が向上する。また、スレーブに書き込んだデータの読み出しの際は、マスタから発行したアドレスがバス調停器でスレーブのアドレスに変換されるので、適正にデータ読み出しを実行できる。
【発明を実施するための最良の形態】
【００１０】
１つのマスタが１つのスレーブに書き込み命令を出している間、他のマスタは書き込み命令を出せないことは前述した通りであるが、これは、書き込むことを指定したアドレスに対して、指定したデータが書き込まれることが期待されているからであり、同時に２つのアドレスに書き込み命令を出すことができないことに起因する。
【００１１】
しかし、２つ以上のマスタからスレーブにデータを書き込むとき、それらマスタのデータ幅の合計とスレーブのデータ幅が同じか、あるいはスレーブのデータ幅が大きければ、２つ以上のマスタのアドレスを１つのアドレスにまとめた新たなアドレスを生成することによって、２つ以上のマスタのデータを１個のバスサイクルで同時に１つのスレーブに書き込むことが可能となる。この方法によれば、スレーブのデータ幅が有効利用され、帯域を拡大することが可能となり、転送効率が向上する。
【００１２】
ただし、アドレスを単純にまとめた新たなアドレスを生成するのみでは、各マスタのデータが、スレーブに対して、マスタの命令したアドレスとは別のアドレスに書き込まれるので、後にそのデータを読み出す場合、マスタが書き込み時に命令したアドレスに対し読み出し命令を出しても、期待されたデータが読み出される保証はない。
【００１３】
そこで、スレーブから正しいデータが読み出されることを保証するために、アドレスを補償する必要がある。このための補償手段として、本発明では変換テーブルを用いる。マスタのアドレスがスレーブのアドレスに変換されるように、変換テーブルに、同時読み出しの対象となる個々のマスタ毎のアドレスに対応して、スレーブ側アドレスを登録する。この場合は、２つ以上のマスタのアドレスをまとめるので、記憶すべきマスタのアドレスは２つ以上となるため、記憶したいマスタの数の連想メモリ(ＣＡＭ：Contents Addressable Memory)などの一時的な記憶装置を、変換テーブルとして使用する。
【００１４】
＜実施例＞
図１は本発明の１つの実施例のバスシステムの構成を示すブロック図であり、マスタ１０Ａ，１０Ｂ、マスタ側バス２０Ａ，２０Ｂ，スレーブ側バス４０、およびスレーブ５０は図２，図３に示したものと同じである。すなわち、マスタ１０Ａ，１０Ｂ、バス２０Ａ，２０Ｂのデータ幅は３２ビット、スレーブ５０、バス４０のデータ幅は６４ビットである。３０はバス調停器である。このバス調停器３０は、アドレス生成器３１と連想メモリ３２Ａ，３２Ｂを備える。アドレス生成器３１は、データＡのアドレスＡをスレーブ５０用に変換したアドレスＣＡと、データＢのアドレスＢをスレーブ５０用に変換したアドレスＣＢとからなるアドレスＣを生成する。連想メモリ３２Ａは、アドレスＡをアドレスＣＡに変換する変換テーブルを作成する。連想メモリ３２Ｂは、アドレスＢをアドレスＣＢに変換する変換テーブルを作成する。
【００１５】
以下、動作を説明する。書き込み時には、マスタ１０Ａがスレーブ５０に対する書き込み命令を発行し、同時に、マスタ１０Ｂがスレーブ５０に対する書き込み命令を発行する。バス調停器３０はこれらの命令を受けて、マスタ１０Ａ，１０Ｂから出力されるアドレスＡ，Ｂに応じて、アドレス生成器３１において、アドレスＡに対応するアドレスＣＡとアドレスＢに対応するアドレスＣＢを生成し、このアドレスＣＡとＣＢを結合したアドレスＣをスレーブ５０に対して発行する。これにより、スレーブ５０では、アドレスＣの先頭アドレスを受けて自動インクリメントし、バス２０Ａから到来したデータＡをバス４０の３２ビット分を使用してスレーブ５０にバースト転送し、バス２０Ｂから到来したデータＢをバス４０の残りの３２ビット分を使用してスレーブ５０にバースト転送する。スレーブ５０では、データＡをアドレスＣＡに書き込み、データＢをアドレスＣＢに書き込む。このようにして、マスタ１０Ａ，１０Ｂから発行されたそれぞれ３２ビットのデータＡ，Ｂを、６４ビットのバス４０を経由して、同時にスレーブ５０のアドレスＣに書き込むことができる。
【００１６】
マスタ１０Ａがスレーブ５０からデータＡを読み出すときは、マスタ１０ＡからアドレスＡを発行する。これにより、バス調停器３０において、連想メモリ３２Ａにより、アドレスＡがアドレスＣＡに変換され、このアドレスＣＡによってスレーブ５０からデータＡが読み出され、バス４０，２０Ａを経由してマスタ１０Ａにバースト転送される。マスタ１０Ｂがスレーブ５０からデータＢを読み出すときは、マスタ１０ＢからアドレスＢを発行する。これにより、バス調停器３０において、連想メモリ３２Ｂにより、アドレスＢがアドレスＣＢに変換され、このアドレスＣＢによってスレーブ５０からデータＢが読み出され、バス４０，２０Ｂを経由してマスタ１０Ｂにバースト転送される。
【００１７】
なお、以上の実施例では、マスタ１０Ａ，１０Ｂのデータ幅が３２ビット、スレーブ５０のデータ幅が６４ビットの場合について説明したが、スレーブ５０のデータ幅がマスタ１０Ａ，１０Ｂのデータ幅の合計値以上であれば、同様に実施できる。さらに、マスタは２個に限られるものではなく、３個以上であってその内の２個以上のマスタのデータについても、同様に実施することができる。このときは、データを転送しようとする２個以上のマスタのデータ幅の合計値がスレーブ５０のデータ幅以内か否かを判定する判定手段をバス調停器３０に備えて、その判定結果がＯＫのときに転送を実行させるようにする。さらに、以上では、バースト転送の場合について説明したが、データバスの他にアドレスバスを備えてデータの転送を行う通常のデータ転送の場合にも同様に実施できることは勿論である。
【図面の簡単な説明】
【００１８】
【図１】本発明の１つの実施例のバスシステムの構成を示すブロック図である。
【図２】従来のバスシステムの構成を示すブロック図である。
【図３】従来の別のバスシステムの構成を示すブロック図である。
【符号の説明】
【００１９】
１０Ａ，１０Ｂ：３２ビットのマスタ
２０Ａ，２０Ｂ：３２ビットのバス
３０：バス調停器、３１：アドレス生成器、３２Ａ，３２Ｂ：連想メモリ
４０：６４ビットのバス
５０：６４ビットスレーブ
６０，７０：バス調停器
【図１】
2009129088.tif 000003
【図２】
2009129088.tif 000004
【図３】
2009129088.tif 000005