(57)【特許請求の範囲】
【請求項１】
異なるレートのクロックで動作する複数のソースデバイスと宛先デバイスとが接続されたバスであって、前記ソースデバイスと宛先デバイスの最も速いクロックレートと、少なくとも同等に速いクロックで動作するバスを介してデータを処理する方法において、
バスクロックのサイクルの間、ソースデバイスから前記バスへのアクセスを要求する宛先デバイスの識別情報を含むリクエストを受領するステップと、
前記リクエストに応答して、前記ソースデバイスと前記バスとの間に接続されたバッファの入力点で前記リクエストに応答したデータを入力するよう前記ソースデバイスに指示を与える第１制御信号を発信するステップと、
前記第１制御信号の発信の後のバスクロックサイクルにおいて、前記バッファが前記データを前記バス上に出力する第２制御信号を前記バッファに発信するステップと、
前記第２制御信号の発信の後のバスサイクルにおいて、前記宛先デバイスが前記データを受信するステップとからなり、
前記第２制御信号は、前記データが、１つのバスクロックサイクルの間のみ前記バスを占有するよう、前記意図した宛先デバイスに対応するクロックの先端エッジに対し前記バスクロックの１サイクル以下だけ先行するバスクロックサイクルで発信されることを特徴とするバスを介したデータ処理方法。
【請求項２】
前記バスクロックは、前記複数のソースデバイス及び宛先デバイスに対応する前記クロックの最速のクロックのレートと少なくとも同じ速さのレートを有することを特徴とする請求項１記載の方法。
【請求項３】
前記第１制御信号は、前記宛先デバイスの先端エッジに先行する前記ソースデバイスに対応するクロックの先端エッジの前の少なくとも１つのバスクロックサイクルで発信されることを特徴とする請求項１記載の方法。
【請求項４】
前記バスクロックは、第１相と第２相を含むサイクルを有し、そして、前記第１制御信号の発行と前記バス上で有効になる対応するデータの発行との間の遅延期間が、前記バスクロックの第１相のサイクルの持続時間以下となるようなレートで動作することを特徴とする請求項３記載の方法。
【請求項５】
前記バスクロックは、第１クロック相と第２クロック相とのみを含むサイクルを有し、かつ５０％のデューティーサイクルを有することを特徴とする請求項４記載の方法。
【請求項６】
同一のバスクロックサイクルの間に受信した、前記バスへのアクセスを要求するリクエストは所定の順位に従って許可されることを特徴とする請求項４記載の方法。
【請求項７】
前記第２制御信号は、前記バスクロックサイクルの第２相に等しい持続時間を有し、該方法は、前記第２制御信号に応答して、バスキーパにより前記バスクロックサイクルの第２相の間に前記バス上にデータを保持するステップを更に有することを特徴とする請求項４記載の方法。
【請求項８】
前記ソースデバイスの前記バッファは３状態バッファであり、前記第２制御信号は、前記バッファをイネイブルすることを特徴とする請求項４記載の方法。
【請求項９】
各宛先デバイスとバスとの間に接続された入力バッファを更に有し、前記入力バッファは、宛先デバイスに対応するクロックの先端エッジに応答して、その対応する宛先デバイスに向けられた、前記バス上のデータをラッチすることを特徴とする請求項８記載の方法。
【請求項１０】
前記バスへのアクセスを要求するリクエストの受領に応答して、前記ソースデバイスに対応するクロックの、レートと相とを決定するステップを更に有し、前記クロックのレートと相は意図した宛先デバイスに対応することを特徴とする請求項９記載の方法。
【請求項１１】
前記バスへのアクセスを要求するペンディング中のリクエストを有する複数のソースデバイスに発信された前記第１及び第２の制御信号を送信するステップを更に有し、前記バスを介したデータ処理の帯域は前記ソースデバイスと宛先デバイスとの少なくとも一部のデバイスの帯域よりも広いことを特徴とする請求項１０記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は電子バスに関し、特に電子バスへのアクセスの調停方法に関する。
【０００２】
【従来の技術】
複数のデータ処理装置、例えばメモリ、マイクロプロセッサ、マイクロコントローラー、デジタル信号プロセッサ（ＤＳＰ）及び周辺デバイスにより共有される一本のデータパスを提供するために、バス（例、アドレスバスとデータバス）の使用は公知である。バスは通常プリント回路基板（ＰＣＢ）上に形成され、このＰＣＢ上に搭載された複数のデバイス例えば集積回路を相互接続する。バスはコネクタ例えばパソコンのバックプレーンにランナウトして、周辺デバイスがバスに接続される。
【０００３】
ＰＣＢ上のバスは通常大きなノイズに曝される。特に、バスは長い金属製ワイヤーで、これはＰＣＢ上に搭載されたあるいは印刷された他のデバイスと大きな容量性結合される。
【０００４】
集積回路の製造業者は、従来はＰＣＢの上に搭載された別々のチップで具体化されたメモリ、マイクロコントローラー、ＤＳＰ、マイクロプロセッサ等の複数のコアデバイスを含み、ＰＣＢ上を走るバスにより相互接続された単一のチップを生成し始めている。このようなチップは、システムオンナチップ（system-on-ａ-chip）即ちＳｏＣと通常称する。
【０００５】
ＳｏＣは、チップ上の複数のコアデバイス（マクロブロックまたはマクロスとも称する）を相互接続するデータバスを提供するためにバスを組み込んでいる。しかし、ＳｏＣ上のバスはチップ上の導体トレースを有し、かくしてＰＣＢバスよりも長さがはるかに短く、ノイズの影響も受けにくい。バスを有する通常のＳｏＣは、幾つかの周辺デバイス及び／または数個のメモリブロック（ＳＲＡＭ、ＤＲＡＭ、ＰＲＯＭ、ＲＯＭ）に接続されるプロセッサまたはマイクロプロセッサを有するＳｏＣである。
【０００６】
ＰＣＢ上の従来のバスは、通常極めて長い。そのため、このようなバス上のデータ速度、即ちバスのバンド幅はバスの長さに応じて制約される。具体的に説明するとバス上のデータレートは、バスの一端から他端にデータが伝搬するのに要する最大時間と、イネーブル（ＥＮＡＢＬＥ）されてデータを獲得するまでの最大遅延時間と受信ラッチタイムの総和である。データ処理装置とメモリーのスピードが速くなったために、バスの長さは現在ではＰＣＢバス内を伝搬するデータ転送レートに対するバンド幅の制約ファクターとなる。例えば、マイクロプロセッサは５００ＭＨｚ以上の速度で通常動作する。しかし、信号がＰＣＢの一端から他端（例、５インチ）まで伝搬するのに要する時間は、１０ナノ秒（１０×１０-9秒のオーダーである）従ってこのようなバスのバスバンド幅は、１００ＭＨｚ（１／（１０×１０-9秒）より大きくならないよう制限する必要がある。
【０００７】
【発明が解決しようとする課題】
ＳｏＣ上のコアデバイスを専用に相互接続するバスは、長さがはるかに短く、ＰＣＢバスほどノイズに対し敏感ではない。従って、ＳｏＣバスのデータ転送レートは通常、バスの長さには制限されず、コアデバイスの速度により制限される。かくして、ＳｏＣ上のバス速度は、バスに接続される最遅のデバイスのデータ伝送速度に制限される。
【０００８】
【課題を解決するための手段】
本発明は、通信に関連する２つのデバイス（送信器と受信器）の速度とは無関係にパスは可変のデータレートでもって動作し、バスを介しての全てのデータの転送は、たった１つの専用高速バスのクロックサイクルのみしか必要としないようにバスへのアクセスを調停する方法と装置を提供する。唯一の専用バスクロックサイクルが送信毎に用いられるために、本発明により複数のデバイスの対は、バスを介してのデータ処理を分散（intersperse）することができる。具体的に説明すると、バスの最高速度を用いて１つのデバイスの対がデータの転送を行うことができない場合には、あるデバイスの対が、別のデバイスの対の間のデータ転送専用ではないサイクルの間にバスを駆動することができるが、これは他のデバイスの対がバスに対するそのデータを設定している間に行われる。
【０００９】
本発明による知能アービタ（smart arbiter；仲介器）は、バスを使用する全てのデバイスのクロックの位相とクロック速度に関する知識を有しており、アクセスを許可し、バスの利用許可証（bus grant）を発行して、その情報に基づいた時間に対応する出力バッファをイネーブル（ＥＮＡＢＬＥ）して、各処理ごとに単一の専用バスサイクルのみを用いて、バスのバンド幅を最も効率的に利用する。本発明の知能アービタは、グラント（ＧＲＡＮＴ）を散在させて（intersperse grants）、バスの最大バンド幅能力を個々に利用していない送信デバイスと受信デバイスとの複数の対の間でのデータ転送がオーバーラップすることができるようにする。斯くして、あるデバイスの対がバスの最大レート以下のレートで複数のワード（あるいはデータの他のユニット）を交換している場合には、他のデバイスの対は第１のデバイスの対のワードの転送の間にバスクロックサイクルの一部を利用して、第２のデバイスの対の間でワードの転送を行う。
【００１０】
【発明の実施の形態】
図１は本発明によるバス１２を組み込み知能アービタ回路１４を利用した集積回路１０のブロック図である。同図に示すように集積回路１０は、例えばマイクロプロセッサ、マイクロコントローラ、メモリ等の複数のマクロブロック、あるいはコアデバイス１６Ａ、コアデバイス１６Ｂ、コアデバイス１６Ｃ、コアデバイス１６Ｄを有する。集積回路１０はさらにバス１２を有し、このバス１２を介してコアデバイスがデータを交換することができる。話を簡単にするために、バンド幅は１６ビット（１ワード）であるとする。このＩＣはさらに知能アービタ回路１４を有し、この知能アービタ回路１４はコアデバイス１６Ａ−１６Ｄからリクエスト制御ライン１８Ａ−１８Ｄを介してバスへアクセスするリクエストを受領し、リクエストグラント（request GRANT）を制御ライン２０Ａ−２０Ｄを介して要求しているブロックに戻す。
【００１１】
知能アービタ回路１４は、バスアクセスリクエストに応答して制御ライン２２Ａ−２２Ｄを介して、個々にドライバＥＮＡＢＬＥ信号を発信する。各コアデバイス１６Ａ−１６Ｄは、３状態出力バッファ２４Ａ−２４Ｄを有するドライバ回路を介して、バス上の出力データに接続される。知能アービタ回路１４により生成された前述のドライバＥＮＡＢＬＥ信号は、３状態出力バッファ２４Ａ−２４Ｄの３状態制御ターミナルに入力される。
【００１２】
知能アービタ回路１４は、論理ゲート、マイクロプロセッサ、マイクロコントローラ、状態機械、メモリ内のルックアップテーブル、あるいはそれらの組み合わせ（これに限定されるわけではないが）のような上記の機能を提供するよう設計された回路から構成することができる。
【００１３】
各コアデバイスは、デバイスとバスとの間に接続された入力バッファ３０Ａ−３０Ｄを有し、別のコアデバイス（あるいは周辺デバイス）からバスを介してコアデバイスに送信されるデータをラッチする。
【００１４】
一般的なＳｏＣ  ＩＣと同様に各コアデバイスは、他のコアデバイスのクロック速度とは無関係のクロック速度でもって動作する。従って、各デバイスは異なるクロック２８Ａ−クロック２８Ｄ上に基づいて動作する。本発明の議論を単純化するために、そしてここで議論する実施例においてはコアデバイス１６Ａのクロック２８Ａは、ＩＣ上の何れかのデバイスの最速クロック速度でもって動作し、クロック２８Ｂはクロック２８Ａのレートの１／２のレートで動作し、デバイス１６Ｃのクロック２８Ｃはクロック２８Ａの１／３のレートで動作し、クロック２８Ｄはクロック２８Ａの１／４のレートで動作するものとする。
【００１５】
本発明の利点を最も良く示すために、バスクロック３２はクロック２８Ａの最速のコアデバイスのクロック２８Ａの速度で動作するもとする。これは、例えばバスが短い伝搬遅延を有し、その結果バスクロックの速度がチップ上の最速のコアデバイスの速度を容易に超えてしまうようなチップ集積回路上のシステムで容易に達成できる。
【００１６】
知能アービタ回路１４は、単一のバスクロックサイクルベースでバスアクセスを許可する（ＧＲＡＮＴする）。従って、デバイスがデータの複数のワードを転送するために、バスにアクセスする必要がある場合には、デバイスは各ワードに対し別のリクエストを発行しなければならない。送信デバイスと受信デバイスの速度に係わらず、各ワードトランスファは送信用コアデバイスからのデータがバス上でアサートされている間、唯一の専用バスクロックサイクルを用いる。これにより知能アービタ回路１４は、バンド幅を最大限利用するために同時に継続しているリクエストでもって異なるコアデバイス１６にグラント（ＧＲＡＮＴ）を分配する（intersperse grant）。
【００１７】
知能アービタ回路１４は、バスを利用する各コアデバイスのクロックの速度と位相を知っているために、知能アービタ回路１４はルックアップテーブル内に情報を記憶することにより、この種の動作を行うことができる。
【００１８】
コアデバイスがバスへのアクセスをリクエストすると、このリクエストはアクセス要求のみならず、要求している（即ちソース）デバイスの識別と宛先デバイスも含み、その結果知能アービタ回路１４はそれらのクロックの速度と位相を決定することができる。
【００１９】
本発明によればバスへのアクセスは、同時に要求している複数のデバイス間で分配されて、送信デバイス／受信デバイスのどの対もバスのバンド幅全体を用いてないときには、バスのバンド幅の利用を最大にする。例えば、バスを介して第１の処理に関連している送信デバイスと受信デバイスの速いほうがバスのクロック速度の４分の１で動作し、そして複数のワードがそれらの間で送信され、そして最大１つのワードが各４個のバスクロックサイクル毎に送信される。複数のデバイスの対が同時にペンディングとなっているバスアクセスリクエストを有する場合には、本発明の知能アービタ回路１４により複数の対の送信／受信デバイスの間で複数のデータ処理ができるようにし、各４つのバスクロックサイクルのうちの３つのサイクルを無駄にするのではなく、送信デバイス／受信デバイスの第１の対の間での通信処理に専用とはなっていない中間クロックサイクルを他の送信／受信デバイスの対が用いることができる。
【００２０】
本発明は、バスドライバ２４をイネーブル（ＥＮＡＢＬＥ）してから、ある種のバスに対しバス上でデータが有効となるまでの遅延時間（以下データ捕獲時間Ｔaと称する）は、とりわけＳｏＣバスがチップ上の最速コアデバイスのクロック周期の１／２よりもはるかに少ないという事実を利用している。斯くしてバスのクロックレートは最速のコアデバイスの少なくともレートに設定することができる。具体的に説明すると、システムオンナチップ集積回路の最速のコアデバイスは、あるクロック駆動される素子から次のクロック駆動される素子までの信号パス内に多くの組み合わせ論理ゲートを通常有する。しかし、短いバスに対しては送信デバイスから受信デバイスまでのバスデータ転送遅延パスは、送信デバイスの出力バッファ２４と受信デバイスの入力ラッチ３０のみからなる回路遅延を含む。従って、短いバス、例えばＳｏＣ上に見られるようなバスに対しては、バスデータ処理のバスの遅延周期は、最速のコアデバイスのクロックサイクルの２分の１以下とならなければならない。データがバスへのアクセスが許されたコアデバイスのバスクロックサイクルの２分の１以内にバス上で得られたとすると、データは受信コアデバイスで同一バスクロックサイクルの第２位相の終了時、即ち次のバスクロックサイクルの先端エッジでもってエッジでラッチされる。従って、バスクロックは、少なくとも最速のコアデバイスのレートに設定することができる。
【００２１】
本発明によりコアデバイスへＧＲＡＮＴ制御信号とＥＮＡＢＬＥ制御信号を発行するタイミングを様々知識を利用しながら制御することにより知能アービタ回路１４は、全てのバスデータ処理に関連するコアデバイスのクロックレートに係わらず、１つの専用バスクロックサイクルのみを必要とする。
【００２２】
様々なコアデバイスのクロック速度は互いに同期する必要はない。しかし、知能アービタ回路１４はＧＲＡＮＴ制御信号とＥＮＡＢＬＥ制御信号を様々知識を利用しながら発行するために、ある瞬間においては、どのコアデバイスのクロック位相も決定することができなければならない。前述したように要求中の複数のデバイスの間でバスへのアクセスを分配することにより、全てのバスデータ処理は最速のコアデバイスと少なくとも同じレートでもって行うことができる。
【００２３】
図２−５は、本発明によるバスアクセスタイミングの様々な例を示す。本発明は多くの異なるクロックスキームに適用可能であるが、例として全てのバス処理イベントは、先端（先端：leading）エッジでトリガーされるものとする。斯くしてどのソースデバイスもそのクロックの先端エッジに応答してバスに対する有効データの生成を開始することができる。さらにまた、どの宛先デバイスもクロックの先端エッジに応答してバス上でデータをラッチすることができる。
【００２４】
本発明によれば知能アービタ回路１４は、２つの制御信号すなわちＧＲＡＮＴ制御ライン２０、ＥＮＡＢＬＥ制御ライン２０を用いてバスへのアクセスを許可する。ＧＲＡＮＴは、対応するコアデバイス１６が対応する３状態出力バッファ２４の入力点にデータを生成することを開始するよう指示する。ＥＮＡＢＬＥは別個に３状態出力バッファ２４がバス１２にデータを送信するようにする。
【００２５】
知能アービタ回路１４は全てのバス処理で宛先デバイスのクロックの先端エッジの直前のバスクロックサイクルの間のみＥＮＡＢＬＥを発行することにより１つの専用バスクロックサイクルのみを消費する。そのようにして、宛先デバイスはバス上に置かれた後出力されたバスクロックサイクルの直後のバスクロックサイクルの先端エッジにおいてデータをラッチする。
【００２６】
さらにまた知能アービタ回路１４は、ＥＮＡＢＬＥ制御信号を発信する前に対応するＧＲＡＮＴ制御信号を発行しなければならない。具体的に説明すると、知能アービタ回路１４は対応するＧＲＡＮＴ制御ライン２０をバスクロックサイクルが対応するＥＮＡＢＬＥの前となるソースデバイスのクロックの最後の先端エッジの直前のバスクロックサイクルと少なくとも同じ速さでソースデバイスに対応するＧＲＡＮＴ制御ライン２０を発行しなければならない。このようにする理由は明らかである。データは、ソースデバイスのクロックの先端エッジに対応して利用可能となる前に３状態バッファ２４の入力点に存在しなければならないからである。
【００２７】
図２は、２つのコアデバイス１６Ａ、１６Ｂがバスへのアクセスを同時に要求している場合の本発明によるバスアクセスタイミングの第１の例を示す。コアデバイス１６Ａはバスクロックと同一の周期を有するクロック２８Ａによりクロックされている。コアデバイス１６Ｂはクロック１のスピードの半分（あるいはサイクル周期の２倍）で動作するクロック２８Ｂによりクロックされている。
【００２８】
クロックサイクル１においては、コアデバイス１６Ａとコアデバイス１６Ｂは同時にバスへのアクセス要求（リクエスト）を発する。このリクエストはソースデバイスと宛先デバイスの識別子を含む。具体的に説明すると、コアデバイス１６Ａはデータをコアデバイス１６Ｂに送り、コアデバイス１６Ｂはデータをコアデバイス１６Ａに送る。知能アービタ回路１４は、まずバスを所定の仲裁手順（arbitration hierarchy）に従ってコアデバイス１６Ａ、１６Ｂの一方にバスを与える。この例においては、コアデバイス１６Ｂはコアデバイス１６Ａに対し優先権を持つために、コアデバイス１６Ｂにまずアクセスが与えられる。
【００２９】
このリクエストに対する宛先デバイスはデバイス１６Ａであるので、このデバイス１６Ａはバスと同一速度で動作する。そのため知能アービタ回路１４ＡはＥＮＡＢＬＥを何れかのバスクロックサイクルで出力バッファ２４Ｂに送り、データはバスクロックの次の先端エッジでラッチ３０Ａ内にラッチされ、その結果データは１つのバスクロックサイクルのみの間バスを制御する。当然のことながらコアデバイス１６ＢへのＧＲＡＮＴはＥＮＡＢＬＥに先行する。実際、ソースのコアデバイス１６Ｂのクロックの先端エッジに先行し、このコアデバイス１６Ｂはそれ自身がＥＮＡＢＬＥに先行し、その結果データはＥＮＡＢＬＥが発行されたときに出力バッファ２４Ｂの入力点で得られる。
【００３０】
図２に示すようにリクエストの後のソースデバイス１６Ｂの２分の１の速度のクロックの２の次の先端エッジは、バスクロックサイクル３の先端エッジと一致している。従って、先行するサイクル、即ちバスクロックサイクル２においては知能アービタ回路１４はグラント（ＧＲＡＮＴ）をコアデバイス１６Ｂに発行する。
【００３１】
サイクル３においては、コアデバイス１６Ｂは３状態バッファ２４Ｂの入力ＰＱ２に有効データのアサートを開始する。バスクロックサイクル３においては、知能アービタ回路１４はソースであるコアデバイス１６Ｂに対応する３状態バッファをイネーブル（ＥＮＡＢＬＥ）する。バスクロックサイクル３の最初の半分（これはコアデバイス２のクロック速度の２倍で動作する）内でデータはバス上で有効となる。本発明の実施例においてイネーブル（ＥＮＡＢＬＥ）は、バスクロックサイクルの２分の１であり、バスキーパは、ラインバスに示すように対応するバスサイクルの第２の（後）半分に対しデータを維持する。
【００３２】
次のバスクロックサイクルであるサイクル４の立ち上がり（先端）エッジにおいて、そのクロックの立ち上がりエッジは、バスクロックサイクル４の立ち上がりエッジに対応するために、宛先デバイス１６Ａにラッチされる。コアデバイス１６Ｂは、連続してクロック２の周波数はバスクロックの１／２であるためにバスクロックサイクル３と４の間有効データを連続的にアサートする。しかし、３状態の出力バッファ２Ｂは、クロックサイクル３の最初の半分の間のみイネーブル（ＥＮＡＢＬＥ）され（そして、データはバスキーパによりクロックサイクル３の第２の半分の間保持される）るために出力データは、サイクル３の間のみ（サイクル４の間ではなくサイクル３の間のみ）バス上に駆動される。
【００３３】
コアデバイス１６Ａはコアデバイス１６Ｂからのデータを受信するためにバスクロックサイクル４を用いるために、そのサイクルは、コアデバイス１６Ａがペンディングのリクエストを持っている場合でも、コアデバイス１６Ａに関連する他の目的のためにそのサイクルを使用することは出来ない。
【００３４】
従って、バスクロックサイクル５は、本発明のアービタがバスのアクセスをコアデバイス１６Ａに許可する最も速いものである。宛先デバイス１６Ｂの半分の速度のクロック２のバスクロックサイクル５の後の次の先端エッジは、バスクロックサイクル７の先端エッジに対応する。従って、データはバスクロックサイクル６の間バス上に配置されなければ成らず、その結果、唯一の１つのバスクロックサイクルがこの処理に専用となる。それ以外の場合には、処理は宛先デバイスである１６Ｂのクロックの次の先端エッジの直前のバスサイクルの間待機しなければならない。ソースデバイスである１６Ａは、バスと同一速度で動作しているためにデータはバスサイクル６でバス上で利用可能となる。具体的に説明すると本発明のアービタは、ＧＲＡＮＴをサイクル５でソースデバイスであるコアデバイス１６Ａに発行する。このデータは、次のバスクロックサイクルであるサイクル６で３状態バッファ２４Ａの入力ＰＱ１で得られるが、その理由はソースデバイスであるコアデバイス１６Ａはバス速度で動作しており、そのためどのバスサイクルでもデータを利用できるからである。
【００３５】
クロックサイクル６の最初の半分においては、本発明のアービタは、ＥＮＡＢＬＥパルスを３状態バッファ２４Ａに発行する。従って、バスクロックサイクル６の間でもまたＰＱ１上のデータは、バス１２上に表れる。そのデータは、バスキーパによりクロックサイクル６の第２の半分の間保持される。宛先デバイスであるコアデバイス１６Ｂのクロック２８Ｂの次の先端エッジにおいて（これはバスクロック３２のサイクル７の先端エッジに対応する）データは、宛先デバイスであるコアデバイス１６Ｂに発信される。
【００３６】
送信用或いは受信用のコアデバイスのスピードとは関係なく、データは１つのバスクロックサイクルの間のみバス上でアサートされる。
【００３７】
図２の例の変形例が本発明の変形例を示す。図２の実施例においては、コアデバイス１６Ａはサイクル４の立ち上がりエッジでコアデバイス１６Ｂからデータを受領する。従って、コアデバイス１６Ａは、データをバスを介して伝送するためにペンディングのリクエストを有しているが、コアデバイス１６Ａはその処理にはバスサイクル４を使用することは出来ない。その理由は、コアデバイス１６Ａは既にデータを受信するためにサイクル４を用いているからである。しかし、コアデバイス１６Ｂがデータを別のコアデバイスにサイクル３で送信している場合には、知能アービタ回路１４はデバイス１６Ａからデータをデバイス１６Ｂに送るためにサイクル６ではサイクル４を用いることが出来る。具体的に説明すると、知能アービタ回路１４は、ＧＲＡＮＴをクロックサイクル２でコアデバイス１６Ａに発送し、サイクル４で３状態出力バッファ２４Ａが宛先デバイス１６Ｂはバスサイクル６までバスサイクル６の間待機することなくバスサイクル５（Ｃでこれは宛先デバイスであるコアデバイス１６Ｂのクロック２８Ｂの先端エッジと同時におきる）の先端エッジでデータを放出することが出来るようにする。
【００３８】
図２の別の変形例を考えてみる。コアデバイス１６Ａ又は１６Ｂ以外の他のコアデバイスがバスサイクル３と少なくとも同じ早さでバスへのアクセスを要求したとする（関連するソースデバイスと宛先デバイスのコアデバイスの先端エッジのタイミングが適切なものであるとする）と、本発明のアービタは、バスアクセスをサイクル２，３，４の何れか或いはそれらの全てで、これらのコアデバイスの１つ或いは２つのコアへのバスアクセスを許可し、サイクル４及び／またはサイクル５で対応する３状態出力バッファをイネーブル（ＥＮＡＢＬＥ）し、その結果バスサイクル４及び／又はサイクル５を用いてデータを送信する。
【００３９】
図２と上記に議論したその変形例により、本発明のデータ伝送の効率は従来の方法に対し考慮している。従来のバスタイミング方法では、バスの速度は最も遅いコアデバイスのそれに対応している。別法として同一の高速クロック速度を本発明で用いる場合には、コアデバイス１６Ａとコアデバイス１６Ｂとの間での同じ二つのデータの伝送を完了するには、少なくとも５つの専用バスクロックサイクルが必要である。クロックサイクル１−５のいづれも他のデータ伝送には用いられない。
【００４０】
他方では本発明によれば、同一のタスクを達成するためには２個の専用バスクロックサイクルのみが必要とされ、他の３つのクロックサイクルはバスの処理用に他のデバイスにより用いることができる。
【００４１】
以下の実施例は、バスデータ伝送の全体レートがこのバスを用いた個々のデバイスのレートよりも速くなるようなバスアクセスのインターリービング技術を示す。
【００４２】
図３は、別のタイミング例を示すタイミング図である。この実施例においては、コアデバイス１６Ｂと１６Ｄは同時にバスへのアクセスを要求し、この両方がコアデバイス１６Ａを宛先デバイスとして示している。同図からわかるようにソースデバイス１６Ｂのクロック２８Ｂの先端エッジは、バスクロックサイクル１，３，５で発生し、ソースデバイス１６Ｄのクロック２８Ｄの先端エッジは、バスクロックサイクル１，５，９とで発生し、そして宛先デバイス１６Ａのクロック２８Ａの先端エッジは、各バスサイクルごとに発生する。
【００４３】
バスサイクル１においては、コアデバイス１６Ｂと１６Ｄの両方は、宛先アドレスを有するバスリクエストを知能アービタ回路１４に送る。所定の仲裁ハイラルキーに従ってデバイス１６Ｂにアクセス（権）が最初に与えられる。バスサイクル３は、ソースデバイス１６Ｂのクロック２８Ｂの先端エッジに対応し、サイクル２においては、知能アービタ回路１４はＧＲＡＮＴをコアデバイス１６Ｂに発行する。従ってバスサイクル３においては、データは３状態バッファ２４Ｂの入力ＰＱ２でアサートされる。宛先デバイス１６Ａのクロック２８Ａは、バスクロック３２と同一レートで動作しているために、それはどのバスクロックサイクルでもデータをラッチする。しかし、サイクル３においては、デバイス１６Ｂまたはデバイス１６Ｄ以外の別のコアデバイス１６がバス１２を用いている。そのため本発明の知能アービタ回路１４は、サイクル３ではイネーブルパルスを発行せず、コアデバイス１６Ｂはサイクル３の間バス上にデータを発生させない。サイクル４でバス１２はバス１２はフリーとなる。そのため知能アービタ回路１４により、バスサイクル４でコアデバイス１６Ｂの３状態出力バッファ２４Ｂがイネーブル（ＥＮＡＢＬＥ）され、コアデバイス１６Ｂからのデータがバスサイクル４の半分でバス上にアサートされ、バスサイクル４の次の第２の半分の間にバスキーパにより保持される。データはバスサイクル５の立ち上がりエッジにおいて、宛先デバイスである１６Ａの入力バッファ３０Ａにラッチされる。
【００４４】
コアデバイス１６Ｄからのリクエストは、未決定である。ソースデバイスであるソースデバイス１６Ｄのクロック２８Ｄの次の立ち上がりエッジは、バスサイクル５内にある。事実、クロックサイクル５内で発生したクロック２８Ｄの立ち上がりエッジは、リクエストが発行された後の、その最初の立ち上がりエッジである。従ってバスサイクル４においても、知能アービタ回路１４はＧＲＡＮＴをコアデバイス１６Ｄに発行する。知能アービタ回路１４はこのＧＲＡＮＴをバスサイクル２，３，４の何れかで発行する。宛先デバイスは、バスクロック３２と同一速度で動作しているコアデバイス１６Ａであるために、コアデバイス１６Ｂによりバスに出力されたデータは、クロックサイクル５の立ち上がりエッジでコアデバイス１６Ａ内にラッチされる。
【００４５】
宛先デバイスである１６Ａは、バスクロックレートで動作しているために、バスサイクル５内のどのバスサイクルでもデータをラッチすることができ、知能アービタ回路１４はソースデバイス１６Ｄの３状態出力バッファ２４Ｄをイネーブル（ＥＮＡＢＬＥ）する。従って、クロックサイクル５の間にコアデバイス１６Ｄからのデータはバス１２上に送られる。このデータは、バスクロックサイクル６の立ち上がりエッジ（これはコアデバイス１６Ａに対応するクロック２８Ａの立ち上がりエッジでもある）でコアデバイス１６Ａにラッチされる。
【００４６】
ソースデバイス１６Ｄは、バスクロック速度の１／４の速度で動作しており、コアデバイス１６Ｂはバスクロック速度の１／２の速度で動作しているが、この両方の処理と第３の処理を加えたものは、わずか３つのサイクルを用いて５つのバスクロックサイクル内で完了する。
【００４７】
従来のバスアービトレーションスキームにおいては、コアデバイス１６Ｂからコアデバイス１６Ａへのデータ転送と、コアデバイス１６Ｄからコアデバイス１６Ａへのデータ転送の両方はターンアラウンド時間を含むクロック４の少なくとも３つのサイクルを必要とする。これは、本発明の１２個のバスクロックサイクルと等価である。斯くして特殊な場合には本発明はバス上のデータ帯域を６倍改善する。
【００４８】
図４はコアデバイスコアデバイス１６Ａ，１６Ｂ，１６Ｄを含むバスを介して３つのデータ転送を表すタイミング図である。このデータ転送はコアデバイス１６Ａからコアデバイス１６Ｄへのデータ転送と、コアデバイス１６Ｂからコアデバイス１６Ａへのデータ転送と、コアデバイス１６Ｄからコアデバイス１６Ａへのデータ転送である。バスクロックサイクル１においては、各コアデバイス１６Ａ，１６Ｂ，１６Ｄはバスへのアクセスを要求する（リクエストする）。所定のバスアクセスハイラルキーがアクセスがまずコアデバイス１６Ａに与えられ、その後コアデバイス１６Ｄに与えられ、さらにその後コアデバイス１６Ｂに与えられるものとする。従ってコアデバイス１６Ａからのリクエストが最初に許可される。
【００４９】
宛先デバイス１６Ｂはバスサイクル４でデータをラッチすることができないので、そしてバスサイクル３の先端エッジは、データをアサートするのには早すぎるために、バスサイクル５は所定の宛先デバイスである１６Ｂで、データをラッチできる最初のものである。そのため、バスサイクル４の前にコアデバイス１６Ｂに対し意図されたコアデバイス１６Ａからのデータを生成する理由はない。斯くして、本発明のアービタはＧＲＡＮＴをバスサイクル２でコアデバイス１６Ａに発行し、そしてコアデバイス１６Ａをバスサイクル４でイネーブル（ＥＮＡＢＬＥ）しているが、それはＧＲＡＮＴをバスサイクル３で発行して、コアデバイス１６Ａをバスサイクル４でイネーブル（ＥＮＡＢＬＥ）するのよりも決して早いものではない。従ってコアデバイス１６ＡへのＧＲＡＮＴはバスサイクル３まで遅らされ、そしてコアデバイス１６Ａの３状態出力バッファ２４ＡのＥＮＡＢＬＥは、バスサイクル４の最初の半分のサイクルに発行される。バスサイクル４で、コアデバイス１６Ａからのデータはバス上に発送される。バスサイクル５の立ち上がりエッジにおいてデータは、宛先デバイスである１６Ｂにラッチされる。
【００５０】
一方、前述のハイラルキー（手順）に従ってバスを使用する次の順番のコアデバイス１６Ｄは、データを宛先デバイスであるコアデバイス１６Ａに送ることを望んでいる。コアデバイス１６Ａはバスクロックの速度で動作しているために、データはどのバスクロックサイクルの先端エッジでも宛先デバイスであるコアデバイス１６Ａ内にラッチされる。ソースデバイスである１６Ｂのクロック２８Ｄの次の先端エッジは、バスサイクル５である。それはリクエストが発行された後、クロック４の最初の先端エッジである。このため、次のバスサイクルであるサイクル５は、コアデバイス１６Ｄからコアデバイス１６Ａへのデータ処理専用となる。このことはサイクル４においては、デバイス１６Ａからのデータはバス上に発行されるが、本発明のアービタはグラント（ＧＲＡＮＴ）をコアデバイス１６Ｄに発行し、その結果データはバスクロックサイクル５でＰＱ４上で得られる。その後サイクル５の最初の半分において知能アービタ回路１４は、コアデバイス１６Ｄの３状態バッファ２４Ｄをイネーブル（ＥＮＡＢＬＥ）する。データは次のバスクロックサイクルであるサイクル６の立ち上がりエッジで宛先デバイスである１６Ａでラッチされる。
【００５１】
デバイス１６Ｂからのリクエストは依然としてペンディングである。次にバスサイクル６において、本発明のアービタはコアデバイス１６Ｂへのアクセスを許可するが、これはデバイス１６Ｂのクロック２８Ｂの次の先端エッジが、バスサイクル７に対応するからである。デバイス１６Ｂへのグラント（ＧＲＡＮＴ）はバス動作に何の影響も及ぼさずにバスクロックサイクル２−６の何れかで実際に発行される。宛先デバイスは、どのバスサイクルでもバスデータをラッチすることができるデバイス１６Ａであるために、本発明のアービタはどのバスサイクルでも３状態バッファ１６ＢにＥＮＡＢＬＥを発行することができ、そのサイクルの終了時にデータがラッチされることを保証する。従って、本発明のアービタはバスサイクル７でＥＮＡＢＬＥを発行することができる。しかし、本発明をよりフレキシビリティにするために、この実施例ではバスサイクル８まで待機する。データは次のバスクロックサイクルの先端エッジでデータを入力ラッチ３０Ａにラッチし、その結果、唯一の専用バスサイクルを処理のために用いることができる。
【００５２】
最後に図５は、様々なコアデバイスのクロック速度が互いに整数倍とはなっていないような本発明によるタイミングを表すタイミング図である。この実施例においては２つのデバイス、すなわちコアデバイス１６Ａとコアデバイス１６Ｃがバスアクセスを競合している。前記の全ての実施例と同様に、コアデバイス１６Ａはバスクロック速度に等しいクロック２８Ａで動作し、この実施例においては、唯一宛先デバイスであるコアデバイス１６Ｂはバスクロック速度の２分の１で動作する。コアデバイス１６Ｃはバスクロック速度の３分の１で動作するクロック２８Ｃで動作する。
【００５３】
例えば、コアデバイス１６ＡはＳＤＲＡＭであるコアデバイス１６Ｃからデータを探索しているプロセッサであるとする。従ってバスサイクル１においては、コアデバイス１６Ａはメモリ読みとりリクエストをバスを介してＳＤＲＡＭ１６Ｃに送る。ＳＤＲＡＭ１６Ｃは、２つのメモリワードでもってプロセッサである１６Ａに応答する。最後にクロックサイクル７において、プロセッサである１６Ａは、バスへのアクセスの要求（リクエスト）を開始して、データをコアデバイス１６Ｂ（別のマイクロプロセッサあるいはマイクロコントローラ）に送る。従って、バスクロックサイクル１においては、プロセッサである１６Ａは、バスアクセスへのリクエストを発行する。バスクロックサイクル２において、知能アービタ回路１４はプロセッサである１６Ａへのアクセスを許可する。知能アービタ回路１４は、宛先のＳＤＲＡＭである１６Ｃのクロック２８Ｃの次の先端エッジは、バスサイクル４の先端エッジと同時であることを知っている。そのため、バスクロックサイクル３においては、プロセッサである１６Ａの３状態出力バッファ２４Ａをイネーブル（ＥＮＡＢＬＥ）する。従って、バスクロックサイクル３の間に、出力バッファ２４Ａはバスサイクル３の最初の半分で、バス１２上にデータを出力し、このデータはバスキーパによりクロックサイクル３の次の半分の間バス上に保持される。
【００５４】
前述したように宛先ＳＤＲＡＭである１６Ｃのクロック２８Ｃの次の先端エッジは、バスクロックサイクル４の先端エッジに対応する。従ってデータは、バスクロックサイクル４の先端エッジで宛先ＳＤＲＡＭである１６Ｃにラッチされる。
【００５５】
そのため、バスクロックサイクル４でスタートすると、ＳＤＲＡＭ１６Ｃはバスへのアクセスを要求する。従ってサイクル４においてそれは、バスへのアクセスを要求する。ＳＤＲＡＭである１６Ｃのクロック２８Ｃのサイクル４の後、次の先端エッジはバスクロックサイクル７で発生するので、本発明のアービタはバスサイクル７の前、すなわちバスクロックサイクル５またはバスサイクル６の何れかで、ＳＤＲＡＭである１６ＣへのＧＲＡＮＴを発行しなければならない。その実施例においては、これはバスサイクル６で行われる。従って、バスサイクル７においてＳＤＲＡＭである１６Ｃは、データをラインＰＱ３上の３状態バッファ２４Ｃに出力するのを開始する。宛先デバイスである１６Ａはバス速度で動作しているので、３状態バッファ２４Ｃはバスサイクル８で直ちにＥＮＡＢＬＥされ、この時点でデータはバス上で利用可能となる。プロセッサである１６Ａの入力バッファ３０Ａは、次のバスクロックサイクルであるサイクル９の先端エッジでデータをラッチする。
【００５６】
その間バスサイクル７で開始すると、プロセッサである１６Ａはデータをマイクロコントローラである１６Ｂに送るためにバスへアクセスする新たなリクエストを発行し、ＳＤＲＡＭである１６Ｃもまたデータの第２ワードをマイクロプロセッサ１６Ａに送るためにアクセスを要求する。所定のバスアクセスハイラルキーに従って、プロセッサ１６ＡはＳＤＲＡＭ１６Ｃに対し優先権を有する。
【００５７】
本発明の知能アービタ回路１４は、プロセッサ１６Ａからのリクエストに対応する宛先デバイスの識別子を知っており、そして宛先マイクロコントローラ１６Ｂは、バスサイクル９，１１，１３等の開始点でデータをラッチすることができる。しかし、バスサイクル９はクロックサイクル７からの少なくとも２つのバスクロックサイクルでプロセッサ１６Ａの３状態バッファ２４Ａをイネーブル（ＥＮＡＢＬＥ）することが必要とされるために、バスサイクル９は早過ぎる。特に最も早い場合には、リクエストはサイクル７で受信され、ＧＲＡＮＴはバスサイクル８で発行され、プロセッサ１６Ａの３状態バッファ２４Ａへのイネーブル（ＥＮＡＢＬＥ）は、クロックサイクル９で発行されるが、このクロックサイクル９は、バスサイクル９の先端エッジだけ宛先マイクロコントローラ１６Ｂの入力バッファ３０Ｂでラッチするには遅すぎる。バスサイクル１１の先端エッジは、プロセッサ１６Ａからマイクロコントローラ１６Ｂへデータ転送される最も早いものである。従って、知能アービタ回路１４はバスサイクル８または９でプロセッサ１６ＡへのＧＲＡＮＴを発行し、バスサイクル１０で出力バッファ２４ＡをＥＮＡＢＬＥする。この実施例においてはグラント（ＧＲＡＮＴ）はバスサイクル９で発行され、ＥＮＡＢＬＥがバスサイクル１０でその後に発行される。このデバイス１からのデータはクロックサイクル１０の間バス上で有効となり、バスサイクル１１の先端エッジにおいてマイクロコントローラ１６Ｂバッファの入力バッファ３０Ｂにラッチされる。
【００５８】
その間、ＳＤＲＡＭ１６Ｃのリクエストは依然としてペンディングである。ＳＤＲＡＭ１６Ｃは、前の処理がバスサイクル１１の先端エッジで完了する前には、バス上にデータを出力することが出来ない。宛先プロセッサ１６Ａは、クロック２８Ａを用いているために、データはバスサイクル１１でバス上に出力され、そしてソースデバイスであるＳＤＲＡＭ１６Ｃのタイミングに対し許されるならばバスサイクル１２の先端エッジでラッチされる。ＳＤＲＡＭ１６Ｃのクロック２８Ｃの次の先端エッジは、バスサイクル１０内にある。斯くしてバスサイクル７上でスタートするリクエストに応答して、知能アービタ回路１４はタイムリーなグラント（ＧＲＡＮＴ）をバスサイクル８又は９でＳＤＲＡＭ１６Ｃに発行する。その後知能アービタ回路１４はバスサイクル１１が出力バッファ２４ＣをＥＮＡＢＬＥするまで待機する。そのためデータはバスサイクル１１でバス上に出力され、バスサイクル１２の先端エッジで宛先入力バッファ３０Ａにラッチされる。
【００５９】
従来のバスにおいては、図５に示された動作ではＳＤＲＡＭ１６Ｃからマイクロプロセッサ１６Ａへの２つのデータブロックの転送を行うために最小６個のバスクロックサイクル（クロック３の２つのサイクル）の間、バスを占有することが必要である。本発明においては、この操作では僅か２つの専用バスサイクルのみがバスを占有し、そしてバスは他のデバイスの間でデータを転用するために用いることが出来る。同様に他のコアデバイスからの他のバスリクエストがペンディングの場合には、サイクル４，５，６，７，９は、さらにバスデータ処理用に用いることが出来る。これは従来のバスでは出来ないことである。
【００６０】
本発明によればバスを介してのデータ転送も関連するコアデバイスのクロック速度とは無関係に１つの専用バスクロックサイクルで完了する。従来のバスにおいては、遅い方のコアデバイスがデータを転送するために複数の専用バスクロックサイクルを用いるか、あるいはバスは単に最遅のコアデバイスのクロックレートで動作するかの何れかである。
【００６１】
【発明の効果】
本発明は、従来のバススキームに対しバスの待機をｎ倍増加させることが出来る。Ｎは、Ｎ＝（バスを利用する最速ＩＰブロックのクロックレート）／（バスを利用する最も遅いＩＰブロックのクロックレート）である。図３の議論から判るように、例えば速度は短期間でも増加するとこの比率を越えることが出来るが一般的に長期にわたって平均的なレートは上記に提起したＮを越えることはない。
【００６２】
図５に示すように本発明は、バス上の分離処理をサポートし、アドレスのアサーションとデータ転送へのリクエストからのサイクル遅延は、長く且つリクエストに応答して戻されたデータは、それらが応答したリクエスト（アドレス）の順番とは異なっている。
【００６３】
更にまた本発明は、最速のコアデバイスよりも更に速いバスクロックレートを提供することが出来る。例えば、全て同一の速度ｘで動作する４個のコアデバイスを搭載するＳｏＣ集積回路の例を考えてみる。本発明によれば４倍のバスクロックサイクルが用いられ（これは、本発明の上記に議論したタイミング要件が満たされているとして）、４個のコアデバイスのクロックの位相は、１／４サイクルだけ互いにずれている。このようなスキームにおいて、データ処理はどのコアデバイスよりも４倍速くバス上で処理できる。
【００６４】
システムオンナチップ（system-on-a-chip）上のバスは本発明のタイミング要件の全てを容易に満足することが出来るために本発明はこのチップの集積回路を例に説明したが、本発明は出力バッファがイネーブル（ＥＮＡＢＬＥ）される時間からバスクロックサイクルの１／２内でバス上に有効にデータがアサートされるよう充分長さが短いバスに適用できる。
【００６５】
更に本発明は本発明のバスを搭載するためにコアデバイスの変更を必要としない。特に本発明によればコアデバイスによるバスアクセスは、本発明のアービターにより生成されるイネーブル（ＥＮＡＢＬＥ）信号により制御される。斯くして本発明は、如何なるコアデバイスにより用いられるバスプロトコルをサポートできる。本発明は、コアデバイスが集積回路の製造業者以外の人の設計によるようなシステムオンアチップ集積回路に対しても利点がある。ＳｏＣ集積回路の製造業者は、コアデバイスを再設計する知識あるいは少なくとも能力を有しているとは限らない。
【００６６】
本発明の実施例を説明したが、本発明の変形例は当業者に容易に思いつくものである。このような変形例は本発明の範囲内に入る。
【図面の簡単な説明】
【図１】本発明による知能バスアービタを組み込んだシステムオンナチップ集積回路のブロック図。
【図２】第１の組のバスアクセスリクエスト状態における本発明の図１の集積回路の動作を表すタイミング図。
【図３】第２の組のバスアクセスリクエスト状態における本発明の図１の集積回路の動作を表すタイミング図。
【図４】第３の組のバスアクセスリクエスト状態における本発明の図１の集積回路の動作を表すタイミング図。
【図５】第４の組のバスアクセスリクエスト状態における本発明の図１の集積回路の動作を表すタイミング図。
【符号の説明】
１０  集積回路
１２  バス
１４  知能アービタ回路
１６  コアデバイス
１８  リクエスト制御ライン
２０  制御ライン
２２  制御ライン
２４  ３状態出力バッファ
２４  バスドライバ（出力バッファ）
２８  クロック
３０  入力バッファ
３０  入力ラッチ
３２  バスクロック
【図１】
0003929698.tif 000002
【図２】
0003929698.tif 000003
【図３】
0003929698.tif 000004
【図４】
0003929698.tif 000005
【図５】
0003929698.tif 000006