(57)【特許請求の範囲】
【請求項１】
マイクロコードシーケンサと、
入力／出力アドレススペース及び第一のビットサイズの第一のメモリアドレスに関連する入力／出力アクセス動作を検出するマクロコード命令を遮断する手段であって、前記入力／出力アクセス動作に関連する前記第一のビットサイズを有するコンフィギュレーションメモリアドレスと前記第一のビットサイズを有するコンフィギュレーションデータとを結合して第二のメモリアドレスを生成することで、前記第一のメモリアドレスを前記第一のビットサイズよりも大きい第二のビットサイズの第二のメモリアドレスに変換するマクロコード命令を遮断する手段とを備え、
前記マクロコード命令を遮断する手段は、前記マイクロコードシーケンサの一部を形成し、前記マイクロコードシーケンサは、前記コンフィギュレーションアドレスを記録するスクラッチパッドメモリにアクセスする、
ことを特徴とするプロセッサ。
【請求項２】
前記第一のビットサイズは、前記第二のビットサイズの約２分の１又は約４分の１のうちの１つである、
請求項１記載のプロセッサ。
【請求項３】
前記スクラッチパッドメモリを更に備える、
請求項１記載のプロセッサ。
【請求項４】
マクロコード命令の遮断手段を含むマイクロコードシーケンサを有する第一のプロセッサと、前記マクロコード命令の遮断手段は、前記マイクロコードシーケンサの一部を形成し、入力／出力アドレススペース及び第一のビットサイズの第一のメモリアドレスに関連される第一の入力／出力アクセス動作を検出し、前記入力／出力アクセス動作に関連する前記第一のビットサイズを有するコンフィギュレーションメモリアドレスと前記第一のビットサイズを有するコンフィギュレーションデータとを結合して第二のメモリアドレスを生成することで、前記第一のメモリアドレスを前記第一のビットサイズよりも大きい第二のビットサイズの第二のメモリアドレスに変換し、前記マイクロコードシーケンサは、コンフィギュレーションメモリアドレスを記録するスクラッチパッドメモリにアクセスし、
前記第一のプロセッサに電気的に結合されるフラットパネルディスプレイとを備える、
システム。
【請求項５】
前記第一のプロセッサに動作電力を供給するコンピュータマザーボードを更に備える、
請求項４記載のシステム。
【請求項６】
前記第一のプロセッサにより処理されるデータを送信するワイヤレストランシーバを更に備える、
請求項４記載のシステム。
【請求項７】
前記入力／出力アドレススペース及び前記第一のビットサイズの第三のメモリアドレスに関連する第二の入力／出力アクセス動作を検出し、前記第二の入力／出力アクセス動作に関連するコンフィギュレーションメモリアドレスとコンフィギュレーションデータとを結合して第四のメモリアドレスを生成することで、前記第三のメモリアドレスを前記第二のビットサイズの第四のメモリアドレスに変換する第二のマクロコード命令の遮断手段を含む第二のプロセッサと、
前記第一のプロセッサと前記第二のプロセッサを収容する集積回路と、
を更に備える請求項４記載のシステム。
【請求項８】
システムマネージメントの割り込みが前記第一のプロセッサにより検出された後、前記関連されるコンフィギュレーションデータのコピーを受けるシステムマネージメントメモリを更に備える、
請求項４記載のシステム。
【請求項９】
前記スクラッチパッドメモリを更に備える、
請求項４記載のシステム。
【請求項１０】
マイクロコードシーケンサの一部を形成するマクロコード命令の遮断手段により、入力／出力アドレススペース及び第一のビットサイズの第一のメモリアドレスに関連する入力／出力アクセス動作を検出するステップと、
前記マクロコード命令の遮断手段により、前記入力／出力アクセス動作に関連する前記第一のビットサイズを有するコンフィギュレーションメモリアドレスと前記第一のビットサイズを有するコンフィギュレーションデータとを、前記第一のビットサイズよりも大きな第二のビットサイズを有する第二のメモリアドレスビットサイズに関連するパケットに結合するステップと、
前記マイクロコードシーケンサにより、前記コンフィギュレーションメモリアドレスを記録するスクラッチパッドメモリにアクセスするステップとを含む、
方法。
【請求項１１】
前記コンフィギュレーションメモリアドレスをマイクロコードスクラッチパッドメモリに保存するステップを更に含む、
請求項１０記載の方法。
【請求項１２】
前記コンフィギュレーションメモリアドレスをスレッド毎に保存するステップを更に含む、
請求項１０記載の方法。
【請求項１３】
前記コンフィギュレーションメモリアドレス及び前記コンフィギュレーションデータを使用して、コアハードウェアエレメントにおけるメモリマップレジスタと通信するためにデコードされるメモリアドレスに書き込むステップを更に含む、
請求項１０記載の方法。
【請求項１４】
前記メモリマップレジスタは、ＰＣＩ（Peripheral  Component  Interconnect）コンフィギュレーションスペースの一部としてデコードされる、
請求項１３記載の方法。
【請求項１５】
前記コンフィギュレーションメモリアドレス及び前記コンフィギュレーションデータに関連するマイクロコードコンテクストを保存するステップと、
システムマネージメントの割り込みを処理するステップと、
前記マイクロコードのコンテクストを回復するステップと、
を更に含む請求項１０記載の方法。
【請求項１６】
システムマネージメントの割り込みを検出するステップと、
システムマネージメントメモリに前記コンフィギュレーションデータのコピーを保存するステップと、
を更に含む請求項１０記載の方法。
【請求項１７】
前記コンフィギュレーションデータのコピーを検索するステップと、
前記コンフィギュレーションデータを前記コンフィギュレーションアドレスに書き込むステップと、
再開命令を実行するステップと、
を更に含む請求項１６記載の方法。
【請求項１８】
プロセッサにより実行されたとき、前記プロセッサに、
マイクロコードシーケンサの一部を形成するマクロコード命令の遮断手段により、入力／出力アドレススペース及び第一のビットサイズの第一のメモリアドレスに関連する入力／出力アクセス動作を検出するステップと、
前記マクロコード命令の遮断手段により、前記入力／出力アクセス動作に関連する前記第一のビットサイズを有するコンフィギュレーションメモリアドレスと前記第一のビットサイズを有するコンフィギュレーションデータとを、前記第一のビットサイズよりも大きな第二のビットサイズを有する第二のメモリアドレスに関連するパケットに結合するステップと、
前記マイクロコードシーケンサにより、前記コンフィギュレーションメモリアドレスを記録するスクラッチパッドメモリにアクセスするステップと、
を含む方法を実行させる命令を含むプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記命令は、前記プロセッサにより実行されたとき、前記プロセッサに、前記パケットのコンテンツにより定義されるアドレスでの読み取り動作又は書き込み動作のうちの１つを実行するステップを含む方法を実行させる、
請求項１８記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記パケットのコンテンツにより定義されるアドレスは、コアハードウェアにおけるメモリマップレジスタと通信するためにデコードされるメモリアドレスを含む、
請求項１９記載のコンピュータ読み取り可能な記憶媒体。
【請求項２１】
前記命令は、前記プロセッサにより実行されたとき、前記プロセッサに、前記検出するステップを達成するためにマイクロコードのシーケンスを実行するステップを含む方法を実行させる、
請求項１８記載のコンピュータ読み取り可能な記憶媒体。
【請求項２２】
前記命令は、前記プロセッサにより実行されたとき、前記プロセッサに、
システムマネージメントの割り込みを検出するステップ、及びシステムマネージメントメモリに前記コンフィギュレーションメモリアドレスに関連するデータを含む多数のマイクロコードスクラッチパッドメモリのコンテンツを保存するステップを含む方法を実行させる、
請求項１８記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタ及び他のメモリロケーションを介して情報をハードウェア装置に伝達するために使用される装置、システム及び方法を含む、データ処理全般に関する。
【背景技術】
【０００２】
旧式の中央処理装置（ＣＰＵ）は、メモリコントローラのようなプラットフォームコンポーネントをプロセッサ自身と同じパッケージに典型的に集積していない。かかる集積されていないコンポーネントと通信するため、オペレーティングシステム（ＯＳ）は、ＰＣＩ（Pripheral  Component  Interconnect）２．０インタフェースのようなレジスタベースのインタフェースを含む、様々なスキームを使用している。ＰＣＩ２．０インタフェースに関する更なる情報については、１９９８年１２月１８日付けのＰＣＩ−ＳＩＧ（Special  Internet  Group）により公表された対応する仕様のＲｅｖｉｓｉｏｎ２．２及び後のＲｅｖｉｓｉｏｎを参照されたい。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
パフォーマンスを改善するため、メモリコントローラのようなプラットフォームコンポーネントは、プロセッサコアと同じパッケージにあるように組み立てられる。かかるデザインをシンプルにし、更にパフォーマンスを高めるため、幾つかの集積されたプラットフォームコンポーネントのレジスタは、従来の３２ビットの入力／出力（I/O）スペースから６４ビットのメモリマップされたアドレススペースに移行している。しかし、かかる集積されたプラットフォームコンポーネントと使用されるレガシー（旧式）のＯＳソフトウェアは、ＰＣＩインタフェースのような旧式のレジスタベースのメカニズムを使用してコンポーネントアドレスにアクセスしようとする。
【発明を実施するための最良の形態】
【０００４】
図１は、本発明の様々な実施の形態に係る装置１００及びシステム１６０のブロック図である。先に記載された挑戦に対処するため、ある実施の形態は、ＰＣＩ  Ｉ／Ｏアドレススペースで使用されるような、ファンクショナルメモリマップレジスタブロック（Functional  Memory  Mapped  Register  Block）をエミュレートするために動作する。この方式では、旧式のＯＳと集積されたプラットフォームコンポーネントとの間のハードウェアコンパチビリティは、かかるコンポーネント（たとえばメモリコントローラ、キャッシュコントローラ等）がＰＣＩベースであろうとなかろうと維持される。
【０００５】
したがって、ある実施の形態では、アドレススペースエミュレーション装置１００は、１以上のプロセッサＰ１，Ｐ２を有する場合がある。プロセッサＰ１，Ｐ２は、次いで、アクセスが集積装置１５４に向けられるとき、ＰＣＩ  Ｉ／Ｏアドレススペース１７０のようなＩ／Ｏアドレススペース１２２、及び第一のメモリアドレスビットサイズ１２６（たとえば１６ビット又は３２ビット等）と関連されるＩ／Ｏアクセスオペレーション１１８’，１１８’’を検出するためのマクロコード命令の遮断手段（ＭＣＩＩ：Macro-Code  Instruction  Intercepter）１１４を含む。ＭＣＩＩ１１４は、マイクロコードシーケンサ１２８の一部を形成する。かかるアクセスオペレーション１１８’，１１８’’は、ＰＣＩ  Ｉ／Ｏアドレススペース１７０へのメモリ読み取り又はメモリ書き込みを含む、Ｉ／Ｏアドレススペース１２２のアクセス動作の間に生じる。しかし、アクセス動作１１８’，１１８’’は、従来のＩ／Ｏアドレススペース１２２におけるアドレスの代わりに、メモリアドレスＨＭＡＤＲ１，ＨＭＡＤＤＲ２，．．．，ＨＭＡＤＤＲＮに実際にマッピングされる集積装置１５４に向けられない場合には検出されない。
【０００６】
ある実施の形態では、マイクロコードスクラッチパッドメモリのような、スクラッチパッドメモリ１３０’，１３０’’は、オペレーティングシステムスレッド１３８及びＩ／Ｏアドレススペース１２２と関連されるコンフィギュレーションメモリアドレス１３４を記録するために動作する。ＭＣＩＩ  １１４は、コンフィギュレーションメモリアドレス１３４と関連されるコンフィギュレーションデータ１４２を結合して、第一のメモリビットサイズサイズ１２６よりも大きい第二のメモリアドレスビットサイズ１４６を有するパケットＰＫＴにするために動作する。次いで、パケットＰＫＴは、プロセッサパッケージ１６２における（たとえば集積されたプラットフォーム装置１５４といった）装置にアクセスするための高いメモリロケーションを含む、（たとえばＨＭＡＤＤＲ）といったメモリロケーションへの直接的又は間接的な参照として使用される。たとえば、４ＧＢ（ｌｅｓｓ  １６ＭＢ）と４ＧＢ（ｌｅｓｓ３２ＭＢ）との間の領域におけるアドレスは、ある実施の形態におけるかかる動作について確保される。したがって、たとえば、アドレス０ｘＦＡ００_００００は、結合されたＰＣＩパケットを書き込むために内部的に使用することができる高いメモリアドレスである。勿論、他のアドレスレンジが使用される場合もある。
【０００７】
ＰＣＩ  Ｉ／Ｏスペースにアクセスすることに関し、０ｘＣＦ８に書き込まれるものは何であっても、所望のハイメモリアドレスＨＭＡＤＤＲ１，ＨＭＡＤＤＲ２，．．．，ＨＭＡＤＤＲＮを固有に定義するために使用される。書き込み又は読み取りされたデータは、６４ビットワードサイズ、又はオリジナルビットサイズ１２６’，１２６’’よりも大きなビットサイズ１４６に埋め込まれる。たとえば、旧式のＯＳ１５０は、レジスタのインデックスを選択するために動作し、このレジスタに対して、結果として得られるデータバイト（又はワード）が、先に引用されたＰＣＩ仕様により決定されるように、パケットフォーマットでアドレス０ｘｃｆ８に結合されたアドレス及びレジスタセレクションを書き込むことで書き込まれる。このアドレス情報は、抽出され、パケットを形成するために次のＩ／Ｏアドレスアクセスからのデータと結合される。これにより、結合されたアドレス及びレジスタセレクションにより定義されるハイメモリアドレスに適切に書き込まれるためにフォーマットされる。
【０００８】
かかる装置１００の実施の形態がどのように動作するかを良好に理解するため、以下の例を考える。レガシーＯＳ１５０は、周辺装置のような集積装置１５４が従来のＰＣＩ  ２．０Ｉ／Ｏアドレススペース１７０におけるそれぞれのロケーションに従ってアクセスされるという想定の下で動作する。すなわち、コンフィギュレーションメモリアドレス１３４及び関連されるコンフィギュレーションデータ１４２は、ＰＣＩアドレスコンフィギュレーションスペース１７０にアクセスすることが意図される。したがって、集積されたプラットフォーム装置１５４のレジスタ１５８へのアクセスは、（たとえば、ビット３１のセットを有する０ｘＣＦ８のＣＯＮＦ＿ＡＤＤＲＥＳＳＳＳコンフィギュレーションメモリアドレスといった）ＰＣＩ  Ｉ／Ｏスペースにおける選択されたアドレスに対して、３２ビットＩ／Ｏメモリアクセスサイクルを使用して行われる。ＭＣＩＩ  １１４は、おそらくＣＰＵ  Ｉ／Ｏマイクロコードモジュールの一部として実現され、それぞれ（論理的又は物理的）ＣＰＵスレッド１３８’についてマイクロコードにより確保されるスクラッチパッドメモリ１３０’，１３０’’へのアクセス動作１１８’，１１８’’と関連されるデータ１４２を保存するために動作する。
【０００９】
ＰＣＩアクセスペアは処理エンティティ（たとえばプロセッサＰ１又はＰ２）によるクリティカルコードシーケンスとして実行されるので、同じＣＰＵスレッド１３８’は、第二のＰＣＩ  Ｉ／Ｏアドレス（たとえば０ｘＣＦＣのＣＩＮＦＩＧ＿ＤＡＴＡアドレス）へのアクセスを発するために動作する。ＭＣＩＩ  １１４は、３２ビットコンフィギュレーションアドレス１３４と３２ビットコンフィギュレーションデータ１４２を結合し、単一の６４ビットパケットＰＫＴにするために動作する。６４ビットパケットＰＫＴは、参照（たとえばインデックス）又はアドレスとして使用され、これらは、メモリマップレジスタとしてレジスタを使用する、集積されたＰＣＩ周辺装置を含む、コアハードウェア装置１５４のような集積されたプラットフォームハードウェア装置と通信するために特別にデコードされるハイメモリアドレス（たとえばアドレスＨＭＡＤＤＲＮ）に直接的又は間接的に対応する。メモリの読み取り又はメモリの書き込みは、参照されたロケーション１５８に対して行われる。この方式では、アクセスオペレーション１１８’，１１８’’が検出され、Ｉ／Ｏアドレススペース１２２は、コアハードウェア装置１５４のような集積されたプラットフォームコンポーネントとの通信においてレガシーＯＳ１５０を支援するためにエミュレートされる。
【００１０】
ある実施の形態では、単一の集積回路パッケージ１７２は、プロセッサＰ１（又はマルチコアプロセッサパッケージの一部としてマルチプルプロセッサＰ１，Ｐ２）、及びスクラッチパッドメモリ１３０’，１３０’’を収容する。ＭＣＩＩ  １１４も同様にパッケージ１７２に収容される場合があり、必要に応じて、ハードウェア、ソフトウェア、ファームウェア又はこれらの組み合わせを有する場合がある。ＣＰＵマイクロコードは、ある実施の形態では、記載されるエミュレーションを達成するために使用され、あるケースでは、エミュレーションは、更なるハードウェアの必要なしに、マイクロコード命令を使用することで全体的に達成される。
【００１１】
プロセッサＰ１，Ｐ２は、メモリマップレジスタのような、１以上の関連されるレジスタ１５８を有する、集積されたメモリコントローラコアハードウェアエレメントのような、１以上のコアハードウェア装置１５４をそれぞれ含む。コンフィギュレーションメモリアドレス１３４及び／又は関連されるコンフィギュレーションデータ１４２は、様々なハイメモリアドレスＨＭＡＤＤＲ１，ＨＭＡＤＤＲ２，．．．，ＨＭＡＤＤＲＮで配置されるレジスタ１５８のコンテンツ（たとえばビット）を変更するために使用される。
【００１２】
先に述べたように、第一のメモリアドレスビットサイズ１２６は、第二のメモリアドレスビットサイズ１４６の小部分を有する。たとえば、ある実施の形態では、第一のメモリアドレスビットサイズ１２６は、第二のメモリアドレスビットサイズ１４６の約２分の１又は約４分の１である。したがって、第一のメモリアドレスビットサイズ１２６が１６ビット又は３２ビットである場合、第二のメモリアドレスビットサイズ１４６は、３２ビット、６４ビット又は１２８ビットのそれぞれである。これらのサイズは、単なる例示であって、限定するものではない。第一のメモリアドレスビットサイズ１２６及び第二のメモリアドレスビットサイズ１４６は、本実施の形態で記載される装置１００及びシステム１６０の設計者により選択されるような何れかのビット数である。
【００１３】
あるケースでは、ＳＭＩ（System  Management  Interrupt）を含む高い優先度の割り込みにより、Ｉ／Ｏアドレススペース１２２にアクセスするプロセスが割り込まれる。たとえば、ある状況では、ＰＣＩコンフィギュレーションアドレス０ｘＣＦ８へのアクセスには、コンフィギュレーションデータアドレス０ｘＣＦＣからの、及び／又はコンフィギュレーションデータアドレス０ｘＣＦＣへの、期待されるデータ読み取り／書き込み動作が後続しない。かかる割り込みが生じた場合（たとえばＳＭＩ）、制御がプラットフォームシステムマネージメントモード（ＳＭＭ）コードに転送される。このポイントで、ＭＣＩＩ  １１４は、（ＳＭＭルーチンに通常はアクセス可能ではない）割り込みされたスレッドについてスクラッチパッドメモリ１３０’，１３０’’コンテンツを保存するために動作する。したがって、ある実施の形態では、ＳＭＭルーチンは、アドレス０ｘＣＦ８への３２ビットの読み取りを行い、ＳＭＭメモリ１６４の保存されたデータエリア１６８のような保存されたＳＭＭデータエリア１６８に結果的に得られたデータを保存する。なお、あるシステムでは、単一のＳＭＩにより、全てのプロセッサＰ１，Ｐ２が、スレッド当りのベース（per-thread  basis）で、ＳＭＭメモリ１６４におけるスクラッチパッドメモリ１３０’，１３０’’コンテンツを保存するために動作することになるように、全てのプロセッサＰ１，Ｐ２のＳＭＩが相互接続される。
【００１４】
更なる周辺Ｉ／Ｏスペース１２２のアクセスがＳＭＩのサービスの間に実行されるとするとどうであろうか？このケースでは、ＳＭＭコードは、０ｘＣＦ８  Ｉ／Ｏのコンテンツを読み取り、ＳＭＭメモリ１６４内のＳＭＩデータエリア１６６にコンテンツを保存するために動作する。ここで、ＳＭＭコードは、自由に周辺のＩ／Ｏアドレススペース１２２にアクセスすることができる。しかし、前の動作モードに戻る前に、ＳＭＭコードは、０ｘＣＦ８レジスタに０ｘＣＦ８  Ｉ／Ｏアドレスの前に保存されたコンテンツを書き込み、保存されたデータで０ＸＣＦ８へのＩ／Ｏアクセスを行う。このアクセス動作は、記載されたやり方で完全なエミュレーションへの次の０ｘＣＦＣメモリアクセスを待つ、ＭＣＩＩ  １１４により更に検出される。したがって、ある実施の形態では、ＳＭＭコードは、スクラッチパッドメモリ１３０’，１３０’’に位置される０ｘＣＦ８インデックスをそれ自身所有のＳＭＩデータエリア（たとえばエリア１６６）に保存し、必要な場合、ＳＭＩサービスルーチンの実行の間に更なる０ｘＣＦ８及び０ｘＣＦＣアクセスを実行する。
【００１５】
（プロセッサＰ１，Ｐ２に含まれる）スクラッチパッドメモリ１３０’，１３０’’は、ＳＭＭメモリ１６４と同じではない。たとえば、スクラッチパッドメモリ１３０’，１３０’’は、マイクロコードスクラッチパッドメモリを有し、マイクロコードフラグがダイナミックランダムアクセスメモリ（ＤＲＡＭ）に位置されるように、ＳＭＭメモリ１６４は、確保されたメモリを有するために選択される。したがって、更なるＳＭＩコールをサービスするＳＭＭコード（たとえば、ＳＭＭが入力された後に生じるＳＭＩ）は、パッケージ１７２内からスクラッチパッドメモリ１３０’，１３０’’コンテンツを保存するために動作しない。むしろ、ＳＭＩをサービスするＳＭＭコードは、Ｉ／Ｏ命令を使用して０ｘＣＦ８  Ｉ／Ｏアドレスを読み取り、おそらく個別に割り当てられたＳＭＩデータエリア１６６において、ＳＭＭメモリ１６４において関連するデータを保存するために動作する。
【００１６】
再開（たとえばＲＳＭ）命令の差し迫った実行の検出に応じて、それぞれのプロセッサＰ１，Ｐ２のＭＣＩＩ  １１４は、ＳＭＭメモリ１６４からの個別のスクラッチパッドメモリ１３０’，１３０’’にスレッドに特化した０ｘＣＦ８インデックス値を回復するために動作する。再開命令が実行された後、割り込みされた周辺のＩ／Ｏスペース１２２のアクセス（たとえば、０ｘＣＦ８アドレスへのアクセス）は影響されたスレッド１３８により０ｘＣＦＣへの後続するアクセスによるそれぞれのスレッド１３８により完了される。
【００１７】
他の実施の形態が実現される場合がある。たとえば、様々な実施の形態に係るシステム１６０は、マルチコアパッケージ１７２の一部として、又はパッケージ１６２の集合として、互いに結合される１以上のプロセッサＰ１，Ｐ２を含む。多くのバリエーションが可能である。たとえば、第一のプロセッサＰ１は、Ｉ／Ｏアドレススペース１２２及び第一のメモリアドレスビットサイズ１２６と関連付けされた第一のＩ／Ｏアクセスオペレーション１１８’を検出するためのＭＣＩＩ  １１４’を含む。第二のプロセッサＰ２は、Ｉ／Ｏアドレススペース１２２及び第二のメモリアドレスビットサイズ１２６に関連される第二のＩ／Ｏアクセスオペレーション１１８’’を検出するために第二のＭＣＩＩ  １１４’’を含む。プロセッサＰ１，Ｐ２は、物理的なプロセッサ又は論理的なプロセッサである。
【００１８】
第一のプロセッサＰ１に含まれる第一のスクラッチパッドメモリ１３０’は、第一のＯＳスレッド１３８’及びＩ／Ｏアドレススペース１２２に関連されるコンフィギュレーションアドレス１３４’を記録するために動作し、第一のＭＣＩＩ  １１４’は、第一のＯＳスレッド１３８’に関連されるコンフィギュレーションメモリアドレス１３４’と関連されるコンフィギュレーションデータ１４２’とを、先に記載されたように、第一のメモリビットサイズ１２６よりも大きい第二のメモリアドレスビットサイズ１４６を有する第一のパケットＰＫＴ’に結合するために動作する。マイクロコードスクラッチパッドメモリのような第二のスクラッチパッドメモリ１３０’’は、第二のＯＳスレッド１３８’’及びＩ／Ｏアドレススペース１２２に関連されるコンフィギュレーションアドレス１３４’’を記録するために動作する。第二のＭＣＩＩ  １１４’’は、第二のＯＳスレッド１３８’’に関連されるコンフィギュレーションメモリアドレス１３４’’と関連されるコンフィギュレーションデータ１４２’’とを、第二のメモリアドレスビットサイズ１４６を有する第二のパケットＰＫＴ’’に結合するために動作する。スクラッチパッドメモリ１３０’，１３０’’は、マイクロコードシーケンサ１２８によりアクセスされる。
【００１９】
システム１６０は、プロセッサＰ１，Ｐ２により処理されるデータ（たとえばコンフィギュレーションデータ１４２）を表示する、陰極線管ディスプレイ、フラットパネルディスプレイ、その他を含む、１以上のディスプレイ１８８を含む。ディスプレイ１８８は、直接に、又はバス及び／又はグラフィックスコントローラ周辺機器（図示せず）を介してプロセッサＰ１，Ｐ２に電気的に接続される。コンピュータマザーボード１９４は、プロセッサＰ１，Ｐ２に動作電力を供給するために動作する。システム１６０は、無線トランシーバに結合される、無指向性、ダイポール、パッチ、又はビームアンテナを含む、１以上のアンテナ１９２と同様に、プロセッサＰ１，Ｐ２により処理されたデータを送信する１以上の無線トランシーバ１９６を含む。ある実施の形態では、システム１６０は、ＳＭＩを含むハイレベル割り込みがプロセッサＰ１，Ｐ２により検出された後、関連するコンフィギュレーションデータ１４２のコピーを受信するためのシステムマネージメントメモリ１６４を含む。
【００２０】
先に記載された何れかのコンポーネントは、ソフトウェアを介したシミュレーションを含めて、様々なやり方で実現することができる。したがって、装置１００；プロセッサＰ１，Ｐ２；ＭＣＩＩ  １１４’，１１４’’；Ｉ／Ｏアクセスオペレーション１１８’，１１８’’；Ｉ／Ｏアドレススペース１２２；第一及び第二のメモリアドレスビットサイズ１２６，１４６；マイクロコードシーケンサ１２８；スクラッチパッドメモリ１３０’，１３０’’；コンフィギュレーションメモリアドレス１３４；ＯＳスレッド１３８’，１３８’’；関連されるコンフィギュレーションデータ１４２’，１４２’’；ＯＳ１５０；集積装置１５４；ＳＭＩデータエリア１６６；確保されたＳＭＭメモリエリア１６８；Ｉ／Ｏアドレススペース１７０；ディスプレイ１８８；アンテナ１９２；マザーボード１９４；無線トランシーバ１９６；メモリアドレスＨＭＡＤＤＲ１，ＨＭＡＤＤＲ２，．．．，ＨＭＡＤＤＲＮ；パケットＰＫＴ’，ＰＫＴ’’；及び割り込みＳＭＩは、本明細書では「モジュール」として全て特徴付けされる。
【００２１】
これらのモジュールは、装置１００及びシステム１６０のアーキテクトにより所望されるように、様々な実施の形態の特定の実現について適切なように、ハードウェア回路、シングル又はマルチプロセッサ回路、メモリ回路、ソフトウェアプログラムモジュール及びオブジェクト、ファームウェア、及びその組み合わせを含む。モジュールは、ソフトウェア電気信号シミュレーションパッケージ、パワーユーセージ及びディストリビューションシミュレーションパッケージ、ネットワークセキュリティシミュレーションパッケージ、電力／熱消散シミュレーションパッケージ、信号送信−受信シミュレーションパッケージ、又は、様々な潜在的な実施の形態の動作をシミュレートするために使用されるソフトウェア及びハードウェアの何れかの組み合わせのようなシステムオペレーションシミュレーションパッケージに含まれる。かかるシミュレーションは、たとえば実施の形態を特徴づけ又は検査するために使用される。
【００２２】
様々な実施の形態の装置及びシステムは、シングル−マルチコアプロセッサを有するデスクトップ又はラップトップコンピュータ以外のアプリケーションで使用することができることを理解されたい。したがって、本発明の様々な実施の形態は、そのように制限されるべきではない。装置１００及びシステム１６０の例示は、様々な実施の形態の構造の一般的な理解を提供することが意図され、本明細書で説明された構造を利用する装置及びシステムの全てのエレメント及び機能の完全な説明としての役割を果たすことが意図されない。
【００２３】
様々な実施の形態の新たな装置及びシステムを含むアプリケーションは、高速コンピュータで使用される電子回路、通信及び信号処理回路、モデム、シングル又はマルチプロセッサモジュール、１つ又は複数のエンベデッドプロセッサ、及びマルチレイヤ、マルチチップモジュールを含む特定用途向けモジュールを含む。かかる装置及びシステムは、データブリッジ、スイッチ及びハブ；テレビジョン及びセルラフォン；パーソナルコンピュータ及びワークステーション；ラジオ及びビデオプレーヤ；及び特に自動車のような、様々な電子システム内のサブコンポーネントとして更に含まれる。
【００２４】
ある実施の形態は、多数の方法を含む。たとえば、図２は、本発明の様々な実施の形態に係る幾つかの方法２１１を説明するフローチャートを含む。アドレススペースエミュレーション方法２１１は、周辺のＩ／Ｏアドレススペースアクセスに応じて実行され、何れかのスレッドの実行前のような他の選択された時間で実行される。ある実施の形態では、方法２１１は、マルチコアパッケージにおけるそれぞれのプロセッサにより、及び／又はパッケージにおけるそれぞれのプロセッサコアにおけるそれぞれのオペレーショナルスレッドにより実行される。
【００２５】
方法２１１は、おそらく選択されたコンフィギュレーションメモリアドレス及び第一のメモリアドレスビットサイズ（たとえば０ｘＣＦ８及び３２ビット）に関連される、集積装置へのＩ／Ｏアクセス動作を検出することによりブロック２１５で始まる。マイクロコードのシーケンスは、Ｉ／Ｏアクセス動作の検出を達成するために実行される。
【００２６】
ある実施の形態では、方法２１１は、ブロック２１９で、マイクロコードスクラッチパッドメモリのような、スクラッチパッドメモリにおけるコンフィギュレーションメモリアドレスを保存することを含む。この動作は、スレッド当たりに基づいて、コンフィギュレーションメモリアドレスを保存することを含む。
【００２７】
その後のＩ／Ｏアドレススペースへのメモリ読み取り又はメモリ書き込みがブロック２２３で検出された場合、方法２１１は、ブロック２２７で、コンフィギュレーションメモリアドレスと関連されるコンフィギュレーションデータとを、パケットに結合することを含む。パケットは、先に述べたように、第一のメモリアドレスビットサイズよりも大きい第二のメモリアドレスビットサイズを有する。
【００２８】
本方法２１１は、ブロック２３１で、パケットのコンテンツにより定義されるアドレスへの読み取り動作又は書き込み動作のうちの１つを実行することを含むように進む。パケットのコンテンツにより定義されるアドレスは、（たとえば、読み取り／書き込み動作を現在実行しているプロセッサと同じパッケージに集積されるＰＣＩコンパチブル周辺装置のような、プロセッサと同じパッケージに集積されているプラットフォームハードウェアコンポーネントといった）コアハードウェアエレメントにおけるメモリマップレジスタと通信するためにデコードされるメモリアドレスを含む。したがって、本方法２１１は、ブロック２３１で、（メモリマップレジスタを定義するため）コンフィギュレーションメモリアドレス及び関連するコンフィギュレーションデータを使用したコアハードウェアエレメントにおけるメモリマップレジスタと通信するためにデコードされるメモリアドレスへの書き込みを含む。ブロック２２３で、読み取り／書き込み動作が検出されない場合、ブロック２３５で、ＳＭＩのようなハイレベルの割り込みが検出されない場合、本方法２１１は、ブロック２２７に関して記載される動作を継続することを含む。
【００２９】
ある実施の形態では、ブロック２３５で、ＳＭＩのようなハイレベルの割り込みが検出された場合、本方法２１１は、ブロック２４３でＳＭＭコードを入力又は実行し、ブロック２４７でコンフィギュレーションメモリアドレス及び関連されるコンフィギュレーションデータに関連する、マイクロコードコンテクストのようなコンテクストを保存する。これは、０ｘＣＦ８コンフィギュレーションアドレスを読み取り、ＳＭＭ保存メモリに読み取られた情報のコピーを直接に保存する。ある実施の形態では、これは、ＳＭＭ保存メモリのような、システムマネージメントメモリにコンフィギュレーションメモリアドレスに関連するデータを含む、１以上の（たとえば多数の）マイクロコードスクラッチパッドメモリのコンテンツを保存することを含む。
【００３０】
本方法２１１は、ブロック２５１で、ＳＭＩのような割り込みを処理することを含む。割り込み処理のルーチンは、おそらくＳＭＭ割り込みデータエリアを使用して、Ｉ／Ｏアドレススペースにアクセスし、ある実施の形態では、かかるアクセスは、ＭＣＩＩにより検出されない（たとえば、０ｘＣＦ８及び０ｘＣＦＣレジスタがＰＣＩ２．０アクセスコンストラクト外で使用することができる）。ブロック２５５で割り込み処理が終了したとき、方法２１１は、ブロック２５９でマイクロコードコンテクストのようなコンテクストを回復することを含む。このアクティビティは、（たとえばＳＭＭ保存メモリエリアといった）システムマネージメントメモリから関連されるコンフィギュレーションデータのコピーを検索し、関連されるコンフィギュレーションデータをコンフィギュレーションアドレスに再書き込みし、再開命令を実行することを含み、したがって、割り込みされたコンテクストに動作が戻る。ある実施の形態では、このアクティビティは、ＳＭＭコードの実行により全体的に向けられる。
【００３１】
本明細書で記載された方法は、記載される順序又は特定の順序で実行される必要がない。さらに、本明細書で識別される方法に関して記載される様々なアクティビティは、反復的、シリアル、又はパラレルな方式で実行される。パラメータ、コマンド、オペランド及び他のデータを含む情報は、１以上の搬送波の形式で送出及び受信される。
【００３２】
当業者であれば、ソフトウェアプログラムは、ソフトウェアプログラムで定義される機能を実行するコンピュータベースのシステムにおけるコンピュータ読み取り可能な媒体から起動される方式を理解されるであろう。様々なプログラミング言語は、本明細書で開示される方法を実現及び実行するために設計される１以上のソフトウェアプログラムをつくるために利用される。このプログラムは、Ｊａｖａ（登録商標）又はＣ＋＋のようなオブジェクト指向の言語を使用してオブジェクト指向のフォーマットで構築される。代替的に、プログラムは、アセンブリ又はＣのような手続き言語を使用して手続き指向のフォーマットで構築される。ソフトウェアコンポーネントは、リモートプロシジャーコールを含む、アプリケーションプログラムインタフェース又はインタープロセスコミュニケーション技術といった、当業者にとって公知の多数のメカニズムを使用して伝達する。様々な実施の形態の技術は、何れか特定のプログラミング言語又は環境に制限されない。
【００３３】
したがって、他の実施の形態が実現される場合がある。たとえば、図３は、コンピュータ、メモリシステム、磁気又は光ディスク、他のストレージ装置、及び／又は何れかのタイプの電子装置又はシステムのような、様々な実施の形態に係るアーティクル（製品）３８５のブロック図である。アーティクル３８５は、（たとえばコンピュータプログラム命令及び／又はデータといった）関連される情報３９１を有する、（たとえば電気的、光学的又は電磁的な導体を有する有形のメモリを含む、固定された、取り外し可能な記憶媒体といった）メモリ、又は搬送波のような、コンピュータ読み取り可能な媒体３８９に結合された（１以上のプロセッサを有する）コンピュータ３８７を含み、この情報３９１は、コンピュータ３８７により実行されたとき、コンピュータ３８７に、コンフィギュレーションメモリアドレス及び第一のメモリアドレスビットサイズに関連されるＩ／Ｏアクセス動作を検出すること、第一のメモリアドレスビットサイズよりも大きな第二のメモリアドレスビットサイズを有するパケットに、コンフィギュレーションメモリアドレス及び関連されるコンフィギュレーションデータを結合することを含む方法を実行させる。
【００３４】
他の動作は、パケットのコンテンツにより定義されるアドレスへの読み取り動作又は書き込み動作のうちの１つを実行することを含む（たとえばパケットのコンテンツにより定義されるアドレスは、コアハードウェアエレメントにおけるメモリマップレジスタと通信するためにデコードされるメモリアドレスを含む）。
【００３５】
ある実施の形態では、更なる動作は、システムマネージメントインターラプトを検出すること、システムマネージメントメモリにおけるコンフィギュレーションメモリアドレスと関連されるデータを含む多数のマイクロコードスクラッチのコンテンツを保存することを含む。他のアクティビティは、図２で説明された、及び先に記載された方法の一部を形成する動作の何れかを含む。
【００３６】
本実施の形態で開示された装置、システム及び方法を実現することは、６４ビット幅のメモリマップレジスタとして、ＣＰＵパッケージに含まれるメモリコントローラのような、集積されたプラットフォームレベルのリソースにアクセスすることを可能にするために動作する。さらに、他のソフトウェア（たとえば、０ｘＣＦ８及び０ｘＣＦＣアドレスを使用するアドレス指定されるハードウェア）により使用される従来のＰＣＩ２．０スペースとのレガシーＯＳソフトウェアのコンパチビリティが達成される。したがって、コンパチビリティが維持されつつ、効率及び性能が拡張される。
【００３７】
本発明の一部を形成する添付図面は、例示を通して、限定することなしに、対象物が実施される特定の実施の形態を示している。例示される実施の形態は、本明細書で開示された教示を当業者が実施するのを可能にするために十分に詳細に記載された。他の実施の形態は、これより利用かつ導出され、構造的かつ論理的な置き換え及び変化がこの開示の範囲から逸脱することなしになされる。したがって、詳細な説明は限定的な意味で解釈されるべきではなく、様々な実施の形態の範囲は、かかる請求項に与えられた権利と完全な範囲の等価なものと共に、特許請求の範囲によってのみ定義される。
【００３８】
本発明の対象物のかかる実施の形態は、１を超える発明が開示される場合、この出願の範囲を単一の発明又は発明の概念に自発的に限定することを意図することなしに、単に便宜上、用語「発明」により個々に又は集合的に参照される。したがって、特定の実施の形態が本明細書で例示及び記載されたが、同じ目的を達成するために計算されるアレンジメントは図示される特定の実施の形態について置き換えられる。この開示は、様々な実施の形態の何れか又は全ての適合又は変形をカバーすることが意図される。本明細書で特に記載されていない先の実施の形態と他の実施の形態の結合は、先の説明を検討することに応じて等業者にとって明らかとなるであろう。
【００３９】
開示の要約は、読者が技術的な開示の特性を迅速に確認するのを可能にする要約を必要とする３７Ｃ．Ｆ．Ｒ．§１．７２（ｂ）に準拠するために提供される。請求項の範囲又は意味を解釈又は限定するために使用されないことが理解される。さらに、上述された詳細な説明では、様々な機能が開示を合理化する目的で単一の実施の形態において互いにグループ化される。この開示の方法は、それぞれの請求項で明示的に引用されたよりも多くの特徴を必要とすることが解釈されるべきではない。むしろ、本発明の主要な内容は、単一の開示された実施の形態の全ての機能よりも少なく発見される場合がある。したがって、特許請求の範囲は、詳細な説明に盛り込まれ、それぞれの請求項は個別の実施の形態としてそれ自身について有効である。
【図面の簡単な説明】
【００４０】
【図１】本発明の様々な実施の形態に係る装置及びシステムのブロック図である。
【図２】本発明の様々な実施の形態に係る幾つかの方法を例示するフローチャートである。
【図３】本発明の様々な実施の形態に係るアーティクルのブロック図である。
【符号の説明】
【００４１】
１４２’，１４２’’：データ
１３０’，１３０’’：スクラッチパッド
１２８：シーケンサ
１２２：Ｉ／Ｏスペース
１５４：デバイス
１６４：ＳＭＭメモリ
１００：バス
【図１】
0005128122.tif 000002
【図２】
0005128122.tif 000003
【図３】
0005128122.tif 000004