【手続補正書】
【提出日】平成16年9月7日(2004.9.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】      明細書
【発明の名称】  クアド・ポンプ・バス・アーキテクチャおよびプロトコル
【特許請求の範囲】
【請求項１】  マルチドロップ・バスを介して、ドライビング・エージェントから、一つ以上の受信エージェントに情報を送信する方法であって：
共通バス・クロックを、前記ドライビング・エージェントおよび前記一つ以上の受信エージェントの両方に供給するステップと；
前記ドライビング・エージェントから前記一つ以上の受信エージェントに、バス・トランザクションを発行するステップであって：
前記ドライビング・エージェントが、リクエストのための複数の情報エレメントを、前記バス・クロック周波数の倍数である速度でアドレス・バスへと送り；
前記一つ以上の受信エージェントが前記アドレス・バス上に送られた前記情報エレメントをいつサンプリングするべきかを特定するための第一のストローブ信号を、前記ドライビング・エージェントが起動させるステップと；
前記ドライビング・エージェントから、前記一つ以上の受信バスにデータを転送するステップであって：
前記ドライビング・エージェントが、前記バス・クロック周波数の前記倍数と異なる倍数である速度で、複数の情報エレメントをデータ・バスへ送り；
前記一つ以上の受信エージェントが前記データ・バスに送られた前記情報エレメントをいつサンプリングするべきかを特定するための第二のストローブを、前記ドライビング・エージェントが起動することを含むステップと
を具備する方法。
【請求項２】  リクエストのための複数の情報エレメントをアドレスに送るドライビング・エージェントは、前記バス・クロック周波数の少なくとも２倍の速度で、リクエストのための少なくとも二つの情報エレメントをアドレス・バスに送るドライビング・エージェントからなる、請求項１に記載の方法。
【請求項３】  リクエストのための複数の情報エレメントをアドレスに送るドライビング・エージェントは、前記バス・クロック周波数の２倍の速度で、リクエストのための二つの情報エレメントをアドレス・バスに送るドライビング・エージェントからなる、請求項２に記載の方法。
【請求項４】  複数の情報エレメントをデータ・バスに送るドライビング・エージェントは、前記バス・クロック周波数の少なくとも４倍の速度で、少なくとも四つの情報エレメントをデータ・バスに送るドライビング・エージェントからなる、請求項３に記載の方法。
【請求項５】  複数の情報エレメントをデータ・バスに送るドライビング・エージェントは、前記バス・クロック周波数の４倍の速度で、四つの情報エレメントをデータ・バスに送るドライビング・エージェントからなる、請求項４に記載の方法。
【請求項６】  第二のストローブを起動するドライビング・エージェントが、データ・バス上に送出された情報エレメントを受信エージェントがいつサンプリングするかを特定するためにフェーズ・ストローブのうちの少なくとも二つを起動するドライビング・エージェントからなるものである、請求項１に記載の方法。
【請求項７】  前記受信エージェントがいつ前記データ・バスに送られた前記情報エレメントをサンプリングすべきかを特定するために、前記ストローブの一種類のエッジのみを使用するものである、請求項６に記載の方法。
【請求項８】  すべてのバス・エージェント、マルチドロップ双方向アドレス・バス、およびマルチドロップ双方向データ・バスに供給される共通のバス・クロックを含んでいるバスを、種類の異なる信号のための二つの信号モードで動作させる方法であって、
当該信号モードは：
前記バス・クロック周波数と実質的に同じ速度で信号を前記バスに送出する共通クロック信号モードであって、前記バス・クロックが、送出される前記情報エレメントをサンプリングするための点を特定する共通クロック信号モードと；
情報エレメントがドライビング・エージェントによって、前記アドレス・バスまたは前記データ・バスのうち少なくとも一つへ前記バス・クロック周波数の倍数である速度で送られるとともに、送られた前記情報エレメントのためのサンプリング点を特定するために、一つ以上のストローブ信号が前記ドライビング・エージェントによって起動される、マルチ・ポンプ（multi pumped）信号モードと、
を含んでいることを特徴とする方法。
【請求項９】  前記一つ以上のストローブ信号の一種類のエッジのみを用いて、前記情報エレメントのためのサンプリング点を特定するものである、請求項８に記載の方法。
【請求項１０】  前記一つ以上のストローブ信号は、位相をずらして、または互い違いの配列となるように起動される複数のストローブ信号からなることを特徴とする、請求項８に記載の方法。
【請求項１１】  前記一つ以上のストローブ信号を用いて、前記各情報エレメントの実質的に中心にくるサンプリング点を特定するものである、請求項８に記載の方法。
【請求項１２】  バスを均衡させる方法であって：
第一の最小待ち時間で実行される、バスを介したトランザクションのデータ転送部分を与えるステップと；
第二の最小待ち時間で実行される、バス・トランザクションのリクエスト部分を与えるステップと；
連続するバスの対応するフェーズの開始の間の最小待ち時間を、前記第一および第二の最小待ち時間のうちの一つ以上に、実質的に合わせるステップと；
を具備する方法。
【請求項１３】  前記第一および第二の待ち時間は実質的に等しい、請求項１２に記載の方法。
【請求項１４】  複数のバス・エージェントに接続されたバスであって：
共通バス・クロック、アドレス・ストローブ信号、およびデータ・ストローブ信号を含む複数のコントロール信号を供給するための、マルチドロップ双方向コントロール・バスと；
ドライビング・エージェントが、前記バス・クロック周波数の倍数の周波数で、前記データ・バスへ情報エレメントを送出できるようにする、マルチドロップ双方向データ・バスと；
ドライビング・エージェントが、前記バス・クロック周波数の倍数の周波数で、前記アドレス・バスへ情報エレメントを送出できるようにする、マルチドロップ双方向アドレス・バスとを具備し；
前記ドライビング・エージェントは、前記データ・ストローブ信号を起動して、前記データ・バスへと送られた前記情報エレメントをサンプリングするための点を特定し；
前記ドライビング・エージェントは、前記アドレス・ストローブ信号を起動して、前記アドレス・バスへと送られた前記情報エレメントをサンプリングするための点を特定する、
ことを特徴とするバス。
【請求項１５】  情報を転送するための装置であって：
少なくとも一つがドライビング・エージェントとして動作する複数のエージェントと；
前記エージェントに接続されたマルチドロップ双方向バスであって、コントロール・バス、アドレス・バス、およびデータ・バスを含んでおり、前記コントロール・バスは、すべてのエージェントに共通バス・クロックを供給するための共通バス・クロック・ライン、アドレス・ストローブ信号ライン、および複数のデータ・ストローブ信号ラインを含んでいるマルチドロップ双方向バスとを具備し；
ドライビング・エージェントは、マルチ・ポンプ信号モードを用いて前記アドレス・バスに前記リクエストを送ることができ、その際に、リクエストの情報エレメントは前記バス・クロック周波数の倍数の速度で送信され、かつ、前記ドライビング・エージェントは、前記アドレス・バスへ送られた前記情報エレメントのためのサンプリング点を特定するために、前記アドレス・ストローブ信号ラインでアドレス・ストローブ信号を一時的に起動させることができ、および
ドライビング・エージェントは、マルチ・ポンプ信号モードを用いてデータを転送することができ、その際に、データ・エレメントは、前記バス・クロック周波数の倍数である速度で前記データ・バスへドライビング・エージェントによって送られ、かつ、前記ドライビング・エージェントは、前記データ・エレメントをサンプリングするサンプリング点を特定するために、複数のデータ・ストローブ信号ラインへ、互い違いの、またはオフセットの配列で前記複数のデータ・ストローブ信号を一時的に起動させることもできる、
ことを特徴とする、装置。
【請求項１６】  データ・エレメントをサンプリングするサンプリング点を特定するのに前記データ・ストローブ信号の一つのエッジだけを用いる、請求項１５に記載の装置。
【請求項１７】  データ・エレメントのサンプリング点を特定するデータ・ストローブ信号の前記一つのエッジは、立ち上がりエッジである、請求項１６に記載の装置。
【請求項１８】  データ・エレメントのサンプリング点を特定するデータ・ストローブ信号の前記一つのエッジは、立ち下がりエッジである、請求項１６に記載の装置。
【請求項１９】  情報を転送するための装置であって：
少なくとも一つがドライビング・エージェントとして動作する複数のエージェントと；
前記エージェントに接続されたマルチドロップ双方向バスであって、コントロール・バス、アドレス・バス、およびデータ・バスを含んでおり、前記コントロール・バスは、すべてのエージェントに共通バス・クロックを供給するための共通バス・クロック・ライン、および複数のデータ・ストローブ信号ラインを含んでいるマルチドロップ双方向バスとを具備し；
ドライビング・エージェントは、データ・エレメントがバス・クロックの少なくとも４倍の周波数の速度でデータ・バス上に送出されるマルチ・ポンプ信号モードを使って、データを転送し、かつ、前記ドライビング・エージェントは、前記データ・エレメントをサンプリングするサンプリング点を特定するために、複数のデータ・ストローブ信号ラインへ、互い違いの、またはオフセットの配列で前記複数のデータ・ストローブ信号を一時的に起動させることができる、
ことを特徴とする、装置。
【請求項２０】  複数のデータ・ピンと、
複数のデータ・ストローブ・ピンと、
複数のアドレス・ピンと、
アドレス・ストローブ・ピンと、
バス・クロック周波数を有するバス・クロック信号のための共通クロック・ピンと、
前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一のデータ・ストローブ信号及び第二のデータ・ストローブ信号をそれぞれ第一のデータ・ストローブ・ピン及び第二のデータ・ストローブ・ピン上に生成するためのデータ・ストローブ生成ロジックと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを前記アドレス・ストローブ・ピン上に生成するアドレス・ストローブ生成ロジックと、
前記第一のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを前記複数のデータ・ピン上に転送し、かつ、前記第二のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを前記複数のデータ・ピン上に転送するための、データ転送ロジックと、
前記第一のアドレス・ストローブの第一のエッジに同期したアドレス・エレメントを前記複数のアドレス・ピン上に転送し、かつ、前記第一のアドレス・ストローブの第二のエッジに同期したアドレス・エレメントを前記複数のアドレス・ピンに転送するための、アドレス転送ロジックと、
を具備することを特徴とするバス・エージェント。
【請求項２１】  さらに、複数のリクエスト・ピンを有し、
前記アドレス転送ロジックが、前記第一のアドレス・ストローブの第一のエッジと同期したリクエスト・エレメントを前記複数のリクエスト・ピンに転送し、かつ、前記第一のアドレス・ストローブの第二のエッジに同期したリクエスト・エレメントを前記複数のリクエスト・ピンに転送する、請求項２０に記載のバス・エージェント。
【請求項２２】  １６個の各データ・ピンに一対のストローブを供給し、かつ、前記複数のアドレス・ピン及び前記複数のリクエスト・ピンの二つのサブセットそれぞれに一つずつ二つのアドレス・ストローブを供給する、請求項２１に記載のバス・エージェント。
【請求項２３】  第一のデータ・ストローブの第一のエッジが立ち下がりエッジであり、第二のデータ・ストローブの第一のエッジが立ち下がりエッジである、請求項２１に記載のバス・エージェント。
【請求項２４】  第一のデータ・ストローブ信号と第二のデータ・ストローブ信号とが相補的な（complementary）ストローブ信号である、請求項２０に記載のバス・エージェント。
【請求項２５】  さらに、共通のクロック・プロトコールを用いて通信する複数のコントロール・ピンを有している、請求項２３に記載のバス・エージェント。
【請求項２６】  前記第一のアドレス・ストローブは、二つの実質的に等しいアドレス・ストローブからなる、請求項２１に記載のバス・エージェント。
【請求項２７】  前記二つの実質的に等しいアドレス・ストローブの第一のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第一のサブセットに同期して転送され、前記二つの実質的に等しいアドレス・ストローブの第二のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第二のサブセットに同期して転送され、前記第二のサブセットは、前記第一のサブセットに含まれるものを除いた前記複数のアドレス・ピン及び複数のリクエスト・ピンからなるものである、請求項２６に記載のバス・エージェント。
【請求項２８】  前記第一のデータ・ストローブ・ピン及び前記第二のデータ・ストローブ・ピン上にある、前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第三のデータ・ストローブ信号及び第四のデータ・ストローブ信号を受信するためのデータ・ストローブ受信ロジックと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する前記アドレス・ストローブ・ピン上の第二のアドレス・ストローブを受信するためのアドレス・ストローブ受信ロジックと、
前記複数のデータ・ピン上の前記第三のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを受信するとともに、前記複数のデータ・ピン上の第四のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを受信するためのデータ・受信ロジックと、
前記複数のアドレス・ピン上の前記第二のアドレス・ストローブの第一のエッジに同期したアドレス・エレメントを受信するとともに、前記複数のアドレス・ピン上の前記第二のアドレス・ストローブの第二のエッジに同期したアドレス・エレメントを受信するためのアドレス受信ロジックと、
をさらに具備することを特徴とする請求項２１に記載のバス・エージェント。
【請求項２９】  前記バス・エージェントは、
チップ・セットと、
プロセッサと、
メモリ・コントローラと、
中央エージェントと、
Ｉ／Ｏエージェントと、
からなるバス・エージェントの一つ以上の組み合わせからなる、請求項２８に記載のバス・エージェント。
【請求項３０】  データ・ピンＤ［６３：０］と、
複数のアドレス・ピンと、
リクエスト・ピンＲＥＱ［３：０］を含む複数のリクエスト・ピンと、
バス・クロック周波数を有するバス・クロック信号のための共通クロック・ピンと、
前記バス・クロック信号と同期して動作する複数の信号を転送するための複数のコントロール・ピンと、
四対のデータ・ストローブ信号を生成するためのデータ・ストローブ生成ロジックであって、前記四対のデータ・ストローブ信号の各々は、第一のデータ・ストローブ信号及び第二のデータ・ストローブ信号を有し、前記四対のデータ・ストローブ信号それぞれの前記第一のデータ・ストローブ信号及び前記第二のデータ・ストローブ信号は前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する、そのようなデータ・ストローブ生成ロジックと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを生成するためのアドレス・ストローブ生成ロジックと、
前記四対のデータ・ストローブ信号それぞれのために、かつ、前記複数のデータ・ピンの異なるサブセット上に、前記複数のデータ・ピンのサブセット上の前記第一のデータ・ストローブ信号の立ち下がりエッジに同期した第一のデータ・エレメント、および前記複数のデータ・ピンのサブセット上の前記第二のデータ・ストローブ信号の立ち下がりエッジに同期した第二のデータ・エレメント、を転送するためのデータ転送ロジックと、
前記複数のアドレス・ピン上の前記第一のアドレス・ストローブの立ち下がりエッジに同期したアドレス・エレメントを転送するとともに、前記複数のアドレス・ピン上の前記第一のアドレス・ストローブの立ち上がりエッジに同期したアドレス・エレメントを転送し、前記複数のリクエスト・ピン上の前記第一のアドレス・ストローブの立ち下がりエッジに同期したリクエスト・エレメントを転送するとともに、前記複数のリクエスト・ピン上の前記第一のアドレス・ストローブの前記立ち上がりエッジに同期したリクエスト・エレメントを転送するアドレス転送ロジックと、
を具備することを特徴とするバス・エージェント。
【請求項３１】  前記第一のアドレス・ストローブは、実質的に同じ二つのアドレス・ストローブからなる、請求項３０に記載のバス・エージェント。
【請求項３２】  実質的に同じ二つのアドレス・ストローブの第一のものは、複数のアドレス・ピンおよび複数のリクエスト・ピンの第一のサブセットに同期して転送されるとともに、実質的に同じ二つのアドレス・ストローブの第二のものは、複数のアドレス・ピンおよび複数のリクエスト・ピンの第二のサブセットに同期して転送され、前記第二のサブセットは、複数のアドレス・ピンおよび複数のリクエスト・ピンのうち第一のサブセットに含まれていないものからなる、請求項３１に記載のバス・エージェント。
【請求項３３】  前記複数のコントロール・ピンは、
ＡＤＳ＃と、
ＢＮＲ＃と、
ＢＰＲＩ＃と、
少なくとも一つのバス・リクエスト・ピンと、
ＤＢＳＹ＃と、
ＤＥＦＥＲ＃と、
ＤＰ［３：０］＃と、
ＤＲＤＹ＃と、
ＨＩＴ＃と、
ＨＩＴＭ＃と、
ＩＮＩＴ＃と、
ＴＲＤＹ＃と、
からなる信号の組のためのピンを含んでいる、請求項３０に記載のバス・エージェント。
【請求項３４】  複数のデータ・ピンと、
複数のアドレス・ピンと、
バス・クロック周波数を有するバス・クロック信号のための共通クロック・ピンと、
前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一のデータ・ストローブ信号及び第二のデータ・ストローブ信号を受信するためのデータ・ストローブ受信ロジックと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを受信するためのアドレス・ストローブ受信ロジックと、
前記複数のデータ・ピン上の前記第一のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを受信するとともに、前記複数のデータ・ピン上の前記第二のデータ・ストローブ信号の第一のエッジに同期したデータ・エレメントを受信するためのデータ受信ロジックと、
前記複数のアドレス・ピン上の前記第一のアドレス・ストローブの第一のエッジに同期したアドレス・エレメントを受信するとともに、同じく前記複数のアドレス・ピン上の前記第一のアドレス・ストローブの第二のエッジに同期したアドレス・エレメントを受信するアドレス受信ロジックと、
を具備することを特徴とするバス・エージェント。
【請求項３５】  複数のリクエスト・ピンをさらに有し、
前記アドレス受信ロジックは、前記複数のリクエスト・ピン上の第一のアドレス・ストローブの第一のエッジに同期したリクエスト・エレメント、および前記複数のリクエスト・ピン上の第一のアドレス・ストローブの第二のエッジに同期したリクエスト・エレメントを受信する、請求項３４に記載のバス・エージェント。
【請求項３６】  バス・エージェントは、１６個の各データ・ピンへ一対のストローブを供給するとともに、二つのアドレス・ストローブを、前記複数のアドレス・ピン及び前記複数のリクエスト・ピンの二つのサブセットそれぞれに一つ供給する、請求項３５に記載のバス・エージェント。
【請求項３７】  第一のデータ・ストローブの第一のエッジは立ち下がりエッジであり、第二のデータ・ストローブの第一のエッジは立ち下がりエッジである、請求項３４に記載のバス・エージェント。
【請求項３８】  第一のデータ・ストローブ信号と第二のデータ・ストローブ信号とが相補的な（complementary）ストローブ信号である、請求項３４に記載のバス・エージェント。
【請求項３９】  共通クロック・プロトコールを用いて通信するための複数のコントロール・ピンをさらに有する、請求項３５に記載のバス・エージェント。
【請求項４０】  前記複数のコントロール・ピンは、
ＡＤＳ＃と、
ＢＮＲ＃と、
ＢＰＲＩ＃と、
少なくとも一つのバス・リクエスト・ピンと、
ＤＢＳＹ＃と、
ＤＥＦＥＲ＃と、
ＤＰ［３：０］＃と、
ＤＲＤＹ＃と、
ＨＩＴ＃と、
ＨＩＴＭ＃と、
ＩＮＩＴ＃と、
ＴＲＤＹ＃と、
からなる信号の組のためのコントロール・ピンの組を含むんでいる、請求項３９に記載のバス・エージェント。
【請求項４１】  前記第一のアドレス・ストローブは、実質的に同じ二つのアドレス・ストローブからなる、請求項３４に記載のバス・エージェント。
【請求項４２】  バス・クロック周波数で動作するバス・クロックのためのバス・クロック・インターフェースと、
ソースに同期して、バス・クロック周波数の２倍の周波数でアドレス・バス情報エレメントを伝達するためのダブル・ポンプ（double pumped）・アドレス・バス・インターフェースと、
ソースに同期して、バス・クロック周波数の２倍の周波数でリクエスト情報エレメントを伝達するためのダブル・ポンプ・リクエスト・バス・インターフェースと、
ソースに同期して、バス・クロック周波数の４倍でデータ・バス情報エレメントを伝達するためのクアド・ポンプ（quad pumped）・データ・バスと、
を具備することを特徴とするバス・エージェント。
【請求項４３】  さらに、バス・クロック周波数で動作する複数のコントロール信号のためのインターフェースを有する、請求項４２に記載のバス・エージェント。
【請求項４４】  アドレス・バスと、
リクエスト・バスと、
データ・バスと、
バス・クロック周波数で動作する一つ以上のバス・クロック信号を転送するための少なくとも一つのバス・クロック信号ラインと、
前記アドレス・バス、前記リクエスト・バス、そして前記データ・バスに接続され、前記データ・バスにクアド・ポンプ・データを与えるとともに、ダブル・ポンプ・アドレスを前記アドレス・バスに、リクエスト情報を前記リクエスト・バスにそれぞれ与えるバス・インターフェース・ロジックを有する第一のエージェントと、
前記アドレス・バス、前記リクエスト・バス、そして前記データ・バスに接続され、前記データ・バス上のクアド・ポンプ・データを受信するとともに、前記アドレス・バス上のダブル・ポンプ・アドレス、および前記リクエスト・バス上のリクエスト情報をそれぞれ受信するバス・インターフェース・ロジックを有する第一のエージェントと、
を具備することを特徴とするシステム。
【請求項４５】  前記第一のエージェントはプロセッサであり、前記第二のエージェントはチップ・セットである、請求項４４に記載のシステム。
【請求項４６】  一つまたは二つ以上のバス・クロック信号に同期して複数のコントロール信号が転送されるコントロール・バスをさらに有している請求項４４に記載のシステム。
【請求項４７】  情報がソースに同期して、前記データ・バス、前記アドレス・バス、そして前記リクエスト・バス上で転送される、請求項４５に記載のシステム。
【請求項４８】  バスと、
第一のエージェントと、
第二のエージェントとを有するシステムであって、
前記バスは、
複数のデータ・ラインと、
複数のデータ・ストローブ・ラインと、
複数のアドレス・ラインと、
アドレス・ストローブ・ラインと、
バス・クロック信号ラインとを含み、
前記第一のエージェントは、
前記複数のデータ・ラインに接続された複数の第一エージェント・データ・ピンと、
前記複数のデータ・ストローブ・ラインに接続され、第一エージェント第一データ・ストローブ・ピン及び第一エージェント第二データ・ストローブ・ピンを含む複数の第一のエージェント・データ・ストローブ・ピンと、
前記複数のアドレス・ラインに接続された複数の第一エージェント・アドレス・ピンと、
前記アドレス・ストローブ・ラインに接続された第一エージェント・アドレス・ストローブ・ピンと、
バス・クロック周波数を有するバス・クロック信号を受信するために接続された第一エージェント共通クロック・ピンと、
前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一エージェント第一データ・ストローブ信号を第一エージェント第一データ・ストローブ・ピン上に、そして前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一エージェント第二データ・ストローブ信号を第一エージェント第二データ・ストローブ・ピン上に生成するための第一エージェント・データ・ストローブ生成ロジックと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一エージェント・アドレス・ストローブを前記第一エージェント・アドレス・ストローブ・ピン上に生成するための第一エージェント・アドレス・ストローブ・生成ロジックと、
前記複数の第一エージェント・データ・ピン上に前記第一エージェント第一データ・ストローブ信号の第一の立ち下がりエッジに同期して第一のデータ・エレメントを転送するとともに、同じく前記複数の第一エージェント・データ・ピン上に第一エージェント第二データ・ストローブ信号の第一の立ち下がりエッジに同期して第二のデータ・エレメントを転送し、前記複数の第一エージェント・データ・ピン上に前記第一エージェント第一データ・ストローブ信号の第二の立ち下がりエッジに同期して第三のデータ・エレメントを転送し、同じく前記複数の第一エージェント・データ・ピン上に前記第一エージェント第二データ・ストローブ信号の第二の立ち下がりエッジに同期して第四のデータ・エレメントを転送する、第一エージェント・データ転送ロジックと、
前記複数のアドレス・ピン上に前記第一エージェント・ストローブの立ち下がりエッジに同期してアドレス・エレメントを転送し、同じく前記複数のアドレス・ピン上に前記第一エージェント・アドレス・ストローブの立ち上がりエッジに同期してアドレス・エレメントを転送する、第一エージェント・アドレス転送ロジックと、を含み、
前記第二のエージェントは、
前記複数のデータ・ラインに接続された複数の第二エージェント・データ・ピンと、
第二エージェント第一データ・ストローブ・ピン及び第二エージェント第二データ・ストローブ・ピンを含む、前記複数のデータ・ストローブ・ラインに接続されている複数の第二エージェント・データ・ストローブ・ピンと、
前記複数のアドレス・ラインに接続されている複数の第二エージェント・アドレス・ピンと、
前記アドレス・ストローブ・ラインに接続されている第二エージェント・アドレス・ストローブ・ピンと、
バス・クロック周波数を有するバス・クロック信号を受信するために接続されている第二エージェント共通クロック・ピンと、
前記複数の第二エージェント・データ・ストローブ・ピン上の前記第一エージェント第一データ・ストローブ信号及び前記第一エージェント第二データ・ストローブ信号を受信するための第二エージェント・データ・ストローブ受信ロジックと、
前記第二エージェント・アドレス・ストローブ・ピン上の前記第一エージェント・アドレス・ストローブを受信するための第二エージェント・アドレス・ストローブ受信ロジックと、
前記複数の第二エージェント・データ・ピン上の前記第一エージェント第一データ・ストローブ信号の前記第一の立ち下がりエッジに同期して前記第一のデータ・エレメントを受信し、同じく前記複数の第二エージェント・データ・ピン上の前記第一エージェント第二データ・ストローブ信号の前記第一の立ち下がりエッジに同期して前記第二データ・エレメントを受信し、前記複数の第二エージェント・データ・ピン上の前記第一エージェント第一データ・ストローブ信号の前記第二の立ち下がりエッジに同期して前記第三のデータ・エレメントを受信し、同じく前記複数の第二エージェント・データ・ピン上の前記第一エージェント第二データ・ストローブ信号の前記第二の立ち下がりエッジに同期して前記第四のデータ・エレメントを受信する、第二エージェント・データ受信ロジックと、
前記複数の第二エージェント・アドレス・ピン上の前記第一エージェント・アドレス・ストローブの前記第一のエッジに同期してアドレス・エレメントを受信し、同じく前記複数のアドレス・ピン上の前記第一エージェント・アドレス・ストローブの前記第二のエッジに同期してアドレス・エレメントを受信する、第二エージェント・アドレス受信ロジックとを、含んでいる、
ことを特徴とするシステム。
【請求項４９】  前記第二エージェントは、さらに、前記バス・クロック周波数の２倍の前記データ・ストローブ周波数を有する第二エージェント第一データ・ストローブ信号を第二エージェント第一データ・ストローブ・ピン上に、前記バス・クロック周波数の２倍の前記データ・ストローブ周波数を有する第二エージェント第二データ・ストローブ信号を第二エージェント第二データ・ストローブ・ピン上に生成する、第二エージェント・データ・ストローブ生成ロジックを備えている、請求項４８に記載のシステム。
【請求項５０】  前記第一のエージェントは、さらに、
前記複数の第一エージェント・データ・ストローブ・ピン上の前記第一エージェント第一データ・ストローブ信号及び前記第一エージェント第二データ・ストローブ信号を受信する第一エージェント・データ・ストローブ受信ロジックと、
前記第一エージェント・アドレス・ストローブ・ピン上の前記第一エージェント・アドレス・ストローブを受信する第一エージェント・アドレス・ストローブ受信ロジックと、
前記複数の第一エージェント・データ・ピン上の前記第一エージェント第一データ・ストローブ信号の前記第一のエッジに同期してデータ・エレメントを受信するとともに、同じく前記複数の第一エージェント・データ・ピン上の前記第一エージェント第二データ・ストローブ信号に同期してデータ・エレメントを受信する、第一エージェント・データ受信ロジックと、
前記複数の第一エージェント・データ・ピン上の前記第一エージェント第一データ・ストローブ信号の前記第一のエッジに同期してアドレス・エレメントを受信するとともに、同じく前記複数のアドレス・ピン上の前記第一エージェント・アドレス・ストローブの前記第二のエッジに同期してアドレス・エレメントを受信する、第一エージェント・アドレス受信ロジックと、
を有するものである、請求項４９に記載のシステム。
【請求項５１】  さらに、バス・クロック信号に同期して複数のコントロール信号が転送されるコントロール・バスを有する、請求項５０に記載のシステム。
【請求項５２】  データ・フェーズにおいて複数の相補的ストローブ信号対を与える工程と、
前記複数の相補的ストローブ信号対と関連して、ソース同期の方法で転送される、バス・クロック・サイクル当たり４つのデータ・エレメントを与える工程と、
複数のアドレス・ストローブを与える工程と、
前記複数のアドレス・ストローブに関連して、ソース同期の方法で転送される、バス・クロック・サイクル当たり２つのリクエスト・エレメント及び２つのアドレス・エレメントを与える工程と、
を有することを特徴とする方法。
【請求項５３】  前記四つのデータ・エレメントを与える工程は、
一対のデータ・ストローブ信号のうちの第一のものの第一の種類の第一のエッジに同期した第一のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第二のものの第一の種類の第一のエッジに同期した第二のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第一のものの第一の種類の第二のエッジに同期した第三のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第二のものの第一の種類の第二のエッジに同期した第四のデータ・エレメントを与える工程と、
を含んでいる、請求項５２に記載の方法。
【請求項５４】  前記第一の種類のエッジは、立ち上がりエッジである、請求項５３に記載の方法。
【請求項５５】  前記二つのリクエスト・エレメント及び二つのアドレス・エレメントを与える工程は、
複数のアドレス・ストローブの少なくとも一つの第一のエッジに同期した第一のアドレス・エレメント及び第一のリクエスト・エレメントを与える工程と、
一対のデータ・ストローブ信号の第二のものの第一の種類の第二のエッジに同期した第二のアドレス・エレメント及び第二のリクエスト・エレメントを与える工程と、
を含むものである、請求項５３に記載の方法。
【請求項５６】  前記第一のエッジは、アドレス・ストローブの立ち下がりエッジであり、前記第二のエッジは、アドレス・ストローブの立ち上がりエッジである、請求項５５に記載の方法。
【請求項５７】  ブロック・ネクスト・リクエスト信号ピンと、
アドレス・ストローブ信号ピンと、
先行する調停フェーズから２クロック後に調停フェーズを開始することができ、アドレス・ストローブ信号のアサートがアドレス・ストローブ信号ピン上に生じてから２バス・クロック・サイクル後にブロック・ネクスト・リクエスト信号ピン上のブロック・ネクスト・リクエスト信号を受信することができ、そして、前記ブロック・ネクスト・リクエスト信号に応答することができる調停ロジックと、
を含むことを特徴とするバス・エージェント。
【請求項５８】  クアド・ポンプ・データ・バス・インターフェースをさらに含んでいる請求項５７に記載のバス・エージェント。
【請求項５９】  ダブル・ポンプ・アドレス・バス・インターフェースと、
ダブル・ポンプ・リクエスト・バス・インターフェースと、
をさらに含んでいる請求項５８に記載のバス・エージェント。
【請求項６０】  前記調停ロジックは、前記ブロック・ネクスト・リクエスト信号が２クロックごとにブロック・ネクスト・リクエスト・サンプリング点にアサートされたままであれば、停止状態へ移行し、その後前記停止状態にとどまることによって、前記ブロック・ネクスト・リクエスト信号に応答し、前記停止状態はバス・エージェントがバス・リクエストを発するのを阻止する、請求項５９に記載のバス・エージェント。
【請求項６１】  複数のデータ・ピンと、
複数のデータ・ストローブ・ピンと、
バス・クロック周波数を有するバス・クロック信号のための共通クロック・ピンと、
第一のデータ・ストローブ・ピン及び第二のデータ・ストローブ・ピン上に、前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一のデータ・ストローブ信号及び第二のデータ・ストローブ信号を生成するデータ・ストローブ生成ロジックと、
前記第一のデータ・ストローブ信号の第一のエッジに同期してデータ・エレメントを前記複数のデータ・ピン上に転送するとともに、前記第二のデータ・ストローブ信号の第一のエッジに同期してデータ・エレメントを同じく前記複数のデータ・ピン上に転送するデータ・転送ロジックと、
をさらに有する請求項５７に記載のバス・エージェント。
【請求項６２】  複数のアドレス・ピンと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを生成するアドレス・ストローブ生成ロジックと、
前記第一のアドレス・ストローブの第一のエッジに同期してアドレス・エレメントを前記複数のアドレス・ピンに転送するとともに、前記第一のアドレス・ストローブの第二のエッジに同期してアドレス・エレメントを同じく前記複数のアドレス・ピンに転送するアドレス転送ロジックと、
をさらに有する、請求項６１に記載のバス・エージェント。
【請求項６３】  複数のリクエスト・ピンをさらに有し、
前記アドレス転送ロジックは、前記第一のアドレス・ストローブの第一のエッジに同期してリクエスト・エレメントを前記複数のリクエスト・ピンに転送するとともに、前記第一のアドレス・ストローブの第二のエッジに同期してリクエスト・エレメントを同じく前記複数のリクエスト・ピンに転送する、請求項６２に記載のバス・エージェント。
【請求項６４】  複数のアドレス・ピンと、
複数のリクエスト・ピンと、
バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを生成するアドレス・ストローブ生成ロジックと、
前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のアドレス・ピンへアドレス・エレメントを転送し、前記第一のアドレス・ストローブの第二のエッジに同期して同じく前記複数のアドレス・ピンにアドレス・エレメントを転送し、前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のリクエスト・ピンにリクエスト・エレメントを転送し、そして、前記第一のアドレス・ストローブの第二のエッジに同期して同じく前記複数のリクエスト・ピンにリクエスト・エレメントを転送するアドレス転送ロジックと、
をさらに有する請求項５７に記載のバス・エージェント。
【請求項６５】  前記第一のアドレス・ストローブは、実質的に同じ二つのアドレス・ストローブを含んでいる、請求項６４に記載のバス・エージェント。
【請求項６６】  実質的に同じ二つのアドレス・ストローブの第一のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第一のサブセットに同期して転送され、実質的に同じ二つのアドレス・ストローブの第二のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第二のサブセットに同期して転送され、そして前記第二のサブセットは、第一のサブセットに含まれない複数のアドレス・ピン及び複数のリクエスト・ピンの残りのものから構成されている、請求項６５に記載のバス・エージェント。
【請求項６７】  前記バス・エージェントは優先エージェント（priority agent）であり、前記優先エージェントは、優先エージェント・バス・リクエスト・ピンを含んでおり、
前記調停ロジックは、１バス・クロック・サイクルの最小ディアサート時間（minimum deassertion time）で、前記優先エージェント・バス・リクエスト・ピン上に優先エージェント・バス・リクエスト信号をアサートすることができる、請求項５７に記載のバス・エージェント。
【請求項６８】  前記調停ロジックは、ブロック・ネクスト・リクエスト信号が受信されたときにバス・エージェントがフリー状態にあった場合にはフリー状態からスロットル状態へ移行することによって、そして、ブロック・ネクスト・リクエスト信号が２クロック遅くアサートされている場合にはスロットル状態から停止状態へ移行することによって前記ブロック・ネクスト・リクエスト信号に応答し、その後は、前記ブロック・ネクスト・リクエスト信号が２クロックごとのブロック・ネクスト・リクエスト・サンプリング点においてアサートされたままのときは前記停止状態のままでおり、前記停止状態はバス・エージェントがバス・リクエストを発するのを妨げる、請求項５９に記載のバス・エージェント。
【請求項６９】  第一のトランザクションの第一の調停フェーズの一部として第一のリクエスト信号をアサートする工程と、
前記第一のトランザクションの完了に先立ってパイプライン方式で第二のトランザクションの第二のリクエスト・フェーズの一部として第二のリクエスト信号をアサートする工程と、
第一のトランザクションのリクエスト・フェーズの一部としてアドレス・ストローブ信号をアサートする工程と、
アドレス・ストローブ信号をアサートして２バス・クロック・サイクル後にブロック・ネクスト・リクエスト信号を受信する工程と、
前記ブロック・ネクスト・リクエスト信号に応答する工程と、
を具備することを特徴とする方法。
【請求項７０】  前記第一のリクエスト信号は第一のバス・エージェントによってアサートされ、前記第二のリクエスト信号は第二のバス・エージェントによってアサートされる、請求項６９に記載の方法。
【請求項７１】  前記第一のリクエスト信号及び前記第二のリクエスト信号は、第一のバス・エージェントによってアサートされる、請求項６９に記載の方法。
【請求項７２】  データ・フェーズにおいて複数の相補的ストローブ信号対を与える工程と、
前記複数の相補的ストローブ信号対に関連して、ソース同期の方法で転送されるバス・クロック・サイクル当たり四つのデータ・エレメントを与える工程と、
をさらに含むものである、請求項６９に記載の方法。
【請求項７３】  複数のアドレス・ストローブを与える工程と、
前記複数のアドレス・ストローブに関連して、ソース同期の方法で転送されるバス・クロック・サイクル当たり二つのリクエスト・エレメント及び二つのアドレス・エレメントを与える工程と、
をさらに含むものである、請求項７２に記載の方法。
【請求項７４】  前記四つのデータ・エレメントを与える工程は、
一対のデータ・ストローブ信号の第一のものの第一の種類の第一のエッジに同期して第一のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号の第二のものの第一の種類の第一のエッジに同期して第二のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号の第一のものの第一の種類の第二のエッジに同期して第三のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号の第二のものの第一の種類の第二のエッジに同期して第四のデータ・エレメントを与える工程と、
を含んでいる、請求項７３に記載の方法。
【請求項７５】  前記第一の種類のエッジは立ち下がりエッジである、請求項７４に記載の方法。
【請求項７６】  前記二つのリクエスト・エレメント及び二つのアドレス・エレメントを与える工程は、
複数のアドレス・ストローブ信号の少なくとも一つの第一のエッジに同期して第一のアドレス・エレメント及び第一のリクエスト・エレメントを与える工程と、
複数のアドレス・ストローブ信号の少なくとも一つの第二のエッジに同期して第二のアドレス・エレメント及び第二のリクエスト・エレメントを与える工程と、
を含んでいる、請求項７４に記載の方法。
【請求項７７】  前記第一のエッジはアドレス・ストローブの立ち下がりエッジであり、第二のエッジはアドレス・ストローブの立ち上がりエッジである、請求項７６に記載の方法。
【請求項７８】  前記応答する工程は、
前記ブロック・ネクスト・リクエスト信号が２クロックごとのブロック・ネクスト・リクエスト・サンプリング点においてアサートされたままのときは、停止状態に移行し、その後、前記停止状態にとどまり、当該停止状態はバス・エージェントがバス・リクエストを発するのを阻止する、請求項６９に記載の方法。
【請求項７９】  前記応答する工程は、
前記調停ロジックは、ブロック・ネクスト・リクエスト信号が受信されたときにバス・エージェントがフリー状態にあった場合にはフリー状態からスロットル状態へ移行し、ブロック・ネクスト・リクエスト信号が２クロック遅くアサートされている場合にはスロットル状態から停止状態へ移行する工程と、
前記ブロック・ネクスト・リクエスト信号が２クロックごとのブロック・ネクスト・リクエスト・サンプリング点においてアサートされたままのときは前記停止状態のままでいる工程であって、前記停止状態はバス・エージェントがバス・リクエストを発するのを妨げる工程と、
を含んでいる、請求項６９に記載の方法。
【請求項８０】  バス・エージェントと、
ブロック・ネクスト・リクエスト信号ピンと、
優先エージェント・バス・リクエスト入力ピンと、
アドレス・ストローブ信号ピンと、
先行する調停フェーズから２クロック後に調停フェーズを開始することができ、アドレス・ストローブ信号のアサートがアドレス・ストローブ信号ピン上に生じてから２バス・クロック・サイクル後にブロック・ネクスト・リクエスト信号ピン上のブロック・ネクスト・リクエスト信号を受信することができ、前記ブロック・ネクスト・リクエスト信号に応答するバス・エージェント調停ロジックと、を含み、
優先バス・エージェントは、
優先エージェント・バス・リクエスト・ピンと、
１バス・クロック・サイクルの最小ディアサート時間で、前記優先エージェント・バス・リクエスト・ピン上に優先エージェント・バス・リクエスト信号をアサートすることができる優先バス・エージェント・調停ロジックと、
を含んでいることを特徴とするシステム。
【請求項８１】  前記バス・エージェント及び前記優先バス・エージェントの両方は、さらに、クアド・ポンプ・ソース同期データ・バス・インターフェースを含んでいる、請求項８０に記載のシステム。
【請求項８２】  前記バス・エージェント及び前記優先バス・エージェントの両方は、さらに、ダブル・ポンプ・ソース同期アドレス・バス・インターフェースを含んでいる、請求項８１に記載のシステム。
【請求項８３】  前記バス・エージェント及び前記優先バス・エージェントの両方は、さらに、ダブル・ポンプ・ソース同期リクエスト・バス・インターフェースを含んでいる、請求項８２に記載のシステム。
【請求項８４】  前記システムは、さらに、共通クロック・プロトコールに基づいて動作する複数のコントロール信号を有している、請求項８３に記載のシステム。
【請求項８５】  複数のリクエスト信号ピンと、
アドレス・ストローブ信号ピンと、
第一のトランザクションのための第一のトランザクション・アドレス・ストローブ信号のアサートがアドレス・ストローブ信号ピンに生じてから２バス・サイクル後に、複数のリクエスト信号を前記複数のリクエスト信号ピン上に、そして第二のトランザクションのための第二のトランザクション・アドレス・ストローブ信号をアドレス・ストローブ信号ピン上にアサートすることによって、第一のトランザクションのための第一のリクエスト・フェーズの２クロック後に第二のトランザクションのための第二のリクエスト・フェーズを開始することができるリクエスト・ロジックと、
バス・クロック周波数の倍数で、ソース同期の方法で、前記複数のリクエスト信号及び複数のアドレス信号を転送する、アドレス及びリクエスト転送ロジックと、
を含んでいることを特徴とするバス・エージェント。
【請求項８６】  前記第一のリクエスト・フェーズ及び前記第二のリクエスト・フェーズは、ダブル・ポンプ・リクエスト・フェーズである、請求項８５に記載のバス・エージェント。
【請求項８７】  クアド・ポンプ・データ・バス・インターフェースをさらに含んでいる、請求項８５に記載のバス・エージェント。
【請求項８８】  前記アドレス及びリクエスト転送ロジックは、ダブル・ポンプ・アドレス及びリクエスト・バス・インターフェースを含んでいる、請求項８７に記載のバス・エージェント。
【請求項８９】  複数のデータ・ピンと、
複数のデータ・ストローブ・ピンと、
バス・クロック周波数で動作するバス・クロック信号を伝送する共通クロック・ピンと、
第一のデータ・ストローブ・ピン及び第二のデータ・ストローブ・ピンに、前記バス・クロック周波数の２倍のデータ・ストローブ周波数を有する第一のデータ・ストローブ信号及び第二のデータ・ストローブ信号を生成するデータ・ストローブ生成ロジックと、
前記第一のデータ・ストローブ信号の第一のエッジに同期して前記複数のデータ・ピンにデータ・エレメントを転送し、前記第二のデータ・ストローブ信号の第一のエッジに同期して前記複数のデータ・ピンにデータ・エレメントを転送するデータ転送ロジックと、
をさらに有する請求項８５に記載のバス・エージェント。
【請求項９０】  複数のアドレス・ピンと、
前記バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを生成するアドレス・ストローブ生成ロジックと、
前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のアドレス・ピンにアドレス・エレメントを転送し、前記第一のアドレス・ストローブの第二のエッジに同期して同じく前記複数のアドレス・ピンにアドレス・エレメントを転送するアドレス転送ロジックと、
をさらに有する請求項８９に記載のバス・エージェント。
【請求項９１】  さらに複数のリクエスト・ピンを有し、
前記アドレス転送ロジックは、前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のリクエスト・ピンにリクエスト・エレメントを転送し、前記第一のアドレス・ストローブの第二のエッジに同期して同じく前記複数のリクエスト・ピンにリクエスト・エレメントを転送する、請求項９０に記載のバス・エージェント。
【請求項９２】  複数のアドレス・ピンと、
複数のリクエスト・ピンと、
バス・クロック周波数と同じアドレス・ストローブ周波数を有する第一のアドレス・ストローブを生成するアドレス・ストローブ生成ロジックと、
前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のアドレス・ピンにアドレス・エレメントを転送し、前記第一のアドレス・ストローブの第二のエッジに同期して前記複数のアドレス・ピンにアドレス・エレメントを転送し、前記第一のアドレス・ストローブの第一のエッジに同期して前記複数のリクエスト・ピンにリクエスト・エレメントを転送し、そして、前記第一のアドレス・ストローブの第二のエッジに同期して前記複数のリクエスト・ピンにリクエスト・エレメントを転送する、アドレス転送ロジックと、
をさらに有する、請求項８５に記載のバス・エージェント。
【請求項９３】  前記第一のアドレス・ストローブは、実質的に等しい二つのアドレス・ストローブからなるものである、請求項９２に記載のバス・エージェント。
【請求項９４】  実質的に等しい二つのアドレス・ストローブの第一のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第一のサブセットに同期して転送され、実質的に等しい二つのアドレス・ストローブの第二のものは、複数のアドレス・ピン及び複数のリクエスト・ピンの第二のサブセットに同期して転送され、この第二のサブセットは、第一のサブセットに含まれない複数のアドレス・ピン及び複数のリクエスト・ピンから構成されている、請求項９３に記載のバス・エージェント。
【請求項９５】  前記クアド・ポンプ・データ・バス・インターフェースは、ソース同期クアド・ポンプ・データ・バス・インターフェースである、請求項８７に記載バス・エージェント。
【請求項９６】  第一のトランザクションのための第一のリクエスト・フェーズを開始する工程と、
前記第一のトランザクションの完了よりも前にパイプライン方式で第二のトランザクションのための第二のリクエスト・フェーズを開始する工程とを含み、
前記第二のトランザクションのための第二のリクエスト・フェーズは、第一のアドレス・ストローブ信号のアサートの２バス・サイクル後に生じる第二のトランザクションのための第二のアドレス・ストローブ信号のアサートによって測定されて、第一のトランザクションのための第一のリクエスト・フェーズの２バス・サイクル後に開始されることを特徴とする方法。
【請求項９７】  データ・フェーズにおいて複数の相補的ストローブ信号対を与える工程と、
前記複数の相補的ストローブ信号対との関連で、ソース同期の方法で転送される、バス・クロック・サイクル当たり四つのデータ・エレメントを与える工程と、
をさらに含む、請求項９６に記載の方法。
【請求項９８】  複数のアドレス・ストローブを与える工程と、
前記複数のアドレス・ストローブとの関連で、ソース同期の方法で転送される、二つのリクエスト・エレメント及び二つのアドレス・エレメントを与える工程と、
をさらに含む請求項９７に記載の方法。
【請求項９９】  前記四つのデータ・エレメントを与える工程は、
一対のデータ・ストローブ信号のうちの第一のものの第一の種類の第一のエッジに同期した第一のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第二のものの第一の種類の第一のエッジに同期した第二のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第一のものの第一の種類の第二のエッジに同期した第三のデータ・エレメントを与える工程と、
一対のデータ・ストローブ信号のうちの第二のものの第一の種類の第二のエッジに同期した第四のデータ・エレメントを与える工程と、
を含んでいる、請求項９８の方法。
【請求項１００】  前記エッジの第一の種類は、立ち下がりエッジである、請求項９９に記載の方法。
【請求項１０１】  前記二つのリクエスト・エレメント及び二つのアドレス・エレメントを与える工程は、
複数のアドレス・ストローブの少なくとも一つの第一のエッジに同期した第一のアドレス・エレメント及び第一のリクエスト・エレメントを与える工程と、
複数のアドレス・ストローブ信号の少なくとも一つの第二のエッジに同期した第二のアドレス・エレメント及び第二のリクエスト・エレメントを与える工程と、
を含むものである、請求項９９に記載の方法。
【請求項１０２】  前記第一のエッジはアドレス・ストローブの立ち下がりエッジであり、第二のエッジはアドレス・ストローブの立ち上がりエッジである、請求項１０１に記載の方法。
【請求項１０３】  バスと、
一以上のバス・エージェントと、
複数のリクエスト信号ピンと、
アドレス・ストローブ信号ピンと、
第一のトランザクションのための第一のトランザクション・アドレス・ストローブ信号のアサートがアドレス・ストローブ信号ピンに生じてから２バス・サイクル後に、複数のリクエスト信号を前記複数のリクエスト信号ピン上に、そして第二のトランザクションのための第二のトランザクション・アドレス・ストローブ信号をアドレス・ストローブ信号ピン上にアサートすることによって、第一のリクエスト・フェーズの２クロック後に第二のリクエスト・フェーズを開始することができるリクエスト・ロジックと、
バス・クロック周波数の倍数で、ソース同期の方法で、前記複数のリクエスト信号及び複数のアドレス信号を転送する、アドレス及びリクエスト転送ロジックと、
を含んでいることを特徴とするシステム。
【請求項１０４】  前記一以上のバス・エージェントは、さらに、クアド・ポンプ・ソース同期データ・バス・インターフェースを含んでいる、請求項１０３に記載のシステム。
【請求項１０５】  前記一以上のバス・エージェントは、さらに、ダブル・ポンプ・ソース同期アドレス・バス・インターフェースを含んでいる、請求項１０４に記載のシステム。
【請求項１０６】  前記一以上のバス・エージェントの前記アドレス及びリクエスト転送ロジックは、
ダブル・ポンプ・アドレス及びリクエスト・バス・インターフェースを含んでいる、
請求項１０５に記載のシステム。
【請求項１０７】  前記システムは、さらに、共通クロック・プロトコールに基づいて動作する複数のコントロール信号を含んでいる、請求項１０６に記載のシステム。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は一般的にプロセッサに関し、より詳しくは、クアド・ポンプ・バス・アーキテクチャ（quad pumped bus architecture）およびプロトコルに関する。
【０００２】
（背景技術）
今日のソフトウェアおよびアプリケーションの複雑さおよび需要が増しつつあるため、向上したスループットおよび帯域幅を供給するためのプロセッサに対する需要がある。入力／出力（Ｉ／Ｏ）速度または帯域幅、メモリ、サイズ等、コンピュータ能力を制約するように動作しうるリソースは、一又は二以上ありうる。通常、コンピュータの能力を制約し、または圧迫している一つのリソースは、一つ以上のプロセッサとチップセット（chipset）との間に供給されるバスである、プロセッサ・バスまたはフロント・サイド・バスのスピードおよび帯域幅である。例えば、いくつかのＰｅｎｔｉｕｍTMプロセッサ（Ｉｎｔｅｌ  ＣｏｒｐｏｒａｔｉｏｎのＰｅｎｔｉｕｍ  ＰｒｏTM等）は、６４ビット・データ・バスを含み、１プロセッサ・クロック・サイクルにつき、８バイトを転送することができ、および４クロック・サイクルで、３２バイト・キャッシュ・ラインを転送することができる。このように、プロセッサ・クロックが、（一例として）１００ＭＨｚで供給される場合、前記データ転送速度は、８００Ｍバイト毎秒であろう。Ｐｅｎｔｉｕｍ  Ｐｒｏプロセッサ・アーキテクチャの様々な詳細は、“Ｐｅｎｔｉｕｍ  Ｐｒｏ  Ｆａｍｉｌｙ  Ｄｅｖｅｌｏｐｅｒ‘ｓ  Ｍａｎｕａｌ，  Ｖｏｌｕｍｅ  １：Ｓｐｅｃｉｆｉｃａｔｉｏｎ”１９９６年１月、ＩＳＢＮ  １−５５５１２−２５９−０に見ることができる。８００Ｍバイト毎秒のデータ転送速度は、多くのアプリケーションでは十分であるが、向上したデータ転送速度または帯域幅を供給するプロセッサ・バスに対する必要性が存在する。
【０００３】
（発明の開示）
本発明の実施例によれば、マルチドロップ（multidrop）を介して、ドライビング・エージェント（driving agent）から一つ以上の受信エージェントに情報を送信するための方法が提供される。共通バス・クロックは、ドライビング・エージェントおよび受信エージェントの両方に供給される。バス・トランザクションは、前記ドライビング・エージェントから前記一つ以上の受信エージェントに発行され：１）前記ドライビング・エージェントは、前記バス・クロックの周波数の倍数である速度で、アドレス・バスへ、要求のための複数の情報エレメントを送り；および２）前記ドライビング・エージェントは、いつ前記受信エージェントが、前記アドレス・バスに送られた前記情報エレメントをサンプリングするべきかを識別するための第一のストロボ信号を起動させることを含む。前記方法は、前記ドライビング・エージェントから前記一つ以上の受信エージェントへデータを転送することも含み：１）前記ドライビング・エージェントは、前記バス・クロックの周波数の異なる倍数である速度で、データ・バスへ複数の情報エレメントを送り；および２）前記ドライビング・エージェントは、いつ、前記一つ以上の受信エージェントが、前記データ・バスへ送られた前記情報エレメントをサンプリングすべきかを識別するための第二のストロボを起動させることを含む。
【０００４】
本発明の前述の内容、およびより良い理解は、添付の図面とともに読むと、例示的実施例の詳細な説明および特許請求の範囲から明らかになり、そのすべては本発明の開示の一部を形成する。前述の、および以下に書かれた、ならびに説明された開示内容は、本発明の例示的実施例を開示することに焦点が絞られている一方で、それは説明および例示の目的のみであり、それに制約されないことが、明確に理解されるべきである。本発明の精神および範囲は、付属の特許請求の範囲の条件によってのみ制約される。
【０００５】
（発明を実施するための最良の形態）
Ｉ．イントロダクション
実施例では、プロセッサ・バスは、複数のバス・エージェントに接続されている。このバスは、ある種類の信号については共通クロック信号モードを用いて送信され、別の種類の信号についてはマルチ・ポンプ信号モードを用いて送信されることから、いわゆるスケーラブル（scalable）である。
【０００６】
共通クロック信号モードでは、コントロール信号をはじめとする各種信号は、共通バス・クロックの周波数と実質的に同じ速度で前記バスへと送られる。このモードでは、前記バス・クロックのエッジは、前記バスへ送られる信号をサンプリングするための点を特定する。
【０００７】
マルチ・ポンプ信号モードで動作させると、バス・スループットは向上する。このモードでは、複数の情報エレメントは、バス・クロックの周波数の倍数の速度で、ドライビング・エージェントによって前記バスへと送られる。前記ドライビング・エージェントはまた、マルチ・ポンプ信号モードで送られる前記情報エレメントのためのサンプリング点を特定するためのストローブ信号を一時的に起動させる。リクエストのための情報エレメントは、例えば、二つの情報エレメントが、１バス・クロック・サイクル中に送られるダブル・ポンプ信号モードを用いて送ることができる。データ・ライン転送のためのデータエレメントは、例えば、４つのデータエレメントが、１バス・クロック・サイクル中に送られる、クアド・ポンプ信号モードを用いて送ることができる。複数のストローブ信号は、前記ストローブ信号の周波数を減らすために、オフセットまたは互い違いの配列で、一時的に起動される。サンプリングの対称性は、サンプリング点を特定するためのストローブ信号の一種類のみのエッジ（例えば、立ち上がりエッジまたは立ち下がりエッジのいずれか）を用いることによって、改善することかできる。さらに、トランザクション・フェーズの間の最小待ち時間は、マルチ・ポンプ信号モードで動作するバスの最大スピードに、より近く合うように変更することかできる。
【０００８】
ＩＩ．アーキテクチャ
図１は、本発明の例示的実施例のコンピュータを示すブロック図である。このコンピュータは、プロセッサ１１０、プロセッサ１１２およびプロセッサ１１４を含む一つ以上のプロセッサを含む。各プロセッサは、内部キャッシュ（図示されていない）も含む。
【０００９】
各プロセッサは、共通プロセッサ・バス１１７（ホスト・バスまたはフロント・サイド・バスとして知られる）に接続もされる。図２は、例示的実施例に従ったプロセッサ・バス１1７を示す図である。図２に記載のとおり、前記プロセッサ・バス１１７は、コントロール・バス２０２、アドレス・バス２０４、およびデータ・バス２０６を含む。実施例では、データ・バス２０６は、６４本のデータ・ラインＤ［６３：０］を含む多くの信号を含む。前記アドレス・バス２０４も、３６本のアドレス・ラインＡ［３５：０］を含む多くの信号を含む。前記プロセッサ・バス１１７は、バス・クロック（ＢＣＬＫ）を含む。前記バス・クロックは共通であり、プロセッサ・バス１１７のコントロール・バス２０２を介して、すべてのエージェントに供給される。前記コントロール・バス２０２も、多くの信号を含む。前記アドレス・バス２０４、コントロール・バス２０２およびデータ・バス２０６は、それぞれ、好ましくは、マルチドロップ双方向バスである。この実施例では、“マルチドロップ”という用語を、二つのバス・エージェントの間のみで接続されるポイント・ツウ・ポイント・バスとは対照的に、前記バスが三つ以上のバス・エージェントに接続されることを意味する。
【００１０】
いくつかの他のコンポーネントを前記プロセッサ・バス１１７に接続するために、システム・インターフェース１１６（またはチップセット）も、プロセッサ・バス１１７に接続される。システム・インターフェース１１６は、メイン・メモリ・サブシステム１２２をプロセッサ・バス１１７に接続するためのメモリ・コントローラ１１８を含む。メイン・メモリ・サブシステム１２２は通常、一つ以上のメモリ・カードおよびコントロール回路を含む。システム・インターフェース１１６は、一つ以上のＩ／ＯブリッジまたはＩ／Ｏ装置を、プロセッサ・バス１１７に接続するための、入力／出力（Ｉ／Ｏ）コントローラ１２０を含む。図１に記載された、この例示的コンピュータにおいて、Ｉ／Ｏコントローラ１２０は、Ｉ／Ｏブリッジ１２４をプロセッサ・バス１１７に接続する。Ｉ／Ｏブリッジ１２４はシステム・インターフェース１１６とＩ／Ｏバス１３０との間を接続するためのバス・ブリッジとして動作する。一つ以上のＩ／ＯコントローラおよびＩ／Ｏ装置は、例えばＩ／Ｏコントローラ１３２やＩ／Ｏコントローラ１３４等、Ｉ／Ｏバス１３０に接続されうる。Ｉ／Ｏバス１３０は、ペリフェラル・コンポーネント・インターコネクト（Peripheral Component Interconnect）（ＰＣＩ）または他の種類のＩ／Ｏバスでもよい。
【００１１】
ＩＩＩ．エージェント
バス・エージェントは、データおよびシステム情報を転送するために、プロセッサ・バス１１７にトランザクションを発行する。バス・エージェントは、プロセッサ・バス１１７に接続される任意の装置である。バス・エージェントには、いくつかの類別がありうる：
１）中央エージェント：リセット、ハードウェア・コンフィギュレーションならびに初期化、特殊なトランザクション、および集中ハードウェア・エラー検出およびハンドリングを取り扱う。プロセッサは、その一例である。
２）Ｉ／Ｏエージェント：Ｉ／Ｏポート・アドレスを用いて、Ｉ／Ｏ装置に接続される。Ｉ／Ｏ装置のために使用される他のバスへのバス・ブリッジになることができる。例えばＰＣＩブリッジ等である。
３）メモリ・エージェント：メイン・メモリへのアクセスを供給する。例えばメモリ・コントローラ１１８などである。
特定のバス・エージェントは、トランザクションにおいて、複数の役割を持つ場合がある：
１）リクエスト・エージェント：トランザクションを発行するバス・エージェントである。
２）アドレス・エージェント：トランザクションによってアドレス指定されるエージェントである。ターゲット・エージェントとも呼ばれる。メモリまたはＩ／Ｏトランザクションは、特定のメモリまたはＩ／Ｏのアドレスを認識するメモリまたはＩ／Ｏエージェントに対してアドレス指定される。応答が延期されたトランザクション（deferred reply transaction）は、元のトランザクションを発行したエージェントに対してアドレス指定される。
３）スヌープ・エージェント：キャッシュ・コヒーレンシーを保持するために、バス・トランザクションを観察する（“スヌープする（snoop）”）キャッシング・バス・エージェントである。
４）応答エージェント：トランザクションに応答を与えるエージェントである（通常はアドレス・エージェントである）。実施例では、応答エージェントは、応答ストローブＲＳ［２：０］を用いてコントロール・バスへ応答を送る。
【００１２】
ＩＶ．オペレーション、トランザクション、およびフェーズ
実施例では、プロセッサ・バス１１７上のバスの動作は、オペレーション、トランザクション、およびフェーズへ、階層的に編成されている。
【００１３】
オペレーションは、ソフトウェアにとってアトミックのように見える（分割不可又は同時に起こるように見える）バス上の手順である。たとえバス１１７上ではアトミックのように見えないとしても、である。オペレーションは単一のバス・トランザクションの場合もありうるが、複数のバス・トランザクション又は複数のデータ転送を伴う単一のトランザクションを含む場合もある。リード・オペレーション（read operation）、ライト・オペレーション（write operation）、ロックされたリード・モディファイ・ライト・オペレーション（locked read-modify-write operation）およびデファード・オペレーションなどはそのような例である。
【００１４】
トランザクションは、単一のバスのリクエストに関連するバス・アクティビティのセットである。トランザクションはバス仲裁、およびＡＤＳ＃信号（アドレスが送られていることを示す）ならびにトランザクション・アドレスのアサート（assertion）で始まる。トランザクションは例えば、データを転送し、変更されたキャッシュ状態について問い合わせをし、または前記システムに情報を供給するために実行される。
【００１５】
フェーズは、特定の種類の情報を通信するために、特定の信号セットを使用する。フェーズには仲裁、要求、スヌープ、応答およびデータを含むことができる。すべてのトランザクションがすべてのフェーズを含むわけではなく、また、いくつかのフェーズは重複することもある。仲裁フェーズは、誰が次のバス所有者（bus owner）になるかをバス・エージェントが決めるフェーズである（エージェントは、トランザクションを発行する前に、バスを所有しなければならない）。リクエスト・フェーズは、トランザクションがバスに発行されるフェーズである。スヌープ・フェーズは、キャッシュ・コヒーレンシーが強化されるフェーズである。応答フェーズは、アドレスまたはターゲット・エージェントが、前記バスにトランザクション応答を送るフェーズである。データ・フェーズにおいては、要求または応答またはスヌープエージェントが、トランザクション・データを送り、または受ける。プロセッサ・バス１１７を介して送信される４つのコントロール信号は、バス・クロックＢＣＬＫ［１：０］、初期化信号ＩＮＩＴ＃およびリセット信号ＲＥＳＥＴ＃を含む。バス・クロックＢＣＬＫ［１：０］は、差動バス・クロック（differential bus clock）であり、クロック・チップまたはクロック回路によって生成されてもよい。二つのバス・クロック信号、ＢＣＬＫ［１：０］は、論理的には同一であり、物理的には、タイミング・スキュー（timing skew）を減らすために、二つの個別の信号として送られる。実施例では、すべてのエージェントは、それらの共通クロック出力を送り、およびバス・クロックの立ち上がりエッジに共通クロック入力をラッチする（latch）。各プロセッサは、一つの数または複数の数で、バス・クロック周波数を乗じ、および／または除することによって、前記バス・クロックＢＣＬＫ信号からその内部クロックを導く。
【００１６】
実施例では、ＲＥＳＥＴ＃入力信号は、すべてのバス・エージェントを既知の状態にリセットし、それらの内部キャッシュを無効にする。変更された、すなわちダーティな（dirty）キャッシュ・ラインの内容は失われる。ＲＥＳＥＴ＃がディアサート（deasserted）された後、各プロセッサは、コンフィギュレーションの際に定義されたパワー・オン・リセット・ベクトル（power on reset vector）において実行を開始する。
【００１７】
実施例では、ＩＮＩＴ＃入力信号は、内部キャッシュ又は浮動小数点レジスタに影響を与えることなくすべてのプロセッサをリセットする。各プロセッサは、コンフィギュレーションの際に定義されたパワー・オン・リセット・ベクトルにおいて実行を開始する。
【００１８】
図３は、実施例に関して、二つの例示的トランザクションに関する例示的バス・トランザクション・フェーズの関係を示すタイミング図である。最上部には、バス・クロック（ＢＣＬＫ［１：０］）のサイクル（１，２，３，４，．．．１７）を示した。数字１を有する四角形は、トランザクション１のための様々なフェーズを示す一方で、数字２を有する四角形は、トランザクション２のためのフェーズを示す。図３からわかるとおり、トランザクションは、パイプライン方式で行われる。例えば、トランザクション１に関して、バス・クロック・サイクル１および２において仲裁が生じ、サイクル３および４において要求が生じ、サイクル６および７においてスヌープが生じ、およびサイクル１３および１４において応答ならびにデータ転送が生じる。このように、応答およびデータ転送は、本来のリクエスト・フェーズから、いくつものバス・クロック・サイクルののちに生じてもよいことがわかる。また、異なるトランザクションのフェーズ間で重複が存在してもよい。例えば、トランザクション２の仲裁フェーズは、トランザクション１のリクエスト（要求）フェーズとほぼ同時に生じる。
【００１９】
Ｖ．信号モード
実施例は、プロセッサ・バス１１７はスケーラブルであって、二つの信号モードをサポートする。第一の信号モードは共通クロック信号モードであり、これは、すべての信号起動およびサンプリングまたはラッチ点が、すべてのエージェントの間に連続的に供給される共通バス・クロック（ＢＣＬＫ＃）に関して生じる。バス・クロックは通常、マザーボードに設けられたクロック・チップまたはクロック回路によって生成され、コンピュータにおけるすべてのプロセッサまたはエージェントに共通とされる。共通バス・クロックに関する信号クロック動作（signal clocking）は、共通クロック（１Ｘ）信号モードと呼ばれる。実施例では、コントロール・バスを介して供給される多くのコントロール信号は、共通クロック（１Ｘ）信号モードを用いて送信される。
【００２０】
第二の信号モードはマルチ・ポンプ信号モードであり、これは、共通クロック信号モードによってサポートされる転送速度の倍数である情報転送速度を可能にする。すなわち、実施例では、マルチ・ポンプ信号モードは、共通バス・クロック（すなわちシステム・バス・クロック）の周波数の整数倍の速度で、エージェント間のプロセッサ・バス１１７を介した情報転送をサポートする。マルチ・ポンプ信号モードには、例えば、共通クロック周波数の速度の２倍（２Ｘ）で情報（例えば、データ、アドレス、または他の情報）を転送するダブル・ポンプ信号モードを用意してもよいし、バス・クロック周波数の４倍（４Ｘ）での情報転送を行うクアド・ポンプ信号モードを用意することもできる。共通バス・クロックよりも高い速度又は周波数での情報の転送を容易にするために、ドライビング・エージェントは、マルチ・ポンプ情報を取り込む、すなわちラッチするための基準として、レシーバによって使用されるタイミング“ストローブ”として知られる同伴信号（companion signal）の発行または供給も行う。
【００２１】
アサート（asserted）という語は、信号をアクティブ・レベル（active level）にする（すなわち、アクティブ・ロー信号に関してはゼロになる）ことを意味し、ディアサート（deasserted）という語は、信号がインアクティブ（inactive）・レベルにすることを意味する。後述のいくつかのタイミング図で使用する正方形、円形または三角形の記号は、特定の信号が送られ又はサンプリングされる時点を示すためのものである。正方形の記号は、前記クロック・サイクルで信号が送られる（アサートされる、開始される）ことを示す。円形記号は、信号が前記クロック・サイクルでサンプリングされる（観察される、ラッチされる）ことを示す。円形記号は通常、共通クロック（１Ｘ）信号モードにおいて、バス・クロック（ＢＣＬＫ）の立ち上がり（または立ち下がり）エッジに基づいて、サンプリング点を示すのに用いる。三角形の記号は、信号が、“ストローブ”と称される、同伴信号の立ち上がりまたは立ち下がりエッジに基づいて、サンプリングされ又は取り込まれることを示す。前記ストローブは、好ましくは、通常マルチ・ポンプ・モードで、プロセッサ・バスを介した情報（例えば、データ、アドレス、他の情報）の送信中にのみ、オンにされ、または起動されてもよい。
【００２２】
Ａ．共通クロック信号モード
共通クロック（１Ｘ）信号モードの実施例では、プロセッサ・バス１１７上のすべてのエージェントは、アクティブな出力を送出し、必要とする入力をサンプリングすることが要求される。一つの実施例では、すべての入力は、有効なサンプリング・インターバル中のバス・クロックの立ち上がりエッジにおいてサンプリングされるとともに、その効果もしくは結果は、次のバス・クロックの立ち上がりエッジ以降に前記バス１１７へ送出される。この実施例のアプローチによって、コンポーネント間通信（信号送信ならびに伝播）のための１つのフル・バス・クロック・サイクル、および受信側における少なくとも１つのフル・バス・クロック・サイクルにおいて、信号を解釈し、演算し、そして応答を出力することが可能となる。結果として、エージェントが１又は２以上のバス・クロック・サイクルでデータをプロセッサ・バスに送出した後は、他のエージェントがプロセッサ・バス１１７を駆動することができるようになる前に、１バス・クロック・サイクル分のポーズ（pause）（例えば、デッド・サイクル（dead cycle）またはインアクティブ・サイクル）が存在する。
【００２３】
図４は、実施例における、共通クロック（１Ｘ）信号モードの例示的オペレーションを示す例示的タイミング図である。信号は、それらがプロセッサ・バス１１７に現れるものとして示されている。また、バス・クロック（ＢＣＬＫ）の４サイクル分が示されている。Ａ＃およびＢ＃を含む、二つの追加的例示的信号も示されているが、これらはあらゆる種類の信号であってよい。例えば、Ａ＃は、第一のエージェントからの第一のコントロール信号でもよいし、Ｂ＃は、第二のエージェントからの第二の信号でもよい。第一および第二のコントロール信号は、例えば、ハンドシェーク（handshake）またはバス・プロトコルの一部として供給されてもよい。
【００２４】
図４に示したように、信号Ａ＃は、クロック・サイクル１の立ち上がりエッジにおいて送出され（またはアサートされ）（Ａ＃における正方形で示した）、バス・クロック・サイクル２の開始における立ち上がりエッジにおいて、受信側でラッチされる（Ａ＃に関する円で示した）。このように、クロック・サイクル１は、信号伝播のために用意されている。Ａ＃はサイクル１の開始においてアサートされるが、これは、サイクル２の開始まではバスにおいては観測されない。ポーズまたはインアクティブ・クロック・サイクルが存在する（論理遅延および受信側が信号を解釈するためのバス・クロック・サイクル２の間に）。レシーバは、バス・クロック・サイクル３の開始時点においてＢ＃信号を送出し又はアサートし（Ｂ＃に関する正方形によって示した）、これはサイクル４の開始時点において、他のエージェントによって観測され、取り込まれる（Ｂ＃に円で示した）。
【００２５】
実施例では、プロセッサは、６４バイト・キャッシュ・ラインを含む（いくつかのＰｅｎｔｉｕｍプロセッサにおいて使用される３２バイト・キャッシュ・ラインの代わりとし）。そのため、データが共通クロック（１Ｘ）信号モードおよび６４本のデータ・バス・ラインを用いて転送される場合、６４バイト（１キャッシュ・ライン）のデータが、８バス・クロック・サイクルで送られ、転送される。しかしながら、多くのアプリケーションにおいては、より速いデータ転送速度又はより大きな帯域幅が望まれるだろう。
【００２６】
Ｂ．マルチ・ポンプ信号モード
多くの例においてプロセッサ・バス１１７の長さや電気的な制約（バスへの信号伝播の待ち時間を含む）が、プロセッサ・バスの周波数を上げることを妨げうる。そのため実施例では、プロセッサ・バスのクロック周波数を上げるよりもむしろ、マルチ・ポンプ信号プロトコルによって、バス・クロック（ＢＣＬＫ）の周波数の倍数で適切なバス信号グループ（例えば、アドレス・バスまたはデータ・バス）を動作させて、（共通クロック信号モードよりも）データ転送速度を上げる。
【００２７】
１．クアド・ポンプ信号モードの例
クアド・ポンプ信号モードでは、適切なバス信号グループが、バス・クロック（ＢＣＬＫ）の４倍（４Ｘ）の周波数で動作する。すなわち、クアド・ポンプ信号モードでは、１バス・クロック・サイクル（情報の一つのエレメントを共通クロックまたは１Ｘ信号モードで送るのにかかる時間）で、情報の４つのエレメントがプロセッサ・バス１１７に送られる。
【００２８】
図５は、一実施例の例示的クアド・ポンプ信号モードの動作を示すタイミング図である。クアド・ポンプ信号モードは、あらゆる種類の信号に使用することができるが、実施例ではデータを送信するのに使用する。２つのバス・クロック・サイクルと三番目のバス・クロック・サイクルの一部が、図５に示されている。プロセッサ・バス１１７へのフライト時間（flight time）（または信号伝播時間）の最悪の場合というのは、第一の情報エレメントが、受信側（受信エージェント）でラッチされる前に、ドライバ（すなわち、プロセッサ・バスへ情報を送るエージェント）において第二の情報エレメントがプロセッサ・バス１１７に送出される場合である。
【００２９】
実施例では、ドライバ（すなわち、ドライビング・エージェント）は、立ち上がりエッジと、バス・クロック（ＢＣＬＫ）サイクルの２５％，５０％，７５％の点で、新しい情報エレメントを送信する。
【００３０】
受信側はまた、レシーバがいつデータをサンプリングし又は取り込むべきかを示すデータ・ストローブ信号として知られる同伴タイミング信号を送信する。ストローブ信号は、好ましくは、情報がマルチ・ポンプ信号モードを用いて送信される時にのみ送信され、または起動される（駆動される）。
【００３１】
データおよびストローブ信号は、同じドライバまたはソースによって生成されるので、同じパス（path）を有する。その結果、ストローブ信号およびデータ信号は、同じパスを有し、それゆえにおよそ同じ遅延を有する。そのため、ストローブおよびデータの両方を送信するドライバまたはソースによって得られる利点は、データ信号およびストローブ信号が、バス１１７における各エージェントに、同相で（すなわち同期して）到着することである。そこで、データおよびタイミング・ストローブ信号の両方を送信するドライバのこの技術は、ソース同期転送（source synchronous transfer）と呼ばれる。クアド・ポンプ信号モードでは、４つのデータエレメントの各々に対して一つ、各バス・クロック・サイクルにおいて、各々が情報サンプリングまたは取り込みポイントを特定する４つのデータ・ストローブ（例えば、４つのタイミング・ストローブ・エッジ）がある。残念ながら、ストローブ信号を比較的高い周波数で生成することについては問題が生じうる。高いクロック・スピードでは、立ち上がりエッジ速度と立ち下がりエッジ速度との間の差は、顕著になる。さらに、５０％のデューティー・サイクルを有するクロック信号またはストローブ信号を供給することは難しい。その結果、いくつかの高いクロック周波数において、ストローブ信号の立ち上がりエッジと立ち下がりエッジは非対称となり、またはある程度の時間的な不確定性が生じるので、サンプリング点を特定するのに使用すべきではない。むしろ、より対称的な、あるいは均一なストローブ・タイミングまたはサンプリング・インターバルを得るために、ストローブの二つのエッジのうち一つのみを使用する（すなわち、クアド・ポンプ・データをサンプリングし又は取り込むためのストローブ信号の立ち上がりエッジのみ、または立ち下がりエッジのみを使用する）方が有利である。
【００３２】
ストローブのエッジの一方のみを使用する場合は、通常、バス・クロック周波数の倍数のクロック周波数を必要とする。クアド・ポンプ・データ（１バス・クロック・サイクルにつき、４のデータエレメント）では、ストローブ信号周波数は、一つのエッジのみがタイミングに使用される場合、バス・クロック周波数の４倍である。
【００３３】
残念ながら、プロセッサ・クロック周波数が（例えば）１００ＭＨｚである場合、これは、（この例においては）４００ＭＨｚであるストローブ信号周波数を必要とする。しかしながら、バス・クロック周波数の４倍の周波数のストローブ信号は、送信されたデータもしくは情報とは異なる遅延に遭遇する場合があり、これはレシーバにおけるデータおよびストローブの整列に影響を与えうる。このような送信されたストローブ信号と送信されたデータとの間の整列不良（misalignment）は、レシーバに不良な又は不正確なデータを取り込ませることになりうる。さらに、このような高い周波数では（例えば、４００ＭＨｚ）、信号減衰がより顕著になる。
【００３４】
そのため、実施例では、バス・クロック周波数の４倍（４Ｘ）のストローブ周波数を使用せずに、１バス・クロック・サイクル当たり、４つのストローブを供給するよう、複数のデータ・ストローブ信号を使用する。実施例では、二つのデータ・ストローブ信号（ＤＳＴＢｐ＃およびＤＳＴＢｎ＃）を、それぞれバス・クロックの２倍の周波数で供給する。すなわち、バス・クロック周波数が１００ＭＨｚである場合、二つのデータ・ストローブ信号は、それぞれ、ドライバ（すなわち、ドライビング・エージェント）によって起動され、または生成される際に２００ＭＨｚの周波数を有する。別の例として、４つのデータ・ストローブ信号を使用し（それぞれ起動される時のバス・クロックと同じ周波数）、それぞれ１バス・クロック・サイクル当たり１つのストローブまたは立ち下がりエッジを供給することもできる。
【００３５】
再度、図５に記載のタイミング図を参照する。ドライバは、新しい情報またはデータエレメントを、立ち上がりエッジと、バス・クロック・サイクル１の２５％、５０％、７５％の点において送信する。この例の４つのデータエレメントを、Ｄ１、Ｄ２、Ｄ３、Ｄ４とラベル付けする。この実施例では、ＤＳＴＢｐ＃及びＤＳＴＢｎ＃を含む二つのデータ・ストローブ信号をも使用する。実施例では、二つのデータ・ストローブ信号は、互いに位相をずらして（すなわち互い違いあるいはオフセット配列で）生成される。これによって、ストローブ信号の一つは、奇数データエレメント（Ｄ１，Ｄ３，Ｄ５，・・・）のためのサンプリング点を特定し、他のストローブ信号は偶数のデータエレメント（Ｄ２，Ｄ４，Ｄ６，・・・）を特定するのに使用される。
【００３６】
図５には二つのストローブ信号だけが示されているが、ソース同期転送のデータのためのサンプリング点を識別するために、あらゆる数のストローブ信号を使用することができる。上述のように、ストローブ信号の二つのエッジのうちの一方だけをサンプリング点（またはストローブ）の特定に用いる多重ストローブ信号を用いることは、ストローブ信号の周波数が下がることになるので有利であろう。例えば、（クアド・ポンプの代わりに）６Ｘポンプ・プロトコルを使用する場合は三つのストローブ信号を使用することになり、その場合は、ストローブ１がデータエレメントＤ１およびＤ４のために、ストローブ２がデータエレメントＤ２およびＤ５のために、ストローブ３がデータエレメントＤ３およびＤ６のために使用されるように、３つすべてのストローブ信号を同じようにオフセットしまたは互い違いにする。
【００３７】
実施例では、ストローブ信号の二つのエッジのうちの一つだけを、データ・サンプリング点を特定し又は同期させるのに使用する。この特定の実施例では、二つのデータ・ストローブ信号の立ち下がりエッジのみを、情報またはデータをサンプリングするための点を特定するのに使用する。データ・ストローブ（または、データ・ストローブ信号の立ち下がりエッジ）を、４つの情報またはデータエレメントの各々に中心を合わせる。すなわち、データ・ストローブ信号の４つの立ち下がりエッジ（またはストローブ）は、バス・クロック（ＢＣＬＫ）サイクルの１２．５％、３７．５％、６２．５％および８７．５％で発生する。ゆえに、二つのストローブ信号は、等しい間隔のストローブまたは立ち下がりエッジを与える。
【００３８】
図５に示したように、ＤＲＤＹ＃は、バス・クロック・サイクル１の開始において、バス１１７に送られる（ＤＲＤＹ＃に関する正方形によって示されている）。ＤＲＤＹ＃は、有効なデータがプロセッサ・バス１１７上にあり、かつ、これをサンプリングし又は取り込まなければならないことを示す。第一のデータエレメント（Ｄ１）は、（Ｄ＃（＠ドライバ）の最初の四角形で示したように）バス・クロック・サイクル１の立ち上がりエッジにおいて、ドライバによってプロセッサ・バス１１７へ送出される。そして、第一のデータ・ストローブ信号（ＤＳＴＢｐ＃）は、ＤＳＴＢｐ＃（＠ドライバ）の最初の正方形で示したように、第一のバス・クロック・サイクルの１２．５％の点においてドライバによって起動される。このように第一のデータエレメント（Ｄ１）に関するストローブ（または立ち下がりエッジ）は、第一のデータエレメントに中心を合わせられる。ストローブ信号は、一旦起動され又はオンにされると、通常データがバスへと送られるまで起動された状態が続く。
【００３９】
また、第二のデータエレメントは、Ｄ＃（＠ドライバ）に関する第二の四角形で示したように、バス・クロック・サイクル１の２５％の点においてドライバによって送出される。第二のデータ・ストローブ信号（ＤＳＴＢｎ＃）は、バス・クロック・サイクル１の３７．５％の点において起動され、第二のデータエレメント（Ｄ２）に中心が合わされる立ち下がりエッジ（またはストローブ）が与えられる。
【００４０】
同様に、第三および第四のデータエレメント（それぞれＤ３、Ｄ４）は、バス・クロック・サイクル１の５０％の点および７５％の点で送出される。対応するデータ・ストローブ（データ・ストローブ信号の立ち下がりエッジ）は、６２．５％の点（ＤＳＴＢｐ＃ストローブ信号によって）および８７．５％の点（ＤＳＴＢｎ＃ストローブ信号によって）においてドライバによって送出されあるいは供給される。データ・ストローブ信号は、バス・クロックの周波数の２倍である周波数で供給されるので、各データ・ストローブ信号は、２分の１バス・クロック・サイクルごとに、ストローブまたは立ち下がりエッジを供給する。このようにＤＳＴＢｐ＃ストローブ信号は、バス・クロック・サイクルの１２．５％および６２．５％の点で立ち下がりエッジまたはストローブを供給する一方で、ＤＳＴＢｐ＃ストローブ信号は、バス・クロック・サイクルの３７．５％および８７．５％の点において、立ち下がりエッジまたはストローブを供給する。このように、二つのデータ・ストローブ信号（ＤＳＴＢｐ＃およびＤＳＴＢｎ＃）は、互い違いであり、または互いに同期しないことがわかる。これによって、交互のストローブ信号は、バス・クロック・サイクルの４分の１ごとに（両方のデータ・ストローブ信号の間に）、立ち下がりエッジ（またはストローブ）を供給することができる。これは、１バス・クロック・サイクルにつき、４つのデータエレメントのためのサンプリング点または捕獲点を識別するために、１バス・クロック・サイクルあたり４つのストローブまたは立ち下がりエッジを供給する一方で、各ストローブの周波数を下げる。さらに、同じエッジ（この場合は、立ち下がりエッジ）が、各データ・ストローブ信号においてストローブとして使用されるので、タイミングおよび回路は、単純化される。
【００４１】
実施例では、確実に正しい動作を行うために、ドライビング・エージェントからレシーバへの情報転送の待ち時間を、１バス・クロックから入力ラッチ・セットアップ時間（input latch setup time）を引いた時間以下とすべきである。これにより、受信側が次のフェーズのあいだバス所有者（bus owner）になる場合に、次のデータ・フェーズのためのデータ・ラインにおけるコンテンション（contention）が回避される。
【００４２】
図５は、レシーバにおけるデータの取り込みも示している。ドライバによって信号（データおよびデータ・ストローブ）が送出された後、信号は、プロセッサ・バス１１７に沿って伝播し、ターゲットまたはレシーバに到着する。第一のデータエレメントは、Ｄ＃（＠レシーバ）信号によって示した通り、受信側で受信される。第一のデータエレメント（Ｄ１）は、第一のストローブ、すなわちＤＳＴＢｐ＃（＠レシーバ）の第一の立ち下がりエッジでサンプリングされ又は取り込まれる。ＤＳＴＢｐ＃（＠レシーバ）に関する第一の三角形は、第一のデータエレメントをサンプリングし又は取り込むためのストローブまたは点を特定し、ＤＳＴＢｐ＃（＠レシーバ）に関する第二の三角形は、レシーバにおいて第三のデータエレメントをサンプリングするための点またはストローブを特定する。同様に、第二のデータ・ストローブ信号（ＤＳＴＢｎ＃（＠レシーバ））に関する二つの三角形は、レシーバが、第二のおよび第四のデータエレメント（Ｄ２，Ｄ４）をサンプリングし又は取り込むための点を特定する。
【００４３】
図５に示したように、第一のデータエレメントＤ１は、クロック２の開始における立ち上がりエッジの後、およびクロック・サイクル２（次のクロック・サイクル）の１２．５％の点の直後、受信側によってサンプリングされ又は取り込まれ（ストローブされ）てもよい。（ここで使用される通り、“取り込み（capturing）”、“サンプリング（sampling）”および“ラッチ（latching）”という用語は、略同じものを意味するように、ゆるやかに使用されている）。しかしながら、すべてのデータエレメントのデータが、バス・クロック・サイクル３の立ち上がりエッジまで、受信側にラッチされるのではない。すなわち、データエレメントＤ１は、バス・クロック・サイクル２の開始近くで受信され又は取り込まれるが、すべてのデータが、バス・クロック・サイクル３の開始まで、受信側によって利用可能なわけではない。受信エージェントは、好ましくは、８つのデータエレメントを記憶できるＦＩＦＯ（ファースト・イン・ファースト・アウト）バッファを含む。８データエレメントＦＩＦＯは、一つのデータ転送の４つのエレメントおよび次の転送のための次の４つのエレメントを記憶できる大きさである。これによって、前の４つのデータエレメントは、ＦＩＦＯからレシーバへ押し出され又はラッチされている間に、４つの新しいデータエレメントが受信され又は取り込まれる。最終的結果（net effect）は、共通クロック信号モードの帯域幅の４倍であり、これにレシーバまたは装置の内側にラッチされる第一の信号グループのための待ち時間が加わる。
【００４４】
さらに、実施例では、二つのデータ・ストローブ信号（ＤＳＴＢｐ＃およびＤＳＴＢｎ＃）の各々の、複数のコピーを運ぶために、複数のラインが使用される。実施例では、以下の表に示すように、４つのＤＳＴＢｎ＃信号および４つのＤＳＴＢｐ＃信号がある。
【００４５】
【表１】
データ・ストロボ範囲の例示的実施例
2003518693.tif 000001
【００４６】
４つのＤＳＴＢｐ＃信号は、４つのＤＳＴＢｎ＃信号と同様に、論理的には等しいが、各データ・ストローブ信号は、データとデータ・ストローブ信号との間のタイミング・スキューまたは整列不良を軽減するため、リクエスト信号のサブセット（すなわち、データ・ラインのサブセット）とともに物理的に送られる。
【００４７】
図８は、実施例における、エージェント間で情報を転送するための装置のブロック図である。第一のバス・エージェント８０２は、第二のバス・エージェント８３２に接続されている。第一のバス・エージェント８０２は、第一の双方向データ・ストローブ信号ライン８２０上で第一のデータ・ストローブ信号（例えば、ＤＳＴＢｐ＃）を生成し並びに受信するためのデータ・ストローブ生成装置１／レシーバ１を含んでおり、そして、第二の双方向データ・ストローブ信号ライン８２２上で第二のデータ・ストローブ信号（例えば、ＤＳＴＢｎ＃）を生成し並びに受信するためのデータ・ストローブ生成装置２／レシーバ２を含んでいる。バス・エージェント８０２は、データ・バスまたはデータ信号ライン８２６へデータ信号を送信し又は送出するための送信回路と、データ信号ライン８２６を介して受信されたデータ信号を受信するための受信回路をも含んでいる。第二のバス・エージェント８３２も同様に、それぞれデータ・ストローブ信号ライン８２０および８２２へ二つのデータ・ストローブ信号を生成するためのデータ・ストローブ生成装置１およびデータ・ストローブ生成装置２を含んでいる。共通バス（またはシステムバス）クロック生成装置８１０は、バス・エージェント８０２および８３２に、共通バス・クロックまたはシステム・バス・クロックを供給する。
【００４８】
２．アドレス・バスのスピードをデータ・バスに合わせる
実施例では、キャッシュ・ラインのサイズは、６４バイトに増やした（いくつかのＰｅｎｔｉｕｍプロセッサにおけるキャッシュ・ラインのサイズは３２バイトである）。このように、クアド・ポンプ信号プロトコルおよび６４データ・ラインのデータ・バス幅を用いて、キャッシュ・ライン（または６４バイト）は、２バス・クロック・サイクルで送信され、または転送される：
６４バイト＝（２サイクル）×（４ポンプ／サイクル）（８バイト毎ポンプ）。
【００４９】
しかしながら、いくつかのＰｅｎｔｉｕｍプロセッサでは、リクエスト（アドレスを含む）は、３バス・クロック・サイクルで転送される。いくつかのＰｅｎｔｉｕｍプロセッサに関するリクエスト・フェーズのための３バス・クロック・サイクルは、以下のものを含んでいた：
サイクル１−サブ・フェーズａ−アドレス（アドレス・バス上に供給される）、および１種類のリクエスト（例えば、リード（read）、ライト（write））。
サイクル２−サブ・フェーズｂ−バイト・イネーブル（byte enables）、長さ、等を含む、リクエストに関する補助的詳細（アドレス・ラインまたはアドレス・バス上に供給される）。
サイクル３−他のエージェントにバスを送らせるために、バス上の信号が、利得を下げる（quiet down）ようにする、デッド・サイクルまたはターンアラウンド・サイクル。
【００５０】
このようにして、実施例では、キャッシュ・ラインは、２バス・クロック・サイクルで、データ・バスを介して転送される。しかしながら、いくつかのＰｅｎｔｉｕｍプロセッサでは、アドレスおよびリクエストのタイミングは、一つのリクエストを転送するのに３バス・クロック・サイクルを必要とする。このようにいくつかのＰｅｎｔｉｕｍプロセッサでは、アドレス・バスのタイミングもしくは帯域幅は、上述の実施例（図５参照）で説明したように、向上したクアド・ポンプ・データ・バスのスピードとは調和しない。より不足しがちで価値のあるリソースの一つは、データ・バス幅およびデータ・バス帯域幅である。そこで、実施例ではデータ・バス帯域幅のために、アドレス・バス帯域幅ではなくプロセッサ・バスを絞り、あるいは制約することが好ましい。すなわち、アドレス・バスが、プロセッサ・バスを遅くしないように又は圧迫しないようにするために、データ・バスの帯域幅またはスピード（この例ではデータ・バス上の一つのキャッシュ・ラインの送信に関して）と少なくとも調和するように、アドレス・バス上のアドレスおよびリクエストのタイミングを調整することが望ましい。
【００５１】
したがって、実施例では、アドレス・バスを介して供給されるリクエスト・フェーズのタイミングおよびスピードは、データ・バスの全体のスピードに合うように調節した。デッド・サイクルまたはターンアラウンド・サイクルは、維持することが望ましい。すなわち、例示的実施例では、アドレス・バスをダブル・ポンプして、１バス・クロック・サイクルで２つの情報エレメント（要求のサブ・フェーズａおよびサブ・フェーズｂ）を供給する。
【００５２】
３．ダブル・ポンプ信号モードの例
実施例では、一般に、ダブル・ポンプ信号モードでは、バス・クロック（ＢＣＬＫ）の周波数の２倍（２Ｘ）で該当するバス信号グループを動作させる。図６は、実施例における例示的ダブル・ポンプ信号モードの動作を示すタイミング図である。どのような信号をダブル・ポンプしてもよいが、この例では、アドレス・バスがダブル・ポンプされている。
【００５３】
図６を参照する。ＡＤＳ＃信号は、リクエスト・フェーズの開始においては低い。ダブル・ポンプ信号モードにおいて、共通クロック信号モードを用いて一つのエレメントを送るのにかかる時間で（すなわち、１バス・クロック・サイクル中）、情報の二つのエレメントがバスに送られる。フライト・タイム（すなわち、プロセッサ・バス１１７での信号伝播時間）によって、第二の信号グループまたは情報エレメントは、第一のエレメントがレシーバにおいてラッチされる前に、ドライバで送られてもよい。実施例では、ドライバは、バス・クロック・サイクルの立ち上がりエッジおよび５０％の点において、新しい情報エレメントを送信する。
【００５４】
図６に示したように、トランザクション・アドレスを供給するリクエストのサブ・フェーズａ（Ａａ）が、バス・クロック・サイクル１の開始における立ち下がりエッジで始まるバス・クロック・サイクル１の第一半期に送信される。トランザクションに関するいくつかの補助的詳細を供給するリクエストのサブ・フェーズｂ（Ａｂ）は、バス・クロック・サイクル１の５０％の点において始まるバス・クロック・サイクル１の第二半期に送信される。これら二つの情報エレメントは、Ａ＃（＠ドライバ）ラインのためのＡａおよびＡｂに関する二つの四角形として図６に示してある。（Ａａは、アドレス・ラインを介して供給されるリクエストのサブ・フェーズａを示し、Ａｂは、アドレス・ラインを介して供給されるリクエストのサブ・フェーズｂを示す）。こうして、二つの情報エレメント（ＡａおよびＡｂ）は、１バス・クロック・サイクル中に転送され、または送信されるので、アドレス・バスはダブル・ポンプされる。
【００５５】
さらに、リクエストに関する情報は二重ポンプ信号モード（１バス・クロック・サイクル当たり二つの情報エレメント）を用いて送信されるので、前記情報はソース同期転送として送信されるので好ましい。このように、ドライバは、二つの情報エレメントに加え、アドレス・ストローブ信号を送り又は起動させると、（起動された時に）１バス・クロック・サイクル当たり二つのアドレス・ストローブを供給する。アドレス・ストローブは、アドレス・バスで送信される二つの情報エレメント（ＡａおよびＡｂ）をサンプリングするための点を与え又は特定する。
【００５６】
実施例では、バス・クロック（ＢＣＬＫ）と同じ周波数のアドレス・ストローブ信号（ＡＤＳＴＢ＃）を使用する。しかしながら、１バス・クロック・サイクル中に２つのストローブを供給するために、アドレス・ストローブ信号の立ち下がりエッジおよび立ち上がりエッジの両方を、ストローブとして使用し、あるいはアドレス・バスを介して供給される二つの情報エレメントのためのサンプリング点を特定するのに使用する。図６に記載の通り、ドライバは、情報エレメント１（Ａａ）の中心である、バス・クロック・サイクル１の２５％点で、アドレス・ストローブ信号（ＡＤＳＴＢ＃）を起動する。実施例では、第一の情報エレメント（Ａａまたはリクエストのサブ・フェーズａ）のためのアドレス・ストローブは、ＡＤＳＴＢ＃信号の立ち下がりエッジとして供給される（バス・クロック・サイクル１の２５％点において送られる）一方で、第二の情報エレメント（Ａｂまたはリクエストのサブ・フェーズｂ）のためのアドレス・ストローブは、ＡＤＳＴＢ＃信号の立ち上がりエッジとして与えられる（バス・クロック・サイクル１の７５％点において送られる）。
【００５７】
アドレス・ストローブがバス・クロックと同じ周波数を有しているとしても、バス・クロック信号は適切なタイミングで立ち上がりおよび立ち下がりエッジを与えるのではないので、バス・クロックを情報エレメントに関するストローブ信号として使用すべきではない。さらに、バス・クロック信号は常に起動される（ソース同期転送中のみ起動されるストローブ信号とは対照的に）。アドレス・ストローブ信号は、バス・クロックの状態またはフェーズに関係なく活性化（オンにする）及び非活動化（オフにする）できるので、このアドレス・ストローブ信号を、二つの情報エレメントに関するストローブまたはサンプリング点を与えるのに使用する。ストローブを、情報と同じソースから送られるようにすることによって、ストローブにおける遅延は情報における遅延に適合し、よって一つのワイヤ上に１以上のビットが同時に存在することができる。
【００５８】
情報エレメント（ＡａおよびＡｂ）およびアドレス・ストローブ信号は、プロセッサ・バス１１７に沿って伝播し、バス・クロック・サイクル２の開始において、レシーバに到達する。図６に記載の通り、第一の情報エレメント（Ａａ）は、ＡＤＳＴＢ＃（＠レシーバ）信号の立ち下がりエッジで取り込まれあるいはサンプリングされ、そして第二の情報エレメントは、ＡＤＳＴＢ＃（＠レシーバ）信号の立ち上がりエッジで取り込まれあるいはサンプリングされる。これをＡＤＳＴＢ＃（＠レシーバ）信号上の二つの三角形で示した。このように、レシーバは、データが有効（そして取り込まれるべき）時に、ドライバからの表示に基づいて、データまたは情報を決定論的に取り込むことがわかる。
【００５９】
実施例では、ドライビング・エージェントからあらゆるレシーバへのデータ転送の待ち時間は、１バス・クロック・サイクルから入力ラッチ・セットアップ時間を引いたものと等しいか又は小さくなければならない。これより、レシーバが次のフェーズの所有者になる場合、第二のあるいは次のフェーズのためのアドレス・ライン（またはアドレス・バス）および他のラインでのコンテンションが避けられる。最終的結果は、コンピュータまたはレシーバの中にラッチされている第一の信号グループのための待ち時間を加えるという結果を伴う、共通クロック信号モードの帯域幅の２倍である。
【００６０】
実施例では、レシーバは、リクエスト・フェーズ中、アドレス・バスを介して送信される４つの情報エレメントを記憶するための４つのエレメントＦＩＦＯバッファを含む。これにより、１つのリクエストのサブ・フェーズａおよびサブ・フェーズｂからのエレメントは、ＦＩＦＯにおいて受信され、取り込まれる一方で、同時に、前のリクエストのサブ・フェーズａおよびサブ・フェーズｂからのエレメントが、ＦＩＦＯから読み取られ、およびレシーバにおいてラッチされるようにする。
【００６１】
それゆえに、実施例では、アドレス・バスを介して転送される２つの情報エレメントのためにストローブを供給するために、バス・クロックと同じ周波数で、単一のアドレス・ストローブ信号が使用される。アドレス・ストローブに関するこれらの周波数（バス・クロック信号と同じ周波数）においては、信号の減衰は問題ではない。さらに、１バス・クロック・サイクル当たり、二つの情報エレメントだけが送信されるので、ストローブ・デューティー・サイクルにおける非対称性は問題を引き起こさない。このため、立ち下がりエッジおよび立ち上がりエッジの両方をストローブとして使用されるバス・クロックと同じ周波数での、単一のアドレス・ストローブを、アドレス・ストローブ信号に使用することができる。
【００６２】
これとは別に、複数の（または二つの）アドレス・ストローブ信号を、各アドレス・ストローブ信号のエッジのうち一つのみをストローブとして使用することもできる。例えば、サイクル１の２５％点において起動される（立ち下がりエッジを有する）第一のアドレス・ストローブ信号と、サイクル１の７５％点において起動される（立ち下がりエッジを有する）第二のアドレス・ストローブ信号を使用することができる。これは、二つのアドレス・ストローブ信号の起動点が、オフセットされるあるいは互い違いになる。この場合、１バス・クロック・サイクル中に二つのエレメントしか送られないので、アドレス・ストローブ信号の周波数は、バス・クロック周波数、または他の周波数と同じになるように選ばれる。
【００６３】
図９は、エージェント間の情報の転送のための装置の、他の実施例のブロック図である。第一のバス・エージェント８０２は、第二のバス・エージェント８３２に接続されている。第一のバス・エージェント８０２は、双方向アドレス・ストローブ信号ライン９２０へ、アドレス・ストローブ信号（例えば、ＡＤＳＴＢ＃）を生成するための、アドレス・ストローブ生成装置９４０を含んでいる。バス・エージェント８０２は、アドレス・バスまたはアドレス信号ライン９２６へとアドレスおよび他の信号を送信又は駆動するための送信回路と、アドレス信号ライン９２６からの信号を受信するための受信回路とを含む、バス・トランシーバ９０６も含んでいる。第二のバス・エージェント８３２は同様に、双方向アドレス・ストローブ信号ライン９２０へアドレス・ストローブ信号を生成するためのアドレス・ストローブ生成装置９４２を含んでいる。第二のバス・エージェント８３２も、アドレス信号ライン９２６を介して、それぞれ信号を送信し、および受信するための受信回路および送信回路を含むバス・トランシーバ９３６を含む。
【００６４】
上述の通り、一つのキャッシュ・ラインのデータ転送は、クアド・ポンプ信号モードを用いて、２バス・クロック・サイクルで送信することができ、アドレス要求は、ダブル・ポンプ信号モードを用いて、２バス・クロック・サイクルで送信することができる。このように、アドレス・バスおよびデータ・バスの両方が、同じピーク・スループットを有し、これにより均衡の取れたプロセッサ・バスが提供される。特に指摘しない限り、たとえすべてではないとしても、他のほとんどの信号は、共通クロック（１Ｘ）信号モードを用いて送信される。
【００６５】
ＶＩＩ．バス・プロトコルを、２クロック・サイクルの新しいビート・レートに合わせる。
上述のとおり、プロセッサ・バスは、マルチ・ポンプ信号プロトコルを使用することにより、より広いリクエスト及びでーだの帯域幅を与える。リクエスト帯域幅（アドレス・バス上）およびデータ帯域幅（データ・バス上）は広がるが、Ｐｅｎｔｉｕｍプロセッサのいくつかにおいて使用されるのと同じ基本的な種類のバス・プロトコは維持され、データ・バス幅（６４ライン）を増やす必要はなく、クロッキングまたはルーティンのための高価な構成も必要としない。
【００６６】
いくつかのＰｅｎｔｉｕｍプロセッサにおいて、６４本のデータ・ラインを用いて、１バス・クロック・サイクル当たり８バイトのデータを送信するために、共通クロック信号モードが使用され、それにより３２バイトのキャッシュ・ラインが４バス・クロック・サイクルで送信される。本発明の実施例では、キャッシュ・ラインは６４バイトに増やされ、クアド・ポンプ信号モード（１バス・クロック・サイクルにつき３２バイトを送信する）を使用して、２バス・クロック・サイクルで６４バイトのキャッシュ・ラインを送信することができる。さらに、いくつかのＰｅｎｔｉｕｍプロセッサにおいて、バス・クロック・サイクル１におけるサブ・フェーズａ、サイクル２におけるサブ・フェーズｂ、およびサイクル３に関するターンアラウンド・サイクル（またはデッド・サイクル）を含む３バス・クロック・サイクルで、リクエストが転送される。本発明の実施例では、アドレスバス上でダブル・ポンプ信号モードを使用して、単一のバス・クロック・サイクルにおけるリクエストのサブ・フェーズａおよびｂの両方を転送または送信する。これにより、リクエスト・フェーズの長さは、２バス・クロック・サイクルに減り、その結果キャッシュ・ライン転送の長さと（２バス・クロック・サイクルにも）調和する。リクエスト・フェーズは、２バス・クロック・サイクルの長さを有し、キャッシュ・ライン転送は２バス・クロック・サイクルを必要とするので、プロセッサ・バスのビート・レートまたはビート周波数は、一般的に、２バス・クロック・サイクルであると考えることができる。
【００６７】
本発明の実施例によると、連続したフェーズの開始の間の待ち時間（遅延）が、プロセッサ・バスの２つのバス・クロック・サイクルの新しいビート周波数によりよく合うよう調整されるように、バス・プロトコルが変更される。図７は、トランザクション・フェーズ（仲裁、リクエスト、スヌープおよび応答フェーズを含む）の間の最小の待ち時間（遅延）を示す図である。仲裁（Ａｒｂ）、要求（Ｒｅｑ）、スヌープ、そして応答（Ｒｅｓｐ）の各フェーズが、二つのトランザクション（トランザクション１およびトランザクション２）について示されている。数字は、フェーズ間の待ち時間（遅延）を示している。第一の数字は、いくつかのＰｅｎｔｉｕｍプロセッサに実装されているように、フェーズの開始の間の、バス・クロック・サイクルの最小数を示し、第二の数字（括弧の中）は、２バス・クロック・サイクルの新しいビート周波数により近く合うように、バス・プロトコルが調整され、または合わせられた後の、フェーズ間の新しい最小待ち時間を示す。数字が一つだけ表示されている場合は、いくつかのＰｅｎｔｉｕｍプロセッサと本発明の実施例との間のように、フェーズ間に遅延（待ち時間）の変化がないことを示す。
【００６８】
上述の通り、図７に記載されたフェーズ間の最小待ち時間は、通常２バス・クロック・サイクルである。図７を参照すると、一つのトランザクション（例えば、トランザクション１）に関する仲裁フェーズの開始と、リクエスト・フェーズの開始との間の最小待ち時間は、２バス・クロック・サイクルで変化しない。一つのトランザクションの、リクエスト・フェーズの開始からスヌープ・フェーズの開始までの最小待ち時間は、４バス・クロック・サイクルから３サイクルに減らされている。スヌープ・フェーズの開始から応答フェーズの開始まで間の最小待ち時間は、２バス・クロック・サイクルで変化しない。リクエスト・フェーズの開始と、ターゲット・エージェントがＴＲＤＹ＃信号をアサートすることができる時との間の最小待ち時間は、３から２バス・クロック・サイクルへと減らされている。ＴＲＤＹ＃信号のアサートから、応答フェーズの開始までの最小待ち時間は、２バス・クロック・サイクルで変化しない。
【００６９】
さらに、連続したトランザクションの同じフェーズまたは対応するフェーズの間の最小待ち時間は、２クロック・サイクルのビート周波数により近く合うように変更されている。再度図７を参照すると、連続した仲裁フェーズの間の最小待ち時間（例えば、トランザクション１の仲裁フェーズの開始と、トランザクション２の仲裁フェーズの開始との間の最小待ち時間）は、３バス・クロック・サイクルから２サイクルに減らされている。連続したリクエスト・フェーズの間の最小待ち時間は、３バス・クロック・サイクルから２へと減らされている。連続したスヌープ・フェーズの間の最小待ち時間は、３バス・クロック・サイクルから２へと減らされている。そして、連続した応答フェーズの間の最小待ち時間は、３バス・クロック・サイクルから２へと減らされている。
【００７０】
各フェーズについて、フェーズ間の待ち時間における減少（待ち時間の減少が生じた）の一因となった、フェーズに関するバス・プロトコルについてのいくつかの変更・修正の簡単な説明とともに説明する。
【００７１】
リクエストしているエージェントがバスを所有していない時は、トランザクションは仲裁フェーズで始まる。そこでリクエストしているエージェントがバス所有者になる。リクエストしているエージェントがバス所有者になった後、トランザクションはリクエスト・フェーズに入る。リクエスト・フェーズの第一のサブ・フェーズ（サブ・フェーズａ）において、ＡＤＳ＃信号（有効なアドレスを示す）が、スヌープおよびメモリ・アクセスを開始するためのトランザクション・アドレスおよび十分な情報とともに送られる。リクエスト・フェーズの第二のサブ・フェーズ（サブ・フェーズｂ）において、バイト・イネーブル（どのデータ・バイトがデータ・ラインで供給されるかを示す）、デファードＩＤ、トランザクション長、および他のトランザクション情報を含む、要求に関する様々な補助的情報が、バス１１７へと送られる。第一および第二のサブ・フェーズは、１バス・クロック・サイクル中に送られる。このため、実施例では、要求情報（例えば、どれが多くアドレス・バスを介して供給されるか）を、２Ｘデータ転送速度を有すると言う。
【００７２】
実施例では、すべてのトランザクションはスヌープ・フェーズを有する。スヌープ・フェーズからのスヌープ結果は、トランザクションのために送られたアドレスが、あらゆるバス・エージェントのキャッシュにおける有効な、または変更された（ダーティな）キャッシュ・ラインを参照するかどうかを示す。スヌープ結果はまた、トランザクションが順番に完了するか、あるいは遅延して、順番通りでなく完了するかどうかということも示す。エージェントは、スヌープ停止（snoop stall）を用いて、スヌープ・フェーズを延ばすことによって、スヌープの準備ができていない場合に、トランザクションを遅らせることができる。
【００７３】
ここで、フェーズ間の待ち時間を減らすために実行した相違点を強調しながら（適用可能である場合）、各フェーズについて説明する。
【００７４】
１）仲裁フェーズ：バス・エージェントがプロセッサ・バス１１７を所有するまでは、トランザクションが発行されることはない。トランザクションをプロセッサ１１７に送りたいエージェントが既にバス１１７を所有していない場合には、トランザクションは、このフェーズを有するだけでよい。実施例では、２つのクラスのバス・エージェント、すなわち対称エージェントおよび優先エージェント（priority agent）をサポートするバス仲裁プロトコルが設けられている。バス１１７のプロセッサは通常、対称エージェントとして仲裁する。優先エージェント（例えば、システム・インターフェース１１６）は通常、Ｉ／Ｏサブシステム（Ｉ／Ｏブリッジ１２４またはＩ／Ｏエージェント）およびメモリ・サブシステム（メイン・メモリ・サブシステム１２２に配置されたメモリ・エージェント）に代わって仲裁する。
【００７５】
バスの所有権を仲裁するのに使用される例示的信号グループを以下に示す（ここでは、＃記号はアクティブ・ロー信号を示す）。
【００７６】
【表２】
例示的仲裁信号
2003518693.tif 000002
【００７７】
プロセッサ・バス１１７は、複数のエージェントに、同時にバス１１７に関して仲裁させる。対称エージェントは、ラウンド・ロビン循環優先スキーム（round robin rotating priority scheme）に基づいて、バス１１７に関して仲裁する。この仲裁スキームは、すべての対称エージェントに関するリクエスト・フェーズへの公正なアクセスを保証する。各対称エージェントは、リセット時に割り当てられた独自のエージェントＩＤ（例えば、エージェント０，１，２，３）を有し、循環的な順番（circular order）に従って仲裁が行われる。リセットの後、エージェント０は最も優先順位が高く、エージェント１、２、および３がこれに続く。対称的な各エージェントは、最も最近のバス所有者の対称的なエージェントＩＤを反映した共通の循環ＩＤを保持する。すべての仲裁イベントにおいて、最高の優先順位を有する対称的なエージェントが所有者となり、そのエージェントはバスの使用を妨げるより高い優先順位の他のアクションが他にない場合に、リクエスト・フェーズに入ることができる。優先エージェントは、対称的な所有者よりも優先順位が高い。
【００７８】
対称的なエージェントは、そのＢＲＥＱｎ＃信号をアサートすることによって、バスをリクエストする。ＢＲＥＱ［３：０］でサンプリングされた値および最後の対称的なバス所有者に基づいて、すべてのエージェントは同時に次の対称バス所有者を決定することができる。優先エージェントは、ＢＰＲＩ＃をアサートすることによってバスをリクエストし、それは、ＢＰＲＩ＃がインアクティブでサンプリングされるまでは、他の対称エージェントが別のロックされていないバス・トランザクションを発行しないので、一時的に仲裁スキームよりも優位となる。優先エージェントは、常に次のバス所有者である。さらなるトランザクションがバスに発行されるのを阻止するために、任意のバス・エージェントがＢＮＲ＃信号をアサートすることができる（通常は、バッファ等のシステム・リソースが満たされ、他のトランザクションに対処できない時に使用される）。ＬＯＣＫ＃信号のアサートは、バス・エージェントが、中断されてはならないバス・トランザクションのアトミック・シーケンス（atomic sequence）を実行していることを示す。
【００７９】
優先エージェントは、その最後の要求を生成するのと同じサイクルで、ＢＰＲＩ＃をディアサートして、バスの所有権を解放することができる。いくつかのＰｅｎｔｉｕｍプロセッサにおいては、ＢＰＲＩ＃信号がアサートされた後、ＢＰＲＩ＃信号は、最小の２バス・クロック・サイクルでディアサートされなければならない。これは、古い３バス・クロック・サイクル速度（いくつかのＰｅｎｔｉｕｍプロセッサにおける）に匹敵し、対称エージェントと優先エージェントの均衡が取れたアクセスをバスに供給した。実施例では、アサートされた後に、最小の１バス・クロック・サイクルのみで、ＢＰＲＩ＃信号がディアサートされることを求めるように、プロトコルを変更した。この現在の実施例のように変更したことによって、２バス・クロック・サイクルのビート・レート、アサートのための１バス・クロック・サイクル、そしてディアサートのための１サイクルをサポートする。
【００８０】
上述の通り、ＢＮＲ＃信号は、例えば、エージェントが別のトランザクションをサポートするのに十分なリソースを有しない時、さらなる要求を遅らせるために使用することができる。実施例では、リクエスト停止（request stall）プロトコルが実行され、これは３つの状態に基づいて決定される：
１）フリー：この状態では、エージェントがリクエストを発行する能力は、ＢＮＲ＃リクエスト停止プロトコルによっては制約されないが、エージェントのバスの所有権によって、およびリクエストの速度によって制約される。いくつかのＰｅｎｔｉｕｍプロセッサでは、フリー状態でのＢＮＲ＃サンプリング点は、ＡＤＳ＃がアサートでサンプリングされた後、３クロック・サイクルで生じる。実施例では、ＢＮＲ＃サンプリング点は、ＡＤＳ＃信号がアサートされサンプリングされた後、２クロック・サイクル（３クロック・サイクルではなく）で生じるように調整された。エージェントが、フリー状態で新しいリクエスト生成を停止するつもりである時、エージェントは、ＡＤＳ＃からの有効なＢＮＲ＃サンプリング点の前に、クロック・サイクルでＢＮＲ＃をアクティブにする。次のクロック・サイクルでは、すべてのエージェントが、ＢＮＲ＃サンプリング点でのアクティブなＢＮＲ＃を見ることによって、停止した状態へ移行する。
【００８１】
２）スロットル（throttled）：エージェントは、バスの所有権を有し、最大ＡＤＳ＃要求速度が維持されていると、この状態で一つのリクエストを発行することができる。ＢＮＲ＃サンプリング点は、スロットル状態の第一のクロック・サイクルにある。スロットル状態にある時、ＢＮＲ＃がＢＮＲ＃サンプリング点において、アクティブでサンプリングされる場合、状態は停止状態（stalled state）に移行する。ＢＮＲ＃は、ＢＮＲ＃サンプリング点において、インアクティブでサンプリングされる場合、状態はフリー状態に移行する。
【００８２】
３）停止（stalled）：この状態においては、ＢＮＲ＃サンプリング点でサンプリングされたＢＮＲ＃が、インアクティブになるまで、エージェントはリクエストを発行してはならない。停止状態に入り、ＢＮＲ＃と同じ長さの、一つおきに連続するクロック・サイクルが、そのサンプリング点においてアクティブでサンプリングされる時、ＢＮＲ＃サンプリング点は、バス・クロック・サイクルにおいて始まる。リクエスト停止状態は常に、リセット・イベント（ＩＮＩＴ＃またはＲＥＳＥＴ＃のいずれか）の後、停止状態に初期化される。エージェントは、２クロック・サイクルごとに（有効サンプリング点の前に）ＢＮＲ＃をアサートすることによって、停止状態を延長することができる。ＢＮＲ＃が、停止状態で、アクティブとしてサンプリングされない場合、要求停止状態は、スロットル状態に移行する。
【００８３】
そのため、アサートされた後に、最小の１バス・クロック・サイクルだけ（２バス・クロック・サイクルではなく）、ＢＰＲＩ＃信号がディアサートされるようリクエストし、そしてＡＤＳ＃信号がアサートでサンプリングされた後、２クロック・サイクル（３クロック・サイクルではなく）で生じるように、フリー状態におけるＢＮＲ＃サンプリング点を調整することは、連続した仲裁フェーズの開始の間の最小待ち時間を、３バス・クロック・サイクルから２バス・クロック・サイクルへ減らす。
【００８４】
２）リクエスト・フェーズ：リクエスト・フェーズは、トランザクションが実際にバスに発行され、または送られるフェーズである。実施例に従って、リクエスト・フェーズは、持続期間が１共通バス・クロック・サイクルである。リクエスト・フェーズは、サブ・フェーズａ（リクエスト・フェーズの第一の半分の間）およびサブ・フェーズｂ（リクエスト・フェーズの第二のサブ・フェーズの間）を含む、二つのサブ・フェーズを含む。リクエスト情報は、リクエスト・フェーズの間に送信され、トランザクション・アドレスを含む。リクエスト・フェーズは、ＡＤＳ＃信号、アドレス・ストローブ信号のアサートで始まる。ここにリクエスト・を送信するために使用されうる信号の例示的グループがある。
【００８５】
【表３】
例示的要求信号
2003518693.tif 000003
注記：
ａ．これらの信号は、要求フェーズの第一のサブ・フェーズ（サブ・フェーズａ）中に表示されたピンで送られる。
ｂ．これらの信号は、要求フェーズの第二のサブ・フェーズ（サブ・フェーズｂ）中に送られる。
【００８６】
このように、トランザクション・アドレスは、Ａａ［３５：３］で送信され（この場合“Ａ”は、アドレス・ラインまたはアドレス・バス２０４を示し、“ａ”は、サブ・フェーズａ中に送信される信号を示す）、トランザクションを記述する追加情報（例えば、バイト・イネーブル、属性、拡張機能）は、Ａｂ［３５：３］で送信される（“ｂ”は、サブ・フェーズｂ中に、アドレス・ラインを介して、追加情報が送信されることを示す）。ＡＤＳ＃のアサートは、リクエスト・フェーズの開始を定義する。ＡＤＳＴＢ［１：０］＃は、好ましくは、ＡＤＳ＃がアサートされるバス・クロック・サイクルごとに一回トグルし、他のサイクルではしない。ＲＥＱａ［４：０］＃およびＲＥＱｂ［４：０］＃は、トランザクション・タイプを特定する。
【００８７】
実施例では、リクエストは、プロセッサ・バスへと送られる：
１）所有権観察の後のクロック・サイクル；および
２）前のトランザクションのためのＡＤＳ＃アサートから、２以上のクロック後；および
３）ＢＮＲ＃がインアクティブであると観察される、および
４）ＬＯＣＫ＃は、このエージェントによって起動されない場合、インアクティブであると観察される。
【００８８】
いくつかのＰｅｎｔｉｕｍプロセッサでは、前のトランザクションのＡＤＳ＃のアサートの後リクエストがプロセッサ・バスに送られる前に、最小遅延として３クロック・サイクルを必要とした。本実施例では、連続したトランザクションのリクエスト・フェーズの間の最小待ち時間を、３クロック・サイクルから２クロック・サイクルへと減らすために、エージェントは、前のトランザクションのＡＤＳ＃信号のアサートの後、２バス・クロック・サイクルだけ後に、バスへリクエストを送ることができる。上述の通り、ＡＤＳ＃信号は、リクエスト・フェーズの開始を特定し、およびリクエストのサブ・フェーズａが、プロセッサ・バスへ送られており、（アドレス・バスを介して供給される）アドレスおよび（ＲＥＱ＃［４：０］ラインを介して供給される）要求を含むことを示す。
【００８９】
３）スヌープ・フェーズ：実施例では、プロセッサ・バスは、複数のキャッシング・エージェントのためのキャッシュ・コヒーレンシーをサポートする。コヒーレンシー（データに矛盾がないこと）によって、複数レベルのキャッシュ及びメモリ、ならびに複数のキャッシング・エージェントを有するシステムまたはコンピュータについて、どのエージェントも古い（すなわち正しくない）データを読むことなく、そして動作が必要に応じて順序付けされるという共用メモリのモデルを提示することができる。一つのラインは、キャッシング・エージェントにおけるキャッシングのユニットである。実施例では、キャッシュ・ラインは６４バイトであるが、他のサイズのキャッシュ・ラインを使用することもできる。
【００９０】
キャッシュ・プロトコルは、状態とラインとを関連付け、状態の移行を管理する規則を定義する。各ラインは、各キャッシュに一つの状態を有する。実施例では、４つのライン状態があり、以下のものを含む：Ｍ（Ｍｏｄｉｆｉｅｄ）は、ラインがこのキャッシュにあり、メモリにおけるよりもより最近のラインの値を含み、前記ラインはすべての他のエージェントでは無効であることを示す；Ｅ（Ｅｘｃｌｕｓｉｖｅ）は、ラインがこのキャッシュにあり、メモリと同じ値であり、すべての他のエージェントにおいて無効であることを示す；Ｓ（Ｓｈａｒｅｄ）は、ラインがこのキャッシュにあり、メモリと同じ値を含み、他のエージェントにあるかもしれないことを示す；Ｉ（Ｉｎｖａｌｉｄ）は、ラインがこのキャッシュにはなく、他のキャッシュまたはエージェントから取ってこられるべきであることを示す。
【００９１】
スヌープ・フェーズは、キャッシュ・コヒーレンシーが強化されるフェーズである。以下の内容は、スヌープ・フェーズ中に使用されうるスヌープ信号の例示的リストである：
【００９２】
【表４】
例示的スヌープ信号
2003518693.tif 000004
【００９３】
スヌープ・フェーズでは、すべてのキャッシング・エージェントは、自らのスヌープ結果を送り、キャッシュ・コヒーレンシーの解決（cache coherency resolution）に参加する。前記エージェントは、それ自身のものではない、ほぼすべてのメモリ・トランザクションに関する内部スヌープ結果を生成する。すべてのキャッシング・エージェント（スヌープ・エージェント）は、ＨＩＴ＃およびＨＩＴＭ＃信号を用いて、このフェーズにおいてバスへと自らのスヌープ結果を送る。要求されたデータを含むキャッシュ・ラインのコピーが、このインターフェースにおける他のエージェントのキャッシュに存在することを示すために、ＨＩＴ＃は、スヌープ・フェーズ中にアサートされる。ＨＩＴＭ＃は、要求されたデータを含むキャッシュ・ラインの変更されたコピーが、このインターフェースにおける他のエージェントのキャッシュに存在することを示すために、スヌープ・フェーズ中にアサートされる。ＨＩＴ＃およびＨＩＴＭ＃が、同時に、スヌープ・フェーズ中に一つのエージェントによってアサートされた場合には、スヌープ停止が生じたのであり、現在のスヌープ・フェーズは延長されるであろう。ＤＥＦＥＲ＃は、現在のトランザクションが完了することを保証されないことを示すために、スヌープ・フェーズ中にアサートされる。
【００９４】
いくつかのＰｅｎｔｉｕｍプロセッサでは、スヌープ結果は、ＡＤＳ＃信号がアサートされた後、４クロック・サイクルで、かつ、前のトランザクションのスヌープ・フェーズから、少なくとも３クロック・サイクルで送られる。しかしながら、実施例では、これらの最小待ち時間がプロセッサ・バスの新しいビート周波数により近く合うように修正した。実施例では、スヌープ結果は、ＡＤＳ＃がアサートされた後、３クロック・サイクルで（すなわち、リクエスト・フェーズの開始の後、３バス・クロック・サイクル）、および前のトランザクションのスヌープ・フェーズの後、少なくとも２クロック・サイクルで（すなわち、スヌープ結果が、前のトランザクションに関して、バスへと送られた後、少なくとも２クロック・サイクルで）、送られる。したがって、ＨＩＴ＃／ＨＩＴＭ＃／ＤＥＦＥＲ＃信号（スヌープ結果）に関する最大起動速度は、３バス・クロック・サイクルごとに１回から、２バス・クロック・サイクルごとに一回へと変更された。リクエスト・フェーズが１サイクル短縮されたことにより、リクエスト・フェーズの終わり（サブ・フェーズＢ）からスヌープ・フェーズまでの待ち時間は同じままであることが注目される。
【００９５】
４）応答フェーズ：このフェーズでは、応答エージェントは、プロセッサ・バスへトランザクション応答を送る。リクエスト・フェーズにおいて開始されたリクエストは、すべてのバス・エージェントによって維持されている順番通りの待ち行列に入る。この応答するエージェントは、順番通りの待ち行列の最上位においてトランザクションを完了させる役割をになうエージェントである。この応答するエージェントは、リクエスト・フェーズ中に、トランザクションによってアドレス指定された装置またはエージェントである。応答フェーズにおいて使用されうる信号の例示的グループを以下に示す：
【００９６】
【表５】
例示的応答信号
2003518693.tif 000005
【００９７】
トランザクション応答は、ＲＳ［２：０］＃信号でコード化される。考えられる応答の例は：通常データ応答（応答するエージェントは、応答とともに、読み出したデータを転送することが要求される）、リトライ応答（retry response）（ＤＥＦＥＲ＃がスヌープ・フェーズ中にアサートされる時にトランザクションを再試行しなければならないことを示す）、デファード応答（応答エージェントまたは応答しているエージェントは、デファード応答トランザクションを用いて、将来トランザクションを完了させることを約束する）、ノー・データ応答（アドレス指定されたエージェントによって戻されるデータはない）等を含む。ＴＲＤＹ＃は、ライトまたはライトバック・データ等を受け入れる準備ができていることを示すために、応答しているエージェントによってアサートされる。ＲＳＰ＃信号は、ＲＳ信号のためにパリティ（parity）を供給する。
【００９８】
いくつかのＰｅｎｔｉｕｍプロセッサにおいて、応答は、前のトランザクションの応答フェーズの後、最小の３バス・クロック・サイクルの後に送られる。実施例では、連続したトランザクションの応答フェーズ間の、この最小待ち時間は、プロセッサ・バスの新しいビート周波数により近く合うよう調整した。実施例では、応答は、前のトランザクションの応答の後、最小の２バス・クロック・サイクル後に送られる。この最小待ち時間は、他の制約を受けて延長されるかもしれない。リクエスト信号に使用されるダブル・ポンプ信号モードによって、２バス・クロック・サイクルごとに一回、応答が送られる（いくつかのＰｅｎｔｉｕｍプロセッサにおける、３バス・クロック・サイクルごとに１回と比較される）。
【００９９】
リクエストによって開始されるトランザクションは、リクエスト・エージェントが転送すべきライト・データを有しているトランザクションである。アドレス指定されたエージェントは、ライト・オペレーションを実行するつもりであるリクエスト・エージェントからデータを受信する能力を示すために、ＴＲＤＹ＃をアサートする。いくつかのＰｅｎｔｉｕｍプロセッサでは、ＴＲＤＹ＃信号は、同じトランザクションに関するＡＤＳ＃信号のアサートの後、最小の３バス・クロック・サイクルの後にアサートされる。通常、この待ち時間を延ばしうる他の制約がある。この待ち時間を、プロセッサ・バスの新しいビート周波数により近く合うように変更した。実施例では、アドレス指定されたエージェントは、同じトランザクションに関するＡＤＳ＃信号のアサートの後、最小の２バス・クロック・サイクルの後に、ＴＲＤＹ＃信号をアサートすることができる。リクエスト・フェーズの終わりからＴＲＤＹ＃までの待ち時間は、変わらないままである。
【０１００】
５）データ（転送）フェーズ：データ・フェーズ中、データは、プロセッサ・バス１１７を介して、異なるバス・エージェントの間で転送される。リクエスト・フェーズに基づいて、トランザクションは、“リクエストによって開始される”（ライト）データ転送又は“応答によって開始される”（リード）データ転送を含むか、あるいはデータ転送がない状態のいずれかである。データ・フェーズは、１つのトランザクションに関するリクエスト・フェーズと重複してもよい。
【０１０１】
データ・フェーズにおいて使用されうる信号の例示的リストが以下に示されている：
【表６】
例示的データ信号
2003518693.tif 000006
【０１０２】
ＤＲＤＹ＃は、有効なデータがバス１１７にあり、ラッチされなければならないことを示す。データ・バス所有者はバス・クロック・サイクル毎にＤＲＤＹ＃をアサートし、そこで有効なデータが転送される。ＤＲＤＹ＃は、データ・フェーズにおいて待ち状態を挿入するために、ディアサートすることができる。最初のＤＲＤＹ＃のアサートの前、及び多重バスクロックデータ転送のための連続するＤＲＤＹ＃アサートの間には、ＤＢＳＹ＃を用いてデータバスをホールド状態にすることができる。ＤＩＮＶ［３：０］＃は、データ・ソースによってデータ・ビットが反転されたことを示すために使用される。
【０１０３】
データ・バス２０６（図２）のデータ信号Ｄ［６３：０］＃は、バス・エージェント間に６４ビットのデータ・パスを供給する。Ｉ／ＯリードおよびＩ／Ｏライトのトランザクションのような部分的な転送のために、バイト・イネーブル信号（ＢＥ［７：０］＃）は、データ・バスのどのバイトが有効データを含むかを決定する。ＤＰ信号は、データ信号のためにパリティを供給するために使用される。
【０１０４】
実施例では、クアド・ポンプ（すなわち４Ｘ）ソース同期ラッチ・プロトコルを使用してデータを転送してもよく、その場合は、データ信号Ｄ［６３：０］＃が使用して、単一のバス・クロック・サイクルで４つの８バイト・データエレメントを送信する。バス・クロックの最初の４分の１で、最初の８バイト（バースト順で）が送信され、バス・クロックの次の４分の１において第二の８バイト・エレメントが送信され、バス・クロックの第三の４分の１において第三の８バイト・エレメントが送信され、バス・クロックの第四の４分の１において、第四の８バイト・エレメントが送信される。転送されるデータの長さが、１〜８バイトの場合には、前記データはバス・クロックの最初の４分の１で転送することができ、データ長が９〜１６バイトの場合は、データは、バス・クロックの最初の二つの４分の１で転送される。
【０１０５】
本発明のいくかの実施例を、具体的に例示し記述してきたが、本発明の変更および変形についても、本発明の思想および意図された範囲から逸脱することなく、上述の説明及び特許請求の範囲の記載によってカバーされうることが理解されるだろう。
【図面の簡単な説明】
【図１】
図１は、本発明の例示的実施例に従った、コンピュータを示すブロック図である。
【図２】
図２は、例示的実施例に従ったプロセッサ・バスを示す図である。
【図３】
図３は、実施例に従って、二つの例示的トランザクションに関する、例示的バス・トランザクション・フェーズ関係を示すタイミング図（timing diagram）である。
【図４】
図４は、実施例に従った、共通クロック信号モードの例示的なオペレーションを説明する例示的タイミング図である。
【図５】
図５は、実施例に従った、例示的クアド・ポンプ信号モードのオペレーションを示すタイミング図である。
【図６】
図６は、実施例に従った、例示的ダブル・ポンプ信号モードのオペレーションを示すタイミング図である。
【図７】
図７は、トランザクション・フェーズの間の最小待ち時間または遅延を示す図である。
【図８】
図８は、実施例に従った、エージェント間の情報の転送のための装置のブロック図である。
【図９】
図９は、他の実施例に従った、エージェント間の情報の転送のための装置のブロック図である。