JP3987577B2 - システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置 - Google Patents

システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置 Download PDF

Info

Publication number
JP3987577B2
JP3987577B2 JP50079998A JP50079998A JP3987577B2 JP 3987577 B2 JP3987577 B2 JP 3987577B2 JP 50079998 A JP50079998 A JP 50079998A JP 50079998 A JP50079998 A JP 50079998A JP 3987577 B2 JP3987577 B2 JP 3987577B2
Authority
JP
Japan
Prior art keywords
address
smram
bus
smm
alias
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP50079998A
Other languages
English (en)
Other versions
JP2000512406A5 (ja
JP2000512406A (ja
Inventor
レインハード,デニス
カーダッチ,ジェームズ・ピイ
ホリガン,ジョン・ダブリュ
ソンガー,ニール
グルー,アンドリュー・エフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2000512406A publication Critical patent/JP2000512406A/ja
Publication of JP2000512406A5 publication Critical patent/JP2000512406A5/ja
Application granted granted Critical
Publication of JP3987577B2 publication Critical patent/JP3987577B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

発明の背景
1.発明の分野
本発明はコンピュータ・システムに関し、より詳細には、システム管理モードで動作可能なコンピュータ・システムに関する。
2.関連技術の説明
システム管理モード(SMM)を使用すると、システム開発者は、電力管理やセキュリティなどの低水準機能をオペレーティング・システムやアプリケーション・プログラムに透過な方式で設けることができる。SMMでは、オペレーティング・システムやアプリケーション・ソフトウェアの動作に割り込んでこの種の低水準機能を実行できる。オペレーティング・システムやアプリケーション・ソフトウェアの動作は低水準機能の実行後割込み箇所から再開される。
低水準機能を開始するために、本明細書でシステム管理割込み(SMI)と呼ぶハードウェア割込みが生成される。プロセッサは、SMIを受け取ると、書込み中のもの全てが完了するのを待つ。また、プロセッサは、外部キャッシュなどの外部装置上で書込み中のものも待つ。そのすべての継続中の書込みが完了すると、プロセッサはそのレジスタ状態の一部をシステム管理ランダム・アクセス・メモリ(SMRAM)に保存し、SMMハンドラの実行を開始する。SMMハンドラはエラーの報告やログ、I/Oエミュレーション、中断または再開動作、電力管理などの低水準機能を実行するソフトウェア・ルーチンである。
SMRAMは、SMM用に予約されているメモリである。SMMハンドラはSMRAMに記憶される。SMMハンドラの実行の前に、プロセッサはそのレジスタ状態の一部をSMRAMの予約部分に自動的に記憶する。たとえば、プロセッサは、セグメンテーション・レジスタ、汎用レジスタ、命令・ポインタ、ディスクリプタ・テーブル・レジスタ、およびモデル固有レジスタの状態を、SMRAMの予約部分に記憶することが多い。浮動小数点レジスタなどの一部のレジスタ状態は、SMMに入るときに自動的に記憶することができない。これは、多くのSMMハンドラはこの種のレジスタに変更を加えないためである。しかし、これらのレジスタをSMMハンドラで使用する場合、レジスタの記憶と再記憶を行うコードをSMMハンドラ・ルーチンに組み込むことができる。
SMMハンドラ・ルーチンは、実モードに類似したモードを動作する。SMMと実モードの1つの相違点は、32ビット・プロセッサがSMM中に4ギガバイトのアドレス空間をアドレス指定することができることである。実モード(および保護モード)は、Intelアーキテクチャ・プロセッサを熟知している者および当業者には周知である。
割り込まれたプログラムには、SMMハンドラ・ルーチンの終わりにあるRSM(再開)命令が制御を返す。RSM命令の実行中に、プロセッサはその状態をSMRAMから再記憶し、割り込まれたルーチンの実行を再開する。プロセッサの内部状態が再記憶され、すべてのメモリ・アクセスがSMRAMに対して行われるため、この割込みはオペレーティング・システムとアプリケーション・ソフトウェアの両方にとって透過である。
従来の技術では、SMMがオペレーティング・システムに透過であるように、SMRAMは標準(非SMM)メモリ空間とは異なるメモリ空間にあった。標準メモリ空間は一般に、メイン・メモリの全部をアドレスする。SMRAM用の別個のメモリを設けるのではなく、SMRAMは一般に、グラフィクス・アダプタ・メモリなどのメイン・メモリ内の未使用部分に記憶される。プロセッサによっては、SMRAMの場所が、メイン・メモリの未使用部分に対応するSMRAMアドレス空間内のアドレス範囲にマッピングされる。一部のIntelアーキテクチャ・プロセッサでは、初期SMRAM場所は00030000Hである(アドレスの終わりに付加された「H」は、アドレスが16進数で表されていることを示す)。従来の技術では、グラフィクス・アダプタ・メモリのアドレス範囲はアドレスA0000H〜BFFFFHに対応する。したがって、30000H〜4FFFFHのSMRAMアドレスはA0000H〜BFFFFHにマッピングされる。SMM中にグラフィクス・アダプタ・メモリ・アドレス範囲内のアドレスへのアクセスが行われる場合、その要求はメモリ・コントローラを介してメイン・メモリに宛てて送られる(SMMデータ)。SMM中でないときにグラフィクス・アダプタ・メモリ・アドレス範囲内のアドレスへのアクセスが行われる場合、その要求は周辺入出力(I/O)ブリッジを介して、ビデオ装置上のグラフィクス・アダプタ・メモリに宛てて送られる(非SMMデータ)。SMRAMに記憶されているデータは標準アドレス空間に記憶されているデータと同じアドレスを有することもできるが、そのアドレスに対応するSMMデータと非SMMデータは別個のものである。キャッシュ・メモリはデータ要素をそのアドレスだけで区別するため、特定のアドレスにあるSMMデータとそれと同じアドレスにある非SMMデータが別個のデータを持っている場合であっても、それらのSMMデータと非SMMデータを区別する機構がない。
SMMデータと非SMMデータが、それらを区別する機構のないキャッシュに記憶された場合、データ汚損問題が起こる可能性がある。特定のアドレスにあるデータがキャッシュからライトバックされるとき、メモリ・サブシステムはそのデータがSMMデータがあるか非SMMであるかを区別することができない。たとえば、ライトバック・データがSMMデータであった場合、メモリ・サブシステムはそれをメイン・メモリに宛てて経路指定する必要がある。ライトバック・データが非SMMデータであった場合、メモリ・サブシステムはそれをたとえば周辺I/O装置に宛てて経路指定する必要がある。外部システムがライトバック・データを誤って経路指定した場合、SMMデータが非SMMデータによって上書きされたり、その逆の上書きが行われたりし、それによってそのアドレスにあるデータが汚損される。
キャッシュ内のSMMデータと非SMMで-タを別個のものとして維持する1つの従来技術の方法は、同じアドレスを共用するSMMデータと非SMMデータをキャッシュに入れることができないようにすることである。グラフィクス・アダプタ・メモリ・アドレス範囲は、このようなキャッシュ不能な非SMMメモリの有力な候補である。表示装置に書き出される画素データはライトバック・キャッシュに記憶されるのではなく、グラフィクス・アダプタ・メモリに更新される必要があるため、グラフィクス・アダプタ・メモリは通常はキャッシュ不能である。この方法では、同じアドレス範囲を共用するSMRAMもキャッシュ不能である。この方法では、SMMデータはキャッシュに記憶されないため、SMMと非SMMとを切り換える時にキャッシュ・フラッシュが不要である。この方法の欠点は、キャッシュ不能バス・サイクルがキャッシュ可能バス・サイクルよりも低速であることである。フラッシュ動作が不要なため、その待ち時間は改善されるが、キャッシュ不能サイクルのアクセス時間が低速になるために命令とデータのスループットが低下する。
SMMデータと非SMMデータを区別しておく他の従来技術の方法は、SMMに入るときとSMMから出るときにキャッシュをフラッシュすることである。非SMM中には、プロセッサは一般にキャッシュ可能バス・サイクルを実行する。SMIが認識されると、SMMに入る前にキャッシュ・フラッシュを行い、すべての非SMMデータのキャッシュを一掃し、SMMデータをキャッシュに入れることができるようにする。SMM中には、プロセッサは一般にキャッシュ可能バス・サイクルを実行する。RSMを受け取ると、SMMを出る前にキャッシュ・フラッシュが行われて、非SMMデータをキャッシュに入れることができるようにすべてのSMMデータがキャッシュから一掃される。SMM中は、キャッシュにはSMMデータのみが入れられている。非SMM中は、キャッシュには非SMMデータのみが入れられる。この方法の利点は、SMMバス・サイクルと非SMMバス・サイクルがキャッシュ可能であり、その結果、アクセス時間が高速化することである。しかし、SMMに入るときとSMMから出るときに必要なキャッシュ・フラッシュに長時間かかり、それによってシステム管理ハンドラの待ち時間が長くなる。これは、迅速に応答する必要のあるSMMハンドラと、2回の長時間のキャッシュ・フラッシュの間ディスエーブルされない割込みハンドラにとっては問題である。たとえば、リアルタイム・オペレーティング・システムは、イベントにリアルタイムで応答するために低待ち時間を必要とする。さらに、たとえば、オーディオ再生、音声認識、ディジタル同時音声およびデータ(DVSD)を含むモデム・エミュレーション、およびビデオ会議などのリアル・タイム・アプリケーションも低待ち時間を必要とする。待ち時間の増大の結果、ビデオ・アプリケーションにおける「テア」や「フレーム・ドロップアウト」、音声アプリケーションにおける音声の短縮及びその他の聴覚的影響が起こる可能性がある。さらに、待ち時間の増大によってデータ汚損、システム・クラッシュ、重要なサービスの損失も起こることがある。
データ汚損問題なしにSMMデータと非SMMデータをキャッシュに記憶することができるようにすると同時に、SMMと非SMMとの切り替えの際のキャッシュ・フラッシュ動作を回避する方法が必要である。さらに、SMMハンドラ・ルーチンの待ち時間を少なくし、パフォーマンスを向上させる方法が必要である。
発明の概要
データ汚損問題を起こさずにキャッシュ内にSMMデータと非SMMデータが共存できるように、システム管理ランダム・アクセス・メモリ(SMRAM)・アドレスを対応するメイン・メモリ・アドレスに変換する方法および装置について記載する。SMRAMをキャッシュ内のすべてのメイン・メモリ・アドレスから区別することができるように、SMRAMアドレス範囲はメイン・メモリ・アドレス範囲外にある。SMRAMがメイン・メモリのうちの他の用途には使用されない部分に配置されるように、SMRAMアドレスを対応するメイン・メモリ・アドレスに変換する。
【図面の簡単な説明】
第1図は、本発明のコンピュータ・システムの一実施形態を示す図である。
第2図は、SMRAMアクセスを保護する装置の一実施形態を示す図である。
第3図は、SMRAMサイクル照合論理回路の一実施形態を示す図である。
第4図は、SMRAM TSEGアドレス照合論理回路の一実施形態を示す図である。
第5図は、SMRAM A−F SEGアドレス照合論理回路の一実施形態を示す図である。
第6図は、エイリアスSMRAM TSEGアドレス照合論理回路の一実施形態を示す図である。
第7図は、アドレス変換論理回路の一実施形態を示す図である。
第8図は、ハード・エラー生成論理回路の一実施形態を示す図である。
第9図は、SMRAMをメイン・メモリにマッピングすると同時に、SMM中でないときにエイリアスSMRAM空間の保護を行う方法の一実施形態を示す図である。
詳細な説明
以下の説明では、本発明をよりよく理解することができるように、特定のメモリ構成、アドレス範囲、保護方式など、多くの特定の詳細を記載する。しかし、当業者なら、本発明はこれらの特定の詳細がなくても実施可能であることがわかるであろう。他の場合には、本発明が不明瞭にならないように、周知の装置およびプロセス・ステップについては詳述していない。
システム管理モード
本発明は、システム管理モード(SMM)データおよびコードを、非SMMデータと共にキャッシュに記憶することができるようにする。本発明では、キャッシュに記憶されている場合にSMRAMアドレスをすべてのメイン・メモリ・アドレスから区別できるように、メイン・メモリ・アドレス範囲外に1つまたは複数のシステム管理ランダム・アクセス・メモリ(SMRAM)アドレス範囲を備えることによってこれが可能になる。SMRAMデータをメイン・メモリに記憶するとき、またはメイン・メモリから取り出すとき、SMRAMアドレスがメイン・メモリの1つまたは複数の未使用部分における対応するエイリアスSMRAMアドレスに変換される。たとえば、SMRAMデータをキャッシュからライトバックするとき、論理回路によって、メイン・メモリ・アドレスから区別するために使用されるSMRAMアドレスをSMRAMとして使用するメイン・メモリの部分に対応するエイリアスSMRAMアドレスに変換する。この別個のアドレス範囲によって、SMRAMからのSMMデータを非SMMデータと共にキャッシュに記憶することが可能になり、それによってSMMハンドラ・ルーチンのアクセス時間と待ち時間が短縮される。
コンピュータ・システム
第1図に、本発明を使用するコンピュータ・システムの一実施形態を示す。このコンピュータ・システムは、プロセッサ(CPU)100と、プロセッサ・サブシステム105内に結合されたキャッシュ106とを含む。プロセッサ・サブシステム105はシステム・バス130に結合されている。バス・サイクル要求が、たとえばプロセッサ・サブシステム105およびその他のバスマスタによって、周知の方法に従ってシステム・バス130上に送出される。システム・バス130にはメモリ・コントローラ110と周辺装置I/Oブリッジ120も結合されている。システム・バス130上のバス・サイクル要求が、指定されたメモリ・アドレス範囲内のアドレスを有する場合、メモリ・コントローラ110はそれらのメモリ・アドレス範囲をメイン・メモリ・バス170を介してメイン・メモリ140にリダイレクトする。本発明では、このような1つのメモリ・アドレス範囲はSMRAMアドレス範囲である。システム・バス130上のバス・サイクル要求が指定された周辺I/Oアドレス範囲内のアドレスを有する場合、周辺I/Oブリッジ120がそれらのメモリ・アドレス範囲を周辺I/Oバス180を介してビデオ装置150や基本入出力システム(BIOS)160などの周辺I/O装置190に送る。1つの周辺I/Oアドレス範囲は、ビデオ装置150上のグラフィクス・アダプタ・メモリ(GAM)155に対応するビデオ・グラフィクス・アダプタ・メモリ・アドレス範囲である。一実施形態では、周辺I/Oバス180とメイン・メモリ・バス170は単一のバスとして実装され、たとば、周知の方法に従って、そのサイクルを周辺I/O装置190とメイン・メモリ140のどちらで処理すべきか制御信号を使用して示す。
メモリ・コントローラ110はシステム・バス130に結合され、システム・バス130はアドレス・バス101とサイクル状況バス102とSMIACT♯バス103とデータ・バス104とを含む・SMIACT♯バス103は、プロセッサ・サブシステム105がSMMモードであるかどうかを示す(「♯」接尾部は、条件が真であるときに信号が低であることを示す)。サイクル状況バス102は、システム・バス130がアクティブであるかどうかを示し、アクティブの場合は、どのタイプのサイクルが実行されているかを示す。アドレス・バス101はバス要求のアドレスを示す。バス要求が書込みサイクルである場合、プロセッサ・サブシステム105は、そのアドレスに関連づけられたデータをデータ・バス104に書き出す。バス要求が読取りサイクルである場合、プロセッサ・サブシステム105はそのデータが返されたときにデータ・バス104からデータを読み取る。メモリ・コントローラ110は、バス要求が(たとえば周辺I/Oブリッジ120ではなく)メモリ・コントローラ110によって処理されるべきであると判断した場合、システム・バス130上のバス要求に対応するバス要求をメイン・メモリ・バス170上に生成する。メイン・メモリ・バス170は、アドレス・バス111とサイクル状況バス112とデータ・バス114とを含む。メモリ・コントローラ110は、アドレス・バス101上のアドレスがSMRAMアドレス範囲内にあるかどうかを判断するSMRAMアドレス照合論理回路と、サイクルがSMRAMにアクセスを許可されたサイクルであるかどうかを判断するSMRAMサイクル照合論理回路とを含む。メモリ・コントローラ110は、SMRAMアドレスを対応するエイリアスSMRAMアドレスに変換(マッピング)するアドレス変換論理回路410も含み、そのエイリアスSMRAMアドレスは、サイクルがSMRAM範囲内にあるアドレスを有する許可されたサイクルである場合にアドレス・バス111上に送り出され、サイクルが許可されたサイクルでない場合、アドレス・バス101上のアドレスがアドレス・バス111上に送り出される。サイクル状況バス112は、メイン・メモリ・バス170がアクティブであるかどうかを示し、アクティブである場合は、どのタイプのサイクルが行われているかを示す。サイクルのタイプが書込みサイクルである場合、データ・バス114にはプロセッサ・サブシステム105によってデータ・バス104上に書き出されたデータに対応するデータが入れられる。サイクルのタイプが読取りサイクルである場合、データ・バス114にはメイン・メモリ140から取り出されたデータが後で入れられ、そのデータが後でデータ・バス104上に返される。一実施形態では、メモリ・コントローラ110は、SMRAMアドレス範囲内のアドレスを有する特定の許可されないバス・サイクルが検出された場合にエラーを示すハード・エラー論理回路も含む。
SMRAMアドレス範囲の選択
SMRAMアドレス範囲を選択する際に考慮すべき2つの要素は、メイン・メモリが使用するアドレス範囲とアドレス・バスで表すことができるアドレス空間である。本発明では、各SMRAMアドレス範囲を、メイン・メモリ・アドレス範囲外にあるアドレス・バスで表すことができるアドレス範囲の一部に入るように定義する。メイン・メモリ・アドレス範囲は、実装メイン・メモリに(変換せずに)直接対応するすべてのアドレスを含む。メイン・メモリ・アドレス範囲は、アドレス・バスで表すことができるすべてのアドレスのサブセットである。たとえば、32ビット・アドレス・バスは、00000000HからFFFFFFFFHまでのアドレス(アドレスの終わりに付加された「H」はアドレスが16進数で表されていることを示す)を使用して4ギガバイト(4GB)のメイン・メモリをアドレスすることができるが、たとえば実装メイン・メモリが64MBしかない場合がある。そのようなコンピュータでは、メイン・メモリ・アドレス範囲は00000000H〜03FFFFFFHであり、SMRAMアドレス範囲は04000000〜FFFFFFFFHのアドレス範囲の部分に定義することができる。キャッシュはキャッシュ内のデータ要素を区別するためにアドレスの最上位ビット側を(後述する)タグ要素として使用するため、キャッシュ内でSMMデータと非SMMデータを区別することができる。キャッシュからSMMデータがライトバックされると、アドレス変換論理回路はSMRAMアドレスをメイン・メモリの未使用部分内の対応するエイリアスCMRAMアドレスに変換する。一実施形態では、アプリケーションがメイン・メモリ・アドレス範囲ではなくSMRAMアドレス範囲にアクセスする可能性を少なくするために、使用可能なアドレス空間の上位部分にあるSMRAMアドレス範囲が好ましい。
SMRAMアドレス範囲を選択する際に考慮すべき第3の要素は、キャッシュ内のタグ要素によって表すことができるアドレス範囲である。タグ要素は、キャッシュに記憶されている関連づけられたデータ要素のアドレスの最上位ビット側から成る。タグ要素は、データ要素のアドレスを識別するために使用される。一実施形態では、キャッシュ内のタグ要素にはアドレスの最上位ビットから幾つかが記憶されない。このような実施形態では、各SMRAMアドレス範囲は、それをメイン・メモリ・アドレス範囲と区別するのに、この記憶されないアドレス・ビットを必要としないように選択しなければならない。たとえば、64MBのメイン・メモリが実装されている場合、メイン・メモリ・アドレス範囲は00000000Hから03FFFFFFHに対応する。このようなシステムでは、メイン・メモリに直接アクセスする場合、アドレスの上位6ビットは常にゼロである。キャッシュのタグ要素の最上位ビット側を、将来のメモリ・アップグレードを見込んでも使用しないという前提のもとに記憶しないことによって、チップ面積をある程度節約することができる。たとえば、アドレスの上位3ビットA31、A30、およびA29をキャッシュに記憶しないとすれば、さらに512MB(1FFFFFFFH)より下のすべてのアドレスを互いに区別することができることになる。しかし、そのようなシステムのキャッシュに1FFFFFFFHより上のアドレスを記憶したとすれば、データ汚損問題が起こる可能性がある。たとえば、アドレス3FF00000Hは、そのようなキャッシュ・タグ・アレイに1FF00000Hとして記憶されることになる。たとえば、3FF00000Hに関連づけられたデータをメイン・メモリにライトバックした場合、IFF00000Hに記憶されることになり、それによって1FF00000Hに前に記憶したデータが汚損される。データ汚損を起こさずに1FFFFFFFHより上のアドレスをサポートするためには、キャッシュ・タグ・アドレス範囲外にあるすべてのアドレスに「非キャッシュ」というデフォルトのキャッシング・タイプを割り当てる。したがって、各SMRAMアドレス範囲をメイン・メモリ・アドレス範囲外になるように定義しても、SMMデータをキャッシュに入れるパフォーマンス上の利点を得るために、各SMRAMアドレス範囲はタグ要素内で実施されているアドレス空間の範囲内に収める必要がある。
SMRAMアドレス範囲を選択する際に考慮すべき第4の要素は、SMM中のA20M♯ピンの不確定さである。A20M♯ピンは、Intelアーキテクチャ・マイクロプロセッサを熟知している業者には周知である。一実施形態では、A20M♯ピンはSMM中には不確定である。一実施形態では、論理回路を不確定なA20M♯信号から独立させるために、アドレスがSMRAMアドレス範囲内にあるかどうかを判断する際にA20ビットは検査されない。したがって、たとえばアドレス1FFXXXXXHがアドレス範囲1FEXXXXXHとも一致することになる。
これは、SMRAMアドレス範囲が偶数メガバイトのアドレス境界上にくるようにすることによって行う。算術的に示すと、SMRAMアドレス範囲は、任意のアドレスとFFEFFFFFHとの論理ANDをとることによって形成される境界にある。実際上の効果は、A20M♯が無視されたことである。他の実施形態では、A20M♯信号が不確定であっても、ソフトウェアに頼ってSMRAMアドレス範囲を偶数メガバイト範囲(A20はゼロである)に割り当てることによってA20ビットが照合される。このような実施形態では、対応する奇数メガバイト(A20は1である)を他の機能に割り当てることができる。
エイリアスSMRAMアドレス範囲の選択
エイリアスSMRAMアドレス範囲を選択する際の1つの考慮すべき点は、メモリの未使用部分の場所である。本発明では、各エイリアスSMRAMアドレス範囲をメイン・メモリの未使用部分に対応するアドレス範囲になるように定義する。一実施形態では、1つのエイリアスSMRAMアドレス範囲はグラフィクス・アダプタ・メモリ・アドレス範囲に対応する。一実施形態では、グラフィクス・アダプタ・メモリ・アドレス範囲は、アドレス範囲A0000H〜BFFFFHに対応する。第1図を参照すると、システム・バス130上のグラフィクス・アダプタ・メモリ・アドレス範囲内のすべてのアドレスが周辺I/Oブリッジ120によってビデオ装置150上のグラフィクス・アダプタ・メモリ155にリダイレクトされるため、ビデオ装置150はこれらのアドレスに対応するメイン・メモリ・データ要素を使用しない。本発明では、システム・バス130上のSMRAMアドレスはビデオ装置によって使用されないまま残されたメイン・メモリの部分内にある対応するエイリアスSMRAMアドレスを使用して、メモリ・コントローラ110によってメイン・メモリ・バス170にリダイレクトされる。一実施形態では、1つのエイリアスSMRAMアドレス範囲はグラフィクス・アダプタ・メモリと業界標準アーキテクチャ(ISA)拡張アドレス範囲に対応する。ISA拡張領域は、アドレス範囲C0000H〜DFFFFHに対応する。ISA拡張領域は、メモリまたは装置に独立して割り振ることができる8個の16Kブロックに分けられている。装置にブロックを割り振ると、グラフィクス・アダプタ・メモリのように、エイリアスSMRAMアドレス範囲で使用することができる。ブロックをメモリに割り振ると、エイリアスSMRAMアドレス範囲で使用することができない。一実施形態では、プログラマがSMMコードを、たとえば周辺I/O装置に割り振られたセグメントを含まないSMRAM範囲の部分に入れる責任を負う。他の実施形態では、エイリアスSMRAM範囲は、SMRAM用に予約されたメイン・メモリの部分に対応する。一実施形態では、エイリアスSMRAM範囲はメイン・メモリ・アドレス範囲の最後の(最上位)128Kアドレスのブロックに対応する。一実施形態では、エイリアスSMRAM範囲は、メイン・メモリ・アドレス範囲の最後の256Kアドレスのブロックに対応する。当業者なら、メイン・メモリ・アドレス範囲の他の部分にあるエイリアスSMRAMアドレス範囲や異なるサイズのSMRAMアドレス範囲も実施可能であることがわかるであろう。
エイリアスSMRAMアドレス範囲を選択する際の他の考慮すべき点は、プロセッサの下位アドレス・ピンからメイン・メモリ上のアドレス・ピンまでの経路によって、最高速の動作タイミング(速度経路とも呼ぶ)が制限されることである。SMRAMアドレスおよびそれに対応するエイリアスSMRAMアドレスを、同じ下位アドレス・ビットを有するように選択することによって、速度経路に余分な回路を追加するのを回避することができる。当業者なら、デコードする上位ビット用のデコーダ回路の設計は、新たな速度経路が生じないように行う必要があることがわかるであろう。
SMRAM A−Fアドレス範囲
一実施形態では、SMRAM A−Fアドレス範囲は、グラフィクス・アダプタ・メモリなど、メイン・メモリ・アドレス範囲の未使用部分にあるエイリアスSMRAM A−Fアドレス範囲に対応する。一実施形態では、キャッシュ・タグ・アレイに実施された最上位側のアドレス・ビットを使用して、各SMRAMアドレス範囲を、エイリアスSMRAMアドレス範囲を含むメイン・メモリ・アドレス範囲から区別する。一実施形態では、SMRAM A−Fアドレス範囲は、100XXXXXHであり、エイリアスSMRAM A−F範囲は000XXXXXHである。ただし、各Xは任意の独立した4ビットの組合せを表す。他の実施形態では、上位アドレス・ビットの他の組合せを使用してSMRAMアドレス範囲を、エイリアスSMRAMアドレス範囲を含むメイン・メモリ・アドレス範囲から区別することもできる。一実施形態では、SMRAMアドレス範囲1FEA0000H〜1FEDFFFFHは、エイリアスSMRAMアドレス範囲000A0000H〜000DFFFFHにマッピングされる。この実施形態では、マッピングされたすべてのアドレスはグラフィクス・アダプタ・メモリまたはISA領域内のエイリアスを有する。他の実施形態では、認識されたSMRAMアドレス範囲の一部だけがエイリアスSMRAMアドレス範囲のターゲット部分に変換される。たとえば、一実施形態では、SMRAMアドレス範囲1FEXXXXXHはエイリアスSMRAMアドレス範囲000XXXXXHにマッチングされる。この場合、たとえばアドレス1FE00000Hは、グラフィクス・アダプタ・メモリまたはISA領域内のエイリアスSMRAMアドレス範囲のターゲット部分内になく、別の目的のために使用されるメイン・メモリの部分に対応させることができる00000000Hにマッピングされる。この実施形態では、SMMハンドラは、エイリアスSMRAMアドレス範囲のターゲット部分に対応するSMRAMアドレス範囲の部分のみを使用しなければならない。一実施形態では、ISA拡張領域の一部がメイン・メモリに割り振られる。この実施形態では、ISA拡張領域のそれらの部分はエイリアスSMRAMアドレス範囲のターゲット部分から除外される。
SMRAM上位セグメント(TSEG)アドレス範囲
一実施形態では、SMRAM上位セグメント(TSEG)アドレス範囲は、メイン・メモリ・アドレス範囲の予約部分にあるエイリアスSMRAM TSEGアドレス範囲に対応する。たとえば、64MBの実装メイン・メモリを備えたコンピュータでは、メイン・メモリ・アドレス範囲は前述のように00000000H〜03FFFFFFHである。一実施形態では、SMRAM TSEGアドレス範囲は13FCXXXXH〜13FFXXXXHであり、エイリアスSMRAM TSEGアドレス範囲は03FCXXXXH〜03FFXXXXH(メイン・メモリ・アドレス範囲の最後の256Kアドレスに対応する)である。他の実施形態では、SMRAM TSEGアドレス範囲は、13FEXXXXH〜13FFXXXXHであり、エイリアスSMRAM TSEGアドレス範囲は03FEXXXXH〜03FFXXXXH(メイン・メモリ・アドレス範囲の最後の128Kアドレスに対応する)である。エイリアスSMRAM TSEGアドレス範囲に含めるアドレスはこれより多くても少なくてもよい。さらに、エイリアスSMRAM TSEGアドレス範囲は、メイン・メモリ・アドレス範囲の他の部分に対応させることもできる。当業者なら、他のビットを使用してSMRAMアドレス範囲をそれに対応するエイリアスSMRAMアドレス範囲と区別することもできることがわかるであろう。また、当業者なら、他のアドレス範囲も使用可能であることがわかるであろう。
SMRAMアドレス範囲の他の実施形態
1つまたは複数のTSEGアドレス範囲と1つまたは複数のA−Fアドレス範囲を使用することができることは明らかであろう。他の実施形態では、1つまたは複数のTSEGアドレス範囲か、あるいは1つまたは複数のA−Fアドレス範囲を使用する。当業者なら、上記のようにして、またはその他の方法で、アドレスを恣意的なアドレス範囲にマッピングすることができることがわかるであろう。そのようなアドレスには固定値が与えられることに留意されたい。また、当業者なら、このような恣意的なアドレス範囲はプログラム制御によって修正可能であることがわかるであろう。一実施形態では、SMRAM TSEGアドレス照合論理回路またはSMRAM A−Fアドレス照合論理回路あるいはそ両方に、任意選択の範囲選択バスを結合して、指定されたSMRAMアドレス範囲内のビットの一部を外部から定義することができるようにする。一実施形態では、SMRAMアドレスはアドレス範囲ISEXXXXXHにあり、SはSMRAMアドレス範囲を再配置するために外部的に選択可能な4ビットのターゲット・ビットを表す。各ターゲット・ビットによって、対応するアドレス・ビットが一致を構成するためにどのようなアドレス・ビットでなければならないかが決まる。他の実施形態では、SMRAMアドレス範囲は、将来容易に再配置することができるようにパラメータ化される。たとえば、メイン・メモリを2GB(3FFFFFFFH)に拡張する場合、SMRAMアドレス範囲を7FEXXXXXHに再配置する。このようなシステムで使用されるキャッシュは、より大きなSMRAMアドレスを表すためにより多くのタグ・ビットを有する。当業者なら、他のシステム構成のために他のメモリ範囲も選択可能であることがわかるであろう。
SMRAMアドレス範囲の予約
適切なSMRAMアドレス範囲を選択した後は、それらの他の目的に使用しないように予約しなければならない。第1図を参照すると、オペレーティング・システムとBIOS160は周辺I/Oブリッジ120に対して、どのアドレスが周辺I/O装置190にマッピングされるかを示すことが多い。オペレーティング・システムは、周辺I/O装置190のためにSMRAMアドレス範囲内のアドレスを選択してはならない。たとえば、オペレーティング・システムがSMRAMアドレス範囲内のアドレスを周辺I/O装置に割り当てた場合、周辺I/Oブリッジ120とメモリ・コントローラ110の両方が、そのアドレスにあるバス・サイクルをそれぞれのバスに送るように構成されることになる。周辺I/Oブリッジ120がメモリ・コントローラ110よりも優先順位が高い場合、そのアドレスへのすべてのアクセスは周辺I/O装置に向けられることになり、それによってSMMハンドラへのアクセスが不可能になる。メモリ・コントローラ110の優先順位が周辺I/Oブリッジ120よりも高い場合、そのアドレスへのすべてのアクセスはSMRAMに向けられることになり、それによって周辺I/O装着へのアクセスが不可能になる。一実施形態では、プラグ・アンド・プレイBIOSにおけるシステム装置構成リストに32ビットの固定場所メモリ範囲ディスクリプタを付加することによって、SMRAMアドレス範囲を予約する。他の実施形態は、周知のBIOS INT15/E801サービスが実装メモリの上位を、実装メモリの実際の上位より下に延びるものとして報告し、それによってオペレーティング・システムが実装メモリのうちの報告されたメイン・メモリの上位と実際のメイン・メモリ上位との間の部分を使用しないようにする。この報告されないメモリがSMRAMに使用される。他の実施形態では、SMRAMアドレス範囲を予約する他の方法も使用可能である。
SMRAM保護モード
重要なSMMハンドラ・ルーチンの無許可の変更を防止するために、プロセッサがSMM中でない場合、SMRAMへのアクセスに制限を加えることが望ましい。SMMハンドラ・ルーチンはSMMで呼び出されると実モード特権レベルで実行されるため、特権データおよび特権命令への無許可のアクセスを可能にする可能性がある。このような無許可のアクセスは、熱制御、エラー回復、エミュレーションなどの重要なシステム制御を損なう可能性があり、たとえばウィルスに対する保護を損なう可能性がある。一実施形態では、SMRAMアドレス範囲内のアドレスへの無許可のアクセスの防止をオペレーティング・システムに任せる。上位メモリへのアクセスは、オペレーティング・システムや、オペレーティング・システムによってアクセスが認められたアプリケーションなどの特権プログラムのみが行うことができるため、オペレーティング・システムによる対応がない限りアプリケーションはSMRAMアドレス範囲へのアクセスを獲得することができない。したがって、システム・バス130上のすべてのSMRAMバス要求は、オペレーティング・システムによって許可されているものとみなされ、したがってメイン・メモリ・バス170に送られる。
他の実施形態では、メモリ・コントローラ110(第1図を参照)は、システム・バス130上の特定のSMRAMバス要求がメイン・メモリ・バス170に送られるのを防止する保護論理回路を含む。一実施形態では、保護論理回路は非SMMでSMRAMに対して非ライトバック・サイクルが発行されると、任意選択のハード・エラー・バス上でハード・エラー信号を発生する。一実施形態では、このハード・エラー信号は、エラー・ハンドラを開始するためにプロセッサ・サブシステム105に結合される。一実施形態では、メモリ・コントローラ110は非SMMでSMRAMへのライトバック・サイクルを可能にして、キャッシュに入れられたSMMデータを更新することができるようにする。他の実施形態では、メモリ・コントローラ110は、SMMハンドラ・ルーチンの終了時にキャッシュに残されているのは重要でないSMMデータのみであるという前提のもとに、非SMMでのSMRAMへのライトバック・サイクルを無視する。メモリ・コントローラ110が非SMM中にSMRAMへのライトバック・サイクルを無視する場合、プロセッサが非SMMに戻る前にキャッシュからSMRAMに重要なデータがライトバックされるように保証することが重要である。一実施形態は、SMRAM範囲全体をライトスルーとして割り振る。キャッシュ内のライトスルー・データが変更されると、メイン・メモリを更新するバス・サイクルが開始される。データが変更されるたびにバス・サイクルを行わなければならないため、ライトスルー・サイクルによってパフォーマンスが低下する。他の実施形態では、重要なデータを含むSMRAMの領域をライトスルーとして割り振り、重要でないデータを含む領域をライトバックとして割り振る。これによって、可能な場合にライトバック・キャッシングのパフォーマンス上の利点を利用することができると同時に、重要なデータがSMRAMに合わせてただちに更新されるように強制することができる。当業者なら他の保護方式も実施可能であることがわかるであろう。
SMRAM論理回路
第2図に、システム・バス130上の適切なバス・サイクルを検出し、そのサイクルがメイン・メモリ・バス170で発行されたことを示す信号をメイン・メモリ発行バス441上で発行する装置の一実施形態を示す。
オープン・バス430と、SMIACT♯バス103(「♯」接尾部は条件が真の場合に信号が低であることを示す)と、ライトバック・バス428と、バスマスタ・バス427とが、サイクル照合論理回路402に結合され、サイクル照合論理回路402はサイクル・タイプ照合パス433上で、システム・バス130上で発行されたサイクル・タイプがSMRAMへのアクセスを許可されているかどうかを示す。オープン・バス430は、SMM外でSMRAMへのアクセスが許可されているかどうかを示す。これは、たとえばSMRAM初期設定のために使用される。ライトバック・バス428は、システム・バス130上で発行されたサイクルがライトバック・サイクルであるかどうかを示す。オープン信号は、たとえば周知の方法に従ってサイクル状況バス102から判断することができる。バスマスタ・バス427は、システム・バス130上で発行されたサイクルが、周辺構成要素相互接続(PCI)装置などの非CPUバスマスタによって生成されたものであるかどうかを示す。バスマスタ信号は、たとえば周知の方法に従ってサイクル状況バス102から判断することができる。アドレス・バス101は、アドレス・ビット17(A17)バス420と、アドレス・ビット19およびアドレス・ビット18(A19〜A18)バス421と、アドレス・ビット21およびアドレス・ビット20(A21〜A20)バス422と、アドレス・ビット27からアドレス・ビット22まで(A27〜A22)のバス423と、アドレス・ビット28(A28)バス424と、アドレス・ビット32からアドレス・ビット29まで(A31〜A29)までのバス425とを含む。
[DRB4−1]バス462は、周知の方法に従って実装メイン・メモリの最後の(最上位)4メガバイトに対応する上位アドレス・ビットを示す。256K/128K♯バス426は、SMRAM TSEGアドレス範囲が256Kアドレスと128Kアドレスのいずれを含むかを示す。アドレス・バス101と、[DRB4−1]バス462と、256K/128K♯バス426は、SMRAM上位セグメント(TSEG)アドレス照合論理回路401に結合され、論理回路401はSMRAM TSEGアドレス照合バス432上でアドレスがSMRAM TSEGアドレス範囲内にあるかどうかを示す。SMRAM TSEGアドレス照合バス432とサイクル・タイプ照合バス433はANDゲート450に結合され、ANDゲート450はTSEG発行サイクル・バス438上でTSEGサイクルを許可するかどうかを示す。
A28バス424とA31−A29バス425はSMRAM A−Fアドレス照合論理回路403に結合され、SMRAM A−Fアドレス照合論理回路403はSMRAM A−Fアドレス照合バス434上でアドレスがSMRAM A−Fアドレス範囲内にあるかどうかを示す。SMRAM A−Fアドレス照合バス434とサイクル・タイプ照合バス433はANDゲート451に結合され、ANDゲート451はA−Fサイクル発行バス439上でA−Fサイクルを許可するかどうかを示す。
DRB4バス461は、周知の方法に従って、アンインストール・メモリ・アドレス空間の最初の(最下位)4MGに対応する上位アドレス・ビットを示す。A27−A22バス423と、A28バス424と、A31−A29バス425と、DRB4バス461とは、メイン・メモリ・アドレス照合論理回路404に結合され、メイン・メモリ・アドレス照合論理回路404は、周知の方法に従ってメイン・メモリ・サイクル発行バス435上でメイン・メモリ(非SMRAM)アクセスを許可するかどうかを示す。一実施形態では、メイン・メモリ照合論理回路は、DRB4バス461によって示されたアドレス以外のすべてのアドレスについてメイン・メモリ・アクセスを許可する。当業者なら、メイン・メモリ照合論理回路の他の実施形態も実施可能であることがわかるであろう。
アドレス・ホール♯バス440は、アドレスが周辺I/O装置に割り当てられているメモリ空間の部分の外部、またはたとえばエイリアスSMRAM TSEGアドレス範囲の外部にあることを示す。I/O装置アドレス照合論理回路405は、周知の方法に従ってI/Oアドレス照合バス436上でアドレスがI/Oアドレス範囲内にあることを示す。エイリアスSMRAM TSEGアドレス照合論理回路406は、エイリアスSMRAM TSEGアドレス照合バス437上で、アドレスがエイリアスSMRAM TSEGのアドレス範囲内にあることを示す。I/Oアドレス照合バス436とエイリアスSMRAM TSEGアドレス照合バス437はNORゲート452の入力端子に結合され、NORゲート452はアドレス・ホール♯バス440上でアドレスが周辺I/O装置に割り当てられたメモリ空間の部分の外部またはエイリアスSMRAM TSEGアドレス範囲の外部にあることを示す。
TSEGサイクル発行バス438と、A−Fサイクル発行バス439と、メイン・メモリ・サイクル発行バス435とはORゲート453に結合され、ORゲート453は、アドレス・ホール♯バス440上の信号がアサートされていない場合、条件付き発行バス442上でサイクルを発行する必要があることを示す。条件付き発行バス442とアドレス・ホール♯バス440はANDゲート454の入力端子に結合され、ANDゲート454はメイン・メモリ発行バス441上で、サイクルがメイン・メモリに対して発行されていることを示す。一実施形態では、周知の方法に従って、この信号を使用してサイクル状況バス112の発行信号を発生させるサイクル状況信号を生成する。他の実施形態では、発光信号は、独立して生成され、この信号は、発行されたバス・サイクルをメイン・メモリと、たとえばI/O装置とのうちのどちらに送るべきかを示す。
サイクル照合論理回路
第3図に、サイクル照合論理回路402の一実施形態を示す。SMIACT♯バス103はインバータ550に結合され、インバータはSMIACTバス542上でSMMがアクティブかどうかを示す。SMIACT♯バス103とライトバック・バス428はANDゲート551に結合され、ANDゲート551は非SMMライトバック・バス543上で、SMM中でないときにサイクルがライトバック・サイクルであるかどうかを示す。オープン・バス430とSMIACTバス542と非SMMライトバック・バス543とはORゲート552の入力端子に結合され、ORゲート552は条件付きサイクル・タイプ照合バス544上で、サイクル・タイプがバスマスタ・バス427上の信号を条件としてSMRAMへのアクセスを許可されているかどうかを示す。条件付きサイクル・タイプ照合バス544とバスマスタ・バス427はANDゲート553に結合され、ANDゲート553はサイクル・タイプ照合バス433上でサイクル・タイプがSMRAMのアクセスへを許可されているがどうかを示す。
第3図に示すサイクル照合論理回路402の実施形態では、SMRAMへのサイクルは、(オープン・ビットが設定されていない限り)SMM中でないときにライトバックのためにのみ発行される。これによって、SMRAMが非SMMアクセスから保護されると同時に、SMM中にキャッシュに書き込まれたがSMM中にメイン・メモリに再記憶されていないSMMデータを、SMM中でないときに再記憶することが可能になる。他の実施形態では、ライトバック・バス428は、SMM中に許可されている他のサイクルのためにもアサートされる。他の実施形態では、SMRAMへのすべての非SMMバス・サイクルが無視される。このような保護は、適切にプログラムされたSMMコードによってサポートしなければならない。このようなSMMコードは、SMM中に読み取る前に書き込む変数をキャッシュから強制的に追い出してメイン・メモリに入れなければならない。SMMコードでこれを行うことが可能な1つの方法は、アクセスする変数のために十分なキャッシュ時エイリアスにアクセスし、それによってそれらの変数がキャッシュから追い出されるようにすることである。キャッシュ時エイリアスは、ターゲット・データと同じセットに対応するアドレスである。そのセットに対応するすべてのデータ記憶場所がいっぱいになると、キャッシュは周知の方法に従ってデータをライトバックし、より最近にアクセスされたデータのための空きを作る。他の実施形態では、保護モード信号に応じて非SMMバス・サイクルが無視されたり許可されたりする。これらの保護モードのそれぞれの実施態様は、当業者には明らかである。当業者なら、サイクル照合論理回路402の他の実施形態も実施可能であることがわかるであろう。
SMRAM TSEG照合論理回路
第4図に、SMRAM TSEGアドレス照合論理回路401の一実施形態を示す。A31−A29バス425は1組のインバータ650の入力端子に結合され、インバータ650はA31−A29♯バス601上でA31−A29が高であるかどうかを示す。[DRB4−1]バス462およびA27−A22バス423は比較器651の入力端子に結合され、比較器651は最後の4MGバス602上で、これらのアドレス・ビットが実装メイン・メモリの最後の4MGのアドレス・ビットに対応しているかどうかを示す。A17バス420と256K/128K♯バス426はORゲート652に結合され、ORゲート652はA17照合バス603上でA17バスがSMRAM TSEGアドレス範囲内に入る必要があるアドレス・ビット17の値に対応しているかどうかを示す。SMRAM TSEGアドレス範囲には128Kのアドレスしか含まれないため、256K/128K♯バス426上の信号が低の場合、照合のためにA17バス420上の信号は高でなければならない。256K/128K♯バス426上の信号が高の場合、SMRAM TSEGアドレス範囲はA17高とA17低の両方に対応する256Kアドレスを含む。A31−A29♯バス601、A28バス、最後の4MGバス602、A21−A20バス422、A19−A18バス421、およびA17照合バス603はANDゲート653に結合され、ANDゲート653はSMRAM TSEGアドレス照合バス432上で、アドレスがSMRAM TSEGアドレス範囲内にあるかどうかを示す。
SMRAM A−F照合論理回路
第5図に、SMRAM A−Fアドレス照合論理回路403の一実施形態を示す。A31−A29バス425が1組のインバータ750の入力端子に結合され、インバータ750はA31−A29♯バス701上で、A31−A29ビットが高であるかどうかを示す。A27−A22バス423は1組のインバータ751の入力端子に結合され、A27−A22♯バス702上で、A27−A22ビットが高であるかどうかを示す。A21−A20バス422は1組のインバータ752の入力端子に結合され、インバータ752はA21−A20♯バス703上でA21−A20ビットが高であるかどうかを示す。A31−A29♯バス701、A28バス424、A27−A22♯バス702、およびA21−A20♯バス703がANDゲート753の入力端子に結合され、ANDゲート753はSMRAM A−Fアドレス照合バス434上でアドレスがSMRAMアドレス範囲内にあるかどうかを示す。
エイリアスSMRAM TSEGアドレス照合論理回路
第6図に、エイリアスSMRAM TSEGアドレス照合論理回路406の一実施形態を示す。A31−A29バス425は1組のインバータ850の入力端子に結合され、インバータ850はA31−A29♯バス801上でA31−A29が高であるかどうかを示す。A28バス424はインバータ851の入力端子に結合され、インバータ851はA28♯バス802上でA28が高であるかどうかを示す。[DRB4−1]バス462とA27−A22バス423は比較器852の入力端子に結合され、比較器852は最後の4MGバス803上でこれらのアドレス・ビットが実装メイン・メモリの最後の4MGのアドレス・ビットに対応しているかどうかを示す。A17バス420と256K/128K♯バス426はORゲート853に結合され、ORゲート853はA17照合バス804上でA17バスがSMRAM TSEGアドレス範囲内に入る必要のあるアドレス・ビット17値に対応しているかどうかを示す。SMRAM TSEGアドレス範囲は128Kアドレスしか含まないため、256K/128K♯バス426上の信号が低の場合、一致のためにA17バス420上の信号は高でなければならない。256K/128K♯バス426上の信号が高の場合、SMRAM TSEGアドレス範囲には、A17高とA17低の両方に対応する256Kアドレスが含まれる。A31−A29♯バス801、A28♯バス802、最後の4MGバス803、A21−A20バス422、A19−A18バス421、およびA17照合バス804は、ANDゲート854に結合され、ANDゲート854はエイリアスSMRAM TSEGアドレス照合バス437上でアドレスがエイリアスSMRAM TSEGアドレス範囲内にあるかどうかを示す。
アドレス変換論理回路
第7図に、アドレス・バス101上のシステム・バス・アドレスをアドレス・バス111上のメイン・メモリ・バス・アドレスに変換するアドレス変換論理回路410の一実施形態を示す。システム・バス・アドレスがSMRAMアドレス範囲内にある場合、アドレスはそれに対応するエイリアスSMRAMアドレスに変換される。システム・バス・アドレスがシステム・バス・アドレスの範囲外にある場合、メイン・メモリ・アドレスがシステム・バス・アドレスである。SMRAM TSEGアドレス照合バス432とSMRAM A−Fアドレス照合バス434はORゲート1050の入力端子に結合され、ORゲート1050はSMRAMアドレス照合バス1001上でアドレス・バス101上のアドレスがSMRAMアドレス範囲内にあるかどうかを示す。SMRAMアドレス照合バス1001とサイクル・タイプ照合バス433はNANDゲート1057の入力端子に結合され、NANDゲート1057はSMRAMサイクル♯バス1002上でサイクルが許可されているSMRAMサイクルであるかどうかを示す。A28バス424とSMRAMサイクル♯バス1002はANDゲート1052の入力端子に結合され、ANDゲート1052はA28出力バス116上でメイン・メモリ・バス上のA28ビットの値を示す。A31−A29バス425、A27−A22バス423、A21−A20バス422、A19−A18バス421、およびA17バス420を含む他のアドレス・ビットは、アドレス・バス101とアドレス・バス111の両方に共通である。
ハード・エラー論理回路
第8図に、任意選択のハード・エラー論理回路409の一実施形態を示す。オープン・バス430がインバータ951の出力端子に結合され、インバータ951はオープン♯バス901上でSMRAM空間が無条件に使用可能であるかどうかを示す。ライトバック・バス428がインバータ952に結合され、インバータ952はライトバック♯バス上でサイクルがライトバックであるかどうかを示す。SMRAM TSEGアドレス照合バス432とSMRAM A−Fアドレス照合バス434がORゲート953の入力端子に結合され、ORゲート953はSMRAMアドレス・バス903上でアドレスがSMRAMアドレス範囲内にあるかどうかを示す。オープン♯バス901、SMIACT♯バス103、ライトバック♯バス902、およびSMRAMアドレス・バス903がANDゲート954の入力端子に結合され、ANDゲート954はハード・エラー・バス115上で、ハード・エラーが発生したかどうかを示す。一実施形態では、ハード・エラー信号は、ライトバック・サイクル以外のSMRAMアドレス範囲へのバス・サイクルが非SMMで開始されたことを示す。一実施形態では、非ライトバック・サイクルには、読取りサイクル、所有権読取りサイクル、キャッシュ・フィル・サイクル、非ライトバック書込みサイクルなどの周知のサイクル・タイプが含まれる。当業者なら、他のサイクル・タイプを含むものや上記のサイクル・タイプの一部を含まないものなどのバス・サイクルのいくつかのセットについてエラー信号を発生させることができることがわかるであろう。一実施形態では、ハード・エラー信号を使用してレジスタにビットを設定する。他の実施形態では、ハード・エラー信号を使用して、エラー処理ルーチンを開始するために使用可能な割込み信号を発生させる。
アドレス変換およびSMRAM保護方法
第9図に、SMRAMアドレスをエイリアスSMRAMアドレスに変換し、SMM中でないときにSMRAMを特定のアクセスから保護する本発明の方法のいくつかの実施形態を示す。以下のステップでは第1図も参照する。ステップ1100で、アドレス照合論理回路(たとえば、SMRAM TSEGアドレス照合論理回路401またはSMRAM A−Fアドレス照合論理回路403)がシステム・バス130から第1のアドレスを受け取る。ステップ1105で、サイクル照合論理回路402が、システム・バス130からサイクル状況信号で受け取る。ステップ1110で、アドレス照合論理回路は、第1のアドレスがSMRAM範囲内にあるかどうかを判断する。第1のアドレスがSMRAM範囲内にない場合、ステップ1115でサイクルはメイン・メモリ・バス170で発行され、この方法は終了する。第1のアドレスがSMRAM範囲内にある場合、ステップ1120でアドレス変換論理回路410が第1のアドレスをエイリアスSMRAM範囲内の対応する第2のアドレスに変換(マッピング)する。ステップ1125でサイクル照合論理回路402がSMM状況信号を受け取る。ステップ1130で、サイクル照合論理回路402はSMMがアクティブか否かを判断する。SMMがアクティブの場合、ステップ1115でサイクルがメイン・メモリ・バス170で発行され、この方法は終了する。SMMがアクティブでない場合、ステップ1140でサイクル照合論理回路402はサイクルがライトバック・サイクルかどうかを判断する。サイクルがライトバック・サイクルでない場合、ステップ1145で任意選択のハード・エラー論理回路409がハード・エラーを発行し、この方法は終了する。サイクルがライトバック・サイクルの場合、実施形態によって異なる応答がある。一実施形態では、ステップ1155でサイクル照合論理回路402がメイン・メモリ・バス170上でサイクルを発行する。他の実施形態では、サイクル照合論理回路402はそのサイクルを無視する。さらに他の実施形態では、ステップ1150でサイクル照合論理回路402がどの保護モードがイネーブルになっているかを判断する。そのモードでライトバックが可能な場合、ステップ1155でサイクル照合論理回路402はそのサイクルをメイン・メモリ・バス170で発行する。その保護モードでライトバックが許可されていない場合、サイクル照合論理回路402はそのサイクルを無視する。
その他の実施形態
本発明の他の実施形態も実施可能である。たとえば、コンピュータ・システムは複数プロセッサ・サブシステム、またはシステム・バスにデータを送り出すその他の装置を含むことができる。さらに、Pentium(R)プロセッサなどのIntelアーキテクチャ・マイクロプロセッサを参照しながら説明したが、PowerPCTMやAlphaTMなど他のマイクロプロセッサ・アーキテクチャも本発明によって使用することができる。(Pentium(R)はIntel Corporationの登録商標である。PowerPCTMはIBM、APPLE COMPUTER、およびMOTOROLAの商標である。AlphaTMはDigital Equipment Corporationの商標である。)

Claims (3)

  1. システム管理モード(SMMモード)の時には該SMMモードで使用されるSMMデータを記憶するエイリアスSMRAM領域として使用可能であってそのエイリアスSMRAM領域はエイリアスSMRAMアドレスを使用してアクセス可能に構成され、非SMMモードの時には周辺装置のために非SMMデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
    メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスSMRAM領域のシステム管理ランダム・アクセス・メモリ(SMRAM)のSMRAMアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがSMMデータであるか否かが区別可能とされたキャッシュ・メモリと、
    前記キャッシュ・メモリからSMMデータがライト・バックされるときに、そのデータのアドレスを対応するエイリアスSMRAMアドレスに変換するアドレス変換回路と
    を含む回路。
  2. バス・サイクルを発行するSMRAMを備えたコンピュータ・システムであって、
    プロセッサがシステム管理モード(SMMモード)中であるか否かを示すSMM状況バスを含むプロセッサと、
    前記SMMモードの時には該SMMモードで使用されるSMMデータを記憶するエイリアスSMRAM領域として使用可能であってそのエイリアスSMRAM領域はエイリアスSMRAMアドレスを使用してアクセス可能に構成され、非SMMモードの時には周辺装置のために非SMMデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
    前記プロセッサに結合されたキャッシュ・メモリであって、メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスSMRAM領域のシステム管理ランダム・アクセス・メモリ(SMRAM)のSMRAMアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがSMMデータであるか否かが区別可能とされたキャッシュ・メモリと、
    前記キャッシュ・メモリに結合され、サイクル・タイプを示すサイクル・タイプ・バスと、
    前記キャッシュ・メモリに結合され、前記バス・サイクルの第1のアドレスであって前記SMRAMアドレス範囲のアドレスを示す第1のアドレス・バスと、
    前記第1のアドレス・バスに結合され、前記第1のアドレスを前記メイン・メモリ内の第2のアドレスとしてエイリアスSMRAMアドレスに変換するアドレス変換論理回路と、
    前記アドレス変換論理回路と前記メイン・メモリとに結合され、前記バス・サイクルの前記第2のアドレスをもって前記メイン・メモリをアクセス可能にする第2のアドレス・バスと
    を含むコンピュータ・システム。
  3. システム管理モード(SMMモード)の時には該SMMモードで使用されるSMMデータを記憶するエイリアスSMRAM領域として使用可能であってそのエイリアスSMRAM領域はエイリアスSMRAMアドレスを使用してアクセス可能に構成され、非SMMモードの時には周辺装置のための非SMMデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
    メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスSMRAM領域のシステム管理ランダム・アクセス・メモリ(SMRAM)のSMRAMアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがSMMデータであるか否かが区別可能とされたキャッシュ・メモリと、
    前記キャッシュ・メモリからSMMデータがライト・バックされるときに、そのデータのアドレスを対応するエイリアスSMRAMアドレスに変換するアドレス変換回路と
    を備えたシステムで、バス・サイクルを実行している間にシステム管理メモリを保護するようにバス・サイクルを処理する方法であって、
    前記キャッシュ・メモリにアクセスするバス・サイクルの第1のアドレスを受け取るステップと、
    前記第1のアドレスが、前記SMRAMアドレス範囲内にある場合に、前記第1のアドレスに対応するエイリアスSMRAMアドレスの第2のアドレスを生成して前記メインメモリをアクセスするステップ
    を含む方法。
JP50079998A 1996-06-04 1997-05-27 システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置 Expired - Fee Related JP3987577B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/656,922 1996-06-04
US08/656,922 US5909696A (en) 1996-06-04 1996-06-04 Method and apparatus for caching system management mode information with other information
PCT/US1997/009571 WO1997046937A1 (en) 1996-06-04 1997-05-27 Method and apparatus for caching system management mode information with other information

Publications (3)

Publication Number Publication Date
JP2000512406A JP2000512406A (ja) 2000-09-19
JP2000512406A5 JP2000512406A5 (ja) 2004-12-09
JP3987577B2 true JP3987577B2 (ja) 2007-10-10

Family

ID=24635129

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50079998A Expired - Fee Related JP3987577B2 (ja) 1996-06-04 1997-05-27 システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置

Country Status (7)

Country Link
US (1) US5909696A (ja)
EP (1) EP0902922B1 (ja)
JP (1) JP3987577B2 (ja)
AU (1) AU3297597A (ja)
DE (1) DE69732181T2 (ja)
TW (1) TW351788B (ja)
WO (1) WO1997046937A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6560680B2 (en) 1998-01-21 2003-05-06 Micron Technology, Inc. System controller with Integrated low latency memory using non-cacheable memory physically distinct from main memory
US6397299B1 (en) * 1998-01-21 2002-05-28 Micron Technology, Inc. Reduced latency memory configuration method using non-cacheable memory physically distinct from main memory
US6192455B1 (en) * 1998-03-30 2001-02-20 Intel Corporation Apparatus and method for preventing access to SMRAM space through AGP addressing
US6535798B1 (en) * 1998-12-03 2003-03-18 Intel Corporation Thermal management in a system
US6779027B1 (en) * 1999-04-30 2004-08-17 Hewlett-Packard Development Company, L.P. Intelligent management module application programming interface with utility objects
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US20040078681A1 (en) * 2002-01-24 2004-04-22 Nick Ramirez Architecture for high availability using system management mode driven monitoring and communications
KR100488516B1 (ko) * 2002-02-05 2005-05-11 삼성전자주식회사 디스플레이장치 및 디스플레이장치의 에러검출방법
US6918020B2 (en) * 2002-08-30 2005-07-12 Intel Corporation Cache management
US7107405B2 (en) * 2003-05-30 2006-09-12 Intel Corporation Writing cached data to system management memory
US20050188064A1 (en) * 2004-02-24 2005-08-25 Ioannis Schoinas Using a configuration mode for partition management in server platforms
US7475190B2 (en) * 2004-10-08 2009-01-06 International Business Machines Corporation Direct access of cache lock set data without backing memory
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US8683158B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Steering system management code region accesses
US7896823B2 (en) * 2006-01-17 2011-03-01 Theranova, Llc Method and apparatus for treating wound using negative pressure therapy
US8661265B1 (en) 2006-06-29 2014-02-25 David Dunn Processor modifications to increase computer system security
US7925815B1 (en) 2006-06-29 2011-04-12 David Dunn Modifications to increase computer system security
US7610426B1 (en) * 2006-12-22 2009-10-27 Dunn David A System management mode code modifications to increase computer system security
US7840792B2 (en) * 2007-04-25 2010-11-23 American Megatrends, Inc. Utilizing hand-off blocks in system management mode to allow independent initialization of SMBASE between PEI and DXE phases
US8909957B2 (en) * 2010-11-04 2014-12-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Dynamic voltage adjustment to computer system memory
US9940204B2 (en) * 2015-11-02 2018-04-10 International Business Machines Corporation Memory error recovery
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10565141B1 (en) * 2018-08-28 2020-02-18 Dell Products L.P. Systems and methods for hiding operating system kernel data in system management mode memory to thwart user mode side-channel attacks

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4309532C2 (de) * 1992-03-25 1996-10-31 Intel Corp Verfahren zum Sichern einer Systemabbildung eines Computersystems auf einer permanenten Speichereinrichtung sowie ein Computersystem
JPH06230979A (ja) * 1992-06-17 1994-08-19 Cyrix Corp 改良されたシステム管理方法および装置
US5475829A (en) * 1993-03-22 1995-12-12 Compaq Computer Corp. Computer system which overrides write protection status during execution in system management mode
US5509139A (en) * 1993-03-22 1996-04-16 Compaq Computer Corp. Circuit for disabling an address masking control signal using OR gate when a microprocessor is in a system management mode
US5544344A (en) * 1994-12-06 1996-08-06 Digital Equipment Corporation Apparatus for caching smram in an intel processor based computer system employing system management mode
US5764999A (en) * 1995-10-10 1998-06-09 Cyrix Corporation Enhanced system management mode with nesting

Also Published As

Publication number Publication date
US5909696A (en) 1999-06-01
DE69732181D1 (de) 2005-02-10
WO1997046937A1 (en) 1997-12-11
AU3297597A (en) 1998-01-05
JP2000512406A (ja) 2000-09-19
EP0902922B1 (en) 2005-01-05
DE69732181T2 (de) 2005-12-29
TW351788B (en) 1999-02-01
EP0902922A1 (en) 1999-03-24
EP0902922A4 (en) 2000-06-21

Similar Documents

Publication Publication Date Title
JP3987577B2 (ja) システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置
US5325499A (en) Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory
US6192458B1 (en) High performance cache directory addressing scheme for variable cache sizes utilizing associativity
KR100190351B1 (ko) 2-레벨 캐시 메모리의 방해 감소장치 및 방법
US7613884B2 (en) Multiprocessor system and method ensuring coherency between a main memory and a cache memory
US5249284A (en) Method and system for maintaining data coherency between main and cache memories
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
JPH0345407B2 (ja)
CA2127081A1 (en) Processor interface chip for dual-microprocessor processor system
US6157980A (en) Cache directory addressing scheme for variable cache sizes
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5619677A (en) Data processing system with an enhanced cache memory control
JPH0526217B2 (ja)
US5544344A (en) Apparatus for caching smram in an intel processor based computer system employing system management mode
US7308557B2 (en) Method and apparatus for invalidating entries within a translation control entry (TCE) cache
US5638532A (en) Apparatus and method for accessing SMRAM in a computer based upon a processor employing system management mode
US5287482A (en) Input/output cache
US5161219A (en) Computer system with input/output cache
US5678025A (en) Cache coherency maintenance of non-cache supporting buses
US5920891A (en) Architecture and method for controlling a cache memory
US5954812A (en) Apparatus for caching system management memory in a computer having a system management mode employing address translation
US5950227A (en) CPU write-back cache coherency mechanism that transfers data from a cache memory to a main memory after access of the main memory by an alternative bus master
US5960456A (en) Method and apparatus for providing a readable and writable cache tag memory
US4628450A (en) Data processing system having a local memory which does not use a directory device with distributed resident programs and a method therefor
JPH10293684A (ja) コンピュータシステムおよびその立ち上げ制御方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040407

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070626

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070713

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100720

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110720

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees