(57)【要約】【課題】新式のマシンが旧式のマシンと同じアーキテクチャデータを有し、（たとえば、ＩＳＡで定義された命令をロード及び記憶するといった）記憶されたステータスデータにアクセスするために旧式のマシンを「理解する」ことができる場合でさえも、旧式のソフトウェアが新式のマシンで適切に実行しない場合がある。【解決手段】本発明の実施の形態によれば、データ処理マシンを動作するための方法が記載され、ここでマシン状態に関するデータは、ストレージにおけるロケーションに書き込まれる。ロケーションは、マシンについて書き込まれるソフトウェアにアクセス可能なロケーションである。書き込まれたステータスデータがエンコードされる。このステータスデータは、デコードプロセスに従ってストレージから回復される場合がある。【選択図】図１
2011076632.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに結合される公的にアクセス可能な記憶手段とを備えるコンピュータシステムであって、
前記プロセッサは、該プロセッサのプライベートステータスを示すデータエレメントがエンコードされる必要があると判定したときに前記データエレメントをエンコードし、前記プロセッサによる前記判定に応答して発生されるアドレス値をエンコードし、エンコードされたデータエレメントを、前記記憶手段における前記アドレス値に対応する位置に記憶し、
前記プロセッサは、エンコードされたアドレス値をデコードし、前記記憶手段における前記アドレス値に対応する位置から前記エンコードされたデータエレメントを読み出し、前記記憶手段の前記位置から読み出された前記エンコードされたデータエレメントをデコードすることで、前記エンコードされたデータエレメントをデコードする、
ことを特徴とするコンピュータシステム。
【請求項２】
プロセッサと、前記プロセッサに結合された公的にアクセス可能な記憶手段とを有するコンピュータシステムの動作方法であって、
当該方法は、
該プロセッサのプライベートステータスを示すデータエレメントがエンコードされる必要があると判定したときに、前記データエレメントを前記プロセッサがエンコードし、前記プロセッサによる前記判定に応答して発生されるアドレス値を前記プロセッサがエンコードして、エンコードされたデータエレメントを、前記記憶手段における前記アドレス値に対応する位置に記憶するステップと、
エンコードされたアドレス値を前記プロセッサがデコードし、前記記憶手段における前記アドレス値に対応する位置から前記エンコードされたデータエレメントを前記プロセッサが読み出し、前記記憶手段の前記位置から読み出された前記エンコードされたデータエレメントを前記プロセッサが前記デコードすることで、前記エンコードされたデータエレメントをデコードするステップと、
を含むことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態のうちの幾つかは、プロセッサがコンピュータシステムのストレージからステータスデータをどのように読取り、コンピュータシステムのストレージにステータスデータをどのように書き込むかに関する。他の実施の形態も記載される。
【背景技術】
【０００２】
各種設計の考慮により、プロセッサのなかには公的にアクセス可能なストレージ“publicly-accessible  storage”における領域にプライベートステータスデータ“private-state  data”を書き込む場合がある。このプライベートステータスのフォーマット、セマンティクス及びロケーションは、設計の実現の間で変動する場合がある。プロセッサを記載する文献では、かかるストレージ領域は、これらのコンテンツがプライベートステータスを含むために読取り又は変更されるべきではないことを示す“ＲＥＳＥＲＶＥＤ”として記録されることがある。残念なことに、このデータは公的にアクセス可能なストレージに書き込まれるため、ソフトウェアアプリケーション、オペレーティングシステム又は外部エージェント（たとえば入力−出力装置）は、ストレージ領域にアクセスし、そこに記憶されているプライベートステータスを不適切に使用する場合がある。かかる承認されないエンティティによる、このプライベート状態へのアクセス及び使用は、プロセッサ及びプラットフォーム製造業者及びエンドユーザのとって誤った影響及び／又は望まれない影響につながる場合がある。
【特許文献１】PCT/US2004/038734,  “Accessing  private  data  about  the  state  of  a  data”
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明の実施の形態は、例示により説明され、添付図面における図における制約によって説明されず、添付図面では、同じ参照符号は同様のエレメントを示す。なお、この開示における本発明の「ある」実施の形態に対する参照は、同じ実施の形態に対して必ずしも必要ではなく、少なくとも１つを意味している。
【０００４】
メモリのようなストレージに書き込まれたとき、プロセッサの状態は、プロセッサの動作の間、２つのタイプの情報又はデータを含む場合がある。１つのタイプは、ここではアーキテクチァデータ“architectural  data”と呼ばれ、他方は、実現に特化したデータと呼ばれる（“private  data”又は“private-state  data”ともここでは呼ばれる）。
【０００５】
アーキテクチャデータは、製造業者により指定されたような所与のクラスの全てのプロセッサに共通である状態情報であり、すなわちハードウェアとソフトウェアの間で同じ高水準のインタフェースを実質的に有している。このインタフェースは、ＩＳＡ（Instruction  Set  Architecture）と呼ばれる。各種のプロセッサの実現で同じＩＳＡの使用により、変更されない後の実現での実行するための１つの実現について明示的に書き込まれるソフトウェアの能力を容易にする。
【０００６】
ＩＳＡは、プロセッサで実行されているソフトウェアで利用可能な状態、そのフォーマット及びセマンティクス、及び利用可能なオペレーションインタフェース（たとえばインストラクション、イベント）を定義する。このＩＳＡ仕様の一部は、その動作を容易にするため、プロセッサがマシンのストレージ（たとえばメモリ）における１以上の領域をどのように使用するかを示す。これらのストレージ領域は、プロセッサがあるデータ処理マシン（たとえば、入力−出力装置等）におけるソフトウェア及び他の装置にアクセス可能な場合がある。プロセッサは、アーキテクチャ及びプライベートステータスデータの両者を記憶するため、これらのストレージ領域を使用する。
【０００７】
たとえば、ここでＩＡ−３２ＩＳＡと呼ばれる、Ｉｎｔｅｌ社により製造されるＩｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）プロセッサのＩＳＡを有するプロセッサを考える。プロセッサは、所定の動作の間におけるストレージにおける領域を利用する場合がある。たとえば、ＩＡ−３２ＩＳＡプロセッサがシステムマネージメントモードに入るとき、システムマネージメント（ＳＭＭ）状態保存領域と呼ばれるストレージの領域に各種の値を記憶する。各種のアーキテクチャデータは、ＩＳＡのドキュメンテーションで規定されるロケーション及びフォーマットに記憶される（たとえば、ＥＳＩ、ＥＢＰ等のような各種のマシンレジスタ）。さらに、各種のプライベートデータは、システムマネージメント状態保存領域に記憶される。ＩＳＡのドキュメンテーションでは、これらのプライベートステータスの領域は、“Ｒｅｓｅｒｖｅｄ”（予約）とラベル付けされ、このプライベートデータの内容、フォーマット及びセマンティクスは、ＩＳＡドキュメンテーションで規定されていない。これら「予約された」ストレージの領域は、ここではプライベートステータスの領域“Ｐｒｉｖａｔｅ−ｓｔａｔｅ  ｒｅｇｉｏｎ”と呼ばれる。
【０００８】
異なるプロセッサは、ここではプライベートデータ“Ｐｒｉｖａｔｅ  Ｄａｔａ”とも呼ばれる異なるプライベートステータスデータを有するために設計される場合がある。これは、たとえば、性能を改善するか、又は製造コストを低減するために行われる場合がある。たとえば、新たな内部レジスタが追加される場合があり、古いレジスタのうちの幾つかは、異なって使用される場合があり、ストレージに書き込まれるそれらのコンテンツのフォーマット又はロケーションは、より効率的に変化する場合がある。結果として、これらのより最近のプロセッサのためのプライベートデータは、コンテンツ、フォーマット、セマンティクス又はロケーションにおいてそれらの古いバージョンとは異なる場合がある。
【０００９】
プライベートステータスデータがメインメモリ又は他のストレージのような公的にアクセス可能な領域に記憶されているときに困難さが生じる可能性がある。たとえばＢＩＯＳ（Basic  Input-Output  System）、オペレーティングシステム、バーチャルマシンマネージャ又はハイパーバイザ、デバイスドライバ、又はアプリケーション、及びＩ／Ｏ装置のようなハードウェア又は他の外部エージェントのようなソフトウェアにとって、このプライベートステータスデータにアクセス（すなわち読取り及び／又は書き込み）することは可能である。かかるエンティティによるこのプライベートステータスデータの使用は、プロセッサ及びプラットフォーム製造業者及びエンドユーザにとって誤った作用及び／又は望まれない作用を招く場合がある。  
たとえば、アプリケーションが１つのプロセッサの実現で利用可能な特定のプライベートステータスデータに依存する場合、アプリケーションがプライベートステータスを異なって実現する（又は全く実現しない）異なるプロセッサの実現で実行されるときに誤って機能する場合がある。プライベートデータに依存するソフトウェアは、実現から実現まで変化する内部プロセッサ−メモリ間の可干渉性の挙動／ポリシーのために失敗する場合がある。プライベートステータスデータへのソフトウェアの依存性は、プライベートステータスの使用に関してプロセッサの製造業者にとって利用可能な実現の代替を複雑にするか、及び／又はぐらつきながら歩く場合がある。したがって、プロセッサの製造業者は、将来的な実現で変化を受けることを示すＲＥＳＥＲＶＥＤとしてかかるプライベートデータを提供する（メモリ領域にそのストレージを提供する）。
【００１０】
新たなマシンで古いソフトウェアを実行する先に記載された能力は、古いソフトウェアが（新たなバージョンのマシンと変化する可能性のある）マシンのプライベートデータに不適切にアクセスしないことを想定している。しかし、ソフトウェア開発業者は、たとえばメインメモリに記憶されたとき、反対のことを行う、すなわちプライベートデータにアクセスし、依存するアプリケーション及びオペレーティングシステムプログラムを書くことが分かっている。このことは、新たなマシンが古いマシンと同じアーキテクチャデータを有し、（たとえば、ＩＳＡで定義された命令をロード及び記憶するといった）記憶されたステータスデータにアクセスするために古いマシンを「理解する」ことができる場合でさえも、古いソフトウェアが新たなマシンで適切に実行しない場合があるために問題を生じる。これは、一部又は全部のプライベートデータが新たなマシンで変化したためであって、ソフトウェアに誤って機能させる。さらに、製造業者は、そのプロセッサの将来的なバージョンに改善を追加するのが消極的な場合があり、これはそのようにするのが他のソフトウェアとの互換性がなくなるというリスクを負うことになるためである。
【００１１】
本発明の実施の形態によれば、データ処理マシン及び動作方法が記載され、公的にアクセス可能なストレージの領域に記憶される（たとえば所定の値、その位置、そのセマンティクス又はそのフォーマットといった）プライベートステータスデータに依存するソフトウェアをソフトウェアの開発者が書込むことを妨げる。これは、将来のマシンのバージョンがマシンの内部のハードウェア設計が進化するにつれて必要とされるプライベートデータに関して異なる振る舞いを示すのを可能にし、古いソフトウェアを実行するのに必要とされる同じＩＳＡをなお示す。
【００１２】
本発明の幾つかの実施の形態は、構築されたインタフェースの使用を進める場合がある。たとえば、プライベートステータスデータの領域でのデータのロケーションよりはむしろ、アクセスされるデータのアイデンティティを規定することでプライベートステータスデータとして記憶される場合があるデータにアクセスするため、命令が提供される場合がある。これにより、データにアクセスするためのアーキテクチャメカニズムを提供しつつ、（たとえばプライベートステータスの領域で）どのようにデータが記憶されるかの点で実現の自由度を可能にする。たとえば、（先に記載された）ＩＡ−３２ＩＳＡのシステムマネージメント状態保存領域に記憶されるデータエレメントがＣＳセグメントベースのアドレスの値であるとする。状態保存領域でのこのデータエレメントの記憶領域は、ＩＳＡ仕様で詳細に説明されていない。代わりに、命令は、データを間接的にアドレス指定するＩＳＡにより供給される場合がある。データエレメントは、プロセッサの実現が望む如何なる方式でエンコードされ、状態保存領域に記憶される場合がある（又は、メモリにおけるプライベートステータスの領域に全く記憶されず、代わりに、たとえば特定のレジスタ又はプロセッサ内の領域に保持される）。
【００１３】
本発明は、規定された、構築されたインタフェースと比較したときに、データのソフトウェアのデコードを急速に反対する方式で、プライベートステータスデータがエンコードされるのを許容する。本発明の実施の形態は、ターゲットプロセッサ及びプラットフォームに依存するエンコードの複雑さを変える場合がある。ひとたびターゲットプロセッサが知られると、当業者は、選択されたエンコードをデコードするソフトウェアに基づいた方法が、（たとえば命令といった）規定されたインタフェースを使用するよりも長く要することを保証する、本発明の実施の形態を選択することができる。たとえば、規定されていないソフトウェア方法は、（たとえば所定の命令及びアルゴリズムを使用して）４００クロックで所定のステータスデータをデコードすることができ、構成的に規定された命令及び方法は、その時間の分数で機能する。本発明の実施の形態は、たとえば、時間（速度）及び電力消費量のメトリクスを含めて、プライベートステータスのデコードのコストを測定するため、所定のメトリクスを使用することにある。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係る、プライベートステータスデータの公的な記憶を難読化／エンコードする場合があるコンピュータシステムのブロック図である。
【図２】本発明の実施の形態に係る、プライベート状態の記憶領域からエンコードされたプライベートステータスデータ値を読取るための方法を示すフローチャートである。
【図３】本発明の実施の形態に係る、プライベート状態のストレージ領域にエンコードされたプライベートステータスデータの値を記憶するための方法を示すフローチャートである。
【図４】本発明の実施の形態に係る、公的なストレージに書き込まれたときにプロセッサがそのプライベートステータスデータの難読化／エンコードするために設計されるコンピュータシステムのブロック図である。
【図５】本発明の実施の形態に係る、プライベートステータスデータの難読化／エンコードを実現するのに使用される場合がある例示的な機能的なコンポーネントを例示する図である。
【図６】本発明の実施の形態に係る、例示的なアドレスの難読化／エンコードユニットの一部の更に詳細なロジック図である。
【発明を実施するための形態】
【００１５】
ここで用語「エンコード」とは、特定のビットパターンの暗号化“encrypting”、計算“ciphering”、フォーマット“formatting”又は割り当て“assignment”若しくは解釈“interpretation”のような概念を含む。本発明の実施の形態によるエンコードは、プライベートデータを「難読化」することをいう。
【００１６】
図１を参照して、コンピュータシステムのブロック図が示されている。ソフトウェア１２０は、プラットフォームのハードウェア１０２で実行する。プラットフォームハードウェア１０２は、パーソナルコンピュータ（ＰＣ）、メインフレーム、ハンドヘルド装置、携帯用コンピュータ、セットトップボックス、又はいずれか他の計算システムとすることができる。プラットフォームハードウェア１０２は、プロセッサ１１０、ストレージ１３０を含み、１以上の入出力（Ｉ／Ｏ）装置１４０を含む場合がある。
【００１７】
プロセッサ１１０は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ等のようなソフトウェアを実行可能な如何なるタイプのプロセッサとすることができる。プロセッサ１１０は、本発明の所定の方法の実施の形態を実行するためのマイクロコード、プログラマブルロジック又はハードコードロジックを含む場合がある。図１は唯一のかかるプロセッサ１１０を示しているが、システムには１以上のプロセッサが存在する場合がある。
【００１８】
１以上のＩ／Ｏ装置１４０は、たとえば、ネットワークインタフェースカード、コミュニケーションポート、ビデオコントローラ、ディスクコントローラ、システムバス及びコントローラ（たとえばＰＣＩ，ＩＳＡ，ＡＧＰ）、又はプラットフォームチップセットロジック又はプロセッサに集積されるデバイス（たとえばリアルタイムクロック、プログラマブルタイマ、パフォーマンスカウンタ）である場合がある。一部又は全部のＩ／Ｏ装置１４０は、ダイレクトメモリアクセス（ＤＭＡ）機能を有し、一部又は全部のＩ／Ｏ装置がプロセッサ１１０又はソフトウェア１２０とは独立に、又はプロセッサ１１０又はソフトウェア１２０の制御下でストレージ１３０を読取るか及び／又は書き込むのを可能にする。
【００１９】
ストレージ１３０は、ハードディスク、フロプティカルディスク、ランダムアクセスメモリ（ＲＡＭ）、キャッシュメモリ、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、先の装置の組み合わせ、又は若しくはプロセッサ１１０によりアクセス可能な他のタイプの記憶媒体とすることができる。ストレージ１３０は、本発明の方法の実施の形態を実行する命令及び／又はデータを記憶する場合がある。ストレージ１３０は、プロセッサのレジスタファイルの公的にアクセス可能な領域であるか、又はメインメモリのようなプロセッサの外にある領域である場合がある。所定の内部レジスタ１１４のコンテンツのようなマシン１１２の状態に関するデータは、ストレージ１３０におけるプライベートステージ領域１３２に書き込まれ、ここでステータスデータは「エンコード」又は「難読化」として書き込まれる。したがって、ステータスデータが書き込まれる位置は、Ｉ／Ｏ装置１４０、又はプラットフォームハードウェア１０２で実行している（たとえばオペレーティングシステム１２２、アプリケーションソフトウェア１２４）といったソフトウェア１２０によりアクセスされる場合がある点で公的であるが、エンコードは、適時的なやり方でステータスデータがリバースエンジニア（すなわちデコード）されるのを困難にする。ステータスデータがストレージ１３０から回復されるとき、プロセッサの製造業者により定義されるプロセッサ初期デコードプロセスといった指定されたデコードプロセスが適用される。デコードプロセスにわたる制御は、以下に記載されるように、特定の命令及び制御信号のような特定のプロセッサ機能にリンクされる場合がある。ステータスデータにアクセスするための規定されていない方法（代替的なソフトウェア命令及びアルゴリズム）は、これらの制御をアクチベートせず、これに応じてより費用が高くなる。
【００２０】
次いで、回復されたステータスデータは、ソフトウェア１２０又はＩ／Ｏ装置１４０にアクセス可能であるか、アクセス可能でない場合があるローカル状態１１２に配置される場合がある。ローカル状態１１２は、たとえば、ＩＳＡ（Instruction  Set  Architecture）を通した支配されないアクセスにとって利用可能でない内部キャッシュ又はレジスタにおける領域である場合がある。あるケースでは、ローカル状態は、ソフトウェア又は他の外部エージェント（たとえばＩ／Ｏ装置）によりアクセス可能ではない。あるケースでは、一部又は全部のローカル状態は、ソフトウェア又は他の外部エージェントにアクセス可能である。他のケースでは、ローカル状態は、特定のインタフェース（たとえば命令）を通して間接的にアクセス可能な場合がある。ローカル状態はプロセッサの内部にあり、「公的な」ストレージではないため、プロセッサは、ローカル状態へのアクセスを厳密に指示していない。
【００２１】
ステータスデータは、ストレージ１３０の公的にアクセス可能な領域に書き込まれたときにエンコードされた形式にあるが、プロセッサのＩＳＡの一部である場合がある製造業者により定義された命令は、ストレージ１３０からデータを回復するためにソフトウェアにより使用される場合がある。エンコードは、ステータスデータにアクセスするのを求めるとき、かかる命令をソフトウェア開発者が迂回するのを思いとどまらせるように十分に強くあるべきである。マイクロオペレーション又はハードウェア制御信号を使用して、ストレージからステータスデータを読取るか又は回復するために必要とされる内部ロジックの例は、図５を参照して以下に記載される。
【００２２】
１実施の形態では、使用されるエンコードプロセスは、ソフトウェア１２０の著者に、ソフトウェアの書込みにおいて、メモリからステータスデータにアクセスするためにプロセッサの製造業者により規定される場合がある技術を迂回するよりはむしろ適用させるに十分に強い。他のケースでは、メモリにある（所定の値、その位置、その意味又はそのフォーマットを含む）ステータスデータにアクセスして信頼することがソフトウェア開発者にとって更に困難にすることを製造業者が意図する場合に、エンコードが更に強い場合がある。
【００２３】
プライベート状態のエンコード及びデコードを制御するために使用される制御信号は、たとえばハードウェア状態マシン、プロセッサ命令（マクロ命令としても知られる）、オペレーショナルモード（たとえばＰＡＬモード）又はモードビット若しくは命令の動作グループ、マイクロコード又はマイクロコードオペレーション（ｕops）、及びハードウェア制御信号又はイベントと結合されるか、又はこれらによりアクセスされる。
【００２４】
様々なタイプのエンコードプロセスが使用される場合がある。ストレージのプライベートステート領域に書き込まれるデータは、ストレージの前に変化される場合がある。このタイプの符号化プロセスは、データエンコードと呼ばれる。代替的に、プライベート状態の領域におけるプライベート状態にアクセスするために使用されるアドレスが変わる場合がある。このタイプのエンコードプロセスは、アドレスの難読化と呼ばれ、オリジナルアドレスから難読化されたアドレスへの変換は、アドレスマッピングと呼ばれる。データエンコード及びアドレス難読化が以下に記載される。
【００２５】
エンコードプロセスは、スタティック又はダイナミックのいずれかである場合がある。スタティックエンコードは、マシンが実行して（エンコードプロセスを実行して）いるときに時間を通して変化しない（スタティックエンコードは、動作を実行する間の後ではなく、プロセッサの初期化／リセット又はブートフェーズの間に変化又は再構成される）。スタティックエンコードを発生するプロセスは、静的な難読化と呼ばれる。代替的に、エンコードプロセスは、プロセッサが実行している間に時間を通して変化するエンコードの結果を生成する場合がある。これらのプロセスは、動的な難読化と呼ばれる。
【００２６】
たとえば、所与のエレメントのプライベート状態のコンテンツのストレージフォーマットは、ストレージ１３０に書き込まれたとき、マシンが実行している間に変化する場合がある。これは、動的な難読化としてここでは呼ばれる。たとえば、フォーマットは、（プロセッサが発生及び追跡する）ランダム又は擬似ランダム系列に従ってビッグエンディアン（big-endian）及びリトルエンディアン（little-endian）との間で変化する場合があり、ステータスデータがストレージに書き込まれる必要があるときはいつであっても、この変化は、プライベートデータが読取り及び書込みされるメモリ領域に影響を及ぼす場合がある。さらに、ここでの意図は、エンジニアを迅速に逆転するのを困難にし、ストレージ１３０で公的にアクセス可能なストレージの領域からステータスデータをデコードすることである。
【００２７】
実施の形態では、プライベートステータスデータがストレージに書き込まれるとき、隣接するアドレスをもつ（たとえば、メインメモリといった）ストレージの領域に書き込まれる。他の実施の形態では、プライベートデータ領域は隣接しておらず、１を超える個別のストレージの領域からなる。エンコードがプライベート状態の領域を完全にポピュレート“populate”する要件はなく、すなわち幾つかのビット又はバイトは使用されないままである場合がある。エンコード及び／又は難読化機能の設計における自由度は、たとえばプライベートデータを記憶するのに厳密に必要とされるよりも大きくすることで、プライベート状態の領域のサイズを変えることで得られる場合がある。（たとえば、これは、後に記載されるように、より大きなＭＩＳＲ（multi-input  shift  register）多項式が使用されるのを許容する）。
【００２８】
本発明の実施の形態では、マルチバイト（たとえば３２ビットの「長い」整数）値のステータスデータが幾つかの部分に分割され、次いで、全てのシーケンスにおいてではなく、隣接しないロケーションにおいて記憶される。したがって、４バイトの値は、プライベート状態の領域内の隣接しないロケーションに記憶される４つの１バイトの値に分割される場合がある。４つの１バイトの値が記憶される位置は、マシンが動作している間に動的に、ランダムなやり方で変わる場合がある。勿論、実施の形態は、かかるデータを位置決め及びデコードすることが可能であるべきである。なお、ＩＳＡは、シングルデータの値が複数のメモリアクセスを使用して記憶又はロードされるケースで、アクセスの原子性に関する所定の要件を課す場合がある。
【００２９】
本発明の実施の形態では、ストレージにアクセスするために使用されるアドレスビットがエンコードされる。このアドレスビットのエンコードは、アドレスビットの順序付け（又はアドレスビットのグループ）を変える場合がある。この例は、所与のメモリ領域でリトルエンディアンのフォーマットからビッグエンディアンのフォーマットへ切替える場合がある。他のアドレス混合のマッピングが可能であり、より精巧な変換を含む。
【００３０】
別のタイプのアドレスエンコードは、あるセットのＫ個の固有のアドレスを別のセットのＫ個の固有のアドレスにマッピングし、すなわち数学的に、マッピングは、全単射（bijective：単射（injective）及び全射（surjective）の両者）である。ここで、上位のアドレスビットは、変化されないままである場合があり、下位のオーダのアドレスビットは、変更される。かかるケースでは、所与のメモリレンジをそれ自身に写像するマッピングを構築するのが可能である。すなわち、メモリレンジのベースアドレスオフセットが同じであり、メモリ領域サイズは同じである。これは、メモリレンジでのデータのみが「難読化」されるために、魅力的なソリューションである。すなわち、レンジ内のアドレスビットのみが混合される。図４及び図６は、１つのかかるマッピング及び関連するアドレス混合メカニズムの例を提供する。
【００３１】
アドレス難読化のメカニズムは、プライベート状態領域が基本となるＮ−ａｒｙロジックのべき乗であるサイズ又はベースアドレスを有するときに使用するのが容易である場合がある。大部分の現在のプロセッサは、バイナリロジックを使用しており、したがって、２のべき乗であるサイズ又はベースアドレスをもつプライベート状態領域が好ましい（ここで、バイナリロジック及び算術が説明されるが、Ｎ−ａｒｙロジック及び算術が使用され、適切な場合、一般的なケースで仮定される）。フィルタ及び他のメカニズムは、Ｎ−ａｒｙロジックのべき乗ではないサイズ又はベースアドレスをもつプライベートステータス領域を管理するために使用される場合がある。かかるアドレスビットの操作は、各種のメモリ編成及び仮想的なメモリ技術（たとえばページング、セグメンテーション等）と共存することができる。
【００３２】
アドレス難読化のメカニズムは、ストレージ内のデータのレイアウトを変え、データを混合する役割を果たす場合があるが、ストレージの粒状度でのみである場合がある。大部分の現在のプロセッサでは、メインメモリは、バイト単位のアドレス指定が可能であり、ここでデータエレメントの個々のバイトのロケーションはプライベートステート領域で再配置される場合があるが、個々のバイトでのデータビットは、（データエンコードメカニズムにより変更される場合があるが）アドレスの難読化により変化されない。
【００３３】
３つのアドレスマッピングの実施の形態では、オリジナルのアドレスマッピングは、幾つかのデコードプロセスを通して抽出される場合がある。この抽出は、アドレスマッピング機能の逆の機能の適用である。マッピング機能の選択は、この要件に照らして行われ、全てのアドレスマッピング機能がリバーシブルではない。
【００３４】
本発明の実施の形態は、ストレージに書き込まれるデータビットをエンコードする。これらデータのエンコードは、アドレス指定可能なストレージのサイズのようなアドレス可能性の制約により必然的に束縛されることなしに、プライベートステート領域に記憶されるデータを再生成する場合がある。データのセグメントは、他のデータのセグメントでスワップされる場合がある。たとえば、２つのニブル（すなわち、バイトでの４ビットセグメント）はそれぞれのバイトでスワップされる。データエンコードは、一定のＸＯＲマスクでビット毎に排他的論理演算される場合がある。また、データは、多入力のフィードバックシフトレジスタ（ＭＩＳＲ）の出力でビット毎に排他的論理和演算される場合がある。データエンコードは、暗号化関数を使用して行われる場合がある。これらの実施の形態では、オリジナルデータは、幾つかのデコードプロセスを通して抽出することができる。そのデコードプロセスは、プラットフォームで実行しているソフトウェア（たとえば、ＩＳＡ定義されたロード及び記憶動作、算術演算の使用）に対して利用可能なデコード方法よりも高速であることを保証するべきである。図４のテーブル４７０及び４８０は、たとえばメモリアドレスの所与の１６バイトレンジでデータ（バイト）に適用されるビジュネルのような暗号の使用を例示する。
【００３５】
先に列挙された実施の形態のなかには、静的なマッピングで実現されるものがある。すなわち、プロセッサ又はプラットフォームが実行している時間の間に変化しない。適切なマッピングは、（たとえば、システムブートの間、システムパワーオン時、プロセッサリセット時といった）製造、製造後、又はシステム動作における初期の間に、設計時間で設定される場合がある。異なるプロセッサは、同じ静的なマッピングで構成されるか、構成されない場合がある。（たとえばシステムブートといった）システムが使用中であるまでマッピングが制約されている場合、新たなマッピングがそれぞれのプロセッサブートで選択されるのが可能である。実施の形態では、（たとえば動作モード、命令のグループ）異なる制御セットは、異なるマッピングコンフィギュレーションをそれぞれ使用することができる。制御セットで、マッピングは一定のままとなる。しかし、命令のグループ又はモードの間で、マッピングは別個のものである（又は別個でない）場合がある。
【００３６】
他の実施の形態は、プロセッサが動作している間に変化する動的なマッピングで実現される場合がある。実施の形態では、マッピングのコンフィギュレーションは、ストレージにおけるプライベートステータス領域に現在記憶される重大なエンコードデータがない場合にのみ変化する。この実施の形態は、エンコードされたデータがストレージのプライベートステータス領域に書き込まれ、それをアクティブにしたときにインクリメントされるカウンタを使用する場合がある。プライベート状態領域がもはやアクティブであると考慮されないときに、カウンタはデクリメントされる。カウンタがゼロであるとき、マッピングコンフィギュレーションが変化する場合がある。実施の形態では、マッピング記述子におけるそれぞれのプライベートステータス領域について、マッピングコンフィギュレーションが記憶される。マッピング記述子は、既知の、プライベートステータス領域自身のエンコードされていない位置に記憶されるか、プロセッサの内部又は外部にある場合がある待ち行列又はルックアップテーブルのようなトラッキング構造により個別に保持される場合がある。実施の形態では、それぞれのプライベートステータス領域の異なるマッピングが可能である。
【００３７】
図２は、本発明の実施の形態に係るプライベートステータスの記憶領域からエンコードされたプライベートステータスデータの値を読取るためのプロセス２００を例示している。プロセスは、ハードウェア（たとえば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、（汎用コンピュータシステム又は専用マシンで実行されるような）ソフトウェア、又は両者の組み合わせを有する場合がある処理ロジックにより実行される場合がある。１実施の形態では、処理ロジックは、図１のプロセッサ１１０で実現される。
【００３８】
図２を参照して、プロセス２００は、データエレメントのアドレスを決定する処理ロジックで開始する（処理ブロック２０２）。つぎに、処理ロジックは、ストレージのプライベートステータス領域においてデータエレメントがエンコードされた形式で記憶されているかを判定する（処理ブロック２０４）。
【００３９】
本発明の実施の形態は、要求されるデータエレメントがデコードを必要とすることを処理ロジックに示すマイクロコードで生成されたか又はハードウェアで生成された制御信号を使用する。この信号がない場合、ブロック２５０へのＮＯパスに進む。
【００４０】
データエレメントがデコードされるべきではない場合、処理ロジックは、処理ブロック２５０に進み、ここで、処理ブロック２０２で決定されたアドレスでストレージからデータエレメントをロードする。プロセスは、次いで終了される。ロードされたデータはデコードされず、すなわち、アドレス又はデータのデコードが実行されない。なお、このパスで読取られたデータは、通常である（すなわち、プライベートステータスデータではない）か、そのエンコードされた形式である（規定されない方式でアクセスされる）プライベートステータスデータである場合がある。
【００４１】
しかし、データエレメントがデコードされるべき場合、処理ロジックは、処理ブロック２０２で決定されたアドレスに基づいてそれが記憶されているアドレス（アドレスは難読化される場合がある）を次に決定する（処理ブロック２１０）。処理ロジックは、処理ブロック２１０で決定されたアドレスでストレージからエンコードされたデータエレメントをロードする（処理ブロック２２０）。処理ロジックは、処理ステップ２２０においてストレージのプライベートステータス領域からロードされたデータエレメントを次にデコードする。デコードされた値は、プロセス２００の結果である。プロセスは終了する場合がある。このデコードされた状態は、プライベートステータスのキャッシュ又はプロセッサのプライベートなローカル状態で配置される。
【００４２】
図３は、本発明の実施の形態に係る、プライベートステータスデータの値をストレージのプライベートステータス領域に記憶するためのプロセス３００を例示する。プロセスは、ハードウェア（たとえば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、（汎用コンピュータシステム又は専用マシンで実行されるような）ソフトウェアを有する場合がある処理ロジックにより実行される場合がある。実施の形態では、処理ロジックは図１のプロセッサ１１０で実現される。
【００４３】
図３を参照して、プロセス３００は、データエレメントのデータ値及びストレージアドレスを決定する処理ロジックで始まる（処理ブロック３０２）。次に、処理ロジックは、記憶されるべきデータエレメントがストレージのプライベートステータス領域にエンコードされた形式で記憶されるべきプライベートステータスエレメントであるかを判定する（処理ブロック３０４）。
【００４４】
本発明の実施の形態は、マイクロコードで発生されたか、ハードウェアで発生された制御信号を使用して、書き込まれるデータエレメントがエンコードを必要とすることを処理ロジックに指示する。この信号がない場合には、ブロック３５０へのＮＯパスに進む。
【００４５】
データエレメントがプライベートステータス領域にエンコードされた形式で記憶されない場合、処理ロジックは、処理ブロック３５０に進み、ここで、処理ブロック３０２で決定されたアドレスでストレージにエンコードされていない（変更されていない）形式でデータエレメントを記憶する。プロセスは終了する場合がある。書き込まれたデータはエンコードされない。
【００４６】
しかし、データエレメントがプライベートステータス領域にエンコードされた形式で記憶されるべき場合、処理ロジックは、データエレメントを次にエンコードし（処理ブロック３１０）、データエレメントを記憶する難読化されたアドレスを決定する（処理ブロック３２０）。次いで、処理ロジックは、処理ブロック３２０で決定されたアドレスでストレージにエンコードされたデータエレメントを記憶する（処理ブロック３３０）。次いで、プロセスは、終了する場合がある。
【００４７】
なお、処理ブロック３１０及び処理ブロック３２０で実行される処理は、逆の順序で実行される場合があり、すなわちデータのエンコードの前にアドレス値の難読化が行われる。幾つかの実施の形態は、これらの処理ブロックのうちの両者ではなく、１つを実行する。幾つかの実施の形態は、並列に処理ブロックを実行する場合がある。
【００４８】
ここで図４に戻り、コンピュータシステム４０２は、ブロック図の形式で示される。このシステム４０２は、ストレージでプライベートステータスデータを難読化するための先に記載された方法論をサポートするために設計されるプロセッサ４０４を有する。プロセッサ４０４は、標準的なキャッシュ４１０及びプライベートキャッシュ４１６を有し、後者は、システム４０２で実行するソフトウェアでアクセス可能ではなく、エンコードされていない（難読化されていない）形式でプライベートステータスデータを記憶するために使用される。この実施の形態では、システムチップセット４０６が提供され、プロセッサ４０４は、メモリ４０８と通信することができる。チップセット４０６は、コンピュータの周辺装置とインタフェースするために必要とされる他のロジック（図示せず）と同様に、メモリコントローラ（図示せず）を含む場合がある。チップセット４０６は、幾つかの実施の形態では、チップセット４０６の機能、又は機能的なチップセットがプロセッサ４０４で実現される場合がある。
【００４９】
図４では、公的にアクセス可能な領域４１８に、プロセッサ４０４のエンコードされたプライベートステータスデータを記憶するメモリ４０８が示されている。これは、実際の値がメモリ４０８を単にモニタ及び読取りすることで容易に回復されるか、逆にエンジニアリングすることができないように、プロセッサ４０４の内部プロセッサの状態の値に計算が印加される例である。
【００５０】
先に記載されたように、エンコードされたプライベート状態領域４１８に記憶されたデータの難読化は、各種のやり方で達成される場合がある。図４は、両方のデータ値がエンコードされ、データレイアウトがエンコード／難読化される、１つのかかるメカニズムの例を示している。テーブル４７０における第一のデータ値は、ビジュネルの暗号を使用してエンコードされ、（以下に記載される）テーブル４８０で示されるデータ値を生じる。次いで、プライベートステータスデータの論理アドレス値から物理的なアドレス値の特別のマッピングが適用され、マッピングはテーブル４９０で例示される結果となる。物理的なアドレスは、プライベートステータスデータが実際にメモリの何処に記憶されるかを示す。物理的なアドレスは、論理アドレスのエンコードから生じるといわれる。
【００５１】
“deciphered  addr/data”と題される図４におけるテーブル４７０は、キャッシュ４１６にエンコードされない形式で記憶される例示的な論理アドレス及びそれら関連するプライベートステータスデータ値のリストを有する。ここで全てのゼロのデータ値は、結果的に得られるエンコードを示すために選択される。なお、‘Ｘ’はステータスデータの仮想的及び物理的アドレスのエンコードされない上位ビットを表している。“Ｐｒｉｖａｔｅ  Ｓｔａｔｅ  Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ  Ｍａｐ”と題されたテーブル４９０は、エンコードされていないアドレス及びエンコードされたアドレスとの間のマッピングの例を示している。ここで、低いオーダの４ビットのみがエンコードされる。
【００５２】
図６は、図４のシステムで使用されるプログラマブル（パラメータ化された）アドレスマッピング機能の実施の形態を例示している。図６では、Ｐ0＝１，Ｐ1＝１，Ｐ2＝０，Ｐ3＝０で多項式の制御レジスタ６０４をロードし、基本多項式ｘ4＋ｘ1＋ｘ0を実現し、任意のマスクレジスタ６１０を全てのゼロでロードする。このロジックは、一般的なｗ−ビット幅のＭＩＳＲを支配する式の適合であり、様々なアドレスエンコードのコンビネーションロジックを構築するために使用することができる。パラメータ化されたＭＩＳＲ状態の式は、以下のようになる。
Ｓi（ｔ＋１）＝Ｓi-1（ｔ）＋Ｉi＋（Ｐi・Ｓw-1（ｔ）），１≦ｉ≦ｗ−１
Ｓ0（ｔ＋１）＝Ｉ0＋（Ｐ0・Ｓw-1（ｔ））
ここで、演算子“＋”は法２の加算（ＸＯＲ）を表し、“・”は法２の乗算（ＡＮＤ）を表す。パラメータ“ｔ”は時間（クロックチック）を表し、Ｓiはｉ番目のフリップフロップの状態であり、Ｉiはｉ番目の入力ベクトルビットであり、Ｐiはｉ番目の多項式計数である。Ｐw係数は暗黙的に１である。図４のアドレス混合の実施の形態を達成するため、全てのＳi（ｔ）を対応するアドレスＡi値で置き換え、Ｓi（ｔ＋１）を出力Ｏiで置き換える。他の実施の形態も可能である。
【００５３】
オーダｗの基本の多項式は、“最大のシーケンス”を発生することができる点で有効であり、すなわち、全てのｗビット幅のバイナリコンビネーション又はパターンを発生することができる。３００までの基本多項式（３００ビット幅）及び更に高い次数が使用される場合がある。
【００５４】
先の関数を例示するため、図４を使用して、（エントリ４７１に示されるように）論理アドレスオフセット０００１でのデータにアクセスするため、（エントリ４９１が示すように）ロケーション００１０での物理メモリがアクセスされる。このケースにおけるこのアドレスに関連するエンコードされていないコンテンツ値（エントリ４７１参照）は、全てのゼロとなる。しかし、エントリ４８１で示されるようにエンコードされた形式で記憶されたとき、非ゼロのビットストリング（すなわち、１１１１０１０１）は、メモリ４０８の公的な領域４１８に現れる（このエンコードの計算は、後に更に詳細に説明される）。制限されたビット幅が便宜上示されているが、この技術がより広く又は並列のビットスライスされたデータに適用される場合がある。
【００５５】
図４に示されるような、メモリ４０８におけるエンコードされたプライベートステータスデータの記憶及び回復は、図５に示されるロジックブロックを使用して実現される場合がある。この例について、特別のミクロ動作（たとえば制御信号）は、プライベートステータスデータを記憶するか、又はストレージから回復するときに、使用するためにプロセッサについて定義される。
【００５６】
アドレス生成ユニット（ＡＧＵ）５０４は、特定のミクロ動作を受け、この実施の形態では、高いコンポーネント及び低いコンポーネントを有する論理アドレスを計算する。実施の形態では、論理アドレスは仮想的なアドレスである。別の実施の形態では、図５に示されるように、論理アドレスは、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）プロセッサで発見されるようなリニアアドレスである。更に別の実施の形態では、論理アドレスは物理アドレスであり、高いアドレスビットの変換が行われる必要がない。図５では、アドレスの高いコンポーネントは、（仮想的にページ番号である場合がある）高いコンポーネントのリニアアドレスを物理アドレス５０９の一部に変換するリニア−物理アドレス変換ブロック（変換ルックアサイドバッファ又はＴＬＢ）５０８に供給される。
【００５７】
アドレス難読化／エンコードユニット５１４は、この実施の形態では、プロセッサの所与のプライベートステータスデータに関連するリニアアドレス値の低い部分を受けることである。これに応じて、アドレス難読化ユニット５１４は、物理的なアドレス５０９の別の部分を提供するため、リニアアドレスのこの低いコンポーネントを変換する。物理的なアドレスのこの部分の値は、たとえば、図１及び図４を参照して先に記載されたように、リニアアドレスの混合又はエンコードされたバージョンである。
【００５８】
実施の形態では、特別のマイクロオペレーション又はｕｏｐ信号（制御信号）は、アドレスエンコードユニット５１４が低次ビットをエンコードするかを判定する。制御信号はアサートされない場合、低次のアドレスビットはエンコードされずに通過するか、又はユニット５１４をバイパスする。エンコード制御信号がアサートされるときでさえ、幾つかのアドレスビットがエンコードされずに通過される場合がある。これは、たとえば、プライベート状態メモリ領域が低次のビットによりアドレス可能なアドレス空間サイズよりも小さいときに、アドレスビットのサブセットがエンコードを必要とする場合にのみ生じる。アドレスエンコードがリニア−物理的なアドレス変換の後に生じ、したがって、仮想的なメモリ空間よりも大きいアドレス空間のエンコードを扱うことができる。図５に示される実施の形態の利点は、リニア−物理変換は、シリアルの代わりにエンコード動作を並行して生じる点であり、したがって潜在的に高速である。また、エンコードは、仮想的なメモリページサイズよりも小さいプライベートステータスのメモリ領域についてのみ必要な場合がある。
【００５９】
（ＴＬＢ５０８により発生された）物理アドレスの高いコンポーネント、及び（アドレス難読化／エンコードユニット５１４により発生された）物理アドレスの低いコンポーネントは、連結されたとき、所与のステータスデータが記憶されるメモリ４０８における実際のロケーションを指示する物理アドレス５０９を生成する。物理アドレス５０９は、この実施の形態では、キャッシュ４１０に始めに印加され、これはミスになる場合、ロケーションのコンテンツは、（動作がロード又はストアのいずれかであるかに依存して）メモリ４０８から供給されるか、メモリ４０８に記憶される。メモリの階層性の他のアレンジメントが可能である。
【００６０】
なお、この実施の形態では、プライベートステータスデータのストレージのメモリ４０８に指定される領域は、ページの一部のみを占め、仮想的なメモリページの境界に揃えられる場合がある。そのケースでは、（リニアアドレスの低い部分である）リニアアドレスのページオフセット部分のみがアドレス難読化／エンコードユニット５１４を通過し、エンコードされた物理ページオフセットを生成する。他の実現も可能である。さらに、アドレス難読化／エンコードユニット５１４は、レンジセレクションロジックを含む場合があり、メモリの特定の領域でのアドレスのみがエンコードされる。このロジックにより、ストレージ領域は、仮想的なメモリページの境界、又は先に記載されたようにサイズ的に２のべき乗に揃えられる必要がある。内部的に、アドレス難読化／エンコードユニット５１４は、マイクロコード、ソフトウェア、ルックアップテーブル、固定された機能ロジック、プログラマブルロジック又はこれらの技術の組み合わせを使用して実現される場合がある（１つのかかる実現のキーエレメントについて図６を参照されたい）。
【００６１】
図５を参照して、この実施の形態では、プロセッサの標準的なキャッシュ４１０は、エンコード又は難読化されたプライベートステータスデータを記憶するために使用される。キャッシュ４１０又はメモリ４０８のいずれかから伝達されるべきエンコードされたコンテンツ５１０が存在するとき、データデコード／エンコードユニット５２４を使用してデコードされる場合がある。デコードされたコンテンツ値５２０は、次いで、この実施の形態では、プロセッサのプライベート状態領域５１６に記憶される。先のように、（たとえば、オペレーティングシステムにより）キャッシュ４１０及びメモリ４０８は公的にアクセス可能であり、プライベートステータス領域は、プロセッサの内部機能にアクセス可能である。データデコード／エンコードユニット５２４は、ストレージにエンコードされたフォームでプライベートステータスデータを書き込むとき、リバースで使用される場合がある。かかる実施の形態では、ユニット５２４は、プライベートステータス領域５１６から生じる場合があるコンテンツの値をエンコードする。
【００６２】
幾つかの実施の形態では、特定の命令は、一部又は全部のプライベートステータスデータにアクセスするためにプロセッサのＩＳＡに提供される場合がある。これらのデータは、実行されたとき、プライベートステータス領域５１６からのエンコードされていないデータの伝送となるか（図５参照）、又はプライベートステータスデータがエンコードされた形式で記憶される、メモリ４０８における領域４１８にアクセスするためのマイクロ動作又はハードウェア制御信号を送る（図４参照）。ＩＳＡの他の命令（たとえば命令を通常にロード及び記憶）はメモリ４０８及び／又はキャッシュ４１０の公的な領域にアクセス可能である場合があり、かかる読取りアクセスの結果は、難読化されたそれらのアドレス値及び／又はエンコードされたデータコンテンツのいずれかを有するプライベートステータスデータ値である。これに応じて、特定のハードウェア支援なしに、エンジニアをリバースするか、さもなければ、適時的なやり方でプライベートステータスデータを回復することは可能ではない場合がある。
【００６３】
先に記載されたメカニズムはプロセッサ装置内で実現されるロジックコンポーネントを有するが、たとえば、一部又は全部のエンコードロジックがシステムチップセットで実現される他の編成も可能である。さらに、特定のバスサイクルは、メモリ４０８のプライベート状態の領域４１８にアクセスするために定義される場合がある（図４）。
【００６４】
ここで図６を参照して、例となるプログラマブル４ビットのアドレスビットの難読化（エンコード）のメカニズムの更に詳細な設計が示される。この設計は、図５のアドレスの難読化／エンコードユニット５１４で使用される場合があり、（低次のビットについて）図４における論理−物理アドレスマッピングを生成する。
【００６５】
図６のロジックダイアグラムでは、先に記載された方法を使用した、４次の多項式による４ビット幅の多入力のリニアフィードバックシフトレジスタ（ＭＩＳＲ）のコンビネーションナルロジック部分の実施の形態である。このコンビネーショナルロジックは、多項式の制御レジスタ６０４、任意のマスクレジスタ６１０、及び入力アドレスソース６０６により供給される。なお、このロジックは、全体のＭＩＳＲではないが、ＭＩＳＲのマッピング特性を梃子“leverage”にする。
【００６６】
図６では、多項式の制御レジスタ６０４には多項式のバイナリ係数がロードされる。たとえば、基本多項式ｘ4＋ｘ1＋ｘ0によりマッピングする図４に例示される論理−物理アドレスマッピングを実現するために図６の回路を構成するため、バイナリ係数Ｐ0＝１，Ｐ1＝１，Ｐ2＝０，Ｐ3＝０を多項式制御レジスタ６０４にロードする。アドレスビットベクトル００００は、任意のマスクレジスタ６１０が００００に設定される場合に００００にマッピングされる。入力アドレスソース６０６は、エンコードされるべき４ビットの論理アドレスを表す。任意のマスクソース６１０（たとえば制御レジスタ）は、異なるマッピングが構築されるのを許容する。
【００６７】
先に記載されたように、マスクレジスタ６１０及び多項式レジスタ６０４は、実行時間で動的に変化される場合がある。たとえば、ロードされた値は、電源オンのリセット処理の間に擬似ランダムデータソースから導出される。これは、プライベートステータスデータにアクセスする試みを妨害するか、（先に記載された特別のＩＳＡ命令のような）規定されたアクセス方法を回避する試みを妨害する。図６は、合理的に効率的であって、バイナリ係数及びマスク値及び比較的少ないゲート遅延をもつ控えめな量のハードウェアをもつプログラム性を許容する。他のロジック設計は、アドレス難読化／エンコードユニット５１４を実現するために可能である。更なるロジック又はコンテンツアドレス可能なメモリ（ＣＡＭ）は、アドレスビットエンコードメカニズムにより変更されるアドレスのレンジを更に制限するために使用される場合がある。さらに、たとえば（必要とされる場合）エンコードを強化するため、エンコード及びデコードプロセスのために更に複雑なロジックが設計される場合がある。
【００６８】
プライベートステータスデータのコンテンツ値のエンコードは、アドレスの難読化のために先に記載されたやり方に類似したやり方で達成される場合がある。１つのアプローチは、所与のプライベートステータスのエレメントのコンテンツがエンコードされ、（揃えられたプライベートステータスデータの領域について）論理アドレスオフセットにおいてＸＯＲするか、幾つかの一定の速度値においてＸＯＲすることである。より洗練されたエンコードメカニズムは、プライベートステータスデータ値のストリームで使用される場合がある。  
フィードバックシフトレジスタ技術の変形（線形、非線形、多入力等）は、初期速度で使用される場合がある。初期速度は、フィードバックシフトレジスタにロードされる初期状態であるとして定義される。連続したそれぞれのデータ値について、シフトレジスタが進められ、その内容は、初期レジスタのコンテンツに対してビット毎にＸＯＲされる。これは、ビジュネル暗号と呼ばれ、この例は、テーブル４７０においてそれぞれエンコードされていないコンテンツ（データ）はゼロである（たとえばエントリ４７１）先の図４のテーブル４７０，４８０で示されるが、メモリ４０８におけるテーブル（たとえばエントリ４８１）においてエンコードされた形式で記憶されたときのように現れない。  
この暗号によれば、ビット毎のＸＯＲマスクの擬似ランダム系列を発生するため、シフトレジスタが使用される。このケースでは、それぞれの擬似ランダムなビット毎のマスクがＭＩＳＲにより生成されるので（ステップ４８０参照）、アドレス系列における次のデータ値とビット毎にＸＯＲされる。正確に同じ系列を再生するため、多項式及びイニシャルシフトレジスタの速度値のみが必要とされる。  
実施の形態では、エンコード及び／又はデコードユニットのコンフィギュレーション情報（たとえば多項式及び初期速度）は、メモリ４０８におけるエンコードされた状態領域と共に記憶される。プライベート状態をデコードするため、コンフィギュレーション情報（たとえば多項式及び初期速度）が回復され（及びおそらく、別の固定されたエンコード技術を使用してデコードされ）、次いで使用される。それぞれの系列におけるマスクが同じ順序で対応するデータに印加される限り（たとえば、アドレス可能なデータユニット当たり１つのマスクが適用され）、ビット毎のＸＯＲマスキングがオリジナルデータを生成（デコード）する。  
前に記載されたように、多項式及び初期のＭＩＳＲ速度値は、各種の方法又は変化の制約を使用して変わる場合がある（たとえばブート時間、ラン時間等）。オリジナルデータを回復するため、オリジナルで使用されたエンコード方法に適したデコード方法が適用されるべきであり、すなわちエンコードを元通りにするために適用される。ビジュネル暗号は、プライベートステータスデータ値のエンコードメカニズムのまさに１つの例であり、このエンコードメカニズムは、効率的であって、シンプルなバイナリ係数リスト、速度等でのプログラム可能性“programability”、及び数ゲートの遅延をもつ控えめな量のハードウェアを許容する。他の実施の形態も可能である。
【００６９】
本発明の実施の形態では、プロセッサは、プロセッサの動作モード間の遷移でのストレージでのプライベート状態領域１３２（図１参照）を利用する。たとえば、プロセッサは、先に記載されたようにシステムマネージメントモード（ＳＭＭ）に入るとき、プライベートステータス領域にアクセスする場合がある。これら動作モード間の遷移は、モードスイッチとしてここでは呼ばれる。モードスイッチは、たとえばノーマル及びシステムマネージメントモード間、バーチャルマシンシステムにおけるバーチャルマシン（ＶＭ）とバーチャルマシンモニタ（ＶＭＭ）との間、ユーザレベルのオペレーティングシステムプロセスとオペレーティングシステムカーネルとの間の動きを含む。
【００７０】
本発明の実施の形態では、プロセッサは、プライベートステータス領域の指定後の如何なる時間でストレージにおけるプライベートステータス領域１３２を利用する場合がある。たとえば、バーチャルマシンシステムでは、ＶＭＭは、バーチャルマシンシ動作の間のプロセッサの使用についてストレージにおける領域を割り当てる場合がある。ＶＭＭは、（たとえばＩＳＡで定義された命令を実行することを通して）プロセッサにプライベートステータス領域のロケーションを示す場合がある。プロセッサがこの指示を受けた後、プロセッサは、フィットを見るのでプライベートステータス領域を利用するためにフリーである場合がある。たとえば、プロセッサは、（すなわちモードスイッチポイントで）ＶＭとＶＭＭとの間の遷移の間にプライベートステータス領域にアクセスする場合がある。さらに、ＶＭ又はＶＭＭの動作の間の領域にアクセスする場合がある。たとえば、プロセッサは、プライベートステータス領域から制御情報にアクセスするか、又はプロセッサは、プライベートステータス領域に一時的に値を記憶する場合がある。
【００７１】
また、ＩＳＡは、（たとえば、命令を実行することにより）プライベートステータス領域はもはや使用されるべきではないことをＶＭＭが指定するメカニズムを提供する場合がある。他の実施の形態では、他の方法を使用してプライベートステータス領域が指定される場合がある。たとえば、モデルに特化したレジスタ（ＭＳＲ）に書き込み、ＩＳＡにおける命令を実行し、ストレージにおける位置に書き込むこと等により指定される場合がある。
【００７２】
先の例は実行ユニット及びロジック回路のコンテクストで本発明の実施の形態を記載する場合があるが、本発明の他の実施の形態はソフトウェアのやり方で達成することができる。たとえば、幾つかの実施の形態では、本発明は、本発明の実施の形態に係るプロセスを実行するため、コンピュータ（又は他の電子装置）をプログラムするために使用される場合がある命令をそこに記憶するマシン又はコンピュータ読取り可能な媒体を含むコンピュータプログラムプロダクト又はソフトウェアとして提供される場合がある。他の実施の形態では、動作は、マイクロコード、ハードワイヤロジックを含む特定のハードウェアコンポーネントにより、又はプログラムコンピュータコンポーネント及びカスタムハードウェアコンポーネントの組み合わせにより実行される場合がある。
【００７３】
したがって、マシン読取り可能な媒体は、限定されるものではないが、フロプティカルディスク、オプティカルディスク、コンパクトディスク、リードオンリメモリ（ＣＤ−ＲＯＭ）、及び磁気−光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、インターネット、電気、光、音響を通した伝送、（たとえば搬送波、赤外線信号、デジタル信号等といった）他の形式の伝播された信号を含む場合がある。
【００７４】
さらに、設計は、創作、シミュレーション、から製造までの様々なステージを通過する。設計を表すデータは、多数のやり方での設計を表す場合がある。はじめに、シミュレーションで有効であるように、ハードウェア記述言語又は別の機能的な記述言語を使用して、ハードウェアが表される場合がある。さらに、ロジック及び／又はトランジスタをもつ回路レベルモデルが設計プロセスの幾つかのステージで生成される場合がある。さらに、大部分の設計は、幾つかのステージで、ハードウェアモデルにおける各種デバイスの物理的な置き換えを表すデータのレベルに到達する。従来の半導体製造技術が使用されるケースでは、ハードウェアモデルを表すデータは、集積回路を生成するために使用されるマスクの異なるマスクレイヤでの各種の特徴の有無を規定するデータである場合がある。設計の何れかの表現では、マシン読取り可能な媒体の形式でデータが記憶される場合がある。かかる情報を伝送するために変調又はさもなければ生成された光又は電波、メモリ、若しくはディスクのような磁気又は光ストレージは、マシン読取り可能な媒体である場合がある。これらの媒体のいずれかは、デザイン又はソフトウェア情報を「搬送」又は「指示」する場合がある。コード又はデザインを指示又は搬送する電気的な搬送波が送信されるとき、電気信号のコピー、バッファリング、又は再送信が実行される範囲にまで、新たなコピーがつくられる。したがって、通信プロバイダ又はネットワークプロバイダは、本発明の技術を実施するアーティクル（搬送波）のコピーをつくる場合がある。
【００７５】
上述された仕様では、本発明は公的にアクセス可能なストレージからデータ処理マシンの状態に関するデータにアクセスするための各種技術を参照して説明される。しかし、様々な変更及び変化は、特許請求の範囲で述べたような、本発明の実施の形態の広い精神及び範囲から逸脱することなしになされる場合がある。したがって、明細書及び図面は、限定的な意味よりはむしろ例示的にみなされる。
【符号の説明】
【００７６】
１２０：ソフトウェア
１２２：オペレーティングシステム
１２４：アプリケーションソフトウェア
１１０：プロセッサ
１１４：レジスタ
１３０：ストレージ
１４０：入力/出力装置
１０２：プラットフォームハードウェア
【図１】
2011076632.tif 000003
【図２】
2011076632.tif 000004
【図３】
2011076632.tif 000005
【図４】
2011076632.tif 000006
【図５】
2011076632.tif 000007
【図６】
2011076632.tif 000008