(57)【特許請求の範囲】
【請求項１】
プロセッサシステムと周辺デバイスとがブリッジにより相互に接続された情報処理システムの初期化方法であって、
前記情報処理システムの外部に接続されたシステムコントローラが前記プロセッサシステムと前記ブリッジの双方の制御レジスタにアクセスして前記プロセッサシステムと前記ブリッジの間の入出力インタフェースを初期化する間に、前記システムコントローラが前記ブリッジに接続された前記周辺デバイスを初期化することを特徴とする初期化方法。
【請求項２】
前記プロセッサシステムが、前記ブリッジを介して、前記システムコントローラによる初期化が完了した前記周辺デバイスからブートコードを読み込んで起動するステップをさらに含むことを特徴とする請求項１に記載の初期化方法。
【請求項３】
前記システムコントローラが前記周辺デバイスを初期化したときに得られる前記周辺デバイスの初期化情報を、前記システムコントローラと前記プロセッサシステムの双方がアクセス可能な前記ブリッジ内に設けられた共有メモリに書き込むステップと、
前記プロセッサシステムが自らは前記周辺デバイスの初期化を行うことなく、前記周辺デバイスの初期化情報を前記共有メモリから取得するステップとを含むことを特徴とする請求項２に記載の初期化方法。
【請求項４】
プロセッサシステムと、
前記プロセッサシステムの入出力バスと周辺デバイスの入出力バスを相互接続するブリッジとを含み、
前記プロセッサシステムと前記ブリッジの双方にアクセス可能なシステムコントローラにより、前記プロセッサシステムと前記ブリッジの双方の制御レジスタがアクセスされて前記プロセッサシステムと前記ブリッジの間の入出力インタフェースが初期化される間に、前記ブリッジに接続された周辺デバイスが前記システムコントローラにより初期化されることを特徴とする情報処理装置。
【請求項５】
前記周辺デバイスには、前記プロセッサシステムが起動するためのブートコードを記憶するメモリ領域が設けられ、
前記プロセッサシステムは、前記ブリッジを介して、前記システムコントローラによる初期化が完了した前記周辺デバイスから前記ブートコードを読み込んで起動することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記ブリッジには、前記システムコントローラと前記プロセッサシステムがアクセス可能な共有メモリが設けられ、
前記システムコントローラは、前記周辺デバイスを初期化したときに得られる前記周辺デバイスの初期化情報を前記共有メモリに書き込み、
前記プロセッサシステムは、自らは前記周辺デバイスの初期化を行うことなく、前記周辺デバイスの初期化情報を前記共有メモリから読み出して利用することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
プロセッサシステムと、
前記プロセッサシステムとデータをやりとりする周辺デバイスと、
前記プロセッサシステムの入出力バスと前記周辺デバイスの入出力バスを相互接続するブリッジとを含み、
前記プロセッサシステムと前記ブリッジの双方にアクセス可能なシステムコントローラにより、前記プロセッサシステムと前記ブリッジの双方の制御レジスタがアクセスされて前記プロセッサシステムと前記ブリッジの間の入出力インタフェースが初期化される間に、前記ブリッジに接続された前記周辺デバイスが前記システムコントローラにより初期化されることを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサシステムがブリッジを介して周辺デバイスと接続可能な情報処理装置および情報処理システム、ならびに初期化方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータやサーバには、ＰＣＩ（Peripheral Component Interconnect）バスを介して各種の周辺デバイスが接続され、情報処理システムが構成される。プロセッサの入出力バスと、周辺デバイスの入出力バスであるＰＣＩバスとは規格が異なるため、通常、ブリッジを介してプロセッサと周辺デバイスとが接続される。
【０００３】
情報処理システムの機能拡張や性能強化を図るために、グラフィックプロセッサや高速なメモリデバイスをＰＣＩデバイスとして接続することがあり、より多くの周辺デバイスをＰＣＩバスで接続できるようにすることが要請されている。そのため、ブリッジの先にＰＣＩスイッチを多段接続して、ＰＣＩデバイスのネットワークを構成することもある。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
情報処理システムの電源を常時オンにせずに使用時にだけ電源を投入して利用する場合、ブートコードをフラッシュメモリなどからロードしてシステムを起動するのが普通である。フラッシュメモリからのブートコードの読み込みには時間がかかり、システムの起動が遅くなるという問題があった。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、システムの起動を高速化することのできる情報処理装置および情報処理システム、ならびに初期化方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の初期化方法は、プロセッサシステムと周辺デバイスとがブリッジにより相互に接続された情報処理システムの初期化方法であって、前記情報処理システムの外部に接続されたシステムコントローラが前記プロセッサシステムと前記ブリッジの双方の制御レジスタにアクセスして前記プロセッサシステムと前記ブリッジの間の入出力インタフェースを初期化する間に、前記システムコントローラが前記ブリッジに接続された前記周辺デバイスを初期化する。
【０００７】
この態様によると、プロセッサシステムとブリッジの間の入出力インタフェースを初期化する間に、並行してブリッジに接続された周辺デバイスを初期化するため、情報処理システムの初期化に要する時間を短縮することができる。
【０００８】
前記プロセッサシステムが、前記ブリッジを介して、前記システムコントローラによる初期化が完了した前記周辺デバイスからブートコードを読み込んで起動するステップをさらに含んでもよい。これによれば、プロセッサシステムは、ブリッジを介して、既に初期化が完了した周辺デバイスからブートコードを読み込むため、ブリッジを介した周辺デバイスへのパスの初期化をスキップして、ブートコードのロードを直ちに開始することができ、システムが早く起動する。また、高速な周辺デバイスを利用することにより、フラッシュメモリなどからブートコードを読み込むよりも高速にブートコードの読み取りが可能である。
【０００９】
前記システムコントローラが前記周辺デバイスを初期化したときに得られる前記周辺デバイスの初期化情報を、前記システムコントローラと前記プロセッサシステムの双方がアクセス可能な前記ブリッジ内に設けられた共有メモリに書き込むステップと、前記プロセッサシステムが自らは前記周辺デバイスの初期化を行うことなく、前記周辺デバイスの初期化情報を前記共有メモリから取得するステップとを含んでもよい。これによれば、プロセッサシステムは自ら周辺デバイスを初期化しなくても、周辺デバイスの初期化情報を得ることができ、システムの起動後直ちに、周辺デバイスに対応したドライバにより周辺デバイスにアクセスすることができる。
【００１０】
本発明の別の態様は、情報処理システムである。この情報処理システムは、プロセッサシステムと、前記プロセッサシステムとデータをやりとりする周辺デバイスと、前記プロセッサシステムの入出力バスと前記周辺デバイスの入出力バスを相互接続するブリッジとを含む。前記プロセッサシステムと前記ブリッジの双方にアクセス可能なシステムコントローラにより、前記プロセッサシステムと前記ブリッジの双方の制御レジスタがアクセスされて前記プロセッサシステムと前記ブリッジの間の入出力インタフェースが初期化される間に、前記ブリッジに接続された前記周辺デバイスが前記システムコントローラにより初期化される。
【００１１】
本発明のさらに別の態様は、情報処理装置である。この装置は、プロセッサシステムと、前記プロセッサシステムの入出力バスと周辺デバイスの入出力バスを相互接続するブリッジとを含む。前記プロセッサシステムと前記ブリッジの双方にアクセス可能なシステムコントローラにより、前記プロセッサシステムと前記ブリッジの双方の制御レジスタがアクセスされて前記プロセッサシステムと前記ブリッジの間の入出力インタフェースが初期化される間に、前記ブリッジに接続された周辺デバイスが前記システムコントローラにより初期化される。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、システムの起動を高速化することができる。
【発明を実施するための最良の形態】
【００１４】
図１は、実施の形態に係る情報処理システムの構成図である。情報処理システムは、プロセッサシステム１０と各種の周辺（ペリフェラル）デバイスとがブリッジ１００を介して接続されて構成される。
【００１５】
プロセッサシステム１０は、メインプロセッサ、メモリ、入出力インタフェースなどを含むホストシステムである。プロセッサシステム１０は、一例として複数のプロセッサを含むマルチプロセッサシステムであってもよい。
【００１６】
ブリッジ１００は、プロセッサシステム１０のホストバス４０と、各種周辺デバイスの入出力バスとを「橋渡し」することで、プロセッサシステム１０と各種周辺デバイスとを相互接続する。プロセッサシステム１０のホストバス４０と、周辺デバイスの入出力バスとは、バスの規格が異なるため、ブリッジ１００は、２つのバスの間でプロトコルの変換を行い、プロセッサシステム１０と周辺デバイスとがやりとりするデータのフォーマットを各バスの仕様に合わせる。
【００１７】
ここでは、周辺デバイスの接続インタフェースとして、ＰＣＩバスを用いる。ここで、ＰＣＩバスは、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩ  Ｅｘｐｒｅｓｓ（商標または登録商標）のいずれの仕様によるものでもよい。ＰＣＩバスで接続された周辺デバイスを以下、「ＰＣＩデバイス」という。
【００１８】
ブリッジ１００の上流ポートにはプロセッサシステム１０がホストバス４０経由でつながれるが、ブリッジ１００の下流ポートにはＰＣＩデバイスが直接つながれてもよく、下流ポートにＰＣＩスイッチがつながれて、ＰＣＩスイッチの先にＰＣＩデバイスが接続されてもよい。ここで、ＰＣＩスイッチは、各ポートにＰＣＩデバイスを接続してネットワークを構成し、接続されたＰＣＩデバイス間でやりとりされるＰＣＩパケットの経路制御を行うものである。
【００１９】
ＰＣＩスイッチをカスケード接続して、多段のＰＣＩスイッチからなるネットワークを構成してもよい。このようにＰＣＩスイッチを多段接続し、その末端にＰＣＩデバイスを接続すると、ブリッジ１００をルート（根）とし、リーフ（葉）にはＰＣＩデバイスが接続されたＰＣＩデバイスのツリー（木）構造が形成される。以下、このＰＣＩデバイスのツリー構造を「ＰＣＩデバイスツリー」という。
【００２０】
図１には、ＰＣＩデバイスツリーの一例が示されている。ブリッジ１００の第１の下流ポートには、ＰＣＩバス５０を介して第１段目のＰＣＩスイッチ２００ａが接続され、第２の下流ポートには、ＰＣＩバス５０を介して第１のＰＣＩデバイス２２０ａが接続されている。さらに第１段目のＰＣＩスイッチ２００ａの第１の下流ポートには、ＰＣＩバス５０を介して第２のＰＣＩデバイス２２０ｂが接続され、第２の下流ポートには、ＰＣＩバス５０を介して第２段目のＰＣＩスイッチ２００ｂが接続されている。第２段目のＰＣＩスイッチ２００ｂの下流ポートにはさらにＰＣＩデバイスまたはＰＣＩスイッチが接続される。以下、ＰＣＩデバイス２２０ａ、２２０ｂなどを総称するときは、ＰＣＩデバイス２２０という。
【００２１】
図１のＰＣＩデバイスツリーにおいて、第１のＰＣＩデバイス２２０ａはメモリデバイスであり、以下、「ＰＣＩメモリデバイス２２０ａ」と呼ぶ。ＰＣＩメモリデバイス２２０ａは高速な記憶デバイスであり、ブートＲＯＭ２１２が接続されている。ブートＲＯＭ２１２には、電源投入時にプロセッサシステム１０を起動させるためのブートコードが記憶されている。
【００２２】
システムコントローラ２０は、当該情報処理システムの電源投入やシステム初期化などを制御するマイクロコンピュータであり、プロセッサシステム１０とブリッジ１００にＳＰＩ（Serial Peripheral Interface）３０で接続されている。システムコントローラ２０は、当該情報処理システムの電源がオフの状態でも非常に低い消費電力で常時稼働している。
【００２３】
システムコントローラ２０には、各種のＰＣＩデバイスのドライバの一部が実装されており、システムコントローラ２０は、ブリッジ１００の下流にある複数のＰＣＩデバイス２２０の初期化を行うことができる。
【００２４】
プロセッサシステム１０のブートコードは、ブリッジ１００の先に接続されたＰＣＩメモリデバイス２２０ａのブートＲＯＭ２１２に格納されているため、システムコントローラ２０は、プロセッサシステム１０がブートＲＯＭ２１２からブートコードをロードできるように、ＰＣＩメモリデバイス２２０ａへのデータパスをあらかじめ初期化しておく。
【００２５】
当該情報処理システムの電源投入後、システムコントローラ２０は、プロセッサシステム１０とブリッジ１００の制御レジスタにアクセスし、ホストバス４０を初期化する。
【００２６】
ホストバス４０の初期化には、特定の信号パターンをバスに流すことによるキャリブレーションが必要であるため、一定の時間を要する。そこで、システムコントローラ２０は、ホストバス４０の初期化が行われている間に、同時にブリッジ１００内部の初期化と、ブリッジ１００の下流に接続されたＰＣＩデバイス２２０の初期化を行う。
【００２７】
バスのキャリブレーションとは、高速信号をパラレル伝送する際、各ピンのスキューを少しずつずらしてスキューが最小となるポイントを探し、送信側で各ピンのタイミングを調整することである。ここで、各ピン間に生じるスキューとは、ピン毎に、コントローラとＤＲＡＭチップ間の伝送においてタイミングに違いが生じる現象のことである。
【００２８】
システムコントローラ２０は、ブリッジ１００の下流に接続された複数のＰＣＩデバイス２２０の中から特定のＰＣＩメモリデバイス２２０ａを見つけ、そのＰＣＩメモリデバイス２２０ａを初期化することで、プロセッサシステム１０を起動するためのブートコードが格納されているアドレス（以下、「ブートアドレス」という）を取得し、そのアドレスをプロセッサシステム１０に与える。
【００２９】
プロセッサシステム１０は、ホストバス４０の初期化が終わると、ブリッジ１００を介してＰＣＩメモリデバイス２２０ａにアクセスし、システムコントローラ２０から通知されたブートアドレスからブートコードを読み出す。
【００３０】
ブリッジ１００は、システムコントローラ２０とプロセッサシステム１０の双方からアクセス可能なメモリ領域として共有メモリ１１０をもち、システムコントローラ２０とプロセッサシステム１０は、共有メモリ１１０を利用してデータをやりとりすることができる。
【００３１】
システムコントローラ２０は、ＰＣＩデバイスツリーを初期化した際に取得したコンフィグレーションレジスタの内容などのＰＣＩデバイスの初期化情報をブリッジ１００の共有メモリ１１０に書き込む。ブートが完了したプロセッサシステム１０上で動作するＰＣＩドライバは、ブリッジ１００の共有メモリ１１０からＰＣＩデバイスの初期化情報を読み取る。
【００３２】
ここで、共有メモリ１１０に記憶されるＰＣＩデバイスの初期化情報は、ＰＣＩの仕様で定められているコンフィグレーションレジスタの内容であり、具体的には、ＰＣＩメモリ空間のベースアドレス、デバイスＩＤ、ベンダＩＤ、クラス、バス番号などである。
【００３３】
システムコントローラ２０がＰＣＩデバイスツリーを初期化しているため、プロセッサシステム１０上のＰＣＩドライバは、自らはＰＣＩデバイスツリーを初期化する必要がなく、システムコントローラ２０からＰＣＩデバイスの初期化情報を取得することができる。プロセッサシステム１０上のＰＣＩドライバは、必要に応じてアドレスマップの再構築を行う。また、プロセッサシステム１０は、個々のＰＣＩデバイスに対応するデバイスドライバにより、個々のＰＣＩデバイスに特有の初期設定などの追加処理を行う。
【００３４】
図２は、ブリッジ１００の機能構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００３５】
ブリッジ１００は、上流のホストバス４０と下流のＰＣＩバス５０ａ〜５０ｄを橋渡してパケットを転送するために、ホストバスとＰＣＩバス間のプロトコル変換とパケットの経路制御を行う。
【００３６】
ブリッジ１００は、プロセッサシステム１０からホストバス４０経由で入力されたパケットをルーティングして、ＰＣＩバス５０ａ〜５０ｄ（総称するときはＰＣＩバス５０という）経由でＰＣＩスイッチ２００／ＰＣＩデバイス２２０へ転送する。また、ブリッジ１００は、ＰＣＩスイッチ２００／ＰＣＩデバイス２２０からＰＣＩバス５０経由で入力されたパケットをルーティングして、ホストバス４０経由でプロセッサシステム１０へ転送するか、あるいは、ＰＣＩバス５０経由で他のＰＣＩスイッチ２００／ＰＣＩデバイス２２０へ転送する。
【００３７】
ブリッジ１００の上流（アップストリーム）ポート１０２は、ホストバス４０を介してプロセッサシステム１０と接続され、下流（ダウンストリーム）ポート１０４ａ〜１０４ｄは、ＰＣＩバス５０ａ〜５０ｄを介してＰＣＩスイッチ２００／ＰＣＩデバイス２２０と接続される。
【００３８】
上流ポート１０２に接続されたホスト−ＰＣＩブリッジ１２０は、プロセッサシステム１０からホストバス４０を経由して入力されたパケットのデータフォーマットを物理層からデータリンク層、トランザクション層へと変換した上で、トランザクション層においてパケットのプロトコルをホストバスのプロトコルからＰＣＩバスのプロトコルに変換する。ホスト−ＰＣＩブリッジ１２０は、ＰＣＩバスのプロトコルに変換されたパケットをスイッチルーティング回路１４０に渡す。
【００３９】
スイッチルーティング回路１４０には、ＰＣＩ−ＰＣＩブリッジ１３０ａ〜１３０ｄ（総称するときは、ＰＣＩ−ＰＣＩブリッジ１３０という）が接続され、これらはそれぞれ下流ポート１０４ａ〜１０４ｄ（総称するときは下流ポート１０４という）に接続されている。スイッチルーティング回路１４０は、ホスト−ＰＣＩブリッジ１２０から与えられたパケットのヘッダに含まれる宛先アドレスにもとづいてパケットの経路選択を行い、パケットを転送すべきポートを決め、パケットを転送的のＰＣＩ−ＰＣＩブリッジ１３０に渡す。
【００４０】
ＰＣＩ−ＰＣＩブリッジ１３０は、スイッチルーティング回路１４０から与えられたパケットをトランザクション層からデータリンク層、物理層へと変換し、下流ボート１０４を経由してＰＣＩスイッチ２００またはＰＣＩデバイス２２０に転送する。
【００４１】
このようにして、プロセッサシステム１０から入力されたパケットは、ルーティングの結果、宛先のＰＣＩスイッチ２００またはＰＣＩデバイス２２０に転送される。
【００４２】
以上、上流ポート１０２から入力されたパケットのフローを説明した。下流ポート１０４から入力されたパケットのフローは次のようになる。
【００４３】
ＰＣＩ−ＰＣＩブリッジ１３０は、ＰＣＩスイッチ２００／ＰＣＩデバイス２２０からＰＣＩバス５０を経由して入力されたパケットのデータフォーマットを物理層からデータリンク層、トランザクション層へと変換してスイッチルーティング回路１４０に渡す。
【００４４】
スイッチルーティング回路１４０は、ＰＣＩ−ＰＣＩブリッジ１３０から与えられたパケットのヘッダに含まれる宛先アドレスにもとづいてパケットの経路選択を行い、パケットを転送すべきポートを決め、パケットを転送先であるホスト−ＰＣＩブリッジ１２０または他のＰＣＩ−ＰＣＩブリッジ１３０に渡す。
【００４５】
転送先がホスト−ＰＣＩブリッジ１２０である場合、ホスト−ＰＣＩブリッジ１２０は、スイッチルーティング回路１４０から与えられたＰＣＩパケットのプロトコルをＰＣＩバスのプロトコルからホストバスのプロトコルに変換した上で、パケットのデータフォーマットをトランザクション層からデータリンク層、物理層へと変換し、上流ポート１０２に出力する。
【００４６】
転送先が他のＰＣＩ−ＰＣＩブリッジ１３０である場合、そのＰＣＩ−ＰＣＩブリッジ１３０は、スイッチルーティング回路１４０から与えられたパケットをトランザクション層からデータリンク層、物理層へと変換し、下流ポート１０４に出力する。
【００４７】
このようにして、ＰＣＩスイッチ２００／ＰＣＩデバイス２２０から入力されたパケットは、ルーティングの結果、宛先であるプロセッサシステム１０または他のＰＣＩスイッチ２００／ＰＣＩデバイス２２０に転送される。
【００４８】
さらに、ブリッジ１００は、システムコントローラ２０とプロセッサシステム１０がアクセスできる共有メモリ１１０をもつ。一例として、プロセッサシステム１０はホストバス４０を介して共有メモリ１１０にアクセス可能であり、システムコントローラ２０はＳＰＩ３０を介して共有メモリ１１０にアクセス可能である。
【００４９】
システムコントローラ２０は、ＰＣＩデバイス２２０の初期化情報を共有メモリ１１０に書き込み、プロセッサシステム１０は、共有メモリ１１０からＰＣＩデバイス２２０の初期化情報を読み取る。
【００５０】
図３は、ＰＣＩスイッチ２００の機能構成図である。ＰＣＩスイッチ２００は、ＰＣＩデバイスツリーのルート以外の中間段に設置され、入力側のＰＣＩバスと出力側のＰＣＩバスを中継してパケットを転送するためにパケットの経路制御を行う。
【００５１】
ＰＣＩスイッチ２００の上流ポート１０２は、ＰＣＩバス５０を介してブリッジ１００／ＰＣＩスイッチ２００と接続され、下流ポート１０４ａ〜１０４ｄは、ＰＣＩバス５０ａ〜５０ｄを介して次段のＰＣＩスイッチ２００／ＰＣＩデバイス２２０と接続される。
【００５２】
上流ポート１０２に接続されたＰＣＩ−ＰＣＩブリッジ１３０ｅは、ブリッジ１００またはＰＣＩスイッチ２００からＰＣＩバス５０ｅを経由して入力されたパケットのデータフォーマットを物理層からデータリンク層、トランザクション層へと変換してスイッチルーティング回路１４０に渡し、スイッチルーティング回路１４０から渡されたパケットのデータフォーマットをトランザクション層からデータリンク層、物理層へと変換し、上流ポート１０２に出力する。
【００５３】
図１のブリッジ１００では、上流ポート１０２がホストバス４０に接続されているため、ホスト−ＰＣＩブリッジ１２０においてホストバスからＰＣＩバスへのプロトコル変換が必要であったが、図２のＰＣＩスイッチ２００では、上流ポート１０２がＰＣＩバス５０に接続されているため、ＰＣＩ−ＰＣＩブリッジ１３０ｅにおいて異なるバス間のプロトコル変換は不要である。それ以外のパケットの経路制御と転送に係る構成は図２のブリッジ１００と同じであるから、図２のブリッジ１００と同じ構成には同一の符号を付して説明を省略する。
【００５４】
なお、ＰＣＩスイッチ２００には、ブリッジ１００とは違って、共有メモリ１１０は設けられない。
【００５５】
図４は、実施の形態に係る情報処理システムの初期化手順を説明する図である。縦軸に時間をとり、システムコントローラ２０、プロセッサシステム１０、ブリッジ１００、ＰＣＩメモリデバイス２２０の各構成の処理が時系列で示されている。
【００５６】
システムコントローラ２０が情報処理システムの電源をオンにする（ＳＡ１０）。これにより、プロセッサシステム１０、ブリッジ１００、ＰＣＩメモリデバイス２２０ａの各装置に電力が供給され、内部初期化が行われる（ＳＢ１０、ＳＣ１０、ＳＤ１０）。
【００５７】
システムコントローラ２０は、プロセッサシステム１０とブリッジ１００を初期設定し、ブートコードを読み出すブートアドレスを設定する（ＳＡ１２）。
【００５８】
システムコントローラ２０は、プロセッサシステム１０とブリッジ１００の制御レジスタにアクセスしてホストバス４０の初期化を行う（ＳＡ１４）。これにより、プロセッサシステム１０とブリッジ１００においてホストバス４０の初期化が開始される（ＳＢ１２、ＳＣ１２）。
【００５９】
システムコントローラ２０は、ホストバス４０の初期化（ＳＡ１４）と並行して、ＰＣＩバスの初期化（ＳＡ１６）を行う。ＰＣＩバスの初期化は、システムコントローラ２０がブリッジ１００の内部制御レジスタにアクセスすることにより行われる。
【００６０】
ブリッジ１００は、ＰＣＩデバイスツリー内のＰＣＩデバイス２２０を探索して初期化設定を行うための特別なＰＣＩリード（Read）／ライト（Write）命令であるコンフィグレーションリード／ライト命令を発行する（ＳＣ１４）。
【００６１】
ＰＣＩデバイス２２０の初期化は、ＰＣＩデバイス２２０に対してコンフィグレーションリード／ライトを発行し、各ＰＣＩデバイス２２０がもつコンフィグレーション空間を操作することにより行われる。コンフィグレーションリード／ライトは、ブリッジ１００に実装された内部制御レジスタにアドレスやデータを読み書きすることで発生する。システムコントローラ２０は、ブリッジ１００に実装された制御レジスタをあらかじめ知っており、ブリッジ１００が定める方法にしたがってＰＣＩデバイスツリーの初期化を行う。
【００６２】
コンフィグレーションリード／ライト命令は、ＰＣＩデバイスツリーのアドレスマップが定まる前に発行されるため、バス番号、デバイス番号、および機能番号を組み合わせた識別番号を用いてＰＣＩデバイス２２０を特定し、特定されたＰＣＩデバイス２２０にアクセスする。システムコントローラ２０は、コンフィグレーションリードによって、ＰＣＩデバイス２２０の探索を行い、各ＰＣＩデバイス２２０が要求するメモリ領域の大きさを読み出す。次に、システムコントローラ２０は、コンフィグレーションライトによって、各ＰＣＩデバイス２２０にＰＣＩメモリ空間のベースアドレスを書き込み、ＰＣＩデバイス２２０毎にアドレスを割り当てる。
【００６３】
システムコントローラ２０は、ＰＣＩデバイスツリー内のすべてのＰＣＩデバイス２２０を見つけ、それぞれが要求するアドレス範囲にもとづいて、各ＰＣＩデバイス２２０のアドレス空間が重複しないようにアドレスオフセットを設定する。このようにして、ＰＣＩメモリ空間に各ＰＣＩデバイス２２０のアドレス領域が形成される。これがＰＣＩデバイスのアドレスマップである。
【００６４】
ＰＣＩメモリデバイス２２０ａは、ブリッジ１００からのコンフィグレーションリード命令を受けて、バス番号とＰＣＩメモリ空間におけるベースアドレスを決定する（ＳＤ１２）。ブリッジ１００は、ＰＣＩメモリデバイス２２０ａからベースアドレスなどの初期化情報を取得し、取得した初期化情報をコンフィグレーションレジスタに設定する。
【００６５】
プロセッサシステム１０およびブリッジ１００においてホストバスの初期化処理が完了すると（ＳＢ１４、ＳＣ１６）、システムコントローラ２０は、情報処理システムの初期化処理を完了し、プロセッサシステム１０にブートを指示する（ＳＡ１８）。
【００６６】
ここまでの処理（同図の点線よりも上の処理）は、システムコントローラ２０が主導する形で行われ、これ以降の処理（同図の点線よりも下の処理）は、プロセッサシステム１０が主導する形で行われる。
【００６７】
プロセッサシステム１０は、システムコントローラ２０から通知されたブートアドレスからブートコードを読み出すための命令をブリッジ１００に送る（ＳＢ１６）。ブリッジ１００は、ＰＣＩメモリデバイス２２０ａに対してブートアドレスのデータをリードする命令を発行する（ＳＣ１８）。ＰＣＩメモリデバイス２２０ａは、ブートＲＯＭ２１２からブートコードをリードし、取得したブートコードをブリッジ１００に渡す（ＳＤ１４）。ブリッジ１００は、ＰＣＩメモリデバイス２２０ａから取得したブートコードをプロセッサシステム１０に渡す。これにより、プロセッサシステム１０におけるブートコードの読み出しが終わり、プロセッサシステム１０は、ブートコードを実行し、システムを起動する（ＳＢ１８）。
【００６８】
プロセッサシステム１０は、システムコントローラ２０からのこれ以降のプロセッサシステム１０に対するアクセスを禁止する（ＳＢ２０）。ブリッジ１００は、これ以降、システムコントローラ２０がＳＰＩ３０経由で共有メモリ１１０以外にアクセスしてくるのを禁止する（ＳＣ２０）。ブリッジ１００は、システムコントローラ２０が共有メモリ１１０にアクセスすることは許容する。
【００６９】
システムコントローラ２０は、プロセッサシステム１０からの要求に応じて、ＰＣＩデバイスの初期化情報をブリッジ１００の共有メモリ１１０に書き込むことで、プロセッサシステム１０にＰＣＩデバイスの初期化情報を供給する（ＳＡ２０）。
【００７０】
プロセッサシステム１０は、システムコントローラ２０と共有メモリ１１０を介したデータ通信を行い、システムコントローラ２０からＰＣＩデバイスの初期化情報を受け取る（ＳＢ２２）。
【００７１】
プロセッサシステム１０は、ＰＣＩデバイスの初期化情報をチェックし、ＰＣＩデバイスの初期化をスキップする。もっとも、必要に応じてＰＣＩデバイスの初期化を再度行ってもよい。ＰＣＩデバイスの初期化情報により、ＰＣＩデバイスツリー内にあるすべてのＰＣＩデバイス２２０のベースアドレスやデバイスＩＤが明らかとなっており、プロセッサシステム１０は、各ＰＣＩデバイス２２０に対応するデバイスドライバを起動して、各ＰＣＩデバイス２２０に固有の初期化をそれぞれのデバイスドライバに行わせる（ＳＢ２４）。
【００７２】
以上説明したように、本実施の形態の情報処理システムによれば、プロセッサシステム１０がブートする前に、システムコントローラ２０があらかじめブリッジ１００に接続されたＰＣＩデバイスを初期化しておくことで、プロセッサシステム１０は、ＰＣＩバスで接続された高速なメモリデバイスからブートコードをロードすることが可能となり、ブートの高速化を図ることができる。
【００７３】
システムコントローラ２０を低消費電力で常時稼働させておけば、情報処理システムの電源は落としていても、システムを高速に立ち上げることができるため、利便性を犠牲にすることなく消費電力コストを抑えることができる。特にプロセッサシステム１０がマルチプロセッサシステムである場合や、ブリッジ１００を介して多数のＰＣＩデバイス２２０が接続されている場合には、消費電力が大きくなるため、常時稼働でなく、使用時にのみ電源を投入してシステムを起動することで、消費電力コストを大幅に下げることができる。
【００７４】
従来のシステムでは、プロセッサシステム１０のオペレーティングシステムがブートしてから、ＰＣＩドライバがブリッジ１００にツリー構造で接続された複数のＰＣＩデバイスを探索し、各ＰＣＩデバイスのベースアドレスを決めて、ＰＣＩメモリ空間のアドレスマップを構築する。それに対して、本実施の形態の情報処理システムでは、プロセッサシステム１０のオペレーティングシステムがブートする前に、既にシステムコントローラ２０がＰＣＩデバイスの初期化を完了し、ＰＣＩデバイスのアドレスマップが構築されている。そのため、プロセッサシステム１０のオペレーティングシステムに含まれるＰＣＩドライバがブリッジ１００に接続されたＰＣＩデバイスを探索して初期化する必要はない。
【００７５】
また、本実施の形態によれば、プロセッサシステム１０とシステムコントローラ２０の双方がアクセス可能な共有メモリ１１０がブリッジ１００に設けられる。システムコントローラ２０がＰＣＩバスの初期化の際に取得したＰＣＩデバイスの初期化情報を共有メモリに書き込んでおけば、プロセッサシステム１０は、ブート後に共有メモリからＰＣＩデバイスの初期化情報を取得して、ＰＣＩデバイスに対応したドライバを起動してＰＣＩデバイスに直ちにアクセスすることができる。
【００７６】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７７】
上記の説明では、周辺デバイスを接続するためのインタフェースとしてＰＣＩを例に挙げて説明したが、本発明は、周辺デバイスがＰＣＩ以外のインタフェースで接続される場合にも適用できることはいうまでもない。
【図面の簡単な説明】
【００７８】
【図１】実施の形態に係る情報処理システムの構成図である。
【図２】図１のブリッジの機能構成図である。
【図３】図１のＰＣＩスイッチの機能構成図である。
【図４】実施の形態に係る情報処理システムの初期化手順を説明する図である。
【符号の説明】
【００７９】
１０  プロセッサシステム、  ２０  システムコントローラ、  ３０  ＳＰＩ、  ４０  ホストバス、  ５０  ＰＣＩバス、  １００  ブリッジ、  １１０  共有メモリ、  １２０  ホスト−ＰＣＩブリッジ、  １３０  ＰＣＩ−ＰＣＩブリッジ、  １４０  スイッチルーティング回路、  ２００  ＰＣＩスイッチ、  ２１２  ブートＲＯＭ、  ２２０ａ  ＰＣＩメモリデバイス、  ２２０ｂ  ＰＣＩデバイス。
【図１】
0004799222.tif 000002
【図２】
0004799222.tif 000003
【図３】
0004799222.tif 000004
【図４】
0004799222.tif 000005