(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】メモリ・アクセスを制御するための装置及び方法
(51)【国際特許分類】
G06F 12/14 20060101AFI20240228BHJP
G06F 12/1027 20160101ALI20240228BHJP
【FI】
G06F12/14 510D
G06F12/1027
(21)【出願番号】P 2021509892
(86)(22)【出願日】2019-10-21
(86)【国際出願番号】 GB2019052998
(87)【国際公開番号】W WO2020099825
(87)【国際公開日】2020-05-22
【審査請求日】2022-10-14
(32)【優先日】2018-11-14
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】アイラペティアン、ルーベン ボリソビッチ
(72)【発明者】
【氏名】バーンズ、グレイム ピーター
(72)【発明者】
【氏名】グリセンスウェイト、リチャード ロイ
【審査官】上島 拓也
(56)【参考文献】
【文献】特開昭63-037445(JP,A)
【文献】特開平06-309237(JP,A)
【文献】米国特許出願公開第2008/0256333(US,A1)
【文献】特開昭59-058700(JP,A)
【文献】特開平02-254553(JP,A)
【文献】米国特許出願公開第2017/0177429(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 12/1027
(57)【特許請求の範囲】
【請求項1】
ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するためのメモリ・アクセス回路であって、前記タグ保護式メモリ・アクセス動作が、デフォルトで、
前記ターゲット・アドレスに関連付けられたアドレス・タグと、前記ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び
前記保護タグと前記アドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、メモリ・アクセス回路と、
複数のメモリ領域の各メモリ領域について、前記ターゲット・アドレスが前記メモリ領域内にあるときに前記タグ保護式メモリ・アクセス動作が前記メモリ・アクセス回路によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・ストレージであって、各メモリ領域が複数の前記ブロックに対応する、制御タグ・ストレージと
を備
え、
前記コンフィギュレーション制御情報が厳密タグ・チェック・モード・フィールドを備え、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・チェック・モード・フィールドが設定されているメモリ領域内にあるとき、前記メモリ・アクセス回路は、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記アドレス指定先ロケーションへのメモリ・アクセスが実行されるのを防ぐように前記メモリ・アクセス回路が構成されるように、前記タグ保護式メモリ・アクセス動作を実行するように構成され、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・モード・フィールドが未設定のメモリ領域内にあるとき、前記メモリ・アクセス回路は、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記ミスマッチについて生成されるいかなるミスマッチ指標とも非同期に、前記アドレス指定先ロケーションへの前記メモリ・アクセスを実行可能にするように前記メモリ・アクセス回路が構成されるように、前記タグ保護式メモリ・アクセス動作を実行するように構成される、装置。
【請求項2】
各メモリ領域が1つ又は複数のメモリ・ページを備える、請求項1に記載の装置。
【請求項3】
各メモリ領域が単一のメモリ・ページを備える、請求項2に記載の装置。
【請求項4】
前記コンフィギュレーション制御情報が、同一タグ・モード・フィールドと、メモリ領域保護タグとを備え、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、同一タグ・モード・フィールドが設定されているメモリ領域内にあるとき、前記メモリ・アクセス回路は、前記アドレス指定先ロケーションを含む前記ブロックに関連付けられた前記保護タグではなく前記メモリ領域の前記メモリ領域保護タグと、前記アドレス・タグとが比較されるように、前記タグ保護式メモリ・アクセス動作を修正するように構成される、請求項1から3までのいずれかに記載の装置。
【請求項5】
前記コンフィギュレーション制御情報が完全マッチ・モード・フィールドを備え、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、完全マッチ・モード・フィールドが設定されているメモリ領域内にあるとき、前記メモリ・アクセス回路は、前記アドレス・タグが所定値をもつ場合に、前記アドレス・タグと前記保護タグとの比較がバイパスされるように前記タグ保護式メモリ・アクセス動作を修正するように構成され、前記生成するステップは、前記保護タグと前記アドレス・タグの間でマッチが検出されたという指標を生成するステップを含む、請求項1から4までのいずれかに記載の装置。
【請求項6】
前記制御タグ・ストレージがキャッシュ構造を含む、請求項1から
5までのいずれかに記載の装置。
【請求項7】
前記制御タグ・ストレージが、複数のエントリを有するトランスレーション・ルックアサイド・バッファ(TLB)によって提供され、各エントリが、メモリ・ページのアドレス・トランスレーション情報を保持し、前記メモリ・ページの前記コンフィギュレーション制御情報を識別するために使用されるフィールドを含む、請求項2に従属する場合の請求項
6に記載の装置。
【請求項8】
各メモリ領域の前記コンフィギュレーション制御情報が、前記メモリ・システムのメモリ区域内に保持され、装置がさらに、
判定されたメモリ領域の前記コンフィギュレーション制御情報を前記メモリ区域からロードするように前記メモリ・アクセス回路を制御するために、コンフィギュレーション制御情報アクセス命令をデコードし、判定されたメモリ領域の更新済みコンフィギュレーション制御情報を、前記メモリ区域にストアする命令デコーダをさらに備える、請求項1から
7までのいずれかに記載の装置。
【請求項9】
前記メモリ区域が、前記コンフィギュレーション制御情報アクセス命令を使用してアクセス可能な前記メモリ・システムの専用区域である、請求項
8に記載の装置。
【請求項10】
前記制御タグ・ストレージにストアされた前記コンフィギュレーション制御情報についてリフレッシュ動作を実行するためのトリガに応答する制御タグ・ストレージ更新回路をさらに備える、請求項1から
9までのいずれかに記載の装置。
【請求項11】
前記トリガが、前記装置によるリフレッシュ命令の実行時に生じ、前記リフレッシュ命令が、1つ又は複数のメモリ領域であって、そのコンフィギュレーション制御情報が前記リフレッシュ動作を受けることになる1つ又は複数のメモリ領域を識別するために使用されるアドレス指標を提供する、請求項
10に記載の装置。
【請求項12】
前記リフレッシュ命令が、TLBリフレッシュ・コンフィギュレーション制御情報命令であり、前記命令は実行されると、前記TLB内でメンテナンス動作を実行させて、前記TLBリフレッシュ・コンフィギュレーション制御情報命令の前記アドレス指標によって識別されるメモリ・ページのコンフィギュレーション制御情報を、前記TLB内のどのエントリが提供するかを識別し、識別された各エントリの前記コンフィギュレーション制御情報についてリフレッシュ動作を実行する、請求項
7に従属する場合の請求項
11に記載の装置。
【請求項13】
前記リフレッシュ・アクションが、
前記エントリにストアされた前記コンフィギュレーション制御情報を無効化するステップと、
前記コンフィギュレーション制御情報の最新バージョンを前記メモリ・システムから検索することにより、前記エントリにストアされた前記コンフィギュレーション制御情報を更新するステップ
のうちの1つを含む、請求項
12に記載の装置。
【請求項14】
前記トリガが、判定されたメモリ領域の更新済みコンフィギュレーション制御情報を前記メモリ・システムにストアするために使用されるストア命令の実行時に生じる、請求項
10に記載の装置。
【請求項15】
前記リフレッシュ動作を実行するために、前記装置のどの動作モードが有効にされるかを制御するためのシステム制御レジスタをさらに備える、請求項
10から
14までのいずれかに記載の装置。
【請求項16】
前記システム制御レジスタは、前記装置がアプリケーション・レベルで動作している間に、前記リフレッシュ動作を実行することが許可される範囲を識別する、請求項
15に記載の装置。
【請求項17】
前記システム制御レジスタが、前記リフレッシュ動作を使用して試みられるサービス妨害攻撃を、前記アプリケーション・レベルで防止しようとするように設定される、請求項
16に記載の装置。
【請求項18】
前記メモリ・アクセス回路が、選択されたブロックに関連付けられた保護タグにアクセスするための要求に応答して、前記選択されたブロックに関連付けられた前記メモリ領域
に同一タグ・モード・フィールドが設定されているとき、代替的なアクションを取る、請求項4に従属する場合の請求項1から
17までのいずれかに記載の装置。
【請求項19】
選択されたメモリ領域について、前記選択されたメモリ領域
の同一タグ・モード・フィールドが未設定であるデフォルト・モードと、前記選択されたメモリ領域の前記同一タグ・モード・フィールドが設定されている同一タグ・モードとを、トリガ条件に応じて切り替えるように構成された、請求項4に従属する場合の請求項1から
18までのいずれかに記載の装置。
【請求項20】
前記トリガ条件は、前記同一タグ・モード・フィールドが設定されているときに、前記選択されたメモリ領域内のブロックに関連付けられた保護タグについて実行される更新であり、前記同一タグ・モードから前記デフォルト・モードへの移行を生じさせる、請求項
19に記載の装置。
【請求項21】
前記移行が、
移行動作を実施するための複数の命令を実行するステップであって、前記移行動作が、前記選択されたメモリ領域の前記コンフィギュレーション制御情報の少なくとも前記同一タグ・モード・フィールドを未設定にさせる、ステップと、
前記移行動作をエミュレーションするために、前記装置のより高い動作モードに例外を入れるステップ
のうちの1つによって処理される、請求項
20に記載の装置。
【請求項22】
前記メモリ・ページが、
物理メモリ・ページと、
仮想メモリ・ページ
のうちの1つである、請求項2に従属する場合の請求項1から
21までのいずれかに記載の装置。
【請求項23】
前記メモリ・ページが仮想メモリ・ページであり、前記コンフィギュレーション制御情報が、前記メモリ・システムのページ・テーブルに保有されるアドレス・トランスレーション情報から判定される、請求項
22に記載の装置。
【請求項24】
前記アドレス・トランスレーション情報のどのビットが前記コンフィギュレーション制御情報を提供するかを識別するために、システム・レジスタが使用される、請求項
23に記載の装置。
【請求項25】
前記コンフィギュレーション制御情報の更新が、前記装置によりその現在の動作モードで実行することが許可されるかどうか、又は前記更新の要求を処理するのに、より高い動作モードに例外が必要かどうかを、アドレス・トランスレーション因子の知識に基づき判定するための判定回路をさらに備える、請求項1から
24までのいずれかに記載の装置。
【請求項26】
メモリ・アクセスを制御する方法であって、
ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するステップであって、前記タグ保護式メモリ・アクセス動作が、デフォルトで、
前記ターゲット・アドレスに関連付けられたアドレス・タグと、前記ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び
前記保護タグと前記アドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、実行するステップと、
複数のメモリ領域の各メモリ領域について、コンフィギュレーション制御情報をストアするステップと、
前記ターゲット・アドレスが前記メモリ領域内にあるときに、前記タグ保護式メモリ・アクセス動作が前記メモリ・アクセス回路によってどのように実行されるかを制御するために、前記コンフィギュレーション制御情報を使用するステップであって、各メモリ領域が、前記ブロックの少なくとも1つに対応する、使用するステップと
を含
み、
前記コンフィギュレーション制御情報が厳密タグ・チェック・モード・フィールドを備え、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・チェック・モード・フィールドが設定されているメモリ領域内にあるとき、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記アドレス指定先ロケーションへのメモリ・アクセスが実行されるのを防ぐように前記メモリ・アクセス回路が構成されるように、前記タグ保護式メモリ・アクセス動作を実行し、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・モード・フィールドが未設定のメモリ領域内にあるとき、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記ミスマッチについて生成されるいかなるミスマッチ指標とも非同期に、前記アドレス指定先ロケーションへの前記メモリ・アクセスが実行可能にされる、方法。
【請求項27】
ターゲット・プログラム・コードの命令を実行するための命令実行環境を提供するように、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するためのメモリ・アクセス・プログラム論理であって、前記タグ保護式メモリ・アクセス動作が、デフォルトで、
前記ターゲット・アドレスに関連付けられたアドレス・タグと、前記ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び
前記保護タグと前記アドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、メモリ・アクセス・プログラム論理と、
複数のメモリ領域の各メモリ領域について、前記ターゲット・アドレスが前記メモリ領域内にあるときに前記タグ保護式メモリ・アクセス動作が前記メモリ・アクセス・プログラム論理によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・データ構造であって、各メモリ領域が前記ブロックのうちの少なくとも1つに対応する、制御タグ・データ構造と
を含
み、
前記コンフィギュレーション制御情報が厳密タグ・チェック・モード・フィールドを備え、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・チェック・モード・フィールドが設定されているメモリ領域内にあるとき、前記メモリ・アクセス・プログラム論理は、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記アドレス指定先ロケーションへのメモリ・アクセスが実行されるのを防ぐように前記メモリ・アクセス・プログラム論理が構成されるように、前記タグ保護式メモリ・アクセス動作を実行するように構成され、
前記ターゲット・アドレスによって識別される前記アドレス指定先ロケーションが、厳密タグ・モード・フィールドが未設定のメモリ領域内にあるとき、前記メモリ・アクセス・プログラム論理は、前記保護タグと前記アドレス・タグの間でミスマッチが検出されたときに、前記ミスマッチについて生成されるいかなるミスマッチ指標とも非同期に、前記アドレス指定先ロケーションへの前記メモリ・アクセスを実行可能にするように前記メモリ・アクセス・プログラム論理が構成されるように、前記タグ保護式メモリ・アクセス動作を実行するように構成される、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の技法は、データ処理の分野に関する。
【背景技術】
【0002】
データ処理装置によって実行されるソフトウェアは、通常、高レベルのプログラミング言語で記述され、次いで、装置によってサポートされている命令セット・アーキテクチャに応じてコードにコンパイルされて、その装置上でソフトウェアが実行されてもよい。たとえば、ソフトウェアは、最初にJava、C、又はC++などの、より高レベルな言語で記述され、次いで、x86、又はArm(登録商標)など、ネイティブにサポートされる命令セット・アーキテクチャにコンパイルされてもよい。
【0003】
Javaなど、より高レベルのプログラミング言語の一部は、メモリ・アクセスに関するある特定のエラーをチェックするためのランタイム・エラー検出チェックを含んでいることから、メモリ・セーフ言語と考えられる。対照的に、C、及びC++などのメモリ・アンセーフ言語は、そのようなランタイム・エラー・チェックを含んでいない。メモリ・アンセーフ言語の使用が長期にわたって普及していることは、所与の命令セット・アーキテクチャに応じてコンパイルされたコードに、メモリに関する多数のエラーが存在する恐れがあることを意味し、これらのエラーは、アタッカー又は他の悪意ある者による利用に対して脆弱である恐れがある。こうしたエラーには、以下のものが含まれ得る。
・境界違反(コードによって与えられるアレイ・インデックスが、そのアレイの正規の境界の外側にある)
・解放済みメモリ操作のエラー(use-after-free error)(メモリ・ロケーションがすでに割り当て解除、又は解放された後に、そのメモリ・ロケーションへのアクセスが実行される)
・関数外からの操作(use-after-return)(関数内で使用される変数(スタックの値など)に関連付けられたアドレスへのメモリ・アクセスが、その関数からすでに戻った後に実行される)
・スコープ外からの操作のエラー(use-out-of-scope error)(変数の宣言されたスコープの外側で、それらの変数へのアクセスが実行される)
・初期化前操作のエラー(use-before-initialisation error)(変数の初期化が完了する前に、その変数に関連付けられたメモリ・アドレスへのアクセスが実行される)
【0004】
これらは、メモリ関連エラーのほんの一部の実例であり、結果的に予測不可能な挙動をもたらし、アタッカーが利用する道筋を潜在的に提供する恐れがある。したがって、所与の処理装置によってサポートされる命令セット・アーキテクチャ内で、アーキテクチャによるサポートを提供して、ある特定のクラスのメモリ・エラーをランタイム検出しやすくすることが望ましい場合がある。
【先行技術文献】
【非特許文献】
【0005】
【文献】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、冬、1990年、USENIX会議、53~63ページ
【発明の概要】
【課題を解決するための手段】
【0006】
1つの例示的なコンフィギュレーションでは、ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作(tag-guarded memory access operation)を実行するためのメモリ・アクセス回路であって、タグ保護式メモリ・アクセス動作が、デフォルトで、ターゲット・アドレスに関連付けられたアドレス・タグと、ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び保護タグとアドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、メモリ・アクセス回路と、複数のメモリ領域の各メモリ領域について、ターゲット・アドレスがそのメモリ領域内にあるときにタグ保護式メモリ・アクセス動作がメモリ・アクセス回路によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・ストレージであって、各メモリ領域が複数のブロックに対応する、制御タグ・ストレージとを備える装置が提供される。
【0007】
別の例示的なコンフィギュレーションでは、メモリ・アクセスを制御する方法であって、ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するステップであって、前記タグ保護式メモリ・アクセス動作が、デフォルトで、ターゲット・アドレスに関連付けられたアドレス・タグと、ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び保護タグとアドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、実行するステップと、複数のメモリ領域の各メモリ領域について、コンフィギュレーション制御情報をストアするステップと、ターゲット・アドレスがそのメモリ領域内にあるときに、タグ保護式メモリ・アクセス動作がメモリ・アクセス回路によってどのように実行されるかを制御するために、コンフィギュレーション制御情報を使用するステップであって、各メモリ領域が、ブロックの少なくとも1つに対応する、使用するステップとを含む方法が提供される。
【0008】
さらなる例示的なコンフィギュレーションによれば、ターゲット・プログラム・コードの命令を実行するための命令実行環境を提供するように、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するためのメモリ・アクセス・プログラム論理であって、タグ保護式メモリ・アクセス動作が、デフォルトで、ターゲット・アドレスに関連付けられたアドレス・タグと、ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び保護タグとアドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、メモリ・アクセス・プログラム論理と、複数のメモリ領域の各メモリ領域について、ターゲット・アドレスがそのメモリ領域内にあるときにタグ保護式メモリ・アクセス動作がメモリ・アクセス・プログラム論理によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・データ構造であって、各メモリ領域が、ブロックの少なくとも1つに対応する、制御タグ・データ構造とを含む、コンピュータ・プログラムが提供される。
【0009】
さらなる例示的なコンフィギュレーションでは、ターゲット・アドレスに応答してタグ保護式メモリ・アクセス動作を実行するためのメモリ・アクセス手段であって、タグ保護式メモリ・アクセス動作が、デフォルトで、ターゲット・アドレスに関連付けられたアドレス・タグと、ターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされている保護タグとを比較するステップ、及び保護タグとアドレス・タグの間でマッチが検出されたかどうかの指標を生成するステップを含む、メモリ・アクセス手段と、複数のメモリ領域の各メモリ領域について、ターゲット・アドレスがそのメモリ領域内にあるときにタグ保護式メモリ・アクセス動作がメモリ・アクセス手段によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・ストレージ手段であって、各メモリ領域が、複数のブロックに対応する、制御タグ・ストレージ手段とを備える装置が提供される。
【0010】
本発明の技法を、添付図面に示すその実例を参照しながら、単なる例としてさらに説明する。
【図面の簡単な説明】
【0011】
【
図2】アドレス・タグが保護タグにマッチするかどうかをチェックするステップを含む、タグ保護式メモリ・アクセス動作の実例を示す図である。
【
図3】例示的な一構成による、メモリ・アドレス空間、及びそのメモリ・アドレス空間内に保護タグとページ・タグの両方を提供することを示す概略図である。
【
図4】例示的な一構成による、ページ・タグ内に提供されてもよい複数のフィールドを示す図である。
【
図5】関連するメモリ領域のページ・タグ内に同一タグ・モード(same tag mode)が設定されているかどうかに応じて、タグ保護式メモリ・アクセス動作がどのように処理されてもよいかを示すフロー図である。
【
図6】関連するメモリ領域のページ・タグ内に完全マッチ・モード(match all mode)が設定されているかどうかに応じて、タグ保護式メモリ・アクセス動作がどのように処理されてもよいかを示すフロー図である。
【
図7】関連するメモリ領域のページ・タグ内に厳密タグ・チェック・モード(precise tag check mode)が設定されているかどうかに応じて、タグ保護式メモリ・アクセス動作がどのように処理されてもよいかを示すフロー図である。
【
図8】例示的な一構成による、ページ・タグ値を組み込むために、
図1のTLBがどのように拡張されてもよいかを示す図である。
【
図9】例示的な一構成による、
図1のTLB内に提供されてもよい構成要素を示すブロック図である。
【
図10】例示的な一構成における、
図9のページ・タグの更新/リフレッシュ動作回路を示すフロー図である。
【
図11】例示的な一構成による、
図9のタグ・アクセス制御回路の動作を示すフロー図である。
【
図12】例示的な一構成による、装置のシステム制御レジスタ内に提供された設定に応じて、TLBリフレッシュ動作がどのように処理されてもよいかを示すフロー図である。
【
図13A】1つの例示的なコンフィギュレーションによる、選択されたグラニュールの保護タグを更新しようとするときに取られてもよいステップを示すフロー図である。
【
図13B】選択されたグラニュールの保護タグを更新しようとするときに実行することができるステップの特定のシーケンスであって、この特定の機構が、同一タグ・モードからデフォルト・モードへの移行を生じさせる、シーケンスを示すフロー図である。
【
図14】例示的な一構成による、選択されたグラニュールのメモリから保護タグを読み取ろうとする要求を処理するために実行されてもよいステップを示すフロー図である。
【
図15】例示的な一構成による、ページ保護タグをメモリにストアするための動作が、どのように処理されてもよいかを示すフロー図である。
【
図16】本明細書に記載の技法をサポートするシミュレータの実例を示す図である。
【発明を実施するための形態】
【0012】
上記に述べたタイプのある特定のメモリ使用エラーを保護するための1つの手法は、1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされた保護タグを提供することであってもよい。メモリ・システム内の特定のアドレス指定先ロケーションを識別するターゲット・アドレスに基づき、タグ保護式メモリ・アクセス動作が要求されると、メモリ・アクセス回路は、そのターゲット・アドレスに関連付けられたアドレス・タグと、そのターゲット・アドレスによって識別されるアドレス指定先ロケーションを含む1つ又は複数のメモリ・ロケーションのブロックに関連してメモリ・システムにストアされた保護タグとを比較してもよい。メモリ・アクセス回路は、保護タグとアドレス・タグの間でマッチが検出されたかどうかの指標を生成してもよい。この指標は、メモリ・アクセスを続けることが許可されるかどうか、又は後の動作を続けることができるかどうかを制御するために使用することができ、或いは、メモリ・アクセスを通常通り続けられるようにしながら、単に報告されるだけであってもよい。
【0013】
これは、たとえばC又はC++などのメモリ・アンセーフ言語に基づきコードをコンパイルするコンパイラは、メモリ領域を初期化するときに、そのコードがアクセスすることが予想されるメモリのブロックの保護タグを特定の値に設定することができ、対応するアドレス・タグ値を、これらのブロックを指すターゲット・アドレスに関連付けることができるので、有用な場合がある。メモリ使用エラーが生じ、たとえばアドレス・ポインタが、初期化された有効範囲のスコープ外で使用される、又はその境界外に拡張する場合、アドレス指定先ロケーションに関連付けられた保護タグが、ターゲット・アドレスに関連付けられたアドレス・タグにマッチしないかもしれない可能性が高く、この場合次いで、マッチが検出されたかどうかの指標を使用して、何らかのエラー処理対応又はエラー報告機構をトリガすることができる。取られる特定の対応は、実行されているソフトウェアの特定の必要性に応じて、又はアーキテクチャの特定のマイクロ・アーキテクチャ的な実装形態に応じて異なってもよい。したがって、高レベル言語が、メモリ・アクセス・エラーを保護するためにランタイム・エラー・チェックを実行する手段を有していない場合でも、コンパイル済みコードに使用されるISAは、こうしたチェックを実行するためのアーキテクチャ的特徴を含むことができる。
【0014】
しかし、タグ保護式メモリ・アクセス動作を実行するための、より柔軟で効率のよい機構を提供することが望ましい。
【0015】
本明細書に記載の技法によれば、複数のメモリ領域の各メモリ領域について、ターゲット・アドレスがそのメモリ領域内にあるときにタグ保護式メモリ・アクセス動作がメモリ・アクセス回路によってどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするように構成された制御タグ・ストレージが、データ処理装置に設けられる。それぞれのメモリ領域は、複数のブロックに対応するように構成される。したがって、本明細書に記載の技法によれば、タグ保護式メモリ・アクセス動作の実行の仕方を、現在アクセス中のメモリ領域に応じて、制御することができる。これにより、個々のメモリ領域を別々に扱うことができるので、柔軟性が大幅に高まる。またこの手法は、以下でより詳細に述べるように、ある特定のメモリ領域のブロックに関連付けられた個々の保護タグにアクセスする、又はそれを更新する必要性を回避しながら、そのメモリ領域に対して所望の形態のタグ保護式メモリ・アクセス動作をなお実行できるようにするので、かなりの効率上の利益を得ることも可能にする。
【0016】
各メモリ領域は様々な形態を取ることができるが、例示的な一実装形態では、各メモリ領域は、1つ又は複数のメモリ・ページを備える。特に、メモリ・アドレス空間は通常、複数の物理ページにパーティショニングされ、コンフィギュレーション制御情報が提供される各メモリ領域は、これらの物理ページの1つ又は複数に対応可能であることが理解される。仮想から物理へのアドレス・トランスレーションを利用するシステム内では、仮想ページも定義されてよいことが理解され、仮想ページ内の仮想アドレスを物理アドレスにトランスレートできるようにするのに必要なトランスレーション情報は、メモリ内の1つ又は複数の関連したページ・テーブルから取得される。本明細書に記載の技法によれば、各メモリ領域を形成する1つ若しくは複数のメモリ・ページは物理ページであってもよく、又は代替的に仮想ページであってもよい。
【0017】
一実装形態では、各メモリ領域は2つ以上のメモリ・ページを備えてもよいが、特定の一実装形態では、各メモリ領域は単一のメモリ・ページを備える。この実装形態は、タグ保護式メモリ・アクセス動作をページごとに制御できるようにし、また関連するコンフィギュレーション制御情報を効率的に管理しそれにアクセスできるようにするので、本明細書に記載の技法を使用するのに特に効率的な形を実現することが認められている。たとえば、個々のメモリ・ページに関する情報を保持するために、1つ又は複数のキャッシュ構造が装置内に設けられてもよい場合が多い。たとえば、トランスレーション・ルックアサイド・バッファ(TLB)が、特定のメモリ・ページに関するアドレス・トランスレーション・データをストアするために使用されてもよい。メモリ領域が単一のメモリ・ページを備える実装形態では、コンフィギュレーション制御情報もページごとに提供されるので、たとえば既存のキャッシュ構造を活用することにより、そのコンフィギュレーション制御情報も容易に装置内にキャッシュすることができる。
【0018】
コンフィギュレーション制御情報は、様々な形を取ることできる。一実例では、コンフィギュレーション制御情報は、同一タグ・モード・フィールド、及びメモリ領域保護タグを備える。次いで、ターゲット・アドレスによって識別されるアドレス指定先ロケーションが、同一タグ・モード・フィールドが設定されているメモリ領域内にあるとき、メモリ・アクセス回路は、アドレス指定先ロケーションを含むブロックに関連付けられた保護タグではなく、そのメモリ領域のメモリ領域保護タグと、アドレス・タグとが比較されるように、タグ保護式メモリ・アクセス動作を修正するように構成されてもよい。こうした手法は、大幅な性能/効率の利益を提供することができる。たとえば、特定のメモリ領域内のすべてのブロックを、同一の保護タグ値にすることが適切だと考えられる状況では、コンフィギュレーション制御情報内で代わりに同一タグ・モード・フィールドを設定し、所望の保護タグ情報を、コンフィギュレーション制御情報内のメモリ領域保護タグとしてストアすることによって、それらの個々の保護タグ値を設定する必要性を回避することができる。同一タグ・モード・フィールドが設定されている間、メモリ領域内のメモリ・ロケーションのブロックに関して実行されるあらゆるタグ保護式メモリ・アクセス動作は、各ブロックに関連付けられた個々の保護タグを使用するのではなく、そのメモリ領域のコンフィギュレーション制御情報としてストアされた単一のメモリ領域保護タグを使用して、実行されることになる。
【0019】
対応するコンフィギュレーション制御情報に同一タグ・モード・フィールドが設定されているメモリ領域内のブロックについて個々の保護タグを保持する必要性をなくすことにより、性能/効率の利益を実現できることに加えて、この手法はまた、あらゆる個々のタグ保護式メモリ・アクセス動作中に実行されるチェックを、より迅速に実行できるようにすることもできる。特に、個々のブロックに基づく保護タグの数と比較したとき、存在することになるメモリ領域保護タグの数が少ないので、ブロックの個々の保護タグよりもメモリ領域の保護タグにアクセスするほうが迅速なことがある。これは、メモリ領域保護タグが、TLBなど、装置のキャッシュ構造内にキャッシュされる場合に特に当てはまることがある。
【0020】
コンフィギュレーション制御情報は、上述した同一タグ・モードなどの単一のモードだけをサポートする必要はなく、代替的に又は追加的に、異なるモードもコンフィギュレーション制御情報によって識別されてよい。たとえば、例示的な一構成では、コンフィギュレーション制御情報は、完全マッチ・モード・フィールドを備えてもよい。次いで、ターゲット・アドレスによって識別されるアドレス指定先ロケーションが、完全マッチ・モード・フィールドが設定されているメモリ領域内にあるとき、メモリ・アクセス回路は、アドレス・タグが所定値をもつ場合に、アドレス・タグと保護タグとの比較がバイパスされるように、タグ保護式メモリ・アクセス動作を修正するように構成されてもよく、生成ステップは、保護タグとアドレス・タグの間でマッチが検出されたという指標を生成するステップを含む。これにより、柔軟性を大幅に高めながら、タグ保護式メモリ・アクセス手法の完全な安全性を必要に応じて保証することができる。特にこれは、必要と考えられるメモリ領域においてのみ、タグ保護式メモリ・アクセス手法を使用することができ、他のメモリ領域は、アドレス・タグを所定値に設定することにより、タグ保護式メモリ・アクセス制御を効率的にバイパスできることを意味する。これは様々な状況において有用な場合がある。たとえば、いくつかの既存の手順は、アドレスの1つ又は複数の上位ビットを正規にクリアすることがあり、上位ビットは、たとえばアドレス・タグ情報を含んでもよい。この特定の実例は、圧縮ポインタを使用することである。したがって、こうした事例では、そのようなアクティビティが実行されているメモリ領域内に完全マッチ・モード・フィールドを設定し、それにより保護タグとアドレス・タグの差異がフラグ設定されないようにすることが有益な場合がある。
【0021】
例示的な一構成では、ターゲット・アドレスによって識別されるアドレス指定先ロケーションが、完全マッチ・モード・フィールドが設定されているメモリ領域内にあるが、保護タグが上述した所定値以外である場合には、通常のタグ保護式メモリ・アクセス動作が実行されることになる。その時点で実行されるタグ保護式メモリ・アクセス動作の実際の形は、そのメモリ領域に提供される他のコンフィギュレーション情報に応じて異なる。たとえば、同一タグ・モード・フィールドが設定されている場合、アドレス・タグの比較は、メモリ・ロケーションの関連ブロックに関連する保護タグではなく、メモリ領域保護タグを参照して実行されることになる。
【0022】
上述した完全マッチ・モードは、所定値を有するアドレス・タグを参照するが、代替的な実装形態では、所定値に設定されているのが保護タグである場合があり、したがって、保護タグが所定値を有する場合には、アドレス・タグと保護タグの比較がバイパスされる。
【0023】
メモリ領域のコンフィギュレーション制御情報の一部として保持されてもよい情報の別の実例として、コンフィギュレーション制御情報は、厳密タグ・チェック・モード・フィールドを備えてもよい。次いで、ターゲット・アドレスによって識別されるアドレス指定先ロケーションが、厳密タグ・チェック・モード・フィールドが設定されているメモリ領域内にあるとき、メモリ・アクセス回路は、保護タグとアドレス・タグの間でミスマッチが検出されたときに、実行中のアドレス指定先ロケーションへのメモリ・アクセスを防ぐようにメモリ・アクセス回路が構成されるように、タグ保護式メモリ・アクセス動作を実行するように構成されてもよい。したがって、こうした手法によれば、厳密タグ・チェック・モード・フィールドが設定されているとき、保護タグとアドレス・タグのチェックは、関連するメモリ・アクセスと同期して実行され、それによりミスマッチがある場合には、メモリ・アクセスがストップされる。この時点で取られるアクションは様々であってもよいが、一実施例では、より高い例外レベルに例外を生成することができ、ここで適切なアクションが取られてもよい。
【0024】
さらに、例示的な一構成では、ターゲット・アドレスによって識別されるアドレス指定先ロケーションが、厳密タグ・モード・フィールドが未設定のメモリ領域内にあるとき、メモリ・アクセス回路は、保護タグとアドレス・タグの間でミスマッチが検出されたときに、そのミスマッチに関して生成されるいかなるミスマッチの指標とも非同期に、アドレス指定先ロケーションへのメモリ・アクセスを実行可能にするようにメモリ・アクセス回路が構成されるように、タグ保護式メモリ・アクセス動作を実行するように構成されてもよい。したがって、こうした手法では、チェックが実行されている間にメモリ・アクセスが遅延することはなく、その代わりに、あらゆるミスマッチ指標がメモリ・アクセスとは非同期に生成されて、マッチ又はミスマッチが生じたかどうかが示される。ミスマッチが検出されるたびに、別個のミスマッチ指標が生成され、したがってタグ・チェックに失敗したメモリ・アクセスを直接識別できるようにしてもよいが、他の実装形態では、たとえば1つ又は複数のアクセスがタグ・チェックに失敗したことを示す、より汎用性の高い指標が発行されてもよく、その指標に続いて追加的な調査を実行して、失敗したメモリ・アクセスについてのさらなる詳細事項を確認できるようにしてもよいことに留意すべきである。
【0025】
いくつかの事例では、(たとえば、データへの頻繁なアクセスを現在実行しているメモリ・ページに関して厳密タグ・チェック・モードを無効にすることにより)データ処理の速度を向上させるために、ある特定のメモリ領域には厳密タグ・チェック・モードを設定しないことが有用な場合がある。しかし、コンフィギュレーション制御情報は、メモリ領域ごとに指定されることが可能なので、ページごとの例示的な一実装形態では、説明した手法は、装置によって実行されているプロセス全体について厳密タグ・チェック・モードを無効にする必要はなく、必要なところだけそれを無効にすることにより、安全性/デバッグ能力を増大させることができる。
【0026】
制御タグ・ストレージは様々な形を取ることができる。たとえば、制御タグ・ストレージは、メモリ・アクセス回路が結合されているメモリ・システムの一部によって形成されてもよい。いくつかの実装形態では、制御タグ・ストレージは、ある特定のメモリ領域のコンフィギュレーション制御情報をキャッシュするためのキャッシュ構造を含み、そのコンフィギュレーション制御情報へのアクセス速度を増大させてもよい。こうしたキャッシュ構造が使用される場合、キャッシュ構造は様々な形を取ることができる。たとえば、キャッシュ構造は、1つ又は複数のメモリ領域のコンフィギュレーション制御情報をキャッシュするために使用される専用のキャッシュ構造とすることができる。或いは、キャッシュ構造は、メモリ・ロケーションの個々のブロックの保護タグをキャッシュするためにも使用されるキャッシュ構造であってもよい。
【0027】
各メモリ領域が1つ又は複数のメモリ・ページを備える例示的な一構成では、複数のエントリを有するトランスレーション・ルックアサイド・バッファ(TLB)を含むように制御タグ・ストレージを構成することにより、キャッシュ構造の特に効率的な実装形態を実現することができる。TLBの標準的な挙動のとおり、各エントリは、メモリ・ページのアドレス・トランスレーション情報を保持するために使用されるが、この実装形態では、各エントリは、そのメモリ・ページのコンフィギュレーション制御情報を識別するために使用されるフィールドも含む。こうしたメモリ・ページに関する他の情報を保持するためのエントリがすでに提供されているので、TLB構造を使用することにより、メモリ・ページに関連付けられたコンフィギュレーション制御情報をキャッシュするための特に的確な解決策を提供することができる。
【0028】
各メモリ領域が1つ又は複数の物理ページを備える例示的な一構成では、メモリのページ・テーブル構造を修正する必要はなく、各エントリのアドレス・トランスレーション情報は、標準的なやり方で取得される。しかし、それに加えて、各TLBエントリは、コンフィギュレーション制御情報を識別するために使用される追加フィールドを提供するために拡張されることが可能であり、当該ページのコンフィギュレーション制御情報の必要な項目を(たとえば、メモリ・システムからその情報を読み取ることによって)取得するために、別個のアクセスを実行することができる。
【0029】
しかし、代替的な実施例では、コンフィギュレーション制御情報はメモリの仮想ページに関連付けられてもよく、その事例では、コンフィギュレーション制御情報を含むようにメモリのページ・テーブル情報を補足することが可能であってもよい。その事例では、コンフィギュレーション制御情報は、アドレス・トランスレーション情報を取得するために使用されるページ・テーブル・ウォーク・プロセスの一部として検索され、TLBのエントリに移入される。いくつかのこうした事例、たとえばメモリ・アドレス空間全体的が相対的に小さい、より小型のシステムでは、コンフィギュレーション制御情報を収容するために使用することができる既存の冗長空間が、ページ・テーブル内に存在することがある。こうした実装形態では、ページ・テーブルから検索したアドレス・トランスレーション情報のどのビットがコンフィギュレーション制御情報を提供するかを識別するために、システム・レジスタが使用されてもよい。この変形形態は、TLBエントリが最初にすべて埋まっている場合には、すべての情報がページ・テーブル・ウォーク・プロセスの一部として直接検索されることから、ページ・タグ情報をロードするために追加のルックアップを必要としないので、より高速になることが可能である。さらにシステム・ページ・テーブルに十分な空間がない場合には、検討中の特定のアーキテクチャにおいて利用可能ならば、ページ・テーブル又は同様の構造の一部の拡張部にページ・タグ情報を入れることが可能であり、より効率的な場合がある。
【0030】
例示的な一構成では、メモリ領域ごとのコンフィギュレーション制御情報は、メモリ・システムのメモリ区域内に保持され、装置はさらに、判定されたメモリ領域のコンフィギュレーション制御情報をメモリ区域からロードするようにメモリ・アクセス回路を制御するためのコンフィギュレーション制御情報アクセス命令をデコードし、判定されたメモリ領域の更新済みコンフィギュレーション制御情報をメモリ区域にストアするための命令デコーダを備える。この目的のために、汎用メモリ・アドレス空間が使用されてもよく、したがってコンフィギュレーション制御情報にアクセスするために標準的なロード又はストアの命令が使用されてもよいが、例示的な一構成では、メモリ区域は、特にコンフィギュレーション制御情報をストアするために提供されるメモリ・システムの専用区域である。こうした事例では、コンフィギュレーション制御アクセス命令は、そのメモリ区域にアクセスするために提供される特定の形のロード及びストアの命令であってもよい。次いでこのシステムは、そのメモリ区域にアクセスするためのどの権利が、特定の例外レベルに与えられるかを構成することができる。たとえば、アプリケーション/ユーザのレベルでは、専用のメモリ区域は、その目的のために提供された特定のロード及びストアの命令を使用してしかアクセスできないことがあり、一方カーネル・レベルでは、他の命令を使用してその専用メモリ区域により自由にアクセスできてもよい。
【0031】
例示的な一構成では、装置はさらに、制御タグ・ストレージにストアされたコンフィギュレーション制御情報についてのリフレッシュ動作を実行するためのトリガに応答する制御タグ・ストレージ更新回路を備えてもよい。先に述べたように、制御タグ・ストレージは、1つ又は複数のキャッシュ構造を含んでもよく、制御タグ・ストレージ更新回路の使用は、キャッシュされた情報が古くなるのを回避するために使用されてもよい。
【0032】
リフレッシュ動作を実行するためのトリガを生じさせることができる複数のやり方が存在する。例示的な一構成では、トリガは、装置によるリフレッシュ命令の実行時に生じ、このリフレッシュ命令は、1つ又は複数のメモリ領域であって、そのコンフィギュレーション制御情報がリフレッシュ動作を受けることになる1つ又は複数のメモリ領域を識別するために使用されるアドレス指標を提供する。したがって、アドレス指標は、特定のアドレス若しくはアドレスの範囲を指定してもよく、その情報に基づき、リフレッシュ動作をそのコンフィギュレーション制御情報が受けることになる1つ又は複数のメモリ領域を判定することができる。
【0033】
リフレッシュ命令は、様々な形を取ることができる。コンフィギュレーション制御情報がTLB構造内にキャッシュされる実装形態では、リフレッシュ命令は、TLBリフレッシュ・コンフィギュレーション制御情報命令であってもよく、この命令は実行されると、TLB内でメンテナンス動作を実行させて、TLBリフレッシュ・コンフィギュレーション制御情報命令のアドレス指標によって識別されるメモリ・ページのコンフィギュレーション制御情報を、TLB内のどのエントリが提供するかを識別し、識別された各エントリのコンフィギュレーション制御情報についてリフレッシュ・アクションを実行させる。
【0034】
実行されるリフレッシュ・アクションは、様々な形を取ることができ、たとえばTLBの識別されたエントリにストアされたコンフィギュレーション制御情報を無効化すること、又はその情報の最新バージョンをメモリ・システムから検索することによりコンフィギュレーション制御情報を更新することのいずれかを含んでもよい。
【0035】
上述した実例では、トリガは、特定のリフレッシュ命令の実行に起因して生じるが、トリガは他のイベントに起因して生じてもよい。たとえば、トリガは、判定されたメモリ領域の更新済みコンフィギュレーション制御情報をメモリ・システムにストアするために使用されるストア命令の実行時に生じてもよい。特にこうしたストアを実行する際に、キャッシュされた情報が今では古くなっているかもしれない可能性があることが知られており、したがってリフレッシュ動作が直接トリガされてもよい。
【0036】
使用されるトリガ機構とは無関係に、リフレッシュ動作は、コンフィギュレーション制御情報を保持するTLBエントリの内容だけに影響を及ぼしてもよく、TLBの他のエントリの内容、すなわちアドレス・トランスレーション情報及び関連する属性情報は、例示的な一実装形態では、上述したリフレッシュ動作に応答して変更されないことに留意すべきである。しかし、TLBエントリ全体は、既存のTLB無効化動作を使用してなお無効化することができる。
【0037】
例示的な一実装形態では、リフレッシュ動作を実行するために装置のどの動作モードが有効にされるかを制御するために、システム制御レジスタを使用することができる。たとえば、システム制御レジスタは、装置がアプリケーション・レベル(ユーザ・レベルと呼ばれるときもある)で動作している間に、リフレッシュ動作の実行が許可される範囲を識別してもよい。
【0038】
システム制御レジスタ情報は、様々な形を取ることができる。たとえば、その情報は、複数の異なるモード間で選択するために使用されてもよい。たとえば、1つのモードは、例外レベル0ではリフレッシュ動作の実行が許可されず、その代わりに、例外レベル0でリフレッシュ動作を実行しようとするあらゆる試みは、例外レベル1、すなわちオペレーティング・システム/カーネルに関連付けられた例外レベルにトラップされるべきであることを示してもよい。或いは、すべてのページについてリフレッシュ動作が例外レベル0において許可されることを示す別のモードが指定されてもよい。別の実例として、メモリの関連するページ・テーブルにおいて指定されたページ属性に応じて、一部のページについてはリフレッシュ動作が例外レベル0において許可されることを示すモードが指定されてもよい。次いで、ページ属性の関連セットを、アーキテクチャ又は実装によって定義することができる。次いで、これらのページ属性が存在していない場合には、リフレッシュ動作を実行しようとする試みが、再び例外レベル1にトラップされてもよい。このタイプの情報をページごとに指定できることから、いくつかの事例では、リフレッシュ要求をより高い例外レベルにトラップする必要性を回避することにより、これは迅速なリフレッシュ動作を多くの状況において実行可能にすることができ、その一方でなお、必要に応じて安全性を維持して、リフレッシュがより高い例外レベルに確実にトラップされるようにする。
【0039】
一方では、ユーザ空間でこうしたリフレッシュ動作を許可することにより、信頼できないプロセスからサービス妨害攻撃を実行できる機構が生まれる恐れがある。たとえば、こうした信頼できないプロセスは、例外レベル0のユーザ空間内でリフレッシュ動作を頻繁に実行しようとし、それによりシステムを遅くする恐れがある。しかし、より高い例外レベルにトラップすることにより、こうしたサービス妨害攻撃の問題を管理するためにこれを使用することができる。したがって、1つの例示的なコンフィギュレーションでは、システム制御レジスタは、リフレッシュ動作を使用して試みられるサービス妨害攻撃を、アプリケーション・レベルで防止しようとするように設定されてもよい。
【0040】
たとえば、上記のタイプのコンフィギュレーションを使用することにより、信用できるプロセスについてのみ例外レベル0でのリフレッシュ動作を許可する一方、その他についてはそれを無効にするように、システム制御レジスタを例外レベル1において構成することができる。そうしたサービス妨害攻撃を緩和するための別のやり方は、リフレッシュ動作がN回実行されるごとに、又はN回以上のリフレッシュ動作の実行が所定の期間内に生じた場合に、リフレッシュ動作を例外レベル1にトラップできるようにすることであってもよい。これにより、ほとんどの場合に迅速なページ・タグ・リフレッシュが可能になるとともに、リフレッシュ動作を実行する頻度をカーネルが制御できるようになり、それにより関連するサービス妨害攻撃が防止される。
【0041】
先に述べた同一タグ・モードを使用する実装形態では、同一タグ・モードの設定は、先に述べたタグ保護式メモリ・アクセス動作に加えて、他の機能を制御するためにも使用することができる。特に、メモリ・アクセス回路は、選択されたブロックに関連付けられた保護タグにアクセスするための要求に応答して、選択されたそのブロックに関連付けられたメモリ領域に対して同一タグ・モード・フィールドが設定されているとき、代替的なアクションを取ってもよい。こうしたアクセスは、保護タグ値を読み取ろうとして、又は更新済み保護タグ値を書き込もうとして実行される場合がある。それぞれの場合、同一タグ・モードが設定されているときに実行される代替的なアクションは、異なってもよい。たとえば、あるブロックの保護タグ値をメモリにストアしようとする任意の命令が使用されると、同一タグ・モード・フィールドが設定されているメモリ領域内にこのブロックがある場合、例外が生成されてもよく、これにより、そのストア要求に関してどんなステップを取るべきかを例外処理ルーチンが判定することができる。別の実例として、あるブロックの保護タグをメモリから読み取ろうとする任意の命令が使用されると、同一タグ・モードが設定されているメモリ領域内にこのブロックがある場合、ブロックの保護タグではなくメモリ領域の保護タグが返されてもよい。
【0042】
例示的な一構成では、装置は、選択されたメモリ領域について、その選択されたメモリ領域の同一タグ・モード・フィールドが未設定であるデフォルト・モードと、その選択されたメモリ領域の同一タグ・モード・フィールドが設定されている同一タグ・モードとを、トリガ条件に応じて切り替えるように構成されてもよい。切替え機能は、特定の実装形態に応じて、ハードウェアで実装されてもソフトウェアで実装されてもよい。
【0043】
トリガ条件は、様々な形を取ることができる。たとえば、こうした方式は、スタックとして使用されるメモリ区域のタグ付けに関連して使用することができる。たとえば、デフォルトで、スタック・ページは同一タグ・モードが無効であってもよい。次いで、小さい変数のタグ付けは、同一タグ・モードが無効であるという前提で実行されてもよい。しかし、発見的手法により、大きいバッファのタグ付けが効率的だと考えられる場合には、同一タグ・モードを有効にする手法を使用して、そうした大きいバッファを代わりにタグ付け及びタグ外しすることができる。次いで、タグ外しするときには、元のタグ値に戻るように、同一タグ・モードを常に無効にすることができる。
【0044】
別の実例として、トリガ条件は、同一タグ・モード・フィールドが設定されているときに、選択されたメモリ領域内のブロックに関連付けられた保護タグについて実行される更新であってもよく、同一タグ・モードからデフォルト・モードへの移行を生じさせる。特に、同一タグ・モードからデフォルト・モードへ移行し、それによりその後、識別されたブロックについて新規に指定された保護タグ値をストアできるようにするために、ある特定のステップを取ることができる。
【0045】
こうした手法は、移行動作を実施するための複数の命令を実行することであって、この移行動作が、選択されたメモリ領域のコンフィギュレーション制御情報の少なくとも同一タグ・モード・フィールドを未設定にさせる、実行することによって、明示的に処理されてもよい。またこれらの命令によって、たとえば現在のメモリ領域の保護タグ値が、個々のブロックの保護タグのそれぞれに書き込まれて、それにより、識別されたブロックを新規の保護タグ値で更新する前に、そのブロックの前の保護タグ値が上書きされてもよい。
【0046】
或いは、複数の命令を実行するのではなく、移行動作をエミュレーションするために、例外が装置のより高い動作モードに入れられてもよい。例外のトリガは、いくつかの理由で生じることがある。たとえば、ブロックに関連付けられた保護タグを更新しようとする試みが存在するとき、対応するメモリ領域に同一タグ・モードが設定されている場合には、例外を直接トリガすることができる。
【0047】
例示的な一構成では、装置はさらに、コンフィギュレーション制御情報の更新を、装置によりその現在の動作モードで実行することが許可されるかどうか、又は更新の要求を処理するのに、より高い動作モードに例外が必要かどうかを、アドレス・トランスレーション因子の知識に基づき判定するための判定回路を備える。判定回路は、メモリ・アクセス回路の一部として提供されてもよい。アドレス・トランスレーション因子は、様々な形を取ることができる。たとえば、アドレス・トランスレーション因子は、システムが複数の異なる仮想ページ・サイズをサポートしていることであってもよく、ある特定のより低い例外レベルにおいて、使用されている最小ページ・サイズをソフトウェアが認識していないということであってもよい。この事例では、(更新を可能にするか又は防ぐかのいずれかになるように)更新要求を適宜処理できるように、更新手順をより高い例外レベルにトラップすることが必要な場合がある。しかし、最小ページ・サイズがユーザ空間に露出されることがある場合、これにより一部のこうした更新が、より高い例外レベルへのトラップなしに実行できるようになる恐れがある。特に、現在の更新が、最小ページ・サイズのページ・サイズに関係すると判定された場合、それらの更新は現在の例外レベルで実行が許可されることがあり、そうでない場合には、それらの更新は、より高い例外レベルにトラップされ、そこで更新の処理が実行されてもよい。
【0048】
別の実例として、特定の物理ページは、いくつかの仮想ページにマッピングされてもよく、この事例では、更新動作は、現在のマッピングに対する更新のみを実行してもよい。たとえば、マッピングのうちの1つについてTLB内にエントリがストアされている場合、リフレッシュは、その特定のマッピングについて実行されてもよいが、同じ物理ページに対する他のマッピングには実行されない。ソフトウェアが複数のマッピング・ケースを認識している場合、ソフトウェアはそれらを適宜処理することができる。しかし、EL0などのより低い例外レベルが共有を認識しない暗黙的なページ共有のケースをサポートするためには、更新動作がより高い例外レベルにトラップされることが好ましい場合がある。多くの事例では、暗黙的なページ共有が存在することは、ページに関連付けられた属性ビットのうちのいくつかによって暗示することができる。たとえば、暗黙的なページ共有が、コピー・オン・ライト手順で実装される場合、仮想ページを書込み不可能として示すことが可能であり、この場合、コンフィギュレーション制御情報を更新しようとする試みを、より高い例外レベルにトラップすることができる。
【0049】
所望される場合、情報の追加フィールドをコンフィギュレーション制御情報内に提供して、より高い例外レベルで処理する必要がある特別なケースを識別することができる。したがって、対応するフィールドが設定されている場合、あらゆるリフレッシュ動作は次の例外レベルにトラップされる。所望される場合、システムは、EL0などの非特権例外レベルによるそのフィールドの変更を却下するように構成されてもよい。
【0050】
ここで図面を参照しながら特定の実例を説明する。
【0051】
図1は、データ処理装置2の実例を概略的に示す。これは単に、装置の構成要素のサブセットの高レベル表現であり、装置は図示されていない多くの他の構成要素を含んでもよいことが理解される。装置2は、命令デコーダ6によってデコードされた命令に応答して、データ処理を実行するための処理回路4を備える。命令デコーダ6は、命令キャッシュ8からフェッチした命令をデコードして、その命令によって表される対応する処理動作を実行するように処理回路4を制御するための制御信号10を生成する。処理回路4は、レジスタ14にストアされた値に対して動作を実行して結果値を生成してそれをレジスタに再度書き込むための1つ又は複数の実行ユニットを含んでもよい。たとえば、実行ユニットは、算術演算又は論理演算を実行するための演算/論理ユニット(ALU)、浮動小数点オペランドを使用した演算を実行するための浮動小数点ユニット、及び/又は複数の独立したデータ・エレメントを含むオペランドに対してベクトル演算を実行するためのベクトル処理ユニットを含むことができる。また処理回路は、レジスタ14とメモリ・システムの間でデータの転送を制御するためのメモリ・アクセス・ユニット(又はロード/ストア・ユニット)15も含む。この実例では、メモリ・システムは、命令キャッシュ8、レベル1データ・キャッシュ16、データと命令で共有するレベル2キャッシュ17、及びメイン・メモリ18を含む。他のキャッシュ階層も実現可能であり、これは単に一実例に過ぎないことが理解される。ロード/ストア・ユニット15によってトリガされるメモリ・アクセスをサポートするために、アドレス・トランスレーション機能を提供するためのメモリ管理ユニット(MMU)20が提供される。MMUは、メモリ・システム16、17、18にストアされたページ・テーブルからエントリのサブセットをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)22を有する。各ページ・テーブル・エントリは、対応するアドレス・ページへのアドレス・トランスレーション・マッピングを提供してもよく、また、ページが読取り専用領域か、若しくは読取りも書込みも可能かどうかを指定するアクセス許可、又はどの特権レベルがそのページにアクセスできるかを指定するアクセス許可など、アクセス制御パラメータを指定してもよい。
【0052】
図2は、タグ保護式メモリ・アクセスの概念を概略的に示す。メモリ・システム内のメモリ・ロケーションを参照するために使用される物理アドレス空間は、複数のブロック30に論理的にパーティショニングされてもよく、各ブロックは、ある特定の数のアドレス指定可能なロケーションを備える。簡潔にするために、
図2の実例では、各ブロック30は4つのメモリ・ロケーションを備えるが、他のブロック・サイズも使用することができる。各ブロック30は、対応する保護タグ32に関連付けられる。ある特定の数のブロック30に関連付けられた保護タグは、まとめられて、物理アドレス空間内のアーキテクチャ的にアクセス可能な異なるメモリ・ロケーション34内か、アーキテクチャ的にアクセス可能ではない(同じ物理アドレス空間にマッピングされていない)メイン・メモリ18に設けられた追加のストレージ・ロケーション内のいずれかにストアされる。アーキテクチャ的にアクセス可能ではない別個のストレージを使用することは、一部のケースでは、保護タグ値をキャッシュするためのデータ・キャッシュ16、17の空間を使い尽くさないようにするために好ましい場合があり、それは、正規コードの性能に影響を及ぼすことがあり、コヒーレンスの管理をより複雑にすることがある。メイン・メモリ18からタグにアクセスしなくてはならない場合よりも迅速にアクセスできるように、アーキテクチャ的にアクセス可能ではないストレージからタグ値をキャッシュするための追加のタグ・キャッシュ19が、マイクロ・アーキテクチャに設けられてもよい。各ブロック30にどのタグ・ストレージ・ロケーション34が対応するかという特定のマッピングは、ロード/ストア・ユニット15によって制御されてもよく、ハードワイヤードであってもよく、又はプログラム可能であってもよい。
図2では、各タグ32が、物理アドレスのブロックに関連付けられているが、仮想メモリ・アドレス空間の仮想メモリ・ロケーションに関連付けられた保護タグ32を提供することも可能である。ただし、これには各メモリ・アクセスに対して多少追加のアドレス・トランスレーションが必要になることがある。したがって、保護タグ32を物理メモリ・ロケーションに関連付けることにより、これは性能を向上させることができる。概してそれは、特定のマイクロ・アーキテクチャ的な実装形態について、保護タグ32を物理アドレス空間の対応するブロック30に正確にはどのように関連付けるかの選択である。概して必要なのは、メモリの所与のブロックに関連付けられた保護タグ32にアクセスでき、それを比較できることだけである。
【0053】
したがって、タグ保護式メモリ・アクセスが必要なとき、(アクセスすることになるアドレス指定先ロケーション44を識別するターゲット・アドレス42に関連付けられた)アドレス・タグ40が、そのアドレス指定先ロケーション44を含むメモリ・ロケーション30のブロックに関連付けられた保護タグ32と比較される。たとえば、
図2では、ターゲット・アドレス42は、
図2のアドレス空間内に44でマークされたメモリ内のある特定のロケーションB1を指している。したがって、ロケーションB1を含むロケーションのブロックBに関連付けられた保護タグBが、ターゲット・アドレス42に関連付けられたアドレス・タグ40と比較される。
図2の上部に示すように、アドレス・タグ40は、ターゲット・アドレス自体の選択されたビットの関数として判定されてもよい。特にアドレス・タグは、アドレス指定先ロケーション44として選択される特定のメモリ・ロケーションを示すためには使用されていないターゲット・アドレスの部分内のビットから判定されてもよい。たとえば、いくつかのアーキテクチャでは、ターゲット・アドレスのビットの最上位部分は、符号拡張など、ある特定の固定値(すべて0又はすべて1)を常に有してもよく、したがってアドレスは、これらの未使用ビットを任意のタグ値で上書きすることによって、アドレス・タグ40にタグ付けされることが可能である。特定のアドレス・タグ値は、たとえばプログラマ、又はコンパイラによって選択することができる。アドレス・タグ及び保護タグ32は、相対的に少数のビット、たとえば4ビットとすることができ、したがって、メモリ内及びターゲット・アドレス内で広い空間を占有する必要はない。4ビットのタグ空間、すなわち16個の利用可能なタグ値を提供することは、多くの一般的なタイプのメモリ・アクセス・エラーを検出するには十分であり得る。
【0054】
したがって、タグ保護式メモリ・アクセスが実行されるとき、ロード/ストア・ユニット15は、アドレス・タグ40と、アドレス指定先ロケーション44を含むブロック30に関連付けられた保護タグ32を比較し、それらがマッチするかどうかを判定する。ロード/ストア・ユニット15は、アドレス・タグ40と保護タグ32がマッチしたかどうかを示すマッチ指標を生成する。たとえば、このマッチ指標は、アドレス・タグ40と保護タグ32の間にミスマッチが存在する場合に生成されるフォールト信号60とすることができ、又はマッチが存在したかどうかを示す、ステータス・レジスタに入れられる指標とすることができ、又はエラーが検出されたアドレス及び/若しくはエラーをトリガした命令の命令アドレスを示すためにエラー・レポートに追加されるエントリとすることができる。
【0055】
本明細書に記載の技法によれば、コンフィギュレーション制御情報が、複数の異なるメモリ領域ごとに提供され、ここで各メモリ領域は、
図2に示す複数のブロックを備える。メモリ領域は、様々な形を取ることができるが、例示的な一構成では、各メモリ領域はメモリ・ページを備え、ここで各メモリ・ページは、
図2に示す複数のブロックを含むことになる。これは
図3に概略的に示されており、ここで
図2で参照した個々のブロックは、
図3ではグラニュール100として参照され、各グラニュールは、それに関連付けられた保護タグを有する。先に述べた
図2と同様に、保護タグをストアするためのメモリ領域105が提供されてもよい。
【0056】
しかしそれに加えて、
図3に示すように、グラニュール100のグループは、対応するページをメモリ内に形成し、各ページに関連してページ・タグ110が提供される。本明細書に記載の例示的な実装形態を目的として、関連するコンフィギュレーション制御情報を有するそれぞれのメモリ領域は、ページであると仮定され、したがって本明細書では、関連するコンフィギュレーション制御情報は、ページ・タグとして参照される。メモリ120の領域を、ページ・タグをストアするために提供することができる。保護タグをメモリ内にどのようにストアできるかに関する先の記述は、ページ・タグ110にも等しく適用され、したがってページ・タグは、物理アドレス空間内のアーキテクチャ的にアクセス可能なメモリ・ロケーション内に、又はアーキテクチャ的にアクセス可能ではない(同じ物理アドレス空間にマッピングされていない)メモリに設けられた追加のストレージ・ロケーション内にストアされてもよい。後者の場合には、タグ・キャッシュ19が、ページ・タグもキャッシュするように拡張されてもよく、又は代替的に、別個のキャッシュ構造が提供されてもよい。本明細書において後述する特定の一実装形態では、ページ・タグは、実際にはTLB22のエントリ内にキャッシュされ、これによりページ・タグ情報をキャッシュするための特に効率的な機構が提供される。
【0057】
様々な形のコンフィギュレーション制御情報を、個々のページ・タグ内にストアすることができる。ページ・タグにストアされる情報は、タグ保護式メモリ・アクセス動作が、ロード/ストア・ユニット15によってどのように実行されるかを制御するために使用される。
図4は、ページ・タグ110の1つの特定の例示的な形を示す。
【0058】
図4に示すように、複数の異なるフィールドが提供される。特に、完全マッチ・モード・フィールド130が提供され、厳密タグ・チェック・モード・フィールド135が提供され、同一タグ・モード・フィールド140が提供され、さらにページ保護タグ(本明細書ではメモリ領域保護タグとも呼ぶ)をストアするためのページ保護タグ・フィールド145が提供される。これらの様々なフィールドのうちのどれが設定されているかに応じてタグ保護式メモリ・アクセス動作が制御される様子を、ここで
図5~
図7を参照しながらより詳細に述べる。
【0059】
図5は、フィールド140内に同一タグ・モードが設定されているかどうかに応じて、タグ保護式メモリ・アクセス動作がどのように修正されてもよいかを示している。ステップ150において、アクセス要求のターゲット・アドレスに関連付けられたメモリ・ページが識別され、ステップ155において、そのメモリ・ページのページ・タグが参照される。これは、ページ・タグをキャッシュするために設けられた、タグ・キャッシュ19若しくはTLB22などのキャッシュ構造内のそのページ・タグにアクセスすること、又はそのページ・タグがシステム内にキャッシュされていない場合には、関連するページ・タグをメモリから検索することを含んでもよい。
【0060】
ステップ160において、そのページ・タグに同一タグ・モードが設定されているかどうかが判定され、設定されていない場合には、プロセスは単にステップ165に進み、ここでデフォルトのタグ保護式メモリ・アクセス・チェックが実行されて、ターゲット・アドレスのアドレス・タグと、関連するグラニュールの保護タグが比較される。
【0061】
しかし、同一タグ・モードが設定されている場合には、プロセスはその代わりにステップ170に進み、ここで修正されたタグ保護式メモリ・アクセス・チェックが実行される。特に、関連するグラニュールの保護タグを使用するのではなく、フィールド145のページ保護タグが使用され、したがって、ターゲット・アドレスのアドレス・タグは、そのページ保護タグに照らしてチェックされて、マッチが存在するかどうかが検出される。次いで、マッチに応じて取られるアクションは、個々の保護タグとの比較について述べたとき
図2に関して上述したことと同じである。
【0062】
図6は、完全マッチ・モードが設定されているかどうかに応じて、タグ保護式メモリ・アクセス動作を実施するために実行されるステップを示す。ステップ200及び205は、
図5のステップ150及び155に対応する。ステップ210において、完全マッチ・モードがページ・タグ110のフィールド130に設定されているかどうかが判定され、設定されていない場合には、プロセスはステップ215に進み、ここでデフォルトのタグ保護式メモリ・アクセス・チェックが実行される。
【0063】
しかし、完全マッチ・モードが設定されている場合には、プロセスはステップ220に進み、ここで、ターゲット・アドレスのアドレス・タグが、所定値を有するかどうかが判定される。所定値は様々な形を取ることができるが、例示的な一構成では、所定値は、アドレス・タグについてはゼロ値である。アドレス・タグが所定値以外の値を有する場合には、プロセスはステップ215に進み、ここでデフォルトのタグ保護式メモリ・アクセス・チェックが実行される。しかし、アドレス・タグが所定値を有する場合には、プロセスはその代わりにステップ225に進み、ここで、関連するグラニュールについて保護タグをチェックすることなくマッチが検出されていることが示される。
【0064】
図7は、フィールド135に厳密タグ・モードが設定されている状況において、タグ保護式メモリ・アクセス動作がどのように実行されるかを示すフロー図である。ステップ250及び255は、先に述べた
図5のステップ150及び155に対応する。ステップ260において、厳密タグ・チェック・モードが設定されているかどうかが判定され、設定されていない場合には、ステップ265においてデフォルトのタグ保護式メモリ・アクセス・チェックが、関連するメモリ・アクセスとは非同期に実行される。その結果、これは、メモリ・アクセスが、チェックの結果とは無関係に進み、その代わりに、ミスマッチがあればそのレポートが遅延することを意味する。これは、単にどのアクセス動作がチェックをパスしなかったかのレポートを生成することが望まれるだけで、これらのアクセスが実施されるのを防止しなくてもよい状況において、有用な場合がある。先に述べたように、ミスマッチ指標は、タグ保護式メモリ・アクセス・チェックに失敗するアクセスごとに別個に生成されてもよく、又は代替的に、生成される任意のミスマッチ指標は単に、1つ又は複数のメモリ・アクセスが失敗したことを示すのみであってもよく、この場合さらなる詳細事項を識別することが所望される場合には、さらなる調査が実行される。
【0065】
しかしそれとは対照的に、厳密タグ・チェック・モードが設定されている場合には、プロセスはステップ270に進み、ここでデフォルトのタグ保護式メモリ・アクセス・チェックが実行されるが、メモリ・アクセスは、そのチェックの結果が利用可能になるまで先送りされ、それにより、アドレス・タグと保護タグとの間でミスマッチが検出されると、アクセスの実行が防止される。次いで、アクセスを実行するのではなく、例示的な一実装形態では、例外が生成されて、より高い例外レベルにおいて例外処理ルーチンがトリガされる。例外処理ルーチンによって取られるステップは、実装形態に応じて異なることが理解される。
【0066】
図5~
図7の上の記述では、任意の特定のページ・タグについて、モード・フィールド130、135、140のうちの1つのみが設定されることを仮定しているが、これは単に例示を簡単にするためのものであり、一実装形態では、
図5~
図7に関して述べた様々なモードを、互いに独立して設定する又は未設定にすることができる。したがって、例として
図6の完全マッチ・チェック・プロセスを考えると、プロセスがステップ215に進むが同一タグ・モード・フィールドが設定されている場合、ステップ215は実際には、グラニュール保護タグではなく、フィールド145のページ保護タグを参照してタグ保護式メモリ・アクセス・チェックを実行することになる。また、プロセスがステップ225に進む一方で、同一タグ・モード・フィールドが設定されている場合、ページ保護タグに照らしたチェックもスキップされ、したがってマッチは、アドレス・タグをページ保護タグに照らしてチェックすることなく検出されたものとして示される。別の実例として、厳密タグ・チェック・フィールドに加えて同一タグ・モード・フィールドが設定されている場合、
図7のステップ265又は270のいずれかを実行するときに、グラニュールの保護タグではなくページ保護タグ145が再び使用されることになる。
【0067】
先に述べたように、例示的な一実装形態では、ページ・タグは、
図1に示すMMU20のTLB22内にキャッシュされてもよい。
図8は、TLBのTLBストレージ構造280が、追加のフィールドを含むように拡張された例示的な一実装形態を示す。
図8に示すように、標準的なフィールド300、305、310が、TLB内のエントリごとに提供される。当業者には理解されるように、フィールド300は、仮想アドレス部分をストアするために使用され、一方フィールド305は、対応する物理アドレス部分をストアするために使用され、特定のアドレスが、TLBのエントリのうちの1つに指標付けされると判定された場合には、部分300、305によって示される仮想から物理へのアドレス・マッピングを使用して、仮想アドレスを物理アドレスに変換することができる。フィールド310は、エントリに関連付けられたメモリ・ページに関する様々な属性、たとえばそのメモリ・ページへのアクセスがキャッシュ可能かどうか、バッファ可能かどうかなどをストアするために使用される。
【0068】
また
図8に示すように、TLBストレージ280の各エントリは、2つの追加フィールドを含むように拡張される。フィールド315は、エントリに関連付けられたメモリ・ページのページ・タグをストアするために使用され、ページ・タグ・フィールド315に保有された情報が有効か否かを識別するために、ページ・タグ有効フィールド320も提供される。
【0069】
フィールド300、305、310には、標準的なTLB更新手順を使用して移入が実施され、通常これには、必要なアドレス・トランスレーション情報を検索するためにメモリにストアされた1つ又は複数のページ・テーブルにアクセスするページ・テーブル・ウォーク・プロセスが含まれる。以下では、フィールド300、305、310の内容を、集合的にアドレス・トランスレーション情報と呼ぶ。フィールド315には、ルーチンのページ・テーブル・ウォーク・プロセスによる移入は実施されないが、その代わりに、たとえばエントリが最初にTLBに割り当てられるときに、メモリの関連ページのページ・タグをメモリから検索するための別個のアクセスを実行することができ、この情報がフィールド315に移入され、次いでページ・タグ有効フィールド320が設定される。
【0070】
上記の手法は、ページ・タグに関連付けられたメモリ・ページが物理ページである状況において使用されてもよいが、代替的な実装形態では、ページ・タグに関連付けられたメモリ・ページが仮想ページであることも可能である。このような事例では、ページ・タグ情報は、メモリにストアされたページ・テーブル情報に組み込まれることが可能であり、したがってページ・テーブル・ウォーク・プロセスの一部として検索されるので、この事例では、フィールド315、320は、アドレス・トランスレーション情報を取得するために使用される標準的なページ・テーブル・ウォーク・プロセスの結果、移入されることが可能である。いくつかの事例、たとえばメモリ・アドレス空間全体が相対的に小さい、より小型のシステムでは、ページ・テーブル内に既存の冗長空間が存在して、ページ・タグ情報が容易に収容されることがある。こうした事例では、
図1に示すシステム制御レジスタ24のうちの1つに情報を保持して、ページ・テーブルから検索されたアドレス・トランスレーション情報のどのビットがページ・タグ情報を提供するかを識別することができる。
【0071】
仮想アドレスに基づく一実装形態では、ページ・タグ情報が、標準的なページ・テーブル・ウォーク・プロセスの一部として検索されるので、別個のページ・タグ有効フィールド320は必要ないことがあり、したがって、エントリ全体について使用される汎用の有効フラグを使用して、ページ・テーブル・ウォーク・プロセスから取得したページ・タグ情報を含むアドレス・トランスレーション・データの有効性を示すことができる。
【0072】
図9は、例示的な一実装形態による、TLB350内で提供される構成要素を示すブロック図である。TLB350は、TLBストレージ280を含み、このストレージは、
図8に関して先に述べた形を取ることができる。TLBアクセス制御回路355は、指定された仮想アドレスに基づきアクセス動作を実行して、アドレス・トランスレーション情報を検索し、それにより指定された仮想アドレスに対応する物理アドレスを生成するために使用される。
図11に関して後述するように、関連するメモリ領域のページ・タグ情報も、その時点におけるTLBからの出力として提供されてもよい。
【0073】
さらに、TLBストレージ280の内容についてTLBメンテナンス動作を実行するために、TLBメンテナンス回路360を提供することができる。標準的なTLBメンテナンス動作に加えて、TLBメンテナンス回路360は、ステップのシーケンスを実行するためのページ・タグ更新/リフレッシュ動作に応答するページ・タグ更新/リフレッシュ回路365を含み、これについては
図10に関してより詳しく後述する。
図10に示すように、ステップ400において、関連するアドレス又はアドレス範囲を有するTLBリフレッシュ・ページ・タグ(TLBRPT)動作が識別される。TLBRPT動作の必要性は、様々なやり方で識別することができる。たとえば、本明細書においてTLBRPT命令と呼ばれる明示的な命令が提供されてもよく、この命令は、アドレス/アドレス範囲を提供し、実行されると、リフレッシュ動作を実行させる。或いは、TLBリフレッシュ動作は、別の動作が実行されることによって自動的にトリガされてもよい。たとえば、ページ・タグ情報をメモリにストアするために命令が提供されてもよく、こうした命令は、本明細書においてSTPT命令と呼ばれる。こうした命令が、メモリのページ・タグを更新するために実行されるとき、関連するページ・タグのキャッシュされた任意のコピーのリフレッシュを試みるために、リフレッシュ動作を自動的に呼び出すことができる。
【0074】
さらに、リフレッシュ動作は、特定の例外レベルで命令の実行に応答して直接実行されてもよいが、いくつかの実装形態では、リフレッシュ動作は、ある特定の、より高い特権レベルにおいてのみ実行が許可されてもよく、したがって、リフレッシュ動作の実行は、現在のより低い例外レベルでの命令の実行に起因して実行されるのではなく、より高い例外レベルにおいてエミュレーションされることが可能である。
【0075】
所望される場合には、システム制御レジスタ24のうちの1つを使用して、どの例外レベルでそうしたリフレッシュ動作を実行できるかを識別する情報を提供することができる。たとえば、こうした情報は、例外レベル0においてはリフレッシュ動作を実行できず、例外レベル0においてリフレッシュ動作を実行しようとするいかなる試みも、例外レベル1にトラップされるべきであることを識別してもよい。或いは、制御情報は、例外レベル0においてリフレッシュ動作を実行できること、又はメモリの関連ページ・テーブルで指定されたページ属性に応じて、一部のページについては例外レベル0においてリフレッシュ動作を実行できることを識別してもよい。上記のどれを適用しても、ステップ400では、適切な命令を実行することによって直接、又はより高い例外レベルにおけるエミュレーションによって、リフレッシュ動作が今実行中であることが仮定される。
【0076】
ステップ405において、TLBRPTに関連付けられたアドレス情報にマッチするアドレス領域のアドレス・トランスレーション情報を含むTLBエントリが識別される。TLBRPT動作は、単一のページを単に識別してもよく、この場合、多くても1つのTLBエントリがリフレッシュを必要とし、又は代替的に、TLBRPT動作は複数のページを識別してもよく、したがって潜在的に、リフレッシュ動作を受ける必要のあるTLBエントリが複数存在してもよい。
【0077】
ステップ410において、リフレッシュ動作が、更新モードではなく無効化モードで作動しているかどうかが判定される。無効化モードで動作している場合には、プロセスはステップ415に進み、ここでページ・テーブルの有効フラグ320が、識別されたTLBエントリごとにクリアされる。したがって、これは、ページ・タグ・フィールド315の現在の内容が無効であることを示し、したがってそのうちにページ・タグ情報を使用する何らかの必要性が生じた場合、それをメモリから再検索することが必要になる。
【0078】
しかし、ステップ410において、更新モードが使用されていると判定された場合、プロセスはステップ420に進み、ここでプロセスは、1つ又は複数の関連ページ・タグの最新バージョンをメモリから検索し、識別された各TLBエントリのページ・タグ情報を更新する。こうしたエントリごとに、PT有効フラグも設定される。
【0079】
図11は、例示的な一実装形態による、
図9のTLBアクセス制御回路355の動作を示すフロー図である。ステップ450において、実行されるアクセス動作が識別され、このアクセス動作は、ターゲット仮想アドレスを指定する。ステップ455において、仮想から物理へのアドレス・トランスレーションが、TLBアクセス制御回路355によってTLBストレージ280を使用して実行される。このプロセスは、TLBのミスが検出された場合にページ・テーブル・ウォーク・プロセスを実行し、次いで、関連するアドレス・トランスレーション情報について、エントリをTLBに割り当てることを含む。したがって、エントリがすでに存在しヒットが検出されたか、ミスが検出されてTLBストレージ内にエントリが移入されたかのいずれかの理由により、ステップ455の実行が完了するまでに、TLBストレージにエントリが割り当てられることが理解される。次いで、ステップ455において判定された物理アドレスを、ロード/ストア・ユニット15に戻すことができる。
【0080】
ステップ460において、アドレス・トランスレーション・プロセスに使用されたTLBエントリに、PT有効フラグ320が設定されているかどうかが判定される。アクセス要求を処理するために、ステップ455においてページ・テーブル・エントリが移入されたばかりである場合には、これは当てはまらない。さらに、動作の無効化モードを使用してリフレッシュ動作が以前に実行されており、したがって
図10のステップ415を経て進んだ場合には、PT有効フラグが設定されていない場合があることが、先の記述から理解される。
【0081】
当該のTLBエントリにPT有効フラグが設定されている場合には、プロセスは単にステップ470に進むことができ、ここでそのエントリが保有するページ・タグは、アクセス動作のターゲット・アドレスのタグ保護式メモリ・アクセス・チェックを制御する際に使用できるように、ロード/ストア・ユニットに提供される。
【0082】
しかし、PT有効フラグが関連エントリに設定されていない場合には、ステップ465において、関連ページについてページ・タグがメモリから検索され、次いで、(このときにはPT有効フラグが設定された状態で)関連TLBエントリのフィールド315にストアされる。その後、プロセスはステップ470に進む。
【0083】
図12は、システム制御レジスタ24が保有する情報によって、TLBRPT処理がどのような影響を受けることがあるかを示すフロー図である。ステップ500において、TLBRPT動作が必要かどうかが判定される。必要ならば、ステップ505において、関連システム制御レジスタが調査されて、現在の例外レベルにおけるTLBRPT動作の実行が許可されていないことを、そのシステム制御レジスタの内容が示しているかどうかが判定される。それを示している場合には、次いでステップ510において、例外がトリガされて、TLBRPT動作がより高い例外レベルで処理されるようにする。
【0084】
しかし、システム制御レジスタの内容が、現在の例外レベルにおけるTLBRPT動作の実行を妨げない場合には、ステップ515において、その許可がページ・テーブルのページ属性に依存していることを、システム制御レジスタの内容が示しているかどうかがチェックされる。依存していない場合には、ステップ520において、現在の例外レベルでリフレッシュ動作を実行することができる。しかし、そうでない場合には、ステップ525において、システム制御レジスタによって識別される関連ページ属性が調査される。これは通常、関連する属性を検索するために、TLBにアクセスすることを含む。その後、ステップ530において、ページ属性が、現在の例外レベルにおけるリフレッシュ動作の実行を許可する形のものであるかどうかが判定される。許可する形のものであれば、プロセスはステップ520に進み、そうでない場合には、その代わりにステップ510に進む。
【0085】
先に述べた同一タグ・モードが使用される実装形態では、先に述べたタグ保護式メモリ・アクセス動作に加えて、他の機能をさらに制御するために、同一タグ・モードの設定を使用することができる。
図13Aを参照しながら、これを例として示す。ステップ550において、選択されたグラニュールの保護タグの更新が要求されているかどうかが判定される。この要求はたとえば、特定の保護タグをメモリにおいて更新しようとするストア命令が実行されることに起因して生じる。更新が要求されている場合には、ステップ565において、関連するメモリ・ページ(すなわち、選択されたグラニュールを含むメモリ・ページ)が識別され、ステップ570において、対応するページ・タグに同一タグ・モードが設定されているかどうかが判定される。設定されていない場合には、ステップ580において、選択されたグラニュールについて、標準的なやり方で保護タグを更新することができる。しかし、同一タグ・モードが設定されている場合には、ステップ575において、より高い例外レベルに入る例外が生成されてもよい。その時点で、例外処理ルーチンが実行されてもよく、その例外処理ルーチンの形は、実装形態に応じて異なる。
【0086】
図13Bは、選択されたグラニュールの保護タグを更新しようとするときに実行されてもよい特定の例示的なシーケンスを示すフロー図である。特に、
図13Bに示す技法によれば、特定のグラニュールの保護タグを更新しようとする試みは、動作を同一タグ・モードからデフォルト・モードに切り替える機構を呼び出すことがある。
図13Bに示すステップは、命令のシーケンスを実行することにより明示的に実行されてもよく、又はたとえば、ストア・グラニュール(STG)命令の実行時に例外をとって、必要な処理ステップをより高い例外レベルでエミュレーションすることにより、暗黙的に実行されてもよい。
【0087】
ステップ600において、選択されたグラニュールの保護タグの更新が検出されると、次いでステップ605において、選択されたグラニュールに対応するメモリ・ページが識別され、次いでステップ610において、同一タグ・モードが設定されているかどうかが判定される。設定されていなければ、プロセスは直接ステップ630に進むことができ、ここで選択されたグラニュールの保護タグは、ステップ600において使用された更新機構によって指定された値に更新される。
【0088】
しかし、同一タグ・モードが設定されている場合には、ステップ615において、同一タグ・モードのフラグを設定ではなく未設定に変更するように関連メモリ・ページのページ・タグが更新され、次いで更新済みページ・タグが、メモリにストアされる。その後、前のページ・タグ情報が今では有効でないことがわかっているので、ステップ620において、TLBの関連エントリに関してリフレッシュ・ページ・タグ動作が実行される。先の
図10の記述から明らかなように、これは結果的に、ページ・タグ有効フラグがTLBエントリ内でクリアされるか、又はページ・タグの最新バージョンがメモリから検索されTLBにストアされるかのいずれかになり、この最新バージョンは、同一タグ・モードがもはや設定されていないことを示す。
【0089】
ステップ625において、前の保護タグ情報を、ページ・タグのフィールド145内のページ保護タグ情報で上書きするために、メモリ・ページ内のグラニュールごとに、対応する保護タグが更新される。その結果、この時点で、今では同一タグ・モードがまだ設定されているのと同じ状態になっているが、ページ保護タグ全体が使用されているのではなく、ページ内のグラニュールに関連付けられた個々の保護タグのそれぞれが更新されて、ページ保護タグと同じ値を有していることがわかる。
【0090】
その後ステップ630において、ステップ600で使用された更新機構により指定された選択されたグラニュールの保護タグを、更新機構によって指定された値に更新することができる。
【0091】
その結果、保護タグの更新は実行されているが、このプロセスの副次的結果は、当該ページには同一タグ・モードがもはや設定されていないことであることが理解される。その結果、その後のタグ保護式メモリ・アクセス動作は、関連するグラニュール保護タグを参照して実行されることになる。
【0092】
図14は、設定されている同一タグ・モードの存在が、選択されたグラニュールの保護タグについて読取り要求にどのように影響するかを示すフロー図である。ステップ650において、選択されたグラニュールについてメモリから保護タグを読み取ろうとする読取り要求が検出された場合には、ステップ655において、対応するメモリ・ページ、すなわち選択されたグラニュールを含むメモリ・ページが識別される。その後、ステップ660において、そのメモリ・ページのページ・タグ内で同一タグ・モードが設定されているかどうかが判定される。設定されていない場合には、プロセスはステップ670に進み、ここで、選択されたグラニュールについてメモリから保護タグが通常のやり方で読み取られる。
【0093】
しかし、同一タグ・モードが設定されている場合には、プロセスはステップ665に進み、ここで選択されたグラニュールの保護タグを読み取るのではなく、メモリ・ページのページ保護タグが戻される。したがって、読取り要求は、選択されたグラニュールの現在の保護タグの内容ではなく、ページ保護タグが戻されることになる。
【0094】
図15は、例示的な一構成による、例外レベル0(EL0)においてSTPT命令がどのように処理されてもよいかを示すフロー図である。特に、STPT命令は、ページ・タグの内容を更新するために使用されるストア命令の特定の形である。ステップ700において、こうしたSTPT命令がEL0で実行されることになると判定されたとき、ステップ705において、STPT命令の実行をEL0において実行できるかどうかを判定するために、1つ又は複数のアドレス・トランスレーション因子が参照される。その結果、ステップ710において、STPT命令をEL0で実行できることが判定され、次いでプロセスはステップ715に進み、ここでSTPT動作が実行される。しかし、そうでない場合には、プロセスはステップ720に進み、ここで例外がトリガされて、STPT動作は、より高い例外レベルにおいて処理されることになる。
【0095】
ステップ705において考慮することができるアドレス・トランスレーション因子の様々な実例が存在する。具体的な1つの実例として、システムが複数の仮想ページ・サイズの使用をサポートしている場合には、最小の仮想ページ・サイズが例外レベル0に露出され、次いで例外レベル0において処理回路は、STPT動作が1つ又は複数の最小サイズの仮想ページに関係するかどうかを判定することができる。関係していない場合には、STPT動作は例外レベル0において実行されず、その代わりに例外レベル1にトラップされる。
【0096】
別の実例として、特定の物理ページがいくつかの仮想ページにマッピングされることがあり、したがって、異なる仮想アドレスが同じ物理アドレスにマッピングされることがある状況では、暗黙的なページ共有機構が使用されてもよい。例外レベル0で実行している処理回路に対してこれが透過的であり、したがって暗黙的なページ共有がある状況では、追加ビットがページ・タグ情報内に提供されてもよく、これは、こうした状況を指示するように設定されると、対応するページに関連してSTPT動作を実行しようとするあらゆる試みを、例外レベル1にトラップさせる。
【0097】
図16は、使用することができるシミュレータの実装形態を示す。先に説明した実施例は、関連する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法という観点から本発明を実装するが、コンピュータ・プログラムを使用することによって実装される本明細書に記載の実施例による命令実行環境を提供することも可能である。こうしたコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェアに基づく実装形態を提供することから、シミュレータと呼ばれることが多い。様々なシミュレータ・コンピュータ・プログラムは、エミュレータ、仮想機械、モデル、動的バイナリ・トランスレータを含むバイナリ・トランスレータを含む。通常、シミュレータの実装は、任意選択でホスト・オペレーティング・システム1120を実行してシミュレータ・プログラム1110をサポートしながら、ホスト・プロセッサ1130上で実行されてもよい。いくつかの構成では、ハードウェアと、提供される命令実行環境、及び/又は同じホスト・プロセッサに提供される複数の個別の命令実行環境との間に、複数のシミュレーション層が存在してもよい。従来、適度な速度で実行するシミュレータ実装を実現するために強力なプロセッサが必要とされてきているが、こうした手法は、互換性又は再使用の理由から、別のプロセッサに元々あるコードを実行することが望まれるときなど、ある特定の状況において妥当なものとされてもよい。たとえば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加機能を命令実行環境に与えてもよく、又は通常は異なるハードウェア・アーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、冬、1990年、USENIX会議、53~63ページに示されている。
【0098】
特定のハードウェアの構造又は特徴を参照しながら実施例を先に説明した程度に、シミュレーションされる実施例において同等の機能が、適切なソフトウェアの構造又は特徴によって提供されてもよい。たとえば、特定の回路は、シミュレーションされる実施例ではコンピュータ・プログラム論理として実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレーションされる実施例では、ソフトウェア・データ構造として実装されてもよい。先に説明した実施例において参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(たとえば、ホスト・プロセッサ1130)に存在する構成では、いくつかのシミュレーションされる実施例は、適切な場合に、ホスト・ハードウェアを利用してもよい。
【0099】
シミュレータ・プログラム1110は、コンピュータ読取り可能ストレージ媒体1112(不揮発性媒体であってもよい)にストアされてもよく、ターゲット・コード1100(アプリケーション、オペレーティング・システム、及びハイパーバイザを含んでもよい)にプログラム・インターフェース(命令実行環境)を提供してもよく、このプログラム・インターフェースは、シミュレータ・プログラム1110によって模倣されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである。したがって、ターゲット・コード1100のプログラム命令は、シミュレータ・プログラム1110を使用して命令実行環境内から実行されてもよく、それにより、上述した装置2のハードウェア特徴部を実際には有していないホスト・コンピュータ1130が、これらの特徴をエミュレーションすることができる。たとえば、シミュレータ・プログラム1110は、ターゲット・コード1100の命令によって、メモリへのアクセスを制御するためのメモリ・アクセス・プログラム論理1114を含んでもよい。たとえば、メモリ・アクセス・プログラム論理1114は、保護タグとアドレス・タグの比較を実行し、保護タグとアドレス・タグの間で何らかのミスマッチが検出されているかどうかを報告するための命令を含んでもよい。また、シミュレータ・プログラム1110は、複数のメモリ領域の各メモリ領域について、ターゲット・アドレスがそのメモリ領域内にあるときにタグ保護式メモリ・アクセス動作がどのように実行されるかを制御するために使用されるコンフィギュレーション制御情報をストアするための制御タグ・データ構造1116を含んでもよい。
【0100】
本明細書では、「するようにコンフィギュレーションされる」という言葉は、定義された動作を実施できるコンフィギュレーションを装置の要素が有していることを意味するために使用される。この文脈において、「コンフィギュレーション」は、ハードウェア又はソフトウェアの相互作用の構成若しくはやり方を意味する。たとえば、装置は、定義された動作を実現する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、その機能を実行するようにプログラムされてもよい。「するようにコンフィギュレーションされる」は、定義された動作を実現するために何らかのやり方で装置の要素を変更する必要があることを暗示するものではない。
【0101】
本発明の例示的な実施例を、添付図面を参照しながら詳細に本明細書に説明してきたが、本発明は、これらの厳密な実施例に限定されず、添付の特許請求の範囲に定義される本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加、及び修正が実施例においてなされてもよいことが、理解されるべきである。たとえば、本発明の範囲から逸脱することなく、従属請求項の特徴と、独立請求項の特徴との様々な組合せが作製されてもよい。