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