JP2012118906A - 相互接続装置、および、その制御方法 - Google Patents

相互接続装置、および、その制御方法 Download PDF

Info

Publication number
JP2012118906A
JP2012118906A JP2010270066A JP2010270066A JP2012118906A JP 2012118906 A JP2012118906 A JP 2012118906A JP 2010270066 A JP2010270066 A JP 2010270066A JP 2010270066 A JP2010270066 A JP 2010270066A JP 2012118906 A JP2012118906 A JP 2012118906A
Authority
JP
Japan
Prior art keywords
management information
information
unit
buffer
management
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010270066A
Other languages
English (en)
Inventor
Hitoshi Kai
斉 甲斐
Hiroshi Kobayashi
浩 小林
Takeshi Miura
剛 三浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2010270066A priority Critical patent/JP2012118906A/ja
Publication of JP2012118906A publication Critical patent/JP2012118906A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制する。
【解決手段】バッファ220は、トランザクション処理を識別するための識別情報とリクエストの各々の発行順序を特定するための順序情報とをレスポンスの各々の転送処理を制御するためのトランザクション情報に対応付けて管理情報として保持する。バッファ管理部230は、マスタからリクエストが発行された場合にリクエストに基づいて管理情報をバッファに格納し、スレーブからレスポンスが返送された場合にレスポンスに係る識別情報を含む管理情報内のトランザクション情報をトランザクション情報に対応する順序情報に従ってバッファから読み出す。相互接続部は、リクエストをスレーブへ転送し、順序情報に従って読み出されたトランザクション情報に基づいてレスポンスの各々をマスタへ転送する。
【選択図】図7

Description

