(57)【要約】【課題】マスタからのコマンド発行のスループットを保ちつつ、回路規模を削減し、動作周波数の向上或いはコマンド発行レイテンシを減少させることを目的とする。【解決手段】アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及びアドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、複数のバスマスタ及び複数のバススレーブの間に配置され、バスプロトコルに基づいて、複数のバスマスタ及び複数のバススレーブ間のコマンド及びデータの転送を仲介するバス接続網と、を有し、バスマスタは、転送したコマンドの内、ライトコマンドのアドレス情報を保持し、新たに転送しようとするコマンドのアドレス情報と比較することによって課題を解決する。【選択図】図９
2008009763.tif 000002
【特許請求の範囲】
【請求項１】
アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及び前記アドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、
前記複数のバスマスタ及び前記複数のバススレーブの間に配置され、前記バスプロトコルに基づいて、前記複数のバスマスタ及び前記複数のバススレーブ間の前記コマンド及び前記データの転送を仲介するバス接続網と、
を有し、
前記バスマスタは、転送した前記コマンドの内、ライトコマンドのアドレス情報を保持し、新たに転送しようとするコマンドのアドレス情報と比較することを特徴とする情報処理装置。
【請求項２】
前記バスマスタは、前記比較の結果、完全一致又は部分一致を検出すると、保持している、前記比較の結果一致したアドレス情報に係るコマンドに関するトランザクションが完了するのを待って、新たなリードコマンドを転送することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記コマンドには前記コマンドに関するトランザクションを識別する識別子が含まれ、
前記バスマスタは、ライトコマンドのアドレス情報と共に、前記ライトコマンドに関するトランザクションを識別する識別子を保持し、前記比較の結果、完全一致又は部分一致を検出すると、保持している、前記比較の結果一致したアドレス情報に係るコマンドに関する前記識別子と同一の識別子を新たなライトコマンドに含め、転送することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及び前記アドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、
前記複数のバスマスタ及び前記複数のバススレーブの間に配置され、前記バスプロトコルに基づいて、前記複数のバスマスタ及び前記複数のバススレーブ間の前記コマンド及び前記データの転送を仲介するバス接続網と、
を有し、
前記バス接続網は、前記バスマスタから転送された前記コマンドの内、ライトコマンドのアドレス情報を保持し、前記バスマスタから転送されてきた新たなコマンドのアドレス情報と比較することを特徴とする情報処理装置。
【請求項５】
前記バス接続網は、前記比較の結果、完全一致又は部分一致を検出すると、保持している、前記比較の結果一致したアドレス情報に係るコマンドに関するトランザクションが完了するのを待って、新たなリードコマンドを転送することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記コマンドには前記コマンドに関するトランザクションを識別する識別子が含まれ、
前記バス接続網は、ライトコマンドのアドレス情報と共に、前記ライトコマンドに関するトランザクションを識別する識別子を保持し、前記比較の結果、完全一致又は部分一致を検出すると、保持している、前記比較の結果一致したアドレス情報に係るコマンドに関する前記識別子と同一の識別子を新たなライトコマンドに含め、転送することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及び前記アドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、
前記複数のバスマスタ及び前記複数のバススレーブの間に配置され、前記バスプロトコルに基づいて、前記複数のバスマスタ及び前記複数のバススレーブ間の前記コマンド及び前記データの転送を仲介するバス接続網と、
を有する情報処理装置におけるバス制御方法であって、
前記バスマスタが、転送した前記コマンドの内、ライトコマンドのアドレス情報を保持し、新たに転送しようとするコマンドのアドレス情報と比較することを特徴とするバス制御方法。
【請求項８】
アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及び前記アドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、
前記複数のバスマスタ及び前記複数のバススレーブの間に配置され、前記バスプロトコルに基づいて、前記複数のバスマスタ及び前記複数のバススレーブ間の前記コマンド及び前記データの転送を仲介するバス接続網と、
を有する情報処理装置におけるバス制御方法であって、
前記バス接続網が、前記バスマスタから転送された前記コマンドの内、ライトコマンドのアドレス情報を保持し、前記バスマスタから転送されてきた新たなコマンドのアドレス情報と比較することを特徴とするバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びバス制御方法に関する。
【背景技術】
【０００２】
近年プロセスの微細化が進みＬＳＩに内蔵される回路規模は数千万ゲートに達するようになった。
【０００３】
その一方デバイスサイズの微細化の影響により様々な問題が顕著になってきている。その中でも、とりわけ配線遅延の増大は重要な問題である。
【０００４】
このＬＳＩ内部の配線遅延から大きな影響を受けるものとして、モジュール間を配線により接続するシステムバスが挙げられる。
【０００５】
今日ＬＳＩ内部のシステムバスとしては英国ＡＲＭ社の規定するＡＭＢＡ（バージョン２．０）、或いはその規格の中のバスの一つであるＡＨＢが業界標準となっている。
【０００６】
ＡＨＢは所謂共有バス構造をとっており、複数のバスマスタと複数のスレーブとが単一のバス構造によって接続されている。このバス構造はアドレスデコーダやマルチプレクサ、デマルチプレクサといった要素により構成されている。共有バスであるので、全てのマスタ、或いは全てのスレーブが同一のバス信号を同時に観測できるように、同一信号の配線をＬＳＩ内部で長い距離に渡って引き回すことになる。
【０００７】
ＡＨＢはこのような構成を取るため、前述のように配線遅延が問題となってきている現在、動作周波数を上げることが困難になってきている。
【０００８】
そこで、新たなバス規格として、ＡＲＭ社よりＡＭＢＡバージョン３．０が策定され、その中で規定されるＡＸＩプロトコルが次世代のシステムＬＳＩ標準バスの候補として注目を集めている。
【０００９】
ＡＸＩは、ＡＨＢのような共有バス構造ではなく、イニシエータとターゲット間のポイントトゥーポイントでの接続を規定したプロトコルである。
【００１０】
ＡＸＩプロトコルは、アドレス、コマンド、データがそれぞれ別チャネルに分離されており、それぞれのチャネル毎にＶａｌｉｄ信号とＲｅａｄｙ信号とを用いた簡単な２線ハンドシェークによって送信する。
【００１１】
即ちイニシエータがアサートするＶａｌｉｄ信号とターゲットのアサートするＲｅａｄｙ信号の両者が同時にアサートされているサイクルで一つの転送が成立する。
【００１２】
なお、ＡＸＩはプロトコルの規定であってバス接続網の実装までは規定していない。通常はクロスバー構造や、マルチレイヤ構造等での実現が想定される。ＡＲＭ社は自社のＩＰコアとしてマルチレイヤ構造のＰｒｉｍｅＣｅｌｌ  ＰＬ３００を供給している。
【００１３】
図１は、クロスバー構造を用いたシステムＬＳＩの基本的な構造図を示す図である。図１において、１０１は、バス接続網であり、ここではクロスバー構造をとっているため任意のマスタと任意のスレーブとの間を同時多重に接続することができる。但し一つのバスマスタは同時に一つのバススレーブとのみ接続できる。１０２〜１０５は、バスマスタであり、リード・ライトコマンドを生成し、スレーブにアクセスする。１０６〜１０９はバススレーブである。１１０及び１１１はバスブリッジであり、それぞれ別のバスに接続されたバスマスタ、バススレーブとの間のデータ転送を媒介する。
【００１４】
図２は、ＡＸＩで規定される信号のリストを示す図である。ＡＸＩは、信号をライトアドレス、リードアドレス、ライトデータ、ライトレスポンス、リードデータから成る５つのチャネルに分割している。そしてそれらは他のチャネルと直接的には依存関係が無く、各々独立して動作できるようになっている。即ち、マスタからスレーブに向けてライトアドレスチャネルを通じライト転送のアドレスを送信している間にも、スレーブからマスタに対しリードデータを送信することが可能である。その他のチャネル間も同様である。
【００１５】
このように、ＡＸＩはアドレス・コマンド転送フェーズとデータ転送フェーズとが分離されているため、バス自身の制約によって性能が制限されることがなく高効率な転送が行える。また各チャネルには転送毎にＩＤが付与可能で、これによりアドレス・コマンド転送の順番とその処理の順序とが異なるアウトオブオーダー転送をサポートしている。
【００１６】
例えばリードの場合には、マスタは特定のＩＤを付与したリードアドレス転送を、リードアドレスチャネルを通じて発行する。その転送のアドレスに割当てられているスレーブは、そのリードコマンドに対する応答として、同一のＩＤを持ったリードデータ転送を、リードデータチャネルを介して該当するマスタに対して行う。マスタは、複数のアドレス転送を応答が未完了のまま発行することができるが、リードデータのＩＤを識別することによって何れのリードアドレス転送に対するリード応答であるかを知ることができる。
【００１７】
ライトの場合も同様に、一回の転送に対し、ライトアドレス、ライトデータ、ライトレスポンスの各チャネルにつき同一のＩＤを用いる。
【００１８】
アウトオブオーダー転送の効果は以下のような場合に見ることができる。
【００１９】
一つは、マスタが複数のスレーブに対して同時にアクセス要求を発行する場合である。一般にスレーブがリード要求又はライト要求を処理するのに要する時間はスレーブ毎に異なる。そのため、マスタが一時に複数の要求を発行した場合、それら要求に対するリードデータ転送或いはライトレスポンス転送は順不同で行われる可能性がある。従ってアウトオブオーダーをサポートしないシステムにおいては、複数のスレーブに対するアクセスは同時に並行して行うことができず、必ず順序的に行わなければならない。アウトオブオーダーをサポートするシステムであればその制約は無くなり、複数スレーブを同時並行してアクセスできるため、効率を上げることができる。
【００２０】
もう一つは、スレーブが自身の処理効率を高めるため、コマンドを受け取った順とは異なる順番で処理を行う場合である。このようなスレーブの代表例としてＳＤＲＡＭやＤＤＲ−ＳＤＲＡＭをサポートするメモリコントローラが挙げられる。
【００２１】
今日のＳＤＲＡＭ系のデバイスは内部が複数のバンクに分割されており、それぞれが独立して動作できるという特徴を持っている。更に各バンクの内部は複数のページから構成されている。
【００２２】
ＳＤＲＡＭへのアクセスは、まず一つのページをオープンすることから始まる。これはページに対応するアドレス情報と共にＲＡＳ信号をＳＤＲＡＭに入力することにより行われる。一旦ページがオープンされると、（ライトの場合はＷＥ信号と共に）ＣＡＳ信号によってページ内のデータを高速且つランダムにアクセスすることが可能である。但し一時にオープンできるページの数はバンクあたり一つのみであるので、アクセスしようとするデータが現在オープンされているページとは別のページに存在する場合は、一旦現ページをクローズする必要がある。これはＲＡＳ信号とＷＥ信号（プリチャージコマンド）とを同時にＳＤＲＡＭに入力することで行われる。その後、アクセスするページをＲＡＳ信号によりオープンする。
【００２３】
これらの信号入力のタイミングはデバイスによって必要最小限の間隔が規定されている。例えば、ページをオープンするためのＲＡＳ信号入力と、その後のＣＡＳ信号入力との間隔はｔＲＣＤで規定される。また、例えばプリチャージコマンドとページオープンコマンドとの最小間隔はｔＲＰで規定されている。
【００２４】
連続してアクセスする場合、必要なデータが同一ページにある場合は、ＣＡＳ信号を続けて入力すれば良く、この場合にはＳＤＲＡＭの最大スループットを引き出すことができ「ページヒット」と呼ばれる。図３は、ページヒットの場合のメモリバスのタイミング図である。
【００２５】
一方、必要なデータが同一ページに無い場合は「ページミス」と呼ばれ、前述のように一旦プリチャージコマンドを入力し、次いで別のページをオープンした後、ようやくＣＡＳ信号を入力できることになる。このページミスが連続する場合、ＳＤＲＡＭのスループットは著しく低下する。図４は、ページミスの場合のメモリバスのタイミング図である。
【００２６】
但し、２つのページがそれぞれ別のバンクにある場合はこの限りではない。前述のように各バンクは独立して動作することができるので、２番目のページへのアクセスにおいて、１番目のページをクローズする必要はなく、ただちにＲＡＳ信号入力により新たなページをオープンすることができる。図５は、２つのページがそれぞれ別のバンクに有る場合のメモリバスのタイミング図である。
【００２７】
或いはページが既にオープンされている状態であれば、最短のタイミングでＣＡＳ信号を入力することができる。逆に連続してアクセスされる２つの異なるページが同一バンク内に存在する場合、「バンク衝突」或いは「バンク競合」と呼ばれる。
【００２８】
高度なメモリコントローラは、ＳＤＲＡＭのこのような特性を活かし、マスタから受け取ったコマンドを並び換えることにより、なるべく「ページミス」や「バンク衝突」を回避しようとする。
【００２９】
従って、例えば２つのリードコマンドを連続して受け取った場合、この並び替えによって２番目のリードコマンドの方が先にＳＤＲＡＭに対して発行されることが有り得る。ここで注意しなければならないのは、アウトオブオーダー転送をサポートしないバスプロトコルを用いている場合には、コマンドの完了順序を守る必要があるということである。そのためには２番目のリードコマンドに対するリードデータを一時スレーブの内部バッファに格納しておく必要がある。
【００３０】
次いで１番目のリードコマンドをＳＤＲＡＭに発行しそのリードデータを、バスを介してマスタに転送した後、２番目のリードコマンドのリードデータを内部バッファから取り出しマスタに転送するようにしなければならない。その結果、内部バッファ分の回路規模が増大してしまうのみならず、リードデータが内部バッファに滞留されるため平均リードレイテンシが増加し、性能が低下してしまうことになる。
【００３１】
アウトオブオーダーをサポートするバスプロトコルを用いれば、コマンドを受け取った順序とは無関係にリードデータをマスタに転送できるため、このような不利は生じない。
【００３２】
このようにアウトオブオーダー転送をサポートするバスプロトコルを用いると、バスがボトルネックにならず高性能化を達成しやすくなる。
【００３３】
【特許文献１】特表２００５−５２５６５２号公報
【発明の開示】
【発明が解決しようとする課題】
【００３４】
前述のようにＡＸＩプロトコルは転送毎のＩＤを用いてアウトオブオーダー転送を実現している。ところで、もし複数の転送に同一のＩＤが与えられていた場合は、それら転送の処理順序は発行順序と一致することが保証されなければならない。これはバス接続網とスレーブとに課せられた責務であり、マスタは順次処理が必要な場合は同一のＩＤを付与したコマンドを発行するだけである。
【００３５】
但しこれは転送がライト或いはリードの同一種類の場合についてであり、ライトとリードとのチャネル間ではお互いのＩＤには関係が無い。即ち同一のＩＤが付与されていてもそれらの間の処理順序は規定されない。
【００３６】
そこでマスタがリードとライトとの間で処理順序の保証を必要とする場合には２通りの対処方法が知られている。
【００３７】
一つ目は、処理順序の保証が必要な２つのリード・ライト或いはライト・リードのアクセス要求がある場合には、必ず最初のコマンドの処理が完了したことを確認した後、次のコマンドを発行するようにする方法である。
【００３８】
最初のコマンドがリードの場合は、スレーブからリードデータが返るのを待って、次のライトコマンドを発行するようにすれば良い。最初のコマンドがライトの場合も、ＡＸＩプロトコルはライトレスポンスチャネルを規定しているため、スレーブからライト応答が返るのを待って次のリードコマンドを発行すれば良い。
【００３９】
しかしながら、バスブリッジのような、発行するリードコマンドとライトコマンドとの間に実際に依存関係があるかどうかを知ることができないマスタの場合にはこの方法は効率が悪い。即ち、バスブリッジの中継するもう一方のバスからのリード又はライトコマンドは、アクセスするアドレスが一致或いは部分的に重複する場合には順序を守る必要があるが、そのような依存関係が無ければ独立に処理することが可能である。
【００４０】
しかし、アドレスが一致或いは部分一致する可能性が否定できない場合は、例え実際に２つのコマンドの間で依存関係が生じる確率が非常に低い場合であっても、安全のために必ず一方のコマンドの処理が完了するのを待って次のコマンドを発行しなければならない。その結果、マスタの発行するライトコマンドとリードコマンドとが頻繁に切り替わる場合にはスループットが大幅に低下してしまう。
【００４１】
更にリードとリード、ライトと、ライト、といった同種のコマンドの間でも、バス接続網或いはスレーブにおいて処理の順序性が保証されない場合には、やはり先行するコマンドの処理の完了を待ってから次のコマンドを発行するようにしなければならない。
【００４２】
これは前述のリオーダー処理を行うメモリコントローラの場合のように、スレーブによっては起こり得る。
【００４３】
そこで、マスタがリードとライトとの間で処理順序の保証を必要とする場合の２番目の対処方法として、マスタが先行して発行済みであり且つ未完了のコマンド（アウトスタンディングコマンド）のアドレス情報を保持しておく。そして、マスタが保持しているアドレス情報と、新たに発行しようとするコマンドのアドレス情報と比較するように構成する方法がある。
【００４４】
マスタが新たにリードコマンドを発行しようとする際に、そのアドレス情報と一つ又は複数のアウトスタンディングコマンドの内何れかのアドレス情報と一致又は部分重複が検出された場合を考える。そのアウトスタンディングコマンドがライトであった場合、マスタは、該当するコマンドに係るトランザクションが完了するまで新たなコマンドの発行を行わない。そのアウトスタンディングコマンドがリードであった場合、該当するコマンドと同一の転送ＩＤを付与し直ちに新たなコマンドを発行する。
【００４５】
マスタが新たにライトコマンドを発行しようとする際に、そのアドレス情報と一つ又は複数のアウトスタンディングコマンドの内何れかのアドレス情報と一致又は部分重複が検出された場合を考える。そのアウトスタンディングコマンドがリードであった場合、マスタは、該当するコマンドに係るトランザクションが完了するまで新たなコマンドの発行を行わない。そのアウトスタンディングコマンドがライトであった場合、該当するコマンドと同一の転送ＩＤを付与し直ちに新たなコマンドを発行する。
【００４６】
新たなに発行しようとするコマンドのアドレス情報が、何れのアウトスタンディングコマンドのアドレス情報とも一致又は部分重複しない場合は、独自のＩＤを付与し直ちに新たなコマンドを発行する。
【００４７】
このように構成した場合は、必要な場合にのみ新たなコマンドの発行を待たせるようにすることができ、１番目の方法と比較して性能の低下を抑えることができ本来の性能を発揮できるようになる。
【００４８】
しかしながら、この２番目の方法にも問題点がある。一つはアウトスタンディングコマンドのアドレス情報を保持するために必要なバッファ及び比較機能の追加により回路規模が増大する点である。もう一つは保持しているアドレス情報の数が多いと比較に要する時間がクリティカルパスになり、コマンド発行に要するレイテンシが増加してしまうことである。
【００４９】
本発明はこのような問題点に鑑みなされたもので、マスタからのコマンド発行のスループットを保ちつつ、回路規模を削減し、動作周波数の向上或いはコマンド発行レイテンシを減少させることを目的とする。
【課題を解決するための手段】
【００５０】
そこで、本発明は、アウトオブオーダー転送が可能なバスプロトコルに基づいて、アドレス情報を含むコマンド及び前記アドレスに対応するデータの転送を行う、複数のバスマスタ及び複数のバススレーブと、前記複数のバスマスタ及び前記複数のバススレーブの間に配置され、前記バスプロトコルに基づいて、前記複数のバスマスタ及び前記複数のバススレーブ間の前記コマンド及び前記データの転送を仲介するバス接続網と、を有し、前記バスマスタは、転送した前記コマンドの内、ライトコマンドのアドレス情報を保持し、新たに転送しようとするコマンドのアドレス情報と比較することを特徴とする。
【００５１】
係る構成とすることにより、マスタからのコマンド発行のスループットを保ちつつ、回路規模を削減し、動作周波数の向上或いはコマンド発行レイテンシを減少させることができる。
【００５２】
また、本発明は、バス制御方法としてもよい。
【発明の効果】
【００５３】
本発明によれば、マスタからのコマンド発行のスループットを保ちつつ、回路規模を削減し、動作周波数の向上或いはコマンド発行レイテンシを減少させることができる。
【発明を実施するための最良の形態】
【００５４】
以下、本発明の実施形態について図面に基づいて説明する。
【００５５】
（実施形態１）
図６は、前述の第２の方法を採るバスマスタのバスインターフェースの構成例を示す図である。図６において、５００は、バスインターフェース全体を表す。バスインターフェース５００は、スレーブ側でＡＸＩバス接続網と接続される。また、バスインターフェース５００は、マスタ側でＣＰＵやＤＭＡコントローラ等のコアロジックと接続される。
【００５６】
５０１は、コマンド生成手段であり、コアロジックからの要求により、スレーブに対するリード・ライトコマンドを生成する。このコマンドは、リード・ライトの種別、アクセス対象アドレス、ライトの場合はライトデータを含む。
【００５７】
５０２は、ライトアドレス保持手段であり、新規コマンドがライトの場合、そのアドレス情報と、転送ＩＤとを一組にして保持する機能を備える。５０３は、リードアドレス保持手段であり、リードの場合に５０２と同様の動作を行う。５０４は、ライトアドレス情報比較手段である。ライトアドレス情報比較手段５０４は、新規コマンドのアドレス情報が入力されると、このアドレス情報と、ライトアドレス情報保持手段５０２が保持するアドレス情報とを比較し、何れかのアドレスが完全一致又は部分一致するかどうかを示す一致信号を出力する。
【００５８】
５０５は、リードアドレス情報比較手段である。リードアドレス情報比較手段５０５は、新規コマンドのアドレス情報が入力されると、このアドレス情報と、リードアドレス情報保持手段５０３が保持するアドレス情報とを比較し、何れかのアドレスが完全一致又は部分一致するかどうかを示す一致信号を出力する。
【００５９】
５０６は、コマンド発行抑止手段であり、以下の条件が成立する場合に、条件が解消されるまで新規コマンドがＡＸＩスレーブに対して発行されることを抑止する。
（条件１）  新規コマンドがリードであり、そのアドレス情報がライトアドレス情報保持手段５０２の保持する何れかのアドレス情報と完全又は部分一致する。
（条件２）  新規コマンドがライトであり、そのアドレス情報がリードアドレス情報保持手段５０３の保持する何れかのアドレス情報と完全又は部分一致する。
【００６０】
５０７は、転送ＩＤ生成手段であり、以下の手順によりリード・ライトコマンドの転送ＩＤを生成する。
【００６１】
ステップ１．もし新規コマンドがリードであり、そのアドレス情報が、リードアドレス情報保持手段５０３が保持する何れかのアドレス情報と完全又は部分一致した場合、一致したアドレス情報と一対で保持されている転送ＩＤを新規コマンドの転送ＩＤとする。
【００６２】
ステップ２．もし新規コマンドがライトであり、そのアドレス情報が、ライトアドレス情報保持手段５０２が保持する何れかのアドレス情報と完全又は部分一致した場合は、一致したアドレス情報と一対で保持されている転送ＩＤを新規コマンドの転送ＩＤとする。
【００６３】
ステップ３．前記何れにも該当しない場合、リード・ライトの種別毎に前回生成した転送ＩＤに１を加えたものを新規コマンドの転送ＩＤとする。
【００６４】
即ち、アウトスタンディングコマンドのアドレスと新規コマンドのアドレスとが完全又は部分一致する場合は、同一転送ＩＤを用いることでＡＸＩの規約上コマンドの順序性を保つことができる。
【００６５】
５１０〜５１４は、それぞれＡＸＩプロトコルをサポートするインターフェース手段であり、それぞれ前述の５つのチャネル、即ちライトアドレス、リードアドレス、ライトデータ、ライトレスポンス、リードデータの各チャネルに対応する。
【００６６】
５０８は、ライト応答受信手段であり、ライトレスポンスＩＦ５１３が受け取ったライト応答をコアロジックに対し適切に伝達する。５０９は、リードデータ受信手段であり、リードデータＩＦ５１４が受け取ったリードデータ及びレスポンス情報をコアロジックに適切に伝達するものである。
【００６７】
このように、コマンドの発行順における因果関係を保つために、リードとライトとの両方のアウトスタンディングコマンドのアドレス情報と転送ＩＤとを保持している。
【００６８】
この場合の動作シーケンスを、図７を用いて説明する。図７は、任意の一つのバスマスタ、バス接続網、任意の一つのスレーブ間のデータ転送の手順を示すシーケンス図である。
【００６９】
まず始めにバスマスタから転送ＩＤ＝１を持つアドレス０ｘ１００番地へのライトコマンドが発行される。
【００７０】
このコマンドはバス接続網により中継されバススレーブに伝達される。
【００７１】
次に、再びバスマスタより転送ＩＤ＝２，アドレス０ｘ２００のリードコマンドが発行される。ここで、最初のコマンドと２番目のコマンドの間ではアドレスが重複しないことに注意する必要がある。
【００７２】
このコマンドもバス接続網により中継されバススレーブに伝達される。
【００７３】
このバススレーブは、アウトオブオーダー処理が可能であり、先に転送ＩＤ＝２のリードコマンドに対応するリードデータをバスマスタに返す。
【００７４】
次いで、バスマスタは、転送ＩＤ＝３、アドレス０ｘ２２０番地へのリードコマンドを発行する。このとき、転送ＩＤ＝１の最初のライトコマンドは、まだ応答が返っておらず完了していない。しかし、新たなコマンドとの間でアドレスが重複しないため、この転送ＩＤ＝３のリードコマンドは発行されることになる。
【００７５】
その次のタイミングで、バススレーブからＩＤ＝１のライトコマンドに対応するライト応答がバスマスタに返される。
【００７６】
次にバスマスタの内部では転送ＩＤ＝２、アドレス０ｘ１２０番地へのライトコマンドが生成される。この時点でのアウトスタンディングコマンドは、転送ＩＤ＝３、アドレス０ｘ２２０番地へのリードコマンドであり、これとの間でアドレスが重複しないため、新たなライトコマンドはバススレーブに向けて発行される。
【００７７】
その後、転送ＩＤ＝３のリードコマンドに対応するリードデータ、転送ＩＤ＝２のライトコマンドに対応するライト応答がバススレーブからバスマスタに返される。
【００７８】
これに対し、図８は、アウトスタンディングコマンドのアドレスを保持しない前述の第１の方法を採る場合の同様のシーケンスを説明する図である。
【００７９】
まず始めにバスマスタから転送ＩＤ＝１を持つアドレス０ｘ１００番地へのライトコマンドが発行される。
【００８０】
このコマンドは、バス接続網により中継されバススレーブに伝達される。
【００８１】
次に、バスマスタの内部では転送ＩＤ＝２，アドレス０ｘ２００のリードコマンドが生成される。しかしながら、先行するライトコマンドが完了していないため、このコマンドは発行を待たされる。実際にはこの２つのコマンドの間には依存関係は無いため並行してアクセス可能なのだが、アウトスタンディングコマンドのアドレス情報を持たないためそのような判断ができないためである。
【００８２】
その後、転送ＩＤ＝１のライトコマンドに対するライト応答が返された時点で、ようやく転送ＩＤ＝２のリードコマンドが発行されることになる。
【００８３】
次に、バスマスタ内部ではアドレス０ｘ２２０番地へのリードコマンドが生成される。直前の転送ＩＤ＝２のリードコマンドはまだ完了していないが、同じ転送ＩＤ＝２を付与しこのリードコマンドは直ちに発行される。同一の転送ＩＤを持つことでこの両者のコマンドの実行順は保証されるからである。
【００８４】
しばらくの後、これら２つの転送ＩＤ＝２を持つリードコマンドに対応するリードデータが順番にバススレーブより返される。その後、転送ＩＤ＝２のライトコマンドが続く。
【００８５】
このように前述の第１の方法では、アドレス情報を用いないため非常に効率を落とすことになる。
【００８６】
同一種別のコマンドの場合は、同一転送ＩＤを与えることで応答を待たずに連続発行が可能だが、これはスレーブにおいてアウトオブオーダー処理ができないことを意味しており、これも効率低下につながっている。
【００８７】
一方、前述の第２の方法は、ハードウェアを投入することによる回路規模の増大、動作周波数の低下を代償としてコマンド発行処理の効率を向上している。
【００８８】
但し、コマンド発行に一定の条件を課すことにより、必要な回路規模を削減することが可能である。
【００８９】
（実施形態２）
本実施形態においては、以下のような制限を設けることにより、リードのアウトスタンディングコマンドに関わるアドレス情報並びに転送ＩＤ情報を保持することなく、高い効率でコマンドを発行することを可能とする。
（制限１）リードコマンドの後に同一アドレスに対するライトコマンドが続く場合、ライトコマンドにおけるライトデータは先行するリードコマンドによるリードデータに依存して生成される。
この制限により、リードコマンドの後に同一アドレスに対するライトコマンドが続く場合は、必ず先のリードコマンドが完了した後でなければライトコマンドは生成されない。従って、リードのアウトスタンディングコマンドのアドレス情報に対するライトコマンドのアドレス情報の比較は不要になる。
（制限２）  同一アドレスに対する２つのリードコマンドの順番は入れ替わることが無い。
この制限により、リードのアウトスタンディングコマンドのアドレス情報に対するリードコマンドのアドレス情報の比較は不要になる。
【００９０】
この制限は決して厳しいものではない。ほとんどのスレーブにとって、仮に転送ＩＤが異なったとしても同一バスマスタからの同一アドレスに対する２つのリードコマンドの処理順を並べ替えることに意味は無いからである。
【００９１】
図９は、前述の制限を課した場合のバスマスタのバスインターフェースの構成を示す図である。図６との比較のため、同一の構成要素には'を付けて示している。
【００９２】
図９において、５００'は、バスインターフェース全体である。５０１'は、コマンド生成手段である。５０２'は、ライトアドレス保持手段である。５０４'は、ライトアドレス情報比較手段である。５０６'は、コマンド発行抑止手段である。５０７'は、転送
ＩＤ生成手段である。５０８'は、ライト応答受信手段である。５０９'は、リードデータ受信手段である。５１０'は、ライトアドレスＩＦである。５１１'は、リードアドレスＩＦである。５１２'は、ライトデータＩＦである。５１３'は、ライトレスポンスＩＦである。５１４'は、リードデータＩＦである。
【００９３】
このように、図６と比し、リードアドレス情報保持手段５０３及びリードアドレス情報比較手段５０５、更には図示されないそれらに付随するロジック回路が削減されている。
【００９４】
即ちバスマスタの保持するアドレス情報は図６と比較した場合、好適には半分にできる。
【００９５】
図１０は、本実施形態の典型的な動作シーケンスを説明する図である。図７、図８と同様、図１０は任意の一つのバスマスタ、バス接続網、任意の一つのスレーブ間のデータ転送の手順を示すシーケンス図である。
【００９６】
まず始めに、バスマスタから転送ＩＤ＝１を持つアドレス０ｘ１００番地へのライトコマンドが発行される。
【００９７】
このコマンドは、バス接続網により中継されバススレーブに伝達される。
【００９８】
次に、バスマスタでは転送ＩＤ＝２，アドレス０ｘ２００のリードコマンドが生成される。本実施形態においては、先のライトコマンドのアドレス情報を保持しているが、このアドレス情報と新たなコマンドのアドレス情報とを比較した結果、アドレスが重複しないことが判明し、このリードコマンドは直ちに発行される。
【００９９】
このバススレーブはアウトオブオーダー処理が可能であり、先に転送ＩＤ＝２のリードコマンドに対応するリードデータをバスマスタに返す。
【０１００】
次いで、バスマスタでは転送ＩＤ＝３、アドレス０ｘ１００番地へのリードコマンドが生成される。このとき、転送ＩＤ＝１の最初のライトコマンドはまだ応答が返っておらず完了していない。この未完了のライトコマンドと、新たなコマンドとの間でアドレスが重複することが判定され、この転送ＩＤ＝３のリードコマンドの発行はそれが解消されるまで待たされることになる。
【０１０１】
その次のタイミングで、バススレーブからＩＤ＝１のライトコマンドに対応するライト応答がバスマスタに返される。これにより、転送ＩＤ＝３のリードコマンドはアウトスタンディングコマンドとのアドレスの重複が解消され、この時点で直ちに発行される。
【０１０２】
次にバスマスタの内部では転送ＩＤ＝２、アドレス０ｘ１２０番地へのライトコマンドが生成される。この時点でのアウトスタンディングコマンドは、転送ＩＤ＝３、アドレス０ｘ２２０番地へのリードコマンドであるが、本実施形態においてはリードのアウトスタンディングコマンドのアドレス情報は保持しないため、新たなライトコマンドは直ちに発行される。
【０１０３】
その後、転送ＩＤ＝３のリードコマンドに対応するリードデータ、転送ＩＤ＝２のライトコマンドに対応するライト応答がバススレーブからバスマスタに返される。
【０１０４】
以上、上述した実施形態によれば、マスタからのコマンド発行のスループットを保ちつつ、回路規模を削減し、動作周波数の向上或いはコマンド発行レイテンシを減少させることができる。
【０１０５】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０６】
例えば、バスマスタが自身の発行するコマンドのアドレス情報を完了するまで保持する構成を示したが、この機能は必ずしもバスマスタに実装される必要はなく、バスマスタからバススレーブに至る経路上の何れかの位置に実装することができる。例えばバス接続網の内部に、この機能を持たせることが可能である。
【０１０７】
また、例えば、バスプロトコルとしてＡＸＩを用い、リードアドレスチャネルとライトアドレスチャネルが分離している場合を例にとって示したが、これに限定するものではない。例えばＯＣＰ−ＩＰの規定するＯＣＰプロトコルのようにリードアドレスチャネルとライトアドレスチャネルとが分離していないプロトコルを用いたシステムのバスブリッジ等に対しても適用することができる。
【図面の簡単な説明】
【０１０８】
【図１】クロスバー構造を用いたシステムＬＳＩの基本的な構造図を示す図である。
【図２】ＡＸＩで規定される信号のリストを示す図である。
【図３】ページヒットの場合のメモリバスのタイミング図である。
【図４】ページミスの場合のメモリバスのタイミング図である。
【図５】２つのページがそれぞれ別のバンクに有る場合のメモリバスのタイミング図である。
【図６】前述の第２の方法を採るバスマスタのバスインターフェースの構成例を示す図である。
【図７】任意の一つのバスマスタ、バス接続網、任意の一つのスレーブ間のデータ転送の手順を示すシーケンス図である。
【図８】アウトスタンディングコマンドのアドレスを保持しない前述の第１の方法を採る場合の同様のシーケンスを説明する図である。
【図９】前述の制限を課した場合のバスマスタのバスインターフェースの構成を示す図である。
【図１０】本実施形態の典型的な動作シーケンスを説明する図である。
【符号の説明】
【０１０９】
５００  バスインターフェース全体
５０１  コマンド生成手段
５０２  ライトアドレス保持手段
５０３  リードアドレス保持手段
５０４  ライトアドレス情報比較手段
５０５  リードアドレス情報比較手段
５０６  コマンド発行抑止手段
５０７  転送ＩＤ生成手段
５０８  ライト応答受信手段
５０９  リードデータ受信手段
５１０  ライトアドレスＩＦ
５１１  リードアドレスＩＦ
５１２  ライトデータＩＦ
５１３  ライトレスポンスＩＦ
５１４  リードデータＩＦ
【図１】
2008009763.tif 000003
【図２】
2008009763.tif 000004
【図３】
2008009763.tif 000005
【図４】
2008009763.tif 000006
【図５】
2008009763.tif 000007
【図６】
2008009763.tif 000008
【図７】
2008009763.tif 000009
【図８】
2008009763.tif 000010
【図９】
2008009763.tif 000011
【図１０】
2008009763.tif 000012