(57)【特許請求の範囲】
【請求項１】
システムにおいて、
中央処理ユニット（１４）と、
バス（３２）と、
回路カード（８０７）を受容するためのコネクタであって、複数の外部接続端子を備えているコネクタ（３４）と、
結合されたときに、コネクタ（３４）からの回路カード（８０７）の抜き取りを阻止するよう構成されたクランプと、
クランプの結合状態を監視し、かつ、クランプの結合状態に基づいてコネクタ（３４）への電力の供給を制御する制御回路（４３）と、
制御回路（４３）で監視したクランプの結合状態に基づいて、クランプが結合されている場合にバス（３２）をコネクタ（３４）に接続し、クランプが結合されていない場合にバス（３２）をコネクタ（３４）から分離する接続／分離回路と
からなり、
接続／分離回路は、バス（３２）のクロック・ライン及び他のラインを遮断する手段であって、クロックが遮断されかつ電力供給が遮断される前に、バスの他のラインが遮断されるようにする手段を備えている
ことを特徴とするシステム。
【請求項２】
コンピュータ・システム（１０）であって、請求項１記載のシステムを備えていることを特徴とするコンピュータ・システム。
【請求項３】
請求項２記載のコンピュータ・システムにおいて、接続／分離回路は、中央処理ユニット（１４）に対して割り込み要求を提供して、結合状態の変更時点を通知するよう構成されていることを特徴とするコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の詳細な説明】
【発明の属する技術分野】
本発明は拡張カードの着脱時の電力制御機能を備えてシステム及び方法に関する。
【０００２】
【従来の技術】
一般にコンピュータ・システムは拡張スロットを具備しており、これに拡張カードを受容し、拡張カードをそのコンピュータ・システムの拡張バスに電気的に結合する。拡張バスには、ＩＳＡ（Industry Standard Architecture）バス、ＥＩＳＡ（拡張業界標準アーキテクチャ、Extended Industry Standard Architecture）バス、ＰＣＩ（Peripheral Component Interconnect）バス等、各種のタイプがある。
【０００３】
【発明の概要】
概して本発明は１つの面において、回路カードに対するコネクタ及び結合時に回路カードがコネクタから脱離するのを選択的に防止する形状のクランプを備えたシステムを特徴とする。このシステムは、クランプの結合状態を監視し、且つクランプの結合状態に基づいてそのコネクタへの電力供給を調整するために接続された回路を有する。
本発明の実施では、次の１つまたは２つ以上の機能が含まれる。システムは通信リンクを含み、回路はクランプの結合に基づいて通信リンクのコネクタへの結合を調整するために更に接続される。その回路は、スイッチの位置の表示を供給するクランプによって作動される該スイッチと、その表示が所定の期間同じ位置を示すときにその結合状態を更新するために接続される回路とを含む。
本発明は別の面において、中央処理装置（ＣＰＵ）、回路カードに対するコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたシステムにおいて用いる方法を特徴とする。この方法はクランプの結合状態の監視及びその結合状態の表示のＣＰＵへの通知が含まれる。
本発明の実施では、次の１つまたは２つ以上の機能が含まれる。本発明は、結合状態が変化した場合にその旨を通知すべくＣＰＵに対する割り込み要求を行う機能を含む。この方法は、ＣＰＵがアクセスできるメモリに結合状態を記憶することを含む。この方法は、コネクタの電力状態信号を監視すること及びその電力状態信号の表示をＣＰＵに与えることを含む。この方法は、クランプが結合しているときにコネクタに電力を供給すること、及びクランプが結合されていないときにコネクタへの電力供給を停止することを含む。この方法は、コネクタが電力の供給を受けるべくＣＰＵによってイネーブルされているかを判断することを含み、該供給するステップは、コネクタが電力の供給を受けるべくＣＰＵによってイネーブルされているときにのみ、電力が供給される。この方法は、クランプが結合したときにバスをコネクタに結合することと、クランプが結合されていないときにバスをコネクタから電気的に切り離すことを含む。バスの切り離しに関しては、クロック・ラインとバスのその他のラインを接続解除することを含み、バスのその他のラインは、クロック・ラインが接続解除され且つ電力が除かれる前に接続解除される。電気的結合に関しては、クロック・ラインとバスのその他のラインを接続することを含み、バスのその他のラインは、電力が除かれ且つクロック・ラインが接続解除された後に接続される。
本発明は更に別の面において、ＣＰＵ、回路カードに対するコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたコンピュータ・システムを特徴とする。このコンピュータ・システムは、また、レバーの結合状態を監視し且つその結合状態をＣＰＵに示すために接続された回路を有する。
本発明の実施例では、次の１つまたは２つ以上の機能が含まれる。結合状態が変化した場合に、その旨を通知すべくＣＰＵに割り込み要求を行うように回路を構成することができる。この回路は、ＣＰＵがアクセスでき、結合状態の表示を記憶するために接続されたバッファを含むことができる。ＣＰＵは、電力を受けるためにコネクタを又は電力を受けるためにバス（例えば、ＰＣＩバス）を選択的にイネーブルにすることができ、更にこのコンピュータ・システムは、ＣＰＵが電力を受けるためにコネクタをイネーブルしたか又はバスをイネーブルしたかを示すために接続されたバッファを含む。電力を供給するために接続されている回路は、ＣＰＵがコネクタを電力を受けるようにイネーブルした場合にのみ給電することができ、また、ＣＰＵがコネクタをイネーブルしてバスへ結合されるようにした場合のみ、バスを結合することができる。
本発明は更に別の面において、バス、そのバスに結合される回路カードのためのコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたコンピュータ・システムを特徴とする。このコンピュータ・システムは、クランプの結合状態を監視し、クランプの結合状態に基づいて、コネクタへの配電を調整するために接続された回路を有する。
本発明の利点として、次のものを挙げることができる。コンピュータ・システムがパワー・アップのままの状態で拡張スロットの挿入と抜き取りが可能である。拡張カードは、該カードがスロッから取り外される前にパワー・ダウンされる。拡張カードのパワー・アップやパワー・ダウンは、ソフトウェアによって選択的に行うことができる。拡張カードを固定するレバーの動きを検知した場合に、そのレバーの動きを検証し、それによって拡張カードの不要なパワー・ダウンが最小限とされる。パワー・アップ及びパワー・ダウンのシーケンスの段階において、制御回路が拡張バスをコントロールすることによりバスの保全を図る。
【０００４】
【発明の実施の態様】
以下の説明において、「＃」、「＿」、または「！」で始まる、あるいは終わるすべてのシグナル・ニーモニックは、反転された論理状態を意味する。
図１に示すように、コンピュータ・システム１０は、１次ＰＣＩバス２４を含み、これが共通のデザイン２６であるブリッジ・チップ２６ａ及びブリッジ・チップ２６ｂに結合されている。ブリッジ・チップ２６ａは、ケーブル３１を介してブリッジ・チップ４８ａに結合されており、ブリッジ・チップ２６ｂは、ケーブル２８を介してブリッジ・チップ４８ｂに結合されている。ブリッジ・チップ４８ａ及び４８ｂは共通のデザイン４８でありかつデザイン２６とも共通であるが、デザイン２６はアップストリーム・モードであり、デザイン４８はダウンストリーム・モードである点が異なる。
ＰＣＩバス２４は、システム・コントローラ／ホスト・ブリッジ回路１８を通じてローカル・バス２２とインタフェースされる。システム・コントローラ／ホスト・ブリッジ回路１８は更に、システム・メモリ２０へのアクセスを制御し、システム・メモリ２０もまた、ＣＰＵ１４及びレベル２・キャッシュ（Ｌ２キャッシュ）１６とともにローカル・バス２２に結合されている。
ＰＣＩ−ＥＩＳＡ（Extended Industry Standard Architecture）ブリッジ１５は、ＰＣＩバス２４をＥＩＳＡバス１７にインタフェースしている。キーボード・コントローラ２１及び読み出し専用メモリ（ＲＯＭ）２３は、両方ともＥＩＳＡバス１７に結合されている。ＥＩＳＡバス１７に接続されている不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）７０の保持している情報は、コンピュータ・システムの電源を切っても揮発しない。オートマチック・サーバ・リカバリ（ＡＳＲ、automatic server recovery）タイマ７２は、コンピュータ・システムの不活性動作を監視する。システムがロックアップしたときには、ＡＳＲタイマ７２は約１０分後に切れる。キーボード・コントローラ２１は、キーボード１９を監視して、押下されたキーを検出する。
【０００５】
図２を参照する。ブリッジ・チップ４８ａは、ＰＣＩバス３２ａへのインタフェースを備え、ブリッジ・チップ４８ｂは、ＰＣＩバス３２ｂへのインタフェースを備える。ＰＣＩバス３２ａ及び３２ｂは、デザイン３０が共通の２つの拡張ボックス３０ａ及び３０ｂ上に存在する。各拡張ボックス３０には６つのホットプラグ・スロット３６（３６ａ−ｆ）があり、これらは通常の拡張カード８０７（図２７Ａ参照）を電気的機械的に接続することができる。拡張ボックス上の１つのスロット３４は、ブリッジ・チップ２６を持ったカード４６を接続する。各ホットプラグ・スロット３６には関連したスイッチ回路４１があり、これによってスロット３６とＰＣＩバス３２間の接続及び切断が行われる。６つの機械的レバー８０２を用いて（クローズまたはラッチされている場合）、カード８０７を対応するスロットに選択的に固定する。これに関しては、本願と同日付で出願された「電子装置におけるカードの固定（Securing a Card in an Electronic Device）」と題された米国特許出願で更に詳しく説明されており、これをここにおいて援用する。各拡張ボックス３０は、レジスタ５２及び８２を有し、これらによりレバー８０２及び拡張ボックス３０の状態信号を監視し、更に、レジスタ８０によって、スロット３６とＰＣＩバス３２間の接続及び切断を制御する。
図３を参照する。ブリッジ・チップは、２６と４８のペアで使用すべく設計されており、それにより、１次ＰＣＩバス２４と２次ＰＣＩバス３２との間にＰＣＩ−ＰＣＩブリッジを形成する。プログラミング・モデルは、２つの階層ブリッジのモデルである。システム・ソフトウェアから見れば、ケーブル２８は厳密に１つのデバイス、即ち、ダウンストリーム・ブリッジ・チップ４８が挿入されているＰＣＩバスである。これにより、１次及び２次バスを結合する２チップＰＣＩ−ＰＣＩブリッジのコンフィギュレーション（環境設定）が大幅に単純化される。ＣＰＵ１４に近接しているブリッジ・チップ２６は、１次ＰＣＩバス２４をケーブル２８に結合する。第２のＰＣＩ−ＰＣＩブリッジ４８は、拡張ボックス３０内にあり、ケーブル２８を２次ＰＣＩバス３２に結合する。モード・ピンＵＰＳＴＲＥＡＭ＿ＣＨＩＰの信号は、そのブリッジ・チップがアップストリーム・モードとダウンストリーム・モードのいずれで動作するかを決定する。バス・モニタ１０６やＳＩＯ５０内のホットプラグ・ロジックのような一部の非ブリッジ機能は、拡張ボックス３０でのみ用いられ、アップストリ―ム・モードのチップ２６では機能しない。
【０００６】
ブリッジ・チップ２６内のクロック・ジェネレータ１０２は、１次ＰＣＩバス２４上のクロックＰＣＩＣＬＫ１に基づいてクロックを生成し、生成されたクロックの１つは、ケーブル２８を経由してダウンストリームのブリッジ・チップ４８のクロック・ジェネレータ１２２に供給される。クロック・ジェネレータ１２２は、１次ＰＣＩバス２４と同じ周波数で拡張ボックス３０においてＰＣＩクロックを生成して駆動する。その結果、両方のブリッジ・チップ２６及び４８が同じ周波数で動作する。ダウンストリームのブリッジ・チップ４８は、ケーブル２８の遅延分だけアップストリ―ムのブリッジ・チップ２６より相（フェーズ）が遅れる。データがケーブル２８から取り出される時点におけるアップストリ―ムのブリッジ・チップ２６の非同期境界によって、相の遅延値は制限されない（従って、ケーブルの長さは任意である）。唯一の要件は、２つのブリッジ・チップの周波数が等しいことである。
各ブリッジ・チップのコア・ロジックは、ブリッジのロジック・ブロック（１００または１２０）であって、これに含まれるものとしては、それぞれのＰＣＩバス上でマスタとして働くべきＰＣＩマスタ（１０１または１２３）、それぞれのＰＣＩバス上でスレーブ・デバイスとして働くべきＰＣＩターゲットあるいはスレーブ（１０３または１２１）、対応するブリッジ・チップのコンフィギュレーション情報が入るコンフィギュレーション・レジスタ（１０５または１２５）、及び１次ＰＣＩバスと２次ＰＣＩバス３２間のトランザクションに関連するデータが待ち行列（キュー）に入れられて管理されている、数個の待ち行列が入っている待ち行列ブロック（１０７または１２７）がある。アップストリ―ムのブリッジ・チップ２６とダウンストリームのブリッジ・チップ４８間で転送されるデータは、それぞれブリッジ・チップ２６及び４８内のケーブル・インタフェース１０４及び１３０でバッファ記憶される。
【０００７】
各ブリッジ・チップには、割り込み送信ロジックも含まれている。割り込みは８つ存在し、そのうち６つは２次バス・スロットから、１つはＳＩＯ回路５０から、そしてもう１つはダウンストリームのブリッジ・チップ４８からのものである。ダウンストリームのチップ４８において、割り込みは、割り込み受信ブロック１３２で受け取られ、シーケンシャル・タイム・スライスによるシリアル・ストリームとして、ケーブル２８を送られる。アップストリ―ムのブリッジ・チップ２６においては、割り込みを割り込み出力ブロック１１４が受け取り、そして、その割り込みを割り込みコントローラに送る。
ＳＩＯ回路は、制御信号を出してＬＥＤを点灯し、リセットをコントロールし、選択的にスロット３６をバス３２に接続する。このＳＩＯ回路には、レバー８０２の結合状態及び各スロット３６のカード８０７の状態を読み取るロジックも含まれている。
ブリッジ回路２６は、拡張ボックス３０における割り込みもサポートし、更に、マルチチャネル割り込みコントローラへのプロプラエタリ（proprietary）・インタフェースをもってホスト・システムのスロットにインストールされたときは、各割り込みの状態をシリアル・ストリ―ムで送出する。また、ブリッジ回路２６は、ホスト・システムの標準スロットにインストールされた場合、標準のＰＣＩ  ＩＮＴＡ、ＩＮＴＢ、ＩＮＴＣ、及びＩＮＴＤ信号を駆動するように構成することもできる。
各ブリッジ・チップには、最大７つのバス・マスタへのアクセスを制御するためにＰＣＩアービタ（１１６または１２４）も含まれている。アップストリ―ムのブリッジ２６がスロットにインストールされると、アップストリ―ムのブリッジ・チップ２６内のＰＣＩアービタがディスエーブルされる。各ブリッジ・チップには、ＥＥＰＲＯＭ、温度センサ等のデバイスと通信するためのＩ2Ｃコントローラ（１０８、１２６）と、テスト・サイクルを実施するためのＪＴＡＧマスタ（１１０、１２８）と、バスの利用度や効率、及びそのブリッジ・チップのプリフェッチ・アルゴリズムの効率を測定するためのバス・モニタ（１０６、１２７）と、バス履歴や状態ベクトルの情報を記憶するため及びバス・ハング状態をＣＰＵ１４に通知するためのバス・ウオッチャ（１１９、１２９）とが含まれている。各ブリッジ・チップには、使用されないためディスエーブルされているブロックがいくつか存在する。アップストリ―ムのブリッジ・チップ２６では、バス・ウオッチャ１１９、ＳＩＯ１１８、ＰＣＩアービタ１１６、及びバス・モニタ１０６がディスエーブルされている。更に、アップストリ―ムのチップ２６の割り込み受信ブロック１１２及びダウンストリームのチップ４８の割り込み出力ブロック１３４が、ディスエーブルされている。
【０００８】
キュー・ブロックの概要
図４を参照する。待ち行列ブロック１０７及び１２７は、１次ＰＣＩバス２４（アップストリ―ム・チップ）、または２次ＰＣＩバス３２（ダウンストリーム・チップ）とケーブル・インタフェース１３０との間を流れるトランザクションを管理する。（以降は特筆しない限り、ダウンストリームのブリッジ・チップは、アップストリ―ムのチップと動作が同じであることを前提にして言及する。）待ち行列ブロック１２７にはケーブル・デコーダ１４６があり、これにより、２次ＰＣＩバス３２上で完了すべきトランザクションを、ケーブル・インタフェース１３０から受け取る。トランザクションをデコードした後、そのデコーダ１４６は、トランザクションを、そのトランザクションに含まれていたすべての情報と一緒に、３つの待ち行列１４０、１４２、及び１４４のうちの１つに入れる。各待ち行列には数個のトランザクション・バッファが存在し、それらの各々が１つのトランザクションを記憶し、従って、複数のトランザクションを同時に処理することができる。
最初の待ち行列、即ち、ポステド（posted）・メモリ書き込み待ち行列（ＰＭＷＱ）１４０は、ＣＰＵが２次バス３２上での各サイクルの実行に必要なすべての情報とともに、１次バス上に出したポステド・メモリ書き込みサイクルを記憶する。ＰＭＷＱ１４０は、４つのトランザクション・バッファを持ち、それらの各々が最大８つのキャッシュ・ライン（２５６バイト）のデータを有する１つのポステド・メモリ書き込みトランザクションを保持している。状況によっては、８つのキャッシュ・ラインを超えるデータを有するポステド・メモリ書き込みトランザクションは、下に述べるように後続の１つまたは２つ以上のバッファにオーバーフローすることがある。
２番目の待ち行列である遅延された要求待ち行列（遅延要求待ち行列）（ＤＲＱ）１４２は、ＣＰＵが２次バス３２上での各トランザクションの実行に必要なすべての情報とともに１次バス上に出した遅延された要求トランザクション（遅延要求トランザクション）（即ち、メモリ読み出し（ＭＲ）要求、メモリ読み出しライン（ＭＲＬ）及びメモリ読み出しマルチプル（ＭＲＭ）要求のような遅延された読み出し要求（遅延読み出し要求）（ＤＲＲ）と、ダウンストリーム・チップにおける入出力（Ｉ／Ｏ）読み出し／書き込みやコンフィギュレーション（ｃｏｎｆｉｇ、コンフィグ）読み出し／書き込みを記憶する。ＤＲＱ１４２は、３つのトランザクション・バッファを持ち、それらの各々が遅延された書き込みのために、１つのダブル・ワード、つまり「ｄｗｏｒｄ」のデータを保持することができる。
【０００９】
３番目の待ち行列である遅延された完了待ち行列（delayed completion queue、遅延完了待ち行列）（ＤＣＱ）１４４は、２次バス３２上で生成された遅延要求トランザクションに応答してアップストリ―ム・チップが供給する遅延された完了情報（遅延完了情報）を記憶する。遅延読み出し要求については、対応する完了情報に、起動デバイスが要求した読み出しデータ及び読み出し状態（ステータス）（即ち、ターゲット・アボートに関してパリティ・エラーが発生したか否かの表示）が入っている。遅延された書き込みトランザクション（遅延書き込みトランザクション）用に戻される遅延完了情報は、遅延読み出し要求のために返されるそれと同じであり、異なっているのは遅延された書き込みに対しては返されるデータが無い点である。Ｉ／Ｏ及びコンフィグレーション読み出し／書き込みは、ダウンストリームのバス上でのみ発生するので、３つのトランザクションのうちの１つに対応する遅延完了情報は、アップストリ―ムのＤＣＱだけに入っている。ＤＣＱ１４４は８つの完了バッファを持ち、それらの各々が、単一の遅延された要求について最大８キャッシュ・ラインの完了情報を保持することができる。完了情報に加えて、各完了バッファにはその情報を生成した遅延された要求のコピーが入っている。遅延された読み出しトランザクション（遅延読み出しトランザクション）については、ターゲットのデバイスがＤＣＱ１４４にデータの供給を停止する前に要求側デバイスが要求したデータの検索を開始すれば、１次バス２４と２次バス３２の間にデータの「ストリ―ム」を確立することができる。状況によっては、要求側デバイスがＤＣＱ１４４の対応するバッファから要求したデータをすべて検索するときに、ＤＣＱ１４４が自動的に更なるデータを検索又は「プリフェッチ」する。ストリーミングと自動プリフェッチについては、下に詳述する。
待ち行列−ＰＣＩ間インタフェース（ＱＰＩＦ）１４８は、待ち行列１４０、１４２及び１４４からＰＣＩバス３２へ、またＰＣＩバス３２からＤＣＱ１４４へ及びケーブル・インタフェース１３０を経由してアップストリ―ム・チップへ流れるトランザクションを管理する。ＱＰＩＦ１４８は、「マスタ」モードに入り、ＰＭＷＱ１４０及びＤＲＱ１４２からのポステド・メモリ書き込みと遅延要求トランザクションとを、２次バス上で実行する。ポステド・メモリ書き込み及び遅延要求トランザクションの両方の実行に関して、ＱＰＩＦ１４８は一定の条件が満たされた場合、１キャシュ・ラインに満たないデータに係るようなトランザクション（即ち、メモリ書き込み（ＭＷ）あるいはメモリ読み出し（ＭＲ）トランザクション）を１あるいはそれ以上のキャシュ・ラインが求められるトランザクション（即ち、メモリ書き込み及びインバリデイト（無効化）（ＭＷＩ）トランザクションあるいはメモリ読み出しライン（ＭＲＬ）又はメモリ読み出しマルチプル（複数）（ＭＲＭ）トランザクション）に「昇格」させる。さらにＱＰＩＦ１４８は、単一キャシュ・ラインのデータに係る読み出しトランザクション（即ち、ＭＲＬトランザクション）を、複数キャシュ・ラインのデータに係るトランザクション（即ち、ＭＲＭトランザクション）に変換することができる。またＱＰＩＦ１４８は、キャシュ・ラインの途中から始まるようなＭＲＬやＭＲＭトランザクションについては、そのキャシュ・ライン全体を読み取ってデータの要求されていない部分を廃棄することによって、それらを「訂正」する。下に詳述するトランザクションの昇格及び読み出しの訂正によって、メモリ・デバイスからのデータ検索に要する時間が短縮され、システム効率が向上する。
【００１０】
ＱＰＩＦ１４８は「スレーブ」モードに入り、要求しているＰＣＩデバイスにＤＣＱ１４４からのデータを供給し、あるいはＰＣＩバス３２からのトランザクションをＤＣＱ１４４へ、またケーブルを介してアップストリ―ムのチップへ送る。ＱＰＩＦ１４８がバス３２からポステド書き込みトランザクションを受け取った場合、トランザクション・カウンタ１５９のグループのうちの対応する１つが、下に述べるように、他方のブリッジ・チップのＰＭＷＱが一杯になっていない旨の表示をすれば、ＱＰＩＦ１４８はそのトランザクションをアップストリ―ム・チップに転送する。ＱＰＩＦ１４８は、遅延された要求（遅延要求）を受け取った場合、まずその要求をＤＣＱ１４４に転送してトランザクションが既にＤＣＱ内に入っているかを確かめ、もしそうであれば、対応する遅延完了情報がＤＣＱ１４４に返送されているかどうかを確認する。遅延完了情報がそのＤＣＱ内にあれば、その情報は要求しているデバイスに供給され、そのトランザクションは終了される。その要求が既に待ち行列に繋がっていても遅延完了情報がまだ返送されていなければ、要求デバイス（要求するデバイス）は再試行され、そのトランザクションはＰＣＩバス３２上で終了される。その要求が未だ待ち行列に繋がっていなければ、ＤＣＱ１４４がそのトランザクション用に完了バッファを予約し、ＱＰＩＦ１４８は、対応するトランザクション・カウンタ１５９が他方のブリッジ・チップが一杯になっていない旨を表示する限り、ケーブル・インタフェース１３０を介してそのトランザクションをアップストリ―ムのチップに転送する。
ＤＣＱ１４４が、そのバッファの１つに要求デバイス用のデータが入っているがそれが現在のトランザクションにおいて要求されているデータと異なっていると判断すれば、そのバッファをフラッシュして、要求マスタによる無効なデータの受け取りを防止する。バッファはプリフェッチ・データ（即ち、要求デバイスがそのデータの幾らかを検索した後にバッファに残されているデータ、もしくはそのデバイスによって具体的に要求されなかったデータ）が入っているとフラッシュされるが、完了データ（即ち、それを検索するために未だ戻っていない、１つのデバイスが具体的に要求しているデータ）が入っている場合は、フラッシュされない。バッファに完了データが入っていて、要求デバイスがそのバッファを「ヒット」しない要求を出力すれば、ＤＣＱ１４４はそのデバイスを「マルチスレッドの（multi-threaded）」デバイス（即ち、１つよりも多いトランザクションを一度に維持できるデバイス）としてタグ付けし、新しい要求に備えて、別の完了バッファを割り当てる。バッファのフラッシュ及び複数バッファの割り当ての手法（スキーム）については、下に詳述する。
待ち行列ブロック１２７のマスタ・サイクル・アービタ（ＭＣＡ）１５０は、ＰＣＩブリッジ・アーキテクチャ仕様、バージョン２．１（PCI Bridge Architecture Specification, Version 2.1）で述べているように、ポステド・メモリ書き込み、遅延要求、及び遅延された完了トランザクション（遅延完了トランザクション）の間の標準の序列制約条件を維持する。これらの制約条件では、バス・サイクルが強い書き込み序列を保ち、且つデッドロックが発生しないことが求められる。従って、ＰＭＷＱ１４０におけるポステド・メモリ書き込みトランザクション及びＤＲＱ１４２における遅延要求トランザクションのＰＣＩバス３２上での実行順序は、ＭＣＡ１５０が決定する。さらにＭＣＡ１５０は、ＤＣＱ１４４内に記憶されている遅延完了情報の利用可能性を制御する。これらの規則の遵守を保証するため、ダウンストリームのＭＣＡ１５０は、各ポステド・メモリ書き込みサイクルに対して先に出した遅延要求サイクルをバイパスする機会を与え、一方、ダウンストリームとアップストリ―ムの両方のＭＣＡ１５０は、遅延要求及び遅延完了サイクルが先に出されたポステド・メモリ書き込みサイクルをバイパスすることを許さない。ＭＣＡ１５０によって決められるトランザクションの序列は後で詳述する。
【００１１】
ダウンストリームの待ち行列ブロック１２７のトランザクション・カウンタ１５９は、アップストリ―ムのブリッジ・チップで待ち行列に繋がっているトランザクションの数を計数して維持する。ポステド・メモリ書き込み（ＰＭＷ）カウンタ１６０は、アップストリ―ムのポステド・メモリ書き込み待ち行列に保持されているＰＭＷトランザクションの数を表示する。ＰＭＷカウンタ１６０は、ＰＭＷトランザクションがケーブル・インタフェース１３０に送られる毎に増分する。このカウンタ１６０は、ＱＰＩＦ１４８がケーブル・デコーダ１４６からＰＭＷサイクルがアップストリ―ムのＰＣＩバス２４上で完了した旨の信号を受け取る毎に、減分される。アップストリ―ムのＰＭＷＱでＰＭＷトランザクションの最大数（４）が待ち行列に繋がったとき、ＰＭＷカウンタ１６０は、「ＰＭＷフル（一杯）」の信号（ｔｃ＿ｐｍｗ＿ｆｕｌｌ）を発し、ＱＰＩＦ１４８に対してＰＣＩバス３２から更なるＰＭＷサイクルを再試行するよう、通知する。同様に、遅延要求（ＤＲ）カウンタ１６１は、アップストリ―ムの遅延要求待ち行列に保持されているＤＲトランザクションの数をカウントする。ＤＲＱにＤＲトランザクションの最大数（３）が保持されたとき、ＤＲカウンタ１６１は、「ＤＲフル」の信号（ｔｃ＿ｄｒ＿ｆｕｌｌ）を発し、ＱＰＩＦ１４８は後続のすべてのＤＲトランザクションをＰＣＩバス３２から再試行しなければならないことを示す。遅延完了（ＤＣ）カウンタ１６２は、アップストリ―ムのマスタ・サイクル・アービタで待ち行列に繋がった（入った）遅延完了の数をカウントする。このＭＣＡに遅延完了の最大数（４）が入ったとき、ＤＣカウンタ１６２は「ＤＣフル」の信号（ｔｃ＿ｄｃ＿ｆｕｌｌ）を発し、ダウンストリームのＱＰＩＦ１４８による２次ＰＣＩバス３２上での遅延要求トランザクションの実行を防止する。「フル」の状態が解消され次第、遅延完了情報をダウンストリームのＤＣＱに送ることができる。
ＰＣＩインタフェース・ブロック１５２は、ＰＣＩバス３２と待ち行列ブロック１２７の間に常駐する。ＰＣＩインタフェース１５２は、マスタ・ブロック１２３及びスレーブ（ターゲット）・ブロック１２１を含む。このスレーブ・ブロック１２１により、バス３２上のＰＣＩデバイスはブリッジ・チップの内部レジスタ（例えば、ターゲット・メモリ範囲レジスタ１５５及びコンフィギュレーション・レジスタ）にアクセスでき、ＤＣＱ１４４に記憶されている完了情報を要求でき、ＱＰＩＦ１４８及びケーブル・インタフェース１３０を介して１次バスに渡されるトランザクションを起動することができる。スレーブ・ブロック１２１は、各デバイスがそのＲＥＱ＃ラインをアサートする時にそれを認識し、そのＲＥＱ＃信号をＰＣＩアービタ１２４へ送ることによって、バス３２上のＰＣＩデバイスによるＰＣＩバス３２の利用可能性をコントロールする。ＰＣＩアービタ１２４がバスの制御権を持つべき要求デバイスを選択するとき、スレーブ・ブロック１２１がデバイスのＧＮＴ＃ラインをアサートすることによって、そのデバイスにバスの使用を許可する。バス３２の制御権が要求デバイスに与えられて、そのデバイスがトランザクションの開始を示すＦＲＡＭＥ＃信号をアサートすれば、直ちに、スレーブ・ブロック１２１がトランザクション情報（例えば、アドレス、コマンド、データ、バイト・イネーブル、パリティ等）をスレーブ・ラッチング・レジスタ１５６にラッチする。その後、待ち行列・ブロック１２７は、ラッチング・レジスタ１５６からトランザクション情報を検索することが可能となり、それをＤＣＱ１４４及びケーブル・インタフェース１３０の一方及び両方に供給する。
ＰＣＩスレーブ・ブロック１２１がサポートするトランザクションを、次の表に示す。
【表１】
0003895006.tif 000002
【００１２】
ＰＣＩインタフェース１５２のマスタ・ブロック１２３は、待ち行列ブロック１２７（即ち、ＰＭＷＱ１４０及びＤＲＱ１４２に保持されているトランザクション）によって開始されたサイクルのみを実行する。待ち行列ブロック１２７は、ＰＣＩマスタ１２３に要求信号（ｑ２ｐ＿ｒｅｑ）を送って、ＰＣＩバスを要求する。要求信号を受け取ったＰＣＩマスタ１２３は、ＰＣＩアービタ１２４への対応する要求信号（ｂｌｒｅｑ ）をアサートするかどうかを判断する。待ち行列ブロック１２７がロックされたサイクルを実行してなく、ＰＣＩバス３２が別のＰＣＩデバイスにロックされていなければ、マスタ・ブロック１２３はｂｌｒｅｑ をアサートする。ＰＣＩアービタ１２４が待ち行列ブロック１２７を選択する場合、マスタ・ブロック１２３が待ち行列ブロック１２７に肯定応答信号（ｐ２ｑ＿ａｃｋ）を送り、バス３２の制御権を持っていることを知らせる。ＰＣＩアービタ１２４がバス３２に関し他のデバイスからの未処理の要求を持っていなければ、待ち行列ブロック１２７が未だｑ２ｐ＿ｒｅｑ信号をアサートしていなくても、マスタ・ブロック１２３は、自動的にｐ２ｑ＿ａｃｋの許可信号を待ち行列ブロック１２７に送る。待ち行列・ブロック１２７がアービトレーションを得て（即ち、アービタ１２４がｂｌｇｎｔ＿  信号をアサートして）トランザクションの開始を示すべくそのｑ２ｐ＿ｆｒａｍｅ信号をアサートすれば、ＰＣＩマスタ１２３は直ちに、送出トランザクション情報（即ち、アドレス、コマンド、データ、バイト・イネーブル、パリティその他）をＰＣＩインタフェース１５２のマスタ・ラッチング・レジスタ１５８にラッチする。それからトランザクション情報が用いられ、そのトランザクションはＰＣＩバス３２上で完了する。
マスタ・ブロック１２３がサポート（支持）しているトランザクションを、次の表に示す。
【表２】
0003895006.tif 000003
一般に、マスタ・ブロック１２３は標準的なＰＣＩマスタとして動作する。しかし、標準のＰＣＩブリッジと異なり、マスタ・ブロックは、マスタ待ち時間タイマ（ＭＬＴ）が切れた後でも、キャシュ・ラインの境界に達するまでは、ＭＲＬ、ＭＲＭ、またはＭＷＩトランザクションを終了させない。また、マスタ・ブロック１２３は、「イニシエータ（初期化）準備完了」（ＩＲＤＹ）の待機状態をアサートしない。待ち行列ブロック１２７がその「ロック」信号（ｑ２ｐ＿ｌｏｃｋ）をアサートし、待ち行列ブロック１２７がその「アンロック」信号をアサートしたときにバス３２上におけるロックを解除すれば、マスタ・ブロック１２３は、ＰＣＩバス３２上でロックされたサイクルを実行する。
さらに図５７を参照する。ＰＣＩインタフェース１５２には、バッファ・フラッシュ・ロジック１５４が入っており、これにより、いつＤＣＱ完了バッファの１つまたはすべてを待ち行列ブロック１２７によってフラッシュさせるかを決定する。ＰＣＩスレーブ１２１が２種類の信号を生成し、待ち行列ブロック１２７がこれらを用いて完了バッファをフラッシュする。それらの信号は、バッファをフラッシュする時を示すフラッシュ信号（ｐ２ｑ＿ｆｌｕｓｈ）、及びどのＰＣＩデバイス（即ち、ＰＣＩバス上のどのスロット）がフラッシュされるデータを持っているかを示すスロット選択信号（ｐ２ｑ＿ｓｌｏｔ［２：０］）である。次の表に、ｐ２ｑ＿ｓｌｏｔ［２：０］とＰＣＩスロット番号の関係を示す。
【表３】
0003895006.tif 000004
【００１３】
ｐ２ｑ＿ｆｌｕｓｈがアサートされたとき、待ち行列ブロック１２７は、ｐ２ｑ＿ｓｌｏｔ［２：０］が「０００」に等しければＤＣＱ１４４のすべての完了バッファを、あるいはもしｐ２ｑ＿ｓｌｏｔ［２：０］がその他の値を持っていれば８つの完了バッファのうちの対応する１つをフラッシュする。待ち行列ブロック１２７は、所与の時点において、もしあるならば、どの完了バッファが各ＰＣＩスロットに対応するかを追従する。
コンフィグレーション書き込み（ｗｒ＿ｃｆｇ）サイクルの発生後、またはＩ／Ｏ書き込み（ｉｏｗｒ）サイクルの発生後、あるいはメモリ書き込み（ｍｅｍｗｒ）サイクルがコマンド・チェック状態（ｃｍｄ＿ｃｈｋ＿ｓｔ）中にダウンストリームのターゲットをヒット（ｈｉｔ＿ｔｍｅｍ）した後に、ｐ２ｑ＿ｆｌｕｓｈ信号が、最初のＰＣＩクロック（ＣＬＫ）サイクルの立ち上がりでアサートされる。ｐ２ｑ＿ｆｌｕｓｈをこのように作成すべく、ゲート２０１４、２０１６、２０１８及び２０２０、及びフリップ・フロップ２０２２が構成されている。
アップストリ―ムのブリッジ・チップにおいては（即ち、ｕｐｓｔｒｅａｍ＿ｃｈｉｐ＿ｉ信号がアサートされるとき）、ＣＰＵが１次ＰＣＩバス上で唯一のマスタであるため、ｐ２ｑ＿ｓｌｏｔ［２：０］は常に「００１」の値を持っている。ダウンストリームのチップにおいては、ｐ２ｑ＿ｓｌｏｔの値は、フラッシュ条件につながるサイクルが２次バス３２から待ち行列ブロック１２７へのサイクルであるかどうか（即ち、ｐ２ｑ＿ｑｃｙｃがアサートされているか）によって、決まる。ｐ２ｑ＿ｑｃｙｃ信号がアサートされると、ｐ２ｑ＿ｓｌｏｔ［２：０］は、ＰＣＩスレーブ１２１に生成されるｒｅｑ＿ｓｌｏｔ［２：０］信号の値をとる。ｒｅｑ＿ｓｌｏｔ［２：０］信号は、２次ＰＣＩバス３２上の７つのデバイスのうちのどのデバイスにバス３２の制御権が許されるかを示す。ＰＣＩスレーブ１２１は、バス３２上の７つのスロットの各々へのＧＮＴ＃ラインの値をラッチして７ビットのラッチされた許可（グラント）信号（ｌａｔｃｈｅｄ＿ｇｎｔ＿［７：１］、待ち行列ブロックに属する８番目の許可ラインは無視される）を形成し、ｌａｔｃｈｅｄ＿ｇｎｔ［７：１］をルックアップ・テーブル２００６に従って次のようにエンコードして、ｒｅｑ＿ｓｌｏｔ［２：０］信号を生成する。
【表４】
0003895006.tif 000005
フラッシュに至るサイクルが２次のＰＣＩから待ち行列ブロックへのサイクルでなければ、２次バス３２上のスロットの１つのターゲット・メモリ範囲へのＩ／Ｏ読み出しまたはコンフィギュレーション読み出しでなければならない。そのサイクルがＩ／Ｏ読み出しまたはコンフィグレーション読み出し（即ち、！ｉｏｗｒ  ＡＮＤ  ！ｗｒ＿ｃｆｇ）である場合、ｐ２ｑ＿ｓｌｏｔ［２：０］は、そのメモリ範囲がヒットされているＰＣＩスロットの値（ｍｒａｎｇｅ＿ｓｌｏｔ［２：０］）をとる。それ以外の場合、そのサイクルはＩ／Ｏ書き込みまたはコンフィグレーション書き込みであり、ｐ２ｑ＿ｓｌｏｔ［２：０］は完了バッファがすべてフラッシュされるように「０００」に等しくセットされる。ゲート２００８及び２０１０、及びマルチプレクサ２００２及び２００４は、ｐ２ｑ＿ｆｌｕｓｈ［２：０］をこのように生成すべく構成される。
【００１４】
ケーブル・デコーダ
図７１を参照する。ケーブル・デコーダ１４６は、ケーブル・インタフェースを介してトランザクションを受け取り、各トランザクションを受容できる適切な待ち行列を選択する。ケーブル・デコーダがデータ・フェーズにある場合（即ち、ｄａｔａ＿ｐｈａｓｅまたはｄａｔａ＿ｐｈａｓｅの値を次のＣＬＫサイクルで設定する非同期信号であるｎｅｘｔ＿ｄａｔａ＿ｐｈａｓｅがアサートされるとき）、ケーブル・デコーダ１４６はケーブル経由で送られてくるコマンド・コード（ｃｄ＿ｃｍｄ［３：０］）を調べて、トランザクションを受け取るべき待ち行列を決定する。下の表に示されるように、ｃｄ＿ｃｍｄ［３：０］は「１００１」の値を持っているとき、トランザクションは遅延完了であり、従ってケーブル・デコーダは、ｃｄ＿ｄｃｑ＿ｓｅｌｅｃｔ信号をアサートし、ＤＣＱに対してそのトランザクションを要求するようにする。コマンド・コード信号（ｃｄ＿ｃｍｄ［２：０］）の３つのＬＳＢが「１１１」であるとき、トランザクションはポステド（ポストされた）・メモリ書き込みであり、従ってケーブル・デコーダは、ｃｄ＿ｐｍｗｑ＿ｓｅｌｅｃｔ信号を生成し、入ってくるトランザクションについてＰＭＷＱに注意を喚起する。トランザクションがポステド・メモリ書き込みでも遅延完了でもなく、コマンド・コードもストリーミング信号を表していなければ、ケーブル・デコーダは、ｃｄ＿ｄｒｑ＿ｓｅｌｅｃｔ信号をアサートし、ＤＲＱに対してそのトランザクションを要求するようにする。ゲート２０２４、２０２６、２０２８及び２０３０を、ｃｄ＿ｄｃｑ＿ｓｅｌｅｃｔ、ｃｄ＿ｐｍｗｑ＿ｓｅｌｅｃｔ及びｃｄ＿ｄｒｑ＿ｓｅｌｅｃｔ信号をこのように生成するように構成する。
各タイプのトランザクションに対応する４ビットのコマンド・コードを、次の表に示す。
【表５】
0003895006.tif 000006
ダウンストリームのブリッジ・チップが１次バスと２次バス・マスタとの間にデータ・ストリームを設定したとき、アップストリ―ムのケーブル・デコーダは「１０００」のコマンド・コードを受信する。このコードは、ダウンストリームのチップがアップストリ―ムのチップに対しストリーム設定完了を知らせるために生成したストリーミング信号を表す。ケーブル・デコーダは、このコマンド・コードを受け取ったときｃｄ＿ｓｔｒｅａｍ信号をアサートして、アップストリ―ムのデバイスのＱＰＩＦに対してそのトランザクションを続けるよう指示する。ケーブル・デコーダはさらに、ｃｄ＿ｓｔｒｅａｍ＿ｎｅｘｔ＿ｄａｔａ信号を生成し、アップストリ―ムのチップに対し２次バスに別のデータを１つ供給するように指示する。ｃｄ＿ｓｔｒｅａｍ＿ｎｅｘｔ＿ｄａｔａ信号は、ｃｄ＿ｓｔｒｅａｍ信号がアサートされるときにアサートされ、そのトランザクションはデータ・フェーズにあり（即ち、ｄａｔａ＿ｐｈａｓｅがアサートされている）、そして、ｎｅｘｔ＿ｄａｔａ信号がダウンストリーム・チップからケーブル・インタフェースを介して受け取られている（ｎｅｘｔ＿ｄａｔａ信号はｃ２ｑ＿ｂｕｆｆ［３：０］信号のラインの１つに現れ、ストリームが発生していないとき、ダウンストリームのどのＤＣＱバッファが現在のトランザクションに関連しているかを待ち行列ブロックに知らせる）。ｃｄ＿ｓｔｒｅａｍ＿ｎｅｘｔ＿ｄａｔａ信号は、ｃｄ＿ｓｔｒｅａｍ信号がデアサートされるか、または新しい要求がケーブル・インタフェースから受け取られた（即ち、ｃ２ｑ＿ｎｅｗ＿ｒｅｑがアサートされる）ときにデアサートされる。ゲート２０３２及び２０３４は、ｃｄ＿ｓｔｒｅａｍ及びｃｄ＿ｓｔｒｅａｍ＿ｎｅｘｔ＿ｄａｔａ信号をこのように生成すべく構成される。
【００１５】
ポステド・メモリ書き込み待ち行列
図７２を参照する。ポステド・メモリ書き込み待ち行列（ＰＭＷＱ）１４０は記憶エレメントであり、ターゲットのバス上におけるポステド書き込みトランザクションの実行に必要なコマンド情報がすべてこれに入っている。ＰＭＷＱは、各トランザクションを識別する情報を保持するタグ・メモリ部分２０３６、ＰＭＷＱにおける各トランザクションに関連する書き込みデータを保持するデータＲＡＭ２０３８、及びＰＭＷＱ内外へのトランザクションの流れを管理する各種の制御ブロックを含む。次の表に示すように、ＰＭＷＱにおける各トランザクションについて、タグ・メモリ２０３６は、書き込まれるべきアドレス、ＰＣＩコマンド・コード（ＭＷまたはＭＷＩ）、アドレス・パリティ・ビット、及び「ロックされたサイクル」や「デュアル・アドレス・サイクル」の表示ビットといった情報を保存している。タグ・メモリ２０３６は、さらにＰＭＷＱにおける各トランザクションに対応するデータのデータＲＡＭの位置へのポインタも記憶している。
【表６】
0003895006.tif 000007
ＰＣＩ仕様２．１では、ポステド・メモリ書き込みトランザクションはそれらが受け取られた順に実行されるべきことを規定しているので、タグ・メモリ２０３６は循環ＦＩＦＯデバイスとなる。ＰＭＷＱ及び、従ってタグ・メモリ２０３６は、同時に４つまでのポステド・メモリ書き込みのトランザクションを処理することができる。
データＲＡＭ２０３８は、ＰＭＷＱにおける各トランザクションに１つずつ、合計４つのデータ・バッファ２０４２、２０４４、２０４６及び２０４８を含む。各バッファは、最大８つのキャシュ・ライン、又は２５６バイトのデータ（１キャシュ・ラインにつき８ワード）を保持することができる。１つのバッファにおける各キャシュ・ラインについて、バッファは、８つのデータ・パリティ・ビット２０４０（ｄｗｏｒｄにつき１つ）及び３２のイネーブル・ビット２０５０（１バイトにつき１つ）を記憶している。
ケーブル・インタフェース・ブロック２０６０は、各トランザクション及び関連するデータをケーブル・デコーダから受け取り、そのトランザクションをタグ・メモリ２０３６に入れる。待ち行列インタフェース・ブロック２０５３は、ケーブル・インタフェース・ブロック２０６０からデータを受け取り、それをデータＲＡＭ２０３８内の適当な位置に入れる。さらに待ち行列インタフェース２０５３はデータＲＡＭ２０３８からデータを検索し、ＱＰＩＦがＰＣＩバス上で対応するトランザクションを実行しているとき、そのデータをＱＰＩＦに供給する。入力ポインタ・ロジック・ブロック２０５４は、待ち行列インタフェース２０５３に対して次のデータ・ワードをどこに入れるかを示す入力ポインタを各バッファに１つずつ、合計４つ生成する。有効（出力）ポインタ・ブロック２０５６は、次に取られるワードの位置を示す出力ポインタを各バッファに１つずつ、合計４つ生成する。
【００１６】
さらに図７３を参照する。有効フラグ・ロジック・ブロック２０５２は、データＲＡＭ２０３８において４つのバッファの各々について８ビットの有効ライン・レジスタ２０６２を１つずつ保持している。有効ライン・レジスタ２０６２は、各バッファ内の８つのキャシュ・ラインのどれに有効なデータが入っているかを示す。１つのキャシュ・ラインの最後のワードがデータで充填される（即ち、ｖａｌｉｄ＿ｐｏｉｎｔｅｒ［２：０］が「１１１」に等しく、ｃｄ＿ｎｅｘｔ＿ｄａｔａがアサートされてそのワードが充填されていることを示す）場合、８ビットのケーブル有効信号における対応するビット（即ち、ｑ０＿ｃａｂｌｅ＿ｖａｌｉｄ［７：０］、ｑ１＿ｃａｂｌｅ＿ｖａｌｉｄ［７：０］等）がセットされる。セットすべきビットは、充填されているキャシュ・ラインを示す有効ポインタ（ｖａｌｉｄ＿ｐｏｉｎｔｅｒ［５：３］）の３つのＭＳＢによって決定される。トランザクションの終わりでケーブル・デコーダからスロット・バリデーション（validation）信号（ｖａｌｉｄａｔｅ＿ｓｌｏｔ）を受け取ったとき、ケーブル有効信号における対応するビットもセットされる。ケーブル有効信号は、最後のワードが充填されるか又はｖａｌｉｄａｔｅ＿ｓｌｏｔ信号が受信された後、最初のＰＣＩクロック・サイクル（ＣＬＫ）の立ち上がりで、選択されたデータ・バッファに対応する有効ライン・レジスタ２０６２にラッチされる。それ以外の場合、有効ライン・レジスタはその現在値を維持する。有効ライン・レジスタ２０６２におけるビットは、８ビットの無効信号（即ち、ｑ０＿ｉｎｖａｌｉｄ［７：０］、ｑ１＿ｉｎｖａｌｉｄ［７：０］等）の対応するビットがアサートされたときにクリアされる。
有効フラグ・ロジック・ブロック２０５２は、ｐｍｗｑ＿ｖａｌｉｄ［３：０］信号を生成して、この信号は、もしあるとすれば、４つのデータ・バッファのどれに少なくとも１つの有効なデータのラインが入っているかを示す。有効ブロック２０５２は、さらにｐｍｗｑ＿ｖａｌｉｄ＿ｌｉｎｅｓ［７：０］信号を生成して、選択されたデータ・バッファの８つのキャシュ・ラインのうちのどれが有効であるかを示す。ＱＰＩＦからの待ち行列選択信号（ｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ［１：０］）を用いて、ｐｍｗｑ＿ｖａｌｉｄ＿ｌｉｎｅｓ［７：０］信号を生成するために、どのデータ・バッファの有効ライン・レジスタ２０６２を用いるかを選択する。待ち行列ブロックがバスの制御権を得て選択されたデータ・バッファからのポステド・メモリ書き込みサイクルを実行するとき、その待ち行列ブロックは、対応するビットがｐｍｗｑ＿ｖａｌｉｄ＿ｌｉｎｅｓ［７：０］信号においてセットされる各ラインのデータをすべて転送する。最初のデータ・バッファ（ｑ０＿ｖａｌｉｄ［７：０］）に対しての有効ライン・レジスタ２０６２における値を設定すべく、ゲート２０６４、２０６６、２０６８、２０７０及び２０７２、及びフリップ・フロップ２０７４が構成される。同様の回路が、他の３つのデータ・バッファに対しての有効レジスタの内容を決定する。マルチプレクサ２０７６は、ｐｍｗｑ＿ｖａｌｉｄ＿ｌｉｎｅｓ［７：０］信号の値を選択する。
【００１７】
次に図７４を参照する。フル・ライン・ロジック・ブロック２０５８は、４つのデータ・バッファの各々について８ビットのフル・ライン・レジスタ２０７８を１つずつ保持している。各フル・ライン・レジスタ２０７８の内容は、対応するデータ・バッファにおける８つのキャシュ・ラインのどれがフル（一杯）になっているかを表示する。各フル・ライン・レジスタ２０７８のビットは、下に述べるフル・ライン状態マシン２０８０によって生成された非同期のｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔ信号によってセットされる。ＱＰＩＦからの待ち行列選択信号（ｓｅｌｅｃｔ＿ｎｅｘｔ＿ｑｕｅｕｅ［３：０］）がデータ・バッファの１つを選択し、ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔ信号がアサートされた場合、有効ポインタ（ｖａｌｉｄ ｐｏｉｎｔｅｒ［５：３］）の３つのＭＳＢによって示されるキャシュ・ラインに対応するフル・ライン・レジスタ２０７８のビットがセットされる。３×８デコーダ２０８２は３ビットの有効ポインタを何れのビットをセットするかを決定する８ビット信号に変換する。８ビットのフル・ライン信号（ｑｏ ｆｕｌｌ ｌｉｎｅ）は、対応するフル・ライン・レジスタ２０７８の内容から各データ・バッファに対して生成される。フル・ライン信号は、対応するデータ・バッファにおけるどのラインが満たされているか、即ちフルであるかを示す。フル・ライン論理（ロジック）ブロック２０５８は、また、選択されたデータ・バッファの何れのキャッシュ・ラインがフルであるかを示すｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅ［７：０］信号を生成する。マルチプレクサ２０８４及びｑ２ｐｉｆ ｑｕｅｕｅ ｓｅｌｅｃｔ［１：０］信号は、ｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅ［７：０］信号を生成するために用いられる。
【００１８】
さらに図７５を参照する。フル・ライン状態マシン２０８０は、リセットされるとＩＤＬＥ状態２０８６に入る。ＩＤＬＥ状態２０８６において、ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔは零にセットされる。トランザクションがＰＭＷＱにおかれる場合、そのトランザクションは、アドレス・フェーズ（相）とデータフェーズ（相）の２つのフェーズで起こる。データ・フェーズが始まり（即ち、ｃｌｏｃｋ＿ｓｅｃｏｎｄ＿ｐｈａｓｅ信号がアサートされ）、有効ポインタがキャシュ・ラインの最初のワードを指したとき（ｖａｌｉｄ＿ｐｏｉｎｔｅｒ［２：０］＝“０００”）、状態マシン２０８０は、ＤＡＴＡ状態２０８８に遷移する。ＤＡＴＡ（データ）状態において、ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔ信号は、有効ポインタがキャシュ・ラインの最後のワードを指し（ｖａｌｉｄ＿ｐｏｉｎｔｅｒ［２：０］＝“１１１”）、ｃｄ＿ｎｅｘｔ＿ｄａｔａ信号がケーブル・デコーダにアサートされ（最後のワードはデータで充填されたことを示す）、ケーブル・デコーダからのバイト・イネーブル信号（ｃｄ＿ｂｙｔｅ＿ｅｎ［３：０］）が「００００」に等しい場合にのみ、アサートされる。このような状況が発生したとき、状態マシンもＩＤＬＥ（アイドリング）状態２０８６に遷移して戻る。トランザクションが終了する（即ち、ｃｄ＿ｃｏｍｐｌｅｔｅがアサートされる）前にこのような状況が起こらなければ、ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔ信号はデアサートされたままとなり、状態マシン２０８０はＩＤＬＥ状態２０８６に遷移して戻る。状態マシン２０８０はまた、ｃｄ＿ｂｙｔｅ＿ｅｎ［３：０］信号が「００００」以外の値になった場合、ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅ＿ｂｉｔ信号をアサートせずにＩＤＬＥ状態２０８６に遷移する。
【００１９】
再び図７２に戻り、そして図７６も参照する。対応するデータを受信するデータ・バッファが一杯になれば、通常はＰＭＷＱはケーブル・デコーダからのトランザクションを終了しなければならない。しかし、バッファがフルになった後でもケーブル・デコーダがデータの送信を続けていれば、オーバーフロー・ロジック・ブロック２０９０によってデータは次の空のバッファにオーバーフローするようにされる。オーバーフロー・ロジック・ブロック２０９０は、オーバーフロー・レジスタ２０９２を維持しており、もしあるとすれば、４つのデータ・バッファのどれがオーバーフロー・バッファとして使用されているかを表示する。オーバーフロー・レジスタ２０９２の内容は、４ビットのオーバーフロー信号（ｐｍｗｑ＿ｏｖｅｒｆｌｏｗ［３：０］）の生成に用いられる。トランザクションがデータ相にあり（即ち、ｄａｔａ＿ｐｈａｓｅがアサートされる）、有効ポインタが１つのデータ・バッファの最後のワードに達し（即ち、ｖａｌｉｄ＿ｐｏｉｎｔｅｒ［５：０］＝“１１１１１１”）、ケーブル・デコーダがデータが更に入ってくることを示し（即ち、ｃｄ＿ｎｅｘｔ＿ｄａｔａがアサートされる）、そしてケーブル・デコーダがそのトランザクションの完了を示していない（即ち、ｃｄ＿ｃｏｍｐｌｅｔｅがアサートされていない）場合には、最近フルになったデータ・バッファを指すｓｅｌｅｃｔ＿ｎｅｘｔ＿ｑｕｅｕｅ［３：０］信号が使用されて、次のデータ・バッファに対応するオーバーフロー・レジスタのビットがセットされる。もしこれらの条件が満たされなければ、そのオーバーフロー・ビットがクリアされる。ゲート２０９４及び２０９５がｓｅｌｅｃｔ＿ｎｅｘｔ＿ｑｕｅｕｅ［３：０］信号と関連して用いられ、これらの条件が満たされたときに、適切なオーバーフロー・レジスタのビットのセット及びクリアを行う。
単一のトランザクションが、最後の未使用バッファが一杯になるまで追加のバッファに継続してオーバーフローすることがある。複数のバッファが１つのオーバーフロー・バッファとして使用される場合は、オーバーフロー・レジスタの複数のビットがセットされる。オーバーフロー・レジスタ内における連続してセットされたビットは、１つのトランザクションが複数のバッファにオーバーフローしたことを表示する。ポステド・書き込みトランザクションがＰＭＷＱに入っているとき、オーバーフロー・ビットはセットまたはクリアされる。また、もしＱＰＩＦがターゲットのバス上でＰＭＷトランザクションの実行を開始し、データがまだＰＭＷＱに入ってきている間に元のバッファを空にし始めれば、オーバーフローのトランザクションを継続するために元のバッファを再び使用できる。オーバーフローは使用可能なすべてのバッファが一杯になるまで継続できる。
【００２０】
遅延要求待ち行列（ＤＲＱ）
図７７を参照する。ＤＲＱ１４２は、ターゲットのバス上において遅延読み出し要求（ＤＲＲ）及び遅延書き込み要求（ＤＷＲ）トランザクションを完了するために必要な情報をすべて記憶する。ＤＲＱは、読み出される又は書き込まれるべきアドレス、ＰＣＩコマンド・コード、バイト・イネーブル、アドレス及びデータのパリティ・ビット、「ロックされたサイクル」及び「デュアル・アドレス・サイクル」表示ビット、及び完了情報用に対する起動ブリッジ・チップにリザーブされた遅延完了バッファのバッファ番号のような情報を含む。また、待ち行列メモリ２１００は、遅延書き込みサイクルにおいてターゲット・バスに書き込まれるべき最大３２ビット（１ワード）のデータを保持する。遅延書き込みサイクルでは１ワードを超えるデータが係ることがないので、ＤＲＱにはデータＲＡＭが必要でない。ＤＲＱ及び待ち行列メモリ２１００は、同時に３つまでの遅延要求トランザクションを保持することができる。ケーブル・インタフェース・ブロック２１０２は、ケーブル・デコーダから遅延要求トランザクションを求め、それらを待ち行列メモリ２１００に入れる。ＤＲＱ待ち行列メモリ内に維持される情報を、次の表に示す。
【表７】
0003895006.tif 000008
【００２１】
さらに図７８５を参照する。有効フラグ・ロジック・ブロック２１０４は、ＤＲＱが待ち行列メモリ２１００内におけるトランザクションの実行に必要なすべての情報を受け取った時点を判定する。ＤＲＱスロットの１つが対応するスロット選択信号（即ち、第１スロットに対してｓｅｌｅｃｔ＿ｚｅｒｏ、第２スロットに対してｓｅｌｅｃｔ＿ｏｎｅ、及び第３スロットに対してｓｅｌｅｃｔ＿ｔｗｏ）によって選択され、ｖａｌｉｄａｔｅ＿ｓｌｏｔ信号がケーブル・デコーダによるＤＲＱに対するトランザクションの送達の完了を表示してそのスロットを有効としたとき、そのスロットに対応する有効信号（即ち、ｑ０＿ｖａｌｉｄ、ｑ１＿ｖａｌｉｄ、またはｑ２＿ｖａｌｉｄ）が次のＰＣＩクロック（ＣＬＫ）サイクルの立ち上がりでアサートされる。スロットが選択されなくてｖａｌｉｄａｔｅ＿ｓｌｏｔ信号によって有効とされない場合、そのスロットの有効信号は、ＱＰＩＦがＤＲＱ選択信号（ｑ２ｐｉｆ＿ｄｒｑ＿ｓｅｌｅｃｔ）をアサートしてそのスロット（ｑ２ｐｉｆ＿ｑｕｕｕｅ＿ｓｅｌｅｃｔ＝スロット番号）を識別することによってそのスロットを選択したが、サイクル・アボート信号（ｑ２ｐｉｆ＿ａｂｏｒｔ＿ｃｙｃｌｅ）をアサートすることによってそのトランザクションをアボートした場合には、デアサートされる。また、ＱＰＩＦが更なるデータを待っている（即ち、ｑ２ｐｉｆ＿ｎｅｘｔ＿ｄａｔａがアサートされている）間にＤＲＱがサイクル完了信号（例えば、ｑ０＿ｃｙｃｌｅ＿ｃｏｍｐｌｅｔｅ）をアサートしてそのトランザクションを終了すれば、そのバリッド信号はデアサートされる。しかし、ＱＰＩＦが他のブリッジ・チップに対してデータのストリーミングを現在行っていれば（即ち、ｑ２ｐｉｆ＿ｓｔｒｅａｍｉｎｇがアサートされている）、そのサイクル完了信号は無視される。それ以外の場合、そのスロットの有効信号がクロック・サイクルで特にアサートもデアサートもされなければ、現在値が保持される。有効フラグ・ロジック・ブロック２１０４もＤＲＱ有効信号（ｄｒｑ＿ｖａｌｉｄ［３：０］）を生成し、これが各個別のスロットに関する有効信号を組み合わせることにより（即ち、ｄｒｑ＿ｖａｌｉｄ＝｛０，ｑ２＿ｖａｌｉｄ，ｑ１＿ｖａｌｉｄ，ｑ０＿ｖａｌｉｄ｝）、３つのＤＲＱスロットのうち、もしあるとすれば、どれに有効なトランザクションが入っているかを表示する。スロットの有効信号及びＤＲＱ有効信号をこのようにして生成するように、ゲート２１０６、２１０８、２１１０、２１１２、２１１４、マルチプレクサ２１１６、２１１８、及びフリップ−フロップ２１２０が構成される。
ＤＲＱは更にポインタ・ロジック・ブロックを含み、これが遅延読み出し要求トランザクション中にデータが読み出されるべきメモリ位置へのポインタを保持している。遅延読み出しトランザクションが開始される位置のアドレスが待ち行列メモリ２１００にロードされたとき、有効ポインタ・ロジック・ブロック２１２２が６ビットの有効ポインタを生成し、これがトランザクションがどこで終了するかを示す。そのトランザクションがシングル・ワードに係るもの（例えば、メモリ読み出し）であれば、その有効ポインタ・ロジック・ブロック２１２２がその有効ポインタを待ち行列メモリ２１００にロードされるアドレスに等しくなるように設定する。メモリ読み出しライン・トランザクションについては、有効ポインタ・ロジック・ブロック２１２２が有効ポインタに「０００１１１」の値を設定し、これは、データの最後の有効部が開始点から８ダブル・ワード（即ち、１キャシュ・ライン）先にあることを示す。メモリ読み出しマルチプル・トランザクションについては、有効ポインタが「１１１１１１」にセットされ、これは、データの最後の有効部が開始点から６４ダブル・ワード（即ち、８キャシュ・ライン）先にあることを示す。有効ポインタ・ロジック・ブロック２１２２は、ＤＲＱの各スロットについて１つの有効ポインタを保持している（ｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿０［５：０］、ｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿１［５：０］、及びｖａｌｉｄ＿ｐｏｉｎｔｅｒ２［５：０］）。下に詳述するように、ＤＲＱがＱＰＩＦからストリーミング信号（ｑ２ｐｉｆ＿ｓｔｒｅａｍｉｎｇ）を受信するとき、有効ポインタの位置はＤＲＱに無視される。
【００２２】
出力ポインタ・ロジック・ブロック２１２４は、ＤＲＱの各スロットにつき１つずつ、合わせて３つの出力ポインタ（ｏｕｔｐｕｔ＿ｐｏｉｎｔｅｒ＿０［５：０］、ｏｕｔｐｕｔ＿ｐｏｉｎｔｅｒ＿１［５：０］、及びｏｕｔｐｕｔ＿ｐｏｉｎｔｅｒ＿２［５：０］）を保持し、それらはメモリから読み出されて他方のブリッジ・チップに送られるべき次のデータのワードを示す。このポインタは、ＱＰＩＦが次のデータを読み出す態勢にあることを表示すると（即ち、ＱＰＩＦがｑ２ｐｉｆ＿ｎｅｘｔ＿ｄａｔａをアサートする）、毎度のワード読み出しにつき１つ増分する。ストリーミングの状態にある場合を除き、トランザクションは出力ポインタが有効ポインタに達したとき終了（完了）する。もしデータをすべて読み出す前（即ち、出力ポインタが入力ポインタに達する前）にトランザクションが終了した場合、ＱＰＩＦは、トランザクションが再開するときに出力ポインタが示す位置でピックアップを行う。出力ポインタが増分したが出力ポインタ・ロジック・ブロック２１２４がステップバック（stepback、後退）信号（ｑ２ｐｉｆ＿ｓｔｅｐ＿ｂａｃｋ）を受信して、ＱＰＩＦがデータの最後の部分を読み出すことができないうちにトランザクションがＰＣＩバス上で終了したことが表示された場合、出力ポインタ・ロジック・ブロック２１２４は、読み出されていないデータの最後の部分がトランザクションが再開したときに読み出せるように、カウンタを１つ減分する。待ち行列インタフェース・ブロック２１２６は、トランザクションの情報及び有効ポインタと出力ポインタをＱＰＩＦに渡す。
【００２３】
遅延完了待ち行列（ＤＣＱ）
第７９図を参照する。ＤＣＱ  １４４は、開始バス上に出される各遅延された要求（遅延要求）に対するターゲット・バスの応答が入っている遅延完了メッセージ（遅延された完了メッセージ）を保持する。遅延読出し要求（遅延された読み出し要求）に対応する遅延完了メッセージは要求されたデータを含み、一方遅延書込み要求（遅延された書き込み要求）に対応する遅延完了メッセージには何も含まれていない。ケーブル・インタフェース・ブロック２１３０はケーブル・デコーダに遅延完了メッセージを要求し、その遅延完了情報をタグ・メモリ２１３２に供給する。ＤＣＱ及び、従ってタグ・メモリ２１３２は一度に最大８つの遅延完了メッセージを保持できる。タグ・メモリ２１３２は、遅延完了メッセージの元となる要求の中に入っているＰＣＩコマンドやアドレス、バイト・イネーブル・ビット、アドレス及びデータ・パリティ・ビット、及び「ロックト・サイクル」や「デュアル・アドレス・サイクル」ビットといった情報を保存する。また、常に１ワードのみのデータを対象とする遅延書込みトランザクションについては、タグ・メモリ２１３２は書き込まれたデータのコピーを保持する。タグ・メモリ２１３２内の８つのスロットの各々は、ＤＣＱデータＲＡＭ  ２１３４内の８つのデータ・バッファの対応する１つへの暗示ポインタを含む。遅延読出しトランザクションについては、返されたデータがデータＲＡＭ  ２１３４内の対応するデータ・バッファ２１３５ａ−ｈに入る。ＤＣＱ内における各トランザクションに関するタグ・メモリ内の情報を次の表に示す。
【表８】
0003895006.tif 000009
【００２４】
ＤＣＱデータＲＡＭ  ２１３４内の８つのデータ・バッファの各々が最大８キャシュ・ラインの遅延完了データを保持する。従って、これらのバッファは最も大きい遅延要求トランザクション（メモリ読出し多重トランザクション）に関する完了データをすべて格納できるほど大きい。しかし、各データ・バッファの容量はブリッジ・チップのコンフィギュレーション・レジスタ内のコンフィギュレーション・ビット（ｃｆｇ２ｑ＿ｅｉｇｈｔ＿ｌｉｎｅ）をセットすれば４キャシュ・ラインに減らされる。各データ・バッファは、単一の遅延完了トランザクションにおけるデータで、あるいは１回の遅延完了トランザクションですべての要求データが返されない場合は、複数の遅延完了トランザクションにおけるデータで満たされる。しかし、要求データを供給するために必要とする遅延完了トランザクションの回数に関わらず、各データ・バッファには１つだけの元の遅延要求に対応するデータしか入れることができない。
待ち行列インタフェース・ブロック２１３６は、完了データのＤＣＱケーブル・インタフェース２１３０からデータＲＡＭ  ２１３４内への、及びデータＲＡＭ２１３４からＱＰＩＦへの完了データの流れをコントロールする。３つのロジック・ブロックがポインタを生成し、それらによって８つのデータ・バッファに保存されるデータの出し入れを管理する。１番めのブロックである入力ポインタ・ロジック・ブロック２１３８は、８つのデータ・バッファの各々への６ビットの入力ポインタ（ｉｎ＿ｐｏｉｎｔｅｒ＿０［５：０］、ｉｎ＿ｐｏｉｎｔｅｒ＿１［５：０］等）を有する。各入力ポインタは、次のデータ・ワードが入るべき対応するデータ・バッファ内のロケーションをポイントする。２番目のブロックである出力ポインタ・ロジック・ブロック２１４０は、８つのバッファの各々について１つの６ビットの出力ポインタ（ｏｕｔ＿ｐｏｉｎｔｅｒ＿０［５：０］、ｏｕｔ＿ｐｏｉｎｔｅｒ＿１［５：０］等）を有する。各出力ポインタは、ＱＰＩＦによって最後に除去されたワードの直後のデータ・ワードのロケーッションをポイントする。選択されたデータ・バッファ用の出力ポインタは、ＱＰＩＦがデータの次の部分に対する準備が完了したことを表示すると（即ち、ｑ２ｐｉｆ＿ｎｅｘｔ＿ｄａｔａがアサートされる）増分する。出力ポインタが増分しても、トランザクションがＱＰＩＦ以外のデバイスによって終了されたためデータの最後の部分が要求しているデバイスに達しなければ、ＱＰＩＦがステップバック信号（ｑ２ｐｉｆ＿ｓｔｅｐ＿ｂａｃｋ）をアサートすることによって出力ポインタ・ロジック・ブロック２１４０がその出力ポインタを１ワード減分する。
３番目のポインタ・ブロックである有効ポインタ・ロジック・ブロック２１４２は、８つのデータ・バッファの各々について６ビットの有効ポインタ（ｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿０［５：０］、ｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿１［５：０］等）を有し、これによって対応するデータ・バッファ内のＱＰＩＦに得られるべき次のデータ・ワードを示す。ＰＣＩスペック２．１では、先に開始されているポスティッド・メモリ書込みトランザクションの前に読出し完了データを返せない旨が規定されているため、ＰＭＷＱ内でポスティッド・メモリ書込みが始まろうとしているときにＤＣＱ内に入れられた遅延完了データは、そのポスティッドメモリ書込みがＰＣＩバス上で完了してＰＭＷＱから除去されるまでは要求しているデバイスに得られる状態にならない。従って、先に待ち行列に入れられたポスティッド・メモリ書込みトランザクションがＰＭＷＱ内に残っている限り、有効ポインタはその現在位置に留まっていなければならない。そして、先に待ち行列に入れられたポスティッド・メモリ書込みがすべてＰＭＷＱから除去されたとき、有効ポインタをイン・ポインタと同じ位置に移動させることができる。ＰＭＷＱが空のときは、すべての遅延完了データはＤＣＱ内に入れられると直ちに有効（即ち、要求しているデバイスに得られる状態）となる。
【００２５】
更に第８０及び８１図も参照する。有効ポインタ・ロジック・ブロック２１４２は、ＰＭＷＱ内でポスティッド・メモリ書込みが始まろうとしているときに遅延完了待ち行列に入る遅延完了トランザクションをすべて有効とするよう、マスタ・サイクル・アービタ（ＭＣＡ）に要求しなければならない。しかし、ＭＣＡは一度に４つを超える遅延完了トランザクションを待ち行列に入れられることができないので、下に述べるように、有効ポインタ・ロジック・ブロック２１４２は一度に４つを超えない遅延完了データ・バッファの有効性（妥当性）検査を要求する。有効ポインタ・ロジック・ブロック２１４２は、更に特定の時点にＭＣＡ内で待ち行列に入れられた４つの遅延完了トランザクションがどれであるかを監視していなければならない。このために、有効ポインタ・ロジック・ブロック２１４２は４スロットのレジスタを２つ持っている：  即ち、ＤＣＱバッファ番号レジスタ２１４４、及び有効性検査要求レジスタ２１４６である。バッファ番号レジスタ２１４４は、ＭＣＡ内で待ち行列に入れられている各遅延完了トランザクションの、ケーブル・デコーダが出すＤＣＱバッファ番号信号（ｃｄ＿ｄｃｑ＿ｂｕｆｆ＿ｎｕｍ［２：１］）で決定される３ビットのＤＣＱバッファ番号を保持する。有効性検査要求レジスタ２１４６は、バッファ番号レジスタ２１４４の４つのスロット２１４８ａ−ｄ内に格納されている番号のＤＣＱバッファの各々について１つのトランザクション有効性検査要求ビットを保持している。有効性検査要求レジスタ２１４６のスロット２１５０ａ−ｄの各々の中の要求ビットは、もし対応する遅延完了トランザクションがＭＣＡ内で待ち行列に入れられるとアサートされる。４つの有効性検査要求スロット２１５０ａ−ｄ内のビットの値は、一緒に４ビットの有効性検査要求信号（ｄｃｑ＿ｖａｌｉｄ［３：０］）としてＭＣＡに供給される。
【００２６】
遅延完了トランザクションがＭＣＡ内に待ち行列に入れることになると、それに対応するＤＣＱバッファ番号がｃｄ＿ｄｃｑ＿ｂｕｆｆ＿ｎｕｍ［２：０］信号によってバッファ番号スロット２１４８ａ−ｄの１つにロードされる。ＤＣＱバッファ番号がロードされるスロット２１４８ａ−ｄは、２ビットの選択信号（ｎｅｘｔ＿ｖａｌｉｄ＿ｓｅｌｅｃｔ［１：０］）によって選択される。選択信号の値は、有効性検査要求レジスタ２１４６とルックアップ・テーブル２１５２（その内容を下の表に示す）によって生成されるｄｃｑ＿ｖａｌｉｄ［３：０］信号の値によって決まる。スロットは、それがｎｅｘｔ＿ｖａｌｉｄ＿ｓｅｌｅｃｔ［１：０］に選択されたときにロードされ、そのときはケーブル・デコーダが既にＤＣＱを選択しており、トランザクションを完了している（即ち、ｃｄ＿ｄｃｑ＿ｓｅｌｅｃｔ及びｃｄ＿ｃｏｍｐｌｅｔｅがアサートされている）。そして、ＰＭＷＱ内で少なくとも１つのポスティッド・メモリ書込みトランザクションが未処理となっている（即ち、ｐｍｗｑ＿ｎｏ＿ｐｍｗがアサートされていない）。ゲート２１５４、２１５６、２１５８、２１６０、２１６２、及び２ｘ４デコーダ２１６４が、バッファ番号レジスタ２１４４をこうしてロードするように構成される。同様に、有効性検査要求レジスタ２１４６が、ゲート２１５４、２１５６、２１５８、２１６０、２１６２、及び２ｘ４デコーダ２１６４の出力で設定される。
【表９】
0003895006.tif 000010
【００２７】
ｄｃｑ＿ｖａｌｉｄ［３：０］信号に応答して、ＭＣＡは４ビットのＤＣＱ実行信号（ｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］）を出力し、バッファ番号レジスタがポイントしているＤＣＱバッファのうち、その有効ポインタを更新するバッファを表示する。ｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］信号は、ｐｍｗｑ＿ｎｏ＿ｍｐｗ信号及び８つのデータ・バッファの各々のイン・ポインタとともに有効ポインタ更新ロジック・ブロック２１６６に渡される。もしＭＣＡがｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］ビットの１つをアサートした後にもＰＭＷＱ内にポスティッド・メモリ書込みトランザクションが残っていると（これはポスティッド・メモリ書込みトランザクションが遅延完了トランザクションが待ち行列化された後に待ち行列に入ったが、ＭＣＡが未だ対応するｍｃａ＿ｒｕｎ＿ｄｃｑのビットをアサートしていなかった場合に起こる）、ＭＣＡ内に同じＤＣＱバッファに対応する他の遅延完了トランザクションが待ち行列に入れられていない限り、対応する有効ポインタが更新される。もし同じＤＣＱバッファに関する遅延完了トランザクションがＭＣＡ内に待ち行列に入れられていれば、このトランザクションに対応するｍｃａ＿ｒｕｎ＿ｄｃｑがアサートされたときにのみ有効ポインタが更新される。一方、ｐｍｗｑ＿ｎｏ＿ｍｐｗ信号がアサートされると、遅延完了がＭＣＡ内にいまだ待ち行列に入れられていてもいなくても、直ちにすべての有効ポインタが対応するイン・ポインタにマッチするように更新される。ｍｃａ＿ｒｕｎ＿ｄｃｑのビットがアサートされたとき、妥当性検査要求レジスタ２１４６内の対応するビットがクリアされる。ゲート２１６８、２１７０、２１７２、２１７４及び２１７６は、有効性検査要求レジスタのビットをこうしてクリアするように構成される。
【００２８】
再び第７９図を参照する。ヒット・ロジック・ブロック２１８０は、ＰＣＩバス上の要求デバイスからの遅延要求トランザクションがＤＣＱ内の遅延完了メッセージの１つを「ヒット」した時点を特定する。ＰＣＩスペック２．１によれば、遅延完了が１つの要求にマッチさせらるためには、次の属性が同一でなければならない：  即ち、アドレス、ＰＣＩコマンド、バイト・イネーブル、アドレス及びデータ・パリティ、データ（書込み・要求の場合）、ＲＥＱ６４＃（６４ビット・データのトランザクションの場合）、及びＬＯＣＫ＃（サポートされている場合）。要求がＰＣＩスレーブにラッチされたとき、ＱＰＩＦは要求情報を検索してそれをＤＣＱに送り、そしてチェック・サイクル信号（ｑ２ｐｉｆ＿ｃｈｅｃｋ＿ｃｙｃ）をアサートして、要求情報をＤＣＱタグ・メモリ２１３２内に格納されている遅延完了メッセージと比較するようＤＣＱのヒット・ロジック２１８０に指示する。ヒット・ロジック２１８０は、６４ビットのアドレス信号（ｑ２ｐｉｆ＿ａｄｄｒ＿［６３：２］）、４ビットのＰＣＩコマンド信号（ｑ２ｐｉｆ＿ｃｍｄ［３：０］）、４つのイネーブル・ビット（ｑ２ｐｉｆ＿ｂｙｔｅ＿ｅｎ［３：０］）、デュアル・アドレス・サイクル・ビット（ｑ２ｐｉｆ＿ｄａｃ；  ＰＣＩのＲＥＱ６４＃信号に対応するビット）、ＱＰＩＦからのロック・ビット（ｑ２ｐｉｆ＿ｌｏｃｋ）、及び、もし要求が書込み要求であれば書き込まれるべきデータ（ｑ２ｐｉｆ＿ｄａｔａ［３１：０］）を受け取る。ＰＣＩスペック２．１に規定されていないが、ＱＰＩＦは更に下に述べるように待ち行列ブロックのバッファ・フラッシュ・ルーチンを強化するため、要求デバイスのスロット番号（ｑ２ｐｉｆ＿ｓｌｏｔ［２：０］）を供給する。それからヒット・ロジック２１８０は、これらの信号の各々を８つのＤＣＱバッファ内に保存されている遅延完了情報と比較する。もしすべての信号が遅延完了メッセージのいずれかとマッチすれば、ヒット・ロジック２１８０は８ビットのヒット信号（ｄｃｑ＿ｈｉｔ［７：０］）内の対応するビットをアサートして、マッチする完了メッセージが入っているバッファを識別する。ヒットが発生するとＱＰＩＦは完了メッセージを検索し、それを要求しているデバイスに渡し、もしその要求が読出し要求であれば、データＲＡＭ  ２１３４内の対応するデータ・バッファから返されたデータの除去を開始する。もしその要求情報がＤＣＱ内の遅延完了メッセージのいずれの完了情報ともマッチしなければ、その要求はＤＣＱを「ミス」し、次に利用可能なＤＣＱバッファに入れられ、ＱＰＩＦによりケーブルを介して他方のブリッジ・チップに転送される。下に詳述するように、ＤＣＱをミスする要求を発するＰＣＩデバイスは、その完了メッセージが返されるまで、そのＲＥＱ＃ラインをマスクしておくことができる。
ヒット・ロジック２１８０は多重スレッド・マスタ検出ブロック２１８２にもインタフェースし、もしあるとすれば、多重スレッド・デバイスの入っているＰＣＩスロットを検出する。多重スレッド・デバイスは一度に複数の遅延トランザクションを保持することができ、従って特別に扱われなければならない。多重スレッド・マスタが検出されると、コンフィギュレーション・レジスタ内の対応するビットがセットされ、そのデバイスは複数の未処理の遅延トランザクションを維持することができ、従ってそのＲＥＱ＃ラインがマスクされるべきであることを表示する。マルチスレディッド・マスタの検出については下に詳述する。
ＤＣＱは、その別の機能として１次と２次ＰＣＩバス間に読出しデータのストリームを設定する機会の存在する時点を判断する。ストリーミングの機会は、ターゲット・デバイスによってまだターゲット・バス上に置かれている状態のケーブル・デコーダによって遅延完了データがＤＣＱ内に入れられているときに存在する。もしターゲット・デバイスがまだＰＣＩバス上にデータを出している間にトランザクションを開始したＰＣＩデバイスが再びその要求を発すれば読出しストリームが設定される。読出しストリーミングは１次と２次ＰＣＩバス間におけるデータ転送の効率的な方法であるため、ＰＣＩブリッジ・チップはバス・アービトレーション・プロセス中にその完了データが到着しているデバイスに高い優先順位を与えるのみならず、ストリームが設定される可能性を高めるために非ストリーミングのトランザクションの終了を試みる。しかし、理論的にはストリーミングはいずれの読出しサイクル中にでも発生し得るが、実際上は大量のデータが係るトランザクション（メモリ読出し多重トランザクション）中でのみ発生する可能性が高い。従って、待ち行列ブロックはストリーミングの機会に利するように、その可能性のあるストリーミング・トランザクションがメモリ読出し多重トランザクションであるときにのみ他のトランザクションの終了を試行する。
【００２９】
更に第８２図を参照する。ＤＣＱ内のストリーム・ロジック・ブロック２１８４はストリームの機会があるか否かを判断し、もしあると判断すればそのストリームのサポートに必要な信号を生成する。ストリーム・ロジック・ブロック２１８４は、可能性のあるストリームに利するべく、現在のトランザクションを切断するための信号を生成する。ケーブル・デコーダが遅延完了トランザクションをＤＣＱ内に格納するとき、ストリーム・ロジック２１８４は、そのケーブル・デコーダが供給するＤＣＱバッファ番号信号（ｃｄ＿ｄｃｑ＿ｂｕｆｆ＿ｎｕｍ）を用いて対応するＤＣＱバッファ内に保存されているＰＣＩコマンド・コード（ｑ０＿ｃｍｄ［３：０］、ｑ１＿ｃｍｄ［３：１］等）を検索する。もしそのコマンド・コードがメモリ読出し多重要求を表すもの（即ち、”１１００”）であれば、ストリーム・ロジック２１８４は「ストリーム切断」信号（ｄｃｑ＿ｄｉｓｃｏｎｎｅｃｔ＿ｆｏｒ＿ｓｔｒｅａｍ）をアサートしてＱＰＩＦ及びＰＣＩインタフェースに対し、可能性の高いストリーミングの機会のために現在のトランザクションを終了するよう指示する。マルチプレクサ２１８６及びコンパレータ２１８８はｄｃｑ＿ｄｉｓｃｏｎｎｅｃｔ＿ｆｏｒ＿ｓｔｒｅａｍ信号を生成するように構成される。そして、ケーブル・デコーダがＤＣＱに対して完了データの供給を続けでおり（即ち、ｃｄ＿ｄｃｑ＿ｓｅｌｅｃｔ信号がアサートされたままになっている）、ＰＭＷＱ内にポスティッド・メモリ書込みがない（即ち、ｐｍｗｑ＿ｎｏ＿ｐｍｗがアサートされたままになっている）場合、ストリーム・ロジック２１８４はストリーミング要求信号（ｑ２ａ＿ｓｔｒｅａｍ）を直接ＰＣＩアービタに送る。更にストリーム・ロジック２１８４は、ｃｄ＿ｄｃｑ＿ｂｕｆｆ＿ｎｕｍ［２：０］信号を用い、選択されたＤＣＱバッファ内に格納されているＰＣＩスロット番号を選択し（ＤＣＱバッファ０  ２１３５ａはｑ０＿ｍａｓｔｅｒ［２：０］、ＤＣＱバッファ１  ２１３５ｂはｑ１＿ｍａｓｔｅｒ［２：０］等）、可能性のあるストリーミング・デバイス（ｑ２ａ＿ｓｔｒｅａｍ＿ｍａｓｔｅｒ［２：０］）のスロット番号もＰＣＩアービタに供給する。そして下に詳述するように、ＰＣＩアービタは可能性のあるストリーミング・デバイスのバス・アービトレーション優先順位を上げる。もしストリーミングの機会が消滅する前に可能性のあるストリーミング・マスタにバスの制御権が許されなければ、その優先順位は通常に戻される。アップストリ―ムのバスにはマスタ・デバイスが１つ（ＣＰＵ）しかないので、アップストリ―ム・チップ内ではこの機能はディスエーブルされている。ゲート２１９０及びマルチプレクサ２１９２が、ｑ２ａ＿ｓｔｒｅａｍ及びｑ２ａ＿ｓｔｒｅａｍ＿ｍａｓｔｅｒ信号を生成するように構成される。
要求しているデバイスがＤＣＱ内に格納されている遅延完了メッセージをヒットしたとき、８ビットのヒット・信号（ｈｉｔ［７：０］）の対応するビットがアサートされる。ｈｉｔ［７：０］の信号は８つのＤＣＱバッファのうち、どれが現在の要求にヒットされたかを表示する。このとき、もし対応するＤＣＱバッファにデータが入っていれば（即ち、ｄｃｑ＿ｎｏ＿ｄａｔａがアサートされていない）、ストリーム・ロジック２１８０はそのヒット信号の値をトランザクションの期間中（即ち、ｑ２ｐｉｆ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅがアサートされている限り）ラッチする。ヒット信号のラッチされたバージョンは、「遅延」ヒット信号（ｄｌｙ＿ｈｉｔ［７：０］）を形成する。もしヒット信号及び遅延ヒット信号のいずれかがＤＣＱバッファがヒットされたことを表示すれば、３ビットのＤＣＱストリーム・バッファ信号（ｄｃｑ＿ｓｔｒｅａｍ＿ｂｕｆｆ［２：０］）がヒットされたＤＣＱバッファのバッファ番号を表示する。そして、もしケーブル・デコーダが、そのバッファをヒットしたサイクルが進行中に（即ち、ｃｄ＿ｄｃｑ＿ｓｅｌｅｃｔがアサートされていてｃｄ＿ｄｃｑ＿ｂｕｆｆ＿ｎｕｍ［２：０］とｄｃｑ＿ｓｔｒｅａｍ＿ｂｕｆｆ［２：０］が等しいとき）遅延完了データをそのバッファに入れると、ストリーム・ロジック２１８０はストリーム接続信号（ｄｃｑ＿ｓｔｒｅａｍ＿ｃｏｎｎｅｃｔ）をアサートし、ストリームが設定されたことをＱＰＩＦに知らせる。そのＱＰＩＦはターゲットのバス上のブリッジ・チップに対しストリームの設定完了を通知する。下に詳述するが、もし一定の条件が満たされれば、ターゲットのＱＰＩＦは開始ＱＰＩＦに停止を指示されるまでストリームを続ける。ゲート２１９４、２１９６、マルチプレクサ２１９８、２２００、及びフリップ・フロップ２２０２が、この遅延ヒット信号を生成するように構成される。ゲート２２０４、２２０６、２２０８、及びエンコーダ２２１０が、ｄｃｑ＿ｓｔｒｅａｍ＿ｃｏｎｎｅｃｔ及びｄｃｑ＿ｓｔｒｅａｍ＿ｂｕｆｆ［２：０］信号を生成すべく、示されているように構成される。
【００３０】
再び第７９図を参照する。ＤＣＱは、一定の状況のもとにおいて、ＰＣＩマスタが戻ってデータを要求することを期待して、そのマスタのためにターゲットのバスから自動的にそのデータをプリフェッチする。ＤＣＱ内のプリフェッチ・ロジック・ブロック２２１２は、読み出し中のマスタがそのＤＣＱバッファ内のデータをすべて読み出したときにデータをプリフェッチ（事前取出し）し、そのプリフェッチ・ロジック２２１２は要求しているデバイスがシーケンシャルな読出し要求（即ち、メモリ内の次々に連続したロケーションのデータを対象に続ける読み出しの要求）を持って戻ることを期待する。マルチスレディッド・マスタのように、デバイスによっては１つのトランザクション内で要求されるデータをすべて規則正しく読み出し、その後異なったシーケンシャルでないデータを伴って戻るものがあるので、プリフェッチ・ロジック２１２２には予測回路を設け、これによってデバイスにシーケンシャルな読出し要求を出す傾向が現れるまでＰＣＩバス上の各デバイスのプリフェッチ機能をディスエーブルする。プリフェッチされたデータを受信していたデバイスがシーケンシャルでない読出し要求を持って帰ると、この予測回路は直ちにそのマスターのプリフェッチ機能をディスエーブルする。
【００３１】
更に第６９Ａ及び６９Ｂ図を参照する。プリフェッチ・ロジック・ブロック２２１２はプリフェッチ予測レジスタ２２１４を含み、その出力である８ビットのプリフェッチ・イネーブル信号（ｐｒｅｆｅｔｃｈ＿ｓｅｔ［７：０］）がＰＣＩバス上の各デバイスに関してプリフェッチ機能が利用可能か否かについての管理を行う。プリフェッチ・イネーブル信号内のすべてのビットは、リセット（ＲＳＴ）及びＱＰＩＦがすべてのＤＣＱレジスタの総フラッシュを指示したとき（即ち、ｇｅｎｅｒａｌ＿ｆｌｕｓｈがアサートされ、ｑ２ｐｉｆ＿ｓｌｏｔ［２：０］が”０００”になったとき）にクリアされる。なお、ｇｅｎｅｒａｌ＿ｆｌｕｓｈ信号については下に詳述する。ゲート２２１６及び２２１８によってｐｒｅｆｅｔｃｈ＿ｓｅｔのビットをリセットする信号を生成する。
プリフェッチ・イネーブル信号内の個々のビットは、対応するＰＣＩスロットがｑ２ｐｉｆ＿ｓｌｏｔ信号によって選択され、次の条件が発生した場合にセットされる：  即ち、要求しているデバイスがＤＣＱ内の遅延完了バッファをヒットした（即ち、ｃｙｃｌｅ＿ｈｉｔ［７：０］）信号内のビットの１つがアサートされた）、現在のトランザクションがメモリ読出しラインまたはメモリ読出し多重サイクルである（即ち、ｑ２ｐｉｆ＿ｃｍｄ［３：０］信号が”１１００”または”１１１１０”に等しい）、ＱＰＩＦがサイクルの完了を表示した（即ち、ｑ２ｐｉｆ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅがアサートされた）、及びＤＣＱバッファからデータの最終ワードが取り出された（即ち、ｌａｓｔ＿ｗｏｒｄがアサートされた）。ゲート２２２０、２２２２、２２２４、２２２８ａ−ｈ、及びデコーダ２２２６が、予測ビットをこうしてセットするように構成される。ｌａｓｔ＿ｗｏｒｄ信号は、要求しているデバイスがＤＣＱバッファの終わりを超えて読み出しを試みた場合にプリフェッチ・ロジック２２１２によってアサートされる。これは、アウト・ポインタとイン・ポインタが等しくて、ＤＣＱバッファの終わりに達したことを表示している（即ち、４キャシュ・ラインのバッファについてｏｕｔ＿ｐｏｉｎｔｅｒ＿Ｘ［４：０］がｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿ｘ［４：０］）に等しい、または８キャシュ・ラインのバッファについてｏｕｔ＿ｐｏｉｎｔｅｒ＿Ｘ［５：０］がｖａｌｉｄ＿ｐｏｉｎｔｅｒ＿ｘ［５：０］に等しく、要求しているデバイスがデータの次の部分を読み出そうとした（即ち、ｐ２ｐｉｆ＿ｎｅｘｔ＿ｄａｔａがアサートされた）ときに発生する。ゲート２２３０、２２３２、及び２２３４がｌａｓｔ＿ｗｏｒｄ信号をこうして生成するように構成される。
プリフェッチ・イネーブル信号内の個々のビットは、まず対応するＰＣＩスロットが選択されて、ＰＣＩフラッシュ条件が発生（ｐ２ｑ＿ｆｌｕｓｈがアサートされる）するか、ＱＰＩＦがＤＣＱに対しそのバッファの有効ポインタのステップバックを指示（ｑ２ｐ＿ｓｔｅｐ＿ｂａｃｋがアサートされる）するか、あるいは要求しているデバイスがＤＣＱバッファをすべてミスするトランザクションを開始した（ｑ２ｐｉｆ＿ｃｈｅｃｋ＿ｃｙｃがアサートされ、ｄｃｑ＿ｈｉｔがディアサートされる）場合にクリアされる。ゲート２２３６、２２３８、２２４０ａ−ｈ、及びデコーダ２２２６が、予測イネーブル・ビットをこうしてクリアするように構成される。
【００３２】
ＰＣＩバス上の１つのデバイスに対してプリフェッチ機能がイネーブルされたとき、プリフェッチ・ロジック２２１２はそのデバイスに対して２種類のプリフェッチ信号を生成することができる：  即ち、プリフェッチ・ライン信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｌｉｎｅ）及びプリフェッチ多重信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｍｕｌ）。プリフェッチ・ライン信号は、要求しているデバイスからのカレントのＰＣＩコマンドがメモリ読出しライン信号である場合に生成され、プリフェッチ多重信号は、現在のＰＣＩコマンドがメモリ読出し多重信号である場合に生成される。いずれの場合においても、次の条件が発生したときに対応するプリフェッチ信号が生成される。即ち、要求しているＰＣＩスロットのｐｒｅｆｅｔｃｈ＿ｓｅｔビットがセットされる；コンフィギュレーション・レジスタ内の対応するプリフェッチ・イネーブル・ビットがセットされる（ｃｆｇ２ｑ＿ａｕｔｏ＿ｐｒｅｆｅｔｃｈ＿ｅｎａｂｌｅ）；アップストリ―ム・チップ内のＤＲＱバッファがフルになっていない（！ｔｃ＿ｄｃ＿ｆｕｌｌ）；ＤＣＱバッファ内に対応する量のプリフェッチ・データのための余裕がある（！ｄｃｑ＿ｎｏ＿ｐｒｅｆｅｔｃｈ＿ｒｏｏｍ）；現サイクルがＤＣＱバッファをヒットした；及び要求しているマスタがＤＣＱバッファの終わりを超えて読み出しを試みた（ｌａｓｔ＿ｗｏｒｄ及びｑ２ｐｉｆ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ）。ゲート２２４２、２２４４、２２４６、２２４８、２２５０、２２５２、デコーダ２２５４、及びマルチプレクサ２２５６、２２５８が、プリフェッチ信号をこうして生成するように構成される。
プリフェッチ・ロジック２２１２がプリフェッチ信号を生成するとき、対応するＤＣＱバッファ（ｑ０＿ａｄｄｒ［６３：７］はバッファ０、ｑ１＿ａｄｄｒ［６３：７］はバッファ１、等）内に格納されているアドレスの上位５７ビットと、そのバッファの出力ポインタ（ｏｕｔ＿ｐｏｉｎｔｅｒ＿０［４：０］等）の下位５ビットを連結して、対応するプリフェッチ・アドレス信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ａｄｄｒ［６３：２］）を生成する。デュアル・アドレス・サイクル信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｄａｃ）は、そのプリフェッチ・トランザクションがデュアル・アドレス・サイクルとシングル・アドレス・サイクルのいずれであるかを表示する。ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｃｙｃｌｅ信号はＤＣＱバッファ（ｑ０＿ｄａｃ、ｑ１＿ｄａｃ等）内に格納されているデュアル・アドレスの値をとる。プリフェッチ・アドレス及びデュアル・アドレス・サイクル信号の両方について、適切な値がマルチプレクサ２２６０または２２６２から出力され、現在の要求によってヒットされたＤＣＱバッファを示す３ビットのＤＣＱバッファ番号信号によって選択される。
【００３３】
再び第７９図を参照する。ＤＣＱデータ・バッファはいくつかの異なった状態に在り得る。それらの状態は、それぞれＤＣＱ内のバッファ・ステート・ロジック・ブロック２２６４によって決定される。次にバッファのそれぞれの状態を示す。
１．  Ｅｍｐｔｙ。割り当て時におかれるべき状態。バッファはパワーアップ後、及びフラッシュされた後はＥｍｐｔｙである。
２．  Ｃｏｍｐｌｅｔｅ。バッファにはＰＣＩバス上のデバイスが出したリアル遅延要求（即ち、プリフェッチ要求ではない）からの遅延完了のための完了情報が入っている。ＰＣＩデバイスは未だ再接続されておらず、バッファからデータを取り出していない。遅延完了トランザクションは完了している。
３．  Ｐｒｅｆｅｔｃｈ。バッファにはプリフェッチ要求のための完了データ、または要求しているマスタがバッファから切り離された後に残された要求データが入っている。完了データはすべてターゲットから到着している。
４．  ＰａｒｔＣｏｍｐｌｅｔｅ。バッファは予約されており、リアル遅延要求（即ち、プリフェッチ要求ではない）のための完了情報が入っている場合がある。マスタは未だ再接続されておらず、バッファからデータを取り出していない。ターゲットから到着している完了情報はすべてではない。
５．  ＰａｒｔＰｒｅｆｅｔｃｈ。バッファは予約されているか、あるいはプリフェッチ要求のための完了情報が入っているか、または要求しているマスタがバッファから切り離された後に残された要求データが入っている。ターゲットから到着している完了情報はすべてではない。
６．  Ｄｉｓｃａｒｄ。バッファはＰａｒｔＰｒｅｆｅｔｃｈ状態にあるときフラッシュされたが、最後の完了データはターゲットから未だ到着していない。バッファは、トランザクションがターゲットのバス上で完了し、最後のデータが到着する前に使用されるのを防止するためＤｉｓｃａｒｄ状態におかれる。
ＱＰＩＦが遅延要求トランザクションのためにＤＣＱバッファを要求すると、バッファ状態ロジック２２６４はバッファを次の順序で割り当てる。もしどのバッファもＥｍｐｔｙまたはＰｒｅｆｅｔｃｈ状態にないと、要求しているマスタを再試行しなければならない。
【表１０】
0003895006.tif 000011
【００３４】
ＰＣＩバス上のデバイスが遅延読出し要求を開始してＤＣＱ完了バッファが除外されると、バッファ状態ロジック２２６４はそのバッファの状態をＰａｒｔＣｏｍｐｌｅｔｅに変える。ＤＣＱがプリフェッチ読出しを開始すると、バッファの状態がＰａｒｔＰｒｅｆｅｔｃｈに変更される。完了データの最後の部分が到着すると、バッファの状態がＰａｒｔＣｏｍｐｌｅｔｅまたはＰａｒｔＰｒｅｆｅｔｃｈから、それぞれＣｏｍｐｌｅｔｅまたはＰｒｅｆｅｔｃｈに変更される。要求しているデバイスが再試行された要求を再び出してバッファをヒットした場合、もしそのバッファがＣｏｍｐｌｅｔｅ、Ｐｒｅｆｅｔｃｈ、ＰａｒｔＣｏｍｐｌｅｔｅ、またはＰａｒｔＰｒｅｆｅｔｃｈの状態にあれば、有効な完了データがマスタに与えられる。もしマスタが切断の前にすべてのデータを取らなければ、バッファの状態がＰｒｅｆｅｔｃｈまたはＰａｒｔＰｒｅｆｅｔｃｈに変更され、求められなかったデータはプリフェッチ・データと見なされる。バッファがＣｏｍｐｌｅｔｅまたはＰｒｅｆｅｔｃｈの状態にあるときにマスタがデータの最後の部分を取れば、そのバッファの状態がＥｍｐｔｙに変更される。
バッファがＰｒｅｆｅｔｃｈ状態にあるときにフラッシュ信号が受信されると、そのバッファ内のプリフェッチ・データは破棄され、バッファの状態がＥｍｐｔｙに変更される。バッファがＰａｒｔＰｒｅｆｅｔｃｈ状態にあり、完了データの到着が続いているときにフラッシュ・イベントが発生すれば、プリフェッチ・データがすべて到着するまで、そのバッファはＤｉｓｃａｒｄ状態に変更される。トランザクションが完了したとき、プリフェッチ・データは破棄されてバッファの状態がＥｍｐｔｒｙに変更される。フラッシュ信号が受信されたときバッファがＣｏｍｐｌｅｔｅまたはＰａｒｔＣｏｍｐｌｅｔｅ状態に在ると、完了データがそのバッファ内に残されて、バッファの状態は変更されない。下に述べるように、ＰＣＩデバイスが新しい要求（即ち、現在、待ち行列に入れられていなくて完了バッファをすべて「ミス」する要求）を出したためにフラッシュ信号が発生すると、上に述べたように、ＤＣＱはそのトランザクションのために新しいバッファを割り当てる。従って、１つのＰＣＩデバイスに複数の完了バッファが割り当てられている場合があり得る。ＰＣＩデバイスの持っているバッファが完了データを保持しているか、またはそれを待っていて（即ち、そのバッファがＣｏｍｐｌｅｔｅまたはＰａｒｔＣｏｍｐｌｅｔｅ状態に在る）、そのデバイスが新しい要求を出す場合、そのＰＣＩデバイスには複数のバッファを割り当てることができる。マルチスレディッド・デバイスは一時に複数のトランザクションを保持できる唯一のデバイスであるため、多重スレッド・デバイスのみが同時に複数の完了バッファを予約できる。
【００３５】
マスタ・サイクル・アービタ
マスタ・サイクル・アービタ（ＭＣＡ）は、ＰＣＩスペック２．１に規定されているポステド・メモリ書込み、遅延要求、及び遅延完了サイクル間の序列制約条件を守ってポステド・メモリ書込み及び遅延要求トランザクションの実行順序を決定する。ＰＣＩスペック２．１に従って、ＭＣＡは実行されるサイクルが明確な書き込み序列を保ち、且つデッドロックが発生しないことを保証しなければならない。デッドロックが起こらないことを保証するために、ポステド・メモリ書込みサイクルは先に待ち行列化されている遅延要求サイクルをパスすることが許されなければならない。また、規定されている序列制約条件に準拠するために、遅延・要求・サイクル及び遅延・完了・サイクルには先に待ち行列化されているポステド・メモリ・サイクルをパスすることを決して許してはならない。
第８５図を参照する。ＭＣＡは、トランザクション実行待ち行列（ＴＲＱ）（またはトランザクション実行待ち行列）２２７０及びトランザクション順序待ち行列（ＴＯＱ）２２７２という２種類のトランザクション待ち行列を使用して、ＰＭＷＱ、ＤＲＱ、及びＤＣＱ内に待ち行列化されているサイクルを管理する。ＭＣＡコントロール・ブロック２２７４は、ＰＭＷＱ、ＤＲＱ、及びＤＣＱからトランザクションを４ビットのバリデーション要求信号（ｐｍｗｑ＿ｖａｌｉｄ［３：０］、ｄｒｑ＿ｖａｌｉｄ［３：０］、及びｄｃｑ＿ｖａｌｉｄ［３：０］）のフォームで受け取り、実行コマンドを４ビットの実行信号（ｍｃａ＿ｒｕｎ＿ｐｍｗｑ［３：０］、ｍｃａ＿ｒｕｎ＿ｄｒｑ［３：０］、及びｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］）のフォームでアウトプットする。トランザクションはＴＲＱコントロール・ブロック２２７６及びＴＯＱコントロール・ブロック２２７８によって、それぞれＴＲＱ２２７０及びＴＯＱ２２７２に出し入れされる。
【００３６】
更に第８６図を参照する。ＴＲＱ２２７０は、それからＭＣＡがトランザクションの実行順序を決定する待ち行列である。ＴＲＱ２２７０内のトランザクションは、トランザクションの序列規則を侵すことなく任意の順序で実行できるが、一旦ポステド・メモリ書込みサイクルがＴＲＱ２２７０内に入れられると、そのポステド・メモリ書込みが除去されるまでは他のサイクルをＴＲＱ２２７０に入れることができない。ＴＲＱ２２７０内でのトランザクションは循環的順序で試みられ、一般にそれらが受け取られた順序で完了する。しかし、もしＴＲＱ２２７０内の１つのトランザクションがＰＣＩバス上で再試行されると、ＭＣＡはＰＣＩバス上で試行（トライ）すべくＴＲＱ２２７０内の次のトランザクションを選択することがある。遅延完了トランザクションはマスタ・サイクルではなくスレーブ・サイクルであるため、これらは決してＴＲＱ２２７０内に入れられない。更に、遅延完了情報は、もしＰＭＷＱ内にこれから開始されるべきポステド・メモリ書込みサイクルが無ければ、ＤＣＱに入ると直ちに要求しているデバイスに供されるので、下に詳述するように、遅延完了トランザクションはＴＲＱ２２７０内にこれから開始されるべきポステド・メモリ書込みサイクルがある場合にのみＴＯＣ２２７２に入れられる。
ＴＲＱ２２７０は、一度に最大４つのトランザクションを保持することができる循環的な待ち行列である。ＭＣＡは、規定されている序列制約条件に従って常に少なくとも１つのポステド・メモリ書込みトランザクションを実行できる状態になければならないので、ＴＲＱ２２７０は決して３つを超える遅延要求トランザクションを一度に保持することができない。更にまた、ポステド書込みは後から開始される他のポステド書込みを含む、どのようなトランザクションもパスすることができないので、ＴＲＱは一度にただ１つのポステド書込みトランザクションしか保持できない。ＴＲＱ２２７０のスロット２２８０ａ−ｄの各々には３ビットの情報が入っている。即ち、１ビットのサイクル・タイプ・インディケータ２２８２（ポステド・メモリ書込みトランザクションは”１”、遅延要求トランザクションは”０”）、及び２ビットの有効インタ２２８４であり、これが表し得る４つの値で待ち行列化されたトランザクションが占めているＰＭＷＱまたはＤＲＱ内のバッファを識別する。ＴＲＱ２２７０はＩ／Ｏイネーブル・ブロック２２８６も含み、これによってＴＲＱ  ２２７０にトランザクションを出し入れできる時機を判断する。入力ロジック・ブロック２２８８はトランザクションのＴＲＱ２２７０への収容をコントロールし、出力ロジック・ブロック２２９０はトランザクションのＴＲＱ２２７０からの除去をコントロールする。これらのロジック・ブロックには標準的な待ち行列管理回路が入っている。
【００３７】
サーキュラ入力ポインタ２２９２は、到来トランザクションを受容すべく次に利用可能なスロットを選択する。この入力ポインタは、入トランザクションの履歴的な順序をできるだけ維持するように循環的なものである。
サーキュラ出力ポインタ２２９４は、ＴＲＱ  ２２７０内のトランザクション間で調停を行い、それらの実行順序を決める。この出力ポインタ２２９４は、スタートアップ時には常にＴＲＱ  ２２７０内のトップ・スロットから始まってＴＲＱ  ２２７０内を循環的に進む。この出力ポインタ２２９４は、コンフィギュレーション・レジスタ（ｃｆｇ２ｑ＿ｉｎｆｒｅｔｒｙ）内の無限再試行ビットをセットまたはクリアし、それぞれ無限再試行またはゼロ再試行モードで動作するように構成することができる。無限再試行モードでは、出力ポインタ２２９４は１つのトランザクションがＰＣＩバス上で首尾よく実行されるまでそのトランザクションに留まっている。ゼロ再試行モードでは、出力ポインタ２２９４は１つのトランザクションがバス上で試行される毎に、そのトランザクションが首尾よく完了するか再試行されるかに関わりなく増分される（即ち、ｑ２ｐｉｆ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅが直前のＰＣＩクロック・サイクルについてアサートされる）。ＰＣＩスペック２．１ではポスティッド・メモリ書込みトランザクションにディレード要求トランザクションのバイパスを許すように指示しているので、少なくとも１つのブリッジ・チップ内の出力ポインタ２２９４はゼロ再試行モードで動作するように構成されなければならない。なお、ダウンストリーム・チップは常にゼロ再試行モードで動作するように構成される。その代わり、無限再試行モードにおいてＰＣＩバス上で各トランザクションを出力ポインタが増分される前に所定の回数（例えば、３回）だけ試行されるように、この出力ポインタを無限再試行モードで動作するよう構成することができる。アップストリ―ムとダウンストリーム・チップは、両方ともＰＣＩスペック２．１の序列制約条件を侵すことなく無限再試行モードで動作するように構成することができる。いずれの場合も、出力ポインタはトランザクションがターゲットのＰＣＩバス上で首尾よく完了できないときにのみ増分して、ＴＲＱ２２７０内に格納されているトランザクションの履歴的な順序を維持するように試行する。
【００３８】
下に述べるように、ポスティッド・メモリ書込みまたは遅延要求サイクルがＴＯＱ２２７２から飛び出されたとき（ｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅがアサートされる）、またはＴＯＱ２２７２がイネーブルされなくて（！ｔｏｑ＿ｅｎａｂｌｅｄ）、ＭＣＡによって新しいサイクルが受信されたとき（ｎｅｗ＿ｖａｌｉｄ＿ｓｅｔ）、その新しいサイクルのサイクル・タイプ・ビット及び有効ビットがＴＲＱ内の次の空のスロットにロードされる。もしそのサイクルがＴＯＱ  ２２７２から来ていれば、その有効ビット及びサイクル・タイプ・ビットは、それぞれＴＯＱの有効及びサイクル・タイプ信号（ｔｏｑ＿ｖａｌｉｄ［１：０］及びｔｏｑ＿ｃｙｃｌｅ［０］）に供給される。それ以外の場合、新しいサイクルの情報はＭＣＡの有効及びサイクル・タイプ信号（ｄ＿ｖａｌｉｄｏ［１：０］及びｄ＿ｃｙｃｔｙｐｅ［０］）によって供給される。ゲート２２９６、２２９８、及びマルチプレクサ２３００、２３０２が、ＴＲＱ２２７０にロードされるべきサイクルの選択をコントロールするように構成される。１つのサイクルがＰＣＩバス上で首尾よく実行されると、そのサイクルはトランザクション順序待ち行列から除去され、そのサイクル・タイプ・ビット及び有効ビットが、それぞれＴＲＱのサイクル・タイプ及び有効信号（ｔｒｑ＿ｃｙｃｔｙｐｅ［０］及びｔｒｑ＿ｖａｌｉｄｏ［１：０］）としてＭＣＡコントロール・ブロック２２７４に供給される。
ＴＲＱコントロール・ブロック２２７６はｔｒｑ＿ｐｍｗ信号を生成し、ＴＲＱ２２７０内にポスティッド・メモリ書込みトランザクションが待ち行列に入れたことを表示する。この信号がアサートされた場合、後に続いて出される遅延要求及び遅延完了トランザクションは、下に述べるように、ＴＯＱ  ２２７２内に待ち行列に入れなければならない。ＭＣＡコントロール・ブロック２２７４がＴＲＱ２２７０に対して新しいポスティッド・メモリ書込みサイクルを待ち行列に入れるように指示したか（ｔｒｑ＿ｓｌｏｔ＿ｖａｌｉｄ＿ｓｅｔが”００００”に等しくなくｄ＿ｔｒｑ＿ｃｙｃｔｙｐｅが”１”）、またはその代わりにＴＲＱサイクル・スロット２２８０ａ−ｄのいずれかに１つのサイクルが入っており（ｔｒｑ＿ｓｌｏｔ＿ｖａｌｉｄ［３：０］が”００００”に等しくない）、少なくとも１つのサイクルがポスティッド・メモリ書込みサイクルであり（ｔｒｑ＿ｃｙｃｔｙｐｅが”１”に等しい）、そして、そのポスティッド・メモリ書込みサイクルが対応するスロット２２８０ａ−ｄからクリアされていない（！ｔｒｑ＿ｓｌｏｔ＿ｖａｌｉｄ＿ｒｓｔ［３：０］）場合、ｔｒｑ＿ｐｍｗ信号がアサートされている。ゲート２３０４、２３０６、２３０８、２３１０、及び２３１２が、ｔｒｑ＿ｐｍｗをこうして生成するように構成される。
【００３９】
次に第８７図を参照する。ＴＯＱ  ２２７２は先入れ先出し（ＦＩＦＯ）待ち行列であり、ポステド・メモリ書込みトランザクションがＴＲＱ２２７０に入れられた後にブリッジが受信するトランザクションの履歴的な順序を保持する。すべてのトランザクションは先に出されたポステド・メモリ書込みの実行を待たなければならないので、ポステド・メモリ書込み、遅延要求、及び遅延完了トランザクションを含むすべてのトランザクションは、ポステド・メモリ書込みがＴＲＱ２２７０内に待機状態にされているときにはＴＯＱ２２７２内に入れられている。ＴＯＱ２２７２内のトランザクションは、そのポステド・メモリ書込みトランザクションがＴＲＱ２２７０から除去されるまでＴＯＱ２２７２内に留まっていなければならない。
８つのスロットを持つＴＯＱ２２７２は、最大３つのポステド・メモリ書込みトランザクション（４番めはＴＲＱ２２７０内に格納される）、３つの遅延要求トランザクション、及び４つの遅延完了トランザクションを保持することができる。ＴＯＱ２２７２内のスロット２３１４ａ−ｄの各々には、対応するトランザクションを識別する２つのサイクル・タイプ・ビット２３１６（”０１”はポスティッド・メモリ書込み、”００”は遅延要求、及び”１ｘ”は遅延完了）、及び対応するトランザクションが占めているＰＭＷＱ、ＤＲＱ、及びＤＣＱ内のバッファを識別する２つの有効ビット２３１８が入っている。ＴＯＱ２２７２は標準の入力及び出力ロジック・ブロック（２３２０及び２３２２）も含み、これらでＴＯＱ２２７２におけるトランザクションの出入りをコントロールする。
ＴＯＱ２２７２内のトランザクションが入れられる位置、及び除去される位置は、それぞれ３ビットの入力カウンタ２３２６（ｉｎｐｕｔｒ［２：０］）及び３ビットの出力カウンタ２３２４（ｏｕｔｐｕｔｒ［２：０］）によって決る。両方のカウンタはＴＯＱ２２７２内の最初のスロット２３１４ａから始まり、トランザクションが入れられたり除去されるときに待ち行列を通じて増分する。入力カウンタ２３２６は、ＴＯＱ２２７２がイネーブルされ（ｔｏｑ＿ｅｎａｂｌｅｄがアサートされる）、ＭＣＡコントロール・ブロック２２７４がＴＯＱ２２７２に新しいサイクルを供給する（ｎｅｗ＿ｖａｌｉｄ＿ｓｅｔがアサートされる）毎にＰＣＩサイクルの立上りで増分する。新しいサイクルの各々に関する有効ビット及びサイクル・タイプ信号は、ＭＣＡの有効及びサイクル・タイプ信号（ｄ＿ｖａｌｉｄｏ［１：０］及びｄ＿ｃｙｃｔｙｐｅ［１：０］）で与えられる。出力カウンタ２３２４は、ＭＣＡコントロール・ブロック２２７４がＴＯＱ２２７２に対して次のサイクルへ移るよう指示し（ｎｅｘｔ＿ｔｏｑ＿ｃｙｃｌｅがアサートされる）、ＴＯＱ２２７２が空でない（即ち、ｉｎｐｕｔｒ［２：０］がｏｕｔｐｕｔｒ［２：０］と等しくない）とき、各ＰＣＩクロック・サイクルの立上りで増分する。ＴＯＱ２２７２から出て行くサイクルは、ＴＯＱの有効及びサイクル・タイプ信号（ｔｏｑ＿ｖａｌｉｄｏ［１：０］及びｔｏｑ＿ｃｙｃｔｙｐｅｏ［１：０］）によって表示される。ゲート２３２８、２３３０、及びコンパレータ２３３２が、入力カウンタ２３２６及び出力カウンタ２３２４を適切にクロックするよう構成される。
遅延要求トランザクションまたはポステド・メモリ書込みトランザクションがＴＯＱ２２７２からポップされたとき、そのトランザクションはＴＲＱ２２７０に入れられて調停を待つ。しかし、遅延完了トランザクションはターゲットのトランザクションでありマスタのトランザクションではないので、遅延完了はＴＲＱ２２７０に入れられない。その代わり、遅延完了は単にＴＯＱ２２７２からポップされてＤＣＱデータ・バッファ内の対応するデータの有効性（妥当性）検査に用いられる。しかし、ポステド・メモリ書込みトランザクションがＴＲＱ２２７０内で待ち行列に入れられている限り、２つまたはそれ以上の遅延完了が同じ遅延要求に対応し、従って遅延完了バッファが同じである場合でも、上に述べたように、すべての遅延完了はＴＯＱ２２７２に入れなければならない。
【００４０】
第８８〜９１図を参照する。ＭＣＡコントロール・ブロック２２７４はＭＣＡを経るトランザクションの流れをコントロールする。上に述べたように、ＰＭＷＱ、ＤＲＱ、及びＤＣＱは、それぞれ４ビットの有効性（妥当性）検査信号ｐｍｗｑ＿ｖａｌｉｄ［３：０］、ｄｒｑ＿ｖａｌｉｄ［３：０］、及びｄｃｑ＿ｖａｌｉｄ［３：０］をＭＣＡに送って、その待ち行列に保持されているトランザクションの有効性検査を要求する。各クロック・パルスで新しいトランザクションは１つしか待ち行列ブロックに入れることができないので、これらの信号のうち、各クロックパルス中に変更できるのは１ビットのみである。従って、ＭＣＡコントロール・ブロックはｐｍｗｑ＿ｖａｌｉｄ、ｄｒｑ＿ｖａｌｉｄ、及びｄｃｑ＿ｖａｌｉｄ信号の中の変化するビットを監視して新しい有効性検査要求を識別する。これを行うため、ＭＣＡコントロール・ブロックはすべてのＰＣＩクロックの立上りで各信号をラッチし、反転して遅延信号を作成し、その遅延反転信号を現在の信号（即ち、次のクロックパルスにおける信号）と比較する。新しく変更されたビットのみが遅延反転信号の中のそれに対応するものと同じ値をとっているので、ＭＣＡコントロール・ブロックは変更されたビットを検出することができる。フリップ・フロップ２３４０、２３４２、２３４４、及びゲート２３４６、２３４８、２３５０を用いて、ＭＣＡコントローラはｎｅｗ＿ｐｍｗｑ＿ｖａｌｉｄ［３：０］、ｎｅｗ＿ｄｒｑ＿ｖａｌｉｄ［３：０］、及びｎｅｗ＿ｄｃｑ＿ｖａｌｉｄ［３：０］信号を生成し、これらが一緒に各クロックパルスで、もしあるとすれば、ＰＭＷＱ、ＤＲＱ、またはＤＣＱが有効性検査のために新しい信号を出したかどうか、そして対応する待ち行列内のどのバッファにその新しいトランザクションが入っているかを確認する。
【００４１】
更に第９２図も参照する。ＭＣＡコントロール・ブロックはルックアップ・テーブル２３５２を用いてｎｅｗ＿ｐｍｗｑ＿ｖａｌｉｄ、ｎｅｗ＿ｄｒｑ＿ｖａｌｉｄ、及びｎｅｗ＿ｄｃｑ＿ｖａｌｉｄ信号の１２ビットを、上に述べたようにＴＲＱ及びＴＯＱに供給された２ビットのｄ＿ｖａｌｉｄ［１：０］及びｄ＿ｃｙｃｔｙｐｅ［１：０］信号に変換する。
ＭＣＡコントローラは、ｔｒｑ＿ｐｍｗ信号がアサートされてＴＲＱ内にポステド・メモリ書込みサイクルが待機状態にされていることを表示しているか、またはｔｏｑ＿ｅｎａｂｌｅ信号が既にアサートされておりＴＯＱが空でない（！ｔｏｑ＿ｅｍｐｔｙ）とき、ｔｏｑ＿ｅｎａｂｌｅｄ信号を”１”の値にラッチしてＴＯＱをイネーブルする。ゲート２３５４、２３５６、及びフリップ・フロップ２３５８が、ｔｏｑ＿ｅｎａｂｌｅｄをこのようにして生成するように構成される。
ＭＣＡコントロール・ブロックは、直前のクロック・サイクル中でＴＲＱ内にポステド・メモリ書込みサイクルが無く（！ｓ１＿ｔｒｑ＿ｐｍｗ）、ＴＯＱが空でなく（！ｔｏｑ＿ｅｍｐｔｙ）、ＴＯＱからポップされているサイクルが遅延完了トランザクションでない（！（ｔｏｑ＿ｃｙｃｔｙｐｅｏ［１］＝”ＤＣ”））とき、ｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅ信号をアサートし、ＴＲＱに対してＴＯＱからポップされているサイクルを待ち行列に入れるよう指示する。ＭＣＡコントローラは、ゲート２３６０を用いてｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅ信号を生成する。
ＴＯＱが空でなく（！ｔｏｑ＿ｅｍｐｔｙ）、ＴＲＱ内に現在待ち行列に入れられているポステド・メモリ書込みサイクルが無く（！ｓ１＿ｔｒｑ＿ｐｍｗ）、ＴＯＱ内における次のサイクルが遅延完了であるか（ｔｏｑ＿ｃｙｃｔｙｐｅｏ［１］＝”ＤＣ”）、あるいは次のＴＯＱサイクルがポステド・メモリ書込みまたは遅延要求トランザクションであり（！（ｔｏｑ＿ｃｙｃｔｙｏｅ［１］＝”ＤＣ”））、直前のクロック・サイクル中でＴＲＱ内にポステド・メモリ書込みサイクルが無かった（！ｓ１＿ｔｒｑ＿ｐｍｗ）場合に、ＴＯＱカウンタをＴＯＱ内の次のサイクルに増分するために用いられるｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅ信号がアサートされる。このコントロール・ブロックは、ゲート２３６２、２３６４、及び２３６６を用いてｎｅｘｔ＿ｔｏｑ＿ｃｙｃｌｅ信号を生成する。
【００４２】
ＭＣＡコントローラはｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］信号を生成し、ＴＯＱから遅延完了トランザクションがポップされたことを表示する。ＴＲＱ内にポスティッド・メモリ書込みサイクルが入っておらず（！ｔｒｑ＿ｐｍｗ）、ＴＯＱが空でなく（！ｔｏｑ＿ｅｍｐｔｙ）、そしてＴＯＱのサイクルが遅延完了である（ｔｏｑ＿ｃｙｃｔｙｏｅ［１］＝”ＤＣ”）場合、上に述べたように、ｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］信号はデコードされたｔｏｑ＿ｖａｌｉｄｏ［１：０］信号の値をとる。それ以外の場合、ｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］信号の値は”００００”に等しい。ゲート２３７０、デコーダ２３７２、及びマルチプレクサ２３７４が、ｍｃａ＿ｒｕｎ＿ｄｃｑ［３：０］信号をこのようにして生成するように構成される。
ＭＣＡコントロール・ブロックはｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号を生成して、それが待機状態にされるべき新しい遅延要求トランザクション及びポステド・メモリ書込みトランザクションを持っていることをそれぞれ表示する。ｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］信号は、新しいサイクルが遅延要求サイクル（ｄ＿ｃｙｃｔｙｐｅ［０］＝”ＤＲ”）のとき、上に述べた２ｘ４デコーダでデコードされたｄ＿ｖａｌｉｄｏ［１：０］信号の値をとる。それ以外の場合、ｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］信号のすべてのビットがゼロに設定される。同様に、ｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は、新しいサイクルがポステド・メモリ書込みトランザクションであれば２ｘ４デコーダでデコードされたｄ＿ｖａｌｉｄｏ［１：０］信号の値をとり、そうでなければ”００００”にセットされる。デコーダ２３７６、２３８０、及びマルチプレクサ２３７８、２３８２が、ｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｄｒ及びｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｐｍｗをこうして生成するように構成される。
【００４３】
ＭＣＡコントローラはｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号を生成し、それぞれ新しい遅延要求またはポステド・メモリ書込みトランザクションがＴＯＱからポップされたとき、そのことを表示する。ｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］信号は、遅延要求サイクルがＴＯＱからポップされた場合は２ｘ４デコードされたｔｏｑ＿ｖａｌｉｄｏ［１：０］の値をとり、そうでなければ”００００”となる。同様に、ｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は、ポステド・メモリ書込みサイクルがＴＯＱからポップされた場合は２ｘ４デコードされたｔｏｑ＿ｖａｌｉｄｏ［１：０］の値をとり、そうでなければ”００００”となる。デコーダ２３８４、２３８８、及びマルチプレクサ２３８６、２３９０が、ｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ及びｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗを、こうして生成するように構成されて用いられる。
ＭＣＡコントローラはｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号を生成し、それぞれ新しい遅延トランザクションまたはポステド・メモリ書込みトランザクションがＴＲＱ内で調停されてＰＣＩバス上での実行が可能になっていれば、そのことを表示する。ｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］信号は、遅延要求サイクルが優先的に調停されて、ＴＲＱが空でない場合２ｘ４デコードされたｔｒｑ＿ｖａｌｉｄｏ［１：０］信号の値をとる。さもなくば、ｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］の値は”００００”となる。同様に、ｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は、ポステド・メモリ書込みサイクルが優先的に調停されて、ＴＲＱが空でない場合、２ｘ４デコードされたｔｒｑ＿ｖａｌｉｄｏ［１：０］信号の値をとる。それ以外の場合、ｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］の値は”００００”となる。ゲート２３９２、２３９８、デコーダ２３９４、２４００、及びマルチプレクサ２３９６、２４０２が、ｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ及びｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ信号をこうして生成するように構成されてる。
【００４４】
ＴＲＱが空のとき、ＭＣＡはＴＯＱ内の次のトランザクションをＴＲＱに入れて実行する要求を出すことができる。ＴＲＱもＴＯＱも空であれば、トランザクションはＴＲＱに入れられる前にでも実行を開始することができる。従ってＭＣＡコントロール・ブロックは、トランザクションがＰＣＩバス上で試行できることを表示するｎｅｗ＿ｍｃａ＿ｒｕｎまたはｔｏｑ＿ｍｃａ＿ｒｕｎ信号を非同期で用いられる時機を決定するロジックを含む。ｎｅｗ＿ｍｃａ＿ｒｕｎ及びｔｏｑ＿ｍｃａ＿ｒｕｎ信号を非同期の実行信号に変換することによって、ＭＣＡコントローラはＰＣＩクロック・ウエイト状態をセーブする。新しいｎｅｗ＿ｖａｌｉｄ＿ｓｅｔ信号がＭＣＡコントロール・ブロックにアサートされ、ＴＯＱがイネーブルされていない（！ｔｏｑ＿ｅｎａｂｌｅｄ）場合、ａｓｙｎｃ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びａｓｙｎｃ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は、それぞれｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｎｅｗ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号の値をとる。そうでなければ、非同期の実行信号はｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｔｏｑ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号の値をとる。ＭＣＡコントローラは、ゲート２４０４、及びマルチプレクサ２４０６、２４０８を用いてこの非同期実行信号を生成する。
ＰＣＩバス・マスタが１つのトランザクションを完了し（ｓ１＿ｑ２ｐｉｆ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅがアサートされる）、ＴＲＱが空でなく（！ｔｒｑ＿ｅｍｐｔｙ）ゼロ再試行モードで動作するように構成されており（！ｃｆｇ２ｑ＿ｉｎｆｒｅｔｒｙ）、そしてＴＯＱから新しいトランザクションがポップされたか（ｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅ）、あるいはＴＯＱがイネーブルされておらず（！ｔｏｑ＿ｅｎａｂｌｅｄ）、ＭＣＡが有効性検査がされるべき新しいサイクルを受け取った（ｎｅｗ＿ｖａｌｉｄ＿ｓｅｔ）場合、ＭＣＡはＰＣＩバス上で実行するサイクルを選択できなくてｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は”００００”にセットされる。それ以外の場合、もしＴＲＱが空で（ｔｒｑ＿ｅｍｐｔｙ）、ＴＯＱから新しいトランザクションがポップされたか（ｎｅｗ＿ｔｏｑ＿ｃｙｃｌｅ）、あるいはＴＯＱがイネーブルされておらず（！ｔｏｑ＿ｅｎａｂｌｅｄ）、そしてＭＣＡが有効性性検査されるべき新しいサイクル（ｎｅｗ＿ｖａｌｉｄ＿ｓｅｔ）を受け取れば、ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号は、それぞれ非同期の実行信号ａｓｙｎｃ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］及びａｓｙｎｃ＿ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号の値をとる。さもなくば、ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］はｔｒｑ＿ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］信号の値をとり、ｍｃａ＿ｒｕｎ＿ｐｍｗ［３：０］信号はＰＭＷＱからの妥当性検査要求信号（ｐｍｗｑ＿ｖａｌｉｄ［３：０］）とＡＮＤされたｔｒｑ＿ｒｕｎ＿ｐｍｗ［３：０］信号の値をとる。ゲート２４１０、２４１２、２４１４、２４１６、２４１８、マルチプレクサ２４２０、２４２２、２４２４、２４２６が、ＭＣＡ実行信号をこうして生成するように構成される。
【００４５】
待ち行列ブロックからＰＣＩインタフェース（ＱＰＩＦ）
再び第４図、及び第９３図を参照する。ＱＰＩＦ１４８は待ち行列ブロック１２７とＰＣＩバス３２間のトランザクションの流れを管理する。更にＱＰＩＦ１４８はＰＣＩバス３２上で起動されたトランザクションをケーブル・インタフェース１３０に送る。ＱＰＩＦ１４８は２つのモードで動作する。即ち、マスタ・モードとスレーブ・モードである。マスタ・モードにおいては、ＱＰＩＦ１４８がＰＣＩバスの制御権を持ち、従ってターゲット・デバイスに意図されているトランザクションをそのバス上で実行する。ＱＰＩＦ１４８内のマスタ状態マシン２５００がＰＭＷＱ及びＤＲＱからトランザクションを検索し、ＱＰＩＦがマスタ・モードに在るときは、それらをＰＣＩバス上で実行する。スレーブ・モードにおいては、ＱＰＩＦ１４８は、いずれかのデバイスがＰＣＩバス上で起動したトランザクションを受け取り、要求された情報を（もしその情報があれば）起動デバイスに渡すか、あるいは（もしそのトランザクションが遅延要求であれば）起動デバイスを再試行して、そのトランザクションをアップストリ―ム・チップに転送する。上に述べたように、もしトランザクション・カウンタ１５９の対応する１つが他方のチップがフルであることを表示すれば、そのトランザクションも再試行される。スレーブ状態マシン２５０２はＰＣＩバスからの到来トランザクションを受け取り、ＤＣＱをチェックして対応する完了メッセージを探し、そして／またはそのトランザクションをケーブル・メッセージ・ジェネレータ２５０４に転送し、それが今度はそのトランザクションをケーブルを介してアップストリ―ムのブリッジ・チップに転送する。
【００４６】
更に第９４及び９５図を参照する。ＱＰＩＦはアドレス及びデータ・ラッチ・ロジック２５０６を含む。これは、デバイスがＰＣＩバス上で開始する各トランザクションに関連する入力アドレス・フェーズ情報及びデータ・フェーズ情報をラッチする。ＱＰＩＦのスレーブ状態マシン２５０２は、アドレス及びデータ・ラッチ・ロジック２５０６の動作をコントロールする。ＰＣＩバス上で開始された新しいトランザクションがＱＰＩＦに意図されたものであれば、スレーブ状態マシン２５０２はアドレス・フェーズ・ラッチ信号（ｒｅｇ＿ｌａｔｃｈ＿ｆｉｒｓｔ＿ｒｅｑｕｅｓｔ）をアサートして、アドレス・フェーズ情報をＰＣＩバスからラッチすべきであることを表示する。ＰＣＩクロック信号の次の立下りでは、ｒｅｇ＿ｌａｔｃｈ＿ｆｉｒｓｔ＿ｒｅｑｕｅｓｔ信号のアサートの結果として遅延アドレス・フェーズ・ラッチ信号（ｄｌｙ＿ｒｅｇ＿ｌａｔｃｈ＿ｆｉｒｓｔ＿ｒｅｑｕｅｓｔ）がアサートされる。オリジナルの、及び遅延されたアドレス・フェーズ・ラッチ信号が両方アサートされたとき、ラッチ・ロジック２５０６は最初のラッチ信号（ｌａｔｃｈ１）を生成する。フリップ・フロップ２５０８及びゲート２５１０が、最初のラッチ信号をこうして生成するように構成される。
ラッチ・ロジック２５０６は、最初のラッチ信号がアサートされたとき、アドレス・フェーズ情報をＰＣＩバスから（ＰＣＩインターフェースを介して）３つのアドレス・フェーズ・レジスタにロードする。１番めのレジスタは３０ビットのアドレス・レジスタ２５１２で、現在のトランザクションの開始アドレスを示す。最初のラッチ信号がアサートされたとき、ＰＣＩインタフェースからのアドレス信号（ｐ２ｑ＿ａｄ［３１：２］）がアドレス・レジスタ２５１２にロードされる。アドレス・レジスタ２５１２はＱＰＩＦに用いられるアドレス信号（ｑ２ｐｉｆ＿ａｄｄｒ［３１：２］）を出力する。２番めのレジスタは４ビットのコマンド・レジスタ２５１４で、ＰＣＩバスからのＰＣＩコマンド・コード（ｐ２ｑ＿ｃｍｄ［３：０］）を受け取り、ＱＰＩＦコマンド信号（ｑ２ｐｉｆ＿ｃｍｄ［３：０］）をアウトプットする。３番めのレジスタは３ビットのスロット選択レジスタ２５１６で、どのＰＣＩデバイスが現バス・マスタであるかを示すｐ２ｑ＿ｓｌｏｔ［２：０］信号を受け取り、ＱＰＩＦスロット選択信号（ｑ２ｐｉｆ＿ｓｌｏｔ［２：０］）を出力する。
【００４７】
ＰＣＩトランザクションのアドレス・フェーズが終わったとき、スレーブ状態マシン２５０２はデータ・フェーズ・ラッチ信号（ｒｅｇ＿ｌａｔｃｈ＿ｓｅｃｏｎｄ＿ｒｅｑｕｅｓｔ）をアサートし、データ・フェーズ情報をＰＣＩバスからラッチすべきであることを表示する。ＰＣＩクロック信号の次の立下りで、アサートされたｒｅｇ＿ｌａｔｃｈ＿ｆｉｒｓｔ＿ｒｅｑｕｅｓｔ信号の結果として遅延データ・フェーズ・ラッチ信号（ｄｌｙ＿ｒｅｇ＿ｌａｔｃｈ＿ｓｅｃｏｎｄ＿ｒｅｑｕｅｓｔ）がアサートされる。オリジナルの、及び遅延されたデータ・フェーズ・ラッチ信号が両方アサートされたとき、ラッチ・ロジック２５０６は第２のラッチ信号（ｌａｔｃｈ２）を生成する。フリップ・フロップ２５１８及びゲート２５２０が、第２のラッチ信号をこうして生成するように構成される。
ラッチ・ロジック２５０６は、第２のラッチ信号がアサートされたとき、データ・フェーズ情報をＰＣＩバスから（ＰＣＩインタフェースを介して）３つのデータ・フェーズ・レジスタにロードする。１番めのデータ・フェーズ・レジスタは３２ビットのデータ・レジスタ２５２２で、ＰＣＩアドレス／データ・ライン上における現在のトランザクションに関連するデータ（ｐ２ｑ＿ａｄ［３１：０］）を受け取り、ＱＰＩＦデータ信号（ｑ２ｐｉｆ＿ｄａｔａ［３１：０］）を出力する。２番めのデータ・フェーズ・レジスタは４ビットのイネーブル・レジスタ２５２４で、ＰＣＩバスからのイネーブル・ビット（ｐ２ｑ＿ｃｂｅ［３：０］）を受け取り、ＱＰＩＦバイト・イネーブル信号（ｑ２ｐｉｆ＿ｂｙｔｅ＿ｅｎ［３：０］）を出力する。３番めのレジスタは３ビットのロック・レジスタ２５２６で、現在のトランザクションはロックされたトランザクションとして実行すべきであることを示すＰＣＩロック信号を受け取り、ＱＰＩＦロック信号（ｑ２ｐｉｆ＿ｌｏｃｋ）を出力する。
【００４８】
再び第９３図を、そして第９６図を参照する。ＱＰＩＦは「ロック」ロジック・ブロック２５２８を含み、これでＱＰＩＦの「ロック」状態をコントロールする。ＱＰＩＦは３つのロック状態を持つ。即ち、アンロックト状態２５３０（ｌｏｃｋ＿ｓｔａｔｅ［１：０］＝  ”００”）はＤＣＱ内に未処理のロックト・トランザクションが無いことを示す；ロックされた状態２５３２（ｌｏｃｋ＿ｓｔａｔｅ［１：０］＝”０１”）はＤＣＱ内にロックされたトランザクションが受け取られた、あるいはＰＣＩバス上で完了中であることを示す；アンロックされているものの再試行状態２５３４（ｌｏｃｋ＿ｓｔａｔｅ［１：０］＝”１０”）は、ロックは除去されたが他方のブリッジ・チップ内で未処理となっているポステド・メモリ書込みトランザクションを実行しないと次のトランザクションが受け入れられないことを示す。
パワーアップ及びリセット時、ロック・ロジック２５２８はアンロックされた状態２５３０に入り、ＤＣＱ内にロックされたトランザクションが入ってくる（ｄｃｑ＿ｌｏｃｋｅｄのアサートで表示される）のを待つ。ｄｃｑ＿ｌｏｃｋｅｄがアサートされた後の最初のクロック・パルスで、ロック・ロジックはロックされた状態２５３２に入ることにより、ＰＣＩバスからのすべてのトランザクション要求のＱＰＩＦスレーブ状態マシン２５０２による再試行を強制する。ＰＣＩインタフェースはロック信号（ｐ２ｑ＿ｌｏｃｋ）もアサートして、それがトランザクション用にＰＣＩバスをロックしたことを表示する。ロックされたトランザクションが完了して、要求しているデバイスがＤＣＱからロックされた完了データを検索した後、ｄｃｑ＿ｌｏｃｋｅｄ信号がデアサートされる。他方のブリッジ・チップ内に未処理となっているポステド・メモリ書込みが無く（即ち、ｐｍｗ＿ｅｍｐｔｙ信号がケーブル・デコーダによってアサートされている）、ｐ２ｑ＿ｌｏｃｋがまだアサートされているうちに、ｄｃｑ＿ｌｏｃｋｅｄがデアサートされた後の最初のクロック・パルスで、ロック・ロジック２５２８はアンロックト状態２５３０に戻り、スレーブ状態マシン２５０２は再びトランザクション要求を受け入れられるようになる。しかし、もしｄｃｑ＿ｌｏｃｋｅｄがディアサートされた後の最初のクロック・パルスでｐｍｗ＿ｅｍｐｔｙ信号がアサートされていないと、ロック・ロジック２５２８はアンロックされているものの再試行状態２５３４に入り、スレーブ状態マシン２５０２は他方のＰＣＩバス上ポスティッド・メモリ書込みサイクルが完了するまで、すべてのトランザクションの再試行を強制される。ポステド・メモリ書込みサイクルの完了後、ｐｍｗ＿ｅｍｐｔｙ信号がアサートされ、ロック・ロジック２５２８はアンロックされた状態２５３０に戻る。
【００４９】
再び第９３図を、そして第９７図も参照する。ＱＰＩＦはバッファ・フラッシュ・ロジック２５３６を含み、これによってＤＣＱが何時その１つまたはすべてのデータ・バッファからデータをフラッシュすべきかを決定する。上に述べたように、ダウンストリーム・チップ内のＰＣＩインタフェースは、アップストリ―ム・チップがダウンストリームのデバイスのターゲット・メモリ・レンジ・レジスタ（ＴＭＲＲ）をヒットするＩ／Ｏまたはコンフィギュレーション書込みまたはメモリ書込みを出したときにｐ２ｑ＿ｆｌｕｓｈ信号を生成する。ＱＰＩＦバッファ・フラッシュ・ロジック２５３６は、ｐ２ｑ＿ｆｌｕｓｈ信号が受信されたとき、（上に述べたように、ｐ２ｑ＿ｓｌｏｔ信号の値によって）対応するデータ・バッファか、またはすべてのデータ・バッファをフラッシュするＱＰＩＦフラッシュ・信号（ｇｅｎｅｒａｌ＿ｆｌｕｓｈ）をアサートする。それ以外の場合、このバッファ・フラッシュ・ロジック２５３６は、２次バス上のデバイスがＤＣＱコントロール・ロジックによってチェックされるとき（即ち、！ｄｃｑ＿ｈｉｔ及びｑ２ｐｉｆ＿ｃｈｅｃｋ＿ｃｙｃがアサートされる）、ＤＣＱバッファをすべてミスする遅延された要求（遅延要求）を出した場合にのみ、ジェネラル・フラッシュ信号をアサートする。いずれの場合も、ｇｅｎｅｒａｌ＿ｆｌｕｓｈ信号は、上に述べたように、「プリフェッチ」状態に在るバッファのみのフラッシュに用いられる。従って、ＰＣＩインタフェースがフラッシュを指示するまで、あるいは対応するＰＣＩデバイスがシーケンシャルでない要求（即ち、ＤＣＱをミスする）を出すまで、ＤＣＱ内にプリフェッチ・データが保持されている。ゲート２５３８及び２５４０が、ｇｅｎｅｒａｌ＿ｆｌｕｓｈ信号をこうして生成するように構成される。
１つの多重スレッデッド・デバイスに複数の完了バッファが割り当てられているとき、その少なくとも１つにプリフェッチ・データが入っており、そのプリフェッチ・データはそのデバイスがＤＣＱバッファをすべてミスする要求を出さない限り対応するバッファ内に残っている。そのデバイスが新しい要求を出せば、そのすべてのプリフェッチ・バッファは直ちにフラッシュされる。あるいは、多重スレッデッド・デバイスに関わるプリフェッチ・バッファは、そのデバイスが別のＤＣＱバッファをヒットする要求を出せば直ちにフラッシュされる可能性がある。
【００５０】
再び第９３図を参照する。ＱＰＩＦは読出しコマンド・ロジック・ブロック２５４２を含み、これによってＰＣＩインタフェースからの読出しコマンド及びＤＣＱからのプリフェッチ・コマンドを受け取り、出力メッセージ・コマンド信号（ｍｅｓｓａｇｅ＿ｃｍｄ）をケーブルに供給する。非ストリーミング状態において、出力メッセージ・コマンドはＰＣＩバスあるいはＤＣＱから受け取られるコマンドと同じであるか、または読出しコマンド・ロジック２５４２がそのコマンドを大量のデータを伴うコマンドに変換する場合がある。ダブルワード・バイ・ダブルワード（dword-by-word)で実行するトランザクションは、１キャシュ・ライン分のデータを扱うトランザクションに比べてホストのバス上で完了するまでにかかる時間が長く、またシングル・キャシュ・ライン・トランザクションは多重キャシュ・ライン・トランザクションに比べてホストのバス上で完了するまでにかかる時間が長いので、読出しコマンド・ロジックはしばしば「小型」のコマンドを「大型」のコマンドに「昇格」させ、トランザクションに消費されるクロック・サイクル数を減らす（「読出しプロモーション」）。例えば、２次ＰＣＩバス上の１つのデバイスがメモリ読出しコマンドを出し、１つのキャシュ・ライン内のすべてのダブルワード・データを求めた場合、そのＰＣＩコマンドを１つのメモリ読出しラインにプロモートすることによりアップストリ―ム・チップは各ダブルワードを個々に読み出す代わりに、そのキャシュ・ライン・データをすべて一度に読み出すことができ、読出しコマンド・ロジック２５４２はホストの待ち時間を減じることができる。
【００５１】
更に第９８図も参照する。上に述べたように、読出しストリームが設定されたことをＤＣＱが表示したとき（即ち、ｄｃｑ＿ｓｔｒｅａｍ＿ｃｏｎｎｅｃｔがアサートされる）、読出しコマンド・ロジック２５４２は”１０００”のメッセージ・コマンドを生成し、これがアップストリ―ム・チップにストリームが発生していることを知らせる。ストリームが設定されていない場合、読出しコマンド・ロジック２５４２はメモリ読出し、メモリ読出しライン、またはメモリ読出し多重コマンドを送るべきかどうかを判断しなければならない。もしＰＣＩバスから受け取ったコマンドがメモリ読出し（ＭＲ）コマンド（ｑ２ｐ＿ｃｍｄ［２：０］＝”０１１０”）で、コンフィギュレーション・レジスタ内の対応するメモリ読出しからメモリ読出しライン・プロモーション・ビット（ｃｆｇ２ｑ＿ｍｒ２ｍｒｌ）がセットされると、読出しコマンド・ロジック２５４２はメモリ読出しライン・コマンド（”１１１０”）を生成する。一方、もしＰＣＩコマンドがメモリ読出しコマンドで、対応するメモリ読出しライン／メモリ読出し多重ビット（memory-read-line-to-memory-read-multiple bit)（ｃｆｇ２ｑ＿ｍｒ２ｍｒｍ）がセットされるか、またはもしそのコマンドがＰＣＩバスからのメモリ読出しライン・コマンド（ｑ２ｐ＿ｃｍｄ［３：０］＝”１１１０”）あるいはＤＣＱからのプリフェッチ・ライン・コマンド（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｌｉｎｅがアサートされる）で、対応するメモリ読出しライン/メモリ読出し多重ビット（ｃｆｇ２ｑ＿ｍｒｌ２ｍｒｍ）がセットされるか、またはもしそのコマンドがＤＣＱからのプリフェッチ多重コマンド（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｍｕｌ）であれば、読出しコマンド・ロジック２５４２はメモリ読出し多重コマンド（即ち、ｍｅｓｓａｇｅ＿ｃｍｄ＝”１１００”）を生成する。もしそのコマンドがプリフェッチ・ライン・コマンドであって、対応するメモリ読出しライン/メモリ読出し多重ビットがセットされなければ、読出しコマンド・ロジック２５４２はＭＲＬコマンド（”１１１０”）を生成する。さもなくば、読出しコマンド・ロジック２５４２は受け取ったＰＣＩコマンド（ｑ２ｐｉｆ＿ｃｍｄ［２：０］）をメッセージ・コマンド信号として出力する。ゲート２５４４、、２５４６、２５４８、２５５０、２５５２、２５５４、２５５６、２５５８、及びマルチプレクサ２５６０、２５６２、２５６４が、ｍｅｓｓａｇｅ＿ｃｍｄ信号をこうして生成するように構成される。
【００５２】
再び第９３図を参照する。ＱＰＩＦがマスタ・モードで動作しており、ＰＭＷＱ内に保存されているトランザクションを１つ実行すべくバスの制御権を得ているとき、書込みコマンド・ロジック・ブロック２５６６はＰＣＩバス上で実行されるコマンド・コードを生成する。上に述べたように、トランザクションの時間を短縮するために、書込みコマンド・ロジックは一度に１ダブルワードのデータ転送に関わるメモリ書込み（ＭＷ）コマンドを、少なくとも１キャシュ・ライン一杯のデータの転送に関わるメモリ書込みおよび無効（ＭＷＩ）コマンドに変換することができる。書込みコマンド・ロジック・ブロック２５６６は、例えばトランザクションが１つのキャシュ・ラインの途中でメモリ書込みとして始まり、それに次のキャシュ・ライン境界を越えるデータが入っており、次のキャシュ・ライン内の８つのダブルワード・データがすべて含まれているとき、コマンドをミッドストリームで変換することができる。この状態で、書込みコマンド・ロジック２５６６は、メモリ書込みトランザクションが最初のキャシュ・ライン境界に達したときにこのトランザクションを終了し、それからメモリ書込み及び無効トランザクションを開始して次のキャシュ・ライン一杯のデータを転送する。書込みコマンド・ロジック２５６６は、キャシュ・ライン境界を越えた後、もしターゲットのバスに書き込むべきデータが１キャシュ・ラインに満たないとＭＷＩを終了してＭＷに譲ることもある。
【００５３】
再び第９３図を、そして第９９図も参照する。スレーブ状態マシン２５０２は、ＰＣＩバス上で開始されたポスティッド・メモリ書込みトランザクションを何時終了させるべきかを表示する２つのカウンタを持っている。４Ｋページ境界カウンタ２５９４は、ＰＣＩバスからの転送データが４Ｋページ境界に達したとき、そのことを示すページ・カウント・信号ｐａｇｅ＿ｃｏｕｎｔ＿ｒｅｇ［１１：２］を生成する。１回のメモリ・アクセスは４Ｋページ境界を超えることが許されていないので、ポスティッド書込みトランザクションは１つの境界に達したとき開始バス上で終了されなければならない。４Ｋページ境界カウンタ２５９４には、状態マシンがｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒ信号をアサートしたとき（この信号のアサートを取り巻く状況については下に詳述する）、トランザクション・アドレス（ｑ２ｐｉｆ＿ａｄｄｒ［１１：２］）の３番めから１２番めのビットがロードされる。カウンタ２５９４は、そのｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒ信号がディアサートされた後、各クロック・パルスの立上りで１つ増分する。カウンタ２５９４は、開始デバイスがイニシエータ・ウエイト状態を挿入した（即ち、ｐ２ｑ＿ｉｒｄｙがアサートされた）間のクロック・パルスでは増分されない。このカウンタの増分が許される時機は、ゲート２５９２のアウトプットによって決定される。ｐａｇｅ＿ｃｏｕｎｔｅｒ＿ｒｅｇ［１１：２］信号のビットがすべて高レベル（ハイ）のとき、トランザクションが既に４Ｋページ境界に達しており、スレーブ状態マシンはそのポステド書込みトランザクションを終了させて開始デバイスを再試行しなければならない。
【００５４】
ダブルワード・カウンタ２５９８はｐｍｗ＿ｃｏｕｎｔｅｒ［５：０］信号を生成し、１回のポステド書込みトランザクションの間に開始デバイスから書き込まれたダブルワードの数を表示する。そしてｐｍｗ＿ｃｏｕｎｔｅｒ［５：０］信号は、オーバーフローが発生したり、あるいはそのトランザクションが最終ラインに達したとき、そのことを表示するために用いられる。スレーブ状態マシン２５０３がｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒ信号をアサートしたとき、アドレス信号（ｑ２ｐｉｆ＿ａｄｄｒ［４：２］）の３番めから４番めまでのビットがカウンタ２５９８の下位３ビットにロードされ、一方上位３ビットはゼロにセットされる。このアドレス・オフセットにより、そのポステド書込みトランザクションがキャシュ・ライン内のどのダブルワードで開始されていたかが表示される。そしてカウンタ２５９８はｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒ信号がデアサートされた後、各クロック・パルスの立上りで１つ増分する。カウンタ２５９８は、開始デバイスがイニシエータ・ウエイト状態を挿入した（即ち、ｐ２ｑ＿ｉｒｄｙがアサートされた）間のクロック・パルスでは増分されない。このカウンタの増分が許される時機はゲート２５９６の出力によって決定される。ｐｍｗ＿ｃｏｕｎｔｅｒ［５：０］信号のビットがすべてハイのとき、そのポステド書込みは既に８番めのキャシュ・ラインの終わりに達している。
【００５５】
１００図のＡ〜Ｃ図を参照する。書き込みコマンド・ロジック・ブロック２５６６は、ＰＣＩバス上で実行されるポステド書き込みトランザクションのコマンド・コードを示す４ビットの書き込みコマンド信号（ｗｒｉｔｅ＿ｃｍｄ［３：０］）を生成する。ＰＭＷＱ内に入っているコマンド・コードがメモリ書き込み無効コマンドを表すものであれば（ｐｍｗｑ＿ｃｍｄ［３］＝”１”）、書き込みコマンド・ロジック２５６６は、”１１１１”の書き込みコマンド・コードを生成する。ＰＭＷＱのコマンド・コードがメモリ書き込みコマンドを示すものであれば、書き込みコマンド・ロジック２５６６は、対応するＰＣＩスロットのメモリ書き込み−メモリ書き込み無効コンフィギュレーション・ビット（ｃｆｇ２ｑ＿ｍｗ２ｍｗｉ）を調べる。ｃｆｇ２ｑ＿ｍｗ２ｍｗｉビットがセットされていなければ、書き込みコマンド・ロジック２５６６は、メモリ書き込みコマンド（”０１１１”）を作る。このコンフィギュレーション・ビットがセットされていれば、書き込みコマンド・ロジック２５６６は、ＰＭＷＱデータ・バッファ内の次のラインが満たされている（ｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅがアサートされている）場合にはＭＷＩコマンドを生成し、そうでなければＭＷコマンドを生成する。マルチプレクサ２５６８及び２５７０は、このようにしてｗｒｉｔｅ＿ｃｍｄ信号を生成するように構成される。
ＱＰＩＦがＰＣＩバス上でなんらかのトランザクションを実行し、そしてキャシュ・ライン境界に達したときに、書き込みコマンド・ロジック２５６６は、ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号をアサートして、新しい書き込みコマンドのために現在のトランザクションを終了しなければならない旨を示すことがある。そのトランザクションがＰＭＷＱデータ・バッファ内の最後のキャシュ・ラインに達したときに（即ち、ｐｍｗｑ＿ｐｏｉｎｔｅｒ［５：３］＝”１１１”）、次のＰＭＷＱバッファが有効なデータの入っているオーバーフロー・バッファでない場合、対応するｃｆｇ２ｑ＿ｍｗ２ｍｗｉビットがセットされていない場合、あるいは、現在のキャシュ・ラインと次のキャシュ・ラインとに対応するｆｕｌｌ＿ｌｉｎｅビットが異なっていれば（即ち、ｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅ［７］とｐｍｗｑ＿ｎｅｘｔ＿ｆｕｌｌ＿ｌｉｎｅが等しくない）、ｎｅｗ＿ｗｒｉｔｅコマンド信号がアサートされて、そのトランザクションを終了させるべきであることを示す。そのトランザクションがＰＭＷＱバッファの終わりに達していない場合、ＰＭＷＱバッファ内の次のラインに有効なデータが入っていないか（！ｐｍｗｑ＿ｖａｌｉｄ＿ｌｉｎｅｓ［ｘ＋１］）、あるいはｃｆｇ２ｑ＿ｍｗ２ｍｗｉビットがセットされていて現在のラインと次のラインのフル・ライン・ビットが異なっていれば（即ち、ｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅ［ｘ］とｐｍｗｑ＿ｆｕｌｌ＿ｌｉｎｅ［ｘ＋１］が等しくない）、ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号がアサートされる。ゲート２５７２、２５７４、２５７６、２５７８、２５８０、及びマルチプレクサ２５８２が、ｎｅｗ＿ｗｒｉｔｅコマンド信号をこのようにして生成するように構成される。
ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号がアサートされた後、書き込みコマンド・ロジック２５６６が保持された新書き込みコマンド信号（ｈｅｌｄ＿ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ）をアサートするまで終了されない。ｈｅｌｄ＿ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号は、ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号がアサートされ、ｅｎｄ＿ｏｆ＿ｌｉｎｅ信号がアサートされてキャシュ・ラインの終わりに達したことが表示された後、ＰＣＩインタフェースがそのトランザクションを未だ終了していない限り（即ち、ｐ２ｑ＿ｓｔａｒｔ＿ｐｕｌｓｅがアサートされている）、最初のクロック・パルスでアサートされる。ｈｅｌｄ＿ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号は、リセットでデアサートされ、またｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ、ｅｎｄ＿ｏｆ＿ｌｉｎｅ、及びｐ２ｑ＿ｓｔａｒｔ＿ｐｕｌｓｅ信号がデアサートされ、ＱＰＩＦがそのトランザクションを終了した（即ち、非同期ｅａｒｌｙ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ信号がアサートされた）後の最初のクロック・パルスでデアサートされる。それ以外の場合、ｈｅｌｄ＿ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号はその現在値を保持している。ゲート２５８４、２５８６、インバータ２５８８、及びフリップ・フロップ２５９０が、ｈｅｌｄ＿ｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号をこのようにして生成するように構成されている。
【００５６】
再び図９３、及び１０１図Ａを参照する。ＱＰＩＦはオーバーフロー・ロジック・ブロック２６００を含み、これによってマスタ状態マシン２５００はターゲット・バス上でポステド書き込みトランザクションを実行しているときに、オーバーフロー・データを管理することができる。ＱＰＩＦがＭＣＡからトランザクション実行信号（ｍｃａ＿ｒｕｎ＿ｐｍｗまたはｍｃａ＿ｒｕｎ＿ｄｒ）を受け取ったとき、オーバーフロー・ロジック２６００は、ＰＭＷＱまたはＤＲＱ内のどのバッファを選択して現在のトランザクションを実行すべきかを示す２ビットの開始待ち行列（キュー）選択信号（ｓｔａｒｔ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ［２：０］）を生成する。次の表に、ｓｔａｒｔ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号がどのように生成されるかを示す。
【表１１】
0003895006.tif 000012
【００５７】
ＱＰＩＦがターゲットのバス上でポステド書き込みトランザクションを実行しているとき、２ビットのＱＰＩＦ待ち行列選択信号（ｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ［１：０］）がＰＭＷＱ内の適切なバッファの選択に用いられる。そのトランザクションが起動されるとき、マスタ状態マシン２５００が待ち行列選択信号（ｉｎｉｔｉａｌ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ）をアサートすることにより、ｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号は、開始待ち行列選択信号（ｓｔａｒｔ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ）の値をとる。同時に、待ち行列選択カウンタ２６０２にｓｔａｒｔ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号の値がロードされる。
ｉｎｉｔｉａｌ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号がデアサートされた後、ｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号は、カウンタ２６０２により生成されたｃｏｕｎｔ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号の値をとる。ポステド・メモリ書き込みトランザクションが次のＰＭＷＱバッファにオーバーフローしたとき、マスタ状態マシン２５００が増分待ち行列選択信号（ｉｎｃ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ）をアサートすることにより、カウンタ２６０２は１だけ増分される。その結果、ｑ２ｐｉｆ＿ｓｅｌｅｃｔ信号が増分され、ＰＭＷＱ内の次のバッファが選択されてトランザクションを続行する。マルチプレクサ２６０４がｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ信号の値を決定する。
【００５８】
ここで、１０１図Ｂも参照すると、ポステド・メモリ書き込みトランザクション中に、マスタ状態マシン２５００が次のＰＭＷＱバッファからの情報の引き出しを継続すべき場合、オーバーフロー・ロジック２６００は、ｏｖｅｒｆｌｏｗ＿ｎｅｘｔ＿ｑｕｅｕｅ信号をアサートする。ｑ２ｐｉｆ＿ｑｕｅｕｅ＿ｓｅｌｅｃｔ［１：０］信号を用いてどのＰＭＷＱが現在選択されているかを判定し、次のＰＭＷＱバッファに対応する有効ビット（ｐｍｗｑ＿ｖａｌｉｄ）及びオーバーフロー・ビット（ｐｍｗｑ＿ｏｖｅｒｆｌｏｗ）がセットされているときに、オーバーフロー・ロジック２６００はｏｖｅｒｆｌｏｗ＿ｎｅｘｔ＿ｑｕｅｕｅ信号をアサートする。ｐｍｗｑ＿ｖａｌｉｄ及びｐｍｗｑ＿ｏｖｅｒｆｌｏｗフラグについては上記に説明したとおりである。ゲート２６０６、２６０８、２６１０、２６１２、及びマルチプレクサ２６１４により、ｏｖｅｒｆｌｏｗ＿ｎｅｘｔ＿ｑｕｅｕｅ信号がこのように発生される。
【００５９】
再び図９３を参照すると、ＱＰＩＦは読み出し調整ロジック（リード・アライン・ロジック）・ブロック２６１６を含んでおり、これによってＱＰＩＦはメモリ書き込みライン及びメモリ読み出し多重トランザクションのミスアラインメントを修正することができる。読み出しラインの修正は、ＱＰＩＦがマスタ・モードで動作しているとき、１つのキャシュ・ラインの途中から始まるＭＲＬまたはＭＲＭトランザクションを受け取ったときに発生する。トランザクションの時間を短縮するため、ＱＰＩＦはキャシュ・ラインの境界でその読み出しトランザクションを開始し、要求されているダブルワード・データだけを個々に読み出す代わりに、要求されていないダブルワードを無視する。
更に１０２図を参照すると、読み出し調整ロジック２６１６は、ａｌｉｇｎ＿ｒｅａｄ信号をアサートして読み出し調整機能を起動する。この信号は、対応するＤＲＱバッファ内に格納されているコマンドがメモリ読み出しラインまたはメモリ読み出し多重コマンドであるとき（即ち、ｄｒｑ＿ｃｍｄ［３：０］が、それぞれ”１１１０”または”１１００”に等しい）、及びターゲットのＰＣＩデバイスに対応する読み出し調整コンフィギュレーション・ビット（ｃｆｇ２ｑ＿ｒｅａｄ＿ａｌｉｇｎ）がセットされたときに、アサートされる。ゲート２６１８及び２６２０により、ａｌｉｇｎ＿ｒｅａｄ信号がこのようにして作成される。
更に図１０３のＡ〜Ｃを参照すると、読み出し調整ロジック２６１６は、キャシュ・ライン境界からのダブルワードをカウントし、マスタ状態マシン２５００が要求されている最初のダブルワードに達したとき、その旨を表示する読み出し調整ダウン・カウンタ２６２２を含む。このカウンタ２６２２は、状態マシン２６２４を含み、これによってカウンタ２６２２の動作をコントロールする。
リセットによりカウンタ２６２２はＩＤＬＥ＿ＣＮＴ状態に入って、カウント動作は行われない。ＭＣＷがＱＰＩＦに対しＰＣＩバス上で遅延された要求（ディレード・リクエスト）トランザクションを実行するよう指示したとき（即ち、ｍｃａ＿ｒｕｎ＿ｄｒ［３：０］内のいずれかのビットがアサートされたとき）、ＱＰＩＦは遅延された要求実行信号（ａｎｙ＿ｄｒｑ＿ｒｕｎ）をアサートし、それが遅延された要求トランザクションの実行を試行していることを表示する。カウンタ２６２２がＩＤＬＥ＿ＣＮＴステートに在れば、ａｎｙ＿ｒｕｎ＿ｄｒｑ信号がアサートされて、ＱＰＩＦがＰＣＩバスの制御権を得たとき（即ち、ｐ２ｑ＿ａｃｋがアサートされる）、トランザクション・アドレス（ｄｒｑ＿ａｄｄｒ［４：２］）のダブルワード・オフセットでそのカウンタの３ビットの出力信号（ｔｈｒｏｗ＿ｃｔｎ［２：１］）がロードされる。ゲート２６２３がロード・イネーブル信号を生成する。そして次のＰＣＩクロック・サイクルの立上りで、カウンタ２６２２はＣＯＵＮＴ状態２６２８に入る。トランザクションがキャシュ・ライン境界で始まれば、ダブルワード・オフセットが”０００”に等しく、カウントは不要である。読み出し調整が起動されたとき、マスタ状態マシン２５００は、各ＭＲＬ及びＭＲＭトランザクションを実際の開始アドレスに関わらず各キャシュ・ライン境界で開始する。
【００６０】
カウンタ２６２２がＣＯＵＮＴ状態２６２８に存在するとき、ｐ２ｑ＿ａｃｋ信号がアサートされていて、ｔｈｒｏｗ＿ｃｎｔが未だゼロに達しておらず、トランザクションがデータ・フェーズにあり（即ち、非同期シグナルｅａｒｌｙ＿ｄａｔａ＿ｐｈａｓｅがアサートされている）、そしてターゲット・デバイスが未だターゲット準備待機状態（ターゲット・レディ・ウエイト・ステート）を出していない限り（！ｐ２ｑ＿ｔｒｄｙ）、そのカウンタは１クロック・パルス毎に１つ減分する。カウンタが減分される時機は、ゲート２６２５が決定する。ＰＣＩインタフェースがＱＰＩＦからバスの制御権を取り上げれば（ｐ２ｑ＿ａｃｋがデアサートされる）、またはデータ相が終了すれば（ｅａｒｌｙ＿ｄａｔａ＿ｐｈａｓｅがデアサートされる）、カウンタ２６２２は減分動作を止めて再びＩＤＬＥ＿ＣＮＴ状態２６２６に入る。ｐ２ｑ＿ａｃｋ信号がアサートされているうちにｔｈｒｏｗ＿ｃｎｔが”０００”に達すれば、カウンタ２６２２はカウントを停止してＤＯＮＥ状態２６３０に入る。それ以外の場合は、カウンタはＣＯＵＮＴ状態２６２８に留まっている。
カウンタが”０００”に達したとき、読み出し調整ロジック２６１６はｒｅａｄ＿ｄａｔａ＿ｓｔａｒｔをアサートし、ターゲット・デバイスからデータの読み出しを開始するようマスタ状態マシン２５００に指示する。比較器２６３２がｒｅａｄ＿ｄａｔａ＿ｓｔａｒｔ信号を生成する。ｒｅａｄ＿ｄａｔａ＿ｓｔａｒｔ信号がアサートされた後、カウンタ２６２２はデータ相が終わる（ｅａｒｌｙ＿ｄａｔａ＿ｐｈａｓｅがデアサートされる）まで、ＤＯＮＥ状態２６３０に留まっている。
【００６１】
図１０４を参照すると、マスタ状態マシンは、ＱＰＩＦがマスタ・モードで動作しているとき、そのＱＰＩＦの動作をコントロールする。マスタ・モードにおいて、ＱＰＩＦはＰＣＩバス上でポステド書き込みトランザクション及び遅延された要求トランザクションを実行する。次の表に、マスタ状態マシン内における状態遷移の原因となるイベントを示す。
【表１２】
0003895006.tif 000013
【００６２】
リセットにより、マスタ状態マシンはＩＤＬＥ状態２７００に入り、その状態において、ＱＰＩＦはＰＣＩバス上でトランザクションを実行する指示を待つ。ＱＰＩＦがＭＣＡからラン（実行）信号を受け取り（ｍｃａ＿ｒｕｎ＿ｐｍｗまたはｍｃａ＿ｒｕｎ＿ｄｒ信号がアサートされたとき、ａｎｙ＿ｒｕｎがアサートされる）、ケーブルがメッセージの伝送にビジーでなく（！ｃａｂｌｅ＿ｂｕｓｙ）、そしてＰＣＩインターフェースが直前のトランザクションを終了しようとしていないとき（！ｐ２ｑ＿ｍａｓｔｅｒ＿ｄｐｈａｓｅ）、マスタ状態マシンは、ＰＣＩバス上でのトランザクションの実行を試みる。そのトランザクションが遅延された要求トランザクションであり（ａｎｙ＿ｒｕｎ＿ｄｒｑがアサートされている）、その他のチップに遅延された完了のための余地がなければ（ｔｃ＿ｄｃ＿ｆｕｌｌがアサートされている）、マスタ状態マシンはその要求を実行することができず、ＭＣＡを次のトランザクションにステップする。その他の場合、ＰＣＩインタフェースガＱＰＩＦにバスの制御権を与えていれば（ｐ２ｑ＿ａｃｋがアサートされている）、マスタ状態マシンは、ＰＣＩバス上でそのトランザクションの実行を開始する。ＩＤＬＥ状態２７００において、マスタは上に述べたアドレス相（フェーズ）情報をＰＣＩバスに供給する。実行すべきトランザクションがデュアル・アドレス・サイクル（ｑ２ｐｉｆ＿ｄａｃ＿ｆｌａｇがアサートされている）であれば、マスタ状態マシンはＭＡＳＴＥＲ＿ＤＡＣステート２７０２に入り、そのときアドレス情報の後半部が供給される。トランザクションがデュアル・アドレス・サイクルではなく、遅延された要求トランザクション（ａｎｙ＿ｒｕｎ＿ｄｒｑがアサートされている）であれば、マスタ状態マシンはＲＤＡＴＡ１読み出し状態２７０４に入り、その状態において、マスタ状態マシンは、その遅延された要求トランザクションのデータ・フェーズ（データ相）を開始する。トランザクションがデュアル・アドレス・サイクルでも遅延された要求でもない場合、それはポステド・メモリ書き込みトランザクションであり、従ってマスタ状態マシンは、そのポステド・メモリ書き込みトランザクションのデータ・フェーズに入る。
【００６３】
ＭＡＳＴＥＲ＿ＤＡＣ状態２７０４＝２において、マスタ状態マシンはアドレス・フェーズ（アドレス相）情報の後半部を供給する。そして、ｐ２ｑ＿ａｃｋ信号がまだアサートされていて、トランザクションが遅延された要求であれば、マスタ状態マシンはＲＤＡＴＡ１状態２７０４に入り、そのときそのマシンはＰＣＩインタフェースから開始信号（ｐ２ｑ＿ｓｔａｒｔ＿ｐｕｌｓｅ）を受け取る。そのトランザクションが遅延された要求でなければ、マスタ状態マシンはＷＤＡＴＡ１状態２７０６に入って、ＰＣＩ開始パルスを受け取る。更にマスタ状態マシンは非同期完了メッセージ信号（ｅａｒｌｙ＿ｍａｓｔｅｒ＿ｓｅｎｄ＿ｍｅｓｓａｇｅ）をアサートし、ＰＣＩ開始パルスを受け取ったときにケーブル上で準備完了メッセージの生成（起動）も行う。ｐ２ｑ＿ａｃｋ信号がＰＣＩインターフェースによってデアサートされていれば、マスタ状態マシンは、ＩＤＬＥ状態２７００に戻ってトランザクションの再試行（リトライ）を待つ。
ＲＤＡＴＡ１状態２７０４は、遅延された読み出し要求及び遅延された書き込み要求の初期状態である。この状態で、マスタ状態マシンは、ＰＣＩ開始パルスを待ってから、ＲＢＵＲＳＴバースト・データ・フェーズ（データ相）２７０８に入る。状態マシンは、初めてＲＤＡＴＡ１状態２７０４に入ったときに、ケーブル上で完了メッセージを生成する（ＭＡＳＴＥＲ＿ＤＡＣ状態２７０２で未だ発生されていない場合）。そして、ｐ２ｑ＿ａｃｋ信号がＰＣＩインターフェースによってデアサートされると、マスタ状態マシンはＭＣＡを次のトランザクションにステップし、再びＩＤＬＥ状態２７００に入る。さもなければ、ＰＣＩ開始パルスが出力されたときに、マスタ状態マシンはＲＢＵＲＳＴ状態２７０８に入る態勢をとる。ＱＰＩＦがトランザクションの終わりを表示するか（ｑｕｅｕｅ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ）、またはトランザクションが４Ｋページ境界（バウンダリ）に達していれば（ｄｒｑ＿ａｄｄｒ［１１：２］信号内のすべてのビットが高レベル、即ちハイのため、ｒｅａｄ＿ｐａｇｅ＿ｄｉｓｃｏｎｎｅｃｔがアサートされている）、マスタ状態マシンはＱＰＩＦのｆｒａｍｅ＿信号をデアサートし、データの次の部分がそのデータの終わりであることを表示（ｅａｒｌｙ＿ｌａｓｔ＿ｍａｓｔｅｒ＿ｄａｔａがアサートされる）してから、ＲＢＵＲＳＴ状態２７０８に入る。マスタ状態マシンは、ｒｅａｄ＿ｐａｇｅ＿ｄｉｓｃｏｎｎｅｃｔ＿ｌａｓｔｌｉｎｅがアサートされているか、またはＤＲＱ最終ライン信号がアサートされていて、ＱＰＩＦが他方のブリッジ・チップからストリーミング信号を受け取っていなければ（ｃｄ＿ｓｒｅａｍかｓｔｒｅａｍ＿ｍａｔｃｈがアサートされていないか、あるいはｃｆｇ２ｑ＿ｓｔｒｅａｍ＿ｄｉｓａｂｌｅがセットされていない）、非同期のｅａｒｌｙ＿ｍａｓｔｅｒ＿ｌａｓｔｌｉｎｅ信号もアサートして、データの最終ラインに達したことを表示する。ＰＣＩ開始パルスがアサートされなければ、マスタ状態マシンはＱＰＩＦがトランザクションを終了するか、あるいは４Ｋページ境界に達するまで、ＲＤＡＴＡ１状態２７０４に留まる。マスタ状態マシンは、ＱＰＩＦがトランザクションを終了するか、または４Ｋページ境界に達することにより、ＩＤＬＥ状態２７００に戻されるか、あるいはＰＣＩ開始パルスが出るまで強制的にＲＢＵＲＳＴ状態２７０８におかれる。
【００６４】
ＲＢＵＲＳＴ状態２７０８において、マスタ状態マシンは、ＰＣＩバスにデータをバーストする。完了メッセージが未だ発生されていなければ、マスタ状態マシンがＲＢＵＲＳＴ状態２７０８に入ったときに、完了メッセージを起動する。そして、ｐ２ｑ＿ａｃｋ信号がデアサートされるか、またはＱＰＩＦトランザクションがＰＣＩインターフェースによって再試行（リトライ）されるか（ｐ２ｑ＿ｒｅｔｒｙがアサートされる）、またはＰＣＩインターフェースがそのトランザクションをアボートすれば（ｐ２ｑ＿ｔａｒｇｅｔ＿ａｂｏｒｔがアサートされる）、マスタ状態マシンは、ＰＣＩバス上のトランザクションを終了し、ケーブル上の完了メッセージをアボートしてＩＤＬＥ状態に入る。ｐ２ｑ＿ａｃｋ試行が除去された場合、マスタ・サイクル・アービタは現在のトランザクションの選択を継続する。しかしトランザクションが再試行またはアボートされた場合、マスタ状態マシンは、ＭＣＡを次のトランザクションにステップする。
ｐ２ｑ＿ａｃｋ信号がまだアサートされていて、ＱＰＩＦトランザクションが再試行もアボートもされていないときであっても、４Ｋページ境界に達し、ターゲット・デバイスがデータの取り出しを停止したことをＰＣＩインターフェースが表示すれば（ｐ２ｑ＿ｔｒｄｙが既にアサートされていない）、マスタ状態マシンは、トランザクションを終了してＩＤＬＥ状態２７００に戻る。ターゲット・デバイスがデータの最後の部分を取り出せば、マスタ状態マシンはＲＢＵＲＳＴ状態２７０８に留まる。
ＱＰＩＦがｑｕｅｕｅ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ信号をアサートしてトランザクションの完了を表示した場合、マスタは通常、ｐ２ｑ＿ｔｒｄｙ信号がデアサートされるとそのトランザクションを終了してＩＤＬＥ状態２７００に戻るか、あるいはｐ２ｑ＿ｔｒｄｙ信号がアサートされたままになっていれば、最後のダブルワード・データが転送されるまで、ＲＢＵＲＳＴ状態２７０８に留まる。しかし、そのトランザクションが最終のデータ・フェーズ（データ相）ではないデータ・フェーズにあり（ｐ２ｑ＿ｍａｓｔｅｒ＿ｄｐｈａｓｅ及び！ｐ２ｑ＿ｌａｓｔ＿ｄｐｈａｓｅ）、他方のブリッジ・チップとの間にストリームが設定されていれば（ｃｄ＿ｓｔｒｅａｍ及びｓｔｒｅａｍ＿ｍａｔｃｈ及び！ｃｆｇ２＿ｓｔｒｅａｍ＿ｄｉｓａｂｌｅ）、マスタ状態マシンは無期限にＲＢＵＲＳＴ状態に留まる。ＱＰＩＦがストリーミングしているとき、マスタ状態マシンはストリーミング信号（ｑ２ｐｉｆ＿ｓｔｒｅａｍｉｎｇ）をアサートし、ＱＰＩＦが他のＰＣＩバス上の要求しているデバイスに対し、そのデバイスがトランザクションを終了するまでデータの供給を継続するよう強制する。
【００６５】
ｐ２ｑ＿ａｃｋ信号がアサートされたままになっていて、ｐ２ｑ＿ｒｅｔｒｙ、ｐ２ｑ＿ｔａｒｇｅｔ＿ａｂｏｒｔ、及びｑｕｅｕｅ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ信号のいずれもアサートされていなければ、マスタ状態マシンはｐ２ｑ＿ｔｒｄｙ信号を調べる。このシグナルがアサートされておらず、ターゲット・デバイスが既にデータの最後の部分を取り出したか又は供給したことを示していれば、マスタ状態マシンはその次のデータ信号（ｅａｒｌｙ＿ｎｅｘｔ＿ｄａｔａ）をアサートすることにより、ＱＰＩＦがデータの次の部分を転送できる態勢にあることを示す。次のデータ信号は、トランザクションが訂正された読み出し（コレクティッド・リード）でない（ａｌｉｇｎ＿ｒｅａｄがアサートされない）、あるいはトランザクションが訂正された読み出しであってｒｅａｄ＿ｄａｔａ＿ｓｔａｒｔ信号がアサートされている場合にのみ、アサートされる。ｐ２ｑ＿ｔｒｄｙ信号がアサートされ、ターゲットが最後のデータ転送を未だ行っていないことが表示された場合、状態マシンはＲＢＵＲＳＴ状態２７０８に留まる。
ＷＤＡＴＡ１状態２７０６において、マスタ状態マシンはポステド・メモリ書き込みトランザクションのデータ・フェーズを開始する。マスタ状態マシンがこの状態にあるとき、ｐ２ｑ＿ａｃｋ信号がデアサートされるか、ｐ２ｑ＿ｒｅｔｒｙまたはｐ２ｑ＿ｔａｒｇｅｔ＿ａｂｏｒｔ信号がアサートされると、トランザクションはＰＣＩバス上で終了され、状態マシンはＩＤＬＥ状態２７００に戻る。ｐ２ｑ＿ａｃｋ信号がデアサートされたとき、ＭＣＡは現在のサイクルに留まっているか、さもなくば、マスタ状態マシンがＭＣＡを次のトランザクションにステップする。
【００６６】
ｐ２ｑ＿ａｃｋ信号がアサートされたままになっていて、トランザクションが再試行もアボートもされなければ、マスタ状態マシンは、そのメモリ書き込みの対象が単一のダブルワードであるか複数のダブルワードであるかを判断しなければならない。ＷＤＡＴＡ１状態においてｑｕｅｕｅ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅ信号がアサートされるか、ｈｅｌｄ ｎｅｗ ｗｒｉｔｅ ｃｏｍｍａｎｄ信号がアサートされるか、ｅｎｄ＿ｏｆ＿ｌｉｎｅとｎｅｗ＿ｗｒｉｔｅ＿ｃｍｄ信号がアサートされるか、あるいはトランザクションが最後のダブルワード・データに達すれば、そのトランザクションは、単一のダブルワードに関わるものである。この状態において、ターゲットがデータの最後の部分を取り出した（！ｐ２ｑ＿ｔｒｄｙ）ときにのみ、そのトランザクションが終了し、状態マシンがＩＤＬＥ状態２７００に戻る。それ以外の場合には、状態マシンはＷＤＡＴＡ２状態２７１０に留まる。トランザクションが複数のダブルワード・データに関わるものであれば、マスタ状態マシンはＷＤＡＴＡ２バースト・データ・フェーズ状態２７１０に入る。ｏｖｅｒｆｌｏｗ＿ｎｅｘｔ＿ｑｕｅｕｅ信号がアサートされていれば、マスタ状態マシンはＷＤＡＴＡ２状態に入る直前にｑ２ｐ＿ｉｒｄｙ待機状態を挿入する。
ＷＤＡＴＡ２状態２７１０において、マスタ状態マシンはＰＣＩバスに対してデータをバーストする。ｐ２ｑ＿ａｃｋ信号がデアサートされるか、あるいはトランザクションがＰＣＩインターフェースによってアボートされると、そのトランザクションはＱＰＩＦ内で終了され、マスタ状態マシンは再びＩＤＬＥ状態２７００に入る。トランザクションがＰＣＩインターフェースに再試行（リトライ）されても、供給されたデータをＰＣＩインターフェースが取ってしまえば（！ｐ２ｑ＿ｔｒｄｙ）、マスタ状態マシンは再びＩＤＬＥ状態２７００に入る。それ以外の場合、状態マシンはＷＲＥＴＲＹステップバック状態２７１２に入り、上に述べたステップバック信号を生成して、ＰＭＷＱ出力ポインタをデータの直前の部分にステップバックする。状態マシンは、常にＷＲＥＴＲＹ状態２７１２からＩＤＬＥ状態２７００に再入する。
【００６７】
ｐ２ｑ＿ａｃｋ信号がアサートされたままになっていてトランザクションが再試行もアボートもされなければ、マスタ状態マシンはそのトランザクションが完了しているかどうかを判断する。ＱＰＩＦがトランザクションの終わりを表示するか（ｑｕｅｕｅ＿ｃｙｃ＿ｃｏｍｐｌｅｔｅがアサートされる）、またはキャシュ・ラインの終わりに達して新しい書き込みコマンドが必要であれば（ｅｎｄ＿ｏｆ＿ｌｉｎｅ及びｎｅｗ＿ｗｒｉｔｅ＿ｃｏｍｍａｎｄがアサートされる）、状態マシンはＷＳＨＯＲＴ＿ＢＵＲＳＴ状態２７１４に入り、そのときデータの最後の部分が取り出されるか（！ｐ２ｑ＿ｔｒｄｙ）、あるいはＰＣＩ開始パルスが受け取られる。いずれの場合も、２つだけのダブルワード・データがＰＣＩバスに書き込まれなければならない。それ以外の場合、状態マシンはＷＤＡＴＡ２状態２７１０に留まる。状態マシンがＷＳＨＯＲＴ＿ＢＵＲＳＴ状態２７１４に入るとき、トランザクションが次の待ち行列にオーバーフローすることができ、新しい書き込みマンドが不要であれば、ＱＰＩＦのｆｒａｍｅ＿信号はアサートされたままとなっている。
ＷＳＨＯＲＴ＿ＢＵＲＳＴ状態２７１４において、マスタ状態マシンは、最後の２ダブルワード・データをＰＣＩバスに書き込む準備をする。ｐ２ｑ＿ａｃｋ信号がデアサートされるか、あるいはＰＣＩインターフェースによってサイクルが再試行またはアボートされると、状態マシンはそのトランザクションを終了してＩＤＬＥ状態２７００に戻る。ＰＣＩ受容（アクノリッジ）信号が消えるか、またはサイクルがアボートしたとき、マスタ状態マシンはステップバック信号をアサートして、ＰＭＷＱ出力ポインタを直前のダブルワードにステップバックすべきであることを表示する。トランザクションがＰＣＩインターフェースによって再試行されるとき、ターゲット・デバイスがデータの最後の部分を取り出していない（ｐ２ｑ＿ｔｒｄｙがアサートされている）場合にのみ、出力ポインタがステップバックされる。トランザクションが終了されておらず、それが次のＰＭＷＱバッファにオーバーフローすることができ（ｏｖｅｒｆｌｏｗ＿ｎｅｘｔ＿ｑｕｅｕｅがアサートされている）、そして新しい書き込みコマンドが不要であるとき、マスタ状態マシンは、ＱＰＩＦフレーム信号をアサートされたままに保ち、ターゲット・デバイスがデータの最後の部分を既に取り出していればＷＣＯＭＰＬＥＴＥ状態２７１６に入り、そうでなければＷＳＨＯＲＴ＿ＢＵＲＳＴ状態２７１４に留まる。トランザクションが次の待ち行列にオーバーフローできないか、あるいは新しい書き込みコマンドが必要であれば、状態マシンはフレーム信号をデアサートしてＱＰＩＦトランザクションの終わりを表示し、ターゲット・デバイスがデータの最後の部分を既に取り出していれば、ＷＣＯＭＰＬＥＴＥ状態２７１６に入り、さもなければＷＳＨＯＲＴ＿ＢＵＲＳＴ状態２７１４に留まる。
【００６８】
ＷＣＯＭＰＬＥＴＥ状態２７１６において、マスタ状態マシンは、ポステド・メモリ書き込みトランザクションを終了させる。そのトランザクションがＰＣＩインターフェースによって再試行またはアボートされると、状態マシンはＩＤＬＥ状態２７００に入る。トランザクションが再試行されると、ターゲット・デバイスがデータの最後の部分を既に取り出している場合にのみＰＭＷＱ出力ポインタが増分される。トランザクションが次の待ち行列にオーバーフローすることができ、新しい書き込みコマンドが不要であり、そしてトランザクションが最後のデータ・フェーズ（データ相）になければ、マスタ状態マシンは待ち行列選択カウンタを増分してからＷＤＡＴＡ１状態２７０６に戻り、ターゲット・デバイスがデータの最後の部分を既に取り出している場合に限りオーバーフロー待ち行列からのトランザクションを継続する。もしターゲット・デバイスがデータの最後の部分を未だ取り出していなければ、マスタ状態マシンはＷＣＯＭＰＬＥＴＥ状態２７１６に留まる。
トランザクションが次のＰＭＷＱバッファにオーバーフローしないような場合、ターゲット・デバイスがデータの最後の部分を既に取り出していれば、マスタ状態マシンはトランザクションを終了し、ＩＤＬＥ状態２７００に戻る。それ以外の場合、状態マシンは上に述べた終了の原因となるイベントのいずれかが発生するまで、ＷＣＯＭＰＬＥＴＥ状態２７１６に留まる。
【００６９】
図１０５を参照すると、スレーブ状態マシンは、ＱＰＩＦがスレーブ・モードで動作しているとき、そのＱＰＩＦの動作をコントロールする。該モードにおいて、ＱＰＩＦはＰＣＩバス上のデバイスからポステド書き込みトランザクション及び遅延された要求トランザクションを受け取り、これらのトランザクションをケーブルを介してターゲット・バスに転送する。スレーブ状態マシン内における状態遷移の原因となるイベントを次の表に示す。
【表１３】
0003895006.tif 000014
【００７０】
リセットすればスレーブ状態マシンはＩＤＬＥ状態２７２０に入り、その状態において、ＱＰＩＦはトランザクションがＰＣＩバス上のデバイスにより生成されるのを待つ。ＰＣＩバス上で生成されたトランザクションがＱＰＩＦをターゲットにしていなければ（ｑ２ｐ＿ｑｃｙｃがアサートされていない）、スレーブ状態マシンはＩＤＬＥ状態２７２０のままで待機を続ける。ＰＣＩバス上で生成されたトランザクションがＱＰＩＦをターゲットにしているものであるとき、ｐ２ｑ＿ｄａｃ＿ｆｌａｇがアサートされていてアドレス・パリティ・エラーが発生していなければ（ｐ２ｑ＿ｐｅｒｒがロー）、スレーブ状態マシンはＳＬＡＶＥ＿ＤＡＣデュアル・アドレス・サイクル状態２７２２に入る。そのトランザクションがデュアル・アドレス・サイクルでなくポステド・メモリ書き込み要求であって、アドレス・フェーズ（アドレス相）でパリティ・エラーが発生していなければ、スレーブ状態マシンは書き込みカウンタをロードして（即ち、ｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒをアサートする）、そのトランザクションを受け入れられるかどうかを判断する。他方のブリッジ・チップ内のＰＭＷＱが満たされている（フル）か（ｔｃ＿ｄｃ＿ｆｕｌｌがＤＣトランザクション・カウンタにアサートされている）、またはＤＣＱがロックされているか（ｄｃｑ＿ｌｏｃｋｅｄがアサートされている）、またはＱＰＩＦロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態にあれば（ｌｏｃｋ＿ｓｔａｔｅ［１］＝”１”）、スレーブ状態マシンは、ＰＣＩインターフェースにｑ２ｐｉｆ＿ｒｅｔｒｙとして渡される非同期の再試行信号（ｅａｒｌｙ＿ｒｅｔｒｙ）をアサートしてそのトランザクションを終了し、ＩＤＬＥ状態２７２０に留まる。ＱＰＩＦがそのトランザクションを受け入れることができれば、スレーブ状態マシンはケーブル上にポステド・メモリ書き込みメッセージを生成して、ＰＭＷ１状態２７２４に入り、そこでトランザクションを転送すべくケーブル上に送出する
【００７１】
そのトランザクションがデュアル・アドレス・サイクルやポステド・メモリ書き込み要求でなければ、スレーブ状態マシンはダブルワード・カウンタをロードし（ｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒをアサートする）、パリティ・エラーが発生していなければ、その遅延された（ディレード）要求トランザクションを分析する。そのトランザクションがＭＲＬまたはＭＲＭトランザクションであって、ＱＰＩＦロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態になければ、スレーブ状態マシンはＱＰＩＦチェック・サイクル信号（ｑ２ｐｉｆ＿ｃｈｅｃｋ＿ｃｙｃ）をアサートすることにより、そのラッチされている要求をＤＣＱバッファ内の遅延された完了メッセージと比較するように、ＤＣＱに指示する。その要求が空でないＤＣＱバッファをヒットすれば（ｄｃｑ＿ｈｉｔ及び！ｄｃｑ＿ｎｏ＿ｄａｔａ）、スレーブ状態マシンはＳＴＥＰ＿ＡＨＥＡＤ状態２７２６に入り、そこでＱＰＩＦが要求されている情報のＰＣＩバスに対する送出を開始する。そのＭＲＬまたはＭＲＭ要求がＤＣＱデータ・バッファのいずれも取得できず、即ちミスし（！ｄｃｑ＿ｈｉｔ）、ＤＣＱが満たされてなく、即ちフルでなく（！ｄｃｑ＿ｆｕｌｌ）、他方のブリッジ・チップ内の遅延された要求待ち行列フルでなく（！ｔｃ＿ｄｒ＿ｆｕｌｌ）、そしてＤＣＱ及びＱＰＩＦがロックされていなければ（！ｄｃｑ＿ｌｏｃｋｅｄ及び！ｌｏｃｋ＿ｓｔａｔｅ［１］）、スレーブ状態マシンはｑ２ｐｉｆ＿ｒｅｔｒｙ信号をアサートし、その要求を転送すべくケーブルに送出し、そしてＩＤＬＥ状態２７２０に留まる。その要求がＤＣＱをミスし、要求をケーブルに送出できなければ、ＱＰＩＦは単に要求しているデバイスを再試行してＩＤＬＥ状態２７２０に留まる。その遅延された要求がＭＲＬまたはＭＲＭトランザクションでなければ、データまたはバイト・イネーブルをＤＣＱバッファの内容と比較しなければならないので、その要求をチェックするために第２のクロック・サイクルが必要となり、そこでスレーブ状態マシンはＳＥＣＯＮＤ＿ＣＨＥＣＫ状態２７２８に入る。もしパリティ・エラーが発生するか、またはロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態に在れば、状態マシンは要求しているデバイスを再試行してＩＤＬＥ状態２７２０に留まる。
【００７２】
ＳＬＡＶＥ＿ＤＡＣ状態２７２２において、スレーブ状態マシンはアドレス・フェーズ（相）情報の後半部を受け取る。もし要求しているデバイスがＱＰＩＦをターゲットととしていなければ、スレーブ状態マシンはそのトランザクションを無視してＩＤＬＥ状態２７２０に留まる。ＱＰＩＦがターゲット・デバイスであるとき、状態遷移イベントはＩＤＬＥ状態２７２０におけるものと同じである。特に、そのトランザクションがポステド・メモリ書き込み要求で、パリティ・エラーが発生していなければ、スレーブ状態マシンは書き込みカウンタをロードし、そのトランザクションを受け入れることが可能かどうかを判断する。他方のブリッジ・チップ内のＰＭＷＱがフルであるか（ｔｃ＿ｐｍｗ＿ｆｕｌｌがアサートされている）、ＤＣＱがはロックされているか、あるいはＱＰＩＦロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態に在れば、スレーブ状態マシンは、要求しているデバイスを再試行してＩＤＬＥ状態２７２０に戻る。ＱＰＩＦがそのトランザクションを受け入れることができれば、スレーブ状態マシンはケーブル上にポステド・メモリ書き込みメッセージを生成し、ＰＭＷ１状態２７２４に入る。
トランザクションがポステド・メモリ書き込み要求でなければ、スレーブ状態マシンはダブルワード・カウンタをロードし、パリティ・エラーが発生していなければ、その遅延された要求トランザクションを分析する。そのトランザクションがＭＲＬまたはＭＲＭトランザクションであって、ＱＰＩＦロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態になければ、スレーブ状態マシンはＱＰＩＦチェック・サイクル信号をアサートする。その要求が空でないＤＣＱバッファをヒットすれば、スレーブ状態マシンはＳＴＥＰ＿ＡＨＥＡＤ状態２７２６に入る。そのＭＲＬまたはＭＲＭ要求がＤＣＱデータ・バッファをすべてミスし、ＤＣＱがフルでなく、他方のブリッジ・チップ内の遅延された要求待ち行列がフルなく（ｔｃ＿ｄｒ＿ｆｕｌｌがアサートされていない）、そしてＤＣＱ及びＱＰＩＦがロックされていなければ、スレーブ状態マシンはｑ２ｐｉｆ＿ｒｅｔｒｙ信号をアサートし、その要求をケーブルに送出し、そしてＩＤＬＥ状態２７２０に戻る。その要求がＤＣＱをミスし、該要求をケーブルに送出することができない場合は、ＱＰＩＦは単に要求しているデバイスを再試行（リトライ）してＩＤＬＥ状態２７２０に留まっている。
【００７３】
その遅延された要求がＭＲＬまたはＭＲＭトランザクションでなければ、データまたはバイト・イネーブルをＤＣＱバッファの内容と比較しなければならないので、その要求をチェックするために第２のクロック・サイクルが必要となり、そこでスレーブ状態マシンはＳＥＣＯＮＤ＿ＣＨＥＣＫ状態２７２８に入る。パリティ・エラーが発生するか、またはロック・ロジックがｕｎｌｏｃｋｅｄ＿ｂｕｔ＿ｒｅｔｒｙ状態に在れば、状態マシンは要求しているデバイスを再試行してＩＤＬＥ状態２７２０に戻る。
ＰＭＷ１状態２７２４において、スレーブ状態マシンはポステド・メモリ書き込みトランザクションをケーブルを介してターゲット・デバイスに転送する。該状態マシンは、初めてＰＭＷ１状態２７２４に入るときにｌｏａｄ＿ｗｒｉｔｅ＿ｃｏｕｎｔｅｒをデアサートする。ダブルワード・カウンタがポステド・メモリ書き込みトランザクションが最終キャシュ・ラインに在り（ｐｍｗ＿ｃｏｎｔｅｒ［５：３］＝”１１１”）、他方のブリッジ内のＰＭＷＱがフルであり（ｔｃ＿ｐｍｗ＿ｆｕｌｌ）、書き込みオーバーフロー機能がデスエーブルされている（！ｃｆｇ２ｑ＿ｗｒｉｔｅ＿ｏｖｅｒｆｌｏｗ）ことを表示するか、またはトランザクションが４Ｋページ境界に達しているためにｗｒｉｔｅ＿ｐａｇｅ＿ｄｉｓｃｏｎｎｅｃｔがアサートされるか、またはＤＣＱがｄｃｑ＿ｄｉｓｃｏｎｎｅｃｔ＿ｆｏｒ＿ｓｔｒｅａｍ信号をアサートしており書き込みデスコネクト機能がデスエーブルされないと（！ｃｆｇ２ｑ＿ｗｒ＿ｄｉｓｃｎｔ＿ｄｉｓａｂｌｅ）、スレーブ状態マシンはｓｌａｖｅ＿ｌａｓｔｌｉｎｅ信号をアサートし、現在のキャシュ・ラインが最後の転送の対象であることを示す。それからスレーブ状態マシンはｐ２ｑ＿ｑｃｙｃ信号がデアサートされ、トランザクションがＰＣＩバスで完了したことが表示されるまで、ＰＭＷ１状態２７２４に留まる。ＰＭＷ１状態２７２４から出た後、スレーブ状態マシンは再び、ＩＤＬＥ状態２７２０に入る。
【００７４】
ＳＥＣＯＮＤ＿ＣＨＥＣＫ状態２７２８において、スレーブ状態マシンはＤＣＱに、要求情報の第２フェーズとＤＣＱバッファ内の遅延された完了情報を比較させる。トランザクションが遅延された書き込み要求でないか（！ｉｏ＿ｗｒｉｔｅ及び！ｃｏｎｆｉｇ＿ｗｒｉｔｅ）、またはパリティ・エラーが存在せず（！ｐ２ｑ＿ｐｅｒｒ）、そしてＤＣＱがロックされておらずｄｗｒ＿ｃｈｅｃｋ＿ｏｋ信号がアサートされた場合、スレーブ状態マシンはｑ２ｐｉｆ＿ｃｈｅｃｋ＿ｃｙｃをアサートする。ｄｗｒ＿ｃｈｅｃｋ＿ｏｋ信号は、トランザクションが遅延された書き込み要求でないとき、あるいは遅延された書き込み要求であってｐ２ｑ＿ｉｒｄｙ待機状態が挿入されていなかった場合にアサートされる。その要求がＤＣＱバッファの１つをヒットし、そのバッファが空でなければ、スレーブ状態マシンはＳＴＥＰ＿ＡＨＥＡＤ状態２７２６に入る。その要求がＤＣＱバッファをすべてミスしても、ＱＰＩＦがそのメッセージをケーブルに送出することができれば、スレーブ状態マシンは要求しているデバイスを再試行し、そのトランザクションを転送すべくケーブルに送出し、そして再びＩＤＬＥ状態２７２０に入る。それ以外の場合、その要求がＤＣＱバッファをすべてミスし、ＱＰＩＦがそのトランザクションをケーブルに送出できなければ、あるいは遅延された書き込み要求でパリティ・エラーが起こっていれば、状態マシンは、要求しているデバイスを再試行してから再びＩＤＬＥ状態２７２０に入る。
ＳＴＥＰ＿ＡＨＥＡＤ状態２７２６において、スレーブ状態マシンは、ＤＣＱ出力ポインタを次のダブルワードに増分する。この状態は、ＰＣＩインターフェースが！ｐ２ｑ＿ｔｒｄｙ信号をアサートせずに最初のダブルワード・データをラッチするため、ＤＣＱバッファがヒットされた直後に必要となる。ＳＴＥＰ＿ＡＨＥＡＤ状態２７２６から、この状態マシンはＨＩＴ＿ＤＣＱ状態２７３０に入り、該状態において、最後のダブルワード・データが未だ取り出されていなければ、データが適当なＤＣＱバッファから要求元のデバイスに供給される。さもなくば、状態マシンはＨＩＴ＿ＤＣＱ＿ＦＩＮＡＬ状態２７３２に入り、そこにおいて、ＤＣＱバッファにはもうデータが入っていないので、要求しているデバイスが再試行される。
【００７５】
ＨＩＴ＿ＤＣＱ状態２７３０から、遅延された要求トランザクションがＱＰＩＦ内で終了する前にＰＣＩバスで終了するとき（ｐ２ｑ＿ｇｃｙｃがアサートされる）、状態マシンはそのトランザクションをＱＰＩＦ内で終了させ、セットバック信号をアサートする。該信号により、データの最後の部分が要求しているデバイスに未だ取り出されていないためにＤＣＱ出力ポインタを減分すべきであることが示される。状態マシンは、それからＩＤＬＥ状態２７２０に入る。要求しているデバイスがデータの要求を続けているうちに、ＤＣＱバッファにデータが無くなるか（ｄｃｑ＿ｎｏ＿ｄａｔａ及び！ｐ２ｑ＿ｉｒｄｙ）、あるいはｐｍｗ＿ｃｏｕｎｔｅｒが最後のダブルワードに達したことを表示し、かつｒｅａｄ＿ｄｉｓｃｏｎｎｅｃｔ＿ｆｏｒ＿ｓｔｒｅｒａｍ信号がアサートされていれば、スレーブ状態マシンは要求しているデバイスを再試行し、ＨＩＴ＿ＤＣＱ＿ＦＩＮＡＬ状態２７３２に入る。トランザクションが終了してストリームが設定されると、ステップバック信号がアサートされ、適切なＤＣＱバッファの出力ポインタが減分される。他のいずれの状態においても、スレーブ状態マシンはＨＩＴ＿ＤＣＱ状態２７３０でデータの供給を継続する。
ＨＩＴ＿ＤＣＱ＿ＦＩＮＡＬ状態２７３２において、スレーブ状態マシンは転送に残されている１つのダブルワードのデータを持っている。要求しているデバイスがデータの最後の部分を取り出す前にＰＣＩバスがトランザクションを終了すれば（即ち、ｐ２ｑ＿ｑｃｙｃがデアサートされる）、スレーブ状態マシンはステップバック信号をアサートして、ＩＤＬＥ状態２７２０に戻る。ｐ２ｑ＿ｑｃｙｃ信号がアサートされたままで、要求しているデバイスが開始待機（ｉｎｉｔｉａｔｏｒ  ｗａｉｔ）状態をアサートしていなければ（！ｐ２ｑ＿ｉｒｄｙ）、データの最後の部分が取られているので要求しているデバイスが再試行される。そして状態マシンは再びＩＤＬＥ状態２７２０に入る。さもなくば、状態マシンはＨＩＴ＿ＤＣＱ＿ＦＩＮＡＬ状態２７３２に留まる。
【００７６】
図１０６を参照する。ケーブル・メッセージ・ジェネレータは１つの状態マシンであって、マスタ及びスレーブ状態マシンから得たトランザクション情報からケーブル・メッセージを生成する。ＩＤＬＥ状態２７４０に加え、ケーブル・メッセージ・ジェネレータはデュアル・アドレス・サイクル（ＣＡＢＬＥ＿ＤＡＣ）状態２７４２、マスタ・データ・フェーズ（ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ）２７４４、及びスレーブ・データ・フェーズ（ＳＬＡＶＥ＿ＤＰＨＡＳＥ）２７４６も含む。ケーブル・メッセージ・ジェネレータ内における状態遷移の原因となるイベントを次の表に示す。
【表１４】
0003895006.tif 000015
【００７７】
リセット状態において、ケーブル・メッセージ・ジェネレータはＩＤＬＥ状態に２７４０に入り、そこにおいてマスタ又はスレーブ状態にマシンから到着するトランザクション情報を待つ。ＩＤＬＥ状態に２７４０からケーブル・メッセージ・ジェネレータがプリフェッチ多重信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｍｕｌ）またはプリフェッチ・ライン信号（ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ｌｉｎｅ）を受け取れた場合は、ケーブル・アドレス信号（ｅａｒｌｙ＿ｃａｄ［３１：２］）がプリフェッチ・アドレス信号ｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ａｄｄｒ［３１：２］と等しい。さもなくば、ｅａｒｌｙ＿ｃａｄ［３１：２］がＱＰＩＦアドレス・信号（ｑ２ｐｉｆ＿ａｄｄｒ［３１：２］）の値をとる。ケーブル・メッセージがマスタ状態にマシンによって開始すなわち起動された場合、そのメッセージは遅延された完了メッセージであり、従ってコマンド・コード（ｅａｒｌｙ＿ｃｃｂｅ［３：１］）は、”１００１”である。ケーブル・メッセージがスレーブ状態にマシンによって開始されたとき、コマンド・コードは上に述べたｍｅｓｓａｇｅ＿ｃｍｄ［３：０］信号の値をとる。
ｓｅｎｄ＿ｍｅｓｓａｇｅ信号がアサートされてマスタ状態にマシンとスレーブ状態にマシンのいずれかがメッセージを起動したことが示され、かつ対応するトランザクションがデュアル・アドレス・サイクルでないか、またはケーブル・メッセージ・ジェネレータがデュアル・アドレス・サイクルでないプリフェッチ要求を受け取ったか、あるいはケーブル・メッセージ・ジェネレータがストリーム接続信号を受け取り、かつダウンストリーム（下流）のＤＲＱに未処理になっているＣＰＵからの遅延された要求が無いかのいずれかの場合、ケーブル・メッセージ・ジェネレータはｓｅｎｔ＿ｐｍｗ信号をアサートすることによって、ＰＣＩバスからケーブルを介してポステド・メモリ書き込み要求が送られてくることを表示する。ＤＣＱによってストリームが設定されていれば、ｓｅｎｔ＿ｐｍｗ信号はアサートされない。ケーブル・メッセージ・ジェネレータは、スレーブ状態マシンから読み出し要求または遅延された書き込み要求が受け取られたとき、あるいはＤＣＱによってストリームが設定されていないときにプリフェッチ信号が受け取られたとき、ｓｅｎｔ＿ｄｒ信号をアサートする。
【００７８】
ＤＣＱがストリームを設定していれば（ｄｃｑ＿ｓｔｒｅａｍ＿ｃｏｎｎｅｃｔがアサートされている）、ケーブル信号（ｅａｒｌｙ＿ｃｂｕｆｆ［２：０］）のバッファ番号はＤＣＱストリーム・バッファ（ｄｃｑ＿ｓｔｒｅａｍ＿ｂｕｆｆ［２：０］）の値をとり、ケーブル・コマンド・コード（ｅａｒｌｙ＿ｃｃｂｅ［３：０］）は”１０００”に等しくセットされ、ケーブル・メッセージ・ジェネレータは、ＳＬＡＶＥ＿ＤＰＨＡＳＥ状態に２７４６に入る。それ以外の場合、ＱＰＩＦがスレーブ・モードにあり、ケーブル・メッセージ・ジェネレータがプリフェッチ多重信号またはプリフェッチ・ライン信号を受け取れば、ケーブル・バッファ信号はＤＣＱバッファ番号（ｄｃｑ＿ｂｕｆｆ［２：０］）の値をとり、ケーブル・メッセージ・ジェネレータは、ＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６に入る。さもなくば、ＱＰＩＦはマスタ・モードで動作しており、ケーブル・メッセージ・ジェネレータは、ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態に２７４４に入る。
ケーブル・メッセージ・ジェネレータがｓｅｎｄ＿ｍｅｓｓａｇｅ信号、及びデュアル・アドレス・サイクルであるトランザクションを受け取ったとき、あるいはデュアル・アドレス・サイクルであるプリフェッチ要求を受け取ったとき、メッセージ・ジェネレータはＣＡＢＬＥ＿ＤＡＣ状態に２７４２に入る。プリフェッチ信号については、ケーブル・アドレス信号がｄｃｑ＿ｐｒｅｆｅｔｃｈ＿ａｄｄｒ［６３：０］信号の上位３２ビットに等しくセットされる。さもなくば、ケーブル・アドレスはｑ２ｐｉｆ＿ａｄｄｒ［６３：０］シグナルの上位３２ビットに等しくなる。更に、ケーブル・メッセージ・ジェネレータがスレーブ状態マシンからのトランザクションを受け取れった場合は、ケーブル・バッファ番号はＤＣＱバッファ番号に等しくなる。さもなくば、ケーブル・バッファ番号はＤＲＱバッファ番号に等しい（ポステド・メモリ書き込みトランザクションについては、完了メッセージが生成されない）。
【００７９】
ＣＡＢＬＥ＿ＤＡＣ状態に２７４２において、ケーブル・メッセージ・デコーダがアドレス・フェーズ情報の後半部を生成する。ＩＤＬＥ状態に２７４０における場合と同様に、ケーブル・アドレス信号は受け取られたトランザクションがプリフェッチ・ライン要求またはプリフェッチ多重要求であればプリフェッチ・アドレスの値をとり、そうでなければｑ２ｐｉｆ＿ａｄｄｒ［３１：２］の値をとる。メッセージ・ジェネレータがスレーブ状態にマシンからポステド・メモリ書き込みトランザクションを受け取ったとき、ｓｅｎｔ＿ｐｍｗ信号がアサートされ、またスレーブ状態マシンからプリフェッチ要求または遅延された要求を受け取ったとき、ｓｅｎｔ＿ｄｒ信号がアサートされる。プリフェッチ要求またはスレーブ状態にマシンからの要求が受け取られると、ケーブル・メッセージ・ジェネレータは、ＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６に入る。さもなくば、メッセージ・ジェネレータは、ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態２７４４に入る。ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態２７４４において、ケーブル・メッセージ・ジェネレータは、ケーブルを介して遅延された完了メッセージの送出を試みる。しかし、ＱＰＩＦがＰＣＩバスの制御権を得る前にＰＣＩインターフェースがＰＣＩバス上のデバイスにバスの制御権を与えていれば、ケーブル・メッセージ・ジェネレータは、ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態２７４４を出て、新しく受け取られたメッセージを送出しなければならない。従って、メッセージ・ジェネレータがＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態２７４４に入っているうちにｓｅｎｄ＿ｍｅｓｓａｇｅ信号がアサートされると、ｑ２ｃ＿ｎｅｗ＿ｒｅｑ信号がアサートされて、新しいメッセージの開始が表示される。ｑ２ｐｉｆ＿ｄａｃ＿ｆｌａｇがアサートされていると、新しいトランザクションはデュアル・アドレス・サイクルであって、ケーブル・メッセージ・ジェネレータは、ＣＡＢＬＥ＿ＤＡＣ状態２７４２に入る。さもなくば、メッセージ・ジェネレータはＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６に入る。
ｓｅｎｄ＿ｍｅｓｓａｇｅ信号がアサートされていなければ、ケーブル・メッセージ・ジェネレータがマスタ状態マシンからの遅延された完了メッセージを送信中である。マスタ状態マシンがＰＣＩ間で最後のデータ転送を完了し、ターゲット・デバイスがその転送に肯定応答したとき（！ｐ２ｑ＿ｔｒｄｙ）、あるいはマスタがケーブル上でトランザクションをアボートしたとき、ケーブル・メッセージ・ジェネレータは、ｓｅｎｔ＿ｄｃ信号をアサートして遅延された完了メッセージがケーブルを介して送出されたことを表示し、再びＩＤＬＥ状態２７４０に入る。さもなくば、メッセージ・ジェネレータは、ＭＡＳＴＥＲ＿ＤＰＨＡＳＥ状態２７４４に留まって、遅延された完了メッセージの生成を続行する。
【００８０】
ＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６から、アップストリ―ムのチップとのストリームが設定されていて、ダウンストリームのＤＲＱにＣＰＵからの未処理の遅延された要求が無く、そして要求しているデバイスがＱＰＩＦへのデータ転送を継続している（ｑ２ｐ＿ｑｃｙｃがアサートされている）限り、ケーブル・メッセージ・ジェネレータはＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６に留まって要求しているデバイスからのトランザクションの転送を続ける。それ以外の場合、ケーブル・メッセージ・ジェネレータが遅延された要求またはプリフェッチ要求を受け取れば、ケーブル・メッセージ・ジェネレータはその要求を転送し、遅延された書き込み要求の場合には、１つのダブルワード・データをアップストリ―ムのデバイスに送り、それからＩＤＬＥ状態２７４０に入る。さもなくば、ケーブル・メッセージ・ジェネレータがポステド・メモリ書き込み要求を受け取っている。この状態において、ケーブル・メッセージ・ジェネレータはＳＬＡＶＥ＿ＤＰＨＡＳＥ状態２７４６に留まり、ｅａｒｌｙ＿ｌａｓｔ＿ｓｌａｖｅ＿ｄａｔａがアサートされ、スレーブ状態マシンによってデータの最後の部分が送出されたことが表示されるまで、ケーブルを介してそのポステド・メモリ書き込み情報の転送を継続する。メッセージ・ジェネレータは、それからケーブル・トランザクションを終了し、再びＩＤＬＥ状態２７４０に入る。
【００８１】
ケーブル・インターフェース
２つのブリッジ・チップの間での有効な転送を確実にするために、ケーブル２８を通して送られるデータは、クロック・ジェネレータ１０２及び１２２からのクロックに適正に同期されなければならない。下流（ダウンストリーム）のクロック・ジェネレータ１２２のクロックは、ケーブル２８をデータと共に下方へ送信される上流（アップストリーム）のクロック（このクロックはＰＣＩバス・クロックＰＣＩＣＬＫ１を基にする）に基づいて発生される。その結果、ダウンストリームへ送信されたアップストリームのデータは、ダウンストリームのブリッジ・チップ４８において発生されたクロックに同期される。しかしながら、アップストリームのチップ２６において発生されたメイン・クロックとダウンストリームのチップ４８からアップストリームへ送り戻されるデータとの間のケーブル２８に関連する相遅延は未知である。ケーブル２８の長さの範囲は１０〜１００フィート（適切なインターフェース技術が用いられた場合）である。アップストリームのケーブル・インターフェース１０４における受信用ロジックは、有効なアップストリームのクロックに関して非同期の境界である。従って、受信用ロジックは、ダウンストリームからアップストリームへのデータを、アップストリームのクロック・ジェネレータ１０２からのクロックに再同期させる必要がある。
【００８２】
図５を参照すると、２チップＰＣＩ−ＰＣＩブリッジにおけるクロック分配スキームが示されている。ブリッジ・チップ２６とブリッジ・チップ４８の間を送られるトランザクション（transaction）、すなわち信号は、複数の時分割多重（time-multiplexed）メッセージに符号化される。メッセージのフォーマットは、ＰＣＩトランザクションのフォーマットと類似であり（ただし、時分割多重化は相違）、バッファ数及び特別のブリッジ・ファンクション・コマンドを示すために付加された信号に加えて、アドレス及び１つ又は複数のデータの相（フェーズ）と、変調されたハンドシェーク（handshake）信号とを含む。ケーブル・インターフェース１０４、１３０はそれぞれ、マスタ・ケーブル・インターフェース１９２、１９４及びスレーブ・ケーブル・インターフェース１９６、１９８を含む。マスタ・ケーブル・インターフェース１９２、１９４は、ケーブル２８にメッセージを送信し、スレーブ・ケーブル・インターフェース１９６、１９８は、ケーブル２８からメッセージを受信する。
各ブリッジ・チップのクロック・ジェネレータ１０２、１２２は、クロックを発生するための２つのオン−チップＰＬＬを含む。アップストリームのブリッジ・チップ２６のＰＬＬ１８４は、１次（主）ＰＣＩバス入力クロックＰＣＩＣＬＫ１にロックする。ダウンストリームのブリッジ・チップ４８において、ＰＬＬ１８０は、クロック・バッファ１８１からのクロックＰＣＩＣＬＫ２にロックする。
以下の説明において、「１Ｘクロック」は、クロックＰＣＩＣＬＫ１と同じ周波数を有するクロックを意味しており、「３Ｘクロック」は、クロックＰＣＩＣＬＫ１の３倍の周波数を有するクロックを意味している。ＰＬＬ１８４、１８０（ブリッジ・チップ２６、４８中）によって発生された１ＸクロックＰＣＬＫは、対応するブリッジ・チップのＰＣＩバス・インターフェース・ロジック１８８、１９０に用いられ、３ＸクロックＰＣＬＫ３は、マスタ・ケーブル・インターフェース１９２、１９４のケーブル・メッセージ生成ロジックを動作させるために用いられる。他のＰＬＬ１８６、１８２は、ケーブル入力クロックＣＡＢＬＥ ＣＬＫ１（アップストリームから）、ＣＡＢＬＥ ＣＬＫ２（ダウンストリームから）にロックするため、さらには入来するケーブル・データを捕らえるために、１ＸクロックＣＣＬＫ及び３ＸクロックＣＣＬＫ３を発生するために用いられる。ＰＬＬ１８６、１８２のクロック出力はそれぞれ、スレーブ・ケーブル・インターフェース１９６、１９８に送られる。
【００８３】
ＰＬＬは、１Ｘクロックと３Ｘクロックの間のスキューを最小化するために、可能な限り１Ｘクロックと３Ｘクロックの均衡をとるようなレイアウトに配置される。
ＰＬＬ１８４、１８０はフェーズ（相）表示（インジケータ）信号ＰＣＬＫＰＨＩ１を発生し、この信号は、データの第１のフェーズ（がケーブル２８に提供されるべきときに、それをマスタ・ケーブル・インターフェース１９２、１９４に知らせる。アップストリーム側では、信号ＰＣＬＫＰＨＩ１はＰＣＩクロックＰＣＩＣＬＫ１を基にしており、ダウンストリーム側では、信号ＰＣＬＫＰＨＩ１はＰＣＩクロックＰＣＩＣＬＫ２を基にしている。ＰＬＬ１８６、１８２は、ケーブル・クロックＣＡＢＬＥ ＣＬＫ１又はＣＡＢＬＥ ＣＬＫ２を基にするフェーズ・インジケータ信号ＣＣＬＫＰＨＩ１を発生し、データの第１のフェーズがケーブル２８を下って来たときに、それをスレーブ・ケーブル・インターフェース１９６、１９８に知らせる。
２次（副）のＰＣＩバス３２に対するＰＣＩクロックＰＣＩＣＬＫ２は、ダウンストリームのブリッジ・チップ４８のＰＬＬ１８２の１ＸクロックＢＵＦＣＬＫから生成される。クロックＢＵＦＣＬＫは、ドライバ１７９を通じてクロック・バッファ１８１を駆動する。バッファ１８１は、２次のＰＣＩバス３２の６つのスロットの各々に対する個別のクロック信号とクロックＰＣＩＣＬＫ２とを出力し、クロックＰＣＩＣＬＫ２は、ダウンストリームのブリッジ・チップ４８へバス入力クロックとして送り戻される。クロック・バッファ１８１からのクロックＰＣＩＣＬＫ２に基づくクロックＰＣＬＫを基準とすることによって、アップストリームのチップとダウンストリームのチップのクロック・スキームが、より類似するようになる。これは、両方とも外部バス・クロックを基準とするからである。
ケーブル・クロックＣＡＢＬＥ ＣＬＫ１は、３３％のデューティ・サイクルを有している。ＰＬＬ１８２は、最初に、ＢＵＦＣＬＫとしての出力に対して３３％のデューティ・サイクル・クロックを５０％のデューティ・サイクル・クロックに変換する。
ＰＣＩの仕様、バージョン２．１は、ＰＣＩバス・クロックが以下の要求に適合することを必要とする。即ち、クロック・サイクル時間が３０ｎｓ以上であること、クロックのハイ（高レベル）時間が１１ｎｓよりも大きいこと、クロックのロー（低レベル）時間が１１ｎｓ以上であること、及びクロック・スキュー・レートが１ｎｓと４ｎｓの間であることである。
【００８４】
コンピュータ・システムがパワー・アップされると、アップストリームのチップ２６は最後にパワー・オンされ、アップストリームのＰＬＬ１８４は、クロックＣＡＢＬＥ ＣＬＫ１をケーブル２８上をマスタ・インターフェース１９２を介して送り、そして、該ＰＬＬ１８４は、ダウンストリームのＰＬＬ１８２及びＰＬＬ１８０によってロックされる。次にダウンストリームのＰＬＬ１８０は、クロックＣＡＢＬＥ ＣＬＫ２をアップストリームに送り返して、ＰＬＬ１８６によってロックされるようにする。このシステムは、４つのＰＬＬのすべてがロックを得るまで完全には動作しない。
アップストリームのブリッジ・チップ２６がパワー・アップ（電源供給）され且つダウンストリームのブリッジ・チップ４８がまだターン・オンされていない場合、アップストリームのブリッジ・チップ２６は、ダウンストリームのバス（ケーブル２８）に何も接続されていないＰＣＩ−ＰＣＩブリッジとして動作する。その結果に、アップストリームのブリッジ・チップ２６は、ダウンストリームのブリッジ・チップ４８がパワー・オンされ且つアップストリームのＰＬＬ１８６がケーブル・クロックＣＡＢＬＥ ＣＬＫ２から「ロック」を得るまで、どのようなサイクルも受け入れない。
アップストリームのブリッジ・チップ２６は、１次バス２４のＰＣＩリセット信号ＰＣＩＲＳＴ１ のアサート（assertion）と非同期であり、そのすべてのＰＣＩ出力バッファ及び状態マシン（state machine）をフローティング状態にする。リセットの間、ＰＬＬ１８４は、ＰＣＩバス・クロックＰＣＩＣＬＫ１へのロックを獲得することを試みることもある。ＰＣＩの仕様は、ＰＣＩバス・クロックが安定した後に、信号ＰＣＩＲＳＴ１ が少なくとも１００μｓは活性状態のままでいることを保証するので、ＰＬＬ１８４はロックを得るために約１００μｓを有する。
ダウンストリームのブリッジ・チップ４８は、１次バスのＰＣＩＲＳＴ１ 信号を検出すると、すべての内部の状態マシンをリセットする。それに応答して、ダウンストリームのブリッジ・チップ４８はまた、２次ＰＣＩバス３２上を各スロットへ、スロット特定リセットをアサートし、それに加えて、２次ＰＣＩバス・リセット信号ＰＣＩＲＳＴ２ をアサートする。
【００８５】
図６を参照すると、各ＰＬＬは、７５ＭＨｚ（２５ＭＨｚのＰＣＩバスに対する）と１００ＭＨｚ（３３ＭＨｚのＰＣＩバスに対する）の間の出力２０１（３Ｘクロック）を発生する電圧制御発振器（ＶＣＯ）２００を含む。ＶＣＯ２００は、ＰＣＩバス・クロックである基準クロック（ＲＥＦＣＬＫ）１９７を受信する。各ＰＬＬは、ロック検出回路２０５を有し、この回路は、ＰＬＬ位相が意図された機能を行うのに十分な程正確に、その基準クロックにロックされたことを、ロック表示ビットによって示す。
ロック表示ビットは、各ブリッジ・チップの構成スペース１０５、１２５の状態レジスタに書き込まれる。ダウンストリーム側では、電力正常／ロック状態ビットがアップストリームのブリッジ・チップ２６に送信され、それにより、ダウンストリームのブリッジ・チップ４８の主エレメントが安定（電力が安定）し、且つダウンストリームのＰＬＬがロックされたこと（２つのＰＬＬのロック表示ビットが活性状態）を示す。ロック表示ビットはまた、ＥＤＣ状態ビットでゲートされることにより、ＥＤＣエラーをＰＬＬがロックされるまで報告しないようにしている。従って、ブリッジ・チップの対は、ソフトウエアの介在なしに、エラーのない通信状態となる。ロック表示ビットはまた、ＰＬＬロックの不具合と他のデータ・エラーとを区別可能な幾つかの診断情報を提供する。クロック発生回路は、ＶＣＯ出力２０１を３で割ったクロック（１Ｘクロック）を発生するための４状態マシン２０２を含む。１Ｘクロックは、ＰＬＬのＦＢＣＬＫ入力端子２０３にフィード・バックされる。
【００８６】
データは、３つの時分割多重化された相において、３Ｘクロック（ＰＣＬＫ３）の速度でケーブル２８を下流に移動し、１Ｘクロック・メッセージ転送速度を作り出す。図７を参照すると、マスタ・ケーブル・インターフェース１９２、１９４内のケーブル・メッセージを分解及び送信するための回路は、ローカルＰＣＬＫに同期して送信されるメッセージをサンプリングするレジスタ２０４を含む。フリップ・フロップ２０８は、送信されるメッセージの第３のフェーズ（における保持時間に関しての予備的マージンを提供し、これは、この第３の相をＰＣＬＫの予備の半分に割り当てることによって、実現される。出力レジスタ２１２は、３ＸクロックＰＣＬＫ３でクロッキング（クロック制御）されるので、１Ｘクロックと３Ｘクロックの間でスキューを制御する必要性が低減される。フェーズ（表示信号ＰＣＬＫＰＨＩ１から、３つのフリップ・フロップ２１０は、連続するＰＨＩ１信号、ＰＨＩ２信号、ＰＨＩ３信号を発生し、これら信号はそれぞれ、フェーズ１、２、３を表し、かつ６０：２０マルチプレクサ２０６を制御する。データの３つのフェーズ（ＬＭＵＸＭＳＧ［１９：０］、ＬＭＵＸＭＳＧ［３９：２０］、ＬＭＵＸＭＳＧ［５１：４０］又はＥＤＣ［７：０］）は、レジスタ即ちフリップ・フロップ２１２に連続して順次入力され、ケーブル２８を通じて駆動される。データの第３のフェーズは、レジスタ２０４の出力ビットＬＭＵＸＭＳＧ［５１：０］からＥＣＣジェネレータ２０６（図７）によって生成されたエラー訂正ビットＥＤＣ［７：０］を含む。ＰＣＬＫ３によってクロッキングされるフリップ・フロップ２１４は、ＰＨＩ１信号を受信し、それをケーブル・クロックＣＡＢＬＥ ＣＬＫ１又はＣＡＢＬＥ ＣＬＫ２として出力する。
マスタ・ケーブル・インターフェース１９２、１９４は、１Ｘ／３Ｘ通信インターフェースであるので、３Ｘクロック分の待ち時間がかかり、それにより、図８に示されるようにＰＣＩバス・クロックから送信されたケーブル・メッセージＡの１つの３Ｘクロック分の相のシフトが発生する。期間Ｔ０において、メッセージＡがレジスタ２０４の入力に供給され、第１の相のクロック・インジケータＰＣＬＫＰＨＩ１がハイになる。信号ＰＨＩ１は、前のサイクルから変化してハイになる。期間Ｔ１において、ケーブル・クロックＣＡＢＬＥ ＣＬＫ１又はＣＡＢＬＥ ＣＬＫ２は、信号ＰＨＩ１がハイであることに応答してハイに駆動される。ＰＣＬＫＰＨＩ１のパルスによって、信号ＰＨＩ２は期間Ｔ１においてハイのパルスとされる。次に、期間Ｔ２において、信号ＰＨＩ３は信号ＰＨＩ２に応答してハイとなる。期間Ｔ３において、信号ＰＨＩ１は信号ＰＨＩ３がハイであることに応答してハイとなる。メッセージＡは、期間Ｔ３のクロックＰＣＬＫの立ち上がりでレジスタ２０４にロードされる。次に、期間Ｔ４において、信号ＰＨＩ１によって、マルチプレクサ２０６がレジスタ２１２へロードするための第１のフェーズのデータａ１を選択するようにされる。次に、期間Ｔ５において、第２のフェーズのデータａ２が選択されてレジスタ２１２へロードされる。次に、期間Ｔ６において、第３のフェーズのデータａ３がレジスタ２１２にロードされる。このようなプロセスは、後続のクロック期間において、メッセージＢ、Ｃ、Ｄに対して繰り返される。
【００８７】
図８に示されるように、ケーブル・クロックＣＡＢＬＥ ＣＬＫは、３３％のデューティ・サイクルを有する。また、ケーブル・クロックＣＡＢＬＥ ＣＬＫが５０％の平均デューティ・サイクルを有するように設計することもでき、これは、例えば、ケーブル・クロックを、３３％ハイ-６６％ロー-６６％ハイ-３３％ローとすることによって、達成できる。平均５０％のデューティ・サイクルを有することによって、ケーブル２８により良い通過特性（pass characteristic）を得ることができる。
【００８８】
図９を参照すると、スレーブ・ケーブル・インターフェースの先入れ先出しバッファ（ＦＩＦＯ）２１６は、ケーブル２８から入来するデータを組み立て、該組み立てたデータを受信側ブリッジ・チップの待ち行列マシン及びＰＣＩ状態マシンへ送信する。ＦＩＦＯ２１６は４エントリを格納できる深さ（大きさ）であり、各エントリは、完全な１つのケーブル・メッセージを保持することができる。ＦＩＦＯ２１６の深さは、ケーブル・データがケーブル・インターフェースで有効帯域を全く損失することなくローカルのブリッジ・チップのクロックと同期されることを可能にする。更に、アップストリーム側において、ＦＩＦＯ２１６は、ダウンストリームのブリッジ・チップ４８から来るケーブル・データに対して、非同期の境界を形成する。ＦＩＦＯ２１６は、ケーブル・データが、残りのチップに出力される前に、ＰＣＬＫに同期することを確実にする。
ＦＩＦＯ２１６のエントリは、入力ポインタ・カウンタ２２６からの入力ポインタＩＮＰＴＲ［１：０］によって選択され、このカウンタは、信号ＣＣＬＫ３によってクロッキングされ、信号ＥＮ ＩＮＣＮＴがローのときにクリアされ、相インジケータＣＣＬＫＰＨＩ１によってイネーブルされる。ＰＬＬ１８６又は１８２からの３ＸクロックＣＣＬＫ３の負の縁部（立ち下がり縁）が、ケーブル２８から入来するデータを最初に２０ビット・レジスタ２１８にラッチし、次に、相１表示信号ＰＨＩ１ ＤＬＹがアサートされる場合には、レジスタ２２０にラッチし、フェーズ２表示信号ＰＨＩ２ ＤＬＹがアサートされる場合には、レジスタ２２２にラッチする。レジスタ２２０、２２２、２１８からのフェーズ１のデータ、フェーズ２のデータ、フェーズ３のデータのそれぞれは、フェーズ３表示信号ＰＨＩ３ ＤＬＹがアサートされたときに、ＣＣＬＫ３の負の縁部でＦＩＦＯ２１６の選択されたエントリにロードされる。ＦＩＦＯ２１６からの４セットの出力は、２４０：６０（＝４：１）マルチプレクサ２２８によって受信される。このマルチプレクサは、ＰＣＬＫによってクロッキングされ、信号ＥＮ ＯＵＴＣＮＴがローのときにクリアされる出力ポインタ・カウンタ２２４からの出力ポインタＯＵＴＰＴＲ［１：０］によって選択制御される。
【００８９】
図１０を参照すると、入力ポインタ・カウンタ２２６及び出力ポインタ・カウンタ２２４は、データを記憶しかつ空にするため、ＦＩＦＯ２１６に連続的に作用する。カウンタ２２６及び２２４は、有効データが読まれる前に該データが所定位置にあることを保証するように、オフセットされる。ポインタの初期設定は、同期の不確定性に起因して、アップストリームのブリッジ・チップ２６に対してとダウンストリームのブリッジ・チップ４８に対してでは、異なる。
フリップ・フロップ２３６及び２３８は、ブリッジ・チップのクロックと非同期であるリセット信号Ｃ ＣＲＥＳＥＴを、ＣＣＬＫクロックの同期系に同期させる。信号ＥＮ ＩＮＣＮＴは、フリップ−フロップ２３８によって発生される。入力ポインタ（カウンタ２２６の計数値）は、第１相表示信号ＣＣＬＫＰＫＩ１及び信号ＥＮ ＩＮＣＮＴが存在すれば、クロックＣＣＬＫ３の立ち上がりで増分される。出力ポインタ（カウンタ２２４の計数値）は、ＦＩＦＯ２１６においてデータが有効であることが保証されたとき、後のローカルのＰＣＬＫクロック系のクロックＰＣＬＫで開始される。アップストリームのブリッジ・チップとダウンストリームのブリッジ・チップは、出力ポインタ・カウンタの開始を異なって処理しなければならない。なぜなら、ケーブル・クロックとローカル・クロックのフェーズ関係は、アップストリームのブリッジ・チップ２６には知られていないが、ダウンストリームのブリッジ・チップ４８には知られているからである。
【００９０】
ダウンストリームのブリッジ・チップ４８においては、入来するケーブル・クロックＣＡＢＬＥ ＣＬＫ１と２次ＰＣＩバス・クロックＰＣＩＣＬＫ２とのフェーズ関係が分かっている。これは、ＰＣＩクロックＰＣＩＣＬＫ２がケーブル・クロックから発生されるからである。その結果、ダウンストリームのブリッジ・チップ４８において出力ポインタＯＵＴＰＴＲ［１：０］に関する同期に不利益がなく、出力ポインタは、入力ポインタＩＮＰＴＲ［１：０］を可能な限り近接して追従することができる。クロックＰＣＬＫの負の縁部でクロッキングされるフリップ・フロップ２３０は、ＰＬＬ１８２によって発生されるクロックＣＣＬＫとＰＬＬ１８０によって発生されるクロックＰＣＬＫとの間のクロックのスキューの問題を避けるために、用いられる。これら２つのクロックは同一の周波数を有し且つ互いにフェーズが合っているべきであるが、２つのクロックは異なるＰＬＬから発生されるので、これらのクロックの間には未知のスキューがある。ダウンストリーム側において、信号ＥＮ ＯＵＴＣＮＴは、フリップ・フロップ２３０により信号ＰＣＬＫの負の縁部でラッチされる信号ＥＮ ＩＮＣＮＴである。マルチプレクサ２３４は、信号ＵＰＳＴＲＥＡＭ ＣＨＩＰがローであるので、フリップ−フロップ２３０の出力を選択する。
アップストリームのブリッジ・チップ２６において、ケーブル・インターフェースは完全に非同期で扱われる。フェーズの不確定性はケーブル２８自身の未知の位相のシフトに起因するものである。このような不確定性が存在するので、ケーブル２８の長さは自由に設定できる。アップストリーム及びダウンストリームのブリッジ・チップのクロックは両方とも、アップストリームのＰＣＩバス・クロックＰＣＩＣＬＫ１を基準にしているため、同じ周波数を有する。アップストリームのブリッジ・チップ２６において、信号ＥＮ ＯＵＴＣＮＴは、フリップ・フロップ２３２にクロックＰＣＬＫの正の縁部（立ち上がり縁）でラッチされた信号ＥＮ ＩＮＣＮＴである。マルチプレクサ２３４は、信号ＵＰＳＴＲＥＡＭ ＣＨＩＰがハイであるので、フリップ・フロップ２３２の出力を選択する。フリップ・フロップ２３２は、ケーブル・クロックＣＡＢＬＥ ＣＬＫ２及びローカルのＰＣＩクロックＰＣＬＫ（１つのＰＣＬＫ期間の位相シフト）の最悪のケースに対しても、データがチップの残りの部分に送信される前に、有効データがＦＩＦＯ２１６にあることを確実にする。
【００９１】
図１１を参照すると、ケーブル・データは、スレーブ・ケーブル・インターフェース１９６、１９８に、３つの相の時分割多重化信号ａ１とａ２とａ３、ｂ１とｂ２とｂ３、ｃ１とｃ２とｃ３として受信される。以前のトランザクションは時点Ｔ０、Ｔ１、Ｔ２で完了される。第１のフェーズのデータａ１は、時点Ｔ３で開始してレジスタ２１８に供給され、第１のフェーズ・インジケータＣＣＬＫＰＨＩ１はハイとなる。期間Ｔ３のＣＣＬＫ３の立ち下がりで、データａ１はレジスタ２１８へロードされ、ローカルのフェーズ１表示信号ＰＨＩ ＤＬＹはハイとなる。期間Ｔ４において、クロックの立ち下がりで、フェーズ１のデータａ１はレジスタ２２０にロードされ、フェーズ２のデータａ２はレジスタ２１８にロードされ、フェーズ２の表示信号ＰＨＩ２ ＤＬＹはハイのパルスとなる。期間Ｔ５において、ＣＣＬＫ３の立ち下がりで、フェーズ２のデータはレジスタ２２２にロードされ、フェーズ３のデータａ３はレジスタ２１８にロードされ、フェーズ３の表示信号ＰＨＩ３ ＤＬＹはハイのパルスとなる。期間Ｔ６において、レジスタ２２０、２２２及び２１８の内容は、ＣＣＬＫ３の後続の立ち下がりでＦＩＦＯ２１６の選択されたエントリへ、ロードされる。また、期間Ｔ６において、データＢ１が表示信号ＣＣＬＫＰＨＩ１とともにレジスタ２１８に供給される。メッセージＢ及びＣは後続の期間においてメッセージＡと同様にしてＦＩＦＯ２１６へロードされる。
【００９２】
図１２を参照すると、入力ポインタＩＮＰＴＲ［１：０］は、クロックＣＣＬＫ３の期間Ｔ０における立ち上がりで、値０から開始する。また、期間Ｔ０において、メッセージＡは、クロックＣＣＬＫ３の立ち下がりで、ＦＩＦＯ０にロードされる。ダウンストリームのブリッジ・チップ４８において、出力ポインタＯＵＴＰＴＲ［１：０］は、期間Ｔ３のクロックＰＣＬＫの立ち上がりで値０にされる。また、期間Ｔ３において、入力ポインタＩＮＰＴＲ［１：０］は、クロックＣＣＬＫ３の立ち上がりで値１に増分され、メッセージＢは、ＣＣＬＫ３の立ち下がりでＦＩＦＯ１にロードされる。このようにして、ケーブル・データはＦＩＦＯ０、ＦＩＦＯ１、ＦＩＦＯ２及びＦＩＦＯ３に循環的にロードされる。
アップストリーム側では、入力ポインタＩＮＰＴＲ［１：０］が期間Ｔ０において０である場合、出力ポインタＯＵＴＰＴＲ［１：０］は、入力ポインタＩＮＰＴＲ［１：０］の２つのＰＣＬＫ期間の後に、期間Ｔ６において値０にされる。アップストリームのブリッジ・チップ２６での２つのＰＣＬＫ期間の遅れにより、ケーブル２８の相遅延が任意の値とすることが可能となり、これにより、ケーブルの長さを特定の固定値にする必要がなくなる。
図１３を参照すると、ケーブル・インターフェースの入力フリップ・フロップ及び出力フリップ・フロップが、チップ製造者によって特別な位置に配置され、ケーブル・データとクロックとの間のスキューを最小にするようにした構成が示されている。各フリップ・フロップとＩ／Ｏの間のワイヤの量は、すべてのケーブル・インターフェース信号の間で可能な限り一致するように、維持される。
【００９３】
ケーブル・メッセージ
６ビットのケーブル・データが１つのメッセージを構成する。６０ビットが２０のケーブル・ラインに多重化され、１０ｎｓ毎にケーブル２８を経て送信される。図１４のテーブルはビット及び各ビットが割り当てられる相を示す。最初の３つのカラムは、アップストリームからダウンストリームへのデータ転送フォーマットを示し、後ろの３つのカラムはダウンストリームからアップストリームへのデータ転送フォーマットを示す。以下に信号を説明する。
ＥＤＣ［７：０］：  これらの信号は、ケーブル２８を通じて送信するデータにおけるエラーを検出して修正するために用いられる、８ビットのシンドロームである。
ＣＡＤ［３１：０］：  これらの信号は、３２ビットのアドレス／データである。
ＣＦＲＡＭＥ ：  この信号は、ケーブル・トランザクションの開始及び終了を知らせるために用いられるものであり、ＰＣＩのＦＲＡＭＥ 信号と類似である。
ＣＣＢＥ［３：０］ ：  ４ビット形態のバイドであり、或るＰＣＩクロックの位相と他のＰＣＩクロックの位相のＰＣＩコマンド又はメッセージ・コードの何れかとをイネーブルにする。
ＣＢＵＦＦ［３：０］：  アドレスの相において、これら信号は、アップストリーム及びダウンストリームの遅延された読み取り完了（ＤＲＣ）と遅延された読み取り要求（ＤＲＲ）のトランザクションを結び付けるために、ブリッジ・チップの遅延された完了待ち行列（ＤＣＱ）を初期設定するためのバッファ数を示す。アドレスの相の後に、これら信号は、パリティ・ビット、パリティ・エラー表示及びデータ準備完了信号（データ・レディ信号）を含む。
ＣＯＭＰＬＥＴＩＯＮ  ＲＥＭＯＶＥＤ：  このビットは、ケーブル２８の他側のトランザクション・オーダー化（transaction ordering）待ち行列（ＴＯＱ）から遅延された完了が除かれたことを知らせるために用いられる。
ＰＭＷ  ＡＣＫＮＯＷＬＥＤＧＥ：  このビットは、通信されたメモリ書き込み（ＰＭＷ）が他側で完了し、且つトランザクション・ラン待ち行列（ＴＲＱ）から除かれたことを知らせるために、用いられる。
ＬＯＣＫ ：  このビットは、ロックされたサイクルを識別するためにダウンストリームへ送信される（アップストリームへは送信されない）。
ＳＥＲＲ ：  このビットは、ＳＥＲＲ 表示をアップストリームへ送信するために用いられる。ダウンストリームへは送信されない。
ＩＮＴＳＹＮＣ及びＩＮＴＤＡＴＡ：  これらのビットは、８の割り込みを、ダウンストリームからアップストリームへシリアルに多重化されたフォーマットで搬送するためのものである。信号ＩＮＴＳＹＮＣは、割り込みシーケンスの開始を示す同期信号であり、信号ＩＮＴＤＡＴＡは、シリアル・データ・ビットである。信号ＩＮＴＳＹＮＣ及びＩＮＴＤＡＴＡは、ケーブル２８を通じて別々のラインで送られる。
ＲＥＳＥＴ  ＳＥＣＯＮＤＡＲＹ  ＢＵＳ： このビットは、ＣＰＵ１４がアップストリームのブリッジ・チップ２６のブリッジ制御レジスタの補助（第２の）リセット・ビットに書き込むときに、アサートされる。これにより、ダウンストリームのブリッジ・チップ４８がパワー・アップ状態にリセットされるようにする。スロットに対するリセット信号もまた、アサートされる。信号ＲＥＳＥＴＳＥＣＯＮＤＡＲＹ  ＢＵＳ（２次バス・リセット）は、ケーブル２８を通じて別のラインで送られる。
各ＰＣＩトランザクションのアドレス及びデータは、同じライン上に多重化されるので、各ＰＣＩトランザクションは、アドレス・フェーズ（相）と少なくとも１つ（バースト・トランザクションに対しては１つより多い）のデータ・フェーズとを含む。ＰＣＩの仕様はまた、単一アドレス・トランザクション（３２ビット・アドレス指定）とデュアル・アドレス・トランザクション（６４ビット・アドレス指定）とを支持する。
【００９４】
図１５Ａの図表は、単一アドレス・トランザクションのアドレス相及びデータ相の間に、バスの各部分にどの情報が現れるかを示す。単一アドレス・トランザクションに対して、第１のフェーズはアドレス・フェーズであり、第２及び後続のフェーズがデータ・フェーズである。遅延された読み出し／書き込み（遅延Ｒ／Ｗ）要求トランザクションのアドレス・フェーズにおいて、信号ＣＢＵＦＦ［３：０］は、アップストリーム及びダウンストリームのＤＲＣ及びＤＲＲのトランザクションを結び付けるために、ブリッジ・チップＤＣＱ１４８を初期設定するためのＤＣＱバッファ数（buff #）を示す。アドレス・フェーズの後、信号ＣＢＵＦＦ［０］は、パリティ・ビット（parity）を含む。信号ＣＣＢＥ［３：０］ は、アドレス・フェーズにおいてＰＣＩコマンド（PCI cmd）を含み、データ・フェーズにおいてバイト・イネーブル・ビット（BE<>）を含む。
ポステド（通信された）・メモリ書き込みトランザクションに対して、信号ＣＢＵＦＦ［３：０］は、アドレス・フェーズにおいては「どうでもよい（don't care、ドント・ケア）」であり、データ・フェーズにおいてはデータ準備完了（data ready）表示、パリティ・エラー（parity error）表示及びパリティ・ビット（parity）を含む。
遅延された読み出し／書き込み（遅延Ｒ／Ｗ）完了トランザクションにおいて、信号ＣＢＵＦＦ［３：０］は、アドレス・フェーズにおいてＤＣＱバッファ数（buff #）を含み、データ・フェーズにおいて完了の終了（end of completion）の表示、データ準備完了（data ready）表示、パリティ・エラー（parity error）表示及びパリティ・ビット（parity）を含む。信号ＣＣＢＥ［３：０］ は、アドレス・フェーズ相においてＤＲＣトランザクションを表すコードを含み、データ・フェーズにおいてＤＲＣトランザクションの状態ビット（status）を含む。遅延Ｒ／Ｗ完了トランザクションは、各データ相に対して宛て先バスの状態を返送する。データのパリティ・ビットは、ＣＣＢＥ［３］ で送信される。他の状態の状況は、ＣＣＢＥ［２：０］ バス上にエンコードされ、二進値「０００」は正常な完了を示し、二進値「００１」はターゲット・アボート状態を示す。アドレス／データ・ビットＣＡＤ［３１：０］は、アドレス・フェーズにおいて「ドント・ケア」であり、データ・フェーズにデータを含む。
ストリーム接続トランザクションにおいて、信号ＣＢＵＦＦ［３：０］は、アドレス・フェーズにおいてバッファ数を含み、信号ＣＢＵＦＦ［２］は、データ相においてデータ準備完了表示を含む。信号ＣＣＢＥ［３：０］は、アドレス・フェーズにおいてストリーム接続トランザクションを表すコードを含み、データ・フェーズにおいては「ドント・ケア」である。アドレス／データ・ビットＣＡＤ［３１：０］は、ストリーム接続トランザクションの間は使用されない。
【００９５】
図１５Ｂの表は、デュアル・アドレス・トランザクションに対する信号の符号化を示す。遅延Ｒ／Ｗ要求トランザクションにおいて、信号ＣＢＵＦＦ［３：０］は第１及び第２のアドレス・フェーズにおいてバッファ数を含み、信号ＣＢＵＦＦ［０］は、データ・フェーズにおいてパリティ・ビットを含む。信号ＣＣＢＥ［３：０］ は、第１のアドレス・フェーズにおいてデュアル・アドレス・サイクルを表すコードを含み、第２のアドレス・フェーズにおいてＰＣＩコマンドを含み、データ・フェーズにおいてバイト・イネーブル・ビットを含む。信号ＣＡＤ［３１：０］は、第１のアドレス・フェーズにおいて最上位アドレス・ビットを含み、第２のアドレス・フェーズにおいて最下位アドレス・ビットを含み、データ・フェーズにおいてデータ・ビット（data）を含む。デュアル・アドレスのポステド・メモリ書き込みトランザクションにおいて、信号ＣＢＵＦＦ［３：０］は、最初の２つのアドレス・フェーズにおいては「ドント・ケア」であるが、信号ＣＢＵＦＦ［１：０］は、データ・フェーズにおいてパリティ・エラー表示ビットとパリティ・ビットを含む。信号ＣＣＢＥ［３：０］ は、第１のアドレス・フェーズにおいてデュアル・アドレス・サイクルを表すコードを含み、第２のアドレス・フェーズにおいてＰＣＩコマンド・ビットを含み、データ・フェーズにおいてバイト・イネーブル・ビットを含む。信号ＣＡＤ［３１：０］は、第１のアドレス・フェーズにおいて最上位アドレス・ビットを含み、第２のアドレス・フェーズにおいて残りのアドレス・ビット（addr）を含み、データ・フェーズにおいてデータ・ビットを含む。
【００９６】
データ転送には３つの可能な状態、即ち、最後ではない、最後のケーブル転送、及び最後の要求がある。上記の「最後ではない」の状態は、別のデータのワードが呈示されていることを示すようにＦＲＡＭＥ が活性のときに、ビットＣＢＵＦＦ［２］をアサートすることによって示される。上記の「最後のケーブル転送」の状態は、信号ＣＦＲＡＭＥ が非活性のときにビットＣＢＵＦＦ［２］をアサートすることによって示される。上記の「最後の要求」の状態は、信号ＣＦＲＡＭＥ が非活性のときに、ビットＣＢＵＦＦ［３］及びＣＢＵＦＦ［２］をアサートすることによって示される。
以下の４つのＩＥＥＥ１１４９．１境界スキャン（Boundary-Scan）（ＪＴＡＧ）信号、すなわち、ＴＣＫ（テスト・クロック）、ＴＤＩ（テスト・データ入力）、ＴＤＯ（テスト・データ出力）、ＴＭＳ（テスト・モード選択）が、ＪＴＡＧテスト・チェーンを実施するために、ケーブル２８上に含まれる。オプションのＴＲＳＴ は、ケーブルを下流方向には送られないが、ＴＲＳＴ は、電力良好（パワー・グッド）信号から発生されることができる。
ＪＴＡＧ信号は、システムのＰＣＩコネクタから、ＪＴＡＧマスタ１１０を含むアップストリームのブリッジ・チップ２６を通じてダウンストリームのブリッジ・チップ４８へのケーブル２８を下流方向に、ＪＴＡＧマスタ１２８へ送られ、該ＪＴＡＧマスタは、ＪＴＡＧ信号を２次ＰＣＩバス３２上の６つのＰＣＩスロットの各々へ分配する。リターン経路は、ＪＴＡＧマスタ１２８からアップストリームのブリッジ・チップ２６へケーブルを上流に辿り、１次ＰＣＩバス２４上のＰＣＩスロットへ到達する経路である。信号ＴＤＯ、ＴＣＫ、ＴＭＳは、ダウンストリーム・バウンド（bound）信号である。信号ＴＤＩは、アップストリーム・バウンド信号である。
用いることができるケーブル２８の第１のタイプは、高性能パラレル・インターフェース（ＨＩＰＰＩ）標準を支持するように設計された、筒形５０対シールド・ケーブルである。ケーブルの第２のタイプは、シールド型５０対リボン・ケーブルである。第１のものの利点は、標準化され、丈夫であり、信頼性をもって一様に製造されることである。第２のものの利点は、機械的柔軟性と、組み立てにおけるコネクタへの自動的終結と、低価格とである。
【００９７】
図１６のテーブルは、ＨＩＰＰＩケーブル仕様の幾つかを示す。グラウンド・シールドは、アルミニウム・テープを覆うブレード（braid：編組）からなり、使用されるバッファの特性に起因する最小ＤＣ電流のみを流す。信号を伝達する方法（シグナリング方法）は、幾つかの利点を有する真の差動（true differential）形態であって差動バッファを備え、該差動バッファは、ケーブル２８を経て信号を送信及び受信するために用いられる。真の差動的なシグナリング方法は、このような短距離に対しては光ファイバよりも安価であり、他のシリアル的な方法よりもインターフェースの構成が簡単である。差動的シグナリング方法は、コモン・モード・ノイズ免疫性及びコモン・モード動作範囲を大きくすることができ、且つＡＳＩＣにおいて使用可能であり、且つＴＴＬよりも高速である。ツイスト対及びシールディングを用いると、電磁気的放射を最小化することができる。
選択されたシグナリング・レベルは、ススケーリング可能コヒーレント・インターフェース（ＳＣＩ）に対する低電圧差動信号（ＬＶＤＳ）に対するＩＥＥＥドラフト・スタンダードのドラフト１．１０（１９９５年５月５日）に記述されている。
ケーブル・コネクタは、ＡＭＰ金属シェル１００ピンコネクタであり、２行のピンを備えている。行は１００ミル（mil）離れており、ピンは５０ミルの中心上にある。金属シェルは、ＥＭＩシールディングを提供し、かつケーブル・シールドからボード・コネクタへのグラウンド経路の接続を提供する。かみ合う直角ボード・コネクタは、ＰＣＩブラケットに適合する。このコネクタは、コネクタが接続解除されるときに信号ピンからの静電放電を分流するために、ピンの行の間を通るバーを備えている。ケーブル・コネクタに取り付けられた一対の「ちょうねじ」が、該コネクタを固定する。
【００９８】
エラー検出及び訂正
エラー検出及び訂正（ＥＤＣ）手段が、ケーブル２８を通じての通信を保護するために、各ブリッジ・チップに備えられる。データは一対のワイヤを通じて送信される３つの２０ビット・グループに時分割多重化されているので、「隣接」するビット（即ち、ケーブル２８の同じワイヤに関連するビット）の各トリプレット（３つ組）は、一対のワイヤ上を送信されるように構成される。ＥＤＣ手段は、３つの時分割多重化された各相における同じビット位置において発生する単一ビット障害（failure）及び多重ビット障害を訂正することができる。多重ビット障害は、典型的にハードウエア障害、例えば、破損した又は欠陥のあるワイヤ又はブリッジ・チップ２６、４８の欠陥のあるピンと関連して発生する。
ケーブル２８の２０対のワイヤがダウンストリームの通信に用いられ、さらに２０対がアップストリームの通信に用いられる。５０対のＨＩＰＰＩケーブル２８の残りの１０対に関して（それらはクロック信号ＣＡＢＬＥ ＣＬＫ１及びＣＡＢＬＥ ＣＬＫ２、リセット信号、及び電力良好／ＰＬＬロック信号のような情報を通過させる）、エラー検出及び訂正機能は備えられない。
以下はＥＤＣアルゴリズムに対しての基礎仮定である。殆どのエラーは、単一ビット・エラーである。同じトランザクションにおいてランダムの多重ビット・エラーを有する確率は、極度に小さい。これは、ケーブル２８が、内部又は外部のソースからのインターフェースに影響を受けないからである。欠陥のあるワイヤによるエラーは、そのワイヤ上を搬送される１つのビット又はビットのグループに影響する。ワイヤ障害が発生したとき、対応する差動バッファのロジック状態は、有効ロジック状態である。
【００９９】
図１７を参照すると、スレーブ・ケーブル・インターフェース１９６、１９８のマルチプレクサ２２８からの出力信号ＦＩＦＯＯＵＴ［５９：０］が、チェック・ビットＣＨＫＢＩＴ［７：０］を発生するチェック・ビット・ジェネレータ３５０の入力に供給される。チェック・ビットは、図１８に示されるパリティ−チェック・マトリクスに従って発生され、そこにおいては、第１行はＣＨＫＢＩＴ［０］に対応し、第２行はＣＨＫＢＩＴ［１］に対応し、以下同様に対応する。行のビットは、データ・ビットＦＩＦＯＯＵＴ［０：５９］に対応する。
チェック・ビットは、パリティ・チェック・マトリクスにおいて「１」の値を有するすべてのデータ・ビットＦＩＦＯＯＵＴ［Ｘ］（Ｘは０〜５９と等しい）の排他的ＯＲによって発生される。従って、チェック・ビットＣＨＫＢＩＴ［０］は、データ・ビットＦＩＦＯＯＵＴ［７］、ＦＩＦＯＯＵＴ［８］、ＦＩＦＯＯＵＴ［９］、ＦＩＦＯＯＵＴ［１２］、ＦＩＦＯＯＵＴ［１３］、ＦＩＦＯＯＵＴ［１６］、ＦＩＦＯＯＵＴ［２２］、ＦＩＦＯＯＵＴ［２３］、ＦＩＦＯＯＵＴ［２４］、ＦＩＦＯＯＵＴ［２６］、ＦＩＦＯＯＵＴ［３２］、ＦＩＦＯＯＵＴ［３３］、ＦＩＦＯＯＵＴ［３４］、ＦＩＦＯＯＵＴ［３５］、ＦＩＦＯＯＵＴ［３８］、ＦＩＦＯＯＵＴ［３９］、ＦＩＦＯＯＵＴ［４５］、ＦＩＦＯＯＵＴ［４６］、ＦＩＦＯＯＵＴ［４８］、ＦＩＦＯＯＵＴ［４９］、ＦＩＦＯＯＵＴ［５１］、及びＦＩＦＯＯＵＴ［５２］の排他的ＯＲである。同様に、チェック・ビットＣＨＫＢＩＴ［１］は、ビット０、１、４、５、９、１０、１２、１４、１５、１６、２３、２７、３５、３７、３８、４０、４３、４６、４７、４８、５０及び５３の排他的ＯＲである。チェック・ビットＣＨＫＢＩＴ［２：７］は、図１８のパリティ−チェック・マトリクスに従って類似の様式で発生される。パリティ・チェック・マトリクスは、時分割多重化された相あたりの２０のサブチャンネル（またはワイヤ）と、蓄積されたデータにおける多重エラーが時分割多重化された相の各々における同じデータ位置に影響する故障したサブチャンネル又はワイヤに原因がある確率とに基づいている。
【０１００】
マスタ・ケーブル・インターフェース１９２、１９４において、チェック・ビットＣＨＫＢＩＴ［７：０］は、エラー検出及び訂正ビットＥＤＣ［７：０］として他のケーブル・データとともに提供され、スレーブ・ケーブル・インターフェース１９６、１９８のエラー訂正ロジックが、データのエラーを検出して修正することを可能にする。
チェック・ビットＣＨＫＢＩＴ［７：０］は、図１９に示すシンドローム・テーブルに従って固定ビットＦＩＸＢＩＴ［５９：０］を発生する固定ビット・ジェネレータ３５２に供給される。チェック・ビットＣＨＫＢＩＴ［７：０］は、２５６（２8）の値をとることが可能である。図１９のシンドローム・テーブルは２５６の可能な位置を有する。シンドローム・テーブルの２５６の位置の各々は２つのエントリを有し、第１のエントリはチェック・ビットＣＨＫＢＩＴ［７：０］の１６進値であり、第２のエントリはその位置に関連するケーブル・データ状態を示す。従って、例えば、１６進値００はエラーのない状態を示し、１６進値０１はデータ・ビット５２におけるエラーを示し、１６進値０２はデータ・ビット５３におけるエラーを示し、１６進値０３は訂正不能エラー（ＵＮＣＥＲ）を示す、等である。
ＥＤＣロジックは、データ・ビットが隣接している限り、即ち、同じワイヤと関連している限り、３つまでのエラーのビットを検出することができる。従って、例えば、チェック・ビットＣＨＫＢＩＴ［７：０］が１６進値３Ｄを含むならば、データ・ビット３、２３及び４３はエラーである。ケーブル２８は、ケーブル・データＣＡＢＬＥ ＤＡＴＡ［１９：０］を搬送する。従って、データ・ビットＦＩＦＯＯＵＴ［３］、ＦＩＦＯＯＵＴ［２３］及びＦＩＦＯＯＵＴ［４３］は、ケーブル・データの第４の位置、即ち、ＣＡＢＬＥ ＤＡＴＡ［３］と関連する。また、ＥＤＣの方法は、同じケーブル・ワイヤと関連する２ビット・エラーを訂正することができる。従って、例えば、１６進チェック・ビット値０Ｆは、ＣＡＢＬＥ ＤＡＴＡ［４］に関連するデータ・ビットＦＩＦＯＯＵＴ［４］及びＦＩＦＯＯＵＴ［２４］のエラーを示す。
【０１０１】
また、固定ビット・ジェネレータ３５２は、信号ＮＣＥＲＲ（訂正不能エラー）及びＣＲＥＲＲ（訂正可能エラー）を発生する。チェック・ビットによってエラーが示されていない場合、信号ＣＲＥＲＲ（訂正可能エラー）及びＮＣＥＲＲ（訂正不能エラー）は両方とも、ローにされる（ローにデアサート（deassert）される）。訂正不能状態ＵＮＣＥＲを含むシンドローム・テーブルのそれらの位置において、信号ＮＣＥＲＲがハイにされ、信号ＣＲＥＲＲがローにされる。これと相違して、訂正可能データ・エラーが示されるところでは、信号ＮＣＥＲＲがローにされ、信号ＣＲＥＲＲがハイにされる。
固定ビットＦＩＸＢＩＴ［５１：０］の下位５２ビットが、５２の排他的ＯＲゲート３５４の１つの入力に提供され、該ゲート３５４それぞれの他方の入力は、ＦＩＦＯデータＦＩＦＯＯＵＴ［５１：０］の下位５２ビットの各々を受信する。エラー検出及び訂正ビットＥＤＣ［７：０］に割り当てられた上位の８つのＦＩＦＯビットＦＩＦＯＯＵＴ［５９：５２］は、チェック・ビット及びシンドローム・ビットを発生するために用いられ、エラー訂正に用いられるものではない。排他的ＯＲゲート３５４は、固定ビットＦＩＸＢＩＴ［５１：０］及びデータ・ビットＦＩＦＯＯＵＴ［５１：０］のビット様式（bit-wise）の排他的ＯＲ演算を行う。データ信号ＦＩＦＯＯＵＴ［５１：０］が訂正可能なエラーのデータ・ビットを含むならば、これらのデータ・ビットは排他的ＯＲ演算によってフリップ（flip）される。排他的ＯＲゲート３５４は、修正されたデータＣＯＲＲＭＳＧ［５１：０］をマルチプレクサ３６０の１入力に提供する。マルチプレクサ３６０の０入力は、データ・ビットＦＩＦＯＯＵＴ［５１：０］を受信し、マルチプレクサ３６０は、コンフィギュレーション（環境設定）信号ＣＦＧ２Ｃ ＥＮＡＢＬＥ ＥＣＣによって選択制御される。マルチプレクサ３６０の出力は、信号ＭＵＸＭＳＧＩ［５１：０］を発生する。システムのソフトウエアが信号ＣＦＧ２Ｃ ＥＮＡＢＬＥ ＥＣＣをハイにセットすることによってエラー検出及び訂正をイネーブルすると、マルチプレクサ３６０は、修正されたデータＣＯＲＲＭＳＧ［５１：０］を選択して出力する。逆に、エラー検出及び訂正がディスエーブルされると、データ・ビットＦＩＦＯＯＵＴ［５１：０］が用いられる。
【０１０２】
訂正不能及び訂正可能なエラーのインジケータ（指示）ＮＣＥＲＲ及びＣＲＥＲＲはそれぞれ、ＡＮＤゲート３５６と３５８の入力に与えられる。ＡＮＤゲート３５６及び３５８は、信号ＣＦＧ２Ｃ ＥＮＡＢＬＥ ＥＣＣによってイネーブルされる。ＡＮＤゲート３５６及び３５８の出力は、信号Ｃ ＮＬＥＲＲ及びＣ ＣＲＥＲＲをそれぞれに発生する。信号Ｃ ＮＬＥＲＲ及びＣ ＣＲＥＲＲはエラー検出及び訂正がイネーブルされる場合にのみ、アサートされる。エラーが検出されたとき、固定ビットはラッチされ、診断目的に用いられる。
訂正可能エラーが示されると（Ｃ ＣＲＥＲＲがハイ）、割り込みが割り込み受信ブロック１３２へ発生され、割り込み出力ブロック１１４まで送られ、次にシステム割り込みコントローラへ送信され、そしてＣＰＵ１４へ送信され、割り込みハンドラが呼び出される。信号Ｃ ＮＣＥＲＲによって示される訂正不能エラーは、システム・エラーＳＥＲＲ がアサートされるようにし、それがシステム割り込みコントローラ（示さず）がマスク不可能割り込み（ＮＭＩ）をＣＰＵ１４へアサートするようにする。ダウンストリームのブリッジ・チップ４８において、訂正不能エラーはまた、ケーブルを上流方向に送信される電力良好／ＰＬＬロック表示ビットが否定されるようにし、アップストリームのブリッジ・チップ２６がサイクルをダウンストリームへ送信しないようにする。
パワー・アップの間及びその直後の偽りの割り込みを避けるため、アップストリーム及びダウンストリームのブリッジ・チップの両方のエラー検出及び訂正不能が、アップストリームのＰＬＬ１８６とダウンストリームのＰＬＬ１８２がクロックＣＡＢＬＥ ＣＬＫ１又はＣＡＢＬＥ ＣＬＫ２にロックするまで、パワー・アップの間ディスエーブルされる。
訂正可能エラーの割り込みに応答するシステム管理ソフトウエアは、ラッチされた固定ビットを読み取ることによって、原因を判定する。もしハードウエアの故障が判定されたならば（例えば、複数のデータ・エラー・ビットが同じケーブルのワイヤに関連する）、システム管理ソフトウエアは、ハードウエアの故障を修理するために、その状態をユーザに知らせることができる。システム管理ソフトウエアは、訂正不能エラーに起因するＳＥＲＲ に応答し、システムをシャット・ダウンするか又はユーザによってプログラムされた他の機能を行う。
【０１０３】
２次バス・アービタ
図３を参照すると、各ブリッジ・チップはＰＣＩアービタ（arbiter、アービトレーション手段）１１６、１２４を含む。アップストリームのブリッジ・チップ２６は通常はスロットに設置されるので、ＰＣＩアービタ１１６はディスエーブルされる。ＰＣＩアービタ１２４は、８つのマスタ、即ち、ＳＩＯ５０におけるホット・プラグ・コントローラ（装置の電源スイッチをオンにしたままで電力を投入した場合、すなわち、該装置のプラグを電源に差し込んだ場合に、該装置に事故が生じないように保護するための制御装置）及び６つのＰＣＩスロットを含む７つの一般的ＰＣＩマスタ（ＲＥＱ［７：１］ ，ＧＮＴ［７：１］ ）とブリッジ・チップ自身（ＢＬＲＥＱ ，ＢＬＧＮＴ ）とを支持する。信号ＢＬＲＥＱ 及びＢＬＧＮＴ は、ＰＣＩマスタ・ブロック１２３から送られ、またＰＣＩマスタ・ブロックへ送られる。２次ＰＣＩバス３２をターゲットとするＣＰＵ１４からのトランザクションがアップストリーム及びダウンストリームのブリッジ・チップ２６及び４８によって受信されたならば、ブリッジ・チップは信号ＢＬＲＥＱ をアサートする。ＳＩＯ５０に対する要求（リクエスト）ラインＲＥＱ［１］ 及び許可（グラント）ラインＧＮＴ［１］ は、ダウンストリームのブリッジ・チップ４８に内部的に送られる。ＰＣＩアービタ１２４は、１つのマスタに対するＧＮＴ 信号の否定と別のマスタに対するＧＮＴ 信号のアサートとの間に、ＰＣＩＣＬＫ２遅延を挿入する。
ダウンストリームのブリッジ・チップ４８において、ＰＣＩアービタ１２４は、信号ＰＣＩＲＳＴ２ の立ち上がりにおけるＲＥＱ［７］ のサンプリングされた値を基にして、イネーブル又はディスエーブルされる。もしブリッジ・チップ４８がＰＣＩＲＳＴ２ においてＲＥＱ［７］ ローをサンプリングしたならば、該チップはＰＣＩアービタ１２４をディスエーブルする。ＰＣＩアービタ１２４がディスエーブルされたならば、外部のアービタ（示さず）が用いられ、ホット・プラグ要求がＲＥＱ［１］ ピンに供給され、ホット・プラグ許可がＧＮＴ［１］ ピンに入力される。ブリッジＰＣＩバス要求はＲＥＱ［２］ ピンに供給され、その許可（ＧＲＡＮＴ）はＧＮＴ［２］ ピンに入力される。ブリッジ・チップ４８がＰＣＩＲＳＴ２ においてＲＥＱ［７］ ハイをサンプリングしたならば、該チップはＰＣＩアービタ１２４をイネーブルする。
【０１０４】
ＰＣＩアービタ１２４は、より高い優先順位のインジケータ（表示）に対してサービスを行うために又はマスタのＲＥＱ 信号が否定されていることに応答して、マスタのＧＮＴ 信号を否定する。そのＧＮＴ 信号が否定されると、現在のバスのマスタは、バスがアイドリング状態に戻るまでバスの所有を維持する。何れのＰＣＩエージェントもバスを現在使用していないか又は要求していないならば、ＰＣＩアービタ１２４は、コンフィギュレーション・スペース１２５におけるＰＡＲＫＭＳＴＲＳＥＬコンフィギュレーション・レジスタの値に依存して、２つのうちの１つを行う。即ち、レジスタの値が「０」ならば、ＰＣＩアービタ１２４は最後の活性のマスタがバス３２上に停まるようにし）、該値が「１」ならば、バスはブリッジ・チップ４８で停止される。
ＰＣＩアービタ１２４は、すべてのＧＮＴ 信号の最小の活性（アクティブ）時間を制御するＰＣＩ最小（ＭＩＮ）許可タイマ３０４（図２１）を含む。タイマ３０４に対するデフォールト値は１６進の「００００」であり、この値は最小許可時間要求がないことを示す。タイマ３０４は、ＧＮＴ ラインがアクティブであるＰＣＩＣＬＫ２のクロック期間の数を示すように、値１から２５５でプログラムされることができる。また、より多くの柔軟性を与えるために、２次バス３２上の各ＰＣＩマスタに個別の最小許可タイマを割り当てることもできる。最小許可時間は、現在のマスタがそのＲＥＱ 信号をアサートしているときにのみ適用可能である。一旦ＲＥＱ 信号がデアサートされると、ＧＮＴ 信号は最小許可時間の値に関係なく排除される。
【０１０５】
図２０Ａを参照すると、通常の動作において、ＰＣＩアービタ１２４はラウンド−ロビン（round-robin）優先順位スキーム（第２レベルのアービトレーション・スキーム）を実施する。ラウンド−ロビン・スキームにおける８つのマスタは、拡張ボックス３０の６つのスロット、ＳＩＯ５０、及びアップストリームのブリッジ・チップ２６から送信されたメモリ書き込み（ＰＭＷ）要求へ接続された装置を含む。このスキームにおけるＰＣＩバス３２上のすべてのマスタは、ブリッジ・チップ４８と同じ優先順位を有する。或るマスタが許可された後に２次ＰＣＩバス３２及び該マスタはＦＲＡＭＥ 信号をアサートしており、バスのアービトレーションが再び行われ、現在のマスタがラウンド−ロビン・スタックの最下部に置かれる。もしマスタが要求を否定するか又は最小許可タイマ３０４がタイムアウトすると、ＰＣＩバス３２は次に高い優先順位のマスタへ許可される。ロックされたサイクルは、ＰＣＩアービタ１２４によって何ら同様に取り扱われる。
特定の事象（イベント）に応答して、アービトレーション・スキームは、システムの性能を最適化するために変更される。それらの事象は、１）アップストリームからダウンストリームへの遅延読み出し要求（遅延された読み出し要求）又は遅延書き込み要求（遅延された書き込み要求）が保留される事象と、２）ダウンストリームからアップストリームへの遅延読み出し要求が、読み出し完了表示を提供されることなく保留される事象と、３）ブリッジ・チップ２６がアップストリームのバス２４上の現在のマスタであるときに、ストリーミンク（streaming）の可能性が存在する事象、とを含む。
遅延要求（遅延された要求）が検出されると、ブリッジ・チップ４８は、２次ＰＣＩバス３２を許可される次のマスタになる。一旦ブリッジ・チップ４８にバス３２が許可されると、該チップは、すべての残っている遅延要求を完了するまで又はサイクルの１つがリトライ（再試行（retry））されるまで、バス３２の所有を維持する。ブリッジ・チップ４８の再試行が行われたならば、２つのレベルのアービトレーション・スキームが、アービタ１２４によって実現される。ブリッジ・チップの読み出しサイクルが再試行される１つの主な原因は、ターゲットのデバイスが、フラッシュ（flush）される必要のある書き込みバッファをもつブリッジであることである。この場合において、最適の動作は、再試行を行うターゲットにバス３２を許可して、その書き込みバッファを空にできるようにし、ブリッジ・チップ読み出し要求を受け入れ可能にすることである。
【０１０６】
図２０Ｂを参照すると、２レベル・アービトレーション・プロトコルは、３つの可能なマスタ中の、即ち、ＣＰＵ１４からの遅延された要求（ＣＰＵ遅延要求）、再試行するマスタからの要求、及びレベル２（第２レベル）・アービトレーション・スキームによって選択されたマスタの中の、ラウンド−ロビン・スキームであるレベル１（第１レベル）・アービトレーション・スキームを含む。レベル１・アービトレーション・スキームにおける３つのマスタの各々は、第３番目のアービトレーション・スロット毎に保証される。メモリ・サイクルに対して、再試行するターゲットに関連するスロットは、各ＰＣＩデバイスに関連するメモリ範囲を記憶するブリッジ・チップ４８のコンフィギュレーション・スペース１２５におけるターゲット・メモリ範囲コンフィギュレーション・レジスタから決定される。もし再試行するマスタを決定することができないならば（Ｉ／Ｏ読み出しの場合のように）、又は、再試行するマスタが２次バス３２を要求しないならば、レベル１・アービトレーション・スキームが、ブリッジ・チップ４８とレベル２のマスタの間に存在する。
再試行を行うマスタは、レベル２のアービトレーションからマスクされない。従って、該マスタがレベル２のアービトレーション・スキームにおける次のマスタであるならば、バック−ツー−バック（back-to-back、連続する）・アービトレーションにおいて２つの勝ちを得ることが可能である。
例えば、アップストリームからダウンストリームへの読み出しが再試行され、且つマスタＢ及びマスタＥと同様にマスタＣ（再試行するマスタ）がバス３２を要求しているならば、バスの許可の順番は降順で以下のようである。即ち、ブリッジ・チップ４８がそのトランザクションを完了することができ且つＰＣＩアービタ１２４が通常の動作に対するそのレベル２・アービトレーション・スキームに戻るまで、ブリッジ・チップ４８、再試行するマスタ（マスタＣ）、マスタＣ、ブリッジ・チップ４８、再試行するマスタＣ、マスタＥ、ブリッジ・チップ４８、等々のようである。
ブリッジ・チップの読み出しが再試行され、且つ要求を行っている他のマスタがマスタＡとマスタＤのみであるならば（即ち、再試行するマスタがバスを要求していないか又はＩ／Ｏスペースにアクセスしているために識別されない）、バス要求の順番は、ブリッジ・チップ４８、マスタＡ、ブリッジ・チップ４８、マスタＤ、等々のようである。
２つのレベルのアービトレーション・スキームは、最高の優先順位のＣＰＵ１４から遅延された要求を与える。このアービトレーションの方法はＣＰＵ１４に対して大変有利であるが、最終的には、バス３２上の要求を行うすべてのデバイスがＰＣＩバス３２を許可される。そのようにすることによって、ＰＣＩブリッジ・チップの要求が再試行されるときに、２次バスの他のマスタが長時間の停止状態になることが少なくなる。
【０１０７】
図２１を参照すると、ＰＣＩアービタ１２４はレベル２・ラウンド−ロビン・アービトレーション・スキームを実施するために、Ｌ２状態マシン（レベル２の状態マシン）３０２を含む。Ｌ２状態マシン３０２は、現在のラウンド−ロビン・マスタを示す信号ＲＲ ＭＡＳＴ［２：０］を受信する。また、Ｌ２状態マシン３０２は、２次ＰＣＩバス３２の８つの可能なマスタに対応するリクエスト信号ＲＲ ＲＥＱ［７：０］を受信する。現在のマスタ及び要求信号の状態を基にして、Ｌ２状態マシン３０２はラウンド−ロビンの次のマスタを表す値を発生する。Ｌ２状態マシン３０２の出力は、６：３マルチプレクサ３０６の「０」入力に与えられ、その「１」入力は信号Ｑ２Ａ ＳＴＲＭＡＳＴ［２：０］を受信する。マルチプレクサ３０６の選択（セレクト）入力は信号ＳＴＲＥＡＭ ＲＥＱを受信し、この信号は、ストリーミングの機会が存在し（Ｑ２Ａ ＳＴＲＭＡＳＴがハイ）且つ２次ＰＣＩバス３２上のストリーミング・マスタがその要求ラインをアサートしており（ＭＹ ＲＥＱ［Ｑ２Ａ ＳＴＲＭＡＳＴ［２：０］］がハイ）且つ遅延された要求が保留されていない（ＢＡＬ ＤＥＬ ＲＥＱがロー）ときに、ＡＮＤゲート３０８によってハイにされる。
マルチプレクサ３０６の出力は、レベル２・アービトレーション・スキームにおけるラウンド−ロビンの次のマスタを表す信号Ｎ ＲＲ ＭＡＳＴ［２：０］である。信号Ｎ ＲＲ ＭＡＳＴ［２：０］は、Ｌ１状態マシン（レベル１の状態マシン）３００によって受信され、このマシンはまた以下の信号を受信する。すなわち、信号ＲＴＲＹＭＡＳＴ ＲＥＱ（再試行を行うバス・マスタの要求を表す）、信号ＭＩＮ ＧＲＡＮＴ（最小許可タイマ３０４がタイムアウトしたときにアサートされる）、遅延された要求信号ＢＡＬ ＤＥＬ ＲＥＱ、ストリーム要求信号ＳＴＲＥＡＭ ＲＥＱ、信号ＣＵＲＭＡＳＴ ＲＥＱ（現在のマスタがその要求信号のアサートを維持していることを示す）、信号ＡＮＹ ＳＬＯＴ ＲＥＱ（ブリッジ・チップ要求ＢＬＲＥＱ を含まない要求信号ＲＥＱ［７：１］の何れかがアサートされた場合に、ハイにアサートされる）、及び信号Ｌ１ＳＴＡＴＥ［１：０］（Ｌ１状態マシン３００の現在の状態を表す）である。Ｌ１状態マシン３００は、再試行するマスタ（ＲＴＲＹＭＡＳＴ ＲＥＱ）とブリッジ・チップ４８からの遅延された要求（ＢＡＬ ＤＥＬ ＲＥＱ）とレベル２のマスタ（ＡＮＹ ＳＬＯＴ ＲＥＱ）とを含む、３つの可能なレベル１のマスタの１つを選択する。
【０１０８】
再試行するマスタの要求信号ＲＴＲＹＭＡＳＴ ＲＥＱは、ＡＮＤゲート３１２から発生され、該ＡＮＤゲートは、信号ＢＡＬ ＤＥＬ ＲＥＱ、信号ＭＹ ＲＥＱ［ＲＴＲＹ ＭＡＴ［２：０］］（再試行するマスタがその要求をアサートしているかを示す）、及びＯＲゲート３１０の出力を受けとる。ＯＲゲート３１０の入力は、信号ＲＴＲＹ ＭＡＳＴ［２：０］を受けとる。従って、再試行を行うマスタが識別されていたならば（ＲＴＲＹ ＭＡＳＴ［２：０］が０ではない）、遅延された要求が存在し（ＢＡＬ ＤＥＬ ＲＥＱがハイ）、再試行を行うマスタがその要求をアサートしており、信号ＲＴＲＹＭＡＳＴ ＲＥＱがアサートされる。
Ｌ１状態マシン３００は、信号Ｎ Ｌ１ＳＴＡＴＥ［１：０］（Ｌ１状態マシン３００の次の状態を表す）と、信号Ｎ ＣＵＲＭＡＳＴ［２：０］（レベル２・アービトレーション・スキームに従う次のマスタを表す）を発生する。また、Ｌ１状態マシン３００は、信号ＯＰＥＮ ＷＩＮＤＯＷを発生し、この信号は、２次ＰＣＩバス３２上のマスタを変更するために許可（ＧＮＴ）状態マシン３０７に対して、再アービトレーションのウインドウが存在することを示す。Ｌ１状態マシン３００によって与えられる信号ＡＤＶ ＲＲ ＭＡＳＴは、次のレベル２・ラウンド−ロビンのマスタを進めるために信号ＲＲ ＭＡＳＴ［２：０］に信号Ｎ ＲＲ ＭＡＳＴ［２：０］の値をロードするときに、それを許可状態マシン３０７に示す。
【０１０９】
許可状態マシン３０７は、許可信号ＧＮＴ［７：０］とバス３２の所有権が変更されることを示すための信号ＣＨＡＮＧＩＮＧ ＧＮＴを出力する。許可信号ＧＮＴ［７：１］ は、ＧＮＴ［７：１］信号の反転された信号であり、許可信号ＢＬＧＮＴ は、ＧＮＴ［０］信号の反転である。許可状態マシン３０７はまた、信号Ｌ１ＳＴＡＴＥ［１：０］及び信号ＲＲ ＭＡＳＴ［２：０］を発生する。
最小許可タイマ３０４は、信号ＰＣＬＫによってクロッキングされ、信号ＭＩＮ ＧＲＡＮＴを発生する。また、最小許可タイマ３０４は、信号ＣＨＡＮＧＩＮＧ ＧＮＴ及びＮＥＷ ＦＲＡＭＥ（新しいＦＲＡＭＥ 信号がアサートされたことを示す）を受信する。最小許可タイマ３０４の初期値は、値｛ＣＦＧ２Ａ ＭＩＮＧＮＴ［３：０］，００００｝としてロードされ、信号ＣＦＧ２Ａ ＭＩＮＧＮＴ［３：０］は、最小許可タイマ３０４の初期値を規定するコンフィギュレーション・スペース１２５に記憶されたコンフィギュレーション・ビットである。最小許可タイマ３０４は、０にカウント・ダウンされて信号ＣＨＡＮＧＩＮＧ ＧＮＴがハイにアサートされた後に、再びロードされる。最小許可タイマ３０４に新しい値がロードされた後に、信号ＮＥＷ ＦＲＡＭＥがハイにアサートされ、且つ信号ＣＨＡＮＧＩＮＧ ＧＮＴが許可状態マシン３０７によってローにデアサートされたときに、該タイマは減分を開始し、これはＰＣＩバス３２上で新しいトランザクションが開始したことを示す。
信号ＭＹ ＲＥＱ［７：１］はＮＯＲゲート３１４によって発生され、このゲートの入力は要求信号ＲＥＱ［７：１］ とマスク信号Ｑ２ＡＭＡＳＫＲＥＱ［７：１］を受信する。マスク・ビットＱ２ＡＭＡＳＫＲＥＱ［Ｘ］（Ｘ＝１〜７）のアサートは、対応するマスタの要求ＲＥＱ［Ｘ］をマスクし、これにより、ＰＣＩアービタ１２４が要求信号に応答しないようにする。信号ＭＹ ＲＥＱ［０］はインバータ３１６から出力され、該インバータは、ブリッジ・リクエストＢＬＲＥＱ を受信する。
【０１１０】
図２２を参照すると、許可状態マシン３０７は４つの状態、ＰＡＲＫ、ＧＮＴ、ＩＤＬＥ４ＧＮＴ、ＩＤＬＥ４ＰＡＲＫを含む。リセット信号ＲＥＳＥＴ（ＰＣＩリセット信号ＰＣＩＲＳＴ２ から発生される）がアサートされると、許可状態マシン３０７は状態ＰＡＲＫとなり、信号ＡＮＹ ＲＥＱがデアサートされる間そこに停まる。ＰＣＩアービタ１２４への要求ラインの何れかがアサートされると、信号ＡＮＹ ＲＥＱはハイにアサートされる。ＰＡＲＫ状態において、ＰＣＩ−ＰＣＩブリッジ４８は、別の要求が存在しないときに、ＰＣＩバス３２の所有者としてとどまる。
信号ＡＮＹ ＲＥＱがアサートされたならば、許可状態マシン３０７は状態ＰＡＲＫから状態ＩＤＬＥ４ＧＮＴへ遷移し、信号ＣＨＡＮＧＩＮＧ ＧＮＴがハイにアサートされ、ＰＣＩアービタ１２４がマスタを変更していることを示す。許可信号ＧＮＴ［７：０］はすべて０にクリアされ、信号ＣＵＲＭＡＳＴ［２：０］が次のマスタＮ ＣＵＲＭＡＳＴ［２：０］の値で更新される。更に、ラウンド−ロビン・マスタ信号ＲＲ ＭＡＳＴ［２：０］は、信号ＡＤＶ ＲＲ ＭＡＳＴがＬ１状態マシン３００によってアサートされた場合に、次のラウンド−ロビン・マスタ値Ｎ ＲＲ ＭＡＳＴ［２：０］に更新される。信号ＡＤＶ ＲＲ ＭＡＳＴがハイのときは、次のＬ１マスタがＬ２マスタのうちの１つであることを示す。
状態ＩＤＬＥ４ＧＮＴから、許可状態マシン３０７は次にＧＮＴ状態に遷移し、信号ＧＮＴ［７：０］が新しい許可信号ＮＥＷＧＮＴ［７：０］の状態へ設定され、信号ＣＨＡＮＧＩＮＧ ＧＮＴがローになる。信号ＮＥＷＧＮＴ［７：０］は、図２４に示されるように、現在マスタ信号ＣＵＲＭＡＳＴ［２：０］の状態に基づいている。
【０１１１】
ＧＮＴ状態から３つの遷移が可能である。アービトレーション・ウインドウがオープンであり（ＯＰＥＮ ＷＩＮＤＯＷがハイ）、保留されている要求がなく（ＡＮＹ ＲＥＱがロー）、ＰＣＩバス３２がアイドリング状態であり（ＢＵＳ ＩＤＬＥがハイ）、次のマスタが現在のマスタである（即ち、現在のマスタがパークしているマスタである）場合、許可状態マシン３０７はＰＡＲＫ状態に戻る。ＧＮＴ状態からＰＡＲＫ状態へ戻るように遷移する場合、信号Ｌ１ＳＴＡＴＥ［１：０］は、信号Ｎ Ｌ１ＳＴＡＴＥ［１：０］で更新される。しかしながら、保留されている要求がなく且つバスがアイドリング状態であるが、現在のマスタがパークしているマスタではない（即ち、信号Ｎ ＣＵＲＭＡＳＴ［２：０］が信号ＣＵＲＭＡＳＴ［２：０］の値と等しくない）場合、アイドリング状態が必要であり、許可状態マシン３０６は、ＧＮＴ状態からＩＤＬＥ４ＰＡＲＫ状態へ遷移する。Ｌ１状態値Ｌ１ＳＴＡＴＥ［１：０］は更新される。ＩＤＬＥ４ＰＡＲＫ状態から、許可状態マシン３０７はＰＡＲＫ状態へ遷移し、許可信号ＧＮＴ［７：０］を新しい許可信号ＮＥＷＧＮＴ［７：０］に等しくセットして、ＰＣＩバス３２を新しいマスタに許可する。信号ＣＨＡＮＧＩＮＧ ＧＮＴもまたローにされる。
アービトレーション・ウインドウがオープンし（ＯＰＥＮ ＷＩＮＤＯＷがハイ）、且つ次のマスタが現在のマスタではない（信号Ｎ ＣＵＲＭＡＳＴ［２：０］が信号ＣＵＲＭＡＳＴ［２：０］と等しくない）場合、許可状態マシン３０６は、アイドリング状態ＩＤＬＥ４ＧＮＴへ遷移してバス・マスタ許可を変更する。遷移において、信号ＣＨＡＮＧＩＮＧ ＧＮＴがハイにアサートされ、信号ＧＮＴ［７：０］がすべて０にクリアされ、信号ＣＵＲＭＡＳＴ［２：０］が次のマスタ値Ｎ ＣＵＲＭＡＳＴ［２：０］に更新され、Ｌ１状態信号Ｌ１ＳＴＡＴＥ［１：０］が次の状態値Ｎ Ｌ１ＳＴＡＴＥ［１：０］に更新される。更に、信号ＡＤＶ ＲＲ ＭＡＳＴがハイにアサートされると、ラウンド−ロビン・マスタ信号ＲＲ ＭＡＳＴ［２：０］が次のラウンド−ロビン・マスタＮ ＲＲ ＭＡＳＴ［２：０］に更新される。許可信号ＧＮＴ［７：０］は次に、ＩＤＬＥ４ＧＮＴ状態からＧＮＴ状態への遷移において、値ＮＥＷＧＮＴ［７：０］に割り当てられる。
【０１１２】
図２３を参照すると、Ｌ１状態マシン３００（図２１）は、ＲＥＳＥＴ信号がアサートされたときに状態ＲＲにおいて動作を開始し、状態マシン３００は遅延された要求信号ＢＡＬ ＤＥＬ ＲＥＱがローの場合に（遅延された要求信号が保留されていないことを示す）状態ＲＲに停まる。ＲＲ状態の間、信号ＡＤＶ ＲＲ ＭＡＳＴはハイにアサートされ、許可状態マシン３０７がラウンド−ロビン・マスタを更新することを可能にする（即ち、信号ＲＲ ＭＡＳＴ［２：０］を値Ｎ ＲＲ ＭＡＳＴ［２：０］と等しくセットする）。ＲＲ状態は、レベル２・アービトレーション・スキームが用いられるラウンド−ロビン状態である。ＲＲ状態の間、次のマスタ信号Ｎ ＣＵＲＭＡＳＴ［２：０］は次のラウンド−ロビン・マスタＮ ＲＲ ＭＡＳＴ［２：０］と等しくセットされ、ストリーム要求が存在する場合（ＳＴＲＥＡＭ ＲＥＱがハイ）、又は最小許可タイマ３０４がタイマ・アウトしている場合（ＭＩＮ ＧＲＡＮＴがハイ）、又は現在のマスタがその要求を否定した場合（ＣＵＲＭＡＳＴ ＲＥＱがローになる）に、信号ＯＰＥＮ ＷＩＮＤＯＷがハイにセットされる。信号ＯＰＥＮ ＷＩＮＤＯＷは、ハイにアサートされたときに、新しいアービトレーションが行われることを可能とする。
【０１１３】
遅延された要求が検出されると（ＢＡＬ ＤＥＬ ＲＥＱがハイになる）、Ｌ１状態マシン３００はＲＲ状態からＢＡＬ状態へ遷移し、次のマスタ状態Ｎ ＣＵＲＭＡＳＴ［２：０］をブリッジ・チップ４８としてセットし、信号ＡＤＶ ＲＲ ＭＡＳＴをデアサートして、レベル２・ラウンド−ロビン・アービトレーションをディスエーブルにする。ＢＡＬ状態において、遅延された要求がデアサートされるか（ＢＡＬ ＤＥＬ ＲＥＱがローになる）又は遅延された要求が再試行される（ＢＡＬ ＲＥＴＲＩＥＤがハイになる）場合に、信号ＯＰＥＮ ＷＩＮＤＯＷはハイにアサートされる。信号ＢＡＬ ＤＥＬ ＲＥＱがローにされるか、又は遅延された要求ＢＡＬ ＤＥＬ ＲＥＱがハイにアサートされ、そして再試行するマスタの要求がローにされ（ＲＴＲＹＭＡＳＴ ＲＥＱがロー）、且つスロット・リクエストＡＮＹ ＳＬＯＴ ＲＥＱがハイにアサートされると、Ｌ１状態マシン３００はＲＲ状態に戻るように遷移する。この遷移において、信号ＡＤＶ ＲＲ ＭＡＳＴはハイにアサートされ、次のマスタ信号Ｎ ＣＵＲＭＡＳＴ［２：０］は次のラウンド−ロビン・マスタＮ ＲＲ ＭＡＳＴ［２：０］と等しくセットされる。信号ＢＡＬ ＤＥＬ ＲＥＱがデアサートされると、それは、アービタ１２４がレベル２・ラウンド−ロビン・スキームへ戻るべきであることを示す。遅延された要求信号がアサートされるが再試行を行うマスタの要求が否定されたならば、レベル１・アービトレーション・スキームがブリッジ・チップ４８とＰＣＩバス３２のスロットの間に存在することになる。
【０１１４】
遅延された要求ＢＡＬ ＤＥＬ ＲＥＱと再試行するマスタの要求ＲＴＲＹＭＡＳＴ ＲＥＱの両方がアサートされると、Ｌ１状態マシン３００は状態ＢＡＬから状態ＲＥＴＲＹ ＭＡＳＴへ遷移し、再試行を行うマスタは、次のマスタとしてセットされる（Ｎ ＣＵＲＭＡＳＴ［２：０］がＲＴＲＹ ＭＡＳＴ［２：０］と等しくセットされる）。信号ＡＤＶ ＲＲ ＭＡＳＴはローに維持される。ＲＥＴＲＹ ＭＡＳＴ状態において、ＰＣＩスロット・マスタの何れも要求をアサートしていないならば（ＡＮＹ ＳＬＯＴ ＲＥＱがロー）、レベル１・アービトレーション・スキームは再試行するマスタとブリッジ・チップ４８の間にあることになり、Ｌ１状態マシン３００はＢＡＬ状態に戻るように遷移する。ブリッジ・チップ４８は次のマスタとしてセットされ（Ｎ ＣＵＲＭＡＳＴ［２：０］が状態ＢＡＬＢＯＡと等しい）、信号ＡＤＶ ＲＲ ＭＡＳＴがローに維持される。しかしながら、スロット・マスタの何れかが要求をアサートしていると（ＡＮＹ ＳＬＯＴ ＲＥＱがハイ）、Ｌ１状態マシン３００は、ＲＥＴＲＹ ＭＡＳＴ状態からＲＲ状態へ遷移する。遷移において、信号ＡＤＶ ＲＲ ＭＡＳＴはハイにアサートされ、次のラウンド−ロビン・マスタが次のマスタとしてセットされる（Ｎ  ＣＵＲＭＡＳＴ［２：０］がＮ ＲＲ ＭＡＳＴ［２：０］と等しくセットされる）。
ブリッジ・チップのストリーミング能力を利用するために、ＤＲＣに対するデータがケーブル２８から到着し始めるときに、そのＤＲＣに関連するマスタは、最高の優先順位のデバイスとなる（そのＲＥＱ がアサートされると仮定する）。これによって、マスタがケーブル２８を下ってくるデータ・ストリームを受信することが可能となり、そのとき、ウインドウはストリーミングのためにそこにある。ブリッジ・チップ４８がＤＲＣ待ち行列を満たす前にマスタを接続できないならば、アップストリームのブリッジ・チップ２４が遮断し、データの一部のみが要求を行っているマスタに渡されてしまい、マスタがアップストリームのバス２４に別の読み出し要求を発生することが必要となる。ストリーミング・マスタは、ＤＲＣデータがケーブル２８から到着し続ける限り、最高の優先順位を保持する。マスタが異なるサイクル／アドレスを繰り返すならば再試行されるが、その要求がどこかへ行ってしまうまで、又はストリーミングの機会が通過するまで、２次ＰＣＩバス３２の所有権を維持する。
【０１１５】
再試行要求及び多重スレッド・マスタ
各ブリッジ・チップは、遅延されたトランザクションのデバイスであるので、ダウンストリームのバス３２上のデバイスがアップストリームのターゲットを宛て先にする読み出し要求を発生すると、ダウンストリームのブリッジ・チップ４８は、２次バス３２上に再試行トランザクション（ＰＣＩの仕様において説明）を発生し、ケーブル２８を上流方向に要求を送信する。再試行トランザクションは、要求を行っているマスタがＰＣＩバス３２の制御を放棄するようにし、そのＲＥＱ ラインを否定するようにする。ＲＥＱ ラインを否定した後に、再試行したマスタは、後の時間に、同じサイクルに対して要求を再アサートし、それによって、そのＧＮＴ がアサートされ（もしそのＲＥＱ ラインがマスクされていない場合）、且つダウンストリームのブリッジ・チップ４８において読み出し完了表示がアサートされるまで、バス・マスタが再試行される結果となる。
【０１１６】
図２５を参照すると、再試行要求の不必要なサービスを避けるために、再試行された遅延された読み出し又は書き込み要求を発生する２次バス・マスタのＲＥＱ ラインは、遅延された完了信号が戻るまで、信号Ｑ２Ａ ＭＡＳＫ ＲＥＱ［７：１］（再試行されマスクされていないブリッジ・チップ４８からの要求）の適宜のものをアサートすることによってマスクされる。この様式において、要求を行う他のマスタには、それらの要求を得るための優先順位が与えられる。遅延された完了信号と関連する第１の情報が返送されるとすぐに、対応するマスタのＲＥＱ ラインはマスク解除され、再試行したマスタが再びアービトレーションに入ることができる。
しかしながら、第１のターゲットをアサートでき、再試行されるようにし、異なる要求とともに戻ってくることが可能な、ダウンストリームのバス３２（図２６Ｂ）上の多重スレッド（multi-threaded）（又は多重ヘッド（multi-headed））のマスタに対しては、特別なケースが存在する。そのような多重スレッド・バス・デバイスの１つは、２次ＰＣＩバス３２と下位のＰＣＩバス３２５を接続するＰＣＩ−ＰＣＩブリッジ３２３である。バス３２５は、ネットワーク・インターフェース・カード（ＮＩＣ）３２７Ａと３２７Ｂに接続され、それらは２つの異なるネットワークに接続される。従って、１次ＰＣＩバス３２に対するＮＩＣ３２７Ａからの要求がブリッジ・チップ４８によって再試行されるならば、ＮＩＣ３２７Ｂは異なる要求を発生することができる。この場合、信号ＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］がハイにセットされることによって、多重スレッド・マスタのＲＥＱ ラインはマスクされない。
【０１１７】
図２５の状態レジスタ３２６は、スロットがシングル又は多重スレッドであるかを判定する。レジスタ３２６は、リセットされると、各２次バス・デバイスがシングル−スレッドであると推定するためにクリアされる。次に、各スロットは、同じマスタからの或るサイクルが保留されているときに異なるサイクルを要求するかを判定するために、監視される。マスタにおいて多重スレッドの挙動が観察されたならば、そのマスタは、対応するビットＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］をハイにセットすることによって、マスクされる。
状態レジスタ３２６の入力は、１４：７マルチプレクサ３２８の出力に接続され、このマルチプレクサの「０」入力は１４：７マルチプレクサ３３０の出力に接続され、「１」入力はアドレス・ビットＰ２Ｑ ＡＤ［２２：１６］に接続される。選択信号ＣＦＧＷＲ ＭＭは、マルチプレクサ３２８の「０」入力と「１」入力を選択する。信号ＣＦＧＷＲ ＭＭがハイにアサートされると、データ・ビットＰ２Ｑ ＡＤ［２２：１６］により状態レジスタ３２６へコンフィギュレーション書き込みがなされ、レジスタ３２６のビットのソフトウエア制御を可能にする。マルチプレクサ３３０の「１」入力は多重マスタ信号ＭＵＬＴＩ ＭＡＳＴＥＲ［７：１］を受信し、「０」入力はレジスタ３２６の出力を受信し、そして、マルチプレクサ３３０は信号ＭＵＬＴＩ ＳＥＬによって制御される。信号ＭＵＬＴＩ ＳＥＬはＡＮＤゲート３３８によって発生され、このゲートの第１の入力は、信号Ｑ２ＰＩＦ ＣＨＥＣＫ ＣＹＣ（２次ＰＣＩバス３２上のバス・デバイスからの遅延されたメモリ読み出し又は書き込み要求の間などに、ハイにアサートされて、現在のトランザクション情報が待ち行列ブロック１２７に記憶された情報と一致するかチェックされるべきであることを示す）を受信し、このゲートの他の入力は、信号ＤＣＱ ＨＩＴ（現在のアドレス情報が、ＤＣＱ１４８における要求を行っているマスタの保留要求に関連するアドレス情報と一致しないことを示す）の反転信号を受信する。従って、比較が一致しなければ、信号ＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［７：１］の値が更新される。
【０１１８】
マスタＸが再試行された保留の要求を有し、且つマスタＸが異なる要求とともに戻って来たならば、ビットＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］はハイにアサートされる。これは保留のトランザクション情報（例えば、アドレス、バイト・イネーブル、書き込みのためのデータ）と新しい要求のアドレスを比較することによってをチェックされる。比較が一致しなかったということは、マスタが多重スレッドであることを示す。一旦、多重マスタ・コンフィギュレーション・ビットＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］（Ｘ＝１〜７）がハイにセットされると、このビットはハイに維持される。
信号ＭＵＬＴＩ ＭＡＳＴＥＲ［７：１］は、デコーダ３３６によって発生される。デコーダ３３６は信号Ｑ２ＰＩＦ ＳＬＯＴ［２：０］（マスタからの現在の遅延された要求に対するスロット数）、Ｑ［７：０］ ＭＡＳＴＥＲ［２：０］（ＤＣＱ１４８における８つのバッファの各々に関連するマスタ）、Ｑ［７：０］ ＣＯＭＰＬＥＴＥ（８つの待ち行列の各々の完了状態）、及びＱ［７：０］ ＰＡＲＴ ＣＯＭＰＬＥＴＥ（遅延された完了待ち行列におけるバッファの各々の部分的完了状態）を受信する。例えば、信号Ｑ０ ＭＡＳＴＥＲ［２：０］が値４を含むならば、それは、ＤＣＱバッファ０がスロット４におけるバス・デバイスからの遅延された要求のトランザクション情報を記憶することを示す。信号ＱＹ ＣＯＭＰＬＥＴＥ（Ｙ＝０〜７）は、ハイにアサートされると、ＤＣＱバッファＹが遅延された要求のトランザクションに関連するすべてのデータを受信したことを示す。信号ＱＹ ＰＡＲＴ ＣＯＭＰＬＥＴＥ（Ｙ＝０〜７）は、ハイにアサートされると、マスタのうちの１つの遅延されたトランザクションに対してＤＣＱバッファとしてＤＣＱバッファＹが割り当てられたが、その遅延されたトランザクションに関連するすべてのデータがまだ受信されていないことを示す。
【０１１９】
現在のスロット番号Ｑ２ＰＩＦ ＳＬＯＴ［２：０］が８つの待ち行列のマスタの表示の信号Ｑ［７：０］ ＭＡＳＴＥＲ［２：０］の何れかの値と等しく、且つ対応するＤＣＱバッファが完了又は部分的完了の状態である場合には、信号ＤＣＱ ＨＩＴがローで且つ信号Ｑ２ＰＩＦ ＣＨＥＣＫ ＣＹＣがハイであるならば、ビットＭＵＬＴＩ ＭＡＳＴＥＲ［７：１］の対応するものがハイにセットされる。即ち、例えば、信号Ｑ２ＰＩＦ ＳＬＯＴ［２：０］が値２を含み、スロット２におけるデバイスが遅延された要求の現在のマスタであることを示し、ＤＣＱバッファ５がスロット２のマスタに対する保留の要求を記憶しており（Ｑ５ ＭＡＳＴＥＲ［２：０］＝５）、信号Ｑ５ ＣＯＭＰＬＥＴＥ又は信号Ｑ５ ＰＡＲＴ ＣＯＰＭＬＥＴＥの何れかがハイであり、信号Ｑ２ＰＩＦ ＣＨＥＣＫ ＣＹＣがハイであり、信号ＤＣＱ ＨＩＴがローであるならば、ビットＭＵＬＴＩ ＭＡＳＴＥＲ［２］はハイにセットされて、スロット２のデバイスが多重スレッドのマスタであることを示す。
マスク要求発生ブロック３３２は、信号Ｑ［７：０］ ＭＡＳＴＥＲ［２：０］、Ｑ［７：０］ ＳＴＡＴＥ［３：０］（遅延された完了待ち行列０〜７の状態を示す）、ＳＬＯＴ ＷＩＴＨ ＤＡＴＡ［７：０］（遅延された完了Ｑ０〜７が有効データを含むかを示す）、ＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］（Ｘ＝１〜７）、ＣＦＧ２Ｑ ＡＬＷＡＹＳ ＭＡＳＫ、及びＣＦＧ２Ｑ ＮＥＶＥＲ ＭＡＳＫに応答して、信号Ｑ２Ａ ＭＡＳＫ ＲＥＱ［Ｘ］（Ｘ＝１〜７）を発生する。
【０１２０】
図２６Ａに示されるように、マスク要求発生ブロック３３２は、信号Ｑ２Ａ ＭＡＳＫ ＲＥＱ［Ｘ］（Ｘ＝１〜７）を発生するための２：１マルチプレクサ３２０を含む。マルチプレクサ３２０の「１」入力はＯＲゲート３２２の出力に接続され、「０」入力はロー（アース）に結合される。マルチプレクサ３２０の選択制御入力は、信号ＭＡＳＫ ＭＵＸＳＥＬである。ＯＲゲート３２２の１つの入力は、ＮＯＲゲート３２４の出力に接続される。このＮＯＲゲートの１つの入力は、信号ＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［Ｘ］（多重スレッドのマスタを示す）を受信し、別の入力は信号ＣＦＧ２Ｑ ＮＥＶＥＲ ＭＡＳＫ（多重スレッドのマスタが検出された場合に要求ラインがマスクされるべきではないことを示すコンフィギュレーション・ビット）を受信する。ＯＲゲート３２２の別の入力は、信号ＣＦＧ２Ｑ ＡＬＷＡＹＳ ＭＡＳＫを受信し、これは、信号ＭＵＸＳＥＬがハイにアサートされた場合に対応するマスク・ビットＱ２Ａ ＭＡＳＫ ＲＥＱ［Ｘ］が常にマスクされるべきであることを示すコンフィギュレーション・ビットである。２次バス・マスタからの要求が待ち行列ブロック１２７に既に存在するデータへのものではない、即ち、要求が１次バス２４へ送信されねばならないならば、信号ＭＡＳＫ ＭＵＸＳＥＬはハイにアサートされる。即ち、要求が２次ＰＣＩバス３２上のデバイスから１次ＰＣＩバス２４へアップストリームに送信される毎に、ビットＣＦＧ２Ｑ ＭＵＬＴＩ ＭＡＳＴＥＲ［７：１］のチェックが行われて、多重スレッドのマスタが検出されたかを判定する。
要求をマスクすることは、コンフィギュレーション・レジスタ１２５において適当なビットをセットすることによって、オーバーライド（override）されることができる。使用可能なモジュールには、１）多重スレッドのマスタでない場合に、要求のマスクがイネーブルされるノーマル・モード（ＣＦＧ２Ｑ ＮＥＶＥＲ ＭＡＳＫ＝０、ＣＦＧ２Ｑ ＡＬＷＡＹＳ ＭＡＳＫ＝０）、２）多重スレッドであったとしても、再試行したマスタからの要求がマスクされる常時マスク・モード（ＣＦＧ２Ｑ ＡＬＷＡＹＳ ＭＡＳＫ＝１）、及び３）要求が決してマスクされない非マスク・モード（ＣＦＧ２Ｑ ＮＥＶＥＲ ＭＡＳＫ＝１、ＣＦＧ２Ｑ ＡＬＷＡＹＳ ＭＡＳＫ＝０）が含まれる。
【０１２１】
拡張カードの挿入と取り外し
拡張カードの接続
図１および図２７Ａに示すように、共通設計３０の２つの拡張ボックス３０ａおよび３０ｂは、その各々が、コンピュータ・システム１０をパワーアップしたままで、従来型の拡張カード８０７が（ホットプラグされて）挿入及び取り外しできる６つのホットプラグ型スロット３６（３６ａ〜３６ｆ）を持つ。６つの機械式レバー８０２は、対応するホットプラグ型スロット３６中に挿入される拡張カード８０７の内の希望するものを閉鎖（クローズ）、すなわちラッチする時に）固定するのに使用される。スロット３６の内の１つから拡張カード８０７を取り外したり挿入したりするためには、対応するレバー８０２を開放（オープン）しなければならない、すなわちラッチを外さなければならないが、レバー８０２が開放している間は、対応するスロット３６はパワーはダウンしたままである。そのスロット３６に固着しているレバー８０２を開放すると、コンピュータ・システム１０はこれを感知して、カード８０７がそのスロット３６から取り外しできるようになる前に、カード８０７（および対応するスロット３６）をパワーダウンする。パワーダウンされたスロット３６は、カード８０７を保持していない他のスロットと同様に、コンピュータ・システム１０がそのソフトウエアで希望のスロット３６をパワーアップするまで、パワー・ダウンされたままである。カード・スロット３４に挿入されたカード４６はブリッジ・チップ４８を有するが、このチップは、レバー８０２の固定状況（開放しているか閉成しているか）を監視し、どのカード８０７（および対応するスロット３６）でもレバー８０２で固定されていないものがあれば、パワーダウンする。コンピュータ・システム１０のソフトウエアはまた、どのスロット３６でもパワーダウンできる。
複数のカード８０７は、パワーアップ・シーケンスでパワーアップされ、パワーダウン・シーケンスでパワーダウンされる。パワーアップ・シーケンスでは、電力は、パワーアップされているカード８０７に最初に供給され、その後で、パワーアップされるカード８０７に、ＰＣＩクロック信号が（ＰＣＩバス３２を介して）入力される。カード８０７の残りのＰＣＩバス信号線は、ＰＣＩバス３２の対応するラインに結合される。最後に、パワーアップされているカード８０７用のリセット信号が反転され、これによってカード８０７はリセット状態から解放される。
【０１２２】
パワーアップ・シーケンスによって、パワーアップされるカード８０７の回路は、残りのＰＣＩバス信号が与えられる以前に、ＰＣＩクロック信号によって完全に機能可能となる。クロック信号および残りのＰＣＩバス信号は、カード８０７に接続され、しかもカード８０７がリセットされる以前であれば、ブリッジ・チップ４８はＰＣＩバス３２の制御を保有する。これらの時間中、ブリッジ・チップ４８がＰＣＩバス３２を制御するので、パワーアップ・シーケンスによって発生するＰＣＩバス３２への電位グリッチは、パワーアップされているカード８０７の動作には影響しない。
パワーダウン・シーケンスにおいては、パワーダウンされるカード８０７が最初にリセットされる。次に、ＰＣＩクロック信号以外のＰＣＩバス信号がカード８０７から除かれる。するとブリッジ・チップ４８は、カード８０７がパワーダウンされる前に、カード８０７からＰＣＩクロック信号を除去する。パワーダウン・シーケンスによって、パワーダウンされるカード８０７からバス３２への誤信号の伝搬が最小化されるが、これは、カード８０７上の回路がＰＣＩバス信号ラインが遮断されるまでは、完全に機能可能であるためである。
ＰＣＩクロック信号および残りのＰＣＩバス信号の接続が外され、カード８０７がリセットされると、ブリッジ・チップ４８はＰＣＩバス３２を制御する。これらの時間中、ブリッジ・チップ４８がＰＣＩバス３２を制御するので、パワーダウン・シーケンスによって起こるＰＣＩバス３２上の電位グリッチは、パワーアップされているカード８０７の動作に影響しない。
【０１２３】
ブリッジ・チップ４８は、２４本の制御信号ＰＯＵＴ［３９：１６］によってスロット３６のパワーアップ・シーケンスとパワーダウン・シーケンスを制御するシリアル入出力（ＳＩＯ）回路５０を具備する。制御信号ＰＯＵＴ［３９：１６］は、ＳＩＯ回路５０が発生する４０本の出力制御信号ＰＯＵＴ［３９：１６］の一部（サブ集合）である。制御信号ＰＯＵＴ［３９：１６］は、スロット・バス・イネーブル信号ＢＵＳＥＮ＃［５：０］、スロット・パワー・イネーブル信号ＰＷＲＥＮ［５：０］、スロット・クロック・イネーブル信号ＣＬＫＥＮ＃［５：０］およびスロット・リセット信号ＲＳＴ＃［５：０］（すべてＳＩＯ回路５０の内部信号であり、後述する）がラッチされたものである。制御信号ＰＯＵＴ［３９：０］、信号ＢＵＳＥＮ＃［５：０］、ＰＷＲＥＮ［５：０］、ＣＬＫＥＮ＃［５：０］およびＲＳＴ＃［５：０］の関係を次の表に示す。
【表１５】
0003895006.tif 000016
【０１２４】
図２および図２８に示すように、ホットプラグ型スロット３６の各々は、ＰＣＩバス３２に対するスロット３６の接続および取り外しのための関連のスイッチ回路４１を有する。スロット３６それぞれに備えられているスイッチ回路４１には、制御信号ＰＯＵＴ［３９：１６］の内の４つが入力される。例えば、スロット３６ａの場合、制御信号ＰＯＵＴ［２８］がオンになる、すなわちロー・レベルであると、スロット３６ａは、スイッチ回路４７によってＰＣＩバス３２のバス信号線に接続される。制御信号ＰＯＵ［２８］がオフになる、すなわちハイ・レベルであると、スロット３６ａはＰＣＩバス３２のバス信号ラインからその接続を外される。
制御信号ＰＯＵＴ［２２］がオンになる、すなわちロー（低レベル）の場合、スロット３６ａは、スイッチ回路４３を介してＰＣＩクロック信号ＣＬＫに接続される。制御信号ＰＯＵＴ［２２］がオフになる、すなわちハイの場合、スロット３６ａはクロック信号ＣＬＫからその接続を外される。
制御信号ＰＯＵＴ［３４］がオンになる、すなわちハイの場合、スロット３６ａはスイッチ回路４５を介してカードの電源レベルＶSSに接続される。制御信号ＰＯＵＴ［３４］がオフになる、すなわちローの場合、スロット３６ａは、カード電源レベルＶSSからその接続を外される。
制御信号ＰＯＵＴ［１６］がオンになる、すなわちローの場合、スロット３６ａはリセットされ、制御信号ＰＯＵＴ［１６］がオフになる、すなわちハイの場合、スロット３６ａはリセット状態から脱出する。
【０１２５】
図２に示すように、ＳＩＯ回路５０は、拡張ボックス３０が提供する最高１２８（１６バイト）のラッチ状態信号ＳＴＡＴＵＳ［１２７：０］を選択して監視する。状態信号ＳＴＡＴＵＳ［１２７：０］は、拡張ボックス３０の選ばれた状態の”スナップショット”を形成する。状態信号ＳＴＡＴＵＳ［１２７：０］には、レバー８０２の個々の固定状態（開放されているか、閉成されているか）を示す６つの状態信号ＳＴＡＴＵＳ［５：０］が含まれる。ＳＩＯ回路５０は、状態信号ＳＴＡＴＵＳ［３１：０］の論理電圧レベルに変化がないかどうかを監視する。ＳＩＯ回路５０は、ＣＰＵ１４からの指示に基づいて、状態信号ＳＴＡＴＵＳ［１２７：３２］を順次にＳＩＯ回路５０に送り込む。
ＳＩＯ回路５０は、シリアル・データ信号ＮＥＷ ＣＳＩＤを介して、状態信号ＳＴＡＴＵＳ［１２７：０］をその最下位信号から始めて受信する。データ信号ＮＥＷ ＣＳＩＤは、スロット３６と共に拡張ボックス３０のボード上に位置する３２ビットのパラレル入力シフトレジスタ８２のシリアル出力によって供給される。
レジスタ８２は、そのパラレル入力端子から、３２の最下位状態信号ＳＴＡＴＵＳ［３１：０］に含まれる２４のパラレル状態信号ＰＩＮ［２３：０］（ホットプラグ型スロット３６の各々に対して４つづずつが関連している）を受信する。状態信号ＳＴＡＴＵＳ［３１：０］の内１つ以上の信号によって示される状態、すなわち論理電圧レベルが変化すると、ブリッジ・チップ４８は、割り込み受信ブロック１３２によって受信されたシリアル割り込み要求信号ＳＩ ＩＮＴＲ＃をオンにする、すなわちローに駆動することによって、ＣＰＵ１４に対して割り込み要求を発生させる。状態信号ＰＩＮ［２３：０］には、個々のスロット３６と関連する２つのＰＣＩカード存在信号（ＰＲＳＮＴ１＃およびＰＲＳＮＴ２＃）が含まれる。
【０１２６】
６つの状態信号ＰＩＮ［５：０］（自身のラッチされた信号、すなわち状態信号ＳＴＡＴＵＳ［５：０］に対応している）は、レバー８０２の各々の固定状態、すなわち契合状態（開成しているか閉成しているか）を示す。６つのスライディング・スイッチ８０５（図２７のＡ〜Ｃを参照）は、その対応するレバー８０２の動きによって始動されて、その対応するレバー８０２の固定状態を電気的に指示するために用いられる。スイッチ８０５はその各々が、グランドに結合された第１の端子、及び状態信号ＰＩＮ［５：０］の内の対応する１つを供給する第２の端子を有する。この第２の端子は、６個あるレジスタ８０１の内の１つを介して電源電圧ＶＤＤに結合されている。
レバー８０２の内のいずれか１つが開成されており、さらにレバー８０２により固定されているカード８０７が解放されると、状態信号ＰＩＮ［５：０］の内の対応する１つがオンとなる、すなわちハイに駆動される。１例として、スロット３６ａの場合、対応するレバー８０２が閉成されると、状態信号ＰＩＮ［０］はオフとなる、すなわちローに駆動される。スロット３６ａ用のレバー８０２が開成されると、状態信号ＰＩＮ［０］はオンとなる、すなわちハイに駆動される。
レジスタ８２はまた、ラッチされた状態信号ＳＴＡＴＵＳ［１２７：３２］をシリアル・ストリームとして受信するが、これは、信号ＳＴＡＴＵＳ［１２７：３２］のいずれか１つの論理電圧レベルが変化しても、割り込みを掛けることはない。状態信号ＳＴＡＴＵＳ［１２７：３２］は、スロット３６を持つ拡張ボックス３０のボード上に位置する１６ビットのシフトレジスタ５２から成っている。シフトレジスタ５２は、自身のパラレル入力端子から状態信号を受信し、ＳＩＯ回路５０の指示に基づいて、状態信号ＳＴＡＴＵＳ［１２７：３２］をラッチする。シフトレジスタ５２は、状態信号ＳＴＡＴＵＳ［１２７：３２］をシリアル化し、信号ＳＴＡＴＵＳ［１２７：３２］をシリアル・データ信号ＣＳＩＤ Ｉを介して、レジスタ８２のシリアル入力端子に供給する。
【０１２７】
ＳＩＯ回路５０から指示されると、レジスタ８２は、状態信号ＰＩＮ［２３：０］をラッチし、状態信号ＳＴＡＴＡＳ［３１：０］を生成し、該状態信号［３１：０］、及び（ＣＰＵ１４から要請があれば）１バイト以上の状態信号ＳＴＡＴＵＳ［１２７：３２］を、シリアル・データ信号ＮＥＷ ＣＳＩＤを介してＳＩＯ回路５０に、最下位信号第１形式で供給する。状態信号ＳＴＵＴＡＳ［１２７：０］は、以下の表１６及び１７に示されている。なお、表１７は、表１６の続きである。
【表１６】
0003895006.tif 000017
【表１７】
0003895006.tif 000018
【０１２８】
図２及び図３０に示されるように、ＳＩＯ回路５０がレジスタ・ロード信号ＣＳＩＬ ０ をアサートしたとき、即ちローに駆動したとき、シフトレジスタ５２は状態信号ＳＴＡＴＡＳ［１２７：３２］をラッチし、シフトレジスタ８２は状態信号ＳＴＡＴＵＳ［３１：０］をラッチする。ＳＩＯ回路５０が信号ＣＳＩＬ ０ をハイに駆動すると、２つのレジスタ５２、８２は、ＳＩＯ回路５０によって供給されたクロック信号ＣＳＩＣ ０の正の（立ち上がり）エッジで、ＳＩＯ回路５０に対して、データをシリアル転送する。クロック信号ＣＳＩＣ ０は、ＰＣＩクロック信号ＣＬＫに同期しており、かつ該ＣＬＫの１／４の周波数である。
【０１２９】
図２９に示されるように、状態信号ＳＴＡＴＵＳ［３１：０］をモニタ即ち走査するために、ＳＩＯ回路５０は、３２ビット割り込みレジスタ８００を用い、該レジスタのビット位置は、信号ＳＴＡＴＵＳ［３１：０］に対応する。ＳＩＯ回路５０は、割り込みレジスタ８００のビットを、既にデバウンス（ｄｅｂｏｕｎｃｅ）された対応する状態信号ＳＴＡＴＵＳ［３１：０］となるように、更新する。これについては、以降で詳細に説明する。２つの状態信号ＳＴＡＴＵＳ［７：６］が、追加のホットプラグ・スロット３６のために予約され、また割り込みレジスタ８００の７番目及び８番目のビットが、該追加のスロット３６のために予約される。割り込みレジスタ８００は、ＰＣＩバス３２に接続されたＳＩＯ回路５０のレジスタ・ロジック・ブロック８０８の一部である。
ＳＩＯ回路５０のシリアル走査入力ロジック８０４は、状態信号ＳＴＡＴＵＳ［３１：０］を順次走査、即ち、ロジック電圧レベルの遷移により示される変化をモニタする。レバー８０２に関連する状態信号ＳＴＡＴＵＳ［５：０］の１つ又は複数の状態が変化する場合は、シリアル走査入力ロジック８０７は、ゆっくりした走査モードとなり、状態信号ＳＴＡＴＵＳ［５：０］が所定のデバウンス期間内で３２回、走査される。状態信号ＳＴＡＴＵＳ［５：０］の１つ又は複数が変化した場合、変化した状態信号ＳＴＡＴＵＳ［５：０］が少なくともデバウンス期間、同一の論理レベルを保持したときに、割り込みレベル８００を更新（そして、シリアル割り込み信号ＳＩ ＩＮＴＥＲ＃をアサート）する。シリアル走査入力ロジック８０４は、プログラマブル・タイマ８０６に接続されており、該タイマは、シリアル走査入力ロジック８０４によって開始されたデバウンス遅延期間を経時する。デバウンス期間を安定に保つために状態を要求することにより、状態信号ＳＴＡＴＵＳ［５：０］の１つによって示される欠陥値（即ち、「グリッチ」）に基づくホットプラグ・スロット３６の１つの不慮のパワーダウンを、低減することができる。すべての状態信号ＳＴＡＴＵＳ［５：０］が少なくともデバウンス期間中同一の論理レベルにある場合には、シリアル走査入力ロジック８０４は、より高速の走査モードで、３２の状態信号ＳＴＡＴＵＳ［３１：０］のすべてを走査する。
【０１３０】
シリアル走査入力ロジック８０４が状態信号ＳＴＡＴＵＳ［３１：６］の１つに変化が生じたことを検出した場合は、該ロジック８０４は、タイマ８０６に対して他のデバウンス期間を計測するように指令し、続いて、シリアル割り込み信号ＳＩ ＩＮＴＥＲ＃をアサートし、既に変化した状態信号ＳＴＡＴＵＳ［３１：６］でシリアル割り込みレジスタ８００を更新し、そして、デバウンス期間が変更されるまで、変化した状態信号ＳＴＡＴＵＳ［３１：６］を無視する。デバウンス期間が経過すると、シリアル走査入力ロジック８０４は、３２の状態信号ＳＴＡＴＵＳ［３１：０］における変化を認識するために、動作を進行する。
シリアル割り込み信号ＳＩ ＩＮＴＥＲ＃がアサートされると、ＣＰＵ１４は割り込みレジスタ８００を読みだし、どの状態信号ＳＴＡＴＵＳ［３１：０］が割り込みを生じたか（１つ以上の場合もある）を判定し、変化した割り込みレジスタ８００の１つまたは複数のビットに“１”を書き込むことによって、シリアル割り込み信号ＳＩ ＩＮＴＥＲ＃をデアサートする。
ＣＰＵ１４は、状態信号ＳＴＡＴＵＳ［３１：０］によって生じた割り込み要求をマスクすることもできる。これは、３２ビットの割り込みマスク・レジスタ８１０中の対応するビットに“１”を書き込むことによって実行される。ＣＰＵ１４はまた、シリアル入力バイト・レジスタ８１２に、選択されたバイトのバイト数を書き込むことによって、状態信号ＳＴＡＴＵＳ［４７：０］のバイトを選択的に読み出すこともできる。ＳＩＯ回路５０は、該所定のバイトをシリアル・データ・レジスタ８１５に転送する。
例えば、状態信号ＳＴＡＴＵＳ［２３：１６］の３番目のバイト（バイト番号２）を読み出すためには、ＣＰＵ１４は、シリアル入力バイト・レジスタ８１２へ“２”を回書き込む。シリアル走査入力ロジック８０４は次いで、状態信号ＳＴＡＴＵＳ［２３：１６］のバイト“２”を、シリアル・データ・レジスタ８１５へ直列的にシフトする。シフト入力バイト・レジスタ８１２のビジー・ビットＢＳは、ＣＰＵ１４がシフト入力バイト・レジスタ８１５に該所望のバイト番号をそきてきに書き込んだ場合には、“１”となる。
【０１３１】
ＣＰＵ１４は、スロット・イネーブル・レジスタ８１７の対応するビットに“１”を書き込むことによって、スロット３６の１つをパワーアップすることができ、また、このビットに“０”を書き込むことによって、該スロットをデセーブル（不動作状態）することができる。さらに、ＣＰＵ１４は、スロット・リセット・レジスタ８１９の対応するビットに“１”を書き込むことによって、スロット３６の１つをリセットすることができる。スロット・イネーブル・レジスタ８１７の内容、及びスロット・リセット・レジスタ８１９の内容は、信号ＳＬＯＴ
ＥＮ［５：０］及びＳＬＯＴ ＲＳＴ［５：０］によって示される。
スロット・イネーブル・レジスタ８１７及びスロット・リセット・レジスタ８１９によって表された要求を開始するため、ＣＰＵ１４は、コントロール（制御）・レジスタのＳＯビットに“１”を書き込む。ＳＯビットがアサートされた（すなわち、ＧＯ ＵＰＤＡＴＥ信号をハイに駆動する）後、ＳＩＯ回路５０は、要求されたパワーダウン及びパワーアップのシーケンスを開始し制御する。
シーケンス走査入力ロジック８０４は、ＯＮ／ＯＦＦコントロール・ロジック８２０に接続されており、該ロジック８２０は、パワーアップ及びパワーダウン・シーケンスを制御する。ＯＮ／ＯＦＦコントロール・ロジック８２０は、信号ＢＵＳＥＮ＃［５：０］、ＣＬＫＥＮ＃［５：０］、ＲＳＴ＃［５：０］、及びＰＷＲＥＮ［５：０］を、シリアル出力ロジック８２４へ供給する。
パワーアップ及びパワーダウン・シーケンスはそれぞれ、その他方が実行されている期間中に４つのシフト・フェーズを含んでいる。各シフト・フェーズにおいては、ＯＮ／ＯＦＦコントロール・ロジック８２０が、シリアル出力ロジック８２４に指令して、信号ＢＵＳＥＮ＃［５：０］、ＣＬＫＥＮ＃［５：０］、ＲＳＴ＃［５：０］、及びＰＷＲＥＮ［５：０］を結合し、かつこれらの信号をラッチし、さらに、出力シフトレジスタ８０のシリアル入力に（シリアル・データ信号ＣＳＯＤ Ｏを介して）供給する。各シフト・フェーズの終点において、ＯＮ／ＯＦＦコントロール・ロジック８２０がシフトレジスタ８０に指令して、コントロール信号ＰＯＵＴ［３５：１２］を更新させる。
【０１３２】
ＯＮ／ＯＦＦコントロール・ロジック８２０はまた、レジスタ・ロジック８０８および発光ダイオード（ＬＥＤ）コントロール・ロジック８２２に、インターフェースされる。ＬＥＤコントロール・ロジック８２２は、６つのＬＥＤ５４のオン／オフ状態を制御する。これらＬＥＤ５４は、対応するレバー８０２がラッチされているか否かを可視的に表示する。ＬＥＤ５４は、レジスタ・ロジック８０８のＬＥＤコントロール・レジスタ（不図示）を介してターンオンされたときに、発光するようにプログラムされる。
図３１に示されているように、シリアル走査入力ロジック８０４は、走査状態マシン８４０を含み、該マシンは、変化に関する状態信号ＳＴＡＴＵＳ［３１：０］の走査を制御し、シリアル入力バイト・レジスタ８１５に、状態信号ＳＴＡＴＵＳ［４７：０］の選択されたバイト・のシフトを制御する。
走査状態マシン８４０は、クロック信号ＤＩＶ２ＣＬＫの立ち下がりエッジでクロッキングされ、該クロック信号は、ＰＣＩクロック信号ＣＬＫに同期しており、該ＣＬＫの１／２の周波数を有している。ロード及びクロック信号ＣＳＩＬ Ｏ及びＣＳＩＣ Ｏはそれぞれ、走査状態マシン８４０によって供給される。ビット／バイト・カウンタ８４１は、３２ビットの信号ＢＩＴ ＡＣＴＩＶＥ［３１：０］により、状態信号ＳＴＡＴＵＳ［３１：０］のどのビットが、現在、シリアル・データ信号ＮＥＷ ＣＳＩＤによって表されているのかを示す。信号ＢＩＴ ＡＣＴＩＶＥ［３１：０］のアサートされたビットは、データ信号ＮＥＷ ＣＳＩＤで表される状態信号ＳＴＡＴＵＳ［３１：０］と同一のビット位置を有している。
カウンタ８４１はまた、３ビット信号ＢＩＴ［２：０］を供給するが、該信号は、走査状態マシン８４０によって現時点で走査されている状態信号ＳＴＡＴＵＳ［３１：０］のバイトのビットを表している。カウンタ８４１は、信号ＳＨＩＦＴ ＥＮＡＢＬＥの立ち下がりエッジでクロッキングされる。カウンタ８４１の出力は、該カウンタのクリア入力に接続されているＡＮＤゲート８４２の出力がローに反転すると、リセット即ちクリアされる。
【０１３３】
走査状態マシン８４０は、信号ＳＣＡＮ ＩＮ ＩＤＬＥを供給する。該信号のハイ状態は、走査状態マシン８４０がＩＤＬＥ状態でありかつ状態信号ＳＴＡＴＵＳ［１２７：０］のいずれも現在走査していないことを示している。そうでなければ、信号ＳＣＡＮ ＩＮ ＩＤＬＥがデアサートされる。
信号ＳＣＡＮ ＩＮ ＩＤＬＥは、ＡＮＤゲート８４２の一方の入力に供給される。該ゲートの他方の入力には、ＯＲゲート８４３の出力が供給される。ＯＲゲート８４３の入力には、信号ＨＯＬＤ ＯＦＦの反転された信号、及び信号ＧＥＴＴＩＮＧ ＢＹＴＥが供給される。
信号ＨＯＬＤ ＯＦＦがアサートされたとき、即ちハイの状態は、状態信号ＳＴＡＴＵＳ［５：０］の１つに変化が生じ、かつシリアル走査ロジック８０４がゆっくりとした走査モード（スロー・スキャン・モード）になったことを示している。該スロー・スキャン・モードにおいては、シリアル走査シリアル走査入力ロジック８０４は、状態信号ＳＴＡＴＵＳ［３１：０］を再度走査する前に、所定のスロー・スキャン・インターバルの間だけ待機する。シリアル走査入力ロジック８０４は、信号ＳＴＡＴＵＳ［５：０］がスロー・スキャン・モード中に走査された回数をカウントし、得られたカウント値を用いて、デバウンス遅延期間（インターバル）の間に状態信号ＳＴＡＴＵＳ［５：０］の１つが変化しなかった時を検出する。詳細については、以降で説明する。
したがって、走査状態マシン８４０がＩＤＬＥ状態にあって、信号ＨＯＬＤ ＯＦＦがデアサートされている場合か、または走査状態マシン８４０が状態信号ＳＴＡＴＵＳ［４７：０］の所定のバイト（ＣＰＵ１４により選択された）を読み出している場合に、カウンタ８４１のすべての出力がゼロにクリアされる。
【０１３４】
信号ＳＨＩＦＴ ＥＮＡＢＬＥは、ＡＮＤゲート８４４の出力から供給される。ＡＮＤゲート８４４の一方の入力はクロック信号ＣＳＩＣ Ｏを受け取り、多能の入力は信号ＤＩＶ２ＣＬＫ＃ＷＯ受け取る。信号ＤＩＶ２ＣＬＫ＃は、信号ＣＬＫＤＩＶ４の立ち下がりエッジ（負のエッジ）でアサート、即ちローに駆動される。ＡＮＤＯゲート８４４の第３の入力には、信号ＳＣＡＮ ＩＮ ＰＲＯＧＲＥＳＳが供給され、該信号のアサート状態ではハイに駆動されて、走査状態信号ＳＴＡＴＵＳ［１２７：０］を走査状態マシン８４０が現在走査していることを表す。それ以外の場合は、該信号ＳＣＡＮ ＩＮ ＰＲＯＧＲＥＳＳはデアサートされている。
したがって、走査状態マシン８４０が状態信号ＳＴＡＴＵＳ［１２７：０］においてシフト動作を行っていない場合は、カウンタ８４１はデセーブルされる。さらに、カウンタ８４１がイエネーブルされると、クロック信号ＤＩＶ２ＣＬＫの立ち下がりエッジで、該カウンタはクロッキングされる。
割り込みレジスタ８００は、入力信号Ｄ ＩＮＴＲ ＲＥＧ［３１：０］をそれぞれ、対応する３２に入力で受け取る。割り込みレジスタ８００のロード・イネーブル入力はそれぞれ、対応するロード・イネーブル信号ＵＰＤＡＴＥ ＩＲＱ［３１：０］を受け取る。該レジスタ８００は、ＰＣＩクロック信号ＣＬＫの立ち上がりエッジ（正のエッジ）でクロッキングされる。
各走査の後に状態信号ＳＴＡＴＵＳ［５：０］のトラックを保持するために、多重ビットのＤ型フリップフロップ８３６が状態信号ＳＣＡＮ ＳＷを供給する。フリップフロップ８３６のクリア入力には、リセット信号ＲＳＴが供給され、該フリップフロップはクロック信号ＣＬＫの立ち上がりエッジでクロッキングされる。フリップフロップ８３６の入力は、多重ビットのＯＲゲート８５０の出力に接続されており、該ＯＲゲートの１つの入力は、多重ビットのＡＮＤゲート８４６に接続され、また他の１つの入力は多重ビットのＡＮＤゲート８４７の出力接続されている。ＡＮＤゲート８４６の一方の入力は、６ビットのイネーブル信号ＢＩＴ ＥＮＡＢＬＥ［５：０］（これについては、後で説明する）を受け取り、他方の入力は、シリアル・データ信号ＮＥＷ ＣＳＩＤを受け取る。ＡＮＤゲート８４７の入力は、反転されたビット・イネーブル信号ＢＩＴ ＥＮＡＢＬＥ［５：０］、及び信号ＳＣＡＮ ＳＷ［５：０］をそれぞれ受け取る。
【０１３５】
ビット・イネーブル信号ＢＩＴ ＥＮＡＢＬＥ［５：０］の１つだけが、走査状態マシン８４０が走査しているときに一度アサートされ、該アサートされたビットは、対応する状態信号ＳＴＡＴＵＳ［３１：０］の内のいずれが信号ＮＥＷ ＣＳＩＤによって表されているかを示している。このように、走査状態マシン８４０が走査している状態では、クロック信号ＣＬＫの立ち上がりエッジ毎に、信号ＳＣＡＮ ＳＷ［５：０］が更新される。
ビット・イネーブル信号ＢＩＴ ＥＮＡＢＬＥ［３１：０］は、多重ビットマルチプレクサ８３２の出力から供給され、該マルチプレクサはその入力にビットＢＩＴ ＡＣＴＩＶＥ［３１：０］を受け取る。マルチプレクサ８３２の“０”入力には、論理０を表す３２ビット信号が供給される。
状態信号ＳＴＡＴＵＳ［５：０］の変化を検出するために、多重ビットの排他的論理和（ＸＯＲ）ゲート８４８がスイッチ切り替え信号ＳＷ ＣＨＧ［５：０］を供給する。該信号ＳＷ ＣＨＧ［５：０］がアサート（ハイ）されると、これは、対応する状態信号ＳＴＡＴＵＳ［５：０］の論理電圧が走査中に変化したことを示している。ＸＯＲゲート８４８の一方の入力はフリップフロップ８３６の入力に接続され、他方の入力は信号ＳＣＡＮ ＳＷを受け取る。
【０１３６】
図３４に示されているように、少なくともデバウンス遅延期間の間、選択された状態信号ＳＴＡＴＵＳ［５：０］の論理電圧レベルが変化しなかったことを表すために、走査入力ロジック８０４は６つの信号ＬＳＷＩＴＣＨ［５：０］を出力する。Ｄ型フリップフロップ９００の非反転入力により、非反転出力から信号ＬＳＷＩＴＣＨ［５］が出力される。該信号ＬＳＷＩＴＣＨ［５］がアサート、即ちハイに駆動された場合は、上記した状態を表しており、その他の場合はデアサートされている。フリップフロップ９００は、クロック信号ＣＬＫの立ち上がりＥＤＧＥでクロッキングされ、クリア入力はＲＳＴ信号を受け取る。
フリップフロップ９００の入力はマルチプレクサ９０２の出力に接続されており、該マルチプレクサは、信号Ｄ ＬＳＷＩＴＣＨ［５］を出力する。マルチプレクサ９０２の選択制御入力は、ＡＮＤゲート９０３の出力に接続されており、該ゲートは、信号ＭＡＸ５及びＳＣＡＮ ＥＮＤを受け取る。信号ＳＣＡＮ ＥＮＤは、アサート状態では走査状態マシン８４０が現在の走査を完了したことを示している。６つの信号ＭＡＸ５、ＭＡＸ４、ＭＡＸ３、ＭＡＸ２、ＭＡＸ１、ＭＡＸ０は、対応する状態信号ＳＴＡＴＵＳ［５］、ＳＴＡＴＵＳ［４］、ＳＴＡＴＵＳ［３］、ＳＴＡＴＵＳ［２］、ＳＴＡＴＵＳ［１］、ＳＴＡＴＵＳ［０］が、少なくともデバウンス期間中に同一の論理レベルを保持して変化がなかったかどうかを表している。マルチプレクサ９０２の“０”入力が信号ＬＳＷＩＴＣＨ［５］を受け取り、“１”入力が信号ＳＣＡＮ ＳＷを受け取る。信号ＳＣＡＮ  ＥＮＤはＡＮＤゲート８５１（図３２）の出力から供給される。ＡＮＤゲート８５１は信号ＳＴＯＰ ＳＣＡＮ及びＳＣＡＮ ＤＯＮＥを受け取る。信号ＳＴＯＰ ＳＣＡＮは、走査状態マシン８４０による走査を終了させるときに、アサート（ハイ）される。これについては、後でさらに説明する。信号ＳＣＡＮ ＥＮＤは、信号ＳＴＯＰ ＳＣＡＮのパルス化（信号ＣＬＫの１サイクル）されたものである。信号ＬＳＷＩＴＣＨ［４］〜ＬＳＷＩＴＣＨ［０］及び信号Ｄ ＬＳＷＩＴＣＨ［４］〜Ｄ ＬＳＷＩＴＣＨ［０］は、信号ＳＣＡＮ ＳＷ［４］〜ＳＣＡＮ ＳＷ［０］及び信号ＭＡＸ４〜ＭＡＸ０と同様にして生成される。
【０１３７】
状態信号ＳＴＡＴＵＳ［３１：６］が走査されたときにこれらの信号の論理電圧レベルを更新するために、多重ビットのＤ型フリップフロップ９０５（図３４）が２６の信号ＳＣＡＮ ＮＳＷ［３１：６］を出力する。この場合には、信号ＳＣＡＮ ＮＳＷ［３１：６］の１つがアサート（ハイ）され、更新しない場合にはデアサートされる。フリップフロップ９０５は、クロック信号ＣＬＫの立ち上がりエッジでクロッキングされ、クリア入力には信号ＲＳＴが供給される。
フリップフロップ９０５の入力は、多重ビットのマルチプレクサ９０６に接続されている。該マルチプレクサの選択制御入力は、反転されたＣＨＥＣＫ ＳＷＩＴＣＨ ＯＮＬＹ信号を受け取る。該信号ＣＨＥＣＫ ＳＷＩＴＣＨ ＯＮＬＹは、走査状態マシン８４０が状態信号ＳＴＡＴＵＳ［５：０］またはＳＴＡＴＵＳ［１２７：３２］を走査しているときだけ（即ち、信号ＳＴＡＴＵＳ［３１：６］の変化を無視する）、アサートされ、それ以外の場合はデアサートされる。マルチプレクサ９０６の“０”入力は信号ＳＣＡＮ ＮＳＷ［３１：６］を受け取り、“１〃入力は多重ビットのＯＲゲート９０７に出力に接続されている。ＯＲゲート９０７の一方の入力は多重ビットのＡＮＤゲート９０８の出力に接続され、他方の入力は多重ビットのＡＮＤゲート８７２の出力に接続されている。ＡＮＤゲート９０８の一方の入力は信号ＢＩＴ ＥＮＡＢＬＥ［３１：６］を受け取り、他方の入力は多重ビットのマルチプレクサ９０９の出力に接続されている。信号ＮＥＷ ＣＳＩＤがアサート（ハイ）されると、マルチプレクサ９０９は、“ｈ３ＦＦＦＦＦＦ”に等しい２６ビットの信号を出力し、他の場合には“０”である３２ビットの信号を出力する。ＡＮＤゲート８７２の一方の入力はＡＮＤゲート９０８の出力を反転した信号を受け取り、他方の入力は信号ＳＣＡＮ ＮＳＷ［３１：６］を受け取る。
状態信号ＳＴＡＴＵＳ［３１：６］の論理電圧レベルを走査毎に記憶するために、多重ビットのＤ型フリップフロップ８７１が２６の信号ＬＮＯＮ ＳＷ［３１：６］を供給する。該信号ＬＮＯＮ ＳＷ［３１：６］のいずれかがアサート（ハイ）された場合は、走査毎に記憶することを表し、デアサートされると、記憶されない。フリップフロップ８７１はクロック信号ＣＬＫの立ち上がりエッジでクロッキングされ、クリア入力は信号ＲＳＴを受け取る。
フリップフロップ８７１の入力は多重ビットのマルチプレクサ８７０の出力に接続されており、該マルチプレクサは信号Ｄ ＬＮＯＮ ＳＷ［３１：６］を出力する。マルチプレクサ８７０の選択制御入力は、信号ＳＣＡＮ ＥＮＤを受け取る。マルチプレクサ８７０の“０”入力は信号ＬＮＯＮ ＳＷ［３１：６］を受け取り、“１”入力は信号ＳＣＡＮ ＮＳＷ［３１：６］を受け取る。
【０１３８】
図３２に示されているように、信号ＭＡＸ０〜ＭＡＸ５を発生するために、シリアル入力ロジック８０４は６つの同一構成のカウンタ８３１ａ〜８３１ｆを備えている。各カウンタ８３１は、ＡＮＤゲート８９２がアサート（ハイ）されたときに、初期化される。カウンタ８３１２ａについて言えば、ＡＮＤゲート８９２が信号ＢＩＴ ＥＮＡＢＬＥ［０］、ＳＷ ＣＨＧ［０］、及び反転されたＱＵＩＣＫ ＦＩＬＴＥＲを受け取る。信号ＱＵＩＣＫ ＦＩＬＴＥＲは、アサート（ハイ）されると、デバウンス時間の完遂を阻止するために用いられる。信号ＱＵＩＣＫ ＦＩＬＴＥＲは通常デアサートされており、ローである。カウンタ８３１のクロック入力は、ＡＮＤゲート８９３の出力に接続されている。カウンタ８３１ａに関しては、ＡＮＤゲート８９３が信号ＢＩＴ ＥＮＡＢＬＥ［０］、及び反転されたＳＷ ＣＨＧ［０］を受け取る。したがって、カウンタ８３１ａに関しては、状態信号ＳＴＡＴＵＳ［０］の論理電圧レベルが一旦変化すると、シリアル走査ロジック８０４がが状態信号ＳＴＡＴＵＳ［０］を走査するたびに、該カウンタ８３１ａが増分される。カウンタ８３１ａが最大値に到達すると、信号ＭＡＸ０がアサートされ、これにより、デバウンス期間が経過したことを示す。状態信号ＳＴＡＴＵＳ［０］の論理電圧レベルがカウント中に変化した場合は、カウント８３１ａは再度リセットされて、最初からカウントをやり直す。他のカウンタ８３１ｂ〜ｆについても同様であり、これらは、状態信号ＳＴＡＴＵＳ［５：１］に関連する。
ＨＯＬＤ ＯＦＦ信号がアサートされると、それにより、タイマ８０６の１つに指令して所定の遅い走査期間（スロー・スキャン・インターバル）を測定する。該スロー・スキャン・インターバルでは、シリアル走査状態マシン８４０がスロー・スキャン・モードで走査を行う。タイマ８０６がこの遅延インターバルの経時を終了すると、タイマ８０６は、信号ＦＴＲ ＴＩＭＥＯＵＴをアサート（ハイ）し、終了しないばあいには該信号はデアサートされている。このスロー・スキャン・インターバルとカウンタ８３１の最大値との積は、デバウンス期間（８ｍｓ）に等しい。
【０１３９】
ＨＯＬＤ ＯＦＦ信号はＪＫフリップフロップ８８５によって生成される。該フリップフロップ８８５は、信号ＣＬＫの立ち上がりエッジでクロッキングされ、クリア入力にはＲＳＴ信号が供給される。該フリップフロップのＪ入力はＡＮＤゲート８８３の出力に接続され、Ｋ入力はＡＮＤゲート８８４の出力に接続されている。ＡＮＤゲート８８３の一方の入力はＪＫ−フリップフロップ８９６の出力に接続され、多能の入力はＳＣＡＮ ＥＮＤ信号を受け取る。ＡＮＤゲート８８４の一方の入力はＡＮＤゲート８８３の出力の反転信号を受け取り、第２の入力はＦＴＲ ＴＩＭＥＲＯＵＴ信号を受け取り、第３の入力はＳＣＡＮ ＩＮ ＩＤＬＥ信号を受け取る該ＳＣＡＮ ＩＮ ＩＤＬＥ信号は、走査状態マシン８４０がＩＤＬＥ状態にあるときに、アアサートされる。
フリップフロップ８９５は、クロック信号ＣＬＫの立ち上がりでクロッキングされ、クリア入力はＲＳＴ信号を受け取る。フリップフロップ８９５のＪ入力はＮＡＮＤゲート８９４の出力に接続され、該ＮＡＮＤゲートは信号ＭＡＸ〜ＭＡＸ５を受け取る。フリップフロップ８９５のＪ入力はＡＮＤゲート８２６の出力に接続され、該ＡＮＤゲートは、フリップフロップ８９５の反転Ｊ入力に接続され、かつ反転されたＳＣＡＮ ＩＮ ＰＲＯＧＲＥＳＳ信号を受け取る。ＳＣＡＮ ＩＮ ＰＲＯＧＲＥＳＳ信号は、走査状態マシン８４０が状態信号ＳＴＡＴＵＳ［３１：０］を走査中のときにアサートされる。
ＣＨＥＣＫ ＳＷＩＴＣＨ ＯＮＬＹ信号を発生するために、シリアル走査入力ロジック８０４にＪＫフリップフロップ８６４が含まれている。該フリップフロップは該ＣＨＥＣＫ ＳＷＩＴＣＨ ＯＮＬＹ信号を非反転出力から供給し、クロック信号ＣＬＫの立ち上がりエッジでクロッキングされる。フリップフロップ８６４のクリア入力は、ＲＳＴ信号を受け取り、Ｊ入力はＤＥＢＯＵＮＣＥ信号を受け取る。該ＤＥＢＯＵＮＣＥ信号は、アサート（ハイ）されたときに、１つ又は複数の状態信号ＳＴＡＴＵＳ［３１：６］の論理電圧レベルが変化したことを表す。フリップフロップ８６４のＫ入力は、ＡＮＤデ８６５の出力に接続されている。ＡＮＤゲート８６５の一方の入力は反転されたＤＥＢＯＵＮＣＥ信号を受け取り、他の入力はＳＣＡＮ ＩＮ ＩＤＬＥ信号を受け取る。
【０１４０】
図３３に示されているように、デバウンス信号ＤＥＢＯＵＮＣＥは、ＪＫフリップフロップ８６０の非反転出力から出力される。フリップフロップ８６０は、クロック信号ＣＬＫの立ち上がりエッジでクロッキングされ、クロッキング入力はリセット信号ＲＳＴを受け取る。フリップフロップ８６０のＪ入力は、信号ＣＨＡＮＧＥ ＯＮ ＩＮＰＵＴを受け取る。該ＣＨＡＮＧＥ ＯＮ ＩＮＰＵＴ信号は、状態信号ＳＴＡＴＵＳ［３１：６］のいつに変化が生じたことをシリアル入力ロジック８０４の走査の終わりで検出したときに、アサート（ハイ）される。フリップフロップ８６０のＫ入力は、ＡＮＤゲート８６１の出力接続され、該ＡＮＤゲートは、その入力の１つとして、ＤＢ ＴＩＭＥＯＵＴ信号を受け取る。ＡＮＤゲート８６１の他の入力は、反転されたＣＨＡＮＧＥ ＯＮ ＩＮＰＵＴ信号を受け取る。ＤＢ ＴＩＭＥＯＵＴ信号は、デバウンス遅延時間（ＤＥＢＯＵＮＣＥ信号のアサートによって初期化される）が経過したときに、ＣＬＫ信号の１サイクル中に、タイマ１０６によってアサートされる。ＤＢ ＴＩＭＥＯＵＴ信号のアサートは、ＣＬＫ信号の次の立ち上がりエッジで、ＤＥＢＯＵＮＣＥ信号をデアサート（反転）させる。
ＣＨＡＮＧＥ ＯＮ ＩＮＰＵＴ信号は、ＪＫ−フリップフロップ８６６の非反転出力から供給される。該フリップフロップは、ＣＬＫ信号の立ち上がりエッジでクロッキングされる。フリップフロップ８６６のクリア入力はＲＳＴ信号を受け取る。フリップフロップ８６６のＪ入力はＡＮＤゲート８６９の出力に接続され、該ＡＮＤゲートの一方の入力は、ＳＣＡＮ ＥＮＤ信号を受け取り、他の入力はＯＲゲート８６７の出力に接続されている。ＯＲゲート８６７は、ＮＳＷＣＨＧ［３１：６］信号のすべてのＯＲ論理をとる。ＮＳＷ ＣＨＧ［３１：６］信号のビット位置は、状態信号ＳＴＡＴＵＳ［３１：６］のビット位置に対応しており、かつアサートされた場合には、該対応する状態信号ＳＴＡＴＵＳ［３１：６］が最後の走査の後に変化したかどうかを表している。ＡＮＤゲート８６９はさらに、ＳＣＡＮ ＥＮＤ信号を受け取る。フリップフロップ８６６のＫ入力は、ＡＮＤゲート８６８の出力に接続され、該ＡＮＤゲートは、反転されたＳＣＡＮ ＩＮ ＰＲＯＧＲＥＳＳ信号及びＡＮＤゲート８６９の出力の反転された信号を受け取る。信号ＮＳＷ ＣＨＧ［３１：６］は、多重ビットであるＸＯＲゲート８６２の出力によって供給され、該ＸＯＲゲートは、信号Ｄ ＬＮＯＮ ＳＷ［３１：６］及びＬＮＯＮ ＳＷ［３１：６］を受け取る。
【０１４１】
多重ビットのＤ型フリップフロップ９１２の非反転出力は、シリアル・データ・レジスタ８１５にたいして、ビットＳＩ ＤＡＴＡ［７：０］を供給する。フリップフロップ９１２のクリア入力は信号ＲＳＴを受け取り、またクロック信号ＣＬＫによってクロッキングされる。フリップフロップ９１２の信号入力は、多重ビットのマルチプレクサ９１６に接続されている。マルチプレクサ９１６の選択制御入力は、ＡＮＤゲート９１４の出力に接続され、“０”入力はビットＳＩ ＤＡＴＡ［７：０］を受け取る。ＡＮＤゲート９１４は、信号ＧＥＴＴＩＮＧ ＢＹＴＥ及びＳＨＩＦＴ ＥＮＡＢＬＥを受け取る。したがって、シリアル走査ロジック８０４が状態信号ＳＴＡＴＵＳ［４７：０］の要求されたバイトにシフトしていない場合は、ビットＳＩ ＤＡＴＡ［７：０］の値が保存される。
マルチプレクサ９１６の入力の１つは、多重ビットのマルチプレクサ９１０の出力に接続されている。該マルチプレクサ９１０の入力の１つは多重ビットのＯＲゲート９１１の出力に接続され、“０”入力は多重ビットのＡＮＤゲート９１５の出力に接続されている。マルチプレクサ９１０の選択制御入力は、信号ＮＥＷ ＣＳＩＤを受け取る。
ＡＮＤゲート９１５の１つの入力は、ビットＳＩ ＤＡＴＡ［７：０］を受け取り、該ゲート９１５の反転入力は、３×８デコーダ９１３の出力に接続されている。該デコーダ９１３は、信号ＢＩＴ［２：０］を受け取る。ＯＲゲート９１１の一方の入力はビットＳＩ ＤＡＴＡ［７：０］を受け取り、他歩の入力はデコーダ９１３の出力を受け取る。
【０１４２】
シリアル入力ロジック８０４は、５つの信号ＲＳＴ ＳＷＩＴＣＨ［５：０］（状態信号ＳＴＡＴＵＳ［５：０］のビット位置に対応している）を、ＯＮ／ＯＦＦコントロール・ロジック８２０に供給し、該信号がアサートされたときに、対応するスロット３６ａ〜ｆがパワーダウンすべきであることを示す。ＯＮ／ＯＦＦコントロール・ロジック８２０は、スロット３６が５つの信号ＣＬＲ ＳＷＩＴＣＨ［５：０］の１つのアサートによってパワーダウンされたときを、指示する。なお、ＣＬＲ ＳＷＩＴＣＨ［５：０］信号のビット位置は、ＲＳＴ ＳＷＩＴＣＨ［５：０］信号に対応している。スロット３６がすでにパワーダウンしたことを示す指示を受け取った後、シリアル・ロジック８０４は、対応するＲＳＴ ＳＷＩＴＣＨ［５：０］信号をデアサートする。
ＲＳＴ ＳＷＩＴＣＨ［５：０］信号は、多重ビットのＤ型フリップフロップ８９１（図３２）の非反転出力によって発生される。フリップフロップ８９１のクリア入力はリセット信号ＲＳＴを受け取り、またクロック信号ＣＬＫの立ち上がりエッジでクロッキングされる。フリップフロップ８９１の入力は、多重ビットのＯＲゲート８５７の出力に接続され、該ＯＲゲートの入力は、多重ビットのＡＮＤゲート８５９、８５５の出力に接続されている。ＡＮＤゲート８５９の一方の入力はマルチプレクサ８５３の出力に接続され、他方の入力はラッチされたスロット・イネーブル信号ＬＳＬＯＴ  ＥＮ［５：０］を受け取る。該信号ＬＳＬＯＴ ＥＮ［５：０］は、アサートされると、対応するスロット３６ａ〜ｆがパワーアップされたことを示す。ＡＮＤゲート８５５の一つの入力は、信号ＣＬＲ ＳＷＩＴＣＨ ［５：０］を受け取り、第２の入力は信号ＲＳＴ ＳＷＩＴＣＨ［５：０］を受け取り、第３の入力はマルチプレクサ８５３の反転された出力を受け取る。
【０１４３】
マルチプレクサ８５３の“０”入力は、０を表す６ビット信号を受け取る。該マルチプレクサの“１”入力は、多重ビットのＡＮＤゲート８４９の出力に接続されている。ＡＮＤゲート８４９の一方の入力は信号Ｄ ＬＳＷＩＴＣＨ［５：０］を受け取り、他方の入力は反転された信号Ｌ ＳＷＩＴＣＨ［５：０］を受け取る。マルチプレクサ８５３の選択制御入力は、ＳＣＡＮ ＥＮＤ信号を受け取る。
ＳＩ ＩＮＴＥＲ＃信号を発生するために、シリアル走査ロジック８０４には、Ｄ型フリップフロップ８８２が備えられている。該フリップフロップはその反転出力にシリアル割り込み信号ＳＩ ＩＮＴＥＲ＃を出力する。フリップフロップ８８２は、ＣＬＫ信号の立ち上がりエッジでクロッキングされ、マタクリア入力はＲＳＴ信号を受け取る。フリップフロップ８８２の入力は、ＯＲゲート８８１の出力に接続され、該ＯＲゲートは３２のペンディング割り込み信号ＰＥＮＤＩＮＧ  ＩＲＱ［３１：０］をを受け取る。これらの信号ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］は、アサート（ハイ）されると、状態信号ＳＴＡＴＵＳ［３１：０］の対応するものがペンディングであることを示す。それ以外の場合は、ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］はデアサートされている。
【０１４４】
図３５に示されるように、多重のＤ型フリップフロップ９７９が、その反転出力に、ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］信号を出力する。フリップフロップ９７９は、信号ＣＬＫの立ち上がりエッジでクロッキングされ、そして、クリア入力に信号ＲＳＴが供給される。フリップフロップ９７９の入力は多重ビットのＡＮＤゲート９８１の出力に接続され、該ＡＮＤゲートはその入力に、反転された割り込みマスク信号ＩＮＴＲ ＭＡＳＫ［３１：０］を受け取る。信号ＩＮＴＲ ＭＡＳＫ［３１：０］は、割り込みマスク・レジスタ８１０の対応するビットを表している。ＡＮＤゲート９８１の他の入力は、多重ビットのＯＲゲート８３５の出力に接続されている。ＯＲゲート８３５の一方の入力は、多重ビットのＡＮＤゲート８６２の出力に接続され、他方の入力は多重ビットのＡＮＤゲート８３４の出力に接続されている。
ＡＮＤゲート８６２は、反転されたＰＥＮＤＩＮＧ ＩＲＱ［３１：０］信号、及びＳＥＴ  ＰＩＲＱ［３１：０］信号を受け取る。信号ＳＥＴ ＰＩＲＱ［３１：０］は、割り込み要求が状態信号ＳＴＡＴＵＳ［３１：０］の対応するものに生成されるべきであるときに、アサートされる。したがって、信号ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］は、信号ＩＮＴＲ ＭＡＳＫ［３１：０］によってマスクされない場合に、信号ＳＥＴ ＰＩＲＱ［３１：０］で更新される。
ＡＮＤゲート８３４は信号ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］、反転された信号ＳＥＴ ＰＩＲＱ［３１：０］、及び反転された信号ＷＲ  ＩＮＴＲ  ＲＥＧ［３１：０］を受け取る。ＷＲ ＩＮＴＲ ＲＥＧ［３１：０］信号は、ＣＰＵ１４によって割り込みレジスタ８００に書き込みデータが供給されたことを示す。ＣＰＵは該レジスタ８００の対応するビットに“１”を書き込むことによって、割り込みをクリアする。従って、このように“１”が書き込まれ、かつ状態信号ＳＴＡＴＵＳ［３１：０］の対応するものに新しい割り込み要求が示されない場合には、ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］信号の対応するものがクリアされる。
【０１４５】
信号ＳＥＴ  ＰＩＲＱ［３１：０］は、多重ビットのＡＮＤゲート８３９の出力から供給される。該ＡＮＤゲートの一方の入力は信号ＵＰＤＡＴＥ  ＩＲＱ［３１：０］を受け取り他方の入力は多重ビットのＸＯＲゲート８３７の出力を受け取る。ＸＯＲゲート８３７の一方の入力は信号Ｄ  ＩＮＴＲ  ＲＥＧ［３１：０］を受け取り、他方の入力は信号ＩＮＴＲ  ＲＥＧ［３１：０］を受け取る。したがって、割り込みレジスタ８００のびっとが一方の論理状態から他方の論理状態に変化するときに、割り込み要求が生成される。
割り込みレジスタ８００のビットを更新するために、信号ＵＰＤＡＴＥ ＩＲＱ［３１：０］が発生されて該レジスタ８００の対応するロード入力に供給される。信号ＵＰＤＡＴＥ ＩＲＱ［３１：０］がアサート（ハイ）されると、対応するビットに信号Ｄ ＩＮＴＲ ＲＥＧ［３１：０］の対応するものがロードされる。
信号ＵＰＤＡＴＥ ＩＲＱ［３１：０］は、多重ビットのＯＲゲート９７１の出力から発生される。該ＯＲゲート９７１の一つの入力は多重ビットのマルチプレクサ９７７の出力に接続され、他の入力は反転されたＰＥＮＤＩＮＧ ＩＲＱ［３１：０］信号を受け取る。マルチプレクサ９７７の選択制御入力は、信号ＳＣＡＮ ＥＮＤを受け取り、“１”入力は“ｈＦＦＦＦＦＦＦＦ”を表す３２ビットの信号を受け取り、“０”入力は、“０”を表す３２ビットの信号を受け取る。したがって、走査の終点では、信号ＵＰＤＡＴＥ ＩＲＱ［３１：０］により、割り込みレジスタ８００のビットがアサートされたＰＥＮＤＩＮＧ ＩＲＱ［３１：０］信号に対応するように、該ビットを更新することができる。
ＯＲゲート９７１の別の入力は、多重ビットのＡＮＤゲート９７５の出力接続されている。該ＡＮＤゲートの１つの入力は反転されたＩＮＴＲ  ＭＡＳＫＵ［３１：０］信号を受け取り、他の入力は信号ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］を受け取り、さらに別の入力は信号ＷＲ  ＩＮＴＲ  ＲＥＧ［３１：０］を受け取る。したがって、ＣＰＵ１４は、信号ＰＥＮＤＩＮＧ ＩＲＱ［３１：０］のビットを選択的にクリアすることができる。
信号Ｄ ＩＮＴＲ ＲＥＧ［５：０］は、多重ビットのマルチプレクサ８３０の出力から発生される。ＳＣＡＮ ＥＮＤ信号がアサートされると、信号Ｄ ＩＮＴＲ ＲＥＧ［５：０］は、信号Ｄ ＬＳＷＩＴＣＨ［５：０］と等しくなる。ＳＣＡＮ ＥＮＤ信号がデアサートされると、信号Ｄ ＩＮＴＲ ＲＥＧ［５：０］は信号ＬＳＷＩＴＣＨと等しくなる。
信号Ｄ ＩＮＴＲ ＲＥＧ［３１：６］は、多重ビットのマルチプレクサ８４５によって出力される。ＳＣＡＮ ＥＮＤ信号がアサートされると、信号Ｄ ＩＮＴＲ ＲＥＧ［３１：６］は信号Ｄ ＬＮＯＮ ＳＷ［３１：６］と等しくなり、デアサートされると、信号Ｄ ＩＮＴＲ ＲＥＧ［３１：６］は信号ＬＮＯＮ ＳＷ［３１：６］と等しくなる。信号ＳＣＡＮ ＥＮＤがアサートされたときにのみ、割り込みレジスタ８００は新しい値をとることができる。
【０１４６】
図３６及び図３７に示されているように、走査状態マシン８４０は、リセット信号がアサートされた後に、ＩＤＬＥ状態に入る。ＩＤＬＥ状態でない場合は、走査状態マシン８４０は、シフトレジスタ８２をクロッキングするために、シリアルクロック信号ＣＳＩＣ Ｏの状態をトグルする。さらに、第１ロード状態ＬＤ１でない場合は、走査状態マシン８４０はロード信号ＣＳＩＬ Ｏ をアサート（ハイ）し、レジスタ８２、５２が状態信号ＳＴＡＴＵＳ［１２７：０］をＳＩＯ回路５０にシリアル供給できるようにする。ＩＤＬＥ状態では、走査状態マシン８４０は信号ＳＣＡＮ ＤＯＮＥをゼロに設定する。
走査状態マシン８４０は、信号ＧＥＴＴＩＮＧ ＢＹＴＥがアサートされたとき、またはＨＯＬＤ ＯＦＦ信号がデアサートされたときに、ＩＤＬＥ状態からＬＤ１状態に移行する。それ以外の場合は、マシン８４０はＩＤＬＥ状態に止まる。ＬＤ１状態では、走査状態マシン８４０は、ロード信号ＣＳＩＬ Ｏ をアサート（ロー）し、該ロード信号により、レジスタ８２、５２が状態信号ＳＴＡＴＵＳ［１２７：０］を受け取ってラッチできるようにする。
走査状態マシン８４０は、ＬＤ１状態から第２ロード状態ＬＤ２へ移行する。このＬＤ２状態では、ロード信号ＣＳＩＬ Ｏ はアサートされたままであり、それにより、レジスタ８２、５２が状態信号ＳＴＡＴＵＳ［１２７：０］をシリアルにシフトできる。
走査状態マシン８４０は続いて、走査状態ＳＣＡＮに移行する。このＳＣＡＮ状態では、シリアル走査入力ロジック８０４が、クロック信号ＤＩＶ２ＣＬＫの立ち下がりエッジで、状態信号ＳＴＡＴＵＳ［１２７：０］の１つを走査する。信号ＳＴＯＰ ＳＣＡＮがアサートされると、走査状態マシン８４０は、ＩＤＬＥ状態に戻る。ＳＴＯＰ ＳＣＡＮ信号は、以下の２つのいずれかの場合にアサートされる。［ａ］状態信号ＳＴＡＴＵＳ［１２７：０］の所望のバイトがシリアル・データ・レジスタ８１５へシフト済みであり、即ち、レバー状態信号ＳＴＡＴＵＳ［５：０］が走査済みであり、かつシリアル割り込み信号ＳＩ ＩＮＴＲ＃ＧＡアサートされている場合。［ｂ］状態信号ＳＴＡＴＵＳ［３１：０］のすべてが走査済みである場合。ＳＣＡＮ状態においては、ＳＣＡＮ ＤＯＮＥ信号がＳＴＯＰ ＳＣＡＮ信号と等しく設定される。
【０１４７】
図３８に示されるように、ＯＮ／ＯＦＦコントロール・ロジック８２０は、ＯＮ／ＯＦＦ状態マシン９９８を備えており、該マシンは、信号ＲＳＴ  ＳＷＩＴＣＨ［５：０］、ＳＬＯＴ  ＥＮ［５：０］、及びＳＬＯＴ  ＲＳＴ［５：０］を受け取る。これらの信号の状態に応じて、ＯＮ／ＯＦＦ状態マシン９９８は、所定のパワーオン及びパワーダウン・シーケンスを開始し制御する。ＯＮ／ＯＦＦ状態マシン９９８は、コントロール・ロジック９９９にコントロール信号を供給する。
ＯＮ／ＯＦＦ状態マシン９９８は、シリアル出力更新信号ＳＯ ＵＰＤＡＴＥを、シリアル出力ロジック８２４に供給する。該信号ＳＯ ＵＰＤＡＴＥがアサート（ハイ）されると、シリアル出力ロジック８２４は、フェース（位相）のシフト動作を開始し、かつ信号ＣＳＯＤ Ｏを介してレジスタ８０に対して、コントロール・データをシリアルにシフトする。シフト出力ロジック８２４は、ＯＮ／ＯＦＦ状態マシン９９８で受け取られる信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥをアサートすることによって、フェースのシフト動作が完了したことを通知する。ＯＮ／ＯＦＦ状態マシン９９８は次いで、コントロール信号ＰＯＵＴ［３９：０］を、ラッチ信号ＣＳＯＬＣ Ｏをクロッキングすることによって、更新する。該信号ＣＳＯＬＣ Ｏは、レジスタ８０で受信される。
コントロール・ロジック９９９は、信号ＰＷＲＥＮ［５：０］、ＣＬＫＥＮ＃、ＢＵＳＥＮ＃［５：０］、及びＲＳＴ＃［５：０］をシリアル出力ロジック８２４に供給し、そして、ＰＣＩバス許可信号ＣＡＹＲＥＱ＃をアビータ１２４に出力しかつ該アビータからＰＣＩバス許可信号ＣＡＹＧＥＮＴ＃ＷＯ受け取る。ＯＹＯＢＩコントロール・ロジック８２０は、信号ＣＡＹＲＥＱ＃をアサート（ロー）してＰＣＩバス３２へ要求し、そしてアビータ１２４が信号ＣＡＹＧＮＴ＃をアサート（ロー）したときに、アビータ１２４は、ＯＮ／ＯＦＦコントロール・ロー８２０へのＰＣＩバス３２の制御を許可する。
【０１４８】
図３９〜４５に示されているように、ＯＮ／ＯＦＦ状態マシン９９８はリセット信号ＲＳＴがアサートされると、待機（アイドリング）状態ＩＤＬＥに入る。ＩＤＬＥ状態でない場合は、ＯＮ／ＯＦＦ状態マシン９９８は、以下の３つのシーケンスを制御する。すなわち、パワーダウン・シーケンス、パワーアップ・シーケンス、及び、スロット・イネーブル・レジスタ８１７及びＬＥＤコントロール・レジスタ（不図示）によって指示されたときに、コントロール信号ＰＯＵＴ［３９：０］を更新するために用いられるワン・パス・シーケンスである。ＯＮ／ＯＦＦ状態マシン９９８は、ロロード信号ＣＳＯＬＣ Ｏをアサート（ハイ］するが、これは、該マシン９９８がコントロール信号ＰＯＵＴ［３９：０］が更新されるべきであると判定するまで、レジスタ８０のクロック信号ＣＬＫの１サイクルの間、アサートされる。コントロール信号ＰＯＵＴ［３９：０］が更新されるとき、ＯＮ／ＯＦＦ状態マシン９９８は信号ＣＳＯＬＣ Ｏを反転させ、それにより、コントロール信号ＰＯＵＴ［３９：０］が更新される。
ＯＮ／ＯＦＦ状態マシン９９８は、ソフトウエアが少なくとも１つのスロット３６のパワーダウンを要求したとき（これは、信号ＳＬＯＴ ＥＮ［５：０］のデアサートにより示される）、またはシリアル走査入力ロジック８０４がスロット３６ａ〜ｆの少なくとも１つをパワーダウンすべきであると判断したとき（これは、信号ＲＳＴ ＳＷＩＴＣＨ［５：０］によって示される）に、パワーダウン・シーケンスを開始する。パワーダウン・シーケンスを開始するために、ＯＮ／ＯＦＦ状態マシン９９８は信号ＳＯ ＵＰＤＡＴＥををアサートして、フェーズのシフトを開始し、かつＲＳＴＯＮ状態へＩＤＬＥ状態から移行する。
ＲＳＴＯＮ状態の間、コントロール・ロジック９９９は、パワーダウンすべきスロット３６に関するリセット信号ＲＳＴ＃［５：０］をネゲート（反転）させ、かつシリアル出力ロジック８２４が、リセット信号ＲＳＴ＃［５：０］を出力レジスタ８０にシリアルにシフトする。ＯＮ／ＯＦＦ状態マシン９９８はまた、信号ＳＯ ＵＰＤＡＴＥをネゲートさせる。シリアル出力ロジック８２４によって４０のコントロール信号のすべてがレジスタ８０にシフトされる（ＳＯ ＵＰＤＡＴＥ ＤＯＮＥ信号のアサートによって示される）、ＯＮ／ＯＦＦ状態マシン９９８は、ＲＳＴＯＮ状態からＯＦＦ ＡＲＢ１状態へ遷移する。
ＯＦＦ ＡＲＢ１状態では、ＯＮ／ＯＦＦ状態マシン９９８は、要求信号ＣＡＹＲＥＱ＃をアサートすることによって、ＰＣＩバスの制御を要求する。ＯＮ／ＯＦＦ状態マシン９９８は、その後、ＯＦＦ ＷＧＮＴ１状態に移行し、該状態において、２次ＰＣＩバス３２の制御の許可を待機する。信号ＣＡＹＧＮＴ＃のアサートによって示されるように、アビータ１２４がバス３２の制御を許可すると、ＯＮ／ＯＦＦ状態マシン９９８は、コントロール信号ＰＯＵＴ［３９：０］を更新するために信号ＣＬＫの１サイクルの間、信号ＣＳＯＬＣ Ｏをネゲートし、そして、ＯＦＦ ＬＣＬＫ１状態に移行する。
【０１４９】
ＯＦＦ ＬＣＬＫ１状態においては、ＯＮ／ＯＦＦ状態マシン９９８は信号ＳＯ ＵＰＤＡＴＥをアサートして、他のシフト・フェーズを開始する。ＯＮ／ＯＦＦ状態マシン９９８は、ＯＦＦ ＬＣＬＫ１から、バス・オフ状態ＢＵＳＯＦＦに遷移する。このＢＵＳＯＦＦ状態では、コントロール・ロジック９９９は、パワーダウンすべきスロット３６に対するバス・イネーブル信号ＢＵＳＥＮ＃［５：０］をデアサート（ハイに駆動）し、そしてシリアル出力ロジック８２４が該信号ＢＵＳＥＮ＃［５：０］を出力レジスタ８０に対して、シリアルに供給する。ＯＮ／ＯＦＦ状態マシン９９８は、また、信号ＳＯ ＵＰＤＡＴＥをネゲートする。４０のコントロール信号のすべてが出力ロジック８０によってシフトされると（信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥのアサートにより示される）、ＯＮ／ＯＦＦ状態マシン９９８はＢＵＳＯＦＦ状態からＯＦＦ ＡＲＢ２状態に遷移し、該ＯＦＦ ＡＲＢ２において、マシン９９８は、２次ＰＣＩバスの制御を再度要求する。マシン９９８はそして状態ＯＦＦ ＷＧＮＴ２に移行し、該状態ではＰＣＩバス３２の許可を待機する。許可を受け取ったならば、マシン９９８はＯＦＦ  ＬＣＬＫ２状態に移行し、該状態では、信号ＣＬＫの１サイクの間、信号ＣＳＯＬＣ Ｏをネゲートすることによって、コントロール信号ＰＯＵＴ［５：０］が更新される。その後、マシン９９８はクロック・オフ状態ＣＬＫＯＦＦに移行する。
【０１５０】
ＣＬＫＯＦＦ状態では、コントロール・ロジック９９９が、パワーダウンすべきスロット３６に対するクロック・イネーブル信号ＣＬＫＥＮ＃［５：０］をデアサート（ハイ）する。バス・イネーブル信号ＢＵＳＥＮ＃［５：０］は変化せず、またシリアル出力ロジック８２４がクロック・イネーブル信号ＣＬＫＥＮ＃をシリアルにシフトして、出力レジスタ８０に供給する。ＯＮ／ＯＦＦ状態マシン９９８はまた、信号ＳＯ ＵＰＤＡＴＥをネゲートする。４０のコントロール信号のすべてが出力ロジック８２４によってシフトされると（信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥによって示される）、マシン９９８はＣＬＫＯＦＦ状態からＯＦＦ ＡＲＢ３状態に移行し、該状態において、マシン９９８は再度ＰＣＩバス３２の制御を要求する。そしてマシン９９８は、ＯＦＦ ＷＧＮＴ３状態に移行し、ＰＣＩバス３２の制御の許可を待つ。許可を受信した場合は、状態マシン９９８は、ＯＦＦ  ＬＣＫ３状態に遷移し、該状態において、コントロール信号ＰＯＵＴ［３９：０］が更新される。これは、信号ＣＬＫの１サイクルの間、信号ＣＳＯＬＣ Ｏをネゲートすることによって更新される。状態マシン９９８は次いで、パワー・オフ状態ＰＷＲＯＦＦに移る。
ＰＷＲＯＦＦ状態では、コントロール・ロジック９９９が、パワーダウンすべきスロット３６に対するパワー・イネーブル信号ＰＷＲＥＮ［５：０］をデアサート（ロー）する。信号ＲＳＴ＃［５：０］、ＢＵＳＥＮ＃［５：０］、ＣＬＫＥＮ＃は変化しない。そして、シリアル出力ロー８２４は、パワー・イネーブル信号ＰＷＲＥＮ［５：０］を出力レジスタ８０にシフトする。ＯＮ／ＯＦＦ状態マシン９９８また、信号ＳＯ ＵＰＤＡＴＥを更新する。４０のコントロール信号がすべて出力ロー８２４によってシフトされると（ＳＯ ＵＰＤＡＴＥ ＤＯＮＥのアサートにより示される）、ＯＮ／ＯＦＦ状態マシン９９８はＰＷＲＯＦＦ状態からＯＦＦ ＬＣＬＫ４状態に遷移し、この状態において、信号ＣＬＫの１サイクの間信号ＣＳＯＬＣ Ｏをネゲートすることによって、信号ＰＯＵＴ［３９：０］を更新する。状態マシン９９８は次いで、ＩＤＬＥ状態に移行してパワーダウン・シーケンスが終了する。
【０１５１】
パワーダウン・シーケンスが要求されなければ、ＯＮ／ＯＦＦ状態マシン９９８はパワーアップ・シーケンスが要求されるか否かを決定する。ソフトウエアがスロット３６の少なくとも１つをパワーアップすることを要求するか又は拡張ボックス３０のパワーアップが保留であるかの何れかであれば、ＯＮ／ＯＦＦ状態マシン９９８はＩＤＬＥ状態からパワーオン状態ＰＷＲＯＮに遷移してパワーオン・シーケンスを開始する。パワーオン・シーケンスを開始するために、ＯＮ／ＯＦＦ状態マシン９９８は相シフトを開始するために信号ＳＯ ＵＰＤＡＴＥをアサートし、ＩＤＬＥ状態からパワーオン状態ＰＷＲＯＮへ遷移する。
ＰＷＲＯＮ状態の間、制御ロジック９９９はパワーアップされるべきスロット３６に対するパワー・イネーブル信号ＰＷＲＥＮ［５：０］をアサートし、シリアル出力ロジック８２４はパワー・イネーブル信号ＰＷＲＥＮ［５：０］を出力レジスタ８０に対してシリアルにシフトする。ＯＮ／ＯＦＦ状態マシン９９８はまた信号ＳＯ ＵＰＤＡＴＥを否定にする。信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥのアサートによって示されるように、４０の制御信号のすべてがシリアル出力ロジック８２４によってシフトされると、ＯＮ／ＯＦＦ状態マシン９９８はＰＷＲＯＮ状態からタイマ８０６初期設定状態ＬＤＣＮＴ１へ遷移し、制御信号ＰＯＵＴ［３９：０］を更新するためにロード信号ＣＳＯＬＣ Ｏを否定にする。
ＬＤＣＮＴ１状態においてＯＮ／ＯＦＦ状態マシン９９８はタイマ８０６を初期設定し、それによってタイマ８０６が所定の安定化遅延期間（stabilization delay interval）が満了（終了）したときの表示を提供するようにする。この安定化遅延期間は、電圧レベルＶSSがカード８０７に供給されたときにパワーアップされているカード８０７が安定するために十分な時間を与える。ＬＤＣＮＴ１状態において、ＯＮ／ＯＦＦ状態マシン９９８また信号ＣＳＯＬＣ Ｏをアサートする。ＯＮ／ＯＦＦ状態マシン８２０はＬＤＣＮＴ１状態からＣＬＫＯＮ状態に遷移する。
ＣＬＫＯＮ状態の間、制御ロジック９９９は、パワーアップされるべきスロット３６に対するクロック・イネーブル信号ＣＬＫＥＮ＃［５：０］をアサートする又はローに駆動する。ＰＷＲＥＮ［５：０］信号は変化せず、シリアル出力ロジック８２４はクロック・イネーブル信号ＣＬＫＥＮ＃［５：０］を出力レジスタ８０に対してシリアルにシフトする。ＯＮ／ＯＦＦ状態マシン９９８はまた信号ＳＯ ＵＰＤＡＴＥを否定にする。安定化遅延期間が満了すると、ＯＮ／ＯＦＦ状態マシン９９８はＣＬＫＯＦＦ状態からＯＮ ＡＲＢ１状態へ遷移する。
【０１５２】
ＯＮ ＡＲＢ１状態において、ＯＮ／ＯＦＦ状態マシン９９８は要求信号ＣＡＹＲＥＱ＃をアサートすることによって２次ＰＣＩバス３２の制御を要求する。ＯＮ／ＯＦＦ状態マシン９９８次にＯＮ ＷＧＮＴ１状態に遷移し、そこで２次ＰＣＩバス３２の許可（グラント）を待つ。ＣＡＹＧＮＴ＃信号のアサートによって示されるように、バス３２の制御が許可されると、ＯＮ／ＯＦＦ状態マシン９９８は制御信号ＰＯＵＴ［３９：０］を更新するために信号ＣＳＯＬＣ Ｏを否定にし（negate）、ＯＮ ＬＣＬＫ１状態に遷移し、そこで信号ＰＯＵＴ［３９：０］が更新される。
ＯＮ／ＯＦＦ状態マシン９９８はＯＮ ＬＣＬＫ１状態からＬＤＣＮＴ２状態へ遷移し、そこで、タイマ８０６が初期設定され、タイマ８０６が別の所定の安定化遅延間隔（stabilization delay interval）が満了（終了）したときの表示を提供するようにする。この遅延間隔は、カード８０７のクロック信号がパワーアップ・シーケンスが続けられる前に安定するようにパワーアップされることを可能にするために用いられる。ＯＮ／ＯＦＦ状態マシン９９８はＬＤＣＮＴ２状態からバス・オン（bus on）状態ＢＵＳＯＮに遷移する。
ＢＵＳＯＮ状態の間、制御ロジック９９９は、パワーダウンされるべきスロット３６に対するバス・イネーブル信号ＢＵＳＥＮ＃［５：０］をアサートする又はローに駆動する。信号ＣＬＫＥＮ＃［５：０］及びＰＷＲＥＮ＃［５：０］は変化せず、シリアル出力ロジック８２４はバス・イネーブル信号ＢＵＳＥＮ＃［５：０］を出力レジスタ８０に対してシリアルにシフトする。ＯＮ／ＯＦＦ状態マシン９９８はまた信号ＳＯ ＵＰＤＡＴＥを否定にする。安定化遅延間隔かせ満了すると、ＯＮ／ＯＦＦ状態マシン９９８ＢＵＳＥＮ状態からＯＮ ＡＲＢ２状態に遷移し、そこで状態マシン９９８は再びＰＣＩバス３２の制御を要求する。次に状態マシン９９８はＯＮ ＷＧＮＴ２状態に遷移し、そこでバス３２の許可を待つ。許可を受け取ると、状態マシン９９８はＯＮ ＬＣＬＫ２状態に遷移し、そこで信号ＰＯＵＴ［３９：０］が、信号ＣＬＫの１つのサイクルに対する信号ＣＳＯＬＣ Ｏを否定にすることによって更新される。次に状態マシン９９８はリセット・オフ状態ＲＳＴＯＦＦへ遷移する。
【０１５３】
ＲＳＴＯＦＦ状態の間、制御ロジック９９９は、個々のＳＬＯＴ ＲＳＴ ［５：０］に依存してパワーアップされるべきスロット３６に対するリセット信号ＲＳＴ＃［５：０］をアサートする又は否定にする。信号ＣＬＫＥＮ＃［５：０］、ＰＷＲＥＮ＃［５：０］及びＢＵＳＥＮ＃［５：０］は変化せず、シリアル出力ロジック８２４はリセット信号ＲＳＴ＃［５：０］を出力レジスタ８０に対してシリアルにシフトする。ＯＮ／ＯＦＦ状態マシン９９８はまた信号ＳＯ ＵＰＤＡＴＥを否定にする。信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥのアサートによって示されるように、４０の制御信号のすべてがシリアル出力ロジック８２４によってシフトされると、ＯＮ／ＯＦＦ状態マシン９９８はＲＳＴＯＮ状態からＯＮ ＡＲＢ３状態へ遷移し、そこで状態マシン９９８は再びバス３２の制御を要求する。状態マシン９９８は次にＯＮ ＷＧＮＴ３に遷移し、そこでバス３２に対する許可を待つ。許可を受け取ると、状態マシン９９８はＯＮ ＬＣＬＫ３状態に遷移し、そこで信号ＰＯＵＴ［３９：０］が、信号ＣＬＫの１サイクルに対する信号ＣＳＯＬＣ Ｏを否定にすることによって更新される。次に状態マシン９９８はＩＤＬＥ状態に遷移して戻る。
【０１５４】
パワーアップ・シーケンスもパワーダウン・シーケンスも要求されないならば、ＯＮ／ＯＦＦ状態マシン９９９は次に信号ＰＯＵＴ［３９：０］のうちの選択されたものを更新するために１パス（ワン・パス、one pass）・シーケンスが必要か否かを判定する。もしＧＯ ＵＰＤＡＴＥ信号がアサートされ、もしスロット・イネーブル・レジスタ８１７又はスロット・リセット・レジスタ８１９の何れかのビットが変化するならば、ＯＮ／ＯＦＦ状態マシン９９８はＯＮＥＰＡＳＳ状態へ遷移し、ＳＯ ＵＰＤＡＴＥ信号をアサートする。
ＯＮ／ＯＦＦ状態マシン９９８は、４０の制御信号がレジスタ８０へシフトされるまでＯＮＥＰＡＳＳ状態にとどまる。次に、ＯＮ／ＯＦＦ状態マシン９９８はＯＰ ＡＲＢ状態へ遷移し、そこで状態マシン９９８は信号ＣＡＹＲＥＱ＃をアサートすることによってＰＣＩバス３２の制御を要求する。次に状態マシン９９８はＯＰ ＷＧＮＴ状態に遷移し、そこでバス３２に対する許可を待つ。許可を受け取ると、状態マシン９９８はＯＰ ＬＣＬＫ状態へ遷移し、そこで信号ＰＯＵＴ［３９：０］は信号ＣＬＫの１つのサイクルに対する信号ＣＳＯＬＣ Ｏを否定にすることによって更新される。次に状態マシン９９８はＩＤＬＥ状態に遷移して戻る。
【０１５５】
図４６に示すように、シリアル出力ロジック８２４は、信号ＣＳＯＤ Ｏを経由でシリアル出力ロジック８２４からシフトされた制御信号を追跡する６ビット・カウンタ出力信号ＢＩＴ ＣＮＴＲ［５：０］を提供するシフト出力ビット・カウンタ９２１を含む。信号ＢＩＴ ＣＮＴＲ［５：０］が「３９」と等しい６数字の数と等しいとき、信号ＭＡＸ ＣＮＴがアサートされる。信号ＭＡＸ ＣＮＴはＡＮＤゲート９２２の入力に与えられる。ＡＮＤゲート９２２は更に信号ＳＨＩＦＴ４を受信し、この信号は、以下に説明する出力シフト状態マシン９２０がＳＨＩＦＴ４状態に入ったときにアサートされる。ＡＮＤゲート９２２の出力は信号ＳＯ ＵＰＤＡＴＥ ＤＯＮＥを提供する。
出力シフト状態マシン９２０は増分カウンタ信号ＩＮＣ ＣＮＴＲをビット・カウンタ９２１に供給する。ＩＮＣ ＣＮＴＲがアサートされると、ビット・カウンタ９２１は信号ＢＩＴ ＣＮＴＲ［５：０］によって表される値を増分する。ロード・カウンタ信号ＬＯＡＤ ＣＮＴＲがアサートされるか又はＲＳＴ信号がアサートされると、ビット・カウンタ９２１のクリア入力に接続されたＯＲゲート９２５の出力が信号ＢＩＴ ＣＮＴＲ［５：０］をクリアする。
信号ＢＩＴ ＣＮＴＲ［５：０］は、信号ＣＳＯＤ Ｏを供給するマルチビット・マルチプレクサ９２４の選択入力に供給される。マルチプレクサ９２４の０から１１の入力はＬＥＤ制御信号ＬＥＤＳ［１１：０］を受信する。マルチプレクサ９２４の１２から１５の入力は汎用出力信号ＧＰＯＡ［３：０］を受信する。１６から２１の入力はリセット信号ＲＳＴ＃［５：０］を受信する。２２から２７の入力はクロック・イネーブル信号ＣＬＫＥＮ＃［５：０］を受信する。２８から３３の入力はバス・イネーブル信号ＢＵＳＥＮ＃［５：０］を受信する。３４から３９の入力はパワー・イネーブル信号ＰＷＲＥＮ｛５：０］を受信する。
【０１５６】
図４７及び図４８に示すように、出力シフト状態マシン９２０は、信号ＲＳＴがアサートされるときにＩＤＬＥ状態に入る。もし信号ＳＯ ＵＰＤＡＴＥがアサートされると、出力シフト状態マシン９２０はＩＤＬＥ状態からＳＨＩＦＴ１状態へ遷移する。
出力シフト状態マシン９２０はＰＣＩクロック信号ＣＬＫの正の縁部でクロックされるので、出力シフト状態マシン９２０は、クロック信号ＣＬＫの周波数の４分の１であるクロック信号ＣＳＯＳＣ Ｏ信号を発生するために、ＳＨＩＦＴ１状態、ＳＨＩＦＴ２状態、ＳＨＩＦＴ３状態及びＳＨＩＦＴ４状態を通して遷移する。ＳＨＩＦＴ１状態とＳＨＩＦＴ２状態の間、クロック信号ＣＳＯＳＣ Ｏは否定に又はローにされ、ＳＨＩＦＴ３状態とＳＨＩＦＴ４状態の間、クロック信号ＣＳＯＳＣ Ｏはアサート又はハイにされる。信号ＭＡＸＣＮＴのアサートによって示されるように、現在のシフト相が完了すると、シフト状態マシン９２０はＩＤＬＥ状態に戻り、次のシフト相の開始までクロック信号ＣＳＯＳＣ Ｏがアサートされる。
図４９に示すように、ＨＡＮＧ ＰＥＮＤ信号はレジスタ８０のクリア入力によって受信される。ＨＡＮＧ ＰＥＮＤ信号のアサート又はハイへの駆動は、以下に説明するようにＰＣＩバス３２がロック・アップ状態のときにすべてのスロット３６をパワーダウンするために適当な出力制御信号ＰＯＵＴ［３９：０］を非同期的にクリアする。
【０１５７】
障害分離（fault isolation）
バス・ウオッチャ（watcher）１２９は２次ＰＣＩバス３２におけるハング（hang）状態を検出することができる。ハング状態が検出されると、バス・ウオッチャ１２９はバス・ハング保留（pending）ビットをセットし、これによってＳＩＯ５０が２次バス３２上のスロットをパワー・ダウンさせるようにし、マスク不可能割り込み（ＮＭＩ）がＣＰＵ１４に送信されるようにする。ＣＰＵ１４はＮＭＩに応答してＮＭＩルーチンを呼び出し、ハング状態の原因であるスロット（１つ又は複数）を分離（隔離）する。欠陥のあるスロットが識別されると、そのスロットはディスエーブルに又はパワー・オフされる。ソフトウエアの診断のために、ダウンストリームのブリッジ・チップ４８のバス・ウオッチャ１２９はバス履歴（ヒストリ、history）ＦＩＦＯ及びバス・ベクトルＦＩＦＯを含む。２次ＰＣＩバス３２が適正に機能するとき、バス履歴情報は各トランザクションにおいてバス・ウオッチャ１２９によって記録される。バス履歴情報には、アドレス・グループ（ＰＣＩアドレス、ＰＣＩコマンド信号、ＰＣＩマスタ数、及びアドレス・パリティ・ビットを含む）及びデータ・グループ（ＰＣＩデータ、バイト・イネーブル信号Ｃ／ＢＥ［３：０］ 、パリティ・エラー信号ＰＥＲＲ 、データ・パリティ・ビット、バースト・サイクル表示ビット、及びデータ有効フラグを含む）が含まれる。バス・トランザクションを開始するためにＰＣＩ信号ＦＲＡＭＥ が２次ＰＣＩバス３２にアサートされたとき、アドレス・グループ及び後続の各データ・グループはバス履歴ＦＩＦＯに記憶される。もしトランザクションがバースト・トランザクションであるならば、バースト・サイクル表示ビットが第２のデータ相においてアクティブにセットされる。第１のデータ相の後に、バースト・トランザクションにおける後続のデータ・グループと関連するアドレス・グループのアドレス・フィールドは４で増分され、新しいアドレス・グループ及びデータ・グループがバス履歴ＦＩＦＯの次の位置に記憶される。もし再試行の状態又はデータがなく接続解除の状態（disconnect-without-data condition）のためにデータが転送されないならば、有効データ表示ビットがローにセットされる。
【０１５８】
アドレス・グループ及びデータ・グループの両方とも２段パイプラインを通じて流れ、データ・グループがデータ・パリティ・ビット及びデータ・パリティ・エラー・ビットを集める時間を可能にし、且つ次のアドレス・グループが記録される前にデータ・パリティ・エラーが発生するときに記録プロセスを停止することを可能にする。もしバスが書き込みデータ相の中間でハングすると、データは記憶され、バス・ハング状態ビットがコンフィギュレーション・スペースを経由でアクセス可能なバス・ハング表示レジスタ４８２（図５５）にセットされる。もしバスが読み出しデータ相の中間でハングすると、データには有効でないと印付けがなされ、バス・ハング・ビットがセットされる。
バス状態ベクトルは組み立てられてバス・ベクトルＦＩＦＯに記憶される。それらには以下のＰＣＩ制御信号、即ち、スロット要求信号ＲＥＱ［７：０］ 、スロット許可信号ＧＮＴ［７：０］ 、ＦＲＡＭＥ 信号、ＰＣＩデバイス選択信号ＤＥＶＳＥＬ 、ＰＣＩイニシエータ・レディ（initiator ready）信号ＩＲＤＹ 、ＰＣＩターゲット・レディ信号ＴＲＤＹ 、ＳＴＯＰ 信号、ＰＣＩパリティ・エラー信号ＰＥＲＲ 、ＰＣＩシステム・エラー信号ＳＥＲＲ 、及びＬＯＣＫ 信号が含まれる。バス状態ベクトルが変化する各ＰＣＩクロック上において、即ち、リストされた信号の何れかが状態を変化させる各ＰＣＩクロック上において、新しいベクトルがバス・ベクトルＦＩＦＯに記憶される。
バス・ウオッチャ１２９は、２次バス３２がロック・アップ（lock up）されたか否かを判定するためにウォッチ−ドッグ（watch-dog）・タイマ４５４（図５３）を含む。ウォッチ−ドッグ・タイマ４５４が満了になると（きれると）、バス３２はハングされる。以下は、ウォッチ−ドッグ・タイマ４５４によって検出することができるバス・ハング状態の例である。ＦＲＡＭＥ 信号がハイ又はローに置かれる。信号ＴＲＤＹ がＩＲＤＹ に応答してアサートされない。ＰＣＩアービタ１２４が何れのマスタにもバスの許可を与えない。バス３２を要求するマスタは再試行を行い続ける。
【０１５９】
ウォッチ−ドッグ・タイマ４５４が満了すると、バス・ハング保留ビットがバス・ハング表示レジスタ４８２においてアクティブにセットされる。アクティブにセットされると、バス・ハング保留ビットはバス・ウォッチャ１２９をディスエーブルにする。次に、ＳＩＯ５０のスロット・イネーブル・ビットがクリアされ、スロットがパワー・オフされることとなる。ＳＩＯ５０は次にシステム・エラー信号ＳＥＲＲ をアサートする。
バス・ハング状態の原因を分離するために、システム・エラー信号ＳＥＲＲ は、システムの割り込みロジックがＣＰＵ１４に対してＮＭＩを発行するようにする。図５０を参照すると、ＮＭＩハンドラは最初に、バス・ハング表示レジスタ４８２を読むことによってバス・ハング保留ビットがセットされたか否かを判定する（４００）。セットされていたならば、ＮＭＩハンドラは欠陥のあるスロット（１つ又は複数）を分離するためにＢＩＯＳ分離ハンドラを呼び出す（４０１）。そうでない場合は、別のＮＭＩプロシージャを呼び出す（４０２）。
フェールセーフ機構として、コンピュータ・システムはまた、特定のソフトウエア・ルーチンがオペケーティング・システムによって実行されるときにクリアされる自動サーバ回復（ＡＳＲ）（automatic server recovery）タイマ７２を含む。ＡＳＲタイマが満了したならば（例えば、１０分後）、それは、オペケーティングがロック・アップしたことを示す。２次ＰＣＩバス２３のハングはシステムのロック・アップが原因であり得、その場合にＮＭＩはＣＰＵ１４に届かない。もとＡＳＲタイマが満了すると、ＡＳＲによって発生されるリブート（reboot）が発生する。ＡＳＲタイマはまた、ＢＩＯＳ分離ハンドラがＰＣＩバス３２上の故障のスロットを分離する最中にあり且つコンピュータ・システムがＡＳＲリブートをするようにハングするならば、分離ルーチンがＡＳＲタイムアウト事象のすぐ前に停止さたところでピックアップできることを確実にする。
【０１６０】
図５１を参照すると、ＢＩＯＳのＡＳＲハンドラがＡＳＲリブート状態に応答して呼び出される。ＡＳＲハンドラは最初に、分離進行中（isolation-in-progress）事象変数（ＥＶ）が、分離プロセスがＡＳＲタイムアウト事象の前に進行中であったことを示すアクティブ情報を含むか否かを判定するためにチェックを行う（４４４）。分離進行中ＥＶは不揮発性メモリ（ＮＶＲＡＭ）７０に記憶され、且つ分離プロセスが開始されたことを示すためにアクティブにセットされるヘッダ情報を含む。分離進行中ＥＶはまた、検査されているスロット、故障のスロット、及びイネーブルにされているスロットを含む分離プロセスの現在の状態で更新される。
もし分離プロセスが進行中であったならば、ＢＩＯＳのＡＳＲハンドラは、ＡＳＲ事象の直前にイネーブルにされたものを除くすべてのスロットを再びイネーブルにし（４８８）、これは分離進行中ＥＶから決定される。ＡＳＲのリブートの前にイネーブルにされたスロットはＡＳＲロック・アップの原因であり得る。結果として、それらのスロットはディスエーブルに（即ち、パワー・オフ）される。次に、ディスエーブルにされたスロットの番号が、ＮＶＲＡＭに記憶される故障状態情報としてログ（記録）され、分離進行中ＥＶがクリアされる（４５０）。次にＢＩＯＳのＡＳＲハンドラはバス・ハング保留（ペンディング）ビットがセットされたか否かを判定するために検査を行う（４５２）。セットされていたならば、バス・ハング保留ビットはクリアされ（２次ＰＣＩバス３２上でＩ／Ｏサイクルを行うことによる）バス・ウォッチャ１２９を再びイネーブルにする。
４４４において、もし分離進行中ＥＶがアクティブ状態にセットされておらず、ＡＳＲ事象が発生したときに分離プロセスが実行されていなかったことが示されるならば、ルーチンはバス・ハング保留ビットがセットされたか否かを判定する（４４６）。セットされていないならば、ＢＩＯＳのＡＳＲハンドラを終える。４４６において、バス・ハング保留ビットがセットされ、ＡＳＲ事象の前にバス・ハング状態が発生したことを示すならば、ＢＩＯＳのＡＳＲハンドラはＢＩＯＳ分離ハンドラを呼び出して故障のスロット（１つ又は複数）を分離する。
【０１６１】
図５２を参照すると、ＢＩＯＳ分離ハンドラは最初にＮＶＲＡＭの故障状態情報部分にバス・モニタ１２７の履歴ＦＩＦＯ及びベクトルＦＩＦＯに記録されたバス履歴及びバス・ベクトル情報をログする。（４０８）。バス履歴ＦＩＦＯ及びバス状態ベクトルＦＩＦＯが読まれ、それらの内容がＮＶＲＡＭに転送される。次に、分離進行中事象変数のヘッダ情報がセットされて分離プロセスが進行中であることを示す（４１０）。バス・ハング保留ビットがクリアされ（所定のコンフィギュレーション・アドレスへの書き込みによる）てバス・ウオッチャ１２９が再びイネーブルにされる。次に、分離ルーチンは最初にポピュレートされた（populated）スロット（即ち、ＰＣＩデバイスが接続されたスロット）を再びイネーブルにし（即ち、パワー・アップし）、そのデバイスのＰＣＩコンフィギュレーション・スペースからの読み出し及び書き込みを行う（４１２）。スロットはスロット・イネーブル・レジスタ８１７（図２９）への書き込みによって再びイネーブルにされる。次に、ルーチンは、バス・ハング保留ビットがアクティブにセットされて、スロットに接続されたデバイスがバスから読み出している間にバスをハングさせる原因となることを示すか否かを判定する（４１４）。もしセットされていなければ、ルーチンはポピュレートされたすべてのスロットの検査が行われたか否かを判定する（４１６）。もし検査されていなければ、最初にポピュレートされたスロットがディスエーブルにされ（４１８）、分離進行中ＥＶが更新され、最初にポピュレートされたスロットがＢＩＯＳ分離ルーチンによって試されたことを示す（４２０）。もしルーチンが４１４でバス・ハング保留ビットがアクティブにセットされたと判定すると、スロットは、ＮＶＲＡＭの故障状態情報部分において故障しているものとして示される（例えば、そのスロットに対する故障フラグをアクティブにセットする）。次に、ポピュレートされたすべてのスロットの検査がなされるまでステップ４１２、４１４、４１６、４１８及び４２０からなるループが実行される。
【０１６２】
４１６でポピュレートされたすべてのスロットが検査されたと判定された場合、ルーチンは、何れかのスロットがＮＶＲＡＭの故障状態情報部分において故障したものとして示されているか否かを判定するために検査を行う（４２４）。もしセットされたならば、ルーチン３９８は故障していないスロットのみを再びイネーブルにする（４２６）。次に、分離進行中ＥＶがクリアされ（４２８）、ＢＩＯＳ分離ルーチンが完了する。
４２４で何れのスロットも故障していないと判定された場合、これはバス・ハング状態が１つのスロットによって起こったものではないことを示すが、１つよりも多くのデバイスが同時にアクティブ状態にあったであろうことが原因であり得る。それを確かめるために、ＢＩＯＳ分離ハンドラは最初にすべてのスロットをディスエーブルにし（パワー・ダウンし）、この情報で分離進行中ＥＶを更新する（４３０）。次に、ＢＩＯＳ分離ハンドラはカウント変数を０にクリアし、カウント変数ＩをＮの値にセットする（４３１）。カウント変数Ｎはポピュレートされたスロットのカウントを表す。
ＢＩＯＳ分離ハンドラはポピュレートされたスロットＩ（最初はスロットＮ）を再びイネーブルにし（即ち、パワー・アップし）、そのＰＣＩコンフィギュレーション・スペースに対しての読み出し及び書き込みを行う（４３２）。次に、ハンドラはバス・ハング保留ビットがセットされたか否かを判定するために検査を行う（４３８）。もしセットされていなければ、ハンドラは変数Ｉを決定し（４３３）、変数Ｉが０より大きい又は０と等しいか否かを検査する（４３４）。もし０以上であるならば、ハンドラは分離進行中ＥＶを更新し（４３５）、次のポピュレートされたスロットＩを再びイネーブルにして読み出し及び書き込みを行う（４３２）。次にハンドラは該次のスロットに対してバス・ハング保留ビットがセットされたか否かを検査する（４３８）。このようにして、イネーブルにされる各スロットＮに対して、以前にイネーブルにされたスロットもまた、スロットの組み合わせが故障の原因であるか否かを判定するために一度に１つずつパワーオンされる。
ブロック４３４において、変数Ｉがゼロより小さいくなると決定されれば、ブロック４３６において、ハンドラは全ての母集団化されたスロットはイネーブルされたか否かを決定する。そうでなければ、ブロック４３７においいて、変数Ｎは増加され、ブロック４３９において、分離進行中ＥＶは更新され、ブロック４４１において、変数ＩはＮの値と等しく再度セットされる。
ブロック４４０において、もしバス停止保留ビットが４３８活動にセットされるなら、潜在的に２つのスロットがディスエーブルされる：スロットＮ（現在イネーブルされているスロット）及びスロットＩ（現在読出しおよび書込みされているスロット）。ブロック４３６において、Ｉ及びＮの値が同じならば、スロットＮだけがディスエーブルされている。ハンドラが全ての母集団化されたスロットがイネーブルされること（そして、障害が識別され得ない）を決定すれば、ブロック４４２において、ハンドラはＮＶＲＡＭにおいて障害を隔離するためにその無力をログする。次に、ブロック４２８において、ハンドラは分離進行中ＥＶを消去する。
【０１６３】
図５２を参照して、ウオッチードッグ（ｗａｔｃｈ−ｄｏｇ）・タイマ４５４は、出力信号ＷＤ＿ＴＭＲ＿ＯＵＴ［１７：０］（タイマカウタの値）、ＨＡＮＧ＿ＰＥＮＤ（バスハング条件の存在）、ＥＮ＿ＣＡＰ（ソフトウエアがバスの補足可能性およびベクトル・ヒストリ情報を有する）、ＴＩＭＥ＿ＯＵＴ（ウオッチードッグ・タイマ４５４はタイムアウトする）、信号ＨＡＮＧ＿ＲＣＯＶＲ＿ＥＮ（ソフトウエアによりバス・ウオッチャ１２９およびＳＩＯ  ５０において停止回復ロジックをイネーブルするようにハイにセット）及び信号ＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴ（ＰＣＴバス３２上の違法サイクルを示す）を供給する。
信号ＨＡＮＧ＿ＰＥＮＤは，ＳＩＯ  ５０に供給され，第２のバス・スロットを遮断する。ウオッチドッグ・タイマ４５４への入力信号は、ＰＣＩバス信号のいくつか、信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１（バス・ヒストリの補足及び障害分離ブロック１２９によるバス・ベクトル情報が再びイネーブルされるようにソフトウエアによりハイにパルスされる）、そして電源良好インディケーター信号（コンピュータ・システムにおける電力が安定していることを示す）を含む。
【０１６４】
バス停止回復状態マシーン４５６は、信号ＨＡＮＧ＿ＰＥＮＤ、ＴＩＭＥ＿ＯＵＴ及びＨＡＮＧ＿ＲＣＯＶＥＲ＿ＥＮをウオッチードッグ・タイマ４５４から受け取る。回復状態マシーン４５６はまたＰＣＩ信号のいくつかを受け取る。バス停止回復状態マシーン４５６からの出力信号は、ＰＣＩ信号ＤＥＶＳＥＬ＿、ＰＣＩ信号ＳＴＯＰ＿を駆動する信号ＳＴＯＰ＿Ｏ、システム・エラー信号ＳＥＲＲ＿のアサーションをイネーブルする信号ＳＥＲＲ＿ＥＮ、信号ＢＲ＿Ｍ＿ＡＢＯＲＴ（バス・ウオチャ１２９がマスタ打切りにより回復したこを示す）、信号ＢＲ＿Ｔ＿ＡＢＯＲＴ（バス・ウオチャ１２９がターゲット打切りにより回復したことを示す）、および信号ＲＣＯＶＲ＿ＡＣＴＩＶＥ（バス停止回復状態マシーン４５６が活動状態になる時を示すための）を含む。バス停止回復状態マシーン４５６は、第２のＰＣＩバス３２が障害スロットを分離することをソフトウエアに許容するためアイドル状態にもどることを保証する。停止条件が検出される時に、ＳＩＯ  ５０は第２のバス・スロットをパワーダウンし、このスロットは、ハング条件が生じる時にスロット・デバイスの１つがバス・マスタの１つであったならばバス３２をアイドル状態に自動的に置く。しかし、バス停止が生じる時にスロット・デバイスの１つがターゲットであった（そしてブリッジ・チップ４８がマスタであった）ならば、そのときブリッジ・チップ４８はバス上に留まる。ブリッジ・ップをバスから取除くために、回復状態マシーン４５６は信号ＳＴＯＰ＿をアサートすることによりＰＣＩバス３２上に再試行サイクルを強制する。
バス・ヒストリ（バス履歴）捕捉ブロック４５８はトランザクションのためにＰＣＩバス３２を監視し、そしてバス・ヒストリ情報を、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ３［３１：０］（バス・ヒストリアドレス）、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ２［３１：０）（バス・ヒストリデータ）、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ１［１５：０］（パリテイエラー信号  ！ＰＥＲＲ＿、パリテイビットＰＡＲ、有効データ・ビットＶＡＬＩＤ＿ＤＡＴ、アドレス・パリテイビットＡＤＤＲＰＡＲ、バースト・インディケーターＢＵＲＳＴ、マスタ番号ＭＡＳＴＥＲ［２：０］、バイト・イネーブルビット［３：０］及び命令ビットＣＭＤ［３：０］）の出力信号上に表す。バス・ヒストリ補足ブロック４５８は、信号ＨＩＳＴ＿ＲＤＹを、正常なトランザクションにおける各データ・フェーズの終端において真である、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ信号上にデータが利用できる時に、またはタイムアウト信号ＴＩＭＥ＿ＯＵＴのアサーションの間に、もしトランザクションがマスタ打切り、再試行により終了するなら信号ＨＩＳＴ＿ＲＤＹをアサートする。
【０１６５】
バス・ベクトル補足ブロック４６０は、いずれかのこれらの制御信号が状態を変更する時に、あるＰＣＩ制御信号の状態を補足する。ベクトルが補足され、信号ＢＵＳ＿ＶＥＣＴ＿ＤＡＴＡ［２０：０］として出力し、該出力信号は、要求信号！ＲＥＱ［７：０］＿、！承諾信号ＧＮＴ［７：０］＿、タイムアウト信号ＴＩＭＥ＿ＯＵＴ、ロック信号ＬＯＣＫ＿、システムエラー信号ＳＥＲＲ＿、パリテイエラー信号ＰＥＲＲ＿、停止信号ＳＴＯＰ＿、ターゲット準備信号ＴＲＤＹ＿、開始レディー信号ＩＲＤＹ＿、デバイス選択信号ＤＥＶＳＥＬ＿及びフレーム信号ＦＲＡＭＥ＿を含む。バス・ベクトルＢＵＳ＿ＶＥＣＴ＿ＤＡＴＡ［２４：０］のいずれかが変化するかまたはウオッチドッグ・タイマ４５４が満了した（ＴＩＭＥ＿ＯＵＴはハイ）ならば、バス・ベクトル捕捉ブロック４６０は信号ＶＥＣＴ＿ＲＤＹをアサートする。
バス・ヒストリ及びバス・ベクトル信号が、２デープ（２−ｄｅｅｐ）・バス・ヒストリＦＩＦＯと４デープ・ベクトル・ヒストリＦＩＦＯを含む、バス・ウオッチャＦＩＦＯの入力に生じる。バス・ヒストリＦＩＦＯの出力は、信号ＢＵＳ＿ＨＩＳＴ＿ＲＥＧ１［３１：０］、ＢＵＳ＿ＨＩＳＴ＿ＲＥＧ２（３１：０］及びＢＵＳ＿ＨＩＳＴ＿ＲＥＧ３［３１：０］として生じる。ベクトル・ヒストリＦＩＦＯの出力は信号ＢＵＳ＿ＶＥＣＴ＿ＲＥＧ［３１：０］として生じる。システム・ソフトウエアは、アサートされるべき信号ＢＵＳ＿ＨＩＳＴ＿ＲＤ１生じさせるＩ／０読出しサイクルを発生させることによりバス・ヒストリＦＩＦＯの出力を読出し、そしてアサートされるべき信号ＢＵＳ＿ＶＥＣＴ＿ＲＤを生じるＩ／Ｏ読出しサイクルを発生させることによりベクトルＦＩＦＯの出力を読出す。
【０１６６】
図５４を参照すると、回復状態マシーン４５６は、ＳＹＮＣ＿ＰＯＷＥＲＯＫは、電力がいまだ安定していないことを示す、否定されたロウ（ｌｏｗ）である時に、状態ＩＤＬＥにおいて開始する。状態マシーンは、信号ＨＡＮＧ＿ＰＥＮＤがロウである間は状態ＩＤＬＥに留まる。状態ＩＤＬＥにおいて、信号ＢＲ＿Ｍ＿ＡＢＯＲＴ、信号ＢＲ＿Ｔ＿ＡＢＯＲＴ、信号ＲＣＯＶＲ＿ＡＣＴＩＶＥは否定されたロウである。信号ＲＯＣＶＲ＿ＡＣＴＩＶＥは、他の状態ＷＡＩＴ、ＡＢＯＲＴ及びＰＥＮＤ＿ＯＦＦにおいて活動のハイである。信号ＳＥＴ＿ＨＡＮＧ＿ＰＥＮＤがハイをアサートするならば、状態マシーンは状態ＷＡＩＴに遷移する。その遷移において、信号ＤＥＶＳＥＬ＿０はデバイス選択信号ＤＥＶＳＥＬ＿の反転状態に等しくセットされる。これは、デバイス選択信号ＤＥＶＥＬ＿がバス停止条件前のターゲットによりアサートさるならば、回復状態マシーン４５６はアサートされた信号ＤＥＶＳＥＬ＿を維持する。状態ＷＡＩＴにおいて、信号ＤＥＶＳＥＬ＿０は、信号ＤＥＶ＿ＳＥＬ＿ＷＡＳ＿０の状態に等しくセットされ、該信号ＤＥＶ＿ＳＥＬ＿ＷＡＳは、信号ＤＥＶＳＥＬ＿がターゲットによりＷＡＩＴ状態への状態マシーン遷移の前にアサートされるなら、ハイにセットされる。
状態ＷＡＩＴから、バス停止回復マシーン４５６は、ＰＣＩバス３２がアイドルになった（すなわち、ＦＲＡＭＥ＿ＩＲＤＹ＿およびＩＲＤＹ＿の両方が否定ハイ）ことを示す、信号ＰＣＩ＿ＩＤＬＥがアサートされるならば、ＰＥＮＤ＿ＯＦＦ状態に変換する。該変換において、信号ＢＲ＿Ｍ＿ＡＢＯＲＴがハイにセットされ、停止条件およびスロット・デバイスを電力ダウンしてＰＣＩバスをアイドル状態にする前にスロット・デバイスの１つがマスタであることを表示する。信号ＳＥＲ＿ＥＮはまたハイにセットされ、もしＩＮＴＡ＿がイネーブルされるならばシステムエラー信号ＳＥＲＲ＿ｏｒのアサーションをイネーブルする。
【０１６７】
スロット・ディバイスがバス停止条件前のターゲットであるならば、バス・マスタはＰＣＩバス３２留まる。バス・マスタをＰＣＩバスから外すために、バス停止回復状態マシーン４５６は、ＰＣＩバス３２上の再試行を行う。カウンタ４５７は、信号ＨＡＮＧ＿ＰＥＮＤがハイにアサートされた後にＰＣＬＫ期間（例えば、１５ＰＣＬＫ期間）の所定数をカウントする。１５ＰＣＬＫ期間は、ＦＲＡＭＥ＿およびＩＲＤＹ＿上の十分な立上がり時間を保証し、信号にアイドル状態への復帰する時間を与える。１５ＰＣＬＫ期間が経過した時に、カウンタ４５７は信号ＴＩＭＥ＿ＯＵＴ１５をアサートする。信号ＴＩＭＥ＿ＯＵＴがハイをアサートし、信号ＰＣＩ＿ＩＤＬＥがロウに留まる場合には、状態マシーンはＷ状態ＡＩＴから状態ＡＢＯＲＴに移行する。その移行において、信号ＳＴＯＰ＿０信号はハイをアサートし、ＰＣＩ  ＳＴＯＰ信号を活動状態に駆動してバス・マスタを再試行させる。状態マシーンは、バス・マスタがロウにアサートされたＦＲＡＭＥ＿信号を維持する間は状態ＡＢＯＲＴに留まる。状態ＡＢＯＲＴにおいて、ＳＴＯＰ＿０信号はハイに維持される。バス・マスタが再試行状態に応答してＦＲＡＭＥ信号をアサートしないと、状態マシーンは状態ＡＢＯＲＴから状態ＰＥＮＤ＿ＯＦＦに移行する。該移行において、信号ＢＲ＿Ｔ＿ＡＢＯＲＴはハイをアサートされ、バス３２をアイドル状態に置くためにバス停止条件の後にターゲット打切りが必要であつたことを表示する。また、信号ＳＳＥＲＲ＿ＥＮがハイをアサートされて、ＩＮＴＡ＿がイネーブルであるなら、信号ＳＥＲＲ＿ｏｒのアサーションをイネーブルする。状態マシーンは、信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１が状態ＩＤＬＥに逆移行する時にハイにアサートされるまで、状態ＰＥＮＤ＿ＯＦＦに留まる。
システム・ソフトウエアはＢＲ＿Ｍ＿ＡＢＯＲＴおよびＢＴ＿Ｔ＿ＡＢＯＲＴ信号の値を読出ＳＵことができ、バス停止に含まれたスロット・デバイスがマスタまたはスレーブであったかを決定する。
【０１６８】
図５５を参照すると、ウオッチドッグ・タイマ４５４は、信号ＰＣＬＫによりクロックされる１８ビットＬＳＦＲカウンタ４６４を含む。ＡＮＤゲート４６７がハイにアサートされる時にカウンタ４６４はイネーブルされ、それは新しいマスタが要求（ＡＮＹ＿ＲＥＱはハイ）を送り、バス・サイクルが開始し（信号ＦＲＡＭＥ＿およびＩＲＤＹ＿は共にアサートされる）、イネーブル捕捉信号ＥＮ＿ＣＡＰがアサートされ、そして信号ＴＩＭＥ＿ＯＵＴはロウになる。ＯＲゲート４６６は、信号ＡＮＹ＿ＲＥＱと信号ＦＲＡＭＥ＿およびＩＲＤＹ＿の反転状態を受ける。ＡＮＤゲート４６７は、ＯＲゲート４６６の出力、信号ＥＮ＿ＣＡＰおよび信号ＴＩＭＥ＿ＯＵＴの反転状態を受ける。カウンタの出力は、信号ＷＤ＿ＴＭＲ＿ＯＵＴ［１７：０］を駆動し、そしてタイムアウト条件が検出された（ＴＩＭＥ＿ＯＵＴはハイ）時、データ転送が開始した（両信号ＩＲＤＹ＿とＴＲＤＹ＿がロウにアサートされる）時、またはカウンタ４６４の全ての出力ビットがハイである（違法条件である）時に消去される。消去条件はＯＲゲート４７０により示され、該ＯＲゲートは信号ＴＩＭＥ＿ＯＵＴ、信号ＷＤ＿ＴＭＲ＿ＯＵＴ［１７：０］のビット単位ＡＮＤ、およびＡＮＤゲート４７２の出力を受ける。ＡＮＤゲート４７２の入力は、信号ＩＲＤＹ＿の反転状態および信号ＴＲＤＹ＿の反転状態を受ける。
信号ＴＩＭＥ＿ＯＵＴは、タイマ信号ＷＤ＿ＴＩＭＲ＿ＯＵＴ［１７：０］が２進値１０００００００００００００００までカウントするときにタイムアウト検出器４７４によりハイにアサートされる。信号ＴＩＭＥ＿ＯＵＴは、ＯＲゲート４７６のひとつの入力に与えられ、その出力はＡＮＤゲート４７８の入力に接続されている。ＡＮＤゲート４７８の他方の入力は、信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１の反転状態を受け（バス・ヒストリおよびバス・ベクトル獲得を再イネーブルするためにソフトウエアにより制御される）、そしてその出力はＤ型フリップ・フロップ４８８のＤ入力に接続されている。フリップ・フロップ４８８は信号ＰＣＬＫによりクロックされ、そしてＯＲゲート４７６の他方の入力にフィードバックされる、出力信号ＷＤ＿ＴＩＭＲ＿ＯＵＴを駆動する。フリップ・フロップ４８８は、電力良好信号ＳＹＮＣ＿ＰＯＷＥＲＯＫが否定される時に消去される。このため、ＡＳＲリセットは信号ＷＤ＿ＴＭＲ＿ＯＵＴを消去しない。
【０１６９】
ＨＡＮＧ＿ＰＥＮＤ信号は、Ｄ型フリップ・フロップ４８２によりハイにアサートされ、そのＤ入力は、ＡＮＤゲート４８４の出力に接続され、そして信号ＰＣＬＫによりクロックされる。ＡＮＤゲート４８４のひとつの入力は、ＯＲゲート４８６の出力に接続され、そして他方の入力は信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１の反転状態を受ける。ＯＲゲート４８６のひとつの入力は、信号ＨＡＮＧ＿ＰＥＮＤに接続され、そして他の入力はＡＮＤゲート４８８の出力に接続されている。ＡＮＤゲート４８８の出力は信号ＴＩＭＥ＿ＯＵＴおよびイネーブル信号ＨＡＮＧ＿ＲＣＯＶＲ＿ＥＮを受ける。このため、もしシステム・ソフトウエアがバス停止回復（ＨＡＮＧ＿ＲＣＯＶＲ＿ＥＮはハイである）をイネーブルするならば、そのときタイムアウト条件は信号ＨＡＮＧ＿ＰＥＮＤをハイにセットされるように惹起するであろう。信号ＨＡＮＧ＿ＰＥＮＤは、システム・ソフトウエアがアサートされるべき信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１を生じるか（バス３２上のＩ／Ｏサイクルを実行する）または信号ＳＹＮＣ＿ＰＯＷＥＲＯＫが否定される時に、消去される。ビットＨＡＮＧ＿ＰＥＮＤはＡＳＲリブートにより否定される。
イネーブル獲得信号ＥＮ＿ＣＡＰはＤ型フリップ・フロップ４９０により発生され、そのＤ入力はＡＮＤゲート４９２の出力を受ける。ＡＮＤゲート４９２はＯＲゲート４９４の出力に接続され、そしてその他の入力は信号ＣＬＲ＿ＥＮ＿ＣＡＰの反転状態に接続されている。ＯＲゲート４９４のひとつの入力は、信号ＥＮ＿ＣＡＰにルートバックされ、そして他の入力は信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１を受ける。フリップ・フロップ４９０は、信号ＰＣＬＫによりクロックされ、そして信号ＳＹＮＣ＿ＰＯＷＥＲＯＫがロウに否定されるときにハイにセットされる。信号ＥＮ＿ＣＡＰは、信号 ＷＲＴ＿ＥＮ＿ＣＡＰ＿１を経てソフトウエアによりハイにセットされるとすぐに、それはハイに維持される。信号ＣＬＲ＿ＥＮ＿ＣＡＰがアサートされて信号ＥＮ＿ＣＡＰを消去し（情報のディスエーブル捕獲）、それはタイムアウトが発生した時に生じ（ＴＩＭＥ＿ＯＵＴはハイ）、システム・エラーが発生し（ＳＥＲＲ＿はロウ）、パリティ・エラーが発生し（ＰＥＲＲ＿はロウ）、または違法バス・プロトコルが検出される（ＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴはハイ）。
信号ＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴはＤ型フリップ・フロップ４８３により発生され、そのＤ入力はＡＮＤゲート４８５の出力を受ける。ＡＮＤゲートのひとつの入力は、信号ＷＲＴ＿ＥＮ＿ＣＡＰ＿１の反転状態を受け、そして他の入力は、ＯＲゲート４８７の出力を受ける。ＯＲゲート４８７は信号ＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴとＳＥＴ＿ＩＬＬＥＧ＿ＰＲＯＴを受ける。信号ＳＥＴ＿ＩＬＬＥＧ＿ＰＲＯＴは、捕獲がイネーブルされる時（ＥＮ＿ＣＡＰがハイ）にアサートされ、状態マシーン４５６は活動状態になく（ＲＣＯＶＲ＿ＡＣＴＩＶＥはロウである）、バスはアイドルであり、信号ＤＥＶＳＥＬ＿、ＴＲＤＹ＿、またはＩＲＤＹ＿のいずれがロウにアサートされる。この条件は、バス・ヒストリとバス・ベクトル情報の捕獲をトリガーする、違法条件である。
【０１７０】
図５６を参照すると、バス・ヒストリ・レディー信号ＨＩＳＴ＿ＲＤＹは、信号ＰＣＬＫによりクロックされそして信号ＲＥＳＥＴにより消去される、Ｄ型フリップ・フロップ５０２により発生される。フリップ・フロップ５０２のＤ型入力は、ＯＲゲート５０４の出力に接続され、その入力は、信号ＴＩＭＥ＿ＯＵＴ、信号Ｍ＿ＡＢＯＲＴ（一つのＰＣＬＫにより遅延されたマスタ打切り信号）、ＡＮＤゲート５０６の出力、およびＡＮＤゲート５０８の出力を受ける。ＡＮＤゲート５０６は、もし再試行、切断Ｃまたはターゲット打切りサイクルが第２のバス３２に存在するならば、その出力をアサートする（信号ＦＲＡＭＥ＿、信号ＩＲＤＹ＿の反転状態、信号ＳＴＯＰ＿の反転状態、そして信号ＤＳＣ＿Ａ＿Ｂの反転状態が全て真である）。ＡＮＤゲート５０８は、完了データ転送が生じた時にその出力をアサートする（信号ＩＲＤＹ＿およびＴＲＤＹ＿は共にロウ）。このため、ウオッチドッグ・タイマ４５４がタイムアウトし、再試行、切断Ｃ、またはターゲット打切り条件が存在する時にバス・ヒストリＦＩＦＯにバス・ヒストリ情報はロードされ、マスタはサイクルを打切り、またはサイクルは継続して完了する。
有効データ指示信号ＶＡＬＩＤ＿ＤＡＴは、信号ＰＣＬＫによりクロックされそして信号ＲＥＳＥＴにより消去される、Ｄ型フリップ・フロップ５１０により発生される。フリップ・フロップ５１０のＤ入力はＮＯＲゲート５１２の出力に接続され、信号ＴＩＭＥ＿ＯＵＴ、マスタ打切り信号Ｍ＿ＡＢＯＲＴ、およびＡＮＤゲート５０６の出力を受ける。このため、データは、タイムアウトが検出されないならば有効であり、マスタ打切りサイクルが発せられ、または再試行、切断Ｃまたはターゲット打切りサイクルが存在する。
信号ＶＥＣＴ＿ＲＤＹは、信号ＰＣＬＫによりクロックされそして信号ＲＥＳＥＴにより消去される、Ｄ型フリップ・フロップ５１４により発生される。フリップ・フロップ５１４のＤ入力はＯＲゲート５１６の出力に接続され、信号ＴＩＭＥ＿ＯＵＴ、およびバス・ベクトルにおけるＰＣＩ制御信号のひとつが状態を変化したことを表示する信号ＣＨＡＮＧＥ＿ＳＴＡＴＥを受ける。このため、ＰＣＩバス３２上の制御信号が状態を変える時またはタイムアウトが生じる時に、状態ベクトル情報がベクトルＦＩＦＯにロードされる。
【０１７１】
図５７を参照すると、ヒストリ・データ（ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ３［３１：０］、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ２［３１：０］、ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ１［１５：０］）は、バス・ヒストリＦＩＦＯの第１のステージである、バス・ヒストリ・レジスタ５４０の入力に与えられる。バス・ヒストリ５０１は出力信号ＢＵＳ＿ＨＩＳＴ＿ＤＡＴＡ１［７９：０］を、出力信号ＢＵＳ＿ＨＩＳＴ＿ＦＩＦＯ０［７９：０］を与えるレジスタ５４２に与え（パイプラインの第２のステージ）る。両バス・ヒストリ・レジスタ５４０と５４２は信号ＰＣＬＫによりクロックされ、そして電力良好信号ＳＹＮＣ＿ＰＯＷＥＲＯＫがロウである時に消去される。
バス・ヒストリ・レジスタ５４０と５４２は、ＡＮＤゲート５１８の出力がハイに駆動されるときにロードされる。ＡＮＤゲート５１８はイネーブル捕獲ビットＥＮ＿ＣＡＰとバス・ヒストリ・レディー信号ＨＩＳＴ＿ＲＤＹおよびＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴ信号（ＯＲゲート５１９）のＯＲを受ける。出力信号ＢＵＳ＿ＨＩＳＴ＿ＦＩＦＯ０［７９：０］ＢＵＳ＿ＨＩＳＴ＿ＦＩＦＯ１［７９：０］は、マルチプレクサ５２０、５２２、そして５２４の０と１入力にそれぞれ与えられる。マルチプレクサ５２０、５２２、そして５２４はそれぞれ、読出しアドレス信号ＨＩＳＴ＿ＦＩＦＯ＿ＲＤ＿ＡＤＤＲにより選択される（バス・レジスタ５０２の出力を選択するためにロウで開始し、そして各逐次の読出しでトグルされる）。マルチプレクサ５２０、５２２そして５２４は、出力信号ＢＵＳ＿ＨＩＳＴ＿ＲＥＧ３［３１：０］、ＢＵＳ＿ＨＩＳＴ＿ＲＥＧ２［３１：０］、そしてＢＵＳ＿ＨＩＳＴ＿ＲＥＧ１「１５：０］をそれぞれ駆動する。
【０１７２】
バス・ベクトル・データ信号ＢＵＳ＿ＶＥＣＴ＿ＤＡＴＡ［２４：０］は、バス・ベクトル・レジスタ５４４の入力に与えられ、その出力はバス・ベクトル・レジスタ５４６の入力にルートされる。バス・ベクトル・レジスタ５４６の出力は、バス・ベクトル・レジスタ５４８の入力にルートされ、その出力はバス・ベクトル・レジスタ５５０の入力に順番にルートされる。バス・ベクトル・レジスタ０−３の各々は信号ＰＣＬＫによりクロックされ、そして信号ＳＹＮＣ＿ＰＯＷＥＲＯＫがロウである時に消去される。バス・ベクトル・レジスタは、ＡＮＤゲート５２１がハイにアサートされる時にロードされる。ＡＮＤゲート５２１は信号ＥＮ＿ＣＡＰおよび、信号ＶＥＣＴ＿ＲＤＹとＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴのＯＲ（ＯＲゲート５２３）を受ける。バス・ベクトル・レジスタ５５０、５４８、５４６および５４４は、出力信号ＢＵＳ＿ＶＥＣＴ＿ＦＩＦＯ０［２４：０］、ＢＵＳ＿ＶＥＣＴ＿ＦＩＦＯ１［２４：０］、ＢＵＳ＿ＶＥＣＴ＿ＦＩＦＯ２［２４：０］、そしてＢＵＳ＿ＶＥＣＴ＿ＦＩＦＯ３［２４：０］をそれぞれ生成し、その信号は、それぞれマルチプレクサ５２６の０、１、２、そして３入力に順番に与えられる。マルチプレクサ５２６にアドレス信号ＶＥＣＴ＿ＦＩＦＯ＿ＲＤ＿ＡＤＤＲ［１：０］（２進値００で開始しそして各継続した読出しで増分される）の状態に基づきその入力のひとつを選択させ、マルチプレクサ５２６の出力は、信号ＢＵＳ＿ＶＥＣＴ＿ＲＥＧ［３１：０］を与える。
この結果、バス・ヒストリとバス状態ベクトル情報は、信号ＨＩＳＴ＿ＲＤＹまたはＶＥＣＴ＿ＲＤＹにそれぞれ応答し、または違法バス・プロトコル状態が検出されるならば信号ＣＡＰ＿ＩＬＬＥＧ＿ＰＲＯＴのアサートに応答して、捕獲される。
【０１７３】
拡張カードのメモリ空間の予約
汎用されているコンピュータ・システムと相違して、コンピュータ・システム１０のパワーアップ時の初期の環境設定においては、ＣＰＵ１４が、スロット３６に関するメモリ空間及びＰＣＩバス番号を予約する。なお、該スロットは空（カード８０７が挿入されていない）またはパワーダウンされているものである。通常の場合と同様に、ＣＰＵ１４は、コンピュータ・システムが最初にパワーアップしたときに存在するＰＣＩバス（ＰＣＩバス２４、３２ａ−ｂ、及びスロット３６に挿入されかつ電力が供給されたカード８０７のＰＣＩバス）に、ＰＣＩバス番号を割り当てる。
ＰＣＩ−ＰＣＩブリッジ回路（ＰＣＩ−ＰＣＩブリッジ２６、４８）はそれぞれ、そのコンフィギュレーション・レジスタ空間１２５２（図６２）において、下位（従属）のバス番号レジスタ１２１８及び２次バス番号レジスタ１２２０を有する。下位のバス番号レジスタ１２１８は、ＰＣＩ−ＰＣＩブリッジ回路の下流の最も大きいＰＣＩバス番号である下位バス番号を含み、２次バス番号レジスタ１２２０は、ＰＣＩ−ＰＣＩブリッジ回路に一番近いの下流のＰＣＩバスの番号である２次ＰＣＩバス番号を含む。したがって、下位バス番号レジスタ１２１８及び２次バス番号レジスタ１２２０に格納された値は、ＰＣＩ−ＰＣＩブリッジ回路の下流におけるＰＣＩバス番号の範囲を規定する。
コンフィギュレーション・レジスタ空間１２５２はまた、１次バス番号レジスタ１２２２を含んでいる。該レジスタ１２２２は、ＰＣＩ−ＰＣＩブリッジ回路に一番近い上流のＰＣＩバスの番号を含んでいる。
システム・コントローラ／ホスト・ブリッジ回路１８もまた、下位バス番号レジスタ１２１８及び２次バス番号レジスタ１２２０を含んでいる。環境設定の後に、回路１８の下位バス番号レジスタ１２１８は、コンピュータ・システムに存在する最も大きいＰＣＩバス番号を含んでいる。回路１８の下位バス番号レジスタ１２２０は、ゼロのバス番号を含み、これは、回路１８の直後の下流のＰＣＩバス（ＰＣＩバス２４）が常にゼロのバス番号に割り当てられるからである。
公知のシステムと相違して、ＣＰＵ１４は、スロット３６の内の初期的にはパワーダウンされているかまたは空の１つのスロットが、１つ又は複数の別のＰＣＩバス（初期的にパワダウンされているスロット３６に挿入されたカード８０７に存在する）を、コンピュータ・システム１０がパワーアップされて環境設定された後に、コンピュータ・システム１０に導かれることを、了解する。したがって、初期の環境設定の間、ＣＰＵ１４はメモリ空間、Ｉ／Ｏ空間、及び、パワーダウンまたは空のスロット３６に対するＰＣＩバス番号の所定の番号（１または３）を予約する。
このようにして、ＰＣＩ−ＰＣＩブリッジ回路は、最も直前にパワーアップされたカード８０７を収容するために再度環境設定をする必要がない。直前にパワーアップされたカード８０７のＰＣＩ−ＰＣＩブリッジ回路のみが、環境設定される必要があるだけである。コンピュータ・システム１０の他のブリッジ回路は、何ら変更を要しない。
リソース予約プロセスの一部分として、ＲＯＭ２３に記憶されかつメモリ２０に書き込まれ（さらに書き込み保護された）Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（ＢＩＯＳ）は、スロット３６に対して予約されているリソース範囲を特定する表を構築する、この表は、バス番号、メモリ、及びシステム１０に新規に追加されるＰＣＩデバイスを環境設定するために用いられるＩ／Ｏリソース範囲を含んでいる。オペレーティング・システムは、この表を用いてんどのリソースが予約されているか、新規のＰＣＩデバイスを環境設定するためにどのリソースが使用可能かを決定する。
【０１７４】
図５８に示されているように、ＢＵＳ ＡＳＳＩＧＮと称される再起的なＰＣＩ環境設定ルーチンにおいて、ＣＰＵＣ１４は、ＰＣＩバス番号を割り当て、それに応じて、ＰＣＩ−ＰＣＩブリッジ回路のコンフィギュレーション・レジスタ１２５２をプログラムする。これは、ＣＰＵ１４が、ＰＣＩデバイスに関するＰＣＩバスを一度に１つ走査することによって、実行される。ＢＵＳ ＡＳＳＩＧＮルーチンは、ＲＯＭ２３に記憶されたＢＩＯＳの部分であり、パワアアプ語の初期の環境設定に用いられる。
ＣＰＵ１４はまずブロック１０００において、サーチ・パラメータＰＣＩ ＢＵＳの値をサーチ・パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳの値に設定し、かつサーチ・パラメータＦＣＮ及びＤＥＶを初期化する。パラメータＰＣＩ ＢＵＳは、ＣＰＵ１４によって現時点で走査されているＰＣＩバスのバス番号を表しており、またＢＵＳ ＡＳＳＩＧＮルーチンがＣＰＵ１４によって最初に実行された場合には、パラメータＰＣＩ ＢＵＳは０のバス番号を示すことになる。パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳは、ＣＰＵによって割り当てることが可能な、次のＰＣＩバス番号を示し、ＢＵＳ ＡＳＳＩＧＮルーチンがＣＰＵ１４によって最初に実行された時には、パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳは０のバス番号となる。パラメータＦＣＮ及びＤＥＶはそれぞれ、ＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳ１４によって現在走査されている、現在のＰＣＩ機能及びＰＣＩデバイスを示す。
【０１７５】
ＣＰＵ１４は、ブロック１００１において、パラメータＰＣＩ ＢＵＳがバス番号０であるかどうかを判定し、そうであれば、ＣＰＵ１４は、ブロック１００２において、システム・コントローラ／ホスト・ブリッジ回路１８の２次バス番号レジスタ１２２０をゼロにセットする。そしてＣＰＵ１４はブロック１００４において、パラメータＰＣＩ ＢＵＳによって示されるＰＣＩバス上のパワーダウンされた又は空の、次のＰＣＩ−ＰＣＩブロック回路またはスロット３６を見つけ出す。
次に見つけ出されたＰＣＩデバイスがＰＣＩ−ＰＣＩブロック回路であるか、または存在していないか（パワーダウンされているか又は空のスロット）を判定するために、ＣＰＵ１４は、ＰＣＩデバイス毎のコンフィギュレーション空間に位置する１ワード・ベンダーＩＤレジスタから、値を読み出す。値”ｈＦＦＦＦ”（”ｈ”は、ヘキサデシマル表現であることを示す）が予約され、かついずれのベンダーによっても使用されない。ベンダーＩＤレジスタからの読み出しにより、”ｈＦＦＦＦ”が読み出された場合には、これは、ＰＣＩデバイスが存在しないことを表す。
ブロック１００６において、パラメータＰＣＩ ＢＵＳによって示されたＰＣＩバス上にパワーダウンまたは空のＰＣＩ−ＰＣＩブロック回路又はスロット３６が存在しないことを、ＣＰＵ１４が判定すると、ＢＵＳ ＡＳＳＩＧＮルーチンノ最初に戻る。それ以外の場合は、ＣＰＵ１４は、他のＰＣＩ−ＰＣＩブリッジ回路が存在するかを判定し、存在しない場合には、ＣＰＵ１４は、ブロック１０１０において、パワーダウンまたは空のスロット３６が見いだされた時に、パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳをを増分し、そして、パワーダウン又は空の、次のＰＣＩ−ＰＣＩブリッジ回路又はスロット３６を検出する。このようにすて、パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳを増分することによって、ＣＰＵ１４は、パワーダウン又は空のスロット３６に対するバス番号を予約することができる。なお、このようなスロット３６に対して、１つ又は複数のバス番号を予約してもよい。
ＣＰＵ１４がＰＣＩ−ＰＣＩブリッジ回路を見いだした場合は、ＣＰＵ１４は、ブロック１０１２において、該ＰＣＩ−ＰＣＩブリッジ回路の１次バス場合はをパラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳに設定する。そしてブロック１０１４において、ＣＰＵ１４は、パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳを増分し、ＰＣＩ−ＰＣＩブリッジ回路の２次バス番号を、該パラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳによって支持された新しいバス番号に設定する。
【０１７６】
次にブロック１０１８において、ＣＰＵ１４は、見いだしたＰＣＩ−ＰＣＩブリッジ回路の下位バス番号を最大のＰＣＩバス番号にせっていする。これは、下位バス番号レジスタ１２１８に書き込むことによって行われる。下位バス番号レジスタ１２１８に対する値は一時的なものであり、したがって、パワーダウンまたは空の、下流の別のＰＣＩ−ＰＣＩブリッジ回路又はスロット３６を、ＣＰＵ１４が見つけ出してプログラムすることが可能である。
ブロック１０２２において、パラメータＰＣＩ ＢＵＳ、ＤＥＶ、及びＦＣＮを保存し、かつＢＵＳ ＡＳＳＩＧＮルーチンを再起的に呼び出すことによって、ＣＰＵ１４はパワーダウンまたは空のＰＣＩ−ＰＣＩブリッジ回路又はスロット３６を捜し出す。ＣＰＵ１４は次に、ブロック１０２４において、パラメータＰＣＩ ＢＵＳ、ＤＥＶ、ＦＣＮの値を記憶し、そして、ＢＵＳ ＡＳＳＩＧＮルーチンの最新のコールを、ＣＰＵ１４によって割り当てられた次のＰＣＩバス番号のパラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳを更新するために、リターンする。
ＣＰＵ１４は次に、ブロック１０２６において、見いだされたＰＣＩ−ＰＣＩブリッジ回路の下位バス番号を更新するが、これは、該下位バス番号をパラメータＣＵＲＲＥＮＴ ＰＣＩ ＢＵＳに設定することによって行われる。このようにして、見いだされたＰＣＩ−ＰＣＩブリッジ回路へのＰＣＩバス番号の割り当て、下流におけるパワーダウンまたは空の別のＰＣＩ−ＰＣＩブリッジ回路またはスロット３６へのＰＣＩバス番号の割り当てが完了する。ＣＰＵ１４は次にブロック１００４において、パワーダウンＰＣＩ ＢＵＳによって示されたＰＣＩバス上のパワーダウンまたは空のＰＣＩ−ＰＣＩブリッジ回路又はスロット３６を見いだす。
【０１７７】
図５９に示されているように、ＰＣＩバス番号が割り当てられた後、ＣＰＵ１４は、ＭＥＭ ＡＬＬＯＣと称するメモリ空間割り当てルーチンを実行して、パワーダウン又は空のＰＣＩファンクション（ｆｕｎｃｔｉｏｎ）又はスロット３６に対してメモリ空間を割り当てる。まずＣＰＵ１４は、ブロック１０２８において、パワーダウン又は空のＰＣＩファンクション又はスロット３６を見つけるときにＣＰＵ１４を補助したパラメータをサーチする。
次にブロック１０３０において、ＣＰＵ１４は、パワーダウン又は空のＰＣＩファンクション又はスロット３６を見いだす。ブロック１０３２において、パワーダウン又は空のＰＣＩファンクション及びスロット３６がすべてメモリ空間に割り当てられていると判断した場合は、ＣＰＵ１４は、ＭＥＭ ＡＬＬＯＣルーチンから戻る。そうでない場合は、ＣＰＵ１４はブロック１０３２において、ＰＣＩファンクションが見つけられたかを判定する。
見つけられた場合には、ＣＰＵ１４はブロック１０３８において、メモリ・リソースをＰＣＩファンクションによって指定されたように割り当てる。見つけられなかった場合は、パワーダウン又は空のスロット３６の１つが見いだされたことであり、ＣＰＵ１４はブロック１０３６において、スロット３６に対する欠陥メモリ・サイズ及びメモリ・アラインメント（配置）を割り当てる。該欠陥メモリ・サイズは、コンピュータ・システム１０のパワーアップ前に予め決定されたサイズ、または、コンピュータ・システム１０によって要求されたメモリ・リソースの決定後に定められたサイズのいずれかである。
メモリ空間を割り当てるとき、ＣＰＵ１４は、見いだされたＰＣＩファンクションの上流にあるＰＣＩ−ＰＣＩブリッジ回路のレジスタである、メモリ基準レジスタ１２１２及びメモリ制限レジスタ１２１４をプログラムする。ＣＰＵ１４はまた、対応するＰＣＩデバイスの基準アドレスレジスタをもプログラムする。そしてＣＰＵ１４は、ブロック１０３０において、パワーダウンまたは空である次のＰＣＩファンクションまたはスロット３６を捜し出す。
【０１７８】
図６０に示されているように、ＰＣＩバスが割り当てられた後に、ＣＰＵ１４は、Ｉ／Ｏ ＡＬＬＯＣと称するＩ／Ｏ空間割り当てルーチンを実行し、それにより、空のＰＣＩファンクションまたはスロット３６に対してＩ／Ｏ空間を割り当てる。このルーチンにおいては、ＣＰＵ１４はまず、ブロック１０４０において、パワーダウンまたは空のＰＣＩファンクションまたはスロット３６を見いだすときに用いたパラメータを捜し出す。
次にＣＰＵ１４は、ブロック１０４２において、パワーダウンまたは空である次のＰＣＩファンクションまたはスロット３６を捜し出す。ブロック１０４４において、パワーダウンまたは空のＰＣＩファンクション及びスロット３６がすべてＩ／Ｏ空間に割り当てられていると判断した場合は、ＣＰＵ１４はＩ／Ｏ ＡＬＬＯＣルーチンから抜け出す。そうでない場合は、ブロック１０４４において、ＰＣＩファンクションが見いだされたどうかを判定する。見いだされた場合は、ＣＰＵ１４は、該ＰＣＩファンクションによって示されるＩ／Ｏリソースを、ブロック１０５０において割り当てる。見いだされなかった場合は、パワーダウンまたは空のスロット３６が見いだされたことであり、ＣＰＵ１４は、ブロック１０４８において、該スロット３６に対して欠陥Ｉ／Ｏサイズ及びＩ／Ｏアラインメントを割り当てる。該欠陥Ｉ／Ｏサイズは、コンピュータ・システム１０のパワーアップ前に予め決定されたサイズ、又はコンピュータ・システム１０によって要求されたＩ／Ｏリソースの決定の後に定められたサイズのいずれかである。
Ｉ／Ｏ空間の割り当てにおいては、ＣＰＵ１４は、ＰＣＩファンクション又はスロット３６の上流にあるＰＣＩ−ＰＣＩブリッジ回路のレジスタである、Ｉ／Ｏ基準レジスタ１２０８及びＩ／Ｏ制限レジスタ１２１０をプログラムする。ＣＰＵ１４はまた、対応するＰＣＩデバイスの基準アドレス・レジスタをもプログラムする。そしてＣＰＵ１４は、ブロック１０４２において、パワーダウン又は空である次ののＰＣＩファンクション又はスロット３６を探す。
【０１７９】
図６１に示されているように、初期の環境設定がなされた後、レバー８０２の１つがオープン（解放）又はクローズ（閉鎖）されたことを示す割り込みが発生すると、ＣＰＵ１４は、ＣＡＲＤ ＩＮＴと称する割り込みサービス・ルーチンを実行する。まずブロック１０５２において、ＣＰＵ１４は割り込みレジスタ８００の内容を読みだして、レバー８０２がオープンされたのかクローズされたのかを判定する。割り込みを生じたレバー８０２がオープンされた場合は、ＣＰＵ１４はこのＣＡＲＤ ＩＮＴルーチンを抜け出る。
クローズされた場合は、ＣＰＵ１４は、スロット・イネーブル・レジスタ８１７にブロック１０５４において書き込み、そしてスロット３６及び該スロット３６を挿入したカード８０７のパワーアップを初期化するために、ＳＯビットを設定する。そして、ＣＰＵ１４は、カード８０７のパワーアップを待機する（不図示）。ブロック１０５５において、ＣＰＵ１４は、カード８０７のＰＣＩバスにアクセスする（存在する場合にのみ）。ブロック１０５６において、その時にパワーアップされたカード８０７がＰＣＩバス（及びＰＣＩ−ＰＣＩブリッジ回路）を備えているかどうかを判定する。備えている場合は、ブリッジ１０５７において、カード８０７が挿入されてパワーアップされたスロット３６に対して予約されている、１次、２次及び従属（下位）バス番号を決定する。続いて、ブリッジ１０５８において、パワーアップされたカード８０７のＰＣＩ−ＰＣＩブリッジ回路を環境設定する。
そして、ブロック１０６０において、スロット３６に対して予約されたＩ／Ｏ位置、Ｉ／Ｏサイズ、及びメモリ空間を決定する。ＣＰＵ１４は次に、ブロック１０６２において、パワーアップされたカード８０７のＰＣＩコンフィギュレーション・ヘッダ空間における基準アドレス・レジスタに、書き込みを行う。次にブロック１０６４において、カード８０７のコンフィギュレーション空間における割り込みピン・レジスタを読みだして、カード８０７が割り込み要求を有しているかどうかを判定する。有している場合は、ブロック１０６８において、割り当てられたＩＲＱ番号を、カード８０７のコンフィギュレーション空間における割り込みライン・レジスタに書き込む。
ＣＰＵ１４は次に、ブロック１０７０において、カード８０７のコンフィギュレーション空間に位置するカードのコマンド・レジスタをイネーブルし、カード８０７が、ＰＣＩバス３２上のメモリ・アクセス及びＩ／Ｏアクセスに対処できるようにする。次いでブロック１０７２において、割り込みレジスタ８００に書き込みを行って割り込み要求をクリアし、かつブロック１０７４において、カード８０７に対してソフトウエア・デバイス・ドライバをロードする。
【０１８０】
ブリッジ・コンフィギュレーション
機能的に、ブリッジ・チップ２６と４８は、ＰＣＩバス２４と３２の間のＰＣＩ−ＰＣＩブリッジを形成する。しかし、各ブリッジ・チップは、独立して構成されなければならないコンフィギュレーション空間を含む。ひとつの解決は、ブリッジを形成する独立デバイス２つのブリッジを扱うことであるが、それはＢＩＯＳコンフィギュレーション・ルーチンの修正を要求するであろう。他の解決は、コンフィギュレーション・ルーチンが、ＰＣＩバス２４とケーブル２８の間のＰＣＩ−ＰＣＩブリッジとしてアップストリーム・ブリッジ・チップ２６を構成することができるようにバスとしてケーブル２８を定義することである。この第２の解決のひとつの利点は、事実、２つのブリッジ・チップが実際にひとつのＰＣＩ−ＰＣＩブリッジを形成する時に、標準ＰＣＩコンフィギュレーション・サイクルがあたかも２つのＰＣＩ−ＰＣＩブリッジであるかのようにブリッジ・チップ２６と４８を構成するために実行されることができることである。
ＰＣＩバス上に２つのタイプのコンフィギュレーション・トランザクションがある：タイプ０とタイプ１。タイプ０コンフィギュレーション・サイクルは、該コンフィギュレーション・サイクルが発生されるＰＣＩバス上のデバイスに対して意図されており、それに対しタイプ１コンフィギュレーション・サイクルはブリッジを経てアクセスされる第２のＰＣＩバス上のデバイスに対してターゲットにされている。図６４は、タイプ０とタイプ１コンフィギュレーション・サイクルのアクセス・フォーマットを例示している。タイプ０コンフィギュレーション・コマンドは、コンフィギュレーション・サイクル中にＰＣＩアドレス・ビットＡＤ［１：０］を００に設定することにより特定化される。タイプ０コンフィギュレーション・サイクルはＰＣＩ−ＰＣＩブリッジを渡って前進されないが、タイプ０コンフィギュレーション・トランザクションが発生されなかったバス上にローカルを留める。
タイプ１コンフィギュレーション・コマンドはアドレス・ビットＡＤ［１：０］を２進値０１に設定することにより特定化される。タイプ１コンフィギュレーション・コマンドはＰＣＩ−ＰＣＩブリッジによりＰＣＩバス階層において何らかのレベルへと進められる。結局、ＰＣＩ−ＰＣＩブリッジはタイプ１コマンドをタイプ０コマンドに変換してＰＣＩ−ＰＣＩブリッジの第２のインターフェースに接続されたデバイスを構成する。
ブリッジのコンフィギュレーション・レジスタ１０５または１２５に記憶されたコンフィギュレーション・パラメータは、１次（主要）ＰＣＩインターフェース（１次バス番号）と２次ＰＣＩインターフェース（２次バス番号）と、最高の番号を付されたブリッジへのＰＣＩバス従属を表示する従属バス番号を識別する。バス番号は、ＰＣＩコンフィギュレーション・ルーチンＢＵＳ＿ＡＳＳＩＧＮ（図５８）によりセットされる。例えば、アップストリームのブリッジ・チップ２６において、１次バス番号はバス２４のバス番号であり、２次バス番号はケーブル２８の番号であり、そして従属バス番号は２次ＰＣＩバス３２の番号または存在するならばＰＣＩバスの番号である。ダウンストリームのブリッジ・チップ４８において、１次バス番号はケーブル・バス２８の番号であり、２次バス番号はＰＣＩバス３２の番号であり、そして従属バス番号はＰＣＩバス階層においてより深層におかれたＰＣＩバスの番号である。
【０１８１】
図６６Ａを参照すると、コンフィギュレーション・サイクルの検出は、それぞれアップストリームのブリッジ・チップ２６またはダウンストリームのブリッジ・チップ４８においてＰＣＩターゲット・ブロック１０３または１２１において論理により取り扱われる。アップストリーム・バス２４上に検出されたタイプ０のコンフィギュレーション・サイクルはＡＮＤゲート２７６により発生された信号ＴＹＰ０＿ＣＦＧ＿ＵＳをアサートすることにより指示される。ＡＮＤゲート２７６は信号ＵＰＳＴＲＥＡＭ＿ＣＨＩＰ、ＩＤＳＥＬ（コンフィギュレーション・トランザクションの間にチップ選択）、ＣＦＧＣＭＬ（検出されたコンフィギュレーション・サイクル）およびＡＤＤＲ００（ビット１と０は共に零）を受信する。ダウンストリーム・ブリッジ・チップ４８により検出されたタイプ０コンフィギュレーション・サイクルはＡＮＤゲート２７８により発生された信号ＴＹＰ０＿ＣＦＧ＿ＣＹＣ＿ＤＳにより指示され、該ＡＮＤゲート２７８は信号Ｓ１＿ＢＬ＿ＩＤＳＥＬ（ダウンストリーム・ブリッジ・チップ４８用のＩＤＳＥＬ信号）、信号ＣＦＧＣＭＤ、信号ＡＤＤＲ００、信号ＭＳＴＲ＿ＡＣＴＩＶＥ（ブリッジ・チップ４８は第２のＰＣＩバス３２上のマスタであることを指示している）、そして信号ＵＰＳＴＲＥＡＭ＿ＣＨＩＰの反転状態を受信する。
【０１８２】
アップストリーム・ブリッジ・チップ２６におけるＰＣＩターゲット１０３によるタイプ１コンフィギュレーション・サイクルの検出は、ＡＮＤゲート２８０から信号ＴＹＰ１＿ＣＦＧ＿ＣＹＣ＿ＵＳをアサートすることにより指示され、ＡＮＤゲート２８０は信号ＣＦＧＣＭＤ、ＡＤＤＲ０１（それぞれ、ビット１と０はロウとハイ）、そしてＵＰＳＴＲＥＡＭ＿ＣＨＩＰを受信する。ダウンストリーム・バス３２上のタイプ１コンフィギュレーション・サイクルの検出はＡＮＤゲート２８２から信号ＴＹＰ１＿ＣＦＧ＿ＣＹＣ＿ＵＳをアサートすることにより指示され、ＡＮＤゲートは信号ＣＦＧＣＭＤ、ＡＤＤＲ０１、そして信号ＵＰＳＴＲＥＡＭ＿ＣＨＩＰの反転状態を受信する。
タイプ０のトランザクションを受信するブリッジ・チップは、コンフィギュレーション・トランザクション・アドレスにおいてレジスタ番号フィールドを使用し、適切なコンフィギュレーション・レジスタをアクセスする。機能番号フィールド２５２は、コンフィギュレーション・トランザクション中の多重機能デバイスにおいて実行されるべき８つの機能のひとつを特定する。ＰＣＩデバイスは多重機能でありそしてハードデスク・ドライブ・コントローラ、メモリ・コントローラ、ブリッジ等のような機能を有する。
ブリッジ・チップ２６がアップストリーム・バス２６上にタイプ１コンフィギュレーション・トランザクションを見つける時に、いずれかのダウンストリームにトランザクションを送り、トランザクションをタイプ０トランザクションに翻訳し、該トランザクションを特定のトランザクションに変換するか、または該トランザクションを無視することができる（コンフィギュレーション・レジスタ１０５または１２５に記憶されたバス番号パラメータに基づいて）。もしトランザクションが送出されるならば、それは宛先ブリッジ・チップのＰＣＩマスタに至り、タイプ１トランザクションを対応する適当なトランザクションに変換する。もしブリッジ・チップがトランザクション自体を取扱うならば、そのときそれはＰＣＩバス上に信号ＤＥＶＳＥＬをアサートすることにより応答し、そして通常遅延トランザクションとしてそのトランザクションを取扱う。
【０１８３】
タイプ１トランザクションにおいて、バス番号フィールド２６０はＰＣＩ階層において唯一のＰＣＩバスを選択する。もし信号ＰＡＳＳ＿ＴＹＰ１＿ＤＳがＡＮＤゲート２８４によりアサートされるならば、ＰＣＩターゲット・ブロック１０３は、アップストリーム・チップ２６からダウンストリーム・ブリッジ・チップ４８へ下ってタイプ１コンフィギュレーション・サイクルを渡す。ＡＮＤゲート２８４は、信号ＴＹＰ１＿ＣＦＧ＿ＣＹＣ＿ＵＳと信号ＩＮ＿ＲＡＮＧＥを受信する（バス番号フィールド２６０は記憶された第２のバス番号と等しいかそれより大きく、記憶された従属バス番号に等しいかそれよりも小さい）。ＡＮＤゲート２８４の他方の入力はＯＲゲート２８６の出力に接続され、該ＯＲゲート２８６はＡＮＤゲート２８８の出力に接続されたひとつの入力と、信号ＳＥＣ＿ＢＵＳ＿ＭＡＴＣＨの反転状態を受信する他方の入力を有する。このため、タイプ１サイクルが検出されるならば、信号ＩＮ＿ＲＡＮＧＥがアサートされそしてバス番号フィールド２６０は記憶された第２のバス番号と一致せず、信号ＰＡＳＳ＿ＴＹＰ１＿ＤＳがアサートされる。バス・フィールド２６０が記憶された第２のバス番号と一致しないならば、そのときダウンストリーム・バスまたはその下のデバイスがアドレスされる。信号ＳＥＣ＿ＢＵＳ＿ＭＡＴＣＨがハイにアサートされるならばＡＮＤゲート２８８がその出力をハイにアサートし、そしてデバイス番号フィールド２５８は、タイプ１のコンフィギュレーション・サイクルのターゲットはダウンストリーム・ブリッジ・チップ４８のコンフィギュレーション空間であることを指示する。もしこれが真であるならば、タイプ１コンフィギュレーション・トランザクションは、タイプ０コンフィギュレーション・トランザクションへの変換のためにダウンストリーム・ブリッジ・チップ４８に向けてケーブル４８の下方へ送られる。ダウンストリーム・ブリッジ・チップ４８におけるＰＣＩターゲット１２１はトランザクションに応答し、そしてタイプ０トランザクションに従ってダウンストリーム・ブリッジ・コンフィギュレーション・レジスタ１２５を読出しそして書込む。ダウンストリーム・チップの制御ピンは駆動され、そして読出しおよび書込みデータは、あたかもタイプ０トランザクションがダウンストリーム上で実行しているようにダウンストリームＰＣＩバス３２上に見える。しかし、ダウンストリーム・バス３２上の各ＩＤＳＥＬは、デバイスが実際にタイプ０トランザクションに応答しないようにブロックされている。
【０１８４】
記憶された２次バス番号（ケーブル・バス２８）に等しいバス番号フィールドを有するがデバイス０をアドレスしない（ケーブル・バス２８上の他のデバイス用にサーチする）、アップストリーム・ブリッジ・チップ２６におけるＰＣＩターゲット・ブロック１０３がそのアップストリーム・バス２４上のタイプ１のコンフィギュレーション・トランザクションを検出するならば、そのとき、ターゲット・ブロック１０３は１次バス２６上のトランザクションを無視する。
２次バス番号と従属バス番号（ＩＮ＿ＲＡＮＧＥ）の範囲外のバス番号フィールド２６０を有する、２次ＰＣＩバス３２上のタイプ１コンフィギュレーション書込みトランザクション（ＷＲ＿ｈｉｇｈ）をＰＣＩタイプ１２１が検出するならば、そして、デバイス番号２５８、機能番号２５６、レジスタ番号２５４が特殊サイクル（ＳＰ＿ＭＡＴＣＨ  ｈｉｇｈ）を指示するならば、そのとき信号ＰＡＳＳ＿ＴＹＰ１＿ＵＳがＡＮＤゲート２９０によりアサートされる。ＡＮＤゲート２９０は、信号ＴＹＰ１＿ＣＦＧ＿ＣＹＣ＿ＵＳ、信号ＳＰ＿ＭＡＴＣＨ、書込み／読出しストローブＷＲ＿および信号ＩＮ＿ＲＡＮＧＥの反転状態を受信する。アップストリーム・ブリッジ・チップ２６におけるＰＣＩマスタ１０１がこのようなサイクルを受信する時に、１次ＰＣＩバス２４上の特殊サイクルを実行する。
コンフィギュレーション・トランザクションは一定の条件のもとでブリッジ・チップにより無視される。アップストリーム・ブリッジ・チップ２６におけるターゲット・ブロック１０３がＰＣＩバス２４（そのアップストリーム・バス）上のタイプ１コンフィギュレーション・トランザクションを検出するならば、そしてバス番号フィールド２６０が２次バス番号より小さいかまたはブリッジ・チップのコンフィギュレーション空間に記憶された従属バス番号よりも大きいならば、そのときターゲット・ブロック１０３はトランザクションを無視する。
ダウンストリーム・ブリッジ・チップ４８におけるターゲット・ブロック１２１が２次ＰＣＩバス３２（そのダウンストリーム）上のタイプ１コンフィギュレーション・トランザクションを検出し、そしてバス番号フィールド２６０が２次バス番号に等しいか大きくそしてブリッジ・チップのコンフィギュレーション空間において記憶された従属バス番号に等しいか小さいならば、そのときターゲット・ブロック１２１はトランザクションを無視する。加えて、もしタイプ１コマンドがタイプ１コマンドにおいて特定化されたバス番号にかかわらず特殊サイクルト・ランザクションへの変換を特定しないならば、アップストリームを進むタイプ１のコンフィギュレーション・コマンドは無視される。
【０１８５】
図６６Ｂを参照する。ＰＣＩマスタ１０１または１２３は、ケーブル２８により転送されたコンフィギュレーション・サイクルを監視する。もし、ダウンストリーム・ブリッジ・チップ４８におけるＰＣＩマスタ１２３がアップストリーム・ブリッジ・チップ２６からのタイプ１のコンフィギュレーション・トランザクションを検出するならば、ブリッジ・チップ４８のコンフィギュレーション空間に記憶された１次バス番号および２次バス番号とバス番号フィールド２６０とを比較する。もし、バス番号フィールド２６０が記憶された１次バス番号（即ち、ケーブル２８）または記憶された２次バス番号（ダウンストリーム・バス３２に直接接続されたデバイスをアドレス指定する）のいずれかが一致するならば、ダウンストリーム・ブリッジ・チップ４８は，バス上のコンフィギュレーション・トランザクションを渡すように、トランザクションをタイプ０コンフィギュレーション（ＡＤ［１：０］＝００）に変換する。タイプ０トランザクションは、ＰＣＩマスタ・ブロック１２３によりＰＣＩバス３２上で実行される。
次のものは、タイプ１コンフィギュレーション・トランザクションにおいてフィールドについて実行されるトランザクションである。タイプ１コンフィギュレーション・トランザクションにおけるデバイス番号フィールド２５８はＰＣＩマスタ１２３によりデコードされ、図６５のテーブルに定義されるように、２次バス３２上に変換されたタイプ０トランザクションにおける唯一のアドレスを発生する。デバイス番号フィールド２５８からデコードされた第２のアドレス・ビットＡＤ［３１：１６］はＰＣＩマスタ１２３により使用され、２次ＰＣＩバス３２上にデバイス用の適切なチップ選択信号ＩＤＳＥＬを発生する。アドレス・ビットＡＤ［１５］は１に等しく、そのときブリッジ・チップ４８はアサートされないローに全てのビットＡＤ［３１：１６］を維持する（ＩＤＳＥＬはアサートされない）。レジスタ番号フィールド２５４とタイプ１のコンフィギュレーション・コマンドの機能（ファンクション）番号フィールド２５６はタイプ０のコンフィギュレーション・コマンドに修正されずに渡される。機能番号フィールド２５６は、８つの機能のひとつを選択し、そしてレジスタ番号フィールド２５４は、選択された機能のコンフィギュレーション・レジスタ空間におけるダブル・ワードを選択する。
ダウンストリーム・ブリッジ・チップ４８に対してターゲットされたタイプ１のコンフィギュレーション・トランザクションのために、ブリッジ・チップ４８は、あたかもダウンストリーム・バス３２上のデバイスをアドレス指定するように、タイプ１トランザクションをタイプ０トランザクションに変換する。しかしＡＤ［３１：１６］ピンは、第２のＰＣＩバス・デバイスがＩＤＳＥＬを受信しないように零にセットされる。ＰＣＩマスタ・ロジック１２３はＡＮＤゲート２６２により駆動される信号ＴＹＰ１＿ＴＯ＿ＩＮＴＯをアサートすることによりこれを検出する。ＡＮＤゲート２６２は、信号ＣＦＧ＿ＣＭＤ（コンフィギュレーション・コマンド・サイクルを指示する）、ＯＲゲート２６４の出力、信号ＵＰＳＴＲＥＡＭ＿ＣＨＩＰ（タイプ１からタイプ０への変換はアップストリーム・ブリッジ・チップ２６においてディスエーブルされる）の反転状態を受信する。もし信号ＰＲＩＭ＿ＢＵＳ＿ＭＡＴＣＨがアサートされるならば（バス番号フィールド２６０が記憶された１次バス番号に一致する）、またはもし記憶された主要バス番号ＣＦＧ２Ｐ＿ＰＲＩＭ＿ＢＵＳ＿ＮＵＭ［７：０］が零に等しいならば（ブリッジ・チップ４８のコンフィギュレーション空間において１次バス番号がまだシステムＢＩＯＳにより構成されていなく、そして現在のタイプ１コンフィギュレーション・サイクルが内部コンフィギュレーション空間に進みブリッジ・チップ４８の１次バス番号をプログラムすることを指示する）、ＯＲゲート２６４は、その出力をハイにアサートする。
信号ＴＹＰ１＿ＴＯ＿ＥＸＴＯがＡＮＤゲート２６６によりアサートされ、そして記憶された２次のバス番号への一致に応答する。ＡＮＤゲート２６６の入力は信号ＣＦＧ＿ＣＭＤ、信号ＳＥＣ＿ＢＵＳ＿ＭＡＴＣＨ、信号ＵＰＳＴＲＥＡＭ＿ＣＨＩＰの反転状態、および信号ＳＰ＿ＭＡＴＣＨの反転状態を受信する（特殊サイクルではない）。信号ＴＹＰ１＿ＴＯ＿ＥＸＴＯは、変換されたタイプ０コンフィギュレーション・トランザクションが第２のＰＣＩバス３２にターゲットされていることを指示する。
【０１８７】
信号ＴＹＰ１＿ＴＯ＿ＩＮＴＯは４：１マルチプレクサ２７４の１入力に与えられる。その２入力はローに固定され、そしてマルチプレクサ２７４の０入力と３入力はＤ型フリップ・フロップ２７０から信号ＬＴＹＰ１＿ＴＯ＿ＩＮＴＯを受ける。マルチプレクサ２７４の選択入力Ｓ１は、信号ＣＭＤ＿ＬＡＴＣＨ（ＰＣＩバス３２上の新しいサイクル用にアサートされたＦＲＡＭＥ＿）を受信し、そして選択入力Ｓ０は信号Ｐ２Ｑ＿ＳＴＡＲＴ＿ＰＵＬＳＥ（ハイである時にアドレスがＰＣＩバス３２に送られたことを指示する）を受信する。マルチプレクサ２７４の出力は、信号ＰＣＬＫによりクロックされそして信号ＲＥＳＥＴにより消去される、フリップ・フロップ２７０のＤ入力に接続されている。第２のバス・デバイスへのＩＤＳＥＬ信号は、その入力に信号Ｑ２Ｐ＿ＡＤ［１５］（図６のテーブル１に従って必要とされる非変換）、ＴＹＰ１＿ＴＯ＿ＩＮＴＯそしてＬＴＹＰ１＿ＴＯ＿ＩＮＴＯを受ける。信号ＬＴＹＰ１＿ＴＯ＿ＩＮＴＯは信号ＢＬＯＣＫ＿ＩＤＳＥＬのアサーション（断定）を拡張する。
バス番号フィールド２６０が記憶された２次バス番号より大きくそして記憶された従属バス番号より小さい等しい場合の、アップストリーム・ブリッジ・チップ２６からのタイプ１コンフィギュレーション・トランザクションをダウンストリーム・ブリッジ・チップ４８におけるＰＣＩマスタ１２３が受信するならば、そのときＰＣＩマスタ・ブロック１２３はタイプ１のトランザクションを第２のＰＣＩバス３２へ変化されずに進める。第２のＰＣＩバス３２上の他のデバイス、例えば他のブリッジ・デバイス３２３（図２６Ｂ）はタイプ１のコンフィギュレーション・トランザクションを受信しそしてその第２のバス（ＰＣＩバス３２５）へ進めるであろう。
ＰＣＩマスタがアップストリーム・ブリッジ２６からタイプ１コンフィギュレーション書込みトランザクションを検出しそしてバス・フィールド２６０が記憶された第２のバス番号と一致しするならば、そしてもしデバイス番号フィールド２５８、機能番号フィールド２５６そしてレジスタ番号フィールド２５４が特殊サイクル（ＳＰ＿ＭＡＴＣＨはハイ）を指示するならば、特殊サイクルへのタイプ１コンフィギュレーション・トランザクションが実行される。これは、信号ＴＹＰ１＿ＴＯ＿ＳＰＣＹＣをハイにアサートするＡＮＤゲート２６８により指示される。ＡＮＤゲート２６８はＳＰ＿ＭＡＴＣＨとＱ２Ｐ＿ＣＢＥ［０］（特殊サイクル用のコマンド・ビット）を受信する。タイプ１のコンフィギュレーション・トランザクションからのデータは宛先バス上の特殊サイクル用のデータになる。特殊サイクル中のアドレスは無視される。
【０１８８】
バス性能モニタ
バス・モニタ１２７（図３は）特定のバス性能パラメータを計算するための情報を記憶する回路を含む。パラメータはバス・ユーティライゼーション（utilization）、バス効率（efficiency）及び読み出しデータ効率を含む。バス・ユーティライゼーションは、所定のグローバル期間に対してのバスがトランザクションを行うのにビジー（busy、使用中）な時間の比率である。バス効率は、バスがビジーの期間の間のクロック期間の合計数に対してのデータ転送に実際に使用されたＰＣＩクロック期間の数の比率である。読み出しデータ効率は、ブリッジ・チップ４８によってマスタに対して取り出されたデータのバイトの合計数に対しての遅延完了待ち行列（ＤＣＱ）１４４（図４）からの２次ＰＣＩバス３２上のデバイスによってアクセスされた読み出しデータのバイトの数の比率であるバス・モニタ１２７に記憶された情報は所望されるパラメータを計算するためにシステムのソフトウエアによって検索される。
図６７Ａを参照すると、グローバル期間タイマ１３００（３２ビット幅であり得る）はその間に多種のパラメータが計算される時間の合計期間をカウントする。タイマ１３００は１６進値ＦＦＦＦＦＦＦＦにプログラムされる。もしＰＣＩクロックＰＣＩＣＬＫ２が３３ＭＨｚで動作しているならば、タイマ期間は約２分である。タイマ１３００が０に減ると、信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥをアサートする。
【０１８９】
バス・モニタ１２７は７つのスロット特定的バス・ビジー・カウンタ１３０２Ａ〜Ｇを含み、カウンタのうちの６つは２次ＰＣＩバス３２の６つのスロットにそれぞれ対応し、１つはＳＩＯ５０に対応する。バス・ビジー・カウンタ１３０２Ａ〜Ｇは信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥがアサートされたときにクリアされる。どのバス・デバイスが２次バス３２の制御を有するかに依存して、バス・ビジー・カウンタ１３０２は２次ＰＣＩバスのＦＲＡＭＥ 信号又はＩＲＤＹ 信号がアサートされるＰＣＩクロック毎に増分する。７つのカウンタのうちの適切なものが許可信号ＧＮＴ［７：１］ の１つによって選択される。即ち、例えば、信号ＧＮＴ［１］ がローにアサートされてＳＩＯが２次ＰＣＩバス３２上の現在のマスタであることを示すときにバス・ビジー・カウンタ１３０２Ａが選択される。
２次ＰＣＩバス３２の６つのスロットとＳＩＯ５０にそれぞれ対応する７つのデータ・サイクル・カウンタ１３０６Ａ〜Ｇは、その間にＰＣＩバス３２上でのトランザクションの間にマスタとターゲットの間でデータ転送が実際に発生する時間を追従（監視）する。選択されたデータ・サイクル・カウンタ１３０６は２次バスのＩＲＤＹ 信号及びＴＲＤＹ 信号が両方ともローにアサートされるＰＣＩクロック毎に増分される。データ・サイクル・カウンタ１３０６Ａ〜Ｇは信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥがアサートされるときにクリアされる。
ＤＣＱバッファにロードされたデータの量を追従（監視）するために６つのＤＣＱデータ・カウンタ１３１０Ａ〜Ｆがバス・モニタ１２７に含まれる。６つのＤＣＱデータ・カウンタ１３１０Ａ〜Ｆは２次ＰＣＩバス３２の６つのスロットに対応する。選択されたＤＣＱデータ・カウンタ１３１０は遅延読み出し完了（ＤＲＣ）データがケーブル２８から受信されてプリフェッチ・バッファへロードされるＰＣＩクロック毎に増分する。
【０１９０】
別のセットのカウンタ、使用済みＤＣＱデータ・カウンタ１３１４Ａ〜Ｆは２次ＰＣＩバス３２の６つのスロットによって実際に使用されたＤＣＱ１４４にロードされるデータの量を監視するために用いられる。選択された使用済みＤＣＱデータ・カウンタ１３１４は２次バス・マスタが対応するＤＣＱバッファからデータを読み出すＰＣＩクロック毎に増分する。ＤＣＱデータ・カウンタ１３１０Ａ〜Ｆ及び使用済みＤＣＱデータ・カウンタ１３１４Ａ〜Ｆは実際に転送されたバイトの数に関係なくデータ・サイクル毎に増分する。殆どの場合、各データ・サイクルで転送されるバイトの数は４である。
グローバル期間タイマ１３００がタイムアウトして信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥをアサートすると、幾つかの事象が発生する。まず、グローバル期間タイマ１３００はその元のカウント値を再ロードし、その値は１６進値ＦＦＦＦＦＦＦＦである。バス・ビジー・カウンタ１３０２Ａ〜Ｇ、データ・サイクル・カウンタ１３０６Ａ〜Ｇ、ＤＣＱデータ・カウンタ１３１０Ａ〜Ｆ及び使用済みＤＣＱデータ・カウンタ１３１４Ａ〜Ｆを含む他のすべてのカウンタの内容はそれぞれレジスタ１３０４、１３０８、１３１２及び１３１６にロードされる。カウンタ１３０２、１３０６、１３１０及び１３１４は次に０にクリアされる。グローバル期間タイマ１３００は次に、元の値が再ロードされた後に再びカウントを開始する。
信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥは割り込み受信ブロック１３２に供給され、これがこの割り込みをケーブル２８を経て割り込み出力ブロック１１４へ送り、このブロックはＣＰＵ１４への割り込みを発生する。ＣＰＵ１４は、バスの性能分析を行うために割り込みハンドラを呼び出すことによって割り込みに応答する。割り込みハンドラはレジスタ１３０４、１３０８、１３１２及び１３１６の内容にアクセスし、６つの２次バス・スロット及びＳＩＯ５０に関連するバス・ユーティライゼーション、バス効率、プリフェッチ効率のパラメータを含む幾つかのパラメータを計算する。
バス・ユーティライゼーション・パラメータはグローバル期間タイマ１３００の初期値、１６進値ＦＦＦＦＦＦＦＦ、によって割ったバス・ビジー・カウンタ１３０２の値である。即ち、バス・ユーティライゼーションは、その間にバス・マスタがバス・トランザクションを行う合計グローバル時間のパーセンテージである。
【０１９１】
ＰＣＩトランザクションはアドレス・フェーズ（相）と少なくとも１つのデータ・フェーズとを含む。バス・マスタはＦＲＡＭＥ をアサートしてアクティブのバス・トランザクションの開始及び期間を示す。信号ＦＲＡＭＥ がデアサートされると、これはトランザクションが最後のデータ相にあること又はトランザクションが完了されたことを示す。信号ＩＲＤＹ は、バス・マスタがバス・トランザクションの現在のデータ相を完了することができることを示す。書き込みの間、信号ＩＲＤＹ は有効データがバスにあることを示す。読み出しの間、信号ＩＲＤＹ はマスタが読み出しデータを受け入れる準備をしたことを示す。アドレス指定されたＰＣＩターゲットは、信号ＴＲＤＹ をアサートし、ターゲットがトランザクションの現在のデータ・フェーズを完了できることを示すことによって、バス・トランザクションに応答する。読み出しの間、信号ＴＲＤＹ は有効データがバスに存在することを示す。書き込みの間、信号ＴＲＤＹ はターゲットがデータを受け入れる準備をしたことを示す。待ち状態がアドレス・フェーズとデータ・フェーズの間及びバス・トランザクションの連続するデータ・フェーズの間に挿入され得る。アドレス・フェーズ又は待ち状態の間、実際のデータの転送は発生しない。
実際のデータ転送は信号ＩＲＤＹ とＴＲＤＹ の両方がローにアサートされたときにのみ発生する。データ転送のバスの効率を判定するために、割り込みハンドラは、データ・サイクル・カウンタ１３０６の値をバス・ビジー・カウンタ１３０２の値で割る。バス効率は、その間にバス・トランザクションの間のデータ転送が実際に発生する時間の量を表す。この値を計算することによって、コンピュータ・システムは、多くの待ち状態を必要とするため非効率的であるターゲット・デバイスを知るようにされる。
【０１９２】
ブリッジ・チップ４８は１次ＰＣＩバス２６からデータを取り出し（フェッチし）、そのデータをＤＣＱ１４４に記憶することができる。ＤＣＱ１４４は８つのバッファを有し、その各々が２次バス・マスタに割り当て可能である。例えば、１次バスでターゲットにされた２次バス・マスタによって発生されたメモリ読み出し多重トランザクションは、ブリッジ２６及び４８がメモリ２０から８つのキャッシュ・ラインを取り出してＤＣＱ１４４へロードするようにさせる。メモリ読み出しライン・トランザクションは、ＰＣＩ−ＰＣＩブリッジ２６、４８がメモリ２０から１ラインのデータを取り出すようにする。更に、図９３及び図９８と関連して説明したように、ＰＣＩ−ＰＣＩブリッジ・チップ２６、４８は読み出しプロモーションを行うことができ、これは２次バス・マスタからの読み出し要求をより大きなブロックのデータに対する読み出し要求に変換する。これらの場合において、すべてではない取り出されたデータがバス・マスタによって使用される可能性が存在する。その場合、読み出されないデータはすてられ、それが読み出しデータ効率を減少する。読み出しデータ効率を測定することによって、システムの設計者は、どのようにしてバス・マスタが１次バス２４からブリッジ・チップ２６、４８によって取り出された読み出しデータを用いているかを理解できるようになる。
【０１９３】
図６７Ｂを参照すると、カウンタ１３１０は、もし信号ＤＣＱ ＤＡＴＡ ＲＥＣＥＩＶＥＤ［Ｘ］（Ｘ＝２〜７）がアサートされ、４バイトのデータがケーブル２８からマスタＸと関連するＤＣＱバッファによって受信されたことを示すならば、クロックＰＣＬＫの立ち上がりで増分する。カウンタ１３１０はカウント値ＤＣＱ ＤＡＴＡ［Ｘ］［２０：０］（Ｘ＝２〜７）を出力し、これは信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥがアサートされたときに零にクリアされる。
カウンタ１３１４は、信号ＤＣＱ ＤＡＴＡ ＴＡＫＥＮ［Ｘ］（Ｘ＝２〜７）がアサートされ、４バイトのデータがマスタＸと関連するＤＣＱバッファから読み出されることを示す場合に、クロックＰＣＬＫの立ち上がりで増分する。カウンタ１３１４は信号ＧＬ ＴＩＭＥ ＥＸＰＩＲＥがハイのときにクリアされる。
２次ＰＣＩバス３２上のデバイスによって実際に使用されたＤＣＱデータの量を判定するために、プリフェッチ効率が割り込みハンドラによって計算される。これは、ＤＣＱデータ・カウンタ１３１０の値に対しての使用済みＤＣＱデータ・カウンタ１３１４の値の比率をとることによつて判定される。プリフェッチ・バッファへ又はそこから転送されるデータのすべてが４バイト幅であるわけではないが、その比率は、すべてのデータ・フェーズが同数のバイトを転送すると仮定することによって近似する。
計算されたパラメータに応答して、ユーザ又はコンピュータ製造者はコンピュータ・システムの性能をより理解できる。例えば、バス効率が低いならば、関与するＰＣＩデバイスをコンピュータ製造者によって別の部品と置換することも可能である。ＤＣＱ読み出しデータ効率を知ることによって、コンピュータ製造者がＤＣＱフェッチ・アルゴリズムを効率を向上させるために変更することも可能となる。
【０１９４】
従属バス・デバイスの使用
図１０７に示されるように、６つの拡張カード・スロット３６ａ〜ｆに挿入された６つの拡張カードは、ＣＰＵ１４に従属するバス・デバイス１７０４〜１７０８及びＩ2Ｏプロセッサ１７７に従属するバス・デバイス１７０１〜１７０２をもたらす。すべての従属バス・デバイス１７０１〜１７０８は共通のＰＣＩバス３２に接続されるが、Ｉ2Ｏ従属デバイス１７０１〜１７０２は、ＣＰＵ１４に対しては、Ｉ2Ｏプロセッサ１７００を通じてのみアドレス指定可能であり且つＰＣＩバス３２を通じて直接にアドレス指定可能ではないように現れる。従って、ＰＣＩバス３２はＩ2Ｏ従属デバイス・バス及びＣＰＵ１４従属デバイス・バスの両方として働く。
ＣＰＵ１４がＩ2Ｏ従属デバイス１７０１〜１７０２をＰＣＩバス３２デバイスと認識するのを避ける目的のために、ブリッジ・チップ４８は、Ｉ2Ｏ従属デバイス１７０１〜１７０２がＣＰＵ１４によって実行されるコンフィギュレーション・サイクルに応答するのを避けるためにロジック１７１０（図１０９）を含む。また、拡張ボックス３０は、Ｉ2Ｏ従属デバイス１７０１〜１７０２で開始される割り込み要求がＣＰＵ１４へ伝搬するのをマスクするためにブリッジ・チップ４８の割り込み受信ブロック１３２と協働するマルチプレキシング回路１７１２を含む。Ｉ2Ｏ従属バス・デバイス１７０１〜１７０２から発せられる割り込み要求は割り込み受信ブロック１３２によってＩ2Ｏプロセッサ１７００へ再送信される。Ｉ2Ｏプロセッサ１７００はＩ2Ｏ従属デバイス１７０１〜１７０２を構成（コンフィギュレーション）し、Ｉ2Ｏ従属デバイス１７０１〜１７０２から発せられた割り込み要求を受信して処理し、ＣＰＵ１４によって指示されるようにＩ2Ｏ従属デバイスの動作を制御する。
【０１９５】
コンピュータ・システム１０のパワーアップの後且つカード８０７がパワーアップされたとき（即ち、新しいバス・デバイスがＰＣＩバス３２に導入されたとき）に、Ｉ2Ｏプロセッサ１７００はＰＣＩバス３２をスキャンしてＩ2Ｏ従属バス・デバイスを識別する。バス・デバイスのタイプ（Ｉ2Ｏ従属バス・デバイス又はＣＰＵ１４従属デバイス）を識別する目的のために、Ｉ2Ｏプロセッサ１７００はＰＣＩバス３２上でコンフィギュレーション・サイクルを実行して各バス・デバイスのデバイス識別（アイデンティフィケーション）ワード（Device ID（デバイスＩＤ））を読み出す。デバイスＩＤはすべてのＰＣＩデバイスのコンフィギュレーション・ヘッダ・スペースに位置する。Ｉ2Ｏプロセッサ１７００はこのスキャンの結果を、ＣＰＵ１４によってアクセス可能なＩ2Ｏプロセッサ１７００内の６ビットＩ2Ｏ従属レジスタ１７２９（図１１２）に記憶する。レジスタ１７２９のビット０から５はそれぞれスロット３６ａ〜ｆと関連する。１つのビットに対する「１」の値は関連するスロット３６がＣＰＵ１４に従属するバス・デバイスを有することを示し、１つのビットに対する「０」の値は関連するスロット３６がＩ2Ｏプロセッサ１７００に従属するバス・デバイスを有することを示す。
Ｉ2Ｏプロセッサ１７００はスロット３６ａ〜ｆの何れにも挿入することができる。どのスロット３６がＩ2Ｏプロセッサを含むかを、もし含む場合に識別するために、ＣＰＵ１４はＰＣＩバス３２をスキャンし、バス３２に接続されたバス・デバイスのデバイスＩＤを読み出す。ＣＰＵ１４は、Ｉ2Ｏプロセッサ１７００内部のホスト・コンフィギュレーション・イネーブル・ビット１７２６（図１１３）が、Ｉ2Ｏプロセッサ１７００がバス３２上のＩ2Ｏ従属デバイス１７０１〜１７０２の識別を完了したことをＣＰＵ１４に示すまで、バス３２上の何れのデバイス１７０４〜１７０８の構成（コンフィギュレーション）も試みない。ホスト・コンフィギュレーション・イネーブル・ビット１７２６は、ＣＰＵ１４によってバス３２上のデバイスのコンフィギュレーションをディスエーブルにするための「０」の値（パワーアップでの値）を有し、バス３２上のＣＰＵ１４従属デバイス１７０４〜１７０８のコンフィギュレーションをイネーブルにするための「１」の値を有する。ＣＰＵ１４がバス３２上のバス・デバイスを構成（コンフィギュレーション）するとき、ＣＰＵ１４は以下に説明するようにロジック１７２０によってマスクされるためＩ2Ｏ従属デバイス１７０１〜１７０２を「見ない」。
【０１９６】
ホスト・イネーブル・コンフィギュレーション・ビット１７２６がセットされた後、ＣＰＵ１４はＩ2Ｏ従属レジスタ１７２９の内容を読み出し、読み出した内容をブリッジ・チップ４８の６ビットＩ2Ｏ従属レジスタ１７２８（図１１０）へ転送する。レジスタ１７２８はバス・デバイスの従属状態（subordinate status）（Ｉ2Ｏプロセッサ１７００従属又はＣＰＵ１４従属）をレジスタ１７２９と同じ様式で示す。ＣＰＵ１４がレジスタ１７２８に書き込みを行う前に、レジスタ１７２８はすべてに１を含み（パワーアップでの値）、これはＣＰＵ１４がＩ2Ｏプロセッサ１７００に対してバス３２をスキャンすることを可能にする。割り込み受信ブロック１３２はレジスタ１７２８を用いて、処理を行うためにブロック１３２によって受信したどの割り込み要求がＣＰＵ１４へ送られるべきか、及びブロック１３２によって受信したどの割り込み要求がＩ2Ｏプロセッサ１７００へへ送られるべきかを識別する。更に、ロジック１７１０は、ＣＰＵ１４からＩ2Ｏ従属デバイス１７０１〜１７０２のＣＰＵ１４による認識をブロックするためにレジスタ１７２８の内容を用いる。
どのバス・デバイスがＩ2Ｏプロセッサであるかを、何れかがそうである場合に割り込み受信ブロック１３２に示すために、ＣＰＵ１４は、そのビット０〜５がスロット３６ａ〜ｆにそれぞれ対応するＩ2Ｏスロット・レジスタ１７３０の１ビットをセットする。ブリッジ・チップ４８内に位置するこのレジスタ１７３０に対して、１つのビットに対する「０」の値は関連するスロット３６がＩ2Ｏプロセッサを持たないことを示し、１つのビットに対する「１」の値は関連するスロット３６がＩ2Ｏプロセッサを持つことを示す。
【０１９７】
図１０９に示されるように、ロジック１７１０は、コンフィギュレーション・サイクルの間にバス３２上のデバイスを選択するために信号ＡＤ ＩＤＳＥＬ［５：０］をバス３２のアドレス／データ・ラインに供給する多重ビットＡＮＤゲート１７１１を含む。ＡＮＤゲート１７１１は、Ｉ2Ｏ従属レジスタ１７２８のビットを示し且つそれに対応するビットを有する６ビット信号ＥＮＡＢＬＥ［５：０］を受信する。また、ＡＮＤゲートは、コンフィギュレーション・サイクルの間にバス３２上のデバイスを選択するためにブリッジ・チップ４８によって供給される典型的アイデンティフィケーション選択信号ＳＬＯＴ ＩＤＳＥＬ［５：０］を受信する。従って、信号ＥＮＡＢＬＥ［５：０］は、コンフィギュレーション・サイクルがＣＰＵ１４によって実行されるときにＰＣＩバス３２から信号ＳＬＯＴ ＩＤＳＥＬ［５：０］を選択的にマスクするために用いられる。
スロット３６ａ〜ｄからの割り込み要求の宛て先の制御のために、各スロット３６によって供給される４つの標準ＰＣＩ割り込み要求信号（ＩＮＴＡ＃、ＩＮＴＢ＃、ＩＮＴＣ＃、ＩＮＴＤ＃）がマルチプレキシング回路１７１２（図１０７）に供給される。マルチプレキシング回路１７１２はスロット３６から受信したＰＣＩ割り込み要求信号を直列（シリアル）化し、その信号を４つの時分割多重化シリアル割り込み要求信号、ＩＮＴＳＤＡ＃、ＩＮＴＳＤＢ＃、ＩＮＴＳＤＣ＃、ＩＮＴＳＤＤ＃、を経由で割り込み受信ブロック１３２に供給する。
【０１９８】
図１０８に示されるように、割り込み受信ブロック１３２はＣＰＵ１４に対する割り込み要求信号を時分割多重化シリアル割り込み要求信号ＩＮＴＳＤＣＡＢＬＥ＃を経由で割り込み出力ブロック１１４に供給する。割り込み受信ブロック１３２はＩ2Ｏプロセッサ１７００に対する割り込み要求信号を、バス３２のＰＣＩ・ＩＮＴＣ＃ライン１７０９を経由で供給される時分割多重化シリアル割り込み要求信号ＩＮＴＳＤＩＩＯ＃経由でＩ2Ｏプロセッサ１７００に供給する。割り込み出力ブロック１１４はＣＰＵ１４が宛て先とされた割り込み要求をＰＣＩバス２４の１つ又はそれ以上の標準ＰＣＩ割り込み要求ライン（線）（ＩＮＴＡ＃、ＩＮＴＢ＃、ＩＮＴＣ＃、ＩＮＴＤ＃）に供給する。ブリッジ・チップ２６の外部の割り込みコントローラ１９００はＰＣＩバス２４のＰＣＩ割り込み要求線から割り込み要求を受信する。割り込みコントローラ１９００は割り込み要求（ＰＣＩバス２４上の他のデバイスからの割り込み要求を含み得る）を優先化し、それらをＣＰＵ１４に供給する。割り込み出力ブロック１１４は、以下に説明するように、割り込み要求信号をＰＣＩバス２４の割り込み要求線に非同期で供給するか（非同期モードのとき）、又は割り込み要求信号をＰＣＩバス２４のＩＮＴＡ＃線にシリアルに供給するか（シリアル・モードのとき）の何れかである。
【０１９９】
図１１４に示されるように、時分割多重化シリアル・データ信号は、８つの連続的タイム・スライス（Ｔ０〜Ｔ７）を含む割り込みサイクル１８５０を経由でそれらのデータを表す。各タイム・スライスの期間はＰＣＩクロック信号ＣＬＫの１サイクルである。各タイム・スライスは１つ又はそれ以上の割り込み要求信号の状態の「スナップショット」を表す。図１２１に示されるように、信号ＩＮＴＳＤＡ＃はスロット３６ａ〜ｆからのサンプリングされたＩＮＴＡ＃割り込み要求信号を表す。信号ＩＮＴＳＤＢ＃はスロット３６ａ〜ｆからのサンプリングされたＩＮＴＢ＃割り込み要求信号を表す。信号ＩＮＴＳＤＣ＃はスロット３６ａ〜ｆからのサンプリングされたＩＮＴＣ＃割り込み要求信号を表す。信号ＩＮＴＳＤＤ＃はスロット３６ａ〜ｆからのサンプリングされたＩＮＴＤ＃割り込み要求信号を表す。
割り込み信号ＩＮＴＳＤＡ＃〜Ｄ＃を信号ＩＮＴＳＤＩＩＯ＃に組み合わせるために、割り込み受信ブロック１３２は信号ＩＮＴＳＤＡ＃〜Ｄ＃を共に論理的にＡＮＤ演算し、その間ＣＰＵ１４を宛て先とする割り込み要求信号を同時にマスクする。同様に、割り込み信号ＩＮＴＳＤＡ＃〜Ｄ＃を信号ＩＮＴＳＤＣＡＢＬＥ＃に組み合わせるために、割り込み受信ブロック１３２は信号ＩＮＴＳＤＡ＃〜Ｄ＃を共に論理的にＡＮＤ演算し、その間ＣＰＵ１４を宛て先とする割り込み要求信号を同時にマスクする。
別の割り込みサイクル１８５０が始まったときに割り込み出力ブロック１１４に指示するために、割り込み受信ブロック１３２は同期信号ＩＮＴＳＹＮＣＣＡＢＬＥ＃を割り込み出力ブロック１１４に供給する。信号ＩＮＴＳＹＮＣＣＡＢＬＥ＃の立ち下がり又は負の縁部は、信号ＩＮＴＳＤＣＡＢＬＥ＃を経由で送信された割り込みサイクル１８５０のタイム・スライスＴ０がＣＬＫ信号の次の正の縁部で開始することを示す。信号ＩＮＴＳＹＮＣＩＩＯ＃は、信号ＩＮＴＳＤＩＩＯ＃を経由で送信される割り込みサイクル１８５０の来るタイム・スライスＴ０を示すために類似の様式で用いられる。信号ＩＮＴＳＹＮＣＩＩＯ＃は割り込み受信ブロック１３２によってバス３２のＰＣＩ・ＩＮＴＤ＃ライン１７１３を経由でＩ2Ｏプロセッサ１７００に供給される。別の割り込みサイクル１８５０を割り込み信号ＩＮＴＳＤＡ＃〜Ｄ＃を経由でいつ送信するかをマルチプレキシング回路１７１２に指示するために、割り込み受信ブロック１３２は同期信号ＩＮＴＳＹＮＣ＃をマルチプレキシング回路１７１２に供給する。信号ＩＮＴＳＹＮＣ＃の立ち下がり又は負の縁部は、マルチプレキシング回路１７１２がＣＬＫ信号の次の正の縁部で信号ＩＮＴＳＤＡ＃〜Ｄ＃のタイム・スライスＴ０を送信するべきであることを示す。
【０２００】
図１１５に示されるように、マルチプレキシング回路１７１２は、信号ＩＮＴＳＤＡ＃、ＩＮＴＳＤＢ＃、ＩＮＴＳＤＣ＃及びＩＮＴＳＤＤ＃をそれぞれ供給する４つのマルチプレクサ１７４１〜１７４４を含む。マルチプレクサ１７４１〜１７４４の選択（セレクト）入力は、信号ＩＮＴＳＤＡ＃〜Ｄ＃のタイム・スライスＴ０〜Ｔ７を示すために用いられるタイム・スライス信号ＳＬＩＣＥＩＮ［２：０］を受信する。スロット３６からのＩＮＴＡ〜Ｄ＃割り込み要求信号はそれぞれにマルチプレクサ１７４１〜１７４４の入力に供給される。
信号ＳＬＩＣＥＩＮ［２：０］は、ＰＣＩクロック信号ＣＬＫの正の縁部でクロックされる３ビット・カウンタ１７４５の出力によって供給される。割り込み同期信号ＩＮＴＳＹＮＣ＃はカウンタ１７４５のクロックされたイネーブル入力によって受信される。信号ＩＮＴＳＹＮＣ＃の負の縁部でカウンタ１７４５は零にリセットされる（ＳＬＩＣＥＩＮ［２：０］が０と等しい）。カウンタ１７４５はＳＬＩＣＥＩＮ［２：０］信号が「７」と等しくなるまでＳＬＩＣＥＩＮ［２：０］信号によって示された値を増分し、カウンタ１７４５がふたたびＩＮＴＳＹＮＣ＃信号によってリセットされるまでとどまる。
【０２０１】
図１１６に示されるように、タイム・スライスＴ０〜Ｔ７を追従（監視）するために、割り込み受信ブロック１３２はＣＬＫ信号の正の縁部でクロックされる３ビット・カウンタ１７５０を含む。カウンタ１７５０は、３×８デコーダ１７５２の選択入力で受信される出力信号ＳＬ１［２：０］を供給する。デコーダ１７５２は８ビット信号Ｇ ＣＮＴＲ［７：０］を、信号ＩＮＴＳＤＩＩＯ＃及びＩＮＴＳＤＣＡＢＬＥ＃のタイム・スライスを示す信号Ｇ ＣＮＴＲ［７：０］のアサートされたビットとともに供給する。
ＩＮＴＳＹＮＣ＃信号は、Ｇ ＣＮＴＲ［７：０］最上位ビット、Ｇ ＣＮＴＲ［７］を受信するインバータ１７５４の出力によって供給される。ＩＮＴＳＹＮＣ＃信号はタイム・スライスＴ７の間にローにパルス化（パルシング、pulsing）されるが、割り込み受信ブロック１３２は、ＩＮＴＳＹＮＣ＃信号をローにパルス化する前に割り込みサイクル１８５０の終了の後にＣＬＫ信号の幾つかのサイクルを交互に待つことができる。信号ＩＮＴＳＹＮＣＣＡＢＬＥ＃及びＩＮＴＳＹＮＣＩＩＯ＃は両方ともビットＧ ＣＮＴＲ［０］を受信するインバータ１７５５の出力によって提供される。
ＣＰＵ１４に対する更なる割り込み要求信号ＣＡＹ ＩＮＴ＃はＳＩＯ回路５０によって供給される。ＣＡＹ ＩＮＴ＃信号はタイム・スライスＴ０の間にＩＮＴＳＤＡ＃〜Ｄ＃と論理的にＡＮＤ演算される。ＣＡＹ ＩＮＴ＃信号はＳＩＯ ＣＭＰＬ＃信号、ＳＩ ＩＮＴＲ＃信号及びＩ2Ｃ  ＩＮＴ＃信号を受信するＡＮＤゲート１７５６の出力によって供給される。ＳＩＯ ＣＭＰＬ＃信号はＳＩＯ回路５０がシリアル出力プロセスを完了したときにアサートされる、又はローに駆動される。Ｉ2Ｃ ＩＮＴ＃信号はブリッジ・チップ４８に接続されたＩ2Ｃバス（示さず）を通じてトランザクションの完了を示すためにアサートされる、又はローに駆動される。さもなければＩ2Ｃ ＩＮＴ＃信号はデアサートされる、又はハイに駆動される。
割り込み要求をマスクするために、割り込み受信ブロック１３２は４つのマスク信号、ＭＡＳＫＡ、ＭＡＳＫＢ、ＭＡＳＫＣ及びＭＡＳＫＤを発生する。信号ＩＮＴＳＤＡ＃の特定のタイム・スライス（Ｔ０〜Ｔ７）の間にＭＡＳＫＡ信号がアサートされる又はハイに駆動されるとき、その特定のタイム・スライスの間のシリアル割り込み信号ＩＮＴＳＤＡ＃によって示される割り込み要求はＣＰＵ１４からマスクされる。特定のタイム・スライスの間にもしＭＡＳＫＡ信号がデアサートされる又はローに駆動されると、シリアル割り込み信号ＩＮＴＳＤＡ＃によって示される割り込み要求はＩ2Ｏプロセッサ１７００によってマスクされる。ＭＡＳＫＢ〜Ｄ信号は信号ＩＮＴＳＤＢ＃〜Ｄ＃によって供給されるマスク割り込み要求と類似に機能する。
【０２０２】
図１１７に示すように、マルチプレクサ１７５８はＭＡＳＫＡ信号を供給する。マルチプレクサ１７５８の選択入力はＳＬ１［２：０］を受信する。マルチプレクサ１７５８の８つの入力はＩ2Ｏ従属レジスタ１７２８の対応するビットを示す反転されたＩＩＯ ＳＵＢ［５：０］信号を受信する。信号ＩＩＯ ＳＵＢ［５：０］はマルチプレクサ１７５８の適当な入力に接続され、それによって、ＩＮＴＳＤＡ＃信号が特定のスロット３６に対する割り込み状態を示すとき、ＭＡＳＫＡ信号はそのスロット３６に対するレジスタ１７２８の関連するビットを同時に示す。３つの他のマルチプレクサ１７６０、１７６２及び１７６４はそれぞれ信号ＭＡＳＫＢ、ＭＡＳＫＣ及びＭＡＳＫＤを供給する。ＭＡＳＫＡ信号の生成と同様に、信号ＩＩＯ ＳＵＢ［５：０］はマルチプレクサ１７６０、１７６２及び１７６４の適当な入力に接続され、それによって、ＭＡＳＫＢ、ＭＡＳＫＣ及びＭＡＳＫＤは信号ＩＮＴＳＤＢ＃、ＩＮＴＳＤＣ＃及びＩＮＴＳＤＤ＃によって表されるスロットに関連するレジスタ１７２８のビットを示す。マルチプレクサ１７６０〜１７６４はそれらの選択入力で信号ＳＬ１［２：０］を受信する。
【０２０３】
図１１８に示すように、割り込み受信ブロック１３２はまた、ライン１７０９及び１７１３が信号ＩＮＴＳＤＩＩＯ＃及びＩＮＴＳＹＮＣＩＩＯ＃をそれぞれＩ2Ｏプロセッサ１７００に供給するために用いられるので、Ｉ2Ｏプロセッサ１７００のスロット割り込みラインによって供給されるＩＮＴＤ＃信号及びＩＮＴＤＣ＃信号をマスクするために用いられる２つのマスク信号、ＩＩＯＴＳ Ｄ及びＩＩＯＴＳ Ｃを供給する２つのマルチプレクサ１７６８及び１７７０を含む。マルチプレクサ１７６８及び１７７０の両方の選択入力は信号ＳＬ１［２：０］を受信し、マルチプレクサ１７６８及び１７７０の信号入力はＩ2Ｏスロット・レジスタ１７３０の対応するビットを示す信号ＩＩＯＳＬＯＴ［５：０］を受信する。信号ＩＩＯＳＬＯＴ［５：０］はマルチプレクサ１７６８及び１７７０の適当な入力に選択され、それによって、信号ＩＮＴＳＤＣ＃〜Ｄ＃信号が特定のスロット３６に対する割り込み状態を示すとき、マルチプレクサ１７６８及び１７７０によって選択されたＩＩＯＳＬＯＴ［５：０］信号はそのスロット３６に対するレジスタ１７３０の関連するビットを同時に示す。
【０２０４】
図１１９に示すように、６つのＡＮＤゲート１７７２〜１７８２は信号ＩＮＴＳＤＡ＃〜ＩＮＴＳＤＤ＃を組み合わせるため及び選択された割り込み要求信号をＣＰＵ１４からマスクするために用いられる。ＡＮＤゲート１７７２は反転されたＥＣＣ ＥＲＲ ＤＯＷＮ＃信号（ケーブル送信においてチップ４８ｂによって検出されたエラーを示すためにアサートされる）及びビットＧ ＣＮＴＲＬ［０］を受信する。ＡＮＤゲート１７７４は反転されたＩＮＴＳＤＡ＃信号及びＭＡＳＫＡ信号を受信する。ＡＮＤゲート１７７６は反転されたＩＮＴＳＤＢ＃信号及びＭＡＳＫＢ信号を受信する。ＡＮＤゲート１７７８は反転されたＩＮＴＳＤＣ＃信号、ＭＡＳＫＣ信号及びＩＩＯＴＳ Ｃ信号を受信する。ＡＮＤゲート１７８０は反転されたＩＮＴＳＤＣ＃信号、ＭＡＳＫＤ信号及びＩＩＯＴＳ Ｄ信号を受信する。ＡＮＤゲート１７８２は反転されたＣＡＹ ＩＮＴ信号及びＧ ＣＮＴＲＬ信号を受信する。
ＡＮＤゲート１７７２〜１７８２の出力は、出力がＤタイプのフリップフロップ１７８６の信号入力へ接続されるＯＲゲート１７８４への入力として接続される。フリップフロップ１７８６はＣＬＫ信号の正の縁部でクロックされ、フリップフロップ１７８６のセット入力はＲＳＴ信号を受信する。フリップフロップ１７８６の反転出力はＩＮＴＳＤＣＡＢＬＥ＃信号を供給する。
４つのＡＮＤゲート１７９０〜１７９６がＩＮＴＳＤＡ＃〜Ｄ＃信号を組み合わせるため及び選択された割り込み要求信号をＩ2Ｏプロセッサ１７００からマスクするために用いられる。ＡＮＤゲート１７９０は反転されたＩＮＴＳＤＡ＃信号及び反転されたＭＡＳＫＡ信号を受信する。ＡＮＤゲート１７９０の別の入力はＮＯＲゲート１８０２の出力に接続され、これはタイム・スライスＴ０及びＴ７の間ＩＮＴＳＤＡ＃信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。ＮＯＲゲート１８０２はビットＧ ＣＮＴＲＬ［０］及びＧ ＣＮＴＲＬ［７］を受信する。ＡＮＤゲート１７９２は反転されたＩＮＴＳＤＢ＃信号及び反転されたＭＡＳＫＢ信号を受信する。ＡＮＤゲート１７９２の別の入力はＮＯＲゲート１８０４の出力に接続され、これはタイム・スライスＴ１及びＴ４の間ＩＮＴＳＤＢ＃信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。ＮＯＲゲート１８０２はビットＧ ＣＮＴＲＬ［１］及びＧ ＣＮＴＲＬ［４］を受信する。
【０２０５】
ＡＮＤゲート１７９４は反転されたＩＮＴＳＤＣ＃信号及び反転されたＭＡＳＫＣ信号を受信する。ＡＮＤゲート１７９４の別の入力はＮＯＲゲート１８０６の出力に接続され、これはタイム・スライスＴ２及びＴ５の間ＩＮＴＳＤＣ＃信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。ＮＯＲゲート１８０６はビットＧ ＣＮＴＲＬ［２］及びＧ ＣＮＴＲＬ［５］を受信する。ＡＮＤゲート１７９６は反転されたＩＮＴＳＤＤ＃信号及び反転されたＭＡＳＫＤ信号を受信する。ＡＮＤゲート１７９６の別の入力はＮＯＲゲート１８０８の出力に接続され、これはタイム・スライスＴ３及びＴ６の間ＩＮＴＳＤＤ＃信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。ＮＯＲゲート１８０８はビットＧ ＣＮＴＲＬ［３］及びＧ ＣＮＴＲＬ［６］を受信する。
ＡＮＤゲート１７９０〜１７９６の出力は、出力がＤタイプのフリップフロップ１８００の信号入力へ接続されるＯＲゲート１７９８への入力として接続される。フリップフロップ１８００はＣＬＫ信号の正の縁部でクロックされ、フリップフロップ１８００のセット入力はＲＳＴ信号を受信する。フリップフロップ１８００の反転出力はＩＮＴＳＤＩＩＯ＃信号を供給する。
【０２０６】
図１２０に示されるように、割り込み出力ブロック１１４はカウンタ１７４５と共通の設計の３ビット・カウンタ１８２０を含む。カウンタ１８２０は信号ＣＬＫの正の縁部でクロックされ、出力信号Ｇ ＣＮＴＲ２［２：０］を供給し、ＩＮＴＳＹＮＣ＃信号によってリセットされた後に０から７までカウントを開始する。
ＩＮＴＳＹＮＣＣＰＵ＃信号を供給するために、割り込み出力ブロック１１４はＣＬＫ信号の正の縁部でクロックされるＤタイプのフリップフロップ１８２２を含む。フリップフロップ１８２２のセット入力はＲＳＴ信号を受信し、フリップフロップ１８２２の信号入力はＩＮＴＳＹＮＣＣＡＢＬＥ＃信号を受信する。フリップフロップ１８２２の非反転出力はＩＮＴＳＹＮＣＣＰＵ＃信号を供給する。
ＩＮＴＳＤＣＰＵ＃信号を供給するために、割り込み出力ブロック１１４はＣＬＫ信号の正の縁部でクロックされるＤタイプのフリップフロップ１８２４を含む。フリップフロップ１８２４のセット入力はＲＳＴ信号を受信し、フリップフロップ１８２４の信号入力はＩＮＴＳＤＣＡＢＬＥ＃信号を受信する。フリップフロップ１８２４の非反転出力はＩＮＴＳＤＣＰＵ＃信号を供給する。
割り込み受信ブロック１１４によって受信された割り込み要求は非同期又はシリアルで割り込みコントローラ１９００に供給される。非同期モードにおいて、図１２２に示されるように、割り込み要求はＰＣＩバス２４の４つのＰＣＩ割り込みラインにマップされる（一般に「バーバー・ポーリング（barber poling）」と呼ばれる）。
【０２０７】
ＩＮＴＳＤＣＡＢＬＥ＃信号によって供給される割り込み情報を保持するために、割り込み出力ブロック１１４は８ビット・レジスタ１８２６を含む。すべての信号入力はＩＮＴＳＤＣＡＢＬＥ＃信号を受信する。ビット０〜７のロード・イネーブル入力はビットＧ ＣＮＴＲ［０］〜Ｇ ＣＮＴＲ［７］をそれぞれ受信する。従って、例えば、タイム・スライスＴ４の間、ビット３にはＩＮＴＳＤＣＡＢＬＥ＃信号によって表される値がロードされる。ビット０（ＩＮＴ Ａ１信号によって表される）及びビット４（ＩＮＴ Ａ２信号によって表される）はＣＰＵＩＮＴＡ＃信号にマップされる。ビット１（ＩＮＴ Ｂ１信号によって表される）及びビット５（ＩＮＴ Ｂ２信号によって表される）はＣＰＵＩＮＴＢ＃信号にマップされる。ビット２（ＩＮＴ Ｃ１信号によって表される）及びビット６（ＩＮＴ Ｃ２信号によって表される）はＣＰＵＩＮＴＣ＃信号にマップされる。ビット３（ＩＮＴ Ｄ１信号によって表される）及びビット７（ＩＮＴ
Ｄ２信号によって表される）はＣＰＵＩＮＴＤ＃信号にマップされる。
４つのＯＲゲート１８２８〜１８３４は信号ＣＰＵＩＮＴＡ＃、ＣＰＵＩＮＴＢ＃、ＣＰＵＩＮＴＣ＃及びＣＰＵＩＮＴＤ＃を供給し、それらはＰＣＩバス２４のＰＣＩ割り込みラインＩＮＴＡ＃、ＩＮＴＢ＃、ＩＮＴＣ＃及びＩＮＴＤ＃にそれぞれ供給される。ＯＲゲート１８２８はＡＮＤゲート１８３６の出力に接続された１つの入力を有する。ＡＮＤゲートは反転されたＣＭ信号を受信する。信号ＣＭはブリッジ・チップ２６のコンフィギュレーション・レジスタのビットによって供給され、アサートされる又はハイに駆動されることによって非同期モードを示し、デアサートされる又はローに駆動されることによって同期モードを示す。また、ＡＮＤゲート１８３６は信号ＩＮＴ Ａ１、信号ＩＮＴ Ａ２及び信号ＥＣＣ ＥＲＲ ＵＰ信号（ケーブル送信におけるエラーを示すために用いられる）を受信する。
【０２０８】
ＯＲゲート１８２８はＡＮＤゲート１８３８の出力に接続された入力を有する。ＡＮＤゲート１８３８はＣＭ信号及びＩＮＴＳＤＣＰＵ＃信号を受信する。
ＡＮＤゲート１８３８の別の入力はＯＲゲート１８４８の出力に接続される。ＯＲゲート１８４８はＥＣＣ ＥＲＲ ＵＰ信号及びビットＧ ＣＮＴＲ２［０］を受信する。
ＯＲゲート１８３０はＡＮＤゲート１８４０の出力に接続された１つの入力と、ＡＮＤゲート１８４２の出力に接続された１つの入力とを有する。ＡＮＤゲート１８４０は反転されたＣＭ信号、信号ＩＮＴ Ｂ１及び信号ＩＮＴ Ｂ２を受信する。ＡＮＤゲート１８４２は信号ＣＭ及び反転されたビットＧ ＣＮＴＲ２［０］（シリアル・モードの間に「ｓｙｎｃ」信号を割り込みコントローラ１９００に供給するために用いられる）を受信する。
ＯＲゲート１８３２はＡＮＤゲート１８４４の出力に接続された１つの入力と、ＣＭ信号を受信する１つの入力とを有する。ＡＮＤゲート１８４４は反転されたＣＭ信号、信号ＩＮＴ Ｃ１及び信号ＩＮＴ Ｃ２を受信する。ＯＲゲート１８３４はＡＮＤゲート１８４６の出力に接続された１つの入力と、ＣＭ信号を受信する１つの入力とを有する。ＡＮＤゲート１８４６は反転されたＣＭ信号、信号ＩＮＴ Ｄ１及び信号ＩＮＴ Ｄ２を受信する。
【図面の簡単な説明】
【図１】コンピュータ・システムのブロック図である。
【図２】図１のコンピュータ・システムの拡張ボックスのブロック図である。
【図３】コンピュータ・システムのブリッジ・チップのブロック図である。
【図４】４図、各ブリッジ・チップの待ち行列ブロックのブロック図である。
【図５】ブリッジ・チップにおけるクロック送信スキームのブロック図である。
【図６】各ブリッジ・チップのクロック・ジェネレータのブロック図である。
【図７】ブリッジ・チップを接続するケーブルを介してデータを伝送するための、各ブリッジ・チップのマスタ・ケーブル・インタフェースのブロック図である。
【図８】マスタ・ケーブル・インタフェースにおける信号のタイミング・チャートである。
【図９】ケーブルを介して伝送されるデータを受信するための、各ブリッジ・チップのスレーブ・ケーブル・インタフェースのブロック図である。
【図１０】スレーブ・ケーブル・インタフェースにおける受信用ロジックへの入力及び出力ポインタを生成するロジックのブロック図である。
【図１１】スレーブ・ケーブル・インタフェースにおける信号のタイミング・チャートである。
【図１２】入力及び出力ポインタ及びそれらと受信ケーブル・データの関係を示すタイミング・チャートである。
【図１３】各ブリッジ・チップにおける入力及び出力パッドとフリップ・フロップの配置のブロック図である。
【図１４】ケーブルを介して伝送される情報のテーブルの図である。
【図１５】Ａは、シングル・アドレス・サイクル・トランザクションに関連するケーブル信号によって伝送される情報のタイプを表すテーブルの図である。Ｂは、デュアル・アドレス・サイクル・トランザクションに関連するケーブル信号によって伝送される情報のタイプを表すテーブルの図である。
【図１６】ケーブルに関連するパラメータのテーブルの図である。
【図１７】エラー検出及び修正回路の論理図である。
【図１８】エラー検出及び修正回路におけるチェック・ビット生成用のパリティ−チェック・マトリクスの図である。
【図１９】エラー検出及び修正回路における固定ビット生成用のシンドローム・テーブルの図である。
【図２０】Ａは、ラウンド−ロビン・アービトレーション・スキームを表す状態図である。Ｂは、２レベル・アービトレーション・スキームを示す状態図である。
【図２１】各ブリッジ・チップにおけるアービタの論理図である。
【図２２】アービタにおけるグラント状態マシンの状態図である。
【図２３】アービタにおけるレベル１アービトレーション状態マシンの状態図である。
【図２４】現在のマスタに基づいた新しい許可（グラント）信号の生成を表すテーブルの図である。
【図２５】マスク・ビット及び多重スレッド・マスタ表示ビットを生成するロジックのブロック図である。
【図２６】Ａは、マスクされたビットを生成するための回路の論理図である。Ｂは、多層のバスをもつコンピュータ・システムのブロック図である。
【図２７】Ａは、スロットに挿入される拡張カードの側面図である。Ｂ及びＣは、レバー回路の略図である。
【図２８】拡張ボックスの回路の略図である。
【図２９】拡張ボックスの回路の略図である。
【図３０】拡張ボックスの回路の略図である。
【図３１】拡張ボックスの回路の略図である。
【図３２】拡張ボックスの回路の略図である。
【図３３】拡張ボックスの回路の略図である。
【図３４】拡張ボックスの回路の略図である。
【図３５】拡張ボックスの回路の略図である。
【図３６】拡張ボックスの回路からの状態図である。
【図３７】拡張ボックスの回路からの波形図である。
【図３８】拡張ボックスの回路の略図である。
【図３９】拡張ボックスの回路からの波形図である。
【図４０】拡張ボックスの回路からの状態図である。
【図４１】拡張ボックスの回路からの状態図である。
【図４２】拡張ボックスの回路からの状態図である。
【図４３】拡張ボックスの回路からの状態図である。
【図４４】拡張ボックスの回路からの状態図である。
【図４５】拡張ボックスの回路からの状態図である。
【図４６】拡張ボックスの回路の略図である。
【図４７】拡張ボックスの回路からの状態図である。
【図４８】拡張ボックスの回路からの波形図である。
【図４９】拡張ボックスの回路の略図である。
【図５０】コンピュータ・システムにおけるバス・ハング状態の検出に応答して呼び出されるマスク不可能割り込みハンドラのフローチャートである。
【図５１】コンピュータ・システムのロックアップ事象によって呼び出されるＢＩＯＳルーチンのフローチャートである。
【図５２】バス・ハング状態またはコンピュータのロックアップ事象に応答して呼び出されるＢＩＯＳ分離ルーチンのフローチャートである。
【図５３】各ブリッジ・チップのバス・ウオッチャのブロック図である。
【図５４】バスをアイドル状態に戻すためのバス・ウオッチャにおけるロジックの状態図である。
【図５５】バス・ウオッチャの状態信号の論理図である。
【図５６】障害分離回路におけるバス履歴ＦＩＦＯ及びバス状態ベクトルＦＩＦＯの論理図である。
【図５７】バス履歴及び状態ベクトルの情報が利用可能なときにその旨を示すための準備完了信号を生成する回路の論理図である。
【図５８】パワー・ダウンしているか又は空のスロットにバス番号を割り当てるルーチンのフローチャートである。
【図５９】コンピュータ・システムにメモリ・スペースを割り当てるルーチンのフローチャートである。
【図６０】コンピュータ・システムにＩ／Ｏスペースを割り当てるルーチンのフローチャートである。
【図６１】パワー・アップされたカードを処理するルーチンのフローチャートである。
【図６２】ＰＣＩ−ＰＣＩブリッジ回路のコンフィギュレーション・スペースのブロック図である。
【図６３】Ａは、コンピュータ・システムのブロック図である。Ｂは、バス番号割り当てツリーの図である。
【図６４】タイプ０及びタイプ１のコンフィギュレーション・トランザクションを示すブロック図である。
【図６５】１次バスから２次バスへのアドレスのマッピングを表すテーブルの図である。
【図６６】Ａ、及びＢは、タイプ０及びタイプ１のコンフィギュレーション・サイクルを処理する回路の論理図である。
【図６７】Ａは、バス性能パラメータを計算できるように情報を記憶する回路のブロック図である。Ｂは、プリフェッチ・カウンタのブロック図である。
【図６８】コンピュータ・システムのブロック図である。
【図６９】ＰＣＩアービトレーション・スキームのブロック図である。
【図７０】バッファ・フラッシュ・ロジック・ブロックの略図である。
【図７１】ケーブル・デコーダの略図である。
【図７２】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図７３】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図７４】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図７５】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図７６】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図７７】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図７８】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図７９】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８０】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８１】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８２】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８３】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８４】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図８５】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図８６】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図８７】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図８８】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図８９】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図９０】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図９１】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図９２】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図９３】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９４】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９５】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９６】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９７】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９８】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図９９】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１００】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０１】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０２】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０３】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０４】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０５】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０６】待ち行列ブロック−ＰＣＩバス間インタフェースの略図及び状態遷移図である。
【図１０７】拡張バスに接続されたバス・デバイスを示す略ブロック図である。
【図１０８】割り込み要求を送信する回路を示す略ブロック図である。
【図１０９】デバイス選択ロジックの略図である。
【図１１０】レジスタの略ブロック図である。
【図１１１】レジスタの略ブロック図である。
【図１１２】レジスタの略ブロック図である。
【図１１３】レジスタの略ブロック図である。
【図１１４】コンピュータ・システムに関する波形を示すグラフである。
【図１１５】多重化回路の略図である。
【図１１６】割り込み受信ブロックの略図である。
【図１１７】割り込み受信ブロックの略図である。
【図１１８】割り込み受信ブロックの略図である。
【図１１９】割り込み受信ブロックの略図である。
【図１２０】割り込み出力ブロックの略図である。
【図１２１】割り込み要求信号の時分割多重化を示す図である。
【図１２２】割り込み要求のマッピングを示す図である。
【図１２３】拡張バスに接続されたバス・デバイスを示す略ブロック図である。
【図１】
0003895006.tif 000019
【図２】
0003895006.tif 000020
【図３】
0003895006.tif 000021
【図４】
0003895006.tif 000022
【図５】
0003895006.tif 000023
【図６】
0003895006.tif 000024
【図７】
0003895006.tif 000025
【図８】
0003895006.tif 000026
【図９】
0003895006.tif 000027
【図１０】
0003895006.tif 000028
【図１１】
0003895006.tif 000029
【図１２】
0003895006.tif 000030
【図１３】
0003895006.tif 000031
【図１４】
0003895006.tif 000032
【図１５】
0003895006.tif 000033
【図１６】
0003895006.tif 000034
【図１７】
0003895006.tif 000035
【図１８】
0003895006.tif 000036
【図１９】
0003895006.tif 000037
【図２０】
0003895006.tif 000038
【図２１】
0003895006.tif 000039
【図２２】
0003895006.tif 000040
【図２３】
0003895006.tif 000041
【図２４】
0003895006.tif 000042
【図２５】
0003895006.tif 000043
【図２６】
0003895006.tif 000044
【図２７】
0003895006.tif 000045
【図２８】
0003895006.tif 000046
【図２９】
0003895006.tif 000047
【図３０】
0003895006.tif 000048
【図３１】
0003895006.tif 000049
【図３２】
0003895006.tif 000050
【図３３】
0003895006.tif 000051
【図３４】
0003895006.tif 000052
【図３５】
0003895006.tif 000053
【図３６】
0003895006.tif 000054
【図３７】
0003895006.tif 000055
【図３８】
0003895006.tif 000056
【図３９】
0003895006.tif 000057
【図４０】
0003895006.tif 000058
【図４１】
0003895006.tif 000059
【図４２】
0003895006.tif 000060
【図４３】
0003895006.tif 000061
【図４４】
0003895006.tif 000062
【図４５】
0003895006.tif 000063
【図４６】
0003895006.tif 000064
【図４７】
0003895006.tif 000065
【図４８】
0003895006.tif 000066
【図４９】
0003895006.tif 000067
【図５０】
0003895006.tif 000068
【図５１】
0003895006.tif 000069
【図５２】
0003895006.tif 000070
【図５３】
0003895006.tif 000071
【図５４】
0003895006.tif 000072
【図５５】
0003895006.tif 000073
【図５６】
0003895006.tif 000074
【図５７】
0003895006.tif 000075
【図５８】
0003895006.tif 000076
【図５９】
0003895006.tif 000077
【図６０】
0003895006.tif 000078
【図６１】
0003895006.tif 000079
【図６２】
0003895006.tif 000080
【図６３】
0003895006.tif 000081
【図６４】
0003895006.tif 000082
【図６５】
0003895006.tif 000083
【図６６】
0003895006.tif 000084
【図６７】
0003895006.tif 000085
【図６８】
0003895006.tif 000086
【図６９】
0003895006.tif 000087
【図７０】
0003895006.tif 000088
【図７１】
0003895006.tif 000089
【図７２】
0003895006.tif 000090
【図７３】
0003895006.tif 000091
【図７４】
0003895006.tif 000092
【図７５】
0003895006.tif 000093
【図７６】
0003895006.tif 000094
【図７７】
0003895006.tif 000095
【図７８】
0003895006.tif 000096
【図７９】
0003895006.tif 000097
【図８０】
0003895006.tif 000098
【図８１】
0003895006.tif 000099
【図８２】
0003895006.tif 000100
【図８３】
0003895006.tif 000101
【図８４】
0003895006.tif 000102
【図８５】
0003895006.tif 000103
【図８６】
0003895006.tif 000104
【図８７】
0003895006.tif 000105
【図８８】
0003895006.tif 000106
【図８９】
0003895006.tif 000107
【図９０】
0003895006.tif 000108
【図９１】
0003895006.tif 000109
【図９２】
0003895006.tif 000110
【図９３】
0003895006.tif 000111
【図９４】
0003895006.tif 000112
【図９５】
0003895006.tif 000113
【図９６】
0003895006.tif 000114
【図９７】
0003895006.tif 000115
【図９８】
0003895006.tif 000116
【図９９】
0003895006.tif 000117
【図１００】
0003895006.tif 000118
【図１０１】
0003895006.tif 000119
【図１０２】
0003895006.tif 000120
【図１０３】
0003895006.tif 000121
【図１０４】
0003895006.tif 000122
【図１０５】
0003895006.tif 000123
【図１０６】
0003895006.tif 000124
【図１０７】
0003895006.tif 000125
【図１０８】
0003895006.tif 000126
【図１０９】
0003895006.tif 000127
【図１１０】
0003895006.tif 000128
【図１１１】
0003895006.tif 000129
【図１１２】
0003895006.tif 000130
【図１１３】
0003895006.tif 000131
【図１１４】
0003895006.tif 000132
【図１１５】
0003895006.tif 000133
【図１１６】
0003895006.tif 000134
【図１１７】
0003895006.tif 000135
【図１１８】
0003895006.tif 000136
【図１１９】
0003895006.tif 000137
【図１２０】
0003895006.tif 000138
【図１２１】
0003895006.tif 000139
【図１２２】
0003895006.tif 000140
【図１２３】
0003895006.tif 000141