(57)【特許請求の範囲】
【請求項１】
リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理が属するグループを識別するための識別子であるグループ識別子に対して前記グループ識別子ごとに設けられた複数の先入れ先出しメモリと、
前記レスポンスの転送処理を制御するための情報であるトランザクション情報と前記トランザクション処理を識別するためのトランザクション識別子から前記グループ識別子を除いた情報である部分ビット列とを管理情報として書き込むための複数の管理情報書込領域を備えるバッファと、
前記リクエストが発行されるたびに前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込部と、
前記管理情報が書き込まれるたびに前記リクエストに係る前記グループ識別子に対応する前記先入れ先出しメモリに対して前記管理情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、
前記レスポンスが返送されるたびに前記レスポンスに係る前記グループ識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、
前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、
前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部と
を具備する相互接続装置。
【請求項２】
前記管理情報書込部は、
前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込処理部と
前記リクエストにおいて前記トランザクション識別子から前記部分ビット列を除く第１の識別子処理部と、
を備え、
前記管理情報読出部は、
前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出す管理情報読出処理部と、
前記レスポンスにおいて前記読み出された管理情報に含まれる前記部分ビット列と前記グループ識別子とから前記トランザクション識別子を生成する第２の識別子処理部と
を備える請求項２記載の相互接続装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互接続装置に関し、特にスプリットトランザクションを許容してデータを転送する相互接続装置に関する。
【背景技術】
【０００２】
従来、あるモジュールから別のモジュールへデータを転送する場合に、モジュール間をバスにより接続する手法がとられることが多い。モジュールのうち、データ転送を主導するモジュールはマスタと呼ばれ、受動的に動作するモジュールはスレーブと呼ばれる。マスタとなるモジュールとしては、例えばプロセッサが想定される。スレーブとなるモジュールとしては、例えばメモリが想定される。
【０００３】
バス幅やエンディアン方式の異なる複数のバスを備えるバスシステムにおいては、バス幅等の相違に応じてデータ変換を行うバスブリッジが設けられることがある。このバスブリッジに各バスを接続することにより、バス間でのデータ転送が可能となる。これらのバスやバスブリッジは、インターコネクトとも呼ばれる。
【０００４】
このようなバスシステムにおいては、スプリットトランザクションを許容することにより、転送効率を向上させることができる。スプリットトランザクションとは、データ転送のための一連の動作（トランザクション）のうち、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御することである。スプリットトランザクションを許容するバス規格としては、ＡＸＩ（Advanced eXtensible Interface）バスなどがある。
【０００５】
スプリットトランザクションを許容する場合、バスブリッジ等のインターコネクトは、マスタ・スレーブ間でやりとりされる転送が未解決（outstanding）の間、その転送に関するトランザクション情報を保持しておく必要がある。ここで、未解決とは、要求されたデータ転送が完了していない状態である。また、トランザクション情報とは、レスポンスの転送の制御に必要な情報である。例えば、トランザクション情報は、バースト転送を行なう場合のバースト長やバースト数を含む情報である。
【０００６】
スプリットトランザクションにおいて、インターコネクトがトランザクション情報を保持する必要性について説明する。Ｍ１およびＭ２の２つのマスタとＳ１およびＳ２の２つのスレーブとがインターコネクトに接続されたバスシステムを想定する。このバスシステムにおいて、Ｍ１がＳ１に対してデータ転送を要求するリクエストＡを発行したあと、Ｍ２がＳ２に対してデータ転送を要求するリクエストＢを発行したとする。リクエストＡは、バースト転送を要求するものであり、リクエストＢは、バースト転送を要求しないものである。スレーブＳ１およびＳ２は、それぞれ対応するリクエストに応じてレスポンスを返送するが、これらのレスポンスの返送の順番は、リクエストＡ、Ｂの発行の順番と同じとは限らない。このような場合、インターコネクトは、いずれのレスポンスをバースト転送すべきかを判断するために、それぞれの転送が未解決の間、各リクエストに対応するトランザクション情報を保持しておく必要がある。保持しておいたトランザクション情報を参照することにより、インターコネクトは、データ転送を適切に制御することができる。
【０００７】
ＡＸＩバスにおいてトランザクション情報を保持しておく手法として、ＦＩＦＯ（First In First Out）をトランザクション識別子ごとに設けたバスシステムが提案されている（例えば、特許文献１参照。）。各ＦＩＦＯの段数は、許容される未解決の転送数の最大値以上とされる。インターコネクトは、各リクエストに対応するトランザクション情報を、そのリクエストに係るトランザクションに対応するＦＩＦＯに格納しておく。この構成によれば、インターコネクトは、ＦＩＦＯ内からトランザクション情報を読み出すときに、対応するトランザクションを検索する必要がなくなるため、トランザクション情報の読出し処理を高速に行うことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−４１０９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述の従来技術では、バスシステムが許容するトランザクションの数の最大値の増大に伴うＦＩＦＯのサイズの増大を抑制することが困難であった。ＦＩＦＯをトランザクション識別子ごとに設ける場合、トランザクションの数だけＦＩＦＯを設ける必要がある。このため、バスシステムが許容するトランザクション数の最大値の増大に比例して、各ＦＩＦＯの合計の記憶容量が増大してしまう。
【００１０】
本発明はこのような状況に鑑みてなされたものであり、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理を識別するための識別子であるトランザクション識別子に対して前記トランザクション識別子ごとに設けられた複数の先入れ先出しメモリと、前記レスポンスの転送処理を制御するための情報であるトランザクション情報を書き込むための複数のトランザクション情報書込領域を備えるバッファと、前記リクエストが発行されるたびに前記リクエストに基づいて前記トランザクション情報を前記トランザクション情報書込領域のいずれかに書き込むトランザクション情報書込部と、前記トランザクション情報が書き込まれるたびに前記リクエストに係る前記トランザクション識別子に対応する前記先入れ先出しメモリに対して前記トランザクション情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、前記レスポンスが返送されるたびに前記レスポンスに係る前記トランザクション識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部とを具備する相互接続装置である。これにより、トランザクション情報が書き込まれた領域を示す領域情報が先入れ先出しメモリに書き込まれ、先入れ先出しメモリから読み出された領域情報の示す領域からトランザクション情報が読み出されるという作用をもたらす。
【００１２】
また、この第１の側面において、上記複数の先入れ先出しメモリから溢れた上記領域情報を保持する溢れ先入れ先出しメモリをさらに具備し、上記領域情報書込部は、上記リクエストに係る上記先入れ先出しメモリから上記領域情報が溢れない場合に上記領域情報を上記先入れ先出しメモリに書き込み、上記リクエストに係る上記先入れ先出しメモリから上記領域情報が溢れる場合に上記溢れ先入れ先出しメモリに上記領域情報を書き込み、上記領域情報読出部は、上記レスポンスに係る上記領域情報が上記溢れ先入れ先出しメモリに書き込まれている場合に上記溢れ先入れ先出しメモリから上記領域情報を読み出し、上記領域情報が上記溢れ先入れ先出しメモリに書き込まれていない場合に上記先入れ先出しメモリから上記領域情報を読み出すこともできる。これにより、先入れ先出しメモリから溢れた領域情報が溢れ先入れ先出しメモリに保持されるという作用をもたらす。
【００１３】
また、この第１の側面において、上記先入れ先出しメモリが上記領域情報を保持できないことを示すフルフラグを上記先入れ先出しメモリごとにさらに具備し、上記領域情報書込部は、上記フルフラグに基づいて上記先入れ先出しメモリから上記領域情報が溢れるか否かを判断してもよい。これにより、フルフラグに基づいて先入れ先出しメモリから領域情報が溢れるか否かが判断されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記溢れ先入れ先出しメモリが空であることを示す空フラグをさらに具備し、上記領域情報読出部は、上記空フラグに基づいて上記領域情報が上記溢れ先入れ先出しメモリに書き込まれているか否かを判断してもよい。これにより、空フラグに基づいて溢れ先入れ先出しメモリに領域情報が書き込まれているか否かが判断されるという作用をもたらす。
【００１５】
また、この第１の側面において、上記先入れ先出しメモリおよび上記溢れ先入れ先出しメモリは上記領域情報を保持するための領域であるエントリを１つ以上備え、上記先入れ先出しメモリのエントリ数は、未解決な上記トランザクション処理の数の最大値の半分以上であり、上記溢れ先入れ先出しメモリのエントリ数は、上記最大値と上記先入れ先出しメモリのエントリ数との間の差分であってもよい。これにより、先入れ先出しメモリのエントリ数が、未解決な上記トランザクション処理の数の最大値の半分以上とされるという作用をもたらす。
【００１６】
また、本発明の第２の側面は、リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理が属するグループを識別するための識別子であるグループ識別子に対して前記グループ識別子ごとに設けられた複数の先入れ先出しメモリと、前記レスポンスの転送処理を制御するための情報であるトランザクション情報と前記トランザクション処理を識別するためのトランザクション識別子から前記グループ識別子を除いた情報である部分ビット列とを管理情報として書き込むための複数の管理情報書込領域を備えるバッファと、前記リクエストが発行されるたびに前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込部と、前記管理情報が書き込まれるたびに前記リクエストに係る前記グループ識別子に対応する前記先入れ先出しメモリに対して前記管理情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、前記レスポンスが返送されるたびに前記レスポンスに係る前記グループ識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部とを具備する相互接続装置である。これにより、トランザクション情報が書き込まれた領域を示す領域情報が、グループ識別子に対応する先入れ先出しメモリに書き込まれ、グループ識別子に対応する先入れ先出しメモリから読み出された領域情報の示す領域からトランザクション情報が読み出されるという作用をもたらす。
【００１７】
また、この第２の側面において、前記管理情報書込部は、前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込処理部と前記リクエストにおいて前記トランザクション識別子から前記部分ビット列を除く第１の識別子処理部と、を備え、前記管理情報読出部は、前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出す管理情報読出処理部と、前記レスポンスにおいて前記読み出された管理情報に含まれる前記部分ビット列と前記グループ識別子とから前記トランザクション識別子を生成する第２の識別子処理部とを備えてもよい。これにより、トランザクション識別子から部分ビット列が除かれ、部分ビット列とグループ識別子とからトランザクション識別子を生成されるという作用をもたらす。
【発明の効果】
【００１８】
本発明によれば、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大が抑制されるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態におけるバスシステムの一構成例を示す全体図である。
【図２】ＡＸＩプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。
【図３】ＡＸＩプロトコルにおけるリードデータチャネルを構成する信号を示す図である。
【図４】ＡＸＩプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。
【図５】ＡＸＩプロトコルにおけるライトデータチャネルを構成する信号を示す図である。
【図６】ＡＸＩプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。
【図７】本発明の第１の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図８】本発明の第１の実施の形態における相互接続部の一構成例を示すブロック図である。
【図９】本発明の第１の実施の形態におけるＦＩＦＯメモリ群の一構成例を示す図である。
【図１０】本発明の第１の実施の形態におけるバッファ４５０の各バッファエントリに保持される有効フラグおよびトランザクション情報の一例を示す図である。
【図１１】本発明の第１の実施の形態におけるバッファの一構成例を示す図である。
【図１２】本発明の第１の実施の形態におけるトランザクション情報書込部の一構成例を示すブロック図である。
【図１３】本発明の第１の実施の形態におけるトランザクション情報読出部の動作の一例を示す図である。
【図１４】本発明の第１の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図１５】本発明の第１の実施の形態におけるトランザクション情報書込処理の一例を示すフローチャートである。
【図１６】本発明の第１の実施の形態におけるトランザクション情報読出処理の一例を示すフローチャートである。
【図１７】本発明の第１の実施の形態におけるリクエスト発行時のバスブリッジの動作を説明するための図である。
【図１８】本発明の第１の実施の形態におけるリクエスト発行後のバッファの状態の一例を示す図である。
【図１９】本発明の第１の実施の形態におけるリクエスト発行後のＦＩＦＯメモリの状態の一例を示す図である。
【図２０】本発明の第１の実施の形態におけるレスポンス返送時のバスブリッジの動作を説明するための図である。
【図２１】本発明の第１の実施の形態におけるレスポンス返送後のＦＩＦＯメモリの状態の一例を示す図である。
【図２２】本発明の第１の実施の形態におけるレスポンス返送後のバッファの状態の一例を示す図である。
【図２３】本発明の第２の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図２４】本発明の第２の実施の形態におけるＦＩＦＯメモリ群の一構成例を示す図である。
【図２５】本発明の第２の実施の形態における有効フラグおよび管理情報の一例を示す図である
【図２６】本発明の第２の実施の形態におけるバッファの一構成例を示す図である。
【図２７】本発明の第２の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図２８】本発明の第２の実施の形態における管理情報書込処理の一例を示すブロック図である。
【図２９】本発明の第２の実施の形態における管理情報読出処理の一例を示すフローチャートである。
【図３０】本発明の第３の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図３１】本発明の第３の実施の形態におけるＦＩＦＯメモリ群の一構成例を示す図である。
【図３２】本発明の第３の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図３３】本発明の第３の実施の形態におけるエントリ番号書込処理の一例を示すフローチャートである。
【図３４】本発明の第３の実施の形態におけるエントリ番号読出処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ＦＩＦＯメモリにバッファエントリ番号を保持する例）
２．第２の実施の形態（ＦＩＦＯメモリをグループごとに設ける例）
３．第３の実施の形態（オーバーフローＦＩＦＯを設ける例）
【００２１】
＜１．第１の実施の形態＞
［バスシステムの構成］
図１は、本発明の第１の実施の形態におけるバスシステムの全体図の一例である。バスシステムは、Ｍ台のマスタ１１０と、ＡＸＩバス１２０および１３０と、Ｎ台のスレーブ１４０と、バスブリッジ２００とを備える。ＭおよびＮは、それぞれ、１以上の整数である。マスタ１１０はＡＸＩバス１２０に接続されており、スレーブ１４０はＡＸＩバス１３０に接続されている。また、ＡＸＩバス１２０および１３０は、バスブリッジ２００に接続されている。
【００２２】
マスタ１１０はデータ転送を主導する接続機器であり、スレーブ１４０は受動的に動作する接続機器である。マスタ１１０としては、例えばプロセッサが想定される。スレーブ１４０としては、例えばメモリが想定される。
【００２３】
ＡＸＩバス１２０および１３０は、ＡＸＩプロトコルに従ってデータを転送するバスである。バスブリッジ２００は、ＡＸＩプロトコルに従ってデータを転送し、そのデータ転送において必要に応じてデータ変換を行うものである。例えば、バスブリッジ２００は、ＡＸＩバス１２０および１３０のそれぞれのバス幅やエンディアン方式が異なる場合に、転送先のバスのバス幅等に合わせてデータ変換を行う。
【００２４】
ここで、ＡＸＩプロトコルでは、リード動作のためのパスとして、リードアドレスチャネルおよびリードデータチャネルが用意されている。マスタ１１０からリードアドレスチャネルを介してスレーブ１４０にリードアドレスを含むリクエストが転送されると、これに応答してリードデータチャネルを介してスレーブ１４０からマスタ１１０にリードデータが転送される。また、ＡＸＩプロトコルでは、ライト動作のためのパスとして、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルが用意されている。マスタ１１０からライトアドレスチャネルおよびライトデータチャネルを介してスレーブ１４０にリクエストが転送されると、これに応答してスレーブ１４０においてライト動作が行われる。そして、そのライト動作の結果が、ライトレスポンスチャネルを介してスレーブ１４０からマスタ１１０に転送される。
【００２５】
以下、マスタからスレーブへリードアドレスチャネルおよびライトアドレスチャネルを介して転送される信号をリクエストと称する。また、スレーブからマスタへリードデータチャネルおよびライトレスポンスチャネルを介して転送される信号をレスポンスと称する。
【００２６】
ＡＸＩプロトコルにおいては、リクエストの転送処理と、そのリクエストに対応するレスポンスの転送処理とが１つのトランザクションの処理を形成する。１つのトランザクションに含まれるリクエストおよびレスポンスには同じ識別子が付与されるのがＡＸＩプロトコルにおける原則である。また、異なるトランザクション間で同じ識別子を付与した場合には、それらのトランザクション間において順序保証が行われる。
【００２７】
なお、上述の実施の形態のバスブリッジ２００は、特許請求の範囲に記載の相互接続装置の一例である。
【００２８】
［ＡＸＩプロトコルにおけるチャネル構成］
図２は、ＡＸＩプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。リードアドレスチャネルは、リードアドレスをマスタ１１０からスレーブ１４０に伝達するためのチャネルである。このリードアドレスチャネルは、リードアドレス識別子、リードアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、リードアドレスバリッド、リードアドレスレディの各信号からなる。これらの信号のうち、リードアドレスレディのみがスレーブ１４０からの信号であり、これ以外はマスタ１１０からの信号である。
【００２９】
リードアドレス識別子ＡＲＩＤ［３：０］は、信号のリードアドレスグループを識別するための４ビットのタグである。ＡＸＩプロトコルでは、マスタがトランザクションを発行する際に、スレーブに対して順序関係を維持することを要求する場合には、同じ識別子を付与することとされている。換言すれば、識別子が異なるトランザクション間では順序関係が維持される保証はない。
【００３０】
リードアドレスＡＲＡＤＤＲ［３１：０］は、リード対象となる３２ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【００３１】
バースト長ＡＲＬＥＮ［３：０］は、バースト転送のデータ数を示す４ビットの信号である。「１」から「１６」の何れかのデータ数が４ビットにエンコードされて示される。
【００３２】
バーストサイズＡＲＳＩＺＥ［２：０］は、バースト転送の各回における転送サイズを示す３ビットの信号である。「２0」、「２1」、「２2」、「２3」、「２4」、「２5」、「２6」、「２7」の何れかの転送サイズが３ビットにエンコードされて示される。
【００３３】
バーストタイプＡＲＢＵＲＳＴ［１：０］は、バースト転送のアドレス計算のタイプを示す２ビットの信号である。具体的には、ＦＩＦＯ型、連続アクセス、キャッシュラインの何れかのタイプを指定できるようになっている。
【００３４】
ロックタイプＡＲＬＯＣＫ［１：０］は、アトミックアクセスのための情報を示す２ビットの信号である。具体的には、ノーマルアクセス、排他的アクセス、ロック付きアクセスの何れかのタイプを指定できるようになっている。
【００３５】
キャッシュタイプＡＲＣＡＣＨＥ［３：０］は、キャッシュメモリ制御に必要な情報を示す４ビットの信号である。具体的には、キャッシュ可能か否か、ライトスルーかライトバックか等の制御情報が示される。
【００３６】
プロテクションタイプＡＲＰＲＯＴ［２：０］は、プロテクション制御に必要な情報を示す３ビットの信号である。具体的には、特権アクセス、非セキュアアクセス、インストラクションアクセスの各プロテクションレベルを指定できるようになっている。
【００３７】
リードアドレスバリッドＡＲＶＡＬＩＤは、アドレスおよび制御信号の有効性を示すバリッド信号である。リードアドレスレディＡＲＲＥＡＤＹは、スレーブ１４０がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードアドレスバリッドＡＲＶＡＬＩＤおよびリードアドレスレディＡＲＲＥＡＤＹがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【００３８】
図３は、ＡＸＩプロトコルにおけるリードデータチャネルを構成する信号を示す図である。リードデータチャネルは、リードデータをスレーブ１４０からマスタ１１０に転送するためのチャネルである。このリードデータチャネルは、リード識別子タグ、リードデータ、リードレスポンス、リードラスト、リードバリッド、リードレディの各信号からなる。これらの信号のうち、リードレディのみがマスタ１１０からの信号であり、これ以外はスレーブ１４０からの信号である。
【００３９】
リード識別子タグＲＩＤ［３：０］は、信号のリードデータグループを識別するための４ビットのタグである。このリード識別子タグＲＩＤ［３：０］はスレーブにおいて生成されるものであり、同一のトランザクションにおいてリードアドレス識別子ＡＲＩＤ［３：０］と一致していなければならない。
【００４０】
リードデータＲＤＡＴＡ［３１：０］は、リードトランザクションによるスレーブ１４０からのリードデータである。ここでは３２ビット幅のリードデータバスを想定したが、ＲＤＡＴＡのビット幅はリードデータバス幅に応じて変化する。リードデータバスは、８、１６、３２、６４、１２８、２５６、５１２および１０２４の何れかのビット幅を有する。
【００４１】
リードレスポンスＲＲＥＳＰ［１：０］は、リードトランザクションによるデータ転送の状態を示す２ビットの信号である。例えば、リードレスポンスには、リードアクセスの成功または失敗を示す信号が含まれる。
【００４２】
リードラストＲＬＡＳＴは、当該データがリードトランザクションにおける最終のデータ転送である旨を示す信号である。
【００４３】
リードバリッドＲＶＡＬＩＤは、要求されたリードデータの有効性を示すバリッド信号である。リードレディＲＲＥＡＤＹは、マスタ１１０がリードデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードバリッドＲＶＡＬＩＤおよびリードレディＲＲＥＡＤＹがともにアサートされているときに、リードデータの転送が行われる。
【００４４】
図４は、ＡＸＩプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。ライトアドレスチャネルは、ライトアドレスをマスタ１１０からスレーブ１４０に伝達するためのチャネルである。このライトアドレスチャネルは、ライトアドレス識別子、ライトアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、ライトアドレスバリッド、ライトアドレスレディの各信号からなる。これらの信号のうち、ライトアドレスレディのみがスレーブ１４０からの信号であり、これ以外はマスタ１１０からの信号である。
【００４５】
ライトアドレス識別子ＡＷＩＤ［３：０］は、信号のライトアドレスグループを識別するための４ビットのタグである。ライトアドレスＡＷＡＤＤＲ［３１：０］は、ライト対象となる３２ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【００４６】
バースト長ＡＷＬＥＮ［３：０］は、バースト転送のデータ数を示す４ビットの信号である。バーストサイズＡＷＳＩＺＥ［２：０］は、バースト転送の各回における転送サイズを示す３ビットの信号である。バーストタイプＡＷＢＵＲＳＴ［１：０］は、バースト転送のアドレス計算のタイプを示す２ビットの信号である。ロックタイプＡＷＬＯＣＫ［１：０］は、アトミックアクセスのための情報を示す２ビットの信号である。キャッシュタイプＡＷＣＡＣＨＥ［３：０］は、キャッシュメモリ制御に必要な情報を示す４ビットの信号である。プロテクションタイプＡＷＰＲＯＴ［２：０］は、プロテクション制御に必要な情報を示す３ビットの信号である。これらは基本的にリードアドレスチャネルの場合と同様である。
【００４７】
ライトアドレスバリッドＡＷＶＡＬＩＤは、アドレスおよび制御信号の有効性を示すバリッド信号である。ライトアドレスレディＡＷＲＥＡＤＹは、スレーブ１４０がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトアドレスバリッドＡＷＶＡＬＩＤおよびライトアドレスレディＡＷＲＥＡＤＹがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【００４８】
図５は、ＡＸＩプロトコルにおけるライトデータチャネルを構成する信号を示す図である。ライトデータチャネルは、ライトデータをマスタ１１０からスレーブ１４０に転送するためのチャネルである。このライトデータチャネルは、ライト識別子タグ、ライトデータ、ライトストローブ、ライトラスト、ライトバリッド、ライトレディの各信号からなる。これらの信号のうち、ライトレディのみがスレーブ１４０からの信号であり、これ以外はマスタ１１０からの信号である。
【００４９】
ライト識別子タグＷＩＤ［３：０］は、信号のライトデータグループを識別するための４ビットのタグである。このライト識別子タグＷＩＤ［３：０］は、同一のトランザクションにおいてライトアドレス識別子ＡＷＩＤ［３：０］と一致していなければならない。
【００５０】
ライトデータＷＤＡＴＡ［３１：０］は、ライトトランザクションによるスレーブ１４０へのライトデータである。ここでは３２ビット幅のライトデータバスを想定したが、ＷＤＡＴＡのビット幅はリードデータバス幅に応じて変化する。ライトデータバスは、８、１６、３２、６４、１２８、２５６、５１２および１０２４の何れかのビット幅を有する。
【００５１】
ライトストローブＷＳＴＲＢ［３：０］は、スレーブ１４０のメモリにおいて更新されるべきバイト位置を示す４ビットの信号である。ライトデータバスの８ビット毎にライトストローブＷＳＴＲＢ［３：０］の１ビットが割り当てられる。すなわち、［３：０］の値をｉとすると、ＷＳＴＲＢ［ｉ］は、ＷＤＡＴＡ［（８×ｉ）＋７：（８×ｉ）］に対応する。
【００５２】
ライトラストＷＬＡＳＴは、当該データがライトトランザクションにおける最終のデータ転送である旨を示す信号である。
【００５３】
ライトバリッドＷＶＡＬＩＤは、ライトデータの有効性を示すバリッド信号である。ライトレディＷＲＥＡＤＹは、スレーブ１４０がライトデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトバリッドＷＶＡＬＩＤおよびライトレディＷＲＥＡＤＹがともにアサートされているときに、ライトデータの転送が行われる。
【００５４】
図６は、ＡＸＩプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。ライトレスポンスチャネルは、ライトトランザクションの結果をスレーブ１４０からマスタ１１０に伝達するためのチャネルである。このライトレスポンスチャネルは、レスポンス識別子、ライトレスポンス、ライトレスポンスバリッド、レスポンスレディの各信号からなる。これらの信号のうち、レスポンスレディのみがマスタ１１０からの信号であり、これ以外はスレーブ１４０からの信号である。
【００５５】
レスポンス識別子ＢＩＤ［３：０］は、ライトレスポンスを識別するための４ビットのタグである。このレスポンス識別子ＢＩＤ［３：０］は、同一のトランザクションにおいてライトアドレス識別子ＡＷＩＤ［３：０］と一致していなければならない。
【００５６】
ライトレスポンスＢＲＥＳＰ［１：０］は、ライトトランザクションによるデータ転送の状態を示す２ビットの信号である。例えば、ライトレスポンスには、ライトアクセスの成功または失敗を示す信号が含まれる。
【００５７】
ライトレスポンスバリッドＢＶＡＬＩＤは、ライトレスポンスの有効性を示すバリッド信号である。レスポンスレディＢＲＥＡＤＹは、マスタ１１０がライトレスポンスを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトレスポンスバリッドＢＶＡＬＩＤおよびレスポンスレディＢＲＥＡＤＹがともにアサートされているときに、ライトレスポンスの伝達が行われる。
【００５８】
［バスブリッジの構成］
図７は、本発明の第１の実施の形態におけるバスブリッジ２００の一構成例を示すブロック図である。バスブリッジ２００は、相互接続部３００、ＦＩＦＯメモリ群４００、バッファ４５０、トランザクション情報書込部５００、エントリ番号書込部５５０、エントリ番号読出部６００、および、トランザクション情報読出部６５０を備える。
【００５９】
相互接続部３００は、リクエストおよびレスポンスをマスタ１１０およびスレーブ１４０間で転送するものである。詳細には、ＡＸＩバス１２０から信号線８０２を介してリクエストを受信した場合、相互接続部３００は、信号線８０１を介してリクエストに係るバリッド信号を取得し、信号線８１７を介して対応するレディ信号を取得する。以下、バリッド信号およびレディ信号をハンドシェイク信号と称する。リクエストに係るレディ信号およびバリッド信号がアサートされていれば、相互接続部３００は、そのリクエストをトランザクション情報書込部５００に信号線８０４を介して出力する。トランザクション情報書込部５００から信号線８０６を介してバッファフル通知を受け取った場合、相互接続部３００は、リクエストに係るレディ信号をネゲートし、信号線８０１を介してＡＸＩバス１２０へ出力する。ここで、バッファフル通知とは、バッファ４５０にデータを保持できないことを示す情報である。バッファフル通知を受け取らなかった場合、相互接続部３００は、そのリクエストをＡＸＩバス１３０に信号線８１８を介して転送する。
【００６０】
また、ＡＸＩバス１３０から信号線８１９を介してレスポンスを受信した場合、相互接続部３００は、信号線８１７を介してレスポンスに係るバリッド信号を取得し、信号線８０１を介して対応するレディ信号を取得する。バリッド信号およびレディ信号がアサートされていれば、相互接続部３００は、信号線８１１を介してレスポンスをエントリ番号読出部６００およびトランザクション情報読出部６５０に出力する。そして、相互接続部３００は、信号線８１６を介してトランザクション情報読出部６５０からレスポンスに対応するトランザクション情報を受け取る。ここで、トランザクション情報は、レスポンスの転送処理を制御するための情報である。トランザクション情報が含む情報の詳細については後述する。相互接続部３００は、受け取ったトランザクション情報に基づき、信号線８０３を介してレスポンスをＡＸＩバス１２０へ転送する。
【００６１】
ＦＩＦＯメモリ群４００は、先入れ先出し方式でデータを保持するものである。ＦＩＦＯメモリ群４００には、トランザクション識別子ＩＤごとにＦＩＦＯメモリが設けられる。各ＦＩＦＯメモリは、データを保持するための領域を１つ以上備える。以下、この領域をＦＩＦＯエントリと称する。各ＦＩＦＯメモリのＦＩＦＯエントリ数は、バスシステムが許容する未解決なトランザクション数の最大値以上とされる。例えば、バスシステムが許容する未解決のトランザクション数の最大値が１６個である場合、各ＦＩＦＯメモリには、少なくとも１６個のＦＩＦＯエントリが設けられる。また、各ＦＩＦＯメモリは、データとしてバッファエントリ番号を保持する。ここで、バッファエントリは、バッファ４５０におけるデータを保持するための領域であり、バッファエントリ番号は、バッファエントリを識別するための番号である。
【００６２】
バッファ４５０は、トランザクション情報を保持するものである。バッファ４５０は、１つ以上のバッファエントリを備える。バッファ４５０に設けられるバッファエントリの数は、バスシステムが許容する未解決なトランザクションの最大値以上とされる。例えば、バスシステムが許容する未解決のトランザクションの最大数が１６個である場合、少なくとも１６個のバッファエントリが設けられる。各バッファエントリには、有効フラグ保持領域とトランザクション情報保持領域とが設けられる。有効フラグ保持領域には、有効フラグが保持される。有効フラグは、バッファエントリのトランザクション情報保持領域に保持されているデータが有効であることを示すビット情報である。例えば、データが有効である場合に有効フラグに「１」が設定され、無効である場合に「０」が設定される。トランザクション情報保持領域には、トランザクション情報が保持される。
【００６３】
トランザクション情報書込部５００は、トランザクション情報をバッファ４５０に書き込むものである。詳細には、トランザクション情報書込部５００は、相互接続部３００からリクエストを受け取ると、信号線８０７を介してバッファ４５０の各バッファエントリの有効フラグを参照する。有効フラグが全て有効である場合、トランザクション情報書込部５００は、バッファフル通知を発行して相互接続部３００へ出力する。有効フラグのいずれかが無効である場合、トランザクション情報書込部５００は、有効フラグが無効のバッファエントリのうちのいずれかを選択する。トランザクション情報書込部５００は、リクエストに基づいてトランザクション情報を生成し、選択したバッファエントリに書き込む。トランザクション情報書込部５００は、トランザクション情報を書き込んだバッファエントリの有効フラグを有効にする。また、トランザクション情報書込部５００は、選択したバッファエントリ番号とリクエストに係るトランザクション識別子ＩＤとをエントリ番号書込部５５０へ信号線８０８および信号線８０９を介して出力する。
【００６４】
エントリ番号書込部５５０は、トランザクション情報書込部５００によって選択されたバッファエントリ番号を、トランザクション識別子ＩＤに対応するＦＩＦＯメモリに信号線８１０を介して書き込むものである。
【００６５】
エントリ番号読出部６００は、トランザクション識別子ＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出すものである。詳細には、エントリ番号読出部６００は、相互接続部３００からレスポンスを受け取ると、そのレスポンスに係るトランザクション識別子ＩＤを取得する。エントリ番号読出部６００は、取得したトランザクション識別子ＩＤに対応するＦＩＦＯメモリから信号線８１２を介してバッファエントリ番号を読み出す。エントリ番号読出部６００は、読み出したバッファエントリ番号をトランザクション情報読出部６５０へ信号線８１３を介して出力する。
【００６６】
トランザクション情報読出部６５０は、エントリ番号読出部６００によって読み出されたバッファエントリ番号のバッファエントリから、トランザクション情報を読み出すものである。詳細には、トランザクション情報読出部６５０は、エントリ番号読出部６００によりバッファエントリ番号が読み出されると、そのバッファエントリ番号のバッファエントリから信号線８１４を介してトランザクション情報を読み出す。トランザクション情報読出部６５０は、読み出したトランザクション情報を相互接続部３００へ信号線８１６を介して出力する。レスポンスがバースト転送における最終のデータである場合またはライトレスポンスである場合、トランザクション情報読出部６５０は、信号線８１５を介してエントリの有効フラグを無効にする情報をバッファ４５０へ出力する。レスポンスがバースト転送における最終のデータでない場合、トランザクション情報読出部６５０は、エントリにおけるトランザクション情報を更新する。例えば、トランザクション情報読出部６５０は、トランザクション情報におけるバーストカウントをカウントアップする。
【００６７】
なお、上述の実施の形態のＦＩＦＯメモリは、特許請求の範囲に記載の先入れ先出しメモリの一例である。上述の実施の形態のエントリ番号書込部は、特許請求の範囲に記載の領域情報書込部の一例であり、エントリ番号読出部は、特許請求の範囲に記載の領域情報読出部の一例である。上述の実施の形態のバッファエントリ番号は、特許請求の範囲に記載の領域情報の一例である。
【００６８】
図８は、本発明の第１の実施の形態における相互接続部３００の一構成例を示すブロック図である。相互接続部３００は、変換情報生成器３１０および３３０を備える。
【００６９】
変換情報生成器３１０は、ＡＸＩバス１２０から受信したリクエストをＡＸＩバス１３０の仕様に基づき必要に応じて変換するものである。詳細には、変換情報生成器３１０は、ＡＸＩバス１２０からリクエストを受信した場合、リクエストに係るハンドシェイク信号を取得する。リクエストに係るバリッド信号およびレディ信号がアサートされたのであれば、変換情報生成器３１０は、リクエストをトランザクション情報書込部５００へ出力する。トランザクション情報書込部５００からバッファフル通知を受け取った場合、変換情報生成器３１０は、レディ信号をネゲートしてＡＸＩバス１２０へ出力する。トランザクション情報書込部５００からバッファフル通知を受け取らなかった場合、変換情報生成器３１０は、リクエストを必要に応じて変換してＡＸＩバス１３０に出力する。
【００７０】
変換情報生成器３３０は、ＡＸＩバス１３０から受信したレスポンスをＡＸＩバス１２０の仕様およびトランザクション情報に基づき必要に応じて変換するものである。詳細には、変換情報生成器３３０は、ＡＸＩバス１３０からレスポンスを受信した場合、レスポンスに係るレディ信号およびバリッド信号を取得する。レスポンスに係るバリッド信号およびレディ信号がアサートされたのであれば、変換情報生成器３３０は、レスポンスをエントリ番号読出部６００およびトランザクション情報読出部６５０に出力する。そして、変換情報生成器３３０は、そのレスポンスに対応するトランザクション情報をトランザクション情報読出部６５０から受け取る。変換情報生成器３３０は、そのトランザクション情報に基づいて、必要に応じてレスポンスを変換してＡＸＩバス１２０に出力する。例えば、変換情報生成器３３０は、トランザクション情報の示すバースト転送の方式や転送先のバスのバス幅等に応じて転送データを結合または分割する。
【００７１】
図９は、本発明の第１の実施の形態におけるＦＩＦＯメモリ群４００の一構成例を示す図である。ＦＩＦＯメモリ群４００には、トランザクション識別子ＩＤごとにＦＩＦＯメモリが設けられる。例えば、トランザクション識別子ＩＤが０乃至２５５である場合、それらの識別子に対応させてＦ［０］乃至［２５５］のＦＩＦＯメモリが設けられる。
【００７２】
各ＦＩＦＯメモリは、データ保持領域４１１、ライトポインタ保持領域４１２、および、フルフラグ保持領域４１３を備える。
【００７３】
データ保持領域４１１には、データを保持するための領域（ＦＩＦＯエントリ）が１つ以上、設けられる。例えば、バスシステムが許容する未解決のトランザクション数の最大値が１６である場合、少なくとも１６個のＦＩＦＯエントリが設けられる。
【００７４】
ライトポインタ保持領域４１２は、ライトポインタを保持するための領域である。ライトポインタは、データを書き込むべき領域を示す情報である。図１０における矢印は、ライトポインタの示す領域を指している。ライトポインタの初期値は０に設定される。先頭からｉ番目のＦＩＦＯエントリに末尾のデータが保持された場合、先頭からｉ＋１番目を示すライトポインタが設定される。ただし、末尾のＦＩＦＯエントリに末尾のデータが保持された場合は、その末尾のＦＩＦＯエントリを示すライトポインタが設定される。
【００７５】
フルフラグ保持領域４１３は、フルフラグを保持するものである。フルフラグは、ＦＩＦＯメモリにデータを保持できないことを示す１ビットの情報である。例えば、末尾のＦＩＦＯエントリにデータが保持されている場合、フルフラグに「１」のデータが設定され、末尾のＦＩＦＯエントリにデータが保持されていない場合、フルフラグに「０」が設定される。フルフラグが「０」である場合、ライトポインタの示すＦＩＦＯエントリ以降のＦＩＦＯエントリに保持されているデータは無効であることを意味する。無効なデータを保持するＦＩＦＯエントリは、空になっている状態であるものとする。このため、フルフラグが「１」である場合、全てのデータが有効な状態となっている。
【００７６】
バスブリッジ２００のエントリ番号書込部５５０は、ＦＩＦＯメモリ群４００のうちのトランザクション識別子ＩＤに対応するＦＩＦＯメモリにおいてライトポインタの示す領域にバッファエントリ番号を書き込む。書込み時に、そのＦＩＦＯメモリのライトポインタが最大値（例えば、１５）でない場合、エントリ番号書込部５５０は、そのライトポインタをインクリメントする。書込み時に、そのＦＩＦＯメモリのライトポインタが最大値である場合、エントリ番号書込部５５０は、フルフラグに「１」を設定する。
【００７７】
例えば、ＦＩＦＯメモリＦ［０］においてバッファエントリ番号０が書き込まれた場合、先頭のＦＩＦＯエントリにバッファエントリ番号０が保持され、ライトポインタは初期値０から１に更新される。次いで、ＦＩＦＯメモリＦ［０］にバッファエントリ番号１が書き込まれた場合、２番目ＦＩＦＯエントリにバッファエントリ番号１が保持され、ライトポインタは初期値１から２に更新される。
【００７８】
バスブリッジ２００のエントリ番号読出部６００は、ＦＩＦＯメモリ群４００のうちのトランザクション識別子ＩＤに対応するＦＩＦＯメモリにおいて先頭のＦＩＦＯエントリからバッファエントリ番号を読み出す。先頭からの読み出しが行われると、エントリ番号読出部６００は、そのＦＩＦＯメモリにおいて先頭から２番目以降のＦＩＦＯエントリに保持されているデータを先頭へ向けて順に１つずつシフトする。この結果、先頭のＦＩＦＯエントリに保持されていたデータは削除される。
【００７９】
具体的には、フルフラグが１である場合、エントリ番号読出部６００は、そのＦＩＦＯメモリにおいて２番目から末尾までのＦＩＦＯエントリに保持されていたデータを先頭から末尾の直前までのＦＩＦＯエントリに書き込む。そして、エントリ番号読出部６００は、フルフラグに「０」を設定する。一方、フルフラグが１である場合、エントリ番号読出部６００は、ライトポインタの値をｉとして、ＦＩＦＯメモリにおいて２番目からｉ−１までのＦＩＦＯエントリに保持されていたデータを先頭からｉ番目までのＦＩＦＯエントリに書き込む。このようにして各データをシフトした後、エントリ番号読出部６００は、ライトポインタをデクリメントする。
【００８０】
例えば、バッファエントリ番号０および１が書き込まれているＦＩＦＯメモリＦ［０］からデータが読み出される場合、先頭のＦＩＦＯエントリからバッファエントリ番号０が読み出される。２番目のＦＩＦＯエントリに保持されていたバッファエントリ番号１は先頭のＦＯＦＯエントリに書き込まれる。そしてライトポインタは、２から１に更新される。
【００８１】
図１０は、本発明の第１の実施の形態におけるバッファ４５０の各バッファエントリに保持される有効フラグおよびトランザクション情報の一例を示す図である。有効フラグは、有効フラグ保持領域４６１に保持され、トランザクション情報は、トランザクション情報保持領域４６２に保持される。トランザクション情報は、例えば、パッキング実施フラグｐ、アドレス下位ビットａｄｄｒ、バースト長ｌｅｎ、バーストサイズｓｉｚｅ、バーストタイプｂｔｙｐ、および、バーストカウントｂｃｎｔを含む。
【００８２】
パッキング実施フラグｐは、パッキングを実施するか否かを示す１ビットの情報である。パッキングは、バスの仕様に基づいてバースト対象のデータをまとめることである。パッキングは、例えば、バス幅が３２ビットのバスからのデータをバス幅が６４ビットのバスへ転送する際に実行される。アドレス下位ビットａｄｄｒは、アクセス先の下位アドレスを特定するための４ビットの情報である。バースト長ｌｅｎは、バースト転送のデータ数を示す４ビットの情報である。バーストサイズｓｉｚｅは、バースト転送の各回における転送サイズを示す３ビットの情報である。バーストタイプｂｔｙｐは、バースト転送のアドレス計算のタイプを示す２ビットの情報である。バーストカウントｂｃｎｔは、バースト転送の回数を示す４ビットの情報である。
【００８３】
図１１は、本発明の第１の実施の形態におけるバッファ４５０の一構成例を示す図である。バッファ４５０は、１つ以上のエントリを備える。例えば、バスシステムが許容する未解決のトランザクション数の最大値が１６である場合、少なくとも１６個のエントリ＃０乃至１５が設けられる。各エントリには、有効フラグ保持領域４６１およびトランザクション情報保持領域４６２が設けられる。トランザクション情報書込部５００およびトランザクション情報読出部６５０は、各エントリに格納された有効フラグおよびトランザクション情報にビット単位でランダムにアクセス可能である。有効フラグが「０」のエントリは、トランザクション情報が無効であり、空の状態とされる。例えば、エントリ＃０、１、および、１５のみにトランザクション情報Ａ、Ｂ、Ｃが保持された場合、それらのエントリの有効フラグは「１」に設定される。それ以外のエントリの有効フラグには「０」が設定され、空の状態である。
【００８４】
図１２は、本発明の第１の実施の形態におけるトランザクション情報書込部５００の一構成例を示すブロック図である。トランザクション情報書込部５００は、バッファフル判断部５１０、エントリ番号選択部５２０、および、トランザクション情報生成部５３０を備える。
【００８５】
バッファフル判断部５１０は、バッファ４５０にデータを保持できるか否かを判断するものである。具体的には、バッファフル判断部５１０は、リクエストを相互接続部３００から受け取ると、バッファ４５０の各有効フラグを参照する。全ての有効フラグが有効であれば、バッファフル判断部５１０は、バッファフル通知を発行して相互接続部３００に出力する。
【００８６】
エントリ番号選択部５２０は、空いているバッファエントリのバッファエントリ番号のうちのいずれかを選択するものである。詳細には、エントリ番号選択部５２０は、有効フラグが無効のバッファエントリのバッファエントリ番号のうちのいずれかを選択する。例えば、エントリ番号選択部５２０は、バッファエントリごとに固定の優先度を設定しておき、優先度の最も高いバッファエントリのバッファエントリ番号を選択する。あるいは、エントリ番号選択部５２０は、最も使用頻度の少ないバッファエントリのバッファエントリ番号を選択する。エントリ番号選択部５２０は、選択したバッファエントリ番号をトランザクション情報生成部５３０およびエントリ番号書込部５５０へ出力する。
【００８７】
トランザクション情報生成部５３０は、リクエストに基づいてトランザクション情報を生成してバッファ４５０に書き込むものである。具体的には、相互接続部３００からリクエストを受け取ると、トランザクション情報生成部５３０は、そのリクエストからトランザクション情報を生成する。トランザクション情報生成部５３０は、エントリ番号選択部５２０からバッファエントリ番号を受け取り、そのバッファエントリ番号のバッファエントリにトランザクション情報を書き込む。また、トランザクション情報生成部５３０は、リクエストからトランザクション識別子ＩＤを取得してエントリ番号書込部５５０へ出力する。
【００８８】
図１３は、本発明の第１の実施の形態におけるトランザクション情報読出部６５０の動作の一例を示す図である。レスポンスがバースト転送における最終のデータでない（例えば、ＲＬＡＳＴ＝０である）場合、トランザクション情報読出部６５０は、エントリ番号読出部６００が読み出したバッファエントリ番号のバッファエントリからトランザクション情報を読み出す。そして、トランザクション情報読出部６５０は、そのトランザクション情報のバーストカウントを更新する。レスポンスがバースト転送における最終のデータである（例えば、ＲＬＡＳＴ＝１である）場合またはライトレスポンスである場合、トランザクション情報読出部６５０は、読み出されたバッファエントリ番号のバッファエントリからトランザクション情報を読み出す。そして、トランザクション情報読出部６５０は、そのトランザクション情報を無効にする。
【００８９】
［バスブリッジの動作］
次に、図１４乃至１６を参照してバスブリッジ２００の動作について説明する。図１４は、本発明の第１の実施の形態におけるバスブリッジ２００の動作の一例を示すフローチャートである。この動作は、バスブリッジ２００に電源が投入されたとき、または、ＦＩＦＯメモリ群４００およびバッファ４５０を初期化するときに開始する。
【００９０】
バスブリッジ２００は、ＦＩＦＯメモリ群４００内の各ＦＩＦＯメモリとバッファ４５０とを初期化する（ステップＳ９０５）。そして、バスブリッジ２００は、リクエストが発行されたか否かを判断する（ステップＳ９１０）。リクエストが発行されたのであれば（ステップＳ９１０：Ｙｅｓ）、バスブリッジ２００は、トランザクション情報をバッファ４５０に書き込むためのトランザクション情報書込処理を実行する（ステップＳ９２０）。バスブリッジ２００は、リクエストに係るトランザクション識別子ＩＤに対応するＦＩＦＯメモリに対して、トランザクション情報が書き込まれたバッファエントリ番号を書き込む（ステップＳ９３０）。
【００９１】
リクエストが発行されていない場合（ステップＳ９１０：Ｎｏ）、または、ステップＳ９３０の後、バスブリッジ２００は、レスポンスが返送されたか否かを判断する（ステップＳ９３５）。レスポンスが返送されたのであれば（ステップＳ９３５：Ｙｅｓ）、バスブリッジ２００は、レスポンスに係るトランザクション識別子ＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出す（ステップＳ９４０）。バスブリッジ２００は、読み出したバッファエントリ番号のバッファエントリからトランザクション情報を読み出すためのトランザクション情報読出処理を実行する（ステップＳ９５０）。レスポンスが返送されていない場合（ステップＳ９３５：Ｎｏ）、または、ステップＳ９５０の後、バスブリッジ２００は、ステップＳ９１０に戻る。
【００９２】
図１５は、本発明の第１の実施の形態におけるトランザクション情報書込処理の一例を示すフローチャートである。トランザクション情報書込部５００は、バッファ４５０において有効フラグＶ＝０の空きのエントリがあるか否かを判断する（ステップＳ９２１）。空きのバッファエントリがない場合（ステップＳ９２１：Ｎｏ）、トランザクション情報書込部５００は、バッファフル通知を発行する（ステップＳ９２２）。空きのバッファエントリがある場合（ステップＳ９２１：Ｙｅｓ）、トランザクション情報書込部５００は、いずれかの空き（有効フラグＶ＝０）のバッファエントリを選択する（ステップＳ９２３）。トランザクション情報書込部５００は、リクエストに基づいてトランザクション情報を生成し、選択したバッファエントリに書き込む（ステップＳ９２４）。相互接続部３００は、リクエストをスレーブに転送する（ステップＳ９２５）。ステップＳ９２２またはＳ９２５の後、バスブリッジ２００は、トランザクション情報書込処理を終了する。
【００９３】
図１６は、本発明の第１の実施の形態におけるトランザクション情報読出処理の一例を示すフローチャートである。トランザクション情報読出部６５０は、エントリ番号読出部６００により読み出されたバッファエントリ番号のバッファエントリからトランザクション情報を読み出す（ステップＳ９５１）。トランザクション情報読出部６５０は、レスポンスがバースト転送における最終のデータまたはライトレスポンスであるか否かを判断する（ステップＳ９５２）。
【００９４】
最終のデータまたはライトレスポンスである場合（ステップＳ９５２：Ｙｅｓ）、トランザクション情報読出部６５０は、バッファエントリ内のトランザクション情報を無効にする（ステップＳ９５３）。レスポンスが最終のデータでなく、かつ、ライトレスポンスでもない場合（ステップＳ９５２：Ｎｏ）、トランザクション情報読出部６５０は、バッファエントリ内のトランザクション情報においてバーストカウントを更新する（ステップＳ９５４）。ステップＳ９５３またはＳ９５４の後、相互接続部３００は、トランザクション情報読出部６５０が読み出したトランザクション情報に基づいてレスポンスをマスタへ転送する（ステップＳ９５５）。ステップＳ９５５の後、バスブリッジ２００は、トランザクション情報読出処理を終了する。
【００９５】
続いて、図１７乃至２２を参照してバスブリッジ２００の動作結果の一例について説明する。図１７は、本発明の第１の実施の形態におけるリクエスト発行時のバスブリッジ２００の動作を説明するための図である。ＡＸＩバス１２０にマスタ＃１を含むマスタ１１０が接続され、ＡＸＩバス１３０にスレーブ＃２を含むスレーブ１４０が接続されている構成を想定する。マスタ＃１が、スレーブ＃２に対して、トランザクション識別子ＩＤに「０」を設定したリクエストを２回発行したものとする。また、リクエスト発行前において、ＦＩＦＯメモリ群４００およびバッファ４５０は初期化されていたものとする。バスブリッジ２００は、このリクエストをスレーブ＃２へ転送する。
【００９６】
図１８は、本発明の第１の実施の形態におけるリクエスト発行後のバッファ４５０の状態の一例を示す図である。図１７に例示したように２回リクエストが発行されると、トランザクション情報書込部５００は、それらのリクエストに基づいてトランザクション情報Ａ，Ｂを生成し、バッファエントリ＃０および＃２に書き込む。そして、これらのバッファエントリの有効フラグは「１」に設定される。
【００９７】
図１９は、本発明の第１の実施の形態におけるリクエスト発行後のＦＩＦＯメモリの状態の一例を示す図である。エントリ番号書込部５５０は、トランザクション情報書込部５００から、トランザクション識別子ＩＤ＝０と、書き込まれたバッファエントリのバッファエントリ番号０および２とを受け取る。エントリ番号書込部５５０は、トランザクション識別子ＩＤ＝０に対応するＦＩＦＯメモリＦ［０］においてライトポインタに基づき、先頭のＦＩＦＯエントリと２番目のＦＩＦＯエントリとにバッファエントリ番号０および２を書き込む。ライトポインタは、初期値の０から２に更新される。
【００９８】
図２０は、本発明の第１の実施の形態におけるレスポンス返送時のバスブリッジ２００の動作を説明するための図である。スレーブ＃２はマスタ＃１に対してトランザクションＩＤ＝０を設定したレスポンスを返送する。このレスポンスは、バースト転送における最終のデータ（ＲＬＡＳＴ＝１）であるものとする。
【００９９】
図２１は、本発明の第１の実施の形態におけるレスポンス返送時のバスブリッジ２００の動作を説明するための図である。図１９に例示したようにレスポンスが返送されると、エントリ番号読出部６００は、そのレスポンスのトランザクション識別子ＩＤ＝０に対応するＦＩＦＯメモリＦ［０］の先頭のＦＩＦＯエントリからバッファエントリ番号０を読み出す。ＦＩＦＯメモリＦ［０］内の２番目のＦＩＦＯエントリに保持されていたバッファエントリ番号２は、シフトされて先頭のＦＩＦＯエントリに書き込まれる。また、ライトポインタは２から１に更新される。
【０１００】
図２２は、本発明の第１の実施の形態におけるレスポンス返送後のバッファ４５０の状態の一例を示す図である。トランザクション情報読出部６５０は、読み出されたバッファエントリ番号０のバッファエントリに保持されていたトランザクション情報Ａを読み出す。また、バッファエントリ番号０のバッファエントリの有効フラグは「０」に設定される。
【０１０１】
このように、本発明の第１の実施の形態では、リクエストが発行されると、トランザクション情報書込部５００がトランザクション情報をバッファ４５０内のいずれかのバッファエントリに書き込む。エントリ番号書込部５５０は、そのバッファエントリのバッファエントリ番号をトランザクション識別子ＩＤに対応するＦＩＦＯメモリに書き込んでおく。そして、レスポンスが返送されると、エントリ番号読出部６００は、トランザクション識別子ＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出す。これにより、トランザクション情報読出部６５０は、そのバッファエントリ番号のバッファエントリからトランザクション情報を読み出すことができる。
【０１０２】
この構成によれば、各ＦＩＦＯメモリには、バッファエントリ番号を保持する領域を設けるだけで済むため、ＦＩＦＯメモリにトランザクション情報を保持する場合と比較してＦＩＦＯメモリの記憶容量が小さくなる。すなわち、トランザクション数の最大値を増大する場合、バッファエントリ番号を保持するＦＩＦＯメモリを追加すればよいため、トランザクション情報を保持するＦＩＦＯメモリを追加する場合と比較して記憶容量の増大を抑えることができる。
【０１０３】
なお、第１の実施の形態のバスシステムは、ＡＸＩプロトコルを使用しているが、スプリットトランザクションを許容するプロトコルであれば、ＡＸＩプロトコル以外のプロトコルを使用してもよい。
【０１０４】
また、スプリットトランザクションを許容するインターコネクトであれば、バスブリッジ以外のインターコネクトに本発明を適用することができる。
【０１０５】
また、図１においては、ＡＸＩバス１２０にマスタ１１０が接続され、ＡＸＩバス１３０にスレーブ１４０が接続される構成を例示したが、モジュールの接続形態は、図１に例示した構成に限定されない。例えば、ＡＸＩバス１２０にマスタに加えてスレーブを接続してもよいし、ＡＸＩバス１３０にスレーブに加えてマスタを接続してもよい。
【０１０６】
また、図８において、トランザクション情報を例示したが、レスポンスの転送制御に必要な情報であれば、バッファ４５０は、図８に例示した情報と異なる情報をトランザクション情報として保持してもよい。
【０１０７】
また、図１０においてＦＩＦＯメモリごとにライトポインタおよびフルフラグを設ける構成を例示したが、先入れ先出し方式によりデータが保持されるものであれば、ＦＩＦＯメモリは、図１０に例示した構成に限定されない。例えば、リングバッファを使用するＦＩＦＯメモリであってもよい。
【０１０８】
＜２．第２の実施の形態＞
［バスブリッジの構成］
次に図２３乃至２９を参照して、本発明の第２の実施の形態について説明する。第２の実施の形態のバスブリッジ２０１は、トランザクション識別子ＩＤごとにＦＩＦＯメモリを備えるのでなく、グループ識別子ごとにＦＩＦＯメモリを備える点において第１の実施の形態のバスブリッジ２００と異なる。グループ識別子は、トランザクションが属するグループを識別するための識別子である。例えば、トランザクション識別子ＩＤが７ビットの場合、その上位５ビットであるｇＩＤがグループ識別子として用いられる。
【０１０９】
バスブリッジ２０１は、相互接続部３０１、ＦＩＦＯメモリ群４０１、バッファ４５１、管理情報書込部５０１、エントリ番号書込部５５１、エントリ番号読出部６０１、および、管理情報読出部６５１を備える。
【０１１０】
相互接続部３０１の構成は、トランザクション識別子を受け取り、リクエストおよびレスポンスにおいて受け取ったトランザクション識別子を設定する点以外は、第１の実施の形態の相互接続部３００と同様の構成である。詳細には、相互接続部３０１は、リクエストが発行された場合、管理情報書込部５０１から信号線８２１を介してトランザクション識別子ＩＤ'をさらに受け取る。このトランザクション識別子ＩＤ'は、リクエストに係るトランザクション識別子ＩＤにおいてグループ識別子以外のビット列に所定値（例えば、１０進表記で「０」の値）が設定されたものである。例えば、７ビットのトランザクション識別子ＩＤの上位５ビットをグループ識別子とする場合、下位２ビットに２進表記で「００」の値が設定されたものがトランザクション識別子ＩＤ'とされる。相互接続部３０１は、トランザクション識別子ＩＤ'をリクエストに設定してスレーブ１４０へ転送する。
【０１１１】
また、相互接続部３０１は、レスポンスが返送された場合、管理情報読出部６５１から、信号線８２５を介してトランザクション識別子ＩＤをさらに受け取る。相互接続部３０１は、そのトランザクション識別子ＩＤをレスポンスに設定してマスタ１１０へ転送する。前述したように、リクエストにトランザクション識別子ＩＤ'が設定された場合、そのリクエストに対応するレスポンスには、スレーブ１４０により、同様にトランザクション識別子ＩＤ'が設定される。レスポンスに係るトランザクション識別子ＩＤ'を相互接続部３０１が元のトランザクション識別子ＩＤに置き換えることにより、マスタ１１０は、自身が発行したリクエストに対応するレスポンスを受信することができる。
【０１１２】
ＦＩＦＯメモリ群４０１には、グループ識別子ｇＩＤごとにＦＩＦＯメモリが設けられる。各ＦＩＦＯメモリの構成は、第１の実施の形態のＦＩＦＯメモリの構成と同様である。
【０１１３】
バッファ４５１の構成は、トランザクション情報の代わりに管理情報を保持する点以外は第１の実施の形態のバッファ４５０の構成と同様である。管理情報は、トランザクション識別子ＩＤからｇＩＤを除いたビット列である部分ビット列ｉｄとトランザクション情報とを含む情報である。
【０１１４】
管理情報書込部５０１の構成は、トランザクション情報の代わりに管理情報をバッファ４５１に書き込む点以外は、第１の実施の形態のトランザクション情報書込部５００の構成と同様である。詳細には、管理情報書込部５０１は、リクエストを相互接続部３０１から受け取った場合、リクエストに係るトランザクション識別子ＩＤの上位のビット列であるｇＩＤをグループ識別子として取得する。管理情報書込部５０１は、トランザクション識別子ＩＤにおいてグループ識別子以外のビット列を所定値に固定した識別子ＩＤ'を相互接続部３０１へ出力する。以下、このように、トランザクション識別子を置き換えることを「リネーム」と称する。そして、管理情報書込部５０１は、トランザクション識別子ＩＤからｇＩＤを除いた部分ビット列ｉｄを取得する。管理情報書込部５０１は、部分ビット列ｉｄおよびトランザクション情報を管理情報としてバッファ４５０に書き込む。部分ビット列ｉｄは、信号線８２２を介して出力される。また、管理情報書込部５０１は、トランザクション識別子ＩＤの代わりにグループ識別子ｇＩＤをエントリ番号書込部５５１に信号線８２３を介して出力する。
【０１１５】
エントリ番号書込部５５１は、グループ識別子ｇＩＤに対応するＦＩＦＯメモリにバッファエントリ番号を書き込むものである。
【０１１６】
エントリ番号読出部６０１は、レスポンスに係るグループ識別子ｇＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出すものである。
【０１１７】
管理情報読出部６５１の構成は、トランザクション情報の代わりに管理情報をバッファ４５１から読み出す点以外は、第１の実施の形態のトランザクション情報読出部６５０の構成と同様である。詳細には、管理情報読出部６５１は、レスポンスを相互接続部３０１から受け取った場合、エントリ番号読出部６０１により読み出されたバッファエントリ番号のバッファエントリから管理情報を読み出す。管理情報における部分ビット列ｉｄは、信号線８２４を介して読み出される。管理情報読出部６５１は、レスポンスに係るトランザクション識別子ＩＤ'においてグループ識別子ｇＩＤ以外のビット列を、読み出した部分ビット列ｉｄに置き換える（すなわち、リネームする）ことにより、トランザクション識別子ＩＤを生成する。管理情報読出部６５１は、生成したトランザクション識別子ＩＤを相互接続部３０１に信号線８２５を介して出力する。
【０１１８】
図２４は、本発明の第２の実施の形態におけるＦＩＦＯメモリ群４０１の一構成例を示す図である。ＦＩＦＯメモリ群４０１には、グループ識別子ｇＩＤごとにＦＩＦＯメモリが設けられる。例えば、グループ識別子ｇＩＤがトランザクション識別子の上位５ビットである場合、６４個のＦＩＦＯメモリＦ［０］乃至［６３］が設けられる。
【０１１９】
図２５は、本発明の第２の実施の形態における有効フラグおよび管理情報の一例を示す図である。各バッファエントリには、有効フラグ保持領域４６１と管理情報保持領域４６３とが設けられる。有効フラグ保持領域４６１に保持される有効フラグは、管理情報が有効であるか否かを示す。管理情報保持領域４６３は、管理情報を保持するための領域である。管理情報は、部分ビット列ｉｄとトランザクション情報とを含む。
【０１２０】
図２６は、本発明の第２の実施の形態におけるバッファ４５１の一構成例を示す図である。有効フラグが「０」のバッファエントリにおける管理情報は無効とされ、有効フラグが「１」のバッファエントリにおける管理情報は無効とされる。例えば、バッファエントリ＃０、１、および、１５のみに管理情報が保持された場合、それらのバッファエントリの有効フラグは「１」に設定され、他のバッファエントリの有効フラグは「０」に設定される。
【０１２１】
図２７は、本発明の第２の実施の形態におけるバスブリッジ２０１の動作の一例を示すフローチャートである。この動作は、ステップＳ９２０、Ｓ９３０、Ｓ９４０、および、Ｓ９５０の代わりにステップＳ９６０、Ｓ９３１、Ｓ９４１、および、Ｓ９７０を実行する点以外は、第１の実施の形態のバスブリッジ２００の動作と同様である。
【０１２２】
リクエストが発行された場合（ステップＳ９１０：Ｙｅｓ）、バスブリッジ２０１は、管理情報をバッファエントリのいずれかに書き込むための管理情報書込処理を実行する（ステップＳ９６０）。バスブリッジ２０１は、リクエストに係るｇＩＤに対応するＦＩＦＯメモリに、管理情報が書き込まれたバッファエントリのバッファエントリ番号を書き込む（ステップＳ９３１）。
【０１２３】
レスポンスが返送された場合（ステップＳ９３５：Ｙｅｓ）、バスブリッジ２０１は、リクエストに係るｇＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出す（ステップＳ９４１）。バスブリッジ２０１は、バッファエントリ番号の示すバッファエントリから管理情報を読み出すための管理情報読出処理を実行する（ステップＳ９７０）。
【０１２４】
図２８は、本発明の第２の実施の形態における管理情報書込処理の一構成例を示すブロック図である。この管理情報書込処理は、ステップＳ９２４の代わりにステップＳ９６１およびＳ９６２を実行する点以外は、第１の実施の形態におけるトランザクション情報書込処理と同様である。
【０１２５】
管理情報書込部５０１は、いずれかの有効フラグＶ＝０の空きのバッファエントリを選択し（ステップＳ９２３）、そのバッファエントリに管理情報を書き込む（ステップＳ９６１）。管理情報書込部５０１は、リクエストに係るトランザクション識別子ＩＤをトランザクション識別子ＩＤ'にリネームする。トランザクション識別子ＩＤ'は、例えば、トランザクション識別子ＩＤからｇＩＤを除いたビット列（例えば、下位２ビット）を所定値（例えば、２進表記で「００」）に固定したものである（ステップＳ９６２）。
【０１２６】
図２９は、本発明の第２の実施の形態における管理情報読出処理の一例を示すフローチャートである。この管理情報読出処理は、ステップＳ９５１およびＳ９５３の代わりにステップＳ９７１、Ｓ９７２、および、Ｓ９７３を実行する点以外は、第１の実施の形態におけるトランザクション情報読出処理と同様である。
【０１２７】
管理情報読出部６５１は、エントリ番号読出部６０１により読み出されたバッファエントリ番号のバッファエントリから管理情報を読み出す（ステップＳ９７１）。
【０１２８】
レスポンスが最終のデータまたはライトレスポンスである場合（ステップＳ９５２）、管理情報読出部６５１は、バッファエントリ内の管理情報を無効にする（ステップＳ９７２）。ステップＳ９７２またはＳ９５４の後、管理情報読出部６５１は、レスポンスに係るトランザクションＩＤ'をＩＤにリネームする（ステップＳ９７３）。
【０１２９】
このように、本発明の第２の実施の形態では、リクエストが発行されると、管理情報書込部５０１が管理情報をバッファ４５１内のいずれかのバッファエントリに書き込む。エントリ番号書込部５５１は、そのバッファエントリのバッファエントリ番号をグループ識別子ｇＩＤに対応するＦＩＦＯメモリに書き込んでおく。そして、レスポンスが返送されると、エントリ番号読出部６０１は、グループ識別子ｇＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出す。これにより、管理情報読出部６５１は、そのバッファエントリ番号のバッファエントリから管理情報を読み出すことができる。
【０１３０】
この構成によれば、ＦＩＦＯメモリをグループごとに設けるため、ＦＩＦＯメモリをトランザクション識別子ごとに設ける場合と比較して、ＦＩＦＯメモリの記憶容量の合計は、さらに小さくなる。
【０１３１】
また、管理情報書込部５０１は、リクエストに係るトランザクション識別子ＩＤから部分ビット列ｉｄを除いている。このため、スレーブ１４０は、部分ビット列ｉｄが除かれたグループ識別子ｇＩＤが設定されたリクエストを受信する。この結果、複数の異なるトランザクション識別子ＩＤが、同じ値のグループ識別子ｇＩＤに置き換えられる。前述したように、ＡＸＩバスプロトコルにおいては、トランザクション識別子が同じトランザクション間では、順序性が保証される。したがって、グループ識別子への置換えにより、同一のグループ識別子が割り当てられた各レスポンスは、リクエストの発行順に返送されることになる。よって、ＦＩＦＯメモリの記憶容量を削減しても、順序性が維持される。
【０１３２】
さらに、管理情報読出部６５１は、部分ビット列ｉｄとグループ識別子ｇＩＤとからトランザクション識別子ＩＤを生成している。このため、マスタ１１０は、自身が発行したリクエストに対応するレスポンスを受信することができる。
【０１３３】
なお、グループ識別子をトランザクション識別子の上位５ビットとしているが、グループ識別子は、トランザクション識別子の一部のビット列であれば、上位５ビットに限定されない。
【０１３４】
＜３．第３の実施の形態＞
［バスブリッジの構成］
次に図３０乃至３４を参照して、本発明の第３の実施の形態について説明する。第３の実施の形態のバスブリッジ２０２は、ＦＩＦＯメモリのＦＩＦＯエントリ数を削減してオーバーフローＦＩＦＯメモリをさらに設けた点において第１の実施の形態のバスブリッジ２００と異なる。具体的には、バスブリッジ２０２は、ＦＩＦＯメモリ群４００、エントリ番号書込部５５０、および、エントリ番号読出部６００の代わりに、ＦＩＦＯメモリ群４０２、エントリ番号書込部５５２、および、エントリ番号読出部６０２を備える。
【０１３５】
ＦＩＦＯメモリ群４０２には、トランザクション識別子ＩＤごとにＦＩＦＯメモリが設けられる。各ＦＩＦＯメモリの構成は、第１の実施の形態のＦＩＦＯメモリと同様である。ただし、ＦＩＦＯメモリ群４０２における各ＦＩＦＯメモリのＦＩＦＯエントリ数は、第１の実施の形態のＦＩＦＯメモリのＦＩＦＯエントリ数より少ない。具体的には、各ＦＩＦＯメモリのＦＩＦＯエントリ数は、未解決なトランザクション数の最大値の半分以上の数とされる。例えば、未解決なトランザクション数の最大値が１６である場合、ＦＩＦＯメモリのＦＩＦＯエントリは、少なくとも８個とされる。各ＦＩＦＯメモリの記憶容量を最小にするため、ＦＩＦＯメモリのＦＩＦＯエントリの数は、未解決なトランザクション数の最大値の半分にするのが望ましい。
【０１３６】
各ＦＩＦＯメモリのＦＩＦＯエントリ数を未解決なトランザクション数の最大値の半分未満とすると、２つ以上のＦＩＦＯメモリから溢れたデータがオーバーフローＦＩＦＯメモリに保持される状態が生じうる。例えば、未解決なトランザクション数の最大値を１６とし、各ＦＩＦＯメモリのＦＩＦＯエントリを７個とした場合、未解決なトランザクションに係るバッファエントリ番号が２つのＦＩＦＯメモリに８個ずつ書き込まれることがある。この場合、これらの各ＦＩＦＯメモリから溢れたデータがオーバーフローＦＩＦＯメモリに保持されることとなる。しかし、オーバーフローＦＩＦＯは、ＦＩＦＯメモリに対応するトランザクション識別子ＩＤを保持しない。このため、エントリ番号読出部６０２は、保持されているデータが、いずれのＦＩＦＯメモリから溢れたデータなのか判断できなくなってしまう。これに対して、各ＦＩＦＯメモリのＦＩＦＯエントリ数を未解決なトランザクション数の最大値の半分以上とすると、２つ以上のＦＩＦＯメモリから溢れたデータがオーバーフローＦＩＦＯメモリに保持されることがなくなる。したがって、ＦＩＦＯメモリが複数であっても、必要なオーバーフローＦＩＦＯメモリは１つで済む。
【０１３７】
また、ＦＩＦＯメモリ群４０２には、オーバーフローＦＩＦＯメモリが設けられる。オーバーフローＦＩＦＯメモリは、トランザクション識別子ごとに設けられたＦＩＦＯメモリから溢れたデータを保持するものである。オーバーフローＦＩＦＯメモリのＦＩＦＯエントリ数は、未解決なトランザクション数の最大値とＦＩＦＯメモリのＦＩＦＯエントリ数との差分である。例えば、未解決なトランザクション数の最大値が１６個であり、ＦＩＦＯメモリのＦＩＦＯエントリ数を８個とする場合、オーバーフローＦＩＦＯメモリのＦＩＦＯエントリ数は８個とされる。このオーバーフローＦＩＦＯには、オーバーフローＦＩＦＯにデータが保持されていないことを示す空フラグを保持する領域が設けられる。例えば、オーバーフローＦＩＦＯにデータが保持されていない場合に空フラグに「１」が設定され、１つ以上のデータが保持されている場合に「０」が設定される。
【０１３８】
エントリ番号書込部５５２の構成は、ＦＩＦＯメモリからデータが溢れる場合に、オーバーフローＦＩＦＯメモリにデータを書き込む点以外は、第１の実施の形態のエントリ番号書込部５５０と同様の構成である。具体的には、トランザクション識別子ＩＤに対応するＦＩＦＯのフルフラグが「１」であれば、エントリ番号書込部５５２は、オーバーフローＦＩＦＯメモリにバッファエントリ番号を書き込む。
【０１３９】
エントリ番号読出部６０２の構成は、ＦＩＦＯまたはオーバーフローＦＩＦＯからバッファエントリ番号を読み出す点以外は第１の実施の形態のエントリ番号読出部６００と同様の構成である。具体的には、トランザクション識別子ＩＤに対応するＦＩＦＯのフルフラグが「１」であり、かつ、空フラグが「０」である場合、エントリ番号読出部６０２オーバーフローＦＩＦＯからバッファエントリ番号を読み出す。トランザクション識別子ＩＤに対応するＦＩＦＯのフルフラグが「０」または空フラグが「１」である場合、トランザクション識別子ＩＤに対応するＦＩＦＯからバッファエントリ番号を読み出す。
【０１４０】
図３１は、本発明の第３の実施の形態におけるＦＩＦＯメモリ群４０２の一構成例を示す図である。ＦＩＦＯメモリ群４０２には、トランザクション識別子ごとにＦＩＦＯメモリが設けられる。また、オーバーフローＦＩＦＯメモリＯｖＦ１が設けられる。
【０１４１】
オーバーフローＦＩＦＯメモリＯｖＦ１は、データ保持領域４２１、末尾ポインタ保持領域４２２、および、空フラグ保持領域４２３を備える。データ保持領域４２１は、トランザクションごとのＦＩＦＯメモリのデータ保持領域４１１と同様である。末尾ポインタ保持領域４２２は、末尾ポインタを保持する領域である。末尾ポインタは、末尾のデータが保持されているＦＩＦＯエントリを示す情報である。空フラグ保持領域４２３は、空フラグを保持するものである。
【０１４２】
エントリ番号書込部５５２は、書込み時に空フラグが「１」である場合、空フラグに「０」を設定して、先頭のＦＩＦＯエントリにバッファエントリ番号を書き込む。書込み時に空フラグが「０」である場合、エントリ番号書込部５５２は、末尾ポインタの直前のＦＩＦＯエントリにバッファエントリ番号を書き込み、末尾ポインタをインクリメントする。
【０１４３】
エントリ番号読出部６０２は、オーバーフローＦＩＦＯにおいて、先頭のＦＩＦＯエントリからバッファエントリ番号を読み出す。エントリ番号読出部６０２は、そのＦＩＦＯメモリにおいて２番目以降のＦＩＦＯエントリに保持されている各データを先頭へ１つずつシフトする。そして、読出時に末尾ポインタが最小値でない場合、エントリ番号読出部６０２は、末尾ポインタをデクリメントする。読出時に末尾ポインタが最小値である場合、エントリ番号読出部６０２は、空フラグに「１」を設定する。
【０１４４】
なお、上述のオーバーフローＦＩＦＯメモリＯｖＦ１は、特許請求の範囲に記載の溢れ先入れ先出しメモリの一例である。
【０１４５】
［バスブリッジの動作］
次に、図３２乃至３４を参照してバスブリッジ２０２の動作について説明する。この動作は、ステップＳ９３０およびＳ９４０の代わりにステップＳ９８０およびＳ９９０を実行する点以外は、第１の実施の形態のバスブリッジ２００の動作と同様である。
【０１４６】
リクエストが発行された場合（ステップＳ９１０：Ｙｅｓ）、バスブリッジ２０２は、トランザクション情報書込処理を実行し（ステップＳ９２０）、バッファエントリ番号をＦＩＦＯメモリに書き込むためのエントリ番号書込処理を実行する（ステップＳ９８０）。
【０１４７】
レスポンスが返送された場合（ステップＳ９３５：Ｙｅｓ）、バスブリッジ２０２は、バッファエントリ番号をＦＩＦＯメモリから読み出すためのエントリ番号書込処理を実行し（ステップＳ９９０）、トランザクション情報読出処理を実行する（ステップＳ９５０）。
【０１４８】
図３３は、本発明の第３の実施の形態におけるエントリ番号書込処理の一例を示すフローチャートである。エントリ番号書込部５５２は、トランザクション識別子ＩＤに対応するＦＩＦＯメモリのフルフラグが「０」であるか否かを判断する（ステップＳ９８１）。フルフラグが「０」である場合（ステップＳ９８１：Ｙｅｓ）、エントリ番号書込部５５２は、そのＦＩＦＯメモリにバッファエントリ番号を書き込む（ステップＳ９８２）。エントリ番号書込部５５２は、ライトポインタを参照して、そのＦＩＦＯメモリが満杯であるか否かを判断する（ステップＳ９８３）。満杯であれば（ステップＳ９８３：Ｙｅｓ）、エントリ番号書込部５５２は、そのＦＩＦＯメモリのフルフラグに「１」にセットする（ステップＳ９８４）。
【０１４９】
トランザクション識別子ＩＤに対応するＦＩＦＯメモリのフルフラグが「１」である場合（ステップＳ９８１：Ｎｏ）、エントリ番号書込部５５２は、オーバーフローＦＩＦＯメモリの空フラグが「１」であるか否かを判断する（ステップＳ９８５）。空フラグが「１」であれば（ステップＳ９８５：Ｙｅｓ）、エントリ番号書込部５５２は、空フラグに「０」をセットする（ステップＳ９８６）。空フラグが「０」である場合（ステップＳ９８５：Ｎｏ）、またはステップＳ９８６の後、エントリ番号書込部５５２は、オーバーフローＦＩＦＯメモリにバッファエントリ番号を書き込む（ステップＳ９８７）。
【０１５０】
トランザクション識別子ＩＤに対応するＦＩＦＯメモリが満杯でない場合（ステップＳ９８３：Ｎｏ）、または、ステップＳ９８４、もしくは、ステップＳ９８７の後、エントリ番号書込部５５２は、エントリ番号書込処理を終了する。
【０１５１】
図３４は、本発明の第３の実施の形態におけるエントリ番号書読出処理の一例を示すフローチャートである。エントリ番号読出部６０２は、トランザクション識別子ＩＤに対応するＦＩＦＯメモリのフルフラグが「０」であるか否かを判断する（ステップＳ９９１）。フルフラグが「０」であれば（ステップＳ９９１：Ｙｅｓ）、エントリ番号読出部６０２は、そのＦＩＦＯメモリからバッファエントリ番号を読み出す（ステップＳ９９２）。
【０１５２】
フルフラグが「１」である場合（ステップＳ９９１：Ｎｏ）、エントリ番号読出部６０２は、オーバーフローＦＩＦＯメモリの空フラグが「０」であるか否かを判断する（ステップＳ９９３）。空フラグが「１」である場合（ステップＳ９９３：Ｎｏ）、エントリ番号読出部６０２は、トランザクション識別子ＩＤに対応するＦＩＦＯメモリからバッファエントリ番号を読み出す（ステップＳ９９４）。そして、エントリ番号読出部６０２は、そのＦＩＦＯメモリのフルフラグに「０」をセットする（ステップＳ９９５）。
【０１５３】
空フラグが「０」である場合（ステップＳ９９３：Ｙｅｓ）、エントリ番号読出部６０２は、オーバーフローＦＩＦＯメモリからバッファエントリ番号を読み出す（ステップＳ９９６）。エントリ番号読出部６０２は、末尾ポインタを参照してオーバーフローＦＩＦＯメモリが空になったか否かを判断する（ステップＳ９９７）。オーバーフローＦＩＦＯメモリが空になったのであれば（ステップＳ９９７：Ｙｅｓ）、エントリ番号読出部６０２は、空フラグを「１」にセットする（ステップＳ９９８）。
【０１５４】
オーバーフローＦＩＦＯメモリが空になったのでない場合（ステップＳ９９７：Ｎｏ）、または、ステップＳ９９２、Ｓ９９５、もしくは、Ｓ９９８の後、エントリ番号読出部６０２は、エントリ番号読出処理を終了する。
【０１５５】
このように、本発明の第３の実施の形態によれば、バスブリッジ２０２は、ＦＩＦＯメモリからデータが溢れる場合にオーバーフローＦＩＦＯメモリにデータを保持することにより、ＦＩＦＯメモリの記憶容量をさらに小さくすることができる。具体的には、各ＦＩＦＯメモリのＦＩＦＯエントリ数を、オーバーフローＦＩＦＯメモリのＦＩＦＯエントリ数の分、削減することができる。
【０１５６】
また、バスブリッジ２０２は、各ＦＩＦＯメモリにフルフラグを設定しておくため、フルフラグを参照することにより、ＦＩＦＯメモリからデータが溢れるか否かを容易に判断することができる。
【０１５７】
また、バスブリッジ２０２は、オーバーフローＦＩＦＯメモリに空フラグを設定しておくため、空フラグを参照することにより、レスポンスに係るバッファエントリ番号がオーバーフローＦＩＦＯメモリに保持されているか否かを容易に判断することができる。
【０１５８】
さらに、ＦＩＦＯメモリのＦＩＦＯエントリ数は、未解決の最大のトランザクション数の最大値の半分以上としている。このため、２つ以上のＦＩＦＯメモリから溢れたデータがオーバーフローＦＩＦＯメモリに保持されることがなくなる。したがってＦＩＦＯメモリが複数であっても、必要なオーバーフローＦＩＦＯメモリは１つで済む。
【０１５９】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【符号の説明】
【０１６０】
１１０  マスタ
１２０、１３０  ＡＸＩバス
１４０  スレーブ
２００、２０１、２０２  バスブリッジ
３００、３０１  相互接続部
３１０、３３０  変換情報生成器
４００、４０１、４０２  ＦＩＦＯメモリ群
４１１、４２１  データ保持領域
４１２  ライトポインタ保持領域
４１３  フルフラグ保持領域
４２２  末尾ポインタ保持領域
４２３  空フラグ保持領域
４５０、４５１  バッファ
４６１  有効フラグ保持領域
４６２  トランザクション情報保持領域
４６３  管理情報保持領域
５００  トランザクション情報書込部
５０１  管理情報書込部
５１０  バッファフル判断部
５２０  エントリ番号選択部
５３０  トランザクション情報生成部
５５０、５５１、５５２  エントリ番号書込部
６００、６０１、６０２  エントリ番号読出部
６５０  トランザクション情報読出部
６５１  管理情報読出部
【図１】
0005659817.tif 000002
【図２】
0005659817.tif 000003
【図３】
0005659817.tif 000004
【図４】
0005659817.tif 000005
【図５】
0005659817.tif 000006
【図６】
0005659817.tif 000007
【図７】
0005659817.tif 000008
【図８】
0005659817.tif 000009
【図９】
0005659817.tif 000010
【図１０】
0005659817.tif 000011
【図１１】
0005659817.tif 000012
【図１２】
0005659817.tif 000013
【図１３】
0005659817.tif 000014
【図１４】
0005659817.tif 000015
【図１５】
0005659817.tif 000016
【図１６】
0005659817.tif 000017
【図１７】
0005659817.tif 000018
【図１８】
0005659817.tif 000019
【図１９】
0005659817.tif 000020
【図２０】
0005659817.tif 000021
【図２１】
0005659817.tif 000022
【図２２】
0005659817.tif 000023
【図２３】
0005659817.tif 000024
【図２４】
0005659817.tif 000025
【図２５】
0005659817.tif 000026
【図２６】
0005659817.tif 000027
【図２７】
0005659817.tif 000028
【図２８】
0005659817.tif 000029
【図２９】
0005659817.tif 000030
【図３０】
0005659817.tif 000031
【図３１】
0005659817.tif 000032
【図３２】
0005659817.tif 000033
【図３３】
0005659817.tif 000034
【図３４】
0005659817.tif 000035