(57)【特許請求の範囲】
【請求項１】
コンピュータシステムに使用される方法であって、
所定のデータ転送時間を指示し、
バスの一部へ第１のクロックサイクルで始まる第１の表示形態のデータを供給し、この際に前記バスが前記第１の表示形態のデータをスキューして前記バスの別の部分において第２の表示形態のデータを生成することができるようにし、
前記第２の表示形態のデータに応じたキューに応答してメモリに第３の表示形態のデータを記憶し、
別のクロックサイクルの最初に、前記第２の表示形態のデータに応じて前記第３の表示形態のデータを回路に伝達し、
前記第１のクロックサイクルと前記別のクロックサイクルとが、前記所定の転送時間だけ、ほぼ分離されるように前記伝達を調節する、
ことを特徴とする方法。
【請求項２】
前記所定のデータ転送時間は一つ又はそれ以上のクロック周期を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第３の表示形態のデータを前記メモリに記憶する動作は、前記メモリへの前記第３の表示形態のデータの記憶を、前記第１のクロックサイクル後の第２の所定数のクロックサイクルの経過時に開始することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記供給動作と前記伝達動作とを共通のクロック信号に同期させることをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記所定のデータ転送時間を指示する動作は、前記所定のデータ転送時間の指示を前記バスに供給することを含むことを特徴とする請求項１に記載の方法。
【請求項６】
バスと、
前記バスに結合されており、前記バスの一部へ第１のクロックサイクルで始まる第１の表示のデータを供給する第１のバス・デバイスと、
前記第１の表示形態のデータをスキューして前記バスの別の部分において第２の表示形態のデータを生成することができる前記バスと、
コア回路と、
前記バスに結合されており、選択された待ち時間の指示を受信し、前記第２の表示形態のデータに応じてそれ自身のメモリに前記第３の表示形態のデータを記憶し、前記第２の表示形態のデータに応じて前記第３の表示形態のデータを前記コア回路に伝達することを別のクロックサイクルにおいて開始して、前記第１のクロックサイクル後の前記選択された待ち時間の経過時に前記コア回路が前記データを受信するように前記伝達を調節する、第２の回路と、
をそれぞれ備えることを特徴とするコンピュータシステム。
【請求項７】
前記選択された待ち時間は所定数のクロックサイクルを含むことを特徴とする請求項６に記載のコンピュータシステム。
【請求項８】
前記第２の回路は、更に、
前記第１のクロックサイクル後の第２の所定数のクロックサイクルの経過時に前記データを前記メモリに記憶することを開始するように構成されていること、
を特徴とする請求項６に記載のコンピュータシステム。
【請求項９】
前記第２の回路は、
メモリと、
前記メモリから前記第３の表示形態のデータの少なくとも一部を回収するために前記メモリにおけるロケーションを指示するための読み出しポインタ回路と、
第１のクロック信号に応じて前記読み出しポインタ回路をイネーブルにするように構成された論理回路と、
を備えていることを特徴とする請求項６に記載のコンピュータシステム。
【請求項１０】
前記論理回路は、更に、前記第１のクロックサイクル後の所定数のクロックサイクルの経過時に前記読み出しポインタ回路をイネーブルにするように構成されていることを特徴とする請求項９に記載のコンピュータシステム。
【請求項１１】
前記第２の回路は、
メモリと、
前記メモリに前記第３の表示形態のデータの少なくとも一部を記憶するために前記メモリにおけるロケーションを指示するための書き込みポインタ回路と、
第１のクロック信号に応じて前記書き込みポインタ回路をイネーブルにするように構成された論理回路と、
を備えていることを特徴とする請求項６に記載のコンピュータシステム。
【請求項１２】
前記論理回路は、更に、前記第１のクロックサイクル後の所定数のクロックサイクルの経過時に前記書き込みポインタ回路をイネーブルにするように構成されていることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
コア回路と、
バスに結合されており、既に先行のクロック信号から前記バスへの供給が始められた、第１のクロックサイクルで始まる第１の表示形態のデータを、前記バスから受信し、前記第１の表示形態のデータに応じてそれ自身のメモリに前記第２の表示形態のデータを記憶し、前記第３の表示形態のデータの前記コア回路への伝達を別のクロックサイクルにおいて開始し、前記先行のクロックサイクル後の選択された待ち時間の経過時に始まる前記前記第３の表示形態のデータを前記コア回路が受信するように前記伝達を調節する、ように構成されたバス・インタフェースと、
を備えていることを特徴とするバス・デバイス。
【請求項１４】
前記選択された待ち時間は所定数のクロックサイクルを含むことを特徴とする請求項１３に記載のバス・デバイス。
【請求項１５】
前記バス・インタフェースは、更に、前記メモリへの前記データの記憶を前記第１のクロックサイクル後の第２の所定数のクロックサイクルの経過時に開始するように構成されていることを特徴とする請求項１３に記載のバス・デバイス。
【請求項１６】
前記メモリから前記第３の表示形態のデータの少なくとも一部を回収するために前記メモリにおけるロケーションを指示するように構成された読み出しポインタ回路と、
第１のクロック信号に応じて前記読み出しポインタ回路をイネーブルにするように構成された論理回路と、
を備えていることを特徴とする請求項１３に記載のバス・デバイス。
【請求項１７】
前記論理回路は、更に、前記第１のクロックサイクル後の所定数のクロックサイクルの経過時に前記読み出しポインタ回路をイネーブルにするように構成されていることを特徴とする請求項１６に記載のバス・デバイス。
【請求項１８】
前記バス・インタフェースは、
メモリと、
前記メモリに前記第２の表示形態のデータの少なくとも一部を記憶するために前記メモリにおけるロケーションを指示するように構成された書き込みポインタ回路と、
第１のクロック信号に応じて前記書き込みポインタ回路をイネーブルにするように構成された論理回路と、
を備えていることを特徴とする請求項１３に記載のバス・デバイス。
【請求項１９】
前記論理回路は、更に、前記第１のクロックサイクル後の所定数のクロックサイクルの経過時に前記書き込みポインタ回路をイネーブルにするように構成されていることを特徴とする請求項１８に記載のバス・デバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
発明の背景
本発明は、バス（bus）を用いた決定論（因果律）（determinism with a bus）を使用する技術に関する。
【０００２】
【従来の技術】
図１を参照して説明すると、一般的なコンピュータシステム１０は、コンピュータシステム１０のプロセッサ２０（一例として中央処理ユニット（ＣＰＵ））と相互作用する多くのデバイスを含んでいる。例えば、プロセッサ２０は、ホスト・バス（host bus）１２に書き込みみトランザクションを与えることによって、バス・デバイス（bus device）１４のレジスタに書き込むことができる。しかしながら、バス・デバイス１４は、ホストバス１２に現われるトランザクションに直接返答しないが、しかしそれよりはむしろ、バス・デバイス１４は、バス・デバイス１４に直接繋がっている他のバス１８に現れるトランザクションに直接返答する。バス１８上に書き込みみトランザクションを再生する目的のために、コンピュータシステム１０は、ホスト・バス１２とバス１８との間に接続されるホスト・ブリッジ１６を含んでいる。また、ホスト・ブリッジ１６は、バス・デバイス１４によって提供される応答に基づいてホスト・バス１２上のトランザクションを完了する。コンピュータシステム１０は、追加のバスを一緒にインタフェースするために、例えばバス１８と他のバス２４との間を接続するブリッジ２２といった追加のブリッジを含んでよい。
【０００３】
【発明が解決しようとする課題】
ホスト・ブリッジ１６からバス・デバイス１４へのトランザクションの転送は瞬間的でなくてよく、しかしむしろ、バス１８は、トランザクションを表現する信号をスキュー（skew）して伝播遅延をもたらすことがある。この伝播遅延は、コンピュータシステム１０の電圧と温度との関数に依存し、そして長時間にわたって変化する。
【０００４】
ある場合には、トランザクションのデータがブリッジ１６からバス・デバイス１４のコア回路１７までバス１８に沿って伝わるのにどれくらい多くのクロックサイクル（clock cycles）が必要とされるかを選択することが望ましいかもしれない。例えば、冗長のサブシステム（図示されていない）がバス１８に結合されてよく、そしてその結果として、コヒーレンシー（coherency）の理由のために、万一にもある一つのサブシステムが失敗する場合に備えて、サブシステムが共に同時に同じデータを受け取ることが望ましいことがある。もう１つの例として、クロックサイクルの数を予測する能力が、ブリッジチップセットをデバッグする際に役に立つかもしれない。
【課題を解決するための手段】
【０００５】
発明の概要
本発明の一実施形態では、コンピュータシステムで使用される方法は、所定のデータ転送時間を指示すること、及び、バスの一部に第１のクロックサイクルで始まる第１の表示形態のデータを提供することを含んでいる。前記バスは、第１の表示形態のデータをスキューして前記バスの別の部分において別のクロックサイクルの間に第２の表示形態のデータを生成することができる。前記データは、前記第２の表示形態のデータに応じて或る回路に転送され、その転送は、前記第１のクロックサイクルとその他のクロックサイクルが前記所定の転送時間によってほぼ分離されるように調節される。
【０００６】
本発明の他の実施形態では、コンピュータシステムは、バスと、第１のバス・デバイスと、コア回路と、第２の回路とを備える。前記第１のバス・デバイスは、前記バスに結合されており、前記バスの一部に第１のクロックサイクルで始まるデータの第１の表示形態のデータを供給する。前記バスは、第１の表示をスキューしてそのバスの別の部分において第２の表示形態のデータを生成することができる。前記第２の回路は、前記バスに結合されており、選択された待ち時間（呼び出し時間）の表示を受信するように構成される。前記第２の回路は、前記第２の表示形態のデータに応じて前記コア回路に前記データを転送するように構成され、前記第１のクロックサイクル後の前記選択された待ち時間の経過時に前記コア回路が前記データを受信するように前記転送を調節するようにも構成される。
【０００７】
本発明の更に別の実施形態では、バス・デバイスは、コア回路と、バス・インタフェースとを備える。前記バス・インタフェースはバスに結合されており、前記バスから第１のクロックサイクルで始まる表示形態のデータを受信する。前記表示形態のデータの前記バスへの提供は、先行のクロック信号で開始される。前記バス・インタフェースは、前記表示形態のデータに応じて前記コア回路に前記データを転送して、前記コア回路が前記先行のクロックサイクル後の選択された待ち時間の経過時に前記データの受信を開始するように前記転送を調節するようにも構成される。
【０００８】
【発明の実施の形態】
詳細な説明
図２を参照して説明すると、本発明の実施態様に係るコンピュータシステム５０は、バス５２を介してホスト・ブリッジ６０によって供給されるトランザクションを受け取ることができるバス・デバイス５４（できればいくつかのバス・デバイス５４の中の１つ）を含んでいる。バス５２にこのトランザクションを供給する最中において、ホスト・ブリッジ６０は、図７に示されるようなトランザクションのデータを示すデジタル信号（Ｆ１６＿Ｄａｔａ［１５：０］＃と呼ばれる（ここで、添字「＃」は否定または逆の論理を意味する））を供給する。ホスト・ブリッジ６０は、特定のクロックサイクル（例えばＸＣｌｋ（図３参照）と称されるクロック信号のサイクル「４」）において始まるＦ１６＿Ｄａｔａ［１５：０］＃信号を供給するが、Ｆｌ６＿Ｄａｔａ［１５：０］＃信号の遅延バージョン（ｄｅｌａｙｅｄ＿Ｆｌ６Ｄａｔａ［１５：０］＃と称され、図１０に示される）は、バス５２による信号のスキューによって引き起こされる遅延のために数クロックサイクル後までバス・デバイス５４によって受信されないことがある。
【０００９】
例えば、図１０に示されるように、ｄｅｌａｙｅｄ＿Ｆ１６Ｄａｔａ［１５：０］＃信号は、クロックサイクル番号「５」までバス・デバイス５４の付近には現われない。他の実施態様では、バス５２によって導入されるスキューは、コンピュータシステム５０の電圧や温度または他の動作条件の変動によって可変的であってよいので、ｄｅｌａｙｅｄ＿Ｆ１６Ｄａｔａ［１５：０］＃信号は、クロックサイクル番号「６」といった他のクロックサイクルまで現れないことがある。しかしながら、バス５２によって導入される遅延に関係なく、いくつかの実施態様では、コンピュータシステム５０は、データ転送時間或いは待ち時間の選択が許されるように構成される。
【００１０】
待ち持間若しくは呼び出し時間（latency time）は、いくつかの実施態様において、ホスト・ブリッジ６０がＦ１６＿Ｄａｔａ［１５：０］＃信号を供給する時間と、バス・デバイス５４のコア回路５８が対応するデータを示す信号を（バス・インタフェース５６から）受信する時間との間に経過する時間を指してよい。次に、待ち持間は、以下に記述される、１セットの待ち時間値（latency time values）の一つを使って選択されてよい。このように、コンピュータシステム５０は、ホストブリッジ６０からコア回路５８までのデータの伝播（伝搬）に対する待ち時間値の選択を許す決定論的スキームを実行し、待ち持間は、バス５２の長さとは独立であってよい。待ち時間値は、ホスト・ブリッジ６０がデータを供給するときのサイクルと、そのデータがコア回路５８によって受信されるときのサイクルとの間に経過するＸＣｌｋ信号のサイクル数に対応してよい。
【００１１】
本明細書においては、用語「コア回路（core circuity）」は、一般に、データを処理して、バス５２からデータを受信することとは別の機能を実行するバス・デバイス５４の回路のことを言うものとする。バス・デバイス５４は、一例として周辺機器コンポーネント相互接続（ＰＣＩ（Peripheral Component Interconnect））ブリッジであってよく、これはＰＣＩバス６２をコンピュータシステム５０の残り部分にインタフェースする。ＰＣＩプロトコルはＰＣＩ仕様書に詳細に記述されており、この仕様書は米国オレゴン州ポートランド９７２１４に所在するＰＣＩ特殊営利団体（PCI Special Interest Group, Portland. Oregon 97214）から入手可能である。
【００１２】
一例として、図３，図７，図１１及び図１２も参照して説明すると、選択されたバス待ち時間値は、ＸＣｌｋ信号（図３参照）の２つのクロックサイクルを示してよい。結果として、ホスト・ブリッジ６０がバス５２に（Ｆ１６＿Ｄａｔａ［１５：０］＃信号を介して）データを供給してから正確に（一例として）２クロックサイクル後に、バス・インタフェース５６は特定のデータを示すデジタル信号（図１１及び図１２に描かれたような、ＦａｓｔＤａｔａＯｕｔ｛１５：０］とＮＤａｔａＯｕｔ［１５：０］と称される信号）を（コア回路５８に）供給する。本例に関しては、もしバス５２が０から２つのクロック周期の範囲にあるどれかの遅延を導入するならば、２クロックサイクルの遅延が有効である。
【００１３】
いくつかの実施態様では、待ち時間値は、バス・デバイス５４といったコンピュータシステム５０のデバイスのストラッピング・ピン（strapping pins）５３によって選択されてよい。この場合、ストラッピング・ピン５３は、特定の待ち時間値を選択して、選択された待ち時間値をコア回路５８に示すために、前もって指定された論理レベルに選択的に結び付けられる。次に、コア回路５８は（いくつかの実施態様において）、多くの異なった方法の一つを使ってホスト・ブリッジ６０に、その選択された待ち時間値を示すことができる。例えば、バス・リセット信号（bus reset signal）（ＸＲＳＴ＃と呼ばれる）がアサートされる（例えば低レベルに駆動される）と、コア回路５８は、バス５２の所定のラインの論理レベルを制御することによって、選択された待ち時間値を示すことができる。いくつかの実施態様では、ホスト・ブリッジ６０のラッチ（図示されていない）は、ＸＲＳＴ＃信号のデアサート（例えば高レベルに駆動すること）の際に望ましい待ち時間モードを獲得し、そしてコア回路５８は、以下において詳細に述べられるＷｒｉｔｅＰｔｒＲｓｔと呼ばれる信号のデアサート（例えば低レベルに駆動すること）の後にバス５２のラインの制御をやめてよい。
【００１４】
一例として、上記所定のラインは、バス５２の３つのデータラインであってよく、それぞれのラインの信号は本目的のためにＦ１６＿Ｄａｔａ［２：０］＃でラベル付けされる。待ち時間モードに対する異なる可能な値、及び、Ｆ１６＿Ｄａｔａ［２：０］＃信号の対応する論理レベルが、図２０に示されている。留意すべきことは、例えば、Ｆ１６＿Ｄａｔａ［２：０］＃信号が「１１１ｂ」（添字「ｂ」はバイナリ表現を表す）にセットされると、決定論的スキームは使用されず、従って、待ち時間値は選択されない。
【００１５】
いくつかの実施態様では、バス・インタフェース５６は、書き込みポインタリセット信号（write pointer reset signal）（図１４でＷｒｉｔｅＰｔｒＲｓｔと称される）と読み出しポインタリセット信号（read pointer reset signal）（図１５でＲｅａｄＰｔｒＲｓｔと称される）により、それぞれバス・インタフェース５６へのデータのフローとバスインタフェース５６からのデータのフローとを同期させる。ＷｒｉｔｅＰｔｒＲｓｔ信号及びＲｅａｄＰｔｒＲｓｔ信号は、いくつかの実施態様において、ホスト・ブリッジ６０のリセット論理回路（reset logic）７２（図２参照）によって供給されてよく、また、いくつかの実施態様においては、これらの信号は、バス・デバイス５４のリセット論理回路（図示されていない）によって供給されてよい。この場合、リセット論理回路７２は、ホスト・ブリッジ６０がバス・インタフェース５６にデータを記憶させる目的のためにバス５２へのデータの供給を開始してから所定数のクロックサイクル後にＷｒｉｔｅＰｔｒＲｓｔ信号をデアサート（例えば低レベルに駆動）してよい。リセット論理回路７２は、ホスト・ブリッジ６０がバス・インタフェース５６からデータを回収する（そしてそのデータをコア回路５８に提供する）目的のために、バス５２へのデータの供給を開始してから所定数のクロックサイクル後にＲｅａｄＰｔｒＲｓｔ信号をデアサート（例えば低レベルに駆動）してよい。
【００１６】
いくつかの実施態様では、バス・インタフェース５６は、バス・インタフェース５６のオペレーションとホスト・ブリッジ６０のオペレーションとを同期させるために、ＸＣｌｋクロック信号（図３参照）を使用する。この場合、位相同期ループ（ＰＬＬ（phase locked loop））或いは遅延同期ループ（ＤＬＬ（delay locked loop））は、ホスト・ブリッジ６０内に配置してよく、またＸＣｌｋ信号がホストブリッジ６０及びバス・デバイス５４に同期することを保証するためにバス・デバイス５４内にも配置してよい。
【００１７】
ホスト・ブリッジ６０は、ＸＣｌｋ信号に同期した信号であるＸＲＳＴ＃信号（図４参照）がデアサートされた（低レベルに駆動された）後に、バス５２へのデータの供給を開始する。一例として、ホスト・ブリッジ６０は、ＸＲＳＴ＃信号のデアサートの（例えば待ち時間値「２」に対して）２クロックサイクル後にバス５２へのデータの供給を開始してよい。従って、図３，図４及び図７に示されるように、本例においては、もしＸＲＳＴ＃信号がクロックサイクル番号「２」でデアサートされるなら、ホストブリッジ６０はクロックサイクル番号「４」の間にデータを供給し始める。
【００１８】
以上を要約すると、ホスト・ブリッジ６０が（Ｆ１６＿Ｄａｔａ［１５：０］＃信号によって）バス５２へのデータの供給を開始する前に、ＸＲＳＴ＃信号はデアサートされる。ＸＲＳＴ＃信号がデアサートされた後に、リセット論理回路７２は、所定数のクロックサイクル後にＲｅａｄＰｔｒＲｓｔ信号をデアサートしてバス・インタフェース５６にコア回路５８へのデータの供給を開始させる。しかしながら、リセット論理回路７２がＲｅａｄＰｔｒＲｓｔ信号をデアサートする前に、このリセット論理回路７２は、バスインタフェース５６にデータを記憶する目的のために、ＸＲＳＴ＃信号がデアサートされた所定数のクロック信号後にＷｒｉｔｅＰｔｒＲｓｔ信号をデアサートする。こうして、リセット論理回路７２は、ＷｒｉｔｅＰｔｒＲｓｔ信号のデアサートとＲｅａｄＰｔｒＲｓｔ信号のデアサートとの間の時間を調整して選択された待ち時間を設定する。以下において更に説明されるように、バス・インタフェース５６は、バス・インタフェース５６がコア回路５８にデータを提供する前に一時的にデータを記憶するための一つ以上のバッファ（例えば、ＦＩＦＯ（先入れ先出し）（first-in-first-out）メモリ）を備えている。
【００１９】
図７及び図１０を参照して説明すると、いくつかの実施態様では、Ｆ１６＿Ｄａｔａ［１５：０］＃信号（及び、結果として生じるｄｅｌａｙｅｄ＿Ｆ１６Ｄａｔａ［１５：０］＃信号）は、ＸＣｌｋ信号の周波数の約２倍で計時（clock）される。この場合、書き込みトランザクションの間に、ホスト・ブリッジ６０は、ＸＣｌｋ信号のそれぞれのサイクルの前半分の間にＦ１６＿Ｄａｔａ［１５：０］＃信号にダブルワードの前半分（添字「Ｐ」によって記された）を示させ、そしてＸＣｌｋ信号のそれぞれのサイクルの後半分の間にＦ１６＿Ｄａｔａ［１５：０］＃信号にダブルワードの後半分（添字「Ｎ」によって記された）を示させることによって、データを時間多重化する。バス・インタフェース５６によるデータの受信を制御するために、ホスト・ブリッジ６０は、ｐｓｔｂ＃（図５参照）及びｎｓｔｂ＃（図６参照）と呼ばれるストローブ信号（strobe signals）を供給してよい。バス５２は、ｐｓｔｂ＃（図５参照）及びｎｓｔｂ＃（図６参照）を、それぞれ、バス・デバイス５４の付近でｄｅｌａｙｅｄ＿ｐｓｔｂ＃（図８参照）とｄｅｌａｙｅｄ＿ｎｓｔｂ＃（図９参照）にスキューする。次に、バス・インタフェース５６は、バス５２からバスインタフェース５６へデータを計時するために、ｄｅｌａｙｅｄ＿ｐｓｔｂ＃及びｄｅｌａｙｅｄ＿ｎｓｔｂ＃信号を使用する。特に、いくつかの実施態様では、バス・インタフェース５６は、ｄｅｌａｙｅｄ＿ｎｓｔｂ＃信号のそれぞれの負エッジ（negative edge）上でダブルワードの後半を受信して、ｄｅｌａｙｅｄ＿ｐｓｔｂ＃信号のそれぞれの負エッジ上でダブルワードの前半を受信する。以下においてさらに説明されるように、バス・インタフェース５６は、ＤａｔａＯｕｔ［３１：０］（図１３参照）と呼ばれる信号によってコア回路５８に十分なダブルワードを示すことができる。
【００２０】
図１６を参照して説明すると、いくつかの実施態様では、バス・インタフェース５６は、それぞれのダブルワードの後半を受信するように構成されたＮ−ストローブ・サンプル及びキャプチャ論理（N-strobe sample and capture logic）７０と、それぞれのダブルワードの前半を受信するように構成されたＰ−ストローブ・サンプル及びキャプチャ論理（P-strobe sample and capture logic）６８とを備えている。論理回路７０は、受信したデータを記憶するためのＦＩＦＯメモリ８１を含んでよい。この場合、データは、リセット倫理回路７２がＷｒｉｔｅＰｔｒＲｓｔ信号をデアサートした後に、ｄｅｌａｙｅｄ＿ｎｓｔｂ＃信号に従ってバス５２からＦＩＦＯメモリ８１に書き込まれる。リセット論理回路７２は、データがＦＩＦＯメモリ８１から回収または読み出される時期を制御するために選択的にＲｅａｄＰｔｒＲｓｔ信号をデアサートできる。同様に、論理回路６８は、受信したデータを記憶するためのＦＩＦＯメモリ８０を含んでよく、リセット論理回路７２がＷｒｉｔｅＰｔｒＲｓｔ信号をデアサートした後に、適切なデータがｄｅｌａｙｅｄ＿ｐｓｔｂ＃信号に従ってＦＩＦＯメモリ８０に書き込まれる。リセット論理回路７２がＲｅａｄＰｔｒＲｓｔ信号をデアサートすると、データはＦＩＦＯメモリ８０から回収される。
【００２１】
バス・インタフェース５６は、コア回路５８にデータを示す（ＤａｔａＯｕｔ［３１：０］と呼ばれる）信号を供給するマージ・バッファ（merge buffer）６６も含んでよい。マージ・バッファ６６は、論理回路７０からＮＤａｔａＯｕｔ［１５：０］信号、そして論理回路６８からＦａｓｔＤａｔａＯｕｔ［１５：０］信号を受信する。マージ・バッファ６６は、これらの信号を組み合わせて、ＤａｔａＯｕｔ［３１：０］信号によって示される対応するオリジナルのダブルワードを形成する。
【００２２】
図１７を参照して説明すると、いくつかの実施態様では、Ｎ−ストローブ・サンプル及びキャプチャ論理回路７０は、論理回路７０の書き込みポインタ（write pointer）８４によって制御されるようなｄｅｌａｙｅｄ＿Ｆ１６Ｄａｔａ［１５：０］＃信号を受信するＦＩＦＯメモリ８１を含んでよい。この場合、書き込みポインタ８４は、データの次に入ってくるワードを記憶するためのＦＩＦＯメモリ８１のロケーションを選ぶために書き込みイネーブル信号（write enable signal）を供給してよい。論理回路７０は、読み出しポインタ（read pointer）８６も含んでよく、それはＦＩＦＯメモリ８１からワードを回収する目的で選択的に３状態バッファ（tri-state buffers）８８がＦＩＦＯメモリ８１のロケーションを選ぶことを可能にするための読み出しイネーブル信号（read enable signal）を供給する。いくつかの実施態様では、書き込みポインタ８４及び読み出しポインタ８６がＸＲＳＴ＃信号のアサーションによって初期化される時に、書き込みポインタ８４は、読み出しポインタ８６によって示されるローケーションよりも先のＦＩＦＯメモリ８１の一つのローケーションを示すように初期化される。一例として、ＸＲＳＴ＃信号アサーションの間に、読み出しポインタ８６は、ＦＩＦＯメモリ８１のロケーション「０」が３状態バッファ８８を介してフローするのを許してよく、そしてＦＩＦＯメモリ８１のローケーション「１」はデータを受信するためにオープンになる。
【００２３】
いくつかの実施態様では、書き込みポインタ８４は、ｄｅｌａｙｅｄ＿ｎｓｔｂ＃信号の負エッジによって計時され、読み出しポインタ８６は、ＸＣｌｋ信号の負エッジによって計時される。この構成のために、ＲｅａｄＰｔｒＲｓｔ信号がデアサートされた後のＸＣｌｋ信号の最初の負エッジ上で、ＮＤａｔａＯｕｔ［１５：０］信号がＦＩＦＯロケーション数「１」に記憶されたワードを示すように、読み出しポインタ８６はＦＩＦＯロケーション数「１」に増加する。ＸＣｌｋ信号の次の正エッジ上で、そのワードはマージ・バッファ６６の１６の最下位ビットに記憶される。
【００２４】
図１８を参照して説明すると、Ｐ−ストローブ・サンプル及びキャプチャ論理回路６８は、以下に説明するような若干の主要な違いはあるが、論理回路７０と類似の設計を有する。特に、論理回路７０は、ｄｅｌａｙｅｄ＿ｐｓｔｂ＃信号の負エッジ上で計時される書き込みポインタ９０（ＦＩＦＯメモリ８０用のもの）を含んでいる。読み出しポインタ９２（ＦＩＦＯメモリ８０用のもの）は、ＸＣｌｋ信号の正エッジ上で計時される。ＦＩＦＯメモリ８０は、ｄｅｌａｙｅｄ＿Ｆ１６Ｄａｔａ［１５：０］＃信号を受信し、読み出しポインタ９２によって指し示される（ＦＩＦＯメモリ８０における）ロケーションは、３状態バッファ９４に結合される。次に、３状態バッファ９４はＦａｓｔＤａｔａＯｕｔ［１５：０］信号を供給し、そしてマージ・バッファ６６は、ＦａｓｔＤａｔａＯｕｔ［１５：０］信号の論理状態を取得してＤａｔａＯｕｔ［３１：１６］信号を形成する。論理回路７０のポインタに類似して、読み出しポインタ９２の可動化（enablement）は、ＲｅａｄＰｔｒＲｓｔ信号によって制御され、そして書き込みポインタ９０の可動化は、ＷｒｉｔｅＰｔｒＲｓｔ信号によって制御される。
【００２５】
図１９を参照して説明すると、リセット論理回路７２は、連続的に一緒に結合して所定数のクロックサイクルだけＸＲＳＴ＃信号を遅らせるための遅延チェーンを構成するＤ型フリップ・フロップ１００（例えば１００ａ，１００ｂ，１００ｃ，１００ｄ及び１００ｅ）を含んでいる。それぞれのフリップ・フロップ１００は、ＸＣｌｋ信号によって計時される。フリップ・フロップ１００ａは、反転入力端子（inverting input terminal）においてＸＲＳＴ＃信号を受信して、そしてＷｒｉｔｅＰｔｒＲｓｔ信号を供給する。フリップ・フロップ１００ｂ，１００ｃ，１００ｃ及び１００ｄの出力端子は、マルチプレクサ１０４の異なった入力端子に接続される。マルチプレクサ１０４のセレクト入力端子は、例えば、選択された待ち時間値を示すためにコア回路５８によって（例えばバス５２を介して）提供されるＬａｔｅｎｃｙＭｏｄｅＳｅｌｅｃｔ［１：０］信号と結合される。この場合、マルチプレクサ１０４の出力信号は、ＬａｔｅｎｃｙＭｏｄｅＳｅｌｅｃｔ［１：０］信号によって選択された多数のクロックサイクルだけ遅延させられたＸＲＳＴ＃信号を示す。次に、マルチプレクサ１０４の出力信号は、ＲｅａｄＰｔｒＲｓｔ信号を供給するＤ型フリップ・フロップ１０２によって受信される。
【００２６】
図２１を参照して説明すると、いくつかの実施態様では、もしＦＩＦＯメモリ８０の読み出し待ち時間がコア回路５８が許容できる値よりも大きいなら、Ｐ−ストローブ・キャプチャ及びサンプル論理回路６８はＰ−ストローブ・キャプチャ及びサンプル論理回路１１０に置き換えられてよい。論理回路１１０は、以下に指摘されるような違いはあるが、論理回路６８と類似の設計を有する。特に、論理回路１１０は、３状態バッファ９４の出力端子とマージ・バッファ６６の入力端子との間に結合されるサンプル・バッファ１１２を含んでいる。サンプルバッファ１１２はＸＣｌｋ信号によって計時される。望ましい待ち時間を実現する目的のために、（読み出しポインタ９２と置き換わる）読み出しポインタ１１４は、初期化された読み出しポインタ９２より一つ先のＦＩＦＯロケーションを示すように初期化される。すなわち、読み出しポインタ１１４及び書き込みポインタ９０は、初期化されると、同じロケーションを示す。この実施態様では、バス５２からのデータライン及びストローブラインは、サンプル・バッファ１１２のセットアップ時間と一致する。
【００２７】
いくつかの実施態様では、Ｎ−ストローブ・キャプチャ及びサンプル論理回路７０も、ＦＩＦＯメモリ８１に付随する待ち時間問題を補償するために、サンプル・バッファ１１２と類似の設計のサンプル・バッファを使用してよい。
【００２８】
上述のように、いくつかの実施態様では、ホスト・ブリッジ６０は、バス・デバイス５４のコア回路５８によって提供される選択された待ち時間を獲得するためのラッチ（latch）を備えてよい。この場合、コア回路５８は適切な待ち時間を選ぶためにリセット論理回路７２にＬａｔｅｎｃｙＭｏｄｅＳｅｌｅｃｔ［１：０］信号を供給する。図１７に戻るが、これを実現するために、読み出しポインタ８６及び書き込みポインタ８４は、ＦＩＦＯメモリ８１における同じローションを指し示すようにリセットの間に初期化される。このように、リセットの間に、待ち時間を選択するために拡張バス・デバイス５９によって供給された信号は、ＦＩＦＯメモリ８１を通って、ホスト・ブリッジ６０のコア回路に流れる。次に、ホスト・ブリッジ６０のコア回路は、リセット論理回路７２がＷｒｉｔｅＰｔｒＲｓｔ信号をデアサートする時に、これらの信号の論理状態をラッチする。
【００２９】
いくつかの実施態様では、リセットの終わりに、書き込みポインタ８４は読み出しポインタ８６よりも一つ先のＦＩＦＯメモリロケーションを示す。これを起こさせるために、リセット論理回路７２は、図２２に図示されたリセット論理回路７３に置き換えられてよい。このリセット論理回路７３は、マルチプレクサ１０４の出力端子とフリップ・フロップ１０２の入力端子との間に結合された追加のＤ型フリップ・フロップ１３０を論理回路７３が含むことを除けば、リセット論理回路７２と類似の設計を有する。フリップ・フロップ１３０は、ＸＣｌｋ信号によって計時される。この場合、フリップ・フロップ１３０は、ＲｅａｄＰｔｒＲｓｔ信号をＸＣｌｋ信号の１サイクル分だけ遅らせて、読み出しポインタ８６がリセット状態から脱する前に、書き込みポインタ８４が読み出しポインタ８６によって示されたロケーションより一つ先のロケーションを示すことを可能にする。
【００３０】
上記フロースルー（flow-through）・スキームのタイミングは、図２３，図２４，図２５，図２６及び図２７に示されている。リセット論理回路７３がＷｒｉｔｅＰｔｒＲｓｔ信号（図２３参照）をアサートする間に、書き込みポインタ８４は、ＦＩＦＯメモリ８１におけるロケーション「０」を指し示す信号（図２５に示すようなＰＷｒｉｔｅｐｏｉｎｔｅｒ［３：０］と呼ばれる信号）を供給する。同じように、リセット論理回路７３がＷｒｉｔｅＰｔｒＲｓｔ信号をアサートする間に、読み出しポインタ８６（図１７参照）はＦＩＦＯメモリ８１におけるロケーション「０」を指し示す信号（図２６に示すようなＰＲｅａｄＰｏｉｎｔｅｒ［３：０］と呼ばれる信号）を供給する。ＷｒｉｔｅＰｔｒＲｓｔ信号がアサートされる時も、バス・デバイス５４は、バス５２の所定ラインの論理レベルを設定して例えば図２７に示されたような２クロックサイクルの待ち時間といった待ち時間値を選択する。リセット論理回路７３がＷｒｉｔｅＰｔｒＲｓｔ信号をデアサートした後に、読み出しポインタ８６は、書き込みポインタ８４より１クロックサイクルだけ長くリセットが抑えられる。その結果、ＰＲｅａｄＰｏｉｎｔｅｒ［３：０］信号は、ＰＷｒｉｔｅＰｏｉｎｔｅｒ［３：０］信号がＦＩＦＯメモリロケーション「１」を示した１クロックサイクル後に、ＦＩＦＯメモリロケーション「１」を示す。
【００３１】
図２に戻って説明すると、上記回路の他に、コンピュータシステム５０は、ホストバス１５８に接続されたプロセッサ１５４を備えている。本明細書において、用語「プロセッサ」は、一般に、一つ以上の中央処理装置（ＣＰＵ）、マイクロコントローラ或いはマイクロプロセッサ（例えば、Ｘ８６マイクロプロセッサ（X86 microprocessor），ペンティアムマイクロプロセッサ（Pentium microprocessor）或いはアドバンストＲＩＳＣコントローラ（（Advanced RISC Controller）（ＡＲＭ））を意味する。さらに、用語「コンピュータシステム」は、２，３の例としてデスクトップコンピュータ，ラップトップコンピュータ，電気器具或いはセットトップボックス等のようなタイプのプロセッサベースのシステムを意味する。このように、本発明は、例示されたコンピュータシステム５０に限定されることは意図されておらず、コンピュータシステム５０は、本発明の多くの実施態様のほんの一例である。
【００３２】
ホスト・バス１５８は、ホスト・ブリッジ６０によってアクセレレーテッドグラフィックスポート（ＡＧＰ（Accelerated Graphics Port））・バス１６２に接続されてよい。ＡＧＰは、米国カリフォルニア州サンタクララに所在するインテル社によって１９９６年７月３１日に公表されたアクセレレーテッドグラフィックスポートインタフェース仕様書改訂版１．０に詳細に記述されている。ＡＧＰバス１６２は、例えば、ディスプレイ１６５を制御するビデオコントローラ１６４に接続されていてよい。ホスト・ブリッジ６０は、ＡＧＰバス１６２とホスト・バス１５８をメモリ・バス１６１に結合している。また、メモリ・バス１６１は、システム・メモリ１５６に結合されている。
【００３３】
ホスト・ブリッジ６０は、（ハブリンク１６６を介して）Ｉ／Ｏ拡張バス１７０に接続される他のブリッジ又は入力／出力（Ｉ／Ｏ）ハブ１６８に結合されている。また、Ｉ／Ｏハブ１６８は、例えばＣＤ−ＲＯＭドライブ１８２やハードディスク装置１８４に接続されてよい。Ｉ／Ｏ拡張バス１７０は、例えば、フロッピーディスク装置１７６の動作を制御すると共にキーボード１７８やマウス１８０から入力データを受信するＩ／Ｏコントローラ１７４に接続されてよい。
【００３４】
本発明は、限定された数の実施態様に関して開示されたが、当業者であれば、本開示からヒントを得て、多数の修正や変更を考えつくことができるであろう。請求項の記載は、本発明の技術的思想とその範囲に属するそうした全ての修正や変更をカバーするように意図されている。
【図面の簡単な説明】
【図１】  従来技術によるコンピュータシステムの概略図である。
【図２】  本発明の一実施態様におけるコンピュータシステムの概略図である。
【図３乃至図１５】  本発明の一実施態様における図２のコンピュータシステムの信号のタイミング図である。
【図１６】  図２のコンピュータシステムのバス・デバイスのバス・インタフェース回路の概略図である。
【図１７及び図１８】  図１６のバス・インタフェースの論理回路の概略図である。
【図１９】  本発明の異なった実施態様における図２のコンピュータシステムのリセット回路の概略図である。
【図２０】  図２のコンピュータシステムのバスに関する異なった待ち時間値を選択するための信号を示した図表である。
【図２１】  本発明の一実施態様における図２のコンピュータシステムの論理の概略図である。
【図２２】  本発明の異なった実施態様における図２のコンピュータシステムのリセット回路の概略図である。
【図２３乃至図２７】  本発明の一実施態様における図２のコンピュータシステムの信号を示したタイミング図である。
【図１】
0003686834.tif 000002
【図２】
0003686834.tif 000003
【図３−１５】
0003686834.tif 000004
【図１６】
0003686834.tif 000005
【図１７】
0003686834.tif 000006
【図１８】
0003686834.tif 000007
【図１９】
0003686834.tif 000008
【図２０】
0003686834.tif 000009
【図２１】
0003686834.tif 000010
【図２２】
0003686834.tif 000011
【図２３−２７】
0003686834.tif 000012