(57)【特許請求の範囲】
【請求項１】
ＮｏＤＭＡ（Ｎｏ−Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テーブルの各エントリが、該エントリに割り当てられたメモリページのアドレスと、前記メモリページがＤＭＡアクセスを介しアクセスされることを制限されているか否かを示す制限フラグとを少なくとも含む前記ＮｏＤＭＡテーブルのエントリを、プロセッサがメモリの複数のページのそれぞれに割り当てるステップと、
前記プロセッサが、前記ＮｏＤＭＡテーブルの各エントリについて、各エントリがＤＭＡアクセスを制限しているか個別に判断するステップと、
前記プロセッサが、ＤＭＡアクセスを制限していると判断された前記テーブルの各エントリに対して前記制限フラグを設定するステップと、
アクセスが試みられた複数の直近のエントリをＮｏＤＭＡキャッシュが格納するステップと、
チップセットが、前記複数のメモリページの第１メモリページにアクセスするリクエストを受け付けるステップと、
前記チップセットが、前記第１メモリページに係るエントリについて前記ＮｏＤＭＡキャッシュをチェックし、前記第１メモリページのエントリが前記ＮｏＤＭＡキャッシュにないとき、前記第１メモリページのエントリについて前記ＮｏＤＭＡテーブルをチェックするステップと、
前記チップセットが、前記第１メモリページのエントリの制限フラグが設定されていないとき、前記第１メモリページへのアクセスを許可するステップと、
前記チップセットが、前記第１メモリページのエントリの制限フラグが設定されているとき、前記第１メモリページへのアクセスを拒絶するステップと、
を有する方法。
【請求項２】
ＮｏＤＭＡ（Ｎｏ−Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テーブルと、プロセッサにタスクを実行させる命令とを格納し、複数のページを有するメモリと、
前記メモリに接続されるプロセッサと、
前記メモリに接続され、キャッシュを有するチップセットと、
１以上の入出力（Ｉ／Ｏ）装置と、
を有するシステムであって、
前記プロセッサは、
前記ＮｏＤＭＡテーブルの各エントリが、該エントリに割り当てられたメモリページのアドレスと、前記メモリページがＤＭＡアクセスを介しアクセスされることを制限されているか否かを示す制限フラグとを少なくとも含む前記ＮｏＤＭＡテーブルのエントリを前記ページのそれぞれに割り当てるステップと、
前記ＮｏＤＭＡテーブルの各エントリについて、各エントリがＤＭＡアクセスを制限しているか個別に判断するステップと、
ＤＭＡアクセスを制限していると判断された前記テーブルの各エントリに対して前記制限フラグを設定するステップと、
を実行可能であり、
前記ＮｏＤＭＡキャッシュは、アクセスが試みられた複数の直近のエントリを格納するよう動作可能であり、
前記チップセットは、
前記複数のメモリページの第１メモリページにアクセスするリクエストを受け付けるステップと、
前記第１メモリページに係るエントリについて前記ＮｏＤＭＡキャッシュをチェックするステップと、
前記第１ページのエントリが前記ＮｏＤＭＡキャッシュにあるとき、前記ＮｏＤＭＡテーブルの第１メモリページのエントリの制限フラグを読むことによって、前記第１メモリページが制限されたＤＭＡアクセスを有しているか判断するステップと、
前記ＮｏＤＭＡキャッシュが前記第１メモリページのエントリを有しないとき、前記ＮｏＤＭＡテーブルの第１メモリページのエントリを検索し、前記ＮｏＤＭＡテーブルの第１メモリページのエントリの制限フラグを読むことによって、前記第１メモリページが制限されたＤＭＡアクセスを有するか判断するステップと、
前記第１メモリページのエントリの制限フラグが設定されていないとき、前記第１メモリページへのアクセスを許可するステップと、
前記第１メモリページのエントリの制限フラグが設定されているとき、前記第１メモリページへのアクセスを拒絶するステップと、
を実行可能であるシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［発明の技術分野］
本発明は、Ｉ／Ｏ装置による不適切なアクセスから機密データをプロテクトするセキュリティ装置に関する。より詳細には、本発明は機密データを含むメモリのセグメントを追跡するＮｏＤＭＡテーブルのキャッシュに関する。
【０００２】
［背景］
経済的及び個人的取引が、計算機上でますます実行されつつある。しかしながら、このような経済的取引の機会の持続的な増大は、これらの取引をサポートするコンピュータシステムに対する攻撃の増大と、機密データへの許可されていないアクセスやデータの損失を回避するため、セキュリティエンハンスト（ＳＥ）環境に対する対応するニーズを増大させてきた。機密データ（社会保障番号、口座番号、金融データ、口座残高、パスワード、認証鍵など）の損失または許可されていないアクセスは、プライバシーの消失、個人的な金融データの盗難、及び類似の悪意ある行為をもたらす。
【０００３】
プロテクトされたデータにアクセスするのに用いられる１つの手法は、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを介し周辺装置からのメモリアクセス要求を利用することである。ＤＭＡコントローラは、ネットワークカードなどの周辺装置が中央処理ユニットの最小限の利用によりシステムメモリとの読み書きを行うことを可能にする。Ｉ／Ｏ装置からのメモリアクセス要求の利用は、オペレーティングシステムにより与えられるセキュリティ手段を回避しうる。このことは、周辺装置による利用のため指定されたシステムメモリのセグメントの外部の機密情報を含むメモリのセグメントへのメモリアクセス要求を行うことにより達成されるかもしれない。
［課題を解決するための手段］
上記課題を解決するため、本発明の一特徴は、ＮｏＤＭＡ（Ｎｏ−Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テーブルの各エントリが、該エントリに割り当てられたメモリページのアドレスと、前記メモリページがＤＭＡアクセスを介しアクセスされることを制限されているか否かを示す制限フラグとを少なくとも含む前記ＮｏＤＭＡテーブルのエントリを、プロセッサがメモリの複数のページのそれぞれに割り当てるステップと、
前記プロセッサが、前記ＮｏＤＭＡテーブルの各エントリについて、各エントリがＤＭＡアクセスを制限しているか個別に判断するステップと、
前記プロセッサが、ＤＭＡアクセスを制限していると判断された前記テーブルの各エントリに対して前記制限フラグを設定するステップと、
アクセスが試みられた複数の直近のエントリをＮｏＤＭＡキャッシュが格納するステップと、
チップセットが、前記複数のメモリページの第１メモリページにアクセスするリクエストを受け付けるステップと、
前記チップセットが、前記第１メモリページに係るエントリについて前記ＮｏＤＭＡキャッシュをチェックし、前記第１メモリページのエントリが前記ＮｏＤＭＡキャッシュにないとき、前記第１メモリページのエントリについて前記ＮｏＤＭＡテーブルをチェックするステップと、
前記チップセットが、前記第１メモリページのエントリの制限フラグが設定されていないとき、前記第１メモリページへのアクセスを許可するステップと、
前記チップセットが、前記第１メモリページのエントリの制限フラグが設定されているとき、前記第１メモリページへのアクセスを拒絶するステップと、
を有する方法に関する。
また、本発明の他の特徴は、ＮｏＤＭＡ（Ｎｏ−Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テーブルと、プロセッサにタスクを実行させる命令とを格納し、複数のページを有するメモリと、
前記メモリに接続されるプロセッサと、
前記メモリに接続され、キャッシュを有するチップセットと、
１以上の入出力（Ｉ／Ｏ）装置と、
を有するシステムであって、
前記プロセッサは、
前記ＮｏＤＭＡテーブルの各エントリが、該エントリに割り当てられたメモリページのアドレスと、前記メモリページがＤＭＡアクセスを介しアクセスされることを制限されているか否かを示す制限フラグとを少なくとも含む前記ＮｏＤＭＡテーブルのエントリを前記ページのそれぞれに割り当てるステップと、
前記ＮｏＤＭＡテーブルの各エントリについて、各エントリがＤＭＡアクセスを制限しているか個別に判断するステップと、
ＤＭＡアクセスを制限していると判断された前記テーブルの各エントリに対して前記制限フラグを設定するステップと、
を実行可能であり、
前記ＮｏＤＭＡキャッシュは、アクセスが試みられた複数の直近のエントリを格納するよう動作可能であり、
前記チップセットは、
前記複数のメモリページの第１メモリページにアクセスするリクエストを受け付けるステップと、
前記第１メモリページに係るエントリについて前記ＮｏＤＭＡキャッシュをチェックするステップと、
前記第１ページのエントリが前記ＮｏＤＭＡキャッシュにあるとき、前記ＮｏＤＭＡテーブルの第１メモリページのエントリの制限フラグを読むことによって、前記第１メモリページが制限されたＤＭＡアクセスを有しているか判断するステップと、
前記ＮｏＤＭＡキャッシュが前記第１メモリページのエントリを有しないとき、前記ＮｏＤＭＡテーブルの第１メモリページのエントリを検索し、前記ＮｏＤＭＡテーブルの第１メモリページのエントリの制限フラグを読むことによって、前記第１メモリページが制限されたＤＭＡアクセスを有するか判断するステップと、
前記第１メモリページのエントリの制限フラグが設定されていないとき、前記第１メモリページへのアクセスを許可するステップと、
前記第１メモリページのエントリの制限フラグが設定されているとき、前記第１メモリページへのアクセスを拒絶するステップと、
を実行可能であるシステムに関する。
【０００４】
［詳細な説明］
図１は、チップセット（「ノースブリッジ」）１１７、いくつかのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びシステムメモリ１０１を含むコンピュータシステム１００の一実施例を示す。一実施例では、ＣＰＵ群１０５は、プロセッサバス１１９を介しノースブリッジ１１７に接続される。一実施例では、コンピュータシステム１００は、サーバ環境におけるマルチプロセッシングをサポートするため複数のプロセッサ１０５を有する。他の実施例では、コンピュータシステム１００は、単一のＣＰＵしか有しないかもしれない。システムメモリ１０１は、メモリバス１２１を介しノースブリッジ１１７に接続される。システムメモリ１０１は、ＮｏＤＭＡ（Ｎｏ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テーブル１０３を含む。
【０００５】
一実施例では、システムメモリ１０１は、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）ＲＡＭや類似の装置などのＲＡＭ装置群である。メモリシステム１０１はまた、レジスタ及び類似の記憶装置を有するようにしてもよい。ＮｏＤＭＡテーブル１０３はシステムメモリ１０１に格納され、機密データを含むシステムメモリ１０１のセグメントを追跡する。機密データは、社会保障番号、金融口座番号、パスワード及び類似のデータを含むものであってもよい。
【０００６】
ＮｏＤＭＡテーブル１０３のデータはオペレーティングシステム（ＯＳ）により利用され、機密データを含むメモリのセグメントに対応するＮｏＤＭＡテーブル１０３のエントリをフラグ処理し、機密情報にアクセスすることが許可されているプログラムのみがメモリ１０１のプロテクトされているセクションにアクセスすることを許可することにより、機密データを含むメモリセグメントへのアクセスを制限するのを可能にしている。一実施例では、システムメモリ１０１はいくつかのページにセグメント化されている。ページは、オペレーティングシステムにより決定されるように、サイズに関して可変とすることが可能である。一実施例では、ページは４キロバイトのサイズとされている。
【０００７】
一実施例では、ＮｏＤＭＡテーブル１０３は、各々がメモリ１０１のページに対応する連続するビット群として構成されている。あるページが機密データを有する場合、オペレーティングシステムは、ＮｏＤＭＡテーブル１０３の当該ページに対応するビットを「セット」するであろう。ＮｏＤＭＡテーブル１０３のベースまたはスタートは、システムメモリ１０１においてリロケート可能（ｒｅｌｏｃａｔａｂｌｅ）である。一実施例では、オペレーティングシステム、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）や同様のシステムが、システム１００のブート処理後などにＮｏＤＭＡテーブル１０３をリロケートすることができる。ＮｏＤＭＡテーブル１０３は、ベースレジスタに格納されているスタートアドレスに基づき、システムメモリ１０１に配置される。ＮｏＤＭＡテーブル１０３は、サイズレジスタに格納されているデータに従ってサイズ決定されている。ＮｏＤＭＡテーブル１０３がイネーブルとされているとき、Ｉ／Ｏ装置によるすべてのアクセスがテーブル１０３に対してチェックされる必要がある。
【０００８】
一実施例では、ＮｏＤＭＡテーブル１０３は、ページ境界のスタート及びエンドに配置されている。この配置は、ＮｏＤＭＡテーブル１０３の利用を単純化している。他の実施例では、ＮｏＤＭＡテーブル１０３は、テーブル１０３に対して十分な連続するスペースを可能にするメモリ１０１の何れかのアドレスにおいてスタートするようにしてもよい。ＮｏＤＭＡテーブル１０３のスタートポイントからエンドポイントまでの各ビットは、プロテクトされる必要があるメモリアドレススペース全体をカバーするため、アドレス０から始まるメモリ１０１の各ページの非ＣＰＵアクセスに対するアクセス権限を示す。ノースブリッジ１１７があるアクセスに対するアクセス権限をチェックする必要があるとき、ノースブリッジ１１７はＮｏＤＭＡテーブル１０３のスタートアドレスとアクセス対象となるページのページアドレスにアクセスできるため、それは当該ページに対するアクセス権限を容易に決定することができる。従って、対応するＮｏＤＭＡテーブル１０３のエントリは、容易に計算及びアクセス可能となる。
【０００９】
一実施例では、ノースブリッジ１１７は、システムメモリ１０１、ＣＰＵ１０５及びＩ／Ｏ装置１１５の間の通信を処理する。ノースブリッジ１１７は、ＣＰＵ１０５、Ｉ／Ｏ装置及びソース１０５から入力されるメモリアクセス要求を処理するＣＤＢ（Ｃｅｎｔｒａｌ  Ｄａｔａ  Ｂｕｆｆｅｒ）を含む。中央制御ブロック（ＣＤＢインタフェース）１１３は、入力メモリアクセス要求の初期処理と出力要求の最終処理を扱う。ＣＤＢ１０７またはＣＤＢインタフェース１１３による処理のため待機しているメモリアクセス要求は、Ｉ／Ｏ装置１１５からのメモリ要求を処理し、システムメモリ１０１からの要求されたデータをＩ／Ｏ装置１１５に送信する。
【００１０】
ノースブリッジ１１７は、入力及び出力メモリアクセス要求（リード及びライト要求など）を格納するキューを含む。一実施例では、当該キューはＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）キューであり、または同様のキュー管理スキームを利用する。ノースブリッジ１１７はまた、直近に要求されたＮｏＤＭＡテーブルエントリを格納するＮｏＤＭＡキャッシュ１０９を含む。このキャッシュ１０９は、メモリ１０１へのアクセス前にＣＤＢインタフェース１１３により維持及び利用される。ＣＤＢインタフェース１１３はまた、各自のキューに入力メッセージと出力メッセージを管理する。一実施例では、ノースブリッジ１１７はまた、ＮｏＤＭＡテーブル１０３とＮｏＤＭＡキャッシュ１０９の機能に関するレジスタ群を含む。これらのレジスタは、状態レジスタ、ＮｏＤＭＡテーブル１０３が格納しているメモリ１０１のアドレスを示すベースアドレスレジスタ、及びシステムメモリ１０１のＮｏＤＭＡテーブル１０３のサイズを示すサイズレジスタを含む。
【００１１】
一実施例では、ノースブリッジ１１７は、非ＣＰＵ装置によるアクセスからメモリ１０１をプロテクトする。プロテクトされたデータを含むメモリのセグメントは、非ＣＰＵ装置による読み書きを不可にする。プロテクトされたページは静的なものではなく、ページはプロテクトされた状態に移動及び当該状態から移動することが可能である。一実施例では、ノースブリッジ１１７は、ＮｏＤＭＡテーブル１０３とＮｏＤＭＡキャッシュ１０９を用いて当該システムを実行する。一実施例では、メモリ１０１のＮｏＤＭＡテーブル１０３の領域へのＩ／Ｏアクセスは、ＮｏＤＭＡテーブル１０３が不可とされているときでさえ、常に拒絶される。システムメモリ１０１の当該領域にアクセスすることによりエラーが生じ、ノースブリッジ１１７のチップセットによりログ処理され、システムはリセットされる。
【００１２】
Ｉ／Ｏソース１１５は、周辺装置（記憶装置、モデム、ネットワークカード、同様の装置など）と、他の周辺装置またはノースブリッジ１１７との間の通信を処理する通信制御装置（「サウスブリッジ」）であってもよい。サウスブリッジ１１５またはノースブリッジ１１７は、様々な幅のポートに構成可能な複数のＩ／Ｏユニットを有するようにしてもよい。Ｉ／Ｏユニットは、ＰＣＩ−Ｅｘｐｒｅｓｓ、Ｈｕｂｌｉｎｋ（ＨＬ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）及び同様のシステムを含む通信プロトコルをサポートすることができる。ＮｏＤＭＡの確認のパフォーマンスを向上させるため、独立したＮｏＤＭＡキャッシュ１０９が各Ｉ／Ｏユニットまたはユニット全体の一部に専用のものとされてもよい。他の実施例では、Ｉ／Ｏソース１１５は、ノースブリッジ１１７に直接接続される周辺装置群であってもよい。
【００１３】
図２は、ノースブリッジ１１７のブロック図である。この図は、周辺装置２１７からシステムメモリ１０１に対するメモリアクセス要求と、要求または出力データのリターンをサポートする構成を示す。ネットワークまたは周辺装置２１７は、物理レイヤ２１５とリンクレイヤ２１３を介しＩ／Ｏユニット２５０のインバウンドプロセッサまたは論理２０９とアウトバウンドプロセッサまたは論理２１１と通信する。インバウンド（ｉｎｂｏｕｎｄ）プロセッサ２０９は、リンクレイヤ２１３からメモリアクセス要求とメッセージを受信し、当該メッセージをインバウンドキュー２０１に配置する。一実施例では、インバウンドキュー２０１とアウトバウンドキュー２０３のそれぞれは、各々が特定のタイプのメッセージまたはリクエスト、あるいは所定のリクエストまたはメッセージタイプ群を扱う複数のキューから構成される。インバウンドキュー制御２０７は、ＣＤＢインタフェース１１３により読み出されるキュー２０１を介しデータの動きを管理する。ＣＤＢインタフェース１１３は、メモリアクセス要求を処理し、アウトバウンドキュー２０３に送信される応答メッセージ（例えば、読出し動作の処理時など）を生成するようにしてもよい。アウトバウンドキュー２０３を介したデータフローは、アウトバウンドキューコントローラ２０５により制御される。
【００１４】
一実施例では、ＰＣＩ−Ｅｘｐｒｅｓｓ、ＨＬ、ＰＣＩ、他の同様のシステムにより用いられるメッセージやメモリアクセスタイプに対応する複数のアウトバウンドキュー２０１とインバウンドキュー２０３が存在する。アウトバウンドプロセッサ２１１は、リンクレイヤ２１３と物理レイヤ２１５を介し周辺装置２１７に応答データを送信する。一実施例では、アウトバウンド論理２１１とインバウンドプロセッサ２０９は、ノースブリッジ１１７とは異なるスピードにより実行されるＩ／Ｏ通信バスから入力されるデータの送信を処理する。
【００１５】
一実施例では、ＣＤＢインタフェース１１３とＣＤＢ１０７は、インバウンドキュー２０１において先行することにより、要求されたメモリの予測的プリフェッチを実行する。ＣＤＢインタフェース１１３は、ＣＤＢにリクエストを行い、当該リクエストに供するためのものである。ＣＤＢインタフェース１１３は、システムメモリ１０１へのアクセス権限を実行し、ＣＤＢ１０７に対する顕著なリクエストを追跡し、顕著なＤＭＡリードリクエストに供し、ＤＭＡ書き込みを実行し、インバウンドの完了、割込み及び同様の機能を追跡する。
【００１６】
ＣＤＢインタフェース１１３は、システムのセキュリティを保証するため、Ｉ／Ｏ装置からのメモリ要求に対するアクセス権限のチェックを行う。Ｉ／Ｏ装置がアクセス権限を有しないメモリの領域にアクセスしようとする場合、ＣＤＢインタフェース１１３は、当該要求に対するアクセスを拒絶する。メモリ読み出しと共に、完了を必要とする任意のアクセスに対して、それは当該アクセスが無効であったことを要求元に示すマスターアボート応答を送信する。メモリ書き込み及び応答を必要としない他の処理に対して、書き込みはＣＤＢインタフェース１１３の制御論理により撤回される。何れのケースでも、セキュリティ違反はノースブリッジによりログ処理される。
【００１７】
ＣＤＢ１０７は、入出力ユニット２５０、プロセッサバス１１９及びメモリバス１２１との間でデータをルーティング及び転送するため、ＣＤＢインタフェース１１３、メモリバスインタフェース２３１、ＣＰＵバスインタフェース２２７及び他のインタフェースとやりとりを行う。一実施例では、ＣＤＢ１０７はまた、ＳＭＢｕｓ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）２２５または同様のインタフェースに対する入出力を処理する。
【００１８】
一実施例では、ノースブリッジ１１７は、ＳＭＢｕｓ、ＪＴＡＧ及び同様のインタフェースアクセスを受信すると、ＮｏＤＭＡキャッシュ１０９及びＮｏＤＭＡテーブル１０３をチェックする。これらのインタフェースは、システム管理者やサービススタッフがシステムを監視及び診断するのを可能にする。ＳＭＢｕｓ、ＪＴＡＧまたは同様のインタフェースからのメモリアクセスは、ＮｏＤＭＡテーブル１０３とＮｏＤＭＡキャッシュ１０９に対してチェックされる。これにより、システム管理者やサービススタッフがＯＳのページ保護機構をバイパスし、機密情報を有するページにアクセスすることが回避される。他の実施例では、ノースブリッジ１１７は、ＳＭＢｕｓ、ＪＴＡＧおよび同様のインタフェースのアクセスがＮｏＤＭＡテーブルに対してチェックされないか、あるいはセキュリティレベルの設定が当該インタフェースのＮｏＤＭＡチェックを可能または不可とするよう調整可能となるように構成することが可能である。
【００１９】
図３は、ＮｏＤＭＡテーブルキャッシュ１０９の構成図である。一実施例では、キャッシュ１０９は、システムメモリ１０１のＮｏＤＭＡテーブル１０３にアクセスすることにより生じる帯域幅のロスを低減する。ＮｏＤＭＡテーブル１０３とキャッシュ１０９は、機密を有するページを追跡するメモリブロックマップの必要性を解消する。一実施例では、コンピュータシステム１００のメモリアクセスは、システムキャッシュラインサイズに対して最適化される。システムキャッシュは、システムメモリに対するメモリアクセスの一般的なキャッシュである。一実施例では、当該キャッシュラインサイズは、５１２ビットである。
【００２０】
一実施例では、ＮｏＤＭＡキャッシュ１０９は、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）構造３０１と、機密格納情報構造３０２を含む。ＣＡＭ構造３０１は、情報を「行」に格納する。各行は、システムメモリ１０１に格納されているＮｏＤＭＡテーブル１０３のエントリ（ページ機密表示など）に対応する。一実施例では、ＣＡＭ構造３０１は、インデックス３０３を格納または本来的に有する。このインデックスは、キャッシュラインを特定及び置換するため、キャッシュ置換スキームと共に利用される。一実施例では、ＣＡＭ構成３０１は、ハードウェアの論理回路がインデックスに対応するエントリを知っているため、インデックス３０３０を明示的には格納しない。
【００２１】
ＣＡＭ構造３０１は、アドレスタグ格納フィールド３０５に格納されているアドレスによりアドレス指定される。「有効な」格納ビットフィールド３０７は、当該行のエントリが有効であるか示す。キャッシュ行に対応するページが書き込みまたは変更される場合、ページのコンテンツはもはやわからず、プロテクトされた情報が当該ページに格納されているかわからないため、有効なビットはクリアされるであろう。
【００２２】
一実施例では、ＣＡＭ構造３０１はまた、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）ビット３０９などのキャッシュ管理情報を格納する。ＣＡＭ３０１のこのフィールド３０９は、古いまたは頻繁には利用されないエントリが、直近またはより頻繁に利用されているエントリと置換することが可能となるように、エントリの相対経時を追跡するのに利用される。任意のキャッシュ管理及び置換スキームが、ＮｏＤＭＡキャッシュ１０９に利用されてもよい。機密情報格納構造装置３０２は、ＮｏＤＭＡテーブル１０３の各エントリに対する２つの独立した機密表示を格納している。ページ機密フィールド３１１は、メモリ１０１のページがプロテクトされた情報を含んでいるか示す。ページ機密表示は、キャッシュ１０９の同一の行のＮｏＤＭＡテーブルアドレスに対応するページの状態（例えば、プロテクトされた情報を含むなど）を符号化するビットまたはビット群であってもよい。
【００２３】
スーパーページ機密フィールド３１３は、エントリによりアドレス指定されたページが属するページ群がプロテクトされた情報を含んでいるか示す。一実施例では、スーパーページ（ｓｕｐｅｒｐａｇｅ）は、連続するページの集合である。スーパーページのサイズは、オペレーティングシステム、ＢＩＯＳまたは同様のソフトウェアにより設定することができる。一実施例では、各スーパーページは５１２個のページがある。一実施例では、ＮｏＤＭＡテーブル１０３のビットは、システムキャッシュラインのサイズ及びメモリアクセスサイズに対応するいくつかのスーパーページにグループ化される。スーパーページ機密表示３１３は、単一のビットまたはビットグループであってもよい。一実施例では、新しいエントリがＮｏＤＭＡキャッシュ１０９に与えられるとき、スーパーページが計算される。スーパーページに対応するすべてのビットが、キャッシュ１０９への新しいエントリに対応する特定のページビットと共に抽出される。これらのビットは、単一のスーパーページビットの値を決定するため、論理ＯＲ処理される。一実施例では、スーパーページは複数のビットにより表される。その後、スーパーページは、各ビットに対応するスーパーページの各サブセクションを決定するため、論理ＯＲを用いることにより計算される。例えば、５１２個の連続するページは、各々が１２８個のページに対応するＮｏＤＭＡキャッシュ１０９の４つのスーパーページビットにより表されてもよい。単一のスーパーページまたは複数のスーパーページは、キャッシュラインアクセスのサイズに対応させることができる。一実施例では、ページ群のサイズはメモリコントローラの自然なアクセスサイズに等しい。
【００２４】
一実施例では、ＣＡＭのアドレスタグは、スーパーページと当該スーパーページ内のページオフセットの２つの部分から構成される。Ｉ／Ｏユニット２５０がアクセスを受け取ると、入力アドレスはＣＡＭ構造を介しわたされる。各行は、有効なビットがセットされている場合、アドレスタグ３０５とこの入力アドレスを比較する。各行には３つの可能性のある結果がある。第１には、スーパーページとページオフセットが一致し（有効とセットされ）、第２には、スーパーページオフセットのみが入力アドレスと一致し（有効とセットされ）、第３には、一致がないか、あるいは有効なビットがセットされない。高々１つの行しか第１の結果を有しないであろう。この場合、対応するページ機密表示３１１を用いてメモリアクセス要求の入力アドレスのアクセス権限を決定する。入力アドレスがアドレスタグ３０５のページオフセット及びスーパーページと一致可能でない場合、スーパーページオフセットの一致と有するキャッシュ行が利用される。スーパーページ機密表示３１３により、スーパーページに属するページの何れにも機密がないと示されている場合には、アクセス権限が与えられる。ＮｏＤＭＡテーブル１０３のさらなる検索は必要とされない。しかしながら、スーパーページ機密表示３１３により、スーパーページの少なくとも１つのページが機密を有すると示されている場合には、ノースブリッジ１１７は、要求されたメモリアクセスページが機密を有するか判断するタ、エＮｏＤＭＡテーブル１０３にアクセスする。キャッシュ１０９の複数のエントリが一致したスーパーページアドレスタグ３０５を有することが可能である。この状況では、スーパーページの一致した行の何れもが利用可能である。キャッシュ１０９の行が一致したスーパーページアドレスを有しない場合、ＮｏＤＭＡテーブル１０３はアクセスされる必要はない。
【００２５】
一実施例では、ＮｏＤＭＡテーブル１０３の利用はコンピュータシステム１００が大規模なシステムメモリ１０１（例えば、４ギガバイト以上など）及びメモリの動的リサイズ処理（例えば、メモリがシステムにホットプラグインされる場合など）に対してサイズ処理されるのを可能にする。メモリの動的リサイズ処理のサポート、及びページと共にスーパーページの利用は、システムリセットを要することなくメモリアクセスを検証するのに粒度のレベルを可変とすることを可能にする。スーパーページは、スーパーページが表すセグメントのサイズの粒度レベルを制御するための複数のビットから構成されてもよい。追加的なビットは、スーパーページがより小さなメモリのセグメントを表し、プロテクトされた情報が存在する正確な表示として機能するのを可能にする。より少ないビットにより表されるスーパーページは、ＮｏＤＭＡキャッシュ処理システムの複雑さ、特にスーパーページ表示の生成を低下させる。少数のビットが使用されると、論理「ＯＲ」の実現は簡単化される。スーパーページを表すビットを可変とすることにより粒度レベルを可変とすることは、システムのニーズに応じたスピードと低減されたスペースの要求に対する設計のより柔軟なカスタマイズ処理を可能にする。
【００２６】
一実施例では、ＮｏＤＭＡキャッシュ１０９とノースブリッジ１１７は、ＮｏＤＭＡキャッシュ１０９の機能に関する命令群を処理する。キャッシュ１０９は、個別の命令により可能または不可とすることができる。イネーブル命令は、ＮｏＤＭＡキャッシュの利用を可能にし、キャッシュ１０９に格納されているエントリのすべての有効なビットをクリアし、ＮｏＤＭＡキャッシュ１０９のイネーブル化を示す状態ビットをキャッシュレジスタとノースブリッジ１１７においてセットする。ディスエーブル命令は、ＮｏＤＭＡキャッシュ１０９を不可とし、キャッシュ１０９のイネーブル化を示すノースブリッジ１１７とキャッシュ１０９のレジスタの状態ビットをクリアする。ＮｏＤＭＡキャッシュ１０９は、ＮｏＤＭＡテーブル１０３がイネーブル中は、不可とされてもよい。無効な命令は、キャッシュのすべてのエントリに対する有効ビットをクリアする。
【００２７】
一実施例では、スーパーページビット、ページビット、ＬＲＵビットまたは同様の格納されている値など、ビットまたは格納されている値が、論理「１」または複数の論理「１」を適切なフィールドに格納することにより「セット」される。指定された値は、「セット」処理において規定される。同様に、ビットまたは格納されている値の「クリア」処理は、「セット」表示値以外の指定された値を利用するようにしてもよい。
【００２８】
一実施例では、ＮｏＤＭＡキャッシュ１０９は、オペレーティングシステムなどのソフトウェアにより維持される。ライト処理が許可されているとき、オペレーティングシステムは、ＮｏＤＭＡキャッシュ１０９の書き込み領域への参照を適切に無効化するためのものである。一実施例では、ＯＳは機密ページを特定するためＮｏＤＭＡテーブル１０３を更新する。ＯＳはまた、ＮｏＤＭＡテーブル１０３またはＮｏＤＭＡキャッシュ１０９がチェックされているとき、処理中の他のメモリアクセスが存在するか判断する。
【００２９】
図４は、ＮｏＤＭＡキャッシュ１０９の処理のフローチャートである。一実施例では、メモリアクセス要求は、ＣＤＢ１０７及びＣＤＢインタフェース１１３により処理される（ブロック４０１）。ＣＤＢインタフェース１１３は、アクセス要求されたアドレスがキャッシュ１０９に格納されているか判断するため、ＮｏＤＭＡキャッシュ１０９をチェックする。要求されたアドレスは、ＣＡＭ構造３０１を利用することによりキャッシュ１０９に格納されているアドレスタグ３０５と比較される（ブロック４０３）。要求されたページアドレスに一致するタグ３０５がキャッシュ１０９において検出されると、キャッシュエントリが依然として有効であるか判断するため、対応する有効ビットがチェックされる（ブロック４０５）。有効ビットがセットされている場合、ページ機密表示３１１がチェックされる（ブロック４０９）。機密表示がセットされている場合、アクセスは拒絶され、エラーがログ処理されるようにしてもよい（ブロック４１７）。機密表示がセットされていない場合、アクセスは許可される（ブロック４１９）。
【００３０】
一実施例では、要求されたページに対するキャッシュ１０９のエントリが検出されない場合、プロテクトされた情報がスーパーページに格納されているか判断するため、キャッシュ１０９がチェックされる。まず、アドレスタグ３０５が対応するスーパーページのエントリを検出するのにチェックされる（ブロック４１１）。エントリが検出される場合、その有効性がチェックされる（ブロック４１３）。スーパーページエントリが検出され、プロテクトされていないデータがスーパーページに格納されている場合（ブロック４１５）、メモリアクセス要求は実行許可される（ブロック４１９）。スーパーページ機密表示３１３がセットされている場合、アクセスは拒絶され、エラーがログ処理されてもよい（ブロック４１７）。
【００３１】
一実施例では、要求されたスーパーページアドレスがキャッシュ１０９に検出されない場合、あるいはエントリが有効でない場合、ページ機密情報がシステムメモリ１０１に格納されているＮｏＤＭＡテーブル１０３から抽出される（ブロック４０７）。アドレスタグは利用可能なキャッシュ行に格納され、当該行の有効ビットはクリアされる。その後、ＮｏＤＭＡテーブル１０３からアクセスされたデータは、ＮｏＤＭＡキャッシュ１０９に格納される（ブロック４２１）。
【００３２】
キャッシュ１０９に生成されるエントリは、ページ機密表示３１１とスーパーページ機密表示３１３を含む。スーパーページ機密表示３１３は、スーパーページのページの論理「ＯＲ」に基づき計算及び格納される。一実施例では、特定のページ機密情報がエントリとして抽出及び格納されるであろう。他の実施例では、当該エントリはスーパーページの第１ページに対応する。他の実施例では、当該エントリはスーパーページの何れかのページに対応するようにしてもよい。エントリが生成されると、当該エントリの有効ビットがセットされる（ブロック４２５）。
【００３３】
ページにプロテクトされた情報があるとき、メモリアクセスは許可されない（ブロック４１７）。メモリアクセスのタイプに応じて（例えば、読出しまたは書き込みなど）、エラー応答メッセージが返されてもよい（例えば、リード処理が拒絶された場合、通常の応答メッセージがエラー応答メッセージと置換されるであろう）。エラーアクセスと拒絶アクセスは、エラーの原因の決定、あるいは悪意ある要求または攻撃が行われたかの判断をするのに以降において解析するためログ処理される。一実施例では、エラーまたはセキュリティログ処理を生成するリクエストのタイプが規定可能である（例えば、オペレーティングシステムによってセットされる）。一実施例では、ノースブリッジ１１７は、致命的なエラーをログ処理し、リセットすることにより、ＮｏＤＭＡキャッシュ１０９からのアクセス違反に応答する。エラーには、機密を有するページへのアクセス、許可されていない期間中におけるＮｏＤＭＡテーブル１０３へのアクセスが含まれる。エラーはエラーレジスタにログ処理される。このエラーレジスタは、検出されたエラーに対して適切な通知方法を割当てるようにしてもよい。エラーレジスタは、メモリアクセスを要求しているＩ／Ｏ装置によりアクセス可能ではない。
【００３４】
一実施例では、ＮｏＤＭＡキャッシュ１０９はソフトウェア的に実現される（例えば、マイクロコードやハイレベルのコンピュータ言語など）。ソフトウェアによる実現がまた、ＮｏＤＭＡキャッシュ１０９のシミュレーションまたはエミュレーションを実行するのに利用されてもよい。ソフトウェアによる実現形態は、マシーン可読媒体に格納されてもよい。「マシーン可読」媒体には、情報の格納または転送を可能にする任意の媒体が含まれてもよい。マシーン可読媒体の例として、ＲＯＭ、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、光ディスク、ハードディスク、無線周波数（ＲＦ）リンクまたは同様のメディアが含まれる。
【００３５】
本明細書では、本発明がそれの特定の実施例を参照することにより説明された。しかしながら、添付された請求項に与えられる本発明のより広範な趣旨及び範囲から逸脱することなく、様々な改良及び変更が可能である。従って、明細書及び図面は、限定的というよりはむしろ例示的なものとしてみなされるべきである。
【図面の簡単な説明】
【００３６】
【図１】図１は、ＮｏＤＭＡキャッシュを含むコンピュータシステムのブロック図である。
【図２】図２は、ＮｏＤＭＡを実現するチップセットを介した入力及び出力データフローのブロック図である。
【図３】図３は、ＮｏＤＭＡキャッシュ構造の図である。
【図４】図４は、ＮｏＤＭＡキャッシュシステムのフローチャートである。
【図１】
0004430624.tif 000002
【図２】
0004430624.tif 000003
【図３】
0004430624.tif 000004
【図４】
0004430624.tif 000005