(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】プロセッサにおけるセキュア動作モードの動的制御のためのシステムおよび方法
(51)【国際特許分類】
G06F 9/34 20180101AFI20231220BHJP
G06F 21/74 20130101ALI20231220BHJP
G06F 15/78 20060101ALI20231220BHJP
【FI】
G06F9/34 330
G06F21/74
G06F15/78 599
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023535703
(86)(22)【出願日】2021-12-06
(85)【翻訳文提出日】2023-06-12
(86)【国際出願番号】 IB2021061366
(87)【国際公開番号】W WO2022130113
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】チャッタージー、デバプリヤ
(72)【発明者】
【氏名】ゼッリン、クリスチャン
(72)【発明者】
【氏名】フレイ、ブラッドリー
(72)【発明者】
【氏名】トンプト、ブライアン
【テーマコード(参考)】
5B033
5B062
【Fターム(参考)】
5B033BF04
5B033DD05
5B033FA27
5B062GG04
(57)【要約】
再起動せずにコンピュータの動作モードを変更するためのコンピュータ・システム、プロセッサ、または方法、あるいはその組み合わせが、構成レジスタを含んでいるプロセッサを含み、構成レジスタが、1つまたは複数の特権レベルの各々の特権エントリ(PRVS)レジスタ・フィールドであって、各特権レベルの各PRVSレジスタ・フィールドが1つまたは複数の制御アスペクト・エントリを含む、特権エントリ(PRVS)レジスタ・フィールドと、下位強制(ENFB)レジスタ・フィールドとを含み、各特権レベルの各ENFBレジスタ・フィールドが、1つまたは複数の制御アスペクト・エントリを含み、PRVSレジスタ・フィールドの制御アスペクトが、数においてENFBレジスタ・フィールドの制御アスペクトに等しく、ENFBレジスタ・フィールドの制御アスペクトに対応する。PRVSレジスタ・フィールドおよびENFBレジスタ・フィールドは、ソフトウェア・アプリケーションを実行しながらプロセッサをセキュア・モードから性能モードに変更するために使用される。
【特許請求の範囲】
【請求項1】
プロセッサを再起動せずに前記プロセッサにおける動作モードを変更する方法であって、
特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、
特権エントリ(PRVS)レジスタ・フィールド内の前記特権レベルでの前記制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、
前記PRVSレジスタ・フィールド内の前記特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されていない場合、前記PRVSレジスタ・フィールド内で、前記特権レベルでの前記制御アスペクトの前記ビットをセキュア・モードに設定することと、それによって、前記プロセッサにおいて、前記特権レベルでの前記制御アスペクトの前記セキュア・モードを有効にすることと
を含む、方法。
【請求項2】
より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するかどうかを判定することをさらに含み、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制しないということが判定された場合、前記特権レベルでの前記制御アスペクトの前記セキュア・モードへの変更の方法が完了する、請求項1に記載の方法。
【請求項3】
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するということが判定された場合、下位強制(ENFB)レジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているかどうかを判定することと、
前記ENFBレジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているということが判定された場合、前記特権レベルでの前記制御アスペクトの前記セキュア・モードへの変更のプロセスが完了することと
をさらに含む、請求項2に記載の方法。
【請求項4】
前記ENFBレジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されていないということが判定された場合、前記特権レベルでの前記制御アスペクトのポリシーが、前記より低い特権レベルに対して前記制御アスペクトの前記セキュア・モードを強制することを許可するかどうかを判定することと、
前記特権レベルでの前記制御アスペクトの前記ポリシーが、前記より低い特権レベルでの前記制御アスペクトの前記セキュア・モードを強制することを許可しない場合、前記特権レベルでの前記制御アスペクトのセキュア・モードへの変更の前記プロセスが完了することと
をさらに含む、請求項3に記載の方法。
【請求項5】
前記特権レベルでの前記制御アスペクトのポリシーが、前記より低い特権レベルに対して前記制御アスペクトの前記セキュア・モードを強制することを許可するかどうかを判定することが、前記より低い特権レベルに対する前記制御アスペクトの前記セキュア・モードの強制に関して前記特権レベルでの前記制御アスペクトの前記ポリシーを検索することを含む、請求項4に記載の方法。
【請求項6】
前記特権レベルでの前記制御アスペクトの前記ポリシーが、前記より低い特権レベルでの前記制御アスペクトの前記セキュア・モードを強制することを許可する場合、前記ENFBレジスタ・フィールド内で、前記特権レベルでの前記制御アスペクトの前記ビットをセキュア・モードに設定することをさらに含む、請求項4に記載の方法。
【請求項7】
アプリケーションの呼び出し時に、前記特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットおよび前記PRVSレジスタ・フィールド内の前記ビットが、最初に前記性能モードに設定される、請求項3に記載の方法。
【請求項8】
前記ENFBレジスタ・フィールドおよび前記PRVSレジスタ・フィールドが、前記プロセッサ内のデコード・ユニット内にあり、前記デコード・ユニットが、前記プロセッサによる実行のための命令をデコードする、請求項3に記載の方法。
【請求項9】
前記ENFBレジスタ・フィールドおよび前記PRVSレジスタ・フィールド内の前記ビットが、セキュア・モードの場合、1に設定され、性能モードの場合、0に設定される、請求項3に記載の方法。
【請求項10】
前記特権レベルでの前記制御アスペクトの前記プロセッサの前記セキュア・モードまたは性能モードがソフトウェア・アプリケーションによって制御される、請求項1に記載の方法。
【請求項11】
前記特権レベルでの前記制御アスペクトのセキュア・モードから性能モードへの変更のトリガーに応答して、前記特権レベルでの前記制御アスペクトの前記PRVSレジスタ・フィールド内の前記ビットが前記性能モードに設定されているかどうかをチェックすることと、
前記特権レベルでの前記制御アスペクトの前記PRVSレジスタ・フィールド内の前記ビットが前記性能モードに設定されていないということに応答して、前記特権レベルでの前記制御アスペクトのサービス・レジスタ・フィールド内のビットを前記性能モードに設定することと、
すべてのより高い特権レベルの前記ENFBレジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、
前記すべてのより高い特権レベルの前記ENFBレジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されているということに応答して、前記プロセッサを、前記特権レベルでの前記制御アスペクトの前記性能モードに変更することと
をさらに含む、請求項3に記載の方法。
【請求項12】
すべての前記より高い特権レベルの前記ENFBレジスタの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されていないということに応答して、
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することをさらに含み、
前記より高い特権レベルが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可しないということに応答して、前記プロセッサが、前記特権レベルでの前記制御アスペクトの前記性能モードに移行しない、請求項11に記載の方法。
【請求項13】
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することが、
前記より低い特権レベルでの前記制御アスペクトの前記性能モードに関して前記より高い特権レベルのポリシーを検索することと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するかどうかをチェックすることと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するということに応答して、前記特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが前記性能モードに設定され、それによって、前記プロセッサが前記特権レベルでの前記制御アスペクトの前記性能モードに移行することを許可することとをさらに含む、請求項12に記載の方法。
【請求項14】
前記より低い特権レベルでの前記制御アスペクトの前記性能モードに関して前記より高い特権レベルのポリシーを検索すること、および前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するかどうかをチェックすることが、特権レベルごと、および前記より高い特権レベルごとに実行され、前記ポリシーが、その特権レベルでの前記制御アスペクトの前記性能モードを許可し、その特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが前記性能モードに設定され、その後、前記プロセッサが、前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが、すべての前記より高い権限レベルの前記性能モードに設定されているかどうかをチェックする、請求項13に記載の方法。
【請求項15】
プロセッサを再起動せずに前記プロセッサの動作モードを変更する方法であって、
特権レベルでの制御アスペクトのセキュア・モードから性能動作モードへの変更のトリガーに応答して、前記特権レベルでの前記制御アスペクトの特権エントリ(PRVS)レジスタ・フィールド内のビットが性能モードに設定されているかどうかをチェックすることと、
前記特権レベルでの前記制御アスペクトの前記PRVSレジスタ・フィールド内の前記ビットが前記性能モードに設定されていないということに応答して、前記特権レベルでの前記制御アスペクトのサービス・レジスタ・フィールド内のビットを前記性能モードに設定することと、
すべてのより高い特権レベルの下位強制(ENFB)レジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、
すべての前記より高い特権レベルの前記ENFBレジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されているということに応答して、前記プロセッサを、前記特権レベルでの前記制御アスペクトの前記性能モードに変更することと
を含む、方法。
【請求項16】
すべての前記より高い特権レベルの前記ENFBレジスタの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されていないということに応答して、
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することをさらに含み、
前記より高い特権レベルが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可しないということに応答して、前記プロセッサが、前記特権レベルでの前記制御アスペクトの前記性能モードに移行しない、請求項15に記載の方法。
【請求項17】
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することが、
前記より低い特権レベルでの前記制御アスペクトの前記性能モードに関して前記より高い特権レベルのポリシーを検索することと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するかどうかをチェックすることと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するということに応答して、前記特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが前記性能モードに設定され、それによって、前記プロセッサが前記特権レベルでの前記制御アスペクトの前記性能モードに移行することを許可することと
をさらに含む、請求項16に記載の方法。
【請求項18】
前記より低い特権レベルでの前記制御アスペクトの前記性能モードに関して前記より高い特権レベルのポリシーを検索すること、および前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するかどうかをチェックすることが、特権レベルごと、および前記より高い特権レベルごとに実行され、前記ポリシーが、その特権レベルでの前記制御アスペクトの前記性能モードを許可し、その特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが前記性能モードに設定され、その後、前記プロセッサが、前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが、すべてのより高い権限レベルの性能モードに設定されているかどうかをチェックする、請求項17に記載の方法。
【請求項19】
特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、
前記PRVSレジスタ・フィールド内の前記特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているかどうかを判定することと、
前記PRVSレジスタ・フィールド内の前記特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されていない場合、前記PRVSレジスタ・フィールド内で、前記特権レベルでの前記制御アスペクトの前記ビットをセキュア・モードに設定することと、それによって、前記プロセッサにおいて、前記特権レベルでの前記制御アスペクトの前記セキュア・モードを有効にすることと、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するかどうかを判定することと、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するということが判定された場合、下位強制(ENFB)レジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているかどうかを判定することと、
前記ENFBレジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているということが判定された場合、前記特権レベルでの前記制御アスペクトの前記セキュア・モードへの変更のプロセスが完了することと
をさらに含む、請求項15に記載の方法。
【請求項20】
情報を処理するためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のレジスタ・ファイルを含んでいる少なくとも1つのプロセッサを備え、前記レジスタのうちの少なくとも1つが構成レジスタであり、
前記構成レジスタが、1つまたは複数の特権レベルの各々の特権エントリ(PRVS)レジスタ・フィールドであって、各特権レベルの各PRVSレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含む、前記特権エントリ(PRVS)レジスタ・フィールドと、1つまたは複数の特権レベルの各々より低い特権レベルに対する下位強制(ENFB)レジスタ・フィールドとを含み、各特権レベルの各ENFBレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含み、前記PRVSレジスタ・フィールドの制御アスペクトが、数において前記ENFBレジスタ・フィールドの制御アスペクトに等しく、前記ENFBレジスタ・フィールドの制御アスペクトに対応し、
前記プロセッサが、
特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、
前記PRVSレジスタ・フィールド内の前記特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているかどうかを判定することと、
前記PRVSレジスタ・フィールド内の前記特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されていない場合、前記PRVSレジスタ・フィールド内で、前記特権レベルでの前記制御アスペクトの前記ビットをセキュア・モードに設定することと、それによって、前記プロセッサにおいて、前記特権レベルでの前記制御アスペクトの前記セキュア・モードを有効にすることとを実行するように構成されて適応される、コンピュータ・システム。
【請求項21】
前記プロセッサが、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するかどうかを判定することと、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制しないということが判定された場合、前記特権レベルでの前記制御アスペクトの前記セキュア・モードへの変更の方法が完了することと、
前記より低い特権レベルに対して前記制御アスペクトのセキュア・モードを強制するということが判定された場合、下位強制(ENFB)レジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているかどうかを判定することと、
前記ENFBレジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されているということが判定された場合、前記特権レベルでの前記制御アスペクトの前記セキュア・モードへの変更のプロセスが完了することとを実行するようにさらに構成されて適応される、請求項20に記載のコンピュータ・システム。
【請求項22】
前記プロセッサが、
前記ENFBレジスタ・フィールド内の、前記より低い特権レベルでの前記制御アスペクトの前記ビットがセキュア・モードに設定されていないということが判定された場合、前記特権レベルでの前記制御アスペクトのポリシーが、前記より低い特権レベルに対して前記制御アスペクトの前記セキュア・モードを強制することを許可するかどうかを判定することと、
前記特権レベルでの前記制御アスペクトの前記ポリシーが、前記より低い特権レベルでの前記制御アスペクトの前記セキュア・モードを強制することを許可しない場合、前記特権レベルでの前記制御アスペクトのセキュア・モードへの変更の前記プロセスが完了することと
を実行するようにさらに構成され、
前記特権レベルでの前記制御アスペクトのポリシーが、前記より低い特権レベルに対して前記制御アスペクトの前記セキュア・モードを強制することを許可するかどうかを判定することが、前記より低い特権レベルに対する前記制御アスペクトの前記セキュア・モードの強制に関して前記特権レベルでの前記制御アスペクトの前記ポリシーを検索することを含む、請求項21に記載のコンピュータ・システム。
【請求項23】
前記プロセッサが、
前記特権レベルでの前記制御アスペクトの前記ポリシーが、前記より低い特権レベルでの前記制御アスペクトの前記セキュア・モードを強制することを許可する場合、前記ENFBレジスタ・フィールド内で、前記特権レベルでの前記制御アスペクトの前記ビットをセキュア・モードに設定するようにさらに構成される、請求項22に記載のコンピュータ・システム。
【請求項24】
前記プロセッサが、
前記特権レベルでの前記制御アスペクトのセキュア・モードから性能モードへの変更のトリガーに応答して、前記特権レベルでの前記制御アスペクトの前記PRVSレジスタ・フィールド内の前記ビットが前記性能モードに設定されているかどうかをチェックすることと、
前記特権レベルでの前記制御アスペクトの前記PRVSレジスタ・フィールド内の前記ビットが前記性能モードに設定されていないということに応答して、前記特権レベルでの前記制御アスペクトのサービス・レジスタ・フィールド内のビットを前記性能モードに設定することと、
すべての前記より高い特権レベルの前記ENFBレジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、
すべての前記より高い特権レベルの前記ENFBレジスタ・フィールドの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されているということに応答して、前記プロセッサを、前記特権レベルでの前記制御アスペクトの前記性能モードに変更することと
を実行するようにさらに構成される、請求項23に記載のコンピュータ・システム。
【請求項25】
前記プロセッサが、
すべての前記より高い特権レベルの前記ENFBレジスタの前記特権レベルでの前記制御アスペクトが、前記性能モードに設定されていないということに応答して、
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することと、
前記より高い特権レベルが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可しないということに応答して、前記プロセッサが、前記特権レベルでの前記制御アスペクトの前記性能モードに移行しないこととを実行するようにさらに構成され、
前記より高い特権レベルが前記特権レベルでの前記制御アスペクトの前記性能モードを許可することを要求することが、
前記より低い特権レベルでの前記制御アスペクトの前記性能モードに関して前記より高い特権レベルのポリシーを検索することと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するかどうかをチェックすることと、
前記ポリシーが、前記特権レベルでの前記制御アスペクトの前記性能モードを許可するということに応答して、前記特権レベルでの前記制御アスペクトの前記ENFBレジスタ・フィールド内の前記ビットが前記性能モードに設定され、それによって、前記プロセッサが前記特権レベルでの前記制御アスペクトの前記性能モードに移行することを許可することと
をさらに含む、請求項24に記載のコンピュータ・システム。
【請求項26】
コンピュータ上で実行された場合に、請求項1ないし19のいずれかに記載の方法を実行するように適応されたプログラム・コード手段を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、情報処理システムおよびデータ処理システム、プロセッサ、ならびにメモリ・システムに関し、より詳細には、プロセッサにおける1つまたは複数のセキュア動作モードを動的に制御することに関する。
【背景技術】
【0002】
情報技術の最近の進歩および情報を格納して処理するためのインターネットの幅広い使用に伴って、コンピューティング・システムによる情報の取得、処理、格納、および配布に対する要求が、ますます高まっている。コンピューティング・システムは、ビジネス、個人的利用、および娯楽のためのますます複雑化するアプリケーションをコンピュータが実行できる速度を向上させるように、開発されている。コンピュータ・システムの全体的性能は、プロセッサ、任意のメモリ・キャッシュ、入出力(I/O:input/output)サブシステムの性能/構造、メモリ制御機能の効率、メモリ・デバイスおよびメモリ・システムの性能、および関連するメモリ・インターフェイス要素、ならびにメモリ相互接続インターフェイスの種類および構造を含む、コンピュータ構造の主要な要素の各々による影響を受ける。
【0003】
最近のコンピュータ・システムは、通常、コンピュータ・システムにおいて情報を処理するために使用され得るプロセッサを含む、複数の集積回路(IC:integrated circuits)を含んでいる。プロセッサによって処理される情報は、プロセッサによって実行されるコンピュータ命令に加えて、コンピュータ命令を使用してプロセッサによって操作されるデータを含むことができる。コンピュータ命令(例えば、アプリケーション)およびデータは、通常、コンピュータ・システム内のメイン・メモリに格納される。プロセッサの性能は、コンピューティング・システムまたはデータ処理システムとも呼ばれる、情報処理システムの性能に影響を与えることができる。
【0004】
許可されていないユーザまたは不正なソフトウェアあるいはその両方が情報処理システムおよびデータ処理システムにアクセスするのを防ぐことが、ますます重要になっており、実現することが困難になっている。1つの状況では、ユーザまたはソフトウェア・アプリケーションは、情報処理システム、プロセッサ、レジスタ・ファイル、またはメモリ・サブシステム、あるいはその組み合わせに対するアクセス権限を持つことを許可されることがあるが、完全なシステム、すべてのレジスタ・ファイル、またはメモリ・サブシステムのすべてに対する完全なアクセス権限を持つことを許可されないことがある。したがって、ユーザまたはソフトウェア・アプリケーションは、システムの一部にアクセスすることを許可されることがあるが、ユーザまたはソフトウェア・アプリケーションあるいはその両方は、システム全体、すべてのレジスタ・ファイル、またはメモリ・サブシステムのすべて、あるいはその組み合わせにアクセスすることを許可されない。他の状況では、ユーザまたはソフトウェア・アプリケーションあるいはその両方は、コンピューティング・システムのいずれかの部分、レジスタ・ファイル、またはメモリ・サブシステムのいずれかの部分、あるいはその組み合わせにアクセスすることが許可されない。許可されていないユーザまたはソフトウェア・アプリケーションあるいはその両方によってアクセスされることからシステム、レジスタ・ファイル、またはメモリ・サブシステム、あるいはその組み合わせを保護することは、困難である可能性がある。
【0005】
マイクロプロセッサ設計では、マイクロアーキテクチャの性能最適化により、プロセッサにおいて、プロセッサまたはコンピューティング・システムあるいはその両方が攻撃に対してより脆弱になる特定のサイドチャネル・セキュリティ・ホール(side-channel security holes)を開く可能性もある。例えば、マイクロプロセッサにおける特定の性能のメカニズムおよび特徴は、本質的にマイクロプロセッサをスペクターRSBサイドチャネル攻撃(Spectre-RSB side channel attack)にさらす可能性がある。性能の特徴は、プロセッサを攻撃に対してより脆弱にする可能性があるが、関連するサイドチャネル攻撃が実際の脅威をあまりもたらさないことがあるため、特定の信頼できる実行環境の下では、性能最適化を利用することが有益であることがある。他の状況および実行環境では、性能最適化を利用することも、無効にすることもないよりセキュアな構成が保証され得る。性能モード/セキュリティ・モードが起動時にファームウェアによって設定されて固定される代わりに、プロセッサがハードウェアおよび特徴を最大限に活用することができるように、好ましくは、信頼できるソフトウェアによる実施形態において、最適化された性能または最適化されたセキュリティを提供するプロセッサの構成を、動的に制御するか、または切り替えることができる場合、有益である。
【発明の概要】
【0006】
コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、それらの動作方法、およびソフトウェア・アプリケーションの実行について、そのようなシステム、プロセッサ、およびそれらの動作方法のセキュリティ・モードを制御する技術を含めて、理解を助けるために、本開示の概要が提供されるが、それは、本開示または本発明を制限することを意図するものではない。本開示は、当業者を対象にする。本開示のさまざまな態様および特徴が、一部の例では個別に、または他の例では本開示の他の態様および特徴と組み合わせて、有利に使用されてよいということが、理解されるべきである。したがって、異なる効果を実現するために、コンピュータ・システム、アーキテクチャ構造、プロセッサ、レジスタ・ファイル、それらの動作方法、およびソフトウェア・アプリケーションを実行する方法に対する変形および変更が行われてよい。
【0007】
1つまたは複数の実施形態では、本開示の態様は、プロセッサを再起動せずにプロセッサにおける動作モードを変更することを含む、プロセッサにおいてデータを処理するシステムまたは方法あるいはその両方を提供する。実施形態では、システムまたは方法あるいはその両方は、特権レベルでの制御アスペクト(control aspect)の性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、特権エントリ(PRVS)レジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されていない場合、PRVSレジスタ・フィールド内で、特権レベルでの制御アスペクトのビットをセキュア・モードに設定することと、それによって、プロセッサにおいて、特権レベルでの制御アスペクトのセキュア・モードを有効にすることとを含む。システムまたは方法あるいはその両方は、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制するかどうかを判定することをさらに含み、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制しないということが決定された場合、特権レベルでの制御アスペクトのセキュア・モードへの変更の方法が完了するのが好ましい。実施形態では、システムまたは方法あるいはその両方は、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制するということが決定された場合、下位強制(Enforce Below)(ENFB)レジスタ・フィールド内の、より低い特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、ENFBレジスタ・フィールド内の、より低い特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているということが決定された場合、特権レベルでの制御アスペクトのセキュア・モードへの変更のプロセスが完了することとをさらに含むことができる。さらなる実施形態では、システムまたは方法あるいはその両方は、ENFBレジスタ・フィールド内の、より低い特権レベルでの制御アスペクトのビットがセキュア・モードに設定されていないということが決定された場合、特権レベルでの制御アスペクトのポリシーが、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制することを許可するかどうかを判定することと、特権レベルでの制御アスペクトのポリシーが、より低い特権レベルでの制御アスペクトのセキュア・モードを強制することを許可しない場合、特権レベルでの制御アスペクトのセキュア・モードへの変更のプロセスが完了することとを含む。1つの態様では、特権レベルでの制御アスペクトのプロセッサのセキュア・モードまたは性能モードは、ソフトウェア・アプリケーションによって制御される。
【0008】
1つまたは複数の実施形態では、システムまたは方法あるいはその両方は、特権レベルでの制御アスペクトのセキュア・モードから性能モードへの変更のトリガーに応答して、特権レベルでの制御アスペクトのSRVSレジスタ・フィールド内のビットが性能モードに設定されているかどうかをチェックすることと、特権レベルでの制御アスペクトのSRVSレジスタ・フィールド内のビットが性能モードに設定されていないということに応答して、特権レベルでの制御アスペクトのサービス・レジスタ・フィールド内のビットを性能モードに設定することと、すべてのより高い特権レベルのENFBレジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、すべてのより高い特権レベルのENFBレジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているということに応答して、プロセッサを、特権レベルでの制御アスペクトの性能モードに変更することとをさらに含む。1つの態様では、システムまたは方法あるいはその両方は、すべてのより高い特権レベルのENFBレジスタの特権レベルでの制御アスペクトが、性能モードに設定されていないということに応答して、より高い特権レベルが特権レベルでの制御アスペクトの性能モードを許可することを要求することを含み、より高い特権レベルが、特権レベルでの制御アスペクトの性能モードを許可しないということに応答して、プロセッサが、特権レベルでの制御アスペクトの性能モードに移行しない。より高い特権レベルが特権レベルでの制御アスペクトの性能モードを許可することを要求することは、通常、より低い特権レベルでの制御アスペクトの性能モードに関してより高い特権レベルのポリシーを検索することと、このポリシーが、特権レベルでの制御アスペクトの性能モードを許可するかどうかをチェックすることと、このポリシーが、特権レベルでの制御アスペクトの性能モードを許可するということに応答して、特権レベルでの制御アスペクトのENFBレジスタ・フィールド内のビットが性能モードに設定され、それによって、プロセッサが特権レベルでの制御アスペクトの性能モードに移行することを許可することとを含む。
【0009】
1つまたは複数の実施形態では、1つまたは複数のレジスタ・ファイルを含んでいる少なくとも1つのプロセッサを含む情報を処理するためのコンピュータ・システムが開示され、レジスタのうちの少なくとも1つが構成レジスタであり、構成レジスタが、1つまたは複数の特権レベルの各々の特権エントリ(PRVS)レジスタ・フィールドであって、各特権レベルの各PRVSレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含む、特権エントリ(PRVS)レジスタ・フィールドと、1つまたは複数の特権レベルの各々より低い特権レベルに対する下位強制(ENFB)レジスタ・フィールドとを含み、各特権レベルの各ENFBレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含み、PRVSレジスタ・フィールドの制御アスペクトが、数においてENFBレジスタ・フィールドの制御アスペクトに等しく、ENFBレジスタ・フィールドの制御アスペクトに対応する。プロセッサは、特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始するように構成されて適応され、この変更は、特権エントリ(PRVS)レジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されていない場合、PRVSレジスタ・フィールド内で、特権レベルでの制御アスペクトのビットをセキュア・モードに設定することと、それによって、プロセッサにおいて、特権レベルでの制御アスペクトのセキュア・モードを有効にすることとを含む。プロセッサは、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制するかどうかを判定し、より低い特権レベルに対して制御アスペクトのセキュア・モードを強制するということが決定された場合、下位強制(ENFB)レジスタ・フィールド内の、より低い特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定し、ENFBレジスタ・フィールド内の、より低い特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているということが決定された場合、特権レベルでの制御アスペクトのセキュア・モードへの変更のプロセスが完了するように、さらに構成されて適応されるのが好ましい。
【0010】
さらなる実施形態では、システムは、特権レベルでの制御アスペクトのセキュア動作モードから性能動作モードへの変更のトリガーに応答して、特権レベルでの制御アスペクトのサービス・エントリ(SRVS)レジスタ・フィールド内のビットが性能モードに設定されているかどうかをチェックすることと、特権レベルでの制御アスペクトのSRVSレジスタ・フィールド内のビットが性能モードに設定されていないということに応答して、特権レベルでの制御アスペクトのサービス・レジスタ・フィールド内のビットを性能モードに設定することと、すべてのより高い特権レベルの下位強制(ENFB)レジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、すべてのより高い特権レベルのENFBレジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているということに応答して、プロセッサを、特権レベルでの制御アスペクトの性能モードに変更することとを含む。
【0011】
1つの態様によれば、プロセッサを再起動せずにプロセッサにおける動作モードを変更する方法が提供されており、この方法は、特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、特権エントリ(PRVS)レジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されていない場合、PRVSレジスタ・フィールド内で、特権レベルでの制御アスペクトのビットをセキュア・モードに設定することと、それによって、プロセッサにおいて、特権レベルでの制御アスペクトのセキュア・モードを有効にすることとを含む。
【0012】
別の態様によれば、プロセッサを再起動せずにプロセッサの動作モードを変更する方法が提供されており、この方法は、特権レベルでの制御アスペクトのセキュア動作モードから性能動作モードへの変更のトリガーに応答して、特権レベルでの制御アスペクトの特権エントリ(PRVS)レジスタ・フィールド内のビットが性能モードに設定されているかどうかをチェックすることと、特権レベルでの制御アスペクトのPRVSレジスタ・フィールド内のビットが性能モードに設定されていないということに応答して、特権レベルでの制御アスペクトのサービス・レジスタ・フィールド内のビットを性能モードに設定することと、すべてのより高い特権レベルの下位強制(ENFB)レジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているかどうかをチェックすることと、すべてのより高い特権レベルのENFBレジスタ・フィールドの特権レベルでの制御アスペクトが、性能モードに設定されているということに応答して、プロセッサを、特権レベルでの制御アスペクトの性能モードに変更することとを含む。
【0013】
別の態様によれば、情報を処理するためのコンピュータ・システムが提供されており、コンピュータ・システムは、1つまたは複数のレジスタ・ファイルを含んでいる少なくとも1つのプロセッサを備えており、レジスタのうちの少なくとも1つが構成レジスタであり、構成レジスタが、1つまたは複数の特権レベルの各々の特権エントリ(PRVS)レジスタ・フィールドであって、各特権レベルの各PRVSレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含む、特権エントリ(PRVS)レジスタ・フィールドと、1つまたは複数の特権レベルの各々より低い特権レベルに対する下位強制(ENFB)レジスタ・フィールドとを含み、各特権レベルの各ENFBレジスタ・フィールドが、ビットを保持するための1つまたは複数の制御アスペクト・エントリを含み、PRVSレジスタ・フィールドの制御アスペクトが、数においてENFBレジスタ・フィールドの制御アスペクトに等しく、ENFBレジスタ・フィールドの制御アスペクトに対応し、プロセッサは、特権レベルでの制御アスペクトの性能モードからセキュア・モードへのプロセッサにおける構成の変更を開始することと、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットがセキュア・モードに設定されているかどうかを判定することと、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットが、セキュア・モードに設定されていない場合、PRVSレジスタ・フィールド内の特権レベルでの制御アスペクトのビットをセキュア・モードに設定することと、それによって、プロセッサにおいて、特権レベルでの制御アスペクトのセキュア・モードを有効にすることとを実行するように構成されて適応される。
【0014】
本発明の前述の特徴および優位性、ならびに他の特徴および優位性は、添付の図面に示されているように、本発明の実施形態例の以下のより詳細な説明から明らかになり、類似する参照番号は、通常、本発明の実施形態例の類似する部分を表す。
【0015】
情報処理システム、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、レジスタ・ファイル、それらの動作方法、およびソフトウェア・アプリケーションを実行する方法のさまざまな態様、特徴、および実施形態は、提供された図と併せて読まれた場合に、よく理解されるであろう。各図では、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、レジスタ・ファイル、およびソフトウェア・アプリケーションを実行する方法を含む、それらの動作方法のさまざまな態様、特徴、またはさまざまな実施形態、あるいはその組み合わせを示す目的で、実施形態が提供されているが、特許請求の範囲は、示された正確な配置、構造、アセンブリ、サブアセンブリ、機能ユニット、メカニズム、特徴、態様、実施形態、デバイス、方法、プロセス、または技術に限定されるべきではなく、示された配置、構造、アセンブリ、サブアセンブリ、機能ユニット、メカニズム、特徴、態様、実施形態、デバイス、方法、プロセス、および技術は、単独で使用されるか、または他の配置、構造、アセンブリ、サブアセンブリ、機能ユニット、メカニズム、特徴、態様、実施形態、デバイス、方法、プロセス、および技術と組み合わせて使用されてよい。
【図面の簡単な説明】
【0016】
【
図1】本開示の実施形態に従って、一般的なコンピューティング・システムまたはデータ処理システムを示す図である。
【
図2】本開示の実施形態に従って、プロセッサおよびメモリ・システムを示す図である。
【
図3】本開示の実施形態に従って、プロセッサのブロック図を示す図である。
【
図4】本開示の実施形態に従って、構成レジスタの編成の概略図を示す図である。
【
図5】本開示の実施形態に従って、
図4の構成レジスタの動作の概略図を示す図である。
【
図6】実施形態に従って、プロセッサの動作モードを変更する方法のフロー・チャートを示す図である。
【
図7】別の実施形態に従って、プロセッサの動作モードを変更する方法のフロー・チャートを示す図である。
【発明を実施するための形態】
【0017】
以下の説明は、本発明の一般的原理を説明するために行われるのであり、本明細書において請求される本発明の概念を制限するように意図されていない。以下の詳細な説明では、情報処理システム、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ、機能ユニット、レジスタ・ファイル、メモリ・サブシステム、およびソフトウェア・アプリケーションを実行する方法を含む、それらの動作方法を理解できるようにするために、多くの詳細が示されているが、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、機能ユニット、レジスタ・ファイル、メモリ・サブシステム、およびソフトウェア・アプリケーションを実行する方法を含む、それらの動作方法のさまざまな多くの実施形態が、それらの特定の詳細なしで実践されてよいということ、および特許請求の範囲および本発明が、本明細書において具体的に説明され、示された実施形態、アセンブリ、サブアセンブリ、構造、配置、メカニズム、機能ユニット、特徴、態様、プロセス、方法、技術、または詳細に限定されるべきでないということが、当業者によって理解されるであろう。さらに、本明細書に記載された特定の特徴、機能ユニット、メカニズム、構造、配置、実施形態、および態様は、さまざまな可能な組み合わせおよび並べ替えの各々において、他の説明された特徴、機能ユニット、メカニズム、構造、配置、実施形態、および態様と組み合わせて使用され得る。
【0018】
本明細書では、特に具体的に定義されない限り、すべての用語には、本明細書から暗示される意味、および当業者によって理解される意味、または辞書、論文などにおいて定義された意味、あるいはその両方を含む、最も広い可能な解釈が与えられる。本明細書および添付の特許請求の範囲において使用されるとき、単数形「a」、「an」、および「the」が、特に規定されない限り、複数の指示対象を含むということにも注意しなければならない。
【0019】
以下の説明では、当業者にとって明らかであるプロセッサ、マイクロプロセッサ・システム、メモリ・システム、およびシステム・アーキテクチャを含む、情報処理システムの従来の特徴を省略するか、または簡単にしか説明しない。当業者が、コンピュータ・システム、メモリ・システム、プロセッサの一般的なアーキテクチャ、および構成レジスタ・ファイルを含むレジスタ・ファイルに精通しているということが仮定される。番号付けされた要素が、その要素が導入された図に従って番号付けされ、通常は、後続の図を通じて、その番号によって参照されるということに注意する。
【0020】
本発明の好ましい実施形態における使用に適しているコンピューティング・システムまたはデータ処理システム100は、さまざまな形態をとってよく、そのうちの1つが
図1に示されており、
図1では、コンピューティング・システムまたはデータ処理(情報処理)システム100が、プログラム・コードを格納するか、または実行するか、あるいはその両方を行うために構成される。1つの実施形態では、情報処理システム100は、さまざまな形態をとることができ、一実施形態では、少なくとも1つのプロセッサ102を含んでよく、プロセッサ102は、
図1に示されているように、システム・バス106を介してメモリ・デバイスおよび入出力デバイスに直接的または間接的に結合されたコントローラであるか、またはコントローラの一部であってよい。
図1のコンピューティング・システム100は、プロセッサ102(中央処理装置(CPU:central processing unit)またはマイクロプロセッサとも呼ばれる)、ランダム・アクセス・メモリ(RAM:Random Access Memory)103、不揮発性メモリ104、デバイス固有の回路101、およびI/Oインターフェイス105と共に示されている。代替的または追加的に、RAM103または不揮発性メモリ104あるいはその両方は、プロセッサ102に含まれてよく、デバイス固有の回路101およびI/Oインターフェイス105も、プロセッサ102に含まれ得る。プロセッサ102は、例えば、既製のマイクロプロセッサ、カスタム・プロセッサ、フィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、個別のロジックなど、または一般に、命令を実行するための任意のデバイスを備えてよい。RAM103は、通常、可変データ、スタック・データ、実行可能命令などを保持するために使用され、ダイナミック・ランダム・アクセス・メモリ(DRAM:Dynamic Random Access Memory)を含んでよい。
【0021】
さまざまな手法によれば、不揮発性メモリ104は、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)、フラッシュ・プログラマブル読み取り専用メモリ(PROM:Programmable Read Only Memory)、バッテリー・バックアップRAM、ハード・ディスク・ドライブなどの、ただしこれらに限定されない、任意の種類の不揮発性メモリを含んでよい。不揮発性メモリ104は、通常、プロセッサ102に特定の機能を実行させるために実行され得るプログラミング命令を含んでいる、実行可能なファームウェアおよび任意の不揮発性データを保持するために使用される。
【0022】
一部の実施形態では、I/Oインターフェイス105は、プロセッサ102がコントローラの外部のデバイスと通信できるようにする通信インターフェイスを含んでよい。通信インターフェイスの例は、RS-232、USB(Universal Serial Bus:ユニバーサル・シリアル・バス)、小型コンピュータ・システム・インターフェイス(SCSI:Small Computer Systems Interface)、RS-422などのシリアル・インターフェイス、またはWi-Fi、Bluetooth、近距離無線通信(NFC:near-field communication)、もしくは他のワイヤレス・インターフェイスなどのワイヤレス通信インターフェイスを含んでよいが、これらに限定されない。コンピューティング・システム100は、ADI(Automation Drive Interface)などの任意の通信プロトコルで、通信インターフェイス105を介して外部デバイスと通信してよい。
【0023】
図2は、より大きいコンピュータ・システムの構造またはネットワークの一部であってよい、本発明の好ましい実施形態が実践され得る例示的な処理システム180を示している。処理システム180は、制御プロセッサ・システムまたはプロセッサ102を含んでおり、制御プロセッサ・システムまたはプロセッサ102は、メモリ制御ユニット(MCU:Memory Control Unit)140とインターフェイスをとるように構成されてよい少なくとも1つのプロセッサ・ユニット(CPU)125を含んでいる処理サブシステムである。マイクロプロセッサとも呼ばれるCPU125は、システム・コントローラ(図示されていない)からの読み取り要求、書き込み要求、および構成要求を処理するモジュールであってよい。CPU125は、マルチコア・プロセッサであってよい。MCU140は、メモリ・サブシステム103内の1つまたは複数のメモリ・デバイス(例えば、DRAM)(
図2に示されていない)との通信を制御する同期メモリ・コントローラ(MCS:memory controller synchronous)142(メモリ・コントローラとも呼ばれる)を含んでよい。MCU140およびMCS142は、1つもしくは複数の処理回路を含んでよく、または処理は、プロセッサ125によって、もしくはプロセッサ125と連動して実行されてよい。制御プロセッサ・システム102は、通信バス106を介してメモリ・サブシステム103と通信する。
【0024】
図3は、本開示が実践され得る実施形態に従って、プロセッサ102のブロック図を示している。プロセッサ102は、命令またはスレッドの1つまたは複数のストリームを実行するように構成されたパイプライン型プロセッサであってよい。スレッド(命令ストリームとも呼ばれる)は、特定のタスクを一緒に実行する命令のシーケンスまたは集合を含む。スレッドは、プロセッサ上で実行されている同じプログラムの異なる部分からの命令ストリームであってよく、もしくはプロセッサ上で実行されている異なるプログラムからの命令ストリームであってよく、またはこれらの組み合わせであってよい。1つの実施形態では、プロセッサは、マルチスレッド・プロセッサであってよく、スレッドを同時に処理してよい。
【0025】
1つの実施形態によれば、プロセッサ102は、メモリ202、命令キャッシュ204、命令フェッチ・ユニット206、分岐予測器208、処理パイプライン210、および行き先リソース220を含み得る。プロセッサ102は、コンピュータ・プロセッサ内に含まれるか、または他の方法でコンピュータ・システム内で分散されてよい。命令およびデータは、メモリ202に格納されることが可能であり、命令キャッシュ204は、メモリ202内の命令にアクセスし、フェッチされる命令(例えば、さまざまなスレッドの命令)をキャッシュ・メモリ204格納してよい。メモリ202は、キャッシュ・メモリなどの、任意の種類の揮発性または不揮発性メモリを含んでよい。メモリ202および命令キャッシュ204は、複数のキャッシュ・レベルを含むことができる。データ・キャッシュ(図示されていない)は、プロセッサ102に含まれてもよい。プロセッサ102は、複数のスレッドがプロセッサ102の機能ユニット(例えば、命令フェッチおよびデコード・ユニット、キャッシュ、分岐予測ユニット、および実行ユニット)を、好ましくは同時の方法で、共有することを許可するのが好ましい。
【0026】
図3では、命令フェッチ・ユニット206および処理パイプライン210の簡略化された例が示されている。さまざまな実施形態では、プロセッサ102は、1つまたは複数の処理パイプライン210および命令フェッチ・ユニット206を含んでよい。実施形態では、処理パイプライン210は、デコード・ユニット20、発行ユニット22、実行ユニット24、書き戻しロジック26、ロジック・レジスタ・マッパー(logical register mapper)28、履歴バッファ(例えば、保存および復元バッファ(SRB:Save & Restore Buffer)30)、および物理レジスタ・ファイル32を含んでいる。命令フェッチ・ユニット206または分岐予測器208あるいはその両方は、処理パイプライン210の一部であってもよい。処理パイプライン210は、エラー・チェックおよび処理ロジック、処理パイプライン210を通る1つまたは複数の並列経路、および現在または今後、従来技術において知られる他の特徴などの、他の特徴を含んでもよい。パイプラインは、分解されて、異なって示されてもよい。
図3では、プロセッサ102を通る前向き経路が示されているが、プロセッサ102の要素間に、他のフィードバック経路および信号伝達経路が含まれてよい。プロセッサ102は、他の回路、機能ユニット、およびコンポーネントを含んでよい。
【0027】
命令フェッチ・ユニット206は、デコード・ユニット20によってさらに処理ために、命令キャッシュ204から命令をフェッチする。デコード・ユニット20は、命令をデコードし、デコードされた命令、命令の一部、または他のデコードされたデータを、発行ユニット22に渡す。デコード・ユニット20は、分岐予測器208によって予測されなかった分岐命令を検出してもよい。デコード・ユニット20は、下でさらに詳細に説明される1つまたは複数の構成レジスタ250を含んでよい。発行ユニット22は、命令または他のデータを分析し、この分析に基づいて、デコードされた命令、命令の一部、または他のデータを、パイプライン210内の1つまたは複数の実行ユニット24に送信する。実行ユニット24は、実行ユニット24に発行された命令によって指定された動作を実行する。実行ユニット24は、固定小数点実行ユニット、浮動小数点実行ユニット、読み込み/格納実行ユニット、ベクトル・スカラー実行ユニット、または他の実行ユニット、あるいはその組み合わせなどの、複数の実行ユニットを含んでよい。物理レジスタ・ファイル32は、実行ユニット24のデータを保持する。ロジック・レジスタ・マッパー28は、ロジック・レジスタ・エントリ(Leg)と物理レジスタ・ファイル32内のエントリの間のマッピングを提供するエントリを含む。命令がロジック・レジスタ・エントリ(Leg)を読み取る必要がある場合、ロジック・レジスタ・マッパー28が、物理レジスタ・ファイル32内のどこでデータが特定され得るかの情報を発行ユニット22に提供し、発行ユニット22が、この情報を実行ユニット24に提供する。
【0028】
誤って予測された分岐命令または他の例外が検出された場合、誤って予測された分岐または例外の後の命令およびデータが破棄される(例えば、プロセッサ110のさまざまなユニットからフラッシュされる)。履歴バッファ(例えば、保存および復元バッファ(SRB)30)は、投機的レジスタおよび設計されたレジスタの両方の状態を含み、新しい命令がディスパッチされるときに、ロジック・レジスタ・ファイル・データをバックアップする。これに関して、新しい命令がフラッシュされ、古いデータが回復される必要がある場合に備えて、履歴バッファ30は、新しい命令がロジック・レジスタ・マッパー28からデータを削除するときに、ロジック・レジスタ・マッパー28からの情報を格納する。履歴バッファ(SRB)30は、新しい命令が完了するまで、格納された情報を維持する。履歴バッファ(SRB)30は、命令が正しいデータをどこで取得するべきかを知るように、ロジック・レジスタ・マッパー28内のポインタを更新して、ロジック・レジスタ・エントリの内容を履歴バッファ(SRB)30からロジック・レジスタ・マッパー28に復元するために、ロジック・レジスタ・マッパー28とインターフェイスをとり、例えば、プロセッサが、割り込み可能命令の前(例えば、分岐命令が誤って予測される前)に存在していた状態に戻される。
【0029】
書き戻しロジック26は、実行された命令の結果を行き先リソース220に書き戻す。行き先リソース220は、実行される命令またはデータのための、レジスタ、キャッシュ・メモリ、他のメモリ、他のデバイスと通信するためのI/O回路、他の処理回路、または任意の他の種類の行き先を含む、任意の種類のリソースであってよい。プロセッサ・パイプライン・ユニットのうちの1つまたは複数は、条件付き分岐命令の実行に関する情報を分岐予測器208に提供してもよい。
【0030】
命令は、一連の論理的なパイプライン化された段階で、プロセッサ102内で処理されてよい。しかし、本明細書の特許請求の範囲において制限が明確に示されない限り、段階のこの特定の分割が制限と見なされないように、これらの段階の機能が一緒にマージされてよいということが、理解されるべきである。実際に
図3では、理解を簡単にするために、段階の一部が単一の論理ユニットとして示されており、関連するさらなる詳細が下で提供される。
【0031】
特定の態様では、プロセッサ102は、複数の実行/処理スライスを含んでよく、各スライスは、
図3に示されたユニットのうちの1つまたは複数を含む。例えば、各処理スライスは、機能/実行ユニット24を含む、それ自身の処理パイプライン210を含んでよい。複数の処理スライスを含んでいるプロセッサ102は、複数の命令を同時に(例えば、各処理スライス内の1つの命令を1処理サイクルで同時に)実行することができ得る。複数の処理スライスを含んでいるそのようなプロセッサは、マルチスライス・プロセッサまたは並列スライス・プロセッサと呼ばれることがある。複数のスライスでの同時処理は、処理速度を大幅に速くし得る。シングルスレッド(ST:single-thread)モードでは、単一のスレッドが処理され、SMTモードでは、複数のスレッドが処理され、例えば、1つまたは複数の実施形態では、2つのスレッド(SMT2)または4つのスレッド(SMT4)が同時に処理される。
【0032】
情報処理システムおよびデータ処理システム、コンピュータ・システム、プロセッサ、またはデジタル論理システム、あるいはその組み合わせは、プロセッサの性能を最適化するが、例えば、サイドチャネル攻撃による攻撃に対してより脆弱になることによって、プロセッサのセキュリティを低下させる可能性もある、プロセッサの特徴または性能改善あるいはその両方を含むことができる。一部の環境下で、プロセッサがより高い性能レベル(例えば、性能モード)で動作するのが好ましいことがあり、他の環境では、プロセッサが、性能モードではなく、より高いセキュリティ・レベル(例えば、セキュア・モード)で動作するのが好ましいことがある。プロセッサの性能モードまたはセキュリティ・モードが固定され、起動時にファームウェアによって設定されるのではなく、プロセッサの動作中に、プロセッサがさまざまな性能モードまたはセキュリティ・モードを切り替えることができるように、プロセッサが動作するモードを、動的に制御することができる場合、好ましく有益である。
【0033】
加えて、プロセッサ内で設定された異なる特権レベルの異なる制御アスペクトに対して、異なる性能動作モード/セキュリティ動作モードを設定し、構成することができる場合、有益である。例えば、再起動が必要とされないように、プロセッサの動作中に、異なる特権レベルまたは状態の異なる制御アスペクトに対して、異なるセキュア動作モード/性能動作モードを動的に設定し、変更することができる場合、有利である。例えば、ハイパーバイザが論理パーティション全体に対する特定のセキュアな構成またはモードを要求できるなど、異なるセキュリティ構成を大きい粒度で強制する(enforce)ことができる場合、さらに有利である。動的制御のためのシステムまたはメカニズムが、より低い特権レベルでの望ましい動的制御に関係なく、プロセッサの動作のセキュアな構成またはモードの強制を許可する場合、有益かつ有利である。
【0034】
実施形態では、プロセッサの制御アスペクトごとのセキュリティ・モード/性能モードの動的制御が提供される。1つまたは複数の実施形態では、プロセッサの特権レベル(特権状態とも呼ばれる)ごとに、プロセッサの異なるセキュリティ動作モード/性能動作モードが確立され得る。実施形態では、制御アスペクトごと、または特権レベルごと、あるいはその両方の、セキュア・モード/性能モードの動的制御が、ソフトウェアによって実現される。さらなる実施形態では、より高い特権レベル/状態が、より低い特権レベルに対して、好ましいか、または望ましいセキュリティ・モード/性能モード設定を強制するか、または抑制することができる。例えば、すべてのより低い特権レベルまたは状態に対して、プロセッサにおけるより高い特権レベルのセキュア・モードが強制され得る。実施形態では、さまざまな特権状態のセキュリティ・モード/性能モードの動的制御のためのシステムおよび技術は、各特権状態またはレベルが、その特権レベルでの制御アスペクトごとの性能モード/セキュリティ・モードを知ることも可能にし、より高い特権レベルまたは状態によってセキュリティ・モードが強制されていない限り、その特権レベルの下の各特権レベルの制御アスペクトごとの性能モード/セキュリティ・モードを制御する能力も可能にする。
【0035】
1つまたは複数の実施形態では、プロセッサの動的制御を提供するため、およびより詳細には、プロセッサの性能動作モードまたはセキュア動作モードの動的制御を提供するために、構成レジスタが使用され得る。コンピューティング・システム、プロセッサ、およびデジタル論理システムは、多くの場合、ソフトウェア・プログラムから読み取られるか、または書き込まれてよいレジスタを含む。最近の集積回路に基づくレジスタは、通常、複数のポートを含むスタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)を使用して実装される。レジスタは、通常、専用の読み取りポートおよび書き込みポートを含む。レジスタは、例えば、データ・レジスタ、アドレス・レジスタ、汎用レジスタ、状態レジスタ、および構成レジスタなどの、ユーザアクセス可能なレジスタであることができる。1つの態様では、レジスタは、実施形態ではメモリ・マップ内のアドレスを有する、実データ・ストレージ位置または仮想データ・ストレージ位置である。1つの例では、レジスタ・ファイルは、プロセッサ(CPU)内のプロセッサ・レジスタのアレイであることができる。これらのレジスタの一部、またはレジスタの部分(例えば、レジスタ・エントリ)は、構成レジスタである。プロセッサの動作モード(例えば、セキュア・モードまたは性能モード)の動的制御を提供するために利用される構成レジスタは、通常、プロセッサ内にあり、1つまたは複数の実施形態では、プロセッサのデコード・ユニット内にあるが、構成レジスタは他の位置にあることができる。
【0036】
1つまたは複数の実施形態では、プロセッサにおいて、特権レベルごと、アスペクトごとに、性能モード/セキュリティ・モード設定が、プロセッサの動作中に、好ましくはソフトウェアによって、動的に制御され、変更され得る。プロセッサにおいて、最低の特権レベルを除く、各特権レベルまたは状態のプロセッサのアスペクトごとに、実施形態では、そのアスペクトのセキュリティ・モード/性能モードを定義して制御するために使用される、構成レジスタ(または2つの構成レジスタ)内のエントリの2つのフィールドが提供されている。構成レジスタ・フィールド(または構成レジスタ)のうちの1つは、特権状態レジスタ(PRVS)と呼ばれ、その特権レベルのアスペクトごとの特権モードに対応し、特権モードを制御する。他の構成レジスタ・フィールド(または構成レジスタ)は、下位強制レジスタ(ENFB)と呼ばれ、実施形態では、その特定の特権レベルが、その特定の特権レベルより低い特権レベルに対して強制したいセキュリティ・モード/性能モードを、制御アスペクトごとに提供する。1つまたは複数の実施形態では、ENFB構成レジスタへのフィールドまたはエントリは、その特権状態もしくはレベル、またはより高い特権状態もしくはレベルのみから書き込み可能であるが、ENFB構成レジスタへのフィールドまたはエントリは、すべての特権レベルから読み取り可能である。実施形態では、各特権レベルの制御アスペクトごとの性能モード/セキュリティ・モードの最終的な制御は、その特権レベルのPRVSエントリ内のその制御アスペクトのビット、および制御されている特権レベルの上のすべての特権レベルでの対応する制御アスペクトのENFBビットのOR値である。
【0037】
ここで、構成レジスタ250のブロック図である
図4を参照する実施形態に関して、プロセッサの動作モード(例えば、セキュリティ・モードまたは性能モード)の動的制御が説明される。構成レジスタ250は単一の構成レジスタとして示されているが、構成レジスタが一連の個別の構成レジスタであることができるということ、および
図4が、単に例示を目的とする実施形態例であるということが理解され得る。構成レジスタ250は、プロセッサによって利用される特権レベルの数に対応する、複数の特権レベルまたは状態455を含むように構成される。プロセッサが「n」個の特権レベルまたは状態を有している場合、構成レジスタ250は、通常、一致する数の「n」個の特権レベルまたは状態455を含む。
図4の例では、構成レジスタは、特権レベル0~「n-1」として示された「n」個の特権レベル455を含んでおり、特権レベル0が最高の特権レベルであり、特権レベル「n-1」が最低の特権であり、構成ファイル250は変化することができる。1つまたは複数の実施形態では、プロセッサまたは構成ファイル250あるいはその両方の各特権レベル455は、制御され得る性能モード/セキュリティ・モードの「m」個のアスペクト480を含む。
図4で、構成レジスタ250は、制御アスペクト0~「m-1」として示された「m」個の制御アスペクト480を含んでいる。
【0038】
実施形態では、最低の特権レベル455[n-1]を除く各特権レベル455は、エントリの2つのフィールドである下位強制フィールド460(ENFB、ENFBフィールド、またはENFBレジスタとも呼ばれる)および特権エントリ・フィールド470(PRVS、PRVSフィールド、またはPRVSレジスタとも呼ばれる)を含んでいる。各PRVSフィールド470は、その特定の特権レベル455[k]のセキュリティ・モード/性能モードに関する制御情報を提供し、[k]は特権レベル455を表す。各PRVSフィールド470は、制御または変更され得るプロセッサの制御アスペクト480[j]ごとの制御ビットを保持するための1つまたは複数のエントリ472を含み、[j]は特定の制御アスペクト480を表す。1つまたは複数の実施形態では、各ENFBフィールド460は、現在の特権レベル455[k]が現在のレベルの下のすべての特権レベル455(例えば、特権レベル455[k-1]など)に対して強制したいセキュリティ・モード/性能モードを提供する、制御アスペクト480[j]ごとの制御ビットを保持するために、1つまたは複数のエントリ462を含む。実施形態では、特権レベル455ごとに、構成レジスタ250内の各ENFBフィールド460およびPRVSフィールド470は、プロセッサの制御アスペクト480[0]~480[m-1]ごとの1ビットのエントリ462または472、およびアスペクトの番号480を含み、したがって、各ENFBフィールド460およびPRVSフィールド470内のENFBエントリ462およびPRVSエントリ472の番号は、同じである。制御アスペクト480ごとの、ENFB460およびPRVS470の各々に含まれる各エントリ462および472内の「1」は、そのアスペクト480のセキュリティ・モードが設定または構成されているということを示し、一方、「0」は、そのアスペクト480の性能モードが設定または構成されているということを示す。ENFBフィールド460内の制御アスペクト480[0]~480[n-1]は、PRVSフィールド470内の同じアスペクト480[0]~480[n-1]に対応する。
【0039】
実施形態では、最低の特権レベル455(例えば、特権レベル(n-1))は、制御アスペクト480ごとにPRVSフィールド470のみを含み、実施形態では、ENFBフィールド460およびPRVSフィールド470の両方に先行する。プロセッサに、「n」個の特権レベルまたは状態455および「m」個のセキュリティ/性能制御アスペクト480が存在する場合、実施形態では、構成レジスタ内に、合計で2(n-1)m+m個またはm(2n-1)個の最大のフィールド・エントリおよび2m(nー1)個の最小のフィールド・エントリが存在する。
図4は、実施形態での構成レジスタ250の設定を示しており、「n」個の特権レベル0~n-1および「m」個のセキュリティ/性能制御アスペクト0~m-1が存在している。さまざまな方法で使用され、書式設定される複数の構成レジスタが存在することができる。例えば、特権レベルごとに、別々のENFBレジスタまたは別々の構成PRVSレジスタあるいはその両方が存在することができ、または代替として、各特権レベルは1つのレジスタを含むことができ、各レジスタが、2つのフィールド(ENFBレジスタ・フィールドおよびPRVSレジスタ・フィールド)を含む。
【0040】
制御/構成レジスタ250のENFBフィールド460およびPRVSフィールド470内の異なるビット値を識別するための用語は、ENFB[k][j] PRVS[k][j]によって表されることが可能であり、特権レベルが[k]によって識別され、セキュリティ/性能制御アスペクトが[j]によって識別される。ロジックは、制御/構成レジスタ250およびプロセッサの挙動を定義する、1つまたは複数のアクセス・ルールおよび制御ルールを提供する。1つまたは複数の実施形態では、ENFB460およびPRVS470の制御アスペクト・ビット[j]は、プロセッサの動作中にいつでも書き込まれることが可能であり、通常はシステムの再起動を必要としない。例えば、ENFB460およびPRVS470の各々の制御アスペクト・ビットjは、アプリケーションの実行が開始するときに書き込まれ得る。ENFB460およびPRVS470の制御アスペクト・ビットは、システムの再起動時、周期的間隔、既定の時間、または任意の他の時間を含む、他のときに書き込まれることも可能である。
【0041】
1つまたは複数のアスペクト内のENFB460およびPRVS470の制御アスペクト・ビット[j]は、プログラム可能であることができ、さまざまなときに書き込まれるように(かつ、システムの再起動を必要としないように)構成されることが可能であるが、ENFB460およびPRVS470の制御アスペクト・ビット[j]は、1つまたは複数のルールに従って書き込まれ得る。すなわち、1つまたは複数の実施形態では、ENFB460およびPRVS470内の制御アスペクト・ビット[j]の性能モード/セキュリティ・モードを設定することは、1つまたは複数の制御ルールによって制御される。実施形態では、特権レベルkでのENFB[k]460の場合、ENFB[k][j]のすべての制御アスペクト・ビット[j]は、特権レベル[k]および任意のより高い特権レベルによって書き込み可能であり、特権レベル[k]でのPRVS470の場合、PRVS[k][j]のすべての制御アスペクト・ビット[j]は、特権レベル[k]および任意のより高い特権レベルによって書き込み可能である。すなわち、実施形態では、より低い特権レベル[k]は、より高い特権レベル[k-1]のENFB460の制御アスペクト・ビット[j]を書き込むことができず、より低い特権レベル[k]は、より高い特権レベル[k-1]のPRVS470の制御アスペクト・ビット[j]を書き込むことができない。
【0042】
プロセッサ102またはコンピューティング・システム100の動作中に、ENFB460およびPRVS470の制御アスペクト・ビット[j]は、1つまたは複数の実施形態では、プロセッサの動作中の、さまざまなとき、プログラム可能な時間、または既定の時間に、読み取られることが可能であり、構成レジスタ250の読み取りは、再起動を必要としない。1つまたは複数の実施形態では、構成レジスタは、処理中に複数回読み取られ、実施形態では、アプリケーションの開始時に読み取られる。制御アスペクト・ビット[j]は、複数の異なる時間に読み取られ得るが、ENFB460およびPRVS470の異なる特権レベルを読み取る能力は、1つまたは複数の実施形態では、アクセス・ルールのセットによって制御される。1つまたは複数の実施形態では、ENFB[k]460のすべての制御アスペクト・ビット[j]は、任意の特権レベル455[0]~455[n-1]によって読み取り可能であり、代替の実施形態では、ENFB460のすべての制御アスペクト・ビットは、あらゆるより低い特権レベルによって読み取り可能である。PRVS470のすべての制御アスペクト・ビット[j]は、現在の特権レベル[k]および任意のより高い特権レベルのみによって読み取り可能である。
【0043】
1つまたは複数の実施形態では、プロセッサは、特権レベル[k]の下の任意の特権レベルに対して、制御アスペクト[j]に関してプロセッサの挙動(例えば、セキュリティ動作モード/性能動作モード)を制御しようとするときに、任意の特権レベル[k]のENFB460内のENFB[k][j]を書き込むことになる。「1」またはハイ・ビットがENFB[k][j]に書き込まれた場合、プロセッサは、特権レベルkの下のすべての特権レベル(例えば、特権レベル455[k-1]、455[k-2]など)に対してアスペクト[j]の挙動のセキュア・モードを強制し(セキュア・モードで動作し)、「0」またはロー・ビットがENFB[k][j]に書き込まれた場合、プロセッサは、レベル[k]の下の任意の特権レベルでの制御アスペクト480[j]の挙動(例えば、セキュア・モード/性能モード)に対する特権レベルkの制御を放棄する。1つまたは複数の実施形態では、プロセッサは、特権レベル[k]の下の任意の特権レベルに対して、制御アスペクト[j]に関してそれ自身のレベル(例えば、特権レベルk)の挙動(セキュリティ動作モード/性能動作モード)を制御しようとするときに、任意の特権レベルkのPRVS470内のPRVS[k][j]を書き込むことになる。「1」またはハイ・ビットがPRVS[k][j]に書き込まれた場合、プロセッサは、それ自身の特権レベル(例えば、特権レベルk)に対してセキュア動作モードを強制し、「0」またはロー・ビットがPRVS[k][j]に書き込まれた場合、プロセッサは、より高い特権レベル[k]がセキュア・モードを強制していないという条件で、特権レベルkに対してそれ自身の性能モードを強制する。
【0044】
特権レベル[k]およびアスペクト[j]の制御値は、実施形態では、PRVS[k][j]またはENFB[k-1][j]またはENFB[k-2][j]または...またはENFB[0][j]として表され得る。kの上の任意の特権レベルは、ENFB[k-1][j]~ENFB[0][j]を介して、値1=セキュア・モードを強制することができる。特権レベル[k]の上のいずれかの特権レベルによって動作モード(例えば、セキュア・モード)が強制されない場合、特権レベルkまたはより高い特権レベルのいずれかによって、アスペクト[j]のPRVS[k][j]ビットを設定することによってセキュア・モード/性能モードが設定/選択され得る。
【0045】
図5は、特権レベル[k]の制御アスペクト[j]のセキュア・モードまたは性能モードを決定するために制御ルールを適用する例が利用される実施形態に従って、制御レジスタの例を示している。
図5の例では、PRVS[k][j](PRVS470内の黒いボックス575)またはENFB[k-1][j](図示されていない)または...またはENFB[1][j](ENFB460内の縞模様のボックス565)またはENFB[0][j](ENFB460内の縞模様のボックス566)の値によって、特権レベル[k]のアスペクト[j]の制御が決定される。したがって、特権レベル[k]の制御アスペクト[j]の性能モードまたはセキュア・モードの制御は、PRVS[k][j]またはENFB[k-1][j]~ENFB[0][j]として表され得る。
【0046】
図6は、実施形態に従って、コンピュータ実行方法、ならびにより詳細には、プロセッサの動作モードを動的に制御する方法、および具体的には、プロセッサがよりセキュアなモードまたはより性能を重視するモードのどちらで動作して命令を実行するかを動的に制御する方法を例示し、説明する例示的なフローチャートである。方法600は便宜のために説明されており、一連のステップおよび/または複数のステップを含むものとして本開示を制限することを意図していないが、プロセス600が一連のステップとして実行される必要はなく、および/または、
図6に関して示され、説明された順序でステップが実行される必要はなく、プロセスが統合されてよく、および/または、1つまたは複数のステップがまとめて同時に実行されてよく、あるいはステップが、開示された順序または別の順序で実行されてよいということが、理解されるべきである。
【0047】
1つまたは複数の実施形態では、アプリケーションが呼び出されるときに、通常は、ENFBレジスタおよびSRVSレジスタの両方のすべてのエントリ内のすべてのビットが、どの位置でも性能モードに初期化され、例えば、すべての特権レベル(特権レベル455[0]~455[n])でのすべての制御アスペクト(制御アスペクト480「0」~480「m」)のENFBフィールド/レジスタおよびPRVSフィールド/レジスタ内のビットが、「0」に設定される。ある時点で、プロセッサにおける動作中(例えば、アプリケーションの実行中)に、特権レベル[k]、または特権レベル[k]での制御アスペクト[j]に対して、セキュア・モードまたはセキュアな構成が保証されるか、望まれるか、要求されるか、または必要とされる。
図6は、プロセッサにおける特権レベル[k]の性能構成をセキュア・モードに変更し(好ましくは、アプリケーションまたはシステムを再起動せずに、動的に変更し)、さらなる実施形態では、プロセッサにおける特権レベル[k]での制御アスペクト[j]の性能構成をセキュア・モードに変更する、方法600の実施形態を示している。セキュア・モードに変更する方法600が、特権レベル全体に基づいて(例えば、特権レベルごとに)、またはさらに細かい粒度で、特権レベルでの単一の制御アスペクトに基づいて(例えば、特定の特権レベル内の制御アスペクトごとに)、実行され得るということが理解されるべきである。方法600は、特権レベル内の制御アスペクトに基づいて、性能モードからセキュア・モードに変更することに関して説明される。このプロセスが特権レベルに基づいて実行されることも可能であるということが、理解され得る。
【0048】
605で、特権レベル[k]が、セキュア動作モードへの変更を開始する。610で、その特権レベル[k]の制御アスペクト[j]に対してセキュア・モードが強制されるべきかどうかが判定される。特権レベル[k]での制御アスペクト[j]が強制されるべきである場合(610の「はい」)、プロセスが615に進み、615で、特権[k]での制御アスペクト[j]のビット・フィールドが「1」に設定されているかどうか(言い換えると、PRVS[k][j]=1であるかどうか)がチェックされる。特権レベル[k]での制御アスペクト[j]が「1」に設定されていない場合(615の「いいえ」、PRVS[k][j]=0)、620で、PRVSレジスタ内の特権レベル[k]での制御アスペクト・エントリ[j]が「1」に設定され(書き込まれ)(例えば、PRVS[k][j]=1を設定し)、プロセスが625に進む。特権レベル[k]での制御アスペクト[j]が「1」に設定されている場合(615の「はい」、PRVS[k][j]=1)、プロセスが620をスキップして、625に進む。
【0049】
625で、特権レベル[k]より低いすべての特権レベルの制御アスペクト[j]に対してセキュア・モードを強制するかどうかが判定される。すなわち、すべてのより低い特権レベル[k+1]~[n]の制御アスペクト[j]に対してセキュア・モードを強制するかどうかが判定され、「n」は最低の特権レベルである。いずれかのより低い特権レベルで、制御アスペクト[j]に対してセキュア・モードが強制されない場合(625の「いいえ」)、630に示されているように、プロセス600が完了する。一方、より低い特権レベルでの制御アスペクト[j]に対してセキュア・モードが強制されるということが決定された場合(625の「はい」)、プロセスが635に進み、635で、ENFBレジスタの特権レベル[k]での制御アスペクト[j]が「1」であるかどうかが判定される。言い換えると、625が「はい」であり、より低い特権レベルに対してセキュア・モードが強制される必要がある場合、635で、ENFB[k][j]が1に設定されているか、または1に等しいかどうかが判定される。ENFBレジスタ・フィールド内のより低い特権レベルの制御アスペクト[j]が1に設定されている場合(635の「はい」)(すなわち、ENFB[k][j]=1)、640に示されているように、プロセス600が完了する。より低い特権レベルでの制御アスペクト[j]が1に設定されていないということが決定された場合(635の「いいえ」)(すなわち、ENFB[k][j]=0)、プロセス600が645に進む。
【0050】
645で、特権レベル[k]より低い特権レベルでの制御アスペクト[j]について、特権レベル[k]のセキュリティ・モード/性能モードの制御に関してポリシーが検索される。650で、特権レベル[k]での制御アスペクト[j]のポリシーが、より低い特権レベルでのアスペクト[j]に対してセキュアな構成を強制することを許可するかどうかが判定される。650で、ポリシーが、より低い特権レベル(例えば、特権レベル[k]より低い特権レベル)での制御アスペクト[j]に対してセキュアな構成を強制することを許可しないということが決定された場合(650の「いいえ」)、655に示されているように、プロセス600が完了する。ポリシーが、より低い特権レベルでの制御アスペクト[j]に対してセキュア・モードまたはセキュアな構成を強制することを許可する場合(650の「はい」)、プロセスが660に続き、660で、ENFBレジスタ内の特権[k]での制御アスペクト[j]が「1」に設定される。言い換えると、660で、ENFB[k][j]が1(ENFB[k][j]=1)に設定される。その後、665に示されているように、特権レベル[k]での制御アスペクト[j]を変更するためのプロセスが完了する。
【0051】
ある時点で、例えば、ソフトウェア・アプリケーションの実行中に、プロセッサにおいて、特権レベル[k]、または特権レベル[k]での制御アスペクト[j]に対して、性能モード(性能構成)が保証されるか、望まれるか、要求されるか、または必要とされる。例えば、環境がセキュア動作モードを保証することができ、セキュア・モードで動作することが、有益かつ有利であることがあるため、プロセッサは、1つまたは複数の特権レベル[k]、または特権レベル[k]での1つまたは複数の制御アスペクト[j]、あるいはその両方で、セキュア・モードで動作し、ソフトウェア・アプリケーションを実行することができ、ソフトウェア・アプリケーションは、プロセッサが性能モードで動作することを望むか、またはそのような動作をトリガーするか、あるいはその両方を行うことができる。
図7は、プロセッサにおける特権レベル[k]でのセキュア・モードを性能モードに変更する(好ましくは、アプリケーションまたはシステムを再起動せずに、動的に変更する)プロセス、およびさらなる実施形態では、プロセッサにおける特権レベル[k]での制御アスペクト[j]のセキュア動作モードを性能モードに変更するプロセスを引き起こす方法700の実施形態を示している。性能モードに変更する方法700が、特権レベル全体に基づいて(例えば、特権レベルごとに)、またはさらに細かい粒度で、特権レベルでの単一の制御アスペクトに基づいて(例えば、特定の特権レベル内の制御アスペクトごとに)、実行され得るということが理解されるべきである。方法700は、特権レベル内の制御アスペクトに基づいて、セキュア・モードから性能モードに変更しようとするプロセスに関して説明される。1つまたは複数の実施形態では、例えば、より高い特権レベルがより低い特権レベルの制御アスペクトに対してセキュア動作モードを強制する場合、プロセッサは、性能モードに変更することができない。
【0052】
705で、特権レベル[k]は、アスペクト[j]の性能動作モードに変更する必要がある。710で、PRVSレジスタ内の特権レベル[k]での制御アスペクト[j]のPRVSレジスタ・フィールドが「0」に設定されているかどうか(言い換えると、PRVS[k][j]=0であるかどうか)が判定される。特権レベル[k]での制御アスペクト[j]が「0」に設定されている場合(710の「はい」、PRVS[k][j]=0)、プロセス700が720に続く。710で、PRVSレジスタ内の特権レベル[k]での制御アスペクト・エントリ[j]が「0」に設定されていない(書き込まれていない)場合(710の「いいえ」)(例えば、PRVS[k][j]=1)、プロセス700が715に進む。すなわち、特権レベル[k]での制御アスペクト[j]が「1」に設定されている場合(710の「いいえ」、PRVS[k][j]が0でない)、プロセス700が715に進み、715で、特権レベル[k]での制御アスペクト・エントリ[j]のPRVSレジスタ・フィールド内のビットが「1」に設定される(書き込まれる)。715の後に、プロセス700が720に進む。
【0053】
720で、特権レベル[k]の上のすべての特権レベル(すなわち、特権レベル[k-1]~特権レベル0のすべて)での制御アスペクト[j]のENFBレジスタ・フィールドが「0」に設定されているかどうかが判定される。特権レベル[k]の上のすべての特権レベルでの制御アスペクト[j]のENFBレジスタ・フィールドがゼロに設定されているということが決定された場合(720のはい、ENFB[p][j]=0、p=特権レベル(k-1)~0)、特権レベル[k]での制御アスペクト[j]に対して、性能モードが実施(有効化)され得る。特権レベル[k]より高いすべての特権レベルの制御アスペクト[j]のENFBレジスタ・フィールドが0に設定されていない場合(720の「いいえ」、ENFB[p][j]=1、p=特権レベル(k-1)~0)、プロセスが730に進み、730で、システム・コールが、より高い特権レベルp(p=特権レベル[k-1]~特権レベル0)ごとに、制御アスペクト[j]の性能モードの許可を要求するか、または制御アスペクト[j]の性能モードを許可するかどうかをチェックする。これに関して、プロセス700は、特権レベル[k]より高い各特権レベルの特権レベルごとに、720、730、735、740、745、および750を実行する。
【0054】
より詳細には、730で、特権レベル[k]のすぐ上の特権レベルである特権レベル[kー1]について、システム・コールは、特権レベル[kー1]が制御アスペクト[j]の性能モードを許可することを要求するか、または許可するかどうかをチェックする。プロセス700が735に進み、735で、より低い特権レベルでの制御アスペクト[j]のセキュア動作モードまたは性能動作モードに対する制御を決定するために、特権レベル[kー1]に関してポリシーが検索される。740で、特権レベル[k-1]のポリシーが、より低い特権レベルの制御アスペクト[j]の性能モードを許可するかどうかが判定される。740で、特権レベル[k-1]のポリシーが、性能モードがより低い特権レベルの制御アスペクト[j]に使用されることを許可しない場合(740のいいえ)、745で、特権レベル[k]での制御アスペクト[j]の性能モードが許可されない。プロセッサは、特権レベル[k]での制御アスペクト[j]のセキュア動作モードにとどまる。
【0055】
740で、制御アスペクト[j]の特権レベル[k-1]のポリシーが、より低い特権レベル(例えば、特権レベル[k])に対して性能モードが有効化されることを許可するということが決定された場合(740の「はい」)、750で、ENFB[k-1][j]が「0」に設定される。750の後に、プロセスが720に戻り、720で、次に最も高い特権レベル[k-2]の制御アスペクト[j]のENFBレジスタ・フィールドが「0」に設定されているかどうかが判定され、特権レベル[k-2]での制御アスペクト[j]のENFBフィールド・レジスタがゼロ(「0」)に設定されていない場合、プロセス700は、特権レベル[k-1]~特権レベル0(最高の特権レベル)のすべてについてプロセスのステップ730~750が実行されるまで、次に最も高い特権レベルのためにステップ720に戻り、特権レベル[k-2]に対してステップ730、735、740、745、および750を繰り返す。最高の特権レベル(特権レベル0)がチェックされた後に、750で、特権レベル0での制御アスペクト[j]のENFBレジスタ・フィールドが「0」(ENFB[0][j]=0)に設定され、プロセスが720に戻り、720で、ENFB[k][j]=0であることが決定され、プロセスが725に進み、725で、特権[k]での制御アスペクト[j]の性能モードが有効化される。
【0056】
ハイ・ビット(すなわち、「1」)を使用してセキュア・モードが設定される設計の構成および動作に関してシステムおよびプロセス説明されたが、ハイ・ビット(ビット=1)を使用して性能モードが設定されることが可能であり、ロー・ビット(ビット=0)を使用してセキュア・モードが設定されることが可能であるということが理解され得る。プロセッサまたはソフトウェア・アプリケーションの呼び出しが、ENFBレジスタ・フィールドおよびPRVSレジスタ・フィールド内の値をセキュア・モードに初期化できるということも、理解され得る。
【0057】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0058】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号などの,それ自体が一過性の信号であると解釈されるべきではない。
【0059】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0060】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードもしくはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上もしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
【0061】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0062】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0063】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれ、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【0064】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0065】
さらに、さまざまな実施形態に従うシステムは、プロセッサ、およびプロセッサに統合されたロジックまたはプロセッサによって実行可能なロジックあるいはその両方を含んでよく、このロジックは、本明細書において列挙された処理ステップのうちの1つまたは複数を実行するように構成される。統合されるということは、プロセッサにロジックが、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのハードウェア・ロジックとして組み込まれるということである。プロセッサによって実行可能であるということは、ロジックが、プロセッサによってアクセス可能なハードウェア・ロジック、ソフトウェア・ロジック(ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部など)など、またはハードウェア・ロジックおよびソフトウェア・ロジックの何らかの組み合わせであり、プロセッサによって実行されたときに何らかの機能をプロセッサに実行させるように構成されているということである。ソフトウェア・ロジックは、従来技術において知られた任意のメモリ・タイプの、ローカルまたはリモートあるいはその両方のメモリに格納されてよい。ASIC、FPGA、中央処理装置(CPU)、集積回路(IC:integrated circuit)、グラフィック処理装置(GPU:graphics processing unit)といった、ソフトウェア・プロセッサ・モジュールまたはハードウェア・プロセッサあるいはその両方などの、従来技術において知られた任意のプロセッサが使用されてよい。
【0066】
上で提示された説明から複数の組み合わせを作成して、前述のシステムまたは方法あるいはその両方のさまざまな特徴が任意の方法で組み合わせられてよいということが明らかである。
【0067】
本発明の実施形態が、サービスをオンデマンドで提供するように顧客のために展開されるサービスの形態で提供されてよいということがさらに理解されるであろう。
【0068】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲および思想から逸脱しない多くの変更および変形が、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、もしくは市場で見られる技術を超える技術的改良を最も良く説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【国際調査報告】