(57)【要約】      （修正有）【課題】プロセッサ機構（features）のプロセッサ構成設定をオーバーライドするプロセッサベースシステムを提供する。【解決手段】プロセッサ機構に対応するオーバーライドレジスタのエントリを、そのプロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットし、そのエントリを使用してプロセッサ機構に対するプロセッサ構成設定をオーバーライドする方法を含む。エントリを、たとえばユーザレベルアプリケーションでセットしてもよい。【選択図】図５
2014112402.tif 000002
【特許請求の範囲】
【請求項１】
ユーザレベルソフトウェアを介してプロセッサの機構を制御することを含む方法。
【請求項２】
オーバーライドレジスタにおける前記機構に対応するオーバーライドビットをセットすることを介して前記機構をディスエーブルにすることをさらに含む、請求項１に記載の方法。
【請求項３】
プログラムの第１の段階の間に前記機構をディスエーブルにし、前記プログラムの第２の段階の間に前記機構をイネーブルにすることをさらに含む、請求項１に記載の方法。
【請求項４】
前記機構はハードウェアプリフェッチャを含み、前記第２の段階はガーベッジコレクションを含む、請求項３に記載の方法。
【請求項５】
プログラム実行中に前記機構を動的に制御することをさらに含む、請求項１に記載の方法。
【請求項６】
プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットすること、及び
前記オーバーライドレジスタの前記エントリを使用して前記プロセッサ機構に対する前記プロセッサ構成設定をオーバーライドすること
を含む、方法。
【請求項７】
前記エントリをユーザ制御下でセットすることをさらに含む、請求項６に記載の方法。
【請求項８】
プログラムの第１の部分の間に前記エントリをセットすること、及び該プログラムの第２の部分の間に該エントリをリセットすること、をさらに含む請求項６に記載の方法。
【請求項９】
コンテキストスイッチ時に前記オーバーライドレジスタのエントリを格納することをさらに含む、請求項６に記載の方法。
【請求項１０】
プログラムの動的プロファイリングに基づいて前記エントリをセットすることをさらに含む、請求項６に記載の方法。
【請求項１１】
前記オーバーライドレジスタの前記エントリをハードウェア制御下でオーバーライドすることをさらに含む、請求項６に記載の方法。
【請求項１２】
前記プロセッサ構成設定をオーバーライドすることは、前記オーバーライドレジスタの前記エントリとプロセッサ構成レジスタの対応するエントリとの間で論理演算を実行することを含む、請求項６に記載の方法。
【請求項１３】
少なくとも１つのプロセッサ機構に対するデフォルト設定をオーバーライドするための第１のオーバーライド情報を格納する第１のレジスタを具備する装置。
【請求項１４】
前記少なくとも１つのプロセッサ機構に対する前記デフォルト設定を格納するプロセッサ構成レジスタをさらに具備する、請求項１３に記載の装置。
【請求項１５】
前記少なくとも１つのプロセッサ機構に対する前記デフォルト設定をオーバーライドするために使用される第２のオーバーライド情報を格納する第２のレジスタをさらに具備する、請求項１４に記載の装置。
【請求項１６】
前記プロセッサ構成レジスタと前記第１のレジスタとの対応するエントリを結合する第１のロジックをさらに具備する、請求項１５に記載の装置。
【請求項１７】
前記第１のロジックの出力を前記第２のレジスタの対応するエントリと結合する第２のロジックをさらに具備する、請求項１６に記載の装置。
【請求項１８】
前記第１のレジスタ及び前記第２のレジスタは、ユーザ制御下で前記第１のオーバーライド情報及び前記第２のオーバーライド情報をそれぞれ格納する、請求項１５に記載の装置。
【請求項１９】
前記第１のレジスタは前記少なくとも１つのプロセッサ機構のイネーブル状態をオーバーライドし、前記第２のレジスタは前記少なくとも１つのプロセッサ機構のディスエーブル状態をオーバーライドする、請求項１５に記載の装置。
【請求項２０】
実行されると、システムに対し、
プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットし、且つ
前記オーバーライドレジスタの前記エントリを用いて前記プロセッサ機構に対する前記プロセッサ構成設定をオーバーライドする
ことを可能にする命令を含む機械アクセス可能記憶媒体を具備する物品。
【請求項２１】
実行されると、前記システムに対し、コンテキストスイッチ時に前記オーバーライドレジスタのエントリを格納することを可能にする命令をさらに含む、請求項２０に記載の物品。
【請求項２２】
実行されると、前記システムに対し、第１のプログラム段階において前記エントリをセットし、第２のプログラム段階において該エントリをリセットすることを可能にする命令をさらに含む、請求項２０に記載の物品。
【請求項２３】
実行されると、前記システムに対し、プログラムの動的プロファイリングに基づき前記エントリをセットすることを可能にする命令をさらに含む、請求項２０に記載の物品。
【請求項２４】
少なくとも１つのプロセッサ機構に対するデフォルト設定を格納するプロセッサ構成レジスタを有するプロセッサであって、該プロセッサ構成レジスタはアーキテクチャ的に可視である、プロセッサと、
該プロセッサに結合されたダイナミックランダムアクセスメモリと
を具備するシステム。
【請求項２５】
前記デフォルト設定をオーバーライドするために使用される第１のオーバーライド情報を格納する第１のレジスタをさらに具備する、請求項２４に記載のシステム。
【請求項２６】
前記ダイナミックランダムアクセスメモリは、実行されると、前記システムに対し、プログラムの第１の部分の間に前記第１のオーバーライド情報をセットし、該プログラムの第２の段階の間に該第１のオーバーライド情報をリセットすることを可能にする命令を含む、請求項２５に記載のシステム。
【請求項２７】
前記ダイナミックランダムアクセスメモリは、実行されると、前記システムに対し、コンテキストスイッチ時に前記第１のレジスタ及び前記プロセッサ構成レジスタのエントリを格納することを可能にする命令を含む、請求項２５に記載のシステム。
【請求項２８】
プロセッサ機構をイネーブル又はディスエーブルにするための情報を格納するアーキテクチャ的に可視であるレジスタを具備する装置。
【請求項２９】
前記アーキテクチャ的に可視であるレジスタは複数のビットを有し、各ビットは前記プロセッサ機構の対応する１つに関連する、請求項２８に記載の装置。
【請求項３０】
前記アーキテクチャ的に可視であるレジスタは、ユーザレベルソフトウェアによって制御可能である、請求項２８に記載の装置。
【請求項３１】
前記情報は、ユーザレベルソフトウェアによって動的に変更される、請求項２８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサベースシステムに関し、特にプロセッサ機構（features）のプロセッサ構成設定をオーバーライドすることに関する。
【背景技術】
【０００２】
システムの中央処理装置（ＣＰＵ）等のプロセッサは、通常、キャッシュ、バッファ、アレイ等の複数のプロセッサ機構を有する。プロセッサは、特に分岐予測ユニット、プリフェッチユニット等の論理演算ユニットであるさまざまなプロセッサ機構もさらに有する場合がある。プロセッサのパフォーマンスを向上させる一方法は、多段階パイプラインアーキテクチャを使用するというものであり、その場合、さまざまなパイプライン機構を使用して命令をより効率的に実行することができる。
【０００３】
プロセッサが命令を効率的に実行するためには、プロセッサ内のいくつかの機構を、プロセッサの製造中にデフォルトでイネーブル状態またはディスエーブル状態にする場合がある。通常、このデフォルト状態は、ユーザレベル制御下では変更することができない。すなわち、プロセッサ機構によっては、プロセッサが製造される時に、種々の対象市場に対して可能な種々のデフォルト構成で、デフォルトでイネーブルか又はディスエーブルにされる。言い換えれば、プロセッサで実行しているアプリケーションにかかわりなく、現在実施されているのは「全か無か（all or nothing）」である。このため、プロセッサ機構によっては、通常システムがエンドユーザに出荷される前に確定される所定のポリシに従ってイネーブルか又はディスエーブルにされる。
【０００４】
たとえば、プロセッサのハードウェアプリフェッチャは、通常、製造中にデフォルト状態に構成される。このデフォルト状態は、プロセッサを含むシステムが起動される時、たとえば基本入出力システム（ＢＩＯＳ）実行中にセットされる。このため、ハードウェアプリフェッチャの制御はエンドユーザには不可視であり、エンドユーザが再構成することはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このため、特定のプロセッサ機構に関してプロセッサのパフォーマンスを向上させる必要がある。
【発明を実施するための最良の形態】
【０００６】
さまざまな実施形態において、種々の態様のプロセッサのマイクロアーキテクチャ構成のユーザレベルのソフトウェア制御をもたらすことができる。こうしたユーザのレベル制御を多くの種々の方法で達成することができるが、いくつかの実施形態では、プロセッサ内に、プロセッサの構成に関する情報を格納するために１つ又は複数の追加のレジスタが存在してもよい。一実施形態では、追加のレジスタを、マイクロアーキテクチャ構成レジスタ又はＭＣＲと呼ぶことがある。プロセッサの状態の一部として、ＭＣＲは、コンテキストスイッチにわたって保存され復元される。いくつかの実施形態では、ＭＣＲの各ビットは、特定のマイクロアーキテクチャ機構のイネーブル状態又はディスエーブル状態に対応してもよい。追加のレジスタとして、ＭＣＲの読出し及び書込みは非常に高速であり、その速度はプロセッサ内の汎用（ＧＰ）レジスタの変更速度に匹敵する。
【０００７】
ここで図１を参照すると、本発明の一実施形態によるプロセッサの状態レジスタの部分的なセットのブロック図が示されている。図１の状態レジスタは、Ｉｎｔｅｌ（登録商標）アーキテクチャ（ＩＡ−３２又はｘ８６）仕様に従うプロセッサに存在してもよいが、本発明の範囲はそのように限定されない。すなわち、本明細書では主にＩＡ−３２プロセッサに関して論考するが、実施形態を、ＩＴＡＮＩＵＭ（登録商標）プロセッサ等、インテル・コーポレーション（Intel Corporation）から入手可能な他のプロセッサ、又は同様の若しくは異なる命令セットアーキテクチャ（ＩＳＡ）を有する他の製造業者のプロセッサにおいて実装してもよい。図１に示すように、状態レジスタは、プロセッサのコア内にあってもよく、それらを使用して、所与のコンテキストに対するプロセッサ状態に関する情報を格納してもよい。図１には特定のレジスタが存在するように示すが、他の実施形態では、他のプログラム実行レジスタに加えて追加のステータスレジスタ、制御レジスタ及び状態レジスタがあってもよい、ということが理解される。
【０００８】
図１に示すように、存在するレジスタは、複数のＧＰレジスタ１０を含んでもよい。こうしたレジスタを、論理演算及び算術演算のためのオペランド、アドレス計算のためのオペランド、メモリポインタ等、プロセッサ動作中にさまざまな情報を格納するために使用してもよい。さらに、ステータス及び制御（ＥＦＬＡＧＳ）レジスタ２０は、さまざまなステータスフラグ、制御フラグ及びシステムフラグを含んでもよい。ＥＦＬＡＧＳレジスタ２０を使用して、プログラムステータスに関して報告してもよい。命令ポインタ（ＥＩＰ）レジスタ３０を使用して、実行されるプログラムの次の命令に対するポインタを格納してもよい。
【０００９】
図１にさらに示すように、複数のセグメントレジスタ４０が存在してもよい。セグメントレジスタ４０は、メモリセグメントを識別するポインタとして作用するセグメントセレクタを格納してもよい。言い換えれば、こうしたセグメントレジスタ４０は、メモリのコード、データ及びスタックセグメントをアドレス指定する。
【００１０】
図１にさらに示すように、少なくとも１つのマイクロアーキテクチャ構成レジスタ（ＭＣＲ）５０が存在する。ＭＣＲ５０を使用して、種々のプロセッサ機構に関する情報を格納してもよい。たとえば、ＭＣＲ５０の各エントリ又はビットは、異なるプロセッサ機構に対応してもよい。ＭＣＲ５０は、さまざまなソフトウェアレベルによりＩＳＡを介してアクセスされることができるように、アーキテクチャ的に可視であってもよい。各ビットの出力を、対応する機構又は他のプロセッサハードウェアに結合して、その機構のイネーブル又はディスエーブルを制御してもよい。所与のビットのステータスに基づき、対応する機構をイネーブルに又はディスエーブルにしてもよい。
【００１１】
一例として、いくつかの機構を、プロセッサが製造される時にデフォルトによってイネーブル又はディスエーブルにしてもよい。しかしながら、動作中、機構によっては、それらのデフォルト設定がソフトウェア制御下で変更される（たとえばイネーブルからディスエーブルに）ようにすることができる。こうしたソフトウェア制御を、アプリケーションプログラム等、ユーザレベルソフトウェアにおいて行うことができる。このように、プロセッサ機構の非オペレーティングシステム（ＯＳ）又は非ＢＩＯＳ制御を行うことができる。
【００１２】
まとめて、図１に示すレジスタを、アーキテクチャ制御レジスタ（たとえば制御レジスタ０、制御レジスタ１、制御レジスタ２、制御レジスタ３等）等、図１に示さない他のレジスタと共に、コンテキストレジスタとみなしてもよい。それは、こうしたレジスタを、プロセッサで実行している所与のコンテキストに基づいて異なる値を用いてプログラムすることができるためである。マルチタスクＯＳが１つのプロセス（たとえばアプリケーション又はソフトウェアスレッド）の実行を停止し別のプロセスの実行を開始する時、コンテキストスイッチが発生する場合がある。コンテキストスイッチ時、これらのレジスタに格納されている値を、現在のコンテキストに対するプロセッサ状態を保存するために、他の場所に保存してもよい。そして、これらのレジスタに新たなコンテキストのステータスをロードすることによりそのプロセッサ状態を提供してもよい。別のコンテキストスイッチ、たとえば元のコンテキストに戻る時、保存されたプロセッサ状態をレジスタに復元してもよい。
【００１３】
いくつかのプロセッサ機構は、所与のプログラム段階中に適当である場合もあれば不適当である場合もある。したがって、動作時、ＭＣＲ５０のビットを、所与のアプリケーションに対する特定のプロセッサ機構の有用性、効率等に関する情報に基づいてイネーブルに又はディスエーブルにしてもよい。たとえば、所定のポリシを介して、動的プロファイリングを介して、又は特定のプログラム段階中に、特定の機構をイネーブルにするか又はディスエーブルにすることにより、プログラム全体のパフォーマンスが向上することが知られている。ソフトウェアは、プロセッサ構成設定をオーバーライドすることの妥当性を確定し、さまざまな方法でプロセッサ機構のイネーブル又はディスエーブルをもたらしてもよい。最初に、アプリケーションプログラム等のソフトウェアが書かれる時、プログラマは、所望の機構がプログラムの或る段階においてオン又はオフ（すなわちイネーブル又はディスエーブル）にされるようにコードを挿入してもよい。他の実施形態では、コンパイラが、或るプログラム段階に対して特定のプロセッサ機構が望ましいと判断し、コンパイル中、１つ又は複数のプロセッサ機構の所望のイネーブル又はディスエーブルをもたらすようにコードを挿入してもよい。さらに、管理された実行環境（managed runtime environment：マネージドランタイム環境）（ＭＲＴＥ）（たとえばＪＡＶＡ（商標）又は．ＮＥＴ環境）では、プロファイリングを実行してもよく、プロファイリングの結果が、或るプロセッサ機構は或るプログラム段階中は適当であるが、他の段階中は適当でないと示してもよい。
【００１４】
第１のプログラム段階に入ると、ＭＣＲ５０（たとえば）の適当なビットが、指定された機構をイネーブルにするか又はディスエーブルにするようにセットされる。このプログラム段階が終了すると、ＭＣＲビットはその元の値にリセットされる。ＭＣＲ５０の内容は、プロセッサ状態の一部であり、コンテキストスイッチにわたって保存されるため、所与のソフトウェアプロセス及びスレッドに特有である。
【００１５】
他の実施形態では、動的プロファイリング中、アプリケーションが一定のプログラムカウンタ（ＰＣ）値に達した時、所与の機構がイネーブルにされるか又はディスエーブルにされると判断されてもよい。さらに他の実施形態では、特定のプログラムタイプに対し所与の機構をイネーブル又はディスエーブルにしてもよい。たとえば、ストライド（striding）ハードウェアプリフェッチャ等のハードウェアプリフェッチャ（ＨＷＰ）を、科学計算アプリケーションに対してイネーブルにしてもよく、一方でデータベースアプリケーションに対してディスエーブルにしてもよい。これらの異なるタイプのアプリケーションの機構（mechanics）により、プリフェッチャはデータベース操作に対してそれほど有効でなくなるためである。
【００１６】
本発明の実施形態を種々のマイクロアーキテクチャ又は他のプロセッサ機構と共に使用してもよいが、以下の論考はＨＷＰに関する。ＭＲＴＥの場合、サーバタイプのアプリケーションに対し、ＨＷＰは、計算のガーベッジコレクション（ＧＣ）段階中に非常に大きいパフォーマンスブーストを提供する可能性があるが、パフォーマンス全体を損なう可能性がある。このため、パフォーマンスを向上させるために、ＨＷＰを、計算の一般的な段階の間はディスエーブルにするが、ガーベッジコレクション中はイネーブルにしてもよい。ＭＲＴＥの仮想マシン（ＶＭ）は、ガーベッジコレクション段階に入ると、ＭＣＲ５０にアクセスし、ＨＷＰ構成に対応するビットを「イネーブル」にセットする。ガーベッジコレクション段階が完了すると、このビットは「ディスエーブル」にセットされる。
【００１７】
他の実施形態では、プロセッサ機構のユーザレベル制御を提供するために複数のレジスタを使用してもよい。こうした方法では、マイクロアーキテクチャ機構等のプロセッサ機構の制御は、デフォルトによりすべてのソフトウェアスレッドに適用されるプロセッサ構成設定と、そのデフォルトをオーバーライドするための各ソフトウェアスレッドによるヒントとを共にサポートしてもよい。このため、第１のレジスタは、デフォルトプロセッサ構成設定に関する情報を格納するために存在してもよく、１つ又は複数のオーバーライドレジスタは、ソフトウェアがデフォルト設定をオーバーライドするのに使用するために存在してもよい。そして、オーバーライドレジスタの情報に基づき、或る機構が強制的にイネーブルになるか又はディスエーブルになるようにすることにより、プロセッサ構成設定を上書きしてもよい。
【００１８】
ここで図２を参照すると、本発明の別の実施形態による複数のレジスタのブロック図が示されている。図２に示すように、プロセッサ構成レジスタ（ＰＣＲ）７０が存在する。ＰＣＲ７０は、Ｎ個のビットを含んでもよく、各ビットは、マイクロアーキテクチャ機構等、異なるプロセッサ機構に対応する。ＰＣＲ７０は、すべてのプロセスにわたってデフォルトとして適用可能なプロセッサ構成設定に対応する値を格納してもよい。たとえば、１の値は、対応する機構がイネーブルであることを示してもよく、０の値は、対応する機構がディスエーブルであることを示してもよい。
【００１９】
しかしながら、ＰＣＲ７０の値を、所与のソフトウェアスレッドのユーザレベル制御に基づいて上書きしてもよい。特に、ＰＣＲ７０のデフォルト設定を、イネーブルオーバーライドレジスタ（ＥＯＲ）８０及びディスエーブルオーバーライドレジスタ（ＤＯＲ）９０の情報に基づいてオーバーライドしてもよい。ＥＯＲ８０及びＤＯＲ９０を、所与のソフトウェアスレッドの実行中にデフォルト設定をオーバーライドするように、且つプロセッサ機構がイネーブル又はディスエーブルされるようにプログラムしてもよい。たとえば、アプリケーションプログラムを開発する独立系ソフトウェアベンダ（independent software vendor）（ＩＳＶ）は、たとえば或るプログラム段階中にプログラムの動作及び効率を向上させるために特定のプロセッサ機構がイネーブルとなるようにするコードを含めてもよい。
【００２０】
異なる実施形態では、プロセッサ機構の所望のディスエーブル又はイネーブルをもたらすために、ＰＣＲ７０、ＥＯＲ８０及びＤＯＲ９０の対応するビットを論理的に結合してもよい。ユーザ制御下で機構選択をもたらすように、レジスタを種々の方法で論理的に結合してもよい。
【００２１】
ここで図３を参照すると、本発明の一実施形態によるオーバーライドレジスタを結合するために使用されるロジックインプリメンテーションが示されている。特に、図３は、ＰＣＲ７０、ＥＯＲ８０及びＤＯＲ９０の対応するビットを示す。図３にさらに示すように、対応するビットを結合するために論理ゲートを使用してもよい。詳細には、ＯＲゲート９２は、ＰＣＲ７０及びＥＯＲ８０から対応するビットを受け取ってもよい。そして、ＯＲゲート９２の出力をＡＮＤゲート９４の入力に結合してもよく、ＡＮＤゲート９４はまた、ＤＯＲ９０の対応するビットの反転出力を受け取るように結合される。ＡＮＤゲート９４の結果としての出力を使用して、対応するプロセッサ機構に対するプロセッサ構成設定を制御してもよい。たとえば、ＡＮＤゲート９４の出力を、プロセッサ機構の回路に提供することにより、その機構をそれに従ってイネーブル又はディスエーブルにしてもよい。
【００２２】
図３に示すロジックインプリメンテーションを使用して、３つのレジスタに対するビット設定の組合せにより、関連するプロセッサ機構をイネーブル又はディスエーブルにしてもよい。詳細には、通常の動作条件下では、ＥＯＲ８０及びＤＯＲ９０とは無関係に、ＰＣＲ７０のビット０の１の値（たとえば）は、対応する機構がイネーブルであることを示す。ＥＯＲ８０及びＤＯＲ９０のビット０の１の値は、ＰＣＲ７０の値が、それぞれイネーブル及びディスエーブルとしてオーバーライドされることを示す。すなわち、ＥＯＲ８０のビットに対するアクティブハイ値を使用して、対応する機構が強制的にオンにされ、ＤＯＲ９０のアクティブハイビットを使用して、対応する機構が強制的にオフにされる。
【００２３】
たとえば、デスクトップシステムにおいて、ＨＷＰに対応するＰＣＲビットを「工場において」（又はＢＩＯＳを介して相手先ブランド製造業者（original equipment manufacturer）（ＯＥＭ）により）１にセットしてもよく、それによりＨＷＰはデフォルトによってイネーブルになる。こうしたＨＷＰは、デスクトップシステムで実行しているアプリケーションに対して望ましい可能性があるため、アプリケーション（すなわちユーザレベル）コードはオーバーライドレジスタに関して何も行わず、ＥＯＲ８０及びＤＯＲ９０の対応するビットはデフォルトで０にされる。このため、機構に対するデフォルト挙動は、ＰＣＲビットによって与えられ、すなわちＨＷＰはデスクトップシステムに対してイネーブルになる。
【００２４】
しかしながら、サーバシステムの場合、ＨＷＰはデフォルトによりディスエーブルにされることが望まれる可能性がある。この場合、ＨＷＰに対応するＰＣＲビットは、「工場において」０にセットされる。このデフォルト設定に対し、ＥＯＲ８０及びＤＯＲ９０の対応するビットは０であり、このためＨＷＰはデフォルトによりディスエーブルにされる。プログラム又はプログラムのいくつかの部分の実行中、ＨＷＰをイネーブルにすることが望まれる場合がある。たとえば、Ｊａｖａ（商標）アプリケーションがサーバシステムで実行している場合がある。プロファイリングに基づき、ＨＷＰはＧＣ段階中はパフォーマンスを向上させる可能性があることが既知であり、そのため、ＧＣ中はＨＷＰをイネーブルにしてもよいが、アプリケーション中の他の場所ではディスエーブルにしてもよい。ＨＷＰはデフォルトによりオフであるため、ＧＣ中、ソフトウェアは、ＥＯＲ８０の対応するビットを１にセットする。ＤＯＲ９０の対応するビットは、そのデフォルト値０のままである。図３に示すロジックインプリメンテーションに基づき、これにより、所望通りに、ＡＮＤゲート９４から最終出力の１が得られ、ＨＷＰがイネーブルになる。
【００２５】
逆に、デスクトップシステムで同じＪａｖａ（商標）アプリケーションが実行しているとすると仮定する。ここで、ＰＣＲビットは工場において１にセットされる。アプリケーションは、非ＧＣ段階中はＨＷＰがイネーブルにされずより効率的に実行するため、ＧＣ段階の最後には、ソフトウェアは対応するＤＯＲビットを１にセットする。このＤＯＲ９０の値は、ディスエーブルオーバーライドを示し、ＨＷＰはディスエーブルになる。アプリケーションは、ＨＷＰがディスエーブルである状態で次のＧＣ段階の開始まで実行し、ＧＣ段階の開始の時点で、アプリケーションはＤＯＲビットを０にリセットし、ＨＷＰがイネーブルになる。ソフトウェアが適当なプログラム位置でビットをセットするため、コンテキストスイッチにおける保存／復元コストを低減することができる。
【００２６】
上述したように、ソフトウェアヒント設定は、ソフトウェアスレッド特有であり、コンテキストスイッチ時に保存し復元することができる。保存及び復元手続きが、論理０でない設定のみを保存するように最適化される設計では、オーバーライドレジスタを、有用である場合にのみセットしてもよい。オーバーライドビットがプロセッサ構成設定と同じ設定を提供する場合、すなわちオーバーライドが必要でない（それが無用である）場合、対応するオーバーライドビットはセットされない。こうした実施形態では、ＥＯＲ８０及びＤＯＲ９０の適当なビットに対する入力は、ソフトウェア指定ビットと、対応するプロセッサ構成設定ビットの反転値との論理積をとる出力であってもよい。ハードウェアが、ソフトウェア指定ビットに関連する機能をサポートしない場合、オーバーライドするものはなく、それらは無用である。したがって、それらのビットは読取り専用であってもよく、値は０である。
【００２７】
実施形態によっては、ハードウェアは、ソフトウェアヒントオーバーライドをオーバーライドしてもよい。すなわち、一定の情報に基づいて、ハードウェアは、ソフトウェアヒント値がプログラムの実行を向上させず、又は所与のハードウェアインプリメンテーションに不適当であると判断する場合があり、従ってハードウェアは、こうしたソフトウェアヒントをオーバーライドしてもよい。
【００２８】
その結果、ハードウェアは、ソフトウェアヒントオーバーライドによって示唆される設定が有効でないと経験的に判断することができる場合、オーバーライドビットをクリアすることができる。たとえば、ハードウェアは、まずソフトウェアヒントを受け入れ、それに従ってアプリケーションを実行してもよい。しかしながら、ハードウェアは、その実行が効率的でなく、イネーブル又はディスエーブルにされた機構がプロセッサのパフォーマンスを向上させないか、又はサーマルリミット等、別の種類の実行制約を侵害する可能性があると判断する場合がある。こうした場合、ハードウェアは、ソフトウェアヒントをオーバーライドするように選択してもよい。他の実施形態では、ハードウェアは、ソフトウェアヒントを、それがすでにヒント値に従ってプロセッサ機構を使用している場合、オーバーライドするように選択してもよい。又は、ハードウェアがプロセッサ機構をより適切に制御し且つそれをより適切に理解している状況において、ソフトウェアヒントをオーバーライドするように選択してもよい。ハードウェアオーバーライドは、ソフトウェアが、ハードウェアが大幅な向上を示す可能性がある投機的最適化を試行すべきであると示唆するが、それは試行するのにコストがかかる可能性があり、そのため潜在的利得の可能性を示す責任がソフトウェアにある場合に適当であり得る。
【００２９】
ここで図４を参照すると、本発明の別の実施形態によるオーバーライドレジスタのブロック図が示されている。図４に示すように、プロセッサ構成レジスタ（ＰＣＲ）７０、イネーブルオーバーライドレジスタ（ＥＯＲ）８０及びディスエーブルオーバーライドレジスタ（ＤＯＲ）９０が存在してもよい。図４の実施形態では、オーバーライドレジスタを、ソフトウェアオーバーライドレジスタのハードウェアオーバーライドを提供するように構成してもよい。特に、図４に示すように、ＥＯＲ８０及びＤＯＲ９０のビットは、リセット信号を受け取ってもよい。この信号を使用して、対応するビットに対するソフトウェア指定値をオーバーライドしてもよい。
【００３０】
たとえば、所与のプロセッサ機構に対し、ＰＣＲ７０の対応するビットを、０のデフォルト値にセットしてもよい。しかしながら、アプリケーションは、その設定をオーバーライドし、その機構がイネーブルになるように望む。したがって、ソフトウェアは、ＥＯＲ８０の対応するビットが１の値にセットされるようにする。ＤＯＲ９０の対応するビットは、デフォルトの０にセットされたままであってもよく、それにより、対応する機構は、図３に示すロジックインプリメンテーションを使用してイネーブルにされる。しかしながら、ハードウェアがソフトウェア指定値をオーバーライドするように選択する実施形態では、リセット信号をＥＯＲ８０の対応するビットに与えてもよく、それによりビット値はそのデフォルト値０に戻される。こうした方法で、ハードウェアはソフトウェアヒントをオーバーライドする。リセット信号がＥＯＲ８０及びＤＯＲ９０のビットに直接結合されるように示されているが、他の実施形態では、ロジックに結合してもよく、その出力を使用してソフトウェアヒント値をオーバーライドしてもよい。コンテキストスイッチ時、ソフトウェアヒントのハードウェアオーバーライドによって影響される、このようにレジスタに存在する値を保存してもよい。
【００３１】
このため、本発明の実施形態は、プロセッサ機構の動的構成を可能にする。さらに、本発明のさまざまな実施形態では、プロセッサ機構をイネーブル又はディスエーブルにするためにＯＳ特権は不要であり、それにより高速アクセスが可能になり、ＨＷＰ等のさまざまなプロセッサ機構に関するアプリケーションのパフォーマンスのきめ細かい最適化が容易になる。このように、すべてのプロセスに対してＯＳ及びＢＩＯＳに対するこうした管理を制限する代りに、プロセッサ構成に対するユーザレベルのヒント及び／又はオーバーライドを実装することができる。したがって、アプリケーションプログラムは、１つ又は複数のプロセッサ機構を動的に構成することができ、且つそのプログラムに対してのみそれを行うことができる。他のプロセッサ機構を、分岐予測ロジック等のソフトウェアオーバーライドヒントを使用して制御することができる。たとえば、分岐予測を、いくつかのプログラム段階中にイネーブルにし、他の段階中にディスエーブルにしてもよい。さらに他の機構は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）ページオープン／クローズポリシ、キャッシュ割当てポリシ、バスプロトコル、他のメモリプロトコル等の機構を含んでもよい。
【００３２】
ここで図５を参照すると、本発明の一実施形態による方法のフローチャートが示されている。図５に示すように、方法２００を、ソフトウェアが所望のプロセッサ機構をオーバーライドするために実行してもよい。ブロック２１０において、オーバーライドされるプロセッサ機構を選択してもよい。そして、１つ又は複数のオーバーライドレジスタを組み込んだインプリメンテーションでは、適当なオーバーライドレジスタをセットしてもよい（ブロック２２０）。たとえば、図３のインプリメンテーションに関して、デフォルトによりディスエーブルにされるプロセッサ機構をイネーブルにするために（たとえば、ＰＣＲ７０は対応するビット値０を有する）、ＥＯＲ８０はその対応するビットが１の値にセットされるようにしてもよい。
【００３３】
そして、ハードウェアがこうしたソフトウェアヒント値をオーバーライドするように選択することができる一実施形態では、次に、ハードウェアがソフトウェアヒントをオーバーライドするよう望むか否かを判断してもよい（菱形２３０）。そうである場合、適当なオーバーライドレジスタ（この場合、ＥＯＲ８０）をリセットしてもよく（ブロック２４０）、制御はブロック２５０に移ってもよい。ハードウェアがソフトウェアヒントをオーバーライドしないように選択する場合、制御は菱形２３０から直接ブロック２５０に移ってもよい。
【００３４】
そして、オーバーライドレジスタ及びプロセッサ構成レジスタの対応するビットを、ロジックインプリメンテーションに適用してもよい（ブロック２５０）。たとえば、図３に関して、ＰＣＲ７０及びＥＯＲ８０の対応するビットをＯＲゲート９２に与えてもよく、その出力を、ＤＯＲ９０の対応するビットと共にＡＮＤゲート９４に与えてもよい。ＡＮＤゲート９４の出力に基づき、プロセッサ構成設定を、ロジックインプリメンテーションの出力を使用してオーバーライドしてもよい（ブロック２６０）。
【００３５】
プロセッサ構成設定をオーバーライドする上記動作を、プログラムの最初のコンテキスト中に実行してもよい。たとえば、最初のコンテキストは、プログラムのＧＣ段階等、ソフトウェアスレッドに対応してもよい。次に、コンテキストスイッチが発生するか否かを判断してもよい（菱形２７０）。たとえば、コンテキストスイッチは、プログラムのＧＣ段階の最後に発生する場合がある。コンテキストスイッチが発生しない場合、制御は菱形２７０にループバックしてもよい。
【００３６】
コンテキストスイッチ時、オーバーライドレジスタ及びプロセッサ構成レジスタの値を保存してもよい（ブロック２８０）。たとえば、こうした値を、他のコンテキストレジスタの値と共に保存することにより、後のコンテキストスイッチ時にプロセッサ状態値を元のコンテキストに復元することを可能にしてもよい。
【００３７】
コンテキストスイッチの後、オーバーライドレジスタ及びプロセッサ構成レジスタに、新たなコンテキストに対する値をロードしてもよい（ブロック２９０）。たとえば、こうしたコンテキストが以前にアクティブであった場合、プロセッサ状態と共に他の場所に保存されていた値を復元してもよい。
【００３８】
実施形態を、それら実施形態を実行するようにコンピュータシステムをプログラムする命令を有する記憶媒体に格納されてもよいコンピュータプログラムで実装してもよい。記憶媒体は、限定されないが、フロッピーディスク、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、書換可能コンパクトディスク（ＣＤ−ＲＷ）及び光磁気ディスクを含む任意のタイプのディスク、リードオンリメモリ（ＲＯＭ）、ダイナミックＲＡＭ及びスタティックＲＡＭ等のランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ等の半導体デバイス、磁気若しくは光カード、又は電子命令を格納するために適した任意のタイプの媒体を含んでもよい。他の実施形態を、プログラム可能な制御装置によって実行されるソフトウェアモジュールとして実装してもよい。
【００３９】
ここで図６を参照すると、本発明の一実施形態によるコンピュータシステムのブロック図が示されている。図６に示すように、コンピュータシステムはプロセッサ５０１を含む。一実施形態では、プロセッサ５０１を、フロントサイドバス５２０によってメモリハブ５３０に結合してもよく、メモリハブ５３０を、メモリバスを介して共有メインメモリ５４０に結合してもよい。プロセッサ５０１は、本発明の一実施形態によるさまざまなレジスタを含んでもよい。詳細には、図６に示すように、プロセッサ５０１は、プロセッサ構成レジスタ（ＰＣＲ）５０２、イネーブルオーバーライドレジスタ（ＥＯＲ）５０４及びディスエーブルオーバーライドレジスタ（ＤＯＲ）５０６を含んでもよい。これらのレジスタの各々の対応するビットをロジック５０７に結合してもよく、ロジック５０７を使用して、ビットを論理的に結合することにより所与のプロセッサ機構に対しプロセッサ構成設定をオーバーライドしてもよい。図６に示すように、ロジック５０７を、さまざまなプロセッサ資源、たとえばＨＷＰ５０８及び分岐予測ユニット（ＢＰＵ）５０９に結合してもよい。ロジック５０７の出力に基づき、これらのプロセッサ機構をイネーブル又はディスエーブルしてもよい。上述したように、こうした機構選択はユーザ制御下であってもよい。
【００４０】
また、メモリハブ５３０を、Ｉ／Ｏ拡張バス５５５及び周辺バス５５０に結合される入出力（Ｉ／Ｏ）ハブ５３５に（ハブリンクを介して）結合してもよい。さまざまな実施形態では、Ｉ／Ｏ拡張バス５５５を、特にキーボード及びマウス等のさまざまなＩ／Ｏデバイスに結合してもよい。周辺バス５５０を、フラッシュメモリ、アドインカード等のメモリデバイスであってもよい周辺デバイス５７０等のさまざまなコンポーネントに結合してもよい。説明は、図６のシステムの特定のコンポーネントを参照するが、図示する実施形態の多数の変更が可能であり得る。
【００４１】
本発明を、限られた数の実施形態に関して説明したが、当業者は、それらから多数の変更形態及び変形形態を理解するであろう。添付の特許請求の範囲は、この本発明の真の精神及び範囲にあるこうした変更形態及び変形形態をすべて包含することが意図されている。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態によるプロセッサの状態レジスタの部分的なセットのブロック図である。
【図２】本発明の別の実施形態による複数のオーバーライドレジスタのブロック図である。
【図３】本発明の一実施形態によるオーバーライドレジスタを結合するために使用されるロジックインプリメンテーションを示す図である。
【図４】本発明の別の実施形態によるオーバーライドレジスタのブロック図である。
【図５】本発明の一実施形態による方法のフローチャートである。
【図６】本発明の一実施形態による典型的なコンピュータシステムのブロック図である。
【図１】
2014112402.tif 000003
【図２】
2014112402.tif 000004
【図３】
2014112402.tif 000005
【図４】
2014112402.tif 000006
【図５】
2014112402.tif 000007
【図６】
2014112402.tif 000008
【手続補正書】
【提出日】平成26年1月17日(2014.1.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサのデフォルトのマイクロアーキテクチャ構成を示す少なくとも１つのプロセッサ機構に対するデフォルト設定を格納するプロセッサ構成レジスタと、
前記少なくとも１つのプロセッサ機構のイネーブル状態をオーバーライドする第１のレジスタと、
前記少なくとも１つのプロセッサ機構のディセーブル状態をオーバーライドする第２のレジスタと、
前記プロセッサ構成レジスタ、前記第１のレジスタ、および前記第２のレジスタから対応するエントリを結合し、前記プロセッサ構成レジスタ、前記第１のレジスタ、及び前記第２のレジスタのそれぞれに対応するエントリの状態に基づいて前記少なくとも１つのプロセッサ機構をイネーブルまたはディセーブルするための制御信号を出力する制御ロジックと、
ソフトウェアヒントを提供して、前記第１のレジスタおよび前記第２のレジスタのうちの一方の第１のエントリを更新するユーザレベルソフトウェアと、
リセット信号を生成して、前記第１のレジスタおよび前記第２のレジスタのうちの一方の前記第１のエントリをリセットするハードウェアユニットと
を備える装置。
【請求項２】
前記制御ロジックは、第１のプログラム段階において前記少なくとも１つのプロセッサ機構をイネーブルし、第２のプログラム段階において前記少なくとも１つのプロセッサ機構をディセーブルするための前記制御信号を出力する請求項１に記載の装置。
【請求項３】
ユーザレベルソフトウェア下で、前記第１のレジスタは、第１のオーバーライド情報を格納し、前記第２のレジスタは、第２のオーバーライド情報を格納する請求項２に記載の装置。
【請求項４】
前記第１のレジスタは、プロセッサ機構に対する第１のオーバーライド情報をそれぞれ格納すべく、複数のエントリを含む請求項１から請求項３のいずれか１つに記載の装置。
【請求項５】
前記第２のレジスタは、プロセッサ機構に対する第２のオーバーライド情報をそれぞれ格納すべく、複数のエントリを含む請求項４に記載の装置。
【請求項６】
前記装置は、コンテキストスイッチ時に、前記プロセッサ構成レジスタ、前記第１のレジスタ、および前記第２のレジスタの状態を保存する、請求項５に記載の装置。
【請求項７】
前記第１のレジスタは、前記少なくとも１つのプロセッサ機構のディセーブルされたデフォルト設定をオーバーライドし、
前記第２のレジスタは、前記少なくとも１つのプロセッサ機構のイネーブルされたデフォルト設定をオーバーライドする請求項１から請求項６のいずれか１つに記載の装置。
【請求項８】
プロセッサと、
前記プロセッサに接続されたメモリと、を備え、
前記プロセッサは、
前記プロセッサのデフォルトのマイクロアーキテクチャ構成を示すプロセッサ機構に対応するデフォルト値に対応する複数の第１のビットのそれぞれを格納する第１のレジスタと、
少なくとも１つのビットがイネーブル状態に対応する前記デフォルト値をオーバーライドする複数の第２のビットを格納する第２のレジスタと、
少なくとも１つのビットがディセーブル状態に対応する前記デフォルト値をオーバーライドする複数の第３のビットを格納する第３のレジスタと、
前記複数の第１のビット、前記複数の第２のビット、および前記複数の第３のビットの対応するビットを受け取り、受け取ったそれぞれのビットから前記プロセッサ機構に対応するデフォルト値をオーバーライドする出力を生成するロジックと、
ソフトウェアヒントを提供して、前記第１のレジスタおよび前記第２のレジスタのうちの一方の第１のエントリを更新するユーザレベルソフトウェアと、
リセット信号を生成して、前記第１のレジスタおよび前記第２のレジスタのうちの一方の前記第１のエントリをリセットするハードウェアユニットと
を備えるシステム。
【請求項９】
前記複数の第２のビットは、ユーザレベルソフトウェアによって書き込まれる請求項８に記載のシステム。
【請求項１０】
ハードウェアプリフェッチャをさらに備え、
前記ロジックは、前記ユーザレベルソフトウェアによって書かれた値をオーバーライドするべく、前記ハードウェアプリフェッチャに対応する前記複数の第２のビットの１つの値をリセットする請求項９に記載のシステム。
【請求項１１】
前記ロジックは、第１のプログラム段階において前記デフォルト値をオーバーライドし、第２のプログラム段階において前記ディセーブル状態をディセーブルする請求項８から請求項１０のいずれか１つに記載のシステム。
【請求項１２】
前記プロセッサは、コンテキストスイッチ時に前記複数の第１のビット、前記複数の第２のビット、および前記複数の第３のビットを格納する状態格納部を含む請求項１１に記載のシステム。
【請求項１３】
前記複数の第１のビット、前記複数の第２のビット、および前記複数の第３のビットのうち対応するそれぞれのビットは、ハードウェアプリフェッチャに対応するプロセッサ機構に関連する請求項８から請求項１２のいずれか１つに記載のシステム。
【請求項１４】
対応するプロセッサ機構のためのプロセッサ構成の設定をイネーブル状態にオーバーライドするエントリを格納する第１のオーバーライドレジスタに第１のプロセッサ機構に対応するエントリをセットする工程と、
設定レジスタに格納された、対応するプロセッサ機構のためのプロセッサ構成の設定をディセーブル状態にオーバーライドするエントリを格納する第２のオーバーライドレジスタに前記第１のプロセッサ機構に対応するエントリをセットする工程と、
マネージドランタイム環境において実行される動的プロファイリングの結果に基づいて前記第１のオーバーライドレジスタおよび前記第２のオーバーライドレジスタに格納されたエントリを使用することで、前記第１のプロセッサ機構に対する前記プロセッサ構成の設定をオーバーライドする工程とを含み、
前記プロセッサ構成の設定をオーバーライドする工程は、
前記第１のオーバーライドレジスタのエントリと前記設定レジスタに格納された前記プロセッサ構成の設定に対応するエントリとの論理和である第１の値を得る工程と、
前記第１の値と前記第２のオーバーライドレジスタのエントリの反転出力との論理積である第２の値を得て、前記プロセッサ構成の設定をオーバーライドする工程とを含む方法。
【請求項１５】
前記プロセッサ構成の設定をオーバーライドする工程は、
第１のプログラム段階において、前記第１のプロセッサ機構に対する前記プロセッサ構成の設定をオーバーライドする工程と、
第２のプログラム段階において、前記第１のオーバーライドレジスタに格納された前記エントリの少なくともいくつか、および前記第２のオーバーライドレジスタに格納された前記エントリの少なくともいくつかを元の値にリセットする工程とを含む請求項１４に記載の方法。
【請求項１６】
前記プロセッサ構成の設定をオーバーライドする工程は、
第１のコンテキストから第２のコンテキストへのコンテキストスイッチを実行中に前記第１のオーバーライドレジスタおよび前記第２のオーバーライドレジスタに格納されたそれぞれの前記エントリを保存する工程と、
前記第２のコンテキストのプロセッサの状態に関連する値を前記第１のオーバーライドレジスタおよび前記第２のオーバーライドレジスタにロードする工程と、をさらに含む請求項１５に記載の方法。
【請求項１７】
前記第１のオーバーライドレジスタに前記第１のプロセッサ機構に対応するエントリをセットする工程は、プログラムの動的プロファイリングに基づいて前記第１のオーバーライドレジスタに前記エントリをセットする工程を含み、
前記第２のオーバーライドレジスタに前記第１のプロセッサ機構に対応するエントリをセットする工程は、前記プログラムの動的プロファイリングに基づいて前記第２のオーバーライドレジスタに前記エントリをセットする工程を含む、請求項１６に記載の方法。
【請求項１８】
前記第１のオーバーライドレジスタに前記第１のプロセッサ機構に対応するエントリをセットする工程は、ユーザレベルソフトウェアを使用して前記第１のオーバーライドレジスタにエントリをセットする工程を含み、
前記オーバーライドする工程は、前記ユーザレベルソフトウェアを使用して前記第１のオーバーライドレジスタに前記エントリをセットした後にハードウェア制御下において前記第１のオーバーライドレジスタに格納された前記エントリをオーバーライドする工程を含む請求項１４から請求項１７のいずれか１つに記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
本発明を、限られた数の実施形態に関して説明したが、当業者は、それらから多数の変更形態及び変形形態を理解するであろう。添付の特許請求の範囲は、この本発明の真の精神及び範囲にあるこうした変更形態及び変形形態をすべて包含することが意図されている。
［項目１］
ユーザレベルソフトウェアを介してプロセッサの機構を制御することを含む方法。
［項目２］
オーバーライドレジスタにおける上記機構に対応するオーバーライドビットをセットすることを介して上記機構をディスエーブルにすることをさらに含む、項目１に記載の方法。
［項目３］
プログラムの第１の段階の間に上記機構をディスエーブルにし、上記プログラムの第２の段階の間に上記機構をイネーブルにすることをさらに含む、項目１に記載の方法。
［項目４］
上記機構はハードウェアプリフェッチャを含み、上記第２の段階はガーベッジコレクションを含む、項目３に記載の方法。
［項目５］
プログラム実行中に上記機構を動的に制御することをさらに含む、項目１に記載の方法。
［項目６］
プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットすること、及び
上記オーバーライドレジスタの上記エントリを使用して上記プロセッサ機構に対する上記プロセッサ構成設定をオーバーライドすること
を含む、方法。
［項目７］
上記エントリをユーザ制御下でセットすることをさらに含む、項目６に記載の方法。
［項目８］
プログラムの第１の部分の間に上記エントリをセットすること、及び該プログラムの第２の部分の間に該エントリをリセットすること、をさらに含む項目６に記載の方法。
［項目９］
コンテキストスイッチ時に上記オーバーライドレジスタのエントリを格納することをさらに含む、項目６に記載の方法。
［項目１０］
プログラムの動的プロファイリングに基づいて上記エントリをセットすることをさらに含む、項目６に記載の方法。
［項目１１］
上記オーバーライドレジスタの上記エントリをハードウェア制御下でオーバーライドすることをさらに含む、項目６に記載の方法。
［項目１２］
上記プロセッサ構成設定をオーバーライドすることは、上記オーバーライドレジスタの上記エントリとプロセッサ構成レジスタの対応するエントリとの間で論理演算を実行することを含む、項目６に記載の方法。
［項目１３］
少なくとも１つのプロセッサ機構に対するデフォルト設定をオーバーライドするための第１のオーバーライド情報を格納する第１のレジスタを具備する装置。
［項目１４］
上記少なくとも１つのプロセッサ機構に対する上記デフォルト設定を格納するプロセッサ構成レジスタをさらに具備する、項目１３に記載の装置。
［項目１５］
上記少なくとも１つのプロセッサ機構に対する上記デフォルト設定をオーバーライドするために使用される第２のオーバーライド情報を格納する第２のレジスタをさらに具備する、項目１４に記載の装置。
［項目１６］
上記プロセッサ構成レジスタと上記第１のレジスタとの対応するエントリを結合する第１のロジックをさらに具備する、項目１５に記載の装置。
［項目１７］
上記第１のロジックの出力を上記第２のレジスタの対応するエントリと結合する第２のロジックをさらに具備する、項目１６に記載の装置。
［項目１８］
上記第１のレジスタ及び上記第２のレジスタは、ユーザ制御下で上記第１のオーバーライド情報及び上記第２のオーバーライド情報をそれぞれ格納する、項目１５に記載の装置。
［項目１９］
上記第１のレジスタは上記少なくとも１つのプロセッサ機構のイネーブル状態をオーバーライドし、上記第２のレジスタは上記少なくとも１つのプロセッサ機構のディスエーブル状態をオーバーライドする、項目１５に記載の装置。
［項目２０］
実行されると、システムに対し、
プロセッサ機構に対応するオーバーライドレジスタのエントリを、該プロセッサ機構に対するプロセッサ構成設定をオーバーライドするようにセットし、且つ
上記オーバーライドレジスタの上記エントリを用いて上記プロセッサ機構に対する上記プロセッサ構成設定をオーバーライドする
ことを可能にする命令を含む機械アクセス可能記憶媒体を具備する物品。
［項目２１］
実行されると、上記システムに対し、コンテキストスイッチ時に上記オーバーライドレジスタのエントリを格納することを可能にする命令をさらに含む、項目２０に記載の物品。
［項目２２］
実行されると、上記システムに対し、第１のプログラム段階において上記エントリをセットし、第２のプログラム段階において該エントリをリセットすることを可能にする命令をさらに含む、項目２０に記載の物品。
［項目２３］
実行されると、上記システムに対し、プログラムの動的プロファイリングに基づき上記エントリをセットすることを可能にする命令をさらに含む、項目２０に記載の物品。
［項目２４］
少なくとも１つのプロセッサ機構に対するデフォルト設定を格納するプロセッサ構成レジスタを有するプロセッサであって、該プロセッサ構成レジスタはアーキテクチャ的に可視である、プロセッサと、
該プロセッサに結合されたダイナミックランダムアクセスメモリと
を具備するシステム。
［項目２５］
上記デフォルト設定をオーバーライドするために使用される第１のオーバーライド情報を格納する第１のレジスタをさらに具備する、項目２４に記載のシステム。
［項目２６］
上記ダイナミックランダムアクセスメモリは、実行されると、上記システムに対し、プログラムの第１の部分の間に上記第１のオーバーライド情報をセットし、該プログラムの第２の段階の間に該第１のオーバーライド情報をリセットすることを可能にする命令を含む、項目２５に記載のシステム。
［項目２７］
上記ダイナミックランダムアクセスメモリは、実行されると、上記システムに対し、コンテキストスイッチ時に上記第１のレジスタ及び上記プロセッサ構成レジスタのエントリを格納することを可能にする命令を含む、項目２５に記載のシステム。
［項目２８］
プロセッサ機構をイネーブル又はディスエーブルにするための情報を格納するアーキテクチャ的に可視であるレジスタを具備する装置。
［項目２９］
上記アーキテクチャ的に可視であるレジスタは複数のビットを有し、各ビットは上記プロセッサ機構の対応する１つに関連する、項目２８に記載の装置。
［項目３０］
上記アーキテクチャ的に可視であるレジスタは、ユーザレベルソフトウェアによって制御可能である、項目２８に記載の装置。
［項目３１］
上記情報は、ユーザレベルソフトウェアによって動的に変更される、項目２８に記載の装置。
【外国語明細書】
2014112402000001.pdf