本発明は、相互接続装置に関し、特にスプリットトランザクションを許容してデータを転送する相互接続装置、および、その制御方法に関する。
従来、あるモジュールから別のモジュールへデータを転送する場合に、モジュール間をバスにより接続する手法がとられることが多い。モジュールのうち、データ転送を主導するモジュールはマスタと呼ばれ、受動的に動作するモジュールはスレーブと呼ばれる。マスタとなるモジュールとしては、例えばプロセッサが想定される。スレーブとなるモジュールとしては、例えばメモリが想定される。
バス幅やエンディアン方式の異なる複数のバスを備えるバスシステムにおいては、バス幅等の相違に応じてデータ変換を行うバスブリッジが設けられることがある。このバスブリッジに各バスを接続することにより、バス間でのデータ転送が可能となる。これらのバスやバスブリッジは、インターコネクトとも呼ばれる。
このようなバスシステムにおいては、スプリットトランザクションを許容することにより、転送効率を向上させることができる。スプリットトランザクションとは、データ転送のための一連の動作(トランザクション)のうち、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御することである。スプリットトランザクションを許容するバス規格としては、AXI(Advanced eXtensible Interface)バスなどがある。
スプリットトランザクションを許容する場合、バスブリッジ等のインターコネクトは、マスタ・スレーブ間でやりとりされる転送が未解決(outstanding)の間、その転送に関するトランザクション情報を保持しておく必要がある。ここで、未解決とは、要求されたデータ転送が完了していない状態である。また、トランザクション情報とは、レスポンスの転送の制御に必要な情報である。例えば、トランザクション情報は、バースト転送を行なう場合のバースト長やバースト数を含む情報である。
スプリットトランザクションにおいて、インターコネクトがトランザクション情報を保持する必要性について説明する。M1およびM2の2つのマスタとS1およびS2の2つのスレーブとがインターコネクトに接続されたバスシステムを想定する。このバスシステムにおいて、M1がS1に対してデータ転送を要求するリクエストAを発行したあと、M2がS2に対してデータ転送を要求するリクエストBを発行したとする。リクエストAは、バースト転送を要求するものであり、リクエストBは、バースト転送を要求しないものである。スレーブS1およびS2は、それぞれ対応するリクエストに応じてレスポンスを返送するが、これらのレスポンスの返送の順番は、リクエストA、Bの発行の順番と同じとは限らない。このような場合、インターコネクトは、いずれのレスポンスをバースト転送すべきかを判断するために、それぞれの転送が未解決の間、各リクエストに対応するトランザクション情報を保持しておく必要がある。保持しておいたトランザクション情報を参照することにより、インターコネクトは、データ転送を適切に制御することができる。
AXIバスにおいてトランザクション情報を保持しておく手法として、FIFO(First In First Out)をトランザクションごとに設けたバスシステムが提案されている(例えば、特許文献1参照。)。各FIFOの段数は、許容される未解決の転送数の最大値以上とされる。インターコネクトは、各リクエストに対応するトランザクション情報を、そのリクエストに係るトランザクションに対応するFIFOに格納しておく。この構成によれば、インターコネクトは、FIFO内からトランザクション情報を読み出すときに、対応するトランザクションを検索する必要がなくなるため、トランザクション情報の読出し処理を高速に行うことができる。
特開2008−41099号公報
しかしながら、上述の従来技術では、バスシステムが許容するトランザクションの数の最大値の増大に伴うFIFOのサイズの増大を抑制することが困難であった。FIFOをトランザクションごとに設ける場合、トランザクションの数だけFIFOを設ける必要がある。このため、バスシステムが許容するトランザクション数の最大値の増大に比例して、各FIFOの合計の記憶容量が増大してしまう。
本発明はこのような状況に鑑みてなされたものであり、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制することを目的とする。
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、一連のリクエストの転送処理と上記一連のリクエストに対応する一連のレスポンスの転送処理とをトランザクション処理として当該トランザクション処理を識別するための識別情報と上記リクエストの各々の発行順序を特定するための順序情報とを上記レスポンスの各々の転送処理を制御するためのトランザクション情報に対応付けて管理情報として保持するバッファと、マスタから上記リクエストが発行された場合に当該リクエストに基づいて上記管理情報を上記バッファに格納し、スレーブから上記レスポンスが返送された場合に当該レスポンスに係る上記識別情報を含む上記管理情報内の上記トランザクション情報を上記順序情報に従って上記バッファから読み出すバッファ管理部と、上記マスタから上記リクエストが発行された場合に当該リクエストを上記スレーブへ転送し、上記スレーブから上記レスポンスが返送された場合に上記順序情報に従って読み出された上記トランザクション情報に基づいて当該レスポンスの各々を上記マスタへ転送する相互接続部とを具備する相互接続装置、および、その制御方法である。これにより、リクエストの発行順序に従ってレスポンスを転送するという作用をもたらす。
また、この第1の側面において、上記順序情報は、上記リクエストの発行順序を示す管理番号を含み、上記バッファ管理部は、上記マスタから上記リクエストが発行された場合に当該リクエストに基づいて上記管理情報を上記バッファに格納する新規管理情報登録部と、上記スレーブから上記レスポンスが返送された場合に当該レスポンスに係る上記識別情報を含む上記トランザクション情報を上記管理番号の順に上記バッファから読み出すレスポンス処理部とを具備してもよい。これにより、リクエストの発行順序を示す管理番号の順にレスポンスを転送するという作用をもたらす。
また、この第1の側面において、上記順序情報は、上記新規管理情報登録部により格納された上記管理情報が上記バッファ内の上記識別情報が同一の上記管理情報のうちの上記発行順序における先頭であることを示す先頭フラグをさらに含むこととしてもよい。これにより、発行順序における先頭の管理情報を容易に読み出すことができるという作用をもたらす。
また、この第1の側面において、上記レスポンス処理部は、上記スレーブから上記レスポンスが返送された場合に当該レスポンスに係る上記識別情報を含む上記管理情報のうちの上記先頭フラグに対応するトランザクション情報を上記バッファから読み出すとともに上記先頭フラグを無効にする先頭管理情報更新部と、上記先頭更新部により読み出された上記管理情報の上記発効順序における次の管理情報内の上記先頭フラグを有効にする次管理情報更新部とを具備してもよい。これにより、読み出した管理情報の先頭フラグを無効にし、次の管理情報の先頭フラグを有効にするという作用をもたらす。
また、この第1の側面において、上記順序情報は、上記新規登録部により格納された上記管理情報が上記バッファ内の上記識別情報が同一の上記管理情報のうちの上記発行順序における末尾であることを示す末尾フラグをさらに含むこととしてもよい。これにより、発行順序における末尾の管理情報を容易に参照できるという作用をもたらす。
また、この第1の側面において、上記新規管理情報登録部は、上記リクエストが発行された場合に当該リクエストに係る上記識別情報を含む上記管理情報内の上記管理番号のうちの上記末尾フラグに対応する上記管理番号を末尾番号として上記末尾番号の次の管理番号と有効の上記末尾フラグとを含む上記順序情報を上記トランザクション情報に対応付けて上記バッファに格納し、上記バッファ管理部は、上記末尾番号に対応する上記末尾フラグを無効にする既存管理情報更新部をさらに具備してもよい。これにより、発行順序における末尾の管理番号の次の管理番号をトランザクション情報に対応付けることができるという作用をもたらす。
また、この第1の側面において、上記順序情報は、上記バッファ管理部により格納された上記管理情報の上記発行順序における次の上記管理情報が格納されている位置を示す次位置情報を含むこととしてもよい。これにより、発行順序における次の管理番号の格納場所を参照できるという作用をもたらす。
また、この第1の側面において、上記バッファ管理部は、上記リクエストが発行された場合に当該リクエストに基づいて上記識別情報および上記順序情報を上記トランザクション情報に対応付けた上記管理情報を新規管理情報として上記新規管理情報を格納する位置を示す上記次位置情報を上記新規管理情報に含めて上記バッファに格納する新規管理情報登録部と、上記リクエストの転送処理に係る上記識別情報を含む上記管理情報のうちの上記発行順序における末尾の管理情報が含む上記次位置情報を上記新規管理情報の位置を示す上記次位置情報により更新する既存管理情報更新部と、上記レスポンスが返送された場合に当該レスポンスに係る上記識別情報を含む上記トランザクション情報を上記順序情報に従って上記バッファから読み出すレスポンス処理部とを具備してもよい。これにより、末尾の管理情報が含む次位置情報を新規管理情報の位置を示す次位置情報により更新するという作用をもたらす。
また、この第1の側面において、上記順序情報は、上記新規登録部により格納された上記管理情報が上記バッファ内の上記識別情報が同一の上記管理情報のうちの上記発行順序における先頭であることを示す先頭フラグをさらに含むこととしてもよい。これにより、発行順序における先頭の管理情報を容易に読み出すことができるという作用をもたらす。
また、この第1の側面において、上記レスポンス処理部は、上記レスポンスが返送された場合に当該レスポンスの転送処理に係る上記識別情報を含む上記管理情報のうちの上記先頭フラグに対応する上記トランザクション情報を上記バッファから読み出すとともに上記先頭フラグを無効にする先頭管理情報更新部と、上記先頭更新部により読み出された上記管理情報の上記発行順序における次の管理情報内の上記先頭フラグを有効にする上記バッファに格納する次管理情報更新部とを具備してもよい。これにより、読み出した管理情報の先頭フラグを無効にし、次の管理情報の先頭フラグを有効にするという作用をもたらす。
本発明によれば、バスシステムが許容するトランザクション数の最大値の増大に伴う記憶容量の増大を抑制するという優れた効果を奏し得る。
本発明の第1の実施の形態におけるバスシステムの一構成例を示す全体図である。 AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。 AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。 AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。 AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。 AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。 本発明の第1の実施の形態におけるバスブリッジの一構成例を示すブロック図である。 本発明の第1の実施の形態における管理情報が含む情報の一例を示す図である。 本発明の第1の実施の形態における相互接続部の一構成例を示すブロック図である。 本発明の第1の実施の形態におけるバッファの一構成例を示す図である。 本発明の第1の実施の形態におけるバッファ管理部の一構成例を示すブロック図である。 本発明の第1の実施の形態における新規管理情報登録部の一構成例を示すブロック図である。 本発明の第1の実施の形態における末尾管理情報取得部の一構成例を示すブロック図である。 本発明の第1の実施の形態における新規管理情報設定部の一構成例を示すブロック図である。 本発明の第1の実施の形態における新規管理情報設定回路の動作の一例を示す図である。 本発明の第1の実施の形態におけるレスポンス処理部の一構成例を示すブロック図である。 本発明の第1の実施の形態における先頭管理情報取得部の一構成例を示すブロック図である。 本発明の第1の実施の形態における先頭管理情報更新部の動作の一例を示す図である。 本発明の第1の実施の形態におけるバッファ管理部の動作の一例を示すフローチャートである。 本発明の第1の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。 本発明の第1の実施の形態におけるレスポンス処理の一例を示すフローチャートである。 本発明の第2の実施の形態における管理情報が含む情報の一例を示す図である。 本発明の第2の実施の形態における新規管理情報設定回路の動作の一例を示す図である。 本発明の第2の実施の形態におけるレスポンス処理部の一構成例を示すブロック図である。 本発明の第2の実施の形態における先頭管理情報取得部の一構成例を示すブロック図である。 本発明の第2の実施の形態における次管理情報更新部の一構成例を示すブロック図である。 本発明の第2の実施の形態における次管理情報判断回路群の一構成例を示すブロック図である。 本発明の第2の実施の形態における次管理情報更新回路の動作の一例を示す図である。 本発明の第2の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。 本発明の第2の実施の形態におけるレスポンス処理の一例を示すフローチャートである。 本発明の第3の実施の形態における管理情報が含む情報の一例を示す図である。 本発明の第3の実施の形態におけるバッファ管理部の一構成例を示すブロック図である。 本発明の第3の実施の形態における末尾管理情報取得部の一構成例を示すブロック図である。 本発明の第3の実施の形態における新規管理情報設定回路の動作の一例を示す図である。 本発明の第3の実施の形態における既存管理情報更新部の動作の一例を示す図である。 本発明の第3の実施の形態におけるバッファ管理部の動作の一例を示すフローチャートである。 本発明の第3の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。 本発明の第3の実施の形態における既存管理情報更新処理の一例を示すフローチャートである。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第3の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第4の実施の形態における管理情報が含む情報の一例を示す図である。 本発明の第4の実施の形態におけるバッファ管理部の一構成例を示すブロック図である。 本発明の第4の実施の形態における新規管理情報登録部の一構成例を示すブロック図である。 本発明の第4の実施の形態における末尾管理情報取得部の一構成例を示すブロック図である。 本発明の第4の実施の形態における新規管理情報設定回路の動作の一例を示す図である。 本発明の第4の実施の形態における既存管理情報更新部の動作の一例を示す図である。 本発明の第4の実施の形態における先頭管理情報取得部の一構成例を示すブロック図である。 本発明の第4の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。 本発明の第4の実施の形態における既存管理情報更新処理の一例を示すフローチャートである。 本発明の第5の実施の形態における管理情報が含む情報の一例を示す図である。 本発明の第5の実施の形態における新規管理情報設定回路の動作の一例を示す図である。 本発明の第5の実施の形態における次管理情報更新部の一構成例を示すブロック図である。 本発明の第5の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。 本発明の第5の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第5の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。 本発明の第5の実施の形態におけるバッファ管理部の動作結果の一例を説明するための図である。
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(管理情報としてシリアルナンバーを含む例)
2.第2の実施の形態(管理情報として先頭フラグをさらに含む例)
3.第3の実施の形態(管理情報として末尾フラグをさらに含む例)
4.第4の実施の形態(管理情報としてネクストエントリを含む例)
5.第5の実施の形態(管理情報として先頭フラグをさらに含む例)
<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に接続されている。
マスタ110はデータ転送を主導する接続機器であり、スレーブ140は受動的に動作する接続機器である。マスタ110としては、例えばプロセッサが想定される。スレーブ140としては、例えばメモリが想定される。
AXIバス120および130は、AXIプロトコルに従ってデータを転送するバスである。バスブリッジ200は、AXIプロトコルに従ってデータを転送し、そのデータ転送において必要に応じてデータ変換を行うものである。例えば、バスブリッジ200は、AXIバス120および130のそれぞれのバス幅やエンディアン方式が異なる場合に、転送先のバスのバス幅等に合わせてデータ変換を行う。
ここで、AXIプロトコルでは、リード動作のためのパスとして、リードアドレスチャネルおよびリードデータチャネルが用意されている。マスタ110からリードアドレスチャネルを介してスレーブ140にリードアドレスを含むリクエストが転送されると、これに応答してリードデータチャネルを介してスレーブ140からマスタ110にリードデータが転送される。また、AXIプロトコルでは、ライト動作のためのパスとして、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルが用意されている。マスタ110からライトアドレスチャネルおよびライトデータチャネルを介してスレーブ140にリクエストが転送されると、これに応答してスレーブ140においてライト動作が行われる。そして、そのライト動作の結果が、ライトレスポンスチャネルを介してスレーブ140からマスタ110に転送される。
以下、マスタからスレーブへリードアドレスチャネルおよびライトアドレスチャネルを介して転送される信号をリクエストと称する。また、スレーブからマスタへリードデータチャネルおよびライトレスポンスチャネルを介して転送される信号をレスポンスと称する。
AXIプロトコルにおいては、リクエストの転送処理と、そのリクエストに対応するレスポンスの転送処理とが1つのトランザクションの処理を形成する。1つのトランザクションに含まれるリクエストおよびレスポンスには同じ識別子が付与されるのがAXIプロトコルにおける原則である。また、異なるトランザクション間で同じ識別子を付与した場合には、それらのトランザクション間において順序保証が行われる。
なお、上述の実施の形態のバスブリッジ200は、特許請求の範囲に記載の相互接続装置の一例である。
[AXIプロトコルにおけるチャネル構成]
図2は、AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。リードアドレスチャネルは、リードアドレスをマスタ110からスレーブ140に伝達するためのチャネルである。このリードアドレスチャネルは、リードアドレス識別子、リードアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、リードアドレスバリッド、リードアドレスレディの各信号からなる。これらの信号のうち、リードアドレスレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
リードアドレス識別子ARID[3:0]は、信号のリードアドレスグループを識別するための4ビットのタグである。AXIプロトコルでは、マスタがトランザクションを発行する際に、スレーブに対して順序関係を維持することを要求する場合には、同じ識別子を付与することとされている。換言すれば、識別子が異なるトランザクション間では順序関係が維持される保証はない。
リードアドレスARADDR[31:0]は、リード対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
バースト長ARLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。「1」から「16」の何れかのデータ数が4ビットにエンコードされて示される。
バーストサイズARSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。「20」、「21」、「22」、「23」、「24」、「25」、「26」、「27」の何れかの転送サイズが3ビットにエンコードされて示される。
バーストタイプARBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。具体的には、FIFO型、連続アクセス、キャッシュラインの何れかのタイプを指定できるようになっている。
ロックタイプARLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。具体的には、ノーマルアクセス、排他的アクセス、ロック付きアクセスの何れかのタイプを指定できるようになっている。
キャッシュタイプARCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。具体的には、キャッシュ可能か否か、ライトスルーかライトバックか等の制御情報が示される。
プロテクションタイプARPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。具体的には、特権アクセス、非セキュアアクセス、インストラクションアクセスの各プロテクションレベルを指定できるようになっている。
リードアドレスバリッドARVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。リードアドレスレディARREADYは、スレーブ140がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードアドレスバリッドARVALIDおよびリードアドレスレディARREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
図3は、AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。リードデータチャネルは、リードデータをスレーブ140からマスタ110に転送するためのチャネルである。このリードデータチャネルは、リード識別子タグ、リードデータ、リードレスポンス、リードラスト、リードバリッド、リードレディの各信号からなる。これらの信号のうち、リードレディのみがマスタ110からの信号であり、これ以外はスレーブ140からの信号である。
リード識別子タグRID[3:0]は、信号のリードデータグループを識別するための4ビットのタグである。このリード識別子タグRID[3:0]はスレーブにおいて生成されるものであり、同一のトランザクションにおいてリードアドレス識別子ARID[3:0]と一致していなければならない。
リードデータRDATA[31:0]は、リードトランザクションによるスレーブ140からのリードデータである。ここでは32ビット幅のリードデータバスを想定したが、RDATAのビット幅はリードデータバス幅に応じて変化する。リードデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
リードレスポンスRRESP[1:0]は、リードトランザクションによるデータ転送の状態を示す2ビットの信号である。例えば、リードレスポンスには、リードアクセスの成功または失敗を示す信号が含まれる。
リードラストRLASTは、当該データがリードトランザクションにおける最終のデータ転送である旨を示す信号である。
リードバリッドRVALIDは、要求されたリードデータの有効性を示すバリッド信号である。リードレディRREADYは、マスタ110がリードデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードバリッドRVALIDおよびリードレディRREADYがともにアサートされているときに、リードデータの転送が行われる。
図4は、AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。ライトアドレスチャネルは、ライトアドレスをマスタ110からスレーブ140に伝達するためのチャネルである。このライトアドレスチャネルは、ライトアドレス識別子、ライトアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、ライトアドレスバリッド、ライトアドレスレディの各信号からなる。これらの信号のうち、ライトアドレスレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
ライトアドレス識別子AWID[3:0]は、信号のライトアドレスグループを識別するための4ビットのタグである。ライトアドレスAWADDR[31:0]は、ライト対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
バースト長AWLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。バーストサイズAWSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。バーストタイプAWBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。ロックタイプAWLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。キャッシュタイプAWCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。プロテクションタイプAWPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。これらは基本的にリードアドレスチャネルの場合と同様である。
ライトアドレスバリッドAWVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。ライトアドレスレディAWREADYは、スレーブ140がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトアドレスバリッドAWVALIDおよびライトアドレスレディAWREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
図5は、AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。ライトデータチャネルは、ライトデータをマスタ110からスレーブ140に転送するためのチャネルである。このライトデータチャネルは、ライト識別子タグ、ライトデータ、ライトストローブ、ライトラスト、ライトバリッド、ライトレディの各信号からなる。これらの信号のうち、ライトレディのみがスレーブ140からの信号であり、これ以外はマスタ110からの信号である。
ライト識別子タグWID[3:0]は、信号のライトデータグループを識別するための4ビットのタグである。このライト識別子タグWID[3:0]は、同一のトランザクションにおいてライトアドレス識別子AWID[3:0]と一致していなければならない。
ライトデータWDATA[31:0]は、ライトトランザクションによるスレーブ140へのライトデータである。ここでは32ビット幅のライトデータバスを想定したが、WDATAのビット幅はリードデータバス幅に応じて変化する。ライトデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
ライトストローブWSTRB[3:0]は、スレーブ140のメモリにおいて更新されるべきバイト位置を示す4ビットの信号である。ライトデータバスの8ビット毎にライトストローブWSTRB[3:0]の1ビットが割り当てられる。すなわち、WSTRB[i]は、WDATA[(8×i)+7:(8×i)]に対応する。
ライトラストWLASTは、当該データがライトトランザクションにおける最終のデータ転送である旨を示す信号である。
ライトバリッドWVALIDは、ライトデータの有効性を示すバリッド信号である。ライトレディWREADYは、スレーブ140がライトデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトバリッドWVALIDおよびライトレディWREADYがともにアサートされているときに、ライトデータの転送が行われる。
図6は、AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。ライトレスポンスチャネルは、ライトトランザクションの結果をスレーブ140からマスタ110に伝達するためのチャネルである。このライトレスポンスチャネルは、レスポンス識別子、ライトレスポンス、ライトレスポンスバリッド、レスポンスレディの各信号からなる。これらの信号のうち、レスポンスレディのみがマスタ110からの信号であり、これ以外はスレーブ140からの信号である。
レスポンス識別子BID[3:0]は、ライトレスポンスを識別するための4ビットのタグである。このレスポンス識別子BID[3:0]は、同一のトランザクションにおいてライトアドレス識別子AWID[3:0]と一致していなければならない。
ライトレスポンスBRESP[1:0]は、ライトトランザクションによるデータ転送の状態を示す2ビットの信号である。例えば、ライトレスポンスには、ライトアクセスの成功または失敗を示す信号が含まれる。
ライトレスポンスバリッドBVALIDは、ライトレスポンスの有効性を示すバリッド信号である。レスポンスレディBREADYは、マスタ110がライトレスポンスを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトレスポンスバリッドBVALIDおよびレスポンスレディBREADYがともにアサートされているときに、ライトレスポンスの伝達が行われる。
[バスブリッジの構成]
図7は、本発明の第1の実施の形態におけるバスブリッジ200の一構成例を示すブロック図である。バスブリッジ200は、相互接続部210、バッファ220、および、バッファ管理部230を備える。
相互接続部210は、リクエストおよびレスポンスをマスタ110およびスレーブ140間で転送するものである。詳細には、AXIバス120から信号線802を介してリクエストを受信した場合、相互接続部210は、そのリクエストをバッファ管理部230に信号線804を介して出力する。そして、相互接続部210は、バッファ管理部230から信号線807を介してバッファフル通知を受け取った場合、そのバッファフル通知をAXIバス120に信号線801を介して送信する。リクエストを受け取ったバッファ管理部230がバッファフル通知を発行しないのであれば、相互接続部210は、そのリクエストをAXIバス130に信号線811を介して転送する。
また、AXIバス130から信号線812を介してレスポンスを受信した場合、相互接続部210は、そのレスポンスをバッファ管理部230に信号線805を介して出力する。そして、相互接続部210は、バッファ管理部230から信号線806を介してレスポンスに対応するトランザクション情報を受け取る。ここで、トランザクション情報は、レスポンスの転送処理を制御するための情報である。トランザクション情報に含まれる情報の詳細については、図8を参照して後述する。相互接続部210は、受け取ったトランザクション情報に基づき、受信したレスポンスをAXIバス120へ信号線803を介して転送する。
バッファ220は、管理情報を保持するものである。ここで、管理情報とは、トランザクション識別情報および順序情報をトランザクション情報に対応付けた情報である。トランザクション識別情報は、トランザクションを識別するための情報であり、例えば、AXIプロトコルにおける識別子IDである。順序情報は、リクエストの発行順序を特定するための情報である。順序情報が含む情報の詳細については、図8を参照して後述する。バッファ220は、信号線809および810を介してバッファ管理部230から管理情報を受け取った場合、その管理情報を保持する。
バッファ管理部230は、リクエストに基づいてバッファ220に管理情報を格納し、レスポンスに対応するトランザクション情報をバッファ220から読み出すものである。詳細には、リクエストを相互接続部210から受け取った場合、バッファ管理部230は、信号線808を介してバッファ220に格納されている管理情報を参照し、バッファ220に新たに管理情報を格納できるか否かを判断する。バッファ220が満杯で格納できないのであれば、バッファ管理部230は、その旨を示すバッファフル通知を相互接続部210に通知する。バッファ220が満杯でなければ、バッファ管理部230は、リクエストに基づいて管理情報を生成し、バッファ220に信号線809を介して格納する。レスポンスを相互接続部210から受け取った場合、バッファ管理部230は、そのレスポンスに対応するトランザクション情報をバッファ220から信号線808を介して読み出す。バッファ管理部230は、読み出したトランザクション情報を相互接続部210に出力する。
図8は、本発明の第1の実施の形態における各管理情報の一例を示す図である。各管理情報は、有効フラグV、トランザクション識別情報id、順序情報、および、トランザクション情報を含む。
有効フラグVは、当該管理情報が有効であるか否かを示す1ビットの情報である。管理情報が有効とは、当該管理情報内のトランザクション情報が読み出す対象としてバッファ220に格納されている状態である。管理情報が無効とは、当該管理情報内のトランザクション情報が読み出す対象とされていない状態である。より具体的には、管理情報が格納されてから、その管理情報内に対応するレスポンスの転送が解決するまでの間、管理情報は有効となる。例えば、管理情報が有効である場合に有効フラグVに「1」が設定され、無効である場合に「0」が設定される。
トランザクション識別情報idは、トランザクションを識別するための情報である。トランザクション識別情報idがとりうる値の個数は、バスシステムが許容するトランザクション数の最大値以上とされる。例えば、最大256個のトランザクションが許容される場合、少なくとも8ビットの情報がトランザクション識別情報idとして設定される。
順序情報は、リクエストの発行順序を特定するための情報である。順序情報は、シリアルナンバーSNを含む。シリアルナンバーSNは、リクエストの発行順序を示す管理番号である。シリアルナンバーSNがとりうる値の個数は、バスシステムが許容する未解決のトランザクション数の最大値以上とされる。例えば、未解決のトランザクション数が最大16個まで許容される場合、少なくとも4ビットの情報がシリアルナンバーSNとして設定される。
トランザクション情報は、レスポンスの転送処理を制御するための情報である。トランザクション情報は、例えば、パッキング実施フラグp、アドレス下位ビットaddr、バースト長len、バーストサイズsize、バーストタイプbtyp、および、バーストカウントbcntを含む。
パッキング実施フラグpは、バースト対象のデータのパッキングを実行するか否かを示す1ビットの情報である。アドレス下位ビットaddrは、アクセス先の下位アドレスを特定するための4ビットの情報である。バースト長lenは、バースト転送のデータ数を示す4ビットの情報である。バーストサイズsizeは、バースト転送の各回における転送サイズを示す3ビットの情報である。バーストタイプbtypは、バースト転送のアドレス計算のタイプを示す2ビットの信号である。バーストカウントbcntは、バースト転送の回数を示す4ビットの情報である。
なお、上述の実施の形態のシリアルナンバーSNは、特許請求の範囲に記載の管理番号の一例である。
図9は、本発明の第1の実施の形態における相互接続部210の一構成例を示すブロック図である。相互接続部210は、変換情報生成器211および213と、アドレスチャネルバスマトリクス212と、レスポンスチャネルバスマトリクス214とを備える。
変換情報生成器211は、AXIバス120から受信したリクエストをAXIバス130の仕様に基づき必要に応じて変換するものである。変換情報生成器211は、AXIバス120からリクエストを受信した場合、リクエストをバッファ管理部230に出力する。そして、変換情報生成器211は、リクエストに応じてバッファ管理部230がバッファフル通知を発行したか否かを判断する。バッファフル通知が発行されたのであれば、変換情報生成器211は、そのリクエストを転送せず、発行元のマスタにバッファフル通知を送信する。例えば、変換情報生成器211は、AXIプロトコルのリードアドレスチャネルにおけるリードアドレスレディ(ARREADY)に「0」を設定した信号をバッファフル通知として送信する。バッファフル通知が発行されなかったのであれば、変換情報生成器211は、AXIバス120から受信したリクエストを必要に応じて変換してアドレスチャネルバスマトリクス212に出力する。
アドレスチャネルバスマトリクス212は、変換情報生成器211から受け取ったリクエストを送信先のスレーブへAXIバス130を介して転送するものである。
変換情報生成器213は、AXIバス130から受信したレスポンスをAXIバス120の仕様およびトランザクション情報に基づき必要に応じて変換するものである。変換情報生成器213は、AXIバス130からレスポンスを受信した場合、そのレスポンスに対応するトランザクション情報をバッファ管理部230から受け取る。変換情報生成器213は、そのトランザクション情報とAXIバス130の仕様とに基づき、必要に応じてレスポンスを変換してレスポンスチャネルバスマトリクス214に出力する。例えば、変換情報生成器213は、トランザクション情報の示すバースト転送の方式や転送先のバスのバス幅等に応じて転送データを結合または分割する。
レスポンスチャネルバスマトリクス214は、変換情報生成器213から受け取ったレスポンスをリクエストの送信元のマスタへAXIバス120を介して転送するものである。
図10は、本発明の第1の実施の形態におけるバッファ220の一構成例を示す図である。バッファ220は、複数のデータを保持する領域を備える。以下、各領域をエントリと称する。各エントリには、管理情報が格納される。バッファ管理部230は、管理情報の格納順に関らず、各エントリに格納された管理情報にビット単位でランダムにアクセス可能である。バッファ220には、バスシステムが許容する未解決の転送数の最大値以上の数のエントリが設けられる。例えば、バスシステムが最大16個の未解決の転送を許容する場合、バッファ220に少なくとも16個のエントリが設けられる。各エントリの格納位置を行、エントリ内の各情報の格納位置を列とする。ある行の有効フラグVの列に「0」の値のデータが設定されている場合、その行に対応するエントリは空いているものとし、「1」の値のデータが設定されている場合、その行に対応するエントリには管理情報が格納されているものとする。例えば、エントリ#1乃至16が設けられている場合を想定する。エントリ#1および3の有効フラグVに「1」が設定されており、残りのエントリの有効フラグVに「0」が設定されているものとする。このとき、エントリ#1および3には管理情報が格納されており、残りのエントリは空の状態である。
図10に例示したように、このバッファ220は、バスシステムが許容する未解決の転送数の最大値(例えば、16個)の管理情報を保持する分だけの容量しか必要としない。このため、バスシステムが許容するトランザクション数の最大値が増大した場合であっても、管理情報のトランザクション識別情報id列の幅を必要に応じて大きくするだけで対応することができる。例えば、トランザクション数の最大値を256個から512個にする場合、トランザクション識別情報idの列に割り当てるビット数を8ビットから9ビットにするだけで対応することができる。従って、バッファ220のサイズ、すなわち記憶容量の増大を抑制することができる。
図11は、本発明の第1の実施の形態におけるバッファ管理部230の一構成例を示すブロック図である。バッファ管理部230は、新規管理情報登録部240およびレスポンス処理部270を備える。
新規管理情報登録部240は、相互接続部210からのリクエストに基づいて管理情報をバッファ220に格納するものである。新規管理情報登録部240は、相互接続部210からリクエストを受け取った場合、信号線808を介してバッファ220内の各エントリにアクセスして、エントリに空きがあるか否かを判断する。空きが無い場合、新規管理情報登録部240は、バッファフル通知を発行して相互接続部210に返す。空きがある場合、新規管理情報登録部240は、空いているエントリのいずれかを選択して、そのエントリにリクエストに基づいて生成した管理情報を格納する。管理情報は信号線809を介してバッファ220に出力される。エントリが複数空いている場合のエントリの選択方法は任意である。例えば、新規管理情報登録部240は、各エントリに固定の優先度を設けておいて優先度に従って選択したり、最も使用頻度の少ないエントリを選択したりする。
レスポンス処理部270は、相互接続部210からのレスポンスに対応するトランザクション情報を順序情報に従ってバッファ220から読み出すものである。レスポンス処理部270は、相互接続部210からレスポンスを受け取った場合、そのレスポンスに対応するトランザクション情報を順序情報に従って信号線808を介してバッファ220から読み出す。具体的には、レスポンス処理部270は、レスポンスが含む識別子IDと同じトランザクション識別情報idが設定された管理情報のうちのシリアルナンバーSNが最も小さい管理情報内のトランザクション情報を読み出す。レスポンス処理部270は、信号線810を介してバッファ220にアクセスし、トランザクション情報を読み出した管理情報内の有効フラグVに「0」の値を設定してエントリを空にする。そして、レスポンス処理部270は、読み出したトランザクション情報を相互接続部210に出力する。
図12は、本発明の第1の実施の形態における新規管理情報登録部240の一構成例を示すブロック図である。新規管理情報登録部240は、発行識別子(ID)取得回路241と、末尾管理情報取得部250と、新規管理情報設定部260とを備える。
発行ID取得回路241は、リクエストから識別子IDを取得するものである。図2を参照して説明したようにリードアドレスチャネルを構成する信号には、リードアドレス識別子ARIDが含まれる。また、図4を参照して説明したようにライトアドレスチャネルを構成する信号には、ライトアドレス識別子AWIDが含まれ、図5参照して説明したようにライトデータチャネルを構成する信号には、ライト識別子タグWIDが含まれる。これらは、マスタが発行した識別子IDであるから、以下、リードアドレス識別子ARID、ライトアドレス識別子AWID、および、ライト識別子タグWIDを発行IDと称する。発行ID取得回路241は、リクエストから発行IDを取り出し、信号線821を介して末尾管理情報取得部250に出力する。
末尾管理情報取得部250は、各エントリにおける、有効フラグV、トランザクション識別情報id、および、シリアルナンバーSNと発行IDとに基づいて発行順序における末尾の管理情報を取得するものである。具体的には、末尾管理情報取得部250は、有効フラグVが「1」であり、かつ、トランザクション識別情報idが発行IDと一致する管理情報のうちのシリアルナンバーSNが最大の管理情報を末尾として求める。末尾の管理情報のシリアルナンバーSNを末尾ナンバーSN_Lとして、末尾管理情報取得部250は、末尾ナンバーSN_Lと、その管理情報の格納位置とを新規管理情報設定部260に出力する。バッファ220内のエントリ数と同じビット数のデータが管理情報の格納位置として出力される。例えば、16個のエントリが設けられている場合、LD#1乃至16のビットデータが格納位置として出力される。各LD#i(iは1乃至16の整数)には、対応するエントリに末尾の管理情報が格納されている場合に「1」が設定され、そうでない場合に「0」が設定されるものとする。LD#1乃至16は、信号線822を介して出力され、末尾ナンバーSN_Lは、信号線823を介して出力される。
新規管理情報設定部260は、リクエストに基づいて管理情報に各情報を設定するものである。新規管理情報設定部260は、相互接続部210からリクエストを受け取った場合、バッファ220の各エントリの有効フラグVを参照してバッファ220内に空きがあるか否かを判断する。空きがなければ、新規管理情報設定部260は、バッファフル通知を相互接続部210に返す。空きがあれば、新規管理情報設定部260は、空いているエントリのいずれかを選択する。新規管理情報設定部260は、選択したエントリにおいて、リクエスト、LD#1乃至16、および、末尾ナンバーSN_Lに基づいて管理情報を設定する。管理情報の設定内容の詳細については、図15を参照して後述する。
図13は、本発明の第1の実施の形態における末尾管理情報取得部250の一構成例を示すブロック図である。末尾管理情報取得部250は、シリアルナンバー(SN)取得回路群251および最大シリアルナンバー(SN)選択部256を備える。
SN取得回路群251は、有効フラグVが「1」であり、かつ、トランザクション識別情報idが発行IDと一致する各管理情報のシリアルナンバーSNを取得するものである。SN取得回路群251は、エントリの数(例えば、16個)と同数のシリアルナンバー(SN)取得回路252を備える。各SN取得回路252は、識別子(ID)一致判断部253、AND(論理積)ゲート254、および、スイッチ255を備える。
ID一致判断部253は、発行IDと、対応するエントリに格納されたトランザクション識別情報idとが一致するか否かを判断するものである。ID一致判断部253は、発行IDとトランザクション識別情報idとが一致するか否かを判断し、判断結果をANDゲート254に出力する。例えば、一致する場合に「1」、そうでない場合に「0」の値が設定される1ビットの信号が判断結果として出力される。
ANDゲート254は、入力値の論理積を出力するものである。ANDゲート254は、2つの入力端子と出力端子とを備える。入力端子の一方には、対応するエントリの有効フラグVの値が入力され、他方には、ID一致判断部253による判断結果が入力される。ANDゲート254は、これらの入力値の論理積をスイッチ255に出力する。
スイッチ255は、ANDゲートの254の出力値に基づいてSN取得回路252の一部を開閉するものである。スイッチ255は、入力端子、出力端子、および、制御端子を備える。入力端子には、対応するエントリのシリアルナンバーSNが入力される。出力端子は最大SN選択部256に接続され、制御端子は、ANDゲート254の出力端子に接続される。ANDゲート254の出力値が「1」である場合に、スイッチ255はオン状態となり、入力されたシリアルナンバー(SN)が最大SN選択部256に出力される。ANDゲート254の出力値が「0」である場合、スイッチ255は、オフ状態となり、シリアルナンバーSNは出力されない。
最大SN選択部256は、SN取得回路群251が取得した各シリアルナンバーSNのうちの最大のシリアルナンバー(SN)を選択するものである。最大SN選択部256は、各シリアルナンバーSNを比較し、最大のシリアルナンバーSNを末尾ナンバーSN_Lとして、末尾ナンバーSN_Lを新規管理情報設定部260に出力する。また、最大SN選択部256は、その末尾ナンバーSN_Lに対応するビットに「1」が設定されたLD#1乃至16を新規管理情報設定部260に出力する。
図14は、本発明の第1の実施の形態における新規管理情報設定部260の一構成例を示すブロック図である。新規管理情報設定部260は、加算器261および新規管理情報設定回路262を備える。
加算器261は、末尾管理情報取得部250から受け取った末尾ナンバーSN_Lに所定値を加算するものである。例えば、加算器261は、末尾ナンバーSN_Lをインクリメントする。加算器261は、加算結果であるSN_L+1を新規管理情報設定回路262に出力する。
新規管理情報設定回路262は、リクエストに基づいて管理情報を設定するものである。新規管理情報設定回路262は、バッファ220から各エントリの有効フラグV#1乃至16を読み出す。また、新規管理情報設定回路262は、末尾管理情報取得部250からLD#1乃至16を受け取り、加算器261からSN_L+1を受け取る。さらに、新規管理情報設定回路262は、相互接続部210からリクエストを受け取る。
図15は、本発明の第1の実施の形態における新規管理情報設定回路262の動作の一例を示す図である。有効フラグV#1乃至16が全て「1」である場合、新規管理情報設定回路262は、バッファフル通知を発行して相互接続部210に通知する。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#i(iは1乃至16の整数)=1の場合について説明する。この場合、エントリに空きがあり、発行IDと同じトランザクション識別情報idの管理情報が1つ以上バッファ220に格納されているため、新規に登録する管理情報は、発行順序において末尾である。従って、新規管理情報設定回路262は、末尾の管理情報のシリアルナンバーSN_Lの次の番号SN_L+1を新規の管理情報のシリアルナンバーとして設定する必要がある。新規管理情報設定回路262は、有効フラグVに「1」を設定し、トランザクション識別情報idに発行IDを設定し、シリアルナンバーSNにSN_L+1を設定し、トランザクション情報を設定した管理情報を生成する。トランザクション情報には、レスポンスの転送処理を制御するための情報が設定される。例えば、図8に例示したように、リクエストが指定するバースト長やバーストサイズなどの値が設定される。新規管理情報設定回路262は、空きのエントリ(V=0)のいずれかに、設定した管理情報を格納する。
有効フラグV#1乃至16のうちのいずれかが「1」であり、かつ、LD#1乃至16が全て「0」の場合について説明する。この場合、エントリに空きがあり、発行IDと同じトランザクション識別情報idの管理情報は1つもバッファ220に格納されていないため、新規に登録する管理情報は発行順序において先頭である。従って、新規管理情報設定回路262は、初期値(例えば、0)を新規の管理情報のシリアルナンバーSNに設定する必要がある。新規管理情報設定回路262は、有効フラグVに「1」を設定し、トランザクション識別情報idに発行IDを設定し、シリアルナンバーSNに「0」を設定し、トランザクション情報を設定した管理情報を生成する。新規管理情報設定回路262は、空きのエントリ(V=0)のいずれかに、設定した管理情報を格納する。
図16は、本発明の第1の実施の形態におけるレスポンス処理部270の一構成例を示すブロック図である。レスポンス処理部270は、発行識別子(ID)取得回路271、先頭管理情報取得部280、および、先頭管理情報更新部290を備える。
発行ID取得回路271は、レスポンスから発行IDを取得するものである。図3を参照して説明したようにリードデータチャネルを構成する信号には、リード識別子タグRIDが含まれる。また、図6を参照して説明したようにライトレスポンスチャネルを構成する信号には、レスポンス識別子BIDが含まれる。これらは、スレーブが発行した識別子IDであるから、以下、リードアドレス識別子ARID、ライトアドレス識別子AWID、および、ライト識別子タグWIDに加えて、リード識別子タグRIDおよびレスポンス識別子BIDも発行IDと称する。発行ID取得回路271は、レスポンスから発行IDを取り出し、信号線831を介して先頭管理情報取得部280に出力する。
先頭管理情報取得部280は、各エントリにおける、有効フラグV、トランザクション識別情報id、および、シリアルナンバーSNと発行IDとに基づいて発行順序における先頭の管理情報を取得するものである。具体的には、先頭管理情報取得部280は、有効フラグVが「1」であり、かつ、トランザクション識別情報idが発行IDと一致する管理情報のうちのシリアルナンバーSNが最小の管理情報を先頭として求める。先頭管理情報取得部280は、先頭の管理情報に対応するビットに「1」に設定したFD#1乃至16のビットデータを、信号線832を介して先頭管理情報更新部290に出力する。
先頭管理情報更新部290は、レスポンスに対応するトランザクション情報のうちの発行順序における先頭のトランザクション情報を読み出すものである。先頭管理情報更新部290は、先頭管理情報取得部280が取得した先頭の管理情報からトランザクション情報を読み出して相互接続部210に出力する。また、先頭管理情報更新部290は、リクエストに基づいて、リクエストの最終データが転送されたか否かを判断する。最終データは、例えば、バースト転送において最後に転送されるデータである。最終データが転送された場合、先頭管理情報更新部290は、読み出した管理情報における有効フラグVを「0」に更新してエントリを空にする。そして、先頭管理情報更新部290は、他の同一のidを持つ管理情報の全てにおいて、シリアルナンバーSNの最小値が先頭、最大値が末尾となるようにシリアルナンバーSNを更新する。例えば、先頭管理情報更新部290は、同一のidを持つ、先頭から2番目以降の管理情報の全てのシリアルナンバーSNをデクリメントする。
図17は、本発明の第1の実施の形態における先頭管理情報取得部280の一構成例を示すブロック図である。先頭管理情報取得部280は、シリアルナンバー(SN)取得回路群281および最小シリアルナンバー(SN)選択部286を備える。
SN取得回路群281の構成は、図13を参照して説明したSN取得回路群251の構成と同様である。
最小SN選択部286は、SN取得回路群281が取得した各シリアルナンバーSNのうちの最小のシリアルナンバーSNを選択するものである。最小SN選択部286は、各シリアルナンバーSNを比較し、最小のシリアルナンバーSNに対応するビットに「1」を設定したFD#1乃至16を先頭管理情報更新部290に出力する。
図18は、本発明の第1の実施の形態における先頭管理情報更新部290の動作の一例を示す図である。FD#j(jは1乃至16の整数)=1であり、かつ、レスポンスが最終でないリードデータである場合、先頭管理情報更新部290は、先頭の管理情報(FD#j=1)を更新する。先頭管理情報更新部290は、リードデータが最終データであるか否かを、例えば、図2を参照して説明したリードラストRLASTが「0」であるか否かにより判断する。また。先頭の管理情報の更新においては、例えば、バーストカウントbcntをインクリメントする。
LD#i(iは1乃至16の整数)=1であり、かつ、レスポンスが最終のリードデータまたはライトレスポンスである場合、先頭管理情報更新部290は先頭の管理情報(FD#j=1)の有効フラグVに「0」を設定して無効にする。そして、先頭管理情報更新部290は、同一のidを持つ、先頭から2番目以降の管理情報の全てにおいて、シリアルナンバーSNをデクリメントする。
[バスブリッジの動作]
図19乃至21を参照してバッファ管理部230の動作について説明する。図19は、本発明の第1の実施の形態におけるバッファ管理部230の動作の一例を示すフローチャートである。この動作は、バッファ管理部230に電源が投入されたときや、バッファ220を初期化するときなどに開始する。バッファ管理部230は、各エントリの有効フラグVを「0」に設定することにより、バッファ220を初期化する(ステップS910)。
バッファ管理部230は、リクエストが発行されたか否かを判断する(ステップS920)。リクエストが発行されたのであれば(ステップS920:Yes)、バッファ管理部230は、新規管理情報登録処理を実行する(ステップS930)。
リクエストが発行されていない場合(ステップS920:No)、または、ステップS930の後、バッファ管理部230はレスポンスが返送されたか否かを判断する(ステップS970)。レスポンスが返送されたのであれば(ステップS970:Yes)、バッファ管理部230は、レスポンス処理を実行する(ステップS980)。
レスポンスが返送されていない場合(ステップS970:No)、または、ステップS980の後、バッファ管理部230は、ステップS920に戻る。
図20は、本発明の第1の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。新規管理情報登録部240は、バッファ220内に空きのエントリ(V=0)があるか否かを判断する(ステップS931)。空きのエントリがない場合(ステップS931:No)、新規管理情報登録部240は、バッファフル通知を発行する(ステップS932)。
空きのエントリがある場合(ステップS931:Yes)、新規管理情報登録部240は、発行IDと同一のトランザクション識別情報idの管理情報が既に登録されているか否かを判断する(ステップS933)。
発行IDと同一のトランザクション識別情報idの管理情報が既に登録されている場合(ステップS933:Yes)、新規管理情報登録部240は、いずれかの有効フラグV=0のエントリを選択する。新規管理情報登録部240は、選択したエントリにおいて、有効フラグVに「1」を設定し、トランザクション情報idに発行IDを設定し(ステップS934)、また、シリアルナンバーSNにSN_L+1を設定する(ステップS935)。新規管理情報登録部240は、選択したエントリにおいて、リクエストに基づいてトランザクション情報を設定する(ステップS938)。
発行IDと同一のトランザクション識別情報idの管理情報が登録されていない場合(ステップS933:No)、新規管理情報登録部240は、いずれかの有効フラグV=0のエントリを選択する。新規管理情報登録部240は、選択したエントリにおいて、有効フラグVに「1」を設定し、トランザクション情報idに発行IDを設定し(ステップS939)、また、シリアルナンバーSNに「0」を設定する(ステップS940)。ステップS940の後、新規管理情報登録部240はステップS938を実行する。
ステップS932またはS938の後、新規管理情報登録部240は新規管理情報登録処理を終了する。
図21は、本発明の第1の実施の形態におけるレスポンス処理の一例を示すフローチャートである。レスポンス処理部270は、発行IDと同一のトランザクション識別情報idの管理情報が登録されているか否かを判断する(ステップS981)。
発行IDと同一のトランザクション識別情報idの管理情報が登録されている場合(ステップS981:Yes)、レスポンス処理部270は、リクエストが最終のリードデータまたはライトレスポンスであるか否かを判断する(ステップS982)。
リクエストが最終のリードデータまたはライトレスポンスである場合(ステップS982:Yes)について説明する。この場合、レスポンス処理部270は、発行IDと同一のトランザクション識別情報idの管理情報のうちの先頭の管理情報内のトランザクション情報をバッファ220から読み出す。レスポンス処理部270は、読み出したトランザクション識別情報idを相互接続部210へ出力する(ステップS983)。そして、レスポンス処理部270は、先頭の管理情報を無効にする(ステップS984)。レスポンス処理部270は、同一のIDを持つ、先頭から2番目以降の管理情報の全てにおいて、シリアルナンバーSNを更新(デクリメント)する(ステップS985)。
リクエストが最終のリードデータでなく、ライトレスポンスでもない場合(ステップS982:No)について説明する。この場合、レスポンス処理部270は、発行IDと同一のトランザクション識別情報idの管理情報のうちの先頭の管理情報内のトランザクション情報をバッファ220から読み出す。レスポンス処理部270は、読み出したトランザクション識別情報idを相互接続部210へ出力する(ステップS986)。そして、レスポンス処理部270は、先頭の管理情報において、バーストカウントをカウントアップする(ステップS987)。
発行IDと同一のトランザクション識別情報idの管理情報が登録されていない場合(ステップS981:No)、または、ステップS984、あるいはS987の後、レスポンス処理部270は、レスポンス処理を終了する。
なお、第1の実施の形態のバスシステムは、AXIプロトコルを使用しているが、スプリットトランザクションを許容するプロトコルであれば、AXIプロトコル以外のプロトコルを使用してもよいのは勿論である。
また、バスブリッジ200にバッファ管理部230およびバッファ220を設ける構成としている。しかし、スプリットトランザクションを許容するインターコネクトであれば、バスブリッジ以外のインターコネクトにバッファ管理部230およびバッファ220を設けてもよい。
また、図1においては、AXIバス120にマスタ110が接続され、AXIバス130にスレーブ140が接続される構成を例示したが、モジュールの接続形態は、図1に例示した構成に限定されない。例えば、AXIバス120にマスタに加えてスレーブを接続してもよいし、AXIバス130にスレーブに加えてマスタを接続してもよい。
また、図8において、シリアルナンバーSNを順序情報として格納しているが、発行順序に従って増減する番号であればよく、連番(SN)に限定されない。
また、図8において、トランザクション情報が含む情報を例示したが、レスポンスの転送制御に必要な情報であれば、バッファ220は、図8に例示した情報と異なる情報をトランザクション情報として保持してもよい。
このように、本発明の第1の実施の形態によれば、バッファ管理部230は、リクエストに基づいてバッファ220にトランザクション識別情報idおよび順序情報とトランザクション情報とを対応付けて保持しておく。そして、バッファ管理部230は、レスポンスに係るIDと同じトランザクション識別情報idに対応するトランザクション情報を順序情報に従って読み出す。バッファ管理部230は、トランザクション情報にトランザクション識別情報idを対応付けて保持するため、バスシステムがスプリットトランザクションを許容する場合であっても、レスポンスに対応するトランザクション情報を容易に読み出すことができる。また、バッファ管理部230は、順序情報をトランザクション情報に対応付けて保持するため、リクエストの発行順序に従って、レスポンスに対応するトランザクション情報を読み出すことができる。
また、本発明の第1の実施の形態によれば、バッファ220は、バスシステムが許容する未解決の転送数の最大値(例えば、16個)の管理情報を保持する分だけの容量しか必要としない。このため、バスシステムが許容するトランザクション数の最大値が増大した場合であっても、管理情報のトランザクション識別情報id列の幅を必要に応じて大きくするだけで対応することができる。従って、バッファ220のサイズ、すなわち記憶容量の増大を抑制することができる。
<2.第2の実施の形態>
[バスブリッジの構成]
次に図22乃至30を参照して本発明の第2の実施の形態のバスブリッジについて説明する。図22は、本発明の第2の実施の形態における管理情報の一例を示す図である。第2の実施の形態の管理情報は、順序情報が先頭フラグFをさらに含む以外は、図8に例示した第1の実施の形態の管理情報と同様である。先頭フラグFは、当該管理情報がバッファ220内のトランザクション識別情報idが同一の管理情報のうちの発行順序における先頭であることを示す1ビットの情報である。例えば、先頭フラグFは、管理情報が先頭である場合に「1」が設定されて有効となり、そうでない場合に「0」が設定されて無効となる。
第2の実施の形態の新規管理情報登録部240の構成は、先頭フラグFをさらに設定する点と、末尾の管理情報を先頭フラグFに基づいて取得する点以外は、第1の実施形態の新規管理情報登録部240と同様の構成である。例えば、新規管理情報登録部240は、先頭ナンバーSN_Fをデクリメントしていき、同一のトランザクション識別情報idの管理情報において最初に一致するシリアルナンバーSNの管理情報を末尾とする。
図23は、本発明の第2の実施の形態における新規管理情報設定回路262の動作の一例を示す図である。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#i(iは1乃至16の整数)=1の場合について説明する。この場合、新規に登録する管理情報は、発行順序において末尾である。従って、新規管理情報設定回路262は、有効フラグV、トランザクション識別情報id、シリアルナンバーSN、および、トランザクション情報を設定し、さらに先頭フラグFに「0」を設定する。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#1乃至16が全て「0」の場合について説明する。この場合、新規に登録する管理情報は発行順序において先頭である。従って、新規管理情報設定回路262は、有効フラグV、トランザクション識別情報id、シリアルナンバーSN、および、トランザクション情報を設定し、さらに先頭フラグFに「1」を設定する。
図24は、本発明の第2の実施の形態におけるレスポンス処理部370の一構成例を示すブロック図である。レスポンス処理部370は、先頭管理情報取得部280および先頭管理情報更新部290の代わりに先頭管理情報更新部390および次管理情報更新部400を備える点以外は図16に例示した第1の実施の形態のレスポンス処理部270と同様の構成である。
発行ID取得回路271は、取得した発行IDを先頭管理情報取得部380のほか、さらに次管理情報更新部400に信号線831を介して出力する。
先頭管理情報取得部380は、各エントリにおける、有効フラグV、トランザクション識別情報id、および、先頭フラグFと発行IDとに基づいて発行順序における先頭の管理情報を取得するものである。具体的には、先頭管理情報取得部380は、有効フラグVが「1」であり、トランザクション識別情報idが発行IDと一致し、かつ、先頭フラグFが「1」の管理情報を先頭として求める。先頭管理情報取得部380は、先頭の管理情報に対応するビットに「1」を設定したFD#1乃至16のビットデータを先頭管理情報更新部390および次管理情報更新部400に信号線832を介して出力する。
次管理情報更新部400は、先頭管理情報取得部380が取得した管理情報の次の管理情報の先頭フラグFを有効に設定するものである。次管理情報更新部400は、発行ID取得回路271から発行IDを受け取り、先頭管理情報取得部380から、FD#1乃至16を受け取る。また、次管理情報更新部400は、バッファ220から各エントリの有効フラグV、トランザクション識別情報id、および、シリアルナンバーSNを読み出す。次管理情報更新部400は、各エントリのシリアルナンバーSNとFD#1乃至16とから、先頭の管理情報のシリアルナンバーSN_Fを取得する。次管理情報更新部400は、有効フラグVが「1」であり、トランザクション識別情報idが発行IDと一致し、かつ、シリアルナンバーSNがSN_F+1と一致する管理情報を次の管理情報として求める。次管理情報更新部400は、取得した管理情報の先頭フラグFを「1」に更新する。
図25は、本発明の第2の実施の形態における先頭管理情報取得部380の一構成例を示すブロック図である。先頭管理情報取得部380は、先頭管理情報判断回路群381を備える。
先頭管理情報判断回路群381は、各管理情報が先頭の管理情報であるか否かを判断するものである。先頭管理情報判断回路群381は、エントリの数(例えば、16個)と同数の先頭管理情報判断回路382を備える。各先頭管理情報判断回路382は、識別子(ID)一致判断部383およびANDゲート384を備える。
ID一致判断部383は、発行IDと、対応するエントリに格納されたトランザクション識別情報idとが一致するか否かを判断するものである。ID一致判断部383は、発行IDとトランザクション識別情報idとが一致するか否かを判断し、判断結果をANDゲート384に出力する。
ANDゲート384は、入力値の論理積を出力するものである。ANDゲート384は、3つの入力端子と出力端子とを備える。1つ目の入力端子には、対応するエントリの有効フラグVの値が入力され、2つ目の入力端子には、ID一致判断部383による判断結果が入力される。3つ目の入力端子には、対応するエントリの先頭フラグFの値が入力される。ANDゲート384は、これらの入力値の論理積をFD#j(jは1乃至16の整数)として先頭管理情報更新部390に出力する。先頭管理情報更新部390の構成は、シリアルナンバーSNの更新を実行しない点以外は、第1の実施の形態の先頭管理情報更新部290と同様の構成である。
図26は、本発明の第2の実施の形態における次管理情報更新部400の一構成例を示すブロック図である。次管理情報更新部400は、先頭管理情報シリアルナンバー(SN)選択回路401、加算器402、次管理情報判断回路群403、および、次管理情報更新回路408を備える。
先頭管理情報SN選択回路401は、各シリアルナンバーSNの中から、先頭の管理情報のシリアルナンバーSNを選択するものである。先頭管理情報SN選択回路401は、先頭管理情報取得部380からFD#1乃至16を受け取り、バッファ220から各管理情報のシリアルナンバーSNを読み出す。先頭管理情報SN選択回路401は、読み出した各SNの中から、FD#j=1に対応する管理情報のシリアルナンバーSNを選択して先頭ナンバーSN_Fとして加算器402に出力する。
加算器402は、先頭管理情報SN選択回路401から受け取った先頭ナンバーSN_Fに所定値を加算するものである。例えば、加算器402は、先頭ナンバーSN_Fをインクリメントする。加算器402は、加算結果であるSN_F+1を次管理情報判断回路群403に出力する。
図27は、本発明の第2の実施の形態における次管理情報判断回路群403の一構成例を示すブロック図である。次管理情報判断回路群403は、各管理情報が、先頭管理情報取得部380が取得した管理情報の次の管理情報であるか否かを判断するものである。次管理情報判断回路群403は、エントリの数(例えば、16個)と同数の次管理情報判断回路404を備える。各次管理情報判断回路404は、識別子(ID)一致判断部405、シリアルナンバー(SN)一致判断部406、および、ANDゲート407を備える。
ID一致判断部405は、発行IDと、対応するエントリに格納されたトランザクション識別情報idとが一致するか否かを判断するものである。ID一致判断部405は、判断結果をANDゲート407に出力する。
SN一致判断部406は、SN_F+1と、対応するエントリのシリアルナンバーSNとが一致するか否かを判断するものである。SN一致判断部406は、判断結果をANDゲート407に出力する。
ANDゲート407は、入力値の論理積を出力するものである。ANDゲート407は、3つの入力端子と出力端子とを備える。1つ目の入力端子には、対応するエントリの有効フラグVの値が入力され、2つ目の入力端子には、ID一致判断部405による判断結果が入力される。3つ目の入力端子には、対応するエントリのSN一致判断部406の判断結果が入力される。ANDゲート254は、これらの入力値の論理積をND#k(kは1乃至16の整数)として次管理情報更新回路408に出力する。
次管理情報更新回路408は、次管理情報判断回路群403の判断結果の示す次の管理情報において先頭フラグFを有効にするものである。
図28は、本発明の第2の実施の形態における次管理情報更新回路408の動作の一例を示す図である。次管理情報判断回路群403から受け取ったND#k=1であり、レスポンスが最終のリードデータまたはライトレスポンスである場合、次管理情報更新回路408は、先頭の次の管理情報(ND#k=1)において、先頭フラグFを「1」に更新する。
[バスブリッジの動作]
図29および図30を参照して本発明の第2の実施形態のバッファ管理部230の動作について説明する。図29は、本発明の第2の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。この新規管理情報登録処理は、ステップS936およびS941をさらに実行する点以外は、図20に例示した第1の実施の形態の新規管理情報登録処理と同様である。
新規管理情報登録部240は、選択したV=0のエントリにおいてシリアルナンバーSNにSN_L+1を設定し(ステップS935)、さらに先頭フラグFに「0」を設定する(ステップS936)。また、新規管理情報登録部240は、選択した有効フラグV=0のエントリにおいてシリアルナンバーSNに「0」を設定し(ステップS940)、さらに先頭フラグFに「1」を設定する(ステップS941)。ステップS936またはS941の後、新規管理情報登録部240は、ステップS938を実行する。
図30は、本発明の第2の実施の形態におけるレスポンス処理の一例を示すフローチャートである。このレスポンス処理は、ステップS985を含まず、ステップS988をさらに実行する点以外は、図21に例示した第1の実施の形態のレスポンス処理と同様である。
レスポンス処理部370は、先頭の管理情報を無効にし(ステップS984)、先頭の管理情報の次の管理情報において先頭フラグFを有効にする(ステップS988)。ステップS988の後、レスポンス処理部370はレスポンス処理を終了する。
このように、本発明の第2の実施の形態によれば、バッファ管理部230は、リクエスト発行時に先頭フラグFをさらに設定しておくことにより、レスポンスに対応するトランザクション情報のうちの先頭のトランザクション情報を容易に読み出すことができる。具体的には、先頭フラグFを設定しない場合、図17に例示したように先頭管理情報取得部280が、各シリアルナンバーSNを比較して最小のシリアルナンバーSNを求める必要がある。これに対し、先頭フラグFを設定しておく場合、図25に例示したように先頭管理情報取得部380は、各シリアルナンバーSNを比較する必要がなくなる。また、先頭フラグFを設定しておくことにより、レスポンス処理においてシリアルナンバーSNを更新する必要がなくなる。
<3.第3の実施の形態>
[バスブリッジの構成]
次に図31乃至46を参照して本発明の第3の実施の形態のバスブリッジについて説明する。図31は、本発明の第3の実施の形態における管理情報の一例を示す図である。第3の実施の形態の管理情報は、順序情報が末尾フラグLをさらに含む以外は、図22に例示した第2の実施の形態の管理情報と同様である。末尾フラグLは、当該管理情報がバッファ220内のトランザクション識別情報idが同一の管理情報のうちの発行順序における末尾であることを示す1ビットの情報である。例えば、末尾フラグLは、管理情報が末尾である場合に「1」が設定されて有効となり、そうでない場合に「0」が設定されて無効となる。
図32は、本発明の第3の実施の形態におけるバッファ管理部430の一構成例を示すブロック図である。第2の実施の形態のバッファ管理部430は、新規管理情報登録部440、既存管理情報更新部465、および、レスポンス処理部370を備える。このレスポンス処理部370の構成は、図24を参照して説明した第2の実施形態のレスポンス処理部370と同様の構成である。
新規管理情報登録部440の構成は、先頭フラグFおよび末尾フラグLをさらに設定する点以外は、第1の実施の新規管理情報登録部240と同様の構成である。新規管理情報登録部440は、末尾管理情報取得部250および新規管理情報設定部260の代わりに末尾管理情報取得部450および新規管理情報設定部460(不図示)を備える。末尾管理情報取得部450および新規管理情報設定部460の構成については、図33を参照して後述する。
既存管理情報更新部465は、新規管理情報登録部460により先頭から2番目以降の管理情報が新規に登録された場合、新規の管理情報の登録前に末尾であった管理情報の末尾フラグLを無効にするものである。
図33は、本発明の第3の実施の形態における末尾管理情報取得部450の一構成例を示すブロック図である。末尾管理情報取得部450は、末尾管理情報判断回路群451および末尾シリアルナンバー(SN)選択部455を備える。
末尾管理情報判断回路群451は、各管理情報が、レスポンスに対応する管理情報のうちの発行順序における末尾の管理情報であるか否かを判断するものである。末尾管理情報判断回路群451は、エントリの数(例えば、16個)と同数の末尾管理情報判断回路452を備える。各末尾管理情報判断回路452は、識別子(ID)一致判断部453およびANDゲート454を備える。
ID一致判断部453は、発行IDと、対応するエントリに格納されたトランザクション識別情報idとが一致するか否かを判断するものである。ID一致判断部453は、判断結果をANDゲート454に出力する。
ANDゲート454は、入力値の論理積を出力するものである。ANDゲート454は、3つの入力端子と出力端子とを備える。1つ目の入力端子には、対応するエントリの有効フラグVの値が入力され、2つ目の入力端子には、ID一致判断部453による判断結果が入力される。3つ目の入力端子には、対応するエントリの末尾フラグLが入力される。ANDゲート454は、これらの入力値の論理積をLD#iとして最大SN選択部455に出力する。
末尾SN選択部455は、各シリアルナンバーSNの中から、末尾の管理情報のシリアルナンバーSNを選択するものである。最大SN選択部455は、末尾管理情報判断回路群451からLD#1乃至16を受け取り、バッファ220から各管理情報のシリアルナンバーSNを読み出す。最大SN選択部455は、各シリアルナンバーSNの中から、LD#i=1の管理情報のシリアルナンバーSNを選択し、そのシリアルナンバーSNを末尾ナンバーSN_Lとして、LD#1乃至16とともに新規管理情報設定部460に出力する。
新規管理情報設定部460の構成は、先頭フラグFおよび末尾フラグLをさらに設定する点以外は、第1の実施形態の新規管理情報設定部260の構成と同様である。
図34は、本発明の第3の実施の形態における新規管理情報設定回路の動作の一例を示す図である。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#i(iは1乃至16の整数)=1の場合について説明する。この場合、新規に登録する管理情報は、発行順序において先頭から2番目以降の末尾の管理情報である。従って、新規管理情報設定回路は、有効フラグV、トランザクション識別情報id、シリアルナンバーSN、先頭フラグF、および、トランザクション情報を設定し、さらに末尾フラグLに「1」を設定する。また、新規管理情報設定回路は、既存管理情報設定回路465にLD#1乃至16を出力する。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#1乃至16が全て「0」の場合について説明する。この場合、新規に登録する管理情報は発行順序において先頭であり、同時に末尾でもある。従って、新規管理情報設定回路262は、有効フラグV、トランザクション識別情報id、シリアルナンバーSN、先頭フラグF、および、トランザクション情報を設定し、さらに末尾フラグLに「1」を設定する。
図35は、本発明の第3の実施の形態における既存管理情報更新部465の動作の一例を示す図である。LD#i=1である場合、既存管理情報更新部465は、末尾の管理情報(LD#i=1)において末尾フラグLに「0」を設定する。
[バスブリッジの動作]
図36乃至38を参照して本発明の第3の実施形態のバッファ管理部430の動作について説明する。図36は、本発明の第3の実施の形態におけるバッファ管理部430の動作の一例を示すフローチャートである。この動作は、ステップS950をさらに実行する点以外は、第2の実施の形態におけるバッファ管理部230の動作と同様である。
バッファ管理部430は、新規管理情報登録処理を実行した後(ステップS930)、既存管理情報更新処理を実行する(ステップS950)。ステップS950の後、バッファ管理部430は、ステップS970を実行する。
図37は、本発明の第3の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。この新規管理情報登録処理は、ステップS937をさらに実行する点以外は、図29に例示した第2の実施の形態の新規管理情報登録処理と同様である。選択したV=0のエントリにおいて、先頭フラグFを設定し(ステップS936またはS941)、新規管理情報登録部440は、末尾フラグLに「1」を設定する(ステップS937)。ステップS937の後、新規管理情報登録部440は、ステップS938を実行する。
図38は、本発明の第3の実施の形態における既存管理情報更新処理の一例を示すフローチャートである。既存管理情報更新部465は、新規管理情報登録部440により先頭から2番目以降の管理情報が登録されたか否かを判断する(ステップS951)。先頭から2番目以降の管理情報が登録された場合(ステップS951:Yes)について説明する。この場合、既存管理情報更新部465は、発行IDと同一のトランザクション識別情報idの管理情報のうちの末尾(LD#i=1)を取得する。既存管理情報更新部465は、取得した管理情報に末尾フラグLに「0」を設定する(ステップS952)。先頭から2番目以降の管理情報が登録されていない場合(ステップS951:No)、または、ステップS952の後、既存管理情報更新部465は、既存管理情報更新処理を終了する。第3の実施の形態のレスポンス処理は、図30に例示した第2の実施の形態のレスポンス処理と同様である。
このように、バッファ管理部430は、リクエスト発行時に末尾フラグLをさらに設定しておくことにより、リクエストに対応するシリアルナンバーSNのうちの末尾のシリアルナンバーSNを容易に取得することができる。具体的には、末尾フラグLを設定しない場合、図13に例示したように末尾管理情報取得部250が、各シリアルナンバーSNを比較して最大のシリアルナンバーSNを求める必要があった。これに対し、先頭フラグFを設定しておく場合、図33に例示したように末尾管理情報取得部450は、各シリアルナンバーSNを比較する必要がなくなる。
続いて、図39乃至46を参照して、第3の実施の形態のバッファ管理部430の動作結果の一例について説明する。図39に示すように、マスタ#1からスレーブ#2へリクエストが転送された場合について想定する。マスタ#1は、発行IDの値を16進表記の「3」にして2回リクエストを発行したものとする。また、1回目のリクエスト発行前において、バッファ220のエントリは全て空であるものとする。
1回目のリクエストが発行された場合、バッファ管理部430は、発行ID「3」とトランザクション識別情報idが一致する管理情報がバッファ220内に登録されているか否かを判断する。1回目のリクエスト発行時においてエントリが全て空であるため、新規に登録される管理情報は先頭かつ末尾の管理情報である。従って、図40に示すように、バッファ管理部430は、バッファ220内の空のエントリ(例えば、エントリ#1)に発行IDを含む管理情報を設定し、設定時に先頭フラグFおよび末尾フラグLを有効にする。
2回目のリクエストが発行された場合、発行IDとトランザクション識別情報idが一致する管理情報が登録されているため、新規に登録される管理情報は、先頭から2番目以降の末尾の管理情報である。従って、図41に示すように、バッファ管理部430は、バッファ220内の空のエントリ(例えば、エントリ#4)に発行ID「3」を含む管理情報を設定し、設定時に先頭フラグFは無効にし、末尾フラグLを有効にする。そして、バッファ管理部430は、発行IDとトランザクション識別情報idが一致する管理情報のうち、末尾であった管理情報(すなわち、エントリ#1内の管理情報)の末尾フラグLを無効にする。
次に図42に示すようにスレーブ#2からマスタ#1にレスポンスが返送されたものとする。このレスポンスは、発行ID「3」のリクエストに応じて返送されたものであるから、レスポンスが含む発行IDは「3」である。また、このレスポンスは、RLAST=1が設定された最終のリードデータを含むものとする。その後、マスタ#2からスレーブ#1へリクエストが転送されたものとする。このリクエストの発行IDの値は16進表記の「B」であるものとする。
最終のリードデータが返送された場合、バッファ管理部430は、そのリードデータの発行ID「3」と同一のトランザクション識別情報idの管理情報のうちの先頭の管理情報内のトランザクション情報をバッファ220から読み出す。すなわち、バッファ管理部430は、トランザクション識別情報idが「3」で、先頭フラグFが有効の管理情報(エントリ#1の管理情報)内のトランザクション情報を読み出す。バッファ管理部430は、図43に示すように、読み出した管理情報を無効にしてエントリ#1を空にする。また、バッファ管理部430は、読み出した管理情報の次の管理情報(エントリ#4の管理情報)において先頭フラグFを有効にする。
発行ID「B」のリクエストが転送された場合、その発行ID「B」と一致するトランザクション識別情報idの管理情報は格納されていないため、新規に登録される管理情報は先頭かつ末尾の管理情報となる。図43に示すように、バッファ管理部430は、バッファ220内の空のエントリ(例えば、エントリ#2)に発行IDを含む管理情報を設定し、先頭フラグFおよび末尾フラグLを有効にする。
この後、図44に示すようにスレーブ#2からマスタ#1にレスポンスが返送されたものとする。このレスポンスは、発行ID「3」のリクエストに対応するものであるから、レスポンスが含む発行IDは「3」である。また、このレスポンスは、リードラストRLAST=0が設定された最終でないリードデータを含むものとする。
さらに、図45に示すようにスレーブ#1からマスタ#2にレスポンスが返送されたものとする。このレスポンスは、発行ID「B」のリクエストに対応するものであるから、レスポンスが含む発行IDは「B」である。また、このレスポンスは、リードラストRLAST=1が設定された最終のリードデータを含むものとする。
最終でないリードデータが返送された場合、バースト転送が完了していないため、バッファ管理部430は、図46に示すように、そのリードデータに対応する管理情報(エントリ#4の管理情報)を無効にしない。一方、最終のリードデータが返送された場合、バッファ管理部430は、そのリードデータの発行ID「B」に対応する管理情報(エントリ#2の管理情報)内のトランザクション情報を読み出して、そのエントリ#2を空にする。
このように、本発明の第3の実施の形態によれば、バッファ管理部430は、トランザクション識別情報idをトランザクション情報に対応付けて保持する。このため、バスブリッジ200は、発行IDの異なる複数のトランザクションのそれぞれのリクエストおよびレスポンスを独立して制御することができる。この結果、スプリットトランザクションが実現可能となる。また、順序情報をトランザクション情報に対応付けておくため、バスブリッジ200は、トランザクションにおいて複数のリクエストが発行された場合であっても、リクエストの発行順序に従って、レスポンスに対応するトランザクション情報を読み出すことができる。
<4.第4の実施の形態>
[バスブリッジの構成]
次に図47乃至55を参照して本発明の第4の実施の形態のバスブリッジについて説明する。図47は、本発明の第4の実施の形態における管理情報の一例を示す図である。第4の実施の形態の管理情報は、シリアルナンバーSNの代わりにネクストエントリNextを含む点以外は、図8に例示した第1の実施の形態の管理情報と同様である。ネクストエントリNextは、発行順序における当該管理情報の次の管理情報が格納されているエントリの位置を示す情報である。発行順序における末尾の管理情報の場合、その管理情報自身を格納したエントリの位置を示す情報がネクストエントリNextとして設定される。ネクストエントリNextのとりうる値の個数は、バッファ220内のエントリ数以上とされる。例えば、エントリ数が16個の場合、少なくとも4ビットのネクストエントリNextが設定される。
なお、上述の実施の形態のネクストエントリNextは、特許請求の範囲に記載の次位置情報の一例である。
図48は、本発明の第3の実施の形態におけるバッファ管理部530の一構成例を示すブロック図である。バッファ管理部530は、新規管理情報登録部540、既存管理情報更新部565、および、レスポンス処理部570を備える。
新規管理情報登録部540は、シリアルナンバーSNの代わりにネクストエントリNextを管理情報に設定する点以外は、第1の実施の形態の新規管理情報登録部240と同様の構成である。新規管理情報登録部540は、新規に管理情報を格納したエントリを示す番号(以下、「新規エントリ番号」と称する)を既存管理情報更新部565に信号線851を介して出力する。また、新規管理情報登録部540は、末尾の管理情報に対応するビットに「1」を設定したLD#1〜16を既存管理情報更新部565に信号線842を介して出力する。
既存管理情報更新部565は、末尾であった管理情報(LD#i=1)内のネクストエントリNextの値を、新規エントリ番号に更新するものである。
レスポンス処理部570は、先頭管理情報取得部280および先頭管理情報更新部290の代わりに先頭管理情報取得部580および先頭管理情報更新部590を備える点において図16に例示した第1の実施の形態のレスポンス処理部270と異なる。先頭管理情報取得部580および先頭管理情報更新部590の構成については、図53を参照して後述する。
図49は、本発明の第4の実施の形態における新規管理情報登録部540の一構成例を示すブロック図である。新規管理情報登録部540は、発行識別子(ID)取得回路241と、末尾管理情報取得部550と、新規管理情報設定部560とを備える。
発行ID取得回路241は、リクエストから発行IDを取得するものである。発行ID取得回路241は、リクエストから発行IDを取り出し、信号線821を介して末尾管理情報取得部550に出力する。
末尾管理情報取得部550は、各エントリにおける、有効フラグV、トランザクション識別情報id、および、ネクストエントリNextと発行IDとに基づいて発行順序における末尾の管理情報を取得するものである。具体的には、末尾管理情報取得部550は、管理情報内のネクストエントリNextの示すエントリが、その管理情報自身を格納するエントリである管理情報を末尾として求める。末尾管理情報取得部550は、末尾の管理情報に対応するビットに「1」を設定したLD#1乃至16を新規管理情報設定部560および既存管理情報設定部565に信号線842を介して出力する。
新規管理情報設定部560は、リクエストに基づいて管理情報に各情報を設定するものである。新規管理情報設定部560は、相互接続部210からリクエストを受け取った場合、バッファ220の各エントリの有効フラグVを参照してバッファ220内に空きがあるか否かを判断する。空きがなければ、新規管理情報設定部560は、バッファフル通知を相互接続部210に返す。空きがあれば、新規管理情報設定部560は、空いているエントリのいずれかを選択する。新規管理情報設定部560は、選択したエントリにおいて、リクエスト、および、LD#1乃至16に基づいて管理情報を設定する。管理情報の設定内容の詳細については、図51を参照して後述する。また、新規管理情報設定部560は、新規エントリ番号を既存管理情報設定部565に信号線851を介して出力する。
図50は、本発明の第4の実施の形態における末尾管理情報取得部550の一構成例を示すブロック図である。末尾管理情報取得部550は、末尾管理情報判断回路群551を備える。
末尾管理情報判断回路群551は、各管理情報が末尾の管理情報であるか否かを判断するものである。末尾管理情報判断回路群551は、エントリの数(例えば、16個)と同数の末尾管理情報判断回路552を備える。各末尾管理情報判断回路552は、識別子(ID)一致判断部553、末尾ネクストエントリ(Next)判断部554、および、ANDゲート555を備える。
ID一致判断部553は、発行IDと、対応するエントリに格納されたトランザクション識別情報idとが一致するか否かを判断するものである。ID一致判断部553は、判断結果をANDゲート555に出力する。
末尾Next判断部554は、対応するエントリに格納されたネクストエントリNextが、そのエントリ自身を示すものであるか否かを判断するものである。末尾Next判断部554は、判断結果をANDゲート555に出力する。
ANDゲート555は、入力値の論理積を出力するものである。ANDゲート555は、3つの入力端子と出力端子とを備える。1つ目の入力端子には、対応するエントリの有効フラグVの値が入力され、2つ目の入力端子には、ID一致判断部553による判断結果が入力される。3つ目の入力端子には、末尾Next判断部554による判断結果が入力される。ANDゲート555は、これらの入力値の論理積をLD#iとして新規管理情報設定部560に出力する。
図51は、本発明の第4の実施の形態における新規管理情報設定部560内の新規管理情報設定回路の動作の一例を示す図である。
有効フラグV#1乃至16のうちのいずれかが「1」であり、かつ、LD#i=1の場合について説明する。この場合、新規に登録する管理情報は、発行順序において先頭から2番目以降の末尾の管理情報である。従って、新規管理情報設定回路は、有効フラグV、トランザクション識別情報id、および、トランザクション情報を設定し、さらにネクストエントリNextに新規エントリ番号を設定する。また、新規管理情報設定回路は、既存管理情報更新部565に新規エントリ番号を通知する。
有効フラグV#1乃至16のうちのいずれかが「0」であり、かつ、LD#1乃至16が全て「0」の場合について説明する。この場合、新規に登録する管理情報は発行順序において先頭であり、同時に末尾でもある。従って、新規管理情報設定回路は、有効フラグV、トランザクション識別情報id、および、トランザクション情報を設定し、さらにネクストエントリNextに新規エントリ番号を設定する。
図52は、本発明の第4の実施の形態における既存管理情報更新部565の動作の一例を示す図である。LD#i=1である場合、既存管理情報更新部565は、末尾の管理情報(LD#i=1)においてネクストエントリNextに新規エントリ番号を設定する。
図53は、本発明の第4の実施の形態における先頭管理情報取得部580の一構成例を示すブロック図である。先頭管理情報取得部580は、ネクストエントリ(Next)取得回路群581および先頭管理情報選択部586を備える。
Next取得回路群581の構成は、シリアルナンバーSNの代わりにネクストエントリNextを取得する点以外は、図13に例示したSN取得回路群251と同様の構成である。
先頭管理情報選択部586は、取得された各ネクストエントリNextに基づいて先頭の管理情報を求めるものである。先頭管理情報選択部586は、各ネクストエントリNextのうち、他のネクストエントリNextにより参照されていないネクストエントリNextを選択する。先頭管理情報選択部586は、選択したネクストエントリNextに対応するビットに「1」を設定したFD#1乃至16を先頭管理情報更新部590に出力する。
[バスブリッジの動作]
図54は、本発明の第4の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。新規管理情報登録部540は、バッファ220内に空きのエントリ(V=0)があるか否かを判断する(ステップS931)。空きのエントリがない場合(ステップS931:No)、新規管理情報登録部540は、バッファフル通知を発行する(ステップS932)。
空きのエントリがある場合(ステップS931:Yes)、新規管理情報登録部540は、いずれかのV=0のエントリを選択する。新規管理情報登録部540は、選択したエントリにおいて、有効フラグVに「1」を設定し、トランザクション情報idに発行IDを設定する(ステップS934)。また、新規管理情報登録部540は、そのエントリにおいて、ネクストエントリNextに新規エントリ番号を設定する(ステップS990)。新規管理情報登録部540は、そのエントリにおいて、リクエストに基づいてトランザクション情報を設定する(ステップS938)。
ステップS932またはS938の後、新規管理情報登録部540は新規管理情報登録処理を終了する。
図55は、本発明の第4の実施の形態における既存管理情報更新処理の一例を示すフローチャートである。既存管理情報更新部565は、新規管理情報登録部540により先頭から2番目以降の管理情報が登録されたか否かを判断する(ステップS951)。先頭から2番目以降の管理情報が登録された場合(ステップS951:Yes)について説明する。この場合、既存管理情報更新部565は、発行IDと同一のトランザクション識別情報idの管理情報のうちの末尾(LD#i=1)を取得する。既存管理情報更新部565は、取得した管理情報においてネクストエントリNextに新規エントリ番号を設定する(ステップS991)。先頭から2番目以降の管理情報が登録されていない場合(ステップS951:No)、または、ステップS991の後、既存管理情報更新部565は、既存管理情報更新処理を終了する。
第4の実施の形態のレスポンス処理は、第1の実施の形態のレスポンス処理と同様である。
このように、本発明の第4の実施の形態によれば、リクエスト発行時にネクストエントリNextを設定しておくことにより、バッファ管理部530は、リクエストに対応する管理情報のうちの末尾の管理情報を容易に取得することができる。具体的には、ネクストエントリNextを設定しない場合、図13に例示したように末尾管理情報取得部250が、各シリアルナンバーSNを比較して最大のシリアルナンバーSNを求める必要がある。これに対し、ネクストエントリNextを設定しておく場合、図33に例示したように末尾管理情報取得部450は、各シリアルナンバーSNを比較する必要がなくなる。
<5.第5の実施の形態>
[バスブリッジの構成]
次に図56乃至60を参照して本発明の第5の実施の形態のバスブリッジについて説明する。図56は、本発明の第5の実施の形態における管理情報の一例を示す図である。第5の実施の形態の管理情報は、順序情報が先頭フラグFをさらに含む以外は、図47に例示した第4の実施の形態の管理情報と同様である。先頭フラグFは、当該管理情報がバッファ220内のトランザクション識別情報idが同一の管理情報のうちの発行順序における先頭であることを示す1ビットの情報である。
第5の実施の形態の新規管理情報登録部540の構成は、先頭フラグFをさらに設定する点以外は、図47に示した第4の実施形態の新規管理情報登録部540と同様の構成である。また、第5の実施の形態の既存管理情報更新部565の構成は、第4の実施の形態の既存管理情報更新部565の構成と同様である。
第5の実施の形態のレスポンス処理部570の構成は、次管理情報更新部400の代わりに次管理情報更新部600(不図示)を備える点以外は、図24に例示した第2の実施の形態のレスポンス処理部370と同様の構成である。次管理情報更新部600の構成の詳細については、図58を参照して後述する。
図57は、本発明の第5の実施の形態における新規管理情報設定回路の動作の一例を示す図である。
有効フラグV#1乃至16のうちのいずれかが「1」であり、かつ、LD#i(iは1乃至16の整数)=1の場合について説明する。この場合、新規に登録する管理情報は、発行順序において末尾である。従って、新規管理情報設定回路は、有効フラグV、トランザクション識別情報id、ネクストエントリNext、および、トランザクション情報を設定し、さらに先頭フラグFに「0」を設定する。また、新規管理情報設定回路は、新規エントリ番号を既存管理情報更新部465に通知する。
有効フラグV#1乃至16のうちのいずれかが「1」であり、かつ、LD#1乃至16が全て「0」の場合について説明する。この場合、新規に登録する管理情報は発行順序において先頭である。従って、従って、新規管理情報設定回路は、有効フラグV、トランザクション識別情報id、ネクストエントリNext、および、トランザクション情報を設定し、さらに先頭フラグFに「1」を設定する。
図58は、本発明の第5の実施の形態における次管理情報更新部600の一構成例を示すブロック図である。次管理情報更新部600は、次管理情報更新回路608を備える。次管理情報更新回路608は、先頭の次の管理情報における先頭フラグFを有効にするものである。次管理情報更新回路608は、先頭管理情報取得部380からFD#1乃至16を受け取る。次管理情報更新回路608は、先頭の管理情報(FD#i=1)内のネクストエントリNextの示すエントリに有効な管理情報が格納されていれば、そのエントリにおいて、先頭フラグFを有効にする。
[バスブリッジの動作]
図59を参照して本発明の第5の実施形態のバッファ管理部の動作について説明する。図58は、本発明の第5の実施の形態における新規管理情報登録処理の一例を示すフローチャートである。この新規管理情報登録処理は、ステップSS935およびS940の代わりにS991およびS992を実行する点以外は、図29に例示した第2の実施の形態の新規管理情報登録処理と同様である。
新規管理情報登録部540は、ステップS934の後、ネクストエントリNextに新規エントリ番号を設定する(ステップS991)。また、新規管理情報登録部540は、ステップS939の後においても、ネクストエントリNextに新規エントリ番号を設定する(ステップS992)。
図60乃至図62を参照して、第5の実施の形態のバッファ管理部530の動作結果の一例について説明する。図39に示すように、マスタ#1からスレーブ#2へ、発行ID「3」のリクエストが2回転送された場合について想定する。1回目のリクエストが発行される前において、バッファ200のエントリは全て空であるものとする。
1回目のリクエストが発行された場合、バッファ管理部530は、発行IDとトランザクション識別情報idが一致する管理情報がバッファ220内に登録されているか否かを判断する。1回目のリクエスト発行時においてエントリが全て空であるため、新規に登録される管理情報は先頭かつ末尾の管理情報である。従って、図60に示すように、バッファ管理部530は、バッファ220内の空のエントリ(例えば、エントリ#1)に発行IDを含む管理情報を設定し、先頭フラグFを有効にする。このエントリ内の管理情報は末尾であるから、バッファ管理部530は、そのエントリ自身を示す新規エントリ番号「0」をネクストエントリNextに設定する。
2回目のリクエストが発行された場合、発行IDとトランザクション識別情報idが一致する管理情報が登録されているため、新規に登録される管理情報は、先頭でなく末尾の管理情報である。従って、図61に示すように、バッファ管理部530は、バッファ220内の空のエントリ(例えば、エントリ#4)に発行ID「3」を含む管理情報を設定し、先頭フラグFは無効にする。このエントリ内の管理情報は末尾であるから、バッファ管理部530は、ネクストエントリNextにそのエントリ自身を示す新規エントリ番号「3」を設定する。そして、バッファ管理部530は、発行IDとトランザクション識別情報idが一致する管理情報のうち、末尾であった管理情報(すなわち、エントリ#1内の管理情報)のネクストエントリNextを新規エントリ番号「3」により更新する。
次に、図42に示したように、スレーブ#2からマスタ#1に発行ID「3」のレスポンスが返送されたものとする。また、このレスポンスは、リードラストRLAST=1が設定された最終のリードデータを含むものとする。
最終のリードデータが返送された場合、バッファ管理部530は、トランザクション識別情報idが「3」で、先頭フラグFが有効の管理情報(エントリ#1の管理情報)内のトランザクション情報を読み出す。バッファ管理部530は、図62に示すように、読み出した管理情報を無効にしてエントリ#1を空にする。また、バッファ管理部530は、読み出した管理情報のネクストエントリNextの示すエントリにおいて先頭フラグFを有効にする。
このように、本発明の第5の実施の形態によれば、先頭フラグFをさらに設定しておくことにより、バッファ管理部530は、レスポンスに対応するトランザクション情報のうちの先頭のトランザクション情報を容易に読み出すことができる。また、ネクストエントリNextを設定することにより、バッファ管理部530は、先頭の次の管理情報を容易に取得することができる。具体的には、ネクストエントリNextを設定しない場合、図26および図27に例示したようにSN_L+1を求める加算器や、SN_L+1と各SNとを比較する回路が必要となる。これに対して、ネクストエントリNextを設定しておいた場合、ネクストエントリNextを参照するだけでよいため、図58に例示したように、加算器等の回路が不要となる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
110 マスタ
120、130 AXIバス
140 スレーブ
200 バスブリッジ
210 相互接続部
220 バッファ
230、430、530 バッファ管理部
211、213 変換情報生成器
212 アドレスチャネルバスマトリックス
214 レスポンスチャネルバスマトリックス
240、440、540 新規管理情報登録部
241、271 発行識別子(発行ID)取得回路
250、450、550 末尾管理情報取得部
252、282 シリアルナンバー(SN)取得回路
253、283、383、405、453、553、583 ID一致判断部
256 最大シリアルナンバー(SN)選択部
260、460、560 新規管理情報設定部
261、402 加算器
262 新規管理情報設定回路
270、370、570 レスポンス処理部
280、380、580 先頭管理情報取得部
286 最小シリアルナンバー(SN)選択部
290、390、590 先頭管理情報更新部
382 先頭管理情報判断回路
400、600 次管理情報更新部
401 先頭管理情報シリアルナンバー(SN)選択回路
404 次管理情報判断回路
406 シリアルナンバー(SN)一致判断部
408、608 次管理情報更新回路
450、550 末尾管理情報取得部
455 末尾SN選択部
452、552 末尾管理情報判断回路
465、565 既存管理情報更新部
554 末尾ネクストエントリ(Next)判断部
586 先頭管理情報選択部
図9は、本発明の第1の実施の形態における相互接続部210の一構成例を示すブロック図である。相互接続部210は、変換情報生成器211および213を備える。
変換情報生成器211は、AXIバス120から受信したリクエストをAXIバス130の仕様に基づき必要に応じて変換するものである。変換情報生成器211は、AXIバス120からリクエストを受信した場合、リクエストをバッファ管理部230に出力する。そして、変換情報生成器211は、リクエストに応じてバッファ管理部230がバッファフル通知を発行したか否かを判断する。バッファフル通知が発行されたのであれば、変換情報生成器211は、そのリクエストを転送せず、発行元のマスタにバッファフル通知を送信する。例えば、変換情報生成器211は、AXIプロトコルのリードアドレスチャネルにおけるリードアドレスレディ(ARREADY)に「0」を設定した信号をバッファフル通知として送信する。バッファフル通知が発行されなかったのであれば、変換情報生成器211は、AXIバス120から受信したリクエストを必要に応じて変換してAXIバス130に出力する。
変換情報生成器213は、AXIバス130から受信したレスポンスをAXIバス120の仕様およびトランザクション情報に基づき必要に応じて変換するものである。変換情報生成器213は、AXIバス130からレスポンスを受信した場合、そのレスポンスに対応するトランザクション情報をバッファ管理部230から受け取る。変換情報生成器213は、そのトランザクション情報とAXIバス130の仕様とに基づき、必要に応じてレスポンスを変換してAXIバス120に出力する。例えば、変換情報生成器213は、トランザクション情報の示すバースト転送の方式や転送先のバスのバス幅等に応じて転送データを結合または分割する。
110 マスタ
120、130 AXIバス
140 スレーブ
200 バスブリッジ
210 相互接続部
220 バッファ
230、430、530 バッファ管理部
211、213 変換情報生成器
40、440、540 新規管理情報登録部
241、271 発行識別子(発行ID)取得回路
250、450、550 末尾管理情報取得部
252、282 シリアルナンバー(SN)取得回路
253、283、383、405、453、553、583 ID一致判断部
256 最大シリアルナンバー(SN)選択部
260、460、560 新規管理情報設定部
261、402 加算器
262 新規管理情報設定回路
270、370、570 レスポンス処理部
280、380、580 先頭管理情報取得部
286 最小シリアルナンバー(SN)選択部
290、390、590 先頭管理情報更新部
382 先頭管理情報判断回路
400、600 次管理情報更新部
401 先頭管理情報シリアルナンバー(SN)選択回路
404 次管理情報判断回路
406 シリアルナンバー(SN)一致判断部
408、608 次管理情報更新回路
450、550 末尾管理情報取得部
455 末尾SN選択部
452、552 末尾管理情報判断回路
465、565 既存管理情報更新部
554 末尾ネクストエントリ(Next)判断部
586 先頭管理情報選択部

Claims (11)

  1. 一連のリクエストの転送処理と前記一連のリクエストに対応する一連のレスポンスの転送処理とをトランザクション処理として当該トランザクション処理を識別するための識別情報と前記リクエストの各々の発行順序を特定するための順序情報とを前記レスポンスの各々の転送処理を制御するためのトランザクション情報に対応付けて管理情報として保持するバッファと、
    マスタから前記リクエストが発行された場合に当該リクエストに基づいて前記管理情報を前記バッファに格納し、スレーブから前記レスポンスが返送された場合に当該レスポンスに係る前記識別情報を含む前記管理情報内の前記トランザクション情報を前記順序情報に従って前記バッファから読み出すバッファ管理部と、
    前記マスタから前記リクエストが発行された場合に当該リクエストを前記スレーブへ転送し、前記スレーブから前記レスポンスが返送された場合に前記順序情報に従って読み出された前記トランザクション情報に基づいて当該レスポンスの各々を前記マスタへ転送する相互接続部と
    を具備する相互接続装置。
  2. 前記順序情報は、前記リクエストの発行順序を示す管理番号を含み、
    前記バッファ管理部は、
    前記マスタから前記リクエストが発行された場合に当該リクエストに基づいて前記管理情報を前記バッファに格納する新規管理情報登録部と、
    前記スレーブから前記レスポンスが返送された場合に当該レスポンスに係る前記識別情報を含む前記トランザクション情報を前記管理番号の順に前記バッファから読み出すレスポンス処理部と
    を具備する請求項1記載の相互接続装置。
  3. 前記順序情報は、前記新規管理情報登録部により格納された前記管理情報が前記バッファ内の前記識別情報が同一の前記管理情報のうちの前記発行順序における先頭であることを示す先頭フラグをさらに含む
    請求項2記載の相互接続装置。
  4. 前記レスポンス処理部は、
    前記スレーブから前記レスポンスが返送された場合に当該レスポンスに係る前記識別情報を含む前記管理情報のうちの前記先頭フラグに対応するトランザクション情報を前記バッファから読み出すとともに前記先頭フラグを無効にする先頭管理情報更新部と、
    前記先頭更新部により読み出された前記管理情報の前記発効順序における次の管理情報内の前記先頭フラグを有効にする次管理情報更新部と
    を具備する請求項3記載の相互接続装置。
  5. 前記順序情報は、前記新規登録部により格納された前記管理情報が前記バッファ内の前記識別情報が同一の前記管理情報のうちの前記発行順序における末尾であることを示す末尾フラグをさらに含む
    請求項2記載の相互接続装置。
  6. 前記新規管理情報登録部は、前記リクエストが発行された場合に当該リクエストに係る前記識別情報を含む前記管理情報内の前記管理番号のうちの前記末尾フラグに対応する前記管理番号を末尾番号として前記末尾番号の次の管理番号と有効の前記末尾フラグとを含む前記順序情報を前記トランザクション情報に対応付けて前記バッファに格納し、
    前記バッファ管理部は、前記末尾番号に対応する前記末尾フラグを無効にする既存管理情報更新部をさらに具備する請求項5記載の相互接続装置。
  7. 前記順序情報は、前記バッファ管理部により格納された前記管理情報の前記発行順序における次の前記管理情報が格納されている位置を示す次位置情報を含む
    請求項1記載の相互接続装置。
  8. 前記バッファ管理部は、
    前記リクエストが発行された場合に当該リクエストに基づいて前記識別情報および前記順序情報を前記トランザクション情報に対応付けた前記管理情報を新規管理情報として前記新規管理情報を格納する位置を示す前記次位置情報を前記新規管理情報に含めて前記バッファに格納する新規管理情報登録部と、
    前記リクエストの転送処理に係る前記識別情報を含む前記管理情報のうちの前記発行順序における末尾の管理情報が含む前記次位置情報を前記新規管理情報の位置を示す前記次位置情報により更新する既存管理情報更新部と、
    前記レスポンスが返送された場合に当該レスポンスに係る前記識別情報を含む前記トランザクション情報を前記順序情報に従って前記バッファから読み出すレスポンス処理部と
    を具備する請求項7記載の相互接続装置。
  9. 前記順序情報は、前記新規登録部により格納された前記管理情報が前記バッファ内の前記識別情報が同一の前記管理情報のうちの前記発行順序における先頭であることを示す先頭フラグをさらに含む
    請求項7記載の相互接続装置。
  10. 前記レスポンス処理部は、
    前記レスポンスが返送された場合に当該レスポンスの転送処理に係る前記識別情報を含む前記管理情報のうちの前記先頭フラグに対応する前記トランザクション情報を前記バッファから読み出すとともに前記先頭フラグを無効にする先頭管理情報更新部と、
    前記先頭更新部により読み出された前記管理情報の前記発行順序における次の管理情報内の前記先頭フラグを有効にする前記バッファに格納する次管理情報更新部と
    を具備する請求項9記載の相互接続装置。
  11. 一連のリクエストの転送処理と前記一連のリクエストに対応する一連のレスポンスの転送処理とをトランザクション処理としてマスタから前記リクエストが発行された場合に前記トランザクション処理を識別するための識別情報と前記リクエストの各々の発行順序を特定するための順序情報とを前記レスポンスの各々の転送処理を制御するためのトランザクション情報に対応付けて管理情報としてバッファに格納する新規管理情報登録手順と、
    スレーブから前記レスポンスが返送された場合に当該レスポンスに係る前記識別情報を含む前記トランザクション情報を前記順序情報の示す前記発行順序に従って前記バッファから読み出すレスポンス処理手順と
    を具備する相互接続装置の制御方法。
JP2010270066A 2010-12-03 2010-12-03 相互接続装置、および、その制御方法 Pending JP2012118906A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010270066A JP2012118906A (ja) 2010-12-03 2010-12-03 相互接続装置、および、その制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010270066A JP2012118906A (ja) 2010-12-03 2010-12-03 相互接続装置、および、その制御方法

Publications (1)

Publication Number Publication Date
JP2012118906A true JP2012118906A (ja) 2012-06-21

Family

ID=46501617

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010270066A Pending JP2012118906A (ja) 2010-12-03 2010-12-03 相互接続装置、および、その制御方法

Country Status (1)

Country Link
JP (1) JP2012118906A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020506482A (ja) * 2017-02-08 2020-02-27 エイアールエム リミテッド コヒーレント相互接続システムにおける読み取りトランザクショントラッカーのライフタイム
CN118092815A (zh) * 2024-04-23 2024-05-28 沐曦集成电路(上海)有限公司 一种写操作的保序方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020506482A (ja) * 2017-02-08 2020-02-27 エイアールエム リミテッド コヒーレント相互接続システムにおける読み取りトランザクショントラッカーのライフタイム
JP7140768B2 (ja) 2017-02-08 2022-09-21 アーム・リミテッド コヒーレント相互接続システムにおける読み取りトランザクショントラッカーのライフタイム
CN118092815A (zh) * 2024-04-23 2024-05-28 沐曦集成电路(上海)有限公司 一种写操作的保序方法

Similar Documents

Publication Publication Date Title
JP3275051B2 (ja) バスブリッジにおけるトランザクション順序を維持し、遅延応答をサポートする方法及びそのための装置
US10248564B2 (en) Contended lock request elision scheme
US8601192B2 (en) Arbitration device, arbitration system, arbitration method, semiconductor integrated circuit, and image processing device
US8677045B2 (en) Transaction reordering system and method with protocol indifference
US20150301886A1 (en) Information processing apparatus, system, and information processing method
US20080288691A1 (en) Method and apparatus of lock transactions processing in single or multi-core processor
JP2001117859A (ja) バス制御装置
US8028284B2 (en) Data processing system and program for transferring data
JP2020524859A (ja) メモリアクセス技術およびコンピュータシステム
US9213545B2 (en) Storing data in any of a plurality of buffers in a memory controller
US20070050527A1 (en) Synchronization method for a multi-processor system and the apparatus thereof
CN112955876B (zh) 用于在数据处理网络中传输数据的方法和装置
JP5664187B2 (ja) 相互接続装置、および、その制御方法
US8806135B1 (en) Load store unit with load miss result buffer
US7934043B2 (en) Data processing apparatus for controlling access to a memory based upon detection of completion of a DMA bus cycle
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
US9798492B2 (en) Semiconductor device including a plurality of function blocks
US20080052424A1 (en) Data access system, data access apparatus, data access integrated circuit, and data access method
JP2012118906A (ja) 相互接続装置、および、その制御方法
JP5659817B2 (ja) 相互接続装置
CN107783909B (zh) 一种内存地址总线扩展方法及装置
JP2014179066A (ja) ストレージ制御装置、ストレージシステム、およびストレージ制御方法
US10621082B2 (en) Information processing device that guarantees consistency in access spaces
US6694410B1 (en) Method and apparatus for loading/storing multiple data sources to common memory unit
US10223264B2 (en) Data access control apparatus