(57)【要約】  制御テーブル２２は、動作を実施するように処理構成要素２０を制御するための情報を規定する。テーブル２２は、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方によって定義される可変サイズ領域に各々が対応するエントリを含む。現在の探索窓の選択候補エントリの第１の限界アドレスに対する、問い合わせアドレスの比較に基づいて、各々が候補エントリの現在の探索窓をより少数のエントリを含むより狭い探索窓に絞り込む、複数の探索窓絞り込みステップを含む、テーブルを検索するための二分探索手順が提供される。比較は、選択候補エントリの第２の限界アドレス又はサイズとは無関係である。探索窓が単一のエントリに絞り込まれた後、問い合わせアドレスは、その単一のエントリの第２の限界アドレス又はサイズと比較される。
2021531583.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
メモリ・システム内に記憶されている制御テーブル内で指定される情報に基づいて動作を実施するための処理構成要素であり、前記制御テーブルは、アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含み、前記複数のエントリは、前記第１の限界アドレスの順序において、前記制御テーブル内に配列されている、処理構成要素と、
前記制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施するためのテーブル検索回路とを備え、前記二分探索手順は、前記制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、前記テーブル検索回路は、選択候補エントリの前記第２の限界アドレス及び前記サイズのうちの前記一方とは無関係に、前記現在の探索窓の前記選択候補エントリの前記第１の限界アドレスに対する、前記問い合わせアドレスの比較に基づいて、前記現在の探索窓を絞り込むように構成されており、
前記現在の探索窓を前記制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、前記テーブル検索回路は、前記問い合わせアドレスが前記単一の候補エントリの前記第１の限界アドレス並びに前記第２の限界アドレス及び前記サイズのうちの前記一方によって定義される前記対応するアドレス領域内にあるとき、前記単一の候補エントリが前記問い合わせアドレスに対応する前記エントリであると判定するように構成されている、装置。
【請求項２】
前記二分探索手順において、前記最後の探索窓絞り込みステップの後に識別される前記単一の候補エントリは、前記テーブル検索回路が、前記問い合わせアドレスに対して前記二分探索手順を実施する結果として、前記メモリ・システムから前記第２の限界アドレス及び前記サイズのうちの前記一方を得るためにメモリ・アクセス要求をトリガする、前記制御テーブルの唯一のエントリである、請求項１に記載の装置。
【請求項３】
前記問い合わせアドレスが前記単一の候補エントリの前記第１の限界アドレス並びに前記第２の限界アドレス及び前記サイズのうちの前記一方によって定義される前記対応するアドレス領域の外部にあるとき、前記テーブル検索回路は、前記問い合わせアドレスが前記制御テーブル内で見つからないと判定するように構成されている、請求項１及び２のいずれか一項に記載の装置。
【請求項４】
前記問い合わせアドレスが前記制御テーブル内で見つからないとき、前記テーブル検索回路は、
例外条件をシグナリングすること、及び
前記動作を制御するための情報としてデフォルト情報を返すことのうちの少なくとも１つを実施するように構成されている、請求項３に記載の装置。
【請求項５】
前記所与の探索窓絞り込みステップにおいて、前記問い合わせアドレスが前記選択候補エントリの前記対応するアドレス領域の外部にあると前記比較が示すとき、前記テーブル検索回路は、
前記より狭い探索窓に含まれる前記選択候補エントリを用いて前記現在の探索窓を絞り込むこと、又は
前記より狭い探索窓から除外される前記選択候補エントリを用いて前記現在の探索窓を絞り込むことを行うように構成されている、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
前記装置は、少なくとも１つのエントリを記憶するためのエントリ・ストレージを備え、
前記エントリ・ストレージは、
前記メモリ・システムから以前に得られた前記制御テーブルの少なくとも１つのエントリをキャッシュするためのエントリ・キャッシュ、及び
静的エントリ・パラメータ構成動作によって構成可能な少なくとも１つのさらなるエントリを記憶するための静的レジスタ・ストレージであって、さらなる各エントリが、第１の限界アドレス、並びに、第２の限界アドレス及びサイズのうちの一方によって限界が識別される前記アドレス空間内の可変サイズの対応するアドレス領域の制御情報を指定する、静的レジスタ・ストレージのうちの一方を含む、請求項１から５までのいずれか一項に記載の装置。
【請求項７】
前記テーブル検索回路は、前記問い合わせアドレスが、前記エントリ・ストレージ内に記憶されている前記少なくとも１つのエントリに対応するかをチェックし、前記問い合わせアドレスが前記エントリ・ストレージ内に記憶されている任意のエントリに対応するかに依存して、前記二分探索手順を実施すべきかを決定するように構成されている、請求項６に記載の装置。
【請求項８】
前記テーブル検索回路は、前記エントリ・ストレージ内に記憶されている前記少なくとも１つのエントリから導出される情報に基づいて、前記二分探索手順の初期探索窓絞り込みステップのための前記現在の探索窓を制限するように構成されている、請求項６及び７のいずれか一項に記載の装置。
【請求項９】
前記探索手順の所与の二分探索ステップにおいて、前記選択候補エントリの前記第１の限界アドレスに対する前記問い合わせアドレスの前記比較の結果が、前記エントリ・ストレージ内に記憶されている前記少なくとも１つのエントリの情報から導出可能であるとき、前記テーブル検索回路は、前記メモリ・システムから前記選択候補エントリの前記第１の限界アドレスを得るためのメモリ・アクセス要求を抑制するように構成されている、請求項６から８までのいずれか一項に記載の装置。
【請求項１０】
前記制御テーブルが、Ｎ個のエントリ、Ｎは正確な２の累乗以外の数、を有する場合、前記テーブル検索回路は、Ｎよりも大きい最小の２の累乗に対応する数の候補エントリを含むと仮定される、初期探索窓絞り込みステップのための前記現在の探索窓を用いて前記二分探索手順を実施するように構成されている、請求項１から９までのいずれか一項に記載の装置。
【請求項１１】
前記選択候補エントリが前記制御テーブルの前記Ｎ個のエントリの範囲の外部の位置に対応する探索窓絞り込みステップにおいて、前記テーブル検索回路は、前記メモリ・システムから前記選択候補エントリの前記第１の限界アドレスを得るためのメモリ・アクセス要求を抑制し、前記比較の実施される結果として、前記より狭い探索窓が、前記制御テーブルの前記Ｎ個のエントリの前記範囲の内部の位置にある少なくとも１つの候補エントリを含むようにする、黙示的な結果を決定するように構成されている、請求項１０に記載の装置。
【請求項１２】
各エントリについて、前記テーブル検索回路は、
前記可変サイズが、２の累乗以外のバイト数であること、及び
前記対応するアドレス領域の開始アドレス及び終端アドレスが、前記第１の限界アドレス、並びに、前記第２の限界アドレス及び前記サイズのうちの前記一方から識別可能である場合、前記対応するアドレス領域の前記開始アドレス及び前記終端アドレスが、Ｘバイト、ただしＸは前記対応するアドレス領域の前記サイズ、のアドレス境界に対して不整合であることのうちの少なくとも一方を可能にするように構成されている、請求項１から１１までのいずれか一項に記載の装置。
【請求項１３】
前記第１の限界アドレスは、前記対応するアドレス領域の開始アドレスを含む、請求項１から１２までのいずれか一項に記載の装置。
【請求項１４】
前記第１の限界アドレスは、前記対応するアドレス領域の終端アドレスを含む、請求項１から１２までのいずれか一項に記載の装置。
【請求項１５】
前記制御テーブルの所与のエントリについて、前記第１の限界アドレスが前記メモリ・システム内で、前記所与のエントリの前記第２の限界アドレス及び前記サイズのうちの前記一方を記憶するために使用されるデータ語とは異なるデータ語内に記憶される、請求項１から１４までのいずれか一項に記載の装置。
【請求項１６】
前記制御テーブルは、メモリ保護テーブルを含み、前記メモリ保護テーブルの各エントリは、アドレス空間の前記対応するアドレス領域に関するアクセス許可を指定し、
前記制御テーブル内で指定される情報に基づいて実施される前記動作は、前記問い合わせアドレスを指定するメモリ・アクセス要求がアクセス許可を満たすかをチェックすることを含む、請求項１から１５までのいずれか一項に記載の装置。
【請求項１７】
方法であって、
メモリ・システム内に記憶されている制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施することであり、前記制御テーブルは、アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含み、前記複数のエントリは、前記第１の限界アドレスの順序において、前記制御テーブル内に配列されている、二分探索手順を実施することと、
前記制御テーブルが前記問い合わせアドレスに対応するエントリを含むとき、前記問い合わせアドレスに対応する前記エントリ内で指定される情報に基づいて動作を実施することとを含み、
前記二分探索手順は、前記制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、前記現在の探索窓は、前記選択候補エントリの前記第２の限界アドレス及び前記サイズのうちの前記一方とは無関係に、前記現在の探索窓の選択候補エントリの前記第１の限界アドレスに対する、前記問い合わせアドレスの比較に基づいて絞り込まれ、
前記現在の探索窓を前記制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、前記問い合わせアドレスが前記単一の候補エントリの前記第１の限界アドレス並びに前記第２の限界アドレス及び前記サイズのうちの前記一方によって定義される前記対応するアドレス領域内にあるとき、前記単一の候補エントリが、前記問い合わせアドレスに対応する前記エントリであると判定される、方法。
【請求項１８】
命令を実行するための命令実行環境を提供するように、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含む制御テーブル内で指定される情報に基づいて動作を実施するための処理プログラム論理であり、前記複数のエントリは、前記第１の限界アドレスの順序において、前記制御テーブル内に配列されている、処理プログラム論理と、
前記制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施するためのテーブル検索プログラム論理とを備え、前記二分探索手順は、前記制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、前記テーブル検索プログラム論理は、前記選択候補エントリの前記第２の限界アドレス及び前記サイズのうちの前記一方とは無関係に、前記現在の探索窓の選択候補エントリの前記第１の限界アドレスに対する、前記問い合わせアドレスの比較に基づいて、前記現在の探索窓を絞り込むように構成されており、
前記現在の探索窓を前記制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、前記テーブル検索プログラム論理は、前記問い合わせアドレスが前記単一の候補エントリの前記第１の限界アドレス並びに前記第２の限界アドレス及び前記サイズのうちの前記一方によって定義される前記対応するアドレス領域内にあるとき、前記単一の候補エントリが前記問い合わせアドレスに対応する前記エントリであると判定するように構成されている、コンピュータ・プログラム。
【請求項１９】
請求項１８に記載のコンピュータ・プログラムを記憶するための記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技法は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理装置は、メモリ・システム内に記憶されている制御テーブル内で指定される情報に基づいて動作を実施するための処理構成要素を有し得る。例えば、制御テーブルは、特定のソフトウェア・プロセスがアドレス空間の特定の領域にアクセスすることを許可されるかを制御するアクセス許可を規定し得る。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００４】
少なくともいくつかの実例は、装置であって、
メモリ・システム内に記憶されている制御テーブル内で指定される情報に基づいて動作を実施するための処理構成要素であり、制御テーブルは、アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含み、複数のエントリは、第１の限界アドレスの順序において、制御テーブル内に配列されている、処理構成要素と、
制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施するためのテーブル検索回路とを備え、二分探索手順は、制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、テーブル検索回路は、選択候補エントリの第２の限界アドレス及びサイズのうちの上記一方とは無関係に、現在の探索窓の選択候補エントリの第１の限界アドレスに対する、問い合わせアドレスの比較に基づいて、現在の探索窓を絞り込むように構成されており、
現在の探索窓を制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、テーブル検索回路は、問い合わせアドレスが上記単一の候補エントリの第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの上記一方によって定義される対応するアドレス領域内にあるとき、上記単一の候補エントリが問い合わせアドレスに対応するエントリであると判定するように構成されている、装置を提供する。
【０００５】
少なくともいくつかの実例は、方法であって、
メモリ・システム内に記憶されている制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施することであり、制御テーブルは、アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含み、複数のエントリは、第１の限界アドレスの順序において、制御テーブル内に配列されている、二分探索手順を実施することと、
制御テーブルが問い合わせアドレスに対応するエントリを含むとき、問い合わせアドレスに対応するエントリ内で指定される情報に基づいて動作を実施することとを含み、
二分探索手順は、制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、現在の探索窓は、選択候補エントリの第２の限界アドレス及びサイズのうちの上記一方とは無関係に、現在の探索窓の選択候補エントリの第１の限界アドレスに対する、問い合わせアドレスの比較に基づいて絞り込まれ、
現在の探索窓を制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、問い合わせアドレスが上記単一の候補エントリの第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの上記一方によって定義される対応するアドレス領域内にあるとき、上記単一の候補エントリが、問い合わせアドレスに対応するエントリであると判定される、方法を提供する。
【０００６】
少なくともいくつかの実例は、命令を実行するための命令実行環境を提供するように、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの一方を各々が指定する複数のエントリを含む制御テーブル内で指定される情報に基づいて動作を実施するための処理プログラム論理であり、複数のエントリは、第１の限界アドレスの順序において、制御テーブル内に配列されている、処理プログラム論理と、
制御テーブルが問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施するためのテーブル検索プログラム論理とを備え、二分探索手順は、制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含み、
所与の探索窓絞り込みステップにおいて、テーブル検索プログラム論理は、選択候補エントリの第２の限界アドレス及びサイズのうちの上記一方とは無関係に、現在の探索窓の選択候補エントリの第１の限界アドレスに対する、問い合わせアドレスの比較に基づいて、現在の探索窓を絞り込むように構成されており、
現在の探索窓を制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、テーブル検索プログラム論理は、問い合わせアドレスが上記単一の候補エントリの第１の限界アドレス並びに第２の限界アドレス及びサイズのうちの上記一方によって定義される対応するアドレス領域内にあるとき、上記単一の候補エントリが問い合わせアドレスに対応するエントリであると判定するように構成されている、コンピュータ・プログラムを提供する。
【０００７】
添付の図面とともに読まれるべきである以下の実例の説明から、本技術のさらなる態様、特徴及び利点が明らかになる。
【図面の簡単な説明】
【０００８】
【図１】ＭＰＵを有するデータ処理装置の実例を示す概略図である。
【図２】メモリ・システム内に記憶されるメモリ保護テーブルの実例を示す図である。
【図３】メモリ保護テーブルからメモリ保護エントリをキャッシュするためのＭＰＵキャッシュ・ストレージの実例を示す図である。
【図４】ＭＰＵのレジスタ・ストレージの実例を示す図である。
【図５】アドレス空間の異なるアドレス領域を、メモリベースのＭＰＵエントリ又は静的ＭＰＵエントリによってどのようにカバーすることができるかを示す図である。
【図６】ＭＰＵを使用してメモリ・システムに対するアクセスを制御する方法を示す流れ図である。
【図７】二分探索手順に基づいて制御テーブルを検索する方法を示す流れ図である。
【図８】最大１６個のエントリを含むテーブルに対する二分探索手順の特定の実例を示す図である。
【図９】二分探索手順の加工された実例を示す図である。
【図１０】レイジー状態保存の実例を示す図である。
【図１１Ａ】レイジー状態保存の制御の実例を示す流れ図である。
【図１１Ｂ】レイジー状態保存の制御の実例を示す流れ図である。
【図１２Ａ】レイジー状態保存の制御の実例を示す流れ図である。
【図１２Ｂ】レイジー状態保存の制御の実例を示す流れ図である。
【図１３】使用することができるシミュレータ例を示す図である。
【発明を実施するための形態】
【０００９】
メモリに対するアクセスの制御
メモリ・システムに対するアクセスを制御するための１つの手法は、メモリ・アクセス要求が、メモリ・システム内に記憶されているページ・テーブル内で指定されるアクセス許可を満たすかをチェックするメモリ管理ユニット（ＭＭＵ）を提供することであり得る。アドレス空間は、典型的には、２の累乗のバイト数（例えば、４キロバイト）に対応するサイズを各々が有する、ページと呼ばれる領域に分割され、各ページの開始アドレス及び終端アドレスがＮバイトのアドレス境界に位置整合され、Ｎは、対応するアドレス領域のサイズである。各ページ・テーブル・エントリは、アドレス空間の対応するページに対するアクセス許可を指定し、多くの場合、第１のアドレス空間（例えば、仮想アドレス空間）内の標的アドレスを第２のアドレス空間（例えば、物理アドレス空間）内のアドレスの対応するページにマッピングするためのアドレス変換マッピングも指定することになる。ページ・テーブルは、複数レベルのページ・テーブルを含む階層テーブル構造として実施することができ、入力アドレスのビットの第１のサブセットは、ページ・テーブルの第１のレベルの対応するエントリにインデックス付けし、インデックス付けされたエントリは、ページ・テーブルの第２のレベルのベース・アドレスを指定し、そこから、入力アドレスのビットの第２のサブセットに基づいてエントリをインデックス付けすることができ、以下、最終的に、インデックス付けされたエントリが指定されたアドレスの何らかのビットに基づいて選択されるページ・テーブルの最後のレベルに達するまで、テーブルの各後続レベルについて同様にされる。インデックス付けされたエントリは、実際のアドレス変換属性、及び、そのページを標的とするメモリ・アクセスに必要なアクセス許可を含む。ＭＭＵは、メモリ・システムからより最近にアクセスされた、ページ・テーブルの特定のエントリをキャッシュすることができるキャッシュ（トランスレーション・ルックアサイド・バッファ（ＴＬＢ）と呼ばれる）を有することができ、結果、処理回路が同じページ・テーブル・エントリを要求する複数のメモリ・アクセス要求を発行する場合、それらのエントリにより迅速に再びアクセスすることができる。ＭＭＵは、多くの異なるアドレス領域に対するアクセスに対する、例えば粒度が４Ｋバイトであり得る制御を設定することが許容可能であり得、また、同じ仮想アドレスを使用するが、メモリ・システムによって使用される異なる物理アドレスにマッピングされる必要がある複数の異なるソフトウェア・プロセスによってトリガされるアクセスをハンドリングするために、第１のアドレス空間内の任意のページから第２のアドレス空間内の任意のページへのアドレス変換の任意のマッピングが必要とされ得る、相対的に高い実施作業負荷をハンドリングするように設計されているプロセッサに有用であり得る。
【００１０】
しかしながら、よりエネルギー効率的な作業負荷を目標とするか、又は、リアル・タイムの適用のために設計されているプロセッサについては、大きいページ・テーブル構造が個々のページに対するアクセス許可を定義するために使用されるため、ＭＭＵは不適である場合があり、制御の粒度は、２キロバイト程度とわずかなランダム・アクセス・メモリ（ＲＡＭ）しか有しない、よりエネルギー効率的なより性能の低いアプリケーションを目標とするシステムに典型的に見られる制約されたメモリ環境には大きすぎる場合がある。また、入力アドレス・ビットのサブセットをページ・テーブルのインデックスとして使用することを促進するために、ＭＭＵは、典型的には、各ページを、２の累乗のバイト数に対応するサイズを有するように制約する。これは、２の累乗のバイト数以外のサイズを有する特定のアドレス領域のみに対するアクセス許可の特定のセットを設定することが所望される場合、これは、サイズが２の累乗のバイト数であるより小さいページに各々が対応する複数の別個のページ・テーブル・エントリを使用して表現される必要があることを意味し、それらの個々のページ・テーブル・エントリの各々は、ページ・テーブル・エントリのセットが全体として、より大きい、サイズが２の累乗でないアドレスサイズに対応するように、正確に同じアクセス許可を定義する。アドレス領域の複数のページへのこの人工的な分割は、大きいアドレス空間をカバーするために使用される階層ページ構造へのインデックス付けのために入力アドレスからの全ビット数を使用する効率的なインデックス付け手順を可能にするために必要とされる、ページのサイズに対応するアドレス境界へのページ位置整合の制約の結果である。
【００１１】
しかしながら、この手法は、アクセス許可の所与のセットによって統制されるように意図されるコード又はデータ片内で、メモリ・アクセスが、ページ・テーブルの異なるページ・テーブル・エントリに対応するページ間のページ境界をまたぐ可能性があり、そのため、新たなページのページ・テーブル・エントリがＭＭＵにおいてまだキャッシュされていない場合、これは、メモリから必要なページ・テーブル・エントリをフェッチするために、コードの或るセクションをいくらか実行することを通じて、ページ・テーブル・ウォークが実施されることを必要とする場合があるため、リアル・タイム・コードについて問題を引き起こす可能性がある。また、ページ境界に達したときに、次のページのページ・テーブル・エントリがページ・テーブル内でまだ定義されていないことが分かった場合、オペレーティング・システム又は他の監督プロセスが、必要なページをマッピングするためにページ・テーブル・エントリを設定することを、ソフトウェア例外ハンドラがトリガすることが必要になり得、長い遅延を引き起こすため、これは、対処するのに時間がかかる場合がある障害を引き起こす可能性がある。そのような遅延は、変動性が高い可能性があり、最悪の場合、極端に長引く場合があり、コードのセクションが、３つ以上の異なるページにわたるアドレスに対するメモリ・アクセスを発行する場合、各ページ境界において、再びそのような遅延を被る可能性がある。これによって、ＭＭＵが、リアル・タイム・アプリケーションにおいて決定性の応答時間を有するための要件を満たすことを可能にすることが非常に困難になる。
【００１２】
メモリに対するアクセスを制御するためのもう１つの手法は、処理回路によって発行されるメモリ・アクセス要求が、複数のメモリ保護エントリ内で指定されるアクセス許可を満たすかをチェックするメモリ保護ユニット（ＭＰＵ）を提供することであり得る。各メモリ保護境界が、アドレス空間内の可変サイズの特定のアドレス領域に対応し得る。所与のメモリ保護エントリの対応するアドレス領域は、所与のメモリ保護エントリのパラメータを通じて識別される開始アドレス及び終端アドレスによって境界され得る。ＭＭＵによって使用されるページ・テーブルとは異なり、ＭＰＵについて、メモリ保護エントリに対応する領域は、２の累乗以外のバイト数になることを許容され得る可変サイズを有することができる。この手法を用いると、アドレス・アクセスがページ・アドレス境界をまたぐ度毎に発生するページ・ウォーク及びページ障害の危険性を回避するために、単一のメモリ保護エントリを使用して、任意の（２の累乗でない）サイズのメモリ・アドレス領域を定義することができることを保証することができる。これによって、ＭＰＵが、リアル・タイム・アプリケーションを処理するように設計されたシステムにより適したものになる。また、ＭＰＵは、典型的には、ＭＰＵ内にローカルに設けられるレジスタ内にメモリ保護エントリの各々を記憶し、これは高速にアクセスすることができ、ここでも、リアル・タイム処理が支援され、メモリ・システム内に階層構造を有する大きいページ・テーブルを記憶する必要性が回避され、これは、ＲＡＭが制限されたシステムにとっては重要であり得る。
【００１３】
しかしながら、ＭＰＵを備えるシステムにおいては、メモリへのアクセスを制御するための構成データは、典型的にはアクセスされるべき標的アドレスをレジスタ内に記憶されている各メモリ保護エントリの領域識別パラメータと比較するための比較器の並列バンクに直接的に接続されるレジスタを使用して指定されるため、ＭＰＵと関連付けられる電力及び面積は、ＭＰＵによってサポートされるメモリ保護エントリの数が増大するにつれて、不都合に拡大することが難点である。実際、これは、サポートされるメモリ保護エントリの数が、例えば、８又は１６など、相対的に少数に制限され得ることを意味し得る。典型的なＭＰＵにおいてメモリ保護エントリの数が制限されることによって、処理システム上で実行するソフトウェアによって達成される性能に深刻な影響が及ぶ可能性がある。
【００１４】
例えば、一片のソフトウェアは、ＭＰＵによってサポートされる保護エントリの数において、ハードウェアにおいてサポートされるよりも多数の個別のアドレス領域が、異なるアクセス許可によって定義されることを必要とし得る。この場合、任意の所与の時点において、そのソフトウェアによってアクセスされる必要があるアドレス空間の少なくともいくらかの部分は、現在、そのために定義された対応するメモリ保護エントリを有しない。これは、アドレス空間の現在定義されていない領域内のアドレスに対するアクセスは、その後ソフトウェアが、現在アクセスされる必要がある領域に必要なパラメータによって、異なる領域のために以前に定義されているパラメータを上書きするように、ＭＰＵのレジスタにステップ・インし、再構成する必要がある例外をトリガすることになることを意味する。その後、後の命令が、上書きされた、以前定義された領域にアクセスする場合、これによってその後、ＭＰＵ構成が再び元通りに切り替わり得る。その度に切り替えをトリガする例外を必要とする、このＭＰＵレジスタの内容の絶え間ない切り替えは、性能に大きい損害を及ぼす可能性がある。
【００１５】
別の例は、プロセッサが、相互に信頼しないが、間でデータを共有する必要がある複数のソフトウェア片を実行する必要がある場合であり得る。データを共有することを可能にするために、所与のソフトウェア片は、アドレス空間の制限された部分のみが他のプロセスにとってアクセス可能であるように、アドレス空間の部分を分割することを所望し得るが、アドレス空間へのアクセスに対するそのような精細な度合いの制御を可能にするには、これは、追加のアドレス領域が定義されることを必要とし得、そのような精細な粒度の制御を可能にするには、ハードウェアにおいてＭＰＵによってサポートされる十分な予備のメモリ保護エントリが存在しない場合がある。したがって、実際には、同じデータが結局のところ、アドレス空間の複数の部分へとコピーされることになり得、当該部分内の１つのコピーが第１のソフトウェアによってアクセスされ、当該部分内のもう１つのコピーが第２のソフトウェアによってアクセスされ、結果として、コピーを実施するために時間が無駄になり、利用可能なメモリ容量の使用が非効率的になり、これは、メモリ・リソースが制約されているシステムでは特に問題になり得る。
【００１６】
したがって、典型的なＭＭＵ及びＭＰＵは、現在、リアル・タイム要件を有し、及び／又は、メモリ容量が相対的に制約されているシステムでは、領域毎に定義されるアクセス許可に基づくメモリ・システムへのアクセスを制御するために、効率的なソリューションを提供することができない。
【００１７】
メモリベースのメモリ保護テーブルを有するＭＰＵ
下記に論じる技法において、処理回路によって発行されるメモリ・アクセス要求が、メモリ・システム内に記憶されているメモリ保護テーブル内で指定されるアクセス許可を満たすかをチェックするための許可チェック回路を備えるＭＰＵが提供される。メモリ保護テーブルは、アドレス空間内の可変サイズの対応するアドレス領域に関するアクセス許可を各々が指定する、複数のメモリ保護エントリを含む。各エントリはまた、対応するアドレス領域の開始アドレス及び終端アドレスを識別するための領域識別パラメータをも指定する。ＭＰＵは、可変サイズが、２の累乗以外のバイト数であることを可能にする。メモリ・システムからメモリ保護テーブルにアクセスするための少なくとも１つのＭＰＵメモリ・アクセス要求を開始するためのＭＰＵメモリ・アクセス回路が提供される。
【００１８】
したがって、それに対するアクセスがＭＰＵによって規制される同じメモリ・システム内のメモリ保護テーブルを提供することによって、レジスタが、並列に標的アドレスと比較される各エントリの領域定義データを記憶することに基づく典型的なＭＰＵについて実際そうであるよりも多数のメモリ保護エントリを提供する柔軟性が与えられる。メモリ保護テーブルをメモリ・システム（典型的には、レジスタよりもアクセスするのに時間がかかる）内に移動させることによってソフトウェア性能を改善することが可能になるということは、直観に反するかもしれない。しかしながら、メモリ・システムから個々のメモリ保護エントリにアクセスすることはより時間がかかり得るが、ハードウェア内のＭＰＵによってサポートされるエントリの数がソフトウェアの要件に対処するには不十分であり、そうでなければアドレス空間の未定義の領域へのアクセスに起因して頻繁に例外に遭遇することによって大きい性能コストを被ることになる事例に対処するために、上述したソフトウェア次善策を回避することによって、全体的な性能を改善することができる。メモリ保護テーブルがメモリ内に設けられることによって、エントリの数によるハードウェア・コストの拡大は、はるかに緩やかになる。
【００１９】
また、各領域が、２の累乗以外のバイト数に対応する任意のサイズを有することを可能にすることは、各領域が多量のメモリをカバーすることができ、そうでなければアドレスが領域境界をまたぐときにメモリ保護障害を引き起こす危険性に直面することになるが、同じアクセス許可を有するように意図されている領域を複数の別個のエントリに細分化する必要がない。これによって、重要な動作がより高速の且つ／又は決定性の応答時間によってハンドリングされる必要があるリアル・タイム・アプリケーションにサービスする際に、ＭＰＵがＭＭＵよりも良好になる。
【００２０】
メモリ保護テーブルのエントリは、アドレス空間内で、各エントリの対応するアドレス領域の開始アドレスの順序において配列することができる。これは、ページ・テーブルの各レベルが、さらなるレベルのページ・テーブルへのポインタを有するエントリを含み得、そのため、ページ・テーブル構造全体の中で、それぞれのページに対するアクセス許可を実際に提供する最後のレベルのページ・テーブル・エントリが、アドレス空間内で各対応するアドレス・ページを有する開始アドレスの順序とは異なる順序において配列され得る、ＭＭＵによって使用されるページ・テーブル構造とは異なり得る。メモリ保護テーブルのメモリ保護エントリを、開始アドレスの順序において配列された、線形的にアクセスされるテーブルとして実施することによって、関連するメモリ保護エントリを求めるメモリ保護テーブルの探索を、より単純にすることができる。
【００２１】
各メモリ保護エントリは、アドレス空間の所与のアドレス領域に対応する。いくつかの実施態様において、アドレス空間は、物理アドレス空間であってもよい。したがって、処理回路によって発行されるメモリ・アクセス要求によって指定される物理アドレスに基づいて、メモリ保護テーブルに問い合わせることができ、物理アドレスは、メモリ・システム内でアクセスされる対応する位置に、直接的に対応する。アドレス変換を回避することによって、メモリ保護テーブルへのアクセスと並列にメモリへのアクセスを実施することが可能であり得るため、メモリへのアクセスをより高速にすることができるため、これは、リアル・タイム・アプリケーションにより適切であり得る。その後、許可が満足されないと判定される場合、メモリへのアクセスによって返されるデータは、処理回路に転送されない。
【００２２】
ＭＰＵメモリ・アクセス回路がメモリ・システムからメモリ保護テーブルにアクセスするために少なくとも１つのＭＰＵメモリ・アクセス要求を開始するとき、標的アドレスを含むアドレス領域に対応するメモリ保護エントリだけでなく、メモリ保護テーブルの複数のメモリ保護エントリにアクセスする必要があり得る。これは、各エントリが２の累乗のバイト数でない可変サイズの領域に対応し得るとき、所与のアドレス領域と関連付けられるエントリが位置するメモリ・システム内のアドレスは事前に分からない場合があり、そのため、実際には、標的アドレスを含む領域のエントリを見つけるためにテーブルが探索される必要があり得、これによって、標的アドレスをそのエントリの領域識別パラメータと比較するために、２つ以上のエントリにアクセスする必要があり得るためである。したがって、標的アドレスが、テーブルの所与のメモリ保護エントリの対応するアドレス領域内にある場合、少なくとも１つのＭＰＵメモリ・アクセス要求が発行され得、発行されるＭＰＵメモリ・アクセス要求のうちの少なくとも１つが、所与のメモリ保護エントリを標的とし得る（また、多くの場合、他のメモリ保護エントリへのＭＰＵメモリ・アクセス要求も存在し得る）。
【００２３】
各メモリ保護エントリについて、ＭＰＵは、対応するアドレス領域の開始アドレス及び終端アドレスが、Ｎバイトのアドレス境界に対して不整合であることを許容し得る。ここでＮバイトは、対応するアドレス領域のサイズである。これによって、ＭＰＵが、不整合なアドレスにおいて開始する任意のサイズの単一のアドレス領域に対するアクセス許可を管理することが可能になり、これは、そうでなければ位置整合したアドレス境界において開始するように領域を制約するシステムにおいて必要になる、共有される特性を有する領域の複数のエントリへの人工的な分割を回避することを助けることができ、上述した理由で、リアル・タイム・コードに関する性能を改善するのを助けることができる。
【００２４】
ＭＰＵは、少なくとも１つの静的メモリ保護エントリを記憶するための静的ＭＰＵレジスタ・ストレージを有することができる。少なくとも１つの静的メモリ保護エントリは、メモリ・システム内に記憶されているメモリ保護テーブルのメモリ保護エントリ内で定義される許可を補完するために、指定されているアクセス許可を有するアドレス領域のさらなる定義を提供することができる。静的レジスタ・ストレージ内で定義される追加のＭＰＵ領域を提供するために、いくつかの構成オプションを提供することは、割り込み待ち時間を短く維持し、決定性の割り込み挙動を提供するために有用であり得る。例えば、静的レジスタ・ストレージは、メモリ・システムからロードされるメモリ保護エントリによってチェックされる必要がある場合よりも高速の応答を提供するように、特定の重要なアドレス領域が、性能にとって重要なコードによってアクセスされるためのアクセス許可を定義することができる。したがって、静的ＭＰＵレジスタ・ストレージを有する実施態様において、ＭＰＵは実効的には、いくつかのアドレス領域を定義するレジスタベースのエントリと、他のアドレス領域を定義するメモリベースのエントリの両方を使用するハイブリッドＭＰＵであり得る。これは、割り込み待ち時間及び特定のシステムのために必要とされるリアル・タイム保証、ＭＰＵを実施するハードウェア・コスト、並びに、総数がより多いメモリ保護エントリが所与の時点において定義されることを必要とし得るソフトウェアによって達成されるソフトウェア性能の間の良好なバランスを提供することができる。
【００２５】
静的ＭＰＵレジスタ・ストレージは、処理回路によって処理される少なくとも１つのＭＰＵパラメータ構成動作によって構成されると、システム・リセット又は電源停止事象がない場合に、静的ＭＰＵレジスタ・ストレージ内に記憶された静的メモリ保護エントリが、静的メモリ保護エントリの再構成をトリガするためのさらなるＭＰＵパラメータ構成動作が処理回路によって処理されるまで、静的ＭＰＵレジスタ・ストレージ内に記憶されたままであるという意味において、静的であり得る。ＭＰＵパラメータ構成動作は、アドレス空間の一部分について、メモリ・アクセスがどのようにハンドリングされるかに変化があるように、所与のアドレス領域に対して指定される属性を変化させる（例えば、アクセス許可を変化させる、又は、領域に対する制限アドレスを変化させる）任意の動作であってもよい。ＭＰＵパラメータ構成動作は、処理回路によって実行される専用ＭＰＵ構成命令であってもよく、又は、ＭＰＵの静的ＭＰＵレジスタ・ストレージにマッピングされるアドレスをその標的アドレスとして指定するストア命令であってもよい。ＭＰＵパラメータ構成動作はまた、デバッガ、又は、処理回路の外部の他のエンティティによって要求されるときに、処理回路によって実施される動作であってもよい。したがって、静的メモリ保護エントリが静的ＭＰＵレジスタ・ストレージ内でアクティブであるとき、これは、いずれのアドレスがシステムによってアクセスされるかにかかわらず、再構成されるまで静的メモリ保護エントリが残るという点において、キャッシュとは異なる。対照的に、キャッシュは、一切のＭＰＵ構成動作が処理回路によって実施されることを必要とせずに、必要とされ得る異なるアドレスのエントリに空間を譲るために、そのエントリを、一定時間にわたって使用されない場合に、又は、何らかの他の排除方針に基づいて排除されるようにする。キャッシュされる特定のエントリは時に応じて変化し得るが、キャッシュ占有状態の変化は、所与のアドレスへのメモリ・アクセスがどのようにハンドリングされるべきであるかの機能定義を変化させるのではなく、所与のメモリ保護エントリを得ることができる待ち時間にしか影響を与えないため、キャッシュとは、メモリ保護テーブルの所与のメモリ保護エントリによって指定される、基礎となる属性に何らかの変化があることを意味するものではない。
【００２６】
処理回路によって発行されるメモリ・アクセス要求に応答して、ＭＰＵメモリ・アクセス回路は、標的アドレスが静的ＭＰＵレジスタ・ストレージ内に記憶されている静的メモリ保護エントリの対応するアドレス領域内にあり、且つ発行されるメモリ・アクセス要求が、その静的メモリ保護エントリによって指定されるアクセス許可を満たすとき、少なくとも１つのＭＰＵメモリ・アクセス要求がメモリ・システムへと発行されるのを抑制することができる。したがって、静的メモリ保護エントリ内にヒットがあるとき、メモリ保護テーブルのメモリ保護エントリをフェッチするためにＭＰＵメモリ・アクセス要求をトリガする必要は一切ない。これは、他の動作に使用され得るメモリ帯域幅を維持する助けとなり、静的ＭＰＵレジスタ・ストレージ内に記憶されている静的エントリを使用する、性能にとって重要なソフトウェアが、メモリベースの領域検索に起因して失速することがないことを意味する。実効的に、静的メモリ保護エントリは、メモリ保護テーブルのメモリベースのエントリに優先し得る。
【００２７】
メモリ・アクセス要求の標的アドレスが静的メモリ保護エントリ内でヒットするが、アクセス要求が、その静的メモリ保護エントリによって指定されるアクセス許可を満たすことができない事例は、種々の方法でハンドリングすることができる。いくつかの事例において、少なくとも１つのＭＰＵメモリ・アクセス要求はまた、メモリ・アクセス要求が、その標的アドレスが対応するアドレス領域にあった静的メモリ保護エントリにおいて指定されるアクセス許可を満たすことができないときにも抑制することができる。したがって、この事例において、静的ＭＰＵレジスタ・ストレージ内にヒットが一切ない場合、メモリ・システム内のメモリ保護テーブルにアクセスする必要はない。
【００２８】
代替的に、静的メモリ保護エントリ内でヒットするが、その静的メモリ保護エントリ内でアクセス許可を得られないメモリ・アクセス要求について、当該アクセス許可よりも、メモリ・システム内に記憶されているメモリ保護テーブル内の一致するメモリ保護エントリ（その対応するアドレス領域が標的アドレスを含むエントリを含む、一致するメモリ保護エントリ）によって指定されるアクセス許可が優先されることが許容され得る。したがって、要求が許可されるときの静的ＭＰＵレジスタ・ストレージ内のヒットは、メモリベースのメモリ保護エントリ内で設定されているいかなる許可にも優先するが、要求が許可されないときの静的ＭＰＵレジスタ・ストレージ内のヒットよりも、メモリ保護テーブルの一致するメモリ保護エントリ内で指定される他のアクセス許可が優先され得る。この手法は、第２のソフトウェア・プロセスによってアクセスされるアドレス領域の特定の部分領域への第１のソフトウェア・プロセスのアクセスを可能にするために定義される必要がある領域の総数を低減するのに有用であり得る。例えば、静的ＭＰＵエントリは、第２のソフトウェア・プロセスが当該領域にアクセスすることを許可し、ただし、第１のソフトウェア・プロセスのアクセスは拒絶するために、より広いアドレス領域に対して設定され得る。より広い領域内のより小さいアドレス領域をカバーするメモリベースのメモリ保護エントリは、このとき、第１のソフトウェアがアクセスを許可される部分範囲のみに対して指定され得る。これによって、第１のソフトウェアによってアクセスされる部分範囲のいずれかの側のより広い範囲の部分に対して別個のエントリを提供する必要性を回避することができ、他の静的メモリ保護エントリが他の目的のために維持され、又は、メモリ保護テーブルの合計サイズを低減することが可能になる。
【００２９】
各静的メモリ保護エントリは、静的メモリ保護エントリが未使用の静的メモリ保護エントリであるかを示す未使用指示と関連付けることができる。所与の静的メモリ保護エントリが未使用の静的メモリ保護エントリであると示されるとき、ＭＰＵは、静的ＭＰＵレジスタ・ストレージの、所与の静的メモリ保護エントリに対応する部分の中のメモリ保護テーブルからメモリ保護エントリをキャッシュすることができる。したがって、ソフトウェアが、ハードウェアにおいてサポートされるほど多くの静的メモリ保護エントリを必要としない場合、ハードウェアレジスタ・ストレージの一部分をキャッシュとして再利用して、メモリ保護テーブルからのメモリ保護エントリのローカル記憶を可能にすることができ、結果、エントリに、メモリ・システムからフェッチされなければならない場合よりも高速にアクセスすることができる。これによって、性能を改善することができる。所与の静的メモリ保護エントリが未使用であるとしてマークされるとき、いずれの特定のメモリ保護エントリが静的ＭＰＵレジスタ・ストレージ内でキャッシュされるかは、たとえ処理回路がＭＰＵパラメータ構成動作を一切実施していない場合であっても、キャッシュ交換ポリシに依存して、時に応じて変化し得る。
【００３０】
したがって、静的メモリ保護エントリが使用済みとしてマークされる（すなわち、未使用指示が設定されていない）とき、静的ＭＰＵレジスタ・ストレージのその部分内のデータは、ＭＰＵパラメータ構成動作によって再構成されるまで記憶されたままであり得るが、静的メモリ保護エントリが未使用として示されるとき、当該エントリは、キャッシュとして使用され得、当該事例において、処理回路によって実行されるものとしてのアドレス・アクセスのパターンに依存して、静的ＭＰＵレジスタ・ストレージ内で提供される特定のエントリに変化があり得る。未使用としてマークされない静的メモリ保護エントリについて、別個の有効化／無効化指示も存在し得、これは、有効に設定されるとき、エントリが有効であり、メモリ・アクセス要求の標的アドレスによってヒットし得ることを意味し、一方、無効化されたエントリについて、ＭＰＵは、たとえ標的アドレスが無効化エントリによって定義される領域に一致する場合であっても、常に失敗を返し得る。静的ＭＰＵレジスタ・ストレージの、無効化静的メモリ保護エントリに対応する部分は、メモリ内のメモリ保護テーブルからのエントリをキャッシュするためのキャッシュとして使用することができないという点において、無効化エントリは、未使用エントリとは異なり得る。ソフトウェアは、そのアドレス範囲に対するアクセスが拒絶されるように、特定の静的メモリ保護エントリを一時的に無効化することができ、ただし、必要に応じて後に再び有効化することができるように、静的ＭＰＵレジスタ・ストレージ内の静的メモリ保護エントリを維持し続け、一方、未使用静的メモリ保護エントリとは、性能を改善するために、対応するレジスタ・ストレージをキャッシュとして使用することができるが、未使用指示が設定される前からの静的ＭＰＵレジスタ・ストレージの内容は保持されることが保証されないことを意味する。
【００３１】
ＭＰＵは、メモリ保護テーブルの少なくとも１つのメモリ保護エントリをキャッシュするためのＭＰＵキャッシュ・ストレージを備えることができる。ＭＰＵキャッシュ・ストレージは、エントリが上述したような未使用としてマークされる事例においては静的ＭＰＵレジスタ・ストレージになり得る。しかしながら、当該ストレージは、メモリ保護テーブルからエントリをキャッシュするために提供される専用ＭＰＵキャッシュ・ストレージを提供するためにも有用であり得、これは、静的メモリ保護エントリ（与えられる場合）がどのように構成されているかにかかわらず、キャッシュとして作用する。ＭＰＵキャッシュ・ストレージは、静的ＭＰＵレジスタ・ストレージと同様に、ＭＰＵ内のレジスタのさらなるセットを使用して実施されてもよく、又は、ＳＲＡＭのような異なるタイプのデータ・ストレージを使用して実施されてもよい。場合によっては、静的ＭＰＵレジスタ・ストレージ及びＭＰＵキャッシュ・ストレージは、同じストレージ構造の一部であってもよく、一部がキャッシュ・ストレージとして使用するために分割され、他の部分が、静的に構成されたメモリ保護エントリを記憶するために分割される。
【００３２】
したがって、ＭＰＵキャッシュ・ストレージは、メモリ保護テーブルの少なくとも１つのメモリ保護エントリをキャッシュするために提供される。ＭＰＵメモリ・アクセス回路は、キャッシュ交換ポリシ（例えば、最長時間未使用、ラウンド・ロビンなど）を使用して、所与の時点において、メモリ保護テーブルからのメモリ保護エントリのいずれのセットがＭＰＵキャッシュ・ストレージ内でキャッシュされるかを決定することができる。これは、未使用としてマークされていない静的メモリ保護エントリを記憶する静的ＭＰＵレジスタ・ストレージの部分とは対照的に、たとえ処理回路がいかなるＭＰＵパラメータ構成動作も実行していない場合であっても、ＭＰＵキャッシュ・ストレージを更新することができることを意味する。
【００３３】
処理回路によって発行されるメモリ・アクセス要求に応答して、ＭＰＵメモリ・アクセス回路は、標的アドレスが、ＭＰＵキャッシュ内に記憶されている任意のメモリ保護エントリに対して指定されている対応するアドレス領域内にあるかに依存して、少なくとも１つのＭＰＵメモリ・アクセス要求を開始すべきかを決定することができる。例えば、ＭＰＵキャッシュ・ストレージを最初に検索することができ、ＭＰＵキャッシュ・ストレージ内にヒットがある場合、いかなるＭＰＵメモリ・アクセス要求も開始する必要はあり得ない。キャッシュ交換ポリシは、ＭＰＵメモリ・アクセス要求が発行されることを必要とするメモリ・アクセス要求の部分を低減するように、将来において最も有用であると予測されるメモリ保護エントリを保持することを目標とし得る。したがって、ＭＰＵキャッシュ・ストレージ内にヒットがある場合、少なくとも１つのＭＰＵメモリ・アクセス要求は抑制することができる。
【００３４】
処理回路は、所与のメモリ保護エントリが得られたメモリ保護テーブル内の位置を識別するエントリ識別子を取り出すためのエントリ識別子問い合わせ命令に応答することができる。例えば、エントリ識別子問い合わせ命令は、標的アドレスを指定することができ、応答して、処理回路及び／又はＭＰＵは、標的アドレスに一致するメモリ保護エントリのエントリ識別子の指示を返すことができる。エントリ識別子は、取り出されたエントリ識別子を処理回路のアーキテクチャ・レジスタに書き込むことによって、処理回路上で実行しているソフトウェアにとってアクセス可能にすることができる。ＭＰＵキャッシュ・ストレージは、キャッシュされた各メモリ保護エントリについて、キャッシュされたメモリ保護エントリが得られたメモリ保護テーブル内の位置と関連付けられるエントリ識別子を指定することができる。これは、キャッシュされたメモリ保護エントリ内でヒットするアドレスと関連付けられるエントリ識別子を識別するためにメモリ・システムへのＭＰＵメモリ・アクセス要求を開始する必要がないため、キャッシュされたメモリ保護エントリについて、処理回路が、より高速にエントリ識別子問い合わせ命令にサービスすることができることを意味する。（アクセス許可を返すだけでなく）所与のメモリ保護エントリのエントリ識別子を取り出すことが可能である命令は、特定のタイプのセキュリティ・チェックを高速化し、又は、コード片が決定性の時間で作動する信頼度を提供するのに有用であり得る。所与の一対のアドレスに対してエントリ識別子問い合わせ命令を実行することによって、その後、両方のエントリ識別子問い合わせ命令が同じエントリ識別子を返す場合、当該アドレス対の間のアドレス範囲全体が同じメモリ保護テーブル・エントリに対応すると判定することができ、結果、指定されているアドレス対の間のマッピングされていないアドレス領域へのアクセスに起因する障害はないと保証することができる。これは、範囲内の各個々のアドレスに対する別個のチェックを必要とするのではなく、範囲が単一のメモリ保護領域内で全体的に失敗することが立証されているときに、アドレス範囲全体に対する単一のアクセス許可チェックが実施され得ることを意味し得るため、これによってまた性能を改善することができる。したがって、エントリ自体の任意のパラメータに加えて、ＭＰＵキャッシュ・ストレージ内のキャッシュされたメモリ保護エントリと関連付けられるエントリ識別子をキャッシュすることが、そのようなエントリ識別子問い合わせ命令を実行するときに、処理回路の性能を高速化するのに有用であり得る。
【００３５】
処理回路は、複数のセキュリティ状態において動作することを可能にすることができ、各状態は、複数の特権レベルに細分化され得る。処理回路は、例えば、他のセキュリティ状態におけるコードへの分岐を可能にすることによって、セキュリティ状態間での高速遷移を許容することができる。複数のセキュリティ状態の各々は、処理回路がそのセキュリティ状態において命令を実行しているときに使用されることになる、関連付けられるメモリ保護テーブルを有することができる。必要とされるＭＰＵキャッシュ・ストレージの量を低減するために、ＭＰＵキャッシュ・ストレージは、保護エントリがメモリ保護テーブルから取得されたときに処理回路によって使用されていたセキュリティ状態を識別するためのセキュリティ状態識別子を指定するキャッシュ内の各エントリを有する複数のセキュリティ状態の間で共有され得る。ＭＰＵは、そのセキュリティ状態識別子が処理回路の現在アクティブなセキュリティ状態とは異なるセキュリティ状態を識別する、ＭＰＵキャッシュ・ストレージ内に記憶されているキャッシュされたエントリの使用を抑制することができる。したがって、非アクティブなセキュリティ状態と関連付けられるエントリはＭＰＵキャッシュ・ストレージ内にキャッシュされたままになり得るが、現在アクティブなセキュリティ状態のテーブルがセキュリティ状態識別子によって識別されるセキュリティ状態と異なるとき、標的アドレスに一致するものとして検出されない。たとえアクティブなセキュリティ状態が処理回路によって再構成される場合であっても、アクティブなセキュリティ状態が後に、以前にアクティブであったセキュリティ状態に戻って切り替わる場合、そのセキュリティ状態と関連付けられるいくつかのキャッシュされたメモリ保護エントリは依然としてキャッシュ内に留まることができ、したがって、より迅速にアクセスされて性能を改善することができるため、これによって、異なるセキュリティ状態間で切り替えるときに性能を改善することが可能になる。
【００３６】
代替的に、キャッシュされたメモリ保護エントリをセキュリティ状態識別子によってタグ付けする代わりに、別の手法は、アクティブなセキュリティ状態が処理回路によって変更されるのに応答して、ＭＰＵキャッシュ・ストレージ内のすべてのエントリを無効化することであり得る。これによって、アクティブなセキュリティ状態が切り替えられた後に、新たにアクティブになったセキュリティ状態と関連付けられるメモリ保護テーブルからのエントリによって、キャッシュに再びデータ投入する必要があり得るが、キャッシュされたメモリ保護エントリ毎にセキュリティ状態識別子フィールドを提供する必要がないため、この手法は、ＭＰＵキャッシュ・ストレージをより小規模にすることができる。
【００３７】
ＭＰＵキャッシュ・ストレージは、各キャッシュ・メモリ保護エントリについて、キャッシュされたメモリ保護エントリが得られたメモリ保護テーブルと関連付けられるテーブル識別子を指定することができる。例えば、異なるソフトウェア片に対応する異なるテーブルなど、複数の別個のメモリ保護テーブルがメモリ・システム内で確立され得る。各メモリ保護テーブルは、所与のテーブル識別子によって識別され得る。例えば、テーブル識別子は、テーブルに割り当てられる任意の数値であってもよく、又は、メモリ保護テーブルのベース・アドレスの指示が、テーブル識別子として使用されてもよい。装置は、メモリへのアクセス許可をチェックするために現在使用されるべきであるアクティブなメモリ保護テーブルを識別するアクティブ・テーブル識別子を記憶するためのアクティブ・テーブル識別子レジスタを有することができる。ＭＰＵは、キャッシュされたメモリ保護エントリと関連付けられるテーブル識別子が、アクティブ・テーブル識別子レジスタ内に記憶されているアクティブ・テーブル識別子とは異なる、ＭＰＵキャッシュ・ストレージ内に記憶されている、キャッシュされたメモリ保護エントリの使用を抑制することができる。したがって、非アクティブなメモリ保護テーブルと関連付けられるエントリはＭＰＵキャッシュ・ストレージ内にキャッシュされたままになり得るが、現在アクティブなテーブルが異なるメモリ保護テーブルであるとき、標的アドレスに一致するものとして検出されない。たとえアクティブ・テーブル識別子が処理回路によって、異なるメモリ保護テーブルに切り替わるように再構成される場合であっても、アクティブなメモリ保護テーブルが後に、以前にアクセスされたテーブルに戻って切り替わる場合、そのテーブルと関連付けられるいくつかのキャッシュされたメモリ保護エントリは依然としてＭＰＵキャッシュ・ストレージ内に留まることができ、したがって、より迅速にアクセスされて性能を改善することができるため、これによって、異なるメモリ保護テーブルを使用して異なるソフトウェア・プロセス間で切り替えるときに性能を改善することが可能になる。
【００３８】
代替的に、キャッシュされたメモリ保護エントリを対応するテーブル識別子によってタグ付けする代わりに、別の手法は、アクティブ・テーブル識別子レジスタが処理回路によって変更されるのに応答して、ＭＰＵキャッシュ・ストレージ内のすべてのエントリを無効化することであり得る。これによって、アクティブなテーブルが切り替えられた後に、新たにアクティブになったメモリ保護テーブルからのエントリによって、キャッシュに再びデータ投入する必要があり得るが、キャッシュされたメモリ保護エントリ毎にテーブル識別子フィールドを提供する必要がないため、この手法は、ＭＰＵキャッシュ・ストレージをより小規模にすることができる。
【００３９】
メモリ保護キャッシュ無効化動作に応答して、処理回路は、無効化条件を満たす、ＭＰＵキャッシュ・ストレージ内に記憶されている１つ又は複数のキャッシュされたメモリ保護エントリを無効化するように、ＭＰＵをトリガすることができる。例えば、メモリ保護キャッシュ無効化動作は、処理回路によって実行される特定の命令であってもよい。メモリ保護キャッシュ無効化動作は、無効化条件に対する複数の異なる基準のうちの１つを指定することができる。例えば、第１のタイプのキャッシュ無効化動作は、ＭＰＵキャッシュ・ストレージのすべてのエントリが無効化されるべきであると指定し得る。第２のタイプのメモリ保護キャッシュ無効化動作は、キャッシュされたメモリ保護エントリの特定のアドレス又はアドレス範囲が無効化されることを識別し得、キャッシュされたメモリ保護エントリは、維持されている指定のアドレス範囲と部分的に又は完全に重ならない領域を画定する。無効化条件の他の選択肢は、キャッシュされたメモリ保護エントリが、特定のテーブル識別子、セキュリティ状態識別子のうちの少なくとも１つに対応するか、又は、特定の範囲内のエントリ識別子を有する場合に、無効化されるべきであるということであり得る。したがって、キャッシュからのエントリの無効化の制御には、複数の異なる選択肢がある。ソフトウェアの制御下にある処理回路が、特定のアドレス領域について指定されているパラメータを変更するためにメモリ保護テーブルの一部分を再構成するとき、ＭＰＵキャッシュ・ストレージからの対応するエントリの無効化はまた、アクセス許可の古い値がキャッシュ内に保持されないことを保証するためにトリガすることもできるため、これは有用であり得る。
【００４０】
メモリ・システム内に記憶されているメモリ保護テーブル内のメモリ保護エントリは、メモリ保護エントリが、有効なアクセス許可を与える有効化されたエントリであるか、又は、無効なアクセス許可を与える無効化されたエントリであるかの指示を含むことができる。これは、領域が後に有効化されたときに再構成される必要がないように、無効化されたメモリ保護エントリ内の領域パラメータを維持しながら、特定のアドレス領域へのアクセスを一時的に無効化するのに有用であり得る。ＭＰＵキャッシュ・ストレージが、メモリ保護テーブルの無効化されたエントリをキャッシュすることを禁止することができる。例えば、ＭＰＵメモリ・アクセス回路は、テーブルを検索するとき、有効化されたエントリについてのみヒット信号を返すことができ、メモリ保護エントリは、メモリ内のメモリ保護テーブルにおいてヒットが検出された場合にのみ、ＭＰＵキャッシュ・ストレージに配分することができる。メモリ・システムから、無効化されたエントリがキャッシュされることを回避することが有用であり得る。これは、このことが、場合によって後に使用するためにメモリ内でメモリ保護テーブル内にダミー・エントリを挿入することができ、キャッシュされたエントリを一切無効化する必要なく、これらのエントリを構成及び有効化することができることを意味するためである。
【００４１】
アクティブなメモリ保護テーブルのテーブル識別子は、種々の方法で表すことができる。１つの実例において、テーブル識別子は、ベース・アドレスのみを使用して識別されてもよい。代替的に、場合によっては、テーブルは、ベース・アドレスとサイズとの組み合わせを使用して識別されてもよい。これは、２つの異なるソフトウェア・プロセスによってアクセスされることになるメモリ保護テーブルが部分的に重なり合い、結果、メモリ保護テーブルの共有される部分が、ベース・アドレスにおいて開始するアドレスに記憶され得、その後、１つの特定のソフトウェア・プロセスに対してのみ使用されることになるメモリ保護テーブルの部分が、アドレス空間の後続部分に位置し得、結果、異なるソフトウェア片によってアクセスされる異なるメモリ保護テーブル間の切り替えが、単純に、アクティブなメモリ保護テーブルの大きさを示すためのサイズ指示を変更することによって実行され得る場合に有用であり得る。場合によっては、ベース・アドレス及びサイズが、ＭＰＵの単一のレジスタ内で指定されてもよい。しかしながら、相対的に大きいアドレスをサポートするシステムにおいては、ベース・アドレス及びサイズの指示が、１つのレジスタ内に収まらない場合があり、そのため、時として、別個のレジスタが要求される場合がある。したがって、処理回路によって発行されるメモリ・アクセス要求に応答してＭＰＵメモリ・アクセス回路によってアクセスされるべきアクティブなメモリ保護テーブルのベース・アドレスを記憶するためにベース・アドレス・レジスタを提供することができ、アクティブなメモリ保護テーブルのサイズの指示を記憶するためにサイズ・レジスタを提供することができる。ベース・アドレス・レジスタとサイズ・レジスタの両方がまた、それぞれベース・アドレス及びサイズに加えて他のパラメータも指定してもよいことが諒解されよう。
【００４２】
アクティブなメモリ保護テーブルのベース・アドレス及びサイズが異なるレジスタにおいて指定されるとき、これは、それぞれアクティブなメモリ保護テーブルのベース・アドレス及びサイズを更新するために、別個のＭＰＵ構成動作が処理回路によって実行される必要があり得ることを意味し得る。これによって、ベース・アドレス及びサイズのうちの一方を変更し、ただし他方を変更しないことによって、領域が、メモリ保護エントリであるように意図された情報を含むアクティブなテーブルであるとして示される危険性が生じる可能性があるため、ベース・アドレス及びサイズのうちの一方を更新するための第１の構成動作と、ベース・アドレス及びサイズのうちの他方を更新するための第２の構成動作との間の期間において未定義の挙動が発生する競合条件の危険性が生じる可能性がある。
【００４３】
この危険性を低減するために、アクティブなメモリ保護テーブルのベース・アドレス及びサイズのうちの一方が更新されるべきであることを指定する、所定のタイプのＭＰＵ構成動作に応答して、ベース・アドレス及びサイズのうちのその一方を更新するのに加えて、処理回路はまた、ベース・アドレス及びサイズのうちの他方をも、アクティブなメモリ保護テーブルがないことを示す無効値に更新することができる。ベース・アドレス及びサイズのうちの一方が更新されたときに、その後、他方も更新されるまで、実効的に、メモリ保護テーブルへのアクセスを完全に無効化することによって、メモリ保護テーブルの一部分であるように意図されていないアドレス空間の一部分にアクセスするＭＰＵメモリ・アクセス要求から生じる不適切な動作はあり得なくなる。
【００４４】
１つの実施態様において、所定のタイプのＭＰＵ構成動作は、ベース・アドレスが更新されるべきであることを指定する動作であってもよく、サイズが、アクティブなメモリ保護テーブルが存在しないことを示す無効値にクリアされるべきであることを指定してもよい。したがって、所定のタイプのＭＰＵ構成動作によって更新されるべきであると指定されるベース・アドレス及びサイズのうちの一方は、ベース・アドレスであってもよい。これは、より単純に実施することができる。所定のタイプのＭＰＵ構成動作は、専用命令又はコマンドであり得るが、また単純に、ベース・アドレス及びサイズのうちの、無効値に設定されるべきでない一方を指定するベース・アドレス・レジスタ又はサイズ・レジスタにマッピングされるアドレスを、その標的アドレスとして指定する、処理回路によって実行される一般的なストア命令でもあり得る。場合によっては、ベース・アドレス又はサイズを更新するすべてのＭＰＵ構成動作がまた、他方を無効値にクリアしてもよい。代替的に、これは常に必要とされなくてもよく、特定のタイプのＭＰＵ構成動作のみが、ベース・アドレス及びサイズの他方を無効値にクリアしてもよい。例えば、ＭＰＵ構成動作をトリガするために使用される特定のタイプの命令は、ベース・アドレス及びサイズのうちの、動作によって指定の値に構成されていない他方も、無効値にクリアされるべきであるか否かをシグナリングしてもよい。他の実例において、「サイズを無効にクリアする」制御は、ベース・アドレス・レジスタのビット自体によって起動されてもよく、結果、ベース・アドレス・レジスタが書き込まれ、「サイズを無効にクリアする」フラグが、ベース・アドレス・レジスタに書き込まれる新たな値に設定される場合、ＭＰＵはまた、サイズを無効値にクリアする。
【００４５】
メモリ保護テーブルからエントリを得るためにＭＰＵによって発行されるＭＰＵメモリ・アクセス要求はそれ自体、特定のアクセス許可に対してチェックされる必要があり得る。しかしながら、場合によって非決定性の応答時間、又は、検索を引き起こす要求の無限ループをもたらす可能性がある、メモリ保護テーブルに対する再帰的な検索のセットをもたらす可能性があるため、メモリ検出テーブル自体に基づいて、ＭＰＵメモリ・アクセス要求が許可されるかをチェックすることは望ましくない場合がある。メモリ・アクセス要求自体のチェックをハンドリングするためには、異なる手法が使用されてもよい。１つの実例において、許可チェック回路は、メモリ保護テーブルから独立して指定される、デフォルトのアクセス許可セットに基づいて、少なくとも１つのＭＰＵメモリ・アクセス要求が許可されるかを判定することができる。したがって、例えば、ＭＰＵの構成可能レジスタ内にハードワイヤード又は指定され得るデフォルトの許可セットを使用することによって、ＭＰＵが特定のアドレスへのメモリ・アクセス要求を発行することを可能にされるかを判定するために、メモリ内のメモリ保護テーブルを検索する必要はなくなる。これは、リアル・タイム・ハンドリングの改善を助けることができる。
【００４６】
デフォルトのアクセス許可セットに対してＭＰＵメモリ・アクセス要求をチェックする代わりに、又は、それに加えて、許可チェック回路は、少なくとも１つのＭＰＵメモリ・アクセス要求のアドレスが、複数のメモリ・セキュリティ構成レジスタによって指定される複数のアドレス範囲のうちの１つの中にあるかに基づいて、ＭＰＵメモリ・アクセス要求が許可されるかを判定することができる。例えば、メモリ・セキュリティ構成レジスタは、上述した複数のセキュリティ状態のうちの所与の状態からいずれのアドレス範囲にアクセスすることができるかを定義する情報を指定することができる。例えば、いくつかのシステムは、アドレス空間の、特定の安全なプロセスによってのみアクセスすることができる安全部分、及び、安全なプロセス又は安全でないプロセスのいずれによってもアクセスすることができる非安全部分を定義することをサポートすることができ、そのため、ＭＰＵメモリ・アクセス要求は、メモリ・セキュリティ構成レジスタによって定義される安全／非安全領域に対してチェックされる必要があり得る。この場合、非安全コードによってトリガされるＭＰＵメモリ・アクセス要求は、それらがメモリ・セキュリティ構成レジスタにおいて安全なアドレス空間の一部であると定義される領域を標的とする場合、拒絶することができる。メモリ・セキュリティ構成レジスタによって定義される許可は、メモリ保護テーブル及び静的ＭＰＵエントリによって提供されるものに直交し得る。したがって、上記ＭＰＵメモリ・アクセス要求がメモリ・セキュリティ構成レジスタに対してチェックされるのに加えて、命令フェッチ要求又は一般的なロード／ストア命令に応答して処理回路によって発行されるメモリ・アクセス要求もまた、それらが許可されるかをチェックするために、メモリ・セキュリティ構成レジスタに対してチェックされ得る。
【００４７】
いくつかの実例において、キャッシュされたメモリ保護エントリは、エントリと関連付けられるロック指示を設定することによって、「ロック」されているものとしてマークされ得る。ＭＰＵは、ロックされたキャッシュされたメモリ保護エントリが、キャッシュから排除されるのを防止することができる。例えば、ＭＰＵは、例外に応答してアーキテクチャ状態を保存し、例外が返されるのに応答して保存された状態を復元するために使用されるスタック・データ構造を含むアドレス領域に対応する、ロックされたキャッシュされたメモリ保護エントリを抑えることができる。排除することができないように、スタックに対応するエントリをロックすることによって、状態保存／復元における遅延を低減することにより、高速の例外ハンドリング応答が保証される。ＭＰＵは、処理回路のスタック・ポインタ・レジスタ内に記憶されているスタック・ポインタ・アドレスを使用して、いずれのエントリがスタックに対応するかを判定することができる。スタックと関連付けられるＭＰＵエントリのロックはいつでも行うことができる。しかしながら、１つの実例において、スタックから状態が復元されるときに例外が返されるのに応答して、現在のスタック・ポインタ・アドレスと関連付けられるＭＰＵエントリがロックされ得、結果、例外が返される間又はその直後にさらなる例外又は割り込みが発生する場合、スタックのエントリはＭＰＵキャッシュ・ストレージ内で依然として利用可能であり、そのため、さらなる例外又は割り込みのために状態をより高速に保存することができる。
【００４８】
他の実施例において、各キャッシュされたメモリ保護エントリと関連付けられるロック指示の使用は、スタック・データ構造と関連付けられるメモリ保護テーブルからエントリを記憶するためのみに使用されるＭＰＵキャッシュ・ストレージ内の専用エントリを有することによって回避することができる。この専用エントリにはいつでもデータ投入することができる。しかしながら、１つの実例において、スタックから状態が復元されるときに例外が返されるのに応答して、現在のスタック・ポインタ・アドレスと関連付けられるＭＰＵエントリを、専用エントリにデータ投入することができる。
【００４９】
いくつかの実施態様において、例外条件に応答するとき、処理回路は、レイジー状態保存を使用することができる。例外条件が発生すると、処理回路は、例外が発生する前に実行された外向きプロセスと関連付けられる何らかのアーキテクチャ状態をメモリ・システムに保存する必要があり得、結果、たとえ例外条件後に実行するプロセスがそのアーキテクチャ状態を上書きする場合であっても、保存された状態が維持される。外向きプロセスと関連付けられる状態は、後に、処理が例外のハンドリングから戻るときに復元され得る。アーキテクチャ・レジスタからメモリ・システムへの状態の保存は相対的に低速であり得、そのため、割り込みハンドリング待ち時間を低減するために、いくつかのシステムは、例外条件自体に応答して、アーキテクチャ状態の第１の部分のみをメモリ・システムに保存することができる。アーキテクチャ状態の第２の部分は、例外条件に直に応答して保存されなくてもよく、後に、例外条件後に実行する後続のソフトウェア・プロセスが実際にアーキテクチャ状態の第２の部分にアクセスする場合にのみ保存されてもよい。例えば、アーキテクチャ状態の第２の部分は浮動小数点値を記憶するための浮動小数点レジスタ、の内容であってもよく、一方、アーキテクチャ状態の第１の部分は、整数レジスタの内容であってもよい。多くのソフトウェア・プロセスが浮動小数点レジスタを一切使用しない場合があり、そのため、例外条件後に実行する後続のソフトウェア・プロセスが、浮動小数点レジスタに決してアクセスすることがない場合、以前に実行されたプロセスと関連付けられる状態が保持され、そのため、それらの浮動小数点レジスタについて状態保存及び復元を実施する必要はないため、これは有用であり得る。
【００５０】
そのようなレイジー状態保存は性能にとって有用であり得るが、ＭＰＵがメモリ・システム内に記憶されているメモリ保護テーブルを使用するとき、これは何らかの複雑性を引き起こす可能性がある。アーキテクチャ状態の第２の部分が実際にメモリに保存されているかにかかわらず、アーキテクチャ状態の第１の部分及び第２の部分を維持するために、一貫したスタック・フレームがメモリ内で使用されることを可能にするために、例外条件に応答して、処理回路は、後続のソフトウェア・プロセスがアーキテクチャ状態の第２の部分にアクセスする場合に、アーキテクチャ状態の第２の部分が保存されるべきである、第２の部分の状態を保存するアドレス領域の指示を記録することができる。したがって、後続のソフトウェア・プロセスが、アーキテクチャ状態の第２の部分を記憶するレジスタへのアクセスを開始するとき、処理回路は、第２の部分の状態を保存するアドレス領域を識別する、記録されたアドレスを読み出し、その後、アーキテクチャ状態の第２の部分を、識別されたアドレス領域に保存することができる。たとえまだ保存されていない場合であっても、アーキテクチャ状態の第２の部分のために空間を確保することは、各例外のためのスタック・フレームのサイズが同じになることを意味し、結果、例外がネスト化されると、後続のスタック・フレームの位置は、アーキテクチャ状態の第２の部分が実際に保存されたかにかかわらず、同じになる。これは、状態復元の制御をはるかに単純化する。
【００５１】
しかしながら、アーキテクチャ状態の第２の部分をメモリ・システムに保存するためのメモリ・アクセスは、それ自体、ＭＰＵに対してチェックされる必要があり得、また多くの場合、例外条件に応答して、アクティブなメモリ保護テーブルが変化し得るため、例外条件前に実行するプロセスが、アーキテクチャ状態のその第２の部分を、第２の部分の状態を保存するアドレス領域のために指定されているアドレスに保存することを許可されているかをチェックするための関連アクセス許可は、もはや利用可能でない場合がある。
【００５２】
したがって、例外条件に応答して、ＭＰＵは、ＭＰＵが、後続のソフトウェア・プロセスの実行中に、アーキテクチャ状態の第２の部分を保存するためのメモリ・アクセスが、例外条件が発生した時点においてアクティブであったメモリ保護テーブルのメモリ保護エントリによって指定されるアクセス許可を満たすかを判定することを可能にするためのＭＰＵチェック情報を記録することができる。ＭＰＵチェック情報は、複数の異なるタイプの情報を含み得る。いくつかの事例において、ＭＰＵチェック情報は、例外条件が発生したときにアクティブであったメモリ保護テーブルのテーブル識別子（例えば、ベース・アドレス、及び任意選択的にサイズ）を含んでもよく、結果、後続のソフトウェア・プロセスの実行中、以前にアクティブであった関連するメモリ保護テーブルを識別することができ、例外条件の前に実行するプロセスが、第２の部分の状態を保存するアドレス領域のために指定されているアドレスに状態を保存することを可能にされていたかをチェックするために、適切なエントリにアクセスすることができる。ＭＰＵチェック情報はまた、第２の部分の状態を保存するアドレス領域の開始アドレス及び終端アドレスが、例外条件が発生したときにアクティブであったメモリ保護テーブルの同じメモリ保護エントリに対応するかの指示も含むことができる。第２の部分の状態を保存するアドレス領域の開始アドレスと終端アドレスの両方が、同じメモリ保護エントリに対応するとき、これは、第２の部分の状態を保存するアドレス領域の全体がアクセスされることを許可されることを判定するためには、アクセス許可の単一のチェックで十分であり得ることを意味し、第２の部分の状態を保存するアドレス領域の各個々の部分を、例外条件が発生したときにアクティブであったメモリ保護テーブルのエントリに対してチェックする必要性が回避される。いくつかの実施態様において、アクセス許可の単一のチェックは、例外条件が発生したときに行うことができ、チェックの結果を保存することができ、一方、他の実施例において、メモリ保護テーブルが変化した場合があっても、後にチェックを実施することができるように、アクセス許可を保存することができる。したがって、例外条件が発生したときにアクティブであったメモリ保護テーブルに関する何らかの情報を保存することによって、たとえ例外条件に応答してアクティブなメモリ保護テーブルが変化する場合であっても、レイジー状態保存が機能することが可能である。
【００５３】
命令を実行するための命令実行環境を提供するように、ホスト・データ処理装置を制御するための対応するコンピュータ・プログラムを提供することができる。コンピュータ・プログラムは、上述した処理回路及びＭＰＵに機能的に対応する処理プログラム論理及びＭＰＵプログラム論理を備えることができる。したがって、コンピュータ・プログラムによってシミュレートされる命令実行環境内で実行されるプログラム内のメモリ・アクセス命令は、上述した処理回路及びＭＰＵを実際に備えるハードウェア上で実行されるプログラム内のメモリ・アクセス命令と同様にハンドリングすることができる。シミュレータ・コンピュータ・プログラムは、たとえシミュレータ・コンピュータ・プログラムを実行しているホスト・コンピュータ内にこれらの機能を提供する実際のハードウェアが一切存在し得ないとしても、実際のハードウェア装置によって提供されるものと同様の命令環境を、シミュレータ・コンピュータ・プログラム上で実行するソフトウェアに提示することができる。上述したハードウェア・アーキテクチャの機能は、一般的なホスト・コンピュータが、上述したＭＰＵサポートを有する装置上で実行するように意図されたコードを、そのようなＭＰＵを実際に有する装置上で達成される結果に対応するように、実行することを可能にする、命令又はデータ構造のセットのような、プログラム論理を提供することによってエミュレートすることができる。ホスト・データ処理装置を制御するためのシミュレータ・コンピュータ・プログラムは、記憶媒体上に記憶することができる。この記憶媒体は、非一時的記憶媒体であってもよい。
【００５４】
テーブル検索
上述したメモリ保護テーブルは、所与の動作を実施するために処理構成要素によって使用される情報を提供するメモリ・システム内に記憶される制御テーブルの１つの実例である。メモリ保護テーブルの場合、処理構成要素は、ＭＰＵであってもよく、実施される動作は、所与のメモリ・アクセスが許可されるかを判定することであってもよい。そのような制御テーブルの別の実例は、アドレス空間のいずれの領域が安全領域又は非安全領域であるかを定義するテーブルであってもよく、制御テーブルに基づいて実施される動作は、処理回路が安全モードにおいて動作するべきか、又は、より安全性の低いモードにおいて動作するべきかを判定することであってもよく、安全モードは、処理されている命令アドレスが制御テーブル内で定義される安全アドレス領域のうちの１つの中にあるときに選択される。別の実例は、所与のソフトウェア・ライブラリが別のソフトウェア・ライブラリを呼び出すことを可能にされるかを判定するために、処理回路によって使用され得る、その領域と関連付けられるソフトウェア・ライブラリの識別子を、制御テーブルによって表されるアドレス領域毎に定義する制御テーブルであり得る。
【００５５】
したがって、様々な処理シナリオにおいて、第１の限界アドレス及び第２の限界アドレス／サイズが、アドレス空間内の可変サイズの対応するアドレス領域の限界を識別するように、第１の限界アドレス及び第２の限界アドレス又はサイズのいずれかを各々が指定する複数のエントリを有する制御テーブルを提供することが有用であり得る。エントリは、第１の限界アドレスの順序において、制御テーブル内に配列することができる。エントリ毎に可変サイズの領域をサポートすることは、所与のサイズのアドレス領域の特定の特性セットを表すのに必要なエントリの数を低減する（より大きいアドレス領域を複数の別個の固定サイズのエントリに人工的に分割する必要性を回避する）のに有用であり得るが、可変サイズのエントリを許容することによって、制御テーブルに対する検索を実施するのがより複雑になり得る。これは、可変サイズの領域がサポートされるとき、所与のアドレスに対応するテーブル内の位置が固定され得ず、そのため、実際には、所与のアドレスに対応するエントリを位置特定するには、問い合わせアドレスを、対応するアドレス領域の限界を定義するパラメータ（第１の限界アドレス、並びに、第２の限界アドレス及びサイズのうちの一方）と比較するために、テーブルのエントリを通じた探索が必要になり得るためである。アドレス空間は、制御テーブル内のエントリを疎らに配分されている場合があり、結果、そのアドレスを含む領域について定義されている対応するエントリを一切有しないアドレスがいくつか存在する場合があるため、制御テーブルの探索が、第１の限界アドレスと、第２の限界アドレス、及び、各アドレス領域の他の限界を定義するために使用されるサイズのうちの一方の両方に対しての比較を必要とし、したがって、多数の比較を必要とし得ることが予測される。
【００５６】
下記に論じる技法において、制御テーブルが、問い合わせアドレスに対応するエントリを含むかを識別するために二分探索手順を実施するための、テーブル検索回路が提供される。二分探索手順は、制御テーブルの候補エントリの現在の探索窓を、より少数の候補エントリを含むより狭い探索窓へと絞り込むための、複数の探索窓絞り込みステップを含む。所与の探索窓絞り込みステップにおいて、テーブル検索回路は、選択候補エントリの第２の限界アドレス又はサイズとは無関係に、現在の探索窓の選択候補エントリの第１の限界アドレスに対する、問い合わせアドレスの比較に基づいて、現在の探索窓を絞り込む。現在の探索窓を制御テーブルの単一の候補エントリまで絞り込む最後の探索窓絞り込みステップの後、テーブル検索回路は、問い合わせアドレスが単一の候補エントリの第１の限界アドレス及び第２の限界アドレス又はサイズによって定義される対応するアドレス領域内にあるとき、単一の候補エントリが問い合わせアドレスに対応するエントリであると判定することができる。
【００５７】
したがって、この手法によれば、各探索窓絞り込みステップは、制御テーブルの所与の選択候補エントリの第１の限界アドレスに対して問い合わせアドレスを比較するだけでよく、そのため、メモリ・システムから第２の限界アドレス又はサイズをロードする必要はない。第２の限界アドレス又はサイズは、最後の探索窓絞り込みステップから生じる単一の候補エントリについて比較されるだけでもよい。したがって、制御テーブル内の所与のエントリ数Ｎについて、この手法は、比較の数が、第２の限界アドレス又はサイズが各探索窓絞り込みステップについてチェックされる必要がある場合のｌｏｇ２（Ｎ）＊２の代わりに、ｌｏｇ２（Ｎ）＋１に対応することを可能にする。これは、必要な比較の数、及び、二分探索手順において探索される候補エントリのそれぞれの限界を得るためにメモリ・システムからロードされる必要があるデータの量の大幅な低減を表すことができる。したがって、これによって、メモリ内に記憶されている制御テーブルがより良好な性能で検索されることを可能にする検索手順を提供することができ、制御テーブルへのアクセスが高速化し、したがって、制御テーブルからの情報に依拠する動作の実施が高速化する。
【００５８】
二分探索手順において、最後の探索窓絞り込みステップの後に識別される単一の候補エントリは、テーブル検索回路が、問い合わせアドレスに対して二分探索手順を実施する結果として、メモリ・システムから第２の限界アドレス又はサイズを得るためにメモリ・アクセス要求をトリガする、制御テーブルの唯一のエントリであり得る。したがって、単一の候補エントリ以外の制御テーブルの任意のエントリについて、メモリ・システムから第２の限界アドレス又はサイズを得るために、いかなるロードを実行する必要もない。これによって、必要なロードの数が低減し、したがって、性能が改善する。第１の問い合わせアドレスに基づいてテーブルを検索するために二分探索手順を実施している間、第１の問い合わせアドレスとは異なる第２の問い合わせアドレスがテーブル内の対応するエントリを有するかを検索しているさらなる検索の一部分として、メモリから単一の候補エントリ以外の候補エントリの第２の限界アドレス又はサイズを得るために実施されるロードが依然として存在し得ることは除外されないことに留意されたい。テーブルに対する複数の検索は、それぞれ異なる問い合わせアドレスについて並列にハンドリングされ得、この場合、第２の検索は依然として、第１の問い合わせアドレスについての検索において識別される単一の候補エントリ以外の候補エントリの第２の限界アドレス又はサイズを必要とし得る。したがって、最後の探索窓絞り込みステップの後に識別される単一の候補エントリのみに対する第２の限界アドレス又はサイズのロードの制約は、現在の問い合わせアドレスについて二分探索手順を実施する結果としてトリガされたメモリ・アクセス要求のセットにのみ適用され、他の動作が現在の問い合わせアドレスについての二分探索手順と並列に実施される結果としてトリガされ得る、第２の限界アドレス又はサイズを得るためのテーブルの他のエントリへのロードを除外しない。
【００５９】
いくつかの実施態様において、テーブル検索回路と、制御テーブルを含むメモリとの間で、メモリ・システム内のキャッシュがあり得る。テーブル検索回路は、キャッシュに対して要求を行い、キャッシュによって要求が満たされ得ない場合、キャッシュは、応答して、要求されているデータを取り出すために、メモリに対して要求を行うことができる。いくつかの実施例において、キャッシュは、元々要求されていたものよりも多くのデータを要求し得、例えば、キャッシュ・ライン全体を満たすのに十分なデータを要求し得る。したがって、テーブル検索回路が第１の限界アドレスのみについてキャッシュへの要求を実施するとき、キャッシュは、第１の限界アドレスと第２の限界アドレス又はサイズの両方を含むキャッシュ・ラインについて、メモリへの要求を実施することができる。たとえキャッシュが第１の限界アドレスと第２の限界アドレス又はサイズの両方を要求しているとしても、テーブル検索回路は、第１の限界アドレスを受信し、これに対して比較するだけでよく（最後の探索窓絞り込みステップの後に識別される単一の候補エントリを除く）、したがって、使用される電力及び回路複雑度が低減されることが諒解されよう。
【００６０】
問い合わせアドレスが、最後の探索窓絞り込みステップの後に識別される単一の候補エントリの第１の限界アドレス及び第２の限界アドレス又はサイズによって定義される対応するアドレス領域の外部にあるとき、テーブル検索回路は、問い合わせアドレスが制御テーブル内で見つからないと判定し得る。すなわち、制御テーブルは問い合わせアドレスを含むアドレス領域に関係するエントリを一切含まないと判定され得る。問い合わせアドレスが制御テーブル内で見つからないとき、テーブル検索回路は、例外条件をシグナリングすること、及び、処理構成要素によって実施されるべき動作を制御するためのデフォルト情報を返すこと、のうちの少なくとも１つを実施することができる。
【００６１】
各探索窓絞り込みステップにおいて実施される比較は、種々の方法で実施されてもよい。いくつかの実例において、比較は、対応するアドレス領域の下限を表す下限アドレスに対する問い合わせアドレスの比較よりも少なくなり得る。したがって、この場合、第１の限界アドレスは、対応するアドレス領域の開始アドレスを含むことができる。各領域の開始アドレスが比較されるときに、問い合わせアドレスが選択候補エントリの開始アドレス未満であると比較が識別するとき、選択候補エントリの開始アドレス以上である開始アドレスを有する制御テーブルの少なくとも１つのエントリが探索窓から除外されるように、探索窓が絞り込まれ得る。
【００６２】
代替的に、各探索窓絞り込みステップにおける比較は、対応するアドレス領域の上限を識別する終端アドレスを、問い合わせアドレスに対して比較してもよい。この場合、当該比較は、大なり比較であってもよい。この場合、問い合わせアドレスが選択候補エントリの上限アドレス（終端アドレス）よりも大きいとき、現在の探索窓は、選択候補エントリの終端アドレス以下の終端アドレスを有する制御テーブルの少なくとも１つのエントリを、より狭い探索窓から除外するために絞り込むことができる。
【００６３】
選択候補エントリ自体が、所与の探索窓絞り込みステップ後により狭い探索窓の一部分のままであるかを判定するために、異なる選択肢が選択されてもよい。第１の限界アドレスが開始アドレスであり、問い合わせアドレスが開始アドレス以上であると比較が判定するとき、問い合わせアドレスが、選択候補エントリの対応するアドレス領域内にあり得る可能性があり、そのため、選択候補エントリは、その探索窓絞り込みステップ後により狭い探索窓の一部分のままであり得る。同様に、第１の限界アドレスが終端アドレスであり、問い合わせアドレスが終端アドレス以下であると比較が示すとき、ここでも、選択候補エントリは、より狭い探索窓の一部分のままであり得る。
【００６４】
いくつかの実施態様において、所与の探索窓絞り込みステップが比較において、問い合わせアドレスは、選択候補エントリの対応するアドレス領域の外部にある（例えば、問い合わせアドレスが、選択候補エントリの開始アドレスよりも低いか、又は、終端アドレスよりも高いため）と判定するとき、いくつかの実施態様において、選択候補エントリは、所与の探索窓絞り込みステップから生じる、より狭い探索窓から除外され得る。すなわち、選択候補エントリが問い合わせアドレスに対応するエントリではあり得ないことはすでに分かっているため、残りの探索窓絞り込みステップにおいて考慮される必要があるエントリがより少なくなるために、後続の探索窓絞り込みステップが、問い合わせアドレスに対応する特定のエントリをより迅速に識別することができるように、選択候補エントリを狭い探索窓から除外することが所望され得る。
【００６５】
しかしながら、他の実施態様において、問い合わせアドレスが、選択候補エントリの対応するアドレス領域の外部にあることがすでに分かっているとき、選択候補エントリは、それにもかかわらず、より狭い探索窓に含まれたままであり得る。より狭い探索窓内で問い合わせアドレスに対応しないことがすでに分かっている候補エントリを含めることが有用であるとは予測され得ないため、これは直観に反すると考えられ得る。しかしながら、実際には、比較の結果にかかわらず、選択候補エントリをより狭い探索窓内に含めることによって、クリティカル・パス・タイミングが低減したより効率的な回路実装が可能になり得る。例えば、いくつかの実施態様において、現在の探索窓の限界及び選択候補エントリの位置を、それぞれのエントリ識別子を使用して追跡することができる。したがって、選択候補エントリがより狭い探索窓から除外されるべきである場合、次の探索窓絞り込みステップにおいて使用されるべきより狭い探索窓の始まり又は終わりが、選択候補エントリの識別子に１を加算するか、又は、当該識別子から１を減算することによって、選択候補エントリの識別子から計算される必要があり得る。この±１演算は、１を加算又は減算するための追加のハードウェアを必要とし得、クリティカル・タイミング・パス上にあり得る。したがって、いくつかの実施態様において、比較の結果にかかわらず、選択候補エントリが狭い探索窓内に含まれたままである場合、狭い探索窓内に含めるためのエントリをより高速に識別することができる。実際には、絞り込まれた探索窓の異なる候補エントリの比較を実施する後続の探索窓絞り込みステップが後に結局、先行する探索窓絞り込みステップにおいて識別された、選択候補エントリを除外することになり得るため、実際には、これによって、選択候補エントリの選択される事例が除外された場合と比較して、任意の追加の探索窓絞り込みステップが必要になる可能性は低い。したがって、いくつかの実施態様において、選択候補エントリにおいて開始又は終端するようにより狭い探索窓を設定する論理を提供することによって、これは、クリティカル・タイミング・パスがより短い、より効率的な制御論理を可能にすることができる。
【００６６】
所与の探索窓絞り込みステップ内の選択候補エントリは、現在の探索窓の任意のエントリ（場合によっては、探索窓の外側境界線のうちの１つにあるエントリを含む）であってもよい。しかしながら、選択候補エントリが、その探索窓絞り込みステップについて提供されている現在の探索窓の中間点にあるエントリである場合、二分探索手順はより効率的になり得る。中間点は、現在の探索窓内に含まれるエントリの正確な中点にある必要はない。事実、現在の探索窓が偶数のエントリを含むとき、いずれのエントリが選択候補エントリとして選択されるとしても、そのエントリは他端よりも探索窓の一方の端部により近くなるため、正確な中点にあるエントリを選択することは不可能である。テーブル内の所与の数のエントリに必要な探索窓絞り込みステップの総数に関する最大限度は、各探索窓絞り込みステップにおいて、選択候補エントリが、現在の探索窓の中点に可能な限り近い場合に、低減され得る。しかしながら、これは必須ではなく、いくつかの実施態様において、現在の探索窓の中間点にある任意のエントリが使用され得、この結果として、電力及び回路複雑度が低減し得る。
【００６７】
探索窓絞り込みステップにおいて、探索窓が２つの候補エントリのみを含むとき、２つのエントリのうちの一方が選択候補エントリとして選択され、すなわち、選択候補エントリは、探索窓の外側境界線のうちの１つにあることになることに留意されたい。したがって、いくつかの事例において、選択候補エントリは、現在の探索窓が少なくとも３つの候補エントリを含む探索窓絞り込みステップについてのみ、現在の探索窓の中間点にあり得る。
【００６８】
いくつかの実施態様において、装置は、少なくとも１つのエントリを記憶するためのエントリ・ストレージを有することができる。エントリ・ストレージは、メモリ・システムから以前に得られた制御テーブルの少なくとも１つのエントリをキャッシュするためのエントリ・キャッシュ、及び／又は、静的エントリ・パラメータ構成動作によって構成可能な少なくとも１つのさらなるエントリを記憶するための静的レジスタ・ストレージ（さらなる各エントリが、その限界が第１の限界アドレス、並びに、第２の限界アドレス及びサイズのうちの一方によって識別されるアドレス空間内の可変サイズの対応するアドレス領域の制御情報を指定する場合）であってもよい。例えば、制御テーブルがメモリ保護テーブルである場合、エントリ・キャッシュは、上述したＭＰＵキャッシュ・ストレージに対応してもよく、静的レジスタ・ストレージは、上述した静的ＭＰＵレジスタ・ストレージに対応してもよい。したがって、検索回路は、いくつかのエントリへのより高速のアクセスを可能にするために、メモリ・システム内に記憶されている制御テーブルに加えて、ローカルに記憶されているいくつかのエントリにアクセスすることができる。
【００６９】
少なくとも１つの制御テーブル・エントリがエントリ・ストレージ内に記憶される場合、テーブル検索回路は、問い合わせアドレスが、エントリ・ストレージ内に記憶されている少なくとも１つのエントリに対応するかをチェックし、問い合わせアドレスがエントリ・ストレージ内に記憶されている任意のエントリに対応するかに依存して、二分探索手順を実施すべきかを決定することができる。例えば、問い合わせアドレスがエントリ・ストレージ内に記憶されているエントリに対応する場合、二分探索手順は全体的に省略されてもよい。例えば、必要なエントリがエントリ・キャッシュ内にすでにキャッシュされている場合、メモリへの任意のアクセスは実施される必要がない場合があり、そのため、二分探索手順は省略されてもよい。静的レジスタ・ストレージ内のエントリについて、ＭＰＵの実例について上述したように、異なる選択肢が、静的レジスタ・ストレージ内にヒットがある場合に二分探索手順を実施する必要があるかを制御することができる。場合によっては、静的レジスタ・ストレージ内に何らかのヒットがある場合、二分探索手順が実施されるのを抑制することが可能である。代替的に、他の実例は、二分探索手順を実施すべきかを決定するために、静的レジスタ・ストレージ内の一致するエントリ内で指定される特定のパラメータを考慮してもよい（例えば、ＭＰＵの実例を用いて上述したように、メモリ内のテーブルの探索は、一致する静的に構成されたエントリのパラメータが、メモリ・アクセスが許可されないことを示す場合にのみ必要とされ得、静的に構成されたエントリ内に、メモリ・アクセスが許可されていることを示すヒットがあるときに、二分探索手順を省略することができる）。
【００７０】
二分探索手順が実施される場合、いくつかの実施態様において、テーブル検索回路は、二分探索手順の効率を改善するために、エントリ・ストレージ内に記憶されている少なくとも１つのエントリから導出される情報を使用することができる。例えば、たとえ所与の問い合わせアドレスがエントリ・キャッシュ又は静的レジスタ・ストレージのエントリ内で見つからないときであっても、エントリが、それらのローカルに記憶されたエントリに対してヒットする必要がある、いかなる必要な比較にも一致しなかったという事実は、二分探索手順内で実施されるいくつかの比較の結果が、メモリから情報を一切ロードする必要なしにすでに知られていることを可能にする情報を提供することができる。例えば、テーブル検索回路は、エントリ・ストレージ内に記憶されている少なくとも１つのエントリから導出される情報に基づいて、二分探索手順の初期探索窓絞り込みステップのための現在の探索窓を制限することができる。また、二分探索手順の所与の探索ステップにおいて、選択候補エントリの第１の限界アドレスに対する問い合わせアドレスの比較の結果が、エントリ・ストレージ内に記憶されている少なくとも１つのエントリの情報から導出可能であるとき、メモリ・システムから選択候補エントリの第１の限界アドレスを得るためのメモリ・アクセス要求は、抑制することができる。したがって、二分探索手順を誘導するために、ローカルに記憶されたエントリからすでに利用可能な情報を使用することによって、これは、ローカルに記憶されている情報においてすでに暗示され得る情報を得るための不要なメモリ・アクセスを回避することができ、二分探索手順のより高速な実施を可能にする。
【００７１】
例えば、１つの実施態様において、エントリ・ストレージが所与の問い合わせアドレスについて検索しているとき、いずれのエントリ（及び、したがってテーブル内のいずれのインデックス）が問い合わせアドレスを上回る／下回るかを判定するために、エントリ・ストレージ内のすべてのエントリを並行して問い合わせることができる。この点において、第１の探索窓絞り込みステップに使用される初期探索窓の下界は、問い合わせアドレスを下回る、アドレス領域の最も近いエントリのインデックスであり得、初期探索窓の上界は、問い合わせアドレスを上回る、アドレス領域の最も近いエントリのインデックスであり得る。代替的に、二分探索手順がより小さい探索窓（場合によって二分探索を高速化する）によって開始することを可能にするが、１を加算又は減算するために何らかの追加の回路論理を必要とする手法は、初期探索窓の下界を、問い合わせアドレスを下回るアドレス領域の最も近いエントリのインデックスに１を加算した値に設定すること、及び、上界を、問い合わせアドレスを下回るアドレス領域の最も近いエントリのインデックスから１を減算した値に設定することであり得る。
【００７２】
二分探索手順は、各探索窓絞り込みステップが、より狭い探索窓を得るために現在の探索窓を二分割することを可能にするように設計することができる。例えば、所与の探索窓絞り込みステップから生じるより狭い探索窓は、現在の探索窓の上側部分又は下側部分のいずれかであり得、探索窓の上側部分及び下側部分のうちの一方が、選択候補エントリの第１の限界アドレスに対する問い合わせアドレスの比較に基づいて選択される。
【００７３】
二分探索手順は、制御テーブルが２の累乗に対応するエントリ数Ｎを有する事例をハンドリングするように設計することができる。しかしながら、時として、制御テーブルは、正確な２の累乗以外のエントリ数Ｎを有する場合がある。この場合、テーブル検索回路は、Ｎよりも大きい最小の２の累乗に対応する数の候補エントリを含むと仮定される、初期探索窓絞り込みステップのための現在の探索窓を用いて二分探索手順を実施することができる。この場合、特定の探索窓絞り込みステップにおいて、現在の探索窓の選択候補エントリは、制御テーブルのＮ個のエントリの範囲の外部の位置に対応し得る可能性がある。これに当てはまる場合、テーブル検索回路は、メモリ・システムから選択候補エントリの第１の限界アドレスを得るためのメモリ・アクセス要求を抑制し、その特定の探索窓絞り込みステップについて比較が実施される結果として、より狭い探索窓が、制御テーブルのＮ個のエントリの範囲の内部の位置にある少なくとも１つの候補エントリを含むようにする、黙示的な結果を決定することができる。したがって、制御テーブル内のエントリの数が２の累乗でない場合、二分探索手順は、領域テーブルが２番目に大きい２の累乗である場合と同じように実施することができるが、テーブルの有効範囲の外部のエントリに対する比較のために、メモリから値を実際にロードすることなく、黙示的な結果を返すことができる。これによって、選択候補エントリ（例えば、中間点にある）の位置が、現在の窓サイズに対する２による除算を実施することによって決定されることを依然として可能にしながら、制御テーブルが、任意の数のエントリをサポートすることが可能になる。２による除算は、ビット・シフト演算によって実施することができるため、これによって回路複雑度を低減することができる。
【００７４】
上述した二分探索手順は、可変サイズが２の累乗以外のバイト数であることが許容され、並びに／又は、対応するアドレス領域の開始アドレス及び終端アドレスがＸバイトのアドレス境界、ここでＸは対応するアドレス領域のサイズ、に対して不整合であることが許容される制御テーブルに特に有用であり得る。これらの特性のうちの１つを有するテーブルは、単純に、問い合わせアドレスに基づいて必要なエントリにインデックス付けすることが可能でないため、インデックス付けするのが困難であり得る。代わりに、テーブルの複数のエントリを通じて探索し、限界アドレスを比較する探索手順が必要とされる場合がある。上述した技法は、このタイプのテーブルをより高速に探索することを可能にする。
【００７５】
いくつかの実施態様において、第１の限界アドレスは、メモリ・システム内で、対応するアドレス領域の他の限界を定義するために使用される第２の限界アドレス及びサイズのうちの一方を記憶するために使用されるデータ語と同じデータ語内に記憶することができる。「データ語」とは、単一のメモリ・アクセス要求においてメモリから返すことができるデータの一部分のサイズを指す。たとえ第１の限界アドレス及び第２の限界アドレス又はサイズが同じデータ語内に記憶される場合であっても、各探索窓絞り込みステップにおいてチェックされる各選択候補エントリの第２の限界アドレス又はサイズを返す必要性を回避するために、上述した二分探索手順を使用することは依然として有用であり得る。これは、二分探索手順の各探索窓絞り込みステップにおいて第１の限界アドレスのみを必要とすることにより、これによって、その後、他のメモリ・アクセスのために再使用することができる、メモリ・システム内のバッファ内の空間を確保することができ、又は、メモリ・アクセス要求に使用されていないバス上のワイヤを確保することができるために、より効率的なメモリ帯域幅使用を可能にすることができる、データのより狭い標的部分を指定するメモリ・アクセス要求を使用することができ、メモリ・システムの全体的な効率が改善するためである。探索窓絞り込みステップにおいて第１の限界アドレスに対する比較のみを必要とすることによって、必要な比較回路の量も低減し、消費されるエネルギーの量を低減することができる。
【００７６】
しかしながら、本技法は、制御テーブルの所与のエントリについて、第１の限界アドレスがメモリ・システム内で、所与のエントリの第２の限界アドレス又はサイズを記憶するために使用されるデータ語とは異なる語内に記憶される実例において特に有用である。いくつかのシステムにおいて、データ語のサイズは、第１の限界アドレス及び第２の限界アドレスのサイズと同程度であり得、そのため、第１の限界アドレス及び第２の限界アドレス又はサイズを同じデータ語内に記憶することは実際的でない場合がある。この場合、第１の限界アドレスと第２の限界アドレス又はサイズの両方が、各探索窓絞り込みステップにおいて得られる必要があるとすると、これによって、各探索窓絞り込みステップのために２つの別個のメモリ・アクセス要求が必要とされることになり、メモリ帯域幅に対する圧力が増大することになる。対照的に、上述した二分探索手順を使用することによって、各選択候補エントリの第２の限界アドレス又はサイズにアクセスするためのメモリ要求を回避することができ、第２の限界アドレス又はサイズがメモリからロードされる必要がある唯一のエントリが、最後の窓絞り込みステップをもたらす単一の候補エントリである。
【００７７】
上述した技法は、上述したような第１の限界アドレス及び第２の限界アドレス又はサイズによって定義される可変サイズのアドレス領域をサポートする任意のタイプの制御テーブルに使用することができるが、これは、各エントリが、アドレス空間の対応するアドレス領域についてのアクセス許可を指定するメモリ保護テーブルに特に有用であり得、制御テーブル内の情報に基づいて実施される動作は、問い合わせアドレスを指定するメモリ・アクセス要求が、問い合わせアドレスを含む領域の対応するエントリ内でアクセス許可を満たすかをチェックすることを含む。そのようなメモリ保護テーブルは、頻繁に（例えば、必要なエントリがローカル・ストレージ回路内にすでに記憶されているのではない場合、メモリ・アクセスが要求される度に）アクセスされる必要があり得、そのため、メモリからメモリ保護テーブルにアクセスするための検索手順の効率を改善することによって、メモリ保護テーブルを使用する処理システムの全体的な処理性能に大きく影響を与えることができる。
【００７８】
ここでも、上述したＭＰＵの実例と同様に、場合によっては、システムはハードウェア論理を使用して実施されてもよい。しかしながら、命令を実行するための命令実行環境を提供するために、ホスト・データ処理装置を制御するためのシミュレータ・コンピュータ・プログラム内でそのような二分探索手順を実施することも可能であり、ここで、処理プログラム論理及びテーブル検索プログラム論理は、上述した処理構成要素及びテーブル検索回路と同じ機能を提供する。記憶媒体が、シミュレータ・コンピュータ・プログラムを記憶することができる。記憶媒体は、非一時的記憶媒体であってもよい。
【００７９】
特定のＭＰＵの実例
図１は、命令に応答してデータ処理を実施するための処理回路４を有するデータ処理システム２を概略的に示す。例えば、処理回路４は、ＣＰＵ、ＤＳＰ、ＧＰＵ又はデータ処理システムの他の処理要素であってもよい。処理回路４は、処理回路によって処理するための、メモリ・システム１０からの命令をフェッチするための命令フェッチ・ユニット５と、復号された命令に応答してデータ処理動作を実施するように実行ユニット６、８を制御するための制御信号を生成するためにフェッチされた命令を復号するための命令復号器７とを含むことができる。例えば、実行ユニットは、レジスタに書き戻すことができる結果値を生成するためにレジスタ１２、１４からフェッチされるオペランドに対して算術又は論理演算を実施するための算術／論理ユニット（ＡＬＵ）６を含むことができる。実行ユニットはまた、レジスタ１２、１４及びメモリ・システム１０の間でデータを転送するためのロード／ストア動作を実施するためのロード／ストア・ユニット８をも含んでもよい。レジスタは、処理回路４によって処理するための整数値を記憶するための汎用（整数）レジスタ１２、及び、浮動小数点表現を使用して表現される値を記憶するための浮動小数点レジスタ１４を含む、複数の異なるタイプのレジスタを含んでもよい。処理回路４にとってアクセス可能なレジスタはまた、例えば、複数の独立したデータ要素を含むベクトル・オペランドを記憶するためのベクトル・レジスタ、並びに／又は、条件付き演算を実施すべきかを決定するために条件付き命令によってチェックすることができる条件フラグ、現在の実行箇所を表すアドレスを記憶するプログラム・カウンタ、及び、例外ハンドリングを制御するための制御レジスタのような、処理回路４の動作を制御するための様々な制御パラメータを記憶するための制御レジスタのような、簡潔にするために図１には示されていない他のタイプのレジスタをも含んでもよい。
【００８０】
メモリ・システム１０は、１つ又は複数のレベルのキャッシュ及びメイン・メモリを含むことができる。メモリ・システム１０は、ロード／ストア・ユニット８が、メモリ・システム１０からレジスタ１２、１４にデータをロードするためのメモリ・アクセス要求を発行するのをトリガするロード命令、又は、ロード／ストア・ユニット８が、レジスタ１２、１４からメモリ・システム１０にデータを記憶するためのメモリ・アクセス要求を発行するのをトリガするストア命令を実行することによって、処理回路４によってアクセス可能である。また、命令フェッチ・ユニット５は、メモリ・システム１０から命令をフェッチするためのメモリ・アクセス要求を発行する。各メモリ・アクセス要求は、アクセスされるべき位置の標的アドレスを指定することができる。この実例において、標的アドレスは、アクセスされるべき位置を直接的に指定する物理アドレスであり、そのため、アドレス変換は必要ない。
【００８１】
メモリ保護ユニット（ＭＰＵ）２０が、標的アドレスに基づいて、メモリ・システム１０によってメモリ・アクセス要求がサービスされることを許可されるかをチェックするために設けられる。処理回路４が所与のアドレス領域にアクセスすることを可能にされるかを制御するためのアクセス許可は、２つの方法で定義することができる。各々が対応するアドレス領域に対するアクセス許可を定義する複数のエントリを含むメモリ保護テーブル２２が、メモリ・システム内に記憶され得る。ＭＰＵ２０は、ＭＰＵテーブル２２から情報を得るために、メモリ・システム１０へのメモリ・アクセス要求を開始するためのＭＰＵメモリ・アクセス回路２４を有する。ＭＰＵメモリ・アクセス回路２４は、ＭＰＵテーブル２２が、処理回路４から受信されるメモリ・アクセス要求によって指定される標的アドレスを含むアドレス領域のエントリを含むかを識別するために必要とされる比較を実施するためのテーブル検索回路２６を有する。メモリ・システム１０は、２つ以上のＭＰＵテーブルを記憶することができ、各テーブル２２は、それぞれのソフトウェア・プロセスと関連付けられる。いずれの特定のＭＰＵテーブルがＭＰＵメモリ・アクセス回路２４を使用してアクセスされるべきかを識別するアクティブ・テーブル識別子が、アクティブ・テーブル識別子レジスタ（又はレジスタのグループ）２８内に記憶される。例えば、アクティブ・テーブル識別子レジスタ２８は、現在アクティブなＭＰＵテーブルのベース・アドレス３０を指定することができ、また任意選択的に、アクティブなテーブルのサイズを指定することもできる。メモリ・システム１０からＭＰＵテーブルの選択されたエントリをキャッシュするためのＭＰＵキャッシュ・ストレージ３２がＭＰＵ内に設けられ、結果、同じエントリが再び必要とされる場合、当該エントリにより高速にアクセスすることができる。例えば、ＭＰＵキャッシュ・ストレージは、メモリ・システム１０内のＭＰＵテーブル２２の補助記憶装置と比較して低減したアクセス待ち時間でＭＰＵテーブルのエントリをローカルに記憶するためのレジスタのセットを含むことができる。
【００８２】
メモリ・システム１０へのアクセスを制御するためのアクセス許可を提供するための別の方法は、静的ＭＰＵレジスタ・ストレージ３６内で、静的に構成されたメモリ保護エントリを定義することであり得る。処理回路４は、静的ＭＰＵレジスタ・ストレージにアクセスするように特に意図された専用タイプの命令のような、静的ＭＰＵレジスタ・ストレージ３６の内容を構成するための命令をサポートすることができ、又は、静的ＭＰＵレジスタ・ストレージ３６向けに提供されるメモリ・マッピング・レジスタにマッピングされているアドレスを標的アドレスとして指定する、ロード／ストア・ユニット８によって実施される、より一般的なストア動作を使用してもよい。一般的に、ＭＰＵパラメータ再構成動作（例えば、これらのメモリ・マッピング・ロード／ストア動作のうちの１つ又は専用タイプの再構成命令）が、所与のアドレス領域に対応する所与のメモリ保護エントリを定義するために静的ＭＰＵレジスタ・ストレージ３６の内容をデータ投入するために実行されると、静的レジスタ・ストレージ３６内に記憶されている情報の損失を引き起こすリセット又は電源停止事象がないとき、その所与のメモリ保護エントリは、別のＭＰＵパラメータ再構成動作がそのエントリの内容を変更するまで、静的ＭＰＵストレージ３６内に留まる。これは、たとえ所与のアドレス領域の実際のパラメータ・セットを変化させるＭＰＵパラメータ再構成動作がなかったとしても、ＭＰＵキャッシュ・ストレージ３２の内容が、キャッシュ交換ポリシに従って経時的に変化し得る、ＭＰＵキャッシュ・ストレージ３２とは異なる。例えば、ＭＰＵキャッシュ・ストレージ３２は、メモリ・システム１０内のメモリ保護テーブル２２のより最近にアクセスされたエントリのために空間が作成される必要があるとき、将来において最も有用性が低いと予測されるエントリを排除するために、最長時間未使用又は同様の交換ポリシを使用するキャッシュ・コントローラと関連付けることができる。
【００８３】
図１は、ＭＰＵキャッシュ・ストレージ３２とは別個のものである静的ＭＰＵレジスタ・ストレージ３６を示しているが、他の実例において、これらは、共通のストレージ構造のそれぞれの部分であってもよい。例えば、共通のストレージ構造のいくつかのエントリが、それらがキャッシュ交換ポリシを通じて排除されるべきではない静的エントリであると考えられるべきであることを示すためのフラグによってマークされてもよい。しかしながら、実際には、別個のストレージ構造３２、３６を提供することによって、キャッシュ・ストレージ３２へのより効率的なインデックス付けを可能にすることができる。
【００８４】
ＭＰＵは、メモリ・システム１０内に記憶されている（若しくはＭＰＵキャッシュ・ストレージ３２内にキャッシュされている）メモリ保護テーブル２２の検索エントリ、又は、静的ＭＰＵレジスタ・ストレージ３６内で指定される、静的に構成されたＭＰＵエントリのいずれかにおいて指定されるアクセス許可データを読み出し、処理回路４によって発行されるメモリ・アクセス要求の特性が、メモリ・アクセス要求の標的アドレスに基づいて選択されるエントリに対するアクセス許可によって指定される要件を満たすかを判定するための、許可チェック回路４０を備える。例えば、アクセス許可は、領域が、読み出し専用領域（処理回路４によって実行されるストア命令によってトリガされる一切の書き込み要求が拒絶されるべきである）であるべきか、又は、読み出しと書き込みの両方を許可されるかを指定することができる。アクセス許可はまた、フェッチ・ユニット５が対応するアドレス領域から命令をフェッチすることを許可されるかを指定することもできる。アクセス許可はまた、対応するアドレス領域へのアクセスを処理回路４の特定の例外レベル又は特権レベルまで制約することもでき、許可チェック回路４０は、メモリ・アクセス要求と関連付けられる現在の例外レベル又は特権レベルが、アクセス許可において定義される制約を満たすかをチェックすることができる。
【００８５】
メモリ・システム１０内のメモリ保護テーブル２２及び静的ＭＰＵレジスタ・ストレージ３６は、許可チェック回路４０がメモリ・アクセスを許可するかに影響を与える制御情報の唯一のソースではない場合がある。例えば、装置２はまた、アドレス空間内の安全領域及び非安全領域を定義するメモリ・セキュリティ構成レジスタ４４を備えるセキュリティ属性ユニット（ＳＡＵ）４２をも含むことができる。メモリ・アクセス要求の標的アドレスは、セキュリティ・チェック回路４６によって、レジスタ４４内の領域定義データに対してチェックされ、処理回路４は、安全動作モードにおいて動作しているときにのみ安全領域にアクセスするように制約される（非安全領域は、安全モード又は非安全モードのいずれにおいてもアクセス可能である）。したがって、メモリ・セキュリティ構成レジスタ４４は、ＭＰＵテーブル又は静的ＭＰＵレジスタ・ストレージ３６の許可に直交する許可を適用することができる、メモリへのアクセスを制御するための制御データ構造の別の実例を表すことができる。すなわち、ＭＰＵによって許可されるアクセスが、それにもかかわらず、ＳＡＵ４２によって拒絶される場合があり、又は逆もあり得る。処理回路のフェッチ・ユニット５又はロード／ストア・ユニット８によって開始されるメモリ・アクセス要求と、メモリ・システム１０内のメモリ保護テーブル２２にアクセスするためにＭＰＵメモリ・アクセス回路２４によって発行される任意のＭＰＵメモリ・アクセス要求の両方が、ＳＡＵ４２によるセキュリティ・チェックを受け得る。図１の実例において、いずれのメモリ領域が安全又は非安全と考えられるかの定義は、メモリ・セキュリティ構成レジスタ４４の内容によってのみ定義されるが、他の実例において、ＭＰＵテーブル２２と同様のメモリ・セキュリティ・テーブルが、アドレス領域を安全又は非安全として定義するエントリのさらなる定義を提供するために、メモリ・システム１０内で維持され得る。これは、より多数の同時に定義される領域へのサポートを可能にする。ＭＰＵ２０及びＳＡＵ４２は、図１において逐次動作するように示されているが、いくつかの実施態様は、性能を改善するために、処理回路によって発行されるメモリ・アクセスに関する、ＭＰＵ及びＳＡＵへの並列検索を可能にすることができる。
【００８６】
図２は、メモリ・システム１０内に記憶されるメモリ保護テーブル２２の実例を示す。メモリ保護テーブルは、複数のエントリ５０を含む。この実例において、各メモリ保護エントリ５０は、メモリ・アドレス空間の２つの隣接するデータ語５２内に記憶されるデータを含む。第１のデータ語ＲＢＡＲｉが、対応するアドレス領域のベース・アドレス（開始アドレス）５４を提供し、一方、対応するアドレス領域の終端アドレス（ＬＩＭＩＴ）５６は、エントリ５０の第２のデータ語ＲＬＡＲｉにおいて定義される。この実例において、アクセス許可（ＡＰ）５８は、エントリのＲＬＡＲデータ語において指定され、一方、エントリが有効なアドレス領域を定義するか又は無効なアドレス領域を定義するかを示す有効化フラグ６０はＲＢＡＲデータ語内にあるが、この情報５８、６０はまた、他のデータ語に切り替えられてもよく、又は、同じデータ語内で表されてもよい。また、エントリ５０の各データ語５２は、任意選択的に、図２に示されていない他の情報を含んでもよい。図２は、各アドレス領域の開始アドレス５４及び終端アドレス５６がメモリ内の別個のデータ語内で表されている実例を示しているが、これは必須ではなく、いくつかの実施態様において、これらは単一のデータ語内に収まってもよく、その場合、エントリあたり複数のデータ語を提供することは必要ないことであり得る。また、図２は、開始アドレス５４及び終端アドレス５６を使用して可変サイズのアドレス領域を表しているが、他の実例において、これらの限界アドレスのうちの一方は、他の限界アドレスに対する対応するアドレス領域のサイズを定義するサイズ・パラメータによって表されてもよい。アクティブ・テーブルＩＤレジスタ２８は、メモリ保護テーブルのベース・アドレス３０を識別し、任意選択的に、メモリ保護テーブル内のエントリの総数を識別するサイズ・パラメータ６２を識別してもよい。図２では、エントリ５０のデータ語５２は隣接しているが、これは必須ではなく、いくつかの実施態様において、すべてのＲＢＡＲｉデータ語が、テーブルの１つの部分内にともにクラスタ化されてもよく、ＲＬＡＲｉデータ語は、テーブルの別の部分内にともにクラスタ化される。
【００８７】
メモリ保護テーブル２２のエントリ５０は、処理回路４のロード／ストア・ユニット８又は命令フェッチ・ユニット５によって発行される通常のメモリ・アクセスのアドレスに使用される同じアドレス空間６４内のアドレスに割り当てられる。メモリ保護エントリ５０は、アドレス空間内で、それらの開始アドレス５４によって順序付けされる（また、メモリ保護テーブル２２内のメモリ保護エントリによって定義されるアドレス領域は重なり合うことを許容され得ないため、それらの終端アドレス５６によっても順序付けされる）。したがって、エントリ０は、最低の開始アドレスを有するアドレス領域に対応するエントリになり、エントリ１は、次に低い開始アドレスを有するアドレスに対応することになり、以下同様である。図２は、アドレス空間６４内で、エントリがアクセス許可を定義する対応するアドレス領域の位置ではなく、テーブルの各メモリ保護エントリ５０が記憶されるアドレスの位置を示していることに留意されたい。図２に示す各エントリ５０の特定のフォーマットは１つの実例に過ぎず、同じ情報を表すために他のフォーマットが使用されてもよいことが諒解されよう。
【００８８】
図３は、複数のキャッシュ・エントリ３４を含むＭＰＵキャッシュ・ストレージ３２の実例を示し、各キャッシュ・エントリ３４は、メモリ保護テーブル２２からメモリ保護エントリ５０のうちの１つをキャッシュするためのものである。図３に示すように、対応するメモリ保護エントリ５０のパラメータに加えて、キャッシュ・エントリ３４はまた、キャッシュ・エントリ３４の内容が有効であるかを示す有効ビット７０、及び、そのキャッシュ・エントリ３４内にキャッシュされているメモリ保護エントリ５０が抽出された特定のメモリ保護テーブル２２を識別するテーブル識別子７２（これは、キャッシュされたメモリ保護エントリがキャッシュ３２に配分された時点におけるアクティブ・テーブルＩＤレジスタ２８の現在の値に対応し得る）をも指定することができる。複数のキャッシュ・エントリ３４が同じテーブル識別子７２を有することになる可能性が高いため、いくつかの実施態様は、ＭＰＵキャッシュ・ストレージ３２内で別個のテーブル識別子テーブル内に固有のテーブル識別子７２のみを記憶することによって、必要なストレージを低減することを選択することができる。そのような実施態様において、各キャッシュ・エントリ３４は、テーブル識別子テーブル内の全テーブル識別子に対するインデックスを記憶することができる。また、各キャッシュ・エントリ３４は、その特定のキャッシュ・エントリ３４がキャッシュされたメモリ保護エントリ５０が抽出された元である、対応するメモリ保護テーブル２２内の位置を識別するエントリ識別子７４を指定することができる。例えば、図２に示す実例において、エントリＩＤ１がテーブルから抽出され、キャッシュ内に配置される場合、エントリＩＤフィールド７４は、１の値を指定することができる。エントリＩＤフィールド７４は、メモリ保護テーブルのいずれのエントリＩＤに所与のアドレスがマッピングされるかをチェックするために、処理回路４によって実行される命令をハンドリングするのに有用であり得る。各キャッシュ・エントリ３４内にエントリＩＤの指示を含めることは、命令によって指定されるアドレスがキャッシュ・ストレージ３２内のキャッシュされているメモリ保護エントリによって定義される領域の１つに一致する場合、そのエントリのエントリＩＤ７４が、メモリへのアクセスから決定されることを必要とするのではなく、単純に、キャッシュから読み出され得ることを意味する。
【００８９】
テーブルＩＤ７２は、キャッシュ内の検索に資格付与するために使用される。キャッシュが所与のアドレスに対応するメモリ保護エントリを含むかを判定するために検索されるとき、テーブルＩＤフィールド７２がアクティブ・テーブルＩＤレジスタ２８内に記憶されているアクティブなＩＤに一致するキャッシュ・エントリ３４のみがヒットを生成することができる。アクティブ・テーブルＩＤとは異なるテーブルＩＤを含むキャッシュ・エントリ３４は、たとえキャッシュに供給される問い合わせアドレスが、対応するメモリ保護エントリ５０についてキャッシュされているパラメータ内のベース・アドレスと限界アドレスとの間にある場合であっても、失敗を生成する。
【００９０】
キャッシュ・エントリ３４は、メモリ保護テーブル２２内でメモリ内に記憶される各メモリ保護エントリ５０内に提供される有効化フラグ６０のための空間を有する必要はないことに留意されたい。これは、キャッシュ３２が、無効なメモリ保護エントリをキャッシュするのを禁止され得るためである。ＭＰＵキャッシュ・ストレージ３２内にキャッシュされているすべてのメモリ保護エントリが有効化されたエントリであり得るとき、有効化フラグ６０は、キャッシュ・エントリ３４内で冗長になる。無効化されたエントリをキャッシュすることを禁止することは、処理回路を実行するソフトウェアが、後にアクティブ化され得る領域を定義するＭＰＵテーブル２２内の無効なメモリ保護エントリを含むことができ、その後、それらの領域がアクティブ化される必要があり、結果、アドレス・アクセスがその後許可されるようになるとき、これは、単純に、ＭＰＵキャッシュ・ストレージ３２からの任意のキャッシュ無効化をトリガする必要なしに、メモリ保護テーブル２２の対応するメモリ保護エントリ内で有効化フラグ６０を設定することによって行うことができる。
【００９１】
ＭＰＵキャッシュ・ストレージ３２からのキャッシュ指示は、処理回路４がＭＰＵキャッシュ無効化コマンドを実行することによってトリガすることができる。ＭＰＵキャッシュ無効化コマンドの変形例は、すべてのキャッシュされているエントリ、又は、アドレス若しくはアドレス範囲、テーブルＩＤ又はエントリＩＤのうちのいずれか１つ又は複数によって指定される条件を満たすエントリの無効化をトリガすることができる。
【００９２】
図４は、静的ＭＰＵレジスタ・ストレージ３６及びＭＰＵ２０内に設けられる様々な制御レジスタ８０の実例を示す。
【００９３】
静的ＭＰＵレジスタ・ストレージ３６について、図４は、静的ＭＰＵエントリ毎に提供される３つのレジスタから成るセットを示す。すなわち、ＭＰＵレジスタ・ストレージ内でハードウェアにおいてサポートされる各静的ＭＰＵエントリについて、３つのレジスタ８２、８４、８６の別個のインスタンスが提供され得る。レジスタ８６は任意選択である。レジスタ８２及び８４はともに、対応する静的ＭＰＵエントリを表し、メモリ保護テーブル２２の所与のメモリ保護エントリ５０と同様の内容を有する。したがって、レジスタ８２、８４は、ベース・アドレス（開始アドレス）５４及び限界アドレス（終端アドレス）又はサイズ５６、アクセス許可５８、並びに、エントリが有効である（メモリ・アクセス要求の許可をチェックするために使用されることが可能である）か、又は、無効である（結果、このエントリの内容に基づいてメモリ・アクセス要求は検証することができないが、無効化されるとき、レジスタ８２、８４、８６の残りのパラメータは後に再構成されるまで保持されるべきである）かを制御する有効化フラグ６０を指定することができる。レジスタ８２、８４の特定のフォーマットは１つの実例に過ぎず、同じ情報が、異なるフィールドを通じて再配列又は表現されてもよいことが諒解されよう。また、レジスタ８２、８４は、図４に示されていない他の情報を記憶してもよい。また、場合によっては、静的に構成されたＭＰＵエントリの内容は、単一のレジスタによって表されてもよい。
【００９４】
したがって、静的ＭＰＵエントリが処理回路４によって送信されるアクセス要求の標的アドレスに一致するアドレス領域を定義し、エントリが有効であるとき、その一致する静的ＭＰＵエントリ内で定義されるアクセス許可５８は、アクセスが許可されるかを検証するために使用することができる。この場合、アクセス要求を検証するためにメモリ・システム１０にアクセスすることは必要ないことであり得る。
【００９５】
レジスタ８２、８４によって表される、対応する静的ＭＰＵエントリと関連付けられる追加のメタデータ・レジスタ８６は任意選択であるが、提供される場合、より効率的な性能を可能にすることができる。メタデータ・レジスタ８６は、１に設定される場合に、対応する静的ＭＰＵエントリと関連付けられるレジスタ８２、８４が、静的ＭＰＵエントリを記憶するために現在使用されていないことを示す、無効・未知レジスタ（ＲＤＵ：ｒｅｇｉｓｔｅｒ  ｄｉｓａｂｌｅｄ  ａｎｄ  ｕｎｋｎｏｗｎ）フィールド８８を指定する。ＲＤＵフィールド８８が１に設定される場合、これは、レジスタ８２、８４を、メモリ・システム１０内に記憶されているＭＰＵテーブル２２から対応するメモリ保護エントリの内容をキャッシュするための、ＭＰＵキャッシュ・ストレージ３２の拡張として使用することができることを示す。これは、ソフトウェアが、ハードウェア内でサポートされる全数の静的ＭＰＵエントリを必要としないときに、ＭＰＵキャッシュ・ストレージ３２の容量を実効的に増大させることによって、より良好な性能を可能にすることができる。メタデータ・レジスタ８６の残りの部分は、そうでなければ静的レジスタ内に提供されないことになる、キャッシュ・ストレージ３２内の各キャッシュ・エントリ３４に対して提供される追加のキャッシュ・フィールド７０、７２、７４を指定することができる。静的レジスタ内の特定のエントリがＲＤＵフラグ８８を使用して未知に設定されるとき、これは、エントリが、有効化フラグ６０を使用して無効であると設定されることとは異なることに留意されたい。エントリが無効化されるが、未知であるとしてマークされないとき、レジスタ８２及び８４の内容は保持され、これらのレジスタは、キャッシュ・ストレージとして使用することはできない。例えば、ソフトウェアは、アドレス空間のその領域へのメモリ・アクセスを、そのエントリを使用して検証することができないように、特定の静的エントリを一時的に無効化し、ただし、静的ＭＰＵレジスタを（有効化フラグ６０を設定する以外に）再プログラムする必要なしに、その領域を再び有効化することができるように、それらのレジスタ８２、８４内のパラメータを維持することを所望する場合がある。静的領域がＲＤＵフラグ８８を使用して未知に設定されるとき、キャッシュは、上述したように無効なメモリ保護エントリをキャッシュすることを禁止され得るため、有効化フラグ６０は、未知として設定された静的領域内でキャッシュされたエントリには必要とされない場合がある。したがって、いくつかの実施態様は、別個の有効化フラグ６０及び有効フラグ７０の代わりに、単一の共有される有効／有効化フラグを有することを選択することができる。
【００９６】
制御レジスタ８０は、静的ＭＰＵエントリの内容をプログラムするために使用される領域プログラミング・レジスタ９０を含む。制御レジスタ８０の各々は、その特定のレジスタにマッピングされているメモリ・アドレスを標的アドレスとして指定するロード／ストア動作を実施することによってアクセスすることができるメモリ・マッピング・レジスタである。提供される静的ＭＰＵエントリのセットの各個々のエントリに（例えば、ハードウェアにおいて提供される８又は１６セットの静的ＭＰＵエントリ・ストレージの各々について）別個にアドレスを割り当てる必要を回避するために、静的ＭＰＵレジスタ・ストレージ内でサポートされるエントリの各々の第１の静的ＭＰＵレジスタ８２のそれぞれのバージョンは、同じメモリ・マッピング・アドレスを共有することができる（また、アドレス共有レジスタ８４についても同様）。レジスタ８２又は８４のいずれの特定のバージョンが書き込まれるべきかを選択するために、ソフトウェアは最初に、領域プログラミング・レジスタ９０に、書き込まれるべき特定の静的ＭＰＵエントリの１つに対応する領域識別子９２を書き込むことができ、その後、後続のＭＰＵ再構成動作（レジスタ８２及び８４にマッピングされるアドレスを標的アドレスとして指定するストア命令）を実行することができ、プログラミング・レジスタ９０内にすでに配置されている領域数９２が、いずれの静的ＭＰＵエントリが更新されるべきものであるかを指定することができる。プログラミング・レジスタ９０はまた、領域識別子９２がプログラミング・レジスタ９０内で指定される領域が、メタデータ・レジスタ８６のＲＤＵフィールド８８を通じて、無効であり未知であるとして設定されるべきであるかを指定するＲＤＵフィールド９４をも含むことができる。ここでも、ＲＤＵフィールドを設定するために静的ＭＰＵレジスタ・エントリのセットの間で共有されるプログラミング・レジスタ９０を使用することは、各メタデータ・レジスタ８６に対して別個のメモリ・マッピング・アドレスを提供する必要がないことを意味する。
【００９７】
図４に示すように、制御レジスタはまた、この実例においてはアクティブなテーブルのベース・アドレス３０をアクティブ・テーブル識別子として指定する、アクティブ・テーブルＩＤレジスタ２８をも含む。アクティブなテーブルのサイズは、さらなる制御レジスタ９６内で指定される別個のサイズ・パラメータ６２において指定される。図４においてドットでマークされているレジスタの残りのフィールドは、他の情報を記憶するために使用されてもよい。この実例において、テーブルのベース・レジスタ３０を含むレジスタ２８はまた、空のアクティブ・テーブル・サイズ・フィールド９８をも含む。図４の実例において、アクティブＭＰＵテーブル２２のベース・アドレス３０及びサイズ６２は異なるレジスタ内に記憶されるため、これは、それぞれベース・アドレス及びサイズを設定するために、異なるＭＰＵパラメータ構成動作が必要とされ得ることを意味し得る。したがって、ベース・アドレスとサイズの両方が変更される必要がある場合、ベース・アドレス及びサイズのうちの一方の変更と、他方の変更との間の期間があり得、その間、制御レジスタ８０内のアクティブなテーブルを定義するパラメータは、実効的に、メモリ保護エントリ５０によってプログラムされていないデータ語を含み得るアドレス空間の領域を定義する。これには、メモリ・アクセス動作が、メモリ保護エントリを定義するようには意図されていないデータに対してチェックされるという危険性があり得、場合によってはメモリ保護テーブルによって実施されるセキュリティ・チェックを破綻させる中間結果をもたらす可能性がある。ＭＰＵキャッシュ・ストレージ３２のいくつかの実施態様は、メモリ保護テーブル２２からのエントリのプリフェッチを可能にすることができる。そのようなプリフェッチは、任意の時点において発生し得、処理回路４によって実行される命令によって直接的にトリガされ得ないため、メモリ保護テーブル２２の外部の無効なエントリがキャッシュされないことを保証することは困難であり得る。この問題は、ベース・アドレス３０を含むレジスタ２８内に空のアクティブ・テーブル・サイズ・フィールド（ＣＬＲＡＴＳＩＺＥ）９８を提供することによって対処することができる。アクティブ・テーブルＩＤレジスタ２８を再構成するとき、そのレジスタ内に配置されることになる新たなデータが、１に等しいＣＬＲＡＴＳＩＺＥフィールド９８を指定する場合、そのレジスタの内容を更新することに加えて、レジスタ９６内のアクティブ・テーブル・サイズ６２も０にクリアされ、これは実効的に、メモリ・システム１０内にアクティブなテーブル２２がないことを示す。これによって、サイズではなくベース・アドレスのみが更新された後に、メモリ保護テーブル２２の一部であると誤って仮定されるデータ語に基づいて、任意のメモリ・アクセス要求が不適切に許可されることが防止される。その後、後続のＭＰＵ再構成動作が、レジスタ９６内のアドレス変換サイズを、新たなアクティブなフィールドの適切な値に更新することができる。他方、レジスタ２８に書き込まれることになる新たな値が、０に設定されたＣＬＲＡＴＳＩＺＥフィールド９８を有する場合、この動作に応答して、ベース・アドレス３０を指定するアクティブ・テーブルＩＤレジスタ２８の内容のみが更新され、この場合、レジスタ９６内のサイズ６２は変更されないままになる。これは、同じサイズの２つのメモリ保護テーブル間で切り替える場合により適切になる。
【００９８】
図５は、メモリ保護テーブル２２の異なるメモリベースのＭＰＵエントリ５０又は静的ＭＰＵレジスタ・ストレージ３６内の静的に構成されたＭＰＵエントリによってカバーされるアドレス空間の一部分を概略的に示す。この例において、アドレス空間は、物理アドレス空間であり、そのため、処理回路４によって発行されるメモリ・アクセス要求は、メモリ・システム内の対応する位置に直接的に対応する物理アドレスを指定し、物理アドレス空間の対応する領域を定義するメモリ保護エントリに対してチェックされる。図５においてマークされている領域１００は、メモリ保護テーブル２２の３つの異なるメモリベースのメモリ保護エントリ５０に対応する。メモリ保護テーブル２２は、アドレス空間の疎らに設定された領域を定義することができ、メモリ保護テーブルの連続するエントリによって定義される対応するアドレス領域の間には間隙があり得ることに留意されたい。
【００９９】
他方、領域１０２は、静的ＭＰＵレジスタ・ストレージ３６によって表される２つのそれぞれの静的ＭＰＵエントリに対応する。したがって、メモリ保護テーブル２２からの所与のメモリベースのＭＰＵエントリを位置特定するためのアクセス待ち時間は、エントリがＭＰＵキャッシュ・ストレージ３２内にあるかに応じて変化し得、処理回路４が、アクセス許可又は所与の静的ＭＰＵエントリによって定義される静的領域の範囲を定義するパラメータを再構成するための命令を実行するまで、静的領域は構成されたままになるため、静的ＭＰＵエントリに対応する静的領域１０２へのアクセスは決定性であり得る。したがって、ソフトウェアは、アクセスが迅速に且つ／又は決定性の待ち時間をもってハンドリングされる必要があり得るアドレス空間の特定の重要な領域を決定することができ、それらのアクセスをハンドリングするために静的ＭＰＵ領域を使用することによって、これはリアル・タイム・アプリケーションにとってより良好になることができる。それと同時に、メモリ内に記憶されているメモリ保護テーブル２２内の可変数のメモリ保護エントリ５０をサポートすることによって、これは、より多数の総メモリ領域が同時に定義されることを可能にし、所与のアドレスの定義されるメモリ保護エントリの欠如によって引き起こされる障害の頻度が低減する。したがって、このハイブリッド手法は、特にリアル・タイム処理を伴うか又は決定性のアクセス待ち時間を必要とするがメモリ容量が制約されているシステムについて、性能とハードウェア・コストとの間のより良好なバランスを提供する。
【０１００】
図５に示すように、メモリ保護テーブル２２のメモリ保護エントリによってカバーされる領域が、静的ＭＰＵエントリに対応する静的に構成されたアドレス領域と重なり合うことが可能である。この場合、当該重複は、種々の方法でハンドリングすることができる。いくつかの実施例において、メモリ・アクセス要求の標的アドレスが静的ＭＰＵレジスタ・ストレージ３６内でヒットする場合、一致した静的ＭＰＵエントリによって定義されるアクセス許可が優先権を得ることができ、ＭＰＵテーブル２２の一致するメモリベースのＭＰＵエントリ内で指定されるいかなる相反する属性にも優先することができる。この場合、静的ＭＰＵレジスタ・ストレージ３６内でヒットすると、いかなるメモリ・アクセス要求も、ＭＰＵメモリ・アクセス回路２４によって開始されなくてもよい。
【０１０１】
代替的に、静的ＭＰＵレジスタ・ストレージ内にヒットがあり、メモリ・アクセス要求がその一致する静的ＭＰＵエントリによって指定されるアクセス許可を満たす場合、メモリ保護テーブル２２がアクセスされないように、ＭＰＵメモリ・アクセスを抑制することができるが、メモリ・アクセス要求が、一致する静的ＭＰＵエントリ内で指定されるアクセス許可を満たすことができない場合、ＭＰＵメモリ・アクセスは依然として、ＭＰＵメモリ・アクセス回路２４によってトリガされ得る。メモリ保護テーブル２２が標的アドレスを含むアドレス領域の一致するＭＰＵエントリを含む場合に、その一致するメモリベースのＭＰＵエントリが、アクセスが実施されることを許可する場合、たとえ同じアドレスの静的ＭＰＵエントリがメモリ・アクセスを許可しなかったとしても、メモリ・アクセスが許容され得る。このように静的ＭＰＵエントリとメモリベースのＭＰＵエントリとの間の重複を可能にすることは、より広範囲のアドレス空間にアクセスすることを可能にし、また、より特権化されたプロセスにとって利用可能なアドレス範囲の制約されたサブセットのみへのより特権性の低いプロセスのアクセスをも可能にすることも可能である、より特権化されたプロセスに対する許可を設定するのに有用であり得る。例えば、静的ＭＰＵエントリによって表される領域１０２−１は、より特権性の高いプロセスへのアクセスを制限し得、そのため、より特権性の低いコードによってアクセスされる部分範囲１００−２は、静的ＭＰＵエントリによって指定されるアクセス許可を満たすことができないが、領域１００−２に関係する、対応するメモリベースのＭＰＵエントリに基づいて実施される許可チェックを通過することができる。これによって、領域１０２−１を、領域１００−２のいずれかの側の領域１０２−１の部分を表す別個のエントリに分割する一切の必要性が回避される。
【０１０２】
図６は、メモリ・アクセスがＭＰＵによって許可されるかをチェックする方法を示す流れ図である。ステップ１２０において、処理回路４が、標的アドレスを指定するメモリ・アクセス要求を発行する。メモリ・アクセス要求は、命令フェッチ回路５によって発行される命令フェッチ要求であってもよく、又は、ロード／ストア・ユニット８によって発行されるデータ・アクセス要求（ロード又はストア動作）であってもよい。ステップ１２２において、ＭＰＵ２０が、標的アドレスが、静的ＭＰＵレジスタ・ストレージ３６内に記憶されている静的ＭＰＵエントリに対してヒットするかを判定する。すなわち、許可チェック回路４０が、標的アドレスが静的ＭＰＵエントリのいずれかの対応するアドレス領域内にあるかを検出する。そうである場合、ステップ１２４において、許可チェック回路は、ヒットした静的ＭＰＵエントリ内で指定されているアクセス許可が満たされるかを判定する。アクセス許可がメモリ・アクセス要求によって満たされる場合、ステップ１２６において、メモリ・アクセス要求がＭＰＵによって許可される。ＳＡＵ４２を備えるシステムにおいて、メモリ・アクセス要求が許可されるかを判定するために、追加のセキュリティ・チェックもまた、ＳＡＵ４２のセキュリティ・チェック回路４６によって実施され得、そのため、たとえステップ１２６においてＭＰＵがメモリ・アクセス要求を許可する場合であっても、要求がＳＡＵ４２によって依然として拒絶され得る可能性がある。しかしながら、ＳＡＵチェックを受けると、メモリ・アクセス要求はＭＰＵ２０によって許可される。
【０１０３】
ステップ１２４において、アクセス許可がメモリ・アクセス要求によって満たされない場合、ＭＰＵが応答し得る方法には代替的な選択肢がある。第１の選択肢において、標的アドレスが静的ＭＰＵエントリに対してヒットするが、その静的ＭＰＵエントリがメモリ・アクセス要求によって満たされないアクセス許可を指定するとき、ステップ１２８において、メモリ・アクセス要求は拒絶され得る。この場合、ＭＰＵは、障害条件又は例外のシグナリングをトリガすることができる。代替的に、第２の選択肢において、方法は、ステップ１２２において標的アドレスが静的ＭＰＵレジスタ・ストレージ内に見つからなかった場合と同じく、ステップ１３０に進むことができる。
【０１０４】
静的ＭＰＵレジスタ・ストレージ３６内のエントリ内に標的アドレスが見つからなかった、又は、ヒットがあったがメモリ・アクセス要求がアクセス許可を満たすことができず、システムが選択肢２を実施する場合、方法はステップ１３０に進み、許可チェック回路４０が、ＭＰＵキャッシュ・ストレージ３２内に標的アドレスの何らかのヒットがあるかを検出する。いくつかのシステムは、いくつかの代替形態において、性能を改善するために、静的ＭＰＵレジスタ・ストレージ３６内でヒット（又は、アクセス許可を満たしたヒット）が見つかった場合にのみ、すなわち、図６に示す連続的なステップ・フローを用いて、ＭＰＵキャッシュ・ストレージ３２を検索し得るが、静的ＭＰＵレジスタ・ストレージが、メモリ・アクセス要求が許可されるべきか又は拒絶されるべきかの判定を決定論的に可能にすることができない場合にキャッシュに対する検索が必要とされる場合、キャッシュ検索がすでに開始されており、キャッシュ応答が早期に利用可能になることが可能になるように、キャッシュは、静的ＭＰＵレジスタ・ストレージと並行して検索されてもよいことに留意されたい。それにもかかわらず、静的ＭＰＵエントリは、たとえ並列に検索される場合であっても、キャッシュＭＰＵエントリよりも高い優先権を得ることができる。
【０１０５】
したがって、ＭＰＵキャッシュ・ストレージ内で有効であり、アクティブ・テーブルＩＤレジスタ２８内のアクティブなテーブルとして現在識別されている同じＭＰＵに対応する、キャッシュされているＭＰＵエントリについて、標的アドレスがヒットする（すなわち、対応するアドレス領域内にある）場合、ステップ１３２において、許可チェック回路は、ＭＰＵキャッシュ・ストレージのヒットしたエントリ内で指定されているアクセス許可が満たされるかを判定する。そうである場合、再びステップ１２６において、必要とされ得る任意のＳＡＵチェックを受けて、メモリ・アクセス要求が許可される。ステップ１３２においてＭＰＵキャッシュ・ストレージ３２のヒットしたエントリ内で指定されるアクセス許可が満たされない場合、ステップ１３４においてメモリ・アクセス要求は拒絶され、障害がシグナリングされ得る。
【０１０６】
ステップ１３０において、ＭＰＵキャッシュ・ストレージ３２のエントリのすべてにおいて、標的アドレスが見つからないと判定された（すなわち、アクティブ・テーブルＩＤと同じテーブルＩＤを指定するキャッシュされたエントリがない）場合、ステップ１３６において、テーブル検索回路２６が、標的アドレスに基づいてメモリベースのＭＰＵテーブル２２を検索するための１つ又は複数のＭＰＵメモリ・アクセス要求を開始するように、ＭＰＵメモリ・アクセス回路２４をトリガする。検索プロセスは、下記の図７に関してより詳細に論じる。検索中にＭＰＵメモリ・アクセス回路によってトリガされるＭＰＵメモリ・アクセス要求は、デフォルトのアクセス許可のセットに対して検証され得、及び／又は、ＳＡＵ４２によってメモリ・セキュリティ構成レジスタ４４において定義されるセキュリティ領域に対してチェックされ得る。したがって、ＭＰＵテーブル検索の一部として開始されるＭＰＵメモリ・アクセス要求について、それらのメモリ・アクセスを、静的ＭＰＵレジスタ・ストレージ３６又はメモリ保護テーブル２２に対してチェックする必要はない。テーブル検索プロセスに基づいて、ステップ１３８において、テーブル検索回路２６は、メモリベースのメモリ保護テーブル２２内にヒットがあったかを判定する。そうである場合、再び１３２において、メモリ検出テーブルにおいてヒットしたエントリ内で指定されるアクセス許可が満たされるかが判定され、アクセス許可が満たされるかに応じて、方法はステップ１２６又はステップ１３４に進み、メモリ・アクセスが適切であるとして許可又は拒絶される。メモリ検出テーブル２２のヒットしたエントリ内のアクセス許可をチェックするのに加えて、ＭＰＵキャッシュ・ストア３２と関連付けられるキャッシュ・コントローラがまた、メモリ検出テーブル２２のヒットしたエントリをキャッシュに配分することもできる。メモリ保護テーブル２２内の以前にキャッシュされたエントリを排除する必要がある場合、犠牲となるエントリが、例えば、最長時間未使用のようなキャッシュ交換ポリシによって選択され得る。
【０１０７】
他方、ステップ１３８において、テーブル検索回路２６が、メモリベースのＭＰＵテーブル２２内で標的アドレスが見つからないと判定する場合、標的アドレスに対応するアドレス領域は現在、メモリ保護テーブル内で定義されておらず、そのため、失敗がシグナリングされる。メモリ保護テーブルにおける失敗に応答して、メモリ・アクセス要求をハンドリングするための異なる選択肢が利用可能である。場合によって、要求は単純に拒絶され得、障害がシグナリングされ得る。代替的に、静的ＭＰＵレジスタ・ストレージ３６又はメモリ内のメモリ保護テーブル２２のいずれかにおいて定義される特定のメモリ保護エントリを有しない任意のメモリ・アクセス要求をハンドリングするように意図されているデフォルトの属性のセットが定義されてもよい。したがって、メモリ保護テーブル２２内で失敗する場合、メモリ・アクセス要求は、デフォルトの属性に対してチェックされてもよく、メモリ・アクセス要求がＭＰＵ２０によって許可されるか否か又は拒絶されるか否かは、デフォルトの属性によって決定されてもよい。
【０１０８】
図７は、図６のステップ１３６における検索プロセスをより詳細に示す流れ図である。図７は、複数のエントリを含む制御テーブルを検索する方法を示し、各エントリが、可変サイズの対応するアドレス領域の第１の限界アドレス及び第２の限界アドレス又はサイズを指定する。領域のサイズは、正確な２の累乗以外のバイト数であることを許容され得る。対応するアドレス領域の限界は、Ｎバイトのアドレス境界に対して不整合であってもよく、Ｎは、対応するアドレス領域のサイズである。図６のステップ１３６において、制御テーブルはメモリ保護テーブル２２であり、テーブルを検索するのに使用される問い合わせアドレスは、処理回路４によって発行されるメモリ・アクセス要求によって指定される標的アドレスである。しかしながら、図７の検索プロセスはまた、他の形態の制御テーブルにも使用されてもよい。例えば、それらの検索プロセスはまた、安全若しくは非安全アドレス領域を指定する制御テーブル、又は、コードのいずれのセクションがリターン指向プログラミング攻撃に対する保護を提供することができる他のソフトウェア・ライブラリを呼び出すことが可能であるかを制限するために処理回路によって使用することができる、いずれのコードが実行されている特定のソフトウェア・ライブラリに属するかを追跡するための制御テーブルにおいて使用されてもよい。したがって、図７に示す方法は、メモリ保護テーブル２２だけでなく、他の形態の制御テーブルに適用されてもよいことが諒解されよう。
【０１０９】
図７のステップ１５０において、問い合わせアドレスが、検索回路２６によって受信される。テーブル検索回路２６は、問い合わせアドレスがそれらのエントリのいずれかの対応するアドレス領域に対応するかを判定するために探索されるべき制御テーブル２２の複数のエントリを含む初期探索窓を決定する。場合によっては、探索窓は、制御テーブル２２のエントリのすべてを含んでもよい。代替的に、いくつかの実施態様において、テーブル検索回路２６は、制御テーブルのエントリのすべてを含むとは限らないより狭い探索窓を初期探索窓として決定してもよく、探索窓の特定の絞り込みは、未知であるとしてマークされている静的ＭＰＵレジスタ・ストレージ・ユニット３６のエントリ内に記憶されている任意のキャッシュされているエントリ、又は、ＭＰＵキャッシュ・ストレージ３２のキャッシュされているメモリ保護エントリから導出される情報に基づいて決定される。例えば、ＭＰＵキャッシュ・ストレージ３２の検索において、問い合わせアドレスが、所与のキャッシュ・エントリ３４のベース・アドレスよりも低いことがすでに判定されている場合、制御テーブル２２のエントリはベース・アドレスによって順序付けされるため、メモリ保護テーブル２２の一致するエントリは、そのキャッシュ・エントリ３４内で指定されるエントリＩＤ７４よりも低いエントリ識別子のみを有し得ることが分かり得る。
【０１１０】
ステップ１５２において、テーブル検索回路２６は、テーブルを検索するために実施される二分探索手順の第１の二分探索ステップを開始する。二分探索ステップ（探索窓絞り込みステップとしても知られる）は、連続する二分探索ステップにおいて複数回繰り返すことができる、図７に示すような複数のステップ１５２〜１７０を含む。ステップ１５２において、例えば、現在の探索窓の中間点にある、制御テーブル２２の候補エントリが選択される。必須ではないが、実施のために、中間点を、現在の探索窓の中点の可能な限り近くに配置することが好適であり得るが、探索窓内の偶数のエントリについては、探索窓の始まりと終わりとの間の正確に中間に候補エントリを有することが可能でない場合がある。例えば、探索窓が１６個のエントリを含む場合、１６個のエントリのうちのエントリ８又はエントリ９が、候補エントリとして選択され得る。また、２つのみのエントリを含む探索窓については、探索窓の外側境界にある一方のエントリが、候補エントリとして選択される。
【０１１１】
ステップ１５４において、選択候補エントリがテーブルの有効範囲を超えるかが判定される。時として、制御テーブル２２は、２の累乗に正確に対応しない複数のエントリを含む場合があるため、ステップ１５０において、２の累乗の数のエントリを有しないテーブルについて、探索窓は、エントリの数が、次に高い２の累乗に等しいかのようにフレーミングされ得、そのため、時として、ステップ１５２において、選択候補エントリは実際には、テーブルの有効範囲の外部にあり得る。そうである場合、ステップ１５６において、テーブル検索回路２６は、ＭＰＵメモリ・アクセス回路２４が、選択候補エントリの第１の限界アドレスをロードするための任意のロード動作を発行するのを抑制する。ここで、第１の限界アドレスは、対応するアドレス領域の開始アドレス又は終端アドレスのいずれかであり得、これらのうちのどれが所与の実施態様における各二分探索ステップにおいて比較されるかに依存する。上述したＭＰＵの実例について、第１の限界アドレスが、対応するアドレス領域の開始アドレスであることが、最も単純であり得る。ステップ１５６において、テーブル検索回路は、選択候補エントリがテーブルの範囲を超えるため、問い合わせアドレスと第１の限界アドレスとの比較の結果が、その比較に基づいて探索窓が絞り込まれるときにテーブル内の少なくとも１つのエントリを含むように黙示的に決定され得ると判定する。例えば、ステップ１６４において実施される比較が、対応するアドレス領域のベース・アドレス未満であるかを判定することである場合、比較の黙示的な結果は、選択候補エントリがテーブルの範囲を超える場合に問い合わせアドレスがベース・アドレス未満であることであり得、これは、このことが、より狭い窓が有効範囲の外部のテーブルの一部分を除外し、テーブル内の少なくとも１つのエントリを含むことを意味する傾向にあるためである。
【０１１２】
ステップ１５４における選択候補エントリがテーブルの有効範囲内であると判定される場合、方法はステップ１５８に進み、テーブル検索回路２６が、問い合わせアドレスと選択候補エントリの第１の限界アドレスとの比較の結果が、ＭＰＵキャッシュ・ストレージ２２又は静的ＭＰＵストレージ３６（ＲＤＵとしてマークされている静的エントリがキャッシュとして反転されている場合）内のキャッシュされている情報に基づいてすでに分かっているかを判定することができる。例えば、問い合わせアドレスが、所与のキャッシュ・エントリのベース・アドレス未満であることがすでに判定されている場合、選択候補エントリが所与のキャッシュ・エントリのエントリＩＤ７４よりも高いエントリＩＤを有するときに、問い合わせアドレスもまた、選択候補エントリの第１の限界アドレス未満でなければならないことが黙示され得る。代替的に、第１の限界アドレスが対応するアドレス領域の上端アドレスであるシステムでは、キャッシュ３２への検索によって、問い合わせアドレスが所与のキャッシュ・エントリ３４の限界アドレスよりも高いことがすでに判定されている場合、選択候補エントリが所与のキャッシュ・エントリ３４のエントリＩＤ７４以下のエントリＩＤを有するとき、問い合わせアドレスは選択候補エントリの第１の限界アドレス（終端アドレス）を上回らなくてはならないことが黙示され得る。したがって、通常は選択候補エントリの問い合わせアドレスと第１の限界アドレスとの間で実施される比較の結果が、キャッシュされている情報に応じてすでに分かり得る場合、ステップ１６０において、選択候補エントリの第１の限界アドレスをロードするためのロードＭＰＵメモリ・アクセス要求がテーブル検索回路２６によって抑制され、代わりに、キャッシュされている情報から判定される比較結果を、メモリ・システム１０からロードされる第１の限界アドレスに対する問い合わせアドレスの比較を実際に実施する代わりに、使用することができる。ステップ１５８は任意選択であり、そのため、いくつかの実施態様は、検索プロセスを誘導するために、キャッシュされている情報を使用しなくてもよいことに留意されたい。また、ステップ１５０においてＭＰＵ２０内に記憶されているキャッシュされたエントリに基づいて探索窓が絞り込まれるシステムにおいて、絞り込まれた窓はその段階において、必要にならないキャッシュ・ストレージから分かるエントリをすでに除外することができ、そのため、この場合、ステップ１５８は、ステップ１５０においてすでに実効的に考慮に入れられている場合があるため、必要ない場合がある。したがって、キャッシュされている情報は、初期探索窓を策定するとき、及び／又は、所与の二分探索ステップの比較結果についてチェックするときのいずれかの、２つのステップのうちの１つにおいて考慮され得るが、これも必須ではないことが諒解されよう。完全を期すために、図７には両方が示されている。
【０１１３】
選択候補エントリの問い合わせアドレスと第１の限界アドレスとの間の比較の結果を、すでにキャッシュされている情報に基づいて決定することができない場合、ステップ１６２において、テーブル検索回路２６は、メモリ・システムから選択候補エントリの第１の限界アドレスをロードするためのロードＭＰＵメモリ・アクセス要求をトリガするように、ＭＰＵメモリ・アクセス回路２４をトリガする。したがって、アクティブなＭＰＵテーブルのベース・アドレス３０と、選択候補エントリのエントリ識別子に基づいて決定されるオフセットとの合計に対応するアドレスをその標的アドレスとして指定するロード要求を発行することができる。このロード動作は、デフォルトの属性セット及び／又はＳＡＵ４２によって指定されるメモリ・セキュリティ構成に基づく許可チェックを受けることができる。選択候補エントリの第１の限界アドレス（対応するアドレス領域の開始又は終端アドレス）が返されると、ステップ１６４において、問い合わせアドレスが、返された第１の限界アドレスに対して比較される。ステップ１６４において比較が実際に実施されたか、又は、ステップ１６０において比較結果がキャッシュされている情報に基づいて黙示的に決定されたかにかかわらず、ステップ１６６において、比較結果を満たさないエントリを除外するように探索窓が絞り込まれる。例えば、第１の限界アドレスが対応するアドレス領域の開始（ベース）アドレスである場合、ステップ１６４における比較は、問い合わせアドレスが第１の限界アドレス未満であるかを判定することができる。問い合わせアドレスが第１の限界アドレス未満である場合、ステップ１６６において、より狭い探索窓を、以前の探索窓の、選択候補エントリのエントリ識別子未満のエントリ識別子を有するエントリを含む部分を含むように、決定することができる。任意選択的に、選択候補エントリ自体もより狭い探索窓に含まれてもよく、より狭い探索窓の先頭を識別するために選択候補エントリのエントリ識別子から１を減算するための追加の減算演算の必要性が回避されるため、クリティカル・タイミング・パスの長さを低減することによって、回路実装がより高速になり得ることがある。問い合わせアドレスが選択候補エントリの開始アドレスよりも大きい場合、より狭い探索窓は、選択候補エントリのエントリ識別子よりも小さいエントリ識別子を有するエントリを除外することができる。
【０１１４】
他方、第１の限界アドレスが対応するアドレス領域の終端アドレスであり、ステップ１６４において、比較が、問い合わせアドレスが第１の限界アドレスよりも大きいかを判定することである場合に、問い合わせアドレスが第１の限界アドレスよりも大きい場合、ステップ１６６において、より狭い探索窓は、選択候補エントリのエントリ識別子よりも大きいエントリ識別子を有するエントリを含むことができる。他方、問い合わせアドレスが対応するアドレス領域の上位アドレス未満である場合、探索窓を、選択候補エントリ、及び、選択候補エントリのエントリ識別子未満のエントリ識別子を有する任意の残りのエントリを含むように、絞り込むことができる。
【０１１５】
ステップ１６８において、テーブル検索回路は、ステップ１５６又はステップ１６６のいずれかにおいて実施される絞り込み後に、この時点でより狭い探索窓が制御テーブルの単一の候補エントリのみを含むかを判定する。そうでない場合、さらなる二分探索ステップが依然として必要とされ、ステップ１７０において、方法は、ステップ１６６又はステップ１５８からもたらされる絞り込まれた探索窓を現在の探索窓として使用する、次の二分探索ステップに進む。方法はその後、ステップ１５２に戻って、別の二分探索ステップのためにステップ１５２〜１６８を繰り返す。
【０１１６】
ステップ１６８において、より狭い探索窓が単一のエントリを含むと判定される場合、さらなる二分探索ステップは必要ない。この場合、ステップ１７２において、より狭い探索窓内に残っている単一のエントリによって指定される第２の限界アドレス又はサイズが、メモリ・システムからロードされる。ここでも、メモリからの単一のエントリの第２の限界アドレス又はサイズをフェッチするために発行されるロードＭＰＵメモリ・アクセス要求は、ＳＡＵ４２によるチェック、及び／又は、デフォルトのメモリ・アクセス属性に基づくチェックを受け得る。場合によっては、ＭＰＵメモリ・アクセス回路２４はまた、たとえ第１の限界アドレスが先行する二分探索ステップにおいてすでにチェックされていたとしても、メモリ・システムから単一の候補エントリの第１の限界アドレスを得るためのロードをトリガする必要もあり得る。他の実施態様は、先行する二分探索ステップにおいて読み出された１つ又は複数の選択候補エントリの第１の限界アドレスをキャッシュすることを可能にすることができ、そのため、ステップ１７２において残っている単一のエントリの第１の限界アドレスが依然としてキャッシュされている場合、単一のエントリの第１の限界アドレスを得るためのロードを抑制することができる。
【０１１７】
ステップ１７４において、検索回路２６が、問い合わせアドレスが単一の残っている候補エントリの対応するアドレス領域について定義されている限界内にあるか否かを判定する。したがって、アドレスを通じて第２の限界が指定される場合、検索回路は、問い合わせアドレスが第１の限界アドレスと第２の限界アドレスとの間にあるかを判定する（第１の限界アドレス及び第２の限界アドレスが対応するアドレス領域の考慮される部分であるか、又は、これらのアドレスのうちの１つが対応するアドレス領域の外部で考慮され得るかは、実施態様とは無関係の選択であり得る）。他方、第２の限界を定義するためにサイズが使用される場合、検索回路は、第２の限界アドレスを決定するために、サイズを第１の限界アドレスに加算するか、又は、第１の限界アドレスからサイズを減算することができ、その後ここでも、問い合わせアドレスが第１の限界アドレスと第２の限界アドレスとの間にあるかを判定することができる。問い合わせアドレスが単一の残りのエントリに対応する領域について定義される限界内にある場合、ステップ１７６において、メモリ保護テーブル内でヒットが検出される。その後、単一の残りのエントリ内で指定される属性を返し、処理構成要素によって実施される所与の動作を制御するために使用することができる。例えば、上記で示したＭＰＵの実例について、ヒットしたエントリを使用して実施される動作は、図６のステップ１３２におけるアクセス許可のチェックであり得るが、他のタイプの制御テーブルについては、リターン属性を使用して異なる動作が実施されてもよい。他方、問い合わせアドレスが単一の残りのエントリの対応するアドレス領域の限界内にない場合、ステップ１７８において、問い合わせアドレスを含むアドレス領域に対応する一致エントリがないため、失敗が検出される。
【０１１８】
したがって、図７において定義される二分探索手順によって、第２の限界アドレス又はサイズを定義するパラメータは、ステップ１６８後に残る単一のエントリについてメモリからロードされるだけでよい。各二分探索ステップについて、第１の限界アドレスのみが、ステップ１６２においてメモリからロードされる必要がある（また時として、キャッシュされている情報がすでに問い合わせアドレスを選択候補エントリの第１の限界アドレスに対して比較した結果がどのようなものであるかを判定するために使用され得る場合、このロードはいずれにしても抑制され得る）。最大メモリ・オーバーヘッドがエントリの数Ｎによってｌｏｇ２（Ｎ）＊２の代わりにｌｏｇ２（Ｎ）＋１に従ってスケーリングし得るため、この手法は、制御テーブルを検索するのに必要とされるメモリへのアクセス数を低減するのを助け、より高速の性能が可能になる。
【０１１９】
図８は、テーブルが１６個のエントリを含む実例に対する二分探索手順の特定の実例を示す。２００とマークされている各ステップは、図７の特定の二分探索ステップ１５２〜１７０を表し、対応する二分探索ステップのステップ１６４において実施される特定の比較によってラベリングされる。この実例において、第１の限界アドレスは、対応するアドレス領域のベース・アドレスであり、そのため、各二分探索ステップにおいて、そのステップにおける問い合わせアドレスと選択候補エントリのベース・アドレスとの間で未満比較が行われる。表記Ｂ６は、例えば、候補エントリ６のベース・アドレスを指す。したがって、第１の二分探索ステップ２００−０において、初期探索窓（ＳＷ）は、１６個のエントリ０〜１５を含み得、選択候補エントリは、例えば、エントリ８である。問い合わせアドレスと選択候補エントリ８のベース・アドレスＢ８との間の未満比較に基づいて、探索窓はその後、問い合わせアドレスがエントリ８のベース・アドレス未満である場合はエントリ０〜７に、又は、問い合わせアドレスがエントリ８のベース・アドレス以上である場合はエントリ８〜１５に絞り込まれる。同様に、後続の二分探索ステップは再び、各二分探索ステップにおいて探索窓を半分に絞り込むように、候補エントリの二分割を行い、そのため、最大４回の二分探索ステップにおいて、１６個のエントリから成る探索窓を、図８においてマークされているステップ２０２において識別されているような単一のエントリに低減することができる。二分探索ステップ２００のいくつかにおける比較は、キャッシュされている情報に基づいてこれを知ることができる場合、又は、テーブル内のエントリの実際の数が２の累乗ではなく、そのため、上位エントリのいくつかが実際には有効なエントリを提供することができない場合、第１の限界アドレスを実際にロードし、それを問い合わせアドレスに対して比較するのではなく、それらの結果が黙示的に決定されるようにすることができる。例えば、テーブルが１３個のエントリのみを含む場合、エントリ１４のベース・アドレスに対して問い合わせアドレスを比較するための、２００−１とマークされている二分探索ステップは、その後、エントリ１２及び１３を含むより狭い探索窓に対して作用する二分探索ステップに真っ直ぐ進むように、肯定的な結果を黙示的に提供することができる。同様に、Ｎ＝１３（すなわち、１３個のエントリ０〜１２がある）について、最上位エントリがエントリ１２であるためにエントリ１３はないため、２００−２とマークされている二分探索ステップもまた、黙示的な肯定的結果を生成して、探索窓内に残っている単一のエントリがエントリ１２であると識別し得る。
【０１２０】
したがって、ステップ２０２のうちの１つにおいて単一の残りのエントリが識別されたということは、問い合わせアドレスが単一の残りのエントリに対してヒットするか、又は、問い合わせアドレスが完全に失敗したことを意味する。これらのいずれが真であるかを判定するために、検索回路はステップ２０４（すなわち、図７のステップ１７４）において、単一の残りのエントリによって定義される領域について問い合わせアドレスがベース・アドレスと限界アドレスとの間にあるかを判定する。ベース及び限界のうちの一方又は他方は、領域の他の限界に適用されるサイズ・パラメータを通じて決定され得ることが諒解されよう。したがって、問い合わせアドレスが対応するエントリについてベース・アドレスと終端アドレスとの間にある場合、ステップ２０６において、その特定のエントリ内でヒットが検出され、問い合わせアドレスがこれらの限界の間にない場合、ステップ２０８において失敗が検出される。
【０１２１】
図９は、テーブルにおける特定の問い合わせアドレスの検索の特定の実例を示す。この実例において、初期探索窓は、既存のキャッシュされている情報若しくは静的ＭＰＵレジスタ情報を使用するために、又は、テーブルが第１の場所に７つのエントリのみを含むために、７つのエントリ（エントリ０〜６）を含むものとして決定される。第１の二分探索ステップ２００−８において探索窓の中間点にあるエントリ３が選択され、これによって、問い合わせアドレス０ｘ００８８０がエントリ３の開始アドレス０ｘ０７５００未満であると判定され、そのため、探索窓は、エントリ４〜６を除外するように絞り込まれる（また、任意選択的にエントリ３も、使用される特定の実施態様に依存して所望に応じて除外又は包含される）。第２の二分ステップ２００−１０において、選択候補エントリはエントリ１であり、今回、問い合わせアドレスは、エントリ１の背後の領域の開始アドレスよりも大きいと判定される。したがって、ここで、探索窓はエントリ０を除外し得る。したがって、ここで、問い合わせアドレスが、エントリ１若しくはエントリ２のいずれかに対応するはずであるか、又は、テーブル内のいずれのエントリにも対応しないことが分かる。したがって、二分探索は継続し、ここで、エントリ２がステップ２００−１２において選択候補エントリになり、領域２のベース・アドレスがロードされる。今回、領域２のベース・アドレスに対する問い合わせアドレスの比較は、問い合わせアドレスが領域２のベース・アドレス未満であることを示す。したがって、領域１がロードすべき正しい領域であると判定され、このエントリが返され、その領域の終端アドレスを定義する限界アドレスがメモリからロードされる。以前の二分探索ステップにおいてプロセッサが領域１のベース・アドレスの値をキャッシュしている場合、領域１のベース・アドレスをロードし直す必要性を回避することができる。この特定の事例において、問い合わせアドレスはこのとき、領域１の開始アドレスと終端アドレスとの間にあることが分かり、そのため、メモリ検出テーブル内でヒットが検出される。しかしながら、問い合わせアドレスが、最後の二分探索ステップにおいて識別された最後のエントリの限界の間になかった場合、失敗が検出されることになる。
【０１２２】
図１０は、図１に示す処理システム２内で例外をハンドリングするために使用することができるレイジー状態保存の実例を示す。図１に示すように、処理回路は、汎用レジスタ１２及び浮動小数点レジスタ１４を含むことができる。例外に遭遇すると、例外後に実行しているソフトウェア（文脈切り替えが行われた例外ハンドラ又はプロセスなど）がレジスタ１２内にデータを上書きし、その後、レジスタ１２を再使用することができるように、例外前に実行されたソフトウェアのアーキテクチャ状態を確保することができるように、レジスタ１２の内容をメモリ１０内に提供されるスタック・データ構造に保存する必要があり得る。しかしながら、レジスタ１４内の浮動小数点アーキテクチャ状態も確保される必要があり得るが、実際には、すべてのソフトウェア・プロセスが浮動小数点レジスタを使用するとは限らない。浮動小数点命令を一切含まないプロセスでは、このとき、浮動小数点レジスタは必要とされない場合がある。レジスタ１２、１４からメモリ・システム１０内のスタック・データ構造への状態の保存にはいくらか時間がかかる。したがって、例外前に実行している第１のソフトウェア・プロセス又は例外後に実行している第２のソフトウェア・プロセスのいずれかが浮動小数点レジスタを必要としない場合、メモリから浮動小数点状態を保存するために費やされる時間が、実効的に無駄になる可能性がある。
【０１２３】
したがって、図１０に示すように、例外に応答して整数レジスタ１２がメモリ内のスタックに保存されるが、レジスタ１４内の浮動小数点状態は例外に応答して保存されない、レイジー状態保存手法を使用することができる。代わりに、浮動小数点レジスタの保存は、第１のソフトウェアが浮動小数点レジスタを使用したとすでに判定されている場合に、第２のソフトウェアがその後、浮動小数点命令を実行して浮動小数点レジスタ１４へのアクセスをトリガする場合にのみトリガされ得る。浮動小数点レジスタは実際には例外に応答して保存されないが、それにもかかわらず、例外に応答して、浮動小数点レジスタのために、メモリ１０内のスタック上にいくらかの空間が確保され、スタック上の確保された領域のアドレスが記録される。これによって、例外前に実行された第１のソフトウェア・プロセスのために保存された状態を確保するために使用されるスタック・フレームのレイアウトが、浮動小数点レジスタが実際にこれまでに保存されたか否かにかかわらず一貫することができることが保証され、後続の状態復元を単純にすることができる。
【０１２４】
しかしながら、アドレスが浮動小数点レジスタを保存するために確保されるとき、このアドレスは、例外が発生する前に実行していた第１のソフトウェア・プロセスにとってアクセス可能なスタック・データ構造内のアドレスであり得る。浮動レジスタが実際にスタック内の確保された空間に保存されるときまでに、ＭＰＵ２０の許可チェック回路４０は、スタック内の確保空間に浮動小数点状態を保存するためのメモリ・アクセスが許可されるかをチェックする必要があり得るが、アクティブ・テーブル識別子レジスタ２８が、第２のソフトウェア・プロセスによって使用するために再構成されている場合があるため、ＭＰＵ２０はもはや、第１のソフトウェアがスタック上のその領域に状態を保存することを許可されるかを定義する、第１のソフトウェアによって使用されたＭＰＵテーブルにアクセスすることができない場合がある。
【０１２５】
この問題に対処するために、例外が発生したとき、浮動小数点レジスタのためにスタック上に確保された空間のアドレスを記録するのに加えて、処理回路４と関連付けられる例外ハンドリング論理はまた、第２のソフトウェア・プロセスの実行中にハードウェアが、スタック上の確保された空間のアドレスが第１のソフトウェアの実行中に使用されたＭＰＵテーブル２２の対応するエントリ内で定義されるアクセス許可を満たすかを検証することを可能にするためのＭＰＵチェック情報をも記録することができる。この記録されるＭＰＵチェック情報は、種々の形態をとることができる。場合によっては、記録されるＭＰＵチェック情報は、例外が発生した時点においてレジスタ２８内に存在したアクティブ・テーブル識別子を含むことができ、結果、ＭＰＵはその後、浮動小数点レジスタが保存されるときに、たとえアクティブなテーブルが例外の結果として変化していたとしても、アドレスが、その特定のメモリ保護テーブル内で指定されるアクセス許可を満たすかをチェックすることができる。代替的に、ＭＰＵは、例外自体の時点において、浮動小数点状態の記憶のために確保されている領域を事前検証し、その検証が成功したかを示す情報を記録することができる。図１１Ａ及び図１１Ｂは、第１の選択肢を使用する実例を示し、一方、図１２Ａ及び図１２Ｂは、これらの選択肢のうちの第２の選択肢を使用する実例を示す。
【０１２６】
図１０に示すレイジー状態は、例外をハンドリングするための１つの選択肢に過ぎないことが諒解されよう。いくつかのシステムにおいて、制御レジスタ内の制御データは、例外をハンドリングするために、レイジー状態保存が実際に使用されるべきであるかを指定することができ、そのため、レイジー状態保存手法は、すべての例外に常に適用されなくてもよく、いくつかの例外は、依然として、例外の時点において整数状態と浮動小数点状態の両方を保存することによってハンドリングされ得る。したがって、図１１ａ〜図１２ｂに示す技法は、レイジー状態保存が制御データによって有効化される場合に使用され得る。
【０１２７】
図１１Ａ及び図１１Ｂは、浮動小数点状態のためにスタック上に確保された空間のアドレスの検証が、例外後に実行されることになる浮動小数点命令に遭遇した時点において実施される場合の、レイジー状態保存の実例を示す。図１１Ａは、例外自体に応答してトリガされる動作を示し、図１１Ｂは、後続の浮動小数点命令によってトリガされる動作を示す。
【０１２８】
図１１Ａに示すように、ステップ２５０において、例外に応答して、例外ハンドリング・ハードウェアが、スタック・データ構造への整数レジスタの保存をトリガする。ステップ２５２において、浮動小数点状態を保存するための空間がスタック上に配分される（例えば、たとえ浮動小数点状態自体がまだ保存されていない場合であっても、任意の後に保存されるデータが、浮動小数点状態のために配分された空間を超えるスタックの位置に保存されるように、スタック・ポインタ・データが更新される）。代替的に、いくつかの実施例は、整数レジスタが、浮動小数点状態に配分された空間を超えてスタックに保存されるように、ステップ２５２及び２５０を逆に実施してもよい。レイジー浮動小数点保存動作は、制御レジスタ内にフラグを設定することによって、保留中としてマークされる。また、浮動小数点保存領域を識別するアドレスが、メモリ又は制御レジスタに保存される。ステップ２５４において、例外ハンドリング・ハードウェアが、ハードウェアが後に、確保される浮動小数点保存領域のアドレスが再びメモリ内の構造又はレジスタにとって例外の前に実行しているプロセスによって有効にアクセスされ得るかをチェックすることを可能にするためのＭＰＵチェック情報の保存をトリガする。この実例におけるＭＰＵチェック情報は、例えば、例外が発生した時点においてレジスタ２８内で提供されたアクティブ・テーブルＩＤであってもよく、又は、例外前に実行しているプロセスと関連付けられるＭＰＵテーブル内の必要なエントリの位置が決定されることを可能にする何らかの他の識別子であってもよい。図１１Ａは、例外に応答して行われ得るすべての動作を示しているとは限らず、レイジー状態保存に関連する動作のみを示していることが諒解されよう。場合によっては、スタックと関連付けられるＭＰＵエントリは、排除されないようにキャッシュ内でロックすることができる。
【０１２９】
図１１Ｂに示すように、例外が処理され、例外後の第２のソフトウェア・プロセスの実行が開始されると、浮動小数点命令に行き当たる。ステップ２６０において、制御レジスタ内に記憶されているフラグが、浮動小数点保存動作がまだ保留中であるかを示す。浮動小数点保存動作がもはや保留中でない場合、ステップ２６２において、浮動小数点命令が実行される。しかし、浮動小数点保存動作がまだ保留中である場合、ステップ２６４において、確保されている浮動小数点保存領域のアドレスが得られ、保存されているＭＰＵチェック情報を使用して、ＭＰＵによってチェックされる。浮動小数点保存を保存するために確保されているアドレス領域全体を、ＭＰＵチェック情報を通じて識別されるＭＰＵテーブルに基づいて検証することができるかを検出する必要があり得る。浮動小数点状態を保存するために確保されている領域の開始アドレスと終端アドレスの両方がＭＰＵテーブルの同じメモリ保護エントリに対応する場合、浮動小数点状態をスタックに保存するためのアクセスのすべてが許可されるかを判定するには、その領域内の１つのアドレスに対するアクセス許可を１回チェックすれば十分であり得るため、これによってチェックを単純化することができる。したがって、場合によっては、図１１Ａのステップ２５４において記憶されるＭＰＵチェック情報はまた、確保されている領域の開始アドレス及び終端アドレスが同じメモリ保護エントリに対応するかの指示をも含み得る。
【０１３０】
したがって、ステップ２６４において、ＭＰＵ２０は、確保されている領域に対応する１つ又は複数のメモリ保護エントリを得、ステップ２６６において、それらのエントリによって指定されるアクセス許可が、浮動小数点状態を保存するために発行されるメモリ・アクセス要求によって満たされるかをチェックする。アクセス許可が満たされる場合、ステップ２６８において、浮動小数点状態がメモリ内のスタック構造に保存され、後続の浮動小数点命令において、再び状態保存を実施する必要がないことを示すために、浮動小数点保存保留指示がクリアされる。しかしながら、浮動小数点状態を保存するためのいかなるアクセス要求についても許可が満たされない場合、ステップ２７０において、障害がシグナリングされる。場合によっては、障害は、浮動小数点命令が実行されるのを妨げる可能性がある。しかしながら、他の場合において、それにもかかわらず、障害の優先度がすでにハンドリングされている例外よりも低い場合は、障害は先行する例外の処理が完了するまで保留されたままであり得るため、障害にもかかわらず浮動小数点命令が実行される場合がある。図１１Ｂのステップ２７０と２６２との間の点線は、時として、障害にもかかわらず、浮動小数点命令が依然として実施される場合があることを示している。
【０１３１】
図１２Ａ及び図１２Ｂは、図１１Ａ及び図１１Ｂに対する代替形態を示し、図１２Ｂは、浮動小数点命令に行き当たるのに応答して実施される状態保存のための動作を示している。この実例において、例外に応答して、ステップ２５０は図１１Ａにあるものと同じである。ステップ２８２において、スタック構造内で、浮動小数点レジスタを保存するための空間が配分される。ここでも、いくつかの実施態様は、これらのステップを逆にしてもよく、整数レジスタのための空間を配分し、整数レジスタを保存する前に、浮動小数点レジスタのための空間をスタック上に配分してもよい。この実例において、スタック上の配分される領域のアドレスは、図１２Ａのステップ２８４において例外がハンドリングされる時点において事前検証される。すなわち、スタック内の配分されている空間内の位置のアドレスは、アクティブ・テーブルＩＤレジスタ２８によって識別されるアクティブなメモリ保護テーブルに対して検証される。任意の一致するＭＰＵエントリにおいて指定されるアクセス許可に基づいて、浮動小数点状態を保存するためのアクセスが許可されるかが判定され、そうである場合、ステップ２８６において、浮動小数点保存領域のアドレスが、メモリ又はレジスタに記憶される。場合によっては、ステップ２８４における事前検証が成功したことを示すには、浮動小数点保存領域のアドレス自体が記憶されているという事実があれば十分であり得、そのため、事前検証が成功したことを示すフラグをも記憶することは必要ない場合がある。代替的に、検証が成功したことを確認するための別個のフラグも提供されてもよい。ステップ２８６において浮動小数点状態を保存するために配分されている領域のアドレスが保存されると、ステップ２８８において、例外後に実行される第１の浮動小数点命令において浮動小数点保存動作が必要になることを示すために、浮動小数点保存保留指示が設定される。したがって、この実例において、ＭＰＵチェック情報は、ステップ２８４における事前検証が成功したことの指示であり得る。
【０１３２】
ステップ２８４における事前検証が、小数点状態を保存するためのアクセスが許可されないと判定する場合、２つの選択肢があり得る。第１の選択肢では、ステップ２９０において、例外ハンドリング回路又はＭＰＵが、浮動小数点状態を記憶するためのアクセスが無効になることを指定する制御フラグを設定し得るが、それにもかかわらず、障害がトリガされず、その後、２８８において、浮動小数点保存動作が保留中としてマークされる。たとえ事前検証が不首尾であったとしても、後続の処理が障害なく進行することが好適であり得る。これは、このことが、例外後に実行するコードが浮動小数点レジスタに決してアクセスしない場合、浮動小数点状態を記憶するための保存された領域への無効なアクセスが決して実施されないために障害が不必要にトリガされないため、性能が改善することを意味するためである。代替的に、ステップ２９２における第２の選択肢では、事前検証においてアクセスが許可されないと判定される場合、障害がトリガされ得る。
【０１３３】
図１２Ｂは、例外をハンドリングした後に浮動小数点命令に行き当たるのに応答して実施される、対応する動作を示す。ステップ２６０において、浮動小数点状態保存動作が保留中であるかが判定され、図１１Ｂにあるように、浮動小数点保存動作が保留中でない場合、ステップ２６２において、浮動小数点命令が、前述したように実行される。浮動小数点保存動作が保留中である場合、ステップ２９４において、浮動小数点保存領域のアドレスが保存されているか、及び、事前検証においてアクセスが無効であるとしてフラグ立てされているかが判定される。場合によっては、アドレス自体が記憶されているという事実を、アクセスが無効であるとしてフラグ立てされていないことの指示とみなしてもよく、又は、代替的に、特定の制御フラグが、ステップ２８４における事前検証が成功したかを示す場合、これを使用して、浮動小数点保存を進めるべきかを判定してもよい。浮動小数点保存領域のアドレスが保存されており、アクセスが無効でない場合、ステップ２９６において、浮動小数点状態が、浮動小数点保存領域のアドレスによって識別されるものとしての、スタック上で以前に確保された領域に保存される。また、任意の後続の浮動小数点命令は、浮動小数点保存動作をトリガしないように、浮動小数点保存動作が、保留中であるとしてクリアされる。他方、アクセスが無効であるとしてフラグ立てされたか、又は、浮動小数点保存領域のアドレスが保存されていない場合、ステップ２９８において、障害がトリガされる。選択肢２が選択されたとすると、処理は決して図１２Ｂに到達しないため、これは、図１２Ａの実例における選択肢１に対応することに留意されたい。
【０１３４】
したがって、一般に、例外前に実行するプロセスと関連付けられる、関連するＭＰＵエントリが位置特定されること、又は、例外に応答する時点において実施される事前検証が成功したことを確認することを可能にするための何らかの情報を保存することによって、これは、例外後のプロセスを実行しながら、ハードウェアによってトリガされるレイジー状態保存が、たとえアクティブなメモリ保護が例外に応答して変化した場合であっても、安全に検証されることを可能にする。
【０１３５】
図１３は、使用することができるシミュレータ実施態様を示す。前述されている実施例は本発明を、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して実施するが、コンピュータ・プログラムを使用することを通じて実施される、本明細書において説明されている実施例による命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムはハードウェア・アーキテクチャのソフトウェア・ベースの実施態様を提供する限りにおいて、シミュレータとして参照されることが多い。様々なシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想機械、モデル、及び、動的バイナリ変換器を含むバイナリ変換器を含む。典型的には、シミュレータ実施態様は、任意選択的に、シミュレータ・プログラム３１０をサポートするホスト・オペレーティング・システム３２０を作動させる、ホスト・プロセッサ３３０上で作動することができる。ホスト・プロセッサ３３０は、ホスト処理回路３３２と、メモリに記憶されている階層ページ・テーブルに基づくアドレス変換及びメモリ・アクセス許可をサポートするメモリ管理ユニット（ＭＭＵ）３３４と、メモリ・システム３３６とを含む。いくつかの構成において、ハードウェア及び提供されている命令実行環境、並びに／又は、同じホスト・プロセッサ上に提供される複数の個別の命令実行環境の間に、複数のシミュレーション層があり得る。歴史的に、妥当な速度で実行するシミュレータ実施態様を提供するためには、強力なプロセッサが必要とされてきたが、そのような手法は、互換性又は再使用の理由のために別のプロセッサにとってネイティブであるコードを作動させることが所望されるときなど、特定の状況においては正当化され得る。例えば、シミュレータ実施態様は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能を有する命令実行環境を提供することができるか、又は、典型的には異なるハードウェア・アーキテクチャと関連付けられる命令実行環境を提供することができる。シミュレーションの概要は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁において与えられる。
【０１３６】
実施例が、以前に特定のハードウェア構造又は特徴を参照して説明されている限りにおいて、シミュレーション実施例において、等価な機能が、適切なソフトウェア構造又は特徴によって提供され得る。例えば、特定の回路は、シミュレーション実施例においては、コンピュータ・プログラム論理として実施され得る。同様に、レジスタ又はキャッシュのようなメモリ・ハードウェアは、シミュレーション実施例においてはソフトウェア・データ構造として実施され得る。以前に説明した実施例において参照されているハードウェア要素のうちの１つ又は複数がホスト・ハードウェア（例えば、ホスト・プロセッサ３３０）上で提示されている構成において、いくつかのシミュレーション実施例は、適切な場合に、ホスト・ハードウェアを利用することができる。
【０１３７】
シミュレータ・プログラム３１０は、コンピュータ可読記憶媒体（非一時的媒体であってもよい）上に記憶することができ、シミュレータ・プログラム３１０によってモデル化されているハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである、標的コード３００（アプリケーション、オペレーティング・システム及びハイパーバイザを含み得る）に対するプログラム・インターフェース（命令実行環境）を提供する。したがって、標的コード３００のプログラム命令は、シミュレータ・プログラム３１０を使用して命令実行環境内から実行することができ、結果、実際には上述した装置２のハードウェア特徴を有しないホスト・コンピュータ３３０が、これらの特徴をエミュレートすることができる。
【０１３８】
図１３に示すように、シミュレータ・プログラム３１０は、図１の処理回路４、ＭＰＵ２０及びＳＡＵ４２に機能的に対応する、処理プログラム論理３４０、ＭＰＵプログラム論理３５０、及びＳＡＵプログラム論理３６０を含むことができる。ＭＰＵプログラム論理３５０は、それぞれ許可チェック回路４０、ＭＰＵメモリ・アクセス回路２４、及びテーブル検索回路２６に機能的に対応する、許可チェック・プログラム論理３５２、ＭＰＵメモリ・アクセス・プログラム論理３５４、及びテーブル検索プログラム論理３５６を含む。ＭＰＵプログラム論理３５０はまた、それぞれ静的ＭＰＵレジスタ・ストレージ３６及びアクティブ・テーブルＩＤレジスタ２８に対応する、静的ＭＰＵエントリ・ストレージ構造３５７及びアクティブＩＤデータ構造３５８を管理するためのプログラム論理をも含む。データ構造３５７、３５８の実際のデータは、ホスト・ハードウェア３３０のメモリ・システム３３６内に記憶されるが、シミュレータ・プログラムは、データ構造３５７、３５８を定義し、データ構造３５７、３５８に関するデータにアクセスするための論理を含む。シミュレーションにおいては、すべての基礎となるデータはホスト・ハードウェア３３０のメモリ・システム３３６内に記憶され、そのため、キャッシュをシミュレートすることによって任意の性能改善が提供される可能性は低いため、図１のＭＰＵキャッシュ・ストレージ３２に対応するプログラム論理を提供する必要はない。それにもかかわらず、シミュレータが、静的に定義されるＭＰＵエントリと相互作用するように設計されているコードと互換性があるままであるように、ＭＰＵテーブル２２とは別個に、静的ＭＰＵエントリ・データ構造３５７がシミュレートされる。いくつかの実施態様において、これはシミュレーションの性能の利益にならない場合があるが、シミュレータがクロック・サイクルの数を正確にシミュレートすることを目標とする場合、シミュレートされるＭＰＵ３５０はメモリ・アクセス要求に応答することを選択することが所望され得るため、シミュレータ３１０はまた、ＭＰＵキャッシュ・ストレージ３２をシミュレートするためのプログラム論理を含んでもよい。ＳＡＵプログラム論理３６０は、図１のメモリ・セキュリティ構成レジスタ４４及びセキュリティ・チェック回路４６に機能的に対応する、メモリ・セキュリティ構成データ構造３６２及びセキュリティ・チェック・プログラム論理３６４を含む。
【０１３９】
シミュレータ・プログラム３１０は、シミュレータ・プログラム３１０によってシミュレートされているプロセッサ上で提供される物理アドレス空間に対応するシミュレーション・アドレス空間３７０のシミュレーションを管理する。実行されるべき標的コード３００、及びメモリ保護テーブル２２は、シミュレーション・アドレス空間３７０内のアドレスと関連付けられる。標的コード３００は、静的ＭＰＵエントリ・データ構造３５７及び／又はＭＰＵテーブル２２内で定義されるアクセス許可に基づくＭＰＵプログラム論理３５０による許可チェックを受け、それらが許可チェックを通過する場合、シミュレータ・プログラム３１０の制御下でホスト・プラットフォームの仮想アドレスにマッピングされる、シミュレーション・アドレス空間３７０内の物理アドレスを指定するメモリ・アクセス命令を含み、仮想アドレスはその後、ホスト・ハードウェアのＭＭＵ３３４によって、ホスト・メモリ・システム３３６にアクセスするために使用される物理アドレスに変換され得る（ＭＭＵ３３４は、ホスト・オペレーティング・システム３２０によって定義されるページ・テーブルに基づいて、メモリ・システムへのメモリ・アクセスが許可されるかをチェックするための、さらなる許可チェックを適用することができる）。
【０１４０】
したがって、シミュレータ３１０は、メモリベースのメモリ保護テーブルを有するＭＰＵに対するハードウェア・サポートを有しないホスト・プラットフォームが、そのようなハードウェア・サポートを有するプラットフォーム向けに設計されたコードを実行することを可能にする。
【０１４１】
本出願において、「〜するように構成されている」という語は、装置の要素が、定義されている動作を実行することが可能な構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの相互接続の配列又は様式を意味する。例えば、装置は、定義されている動作を提供する専用ハードウェアを有することができ、又は、プロセッサ若しくは他の処理デバイスを、その機能を実施するようにプログラムすることができる。「〜するように構成されている」ことは、装置の要素が、定義されている動作を提供するために任意の方法で変更される必要があることを暗示しない。
【０１４２】
本発明の例示的な実施例が、添付の図面を参照して本明細書において詳細に説明されてきたが、本発明はそれらの厳密な実施例には限定されないこと、並びに、添付の特許請求の範囲によって規定されているような本発明の範囲及び精神から逸脱することなく、当業者によってそれらの実施例において様々な変更及び修正を実行することができることは理解されたい。
【図１】
2021531583.tif 000003
【図２】
2021531583.tif 000004
【図３】
2021531583.tif 000005
【図４】
2021531583.tif 000006
【図５】
2021531583.tif 000007
【図６】
2021531583.tif 000008
【図７】
2021531583.tif 000009
【図８】
2021531583.tif 000010
【図９】
2021531583.tif 000011
【図１０】
2021531583.tif 000012
【図１１Ａ】
2021531583.tif 000013
【図１１Ｂ】
2021531583.tif 000014
【図１２Ａ】
2021531583.tif 000015
【図１２Ｂ】
2021531583.tif 000016
【図１３】
2021531583.tif 000017
【国際調査報告】
2021531583.tif 000018
2021531583.tif 000019