JP4016396B2 - マルチセルシステム - Google Patents
マルチセルシステム Download PDFInfo
- Publication number
- JP4016396B2 JP4016396B2 JP2003156109A JP2003156109A JP4016396B2 JP 4016396 B2 JP4016396 B2 JP 4016396B2 JP 2003156109 A JP2003156109 A JP 2003156109A JP 2003156109 A JP2003156109 A JP 2003156109A JP 4016396 B2 JP4016396 B2 JP 4016396B2
- Authority
- JP
- Japan
- Prior art keywords
- cell
- virtual
- spare
- memory
- range register
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Description
【発明の属する技術分野】
本発明はマルチセルシステムに関し、特にCPU(Central Processing Unit),メモリ,およびそれらを制御するチップセットが搭載されたマザー・ボード(以下、セルと呼ぶ)を、オペレーティング・システム(以下、OSと略す)が動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで組み込み可能とするためのファームウェア(以下、BIOS(Basic Input/Output System)と呼ぶ)によるマルチセルシステム(以下、チップセット初期化方式と呼ぶ)に関する。
【0002】
【従来の技術】
図1において、BIOS00は、オンライン・システム000の立ち上げ時に、オンライン・システム000を構成する第1セルC1および第2セルC2上の各チップセット13および23が持つ、PCI(Peripheral Component Interconnect)メモリ・レンジ・レジスタ131および231,PCI・IO(Input/Output)レンジ・レジスタ132および232,割り込みレンジ・レジスタ133および233などのレンジ・レジスタ群を初期化する。一方、このとき、予備システム999を構成する第3セルである予備セルC3上のチップセット33が持つPCIメモリ・レンジ・レジスタ331,PCI・IOレンジ・レジスタ332,割り込みレンジ・レジスタ333などのレンジ・レジスタ群は初期化されない。その理由は、予備セルC3がオンライン・システム000にまだ組み込まれていないため、BIOS00は、予備セルC3を制御(初期化)することができないためである。
【0003】
一般的に、レンジ・レジスタ群などのチップセット初期化処理において、BIOS00が選択できる2つの初期化方式がある。
【0004】
第1の初期化方式は、BIOS00が、オンライン・システム000を構成しているセルを調べながら(セル構成判別処理を行いながら)、オンライン・システム000に組み込まれているセルに対してのみレンジ・レジスタ群初期化処理を行い、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33が持つレンジ・レジスタ群は初期化しない(初期化処理をスキップする)という方式である(BIOSによるチップセット初期化方式1)。第1の初期化方式には、レンジ・レジスタを初期化する毎に、BIOS00は、セル構成判別処理を行わなければならない、という欠点(欠点1)がある。
【0005】
第2の初期化方式は、BIOS00が、オンライン・システム000を構成する第1セルC1および第2セルC2とともに、オンライン・システム000にまだ組み込まれていない予備セルC3も含めた全てのセル上の各チップセットが持つレンジ・レジスタ群に対して、一括して初期値を設定するという方式である(BIOSによるチップセット初期化方式2)。第2の初期化方式は、各セル上のチップセットが、一般的なPCI仕様で規定されたPCIコンフィグレーション・アクセス・メカニズムに準じていた場合に採用できる方式である。それは、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値の書き込みは破棄される、という前記PCI仕様で規定されたPCIコンフィグレーション・アクセス・メカニズムに準じた動作(特徴1)が行われ、オンライン・システム000を構成する他のセル上の各チップセットが持つレンジ・レジスタ群の初期設定に対しては、一切、擾乱を与えない(特徴2)、という2つのチップセットの特徴を利用した方式である。これらの特徴を利用することで、第2の初期化方式では、前記第1の初期化方式における前記欠点1を排除して、全てのセル上の各チップセットが持つレンジ・レジスタ群に対して一括して初期値を設定することによって、レンジ・レジスタ群初期値設定処理を簡略化することができるという利点(利点1)がある。
【0006】
また、第2の初期化方式は、全てのセル(チップセット)に対して、同じレンジ・レジスタ群初期値を設定する場合に有効である。例えば、もし、第1セルC1上のチップセット13が持つPCIメモリ・レンジ・レジスタ131と、第2セルC2上のチップセット23が持つPCIメモリ・レンジ・レジスタ231とに対して、異なる値を設定する場合、セル構成を判別しながら、初期値を決める必要があるため、セル構成判別処理を排除できるという第2の初期化方式における前記利点1を活用することはできない。このような初期設定を行う場合は、前記第1の初期化方式が採用される場合が多い。一方、BIOS00が初期化するレンジ・レジスタ群は、全てのセル(チップセット)が、同じレンジ・レジスタ群初期値に設定され、保持しなければならない、というチップセット要求仕様(要求仕様1)を持ったレジスタであるため、BIOS00が、レンジ・レジスタ群初期値設定処理において、第2の初期化方式を採用することは有効である。
【0007】
ここで、前記チップセット要求仕様1を説明すると、BIOS00は、チップセット仕様として、図2で示されるレンジ・レジスタ群初期値を、全てのセルの各チップセットに対して設定することが要求されている。このレンジ・レジスタ群初期値は、図3で示されたリソース・レンジ空間において、どのセルに対して、どのリソース・レンジが割り当てられているか(アサインされているか)を示している。例えば、図2を参照すると、PCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列は、最下位アドレス(BOTTOM)が“X1”、最上位アドレス(TOP)が“X1+α1”とする、図3における第1PCIメモリ空間110というリソース・レンジが、第1セルC1に対してアサインされていることを示している。この場合、第1セルC1は、第1PCIメモリ空間110のオーナーであるという。このような、各セル毎にオーナーとするリソース・レンジの最下位アドレスおよび最上位アドレスが示されたレンジ・レジスタ群初期値(図2参照)を、BIOS00は、オンライン・システム000に組み込み可能な全てのセル(チップセット)に対して設定する。このように、複数のセルで構成されるオンライン・システム000では、オンライン・システム000に組み込み可能な全てのセル(チップセット)が同じレンジ・レジスタ群初期値を持ち、各セル(チップセット)はレンジ・レジスタを参照しながらリソース・アクセスをオーナーへフォワードし、オーナーがそのアクセスをリソースへルーティングするという動作が行われる。
【0008】
例えば、図4において、PCIメモリ・アクセスac1が、図3における第2PCIメモリ空間210へのアクセスであった場合、チップセット13は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…の第2セルC2の列を参照して、そのPCIメモリ・アクセスac1が、第2セルC2がオーナーであるPCIメモリ・レンジ(“X2”から“X2+α2”までの範囲)へのアクセスであることを認識する。そして、チップセット13は、そのPCIメモリ・アクセスac1をオーナーである第2セルC2へフォワードする(図4のフォワードfw1)。PCIメモリ・アクセスac1を受け取った第2セルC2上のチップセット23は、同様に、PCIメモリ・レンジ・レジスタ231を参照する。そのPCIメモリ・レンジ・レジスタ231には、チップセット13が持つPCIメモリ・レンジ・レジスタ131と同様に、BIOS00によって、図2で示されたPCIメモリ・レンジ・レジスタ131,231,331,…の初期値が設定されている。次に、チップセット23は、チップセット13と同様に、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…の第2セルC2の列を参照して、PCIメモリ・アクセスac1が、自分自身(第2セルC2)がオーナーであるPCIメモリ・レンジ(“X2”から“X2+α2”までの範囲)へのアクセスであることを認識する。そして、チップセット23は、PCIメモリ・アクセスac1を、第2セルC2に接続されている第2I/Oコントローラ200へルーティングする(図4のルーティングrt1)。
【0009】
このような、チップセットがレンジ・レジスタを参照しながらリソース・アクセスのルーティングを行うリソース・ルーティング方式を採用したコンピュータ・システムにおいて、BIOS00は、オンライン・システム000の立ち上げ時に、前記第1の初期化方式あるいは前記第2の初期化方式のどちらかを採用して、オンライン・システム000を構成するセル上のチップセットが持つレンジ・レジスタ群を初期化する。
【0010】
そして、このような、チップセットがレンジ・レジスタを参照しながらリソース・アクセスのルーティングを行うリソース・ルーティング方式を採用したコンピュータ・システムにおいて、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで、CPU,メモリ,およびそれらを制御するチップセットが搭載された予備セルC3をオンライン・システム000へ組み込む場合、BIOS00は、同様に、予備セルC3上のチップセットが持つレンジ・レジスタ群も初期化しなければならない。
【0011】
なお、先行技術として、本願発明者によるPCIホスト・バス・ブリッジ・システム初期化方式がある(特許文献1参照)。この方式では、BIOSが、情報読み出し機能によりPCIホスト・バス・ブリッジに関する情報を読み出し、初期化処理機能によりPCIホスト・バス・ブリッジに係るPCIデバイスや割り込みコントローラの初期化を行うが、本発明のように、マルチ・セル構成システムにおけるセル上のチップセットを初期化するものではない。
【0012】
【特許文献1】
特開2002−312297号公報(第3頁、図1)
【0013】
【課題を解決するための手段】
しかしながら、従来技術では、予備セルを初期化するための技術が存在しなかった。
【0014】
例えば、前記第1の初期化方式あるいは前記第2の初期化方式のどちらかを採用したBIOSが、予備セルを初期化する場合、予備セルをオンライン・システムへ組み込んだ後、オンライン・システムの立ち上げ時と同様に、前記第1の初期化方式あるいは前記第2の初期化方式の手順に従って、予備セル上のチップセットに対するレンジ・レジスタ群初期値設定を行うという方法が考えられるが、この方法には、2つの課題があった。
【0015】
第1の課題は、予備セルをオンライン・システムへ組み込んだ直後に、かつBIOSがまだ予備セル上のチップセットに対するレンジ・レジスタ群初期値設定を行う前に、予備セルのCPUからリソースへのアクセスが発行された場合、まだ予備セル上のチップセットが持つレンジ・レジスタ群には初期値が設定されていないため、予備セル上のチップセットは、そのアクセスを正しくオーナー(セル)へフォワードすることができないという問題である。
【0016】
また、1つのシステム・バス上に複数のセルが接続されたマルチ・セル構成システムにおいては、あるセル上のチップセットからリソースのオーナー(セル)へリソース・アクセスをフォワードする場合、ブロード・キャスト形式で、リソース・アクセスをシステム・バス上にフォワードする。すると、システム・バス上に接続された全てのセル上のチップセットがそのリソース・アクセスを受け取り、レンジ・レジスタを参照して、自分自身がオーナーとしているリソースへのアクセスか否かの判断を行う。
【0017】
第2の課題は、このようなマルチ・セル構成システムであるオンライン・システム000へ予備セルを組み込んだ直後に、かつBIOS00がまだ予備セル上のチップセットに対するレンジ・レジスタ群初期値設定を行う前に、あるセルのCPUからリソースへのアクセスが発行され、そのセル上のチップセットがブロード・キャスト形式で、そのリソース・アクセスをシステム・バス上にフォワードした場合、まだ予備セル上のチップセットが持つレンジ・レジスタ群には初期値が設定されておらず、かつレンジ・レジスタに不定な値が残っていたとき、予備セル上のチップセットは、その不定なレンジ・レジスタを参照して、その結果、予備セル上のチップセットが誤って自分自身がオーナーであると判断してしまうと、複数のオーナーが存在することになってしまい、1つのリソース・アクセスが、複数のオーナーへルーティングされてしまう可能性があるという問題である。
【0018】
この場合は、予備セルがオンライン・システム000に組み込まれた瞬間から、BIOS00による予備セル上のチップセットに対するレンジ・レジスタ群初期値設定が完了するまでの間、BIOS00が動作しているCPUを除く全てのCPUの動作を止めることで回避することが可能だが、これは、OSの動作、すなわちオンライン・システム000を停止させることに繋がるため、最善な回避策とはいえない。
【0019】
チップセットがレンジ・レジスタを参照しながらリソース・アクセスのルーティングを行うリソース・ルーティング方式を採用したコンピュータ・システムにおいて、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで、CPU,メモリ,およびそれらを制御するチップセットが搭載された予備セルをオンライン・システム000へ組み込み可能とするためには、前記2つの課題を解決しながら、予備セルを初期化する新たな技術が必要である。
【0020】
本発明の目的は、CPU,メモリ,およびそれらを制御するチップセットが搭載されたセルを、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで組み込み可能とするチップセット初期化方式を提供することにある。
【0021】
【課題を解決するための手段】
本発明のチップセット初期化方式は、システム・バス上に複数のセルが接続されたマルチ・セル構成システムであって、レンジ・レジスタ参照によるリソース・ルーティング方式を採用したコンピュータ・システムにおけるチップセット初期化方式において、オンライン・システムの立ち上げ時に、仮想セルを定義して、オンライン・システムにまだ組み込まれていない予備セル上のチップセットに対するレンジ・レジスタ群初期値設定を、前記仮想セル上の仮想チップセットに対するレンジ・レジスタ群初期値設定へと置換するオンライン・システム上で動作する第1のBIOSと、前記予備セルをオンライン・システムへ組み込む前に、前記仮想セル上の仮想チップセットに対するレンジ・レジスタ群初期値を前記予備セル上のチップセットに対するレンジ・レジスタ群初期値として前記予備セル上のメモリの所定領域へコピーするサービス・プロセッサ・ファームウェアと、前記予備セル上のメモリの所定領域から前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を読み取って前記予備セル上のチップセットが持つレンジ・レジスタ群に設定する予備システム上で動作する第2のBIOSとを有することを特徴とする。
【0022】
また、本発明のBIOSは、オンライン・システムの立ち上げ時に、仮想セルを定義して、オンライン・システムにまだ組み込まれていない予備セル上のチップセットに対するレンジ・レジスタ群初期値設定を、前記仮想セル上の仮想チップセットに対するレンジ・レジスタ群初期値設定へと置換することを特徴とする。
【0023】
さらに、本発明のサービス・プロセッサ・ファームウェアは、オンライン・システムにまだ組み込まれていない予備セルをオンライン・システムへ組み込む前に、前記仮想セル上の仮想チップセットに対するレンジ・レジスタ群初期値を前記予備セル上のチップセットに対するレンジ・レジスタ群初期値として前記予備セル上のメモリの所定領域へコピーすることを特徴とする。
【0024】
さらにまた、本発明のBIOSは、オンライン・システムにまだ組み込まれていない予備セル上のメモリの所定領域から前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を読み取って前記予備セル上のチップセットが持つレンジ・レジスタ群に設定することを特徴とする。
【0025】
また、本発明のチップセット初期化方式は、オンライン・システムに組み込み可能な全てのセルに対してバス番号をアサインして物理セル番号・バス番号対応表を作成し、セルがオンライン・システムに組み込まれているか否かを調べ、セルがオンライン・システムにまだ組み込まれていない予備セルであることを認識すると、前記物理セル番号・バス番号対応表を参照して前記予備セルに対応するバス番号を取得し、該バス番号を前記予備セルに対応するエントリの仮想バス番号フィールドへ登録するとともに前記予備セルに対応するエントリの仮想セル・フラグをオンに設定することを繰り返して仮想セル・テーブルを作成し、前記物理セル番号・バス番号対応表を参照してレンジ・レジスタ群初期値設定を行うセルへアサインされているバス番号を取得し、該バス番号をバス番号とするセル・コンフィグレーション・アドレスを生成し、該セル・コンフィグレーション・アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことをオンライン・システムに組み込み可能な全てのセルに対して繰り返すことによりレンジ・レジスタ群初期値設定処理を行うオンライン・システム上で動作する第1のBIOSと、オンライン・システムにまだ組み込まれていない予備セルをオンライン・システムへ組み込む前に前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を前記予備セル上のメモリの所定領域へコピーし、前記予備セルのオンライン・システムへの組み込みが可能である旨の通知を受けると前記予備セルをオンライン・システムへ組み込むサービス・プロセッサ・ファームウェアと、前記予備セル上のメモリの所定領域から前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を読み取って前記予備セル上のチップセットが持つレンジ・レジスタ群に設定し、前記サービス・プロセッサ・ファームウェアに対して前記予備セルのオンライン・システムへの組み込みが可能である旨を通知する予備システム上で動作する第2のBIOSとを有することを特徴とする。
【0026】
さらに、本発明のBIOSは、オンライン・システムに組み込み可能な全てのセルに対してバス番号をアサインして物理セル番号・バス番号対応表を作成し、セルがオンライン・システムに組み込まれているか否かを調べ、セルがオンライン・システムにまだ組み込まれていない予備セルであることを認識すると、前記物理セル番号・バス番号対応表を参照して前記予備セルに対応するバス番号を取得し、該バス番号を前記予備セルに対応するエントリの仮想バス番号フィールドへ登録するとともに前記予備セルに対応するエントリの仮想セル・フラグをオンに設定することを繰り返して仮想セル・テーブルを作成し、前記物理セル番号・バス番号対応表を参照してレンジ・レジスタ群初期値設定を行うセルへアサインされているバス番号を取得し、該バス番号をバス番号とするセル・コンフィグレーション・アドレスを生成し、該セル・コンフィグレーション・アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことをオンライン・システムに組み込み可能な全てのセルに対して繰り返すことによりレンジ・レジスタ群初期値設定処理を行うことを特徴とする。
【0027】
さらにまた、本発明のBIOSは、仮想セル・コンフィグレーション・アドレスから仮想バス番号を取り出し、該仮想バス番号に対応するセル番号を前記仮想セル・テーブルを検索することによって取得し、仮想セル・コンフィグレーション空間がメモリ上にマッピングされているメモリマップド仮想セル・コンフィグレーション空間のメモリ内開始ベース・アドレスと取得したセル番号であるオフセット値とからベース・アドレスを計算し、仮想セル・コンフィグレーション・アドレスから仮想バス番号を取り除いた値をベース・アドレスにプラスして書き込み先メモリ番地アドレスとし、該書き込み先メモリ番地アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことにより、メモリマップド仮想レンジ・レジスタ群初期値設定処理を行うことを特徴とする。
【0028】
また、本発明のサービス・プロセッサ・ファームウェアは、オンライン・システムにまだ組み込まれていない予備セルをオンライン・システムへ組み込む前に前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を前記予備セル上のメモリの所定領域へコピーし、前記予備セルのオンライン・システムへの組み込みが可能である旨の通知を受けると前記予備セルをオンライン・システムへ組み込むことを特徴とする。
【0029】
さらに、本発明のBIOSは、オンライン・システムにまだ組み込まれていない予備セル上のメモリの所定領域から前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を読み取って前記予備セル上のチップセットが持つレンジ・レジスタ群に設定し、サービス・プロセッサ・ファームウェアに対して前記予備セルのオンライン・システムへの組み込みが可能である旨を通知することを特徴とする。
【0030】
一方、本発明のチップセット初期化方法は、システム・バス上に複数のセルが接続されたマルチ・セル構成システムであって、レンジ・レジスタ参照によるリソース・ルーティング方式を採用したコンピュータ・システムにおけるチップセット初期化方法において、オンライン・システムにまだ組み込まれていない予備セル上のチップセットに対するレンジ・レジスタ群初期値設定が破棄される前に該レンジ・レジスタ群初期値を盗み取る工程と、前記予備セルに対して仮想セルを定義して、該仮想セル上の仮想チップセットが持つレンジ・レジスタ群がマッピングされた仮想セル・コンフィグレーション空間をさらにメモリの所定領域へマッピングすることでメモリマップド仮想セル・コンフィグレーション空間を実装する工程と、前記盗み取ったレンジ・レジスタ群初期値を前記メモリマップド仮想セル・コンフィグレーション空間上の対応するレンジ・レジスタ位置に書き込んでメモリ上で保持する工程と、前記メモリ上から前記予備セル上のチップセットに対するレンジ・レジスタ群初期値を読み取って前記予備セル上のチップセットが持つレンジ・レジスタ群に設定する工程とを含むことを特徴とする。
【0031】
また、本発明のチップセット初期化方法は、システム・バス上に複数のセルが接続されたマルチ・セル構成システムであって、レンジ・レジスタ参照によるリソース・ルーティング方式を採用したコンピュータ・システムにおけるチップセット初期化方法において、物理セル番号とバス番号とを対応させた物理セル番号・バス番号対応表を作成する物理セル番号・バス番号対応表作成処理と、物理セル番号と、物理セル番号のセルが仮想セルか否かを表す仮想セル・フラグと、バス番号とを対応させた仮想セル・テーブルを作成する仮想セル・テーブル作成処理と、オンライン・システムに組み込み可能な全てのセル上のチップセットに対してレンジ・レジスタ群初期値を設定するレンジ・レジスタ群初期値設定処理と、前記レンジ・レジスタ群初期値設定処理においてセルが仮想セルであったときに仮想レンジ・レジスタ群にレンジ・レジスタ群初期値を設定する仮想セル・レンジ・レジスタ群初期値設定処理と、前記仮想セル・レンジ・レジスタ群初期値設定処理においてメモリマップド仮想レンジ・レジスタ群にレンジ・レジスタ群初期値を設定するメモリマップド仮想レンジ・レジスタ群初期値設定処理とを含むことを特徴とする。
【0032】
さらに、本発明のチップセット初期化方法は、前記物理セル番号・バス番号対応表作成処理が、セルに対してバス番号をアサインする処理を全てのセルに関して繰り返すことにより物理セル番号・バス番号対応表を作成することを特徴とする。
【0033】
さらにまた、本発明のチップセット初期化方法は、前記仮想セル・テーブル作成処理が、セルがオンライン・システムに組み込まれているか否かを調べ、前記セルがオンライン・システムにまだ組み込まれていない予備セルであることを認識したときに前記物理セル番号・バス番号対応表を参照して前記予備セルに対応するバス番号を取得し、該バス番号を前記仮想セル・テーブル上の予備セルに対応するエントリの仮想バス番号フィールドに登録し、前記仮想セル・テーブル上の予備セルに対応するエントリの仮想セル・フラグを設定する処理を、全てのセルに関して繰り返すことを特徴とする。
【0034】
また、本発明のチップセット初期化方法は、前記レンジ・レジスタ群初期値設定処理が、前記物理セル番号・バス番号対応表を参照することによりレンジ・レジスタ群初期値設定を行うセルへアサインされているバス番号を取得し、該バス番号をバス番号とするセル・コンフィグレーション・アドレスを生成し、レンジ・レジスタ内オフセット番号を、前記生成されたセル・コンフィグレーション・アドレスのレジスタ番号へプラスし、生成されたセル・コンフィグレーション・アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込む処理を、全てのセルに関して繰り返すことを特徴とする。
【0035】
さらに、本発明のチップセット初期化方法は、前記仮想セル・レンジ・レジスタ群初期値設定処理が、前記仮想セル・テーブルを参照して、セル番号に対応するセルが仮想セルか否かを判断し、セル番号を持つセルが仮想セルであるときに前記仮想セル・コンフィグレーション空間を示す仮想セル・コンフィグレーション・アドレスを生成し、前記仮想セル・コンフィグレーション・アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことを特徴とする。
【0036】
さらにまた、本発明のチップセット初期化方法は、前記メモリマップド仮想レンジ・レジスタ群初期値設定処理が、仮想セル・コンフィグレーション・アドレスから仮想バス番号を取り出し、前記仮想セル・コンフィグレーション空間がメモリ上にマッピングされている前記メモリマップド仮想セル・コンフィグレーション空間のメモリ内開始ベース・アドレスと前記取得したセル番号をオフセット値としてベース・アドレスを計算し、仮想セル・コンフィグレーション・アドレスから仮想バス番号を取り除いた値を前記計算されたベース・アドレスにプラスした値を書き込み先メモリ番地アドレスとし、該書き込み先メモリ番地アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことを特徴とする。
【0037】
また、本発明のチップセット初期化方法は、オンライン・システムの立ち上げ時に、前記予備セル上のチップセットが持つレンジ・レジスタ群初期値を前記メモリマップド仮想セル・コンフィグレーション空間上の前記予備セルが対応する仮想コンフィグレーション・レジスタ・セット位置へ設定し終えると、前記予備セルが対応するメモリマップド仮想セル・コンフィグレーション空間を圧縮して特定領域へコピーして保持し、メモリ内開始アドレスをベース・アドレスとするメモリマップド仮想セル・コンフィグレーション空間ポインタ・テーブルの前記予備セルに対応するエントリにコピー先アドレスを登録しておき、全ての予備セルに対して圧縮処理が終わると前記メモリマップド仮想セル・コンフィグレーション空間が消費しているメモリ領域を全て解放することを特徴とする。
【0038】
さらに、本発明のチップセット初期化方法は、前記オンライン・システムには、各セル毎に仮想セル・スイッチが装備され、仮想セルの内部に仮想セル・コンフィグレーション・レジスタ・セットが装備されていて、前記予備セルがオンライン・システムにまだ組み込まれていないために前記仮想セル・スイッチがオンであり、前記予備セルに対応するバス番号をバス番号とするセル・コンフィグレーション・アドレスを書き込み先アドレスとして指定してレンジ・レジスタ群初期値を書き込むことにより、前記仮想セル・スイッチがオンであるために前記予備セル上のチップセットに対するレンジ・レジスタ群初期値設定は破棄されず、仮想セル・コンフィグレーション空間がマッピングされている仮想セル上の仮想チップセットが装備しているレンジ・レジスタ群に値が設定されて保持されることを特徴とする。
【0039】
さらにまた、本発明のチップセット初期化方法は、前記予備セルがオンライン・システムへ組み込まれたときに、前記仮想セル・スイッチがオフとなると、仮想セル・コンフィグレーション空間がマッピングされている仮想セル上の仮想チップセットが装備しているレンジ・レジスタ群が保持しているレンジ・レジスタ群初期値が前記予備セル上のチップセットが持つレンジ・レジスタ群へ自動的にコピーされることを特徴とする。
【0040】
また、本発明のチップセット初期化方法は、前記予備セル上のチップセットに対するレンジ・レジスタ群初期値設定のスヌープ処理と、BIOSが予備セルを組み込む前に行っていた仮想セルを参照してレンジ・レジスタ群初期値を取得して前記予備セル上のチップセットが持つレンジ・レジスタ群に設定するレンジ・レジスタ群初期値設定とを、ハードウェアが自動的に行うことを特徴とする。
【0041】
さらに、本発明のチップセット初期化方法は、オンライン・システムにまだ組み込まれていない予備セルがオンライン・システムへ組み込まれた場合に前記予備セル上の増設メモリがメモリ上のどのアドレス位置に置かれるかを示し、メモリを増設する場合にどのメモリ位置へ増設メモリを置くかが事前に決まっていたときに、増設メモリ位置を意味する最下位アドレスおよび最上位アドレスを仮想セル・コンフィグレーション空間上の対応するレジスタ位置へ設定しておき、メモリマップド仮想セル・コンフィグレーション空間上の対応するレジスタ位置でメモリ上で保持することを特徴とする。
【0042】
さらにまた、本発明のチップセット初期化方法は、ハードウェアが実装する仮想セル・コンフィグレーション空間上のレジスタ位置でレンジ・レジスタ群初期値を保持し、オンライン・システムにまだ組み込まれていない予備セルをオンライン・システムへ組み込む際に予備システム上で動作するBIOSがメモリ上の対応するレジスタ位置を参照して、前記予備セル上の増設メモリを置くべきメモリ位置を取得して前記予備セル上の増設メモリへ設定することを特徴とする。
【0043】
また、本発明のチップセット初期化方法は、オンライン・システムにまだ組み込まれていない予備セルをオンライン・システムへ組み込むと同時に、ハードウェアにより前記予備セル上の増設メモリを置くべきメモリ位置を前記ハードウェアが実装する仮想セル・コンフィグレーション空間上のレジスタ位置から取り出し前記予備セル上の増設メモリへ自動的に設定することを特徴とする。
【0044】
図1において、BIOS00は、オンライン・システム000の立ち上げ時に、オンライン・システム000を構成する第1セルC1および第2セルC2上の各チップセット13および23が持つ、PCIメモリ・レンジ・レジスタ131および231などのレンジ・レジスタ群を初期化する。一方、このとき、予備システム999を構成する予備セルC3上のチップセット33が持つPCIメモリ・レンジ・レジスタ331などのレンジ・レジスタ群は初期化されない。その理由は、予備セルC3は、オンライン・システム000にまだ組み込まれていないため、BIOS00は、予備セルC3を制御(初期化)することができないためである。また、このとき、予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値の書き込みは破棄される、というPCI仕様で規定されたPCIコンフィグレーション・アクセス・メカニズムに準じた動作が行われる。
【0045】
本発明では、レンジ・レジスタ群の初期設定を行うBIOS00に対して、新たな仕組みを設けることによって、オンライン・システム000を構成する第1セルC1および第2セルC2上のチップ請求項aと13および23とともに、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33も一括して初期化可能とするためのチップセット初期化方式(予備セル組み込み方式)を提案するものである。
【0046】
その新たな仕組みとは、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値の書き込みが破棄される前に、BIOS00自身が、それを盗み取り、同時に、予備セルC3に対して仮想セルCAを定義して、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群をメモリの所定領域にマッピングすることで、メモリマップド仮想セル・コンフィグレーション空間を実装して、盗み取ったレンジ・レジスタ群初期値をメモリマップド仮想セル・コンフィグレーション空間上の対応するレジスタ位置に書き込んでメモリ上で保持する仕組みである。
【0047】
そして、図1におけるサービス・プロセッサ・ファームウェアB1は、予備セルC3をオンライン・システム000に組み込む前に、メモリ上に保持された予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値(メモリマップド仮想セル・コンフィグレーション空間上に保持されたレンジ・レジスタ群初期値)を、予備セルC3上のメモリ32へコピーする。そして、予備セルC3上で動作するBIOS01は、メモリ32から予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値を読み取り、予備セルC3上のチップセット33が持つPCIメモリ・レンジ・レジスタ331などのレンジ・レジスタ群に設定する。次に、予備セルC3上で動作するBIOS01は、サービス・プロセッサ・ファームウェアB1に対して、予備セルC3がオンライン・システム000へ組み込み可能である旨を通知する。そして、サービス・プロセッサ・ファームウェアB1は、予備セルC3をオンライン・システム000へ組み込む。
【0048】
このように、本発明では、コンピュータ・システムの立ち上げ時に行われるBIOS00によるレンジ・レジスタ群初期値設定処理において、破棄される予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値を、BIOS00自身がそれを盗み取り、そのレンジ・レジスタ群初期値をメモリ上にマッピングされた仮想セルCA上で保持し、予備セルC3をオンライン・システム000へ組み込む前に、予備システム999上で動作する別のBIOS01が、その保持されたレンジ・レジスタ群初期値を予備セルC3上のチップセット33が持つレンジ・レジスタ群へ設定することによって予備セルC3を初期化し、予備セルC3をオンライン・システム000へ増設して組み込み可能とするためのチップセット初期化方式(予備セル組み込み方式)を提案するものである。
【0049】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0050】
[第1の実施の形態]
図1を参照すると、本発明の第1の実施の形態に係るチップセット初期化方式では、オンライン・システム000が、CPU,メモリ,およびそれらを制御するチップセットが搭載されている第1セルC1および第2セルC2で構成されている。
【0051】
第1セルC1は、CPU11と、メモリ12と、チップセット13とで構成されている。チップセット13は、PCIメモリ・レンジ・レジスタ131,PCI・IOレンジ・レジスタ132,割り込みレンジ・レジスタ133などのレンジ・レジスタ群を備えている。
【0052】
第2セルC2も、第1セルC1と同様に、CPU21と、メモリ22と、チップセット23とで構成されている。チップセット23は、PCIメモリ・レンジ・レジスタ231,PCI・IOレンジ・レジスタ232,割り込みレンジ・レジスタ233などのレンジ・レジスタ群を備えている。
【0053】
オンライン・システム000は、さらに、第1I/Oコントローラ100と、第2I/Oコントローラ200とを備えている。そして、第1I/Oコントローラ100は第1セルC1と、第2I/Oコントローラ200は第2セルC2とそれぞれ接続されている。
【0054】
一方、予備システム999は、CPU31,メモリ32,およびそれらを制御するチップセット33が搭載されている第3セルC3で構成されている。第3セルC3は、オンライン・システム000にまだ組み込まれていない予備セルである。以下、第3セルC3を、予備セルC3と呼ぶ。
【0055】
予備セルC3も、第1セルC1および第2セルC2と同様に、CPU31と、メモリ32と、チップセット33とで構成されている。チップセット33は、PCIメモリ・レンジ・レジスタ331,PCI・IOレンジ・レジスタ332,割り込みレンジ・レジスタ333などのレンジ・レジスタ群を備えている。
【0056】
なお、オンライン・システム000に組み込み可能な全てのセル上のチップセットが持つレンジ・レジスタ群のレンジ・レジスタは、自身のレンジ・レジスタ群において、同じレンジ・レジスタ群初期値が設定され、保持しなければならない、というチップセット要求仕様(要求仕様1)を持ったレジスタである。
【0057】
本発明が対象とするコンピュータ・システムでは、オンライン・システム000を構成するセルの枚数,およびI/Oコントローラの数は限定しない。また、予備システム999を構成する予備セルC3の枚数に関しても限定しない。さらに、1つのオンライン・システム000に対する予備システム999の数も限定しない。
【0058】
第1の実施の形態(図1)では、1つのオンライン・システム000と、それを構成する第1セルC1および第2セルC2と、第1I/Oコントローラ100および第2I/Oコントローラ200と、1つの予備システム999と、それを構成する1枚の予備セルC3とで構成されたコンピュータ・システムを1つの実施の形態の構成として、OS(図示せず)がオンライン・システム000で動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで、CPU31,メモリ32,およびそれらを制御するチップセット33が搭載された予備セルC3をオンライン・システム000へ増設して組み込み可能とするためのチップセット初期化方式(予備セル組み込み方式)を説明する。
【0059】
BIOS00は、オンライン・システム000の立ち上げ時に、第1セルC1および第2セルC2を初期化する。
【0060】
一方、BIOS01は、予備システム999の立ち上げ時に、予備セルC3を初期化する。
【0061】
各セルC1,C2,C3の初期化は、各チップセット13,23,33が持つ、PCIメモリ・レンジ・レジスタ131,231,331,PCI・IOレンジ・レジスタ132,232,332,割り込みレンジ・レジスタ133,233,333などのレンジ・レジスタ群を初期化することである。
【0062】
図2を参照すると、図1における各セル上のチップセットが備えているレンジ・レジスタ群の初期値が表されている。例えば、PCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列は、第1セルC1と接続された第1I/Oコントローラ100に接続されているPCIカード群101が消費するPCIメモリ空間のレンジを示している。そのレンジは、最下位アドレス(BOTTOM)が“X1”であり、最上位アドレス(TOP)が“X1+α1”であることを表している。すなわち、第1セルC1は、PCIメモリ空間の“X1”から“X1+α1”までのレンジのオーナーであることを意味している。
【0063】
第2セルC2の列に関しても同様である。
【0064】
このように、PCIメモリ・レンジ・レジスタ131,231,331,…は、各セルがオーナーとしているPCIメモリ空間のレンジを示したレジスタである。
【0065】
PCI・IOレンジ・レジスタ132,232,332,…に関しても同様である。
【0066】
また、割り込みレンジ・レジスタ133,233,333,…に関しても同様である。
【0067】
BIOS00は、オンライン・システム000の立ち上げ時に、前記チップセット要求仕様1に従い、図2で示されたレンジ・レジスタ群初期値を、オンライン・システム000に組み込み可能な全てのセル上のチップセットが持つレンジ・レジスタ群に対して設定する。これにより、各セルがオーナーとなるべきリソース・レンジが決定される。これを、BIOS00による各セルに対するリソース・アサイン(割り当て)と呼ぶ。
【0068】
図3を参照すると、BIOS00がオンライン・システム000の立ち上げ時に決定した(各セルへアサインした)リソース・レンジが表されている。例えば、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列を参照すると、第1セルC1がオーナーとしているレンジは、最下位アドレス“X1”から最上位アドレス“X1+α1”までのレンジであり、そのレンジは、図3を参照すると、第1PCIメモリ空間110であることが分かる。
【0069】
図4において、第1セルC1上のCPU11からPCIメモリ・アクセスac1が発行されると、チップセット13は、PCIメモリ・レンジ・レジスタ131を参照する。PCIメモリ・レンジ・レジスタ131には、BIOS00によって、図2で示されたPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列の初期値が設定されている。例えば、PCIメモリ・アクセスac1が、図3における第2PCIメモリ空間210へのアクセスであった場合、チップセット13は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…の第2セルC2の列を参照して、PCIメモリ・アクセスac1が、第2セルC2がオーナーであるPCIメモリ・レンジ(“X2”から“X2+α2”までの範囲)へのアクセスであることを認識する。このため、チップセット13は、PCIメモリ・アクセスac1をオーナーである第2セルC2へフォワードする(図4のフォワードfw1)。
【0070】
PCIメモリ・アクセスac1を受け取った第2セルC2上のチップセット23は、同様に、PCIメモリ・レンジ・レジスタ231を参照する。PCIメモリ・レンジ・レジスタ231には、チップセット13が持つPCIメモリ・レンジ・レジスタ131と同様に、BIOS00によって、図2で示されたPCIメモリ・レンジ・レジスタ131,231,331,…の第2セルC2の列の初期値が設定されている。そして、チップセット23は、チップセット13と同様に、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…の第2セルC2の列を参照して、PCIメモリ・アクセスac1が、自分自身(第2セルC2)がオーナーであるPCIメモリ・レンジ(“X2”から“X2+α2”までの範囲)へのアクセスであることを認識する。よって、チップセット23は、PCIメモリ・アクセスac1を、第2セルC2に接続されている第2I/Oコントローラ200へルーティングする(図4のルーティングrt1)。
【0071】
このようにして、CPUからリソースへのアクセスが発行されると、チップセットが、レンジ・レジスタを参照することで、どのオーナー(セル)のリソースへのアクセスかを認識し、そのアクセスをリソースのオーナー(セル)へフォワードして、オーナー(セル)上のチップセットも同様に、レンジ・レジスタを参照することで、自分自身がオーナーとしているリソースへのアクセスであることを認識し、オーナー(セル)上のチップセットが、そのアクセスをI/Oコントローラへルーティングすることで、CPUから発行されたリソース・アクセスが、実際のリソースへ到達することができる。
【0072】
本発明では、このようなレンジ・レジスタ参照によるリソース・ルーティング方式を採用したコンピュータ・システムにおいて、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで、CPU,メモリ,およびそれらを制御するチップセットが搭載された予備セルを増設して組み込み可能とするためのチップセット初期化方式を提案するものである。
【0073】
このようなリソース・ルーティング方式を採用したコンピュータ・システムにおいて、図1に示したように、予備セルC3をオンライン・システム000へ組み込む場合、予備セルC3は、第1セルC1および第2セルC2上のチップセット31および32が持つレンジ・レジスタ群と同様に、図2で示されたレンジ・レジスタ群初期値が、チップセット33が持つレンジ・レジスタ群に設定された状態で、オンライン・システム000へ組み込まれなければならない。
【0074】
その理由は、図5を参照すると、予備セルC3がオンライン・システム000へ組み込まれた後、例えば、予備セルC3上のCPU31から、図3における第2PCIメモリ空間210に対するPCIメモリ・アクセスac3が発行された場合、チップセット33は、PCIメモリ・レンジ・レジスタ331を参照して、PCIメモリ・アクセスac3が、第2セルC2がオーナーである第2PCIメモリ空間210へのアクセスであることを認識して、PCIメモリ・アクセスac3をオーナー(第2セルC2)へフォワードしなければならないからである(図5のフォワードfw3)。そのためには、図1において、予備セルC3をオンライン・システム000に組み込む前に、第1セルC1および第2セルC2上のチップセット31および32が持つレンジ・レジスタ群と同様のレンジ・レジスタ群初期値(図2参照)を、予備セルC3上のチップセット33が持つレンジ・レジスタ群に設定するための新たな仕組みが必要である。
【0075】
図1を参照すると、オンライン・システム000には、予備セルC3のオンライン増設を想定し、仮想セルCAが装備されている。BIOS00は、オンライン・システム000の立ち上げ時に、第1セルC1および第2セルC2とともに、仮想セルCAを初期化する。その初期化は、図2で示されるレンジ・レジスタ群初期値を、第1セルC1および第2セルC2上のチップセット13および23が持つレンジ・レジスタ群とともに、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群に対して設定することである。
【0076】
図6を参照すると、BIOS00によるレンジ・レジスタ群初期値設定処理が示されている。例えば、BIOS00は、第1セルC1上のチップセット13が持つレンジ・レジスタ群の1つであるPCIメモリ・レンジ・レジスタ131の第1セル・レンジ部へ、第1セルC1がオーナーである第1PCIメモリ空間110(図3参照)の最下位アドレス“X1”および最上位アドレス“X1+α1”を設定する(図6の初期化iz1)。このとき、一般的に、BIOS00は、処理の簡略化のため、設定先のセル(チップセット)がオンライン・システム000に組み込まれているか否かを調べることなく、オンライン・システム000に組み込み可能な全てのセル上のチップセットのPCIメモリ・レンジ・レジスタの第1セル・レンジ部に対して値を設定する。例えば、図6において、BIOS00は、第2セルC2上のチップセット23が持つPCIメモリ・レンジ・レジスタ231の第1セル・レンジ部に対して、同様な値を設定する。これを、非オーナーであるセルに対する値の設定であることから、シャドウィングと呼ぶ(図6のシャドウィングsw1)。
【0077】
同様に、予備セルC3上のチップセット33に対しても値の設定を行うが、予備セルC3は、オンライン・システム000にまだ組み込まれていないため、値の設定は破棄される(図6のディスカードdc1)。このとき、本実施の形態では、破棄される直前に、予備セルC3上のチップセット33に対する値の設定(図6のディスカードdc1)を盗み取り、その値を、仮想セルCA上の仮想チップセットA3が持つPCIメモリ・レンジ・レジスタA31の第1セル・レンジ部へ設定する(図6のスヌープsn1)。
【0078】
このようにして、BIOS00は、図2で示されるレンジ・レジスタ群初期値を、第1セルC1および第2セルC2上のチップセット31および32が持つレンジ・レジスタ群とともに、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群に対しても設定する。
【0079】
図7を参照すると、一般的なPCIコンフィグレーション・アドレスpcaの形式が示されている。PCIコンフィグレーション・アドレスpcaは、有効フラグ,予約,バス番号,デバイス番号,ファンクション番号,レジスタ番号等からなる。BIOS00は、第1セルC1上のチップセット13と、第2セルC2上のチップセット23とに対して、バス番号を割り当てる(アサインする)。そして、BIOS00は、PCIコンフィグレーション・アドレスpcaを使って、各チップセット13および23を制御することができる。
【0080】
図8は、BIOS00が各チップセット(セル)にアサインしたバス番号の一例を示す物理セル番号・バス番号対応表cbtである。BIOS00は、オンライン・システム000の立ち上げ時に、オンライン・システム000に組み込まれている第1セルC1へバス番号“BUSNO1”を、第2セルC2へバス番号“BUSNO2”をアサインする。そして、それらをバス番号とする、図7で示されるPCIコンフィグレーション・アドレスpcaを使って、各チップセット13,23,33,…が備えているレンジ・レジスタ群を初期化する。具体的には、図6において、BIOS00は、第1セルC1上のチップセット13が持つレンジ・レジスタ群の1つであるPCIメモリ・レンジ・レジスタ131の第1セル・レンジ部へ、第1セルC1がオーナーである第1PCIメモリ空間110(図3参照)の最下位アドレス“X1”および最上位アドレス“X1+α1”を設定する場合(図6の初期化iz1)、バス番号を“BUSNO1”とする図7で示されるPCIコンフィグレーション・アドレスpcaを書き込み先アドレスとして指定し、そのアドレスに対して値を書き込む。また、オンライン・システム000にまだ組み込まれていない予備セルC3に対しても、BIOS00は、バス番号“BUSNOA”をアサインする。しかし、予備セルC3はオンライン・システム000にまだ組み込まれていないため、BIOS00は、PCIコンフィグレーション・アドレスpcaを使って、予備セルC3を初期化することはできない。例えば、図6において、BIOS00は、予備セルC3に割り当てた“BUSNOA”をバス番号とする図7で示されるPCIコンフィグレーション・アドレスpcaを書き込み先のアドレスとして指定し、そのアドレスに対して値を書き込むことで、予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定(図6のシャドウィングsw1およびシャドウィングsw2)を行うが、この設定が破棄されることを意味している(図6のディスカードdc1およびディスカードdc2)。これは、一般的なPCI仕様で規定されたPCIコンフィグレーション・アクセス・メカニズムに準じた振る舞いである。
【0081】
図9を参照すると、オンライン・システム000の立ち上げ時に、BIOS00が、第1セルC1へバス番号“BUSNO1”を、第2セルC2へバス番号“BUSNO2”をアサインすることによって、各チップセット13および23が持つレンジ・レジスタ群が、セル・コンフィグレーション空間ccsにマッピングされることを表している。オンライン・システム000の立ち上げ時に、BIOS00が、図2で示されたレンジ・レジスタ群初期値を、図6で示されたレンジ・レジスタ群初期値設定処理を用いて、第1セルC1上のチップセット13が持つレンジ・レジスタ群,および第2セルC2上のチップセット23が持つレンジ・レジスタ群に設定すると、セル・コンフィグレーション空間ccsにマッピングされた、PCIメモリ・レンジ・レジスタ131および132,PCI・IOレンジ・レジスタ132および232,割り込みレンジ・レジスタ133および233などのレンジ・レジスタ群に値が設定されて保持される。
【0082】
図10を参照すると、仮想セル・テーブルvctが装備されている。仮想セル・テーブルvctは、物理セル番号,仮想セル・フラグおよびバス番号からなる複数のエントリで構成されている。BIOS00は、オンライン・システム000の立ち上げ時に、オンライン・システム000にまだ組み込まれていないセルを仮想セルCAと定義し、各仮想セルCAに対して仮想バス番号をアサインする。例えば、図1において、予備セルC3がオンライン・システム000にまだ組み込まれていないため、これを仮想セルCAと定義して、図8において、予備セルC3に対して割り当てたバス番号“BUSNOA”と同じ値“BUSNOA”を、仮想バス番号として仮想セルCAにアサインする。このように、BIOS00は、オンライン・システム000の立ち上げ時に、仮想セル・テーブルvctを作成する。
【0083】
図11を参照すると、仮想コンフィグレーション・アドレスvcaの形式が示されている。図11で示される仮想コンフィグレーション・アドレスvcaと、図7で示されるPCIコンフィグレーション・アドレスpcaとは、同じ形式である。BIOS00は、オンライン・システム000にまだ組み込まれていない予備セルC3を仮想セルCAと定義して、仮想バス番号“BUSNOA”をアサインする。そして、BIOS00は、仮想バス番号を“BUSNOA”とする仮想コンフィグレーション・アドレスvcaを使って、仮想セルCA上の仮想チップセットA3を制御することができる。
【0084】
そして、図6において、BIOS00は、オンライン・システム000にまだ組み込まれていない予備セルC3に割り当てた“BUSNOA”をバス番号とする図7で示されるPCIコンフィグレーション・アドレスpcaを形式としたアドレスを書き込み先アドレスとして指定し、そのアドレスに対して値を書き込むことで、予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定(図6のシャドウィングsw1およびシャドウィングsw2)を行うが、このとき、これらシャドウィングが破棄され(図6のディスカードdc1およびディスカードdc2)、次のセルのレンジ・レジスタ群初期値設定に移る前に、値の書き込み先である、“BUSNOA”をバス番号とする、図7におけるPCIコンフィグレーション・アドレスpcaを形式とした書き込み先アドレスと、レンジ・レジスタ群初期値とを盗み取る。
【0085】
次に、BIOS00は、仮想セル・テーブルvctを参照して、仮想セルCA上の仮想チップセットA3に割り当てた仮想バス番号“BUSNOA”を入手して、その仮想バス番号“BUSNOA”をバス番号とする、仮想コンフィグレーション・アドレスvca(図11参照)を形式とした仮想セル・コンフィグレーション・アドレスvccaを生成する。
【0086】
続いて、BIOS00は、前記盗み取ったPCIコンフィグレーション・アドレスpca(図7参照)を形式とした書き込み先アドレスと、前記生成した仮想コンフィグレーション・アドレスvca(図11参照)を形式とした仮想セル・コンフィグレーション・アドレスvccaとを比較し、2つのアドレスが一致することを認識すると、前記盗み取った予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値を、仮想セルCA上の仮想チップセットA3に割り当てた“BUSNOA”を仮想バス番号とする、仮想コンフィグレーション・アドレスvca(図11参照)を形式とした仮想セル・コンフィグレーション・アドレスvccaを書き込み先アドレスとして、そのアドレスに対して書き込む。
【0087】
このようにして、BIOS00は、オンライン・システム000の立ち上げ時に、図2で示されるレンジ・レジスタ群初期値を、第1セルC1上のチップセット13が持つレンジ・レジスタ群,および第2セルC2上のチップセット23が持つレンジ・レジスタ群に設定すると同時に、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群に対しても同様に設定する。
【0088】
図12を参照すると、予備セルC3がオンライン・システム000にまだ組み込まれていないため、これを仮想セルCAと定義して、図8において予備セルC3に対して割り当てたバス番号“BUSNOA”と同じ値である、仮想バス番号“BUSNOA”を仮想セルCAへアサインすることによって、仮想チップセットA3が持つレンジ・レジスタ群が、仮想セル・コンフィグレーション空間vccsへマッピングされることを表している。オンライン・システム000の立ち上げ時に、BIOS00が、図2で示されたレンジ・レジスタ群初期値を、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群に設定すると、図12に示す仮想セル・コンフィグレーション空間vccsにマッピングされた、PCIメモリ・レンジ・レジスタA31,PCI・IOレンジ・レジスタA32,割り込みレンジ・レジスタA33などのレンジ・レジスタ群に値が設定されて保持される。
【0089】
図1を参照すると、第1の実施の形態では、サービス・プロセッサBと、サービス・プロセッサB上で動作するサービス・プロセッサ・ファームウェアB1とが装備されている。サービス・プロセッサ・ファームウェアB1は、オンライン・システム000に対して、BIOS00のメモリ12および22上へのアップロード,予備セルC3の組み込みなどの構成制御などを行う。また、サービス・プロセッサ・ファームウェアB1は、予備システム999に対して、BIOS01のメモリ32へのアップロードなどを行う。さらに、サービス・プロセッサ・ファームウェアB1は、予備システム999を構成している予備セルC3上のCPU31上で動作するBIOS01に対して、オンライン・システム000が装備している仮想セルCAを参照するための手段を提供する。例えば、図1における仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群がマッピングされている、仮想セル・コンフィグレーション空間vccs(図12参照)が、オンライン・システム000において、さらに、メモリ12および22上にマッピングされている場合、サービス・プロセッサ・ファームウェアB1は、予備セルC3をオンライン・システム000へ組み込む前に、オンライン・システム000のメモリ12および22上にマッピングされた、仮想セル・コンフィグレーション空間vccs(図12参照)を、予備セルC3が持つメモリ32の所定領域へコピーする。これにより、BIOS01は、そのメモリ32の所定領域を参照することで、仮想セル・コンフィグレーション空間vccsを参照することができる。
【0090】
そして、予備システム999を構成する予備セルC3のCPU31上で動作するBIOS01は、サービス・プロセッサ・ファームウェアB1が予備セルC3上のメモリ32の所定領域へコピーした仮想セル・コンフィグレーション空間vccsを参照して、予備セルC3上のチップセット33が持つPCIメモリ・レンジ・レジスタ331,PCI・IOレンジ・レジスタ332,割り込みレンジ・レジスタ333などのレンジ・レジスタ群に対して、設定しておくべきレンジ・レジスタ群初期値(図2で示されるレンジ・レジスタ群初期値)を取得する。次に、BIOS01は、それらレンジ・レジスタ群初期値を、予備セルC3上のチップセット33が持つPCIメモリ・レンジ・レジスタ331,PCI・IOレンジ・レジスタ332,割り込みレンジ・レジスタ333などのレンジ・レジスタ群に設定する。そして、BIOS01は、予備セルC3がオンライン・システム000へ組み込み可能であることをサービス・プロセッサ・ファームウェアB1へ通知する。
【0091】
サービス・プロセッサ・ファームウェアB1は、通知を受けると、予備セルC3をオンライン・システム000へ組み込む。
【0092】
このようにして、図1で示された第1の実施の形態に係るリソース・ルーティング方式を採用したコンピュータ・システムであるオンライン・システム000において、仮想セルCAを定義して、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群を仮想セル・コンフィグレーション空間vccs(図12参照)へマッピングして、予備セルC3をオンライン・システム000へ組み込むときに、チップセット33のレンジ・レジスタ群に設定しておくべきレンジ・レジスタ群初期値(図2で示されるレンジ・レジスタ群初期値)を仮想セル・コンフィグレーション空間vccsに保持して、仮想セル・コンフィグレーション空間vccsが、オンライン・システム000を構成している第1セルC1および第2セルC2が持つメモリ12および22上にマッピングされている場合、サービス・プロセッサ・ファームウェアB1が、メモリ12および22上にマッピングされた仮想セル・コンフィグレーション空間vccsを、予備セルC3上のチップセット33が持つメモリ32の所定領域へコピーして、BIOS01が、その所定領域を参照することで、仮想セル・コンフィグレーション空間vccsを参照可能として、予備セルC3上のチップセット33が持つレンジ・レジスタ群に対して設定しておくべきレンジ・レジスタ群初期値(図2で示されるレンジ・レジスタ群初期値)を取得して、それらレンジ・レジスタ群初期値を、予備セルC3上のチップセット33が持つレンジ・レジスタ群に設定することで、予備セルC3をオンライン・システム000へ組み込み可能とするための、CPU,メモリ,およびそれらを制御するチップセットを搭載した予備セルC3を、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで増設して組み込み可能とするためのチップセット初期化方式を提案するものである。
【0093】
次に、このように構成された第1の実施の形態に係るチップセット初期化方式の全体の動作について、図13,図14,および図15のフローチャートを参照して詳細に説明する。
【0094】
図13は、BIOS00による物理セル番号・バス番号対応表cbt(図8参照)を作成するためのフローチャートを示す。
【0095】
BIOS00は、オンライン・システム000に組み込み可能な全てのセルに関して、処理を繰り返す(図13のステップS101)。
【0096】
例えば,BIOS00は、第1セルC1に対して、図8で示されるバス番号“BUSNO1”をアサインする(図13のステップS102)。同様にして、BIOS00は、第2セルC2に対しても、図8で示されるバス番号“BUSNO2”をアサインする(図13のステップS102)。また、BIOS00は、予備セルC3はオンライン・システム000にまだ組み込まれていないが、予備セルC3に対しても、バス番号“BUSNOA”をアサインする(図13のステップS102)。このとき、予備セルC3は、オンライン・システム000にまだ組み込まれていないため、“BUSNOA”をバス番号とするPCIコンフィグレーション・アドレスpca(図7参照)を使って、予備セルC3を制御することはできない。
【0097】
次に、BIOS00は、オンライン・システム000に組み込み可能な全てのセルに対して、バス番号をアサインしたか否かを確認する(図13のステップS103)。まだ、オンライン・システム000に組み込み可能な全てのセルに対してバス番号をアサインしていない場合、図13のステップS101に戻る。
【0098】
もし、オンライン・システム000に組み込み可能な全てのセルに対してバス番号をアサインした場合、BIOS00は、物理セル番号・バス番号対応表作成処理を終了する(図13のステップS104)。
【0099】
このようにして、BIOS00は、オンライン・システム000に組み込み可能な全てのセルに対してバス番号をアサインし、物理セル番号・バス番号対応表cbt(図8参照)を作成して保持しておく。
【0100】
図14は、BIOS00による仮想セル・テーブルvct(図10参照)を作成するためのフローチャートを示す。
【0101】
BIOS00は、オンライン・システム000に組み込み可能な全てのセルに関して、処理を繰り返す(図14のステップS201)。
【0102】
まず、BIOS00は、セルがオンライン・システム000に組み込まれているか否かを調べる(図14のステップS202)。その調べ方は、予備セルC3の組み込みなどの構成制御をサービス・プロセッサ・ファームウェアB1が行うことから、サービス・プロセッサ・ファームウェアB1へセルが組み込まれている否かを問い合わせる方式、あるいは、サービス・プロセッサ・ファームウェアB1が持つセル構成情報テーブル(図示せず)などを参照する方式が考えられる。あるいは、BIOS00が、直接、セルが持つ物理的なレジスタなどを読んで、セルが組み込まれていた場合に読むことができる値が読めたか否かによって判断することもできる。
【0103】
そして、それら手法を用いて、予備セルC3がオンライン・システム000にまだ組み込まれていないことを認識すると、BIOS00は、図13のフローチャートで作成された物理セル番号・バス番号対応表cbt(図8参照)を参照して、予備セルC3に対応するバス番号“BUSNOA”を取得する(図14のステップS203)。
【0104】
次に、BIOS00は、そのバス番号“BUSNOA”を、仮想セル・テーブルvct上の予備セルC3に対応するエントリの仮想バス番号フィールドへ登録する(図14のステップS204)。
【0105】
続いて、BIOS00は、仮想セル・テーブルvct上の予備セルC3に対応するエントリの仮想セル・フラグを“1”に設定する(図14のステップS205)。この仮想セル・フラグが“1”に設定されることで、予備セルC3は仮想セルCAであることが示され、その仮想バス番号は、同一エントリ上の仮想バス番号フィールドに登録された“BUSNOA”であることが示される。
【0106】
次に、BIOS00は、オンライン・システム000に組み込み可能な全てのセルに対して、図14のステップS202からS205までの処理が行われたか否かを確認する(図14のステップS206)。まだ、オンライン・システム000に組み込み可能な全てのセルに対して処理が行われていない場合、図14のステップS201に戻る。
【0107】
もし、オンライン・システム000に組み込み可能な全てのセルに対して処理が行われた場合、BIOS00は、仮想セル・テーブル作成処理を終了する(図14のステップS207)。
【0108】
このようにして、BIOS00は、オンライン・システム000にまだ組み込まれていない予備セルC3に対してアサインされたバス番号“BUSNOA”を取得し、それを仮想バス番号として、仮想セル・テーブルvct(図10参照)に登録して保持しておく。
【0109】
図15は、図6で示されたレンジ・レジスタ群初期値設定処理の動作を説明するフローチャートである。BIOS00は、図15で示されるフローチャートに従って、図2で示されるレンジ・レジスタ群初期値を、各セル上のチップセットが持つレンジ・レジスタ群に設定する。
【0110】
図15のフローチャートにおいて、BIOS00は、入力として、3つの値を受け取る。第1の入力は、値を設定すべきレンジ・レジスタ番号である。第2の入力は、そのレンジ・レジスタの中で値を設定すべきレジスタ・フィールドを指すレンジ・レジスタ内オフセット番号(セル番号)である。第3の入力は、そのレンジ・レジスタ内オフセットが示すレジスタ・フィールドへ設定すべきレンジ・レジスタ設定値である。例えば、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の初期値を、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231へ設定する場合、第1の入力であるレンジ・レジスタ番号には、セル・コンフィグレーション空間ccs(図9参照)にマッピングされているPCIメモリ・レンジ・レジスタ131および231のレジスタ番号“R1”が渡される。例えば、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示す初期値を、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231の第1セルC1がオーナーであるPCIメモリ・レンジを表すレジスタ・フィールドへ設定する場合、第2の入力であるレンジ・レジスタ内オフセット番号は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…内における第1セルC1の列へのオフセット番号が渡される。この場合、レンジ・レジスタ内オフセット番号は“1”である。これは、第1セルC1がオーナーである第1PCIメモリ空間110(図3参照)のレンジを、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231の第1セルC1がオーナーであるPCIメモリ・レンジを表すレジスタ・フィールドである第1セルC1の列へ、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示す、第1セルC1がオーナーであるPCIメモリ・レンジのレンジ・レジスタ群初期値を設定することを意味することから、第2の入力であるレンジ・レジスタ内オフセット番号は、第3の入力で渡されるレンジ・レジスタ設定値が示すリソース・レンジをオーナーとしているセル番号を表しているといえる。この場合、第3の入力として渡されるレンジ・レジスタ設定値としては、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…内における第1セルC1の列に示された、第1セルC1がオーナーである図3における第1PCIメモリ空間110の最下位アドレス(BOTTOM)“X1”および最上位アドレス(TOP)“X1+α1”が渡される。
【0111】
BIOS00は、オンライン・システム000に組み込み可能な全てのセルに関して、処理を繰り返す(図15のステップS301)。
【0112】
まず、BIOS00は、図13のフローチャートで示される手順によって作成された物理セル番号・バス番号対応表cbt(図8参照)を参照することで、今からレンジ・レジスタ群初期値設定を行うセルへアサインされているバス番号を取得する。次に、BIOS00は、取得したバス番号をバス番号とする、PCIコンフィグレーション・アドレスpca(図7参照)の形式に従ったセル・コンフィグレーション・アドレスを生成する(図15のステップS302)。このアドレスは、セル・コンフィグレーション空間ccs(図9参照)を指している。例えば、図1における第1セルC1に対してレンジ・レジスタ群初期値設定を行う場合、BIOS00は、物理セル番号・バス番号対応表cbtを参照してバス番号“BUSNO1”を取得する。次に、BIOS00は、バス番号を“BUSNO1”として持つセル・コンフィグレーション・アドレスを生成する。そして、第1の入力として、PCIメモリ・レンジ・レジスタ131および231のレジスタ番号“R1”が渡された場合、セル・コンフィグレーション空間ccsを参照すると、そのPCIメモリ・レンジ・レジスタ131に対応するデバイス番号は“D1”、ファンクション番号は“F1”であることから、さらに、バス番号を“BUSNO1”、デバイス番号を“D1”、ファンクション番号を“F1”、レジスタ番号を“R1”として持つセル・コンフィグレーション・アドレスを生成する。さらに、BIOS00は、第2の入力で渡されたレンジ・レジスタ内オフセット番号を、生成されたセル・コンフィグレーション・アドレスのレジスタ番号へプラスする。例えば、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示す初期値を、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231の第1セルC1がオーナーであるPCIメモリ・レンジを表すレジスタ・フィールドへ設定する場合、第2の入力として渡されるレンジ・レジスタ内オフセット番号は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…内における第1セルC1の列へのオフセットである“1”であることから、生成されたセル・コンフィグレーション・アドレスへ“1”をプラスする。
【0113】
次に、BIOS00は、生成されたセル・コンフィグレーション・アドレスを書き込み先アドレスとして指定して、第3の入力で渡されたレンジ・レジスタ設定値を書き込む(図15のステップS303)。
【0114】
続いて、BIOS00は、オンライン・システム000に組み込み可能な全てのセルに対して、レンジ・レジスタ群初期値設定処理が行われたか否かを確認する(図15のステップS304)。まだ、オンライン・システム000に組み込み可能な全てのセルに対して処理が行われていない場合、図15のステップS301に戻る。
【0115】
もし、オンライン・システム000に組み込み可能な全てのセルに対して処理が行われた場合、BIOS00は、レンジ・レジスタ群初期値設定処理を終了する(図15のステップS305)。
【0116】
このようにして、BIOS00は、オンライン・システム000に組み込み可能な全てのセル上のチップセットが持つレンジ・レジスタ群に対して、レンジ・レジスタ群初期値設定を行う。
【0117】
ここで、図15のステップS303で行われるレンジ・レジスタ群初期値書き込みの動作に関して、補足する。
【0118】
例えば、第1セルC1に対してレンジ・レジスタ群初期値書き込みを行う場合、セル番号は“1”である。図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示す初期値を、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231の第1セルC1がオーナーであるPCIメモリ・レンジを表すレジスタ・フィールドへ設定する場合、第2の入力であるレンジ・レジスタ内オフセット番号は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…内における第1セルC1の列へのオフセット番号“1”が渡される。この場合、セル番号“1”とレンジ・レジスタ内オフセット番号“1”とは一致することから、今から行うレンジ・レジスタ群初期値設定処理は、第3の入力で渡されるレンジ・レジスタ設定値が指すリソース・レンジを、オーナーである第1セルC1に対してアサインする処理であるといえる(図15の補足ステップS303a)。この処理は、図6における、BIOS00による第1セルC1上のチップセット13が持つPCIメモリ・レンジ・レジスタ131の第1セル・レンジへレンジ・レジスタ設定値を書き込む処理に相当する(図6の初期化iz1)。
【0119】
また、例えば、第2セルC2に対してレンジ・レジスタ群初期値書き込みを行う場合、セル番号は“2”である。図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示す初期値を、図1における各セル上のチップセットが持つPCIメモリ・レンジ・レジスタ131および231の第1セルC1がオーナーであるPCIメモリ・レンジを表すレジスタ・フィールドへ設定する場合、レンジ・レジスタ内オフセット番号は、図2におけるPCIメモリ・レンジ・レジスタ131,231,331,…内における第1セルC1の列へのオフセット番号“1”が渡される。この場合、セル番号“2”とレンジ・レジスタ内オフセット番号“1”とは一致しないことから、今から行うレンジ・レジスタ群初期値設定処理は、第3の入力で渡されるレンジ・レジスタ設定値が指すリソース・レンジを、非オーナーである第2セルC2のレンジ・レジスタへ設定する処理(シャドウィング)であるといえる(図15の補足ステップS303b)。この処理は、図6における、BIOS00による第2セルC2上のチップセット23が持つPCIメモリ・レンジ・レジスタ231の第1セル・レンジへレンジ・レジスタ設定値を書き込む処理に相当する(図6の第2セルC2上のチップセット23に対するシャドウィングsw1)。
【0120】
ここで、図15のステップS303で行われるレンジ・レジスタ群初期値書き込みが、図15の補足ステップS303bで説明される、非オーナーであるセルのレンジ・レジスタへのシャドウィングであり、さらに、例えば、図1においてオンライン・システム000にまだ組み込まれていない予備セルC3に対するシャドウィングであった場合、一般的なPCI仕様で規定されたPCIコンフィグレーション・アクセス・メカニズムに従い、このシャドウィングは破棄される。これは、図6において、BIOS00による予備セルC3上のチップセット33に対するシャドウィングsw1が破棄される(ディスカードdc1)ことに相当する。
【0121】
本実施の形態における、CPU31,メモリ32,およびそれらを制御するチップセット33を搭載した予備セルC3を、OSが動作している状態で、OSをシャットダウンあるいは停止すること無く、すなわちオンラインで増設して組み込み可能とするためのチップセット初期化方式では、新たに、この破棄される(ディスカードされる)、オンライン・システム000にまだ組み込まれていないセル(予備セルC3)に対するレンジ・レジスタ群初期値書き込みを盗み取り、盗み取った初期値を、仮想セルCAがマッピングされた、仮想セル・コンフィグレーション空間vccs(図12参照)上のレンジ・レジスタ位置へ書き込み、保持しておくための仕組みを、図15のステップS303(レンジ・レジスタへのレンジ・レジスタ群初期値書き込み)の前に追加する。これは、図6における、仮想セルCA上の仮想チップセットA3に対するレンジ・レジスタ群初期値書き込み(スヌープsn1)を実現するための新たな仕組みである。
【0122】
図16のフローチャートを用いて、本実施の形態で追加する新たな仕組みを説明する。図16のフローチャートで実現される仮想レンジ・レジスタ群初期値設定処理(レンジ・レジスタ群初期値設定処理のスヌープ処理)は、図15のステップS303を実行する前に実行される。従って、図16のフローチャートで示される処理は、図15のステップS303の前に追加される。そして、図16のフローチャートにおいて、BIOS00は、入力として、4つの値を受け取る。第1の入力は、レンジ・レジスタ群初期値の書き込み先であるセル番号である。第2の入力は、値を設定すべきレンジ・レジスタ番号である。第3の入力は、そのレンジ・レジスタの中で値を設定すべきレジスタ・フィールドを指すレンジ・レジスタ内オフセット番号(セル番号)である。第4の入力は、そのレンジ・レジスタ内オフセットへ設定すべきレンジ・レジスタ設定値である。
【0123】
例えば、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示すレンジ・レジスタ群初期値、つまり、図1の第1セルC1がオーナーである第1PCIメモリ空間110(図3参照)のレンジを表す値を、図1のオンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33におけるPCIメモリ・レンジ・レジスタ331の第1セル・レンジ・フィールドに設定する場合、第1の入力として、セル番号“3”が渡される。第2の入力として、レンジ・レジスタ番号“R1”が渡される(図9および図12参照)。第3の入力として、レンジ・レジスタ内オフセット番号“1”が渡される(図2参照)。第4の入力として、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列が示すレンジ・レジスタ設定値が渡される。
【0124】
まず、BIOS00は、図14のフローチャートで示される仮想セル・テーブル作成処理によって作成された仮想セル・テーブルvct(図10参照)を参照して、第1の入力で渡されたセル番号に対応するセルが、仮想セルCAか否かを判断する(図16のステップS401)。例えば、第1の入力として、図1におけるオンライン・システム000にまだ組み込まれていない予備セルC3に対応するセル番号“3”が渡された場合、BIOS00は、仮想セル・テーブルvctの第3セルC3のエントリを参照する。始めに、BIOS00は、エントリ内の仮想セル・フラグを参照する。図10の仮想セル・テーブルvctを参照すると、第3セルC3のエントリの仮想セル・フラグは“1”(=このセルはオンライン・システム000にまだ組み込まれていない、つまり仮想セルCA)が設定されているため、BIOS00は、予備セルC3は仮想セルCAであると判断する。次に、BIOS00は、第3セルC3のエントリのバス番号フィールドを参照して、仮想バス番号を取得する。図10の仮想セル・テーブルvctを参照すると、第3セルC3のエントリのバス番号フィールドには、仮想バス番号“BUSNOA”が登録されているため、BIOS00は、予備セルC3に対応する仮想セルCAにアサインされている仮想バス番号“BUSNOA”を取得する。もし、仮想セル・テーブルvct(図10参照)のあるセルのエントリ内の仮想セル・フラグが“0”(=このセルはオンライン・システム000に組み込まれている)が設定されていた場合、BIOS00は、そのセルが仮想セルCAではないと判断して、仮想レンジ・レジスタ群初期値設定処理を終了する(図16のステップS404)。
【0125】
次に、第1の入力で渡されたセル番号を持つセルが仮想セルCAであると判断すると、BIOS00は、仮想コンフィグレーション・アドレスvca(図11参照)の形式に従って、仮想セル・コンフィグレーション空間vccs(図12参照)を示す仮想セル・コンフィグレーション・アドレスvccaを生成する(図16のステップS402)。例えば、第1の入力として予備セルC3のセル番号“3”が渡された場合、図16のステップS401によって、予備セルC3に対応する仮想バス番号“BUSNOA”が取得されている。第2の入力としてPCIメモリ・レンジ・レジスタ331のレジスタ番号“R1”が渡された場合、仮想セル・コンフィグレーション空間vccsを参照すると、PCIメモリ・レンジ・レジスタ331に対応するデバイス番号は“D1”、ファンクション番号は“F1”である。この場合、バス番号を“BUSNOA”、デバイス番号を“D1”、ファンクション番号を“F1”、レジスタ番号を“R1”として持つ仮想セル・コンフィグレーション・アドレスvccaが生成される。さらに、BIOS00は、第3の入力で渡されたレンジ・レジスタ内オフセット番号を、生成した仮想セル・コンフィグレーション・アドレスvccaのレジスタ番号“R1”へプラスする。
【0126】
次に、BIOS00は、図16のステップS402で生成された仮想セル・コンフィグレーション・アドレスvccaを書き込み先アドレスとして指定して、第4の入力で渡されたレンジ・レジスタ設定値を書き込む(図16のステップS403)。この処理は、図6における、BIOS00による仮想セルCA上のチップセットA3が持つPCIメモリ・レンジ・レジスタA31の第1セル・レンジへレンジ・レジスタ設定値を書き込む処理に相当する(図6のスヌープsn1)。
【0127】
最後に、BIOS00は、仮想レンジ・レジスタ群初期値設定処理を終了する(図16のステップS404)。
【0128】
このようにして、BIOS00は、オンライン・システム000にまだ組み込まれていない予備セルC3が対応する仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群がマッピングされた仮想セル・コンフィグレーション上のレンジ・レジスタ群に対して、レンジ・レジスタ群初期値設定(スヌープ)を行う。
【0129】
次に、図16のステップS403において、仮想セル・コンフィグレーション上のレンジ・レジスタ群への初期値書き込み(スヌープ)が行われると、実際に、レンジ・レジスタ群初期値がどこに設定されて保持されるかに関して、図17および図18のフローチャートを用いて説明する。
【0130】
図17は、仮想セル・コンフィグレーション空間vccs(図12参照)が、メモリ内開始アドレス“X”をベース・アドレスとするメモリ上にマッピングされたメモリマップド仮想セル・コンフィグレーション空間mvccsを示す。例えば、図1における予備セルC3が対応する仮想セル・コンフィグレーション空間vccs(図12参照)は、メモリ内開始ベース・アドレス“X”から、予備セルC3のセル番号“3”をオフセットとするメモリ上の領域にマッピングされている(図17の第3セルC3用のメモリマップド仮想セル・コンフィグレーション空間mvccs)。
【0131】
例えば、図16のステップS403において、図16のステップS402で生成された仮想セル・コンフィグレーション・アドレスvccaを書き込み先アドレスとして指定して、レンジ・レジスタ設定値を書き込むと、図17で示されるメモリマップド仮想セル・コンフィグレーション空間mvccsの所定のレンジ・レジスタ部に書き込まれ、そこで保持される。
【0132】
図18のフローチャートを用いて、レンジ・レジスタ群初期値が、メモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)に書き込まれる仕組みを説明する。なお、図18のフローチャートで示される処理は、図16のステップS403において行われるレンジ・レジスタ群初期値書き込みを具体的に説明したものである。すなわち、図16のステップS403の処理を、図18のフローチャートに置き換えることができる。
【0133】
図18のフローチャートにおいて、BIOS00は、入力として、2つの値を受け取る。第1の入力は、図16のステップS402で生成された仮想セル・コンフィグレーション・アドレスvccaである。第2の入力は、設定すべきレンジ・レジスタ設定値である。
【0134】
始めに、BIOS00は、第1の入力で渡された仮想セル・コンフィグレーション・アドレスvccaから、仮想バス番号を取り出す。具体的には、仮想セル・コンフィグレーション・アドレスvccaは、仮想コンフィグレーション・アドレスvca(図11参照)の形式に従っているため、バス番号フィールドのビット16からビット23までの8ビットだけを取り出すことによって、仮想バス番号を取り出すことができる。次に、BIOS00は、その仮想バス番号が対応するセル番号を取得する。具体的には、仮想セル・テーブルvct(図10参照)を検索してセル番号を取得する。例えば、仮想バス番号が“BUSNOA”であった場合、仮想セル・テーブルvctを検索すると、仮想バス番号“BUSNOA”が対応するセルは、第3セルC3であること分かる。このようにして、BIOS00は、第1の入力で渡された仮想セル・コンフィグレーション・アドレスvccaから仮想バス番号を取り出し、仮想セル・テーブルvctを検索することによって、その仮想バス番号が対応するセル番号を取得する(図18のステップS501)。
【0135】
次に、BIOS00は、仮想セル・コンフィグレーション空間vccs(図12参照)がメモリ上にマッピングされているメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)のメモリ内開始ベース・アドレス“X”と、図18のステップS501で取得したセル番号であるオフセット値とからベース・アドレスを計算する(図18のステップS502)。具体的には、仮想セル・コンフィグレーション空間vccs(図12参照)は、仮想コンフィグレーション・アドレスvca(図11参照)の形式に従った仮想セル・コンフィグレーション・アドレスvccaで指すことができ、各仮想セルCAは1つの仮想バス番号を持つことから、各仮想セルCAがメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)へマッピングすることができる仮想コンフィグレーション・レジスタ・セットのサイズは、仮想コンフィグレーション・アドレスvca(図11参照)のビット16からビット23までの8ビット(バス番号フィールド)を除いた、ビット15からビット0までのビット数を用いて計算することができる。具体的には、ビット15からビット0までのビット数は16ビットであることから、各仮想セルCAがメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)へマッピングすることができる仮想コンフィグレーション・レジスタ・セットのサイズは、2の16乗、すなわち、64キロバイトである。つまり、図18のステップS501で取得したセル番号が第3セルC3であった場合、3×64キロバイト=192キロバイトがオフセット値となり、図18のステップS502で計算されるベース・アドレスは、メモリ内開始ベース・アドレス“X”にオフセット値“192キロバイト”をプラスした値となる。
【0136】
次に、BIOS00は、第1の入力で渡された仮想セル・コンフィグレーション・アドレスvccaから、ビット16からビット23までの8ビット(バス番号フィールド)に対応する仮想バス番号を取り除いた値、すなわちビット15からビット0までの値を、図18のステップS502で計算されたベース・アドレスにプラスする。具体的には、第1の入力で渡された仮想セル・コンフィグレーション・アドレスvccaは、仮想コンフィグレーション・アドレスvca(図11参照)の形式に従っており、例えば、仮想セル・コンフィグレーション空間vccs(図12参照)のPCIメモリ・レンジ・レジスタA31を指しており、さらに、そのPCIメモリ・レンジ・レジスタA31の中において、図2で示されるPCIメモリ・レンジ・レジスタ131,231,331,…の第1セルC1の列を示していた場合、バス番号は“BUSNOA”、デバイス番号は“D1”、ファンクション番号は“F1”、レジスタ番号は“R1”、レジスタ内オフセット番号は“1”であるので、バス番号“BUSNOA”を除いた、ビット15からビット0までの値、すなわち、デバイス番号“D1”、ファンクション番号“F1”、レジスタ番号“R1”、レジスタ内オフセット番号“1”を持つ値を、図18のステップS502で計算されたベース・アドレスにプラスする。このようにして計算された値を、書き込み先メモリ番地アドレスとする(図18のステップS503)。
【0137】
次に、BIOS00は、図18のステップS503で計算された書き込み先メモリ番地アドレスを書き込み先アドレスとして指定して、第2の入力で渡されたレンジ・レジスタ群初期値を書き込む(図18のステップS504)。
【0138】
最後に、BIOS00は、メモリマップド仮想レンジ・レジスタ群初期値書き込み処理を終了する(図18のステップS505)。
【0139】
このようにして、BIOS00は、仮想セル・コンフィグレーション空間vccs(図12参照)がマッピングされた、メモリ内開始アドレス“X”をベース・アドレスとするメモリ上にマッピングされたメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)上のレンジ・レジスタ群へ、図2で示されるレンジ・レジスタ群初期値を書き込み、メモリ上で値を保持する。
【0140】
このようにして、図1において、BIOS00は、第1セルC1,第2セルC2,およびオンライン・システム000にまだ組み込まれていない予備セルC3などの、オンライン・システム000に組み込み可能な全てのセル上の各チップセットが持つレンジ・レジスタ群を初期化する過程において、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定(シャドウィング)が破棄される(ディスカードされる)前に、それを盗み取り(スヌープ)、同時に、オンライン・システム000にまだ組み込まれていない予備セルC3に対して仮想セルCAを定義して、仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群などがマッピングされた仮想セル・コンフィグレーション空間vccsをメモリの所定領域へマッピングすることで、メモリマップド仮想セル・コンフィグレーション空間mvccsを実装して、盗み取った(スヌープした)レンジ・レジスタ群初期値を、メモリマップド仮想セル・コンフィグレーション空間mvccs上の対応するレンジ・レジスタ位置に書き込んでメモリ上で保持する。
【0141】
すなわち、BIOS00は、オンライン・システム000の立ち上げ時に、仮想セルCAを定義して、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定を、仮想セルCA上のチップセットA3に対するレンジ・レジスタ群初期値設定へと置換することで、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定を、まだ予備セルC3がオンライン・システム000に組み込まれていない、オンライン・システム000の立ち上げ時に完結させる(仮想セルCAがメモリ上にマッピングされたメモリマップド仮想セル・コンフィグレーション空間mvccs上でレンジ・レジスタ群初期値を保持しておく)。
【0142】
そして、サービス・プロセッサ・ファームウェアB1は、予備セルC3をオンライン・システム000へ組み込む前に、メモリ上に保持された予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値(メモリマップド仮想セル・コンフィグレーション空間mvccs上に保持されているレンジ・レジスタ群初期値)を、予備セルC3上のメモリ32の所定領域へコピーする。そのコピーする領域は、メモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)がマッピングされた領域と同様に、メモリ内開始ベース・アドレス“X”を開始アドレスとした領域であるか、あるいは予備セルC3上で動作するBIOS01がサービス・プロセッサ・ファームウェアB1へ予め指示しておいたメモリ領域である。
【0143】
予備セルC3上で動作するBIOS01は、メモリ32の所定領域から予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値を読み取り、それを、予備セルC3上のチップセット33が持つレンジ・レジスタ群に設定する。そして、予備セルC3上で動作するBIOS01は、サービス・プロセッサ・ファームウェアB1に対して、予備セルC3のオンライン・システム000への組み込みが可能である旨を通知する。
【0144】
サービス・プロセッサ・ファームウェアB1は、通知を受けると、予備セルC3をオンライン・システム000へ組み込む。
【0145】
このとき、予備セルC3上のチップセット33が持つレンジ・レジスタ群には、オンライン・システム000にすでに組み込まれている他のセルである第1セルC1および第2セルC2上のチップセット31および32が持つレンジ・レジスタ群が設定されたレンジ・レジスタ群初期値と同等な値が設定されているため、例えば、図5において、予備セルC3であった第3セルC3がオンライン・システム000に組み込まれ、第3セルC3のCPU31上で動作するOSから、図3における第2セルC2がオーナーである第2PCIメモリ空間210に対するPCIメモリ・アクセスac3が発行された場合(図5のPCIメモリ・アクセスac3)、第3セルC3のチップセット33は、PCIメモリ・レジスタ331を参照して、PCIメモリ・アクセスac3が、第2セルC2がオーナーとする第2PCIメモリ空間210に対するPCIメモリ・アクセスであると判断して、PCIメモリ・アクセスac3を第2セルC2上のチップセット23へフォワードすることが可能である(図5のフォワードfw3)。
【0146】
第1の実施の形態によれば、BIOS00が、オンライン・システム000の立ち上げ時に決定したリソース・レンジのオーナーが示してあるレンジ・レジスタ群初期値を、予備セルC3をオンライン・システム000へ組み込む前に、予備セルC3上で動作する別のBIOS01が参照でき、予備セルC3をオンライン・システム000へ組み込む前に、BIOS00が、レンジ・レジスタ群初期値を予備セルC3上のチップセット33が持つレンジ・レジスタ群へ設定することで、予備セルC3をオンライン・システム000へ組み込み可能な状態にすることができるので、OSが動作している状態で、OSをシャットダウンあるいは停止させることなく、CPU,メモリ,およびそれらを制御するチップセットが搭載された予備セルC3を初期化して、予備セルC3をオンラインで増設して組み込むことができる。
【0147】
[第2の実施の形態]
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
【0148】
図17では、仮想セル・コンフィグレーション空間vccsを、メモリ内開始アドレス“X”をベース・アドレスとするメモリ上にマッピングした場合に実現される、メモリマップド仮想セル・コンフィグレーション空間mvccsを説明した。また、図18では、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定(シャドウィング)が破棄される(ディスカードされる)前に、それを盗み取り(スヌープ)、同時に、オンライン・システム000にまだ組み込まれていない予備セルC3に対して仮想セルCAを定義して、その仮想セルCA上の仮想チップセットA3が持つレンジ・レジスタ群などがマッピングされた仮想セル・コンフィグレーション空間vccsをさらにメモリ上へマッピングすることで、メモリマップド仮想セル・コンフィグレーション空間mvccsを実装して、その盗み取った(スヌープした)レンジ・レジスタ群初期値を、メモリマップド仮想セル・コンフィグレーション空間mvccs上の対応するレンジ・レジスタ位置に書き込んでメモリ上で保持する場合の、メモリマップド仮想レンジ・レジスタ群初期値書き込み処理を説明した。
【0149】
また、図17を参照すると、各仮想セルCAは、1つの仮想バス番号を持つことから、各仮想セルCAがメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)へマッピングすることができる仮想コンフィグレーション・レジスタ・セットのサイズは、仮想コンフィグレーション・アドレスvca(図11参照)のビット16からビット23までの8ビット(バス番号フィールド)を除いた、ビット15からビット0までのビット数を用いて計算することができる。具体的には、ビット15からビット0までのビット数は16ビットであることから、各仮想セルCAがメモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)へマッピングすることができる仮想コンフィグレーション・レジスタ・セットのサイズは、2の16乗、すなわち、64キロバイトである。もし、オンライン・システム000が最大8枚のセルを搭載することができる場合、各セルが予備セルC3となった場合を考慮して、メモリ上に最大8つのメモリマップド仮想セル・コンフィグレーション空間mvccsを用意しておく必要がある。この場合、1つが64キロバイトであることから、8×64キロバイト=512キロバイトのメモリが、メモリマップド仮想セル・コンフィグレーション空間mvccsを実装するために消費されることになる。
【0150】
図19において、このようなメモリマップド仮想セル・コンフィグレーション空間mvccsを実装するための十分なメモリ容量を確保することができないコンピュータ・システムにおいて、メモリ消費容量を削減してメモリマップド仮想セル・コンフィグレーション空間mvccsを実装するための方法を説明する。
【0151】
図19を参照すると、メモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)が圧縮された形でメモリ上に保持されている。例えば、BIOS00は、オンライン・システム000の立ち上げ時に、予備セルC3上のチップセット33が持つレンジ・レジスタ群に対する初期値を、メモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)上の予備セルC3が対応する仮想コンフィグレーション・レジスタ・セット位置へ設定し終えると、その予備セルC3が対応するメモリマップド仮想セル・コンフィグレーション空間mvccsを圧縮して、それを、メモリ内開始アドレス“Z”をベース・アドレスとする、圧縮された“メモリマップド仮想セル・コンフィグレーション空間mvccs”を格納しておくための、圧縮された“メモリマップド仮想セル・コンフィグレーション空間ブロック群”領域cmvccsbgの中へコピーして保持する。次に、BIOS00は、メモリ内開始アドレス“Y”をベース・アドレスとする、メモリマップド仮想セル・コンフィグレーション空間ポインタ・テーブルmvccsptの予備セルC3に対応するエントリにコピー先アドレスを登録しておく。そして、BIOS00は、全ての予備セルC3に対して、この圧縮処理が終わると、メモリマップド仮想セル・コンフィグレーション空間mvccs(図17参照)が消費しているメモリ領域を全て解放する。
【0152】
このようにして、BIOS00は、メモリ消費容量を削減しながら、メモリマップド仮想セル・コンフィグレーション空間mvccsを実装することが可能である。
【0153】
[第3の実施の形態]
これまで、オンライン・システム000にまだ組み込まれていない予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値を、BIOS00自身が、破棄される前に、それを盗み取り、そのレンジ・レジスタ群初期値をメモリ上にマッピングされた仮想セル・コンフィグレーション空間vccs上で保持する方式を述べてきたが、ここで、ハードウェアが自動的に盗み取り、それをハードウェアが実装する仮想セル・コンフィグレーション空間vccs上で保持し、予備セルC3がオンライン・システム000へ組み込まれると、レンジ・レジスタ群初期値が予備セルC3上のチップセット33が持つレンジ・レジスタ群へ自動的に設定される方式を説明する。
【0154】
図20を参照すると、オンライン・システム000には、各セル毎に、仮想セル・スイッチvcswが装備されている。さらに、各セル毎に、仮想セルCAを装備している。例えば、図20では、予備セルC3に対して仮想セル・スイッチvcswが装備され、また、予備セルC3に対して仮想セルCAが装備され、仮想セルCAに対して仮想セル・コンフィグレーション空間vccsがマッピングされている。すなわち、図12で示された仮想セル・コンフィグレーション・レジスタ・セットが、仮想セルCAの内部に装備されている。このとき、予備セルC3は、オンライン・システム000にまだ組み込まれていないため、仮想セル・スイッチvcswは、“ON”である。このとき、図6で示されるように、BIOS00が、予備セルC3に対応するバス番号“BUSNOA”をバス番号とする、図7で示されたセル・コンフィグレーション・アドレスを書き込み先アドレスとして指定して、図2で示されたレンジ・レジスタ群初期値を書き込むと(シャドウィングsw1)、仮想セル・スイッチvcswが“ON”であるため、予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定は破棄されず(ディスカードdc1)、仮想セル・コンフィグレーション空間vccsがマッピングされている、仮想セルCA上の仮想チップセットA3が装備しているレンジ・レジスタ群に値が設定され(スヌープsn1)、そこで保持される。
【0155】
図21を参照すると、予備セルC3がオンライン・システム000へ組み込まれると、仮想セル・スイッチvcswが“OFF”となる。すると、仮想セル・コンフィグレーション空間vccsがマッピングされている、仮想セルCA上の仮想チップセットA3が装備しているレンジ・レジスタ群が保持している、レンジ・レジスタ群初期値が、予備セルC3上のチップセット33が持つレンジ・レジスタ群へ自動的にコピーされる(図21の自動コピーcp1)。
【0156】
このようにして、図20および図21で示される予備セルC3への自動レンジ・レジスタ群初期値転送・設定処理では、図1に示した第1の実施の形態において、BIOS00が行っていた、予備セルC3上のチップセット33に対するレンジ・レジスタ群初期値設定のスヌープ処理と、BIOS01が予備セルC3を組み込む前に行っていた、仮想セルCAを参照してレンジ・レジスタ群初期値を取得して、予備セルC3上のチップセット33が持つレンジ・レジスタ群に設定する処理とを、ハードウェアが自動的に行うことで、予備セルC3をオンライン・システム000へ組み込み可能とする方式である。
【0157】
[第4の実施の形態]
また、これまで、オンライン・システム000に組み込み可能な全てのセル上のチップセットが、同じレンジ・レジスタ群初期値を設定されて保持しなければならない、というチップセット要求仕様(要求仕様1)を持ったレンジ・レジスタ群の初期設定に関する、チップセット初期化方式(予備セル組み込み方式)を述べてきたが、本発明で提案する方式は、このようなチップセット要求仕様1を持たないレジスタの初期設定に関しても流用できる。
【0158】
例えば、図22は、予備セルC3がオンライン・システム000へ組み込まれた場合に、予備セルC3上の増設メモリ32が、メモリ上のどのアドレス位置に置かれるかを示した図である。図22を参照すると、予備セルC3上の増設メモリ32は、最下位アドレス(BOTTOM)を“Z3”、最上位アドレス(TOP)を“Z3+α3”とするメモリ位置へ置かれることを示している。このように、メモリを増設する場合に、どのメモリ位置へ増設メモリを置くかが事前に決まっていたとき、例えば、図22で示されるように、予備セルC3上の増設メモリ32が、最下位アドレス(BOTTOM)を“Z3”、最上位アドレス(TOP)を“Z3+α3”とするメモリ位置へ増設されることが予定されていた場合、BIOS00は、その増設メモリ位置を意味する、最下位アドレス(BOTTOM)“Z3”および最上位アドレス(TOP)“Z3+α3”を、仮想セル・コンフィグレーション空間vccs上の対応するレジスタ位置へ設定しておき、それを、メモリマップド仮想セル・コンフィグレーション空間mvccs上の対応するレジスタ位置で保持(メモリ上で保持)する。あるいは、図20および図21で実現されるハードウェアが実装する仮想セル・コンフィグレーション空間vccs上のレジスタ位置で保持する。そして、予備セルC3をオンライン・システム000へ組み込む際に、予備セルC3上で動作するBIOS01が、メモリ上の対応するレジスタ位置を参照して、予備セルC3上の増設メモリ32を置くべきメモリ位置を取得して、それを、予備セルC3上の増設メモリ32へ設定することで、図22において、増設メモリ32が、最下位アドレス(BOTTOM)を“Z3”、最上位アドレス(TOP)を“Z3+α3”とするメモリ位置へ置かれる(増設される)。
【0159】
あるいは、図20および図21で実現されるハードウェアによる自動コピー方式の場合は、予備セルC3をオンライン・システム000へ組み込むと同時に、ハードウェアが、予備セルC3上の増設メモリ32を置くべきメモリ位置を、ハードウェアが実装する仮想セル・コンフィグレーション空間vccs上のレジスタ位置から取り出し、それを予備セルC3上の増設メモリ32へ自動的に設定することで、図22において、増設メモリ32が、最下位アドレス(BOTTOM)を“Z3”、最上位アドレス(TOP)を“Z3+α3”とするメモリ位置へ置かれる(増設される)。
【0160】
【発明の効果】
第1の効果は、OSが動作している状態で、OSをシャットダウンあるいは停止させることなく、CPU,メモリ,およびそれらを制御するチップセットが搭載された予備セルを初期化して、予備セルをオンラインで増設して組み込むことができることである。その理由は、BIOSが、オンライン・システム000の立ち上げ時に決定したリソース・レンジのオーナーが示してあるレンジ・レジスタ群初期値を、予備セルをオンライン・システムへ組み込む前に、予備セル上で動作する別のBIOSがそれを参照でき、予備セルをオンライン・システムへ組み込む前に、BIOSが、レンジ・レジスタ群初期値を予備セル上のチップセットが持つレンジ・レジスタ群へ設定することで、予備セルをオンライン・システムへ組み込み可能な状態にすることができるからである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るチップセット初期化方式の構成を示すブロック図である。
【図2】図1中のBIOSがチップセット仕様として全てのセル上のチップセットに対して設定することが要求されているレンジ・レジスタ群初期値を示す図である。
【図3】リソース・レンジ空間を示す図である。
【図4】レンジ・レジスタ参照によるリソース・ルーティングの動作概説図である。
【図5】予備セル組込み後のレンジ・レジスタ参照によるリソース・ルーティングの動作概説図である。
【図6】レンジ・レジスタ群初期値設定処理の動作概略図である。
【図7】PCIコンフィグレーション・アドレスを示す図である。
【図8】物理セル番号・バス番号対応表を示す図である。
【図9】セル・コンフィグレーション空間を示す図である。
【図10】仮想セル・テーブルを示す図である。
【図11】仮想コンフィグレーション・アドレスを示す図である。
【図12】仮想セル・コンフィグレーション空間を示す図である。
【図13】物理セル番号・バス番号対応表作成処理を示すフローチャートである。
【図14】仮想セル・テーブル作成処理を示すフローチャートである。
【図15】レンジ・レジスタ群初期値設定処理を示すフローチャートである。
【図16】仮想レンジ・レジスタ群初期値設定処理を示すフローチャートである。
【図17】メモリマップド仮想セル・コンフィグレーション空間を示す図である。
【図18】メモリマップド仮想レンジ・レジスタ群初期値書き込み処理を示すフローチャートである。
【図19】本発明の第2の実施の形態に係るチップセット初期化方式におけるメモリマップド仮想セル・コンフィグレーション空間圧縮方式を示す図である。
【図20】本発明の第3の実施の形態に係るチップセット初期化方式における予備セルへの自動レンジ・レジスタ群初期値転送・設定処理(1)を示す図である。
【図21】本発明の第3の実施の形態に係るチップセット初期化方式における予備セルへの自動レンジ・レジスタ群初期値転送・設定処理(2)を示す図である。
【図22】本発明の第4の実施の形態に係るチップセット初期化方式におけるメモリ・レンジの説明図である。
【符号の説明】
00 BIOS
000 オンライン・システム
01 BIOS
11,21,31 CPU
12,22,32 メモリ
13,23,33 チップセット
100 第1I/Oコントローラ
101,201 PCIカード群
200 第2I/Oコントローラ
131,231,331 PCIメモリ・レンジ・レジスタ
132,232,332 PCI・IOレンジ・レジスタ
133,233,333 割り込みレンジ・レジスタ
999 予備システム
A3 仮想チップセット
A31 PCIメモリ・レンジ・レジスタ
A32 PCI・IOレンジ・レジスタ
A33 割り込みレンジ・レジスタ
B サービス・プロセッサ
B1 サービス・プロセッサ・ファームウェア
C1 第1セル
C2 第2セル
C3 予備セル
CA 仮想セル
Claims (3)
- システムバス上に接続され、CPU(Central Processing Unit)とメモリとチップセットとを含み、各々固有の識別番号を有する複数のセルと、
前記複数のセルのうちの、対応するセルと接続するI/Oコントローラと、
前記複数のセルの構成制御を行うサービス・プロセッサと、
オンラインシステムと、
予備システムと
を具備し、
前記チップセットは、前記複数のセルの各々と前記I/Oコントローラとの対応関係を示すレンジ・レジスタ初期値を格納するレンジ・レジスタを含み、
前記オンラインシステムは、
前記複数のセルのうちの、自身の前記CPU及び前記メモリ上でOS(Operating System)が起動されるオンラインセルと、
前記オンラインセルの前記レンジ・レジスタに前記レンジ・レジスタ初期値を設定する処理を、前記オンラインセルに実行させる第1のBIOS(Basic Input/Output System)と
を含み、
前記予備システムは、
前記複数のセルのうちの、予備として前記オンラインシステムへの組込みを待機する予備セルと、
前記予備セルの前記レンジ・レジスタに前記レンジ・レジスタ初期値を設定する処理を、前記予備セルに実行させる第2のBIOSと
を含み、
前記サービス・プロセッサは、
前記オンラインセルの前記メモリに対して前記第1のBIOSをアップロードする処理を、前記オンラインセルに実行させ、前記予備セルの前記メモリに対して前記第2のBIOSをアップロードする処理を、前記予備セルに実行させ、前記オンラインシステムに組み込まれる前記オンラインセルの構成を制御する処理を、前記サービス・プロセッサに実行させるサービス・プロセッサ・ファームウェア
を含み、
前記第1のBIOSは、前記オンラインシステムの立ち上げ時に、
前記複数のセルの各々が前記オンラインシステムに組み込まれるものであるか否かを示す仮想セルフラグを前記識別番号毎に対応させて格納する仮想セルテーブルを生成する処理と、
前記サービス・プロセッサ・ファームウェアを介して前記サービス・プロセッサから前記オンラインシステムに組み込まれる前記オンラインセルを問い合わせて、前記複数のセルの各々について前記オンラインシステムに組み込まれるものか否かを前記仮想セルフラグに反映する処理と、
前記オンラインセルの前記レンジ・レジスタに対して前記レンジ・レジスタ初期値を設定する処理と、
前記仮想セルテーブルの前記仮想セルフラグを確認し、前記オンラインシステムに組み込まれないことを示している前記仮想セルフラグに対応する前記識別番号を有する前記予備セルの前記レンジ・レジスタに対応する仮想領域を、前記オンラインセルの前記メモリ上に生成する処理と、
前記予備セルの前記レンジ・レジスタに設定する前記レンジ・レジスタ初期値を前記仮想領域に設定する処理と
を、前記オンラインセルに実行させ、
前記サービス・プロセッサ・ファームウェアは、前記予備セルが前記オンラインシステムに組み込まれる際に、
前記オンラインシステムに組み込まれる前記予備セルに対応する前記仮想領域に設定されている前記レンジ・レジスタ初期値を前記予備セルの前記メモリ上にコピーする処理を、前記サービス・プロセッサに実行させ、
前記第2のBIOSは、
前記オンラインシステムに組み込まれる前記予備セルに、前記予備セルの前記メモリ上にコピーされた前記レンジ・レジスタ初期値を、前記予備セルの前記レンジ・レジスタに設定する処理
を、前記予備セルに実行させることを特徴とするマルチセルシステム。 - 前記第1のBIOSは、
前記仮想領域を圧縮して、前記圧縮された仮想領域を圧縮仮想領域にコピーし、前記圧縮仮想領域を示すポインタを格納するポインタテーブルを前記オンラインセルの前記メモリ上に生成し、前記仮想領域を前記メモリ上から削除する処理
を、前記オンラインセルに実行させることを特徴とする請求項1に記載のマルチセルシステム。 - 前記オンラインセルは、
前記仮想領域に設定される前記レンジ・レジスタ初期値を格納する記憶部と、
前記予備セルが前記オンラインシステムに組み込まれていない間は、前記記憶部と接続して前記レンジ・レジスタ初期値を前記記憶部に格納し、前記予備セルが前記オンラインシステムに組み込まれる場合は、前記予備セルの前記レンジ・レジスタと接続して前記記憶部に格納された前記レンジ・レジスタ初期値を前記予備セルの前記レンジ・レジスタにコピーするスイッチと
を含むことを特徴とする請求項1に記載のマルチセルシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156109A JP4016396B2 (ja) | 2003-06-02 | 2003-06-02 | マルチセルシステム |
US10/857,541 US7356686B2 (en) | 2003-06-02 | 2004-06-01 | Initialization of range registers within chipsets on spare processor cells |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003156109A JP4016396B2 (ja) | 2003-06-02 | 2003-06-02 | マルチセルシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004362006A JP2004362006A (ja) | 2004-12-24 |
JP4016396B2 true JP4016396B2 (ja) | 2007-12-05 |
Family
ID=33508313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003156109A Expired - Fee Related JP4016396B2 (ja) | 2003-06-02 | 2003-06-02 | マルチセルシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7356686B2 (ja) |
JP (1) | JP4016396B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289287A1 (en) * | 2004-06-11 | 2005-12-29 | Seung-Man Shin | Method and apparatus for interfacing between test system and embedded memory on test mode setting operation |
CN100437489C (zh) * | 2006-01-13 | 2008-11-26 | 英业达股份有限公司 | 节省系统资源的方法 |
US7945721B1 (en) * | 2006-08-11 | 2011-05-17 | Oracle America, Inc. | Flexible control and/or status register configuration |
US7752376B1 (en) * | 2006-08-11 | 2010-07-06 | Oracle America, Inc. | Flexible configuration space |
JP5070879B2 (ja) * | 2007-02-22 | 2012-11-14 | 日本電気株式会社 | 仮想サーバシステム、サーバ装置 |
JP5119686B2 (ja) | 2007-03-06 | 2013-01-16 | 日本電気株式会社 | 情報処理装置および設定方法 |
WO2009042917A1 (en) * | 2007-09-28 | 2009-04-02 | The General Hospital Corporation | Methods and compositions for antibody production |
US8117346B2 (en) * | 2008-10-03 | 2012-02-14 | Microsoft Corporation | Configuration space virtualization |
US9720703B2 (en) * | 2012-11-26 | 2017-08-01 | International Business Machines Corporation | Data driven hardware chips initialization via hardware procedure framework |
US9229717B2 (en) * | 2012-12-11 | 2016-01-05 | Nvidia Corporation | Register allocation for clustered multi-level register files |
US9922689B2 (en) * | 2016-04-01 | 2018-03-20 | Intel Corporation | Memory mapping |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63182768A (ja) | 1987-01-24 | 1988-07-28 | Nec Corp | プロセツサの立ち上げ方法識別方式 |
JP3067558B2 (ja) | 1994-11-24 | 2000-07-17 | 富士通株式会社 | ディスクアレイ装置の拡張構成方法およびディスクアレイ装置 |
JPH10333890A (ja) | 1997-05-30 | 1998-12-18 | Nec Corp | ホスト端末自動sg処理システム |
US6381321B1 (en) * | 1998-05-04 | 2002-04-30 | T-Netix, Inc. | Telecommunication resource allocation system and method |
JP2000187533A (ja) | 1998-12-21 | 2000-07-04 | Nec Corp | ファームウェアによるハードウェア初期化方式 |
US6282596B1 (en) | 1999-03-25 | 2001-08-28 | International Business Machines Corporation | Method and system for hot-plugging a processor into a data processing system |
US6684343B1 (en) | 2000-04-29 | 2004-01-27 | Hewlett-Packard Development Company, Lp. | Managing operations of a computer system having a plurality of partitions |
JP2002132741A (ja) | 2000-10-20 | 2002-05-10 | Hitachi Ltd | プロセッサ追加方法、計算機及び記録媒体 |
JP2002312297A (ja) | 2001-04-18 | 2002-10-25 | Nec Corp | Pciホスト・バス・ブリッジ・システム初期化方式 |
US20040015943A1 (en) * | 2002-07-17 | 2004-01-22 | Ying-Chou Chen | Embedded computer system equipped with an upgradeable software library |
US8805981B2 (en) * | 2003-03-25 | 2014-08-12 | Advanced Micro Devices, Inc. | Computing system fabric and routing configuration and description |
-
2003
- 2003-06-02 JP JP2003156109A patent/JP4016396B2/ja not_active Expired - Fee Related
-
2004
- 2004-06-01 US US10/857,541 patent/US7356686B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20040255109A1 (en) | 2004-12-16 |
US7356686B2 (en) | 2008-04-08 |
JP2004362006A (ja) | 2004-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5043302B2 (ja) | 不揮発性メモリを制御するためのコントローラ | |
JP5296041B2 (ja) | メモリシステムおよびメモリシステムの制御方法 | |
JP5489434B2 (ja) | フラッシュメモリ搭載ストレージ装置 | |
US8635412B1 (en) | Inter-processor communication | |
US8161226B2 (en) | Methods and apparatus to share a thread to reclaim memory space in a non-volatile memory file system | |
US20100312955A1 (en) | Memory system and method of managing the same | |
US20060136676A1 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
JP4016396B2 (ja) | マルチセルシステム | |
JP4464378B2 (ja) | 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法 | |
US20030191908A1 (en) | Dense server environment that shares an IDE drive | |
JP2000505215A (ja) | メモリ管理 | |
CN101840362A (zh) | 一种改进的写时拷贝快照的实现方法和装置 | |
JP2008009874A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2006277737A (ja) | アドレス予測機能をもつ不揮発性記憶装置 | |
JP2012252576A (ja) | 情報処理装置、起動方法およびプログラム | |
JP2008507770A (ja) | Usbフラッシュ書込性能を向上させる方法および装置 | |
JP2008225765A (ja) | ネットワークストレージ・システムとその管理方法及び制御プログラム | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR20100016174A (ko) | 데이터-스머글링을 위한 저장 장치와 방법 | |
JP3544476B2 (ja) | メモリ管理テーブル作成方法 | |
JP2009187604A (ja) | 磁気ディスク装置 | |
JP5166211B2 (ja) | 不揮発性メモリを主記憶に用いた装置 | |
JP2005115561A (ja) | フラッシュrom制御装置 | |
JP2004326165A (ja) | メモリ制御装置およびメモリ制御方法 | |
JP2000030375A (ja) | データ処理システム、アクセス装置及び記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070521 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070720 |
|
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: 20070824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070906 |
|
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: 20100928 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110928 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120928 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130928 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |