(57)【特許請求の範囲】
【請求項１】
システム管理モード（ＳＭＭモード）の時には該ＳＭＭモードで使用されるＳＭＭデータを記憶するエイリアスＳＭＲＡＭ領域として使用可能であってそのエイリアスＳＭＲＡＭ領域はエイリアスＳＭＲＡＭアドレスを使用してアクセス可能に構成され、非ＳＭＭモードの時には周辺装置のために非ＳＭＭデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスＳＭＲＡＭ領域のシステム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）のＳＭＲＡＭアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがＳＭＭデータであるか否かが区別可能とされたキャッシュ・メモリと、
前記キャッシュ・メモリからＳＭＭデータがライト・バックされるときに、そのデータのアドレスを対応するエイリアスＳＭＲＡＭアドレスに変換するアドレス変換回路と
を含む回路。
【請求項２】
バス・サイクルを発行するＳＭＲＡＭを備えたコンピュータ・システムであって、
プロセッサがシステム管理モード（ＳＭＭモード）中であるか否かを示すＳＭＭ状況バスを含むプロセッサと、
前記ＳＭＭモードの時には該ＳＭＭモードで使用されるＳＭＭデータを記憶するエイリアスＳＭＲＡＭ領域として使用可能であってそのエイリアスＳＭＲＡＭ領域はエイリアスＳＭＲＡＭアドレスを使用してアクセス可能に構成され、非ＳＭＭモードの時には周辺装置のために非ＳＭＭデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
前記プロセッサに結合されたキャッシュ・メモリであって、メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスＳＭＲＡＭ領域のシステム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）のＳＭＲＡＭアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがＳＭＭデータであるか否かが区別可能とされたキャッシュ・メモリと、
前記キャッシュ・メモリに結合され、サイクル・タイプを示すサイクル・タイプ・バスと、
前記キャッシュ・メモリに結合され、前記バス・サイクルの第１のアドレスであって前記ＳＭＲＡＭアドレス範囲のアドレスを示す第１のアドレス・バスと、
前記第１のアドレス・バスに結合され、前記第１のアドレスを前記メイン・メモリ内の第２のアドレスとしてエイリアスＳＭＲＡＭアドレスに変換するアドレス変換論理回路と、
前記アドレス変換論理回路と前記メイン・メモリとに結合され、前記バス・サイクルの前記第２のアドレスをもって前記メイン・メモリをアクセス可能にする第２のアドレス・バスと
を含むコンピュータ・システム。
【請求項３】
システム管理モード（ＳＭＭモード）の時には該ＳＭＭモードで使用されるＳＭＭデータを記憶するエイリアスＳＭＲＡＭ領域として使用可能であってそのエイリアスＳＭＲＡＭ領域はエイリアスＳＭＲＡＭアドレスを使用してアクセス可能に構成され、非ＳＭＭモードの時には周辺装置のための非ＳＭＭデータを記憶する領域として使用可能であってその領域は周辺装置アドレスを使用してアクセス可能に構成される、メモリ空間を有したメイン・メモリと、
メイン・メモリ・アドレス範囲の外にあるアドレス範囲であって一連のアドレスを有するアドレス範囲が、前記エイリアスＳＭＲＡＭ領域のシステム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）のＳＭＲＡＭアドレス範囲として定義され、それによって、格納されたデータに対応するタグのアドレス情報に基づいて当該格納されたデータがＳＭＭデータであるか否かが区別可能とされたキャッシュ・メモリと、
前記キャッシュ・メモリからＳＭＭデータがライト・バックされるときに、そのデータのアドレスを対応するエイリアスＳＭＲＡＭアドレスに変換するアドレス変換回路と
を備えたシステムで、バス・サイクルを実行している間にシステム管理メモリを保護するようにバス・サイクルを処理する方法であって、
前記キャッシュ・メモリにアクセスするバス・サイクルの第１のアドレスを受け取るステップと、
前記第１のアドレスが、前記ＳＭＲＡＭアドレス範囲内にある場合に、前記第１のアドレスに対応するエイリアスＳＭＲＡＭアドレスの第２のアドレスを生成して前記メインメモリをアクセスするステップと
を含む方法。
【発明の詳細な説明】
発明の背景
１．発明の分野
本発明はコンピュータ・システムに関し、より詳細には、システム管理モードで動作可能なコンピュータ・システムに関する。
２．関連技術の説明
システム管理モード（ＳＭＭ）を使用すると、システム開発者は、電力管理やセキュリティなどの低水準機能をオペレーティング・システムやアプリケーション・プログラムに透過な方式で設けることができる。ＳＭＭでは、オペレーティング・システムやアプリケーション・ソフトウェアの動作に割り込んでこの種の低水準機能を実行できる。オペレーティング・システムやアプリケーション・ソフトウェアの動作は低水準機能の実行後割込み箇所から再開される。
低水準機能を開始するために、本明細書でシステム管理割込み（ＳＭＩ）と呼ぶハードウェア割込みが生成される。プロセッサは、ＳＭＩを受け取ると、書込み中のもの全てが完了するのを待つ。また、プロセッサは、外部キャッシュなどの外部装置上で書込み中のものも待つ。そのすべての継続中の書込みが完了すると、プロセッサはそのレジスタ状態の一部をシステム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）に保存し、ＳＭＭハンドラの実行を開始する。ＳＭＭハンドラはエラーの報告やログ、Ｉ／Ｏエミュレーション、中断または再開動作、電力管理などの低水準機能を実行するソフトウェア・ルーチンである。
ＳＭＲＡＭは、ＳＭＭ用に予約されているメモリである。ＳＭＭハンドラはＳＭＲＡＭに記憶される。ＳＭＭハンドラの実行の前に、プロセッサはそのレジスタ状態の一部をＳＭＲＡＭの予約部分に自動的に記憶する。たとえば、プロセッサは、セグメンテーション・レジスタ、汎用レジスタ、命令・ポインタ、ディスクリプタ・テーブル・レジスタ、およびモデル固有レジスタの状態を、ＳＭＲＡＭの予約部分に記憶することが多い。浮動小数点レジスタなどの一部のレジスタ状態は、ＳＭＭに入るときに自動的に記憶することができない。これは、多くのＳＭＭハンドラはこの種のレジスタに変更を加えないためである。しかし、これらのレジスタをＳＭＭハンドラで使用する場合、レジスタの記憶と再記憶を行うコードをＳＭＭハンドラ・ルーチンに組み込むことができる。
ＳＭＭハンドラ・ルーチンは、実モードに類似したモードを動作する。ＳＭＭと実モードの１つの相違点は、３２ビット・プロセッサがＳＭＭ中に４ギガバイトのアドレス空間をアドレス指定することができることである。実モード（および保護モード）は、Ｉｎｔｅｌアーキテクチャ・プロセッサを熟知している者および当業者には周知である。
割り込まれたプログラムには、ＳＭＭハンドラ・ルーチンの終わりにあるＲＳＭ（再開）命令が制御を返す。ＲＳＭ命令の実行中に、プロセッサはその状態をＳＭＲＡＭから再記憶し、割り込まれたルーチンの実行を再開する。プロセッサの内部状態が再記憶され、すべてのメモリ・アクセスがＳＭＲＡＭに対して行われるため、この割込みはオペレーティング・システムとアプリケーション・ソフトウェアの両方にとって透過である。
従来の技術では、ＳＭＭがオペレーティング・システムに透過であるように、ＳＭＲＡＭは標準（非ＳＭＭ）メモリ空間とは異なるメモリ空間にあった。標準メモリ空間は一般に、メイン・メモリの全部をアドレスする。ＳＭＲＡＭ用の別個のメモリを設けるのではなく、ＳＭＲＡＭは一般に、グラフィクス・アダプタ・メモリなどのメイン・メモリ内の未使用部分に記憶される。プロセッサによっては、ＳＭＲＡＭの場所が、メイン・メモリの未使用部分に対応するＳＭＲＡＭアドレス空間内のアドレス範囲にマッピングされる。一部のＩｎｔｅｌアーキテクチャ・プロセッサでは、初期ＳＭＲＡＭ場所は０００３００００Ｈである（アドレスの終わりに付加された「Ｈ」は、アドレスが１６進数で表されていることを示す）。従来の技術では、グラフィクス・アダプタ・メモリのアドレス範囲はアドレスＡ００００Ｈ〜ＢＦＦＦＦＨに対応する。したがって、３００００Ｈ〜４ＦＦＦＦＨのＳＭＲＡＭアドレスはＡ００００Ｈ〜ＢＦＦＦＦＨにマッピングされる。ＳＭＭ中にグラフィクス・アダプタ・メモリ・アドレス範囲内のアドレスへのアクセスが行われる場合、その要求はメモリ・コントローラを介してメイン・メモリに宛てて送られる（ＳＭＭデータ）。ＳＭＭ中でないときにグラフィクス・アダプタ・メモリ・アドレス範囲内のアドレスへのアクセスが行われる場合、その要求は周辺入出力（Ｉ／Ｏ）ブリッジを介して、ビデオ装置上のグラフィクス・アダプタ・メモリに宛てて送られる（非ＳＭＭデータ）。ＳＭＲＡＭに記憶されているデータは標準アドレス空間に記憶されているデータと同じアドレスを有することもできるが、そのアドレスに対応するＳＭＭデータと非ＳＭＭデータは別個のものである。キャッシュ・メモリはデータ要素をそのアドレスだけで区別するため、特定のアドレスにあるＳＭＭデータとそれと同じアドレスにある非ＳＭＭデータが別個のデータを持っている場合であっても、それらのＳＭＭデータと非ＳＭＭデータを区別する機構がない。
ＳＭＭデータと非ＳＭＭデータが、それらを区別する機構のないキャッシュに記憶された場合、データ汚損問題が起こる可能性がある。特定のアドレスにあるデータがキャッシュからライトバックされるとき、メモリ・サブシステムはそのデータがＳＭＭデータがあるか非ＳＭＭであるかを区別することができない。たとえば、ライトバック・データがＳＭＭデータであった場合、メモリ・サブシステムはそれをメイン・メモリに宛てて経路指定する必要がある。ライトバック・データが非ＳＭＭデータであった場合、メモリ・サブシステムはそれをたとえば周辺Ｉ／Ｏ装置に宛てて経路指定する必要がある。外部システムがライトバック・データを誤って経路指定した場合、ＳＭＭデータが非ＳＭＭデータによって上書きされたり、その逆の上書きが行われたりし、それによってそのアドレスにあるデータが汚損される。
キャッシュ内のＳＭＭデータと非ＳＭＭで-タを別個のものとして維持する１つの従来技術の方法は、同じアドレスを共用するＳＭＭデータと非ＳＭＭデータをキャッシュに入れることができないようにすることである。グラフィクス・アダプタ・メモリ・アドレス範囲は、このようなキャッシュ不能な非ＳＭＭメモリの有力な候補である。表示装置に書き出される画素データはライトバック・キャッシュに記憶されるのではなく、グラフィクス・アダプタ・メモリに更新される必要があるため、グラフィクス・アダプタ・メモリは通常はキャッシュ不能である。この方法では、同じアドレス範囲を共用するＳＭＲＡＭもキャッシュ不能である。この方法では、ＳＭＭデータはキャッシュに記憶されないため、ＳＭＭと非ＳＭＭとを切り換える時にキャッシュ・フラッシュが不要である。この方法の欠点は、キャッシュ不能バス・サイクルがキャッシュ可能バス・サイクルよりも低速であることである。フラッシュ動作が不要なため、その待ち時間は改善されるが、キャッシュ不能サイクルのアクセス時間が低速になるために命令とデータのスループットが低下する。
ＳＭＭデータと非ＳＭＭデータを区別しておく他の従来技術の方法は、ＳＭＭに入るときとＳＭＭから出るときにキャッシュをフラッシュすることである。非ＳＭＭ中には、プロセッサは一般にキャッシュ可能バス・サイクルを実行する。ＳＭＩが認識されると、ＳＭＭに入る前にキャッシュ・フラッシュを行い、すべての非ＳＭＭデータのキャッシュを一掃し、ＳＭＭデータをキャッシュに入れることができるようにする。ＳＭＭ中には、プロセッサは一般にキャッシュ可能バス・サイクルを実行する。ＲＳＭを受け取ると、ＳＭＭを出る前にキャッシュ・フラッシュが行われて、非ＳＭＭデータをキャッシュに入れることができるようにすべてのＳＭＭデータがキャッシュから一掃される。ＳＭＭ中は、キャッシュにはＳＭＭデータのみが入れられている。非ＳＭＭ中は、キャッシュには非ＳＭＭデータのみが入れられる。この方法の利点は、ＳＭＭバス・サイクルと非ＳＭＭバス・サイクルがキャッシュ可能であり、その結果、アクセス時間が高速化することである。しかし、ＳＭＭに入るときとＳＭＭから出るときに必要なキャッシュ・フラッシュに長時間かかり、それによってシステム管理ハンドラの待ち時間が長くなる。これは、迅速に応答する必要のあるＳＭＭハンドラと、２回の長時間のキャッシュ・フラッシュの間ディスエーブルされない割込みハンドラにとっては問題である。たとえば、リアルタイム・オペレーティング・システムは、イベントにリアルタイムで応答するために低待ち時間を必要とする。さらに、たとえば、オーディオ再生、音声認識、ディジタル同時音声およびデータ（ＤＶＳＤ）を含むモデム・エミュレーション、およびビデオ会議などのリアル・タイム・アプリケーションも低待ち時間を必要とする。待ち時間の増大の結果、ビデオ・アプリケーションにおける「テア」や「フレーム・ドロップアウト」、音声アプリケーションにおける音声の短縮及びその他の聴覚的影響が起こる可能性がある。さらに、待ち時間の増大によってデータ汚損、システム・クラッシュ、重要なサービスの損失も起こることがある。
データ汚損問題なしにＳＭＭデータと非ＳＭＭデータをキャッシュに記憶することができるようにすると同時に、ＳＭＭと非ＳＭＭとの切り替えの際のキャッシュ・フラッシュ動作を回避する方法が必要である。さらに、ＳＭＭハンドラ・ルーチンの待ち時間を少なくし、パフォーマンスを向上させる方法が必要である。
発明の概要
データ汚損問題を起こさずにキャッシュ内にＳＭＭデータと非ＳＭＭデータが共存できるように、システム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）・アドレスを対応するメイン・メモリ・アドレスに変換する方法および装置について記載する。ＳＭＲＡＭをキャッシュ内のすべてのメイン・メモリ・アドレスから区別することができるように、ＳＭＲＡＭアドレス範囲はメイン・メモリ・アドレス範囲外にある。ＳＭＲＡＭがメイン・メモリのうちの他の用途には使用されない部分に配置されるように、ＳＭＲＡＭアドレスを対応するメイン・メモリ・アドレスに変換する。
【図面の簡単な説明】
第１図は、本発明のコンピュータ・システムの一実施形態を示す図である。
第２図は、ＳＭＲＡＭアクセスを保護する装置の一実施形態を示す図である。
第３図は、ＳＭＲＡＭサイクル照合論理回路の一実施形態を示す図である。
第４図は、ＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路の一実施形態を示す図である。
第５図は、ＳＭＲＡＭ  Ａ−Ｆ  ＳＥＧアドレス照合論理回路の一実施形態を示す図である。
第６図は、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路の一実施形態を示す図である。
第７図は、アドレス変換論理回路の一実施形態を示す図である。
第８図は、ハード・エラー生成論理回路の一実施形態を示す図である。
第９図は、ＳＭＲＡＭをメイン・メモリにマッピングすると同時に、ＳＭＭ中でないときにエイリアスＳＭＲＡＭ空間の保護を行う方法の一実施形態を示す図である。
詳細な説明
以下の説明では、本発明をよりよく理解することができるように、特定のメモリ構成、アドレス範囲、保護方式など、多くの特定の詳細を記載する。しかし、当業者なら、本発明はこれらの特定の詳細がなくても実施可能であることがわかるであろう。他の場合には、本発明が不明瞭にならないように、周知の装置およびプロセス・ステップについては詳述していない。
システム管理モード
本発明は、システム管理モード（ＳＭＭ）データおよびコードを、非ＳＭＭデータと共にキャッシュに記憶することができるようにする。本発明では、キャッシュに記憶されている場合にＳＭＲＡＭアドレスをすべてのメイン・メモリ・アドレスから区別できるように、メイン・メモリ・アドレス範囲外に１つまたは複数のシステム管理ランダム・アクセス・メモリ（ＳＭＲＡＭ）アドレス範囲を備えることによってこれが可能になる。ＳＭＲＡＭデータをメイン・メモリに記憶するとき、またはメイン・メモリから取り出すとき、ＳＭＲＡＭアドレスがメイン・メモリの１つまたは複数の未使用部分における対応するエイリアスＳＭＲＡＭアドレスに変換される。たとえば、ＳＭＲＡＭデータをキャッシュからライトバックするとき、論理回路によって、メイン・メモリ・アドレスから区別するために使用されるＳＭＲＡＭアドレスをＳＭＲＡＭとして使用するメイン・メモリの部分に対応するエイリアスＳＭＲＡＭアドレスに変換する。この別個のアドレス範囲によって、ＳＭＲＡＭからのＳＭＭデータを非ＳＭＭデータと共にキャッシュに記憶することが可能になり、それによってＳＭＭハンドラ・ルーチンのアクセス時間と待ち時間が短縮される。
コンピュータ・システム
第１図に、本発明を使用するコンピュータ・システムの一実施形態を示す。このコンピュータ・システムは、プロセッサ（ＣＰＵ）１００と、プロセッサ・サブシステム１０５内に結合されたキャッシュ１０６とを含む。プロセッサ・サブシステム１０５はシステム・バス１３０に結合されている。バス・サイクル要求が、たとえばプロセッサ・サブシステム１０５およびその他のバスマスタによって、周知の方法に従ってシステム・バス１３０上に送出される。システム・バス１３０にはメモリ・コントローラ１１０と周辺装置Ｉ／Ｏブリッジ１２０も結合されている。システム・バス１３０上のバス・サイクル要求が、指定されたメモリ・アドレス範囲内のアドレスを有する場合、メモリ・コントローラ１１０はそれらのメモリ・アドレス範囲をメイン・メモリ・バス１７０を介してメイン・メモリ１４０にリダイレクトする。本発明では、このような１つのメモリ・アドレス範囲はＳＭＲＡＭアドレス範囲である。システム・バス１３０上のバス・サイクル要求が指定された周辺Ｉ／Ｏアドレス範囲内のアドレスを有する場合、周辺Ｉ／Ｏブリッジ１２０がそれらのメモリ・アドレス範囲を周辺Ｉ／Ｏバス１８０を介してビデオ装置１５０や基本入出力システム（ＢＩＯＳ）１６０などの周辺Ｉ／Ｏ装置１９０に送る。１つの周辺Ｉ／Ｏアドレス範囲は、ビデオ装置１５０上のグラフィクス・アダプタ・メモリ（ＧＡＭ）１５５に対応するビデオ・グラフィクス・アダプタ・メモリ・アドレス範囲である。一実施形態では、周辺Ｉ／Ｏバス１８０とメイン・メモリ・バス１７０は単一のバスとして実装され、たとば、周知の方法に従って、そのサイクルを周辺Ｉ／Ｏ装置１９０とメイン・メモリ１４０のどちらで処理すべきか制御信号を使用して示す。
メモリ・コントローラ１１０はシステム・バス１３０に結合され、システム・バス１３０はアドレス・バス１０１とサイクル状況バス１０２とＳＭＩＡＣＴ♯バス１０３とデータ・バス１０４とを含む・ＳＭＩＡＣＴ♯バス１０３は、プロセッサ・サブシステム１０５がＳＭＭモードであるかどうかを示す（「♯」接尾部は、条件が真であるときに信号が低であることを示す）。サイクル状況バス１０２は、システム・バス１３０がアクティブであるかどうかを示し、アクティブの場合は、どのタイプのサイクルが実行されているかを示す。アドレス・バス１０１はバス要求のアドレスを示す。バス要求が書込みサイクルである場合、プロセッサ・サブシステム１０５は、そのアドレスに関連づけられたデータをデータ・バス１０４に書き出す。バス要求が読取りサイクルである場合、プロセッサ・サブシステム１０５はそのデータが返されたときにデータ・バス１０４からデータを読み取る。メモリ・コントローラ１１０は、バス要求が（たとえば周辺Ｉ／Ｏブリッジ１２０ではなく）メモリ・コントローラ１１０によって処理されるべきであると判断した場合、システム・バス１３０上のバス要求に対応するバス要求をメイン・メモリ・バス１７０上に生成する。メイン・メモリ・バス１７０は、アドレス・バス１１１とサイクル状況バス１１２とデータ・バス１１４とを含む。メモリ・コントローラ１１０は、アドレス・バス１０１上のアドレスがＳＭＲＡＭアドレス範囲内にあるかどうかを判断するＳＭＲＡＭアドレス照合論理回路と、サイクルがＳＭＲＡＭにアクセスを許可されたサイクルであるかどうかを判断するＳＭＲＡＭサイクル照合論理回路とを含む。メモリ・コントローラ１１０は、ＳＭＲＡＭアドレスを対応するエイリアスＳＭＲＡＭアドレスに変換（マッピング）するアドレス変換論理回路４１０も含み、そのエイリアスＳＭＲＡＭアドレスは、サイクルがＳＭＲＡＭ範囲内にあるアドレスを有する許可されたサイクルである場合にアドレス・バス１１１上に送り出され、サイクルが許可されたサイクルでない場合、アドレス・バス１０１上のアドレスがアドレス・バス１１１上に送り出される。サイクル状況バス１１２は、メイン・メモリ・バス１７０がアクティブであるかどうかを示し、アクティブである場合は、どのタイプのサイクルが行われているかを示す。サイクルのタイプが書込みサイクルである場合、データ・バス１１４にはプロセッサ・サブシステム１０５によってデータ・バス１０４上に書き出されたデータに対応するデータが入れられる。サイクルのタイプが読取りサイクルである場合、データ・バス１１４にはメイン・メモリ１４０から取り出されたデータが後で入れられ、そのデータが後でデータ・バス１０４上に返される。一実施形態では、メモリ・コントローラ１１０は、ＳＭＲＡＭアドレス範囲内のアドレスを有する特定の許可されないバス・サイクルが検出された場合にエラーを示すハード・エラー論理回路も含む。
ＳＭＲＡＭアドレス範囲の選択
ＳＭＲＡＭアドレス範囲を選択する際に考慮すべき２つの要素は、メイン・メモリが使用するアドレス範囲とアドレス・バスで表すことができるアドレス空間である。本発明では、各ＳＭＲＡＭアドレス範囲を、メイン・メモリ・アドレス範囲外にあるアドレス・バスで表すことができるアドレス範囲の一部に入るように定義する。メイン・メモリ・アドレス範囲は、実装メイン・メモリに（変換せずに）直接対応するすべてのアドレスを含む。メイン・メモリ・アドレス範囲は、アドレス・バスで表すことができるすべてのアドレスのサブセットである。たとえば、３２ビット・アドレス・バスは、００００００００ＨからＦＦＦＦＦＦＦＦＨまでのアドレス（アドレスの終わりに付加された「Ｈ」はアドレスが１６進数で表されていることを示す）を使用して４ギガバイト（４ＧＢ）のメイン・メモリをアドレスすることができるが、たとえば実装メイン・メモリが６４ＭＢしかない場合がある。そのようなコンピュータでは、メイン・メモリ・アドレス範囲は００００００００Ｈ〜０３ＦＦＦＦＦＦＨであり、ＳＭＲＡＭアドレス範囲は０４００００００〜ＦＦＦＦＦＦＦＦＨのアドレス範囲の部分に定義することができる。キャッシュはキャッシュ内のデータ要素を区別するためにアドレスの最上位ビット側を（後述する）タグ要素として使用するため、キャッシュ内でＳＭＭデータと非ＳＭＭデータを区別することができる。キャッシュからＳＭＭデータがライトバックされると、アドレス変換論理回路はＳＭＲＡＭアドレスをメイン・メモリの未使用部分内の対応するエイリアスＣＭＲＡＭアドレスに変換する。一実施形態では、アプリケーションがメイン・メモリ・アドレス範囲ではなくＳＭＲＡＭアドレス範囲にアクセスする可能性を少なくするために、使用可能なアドレス空間の上位部分にあるＳＭＲＡＭアドレス範囲が好ましい。
ＳＭＲＡＭアドレス範囲を選択する際に考慮すべき第３の要素は、キャッシュ内のタグ要素によって表すことができるアドレス範囲である。タグ要素は、キャッシュに記憶されている関連づけられたデータ要素のアドレスの最上位ビット側から成る。タグ要素は、データ要素のアドレスを識別するために使用される。一実施形態では、キャッシュ内のタグ要素にはアドレスの最上位ビットから幾つかが記憶されない。このような実施形態では、各ＳＭＲＡＭアドレス範囲は、それをメイン・メモリ・アドレス範囲と区別するのに、この記憶されないアドレス・ビットを必要としないように選択しなければならない。たとえば、６４ＭＢのメイン・メモリが実装されている場合、メイン・メモリ・アドレス範囲は００００００００Ｈから０３ＦＦＦＦＦＦＨに対応する。このようなシステムでは、メイン・メモリに直接アクセスする場合、アドレスの上位６ビットは常にゼロである。キャッシュのタグ要素の最上位ビット側を、将来のメモリ・アップグレードを見込んでも使用しないという前提のもとに記憶しないことによって、チップ面積をある程度節約することができる。たとえば、アドレスの上位３ビットＡ３１、Ａ３０、およびＡ２９をキャッシュに記憶しないとすれば、さらに５１２ＭＢ（１ＦＦＦＦＦＦＦＨ）より下のすべてのアドレスを互いに区別することができることになる。しかし、そのようなシステムのキャッシュに１ＦＦＦＦＦＦＦＨより上のアドレスを記憶したとすれば、データ汚損問題が起こる可能性がある。たとえば、アドレス３ＦＦ０００００Ｈは、そのようなキャッシュ・タグ・アレイに１ＦＦ０００００Ｈとして記憶されることになる。たとえば、３ＦＦ０００００Ｈに関連づけられたデータをメイン・メモリにライトバックした場合、ＩＦＦ０００００Ｈに記憶されることになり、それによって１ＦＦ０００００Ｈに前に記憶したデータが汚損される。データ汚損を起こさずに１ＦＦＦＦＦＦＦＨより上のアドレスをサポートするためには、キャッシュ・タグ・アドレス範囲外にあるすべてのアドレスに「非キャッシュ」というデフォルトのキャッシング・タイプを割り当てる。したがって、各ＳＭＲＡＭアドレス範囲をメイン・メモリ・アドレス範囲外になるように定義しても、ＳＭＭデータをキャッシュに入れるパフォーマンス上の利点を得るために、各ＳＭＲＡＭアドレス範囲はタグ要素内で実施されているアドレス空間の範囲内に収める必要がある。
ＳＭＲＡＭアドレス範囲を選択する際に考慮すべき第４の要素は、ＳＭＭ中のＡ２０Ｍ♯ピンの不確定さである。Ａ２０Ｍ♯ピンは、Ｉｎｔｅｌアーキテクチャ・マイクロプロセッサを熟知している業者には周知である。一実施形態では、Ａ２０Ｍ♯ピンはＳＭＭ中には不確定である。一実施形態では、論理回路を不確定なＡ２０Ｍ♯信号から独立させるために、アドレスがＳＭＲＡＭアドレス範囲内にあるかどうかを判断する際にＡ２０ビットは検査されない。したがって、たとえばアドレス１ＦＦＸＸＸＸＸＨがアドレス範囲１ＦＥＸＸＸＸＸＨとも一致することになる。
これは、ＳＭＲＡＭアドレス範囲が偶数メガバイトのアドレス境界上にくるようにすることによって行う。算術的に示すと、ＳＭＲＡＭアドレス範囲は、任意のアドレスとＦＦＥＦＦＦＦＦＨとの論理ＡＮＤをとることによって形成される境界にある。実際上の効果は、Ａ２０Ｍ♯が無視されたことである。他の実施形態では、Ａ２０Ｍ♯信号が不確定であっても、ソフトウェアに頼ってＳＭＲＡＭアドレス範囲を偶数メガバイト範囲（Ａ２０はゼロである）に割り当てることによってＡ２０ビットが照合される。このような実施形態では、対応する奇数メガバイト（Ａ２０は１である）を他の機能に割り当てることができる。
エイリアスＳＭＲＡＭアドレス範囲の選択
エイリアスＳＭＲＡＭアドレス範囲を選択する際の１つの考慮すべき点は、メモリの未使用部分の場所である。本発明では、各エイリアスＳＭＲＡＭアドレス範囲をメイン・メモリの未使用部分に対応するアドレス範囲になるように定義する。一実施形態では、１つのエイリアスＳＭＲＡＭアドレス範囲はグラフィクス・アダプタ・メモリ・アドレス範囲に対応する。一実施形態では、グラフィクス・アダプタ・メモリ・アドレス範囲は、アドレス範囲Ａ００００Ｈ〜ＢＦＦＦＦＨに対応する。第１図を参照すると、システム・バス１３０上のグラフィクス・アダプタ・メモリ・アドレス範囲内のすべてのアドレスが周辺Ｉ／Ｏブリッジ１２０によってビデオ装置１５０上のグラフィクス・アダプタ・メモリ１５５にリダイレクトされるため、ビデオ装置１５０はこれらのアドレスに対応するメイン・メモリ・データ要素を使用しない。本発明では、システム・バス１３０上のＳＭＲＡＭアドレスはビデオ装置によって使用されないまま残されたメイン・メモリの部分内にある対応するエイリアスＳＭＲＡＭアドレスを使用して、メモリ・コントローラ１１０によってメイン・メモリ・バス１７０にリダイレクトされる。一実施形態では、１つのエイリアスＳＭＲＡＭアドレス範囲はグラフィクス・アダプタ・メモリと業界標準アーキテクチャ（ＩＳＡ）拡張アドレス範囲に対応する。ＩＳＡ拡張領域は、アドレス範囲Ｃ００００Ｈ〜ＤＦＦＦＦＨに対応する。ＩＳＡ拡張領域は、メモリまたは装置に独立して割り振ることができる８個の１６Ｋブロックに分けられている。装置にブロックを割り振ると、グラフィクス・アダプタ・メモリのように、エイリアスＳＭＲＡＭアドレス範囲で使用することができる。ブロックをメモリに割り振ると、エイリアスＳＭＲＡＭアドレス範囲で使用することができない。一実施形態では、プログラマがＳＭＭコードを、たとえば周辺Ｉ／Ｏ装置に割り振られたセグメントを含まないＳＭＲＡＭ範囲の部分に入れる責任を負う。他の実施形態では、エイリアスＳＭＲＡＭ範囲は、ＳＭＲＡＭ用に予約されたメイン・メモリの部分に対応する。一実施形態では、エイリアスＳＭＲＡＭ範囲はメイン・メモリ・アドレス範囲の最後の（最上位）１２８Ｋアドレスのブロックに対応する。一実施形態では、エイリアスＳＭＲＡＭ範囲は、メイン・メモリ・アドレス範囲の最後の２５６Ｋアドレスのブロックに対応する。当業者なら、メイン・メモリ・アドレス範囲の他の部分にあるエイリアスＳＭＲＡＭアドレス範囲や異なるサイズのＳＭＲＡＭアドレス範囲も実施可能であることがわかるであろう。
エイリアスＳＭＲＡＭアドレス範囲を選択する際の他の考慮すべき点は、プロセッサの下位アドレス・ピンからメイン・メモリ上のアドレス・ピンまでの経路によって、最高速の動作タイミング（速度経路とも呼ぶ）が制限されることである。ＳＭＲＡＭアドレスおよびそれに対応するエイリアスＳＭＲＡＭアドレスを、同じ下位アドレス・ビットを有するように選択することによって、速度経路に余分な回路を追加するのを回避することができる。当業者なら、デコードする上位ビット用のデコーダ回路の設計は、新たな速度経路が生じないように行う必要があることがわかるであろう。
ＳＭＲＡＭ  Ａ−Ｆアドレス範囲
一実施形態では、ＳＭＲＡＭ  Ａ−Ｆアドレス範囲は、グラフィクス・アダプタ・メモリなど、メイン・メモリ・アドレス範囲の未使用部分にあるエイリアスＳＭＲＡＭ  Ａ−Ｆアドレス範囲に対応する。一実施形態では、キャッシュ・タグ・アレイに実施された最上位側のアドレス・ビットを使用して、各ＳＭＲＡＭアドレス範囲を、エイリアスＳＭＲＡＭアドレス範囲を含むメイン・メモリ・アドレス範囲から区別する。一実施形態では、ＳＭＲＡＭ  Ａ−Ｆアドレス範囲は、１００ＸＸＸＸＸＨであり、エイリアスＳＭＲＡＭ  Ａ−Ｆ範囲は０００ＸＸＸＸＸＨである。ただし、各Ｘは任意の独立した４ビットの組合せを表す。他の実施形態では、上位アドレス・ビットの他の組合せを使用してＳＭＲＡＭアドレス範囲を、エイリアスＳＭＲＡＭアドレス範囲を含むメイン・メモリ・アドレス範囲から区別することもできる。一実施形態では、ＳＭＲＡＭアドレス範囲１ＦＥＡ００００Ｈ〜１ＦＥＤＦＦＦＦＨは、エイリアスＳＭＲＡＭアドレス範囲０００Ａ００００Ｈ〜０００ＤＦＦＦＦＨにマッピングされる。この実施形態では、マッピングされたすべてのアドレスはグラフィクス・アダプタ・メモリまたはＩＳＡ領域内のエイリアスを有する。他の実施形態では、認識されたＳＭＲＡＭアドレス範囲の一部だけがエイリアスＳＭＲＡＭアドレス範囲のターゲット部分に変換される。たとえば、一実施形態では、ＳＭＲＡＭアドレス範囲１ＦＥＸＸＸＸＸＨはエイリアスＳＭＲＡＭアドレス範囲０００ＸＸＸＸＸＨにマッチングされる。この場合、たとえばアドレス１ＦＥ０００００Ｈは、グラフィクス・アダプタ・メモリまたはＩＳＡ領域内のエイリアスＳＭＲＡＭアドレス範囲のターゲット部分内になく、別の目的のために使用されるメイン・メモリの部分に対応させることができる００００００００Ｈにマッピングされる。この実施形態では、ＳＭＭハンドラは、エイリアスＳＭＲＡＭアドレス範囲のターゲット部分に対応するＳＭＲＡＭアドレス範囲の部分のみを使用しなければならない。一実施形態では、ＩＳＡ拡張領域の一部がメイン・メモリに割り振られる。この実施形態では、ＩＳＡ拡張領域のそれらの部分はエイリアスＳＭＲＡＭアドレス範囲のターゲット部分から除外される。
ＳＭＲＡＭ上位セグメント（ＴＳＥＧ）アドレス範囲
一実施形態では、ＳＭＲＡＭ上位セグメント（ＴＳＥＧ）アドレス範囲は、メイン・メモリ・アドレス範囲の予約部分にあるエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲に対応する。たとえば、６４ＭＢの実装メイン・メモリを備えたコンピュータでは、メイン・メモリ・アドレス範囲は前述のように００００００００Ｈ〜０３ＦＦＦＦＦＦＨである。一実施形態では、ＳＭＲＡＭ  ＴＳＥＧアドレス範囲は１３ＦＣＸＸＸＸＨ〜１３ＦＦＸＸＸＸＨであり、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲は０３ＦＣＸＸＸＸＨ〜０３ＦＦＸＸＸＸＨ（メイン・メモリ・アドレス範囲の最後の２５６Ｋアドレスに対応する）である。他の実施形態では、ＳＭＲＡＭ  ＴＳＥＧアドレス範囲は、１３ＦＥＸＸＸＸＨ〜１３ＦＦＸＸＸＸＨであり、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲は０３ＦＥＸＸＸＸＨ〜０３ＦＦＸＸＸＸＨ（メイン・メモリ・アドレス範囲の最後の１２８Ｋアドレスに対応する）である。エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲に含めるアドレスはこれより多くても少なくてもよい。さらに、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲は、メイン・メモリ・アドレス範囲の他の部分に対応させることもできる。当業者なら、他のビットを使用してＳＭＲＡＭアドレス範囲をそれに対応するエイリアスＳＭＲＡＭアドレス範囲と区別することもできることがわかるであろう。また、当業者なら、他のアドレス範囲も使用可能であることがわかるであろう。
ＳＭＲＡＭアドレス範囲の他の実施形態
１つまたは複数のＴＳＥＧアドレス範囲と１つまたは複数のＡ−Ｆアドレス範囲を使用することができることは明らかであろう。他の実施形態では、１つまたは複数のＴＳＥＧアドレス範囲か、あるいは１つまたは複数のＡ−Ｆアドレス範囲を使用する。当業者なら、上記のようにして、またはその他の方法で、アドレスを恣意的なアドレス範囲にマッピングすることができることがわかるであろう。そのようなアドレスには固定値が与えられることに留意されたい。また、当業者なら、このような恣意的なアドレス範囲はプログラム制御によって修正可能であることがわかるであろう。一実施形態では、ＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路またはＳＭＲＡＭ  Ａ−Ｆアドレス照合論理回路あるいはそ両方に、任意選択の範囲選択バスを結合して、指定されたＳＭＲＡＭアドレス範囲内のビットの一部を外部から定義することができるようにする。一実施形態では、ＳＭＲＡＭアドレスはアドレス範囲ＩＳＥＸＸＸＸＸＨにあり、ＳはＳＭＲＡＭアドレス範囲を再配置するために外部的に選択可能な４ビットのターゲット・ビットを表す。各ターゲット・ビットによって、対応するアドレス・ビットが一致を構成するためにどのようなアドレス・ビットでなければならないかが決まる。他の実施形態では、ＳＭＲＡＭアドレス範囲は、将来容易に再配置することができるようにパラメータ化される。たとえば、メイン・メモリを２ＧＢ（３ＦＦＦＦＦＦＦＨ）に拡張する場合、ＳＭＲＡＭアドレス範囲を７ＦＥＸＸＸＸＸＨに再配置する。このようなシステムで使用されるキャッシュは、より大きなＳＭＲＡＭアドレスを表すためにより多くのタグ・ビットを有する。当業者なら、他のシステム構成のために他のメモリ範囲も選択可能であることがわかるであろう。
ＳＭＲＡＭアドレス範囲の予約
適切なＳＭＲＡＭアドレス範囲を選択した後は、それらの他の目的に使用しないように予約しなければならない。第１図を参照すると、オペレーティング・システムとＢＩＯＳ１６０は周辺Ｉ／Ｏブリッジ１２０に対して、どのアドレスが周辺Ｉ／Ｏ装置１９０にマッピングされるかを示すことが多い。オペレーティング・システムは、周辺Ｉ／Ｏ装置１９０のためにＳＭＲＡＭアドレス範囲内のアドレスを選択してはならない。たとえば、オペレーティング・システムがＳＭＲＡＭアドレス範囲内のアドレスを周辺Ｉ／Ｏ装置に割り当てた場合、周辺Ｉ／Ｏブリッジ１２０とメモリ・コントローラ１１０の両方が、そのアドレスにあるバス・サイクルをそれぞれのバスに送るように構成されることになる。周辺Ｉ／Ｏブリッジ１２０がメモリ・コントローラ１１０よりも優先順位が高い場合、そのアドレスへのすべてのアクセスは周辺Ｉ／Ｏ装置に向けられることになり、それによってＳＭＭハンドラへのアクセスが不可能になる。メモリ・コントローラ１１０の優先順位が周辺Ｉ／Ｏブリッジ１２０よりも高い場合、そのアドレスへのすべてのアクセスはＳＭＲＡＭに向けられることになり、それによって周辺Ｉ／Ｏ装着へのアクセスが不可能になる。一実施形態では、プラグ・アンド・プレイＢＩＯＳにおけるシステム装置構成リストに３２ビットの固定場所メモリ範囲ディスクリプタを付加することによって、ＳＭＲＡＭアドレス範囲を予約する。他の実施形態は、周知のＢＩＯＳ  ＩＮＴ１５／Ｅ８０１サービスが実装メモリの上位を、実装メモリの実際の上位より下に延びるものとして報告し、それによってオペレーティング・システムが実装メモリのうちの報告されたメイン・メモリの上位と実際のメイン・メモリ上位との間の部分を使用しないようにする。この報告されないメモリがＳＭＲＡＭに使用される。他の実施形態では、ＳＭＲＡＭアドレス範囲を予約する他の方法も使用可能である。
ＳＭＲＡＭ保護モード
重要なＳＭＭハンドラ・ルーチンの無許可の変更を防止するために、プロセッサがＳＭＭ中でない場合、ＳＭＲＡＭへのアクセスに制限を加えることが望ましい。ＳＭＭハンドラ・ルーチンはＳＭＭで呼び出されると実モード特権レベルで実行されるため、特権データおよび特権命令への無許可のアクセスを可能にする可能性がある。このような無許可のアクセスは、熱制御、エラー回復、エミュレーションなどの重要なシステム制御を損なう可能性があり、たとえばウィルスに対する保護を損なう可能性がある。一実施形態では、ＳＭＲＡＭアドレス範囲内のアドレスへの無許可のアクセスの防止をオペレーティング・システムに任せる。上位メモリへのアクセスは、オペレーティング・システムや、オペレーティング・システムによってアクセスが認められたアプリケーションなどの特権プログラムのみが行うことができるため、オペレーティング・システムによる対応がない限りアプリケーションはＳＭＲＡＭアドレス範囲へのアクセスを獲得することができない。したがって、システム・バス１３０上のすべてのＳＭＲＡＭバス要求は、オペレーティング・システムによって許可されているものとみなされ、したがってメイン・メモリ・バス１７０に送られる。
他の実施形態では、メモリ・コントローラ１１０（第１図を参照）は、システム・バス１３０上の特定のＳＭＲＡＭバス要求がメイン・メモリ・バス１７０に送られるのを防止する保護論理回路を含む。一実施形態では、保護論理回路は非ＳＭＭでＳＭＲＡＭに対して非ライトバック・サイクルが発行されると、任意選択のハード・エラー・バス上でハード・エラー信号を発生する。一実施形態では、このハード・エラー信号は、エラー・ハンドラを開始するためにプロセッサ・サブシステム１０５に結合される。一実施形態では、メモリ・コントローラ１１０は非ＳＭＭでＳＭＲＡＭへのライトバック・サイクルを可能にして、キャッシュに入れられたＳＭＭデータを更新することができるようにする。他の実施形態では、メモリ・コントローラ１１０は、ＳＭＭハンドラ・ルーチンの終了時にキャッシュに残されているのは重要でないＳＭＭデータのみであるという前提のもとに、非ＳＭＭでのＳＭＲＡＭへのライトバック・サイクルを無視する。メモリ・コントローラ１１０が非ＳＭＭ中にＳＭＲＡＭへのライトバック・サイクルを無視する場合、プロセッサが非ＳＭＭに戻る前にキャッシュからＳＭＲＡＭに重要なデータがライトバックされるように保証することが重要である。一実施形態は、ＳＭＲＡＭ範囲全体をライトスルーとして割り振る。キャッシュ内のライトスルー・データが変更されると、メイン・メモリを更新するバス・サイクルが開始される。データが変更されるたびにバス・サイクルを行わなければならないため、ライトスルー・サイクルによってパフォーマンスが低下する。他の実施形態では、重要なデータを含むＳＭＲＡＭの領域をライトスルーとして割り振り、重要でないデータを含む領域をライトバックとして割り振る。これによって、可能な場合にライトバック・キャッシングのパフォーマンス上の利点を利用することができると同時に、重要なデータがＳＭＲＡＭに合わせてただちに更新されるように強制することができる。当業者なら他の保護方式も実施可能であることがわかるであろう。
ＳＭＲＡＭ論理回路
第２図に、システム・バス１３０上の適切なバス・サイクルを検出し、そのサイクルがメイン・メモリ・バス１７０で発行されたことを示す信号をメイン・メモリ発行バス４４１上で発行する装置の一実施形態を示す。
オープン・バス４３０と、ＳＭＩＡＣＴ♯バス１０３（「♯」接尾部は条件が真の場合に信号が低であることを示す）と、ライトバック・バス４２８と、バスマスタ・バス４２７とが、サイクル照合論理回路４０２に結合され、サイクル照合論理回路４０２はサイクル・タイプ照合パス４３３上で、システム・バス１３０上で発行されたサイクル・タイプがＳＭＲＡＭへのアクセスを許可されているかどうかを示す。オープン・バス４３０は、ＳＭＭ外でＳＭＲＡＭへのアクセスが許可されているかどうかを示す。これは、たとえばＳＭＲＡＭ初期設定のために使用される。ライトバック・バス４２８は、システム・バス１３０上で発行されたサイクルがライトバック・サイクルであるかどうかを示す。オープン信号は、たとえば周知の方法に従ってサイクル状況バス１０２から判断することができる。バスマスタ・バス４２７は、システム・バス１３０上で発行されたサイクルが、周辺構成要素相互接続（ＰＣＩ）装置などの非ＣＰＵバスマスタによって生成されたものであるかどうかを示す。バスマスタ信号は、たとえば周知の方法に従ってサイクル状況バス１０２から判断することができる。アドレス・バス１０１は、アドレス・ビット１７（Ａ１７）バス４２０と、アドレス・ビット１９およびアドレス・ビット１８（Ａ１９〜Ａ１８）バス４２１と、アドレス・ビット２１およびアドレス・ビット２０（Ａ２１〜Ａ２０）バス４２２と、アドレス・ビット２７からアドレス・ビット２２まで（Ａ２７〜Ａ２２）のバス４２３と、アドレス・ビット２８（Ａ２８）バス４２４と、アドレス・ビット３２からアドレス・ビット２９まで（Ａ３１〜Ａ２９）までのバス４２５とを含む。
［ＤＲＢ４−１］バス４６２は、周知の方法に従って実装メイン・メモリの最後の（最上位）４メガバイトに対応する上位アドレス・ビットを示す。２５６Ｋ／１２８Ｋ♯バス４２６は、ＳＭＲＡＭ  ＴＳＥＧアドレス範囲が２５６Ｋアドレスと１２８Ｋアドレスのいずれを含むかを示す。アドレス・バス１０１と、［ＤＲＢ４−１］バス４６２と、２５６Ｋ／１２８Ｋ♯バス４２６は、ＳＭＲＡＭ上位セグメント（ＴＳＥＧ）アドレス照合論理回路４０１に結合され、論理回路４０１はＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３２上でアドレスがＳＭＲＡＭ  ＴＳＥＧアドレス範囲内にあるかどうかを示す。ＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３２とサイクル・タイプ照合バス４３３はＡＮＤゲート４５０に結合され、ＡＮＤゲート４５０はＴＳＥＧ発行サイクル・バス４３８上でＴＳＥＧサイクルを許可するかどうかを示す。
Ａ２８バス４２４とＡ３１−Ａ２９バス４２５はＳＭＲＡＭ  Ａ−Ｆアドレス照合論理回路４０３に結合され、ＳＭＲＡＭ  Ａ−Ｆアドレス照合論理回路４０３はＳＭＲＡＭ  Ａ−Ｆアドレス照合バス４３４上でアドレスがＳＭＲＡＭ  Ａ−Ｆアドレス範囲内にあるかどうかを示す。ＳＭＲＡＭ  Ａ−Ｆアドレス照合バス４３４とサイクル・タイプ照合バス４３３はＡＮＤゲート４５１に結合され、ＡＮＤゲート４５１はＡ−Ｆサイクル発行バス４３９上でＡ−Ｆサイクルを許可するかどうかを示す。
ＤＲＢ４バス４６１は、周知の方法に従って、アンインストール・メモリ・アドレス空間の最初の（最下位）４ＭＧに対応する上位アドレス・ビットを示す。Ａ２７−Ａ２２バス４２３と、Ａ２８バス４２４と、Ａ３１−Ａ２９バス４２５と、ＤＲＢ４バス４６１とは、メイン・メモリ・アドレス照合論理回路４０４に結合され、メイン・メモリ・アドレス照合論理回路４０４は、周知の方法に従ってメイン・メモリ・サイクル発行バス４３５上でメイン・メモリ（非ＳＭＲＡＭ）アクセスを許可するかどうかを示す。一実施形態では、メイン・メモリ照合論理回路は、ＤＲＢ４バス４６１によって示されたアドレス以外のすべてのアドレスについてメイン・メモリ・アクセスを許可する。当業者なら、メイン・メモリ照合論理回路の他の実施形態も実施可能であることがわかるであろう。
アドレス・ホール♯バス４４０は、アドレスが周辺Ｉ／Ｏ装置に割り当てられているメモリ空間の部分の外部、またはたとえばエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲の外部にあることを示す。Ｉ／Ｏ装置アドレス照合論理回路４０５は、周知の方法に従ってＩ／Ｏアドレス照合バス４３６上でアドレスがＩ／Ｏアドレス範囲内にあることを示す。エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路４０６は、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３７上で、アドレスがエイリアスＳＭＲＡＭ  ＴＳＥＧのアドレス範囲内にあることを示す。Ｉ／Ｏアドレス照合バス４３６とエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３７はＮＯＲゲート４５２の入力端子に結合され、ＮＯＲゲート４５２はアドレス・ホール♯バス４４０上でアドレスが周辺Ｉ／Ｏ装置に割り当てられたメモリ空間の部分の外部またはエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲の外部にあることを示す。
ＴＳＥＧサイクル発行バス４３８と、Ａ−Ｆサイクル発行バス４３９と、メイン・メモリ・サイクル発行バス４３５とはＯＲゲート４５３に結合され、ＯＲゲート４５３は、アドレス・ホール♯バス４４０上の信号がアサートされていない場合、条件付き発行バス４４２上でサイクルを発行する必要があることを示す。条件付き発行バス４４２とアドレス・ホール♯バス４４０はＡＮＤゲート４５４の入力端子に結合され、ＡＮＤゲート４５４はメイン・メモリ発行バス４４１上で、サイクルがメイン・メモリに対して発行されていることを示す。一実施形態では、周知の方法に従って、この信号を使用してサイクル状況バス１１２の発行信号を発生させるサイクル状況信号を生成する。他の実施形態では、発光信号は、独立して生成され、この信号は、発行されたバス・サイクルをメイン・メモリと、たとえばＩ／Ｏ装置とのうちのどちらに送るべきかを示す。
サイクル照合論理回路
第３図に、サイクル照合論理回路４０２の一実施形態を示す。ＳＭＩＡＣＴ♯バス１０３はインバータ５５０に結合され、インバータはＳＭＩＡＣＴバス５４２上でＳＭＭがアクティブかどうかを示す。ＳＭＩＡＣＴ♯バス１０３とライトバック・バス４２８はＡＮＤゲート５５１に結合され、ＡＮＤゲート５５１は非ＳＭＭライトバック・バス５４３上で、ＳＭＭ中でないときにサイクルがライトバック・サイクルであるかどうかを示す。オープン・バス４３０とＳＭＩＡＣＴバス５４２と非ＳＭＭライトバック・バス５４３とはＯＲゲート５５２の入力端子に結合され、ＯＲゲート５５２は条件付きサイクル・タイプ照合バス５４４上で、サイクル・タイプがバスマスタ・バス４２７上の信号を条件としてＳＭＲＡＭへのアクセスを許可されているかどうかを示す。条件付きサイクル・タイプ照合バス５４４とバスマスタ・バス４２７はＡＮＤゲート５５３に結合され、ＡＮＤゲート５５３はサイクル・タイプ照合バス４３３上でサイクル・タイプがＳＭＲＡＭのアクセスへを許可されているがどうかを示す。
第３図に示すサイクル照合論理回路４０２の実施形態では、ＳＭＲＡＭへのサイクルは、（オープン・ビットが設定されていない限り）ＳＭＭ中でないときにライトバックのためにのみ発行される。これによって、ＳＭＲＡＭが非ＳＭＭアクセスから保護されると同時に、ＳＭＭ中にキャッシュに書き込まれたがＳＭＭ中にメイン・メモリに再記憶されていないＳＭＭデータを、ＳＭＭ中でないときに再記憶することが可能になる。他の実施形態では、ライトバック・バス４２８は、ＳＭＭ中に許可されている他のサイクルのためにもアサートされる。他の実施形態では、ＳＭＲＡＭへのすべての非ＳＭＭバス・サイクルが無視される。このような保護は、適切にプログラムされたＳＭＭコードによってサポートしなければならない。このようなＳＭＭコードは、ＳＭＭ中に読み取る前に書き込む変数をキャッシュから強制的に追い出してメイン・メモリに入れなければならない。ＳＭＭコードでこれを行うことが可能な１つの方法は、アクセスする変数のために十分なキャッシュ時エイリアスにアクセスし、それによってそれらの変数がキャッシュから追い出されるようにすることである。キャッシュ時エイリアスは、ターゲット・データと同じセットに対応するアドレスである。そのセットに対応するすべてのデータ記憶場所がいっぱいになると、キャッシュは周知の方法に従ってデータをライトバックし、より最近にアクセスされたデータのための空きを作る。他の実施形態では、保護モード信号に応じて非ＳＭＭバス・サイクルが無視されたり許可されたりする。これらの保護モードのそれぞれの実施態様は、当業者には明らかである。当業者なら、サイクル照合論理回路４０２の他の実施形態も実施可能であることがわかるであろう。
ＳＭＲＡＭ  ＴＳＥＧ照合論理回路
第４図に、ＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路４０１の一実施形態を示す。Ａ３１−Ａ２９バス４２５は１組のインバータ６５０の入力端子に結合され、インバータ６５０はＡ３１−Ａ２９♯バス６０１上でＡ３１−Ａ２９が高であるかどうかを示す。［ＤＲＢ４−１］バス４６２およびＡ２７−Ａ２２バス４２３は比較器６５１の入力端子に結合され、比較器６５１は最後の４ＭＧバス６０２上で、これらのアドレス・ビットが実装メイン・メモリの最後の４ＭＧのアドレス・ビットに対応しているかどうかを示す。Ａ１７バス４２０と２５６Ｋ／１２８Ｋ♯バス４２６はＯＲゲート６５２に結合され、ＯＲゲート６５２はＡ１７照合バス６０３上でＡ１７バスがＳＭＲＡＭ  ＴＳＥＧアドレス範囲内に入る必要があるアドレス・ビット１７の値に対応しているかどうかを示す。ＳＭＲＡＭ  ＴＳＥＧアドレス範囲には１２８Ｋのアドレスしか含まれないため、２５６Ｋ／１２８Ｋ♯バス４２６上の信号が低の場合、照合のためにＡ１７バス４２０上の信号は高でなければならない。２５６Ｋ／１２８Ｋ♯バス４２６上の信号が高の場合、ＳＭＲＡＭ  ＴＳＥＧアドレス範囲はＡ１７高とＡ１７低の両方に対応する２５６Ｋアドレスを含む。Ａ３１−Ａ２９♯バス６０１、Ａ２８バス、最後の４ＭＧバス６０２、Ａ２１−Ａ２０バス４２２、Ａ１９−Ａ１８バス４２１、およびＡ１７照合バス６０３はＡＮＤゲート６５３に結合され、ＡＮＤゲート６５３はＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３２上で、アドレスがＳＭＲＡＭ  ＴＳＥＧアドレス範囲内にあるかどうかを示す。
ＳＭＲＡＭ  Ａ−Ｆ照合論理回路
第５図に、ＳＭＲＡＭ  Ａ−Ｆアドレス照合論理回路４０３の一実施形態を示す。Ａ３１−Ａ２９バス４２５が１組のインバータ７５０の入力端子に結合され、インバータ７５０はＡ３１−Ａ２９♯バス７０１上で、Ａ３１−Ａ２９ビットが高であるかどうかを示す。Ａ２７−Ａ２２バス４２３は１組のインバータ７５１の入力端子に結合され、Ａ２７−Ａ２２♯バス７０２上で、Ａ２７−Ａ２２ビットが高であるかどうかを示す。Ａ２１−Ａ２０バス４２２は１組のインバータ７５２の入力端子に結合され、インバータ７５２はＡ２１−Ａ２０♯バス７０３上でＡ２１−Ａ２０ビットが高であるかどうかを示す。Ａ３１−Ａ２９♯バス７０１、Ａ２８バス４２４、Ａ２７−Ａ２２♯バス７０２、およびＡ２１−Ａ２０♯バス７０３がＡＮＤゲート７５３の入力端子に結合され、ＡＮＤゲート７５３はＳＭＲＡＭ  Ａ−Ｆアドレス照合バス４３４上でアドレスがＳＭＲＡＭアドレス範囲内にあるかどうかを示す。
エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路
第６図に、エイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路４０６の一実施形態を示す。Ａ３１−Ａ２９バス４２５は１組のインバータ８５０の入力端子に結合され、インバータ８５０はＡ３１−Ａ２９♯バス８０１上でＡ３１−Ａ２９が高であるかどうかを示す。Ａ２８バス４２４はインバータ８５１の入力端子に結合され、インバータ８５１はＡ２８♯バス８０２上でＡ２８が高であるかどうかを示す。［ＤＲＢ４−１］バス４６２とＡ２７−Ａ２２バス４２３は比較器８５２の入力端子に結合され、比較器８５２は最後の４ＭＧバス８０３上でこれらのアドレス・ビットが実装メイン・メモリの最後の４ＭＧのアドレス・ビットに対応しているかどうかを示す。Ａ１７バス４２０と２５６Ｋ／１２８Ｋ♯バス４２６はＯＲゲート８５３に結合され、ＯＲゲート８５３はＡ１７照合バス８０４上でＡ１７バスがＳＭＲＡＭ  ＴＳＥＧアドレス範囲内に入る必要のあるアドレス・ビット１７値に対応しているかどうかを示す。ＳＭＲＡＭ  ＴＳＥＧアドレス範囲は１２８Ｋアドレスしか含まないため、２５６Ｋ／１２８Ｋ♯バス４２６上の信号が低の場合、一致のためにＡ１７バス４２０上の信号は高でなければならない。２５６Ｋ／１２８Ｋ♯バス４２６上の信号が高の場合、ＳＭＲＡＭ  ＴＳＥＧアドレス範囲には、Ａ１７高とＡ１７低の両方に対応する２５６Ｋアドレスが含まれる。Ａ３１−Ａ２９♯バス８０１、Ａ２８♯バス８０２、最後の４ＭＧバス８０３、Ａ２１−Ａ２０バス４２２、Ａ１９−Ａ１８バス４２１、およびＡ１７照合バス８０４は、ＡＮＤゲート８５４に結合され、ＡＮＤゲート８５４はエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３７上でアドレスがエイリアスＳＭＲＡＭ  ＴＳＥＧアドレス範囲内にあるかどうかを示す。
アドレス変換論理回路
第７図に、アドレス・バス１０１上のシステム・バス・アドレスをアドレス・バス１１１上のメイン・メモリ・バス・アドレスに変換するアドレス変換論理回路４１０の一実施形態を示す。システム・バス・アドレスがＳＭＲＡＭアドレス範囲内にある場合、アドレスはそれに対応するエイリアスＳＭＲＡＭアドレスに変換される。システム・バス・アドレスがシステム・バス・アドレスの範囲外にある場合、メイン・メモリ・アドレスがシステム・バス・アドレスである。ＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３２とＳＭＲＡＭ  Ａ−Ｆアドレス照合バス４３４はＯＲゲート１０５０の入力端子に結合され、ＯＲゲート１０５０はＳＭＲＡＭアドレス照合バス１００１上でアドレス・バス１０１上のアドレスがＳＭＲＡＭアドレス範囲内にあるかどうかを示す。ＳＭＲＡＭアドレス照合バス１００１とサイクル・タイプ照合バス４３３はＮＡＮＤゲート１０５７の入力端子に結合され、ＮＡＮＤゲート１０５７はＳＭＲＡＭサイクル♯バス１００２上でサイクルが許可されているＳＭＲＡＭサイクルであるかどうかを示す。Ａ２８バス４２４とＳＭＲＡＭサイクル♯バス１００２はＡＮＤゲート１０５２の入力端子に結合され、ＡＮＤゲート１０５２はＡ２８出力バス１１６上でメイン・メモリ・バス上のＡ２８ビットの値を示す。Ａ３１−Ａ２９バス４２５、Ａ２７−Ａ２２バス４２３、Ａ２１−Ａ２０バス４２２、Ａ１９−Ａ１８バス４２１、およびＡ１７バス４２０を含む他のアドレス・ビットは、アドレス・バス１０１とアドレス・バス１１１の両方に共通である。
ハード・エラー論理回路
第８図に、任意選択のハード・エラー論理回路４０９の一実施形態を示す。オープン・バス４３０がインバータ９５１の出力端子に結合され、インバータ９５１はオープン♯バス９０１上でＳＭＲＡＭ空間が無条件に使用可能であるかどうかを示す。ライトバック・バス４２８がインバータ９５２に結合され、インバータ９５２はライトバック♯バス上でサイクルがライトバックであるかどうかを示す。ＳＭＲＡＭ  ＴＳＥＧアドレス照合バス４３２とＳＭＲＡＭ  Ａ−Ｆアドレス照合バス４３４がＯＲゲート９５３の入力端子に結合され、ＯＲゲート９５３はＳＭＲＡＭアドレス・バス９０３上でアドレスがＳＭＲＡＭアドレス範囲内にあるかどうかを示す。オープン♯バス９０１、ＳＭＩＡＣＴ♯バス１０３、ライトバック♯バス９０２、およびＳＭＲＡＭアドレス・バス９０３がＡＮＤゲート９５４の入力端子に結合され、ＡＮＤゲート９５４はハード・エラー・バス１１５上で、ハード・エラーが発生したかどうかを示す。一実施形態では、ハード・エラー信号は、ライトバック・サイクル以外のＳＭＲＡＭアドレス範囲へのバス・サイクルが非ＳＭＭで開始されたことを示す。一実施形態では、非ライトバック・サイクルには、読取りサイクル、所有権読取りサイクル、キャッシュ・フィル・サイクル、非ライトバック書込みサイクルなどの周知のサイクル・タイプが含まれる。当業者なら、他のサイクル・タイプを含むものや上記のサイクル・タイプの一部を含まないものなどのバス・サイクルのいくつかのセットについてエラー信号を発生させることができることがわかるであろう。一実施形態では、ハード・エラー信号を使用してレジスタにビットを設定する。他の実施形態では、ハード・エラー信号を使用して、エラー処理ルーチンを開始するために使用可能な割込み信号を発生させる。
アドレス変換およびＳＭＲＡＭ保護方法
第９図に、ＳＭＲＡＭアドレスをエイリアスＳＭＲＡＭアドレスに変換し、ＳＭＭ中でないときにＳＭＲＡＭを特定のアクセスから保護する本発明の方法のいくつかの実施形態を示す。以下のステップでは第１図も参照する。ステップ１１００で、アドレス照合論理回路（たとえば、ＳＭＲＡＭ  ＴＳＥＧアドレス照合論理回路４０１またはＳＭＲＡＭ  Ａ−Ｆアドレス照合論理回路４０３）がシステム・バス１３０から第１のアドレスを受け取る。ステップ１１０５で、サイクル照合論理回路４０２が、システム・バス１３０からサイクル状況信号で受け取る。ステップ１１１０で、アドレス照合論理回路は、第１のアドレスがＳＭＲＡＭ範囲内にあるかどうかを判断する。第１のアドレスがＳＭＲＡＭ範囲内にない場合、ステップ１１１５でサイクルはメイン・メモリ・バス１７０で発行され、この方法は終了する。第１のアドレスがＳＭＲＡＭ範囲内にある場合、ステップ１１２０でアドレス変換論理回路４１０が第１のアドレスをエイリアスＳＭＲＡＭ範囲内の対応する第２のアドレスに変換（マッピング）する。ステップ１１２５でサイクル照合論理回路４０２がＳＭＭ状況信号を受け取る。ステップ１１３０で、サイクル照合論理回路４０２はＳＭＭがアクティブか否かを判断する。ＳＭＭがアクティブの場合、ステップ１１１５でサイクルがメイン・メモリ・バス１７０で発行され、この方法は終了する。ＳＭＭがアクティブでない場合、ステップ１１４０でサイクル照合論理回路４０２はサイクルがライトバック・サイクルかどうかを判断する。サイクルがライトバック・サイクルでない場合、ステップ１１４５で任意選択のハード・エラー論理回路４０９がハード・エラーを発行し、この方法は終了する。サイクルがライトバック・サイクルの場合、実施形態によって異なる応答がある。一実施形態では、ステップ１１５５でサイクル照合論理回路４０２がメイン・メモリ・バス１７０上でサイクルを発行する。他の実施形態では、サイクル照合論理回路４０２はそのサイクルを無視する。さらに他の実施形態では、ステップ１１５０でサイクル照合論理回路４０２がどの保護モードがイネーブルになっているかを判断する。そのモードでライトバックが可能な場合、ステップ１１５５でサイクル照合論理回路４０２はそのサイクルをメイン・メモリ・バス１７０で発行する。その保護モードでライトバックが許可されていない場合、サイクル照合論理回路４０２はそのサイクルを無視する。
その他の実施形態
本発明の他の実施形態も実施可能である。たとえば、コンピュータ・システムは複数プロセッサ・サブシステム、またはシステム・バスにデータを送り出すその他の装置を含むことができる。さらに、Ｐｅｎｔｉｕｍ（R）プロセッサなどのＩｎｔｅｌアーキテクチャ・マイクロプロセッサを参照しながら説明したが、ＰｏｗｅｒＰＣTMやＡｌｐｈａTMなど他のマイクロプロセッサ・アーキテクチャも本発明によって使用することができる。（Ｐｅｎｔｉｕｍ（R）はＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である。ＰｏｗｅｒＰＣTMはＩＢＭ、ＡＰＰＬＥ  ＣＯＭＰＵＴＥＲ、およびＭＯＴＯＲＯＬＡの商標である。ＡｌｐｈａTMはＤｉｇｉｔａｌ  Ｅｑｕｉｐｍｅｎｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標である。）
【図１】
0003987577.tif 000002
【図２】
0003987577.tif 000003
【図３】
0003987577.tif 000004
【図４】
0003987577.tif 000005
【図５】
0003987577.tif 000006
【図６】
0003987577.tif 000007
【図７】
0003987577.tif 000008
【図８】
0003987577.tif 000009
【図９】
0003987577.tif 000010