JP2010134627A - バス中継装置 - Google Patents
バス中継装置 Download PDFInfo
- Publication number
- JP2010134627A JP2010134627A JP2008308776A JP2008308776A JP2010134627A JP 2010134627 A JP2010134627 A JP 2010134627A JP 2008308776 A JP2008308776 A JP 2008308776A JP 2008308776 A JP2008308776 A JP 2008308776A JP 2010134627 A JP2010134627 A JP 2010134627A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- transfer
- protocol
- write
- read
- 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
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】AXIプロトコルからOCPプロトコルに変換を行うバスブリッジにおいてもアウトオブオーダ転送を可能にし、かつAXIプロトコルにおいてポステッドライト動作を可能とする。
【解決手段】LSI内部においてバスプロトコルを用いるバスの転送動作を受け取り、他のバスプロトコルを用いる他のバスの転送動作へ変換するバス中継装置であって、前記他のバスプロトコルの転送IDを生成する生成手段と、前記バスから受け取ったバスの転送動作の前記バスプロトコルに含まれるアドレス情報と、前記バスの転送動作を前記他のバスの転送動作へ変換した際に前記生成した転送IDとを格納するバッファ手段と、前記バスの転送動作とアドレス情報とに基づいて、前記転送IDの生成を制御する制御手段とを備えている。
【選択図】図1
【解決手段】LSI内部においてバスプロトコルを用いるバスの転送動作を受け取り、他のバスプロトコルを用いる他のバスの転送動作へ変換するバス中継装置であって、前記他のバスプロトコルの転送IDを生成する生成手段と、前記バスから受け取ったバスの転送動作の前記バスプロトコルに含まれるアドレス情報と、前記バスの転送動作を前記他のバスの転送動作へ変換した際に前記生成した転送IDとを格納するバッファ手段と、前記バスの転送動作とアドレス情報とに基づいて、前記転送IDの生成を制御する制御手段とを備えている。
【選択図】図1
Description
本発明はバス中継装置に関し、特に、システム内の複数のモジュール間を接続する際に規定された2種類の異なるバスプロトコル間を変換するために用いて好適な技術に関する。
近年、プロセスの微細化が進み、LSIに内蔵される回路規模は数千万ゲートに達するようになった。一方、デバイスサイズの微細化の影響により様々な問題が顕著になってきている。その中でも、とりわけ配線遅延の増大は重要な問題である。このLSI内部の配線遅延から大きな影響を受けるものとして、モジュール間を配線により接続するシステムバスが挙げられる。
今日、LSI内部のシステムバスとしては英国ARM社の規定するAMBA(バージョン2.0)、あるいはその規格の中のバスの一つであるAHBが業界標準となっている。AHBはいわゆる共有バス構造を用いており、複数のバスマスタと複数のスレーブとが単一のバス構造によって接続されている。この共有バス構造はアドレスデコーダやマルチプレクサ、デマルチプレクサといった要素により構成されている。共有バス構造を用いているので、全てのマスタ、あるいは全てのスレーブが同一のバス信号を同時に観測できるように、同一信号の配線をLSI内部で長い距離に渡って引き回すことになる。
AHBはこのような構成を取るため、前述のように配線遅延が問題となってきている現在、動作周波数を上げることが困難になってきている。そこで、新たなバス規格として、ARM社が規定したAMBAバージョン3.0AXIプロトコルと、OCP−IP(Open Core Protocol International Partnership)により規定されたOCPプロトコルとがある。
AXIプロトコルは、AHBのような共有バス構造ではなく、イニシエータとターゲットとの間のポイントトゥーポイントでの接続を規定したプロトコルである。また、AXIプロトコルは、アドレス、コマンド、データがそれぞれ別チャネルに分離されており、それぞれのチャネル毎にValid信号とReady信号とを用いた簡単な2線ハンドシェークによって送信する。すなわち、イニシエータがアサートするValid信号とターゲットのアサートするReady信号との両者が同時にアサートされているサイクルで一つの転送が成立する。
なお、AXIはプロトコルの規定であってバス接続網の実装までは規定していない。通常はクロスバー構造や、マルチレイヤ構造などでの実現が想定される。ARM社は自社のIPコアとしてマルチレイヤ構造のPrimeCell PL300を供給している。
図11は、クロスバー構造を用いたシステムLSIの基本的な構造例を示すブロック図である。
図11において、101はバス接続網であり、ここではクロスバー構造をとっているため任意のマスタと任意のスレーブとの間を同時多重に接続することができる。ただし一つのバスマスタは同時に一つのバススレーブとのみ接続できる。
図11において、101はバス接続網であり、ここではクロスバー構造をとっているため任意のマスタと任意のスレーブとの間を同時多重に接続することができる。ただし一つのバスマスタは同時に一つのバススレーブとのみ接続できる。
102〜105はバスマスタであり、リード・ライトコマンドを生成しスレーブにアクセスする。106〜109はバススレーブである。110、111はバスブリッジであり、それぞれ別のバスに接続されたバスマスタ102〜105、バススレーブ106〜109との間のデータ転送を媒介する。
なお、AXIは信号はライトアドレス、リードアドレス、ライトデータ、ライトレスポンス、リードデータから成る5つのチャネルに分割されている。そして、それらは他のチャネルと直接的には依存関係が無く、各々独立して動作できるようになっている。すなわち、マスタからスレーブに向けてライトアドレスチャネルを通じライト転送のアドレスを送信している間にも、スレーブからマスタに対しリードデータを送信することが可能である。その他のチャネル間も同様であり、以下の表1にAXIで規定される信号のリストを示す。
このように、AXIはアドレス・コマンド転送フェーズとデータ転送フェーズとが分離されているためバス自身の制約によって性能が制限されることがなく、高効率に転送することができる。
また、各チャネルには転送毎にIDが付与可能で、これによりアドレス・コマンド転送の順序とその処理の順序とが異なるアウトオブオーダ転送をサポートしている。例えば、リードの場合には、マスタは特定のIDを付与したリードアドレス転送を、リードアドレスチャネルを通じて発行する。その転送のアドレスに割当てられているスレーブは、そのリードコマンドに対する応答として、同一のIDを持ったリードデータ転送を、リードデータチャネルを介して当該マスタに対して行う。
該マスタは、複数のアドレス転送を応答が未完了のまま発行することができるが、リードデータのIDを識別することによっていずれのリードアドレス転送に対するリード応答であるかを知ることができる。ライトの場合も同様に、一回の転送に対し、ライトアドレス、ライトデータ、ライトレスポンスの各チャネルにつき同一のIDを用いる。
一方、OCPプロトコルも基本的な考え方はAXIと同様であり、ポイントトゥーポイントでの接続を規定したプロトコルであり、また、Thread IDを用いたアウトオブオーダ転送も可能である。以下の表2にOCPプロトコルで規定される代表的な信号のリストを示す。
OCPプロトコルでは、この他にも多数の信号が定義されているが、それら全てを使用する必要はなく、どの信号を利用するかをユーザは選択することができる。
AXIプロトコルとOCPプロトコルとの大きな違いの一つは、前者がアドレスチャネルをリード、ライト個別に備えるのに対し、後者は共用している点である。また、前述のAXIプロトコルとOCPプロトコルとが共にサポートする、アウトオブオーダ転送は以下のような場合に効果的である。
一つは、マスタが複数のスレーブに対して同時にアクセス要求を発行する場合である。一般にスレーブがリード要求ないしライト要求を処理するのに要する時間は、スレーブ毎に異なるため、マスタが一時に複数の要求を発行した場合、それら要求に対するリードデータ転送あるいはライトレスポンス転送は順不同で行われる可能性がある。従ってアウトオブオーダをサポートしないシステムにおいては、複数のスレーブに対するアクセスは同時に並行して行うことができず、必ず順序的に行わなければならない。アウトオブオーダをサポートするシステムであればその制約は無くなり、複数スレーブを同時並行してアクセスできるため、効率を上げることができる。
もう一つは、スレーブが自身の処理効率を高めるため、コマンドを受け取った順とは異なる順番で処理を行う場合である。このようなスレーブの代表例としてSDRAMやDDR−SDRAMをサポートするメモリコントローラが挙げられる。今日のSDRAM系のデバイスは内部が複数のバンクに分割されており、それぞれが独立して動作できるという特徴を持っている。さらに各バンクの内部は複数のページから構成されている。
SDRAMへのアクセスは、まず一つのページをオープンすることから始まる。これはページに対応するアドレス情報と共にRAS信号をSDRAMに入力することにより行われる。一旦ページがオープンされると、CAS信号によってページ内のデータを高速かつランダムにアクセスすることが可能である。なお、ライトの場合はWE信号とともにCAS信号によってページ内のデータを高速かつランダムにアクセスすることが可能である。
ただし、一時にオープンできるページの数はバンクあたり一つのみであるので、アクセスしようとするデータが現在オープンされているページとは別のページに存在する場合は、一旦現ページをクローズする必要がある。これはRAS信号とWE信号(プリチャージコマンド)とを同時にSDRAMに入力することで行われる。その後、アクセスするページをRAS信号によりオープンする。
これらの信号入力のタイミングはデバイスによって必要最小限の間隔が規定されている。例えば、ページをオープンするためのRAS信号を入力するタイミングと、その後のCAS信号を入力するタイミングとの間隔はtRCDで規定される。
また、例えばプリチャージコマンドとページオープンコマンドとの最小間隔はtRPで規定されている。連続してアクセスする場合に必要なデータが同一ページにある場合は、CAS信号を続けて入力すればよく、この場合にはSDRAMの最大スループットを引き出すことができ、「ページヒット」と呼ばれている。図12に、ページヒットの場合のメモリバスのタイミング示す。
一方、必要なデータが同一ページに無い場合は「ページミス」と呼ばれ、前述のように一旦プリチャージコマンドを入力し、次いで別のページをオープンした後、ようやくCAS信号を入力できることになる。このページミスが連続する場合、SDRAMのスループットは著しく低下する。図13に、ページミスの場合のメモリバスのタイミングを示す。
ただし、2つのページがそれぞれ別のバンクにある場合は前述した例とは異なる。前述のように各バンクは独立して動作することができるので、2番目のページへのアクセスにおいて、1番目のページをクローズする必要はなく、ただちにRAS信号を入力することにより新たなページをオープンすることができる。この場合のタイミングを図14に示す。
当該ページが既にオープンされている状態にあれば、最短のタイミングでCAS信号を入力することができる。逆に連続してアクセスされる2つの異なるページが同一バンク内に存在する場合、「バンク衝突」あるいは「バンク競合」と呼ばれる。
高度なメモリコントローラは、SDRAMのこのような特性を活かし、マスタから受け取ったコマンドを並び換えることにより、なるべくページミスやバンク衝突を回避しようとする。従って、例えば2つのリードコマンドを連続して受け取った場合、この並び替えによって2番目のリードコマンドの方が先にSDRAMに対して発行されることが有り得る。
ここで注意しなければならないのは、アウトオブオーダ転送をサポートしないバスプロトコルを用いている場合には、コマンドの完了順序を守る必要があるということである。そのためには2番目のリードコマンドに対するリードデータを一時スレーブの内部バッファに格納しておく必要がある。
次に、1番目のリードコマンドをSDRAMに発行しそのリードデータをバスを介してマスタに転送した後、2番目のリードコマンドのリードデータを内部バッファから取り出し、マスタに転送するようにしなければならない。その結果、内部バッファ分の回路規模が増大してしまうのみならず、リードデータが内部バッファに滞留されるため平均リードレイテンシが増加し、性能が低下してしまうことになる。
一方、アウトオブオーダをサポートするバスプロトコルを用いれば、コマンドを受け取った順序とは無関係にリードデータをマスタに転送できるため、このような不利は生じない。このようにアウトオブオーダ転送をサポートするバスプロトコルを用いると、バスがボトルネックにならず高性能化を達成しやすくなるため、今後は標準的に用いられるようになると考えられる。
前述したように、AXIプロトコル及びOCPプロトコルでは、転送毎のIDあるいはThread IDを用いてアウトオブオーダ転送を実現している。ところが、複数の転送に同一のIDが与えられていた場合は、転送の処理順序は発行順序と一致することが保証されなければならない。これはバス接続網とスレーブとに課せられた機能であり、マスタは順次処理が必要な場合は同一のIDを付与したコマンドを発行するだけである。
なお、OCPプロトコルの場合はそれだけでよいが、AXIプロトコルの場合は異なる。これが可能なのは転送がライトあるいはリードの同一種類の場合についてであり、ライトとリードとのチャネル間ではお互いのIDには関係が無い。すなわち、同一のIDが付与されていてもそれらの間の処理順序は規定されない。
そこで、マスタがリードとライトとの間で処理順序の保証を必要とする場合には、次のように動作することがプロトコル仕様上要求されている。すなわち、処理順序の保証が必要な2つのリード・ライトあるいはライト・リードのアクセス要求がある場合には、必ず最初のコマンドの処理が完了したことを確認した後、次のコマンドを発行するようにする。
最初のコマンドがリードの場合は、スレーブからリードデータが返るのを待って、次のライトコマンドを発行する。最初のコマンドがライトの場合も、AXIプロトコルはライトレスポンスチャネルを規定しているため、スレーブからライト応答が返るのを待って次のリードコマンドを発行する。
ところが、このような動作を行う場合、スレーブに依存するが、例えばスレーブがチップ外部のSDRAMを制御するメモリコントローラであった場合には、リードリターンもライト応答も数十サイクル単位の遅延時間を必要とする。そのため、AXIマスタのスループットは大きく低下する可能性がある。ただし、この動作が必要なのはあくまで依存関係のあるライト−リードあるいはリード−ライトの間においてのみである。このような状況は限定されており、それ以外の場合は、OCPプロトコルと同様、リードもライトも先のコマンドの完了を待つことなく次々にパイプライン的に発行することが可能である。
以上のような動作を行うため、AXIプロトコルを汎用的に用いるためにはライト応答チャネルが必須である。従ってポステッドライト動作を行うことができず、必ずライトコマンドの完了をライト応答によってマスタに通知する機能が必要である。
一方、OCPプロトコルの場合は、ポステッドライト動作と非ポステッドライト動作との両方をサポートしている。アドレス/コマンドチャネルもリード・ライトで共用である。したがって、必ずしもライト応答を待たずとも依存関係のある後続のリードコマンドを発行することが可能な仕様になっている。ポステッドライト動作をサポートする最大の利点は、ライト応答を待つ必要が無いため、一般的にライトコマンド発行のスループットを上げることができることである。
ところが、AXIプロトコルからOCPプロトコルに変換を行うバスブリッジを構成する場合には、AXI側から見たときライトコマンドの完了を知る必要がある。そのため、結局OCP側でも非ポステッドライト動作が必要になる。このためAXI−OCPブリッジにおいてはライトコマンド発行のスループットを十分上げることができない。これを解決する一つの方法は、OCP側において全て同一のThread IDを用いることである。ところが、この方法を用いた場合には、前述のアウトオブオーダ転送が不可能になり、この場合もシステムのスループットを下げる原因となる。
本発明は前述の問題点に鑑み、AXIプロトコルからOCPプロトコルに変換を行うバスブリッジにおいてもアウトオブオーダ転送を可能にし、かつAXIプロトコルにおいてポステッドライト動作を可能とすることを目的としている。
本発明のバス中継装置は、LSI内部においてバスプロトコルを用いるバスの転送動作を受け取り、他のバスプロトコルを用いる他のバスの転送動作へ変換するバス中継装置であって、前記他のバスプロトコルの転送IDを生成する生成手段と、前記バスから受け取ったバスの転送動作の前記バスプロトコルに含まれるアドレス情報と、前記バスの転送動作を前記他のバスの転送動作へ変換した際に前記生成した転送IDとを格納するバッファ手段と、前記バスの転送動作とアドレス情報とに基づいて、前記転送IDの生成を制御する制御手段とを備えたことを特徴とする。
本発明によれば、AXIプロトコルからOCPプロトコルに変換を行うバスブリッジにおいてもアウトオブオーダ転送を可能にし、かつAXIプロトコルにおいてポステッドライト動作を行うことができる。
(第1の実施形態)
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態に係るバスブリッジ(バス中継装置)500の構成例を示すブロック図である。
図1において、バスブリッジ500は、転送元として不図示のAXIバスマスタあるいはバス接続網と接続され、転送先として不図示のOCPバススレーブまたはバス接続網と接続される。
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図1は、本実施形態に係るバスブリッジ(バス中継装置)500の構成例を示すブロック図である。
図1において、バスブリッジ500は、転送元として不図示のAXIバスマスタあるいはバス接続網と接続され、転送先として不図示のOCPバススレーブまたはバス接続網と接続される。
501〜505は各チャネルのAXIプロトコルインターフェースであり、501はライトアドレスIF、502はリードアドレスIF、503はリードデータIF、504はライトデータIFである。また、505はライトレスポンスIFである。このように、それぞれはインターフェースの機能フロックである。
512〜515は、それぞれOCPプロトコルをサポートするインターフェースである。コマンド・アドレスIF512、リードデータIF513、ライトデータIF514、及びライトレスポンスIF515の各チャネルは、前述の各チャネルに対応する。506は調停部であり、AXIプロトコルのライトアドレスチャネルと、リードアドレスチャネルとの間を調停し、同時にコマンドが発行された場合にいずれかのチャネルを選択する機能を備える。ここで調停に用いるアルゴリズムはラウンドロビン等公知のものを使用すればよいため説明は省略する。
507はライトアドレス情報保持部であり、508はリードアドレス情報保持部である。この両者は同一の構成であり、図2は、ライトアドレス情報保持部507及びリードアドレス情報保持部508の構成例を示す図である。
図2に示すように、ライトアドレス情報保持部507及びリードアドレス情報保持部508は、それぞれ8ビットのAXI転送ID、AXIプロトコルのアドレスのうち上位Mビット、OCPのThread IDから成るN個のエントリを保持している。ここで、M及びNは任意の正整数であり、好適にはMは26〜32であるが本実施形態については32を用い、Nは4〜8の値であるが本実施形態では4を用いる。
図2に示すように、ライトアドレス情報保持部507及びリードアドレス情報保持部508は、それぞれ8ビットのAXI転送ID、AXIプロトコルのアドレスのうち上位Mビット、OCPのThread IDから成るN個のエントリを保持している。ここで、M及びNは任意の正整数であり、好適にはMは26〜32であるが本実施形態については32を用い、Nは4〜8の値であるが本実施形態では4を用いる。
ライトアドレス情報保持部507及びリードアドレス情報保持部508は、AXI側から新たなコマンドを受け付けると、そのコマンドからAXI転送ID及びAXIアドレスの情報を抜き出し、新たなエントリに登録する。さらに、転送ID生成部511から当該コマンドに対応するOCPのThread IDを受け取り、同一エントリに登録する。
509はライトアドレス情報比較部であり、510はリードアドレス情報比較部である。この両者も同一の構成であるが、後述するように、調停部506によって調停された新たな転送コマンドがリードであるかライトであるかによって相補的な動作をする。
511は転送ID生成部であり、ライトアドレス情報比較部509及びリードアドレス情報比較部510における比較結果に従い、OCPプロトコル側のThread IDを生成する。具体的な動作は以下のようである。
第1の条件としては、新規コマンドがリードであり、そのアドレスがライトアドレス情報保持部507の保持するいずれかのアドレスと一致した場合である。この場合は、該一致したアドレスと一対で保持されているOCPのThread IDを新規コマンドのThread IDとする。
第2の条件としては、新規コマンドがライトであり、そのアドレスがリードアドレス情報保持部508の保持するいずれかのアドレスと一致した場合である。この場合は、該一致したアドレスと一対で保持されているOCPのThread IDを新規コマンドのThread IDとする。
第3の条件としては、新規コマンドがリードであり、AXI転送IDがリードアドレス情報保持部508の保持するいずれかのAXI転送IDと一致した場合である。この場合、一致したAXI転送IDと一対で保持されているOCPのThread IDを新規コマンドのThread IDとする。
第4の条件としては、新規コマンドがライトであり、アドレスがライトアドレス情報保持部507の保持するいずれかのAXI転送IDと一致した場合である。この場合は、該一致したAXI転送IDと一対で保持されているOCPのThread IDを新規コマンドのThread IDとする。
第5の条件としては、第1〜第4の条件のうち、複数の条件が競合する場合は、競合が解消されるまで新たなコマンドをOCP側に転送することを中断する。
第6の条件としては、上記いずれにも該当しない場合、その時点でライトアドレス情報保持部507およびリードアドレス情報保持部508のいずれにも登録されていないThread IDを選択し新規コマンドのThread IDとする。
第7の条件としては、ライトアドレス情報保持部507またはリードアドレス情報保持部508においてエントリに空きが無く、新たなコマンドに対応するエントリを登録できない場合である。この場合は、エントリに空きができるまでコマンドをOCP側に転送することを中断する。
以上のように、アウトスタンディング・コマンドのアドレスと新規コマンドのアドレスとが一致する場合は、OCP側でも同一Thread IDを用いることでAXIの規約により課せられるコマンドの発行順の順序性を保つことができる。さらに、リードコマンド間、ライトコマンド間の順序性を保つため、AXI転送IDも比較し、独立した転送IDが同一のコマンドについてはOCP側でも同一のThread IDを用いるように構成されている。
なお、アドレスの比較に際しては必ずしも32ビットを全て比較する必要はなく、任意の上位Mビットのみについて比較を行うように構成することも可能である。その場合は(32−M)ビットで表現されるアドレス範囲を単位としてその範囲内におけるリード・ライトの順序性を保つように動作する。
次に、具体的な転送動作の変換における動作シーケンスについて、図3を参照しながら説明する。
図3は、任意の一つのAXIマスタ、バスブリッジ、任意の一つのOCPスレーブ間のデータ転送の手順を示すシーケンス図である。
図3において、まず、AXIマスタによりライト転送ID=1、アドレス0x100番地へのライトコマンドが発行される。このライトコマンドはバスブリッジ500を中継し、Thread ID=1としてOCPスレーブに伝達する。これと同時に、AXIマスタに対しライト転送ID=1のライト応答を返す(図3のステップ(1))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図4に示すようなものである。
図3は、任意の一つのAXIマスタ、バスブリッジ、任意の一つのOCPスレーブ間のデータ転送の手順を示すシーケンス図である。
図3において、まず、AXIマスタによりライト転送ID=1、アドレス0x100番地へのライトコマンドが発行される。このライトコマンドはバスブリッジ500を中継し、Thread ID=1としてOCPスレーブに伝達する。これと同時に、AXIマスタに対しライト転送ID=1のライト応答を返す(図3のステップ(1))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図4に示すようなものである。
次に、再びAXIマスタによりリード転送ID=2、アドレス0x100へのリードコマンドが発行される。ここで、最初のコマンドと2番目のコマンドとの間ではアドレスが一致する。このコマンドもバスブリッジ500を中継し、転送ID生成部511はThread IDには最初のコマンドと同一の1を与える。そして、OCPスレーブに伝達する(図3のステップ(2))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図5に示すようなものである。
次に、AXIマスタによりリード転送ID=2、アドレス0x220番地へのリードコマンドが発行される。このコマンドは以前に発行された2つのコマンドとはアドレスは異なるが、直前のリードコマンドとリード転送IDが同一である。したがって、転送ID生成部511は、リードアドレス情報保持部508の内容を参照し、OCPのThread IDとして1を与える。そして、OCPスレーブに伝達する(図3のステップ(3))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図6に示すようなものである。
次に、OCPスレーブより最初のライトコマンドに対するライト応答が返される。ここで、AXIマスタに対してはすでにライト応答は返されているので、このライト応答はバスブリッジ500において処理される。具体的には、当該応答がエラーを通知するものであれば、不図示のCPUに対し割り込みを上げる等の処理を行う。書き込み成功を表すものであれば何もしない。このとき、同時にライトアドレス情報保持部507の対応するエントリの内容を抹消する(図3のステップ(4))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図7に示すようなものである。
次に、AXIマスタによりライト転送ID=2、アドレス0x220番地へのライトコマンドが発行される。このコマンドのアドレスは3番目のコマンド(リード)のアドレスと一致する。よって、転送ID生成部511はThread ID=1とする。そして、OCPスレーブに伝達する。これと同時に、AXIマスタに対しライト転送ID=2のライト応答を返す(図3のステップ(5))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図8に示すようなものである。
引き続き、OCPスレーブにより2番目のコマンド(リード)と3番目のコマンド(リード)とに対するリードデータが順次返される。ここで、これらのコマンドには同一のThread IDが与えられており、これらリードデータはコマンドが発行された順番で返される。この時点でリードアドレス情報保持部508にはThread ID=1のリードコマンドに対応するエントリが2つ登録されている。そこで、登録された転送要求の順番どおりにこれらエントリを参照し、対応するAXI転送IDを取り出し、AXIマスタに返す。これと同時に、当該エントリを抹消する(図3のステップ(6))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図9に示すようなものである。
次に、AXIマスタによりリード転送ID=2、アドレス0x300番地へのリードコマンドが発行される。このコマンドは、以前に発行され、かつ未だOCPスレーブが応答を返していないコマンドとはアドレスも転送IDも異なる。したがって、転送ID生成部511はOCPのThread IDとして新たに2を与える。そして、OCPスレーブに伝達する(図3のステップ(7))。この時点におけるライトアドレス情報保持部507及びリードアドレス情報保持部508の保持する情報は、図10に示すようなものである。
本実施形態では、LSI内部において前述した動作を行うことによりAXIプロトコルで規定される処理の順序性を保つとともに、AXIマスタに対しポステッドライト動作を可能にしている。以上において、本実施形態に関して図示して説明したが、さらに他の修正および改善が可能であることは言うまでもない。
例えば、本実施形態においては、AXIマスタがアクセスするOCPスレーブの性質に関わらず動作する例を示したが、これに限定するものではない。例えば、第1のバスから受け取ったバス転送動作が、第2のバスに接続されたOCPスレーブのうちいずれのOCPスレーブを宛先とするかを判定する制御を行うアドレスデコード部を具備するようにしてもよい。そして、宛先のOCPスレーブがアウトオブオーダ処理を行う場合のみ本実施形態と同様の動作を行うように構成してもよい。
この場合、宛先のOCPスレーブがアウトオブオーダ処理を行わない場合には、前記第1のバスからバス転送動作を受け取った際に、バス転送動作がライト動作であった場合には直ちに前記第1のバスに対してバス転送完了応答を行う。このとき、バッファは使用しないよう構成することができる。この構成では、必要な場合にのみ内部に備えるバッファを使用することになり、バッファを構成するために必要な回路リソースを最適化することができる。
また、例えば、本実施形態においては、第1のバスプロトコルとしてAXIを用い、リードアドレスチャネルとライトアドレスチャネルとが分離している場合を例に示したが、これに限定するものではない。リードアドレスチャネルとライトアドレスチャネルとが分離していないプロトコルを用いたシステムのバスブリッジに対しても適用することができる。
例えば、第1のバスプロトコルが転送IDを備えるものでなく、常にインオーダー動作を要求するような場合にも、ポステッドライトとオウトオブオーダー処理とを両立させることができる。したがって、本発明は前述の実施形態に示された特定の形式に限定されるものではない。
(本発明に係る他の実施形態)
前述した本発明の実施形態におけるバス中継装置を構成する各手段、並びにバス中継方法の各工程は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
前述した本発明の実施形態におけるバス中継装置を構成する各手段、並びにバス中継方法の各工程は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する場合も含む。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスクなどがある。さらに、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する方法がある。そして、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、その他の方法として、本発明のプログラムを暗号化してCD−ROM等の記録媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
500 バスブリッジ
501 ライトアドレスIF
502 リードアドレスIF
503 リードデータIF
504 ライトデータIF
505 ライトレスポンスIF
506 調停部
507 ライトアドレス情報保持部
508 リードアドレス情報保持部
509 ライトアドレス情報比較部
510 リードアドレス情報比較部
511 転送ID生成部
512 コマンド・アドレスIF
513 リードデータIF
514 ライトデータIF
515 ライトレスポンスIF
501 ライトアドレスIF
502 リードアドレスIF
503 リードデータIF
504 ライトデータIF
505 ライトレスポンスIF
506 調停部
507 ライトアドレス情報保持部
508 リードアドレス情報保持部
509 ライトアドレス情報比較部
510 リードアドレス情報比較部
511 転送ID生成部
512 コマンド・アドレスIF
513 リードデータIF
514 ライトデータIF
515 ライトレスポンスIF
Claims (4)
- LSI内部においてバスプロトコルを用いるバスの転送動作を受け取り、他のバスプロトコルを用いる他のバスの転送動作へ変換するバス中継装置であって、
前記他のバスプロトコルの転送IDを生成する生成手段と、
前記バスから受け取ったバスの転送動作の前記バスプロトコルに含まれるアドレス情報と、前記バスの転送動作を前記他のバスの転送動作へ変換した際に前記生成した転送IDとを格納するバッファ手段と、
前記バスの転送動作とアドレス情報とに基づいて、前記転送IDの生成を制御する制御手段とを備えたことを特徴とするバス中継装置。 - 前記他のバスプロトコルに含まれる前記転送IDが同一である2つのバスの転送動作を、転送要求の発行順に処理することを特徴とする請求項1に記載のバス中継装置。
- 前記バスプロトコルは、リードアドレスの転送に用いる転送IDと、ライトアドレスの転送に用いる転送IDとが独立していることを特徴とする請求項1に記載のバス中継装置。
- 前記他のバスに接続された少なくとも1つのバススレーブに転送したコマンドは、アウトオブオーダで処理されるものであることを特徴とする請求項1乃至3の何れか1項に記載のバス中継装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308776A JP2010134627A (ja) | 2008-12-03 | 2008-12-03 | バス中継装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308776A JP2010134627A (ja) | 2008-12-03 | 2008-12-03 | バス中継装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010134627A true JP2010134627A (ja) | 2010-06-17 |
Family
ID=42345880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008308776A Pending JP2010134627A (ja) | 2008-12-03 | 2008-12-03 | バス中継装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010134627A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013527955A (ja) * | 2010-06-23 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | PCIeアーキテクチャ中でのI/O拡張要求および応答のルーティング |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8656228B2 (en) | 2010-06-23 | 2014-02-18 | International Business Machines Corporation | Memory error isolation and recovery in a multiprocessor computer system |
US8677180B2 (en) | 2010-06-23 | 2014-03-18 | International Business Machines Corporation | Switch failover control in a multiprocessor computer system |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8918573B2 (en) | 2010-06-23 | 2014-12-23 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
JP2016051420A (ja) * | 2014-09-02 | 2016-04-11 | 株式会社メガチップス | バスブリッジ及びバスブリッジ群 |
JP2018502359A (ja) * | 2014-10-31 | 2018-01-25 | ザイリンクス インコーポレイテッドXilinx Incorporated | デッドロック回避のための方法及び回路 |
JP2019507926A (ja) * | 2016-02-23 | 2019-03-22 | ハネウェル・インターナショナル・インコーポレーテッドHoneywell International Inc. | モジュールバスとaxiバスの間のリクエストを変換するためのバスブリッジ |
-
2008
- 2008-12-03 JP JP2008308776A patent/JP2010134627A/ja active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013527955A (ja) * | 2010-06-23 | 2013-07-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | PCIeアーキテクチャ中でのI/O拡張要求および応答のルーティング |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8656228B2 (en) | 2010-06-23 | 2014-02-18 | International Business Machines Corporation | Memory error isolation and recovery in a multiprocessor computer system |
US8677180B2 (en) | 2010-06-23 | 2014-03-18 | International Business Machines Corporation | Switch failover control in a multiprocessor computer system |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8700959B2 (en) | 2010-06-23 | 2014-04-15 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8745292B2 (en) | 2010-06-23 | 2014-06-03 | International Business Machines Corporation | System and method for routing I/O expansion requests and responses in a PCIE architecture |
US8769180B2 (en) | 2010-06-23 | 2014-07-01 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US8918573B2 (en) | 2010-06-23 | 2014-12-23 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
US9201830B2 (en) | 2010-06-23 | 2015-12-01 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
US9298659B2 (en) | 2010-06-23 | 2016-03-29 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIE) environment |
JP2016051420A (ja) * | 2014-09-02 | 2016-04-11 | 株式会社メガチップス | バスブリッジ及びバスブリッジ群 |
JP2018502359A (ja) * | 2014-10-31 | 2018-01-25 | ザイリンクス インコーポレイテッドXilinx Incorporated | デッドロック回避のための方法及び回路 |
JP2019507926A (ja) * | 2016-02-23 | 2019-03-22 | ハネウェル・インターナショナル・インコーポレーテッドHoneywell International Inc. | モジュールバスとaxiバスの間のリクエストを変換するためのバスブリッジ |
JP6995052B2 (ja) | 2016-02-23 | 2022-01-14 | ハネウェル・インターナショナル・インコーポレーテッド | モジュールバスとaxiバスの間のリクエストを変換するためのバスブリッジ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010134627A (ja) | バス中継装置 | |
US7958298B2 (en) | System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment | |
US5826048A (en) | PCI bus with reduced number of signals | |
US20040107265A1 (en) | Shared memory data transfer apparatus | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
JP2009032243A (ja) | 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 | |
WO2008023218A1 (en) | Device having priority upgrade mechanism capabilities and a method for updating priorities | |
JP2008027247A (ja) | メモリコントローラ | |
JP5287301B2 (ja) | ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法 | |
JP2014035628A (ja) | 情報処理装置、メモリ制御装置およびその制御方法 | |
JP2006293927A (ja) | ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi | |
JP2009508201A (ja) | 相互接続、及び相互接続の設計方法 | |
JP2006113689A (ja) | バスブリッジ装置およびデータ転送方法 | |
JP2003296267A (ja) | バスシステム及びバスシステムを含む情報処理システム | |
US9104819B2 (en) | Multi-master bus architecture for system-on-chip | |
JP4902640B2 (ja) | 集積回路、及び集積回路システム | |
JP5383159B2 (ja) | バス中継装置及び制御方法 | |
US20080235707A1 (en) | Data processing apparatus and method for performing multi-cycle arbitration | |
TWI553483B (zh) | 處理器及存取記憶體的方法 | |
WO2008023219A1 (en) | Pipelined device and a method for executing transactions in a pipelined device | |
JP2008009763A (ja) | 情報処理装置及びバス制御方法 | |
US7987437B2 (en) | Structure for piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization | |
JP4684577B2 (ja) | 高速の帯域幅のシステムバスを仲裁するためのバスシステム及びその方法 | |
JP2006285872A (ja) | マルチcpuシステム | |
JP2010140440A (ja) | バス調停装置 |