(57)【要約】      （修正有）【課題】  一組のコンフィギュレーション値を修正し、ドライブする。【解決手段】  コンピュータシステムの複数のエージェントをコンフィギュレーションするための装置３００が、一組のコンフィギュレーション値を記憶するための第１の記憶装置３１５と、バス３０２から上記一組のコンフィギュレーション値を取り込むための第２の記憶装置３３３を具備する。コンフィギュレーション値は、装置３００内のインタフェース論理回路３１０によってバス３０２上にドライブされ、上記バス３０２から取り出される。インタフェース論理回路３１０は、装置３００内のレジスタ３３６がアクティブになったとき、コンフィギュレーション値をバス３０２上にドライブする。システム電源オン時には、第１の記憶装置３１５は第１組の値がデフォルトとして設定される。その後、これらの値はバス３０２上にドライブされ、バス３０２上の各エージェントによって取り込まれる。【選択図】  図３
2007035058.tif 000002
【特許請求の範囲】
【請求項１】
複数のエージェントに接続されたバス（３０２）を有したコンピュータ・システムの前記複数のエージェントを該複数のエージェントに共通の複数のコンフィギュレーション値で構成するための装置であって、この装置は、前記複数のエージェントの内の所定の少なくとも一つのエージェント（３００）内に配置されるものであるとともに、
前記バス（３０２）上にドライブされるべき前記複数のコンフィギュレーション値を記憶する第１の記憶手段（３３６）と、
前記所定のエージェント（３００）を含む前記複数のエージェントのそれぞれにおいて複数の異なる動作パラメータを構成するために該複数のエージェントのそれぞれによって取り込み記憶するようにするため、前記第１の記憶手段（３３６）から前記複数のコンフィギュレーション値を前記バス（３０２）上にドライブし、かつ前記装置のオペレーション中に前記第１の記憶手段（３３６）の変更を制御するためのインターフェース論理手段（３１０）と；
前記バス（３０２）から取り込んだ前記複数のコンフィギュレーション値を記憶する第２の記憶手段（３３３）と；
前記インターフェース論理手段（３１０）が、前記第１の記憶手段（３３６）から前記複数のコンフィギュレーション値を前記バス（３０２）上にいつドライブするかを決定し、かつ前記第２の記憶手段（３３３）が前記複数のコンフィギュレーション値をいつ記憶するかを決定するための第１のレジスタ（３３０）と；
から構成され、前記所定のエージェント（３００）は該所定のエージェント（３００）の複数の動作パラメータを決定するため、前記第２の記憶手段に記憶された複数のコンフィギュレーション値を使用することを特徴とする装置。
【請求項２】
請求項１記載の装置において、
前記インターフェース論理手段（３１０）は、前記バス（３０２）上への前記複数のコンフィギュレーション値のドライブ中、前記第２の記憶手段（３３３）に前記複数のコンフィギュレーション値を記憶させるためのものでもあることを特徴とする装置。
【請求項３】
請求項１記載の装置において、
前記第１の記憶手段（３３６）が第２のレジスタを、前記第２の記憶手段（３３３）が第３のレジスタを備えていることを特徴とする装置。
【請求項４】
請求項１記載の装置において、
前記第１のレジスタ（３３０）が書き込まれたときに、前記インターフェース論理手段（３１０）がバス（３０２）上に複数のコンフィギュレーション値をドライブすることを特徴とする装置。
【請求項５】
請求項１記載の装置において、
前記所定ののエージェントはバス・ブリッジ（３００）であり、複数のエージェントの他の各々のエージェントはプロセッサであることを特徴とする装置。
【請求項６】
請求項１記載の装置において、
前記インターフェース論理手段（３１０）は、さらに、前記複数のエージェントに、前記複数のコンフィギュレーション値を取り込み記憶する時点を示すリセット信号をアサートすることを特徴とする装置。
【請求項７】
所定のエージェント（３００）を含む複数のエージェントに接続されたバス（３０２）を有したコンピュータ・システムであって、前記所定のエージェント（３００）が前記複数のエージェントの全てについての構成完了の責任を負うものであるコンピュータ・システムの前記複数のエージェントを第１の複数のコンフィギュレーション値で同時に構成する方法であって、この方法は、
（ａ）第２の複数のコンフィギュレーション値を前記バス（３０２）上にドライブするステップ（５１０）と、
（ｂ）第２の複数のコンフィギュレーション値とは異なる前記第１の複数のコンフィギュレーション値を決定するために、第２の複数のコンフィギュレーション値に従ってＢＩＯＳ内の第１の記憶手段にアクセスするステップ（５２０）とを有し、さらにこの方法は、
（ｃ）前記ステップ（ｂ）で決定された第１の複数のコンフィギュレーション値を、前記所定のエージェント（３００）によって、該所定のエージェント内に配置された第２の記憶手段（３３３）に記憶するステップ（５３０）と；
（ｄ）前記所定のエージェント（３００）によって、第２の記憶手段（３３３）から前記第１の複数のコンフィギュレーション値を前記バス（３０２）上にドライブするステップ（５５０）と；
（ｅ）前記所定のエージェント（３００）を含む複数のエージェントのそれぞれによって同時に、前記バス（３０２）から前記第１の複数のコンフィギュレーション値を取り込むステップと；
（ｆ）前記所定のエージェント（３００）を含む複数のエージェントのそれぞれに対する複数の異なる動作パラメータを同時に定義するために、前記第１の複数のコンフィギュレーション値を該所定のエージェント（３００）を含む前記複数のエージェントのそれぞれによって同時に記憶するステップと；
から構成されることを特徴とする方法。
【請求項８】
請求項７記載の方法において、
前記ドライブするステップ（ｄ）は、前記第１の複数のコンフィギュレーション値を前記バス（３０２）上にドライブさせるようレジスタ（３３０）をアクティブにするステップを含むことを特徴とする方法。
【請求項９】
請求項８記載の方法において、
前記前記レジスタ（３３０）をアクティブにするステップは、該レジスタ（３３０）を更新するステップを含むことを特徴とする方法。
【請求項１０】
請求項７記載の方法において、
前記取り込むステップ（ｅ）は、前記所定のエージェント（３００）を含む複数のエージェントの各々が同一のクロック・サイクルで前記第１の複数のコンフィギュレーション値を取り込むステップを含むことを特徴とする方法。
【請求項１１】
請求項７記載の方法において、さらに
前記所定のエージェント（３００）によって、前記第１の複数のコンフィギュレーション値と同時にリセット信号をバス（３０２）上にドライブするステップを含み、前記所定のエージェント（３００）を含む各エージェントは該リセット信号に応答して前記第１の複数のコンフィギュレーション値を取り込むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関するものである。より詳しくは、本発明はコンピュータシステム内にある複数のエージェントのジャンパレスコンフィギュレーションに関する。
【背景技術】
【０００２】
現代のコンピュータシステムは、内部にシステムバスに接続された複数のエージェントを有する。これらのエージェントには、例えばマイクロプロセッサ、メモリデバイス、入出力（I/O）装置等が含まれる。コンピュータシステムが正しく機能するためには、これらのエージェントが同時に動作してそれぞれのタスクを遂行しなければならない。
【０００３】
コンピュータシステム内のそれらのエージェントが同時に動作するようにするための一つの確実な方法は、一組のコンフィギュレーション値を設定することである。これらのコンフィギュレーション値は、一般に、エラーチェッキングプロトコルのような全てのエージェント間で一致しなければならない項目を含む。従って、システム内のエージェントは、これらのコンフィギュレーション値がシステム内の各エージェントについて同じであるとき、正しく同時に動作する。
【０００４】
エージェント間でコンフィギュレーション値の一致が必要なことに加えて、一部のコンフィギュレーション値については、全てのエージェントが同時性をもって一致しなければならない。例えば、ある共通のコンフィギュレーション値はシステムバスを介しての転送に関するエラーチェッキングプロトコルを定義する。もしこのプロトコルについて一致に達しないと、ターゲットエージェントはソースエージェントに対してエラーが生じたことを知らせることができないであろう。さらに、各エージェントは、エラーチェッキングプロトコルについて同時に一致に達しなければならない。同時に一致に達しないと、それらのエージェントが異なるエラーチェッキングプロトコルを使用する期間が存在することになる。これらの期間中は、エージェントはエラーを相互に正しく知らせることができない。
【０００５】
これらのコンフィギュレーション値（すなわち全てのエージェントが同時性をもって一致しなければならないコンフィギュレーション値）を設定するための一つの共通の方法は、各エージェントにジャンパをセットすることである。ジャンパを用いるのに、システム内の各エージェントには、システムユーザがいじることが可能な一組のピンを設ける。適切な組合わせのピンをジャンパと接続することによって、システムユーザはそのエージェントにとって適切なコンフィギュレーション値を設定することができる。各エージェントにジャンパを正しくセットすることによって、システムユーザはこれらのコンフィギュレーション値を各エージェントについて同じになるように設定することができる。例えば、システムがパワーアップする時、各エージェントは適切なコンフィギュレーション値を持ち、それらのコンフィギュレーション値が同時に（すなわちシステムパワーアップ時に）設定される。
【０００６】
ある特定のエージェントのコンフィギュレーション値を変えるためには、ユーザはジャンパのセッティングを変えなければならない。従って、バス上の全てのエージェントについてコンフィギュレーション値を変更するには、全てのエージェントの全てのジャンパを物理的にいじることが必要である。さらに、これらのジャンパのセッティングは、通常システムの電源をオフにして変えなければならない。システムが動作中にジャンパのセッティングを変えることが物理的に可能な場合もあるが、このような処置の仕方では、全てのコンフィギュレーション値が同時に変更される結果にはつながらないであろう。さらに、システムの動作中にジャンパを変えると、予測不可能なシステム挙動を引き起こすことがある。
【０００７】
その上、ジャンパの使用は次のような2つの面でシステムのコスト増を招く。第一に、ピンとジャンパを設けることは、それだけ余分の材料及び製造コストを要する。第二には、メーカがシステムのコンフィギュレーション（すなわちジャンパのセッティング）に手間を要し、これがコスト増につながる。この後者のコストは、メーカではなく、エンドユーザがコンフィギュレーションを行うのであれば、かからないかもしれないが、ユーザによるそのような作業の必要はユーザの不便を増大させる。
【０００８】
現代のコンピュータシステムの性能は絶えず向上し続けているので、コンピュータシステムの利用も拡大の一途をたどっている。従って、広範多様な応用及び用途に対応すべく容易に変更・修正できるようなシステムを提供することによって得られる利益は決して小さくないと思われる。しかしながら、用途を変えるためには、システムに記憶されたコンフィギュレーション値を変更することが必要な場合がある。そのために、システムユーザが異なる用途に対応すべくコンフィギュレーション値を容易に変えることが可能なシステムを提供することは少なからず役に立つと考えられる。本発明は、このような課題を解決しようするものである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
さらに、一部の分野においては、コンピュータシステムの用途をシステム動作時に変更することが必要な場合がある。このような状況においては、コンフィギュレーション値を変えなければならない場合もある。従って、システム動作時にコンフィギュレーション値を迅速かつ簡単に変更することが可能なシステムを提供することは有意義なことであろう。本発明は、このような課題を解決しようとするものである。
【課題を解決するための手段】
【００１０】
本発明は、コンピュータシステム内の複数のエージェントをコンフィギュレーションするための方法及び装置にある。
本発明の一実施態様においては、コンピュータシステムは、バスと一組のコンフィギュレーション値を記憶するための第１の記憶装置を有する装置とを含む。コンフィギュレーション値は、この装置内にあるインタフェース論理回路によってバス上にドライブされる。また、該装置は、バスから上記一組のコンフィギュレーション値を取り込むための記憶装置も有する。インタフェース論理回路は、該装置内のレジスタがアクティブになったとき、コンフィギュレーション値をバス上にドライブする。
【発明を実施するための最良の形態】
【００１１】
システムの電源オン時に、第１の記憶装置のコンフィギュレーション値はデフォルトとして第１組の値になる。次に、これらの値はバス上にドライブされ、バス上の各エージェントによって取り込まれる。この第１組のコンフィギュレーション値は、一定の初期化プログラムにアクセスし、実行するための必要パラメータをシステムに与える。これらの初期化プログラムは、第１の記憶装置に記憶されたコンフィギュレーション値を変更することによって、第１の記憶装置にシステムの所望のコンフィギュレーション値をセットアップすることができる。
【００１２】
初期化プログラムが第１の記憶装置の値を変更したならば、本発明の装置内にあるレジスタがアクティブになる。このレジスタは、インタフェース論理回路をして第１の記憶装置に記憶された値をシステムバス上へドライブさせる。バス上の各エージェントは、本発明の装置を含めて、これらの値を取り込む。本発明の装置は、これらの値を第２の記憶装置に記憶し、この第２の記憶装置に記憶された値に従って動作し始める。
【００１３】
それ以後のシステムのコンフィギュレーション値の変更は、ソフトウェアによってシステムの動作中に行うことができる。これらの変更は、第１の記憶装置中の値を修正することによって行われる。値の修正が終了すると、ソフトウェアが装置内の適切なレジスタをアクティブにすることによって、バス上の全てのエージェントにバスから新しいコンフィギュレーション値を取り込ませる。
【実施例１】
【００１４】
以下の詳細な説明においては、本発明の完全な理解を図るため、具体的ないしは特定的な詳細事項を多数記載する。しかしながら、本発明がそれらの詳細事項の記載なしに実施可能であることは、当業者にとって明らかであろう。その他の場合においては、本発明の態様が不明確になるのを避けるため、周知の方法、手順、構成要素・部分、及び回路は、詳細な説明を省略した。
【００１５】
以下の詳細な説明の一部分は、コンピュータメモリ内におけるデータビットに対する演算のアルゴリズム及び記号表現によって記載する。これらのアルゴリズム及び記号表現は、データ処理技術分野の当業者がその仕事や研究の内容を他の当業者に最も効果的に伝達するために使用する手段である。本願において、また一般に、アルゴリズムは所望の結果に達する一貫した一連のステップであると考えられる。これらのステップは、物理量の物理的操作を必要とするステップである。必ずではないが、通常、これらの物理量は記憶、転送、結合、及びその他の形態の操作が可能な電気信号あるいは磁気信号の形を取る。時には、主に慣用的使用という理由から、これらの信号をビット、値、要素、記号、文字、項、数等と呼称すると好都合であることが実証されている。
【００１６】
しかしながら、これらの用語及びこれらと類似の用語は適切な物理量と対応付けられており、単にそれらの物理量に貼付される便利なラベルでしかないということに留意すべきである。以下の説明から明らかなように、別途明記しない限り、「処理」、「数値計算」、「決定」または「表示」というような用語を用いた記載は、コンピュータシステムのレジスタ及びメモリ内にある物理（電子）量によって表されるデータを処理し、同様にコンピュータシステムのメモリまたはレジスタあるいは他の同様の情報記憶、伝送または表示装置内の物理量として表される他のデータに変換するそのコンピュータシステムあるいは同様の電子計算装置の動作及びプロセスを指すものである。
【００１７】
図１は、本発明の一例のマルチプロセッサの大まかなブロック図を示す。図示のコンピュータシステムは、通常、１つまたは２つ以上のプロセッサ１０２、１０３、１０４及び１０５の間で情報を伝達するためのプロセッサ−メモリバス１０１を具備する。プロセッサ−メモリバス１０１は、アドレスバス、データバス及び制御バスを含む。プロセッサ１０２乃至１０５は、データ及び命令を一時的にオンチップ記憶するための一般にローカル（Ｌ１）キャッシュメモリと呼ばれる小さな非常に高速の内部キャッシュメモリを含む場合もある。さらに、これらのプロセッサ、例えばプロセッサ１０５には、そのプロセッサ１０５で使用するデータ及び命令を一時的に記憶するためのＬ１プロセッサより大きく、低速のセコンダリ（Ｌ２）キャッシュメモリ１０６を接続することができる。一実施形態においては、本発明は、ＩｎｔｅｌTMアーキテクチャのマイクロプロセッサをプロセッサ１０２乃至１０５として使用する。しかしながら、本発明は、任意の種類のマイクロプロセッサアーキテクチャを使用することが可能であり、あるいは数多くある中の任意のディジタル信号プロセッサ任意を使用することができる。
【００１８】
プロセッサ１０２、１０３、及び１０４は、プロセッサ１０５と類似した、あるいはこれと同じプロセッサのようなパラレルプロセッサよりなる。あるいは、プロセッサ１０２、１０３、または１０４は、ディジタル信号プロセッサのようなコプロセッサからなる。さらに、プロセッサ１０２乃至１０５は、異なる種類のプロセッサを含むことが可能である。
【００１９】
プロセッサ−メモリバス１０１は、メモリ及び入出力（Ｉ／Ｏ）サブシステムへのシステムアクセス手段である。プロセッサ−メモリバス１０１には、プロセッサ１０２乃至１０５用の情報及び命令を記憶するために使用されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置１２１（一般に主メモリと呼ばれる）へのアクセスを制御するためのメモリコントローラ１２２が接続されている。また、プロセッサ−メモリバス１０１には、磁気ディスク及びディスクドライブのような情報及び命令を記憶するための大容量記憶装置１２５、及びブラウン管（ＣＲＴ）、液晶表示装置のようなコンピュータユーザに情報を表示するための表示装置１２３を接続してもよい。
【００２０】
プロセッサ−メモリバス１０１及びシステムＩ／Ｏバス１３１には、互いに他方のバス上にある装置間でデータにアクセスし、データを転送するためのこれらの各バスに接続された装置用の通信経路またはゲートウェイを得るために、入出力（Ｉ／Ｏ）ブリッジ１２４を接続してもよい。本質的には、ブリッジ１２４は、システムＩ／Ｏバス１３１とプロセッサ−メモリバス１０１との間のインタフェースである。
【００２１】
Ｉ／Ｏバス１３１は、コンピュータシステム内の周辺装置間で情報を伝達する。システムバス１３１に接続できる装置には、ブラウン管、液晶表示装置のような表示装置１３２、コンピュータシステム内の他の装置（例えばプロセッサ１０２）に情報及びコマンド選択信号を送るためのアルファニューメリックキー及びその他のキーを有するアルファニューメリック入力装置１３３、及びカーソルの移動を制御するためのカーソル制御装置１３４が含まれる。さらに、プロッタやプリンタのようなコンピュータ画像のビジュアル表現を得るためのハードコピー装置１３５、及び情報や命令を記憶するための磁気ディスクやディスクドライブのような大容量記憶装置１３６もシステムバス１３１に接続することが可能である。
【００２２】
さらに、Ｉ／Ｏバス１４２をブリッジ１４０を介してプロセッサ−メモリバス２０１に接続してもよい。Ｉ／Ｏバス１４２は、システムＩ／Ｏバス１３１に接続された装置１３２乃至１３６のような他の周辺装置に接続することもできる。
【００２３】
本発明の一実施形態においては、Ｉ／Ｏバス１４６がブリッジ１４５を介してシステムＩ／Ｏバス１３１に接続されている。このＩ／Ｏバスは、システムＩ／Ｏバス１３１に接続された装置１３２乃至１３６のような他の周辺装置に接続することもできる。一実施形態においては、Ｉ／Ｏバス１４６は、システムＩ／Ｏバス１３１の規格（例えばＰＣＩ）とは異なる規格（例えばＥＩＳＡ）で動作する。
【００２４】
一部の実装例においては、情報を表示するための表示装置を設ける必要がない場合もある。本発明の一部の実装例では、さらに他のプロセッサあるいは他の構成要素を具備することも可能である。さらに、本発明の一部の実装例の場合、必ずしも上記の全ての構成要素を必要とすることもなければ、必ずしもこれらの全ての構成要素を含んでいない場合もある。例えば、プロセッサ１０２乃至１０４、表示装置１２３、Ｉ／Ｏバス１４２、あるいは大容量記憶装置１２５は、プロセッサ−メモリバス１０１に接続しなくてもよい。さらに、図中システムＩ／Ｏバス１３１に接続されている周辺装置の一部は、プロセッサ−メモリバス１０１に接続しなくてもよい。その上、一部の実装例では、バスは１本しかなく、その１本のバスにプロセッサ１０２乃至１０５、メモリコントローラ１２２、及び周辺装置１３２乃至１３６が接続される。
【００２５】
図２は、本発明の一例のバスクラスタシステムを示すブロック図である。本発明は、プロセッサのクラスタを１つまたは２つ以上有するマルチプロセッサ・コンピュータシステムに適用することができる。図２には、そのような２つのクラスタ２０１及び２０２が示されている。これらの各クラスタは、沢山のエージェントを含む。例えば、クラスタ２０１は、バス２１２に接続された４つのエージェント２０３乃至２０６及びクラスタマネージャ２０７からなり、そのクラスタマネージャは別のキャッシュメモリ（図示省略）を有する場合もある。エージェント２０３乃至２０６は、マイクロプロセッサ、コプロセッサ、ディジタル信号プロセッサ等を含み得る。例えば、エージェント２０３乃至２０６は図１に示すプロセッサ１０５と同じプロセッサであってもよい。クラスタマネージャ２０７及びそのキャッシュは、エージェント２０３〜２０６の間で共用される。各クラスタはメモリ−システムバス２０８に接続されており、メモリ−システムバスは、一実施形態においては図１のプロセッサ−メモリバス１０１である。これらのクラスタ２０１〜２０２は、システムインタフェース２０９を介してコンピュータシステムの他の種々の構成要素に接続されている。システムインタフェース２０９は、コンピュータシステムを外部に対してインタフェースするＩ／Ｏインタフェース２１０、及びＤＲＡＭメモリアレイのような主メモリに対するアクセス手段として機能するメモリインタフェース２１１を含む。一実施形態においては、Ｉ／Ｏインタフェース２１０は図１のブリッジ１２４であり、メモリインタフェース２１１は図１のメモリコントローラ１２２である。
【００２６】
一実施形態の場合、各クラスタは、ローカルメモリコントローラまたはローカルＩ／Ｏブリッジあるいはその両方を具備する。例えば、クラスタ２０１には、プロセッサバス２１２に接続されたローカルメモリコントローラ２６５を具備することができる。ローカルメモリコントローラ２６５は、クラスタ２０１に内蔵されたＲＡＭまたは他のローカルメモリデバイス２６６へのアクセスを管理する。また、クラスタ２０１は、プロセッサバス２１２に接続されたローカルＩ／Ｏブリッジ２６７を具備してもよい。ローカルＩ／Ｏブリッジ２６７は、ローカルＩ／Ｏバス２６８に接続された表示装置２７０または大容量記憶装置２７１のようなクラスタ内部のＩ／Ｏ装置に対するアクセスを管理する。一実施形態においては、各クラスタ２０１及び２０２は、図１に示す周辺装置１３２乃至１３６に接続されているローカルＩ／Ｏバスに接続されたローカルＩ／Ｏブリッジを有する。
【００２７】
本発明の一部の実装例は、必ずしも上記の全ての構成要素を必要とすることもなければ、必ずしもこれらの全ての構成要素を含んでいない場合もある。例えば、クラスタ２０１または２０２のエージェントの数は４つより少なくてもよい。さらに、本発明の一部の実装例では、さらに他のプロセッサや他の構成要素を具備することが可能である。
【００２８】
本発明の一実施形態においては、図１及び図２のコンピュータシステムはパーソナルコンピュータシステムである。これらのシステムは、例えば、デスクトップ型あるいはポータブル型コンピュータシステムであってもよい。
【００２９】
図３は、本発明の一実施形態の装置を示すブロック図である。図中、ブリッジ３００は、コンフィギュレーションレジスタ３０５、バスインタフェース３１０、初期化値３１５、ブリッジＩＤ３２０、ブリッジ論理回路３２３及びバスインタフェース３２５よりなる。ブリッジ３００は、インタフェース３１０を介してプロセッサバス３０２に、またインタフェース３２５を介してＩ／Ｏバス３０３に接続されている。バス３０２及び３０３は、当技術分野で周知のように、どちらもアドレスバス、データバス、及び制御バスからなる。一実施形態においては、ブリッジ３００は図１のブリッジ１２４である。また、他の実施形態においては、ブリッジ３００は図２のＩ／Ｏインタフェース２１０である。
【００３０】
以下に説明する例においては、本発明をバスブリッジに組み込んだ場合について説明する。しかしながら、当業者にとっては、本発明がコンピュータシステム内のバスに接続された他の任意のエージェントについても同様に適用可能なことは明らかであろう。さらに、一つの動作形態においては、本発明はバスに接続されたそれ自体の独立の装置を具備する。
【００３１】
バスインタフェース３２５は、Ｉ／Ｏバス３０２とブリッジ論理回路３２３との間においてアドレス、データ、及び制御信号を通常の仕方で転送する。同様に、バスインタフェース３１０は、プロセッサバス３０２とブリッジ３２３との間においてアドレス、データ、及び制御信号を通常の仕方で転送する。ブリッジ論理回路３２３は、ブリッジ３００用の内部制御論理回路である。ブリッジ論理回路３２３は、プロセッサバス３０２とＩ／Ｏバス３０３との間で要求を転送するよう通常の仕方で動作する。
【００３２】
また、バスインタフェース３１０は、プロセッサバス３０２とコンフィギュレーションレジスタ３０５の間でもアドレス、データ、及び制御信号を転送する。バスとバス上のエージェントとの間のこのような信号転送については、当技術分野においては周知であり、これ以上の説明は省略する。
【００３３】
コンフィギュレーションレジスタ３０５は、次の３つのレジスタからなる：すなわち、リセットレジスタ３３０、取込みシステムコンフィギュレーション値（ＣＳＣＶ）レジスタ３３３、及びリセット時ドライブコンフィギュレーション値（ＣＶＤＲ）レジスタ３３６。コンフィギュレーションレジスタ３０５は、レジスタであるとして説明するが、他の通常の記憶装置の中の任意のものを使用できるということに留意すべきである。本発明の一実施形態においては、リセットレジスタ３３０は８ビットレジスタの１ビットを使用し、ＣＳＣＶレジスタ３３３及びＣＶＤＲレジスタ３３６はどちらも１６ビットレジスタである。
【００３４】
ＣＳＣＶレジスタ３３３は、ブリッジ３００がそれ自身の動作を定義するために使用する一組のコンフィギュレーション値を記憶する。例えば、ブリッジ３３０が使用する間順キュー深さは、ＣＳＣＶレジスタ３３３に記憶されたコンフィギュレーション値によって決定される。一態様においては、プロセッサバス３０２に接続された全てのエージェントはＣＳＣＶレジスタ３３３またはこれと同等の手段を有し、併せてそのバスからコンフィギュレーション値を取り出すバスインタフェースを有する。ブリッジ３００の場合同様、他のエージェントにおけるＣＳＣＶレジスタ３３３も、それらのエージェントによってそれら自身の動作を定義するために使用される。このように、システム内の他の全てのエージェントのＣＳＣＶレジスタ３３３中の値を変えることによって、全部のエージェントについてのコンフィギュレーション値を変えることができる。
【００３５】
下記の表１は、本発明の一実施形態のＣＳＣＶレジスタ３３３に記憶されるコンフィギュレーション値を示す。
【表１】
2007035058.tif 000003
2007035058.tif 000004
【００３６】
ＣＶＤＲレジスタ３３６は、電源オン時、まずデフォルトのコンフィギュレーション値がプログラムされる。これらのデフォルト値が初期化値３１５である。本発明の一実施形態においては、初期化値３１５はシステムが最小レベルで機能するのに必要な最小セットのコンフィギュレーション値である。最小セットのコンフィギュレーション値を与えることによって、コンピュータシステムは、多分所期の用途にとっての最適レベルではないにしても、正しく機能することができる。しかしながら、いったん最小セットのコンフィギュレーション値を設定した後でも、以下にさらに詳しく説明するように、コンフィギュレーションレジスタには新しいパラメータのセットをプログラムし直すことができる。
【００３７】
一実施形態においては、初期化値３１５はシステムにあらかじめ設定される。すなわち、システムは特定の初期化値でパワーアップするようにあらかじめコンフィギュレーションされる。これらの初期化値は、システムにハードワイヤード方式で設定するなど、従来の様々な方法の中の任意のやり方であらかじめ設定することができる。
【００３８】
初期化値３１５は、電源オン時にＣＳＣＶレジスタ３３３にも入力される。このように、ＣＳＣＶレジスタ３３３及びＣＶＤＲレジスタ３３６は、最初はどちらも同じコンフィギュレーション値セット（すなわち初期化値３１５）が書き込まれる。以下にさらに詳細に説明するように、これらのコンフィギュレーション値はシステム動作時に変更することができる。
【００３９】
表２は、本発明の一実施形態における初期化値と対応するＣＶＤＲのビット位置及び機能を示す。ビットをセットする位置、あるいはセットしない位置において、“１”はビットをセットすることを示し、“０”はビットをセットしないことを示す。
【表２】
2007035058.tif 000005
【００４０】
バスインタフェース３１０は、リセットレジスタ３３０がアクティブになったとき、ＣＶＤＲレジスタ３３６に書き込まれている値をプロセッサバス３０２上にドライブする。一実施形態においては、これらの値はバス３０２のアドレスバス上にドライブされる。一実施形態においては、リセットレジスタ３３０はソフトウェアによって書き込まれることによりアクティブになる。また、リセットレジスタ３３０は、バスインタフェース３１０をしてバス３０２上にＰＲＯＣ＿ＲＥＳＴ＃信号をアサートさせる。一態様においては、ＰＲＯＣ＿ＲＥＳＥＴ＃信号はバス３０２の制御バスが受け持つ。
【００４１】
ＰＲＯＣ＿ＲＥＳＥＴ＃信号は、ブリッジ３００を含め、プロセッサバス３０２に接続された全てのエージェントに供給され、それらのエージェントに「リセット」動作を行わせる。リセット動作には、バスからコンフィギュレーション値を取り出し、それらの値をＣＳＣＶレジスタ３３３と同等のコンフィギュレーションレジスタに記憶する動作が含まれる。次に、各エージェントはこれらの新しい値を用いて以後のバス上の全てのトランザクションを実行する。
【００４２】
バスインタフェース３１０は、ＣＶＤＲレジスタ３３６中の値をバス３０２上にドライブするほか、それらの値をＣＳＣＶレジスタ３３３にも記憶する。これによってブリッジ３００は、バス上の他の全てのエージェントと共に、それ自身のコンフィギュレーション値を更新することができる。
【００４３】
図４は、本発明の一実施形態で初期コンフィギュレーション値をドライブするためのタイムチャートの一例である。この実施形態においては、Ｉ／Ｏバス３０３は周知のＰＣＩ規格に基づいて動作する。図３に示すように、ＰＷＲ＿ＧＤ信号はＣＶＤＲレジスタ３３６に入力される。ＰＷＲ＿ＧＤ信号は、コンピュータシステムの電源によって発生する信号である。一態様においては、電源は電源内の全ての電圧が１ミリ秒間安定した後ＰＷＲ＿ＧＤ信号をアサートする。図４に示すように、ＰＷＲ＿ＧＤ信号はブリッジ３００に非同期で入力される。
【００４４】
一実施形態においては、ブリッジ３００はＰＣＩ＿ＲＳＴ＃信号をアサートとすることによってＩ／Ｏバス３０３をリセットする。一態様においては、ＰＣＬ＿ＲＳＴ＃信号は、ＰＷＤ＿ＧＤ信号がデアサートになっていることが検出される度にアサートされる。ＰＣＩ＿ＲＳＴ＃信号は、ＰＷＲ＿ＧＤ信号がアサートされてから１ミリ秒間アサートに保たれる。この態様においては、Ｉ／Ｏバス３０３上の他の全てのエージェントは、ＰＣＩ＿ＲＳＴ＃信号が０から１に切り換わるとき、自らリセットする。
【００４５】
ＰＷＲ＿ＧＤ信号の立上がりエッジで、ブリッジ３００はそのブリッジＩＤ、すなわち図３のブリッジＩＤ３２０を取り込む。これは、図４にＢＲＩＤＧＥ  ＩＤ  ＩＮとして示されている。一実施形態においては、ブリッジ３００は、システムの動作中同じブリッジＩＤを保つ。すなわち、ＰＲＯＣ＿ＲＥＳＥＴ＃信号ではブリッジＩＤは変わらない。ブリッジＩＤは、以下にさらに詳しく説明するように、複数のブリッジを含むシステムで、どのブリッジによってコンフィギュレーション値をバス上にドライブするかを決定するために使用される。
【００４６】
また、ＰＷＲ＿ＧＤ信号の立上がりエッジでは、初期化値３１５がＣＳＣＶレジスタ３３３及びＣＶＤＲレジスタ３３６に書き込まれる。これによって、以下に説明するように、ＣＶＤＲレジスタ３３６はバス３０２上にドライブするための正しいコンフィギュレーション値を得る。
【００４７】
ＰＷＲ＿ＧＤ信号を受け取ると、ブリッジ３００はＰＲＯＣ＿ＲＥＳＥＴ＃信号でプロセッサバス３０２をリセットする。ＰＲＯＣ＿ＲＥＳＥＴ＃信号は、ＰＷＲ＿ＧＤ信号が０から１へ切り換わった後のクロックで非同期でアサートされる。従って、図４に示すように、ＰＷＲ＿ＧＤはＣＬＫ２で非同期でアサートされ、ＰＲＯＣ＿ＲＥＳＥＴ＃はＣＬＫ３でアサートされる。本発明の一実施形態においては、ＰＲＯＣ＿ＲＥＳＥＴ＃は１ミリ秒間アサートに保たれる。
【００４８】
ＣＶＤＲレジスタ３３６からのコンフィギュレーション値は、ＰＲＯＣ＿ＲＥＳＥＴ＃がアサートになっている間にプロセッサバス３０２上にドライブされる。ブリッジ３００は、それが「互換ブリッジ」であると判断した後にコンフィギュレーション値をアサートする。互換ブリッジは、以下にさらに詳しく説明するように、システムをコンフィギュレーションする役割を担うブリッジである。これらの値は、図４にはＣＯＮＦＩＧ  ＶＡＬＵＥＳ  ＩＮで示されており、ＰＲＯＣ＿ＲＥＳＥＴ＃の立上がりエッジでバス３０２上の各エージェントによって取り込まれる。従って、ＰＲＯＣ＿ＲＥＳＥＴ＃がデアサートされた後は、バス３０２に接続されたエージェントには全て同じコンフィギュレーション値が書き込まれている。
【００４９】
図４は、システム電源オンからの初期コンフィギュレーション値のドライブ動作を示す。システム電源オン後のある一定の条件の下では、他のリセットを行うことも可能である。例えば、システムユーザが物理的なリセットスイッチを起動してリセットすることも可能である。このような条件下では、ＰＲＯＣ＿ＲＥＳＥＴ＃信号はリセットスイッチの起動と同時にアサートされ、上に述べたように、ＣＶＤＲレジスタ３３６中の値がバス上にドライブされる。
【００５０】
一実施形態においては、物理的リセットスイッチを起動すると、初期化値３１５がＣＶＤＲレジスタ３３６にロードされる。もう一つの態様においては、初期化値３１５はＣＶＤＲレジスタ３３６にロードされない。そのもう一つの態様では、リセットスイッチが起動されたとき、ＣＶＤＲレジスタ３３６に記憶されたコンフィギュレーション値がバス３０２上にドライブされる。
【００５１】
本発明の一実施形態においては、システムはリセットレジスタ３３０への書込みによってリセットすることができる。この実施形態においては、ＰＲＯＣ＿ＲＥＳＥＴ＃及びＣＯＮＦＩＧ  ＶＡＬＵＥＳ  ＩＮは図４に示すようにアサートされる。初期化値３１５は、ＣＶＤＲレジスタ３３６に記憶された値を置換しない。リセットレジスタ３３０が書き込まれるときＣＶＤＲレジスタ３３６に記憶されているコンフィギュレーション値がバス上にドライブされる値である。
【００５２】
従って、新しいコンフィギュレーション値をＣＶＤＲレジスタ３３６に記憶した後、リセット時にバス上にドライブすることができるということは明らかであろう。このリセットは、リセットレジスタ３３０への書込みによって制御される。
図１及び２に示すように、コンピュータシステムには２つ以上のブリッジを具備することができる。一実施形態においては、各ブリッジは図３のブリッジ３００と同じものである。従って、各ブリッジには、コンフィギュレーションレジスタ３０５が内蔵されている。この実施形態で複数のブリッジが正しく機能するためには、１つのブリッジだけがプロセッサバスをリセットできるようにすべきである。あるブリッジがプロセッサバスをリセットすることができるかどうかはブリッジＩＤ３２０によって決定される。
【００５３】
一実施形態においては、ブリッジＩＤ３２０はシステム電源オン時に設定される２ビット値である。ブリッジＩＤは、図４のＢＲＩＤＧＥ  ＩＤ  ＩＮとしてドライブされるＩＯ＿ＧＮＴ＃及びＩＯ＿ＲＥＱ＃信号によって決定される。一態様においては、ＩＯ＿ＧＮＴ＃及びＩＯ＿ＲＥＱ＃信号は、ブリッジ３００によって、システム電源オン後のプロセッサバス３０２に関するアービトレーションでも使用される。ＩＯ＿ＧＮＴ＃及びＩＯ＿ＲＥＱ＃信号は、電源オン時にハイかまたはローに固定されることによって１または０を指示する。これは、プルアップ／プルダウン抵抗器またはジャンパを用いる等、従来の様々な方法の中の任意の仕方で行うことができる。
【００５４】
各ブリッジについて適切なＩＯ＿ＧＮＴ＃及びＩＯ＿ＲＥＱ＃信号をハイまたはローに固定することによって、４つの一意のＩＤを設定できるということがわかる。適切な数の入力信号が与えられた場合に、所望の数の一意のブリッジＩＤを得ることができるということは、当業者にとっては明らかであろう。
【００５５】
ブリッジＩＤは、複数のブリッジの中のどのブリッジがバスをリセットする役割を持つかを決定するために使用される。バスをリセットする役割を果たすブリッジは「互換ブリッジ」と呼ばれる。一実施形態においては、各ブリッジでは、特定のブリッジＩＤを持つブリッジは互換ブリッジであるということがあらかじめ決定される。一態様においては、互換ブリッジＩＤは“０１”で、ＩＯ＿ＧＮＴ＃信号からの“０”とＩＱ＿ＲＥＱ＃信号からの“１”で構成される。
【００５６】
図４に示すように、ＰＷＲ＿ＧＤ信号を受け取ると同時に、各ブリッジはＰＲＯＣ＿ＲＥＳＥＴ＃信号をアサートし始める。このように、システム内に複数のブリッジがある場合は、各ブリッジがそれぞれアサートを開始する。しかしながら、各ブリッジはそのブリッジＩＤを示す信号も受け取る。そして、各ブリッジは、互換ブリッジであると判断すると、上に述べたように、ＰＲＯＣ＿ＲＥＳＥＴ＃信号をアサートし続け、ＣＶＤＲレジスタ３３６中の値をバス上にドライブする。これに対して、各ブリッジは、互換ブリッジではないと判断すると、そのＰＲＯＣ＿ＲＥＳＥＴ＃信号をデアサートする。これらの非互換ブリッジは、それらのＣＶＤＲレジスタ中の値をバス上にドライブしない。逆に、これらのブリッジは、バスに接続された他の任意のエージェントとして挙動する。すなわち、これらのブリッジは、ＰＲＯＣ＿ＲＥＳＥＴ＃信号の立上がりエッジでバスから各々のコンフィギュレーション値を取り込む。
【００５７】
ここで、多重ブリッジシステムの各ブリッジのブリッジＩＤは、どのブリッジが互換ブリッジであるかを決定するということに留意すべきである。このように、ブリッジＩＤは、単にどのブリッジがバスをリセットする役割を持つか、そしてどのブリッジがそのＣＶＤＲレジスタの値をバスにドライブできるかを決定するだけである。これらの機能をどのブリッジが果たすかということは、互換ブリッジのＣＶＤＲレジスタの値を修正することによって全てのエージェント中のコンフィギュレーション値を修正するシステムの能力には影響しない。
【００５８】
多重ブリッジシステムにおいては、互換ブリッジのＣＶＤＲレジスタは、システム中の他のエージェント（及び互換ブリッジ自身）によって書き込むことができる。これを行うためには、エージェントは互換ブリッジを目標とする（その互換ブリッジのブリッジＩＤを目標にすることによって）コマンドを出す。各ブリッジは一意のブリッジＩＤを有し、互換ブリッジのブリッジＩＤはあらかじめ決定されているので、システム内の他のエージェントは互換ブリッジのＣＶＤＲレジスタ３３６を正しくターゲットにすることができる。
【００５９】
多重ブリッジシステムにおける各ブリッジのブリッジＩＤを設定する動作の詳細を上に具体的に説明したが、これらの詳細は本発明の範囲を限定する意味を有するものではない。ブリッジＩＤは、様々な従来の方法の中の任意の方法で決定することができる。
本発明の一実施形態に従ってコンフィギュレーション値を更新するためのステップのフローチャートを図５に示す。まず、コンピュータシステムが電源オンとなり、初期コンフィギュレーション値がバス上にドライブされる（ステップ５１０）。これは、上に図４で説明したようにして行われる。
【００６０】
初期コンフィギュレーション値を与えられて、プロセッサバス上の各エージェントは、システムの基本入出力システム（ＢＩＯＳ）にアクセス可能にするための必要パラメータを得る（ステップ５２０）。一態様においては、ＢＩＯＳは大容量記憶装置のようなバス３０３に接続された周辺装置に記憶される。あるいは、ＢＩＯＳは、リードオンリーメモリ（ＲＯＭ）のようなバス３０２に接続されたデバイス、あるいはバス３０２に接続された他の大容量記憶装置に記憶することもできる。
【００６１】
ＢＩＯＳの記憶場所に関わらず、初期コンフィギュレーション値はバス上のエージェントがＢＩＯＳにアクセスすることを可能にする。ＢＩＯＳは、当技術分野において周知のように、一般に、システム始動時にバス上のプロセッサによって実行される一群のソフトウェアプログラムを含んでいる。一実施形態においては、これらのＢＩＯＳプログラムは図３のブリッジ３００中のＣＶＤＲレジスタ３３６のコンフィギュレーション値を修正する（ステップ５３０）。
【００６２】
ＣＶＤＲレジスタ３３６の値を修正すると同時に、ＢＩＯＳプログラムはリセットレジスタ３３０への書込みを実行する（ステップ５４０）。上に説明したように、これによってバスインタフェース３１０はＣＶＤＲレジスタ３３６中の値をバス３０２上にドライブする（ステップ５５０）。その後、バス上のエージェントがこれらの値を取込んで記憶し、これらの値に従って動作する。
【００６３】
ステップ５６０に示すように、コンフィギュレーション値はシステム動作中に変更し直すことができる。上記以後の修正または変更が全く行われなければ、上記以外のコンフィギュレーション値がバス上にドライブされることはない。しかしながら、その後のソフトウェアプログラムがＣＶＤＲレジスタ中のコンフィギュレーション値を修正することは可能である（ステップ５７０）。上に述べたように、ＣＶＤＲレジスタ中の値を修正しても、３３０が書き込まれるまで、ブリッジ３００を含めてシステムのコンフィギュレーション値は変わらない。ＣＶＤＲレジスタ３３６の値を修正した後、ソフトウェアはステップ５４０及び５５０を繰り返す。すなわち、ソフトウェアはリセットレジスタ３３０に書込みをして、ＣＶＤＲレジスタ３３６中の新しいコンフィギュレーション値をバス上にドライブさせる。
【００６４】
このコンフィギュレーション値の修正は、ステップ５６０に示すように、システム動作の持続期間中続けることができる。ソフトウェアがシステムコンフィギュレーション値を修正したいときはいつでも、ＣＶＤＲレジスタの値を修正し、それらの値をバス上にドライブすることができる。
【００６５】
従って、システムの各エージェントが使用するコンフィギュレーション値は、リセットレジスタ３３０、ＣＳＣＶレジスタ３３３、及びＣＶＤＲレジスタ３３６を用いることによって同時に更新されるということがわかる。これらのコンフィギュレーション値は、適切なレジスタをプログラミングすることによってシステム動作中に何回でも変更することができる。ジャンパあるいはこれと同様の手段の物理的操作は全く不要である。
【００６６】
以上の説明では、一組のコンフィギュレーション値を修正し、ドライブする場合について説明したが、当業者であれば、本発明はコンピュータシステムにセットすることができる任意の様々な値についても同様に適用されるということは明白であろう。
【００６７】
上記説明から、当業者は本発明の変形態様及び修正態様を多数想起することができると考えられるが、上記に例示説明した特定の実施形態は、何ら本発明を制限することを意図したものではない。従って、特定実施形態の詳細に言及する場合、それは本発明にとって必須と考えられる特徴のみを記載した特許請求の範囲の有効範囲を制限することを意図したものではない。
【００６８】
以上、コンピュータシステム中の複数のエージェントをコンフィギュレーションする方法及びそのための装置を開示した。
【図面の簡単な説明】
【００６９】
【図１】図１は、本発明の一例のマルチプロセッサ・コンピュータシステムの大まかなブロック図である。
【図２】図２は、本発明の一例のバスクラスタシステムを示すブロック図である。
【図３】図３は、本発明の一実施形態の装置を示すブロック図である。
【図４】図４は、本発明の一実施形態において初期コンフィギュレーション値をドライブするためのタイムチャートである。
【図５】図５は、本発明の一実施形態においてエージェントコンフィギュレーション値を更新するためのステップを示すフローチャートである。
【符号の説明】
【００７０】
３０２  プロセッサ・バス
３０３  Ｉ／Ｏバス
３０５  コンフィギュレーション・レジスタ
３１０  バス・インターフェース
【図１】
2007035058.tif 000006
【図２】
2007035058.tif 000007
【図３】
2007035058.tif 000008
【図４】
2007035058.tif 000009
【図５】
2007035058.tif 000010