ユーザレベルソフトウェアを介してプロセッサの機構を制御することを含む方法。オーバーライドレジスタにおける前記機構に対応するオーバーライドビットをセットすることを介して前記機構をディスエーブルにすることをさらに含む、請求項1に記載の方法。プログラムの第1の段階の間に前記機構をディスエーブルにし、前記プログラムの第2の段階の間に前記機構をイネーブルにすることをさらに含む、請求項1に記載の方法。前記機構はハードウェアプリフェッチャを含み、前記第2の段階はガーベッジコレクションを含む、請求項3に記載の方法。プログラム実行中に前記機構を動的に制御することをさらに含む、請求項1に記載の方法。プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットすること、及び前記オーバーライドレジスタの前記エントリを使用して前記プロセッサ機構に対する前記プロセッサ構成設定をオーバーライドすることを含む、方法。前記エントリをユーザ制御下でセットすることをさらに含む、請求項6に記載の方法。プログラムの第1の部分の間に前記エントリをセットすること、及び該プログラムの第2の部分の間に該エントリをリセットすること、をさらに含む請求項6に記載の方法。コンテキストスイッチ時に前記オーバーライドレジスタのエントリを格納することをさらに含む、請求項6に記載の方法。プログラムの動的プロファイリングに基づいて前記エントリをセットすることをさらに含む、請求項6に記載の方法。前記オーバーライドレジスタの前記エントリをハードウェア制御下でオーバーライドすることをさらに含む、請求項6に記載の方法。前記プロセッサ構成設定をオーバーライドすることは、前記オーバーライドレジスタの前記エントリとプロセッサ構成レジスタの対応するエントリとの間で論理演算を実行することを含む、請求項6に記載の方法。少なくとも1つのプロセッサ機構に対するデフォルト設定をオーバーライドするための第1のオーバーライド情報を格納する第1のレジスタを具備する装置。前記少なくとも1つのプロセッサ機構に対する前記デフォルト設定を格納するプロセッサ構成レジスタをさらに具備する、請求項13に記載の装置。前記少なくとも1つのプロセッサ機構に対する前記デフォルト設定をオーバーライドするために使用される第2のオーバーライド情報を格納する第2のレジスタをさらに具備する、請求項14に記載の装置。前記プロセッサ構成レジスタと前記第1のレジスタとの対応するエントリを結合する第1のロジックをさらに具備する、請求項15に記載の装置。前記第1のロジックの出力を前記第2のレジスタの対応するエントリと結合する第2のロジックをさらに具備する、請求項16に記載の装置。前記第1のレジスタ及び前記第2のレジスタは、ユーザ制御下で前記第1のオーバーライド情報及び前記第2のオーバーライド情報をそれぞれ格納する、請求項15に記載の装置。前記第1のレジスタは前記少なくとも1つのプロセッサ機構のイネーブル状態をオーバーライドし、前記第2のレジスタは前記少なくとも1つのプロセッサ機構のディスエーブル状態をオーバーライドする、請求項15に記載の装置。実行されると、システムに対し、プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットし、且つ前記オーバーライドレジスタの前記エントリを用いて前記プロセッサ機構に対する前記プロセッサ構成設定をオーバーライドすることを可能にする命令を含む機械アクセス可能記憶媒体を具備する物品。実行されると、前記システムに対し、コンテキストスイッチ時に前記オーバーライドレジスタのエントリを格納することを可能にする命令をさらに含む、請求項20に記載の物品。実行されると、前記システムに対し、第1のプログラム段階において前記エントリをセットし、第2のプログラム段階において該エントリをリセットすることを可能にする命令をさらに含む、請求項20に記載の物品。実行されると、前記システムに対し、プログラムの動的プロファイリングに基づき前記エントリをセットすることを可能にする命令をさらに含む、請求項20に記載の物品。少なくとも1つのプロセッサ機構に対するデフォルト設定を格納するプロセッサ構成レジスタを有するプロセッサであって、該プロセッサ構成レジスタはアーキテクチャ的に可視である、プロセッサと、該プロセッサに結合されたダイナミックランダムアクセスメモリとを具備するシステム。前記デフォルト設定をオーバーライドするために使用される第1のオーバーライド情報を格納する第1のレジスタをさらに具備する、請求項24に記載のシステム。前記ダイナミックランダムアクセスメモリは、実行されると、前記システムに対し、プログラムの第1の部分の間に前記第1のオーバーライド情報をセットし、該プログラムの第2の段階の間に該第1のオーバーライド情報をリセットすることを可能にする命令を含む、請求項25に記載のシステム。前記ダイナミックランダムアクセスメモリは、実行されると、前記システムに対し、コンテキストスイッチ時に前記第1のレジスタ及び前記プロセッサ構成レジスタのエントリを格納することを可能にする命令を含む、請求項25に記載のシステム。プロセッサ機構をイネーブル又はディスエーブルにするための情報を格納するアーキテクチャ的に可視であるレジスタを具備する装置。前記アーキテクチャ的に可視であるレジスタは複数のビットを有し、各ビットは前記プロセッサ機構の対応する1つに関連する、請求項28に記載の装置。前記アーキテクチャ的に可視であるレジスタは、ユーザレベルソフトウェアによって制御可能である、請求項28に記載の装置。前記情報は、ユーザレベルソフトウェアによって動的に変更される、請求項28に記載の装置。このため、特定のプロセッサ機構に関してプロセッサのパフォーマンスを向上させる必要がある。さまざまな実施形態において、種々の態様のプロセッサのマイクロアーキテクチャ構成のユーザレベルのソフトウェア制御をもたらすことができる。こうしたユーザのレベル制御を多くの種々の方法で達成することができるが、いくつかの実施形態では、プロセッサ内に、プロセッサの構成に関する情報を格納するために1つ又は複数の追加のレジスタが存在してもよい。一実施形態では、追加のレジスタを、マイクロアーキテクチャ構成レジスタ又はMCRと呼ぶことがある。プロセッサの状態の一部として、MCRは、コンテキストスイッチにわたって保存され復元される。いくつかの実施形態では、MCRの各ビットは、特定のマイクロアーキテクチャ機構のイネーブル状態又はディスエーブル状態に対応してもよい。追加のレジスタとして、MCRの読出し及び書込みは非常に高速であり、その速度はプロセッサ内の汎用GPレジスタの変更速度に匹敵する。ここで図1を参照すると、本発明の一実施形態によるプロセッサの状態レジスタの部分的なセットのブロック図が示されている。図1の状態レジスタは、Intel登録商標アーキテクチャIA-32又はx86仕様に従うプロセッサに存在してもよいが、本発明の範囲はそのように限定されない。すなわち、本明細書では主にIA-32プロセッサに関して論考するが、実施形態を、ITANIUM登録商標プロセッサ等、インテルコーポレーションIntelCorporationから入手可能な他のプロセッサ、又は同様の若しくは異なる命令セットアーキテクチャISAを有する他の製造業者のプロセッサにおいて実装してもよい。図1に示すように、状態レジスタは、プロセッサのコア内にあってもよく、それらを使用して、所与のコンテキストに対するプロセッサ状態に関する情報を格納してもよい。図1には特定のレジスタが存在するように示すが、他の実施形態では、他のプログラム実行レジスタに加えて追加のステータスレジスタ、制御レジスタ及び状態レジスタがあってもよい、ということが理解される。図1に示すように、存在するレジスタは、複数のGPレジスタ10を含んでもよい。こうしたレジスタを、論理演算及び算術演算のためのオペランド、アドレス計算のためのオペランド、メモリポインタ等、プロセッサ動作中にさまざまな情報を格納するために使用してもよい。さらに、ステータス及び制御EFLAGSレジスタ20は、さまざまなステータスフラグ、制御フラグ及びシステムフラグを含んでもよい。EFLAGSレジスタ20を使用して、プログラムステータスに関して報告してもよい。命令ポインタEIPレジスタ30を使用して、実行されるプログラムの次の命令に対するポインタを格納してもよい。図1にさらに示すように、複数のセグメントレジスタ40が存在してもよい。セグメントレジスタ40は、メモリセグメントを識別するポインタとして作用するセグメントセレクタを格納してもよい。言い換えれば、こうしたセグメントレジスタ40は、メモリのコード、データ及びスタックセグメントをアドレス指定する。図1にさらに示すように、少なくとも1つのマイクロアーキテクチャ構成レジスタMCR50が存在する。MCR50を使用して、種々のプロセッサ機構に関する情報を格納してもよい。たとえば、MCR50の各エントリ又はビットは、異なるプロセッサ機構に対応してもよい。MCR50は、さまざまなソフトウェアレベルによりISAを介してアクセスされることができるように、アーキテクチャ的に可視であってもよい。各ビットの出力を、対応する機構又は他のプロセッサハードウェアに結合して、その機構のイネーブル又はディスエーブルを制御してもよい。所与のビットのステータスに基づき、対応する機構をイネーブルに又はディスエーブルにしてもよい。一例として、いくつかの機構を、プロセッサが製造される時にデフォルトによってイネーブル又はディスエーブルにしてもよい。しかしながら、動作中、機構によっては、それらのデフォルト設定がソフトウェア制御下で変更されるたとえばイネーブルからディスエーブルにようにすることができる。こうしたソフトウェア制御を、アプリケーションプログラム等、ユーザレベルソフトウェアにおいて行うことができる。このように、プロセッサ機構の非オペレーティングシステムOS又は非BIOS制御を行うことができる。まとめて、図1に示すレジスタを、アーキテクチャ制御レジスタたとえば制御レジスタ0、制御レジスタ1、制御レジスタ2、制御レジスタ3等等、図1に示さない他のレジスタと共に、コンテキストレジスタとみなしてもよい。それは、こうしたレジスタを、プロセッサで実行している所与のコンテキストに基づいて異なる値を用いてプログラムすることができるためである。マルチタスクOSが1つのプロセスたとえばアプリケーション又はソフトウェアスレッドの実行を停止し別のプロセスの実行を開始する時、コンテキストスイッチが発生する場合がある。コンテキストスイッチ時、これらのレジスタに格納されている値を、現在のコンテキストに対するプロセッサ状態を保存するために、他の場所に保存してもよい。そして、これらのレジスタに新たなコンテキストのステータスをロードすることによりそのプロセッサ状態を提供してもよい。別のコンテキストスイッチ、たとえば元のコンテキストに戻る時、保存されたプロセッサ状態をレジスタに復元してもよい。いくつかのプロセッサ機構は、所与のプログラム段階中に適当である場合もあれば不適当である場合もある。したがって、動作時、MCR50のビットを、所与のアプリケーションに対する特定のプロセッサ機構の有用性、効率等に関する情報に基づいてイネーブルに又はディスエーブルにしてもよい。たとえば、所定のポリシを介して、動的プロファイリングを介して、又は特定のプログラム段階中に、特定の機構をイネーブルにするか又はディスエーブルにすることにより、プログラム全体のパフォーマンスが向上することが知られている。ソフトウェアは、プロセッサ構成設定をオーバーライドすることの妥当性を確定し、さまざまな方法でプロセッサ機構のイネーブル又はディスエーブルをもたらしてもよい。最初に、アプリケーションプログラム等のソフトウェアが書かれる時、プログラマは、所望の機構がプログラムの或る段階においてオン又はオフすなわちイネーブル又はディスエーブルにされるようにコードを挿入してもよい。他の実施形態では、コンパイラが、或るプログラム段階に対して特定のプロセッサ機構が望ましいと判断し、コンパイル中、1つ又は複数のプロセッサ機構の所望のイネーブル又はディスエーブルをもたらすようにコードを挿入してもよい。さらに、管理された実行環境managedruntimeenvironment:マネージドランタイム環境MRTEたとえばJAVA商標又は.NET環境では、プロファイリングを実行してもよく、プロファイリングの結果が、或るプロセッサ機構は或るプログラム段階中は適当であるが、他の段階中は適当でないと示してもよい。第1のプログラム段階に入ると、MCR50たとえばの適当なビットが、指定された機構をイネーブルにするか又はディスエーブルにするようにセットされる。このプログラム段階が終了すると、MCRビットはその元の値にリセットされる。MCR50の内容は、プロセッサ状態の一部であり、コンテキストスイッチにわたって保存されるため、所与のソフトウェアプロセス及びスレッドに特有である。他の実施形態では、動的プロファイリング中、アプリケーションが一定のプログラムカウンタPC値に達した時、所与の機構がイネーブルにされるか又はディスエーブルにされると判断されてもよい。さらに他の実施形態では、特定のプログラムタイプに対し所与の機構をイネーブル又はディスエーブルにしてもよい。たとえば、ストライドstridingハードウェアプリフェッチャ等のハードウェアプリフェッチャHWPを、科学計算アプリケーションに対してイネーブルにしてもよく、一方でデータベースアプリケーションに対してディスエーブルにしてもよい。これらの異なるタイプのアプリケーションの機構mechanicsにより、プリフェッチャはデータベース操作に対してそれほど有効でなくなるためである。本発明の実施形態を種々のマイクロアーキテクチャ又は他のプロセッサ機構と共に使用してもよいが、以下の論考はHWPに関する。MRTEの場合、サーバタイプのアプリケーションに対し、HWPは、計算のガーベッジコレクションGC段階中に非常に大きいパフォーマンスブーストを提供する可能性があるが、パフォーマンス全体を損なう可能性がある。このため、パフォーマンスを向上させるために、HWPを、計算の一般的な段階の間はディスエーブルにするが、ガーベッジコレクション中はイネーブルにしてもよい。MRTEの仮想マシンVMは、ガーベッジコレクション段階に入ると、MCR50にアクセスし、HWP構成に対応するビットをイネーブルにセットする。ガーベッジコレクション段階が完了すると、このビットはディスエーブルにセットされる。他の実施形態では、プロセッサ機構のユーザレベル制御を提供するために複数のレジスタを使用してもよい。こうした方法では、マイクロアーキテクチャ機構等のプロセッサ機構の制御は、デフォルトによりすべてのソフトウェアスレッドに適用されるプロセッサ構成設定と、そのデフォルトをオーバーライドするための各ソフトウェアスレッドによるヒントとを共にサポートしてもよい。このため、第1のレジスタは、デフォルトプロセッサ構成設定に関する情報を格納するために存在してもよく、1つ又は複数のオーバーライドレジスタは、ソフトウェアがデフォルト設定をオーバーライドするのに使用するために存在してもよい。そして、オーバーライドレジスタの情報に基づき、或る機構が強制的にイネーブルになるか又はディスエーブルになるようにすることにより、プロセッサ構成設定を上書きしてもよい。ここで図2を参照すると、本発明の別の実施形態による複数のレジスタのブロック図が示されている。図2に示すように、プロセッサ構成レジスタPCR70が存在する。PCR70は、N個のビットを含んでもよく、各ビットは、マイクロアーキテクチャ機構等、異なるプロセッサ機構に対応する。PCR70は、すべてのプロセスにわたってデフォルトとして適用可能なプロセッサ構成設定に対応する値を格納してもよい。たとえば、1の値は、対応する機構がイネーブルであることを示してもよく、0の値は、対応する機構がディスエーブルであることを示してもよい。しかしながら、PCR70の値を、所与のソフトウェアスレッドのユーザレベル制御に基づいて上書きしてもよい。特に、PCR70のデフォルト設定を、イネーブルオーバーライドレジスタEOR80及びディスエーブルオーバーライドレジスタDOR90の情報に基づいてオーバーライドしてもよい。EOR80及びDOR90を、所与のソフトウェアスレッドの実行中にデフォルト設定をオーバーライドするように、且つプロセッサ機構がイネーブル又はディスエーブルされるようにプログラムしてもよい。たとえば、アプリケーションプログラムを開発する独立系ソフトウェアベンダindependentsoftwarevendorISVは、たとえば或るプログラム段階中にプログラムの動作及び効率を向上させるために特定のプロセッサ機構がイネーブルとなるようにするコードを含めてもよい。異なる実施形態では、プロセッサ機構の所望のディスエーブル又はイネーブルをもたらすために、PCR70、EOR80及びDOR90の対応するビットを論理的に結合してもよい。ユーザ制御下で機構選択をもたらすように、レジスタを種々の方法で論理的に結合してもよい。ここで図3を参照すると、本発明の一実施形態によるオーバーライドレジスタを結合するために使用されるロジックインプリメンテーションが示されている。特に、図3は、PCR70、EOR80及びDOR90の対応するビットを示す。図3にさらに示すように、対応するビットを結合するために論理ゲートを使用してもよい。詳細には、ORゲート92は、PCR70及びEOR80から対応するビットを受け取ってもよい。そして、ORゲート92の出力をANDゲート94の入力に結合してもよく、ANDゲート94はまた、DOR90の対応するビットの反転出力を受け取るように結合される。ANDゲート94の結果としての出力を使用して、対応するプロセッサ機構に対するプロセッサ構成設定を制御してもよい。たとえば、ANDゲート94の出力を、プロセッサ機構の回路に提供することにより、その機構をそれに従ってイネーブル又はディスエーブルにしてもよい。図3に示すロジックインプリメンテーションを使用して、3つのレジスタに対するビット設定の組合せにより、関連するプロセッサ機構をイネーブル又はディスエーブルにしてもよい。詳細には、通常の動作条件下では、EOR80及びDOR90とは無関係に、PCR70のビット0の1の値たとえばは、対応する機構がイネーブルであることを示す。EOR80及びDOR90のビット0の1の値は、PCR70の値が、それぞれイネーブル及びディスエーブルとしてオーバーライドされることを示す。すなわち、EOR80のビットに対するアクティブハイ値を使用して、対応する機構が強制的にオンにされ、DOR90のアクティブハイビットを使用して、対応する機構が強制的にオフにされる。たとえば、デスクトップシステムにおいて、HWPに対応するPCRビットを工場において又はBIOSを介して相手先ブランド製造業者originalequipmentmanufacturerOEMにより1にセットしてもよく、それによりHWPはデフォルトによってイネーブルになる。こうしたHWPは、デスクトップシステムで実行しているアプリケーションに対して望ましい可能性があるため、アプリケーションすなわちユーザレベルコードはオーバーライドレジスタに関して何も行わず、EOR80及びDOR90の対応するビットはデフォルトで0にされる。このため、機構に対するデフォルト挙動は、PCRビットによって与えられ、すなわちHWPはデスクトップシステムに対してイネーブルになる。しかしながら、サーバシステムの場合、HWPはデフォルトによりディスエーブルにされることが望まれる可能性がある。この場合、HWPに対応するPCRビットは、工場において0にセットされる。このデフォルト設定に対し、EOR80及びDOR90の対応するビットは0であり、このためHWPはデフォルトによりディスエーブルにされる。プログラム又はプログラムのいくつかの部分の実行中、HWPをイネーブルにすることが望まれる場合がある。たとえば、Java商標アプリケーションがサーバシステムで実行している場合がある。プロファイリングに基づき、HWPはGC段階中はパフォーマンスを向上させる可能性があることが既知であり、そのため、GC中はHWPをイネーブルにしてもよいが、アプリケーション中の他の場所ではディスエーブルにしてもよい。HWPはデフォルトによりオフであるため、GC中、ソフトウェアは、EOR80の対応するビットを1にセットする。DOR90の対応するビットは、そのデフォルト値0のままである。図3に示すロジックインプリメンテーションに基づき、これにより、所望通りに、ANDゲート94から最終出力の1が得られ、HWPがイネーブルになる。逆に、デスクトップシステムで同じJava商標アプリケーションが実行しているとすると仮定する。ここで、PCRビットは工場において1にセットされる。アプリケーションは、非GC段階中はHWPがイネーブルにされずより効率的に実行するため、GC段階の最後には、ソフトウェアは対応するDORビットを1にセットする。このDOR90の値は、ディスエーブルオーバーライドを示し、HWPはディスエーブルになる。アプリケーションは、HWPがディスエーブルである状態で次のGC段階の開始まで実行し、GC段階の開始の時点で、アプリケーションはDORビットを0にリセットし、HWPがイネーブルになる。ソフトウェアが適当なプログラム位置でビットをセットするため、コンテキストスイッチにおける保存/復元コストを低減することができる。上述したように、ソフトウェアヒント設定は、ソフトウェアスレッド特有であり、コンテキストスイッチ時に保存し復元することができる。保存及び復元手続きが、論理0でない設定のみを保存するように最適化される設計では、オーバーライドレジスタを、有用である場合にのみセットしてもよい。オーバーライドビットがプロセッサ構成設定と同じ設定を提供する場合、すなわちオーバーライドが必要でないそれが無用である場合、対応するオーバーライドビットはセットされない。こうした実施形態では、EOR80及びDOR90の適当なビットに対する入力は、ソフトウェア指定ビットと、対応するプロセッサ構成設定ビットの反転値との論理積をとる出力であってもよい。ハードウェアが、ソフトウェア指定ビットに関連する機能をサポートしない場合、オーバーライドするものはなく、それらは無用である。したがって、それらのビットは読取り専用であってもよく、値は0である。実施形態によっては、ハードウェアは、ソフトウェアヒントオーバーライドをオーバーライドしてもよい。すなわち、一定の情報に基づいて、ハードウェアは、ソフトウェアヒント値がプログラムの実行を向上させず、又は所与のハードウェアインプリメンテーションに不適当であると判断する場合があり、従ってハードウェアは、こうしたソフトウェアヒントをオーバーライドしてもよい。その結果、ハードウェアは、ソフトウェアヒントオーバーライドによって示唆される設定が有効でないと経験的に判断することができる場合、オーバーライドビットをクリアすることができる。たとえば、ハードウェアは、まずソフトウェアヒントを受け入れ、それに従ってアプリケーションを実行してもよい。しかしながら、ハードウェアは、その実行が効率的でなく、イネーブル又はディスエーブルにされた機構がプロセッサのパフォーマンスを向上させないか、又はサーマルリミット等、別の種類の実行制約を侵害する可能性があると判断する場合がある。こうした場合、ハードウェアは、ソフトウェアヒントをオーバーライドするように選択してもよい。他の実施形態では、ハードウェアは、ソフトウェアヒントを、それがすでにヒント値に従ってプロセッサ機構を使用している場合、オーバーライドするように選択してもよい。又は、ハードウェアがプロセッサ機構をより適切に制御し且つそれをより適切に理解している状況において、ソフトウェアヒントをオーバーライドするように選択してもよい。ハードウェアオーバーライドは、ソフトウェアが、ハードウェアが大幅な向上を示す可能性がある投機的最適化を試行すべきであると示唆するが、それは試行するのにコストがかかる可能性があり、そのため潜在的利得の可能性を示す責任がソフトウェアにある場合に適当であり得る。ここで図4を参照すると、本発明の別の実施形態によるオーバーライドレジスタのブロック図が示されている。図4に示すように、プロセッサ構成レジスタPCR70、イネーブルオーバーライドレジスタEOR80及びディスエーブルオーバーライドレジスタDOR90が存在してもよい。図4の実施形態では、オーバーライドレジスタを、ソフトウェアオーバーライドレジスタのハードウェアオーバーライドを提供するように構成してもよい。特に、図4に示すように、EOR80及びDOR90のビットは、リセット信号を受け取ってもよい。この信号を使用して、対応するビットに対するソフトウェア指定値をオーバーライドしてもよい。たとえば、所与のプロセッサ機構に対し、PCR70の対応するビットを、0のデフォルト値にセットしてもよい。しかしながら、アプリケーションは、その設定をオーバーライドし、その機構がイネーブルになるように望む。したがって、ソフトウェアは、EOR80の対応するビットが1の値にセットされるようにする。DOR90の対応するビットは、デフォルトの0にセットされたままであってもよく、それにより、対応する機構は、図3に示すロジックインプリメンテーションを使用してイネーブルにされる。しかしながら、ハードウェアがソフトウェア指定値をオーバーライドするように選択する実施形態では、リセット信号をEOR80の対応するビットに与えてもよく、それによりビット値はそのデフォルト値0に戻される。こうした方法で、ハードウェアはソフトウェアヒントをオーバーライドする。リセット信号がEOR80及びDOR90のビットに直接結合されるように示されているが、他の実施形態では、ロジックに結合してもよく、その出力を使用してソフトウェアヒント値をオーバーライドしてもよい。コンテキストスイッチ時、ソフトウェアヒントのハードウェアオーバーライドによって影響される、このようにレジスタに存在する値を保存してもよい。このため、本発明の実施形態は、プロセッサ機構の動的構成を可能にする。さらに、本発明のさまざまな実施形態では、プロセッサ機構をイネーブル又はディスエーブルにするためにOS特権は不要であり、それにより高速アクセスが可能になり、HWP等のさまざまなプロセッサ機構に関するアプリケーションのパフォーマンスのきめ細かい最適化が容易になる。このように、すべてのプロセスに対してOS及びBIOSに対するこうした管理を制限する代りに、プロセッサ構成に対するユーザレベルのヒント及び/又はオーバーライドを実装することができる。したがって、アプリケーションプログラムは、1つ又は複数のプロセッサ機構を動的に構成することができ、且つそのプログラムに対してのみそれを行うことができる。他のプロセッサ機構を、分岐予測ロジック等のソフトウェアオーバーライドヒントを使用して制御することができる。たとえば、分岐予測を、いくつかのプログラム段階中にイネーブルにし、他の段階中にディスエーブルにしてもよい。さらに他の機構は、ダイナミックランダムアクセスメモリDRAMページオープン/クローズポリシ、キャッシュ割当てポリシ、バスプロトコル、他のメモリプロトコル等の機構を含んでもよい。ここで図5を参照すると、本発明の一実施形態による方法のフローチャートが示されている。図5に示すように、方法200を、ソフトウェアが所望のプロセッサ機構をオーバーライドするために実行してもよい。ブロック210において、オーバーライドされるプロセッサ機構を選択してもよい。そして、1つ又は複数のオーバーライドレジスタを組み込んだインプリメンテーションでは、適当なオーバーライドレジスタをセットしてもよいブロック220。たとえば、図3のインプリメンテーションに関して、デフォルトによりディスエーブルにされるプロセッサ機構をイネーブルにするためにたとえば、PCR70は対応するビット値0を有する、EOR80はその対応するビットが1の値にセットされるようにしてもよい。そして、ハードウェアがこうしたソフトウェアヒント値をオーバーライドするように選択することができる一実施形態では、次に、ハードウェアがソフトウェアヒントをオーバーライドするよう望むか否かを判断してもよい菱形230。そうである場合、適当なオーバーライドレジスタこの場合、EOR80をリセットしてもよくブロック240、制御はブロック250に移ってもよい。ハードウェアがソフトウェアヒントをオーバーライドしないように選択する場合、制御は菱形230から直接ブロック250に移ってもよい。そして、オーバーライドレジスタ及びプロセッサ構成レジスタの対応するビットを、ロジックインプリメンテーションに適用してもよいブロック250。たとえば、図3に関して、PCR70及びEOR80の対応するビットをORゲート92に与えてもよく、その出力を、DOR90の対応するビットと共にANDゲート94に与えてもよい。ANDゲート94の出力に基づき、プロセッサ構成設定を、ロジックインプリメンテーションの出力を使用してオーバーライドしてもよいブロック260。プロセッサ構成設定をオーバーライドする上記動作を、プログラムの最初のコンテキスト中に実行してもよい。たとえば、最初のコンテキストは、プログラムのGC段階等、ソフトウェアスレッドに対応してもよい。次に、コンテキストスイッチが発生するか否かを判断してもよい菱形270。たとえば、コンテキストスイッチは、プログラムのGC段階の最後に発生する場合がある。コンテキストスイッチが発生しない場合、制御は菱形270にループバックしてもよい。コンテキストスイッチ時、オーバーライドレジスタ及びプロセッサ構成レジスタの値を保存してもよいブロック280。たとえば、こうした値を、他のコンテキストレジスタの値と共に保存することにより、後のコンテキストスイッチ時にプロセッサ状態値を元のコンテキストに復元することを可能にしてもよい。コンテキストスイッチの後、オーバーライドレジスタ及びプロセッサ構成レジスタに、新たなコンテキストに対する値をロードしてもよいブロック290。たとえば、こうしたコンテキストが以前にアクティブであった場合、プロセッサ状態と共に他の場所に保存されていた値を復元してもよい。実施形態を、それら実施形態を実行するようにコンピュータシステムをプログラムする命令を有する記憶媒体に格納されてもよいコンピュータプログラムで実装してもよい。記憶媒体は、限定されないが、フロッピーディスク、光ディスク、コンパクトディスクリードオンリメモリCD-ROM、書換可能コンパクトディスクCD-RW及び光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリROM、ダイナミックRAM及びスタティックRAM等のランダムアクセスメモリRAM、消去可能プログラマブルリードオンリメモリEPROM、電気的消去可能プログラマブルリードオンリメモリEEPROM、フラッシュメモリ等の半導体デバイス、磁気若しくは光カード、又は電子命令を格納するために適した任意のタイプの媒体を含んでもよい。他の実施形態を、プログラム可能な制御装置によって実行されるソフトウェアモジュールとして実装してもよい。ここで図6を参照すると、本発明の一実施形態によるコンピュータシステムのブロック図が示されている。図6に示すように、コンピュータシステムはプロセッサ501を含む。一実施形態では、プロセッサ501を、フロントサイドバス520によってメモリハブ530に結合してもよく、メモリハブ530を、メモリバスを介して共有メインメモリ540に結合してもよい。プロセッサ501は、本発明の一実施形態によるさまざまなレジスタを含んでもよい。詳細には、図6に示すように、プロセッサ501は、プロセッサ構成レジスタPCR502、イネーブルオーバーライドレジスタEOR504及びディスエーブルオーバーライドレジスタDOR506を含んでもよい。これらのレジスタの各々の対応するビットをロジック507に結合してもよく、ロジック507を使用して、ビットを論理的に結合することにより所与のプロセッサ機構に対しプロセッサ構成設定をオーバーライドしてもよい。図6に示すように、ロジック507を、さまざまなプロセッサ資源、たとえばHWP508及び分岐予測ユニットBPU509に結合してもよい。ロジック507の出力に基づき、これらのプロセッサ機構をイネーブル又はディスエーブルしてもよい。上述したように、こうした機構選択はユーザ制御下であってもよい。また、メモリハブ530を、I/O拡張バス555及び周辺バス550に結合される入出力I/Oハブ535にハブリンクを介して結合してもよい。さまざまな実施形態では、I/O拡張バス555を、特にキーボード及びマウス等のさまざまなI/Oデバイスに結合してもよい。周辺バス550を、フラッシュメモリ、アドインカード等のメモリデバイスであってもよい周辺デバイス570等のさまざまなコンポーネントに結合してもよい。説明は、図6のシステムの特定のコンポーネントを参照するが、図示する実施形態の多数の変更が可能であり得る。本発明を、限られた数の実施形態に関して説明したが、当業者は、それらから多数の変更形態及び変形形態を理解するであろう。添付の特許請求の範囲は、この本発明の真の精神及び範囲にあるこうした変更形態及び変形形態をすべて包含することが意図されている。