JP3895006B2 - 回路カード着脱時の電力制御機能を備えたシステム及び方法 - Google Patents
回路カード着脱時の電力制御機能を備えたシステム及び方法 Download PDFInfo
- Publication number
- JP3895006B2 JP3895006B2 JP16211597A JP16211597A JP3895006B2 JP 3895006 B2 JP3895006 B2 JP 3895006B2 JP 16211597 A JP16211597 A JP 16211597A JP 16211597 A JP16211597 A JP 16211597A JP 3895006 B2 JP3895006 B2 JP 3895006B2
- Authority
- JP
- Japan
- Prior art keywords
- signal
- data
- transaction
- master
- pci
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Details Of Connecting Devices For Male And Female Coupling (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
- Coupling Device And Connection With Printed Circuit (AREA)
Description
【発明の詳細な説明】
【発明の属する技術分野】
本発明は拡張カードの着脱時の電力制御機能を備えてシステム及び方法に関する。
【0002】
【従来の技術】
一般にコンピュータ・システムは拡張スロットを具備しており、これに拡張カードを受容し、拡張カードをそのコンピュータ・システムの拡張バスに電気的に結合する。拡張バスには、ISA(Industry Standard Architecture)バス、EISA(拡張業界標準アーキテクチャ、Extended Industry Standard Architecture)バス、PCI(Peripheral Component Interconnect)バス等、各種のタイプがある。
【0003】
【発明の概要】
概して本発明は1つの面において、回路カードに対するコネクタ及び結合時に回路カードがコネクタから脱離するのを選択的に防止する形状のクランプを備えたシステムを特徴とする。このシステムは、クランプの結合状態を監視し、且つクランプの結合状態に基づいてそのコネクタへの電力供給を調整するために接続された回路を有する。
本発明の実施では、次の1つまたは2つ以上の機能が含まれる。システムは通信リンクを含み、回路はクランプの結合に基づいて通信リンクのコネクタへの結合を調整するために更に接続される。その回路は、スイッチの位置の表示を供給するクランプによって作動される該スイッチと、その表示が所定の期間同じ位置を示すときにその結合状態を更新するために接続される回路とを含む。
本発明は別の面において、中央処理装置(CPU)、回路カードに対するコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたシステムにおいて用いる方法を特徴とする。この方法はクランプの結合状態の監視及びその結合状態の表示のCPUへの通知が含まれる。
本発明の実施では、次の1つまたは2つ以上の機能が含まれる。本発明は、結合状態が変化した場合にその旨を通知すべくCPUに対する割り込み要求を行う機能を含む。この方法は、CPUがアクセスできるメモリに結合状態を記憶することを含む。この方法は、コネクタの電力状態信号を監視すること及びその電力状態信号の表示をCPUに与えることを含む。この方法は、クランプが結合しているときにコネクタに電力を供給すること、及びクランプが結合されていないときにコネクタへの電力供給を停止することを含む。この方法は、コネクタが電力の供給を受けるべくCPUによってイネーブルされているかを判断することを含み、該供給するステップは、コネクタが電力の供給を受けるべくCPUによってイネーブルされているときにのみ、電力が供給される。この方法は、クランプが結合したときにバスをコネクタに結合することと、クランプが結合されていないときにバスをコネクタから電気的に切り離すことを含む。バスの切り離しに関しては、クロック・ラインとバスのその他のラインを接続解除することを含み、バスのその他のラインは、クロック・ラインが接続解除され且つ電力が除かれる前に接続解除される。電気的結合に関しては、クロック・ラインとバスのその他のラインを接続することを含み、バスのその他のラインは、電力が除かれ且つクロック・ラインが接続解除された後に接続される。
本発明は更に別の面において、CPU、回路カードに対するコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたコンピュータ・システムを特徴とする。このコンピュータ・システムは、また、レバーの結合状態を監視し且つその結合状態をCPUに示すために接続された回路を有する。
本発明の実施例では、次の1つまたは2つ以上の機能が含まれる。結合状態が変化した場合に、その旨を通知すべくCPUに割り込み要求を行うように回路を構成することができる。この回路は、CPUがアクセスでき、結合状態の表示を記憶するために接続されたバッファを含むことができる。CPUは、電力を受けるためにコネクタを又は電力を受けるためにバス(例えば、PCIバス)を選択的にイネーブルにすることができ、更にこのコンピュータ・システムは、CPUが電力を受けるためにコネクタをイネーブルしたか又はバスをイネーブルしたかを示すために接続されたバッファを含む。電力を供給するために接続されている回路は、CPUがコネクタを電力を受けるようにイネーブルした場合にのみ給電することができ、また、CPUがコネクタをイネーブルしてバスへ結合されるようにした場合のみ、バスを結合することができる。
本発明は更に別の面において、バス、そのバスに結合される回路カードのためのコネクタ、及び結合時に回路カードのコネクタからの脱離を選択的に防止する形状のクランプを備えたコンピュータ・システムを特徴とする。このコンピュータ・システムは、クランプの結合状態を監視し、クランプの結合状態に基づいて、コネクタへの配電を調整するために接続された回路を有する。
本発明の利点として、次のものを挙げることができる。コンピュータ・システムがパワー・アップのままの状態で拡張スロットの挿入と抜き取りが可能である。拡張カードは、該カードがスロッから取り外される前にパワー・ダウンされる。拡張カードのパワー・アップやパワー・ダウンは、ソフトウェアによって選択的に行うことができる。拡張カードを固定するレバーの動きを検知した場合に、そのレバーの動きを検証し、それによって拡張カードの不要なパワー・ダウンが最小限とされる。パワー・アップ及びパワー・ダウンのシーケンスの段階において、制御回路が拡張バスをコントロールすることによりバスの保全を図る。
【0004】
【発明の実施の態様】
以下の説明において、「#」、「_」、または「!」で始まる、あるいは終わるすべてのシグナル・ニーモニックは、反転された論理状態を意味する。
図1に示すように、コンピュータ・システム10は、1次PCIバス24を含み、これが共通のデザイン26であるブリッジ・チップ26a及びブリッジ・チップ26bに結合されている。ブリッジ・チップ26aは、ケーブル31を介してブリッジ・チップ48aに結合されており、ブリッジ・チップ26bは、ケーブル28を介してブリッジ・チップ48bに結合されている。ブリッジ・チップ48a及び48bは共通のデザイン48でありかつデザイン26とも共通であるが、デザイン26はアップストリーム・モードであり、デザイン48はダウンストリーム・モードである点が異なる。
PCIバス24は、システム・コントローラ/ホスト・ブリッジ回路18を通じてローカル・バス22とインタフェースされる。システム・コントローラ/ホスト・ブリッジ回路18は更に、システム・メモリ20へのアクセスを制御し、システム・メモリ20もまた、CPU14及びレベル2・キャッシュ(L2キャッシュ)16とともにローカル・バス22に結合されている。
PCI−EISA(Extended Industry Standard Architecture)ブリッジ15は、PCIバス24をEISAバス17にインタフェースしている。キーボード・コントローラ21及び読み出し専用メモリ(ROM)23は、両方ともEISAバス17に結合されている。EISAバス17に接続されている不揮発性ランダム・アクセス・メモリ(NVRAM)70の保持している情報は、コンピュータ・システムの電源を切っても揮発しない。オートマチック・サーバ・リカバリ(ASR、automatic server recovery)タイマ72は、コンピュータ・システムの不活性動作を監視する。システムがロックアップしたときには、ASRタイマ72は約10分後に切れる。キーボード・コントローラ21は、キーボード19を監視して、押下されたキーを検出する。
【0005】
図2を参照する。ブリッジ・チップ48aは、PCIバス32aへのインタフェースを備え、ブリッジ・チップ48bは、PCIバス32bへのインタフェースを備える。PCIバス32a及び32bは、デザイン30が共通の2つの拡張ボックス30a及び30b上に存在する。各拡張ボックス30には6つのホットプラグ・スロット36(36a−f)があり、これらは通常の拡張カード807(図27A参照)を電気的機械的に接続することができる。拡張ボックス上の1つのスロット34は、ブリッジ・チップ26を持ったカード46を接続する。各ホットプラグ・スロット36には関連したスイッチ回路41があり、これによってスロット36とPCIバス32間の接続及び切断が行われる。6つの機械的レバー802を用いて(クローズまたはラッチされている場合)、カード807を対応するスロットに選択的に固定する。これに関しては、本願と同日付で出願された「電子装置におけるカードの固定(Securing a Card in an Electronic Device)」と題された米国特許出願で更に詳しく説明されており、これをここにおいて援用する。各拡張ボックス30は、レジスタ52及び82を有し、これらによりレバー802及び拡張ボックス30の状態信号を監視し、更に、レジスタ80によって、スロット36とPCIバス32間の接続及び切断を制御する。
図3を参照する。ブリッジ・チップは、26と48のペアで使用すべく設計されており、それにより、1次PCIバス24と2次PCIバス32との間にPCI−PCIブリッジを形成する。プログラミング・モデルは、2つの階層ブリッジのモデルである。システム・ソフトウェアから見れば、ケーブル28は厳密に1つのデバイス、即ち、ダウンストリーム・ブリッジ・チップ48が挿入されているPCIバスである。これにより、1次及び2次バスを結合する2チップPCI−PCIブリッジのコンフィギュレーション(環境設定)が大幅に単純化される。CPU14に近接しているブリッジ・チップ26は、1次PCIバス24をケーブル28に結合する。第2のPCI−PCIブリッジ48は、拡張ボックス30内にあり、ケーブル28を2次PCIバス32に結合する。モード・ピンUPSTREAM_CHIPの信号は、そのブリッジ・チップがアップストリーム・モードとダウンストリーム・モードのいずれで動作するかを決定する。バス・モニタ106やSIO50内のホットプラグ・ロジックのような一部の非ブリッジ機能は、拡張ボックス30でのみ用いられ、アップストリ―ム・モードのチップ26では機能しない。
【0006】
ブリッジ・チップ26内のクロック・ジェネレータ102は、1次PCIバス24上のクロックPCICLK1に基づいてクロックを生成し、生成されたクロックの1つは、ケーブル28を経由してダウンストリームのブリッジ・チップ48のクロック・ジェネレータ122に供給される。クロック・ジェネレータ122は、1次PCIバス24と同じ周波数で拡張ボックス30においてPCIクロックを生成して駆動する。その結果、両方のブリッジ・チップ26及び48が同じ周波数で動作する。ダウンストリームのブリッジ・チップ48は、ケーブル28の遅延分だけアップストリ―ムのブリッジ・チップ26より相(フェーズ)が遅れる。データがケーブル28から取り出される時点におけるアップストリ―ムのブリッジ・チップ26の非同期境界によって、相の遅延値は制限されない(従って、ケーブルの長さは任意である)。唯一の要件は、2つのブリッジ・チップの周波数が等しいことである。
各ブリッジ・チップのコア・ロジックは、ブリッジのロジック・ブロック(100または120)であって、これに含まれるものとしては、それぞれのPCIバス上でマスタとして働くべきPCIマスタ(101または123)、それぞれのPCIバス上でスレーブ・デバイスとして働くべきPCIターゲットあるいはスレーブ(103または121)、対応するブリッジ・チップのコンフィギュレーション情報が入るコンフィギュレーション・レジスタ(105または125)、及び1次PCIバスと2次PCIバス32間のトランザクションに関連するデータが待ち行列(キュー)に入れられて管理されている、数個の待ち行列が入っている待ち行列ブロック(107または127)がある。アップストリ―ムのブリッジ・チップ26とダウンストリームのブリッジ・チップ48間で転送されるデータは、それぞれブリッジ・チップ26及び48内のケーブル・インタフェース104及び130でバッファ記憶される。
【0007】
各ブリッジ・チップには、割り込み送信ロジックも含まれている。割り込みは8つ存在し、そのうち6つは2次バス・スロットから、1つはSIO回路50から、そしてもう1つはダウンストリームのブリッジ・チップ48からのものである。ダウンストリームのチップ48において、割り込みは、割り込み受信ブロック132で受け取られ、シーケンシャル・タイム・スライスによるシリアル・ストリームとして、ケーブル28を送られる。アップストリ―ムのブリッジ・チップ26においては、割り込みを割り込み出力ブロック114が受け取り、そして、その割り込みを割り込みコントローラに送る。
SIO回路は、制御信号を出してLEDを点灯し、リセットをコントロールし、選択的にスロット36をバス32に接続する。このSIO回路には、レバー802の結合状態及び各スロット36のカード807の状態を読み取るロジックも含まれている。
ブリッジ回路26は、拡張ボックス30における割り込みもサポートし、更に、マルチチャネル割り込みコントローラへのプロプラエタリ(proprietary)・インタフェースをもってホスト・システムのスロットにインストールされたときは、各割り込みの状態をシリアル・ストリ―ムで送出する。また、ブリッジ回路26は、ホスト・システムの標準スロットにインストールされた場合、標準のPCI INTA、INTB、INTC、及びINTD信号を駆動するように構成することもできる。
各ブリッジ・チップには、最大7つのバス・マスタへのアクセスを制御するためにPCIアービタ(116または124)も含まれている。アップストリ―ムのブリッジ26がスロットにインストールされると、アップストリ―ムのブリッジ・チップ26内のPCIアービタがディスエーブルされる。各ブリッジ・チップには、EEPROM、温度センサ等のデバイスと通信するためのI2Cコントローラ(108、126)と、テスト・サイクルを実施するためのJTAGマスタ(110、128)と、バスの利用度や効率、及びそのブリッジ・チップのプリフェッチ・アルゴリズムの効率を測定するためのバス・モニタ(106、127)と、バス履歴や状態ベクトルの情報を記憶するため及びバス・ハング状態をCPU14に通知するためのバス・ウオッチャ(119、129)とが含まれている。各ブリッジ・チップには、使用されないためディスエーブルされているブロックがいくつか存在する。アップストリ―ムのブリッジ・チップ26では、バス・ウオッチャ119、SIO118、PCIアービタ116、及びバス・モニタ106がディスエーブルされている。更に、アップストリ―ムのチップ26の割り込み受信ブロック112及びダウンストリームのチップ48の割り込み出力ブロック134が、ディスエーブルされている。
【0008】
キュー・ブロックの概要
図4を参照する。待ち行列ブロック107及び127は、1次PCIバス24(アップストリ―ム・チップ)、または2次PCIバス32(ダウンストリーム・チップ)とケーブル・インタフェース130との間を流れるトランザクションを管理する。(以降は特筆しない限り、ダウンストリームのブリッジ・チップは、アップストリ―ムのチップと動作が同じであることを前提にして言及する。)待ち行列ブロック127にはケーブル・デコーダ146があり、これにより、2次PCIバス32上で完了すべきトランザクションを、ケーブル・インタフェース130から受け取る。トランザクションをデコードした後、そのデコーダ146は、トランザクションを、そのトランザクションに含まれていたすべての情報と一緒に、3つの待ち行列140、142、及び144のうちの1つに入れる。各待ち行列には数個のトランザクション・バッファが存在し、それらの各々が1つのトランザクションを記憶し、従って、複数のトランザクションを同時に処理することができる。
最初の待ち行列、即ち、ポステド(posted)・メモリ書き込み待ち行列(PMWQ)140は、CPUが2次バス32上での各サイクルの実行に必要なすべての情報とともに、1次バス上に出したポステド・メモリ書き込みサイクルを記憶する。PMWQ140は、4つのトランザクション・バッファを持ち、それらの各々が最大8つのキャッシュ・ライン(256バイト)のデータを有する1つのポステド・メモリ書き込みトランザクションを保持している。状況によっては、8つのキャッシュ・ラインを超えるデータを有するポステド・メモリ書き込みトランザクションは、下に述べるように後続の1つまたは2つ以上のバッファにオーバーフローすることがある。
2番目の待ち行列である遅延された要求待ち行列(遅延要求待ち行列)(DRQ)142は、CPUが2次バス32上での各トランザクションの実行に必要なすべての情報とともに1次バス上に出した遅延された要求トランザクション(遅延要求トランザクション)(即ち、メモリ読み出し(MR)要求、メモリ読み出しライン(MRL)及びメモリ読み出しマルチプル(MRM)要求のような遅延された読み出し要求(遅延読み出し要求)(DRR)と、ダウンストリーム・チップにおける入出力(I/O)読み出し/書き込みやコンフィギュレーション(config、コンフィグ)読み出し/書き込みを記憶する。DRQ142は、3つのトランザクション・バッファを持ち、それらの各々が遅延された書き込みのために、1つのダブル・ワード、つまり「dword」のデータを保持することができる。
【0009】
3番目の待ち行列である遅延された完了待ち行列(delayed completion queue、遅延完了待ち行列)(DCQ)144は、2次バス32上で生成された遅延要求トランザクションに応答してアップストリ―ム・チップが供給する遅延された完了情報(遅延完了情報)を記憶する。遅延読み出し要求については、対応する完了情報に、起動デバイスが要求した読み出しデータ及び読み出し状態(ステータス)(即ち、ターゲット・アボートに関してパリティ・エラーが発生したか否かの表示)が入っている。遅延された書き込みトランザクション(遅延書き込みトランザクション)用に戻される遅延完了情報は、遅延読み出し要求のために返されるそれと同じであり、異なっているのは遅延された書き込みに対しては返されるデータが無い点である。I/O及びコンフィグレーション読み出し/書き込みは、ダウンストリームのバス上でのみ発生するので、3つのトランザクションのうちの1つに対応する遅延完了情報は、アップストリ―ムのDCQだけに入っている。DCQ144は8つの完了バッファを持ち、それらの各々が、単一の遅延された要求について最大8キャッシュ・ラインの完了情報を保持することができる。完了情報に加えて、各完了バッファにはその情報を生成した遅延された要求のコピーが入っている。遅延された読み出しトランザクション(遅延読み出しトランザクション)については、ターゲットのデバイスがDCQ144にデータの供給を停止する前に要求側デバイスが要求したデータの検索を開始すれば、1次バス24と2次バス32の間にデータの「ストリ―ム」を確立することができる。状況によっては、要求側デバイスがDCQ144の対応するバッファから要求したデータをすべて検索するときに、DCQ144が自動的に更なるデータを検索又は「プリフェッチ」する。ストリーミングと自動プリフェッチについては、下に詳述する。
待ち行列−PCI間インタフェース(QPIF)148は、待ち行列140、142及び144からPCIバス32へ、またPCIバス32からDCQ144へ及びケーブル・インタフェース130を経由してアップストリ―ム・チップへ流れるトランザクションを管理する。QPIF148は、「マスタ」モードに入り、PMWQ140及びDRQ142からのポステド・メモリ書き込みと遅延要求トランザクションとを、2次バス上で実行する。ポステド・メモリ書き込み及び遅延要求トランザクションの両方の実行に関して、QPIF148は一定の条件が満たされた場合、1キャシュ・ラインに満たないデータに係るようなトランザクション(即ち、メモリ書き込み(MW)あるいはメモリ読み出し(MR)トランザクション)を1あるいはそれ以上のキャシュ・ラインが求められるトランザクション(即ち、メモリ書き込み及びインバリデイト(無効化)(MWI)トランザクションあるいはメモリ読み出しライン(MRL)又はメモリ読み出しマルチプル(複数)(MRM)トランザクション)に「昇格」させる。さらにQPIF148は、単一キャシュ・ラインのデータに係る読み出しトランザクション(即ち、MRLトランザクション)を、複数キャシュ・ラインのデータに係るトランザクション(即ち、MRMトランザクション)に変換することができる。またQPIF148は、キャシュ・ラインの途中から始まるようなMRLやMRMトランザクションについては、そのキャシュ・ライン全体を読み取ってデータの要求されていない部分を廃棄することによって、それらを「訂正」する。下に詳述するトランザクションの昇格及び読み出しの訂正によって、メモリ・デバイスからのデータ検索に要する時間が短縮され、システム効率が向上する。
【0010】
QPIF148は「スレーブ」モードに入り、要求しているPCIデバイスにDCQ144からのデータを供給し、あるいはPCIバス32からのトランザクションをDCQ144へ、またケーブルを介してアップストリ―ムのチップへ送る。QPIF148がバス32からポステド書き込みトランザクションを受け取った場合、トランザクション・カウンタ159のグループのうちの対応する1つが、下に述べるように、他方のブリッジ・チップのPMWQが一杯になっていない旨の表示をすれば、QPIF148はそのトランザクションをアップストリ―ム・チップに転送する。QPIF148は、遅延された要求(遅延要求)を受け取った場合、まずその要求をDCQ144に転送してトランザクションが既にDCQ内に入っているかを確かめ、もしそうであれば、対応する遅延完了情報がDCQ144に返送されているかどうかを確認する。遅延完了情報がそのDCQ内にあれば、その情報は要求しているデバイスに供給され、そのトランザクションは終了される。その要求が既に待ち行列に繋がっていても遅延完了情報がまだ返送されていなければ、要求デバイス(要求するデバイス)は再試行され、そのトランザクションはPCIバス32上で終了される。その要求が未だ待ち行列に繋がっていなければ、DCQ144がそのトランザクション用に完了バッファを予約し、QPIF148は、対応するトランザクション・カウンタ159が他方のブリッジ・チップが一杯になっていない旨を表示する限り、ケーブル・インタフェース130を介してそのトランザクションをアップストリ―ムのチップに転送する。
DCQ144が、そのバッファの1つに要求デバイス用のデータが入っているがそれが現在のトランザクションにおいて要求されているデータと異なっていると判断すれば、そのバッファをフラッシュして、要求マスタによる無効なデータの受け取りを防止する。バッファはプリフェッチ・データ(即ち、要求デバイスがそのデータの幾らかを検索した後にバッファに残されているデータ、もしくはそのデバイスによって具体的に要求されなかったデータ)が入っているとフラッシュされるが、完了データ(即ち、それを検索するために未だ戻っていない、1つのデバイスが具体的に要求しているデータ)が入っている場合は、フラッシュされない。バッファに完了データが入っていて、要求デバイスがそのバッファを「ヒット」しない要求を出力すれば、DCQ144はそのデバイスを「マルチスレッドの(multi-threaded)」デバイス(即ち、1つよりも多いトランザクションを一度に維持できるデバイス)としてタグ付けし、新しい要求に備えて、別の完了バッファを割り当てる。バッファのフラッシュ及び複数バッファの割り当ての手法(スキーム)については、下に詳述する。
待ち行列ブロック127のマスタ・サイクル・アービタ(MCA)150は、PCIブリッジ・アーキテクチャ仕様、バージョン2.1(PCI Bridge Architecture Specification, Version 2.1)で述べているように、ポステド・メモリ書き込み、遅延要求、及び遅延された完了トランザクション(遅延完了トランザクション)の間の標準の序列制約条件を維持する。これらの制約条件では、バス・サイクルが強い書き込み序列を保ち、且つデッドロックが発生しないことが求められる。従って、PMWQ140におけるポステド・メモリ書き込みトランザクション及びDRQ142における遅延要求トランザクションのPCIバス32上での実行順序は、MCA150が決定する。さらにMCA150は、DCQ144内に記憶されている遅延完了情報の利用可能性を制御する。これらの規則の遵守を保証するため、ダウンストリームのMCA150は、各ポステド・メモリ書き込みサイクルに対して先に出した遅延要求サイクルをバイパスする機会を与え、一方、ダウンストリームとアップストリ―ムの両方のMCA150は、遅延要求及び遅延完了サイクルが先に出されたポステド・メモリ書き込みサイクルをバイパスすることを許さない。MCA150によって決められるトランザクションの序列は後で詳述する。
【0011】
ダウンストリームの待ち行列ブロック127のトランザクション・カウンタ159は、アップストリ―ムのブリッジ・チップで待ち行列に繋がっているトランザクションの数を計数して維持する。ポステド・メモリ書き込み(PMW)カウンタ160は、アップストリ―ムのポステド・メモリ書き込み待ち行列に保持されているPMWトランザクションの数を表示する。PMWカウンタ160は、PMWトランザクションがケーブル・インタフェース130に送られる毎に増分する。このカウンタ160は、QPIF148がケーブル・デコーダ146からPMWサイクルがアップストリ―ムのPCIバス24上で完了した旨の信号を受け取る毎に、減分される。アップストリ―ムのPMWQでPMWトランザクションの最大数(4)が待ち行列に繋がったとき、PMWカウンタ160は、「PMWフル(一杯)」の信号(tc_pmw_full)を発し、QPIF148に対してPCIバス32から更なるPMWサイクルを再試行するよう、通知する。同様に、遅延要求(DR)カウンタ161は、アップストリ―ムの遅延要求待ち行列に保持されているDRトランザクションの数をカウントする。DRQにDRトランザクションの最大数(3)が保持されたとき、DRカウンタ161は、「DRフル」の信号(tc_dr_full)を発し、QPIF148は後続のすべてのDRトランザクションをPCIバス32から再試行しなければならないことを示す。遅延完了(DC)カウンタ162は、アップストリ―ムのマスタ・サイクル・アービタで待ち行列に繋がった(入った)遅延完了の数をカウントする。このMCAに遅延完了の最大数(4)が入ったとき、DCカウンタ162は「DCフル」の信号(tc_dc_full)を発し、ダウンストリームのQPIF148による2次PCIバス32上での遅延要求トランザクションの実行を防止する。「フル」の状態が解消され次第、遅延完了情報をダウンストリームのDCQに送ることができる。
PCIインタフェース・ブロック152は、PCIバス32と待ち行列ブロック127の間に常駐する。PCIインタフェース152は、マスタ・ブロック123及びスレーブ(ターゲット)・ブロック121を含む。このスレーブ・ブロック121により、バス32上のPCIデバイスはブリッジ・チップの内部レジスタ(例えば、ターゲット・メモリ範囲レジスタ155及びコンフィギュレーション・レジスタ)にアクセスでき、DCQ144に記憶されている完了情報を要求でき、QPIF148及びケーブル・インタフェース130を介して1次バスに渡されるトランザクションを起動することができる。スレーブ・ブロック121は、各デバイスがそのREQ#ラインをアサートする時にそれを認識し、そのREQ#信号をPCIアービタ124へ送ることによって、バス32上のPCIデバイスによるPCIバス32の利用可能性をコントロールする。PCIアービタ124がバスの制御権を持つべき要求デバイスを選択するとき、スレーブ・ブロック121がデバイスのGNT#ラインをアサートすることによって、そのデバイスにバスの使用を許可する。バス32の制御権が要求デバイスに与えられて、そのデバイスがトランザクションの開始を示すFRAME#信号をアサートすれば、直ちに、スレーブ・ブロック121がトランザクション情報(例えば、アドレス、コマンド、データ、バイト・イネーブル、パリティ等)をスレーブ・ラッチング・レジスタ156にラッチする。その後、待ち行列・ブロック127は、ラッチング・レジスタ156からトランザクション情報を検索することが可能となり、それをDCQ144及びケーブル・インタフェース130の一方及び両方に供給する。
PCIスレーブ・ブロック121がサポートするトランザクションを、次の表に示す。
【表1】
【0012】
PCIインタフェース152のマスタ・ブロック123は、待ち行列ブロック127(即ち、PMWQ140及びDRQ142に保持されているトランザクション)によって開始されたサイクルのみを実行する。待ち行列ブロック127は、PCIマスタ123に要求信号(q2p_req)を送って、PCIバスを要求する。要求信号を受け取ったPCIマスタ123は、PCIアービタ124への対応する要求信号(blreq )をアサートするかどうかを判断する。待ち行列ブロック127がロックされたサイクルを実行してなく、PCIバス32が別のPCIデバイスにロックされていなければ、マスタ・ブロック123はblreq をアサートする。PCIアービタ124が待ち行列ブロック127を選択する場合、マスタ・ブロック123が待ち行列ブロック127に肯定応答信号(p2q_ack)を送り、バス32の制御権を持っていることを知らせる。PCIアービタ124がバス32に関し他のデバイスからの未処理の要求を持っていなければ、待ち行列ブロック127が未だq2p_req信号をアサートしていなくても、マスタ・ブロック123は、自動的にp2q_ackの許可信号を待ち行列ブロック127に送る。待ち行列・ブロック127がアービトレーションを得て(即ち、アービタ124がblgnt_ 信号をアサートして)トランザクションの開始を示すべくそのq2p_frame信号をアサートすれば、PCIマスタ123は直ちに、送出トランザクション情報(即ち、アドレス、コマンド、データ、バイト・イネーブル、パリティその他)をPCIインタフェース152のマスタ・ラッチング・レジスタ158にラッチする。それからトランザクション情報が用いられ、そのトランザクションはPCIバス32上で完了する。
マスタ・ブロック123がサポート(支持)しているトランザクションを、次の表に示す。
【表2】
一般に、マスタ・ブロック123は標準的なPCIマスタとして動作する。しかし、標準のPCIブリッジと異なり、マスタ・ブロックは、マスタ待ち時間タイマ(MLT)が切れた後でも、キャシュ・ラインの境界に達するまでは、MRL、MRM、またはMWIトランザクションを終了させない。また、マスタ・ブロック123は、「イニシエータ(初期化)準備完了」(IRDY)の待機状態をアサートしない。待ち行列ブロック127がその「ロック」信号(q2p_lock)をアサートし、待ち行列ブロック127がその「アンロック」信号をアサートしたときにバス32上におけるロックを解除すれば、マスタ・ブロック123は、PCIバス32上でロックされたサイクルを実行する。
さらに図57を参照する。PCIインタフェース152には、バッファ・フラッシュ・ロジック154が入っており、これにより、いつDCQ完了バッファの1つまたはすべてを待ち行列ブロック127によってフラッシュさせるかを決定する。PCIスレーブ121が2種類の信号を生成し、待ち行列ブロック127がこれらを用いて完了バッファをフラッシュする。それらの信号は、バッファをフラッシュする時を示すフラッシュ信号(p2q_flush)、及びどのPCIデバイス(即ち、PCIバス上のどのスロット)がフラッシュされるデータを持っているかを示すスロット選択信号(p2q_slot[2:0])である。次の表に、p2q_slot[2:0]とPCIスロット番号の関係を示す。
【表3】
【0013】
p2q_flushがアサートされたとき、待ち行列ブロック127は、p2q_slot[2:0]が「000」に等しければDCQ144のすべての完了バッファを、あるいはもしp2q_slot[2:0]がその他の値を持っていれば8つの完了バッファのうちの対応する1つをフラッシュする。待ち行列ブロック127は、所与の時点において、もしあるならば、どの完了バッファが各PCIスロットに対応するかを追従する。
コンフィグレーション書き込み(wr_cfg)サイクルの発生後、またはI/O書き込み(iowr)サイクルの発生後、あるいはメモリ書き込み(memwr)サイクルがコマンド・チェック状態(cmd_chk_st)中にダウンストリームのターゲットをヒット(hit_tmem)した後に、p2q_flush信号が、最初のPCIクロック(CLK)サイクルの立ち上がりでアサートされる。p2q_flushをこのように作成すべく、ゲート2014、2016、2018及び2020、及びフリップ・フロップ2022が構成されている。
アップストリ―ムのブリッジ・チップにおいては(即ち、upstream_chip_i信号がアサートされるとき)、CPUが1次PCIバス上で唯一のマスタであるため、p2q_slot[2:0]は常に「001」の値を持っている。ダウンストリームのチップにおいては、p2q_slotの値は、フラッシュ条件につながるサイクルが2次バス32から待ち行列ブロック127へのサイクルであるかどうか(即ち、p2q_qcycがアサートされているか)によって、決まる。p2q_qcyc信号がアサートされると、p2q_slot[2:0]は、PCIスレーブ121に生成されるreq_slot[2:0]信号の値をとる。req_slot[2:0]信号は、2次PCIバス32上の7つのデバイスのうちのどのデバイスにバス32の制御権が許されるかを示す。PCIスレーブ121は、バス32上の7つのスロットの各々へのGNT#ラインの値をラッチして7ビットのラッチされた許可(グラント)信号(latched_gnt_[7:1]、待ち行列ブロックに属する8番目の許可ラインは無視される)を形成し、latched_gnt[7:1]をルックアップ・テーブル2006に従って次のようにエンコードして、req_slot[2:0]信号を生成する。
【表4】
フラッシュに至るサイクルが2次のPCIから待ち行列ブロックへのサイクルでなければ、2次バス32上のスロットの1つのターゲット・メモリ範囲へのI/O読み出しまたはコンフィギュレーション読み出しでなければならない。そのサイクルがI/O読み出しまたはコンフィグレーション読み出し(即ち、!iowr AND !wr_cfg)である場合、p2q_slot[2:0]は、そのメモリ範囲がヒットされているPCIスロットの値(mrange_slot[2:0])をとる。それ以外の場合、そのサイクルはI/O書き込みまたはコンフィグレーション書き込みであり、p2q_slot[2:0]は完了バッファがすべてフラッシュされるように「000」に等しくセットされる。ゲート2008及び2010、及びマルチプレクサ2002及び2004は、p2q_flush[2:0]をこのように生成すべく構成される。
【0014】
ケーブル・デコーダ
図71を参照する。ケーブル・デコーダ146は、ケーブル・インタフェースを介してトランザクションを受け取り、各トランザクションを受容できる適切な待ち行列を選択する。ケーブル・デコーダがデータ・フェーズにある場合(即ち、data_phaseまたはdata_phaseの値を次のCLKサイクルで設定する非同期信号であるnext_data_phaseがアサートされるとき)、ケーブル・デコーダ146はケーブル経由で送られてくるコマンド・コード(cd_cmd[3:0])を調べて、トランザクションを受け取るべき待ち行列を決定する。下の表に示されるように、cd_cmd[3:0]は「1001」の値を持っているとき、トランザクションは遅延完了であり、従ってケーブル・デコーダは、cd_dcq_select信号をアサートし、DCQに対してそのトランザクションを要求するようにする。コマンド・コード信号(cd_cmd[2:0])の3つのLSBが「111」であるとき、トランザクションはポステド(ポストされた)・メモリ書き込みであり、従ってケーブル・デコーダは、cd_pmwq_select信号を生成し、入ってくるトランザクションについてPMWQに注意を喚起する。トランザクションがポステド・メモリ書き込みでも遅延完了でもなく、コマンド・コードもストリーミング信号を表していなければ、ケーブル・デコーダは、cd_drq_select信号をアサートし、DRQに対してそのトランザクションを要求するようにする。ゲート2024、2026、2028及び2030を、cd_dcq_select、cd_pmwq_select及びcd_drq_select信号をこのように生成するように構成する。
各タイプのトランザクションに対応する4ビットのコマンド・コードを、次の表に示す。
【表5】
ダウンストリームのブリッジ・チップが1次バスと2次バス・マスタとの間にデータ・ストリームを設定したとき、アップストリ―ムのケーブル・デコーダは「1000」のコマンド・コードを受信する。このコードは、ダウンストリームのチップがアップストリ―ムのチップに対しストリーム設定完了を知らせるために生成したストリーミング信号を表す。ケーブル・デコーダは、このコマンド・コードを受け取ったときcd_stream信号をアサートして、アップストリ―ムのデバイスのQPIFに対してそのトランザクションを続けるよう指示する。ケーブル・デコーダはさらに、cd_stream_next_data信号を生成し、アップストリ―ムのチップに対し2次バスに別のデータを1つ供給するように指示する。cd_stream_next_data信号は、cd_stream信号がアサートされるときにアサートされ、そのトランザクションはデータ・フェーズにあり(即ち、data_phaseがアサートされている)、そして、next_data信号がダウンストリーム・チップからケーブル・インタフェースを介して受け取られている(next_data信号はc2q_buff[3:0]信号のラインの1つに現れ、ストリームが発生していないとき、ダウンストリームのどのDCQバッファが現在のトランザクションに関連しているかを待ち行列ブロックに知らせる)。cd_stream_next_data信号は、cd_stream信号がデアサートされるか、または新しい要求がケーブル・インタフェースから受け取られた(即ち、c2q_new_reqがアサートされる)ときにデアサートされる。ゲート2032及び2034は、cd_stream及びcd_stream_next_data信号をこのように生成すべく構成される。
【0015】
ポステド・メモリ書き込み待ち行列
図72を参照する。ポステド・メモリ書き込み待ち行列(PMWQ)140は記憶エレメントであり、ターゲットのバス上におけるポステド書き込みトランザクションの実行に必要なコマンド情報がすべてこれに入っている。PMWQは、各トランザクションを識別する情報を保持するタグ・メモリ部分2036、PMWQにおける各トランザクションに関連する書き込みデータを保持するデータRAM2038、及びPMWQ内外へのトランザクションの流れを管理する各種の制御ブロックを含む。次の表に示すように、PMWQにおける各トランザクションについて、タグ・メモリ2036は、書き込まれるべきアドレス、PCIコマンド・コード(MWまたはMWI)、アドレス・パリティ・ビット、及び「ロックされたサイクル」や「デュアル・アドレス・サイクル」の表示ビットといった情報を保存している。タグ・メモリ2036は、さらにPMWQにおける各トランザクションに対応するデータのデータRAMの位置へのポインタも記憶している。
【表6】
PCI仕様2.1では、ポステド・メモリ書き込みトランザクションはそれらが受け取られた順に実行されるべきことを規定しているので、タグ・メモリ2036は循環FIFOデバイスとなる。PMWQ及び、従ってタグ・メモリ2036は、同時に4つまでのポステド・メモリ書き込みのトランザクションを処理することができる。
データRAM2038は、PMWQにおける各トランザクションに1つずつ、合計4つのデータ・バッファ2042、2044、2046及び2048を含む。各バッファは、最大8つのキャシュ・ライン、又は256バイトのデータ(1キャシュ・ラインにつき8ワード)を保持することができる。1つのバッファにおける各キャシュ・ラインについて、バッファは、8つのデータ・パリティ・ビット2040(dwordにつき1つ)及び32のイネーブル・ビット2050(1バイトにつき1つ)を記憶している。
ケーブル・インタフェース・ブロック2060は、各トランザクション及び関連するデータをケーブル・デコーダから受け取り、そのトランザクションをタグ・メモリ2036に入れる。待ち行列インタフェース・ブロック2053は、ケーブル・インタフェース・ブロック2060からデータを受け取り、それをデータRAM2038内の適当な位置に入れる。さらに待ち行列インタフェース2053はデータRAM2038からデータを検索し、QPIFがPCIバス上で対応するトランザクションを実行しているとき、そのデータをQPIFに供給する。入力ポインタ・ロジック・ブロック2054は、待ち行列インタフェース2053に対して次のデータ・ワードをどこに入れるかを示す入力ポインタを各バッファに1つずつ、合計4つ生成する。有効(出力)ポインタ・ブロック2056は、次に取られるワードの位置を示す出力ポインタを各バッファに1つずつ、合計4つ生成する。
【0016】
さらに図73を参照する。有効フラグ・ロジック・ブロック2052は、データRAM2038において4つのバッファの各々について8ビットの有効ライン・レジスタ2062を1つずつ保持している。有効ライン・レジスタ2062は、各バッファ内の8つのキャシュ・ラインのどれに有効なデータが入っているかを示す。1つのキャシュ・ラインの最後のワードがデータで充填される(即ち、valid_pointer[2:0]が「111」に等しく、cd_next_dataがアサートされてそのワードが充填されていることを示す)場合、8ビットのケーブル有効信号における対応するビット(即ち、q0_cable_valid[7:0]、q1_cable_valid[7:0]等)がセットされる。セットすべきビットは、充填されているキャシュ・ラインを示す有効ポインタ(valid_pointer[5:3])の3つのMSBによって決定される。トランザクションの終わりでケーブル・デコーダからスロット・バリデーション(validation)信号(validate_slot)を受け取ったとき、ケーブル有効信号における対応するビットもセットされる。ケーブル有効信号は、最後のワードが充填されるか又はvalidate_slot信号が受信された後、最初のPCIクロック・サイクル(CLK)の立ち上がりで、選択されたデータ・バッファに対応する有効ライン・レジスタ2062にラッチされる。それ以外の場合、有効ライン・レジスタはその現在値を維持する。有効ライン・レジスタ2062におけるビットは、8ビットの無効信号(即ち、q0_invalid[7:0]、q1_invalid[7:0]等)の対応するビットがアサートされたときにクリアされる。
有効フラグ・ロジック・ブロック2052は、pmwq_valid[3:0]信号を生成して、この信号は、もしあるとすれば、4つのデータ・バッファのどれに少なくとも1つの有効なデータのラインが入っているかを示す。有効ブロック2052は、さらにpmwq_valid_lines[7:0]信号を生成して、選択されたデータ・バッファの8つのキャシュ・ラインのうちのどれが有効であるかを示す。QPIFからの待ち行列選択信号(q2pif_queue_select[1:0])を用いて、pmwq_valid_lines[7:0]信号を生成するために、どのデータ・バッファの有効ライン・レジスタ2062を用いるかを選択する。待ち行列ブロックがバスの制御権を得て選択されたデータ・バッファからのポステド・メモリ書き込みサイクルを実行するとき、その待ち行列ブロックは、対応するビットがpmwq_valid_lines[7:0]信号においてセットされる各ラインのデータをすべて転送する。最初のデータ・バッファ(q0_valid[7:0])に対しての有効ライン・レジスタ2062における値を設定すべく、ゲート2064、2066、2068、2070及び2072、及びフリップ・フロップ2074が構成される。同様の回路が、他の3つのデータ・バッファに対しての有効レジスタの内容を決定する。マルチプレクサ2076は、pmwq_valid_lines[7:0]信号の値を選択する。
【0017】
次に図74を参照する。フル・ライン・ロジック・ブロック2058は、4つのデータ・バッファの各々について8ビットのフル・ライン・レジスタ2078を1つずつ保持している。各フル・ライン・レジスタ2078の内容は、対応するデータ・バッファにおける8つのキャシュ・ラインのどれがフル(一杯)になっているかを表示する。各フル・ライン・レジスタ2078のビットは、下に述べるフル・ライン状態マシン2080によって生成された非同期のnext_full_line_bit信号によってセットされる。QPIFからの待ち行列選択信号(select_next_queue[3:0])がデータ・バッファの1つを選択し、next_full_line_bit信号がアサートされた場合、有効ポインタ(valid pointer[5:3])の3つのMSBによって示されるキャシュ・ラインに対応するフル・ライン・レジスタ2078のビットがセットされる。3×8デコーダ2082は3ビットの有効ポインタを何れのビットをセットするかを決定する8ビット信号に変換する。8ビットのフル・ライン信号(qo full line)は、対応するフル・ライン・レジスタ2078の内容から各データ・バッファに対して生成される。フル・ライン信号は、対応するデータ・バッファにおけるどのラインが満たされているか、即ちフルであるかを示す。フル・ライン論理(ロジック)ブロック2058は、また、選択されたデータ・バッファの何れのキャッシュ・ラインがフルであるかを示すpmwq_full_line[7:0]信号を生成する。マルチプレクサ2084及びq2pif queue select[1:0]信号は、pmwq_full_line[7:0]信号を生成するために用いられる。
【0018】
さらに図75を参照する。フル・ライン状態マシン2080は、リセットされるとIDLE状態2086に入る。IDLE状態2086において、next_full_line_bitは零にセットされる。トランザクションがPMWQにおかれる場合、そのトランザクションは、アドレス・フェーズ(相)とデータフェーズ(相)の2つのフェーズで起こる。データ・フェーズが始まり(即ち、clock_second_phase信号がアサートされ)、有効ポインタがキャシュ・ラインの最初のワードを指したとき(valid_pointer[2:0]=“000”)、状態マシン2080は、DATA状態2088に遷移する。DATA(データ)状態において、next_full_line_bit信号は、有効ポインタがキャシュ・ラインの最後のワードを指し(valid_pointer[2:0]=“111”)、cd_next_data信号がケーブル・デコーダにアサートされ(最後のワードはデータで充填されたことを示す)、ケーブル・デコーダからのバイト・イネーブル信号(cd_byte_en[3:0])が「0000」に等しい場合にのみ、アサートされる。このような状況が発生したとき、状態マシンもIDLE(アイドリング)状態2086に遷移して戻る。トランザクションが終了する(即ち、cd_completeがアサートされる)前にこのような状況が起こらなければ、next_full_line_bit信号はデアサートされたままとなり、状態マシン2080はIDLE状態2086に遷移して戻る。状態マシン2080はまた、cd_byte_en[3:0]信号が「0000」以外の値になった場合、next_full_line_bit信号をアサートせずにIDLE状態2086に遷移する。
【0019】
再び図72に戻り、そして図76も参照する。対応するデータを受信するデータ・バッファが一杯になれば、通常はPMWQはケーブル・デコーダからのトランザクションを終了しなければならない。しかし、バッファがフルになった後でもケーブル・デコーダがデータの送信を続けていれば、オーバーフロー・ロジック・ブロック2090によってデータは次の空のバッファにオーバーフローするようにされる。オーバーフロー・ロジック・ブロック2090は、オーバーフロー・レジスタ2092を維持しており、もしあるとすれば、4つのデータ・バッファのどれがオーバーフロー・バッファとして使用されているかを表示する。オーバーフロー・レジスタ2092の内容は、4ビットのオーバーフロー信号(pmwq_overflow[3:0])の生成に用いられる。トランザクションがデータ相にあり(即ち、data_phaseがアサートされる)、有効ポインタが1つのデータ・バッファの最後のワードに達し(即ち、valid_pointer[5:0]=“111111”)、ケーブル・デコーダがデータが更に入ってくることを示し(即ち、cd_next_dataがアサートされる)、そしてケーブル・デコーダがそのトランザクションの完了を示していない(即ち、cd_completeがアサートされていない)場合には、最近フルになったデータ・バッファを指すselect_next_queue[3:0]信号が使用されて、次のデータ・バッファに対応するオーバーフロー・レジスタのビットがセットされる。もしこれらの条件が満たされなければ、そのオーバーフロー・ビットがクリアされる。ゲート2094及び2095がselect_next_queue[3:0]信号と関連して用いられ、これらの条件が満たされたときに、適切なオーバーフロー・レジスタのビットのセット及びクリアを行う。
単一のトランザクションが、最後の未使用バッファが一杯になるまで追加のバッファに継続してオーバーフローすることがある。複数のバッファが1つのオーバーフロー・バッファとして使用される場合は、オーバーフロー・レジスタの複数のビットがセットされる。オーバーフロー・レジスタ内における連続してセットされたビットは、1つのトランザクションが複数のバッファにオーバーフローしたことを表示する。ポステド・書き込みトランザクションがPMWQに入っているとき、オーバーフロー・ビットはセットまたはクリアされる。また、もしQPIFがターゲットのバス上でPMWトランザクションの実行を開始し、データがまだPMWQに入ってきている間に元のバッファを空にし始めれば、オーバーフローのトランザクションを継続するために元のバッファを再び使用できる。オーバーフローは使用可能なすべてのバッファが一杯になるまで継続できる。
【0020】
遅延要求待ち行列(DRQ)
図77を参照する。DRQ142は、ターゲットのバス上において遅延読み出し要求(DRR)及び遅延書き込み要求(DWR)トランザクションを完了するために必要な情報をすべて記憶する。DRQは、読み出される又は書き込まれるべきアドレス、PCIコマンド・コード、バイト・イネーブル、アドレス及びデータのパリティ・ビット、「ロックされたサイクル」及び「デュアル・アドレス・サイクル」表示ビット、及び完了情報用に対する起動ブリッジ・チップにリザーブされた遅延完了バッファのバッファ番号のような情報を含む。また、待ち行列メモリ2100は、遅延書き込みサイクルにおいてターゲット・バスに書き込まれるべき最大32ビット(1ワード)のデータを保持する。遅延書き込みサイクルでは1ワードを超えるデータが係ることがないので、DRQにはデータRAMが必要でない。DRQ及び待ち行列メモリ2100は、同時に3つまでの遅延要求トランザクションを保持することができる。ケーブル・インタフェース・ブロック2102は、ケーブル・デコーダから遅延要求トランザクションを求め、それらを待ち行列メモリ2100に入れる。DRQ待ち行列メモリ内に維持される情報を、次の表に示す。
【表7】
【0021】
さらに図785を参照する。有効フラグ・ロジック・ブロック2104は、DRQが待ち行列メモリ2100内におけるトランザクションの実行に必要なすべての情報を受け取った時点を判定する。DRQスロットの1つが対応するスロット選択信号(即ち、第1スロットに対してselect_zero、第2スロットに対してselect_one、及び第3スロットに対してselect_two)によって選択され、validate_slot信号がケーブル・デコーダによるDRQに対するトランザクションの送達の完了を表示してそのスロットを有効としたとき、そのスロットに対応する有効信号(即ち、q0_valid、q1_valid、またはq2_valid)が次のPCIクロック(CLK)サイクルの立ち上がりでアサートされる。スロットが選択されなくてvalidate_slot信号によって有効とされない場合、そのスロットの有効信号は、QPIFがDRQ選択信号(q2pif_drq_select)をアサートしてそのスロット(q2pif_quuue_select=スロット番号)を識別することによってそのスロットを選択したが、サイクル・アボート信号(q2pif_abort_cycle)をアサートすることによってそのトランザクションをアボートした場合には、デアサートされる。また、QPIFが更なるデータを待っている(即ち、q2pif_next_dataがアサートされている)間にDRQがサイクル完了信号(例えば、q0_cycle_complete)をアサートしてそのトランザクションを終了すれば、そのバリッド信号はデアサートされる。しかし、QPIFが他のブリッジ・チップに対してデータのストリーミングを現在行っていれば(即ち、q2pif_streamingがアサートされている)、そのサイクル完了信号は無視される。それ以外の場合、そのスロットの有効信号がクロック・サイクルで特にアサートもデアサートもされなければ、現在値が保持される。有効フラグ・ロジック・ブロック2104もDRQ有効信号(drq_valid[3:0])を生成し、これが各個別のスロットに関する有効信号を組み合わせることにより(即ち、drq_valid={0,q2_valid,q1_valid,q0_valid})、3つのDRQスロットのうち、もしあるとすれば、どれに有効なトランザクションが入っているかを表示する。スロットの有効信号及びDRQ有効信号をこのようにして生成するように、ゲート2106、2108、2110、2112、2114、マルチプレクサ2116、2118、及びフリップ−フロップ2120が構成される。
DRQは更にポインタ・ロジック・ブロックを含み、これが遅延読み出し要求トランザクション中にデータが読み出されるべきメモリ位置へのポインタを保持している。遅延読み出しトランザクションが開始される位置のアドレスが待ち行列メモリ2100にロードされたとき、有効ポインタ・ロジック・ブロック2122が6ビットの有効ポインタを生成し、これがトランザクションがどこで終了するかを示す。そのトランザクションがシングル・ワードに係るもの(例えば、メモリ読み出し)であれば、その有効ポインタ・ロジック・ブロック2122がその有効ポインタを待ち行列メモリ2100にロードされるアドレスに等しくなるように設定する。メモリ読み出しライン・トランザクションについては、有効ポインタ・ロジック・ブロック2122が有効ポインタに「000111」の値を設定し、これは、データの最後の有効部が開始点から8ダブル・ワード(即ち、1キャシュ・ライン)先にあることを示す。メモリ読み出しマルチプル・トランザクションについては、有効ポインタが「111111」にセットされ、これは、データの最後の有効部が開始点から64ダブル・ワード(即ち、8キャシュ・ライン)先にあることを示す。有効ポインタ・ロジック・ブロック2122は、DRQの各スロットについて1つの有効ポインタを保持している(valid_pointer_0[5:0]、valid_pointer_1[5:0]、及びvalid_pointer2[5:0])。下に詳述するように、DRQがQPIFからストリーミング信号(q2pif_streaming)を受信するとき、有効ポインタの位置はDRQに無視される。
【0022】
出力ポインタ・ロジック・ブロック2124は、DRQの各スロットにつき1つずつ、合わせて3つの出力ポインタ(output_pointer_0[5:0]、output_pointer_1[5:0]、及びoutput_pointer_2[5:0])を保持し、それらはメモリから読み出されて他方のブリッジ・チップに送られるべき次のデータのワードを示す。このポインタは、QPIFが次のデータを読み出す態勢にあることを表示すると(即ち、QPIFがq2pif_next_dataをアサートする)、毎度のワード読み出しにつき1つ増分する。ストリーミングの状態にある場合を除き、トランザクションは出力ポインタが有効ポインタに達したとき終了(完了)する。もしデータをすべて読み出す前(即ち、出力ポインタが入力ポインタに達する前)にトランザクションが終了した場合、QPIFは、トランザクションが再開するときに出力ポインタが示す位置でピックアップを行う。出力ポインタが増分したが出力ポインタ・ロジック・ブロック2124がステップバック(stepback、後退)信号(q2pif_step_back)を受信して、QPIFがデータの最後の部分を読み出すことができないうちにトランザクションがPCIバス上で終了したことが表示された場合、出力ポインタ・ロジック・ブロック2124は、読み出されていないデータの最後の部分がトランザクションが再開したときに読み出せるように、カウンタを1つ減分する。待ち行列インタフェース・ブロック2126は、トランザクションの情報及び有効ポインタと出力ポインタをQPIFに渡す。
【0023】
遅延完了待ち行列(DCQ)
第79図を参照する。DCQ 144は、開始バス上に出される各遅延された要求(遅延要求)に対するターゲット・バスの応答が入っている遅延完了メッセージ(遅延された完了メッセージ)を保持する。遅延読出し要求(遅延された読み出し要求)に対応する遅延完了メッセージは要求されたデータを含み、一方遅延書込み要求(遅延された書き込み要求)に対応する遅延完了メッセージには何も含まれていない。ケーブル・インタフェース・ブロック2130はケーブル・デコーダに遅延完了メッセージを要求し、その遅延完了情報をタグ・メモリ2132に供給する。DCQ及び、従ってタグ・メモリ2132は一度に最大8つの遅延完了メッセージを保持できる。タグ・メモリ2132は、遅延完了メッセージの元となる要求の中に入っているPCIコマンドやアドレス、バイト・イネーブル・ビット、アドレス及びデータ・パリティ・ビット、及び「ロックト・サイクル」や「デュアル・アドレス・サイクル」ビットといった情報を保存する。また、常に1ワードのみのデータを対象とする遅延書込みトランザクションについては、タグ・メモリ2132は書き込まれたデータのコピーを保持する。タグ・メモリ2132内の8つのスロットの各々は、DCQデータRAM 2134内の8つのデータ・バッファの対応する1つへの暗示ポインタを含む。遅延読出しトランザクションについては、返されたデータがデータRAM 2134内の対応するデータ・バッファ2135a−hに入る。DCQ内における各トランザクションに関するタグ・メモリ内の情報を次の表に示す。
【表8】
【0024】
DCQデータRAM 2134内の8つのデータ・バッファの各々が最大8キャシュ・ラインの遅延完了データを保持する。従って、これらのバッファは最も大きい遅延要求トランザクション(メモリ読出し多重トランザクション)に関する完了データをすべて格納できるほど大きい。しかし、各データ・バッファの容量はブリッジ・チップのコンフィギュレーション・レジスタ内のコンフィギュレーション・ビット(cfg2q_eight_line)をセットすれば4キャシュ・ラインに減らされる。各データ・バッファは、単一の遅延完了トランザクションにおけるデータで、あるいは1回の遅延完了トランザクションですべての要求データが返されない場合は、複数の遅延完了トランザクションにおけるデータで満たされる。しかし、要求データを供給するために必要とする遅延完了トランザクションの回数に関わらず、各データ・バッファには1つだけの元の遅延要求に対応するデータしか入れることができない。
待ち行列インタフェース・ブロック2136は、完了データのDCQケーブル・インタフェース2130からデータRAM 2134内への、及びデータRAM2134からQPIFへの完了データの流れをコントロールする。3つのロジック・ブロックがポインタを生成し、それらによって8つのデータ・バッファに保存されるデータの出し入れを管理する。1番めのブロックである入力ポインタ・ロジック・ブロック2138は、8つのデータ・バッファの各々への6ビットの入力ポインタ(in_pointer_0[5:0]、in_pointer_1[5:0]等)を有する。各入力ポインタは、次のデータ・ワードが入るべき対応するデータ・バッファ内のロケーションをポイントする。2番目のブロックである出力ポインタ・ロジック・ブロック2140は、8つのバッファの各々について1つの6ビットの出力ポインタ(out_pointer_0[5:0]、out_pointer_1[5:0]等)を有する。各出力ポインタは、QPIFによって最後に除去されたワードの直後のデータ・ワードのロケーッションをポイントする。選択されたデータ・バッファ用の出力ポインタは、QPIFがデータの次の部分に対する準備が完了したことを表示すると(即ち、q2pif_next_dataがアサートされる)増分する。出力ポインタが増分しても、トランザクションがQPIF以外のデバイスによって終了されたためデータの最後の部分が要求しているデバイスに達しなければ、QPIFがステップバック信号(q2pif_step_back)をアサートすることによって出力ポインタ・ロジック・ブロック2140がその出力ポインタを1ワード減分する。
3番目のポインタ・ブロックである有効ポインタ・ロジック・ブロック2142は、8つのデータ・バッファの各々について6ビットの有効ポインタ(valid_pointer_0[5:0]、valid_pointer_1[5:0]等)を有し、これによって対応するデータ・バッファ内のQPIFに得られるべき次のデータ・ワードを示す。PCIスペック2.1では、先に開始されているポスティッド・メモリ書込みトランザクションの前に読出し完了データを返せない旨が規定されているため、PMWQ内でポスティッド・メモリ書込みが始まろうとしているときにDCQ内に入れられた遅延完了データは、そのポスティッドメモリ書込みがPCIバス上で完了してPMWQから除去されるまでは要求しているデバイスに得られる状態にならない。従って、先に待ち行列に入れられたポスティッド・メモリ書込みトランザクションがPMWQ内に残っている限り、有効ポインタはその現在位置に留まっていなければならない。そして、先に待ち行列に入れられたポスティッド・メモリ書込みがすべてPMWQから除去されたとき、有効ポインタをイン・ポインタと同じ位置に移動させることができる。PMWQが空のときは、すべての遅延完了データはDCQ内に入れられると直ちに有効(即ち、要求しているデバイスに得られる状態)となる。
【0025】
更に第80及び81図も参照する。有効ポインタ・ロジック・ブロック2142は、PMWQ内でポスティッド・メモリ書込みが始まろうとしているときに遅延完了待ち行列に入る遅延完了トランザクションをすべて有効とするよう、マスタ・サイクル・アービタ(MCA)に要求しなければならない。しかし、MCAは一度に4つを超える遅延完了トランザクションを待ち行列に入れられることができないので、下に述べるように、有効ポインタ・ロジック・ブロック2142は一度に4つを超えない遅延完了データ・バッファの有効性(妥当性)検査を要求する。有効ポインタ・ロジック・ブロック2142は、更に特定の時点にMCA内で待ち行列に入れられた4つの遅延完了トランザクションがどれであるかを監視していなければならない。このために、有効ポインタ・ロジック・ブロック2142は4スロットのレジスタを2つ持っている: 即ち、DCQバッファ番号レジスタ2144、及び有効性検査要求レジスタ2146である。バッファ番号レジスタ2144は、MCA内で待ち行列に入れられている各遅延完了トランザクションの、ケーブル・デコーダが出すDCQバッファ番号信号(cd_dcq_buff_num[2:1])で決定される3ビットのDCQバッファ番号を保持する。有効性検査要求レジスタ2146は、バッファ番号レジスタ2144の4つのスロット2148a−d内に格納されている番号のDCQバッファの各々について1つのトランザクション有効性検査要求ビットを保持している。有効性検査要求レジスタ2146のスロット2150a−dの各々の中の要求ビットは、もし対応する遅延完了トランザクションがMCA内で待ち行列に入れられるとアサートされる。4つの有効性検査要求スロット2150a−d内のビットの値は、一緒に4ビットの有効性検査要求信号(dcq_valid[3:0])としてMCAに供給される。
【0026】
遅延完了トランザクションがMCA内に待ち行列に入れることになると、それに対応するDCQバッファ番号がcd_dcq_buff_num[2:0]信号によってバッファ番号スロット2148a−dの1つにロードされる。DCQバッファ番号がロードされるスロット2148a−dは、2ビットの選択信号(next_valid_select[1:0])によって選択される。選択信号の値は、有効性検査要求レジスタ2146とルックアップ・テーブル2152(その内容を下の表に示す)によって生成されるdcq_valid[3:0]信号の値によって決まる。スロットは、それがnext_valid_select[1:0]に選択されたときにロードされ、そのときはケーブル・デコーダが既にDCQを選択しており、トランザクションを完了している(即ち、cd_dcq_select及びcd_completeがアサートされている)。そして、PMWQ内で少なくとも1つのポスティッド・メモリ書込みトランザクションが未処理となっている(即ち、pmwq_no_pmwがアサートされていない)。ゲート2154、2156、2158、2160、2162、及び2x4デコーダ2164が、バッファ番号レジスタ2144をこうしてロードするように構成される。同様に、有効性検査要求レジスタ2146が、ゲート2154、2156、2158、2160、2162、及び2x4デコーダ2164の出力で設定される。
【表9】
【0027】
dcq_valid[3:0]信号に応答して、MCAは4ビットのDCQ実行信号(mca_run_dcq[3:0])を出力し、バッファ番号レジスタがポイントしているDCQバッファのうち、その有効ポインタを更新するバッファを表示する。mca_run_dcq[3:0]信号は、pmwq_no_mpw信号及び8つのデータ・バッファの各々のイン・ポインタとともに有効ポインタ更新ロジック・ブロック2166に渡される。もしMCAがmca_run_dcq[3:0]ビットの1つをアサートした後にもPMWQ内にポスティッド・メモリ書込みトランザクションが残っていると(これはポスティッド・メモリ書込みトランザクションが遅延完了トランザクションが待ち行列化された後に待ち行列に入ったが、MCAが未だ対応するmca_run_dcqのビットをアサートしていなかった場合に起こる)、MCA内に同じDCQバッファに対応する他の遅延完了トランザクションが待ち行列に入れられていない限り、対応する有効ポインタが更新される。もし同じDCQバッファに関する遅延完了トランザクションがMCA内に待ち行列に入れられていれば、このトランザクションに対応するmca_run_dcqがアサートされたときにのみ有効ポインタが更新される。一方、pmwq_no_mpw信号がアサートされると、遅延完了がMCA内にいまだ待ち行列に入れられていてもいなくても、直ちにすべての有効ポインタが対応するイン・ポインタにマッチするように更新される。mca_run_dcqのビットがアサートされたとき、妥当性検査要求レジスタ2146内の対応するビットがクリアされる。ゲート2168、2170、2172、2174及び2176は、有効性検査要求レジスタのビットをこうしてクリアするように構成される。
【0028】
再び第79図を参照する。ヒット・ロジック・ブロック2180は、PCIバス上の要求デバイスからの遅延要求トランザクションがDCQ内の遅延完了メッセージの1つを「ヒット」した時点を特定する。PCIスペック2.1によれば、遅延完了が1つの要求にマッチさせらるためには、次の属性が同一でなければならない: 即ち、アドレス、PCIコマンド、バイト・イネーブル、アドレス及びデータ・パリティ、データ(書込み・要求の場合)、REQ64#(64ビット・データのトランザクションの場合)、及びLOCK#(サポートされている場合)。要求がPCIスレーブにラッチされたとき、QPIFは要求情報を検索してそれをDCQに送り、そしてチェック・サイクル信号(q2pif_check_cyc)をアサートして、要求情報をDCQタグ・メモリ2132内に格納されている遅延完了メッセージと比較するようDCQのヒット・ロジック2180に指示する。ヒット・ロジック2180は、64ビットのアドレス信号(q2pif_addr_[63:2])、4ビットのPCIコマンド信号(q2pif_cmd[3:0])、4つのイネーブル・ビット(q2pif_byte_en[3:0])、デュアル・アドレス・サイクル・ビット(q2pif_dac; PCIのREQ64#信号に対応するビット)、QPIFからのロック・ビット(q2pif_lock)、及び、もし要求が書込み要求であれば書き込まれるべきデータ(q2pif_data[31:0])を受け取る。PCIスペック2.1に規定されていないが、QPIFは更に下に述べるように待ち行列ブロックのバッファ・フラッシュ・ルーチンを強化するため、要求デバイスのスロット番号(q2pif_slot[2:0])を供給する。それからヒット・ロジック2180は、これらの信号の各々を8つのDCQバッファ内に保存されている遅延完了情報と比較する。もしすべての信号が遅延完了メッセージのいずれかとマッチすれば、ヒット・ロジック2180は8ビットのヒット信号(dcq_hit[7:0])内の対応するビットをアサートして、マッチする完了メッセージが入っているバッファを識別する。ヒットが発生するとQPIFは完了メッセージを検索し、それを要求しているデバイスに渡し、もしその要求が読出し要求であれば、データRAM 2134内の対応するデータ・バッファから返されたデータの除去を開始する。もしその要求情報がDCQ内の遅延完了メッセージのいずれの完了情報ともマッチしなければ、その要求はDCQを「ミス」し、次に利用可能なDCQバッファに入れられ、QPIFによりケーブルを介して他方のブリッジ・チップに転送される。下に詳述するように、DCQをミスする要求を発するPCIデバイスは、その完了メッセージが返されるまで、そのREQ#ラインをマスクしておくことができる。
ヒット・ロジック2180は多重スレッド・マスタ検出ブロック2182にもインタフェースし、もしあるとすれば、多重スレッド・デバイスの入っているPCIスロットを検出する。多重スレッド・デバイスは一度に複数の遅延トランザクションを保持することができ、従って特別に扱われなければならない。多重スレッド・マスタが検出されると、コンフィギュレーション・レジスタ内の対応するビットがセットされ、そのデバイスは複数の未処理の遅延トランザクションを維持することができ、従ってそのREQ#ラインがマスクされるべきであることを表示する。マルチスレディッド・マスタの検出については下に詳述する。
DCQは、その別の機能として1次と2次PCIバス間に読出しデータのストリームを設定する機会の存在する時点を判断する。ストリーミングの機会は、ターゲット・デバイスによってまだターゲット・バス上に置かれている状態のケーブル・デコーダによって遅延完了データがDCQ内に入れられているときに存在する。もしターゲット・デバイスがまだPCIバス上にデータを出している間にトランザクションを開始したPCIデバイスが再びその要求を発すれば読出しストリームが設定される。読出しストリーミングは1次と2次PCIバス間におけるデータ転送の効率的な方法であるため、PCIブリッジ・チップはバス・アービトレーション・プロセス中にその完了データが到着しているデバイスに高い優先順位を与えるのみならず、ストリームが設定される可能性を高めるために非ストリーミングのトランザクションの終了を試みる。しかし、理論的にはストリーミングはいずれの読出しサイクル中にでも発生し得るが、実際上は大量のデータが係るトランザクション(メモリ読出し多重トランザクション)中でのみ発生する可能性が高い。従って、待ち行列ブロックはストリーミングの機会に利するように、その可能性のあるストリーミング・トランザクションがメモリ読出し多重トランザクションであるときにのみ他のトランザクションの終了を試行する。
【0029】
更に第82図を参照する。DCQ内のストリーム・ロジック・ブロック2184はストリームの機会があるか否かを判断し、もしあると判断すればそのストリームのサポートに必要な信号を生成する。ストリーム・ロジック・ブロック2184は、可能性のあるストリームに利するべく、現在のトランザクションを切断するための信号を生成する。ケーブル・デコーダが遅延完了トランザクションをDCQ内に格納するとき、ストリーム・ロジック2184は、そのケーブル・デコーダが供給するDCQバッファ番号信号(cd_dcq_buff_num)を用いて対応するDCQバッファ内に保存されているPCIコマンド・コード(q0_cmd[3:0]、q1_cmd[3:1]等)を検索する。もしそのコマンド・コードがメモリ読出し多重要求を表すもの(即ち、”1100”)であれば、ストリーム・ロジック2184は「ストリーム切断」信号(dcq_disconnect_for_stream)をアサートしてQPIF及びPCIインタフェースに対し、可能性の高いストリーミングの機会のために現在のトランザクションを終了するよう指示する。マルチプレクサ2186及びコンパレータ2188はdcq_disconnect_for_stream信号を生成するように構成される。そして、ケーブル・デコーダがDCQに対して完了データの供給を続けでおり(即ち、cd_dcq_select信号がアサートされたままになっている)、PMWQ内にポスティッド・メモリ書込みがない(即ち、pmwq_no_pmwがアサートされたままになっている)場合、ストリーム・ロジック2184はストリーミング要求信号(q2a_stream)を直接PCIアービタに送る。更にストリーム・ロジック2184は、cd_dcq_buff_num[2:0]信号を用い、選択されたDCQバッファ内に格納されているPCIスロット番号を選択し(DCQバッファ0 2135aはq0_master[2:0]、DCQバッファ1 2135bはq1_master[2:0]等)、可能性のあるストリーミング・デバイス(q2a_stream_master[2:0])のスロット番号もPCIアービタに供給する。そして下に詳述するように、PCIアービタは可能性のあるストリーミング・デバイスのバス・アービトレーション優先順位を上げる。もしストリーミングの機会が消滅する前に可能性のあるストリーミング・マスタにバスの制御権が許されなければ、その優先順位は通常に戻される。アップストリ―ムのバスにはマスタ・デバイスが1つ(CPU)しかないので、アップストリ―ム・チップ内ではこの機能はディスエーブルされている。ゲート2190及びマルチプレクサ2192が、q2a_stream及びq2a_stream_master信号を生成するように構成される。
要求しているデバイスがDCQ内に格納されている遅延完了メッセージをヒットしたとき、8ビットのヒット・信号(hit[7:0])の対応するビットがアサートされる。hit[7:0]の信号は8つのDCQバッファのうち、どれが現在の要求にヒットされたかを表示する。このとき、もし対応するDCQバッファにデータが入っていれば(即ち、dcq_no_dataがアサートされていない)、ストリーム・ロジック2180はそのヒット信号の値をトランザクションの期間中(即ち、q2pif_cyc_completeがアサートされている限り)ラッチする。ヒット信号のラッチされたバージョンは、「遅延」ヒット信号(dly_hit[7:0])を形成する。もしヒット信号及び遅延ヒット信号のいずれかがDCQバッファがヒットされたことを表示すれば、3ビットのDCQストリーム・バッファ信号(dcq_stream_buff[2:0])がヒットされたDCQバッファのバッファ番号を表示する。そして、もしケーブル・デコーダが、そのバッファをヒットしたサイクルが進行中に(即ち、cd_dcq_selectがアサートされていてcd_dcq_buff_num[2:0]とdcq_stream_buff[2:0]が等しいとき)遅延完了データをそのバッファに入れると、ストリーム・ロジック2180はストリーム接続信号(dcq_stream_connect)をアサートし、ストリームが設定されたことをQPIFに知らせる。そのQPIFはターゲットのバス上のブリッジ・チップに対しストリームの設定完了を通知する。下に詳述するが、もし一定の条件が満たされれば、ターゲットのQPIFは開始QPIFに停止を指示されるまでストリームを続ける。ゲート2194、2196、マルチプレクサ2198、2200、及びフリップ・フロップ2202が、この遅延ヒット信号を生成するように構成される。ゲート2204、2206、2208、及びエンコーダ2210が、dcq_stream_connect及びdcq_stream_buff[2:0]信号を生成すべく、示されているように構成される。
【0030】
再び第79図を参照する。DCQは、一定の状況のもとにおいて、PCIマスタが戻ってデータを要求することを期待して、そのマスタのためにターゲットのバスから自動的にそのデータをプリフェッチする。DCQ内のプリフェッチ・ロジック・ブロック2212は、読み出し中のマスタがそのDCQバッファ内のデータをすべて読み出したときにデータをプリフェッチ(事前取出し)し、そのプリフェッチ・ロジック2212は要求しているデバイスがシーケンシャルな読出し要求(即ち、メモリ内の次々に連続したロケーションのデータを対象に続ける読み出しの要求)を持って戻ることを期待する。マルチスレディッド・マスタのように、デバイスによっては1つのトランザクション内で要求されるデータをすべて規則正しく読み出し、その後異なったシーケンシャルでないデータを伴って戻るものがあるので、プリフェッチ・ロジック2122には予測回路を設け、これによってデバイスにシーケンシャルな読出し要求を出す傾向が現れるまでPCIバス上の各デバイスのプリフェッチ機能をディスエーブルする。プリフェッチされたデータを受信していたデバイスがシーケンシャルでない読出し要求を持って帰ると、この予測回路は直ちにそのマスターのプリフェッチ機能をディスエーブルする。
【0031】
更に第69A及び69B図を参照する。プリフェッチ・ロジック・ブロック2212はプリフェッチ予測レジスタ2214を含み、その出力である8ビットのプリフェッチ・イネーブル信号(prefetch_set[7:0])がPCIバス上の各デバイスに関してプリフェッチ機能が利用可能か否かについての管理を行う。プリフェッチ・イネーブル信号内のすべてのビットは、リセット(RST)及びQPIFがすべてのDCQレジスタの総フラッシュを指示したとき(即ち、general_flushがアサートされ、q2pif_slot[2:0]が”000”になったとき)にクリアされる。なお、general_flush信号については下に詳述する。ゲート2216及び2218によってprefetch_setのビットをリセットする信号を生成する。
プリフェッチ・イネーブル信号内の個々のビットは、対応するPCIスロットがq2pif_slot信号によって選択され、次の条件が発生した場合にセットされる: 即ち、要求しているデバイスがDCQ内の遅延完了バッファをヒットした(即ち、cycle_hit[7:0])信号内のビットの1つがアサートされた)、現在のトランザクションがメモリ読出しラインまたはメモリ読出し多重サイクルである(即ち、q2pif_cmd[3:0]信号が”1100”または”11110”に等しい)、QPIFがサイクルの完了を表示した(即ち、q2pif_cyc_completeがアサートされた)、及びDCQバッファからデータの最終ワードが取り出された(即ち、last_wordがアサートされた)。ゲート2220、2222、2224、2228a−h、及びデコーダ2226が、予測ビットをこうしてセットするように構成される。last_word信号は、要求しているデバイスがDCQバッファの終わりを超えて読み出しを試みた場合にプリフェッチ・ロジック2212によってアサートされる。これは、アウト・ポインタとイン・ポインタが等しくて、DCQバッファの終わりに達したことを表示している(即ち、4キャシュ・ラインのバッファについてout_pointer_X[4:0]がvalid_pointer_x[4:0])に等しい、または8キャシュ・ラインのバッファについてout_pointer_X[5:0]がvalid_pointer_x[5:0]に等しく、要求しているデバイスがデータの次の部分を読み出そうとした(即ち、p2pif_next_dataがアサートされた)ときに発生する。ゲート2230、2232、及び2234がlast_word信号をこうして生成するように構成される。
プリフェッチ・イネーブル信号内の個々のビットは、まず対応するPCIスロットが選択されて、PCIフラッシュ条件が発生(p2q_flushがアサートされる)するか、QPIFがDCQに対しそのバッファの有効ポインタのステップバックを指示(q2p_step_backがアサートされる)するか、あるいは要求しているデバイスがDCQバッファをすべてミスするトランザクションを開始した(q2pif_check_cycがアサートされ、dcq_hitがディアサートされる)場合にクリアされる。ゲート2236、2238、2240a−h、及びデコーダ2226が、予測イネーブル・ビットをこうしてクリアするように構成される。
【0032】
PCIバス上の1つのデバイスに対してプリフェッチ機能がイネーブルされたとき、プリフェッチ・ロジック2212はそのデバイスに対して2種類のプリフェッチ信号を生成することができる: 即ち、プリフェッチ・ライン信号(dcq_prefetch_line)及びプリフェッチ多重信号(dcq_prefetch_mul)。プリフェッチ・ライン信号は、要求しているデバイスからのカレントのPCIコマンドがメモリ読出しライン信号である場合に生成され、プリフェッチ多重信号は、現在のPCIコマンドがメモリ読出し多重信号である場合に生成される。いずれの場合においても、次の条件が発生したときに対応するプリフェッチ信号が生成される。即ち、要求しているPCIスロットのprefetch_setビットがセットされる;コンフィギュレーション・レジスタ内の対応するプリフェッチ・イネーブル・ビットがセットされる(cfg2q_auto_prefetch_enable);アップストリ―ム・チップ内のDRQバッファがフルになっていない(!tc_dc_full);DCQバッファ内に対応する量のプリフェッチ・データのための余裕がある(!dcq_no_prefetch_room);現サイクルがDCQバッファをヒットした;及び要求しているマスタがDCQバッファの終わりを超えて読み出しを試みた(last_word及びq2pif_cyc_complete)。ゲート2242、2244、2246、2248、2250、2252、デコーダ2254、及びマルチプレクサ2256、2258が、プリフェッチ信号をこうして生成するように構成される。
プリフェッチ・ロジック2212がプリフェッチ信号を生成するとき、対応するDCQバッファ(q0_addr[63:7]はバッファ0、q1_addr[63:7]はバッファ1、等)内に格納されているアドレスの上位57ビットと、そのバッファの出力ポインタ(out_pointer_0[4:0]等)の下位5ビットを連結して、対応するプリフェッチ・アドレス信号(dcq_prefetch_addr[63:2])を生成する。デュアル・アドレス・サイクル信号(dcq_prefetch_dac)は、そのプリフェッチ・トランザクションがデュアル・アドレス・サイクルとシングル・アドレス・サイクルのいずれであるかを表示する。dcq_prefetch_cycle信号はDCQバッファ(q0_dac、q1_dac等)内に格納されているデュアル・アドレスの値をとる。プリフェッチ・アドレス及びデュアル・アドレス・サイクル信号の両方について、適切な値がマルチプレクサ2260または2262から出力され、現在の要求によってヒットされたDCQバッファを示す3ビットのDCQバッファ番号信号によって選択される。
【0033】
再び第79図を参照する。DCQデータ・バッファはいくつかの異なった状態に在り得る。それらの状態は、それぞれDCQ内のバッファ・ステート・ロジック・ブロック2264によって決定される。次にバッファのそれぞれの状態を示す。
1. Empty。割り当て時におかれるべき状態。バッファはパワーアップ後、及びフラッシュされた後はEmptyである。
2. Complete。バッファにはPCIバス上のデバイスが出したリアル遅延要求(即ち、プリフェッチ要求ではない)からの遅延完了のための完了情報が入っている。PCIデバイスは未だ再接続されておらず、バッファからデータを取り出していない。遅延完了トランザクションは完了している。
3. Prefetch。バッファにはプリフェッチ要求のための完了データ、または要求しているマスタがバッファから切り離された後に残された要求データが入っている。完了データはすべてターゲットから到着している。
4. PartComplete。バッファは予約されており、リアル遅延要求(即ち、プリフェッチ要求ではない)のための完了情報が入っている場合がある。マスタは未だ再接続されておらず、バッファからデータを取り出していない。ターゲットから到着している完了情報はすべてではない。
5. PartPrefetch。バッファは予約されているか、あるいはプリフェッチ要求のための完了情報が入っているか、または要求しているマスタがバッファから切り離された後に残された要求データが入っている。ターゲットから到着している完了情報はすべてではない。
6. Discard。バッファはPartPrefetch状態にあるときフラッシュされたが、最後の完了データはターゲットから未だ到着していない。バッファは、トランザクションがターゲットのバス上で完了し、最後のデータが到着する前に使用されるのを防止するためDiscard状態におかれる。
QPIFが遅延要求トランザクションのためにDCQバッファを要求すると、バッファ状態ロジック2264はバッファを次の順序で割り当てる。もしどのバッファもEmptyまたはPrefetch状態にないと、要求しているマスタを再試行しなければならない。
【表10】
【0034】
PCIバス上のデバイスが遅延読出し要求を開始してDCQ完了バッファが除外されると、バッファ状態ロジック2264はそのバッファの状態をPartCompleteに変える。DCQがプリフェッチ読出しを開始すると、バッファの状態がPartPrefetchに変更される。完了データの最後の部分が到着すると、バッファの状態がPartCompleteまたはPartPrefetchから、それぞれCompleteまたはPrefetchに変更される。要求しているデバイスが再試行された要求を再び出してバッファをヒットした場合、もしそのバッファがComplete、Prefetch、PartComplete、またはPartPrefetchの状態にあれば、有効な完了データがマスタに与えられる。もしマスタが切断の前にすべてのデータを取らなければ、バッファの状態がPrefetchまたはPartPrefetchに変更され、求められなかったデータはプリフェッチ・データと見なされる。バッファがCompleteまたはPrefetchの状態にあるときにマスタがデータの最後の部分を取れば、そのバッファの状態がEmptyに変更される。
バッファがPrefetch状態にあるときにフラッシュ信号が受信されると、そのバッファ内のプリフェッチ・データは破棄され、バッファの状態がEmptyに変更される。バッファがPartPrefetch状態にあり、完了データの到着が続いているときにフラッシュ・イベントが発生すれば、プリフェッチ・データがすべて到着するまで、そのバッファはDiscard状態に変更される。トランザクションが完了したとき、プリフェッチ・データは破棄されてバッファの状態がEmptryに変更される。フラッシュ信号が受信されたときバッファがCompleteまたはPartComplete状態に在ると、完了データがそのバッファ内に残されて、バッファの状態は変更されない。下に述べるように、PCIデバイスが新しい要求(即ち、現在、待ち行列に入れられていなくて完了バッファをすべて「ミス」する要求)を出したためにフラッシュ信号が発生すると、上に述べたように、DCQはそのトランザクションのために新しいバッファを割り当てる。従って、1つのPCIデバイスに複数の完了バッファが割り当てられている場合があり得る。PCIデバイスの持っているバッファが完了データを保持しているか、またはそれを待っていて(即ち、そのバッファがCompleteまたはPartComplete状態に在る)、そのデバイスが新しい要求を出す場合、そのPCIデバイスには複数のバッファを割り当てることができる。マルチスレディッド・デバイスは一時に複数のトランザクションを保持できる唯一のデバイスであるため、多重スレッド・デバイスのみが同時に複数の完了バッファを予約できる。
【0035】
マスタ・サイクル・アービタ
マスタ・サイクル・アービタ(MCA)は、PCIスペック2.1に規定されているポステド・メモリ書込み、遅延要求、及び遅延完了サイクル間の序列制約条件を守ってポステド・メモリ書込み及び遅延要求トランザクションの実行順序を決定する。PCIスペック2.1に従って、MCAは実行されるサイクルが明確な書き込み序列を保ち、且つデッドロックが発生しないことを保証しなければならない。デッドロックが起こらないことを保証するために、ポステド・メモリ書込みサイクルは先に待ち行列化されている遅延要求サイクルをパスすることが許されなければならない。また、規定されている序列制約条件に準拠するために、遅延・要求・サイクル及び遅延・完了・サイクルには先に待ち行列化されているポステド・メモリ・サイクルをパスすることを決して許してはならない。
第85図を参照する。MCAは、トランザクション実行待ち行列(TRQ)(またはトランザクション実行待ち行列)2270及びトランザクション順序待ち行列(TOQ)2272という2種類のトランザクション待ち行列を使用して、PMWQ、DRQ、及びDCQ内に待ち行列化されているサイクルを管理する。MCAコントロール・ブロック2274は、PMWQ、DRQ、及びDCQからトランザクションを4ビットのバリデーション要求信号(pmwq_valid[3:0]、drq_valid[3:0]、及びdcq_valid[3:0])のフォームで受け取り、実行コマンドを4ビットの実行信号(mca_run_pmwq[3:0]、mca_run_drq[3:0]、及びmca_run_dcq[3:0])のフォームでアウトプットする。トランザクションはTRQコントロール・ブロック2276及びTOQコントロール・ブロック2278によって、それぞれTRQ2270及びTOQ2272に出し入れされる。
【0036】
更に第86図を参照する。TRQ2270は、それからMCAがトランザクションの実行順序を決定する待ち行列である。TRQ2270内のトランザクションは、トランザクションの序列規則を侵すことなく任意の順序で実行できるが、一旦ポステド・メモリ書込みサイクルがTRQ2270内に入れられると、そのポステド・メモリ書込みが除去されるまでは他のサイクルをTRQ2270に入れることができない。TRQ2270内でのトランザクションは循環的順序で試みられ、一般にそれらが受け取られた順序で完了する。しかし、もしTRQ2270内の1つのトランザクションがPCIバス上で再試行されると、MCAはPCIバス上で試行(トライ)すべくTRQ2270内の次のトランザクションを選択することがある。遅延完了トランザクションはマスタ・サイクルではなくスレーブ・サイクルであるため、これらは決してTRQ2270内に入れられない。更に、遅延完了情報は、もしPMWQ内にこれから開始されるべきポステド・メモリ書込みサイクルが無ければ、DCQに入ると直ちに要求しているデバイスに供されるので、下に詳述するように、遅延完了トランザクションはTRQ2270内にこれから開始されるべきポステド・メモリ書込みサイクルがある場合にのみTOC2272に入れられる。
TRQ2270は、一度に最大4つのトランザクションを保持することができる循環的な待ち行列である。MCAは、規定されている序列制約条件に従って常に少なくとも1つのポステド・メモリ書込みトランザクションを実行できる状態になければならないので、TRQ2270は決して3つを超える遅延要求トランザクションを一度に保持することができない。更にまた、ポステド書込みは後から開始される他のポステド書込みを含む、どのようなトランザクションもパスすることができないので、TRQは一度にただ1つのポステド書込みトランザクションしか保持できない。TRQ2270のスロット2280a−dの各々には3ビットの情報が入っている。即ち、1ビットのサイクル・タイプ・インディケータ2282(ポステド・メモリ書込みトランザクションは”1”、遅延要求トランザクションは”0”)、及び2ビットの有効インタ2284であり、これが表し得る4つの値で待ち行列化されたトランザクションが占めているPMWQまたはDRQ内のバッファを識別する。TRQ2270はI/Oイネーブル・ブロック2286も含み、これによってTRQ 2270にトランザクションを出し入れできる時機を判断する。入力ロジック・ブロック2288はトランザクションのTRQ2270への収容をコントロールし、出力ロジック・ブロック2290はトランザクションのTRQ2270からの除去をコントロールする。これらのロジック・ブロックには標準的な待ち行列管理回路が入っている。
【0037】
サーキュラ入力ポインタ2292は、到来トランザクションを受容すべく次に利用可能なスロットを選択する。この入力ポインタは、入トランザクションの履歴的な順序をできるだけ維持するように循環的なものである。
サーキュラ出力ポインタ2294は、TRQ 2270内のトランザクション間で調停を行い、それらの実行順序を決める。この出力ポインタ2294は、スタートアップ時には常にTRQ 2270内のトップ・スロットから始まってTRQ 2270内を循環的に進む。この出力ポインタ2294は、コンフィギュレーション・レジスタ(cfg2q_infretry)内の無限再試行ビットをセットまたはクリアし、それぞれ無限再試行またはゼロ再試行モードで動作するように構成することができる。無限再試行モードでは、出力ポインタ2294は1つのトランザクションがPCIバス上で首尾よく実行されるまでそのトランザクションに留まっている。ゼロ再試行モードでは、出力ポインタ2294は1つのトランザクションがバス上で試行される毎に、そのトランザクションが首尾よく完了するか再試行されるかに関わりなく増分される(即ち、q2pif_cyc_completeが直前のPCIクロック・サイクルについてアサートされる)。PCIスペック2.1ではポスティッド・メモリ書込みトランザクションにディレード要求トランザクションのバイパスを許すように指示しているので、少なくとも1つのブリッジ・チップ内の出力ポインタ2294はゼロ再試行モードで動作するように構成されなければならない。なお、ダウンストリーム・チップは常にゼロ再試行モードで動作するように構成される。その代わり、無限再試行モードにおいてPCIバス上で各トランザクションを出力ポインタが増分される前に所定の回数(例えば、3回)だけ試行されるように、この出力ポインタを無限再試行モードで動作するよう構成することができる。アップストリ―ムとダウンストリーム・チップは、両方ともPCIスペック2.1の序列制約条件を侵すことなく無限再試行モードで動作するように構成することができる。いずれの場合も、出力ポインタはトランザクションがターゲットのPCIバス上で首尾よく完了できないときにのみ増分して、TRQ2270内に格納されているトランザクションの履歴的な順序を維持するように試行する。
【0038】
下に述べるように、ポスティッド・メモリ書込みまたは遅延要求サイクルがTOQ2272から飛び出されたとき(new_toq_cycleがアサートされる)、またはTOQ2272がイネーブルされなくて(!toq_enabled)、MCAによって新しいサイクルが受信されたとき(new_valid_set)、その新しいサイクルのサイクル・タイプ・ビット及び有効ビットがTRQ内の次の空のスロットにロードされる。もしそのサイクルがTOQ 2272から来ていれば、その有効ビット及びサイクル・タイプ・ビットは、それぞれTOQの有効及びサイクル・タイプ信号(toq_valid[1:0]及びtoq_cycle[0])に供給される。それ以外の場合、新しいサイクルの情報はMCAの有効及びサイクル・タイプ信号(d_valido[1:0]及びd_cyctype[0])によって供給される。ゲート2296、2298、及びマルチプレクサ2300、2302が、TRQ2270にロードされるべきサイクルの選択をコントロールするように構成される。1つのサイクルがPCIバス上で首尾よく実行されると、そのサイクルはトランザクション順序待ち行列から除去され、そのサイクル・タイプ・ビット及び有効ビットが、それぞれTRQのサイクル・タイプ及び有効信号(trq_cyctype[0]及びtrq_valido[1:0])としてMCAコントロール・ブロック2274に供給される。
TRQコントロール・ブロック2276はtrq_pmw信号を生成し、TRQ2270内にポスティッド・メモリ書込みトランザクションが待ち行列に入れたことを表示する。この信号がアサートされた場合、後に続いて出される遅延要求及び遅延完了トランザクションは、下に述べるように、TOQ 2272内に待ち行列に入れなければならない。MCAコントロール・ブロック2274がTRQ2270に対して新しいポスティッド・メモリ書込みサイクルを待ち行列に入れるように指示したか(trq_slot_valid_setが”0000”に等しくなくd_trq_cyctypeが”1”)、またはその代わりにTRQサイクル・スロット2280a−dのいずれかに1つのサイクルが入っており(trq_slot_valid[3:0]が”0000”に等しくない)、少なくとも1つのサイクルがポスティッド・メモリ書込みサイクルであり(trq_cyctypeが”1”に等しい)、そして、そのポスティッド・メモリ書込みサイクルが対応するスロット2280a−dからクリアされていない(!trq_slot_valid_rst[3:0])場合、trq_pmw信号がアサートされている。ゲート2304、2306、2308、2310、及び2312が、trq_pmwをこうして生成するように構成される。
【0039】
次に第87図を参照する。TOQ 2272は先入れ先出し(FIFO)待ち行列であり、ポステド・メモリ書込みトランザクションがTRQ2270に入れられた後にブリッジが受信するトランザクションの履歴的な順序を保持する。すべてのトランザクションは先に出されたポステド・メモリ書込みの実行を待たなければならないので、ポステド・メモリ書込み、遅延要求、及び遅延完了トランザクションを含むすべてのトランザクションは、ポステド・メモリ書込みがTRQ2270内に待機状態にされているときにはTOQ2272内に入れられている。TOQ2272内のトランザクションは、そのポステド・メモリ書込みトランザクションがTRQ2270から除去されるまでTOQ2272内に留まっていなければならない。
8つのスロットを持つTOQ2272は、最大3つのポステド・メモリ書込みトランザクション(4番めはTRQ2270内に格納される)、3つの遅延要求トランザクション、及び4つの遅延完了トランザクションを保持することができる。TOQ2272内のスロット2314a−dの各々には、対応するトランザクションを識別する2つのサイクル・タイプ・ビット2316(”01”はポスティッド・メモリ書込み、”00”は遅延要求、及び”1x”は遅延完了)、及び対応するトランザクションが占めているPMWQ、DRQ、及びDCQ内のバッファを識別する2つの有効ビット2318が入っている。TOQ2272は標準の入力及び出力ロジック・ブロック(2320及び2322)も含み、これらでTOQ2272におけるトランザクションの出入りをコントロールする。
TOQ2272内のトランザクションが入れられる位置、及び除去される位置は、それぞれ3ビットの入力カウンタ2326(inputr[2:0])及び3ビットの出力カウンタ2324(outputr[2:0])によって決る。両方のカウンタはTOQ2272内の最初のスロット2314aから始まり、トランザクションが入れられたり除去されるときに待ち行列を通じて増分する。入力カウンタ2326は、TOQ2272がイネーブルされ(toq_enabledがアサートされる)、MCAコントロール・ブロック2274がTOQ2272に新しいサイクルを供給する(new_valid_setがアサートされる)毎にPCIサイクルの立上りで増分する。新しいサイクルの各々に関する有効ビット及びサイクル・タイプ信号は、MCAの有効及びサイクル・タイプ信号(d_valido[1:0]及びd_cyctype[1:0])で与えられる。出力カウンタ2324は、MCAコントロール・ブロック2274がTOQ2272に対して次のサイクルへ移るよう指示し(next_toq_cycleがアサートされる)、TOQ2272が空でない(即ち、inputr[2:0]がoutputr[2:0]と等しくない)とき、各PCIクロック・サイクルの立上りで増分する。TOQ2272から出て行くサイクルは、TOQの有効及びサイクル・タイプ信号(toq_valido[1:0]及びtoq_cyctypeo[1:0])によって表示される。ゲート2328、2330、及びコンパレータ2332が、入力カウンタ2326及び出力カウンタ2324を適切にクロックするよう構成される。
遅延要求トランザクションまたはポステド・メモリ書込みトランザクションがTOQ2272からポップされたとき、そのトランザクションはTRQ2270に入れられて調停を待つ。しかし、遅延完了トランザクションはターゲットのトランザクションでありマスタのトランザクションではないので、遅延完了はTRQ2270に入れられない。その代わり、遅延完了は単にTOQ2272からポップされてDCQデータ・バッファ内の対応するデータの有効性(妥当性)検査に用いられる。しかし、ポステド・メモリ書込みトランザクションがTRQ2270内で待ち行列に入れられている限り、2つまたはそれ以上の遅延完了が同じ遅延要求に対応し、従って遅延完了バッファが同じである場合でも、上に述べたように、すべての遅延完了はTOQ2272に入れなければならない。
【0040】
第88〜91図を参照する。MCAコントロール・ブロック2274はMCAを経るトランザクションの流れをコントロールする。上に述べたように、PMWQ、DRQ、及びDCQは、それぞれ4ビットの有効性(妥当性)検査信号pmwq_valid[3:0]、drq_valid[3:0]、及びdcq_valid[3:0]をMCAに送って、その待ち行列に保持されているトランザクションの有効性検査を要求する。各クロック・パルスで新しいトランザクションは1つしか待ち行列ブロックに入れることができないので、これらの信号のうち、各クロックパルス中に変更できるのは1ビットのみである。従って、MCAコントロール・ブロックはpmwq_valid、drq_valid、及びdcq_valid信号の中の変化するビットを監視して新しい有効性検査要求を識別する。これを行うため、MCAコントロール・ブロックはすべてのPCIクロックの立上りで各信号をラッチし、反転して遅延信号を作成し、その遅延反転信号を現在の信号(即ち、次のクロックパルスにおける信号)と比較する。新しく変更されたビットのみが遅延反転信号の中のそれに対応するものと同じ値をとっているので、MCAコントロール・ブロックは変更されたビットを検出することができる。フリップ・フロップ2340、2342、2344、及びゲート2346、2348、2350を用いて、MCAコントローラはnew_pmwq_valid[3:0]、new_drq_valid[3:0]、及びnew_dcq_valid[3:0]信号を生成し、これらが一緒に各クロックパルスで、もしあるとすれば、PMWQ、DRQ、またはDCQが有効性検査のために新しい信号を出したかどうか、そして対応する待ち行列内のどのバッファにその新しいトランザクションが入っているかを確認する。
【0041】
更に第92図も参照する。MCAコントロール・ブロックはルックアップ・テーブル2352を用いてnew_pmwq_valid、new_drq_valid、及びnew_dcq_valid信号の12ビットを、上に述べたようにTRQ及びTOQに供給された2ビットのd_valid[1:0]及びd_cyctype[1:0]信号に変換する。
MCAコントローラは、trq_pmw信号がアサートされてTRQ内にポステド・メモリ書込みサイクルが待機状態にされていることを表示しているか、またはtoq_enable信号が既にアサートされておりTOQが空でない(!toq_empty)とき、toq_enabled信号を”1”の値にラッチしてTOQをイネーブルする。ゲート2354、2356、及びフリップ・フロップ2358が、toq_enabledをこのようにして生成するように構成される。
MCAコントロール・ブロックは、直前のクロック・サイクル中でTRQ内にポステド・メモリ書込みサイクルが無く(!s1_trq_pmw)、TOQが空でなく(!toq_empty)、TOQからポップされているサイクルが遅延完了トランザクションでない(!(toq_cyctypeo[1]=”DC”))とき、new_toq_cycle信号をアサートし、TRQに対してTOQからポップされているサイクルを待ち行列に入れるよう指示する。MCAコントローラは、ゲート2360を用いてnew_toq_cycle信号を生成する。
TOQが空でなく(!toq_empty)、TRQ内に現在待ち行列に入れられているポステド・メモリ書込みサイクルが無く(!s1_trq_pmw)、TOQ内における次のサイクルが遅延完了であるか(toq_cyctypeo[1]=”DC”)、あるいは次のTOQサイクルがポステド・メモリ書込みまたは遅延要求トランザクションであり(!(toq_cyctyoe[1]=”DC”))、直前のクロック・サイクル中でTRQ内にポステド・メモリ書込みサイクルが無かった(!s1_trq_pmw)場合に、TOQカウンタをTOQ内の次のサイクルに増分するために用いられるnew_toq_cycle信号がアサートされる。このコントロール・ブロックは、ゲート2362、2364、及び2366を用いてnext_toq_cycle信号を生成する。
【0042】
MCAコントローラはmca_run_dcq[3:0]信号を生成し、TOQから遅延完了トランザクションがポップされたことを表示する。TRQ内にポスティッド・メモリ書込みサイクルが入っておらず(!trq_pmw)、TOQが空でなく(!toq_empty)、そしてTOQのサイクルが遅延完了である(toq_cyctyoe[1]=”DC”)場合、上に述べたように、mca_run_dcq[3:0]信号はデコードされたtoq_valido[1:0]信号の値をとる。それ以外の場合、mca_run_dcq[3:0]信号の値は”0000”に等しい。ゲート2370、デコーダ2372、及びマルチプレクサ2374が、mca_run_dcq[3:0]信号をこのようにして生成するように構成される。
MCAコントロール・ブロックはnew_mca_run_dr[3:0]及びnew_mca_run_pmw[3:0]信号を生成して、それが待機状態にされるべき新しい遅延要求トランザクション及びポステド・メモリ書込みトランザクションを持っていることをそれぞれ表示する。new_mca_run_dr[3:0]信号は、新しいサイクルが遅延要求サイクル(d_cyctype[0]=”DR”)のとき、上に述べた2x4デコーダでデコードされたd_valido[1:0]信号の値をとる。それ以外の場合、new_mca_run_dr[3:0]信号のすべてのビットがゼロに設定される。同様に、new_mca_run_pmw[3:0]信号は、新しいサイクルがポステド・メモリ書込みトランザクションであれば2x4デコーダでデコードされたd_valido[1:0]信号の値をとり、そうでなければ”0000”にセットされる。デコーダ2376、2380、及びマルチプレクサ2378、2382が、new_mca_run_dr及びnew_mca_run_pmwをこうして生成するように構成される。
【0043】
MCAコントローラはtoq_mca_run_dr[3:0]及びtoq_mca_run_pmw[3:0]信号を生成し、それぞれ新しい遅延要求またはポステド・メモリ書込みトランザクションがTOQからポップされたとき、そのことを表示する。toq_mca_run_dr[3:0]信号は、遅延要求サイクルがTOQからポップされた場合は2x4デコードされたtoq_valido[1:0]の値をとり、そうでなければ”0000”となる。同様に、toq_mca_run_pmw[3:0]信号は、ポステド・メモリ書込みサイクルがTOQからポップされた場合は2x4デコードされたtoq_valido[1:0]の値をとり、そうでなければ”0000”となる。デコーダ2384、2388、及びマルチプレクサ2386、2390が、toq_mca_run_dr及びtoq_mca_run_pmwを、こうして生成するように構成されて用いられる。
MCAコントローラはtrq_mca_run_dr[3:0]及びtrq_mca_run_pmw[3:0]信号を生成し、それぞれ新しい遅延トランザクションまたはポステド・メモリ書込みトランザクションがTRQ内で調停されてPCIバス上での実行が可能になっていれば、そのことを表示する。trq_mca_run_dr[3:0]信号は、遅延要求サイクルが優先的に調停されて、TRQが空でない場合2x4デコードされたtrq_valido[1:0]信号の値をとる。さもなくば、trq_mca_run_dr[3:0]の値は”0000”となる。同様に、trq_mca_run_pmw[3:0]信号は、ポステド・メモリ書込みサイクルが優先的に調停されて、TRQが空でない場合、2x4デコードされたtrq_valido[1:0]信号の値をとる。それ以外の場合、trq_mca_run_pmw[3:0]の値は”0000”となる。ゲート2392、2398、デコーダ2394、2400、及びマルチプレクサ2396、2402が、trq_mca_run_dr及びtrq_mca_run_pmw信号をこうして生成するように構成されてる。
【0044】
TRQが空のとき、MCAはTOQ内の次のトランザクションをTRQに入れて実行する要求を出すことができる。TRQもTOQも空であれば、トランザクションはTRQに入れられる前にでも実行を開始することができる。従ってMCAコントロール・ブロックは、トランザクションがPCIバス上で試行できることを表示するnew_mca_runまたはtoq_mca_run信号を非同期で用いられる時機を決定するロジックを含む。new_mca_run及びtoq_mca_run信号を非同期の実行信号に変換することによって、MCAコントローラはPCIクロック・ウエイト状態をセーブする。新しいnew_valid_set信号がMCAコントロール・ブロックにアサートされ、TOQがイネーブルされていない(!toq_enabled)場合、async_mca_run_dr[3:0]及びasync_mca_run_pmw[3:0]信号は、それぞれnew_mca_run_dr[3:0]及びnew_mca_run_pmw[3:0]信号の値をとる。そうでなければ、非同期の実行信号はtoq_mca_run_dr[3:0]及びtoq_mca_run_pmw[3:0]信号の値をとる。MCAコントローラは、ゲート2404、及びマルチプレクサ2406、2408を用いてこの非同期実行信号を生成する。
PCIバス・マスタが1つのトランザクションを完了し(s1_q2pif_cyc_completeがアサートされる)、TRQが空でなく(!trq_empty)ゼロ再試行モードで動作するように構成されており(!cfg2q_infretry)、そしてTOQから新しいトランザクションがポップされたか(new_toq_cycle)、あるいはTOQがイネーブルされておらず(!toq_enabled)、MCAが有効性検査がされるべき新しいサイクルを受け取った(new_valid_set)場合、MCAはPCIバス上で実行するサイクルを選択できなくてmca_run_dr[3:0]及びmca_run_pmw[3:0]信号は”0000”にセットされる。それ以外の場合、もしTRQが空で(trq_empty)、TOQから新しいトランザクションがポップされたか(new_toq_cycle)、あるいはTOQがイネーブルされておらず(!toq_enabled)、そしてMCAが有効性性検査されるべき新しいサイクル(new_valid_set)を受け取れば、mca_run_dr[3:0]及びmca_run_pmw[3:0]信号は、それぞれ非同期の実行信号async_mca_run_dr[3:0]及びasync_mca_run_pmw[3:0]信号の値をとる。さもなくば、mca_run_dr[3:0]はtrq_mca_run_dr[3:0]信号の値をとり、mca_run_pmw[3:0]信号はPMWQからの妥当性検査要求信号(pmwq_valid[3:0])とANDされたtrq_run_pmw[3:0]信号の値をとる。ゲート2410、2412、2414、2416、2418、マルチプレクサ2420、2422、2424、2426が、MCA実行信号をこうして生成するように構成される。
【0045】
待ち行列ブロックからPCIインタフェース(QPIF)
再び第4図、及び第93図を参照する。QPIF148は待ち行列ブロック127とPCIバス32間のトランザクションの流れを管理する。更にQPIF148はPCIバス32上で起動されたトランザクションをケーブル・インタフェース130に送る。QPIF148は2つのモードで動作する。即ち、マスタ・モードとスレーブ・モードである。マスタ・モードにおいては、QPIF148がPCIバスの制御権を持ち、従ってターゲット・デバイスに意図されているトランザクションをそのバス上で実行する。QPIF148内のマスタ状態マシン2500がPMWQ及びDRQからトランザクションを検索し、QPIFがマスタ・モードに在るときは、それらをPCIバス上で実行する。スレーブ・モードにおいては、QPIF148は、いずれかのデバイスがPCIバス上で起動したトランザクションを受け取り、要求された情報を(もしその情報があれば)起動デバイスに渡すか、あるいは(もしそのトランザクションが遅延要求であれば)起動デバイスを再試行して、そのトランザクションをアップストリ―ム・チップに転送する。上に述べたように、もしトランザクション・カウンタ159の対応する1つが他方のチップがフルであることを表示すれば、そのトランザクションも再試行される。スレーブ状態マシン2502はPCIバスからの到来トランザクションを受け取り、DCQをチェックして対応する完了メッセージを探し、そして/またはそのトランザクションをケーブル・メッセージ・ジェネレータ2504に転送し、それが今度はそのトランザクションをケーブルを介してアップストリ―ムのブリッジ・チップに転送する。
【0046】
更に第94及び95図を参照する。QPIFはアドレス及びデータ・ラッチ・ロジック2506を含む。これは、デバイスがPCIバス上で開始する各トランザクションに関連する入力アドレス・フェーズ情報及びデータ・フェーズ情報をラッチする。QPIFのスレーブ状態マシン2502は、アドレス及びデータ・ラッチ・ロジック2506の動作をコントロールする。PCIバス上で開始された新しいトランザクションがQPIFに意図されたものであれば、スレーブ状態マシン2502はアドレス・フェーズ・ラッチ信号(reg_latch_first_request)をアサートして、アドレス・フェーズ情報をPCIバスからラッチすべきであることを表示する。PCIクロック信号の次の立下りでは、reg_latch_first_request信号のアサートの結果として遅延アドレス・フェーズ・ラッチ信号(dly_reg_latch_first_request)がアサートされる。オリジナルの、及び遅延されたアドレス・フェーズ・ラッチ信号が両方アサートされたとき、ラッチ・ロジック2506は最初のラッチ信号(latch1)を生成する。フリップ・フロップ2508及びゲート2510が、最初のラッチ信号をこうして生成するように構成される。
ラッチ・ロジック2506は、最初のラッチ信号がアサートされたとき、アドレス・フェーズ情報をPCIバスから(PCIインターフェースを介して)3つのアドレス・フェーズ・レジスタにロードする。1番めのレジスタは30ビットのアドレス・レジスタ2512で、現在のトランザクションの開始アドレスを示す。最初のラッチ信号がアサートされたとき、PCIインタフェースからのアドレス信号(p2q_ad[31:2])がアドレス・レジスタ2512にロードされる。アドレス・レジスタ2512はQPIFに用いられるアドレス信号(q2pif_addr[31:2])を出力する。2番めのレジスタは4ビットのコマンド・レジスタ2514で、PCIバスからのPCIコマンド・コード(p2q_cmd[3:0])を受け取り、QPIFコマンド信号(q2pif_cmd[3:0])をアウトプットする。3番めのレジスタは3ビットのスロット選択レジスタ2516で、どのPCIデバイスが現バス・マスタであるかを示すp2q_slot[2:0]信号を受け取り、QPIFスロット選択信号(q2pif_slot[2:0])を出力する。
【0047】
PCIトランザクションのアドレス・フェーズが終わったとき、スレーブ状態マシン2502はデータ・フェーズ・ラッチ信号(reg_latch_second_request)をアサートし、データ・フェーズ情報をPCIバスからラッチすべきであることを表示する。PCIクロック信号の次の立下りで、アサートされたreg_latch_first_request信号の結果として遅延データ・フェーズ・ラッチ信号(dly_reg_latch_second_request)がアサートされる。オリジナルの、及び遅延されたデータ・フェーズ・ラッチ信号が両方アサートされたとき、ラッチ・ロジック2506は第2のラッチ信号(latch2)を生成する。フリップ・フロップ2518及びゲート2520が、第2のラッチ信号をこうして生成するように構成される。
ラッチ・ロジック2506は、第2のラッチ信号がアサートされたとき、データ・フェーズ情報をPCIバスから(PCIインタフェースを介して)3つのデータ・フェーズ・レジスタにロードする。1番めのデータ・フェーズ・レジスタは32ビットのデータ・レジスタ2522で、PCIアドレス/データ・ライン上における現在のトランザクションに関連するデータ(p2q_ad[31:0])を受け取り、QPIFデータ信号(q2pif_data[31:0])を出力する。2番めのデータ・フェーズ・レジスタは4ビットのイネーブル・レジスタ2524で、PCIバスからのイネーブル・ビット(p2q_cbe[3:0])を受け取り、QPIFバイト・イネーブル信号(q2pif_byte_en[3:0])を出力する。3番めのレジスタは3ビットのロック・レジスタ2526で、現在のトランザクションはロックされたトランザクションとして実行すべきであることを示すPCIロック信号を受け取り、QPIFロック信号(q2pif_lock)を出力する。
【0048】
再び第93図を、そして第96図を参照する。QPIFは「ロック」ロジック・ブロック2528を含み、これでQPIFの「ロック」状態をコントロールする。QPIFは3つのロック状態を持つ。即ち、アンロックト状態2530(lock_state[1:0]= ”00”)はDCQ内に未処理のロックト・トランザクションが無いことを示す;ロックされた状態2532(lock_state[1:0]=”01”)はDCQ内にロックされたトランザクションが受け取られた、あるいはPCIバス上で完了中であることを示す;アンロックされているものの再試行状態2534(lock_state[1:0]=”10”)は、ロックは除去されたが他方のブリッジ・チップ内で未処理となっているポステド・メモリ書込みトランザクションを実行しないと次のトランザクションが受け入れられないことを示す。
パワーアップ及びリセット時、ロック・ロジック2528はアンロックされた状態2530に入り、DCQ内にロックされたトランザクションが入ってくる(dcq_lockedのアサートで表示される)のを待つ。dcq_lockedがアサートされた後の最初のクロック・パルスで、ロック・ロジックはロックされた状態2532に入ることにより、PCIバスからのすべてのトランザクション要求のQPIFスレーブ状態マシン2502による再試行を強制する。PCIインタフェースはロック信号(p2q_lock)もアサートして、それがトランザクション用にPCIバスをロックしたことを表示する。ロックされたトランザクションが完了して、要求しているデバイスがDCQからロックされた完了データを検索した後、dcq_locked信号がデアサートされる。他方のブリッジ・チップ内に未処理となっているポステド・メモリ書込みが無く(即ち、pmw_empty信号がケーブル・デコーダによってアサートされている)、p2q_lockがまだアサートされているうちに、dcq_lockedがデアサートされた後の最初のクロック・パルスで、ロック・ロジック2528はアンロックト状態2530に戻り、スレーブ状態マシン2502は再びトランザクション要求を受け入れられるようになる。しかし、もしdcq_lockedがディアサートされた後の最初のクロック・パルスでpmw_empty信号がアサートされていないと、ロック・ロジック2528はアンロックされているものの再試行状態2534に入り、スレーブ状態マシン2502は他方のPCIバス上ポスティッド・メモリ書込みサイクルが完了するまで、すべてのトランザクションの再試行を強制される。ポステド・メモリ書込みサイクルの完了後、pmw_empty信号がアサートされ、ロック・ロジック2528はアンロックされた状態2530に戻る。
【0049】
再び第93図を、そして第97図も参照する。QPIFはバッファ・フラッシュ・ロジック2536を含み、これによってDCQが何時その1つまたはすべてのデータ・バッファからデータをフラッシュすべきかを決定する。上に述べたように、ダウンストリーム・チップ内のPCIインタフェースは、アップストリ―ム・チップがダウンストリームのデバイスのターゲット・メモリ・レンジ・レジスタ(TMRR)をヒットするI/Oまたはコンフィギュレーション書込みまたはメモリ書込みを出したときにp2q_flush信号を生成する。QPIFバッファ・フラッシュ・ロジック2536は、p2q_flush信号が受信されたとき、(上に述べたように、p2q_slot信号の値によって)対応するデータ・バッファか、またはすべてのデータ・バッファをフラッシュするQPIFフラッシュ・信号(general_flush)をアサートする。それ以外の場合、このバッファ・フラッシュ・ロジック2536は、2次バス上のデバイスがDCQコントロール・ロジックによってチェックされるとき(即ち、!dcq_hit及びq2pif_check_cycがアサートされる)、DCQバッファをすべてミスする遅延された要求(遅延要求)を出した場合にのみ、ジェネラル・フラッシュ信号をアサートする。いずれの場合も、general_flush信号は、上に述べたように、「プリフェッチ」状態に在るバッファのみのフラッシュに用いられる。従って、PCIインタフェースがフラッシュを指示するまで、あるいは対応するPCIデバイスがシーケンシャルでない要求(即ち、DCQをミスする)を出すまで、DCQ内にプリフェッチ・データが保持されている。ゲート2538及び2540が、general_flush信号をこうして生成するように構成される。
1つの多重スレッデッド・デバイスに複数の完了バッファが割り当てられているとき、その少なくとも1つにプリフェッチ・データが入っており、そのプリフェッチ・データはそのデバイスがDCQバッファをすべてミスする要求を出さない限り対応するバッファ内に残っている。そのデバイスが新しい要求を出せば、そのすべてのプリフェッチ・バッファは直ちにフラッシュされる。あるいは、多重スレッデッド・デバイスに関わるプリフェッチ・バッファは、そのデバイスが別のDCQバッファをヒットする要求を出せば直ちにフラッシュされる可能性がある。
【0050】
再び第93図を参照する。QPIFは読出しコマンド・ロジック・ブロック2542を含み、これによってPCIインタフェースからの読出しコマンド及びDCQからのプリフェッチ・コマンドを受け取り、出力メッセージ・コマンド信号(message_cmd)をケーブルに供給する。非ストリーミング状態において、出力メッセージ・コマンドはPCIバスあるいはDCQから受け取られるコマンドと同じであるか、または読出しコマンド・ロジック2542がそのコマンドを大量のデータを伴うコマンドに変換する場合がある。ダブルワード・バイ・ダブルワード(dword-by-word)で実行するトランザクションは、1キャシュ・ライン分のデータを扱うトランザクションに比べてホストのバス上で完了するまでにかかる時間が長く、またシングル・キャシュ・ライン・トランザクションは多重キャシュ・ライン・トランザクションに比べてホストのバス上で完了するまでにかかる時間が長いので、読出しコマンド・ロジックはしばしば「小型」のコマンドを「大型」のコマンドに「昇格」させ、トランザクションに消費されるクロック・サイクル数を減らす(「読出しプロモーション」)。例えば、2次PCIバス上の1つのデバイスがメモリ読出しコマンドを出し、1つのキャシュ・ライン内のすべてのダブルワード・データを求めた場合、そのPCIコマンドを1つのメモリ読出しラインにプロモートすることによりアップストリ―ム・チップは各ダブルワードを個々に読み出す代わりに、そのキャシュ・ライン・データをすべて一度に読み出すことができ、読出しコマンド・ロジック2542はホストの待ち時間を減じることができる。
【0051】
更に第98図も参照する。上に述べたように、読出しストリームが設定されたことをDCQが表示したとき(即ち、dcq_stream_connectがアサートされる)、読出しコマンド・ロジック2542は”1000”のメッセージ・コマンドを生成し、これがアップストリ―ム・チップにストリームが発生していることを知らせる。ストリームが設定されていない場合、読出しコマンド・ロジック2542はメモリ読出し、メモリ読出しライン、またはメモリ読出し多重コマンドを送るべきかどうかを判断しなければならない。もしPCIバスから受け取ったコマンドがメモリ読出し(MR)コマンド(q2p_cmd[2:0]=”0110”)で、コンフィギュレーション・レジスタ内の対応するメモリ読出しからメモリ読出しライン・プロモーション・ビット(cfg2q_mr2mrl)がセットされると、読出しコマンド・ロジック2542はメモリ読出しライン・コマンド(”1110”)を生成する。一方、もしPCIコマンドがメモリ読出しコマンドで、対応するメモリ読出しライン/メモリ読出し多重ビット(memory-read-line-to-memory-read-multiple bit)(cfg2q_mr2mrm)がセットされるか、またはもしそのコマンドがPCIバスからのメモリ読出しライン・コマンド(q2p_cmd[3:0]=”1110”)あるいはDCQからのプリフェッチ・ライン・コマンド(dcq_prefetch_lineがアサートされる)で、対応するメモリ読出しライン/メモリ読出し多重ビット(cfg2q_mrl2mrm)がセットされるか、またはもしそのコマンドがDCQからのプリフェッチ多重コマンド(dcq_prefetch_mul)であれば、読出しコマンド・ロジック2542はメモリ読出し多重コマンド(即ち、message_cmd=”1100”)を生成する。もしそのコマンドがプリフェッチ・ライン・コマンドであって、対応するメモリ読出しライン/メモリ読出し多重ビットがセットされなければ、読出しコマンド・ロジック2542はMRLコマンド(”1110”)を生成する。さもなくば、読出しコマンド・ロジック2542は受け取ったPCIコマンド(q2pif_cmd[2:0])をメッセージ・コマンド信号として出力する。ゲート2544、、2546、2548、2550、2552、2554、2556、2558、及びマルチプレクサ2560、2562、2564が、message_cmd信号をこうして生成するように構成される。
【0052】
再び第93図を参照する。QPIFがマスタ・モードで動作しており、PMWQ内に保存されているトランザクションを1つ実行すべくバスの制御権を得ているとき、書込みコマンド・ロジック・ブロック2566はPCIバス上で実行されるコマンド・コードを生成する。上に述べたように、トランザクションの時間を短縮するために、書込みコマンド・ロジックは一度に1ダブルワードのデータ転送に関わるメモリ書込み(MW)コマンドを、少なくとも1キャシュ・ライン一杯のデータの転送に関わるメモリ書込みおよび無効(MWI)コマンドに変換することができる。書込みコマンド・ロジック・ブロック2566は、例えばトランザクションが1つのキャシュ・ラインの途中でメモリ書込みとして始まり、それに次のキャシュ・ライン境界を越えるデータが入っており、次のキャシュ・ライン内の8つのダブルワード・データがすべて含まれているとき、コマンドをミッドストリームで変換することができる。この状態で、書込みコマンド・ロジック2566は、メモリ書込みトランザクションが最初のキャシュ・ライン境界に達したときにこのトランザクションを終了し、それからメモリ書込み及び無効トランザクションを開始して次のキャシュ・ライン一杯のデータを転送する。書込みコマンド・ロジック2566は、キャシュ・ライン境界を越えた後、もしターゲットのバスに書き込むべきデータが1キャシュ・ラインに満たないとMWIを終了してMWに譲ることもある。
【0053】
再び第93図を、そして第99図も参照する。スレーブ状態マシン2502は、PCIバス上で開始されたポスティッド・メモリ書込みトランザクションを何時終了させるべきかを表示する2つのカウンタを持っている。4Kページ境界カウンタ2594は、PCIバスからの転送データが4Kページ境界に達したとき、そのことを示すページ・カウント・信号page_count_reg[11:2]を生成する。1回のメモリ・アクセスは4Kページ境界を超えることが許されていないので、ポスティッド書込みトランザクションは1つの境界に達したとき開始バス上で終了されなければならない。4Kページ境界カウンタ2594には、状態マシンがload_write_counter信号をアサートしたとき(この信号のアサートを取り巻く状況については下に詳述する)、トランザクション・アドレス(q2pif_addr[11:2])の3番めから12番めのビットがロードされる。カウンタ2594は、そのload_write_counter信号がディアサートされた後、各クロック・パルスの立上りで1つ増分する。カウンタ2594は、開始デバイスがイニシエータ・ウエイト状態を挿入した(即ち、p2q_irdyがアサートされた)間のクロック・パルスでは増分されない。このカウンタの増分が許される時機は、ゲート2592のアウトプットによって決定される。page_counter_reg[11:2]信号のビットがすべて高レベル(ハイ)のとき、トランザクションが既に4Kページ境界に達しており、スレーブ状態マシンはそのポステド書込みトランザクションを終了させて開始デバイスを再試行しなければならない。
【0054】
ダブルワード・カウンタ2598はpmw_counter[5:0]信号を生成し、1回のポステド書込みトランザクションの間に開始デバイスから書き込まれたダブルワードの数を表示する。そしてpmw_counter[5:0]信号は、オーバーフローが発生したり、あるいはそのトランザクションが最終ラインに達したとき、そのことを表示するために用いられる。スレーブ状態マシン2503がload_write_counter信号をアサートしたとき、アドレス信号(q2pif_addr[4:2])の3番めから4番めまでのビットがカウンタ2598の下位3ビットにロードされ、一方上位3ビットはゼロにセットされる。このアドレス・オフセットにより、そのポステド書込みトランザクションがキャシュ・ライン内のどのダブルワードで開始されていたかが表示される。そしてカウンタ2598はload_write_counter信号がデアサートされた後、各クロック・パルスの立上りで1つ増分する。カウンタ2598は、開始デバイスがイニシエータ・ウエイト状態を挿入した(即ち、p2q_irdyがアサートされた)間のクロック・パルスでは増分されない。このカウンタの増分が許される時機はゲート2596の出力によって決定される。pmw_counter[5:0]信号のビットがすべてハイのとき、そのポステド書込みは既に8番めのキャシュ・ラインの終わりに達している。
【0055】
100図のA〜C図を参照する。書き込みコマンド・ロジック・ブロック2566は、PCIバス上で実行されるポステド書き込みトランザクションのコマンド・コードを示す4ビットの書き込みコマンド信号(write_cmd[3:0])を生成する。PMWQ内に入っているコマンド・コードがメモリ書き込み無効コマンドを表すものであれば(pmwq_cmd[3]=”1”)、書き込みコマンド・ロジック2566は、”1111”の書き込みコマンド・コードを生成する。PMWQのコマンド・コードがメモリ書き込みコマンドを示すものであれば、書き込みコマンド・ロジック2566は、対応するPCIスロットのメモリ書き込み−メモリ書き込み無効コンフィギュレーション・ビット(cfg2q_mw2mwi)を調べる。cfg2q_mw2mwiビットがセットされていなければ、書き込みコマンド・ロジック2566は、メモリ書き込みコマンド(”0111”)を作る。このコンフィギュレーション・ビットがセットされていれば、書き込みコマンド・ロジック2566は、PMWQデータ・バッファ内の次のラインが満たされている(pmwq_full_lineがアサートされている)場合にはMWIコマンドを生成し、そうでなければMWコマンドを生成する。マルチプレクサ2568及び2570は、このようにしてwrite_cmd信号を生成するように構成される。
QPIFがPCIバス上でなんらかのトランザクションを実行し、そしてキャシュ・ライン境界に達したときに、書き込みコマンド・ロジック2566は、new_write_cmd信号をアサートして、新しい書き込みコマンドのために現在のトランザクションを終了しなければならない旨を示すことがある。そのトランザクションがPMWQデータ・バッファ内の最後のキャシュ・ラインに達したときに(即ち、pmwq_pointer[5:3]=”111”)、次のPMWQバッファが有効なデータの入っているオーバーフロー・バッファでない場合、対応するcfg2q_mw2mwiビットがセットされていない場合、あるいは、現在のキャシュ・ラインと次のキャシュ・ラインとに対応するfull_lineビットが異なっていれば(即ち、pmwq_full_line[7]とpmwq_next_full_lineが等しくない)、new_writeコマンド信号がアサートされて、そのトランザクションを終了させるべきであることを示す。そのトランザクションがPMWQバッファの終わりに達していない場合、PMWQバッファ内の次のラインに有効なデータが入っていないか(!pmwq_valid_lines[x+1])、あるいはcfg2q_mw2mwiビットがセットされていて現在のラインと次のラインのフル・ライン・ビットが異なっていれば(即ち、pmwq_full_line[x]とpmwq_full_line[x+1]が等しくない)、new_write_cmd信号がアサートされる。ゲート2572、2574、2576、2578、2580、及びマルチプレクサ2582が、new_writeコマンド信号をこのようにして生成するように構成される。
new_write_cmd信号がアサートされた後、書き込みコマンド・ロジック2566が保持された新書き込みコマンド信号(held_new_write_cmd)をアサートするまで終了されない。held_new_write_cmd信号は、new_write_cmd信号がアサートされ、end_of_line信号がアサートされてキャシュ・ラインの終わりに達したことが表示された後、PCIインタフェースがそのトランザクションを未だ終了していない限り(即ち、p2q_start_pulseがアサートされている)、最初のクロック・パルスでアサートされる。held_new_write_cmd信号は、リセットでデアサートされ、またnew_write_cmd、end_of_line、及びp2q_start_pulse信号がデアサートされ、QPIFがそのトランザクションを終了した(即ち、非同期early_cyc_complete信号がアサートされた)後の最初のクロック・パルスでデアサートされる。それ以外の場合、held_new_write_cmd信号はその現在値を保持している。ゲート2584、2586、インバータ2588、及びフリップ・フロップ2590が、held_new_write_cmd信号をこのようにして生成するように構成されている。
【0056】
再び図93、及び101図Aを参照する。QPIFはオーバーフロー・ロジック・ブロック2600を含み、これによってマスタ状態マシン2500はターゲット・バス上でポステド書き込みトランザクションを実行しているときに、オーバーフロー・データを管理することができる。QPIFがMCAからトランザクション実行信号(mca_run_pmwまたはmca_run_dr)を受け取ったとき、オーバーフロー・ロジック2600は、PMWQまたはDRQ内のどのバッファを選択して現在のトランザクションを実行すべきかを示す2ビットの開始待ち行列(キュー)選択信号(start_queue_select[2:0])を生成する。次の表に、start_queue_select信号がどのように生成されるかを示す。
【表11】
【0057】
QPIFがターゲットのバス上でポステド書き込みトランザクションを実行しているとき、2ビットのQPIF待ち行列選択信号(q2pif_queue_select[1:0])がPMWQ内の適切なバッファの選択に用いられる。そのトランザクションが起動されるとき、マスタ状態マシン2500が待ち行列選択信号(initial_queue_select)をアサートすることにより、q2pif_queue_select信号は、開始待ち行列選択信号(start_queue_select)の値をとる。同時に、待ち行列選択カウンタ2602にstart_queue_select信号の値がロードされる。
initial_queue_select信号がデアサートされた後、q2pif_queue_select信号は、カウンタ2602により生成されたcount_queue_select信号の値をとる。ポステド・メモリ書き込みトランザクションが次のPMWQバッファにオーバーフローしたとき、マスタ状態マシン2500が増分待ち行列選択信号(inc_queue_select)をアサートすることにより、カウンタ2602は1だけ増分される。その結果、q2pif_select信号が増分され、PMWQ内の次のバッファが選択されてトランザクションを続行する。マルチプレクサ2604がq2pif_queue_select信号の値を決定する。
【0058】
ここで、101図Bも参照すると、ポステド・メモリ書き込みトランザクション中に、マスタ状態マシン2500が次のPMWQバッファからの情報の引き出しを継続すべき場合、オーバーフロー・ロジック2600は、overflow_next_queue信号をアサートする。q2pif_queue_select[1:0]信号を用いてどのPMWQが現在選択されているかを判定し、次のPMWQバッファに対応する有効ビット(pmwq_valid)及びオーバーフロー・ビット(pmwq_overflow)がセットされているときに、オーバーフロー・ロジック2600はoverflow_next_queue信号をアサートする。pmwq_valid及びpmwq_overflowフラグについては上記に説明したとおりである。ゲート2606、2608、2610、2612、及びマルチプレクサ2614により、overflow_next_queue信号がこのように発生される。
【0059】
再び図93を参照すると、QPIFは読み出し調整ロジック(リード・アライン・ロジック)・ブロック2616を含んでおり、これによってQPIFはメモリ書き込みライン及びメモリ読み出し多重トランザクションのミスアラインメントを修正することができる。読み出しラインの修正は、QPIFがマスタ・モードで動作しているとき、1つのキャシュ・ラインの途中から始まるMRLまたはMRMトランザクションを受け取ったときに発生する。トランザクションの時間を短縮するため、QPIFはキャシュ・ラインの境界でその読み出しトランザクションを開始し、要求されているダブルワード・データだけを個々に読み出す代わりに、要求されていないダブルワードを無視する。
更に102図を参照すると、読み出し調整ロジック2616は、align_read信号をアサートして読み出し調整機能を起動する。この信号は、対応するDRQバッファ内に格納されているコマンドがメモリ読み出しラインまたはメモリ読み出し多重コマンドであるとき(即ち、drq_cmd[3:0]が、それぞれ”1110”または”1100”に等しい)、及びターゲットのPCIデバイスに対応する読み出し調整コンフィギュレーション・ビット(cfg2q_read_align)がセットされたときに、アサートされる。ゲート2618及び2620により、align_read信号がこのようにして作成される。
更に図103のA〜Cを参照すると、読み出し調整ロジック2616は、キャシュ・ライン境界からのダブルワードをカウントし、マスタ状態マシン2500が要求されている最初のダブルワードに達したとき、その旨を表示する読み出し調整ダウン・カウンタ2622を含む。このカウンタ2622は、状態マシン2624を含み、これによってカウンタ2622の動作をコントロールする。
リセットによりカウンタ2622はIDLE_CNT状態に入って、カウント動作は行われない。MCWがQPIFに対しPCIバス上で遅延された要求(ディレード・リクエスト)トランザクションを実行するよう指示したとき(即ち、mca_run_dr[3:0]内のいずれかのビットがアサートされたとき)、QPIFは遅延された要求実行信号(any_drq_run)をアサートし、それが遅延された要求トランザクションの実行を試行していることを表示する。カウンタ2622がIDLE_CNTステートに在れば、any_run_drq信号がアサートされて、QPIFがPCIバスの制御権を得たとき(即ち、p2q_ackがアサートされる)、トランザクション・アドレス(drq_addr[4:2])のダブルワード・オフセットでそのカウンタの3ビットの出力信号(throw_ctn[2:1])がロードされる。ゲート2623がロード・イネーブル信号を生成する。そして次のPCIクロック・サイクルの立上りで、カウンタ2622はCOUNT状態2628に入る。トランザクションがキャシュ・ライン境界で始まれば、ダブルワード・オフセットが”000”に等しく、カウントは不要である。読み出し調整が起動されたとき、マスタ状態マシン2500は、各MRL及びMRMトランザクションを実際の開始アドレスに関わらず各キャシュ・ライン境界で開始する。
【0060】
カウンタ2622がCOUNT状態2628に存在するとき、p2q_ack信号がアサートされていて、throw_cntが未だゼロに達しておらず、トランザクションがデータ・フェーズにあり(即ち、非同期シグナルearly_data_phaseがアサートされている)、そしてターゲット・デバイスが未だターゲット準備待機状態(ターゲット・レディ・ウエイト・ステート)を出していない限り(!p2q_trdy)、そのカウンタは1クロック・パルス毎に1つ減分する。カウンタが減分される時機は、ゲート2625が決定する。PCIインタフェースがQPIFからバスの制御権を取り上げれば(p2q_ackがデアサートされる)、またはデータ相が終了すれば(early_data_phaseがデアサートされる)、カウンタ2622は減分動作を止めて再びIDLE_CNT状態2626に入る。p2q_ack信号がアサートされているうちにthrow_cntが”000”に達すれば、カウンタ2622はカウントを停止してDONE状態2630に入る。それ以外の場合は、カウンタはCOUNT状態2628に留まっている。
カウンタが”000”に達したとき、読み出し調整ロジック2616はread_data_startをアサートし、ターゲット・デバイスからデータの読み出しを開始するようマスタ状態マシン2500に指示する。比較器2632がread_data_start信号を生成する。read_data_start信号がアサートされた後、カウンタ2622はデータ相が終わる(early_data_phaseがデアサートされる)まで、DONE状態2630に留まっている。
【0061】
図104を参照すると、マスタ状態マシンは、QPIFがマスタ・モードで動作しているとき、そのQPIFの動作をコントロールする。マスタ・モードにおいて、QPIFはPCIバス上でポステド書き込みトランザクション及び遅延された要求トランザクションを実行する。次の表に、マスタ状態マシン内における状態遷移の原因となるイベントを示す。
【表12】
【0062】
リセットにより、マスタ状態マシンはIDLE状態2700に入り、その状態において、QPIFはPCIバス上でトランザクションを実行する指示を待つ。QPIFがMCAからラン(実行)信号を受け取り(mca_run_pmwまたはmca_run_dr信号がアサートされたとき、any_runがアサートされる)、ケーブルがメッセージの伝送にビジーでなく(!cable_busy)、そしてPCIインターフェースが直前のトランザクションを終了しようとしていないとき(!p2q_master_dphase)、マスタ状態マシンは、PCIバス上でのトランザクションの実行を試みる。そのトランザクションが遅延された要求トランザクションであり(any_run_drqがアサートされている)、その他のチップに遅延された完了のための余地がなければ(tc_dc_fullがアサートされている)、マスタ状態マシンはその要求を実行することができず、MCAを次のトランザクションにステップする。その他の場合、PCIインタフェースガQPIFにバスの制御権を与えていれば(p2q_ackがアサートされている)、マスタ状態マシンは、PCIバス上でそのトランザクションの実行を開始する。IDLE状態2700において、マスタは上に述べたアドレス相(フェーズ)情報をPCIバスに供給する。実行すべきトランザクションがデュアル・アドレス・サイクル(q2pif_dac_flagがアサートされている)であれば、マスタ状態マシンはMASTER_DACステート2702に入り、そのときアドレス情報の後半部が供給される。トランザクションがデュアル・アドレス・サイクルではなく、遅延された要求トランザクション(any_run_drqがアサートされている)であれば、マスタ状態マシンはRDATA1読み出し状態2704に入り、その状態において、マスタ状態マシンは、その遅延された要求トランザクションのデータ・フェーズ(データ相)を開始する。トランザクションがデュアル・アドレス・サイクルでも遅延された要求でもない場合、それはポステド・メモリ書き込みトランザクションであり、従ってマスタ状態マシンは、そのポステド・メモリ書き込みトランザクションのデータ・フェーズに入る。
【0063】
MASTER_DAC状態2704=2において、マスタ状態マシンはアドレス・フェーズ(アドレス相)情報の後半部を供給する。そして、p2q_ack信号がまだアサートされていて、トランザクションが遅延された要求であれば、マスタ状態マシンはRDATA1状態2704に入り、そのときそのマシンはPCIインタフェースから開始信号(p2q_start_pulse)を受け取る。そのトランザクションが遅延された要求でなければ、マスタ状態マシンはWDATA1状態2706に入って、PCI開始パルスを受け取る。更にマスタ状態マシンは非同期完了メッセージ信号(early_master_send_message)をアサートし、PCI開始パルスを受け取ったときにケーブル上で準備完了メッセージの生成(起動)も行う。p2q_ack信号がPCIインターフェースによってデアサートされていれば、マスタ状態マシンは、IDLE状態2700に戻ってトランザクションの再試行(リトライ)を待つ。
RDATA1状態2704は、遅延された読み出し要求及び遅延された書き込み要求の初期状態である。この状態で、マスタ状態マシンは、PCI開始パルスを待ってから、RBURSTバースト・データ・フェーズ(データ相)2708に入る。状態マシンは、初めてRDATA1状態2704に入ったときに、ケーブル上で完了メッセージを生成する(MASTER_DAC状態2702で未だ発生されていない場合)。そして、p2q_ack信号がPCIインターフェースによってデアサートされると、マスタ状態マシンはMCAを次のトランザクションにステップし、再びIDLE状態2700に入る。さもなければ、PCI開始パルスが出力されたときに、マスタ状態マシンはRBURST状態2708に入る態勢をとる。QPIFがトランザクションの終わりを表示するか(queue_cyc_complete)、またはトランザクションが4Kページ境界(バウンダリ)に達していれば(drq_addr[11:2]信号内のすべてのビットが高レベル、即ちハイのため、read_page_disconnectがアサートされている)、マスタ状態マシンはQPIFのframe_信号をデアサートし、データの次の部分がそのデータの終わりであることを表示(early_last_master_dataがアサートされる)してから、RBURST状態2708に入る。マスタ状態マシンは、read_page_disconnect_lastlineがアサートされているか、またはDRQ最終ライン信号がアサートされていて、QPIFが他方のブリッジ・チップからストリーミング信号を受け取っていなければ(cd_sreamかstream_matchがアサートされていないか、あるいはcfg2q_stream_disableがセットされていない)、非同期のearly_master_lastline信号もアサートして、データの最終ラインに達したことを表示する。PCI開始パルスがアサートされなければ、マスタ状態マシンはQPIFがトランザクションを終了するか、あるいは4Kページ境界に達するまで、RDATA1状態2704に留まる。マスタ状態マシンは、QPIFがトランザクションを終了するか、または4Kページ境界に達することにより、IDLE状態2700に戻されるか、あるいはPCI開始パルスが出るまで強制的にRBURST状態2708におかれる。
【0064】
RBURST状態2708において、マスタ状態マシンは、PCIバスにデータをバーストする。完了メッセージが未だ発生されていなければ、マスタ状態マシンがRBURST状態2708に入ったときに、完了メッセージを起動する。そして、p2q_ack信号がデアサートされるか、またはQPIFトランザクションがPCIインターフェースによって再試行(リトライ)されるか(p2q_retryがアサートされる)、またはPCIインターフェースがそのトランザクションをアボートすれば(p2q_target_abortがアサートされる)、マスタ状態マシンは、PCIバス上のトランザクションを終了し、ケーブル上の完了メッセージをアボートしてIDLE状態に入る。p2q_ack試行が除去された場合、マスタ・サイクル・アービタは現在のトランザクションの選択を継続する。しかしトランザクションが再試行またはアボートされた場合、マスタ状態マシンは、MCAを次のトランザクションにステップする。
p2q_ack信号がまだアサートされていて、QPIFトランザクションが再試行もアボートもされていないときであっても、4Kページ境界に達し、ターゲット・デバイスがデータの取り出しを停止したことをPCIインターフェースが表示すれば(p2q_trdyが既にアサートされていない)、マスタ状態マシンは、トランザクションを終了してIDLE状態2700に戻る。ターゲット・デバイスがデータの最後の部分を取り出せば、マスタ状態マシンはRBURST状態2708に留まる。
QPIFがqueue_cyc_complete信号をアサートしてトランザクションの完了を表示した場合、マスタは通常、p2q_trdy信号がデアサートされるとそのトランザクションを終了してIDLE状態2700に戻るか、あるいはp2q_trdy信号がアサートされたままになっていれば、最後のダブルワード・データが転送されるまで、RBURST状態2708に留まる。しかし、そのトランザクションが最終のデータ・フェーズ(データ相)ではないデータ・フェーズにあり(p2q_master_dphase及び!p2q_last_dphase)、他方のブリッジ・チップとの間にストリームが設定されていれば(cd_stream及びstream_match及び!cfg2_stream_disable)、マスタ状態マシンは無期限にRBURST状態に留まる。QPIFがストリーミングしているとき、マスタ状態マシンはストリーミング信号(q2pif_streaming)をアサートし、QPIFが他のPCIバス上の要求しているデバイスに対し、そのデバイスがトランザクションを終了するまでデータの供給を継続するよう強制する。
【0065】
p2q_ack信号がアサートされたままになっていて、p2q_retry、p2q_target_abort、及びqueue_cyc_complete信号のいずれもアサートされていなければ、マスタ状態マシンはp2q_trdy信号を調べる。このシグナルがアサートされておらず、ターゲット・デバイスが既にデータの最後の部分を取り出したか又は供給したことを示していれば、マスタ状態マシンはその次のデータ信号(early_next_data)をアサートすることにより、QPIFがデータの次の部分を転送できる態勢にあることを示す。次のデータ信号は、トランザクションが訂正された読み出し(コレクティッド・リード)でない(align_readがアサートされない)、あるいはトランザクションが訂正された読み出しであってread_data_start信号がアサートされている場合にのみ、アサートされる。p2q_trdy信号がアサートされ、ターゲットが最後のデータ転送を未だ行っていないことが表示された場合、状態マシンはRBURST状態2708に留まる。
WDATA1状態2706において、マスタ状態マシンはポステド・メモリ書き込みトランザクションのデータ・フェーズを開始する。マスタ状態マシンがこの状態にあるとき、p2q_ack信号がデアサートされるか、p2q_retryまたはp2q_target_abort信号がアサートされると、トランザクションはPCIバス上で終了され、状態マシンはIDLE状態2700に戻る。p2q_ack信号がデアサートされたとき、MCAは現在のサイクルに留まっているか、さもなくば、マスタ状態マシンがMCAを次のトランザクションにステップする。
【0066】
p2q_ack信号がアサートされたままになっていて、トランザクションが再試行もアボートもされなければ、マスタ状態マシンは、そのメモリ書き込みの対象が単一のダブルワードであるか複数のダブルワードであるかを判断しなければならない。WDATA1状態においてqueue_cyc_complete信号がアサートされるか、held new write command信号がアサートされるか、end_of_lineとnew_write_cmd信号がアサートされるか、あるいはトランザクションが最後のダブルワード・データに達すれば、そのトランザクションは、単一のダブルワードに関わるものである。この状態において、ターゲットがデータの最後の部分を取り出した(!p2q_trdy)ときにのみ、そのトランザクションが終了し、状態マシンがIDLE状態2700に戻る。それ以外の場合には、状態マシンはWDATA2状態2710に留まる。トランザクションが複数のダブルワード・データに関わるものであれば、マスタ状態マシンはWDATA2バースト・データ・フェーズ状態2710に入る。overflow_next_queue信号がアサートされていれば、マスタ状態マシンはWDATA2状態に入る直前にq2p_irdy待機状態を挿入する。
WDATA2状態2710において、マスタ状態マシンはPCIバスに対してデータをバーストする。p2q_ack信号がデアサートされるか、あるいはトランザクションがPCIインターフェースによってアボートされると、そのトランザクションはQPIF内で終了され、マスタ状態マシンは再びIDLE状態2700に入る。トランザクションがPCIインターフェースに再試行(リトライ)されても、供給されたデータをPCIインターフェースが取ってしまえば(!p2q_trdy)、マスタ状態マシンは再びIDLE状態2700に入る。それ以外の場合、状態マシンはWRETRYステップバック状態2712に入り、上に述べたステップバック信号を生成して、PMWQ出力ポインタをデータの直前の部分にステップバックする。状態マシンは、常にWRETRY状態2712からIDLE状態2700に再入する。
【0067】
p2q_ack信号がアサートされたままになっていてトランザクションが再試行もアボートもされなければ、マスタ状態マシンはそのトランザクションが完了しているかどうかを判断する。QPIFがトランザクションの終わりを表示するか(queue_cyc_completeがアサートされる)、またはキャシュ・ラインの終わりに達して新しい書き込みコマンドが必要であれば(end_of_line及びnew_write_commandがアサートされる)、状態マシンはWSHORT_BURST状態2714に入り、そのときデータの最後の部分が取り出されるか(!p2q_trdy)、あるいはPCI開始パルスが受け取られる。いずれの場合も、2つだけのダブルワード・データがPCIバスに書き込まれなければならない。それ以外の場合、状態マシンはWDATA2状態2710に留まる。状態マシンがWSHORT_BURST状態2714に入るとき、トランザクションが次の待ち行列にオーバーフローすることができ、新しい書き込みマンドが不要であれば、QPIFのframe_信号はアサートされたままとなっている。
WSHORT_BURST状態2714において、マスタ状態マシンは、最後の2ダブルワード・データをPCIバスに書き込む準備をする。p2q_ack信号がデアサートされるか、あるいはPCIインターフェースによってサイクルが再試行またはアボートされると、状態マシンはそのトランザクションを終了してIDLE状態2700に戻る。PCI受容(アクノリッジ)信号が消えるか、またはサイクルがアボートしたとき、マスタ状態マシンはステップバック信号をアサートして、PMWQ出力ポインタを直前のダブルワードにステップバックすべきであることを表示する。トランザクションがPCIインターフェースによって再試行されるとき、ターゲット・デバイスがデータの最後の部分を取り出していない(p2q_trdyがアサートされている)場合にのみ、出力ポインタがステップバックされる。トランザクションが終了されておらず、それが次のPMWQバッファにオーバーフローすることができ(overflow_next_queueがアサートされている)、そして新しい書き込みコマンドが不要であるとき、マスタ状態マシンは、QPIFフレーム信号をアサートされたままに保ち、ターゲット・デバイスがデータの最後の部分を既に取り出していればWCOMPLETE状態2716に入り、そうでなければWSHORT_BURST状態2714に留まる。トランザクションが次の待ち行列にオーバーフローできないか、あるいは新しい書き込みコマンドが必要であれば、状態マシンはフレーム信号をデアサートしてQPIFトランザクションの終わりを表示し、ターゲット・デバイスがデータの最後の部分を既に取り出していれば、WCOMPLETE状態2716に入り、さもなければWSHORT_BURST状態2714に留まる。
【0068】
WCOMPLETE状態2716において、マスタ状態マシンは、ポステド・メモリ書き込みトランザクションを終了させる。そのトランザクションがPCIインターフェースによって再試行またはアボートされると、状態マシンはIDLE状態2700に入る。トランザクションが再試行されると、ターゲット・デバイスがデータの最後の部分を既に取り出している場合にのみPMWQ出力ポインタが増分される。トランザクションが次の待ち行列にオーバーフローすることができ、新しい書き込みコマンドが不要であり、そしてトランザクションが最後のデータ・フェーズ(データ相)になければ、マスタ状態マシンは待ち行列選択カウンタを増分してからWDATA1状態2706に戻り、ターゲット・デバイスがデータの最後の部分を既に取り出している場合に限りオーバーフロー待ち行列からのトランザクションを継続する。もしターゲット・デバイスがデータの最後の部分を未だ取り出していなければ、マスタ状態マシンはWCOMPLETE状態2716に留まる。
トランザクションが次のPMWQバッファにオーバーフローしないような場合、ターゲット・デバイスがデータの最後の部分を既に取り出していれば、マスタ状態マシンはトランザクションを終了し、IDLE状態2700に戻る。それ以外の場合、状態マシンは上に述べた終了の原因となるイベントのいずれかが発生するまで、WCOMPLETE状態2716に留まる。
【0069】
図105を参照すると、スレーブ状態マシンは、QPIFがスレーブ・モードで動作しているとき、そのQPIFの動作をコントロールする。該モードにおいて、QPIFはPCIバス上のデバイスからポステド書き込みトランザクション及び遅延された要求トランザクションを受け取り、これらのトランザクションをケーブルを介してターゲット・バスに転送する。スレーブ状態マシン内における状態遷移の原因となるイベントを次の表に示す。
【表13】
【0070】
リセットすればスレーブ状態マシンはIDLE状態2720に入り、その状態において、QPIFはトランザクションがPCIバス上のデバイスにより生成されるのを待つ。PCIバス上で生成されたトランザクションがQPIFをターゲットにしていなければ(q2p_qcycがアサートされていない)、スレーブ状態マシンはIDLE状態2720のままで待機を続ける。PCIバス上で生成されたトランザクションがQPIFをターゲットにしているものであるとき、p2q_dac_flagがアサートされていてアドレス・パリティ・エラーが発生していなければ(p2q_perrがロー)、スレーブ状態マシンはSLAVE_DACデュアル・アドレス・サイクル状態2722に入る。そのトランザクションがデュアル・アドレス・サイクルでなくポステド・メモリ書き込み要求であって、アドレス・フェーズ(アドレス相)でパリティ・エラーが発生していなければ、スレーブ状態マシンは書き込みカウンタをロードして(即ち、load_write_counterをアサートする)、そのトランザクションを受け入れられるかどうかを判断する。他方のブリッジ・チップ内のPMWQが満たされている(フル)か(tc_dc_fullがDCトランザクション・カウンタにアサートされている)、またはDCQがロックされているか(dcq_lockedがアサートされている)、またはQPIFロック・ロジックがunlocked_but_retry状態にあれば(lock_state[1]=”1”)、スレーブ状態マシンは、PCIインターフェースにq2pif_retryとして渡される非同期の再試行信号(early_retry)をアサートしてそのトランザクションを終了し、IDLE状態2720に留まる。QPIFがそのトランザクションを受け入れることができれば、スレーブ状態マシンはケーブル上にポステド・メモリ書き込みメッセージを生成して、PMW1状態2724に入り、そこでトランザクションを転送すべくケーブル上に送出する
【0071】
そのトランザクションがデュアル・アドレス・サイクルやポステド・メモリ書き込み要求でなければ、スレーブ状態マシンはダブルワード・カウンタをロードし(load_write_counterをアサートする)、パリティ・エラーが発生していなければ、その遅延された(ディレード)要求トランザクションを分析する。そのトランザクションがMRLまたはMRMトランザクションであって、QPIFロック・ロジックがunlocked_but_retry状態になければ、スレーブ状態マシンはQPIFチェック・サイクル信号(q2pif_check_cyc)をアサートすることにより、そのラッチされている要求をDCQバッファ内の遅延された完了メッセージと比較するように、DCQに指示する。その要求が空でないDCQバッファをヒットすれば(dcq_hit及び!dcq_no_data)、スレーブ状態マシンはSTEP_AHEAD状態2726に入り、そこでQPIFが要求されている情報のPCIバスに対する送出を開始する。そのMRLまたはMRM要求がDCQデータ・バッファのいずれも取得できず、即ちミスし(!dcq_hit)、DCQが満たされてなく、即ちフルでなく(!dcq_full)、他方のブリッジ・チップ内の遅延された要求待ち行列フルでなく(!tc_dr_full)、そしてDCQ及びQPIFがロックされていなければ(!dcq_locked及び!lock_state[1])、スレーブ状態マシンはq2pif_retry信号をアサートし、その要求を転送すべくケーブルに送出し、そしてIDLE状態2720に留まる。その要求がDCQをミスし、要求をケーブルに送出できなければ、QPIFは単に要求しているデバイスを再試行してIDLE状態2720に留まる。その遅延された要求がMRLまたはMRMトランザクションでなければ、データまたはバイト・イネーブルをDCQバッファの内容と比較しなければならないので、その要求をチェックするために第2のクロック・サイクルが必要となり、そこでスレーブ状態マシンはSECOND_CHECK状態2728に入る。もしパリティ・エラーが発生するか、またはロック・ロジックがunlocked_but_retry状態に在れば、状態マシンは要求しているデバイスを再試行してIDLE状態2720に留まる。
【0072】
SLAVE_DAC状態2722において、スレーブ状態マシンはアドレス・フェーズ(相)情報の後半部を受け取る。もし要求しているデバイスがQPIFをターゲットととしていなければ、スレーブ状態マシンはそのトランザクションを無視してIDLE状態2720に留まる。QPIFがターゲット・デバイスであるとき、状態遷移イベントはIDLE状態2720におけるものと同じである。特に、そのトランザクションがポステド・メモリ書き込み要求で、パリティ・エラーが発生していなければ、スレーブ状態マシンは書き込みカウンタをロードし、そのトランザクションを受け入れることが可能かどうかを判断する。他方のブリッジ・チップ内のPMWQがフルであるか(tc_pmw_fullがアサートされている)、DCQがはロックされているか、あるいはQPIFロック・ロジックがunlocked_but_retry状態に在れば、スレーブ状態マシンは、要求しているデバイスを再試行してIDLE状態2720に戻る。QPIFがそのトランザクションを受け入れることができれば、スレーブ状態マシンはケーブル上にポステド・メモリ書き込みメッセージを生成し、PMW1状態2724に入る。
トランザクションがポステド・メモリ書き込み要求でなければ、スレーブ状態マシンはダブルワード・カウンタをロードし、パリティ・エラーが発生していなければ、その遅延された要求トランザクションを分析する。そのトランザクションがMRLまたはMRMトランザクションであって、QPIFロック・ロジックがunlocked_but_retry状態になければ、スレーブ状態マシンはQPIFチェック・サイクル信号をアサートする。その要求が空でないDCQバッファをヒットすれば、スレーブ状態マシンはSTEP_AHEAD状態2726に入る。そのMRLまたはMRM要求がDCQデータ・バッファをすべてミスし、DCQがフルでなく、他方のブリッジ・チップ内の遅延された要求待ち行列がフルなく(tc_dr_fullがアサートされていない)、そしてDCQ及びQPIFがロックされていなければ、スレーブ状態マシンはq2pif_retry信号をアサートし、その要求をケーブルに送出し、そしてIDLE状態2720に戻る。その要求がDCQをミスし、該要求をケーブルに送出することができない場合は、QPIFは単に要求しているデバイスを再試行(リトライ)してIDLE状態2720に留まっている。
【0073】
その遅延された要求がMRLまたはMRMトランザクションでなければ、データまたはバイト・イネーブルをDCQバッファの内容と比較しなければならないので、その要求をチェックするために第2のクロック・サイクルが必要となり、そこでスレーブ状態マシンはSECOND_CHECK状態2728に入る。パリティ・エラーが発生するか、またはロック・ロジックがunlocked_but_retry状態に在れば、状態マシンは要求しているデバイスを再試行してIDLE状態2720に戻る。
PMW1状態2724において、スレーブ状態マシンはポステド・メモリ書き込みトランザクションをケーブルを介してターゲット・デバイスに転送する。該状態マシンは、初めてPMW1状態2724に入るときにload_write_counterをデアサートする。ダブルワード・カウンタがポステド・メモリ書き込みトランザクションが最終キャシュ・ラインに在り(pmw_conter[5:3]=”111”)、他方のブリッジ内のPMWQがフルであり(tc_pmw_full)、書き込みオーバーフロー機能がデスエーブルされている(!cfg2q_write_overflow)ことを表示するか、またはトランザクションが4Kページ境界に達しているためにwrite_page_disconnectがアサートされるか、またはDCQがdcq_disconnect_for_stream信号をアサートしており書き込みデスコネクト機能がデスエーブルされないと(!cfg2q_wr_discnt_disable)、スレーブ状態マシンはslave_lastline信号をアサートし、現在のキャシュ・ラインが最後の転送の対象であることを示す。それからスレーブ状態マシンはp2q_qcyc信号がデアサートされ、トランザクションがPCIバスで完了したことが表示されるまで、PMW1状態2724に留まる。PMW1状態2724から出た後、スレーブ状態マシンは再び、IDLE状態2720に入る。
【0074】
SECOND_CHECK状態2728において、スレーブ状態マシンはDCQに、要求情報の第2フェーズとDCQバッファ内の遅延された完了情報を比較させる。トランザクションが遅延された書き込み要求でないか(!io_write及び!config_write)、またはパリティ・エラーが存在せず(!p2q_perr)、そしてDCQがロックされておらずdwr_check_ok信号がアサートされた場合、スレーブ状態マシンはq2pif_check_cycをアサートする。dwr_check_ok信号は、トランザクションが遅延された書き込み要求でないとき、あるいは遅延された書き込み要求であってp2q_irdy待機状態が挿入されていなかった場合にアサートされる。その要求がDCQバッファの1つをヒットし、そのバッファが空でなければ、スレーブ状態マシンはSTEP_AHEAD状態2726に入る。その要求がDCQバッファをすべてミスしても、QPIFがそのメッセージをケーブルに送出することができれば、スレーブ状態マシンは要求しているデバイスを再試行し、そのトランザクションを転送すべくケーブルに送出し、そして再びIDLE状態2720に入る。それ以外の場合、その要求がDCQバッファをすべてミスし、QPIFがそのトランザクションをケーブルに送出できなければ、あるいは遅延された書き込み要求でパリティ・エラーが起こっていれば、状態マシンは、要求しているデバイスを再試行してから再びIDLE状態2720に入る。
STEP_AHEAD状態2726において、スレーブ状態マシンは、DCQ出力ポインタを次のダブルワードに増分する。この状態は、PCIインターフェースが!p2q_trdy信号をアサートせずに最初のダブルワード・データをラッチするため、DCQバッファがヒットされた直後に必要となる。STEP_AHEAD状態2726から、この状態マシンはHIT_DCQ状態2730に入り、該状態において、最後のダブルワード・データが未だ取り出されていなければ、データが適当なDCQバッファから要求元のデバイスに供給される。さもなくば、状態マシンはHIT_DCQ_FINAL状態2732に入り、そこにおいて、DCQバッファにはもうデータが入っていないので、要求しているデバイスが再試行される。
【0075】
HIT_DCQ状態2730から、遅延された要求トランザクションがQPIF内で終了する前にPCIバスで終了するとき(p2q_gcycがアサートされる)、状態マシンはそのトランザクションをQPIF内で終了させ、セットバック信号をアサートする。該信号により、データの最後の部分が要求しているデバイスに未だ取り出されていないためにDCQ出力ポインタを減分すべきであることが示される。状態マシンは、それからIDLE状態2720に入る。要求しているデバイスがデータの要求を続けているうちに、DCQバッファにデータが無くなるか(dcq_no_data及び!p2q_irdy)、あるいはpmw_counterが最後のダブルワードに達したことを表示し、かつread_disconnect_for_streram信号がアサートされていれば、スレーブ状態マシンは要求しているデバイスを再試行し、HIT_DCQ_FINAL状態2732に入る。トランザクションが終了してストリームが設定されると、ステップバック信号がアサートされ、適切なDCQバッファの出力ポインタが減分される。他のいずれの状態においても、スレーブ状態マシンはHIT_DCQ状態2730でデータの供給を継続する。
HIT_DCQ_FINAL状態2732において、スレーブ状態マシンは転送に残されている1つのダブルワードのデータを持っている。要求しているデバイスがデータの最後の部分を取り出す前にPCIバスがトランザクションを終了すれば(即ち、p2q_qcycがデアサートされる)、スレーブ状態マシンはステップバック信号をアサートして、IDLE状態2720に戻る。p2q_qcyc信号がアサートされたままで、要求しているデバイスが開始待機(initiator wait)状態をアサートしていなければ(!p2q_irdy)、データの最後の部分が取られているので要求しているデバイスが再試行される。そして状態マシンは再びIDLE状態2720に入る。さもなくば、状態マシンはHIT_DCQ_FINAL状態2732に留まる。
【0076】
図106を参照する。ケーブル・メッセージ・ジェネレータは1つの状態マシンであって、マスタ及びスレーブ状態マシンから得たトランザクション情報からケーブル・メッセージを生成する。IDLE状態2740に加え、ケーブル・メッセージ・ジェネレータはデュアル・アドレス・サイクル(CABLE_DAC)状態2742、マスタ・データ・フェーズ(MASTER_DPHASE)2744、及びスレーブ・データ・フェーズ(SLAVE_DPHASE)2746も含む。ケーブル・メッセージ・ジェネレータ内における状態遷移の原因となるイベントを次の表に示す。
【表14】
【0077】
リセット状態において、ケーブル・メッセージ・ジェネレータはIDLE状態に2740に入り、そこにおいてマスタ又はスレーブ状態にマシンから到着するトランザクション情報を待つ。IDLE状態に2740からケーブル・メッセージ・ジェネレータがプリフェッチ多重信号(dcq_prefetch_mul)またはプリフェッチ・ライン信号(dcq_prefetch_line)を受け取れた場合は、ケーブル・アドレス信号(early_cad[31:2])がプリフェッチ・アドレス信号dcq_prefetch_addr[31:2]と等しい。さもなくば、early_cad[31:2]がQPIFアドレス・信号(q2pif_addr[31:2])の値をとる。ケーブル・メッセージがマスタ状態にマシンによって開始すなわち起動された場合、そのメッセージは遅延された完了メッセージであり、従ってコマンド・コード(early_ccbe[3:1])は、”1001”である。ケーブル・メッセージがスレーブ状態にマシンによって開始されたとき、コマンド・コードは上に述べたmessage_cmd[3:0]信号の値をとる。
send_message信号がアサートされてマスタ状態にマシンとスレーブ状態にマシンのいずれかがメッセージを起動したことが示され、かつ対応するトランザクションがデュアル・アドレス・サイクルでないか、またはケーブル・メッセージ・ジェネレータがデュアル・アドレス・サイクルでないプリフェッチ要求を受け取ったか、あるいはケーブル・メッセージ・ジェネレータがストリーム接続信号を受け取り、かつダウンストリーム(下流)のDRQに未処理になっているCPUからの遅延された要求が無いかのいずれかの場合、ケーブル・メッセージ・ジェネレータはsent_pmw信号をアサートすることによって、PCIバスからケーブルを介してポステド・メモリ書き込み要求が送られてくることを表示する。DCQによってストリームが設定されていれば、sent_pmw信号はアサートされない。ケーブル・メッセージ・ジェネレータは、スレーブ状態マシンから読み出し要求または遅延された書き込み要求が受け取られたとき、あるいはDCQによってストリームが設定されていないときにプリフェッチ信号が受け取られたとき、sent_dr信号をアサートする。
【0078】
DCQがストリームを設定していれば(dcq_stream_connectがアサートされている)、ケーブル信号(early_cbuff[2:0])のバッファ番号はDCQストリーム・バッファ(dcq_stream_buff[2:0])の値をとり、ケーブル・コマンド・コード(early_ccbe[3:0])は”1000”に等しくセットされ、ケーブル・メッセージ・ジェネレータは、SLAVE_DPHASE状態に2746に入る。それ以外の場合、QPIFがスレーブ・モードにあり、ケーブル・メッセージ・ジェネレータがプリフェッチ多重信号またはプリフェッチ・ライン信号を受け取れば、ケーブル・バッファ信号はDCQバッファ番号(dcq_buff[2:0])の値をとり、ケーブル・メッセージ・ジェネレータは、SLAVE_DPHASE状態2746に入る。さもなくば、QPIFはマスタ・モードで動作しており、ケーブル・メッセージ・ジェネレータは、MASTER_DPHASE状態に2744に入る。
ケーブル・メッセージ・ジェネレータがsend_message信号、及びデュアル・アドレス・サイクルであるトランザクションを受け取ったとき、あるいはデュアル・アドレス・サイクルであるプリフェッチ要求を受け取ったとき、メッセージ・ジェネレータはCABLE_DAC状態に2742に入る。プリフェッチ信号については、ケーブル・アドレス信号がdcq_prefetch_addr[63:0]信号の上位32ビットに等しくセットされる。さもなくば、ケーブル・アドレスはq2pif_addr[63:0]シグナルの上位32ビットに等しくなる。更に、ケーブル・メッセージ・ジェネレータがスレーブ状態マシンからのトランザクションを受け取れった場合は、ケーブル・バッファ番号はDCQバッファ番号に等しくなる。さもなくば、ケーブル・バッファ番号はDRQバッファ番号に等しい(ポステド・メモリ書き込みトランザクションについては、完了メッセージが生成されない)。
【0079】
CABLE_DAC状態に2742において、ケーブル・メッセージ・デコーダがアドレス・フェーズ情報の後半部を生成する。IDLE状態に2740における場合と同様に、ケーブル・アドレス信号は受け取られたトランザクションがプリフェッチ・ライン要求またはプリフェッチ多重要求であればプリフェッチ・アドレスの値をとり、そうでなければq2pif_addr[31:2]の値をとる。メッセージ・ジェネレータがスレーブ状態にマシンからポステド・メモリ書き込みトランザクションを受け取ったとき、sent_pmw信号がアサートされ、またスレーブ状態マシンからプリフェッチ要求または遅延された要求を受け取ったとき、sent_dr信号がアサートされる。プリフェッチ要求またはスレーブ状態にマシンからの要求が受け取られると、ケーブル・メッセージ・ジェネレータは、SLAVE_DPHASE状態2746に入る。さもなくば、メッセージ・ジェネレータは、MASTER_DPHASE状態2744に入る。MASTER_DPHASE状態2744において、ケーブル・メッセージ・ジェネレータは、ケーブルを介して遅延された完了メッセージの送出を試みる。しかし、QPIFがPCIバスの制御権を得る前にPCIインターフェースがPCIバス上のデバイスにバスの制御権を与えていれば、ケーブル・メッセージ・ジェネレータは、MASTER_DPHASE状態2744を出て、新しく受け取られたメッセージを送出しなければならない。従って、メッセージ・ジェネレータがMASTER_DPHASE状態2744に入っているうちにsend_message信号がアサートされると、q2c_new_req信号がアサートされて、新しいメッセージの開始が表示される。q2pif_dac_flagがアサートされていると、新しいトランザクションはデュアル・アドレス・サイクルであって、ケーブル・メッセージ・ジェネレータは、CABLE_DAC状態2742に入る。さもなくば、メッセージ・ジェネレータはSLAVE_DPHASE状態2746に入る。
send_message信号がアサートされていなければ、ケーブル・メッセージ・ジェネレータがマスタ状態マシンからの遅延された完了メッセージを送信中である。マスタ状態マシンがPCI間で最後のデータ転送を完了し、ターゲット・デバイスがその転送に肯定応答したとき(!p2q_trdy)、あるいはマスタがケーブル上でトランザクションをアボートしたとき、ケーブル・メッセージ・ジェネレータは、sent_dc信号をアサートして遅延された完了メッセージがケーブルを介して送出されたことを表示し、再びIDLE状態2740に入る。さもなくば、メッセージ・ジェネレータは、MASTER_DPHASE状態2744に留まって、遅延された完了メッセージの生成を続行する。
【0080】
SLAVE_DPHASE状態2746から、アップストリ―ムのチップとのストリームが設定されていて、ダウンストリームのDRQにCPUからの未処理の遅延された要求が無く、そして要求しているデバイスがQPIFへのデータ転送を継続している(q2p_qcycがアサートされている)限り、ケーブル・メッセージ・ジェネレータはSLAVE_DPHASE状態2746に留まって要求しているデバイスからのトランザクションの転送を続ける。それ以外の場合、ケーブル・メッセージ・ジェネレータが遅延された要求またはプリフェッチ要求を受け取れば、ケーブル・メッセージ・ジェネレータはその要求を転送し、遅延された書き込み要求の場合には、1つのダブルワード・データをアップストリ―ムのデバイスに送り、それからIDLE状態2740に入る。さもなくば、ケーブル・メッセージ・ジェネレータがポステド・メモリ書き込み要求を受け取っている。この状態において、ケーブル・メッセージ・ジェネレータはSLAVE_DPHASE状態2746に留まり、early_last_slave_dataがアサートされ、スレーブ状態マシンによってデータの最後の部分が送出されたことが表示されるまで、ケーブルを介してそのポステド・メモリ書き込み情報の転送を継続する。メッセージ・ジェネレータは、それからケーブル・トランザクションを終了し、再びIDLE状態2740に入る。
【0081】
ケーブル・インターフェース
2つのブリッジ・チップの間での有効な転送を確実にするために、ケーブル28を通して送られるデータは、クロック・ジェネレータ102及び122からのクロックに適正に同期されなければならない。下流(ダウンストリーム)のクロック・ジェネレータ122のクロックは、ケーブル28をデータと共に下方へ送信される上流(アップストリーム)のクロック(このクロックはPCIバス・クロックPCICLK1を基にする)に基づいて発生される。その結果、ダウンストリームへ送信されたアップストリームのデータは、ダウンストリームのブリッジ・チップ48において発生されたクロックに同期される。しかしながら、アップストリームのチップ26において発生されたメイン・クロックとダウンストリームのチップ48からアップストリームへ送り戻されるデータとの間のケーブル28に関連する相遅延は未知である。ケーブル28の長さの範囲は10〜100フィート(適切なインターフェース技術が用いられた場合)である。アップストリームのケーブル・インターフェース104における受信用ロジックは、有効なアップストリームのクロックに関して非同期の境界である。従って、受信用ロジックは、ダウンストリームからアップストリームへのデータを、アップストリームのクロック・ジェネレータ102からのクロックに再同期させる必要がある。
【0082】
図5を参照すると、2チップPCI−PCIブリッジにおけるクロック分配スキームが示されている。ブリッジ・チップ26とブリッジ・チップ48の間を送られるトランザクション(transaction)、すなわち信号は、複数の時分割多重(time-multiplexed)メッセージに符号化される。メッセージのフォーマットは、PCIトランザクションのフォーマットと類似であり(ただし、時分割多重化は相違)、バッファ数及び特別のブリッジ・ファンクション・コマンドを示すために付加された信号に加えて、アドレス及び1つ又は複数のデータの相(フェーズ)と、変調されたハンドシェーク(handshake)信号とを含む。ケーブル・インターフェース104、130はそれぞれ、マスタ・ケーブル・インターフェース192、194及びスレーブ・ケーブル・インターフェース196、198を含む。マスタ・ケーブル・インターフェース192、194は、ケーブル28にメッセージを送信し、スレーブ・ケーブル・インターフェース196、198は、ケーブル28からメッセージを受信する。
各ブリッジ・チップのクロック・ジェネレータ102、122は、クロックを発生するための2つのオン−チップPLLを含む。アップストリームのブリッジ・チップ26のPLL184は、1次(主)PCIバス入力クロックPCICLK1にロックする。ダウンストリームのブリッジ・チップ48において、PLL180は、クロック・バッファ181からのクロックPCICLK2にロックする。
以下の説明において、「1Xクロック」は、クロックPCICLK1と同じ周波数を有するクロックを意味しており、「3Xクロック」は、クロックPCICLK1の3倍の周波数を有するクロックを意味している。PLL184、180(ブリッジ・チップ26、48中)によって発生された1XクロックPCLKは、対応するブリッジ・チップのPCIバス・インターフェース・ロジック188、190に用いられ、3XクロックPCLK3は、マスタ・ケーブル・インターフェース192、194のケーブル・メッセージ生成ロジックを動作させるために用いられる。他のPLL186、182は、ケーブル入力クロックCABLE CLK1(アップストリームから)、CABLE CLK2(ダウンストリームから)にロックするため、さらには入来するケーブル・データを捕らえるために、1XクロックCCLK及び3XクロックCCLK3を発生するために用いられる。PLL186、182のクロック出力はそれぞれ、スレーブ・ケーブル・インターフェース196、198に送られる。
【0083】
PLLは、1Xクロックと3Xクロックの間のスキューを最小化するために、可能な限り1Xクロックと3Xクロックの均衡をとるようなレイアウトに配置される。
PLL184、180はフェーズ(相)表示(インジケータ)信号PCLKPHI1を発生し、この信号は、データの第1のフェーズ(がケーブル28に提供されるべきときに、それをマスタ・ケーブル・インターフェース192、194に知らせる。アップストリーム側では、信号PCLKPHI1はPCIクロックPCICLK1を基にしており、ダウンストリーム側では、信号PCLKPHI1はPCIクロックPCICLK2を基にしている。PLL186、182は、ケーブル・クロックCABLE CLK1又はCABLE CLK2を基にするフェーズ・インジケータ信号CCLKPHI1を発生し、データの第1のフェーズがケーブル28を下って来たときに、それをスレーブ・ケーブル・インターフェース196、198に知らせる。
2次(副)のPCIバス32に対するPCIクロックPCICLK2は、ダウンストリームのブリッジ・チップ48のPLL182の1XクロックBUFCLKから生成される。クロックBUFCLKは、ドライバ179を通じてクロック・バッファ181を駆動する。バッファ181は、2次のPCIバス32の6つのスロットの各々に対する個別のクロック信号とクロックPCICLK2とを出力し、クロックPCICLK2は、ダウンストリームのブリッジ・チップ48へバス入力クロックとして送り戻される。クロック・バッファ181からのクロックPCICLK2に基づくクロックPCLKを基準とすることによって、アップストリームのチップとダウンストリームのチップのクロック・スキームが、より類似するようになる。これは、両方とも外部バス・クロックを基準とするからである。
ケーブル・クロックCABLE CLK1は、33%のデューティ・サイクルを有している。PLL182は、最初に、BUFCLKとしての出力に対して33%のデューティ・サイクル・クロックを50%のデューティ・サイクル・クロックに変換する。
PCIの仕様、バージョン2.1は、PCIバス・クロックが以下の要求に適合することを必要とする。即ち、クロック・サイクル時間が30ns以上であること、クロックのハイ(高レベル)時間が11nsよりも大きいこと、クロックのロー(低レベル)時間が11ns以上であること、及びクロック・スキュー・レートが1nsと4nsの間であることである。
【0084】
コンピュータ・システムがパワー・アップされると、アップストリームのチップ26は最後にパワー・オンされ、アップストリームのPLL184は、クロックCABLE CLK1をケーブル28上をマスタ・インターフェース192を介して送り、そして、該PLL184は、ダウンストリームのPLL182及びPLL180によってロックされる。次にダウンストリームのPLL180は、クロックCABLE CLK2をアップストリームに送り返して、PLL186によってロックされるようにする。このシステムは、4つのPLLのすべてがロックを得るまで完全には動作しない。
アップストリームのブリッジ・チップ26がパワー・アップ(電源供給)され且つダウンストリームのブリッジ・チップ48がまだターン・オンされていない場合、アップストリームのブリッジ・チップ26は、ダウンストリームのバス(ケーブル28)に何も接続されていないPCI−PCIブリッジとして動作する。その結果に、アップストリームのブリッジ・チップ26は、ダウンストリームのブリッジ・チップ48がパワー・オンされ且つアップストリームのPLL186がケーブル・クロックCABLE CLK2から「ロック」を得るまで、どのようなサイクルも受け入れない。
アップストリームのブリッジ・チップ26は、1次バス24のPCIリセット信号PCIRST1 のアサート(assertion)と非同期であり、そのすべてのPCI出力バッファ及び状態マシン(state machine)をフローティング状態にする。リセットの間、PLL184は、PCIバス・クロックPCICLK1へのロックを獲得することを試みることもある。PCIの仕様は、PCIバス・クロックが安定した後に、信号PCIRST1 が少なくとも100μsは活性状態のままでいることを保証するので、PLL184はロックを得るために約100μsを有する。
ダウンストリームのブリッジ・チップ48は、1次バスのPCIRST1 信号を検出すると、すべての内部の状態マシンをリセットする。それに応答して、ダウンストリームのブリッジ・チップ48はまた、2次PCIバス32上を各スロットへ、スロット特定リセットをアサートし、それに加えて、2次PCIバス・リセット信号PCIRST2 をアサートする。
【0085】
図6を参照すると、各PLLは、75MHz(25MHzのPCIバスに対する)と100MHz(33MHzのPCIバスに対する)の間の出力201(3Xクロック)を発生する電圧制御発振器(VCO)200を含む。VCO200は、PCIバス・クロックである基準クロック(REFCLK)197を受信する。各PLLは、ロック検出回路205を有し、この回路は、PLL位相が意図された機能を行うのに十分な程正確に、その基準クロックにロックされたことを、ロック表示ビットによって示す。
ロック表示ビットは、各ブリッジ・チップの構成スペース105、125の状態レジスタに書き込まれる。ダウンストリーム側では、電力正常/ロック状態ビットがアップストリームのブリッジ・チップ26に送信され、それにより、ダウンストリームのブリッジ・チップ48の主エレメントが安定(電力が安定)し、且つダウンストリームのPLLがロックされたこと(2つのPLLのロック表示ビットが活性状態)を示す。ロック表示ビットはまた、EDC状態ビットでゲートされることにより、EDCエラーをPLLがロックされるまで報告しないようにしている。従って、ブリッジ・チップの対は、ソフトウエアの介在なしに、エラーのない通信状態となる。ロック表示ビットはまた、PLLロックの不具合と他のデータ・エラーとを区別可能な幾つかの診断情報を提供する。クロック発生回路は、VCO出力201を3で割ったクロック(1Xクロック)を発生するための4状態マシン202を含む。1Xクロックは、PLLのFBCLK入力端子203にフィード・バックされる。
【0086】
データは、3つの時分割多重化された相において、3Xクロック(PCLK3)の速度でケーブル28を下流に移動し、1Xクロック・メッセージ転送速度を作り出す。図7を参照すると、マスタ・ケーブル・インターフェース192、194内のケーブル・メッセージを分解及び送信するための回路は、ローカルPCLKに同期して送信されるメッセージをサンプリングするレジスタ204を含む。フリップ・フロップ208は、送信されるメッセージの第3のフェーズ(における保持時間に関しての予備的マージンを提供し、これは、この第3の相をPCLKの予備の半分に割り当てることによって、実現される。出力レジスタ212は、3XクロックPCLK3でクロッキング(クロック制御)されるので、1Xクロックと3Xクロックの間でスキューを制御する必要性が低減される。フェーズ(表示信号PCLKPHI1から、3つのフリップ・フロップ210は、連続するPHI1信号、PHI2信号、PHI3信号を発生し、これら信号はそれぞれ、フェーズ1、2、3を表し、かつ60:20マルチプレクサ206を制御する。データの3つのフェーズ(LMUXMSG[19:0]、LMUXMSG[39:20]、LMUXMSG[51:40]又はEDC[7:0])は、レジスタ即ちフリップ・フロップ212に連続して順次入力され、ケーブル28を通じて駆動される。データの第3のフェーズは、レジスタ204の出力ビットLMUXMSG[51:0]からECCジェネレータ206(図7)によって生成されたエラー訂正ビットEDC[7:0]を含む。PCLK3によってクロッキングされるフリップ・フロップ214は、PHI1信号を受信し、それをケーブル・クロックCABLE CLK1又はCABLE CLK2として出力する。
マスタ・ケーブル・インターフェース192、194は、1X/3X通信インターフェースであるので、3Xクロック分の待ち時間がかかり、それにより、図8に示されるようにPCIバス・クロックから送信されたケーブル・メッセージAの1つの3Xクロック分の相のシフトが発生する。期間T0において、メッセージAがレジスタ204の入力に供給され、第1の相のクロック・インジケータPCLKPHI1がハイになる。信号PHI1は、前のサイクルから変化してハイになる。期間T1において、ケーブル・クロックCABLE CLK1又はCABLE CLK2は、信号PHI1がハイであることに応答してハイに駆動される。PCLKPHI1のパルスによって、信号PHI2は期間T1においてハイのパルスとされる。次に、期間T2において、信号PHI3は信号PHI2に応答してハイとなる。期間T3において、信号PHI1は信号PHI3がハイであることに応答してハイとなる。メッセージAは、期間T3のクロックPCLKの立ち上がりでレジスタ204にロードされる。次に、期間T4において、信号PHI1によって、マルチプレクサ206がレジスタ212へロードするための第1のフェーズのデータa1を選択するようにされる。次に、期間T5において、第2のフェーズのデータa2が選択されてレジスタ212へロードされる。次に、期間T6において、第3のフェーズのデータa3がレジスタ212にロードされる。このようなプロセスは、後続のクロック期間において、メッセージB、C、Dに対して繰り返される。
【0087】
図8に示されるように、ケーブル・クロックCABLE CLKは、33%のデューティ・サイクルを有する。また、ケーブル・クロックCABLE CLKが50%の平均デューティ・サイクルを有するように設計することもでき、これは、例えば、ケーブル・クロックを、33%ハイ-66%ロー-66%ハイ-33%ローとすることによって、達成できる。平均50%のデューティ・サイクルを有することによって、ケーブル28により良い通過特性(pass characteristic)を得ることができる。
【0088】
図9を参照すると、スレーブ・ケーブル・インターフェースの先入れ先出しバッファ(FIFO)216は、ケーブル28から入来するデータを組み立て、該組み立てたデータを受信側ブリッジ・チップの待ち行列マシン及びPCI状態マシンへ送信する。FIFO216は4エントリを格納できる深さ(大きさ)であり、各エントリは、完全な1つのケーブル・メッセージを保持することができる。FIFO216の深さは、ケーブル・データがケーブル・インターフェースで有効帯域を全く損失することなくローカルのブリッジ・チップのクロックと同期されることを可能にする。更に、アップストリーム側において、FIFO216は、ダウンストリームのブリッジ・チップ48から来るケーブル・データに対して、非同期の境界を形成する。FIFO216は、ケーブル・データが、残りのチップに出力される前に、PCLKに同期することを確実にする。
FIFO216のエントリは、入力ポインタ・カウンタ226からの入力ポインタINPTR[1:0]によって選択され、このカウンタは、信号CCLK3によってクロッキングされ、信号EN INCNTがローのときにクリアされ、相インジケータCCLKPHI1によってイネーブルされる。PLL186又は182からの3XクロックCCLK3の負の縁部(立ち下がり縁)が、ケーブル28から入来するデータを最初に20ビット・レジスタ218にラッチし、次に、相1表示信号PHI1 DLYがアサートされる場合には、レジスタ220にラッチし、フェーズ2表示信号PHI2 DLYがアサートされる場合には、レジスタ222にラッチする。レジスタ220、222、218からのフェーズ1のデータ、フェーズ2のデータ、フェーズ3のデータのそれぞれは、フェーズ3表示信号PHI3 DLYがアサートされたときに、CCLK3の負の縁部でFIFO216の選択されたエントリにロードされる。FIFO216からの4セットの出力は、240:60(=4:1)マルチプレクサ228によって受信される。このマルチプレクサは、PCLKによってクロッキングされ、信号EN OUTCNTがローのときにクリアされる出力ポインタ・カウンタ224からの出力ポインタOUTPTR[1:0]によって選択制御される。
【0089】
図10を参照すると、入力ポインタ・カウンタ226及び出力ポインタ・カウンタ224は、データを記憶しかつ空にするため、FIFO216に連続的に作用する。カウンタ226及び224は、有効データが読まれる前に該データが所定位置にあることを保証するように、オフセットされる。ポインタの初期設定は、同期の不確定性に起因して、アップストリームのブリッジ・チップ26に対してとダウンストリームのブリッジ・チップ48に対してでは、異なる。
フリップ・フロップ236及び238は、ブリッジ・チップのクロックと非同期であるリセット信号C CRESETを、CCLKクロックの同期系に同期させる。信号EN INCNTは、フリップ−フロップ238によって発生される。入力ポインタ(カウンタ226の計数値)は、第1相表示信号CCLKPKI1及び信号EN INCNTが存在すれば、クロックCCLK3の立ち上がりで増分される。出力ポインタ(カウンタ224の計数値)は、FIFO216においてデータが有効であることが保証されたとき、後のローカルのPCLKクロック系のクロックPCLKで開始される。アップストリームのブリッジ・チップとダウンストリームのブリッジ・チップは、出力ポインタ・カウンタの開始を異なって処理しなければならない。なぜなら、ケーブル・クロックとローカル・クロックのフェーズ関係は、アップストリームのブリッジ・チップ26には知られていないが、ダウンストリームのブリッジ・チップ48には知られているからである。
【0090】
ダウンストリームのブリッジ・チップ48においては、入来するケーブル・クロックCABLE CLK1と2次PCIバス・クロックPCICLK2とのフェーズ関係が分かっている。これは、PCIクロックPCICLK2がケーブル・クロックから発生されるからである。その結果、ダウンストリームのブリッジ・チップ48において出力ポインタOUTPTR[1:0]に関する同期に不利益がなく、出力ポインタは、入力ポインタINPTR[1:0]を可能な限り近接して追従することができる。クロックPCLKの負の縁部でクロッキングされるフリップ・フロップ230は、PLL182によって発生されるクロックCCLKとPLL180によって発生されるクロックPCLKとの間のクロックのスキューの問題を避けるために、用いられる。これら2つのクロックは同一の周波数を有し且つ互いにフェーズが合っているべきであるが、2つのクロックは異なるPLLから発生されるので、これらのクロックの間には未知のスキューがある。ダウンストリーム側において、信号EN OUTCNTは、フリップ・フロップ230により信号PCLKの負の縁部でラッチされる信号EN INCNTである。マルチプレクサ234は、信号UPSTREAM CHIPがローであるので、フリップ−フロップ230の出力を選択する。
アップストリームのブリッジ・チップ26において、ケーブル・インターフェースは完全に非同期で扱われる。フェーズの不確定性はケーブル28自身の未知の位相のシフトに起因するものである。このような不確定性が存在するので、ケーブル28の長さは自由に設定できる。アップストリーム及びダウンストリームのブリッジ・チップのクロックは両方とも、アップストリームのPCIバス・クロックPCICLK1を基準にしているため、同じ周波数を有する。アップストリームのブリッジ・チップ26において、信号EN OUTCNTは、フリップ・フロップ232にクロックPCLKの正の縁部(立ち上がり縁)でラッチされた信号EN INCNTである。マルチプレクサ234は、信号UPSTREAM CHIPがハイであるので、フリップ・フロップ232の出力を選択する。フリップ・フロップ232は、ケーブル・クロックCABLE CLK2及びローカルのPCIクロックPCLK(1つのPCLK期間の位相シフト)の最悪のケースに対しても、データがチップの残りの部分に送信される前に、有効データがFIFO216にあることを確実にする。
【0091】
図11を参照すると、ケーブル・データは、スレーブ・ケーブル・インターフェース196、198に、3つの相の時分割多重化信号a1とa2とa3、b1とb2とb3、c1とc2とc3として受信される。以前のトランザクションは時点T0、T1、T2で完了される。第1のフェーズのデータa1は、時点T3で開始してレジスタ218に供給され、第1のフェーズ・インジケータCCLKPHI1はハイとなる。期間T3のCCLK3の立ち下がりで、データa1はレジスタ218へロードされ、ローカルのフェーズ1表示信号PHI DLYはハイとなる。期間T4において、クロックの立ち下がりで、フェーズ1のデータa1はレジスタ220にロードされ、フェーズ2のデータa2はレジスタ218にロードされ、フェーズ2の表示信号PHI2 DLYはハイのパルスとなる。期間T5において、CCLK3の立ち下がりで、フェーズ2のデータはレジスタ222にロードされ、フェーズ3のデータa3はレジスタ218にロードされ、フェーズ3の表示信号PHI3 DLYはハイのパルスとなる。期間T6において、レジスタ220、222及び218の内容は、CCLK3の後続の立ち下がりでFIFO216の選択されたエントリへ、ロードされる。また、期間T6において、データB1が表示信号CCLKPHI1とともにレジスタ218に供給される。メッセージB及びCは後続の期間においてメッセージAと同様にしてFIFO216へロードされる。
【0092】
図12を参照すると、入力ポインタINPTR[1:0]は、クロックCCLK3の期間T0における立ち上がりで、値0から開始する。また、期間T0において、メッセージAは、クロックCCLK3の立ち下がりで、FIFO0にロードされる。ダウンストリームのブリッジ・チップ48において、出力ポインタOUTPTR[1:0]は、期間T3のクロックPCLKの立ち上がりで値0にされる。また、期間T3において、入力ポインタINPTR[1:0]は、クロックCCLK3の立ち上がりで値1に増分され、メッセージBは、CCLK3の立ち下がりでFIFO1にロードされる。このようにして、ケーブル・データはFIFO0、FIFO1、FIFO2及びFIFO3に循環的にロードされる。
アップストリーム側では、入力ポインタINPTR[1:0]が期間T0において0である場合、出力ポインタOUTPTR[1:0]は、入力ポインタINPTR[1:0]の2つのPCLK期間の後に、期間T6において値0にされる。アップストリームのブリッジ・チップ26での2つのPCLK期間の遅れにより、ケーブル28の相遅延が任意の値とすることが可能となり、これにより、ケーブルの長さを特定の固定値にする必要がなくなる。
図13を参照すると、ケーブル・インターフェースの入力フリップ・フロップ及び出力フリップ・フロップが、チップ製造者によって特別な位置に配置され、ケーブル・データとクロックとの間のスキューを最小にするようにした構成が示されている。各フリップ・フロップとI/Oの間のワイヤの量は、すべてのケーブル・インターフェース信号の間で可能な限り一致するように、維持される。
【0093】
ケーブル・メッセージ
6ビットのケーブル・データが1つのメッセージを構成する。60ビットが20のケーブル・ラインに多重化され、10ns毎にケーブル28を経て送信される。図14のテーブルはビット及び各ビットが割り当てられる相を示す。最初の3つのカラムは、アップストリームからダウンストリームへのデータ転送フォーマットを示し、後ろの3つのカラムはダウンストリームからアップストリームへのデータ転送フォーマットを示す。以下に信号を説明する。
EDC[7:0]: これらの信号は、ケーブル28を通じて送信するデータにおけるエラーを検出して修正するために用いられる、8ビットのシンドロームである。
CAD[31:0]: これらの信号は、32ビットのアドレス/データである。
CFRAME : この信号は、ケーブル・トランザクションの開始及び終了を知らせるために用いられるものであり、PCIのFRAME 信号と類似である。
CCBE[3:0] : 4ビット形態のバイドであり、或るPCIクロックの位相と他のPCIクロックの位相のPCIコマンド又はメッセージ・コードの何れかとをイネーブルにする。
CBUFF[3:0]: アドレスの相において、これら信号は、アップストリーム及びダウンストリームの遅延された読み取り完了(DRC)と遅延された読み取り要求(DRR)のトランザクションを結び付けるために、ブリッジ・チップの遅延された完了待ち行列(DCQ)を初期設定するためのバッファ数を示す。アドレスの相の後に、これら信号は、パリティ・ビット、パリティ・エラー表示及びデータ準備完了信号(データ・レディ信号)を含む。
COMPLETION REMOVED: このビットは、ケーブル28の他側のトランザクション・オーダー化(transaction ordering)待ち行列(TOQ)から遅延された完了が除かれたことを知らせるために用いられる。
PMW ACKNOWLEDGE: このビットは、通信されたメモリ書き込み(PMW)が他側で完了し、且つトランザクション・ラン待ち行列(TRQ)から除かれたことを知らせるために、用いられる。
LOCK : このビットは、ロックされたサイクルを識別するためにダウンストリームへ送信される(アップストリームへは送信されない)。
SERR : このビットは、SERR 表示をアップストリームへ送信するために用いられる。ダウンストリームへは送信されない。
INTSYNC及びINTDATA: これらのビットは、8の割り込みを、ダウンストリームからアップストリームへシリアルに多重化されたフォーマットで搬送するためのものである。信号INTSYNCは、割り込みシーケンスの開始を示す同期信号であり、信号INTDATAは、シリアル・データ・ビットである。信号INTSYNC及びINTDATAは、ケーブル28を通じて別々のラインで送られる。
RESET SECONDARY BUS: このビットは、CPU14がアップストリームのブリッジ・チップ26のブリッジ制御レジスタの補助(第2の)リセット・ビットに書き込むときに、アサートされる。これにより、ダウンストリームのブリッジ・チップ48がパワー・アップ状態にリセットされるようにする。スロットに対するリセット信号もまた、アサートされる。信号RESETSECONDARY BUS(2次バス・リセット)は、ケーブル28を通じて別のラインで送られる。
各PCIトランザクションのアドレス及びデータは、同じライン上に多重化されるので、各PCIトランザクションは、アドレス・フェーズ(相)と少なくとも1つ(バースト・トランザクションに対しては1つより多い)のデータ・フェーズとを含む。PCIの仕様はまた、単一アドレス・トランザクション(32ビット・アドレス指定)とデュアル・アドレス・トランザクション(64ビット・アドレス指定)とを支持する。
【0094】
図15Aの図表は、単一アドレス・トランザクションのアドレス相及びデータ相の間に、バスの各部分にどの情報が現れるかを示す。単一アドレス・トランザクションに対して、第1のフェーズはアドレス・フェーズであり、第2及び後続のフェーズがデータ・フェーズである。遅延された読み出し/書き込み(遅延R/W)要求トランザクションのアドレス・フェーズにおいて、信号CBUFF[3:0]は、アップストリーム及びダウンストリームのDRC及びDRRのトランザクションを結び付けるために、ブリッジ・チップDCQ148を初期設定するためのDCQバッファ数(buff #)を示す。アドレス・フェーズの後、信号CBUFF[0]は、パリティ・ビット(parity)を含む。信号CCBE[3:0] は、アドレス・フェーズにおいてPCIコマンド(PCI cmd)を含み、データ・フェーズにおいてバイト・イネーブル・ビット(BE<>)を含む。
ポステド(通信された)・メモリ書き込みトランザクションに対して、信号CBUFF[3:0]は、アドレス・フェーズにおいては「どうでもよい(don't care、ドント・ケア)」であり、データ・フェーズにおいてはデータ準備完了(data ready)表示、パリティ・エラー(parity error)表示及びパリティ・ビット(parity)を含む。
遅延された読み出し/書き込み(遅延R/W)完了トランザクションにおいて、信号CBUFF[3:0]は、アドレス・フェーズにおいてDCQバッファ数(buff #)を含み、データ・フェーズにおいて完了の終了(end of completion)の表示、データ準備完了(data ready)表示、パリティ・エラー(parity error)表示及びパリティ・ビット(parity)を含む。信号CCBE[3:0] は、アドレス・フェーズ相においてDRCトランザクションを表すコードを含み、データ・フェーズにおいてDRCトランザクションの状態ビット(status)を含む。遅延R/W完了トランザクションは、各データ相に対して宛て先バスの状態を返送する。データのパリティ・ビットは、CCBE[3] で送信される。他の状態の状況は、CCBE[2:0] バス上にエンコードされ、二進値「000」は正常な完了を示し、二進値「001」はターゲット・アボート状態を示す。アドレス/データ・ビットCAD[31:0]は、アドレス・フェーズにおいて「ドント・ケア」であり、データ・フェーズにデータを含む。
ストリーム接続トランザクションにおいて、信号CBUFF[3:0]は、アドレス・フェーズにおいてバッファ数を含み、信号CBUFF[2]は、データ相においてデータ準備完了表示を含む。信号CCBE[3:0]は、アドレス・フェーズにおいてストリーム接続トランザクションを表すコードを含み、データ・フェーズにおいては「ドント・ケア」である。アドレス/データ・ビットCAD[31:0]は、ストリーム接続トランザクションの間は使用されない。
【0095】
図15Bの表は、デュアル・アドレス・トランザクションに対する信号の符号化を示す。遅延R/W要求トランザクションにおいて、信号CBUFF[3:0]は第1及び第2のアドレス・フェーズにおいてバッファ数を含み、信号CBUFF[0]は、データ・フェーズにおいてパリティ・ビットを含む。信号CCBE[3:0] は、第1のアドレス・フェーズにおいてデュアル・アドレス・サイクルを表すコードを含み、第2のアドレス・フェーズにおいてPCIコマンドを含み、データ・フェーズにおいてバイト・イネーブル・ビットを含む。信号CAD[31:0]は、第1のアドレス・フェーズにおいて最上位アドレス・ビットを含み、第2のアドレス・フェーズにおいて最下位アドレス・ビットを含み、データ・フェーズにおいてデータ・ビット(data)を含む。デュアル・アドレスのポステド・メモリ書き込みトランザクションにおいて、信号CBUFF[3:0]は、最初の2つのアドレス・フェーズにおいては「ドント・ケア」であるが、信号CBUFF[1:0]は、データ・フェーズにおいてパリティ・エラー表示ビットとパリティ・ビットを含む。信号CCBE[3:0] は、第1のアドレス・フェーズにおいてデュアル・アドレス・サイクルを表すコードを含み、第2のアドレス・フェーズにおいてPCIコマンド・ビットを含み、データ・フェーズにおいてバイト・イネーブル・ビットを含む。信号CAD[31:0]は、第1のアドレス・フェーズにおいて最上位アドレス・ビットを含み、第2のアドレス・フェーズにおいて残りのアドレス・ビット(addr)を含み、データ・フェーズにおいてデータ・ビットを含む。
【0096】
データ転送には3つの可能な状態、即ち、最後ではない、最後のケーブル転送、及び最後の要求がある。上記の「最後ではない」の状態は、別のデータのワードが呈示されていることを示すようにFRAME が活性のときに、ビットCBUFF[2]をアサートすることによって示される。上記の「最後のケーブル転送」の状態は、信号CFRAME が非活性のときにビットCBUFF[2]をアサートすることによって示される。上記の「最後の要求」の状態は、信号CFRAME が非活性のときに、ビットCBUFF[3]及びCBUFF[2]をアサートすることによって示される。
以下の4つのIEEE1149.1境界スキャン(Boundary-Scan)(JTAG)信号、すなわち、TCK(テスト・クロック)、TDI(テスト・データ入力)、TDO(テスト・データ出力)、TMS(テスト・モード選択)が、JTAGテスト・チェーンを実施するために、ケーブル28上に含まれる。オプションのTRST は、ケーブルを下流方向には送られないが、TRST は、電力良好(パワー・グッド)信号から発生されることができる。
JTAG信号は、システムのPCIコネクタから、JTAGマスタ110を含むアップストリームのブリッジ・チップ26を通じてダウンストリームのブリッジ・チップ48へのケーブル28を下流方向に、JTAGマスタ128へ送られ、該JTAGマスタは、JTAG信号を2次PCIバス32上の6つのPCIスロットの各々へ分配する。リターン経路は、JTAGマスタ128からアップストリームのブリッジ・チップ26へケーブルを上流に辿り、1次PCIバス24上のPCIスロットへ到達する経路である。信号TDO、TCK、TMSは、ダウンストリーム・バウンド(bound)信号である。信号TDIは、アップストリーム・バウンド信号である。
用いることができるケーブル28の第1のタイプは、高性能パラレル・インターフェース(HIPPI)標準を支持するように設計された、筒形50対シールド・ケーブルである。ケーブルの第2のタイプは、シールド型50対リボン・ケーブルである。第1のものの利点は、標準化され、丈夫であり、信頼性をもって一様に製造されることである。第2のものの利点は、機械的柔軟性と、組み立てにおけるコネクタへの自動的終結と、低価格とである。
【0097】
図16のテーブルは、HIPPIケーブル仕様の幾つかを示す。グラウンド・シールドは、アルミニウム・テープを覆うブレード(braid:編組)からなり、使用されるバッファの特性に起因する最小DC電流のみを流す。信号を伝達する方法(シグナリング方法)は、幾つかの利点を有する真の差動(true differential)形態であって差動バッファを備え、該差動バッファは、ケーブル28を経て信号を送信及び受信するために用いられる。真の差動的なシグナリング方法は、このような短距離に対しては光ファイバよりも安価であり、他のシリアル的な方法よりもインターフェースの構成が簡単である。差動的シグナリング方法は、コモン・モード・ノイズ免疫性及びコモン・モード動作範囲を大きくすることができ、且つASICにおいて使用可能であり、且つTTLよりも高速である。ツイスト対及びシールディングを用いると、電磁気的放射を最小化することができる。
選択されたシグナリング・レベルは、ススケーリング可能コヒーレント・インターフェース(SCI)に対する低電圧差動信号(LVDS)に対するIEEEドラフト・スタンダードのドラフト1.10(1995年5月5日)に記述されている。
ケーブル・コネクタは、AMP金属シェル100ピンコネクタであり、2行のピンを備えている。行は100ミル(mil)離れており、ピンは50ミルの中心上にある。金属シェルは、EMIシールディングを提供し、かつケーブル・シールドからボード・コネクタへのグラウンド経路の接続を提供する。かみ合う直角ボード・コネクタは、PCIブラケットに適合する。このコネクタは、コネクタが接続解除されるときに信号ピンからの静電放電を分流するために、ピンの行の間を通るバーを備えている。ケーブル・コネクタに取り付けられた一対の「ちょうねじ」が、該コネクタを固定する。
【0098】
エラー検出及び訂正
エラー検出及び訂正(EDC)手段が、ケーブル28を通じての通信を保護するために、各ブリッジ・チップに備えられる。データは一対のワイヤを通じて送信される3つの20ビット・グループに時分割多重化されているので、「隣接」するビット(即ち、ケーブル28の同じワイヤに関連するビット)の各トリプレット(3つ組)は、一対のワイヤ上を送信されるように構成される。EDC手段は、3つの時分割多重化された各相における同じビット位置において発生する単一ビット障害(failure)及び多重ビット障害を訂正することができる。多重ビット障害は、典型的にハードウエア障害、例えば、破損した又は欠陥のあるワイヤ又はブリッジ・チップ26、48の欠陥のあるピンと関連して発生する。
ケーブル28の20対のワイヤがダウンストリームの通信に用いられ、さらに20対がアップストリームの通信に用いられる。50対のHIPPIケーブル28の残りの10対に関して(それらはクロック信号CABLE CLK1及びCABLE CLK2、リセット信号、及び電力良好/PLLロック信号のような情報を通過させる)、エラー検出及び訂正機能は備えられない。
以下はEDCアルゴリズムに対しての基礎仮定である。殆どのエラーは、単一ビット・エラーである。同じトランザクションにおいてランダムの多重ビット・エラーを有する確率は、極度に小さい。これは、ケーブル28が、内部又は外部のソースからのインターフェースに影響を受けないからである。欠陥のあるワイヤによるエラーは、そのワイヤ上を搬送される1つのビット又はビットのグループに影響する。ワイヤ障害が発生したとき、対応する差動バッファのロジック状態は、有効ロジック状態である。
【0099】
図17を参照すると、スレーブ・ケーブル・インターフェース196、198のマルチプレクサ228からの出力信号FIFOOUT[59:0]が、チェック・ビットCHKBIT[7:0]を発生するチェック・ビット・ジェネレータ350の入力に供給される。チェック・ビットは、図18に示されるパリティ−チェック・マトリクスに従って発生され、そこにおいては、第1行はCHKBIT[0]に対応し、第2行はCHKBIT[1]に対応し、以下同様に対応する。行のビットは、データ・ビットFIFOOUT[0:59]に対応する。
チェック・ビットは、パリティ・チェック・マトリクスにおいて「1」の値を有するすべてのデータ・ビットFIFOOUT[X](Xは0〜59と等しい)の排他的ORによって発生される。従って、チェック・ビットCHKBIT[0]は、データ・ビットFIFOOUT[7]、FIFOOUT[8]、FIFOOUT[9]、FIFOOUT[12]、FIFOOUT[13]、FIFOOUT[16]、FIFOOUT[22]、FIFOOUT[23]、FIFOOUT[24]、FIFOOUT[26]、FIFOOUT[32]、FIFOOUT[33]、FIFOOUT[34]、FIFOOUT[35]、FIFOOUT[38]、FIFOOUT[39]、FIFOOUT[45]、FIFOOUT[46]、FIFOOUT[48]、FIFOOUT[49]、FIFOOUT[51]、及びFIFOOUT[52]の排他的ORである。同様に、チェック・ビットCHKBIT[1]は、ビット0、1、4、5、9、10、12、14、15、16、23、27、35、37、38、40、43、46、47、48、50及び53の排他的ORである。チェック・ビットCHKBIT[2:7]は、図18のパリティ−チェック・マトリクスに従って類似の様式で発生される。パリティ・チェック・マトリクスは、時分割多重化された相あたりの20のサブチャンネル(またはワイヤ)と、蓄積されたデータにおける多重エラーが時分割多重化された相の各々における同じデータ位置に影響する故障したサブチャンネル又はワイヤに原因がある確率とに基づいている。
【0100】
マスタ・ケーブル・インターフェース192、194において、チェック・ビットCHKBIT[7:0]は、エラー検出及び訂正ビットEDC[7:0]として他のケーブル・データとともに提供され、スレーブ・ケーブル・インターフェース196、198のエラー訂正ロジックが、データのエラーを検出して修正することを可能にする。
チェック・ビットCHKBIT[7:0]は、図19に示すシンドローム・テーブルに従って固定ビットFIXBIT[59:0]を発生する固定ビット・ジェネレータ352に供給される。チェック・ビットCHKBIT[7:0]は、256(28)の値をとることが可能である。図19のシンドローム・テーブルは256の可能な位置を有する。シンドローム・テーブルの256の位置の各々は2つのエントリを有し、第1のエントリはチェック・ビットCHKBIT[7:0]の16進値であり、第2のエントリはその位置に関連するケーブル・データ状態を示す。従って、例えば、16進値00はエラーのない状態を示し、16進値01はデータ・ビット52におけるエラーを示し、16進値02はデータ・ビット53におけるエラーを示し、16進値03は訂正不能エラー(UNCER)を示す、等である。
EDCロジックは、データ・ビットが隣接している限り、即ち、同じワイヤと関連している限り、3つまでのエラーのビットを検出することができる。従って、例えば、チェック・ビットCHKBIT[7:0]が16進値3Dを含むならば、データ・ビット3、23及び43はエラーである。ケーブル28は、ケーブル・データCABLE DATA[19:0]を搬送する。従って、データ・ビットFIFOOUT[3]、FIFOOUT[23]及びFIFOOUT[43]は、ケーブル・データの第4の位置、即ち、CABLE DATA[3]と関連する。また、EDCの方法は、同じケーブル・ワイヤと関連する2ビット・エラーを訂正することができる。従って、例えば、16進チェック・ビット値0Fは、CABLE DATA[4]に関連するデータ・ビットFIFOOUT[4]及びFIFOOUT[24]のエラーを示す。
【0101】
また、固定ビット・ジェネレータ352は、信号NCERR(訂正不能エラー)及びCRERR(訂正可能エラー)を発生する。チェック・ビットによってエラーが示されていない場合、信号CRERR(訂正可能エラー)及びNCERR(訂正不能エラー)は両方とも、ローにされる(ローにデアサート(deassert)される)。訂正不能状態UNCERを含むシンドローム・テーブルのそれらの位置において、信号NCERRがハイにされ、信号CRERRがローにされる。これと相違して、訂正可能データ・エラーが示されるところでは、信号NCERRがローにされ、信号CRERRがハイにされる。
固定ビットFIXBIT[51:0]の下位52ビットが、52の排他的ORゲート354の1つの入力に提供され、該ゲート354それぞれの他方の入力は、FIFOデータFIFOOUT[51:0]の下位52ビットの各々を受信する。エラー検出及び訂正ビットEDC[7:0]に割り当てられた上位の8つのFIFOビットFIFOOUT[59:52]は、チェック・ビット及びシンドローム・ビットを発生するために用いられ、エラー訂正に用いられるものではない。排他的ORゲート354は、固定ビットFIXBIT[51:0]及びデータ・ビットFIFOOUT[51:0]のビット様式(bit-wise)の排他的OR演算を行う。データ信号FIFOOUT[51:0]が訂正可能なエラーのデータ・ビットを含むならば、これらのデータ・ビットは排他的OR演算によってフリップ(flip)される。排他的ORゲート354は、修正されたデータCORRMSG[51:0]をマルチプレクサ360の1入力に提供する。マルチプレクサ360の0入力は、データ・ビットFIFOOUT[51:0]を受信し、マルチプレクサ360は、コンフィギュレーション(環境設定)信号CFG2C ENABLE ECCによって選択制御される。マルチプレクサ360の出力は、信号MUXMSGI[51:0]を発生する。システムのソフトウエアが信号CFG2C ENABLE ECCをハイにセットすることによってエラー検出及び訂正をイネーブルすると、マルチプレクサ360は、修正されたデータCORRMSG[51:0]を選択して出力する。逆に、エラー検出及び訂正がディスエーブルされると、データ・ビットFIFOOUT[51:0]が用いられる。
【0102】
訂正不能及び訂正可能なエラーのインジケータ(指示)NCERR及びCRERRはそれぞれ、ANDゲート356と358の入力に与えられる。ANDゲート356及び358は、信号CFG2C ENABLE ECCによってイネーブルされる。ANDゲート356及び358の出力は、信号C NLERR及びC CRERRをそれぞれに発生する。信号C NLERR及びC CRERRはエラー検出及び訂正がイネーブルされる場合にのみ、アサートされる。エラーが検出されたとき、固定ビットはラッチされ、診断目的に用いられる。
訂正可能エラーが示されると(C CRERRがハイ)、割り込みが割り込み受信ブロック132へ発生され、割り込み出力ブロック114まで送られ、次にシステム割り込みコントローラへ送信され、そしてCPU14へ送信され、割り込みハンドラが呼び出される。信号C NCERRによって示される訂正不能エラーは、システム・エラーSERR がアサートされるようにし、それがシステム割り込みコントローラ(示さず)がマスク不可能割り込み(NMI)をCPU14へアサートするようにする。ダウンストリームのブリッジ・チップ48において、訂正不能エラーはまた、ケーブルを上流方向に送信される電力良好/PLLロック表示ビットが否定されるようにし、アップストリームのブリッジ・チップ26がサイクルをダウンストリームへ送信しないようにする。
パワー・アップの間及びその直後の偽りの割り込みを避けるため、アップストリーム及びダウンストリームのブリッジ・チップの両方のエラー検出及び訂正不能が、アップストリームのPLL186とダウンストリームのPLL182がクロックCABLE CLK1又はCABLE CLK2にロックするまで、パワー・アップの間ディスエーブルされる。
訂正可能エラーの割り込みに応答するシステム管理ソフトウエアは、ラッチされた固定ビットを読み取ることによって、原因を判定する。もしハードウエアの故障が判定されたならば(例えば、複数のデータ・エラー・ビットが同じケーブルのワイヤに関連する)、システム管理ソフトウエアは、ハードウエアの故障を修理するために、その状態をユーザに知らせることができる。システム管理ソフトウエアは、訂正不能エラーに起因するSERR に応答し、システムをシャット・ダウンするか又はユーザによってプログラムされた他の機能を行う。
【0103】
2次バス・アービタ
図3を参照すると、各ブリッジ・チップはPCIアービタ(arbiter、アービトレーション手段)116、124を含む。アップストリームのブリッジ・チップ26は通常はスロットに設置されるので、PCIアービタ116はディスエーブルされる。PCIアービタ124は、8つのマスタ、即ち、SIO50におけるホット・プラグ・コントローラ(装置の電源スイッチをオンにしたままで電力を投入した場合、すなわち、該装置のプラグを電源に差し込んだ場合に、該装置に事故が生じないように保護するための制御装置)及び6つのPCIスロットを含む7つの一般的PCIマスタ(REQ[7:1] ,GNT[7:1] )とブリッジ・チップ自身(BLREQ ,BLGNT )とを支持する。信号BLREQ 及びBLGNT は、PCIマスタ・ブロック123から送られ、またPCIマスタ・ブロックへ送られる。2次PCIバス32をターゲットとするCPU14からのトランザクションがアップストリーム及びダウンストリームのブリッジ・チップ26及び48によって受信されたならば、ブリッジ・チップは信号BLREQ をアサートする。SIO50に対する要求(リクエスト)ラインREQ[1] 及び許可(グラント)ラインGNT[1] は、ダウンストリームのブリッジ・チップ48に内部的に送られる。PCIアービタ124は、1つのマスタに対するGNT 信号の否定と別のマスタに対するGNT 信号のアサートとの間に、PCICLK2遅延を挿入する。
ダウンストリームのブリッジ・チップ48において、PCIアービタ124は、信号PCIRST2 の立ち上がりにおけるREQ[7] のサンプリングされた値を基にして、イネーブル又はディスエーブルされる。もしブリッジ・チップ48がPCIRST2 においてREQ[7] ローをサンプリングしたならば、該チップはPCIアービタ124をディスエーブルする。PCIアービタ124がディスエーブルされたならば、外部のアービタ(示さず)が用いられ、ホット・プラグ要求がREQ[1] ピンに供給され、ホット・プラグ許可がGNT[1] ピンに入力される。ブリッジPCIバス要求はREQ[2] ピンに供給され、その許可(GRANT)はGNT[2] ピンに入力される。ブリッジ・チップ48がPCIRST2 においてREQ[7] ハイをサンプリングしたならば、該チップはPCIアービタ124をイネーブルする。
【0104】
PCIアービタ124は、より高い優先順位のインジケータ(表示)に対してサービスを行うために又はマスタのREQ 信号が否定されていることに応答して、マスタのGNT 信号を否定する。そのGNT 信号が否定されると、現在のバスのマスタは、バスがアイドリング状態に戻るまでバスの所有を維持する。何れのPCIエージェントもバスを現在使用していないか又は要求していないならば、PCIアービタ124は、コンフィギュレーション・スペース125におけるPARKMSTRSELコンフィギュレーション・レジスタの値に依存して、2つのうちの1つを行う。即ち、レジスタの値が「0」ならば、PCIアービタ124は最後の活性のマスタがバス32上に停まるようにし)、該値が「1」ならば、バスはブリッジ・チップ48で停止される。
PCIアービタ124は、すべてのGNT 信号の最小の活性(アクティブ)時間を制御するPCI最小(MIN)許可タイマ304(図21)を含む。タイマ304に対するデフォールト値は16進の「0000」であり、この値は最小許可時間要求がないことを示す。タイマ304は、GNT ラインがアクティブであるPCICLK2のクロック期間の数を示すように、値1から255でプログラムされることができる。また、より多くの柔軟性を与えるために、2次バス32上の各PCIマスタに個別の最小許可タイマを割り当てることもできる。最小許可時間は、現在のマスタがそのREQ 信号をアサートしているときにのみ適用可能である。一旦REQ 信号がデアサートされると、GNT 信号は最小許可時間の値に関係なく排除される。
【0105】
図20Aを参照すると、通常の動作において、PCIアービタ124はラウンド−ロビン(round-robin)優先順位スキーム(第2レベルのアービトレーション・スキーム)を実施する。ラウンド−ロビン・スキームにおける8つのマスタは、拡張ボックス30の6つのスロット、SIO50、及びアップストリームのブリッジ・チップ26から送信されたメモリ書き込み(PMW)要求へ接続された装置を含む。このスキームにおけるPCIバス32上のすべてのマスタは、ブリッジ・チップ48と同じ優先順位を有する。或るマスタが許可された後に2次PCIバス32及び該マスタはFRAME 信号をアサートしており、バスのアービトレーションが再び行われ、現在のマスタがラウンド−ロビン・スタックの最下部に置かれる。もしマスタが要求を否定するか又は最小許可タイマ304がタイムアウトすると、PCIバス32は次に高い優先順位のマスタへ許可される。ロックされたサイクルは、PCIアービタ124によって何ら同様に取り扱われる。
特定の事象(イベント)に応答して、アービトレーション・スキームは、システムの性能を最適化するために変更される。それらの事象は、1)アップストリームからダウンストリームへの遅延読み出し要求(遅延された読み出し要求)又は遅延書き込み要求(遅延された書き込み要求)が保留される事象と、2)ダウンストリームからアップストリームへの遅延読み出し要求が、読み出し完了表示を提供されることなく保留される事象と、3)ブリッジ・チップ26がアップストリームのバス24上の現在のマスタであるときに、ストリーミンク(streaming)の可能性が存在する事象、とを含む。
遅延要求(遅延された要求)が検出されると、ブリッジ・チップ48は、2次PCIバス32を許可される次のマスタになる。一旦ブリッジ・チップ48にバス32が許可されると、該チップは、すべての残っている遅延要求を完了するまで又はサイクルの1つがリトライ(再試行(retry))されるまで、バス32の所有を維持する。ブリッジ・チップ48の再試行が行われたならば、2つのレベルのアービトレーション・スキームが、アービタ124によって実現される。ブリッジ・チップの読み出しサイクルが再試行される1つの主な原因は、ターゲットのデバイスが、フラッシュ(flush)される必要のある書き込みバッファをもつブリッジであることである。この場合において、最適の動作は、再試行を行うターゲットにバス32を許可して、その書き込みバッファを空にできるようにし、ブリッジ・チップ読み出し要求を受け入れ可能にすることである。
【0106】
図20Bを参照すると、2レベル・アービトレーション・プロトコルは、3つの可能なマスタ中の、即ち、CPU14からの遅延された要求(CPU遅延要求)、再試行するマスタからの要求、及びレベル2(第2レベル)・アービトレーション・スキームによって選択されたマスタの中の、ラウンド−ロビン・スキームであるレベル1(第1レベル)・アービトレーション・スキームを含む。レベル1・アービトレーション・スキームにおける3つのマスタの各々は、第3番目のアービトレーション・スロット毎に保証される。メモリ・サイクルに対して、再試行するターゲットに関連するスロットは、各PCIデバイスに関連するメモリ範囲を記憶するブリッジ・チップ48のコンフィギュレーション・スペース125におけるターゲット・メモリ範囲コンフィギュレーション・レジスタから決定される。もし再試行するマスタを決定することができないならば(I/O読み出しの場合のように)、又は、再試行するマスタが2次バス32を要求しないならば、レベル1・アービトレーション・スキームが、ブリッジ・チップ48とレベル2のマスタの間に存在する。
再試行を行うマスタは、レベル2のアービトレーションからマスクされない。従って、該マスタがレベル2のアービトレーション・スキームにおける次のマスタであるならば、バック−ツー−バック(back-to-back、連続する)・アービトレーションにおいて2つの勝ちを得ることが可能である。
例えば、アップストリームからダウンストリームへの読み出しが再試行され、且つマスタB及びマスタEと同様にマスタC(再試行するマスタ)がバス32を要求しているならば、バスの許可の順番は降順で以下のようである。即ち、ブリッジ・チップ48がそのトランザクションを完了することができ且つPCIアービタ124が通常の動作に対するそのレベル2・アービトレーション・スキームに戻るまで、ブリッジ・チップ48、再試行するマスタ(マスタC)、マスタC、ブリッジ・チップ48、再試行するマスタC、マスタE、ブリッジ・チップ48、等々のようである。
ブリッジ・チップの読み出しが再試行され、且つ要求を行っている他のマスタがマスタAとマスタDのみであるならば(即ち、再試行するマスタがバスを要求していないか又はI/Oスペースにアクセスしているために識別されない)、バス要求の順番は、ブリッジ・チップ48、マスタA、ブリッジ・チップ48、マスタD、等々のようである。
2つのレベルのアービトレーション・スキームは、最高の優先順位のCPU14から遅延された要求を与える。このアービトレーションの方法はCPU14に対して大変有利であるが、最終的には、バス32上の要求を行うすべてのデバイスがPCIバス32を許可される。そのようにすることによって、PCIブリッジ・チップの要求が再試行されるときに、2次バスの他のマスタが長時間の停止状態になることが少なくなる。
【0107】
図21を参照すると、PCIアービタ124はレベル2・ラウンド−ロビン・アービトレーション・スキームを実施するために、L2状態マシン(レベル2の状態マシン)302を含む。L2状態マシン302は、現在のラウンド−ロビン・マスタを示す信号RR MAST[2:0]を受信する。また、L2状態マシン302は、2次PCIバス32の8つの可能なマスタに対応するリクエスト信号RR REQ[7:0]を受信する。現在のマスタ及び要求信号の状態を基にして、L2状態マシン302はラウンド−ロビンの次のマスタを表す値を発生する。L2状態マシン302の出力は、6:3マルチプレクサ306の「0」入力に与えられ、その「1」入力は信号Q2A STRMAST[2:0]を受信する。マルチプレクサ306の選択(セレクト)入力は信号STREAM REQを受信し、この信号は、ストリーミングの機会が存在し(Q2A STRMASTがハイ)且つ2次PCIバス32上のストリーミング・マスタがその要求ラインをアサートしており(MY REQ[Q2A STRMAST[2:0]]がハイ)且つ遅延された要求が保留されていない(BAL DEL REQがロー)ときに、ANDゲート308によってハイにされる。
マルチプレクサ306の出力は、レベル2・アービトレーション・スキームにおけるラウンド−ロビンの次のマスタを表す信号N RR MAST[2:0]である。信号N RR MAST[2:0]は、L1状態マシン(レベル1の状態マシン)300によって受信され、このマシンはまた以下の信号を受信する。すなわち、信号RTRYMAST REQ(再試行を行うバス・マスタの要求を表す)、信号MIN GRANT(最小許可タイマ304がタイムアウトしたときにアサートされる)、遅延された要求信号BAL DEL REQ、ストリーム要求信号STREAM REQ、信号CURMAST REQ(現在のマスタがその要求信号のアサートを維持していることを示す)、信号ANY SLOT REQ(ブリッジ・チップ要求BLREQ を含まない要求信号REQ[7:1]の何れかがアサートされた場合に、ハイにアサートされる)、及び信号L1STATE[1:0](L1状態マシン300の現在の状態を表す)である。L1状態マシン300は、再試行するマスタ(RTRYMAST REQ)とブリッジ・チップ48からの遅延された要求(BAL DEL REQ)とレベル2のマスタ(ANY SLOT REQ)とを含む、3つの可能なレベル1のマスタの1つを選択する。
【0108】
再試行するマスタの要求信号RTRYMAST REQは、ANDゲート312から発生され、該ANDゲートは、信号BAL DEL REQ、信号MY REQ[RTRY MAT[2:0]](再試行するマスタがその要求をアサートしているかを示す)、及びORゲート310の出力を受けとる。ORゲート310の入力は、信号RTRY MAST[2:0]を受けとる。従って、再試行を行うマスタが識別されていたならば(RTRY MAST[2:0]が0ではない)、遅延された要求が存在し(BAL DEL REQがハイ)、再試行を行うマスタがその要求をアサートしており、信号RTRYMAST REQがアサートされる。
L1状態マシン300は、信号N L1STATE[1:0](L1状態マシン300の次の状態を表す)と、信号N CURMAST[2:0](レベル2・アービトレーション・スキームに従う次のマスタを表す)を発生する。また、L1状態マシン300は、信号OPEN WINDOWを発生し、この信号は、2次PCIバス32上のマスタを変更するために許可(GNT)状態マシン307に対して、再アービトレーションのウインドウが存在することを示す。L1状態マシン300によって与えられる信号ADV RR MASTは、次のレベル2・ラウンド−ロビンのマスタを進めるために信号RR MAST[2:0]に信号N RR MAST[2:0]の値をロードするときに、それを許可状態マシン307に示す。
【0109】
許可状態マシン307は、許可信号GNT[7:0]とバス32の所有権が変更されることを示すための信号CHANGING GNTを出力する。許可信号GNT[7:1] は、GNT[7:1]信号の反転された信号であり、許可信号BLGNT は、GNT[0]信号の反転である。許可状態マシン307はまた、信号L1STATE[1:0]及び信号RR MAST[2:0]を発生する。
最小許可タイマ304は、信号PCLKによってクロッキングされ、信号MIN GRANTを発生する。また、最小許可タイマ304は、信号CHANGING GNT及びNEW FRAME(新しいFRAME 信号がアサートされたことを示す)を受信する。最小許可タイマ304の初期値は、値{CFG2A MINGNT[3:0],0000}としてロードされ、信号CFG2A MINGNT[3:0]は、最小許可タイマ304の初期値を規定するコンフィギュレーション・スペース125に記憶されたコンフィギュレーション・ビットである。最小許可タイマ304は、0にカウント・ダウンされて信号CHANGING GNTがハイにアサートされた後に、再びロードされる。最小許可タイマ304に新しい値がロードされた後に、信号NEW FRAMEがハイにアサートされ、且つ信号CHANGING GNTが許可状態マシン307によってローにデアサートされたときに、該タイマは減分を開始し、これはPCIバス32上で新しいトランザクションが開始したことを示す。
信号MY REQ[7:1]はNORゲート314によって発生され、このゲートの入力は要求信号REQ[7:1] とマスク信号Q2AMASKREQ[7:1]を受信する。マスク・ビットQ2AMASKREQ[X](X=1〜7)のアサートは、対応するマスタの要求REQ[X]をマスクし、これにより、PCIアービタ124が要求信号に応答しないようにする。信号MY REQ[0]はインバータ316から出力され、該インバータは、ブリッジ・リクエストBLREQ を受信する。
【0110】
図22を参照すると、許可状態マシン307は4つの状態、PARK、GNT、IDLE4GNT、IDLE4PARKを含む。リセット信号RESET(PCIリセット信号PCIRST2 から発生される)がアサートされると、許可状態マシン307は状態PARKとなり、信号ANY REQがデアサートされる間そこに停まる。PCIアービタ124への要求ラインの何れかがアサートされると、信号ANY REQはハイにアサートされる。PARK状態において、PCI−PCIブリッジ48は、別の要求が存在しないときに、PCIバス32の所有者としてとどまる。
信号ANY REQがアサートされたならば、許可状態マシン307は状態PARKから状態IDLE4GNTへ遷移し、信号CHANGING GNTがハイにアサートされ、PCIアービタ124がマスタを変更していることを示す。許可信号GNT[7:0]はすべて0にクリアされ、信号CURMAST[2:0]が次のマスタN CURMAST[2:0]の値で更新される。更に、ラウンド−ロビン・マスタ信号RR MAST[2:0]は、信号ADV RR MASTがL1状態マシン300によってアサートされた場合に、次のラウンド−ロビン・マスタ値N RR MAST[2:0]に更新される。信号ADV RR MASTがハイのときは、次のL1マスタがL2マスタのうちの1つであることを示す。
状態IDLE4GNTから、許可状態マシン307は次にGNT状態に遷移し、信号GNT[7:0]が新しい許可信号NEWGNT[7:0]の状態へ設定され、信号CHANGING GNTがローになる。信号NEWGNT[7:0]は、図24に示されるように、現在マスタ信号CURMAST[2:0]の状態に基づいている。
【0111】
GNT状態から3つの遷移が可能である。アービトレーション・ウインドウがオープンであり(OPEN WINDOWがハイ)、保留されている要求がなく(ANY REQがロー)、PCIバス32がアイドリング状態であり(BUS IDLEがハイ)、次のマスタが現在のマスタである(即ち、現在のマスタがパークしているマスタである)場合、許可状態マシン307はPARK状態に戻る。GNT状態からPARK状態へ戻るように遷移する場合、信号L1STATE[1:0]は、信号N L1STATE[1:0]で更新される。しかしながら、保留されている要求がなく且つバスがアイドリング状態であるが、現在のマスタがパークしているマスタではない(即ち、信号N CURMAST[2:0]が信号CURMAST[2:0]の値と等しくない)場合、アイドリング状態が必要であり、許可状態マシン306は、GNT状態からIDLE4PARK状態へ遷移する。L1状態値L1STATE[1:0]は更新される。IDLE4PARK状態から、許可状態マシン307はPARK状態へ遷移し、許可信号GNT[7:0]を新しい許可信号NEWGNT[7:0]に等しくセットして、PCIバス32を新しいマスタに許可する。信号CHANGING GNTもまたローにされる。
アービトレーション・ウインドウがオープンし(OPEN WINDOWがハイ)、且つ次のマスタが現在のマスタではない(信号N CURMAST[2:0]が信号CURMAST[2:0]と等しくない)場合、許可状態マシン306は、アイドリング状態IDLE4GNTへ遷移してバス・マスタ許可を変更する。遷移において、信号CHANGING GNTがハイにアサートされ、信号GNT[7:0]がすべて0にクリアされ、信号CURMAST[2:0]が次のマスタ値N CURMAST[2:0]に更新され、L1状態信号L1STATE[1:0]が次の状態値N L1STATE[1:0]に更新される。更に、信号ADV RR MASTがハイにアサートされると、ラウンド−ロビン・マスタ信号RR MAST[2:0]が次のラウンド−ロビン・マスタN RR MAST[2:0]に更新される。許可信号GNT[7:0]は次に、IDLE4GNT状態からGNT状態への遷移において、値NEWGNT[7:0]に割り当てられる。
【0112】
図23を参照すると、L1状態マシン300(図21)は、RESET信号がアサートされたときに状態RRにおいて動作を開始し、状態マシン300は遅延された要求信号BAL DEL REQがローの場合に(遅延された要求信号が保留されていないことを示す)状態RRに停まる。RR状態の間、信号ADV RR MASTはハイにアサートされ、許可状態マシン307がラウンド−ロビン・マスタを更新することを可能にする(即ち、信号RR MAST[2:0]を値N RR MAST[2:0]と等しくセットする)。RR状態は、レベル2・アービトレーション・スキームが用いられるラウンド−ロビン状態である。RR状態の間、次のマスタ信号N CURMAST[2:0]は次のラウンド−ロビン・マスタN RR MAST[2:0]と等しくセットされ、ストリーム要求が存在する場合(STREAM REQがハイ)、又は最小許可タイマ304がタイマ・アウトしている場合(MIN GRANTがハイ)、又は現在のマスタがその要求を否定した場合(CURMAST REQがローになる)に、信号OPEN WINDOWがハイにセットされる。信号OPEN WINDOWは、ハイにアサートされたときに、新しいアービトレーションが行われることを可能とする。
【0113】
遅延された要求が検出されると(BAL DEL REQがハイになる)、L1状態マシン300はRR状態からBAL状態へ遷移し、次のマスタ状態N CURMAST[2:0]をブリッジ・チップ48としてセットし、信号ADV RR MASTをデアサートして、レベル2・ラウンド−ロビン・アービトレーションをディスエーブルにする。BAL状態において、遅延された要求がデアサートされるか(BAL DEL REQがローになる)又は遅延された要求が再試行される(BAL RETRIEDがハイになる)場合に、信号OPEN WINDOWはハイにアサートされる。信号BAL DEL REQがローにされるか、又は遅延された要求BAL DEL REQがハイにアサートされ、そして再試行するマスタの要求がローにされ(RTRYMAST REQがロー)、且つスロット・リクエストANY SLOT REQがハイにアサートされると、L1状態マシン300はRR状態に戻るように遷移する。この遷移において、信号ADV RR MASTはハイにアサートされ、次のマスタ信号N CURMAST[2:0]は次のラウンド−ロビン・マスタN RR MAST[2:0]と等しくセットされる。信号BAL DEL REQがデアサートされると、それは、アービタ124がレベル2・ラウンド−ロビン・スキームへ戻るべきであることを示す。遅延された要求信号がアサートされるが再試行を行うマスタの要求が否定されたならば、レベル1・アービトレーション・スキームがブリッジ・チップ48とPCIバス32のスロットの間に存在することになる。
【0114】
遅延された要求BAL DEL REQと再試行するマスタの要求RTRYMAST REQの両方がアサートされると、L1状態マシン300は状態BALから状態RETRY MASTへ遷移し、再試行を行うマスタは、次のマスタとしてセットされる(N CURMAST[2:0]がRTRY MAST[2:0]と等しくセットされる)。信号ADV RR MASTはローに維持される。RETRY MAST状態において、PCIスロット・マスタの何れも要求をアサートしていないならば(ANY SLOT REQがロー)、レベル1・アービトレーション・スキームは再試行するマスタとブリッジ・チップ48の間にあることになり、L1状態マシン300はBAL状態に戻るように遷移する。ブリッジ・チップ48は次のマスタとしてセットされ(N CURMAST[2:0]が状態BALBOAと等しい)、信号ADV RR MASTがローに維持される。しかしながら、スロット・マスタの何れかが要求をアサートしていると(ANY SLOT REQがハイ)、L1状態マシン300は、RETRY MAST状態からRR状態へ遷移する。遷移において、信号ADV RR MASTはハイにアサートされ、次のラウンド−ロビン・マスタが次のマスタとしてセットされる(N CURMAST[2:0]がN RR MAST[2:0]と等しくセットされる)。
ブリッジ・チップのストリーミング能力を利用するために、DRCに対するデータがケーブル28から到着し始めるときに、そのDRCに関連するマスタは、最高の優先順位のデバイスとなる(そのREQ がアサートされると仮定する)。これによって、マスタがケーブル28を下ってくるデータ・ストリームを受信することが可能となり、そのとき、ウインドウはストリーミングのためにそこにある。ブリッジ・チップ48がDRC待ち行列を満たす前にマスタを接続できないならば、アップストリームのブリッジ・チップ24が遮断し、データの一部のみが要求を行っているマスタに渡されてしまい、マスタがアップストリームのバス24に別の読み出し要求を発生することが必要となる。ストリーミング・マスタは、DRCデータがケーブル28から到着し続ける限り、最高の優先順位を保持する。マスタが異なるサイクル/アドレスを繰り返すならば再試行されるが、その要求がどこかへ行ってしまうまで、又はストリーミングの機会が通過するまで、2次PCIバス32の所有権を維持する。
【0115】
再試行要求及び多重スレッド・マスタ
各ブリッジ・チップは、遅延されたトランザクションのデバイスであるので、ダウンストリームのバス32上のデバイスがアップストリームのターゲットを宛て先にする読み出し要求を発生すると、ダウンストリームのブリッジ・チップ48は、2次バス32上に再試行トランザクション(PCIの仕様において説明)を発生し、ケーブル28を上流方向に要求を送信する。再試行トランザクションは、要求を行っているマスタがPCIバス32の制御を放棄するようにし、そのREQ ラインを否定するようにする。REQ ラインを否定した後に、再試行したマスタは、後の時間に、同じサイクルに対して要求を再アサートし、それによって、そのGNT がアサートされ(もしそのREQ ラインがマスクされていない場合)、且つダウンストリームのブリッジ・チップ48において読み出し完了表示がアサートされるまで、バス・マスタが再試行される結果となる。
【0116】
図25を参照すると、再試行要求の不必要なサービスを避けるために、再試行された遅延された読み出し又は書き込み要求を発生する2次バス・マスタのREQ ラインは、遅延された完了信号が戻るまで、信号Q2A MASK REQ[7:1](再試行されマスクされていないブリッジ・チップ48からの要求)の適宜のものをアサートすることによってマスクされる。この様式において、要求を行う他のマスタには、それらの要求を得るための優先順位が与えられる。遅延された完了信号と関連する第1の情報が返送されるとすぐに、対応するマスタのREQ ラインはマスク解除され、再試行したマスタが再びアービトレーションに入ることができる。
しかしながら、第1のターゲットをアサートでき、再試行されるようにし、異なる要求とともに戻ってくることが可能な、ダウンストリームのバス32(図26B)上の多重スレッド(multi-threaded)(又は多重ヘッド(multi-headed))のマスタに対しては、特別なケースが存在する。そのような多重スレッド・バス・デバイスの1つは、2次PCIバス32と下位のPCIバス325を接続するPCI−PCIブリッジ323である。バス325は、ネットワーク・インターフェース・カード(NIC)327Aと327Bに接続され、それらは2つの異なるネットワークに接続される。従って、1次PCIバス32に対するNIC327Aからの要求がブリッジ・チップ48によって再試行されるならば、NIC327Bは異なる要求を発生することができる。この場合、信号CFG2Q MULTI MASTER[X]がハイにセットされることによって、多重スレッド・マスタのREQ ラインはマスクされない。
【0117】
図25の状態レジスタ326は、スロットがシングル又は多重スレッドであるかを判定する。レジスタ326は、リセットされると、各2次バス・デバイスがシングル−スレッドであると推定するためにクリアされる。次に、各スロットは、同じマスタからの或るサイクルが保留されているときに異なるサイクルを要求するかを判定するために、監視される。マスタにおいて多重スレッドの挙動が観察されたならば、そのマスタは、対応するビットCFG2Q MULTI MASTER[X]をハイにセットすることによって、マスクされる。
状態レジスタ326の入力は、14:7マルチプレクサ328の出力に接続され、このマルチプレクサの「0」入力は14:7マルチプレクサ330の出力に接続され、「1」入力はアドレス・ビットP2Q AD[22:16]に接続される。選択信号CFGWR MMは、マルチプレクサ328の「0」入力と「1」入力を選択する。信号CFGWR MMがハイにアサートされると、データ・ビットP2Q AD[22:16]により状態レジスタ326へコンフィギュレーション書き込みがなされ、レジスタ326のビットのソフトウエア制御を可能にする。マルチプレクサ330の「1」入力は多重マスタ信号MULTI MASTER[7:1]を受信し、「0」入力はレジスタ326の出力を受信し、そして、マルチプレクサ330は信号MULTI SELによって制御される。信号MULTI SELはANDゲート338によって発生され、このゲートの第1の入力は、信号Q2PIF CHECK CYC(2次PCIバス32上のバス・デバイスからの遅延されたメモリ読み出し又は書き込み要求の間などに、ハイにアサートされて、現在のトランザクション情報が待ち行列ブロック127に記憶された情報と一致するかチェックされるべきであることを示す)を受信し、このゲートの他の入力は、信号DCQ HIT(現在のアドレス情報が、DCQ148における要求を行っているマスタの保留要求に関連するアドレス情報と一致しないことを示す)の反転信号を受信する。従って、比較が一致しなければ、信号CFG2Q MULTI MASTER[7:1]の値が更新される。
【0118】
マスタXが再試行された保留の要求を有し、且つマスタXが異なる要求とともに戻って来たならば、ビットMULTI MASTER[X]はハイにアサートされる。これは保留のトランザクション情報(例えば、アドレス、バイト・イネーブル、書き込みのためのデータ)と新しい要求のアドレスを比較することによってをチェックされる。比較が一致しなかったということは、マスタが多重スレッドであることを示す。一旦、多重マスタ・コンフィギュレーション・ビットCFG2Q MULTI MASTER[X](X=1〜7)がハイにセットされると、このビットはハイに維持される。
信号MULTI MASTER[7:1]は、デコーダ336によって発生される。デコーダ336は信号Q2PIF SLOT[2:0](マスタからの現在の遅延された要求に対するスロット数)、Q[7:0] MASTER[2:0](DCQ148における8つのバッファの各々に関連するマスタ)、Q[7:0] COMPLETE(8つの待ち行列の各々の完了状態)、及びQ[7:0] PART COMPLETE(遅延された完了待ち行列におけるバッファの各々の部分的完了状態)を受信する。例えば、信号Q0 MASTER[2:0]が値4を含むならば、それは、DCQバッファ0がスロット4におけるバス・デバイスからの遅延された要求のトランザクション情報を記憶することを示す。信号QY COMPLETE(Y=0〜7)は、ハイにアサートされると、DCQバッファYが遅延された要求のトランザクションに関連するすべてのデータを受信したことを示す。信号QY PART COMPLETE(Y=0〜7)は、ハイにアサートされると、マスタのうちの1つの遅延されたトランザクションに対してDCQバッファとしてDCQバッファYが割り当てられたが、その遅延されたトランザクションに関連するすべてのデータがまだ受信されていないことを示す。
【0119】
現在のスロット番号Q2PIF SLOT[2:0]が8つの待ち行列のマスタの表示の信号Q[7:0] MASTER[2:0]の何れかの値と等しく、且つ対応するDCQバッファが完了又は部分的完了の状態である場合には、信号DCQ HITがローで且つ信号Q2PIF CHECK CYCがハイであるならば、ビットMULTI MASTER[7:1]の対応するものがハイにセットされる。即ち、例えば、信号Q2PIF SLOT[2:0]が値2を含み、スロット2におけるデバイスが遅延された要求の現在のマスタであることを示し、DCQバッファ5がスロット2のマスタに対する保留の要求を記憶しており(Q5 MASTER[2:0]=5)、信号Q5 COMPLETE又は信号Q5 PART COPMLETEの何れかがハイであり、信号Q2PIF CHECK CYCがハイであり、信号DCQ HITがローであるならば、ビットMULTI MASTER[2]はハイにセットされて、スロット2のデバイスが多重スレッドのマスタであることを示す。
マスク要求発生ブロック332は、信号Q[7:0] MASTER[2:0]、Q[7:0] STATE[3:0](遅延された完了待ち行列0〜7の状態を示す)、SLOT WITH DATA[7:0](遅延された完了Q0〜7が有効データを含むかを示す)、CFG2Q MULTI MASTER[X](X=1〜7)、CFG2Q ALWAYS MASK、及びCFG2Q NEVER MASKに応答して、信号Q2A MASK REQ[X](X=1〜7)を発生する。
【0120】
図26Aに示されるように、マスク要求発生ブロック332は、信号Q2A MASK REQ[X](X=1〜7)を発生するための2:1マルチプレクサ320を含む。マルチプレクサ320の「1」入力はORゲート322の出力に接続され、「0」入力はロー(アース)に結合される。マルチプレクサ320の選択制御入力は、信号MASK MUXSELである。ORゲート322の1つの入力は、NORゲート324の出力に接続される。このNORゲートの1つの入力は、信号CFG2Q MULTI MASTER[X](多重スレッドのマスタを示す)を受信し、別の入力は信号CFG2Q NEVER MASK(多重スレッドのマスタが検出された場合に要求ラインがマスクされるべきではないことを示すコンフィギュレーション・ビット)を受信する。ORゲート322の別の入力は、信号CFG2Q ALWAYS MASKを受信し、これは、信号MUXSELがハイにアサートされた場合に対応するマスク・ビットQ2A MASK REQ[X]が常にマスクされるべきであることを示すコンフィギュレーション・ビットである。2次バス・マスタからの要求が待ち行列ブロック127に既に存在するデータへのものではない、即ち、要求が1次バス24へ送信されねばならないならば、信号MASK MUXSELはハイにアサートされる。即ち、要求が2次PCIバス32上のデバイスから1次PCIバス24へアップストリームに送信される毎に、ビットCFG2Q MULTI MASTER[7:1]のチェックが行われて、多重スレッドのマスタが検出されたかを判定する。
要求をマスクすることは、コンフィギュレーション・レジスタ125において適当なビットをセットすることによって、オーバーライド(override)されることができる。使用可能なモジュールには、1)多重スレッドのマスタでない場合に、要求のマスクがイネーブルされるノーマル・モード(CFG2Q NEVER MASK=0、CFG2Q ALWAYS MASK=0)、2)多重スレッドであったとしても、再試行したマスタからの要求がマスクされる常時マスク・モード(CFG2Q ALWAYS MASK=1)、及び3)要求が決してマスクされない非マスク・モード(CFG2Q NEVER MASK=1、CFG2Q ALWAYS MASK=0)が含まれる。
【0121】
拡張カードの挿入と取り外し
拡張カードの接続
図1および図27Aに示すように、共通設計30の2つの拡張ボックス30aおよび30bは、その各々が、コンピュータ・システム10をパワーアップしたままで、従来型の拡張カード807が(ホットプラグされて)挿入及び取り外しできる6つのホットプラグ型スロット36(36a〜36f)を持つ。6つの機械式レバー802は、対応するホットプラグ型スロット36中に挿入される拡張カード807の内の希望するものを閉鎖(クローズ)、すなわちラッチする時に)固定するのに使用される。スロット36の内の1つから拡張カード807を取り外したり挿入したりするためには、対応するレバー802を開放(オープン)しなければならない、すなわちラッチを外さなければならないが、レバー802が開放している間は、対応するスロット36はパワーはダウンしたままである。そのスロット36に固着しているレバー802を開放すると、コンピュータ・システム10はこれを感知して、カード807がそのスロット36から取り外しできるようになる前に、カード807(および対応するスロット36)をパワーダウンする。パワーダウンされたスロット36は、カード807を保持していない他のスロットと同様に、コンピュータ・システム10がそのソフトウエアで希望のスロット36をパワーアップするまで、パワー・ダウンされたままである。カード・スロット34に挿入されたカード46はブリッジ・チップ48を有するが、このチップは、レバー802の固定状況(開放しているか閉成しているか)を監視し、どのカード807(および対応するスロット36)でもレバー802で固定されていないものがあれば、パワーダウンする。コンピュータ・システム10のソフトウエアはまた、どのスロット36でもパワーダウンできる。
複数のカード807は、パワーアップ・シーケンスでパワーアップされ、パワーダウン・シーケンスでパワーダウンされる。パワーアップ・シーケンスでは、電力は、パワーアップされているカード807に最初に供給され、その後で、パワーアップされるカード807に、PCIクロック信号が(PCIバス32を介して)入力される。カード807の残りのPCIバス信号線は、PCIバス32の対応するラインに結合される。最後に、パワーアップされているカード807用のリセット信号が反転され、これによってカード807はリセット状態から解放される。
【0122】
パワーアップ・シーケンスによって、パワーアップされるカード807の回路は、残りのPCIバス信号が与えられる以前に、PCIクロック信号によって完全に機能可能となる。クロック信号および残りのPCIバス信号は、カード807に接続され、しかもカード807がリセットされる以前であれば、ブリッジ・チップ48はPCIバス32の制御を保有する。これらの時間中、ブリッジ・チップ48がPCIバス32を制御するので、パワーアップ・シーケンスによって発生するPCIバス32への電位グリッチは、パワーアップされているカード807の動作には影響しない。
パワーダウン・シーケンスにおいては、パワーダウンされるカード807が最初にリセットされる。次に、PCIクロック信号以外のPCIバス信号がカード807から除かれる。するとブリッジ・チップ48は、カード807がパワーダウンされる前に、カード807からPCIクロック信号を除去する。パワーダウン・シーケンスによって、パワーダウンされるカード807からバス32への誤信号の伝搬が最小化されるが、これは、カード807上の回路がPCIバス信号ラインが遮断されるまでは、完全に機能可能であるためである。
PCIクロック信号および残りのPCIバス信号の接続が外され、カード807がリセットされると、ブリッジ・チップ48はPCIバス32を制御する。これらの時間中、ブリッジ・チップ48がPCIバス32を制御するので、パワーダウン・シーケンスによって起こるPCIバス32上の電位グリッチは、パワーアップされているカード807の動作に影響しない。
【0123】
ブリッジ・チップ48は、24本の制御信号POUT[39:16]によってスロット36のパワーアップ・シーケンスとパワーダウン・シーケンスを制御するシリアル入出力(SIO)回路50を具備する。制御信号POUT[39:16]は、SIO回路50が発生する40本の出力制御信号POUT[39:16]の一部(サブ集合)である。制御信号POUT[39:16]は、スロット・バス・イネーブル信号BUSEN#[5:0]、スロット・パワー・イネーブル信号PWREN[5:0]、スロット・クロック・イネーブル信号CLKEN#[5:0]およびスロット・リセット信号RST#[5:0](すべてSIO回路50の内部信号であり、後述する)がラッチされたものである。制御信号POUT[39:0]、信号BUSEN#[5:0]、PWREN[5:0]、CLKEN#[5:0]およびRST#[5:0]の関係を次の表に示す。
【表15】
【0124】
図2および図28に示すように、ホットプラグ型スロット36の各々は、PCIバス32に対するスロット36の接続および取り外しのための関連のスイッチ回路41を有する。スロット36それぞれに備えられているスイッチ回路41には、制御信号POUT[39:16]の内の4つが入力される。例えば、スロット36aの場合、制御信号POUT[28]がオンになる、すなわちロー・レベルであると、スロット36aは、スイッチ回路47によってPCIバス32のバス信号線に接続される。制御信号POU[28]がオフになる、すなわちハイ・レベルであると、スロット36aはPCIバス32のバス信号ラインからその接続を外される。
制御信号POUT[22]がオンになる、すなわちロー(低レベル)の場合、スロット36aは、スイッチ回路43を介してPCIクロック信号CLKに接続される。制御信号POUT[22]がオフになる、すなわちハイの場合、スロット36aはクロック信号CLKからその接続を外される。
制御信号POUT[34]がオンになる、すなわちハイの場合、スロット36aはスイッチ回路45を介してカードの電源レベルVSSに接続される。制御信号POUT[34]がオフになる、すなわちローの場合、スロット36aは、カード電源レベルVSSからその接続を外される。
制御信号POUT[16]がオンになる、すなわちローの場合、スロット36aはリセットされ、制御信号POUT[16]がオフになる、すなわちハイの場合、スロット36aはリセット状態から脱出する。
【0125】
図2に示すように、SIO回路50は、拡張ボックス30が提供する最高128(16バイト)のラッチ状態信号STATUS[127:0]を選択して監視する。状態信号STATUS[127:0]は、拡張ボックス30の選ばれた状態の”スナップショット”を形成する。状態信号STATUS[127:0]には、レバー802の個々の固定状態(開放されているか、閉成されているか)を示す6つの状態信号STATUS[5:0]が含まれる。SIO回路50は、状態信号STATUS[31:0]の論理電圧レベルに変化がないかどうかを監視する。SIO回路50は、CPU14からの指示に基づいて、状態信号STATUS[127:32]を順次にSIO回路50に送り込む。
SIO回路50は、シリアル・データ信号NEW CSIDを介して、状態信号STATUS[127:0]をその最下位信号から始めて受信する。データ信号NEW CSIDは、スロット36と共に拡張ボックス30のボード上に位置する32ビットのパラレル入力シフトレジスタ82のシリアル出力によって供給される。
レジスタ82は、そのパラレル入力端子から、32の最下位状態信号STATUS[31:0]に含まれる24のパラレル状態信号PIN[23:0](ホットプラグ型スロット36の各々に対して4つづずつが関連している)を受信する。状態信号STATUS[31:0]の内1つ以上の信号によって示される状態、すなわち論理電圧レベルが変化すると、ブリッジ・チップ48は、割り込み受信ブロック132によって受信されたシリアル割り込み要求信号SI INTR#をオンにする、すなわちローに駆動することによって、CPU14に対して割り込み要求を発生させる。状態信号PIN[23:0]には、個々のスロット36と関連する2つのPCIカード存在信号(PRSNT1#およびPRSNT2#)が含まれる。
【0126】
6つの状態信号PIN[5:0](自身のラッチされた信号、すなわち状態信号STATUS[5:0]に対応している)は、レバー802の各々の固定状態、すなわち契合状態(開成しているか閉成しているか)を示す。6つのスライディング・スイッチ805(図27のA〜Cを参照)は、その対応するレバー802の動きによって始動されて、その対応するレバー802の固定状態を電気的に指示するために用いられる。スイッチ805はその各々が、グランドに結合された第1の端子、及び状態信号PIN[5:0]の内の対応する1つを供給する第2の端子を有する。この第2の端子は、6個あるレジスタ801の内の1つを介して電源電圧VDDに結合されている。
レバー802の内のいずれか1つが開成されており、さらにレバー802により固定されているカード807が解放されると、状態信号PIN[5:0]の内の対応する1つがオンとなる、すなわちハイに駆動される。1例として、スロット36aの場合、対応するレバー802が閉成されると、状態信号PIN[0]はオフとなる、すなわちローに駆動される。スロット36a用のレバー802が開成されると、状態信号PIN[0]はオンとなる、すなわちハイに駆動される。
レジスタ82はまた、ラッチされた状態信号STATUS[127:32]をシリアル・ストリームとして受信するが、これは、信号STATUS[127:32]のいずれか1つの論理電圧レベルが変化しても、割り込みを掛けることはない。状態信号STATUS[127:32]は、スロット36を持つ拡張ボックス30のボード上に位置する16ビットのシフトレジスタ52から成っている。シフトレジスタ52は、自身のパラレル入力端子から状態信号を受信し、SIO回路50の指示に基づいて、状態信号STATUS[127:32]をラッチする。シフトレジスタ52は、状態信号STATUS[127:32]をシリアル化し、信号STATUS[127:32]をシリアル・データ信号CSID Iを介して、レジスタ82のシリアル入力端子に供給する。
【0127】
SIO回路50から指示されると、レジスタ82は、状態信号PIN[23:0]をラッチし、状態信号STATAS[31:0]を生成し、該状態信号[31:0]、及び(CPU14から要請があれば)1バイト以上の状態信号STATUS[127:32]を、シリアル・データ信号NEW CSIDを介してSIO回路50に、最下位信号第1形式で供給する。状態信号STUTAS[127:0]は、以下の表16及び17に示されている。なお、表17は、表16の続きである。
【表16】
【表17】
【0128】
図2及び図30に示されるように、SIO回路50がレジスタ・ロード信号CSIL 0 をアサートしたとき、即ちローに駆動したとき、シフトレジスタ52は状態信号STATAS[127:32]をラッチし、シフトレジスタ82は状態信号STATUS[31:0]をラッチする。SIO回路50が信号CSIL 0 をハイに駆動すると、2つのレジスタ52、82は、SIO回路50によって供給されたクロック信号CSIC 0の正の(立ち上がり)エッジで、SIO回路50に対して、データをシリアル転送する。クロック信号CSIC 0は、PCIクロック信号CLKに同期しており、かつ該CLKの1/4の周波数である。
【0129】
図29に示されるように、状態信号STATUS[31:0]をモニタ即ち走査するために、SIO回路50は、32ビット割り込みレジスタ800を用い、該レジスタのビット位置は、信号STATUS[31:0]に対応する。SIO回路50は、割り込みレジスタ800のビットを、既にデバウンス(debounce)された対応する状態信号STATUS[31:0]となるように、更新する。これについては、以降で詳細に説明する。2つの状態信号STATUS[7:6]が、追加のホットプラグ・スロット36のために予約され、また割り込みレジスタ800の7番目及び8番目のビットが、該追加のスロット36のために予約される。割り込みレジスタ800は、PCIバス32に接続されたSIO回路50のレジスタ・ロジック・ブロック808の一部である。
SIO回路50のシリアル走査入力ロジック804は、状態信号STATUS[31:0]を順次走査、即ち、ロジック電圧レベルの遷移により示される変化をモニタする。レバー802に関連する状態信号STATUS[5:0]の1つ又は複数の状態が変化する場合は、シリアル走査入力ロジック807は、ゆっくりした走査モードとなり、状態信号STATUS[5:0]が所定のデバウンス期間内で32回、走査される。状態信号STATUS[5:0]の1つ又は複数が変化した場合、変化した状態信号STATUS[5:0]が少なくともデバウンス期間、同一の論理レベルを保持したときに、割り込みレベル800を更新(そして、シリアル割り込み信号SI INTER#をアサート)する。シリアル走査入力ロジック804は、プログラマブル・タイマ806に接続されており、該タイマは、シリアル走査入力ロジック804によって開始されたデバウンス遅延期間を経時する。デバウンス期間を安定に保つために状態を要求することにより、状態信号STATUS[5:0]の1つによって示される欠陥値(即ち、「グリッチ」)に基づくホットプラグ・スロット36の1つの不慮のパワーダウンを、低減することができる。すべての状態信号STATUS[5:0]が少なくともデバウンス期間中同一の論理レベルにある場合には、シリアル走査入力ロジック804は、より高速の走査モードで、32の状態信号STATUS[31:0]のすべてを走査する。
【0130】
シリアル走査入力ロジック804が状態信号STATUS[31:6]の1つに変化が生じたことを検出した場合は、該ロジック804は、タイマ806に対して他のデバウンス期間を計測するように指令し、続いて、シリアル割り込み信号SI INTER#をアサートし、既に変化した状態信号STATUS[31:6]でシリアル割り込みレジスタ800を更新し、そして、デバウンス期間が変更されるまで、変化した状態信号STATUS[31:6]を無視する。デバウンス期間が経過すると、シリアル走査入力ロジック804は、32の状態信号STATUS[31:0]における変化を認識するために、動作を進行する。
シリアル割り込み信号SI INTER#がアサートされると、CPU14は割り込みレジスタ800を読みだし、どの状態信号STATUS[31:0]が割り込みを生じたか(1つ以上の場合もある)を判定し、変化した割り込みレジスタ800の1つまたは複数のビットに“1”を書き込むことによって、シリアル割り込み信号SI INTER#をデアサートする。
CPU14は、状態信号STATUS[31:0]によって生じた割り込み要求をマスクすることもできる。これは、32ビットの割り込みマスク・レジスタ810中の対応するビットに“1”を書き込むことによって実行される。CPU14はまた、シリアル入力バイト・レジスタ812に、選択されたバイトのバイト数を書き込むことによって、状態信号STATUS[47:0]のバイトを選択的に読み出すこともできる。SIO回路50は、該所定のバイトをシリアル・データ・レジスタ815に転送する。
例えば、状態信号STATUS[23:16]の3番目のバイト(バイト番号2)を読み出すためには、CPU14は、シリアル入力バイト・レジスタ812へ“2”を回書き込む。シリアル走査入力ロジック804は次いで、状態信号STATUS[23:16]のバイト“2”を、シリアル・データ・レジスタ815へ直列的にシフトする。シフト入力バイト・レジスタ812のビジー・ビットBSは、CPU14がシフト入力バイト・レジスタ815に該所望のバイト番号をそきてきに書き込んだ場合には、“1”となる。
【0131】
CPU14は、スロット・イネーブル・レジスタ817の対応するビットに“1”を書き込むことによって、スロット36の1つをパワーアップすることができ、また、このビットに“0”を書き込むことによって、該スロットをデセーブル(不動作状態)することができる。さらに、CPU14は、スロット・リセット・レジスタ819の対応するビットに“1”を書き込むことによって、スロット36の1つをリセットすることができる。スロット・イネーブル・レジスタ817の内容、及びスロット・リセット・レジスタ819の内容は、信号SLOT
EN[5:0]及びSLOT RST[5:0]によって示される。
スロット・イネーブル・レジスタ817及びスロット・リセット・レジスタ819によって表された要求を開始するため、CPU14は、コントロール(制御)・レジスタのSOビットに“1”を書き込む。SOビットがアサートされた(すなわち、GO UPDATE信号をハイに駆動する)後、SIO回路50は、要求されたパワーダウン及びパワーアップのシーケンスを開始し制御する。
シーケンス走査入力ロジック804は、ON/OFFコントロール・ロジック820に接続されており、該ロジック820は、パワーアップ及びパワーダウン・シーケンスを制御する。ON/OFFコントロール・ロジック820は、信号BUSEN#[5:0]、CLKEN#[5:0]、RST#[5:0]、及びPWREN[5:0]を、シリアル出力ロジック824へ供給する。
パワーアップ及びパワーダウン・シーケンスはそれぞれ、その他方が実行されている期間中に4つのシフト・フェーズを含んでいる。各シフト・フェーズにおいては、ON/OFFコントロール・ロジック820が、シリアル出力ロジック824に指令して、信号BUSEN#[5:0]、CLKEN#[5:0]、RST#[5:0]、及びPWREN[5:0]を結合し、かつこれらの信号をラッチし、さらに、出力シフトレジスタ80のシリアル入力に(シリアル・データ信号CSOD Oを介して)供給する。各シフト・フェーズの終点において、ON/OFFコントロール・ロジック820がシフトレジスタ80に指令して、コントロール信号POUT[35:12]を更新させる。
【0132】
ON/OFFコントロール・ロジック820はまた、レジスタ・ロジック808および発光ダイオード(LED)コントロール・ロジック822に、インターフェースされる。LEDコントロール・ロジック822は、6つのLED54のオン/オフ状態を制御する。これらLED54は、対応するレバー802がラッチされているか否かを可視的に表示する。LED54は、レジスタ・ロジック808のLEDコントロール・レジスタ(不図示)を介してターンオンされたときに、発光するようにプログラムされる。
図31に示されているように、シリアル走査入力ロジック804は、走査状態マシン840を含み、該マシンは、変化に関する状態信号STATUS[31:0]の走査を制御し、シリアル入力バイト・レジスタ815に、状態信号STATUS[47:0]の選択されたバイト・のシフトを制御する。
走査状態マシン840は、クロック信号DIV2CLKの立ち下がりエッジでクロッキングされ、該クロック信号は、PCIクロック信号CLKに同期しており、該CLKの1/2の周波数を有している。ロード及びクロック信号CSIL O及びCSIC Oはそれぞれ、走査状態マシン840によって供給される。ビット/バイト・カウンタ841は、32ビットの信号BIT ACTIVE[31:0]により、状態信号STATUS[31:0]のどのビットが、現在、シリアル・データ信号NEW CSIDによって表されているのかを示す。信号BIT ACTIVE[31:0]のアサートされたビットは、データ信号NEW CSIDで表される状態信号STATUS[31:0]と同一のビット位置を有している。
カウンタ841はまた、3ビット信号BIT[2:0]を供給するが、該信号は、走査状態マシン840によって現時点で走査されている状態信号STATUS[31:0]のバイトのビットを表している。カウンタ841は、信号SHIFT ENABLEの立ち下がりエッジでクロッキングされる。カウンタ841の出力は、該カウンタのクリア入力に接続されているANDゲート842の出力がローに反転すると、リセット即ちクリアされる。
【0133】
走査状態マシン840は、信号SCAN IN IDLEを供給する。該信号のハイ状態は、走査状態マシン840がIDLE状態でありかつ状態信号STATUS[127:0]のいずれも現在走査していないことを示している。そうでなければ、信号SCAN IN IDLEがデアサートされる。
信号SCAN IN IDLEは、ANDゲート842の一方の入力に供給される。該ゲートの他方の入力には、ORゲート843の出力が供給される。ORゲート843の入力には、信号HOLD OFFの反転された信号、及び信号GETTING BYTEが供給される。
信号HOLD OFFがアサートされたとき、即ちハイの状態は、状態信号STATUS[5:0]の1つに変化が生じ、かつシリアル走査ロジック804がゆっくりとした走査モード(スロー・スキャン・モード)になったことを示している。該スロー・スキャン・モードにおいては、シリアル走査シリアル走査入力ロジック804は、状態信号STATUS[31:0]を再度走査する前に、所定のスロー・スキャン・インターバルの間だけ待機する。シリアル走査入力ロジック804は、信号STATUS[5:0]がスロー・スキャン・モード中に走査された回数をカウントし、得られたカウント値を用いて、デバウンス遅延期間(インターバル)の間に状態信号STATUS[5:0]の1つが変化しなかった時を検出する。詳細については、以降で説明する。
したがって、走査状態マシン840がIDLE状態にあって、信号HOLD OFFがデアサートされている場合か、または走査状態マシン840が状態信号STATUS[47:0]の所定のバイト(CPU14により選択された)を読み出している場合に、カウンタ841のすべての出力がゼロにクリアされる。
【0134】
信号SHIFT ENABLEは、ANDゲート844の出力から供給される。ANDゲート844の一方の入力はクロック信号CSIC Oを受け取り、多能の入力は信号DIV2CLK#WO受け取る。信号DIV2CLK#は、信号CLKDIV4の立ち下がりエッジ(負のエッジ)でアサート、即ちローに駆動される。ANDOゲート844の第3の入力には、信号SCAN IN PROGRESSが供給され、該信号のアサート状態ではハイに駆動されて、走査状態信号STATUS[127:0]を走査状態マシン840が現在走査していることを表す。それ以外の場合は、該信号SCAN IN PROGRESSはデアサートされている。
したがって、走査状態マシン840が状態信号STATUS[127:0]においてシフト動作を行っていない場合は、カウンタ841はデセーブルされる。さらに、カウンタ841がイエネーブルされると、クロック信号DIV2CLKの立ち下がりエッジで、該カウンタはクロッキングされる。
割り込みレジスタ800は、入力信号D INTR REG[31:0]をそれぞれ、対応する32に入力で受け取る。割り込みレジスタ800のロード・イネーブル入力はそれぞれ、対応するロード・イネーブル信号UPDATE IRQ[31:0]を受け取る。該レジスタ800は、PCIクロック信号CLKの立ち上がりエッジ(正のエッジ)でクロッキングされる。
各走査の後に状態信号STATUS[5:0]のトラックを保持するために、多重ビットのD型フリップフロップ836が状態信号SCAN SWを供給する。フリップフロップ836のクリア入力には、リセット信号RSTが供給され、該フリップフロップはクロック信号CLKの立ち上がりエッジでクロッキングされる。フリップフロップ836の入力は、多重ビットのORゲート850の出力に接続されており、該ORゲートの1つの入力は、多重ビットのANDゲート846に接続され、また他の1つの入力は多重ビットのANDゲート847の出力接続されている。ANDゲート846の一方の入力は、6ビットのイネーブル信号BIT ENABLE[5:0](これについては、後で説明する)を受け取り、他方の入力は、シリアル・データ信号NEW CSIDを受け取る。ANDゲート847の入力は、反転されたビット・イネーブル信号BIT ENABLE[5:0]、及び信号SCAN SW[5:0]をそれぞれ受け取る。
【0135】
ビット・イネーブル信号BIT ENABLE[5:0]の1つだけが、走査状態マシン840が走査しているときに一度アサートされ、該アサートされたビットは、対応する状態信号STATUS[31:0]の内のいずれが信号NEW CSIDによって表されているかを示している。このように、走査状態マシン840が走査している状態では、クロック信号CLKの立ち上がりエッジ毎に、信号SCAN SW[5:0]が更新される。
ビット・イネーブル信号BIT ENABLE[31:0]は、多重ビットマルチプレクサ832の出力から供給され、該マルチプレクサはその入力にビットBIT ACTIVE[31:0]を受け取る。マルチプレクサ832の“0”入力には、論理0を表す32ビット信号が供給される。
状態信号STATUS[5:0]の変化を検出するために、多重ビットの排他的論理和(XOR)ゲート848がスイッチ切り替え信号SW CHG[5:0]を供給する。該信号SW CHG[5:0]がアサート(ハイ)されると、これは、対応する状態信号STATUS[5:0]の論理電圧が走査中に変化したことを示している。XORゲート848の一方の入力はフリップフロップ836の入力に接続され、他方の入力は信号SCAN SWを受け取る。
【0136】
図34に示されているように、少なくともデバウンス遅延期間の間、選択された状態信号STATUS[5:0]の論理電圧レベルが変化しなかったことを表すために、走査入力ロジック804は6つの信号LSWITCH[5:0]を出力する。D型フリップフロップ900の非反転入力により、非反転出力から信号LSWITCH[5]が出力される。該信号LSWITCH[5]がアサート、即ちハイに駆動された場合は、上記した状態を表しており、その他の場合はデアサートされている。フリップフロップ900は、クロック信号CLKの立ち上がりEDGEでクロッキングされ、クリア入力はRST信号を受け取る。
フリップフロップ900の入力はマルチプレクサ902の出力に接続されており、該マルチプレクサは、信号D LSWITCH[5]を出力する。マルチプレクサ902の選択制御入力は、ANDゲート903の出力に接続されており、該ゲートは、信号MAX5及びSCAN ENDを受け取る。信号SCAN ENDは、アサート状態では走査状態マシン840が現在の走査を完了したことを示している。6つの信号MAX5、MAX4、MAX3、MAX2、MAX1、MAX0は、対応する状態信号STATUS[5]、STATUS[4]、STATUS[3]、STATUS[2]、STATUS[1]、STATUS[0]が、少なくともデバウンス期間中に同一の論理レベルを保持して変化がなかったかどうかを表している。マルチプレクサ902の“0”入力が信号LSWITCH[5]を受け取り、“1”入力が信号SCAN SWを受け取る。信号SCAN ENDはANDゲート851(図32)の出力から供給される。ANDゲート851は信号STOP SCAN及びSCAN DONEを受け取る。信号STOP SCANは、走査状態マシン840による走査を終了させるときに、アサート(ハイ)される。これについては、後でさらに説明する。信号SCAN ENDは、信号STOP SCANのパルス化(信号CLKの1サイクル)されたものである。信号LSWITCH[4]〜LSWITCH[0]及び信号D LSWITCH[4]〜D LSWITCH[0]は、信号SCAN SW[4]〜SCAN SW[0]及び信号MAX4〜MAX0と同様にして生成される。
【0137】
状態信号STATUS[31:6]が走査されたときにこれらの信号の論理電圧レベルを更新するために、多重ビットのD型フリップフロップ905(図34)が26の信号SCAN NSW[31:6]を出力する。この場合には、信号SCAN NSW[31:6]の1つがアサート(ハイ)され、更新しない場合にはデアサートされる。フリップフロップ905は、クロック信号CLKの立ち上がりエッジでクロッキングされ、クリア入力には信号RSTが供給される。
フリップフロップ905の入力は、多重ビットのマルチプレクサ906に接続されている。該マルチプレクサの選択制御入力は、反転されたCHECK SWITCH ONLY信号を受け取る。該信号CHECK SWITCH ONLYは、走査状態マシン840が状態信号STATUS[5:0]またはSTATUS[127:32]を走査しているときだけ(即ち、信号STATUS[31:6]の変化を無視する)、アサートされ、それ以外の場合はデアサートされる。マルチプレクサ906の“0”入力は信号SCAN NSW[31:6]を受け取り、“1〃入力は多重ビットのORゲート907に出力に接続されている。ORゲート907の一方の入力は多重ビットのANDゲート908の出力に接続され、他方の入力は多重ビットのANDゲート872の出力に接続されている。ANDゲート908の一方の入力は信号BIT ENABLE[31:6]を受け取り、他方の入力は多重ビットのマルチプレクサ909の出力に接続されている。信号NEW CSIDがアサート(ハイ)されると、マルチプレクサ909は、“h3FFFFFF”に等しい26ビットの信号を出力し、他の場合には“0”である32ビットの信号を出力する。ANDゲート872の一方の入力はANDゲート908の出力を反転した信号を受け取り、他方の入力は信号SCAN NSW[31:6]を受け取る。
状態信号STATUS[31:6]の論理電圧レベルを走査毎に記憶するために、多重ビットのD型フリップフロップ871が26の信号LNON SW[31:6]を供給する。該信号LNON SW[31:6]のいずれかがアサート(ハイ)された場合は、走査毎に記憶することを表し、デアサートされると、記憶されない。フリップフロップ871はクロック信号CLKの立ち上がりエッジでクロッキングされ、クリア入力は信号RSTを受け取る。
フリップフロップ871の入力は多重ビットのマルチプレクサ870の出力に接続されており、該マルチプレクサは信号D LNON SW[31:6]を出力する。マルチプレクサ870の選択制御入力は、信号SCAN ENDを受け取る。マルチプレクサ870の“0”入力は信号LNON SW[31:6]を受け取り、“1”入力は信号SCAN NSW[31:6]を受け取る。
【0138】
図32に示されているように、信号MAX0〜MAX5を発生するために、シリアル入力ロジック804は6つの同一構成のカウンタ831a〜831fを備えている。各カウンタ831は、ANDゲート892がアサート(ハイ)されたときに、初期化される。カウンタ8312aについて言えば、ANDゲート892が信号BIT ENABLE[0]、SW CHG[0]、及び反転されたQUICK FILTERを受け取る。信号QUICK FILTERは、アサート(ハイ)されると、デバウンス時間の完遂を阻止するために用いられる。信号QUICK FILTERは通常デアサートされており、ローである。カウンタ831のクロック入力は、ANDゲート893の出力に接続されている。カウンタ831aに関しては、ANDゲート893が信号BIT ENABLE[0]、及び反転されたSW CHG[0]を受け取る。したがって、カウンタ831aに関しては、状態信号STATUS[0]の論理電圧レベルが一旦変化すると、シリアル走査ロジック804がが状態信号STATUS[0]を走査するたびに、該カウンタ831aが増分される。カウンタ831aが最大値に到達すると、信号MAX0がアサートされ、これにより、デバウンス期間が経過したことを示す。状態信号STATUS[0]の論理電圧レベルがカウント中に変化した場合は、カウント831aは再度リセットされて、最初からカウントをやり直す。他のカウンタ831b〜fについても同様であり、これらは、状態信号STATUS[5:1]に関連する。
HOLD OFF信号がアサートされると、それにより、タイマ806の1つに指令して所定の遅い走査期間(スロー・スキャン・インターバル)を測定する。該スロー・スキャン・インターバルでは、シリアル走査状態マシン840がスロー・スキャン・モードで走査を行う。タイマ806がこの遅延インターバルの経時を終了すると、タイマ806は、信号FTR TIMEOUTをアサート(ハイ)し、終了しないばあいには該信号はデアサートされている。このスロー・スキャン・インターバルとカウンタ831の最大値との積は、デバウンス期間(8ms)に等しい。
【0139】
HOLD OFF信号はJKフリップフロップ885によって生成される。該フリップフロップ885は、信号CLKの立ち上がりエッジでクロッキングされ、クリア入力にはRST信号が供給される。該フリップフロップのJ入力はANDゲート883の出力に接続され、K入力はANDゲート884の出力に接続されている。ANDゲート883の一方の入力はJK−フリップフロップ896の出力に接続され、多能の入力はSCAN END信号を受け取る。ANDゲート884の一方の入力はANDゲート883の出力の反転信号を受け取り、第2の入力はFTR TIMEROUT信号を受け取り、第3の入力はSCAN IN IDLE信号を受け取る該SCAN IN IDLE信号は、走査状態マシン840がIDLE状態にあるときに、アアサートされる。
フリップフロップ895は、クロック信号CLKの立ち上がりでクロッキングされ、クリア入力はRST信号を受け取る。フリップフロップ895のJ入力はNANDゲート894の出力に接続され、該NANDゲートは信号MAX〜MAX5を受け取る。フリップフロップ895のJ入力はANDゲート826の出力に接続され、該ANDゲートは、フリップフロップ895の反転J入力に接続され、かつ反転されたSCAN IN PROGRESS信号を受け取る。SCAN IN PROGRESS信号は、走査状態マシン840が状態信号STATUS[31:0]を走査中のときにアサートされる。
CHECK SWITCH ONLY信号を発生するために、シリアル走査入力ロジック804にJKフリップフロップ864が含まれている。該フリップフロップは該CHECK SWITCH ONLY信号を非反転出力から供給し、クロック信号CLKの立ち上がりエッジでクロッキングされる。フリップフロップ864のクリア入力は、RST信号を受け取り、J入力はDEBOUNCE信号を受け取る。該DEBOUNCE信号は、アサート(ハイ)されたときに、1つ又は複数の状態信号STATUS[31:6]の論理電圧レベルが変化したことを表す。フリップフロップ864のK入力は、ANDデ865の出力に接続されている。ANDゲート865の一方の入力は反転されたDEBOUNCE信号を受け取り、他の入力はSCAN IN IDLE信号を受け取る。
【0140】
図33に示されているように、デバウンス信号DEBOUNCEは、JKフリップフロップ860の非反転出力から出力される。フリップフロップ860は、クロック信号CLKの立ち上がりエッジでクロッキングされ、クロッキング入力はリセット信号RSTを受け取る。フリップフロップ860のJ入力は、信号CHANGE ON INPUTを受け取る。該CHANGE ON INPUT信号は、状態信号STATUS[31:6]のいつに変化が生じたことをシリアル入力ロジック804の走査の終わりで検出したときに、アサート(ハイ)される。フリップフロップ860のK入力は、ANDゲート861の出力接続され、該ANDゲートは、その入力の1つとして、DB TIMEOUT信号を受け取る。ANDゲート861の他の入力は、反転されたCHANGE ON INPUT信号を受け取る。DB TIMEOUT信号は、デバウンス遅延時間(DEBOUNCE信号のアサートによって初期化される)が経過したときに、CLK信号の1サイクル中に、タイマ106によってアサートされる。DB TIMEOUT信号のアサートは、CLK信号の次の立ち上がりエッジで、DEBOUNCE信号をデアサート(反転)させる。
CHANGE ON INPUT信号は、JK−フリップフロップ866の非反転出力から供給される。該フリップフロップは、CLK信号の立ち上がりエッジでクロッキングされる。フリップフロップ866のクリア入力はRST信号を受け取る。フリップフロップ866のJ入力はANDゲート869の出力に接続され、該ANDゲートの一方の入力は、SCAN END信号を受け取り、他の入力はORゲート867の出力に接続されている。ORゲート867は、NSWCHG[31:6]信号のすべてのOR論理をとる。NSW CHG[31:6]信号のビット位置は、状態信号STATUS[31:6]のビット位置に対応しており、かつアサートされた場合には、該対応する状態信号STATUS[31:6]が最後の走査の後に変化したかどうかを表している。ANDゲート869はさらに、SCAN END信号を受け取る。フリップフロップ866のK入力は、ANDゲート868の出力に接続され、該ANDゲートは、反転されたSCAN IN PROGRESS信号及びANDゲート869の出力の反転された信号を受け取る。信号NSW CHG[31:6]は、多重ビットであるXORゲート862の出力によって供給され、該XORゲートは、信号D LNON SW[31:6]及びLNON SW[31:6]を受け取る。
【0141】
多重ビットのD型フリップフロップ912の非反転出力は、シリアル・データ・レジスタ815にたいして、ビットSI DATA[7:0]を供給する。フリップフロップ912のクリア入力は信号RSTを受け取り、またクロック信号CLKによってクロッキングされる。フリップフロップ912の信号入力は、多重ビットのマルチプレクサ916に接続されている。マルチプレクサ916の選択制御入力は、ANDゲート914の出力に接続され、“0”入力はビットSI DATA[7:0]を受け取る。ANDゲート914は、信号GETTING BYTE及びSHIFT ENABLEを受け取る。したがって、シリアル走査ロジック804が状態信号STATUS[47:0]の要求されたバイトにシフトしていない場合は、ビットSI DATA[7:0]の値が保存される。
マルチプレクサ916の入力の1つは、多重ビットのマルチプレクサ910の出力に接続されている。該マルチプレクサ910の入力の1つは多重ビットのORゲート911の出力に接続され、“0”入力は多重ビットのANDゲート915の出力に接続されている。マルチプレクサ910の選択制御入力は、信号NEW CSIDを受け取る。
ANDゲート915の1つの入力は、ビットSI DATA[7:0]を受け取り、該ゲート915の反転入力は、3×8デコーダ913の出力に接続されている。該デコーダ913は、信号BIT[2:0]を受け取る。ORゲート911の一方の入力はビットSI DATA[7:0]を受け取り、他歩の入力はデコーダ913の出力を受け取る。
【0142】
シリアル入力ロジック804は、5つの信号RST SWITCH[5:0](状態信号STATUS[5:0]のビット位置に対応している)を、ON/OFFコントロール・ロジック820に供給し、該信号がアサートされたときに、対応するスロット36a〜fがパワーダウンすべきであることを示す。ON/OFFコントロール・ロジック820は、スロット36が5つの信号CLR SWITCH[5:0]の1つのアサートによってパワーダウンされたときを、指示する。なお、CLR SWITCH[5:0]信号のビット位置は、RST SWITCH[5:0]信号に対応している。スロット36がすでにパワーダウンしたことを示す指示を受け取った後、シリアル・ロジック804は、対応するRST SWITCH[5:0]信号をデアサートする。
RST SWITCH[5:0]信号は、多重ビットのD型フリップフロップ891(図32)の非反転出力によって発生される。フリップフロップ891のクリア入力はリセット信号RSTを受け取り、またクロック信号CLKの立ち上がりエッジでクロッキングされる。フリップフロップ891の入力は、多重ビットのORゲート857の出力に接続され、該ORゲートの入力は、多重ビットのANDゲート859、855の出力に接続されている。ANDゲート859の一方の入力はマルチプレクサ853の出力に接続され、他方の入力はラッチされたスロット・イネーブル信号LSLOT EN[5:0]を受け取る。該信号LSLOT EN[5:0]は、アサートされると、対応するスロット36a〜fがパワーアップされたことを示す。ANDゲート855の一つの入力は、信号CLR SWITCH [5:0]を受け取り、第2の入力は信号RST SWITCH[5:0]を受け取り、第3の入力はマルチプレクサ853の反転された出力を受け取る。
【0143】
マルチプレクサ853の“0”入力は、0を表す6ビット信号を受け取る。該マルチプレクサの“1”入力は、多重ビットのANDゲート849の出力に接続されている。ANDゲート849の一方の入力は信号D LSWITCH[5:0]を受け取り、他方の入力は反転された信号L SWITCH[5:0]を受け取る。マルチプレクサ853の選択制御入力は、SCAN END信号を受け取る。
SI INTER#信号を発生するために、シリアル走査ロジック804には、D型フリップフロップ882が備えられている。該フリップフロップはその反転出力にシリアル割り込み信号SI INTER#を出力する。フリップフロップ882は、CLK信号の立ち上がりエッジでクロッキングされ、マタクリア入力はRST信号を受け取る。フリップフロップ882の入力は、ORゲート881の出力に接続され、該ORゲートは32のペンディング割り込み信号PENDING IRQ[31:0]をを受け取る。これらの信号PENDING IRQ[31:0]は、アサート(ハイ)されると、状態信号STATUS[31:0]の対応するものがペンディングであることを示す。それ以外の場合は、PENDING IRQ[31:0]はデアサートされている。
【0144】
図35に示されるように、多重のD型フリップフロップ979が、その反転出力に、PENDING IRQ[31:0]信号を出力する。フリップフロップ979は、信号CLKの立ち上がりエッジでクロッキングされ、そして、クリア入力に信号RSTが供給される。フリップフロップ979の入力は多重ビットのANDゲート981の出力に接続され、該ANDゲートはその入力に、反転された割り込みマスク信号INTR MASK[31:0]を受け取る。信号INTR MASK[31:0]は、割り込みマスク・レジスタ810の対応するビットを表している。ANDゲート981の他の入力は、多重ビットのORゲート835の出力に接続されている。ORゲート835の一方の入力は、多重ビットのANDゲート862の出力に接続され、他方の入力は多重ビットのANDゲート834の出力に接続されている。
ANDゲート862は、反転されたPENDING IRQ[31:0]信号、及びSET PIRQ[31:0]信号を受け取る。信号SET PIRQ[31:0]は、割り込み要求が状態信号STATUS[31:0]の対応するものに生成されるべきであるときに、アサートされる。したがって、信号PENDING IRQ[31:0]は、信号INTR MASK[31:0]によってマスクされない場合に、信号SET PIRQ[31:0]で更新される。
ANDゲート834は信号PENDING IRQ[31:0]、反転された信号SET PIRQ[31:0]、及び反転された信号WR INTR REG[31:0]を受け取る。WR INTR REG[31:0]信号は、CPU14によって割り込みレジスタ800に書き込みデータが供給されたことを示す。CPUは該レジスタ800の対応するビットに“1”を書き込むことによって、割り込みをクリアする。従って、このように“1”が書き込まれ、かつ状態信号STATUS[31:0]の対応するものに新しい割り込み要求が示されない場合には、PENDING IRQ[31:0]信号の対応するものがクリアされる。
【0145】
信号SET PIRQ[31:0]は、多重ビットのANDゲート839の出力から供給される。該ANDゲートの一方の入力は信号UPDATE IRQ[31:0]を受け取り他方の入力は多重ビットのXORゲート837の出力を受け取る。XORゲート837の一方の入力は信号D INTR REG[31:0]を受け取り、他方の入力は信号INTR REG[31:0]を受け取る。したがって、割り込みレジスタ800のびっとが一方の論理状態から他方の論理状態に変化するときに、割り込み要求が生成される。
割り込みレジスタ800のビットを更新するために、信号UPDATE IRQ[31:0]が発生されて該レジスタ800の対応するロード入力に供給される。信号UPDATE IRQ[31:0]がアサート(ハイ)されると、対応するビットに信号D INTR REG[31:0]の対応するものがロードされる。
信号UPDATE IRQ[31:0]は、多重ビットのORゲート971の出力から発生される。該ORゲート971の一つの入力は多重ビットのマルチプレクサ977の出力に接続され、他の入力は反転されたPENDING IRQ[31:0]信号を受け取る。マルチプレクサ977の選択制御入力は、信号SCAN ENDを受け取り、“1”入力は“hFFFFFFFF”を表す32ビットの信号を受け取り、“0”入力は、“0”を表す32ビットの信号を受け取る。したがって、走査の終点では、信号UPDATE IRQ[31:0]により、割り込みレジスタ800のビットがアサートされたPENDING IRQ[31:0]信号に対応するように、該ビットを更新することができる。
ORゲート971の別の入力は、多重ビットのANDゲート975の出力接続されている。該ANDゲートの1つの入力は反転されたINTR MASKU[31:0]信号を受け取り、他の入力は信号PENDING IRQ[31:0]を受け取り、さらに別の入力は信号WR INTR REG[31:0]を受け取る。したがって、CPU14は、信号PENDING IRQ[31:0]のビットを選択的にクリアすることができる。
信号D INTR REG[5:0]は、多重ビットのマルチプレクサ830の出力から発生される。SCAN END信号がアサートされると、信号D INTR REG[5:0]は、信号D LSWITCH[5:0]と等しくなる。SCAN END信号がデアサートされると、信号D INTR REG[5:0]は信号LSWITCHと等しくなる。
信号D INTR REG[31:6]は、多重ビットのマルチプレクサ845によって出力される。SCAN END信号がアサートされると、信号D INTR REG[31:6]は信号D LNON SW[31:6]と等しくなり、デアサートされると、信号D INTR REG[31:6]は信号LNON SW[31:6]と等しくなる。信号SCAN ENDがアサートされたときにのみ、割り込みレジスタ800は新しい値をとることができる。
【0146】
図36及び図37に示されているように、走査状態マシン840は、リセット信号がアサートされた後に、IDLE状態に入る。IDLE状態でない場合は、走査状態マシン840は、シフトレジスタ82をクロッキングするために、シリアルクロック信号CSIC Oの状態をトグルする。さらに、第1ロード状態LD1でない場合は、走査状態マシン840はロード信号CSIL O をアサート(ハイ)し、レジスタ82、52が状態信号STATUS[127:0]をSIO回路50にシリアル供給できるようにする。IDLE状態では、走査状態マシン840は信号SCAN DONEをゼロに設定する。
走査状態マシン840は、信号GETTING BYTEがアサートされたとき、またはHOLD OFF信号がデアサートされたときに、IDLE状態からLD1状態に移行する。それ以外の場合は、マシン840はIDLE状態に止まる。LD1状態では、走査状態マシン840は、ロード信号CSIL O をアサート(ロー)し、該ロード信号により、レジスタ82、52が状態信号STATUS[127:0]を受け取ってラッチできるようにする。
走査状態マシン840は、LD1状態から第2ロード状態LD2へ移行する。このLD2状態では、ロード信号CSIL O はアサートされたままであり、それにより、レジスタ82、52が状態信号STATUS[127:0]をシリアルにシフトできる。
走査状態マシン840は続いて、走査状態SCANに移行する。このSCAN状態では、シリアル走査入力ロジック804が、クロック信号DIV2CLKの立ち下がりエッジで、状態信号STATUS[127:0]の1つを走査する。信号STOP SCANがアサートされると、走査状態マシン840は、IDLE状態に戻る。STOP SCAN信号は、以下の2つのいずれかの場合にアサートされる。[a]状態信号STATUS[127:0]の所望のバイトがシリアル・データ・レジスタ815へシフト済みであり、即ち、レバー状態信号STATUS[5:0]が走査済みであり、かつシリアル割り込み信号SI INTR#GAアサートされている場合。[b]状態信号STATUS[31:0]のすべてが走査済みである場合。SCAN状態においては、SCAN DONE信号がSTOP SCAN信号と等しく設定される。
【0147】
図38に示されるように、ON/OFFコントロール・ロジック820は、ON/OFF状態マシン998を備えており、該マシンは、信号RST SWITCH[5:0]、SLOT EN[5:0]、及びSLOT RST[5:0]を受け取る。これらの信号の状態に応じて、ON/OFF状態マシン998は、所定のパワーオン及びパワーダウン・シーケンスを開始し制御する。ON/OFF状態マシン998は、コントロール・ロジック999にコントロール信号を供給する。
ON/OFF状態マシン998は、シリアル出力更新信号SO UPDATEを、シリアル出力ロジック824に供給する。該信号SO UPDATEがアサート(ハイ)されると、シリアル出力ロジック824は、フェース(位相)のシフト動作を開始し、かつ信号CSOD Oを介してレジスタ80に対して、コントロール・データをシリアルにシフトする。シフト出力ロジック824は、ON/OFF状態マシン998で受け取られる信号SO UPDATE DONEをアサートすることによって、フェースのシフト動作が完了したことを通知する。ON/OFF状態マシン998は次いで、コントロール信号POUT[39:0]を、ラッチ信号CSOLC Oをクロッキングすることによって、更新する。該信号CSOLC Oは、レジスタ80で受信される。
コントロール・ロジック999は、信号PWREN[5:0]、CLKEN#、BUSEN#[5:0]、及びRST#[5:0]をシリアル出力ロジック824に供給し、そして、PCIバス許可信号CAYREQ#をアビータ124に出力しかつ該アビータからPCIバス許可信号CAYGENT#WO受け取る。OYOBIコントロール・ロジック820は、信号CAYREQ#をアサート(ロー)してPCIバス32へ要求し、そしてアビータ124が信号CAYGNT#をアサート(ロー)したときに、アビータ124は、ON/OFFコントロール・ロー820へのPCIバス32の制御を許可する。
【0148】
図39〜45に示されているように、ON/OFF状態マシン998はリセット信号RSTがアサートされると、待機(アイドリング)状態IDLEに入る。IDLE状態でない場合は、ON/OFF状態マシン998は、以下の3つのシーケンスを制御する。すなわち、パワーダウン・シーケンス、パワーアップ・シーケンス、及び、スロット・イネーブル・レジスタ817及びLEDコントロール・レジスタ(不図示)によって指示されたときに、コントロール信号POUT[39:0]を更新するために用いられるワン・パス・シーケンスである。ON/OFF状態マシン998は、ロロード信号CSOLC Oをアサート(ハイ]するが、これは、該マシン998がコントロール信号POUT[39:0]が更新されるべきであると判定するまで、レジスタ80のクロック信号CLKの1サイクルの間、アサートされる。コントロール信号POUT[39:0]が更新されるとき、ON/OFF状態マシン998は信号CSOLC Oを反転させ、それにより、コントロール信号POUT[39:0]が更新される。
ON/OFF状態マシン998は、ソフトウエアが少なくとも1つのスロット36のパワーダウンを要求したとき(これは、信号SLOT EN[5:0]のデアサートにより示される)、またはシリアル走査入力ロジック804がスロット36a〜fの少なくとも1つをパワーダウンすべきであると判断したとき(これは、信号RST SWITCH[5:0]によって示される)に、パワーダウン・シーケンスを開始する。パワーダウン・シーケンスを開始するために、ON/OFF状態マシン998は信号SO UPDATEををアサートして、フェーズのシフトを開始し、かつRSTON状態へIDLE状態から移行する。
RSTON状態の間、コントロール・ロジック999は、パワーダウンすべきスロット36に関するリセット信号RST#[5:0]をネゲート(反転)させ、かつシリアル出力ロジック824が、リセット信号RST#[5:0]を出力レジスタ80にシリアルにシフトする。ON/OFF状態マシン998はまた、信号SO UPDATEをネゲートさせる。シリアル出力ロジック824によって40のコントロール信号のすべてがレジスタ80にシフトされる(SO UPDATE DONE信号のアサートによって示される)、ON/OFF状態マシン998は、RSTON状態からOFF ARB1状態へ遷移する。
OFF ARB1状態では、ON/OFF状態マシン998は、要求信号CAYREQ#をアサートすることによって、PCIバスの制御を要求する。ON/OFF状態マシン998は、その後、OFF WGNT1状態に移行し、該状態において、2次PCIバス32の制御の許可を待機する。信号CAYGNT#のアサートによって示されるように、アビータ124がバス32の制御を許可すると、ON/OFF状態マシン998は、コントロール信号POUT[39:0]を更新するために信号CLKの1サイクルの間、信号CSOLC Oをネゲートし、そして、OFF LCLK1状態に移行する。
【0149】
OFF LCLK1状態においては、ON/OFF状態マシン998は信号SO UPDATEをアサートして、他のシフト・フェーズを開始する。ON/OFF状態マシン998は、OFF LCLK1から、バス・オフ状態BUSOFFに遷移する。このBUSOFF状態では、コントロール・ロジック999は、パワーダウンすべきスロット36に対するバス・イネーブル信号BUSEN#[5:0]をデアサート(ハイに駆動)し、そしてシリアル出力ロジック824が該信号BUSEN#[5:0]を出力レジスタ80に対して、シリアルに供給する。ON/OFF状態マシン998は、また、信号SO UPDATEをネゲートする。40のコントロール信号のすべてが出力ロジック80によってシフトされると(信号SO UPDATE DONEのアサートにより示される)、ON/OFF状態マシン998はBUSOFF状態からOFF ARB2状態に遷移し、該OFF ARB2において、マシン998は、2次PCIバスの制御を再度要求する。マシン998はそして状態OFF WGNT2に移行し、該状態ではPCIバス32の許可を待機する。許可を受け取ったならば、マシン998はOFF LCLK2状態に移行し、該状態では、信号CLKの1サイクの間、信号CSOLC Oをネゲートすることによって、コントロール信号POUT[5:0]が更新される。その後、マシン998はクロック・オフ状態CLKOFFに移行する。
【0150】
CLKOFF状態では、コントロール・ロジック999が、パワーダウンすべきスロット36に対するクロック・イネーブル信号CLKEN#[5:0]をデアサート(ハイ)する。バス・イネーブル信号BUSEN#[5:0]は変化せず、またシリアル出力ロジック824がクロック・イネーブル信号CLKEN#をシリアルにシフトして、出力レジスタ80に供給する。ON/OFF状態マシン998はまた、信号SO UPDATEをネゲートする。40のコントロール信号のすべてが出力ロジック824によってシフトされると(信号SO UPDATE DONEによって示される)、マシン998はCLKOFF状態からOFF ARB3状態に移行し、該状態において、マシン998は再度PCIバス32の制御を要求する。そしてマシン998は、OFF WGNT3状態に移行し、PCIバス32の制御の許可を待つ。許可を受信した場合は、状態マシン998は、OFF LCK3状態に遷移し、該状態において、コントロール信号POUT[39:0]が更新される。これは、信号CLKの1サイクルの間、信号CSOLC Oをネゲートすることによって更新される。状態マシン998は次いで、パワー・オフ状態PWROFFに移る。
PWROFF状態では、コントロール・ロジック999が、パワーダウンすべきスロット36に対するパワー・イネーブル信号PWREN[5:0]をデアサート(ロー)する。信号RST#[5:0]、BUSEN#[5:0]、CLKEN#は変化しない。そして、シリアル出力ロー824は、パワー・イネーブル信号PWREN[5:0]を出力レジスタ80にシフトする。ON/OFF状態マシン998また、信号SO UPDATEを更新する。40のコントロール信号がすべて出力ロー824によってシフトされると(SO UPDATE DONEのアサートにより示される)、ON/OFF状態マシン998はPWROFF状態からOFF LCLK4状態に遷移し、この状態において、信号CLKの1サイクの間信号CSOLC Oをネゲートすることによって、信号POUT[39:0]を更新する。状態マシン998は次いで、IDLE状態に移行してパワーダウン・シーケンスが終了する。
【0151】
パワーダウン・シーケンスが要求されなければ、ON/OFF状態マシン998はパワーアップ・シーケンスが要求されるか否かを決定する。ソフトウエアがスロット36の少なくとも1つをパワーアップすることを要求するか又は拡張ボックス30のパワーアップが保留であるかの何れかであれば、ON/OFF状態マシン998はIDLE状態からパワーオン状態PWRONに遷移してパワーオン・シーケンスを開始する。パワーオン・シーケンスを開始するために、ON/OFF状態マシン998は相シフトを開始するために信号SO UPDATEをアサートし、IDLE状態からパワーオン状態PWRONへ遷移する。
PWRON状態の間、制御ロジック999はパワーアップされるべきスロット36に対するパワー・イネーブル信号PWREN[5:0]をアサートし、シリアル出力ロジック824はパワー・イネーブル信号PWREN[5:0]を出力レジスタ80に対してシリアルにシフトする。ON/OFF状態マシン998はまた信号SO UPDATEを否定にする。信号SO UPDATE DONEのアサートによって示されるように、40の制御信号のすべてがシリアル出力ロジック824によってシフトされると、ON/OFF状態マシン998はPWRON状態からタイマ806初期設定状態LDCNT1へ遷移し、制御信号POUT[39:0]を更新するためにロード信号CSOLC Oを否定にする。
LDCNT1状態においてON/OFF状態マシン998はタイマ806を初期設定し、それによってタイマ806が所定の安定化遅延期間(stabilization delay interval)が満了(終了)したときの表示を提供するようにする。この安定化遅延期間は、電圧レベルVSSがカード807に供給されたときにパワーアップされているカード807が安定するために十分な時間を与える。LDCNT1状態において、ON/OFF状態マシン998また信号CSOLC Oをアサートする。ON/OFF状態マシン820はLDCNT1状態からCLKON状態に遷移する。
CLKON状態の間、制御ロジック999は、パワーアップされるべきスロット36に対するクロック・イネーブル信号CLKEN#[5:0]をアサートする又はローに駆動する。PWREN[5:0]信号は変化せず、シリアル出力ロジック824はクロック・イネーブル信号CLKEN#[5:0]を出力レジスタ80に対してシリアルにシフトする。ON/OFF状態マシン998はまた信号SO UPDATEを否定にする。安定化遅延期間が満了すると、ON/OFF状態マシン998はCLKOFF状態からON ARB1状態へ遷移する。
【0152】
ON ARB1状態において、ON/OFF状態マシン998は要求信号CAYREQ#をアサートすることによって2次PCIバス32の制御を要求する。ON/OFF状態マシン998次にON WGNT1状態に遷移し、そこで2次PCIバス32の許可(グラント)を待つ。CAYGNT#信号のアサートによって示されるように、バス32の制御が許可されると、ON/OFF状態マシン998は制御信号POUT[39:0]を更新するために信号CSOLC Oを否定にし(negate)、ON LCLK1状態に遷移し、そこで信号POUT[39:0]が更新される。
ON/OFF状態マシン998はON LCLK1状態からLDCNT2状態へ遷移し、そこで、タイマ806が初期設定され、タイマ806が別の所定の安定化遅延間隔(stabilization delay interval)が満了(終了)したときの表示を提供するようにする。この遅延間隔は、カード807のクロック信号がパワーアップ・シーケンスが続けられる前に安定するようにパワーアップされることを可能にするために用いられる。ON/OFF状態マシン998はLDCNT2状態からバス・オン(bus on)状態BUSONに遷移する。
BUSON状態の間、制御ロジック999は、パワーダウンされるべきスロット36に対するバス・イネーブル信号BUSEN#[5:0]をアサートする又はローに駆動する。信号CLKEN#[5:0]及びPWREN#[5:0]は変化せず、シリアル出力ロジック824はバス・イネーブル信号BUSEN#[5:0]を出力レジスタ80に対してシリアルにシフトする。ON/OFF状態マシン998はまた信号SO UPDATEを否定にする。安定化遅延間隔かせ満了すると、ON/OFF状態マシン998BUSEN状態からON ARB2状態に遷移し、そこで状態マシン998は再びPCIバス32の制御を要求する。次に状態マシン998はON WGNT2状態に遷移し、そこでバス32の許可を待つ。許可を受け取ると、状態マシン998はON LCLK2状態に遷移し、そこで信号POUT[39:0]が、信号CLKの1つのサイクルに対する信号CSOLC Oを否定にすることによって更新される。次に状態マシン998はリセット・オフ状態RSTOFFへ遷移する。
【0153】
RSTOFF状態の間、制御ロジック999は、個々のSLOT RST [5:0]に依存してパワーアップされるべきスロット36に対するリセット信号RST#[5:0]をアサートする又は否定にする。信号CLKEN#[5:0]、PWREN#[5:0]及びBUSEN#[5:0]は変化せず、シリアル出力ロジック824はリセット信号RST#[5:0]を出力レジスタ80に対してシリアルにシフトする。ON/OFF状態マシン998はまた信号SO UPDATEを否定にする。信号SO UPDATE DONEのアサートによって示されるように、40の制御信号のすべてがシリアル出力ロジック824によってシフトされると、ON/OFF状態マシン998はRSTON状態からON ARB3状態へ遷移し、そこで状態マシン998は再びバス32の制御を要求する。状態マシン998は次にON WGNT3に遷移し、そこでバス32に対する許可を待つ。許可を受け取ると、状態マシン998はON LCLK3状態に遷移し、そこで信号POUT[39:0]が、信号CLKの1サイクルに対する信号CSOLC Oを否定にすることによって更新される。次に状態マシン998はIDLE状態に遷移して戻る。
【0154】
パワーアップ・シーケンスもパワーダウン・シーケンスも要求されないならば、ON/OFF状態マシン999は次に信号POUT[39:0]のうちの選択されたものを更新するために1パス(ワン・パス、one pass)・シーケンスが必要か否かを判定する。もしGO UPDATE信号がアサートされ、もしスロット・イネーブル・レジスタ817又はスロット・リセット・レジスタ819の何れかのビットが変化するならば、ON/OFF状態マシン998はONEPASS状態へ遷移し、SO UPDATE信号をアサートする。
ON/OFF状態マシン998は、40の制御信号がレジスタ80へシフトされるまでONEPASS状態にとどまる。次に、ON/OFF状態マシン998はOP ARB状態へ遷移し、そこで状態マシン998は信号CAYREQ#をアサートすることによってPCIバス32の制御を要求する。次に状態マシン998はOP WGNT状態に遷移し、そこでバス32に対する許可を待つ。許可を受け取ると、状態マシン998はOP LCLK状態へ遷移し、そこで信号POUT[39:0]は信号CLKの1つのサイクルに対する信号CSOLC Oを否定にすることによって更新される。次に状態マシン998はIDLE状態に遷移して戻る。
【0155】
図46に示すように、シリアル出力ロジック824は、信号CSOD Oを経由でシリアル出力ロジック824からシフトされた制御信号を追跡する6ビット・カウンタ出力信号BIT CNTR[5:0]を提供するシフト出力ビット・カウンタ921を含む。信号BIT CNTR[5:0]が「39」と等しい6数字の数と等しいとき、信号MAX CNTがアサートされる。信号MAX CNTはANDゲート922の入力に与えられる。ANDゲート922は更に信号SHIFT4を受信し、この信号は、以下に説明する出力シフト状態マシン920がSHIFT4状態に入ったときにアサートされる。ANDゲート922の出力は信号SO UPDATE DONEを提供する。
出力シフト状態マシン920は増分カウンタ信号INC CNTRをビット・カウンタ921に供給する。INC CNTRがアサートされると、ビット・カウンタ921は信号BIT CNTR[5:0]によって表される値を増分する。ロード・カウンタ信号LOAD CNTRがアサートされるか又はRST信号がアサートされると、ビット・カウンタ921のクリア入力に接続されたORゲート925の出力が信号BIT CNTR[5:0]をクリアする。
信号BIT CNTR[5:0]は、信号CSOD Oを供給するマルチビット・マルチプレクサ924の選択入力に供給される。マルチプレクサ924の0から11の入力はLED制御信号LEDS[11:0]を受信する。マルチプレクサ924の12から15の入力は汎用出力信号GPOA[3:0]を受信する。16から21の入力はリセット信号RST#[5:0]を受信する。22から27の入力はクロック・イネーブル信号CLKEN#[5:0]を受信する。28から33の入力はバス・イネーブル信号BUSEN#[5:0]を受信する。34から39の入力はパワー・イネーブル信号PWREN{5:0]を受信する。
【0156】
図47及び図48に示すように、出力シフト状態マシン920は、信号RSTがアサートされるときにIDLE状態に入る。もし信号SO UPDATEがアサートされると、出力シフト状態マシン920はIDLE状態からSHIFT1状態へ遷移する。
出力シフト状態マシン920はPCIクロック信号CLKの正の縁部でクロックされるので、出力シフト状態マシン920は、クロック信号CLKの周波数の4分の1であるクロック信号CSOSC O信号を発生するために、SHIFT1状態、SHIFT2状態、SHIFT3状態及びSHIFT4状態を通して遷移する。SHIFT1状態とSHIFT2状態の間、クロック信号CSOSC Oは否定に又はローにされ、SHIFT3状態とSHIFT4状態の間、クロック信号CSOSC Oはアサート又はハイにされる。信号MAXCNTのアサートによって示されるように、現在のシフト相が完了すると、シフト状態マシン920はIDLE状態に戻り、次のシフト相の開始までクロック信号CSOSC Oがアサートされる。
図49に示すように、HANG PEND信号はレジスタ80のクリア入力によって受信される。HANG PEND信号のアサート又はハイへの駆動は、以下に説明するようにPCIバス32がロック・アップ状態のときにすべてのスロット36をパワーダウンするために適当な出力制御信号POUT[39:0]を非同期的にクリアする。
【0157】
障害分離(fault isolation)
バス・ウオッチャ(watcher)129は2次PCIバス32におけるハング(hang)状態を検出することができる。ハング状態が検出されると、バス・ウオッチャ129はバス・ハング保留(pending)ビットをセットし、これによってSIO50が2次バス32上のスロットをパワー・ダウンさせるようにし、マスク不可能割り込み(NMI)がCPU14に送信されるようにする。CPU14はNMIに応答してNMIルーチンを呼び出し、ハング状態の原因であるスロット(1つ又は複数)を分離(隔離)する。欠陥のあるスロットが識別されると、そのスロットはディスエーブルに又はパワー・オフされる。ソフトウエアの診断のために、ダウンストリームのブリッジ・チップ48のバス・ウオッチャ129はバス履歴(ヒストリ、history)FIFO及びバス・ベクトルFIFOを含む。2次PCIバス32が適正に機能するとき、バス履歴情報は各トランザクションにおいてバス・ウオッチャ129によって記録される。バス履歴情報には、アドレス・グループ(PCIアドレス、PCIコマンド信号、PCIマスタ数、及びアドレス・パリティ・ビットを含む)及びデータ・グループ(PCIデータ、バイト・イネーブル信号C/BE[3:0] 、パリティ・エラー信号PERR 、データ・パリティ・ビット、バースト・サイクル表示ビット、及びデータ有効フラグを含む)が含まれる。バス・トランザクションを開始するためにPCI信号FRAME が2次PCIバス32にアサートされたとき、アドレス・グループ及び後続の各データ・グループはバス履歴FIFOに記憶される。もしトランザクションがバースト・トランザクションであるならば、バースト・サイクル表示ビットが第2のデータ相においてアクティブにセットされる。第1のデータ相の後に、バースト・トランザクションにおける後続のデータ・グループと関連するアドレス・グループのアドレス・フィールドは4で増分され、新しいアドレス・グループ及びデータ・グループがバス履歴FIFOの次の位置に記憶される。もし再試行の状態又はデータがなく接続解除の状態(disconnect-without-data condition)のためにデータが転送されないならば、有効データ表示ビットがローにセットされる。
【0158】
アドレス・グループ及びデータ・グループの両方とも2段パイプラインを通じて流れ、データ・グループがデータ・パリティ・ビット及びデータ・パリティ・エラー・ビットを集める時間を可能にし、且つ次のアドレス・グループが記録される前にデータ・パリティ・エラーが発生するときに記録プロセスを停止することを可能にする。もしバスが書き込みデータ相の中間でハングすると、データは記憶され、バス・ハング状態ビットがコンフィギュレーション・スペースを経由でアクセス可能なバス・ハング表示レジスタ482(図55)にセットされる。もしバスが読み出しデータ相の中間でハングすると、データには有効でないと印付けがなされ、バス・ハング・ビットがセットされる。
バス状態ベクトルは組み立てられてバス・ベクトルFIFOに記憶される。それらには以下のPCI制御信号、即ち、スロット要求信号REQ[7:0] 、スロット許可信号GNT[7:0] 、FRAME 信号、PCIデバイス選択信号DEVSEL 、PCIイニシエータ・レディ(initiator ready)信号IRDY 、PCIターゲット・レディ信号TRDY 、STOP 信号、PCIパリティ・エラー信号PERR 、PCIシステム・エラー信号SERR 、及びLOCK 信号が含まれる。バス状態ベクトルが変化する各PCIクロック上において、即ち、リストされた信号の何れかが状態を変化させる各PCIクロック上において、新しいベクトルがバス・ベクトルFIFOに記憶される。
バス・ウオッチャ129は、2次バス32がロック・アップ(lock up)されたか否かを判定するためにウォッチ−ドッグ(watch-dog)・タイマ454(図53)を含む。ウォッチ−ドッグ・タイマ454が満了になると(きれると)、バス32はハングされる。以下は、ウォッチ−ドッグ・タイマ454によって検出することができるバス・ハング状態の例である。FRAME 信号がハイ又はローに置かれる。信号TRDY がIRDY に応答してアサートされない。PCIアービタ124が何れのマスタにもバスの許可を与えない。バス32を要求するマスタは再試行を行い続ける。
【0159】
ウォッチ−ドッグ・タイマ454が満了すると、バス・ハング保留ビットがバス・ハング表示レジスタ482においてアクティブにセットされる。アクティブにセットされると、バス・ハング保留ビットはバス・ウォッチャ129をディスエーブルにする。次に、SIO50のスロット・イネーブル・ビットがクリアされ、スロットがパワー・オフされることとなる。SIO50は次にシステム・エラー信号SERR をアサートする。
バス・ハング状態の原因を分離するために、システム・エラー信号SERR は、システムの割り込みロジックがCPU14に対してNMIを発行するようにする。図50を参照すると、NMIハンドラは最初に、バス・ハング表示レジスタ482を読むことによってバス・ハング保留ビットがセットされたか否かを判定する(400)。セットされていたならば、NMIハンドラは欠陥のあるスロット(1つ又は複数)を分離するためにBIOS分離ハンドラを呼び出す(401)。そうでない場合は、別のNMIプロシージャを呼び出す(402)。
フェールセーフ機構として、コンピュータ・システムはまた、特定のソフトウエア・ルーチンがオペケーティング・システムによって実行されるときにクリアされる自動サーバ回復(ASR)(automatic server recovery)タイマ72を含む。ASRタイマが満了したならば(例えば、10分後)、それは、オペケーティングがロック・アップしたことを示す。2次PCIバス23のハングはシステムのロック・アップが原因であり得、その場合にNMIはCPU14に届かない。もとASRタイマが満了すると、ASRによって発生されるリブート(reboot)が発生する。ASRタイマはまた、BIOS分離ハンドラがPCIバス32上の故障のスロットを分離する最中にあり且つコンピュータ・システムがASRリブートをするようにハングするならば、分離ルーチンがASRタイムアウト事象のすぐ前に停止さたところでピックアップできることを確実にする。
【0160】
図51を参照すると、BIOSのASRハンドラがASRリブート状態に応答して呼び出される。ASRハンドラは最初に、分離進行中(isolation-in-progress)事象変数(EV)が、分離プロセスがASRタイムアウト事象の前に進行中であったことを示すアクティブ情報を含むか否かを判定するためにチェックを行う(444)。分離進行中EVは不揮発性メモリ(NVRAM)70に記憶され、且つ分離プロセスが開始されたことを示すためにアクティブにセットされるヘッダ情報を含む。分離進行中EVはまた、検査されているスロット、故障のスロット、及びイネーブルにされているスロットを含む分離プロセスの現在の状態で更新される。
もし分離プロセスが進行中であったならば、BIOSのASRハンドラは、ASR事象の直前にイネーブルにされたものを除くすべてのスロットを再びイネーブルにし(488)、これは分離進行中EVから決定される。ASRのリブートの前にイネーブルにされたスロットはASRロック・アップの原因であり得る。結果として、それらのスロットはディスエーブルに(即ち、パワー・オフ)される。次に、ディスエーブルにされたスロットの番号が、NVRAMに記憶される故障状態情報としてログ(記録)され、分離進行中EVがクリアされる(450)。次にBIOSのASRハンドラはバス・ハング保留(ペンディング)ビットがセットされたか否かを判定するために検査を行う(452)。セットされていたならば、バス・ハング保留ビットはクリアされ(2次PCIバス32上でI/Oサイクルを行うことによる)バス・ウォッチャ129を再びイネーブルにする。
444において、もし分離進行中EVがアクティブ状態にセットされておらず、ASR事象が発生したときに分離プロセスが実行されていなかったことが示されるならば、ルーチンはバス・ハング保留ビットがセットされたか否かを判定する(446)。セットされていないならば、BIOSのASRハンドラを終える。446において、バス・ハング保留ビットがセットされ、ASR事象の前にバス・ハング状態が発生したことを示すならば、BIOSのASRハンドラはBIOS分離ハンドラを呼び出して故障のスロット(1つ又は複数)を分離する。
【0161】
図52を参照すると、BIOS分離ハンドラは最初にNVRAMの故障状態情報部分にバス・モニタ127の履歴FIFO及びベクトルFIFOに記録されたバス履歴及びバス・ベクトル情報をログする。(408)。バス履歴FIFO及びバス状態ベクトルFIFOが読まれ、それらの内容がNVRAMに転送される。次に、分離進行中事象変数のヘッダ情報がセットされて分離プロセスが進行中であることを示す(410)。バス・ハング保留ビットがクリアされ(所定のコンフィギュレーション・アドレスへの書き込みによる)てバス・ウオッチャ129が再びイネーブルにされる。次に、分離ルーチンは最初にポピュレートされた(populated)スロット(即ち、PCIデバイスが接続されたスロット)を再びイネーブルにし(即ち、パワー・アップし)、そのデバイスのPCIコンフィギュレーション・スペースからの読み出し及び書き込みを行う(412)。スロットはスロット・イネーブル・レジスタ817(図29)への書き込みによって再びイネーブルにされる。次に、ルーチンは、バス・ハング保留ビットがアクティブにセットされて、スロットに接続されたデバイスがバスから読み出している間にバスをハングさせる原因となることを示すか否かを判定する(414)。もしセットされていなければ、ルーチンはポピュレートされたすべてのスロットの検査が行われたか否かを判定する(416)。もし検査されていなければ、最初にポピュレートされたスロットがディスエーブルにされ(418)、分離進行中EVが更新され、最初にポピュレートされたスロットがBIOS分離ルーチンによって試されたことを示す(420)。もしルーチンが414でバス・ハング保留ビットがアクティブにセットされたと判定すると、スロットは、NVRAMの故障状態情報部分において故障しているものとして示される(例えば、そのスロットに対する故障フラグをアクティブにセットする)。次に、ポピュレートされたすべてのスロットの検査がなされるまでステップ412、414、416、418及び420からなるループが実行される。
【0162】
416でポピュレートされたすべてのスロットが検査されたと判定された場合、ルーチンは、何れかのスロットがNVRAMの故障状態情報部分において故障したものとして示されているか否かを判定するために検査を行う(424)。もしセットされたならば、ルーチン398は故障していないスロットのみを再びイネーブルにする(426)。次に、分離進行中EVがクリアされ(428)、BIOS分離ルーチンが完了する。
424で何れのスロットも故障していないと判定された場合、これはバス・ハング状態が1つのスロットによって起こったものではないことを示すが、1つよりも多くのデバイスが同時にアクティブ状態にあったであろうことが原因であり得る。それを確かめるために、BIOS分離ハンドラは最初にすべてのスロットをディスエーブルにし(パワー・ダウンし)、この情報で分離進行中EVを更新する(430)。次に、BIOS分離ハンドラはカウント変数を0にクリアし、カウント変数IをNの値にセットする(431)。カウント変数Nはポピュレートされたスロットのカウントを表す。
BIOS分離ハンドラはポピュレートされたスロットI(最初はスロットN)を再びイネーブルにし(即ち、パワー・アップし)、そのPCIコンフィギュレーション・スペースに対しての読み出し及び書き込みを行う(432)。次に、ハンドラはバス・ハング保留ビットがセットされたか否かを判定するために検査を行う(438)。もしセットされていなければ、ハンドラは変数Iを決定し(433)、変数Iが0より大きい又は0と等しいか否かを検査する(434)。もし0以上であるならば、ハンドラは分離進行中EVを更新し(435)、次のポピュレートされたスロットIを再びイネーブルにして読み出し及び書き込みを行う(432)。次にハンドラは該次のスロットに対してバス・ハング保留ビットがセットされたか否かを検査する(438)。このようにして、イネーブルにされる各スロットNに対して、以前にイネーブルにされたスロットもまた、スロットの組み合わせが故障の原因であるか否かを判定するために一度に1つずつパワーオンされる。
ブロック434において、変数Iがゼロより小さいくなると決定されれば、ブロック436において、ハンドラは全ての母集団化されたスロットはイネーブルされたか否かを決定する。そうでなければ、ブロック437においいて、変数Nは増加され、ブロック439において、分離進行中EVは更新され、ブロック441において、変数IはNの値と等しく再度セットされる。
ブロック440において、もしバス停止保留ビットが438活動にセットされるなら、潜在的に2つのスロットがディスエーブルされる:スロットN(現在イネーブルされているスロット)及びスロットI(現在読出しおよび書込みされているスロット)。ブロック436において、I及びNの値が同じならば、スロットNだけがディスエーブルされている。ハンドラが全ての母集団化されたスロットがイネーブルされること(そして、障害が識別され得ない)を決定すれば、ブロック442において、ハンドラはNVRAMにおいて障害を隔離するためにその無力をログする。次に、ブロック428において、ハンドラは分離進行中EVを消去する。
【0163】
図52を参照して、ウオッチードッグ(watch−dog)・タイマ454は、出力信号WD_TMR_OUT[17:0](タイマカウタの値)、HANG_PEND(バスハング条件の存在)、EN_CAP(ソフトウエアがバスの補足可能性およびベクトル・ヒストリ情報を有する)、TIME_OUT(ウオッチードッグ・タイマ454はタイムアウトする)、信号HANG_RCOVR_EN(ソフトウエアによりバス・ウオッチャ129およびSIO 50において停止回復ロジックをイネーブルするようにハイにセット)及び信号CAP_ILLEG_PROT(PCTバス32上の違法サイクルを示す)を供給する。
信号HANG_PENDは,SIO 50に供給され,第2のバス・スロットを遮断する。ウオッチドッグ・タイマ454への入力信号は、PCIバス信号のいくつか、信号WRT_EN_CAP_1(バス・ヒストリの補足及び障害分離ブロック129によるバス・ベクトル情報が再びイネーブルされるようにソフトウエアによりハイにパルスされる)、そして電源良好インディケーター信号(コンピュータ・システムにおける電力が安定していることを示す)を含む。
【0164】
バス停止回復状態マシーン456は、信号HANG_PEND、TIME_OUT及びHANG_RCOVER_ENをウオッチードッグ・タイマ454から受け取る。回復状態マシーン456はまたPCI信号のいくつかを受け取る。バス停止回復状態マシーン456からの出力信号は、PCI信号DEVSEL_、PCI信号STOP_を駆動する信号STOP_O、システム・エラー信号SERR_のアサーションをイネーブルする信号SERR_EN、信号BR_M_ABORT(バス・ウオチャ129がマスタ打切りにより回復したこを示す)、信号BR_T_ABORT(バス・ウオチャ129がターゲット打切りにより回復したことを示す)、および信号RCOVR_ACTIVE(バス停止回復状態マシーン456が活動状態になる時を示すための)を含む。バス停止回復状態マシーン456は、第2のPCIバス32が障害スロットを分離することをソフトウエアに許容するためアイドル状態にもどることを保証する。停止条件が検出される時に、SIO 50は第2のバス・スロットをパワーダウンし、このスロットは、ハング条件が生じる時にスロット・デバイスの1つがバス・マスタの1つであったならばバス32をアイドル状態に自動的に置く。しかし、バス停止が生じる時にスロット・デバイスの1つがターゲットであった(そしてブリッジ・チップ48がマスタであった)ならば、そのときブリッジ・チップ48はバス上に留まる。ブリッジ・ップをバスから取除くために、回復状態マシーン456は信号STOP_をアサートすることによりPCIバス32上に再試行サイクルを強制する。
バス・ヒストリ(バス履歴)捕捉ブロック458はトランザクションのためにPCIバス32を監視し、そしてバス・ヒストリ情報を、BUS_HIST_DATA3[31:0](バス・ヒストリアドレス)、BUS_HIST_DATA2[31:0)(バス・ヒストリデータ)、BUS_HIST_DATA1[15:0](パリテイエラー信号 !PERR_、パリテイビットPAR、有効データ・ビットVALID_DAT、アドレス・パリテイビットADDRPAR、バースト・インディケーターBURST、マスタ番号MASTER[2:0]、バイト・イネーブルビット[3:0]及び命令ビットCMD[3:0])の出力信号上に表す。バス・ヒストリ補足ブロック458は、信号HIST_RDYを、正常なトランザクションにおける各データ・フェーズの終端において真である、BUS_HIST_DATA信号上にデータが利用できる時に、またはタイムアウト信号TIME_OUTのアサーションの間に、もしトランザクションがマスタ打切り、再試行により終了するなら信号HIST_RDYをアサートする。
【0165】
バス・ベクトル補足ブロック460は、いずれかのこれらの制御信号が状態を変更する時に、あるPCI制御信号の状態を補足する。ベクトルが補足され、信号BUS_VECT_DATA[20:0]として出力し、該出力信号は、要求信号!REQ[7:0]_、!承諾信号GNT[7:0]_、タイムアウト信号TIME_OUT、ロック信号LOCK_、システムエラー信号SERR_、パリテイエラー信号PERR_、停止信号STOP_、ターゲット準備信号TRDY_、開始レディー信号IRDY_、デバイス選択信号DEVSEL_及びフレーム信号FRAME_を含む。バス・ベクトルBUS_VECT_DATA[24:0]のいずれかが変化するかまたはウオッチドッグ・タイマ454が満了した(TIME_OUTはハイ)ならば、バス・ベクトル捕捉ブロック460は信号VECT_RDYをアサートする。
バス・ヒストリ及びバス・ベクトル信号が、2デープ(2−deep)・バス・ヒストリFIFOと4デープ・ベクトル・ヒストリFIFOを含む、バス・ウオッチャFIFOの入力に生じる。バス・ヒストリFIFOの出力は、信号BUS_HIST_REG1[31:0]、BUS_HIST_REG2(31:0]及びBUS_HIST_REG3[31:0]として生じる。ベクトル・ヒストリFIFOの出力は信号BUS_VECT_REG[31:0]として生じる。システム・ソフトウエアは、アサートされるべき信号BUS_HIST_RD1生じさせるI/0読出しサイクルを発生させることによりバス・ヒストリFIFOの出力を読出し、そしてアサートされるべき信号BUS_VECT_RDを生じるI/O読出しサイクルを発生させることによりベクトルFIFOの出力を読出す。
【0166】
図54を参照すると、回復状態マシーン456は、SYNC_POWEROKは、電力がいまだ安定していないことを示す、否定されたロウ(low)である時に、状態IDLEにおいて開始する。状態マシーンは、信号HANG_PENDがロウである間は状態IDLEに留まる。状態IDLEにおいて、信号BR_M_ABORT、信号BR_T_ABORT、信号RCOVR_ACTIVEは否定されたロウである。信号ROCVR_ACTIVEは、他の状態WAIT、ABORT及びPEND_OFFにおいて活動のハイである。信号SET_HANG_PENDがハイをアサートするならば、状態マシーンは状態WAITに遷移する。その遷移において、信号DEVSEL_0はデバイス選択信号DEVSEL_の反転状態に等しくセットされる。これは、デバイス選択信号DEVEL_がバス停止条件前のターゲットによりアサートさるならば、回復状態マシーン456はアサートされた信号DEVSEL_を維持する。状態WAITにおいて、信号DEVSEL_0は、信号DEV_SEL_WAS_0の状態に等しくセットされ、該信号DEV_SEL_WASは、信号DEVSEL_がターゲットによりWAIT状態への状態マシーン遷移の前にアサートされるなら、ハイにセットされる。
状態WAITから、バス停止回復マシーン456は、PCIバス32がアイドルになった(すなわち、FRAME_IRDY_およびIRDY_の両方が否定ハイ)ことを示す、信号PCI_IDLEがアサートされるならば、PEND_OFF状態に変換する。該変換において、信号BR_M_ABORTがハイにセットされ、停止条件およびスロット・デバイスを電力ダウンしてPCIバスをアイドル状態にする前にスロット・デバイスの1つがマスタであることを表示する。信号SER_ENはまたハイにセットされ、もしINTA_がイネーブルされるならばシステムエラー信号SERR_orのアサーションをイネーブルする。
【0167】
スロット・ディバイスがバス停止条件前のターゲットであるならば、バス・マスタはPCIバス32留まる。バス・マスタをPCIバスから外すために、バス停止回復状態マシーン456は、PCIバス32上の再試行を行う。カウンタ457は、信号HANG_PENDがハイにアサートされた後にPCLK期間(例えば、15PCLK期間)の所定数をカウントする。15PCLK期間は、FRAME_およびIRDY_上の十分な立上がり時間を保証し、信号にアイドル状態への復帰する時間を与える。15PCLK期間が経過した時に、カウンタ457は信号TIME_OUT15をアサートする。信号TIME_OUTがハイをアサートし、信号PCI_IDLEがロウに留まる場合には、状態マシーンはW状態AITから状態ABORTに移行する。その移行において、信号STOP_0信号はハイをアサートし、PCI STOP信号を活動状態に駆動してバス・マスタを再試行させる。状態マシーンは、バス・マスタがロウにアサートされたFRAME_信号を維持する間は状態ABORTに留まる。状態ABORTにおいて、STOP_0信号はハイに維持される。バス・マスタが再試行状態に応答してFRAME信号をアサートしないと、状態マシーンは状態ABORTから状態PEND_OFFに移行する。該移行において、信号BR_T_ABORTはハイをアサートされ、バス32をアイドル状態に置くためにバス停止条件の後にターゲット打切りが必要であつたことを表示する。また、信号SSERR_ENがハイをアサートされて、INTA_がイネーブルであるなら、信号SERR_orのアサーションをイネーブルする。状態マシーンは、信号WRT_EN_CAP_1が状態IDLEに逆移行する時にハイにアサートされるまで、状態PEND_OFFに留まる。
システム・ソフトウエアはBR_M_ABORTおよびBT_T_ABORT信号の値を読出SUことができ、バス停止に含まれたスロット・デバイスがマスタまたはスレーブであったかを決定する。
【0168】
図55を参照すると、ウオッチドッグ・タイマ454は、信号PCLKによりクロックされる18ビットLSFRカウンタ464を含む。ANDゲート467がハイにアサートされる時にカウンタ464はイネーブルされ、それは新しいマスタが要求(ANY_REQはハイ)を送り、バス・サイクルが開始し(信号FRAME_およびIRDY_は共にアサートされる)、イネーブル捕捉信号EN_CAPがアサートされ、そして信号TIME_OUTはロウになる。ORゲート466は、信号ANY_REQと信号FRAME_およびIRDY_の反転状態を受ける。ANDゲート467は、ORゲート466の出力、信号EN_CAPおよび信号TIME_OUTの反転状態を受ける。カウンタの出力は、信号WD_TMR_OUT[17:0]を駆動し、そしてタイムアウト条件が検出された(TIME_OUTはハイ)時、データ転送が開始した(両信号IRDY_とTRDY_がロウにアサートされる)時、またはカウンタ464の全ての出力ビットがハイである(違法条件である)時に消去される。消去条件はORゲート470により示され、該ORゲートは信号TIME_OUT、信号WD_TMR_OUT[17:0]のビット単位AND、およびANDゲート472の出力を受ける。ANDゲート472の入力は、信号IRDY_の反転状態および信号TRDY_の反転状態を受ける。
信号TIME_OUTは、タイマ信号WD_TIMR_OUT[17:0]が2進値1000000000000000までカウントするときにタイムアウト検出器474によりハイにアサートされる。信号TIME_OUTは、ORゲート476のひとつの入力に与えられ、その出力はANDゲート478の入力に接続されている。ANDゲート478の他方の入力は、信号WRT_EN_CAP_1の反転状態を受け(バス・ヒストリおよびバス・ベクトル獲得を再イネーブルするためにソフトウエアにより制御される)、そしてその出力はD型フリップ・フロップ488のD入力に接続されている。フリップ・フロップ488は信号PCLKによりクロックされ、そしてORゲート476の他方の入力にフィードバックされる、出力信号WD_TIMR_OUTを駆動する。フリップ・フロップ488は、電力良好信号SYNC_POWEROKが否定される時に消去される。このため、ASRリセットは信号WD_TMR_OUTを消去しない。
【0169】
HANG_PEND信号は、D型フリップ・フロップ482によりハイにアサートされ、そのD入力は、ANDゲート484の出力に接続され、そして信号PCLKによりクロックされる。ANDゲート484のひとつの入力は、ORゲート486の出力に接続され、そして他方の入力は信号WRT_EN_CAP_1の反転状態を受ける。ORゲート486のひとつの入力は、信号HANG_PENDに接続され、そして他の入力はANDゲート488の出力に接続されている。ANDゲート488の出力は信号TIME_OUTおよびイネーブル信号HANG_RCOVR_ENを受ける。このため、もしシステム・ソフトウエアがバス停止回復(HANG_RCOVR_ENはハイである)をイネーブルするならば、そのときタイムアウト条件は信号HANG_PENDをハイにセットされるように惹起するであろう。信号HANG_PENDは、システム・ソフトウエアがアサートされるべき信号WRT_EN_CAP_1を生じるか(バス32上のI/Oサイクルを実行する)または信号SYNC_POWEROKが否定される時に、消去される。ビットHANG_PENDはASRリブートにより否定される。
イネーブル獲得信号EN_CAPはD型フリップ・フロップ490により発生され、そのD入力はANDゲート492の出力を受ける。ANDゲート492はORゲート494の出力に接続され、そしてその他の入力は信号CLR_EN_CAPの反転状態に接続されている。ORゲート494のひとつの入力は、信号EN_CAPにルートバックされ、そして他の入力は信号WRT_EN_CAP_1を受ける。フリップ・フロップ490は、信号PCLKによりクロックされ、そして信号SYNC_POWEROKがロウに否定されるときにハイにセットされる。信号EN_CAPは、信号 WRT_EN_CAP_1を経てソフトウエアによりハイにセットされるとすぐに、それはハイに維持される。信号CLR_EN_CAPがアサートされて信号EN_CAPを消去し(情報のディスエーブル捕獲)、それはタイムアウトが発生した時に生じ(TIME_OUTはハイ)、システム・エラーが発生し(SERR_はロウ)、パリティ・エラーが発生し(PERR_はロウ)、または違法バス・プロトコルが検出される(CAP_ILLEG_PROTはハイ)。
信号CAP_ILLEG_PROTはD型フリップ・フロップ483により発生され、そのD入力はANDゲート485の出力を受ける。ANDゲートのひとつの入力は、信号WRT_EN_CAP_1の反転状態を受け、そして他の入力は、ORゲート487の出力を受ける。ORゲート487は信号CAP_ILLEG_PROTとSET_ILLEG_PROTを受ける。信号SET_ILLEG_PROTは、捕獲がイネーブルされる時(EN_CAPがハイ)にアサートされ、状態マシーン456は活動状態になく(RCOVR_ACTIVEはロウである)、バスはアイドルであり、信号DEVSEL_、TRDY_、またはIRDY_のいずれがロウにアサートされる。この条件は、バス・ヒストリとバス・ベクトル情報の捕獲をトリガーする、違法条件である。
【0170】
図56を参照すると、バス・ヒストリ・レディー信号HIST_RDYは、信号PCLKによりクロックされそして信号RESETにより消去される、D型フリップ・フロップ502により発生される。フリップ・フロップ502のD型入力は、ORゲート504の出力に接続され、その入力は、信号TIME_OUT、信号M_ABORT(一つのPCLKにより遅延されたマスタ打切り信号)、ANDゲート506の出力、およびANDゲート508の出力を受ける。ANDゲート506は、もし再試行、切断Cまたはターゲット打切りサイクルが第2のバス32に存在するならば、その出力をアサートする(信号FRAME_、信号IRDY_の反転状態、信号STOP_の反転状態、そして信号DSC_A_Bの反転状態が全て真である)。ANDゲート508は、完了データ転送が生じた時にその出力をアサートする(信号IRDY_およびTRDY_は共にロウ)。このため、ウオッチドッグ・タイマ454がタイムアウトし、再試行、切断C、またはターゲット打切り条件が存在する時にバス・ヒストリFIFOにバス・ヒストリ情報はロードされ、マスタはサイクルを打切り、またはサイクルは継続して完了する。
有効データ指示信号VALID_DATは、信号PCLKによりクロックされそして信号RESETにより消去される、D型フリップ・フロップ510により発生される。フリップ・フロップ510のD入力はNORゲート512の出力に接続され、信号TIME_OUT、マスタ打切り信号M_ABORT、およびANDゲート506の出力を受ける。このため、データは、タイムアウトが検出されないならば有効であり、マスタ打切りサイクルが発せられ、または再試行、切断Cまたはターゲット打切りサイクルが存在する。
信号VECT_RDYは、信号PCLKによりクロックされそして信号RESETにより消去される、D型フリップ・フロップ514により発生される。フリップ・フロップ514のD入力はORゲート516の出力に接続され、信号TIME_OUT、およびバス・ベクトルにおけるPCI制御信号のひとつが状態を変化したことを表示する信号CHANGE_STATEを受ける。このため、PCIバス32上の制御信号が状態を変える時またはタイムアウトが生じる時に、状態ベクトル情報がベクトルFIFOにロードされる。
【0171】
図57を参照すると、ヒストリ・データ(BUS_HIST_DATA3[31:0]、BUS_HIST_DATA2[31:0]、BUS_HIST_DATA1[15:0])は、バス・ヒストリFIFOの第1のステージである、バス・ヒストリ・レジスタ540の入力に与えられる。バス・ヒストリ501は出力信号BUS_HIST_DATA1[79:0]を、出力信号BUS_HIST_FIFO0[79:0]を与えるレジスタ542に与え(パイプラインの第2のステージ)る。両バス・ヒストリ・レジスタ540と542は信号PCLKによりクロックされ、そして電力良好信号SYNC_POWEROKがロウである時に消去される。
バス・ヒストリ・レジスタ540と542は、ANDゲート518の出力がハイに駆動されるときにロードされる。ANDゲート518はイネーブル捕獲ビットEN_CAPとバス・ヒストリ・レディー信号HIST_RDYおよびCAP_ILLEG_PROT信号(ORゲート519)のORを受ける。出力信号BUS_HIST_FIFO0[79:0]BUS_HIST_FIFO1[79:0]は、マルチプレクサ520、522、そして524の0と1入力にそれぞれ与えられる。マルチプレクサ520、522、そして524はそれぞれ、読出しアドレス信号HIST_FIFO_RD_ADDRにより選択される(バス・レジスタ502の出力を選択するためにロウで開始し、そして各逐次の読出しでトグルされる)。マルチプレクサ520、522そして524は、出力信号BUS_HIST_REG3[31:0]、BUS_HIST_REG2[31:0]、そしてBUS_HIST_REG1「15:0]をそれぞれ駆動する。
【0172】
バス・ベクトル・データ信号BUS_VECT_DATA[24:0]は、バス・ベクトル・レジスタ544の入力に与えられ、その出力はバス・ベクトル・レジスタ546の入力にルートされる。バス・ベクトル・レジスタ546の出力は、バス・ベクトル・レジスタ548の入力にルートされ、その出力はバス・ベクトル・レジスタ550の入力に順番にルートされる。バス・ベクトル・レジスタ0−3の各々は信号PCLKによりクロックされ、そして信号SYNC_POWEROKがロウである時に消去される。バス・ベクトル・レジスタは、ANDゲート521がハイにアサートされる時にロードされる。ANDゲート521は信号EN_CAPおよび、信号VECT_RDYとCAP_ILLEG_PROTのOR(ORゲート523)を受ける。バス・ベクトル・レジスタ550、548、546および544は、出力信号BUS_VECT_FIFO0[24:0]、BUS_VECT_FIFO1[24:0]、BUS_VECT_FIFO2[24:0]、そしてBUS_VECT_FIFO3[24:0]をそれぞれ生成し、その信号は、それぞれマルチプレクサ526の0、1、2、そして3入力に順番に与えられる。マルチプレクサ526にアドレス信号VECT_FIFO_RD_ADDR[1:0](2進値00で開始しそして各継続した読出しで増分される)の状態に基づきその入力のひとつを選択させ、マルチプレクサ526の出力は、信号BUS_VECT_REG[31:0]を与える。
この結果、バス・ヒストリとバス状態ベクトル情報は、信号HIST_RDYまたはVECT_RDYにそれぞれ応答し、または違法バス・プロトコル状態が検出されるならば信号CAP_ILLEG_PROTのアサートに応答して、捕獲される。
【0173】
拡張カードのメモリ空間の予約
汎用されているコンピュータ・システムと相違して、コンピュータ・システム10のパワーアップ時の初期の環境設定においては、CPU14が、スロット36に関するメモリ空間及びPCIバス番号を予約する。なお、該スロットは空(カード807が挿入されていない)またはパワーダウンされているものである。通常の場合と同様に、CPU14は、コンピュータ・システムが最初にパワーアップしたときに存在するPCIバス(PCIバス24、32a−b、及びスロット36に挿入されかつ電力が供給されたカード807のPCIバス)に、PCIバス番号を割り当てる。
PCI−PCIブリッジ回路(PCI−PCIブリッジ26、48)はそれぞれ、そのコンフィギュレーション・レジスタ空間1252(図62)において、下位(従属)のバス番号レジスタ1218及び2次バス番号レジスタ1220を有する。下位のバス番号レジスタ1218は、PCI−PCIブリッジ回路の下流の最も大きいPCIバス番号である下位バス番号を含み、2次バス番号レジスタ1220は、PCI−PCIブリッジ回路に一番近いの下流のPCIバスの番号である2次PCIバス番号を含む。したがって、下位バス番号レジスタ1218及び2次バス番号レジスタ1220に格納された値は、PCI−PCIブリッジ回路の下流におけるPCIバス番号の範囲を規定する。
コンフィギュレーション・レジスタ空間1252はまた、1次バス番号レジスタ1222を含んでいる。該レジスタ1222は、PCI−PCIブリッジ回路に一番近い上流のPCIバスの番号を含んでいる。
システム・コントローラ/ホスト・ブリッジ回路18もまた、下位バス番号レジスタ1218及び2次バス番号レジスタ1220を含んでいる。環境設定の後に、回路18の下位バス番号レジスタ1218は、コンピュータ・システムに存在する最も大きいPCIバス番号を含んでいる。回路18の下位バス番号レジスタ1220は、ゼロのバス番号を含み、これは、回路18の直後の下流のPCIバス(PCIバス24)が常にゼロのバス番号に割り当てられるからである。
公知のシステムと相違して、CPU14は、スロット36の内の初期的にはパワーダウンされているかまたは空の1つのスロットが、1つ又は複数の別のPCIバス(初期的にパワダウンされているスロット36に挿入されたカード807に存在する)を、コンピュータ・システム10がパワーアップされて環境設定された後に、コンピュータ・システム10に導かれることを、了解する。したがって、初期の環境設定の間、CPU14はメモリ空間、I/O空間、及び、パワーダウンまたは空のスロット36に対するPCIバス番号の所定の番号(1または3)を予約する。
このようにして、PCI−PCIブリッジ回路は、最も直前にパワーアップされたカード807を収容するために再度環境設定をする必要がない。直前にパワーアップされたカード807のPCI−PCIブリッジ回路のみが、環境設定される必要があるだけである。コンピュータ・システム10の他のブリッジ回路は、何ら変更を要しない。
リソース予約プロセスの一部分として、ROM23に記憶されかつメモリ20に書き込まれ(さらに書き込み保護された)Basic Input/Output System(BIOS)は、スロット36に対して予約されているリソース範囲を特定する表を構築する、この表は、バス番号、メモリ、及びシステム10に新規に追加されるPCIデバイスを環境設定するために用いられるI/Oリソース範囲を含んでいる。オペレーティング・システムは、この表を用いてんどのリソースが予約されているか、新規のPCIデバイスを環境設定するためにどのリソースが使用可能かを決定する。
【0174】
図58に示されているように、BUS ASSIGNと称される再起的なPCI環境設定ルーチンにおいて、CPUC14は、PCIバス番号を割り当て、それに応じて、PCI−PCIブリッジ回路のコンフィギュレーション・レジスタ1252をプログラムする。これは、CPU14が、PCIデバイスに関するPCIバスを一度に1つ走査することによって、実行される。BUS ASSIGNルーチンは、ROM23に記憶されたBIOSの部分であり、パワアアプ語の初期の環境設定に用いられる。
CPU14はまずブロック1000において、サーチ・パラメータPCI BUSの値をサーチ・パラメータCURRENT PCI BUSの値に設定し、かつサーチ・パラメータFCN及びDEVを初期化する。パラメータPCI BUSは、CPU14によって現時点で走査されているPCIバスのバス番号を表しており、またBUS ASSIGNルーチンがCPU14によって最初に実行された場合には、パラメータPCI BUSは0のバス番号を示すことになる。パラメータCURRENT PCI BUSは、CPUによって割り当てることが可能な、次のPCIバス番号を示し、BUS ASSIGNルーチンがCPU14によって最初に実行された時には、パラメータCURRENT PCI BUSは0のバス番号となる。パラメータFCN及びDEVはそれぞれ、CURRENT PCI BUS14によって現在走査されている、現在のPCI機能及びPCIデバイスを示す。
【0175】
CPU14は、ブロック1001において、パラメータPCI BUSがバス番号0であるかどうかを判定し、そうであれば、CPU14は、ブロック1002において、システム・コントローラ/ホスト・ブリッジ回路18の2次バス番号レジスタ1220をゼロにセットする。そしてCPU14はブロック1004において、パラメータPCI BUSによって示されるPCIバス上のパワーダウンされた又は空の、次のPCI−PCIブロック回路またはスロット36を見つけ出す。
次に見つけ出されたPCIデバイスがPCI−PCIブロック回路であるか、または存在していないか(パワーダウンされているか又は空のスロット)を判定するために、CPU14は、PCIデバイス毎のコンフィギュレーション空間に位置する1ワード・ベンダーIDレジスタから、値を読み出す。値”hFFFF”(”h”は、ヘキサデシマル表現であることを示す)が予約され、かついずれのベンダーによっても使用されない。ベンダーIDレジスタからの読み出しにより、”hFFFF”が読み出された場合には、これは、PCIデバイスが存在しないことを表す。
ブロック1006において、パラメータPCI BUSによって示されたPCIバス上にパワーダウンまたは空のPCI−PCIブロック回路又はスロット36が存在しないことを、CPU14が判定すると、BUS ASSIGNルーチンノ最初に戻る。それ以外の場合は、CPU14は、他のPCI−PCIブリッジ回路が存在するかを判定し、存在しない場合には、CPU14は、ブロック1010において、パワーダウンまたは空のスロット36が見いだされた時に、パラメータCURRENT PCI BUSをを増分し、そして、パワーダウン又は空の、次のPCI−PCIブリッジ回路又はスロット36を検出する。このようにすて、パラメータCURRENT PCI BUSを増分することによって、CPU14は、パワーダウン又は空のスロット36に対するバス番号を予約することができる。なお、このようなスロット36に対して、1つ又は複数のバス番号を予約してもよい。
CPU14がPCI−PCIブリッジ回路を見いだした場合は、CPU14は、ブロック1012において、該PCI−PCIブリッジ回路の1次バス場合はをパラメータCURRENT PCI BUSに設定する。そしてブロック1014において、CPU14は、パラメータCURRENT PCI BUSを増分し、PCI−PCIブリッジ回路の2次バス番号を、該パラメータCURRENT PCI BUSによって支持された新しいバス番号に設定する。
【0176】
次にブロック1018において、CPU14は、見いだしたPCI−PCIブリッジ回路の下位バス番号を最大のPCIバス番号にせっていする。これは、下位バス番号レジスタ1218に書き込むことによって行われる。下位バス番号レジスタ1218に対する値は一時的なものであり、したがって、パワーダウンまたは空の、下流の別のPCI−PCIブリッジ回路又はスロット36を、CPU14が見つけ出してプログラムすることが可能である。
ブロック1022において、パラメータPCI BUS、DEV、及びFCNを保存し、かつBUS ASSIGNルーチンを再起的に呼び出すことによって、CPU14はパワーダウンまたは空のPCI−PCIブリッジ回路又はスロット36を捜し出す。CPU14は次に、ブロック1024において、パラメータPCI BUS、DEV、FCNの値を記憶し、そして、BUS ASSIGNルーチンの最新のコールを、CPU14によって割り当てられた次のPCIバス番号のパラメータCURRENT PCI BUSを更新するために、リターンする。
CPU14は次に、ブロック1026において、見いだされたPCI−PCIブリッジ回路の下位バス番号を更新するが、これは、該下位バス番号をパラメータCURRENT PCI BUSに設定することによって行われる。このようにして、見いだされたPCI−PCIブリッジ回路へのPCIバス番号の割り当て、下流におけるパワーダウンまたは空の別のPCI−PCIブリッジ回路またはスロット36へのPCIバス番号の割り当てが完了する。CPU14は次にブロック1004において、パワーダウンPCI BUSによって示されたPCIバス上のパワーダウンまたは空のPCI−PCIブリッジ回路又はスロット36を見いだす。
【0177】
図59に示されているように、PCIバス番号が割り当てられた後、CPU14は、MEM ALLOCと称するメモリ空間割り当てルーチンを実行して、パワーダウン又は空のPCIファンクション(function)又はスロット36に対してメモリ空間を割り当てる。まずCPU14は、ブロック1028において、パワーダウン又は空のPCIファンクション又はスロット36を見つけるときにCPU14を補助したパラメータをサーチする。
次にブロック1030において、CPU14は、パワーダウン又は空のPCIファンクション又はスロット36を見いだす。ブロック1032において、パワーダウン又は空のPCIファンクション及びスロット36がすべてメモリ空間に割り当てられていると判断した場合は、CPU14は、MEM ALLOCルーチンから戻る。そうでない場合は、CPU14はブロック1032において、PCIファンクションが見つけられたかを判定する。
見つけられた場合には、CPU14はブロック1038において、メモリ・リソースをPCIファンクションによって指定されたように割り当てる。見つけられなかった場合は、パワーダウン又は空のスロット36の1つが見いだされたことであり、CPU14はブロック1036において、スロット36に対する欠陥メモリ・サイズ及びメモリ・アラインメント(配置)を割り当てる。該欠陥メモリ・サイズは、コンピュータ・システム10のパワーアップ前に予め決定されたサイズ、または、コンピュータ・システム10によって要求されたメモリ・リソースの決定後に定められたサイズのいずれかである。
メモリ空間を割り当てるとき、CPU14は、見いだされたPCIファンクションの上流にあるPCI−PCIブリッジ回路のレジスタである、メモリ基準レジスタ1212及びメモリ制限レジスタ1214をプログラムする。CPU14はまた、対応するPCIデバイスの基準アドレスレジスタをもプログラムする。そしてCPU14は、ブロック1030において、パワーダウンまたは空である次のPCIファンクションまたはスロット36を捜し出す。
【0178】
図60に示されているように、PCIバスが割り当てられた後に、CPU14は、I/O ALLOCと称するI/O空間割り当てルーチンを実行し、それにより、空のPCIファンクションまたはスロット36に対してI/O空間を割り当てる。このルーチンにおいては、CPU14はまず、ブロック1040において、パワーダウンまたは空のPCIファンクションまたはスロット36を見いだすときに用いたパラメータを捜し出す。
次にCPU14は、ブロック1042において、パワーダウンまたは空である次のPCIファンクションまたはスロット36を捜し出す。ブロック1044において、パワーダウンまたは空のPCIファンクション及びスロット36がすべてI/O空間に割り当てられていると判断した場合は、CPU14はI/O ALLOCルーチンから抜け出す。そうでない場合は、ブロック1044において、PCIファンクションが見いだされたどうかを判定する。見いだされた場合は、CPU14は、該PCIファンクションによって示されるI/Oリソースを、ブロック1050において割り当てる。見いだされなかった場合は、パワーダウンまたは空のスロット36が見いだされたことであり、CPU14は、ブロック1048において、該スロット36に対して欠陥I/Oサイズ及びI/Oアラインメントを割り当てる。該欠陥I/Oサイズは、コンピュータ・システム10のパワーアップ前に予め決定されたサイズ、又はコンピュータ・システム10によって要求されたI/Oリソースの決定の後に定められたサイズのいずれかである。
I/O空間の割り当てにおいては、CPU14は、PCIファンクション又はスロット36の上流にあるPCI−PCIブリッジ回路のレジスタである、I/O基準レジスタ1208及びI/O制限レジスタ1210をプログラムする。CPU14はまた、対応するPCIデバイスの基準アドレス・レジスタをもプログラムする。そしてCPU14は、ブロック1042において、パワーダウン又は空である次ののPCIファンクション又はスロット36を探す。
【0179】
図61に示されているように、初期の環境設定がなされた後、レバー802の1つがオープン(解放)又はクローズ(閉鎖)されたことを示す割り込みが発生すると、CPU14は、CARD INTと称する割り込みサービス・ルーチンを実行する。まずブロック1052において、CPU14は割り込みレジスタ800の内容を読みだして、レバー802がオープンされたのかクローズされたのかを判定する。割り込みを生じたレバー802がオープンされた場合は、CPU14はこのCARD INTルーチンを抜け出る。
クローズされた場合は、CPU14は、スロット・イネーブル・レジスタ817にブロック1054において書き込み、そしてスロット36及び該スロット36を挿入したカード807のパワーアップを初期化するために、SOビットを設定する。そして、CPU14は、カード807のパワーアップを待機する(不図示)。ブロック1055において、CPU14は、カード807のPCIバスにアクセスする(存在する場合にのみ)。ブロック1056において、その時にパワーアップされたカード807がPCIバス(及びPCI−PCIブリッジ回路)を備えているかどうかを判定する。備えている場合は、ブリッジ1057において、カード807が挿入されてパワーアップされたスロット36に対して予約されている、1次、2次及び従属(下位)バス番号を決定する。続いて、ブリッジ1058において、パワーアップされたカード807のPCI−PCIブリッジ回路を環境設定する。
そして、ブロック1060において、スロット36に対して予約されたI/O位置、I/Oサイズ、及びメモリ空間を決定する。CPU14は次に、ブロック1062において、パワーアップされたカード807のPCIコンフィギュレーション・ヘッダ空間における基準アドレス・レジスタに、書き込みを行う。次にブロック1064において、カード807のコンフィギュレーション空間における割り込みピン・レジスタを読みだして、カード807が割り込み要求を有しているかどうかを判定する。有している場合は、ブロック1068において、割り当てられたIRQ番号を、カード807のコンフィギュレーション空間における割り込みライン・レジスタに書き込む。
CPU14は次に、ブロック1070において、カード807のコンフィギュレーション空間に位置するカードのコマンド・レジスタをイネーブルし、カード807が、PCIバス32上のメモリ・アクセス及びI/Oアクセスに対処できるようにする。次いでブロック1072において、割り込みレジスタ800に書き込みを行って割り込み要求をクリアし、かつブロック1074において、カード807に対してソフトウエア・デバイス・ドライバをロードする。
【0180】
ブリッジ・コンフィギュレーション
機能的に、ブリッジ・チップ26と48は、PCIバス24と32の間のPCI−PCIブリッジを形成する。しかし、各ブリッジ・チップは、独立して構成されなければならないコンフィギュレーション空間を含む。ひとつの解決は、ブリッジを形成する独立デバイス2つのブリッジを扱うことであるが、それはBIOSコンフィギュレーション・ルーチンの修正を要求するであろう。他の解決は、コンフィギュレーション・ルーチンが、PCIバス24とケーブル28の間のPCI−PCIブリッジとしてアップストリーム・ブリッジ・チップ26を構成することができるようにバスとしてケーブル28を定義することである。この第2の解決のひとつの利点は、事実、2つのブリッジ・チップが実際にひとつのPCI−PCIブリッジを形成する時に、標準PCIコンフィギュレーション・サイクルがあたかも2つのPCI−PCIブリッジであるかのようにブリッジ・チップ26と48を構成するために実行されることができることである。
PCIバス上に2つのタイプのコンフィギュレーション・トランザクションがある:タイプ0とタイプ1。タイプ0コンフィギュレーション・サイクルは、該コンフィギュレーション・サイクルが発生されるPCIバス上のデバイスに対して意図されており、それに対しタイプ1コンフィギュレーション・サイクルはブリッジを経てアクセスされる第2のPCIバス上のデバイスに対してターゲットにされている。図64は、タイプ0とタイプ1コンフィギュレーション・サイクルのアクセス・フォーマットを例示している。タイプ0コンフィギュレーション・コマンドは、コンフィギュレーション・サイクル中にPCIアドレス・ビットAD[1:0]を00に設定することにより特定化される。タイプ0コンフィギュレーション・サイクルはPCI−PCIブリッジを渡って前進されないが、タイプ0コンフィギュレーション・トランザクションが発生されなかったバス上にローカルを留める。
タイプ1コンフィギュレーション・コマンドはアドレス・ビットAD[1:0]を2進値01に設定することにより特定化される。タイプ1コンフィギュレーション・コマンドはPCI−PCIブリッジによりPCIバス階層において何らかのレベルへと進められる。結局、PCI−PCIブリッジはタイプ1コマンドをタイプ0コマンドに変換してPCI−PCIブリッジの第2のインターフェースに接続されたデバイスを構成する。
ブリッジのコンフィギュレーション・レジスタ105または125に記憶されたコンフィギュレーション・パラメータは、1次(主要)PCIインターフェース(1次バス番号)と2次PCIインターフェース(2次バス番号)と、最高の番号を付されたブリッジへのPCIバス従属を表示する従属バス番号を識別する。バス番号は、PCIコンフィギュレーション・ルーチンBUS_ASSIGN(図58)によりセットされる。例えば、アップストリームのブリッジ・チップ26において、1次バス番号はバス24のバス番号であり、2次バス番号はケーブル28の番号であり、そして従属バス番号は2次PCIバス32の番号または存在するならばPCIバスの番号である。ダウンストリームのブリッジ・チップ48において、1次バス番号はケーブル・バス28の番号であり、2次バス番号はPCIバス32の番号であり、そして従属バス番号はPCIバス階層においてより深層におかれたPCIバスの番号である。
【0181】
図66Aを参照すると、コンフィギュレーション・サイクルの検出は、それぞれアップストリームのブリッジ・チップ26またはダウンストリームのブリッジ・チップ48においてPCIターゲット・ブロック103または121において論理により取り扱われる。アップストリーム・バス24上に検出されたタイプ0のコンフィギュレーション・サイクルはANDゲート276により発生された信号TYP0_CFG_USをアサートすることにより指示される。ANDゲート276は信号UPSTREAM_CHIP、IDSEL(コンフィギュレーション・トランザクションの間にチップ選択)、CFGCML(検出されたコンフィギュレーション・サイクル)およびADDR00(ビット1と0は共に零)を受信する。ダウンストリーム・ブリッジ・チップ48により検出されたタイプ0コンフィギュレーション・サイクルはANDゲート278により発生された信号TYP0_CFG_CYC_DSにより指示され、該ANDゲート278は信号S1_BL_IDSEL(ダウンストリーム・ブリッジ・チップ48用のIDSEL信号)、信号CFGCMD、信号ADDR00、信号MSTR_ACTIVE(ブリッジ・チップ48は第2のPCIバス32上のマスタであることを指示している)、そして信号UPSTREAM_CHIPの反転状態を受信する。
【0182】
アップストリーム・ブリッジ・チップ26におけるPCIターゲット103によるタイプ1コンフィギュレーション・サイクルの検出は、ANDゲート280から信号TYP1_CFG_CYC_USをアサートすることにより指示され、ANDゲート280は信号CFGCMD、ADDR01(それぞれ、ビット1と0はロウとハイ)、そしてUPSTREAM_CHIPを受信する。ダウンストリーム・バス32上のタイプ1コンフィギュレーション・サイクルの検出はANDゲート282から信号TYP1_CFG_CYC_USをアサートすることにより指示され、ANDゲートは信号CFGCMD、ADDR01、そして信号UPSTREAM_CHIPの反転状態を受信する。
タイプ0のトランザクションを受信するブリッジ・チップは、コンフィギュレーション・トランザクション・アドレスにおいてレジスタ番号フィールドを使用し、適切なコンフィギュレーション・レジスタをアクセスする。機能番号フィールド252は、コンフィギュレーション・トランザクション中の多重機能デバイスにおいて実行されるべき8つの機能のひとつを特定する。PCIデバイスは多重機能でありそしてハードデスク・ドライブ・コントローラ、メモリ・コントローラ、ブリッジ等のような機能を有する。
ブリッジ・チップ26がアップストリーム・バス26上にタイプ1コンフィギュレーション・トランザクションを見つける時に、いずれかのダウンストリームにトランザクションを送り、トランザクションをタイプ0トランザクションに翻訳し、該トランザクションを特定のトランザクションに変換するか、または該トランザクションを無視することができる(コンフィギュレーション・レジスタ105または125に記憶されたバス番号パラメータに基づいて)。もしトランザクションが送出されるならば、それは宛先ブリッジ・チップのPCIマスタに至り、タイプ1トランザクションを対応する適当なトランザクションに変換する。もしブリッジ・チップがトランザクション自体を取扱うならば、そのときそれはPCIバス上に信号DEVSELをアサートすることにより応答し、そして通常遅延トランザクションとしてそのトランザクションを取扱う。
【0183】
タイプ1トランザクションにおいて、バス番号フィールド260はPCI階層において唯一のPCIバスを選択する。もし信号PASS_TYP1_DSがANDゲート284によりアサートされるならば、PCIターゲット・ブロック103は、アップストリーム・チップ26からダウンストリーム・ブリッジ・チップ48へ下ってタイプ1コンフィギュレーション・サイクルを渡す。ANDゲート284は、信号TYP1_CFG_CYC_USと信号IN_RANGEを受信する(バス番号フィールド260は記憶された第2のバス番号と等しいかそれより大きく、記憶された従属バス番号に等しいかそれよりも小さい)。ANDゲート284の他方の入力はORゲート286の出力に接続され、該ORゲート286はANDゲート288の出力に接続されたひとつの入力と、信号SEC_BUS_MATCHの反転状態を受信する他方の入力を有する。このため、タイプ1サイクルが検出されるならば、信号IN_RANGEがアサートされそしてバス番号フィールド260は記憶された第2のバス番号と一致せず、信号PASS_TYP1_DSがアサートされる。バス・フィールド260が記憶された第2のバス番号と一致しないならば、そのときダウンストリーム・バスまたはその下のデバイスがアドレスされる。信号SEC_BUS_MATCHがハイにアサートされるならばANDゲート288がその出力をハイにアサートし、そしてデバイス番号フィールド258は、タイプ1のコンフィギュレーション・サイクルのターゲットはダウンストリーム・ブリッジ・チップ48のコンフィギュレーション空間であることを指示する。もしこれが真であるならば、タイプ1コンフィギュレーション・トランザクションは、タイプ0コンフィギュレーション・トランザクションへの変換のためにダウンストリーム・ブリッジ・チップ48に向けてケーブル48の下方へ送られる。ダウンストリーム・ブリッジ・チップ48におけるPCIターゲット121はトランザクションに応答し、そしてタイプ0トランザクションに従ってダウンストリーム・ブリッジ・コンフィギュレーション・レジスタ125を読出しそして書込む。ダウンストリーム・チップの制御ピンは駆動され、そして読出しおよび書込みデータは、あたかもタイプ0トランザクションがダウンストリーム上で実行しているようにダウンストリームPCIバス32上に見える。しかし、ダウンストリーム・バス32上の各IDSELは、デバイスが実際にタイプ0トランザクションに応答しないようにブロックされている。
【0184】
記憶された2次バス番号(ケーブル・バス28)に等しいバス番号フィールドを有するがデバイス0をアドレスしない(ケーブル・バス28上の他のデバイス用にサーチする)、アップストリーム・ブリッジ・チップ26におけるPCIターゲット・ブロック103がそのアップストリーム・バス24上のタイプ1のコンフィギュレーション・トランザクションを検出するならば、そのとき、ターゲット・ブロック103は1次バス26上のトランザクションを無視する。
2次バス番号と従属バス番号(IN_RANGE)の範囲外のバス番号フィールド260を有する、2次PCIバス32上のタイプ1コンフィギュレーション書込みトランザクション(WR_high)をPCIタイプ121が検出するならば、そして、デバイス番号258、機能番号256、レジスタ番号254が特殊サイクル(SP_MATCH high)を指示するならば、そのとき信号PASS_TYP1_USがANDゲート290によりアサートされる。ANDゲート290は、信号TYP1_CFG_CYC_US、信号SP_MATCH、書込み/読出しストローブWR_および信号IN_RANGEの反転状態を受信する。アップストリーム・ブリッジ・チップ26におけるPCIマスタ101がこのようなサイクルを受信する時に、1次PCIバス24上の特殊サイクルを実行する。
コンフィギュレーション・トランザクションは一定の条件のもとでブリッジ・チップにより無視される。アップストリーム・ブリッジ・チップ26におけるターゲット・ブロック103がPCIバス24(そのアップストリーム・バス)上のタイプ1コンフィギュレーション・トランザクションを検出するならば、そしてバス番号フィールド260が2次バス番号より小さいかまたはブリッジ・チップのコンフィギュレーション空間に記憶された従属バス番号よりも大きいならば、そのときターゲット・ブロック103はトランザクションを無視する。
ダウンストリーム・ブリッジ・チップ48におけるターゲット・ブロック121が2次PCIバス32(そのダウンストリーム)上のタイプ1コンフィギュレーション・トランザクションを検出し、そしてバス番号フィールド260が2次バス番号に等しいか大きくそしてブリッジ・チップのコンフィギュレーション空間において記憶された従属バス番号に等しいか小さいならば、そのときターゲット・ブロック121はトランザクションを無視する。加えて、もしタイプ1コマンドがタイプ1コマンドにおいて特定化されたバス番号にかかわらず特殊サイクルト・ランザクションへの変換を特定しないならば、アップストリームを進むタイプ1のコンフィギュレーション・コマンドは無視される。
【0185】
図66Bを参照する。PCIマスタ101または123は、ケーブル28により転送されたコンフィギュレーション・サイクルを監視する。もし、ダウンストリーム・ブリッジ・チップ48におけるPCIマスタ123がアップストリーム・ブリッジ・チップ26からのタイプ1のコンフィギュレーション・トランザクションを検出するならば、ブリッジ・チップ48のコンフィギュレーション空間に記憶された1次バス番号および2次バス番号とバス番号フィールド260とを比較する。もし、バス番号フィールド260が記憶された1次バス番号(即ち、ケーブル28)または記憶された2次バス番号(ダウンストリーム・バス32に直接接続されたデバイスをアドレス指定する)のいずれかが一致するならば、ダウンストリーム・ブリッジ・チップ48は,バス上のコンフィギュレーション・トランザクションを渡すように、トランザクションをタイプ0コンフィギュレーション(AD[1:0]=00)に変換する。タイプ0トランザクションは、PCIマスタ・ブロック123によりPCIバス32上で実行される。
次のものは、タイプ1コンフィギュレーション・トランザクションにおいてフィールドについて実行されるトランザクションである。タイプ1コンフィギュレーション・トランザクションにおけるデバイス番号フィールド258はPCIマスタ123によりデコードされ、図65のテーブルに定義されるように、2次バス32上に変換されたタイプ0トランザクションにおける唯一のアドレスを発生する。デバイス番号フィールド258からデコードされた第2のアドレス・ビットAD[31:16]はPCIマスタ123により使用され、2次PCIバス32上にデバイス用の適切なチップ選択信号IDSELを発生する。アドレス・ビットAD[15]は1に等しく、そのときブリッジ・チップ48はアサートされないローに全てのビットAD[31:16]を維持する(IDSELはアサートされない)。レジスタ番号フィールド254とタイプ1のコンフィギュレーション・コマンドの機能(ファンクション)番号フィールド256はタイプ0のコンフィギュレーション・コマンドに修正されずに渡される。機能番号フィールド256は、8つの機能のひとつを選択し、そしてレジスタ番号フィールド254は、選択された機能のコンフィギュレーション・レジスタ空間におけるダブル・ワードを選択する。
ダウンストリーム・ブリッジ・チップ48に対してターゲットされたタイプ1のコンフィギュレーション・トランザクションのために、ブリッジ・チップ48は、あたかもダウンストリーム・バス32上のデバイスをアドレス指定するように、タイプ1トランザクションをタイプ0トランザクションに変換する。しかしAD[31:16]ピンは、第2のPCIバス・デバイスがIDSELを受信しないように零にセットされる。PCIマスタ・ロジック123はANDゲート262により駆動される信号TYP1_TO_INTOをアサートすることによりこれを検出する。ANDゲート262は、信号CFG_CMD(コンフィギュレーション・コマンド・サイクルを指示する)、ORゲート264の出力、信号UPSTREAM_CHIP(タイプ1からタイプ0への変換はアップストリーム・ブリッジ・チップ26においてディスエーブルされる)の反転状態を受信する。もし信号PRIM_BUS_MATCHがアサートされるならば(バス番号フィールド260が記憶された1次バス番号に一致する)、またはもし記憶された主要バス番号CFG2P_PRIM_BUS_NUM[7:0]が零に等しいならば(ブリッジ・チップ48のコンフィギュレーション空間において1次バス番号がまだシステムBIOSにより構成されていなく、そして現在のタイプ1コンフィギュレーション・サイクルが内部コンフィギュレーション空間に進みブリッジ・チップ48の1次バス番号をプログラムすることを指示する)、ORゲート264は、その出力をハイにアサートする。
信号TYP1_TO_EXTOがANDゲート266によりアサートされ、そして記憶された2次のバス番号への一致に応答する。ANDゲート266の入力は信号CFG_CMD、信号SEC_BUS_MATCH、信号UPSTREAM_CHIPの反転状態、および信号SP_MATCHの反転状態を受信する(特殊サイクルではない)。信号TYP1_TO_EXTOは、変換されたタイプ0コンフィギュレーション・トランザクションが第2のPCIバス32にターゲットされていることを指示する。
【0187】
信号TYP1_TO_INTOは4:1マルチプレクサ274の1入力に与えられる。その2入力はローに固定され、そしてマルチプレクサ274の0入力と3入力はD型フリップ・フロップ270から信号LTYP1_TO_INTOを受ける。マルチプレクサ274の選択入力S1は、信号CMD_LATCH(PCIバス32上の新しいサイクル用にアサートされたFRAME_)を受信し、そして選択入力S0は信号P2Q_START_PULSE(ハイである時にアドレスがPCIバス32に送られたことを指示する)を受信する。マルチプレクサ274の出力は、信号PCLKによりクロックされそして信号RESETにより消去される、フリップ・フロップ270のD入力に接続されている。第2のバス・デバイスへのIDSEL信号は、その入力に信号Q2P_AD[15](図6のテーブル1に従って必要とされる非変換)、TYP1_TO_INTOそしてLTYP1_TO_INTOを受ける。信号LTYP1_TO_INTOは信号BLOCK_IDSELのアサーション(断定)を拡張する。
バス番号フィールド260が記憶された2次バス番号より大きくそして記憶された従属バス番号より小さい等しい場合の、アップストリーム・ブリッジ・チップ26からのタイプ1コンフィギュレーション・トランザクションをダウンストリーム・ブリッジ・チップ48におけるPCIマスタ123が受信するならば、そのときPCIマスタ・ブロック123はタイプ1のトランザクションを第2のPCIバス32へ変化されずに進める。第2のPCIバス32上の他のデバイス、例えば他のブリッジ・デバイス323(図26B)はタイプ1のコンフィギュレーション・トランザクションを受信しそしてその第2のバス(PCIバス325)へ進めるであろう。
PCIマスタがアップストリーム・ブリッジ26からタイプ1コンフィギュレーション書込みトランザクションを検出しそしてバス・フィールド260が記憶された第2のバス番号と一致しするならば、そしてもしデバイス番号フィールド258、機能番号フィールド256そしてレジスタ番号フィールド254が特殊サイクル(SP_MATCHはハイ)を指示するならば、特殊サイクルへのタイプ1コンフィギュレーション・トランザクションが実行される。これは、信号TYP1_TO_SPCYCをハイにアサートするANDゲート268により指示される。ANDゲート268はSP_MATCHとQ2P_CBE[0](特殊サイクル用のコマンド・ビット)を受信する。タイプ1のコンフィギュレーション・トランザクションからのデータは宛先バス上の特殊サイクル用のデータになる。特殊サイクル中のアドレスは無視される。
【0188】
バス性能モニタ
バス・モニタ127(図3は)特定のバス性能パラメータを計算するための情報を記憶する回路を含む。パラメータはバス・ユーティライゼーション(utilization)、バス効率(efficiency)及び読み出しデータ効率を含む。バス・ユーティライゼーションは、所定のグローバル期間に対してのバスがトランザクションを行うのにビジー(busy、使用中)な時間の比率である。バス効率は、バスがビジーの期間の間のクロック期間の合計数に対してのデータ転送に実際に使用されたPCIクロック期間の数の比率である。読み出しデータ効率は、ブリッジ・チップ48によってマスタに対して取り出されたデータのバイトの合計数に対しての遅延完了待ち行列(DCQ)144(図4)からの2次PCIバス32上のデバイスによってアクセスされた読み出しデータのバイトの数の比率であるバス・モニタ127に記憶された情報は所望されるパラメータを計算するためにシステムのソフトウエアによって検索される。
図67Aを参照すると、グローバル期間タイマ1300(32ビット幅であり得る)はその間に多種のパラメータが計算される時間の合計期間をカウントする。タイマ1300は16進値FFFFFFFFにプログラムされる。もしPCIクロックPCICLK2が33MHzで動作しているならば、タイマ期間は約2分である。タイマ1300が0に減ると、信号GL TIME EXPIREをアサートする。
【0189】
バス・モニタ127は7つのスロット特定的バス・ビジー・カウンタ1302A〜Gを含み、カウンタのうちの6つは2次PCIバス32の6つのスロットにそれぞれ対応し、1つはSIO50に対応する。バス・ビジー・カウンタ1302A〜Gは信号GL TIME EXPIREがアサートされたときにクリアされる。どのバス・デバイスが2次バス32の制御を有するかに依存して、バス・ビジー・カウンタ1302は2次PCIバスのFRAME 信号又はIRDY 信号がアサートされるPCIクロック毎に増分する。7つのカウンタのうちの適切なものが許可信号GNT[7:1] の1つによって選択される。即ち、例えば、信号GNT[1] がローにアサートされてSIOが2次PCIバス32上の現在のマスタであることを示すときにバス・ビジー・カウンタ1302Aが選択される。
2次PCIバス32の6つのスロットとSIO50にそれぞれ対応する7つのデータ・サイクル・カウンタ1306A〜Gは、その間にPCIバス32上でのトランザクションの間にマスタとターゲットの間でデータ転送が実際に発生する時間を追従(監視)する。選択されたデータ・サイクル・カウンタ1306は2次バスのIRDY 信号及びTRDY 信号が両方ともローにアサートされるPCIクロック毎に増分される。データ・サイクル・カウンタ1306A〜Gは信号GL TIME EXPIREがアサートされるときにクリアされる。
DCQバッファにロードされたデータの量を追従(監視)するために6つのDCQデータ・カウンタ1310A〜Fがバス・モニタ127に含まれる。6つのDCQデータ・カウンタ1310A〜Fは2次PCIバス32の6つのスロットに対応する。選択されたDCQデータ・カウンタ1310は遅延読み出し完了(DRC)データがケーブル28から受信されてプリフェッチ・バッファへロードされるPCIクロック毎に増分する。
【0190】
別のセットのカウンタ、使用済みDCQデータ・カウンタ1314A〜Fは2次PCIバス32の6つのスロットによって実際に使用されたDCQ144にロードされるデータの量を監視するために用いられる。選択された使用済みDCQデータ・カウンタ1314は2次バス・マスタが対応するDCQバッファからデータを読み出すPCIクロック毎に増分する。DCQデータ・カウンタ1310A〜F及び使用済みDCQデータ・カウンタ1314A〜Fは実際に転送されたバイトの数に関係なくデータ・サイクル毎に増分する。殆どの場合、各データ・サイクルで転送されるバイトの数は4である。
グローバル期間タイマ1300がタイムアウトして信号GL TIME EXPIREをアサートすると、幾つかの事象が発生する。まず、グローバル期間タイマ1300はその元のカウント値を再ロードし、その値は16進値FFFFFFFFである。バス・ビジー・カウンタ1302A〜G、データ・サイクル・カウンタ1306A〜G、DCQデータ・カウンタ1310A〜F及び使用済みDCQデータ・カウンタ1314A〜Fを含む他のすべてのカウンタの内容はそれぞれレジスタ1304、1308、1312及び1316にロードされる。カウンタ1302、1306、1310及び1314は次に0にクリアされる。グローバル期間タイマ1300は次に、元の値が再ロードされた後に再びカウントを開始する。
信号GL TIME EXPIREは割り込み受信ブロック132に供給され、これがこの割り込みをケーブル28を経て割り込み出力ブロック114へ送り、このブロックはCPU14への割り込みを発生する。CPU14は、バスの性能分析を行うために割り込みハンドラを呼び出すことによって割り込みに応答する。割り込みハンドラはレジスタ1304、1308、1312及び1316の内容にアクセスし、6つの2次バス・スロット及びSIO50に関連するバス・ユーティライゼーション、バス効率、プリフェッチ効率のパラメータを含む幾つかのパラメータを計算する。
バス・ユーティライゼーション・パラメータはグローバル期間タイマ1300の初期値、16進値FFFFFFFF、によって割ったバス・ビジー・カウンタ1302の値である。即ち、バス・ユーティライゼーションは、その間にバス・マスタがバス・トランザクションを行う合計グローバル時間のパーセンテージである。
【0191】
PCIトランザクションはアドレス・フェーズ(相)と少なくとも1つのデータ・フェーズとを含む。バス・マスタはFRAME をアサートしてアクティブのバス・トランザクションの開始及び期間を示す。信号FRAME がデアサートされると、これはトランザクションが最後のデータ相にあること又はトランザクションが完了されたことを示す。信号IRDY は、バス・マスタがバス・トランザクションの現在のデータ相を完了することができることを示す。書き込みの間、信号IRDY は有効データがバスにあることを示す。読み出しの間、信号IRDY はマスタが読み出しデータを受け入れる準備をしたことを示す。アドレス指定されたPCIターゲットは、信号TRDY をアサートし、ターゲットがトランザクションの現在のデータ・フェーズを完了できることを示すことによって、バス・トランザクションに応答する。読み出しの間、信号TRDY は有効データがバスに存在することを示す。書き込みの間、信号TRDY はターゲットがデータを受け入れる準備をしたことを示す。待ち状態がアドレス・フェーズとデータ・フェーズの間及びバス・トランザクションの連続するデータ・フェーズの間に挿入され得る。アドレス・フェーズ又は待ち状態の間、実際のデータの転送は発生しない。
実際のデータ転送は信号IRDY とTRDY の両方がローにアサートされたときにのみ発生する。データ転送のバスの効率を判定するために、割り込みハンドラは、データ・サイクル・カウンタ1306の値をバス・ビジー・カウンタ1302の値で割る。バス効率は、その間にバス・トランザクションの間のデータ転送が実際に発生する時間の量を表す。この値を計算することによって、コンピュータ・システムは、多くの待ち状態を必要とするため非効率的であるターゲット・デバイスを知るようにされる。
【0192】
ブリッジ・チップ48は1次PCIバス26からデータを取り出し(フェッチし)、そのデータをDCQ144に記憶することができる。DCQ144は8つのバッファを有し、その各々が2次バス・マスタに割り当て可能である。例えば、1次バスでターゲットにされた2次バス・マスタによって発生されたメモリ読み出し多重トランザクションは、ブリッジ26及び48がメモリ20から8つのキャッシュ・ラインを取り出してDCQ144へロードするようにさせる。メモリ読み出しライン・トランザクションは、PCI−PCIブリッジ26、48がメモリ20から1ラインのデータを取り出すようにする。更に、図93及び図98と関連して説明したように、PCI−PCIブリッジ・チップ26、48は読み出しプロモーションを行うことができ、これは2次バス・マスタからの読み出し要求をより大きなブロックのデータに対する読み出し要求に変換する。これらの場合において、すべてではない取り出されたデータがバス・マスタによって使用される可能性が存在する。その場合、読み出されないデータはすてられ、それが読み出しデータ効率を減少する。読み出しデータ効率を測定することによって、システムの設計者は、どのようにしてバス・マスタが1次バス24からブリッジ・チップ26、48によって取り出された読み出しデータを用いているかを理解できるようになる。
【0193】
図67Bを参照すると、カウンタ1310は、もし信号DCQ DATA RECEIVED[X](X=2〜7)がアサートされ、4バイトのデータがケーブル28からマスタXと関連するDCQバッファによって受信されたことを示すならば、クロックPCLKの立ち上がりで増分する。カウンタ1310はカウント値DCQ DATA[X][20:0](X=2〜7)を出力し、これは信号GL TIME EXPIREがアサートされたときに零にクリアされる。
カウンタ1314は、信号DCQ DATA TAKEN[X](X=2〜7)がアサートされ、4バイトのデータがマスタXと関連するDCQバッファから読み出されることを示す場合に、クロックPCLKの立ち上がりで増分する。カウンタ1314は信号GL TIME EXPIREがハイのときにクリアされる。
2次PCIバス32上のデバイスによって実際に使用されたDCQデータの量を判定するために、プリフェッチ効率が割り込みハンドラによって計算される。これは、DCQデータ・カウンタ1310の値に対しての使用済みDCQデータ・カウンタ1314の値の比率をとることによつて判定される。プリフェッチ・バッファへ又はそこから転送されるデータのすべてが4バイト幅であるわけではないが、その比率は、すべてのデータ・フェーズが同数のバイトを転送すると仮定することによって近似する。
計算されたパラメータに応答して、ユーザ又はコンピュータ製造者はコンピュータ・システムの性能をより理解できる。例えば、バス効率が低いならば、関与するPCIデバイスをコンピュータ製造者によって別の部品と置換することも可能である。DCQ読み出しデータ効率を知ることによって、コンピュータ製造者がDCQフェッチ・アルゴリズムを効率を向上させるために変更することも可能となる。
【0194】
従属バス・デバイスの使用
図107に示されるように、6つの拡張カード・スロット36a〜fに挿入された6つの拡張カードは、CPU14に従属するバス・デバイス1704〜1708及びI2Oプロセッサ177に従属するバス・デバイス1701〜1702をもたらす。すべての従属バス・デバイス1701〜1708は共通のPCIバス32に接続されるが、I2O従属デバイス1701〜1702は、CPU14に対しては、I2Oプロセッサ1700を通じてのみアドレス指定可能であり且つPCIバス32を通じて直接にアドレス指定可能ではないように現れる。従って、PCIバス32はI2O従属デバイス・バス及びCPU14従属デバイス・バスの両方として働く。
CPU14がI2O従属デバイス1701〜1702をPCIバス32デバイスと認識するのを避ける目的のために、ブリッジ・チップ48は、I2O従属デバイス1701〜1702がCPU14によって実行されるコンフィギュレーション・サイクルに応答するのを避けるためにロジック1710(図109)を含む。また、拡張ボックス30は、I2O従属デバイス1701〜1702で開始される割り込み要求がCPU14へ伝搬するのをマスクするためにブリッジ・チップ48の割り込み受信ブロック132と協働するマルチプレキシング回路1712を含む。I2O従属バス・デバイス1701〜1702から発せられる割り込み要求は割り込み受信ブロック132によってI2Oプロセッサ1700へ再送信される。I2Oプロセッサ1700はI2O従属デバイス1701〜1702を構成(コンフィギュレーション)し、I2O従属デバイス1701〜1702から発せられた割り込み要求を受信して処理し、CPU14によって指示されるようにI2O従属デバイスの動作を制御する。
【0195】
コンピュータ・システム10のパワーアップの後且つカード807がパワーアップされたとき(即ち、新しいバス・デバイスがPCIバス32に導入されたとき)に、I2Oプロセッサ1700はPCIバス32をスキャンしてI2O従属バス・デバイスを識別する。バス・デバイスのタイプ(I2O従属バス・デバイス又はCPU14従属デバイス)を識別する目的のために、I2Oプロセッサ1700はPCIバス32上でコンフィギュレーション・サイクルを実行して各バス・デバイスのデバイス識別(アイデンティフィケーション)ワード(Device ID(デバイスID))を読み出す。デバイスIDはすべてのPCIデバイスのコンフィギュレーション・ヘッダ・スペースに位置する。I2Oプロセッサ1700はこのスキャンの結果を、CPU14によってアクセス可能なI2Oプロセッサ1700内の6ビットI2O従属レジスタ1729(図112)に記憶する。レジスタ1729のビット0から5はそれぞれスロット36a〜fと関連する。1つのビットに対する「1」の値は関連するスロット36がCPU14に従属するバス・デバイスを有することを示し、1つのビットに対する「0」の値は関連するスロット36がI2Oプロセッサ1700に従属するバス・デバイスを有することを示す。
I2Oプロセッサ1700はスロット36a〜fの何れにも挿入することができる。どのスロット36がI2Oプロセッサを含むかを、もし含む場合に識別するために、CPU14はPCIバス32をスキャンし、バス32に接続されたバス・デバイスのデバイスIDを読み出す。CPU14は、I2Oプロセッサ1700内部のホスト・コンフィギュレーション・イネーブル・ビット1726(図113)が、I2Oプロセッサ1700がバス32上のI2O従属デバイス1701〜1702の識別を完了したことをCPU14に示すまで、バス32上の何れのデバイス1704〜1708の構成(コンフィギュレーション)も試みない。ホスト・コンフィギュレーション・イネーブル・ビット1726は、CPU14によってバス32上のデバイスのコンフィギュレーションをディスエーブルにするための「0」の値(パワーアップでの値)を有し、バス32上のCPU14従属デバイス1704〜1708のコンフィギュレーションをイネーブルにするための「1」の値を有する。CPU14がバス32上のバス・デバイスを構成(コンフィギュレーション)するとき、CPU14は以下に説明するようにロジック1720によってマスクされるためI2O従属デバイス1701〜1702を「見ない」。
【0196】
ホスト・イネーブル・コンフィギュレーション・ビット1726がセットされた後、CPU14はI2O従属レジスタ1729の内容を読み出し、読み出した内容をブリッジ・チップ48の6ビットI2O従属レジスタ1728(図110)へ転送する。レジスタ1728はバス・デバイスの従属状態(subordinate status)(I2Oプロセッサ1700従属又はCPU14従属)をレジスタ1729と同じ様式で示す。CPU14がレジスタ1728に書き込みを行う前に、レジスタ1728はすべてに1を含み(パワーアップでの値)、これはCPU14がI2Oプロセッサ1700に対してバス32をスキャンすることを可能にする。割り込み受信ブロック132はレジスタ1728を用いて、処理を行うためにブロック132によって受信したどの割り込み要求がCPU14へ送られるべきか、及びブロック132によって受信したどの割り込み要求がI2Oプロセッサ1700へへ送られるべきかを識別する。更に、ロジック1710は、CPU14からI2O従属デバイス1701〜1702のCPU14による認識をブロックするためにレジスタ1728の内容を用いる。
どのバス・デバイスがI2Oプロセッサであるかを、何れかがそうである場合に割り込み受信ブロック132に示すために、CPU14は、そのビット0〜5がスロット36a〜fにそれぞれ対応するI2Oスロット・レジスタ1730の1ビットをセットする。ブリッジ・チップ48内に位置するこのレジスタ1730に対して、1つのビットに対する「0」の値は関連するスロット36がI2Oプロセッサを持たないことを示し、1つのビットに対する「1」の値は関連するスロット36がI2Oプロセッサを持つことを示す。
【0197】
図109に示されるように、ロジック1710は、コンフィギュレーション・サイクルの間にバス32上のデバイスを選択するために信号AD IDSEL[5:0]をバス32のアドレス/データ・ラインに供給する多重ビットANDゲート1711を含む。ANDゲート1711は、I2O従属レジスタ1728のビットを示し且つそれに対応するビットを有する6ビット信号ENABLE[5:0]を受信する。また、ANDゲートは、コンフィギュレーション・サイクルの間にバス32上のデバイスを選択するためにブリッジ・チップ48によって供給される典型的アイデンティフィケーション選択信号SLOT IDSEL[5:0]を受信する。従って、信号ENABLE[5:0]は、コンフィギュレーション・サイクルがCPU14によって実行されるときにPCIバス32から信号SLOT IDSEL[5:0]を選択的にマスクするために用いられる。
スロット36a〜dからの割り込み要求の宛て先の制御のために、各スロット36によって供給される4つの標準PCI割り込み要求信号(INTA#、INTB#、INTC#、INTD#)がマルチプレキシング回路1712(図107)に供給される。マルチプレキシング回路1712はスロット36から受信したPCI割り込み要求信号を直列(シリアル)化し、その信号を4つの時分割多重化シリアル割り込み要求信号、INTSDA#、INTSDB#、INTSDC#、INTSDD#、を経由で割り込み受信ブロック132に供給する。
【0198】
図108に示されるように、割り込み受信ブロック132はCPU14に対する割り込み要求信号を時分割多重化シリアル割り込み要求信号INTSDCABLE#を経由で割り込み出力ブロック114に供給する。割り込み受信ブロック132はI2Oプロセッサ1700に対する割り込み要求信号を、バス32のPCI・INTC#ライン1709を経由で供給される時分割多重化シリアル割り込み要求信号INTSDIIO#経由でI2Oプロセッサ1700に供給する。割り込み出力ブロック114はCPU14が宛て先とされた割り込み要求をPCIバス24の1つ又はそれ以上の標準PCI割り込み要求ライン(線)(INTA#、INTB#、INTC#、INTD#)に供給する。ブリッジ・チップ26の外部の割り込みコントローラ1900はPCIバス24のPCI割り込み要求線から割り込み要求を受信する。割り込みコントローラ1900は割り込み要求(PCIバス24上の他のデバイスからの割り込み要求を含み得る)を優先化し、それらをCPU14に供給する。割り込み出力ブロック114は、以下に説明するように、割り込み要求信号をPCIバス24の割り込み要求線に非同期で供給するか(非同期モードのとき)、又は割り込み要求信号をPCIバス24のINTA#線にシリアルに供給するか(シリアル・モードのとき)の何れかである。
【0199】
図114に示されるように、時分割多重化シリアル・データ信号は、8つの連続的タイム・スライス(T0〜T7)を含む割り込みサイクル1850を経由でそれらのデータを表す。各タイム・スライスの期間はPCIクロック信号CLKの1サイクルである。各タイム・スライスは1つ又はそれ以上の割り込み要求信号の状態の「スナップショット」を表す。図121に示されるように、信号INTSDA#はスロット36a〜fからのサンプリングされたINTA#割り込み要求信号を表す。信号INTSDB#はスロット36a〜fからのサンプリングされたINTB#割り込み要求信号を表す。信号INTSDC#はスロット36a〜fからのサンプリングされたINTC#割り込み要求信号を表す。信号INTSDD#はスロット36a〜fからのサンプリングされたINTD#割り込み要求信号を表す。
割り込み信号INTSDA#〜D#を信号INTSDIIO#に組み合わせるために、割り込み受信ブロック132は信号INTSDA#〜D#を共に論理的にAND演算し、その間CPU14を宛て先とする割り込み要求信号を同時にマスクする。同様に、割り込み信号INTSDA#〜D#を信号INTSDCABLE#に組み合わせるために、割り込み受信ブロック132は信号INTSDA#〜D#を共に論理的にAND演算し、その間CPU14を宛て先とする割り込み要求信号を同時にマスクする。
別の割り込みサイクル1850が始まったときに割り込み出力ブロック114に指示するために、割り込み受信ブロック132は同期信号INTSYNCCABLE#を割り込み出力ブロック114に供給する。信号INTSYNCCABLE#の立ち下がり又は負の縁部は、信号INTSDCABLE#を経由で送信された割り込みサイクル1850のタイム・スライスT0がCLK信号の次の正の縁部で開始することを示す。信号INTSYNCIIO#は、信号INTSDIIO#を経由で送信される割り込みサイクル1850の来るタイム・スライスT0を示すために類似の様式で用いられる。信号INTSYNCIIO#は割り込み受信ブロック132によってバス32のPCI・INTD#ライン1713を経由でI2Oプロセッサ1700に供給される。別の割り込みサイクル1850を割り込み信号INTSDA#〜D#を経由でいつ送信するかをマルチプレキシング回路1712に指示するために、割り込み受信ブロック132は同期信号INTSYNC#をマルチプレキシング回路1712に供給する。信号INTSYNC#の立ち下がり又は負の縁部は、マルチプレキシング回路1712がCLK信号の次の正の縁部で信号INTSDA#〜D#のタイム・スライスT0を送信するべきであることを示す。
【0200】
図115に示されるように、マルチプレキシング回路1712は、信号INTSDA#、INTSDB#、INTSDC#及びINTSDD#をそれぞれ供給する4つのマルチプレクサ1741〜1744を含む。マルチプレクサ1741〜1744の選択(セレクト)入力は、信号INTSDA#〜D#のタイム・スライスT0〜T7を示すために用いられるタイム・スライス信号SLICEIN[2:0]を受信する。スロット36からのINTA〜D#割り込み要求信号はそれぞれにマルチプレクサ1741〜1744の入力に供給される。
信号SLICEIN[2:0]は、PCIクロック信号CLKの正の縁部でクロックされる3ビット・カウンタ1745の出力によって供給される。割り込み同期信号INTSYNC#はカウンタ1745のクロックされたイネーブル入力によって受信される。信号INTSYNC#の負の縁部でカウンタ1745は零にリセットされる(SLICEIN[2:0]が0と等しい)。カウンタ1745はSLICEIN[2:0]信号が「7」と等しくなるまでSLICEIN[2:0]信号によって示された値を増分し、カウンタ1745がふたたびINTSYNC#信号によってリセットされるまでとどまる。
【0201】
図116に示されるように、タイム・スライスT0〜T7を追従(監視)するために、割り込み受信ブロック132はCLK信号の正の縁部でクロックされる3ビット・カウンタ1750を含む。カウンタ1750は、3×8デコーダ1752の選択入力で受信される出力信号SL1[2:0]を供給する。デコーダ1752は8ビット信号G CNTR[7:0]を、信号INTSDIIO#及びINTSDCABLE#のタイム・スライスを示す信号G CNTR[7:0]のアサートされたビットとともに供給する。
INTSYNC#信号は、G CNTR[7:0]最上位ビット、G CNTR[7]を受信するインバータ1754の出力によって供給される。INTSYNC#信号はタイム・スライスT7の間にローにパルス化(パルシング、pulsing)されるが、割り込み受信ブロック132は、INTSYNC#信号をローにパルス化する前に割り込みサイクル1850の終了の後にCLK信号の幾つかのサイクルを交互に待つことができる。信号INTSYNCCABLE#及びINTSYNCIIO#は両方ともビットG CNTR[0]を受信するインバータ1755の出力によって提供される。
CPU14に対する更なる割り込み要求信号CAY INT#はSIO回路50によって供給される。CAY INT#信号はタイム・スライスT0の間にINTSDA#〜D#と論理的にAND演算される。CAY INT#信号はSIO CMPL#信号、SI INTR#信号及びI2C INT#信号を受信するANDゲート1756の出力によって供給される。SIO CMPL#信号はSIO回路50がシリアル出力プロセスを完了したときにアサートされる、又はローに駆動される。I2C INT#信号はブリッジ・チップ48に接続されたI2Cバス(示さず)を通じてトランザクションの完了を示すためにアサートされる、又はローに駆動される。さもなければI2C INT#信号はデアサートされる、又はハイに駆動される。
割り込み要求をマスクするために、割り込み受信ブロック132は4つのマスク信号、MASKA、MASKB、MASKC及びMASKDを発生する。信号INTSDA#の特定のタイム・スライス(T0〜T7)の間にMASKA信号がアサートされる又はハイに駆動されるとき、その特定のタイム・スライスの間のシリアル割り込み信号INTSDA#によって示される割り込み要求はCPU14からマスクされる。特定のタイム・スライスの間にもしMASKA信号がデアサートされる又はローに駆動されると、シリアル割り込み信号INTSDA#によって示される割り込み要求はI2Oプロセッサ1700によってマスクされる。MASKB〜D信号は信号INTSDB#〜D#によって供給されるマスク割り込み要求と類似に機能する。
【0202】
図117に示すように、マルチプレクサ1758はMASKA信号を供給する。マルチプレクサ1758の選択入力はSL1[2:0]を受信する。マルチプレクサ1758の8つの入力はI2O従属レジスタ1728の対応するビットを示す反転されたIIO SUB[5:0]信号を受信する。信号IIO SUB[5:0]はマルチプレクサ1758の適当な入力に接続され、それによって、INTSDA#信号が特定のスロット36に対する割り込み状態を示すとき、MASKA信号はそのスロット36に対するレジスタ1728の関連するビットを同時に示す。3つの他のマルチプレクサ1760、1762及び1764はそれぞれ信号MASKB、MASKC及びMASKDを供給する。MASKA信号の生成と同様に、信号IIO SUB[5:0]はマルチプレクサ1760、1762及び1764の適当な入力に接続され、それによって、MASKB、MASKC及びMASKDは信号INTSDB#、INTSDC#及びINTSDD#によって表されるスロットに関連するレジスタ1728のビットを示す。マルチプレクサ1760〜1764はそれらの選択入力で信号SL1[2:0]を受信する。
【0203】
図118に示すように、割り込み受信ブロック132はまた、ライン1709及び1713が信号INTSDIIO#及びINTSYNCIIO#をそれぞれI2Oプロセッサ1700に供給するために用いられるので、I2Oプロセッサ1700のスロット割り込みラインによって供給されるINTD#信号及びINTDC#信号をマスクするために用いられる2つのマスク信号、IIOTS D及びIIOTS Cを供給する2つのマルチプレクサ1768及び1770を含む。マルチプレクサ1768及び1770の両方の選択入力は信号SL1[2:0]を受信し、マルチプレクサ1768及び1770の信号入力はI2Oスロット・レジスタ1730の対応するビットを示す信号IIOSLOT[5:0]を受信する。信号IIOSLOT[5:0]はマルチプレクサ1768及び1770の適当な入力に選択され、それによって、信号INTSDC#〜D#信号が特定のスロット36に対する割り込み状態を示すとき、マルチプレクサ1768及び1770によって選択されたIIOSLOT[5:0]信号はそのスロット36に対するレジスタ1730の関連するビットを同時に示す。
【0204】
図119に示すように、6つのANDゲート1772〜1782は信号INTSDA#〜INTSDD#を組み合わせるため及び選択された割り込み要求信号をCPU14からマスクするために用いられる。ANDゲート1772は反転されたECC ERR DOWN#信号(ケーブル送信においてチップ48bによって検出されたエラーを示すためにアサートされる)及びビットG CNTRL[0]を受信する。ANDゲート1774は反転されたINTSDA#信号及びMASKA信号を受信する。ANDゲート1776は反転されたINTSDB#信号及びMASKB信号を受信する。ANDゲート1778は反転されたINTSDC#信号、MASKC信号及びIIOTS C信号を受信する。ANDゲート1780は反転されたINTSDC#信号、MASKD信号及びIIOTS D信号を受信する。ANDゲート1782は反転されたCAY INT信号及びG CNTRL信号を受信する。
ANDゲート1772〜1782の出力は、出力がDタイプのフリップフロップ1786の信号入力へ接続されるORゲート1784への入力として接続される。フリップフロップ1786はCLK信号の正の縁部でクロックされ、フリップフロップ1786のセット入力はRST信号を受信する。フリップフロップ1786の反転出力はINTSDCABLE#信号を供給する。
4つのANDゲート1790〜1796がINTSDA#〜D#信号を組み合わせるため及び選択された割り込み要求信号をI2Oプロセッサ1700からマスクするために用いられる。ANDゲート1790は反転されたINTSDA#信号及び反転されたMASKA信号を受信する。ANDゲート1790の別の入力はNORゲート1802の出力に接続され、これはタイム・スライスT0及びT7の間INTSDA#信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。NORゲート1802はビットG CNTRL[0]及びG CNTRL[7]を受信する。ANDゲート1792は反転されたINTSDB#信号及び反転されたMASKB信号を受信する。ANDゲート1792の別の入力はNORゲート1804の出力に接続され、これはタイム・スライスT1及びT4の間INTSDB#信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。NORゲート1802はビットG CNTRL[1]及びG CNTRL[4]を受信する。
【0205】
ANDゲート1794は反転されたINTSDC#信号及び反転されたMASKC信号を受信する。ANDゲート1794の別の入力はNORゲート1806の出力に接続され、これはタイム・スライスT2及びT5の間INTSDC#信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。NORゲート1806はビットG CNTRL[2]及びG CNTRL[5]を受信する。ANDゲート1796は反転されたINTSDD#信号及び反転されたMASKD信号を受信する。ANDゲート1796の別の入力はNORゲート1808の出力に接続され、これはタイム・スライスT3及びT6の間INTSDD#信号をマスクする。なぜなら、カード割り込み要求がこれらのタイム・スライスに含まれないからである。NORゲート1808はビットG CNTRL[3]及びG CNTRL[6]を受信する。
ANDゲート1790〜1796の出力は、出力がDタイプのフリップフロップ1800の信号入力へ接続されるORゲート1798への入力として接続される。フリップフロップ1800はCLK信号の正の縁部でクロックされ、フリップフロップ1800のセット入力はRST信号を受信する。フリップフロップ1800の反転出力はINTSDIIO#信号を供給する。
【0206】
図120に示されるように、割り込み出力ブロック114はカウンタ1745と共通の設計の3ビット・カウンタ1820を含む。カウンタ1820は信号CLKの正の縁部でクロックされ、出力信号G CNTR2[2:0]を供給し、INTSYNC#信号によってリセットされた後に0から7までカウントを開始する。
INTSYNCCPU#信号を供給するために、割り込み出力ブロック114はCLK信号の正の縁部でクロックされるDタイプのフリップフロップ1822を含む。フリップフロップ1822のセット入力はRST信号を受信し、フリップフロップ1822の信号入力はINTSYNCCABLE#信号を受信する。フリップフロップ1822の非反転出力はINTSYNCCPU#信号を供給する。
INTSDCPU#信号を供給するために、割り込み出力ブロック114はCLK信号の正の縁部でクロックされるDタイプのフリップフロップ1824を含む。フリップフロップ1824のセット入力はRST信号を受信し、フリップフロップ1824の信号入力はINTSDCABLE#信号を受信する。フリップフロップ1824の非反転出力はINTSDCPU#信号を供給する。
割り込み受信ブロック114によって受信された割り込み要求は非同期又はシリアルで割り込みコントローラ1900に供給される。非同期モードにおいて、図122に示されるように、割り込み要求はPCIバス24の4つのPCI割り込みラインにマップされる(一般に「バーバー・ポーリング(barber poling)」と呼ばれる)。
【0207】
INTSDCABLE#信号によって供給される割り込み情報を保持するために、割り込み出力ブロック114は8ビット・レジスタ1826を含む。すべての信号入力はINTSDCABLE#信号を受信する。ビット0〜7のロード・イネーブル入力はビットG CNTR[0]〜G CNTR[7]をそれぞれ受信する。従って、例えば、タイム・スライスT4の間、ビット3にはINTSDCABLE#信号によって表される値がロードされる。ビット0(INT A1信号によって表される)及びビット4(INT A2信号によって表される)はCPUINTA#信号にマップされる。ビット1(INT B1信号によって表される)及びビット5(INT B2信号によって表される)はCPUINTB#信号にマップされる。ビット2(INT C1信号によって表される)及びビット6(INT C2信号によって表される)はCPUINTC#信号にマップされる。ビット3(INT D1信号によって表される)及びビット7(INT
D2信号によって表される)はCPUINTD#信号にマップされる。
4つのORゲート1828〜1834は信号CPUINTA#、CPUINTB#、CPUINTC#及びCPUINTD#を供給し、それらはPCIバス24のPCI割り込みラインINTA#、INTB#、INTC#及びINTD#にそれぞれ供給される。ORゲート1828はANDゲート1836の出力に接続された1つの入力を有する。ANDゲートは反転されたCM信号を受信する。信号CMはブリッジ・チップ26のコンフィギュレーション・レジスタのビットによって供給され、アサートされる又はハイに駆動されることによって非同期モードを示し、デアサートされる又はローに駆動されることによって同期モードを示す。また、ANDゲート1836は信号INT A1、信号INT A2及び信号ECC ERR UP信号(ケーブル送信におけるエラーを示すために用いられる)を受信する。
【0208】
ORゲート1828はANDゲート1838の出力に接続された入力を有する。ANDゲート1838はCM信号及びINTSDCPU#信号を受信する。
ANDゲート1838の別の入力はORゲート1848の出力に接続される。ORゲート1848はECC ERR UP信号及びビットG CNTR2[0]を受信する。
ORゲート1830はANDゲート1840の出力に接続された1つの入力と、ANDゲート1842の出力に接続された1つの入力とを有する。ANDゲート1840は反転されたCM信号、信号INT B1及び信号INT B2を受信する。ANDゲート1842は信号CM及び反転されたビットG CNTR2[0](シリアル・モードの間に「sync」信号を割り込みコントローラ1900に供給するために用いられる)を受信する。
ORゲート1832はANDゲート1844の出力に接続された1つの入力と、CM信号を受信する1つの入力とを有する。ANDゲート1844は反転されたCM信号、信号INT C1及び信号INT C2を受信する。ORゲート1834はANDゲート1846の出力に接続された1つの入力と、CM信号を受信する1つの入力とを有する。ANDゲート1846は反転されたCM信号、信号INT D1及び信号INT D2を受信する。
【図面の簡単な説明】
【図1】コンピュータ・システムのブロック図である。
【図2】図1のコンピュータ・システムの拡張ボックスのブロック図である。
【図3】コンピュータ・システムのブリッジ・チップのブロック図である。
【図4】4図、各ブリッジ・チップの待ち行列ブロックのブロック図である。
【図5】ブリッジ・チップにおけるクロック送信スキームのブロック図である。
【図6】各ブリッジ・チップのクロック・ジェネレータのブロック図である。
【図7】ブリッジ・チップを接続するケーブルを介してデータを伝送するための、各ブリッジ・チップのマスタ・ケーブル・インタフェースのブロック図である。
【図8】マスタ・ケーブル・インタフェースにおける信号のタイミング・チャートである。
【図9】ケーブルを介して伝送されるデータを受信するための、各ブリッジ・チップのスレーブ・ケーブル・インタフェースのブロック図である。
【図10】スレーブ・ケーブル・インタフェースにおける受信用ロジックへの入力及び出力ポインタを生成するロジックのブロック図である。
【図11】スレーブ・ケーブル・インタフェースにおける信号のタイミング・チャートである。
【図12】入力及び出力ポインタ及びそれらと受信ケーブル・データの関係を示すタイミング・チャートである。
【図13】各ブリッジ・チップにおける入力及び出力パッドとフリップ・フロップの配置のブロック図である。
【図14】ケーブルを介して伝送される情報のテーブルの図である。
【図15】Aは、シングル・アドレス・サイクル・トランザクションに関連するケーブル信号によって伝送される情報のタイプを表すテーブルの図である。Bは、デュアル・アドレス・サイクル・トランザクションに関連するケーブル信号によって伝送される情報のタイプを表すテーブルの図である。
【図16】ケーブルに関連するパラメータのテーブルの図である。
【図17】エラー検出及び修正回路の論理図である。
【図18】エラー検出及び修正回路におけるチェック・ビット生成用のパリティ−チェック・マトリクスの図である。
【図19】エラー検出及び修正回路における固定ビット生成用のシンドローム・テーブルの図である。
【図20】Aは、ラウンド−ロビン・アービトレーション・スキームを表す状態図である。Bは、2レベル・アービトレーション・スキームを示す状態図である。
【図21】各ブリッジ・チップにおけるアービタの論理図である。
【図22】アービタにおけるグラント状態マシンの状態図である。
【図23】アービタにおけるレベル1アービトレーション状態マシンの状態図である。
【図24】現在のマスタに基づいた新しい許可(グラント)信号の生成を表すテーブルの図である。
【図25】マスク・ビット及び多重スレッド・マスタ表示ビットを生成するロジックのブロック図である。
【図26】Aは、マスクされたビットを生成するための回路の論理図である。Bは、多層のバスをもつコンピュータ・システムのブロック図である。
【図27】Aは、スロットに挿入される拡張カードの側面図である。B及びCは、レバー回路の略図である。
【図28】拡張ボックスの回路の略図である。
【図29】拡張ボックスの回路の略図である。
【図30】拡張ボックスの回路の略図である。
【図31】拡張ボックスの回路の略図である。
【図32】拡張ボックスの回路の略図である。
【図33】拡張ボックスの回路の略図である。
【図34】拡張ボックスの回路の略図である。
【図35】拡張ボックスの回路の略図である。
【図36】拡張ボックスの回路からの状態図である。
【図37】拡張ボックスの回路からの波形図である。
【図38】拡張ボックスの回路の略図である。
【図39】拡張ボックスの回路からの波形図である。
【図40】拡張ボックスの回路からの状態図である。
【図41】拡張ボックスの回路からの状態図である。
【図42】拡張ボックスの回路からの状態図である。
【図43】拡張ボックスの回路からの状態図である。
【図44】拡張ボックスの回路からの状態図である。
【図45】拡張ボックスの回路からの状態図である。
【図46】拡張ボックスの回路の略図である。
【図47】拡張ボックスの回路からの状態図である。
【図48】拡張ボックスの回路からの波形図である。
【図49】拡張ボックスの回路の略図である。
【図50】コンピュータ・システムにおけるバス・ハング状態の検出に応答して呼び出されるマスク不可能割り込みハンドラのフローチャートである。
【図51】コンピュータ・システムのロックアップ事象によって呼び出されるBIOSルーチンのフローチャートである。
【図52】バス・ハング状態またはコンピュータのロックアップ事象に応答して呼び出されるBIOS分離ルーチンのフローチャートである。
【図53】各ブリッジ・チップのバス・ウオッチャのブロック図である。
【図54】バスをアイドル状態に戻すためのバス・ウオッチャにおけるロジックの状態図である。
【図55】バス・ウオッチャの状態信号の論理図である。
【図56】障害分離回路におけるバス履歴FIFO及びバス状態ベクトルFIFOの論理図である。
【図57】バス履歴及び状態ベクトルの情報が利用可能なときにその旨を示すための準備完了信号を生成する回路の論理図である。
【図58】パワー・ダウンしているか又は空のスロットにバス番号を割り当てるルーチンのフローチャートである。
【図59】コンピュータ・システムにメモリ・スペースを割り当てるルーチンのフローチャートである。
【図60】コンピュータ・システムにI/Oスペースを割り当てるルーチンのフローチャートである。
【図61】パワー・アップされたカードを処理するルーチンのフローチャートである。
【図62】PCI−PCIブリッジ回路のコンフィギュレーション・スペースのブロック図である。
【図63】Aは、コンピュータ・システムのブロック図である。Bは、バス番号割り当てツリーの図である。
【図64】タイプ0及びタイプ1のコンフィギュレーション・トランザクションを示すブロック図である。
【図65】1次バスから2次バスへのアドレスのマッピングを表すテーブルの図である。
【図66】A、及びBは、タイプ0及びタイプ1のコンフィギュレーション・サイクルを処理する回路の論理図である。
【図67】Aは、バス性能パラメータを計算できるように情報を記憶する回路のブロック図である。Bは、プリフェッチ・カウンタのブロック図である。
【図68】コンピュータ・システムのブロック図である。
【図69】PCIアービトレーション・スキームのブロック図である。
【図70】バッファ・フラッシュ・ロジック・ブロックの略図である。
【図71】ケーブル・デコーダの略図である。
【図72】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図73】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図74】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図75】制御ロジックを含む、ポステド・メモリ書き込み待ち行列の略図である。
【図76】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図77】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図78】制御ロジックを含む、遅延された要求待ち行列の略図である。
【図79】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図80】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図81】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図82】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図83】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図84】制御ロジックを含む、遅延された完了待ち行列の略図である。
【図85】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図86】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図87】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図88】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図89】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図90】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図91】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図92】マスタ・サイクル・アービタの略図及びテーブルの図である。
【図93】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図94】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図95】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図96】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図97】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図98】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図99】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図100】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図101】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図102】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図103】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図104】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図105】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図106】待ち行列ブロック−PCIバス間インタフェースの略図及び状態遷移図である。
【図107】拡張バスに接続されたバス・デバイスを示す略ブロック図である。
【図108】割り込み要求を送信する回路を示す略ブロック図である。
【図109】デバイス選択ロジックの略図である。
【図110】レジスタの略ブロック図である。
【図111】レジスタの略ブロック図である。
【図112】レジスタの略ブロック図である。
【図113】レジスタの略ブロック図である。
【図114】コンピュータ・システムに関する波形を示すグラフである。
【図115】多重化回路の略図である。
【図116】割り込み受信ブロックの略図である。
【図117】割り込み受信ブロックの略図である。
【図118】割り込み受信ブロックの略図である。
【図119】割り込み受信ブロックの略図である。
【図120】割り込み出力ブロックの略図である。
【図121】割り込み要求信号の時分割多重化を示す図である。
【図122】割り込み要求のマッピングを示す図である。
【図123】拡張バスに接続されたバス・デバイスを示す略ブロック図である。
Claims (3)
- システムにおいて、
中央処理ユニット(14)と、
バス(32)と、
回路カード(807)を受容するためのコネクタであって、複数の外部接続端子を備えているコネクタ(34)と、
結合されたときに、コネクタ(34)からの回路カード(807)の抜き取りを阻止するよう構成されたクランプと、
クランプの結合状態を監視し、かつ、クランプの結合状態に基づいてコネクタ(34)への電力の供給を制御する制御回路(43)と、
制御回路(43)で監視したクランプの結合状態に基づいて、クランプが結合されている場合にバス(32)をコネクタ(34)に接続し、クランプが結合されていない場合にバス(32)をコネクタ(34)から分離する接続/分離回路と
からなり、
接続/分離回路は、バス(32)のクロック・ライン及び他のラインを遮断する手段であって、クロックが遮断されかつ電力供給が遮断される前に、バスの他のラインが遮断されるようにする手段を備えている
ことを特徴とするシステム。 - コンピュータ・システム(10)であって、請求項1記載のシステムを備えていることを特徴とするコンピュータ・システム。
- 請求項2記載のコンピュータ・システムにおいて、接続/分離回路は、中央処理ユニット(14)に対して割り込み要求を提供して、結合状態の変更時点を通知するよう構成されていることを特徴とするコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/658,602 US5943482A (en) | 1996-06-05 | 1996-06-05 | Expansion card insertion and removal |
US658602 | 1996-06-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10124188A JPH10124188A (ja) | 1998-05-15 |
JP3895006B2 true JP3895006B2 (ja) | 2007-03-22 |
Family
ID=24641923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16211597A Expired - Fee Related JP3895006B2 (ja) | 1996-06-05 | 1997-06-05 | 回路カード着脱時の電力制御機能を備えたシステム及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5943482A (ja) |
EP (1) | EP0811931B1 (ja) |
JP (1) | JP3895006B2 (ja) |
DE (1) | DE69721381T2 (ja) |
TW (1) | TW343295B (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134615A (en) * | 1997-05-13 | 2000-10-17 | Micron Electronics, Inc. | System for facilitating the replacement or insertion of devices in a computer system through the use of a graphical user interface |
US6205500B1 (en) * | 1997-09-24 | 2001-03-20 | Compaq Computer Corp. | System and method for electrically isolating a device from higher voltage devices |
US6105090A (en) * | 1997-11-17 | 2000-08-15 | International Business Machines Corporation | Method and apparatus for activating a power interlock system and automatically disabling a power supply in a computer having PCI slots |
US6247081B1 (en) * | 1998-02-19 | 2001-06-12 | Nortel Networks Limited | Method and apparatus for installing drivers without requiring system re-boot |
US5996035A (en) * | 1998-05-22 | 1999-11-30 | International Business Machines Corporation | Hot-plug voltage and power management control using detected connection status |
US6148350A (en) * | 1998-05-29 | 2000-11-14 | 3Com Corporation | System for allocating an integer unit of memory greater than a requested size and filling the extra space due to difference in sizes with extraneous data |
US6185104B1 (en) | 1998-12-24 | 2001-02-06 | Hewlett-Packard Company | On-line replacement apparatus for printed circuit cards |
US6401157B1 (en) * | 1999-04-30 | 2002-06-04 | Compaq Information Technologies Group, L.P. | Hot-pluggable component detection logic |
US6718274B2 (en) | 1999-08-05 | 2004-04-06 | 2Micro International Limited | Integrated PC Card host controller for the detection and operation of a plurality of expansion cards |
US6470284B1 (en) * | 1999-08-05 | 2002-10-22 | 02 Micro International Limited | Integrated PC card host controller for the detection and operation of a plurality of expansion cards |
US6792494B2 (en) * | 2001-03-30 | 2004-09-14 | Intel Corporation | Apparatus and method for parallel and serial PCI hot plug signals |
US7035953B2 (en) * | 2002-05-03 | 2006-04-25 | Hewlett-Packard Development Company, L.P. | Computer system architecture with hot pluggable main memory boards |
US7069360B2 (en) * | 2002-08-30 | 2006-06-27 | Intel Corporation | Method and apparatus for detecting a device's ability to run at a selected frequency in a PCI non-inhibit bus-connect mode |
US7257659B2 (en) | 2003-12-31 | 2007-08-14 | Intel Corporation | Method for signaling PCI/PCI-X standard hot-plug controller (SHPC) command status |
US7064949B2 (en) * | 2004-02-12 | 2006-06-20 | Dell Products L.P. | Progressive impedance connector |
US7296101B2 (en) * | 2004-02-17 | 2007-11-13 | Intel Corporation | Method and system for using a patch module to process non-posted request cycles and to control completions returned to requesting device |
JP4624171B2 (ja) * | 2005-04-27 | 2011-02-02 | Necインフロンティア株式会社 | 情報処理装置、情報処理システムおよびプログラム |
US7716543B2 (en) * | 2005-11-02 | 2010-05-11 | Lsi Corporation | Methods and systems for eliminating test system reboots between functional tests of host adapter boards |
CN101331438B (zh) * | 2006-02-23 | 2010-08-18 | 富士通株式会社 | 维护指导显示装置、维护指导显示方法 |
US7624217B2 (en) * | 2007-02-12 | 2009-11-24 | Microsoft Corporation | Adaptive boot sequence |
TW200928664A (en) * | 2007-12-27 | 2009-07-01 | Asustek Comp Inc | Computer system and power-saving method thereof |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3767974A (en) * | 1972-01-03 | 1973-10-23 | Cogar Corp | Insertion and extraction lever for printed circuit cards |
US3853379A (en) * | 1973-07-20 | 1974-12-10 | Itt | Printed circuit board connector assembly |
JPS5547017Y2 (ja) * | 1977-11-21 | 1980-11-05 | ||
DE3409021A1 (de) * | 1984-03-13 | 1985-09-26 | Brown, Boveri & Cie Ag, 6800 Mannheim | Vorrichtung zur befestigung und zum auswerfen von elektronischen baugruppen |
US4596907A (en) * | 1984-04-30 | 1986-06-24 | At&T Bell Laboratories | Combination switch/latch for controlling circuit module/energization while securing module to support housing |
US4628413A (en) * | 1985-12-18 | 1986-12-09 | Ncr Corporation | Card cassette ejector apparatus |
EP0241905A3 (en) * | 1986-04-14 | 1990-04-25 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Circuit board for on-line insertion in computer system |
US4835737A (en) * | 1986-07-21 | 1989-05-30 | American Telephone And Telegraph Company, At&T Bell Laboratories | Method and apparatus for controlled removal and insertion of circuit modules |
US5247619A (en) * | 1988-07-12 | 1993-09-21 | Hitachi, Ltd. | Insertion and removal of a circuit device into a bus network |
US4999787A (en) * | 1988-07-15 | 1991-03-12 | Bull Hn Information Systems Inc. | Hot extraction and insertion of logic boards in an on-line communication system |
US4875867A (en) * | 1989-01-26 | 1989-10-24 | Tektronix, Inc. | Extension handle for a circuit board injector/ejector mechanism |
US5010426A (en) * | 1989-02-03 | 1991-04-23 | Zenith Data Systems Corporation | Installation mechanism for removable computer drive module |
JPH0366420U (ja) * | 1989-10-31 | 1991-06-27 | ||
US5003431A (en) * | 1989-12-18 | 1991-03-26 | Unisys Corporation | Insertion, extraction, and clamping apparatus for electrical modules |
US5191970A (en) * | 1991-09-27 | 1993-03-09 | At&T Bell Laboratories | Apparatus for equipment unit protection switching |
JPH0821015B2 (ja) * | 1992-01-20 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータならびにそのシステム再構成化装置および方法 |
WO1993015459A1 (en) * | 1992-02-03 | 1993-08-05 | Micro Industries | Live insertion of computer modules |
US5454080A (en) * | 1992-02-10 | 1995-09-26 | International Business Machines Corporation | Removable hard disk drive system with circuit for hot insertion and removal responsive to contacts of zero-insertion-force connector on the lateral side of the drive |
US5317482A (en) * | 1992-12-07 | 1994-05-31 | Smith Industries | Clamp activator and circuit card extractor |
US5317483A (en) * | 1993-01-26 | 1994-05-31 | Dell U.S.A., L.P. | Computer expansion card support structure |
US5473499A (en) * | 1993-06-30 | 1995-12-05 | Harris Corporation | Hot pluggable motherboard bus connection method |
US5513329A (en) * | 1993-07-15 | 1996-04-30 | Dell Usa, L.P. | Modular host local expansion upgrade |
US5530302A (en) * | 1994-01-13 | 1996-06-25 | Network Systems Corporation | Circuit module with hot-swap control circuitry |
US5428507A (en) * | 1994-04-22 | 1995-06-27 | Louis R. Chatel | Front panels for rack-mounted printed circuit boards |
US5555510A (en) * | 1994-08-02 | 1996-09-10 | Intel Corporation | Automatic computer card insertion and removal algorithm |
DE4428529C1 (de) * | 1994-08-12 | 1995-08-24 | Schroff Gmbh | Vorrichtung zum Ausziehen einer Steckbaugruppe |
GB9417194D0 (en) * | 1994-08-25 | 1994-10-12 | Dzus Fastener Europe | Lever mechanism |
US5581712A (en) * | 1994-11-17 | 1996-12-03 | Intel Corporation | Method and apparatus for managing live insertion of CPU and I/O boards into a computer system |
US5625238A (en) * | 1995-02-03 | 1997-04-29 | Motorola, Inc. | Apparatus for non-disruptively interconnecting perpheral device modules with a host device |
-
1996
- 1996-06-05 US US08/658,602 patent/US5943482A/en not_active Expired - Lifetime
-
1997
- 1997-06-04 DE DE69721381T patent/DE69721381T2/de not_active Expired - Lifetime
- 1997-06-04 EP EP97303797A patent/EP0811931B1/en not_active Expired - Lifetime
- 1997-06-05 TW TW086107766A patent/TW343295B/zh not_active IP Right Cessation
- 1997-06-05 JP JP16211597A patent/JP3895006B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10124188A (ja) | 1998-05-15 |
TW343295B (en) | 1998-10-21 |
DE69721381T2 (de) | 2004-01-15 |
EP0811931B1 (en) | 2003-05-02 |
EP0811931A3 (en) | 1997-12-29 |
US5943482A (en) | 1999-08-24 |
DE69721381D1 (de) | 2003-06-05 |
EP0811931A2 (en) | 1997-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6032271A (en) | Method and apparatus for identifying faulty devices in a computer system | |
JP3895005B2 (ja) | 拡張カードの接続方法および拡張カードを接続可能なコンピュータ・システム | |
EP0817058B1 (en) | Computer system bus performance monitoring | |
JP3895006B2 (ja) | 回路カード着脱時の電力制御機能を備えたシステム及び方法 | |
US5822571A (en) | Synchronizing data between devices | |
US5872941A (en) | Providing data from a bridge to a requesting device while the bridge is receiving the data | |
US6055596A (en) | Expansion card space reservation | |
US6108741A (en) | Ordering transactions | |
US6021480A (en) | Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line | |
US6055590A (en) | Bridge circuit comprising independent transaction buffers with control logic adapted to store overflow data in second buffer when transaction size exceeds the first buffer size | |
US6075929A (en) | Prefetching data in response to a read transaction for which the requesting device relinquishes control of the data bus while awaiting data requested in the transaction | |
US5911055A (en) | Using subordinate bus devices that are connected to a common bus | |
US5987539A (en) | Method and apparatus for flushing a bridge device read buffer | |
US6052513A (en) | Multi-threaded bus master | |
US6035362A (en) | Storing data associated with one request while continuing to store data associated with a previous request from the same device | |
US5872939A (en) | Bus arbitration | |
US5903906A (en) | Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written | |
EP0811929A2 (en) | Bus device configuration in a bridge between two buses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040514 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040514 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061121 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061130 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061213 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091222 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101222 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111222 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121222 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131222 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |