(57)【特許請求の範囲】
【請求項１】
複数のバスマスタと、
複数のバススレーブと、
最大でｎビット幅のリードデータを転送可能なリードデータ転送経路を含むバス転送装置とを備え、
データ読出し時に、各前記バスマスタから出力されたリードアドレスは、出力元のバスマスタを識別しかつトランザクションを識別するための識別情報とともに前記リードアドレスを有するバススレーブに転送され、前記リードアドレスを有するバススレーブは、前記リードアドレスに対応するリードデータを前記識別情報とともに前記バス転送装置に出力し、
前記バス転送装置は、前記複数のバススレーブのうちの同じまたは異なるバススレーブから出力された合計してｎビット以下のデータ幅を有する第１および第２のリードデータを転送する場合に、前記第１および第２のリードデータを統合し、統合されたリードデータと、前記第１および第２のリードデータにそれぞれ対応するトランザクションの発行元のバスマスタを示す第１および第２の識別情報とを同時に、前記リードデータ転送経路を介して転送可能なように構成され、
前記バス転送装置は、前記リードデータ転送経路を介して前記統合されたリードデータとともに転送された前記第１および第２の識別情報に基づいて、転送された前記第１および第２のリードデータを、前記複数のバスマスタのうちのそれぞれ対応する同じまたは異なるバスマスタに入力する、半導体装置。
【請求項２】
前記複数のバススレーブは、ｎ／２ビット以下のデータ幅のリードデータを出力する第１のバススレーブを含み、
前記バス転送装置は、さらに、
前記第１のバススレーブに接続され、前記リードデータ転送経路が他のバススレーブによって使用中の場合に、前記第１のバススレーブが出力するリードデータを保持する第１のデータバッファと、
前記第１のバススレーブおよび前記第１のデータバッファと前記リードデータ転送経路との間に接続され、前記第１のバススレーブが出力するリードデータ、または前記第１のデータバッファに保持されたリードデータ、またはこれらのリードデータが統合されたデータのいずれかを出力可能な第１のデータ選択回路とを含む、請求項１に記載の半導体装置。
【請求項３】
前記バス転送装置は、さらに、前記リードデータ転送経路と前記複数のバスマスタとの間に接続されたデータ分配回路を含み、
前記データ分配回路は、前記第１および第２のリードデータが統合されたリードデータを受けた場合において、同時転送された前記第１の識別情報が示している第１のバスマスタが、前記第２の識別情報が示している第２のバスマスタと異なる場合には、前記第１のバスマスタに前記第１のリードデータを入力し、前記第２のバスマスタに前記第２のリードデータを入力する、請求項２に記載の半導体装置。
【請求項４】
前記バス転送装置は、さらに、
前記リードデータ転送経路と前記複数のバスマスタとの間に接続されたデータ分配回路と、
前記複数のバスマスタにそれぞれ対応して設けられ、各々が、前記データ分配回路と対応するバスマスタとの間に接続された複数の入力用データバッファとを含み、
前記データ分配回路は、前記第１および第２のリードデータが統合されたリードデータを受けた場合において、同時転送された前記第１の識別情報が示している第１のバスマスタが、前記第２の識別情報が示しているバスマスタと同一の場合には、統合された前記第１および第２のリードデータのうち先に前記第１のバススレーブから出力されたリードデータを前記第１のバスマスタに入力し、後から前記第１のバススレーブから出力されたリードデータを前記第１のバスマスタに対応する入力用データバッファに入力する、請求項２に記載の半導体装置。
【請求項５】
前記複数のバススレーブは、さらに、ｎ／２ビット以下のデータ幅のリードデータを出力する第２のバススレーブを含み、
前記バス転送装置は、さらに、
前記第２のバススレーブに接続され、前記リードデータ転送経路が他のバススレーブによって使用中の場合に、前記第２のバススレーブが出力するリードデータを保持する第２のデータバッファと、
前記第２のバススレーブおよび前記第２のデータバッファと前記リードデータ転送経路との間に接続され、前記第２のバススレーブが出力するリードデータ、または前記第２のデータバッファに保持されたリードデータ、またはこれらのリードデータが統合されたデータのいずれかを出力可能な第２のデータ選択回路と、
前記第１および第２のデータ選択回路と前記リードデータ転送経路との間に接続され、前記第１のデータ選択回路が出力するリードデータ、または前記第２のデータ選択回路が出力するリードデータ、またはこれらのリードデータが統合されたリードデータのいずれかを出力可能な第３のデータ選択回路とを含む、請求項２に記載の半導体装置。
【請求項６】
前記バス転送装置は、複数のリードデータの間で前記リードデータ転送経路への出力の優先順位を調停するデータアービタをさらに含み、
前記第１のデータ選択回路は、前記第１のデータバッファに保持されたリードデータが第１番目の優先順位を有し、かつ、前記第１のバススレーブが出力するリードデータが第２番目の優先順位を有している場合に、これらのリードデータを統合して出力可能である、請求項２に記載の半導体装置。
【請求項７】
前記第１および第２のリードデータの各々は、対応するリードアドレスに応じて前記リードデータ転送経路上で使用するビットが決定され、
前記バス転送装置は、前記第１および第２のリードデータの使用するビットが重なっていない場合に、前記第１および第２のリードデータを統合して転送可能である、請求項１に記載の半導体装置。
【請求項８】
複数のバスマスタと、
複数のバススレーブと、
最大でｎビット幅のライトデータを転送可能なライトデータ転送経路を含むバス転送装置とを備え、
データ書込み時に、各前記バスマスタから出力されたライトアドレスおよびライトデータの各々は、出力元のバスマスタを識別しかつトランザクションを識別するための識別情報とともに前記ライトアドレスを有するバススレーブに転送され、
前記バス転送装置は、前記複数のバスマスタのうちの同じまたは異なるバスマスタから出力された合計してｎビット以下のデータ幅を有する第１および第２のライトデータを転送する場合に、前記第１および第２のライトデータを統合し、統合されたライトデータと、前記第１および第２のライトデータにそれぞれ対応するトランザクションの発行元のバスマスタを示す第１および第２の識別情報とを同時に、前記ライトデータ転送経路を介して転送可能なように構成され、
前記バス転送装置は、前記ライトデータ転送経路を介して前記統合されたライトデータとともに転送された前記第１および第２の識別情報に基づいて、転送された前記第１および第２のライトデータを、前記複数のバススレーブのうちのそれぞれ対応するライトアドレスを有する同じまたは異なるバススレーブに入力する、半導体装置。
【請求項９】
前記複数のバスマスタは、ｎ／２ビット以下のデータ幅のライトデータを出力する第１のバスマスタを含み、
前記バス転送装置は、さらに、
前記第１のバスマスタに接続され、前記ライトデータ転送経路が他のバスマスタによって使用中の場合に、前記第１のバスマスタが出力するライトデータを保持する第１のデータバッファと、
前記第１のバスマスタおよび前記第１のデータバッファと前記ライトデータ転送経路との間に接続され、前記第１のバスマスタが出力するライトデータ、または前記第１のデータバッファに保持されたライトデータ、またはこれらのライトデータが統合されたデータのいずれかを出力可能な第１のデータ選択回路とを含む、請求項８に記載の半導体装置。
【請求項１０】
前記バス転送装置は、さらに、前記ライトデータ転送経路と前記複数のバススレーブとの間に接続されたデータ分配回路を含み、
前記データ分配回路は、前記第１および第２のライトデータが統合されたライトデータを受けた場合において、同時転送された前記第１の識別情報に対応するライトアドレスを有する第１のバススレーブが、前記第２の識別情報に対応するライトアドレスを有する第２のバススレーブと異なる場合には、前記第１のバススレーブに前記第１のライトデータを入力し、前記第２のバススレーブに前記第２のライトデータを入力するように構成される、請求項９に記載の半導体装置。
【請求項１１】
前記バス転送装置は、さらに、
前記ライトデータ転送経路と前記複数のバススレーブとの間に接続されたデータ分配回路と、
前記複数のバススレーブにそれぞれ対応して設けられ、各々が、対応するバススレーブと前記データ分配回路との間に設けられた複数の入力用データバッファを含み、
前記データ分配回路は、前記第１および第２のライトデータが統合されたライトデータを受けた場合において、同時転送された前記第１の識別情報に対応するライトアドレスを有する第１のバススレーブが、前記第２の識別情報に対応するライトアドレスを有するバススレーブと同じ場合には、統合された前記第１および第２のライトデータのうち先に前記第１のバスマスタから出力されたライトデータを、前記第１のバススレーブに入力し、後から前記第１のバスマスタから出力されたライトデータを、前記第１のバススレーブに対応する入力用データバッファに入力する、請求項９に記載の半導体装置。
【請求項１２】
前記複数のバスマスタは、さらに、ｎ／２ビット以下のデータ幅のライトデータを出力する第２のバスマスタを含み、
前記バス転送装置は、さらに、
前記第２のバスマスタに接続され、前記ライトデータ転送経路が他のバスマスタによって使用中の場合に、前記第２のバスマスタが出力するライトデータを保持する第２のデータバッファと、
前記第２のバスマスタおよび前記第２のデータバッファと前記ライトデータ転送経路との間に接続され、前記第２のバスマスタが出力するライトデータ、または前記第２のデータバッファに保持されたライトデータ、またはこれらのライトデータが統合されたデータのいずれかを出力可能な第２のデータ選択回路と、
前記第１および第２のデータ選択回路と前記ライトデータ転送経路との間に接続され、前記第１のデータ選択回路が出力するライトデータ、または前記第２のデータ選択回路が出力するライトデータ、またはこれらのライトデータが統合されたライトデータのいずれかを出力可能な第３のデータ選択回路とを含む、請求項９に記載の半導体装置。
【請求項１３】
前記バス転送装置は、複数のライトデータの間で前記ライトデータ転送経路への出力の優先順位を調停するデータアービタをさらに含み、
前記第１のデータ選択回路は、前記第１のデータバッファに保持されたライトデータが第１番目の優先順位を有し、かつ、前記第１のバスマスタが出力するライトデータが第２番目の優先順位を有している場合に、これらのライトデータを統合して出力可能である、請求項９に記載の半導体装置。
【請求項１４】
前記第１および第２のライトデータは、それぞれ対応する第１および第２のライトアドレスに応じて前記ライトデータ転送経路上で使用するビットが決定され、
前記バス転送装置は、前記第１および第２のライトデータの使用するビットが重なっていない場合に、前記第１および第２のライトデータを統合して転送可能である、請求項８に記載の半導体装置。                                                                                
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体装置に関し、たとえば、半導体装置の論理ユニット間でのバス転送に好適に用いられるものである。
【背景技術】
【０００２】
英国ＡＲＭ（登録商標）社が策定しているシステムＬＳＩ（Large Scale Integration）向けのオンチップ・バス規格としてＡＭＢＡ（登録商標）（Advanced Microcontroller Bus Architecture）が知られている。ＡＭＢＡ（登録商標）３．０では、高性能なシステムＬＳＩ向けのＡＸＩ（Advance eXtensible Interface）プロトコルが追加されている。ＡＸＩプロトコルでは、アドレスとデータとを互いに独立して転送可能なスプリットトランザクションが採用されている。
【０００３】
特開２００６−３３１４２６号公報（特許文献１）は、スプリットトランザクションプロトコルを使用するとともにアウト・オブ・オーダでデータ転送が可能なバス転送装置を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３３１４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本件の発明者は、従来のバス転送装置の機能検証を行うことによって以下の問題点があることに気付いた。すなわち、従来のバス転送装置の場合、メモリなどに（または、メモリなどから）データをバースト転送する場合には、バス幅全部が使用されてバスの占有率が高い。これに対して、ビット幅の小さなデータは、バス幅全部を使用しない。このようなビット幅の小さな転送データは、バス幅を広げてもデータ転送使用するバス幅は変化しないので、転送効率が上がらない。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施形態による半導体装置は、最大でｎビット幅のリードデータを転送可能なリードデータ転送経路を含むバス転送装置を備える。バス転送装置は、第１および第２のトランザクションにそれぞれ対応する第１および第２のリードデータのビット幅の合計値がｎビット以下の場合に、両リードデータを統合したデータと第１および第２のトランザクション識別情報とを同時に、リードデータ転送経路を介して転送可能である。
【発明の効果】
【０００８】
上記の実施形態によれば、バス転送装置の転送効率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】半導体装置の全体構成を示すブロック図である。
【図２】図１のバス転送装置のうちリードアドレス転送およびリードデータ転送に関係する部分の詳細な構成を示すブロック図である。
【図３】図２のバス転送装置によるリードデータ転送の具体例を示すタイミング図である。
【図４】第２の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。
【図５】図４のバス転送装置によるリードデータ転送の具体例を示すタイミング図である。
【図６】第３の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。
【図７】図６のバス転送装置によるリードデータ転送の具体例を示すタイミング図である。
【図８】図１のバス転送装置のうちライトアドレス転送およびライトデータ転送に関係する部分の詳細な構成を示すブロック図である。
【図９】図８のバス転送装置によるライトデータ転送の具体例を示すタイミング図である。
【図１０】第５の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。
【図１１】図１０のバス転送装置によるライトデータ転送の具体例を示すタイミング図である。
【図１２】第６の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。
【図１３】図１２のバス転送装置によるライトデータ転送の具体例を示すタイミング図である。
【発明を実施するための形態】
【００１０】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１１】
＜半導体装置の全体構成＞
図１は、半導体装置の全体構成を示すブロック図である。図１を参照して、半導体装置は、バスマスタ（Ｍ１，Ｍ２）１０，１２と、バススレーブ（Ｓ１，Ｓ２）２０，２２と、バスマスタ１０，１２とバススレーブ２０，２２とを接続するバス転送装置３０とを含む。
【００１２】
たとえば、バスマスタ（Ｍ１，Ｍ２）１０，１２の例として、ＣＰＵ（Central Processing Unit）およびＤＭＡ（Direct Memory Access）コントローラなどを挙げることができる。バススレーブ（Ｓ１，Ｓ２）２０，２２の例として、周辺Ｉ／Ｏ（Input/ Output）装置およびメモリ装置などを挙げることができる。周辺Ｉ／Ｏ装置には、ＤＭＡコントローラを内蔵することにより、バスマスタとして機能するものが含まれている場合もある。
【００１３】
バス転送装置３０は、アドレスを転送するためのアドレス転送経路４０と、リードデータを転送するためのリードデータ転送経路４４と、ライトデータを転送するためのライトデータ転送経路４６とを含む。リードアドレスＲＡＤＤＲおよびライトアドレスＷＡＤＤＲ（各々をアドレスＡＤＤＲと略記する場合もある）は、バスマスタＭ１，Ｍ２からバススレーブＳ１，Ｓ２の方向へアドレス転送経路４０を転送する。リードデータＲＤＡＴＡは、バススレーブＳ１，Ｓ２からバスマスタＭ１，Ｍ２の方向へリードデータ転送経路４４を転送する。ライトデータＷＤＡＴＡは、バスマスタＭ１，Ｍ２からバススレーブＳ１，Ｓ２の方向へライトデータ転送経路４６を転送する。
【００１４】
バス転送装置３０では、１つのトランザクションでのアドレス転送とデータ転送とは独立して実行可能である（すなわち、バス転送装置３０は、スプリットトランザクションを採用している）。詳しくは後述するように、スプリットトランザクションを実現するために、リードアドレスＲＡＤＤＲ、ライトアドレスＷＡＤＤＲ、リードデータＲＤＡＴＡ、およびライトデータＷＤＡＴＡには、どのバスマスタが発行したどのトランザクションに対応するものであるかを区別するためにＩＤ（識別情報：identification data）が付される。
【００１５】
この明細書では、アドレス転送経路４０、リードデータ転送経路４４、およびライトデータ転送経路４６を、それぞれアドレスバス、リードデータバス、ライトデータバスとも称する。ＡＸＩプロトコルでは、従来のＡＨＢ（Advanced High-performance Bus）プロトコルに従うアドレスバス、リードデータバス、ライトデータバスと区別するために、アドレスチャネル、リードデータチャネル、ライトデータチャネルという呼び名を用いている。しかしながら、簡単のために、この明細書ではＡＸＩプロトコルに従う場合も「チャネル」ではなく「バス」という用語を用いる。
【００１６】
バス転送装置３０は、さらに、リードアドレスＲＡＤＤＲ、ライトアドレスＷＡＤＤＲ、リードデータＲＤＡＴＡ、およびライトデータＷＤＡＴＡの転送を制御するバス制御部３２（３２Ａ，３２Ｂ）を含む。図１のようにマスタ側とスレーブ側とを区別する場合は、バス制御部３２Ａおよびバス制御部３２Ｂのように記載する。以下、各実施形態のバス制御部３２の構成および動作について詳しく説明する。
【００１７】
＜第１の実施形態＞
図２は、図１のバス転送装置のうちリードアドレス転送およびリードデータ転送に関係する部分の詳細な構成を示すブロック図である。図２を参照して、バス制御部３２は、アドレスアービタ２１５と、アドレスデコーダ２２５と、状態論理回路２３５と、データアービタ２４０と、ＩＤデコーダ２６０と、データバッファ２４６と、マルチプレクサ２１０，２５０，２５４と、デマルチプレクサ２２０，２３０，２６６とを含む。
【００１８】
［リードアドレスの転送］
まず、リードアドレスの転送について説明する。図２に示すように、バスマスタＭ１はリードアドレス２００を発行し、バスマスタＭ２はリードアドレス２０５を発行するものとする。アドレス選択回路（マルチプレクサ）２１０は、２つの異なるバスマスタＭ１，Ｍ２からそれぞれリードアドレス２００，２０５を受信する。アドレスアービタ２１５はマルチプレクサ２１０を制御してアドレスバスの使用を求める複数のリードアドレス間の調停を行う。
【００１９】
さらに、アドレス選択回路２１０は、受信したリードアドレスごとに、リードアドレスのソース（すなわち、どのバスマスタがどのリードトランザクションを発行したか）を識別するためのＩＤ値（ＡＲＩＤ）を生成する。アドレス選択回路２１０は、生成したＩＤ値（ＡＲＩＤ）をそのＩＤ値に対応するリードアドレス（ＲＡＤＤＲ）に付加し、リードアドレスと共にＩＤ値をアドレス転送経路４０に出力する。
【００２０】
各リードアドレス（ＲＡＤＤＲ）およびＩＤ値（ＡＲＩＤ）は、アドレス転送経路４０を通ってアドレス分配回路（デマルチプレクサ）２２０へ送られる。図２において、リードアドレスに付随したＩＤ値であることを強調するために、「ＡＲＩＤ」と記載している。同じバスマスタが発行した同じトランザクションであれば、リードアドレスに付随するＩＤ値（ＡＲＩＤ）とそのリードアドレスに対応するリードデータに付随するＩＤ値（ＲＩＤ）とは同じ値である。
【００２１】
アドレス分配回路２２０は、アドレスデコーダ２２５からの出力によって制御される。具体的に、アドレスデコーダ２２５は、リードアドレスＲＡＤＤＲをデコードすることによって、どのバススレーブがリードアドレスに対応する目標バススレーブであるかを決定する。続いて、アドレスデコーダ２２５はデマルチプレクサ２２０にスレーブ番号Ｓ＃を出力する。デマルチプレクサ２２０は、スレーブ番号Ｓ＃に従って、リードアドレスおよび対応するＩＤ値を、スレーブＳ１用リードアドレス２２２またはスレーブＳ２用リードアドレス２２４として要求された目標バススレーブへ出力する。
【００２２】
スレーブ番号Ｓ＃の情報は、対応するＩＤ値（ＡＲＩＤ）の情報とともにスレーブ番号分配回路（デマルチプレクサ）２３０にも入力される。スレーブ番号分配回路２３０は、ＩＤ値（ＡＲＩＤ）毎に、入力されたスレーブ番号Ｓ＃を分配する。
【００２３】
状態論理回路２３５は、概念的には、スレーブ番号Ｓ＃の情報を格納する先入れ先出し（ＦＩＦＯ）バッファが、ソースＩＤ毎に設けられていると考えることができる。デマルチプレクサ２３０は、受信したＩＤ値（ＡＲＩＤ）に基づいて、アドレスデコーダ２２５から受信したスレーブ番号Ｓ＃を状態論理回路２３５の適切なＦＩＦＯバッファに送る。このスレーブ番号Ｓ＃の情報は、データアービタ２４０によって調停結果として選択されるまで、状態論理回路２３５内に保持される。
【００２４】
実際上は、状態論理回路２３５は、ＩＤ値毎に個別に設けられた複数のＦＩＦＯバッファとして構成される必要はない。状態論理回路２３５は、複数のリードデータの入力が同じＩＤ値を有する場合に、リードアドレス出力の順番に対応付けられるように（すなわち、同じＩＤ値を有するアドレスに対応するリードデータはアドレスが発行されたのと同じ順序で戻すことができるように）構成されていればよい。
【００２５】
［データアービタによる調停について］
データアービタ２４０は、状態論理回路２３５を参照することによってリードデータバス４４を介して転送すべきリードデータを順次選択する。データアービタ２４０による正当な調停対象となるのは、各ＦＩＦＯバッファの先頭のスレーブ番号Ｓ＃である。すなわち、各ＩＤ値に対して１つのスレーブ番号Ｓ＃のみが正当な調停対象となる。同じＩＤ値を有するリードデータは対応するアドレスが発行されたのと同じ順序で戻さなければならないという制約があるからである。
【００２６】
したがって、状態論理回路２３５内に１つの正当な調停対象しかない場合、データアービタ２４０は、その正当な調停対象に対応するスレーブ番号Ｓ＃をＦＩＦＯバッファから取り出して、対応するＩＤ値（ＡＲＩＤ）とともにデータ選択回路（マルチプレクサ）２５０，２５４およびデータバッファ２４６に通知する。複数の正当な調停対象がある場合、データアービタ２４０は、予め定められた調停指針（優先順位）に従って次にデータ転送すべきリードデータの出力元となるスレーブの番号Ｓ＃を決定し、決定したスレーブ番号Ｓ＃をＦＩＦＯバッファから取り出して、対応するＩＤ値（ＡＲＩＤ）とともにデータ選択回路（マルチプレクサ）２５０，２５４およびデータバッファ２４６に通知する。データアービタ２４０はマスタ、スレーブ、ＩＤ値、またはそれらの任意の組合せに基づいて複数の正当な調停対象の間の優先順位付けを行うことができる。
【００２７】
［リードデータの転送］
次に、リードデータの転送について説明する。図２に示すリードデータ転送経路４４は、最大ビット幅ｎビットのデータを転送可能である。さらに、リードデータ転送経路４４は、リードデータと同時に、リードデータＲＤＡＴＡを識別するためのＩＤ値を複数転送可能である（図２では２個のＩＤ値（ＲＩＤ１，ＲＩＤ２）を転送可能である）。たとえば、ｍビットのビットサイズのＩＤ値を２個転送可能な場合、リードデータ転送経路４４に必要な信号線の本数は、ｎ＋２×ｍとなる。
【００２８】
以下では、バススレーブＳ１から読み出されたリードデータ２４２は、ｎ／２ビット以下のデータ幅を有するとする（リードデータ２４２のデータ幅が可変の場合には、データ幅がｎビットに等しくなる場合もあり得る）。バススレーブＳ２から読み出されたリードデータ２４４は、ｎビットのデータ幅であるとする。バーストモードの場合には、バススレーブＳ２からデータ幅ｎビットのデータが複数回繰り返して出力される。さらに、バススレーブＳ１，Ｓ２は、リードデータ以外にＩＤ値などの付随情報も出力する。
【００２９】
具体的に、バススレーブＳ１は、リードデータ２４２と、リードデータ２４２に対応するＩＤ値（ＲＩＤ）と、リードデータ転送経路４４を構成するｎビットのデータ線の中でリードデータが占める位置情報とを出力する。たとえば、データ線のビット数ｎを１２８ビットとし、バススレーブＳ１が出力するデータのビット幅を３２ビット（固定）とすると、位置情報は、第１〜３２ビット、第３３〜６４ビット、第６５〜９６ビット、第９７〜第１２８ビットの４通りある。バススレーブＳ１は、リードデータが格納されているリードアドレスに対応付けて、リードデータが使用する位置情報を自動的に決定することができる。バススレーブＳ１が出力するリードデータ２４２のデータ幅が可変の場合には、バススレーブＳ１からデータサイズの情報がさらに出力される。
【００３０】
バススレーブＳ２は、リードデータ２４４と、リードデータ２４４に対応するＩＤ値（ＲＩＤ）とを出力する。バススレーブＳ２が出力するデータ幅はｎビットであり、リードデータ転送経路４４のデータ線のビット数に一致しているので、位置情報は必要でない。
【００３１】
データアービタ２４０は、データ選択回路（マルチプレクサ）２５０，２５４およびデータバッファ２４６に、調停結果としてのスレーブ番号Ｓ＃および対応するＩＤ値（ＡＲＩＤ）を通知する。
【００３２】
データバッファ２４６は、スレーブＳ１から出力されたリードデータ２４２および関連する付随情報（ＩＤ値、リードデータバス幅内でのデータの位置情報）を一時的に保持するために用いられる。具体的に、データバッファ２４６は、スレーブＳ１から出力されたリードデータ２４２をリードデータ転送経路４４に転送できない場合（すなわち、リードデータ転送経路４４が他のスレーブによって使用中のとき）であり、かつ、リードデータ２４２のデータ幅がｎビットよりも小さいときに用いられる。
【００３３】
データ選択回路（マルチプレクサ）２５０は、データアービタ２４０の調停結果に従って、スレーブＳ１から出力されたリードデータ２４２と、データバッファ２４６に保持されたリードデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。２つのリードデータを同時出力する条件については後述する。マルチプレクサ（データ選択回路２５０）は、リードデータを出力する場合は対応するＩＤ値（ＲＩＤ）とともに出力する。したがって、スレーブＳ１から出力されたリードデータ２４４とデータバッファ２４６に保持されたリードデータとの両方同時に出力する場合には、それぞれに対応する２個のＩＤ値（ＲＩＤ１，ＲＩＤ２）も出力される。
【００３４】
データ選択回路（マルチプレクサ）２５４は、データアービタ２４０から通知された調停結果（スレーブ番号Ｓ＃、ＩＤ値（ＡＲＩＤ））に従って、マルチプレクサ（データ選択回路）２５０の出力結果と（スレーブＳ１の番号が通知された場合）、バススレーブＳ２のリードデータ２６４とのいずれか一方を選択する。マルチプレクサ（データ選択回路）２５４は、選択したリードデータとそのリードデータに対応するＩＤ値とをリードデータ転送経路４４に出力する。
【００３５】
リードデータ転送経路４４を介して転送されたＩＤ値（ＲＩＤ１，ＲＩＤ２）は、ＩＤデコーダ２６０に入力され、リードデータ転送経路４４を介して転送されたリードデータＲＤＡＴＡはデータ分配回路（デマルチプレクサ）２６６に入力される。
【００３６】
ＩＤデコーダ２６０は、リードデータ転送経路４４を介して転送されたＩＤ値（ＲＩＤ１，ＲＩＤ２）をデコードすることによって、ＩＤ値が示しているマスタ番号Ｍ＃の情報を取り出す。図２の場合には、ＩＤデコーダ２６０は、ＩＤ値（ＡＲＩＤ）とマスタ番号Ｍ＃との対応関係を予め取得することによって、ＩＤ値のデコードを容易に行うことができる。ＩＤデコーダ２６０は、ＩＤ値によって示されているマスタ番号Ｍ＃の情報をデータ分配回路（デマルチプレクサ）２６６に通知する。
【００３７】
データ分配回路（デマルチプレクサ）２６６は、ＩＤデコーダ２６０から通知されたマスタ番号Ｍ＃に従って、リードデータ転送経路４４を介して受信したリードデータＲＤＡＴＡを、バスマスタＭ１のリードデータ２６２またはバスマスタＭ２のリードデータ２６４として分配する。ここで、スレーブＳ１から出力されたリードデータ２４４とデータバッファ２４６に保持されたリードデータとが両方同時に出力された場合には、デマルチプレクサ２６６は、ＩＤ値（ＲＩＤ１，ＲＩＤ２）に対応するマスタ番号Ｍ＃に従って、各リードデータをＩＤ値の発行元であるマスタに出力する。
【００３８】
［２つのリードデータを同時出力可能な条件］
以下、データ選択回路２５０から２つのリードデータを同時出力可能な条件について説明する。データ選択回路２５０は、スレーブＳ１から出力されたリードデータ２４２のＩＤ値およびデータ位置情報に基づいて（データサイズが可変の場合は、さらに、データサイズ情報にも基づく）、以下の条件が全て満たされた場合に、データバッファ２４６に保持されているリードデータと、スレーブＳ１から出力されたリードデータとが２４２とが同時に出力可能と判定する。
【００３９】
（条件Ｒ１）  データバッファ２４６に保持されているリードデータのＩＤ値は、データアービタ２４０が調停結果として示した第１の優先順位のＩＤ値に一致し、スレーブＳ１から出力されたリードデータ２４２のＩＤ値は第２の優先順位のＩＤ値に一致している。すなわち、前回の調停結果としてデータアービタ２４０は現在データバッファ２４６に保持されているリードデータの出力を指示し、今回の調停結果としてデータアービタ２４０は、スレーブＳ１からリードデータ２４２の出力を指示している場合である。
【００４０】
（条件Ｒ２）  データバッファ２４６に保持されているリードデータの転送先のマスタと、スレーブ１から出力されるリードデータ２４２の転送先のマスタとが異なる。転送先のマスタ（すなわち、トランザクションの発行元のマスタ）の情報は、ＩＤ値（ＲＩＤ）が保持している。
【００４１】
（条件Ｒ３）  スレーブＳ１から出力されたリードデータ２４２が使用する転送経路４４上でのデータ位置と、データバッファ２４６に保持されたリードデータが使用する転送経路４４上でのデータ位置とが重ならない。
【００４２】
［リードデータ転送の具体例］
図３は、図２のバス転送装置３０によるリードデータ転送の具体例を示すタイミング図である。図３では上から順に、アドレスバスを転送中のリードアドレス、スレーブＳ１から出力されるリードデータ、データバッファ２４６の出力データ、リードデータバスを転送中のリードデータ、マスタＭ１の入力データ、およびマスタＭ２の入力データを示す。図３の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第６周期ＣＹＣ６までの６つの区間に区分されている。実際には、各周期の最初のほうでは信号は変化しており確定していないが、図３では煩雑さを避けるために信号は確定しているかのように記載している。この明細書の他のタイミング図においても同様である。
【００４３】
図２および図３を参照して、第１周期ＣＹＣ１において、マスタＭ１はスレーブＳ２に対して、先頭アドレスＡＤＤＲ  Ａから始まるデータ群のバースト転送命令を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“１”）を生成する。先頭アドレスＡＤＤＲ  Ａの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ａをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“１”の情報とは、データアービタ２４０に通知される。続く周期ＣＹＣ２，ＣＹＣ３において、データアービタ２４０の制御に従って、データ幅１２８ビットのデータがスレーブＳ２からリードデータ転送経路４４を通ってマスタＭ１に転送される。
【００４４】
第２周期ＣＹＣ２において、マスタＭ１はスレーブＳ１に対して、アドレスＡＤＤＲ  Ｂに格納されたデータの転送命令（シングルアクセス）を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“２”）を生成する。アドレスＡＤＤＲ  Ｂの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ１に転送される。アドレスＡＤＤＲ  Ｂをデコードすることによって得られたスレーブ番号“１”と、ＩＤ値“２”の情報とは、データアービタ２４０に通知される。次の周期ＣＹＣ３では、データ選択回路２５４によってスレーブＳ２のリードデータ２４４が選択中である。さらに、データバッファ２４６にはリードデータは保持されておらず、スレーブＳ１から出力されたリードデータＲＤＡＴＡ  Ｂのデータ幅（３２ビット）は、リードデータ転送経路４４のデータ幅であるｎ＝１２８ビットよりも小さい。この結果、次の第３周期ＣＹＣ３において、スレーブＳ１から出力されたリードデータＲＤＡＴＡ  Ｂと関連する付随情報（ＩＤ値“２”など）は、データバッファ２４６に保持される。
【００４５】
さらに、第３周期ＣＹＣ３において、マスタＭ２はスレーブＳ１に対して、アドレスＡＤＤＲ  Ｃに格納されたデータの転送命令（シングルアクセス）を発行する。アドレス選択回路２１０は、マスタＭ２およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“３”）を生成する。アドレスＡＤＤＲ  Ｃの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ１に転送される。アドレスＡＤＤＲ  Ｃをデコードすることによって得られたスレーブ番号“１”と、ＩＤ値“３”の情報とは、データアービタ２４０に通知される。
【００４６】
次の周期ＣＹＣ４では、スレーブＳ１からリードデータＲＤＡＴＡ  Ｃおよび関連する付随情報（ＩＤ値“３”など）が出力される。さらに、データバッファ２４６からリードデータＲＤＡＴＡ  Ｂおよび関連する付随情報（ＩＤ値“２”など）が出力される。ここで、リードデータＲＤＡＴＡ  Ｂのビット位置は第１〜第３２ビットとし、リードデータＲＤＡＴＡ  Ｃのビット位置は第３３〜第６４ビットとし、両者は重なっていないとする。したがって、データ選択回路２５０は、スレーブＳ１から出力されたリードデータＲＤＡＴＡ  Ｃと、データバッファ２４６から出力されたリードデータＲＤＡＴＡ  Ｂとを統合して出力可能と判断し、データ選択回路２５４に通知する。データ選択回路２５４は、統合された６４ビットのデータ幅のリードデータ（ＲＤＡＴＡ  Ｂ，ＲＤＡＴＡ  Ｃ）と、リードデータＲＤＡＴＡ  Ｂに対応するＩＤ値“２”と、リードデータＲＤＡＴＡ  Ｃに対応するＩＤ値“３”とを、リードデータ転送経路４４に出力する。ＩＤ値“２”およびＩＤ値“３”は、ＩＤデコーダ２６０に転送される。ＩＤデコーダ２６０は、ＩＤ値“２”およびＩＤ値“３”にそれぞれ対応するマスタ番号Ｍ＃をデータ分配回路２６６に通知する。データ分配回路２６６は、通知されたマスタ番号Ｍ＃に従って、マスタＭ１にリードデータ（ＲＤＡＴＡ  Ｂ）２６２を入力するとともに、マスタＭ２にリードデータ（ＲＤＡＴＡ  Ｃ）２６４を入力する。
【００４７】
さらに、第４周期ＣＹＣ４において、マスタＭ１はスレーブＳ２に対して、先頭アドレスＡＤＤＲ  Ｄから始まるデータ群のバースト転送命令を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“１”）を生成する。先頭アドレスＡＤＤＲ  Ｄの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ｄをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“１”の情報とは、データアービタ２４０に通知される。次の周期ＣＹＣ５，ＣＹＣ６において、データアービタ２４０の制御に従って、データ幅１２８ビットのデータがスレーブＳ２からリードデータ転送経路４４を通ってマスタＭ１に転送される。
【００４８】
［第１の実施形態の効果］
上述したバス転送装置３０によれば、バス幅ｎビットのリードデータバス上に、バス幅よりもデータ幅の合計が小さい２つのリードデータを載せて転送することが可能である。この場合、２つのリードデータにそれぞれ対応する２個のトランザクションＩＤ値も同時に転送される。この結果、最大バス幅未満のデータの転送速度を向上させることができ、これにより、バスマスタからバススレーブへのリードアクセス時の応答速度を上げることができる。
【００４９】
［変形例］
図２では、２つのバスマスタ、２つのバススレーブ、および状態論理回路２３５内の３つの可能なＩＤ値があるように描かれている。しかしながら、このような構成に限定されることなく、さらに多数のバスマスタ、多数のバススレーブ、および多数のＩＤ値についても上記の技術を適用することができる。
【００５０】
さらに、上記の例では、２個のリードデータを統合して転送する場合を示したが、リードデータ転送経路のバス幅ｎを超えない限り、さらに多くの個数のリードデータを統合して転送することも原理的には可能である。この場合、統合するデータ数に応じたデータバッファが必要になるとともに、統合するリードデータにそれぞれ対応するＩＤ値を同時に転送する必要がある。
【００５１】
＜第２の実施形態＞
第１の実施形態では、異なるバスマスタがそれぞれ転送先となっている複数のリードデータを統合してバス転送する場合について説明した。第２の実施形態では、同一のバスマスタが転送先となっている複数のリードデータを統合してバス転送する場合について説明する。この場合、前述の条件Ｒ２は不要になり、データ選択回路２５０は、条件Ｒ１と条件Ｒ３とが満たされている場合に、データバッファ２４６に保持されているリードデータと、スレーブＳ１から出力されたリードデータとが２４２とを同時に出力可能と判定する。以下、図面を参照して詳しく説明する。
【００５２】
［バス転送装置の構成］
図４は、第２の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。図４では、図２のバス転送装置のうちリードデータバスに関係する部分のみを示している。アドレスバスに関係する部分の構成は図２の場合と同じである。図４に示すように、バス転送装置３０のバス制御部３２Ａは、データバッファ２６８，２７０と、マルチプレクサ（データ選択回路）２７２，２７４とをさらに含む点で図２の場合と異なる。図４のその他の点は図２の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。
【００５３】
第２の実施形態で特徴的な点は、同一のバスマスタが転送先となっている２つのリードデータを統合可能になっている点である（前述の条件Ｒ２が不要）。この場合、優先順位の高いほうのリードデータは転送先のバスマスタにすぐに入力されるが、優先順位の低いほうのリードデータはデータバッファ２６８または２７０に一旦保持される。優先順位の低いほうのリードデータは、優先順位の高いほうのリードデータの入力後に、データバッファから転送先のバスマスタに入力される。このように、２個のリードデータは、データアービタ２４０によって決定された優先順位の順番で同一のバスマスタに入力される。
【００５４】
具体的に、データ選択回路２５０は、前述の条件Ｒ１と条件Ｒ３との両方が満たされている場合に（条件Ｒ２は不要）、データバッファ２４６に保持されているリードデータとスレーブＳ１から出力されたリードデータ２４２とを統合する。リードデータ転送経路４４には、統合されたリードデータＲＤＡＴＡと、対応する２個のＩＤ値（ＲＩＤ１，ＲＩＤ２）とが同時に出力される。ここで、２個のＩＤ値（ＲＩＤ２，ＲＩＤ２）は、同一のバスマスタを示しているとする。
【００５５】
ＩＤデコーダ２６０は、リードデータ転送経路４４を介して転送された２個のＩＤ値（ＲＩＤ１，ＲＩＤ２）が示している転送先のバスマスタが同一の場合には、データバッファ２６８，２７０のうち該当するマスタに対応するデータバッファに対して、データが同時転送されていることを通知する。データ分配回路２６６は、ＩＤデコーダ２６０の制御に従って、転送された統合リードデータのうちデータバッファ２４６に保持されていたリードデータに対応する部分を該当するマスタに入力するとともに、残りの部分を対応するデータバッファ２６８または２７０に格納させる。すなわち、先にスレーブＳ１から出力されたリードデータが該当するマスタに入力され、後からスレーブＳ１から出力されたリードデータが対応するデータバッファに入力される。次の周期において、データバッファ２６８または２７０に格納されたリードデータは、該当するマスタに取り込まれる。
【００５６】
［リードデータ転送の具体例］
図５は、図４のバス転送装置３０によるリードデータ転送の具体例を示すタイミング図である。図５では上から順に、アドレスバスを転送中のリードアドレス、スレーブＳ１から出力されるリードデータ、データバッファ２４６の出力データ、リードデータバスを転送中のリードデータ、データバッファ２６８の出力データ、およびマスタＭ１の入力データを示す。図５の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第６周期ＣＹＣ６までの６つの区間に区分されている。
【００５７】
図４および図５を参照して、図５の第１周期ＣＹＣ１〜第３周期ＣＹＣ２までは、第１の実施形態の図３の場合とほぼ同じである。異なる点は、第３周期においてスレーブＳ１に対してアドレスＡＤＤＲ  Ｃに格納されたデータの転送命令（シングルアクセス）を発行するマスタの番号である。
【００５８】
具体的に、図３では、マスタＭ２がスレーブＳ１に対してアドレスＡＤＤＲ  Ｃに格納されたデータの転送命令を発行するのに対して、図５では、マスタＭ１がスレーブＳ１に対してアドレスＡＤＤＲ  Ｃに格納されたデータの転送命令を発行する。すなわち、第２周期ＣＹＣ２において発行されたリードアドレスＡＤＤＲ  Ｂと第３周期ＣＹＣ３で発行されたリードアドレスＡＤＤＲ  Ｃとは、同一のマスタＭ１から発行された異なるトランザクションＢ（それぞれＩＤ値“２”とＩＤ値“３”）に対応する。
【００５９】
次の周期ＣＹＣ４では、スレーブＳ１からリードデータＲＤＡＴＡ  Ｃおよび関連する付随情報（ＩＤ値“３”など）が出力される。さらに、データバッファ２４６からリードデータＲＤＡＴＡ  Ｂおよび関連する付随情報（ＩＤ値“２”など）が出力される。ここで、リードデータＲＤＡＴＡ  Ｂのビット位置は第１〜第３２ビットとし、リードデータＲＤＡＴＡ  Ｃのビット位置は第３３〜第６４ビットとし、両者は重なっていないとする。したがって、データ選択回路２５０は、スレーブＳ１から出力されたリードデータＲＤＡＴＡ  Ｃと、データバッファ２４６から出力されたリードデータＲＤＡＴＡ  Ｂとを統合して出力可能と判断し、データ選択回路２５４に通知する。データ選択回路２５４は、統合された６４ビットのデータ幅のリードデータ（ＲＤＡＴＡ  Ｂ，ＲＤＡＴＡ  Ｃ）と、リードデータＲＤＡＴＡ  Ｂに対応するＩＤ値“２”と、リードデータＲＤＡＴＡ  Ｃに対応するＩＤ値“３”とを、リードデータ転送経路４４に出力する。
【００６０】
２個のＩＤ値“２”および“３”は、ＩＤデコーダ２６０に転送される。ＩＤデコーダ２６０は、転送された２個のＩＤ値をデコードすることによって、ＩＤ値“２”に対応するマスタ番号“１”とＩＤ値“３”に対応するマスタ番号“１”とが同一であることを検知する。ＩＤデコーダ２６０は、マスタＭ１を宛先とする２個のリードデータが同時転送されているという情報を、データ分配回路２６６およびデータバッファ２６８に通知する。データ分配回路２６６は、ＩＤデコーダ２６０の制御に従って、転送されたリードデータの一部であるデータバッファ２４６に保持されていたリードデータＲＤＡＴＡ  Ｂを該当するマスタＭ１に入力するとともに、残りの部分であるリードデータＲＤＡＴＡ  Ｃをデータバッファ２６８に格納させる。次の周期ＣＹＣ５において、データバッファ２６８に格納されていたリードデータＲＤＡＴＡ  Ｃは、マスタＭ１に取り込まれる。
【００６１】
第４周期ＣＹＣ４では、さらに、マスタＭ２はスレーブＳ２に対して、先頭アドレスＡＤＤＲ  Ｄから始まるデータ群のバースト転送命令を発行する。アドレス選択回路２１０は、マスタＭ２およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“４”）を生成する。先頭アドレスＡＤＤＲ  Ｄの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ｄをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“４”の情報とは、データアービタ２４０に通知される。次の周期ＣＹＣ５，ＣＹＣ６において、データアービタ２４０の制御に従って、データ幅１２８ビットのデータがスレーブＳ２からリードデータ転送経路４４を通ってマスタＭ２に転送される。
【００６２】
［第２の実施形態の効果］
上記の構成のバス転送装置によれば、同一のバスマスタが宛先となっている複数のリードデータが同時転送可能になるので、最大バス幅未満のリードデータの転送速度をさらに向上させることができる。これにより、バスマスタからバススレーブへのリードアクセス時の応答速度を上げることができる。
【００６３】
＜第３の実施形態＞
第１の実施形態では、同一スレーブから出力されたバス幅未満の合計データサイズの複数のリードデータを同時転送するためのバス転送装置について説明した。第３の実施形態では、異なるスレーブから出力されたバス幅未満の合計データサイズの複数のリードデータを同時転送するためのバス転送装置の構成を開示する。
【００６４】
［バス転送装置の構成］
図６は、第３の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。図６では、図２のバス転送装置のうちリードデータバスに関係する部分のみを示している。アドレスバスに関係する部分の構成は図２の場合と同じである。
【００６５】
第３の実施形態の場合、バススレーブＳ２から読み出されたリードデータ２４４は、ｎ／２ビット以下のデータ幅を有する（データサイズを可変としているので、ｎビットに等しい場合もある）。バススレーブＳ２は、リードデータ２４４と、データサイズと、リードデータ２４４に対応するＩＤ値（ＲＩＤ）と、リードデータ転送経路４４を構成するｎビットのデータ線の中でリードデータが占める位置情報とを出力する。バススレーブＳ２は、リードデータが格納されているリードアドレスに対応付けて、リードデータが使用する位置情報を自動的に決定する。
【００６６】
さらに、図６のバス転送装置３０のバス制御部３２Ｂは、データバッファ２４８と、マルチプレクサ（データ選択回路）２５２とをさらに含む点で図２のバス転送装置と異なる。データアービタ２４０の調停結果は、データバッファ２４６，２４８およびマルチプレクサ（データ選択回路）２５０，２５２，２５４に通知される。
【００６７】
データバッファ２４８は、スレーブＳ２から出力されたリードデータ２４４および関連する付随情報（ＩＤ値、データサイズ、リードデータバス幅内でのデータの位置情報）を一時的に保持するために用いられる。具体的に、データバッファ２４８は、スレーブＳ２から出力されたリードデータ２４４をリードデータ転送経路４４に転送できないとき（リードデータ転送経路４４が他のスレーブによって使用中のとき）であり、かつ、リードデータ２４４のデータ幅がｎビットよりも小さいときに用いられる。
【００６８】
データ選択回路２５０は、データアービタ２４０から通知された調停結果に基づいて、スレーブＳ１から出力されたリードデータ２４２と、データバッファ２４６に保持されたリードデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。さらに、データ選択回路２５０は、データバッファ２４６に格納されたリードデータと、スレーブＳ１から出力されたリードデータ２４２とが統合できない場合に、データ選択回路２５４に対してデータバッファ２４６に格納されたリードデータのＩＤ値、データサイズ、データ位置の情報を通知する。
【００６９】
データ選択回路２５２は、データアービタ２４０から通知された調停結果に基づいて、スレーブＳ２から出力されたリードデータ２４４と、データバッファ２４８に保持されたリードデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。さらに、データ選択回路２５２は、データバッファ２４８に格納されたリードデータと、スレーブＳ２から出力されたリードデータ２４４とが統合できない場合に、データ選択回路２５４に対してデータバッファ２４８に格納されたリードデータのＩＤ値、データサイズ、データ位置の情報を通知する。
【００７０】
データ選択回路２５４は、データアービタ２４０から通知された調停結果に基づいて、データ選択回路２５０の出力結果とデータ選択回路２５２の出力結果とのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。データ選択回路２５４は、データバッファ２４６，２４８に格納されたリードデータの情報をデータ選択回路２５０，２５２からそれぞれ受けた場合において、これらのリードデータが統合可能な場合にはこれらのリードデータを統合して出力する。データ選択回路２５４は、以下の条件Ｒ４および条件Ｒ５が満たされた場合に、データ選択回路２５０，２５２の両方の出力結果を同時に出力可能と判定する。
【００７１】
（条件Ｒ４）  データ選択回路２５０によって選択されたリードデータのＩＤ値とデータ選択回路２５２によって選択されたリードデータのＩＤ値とは、一方がデータアービタ２４０によって調停結果として示された第１の優先順位のＩＤ値に一致し、他方が第２の優先順位のＩＤ値に一致している。すなわち、前回の調停結果としてデータアービタ２４０が一方のＩＤ値を指示し、今回の調停結果としてデータアービタ２４０が他方のＩＤ値を指示している。
【００７２】
（条件Ｒ５）データ選択回路２５０によって選択されたリードデータの転送先のマスタと、データ選択回路２５２によって選択されたリードデータの転送先のマスタとが異なる。
【００７３】
（条件Ｒ６）  データ選択回路２５０によって選択されたリードデータが使用する転送経路４４上でのデータ位置と、データ選択回路２５２によって選択されたリードデータが使用する転送経路４４上でのデータ位置とが重ならない。
【００７４】
図６のその他の点は図２の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。
【００７５】
［リードデータ転送の具体例］
図７は、図６のバス転送装置３０によるリードデータ転送の具体例を示すタイミング図である。図７では上から順に、アドレスバスを転送中のリードアドレス、スレーブＳ１から出力されるリードデータ、スレーブＳ２から出力されるリードデータ、リードデータバスを転送中のリードデータ、マスタＭ１の入力データ、およびマスタＭ２の入力データを示す。図７の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第６周期ＣＹＣ６までの６つの区間に区分されている。
【００７６】
図６および図７を参照して、第１周期ＣＹＣ１において、マスタＭ１はスレーブＳ２に対して、先頭アドレスＡＤＤＲ  Ａから始まるデータ群のバースト転送命令を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“１”）を生成する。先頭アドレスＡＤＤＲ  Ａの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ａをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“１”の情報とは、データアービタ２４０に通知される。続く周期ＣＹＣ２，ＣＹＣ３において、データアービタ２４０の制御に従って、データ幅１２８ビットのデータがスレーブＳ２からリードデータ転送経路４４を通ってマスタＭ１に転送される。
【００７７】
第２周期ＣＹＣ２において、マスタＭ１はスレーブＳ２に対して、アドレスＡＤＤＲ  Ｂに格納されたデータの転送命令（シングルアクセス）を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“２”）を生成する。アドレスＡＤＤＲ  Ｂの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ｂをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“２”の情報とは、データアービタ２４０に通知される。次の周期ＣＹＣ３では、まだスレーブＳ２のリードデータ２４４が転送中である。したがって、アドレスＡＤＤＲ  Ｂに対応するリードデータＲＤＡＴＡ  Ｂおよび関連する付随情報（ＩＤ値“２”など）は第４周期ＣＹＣ４において、スレーブＳ２から出力される。
【００７８】
第３周期ＣＹＣ３において、マスタＭ２はスレーブＳ１に対して、アドレスＡＤＤＲ  Ｃに格納されたデータの転送命令（シングルアクセス）を発行する。アドレス選択回路２１０は、マスタＭ２およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“３”）を生成する。アドレスＡＤＤＲ  Ｃの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ１に転送される。アドレスＡＤＤＲ  Ｃをデコードすることによって得られたスレーブ番号“１”と、ＩＤ値“３”の情報とは、データアービタ２４０に通知される。
【００７９】
次の周期ＣＹＣ４において、スレーブＳ１からリードデータＲＤＡＴＡ  Ｃおよび関連する付随情報（ＩＤ値“３”など）が出力される。これらのデータは、データ選択回路２５０によって選択された結果、データ選択回路２５４に入力される。さらに、スレーブＳ２からリードデータＲＤＡＴＡ  Ｂおよび関連する付随情報（ＩＤ値“２”など）が出力される。これらのデータは、データ選択回路２５２によって選択された結果、データ選択回路２５４に入力される。ここで、リードデータ転送経路４４上でのリードデータＲＤＡＴＡ  Ｂのビット位置とリードデータＲＤＡＴＡ  Ｃのビット位置とは重なっていないとする。
【００８０】
データ選択回路２５４は、データ選択回路２５０によって選択されたリードデータＲＤＡＴＡ  Ｃと、データ選択回路２５２によって選択されたリードデータＲＤＡＴＡ  Ｂとは統合して同時に出力可能と判断する。そしてデータ選択回路２５４は、統合したリードデータと、それに対応するＩＤ値“２”およびＩＤ値“３”とを、リードデータ転送経路４４に出力する。ＩＤ値“２”およびＩＤ値“３”は、ＩＤデコーダ２６０に転送される。ＩＤデコーダ２６０は、ＩＤ値“２”およびＩＤ値“３”にそれぞれ対応するマスタ番号Ｍ＃をデータ分配回路２６６に通知する。データ分配回路２６６は、通知されたマスタ番号Ｍ＃に従って、マスタＭ１にリードデータ（ＲＤＡＴＡ  Ｂ）２６２を入力するとともに、マスタＭ２にリードデータ（ＲＤＡＴＡ  Ｃ）２６４を入力する。
【００８１】
第４周期ＣＹＣ４では、さらに、マスタＭ１はスレーブＳ２に対して、先頭アドレスＡＤＤＲ  Ｄから始まるデータ群のバースト転送命令を発行する。アドレス選択回路２１０は、マスタＭ１およびトランザクションを識別するためのＩＤ値（ＡＲＩＤ＝“１”）を生成する。先頭アドレスＡＤＤＲ  Ｄの情報はＩＤ値とともにアドレス転送経路４０を介してスレーブＳ２に転送される。アドレスＡＤＤＲ  Ｄをデコードすることによって得られたスレーブ番号“２”と、ＩＤ値“１”の情報とは、データアービタ２４０に通知される。次の周期ＣＹＣ５，ＣＹＣ６において、データアービタ２４０の制御に従って、データ幅１２８ビットのデータがスレーブＳ２からリードデータ転送経路４４を通ってマスタＭ１に転送される。
【００８２】
［第３の実施形態の効果］
上記の構成のバス転送装置によれば、異なるバススレーブから出力されたリードデータを異なるバスマスタに同時転送可能になるので、最大バス幅未満のデータサイズを有するリードデータの転送能力をさらに向上させることができる。これにより、バスマスタからバススレーブへのリードアクセス時の応答速度を上げることができる。さらに、第３の実施形態は第２の実施形態と組み合わせることができる。この場合、異なるバススレーブから出力された同一のバスマスタを宛先する２個のリードデータは、同時にリードデータバスを転送することができる。
【００８３】
＜第４の実施形態＞
図８は、図１のバス転送装置のうちライトアドレス転送およびライトデータ転送に関係する部分の詳細な構成を示すブロック図である。図８を参照して、バス制御部３２は、アドレスアービタ３１５と、アドレスデコーダ３２５と、状態論理回路３３５と、データアービタ３４０と、ＩＤデコーダ３６０と、データバッファ３４６と、マルチプレクサ３１０，３５０，３５４と、デマルチプレクサ３２０，３３０，３６６とを含む。
【００８４】
［ライトアドレスの転送］
まず、ライトアドレスの転送について説明する。図８に示すように、バスマスタＭ１は、ライトアドレス３００とＩＤ値（ＡＷＩＤ）とをアドレス転送経路４０に対して出力するとともに、ライトデータ３４２とＩＤ値（ＷＩＤ）とをライトデータ転送経路４６に対して出力する。同様に、バスマスタＭ２は、ライトアドレス３０５とＩＤ値（ＡＷＩＤ）とをアドレス転送経路４０に対して出力するとともに、ライトデータ３４４とＩＤ値（ＷＩＤ）とをライトデータ転送経路４６に対して出力する。ＩＤ値は、どのバスマスタがどのライトトランザクションを発行したかを識別するための識別情報である。図８において、ライトアドレスに付随したＩＤ値であることを強調するために、「ＡＷＩＤ」と記載している。同じトランザクションであれば、ライトアドレスに付随するＩＤ値（ＡＷＩＤ）とライトデータに付随するＩＤ値（ＷＩＤ）とは同じ値である。
【００８５】
なお、バスマスタＭ１，Ｍ２でなく、バス転送装置３０の制御部３２ＡがＩＤ値を生成し、生成したＩＤ値とともにライトアドレスおよびライトデータをバスレーブに転送するように構成してもよい。たとえば、図８においてアドレス選択回路（マルチプレクサ）３１０が各バスマスタＭ１，Ｍ２からの出力順に従ってライトアドレスにＩＤ値（ＡＷＩＤ）を付加し、データ選択回路（マルチプレクサ）３５４が各バスマスタＭ１，Ｍ２からの出力順に従ってライトデータにＩＤ値（ＷＩＤ）を付加するようにしてもよい。このように出力順にＩＤ値を付加することによって、ライトアドレスとそれに対応するライトデータとに同一のＩＤ値を付加することができる。
【００８６】
アドレス選択回路（マルチプレクサ）３１０は、２つの異なるバスマスタＭ１，Ｍ２からそれぞれライトアドレス３００，３０５を受信する。アドレスアービタ３１５はマルチプレクサ３１０を制御してアドレスバスの使用を求める複数のライトアドレス間の調停を行う。このとき、アドレスアービタ３１５は、アドレス転送経路４０へのアクセスを許可しているバスマスタを表わすマスタ番号Ｍ＃を発行する。発行したマスタ番号Ｍ＃は、マスタ番号分配回路（デマルチプレクサ）３３０に出力される。
【００８７】
各ライトアドレス（ＷＡＤＤＲ）およびＩＤ値（ＡＷＩＤ）は、アドレス転送経路４０を介して、アドレス選択回路（マルチプレクサ）３１０からアドレス分配回路（デマルチプレクサ）３２０へ送られる。アドレス分配回路３２０は、アドレスデコーダ３２５からの出力によって制御される。具体的に、アドレスデコーダ３２５は、ライトアドレスＷＡＤＤＲをデコードすることによって、目標のバススレーブであることを表すスレーブ番号Ｓ＃を決定し、決定したスレーブ番号Ｓ＃をデマルチプレクサ３２０に出力する。アドレス分配回路３２０は、スレーブ番号Ｓ＃に従って、ライトアドレスおよび対応するＩＤ値を、スレーブＳ１用ライトアドレス３２２またはスレーブＳ２用ライトアドレス３２４として要求された目標バススレーブへ出力する。スレーブ番号Ｓ＃は、さらに、マスタ番号分配回路（デマルチプレクサ）３３０に通知される。
【００８８】
状態論理回路３３５は、概念的には、マスタ番号Ｍ＃の情報を格納するＦＩＦＯバッファが、スレーブ番号ごとに設けられていると考えることができる。デマルチプレクサ３３０は、アドレスデコーダ３２５から通知されたスレーブ番号Ｓ＃に基づいて、アドレスアービタ３１５から受信したマスタ番号Ｍ＃を状態論理回路３３５の適切なＦＩＦＯバッファに送る。状態論理回路３３５内のマスタ番号Ｍ＃の情報は、データアービタ３４０によって調停結果として選択されるまで、状態論理回路３３５内に保持される。
【００８９】
［データアービタによる調停について］
データアービタ３４０は、状態論理回路３３５を参照することによってライトデータバス４６を介して転送すべきライトデータを順次選択する各ＦＩＦＯバッファに最も先に入力されたマスタ番号Ｍ＃が調停の対象になるので、同じスレーブ番号Ｓ＃（転送先のバススレーブ）に対しては、１つの正当な調停対象しかない。複数のＦＩＦＯバッファの各々がその中にマスタ番号Ｍ＃を格納しておれば、データアービタ３４０に複数の正当な調停対象（複数のマスタ番号Ｍ＃）が提示される。
【００９０】
したがって、状態論理回路３３５内に１つの正当な調停対象しかない場合、データアービタ３４０は、その正当な調停対象のマスタ番号Ｍ＃を、ＦＩＦＯバッファから取り出して、対応するスレーブ番号Ｓ＃とともにデータ選択回路（マルチプレクサ）３５０，３５４およびデータバッファ３４６に通知する。複数の正当な調停対象がある場合、データアービタ３４０は、予め定められた調停指針（所定の優先順位）に従って次にデータ転送すべきライトデータの出力元となるマスタ番号Ｍ＃を決定する。データアービタ３４０は、決定したマスタ番号Ｍ＃を対応のＦＩＦＯバッファから取り出して、対応するスレーブ番号Ｓ＃とともにデータ選択回路（マルチプレクサ）３５０，３５４およびデータバッファ３４６に通知する。データアービタ３４０はマスタ、スレーブ、ＩＤ値、またはそれらの任意の組合せに基づいて複数の正当な調停対象の間の優先順位付けを行うことができる。
【００９１】
［ライトデータの転送］
次に、ライトデータの転送について説明する。図８に示すライトデータ転送経路４６は、最大ビット幅ｎビットのデータを転送可能である。さらに、ライトデータ転送経路４６は、ライトデータと同時に、ライトデータＷＤＡＴＡを識別するためのＩＤ値を複数転送可能である（図８では２個のＩＤ値（ＷＩＤ１，ＷＩＤ２）を転送可能である）。たとえば、ｍビットのビットサイズのＩＤ値を２個転送可能な場合、ライトデータ転送経路４６に必要な信号線の本数は、ｎ＋２×ｍとなる。
【００９２】
以下では、バスマスタＭ１から出力されたライトデータ３４２は、ｎ／２ビット以下のデータ幅を有するとする（ライトデータ３４２のデータ幅が可変の場合には、データ幅がｎビットに等しくなる場合もあり得る）。バスマスタＭ２から出力されたライトデータ３４４は、ｎビットのデータ幅であるとする。バーストモードの場合には、バスマスタＭ２からデータ幅ｎビットのデータが複数回繰り返して出力される。さらに、バスマスタＭ１，Ｍ２は、ライトデータ以外にＩＤ値などの付随情報も出力する。
【００９３】
具体的に、バスマスタＭ１は、ライトデータ３４２と、ライトデータ３４２に対応するＩＤ値（ＷＩＤ）と、ライトデータ転送経路４６を構成するｎビットのデータ線幅の中でライトデータが占める位置情報とを出力する。バスマスタＭ１は、ライトデータに対応するライトアドレスに基づいて、ライトデータが使用する位置情報を自動的に決定することができる。バスマスタＭ１が出力するライトデータ３４２のデータ幅が可変の場合には、バスマスタＭ１からデータサイズの情報がさらに出力される。
【００９４】
バスマスタＭ２は、ライトデータ３４４と、ライトデータ３４４に対応するＩＤ値（ＷＩＤ）とを出力する。データアービタ３４０は、マルチプレクサ（データ選択回路）３５０，３５４およびデータバッファ３４６に、調停結果としてのマスタ番号Ｍ＃および対応するスレーブ番号Ｓ＃を通知する。
【００９５】
データバッファ３４６は、マスタＭ１から出力されたライトデータ３４２をライトデータ転送経路４６に転送できないときで、ライトデータ３４２のデータ幅がｎビットよりも小さいときに、ライトデータ３４２および関連する付随情報（ＩＤ値、ライトデータバス幅内でのデータの位置情報）を一時的に保持するために用いられる。
【００９６】
データ選択回路（マルチプレクサ）３５０は、データアービタ３４０の調停結果に従って、スレーブＳ１から出力されたライトデータ３４２と、データバッファ３４６に保持されたライトデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。２つのライトデータを同時出力可能な条件については後述する。データ選択回路３５０は、ライトデータを出力する場合は対応するＩＤ値（ＷＩＤ）とともに出力する。したがって、スレーブＳ１から出力されたライトデータ３４４とデータバッファ３４６に保持されたライトデータとをの両方同時に出力する場合には、それぞれに対応する２個のＩＤ値（ＷＩＤ１，ＷＩＤ２）が出力される。
【００９７】
データ選択回路（マルチプレクサ）３５４は、データアービタ３４０から通知された調停結果（マスタ番号Ｍ＃）に従って、マルチプレクサ（データ選択回路）３５０の出力結果と（マスタＭ１の番号が通知された場合）、バスマスタＭ２のライトデータ３６４とのいずれか一方を選択する。マルチプレクサ（データ選択回路）３５４は、選択したライトデータと対応するＩＤ値とをライトデータ転送経路４６に出力する。
【００９８】
ライトデータ転送経路４６を介して転送されたＩＤ値（ＷＩＤ１，ＷＩＤ２）は、ＩＤデコーダ３６０に入力され、ライトデータ転送経路４６を介して転送されたライトデータＷＤＡＴＡはデマルチプレクサ（データ分配回路）３６６に入力される。
【００９９】
ＩＤデコーダ３６０は、各バスマスタから発行されたライトアドレスに付随されているＩＤ値（ＡＷＩＤ）と、当該ライトアドレスをデコードすることによって得られたスレーブ番号Ｓ＃とを受信するように構成されている。ＩＤデコーダ３６０は、受信したこれらの情報に基づいてＩＤ値（ＡＷＩＤ）とスレーブ番号Ｓ＃との対応関係を示す情報を、たとえば、ルックアップテーブルの形で保持する。ＩＤデコーダ３６０は、ライトデータ転送経路４６を介して受信したＩＤ値（ＷＩＤ１，ＷＩＤ２）に対応するスレーブ番号Ｓ＃を、このルークアップテーブルを参照することによって決定する。
【０１００】
デマルチプレクサ（データ分配回路）３６６は、ＩＤデコーダ３６０から通知されたスレーブ番号Ｓ＃に従って、ライトデータ転送経路４６を介して受信したライトデータＷＤＡＴＡを、バススレーブＳ１のライトデータ３６２またはバススレーブＳ２のライトデータ３６４として分配する。ここで、スレーブＳ１から出力されたライトデータ３４４とデータバッファ３４６に保持されたライトデータとが両方同時に出力された場合には、デマルチプレクサ３６６は、ＩＤ値（ＷＩＤ１，ＷＩＤ２）に対応する２つのスレーブ番号Ｓ＃に従って、これらのライトデータをスレーブＳ１，Ｍ２にそれぞれ出力する。
【０１０１】
［２つのライトデータを同時出力可能な条件］
以下、データ選択回路３５０から２つのライトデータを同時出力可能な条件について説明する。データ選択回路３５０は、以下の全ての条件が満たされた場合に、データバッファ３４６に保持されているライトデータと、マスタＭ１から出力されたライトデータとが２４２とが同時に出力可能と判定する。
【０１０２】
（条件Ｗ１）  前回の調停結果に従ってマスタＭ１のライトデータがデータバッファ３４６に格納され、今回さらにマスタＭ１が調停結果として通知されている。
【０１０３】
（条件Ｗ２）  データバッファ３４６に格納されているライトデータの転送先のバススレーブと、マスタＭ１のライトデータ３４２の転送先のバススレーブとは異なる。転送先のバススレーブの情報（スレーブ番号Ｓ＃）は、データアービタ３４０から調停結果としてマスタ番号Ｍ＃とともに通知される。
【０１０４】
（条件Ｗ３）  マスタＭ１から出力されるライトデータ３４２が使用する転送経路４６上でのデータ位置と、データバッファ３４６に保持されたライトデータが使用する転送経路４６上でのデータ位置とが重ならない。
【０１０５】
［ライトデータ転送の具体例］
図９は、図８のバス転送装置３０によるライトデータ転送の具体例を示すタイミング図である。図９では上から順に、アドレスバスを転送中のライトアドレス、マスタＭ１から出力されるライトデータ、データバッファ３４６の出力データ、ライトデータバスを転送中のライトデータ、スレーブＳ１の入力データ、およびスレーブＳ２の入力データを示す。図９の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第５周期ＣＹＣ５までの５つの区間に区分されている。
【０１０６】
図８および図９を参照して、第１周期ＣＹＣ１において、マスタＭ２はスレーブＳ２へのバースト書込み命令を発行する（トランザクションのＩＤ値＝“１”）。これに伴い、マスタＭ２は、第１周期ＣＹＣ１において先頭アドレスＡＤＤＲ  ＡおよびＩＤ値“１”をアドレス転送経路４０に向けて出力するとともに、第１周期ＣＹＣ１および第２周期ＣＹＣ２においてライトデータＷＤＡＴＡ  Ａ（１２８ビット×２）および関連する付随情報（ＩＤ値“１”）を出力する。転送元であるマスタＭ２を表すマスタ番号“２”がデータアービタ３４０に通知され、データアービタ３４０の制御に従って、マスタＭ２から出力された書込みデータＷＤＡＴＡ  Ａが、データ選択回路３５０，３５４を通過してライトデータ転送経路４６に出力される。さらに、ＩＤデコーダ３６０の制御に従って、ライトデータＷＤＡＴＡ  Ａはデータ分配回路３６６を介してスレーブＳ２に入力される。
【０１０７】
第２周期ＣＹＣ２において、マスタＭ１はスレーブＳ１へのシングル書込み命令を発行する（トランザクションのＩＤ値＝“２”）。これに伴い、マスタＭ１は、第２周期ＣＹＣ２においてアドレスＡＤＤＲ＿ＢおよびＩＤ値“２”をアドレス転送経路４０に向けて出力するとともに、ライトデータＷＤＡＴＡ＿Ｂおよび関連する付随情報（ＩＤ値“２”など）を出力する。さらに、転送元のマスタＭ１を表すマスタ番号“１”がデータアービタ３４０を介してデータ選択回路３５０に通知される。データ選択回路３５０は、ライトデータＷＤＡＴＡ  Ｂのデータ幅（３２ビット）がライトデータ転送経路４６のデータ幅であるｎ＝１２８ビットよりも小さく、かつ、ライトデータ転送経路４６が他のライトデータＷＤＡＴＡ  Ａによって使用中であるので、ライトデータＷＤＡＴＡ  Ｂと付随情報をデータバッファ３４６に一旦保持させる。
【０１０８】
第３周期ＣＹＣ３において、マスタＭ１はスレーブＳ２へのシングル書込み命令を発行する（トランザクションのＩＤ値＝“３”）。これに伴い、マスタＭ１は、第３周期ＣＹＣ３においてアドレスＡＤＤＲ＿ＣおよびＩＤ値“３”をアドレス転送経路４０に向けて出力するとともに、ライトデータＷＤＡＴＡ＿Ｃおよび関連する付随情報（ＩＤ値“３”など）を出力する。さらに、転送元のマスタＭ１を表すマスタ番号“１”がデータアービタ３４０を介してデータ選択回路３５０に通知される。ここで、ライトデータＷＤＡＴＡ＿Ｃ（データ幅３２ビット）のデータ転送経路４６上でのデータ位置は、データバッファ３４６の保持されているライトデータＷＤＡＴＡ  Ｂと重ならないとする。
【０１０９】
データ選択回路３５０は、データバッファ３４６に保持されているライトデータＷＤＡＴＡ  ＢとマスタＭ１から出力されたライトデータＷＤＡＴＡ  Ｃとを統合して出力可能と判断し、データ選択回路３５４に通知する。データ選択回路３５４は、統合された６４ビットのデータ幅のライトデータ（ＷＤＡＴＡ  Ｂ，ＷＤＡＴＡ  Ｃ）と、ライトデータＷＤＡＴＡ  Ｂに対応するＩＤ値“２”と、ライトデータＷＤＡＴＡ  Ｃに対応するＩＤ値“３”とを、ライトデータ転送経路４６に出力する。ＩＤ値“２”およびＩＤ値“３”は、ＩＤデコーダ３６０に転送される。ＩＤデコーダ３６０は、ＩＤ値“２”およびＩＤ値“３”にそれぞれ対応するスレーブ番号Ｓ＃をデータ分配回路３６６に通知する。データ分配回路３６６は、通知されたスレーブ番号Ｓ＃に従って、スレーブＳ１にライトデータ（ＷＤＡＴＡ  Ｂ）３６２を入力するとともに、スレーブＳ２にライトデータ（ＷＤＡＴＡ  Ｃ）３６４を入力する。
【０１１０】
第４周期ＣＹＣ４において、マスタＭ２はスレーブＳ２へのバースト書込み命令を発行する（トランザクションのＩＤ値＝“１”）。これに伴い、マスタＭ２は、第４周期ＣＹＣ１において先頭アドレスＡＤＤＲ  ＤおよびＩＤ値“１”をアドレス転送経路４０に向けて出力するとともに、第４周期ＣＹＣ４および第５周期ＣＹＣ５においてライトデータＷＤＡＴＡ  Ｄ（１２８ビット×２）および関連する付随情報（ＩＤ値“１”）を出力する。転送元であるマスタＭ２を表すマスタ番号“２”がデータアービタ３４０に通知され、データアービタ３４０の制御に従って、マスタＭ２から出力された書込みデータＷＤＡＴＡ  Ｄが、データ選択回路３５０，３５４を通過してライトデータ転送経路４６に出力される。さらに、ＩＤデコーダ３６０の制御に従って、ライトデータＷＤＡＴＡ  Ａはデータ分配回路３６６を介してスレーブＳ２に入力される。
【０１１１】
［第４の実施形態の効果］
上述したバス転送装置３０によれば、バス幅ｎビットのライトデータバス上に、バス幅よりもデータ幅の合計が小さい２つのライトデータを載せて転送することが可能である。この場合、２つのライトデータにそれぞれ対応する２個のトランザクションＩＤ値も同時に転送される。この結果、最大バス幅未満のライトデータの転送速度を向上させることができ、これにより、バスマスタからバススレーブへのライトアクセス時の応答速度を上げることができる。
【０１１２】
［変形例］
図８の例では、２つのバスマスタおよび２つのバススレーブがあるように描かれている。しかしながら、このような構成に限定されることなく、さらに多数のバスマスタおよび多数のバススレーブについても上記の技術を適用することができる。
【０１１３】
さらに、上記の例では、２個のライトデータを統合して転送する場合を示したが、ライトデータ転送経路のバス幅ｎを超えない限り、さらに多くの個数のライトデータを統合して転送することも原理的には可能である。この場合、統合するデータ数に応じたデータバッファが必要になるとともに、統合するライトデータにそれぞれ対応するＩＤ値を同時に転送する必要がある。
【０１１４】
＜第５の実施形態＞
第４の実施形態では、異なるバススレーブがそれぞれ転送先となっている複数のライトデータを統合してバス転送する場合について説明した。第５の実施形態では、同一のバススレーブが転送先となっている複数のライトデータを統合してバス転送する場合について説明する。この場合、前述の条件Ｗ２は不要になり、データ選択回路３５０は、条件Ｗ１と条件Ｗ３とが満たされている場合に、データバッファ３４６に保持されているライトデータと、マスタＭ１から出力されたライトデータとが２４２とを同時に出力可能と判定する。以下、図面を参照して詳しく説明する。
【０１１５】
［バス転送装置の構成］
図１０は、第５の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。図１０では、図８のバス転送装置のうちライトデータバスに関係する部分のみを示している。アドレスバスに関係する部分の構成は図８の場合と同じである。ただし、第５の実施形態の場合、データアービタ３４０は、調停結果としてマスタ番号Ｍ＃を通知し、マスタ番号Ｍ＃に対応するスレーブ番号Ｓ＃まで通知する必要はない（条件Ｗ２の判定が不要なため）。
【０１１６】
図１０に示すように、バス転送装置３０のバス制御部３２Ｂは、データバッファ３６８，３７０と、マルチプレクサ（データ選択回路）３７２，３７４とをさらに含む点で図８の場合と異なる。図１０のその他の点は図８の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。
【０１１７】
第５の実施形態で特徴的な点は、同一のバススレーブが転送先となっている２つのライトデータを統合可能になっている点である（前述の条件Ｗ２が不要）。この場合、優先順位の高いほうのライトデータは転送先のバススレーブにすぐに入力されるが、優先順位の低いほうのライトデータはデータバッファ３６８または３７０に一旦保持される。優先順位の低いほうのライトデータは、優先順位の高いほうのライトデータの入力後に、データバッファから転送先のバススレーブに入力される。このように、２個のライトデータは、データアービタ３４０によって決定された優先順位の順番で同一のバススレーブに入力される。
【０１１８】
具体的に、データ選択回路３５０は、前述の条件Ｗ１と条件Ｗ３との両方が満たされている場合に（条件Ｗ２が不要）、データバッファ３４６に保持されているライトデータとスレーブＳ１から出力されたライトデータ３４２とを統合する。ライトデータ転送経路４６には、統合されたライトデータＷＤＡＴＡと、統合前のライトデータにそれぞれ対応する２個のＩＤ値（ＷＩＤ１，ＷＩＤ２）とが同時に出力される。ここで、２個のＩＤ値（ＷＩＤ１，ＷＩＤ２）には、同一のバスレーブ（スレーブ番号Ｓ＃）が対応するとする。
【０１１９】
ＩＤデコーダ３６０は、ライトデータ転送経路４６を介して転送された２個のＩＤ値（ＷＩＤ１，ＷＩＤ２）に対応するスレーブ番号Ｓ＃が同一の場合には、データバッファ３６８，３７０のうち該当するスレーブに対応するデータバッファに対して、データが同時転送されていることを通知する。データ分配回路３６６は、ＩＤデコーダ３６０の制御に従って、転送されたライトデータうちデータバッファ３４６に保持されていたライトデータに対応する部分を該当するスレーブに入力するとともに、残りの部分を対応するデータバッファ３６８または３７０に格納させる。すなわち、先にマスタＭ１から出力されたライトデータが該当するスレーブに入力され、後からマスタＭ１から出力されたライトデータが対応するデータバッファに入力される。次の周期において、対応するデータバッファ３６８または３７０に格納されたライトデータは、該当するスレーブに取り込まれる。
【０１２０】
［ライトデータ転送の具体例］
図１１は、図１０のバス転送装置３０によるライトデータ転送の具体例を示すタイミング図である。図１１では上から順に、アドレスバスを転送中のライトアドレス、マスタＭ１から出力されるライトデータ、データバッファ３４６の出力データ、ライトデータバスを転送中のライトデータ、データバッファ３６８の入力データ、およびスレーブＳ１の入力データを示す。図１１の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第５周期ＣＹＣ６までの５つの区間に区分されている。
【０１２１】
図１０および図１１を参照して、図１１の第１周期ＣＹＣ１および第２周期ＣＹＣ２における動作は、図９の場合と同様であるので説明を繰り返さない。
【０１２２】
第３周期ＣＹＣ３において、マスタＭ１はスレーブＳ１へのシングル書込み命令を発行する（トランザクションのＩＤ値＝“３”）。図９の場合は、マスタＭ１はスレーブＳ２へシングル書込み命令を発行していた点で異なる。このシングル書込み命令の発行に伴い、マスタＭ１は、第３周期ＣＹＣ３においてアドレスＡＤＤＲ＿ＣおよびＩＤ値“３”をアドレス転送経路４０に向けて出力するとともに、ライトデータＷＤＡＴＡ＿Ｃ（３２ビット）および関連する付随情報（ＩＤ値“３”など）を出力する。ここで、ライトデータＷＤＡＴＡ＿Ｃのデータ転送経路４６上でのデータ位置は、データバッファ３４６に保持されているライトデータＷＤＡＴＡ  Ｂと重ならないとする。さらに、データアービタ３４０は、第２周期ＣＹＣ２および第３周期ＣＹＣ３のいずれにおいてマスタ番号“１”（マスタＭ１に対応する）を調停結果としてデータ選択回路３５０に通知している。
【０１２３】
この結果、データ選択回路３５０は、データバッファ３４６の保持されているライトデータＷＤＡＴＡ  ＢとマスタＭ１から出力されたライトデータＷＤＡＴＡ  Ｃとを統合して出力可能と判断し、データ選択回路３５４に通知する。データ選択回路３５４は、統合された６４ビットのデータ幅のライトデータ（ＷＤＡＴＡ  Ｂ，ＷＤＡＴＡ  Ｃ）と、ライトデータＷＤＡＴＡ  Ｂに対応するＩＤ値“２”と、ライトデータＷＤＡＴＡ  Ｃに対応するＩＤ値“３”とを、ライトデータ転送経路４６に出力する。ＩＤ値“２”およびＩＤ値“３”は、ＩＤデコーダ３６０に転送される。
【０１２４】
ＩＤデコーダ３６０は、ＩＤ値“２”およびＩＤ値“３”にそれぞれ対応するスレーブ番号Ｓ＃が“１”（スレーブＳ１に対応）で同一であると判定すると、データ分配回路３６６およびスレーブＳ１に対応するデータバッファ３６８に対してライトデータが同時転送されていることを通知する。データ分配回路３６６は、ＩＤデコーダ３６０の制御に従って、転送されたライトデータうちデータバッファ３４６に保持されていたライトデータＷＤＡＴＡ  Ｂに対応する部分を該当するスレーブＳ１に入力するとともに、残りの部分のライトデータＷＤＡＴＡ  Ｃをデータバッファ３６８に保持させる。次の周期ＣＹＣ５において、データバッファ３６８に格納されていたライトデータＷＤＡＴＡ  Ｃは、スレーブＳ１に取り込まれる。
【０１２５】
第４周期ＣＹＣ４において、マスタＭ２はスレーブＳ２へのバースト書込み命令を発行する（トランザクションのＩＤ値＝“１”）。これに伴い、マスタＭ２は、第４周期ＣＹＣ１において先頭アドレスＡＤＤＲ  ＤおよびＩＤ値“１”をアドレス転送経路４０に向けて出力するとともに、第４周期ＣＹＣ４および第５周期ＣＹＣ５においてライトデータＷＤＡＴＡ  Ｄ（１２８ビット×２）および関連する付随情報（ＩＤ値“１”）を出力する。出力されたライトデータＷＤＡＴＡ  Ｄは、データアービタ３４０の制御に従ってライトデータ転送経路４６に出力され、さらに、ＩＤデコーダ３６０の制御に従ってスレーブＳ２に入力される。
【０１２６】
［第５の実施形態の効果］
上記の構成のバス転送装置によれば、同一のスレーブを転送先とする複数のライトデータが同時転送可能になるので、最大バス幅未満のライトデータの転送速度を向上させることができる。これにより、バスマスタからバススレーブへのライトアクセス時の応答速度を上げることができる。
【０１２７】
＜第６の実施形態＞
第４の実施形態では、同一マスタから出力されたバス幅未満の合計データサイズの複数のライトデータを同時転送するためのバス転送装置について説明した。第６の実施形態では、異なるマスタから出力されたバス幅未満の合計データサイズの複数のライトデータを同時転送するためのバス転送装置の構成を開示する。
【０１２８】
［バス転送装置の構成］
図１２は、第６の実施形態に関係するバス転送装置の一部の構成を示すブロック図である。図１２では、図８のバス転送装置のうちライトデータバスに関係する部分のみを示している。アドレスバスに関係する部分の構成は図８の場合と同じである。
【０１２９】
第６の実施形態の場合、バスマスタＭ２から出力されたライトデータ３４４は、ｎ／２ビット以下のデータ幅を有する（データサイズを可変としているので、ｎビットに等しい場合もある）。バスマスタＭ２は、ライトデータ３４４と、データサイズと、ライトデータ３４４に対応するＩＤ値（ＷＩＤ）と、ライトデータ転送経路４６を構成するｎビットのデータ線の中でライトデータが占める位置情報とを出力する。バスマスタＭ２は、ライトデータが格納されているライトアドレスに対応付けて、ライトデータが使用する位置情報を自動的に決定する。
【０１３０】
さらに、図１２のバス転送装置３０のバス制御部３２Ａは、データバッファ３４８と、マルチプレクサ（データ選択回路）３５２とをさらに含む点で図８のバス転送装置と異なる。データアービタ３４０の調停結果は、データバッファ３４６，３４８およびマルチプレクサ（データ選択回路）３５０，３５２，３５４に通知される。
【０１３１】
データバッファ３４８は、マスタＭ２から出力されたライトデータ３４４をライトデータ転送経路４６に転送できないときで、ライトデータ３４４のデータ幅がｎビットよりも小さいときに、ライトデータ３４４および関連する付随情報（ＩＤ値、データサイズ、ライトデータバス幅内でのデータの位置情報）を一時的に保持するために用いられる。
【０１３２】
データ選択回路３５０は、データアービタ３４０から通知された調停結果に基づいて、マスタＭ１から出力されたライトデータ３４２と、データバッファ３４６に保持されたライトデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。さらに、データ選択回路３５０は、データバッファ３４６に格納されたライトデータと、マスタＭ１から出力されたライトデータ３４２とが統合できない場合に、データ選択回路３５４に対してデータバッファ３４６に格納されたライトデータのＩＤ値、データサイズ、データ位置の情報を通知する。
【０１３３】
データ選択回路３５２は、データアービタ３４０から通知された調停結果に基づいて、マスタＭ２から出力されたライトデータ３４４と、データバッファ３４８に保持されたライトデータとのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。さらに、データ選択回路３５２は、データバッファ３４８に格納されたライトデータと、マスタＭ２から出力されたライトデータ３４４とが統合できない場合に、データ選択回路３５４に対してデータバッファ３４８に格納されたライトデータのＩＤ値、データサイズ、データ位置の情報を通知する。
【０１３４】
データ選択回路３５４は、データアービタ３４０から通知された調停結果に基づいて、データ選択回路３５０の出力結果とデータ選択回路３５２の出力結果とのうち、いずれか一方を出力するか、または両方を選択して両方同時に出力する。データ選択回路３５４は、データバッファ３４６，３４８に格納されたライトデータの情報をデータ選択回路３５０，３５２からそれぞれ受けた場合において、これらのライトデータが統合可能な場合にはこれらのライトデータを統合して出力する。データ選択回路３５０は、以下の条件Ｗ４および条件Ｗ５が満たされた場合に、データ選択回路３５０，３５２の両方の出力結果を同時に出力可能と判定する。
【０１３５】
（条件Ｗ４）  データ選択回路３５０によって選択されたライトデータの転送元のマスタ番号とデータ選択回路３５２によって選択されたライトデータの転送元のマスタ番号とは、一方がデータアービタ３４０によって調停結果として示された第１の優先順位のマスタ番号に一致し、他方が第２の優先順位のマスタ番号に一致している。すなわち、前回の調停結果としてデータアービタ３４０が一方のマスタ番号を指示し、今回の調停結果としてデータアービタ３４０が他方のマスタ番号を指示している。
【０１３６】
（条件Ｗ５）  データ選択回路３５０によって選択されたライトデータの転送先のスレーブと、データ選択回路３５２によって選択されたライトデータの転送先のスレーブとは異なっている。転送先のバススレーブの情報（スレーブ番号Ｓ＃）は、データアービタ３４０から調停結果としてマスタ番号Ｍ＃とともに通知される。
【０１３７】
（条件Ｗ６）  データ選択回路３５０によって選択されたライトデータが使用する転送経路４４上でのデータ位置と、データ選択回路３５２によって選択されたライトデータが使用する転送経路４６上でのデータ位置とが重ならない。
【０１３８】
図１２のその他の点は図８の場合と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰り返さない。
【０１３９】
［ライトデータ転送の具体例］
図１３は、図１２のバス転送装置３０によるライトデータ転送の具体例を示すタイミング図である。図１３では上から順に、アドレスバスを転送中のライトアドレス、マスタＭ１から出力されるライトデータ、マスタＭ２から出力されるライトデータ、ライトデータバスを転送中のライトデータ、スレーブＳ１の入力データ、およびスレーブＳ２の入力データを示す。図１３の横軸は時間を表し、クロック信号の第１周期ＣＹＣ１から第５周期ＣＹＣ６までの５つの区間に区分されている。
【０１４０】
図１２および図１３を参照して、第１周期ＣＹＣ１において、マスタＭ２はスレーブＳ２へのバースト書込み命令を発行する（トランザクションのＩＤ値＝“１”）。これに伴い、マスタＭ２は、第１周期ＣＹＣ１において先頭アドレスＡＤＤＲ  ＡおよびＩＤ値“１”をアドレス転送経路４０に向けて出力するとともに、第１周期ＣＹＣ１および第２周期ＣＹＣ２においてライトデータＷＤＡＴＡ  Ａ（１２８ビット×２）および関連する付随情報（ＩＤ値“１”）をライトデータ転送経路４６に向けて出力する。
【０１４１】
第２周期ＣＹＣ２において、マスタＭ２はスレーブＳ２へのシングル書込み命令を発行する（トランザクションのＩＤ値＝“２”）。これに伴い、マスタＭ２は、第２周期ＣＹＣ２においてアドレスＡＤＤＲ＿ＢおよびＩＤ値“２”をアドレス転送経路４０に向けて出力する。第２周期ＣＹＣ２では、まだマスタＭ２からライトデータＷＤＡＴＡ  Ａが転送中である。したがって、マスタＭ２は、第３周期ＣＹＣ３においてライトデータＷＤＡＴＡ＿Ｂ（３２ビット）および関連する付随情報（ＩＤ値“２”など）を出力する。
【０１４２】
第３周期ＣＹＣ３では、さらに、マスタＭ１がスレーブＳ１へのシングル書込み命令を発行する（トランザクションのＩＤ値＝“３”）。これに伴い、マスタＭ１は、第３周期ＣＹＣ３においてアドレスＡＤＤＲ＿ＣおよびＩＤ値“３”をアドレス転送経路４０に向けて出力するとともに、ライトデータＷＤＡＴＡ＿Ｃ（３２ビット）および関連する付随情報（ＩＤ値“３”など）を出力する。ここで、ライトデータＷＤＡＴＡ＿Ｃのデータ転送経路４６上でのデータ位置は、マスタＭ２から出力されているライトデータＷＤＡＴＡ  Ｂと重ならないとする。さらに、データアービタ３４０は、第２周期ＣＹＣ２においてマスタＭ２に対応するマスタ番号“２”をデータ選択回路３５０に通知し、第３周期にＣＹＣ３においてマスタＭ１に対応するマスタ番号“１”をデータ選択回路３５０に通知している。さらに、ライトデータＷＤＡＴＡ＿Ｂの転送先（スレーブＳ２）とライトデータＷＤＡＴＡ＿Ｃの転送先（スレーブＳ１）とは異なる。
【０１４３】
この結果、データ選択回路３５０は、マスタＭ２から出力されたライトデータＷＤＡＴＡ  ＢとマスタＭ１から出力されたライトデータＷＤＡＴＡ  Ｃとを統合して出力可能と判断し、データ選択回路３５４に通知する。データ選択回路３５４は、統合された６４ビットのデータ幅のライトデータ（ＷＤＡＴＡ  Ｂ，ＷＤＡＴＡ  Ｃ）と、ライトデータＷＤＡＴＡ  Ｂに対応するＩＤ値“２”と、ライトデータＷＤＡＴＡ  Ｃに対応するＩＤ値“３”とを、ライトデータ転送経路４６に出力する。ＩＤ値“２”およびＩＤ値“３”は、ＩＤデコーダ３６０に転送される。ＩＤデコーダ３６０は、ＩＤ値“２”およびＩＤ値“３”にそれぞれ対応するスレーブ番号“２”および“１”をデータ分配回路３６６に通知する。データ分配回路３６６は、通知されたスレーブ番号“２”および“１”に従って、スレーブＳ２にライトデータ（ＷＤＡＴＡ  Ｂ）３６４を入力するとともに、スレーブＳ１にライトデータ（ＷＤＡＴＡ  Ｃ）３６２を入力する。
【０１４４】
第４周期ＣＹＣ４において、マスタＭ２はスレーブＳ２へのバースト書込み命令を発行する（トランザクションのＩＤ値＝“１”）。これに伴い、マスタＭ２は、第４周期ＣＹＣ１において先頭アドレスＡＤＤＲ  ＤおよびＩＤ値“１”をアドレス転送経路４０に向けて出力するとともに、第４周期ＣＹＣ４および第５周期ＣＹＣ５においてライトデータＷＤＡＴＡ  Ｄ（１２８ビット×２）および関連する付随情報（ＩＤ値“１”）を出力する。出力されたライトデータＷＤＡＴＡ  Ｄは、データアービタ３４０の制御に従ってライトデータ転送経路４６に出力され、さらに、ＩＤデコーダ３６０の制御に従ってスレーブＳ２に入力される。
【０１４５】
［第６の実施形態の効果］
上記の構成のバス転送装置によれば、異なるバスマスタから出力された転送先のスレーブが異なるライトデータを同時転送可能になるので、最大バス幅未満のデータサイズを有するライトデータの転送能力をさらに向上させることができる。これにより、バスマスタからバスマスタへのライトアクセス時の応答速度を上げることができる。さらに、第３の実施形態は第２の実施形態と組み合わせることができる。この場合、異なるバスマスタから出力された転送先のスレーブが同一のライトデータを同時に転送することができる。
【０１４６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【符号の説明】
【０１４７】
Ｓ１，Ｓ２，２０，２２  バススレーブ、Ｍ１，Ｍ２，１０，１２  バスマスタ、３０  バス転送装置、３２  バス制御部、４０  アドレス転送経路、４４  リードデータ転送経路、４６  ライトデータ転送経路、２１５，３１５  アドレスアービタ、２２５，３２５  アドレスデコーダ、２３５，３３５  状態論理回路、２４０，３４０  データアービタ、２４６，２４８，２６８，２７０，３４６，３４８，３６８，３７０  データバッファ、２５０，２５２，２５４，３５０，３５２，３５４  データ選択回路、２６０，３６０  ＩＤデコーダ、２６６，３６６  データ分配回路。
【図１】
0006449702.tif 000002
【図２】
0006449702.tif 000003
【図３】
0006449702.tif 000004
【図４】
0006449702.tif 000005
【図５】
0006449702.tif 000006
【図６】
0006449702.tif 000007
【図７】
0006449702.tif 000008
【図８】
0006449702.tif 000009
【図９】
0006449702.tif 000010
【図１０】
0006449702.tif 000011
【図１１】
0006449702.tif 000012
【図１２】
0006449702.tif 000013
【図１３】
0006449702.tif 000014