(57)【要約】【課題】  異なるレベルのプロセッサ・アーキテクチャ間における効率的なプログラム実行および移行を可能にするために、プロセッサがコンピューティング環境内で規格合致しているように見えるアーキテクチャ・レベルを選択する方法およびシステムを提供する。【解決手段】  本方法は、プロセッサがサポートするように見えるアーキテクチャ・レベルを制御する「プロセッサ互換レジスタ」（ＰＣＲ）を利用する。１つの実施例では、ＰＣＲは超特権（super-privileged）ソフトウェアにしかアクセスし得ない。プログラムがプロセッサ上で作動するとき、そのプログラムが或るアーキテクチャ・レベルのために設計された場合のそのアーキテクチャ・レベルに従ってプロセッサが動作するよう、超特権ソフトウェアは、プロセッサがサポートするように見えるべきアーキテクチャ・レベルを指定するビットをＰＣＲにセットする。【選択図】  図８
2008171428.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択する方法であって、
前記プロセッサにおけるプロセッサ互換レジスタ（ＰＣＲ）内に１つまたは複数のビットの値をセットするステップであって、論理的パーティションまたはプログラムのその後の実行中、前記プロセッサが規格合致するように見える場合のアーキテクチャ・レベルに前記値が対応する、前記ステップと、
前記ＰＣＲ内の１つまたは複数のビットの値に基づいて、前記プロセッサが特定のアーキテクチャ・レベルに規格合致するように見えるよう、前記プロセッサを自動的に構成するステップと、
を含む、方法。
【請求項２】
前記ＰＣＲを修正するための命令を受け取るステップと、
受け取られた命令に含まれた所望のアーキテクチャ・レベルに関する情報に従って、前記ＰＣＲ内の１つまたは複数のビットの値を動的に修正するステップと、
前記ＰＣＲ内の１つまたは複数のビットの値に基づいて、前記プロセッサが規格合致するように見える可能性のある複数のアーキテクチャ・レベルの中から前記特定のアーキテクチャ・レベルを選択するステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記プロセッサが超特権状態にある間だけ前記ＰＣＲが修正可能であるとき、前記動的に修正するステップは、前記超特権状態におけるプロセッサ・オペレーション中、前記命令が受け取られるときだけ前記１つまたは複数のビットの値を修正するステップを更に含み、
前記プロセッサが超特権状態および特権状態の一方にある間に前記ＰＣＲを修正可能であるとき、前記動的に修正するステップは、前記超特権状態および前記特権状態の一方におけるプロセッサ・オペレーション中、前記命令が受け取られるときだけ前記１つまたは複数のビットの値を修正するステップを更に含む、
請求項２記載の方法。
【請求項４】
前記ＰＣＲは前記プロセッサ内の複数のＰＣＲの１つであり、前記複数のＰＣＲは、前記プロセッサが超特権状態、特権状態、または問題状態にあるとき、プロセッサ・オペレーションに影響を及ぼし、
前記方法は、
前記命令が前記プロセッサにおいて受け取られるとき、超特権状態、特権状態、および問題状態の中から前記システムの動作状態を決定するステップと、
前記動的に修正するステップに含まれ、前記動作状態が前記超特権状態であるとき、前記特権状態および前記問題状態におけるシステム・オペレーションに影響を及ぼすすべてのＰＣＲの１つまたは複数のビットの値を修正するステップと、
前記動的に修正するステップに含まれ、前記動作状態が前記特権状態であるとき、前記問題状態におけるシステム・オペレーションに影響を及ぼすＰＣＲのみの１つまたは複数のビットの値を修正するステップと、
前記動作状態が前記問題状態であるとき、前記ＰＣＲの１つまたは複数のビットの修正を防止するステップと、
を更に含む、請求項２記載の方法。
【請求項５】
前記プロセッサが、前記ＰＣＲ内の１つまたは複数のビットの値によって識別されたアーキテクチャ・レベルに規格合致するように見えることによって、前記プロセッサにおいてプログラムを実行するステップを更に含み、
前記現在のアーキテクチャ・レベルは、前記プログラムに対する特定のアーキテクチャ・レベルに関する情報を、論理的パーティションまたはプログラムがディスパッチされるとき、検索する超特権ソフトウェアまたは特権ソフトウェアによって決定され、
前記プロセッサは、前記ＰＣＲの１つまたは複数のビットの異なる値によってそれぞれ選択される複数のレベルのプロセッサ・アーキテクチャをサポートすることができる、
請求項１に記載の方法。
【請求項６】
前記プロセッサの特定の特徴をディセーブルする前記ＰＣＲ内の特徴ビットを定義するステップと、
前記プロセッサの第１特徴をディセーブルするように特徴ビットがセットされるとき、前記プロセッサが規格合致するように見えるアーキテクチャ・レベルに無関係の前記第１特徴をディセーブルするステップと、
を更に含む、請求項１に記載の方法。
【請求項７】
少なくとも１つの実行ユニットと、
特定のプログラムの実行中、前記プロセッサが規格合致するように見える場合のアーキテクチャ・レベルを指定するプログラム互換レジスタ（ＰＣＲ）と、
前記プロセッサが規格合致するように見える現在のアーキテクチャ・レベルを選択するためのロジックと、
を含むプロセッサであって、前記ロジックは、
前記プロセッサ互換レジスタ（ＰＣＲ）内の１つまたは複数のビットの値をセットするためのロジックであって、論理的パーティションまたはプログラムのその後の実行中、前記プロセッサが規格合致するように見える場合のアーキテクチャ・レベルに前記値が対応する、前記ロジックと、
前記ＰＣＲ内の１つまたは複数のビットの値に基づいて、前記プロセッサが特定のアーキテクチャ・レベルに規格合致するように見えるよう、前記プロセッサを自動的に構成するためのロジックと、
を含む、プロセッサ。
【請求項８】
前記ＰＣＲを修正するための命令を受け取るためのロジックと、
受け取られた命令に含まれた所望のアーキテクチャ・レベルに関する情報に従って、前記ＰＣＲ内の１つまたは複数のビットの値を動的に修正するためのロジックと、
前記ＰＣＲ内の１つまたは複数のビットの値に基づいて、前記プロセッサが規格合致するように見える可能性のある複数のアーキテクチャ・レベルの中から前記特定のアーキテクチャ・レベルを選択するためのロジックと、
を更に含む、請求項７に記載のプロセッサ。
【請求項９】
前記プロセッサが超特権状態にある間だけ前記ＰＣＲが修正可能であるとき、前記動的に修正するためのロジックは、前記超特権状態におけるシステム・オペレーション中、前記命令が受け取られるときだけ前記１つまたは複数のビットの値を修正するためのロジックを更に含み、
前記プロセッサが超特権状態および特権状態の一方にある間に前記ＰＣＲが修正可能であるとき、前記動的に修正するためのロジックは、前記超特権状態および前記特権状態の一方におけるプロセッサ・オペレーション中、前記命令が受け取られるときだけ前記１つまたは複数のビットの値を修正するためのロジックを更に含む、
請求項８記載のプロセッサ。
【請求項１０】
前記ＰＣＲは前記プロセッサ内の複数のＰＣＲの１つであり、前記複数のＰＣＲは、前記プロセッサが超特権状態、特権状態、または問題状態にあるとき、プロセッサ・オペレーションに影響を及ぼし、
前記プロセッサは、
前記命令が前記プロセッサにおいて受け取られるとき、超特権状態、特権状態、および問題状態の中から前記システムの動作状態を決定するためのロジックと、
前記動的に修正するためのロジックに含まれ、前記動作状態が前記超特権状態であるとき、前記特権状態および前記問題状態におけるシステム・オペレーションに影響を及ぼすすべてのＰＣＲの１つまたは複数のビットの値を修正するためのロジックと、
前記動的に修正するためのロジックに含まれ、前記動作状態が前記特権状態であるとき、前記問題状態におけるシステム・オペレーションに影響を及ぼすＰＣＲのみの１つまたは複数のビットの値を修正するためのロジックと、
前記動作状態が前記問題状態であるとき、前記ＰＣＲの１つまたは複数のビットの修正を防止するためのロジックと、
を更に含む、請求項８記載のプロセッサ。
【請求項１１】
前記プロセッサが、前記ＰＣＲ内の１つまたは複数のビットの値によって識別されたアーキテクチャ・レベルに規格合致するように見えることによって、前記プロセッサにおいてプログラムを実行するためのロジックを更に含み、
前記現在のアーキテクチャ・レベルは、前記プログラムに対する特定のアーキテクチャ・レベルに関する情報を、前記論理的パーティションまたはプログラムがディスパッチされるとき、検索する超特権ソフトウェアまたは特権ソフトウェアによって決定され、
前記プロセッサは、前記ＰＣＲの１つまたは複数のビットの異なる値によってそれぞれ選択される複数のレベルのプロセッサ・アーキテクチャをサポートすることができる、
請求項７に記載のプロセッサ。
【請求項１２】
前記ＰＣＲが１つまたは複数の特徴ビットを更に含み、
前記プロセッサの特定の特徴をディセーブルする特徴ビットを前記ＰＣＲ内に定義するためのロジックと、
前記プロセッサの第１特徴をディセーブルするように特徴ビットがセットされるとき、前記プロセッサが規格合致するように見えるアーキテクチャ・レベルに無関係の前記第１特徴をディセーブルするためのロジックと、
を更に含む、請求項７に記載のプロセッサ。
【請求項１３】
超特権動作状態中に超特権を実行するためのコードを有するメモリと、
相互接続バスを介して前記メモリに接続されたプロセッサと、
を含み、
前記プロセッサは、
少なくとも１つの実行ユニットと、
特定のプログラムの実行中、前記プロセッサが規格合致するように見える場合のアーキテクチャ・レベルを指定するプロセッサ互換レジスタ(ＰＣＲ)と、
前記プロセッサが規格合致するように見える現在のアーキテクチャ・レベルを選択するためのロジックと、
を有し、
前記選択するためのロジックは、
前記プロセッサ互換レジスタ（ＰＣＲ）内の１つまたは複数のビットの値をセットするためのロジックと、
前記ＰＣＲ内の１つまたは複数のビットの値に基づいて、前記プロセッサが特定のアーキテクチャ・レベルに規格合致するように見えるよう、前記プロセッサを自動的に構成するためのロジックと、
を含む、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはプロセッサに関し、特にソフトウェア互換性のあるようにプロセッサ・アーキテクチャを構成する方法に関するものである。
【背景技術】
【０００２】
今日のコンピューティング装置は多くのタスクを遂行することができる。従来のコンピューティング装置は様々なタイプのソフトウェア製品を実行することができ、旧式の中央処理装置（ＣＰＵ）のような古いハードウェア上で作動するように設計されたソフトウェアを実行する機能を有する。コンピューティング装置は、そのコンピューティング装置上で作動しているオペレーティング・システム（Ｏ／Ｓ）によって管理され、そのオペレーティング・システムを介してソフトウェア製品を実行する。Ｏ／Ｓは、システムのハードウェアおよびソフトウェア・リソースを管理し、アプリケーションがコンピューティング装置のハードウェアと相互作用するための安定した一貫性のある方法を提供する。
【０００３】
一般的には、或るプロセッサ・アーキテクチャの所与のレベルに対して書かれたプログラムが、多くの命令または他の機器を定義する、そのアーキテクチャのその後のレベルに規格合致したプロセッサ上で実行されるとき、その新しい命令または機器の迂闊な使用によりエラーが生じることがある。例えば、アーキテクチャＡに規格合致するプロセッサＡのために書かれたプログラムは、命令における予備フィールドを、そのアーキテクチャによって要求されるような「０」にセットしていないというような潜在的「バグ」を含んでいる。そのプログラムがプロセッサＡ上で実行されるとき、プロセッサはこれらのフィールドを無視するので、エラーは生じないかもしれない。その後、アーキテクチャＢが開発され、そのアーキテクチャがこれらの従前の予備フィールドを定義する場合、プロセッサＢ（アーキテクチャＢに規格合致している）は最早これらのフィールドを無視せず、そのプログラムがプロセッサＢ上で実行されとき、重大なエラーが生じることがある。
【０００４】
残念ながら、現在の技術状態では、この問題を解決するための唯一の方法は、いずれの隠れたエラーを発見するためにもそのアーキテクチャの新しいレベルに規格合致しているプロセッサにおいてそのプログラムをテストすることである。従って、エラーは修正され、プログラムはすべてのユーザに再分配され得る。ソース・コードのサポート不足または使い勝手の悪さによりプログラムが修正され得ない場合、これは、大抵、法外に高価となり、時には不可能である。 
【０００５】
更に、新しいプログラムをプロセッサＢのために書こうとする場合、問題が生じることがある。例えば、そのプログラムは、プロセッサＢの新しい機器を利用するであろうが、その新しい機器を持たないプロセッサＡ上でもそのプログラムが正しく実行されるということを保証する必要がある。現時点では、そのプログラムをプロセッサＡ上で不適切に機能させる如何なる潜在的なバグも存在しないということを保証する唯一の方法は、プロセッサＡ上でそのプログラムをテストすることである。この方法は、プロセッサＡが入手可能であることを必要とし、そのプログラムがアーキテクチャの２つのレベルにだけ規格合致するプロセッサ上で作動するように設計されている場合にはその方法は問題を生じないかもしれない。しかし、そのプログラムがアーキテクチャの幾つもの従前のレベルで作動するように設計されている場合、アーキテクチャの古い各レベルに規格合致したプロセッサのサンプルを入手するための要件は極めて煩わしいことである。
【０００６】
別の問題は、各々が異なるレベルのアーキテクチャに規格合致し得る一組のプロセッサ間で、実行プログラムが移行されるという状況において生じる。このコンテキストにおける移行は、プログラムがまだ作動している間にそのプログラムの実行状態が１つのプロセッサから別のプロセッサに移されることを意味する。プログラム移行の形体は、単一コンピュータのリソースが論理パーティションの独立したセットによって共有されるという状況における論理パーティション移行である。各パーティションは、所与のアーキテクチャ・レベルのアーキテクチャ機能において作動されるように構成される。実行論理パーティションがソース・コンピュータ・システムからターゲット・コンピュータ・システムに移行されるパーティション移行中、ソース・コンピュータ・システムおよびターゲット・コンピュータ・システムは、種々のレベルのプロセッサ・アーキテクチャに規格合致したプロセッサを有してもよい。プログラムは特定のレベルのアーキテクチャのために設計され得るので、移行が生じ得るプロセッサのセットは、プログラムが或るアーキテクチャ・レベルのために設計された場合のそのアーキテクチャ・レベルに規格合致するプロセッサに限定される。この制限は、移行の可能性を限定し、それに対応してプログラム移行の多様性を限定することがある。
【０００７】
上記の問題を考えると、プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための適切な方法が今まで当業者に想起し得なかったということは明らかである。プロセッサ・アーキテクチャの高度な（または新しい、または種々の）レベルで実行可能であることはプログラムにとって重要であるので、或るレベルのアーキテクチャに規格合致したプロセッサにおいてプログラムが正しく実行する場合、そのプログラムは、それが前述のような潜在的バグを含んでいても、修正されることなく、その後のすべてのレベルのアーキテクチャに規格合致したプロセッサ上で作動するということを保証するためのメカニズムが必要である。更に、プログラムが旧式のプロセッサ上で正しく実行されることを、その旧式のプロセッサがそのプログラムのテストのために物理的に入手し得ることを必要とせずに、保証するメカニズムが必要である。更に、プロセッサ・セットにサポートされるアーキテクチャ・レベルに関係なく、すべてのプロセッサ間でプログラムが移行されることを可能にするスキームが必要である。そのようなスキームは、更に、種々のレベルのアーキテクチャに規格合致する２つのコンピュータ・システム間におけるプログラムの活発な移行を可能にするであろう。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、異なるレベルのプロセッサ・アーキテクチャ間における効率的なプログラム実行および移行を可能にするために、プロセッサがコンピューティング環境内で規格合致するように見えるアーキテクチャ・レベルを選択する方法およびシステムを提供する。
【課題を解決するための手段】
【０００９】
簡単に言えば、本方法は、プロセッサがサポートするように見えるアーキテクチャ・レベルを制御する「プロセッサ互換レジスタ」（ＰＣＲ）を利用する。１つの実施例では、ＰＣＲは超特権（super-privileged）ソフトウェアにしかアクセスし得ない。プログラムがプロセッサ上で作動するとき、そのプログラムが或るアーキテクチャ・レベルのために設計された場合のそのアーキテクチャ・レベルに従ってプロセッサが動作するよう、超特権ソフトウェアは、プロセッサがサポートするように見えるべきアーキテクチャ・レベルを指定するビットをＰＣＲにセットする。
【００１０】
プロセッサに関連したプロセッサ互換レジスタ（ＰＣＲ）は、コンピュータ・システムの設計者によって定義される。プログラムまたは論理パーティションの実行の開始時に、プロセッサはハイパーバイザのような超特権ソフトウェア・プログラムから命令を受け取る。命令は、プログラムまたは論理パーティションの実行のために望ましいアーキテクチャのレベルに対応した適切なレベル・ビットをセットすることによってＰＣＲを修正する。本方法は、更に、ＰＣＲの内容に基づいて、指定のアーキテクチャ・レベルに規格合致するプロセッサが要求するように動作させるべくプロセッサを構成するステップを含む。
【００１１】
ＰＣＲは、プロセッサが規格合致しているように見えるべきアーキテクチャのレベルを識別する１つまたは複数のビットを含む。ＰＣＲのビットは、プロセッサが超特権状態にあるときだけ実行することができる命令によってセットされる。プロセッサは、更に、ＰＣＲを修正する命令をプロセッサにおいて受け取るためのロジック、命令に基づいてＰＣＲの修正を実施するためのロジック、ＰＣＲの内容に基づいてプロセッサのアーキテクチャ・レベルを選択するためのロジックを含む。
【００１２】
本発明の上記の並びに更なる目的、特徴および利点が以下の詳細な説明において明らかになるであろう。 
【発明を実施するための最良の形態】
【００１３】
本発明は、プロセッサがコンピューティング環境内で規格合致するように見えるアーキテクチャ・レベルを選択するための方法およびその方法を具現化するための装置を提供する。その方法は「プロセッサ互換レジスタ」（ＰＣＲ）を利用する。ＰＣＲは、プロセッサが支援するように見えるアーキテクチャ・レベルを制御するｎビット・レジスタである。１つの実施例では、ＰＣＲは超特権ソフトウェアのみにしかアクセスし得ない。コンピューティング・アーキテクチャでは、超特権ソフトウェアの一例が「ハイパーバイザ」と呼ばれる。ハイパーバイザおよび超特権ソフトウェアという用語が、本明細書では互換的に利用されるであろう。ハイパーバイザは、プログラムがプロセッサ上で作動するとき、そのプログラムがあたかも指定されたアーキテクチャ・レベルに規格合致するプロセッサ上で実行されているかのようにそのプログラムが動作するよう、プロセッサがサポートするように見えるべきアーキテクチャ・レベルを指定するビットをＰＣＲにセットする。それによって、ＰＣＲは、アーキテクチャの或るレベル用に設計されたプログラムが別のレベルのアーキテクチャに規格合致したプロセッサ上で作動することを可能にすることによって、プログラムの耐用年数および適用可能性を拡張する。
【００１４】
プロセッサ命令、特徴、機能、特殊目的レジスタ（ＳＰＲ）のようなレジスタ、および他の関連機器が問題の状態において（即ち、ユーザ・レベルのアプリケーション／プログラムの実行中に）利用可能であるかどうかを、ＰＣＲ内の１つまたは複数の定義された「レベル」・ビットが制御する。ＰＣＲビットは、更に、命令フィールドの値がどのように解釈されるかを決定すること、および他のプロセッサの動作を定義することも可能である。各レベル・ビットは、プロセッサ・アーキテクチャの対応するレベルにおける新しい機器の利用可能度を制御する。
【００１５】
更に、ＰＣＲは、いくつかのアーキテクチャ・レベルに規格合致するプロセッサが利用可能でないという状況において、プログラマがプロセッサ・アーキテクチャの幾つものレベルにおけるコードをテストすることを可能にする。この利点は、複数のプロセッサ・レベルを入手する余裕がない小企業にとって、および／または、比較的多数のプロセッサ・レベルがあるという状況では、重要である。プロセッサ上で実行されるプログラムは、特定のレガシ・プロセッサ・アーキテクチャ・レベルで実行するために設計されたレガシ・プログラムであってもよい。更に、実行プログラムが書かれたレベルとは異なるアーキテクチャ・レベル／その後のレベルに規格合致し得る一組のプロセッサ間でその実行プログラムが移行されるという状況において、ＰＣＲは、プログラムが移行するすべてのプロセッサがアーキテクチャの同じレベル（即ち、プログラムが書かれた特定のアーキテクチャ・レベル）に規格合致するように見えるよう、シームレス移行ツールを提供するために利用される。ＰＣＲがないと、移行が生じ得るプロセッサのセットは、アーキテクチャのこの同じレベルに実際に規格合致するプロセッサに限定されるであろう。そのような限定は移行の可能性を厳しく限定し、それに対応して、プログラム移行の多様性を限定するであろう。
【００１６】
発明の実施例に関する以下の詳細な説明では、当業者が本発明を実施することを可能にするために、本発明を実施し得る特定の実施例が十分に詳細に説明される。また、他の実施例を利用し得るということ、並びに、本発明の趣旨または範囲から逸脱することなく、論理的変更、アーキテクチャ上の変更、プログラム上の変更、機械的変更、電気的変更、および他の変更を行い得ることは当然である。従って、以下の詳細な説明は限定を意味するものと解されるべきではなく、本発明の範囲は「特許請求の範囲」の記載によってのみ定義される。
【００１７】
更に、特定のパラメータ名の使用は単なる例であって、発明における如何なる限定の暗示も意味するものではないということも当然である。従って、本発明は、上記のパラメータを記述するために利用される種々の表記法／用語を用いて限定なしに具現化することが可能である。
【００１８】
図面を参照すると、図１は、本発明の実施態様が特に適用可能なコンピューティング装置１００を一般的に示す機能的ブロック図である。コンピューティング装置１００は、サーバ、パーソナル・コンピュータ、ラップトップ・コンピュータ等のような任意のコンピューティング装置であってもよい。本明細書では、コンピューティング装置に関連して説明されるが、本発明を具現化したものが、アーキテクチャの変更を伴うプロセッサを使ってプログラム・コードを実行する他の装置において同等の応用性を持ち得るということも明らかであろう。
【００１９】
この例では、コンピューティング装置１００は、システム相互接続バス１０１を介して相互接続されたプロセッサ・ユニット１０５、メモリ１１０、入出力コントローラ（Ｉ／Ｏ  ＣＴＬ）１２０、および記憶媒体１２５を含む。コンピューティング装置１００は、本発明の説明には関係のない更なるコンポーネントを含み得る。プロセッサ・ユニット１０５は、マイクロプロセッサ、或いはデジタル信号プロセサ（ＤＳＰ）のような特殊目的のプロセッサを含むことが望ましいが、それとは別に、プロセッサ、コントローラ、マイクロコントローラ、または状態マシンという任意の一般的な形式のものであってもよい。プロセッサ・ユニット１０５は、本発明によって提供され、後述するように利用されるＰＣＲ１３０も含む。
【００２０】
メモリ１１０はプロセッサ・ユニット１０５によって実行される複数レベルのソフトウェア・プログラム／コードを含む。この実施例では、メモリ１１０に格納されたソフトウェア・プログラムは、１つまたは複数のユーザ・レベル問題コード（アプリケーションＡｐｐｓ１１６および１１８）、特権レベル・コード（オペレーティング・システム（ＯＳ１１４））、および超特権レベル・コード（ハイパーバイザ１１２）を含む。本明細書において開示される１つの実施例では、ハイパーバイザ１１２は、ディスパッチされる／実行される論理パーティションまたはプログラムに関するアーキテクチャ情報を検索し、図３〜図９に関連して後述するように、本発明の機能を具現化するためにＰＣＲ１３０内にビットをセットする。
【００２１】
記憶媒体１２５は、いくつかの例を挙げると、ＲＯＭメモリ、フラッシュ・メモリ、または磁気ディスク・ドライブのような任意の不揮発性メモリとして具現化することが可能である。記憶媒体１２５は、キャッシュ（ＲＡＭ）メモリ等を備えた磁気ディスク・ドライブのような、それらの或いは他の技術との任意の結合体として具現化することも可能である。１つの実施例では、記憶媒体１２５は、コンピューティング装置１００がパワー・オフされている期間中、即ち、電力供給のない期間中、データ（特権コードおよび超特権コードのためのデータ）を格納しておくために使用される。
【００２２】
図２は、本発明の実施態様を提供するプロセッサ・ユニット１０５の内部コンポーネントを概略的に示す機能ブロック図である。プロセッサ・ユニット１０５は単一チップ上に形成され、実行ユニット１５５（ロード／ストア・ユニット、および／または、浮動小数点ユニット或いは固定小数点のユニットのようなユニット）および命令順序付けユニット（ＩＳＵ）１６０が設けられたチップ（die）を含み得る。命令順序付けユニット１６０は命令を実行ユニット１５５に適切にディスパッチする。
【００２３】
プロセッサ１０５は、レジスタＡ（Reg A）１３１、レジスタＢ１３２、およびプロセッサ互換レジスタ（ＰＣＲ）１３０として図示された一連のレジスタ１６５も含む。１つの実施例では、プロセッサ・チップは半導体集積回路として具現化される。別の実施例では、プロセッサ・チップは、単一のチップ上に装着された複数のプロセッサ・コアを含み、各プロセッサ・コアは、その上に装着されたＰＣＲ１３０を含む。
【００２４】
プロセッサ１０５の実行中、ＰＣＲ１３０のような或るレジスタは超特権ソフトウェア（ハイパーバイザ１１２）によってのみアクセスされ得るし、一方、他のレジスタ、例えば、レジスタＢ１３２は特権ソフトウェアおよび超特権ソフトウェアの両方によってアクセスされ得る。他のレジスタ、例えば、レジスタＡ１３１は、ユーザ・レベル・ソフトウェア、特権ソフトウェア、および超特権ソフトウェアによってアクセスされ得る。１つの例では、ＰＣＲ１３０はｎビット・レジスタであり、この場合、ｎは１よりも大きい整数である。
【００２５】
図１および図２が、コンピューティング・システム１００の代表的な主要コンポーネントを高レベルで示すことを意図されているということ、および個々のコンポーネントが図示のものよりも遥かに複雑であるということは当然である。更に、図１および図２には示されたもの以外のコンポーネントが存在し得るということ、およびそのようなコンポーネントの数、タイプ、および構成が変わり得るということは明らかであろう。例えば、実施例のシステムは単一のプロセッサを有するものとして示されるが、本発明の特徴はマルチプロセッサ・コンピュータ・システムにおいて具現化することも可能である。更に、１つの実施例では、各プロセッサは、１つまたは複数のハイパーバイザの管理の下にデータ処理システム上で同時に作動する複数のアーキテクチャ・レベルに適応するように独立して修正可能なＰＣＲを含んでもよい。従って、図１および図２は、単に例として示され、本発明における何らかの限定を暗示することを意図するものではない。
【００２６】
図３〜図５は、プロセッサ互換レジスタＰＣＲ（即ち、ＰＣＲ２００、２０１および２０２）の３つの代替実施態様を示す機能的ブロック図である。３つの代替実施態様の機能がＰＣＲ２００（図３）に対する比喩的参照によって説明され、その説明は、提供された各ＰＣＲに当てはまるものと思われる。１つの実施例では、ＰＣＲ２００は、超特権ソフトウェア（ハイパーバイザ）にしかアクセスし得ず、問題状態プログラム（例えば、ユーザ・アプリケーション）および特権コード（例えば、オペレーティング・システム）はＰＣＲ２００に対して読取りまたは書込みを行うことができない。しかし、ＰＣＲ２００がオペレーティング・システムに対してアクセス可能にされる他の実施例も提供される。ＰＣＲ２００は、そのＰＣＲのビット６１、６２、および６３である３つの下位ビット２２０、２３０、および２４０を含む６４ビット・レジスタである。更に、ＰＣＲ２００は、６１個の予備ビット２１０（ビット０〜６０）のブロックを含む。
【００２７】
特殊目的レジスタ（ＳＰＲ）のような或る機器および他の関連機器がその状態において利用可能であるかどうかを制御することによって、プロセッサが、問題状態にある間、サポートするように見えるべきアーキテクチャ・レベルを定義するために、下位の３ビット２２０、２３０、および２４０が使用される。ＰＣＲ２００内の残りのビットは、そのアーキテクチャの将来のレベルにおいて使用するために予約される。代替の実施態様では、ＰＣＲ２０１（図４）の上位ビットまたはＰＣＲ２０２（図５）の中位ビットがアーキテクチャ・レベルを定義するために使用され、残りのビットは、再び、将来のレベルにおいて使用するために予約される。
【００２８】
ＰＣＲ２００内の各定義されたビット（２２０、２３０、２４０）は、プロセッサが問題状態にある間だけそのプロセッサがサポートするように見えるアーキテクチャ・レベルを制御するので、プロセッサが問題状態にないときには、それらのビットは機器にまったく影響を及ぼさない。ＰＣＲによって利用不可能にされる機器は、プロセッサが問題状態にあるとき、下記のように扱われる。即ち、
（ａ）命令が無効な命令として扱われる、
（ｂ）ＳＰＲが、あたかもそれが具現化に関して定義されてないかのように扱われる、
（ｃ）命令内のフィールドが、あたかもそのフィールドが０であるかのように扱われる。 
【００２９】
１つの実施例では、新しいプロセッサが開発されるときにＰＣＲが更新されることを可能にするために、各定義されたビットは、それが１にセットされたとき、そのアーキテクチャの所与のレベルにおける新しい機器（即ち、そのアーキテクチャ・レベルにはあるが、直前のレベルにはない機器）をディセーブルする。図３〜図５を参照すると、ビットｖ１（２４０）は、アーキテクチャのｖ１レベルにおける新しい機器をディセーブルする。更に、ビットｖ２（２３０）は、アーキテクチャのｖ２レベルにおける新しい機器をディセーブルする。更に、ビットｖ３（２２０）は、アーキテクチャのｖ３における新しい機器をディセーブルする。ＰＣＲにおける所与の下位の定義された（即ち、予約されてない）ビットが１にセットされる場合、すべての上位の定義されたビットも１にセットされる。換言すれば、v１における新しい機器がディセーブルされる場合、それに続くアーキテクチャ・レベル（即ち、ｖ２およびｖ３）における新しいすべての機器もディセーブルされなければならない。このようにそれらのビットを定義することは、あたかもプロセッサが各アーキテクチャ・レベルに規格合致したかのようにプロセッサを動作させるために、ＰＣＲが使用されることを可能にする。
【００３０】
例えば、すべてのレベル・ビット（例えば、ｖ１〜ｖ３）が「１」にセットされる場合、プロセッサはアーキテクチャのレベルｖ０に規格合致し、ｖ１、ｖ２、および／または、ｖ３において定義されたすべての新しい機器はディセーブルされる。別の例では、レベル・ビットｖ１（２４０）が「０」にセットされ、レベル・ビットｖ２（２３０）およびｖ３（２２０）が「１」にセットされる場合、ｖ２およびｖ３において定義された新しい機器だけがディセーブルされる。この場合、プロセッサは、アーキテクチャ・レベルｖ１に規格合致するように見える。更に別の例では、レベル・ビットｖ１（２４０）およびｖ２（２３０）が「０」にセットされ、レベル・ビットｖ３（２２０）が「１」にセットされる場合、ｖ３において定義された新しい機器だけがディセーブルされ、プロセッサは、アーキテクチャ・レベルｖ２に規格合致するように見える。最後に、すべてのレベル・ビット（例えば、ｖ１〜ｖ３）が「０」にセットされる場合、ディ−セーブルされる機器はなく、プロセッサは、アーキテクチャ・レベルｖ３に規格合致するように見える。次の上位のアーキテクチャが定義されるとき、次の上位の未定義ビット（即ち、最初の予約ビット）が、アーキテクチャのその次の上位のアーキテクチャ・レベルに対する機器をディセーブルするために使用されることも可能である。
【００３１】
ＰＣＲ２００、２０１、および２０２によって、アーキテクチャ・レベルに割り当てられてないビット（即ち、識別するために利用されるビット）が「予約され」、予約ビットと呼ばれる。更に、１つの実施例では、ＰＣＲ１３０は、レベル・ビットの他に「特徴ビット」を含むことも可能である。例えば、特徴ビットは、アーキテクチャ・レベルと無関係にプロセッサの特定の特徴（例えば、ベクトル命令のセット）をディセーブルすることが可能である。ＰＣＲ内のビットのセット（上位ビットのようなビット）を特徴ビットとして利用することも可能である。この実施態様の１つの応用例は、或る設計が、ソフトウェアには見えない所与の特徴と共に発売されること、およびその特徴を含むために／表示するために／具現化するために、現場においてアップグレードされることを可能にしている。
【００３２】
ほとんどの実施態様では、アーキテクチャのレベルよりも多くのビットがＰＣＲに存在する。利用可能なＰＣＲビットよりも多くのアーキテクチャ・レベル（例えば、図３のＰＣＲ２００の例では、６５個以上のアーキテクチャ・レベル）が存在する実施態様では、最早サポートされないアーキテクチャ・レベルに対応するそのＰＣＲの下位ビットが予約される。この実施態様では、ＰＣＲの最上位ビットが既に或るアーキテクチャ・レベルに割り当てられ、新しいアーキテクチャ・レベルが定義されるべきとき、新しいアーキテクチャ・レベルに対応するビットが最下位のＰＣＲビットとして定義され得る。この状況では、その定義されたＰＣＲビットは「ラップ（wrap）する」と言われる。６４ビットのＰＣＲにとって、ラッピングはほとんどありそうもないが、次に説明される図６及び図７によって示されるように、ＰＣＲがわずか８ビット長であった場合、ラッピングはもっとありそうである。
【００３３】
図６及び図７は、定義されたアーキテクチャ・レベルのラッピングが生じた８ビット幅のＰＣＲ３００を示す機能的ブロック図である。この例では、ラッピングは、レベルｖ９が展開されるときに生じ、レベルｖ９はＰＣＲの最下位ビットとして定義される。１２個のアーキテクチャ・レベル（即ち、ｖ０〜ｖ１１）が定義されている図７に示された実施例では、最後の５つのレベル（ｖ７〜ｖ１１）だけがサポートされ、ビット１〜４はその後の再割当て用として「予約」される。
【００３４】
プロセッサが複数の特権レベル／状態（例えば、問題状態、特権状態、超特権状態等）をサポートするという実施態様における変更のようなＰＣＲのいくつかの変更が可能である。そのような状況では、ＰＣＲを、特権コードおよび超特権コードにとって利用可能にすることも可能である。この実施態様は、オペレーティング・システムがユーザ・レベルのアプリケーションに対してプロセッサ・アーキテクチャ・レベルを指定する必要があるという状況では、望ましいことであるかもしれない。
【００３５】
ＰＣＲは、特定の特権レベルのみにまたは複数の特権レベルに影響を及ぼすように具現化することも可能である。例えば、ＰＣＲは、超特権コードおよび特権コード（例えば、オペレーティング・システム）の両方に、各コードの関連する特権レベルに対応したすべてのプロセッサ機器へのアクセスを与える、という結果を生じる問題状態コードのみに影響を及ぼすように具現化されてもよい。それとは別に、ＰＣＲは、オペレーティング・システムが特定のアーキテクチャ・レベル用に設計されるときのように、或いはオペレーティング・システムがＰＣＲを使用するように設計されない場合のように、問題コードおよび特権コードに影響を及ぼすように具現化されてもよい。更に、ＰＣＲによって影響される特権状態はプログラム可能なものであってもよい。
【００３６】
ＰＣＲが複数の特権レベルに影響を及ぼす必要がある場合、複数のＰＣＲが、各特権レベルに対して適用可能な異なるＰＣＲを備えてもよい。例えば、問題状態、特権状態、および超特権状態を含む３つの状態を持つ実施態様では、ＰＣＲが各状態に個々に割り当てられるが、特定の状態に対するＰＣＲは高い特権状態にある間だけ設定可能である。この例では、問題状態に関連したＰＣＲ（例えば、ＰＣＲproblem）は問題状態コードにしか影響しないであろうし、そのＰＣＲは特権および超特権（ハイパーバイザ）状態においてアクセス可能であろう。特権状態に関連したＰＣＲ（例えば、ＰＣＲprivilege）は特権状態コードにしか影響しないであろうし、そのＰＣＲは超特権状態においてアクセス可能であろう。超特権状態に関連したＰＣＲ（ＰＣＲhypervisor）は、超特権状態コードにしか影響しないであろうし、そのＰＣＲは初期のスキャン・イン中のみアクセス可能であろう。従って、この実施態様では、ＰＣＲは、ＰＣＲが影響を及ぼす特権状態よりも多く特権を与えられる特権状態からのみアクセスされ得る。図２を参照すると、例えば、レジスタ１３１（Reg A）およびをレジスタ１３２（RegB）はＰＣＲであってもよく、レジスタ１３１、１３２、およびＰＣＲ １３０の各々は、サポートされた状態の特定のものに割り当てられてもよい。各レジスタは、種々のサイズ、レイアウト、およびビット定義を有することも可能である。
【００３７】
複数のＰＣＲが上述のように設けられると、ハイパーバイザは、パーティションのディスパッチ時に、ＰＣＲproblemおよびＰＣＲprivilegedを初期レベルに初期設定し、パーティションの寿命期間中、オペレーティング・システムは、そのオペレーティング・システムが望むならば、ＰＣＲproblemを修正することが可能である。一般には、オペレーティング・システムはＰＣＲproblemを単に無視するか、或いはそれに気付かない。ＰＣＲビットがセットされるべき値をハイパーバイザが決定するプロセスが、次に説明される図８によって与えられる。
【００３８】
図８および図９は、パーティションのディスパッチ中にＰＣＲを更新するためにハイパーバイザよって遂行されるプロセス（図８）およびプロセッサによって遂行されるプロセス（図９）を一般的に示す動作フローチャートである。プロセスは、図１〜図７のコンポーネント、データ、および／または、例示的な動作環境によって具現化される。図１〜図７に示されるコンポーネントを参照してプロセスを説明し得るが、これは単に便宜上のことであって、代替コンポーネントを使用するのも可能であることは当然である。
【００３９】
好ましくは、コンピュータ可読コードがコンピューティング装置上で実行されるときに一連のステップが遂行されるよう、プロセスにおける１つまたは複数のステップが、コンピュータ可読コードを含むコンピュータ可読媒体において具体化される。或る実施態様では、プロセスの或るステップは、そのプロセスおよびそれの均等の範囲から逸脱することなく、結合され、同時にまたは異なる順序で遂行され、或いは省略される。
【００４０】
ハイパーバイザ・イネーブルド・プロセスに関する図８のプロセスはブロック４０１で始まり、ブロック４０３に進む。ブロック４０３では、プロセッサにおいてパーティションをディスパッチするために、ハイパーバイザ（ＨＹＰ）がトリガされる。パーティションの実行を開始する制御プログラムがハイパーバイザをコールして、パーティションにプロセッサ資源を割り付けることをハイパーバイザに知らせる。ブロック４０５において、ハイパーバイザが、パーティションに関連した様々な構成パラメータを検索する（または受け取る）。そのパラメータは、パーティションが実行されるべきプロセッサ・アーキテクチャのレベルに関するデータを含む。ブロック４０７に示されるように、検索されたアーキテクチャ・レベル・パラメータに基づいて、パーティションが規格合致するレベルに対応したアーキテクチャ・レベルを、ハイパーバイザが識別する。しかる後、ブロック４０９に示されるように、識別されたアーキテクチャ・レベルに対する設定にＰＣＲの対応ビットをセットするための命令を、ハイパーバイザが発生する。しかる後、ブロック４１１に示されるように、ハイパーバイザがパーティションの実行を開始する。次に、プロセスがブロック４１３において終了する。
【００４１】
図９に示されたプロセッサ・レベル・プロセスを参照すると、そのプロセスはブロック５０１で始まり、ブロック５０３に進む。ブロック５０３では、プロセッサが、ＰＣＲを修正するための命令を受け取る。プロセッサは、ブロック５０５において、現在のプロセッサ特権状態がＰＣＲの要求された修正を許容するかどうかを決定する。１つの実施例では、この決定は、プロセッサが超特権（ハイパーバイザ）状態にあるときに命令の受取りが生じたかどうかをチェックすることを含んでいる。現在のプロセッサ特権状態がその要求されたＰＣＲ修正を許容しない場合（例えば、プロセッサが超特権状態にない場合）、ブロック５０７に示されるように、ＰＣＲへのアクセスは拒否される。現在のプロセッサ特権状態がその要求されたＰＣＲ修正を許容する場合（例えば、プロセッサが超特権状態にある場合）、ブロック５０９に示されるように、プロセッサは受け取った命令に従ってＰＣＲを修正する。しかる後、プロセスはブロック５１１において終了する。
【００４２】
従って、本発明の上記実施例は、プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択する方法（データ処理システムのプロセッサ内の方法）を提供する。その方法は、
（ａ）プロセッサにおけるプロセッサ互換レジスタ（ＰＣＲ）内の１つまたは複数のビット値（その値は、プロセッサが論理パーティションまたはプログラムのその後の実行中に規格合致するように見えるべきアーキテクチャ・レベルに対応する）をセットするステップと、
（ｂ）ＰＣＲの内の１つまたは複数のビットの値に基づいて、特定のアーキテクチャ・レベルに規格合致するように見えるよう、プロセッサを自動的に構成するステップと、
を含む。
【００４３】
プログラム製品を含むコンピュータ使用可能媒体において本発明の少なくとも幾つかの局面を代替的に具現化し得るということは当然である。本発明に関する機能を定義するプログラムは、書込み不可の記憶媒体（例えば、ＣＤ−ＲＯＭ）、書込み可能記憶媒体(例えば、ハードディスク・ドライブ、読取り／書込みＣＤ−ＲＯＭ、光学的媒体)、並びに Ethernet（登録商標）、インターネット、無線ネットワーク、および同様のネットワーク・システムを含むコンピュータおよび電話ネットワークのような通信媒体、を限定なしに含む様々な信号保持媒体を介してデータ記憶システムまたはコンピュータ・システムに配布することも可能である。従って、そのような信号保持媒体は、それが本発明における方法機能を指示するコンピュータ可読命令を保持または符号化するとき、本発明の代替実施例を表わすということも当然である。更に、ハードウェア、ソフトウェア、或いは本明細書に記載されたようなソフトウェアおよびハードウェアまたはそれらの均等物を有するシステムによって、本発明を具現化することが可能であることも当然である。
【００４４】
本発明を好ましい実施例に関して詳細に示し且つ説明したが、本発明の趣旨および範囲から逸脱することなく、形式および細部における様々な変更を行ない得るということは当業者には明らかであろう。
【図面の簡単な説明】
【００４５】
【図１】図１は、本発明の具現化を特に適用し得るコンピューティング装置を示す機能ブロック図である。
【図２】図２は、本発明の具現化を特に適用し得るコンピュータおよびそれのコンポーネントを示す機能ブロック図である。
【図３】図３は、本発明の１つの実施例に従って例示のプロセッサ互換レジスタ（ＰＣＲ）内に割り当てられた「レベル」ビットを示す機能ブロック図である。
【図４】図４は、本発明の別の実施例に従って例示のプロセッサ互換レジスタ（ＰＣＲ）内に割り当てられた「レベル」ビットを示す機能ブロック図である。
【図５】図５は、本発明の別の実施例に従って例示のプロセッサ互換レジスタ（ＰＣＲ）内に割り当てられた「レベル」ビットを示す機能ブロック図である。
【図６】図６は、本発明の１つの実施例に従ってオーバーフロー・レベル値のラッピングを可能にする１つの例示的ＰＣＲを示す機能ブロック図である。
【図７】図７は、本発明の１つの実施例に従ってオーバーフロー・レベル値のラッピングを可能にする別の例示的ＰＣＲを示す機能ブロック図である。
【図８】図８は、本発明の実施例に従って、ＰＣＲをセットすべきアーキテクチャ・レベルをハイパーバイザが決定するプロセスを示す動作フローチャートである。
【図９】図９は、本発明の実施例に従って、プロセッサが規格合致するように見えるアーキテクチャ・レベルを識別するために、ＰＣＲのビットを設定するためのプロセスを示す動作フローチャートである。
【図１】
2008171428.tif 000003
【図２】
2008171428.tif 000004
【図３】
2008171428.tif 000005
【図４】
2008171428.tif 000006
【図５】
2008171428.tif 000007
【図６】
2008171428.tif 000008
【図７】
2008171428.tif 000009
【図８】
2008171428.tif 000010
【図９】
2008171428.tif 000011