(57)【特許請求の範囲】
【請求項１】
複数の論理プロセッサを有するコンピュータにおいて少なくとも１つの論理プロセッサを隠蔽する方法であって、
システムファームウェア内のプリブートルーチンを実行することにより前記複数の論理プロセッサを初期化し、
前記システムファームウェア内のパークルーチンを実行することにより前記複数の論理プロセッサのうち前記コンピュータのオペレーティングシステム（OS）から隠蔽すべき少なくとも１つの論理プロセッサを識別し、及び該識別された論理プロセッサをシステム管理モード（SMM）へと移行させて該SMMに留めることにより少なくとも１つの隠蔽論理プロセッサ及び少なくとも１つの可視論理プロセッサを提供し、
前記システムファームウェア内のブートストラップルーチンを実行することにより前記少なくとも１つの可視論理プロセッサを使用すべく前記コンピュータの前記OSをブートさせる、
という各ステップを含む、複数の論理プロセッサを有するコンピュータにおいて少なくとも１つの論理プロセッサを隠蔽する方法。
【請求項２】
前記プリブートルーチンがPOST（power-on self-test）ルーチンを含む、請求項１に記載の方法。
【請求項３】
前記識別ステップが、前記システムファームウェア内のハードウェアコンフィギュレーション属性を解析して前記複数の論理プロセッサのうち隠蔽すべき論理プロセッサを決定するステップを含む、請求項１に記載の方法。
【請求項４】
前記識別ステップが、前記システムファームウェア内の選択可能な設定を解析して前記複数の論理プロセッサのうち隠蔽すべき論理プロセッサを決定するステップを含む、請求項１に記載の方法。
【請求項５】
前記システムファームウェア内のシステム管理割り込み（SMI）ハンドラルーチンを使用してマシン例外チェック（MCE）を操作するステップを更に含む、請求項１に記載の方法。
【請求項６】
前記OSがグローバルシステム管理割り込み（SMI）を送信して前記複数の論理プロセッサをSMMに移行させ、
前記システムファームウェア内のSMIハンドラルーチンを使用して前記グローバルSMIを操作し、
前記OSにより使用すべく前記少なくとも１つの可視論理プロセッサを返す、
という各ステップを更に含む、請求項１に記載の方法。
【請求項７】
前記OSがグローバルシステム管理割り込み（SMI）を送信して前記複数の論理プロセッサをSMMへと移行させ、
もう１つの論理プロセッサを可視にすることを要求し、
前記システムファームウェア内のSMIハンドラルーチンを使用して前記グローバルSMIを操作し、
前記少なくとも１つの隠蔽論理プロセッサのうちの１つの論理プロセッサを、前記少なくとも１つの可視論理プロセッサの一部として可視となるよう再分類し、
前記OSにより使用すべく前記少なくとも１つの可視論理プロセッサを返す、
という各ステップを更に含む、請求項１に記載の方法。
【請求項８】
前記OSがグローバルシステム管理割り込み（SMI）を送信して前記複数の論理プロセッサをSMMへと移行させ、
前記少なくとも１つの可視論理プロセッサからの１つの論理プロセッサの除外を要求し、
前記システムファームウェア内のSMIハンドラルーチンを使用して前記グローバルSMIを操作し、
前記少なくとも１つの可視論理プロセッサのうちの１つの論理プロセッサを、前記少なくとも１つの隠蔽論理プロセッサの一部として隠蔽するよう再分類し、
前記OSにより使用すべく前記少なくとも１つの可視論理プロセッサを返す、
という各ステップを更に含む、請求項１に記載の方法。
【請求項９】
コンピュータであって、
複数の論理プロセッサを包括的に有する少なくとも１つの中央処理装置（CPU）集積回路（IC）と、
オペレーティングシステム（OS）を格納しているメモリと、
システムファームウェアであって、
前記複数の論理プロセッサを初期化すべく実行可能なプリブートルーチンと、
前記複数の論理プロセッサのうち前記OSから隠蔽すべき少なくとも１つの論理プロセッサを識別し、及び該識別された論理プロセッサをシステム管理モード（SMM）へと移行させて該SMMに留めることにより少なくとも１つの隠蔽論理プロセッサ及び少なくとも１つの可視論理プロセッサを規定すべく実行可能なパークルーチンと、
前記少なくとも１つの可視論理プロセッサを使用すべく該コンピュータの前記OSをブートさせるべく実行可能なブートストラップルーチンと
を有するシステムファームウェアと
を備えている、コンピュータ。
【請求項１０】
前記プリブートルーチンがPOST（power-on self-test）ルーチンを含む、請求項９に記載のコンピュータ。
【請求項１１】
前記システムファームウェアが、該コンピュータのハードウェア構成を規定するハードウェアコンフィギュレーション属性を含み、前記パークルーチンが、該ハードウェアコンフィギュレーション属性を解析することにより前記少なくとも１つの隠蔽論理プロセッサを識別する、請求項９に記載のコンピュータ。
【請求項１２】
前記システムファームウェアが、ユーザインタフェイスを介して選択される選択可能な属性を含み、前記パークルーチンが、該選択可能な属性を解析することにより前記少なくとも１つの隠蔽論理プロセッサを識別する、請求項９に記載のコンピュータ。
【請求項１３】
前記システムファームウェアが、マシン例外チェック（MCE）及びSMIの少なくとも一方を操作するシステム管理割り込み（SMI）ルーチンを含む、請求項９に記載のコンピュータ。
【請求項１４】
前記SMIルーチンが、前記OSからの要求に基づき、前記少なくとも１つの隠蔽論理プロセッサのうちの１つの論理プロセッサを、前記少なくとも１つの可視論理プロセッサの一部として可視となるよう再分類し、又は、前記少なくとも１つの可視論理プロセッサのうちの１つの論理プロセッサを、前記少なくとも１つの隠蔽論理プロセッサの一部として隠蔽されるよう再分類する、請求項１３に記載のコンピュータ。
【請求項１５】
複数の命令が格納されたコンピュータ読み取り可能媒体であって、該複数の命令が、少なくとも１つの中央処理装置（CPU）により実行された際に、該少なくとも１つのCPUに、複数の論理プロセッサのうちの少なくとも１つの論理プロセッサを隠蔽する方法を実行させるものであり、該方法が、
プリブートルーチンを実行して前記複数の論理プロセッサを初期化し、
パークルーチンを実行して前記複数の論理プロセッサのうちオペレーティングシステム（OS）から隠蔽すべき少なくとも１つの論理プロセッサを識別し、及び該識別された論理プロセッサをシステム管理モード（SMM）へと移行させて該SMMに留めることにより少なくとも１つの隠蔽論理プロセッサ及び少なくとも１つの可視論理プロセッサを規定し、
ブートストラップルーチンを実行して該少なくとも１つの可視論理プロセッサを使用すべく前記OSをブートさせる、
という各ステップからなる、複数の命令が格納されたコンピュータ読み取り可能媒体。
【請求項１６】
前記OSからの要求に基づき、システム管理割り込み（SMI）ルーチンを実行して、前記少なくとも１つの隠蔽論理プロセッサのうちの１つの論理プロセッサを、前記少なくとも１つの可視論理プロセッサの一部として可視となるよう再分類し、又は前記少なくとも１つの可視論理プロセッサのうちの少なくとも１つの論理プロセッサを、前記少なくとも１つの隠蔽論理プロセッサの一部として隠蔽するよう再分類するステップを更に含む、請求項１５に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステムは、少なくとも１つの中央処理装置（CPU）集積回路（IC）を有することが可能であり、該中央処理装置の各々は少なくとも１つのプロセッサ又は「コア」を有することが可能である。場合によっては、各プロセッサコアは、複数のスレッドを実行することが可能である。例えば、Intel Corporationから市販されている「INTEL CORE i7 CPU」等のCPUは、２コア（デュアルコア）、４コア（クアッドコア）、又は６コア（ヘキサコア）を含むことが可能であり、その各コアは２スレッドを提供するものである。コンピュータシステム内の回路基板又は「メインボード」は、少なくとも１つのソケットを含むことが可能であり、該ソケットの各々は１つのCPU ICを支持するものである。例えば、１つのメインボードは、クアッドコアCPU ICのための２つのソケットを支持することが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
データベースソフトウェア等の所与のタイプのソフトウェアに関するライセンスコストは、該ソフトウェアがインストールされるコンピュータ内のプロセッサの個数によって決まる。該ソフトウェアは、物理ソケット、物理コア、又はコアスレッドを計数することが可能である。利用可能なプロセッサの個数が増えるにつれて、ソフトウェアのライセンスコストは高くなる。企業は、同一構成の複数のコンピュータを購入するが、その各々を異なる態様で使用する場合がある。例えば、特定のコンピュータ用途では、利用可能な複数のプロセッサの全てを必要としない可能性がある。このため、ユーザは、コンピュータの指定された機能を実行するために複数のプロセッサの全てを必要としない場合であっても、高価なソフトウェアライセンスコストを支払う場合がある。
【図面の簡単な説明】
【０００３】
【図１】例示的な実施形態によるコンピュータシステムのブロック図である。
【図２】例示的な実施形態による複数の論理プロセッサを有するコンピュータ内の（１つ以上の）論理プロセッサを隠蔽する方法を示すフローチャートである。
【図３】例示的な実施形態による隠蔽された論理プロセッサに割り込む方法を示すフローチャートである。
【発明を実施するための形態】
【０００４】
本発明の実施形態を図面を参照して説明する。
【０００５】
コンピュータのオペレーティングシステム（OS）からの論理プロセッサの隠蔽について説明する。一実施形態では、１つのコンピュータ内の複数の論理プロセッサは、システムファームウェア内のプリブートルーチンを実行することにより初期化される。例えば、POST（power-on self-test）を実行して、コンピュータの論理プロセッサその他の構成要素を初期化することが可能である。複数の論理プロセッサのうちの少なくとも１つをOSから隠蔽すべく識別して、（１つ以上の）隠蔽論理プロセッサ及び１つ以上の可視論理プロセッサを規定することが可能である。該（１つ以上の）隠蔽論理プロセッサの各々は、システムファームウェア内のパークルーチン（park routine）を実行することによりシステム管理モード（SMM）に移行される。SMMは、通常の実行が保留される動作モードであり、それ故、SMMにある論理プロセッサはOSにより使用することができない。コンピュータのOSは、１つ以上の可視論理プロセッサを使用すべくブートされる。「論理プロセッサ」は、使用されるCPU ICの能力に応じて、CPU IC（例えばソケット）、CPU ICコア、又はコア上のスレッドを含むことが可能である。
【０００６】
論理プロセッサの「パーキング（parking）」すなわち隠蔽は、特殊なプロセッサアーキテクチャを有するCPUで動作するよう設計されたプロプリエタリなオペレーティングシステムを使用することを必要とする。本書で説明する実施形態は、論理プロセッサのパーキング用の特殊なアーキテクチャを有さない（Intel及びAMDから市販されているような）広く入手可能なx86ベースのCPUと共に使用することが可能である。更に、本書で説明する実施形態は、MICROSOFT WINDOWSやRED HAT LINUXといった広く入手可能なx86ベースのオペレーティングシステムと共に使用することが可能である。実施形態によっては、論理プロセッサは、OS自体の如何なる依存性も伴うことなく、OS及びそのアプリケーションから隠蔽することが可能である。必要ない論理プロセッサを隠蔽することにより、CPU IC（例えばソケット）、CPU ICコア、又はコアスレッドの個数に基づくソフトウェアライセンスを削減することが可能である。本発明の実施形態は、以下の例示的な実施形態に関して理解することが可能である。
【０００７】
図１は、例示的な一実施形態によるコンピュータシステム100のブロック図である。該コンピュータシステム100は、少なくとも１つの中央処理装置（CPU）集積回路（IC）102、様々なサポート回路106、メモリ108、様々な入出力（IO）回路110、システムファームウェア112、及び相互接続回路104を含む。相互接続回路104は、該コンピュータシステム100の各構成要素間の通信を容易にするためのバス及びブリッジ等を提供することが可能である。CPU IC102の各々は、少なくとも１つの物理「コア」を含むことが可能である。各物理コアは、少なくとも１つのスレッドを含むことが可能である。一般に、コンピュータシステム100は、複数の論理プロセッサ103を含み、該論理プロセッサ103は、CPU IC102の能力に応じて、CPU IC、コア、又はスレッドとすることが可能である。CPU IC102は、システム管理モード（SMM）をサポートするタイプのものであり、該システム管理モードでは、全ての通常の実行（オペレーティングシステムによる実行を含む）が保留される一方、システムファームウェア112内のルーチンの特殊な実行が提供される。SMMをサポートする例示的なCPU ICには、Intel及びAMDから市販されているx86ベース・プロセッサが含まれる。
【０００８】
サポート回路106は、キャッシュ、電源、クロック回路、及びデータレジスタ等を含むことが可能である。メモリ108は、ランダムアクセスメモリ、リードオンリーメモリ、キャッシュメモリ、磁気リード／ライトメモリ等、又はかかるメモリデバイスの任意の組み合わせを含むことが可能である。メモリ108は、（１つ以上の）CPU IC102により実行するためのオペレーティングシステム（OS）114及びソフトウェアアプリケーション（APPS116）を格納することが可能である。IO回路110は、（１つ以上の）CPU IC102及び／又はメモリ108との間の通信を容易にすることが可能である。
【０００９】
システムファームウェア112は、ファームウェアインタフェイス118を含む。該ファームウェアインタフェイス118は、BIOS（basic input/output system）やUEFI（unified extensible firmware interface）等を含むことが可能である。システムファームウェア112は更に、プリブートルーチン120、パークルーチン122、及びブートストラップルーチン124を含む。プリブートルーチン120は、ブート又はリセット時に最初に（１つ以上の）CPU IC102により実行されるコードを含む。プリブートルーチン120は、（１つ以上の）CPU IC102とコンピュータシステム100の他の構成要素（例えばメモリ108）とを初期化する。例えば、プリブートルーチン120は、POST（power-on self-test）ルーチンを含むことが可能である。特に、（１つ以上の）CPU IC102（例えば特定のx86ベースのCPU IC）によっては、少なくとも１つの論理プロセッサが該CPU ICを適切に初期化することができるようブート時に利用可能となることを必要とするものがある。コンピュータシステム内の全ての論理プロセッサ103は、（１つ以上の）CPU IC102が適切に初期化されるようにプリブートルーチン120の実行中に利用可能とされる。
【００１０】
パークルーチン122は、プリブートルーチン120の後に（１つ以上の）CPU IC102により実行されるコードを含む。パークルーチン122は、OSから隠蔽して「パーキング」させることができる論理プロセッサ103を識別する。例えば、パークルーチン122は、パーキングされるべき（１つ以上の）隠蔽論理プロセッサと、OS114により使用するための１つ以上の可視論理プロセッサとを規定する。パークルーチン122は、各隠蔽論理プロセッサをSMMへと移行させる。該隠蔽され又はパーキングされた１つ以上のプロセッサは、システムファームウェア112及びパークルーチン122の制御下にある。複数の論理プロセッサ103のうち、システムファームウェア112の制御下にありOS114から隠蔽されているものが、「（１つ以上の）隠蔽論理プロセッサ」又は「（１つ以上の）ファームウェア（により）制御（される）論理プロセッサ」である。複数の論理プロセッサ103のうち、OSにより使用することが可能となるものが、「（１つ以上の）可視論理プロセッサ」又は「（１つ以上の）OS（により）制御（される）論理プロセッサ」である。
【００１１】
ブートストラップルーチン124は、パークルーチン122の後に（１つ以上の）CPU IC102により実行されるコードを含む。ブートストラップルーチン124は、（１つ以上の）可視論理プロセッサを使用すべくOS114をブートさせる（例えば（１つ以上の）可視論理プロセッサがOS使用可能モード（例えばx86ベース・プロセッサのプロテクトモード）に移行することができる）。OS114は、（１つ以上の）隠蔽論理プロセッサに対するアクセス又は可視性を有さない。
【００１２】
図２は、例示的な一実施形態による、複数の論理プロセッサを有するコンピュータにおける（１つ以上の）論理プロセッサの隠蔽方法200を示すフローチャートである。該方法200は、図１のコンピュータシステム100に関して理解することができる。該方法200は、ステップ202で開始し、システムファームウェア112内のプリブートルーチン120を実行することにより複数の論理プロセッサ103が初期化される。
【００１３】
ステップ204で、該複数の論理プロセッサ103が（１つ以上の）隠蔽論理プロセッサと（１つ以上の）可視論理プロセッサとに分けられる。一例では、システムファームウェア112は、ハードウェアコンフィギュレーション属性126を格納する。該ハードウェアコンフィギュレーション属性126は、配備されたコンピュータ100のコンフィギュレーション（構成）を記述することが可能なものである。例えば、ハードウェアコンフィギュレーション属性126は、計算負荷の高い機能ではなくメモリ及び入出力機能を実質的に提供する装置としてコンピュータ100が構成されることを示すことが可能である。パークルーチン122は、該ハードウェアコンフィギュレーション属性126を解析して、隠蔽すべき論理プロセッサの特定の個数を決定することが可能である。例えば、ハードウェアコンフィギュレーション属性126が複数の役割のうちの１つを示し、その各役割毎に特定の個数の論理プロセッサをパーキングさせるようにパークルーチン122を構成することが可能である。
【００１４】
別の例では、システムファームウェア112は、複数の選択可能な設定128を格納する。例えば、ファームウェアインタフェイス118は、ユーザが複数の選択可能な設定128との対話及びその規定を行うことを可能にするGUI（graphical user interface）又はCLI（command line interface）を提供することが可能である。パークルーチン122は、該選択可能な設定128を解析して、隠蔽すべき論理プロセッサの特定の個数を決定することが可能である。例えば、該選択可能な設定128が複数の役割のうちの１つを示し、その各役割毎に特定の個数の論理プロセッサをパーキングさせるようにパークルーチン122を構成することが可能である。代替的に、該選択可能な設定128は、パーキングされてOSから隠蔽されるべき特定の個数の論理プロセッサに関する特定のユーザ選択可能な設定を含むことが可能である。
【００１５】
ステップ206で、パークルーチン122は（１つ以上の）隠蔽論理プロセッサの各々をSMMへと移行させる。ステップ208で、ブートストラップルーチン124は（１つ以上の）可視論理プロセッサを使用すべくOS114をブートさせる。例えば、ブートストラップルーチン124は、ACPI（advanced configuration and power interface）テーブルを使用して（１つ以上の）可視論理プロセッサをOS114に通知することが可能である。OS114がブートされると、（１つ以上の）隠蔽論理プロセッサはOS114から見えなくなり及び割り込むことができなくなる。これは、該（１つ以上の）隠蔽論理プロセッサがSMMにあってシステムファームウェア112に対して応答するからである。（１つ以上の）隠蔽論理プロセッサがOS114に対して不可視となるため、かかる（１つ以上の）隠蔽論理プロセッサはソフトウェアアプリケーション116に対して不可視となる。隠蔽されている論理プロセッサに応じて、かかる隠蔽論理プロセッサは、CPU IC、コア、又はスレッドの個数に基づいてライセンスコストを決定する如何なるソフトウェアアプリケーション116によっても考慮されないことになる。
【００１６】
図１を参照すると、システムファームウェア112はまた、システム管理割り込み（SMI）ハンドラ130を含む。該SMIハンドラ130は、（１つ以上の）論理プロセッサ103に関するシステム管理割り込みを操作するためのルーチンを含む。SMIハンドラ130はまた、（１つ以上の）隠蔽論理プロセッサに関するマシン例外チェック（MCE）及びそれと同様のタイプのコンピュータハードウェアエラーを操作することが可能である。
【００１７】
図３は、例示的な一実施形態による、隠蔽論理プロセッサの割り込み方法300を示すフローチャートである。該方法300は、図１のコンピュータ100に関してりかいすることができる。該方法300は、ステップ302で開始し、全ての論理プロセッサ103により処理されるべき割り込みの信号が伝送される。例えば、OS114又はコンピュータシステム100内の他のハードウェアによりグローバルSMIを送信することが可能である。該グローバルSMIは、（１つ以上の）可視論理プロセッサの全てに割り込んで、かかるプロセッサをSMM（（１つ以上の）OS（により）可視（な）SMMプロセッサ）へと移行させる。（１つ以上の）隠蔽論理プロセッサはSMMのままとなる。
【００１８】
ステップ304で、論理プロセッサ103がSMIハンドラ130を実行する。一例では、SMIハンドラ130は、パワーマネージメント機能の実行といったデフォルトコードを含む。別の例では、SMIハンドラ130は、マシン例外チェックを操作するためのMCEハンドラを含む。一例では、（１つ以上の）可視論理プロセッサは、割り込みの受信時にSMIハンドラ130を実行する。次いで（１つ以上の）可視論理プロセッサは、SMIハンドラ130を（例えば（１つ以上の）隠蔽論理プロセッサが監視しているメモリロケーションに書き込むことにより）実行すべきことを（１つ以上の）隠蔽論理プロセッサに通知することが可能である。ステップ306で、SMIハンドラ130は、（１つ以上の）OS可視SMMプロセッサを、OS114による制御のために、そのデフォルト動作モードに戻す。（１つ以上の）隠蔽論理プロセッサは、SMMに留まってOS114から隠蔽された状態を維持することが可能である。
【００１９】
一例では、ステップ304で、（１つ以上の）隠蔽論理プロセッサのうちの少なくとも１つを、割り込み時のOSによる制御のために解放することが可能である。一例では、OS114は、システムファームウェア112（例えば、SMIハンドラ130及び／又はパークルーチン122）と協働して（１つ以上の）追加の論理プロセッサの要求を指示することが可能である。システムファームウェア112は次いで（１つ以上の）隠蔽論理プロセッサのうちの少なくとも１つを、一組の（１つ以上の）OS可視SMMプロセッサへと転換させることが可能である。SMIハンドラ130が割り込みから戻ると、新たに追加された（１つ以上の）論理プロセッサは、OS114により制御することが可能な（１つ以上の）可視論理プロセッサの一部となる。
【００２０】
一例では、ステップ304で、（１つ以上の）可視論理プロセッサのうちの少なくとも１つを、割り込み時のOSによる制御から除外することが可能である。一例では、OS114は、システムファームウェア112（例えば、SMIハンドラ130及び／又はパークルーチン122）と協働して（１つ以上の）論理プロセッサの除外の要求を指示することが可能である。システムファームウェア112は次いで（１つ以上の）可視論理プロセッサのうちの少なくとも１つを、一組の（１つ以上の）隠蔽論理プロセッサへと転換させることが可能である。SMIハンドラ130が割り込みから戻ると、新たに除外された（１つ以上の）論理プロセッサは、SMMに留まり、OS114により制御することが可能な（１つ以上の）可視論理プロセッサから除外される。
【００２１】
上述した方法は、該方法を実行するようコンピューティングシステムを構成するためのコンピュータ読み取り可能媒体という形で実施することが可能である。該コンピュータ読み取り可能媒体は、多数の物理装置（例えばコンピュータ）にわたって分散させることが可能なものである。該コンピュータ読み取り可能媒体は、例えば、任意の個数の以下に示すものを含むことが可能である（が、それらには限定されない）：ディスク及びテープ記憶媒体を含む磁気記憶媒体；コンパクトディスク媒体（例えばCD-ROM、CD-R等）及びディジタルビデオディスク記憶媒体といった光記憶媒体；ホログラムメモリ；フラッシュメモリ、EEPROM、EPROM、及びROM等の半導体ベースのメモリユニットを含む不揮発性メモリ記憶媒体；強磁性ディジタルメモリ；レジスタ、バッファ又はキャッシュ、メインメモリ、RAMその他を含む揮発性記憶媒体。本書で開示するマシン読み取り可能コードを格納するために、その他の新規の様々なタイプのコンピュータ読み取り可能媒体を使用することが可能である。
【００２２】
上記では、本発明の理解を提供すべく多数の細部について説明した。しかし、当業者には理解されるように、本発明は係る細部を伴うことなく実施することが可能である。限られた数の実施形態に関して本発明を開示したが、かかる実施形態に対して多数の修正及び変更を加えることが可能であることが当業者には理解されよう。特許請求の範囲は、本発明の真の思想及び範囲内に含まれるものとしてかかる修正及び変更を網羅することを意図したものである。
【図１】
0005903173.tif 000002
【図２】
0005903173.tif 000003
【図３】
0005903173.tif 000004