説明

相互接続装置

【課題】バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制する。
【解決手段】トランザクション情報書込部500が、リクエストが発行されるたびにリクエストに基づいてトランザクション情報を複数のトランザクション情報書込領域のうちのいずれかに書き込む。エントリ番号書込部550が、トランザクション情報が書き込まれるたびにリクエストに係るトランザクション処理を識別するためのトランザクション識別子に対応するFIFOメモリに対してトランザクション情報に係る領域情報を書き込む。エントリ番号読出部600が、レスポンスが返送されるたびにレスポンスに係るトランザクション識別子に対応するFIFOメモリから領域情報を読み出す。トランザクション情報読出部650が、領域情報が読み出されるたびに領域情報の示すトランザクション情報書込領域からトランザクション情報を読み出す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、相互接続装置に関し、特にスプリットトランザクションを許容してデータを転送する相互接続装置に関する。
【背景技術】
【0002】
従来、あるモジュールから別のモジュールへデータを転送する場合に、モジュール間をバスにより接続する手法がとられることが多い。モジュールのうち、データ転送を主導するモジュールはマスタと呼ばれ、受動的に動作するモジュールはスレーブと呼ばれる。マスタとなるモジュールとしては、例えばプロセッサが想定される。スレーブとなるモジュールとしては、例えばメモリが想定される。
【0003】
バス幅やエンディアン方式の異なる複数のバスを備えるバスシステムにおいては、バス幅等の相違に応じてデータ変換を行うバスブリッジが設けられることがある。このバスブリッジに各バスを接続することにより、バス間でのデータ転送が可能となる。これらのバスやバスブリッジは、インターコネクトとも呼ばれる。
【0004】
このようなバスシステムにおいては、スプリットトランザクションを許容することにより、転送効率を向上させることができる。スプリットトランザクションとは、データ転送のための一連の動作(トランザクション)のうち、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御することである。スプリットトランザクションを許容するバス規格としては、AXI(Advanced eXtensible Interface)バスなどがある。
【0005】
スプリットトランザクションを許容する場合、バスブリッジ等のインターコネクトは、マスタ・スレーブ間でやりとりされる転送が未解決(outstanding)の間、その転送に関するトランザクション情報を保持しておく必要がある。ここで、未解決とは、要求されたデータ転送が完了していない状態である。また、トランザクション情報とは、レスポンスの転送の制御に必要な情報である。例えば、トランザクション情報は、バースト転送を行なう場合のバースト長やバースト数を含む情報である。
【0006】
スプリットトランザクションにおいて、インターコネクトがトランザクション情報を保持する必要性について説明する。M1およびM2の2つのマスタとS1およびS2の2つのスレーブとがインターコネクトに接続されたバスシステムを想定する。このバスシステムにおいて、M1がS1に対してデータ転送を要求するリクエストAを発行したあと、M2がS2に対してデータ転送を要求するリクエストBを発行したとする。リクエストAは、バースト転送を要求するものであり、リクエストBは、バースト転送を要求しないものである。スレーブS1およびS2は、それぞれ対応するリクエストに応じてレスポンスを返送するが、これらのレスポンスの返送の順番は、リクエストA、Bの発行の順番と同じとは限らない。このような場合、インターコネクトは、いずれのレスポンスをバースト転送すべきかを判断するために、それぞれの転送が未解決の間、各リクエストに対応するトランザクション情報を保持しておく必要がある。保持しておいたトランザクション情報を参照することにより、インターコネクトは、データ転送を適切に制御することができる。
【0007】
AXIバスにおいてトランザクション情報を保持しておく手法として、FIFO(First In First Out)をトランザクション識別子ごとに設けたバスシステムが提案されている(例えば、特許文献1参照。)。各FIFOの段数は、許容される未解決の転送数の最大値以上とされる。インターコネクトは、各リクエストに対応するトランザクション情報を、そのリクエストに係るトランザクションに対応するFIFOに格納しておく。この構成によれば、インターコネクトは、FIFO内からトランザクション情報を読み出すときに、対応するトランザクションを検索する必要がなくなるため、トランザクション情報の読出し処理を高速に行うことができる。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−41099号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、上述の従来技術では、バスシステムが許容するトランザクションの数の最大値の増大に伴うFIFOのサイズの増大を抑制することが困難であった。FIFOをトランザクション識別子ごとに設ける場合、トランザクションの数だけFIFOを設ける必要がある。このため、バスシステムが許容するトランザクション数の最大値の増大に比例して、各FIFOの合計の記憶容量が増大してしまう。
【0010】
本発明はこのような状況に鑑みてなされたものであり、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制することを目的とする。
【課題を解決するための手段】
【0011】
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理を識別するための識別子であるトランザクション識別子に対して前記トランザクション識別子ごとに設けられた複数の先入れ先出しメモリと、前記レスポンスの転送処理を制御するための情報であるトランザクション情報を書き込むための複数のトランザクション情報書込領域を備えるバッファと、前記リクエストが発行されるたびに前記リクエストに基づいて前記トランザクション情報を前記トランザクション情報書込領域のいずれかに書き込むトランザクション情報書込部と、前記トランザクション情報が書き込まれるたびに前記リクエストに係る前記トランザクション識別子に対応する前記先入れ先出しメモリに対して前記トランザクション情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、前記レスポンスが返送されるたびに前記レスポンスに係る前記トランザクション識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部とを具備する相互接続装置である。これにより、トランザクション情報が書き込まれた領域を示す領域情報が先入れ先出しメモリに書き込まれ、先入れ先出しメモリから読み出された領域情報の示す領域からトランザクション情報が読み出されるという作用をもたらす。
【0012】
また、この第1の側面において、上記複数の先入れ先出しメモリから溢れた上記領域情報を保持する溢れ先入れ先出しメモリをさらに具備し、上記領域情報書込部は、上記リクエストに係る上記先入れ先出しメモリから上記領域情報が溢れない場合に上記領域情報を上記先入れ先出しメモリに書き込み、上記リクエストに係る上記先入れ先出しメモリから上記領域情報が溢れる場合に上記溢れ先入れ先出しメモリに上記領域情報を書き込み、上記領域情報読出部は、上記レスポンスに係る上記領域情報が上記溢れ先入れ先出しメモリに書き込まれている場合に上記溢れ先入れ先出しメモリから上記領域情報を読み出し、上記領域情報が上記溢れ先入れ先出しメモリに書き込まれていない場合に上記先入れ先出しメモリから上記領域情報を読み出すこともできる。これにより、先入れ先出しメモリから溢れた領域情報が溢れ先入れ先出しメモリに保持されるという作用をもたらす。
【0013】
また、この第1の側面において、上記先入れ先出しメモリが上記領域情報を保持できないことを示すフルフラグを上記先入れ先出しメモリごとにさらに具備し、上記領域情報書込部は、上記フルフラグに基づいて上記先入れ先出しメモリから上記領域情報が溢れるか否かを判断してもよい。これにより、フルフラグに基づいて先入れ先出しメモリから領域情報が溢れるか否かが判断されるという作用をもたらす。
【0014】
また、この第1の側面において、上記溢れ先入れ先出しメモリが空であることを示す空フラグをさらに具備し、上記領域情報読出部は、上記空フラグに基づいて上記領域情報が上記溢れ先入れ先出しメモリに書き込まれているか否かを判断してもよい。これにより、空フラグに基づいて溢れ先入れ先出しメモリに領域情報が書き込まれているか否かが判断されるという作用をもたらす。
【0015】
また、この第1の側面において、上記先入れ先出しメモリおよび上記溢れ先入れ先出しメモリは上記領域情報を保持するための領域であるエントリを1つ以上備え、上記先入れ先出しメモリのエントリ数は、未解決な上記トランザクション処理の数の最大値の半分以上であり、上記溢れ先入れ先出しメモリのエントリ数は、上記最大値と上記先入れ先出しメモリのエントリ数との間の差分であってもよい。これにより、先入れ先出しメモリのエントリ数が、未解決な上記トランザクション処理の数の最大値の半分以上とされるという作用をもたらす。
【0016】
また、本発明の第2の側面は、リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理が属するグループを識別するための識別子であるグループ識別子に対して前記グループ識別子ごとに設けられた複数の先入れ先出しメモリと、前記レスポンスの転送処理を制御するための情報であるトランザクション情報と前記トランザクション処理を識別するためのトランザクション識別子から前記グループ識別子を除いた情報である部分ビット列とを管理情報として書き込むための複数の管理情報書込領域を備えるバッファと、前記リクエストが発行されるたびに前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込部と、前記管理情報が書き込まれるたびに前記リクエストに係る前記グループ識別子に対応する前記先入れ先出しメモリに対して前記管理情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、前記レスポンスが返送されるたびに前記レスポンスに係る前記グループ識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部とを具備する相互接続装置である。これにより、トランザクション情報が書き込まれた領域を示す領域情報が、グループ識別子に対応する先入れ先出しメモリに書き込まれ、グループ識別子に対応する先入れ先出しメモリから読み出された領域情報の示す領域からトランザクション情報が読み出されるという作用をもたらす。
【0017】
また、この第2の側面において、前記管理情報書込部は、前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込処理部と前記リクエストにおいて前記トランザクション識別子から前記部分ビット列を除く第1の識別子処理部と、を備え、前記管理情報読出部は、前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出す管理情報読出処理部と、前記レスポンスにおいて前記読み出された管理情報に含まれる前記部分ビット列と前記グループ識別子とから前記トランザクション識別子を生成する第2の識別子処理部とを備えてもよい。これにより、トランザクション識別子から部分ビット列が除かれ、部分ビット列とグループ識別子とからトランザクション識別子を生成されるという作用をもたらす。
【発明の効果】
【0018】
本発明によれば、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大が抑制されるという優れた効果を奏し得る。
【図面の簡単な説明】
【0019】
【図1】本発明の第1の実施の形態におけるバスシステムの一構成例を示す全体図である。
【図2】AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。
【図3】AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。
【図4】AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。
【図5】AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。
【図6】AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。
【図7】本発明の第1の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図8】本発明の第1の実施の形態における相互接続部の一構成例を示すブロック図である。
【図9】本発明の第1の実施の形態におけるFIFOメモリ群の一構成例を示す図である。
【図10】本発明の第1の実施の形態におけるバッファ450の各バッファエントリに保持される有効フラグおよびトランザクション情報の一例を示す図である。
【図11】本発明の第1の実施の形態におけるバッファの一構成例を示す図である。
【図12】本発明の第1の実施の形態におけるトランザクション情報書込部の一構成例を示すブロック図である。
【図13】本発明の第1の実施の形態におけるトランザクション情報読出部の動作の一例を示す図である。
【図14】本発明の第1の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図15】本発明の第1の実施の形態におけるトランザクション情報書込処理の一例を示すフローチャートである。
【図16】本発明の第1の実施の形態におけるトランザクション情報読出処理の一例を示すフローチャートである。
【図17】本発明の第1の実施の形態におけるリクエスト発行時のバスブリッジの動作を説明するための図である。
【図18】本発明の第1の実施の形態におけるリクエスト発行後のバッファの状態の一例を示す図である。
【図19】本発明の第1の実施の形態におけるリクエスト発行後のFIFOメモリの状態の一例を示す図である。
【図20】本発明の第1の実施の形態におけるレスポンス返送時のバスブリッジの動作を説明するための図である。
【図21】本発明の第1の実施の形態におけるレスポンス返送後のFIFOメモリの状態の一例を示す図である。
【図22】本発明の第1の実施の形態におけるレスポンス返送後のバッファの状態の一例を示す図である。
【図23】本発明の第2の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図24】本発明の第2の実施の形態におけるFIFOメモリ群の一構成例を示す図である。
【図25】本発明の第2の実施の形態における有効フラグおよび管理情報の一例を示す図である
【図26】本発明の第2の実施の形態におけるバッファの一構成例を示す図である。
【図27】本発明の第2の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図28】本発明の第2の実施の形態における管理情報書込処理の一例を示すブロック図である。
【図29】本発明の第2の実施の形態における管理情報読出処理の一例を示すフローチャートである。
【図30】本発明の第3の実施の形態におけるバスブリッジの一構成例を示すブロック図である。
【図31】本発明の第3の実施の形態におけるFIFOメモリ群の一構成例を示す図である。
【図32】本発明の第3の実施の形態におけるバスブリッジの動作の一例を示すフローチャートである。
【図33】本発明の第3の実施の形態におけるエントリ番号書込処理の一例を示すフローチャートである。
【図34】本発明の第3の実施の形態におけるエントリ番号読出処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0020】
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(FIFOメモリにバッファエントリ番号を保持する例)
2.第2の実施の形態(FIFOメモリをグループごとに設ける例)
3.第3の実施の形態(オーバーフローFIFOを設ける例)
【0021】
<1.第1の実施の形態>
[バスシステムの構成]
図1は、本発明の第1の実施の形態におけるバスシステムの全体図の一例である。バスシステムは、M台のマスタ110と、AXIバス120および130と、N台のスレーブ140と、バスブリッジ200とを備える。MおよびNは、それぞれ、1以上の整数である。マスタ110はAXIバス120に接続されており、スレーブ140はAXIバス130に接続されている。また、AXIバス120および130は、バスブリッジ200に接続されている。
【0022】
マスタ110はデータ転送を主導する接続機器であり、スレーブ140は受動的に動作する接続機器である。マスタ110としては、例えばプロセッサが想定される。スレーブ140としては、例えばメモリが想定される。
【0023】
AXIバス120および130は、AXIプロトコルに従ってデータを転送するバスである。バスブリッジ200は、AXIプロトコルに従ってデータを転送し、そのデータ転送において必要に応じてデータ変換を行うものである。例えば、バスブリッジ200は、AXIバス120および130のそれぞれのバス幅やエンディアン方式が異なる場合に、転送先のバスのバス幅等に合わせてデータ変換を行う。
【0024】
ここで、AXIプロトコルでは、リード動作のためのパスとして、リードアドレスチャネルおよびリードデータチャネルが用意されている。マスタ110からリードアドレスチャネルを介してスレーブ140にリードアドレスを含むリクエストが転送されると、これに応答してリードデータチャネルを介してスレーブ140からマスタ110にリードデータが転送される。また、AXIプロトコルでは、ライト動作のためのパスとして、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルが用意されている。マスタ110からライトアドレスチャネルおよびライトデータチャネルを介してスレーブ140にリクエストが転送されると、これに応答してスレーブ140においてライト動作が行われる。そして、そのライト動作の結果が、ライトレスポンスチャネルを介してスレーブ140からマスタ110に転送される。
【0025】
以下、マスタからスレーブへリードアドレスチャネルおよびライトアドレスチャネルを介して転送される信号をリクエストと称する。また、スレーブからマスタへリードデータチャネルおよびライトレスポンスチャネルを介して転送される信号をレスポンスと称する。
【0026】
AXIプロトコルにおいては、リクエストの転送処理と、そのリクエストに対応するレスポンスの転送処理とが1つのトランザクションの処理を形成する。1つのトランザクションに含まれるリクエストおよびレスポンスには同じ識別子が付与されるのがAXIプロトコルにおける原則である。また、異なるトランザクション間で同じ識別子を付与した場合には、それらのトランザクション間において順序保証が行われる。
【0027】
なお、上述の実施の形態のバスブリッジ200は、特許請求の範囲に記載の相互接続装置の一例である。
【0028】
[AXIプロトコルにおけるチャネル構成]
図2は、AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。リードアドレスチャネルは、リードアドレスをマスタ110からスレーブ140に伝達するためのチャネルである。このリードアドレスチャネルは、リードアドレス識別子、リードアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、リードアドレスバリッド、リードアドレスレディの各信号からなる。これらの信号のうち、リードアドレスレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
【0029】
リードアドレス識別子ARID[3:0]は、信号のリードアドレスグループを識別するための4ビットのタグである。AXIプロトコルでは、マスタがトランザクションを発行する際に、スレーブに対して順序関係を維持することを要求する場合には、同じ識別子を付与することとされている。換言すれば、識別子が異なるトランザクション間では順序関係が維持される保証はない。
【0030】
リードアドレスARADDR[31:0]は、リード対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【0031】
バースト長ARLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。「1」から「16」の何れかのデータ数が4ビットにエンコードされて示される。
【0032】
バーストサイズARSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。「20」、「21」、「22」、「23」、「24」、「25」、「26」、「27」の何れかの転送サイズが3ビットにエンコードされて示される。
【0033】
バーストタイプARBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。具体的には、FIFO型、連続アクセス、キャッシュラインの何れかのタイプを指定できるようになっている。
【0034】
ロックタイプARLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。具体的には、ノーマルアクセス、排他的アクセス、ロック付きアクセスの何れかのタイプを指定できるようになっている。
【0035】
キャッシュタイプARCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。具体的には、キャッシュ可能か否か、ライトスルーかライトバックか等の制御情報が示される。
【0036】
プロテクションタイプARPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。具体的には、特権アクセス、非セキュアアクセス、インストラクションアクセスの各プロテクションレベルを指定できるようになっている。
【0037】
リードアドレスバリッドARVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。リードアドレスレディARREADYは、スレーブ140がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードアドレスバリッドARVALIDおよびリードアドレスレディARREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【0038】
図3は、AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。リードデータチャネルは、リードデータをスレーブ140からマスタ110に転送するためのチャネルである。このリードデータチャネルは、リード識別子タグ、リードデータ、リードレスポンス、リードラスト、リードバリッド、リードレディの各信号からなる。これらの信号のうち、リードレディのみがマスタ110からの信号であり、これ以外はスレーブ140からの信号である。
【0039】
リード識別子タグRID[3:0]は、信号のリードデータグループを識別するための4ビットのタグである。このリード識別子タグRID[3:0]はスレーブにおいて生成されるものであり、同一のトランザクションにおいてリードアドレス識別子ARID[3:0]と一致していなければならない。
【0040】
リードデータRDATA[31:0]は、リードトランザクションによるスレーブ140からのリードデータである。ここでは32ビット幅のリードデータバスを想定したが、RDATAのビット幅はリードデータバス幅に応じて変化する。リードデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
【0041】
リードレスポンスRRESP[1:0]は、リードトランザクションによるデータ転送の状態を示す2ビットの信号である。例えば、リードレスポンスには、リードアクセスの成功または失敗を示す信号が含まれる。
【0042】
リードラストRLASTは、当該データがリードトランザクションにおける最終のデータ転送である旨を示す信号である。
【0043】
リードバリッドRVALIDは、要求されたリードデータの有効性を示すバリッド信号である。リードレディRREADYは、マスタ110がリードデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードバリッドRVALIDおよびリードレディRREADYがともにアサートされているときに、リードデータの転送が行われる。
【0044】
図4は、AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。ライトアドレスチャネルは、ライトアドレスをマスタ110からスレーブ140に伝達するためのチャネルである。このライトアドレスチャネルは、ライトアドレス識別子、ライトアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、ライトアドレスバリッド、ライトアドレスレディの各信号からなる。これらの信号のうち、ライトアドレスレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
【0045】
ライトアドレス識別子AWID[3:0]は、信号のライトアドレスグループを識別するための4ビットのタグである。ライトアドレスAWADDR[31:0]は、ライト対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【0046】
バースト長AWLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。バーストサイズAWSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。バーストタイプAWBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。ロックタイプAWLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。キャッシュタイプAWCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。プロテクションタイプAWPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。これらは基本的にリードアドレスチャネルの場合と同様である。
【0047】
ライトアドレスバリッドAWVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。ライトアドレスレディAWREADYは、スレーブ140がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトアドレスバリッドAWVALIDおよびライトアドレスレディAWREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【0048】
図5は、AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。ライトデータチャネルは、ライトデータをマスタ110からスレーブ140に転送するためのチャネルである。このライトデータチャネルは、ライト識別子タグ、ライトデータ、ライトストローブ、ライトラスト、ライトバリッド、ライトレディの各信号からなる。これらの信号のうち、ライトレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
【0049】
ライト識別子タグWID[3:0]は、信号のライトデータグループを識別するための4ビットのタグである。このライト識別子タグWID[3:0]は、同一のトランザクションにおいてライトアドレス識別子AWID[3:0]と一致していなければならない。
【0050】
ライトデータWDATA[31:0]は、ライトトランザクションによるスレーブ140へのライトデータである。ここでは32ビット幅のライトデータバスを想定したが、WDATAのビット幅はリードデータバス幅に応じて変化する。ライトデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
【0051】
ライトストローブWSTRB[3:0]は、スレーブ140のメモリにおいて更新されるべきバイト位置を示す4ビットの信号である。ライトデータバスの8ビット毎にライトストローブWSTRB[3:0]の1ビットが割り当てられる。すなわち、[3:0]の値をiとすると、WSTRB[i]は、WDATA[(8×i)+7:(8×i)]に対応する。
【0052】
ライトラストWLASTは、当該データがライトトランザクションにおける最終のデータ転送である旨を示す信号である。
【0053】
ライトバリッドWVALIDは、ライトデータの有効性を示すバリッド信号である。ライトレディWREADYは、スレーブ140がライトデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトバリッドWVALIDおよびライトレディWREADYがともにアサートされているときに、ライトデータの転送が行われる。
【0054】
図6は、AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。ライトレスポンスチャネルは、ライトトランザクションの結果をスレーブ140からマスタ110に伝達するためのチャネルである。このライトレスポンスチャネルは、レスポンス識別子、ライトレスポンス、ライトレスポンスバリッド、レスポンスレディの各信号からなる。これらの信号のうち、レスポンスレディのみがマスタ110からの信号であり、これ以外はスレーブ140からの信号である。
【0055】
レスポンス識別子BID[3:0]は、ライトレスポンスを識別するための4ビットのタグである。このレスポンス識別子BID[3:0]は、同一のトランザクションにおいてライトアドレス識別子AWID[3:0]と一致していなければならない。
【0056】
ライトレスポンスBRESP[1:0]は、ライトトランザクションによるデータ転送の状態を示す2ビットの信号である。例えば、ライトレスポンスには、ライトアクセスの成功または失敗を示す信号が含まれる。
【0057】
ライトレスポンスバリッドBVALIDは、ライトレスポンスの有効性を示すバリッド信号である。レスポンスレディBREADYは、マスタ110がライトレスポンスを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトレスポンスバリッドBVALIDおよびレスポンスレディBREADYがともにアサートされているときに、ライトレスポンスの伝達が行われる。
【0058】
[バスブリッジの構成]
図7は、本発明の第1の実施の形態におけるバスブリッジ200の一構成例を示すブロック図である。バスブリッジ200は、相互接続部300、FIFOメモリ群400、バッファ450、トランザクション情報書込部500、エントリ番号書込部550、エントリ番号読出部600、および、トランザクション情報読出部650を備える。
【0059】
相互接続部300は、リクエストおよびレスポンスをマスタ110およびスレーブ140間で転送するものである。詳細には、AXIバス120から信号線802を介してリクエストを受信した場合、相互接続部300は、信号線801を介してリクエストに係るバリッド信号を取得し、信号線817を介して対応するレディ信号を取得する。以下、バリッド信号およびレディ信号をハンドシェイク信号と称する。リクエストに係るレディ信号およびバリッド信号がアサートされていれば、相互接続部300は、そのリクエストをトランザクション情報書込部500に信号線804を介して出力する。トランザクション情報書込部500から信号線806を介してバッファフル通知を受け取った場合、相互接続部300は、リクエストに係るレディ信号をネゲートし、信号線801を介してAXIバス120へ出力する。ここで、バッファフル通知とは、バッファ450にデータを保持できないことを示す情報である。バッファフル通知を受け取らなかった場合、相互接続部300は、そのリクエストをAXIバス130に信号線818を介して転送する。
【0060】
また、AXIバス130から信号線819を介してレスポンスを受信した場合、相互接続部300は、信号線817を介してレスポンスに係るバリッド信号を取得し、信号線801を介して対応するレディ信号を取得する。バリッド信号およびレディ信号がアサートされていれば、相互接続部300は、信号線811を介してレスポンスをエントリ番号読出部600およびトランザクション情報読出部650に出力する。そして、相互接続部300は、信号線816を介してトランザクション情報読出部650からレスポンスに対応するトランザクション情報を受け取る。ここで、トランザクション情報は、レスポンスの転送処理を制御するための情報である。トランザクション情報が含む情報の詳細については後述する。相互接続部300は、受け取ったトランザクション情報に基づき、信号線803を介してレスポンスをAXIバス120へ転送する。
【0061】
FIFOメモリ群400は、先入れ先出し方式でデータを保持するものである。FIFOメモリ群400には、トランザクション識別子IDごとにFIFOメモリが設けられる。各FIFOメモリは、データを保持するための領域を1つ以上備える。以下、この領域をFIFOエントリと称する。各FIFOメモリのFIFOエントリ数は、バスシステムが許容する未解決なトランザクション数の最大値以上とされる。例えば、バスシステムが許容する未解決のトランザクション数の最大値が16個である場合、各FIFOメモリには、少なくとも16個のFIFOエントリが設けられる。また、各FIFOメモリは、データとしてバッファエントリ番号を保持する。ここで、バッファエントリは、バッファ450におけるデータを保持するための領域であり、バッファエントリ番号は、バッファエントリを識別するための番号である。
【0062】
バッファ450は、トランザクション情報を保持するものである。バッファ450は、1つ以上のバッファエントリを備える。バッファ450に設けられるバッファエントリの数は、バスシステムが許容する未解決なトランザクションの最大値以上とされる。例えば、バスシステムが許容する未解決のトランザクションの最大数が16個である場合、少なくとも16個のバッファエントリが設けられる。各バッファエントリには、有効フラグ保持領域とトランザクション情報保持領域とが設けられる。有効フラグ保持領域には、有効フラグが保持される。有効フラグは、バッファエントリのトランザクション情報保持領域に保持されているデータが有効であることを示すビット情報である。例えば、データが有効である場合に有効フラグに「1」が設定され、無効である場合に「0」が設定される。トランザクション情報保持領域には、トランザクション情報が保持される。
【0063】
トランザクション情報書込部500は、トランザクション情報をバッファ450に書き込むものである。詳細には、トランザクション情報書込部500は、相互接続部300からリクエストを受け取ると、信号線807を介してバッファ450の各バッファエントリの有効フラグを参照する。有効フラグが全て有効である場合、トランザクション情報書込部500は、バッファフル通知を発行して相互接続部300へ出力する。有効フラグのいずれかが無効である場合、トランザクション情報書込部500は、有効フラグが無効のバッファエントリのうちのいずれかを選択する。トランザクション情報書込部500は、リクエストに基づいてトランザクション情報を生成し、選択したバッファエントリに書き込む。トランザクション情報書込部500は、トランザクション情報を書き込んだバッファエントリの有効フラグを有効にする。また、トランザクション情報書込部500は、選択したバッファエントリ番号とリクエストに係るトランザクション識別子IDとをエントリ番号書込部550へ信号線808および信号線809を介して出力する。
【0064】
エントリ番号書込部550は、トランザクション情報書込部500によって選択されたバッファエントリ番号を、トランザクション識別子IDに対応するFIFOメモリに信号線810を介して書き込むものである。
【0065】
エントリ番号読出部600は、トランザクション識別子IDに対応するFIFOメモリからバッファエントリ番号を読み出すものである。詳細には、エントリ番号読出部600は、相互接続部300からレスポンスを受け取ると、そのレスポンスに係るトランザクション識別子IDを取得する。エントリ番号読出部600は、取得したトランザクション識別子IDに対応するFIFOメモリから信号線812を介してバッファエントリ番号を読み出す。エントリ番号読出部600は、読み出したバッファエントリ番号をトランザクション情報読出部650へ信号線813を介して出力する。
【0066】
トランザクション情報読出部650は、エントリ番号読出部600によって読み出されたバッファエントリ番号のバッファエントリから、トランザクション情報を読み出すものである。詳細には、トランザクション情報読出部650は、エントリ番号読出部600によりバッファエントリ番号が読み出されると、そのバッファエントリ番号のバッファエントリから信号線814を介してトランザクション情報を読み出す。トランザクション情報読出部650は、読み出したトランザクション情報を相互接続部300へ信号線816を介して出力する。レスポンスがバースト転送における最終のデータである場合またはライトレスポンスである場合、トランザクション情報読出部650は、信号線815を介してエントリの有効フラグを無効にする情報をバッファ450へ出力する。レスポンスがバースト転送における最終のデータでない場合、トランザクション情報読出部650は、エントリにおけるトランザクション情報を更新する。例えば、トランザクション情報読出部650は、トランザクション情報におけるバーストカウントをカウントアップする。
【0067】
なお、上述の実施の形態のFIFOメモリは、特許請求の範囲に記載の先入れ先出しメモリの一例である。上述の実施の形態のエントリ番号書込部は、特許請求の範囲に記載の領域情報書込部の一例であり、エントリ番号読出部は、特許請求の範囲に記載の領域情報読出部の一例である。上述の実施の形態のバッファエントリ番号は、特許請求の範囲に記載の領域情報の一例である。
【0068】
図8は、本発明の第1の実施の形態における相互接続部300の一構成例を示すブロック図である。相互接続部300は、変換情報生成器310および330を備える。
【0069】
変換情報生成器310は、AXIバス120から受信したリクエストをAXIバス130の仕様に基づき必要に応じて変換するものである。詳細には、変換情報生成器310は、AXIバス120からリクエストを受信した場合、リクエストに係るハンドシェイク信号を取得する。リクエストに係るバリッド信号およびレディ信号がアサートされたのであれば、変換情報生成器310は、リクエストをトランザクション情報書込部500へ出力する。トランザクション情報書込部500からバッファフル通知を受け取った場合、変換情報生成器310は、レディ信号をネゲートしてAXIバス120へ出力する。トランザクション情報書込部500からバッファフル通知を受け取らなかった場合、変換情報生成器310は、リクエストを必要に応じて変換してAXIバス130に出力する。
【0070】
変換情報生成器330は、AXIバス130から受信したレスポンスをAXIバス120の仕様およびトランザクション情報に基づき必要に応じて変換するものである。詳細には、変換情報生成器330は、AXIバス130からレスポンスを受信した場合、レスポンスに係るレディ信号およびバリッド信号を取得する。レスポンスに係るバリッド信号およびレディ信号がアサートされたのであれば、変換情報生成器330は、レスポンスをエントリ番号読出部600およびトランザクション情報読出部650に出力する。そして、変換情報生成器330は、そのレスポンスに対応するトランザクション情報をトランザクション情報読出部650から受け取る。変換情報生成器330は、そのトランザクション情報に基づいて、必要に応じてレスポンスを変換してAXIバス120に出力する。例えば、変換情報生成器330は、トランザクション情報の示すバースト転送の方式や転送先のバスのバス幅等に応じて転送データを結合または分割する。
【0071】
図9は、本発明の第1の実施の形態におけるFIFOメモリ群400の一構成例を示す図である。FIFOメモリ群400には、トランザクション識別子IDごとにFIFOメモリが設けられる。例えば、トランザクション識別子IDが0乃至255である場合、それらの識別子に対応させてF[0]乃至[255]のFIFOメモリが設けられる。
【0072】
各FIFOメモリは、データ保持領域411、ライトポインタ保持領域412、および、フルフラグ保持領域413を備える。
【0073】
データ保持領域411には、データを保持するための領域(FIFOエントリ)が1つ以上、設けられる。例えば、バスシステムが許容する未解決のトランザクション数の最大値が16である場合、少なくとも16個のFIFOエントリが設けられる。
【0074】
ライトポインタ保持領域412は、ライトポインタを保持するための領域である。ライトポインタは、データを書き込むべき領域を示す情報である。図10における矢印は、ライトポインタの示す領域を指している。ライトポインタの初期値は0に設定される。先頭からi番目のFIFOエントリに末尾のデータが保持された場合、先頭からi+1番目を示すライトポインタが設定される。ただし、末尾のFIFOエントリに末尾のデータが保持された場合は、その末尾のFIFOエントリを示すライトポインタが設定される。
【0075】
フルフラグ保持領域413は、フルフラグを保持するものである。フルフラグは、FIFOメモリにデータを保持できないことを示す1ビットの情報である。例えば、末尾のFIFOエントリにデータが保持されている場合、フルフラグに「1」のデータが設定され、末尾のFIFOエントリにデータが保持されていない場合、フルフラグに「0」が設定される。フルフラグが「0」である場合、ライトポインタの示すFIFOエントリ以降のFIFOエントリに保持されているデータは無効であることを意味する。無効なデータを保持するFIFOエントリは、空になっている状態であるものとする。このため、フルフラグが「1」である場合、全てのデータが有効な状態となっている。
【0076】
バスブリッジ200のエントリ番号書込部550は、FIFOメモリ群400のうちのトランザクション識別子IDに対応するFIFOメモリにおいてライトポインタの示す領域にバッファエントリ番号を書き込む。書込み時に、そのFIFOメモリのライトポインタが最大値(例えば、15)でない場合、エントリ番号書込部550は、そのライトポインタをインクリメントする。書込み時に、そのFIFOメモリのライトポインタが最大値である場合、エントリ番号書込部550は、フルフラグに「1」を設定する。
【0077】
例えば、FIFOメモリF[0]においてバッファエントリ番号0が書き込まれた場合、先頭のFIFOエントリにバッファエントリ番号0が保持され、ライトポインタは初期値0から1に更新される。次いで、FIFOメモリF[0]にバッファエントリ番号1が書き込まれた場合、2番目FIFOエントリにバッファエントリ番号1が保持され、ライトポインタは初期値1から2に更新される。
【0078】
バスブリッジ200のエントリ番号読出部600は、FIFOメモリ群400のうちのトランザクション識別子IDに対応するFIFOメモリにおいて先頭のFIFOエントリからバッファエントリ番号を読み出す。先頭からの読み出しが行われると、エントリ番号読出部600は、そのFIFOメモリにおいて先頭から2番目以降のFIFOエントリに保持されているデータを先頭へ向けて順に1つずつシフトする。この結果、先頭のFIFOエントリに保持されていたデータは削除される。
【0079】
具体的には、フルフラグが1である場合、エントリ番号読出部600は、そのFIFOメモリにおいて2番目から末尾までのFIFOエントリに保持されていたデータを先頭から末尾の直前までのFIFOエントリに書き込む。そして、エントリ番号読出部600は、フルフラグに「0」を設定する。一方、フルフラグが1である場合、エントリ番号読出部600は、ライトポインタの値をiとして、FIFOメモリにおいて2番目からi−1までのFIFOエントリに保持されていたデータを先頭からi番目までのFIFOエントリに書き込む。このようにして各データをシフトした後、エントリ番号読出部600は、ライトポインタをデクリメントする。
【0080】
例えば、バッファエントリ番号0および1が書き込まれているFIFOメモリF[0]からデータが読み出される場合、先頭のFIFOエントリからバッファエントリ番号0が読み出される。2番目のFIFOエントリに保持されていたバッファエントリ番号1は先頭のFOFOエントリに書き込まれる。そしてライトポインタは、2から1に更新される。
【0081】
図10は、本発明の第1の実施の形態におけるバッファ450の各バッファエントリに保持される有効フラグおよびトランザクション情報の一例を示す図である。有効フラグは、有効フラグ保持領域461に保持され、トランザクション情報は、トランザクション情報保持領域462に保持される。トランザクション情報は、例えば、パッキング実施フラグp、アドレス下位ビットaddr、バースト長len、バーストサイズsize、バーストタイプbtyp、および、バーストカウントbcntを含む。
【0082】
パッキング実施フラグpは、パッキングを実施するか否かを示す1ビットの情報である。パッキングは、バスの仕様に基づいてバースト対象のデータをまとめることである。パッキングは、例えば、バス幅が32ビットのバスからのデータをバス幅が64ビットのバスへ転送する際に実行される。アドレス下位ビットaddrは、アクセス先の下位アドレスを特定するための4ビットの情報である。バースト長lenは、バースト転送のデータ数を示す4ビットの情報である。バーストサイズsizeは、バースト転送の各回における転送サイズを示す3ビットの情報である。バーストタイプbtypは、バースト転送のアドレス計算のタイプを示す2ビットの情報である。バーストカウントbcntは、バースト転送の回数を示す4ビットの情報である。
【0083】
図11は、本発明の第1の実施の形態におけるバッファ450の一構成例を示す図である。バッファ450は、1つ以上のエントリを備える。例えば、バスシステムが許容する未解決のトランザクション数の最大値が16である場合、少なくとも16個のエントリ#0乃至15が設けられる。各エントリには、有効フラグ保持領域461およびトランザクション情報保持領域462が設けられる。トランザクション情報書込部500およびトランザクション情報読出部650は、各エントリに格納された有効フラグおよびトランザクション情報にビット単位でランダムにアクセス可能である。有効フラグが「0」のエントリは、トランザクション情報が無効であり、空の状態とされる。例えば、エントリ#0、1、および、15のみにトランザクション情報A、B、Cが保持された場合、それらのエントリの有効フラグは「1」に設定される。それ以外のエントリの有効フラグには「0」が設定され、空の状態である。
【0084】
図12は、本発明の第1の実施の形態におけるトランザクション情報書込部500の一構成例を示すブロック図である。トランザクション情報書込部500は、バッファフル判断部510、エントリ番号選択部520、および、トランザクション情報生成部530を備える。
【0085】
バッファフル判断部510は、バッファ450にデータを保持できるか否かを判断するものである。具体的には、バッファフル判断部510は、リクエストを相互接続部300から受け取ると、バッファ450の各有効フラグを参照する。全ての有効フラグが有効であれば、バッファフル判断部510は、バッファフル通知を発行して相互接続部300に出力する。
【0086】
エントリ番号選択部520は、空いているバッファエントリのバッファエントリ番号のうちのいずれかを選択するものである。詳細には、エントリ番号選択部520は、有効フラグが無効のバッファエントリのバッファエントリ番号のうちのいずれかを選択する。例えば、エントリ番号選択部520は、バッファエントリごとに固定の優先度を設定しておき、優先度の最も高いバッファエントリのバッファエントリ番号を選択する。あるいは、エントリ番号選択部520は、最も使用頻度の少ないバッファエントリのバッファエントリ番号を選択する。エントリ番号選択部520は、選択したバッファエントリ番号をトランザクション情報生成部530およびエントリ番号書込部550へ出力する。
【0087】
トランザクション情報生成部530は、リクエストに基づいてトランザクション情報を生成してバッファ450に書き込むものである。具体的には、相互接続部300からリクエストを受け取ると、トランザクション情報生成部530は、そのリクエストからトランザクション情報を生成する。トランザクション情報生成部530は、エントリ番号選択部520からバッファエントリ番号を受け取り、そのバッファエントリ番号のバッファエントリにトランザクション情報を書き込む。また、トランザクション情報生成部530は、リクエストからトランザクション識別子IDを取得してエントリ番号書込部550へ出力する。
【0088】
図13は、本発明の第1の実施の形態におけるトランザクション情報読出部650の動作の一例を示す図である。レスポンスがバースト転送における最終のデータでない(例えば、RLAST=0である)場合、トランザクション情報読出部650は、エントリ番号読出部600が読み出したバッファエントリ番号のバッファエントリからトランザクション情報を読み出す。そして、トランザクション情報読出部650は、そのトランザクション情報のバーストカウントを更新する。レスポンスがバースト転送における最終のデータである(例えば、RLAST=1である)場合またはライトレスポンスである場合、トランザクション情報読出部650は、読み出されたバッファエントリ番号のバッファエントリからトランザクション情報を読み出す。そして、トランザクション情報読出部650は、そのトランザクション情報を無効にする。
【0089】
[バスブリッジの動作]
次に、図14乃至16を参照してバスブリッジ200の動作について説明する。図14は、本発明の第1の実施の形態におけるバスブリッジ200の動作の一例を示すフローチャートである。この動作は、バスブリッジ200に電源が投入されたとき、または、FIFOメモリ群400およびバッファ450を初期化するときに開始する。
【0090】
バスブリッジ200は、FIFOメモリ群400内の各FIFOメモリとバッファ450とを初期化する(ステップS905)。そして、バスブリッジ200は、リクエストが発行されたか否かを判断する(ステップS910)。リクエストが発行されたのであれば(ステップS910:Yes)、バスブリッジ200は、トランザクション情報をバッファ450に書き込むためのトランザクション情報書込処理を実行する(ステップS920)。バスブリッジ200は、リクエストに係るトランザクション識別子IDに対応するFIFOメモリに対して、トランザクション情報が書き込まれたバッファエントリ番号を書き込む(ステップS930)。
【0091】
リクエストが発行されていない場合(ステップS910:No)、または、ステップS930の後、バスブリッジ200は、レスポンスが返送されたか否かを判断する(ステップS935)。レスポンスが返送されたのであれば(ステップS935:Yes)、バスブリッジ200は、レスポンスに係るトランザクション識別子IDに対応するFIFOメモリからバッファエントリ番号を読み出す(ステップS940)。バスブリッジ200は、読み出したバッファエントリ番号のバッファエントリからトランザクション情報を読み出すためのトランザクション情報読出処理を実行する(ステップS950)。レスポンスが返送されていない場合(ステップS935:No)、または、ステップS950の後、バスブリッジ200は、ステップS910に戻る。
【0092】
図15は、本発明の第1の実施の形態におけるトランザクション情報書込処理の一例を示すフローチャートである。トランザクション情報書込部500は、バッファ450において有効フラグV=0の空きのエントリがあるか否かを判断する(ステップS921)。空きのバッファエントリがない場合(ステップS921:No)、トランザクション情報書込部500は、バッファフル通知を発行する(ステップS922)。空きのバッファエントリがある場合(ステップS921:Yes)、トランザクション情報書込部500は、いずれかの空き(有効フラグV=0)のバッファエントリを選択する(ステップS923)。トランザクション情報書込部500は、リクエストに基づいてトランザクション情報を生成し、選択したバッファエントリに書き込む(ステップS924)。相互接続部300は、リクエストをスレーブに転送する(ステップS925)。ステップS922またはS925の後、バスブリッジ200は、トランザクション情報書込処理を終了する。
【0093】
図16は、本発明の第1の実施の形態におけるトランザクション情報読出処理の一例を示すフローチャートである。トランザクション情報読出部650は、エントリ番号読出部600により読み出されたバッファエントリ番号のバッファエントリからトランザクション情報を読み出す(ステップS951)。トランザクション情報読出部650は、レスポンスがバースト転送における最終のデータまたはライトレスポンスであるか否かを判断する(ステップS952)。
【0094】
最終のデータまたはライトレスポンスである場合(ステップS952:Yes)、トランザクション情報読出部650は、バッファエントリ内のトランザクション情報を無効にする(ステップS953)。レスポンスが最終のデータでなく、かつ、ライトレスポンスでもない場合(ステップS952:No)、トランザクション情報読出部650は、バッファエントリ内のトランザクション情報においてバーストカウントを更新する(ステップS954)。ステップS953またはS954の後、相互接続部300は、トランザクション情報読出部650が読み出したトランザクション情報に基づいてレスポンスをマスタへ転送する(ステップS955)。ステップS955の後、バスブリッジ200は、トランザクション情報読出処理を終了する。
【0095】
続いて、図17乃至22を参照してバスブリッジ200の動作結果の一例について説明する。図17は、本発明の第1の実施の形態におけるリクエスト発行時のバスブリッジ200の動作を説明するための図である。AXIバス120にマスタ#1を含むマスタ110が接続され、AXIバス130にスレーブ#2を含むスレーブ140が接続されている構成を想定する。マスタ#1が、スレーブ#2に対して、トランザクション識別子IDに「0」を設定したリクエストを2回発行したものとする。また、リクエスト発行前において、FIFOメモリ群400およびバッファ450は初期化されていたものとする。バスブリッジ200は、このリクエストをスレーブ#2へ転送する。
【0096】
図18は、本発明の第1の実施の形態におけるリクエスト発行後のバッファ450の状態の一例を示す図である。図17に例示したように2回リクエストが発行されると、トランザクション情報書込部500は、それらのリクエストに基づいてトランザクション情報A,Bを生成し、バッファエントリ#0および#2に書き込む。そして、これらのバッファエントリの有効フラグは「1」に設定される。
【0097】
図19は、本発明の第1の実施の形態におけるリクエスト発行後のFIFOメモリの状態の一例を示す図である。エントリ番号書込部550は、トランザクション情報書込部500から、トランザクション識別子ID=0と、書き込まれたバッファエントリのバッファエントリ番号0および2とを受け取る。エントリ番号書込部550は、トランザクション識別子ID=0に対応するFIFOメモリF[0]においてライトポインタに基づき、先頭のFIFOエントリと2番目のFIFOエントリとにバッファエントリ番号0および2を書き込む。ライトポインタは、初期値の0から2に更新される。
【0098】
図20は、本発明の第1の実施の形態におけるレスポンス返送時のバスブリッジ200の動作を説明するための図である。スレーブ#2はマスタ#1に対してトランザクションID=0を設定したレスポンスを返送する。このレスポンスは、バースト転送における最終のデータ(RLAST=1)であるものとする。
【0099】
図21は、本発明の第1の実施の形態におけるレスポンス返送時のバスブリッジ200の動作を説明するための図である。図19に例示したようにレスポンスが返送されると、エントリ番号読出部600は、そのレスポンスのトランザクション識別子ID=0に対応するFIFOメモリF[0]の先頭のFIFOエントリからバッファエントリ番号0を読み出す。FIFOメモリF[0]内の2番目のFIFOエントリに保持されていたバッファエントリ番号2は、シフトされて先頭のFIFOエントリに書き込まれる。また、ライトポインタは2から1に更新される。
【0100】
図22は、本発明の第1の実施の形態におけるレスポンス返送後のバッファ450の状態の一例を示す図である。トランザクション情報読出部650は、読み出されたバッファエントリ番号0のバッファエントリに保持されていたトランザクション情報Aを読み出す。また、バッファエントリ番号0のバッファエントリの有効フラグは「0」に設定される。
【0101】
このように、本発明の第1の実施の形態では、リクエストが発行されると、トランザクション情報書込部500がトランザクション情報をバッファ450内のいずれかのバッファエントリに書き込む。エントリ番号書込部550は、そのバッファエントリのバッファエントリ番号をトランザクション識別子IDに対応するFIFOメモリに書き込んでおく。そして、レスポンスが返送されると、エントリ番号読出部600は、トランザクション識別子IDに対応するFIFOメモリからバッファエントリ番号を読み出す。これにより、トランザクション情報読出部650は、そのバッファエントリ番号のバッファエントリからトランザクション情報を読み出すことができる。
【0102】
この構成によれば、各FIFOメモリには、バッファエントリ番号を保持する領域を設けるだけで済むため、FIFOメモリにトランザクション情報を保持する場合と比較してFIFOメモリの記憶容量が小さくなる。すなわち、トランザクション数の最大値を増大する場合、バッファエントリ番号を保持するFIFOメモリを追加すればよいため、トランザクション情報を保持するFIFOメモリを追加する場合と比較して記憶容量の増大を抑えることができる。
【0103】
なお、第1の実施の形態のバスシステムは、AXIプロトコルを使用しているが、スプリットトランザクションを許容するプロトコルであれば、AXIプロトコル以外のプロトコルを使用してもよい。
【0104】
また、スプリットトランザクションを許容するインターコネクトであれば、バスブリッジ以外のインターコネクトに本発明を適用することができる。
【0105】
また、図1においては、AXIバス120にマスタ110が接続され、AXIバス130にスレーブ140が接続される構成を例示したが、モジュールの接続形態は、図1に例示した構成に限定されない。例えば、AXIバス120にマスタに加えてスレーブを接続してもよいし、AXIバス130にスレーブに加えてマスタを接続してもよい。
【0106】
また、図8において、トランザクション情報を例示したが、レスポンスの転送制御に必要な情報であれば、バッファ450は、図8に例示した情報と異なる情報をトランザクション情報として保持してもよい。
【0107】
また、図10においてFIFOメモリごとにライトポインタおよびフルフラグを設ける構成を例示したが、先入れ先出し方式によりデータが保持されるものであれば、FIFOメモリは、図10に例示した構成に限定されない。例えば、リングバッファを使用するFIFOメモリであってもよい。
【0108】
<2.第2の実施の形態>
[バスブリッジの構成]
次に図23乃至29を参照して、本発明の第2の実施の形態について説明する。第2の実施の形態のバスブリッジ201は、トランザクション識別子IDごとにFIFOメモリを備えるのでなく、グループ識別子ごとにFIFOメモリを備える点において第1の実施の形態のバスブリッジ200と異なる。グループ識別子は、トランザクションが属するグループを識別するための識別子である。例えば、トランザクション識別子IDが7ビットの場合、その上位5ビットであるgIDがグループ識別子として用いられる。
【0109】
バスブリッジ201は、相互接続部301、FIFOメモリ群401、バッファ451、管理情報書込部501、エントリ番号書込部551、エントリ番号読出部601、および、管理情報読出部651を備える。
【0110】
相互接続部301の構成は、トランザクション識別子を受け取り、リクエストおよびレスポンスにおいて受け取ったトランザクション識別子を設定する点以外は、第1の実施の形態の相互接続部300と同様の構成である。詳細には、相互接続部301は、リクエストが発行された場合、管理情報書込部501から信号線821を介してトランザクション識別子ID'をさらに受け取る。このトランザクション識別子ID'は、リクエストに係るトランザクション識別子IDにおいてグループ識別子以外のビット列に所定値(例えば、10進表記で「0」の値)が設定されたものである。例えば、7ビットのトランザクション識別子IDの上位5ビットをグループ識別子とする場合、下位2ビットに2進表記で「00」の値が設定されたものがトランザクション識別子ID'とされる。相互接続部301は、トランザクション識別子ID'をリクエストに設定してスレーブ140へ転送する。
【0111】
また、相互接続部301は、レスポンスが返送された場合、管理情報読出部651から、信号線825を介してトランザクション識別子IDをさらに受け取る。相互接続部301は、そのトランザクション識別子IDをレスポンスに設定してマスタ110へ転送する。前述したように、リクエストにトランザクション識別子ID'が設定された場合、そのリクエストに対応するレスポンスには、スレーブ140により、同様にトランザクション識別子ID'が設定される。レスポンスに係るトランザクション識別子ID'を相互接続部301が元のトランザクション識別子IDに置き換えることにより、マスタ110は、自身が発行したリクエストに対応するレスポンスを受信することができる。
【0112】
FIFOメモリ群401には、グループ識別子gIDごとにFIFOメモリが設けられる。各FIFOメモリの構成は、第1の実施の形態のFIFOメモリの構成と同様である。
【0113】
バッファ451の構成は、トランザクション情報の代わりに管理情報を保持する点以外は第1の実施の形態のバッファ450の構成と同様である。管理情報は、トランザクション識別子IDからgIDを除いたビット列である部分ビット列idとトランザクション情報とを含む情報である。
【0114】
管理情報書込部501の構成は、トランザクション情報の代わりに管理情報をバッファ451に書き込む点以外は、第1の実施の形態のトランザクション情報書込部500の構成と同様である。詳細には、管理情報書込部501は、リクエストを相互接続部301から受け取った場合、リクエストに係るトランザクション識別子IDの上位のビット列であるgIDをグループ識別子として取得する。管理情報書込部501は、トランザクション識別子IDにおいてグループ識別子以外のビット列を所定値に固定した識別子ID'を相互接続部301へ出力する。以下、このように、トランザクション識別子を置き換えることを「リネーム」と称する。そして、管理情報書込部501は、トランザクション識別子IDからgIDを除いた部分ビット列idを取得する。管理情報書込部501は、部分ビット列idおよびトランザクション情報を管理情報としてバッファ450に書き込む。部分ビット列idは、信号線822を介して出力される。また、管理情報書込部501は、トランザクション識別子IDの代わりにグループ識別子gIDをエントリ番号書込部551に信号線823を介して出力する。
【0115】
エントリ番号書込部551は、グループ識別子gIDに対応するFIFOメモリにバッファエントリ番号を書き込むものである。
【0116】
エントリ番号読出部601は、レスポンスに係るグループ識別子gIDに対応するFIFOメモリからバッファエントリ番号を読み出すものである。
【0117】
管理情報読出部651の構成は、トランザクション情報の代わりに管理情報をバッファ451から読み出す点以外は、第1の実施の形態のトランザクション情報読出部650の構成と同様である。詳細には、管理情報読出部651は、レスポンスを相互接続部301から受け取った場合、エントリ番号読出部601により読み出されたバッファエントリ番号のバッファエントリから管理情報を読み出す。管理情報における部分ビット列idは、信号線824を介して読み出される。管理情報読出部651は、レスポンスに係るトランザクション識別子ID'においてグループ識別子gID以外のビット列を、読み出した部分ビット列idに置き換える(すなわち、リネームする)ことにより、トランザクション識別子IDを生成する。管理情報読出部651は、生成したトランザクション識別子IDを相互接続部301に信号線825を介して出力する。
【0118】
図24は、本発明の第2の実施の形態におけるFIFOメモリ群401の一構成例を示す図である。FIFOメモリ群401には、グループ識別子gIDごとにFIFOメモリが設けられる。例えば、グループ識別子gIDがトランザクション識別子の上位5ビットである場合、64個のFIFOメモリF[0]乃至[63]が設けられる。
【0119】
図25は、本発明の第2の実施の形態における有効フラグおよび管理情報の一例を示す図である。各バッファエントリには、有効フラグ保持領域461と管理情報保持領域463とが設けられる。有効フラグ保持領域461に保持される有効フラグは、管理情報が有効であるか否かを示す。管理情報保持領域463は、管理情報を保持するための領域である。管理情報は、部分ビット列idとトランザクション情報とを含む。
【0120】
図26は、本発明の第2の実施の形態におけるバッファ451の一構成例を示す図である。有効フラグが「0」のバッファエントリにおける管理情報は無効とされ、有効フラグが「1」のバッファエントリにおける管理情報は無効とされる。例えば、バッファエントリ#0、1、および、15のみに管理情報が保持された場合、それらのバッファエントリの有効フラグは「1」に設定され、他のバッファエントリの有効フラグは「0」に設定される。
【0121】
図27は、本発明の第2の実施の形態におけるバスブリッジ201の動作の一例を示すフローチャートである。この動作は、ステップS920、S930、S940、および、S950の代わりにステップS960、S931、S941、および、S970を実行する点以外は、第1の実施の形態のバスブリッジ200の動作と同様である。
【0122】
リクエストが発行された場合(ステップS910:Yes)、バスブリッジ201は、管理情報をバッファエントリのいずれかに書き込むための管理情報書込処理を実行する(ステップS960)。バスブリッジ201は、リクエストに係るgIDに対応するFIFOメモリに、管理情報が書き込まれたバッファエントリのバッファエントリ番号を書き込む(ステップS931)。
【0123】
レスポンスが返送された場合(ステップS935:Yes)、バスブリッジ201は、リクエストに係るgIDに対応するFIFOメモリからバッファエントリ番号を読み出す(ステップS941)。バスブリッジ201は、バッファエントリ番号の示すバッファエントリから管理情報を読み出すための管理情報読出処理を実行する(ステップS970)。
【0124】
図28は、本発明の第2の実施の形態における管理情報書込処理の一構成例を示すブロック図である。この管理情報書込処理は、ステップS924の代わりにステップS961およびS962を実行する点以外は、第1の実施の形態におけるトランザクション情報書込処理と同様である。
【0125】
管理情報書込部501は、いずれかの有効フラグV=0の空きのバッファエントリを選択し(ステップS923)、そのバッファエントリに管理情報を書き込む(ステップS961)。管理情報書込部501は、リクエストに係るトランザクション識別子IDをトランザクション識別子ID'にリネームする。トランザクション識別子ID'は、例えば、トランザクション識別子IDからgIDを除いたビット列(例えば、下位2ビット)を所定値(例えば、2進表記で「00」)に固定したものである(ステップS962)。
【0126】
図29は、本発明の第2の実施の形態における管理情報読出処理の一例を示すフローチャートである。この管理情報読出処理は、ステップS951およびS953の代わりにステップS971、S972、および、S973を実行する点以外は、第1の実施の形態におけるトランザクション情報読出処理と同様である。
【0127】
管理情報読出部651は、エントリ番号読出部601により読み出されたバッファエントリ番号のバッファエントリから管理情報を読み出す(ステップS971)。
【0128】
レスポンスが最終のデータまたはライトレスポンスである場合(ステップS952)、管理情報読出部651は、バッファエントリ内の管理情報を無効にする(ステップS972)。ステップS972またはS954の後、管理情報読出部651は、レスポンスに係るトランザクションID'をIDにリネームする(ステップS973)。
【0129】
このように、本発明の第2の実施の形態では、リクエストが発行されると、管理情報書込部501が管理情報をバッファ451内のいずれかのバッファエントリに書き込む。エントリ番号書込部551は、そのバッファエントリのバッファエントリ番号をグループ識別子gIDに対応するFIFOメモリに書き込んでおく。そして、レスポンスが返送されると、エントリ番号読出部601は、グループ識別子gIDに対応するFIFOメモリからバッファエントリ番号を読み出す。これにより、管理情報読出部651は、そのバッファエントリ番号のバッファエントリから管理情報を読み出すことができる。
【0130】
この構成によれば、FIFOメモリをグループごとに設けるため、FIFOメモリをトランザクション識別子ごとに設ける場合と比較して、FIFOメモリの記憶容量の合計は、さらに小さくなる。
【0131】
また、管理情報書込部501は、リクエストに係るトランザクション識別子IDから部分ビット列idを除いている。このため、スレーブ140は、部分ビット列idが除かれたグループ識別子gIDが設定されたリクエストを受信する。この結果、複数の異なるトランザクション識別子IDが、同じ値のグループ識別子gIDに置き換えられる。前述したように、AXIバスプロトコルにおいては、トランザクション識別子が同じトランザクション間では、順序性が保証される。したがって、グループ識別子への置換えにより、同一のグループ識別子が割り当てられた各レスポンスは、リクエストの発行順に返送されることになる。よって、FIFOメモリの記憶容量を削減しても、順序性が維持される。
【0132】
さらに、管理情報読出部651は、部分ビット列idとグループ識別子gIDとからトランザクション識別子IDを生成している。このため、マスタ110は、自身が発行したリクエストに対応するレスポンスを受信することができる。
【0133】
なお、グループ識別子をトランザクション識別子の上位5ビットとしているが、グループ識別子は、トランザクション識別子の一部のビット列であれば、上位5ビットに限定されない。
【0134】
<3.第3の実施の形態>
[バスブリッジの構成]
次に図30乃至34を参照して、本発明の第3の実施の形態について説明する。第3の実施の形態のバスブリッジ202は、FIFOメモリのFIFOエントリ数を削減してオーバーフローFIFOメモリをさらに設けた点において第1の実施の形態のバスブリッジ200と異なる。具体的には、バスブリッジ202は、FIFOメモリ群400、エントリ番号書込部550、および、エントリ番号読出部600の代わりに、FIFOメモリ群402、エントリ番号書込部552、および、エントリ番号読出部602を備える。
【0135】
FIFOメモリ群402には、トランザクション識別子IDごとにFIFOメモリが設けられる。各FIFOメモリの構成は、第1の実施の形態のFIFOメモリと同様である。ただし、FIFOメモリ群402における各FIFOメモリのFIFOエントリ数は、第1の実施の形態のFIFOメモリのFIFOエントリ数より少ない。具体的には、各FIFOメモリのFIFOエントリ数は、未解決なトランザクション数の最大値の半分以上の数とされる。例えば、未解決なトランザクション数の最大値が16である場合、FIFOメモリのFIFOエントリは、少なくとも8個とされる。各FIFOメモリの記憶容量を最小にするため、FIFOメモリのFIFOエントリの数は、未解決なトランザクション数の最大値の半分にするのが望ましい。
【0136】
各FIFOメモリのFIFOエントリ数を未解決なトランザクション数の最大値の半分未満とすると、2つ以上のFIFOメモリから溢れたデータがオーバーフローFIFOメモリに保持される状態が生じうる。例えば、未解決なトランザクション数の最大値を16とし、各FIFOメモリのFIFOエントリを7個とした場合、未解決なトランザクションに係るバッファエントリ番号が2つのFIFOメモリに8個ずつ書き込まれることがある。この場合、これらの各FIFOメモリから溢れたデータがオーバーフローFIFOメモリに保持されることとなる。しかし、オーバーフローFIFOは、FIFOメモリに対応するトランザクション識別子IDを保持しない。このため、エントリ番号読出部602は、保持されているデータが、いずれのFIFOメモリから溢れたデータなのか判断できなくなってしまう。これに対して、各FIFOメモリのFIFOエントリ数を未解決なトランザクション数の最大値の半分以上とすると、2つ以上のFIFOメモリから溢れたデータがオーバーフローFIFOメモリに保持されることがなくなる。したがって、FIFOメモリが複数であっても、必要なオーバーフローFIFOメモリは1つで済む。
【0137】
また、FIFOメモリ群402には、オーバーフローFIFOメモリが設けられる。オーバーフローFIFOメモリは、トランザクション識別子ごとに設けられたFIFOメモリから溢れたデータを保持するものである。オーバーフローFIFOメモリのFIFOエントリ数は、未解決なトランザクション数の最大値とFIFOメモリのFIFOエントリ数との差分である。例えば、未解決なトランザクション数の最大値が16個であり、FIFOメモリのFIFOエントリ数を8個とする場合、オーバーフローFIFOメモリのFIFOエントリ数は8個とされる。このオーバーフローFIFOには、オーバーフローFIFOにデータが保持されていないことを示す空フラグを保持する領域が設けられる。例えば、オーバーフローFIFOにデータが保持されていない場合に空フラグに「1」が設定され、1つ以上のデータが保持されている場合に「0」が設定される。
【0138】
エントリ番号書込部552の構成は、FIFOメモリからデータが溢れる場合に、オーバーフローFIFOメモリにデータを書き込む点以外は、第1の実施の形態のエントリ番号書込部550と同様の構成である。具体的には、トランザクション識別子IDに対応するFIFOのフルフラグが「1」であれば、エントリ番号書込部552は、オーバーフローFIFOメモリにバッファエントリ番号を書き込む。
【0139】
エントリ番号読出部602の構成は、FIFOまたはオーバーフローFIFOからバッファエントリ番号を読み出す点以外は第1の実施の形態のエントリ番号読出部600と同様の構成である。具体的には、トランザクション識別子IDに対応するFIFOのフルフラグが「1」であり、かつ、空フラグが「0」である場合、エントリ番号読出部602オーバーフローFIFOからバッファエントリ番号を読み出す。トランザクション識別子IDに対応するFIFOのフルフラグが「0」または空フラグが「1」である場合、トランザクション識別子IDに対応するFIFOからバッファエントリ番号を読み出す。
【0140】
図31は、本発明の第3の実施の形態におけるFIFOメモリ群402の一構成例を示す図である。FIFOメモリ群402には、トランザクション識別子ごとにFIFOメモリが設けられる。また、オーバーフローFIFOメモリOvF1が設けられる。
【0141】
オーバーフローFIFOメモリOvF1は、データ保持領域421、末尾ポインタ保持領域422、および、空フラグ保持領域423を備える。データ保持領域421は、トランザクションごとのFIFOメモリのデータ保持領域411と同様である。末尾ポインタ保持領域422は、末尾ポインタを保持する領域である。末尾ポインタは、末尾のデータが保持されているFIFOエントリを示す情報である。空フラグ保持領域423は、空フラグを保持するものである。
【0142】
エントリ番号書込部552は、書込み時に空フラグが「1」である場合、空フラグに「0」を設定して、先頭のFIFOエントリにバッファエントリ番号を書き込む。書込み時に空フラグが「0」である場合、エントリ番号書込部552は、末尾ポインタの直前のFIFOエントリにバッファエントリ番号を書き込み、末尾ポインタをインクリメントする。
【0143】
エントリ番号読出部602は、オーバーフローFIFOにおいて、先頭のFIFOエントリからバッファエントリ番号を読み出す。エントリ番号読出部602は、そのFIFOメモリにおいて2番目以降のFIFOエントリに保持されている各データを先頭へ1つずつシフトする。そして、読出時に末尾ポインタが最小値でない場合、エントリ番号読出部602は、末尾ポインタをデクリメントする。読出時に末尾ポインタが最小値である場合、エントリ番号読出部602は、空フラグに「1」を設定する。
【0144】
なお、上述のオーバーフローFIFOメモリOvF1は、特許請求の範囲に記載の溢れ先入れ先出しメモリの一例である。
【0145】
[バスブリッジの動作]
次に、図32乃至34を参照してバスブリッジ202の動作について説明する。この動作は、ステップS930およびS940の代わりにステップS980およびS990を実行する点以外は、第1の実施の形態のバスブリッジ200の動作と同様である。
【0146】
リクエストが発行された場合(ステップS910:Yes)、バスブリッジ202は、トランザクション情報書込処理を実行し(ステップS920)、バッファエントリ番号をFIFOメモリに書き込むためのエントリ番号書込処理を実行する(ステップS980)。
【0147】
レスポンスが返送された場合(ステップS935:Yes)、バスブリッジ202は、バッファエントリ番号をFIFOメモリから読み出すためのエントリ番号書込処理を実行し(ステップS990)、トランザクション情報読出処理を実行する(ステップS950)。
【0148】
図33は、本発明の第3の実施の形態におけるエントリ番号書込処理の一例を示すフローチャートである。エントリ番号書込部552は、トランザクション識別子IDに対応するFIFOメモリのフルフラグが「0」であるか否かを判断する(ステップS981)。フルフラグが「0」である場合(ステップS981:Yes)、エントリ番号書込部552は、そのFIFOメモリにバッファエントリ番号を書き込む(ステップS982)。エントリ番号書込部552は、ライトポインタを参照して、そのFIFOメモリが満杯であるか否かを判断する(ステップS983)。満杯であれば(ステップS983:Yes)、エントリ番号書込部552は、そのFIFOメモリのフルフラグに「1」にセットする(ステップS984)。
【0149】
トランザクション識別子IDに対応するFIFOメモリのフルフラグが「1」である場合(ステップS981:No)、エントリ番号書込部552は、オーバーフローFIFOメモリの空フラグが「1」であるか否かを判断する(ステップS985)。空フラグが「1」であれば(ステップS985:Yes)、エントリ番号書込部552は、空フラグに「0」をセットする(ステップS986)。空フラグが「0」である場合(ステップS985:No)、またはステップS986の後、エントリ番号書込部552は、オーバーフローFIFOメモリにバッファエントリ番号を書き込む(ステップS987)。
【0150】
トランザクション識別子IDに対応するFIFOメモリが満杯でない場合(ステップS983:No)、または、ステップS984、もしくは、ステップS987の後、エントリ番号書込部552は、エントリ番号書込処理を終了する。
【0151】
図34は、本発明の第3の実施の形態におけるエントリ番号書読出処理の一例を示すフローチャートである。エントリ番号読出部602は、トランザクション識別子IDに対応するFIFOメモリのフルフラグが「0」であるか否かを判断する(ステップS991)。フルフラグが「0」であれば(ステップS991:Yes)、エントリ番号読出部602は、そのFIFOメモリからバッファエントリ番号を読み出す(ステップS992)。
【0152】
フルフラグが「1」である場合(ステップS991:No)、エントリ番号読出部602は、オーバーフローFIFOメモリの空フラグが「0」であるか否かを判断する(ステップS993)。空フラグが「1」である場合(ステップS993:No)、エントリ番号読出部602は、トランザクション識別子IDに対応するFIFOメモリからバッファエントリ番号を読み出す(ステップS994)。そして、エントリ番号読出部602は、そのFIFOメモリのフルフラグに「0」をセットする(ステップS995)。
【0153】
空フラグが「0」である場合(ステップS993:Yes)、エントリ番号読出部602は、オーバーフローFIFOメモリからバッファエントリ番号を読み出す(ステップS996)。エントリ番号読出部602は、末尾ポインタを参照してオーバーフローFIFOメモリが空になったか否かを判断する(ステップS997)。オーバーフローFIFOメモリが空になったのであれば(ステップS997:Yes)、エントリ番号読出部602は、空フラグを「1」にセットする(ステップS998)。
【0154】
オーバーフローFIFOメモリが空になったのでない場合(ステップS997:No)、または、ステップS992、S995、もしくは、S998の後、エントリ番号読出部602は、エントリ番号読出処理を終了する。
【0155】
このように、本発明の第3の実施の形態によれば、バスブリッジ202は、FIFOメモリからデータが溢れる場合にオーバーフローFIFOメモリにデータを保持することにより、FIFOメモリの記憶容量をさらに小さくすることができる。具体的には、各FIFOメモリのFIFOエントリ数を、オーバーフローFIFOメモリのFIFOエントリ数の分、削減することができる。
【0156】
また、バスブリッジ202は、各FIFOメモリにフルフラグを設定しておくため、フルフラグを参照することにより、FIFOメモリからデータが溢れるか否かを容易に判断することができる。
【0157】
また、バスブリッジ202は、オーバーフローFIFOメモリに空フラグを設定しておくため、空フラグを参照することにより、レスポンスに係るバッファエントリ番号がオーバーフローFIFOメモリに保持されているか否かを容易に判断することができる。
【0158】
さらに、FIFOメモリのFIFOエントリ数は、未解決の最大のトランザクション数の最大値の半分以上としている。このため、2つ以上のFIFOメモリから溢れたデータがオーバーフローFIFOメモリに保持されることがなくなる。したがってFIFOメモリが複数であっても、必要なオーバーフローFIFOメモリは1つで済む。
【0159】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【符号の説明】
【0160】
110 マスタ
120、130 AXIバス
140 スレーブ
200、201、202 バスブリッジ
300、301 相互接続部
310、330 変換情報生成器
400、401、402 FIFOメモリ群
411、421 データ保持領域
412 ライトポインタ保持領域
413 フルフラグ保持領域
422 末尾ポインタ保持領域
423 空フラグ保持領域
450、451 バッファ
461 有効フラグ保持領域
462 トランザクション情報保持領域
463 管理情報保持領域
500 トランザクション情報書込部
501 管理情報書込部
510 バッファフル判断部
520 エントリ番号選択部
530 トランザクション情報生成部
550、551、552 エントリ番号書込部
600、601、602 エントリ番号読出部
650 トランザクション情報読出部
651 管理情報読出部

【特許請求の範囲】
【請求項1】
リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理を識別するための識別子であるトランザクション識別子に対して前記トランザクション識別子ごとに設けられた複数の先入れ先出しメモリと、
前記レスポンスの転送処理を制御するための情報であるトランザクション情報を書き込むための複数のトランザクション情報書込領域を備えるバッファと、
前記リクエストが発行されるたびに前記リクエストに基づいて前記トランザクション情報を前記トランザクション情報書込領域のいずれかに書き込むトランザクション情報書込部と、
前記トランザクション情報が書き込まれるたびに前記リクエストに係る前記トランザクション識別子に対応する前記先入れ先出しメモリに対して前記トランザクション情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、
前記レスポンスが返送されるたびに前記レスポンスに係る前記トランザクション識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、
前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、
前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部と
を具備する相互接続装置。
【請求項2】
前記複数の先入れ先出しメモリから溢れた前記領域情報を保持する溢れ先入れ先出しメモリをさらに具備し、
前記領域情報書込部は、前記リクエストに係る前記先入れ先出しメモリから前記領域情報が溢れない場合に前記領域情報を前記先入れ先出しメモリに書き込み、前記リクエストに係る前記先入れ先出しメモリから前記領域情報が溢れる場合に前記溢れ先入れ先出しメモリに前記領域情報を書き込み、
前記領域情報読出部は、前記レスポンスに係る前記領域情報が前記溢れ先入れ先出しメモリに書き込まれている場合に前記溢れ先入れ先出しメモリから前記領域情報を読み出し、前記領域情報が前記溢れ先入れ先出しメモリに書き込まれていない場合に前記先入れ先出しメモリから前記領域情報を読み出す
請求項1記載の相互接続装置。
【請求項3】
前記先入れ先出しメモリが前記領域情報を保持できないことを示すフルフラグを前記先入れ先出しメモリごとにさらに具備し、
前記領域情報書込部は、前記フルフラグに基づいて前記先入れ先出しメモリから前記領域情報が溢れるか否かを判断する
請求項2記載の相互接続装置。
【請求項4】
前記溢れ先入れ先出しメモリが空であることを示す空フラグをさらに具備し、
前記領域情報読出部は、前記空フラグに基づいて前記領域情報が前記溢れ先入れ先出しメモリに書き込まれているか否かを判断する
請求項2記載の相互接続装置。
【請求項5】
前記先入れ先出しメモリおよび前記溢れ先入れ先出しメモリは前記領域情報を保持するための領域であるエントリを1つ以上備え、
前記先入れ先出しメモリのエントリ数は、未解決な前記トランザクション処理の数の最大値の半分以上であり、
前記溢れ先入れ先出しメモリのエントリ数は、前記最大値と前記先入れ先出しメモリのエントリ数との間の差分である
請求項2記載の相互接続装置。
【請求項6】
リクエストの転送処理と前記リクエストに対応するレスポンスの転送処理とを含むトランザクション処理が属するグループを識別するための識別子であるグループ識別子に対して前記グループ識別子ごとに設けられた複数の先入れ先出しメモリと、
前記レスポンスの転送処理を制御するための情報であるトランザクション情報と前記トランザクション処理を識別するためのトランザクション識別子から前記グループ識別子を除いた情報である部分ビット列とを管理情報として書き込むための複数の管理情報書込領域を備えるバッファと、
前記リクエストが発行されるたびに前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込部と、
前記管理情報が書き込まれるたびに前記リクエストに係る前記グループ識別子に対応する前記先入れ先出しメモリに対して前記管理情報が書き込まれた前記トランザクション情報書込領域を示す領域情報を書き込む領域情報書込部と、
前記レスポンスが返送されるたびに前記レスポンスに係る前記グループ識別子に対応する前記先入れ先出しメモリから前記領域情報を読み出す領域情報読出部と、
前記領域情報が読み出されるたびに前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出すトランザクション情報読出部と、
前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に読み出された前記トランザクション情報に基づいて当該レスポンスを前記マスタへ転送する相互接続部と
を具備する相互接続装置。
【請求項7】
前記管理情報書込部は、
前記リクエストに基づいて前記管理情報を前記トランザクション情報書込領域のいずれかに書き込む管理情報書込処理部と
前記リクエストにおいて前記トランザクション識別子から前記部分ビット列を除く第1の識別子処理部と、
を備え、
前記管理情報読出部は、
前記領域情報の示す前記トランザクション情報書込領域から前記トランザクション情報を読み出す管理情報読出処理部と、
前記レスポンスにおいて前記読み出された管理情報に含まれる前記部分ビット列と前記グループ識別子とから前記トランザクション識別子を生成する第2の識別子処理部と
を備える請求項6記載の相互接続装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate


【公開番号】特開2012−150735(P2012−150735A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−10324(P2011−10324)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】