(57)【要約】  データ処理装置およびデータ処理方法は、条件付きアクセス許可チェック無効フラグに依存する条件付きメモリアクセス動作（アクセス許可の失敗がプログラムフローを変更しない）に関して、アクセス許可チェックを管理するのに役立つ。条件付きアクセス無効フラグが第１の値を有する場合、メモリ許可回路、例えば、ウォークステートマシン２２が、メモリアクセス回路が要求されたメモリアクセスを実行することを許可されるかどうかに関するチェックを実行することが無効にされる。非条件付きメモリアクセスは、条件付きアクセス許可チェック無効フラグの値に関係なく、メモリ許可回路を利用することができる。
2019525298.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で１つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは少なくとも１つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも１つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは１つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記１つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路であって、
前記１つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第１の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第２の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記１つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
を備える装置。
【請求項２】
前記メモリ許可回路は、前記メモリアドレス空間内のメモリアドレスへのアクセスを制御するためにアクセス許可データに応答する、請求項１に記載の装置。
【請求項３】
前記メモリ許可回路は、メモリ管理ユニットの一部であり、許可テーブルデータを介して許可テーブルウォークを実行するように機能する、請求項１および２のいずれか一項に記載の装置。
【請求項４】
前記許可テーブルデータは、仮想アドレスから物理アドレスへのマッピングを指定する変換テーブルデータである、請求項２および３に記載の装置。
【請求項５】
前記条件付きメモリアクセスプログラム命令は、一連のメモリアクセス動作を指定する条件付きベクトルメモリアクセス命令であり、前記一連のメモリアクセス動作の少なくともいくつかは、条件付きメモリアクセス動作である、請求項１〜４のいずれか一項に記載の装置。
【請求項６】
前記一連のメモリアクセス動作内の第１のメモリアクセス動作は、非条件付きメモリアクセス動作であり、前記一連のメモリアクセス動作内の１つまたは複数の他のメモリアクセス動作は、条件付きメモリアクセス動作である、請求項５に記載の装置。
【請求項７】
前記一連のメモリアクセス動作は、前記メモリアドレス空間内の非連続アドレスに対する動作である、請求項６に記載の装置。
【請求項８】
前記一連のメモリアクセス動作の全ては、条件付きメモリアクセス動作である、請求項５に記載の装置。
【請求項９】
前記一連のメモリアクセス動作は、前記メモリアドレス空間内の連続アドレスに対する動作である、請求項８に記載の装置。
【請求項１０】
前記メモリアドレス空間は、第１のメモリアドレス領域と第２のメモリアドレス領域とを含み、前記メモリ許可回路は、第１の条件付きアクセス許可チェック無効フラグに応答して、前記第１のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にし、前記メモリ許可回路は、第２の条件付きアクセス許可チェック無効フラグに応答して、前記第２のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にする、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
動作の各々の特権レベルに対応する複数の例外レベルのうちの選択可能な１つ例外レベルの範囲内で動作するように前記装置を制御するための例外レベル制御回路を備える、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
前記複数の例外レベルのうちの２つの例外レベルは、アクセス許可データを共有する、請求項２および１１に記載の装置。
【請求項１３】
アクセス許可データを記憶するためのアクセス許可キャッシュを含み、前記アクセス許可キャッシュは、前記１つまたは複数の条件付きメモリアクセスと一致するアクセス許可データを記憶するときに、前記条件付きアクセス許可チェック無効フラグに関係なく、前記メモリアクセス回路が前記１つまたは複数の条件付きメモリアクセスを実行することが許可されるかどうかを制御する、請求項１〜１２のいずれか一項に記載の装置。
【請求項１４】
データを処理する方法であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で１つまたは複数のメモリアクセスを実行するステップであって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは少なくとも１つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも１つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは１つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記１つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
メモリ許可回路を使用して前記メモリアクセスが許可されるかどうかを制御するステップであって、
前記１つまたは複数の条件付きメモリアクセスに関して、第１の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第２の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記１つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
を含む方法。
【請求項１５】
請求項１〜１３のいずれかに記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より具体的には、本開示は、条件付き(contingent)メモリアクセスプログラム命令をサポートするデータ処理システム内の許可制御（permission control)に関する。
【背景技術】
【０００２】
条件付きメモリアクセスプログラム命令は、メモリアクセス動作に関してソフトウェア管理による推測を実行することを可能にする、すなわち、条件付きメモリアクセスプログラム命令は、少なくとも１つの条件付きメモリアクセス動作を指定し、次のプログラム命令へのプログラムフローは、条件付きメモリアクセス動作が許可されるか否かに応じて変更されない、例えば、条件付きメモリアクセス動作が許可条件を満たさない場合に、例外は引き起こされない（トリガーされない）。条件付きメモリアクセスプログラム命令をサポートするシステムに関する潜在的なセキュリティ問題は、例外を引き起こさせずに（トリガーせずに）、またはオペレーティングシステム介入なしに、そのような条件付きメモリアクセスプログラム命令を使用してメモリアドレス空間を「走査(scan)」することによって悪意のある者がシステムの構成に関する情報を入手するのを容易にし、その後、タイミング解析などの手法を使用して、メモリアドレス空間のどの部分が特定の方法でマッピングまたは構成されているかを判定し得るということである。
【発明の概要】
【０００３】
本開示の少なくともいくつかの実施形態は、データを処理するための装置であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で１つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは少なくとも１つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも１つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは１つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記１つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路であって、
前記１つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第１の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第２の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記１つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
を備える装置を提供する。
【０００４】
本開示の少なくともいくつかの実施形態は、データを処理する方法であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で１つまたは複数のメモリアクセスを実行するステップであって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは少なくとも１つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも１つの条件付きメモリアクセスが許可されているかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記１つまたは複数のメモリアクセスは１つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行される次のプログラム命令へのプログラムフローは、前記１つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
メモリ許可回路を使用して前記メモリアクセスが許可されるかどうかを制御するステップであって、
前記１つまたは複数の条件付きメモリアクセスに関して、第１の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第２の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記１つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
を含む方法を提供する。
【０００５】
本開示の少なくともいくつかの実施形態は、上記の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラムを提供する。
【０００６】
例として、添付図面を参照しながら、実施形態例を説明する。
【図面の簡単な説明】
【０００７】
【図１】条件付きメモリアクセスプログラム命令をサポートし、メモリ許可回路を使用するデータ処理システムの概略図である。
【図２】許可データを含む変換テーブルデータに対する複数の例外レベルおよび関連ポインタの概略図である。
【図３】それぞれ独自の関連変換テーブルを有する高領域および低領域を含むように構成された図１のシステムのメモリアドレス空間の概略図である。
【図４】条件付きアクセス許可チェック無効フラグを含む構成フラグを記憶する変換制御レジスタの概略図である。
【図５】２つのメモリ領域に対する条件付きアクセス許可チェック無効フラグが異なるタイプの動作に対してどのように設定され得るかを示す表である。
【図６】第１のｆａｕｌｔｉｎｇロード命令およびｎｏｎ−ｆａｕｌｔｉｎｇロード命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
【図７】トランザクショナルメモリシステム内のメモリトランザクションとしてマークされたコードブロック内のメモリアクセスプログラム命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
【図８】プリフェッチ命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
【図９】メモリアクセス動作に関するアクセス許可の決定および使用を概略的に示すフローチャートである。
【図１０】仮想マシン実装を示す図である。
【発明を実施するための形態】
【０００８】
図１は、メモリ６（例えば、１つまたは複数の物理メモリにマッピングされる仮想アドレス）に結合されたプロセッサコア４を含むデータ処理システム２を概略的に示す。プロセッサコア４は、メモリ６からプログラム命令をフェッチし、それらのプログラム命令を命令パイプライン８に供給するフェッチユニット５を含む。命令パイプライン８は、デコーダ回路１０がプログラム命令をデコードし、デコードされたプログラム命令によって指定された処理動作を実行するためにプロセッサコア４の他の要素を制御するように機能する制御信号を生成するデコードステージを含む。プロセッサコア４は、通常、図１に示されているよりも多くの要素を含むが、明確にするためにこれらの要素の全てが示されているわけではないことが理解されるであろう。
【０００９】
プロセッサコア４は、例えば、レジスタバンク１４のレジスタ内に記憶されているデータ値に対して、一般的な計算操作および論理操作を実行するための処理回路１２を含む。メモリアクセス回路１６は、メモリ６内に記憶されているデータ値に関して、ロードおよびストア（記憶）など、デコーダ回路１０によってデコードされたメモリアクセスプログラム命令によって指定されたメモリアクセス動作を実行するように機能する。メモリ管理ユニット１８は変換テーブルデータ２０に応答して実行すべきメモリアクセスが許可されるか否かを制御する。メモリ管理ユニット１８はさらに、プロセッサコア４によって実行されるプログラム命令によって指定されるような仮想アドレスとメモリ６をアドレス指定するために使用されるような物理アドレス間で変換するように機能する。アクセス許可を判定するためにメモリ管理ユニット１８によって使用される変換テーブルデータ２０は、メモリ管理ユニット１８内のウォークステートマシン(walk state machine)２２によって制御されるテーブルウォーク動作(table walking operation(s))を介して復元される。ウォークステートマシン２２は、以下でさらに説明するように、条件付きメモリアクセス動作に対して選択的に無効にされ得るメモリ許可回路の一例である。ウォークステートマシン２２によって変換テーブルデータ２０からのこのようなテーブルウォーク(table walking)によって取得される、直近で受信された変換テーブルデータは、メモリ管理ユニット１８内の変換ルックアサイドバッファ２４内にキャッシュされ得る。この変換ルックアサイドバッファ２４は、通常、直近で使用されたアクセス許可データおよび直近で使用された仮想アドレスから物理アドレスへの変換データを記憶するので、アクセス許可キャッシュとして機能する。
【００１０】
メモリ６からフェッチユニット５によってフェッチされたメモリアクセスプログラム命令によって指定されるようなメモリアクセス動作を実行しなければならない場合、メモリ管理ユニット１８は、適用すべき仮想−物理アドレス変換を判定し、実行すべきメモリアクセス動作が、例えば、関連するデータにアクセスする許可を得るための現在適切な例外レベルにあるプロセッサコア４である、許可されたタイプのメモリアクセス動作である（例えば、読み取り専用として定義されたデータへの書き込み動作ではない）などのアクセス許可条件を満たしているか否かを判定する。メモリ管理ユニット１８は、それが必要とするアクセス許可（および変換）データが、実行すべきメモリアクセス動作（単数または複数）のために変換ルックアサイドバッファ２４内に存在するかどうかを判定する。実行すべきメモリアクセス動作（単数または複数）と変換ルックアサイドバッファ２４内の記憶されているコンテンツとの間に一致（ヒット）がある場合、この記憶されているコンテンツは、適用すべきアドレス変換およびメモリアクセスがアクセス許可を満たしているか否かを判定するために使用される。変換ルックアサイドバッファ２４内に一致がない場合、ウォークステートマシン２２は（有効な場合）、変換テーブルデータ２０内で、実行すべきメモリアクセス動作（単数または複数）に対して対応する変換アクセス許可データにアクセスするためにテーブルウォーク動作を実行する。変換テーブルデータ２０内にそのような変換またはアクセス許可データが見つからない場合、変換フォールトが発生する。そのような変換フォールトは、比較的迅速に識別され得、例えば、変換すべき仮想アドレスは、変換テーブルデータ２０内でマッピングが保持されている仮想アドレスの範囲外にある。変換アクセス許可データがテーブルウォーク動作によって識別される場合、そのような変換アクセス許可データは、メモリアクセス動作が許可されるか否かを判定するために使用され、許可された場合、メモリアクセス動作に使用すべきメモリ６内の適切な物理アドレスを生成するために使用される。
【００１１】
例外レベル制御回路２６は、プロセッサコア４が動作する現在の例外レベル（特権レベル）を制御し、現在の例外レベルが何であるかを示す信号をメモリ管理ユニット１８に提供するように機能する。例えば、プログラム命令実行ポイントのリダイレクトおよび例外レベルの変更を引き起こすことにより生じる例外条件のように、現在の例外レベルに変更を加え得る様々な方法がある。変換テーブルベースレジスタ２８は、異なる例外レベルで動作するときに使用すべきそれぞれの変換テーブルデータの位置を示す複数の変換テーブルベースアドレス値を記憶するために設けられる。したがって、異なる例外レベルは、異なる形式の仮想−物理アドレスマッピングおよび異なるアクセス許可を適用するために異なる変換テーブルデータを利用し得る。変換制御構成レジスタ３０は、ウォークステートマシン２２を含むメモリ管理ユニット１８の動作を制御するように機能する構成フラグを記憶する。これらの構成フラグは、例えば、オペレーティングシステムプログラムまたはハイパーバイザプログラムなどによってソフトウェア制御下で設定され得る。
【００１２】
図１に概略的に示されているように、メモリ６は、ボトムアドレスからトップアドレスまで延在するメモリアドレス空間を含む。このメモリアドレス空間の全てが使用可能であるとは限らない。例えば、メモリアドレス空間の一端に、オペレーティングシステムプログラムによって使用されかつ変換テーブルデータ２０を安全に記憶するために使用される高領域が設けられ得る。メモリアドレス空間の他端には、ユーザプログラムによる使用のための低領域が設けられ得る。高領域および低領域は、それぞれの変換テーブルベースレジスタ値によって指し示される別々の変換テーブルデータが提供され得る。
【００１３】
図２は、プロセッサコア４が動作し得る複数の可能な例外レベルを概略的に示す。例外レベルＥＬ０は、最低レベルの特権を有し、ユーザプログラムの実行に使用される。特権レベル（およびアクセス権）が上昇すると、例外レベルＥＬ１（通常はオペレーティングシステムプログラムによって使用される）、例外レベルＥＬ２（通常はハイパーバイザプログラムによって使用される）、および例外レベルＥＬ３（通常はセキュアモニタプログラムによって使用される）がさらに提供される。例外レベルＥＬ０およびＥＬ１は、変換テーブルデータを共有し、変換テーブルベースレジスタ値ＴＴＢＲ０＿ＥＬ１およびＴＴＢＲ１＿ＥＬ１によってメモリアドレス空間内でそれぞれ指し示される２組の変換テーブルデータが提供される。例外レベルＥＬ２およびＥＬ３はそれぞれ、各々の変換テーブルベースレジスタ値ＴＴＢＲ＿ＥＬ２およびＴＴＢＲ＿ＥＬ３によって指し示されるように、それら自身の変換テーブルデータ、または少なくともそれら自身のそのような変換テーブルデータを提供する能力を有する。
【００１４】
図３は、例外レベルＥＬ０およびＥＬ１で動作するときのメモリ６のメモリアドレス空間のレイアウトおよび使用の一例を概略的に示す。上述したように、メモリアドレス空間は、その上端に高領域３２を備え、その下端に低領域３４を備える。高領域３２は、通常、オペレーティングシステムカーネルプログラムの一部の記憶および実行に使用される。データ処理システムを不適切に制御しようとする悪意のある試みをより困難にするために、ＫＡＳＬＲ（カーネルアドレス空間レイアウトランダム化）のような技術を使用して、オペレーティングシステムカーネルプログラムのその一部が高領域３２内に配置され得る。高領域３２はさらに、高領域３２および低領域３４の両方に関して仮想−物理アドレスマッピングおよびアクセス許可をマッピングするために使用される変換テーブルデータＴＴ０、ＴＴ１を記憶する。より具体的には、高領域３２は、第１の変換テーブルベースレジスタ値ＴＴＢＲ１＿ＥＬ１によって指し示される第１の変換テーブルデータＴＴ１を使用する。低領域３４は、第２の変換テーブルベースレジスタ値ＴＴＢＲ０＿ＥＬ１によって指し示される第２の変換テーブルデータＴＴ０を使用する。
【００１５】
低領域３４は、高領域３２内に記憶されているオペレーティングシステムと協働して実行するためのユーザプログラムを記憶する。図３の右側部分には、実行すべきメモリアクセスに関して仮想−物理アドレスマッピングデータおよびアクセス許可データにアクセスするために、メモリ管理ユニット１８によって実行され得るそれぞれの変換テーブルウォーク動作が示されている。このような変換テーブルウォーク動作は、プロセッサコア４がテーブルデータエントリの階層から適切なデータを検索するためにメモリ６内で複数の比較的遅いメモリアクセスを通常行う必要があるので、実行するのに比較的長い時間がかかる。悪意のある者にとって有用であり得る方法でメモリアドレス空間が変換テーブルデータによってどのように構成されているかを示す少なくともいくつかの特性を判定するために、特定のメモリアクセスがそのような比較的遅いページテーブルウォーク動作を呼び出すか否かが監視され得る。
【００１６】
図４は、より詳細に変換制御レジスタ３０を概略的に示す。特に、図４は、例外レベルＥＬ０およびＥＬ１に使用される変換制御レジスタの部分を示す。変換制御レジスタ３０内に記憶されているフラグ内に含まれるのは、高領域３２へのメモリアクセスに適用される第１の条件付きアクセス許可チェック無効フラグＴＣＲ＿ＥＬ１．ＮＦＤ１と、低領域３４へのメモリアクセスに適用される第２の条件付きアクセス許可チェック無効フラグＴＣＲ＿ＥＬ１．ＮＦＤ０である。
【００１７】
条件付きアクセス許可チェック無効フラグＴＣＲ＿ＥＬ１．ＮＦＤ０およびＴＣＲ＿ＥＬ１＿ＮＦＤ１は、第１の値「１」を有するとき、ウォークステートマシン２２（メモリ許可回路の一例）が条件付きメモリアクセス動作に関してページテーブルウォークを実行することを無効にするように機能し、非条件付きメモリアクセス動作に関してページテーブルウォークの実行は許可される。このようにして、条件付きメモリアクセスプログラム命令およびタイミング解析を用いたメモリ構成の走査はより困難になり得る。
【００１８】
変換ルックアサイドバッファ２４は、メモリアクセスのための適切なアドレス変換データおよびアクセス許可データを含む場合、条件付きアクセス許可チェック無効フラグまたはフラグＴＣＲ＿ＥＬ１．ＮＦＤ０およびＴＣＲ＿ＥＬ１．ＮＦＤ１の値に関係なく、使用のためにこのデータを提供する。変換ルックアサイドバッファ２４は、一致が生じた場合、メモリアクセス動作が許可されているか否かを変換エラー(translation error)（マッピングされていない）または許可エラー(permission error)（不正確なアクセス許可）によって判定する間の時間差がメモリレイアウトを理解しようとしている悪意のある人に有用な情報を提供するには不十分であるように、十分に迅速にアクセス許可データおよび変換データを返すことができる。
【００１９】
図５は、異なるタイプの所望の動作に使用され得る第１の条件付きアクセス許可チェック無効フラグＴＣＲ＿ＥＬ１．ＮＦＤ０および第２の条件付きアクセス許可チェック無効フラグＴＣＲ＿ＥＬ１．ＮＦＤ１の異なる値を概略的に示す。通常のユーザプログラムを実行する場合、条件付きメモリアクセス動作に対して、ユーザプログラム自体を記憶する低領域３４の変換テーブルデータを介したテーブルウォークは許可され得、オペレーティングシステムを記憶する高領域３２の変換テーブルデータを介したテーブルウォークは無効にされ得る。逆に、低領域３４内でセキュアモードでユーザプログラムを実行する場合には、低領域３４と高領域３２の両方で、条件付きメモリアクセス動作に対するテーブルウォークを無効にすることが望ましい場合がある。このことにより、悪意のあるプログラムが低領域３４内で実行している同じプログラムの他の部分のメモリレイアウトに関する情報を取得することを回避することができる。
【００２０】
条件付きメモリアクセスプログラム命令は、多種多様な異なる形式をとり得る。図６は、このような２つの形式の例を概略的に示す。これらの形式の例は、実行すべきメモリアクセス動作のシーケンスを指定する第１のｆａｕｌｔｉｎｇロード命令ＬＤＲＦＦである。ＬＤＲＦＦ命令に応答して実行すべき第１のメモリアクセス動作は非条件付きメモリアクセス動作であり、それがそのアクセス許可に失敗(fault)すると、例外が引き起こされる（トリガーされる）。ＬＤＲＦＦ命令に対する残りのメモリアクセス動作は条件付きメモリアクセス動作であり、それらがアクセス許可に失敗した場合、ＬＤＲＦＦ命令は、図６に示すように、第１のｆａｕｌｔｉｎｇレジスタＦＦＲ内に対応する合否の値を設定することによって示されるが、プログラムフローには影響しない、つまり、実行する次のプログラム命令である。
【００２１】
図６に描かれた条件付きメモリアクセスプログラム命令の他の変形形式は、ｎｏｎ−ｆａｕｌｔｉｎｇロード命令ＬＤＲＮＦである。この場合、関係するメモリアクセス動作のシーケンス内の全てのメモリアクセス動作は条件付きメモリアクセス動作であり、そのために、それらがアクセス許可に失敗した場合、ＬＤＲＮＦは、実行する次のプログラム命令であることは変わらないが、表されているように、第１のｆａｕｌｔｉｎｇレジスタＦＦＲ内の適切なフラグ値によって示される。
【００２２】
上記の条件付きメモリアクセスプログラム命令のそれぞれによって実行される条件付きメモリアクセス動作のシーケンスは、いくつかの形式の命令では連続するシーケンスのアドレスであり得、他の形式の命令ではアドレスアクセスは不連続であり得る。例えば、ロードは、メモリアドレス空間内で間隔を置いて配置された様々なメモリアドレス位置からデータ値を収集する収集ロードである。
【００２３】
図７は、本開示の他の実施形態において、それ自体でまたは他の形態の条件付きメモリアクセスプログラム命令と組み合わせて使用され得る別の形式の条件付きメモリアクセスプログラム命令を概略的に示す。この例では、データ処理システム２はトランザクションメモリをサポートするものであり、そのことにより、プログラム命令のブロックは変換開始命令およびトランザクション終了プログラム命令によって区切られ、それらの区切り点間のメモリアクセス動作がメモリトランザクションの一部であることを示す。トランザクショナルメモリシステムは、対象のメモリトランザクションが実行されている間に競合する他のメモリトランザクションが発生するかどうかを判定するために監視し、そのような競合が発生すると、一方または両方のメモリトランザクションが巻き戻され（メモリの状態はメモリトランザクションが開始される前の状態に復元される）、その後、メモリトランザクションは後で再試行されるか、またはメモリロックの使用のように、他のメカニズムによって競合が発生しないように修正される。図７の状況下では、メモリアクセス命令ＬＤＲ、ＳＴＲ、ＳＴＲは、実行中のプログラムコード内で定義されたメモリトランザクションのデリミタ内にあるので、それらの文脈によって条件付きメモリアクセスプログラム命令にされる。メモリトランザクションの一部としてのこのような条件付きメモリアクセスプログラム命令は、それ自体デコーダ回路１０によって識別され、結果的に、現在のメモリトランザクション内のいずれかのメモリアクセス動作によって呼び出された場合に、その許可チェック動作を無効にするために条件付きアクセス許可チェック無効フラグによって制御されるメモリ許可回路（例えばウォークステートマシン２２）によって識別される。
【００２４】
図８は、他の実施形態において、または上述のタイプの条件付きメモリアクセスプログラム命令と組み合わせて使用され得るさらに別のタイプの条件付きメモリアクセスプログラム命令を概略的に示す。図８の例では、条件付きメモリアクセスプログラム命令は、プログラムコードの一部を形成し、性能上の理由からメモリ６からキャッシュメモリ（図示せず）にデータ値をプリフェッチするように機能するプリフェッチ命令である。このようなプリフェッチ命令は、通常、プリフェッチすべきメモリブロックの開始アドレスとそのメモリブロックの長さを指定する。プリフェッチ命令はデコーダ回路１０によって条件付きメモリアクセスプログラム命令として識別され、したがって、プリフェッチ命令がテーブルウォークを実行するためにウォークステートマシン２２を呼び出した場合、ウォークステートマシン２２がそのような条件付きメモリアクセスプログラム命令に対して無効にされ、したがって許可チェックが無効にされることを示す値を条件付きアクセス許可チェック無効フラグが有する場合に、テーブルウォークは、条件付きアクセス許可チェック無効フラグの動作によって抑制される。
【００２５】
したがって、条件付きメモリアクセスプログラム命令は、
トランザクショナルメモリへのメモリトランザクションに対応するプログラム命令のシーケンス内のメモリアクセス命令、および
プリフェッチ命令
のうちの１つであり得る。
【００２６】
図９は、アクセス許可判定におけるデータ処理システム２の動作を概略的に示すフローチャートである。実際には、図９に示すプロセスと同時に、かつ時間的に重複して、データ処理システム２の動作の一部として多くの他のプロセスがさらに実行されることは理解されるであろう。
【００２７】
ステップ３６において、処理は、実行するメモリアクセス動作が受信されるまで待機する。次に、ステップ３８は、受信したメモリアクセス動作が変換ルックアサイドバッファ２４内に既に記憶されている（キャッシュされている）変換アクセス許可データと一致するか否かを判定する。変換ルックアサイドバッファ２４内に記憶されているデータを選択する方法は様々であるが、ウォークステートマシン２２によって実行されるテーブルウォークによって検索される、新たにフェッチされた変換アクセス許可データのための空間を作るために、最も長く使用されていないエントリのようなアルゴリズムに基づいて制御され得る。
【００２８】
変換ルックアサイドバッファ２４内でヒットがあった場合、処理はステップ４０に進み、そこで実行すべきメモリアクセスがその許可テストに合格したか否か、例えば、適切な例外レベルのメモリアクセスであるか否か、適切なタイプのメモリアクセスであるか否かなどについての判定が行われる。許可アクセステストに合格（pass)した場合、ステップ４２は、変換ルックアサイドバッファ２４から取得した変換済み物理アドレスを使用してアクセスを実行するように働く。許可が合格でなかった場合、ステップ４４は許可フォールト(permission fault)を通知するように働く。このような許可フォールトは、例えば、図６の第１のｆａｕｌｔｉｎｇレジスタＦＦＲ内のフラグ値を設定することによって、図７のトランザクショナルメモリの場合にはメモリトランザクションの失敗を通知することによって、図８のプリフェッチ命令の場合には単にプリフェッチ動作の残りの部分を停止することによって（通常、これはアーキテクチャに影響を与えない）、条件付きメモリアクセス動作に対して様々な方法で通知され得る。非条件付きメモリアクセス動作の場合、許可フォールトは、例外またはトラップを引き起こし得る。
【００２９】
ステップ３８において、変換ルックアサイドバッファ２４内にヒットがないと判定された場合、そのメモリアクセス動作のための変換アクセス許可データが検索されなければならない場合に、ウォークステートマシン２２（メモリ許可回路）によるテーブルウォークが必要である。そのようなテーブルウォーク動作が実行される前に、ステップ４６は、検討中のメモリアクセス動作が図６、図７および／または図８に関連して説明したものの１つのような条件付きメモリアクセスであるかどうかを判定する。ステップ４６において、メモリアクセス動作が条件付きメモリアクセス動作であると判定された場合、処理はステップ４８に進み、そこで条件付きアクセス無効フラグが、ウォークステートマシン２２が条件付きメモリアクセス動作に関して無効にされたことを示す第１の値「１」を有するかどうかについて判定される。条件付きアクセス許可チェック無効フラグが第１の値を有する場合、処理はステップ５０に進み、そこで変換フォールト、例えば、そのメモリアクセス動作に利用可能な変換テーブルデータがないことに対応するフォールトが通知される。
【００３０】
ステップ４８で条件付きアクセス無効フラグが第２の値「０」を有すると判定された場合、これはウォークステートマシン２２が条件付きメモリアクセスに関して無効にされていないことを示し、したがって、処理はステップ５２に進み、そこでウォークステートマシン２２は変換テーブルデータ２０を介してテーブルウォーク動作を実行する。ステップ５４は、関連するメモリアクセスに対する変換データおよびアクセス許可データがテーブルウォーク動作によって見つかったか否かを判定する。変換が見つからなかった場合、処理はステップ５０に進み、そこで変換フォールトが通知される。ステップ５４において、変換が見つかったと判定された場合、処理はステップ５４に進み、そこで関連するメモリアクセスに関するアクセス許可がテストされる。テーブルウォークで有効な変換が見つかった場合、その変換はＴＬＢに記憶される。
【００３１】
図１０は、使用され得る仮想マシンの実装を示す。上述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するものであるが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートするホストオペレーティングシステム５２０を実行するホストプロセッサ５３０上で動作する。通常、適度な速度で実行する仮想マシンの実装を提供するのに大規模で強力なプロセッサが必要であるが、互換性または再利用のために別のプロセッサにネイティブのコードを実行したい場合のような特定の状況では、このようなアプローチは妥当であり得る。仮想マシンプログラム５１０は、仮想マシンプログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されるであろうアプリケーションプログラムインターフェースと同じアプリケーションプログラムインターフェースをアプリケーションプログラム５００に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの対話をモデル化するために仮想マシンプログラム５１０を使用してアプリケーションプログラム５００内から実行され得る。
【００３２】
例示的な実施形態を添付図面を参照しながら本明細書で詳細に説明してきたが、特許請求の範囲はこれらの正確な実施形態に限定されず、添付の特許請求の範囲に記載の範囲および趣旨から逸脱せずに、当業者によって様々な変更、追加および修正が可能であることを理解されたい。例えば、従属請求項の特徴の種々の組み合わせは、独立請求項の特徴を用いてなされ得る。
【図１】
2019525298.tif 000003
【図２】
2019525298.tif 000004
【図３】
2019525298.tif 000005
【図４】
2019525298.tif 000006
【図５】
2019525298.tif 000007
【図６】
2019525298.tif 000008
【図７】
2019525298.tif 000009
【図８】
2019525298.tif 000010
【図９】
2019525298.tif 000011
【図１０】
2019525298.tif 000012
【国際調査報告】
2019525298.tif 000013
2019525298.tif 000014
2019525298.tif 000015