特許第6963572号(P6963572)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

特許6963572条件付きメモリアクセスプログラム命令のための許可制御
<>
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000002
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000003
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000004
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000005
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000006
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000007
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000008
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000009
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000010
  • 特許6963572-条件付きメモリアクセスプログラム命令のための許可制御 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6963572
(24)【登録日】2021年10月19日
(45)【発行日】2021年11月10日
(54)【発明の名称】条件付きメモリアクセスプログラム命令のための許可制御
(51)【国際特許分類】
   G06F 12/14 20060101AFI20211028BHJP
   G06F 21/57 20130101ALI20211028BHJP
   G06F 12/1027 20160101ALI20211028BHJP
【FI】
   G06F12/14 510E
   G06F21/57
   G06F12/1027
【請求項の数】14
【全頁数】13
(21)【出願番号】特願2018-567174(P2018-567174)
(86)(22)【出願日】2017年5月18日
(65)【公表番号】特表2019-525298(P2019-525298A)
(43)【公表日】2019年9月5日
(86)【国際出願番号】EP2017062043
(87)【国際公開番号】WO2018001643
(87)【国際公開日】20180104
【審査請求日】2020年2月21日
(31)【優先権主張番号】16386010.9
(32)【優先日】2016年6月29日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】スティーブンス、ナイジェル ジョン
(72)【発明者】
【氏名】マグクリス、グリゴリオス
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 特開2003−058421(JP,A)
【文献】 特開平06−059890(JP,A)
【文献】 米国特許第05864692(US,A)
【文献】 米国特許第07178062(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/57
G06F 12/1027
(57)【特許請求の範囲】
【請求項1】
データを処理するための装置であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
許可テーブルデータを介して許可テーブルウォークを実行することによって前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路を備えるメモリ管理ユニットであって、
前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路による制御が無効にされると、前記メモリ許可回路は、許可テーブルウォークの実行が無効にされ、前記メモリ許可回路によってアクセスが制御される条件付きメモリアクセスに対してフォールトが通知され、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
を備える装置。
【請求項2】
前記メモリ許可回路は、前記メモリアドレス空間内のメモリアドレスへのアクセスを制御するためにアクセス許可データに応答する、請求項1に記載の装置。
【請求項3】
前記許可テーブルデータは、仮想アドレスから物理アドレスへのマッピングを指定する変換テーブルデータである、請求項に記載の装置。
【請求項4】
前記条件付きメモリアクセスプログラム命令は、一連のメモリアクセス動作を指定する条件付きベクトルメモリアクセス命令であり、前記一連のメモリアクセス動作の少なくともいくつかは、条件付きメモリアクセス動作である、請求項〜3のいずれか一項に記載の装置。
【請求項5】
前記一連のメモリアクセス動作内の第1のメモリアクセス動作は、非条件付きメモリアクセス動作であり、前記一連のメモリアクセス動作内の1つまたは複数の他のメモリアクセス動作は、条件付きメモリアクセス動作である、請求項に記載の装置。
【請求項6】
前記一連のメモリアクセス動作は、前記メモリアドレス空間内の非連続アドレスに対する動作である、請求項に記載の装置。
【請求項7】
前記一連のメモリアクセス動作の全ては、条件付きメモリアクセス動作である、請求項に記載の装置。
【請求項8】
前記一連のメモリアクセス動作は、前記メモリアドレス空間内の連続アドレスに対する動作である、請求項に記載の装置。
【請求項9】
前記メモリアドレス空間は、第1のメモリアドレス領域と第2のメモリアドレス領域とを含み、前記メモリ許可回路は、第1の条件付きアクセス許可チェック無効フラグに応答して、前記第1のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にし、前記メモリ許可回路は、第2の条件付きアクセス許可チェック無効フラグに応答して、前記第2のメモリアドレス領域内の各々の条件付きメモリアクセスにおける前記メモリ許可回路の動作を選択的に無効にする、請求項1〜のいずれか一項に記載の装置。
【請求項10】
動作の各々の特権レベルに対応する複数の例外レベルのうちの選択可能な1つ例外レベルの範囲内で動作するように前記装置を制御するための例外レベル制御回路を備える、請求項1〜のいずれか一項に記載の装置。
【請求項11】
前記複数の例外レベルのうちの2つの例外レベルは、アクセス許可データを共有する、請求項10に記載の装置。
【請求項12】
アクセス許可データを記憶するためのアクセス許可キャッシュを含み、前記アクセス許可キャッシュは、前記1つまたは複数の条件付きメモリアクセスと一致するアクセス許可データを記憶するときに、前記条件付きアクセス許可チェック無効フラグに関係なく、前記メモリアクセス回路が前記1つまたは複数の条件付きメモリアクセスを実行することが許可されるかどうかを制御する、請求項1〜11のいずれか一項に記載の装置。
【請求項13】
データを処理する方法であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するステップであって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
メモリ管理ユニットのメモリ許可回路を使用し許可テーブルデータを介して許可テーブルウォークを実行することによって前記メモリアクセスが許可されるかどうかを制御するステップであって、
前記1つまたは複数の条件付きメモリアクセスに関して、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路による制御が無効にされると、前記メモリ許可回路は、許可テーブルウォークの実行が無効にされ、前記メモリ許可回路によってアクセスが制御される条件付きメモリアクセスに対してフォールトが通知され、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
を含む方法。
【請求項14】
請求項1〜12のいずれかに記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理システムの分野に関する。より具体的には、本開示は、条件付き(contingent)メモリアクセスプログラム命令をサポートするデータ処理システム内の許可制御(permission control)に関する。
【背景技術】
【0002】
条件付きメモリアクセスプログラム命令は、メモリアクセス動作に関してソフトウェア管理による推測を実行することを可能にする、すなわち、条件付きメモリアクセスプログラム命令は、少なくとも1つの条件付きメモリアクセス動作を指定し、次のプログラム命令へのプログラムフローは、条件付きメモリアクセス動作が許可されるか否かに応じて変更されない、例えば、条件付きメモリアクセス動作が許可条件を満たさない場合に、例外は引き起こされない(トリガーされない)。条件付きメモリアクセスプログラム命令をサポートするシステムに関する潜在的なセキュリティ問題は、例外を引き起こさせずに(トリガーせずに)、またはオペレーティングシステム介入なしに、そのような条件付きメモリアクセスプログラム命令を使用してメモリアドレス空間を「走査(scan)」することによって悪意のある者がシステムの構成に関する情報を入手するのを容易にし、その後、タイミング解析などの手法を使用して、メモリアドレス空間のどの部分が特定の方法でマッピングまたは構成されているかを判定し得るということである。
【発明の概要】
【0003】
本開示の少なくともいくつかの実施形態は、データを処理するための装置であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するメモリアクセス回路であって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されるかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス回路と、
前記メモリアクセス回路が前記メモリアクセスを実行することを許可されるかどうかを制御するためのメモリ許可回路であって、
前記1つまたは複数の条件付きメモリアクセスに関して、前記メモリ許可回路は、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグとは無関係である、メモリ許可回路と
を備える装置を提供する。
【0004】
本開示の少なくともいくつかの実施形態は、データを処理する方法であって、
プログラムのメモリアクセスプログラム命令に応答して、メモリアドレス空間内で1つまたは複数のメモリアクセスを実行するステップであって、
前記メモリアクセスプログラム命令が条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは少なくとも1つの条件付きメモリアクセスを含み、前記条件付きメモリアクセスプログラム命令に続いて実行すべき次のプログラム命令へのプログラムフローは、前記少なくとも1つの条件付きメモリアクセスが許可されているかどうかと無関係であり、
前記メモリアクセスプログラム命令が非条件付きメモリアクセスプログラム命令である場合、前記1つまたは複数のメモリアクセスは1つまたは複数の非条件付きメモリアクセスであり、前記非条件付きメモリアクセスプログラム命令に続いて実行される次のプログラム命令へのプログラムフローは、前記1つまたは複数の非条件付きメモリアクセスが許可されるかどうかに依存する、メモリアクセス実行ステップと、
メモリ許可回路を使用して前記メモリアクセスが許可されるかどうかを制御するステップであって、
前記1つまたは複数の条件付きメモリアクセスに関して、第1の値を有する条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を無効にし、第2の値を有する前記条件付きアクセス許可チェック無効フラグに応答して前記メモリ許可回路による前記制御を有効にし、
前記1つまたは複数の非条件付きメモリアクセスに関して、前記メモリ許可回路による前記制御は、前記条件付きアクセス許可チェック無効フラグと無関係である、制御ステップと
を含む方法を提供する。
【0005】
本開示の少なくともいくつかの実施形態は、上記の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するためのコンピュータプログラムを提供する。
【0006】
例として、添付図面を参照しながら、実施形態例を説明する。
【図面の簡単な説明】
【0007】
図1】条件付きメモリアクセスプログラム命令をサポートし、メモリ許可回路を使用するデータ処理システムの概略図である。
図2】許可データを含む変換テーブルデータに対する複数の例外レベルおよび関連ポインタの概略図である。
図3】それぞれ独自の関連変換テーブルを有する高領域および低領域を含むように構成された図1のシステムのメモリアドレス空間の概略図である。
図4】条件付きアクセス許可チェック無効フラグを含む構成フラグを記憶する変換制御レジスタの概略図である。
図5】2つのメモリ領域に対する条件付きアクセス許可チェック無効フラグが異なるタイプの動作に対してどのように設定され得るかを示す表である。
図6】第1のfaultingロード命令およびnon−faultingロード命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
図7】トランザクショナルメモリシステム内のメモリトランザクションとしてマークされたコードブロック内のメモリアクセスプログラム命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
図8】プリフェッチ命令の形式の条件付きメモリアクセスプログラム命令の概略図である。
図9】メモリアクセス動作に関するアクセス許可の決定および使用を概略的に示すフローチャートである。
図10】仮想マシン実装を示す図である。
【発明を実施するための形態】
【0008】
図1は、メモリ6(例えば、1つまたは複数の物理メモリにマッピングされる仮想アドレス)に結合されたプロセッサコア4を含むデータ処理システム2を概略的に示す。プロセッサコア4は、メモリ6からプログラム命令をフェッチし、それらのプログラム命令を命令パイプライン8に供給するフェッチユニット5を含む。命令パイプライン8は、デコーダ回路10がプログラム命令をデコードし、デコードされたプログラム命令によって指定された処理動作を実行するためにプロセッサコア4の他の要素を制御するように機能する制御信号を生成するデコードステージを含む。プロセッサコア4は、通常、図1に示されているよりも多くの要素を含むが、明確にするためにこれらの要素の全てが示されているわけではないことが理解されるであろう。
【0009】
プロセッサコア4は、例えば、レジスタバンク14のレジスタ内に記憶されているデータ値に対して、一般的な計算操作および論理操作を実行するための処理回路12を含む。メモリアクセス回路16は、メモリ6内に記憶されているデータ値に関して、ロードおよびストア(記憶)など、デコーダ回路10によってデコードされたメモリアクセスプログラム命令によって指定されたメモリアクセス動作を実行するように機能する。メモリ管理ユニット18は変換テーブルデータ20に応答して実行すべきメモリアクセスが許可されるか否かを制御する。メモリ管理ユニット18はさらに、プロセッサコア4によって実行されるプログラム命令によって指定されるような仮想アドレスとメモリ6をアドレス指定するために使用されるような物理アドレス間で変換するように機能する。アクセス許可を判定するためにメモリ管理ユニット18によって使用される変換テーブルデータ20は、メモリ管理ユニット18内のウォークステートマシン(walk state machine)22によって制御されるテーブルウォーク動作(table walking operation(s))を介して復元される。ウォークステートマシン22は、以下でさらに説明するように、条件付きメモリアクセス動作に対して選択的に無効にされ得るメモリ許可回路の一例である。ウォークステートマシン22によって変換テーブルデータ20からのこのようなテーブルウォーク(table walking)によって取得される、直近で受信された変換テーブルデータは、メモリ管理ユニット18内の変換ルックアサイドバッファ24内にキャッシュされ得る。この変換ルックアサイドバッファ24は、通常、直近で使用されたアクセス許可データおよび直近で使用された仮想アドレスから物理アドレスへの変換データを記憶するので、アクセス許可キャッシュとして機能する。
【0010】
メモリ6からフェッチユニット5によってフェッチされたメモリアクセスプログラム命令によって指定されるようなメモリアクセス動作を実行しなければならない場合、メモリ管理ユニット18は、適用すべき仮想−物理アドレス変換を判定し、実行すべきメモリアクセス動作が、例えば、関連するデータにアクセスする許可を得るための現在適切な例外レベルにあるプロセッサコア4である、許可されたタイプのメモリアクセス動作である(例えば、読み取り専用として定義されたデータへの書き込み動作ではない)などのアクセス許可条件を満たしているか否かを判定する。メモリ管理ユニット18は、それが必要とするアクセス許可(および変換)データが、実行すべきメモリアクセス動作(単数または複数)のために変換ルックアサイドバッファ24内に存在するかどうかを判定する。実行すべきメモリアクセス動作(単数または複数)と変換ルックアサイドバッファ24内の記憶されているコンテンツとの間に一致(ヒット)がある場合、この記憶されているコンテンツは、適用すべきアドレス変換およびメモリアクセスがアクセス許可を満たしているか否かを判定するために使用される。変換ルックアサイドバッファ24内に一致がない場合、ウォークステートマシン22は(有効な場合)、変換テーブルデータ20内で、実行すべきメモリアクセス動作(単数または複数)に対して対応する変換アクセス許可データにアクセスするためにテーブルウォーク動作を実行する。変換テーブルデータ20内にそのような変換またはアクセス許可データが見つからない場合、変換フォールトが発生する。そのような変換フォールトは、比較的迅速に識別され得、例えば、変換すべき仮想アドレスは、変換テーブルデータ20内でマッピングが保持されている仮想アドレスの範囲外にある。変換アクセス許可データがテーブルウォーク動作によって識別される場合、そのような変換アクセス許可データは、メモリアクセス動作が許可されるか否かを判定するために使用され、許可された場合、メモリアクセス動作に使用すべきメモリ6内の適切な物理アドレスを生成するために使用される。
【0011】
例外レベル制御回路26は、プロセッサコア4が動作する現在の例外レベル(特権レベル)を制御し、現在の例外レベルが何であるかを示す信号をメモリ管理ユニット18に提供するように機能する。例えば、プログラム命令実行ポイントのリダイレクトおよび例外レベルの変更を引き起こすことにより生じる例外条件のように、現在の例外レベルに変更を加え得る様々な方法がある。変換テーブルベースレジスタ28は、異なる例外レベルで動作するときに使用すべきそれぞれの変換テーブルデータの位置を示す複数の変換テーブルベースアドレス値を記憶するために設けられる。したがって、異なる例外レベルは、異なる形式の仮想−物理アドレスマッピングおよび異なるアクセス許可を適用するために異なる変換テーブルデータを利用し得る。変換制御構成レジスタ30は、ウォークステートマシン22を含むメモリ管理ユニット18の動作を制御するように機能する構成フラグを記憶する。これらの構成フラグは、例えば、オペレーティングシステムプログラムまたはハイパーバイザプログラムなどによってソフトウェア制御下で設定され得る。
【0012】
図1に概略的に示されているように、メモリ6は、ボトムアドレスからトップアドレスまで延在するメモリアドレス空間を含む。このメモリアドレス空間の全てが使用可能であるとは限らない。例えば、メモリアドレス空間の一端に、オペレーティングシステムプログラムによって使用されかつ変換テーブルデータ20を安全に記憶するために使用される高領域が設けられ得る。メモリアドレス空間の他端には、ユーザプログラムによる使用のための低領域が設けられ得る。高領域および低領域は、それぞれの変換テーブルベースレジスタ値によって指し示される別々の変換テーブルデータが提供され得る。
【0013】
図2は、プロセッサコア4が動作し得る複数の可能な例外レベルを概略的に示す。例外レベルEL0は、最低レベルの特権を有し、ユーザプログラムの実行に使用される。特権レベル(およびアクセス権)が上昇すると、例外レベルEL1(通常はオペレーティングシステムプログラムによって使用される)、例外レベルEL2(通常はハイパーバイザプログラムによって使用される)、および例外レベルEL3(通常はセキュアモニタプログラムによって使用される)がさらに提供される。例外レベルEL0およびEL1は、変換テーブルデータを共有し、変換テーブルベースレジスタ値TTBR0_EL1およびTTBR1_EL1によってメモリアドレス空間内でそれぞれ指し示される2組の変換テーブルデータが提供される。例外レベルEL2およびEL3はそれぞれ、各々の変換テーブルベースレジスタ値TTBR_EL2およびTTBR_EL3によって指し示されるように、それら自身の変換テーブルデータ、または少なくともそれら自身のそのような変換テーブルデータを提供する能力を有する。
【0014】
図3は、例外レベルEL0およびEL1で動作するときのメモリ6のメモリアドレス空間のレイアウトおよび使用の一例を概略的に示す。上述したように、メモリアドレス空間は、その上端に高領域32を備え、その下端に低領域34を備える。高領域32は、通常、オペレーティングシステムカーネルプログラムの一部の記憶および実行に使用される。データ処理システムを不適切に制御しようとする悪意のある試みをより困難にするために、KASLR(カーネルアドレス空間レイアウトランダム化)のような技術を使用して、オペレーティングシステムカーネルプログラムのその一部が高領域32内に配置され得る。高領域32はさらに、高領域32および低領域34の両方に関して仮想−物理アドレスマッピングおよびアクセス許可をマッピングするために使用される変換テーブルデータTT0、TT1を記憶する。より具体的には、高領域32は、第1の変換テーブルベースレジスタ値TTBR1_EL1によって指し示される第1の変換テーブルデータTT1を使用する。低領域34は、第2の変換テーブルベースレジスタ値TTBR0_EL1によって指し示される第2の変換テーブルデータTT0を使用する。
【0015】
低領域34は、高領域32内に記憶されているオペレーティングシステムと協働して実行するためのユーザプログラムを記憶する。図3の右側部分には、実行すべきメモリアクセスに関して仮想−物理アドレスマッピングデータおよびアクセス許可データにアクセスするために、メモリ管理ユニット18によって実行され得るそれぞれの変換テーブルウォーク動作が示されている。このような変換テーブルウォーク動作は、プロセッサコア4がテーブルデータエントリの階層から適切なデータを検索するためにメモリ6内で複数の比較的遅いメモリアクセスを通常行う必要があるので、実行するのに比較的長い時間がかかる。悪意のある者にとって有用であり得る方法でメモリアドレス空間が変換テーブルデータによってどのように構成されているかを示す少なくともいくつかの特性を判定するために、特定のメモリアクセスがそのような比較的遅いページテーブルウォーク動作を呼び出すか否かが監視され得る。
【0016】
図4は、より詳細に変換制御レジスタ30を概略的に示す。特に、図4は、例外レベルEL0およびEL1に使用される変換制御レジスタの部分を示す。変換制御レジスタ30内に記憶されているフラグ内に含まれるのは、高領域32へのメモリアクセスに適用される第1の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD1と、低領域34へのメモリアクセスに適用される第2の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0である。
【0017】
条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0およびTCR_EL1_NFD1は、第1の値「1」を有するとき、ウォークステートマシン22(メモリ許可回路の一例)が条件付きメモリアクセス動作に関してページテーブルウォークを実行することを無効にするように機能し、非条件付きメモリアクセス動作に関してページテーブルウォークの実行は許可される。このようにして、条件付きメモリアクセスプログラム命令およびタイミング解析を用いたメモリ構成の走査はより困難になり得る。
【0018】
変換ルックアサイドバッファ24は、メモリアクセスのための適切なアドレス変換データおよびアクセス許可データを含む場合、条件付きアクセス許可チェック無効フラグまたはフラグTCR_EL1.NFD0およびTCR_EL1.NFD1の値に関係なく、使用のためにこのデータを提供する。変換ルックアサイドバッファ24は、一致が生じた場合、メモリアクセス動作が許可されているか否かを変換エラー(translation error)(マッピングされていない)または許可エラー(permission error)(不正確なアクセス許可)によって判定する間の時間差がメモリレイアウトを理解しようとしている悪意のある人に有用な情報を提供するには不十分であるように、十分に迅速にアクセス許可データおよび変換データを返すことができる。
【0019】
図5は、異なるタイプの所望の動作に使用され得る第1の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD0および第2の条件付きアクセス許可チェック無効フラグTCR_EL1.NFD1の異なる値を概略的に示す。通常のユーザプログラムを実行する場合、条件付きメモリアクセス動作に対して、ユーザプログラム自体を記憶する低領域34の変換テーブルデータを介したテーブルウォークは許可され得、オペレーティングシステムを記憶する高領域32の変換テーブルデータを介したテーブルウォークは無効にされ得る。逆に、低領域34内でセキュアモードでユーザプログラムを実行する場合には、低領域34と高領域32の両方で、条件付きメモリアクセス動作に対するテーブルウォークを無効にすることが望ましい場合がある。このことにより、悪意のあるプログラムが低領域34内で実行している同じプログラムの他の部分のメモリレイアウトに関する情報を取得することを回避することができる。
【0020】
条件付きメモリアクセスプログラム命令は、多種多様な異なる形式をとり得る。図6は、このような2つの形式の例を概略的に示す。これらの形式の例は、実行すべきメモリアクセス動作のシーケンスを指定する第1のfaultingロード命令LDRFFである。LDRFF命令に応答して実行すべき第1のメモリアクセス動作は非条件付きメモリアクセス動作であり、それがそのアクセス許可に失敗(fault)すると、例外が引き起こされる(トリガーされる)。LDRFF命令に対する残りのメモリアクセス動作は条件付きメモリアクセス動作であり、それらがアクセス許可に失敗した場合、LDRFF命令は、図6に示すように、第1のfaultingレジスタFFR内に対応する合否の値を設定することによって示されるが、プログラムフローには影響しない、つまり、実行する次のプログラム命令である。
【0021】
図6に描かれた条件付きメモリアクセスプログラム命令の他の変形形式は、non−faultingロード命令LDRNFである。この場合、関係するメモリアクセス動作のシーケンス内の全てのメモリアクセス動作は条件付きメモリアクセス動作であり、そのために、それらがアクセス許可に失敗した場合、LDRNFは、実行する次のプログラム命令であることは変わらないが、表されているように、第1のfaultingレジスタFFR内の適切なフラグ値によって示される。
【0022】
上記の条件付きメモリアクセスプログラム命令のそれぞれによって実行される条件付きメモリアクセス動作のシーケンスは、いくつかの形式の命令では連続するシーケンスのアドレスであり得、他の形式の命令ではアドレスアクセスは不連続であり得る。例えば、ロードは、メモリアドレス空間内で間隔を置いて配置された様々なメモリアドレス位置からデータ値を収集する収集ロードである。
【0023】
図7は、本開示の他の実施形態において、それ自体でまたは他の形態の条件付きメモリアクセスプログラム命令と組み合わせて使用され得る別の形式の条件付きメモリアクセスプログラム命令を概略的に示す。この例では、データ処理システム2はトランザクションメモリをサポートするものであり、そのことにより、プログラム命令のブロックは変換開始命令およびトランザクション終了プログラム命令によって区切られ、それらの区切り点間のメモリアクセス動作がメモリトランザクションの一部であることを示す。トランザクショナルメモリシステムは、対象のメモリトランザクションが実行されている間に競合する他のメモリトランザクションが発生するかどうかを判定するために監視し、そのような競合が発生すると、一方または両方のメモリトランザクションが巻き戻され(メモリの状態はメモリトランザクションが開始される前の状態に復元される)、その後、メモリトランザクションは後で再試行されるか、またはメモリロックの使用のように、他のメカニズムによって競合が発生しないように修正される。図7の状況下では、メモリアクセス命令LDR、STR、STRは、実行中のプログラムコード内で定義されたメモリトランザクションのデリミタ内にあるので、それらの文脈によって条件付きメモリアクセスプログラム命令にされる。メモリトランザクションの一部としてのこのような条件付きメモリアクセスプログラム命令は、それ自体デコーダ回路10によって識別され、結果的に、現在のメモリトランザクション内のいずれかのメモリアクセス動作によって呼び出された場合に、その許可チェック動作を無効にするために条件付きアクセス許可チェック無効フラグによって制御されるメモリ許可回路(例えばウォークステートマシン22)によって識別される。
【0024】
図8は、他の実施形態において、または上述のタイプの条件付きメモリアクセスプログラム命令と組み合わせて使用され得るさらに別のタイプの条件付きメモリアクセスプログラム命令を概略的に示す。図8の例では、条件付きメモリアクセスプログラム命令は、プログラムコードの一部を形成し、性能上の理由からメモリ6からキャッシュメモリ(図示せず)にデータ値をプリフェッチするように機能するプリフェッチ命令である。このようなプリフェッチ命令は、通常、プリフェッチすべきメモリブロックの開始アドレスとそのメモリブロックの長さを指定する。プリフェッチ命令はデコーダ回路10によって条件付きメモリアクセスプログラム命令として識別され、したがって、プリフェッチ命令がテーブルウォークを実行するためにウォークステートマシン22を呼び出した場合、ウォークステートマシン22がそのような条件付きメモリアクセスプログラム命令に対して無効にされ、したがって許可チェックが無効にされることを示す値を条件付きアクセス許可チェック無効フラグが有する場合に、テーブルウォークは、条件付きアクセス許可チェック無効フラグの動作によって抑制される。
【0025】
したがって、条件付きメモリアクセスプログラム命令は、
トランザクショナルメモリへのメモリトランザクションに対応するプログラム命令のシーケンス内のメモリアクセス命令、および
プリフェッチ命令
のうちの1つであり得る。
【0026】
図9は、アクセス許可判定におけるデータ処理システム2の動作を概略的に示すフローチャートである。実際には、図9に示すプロセスと同時に、かつ時間的に重複して、データ処理システム2の動作の一部として多くの他のプロセスがさらに実行されることは理解されるであろう。
【0027】
ステップ36において、処理は、実行するメモリアクセス動作が受信されるまで待機する。次に、ステップ38は、受信したメモリアクセス動作が変換ルックアサイドバッファ24内に既に記憶されている(キャッシュされている)変換アクセス許可データと一致するか否かを判定する。変換ルックアサイドバッファ24内に記憶されているデータを選択する方法は様々であるが、ウォークステートマシン22によって実行されるテーブルウォークによって検索される、新たにフェッチされた変換アクセス許可データのための空間を作るために、最も長く使用されていないエントリのようなアルゴリズムに基づいて制御され得る。
【0028】
変換ルックアサイドバッファ24内でヒットがあった場合、処理はステップ40に進み、そこで実行すべきメモリアクセスがその許可テストに合格したか否か、例えば、適切な例外レベルのメモリアクセスであるか否か、適切なタイプのメモリアクセスであるか否かなどについての判定が行われる。許可アクセステストに合格(pass)した場合、ステップ42は、変換ルックアサイドバッファ24から取得した変換済み物理アドレスを使用してアクセスを実行するように働く。許可が合格でなかった場合、ステップ44は許可フォールト(permission fault)を通知するように働く。このような許可フォールトは、例えば、図6の第1のfaultingレジスタFFR内のフラグ値を設定することによって、図7のトランザクショナルメモリの場合にはメモリトランザクションの失敗を通知することによって、図8のプリフェッチ命令の場合には単にプリフェッチ動作の残りの部分を停止することによって(通常、これはアーキテクチャに影響を与えない)、条件付きメモリアクセス動作に対して様々な方法で通知され得る。非条件付きメモリアクセス動作の場合、許可フォールトは、例外またはトラップを引き起こし得る。
【0029】
ステップ38において、変換ルックアサイドバッファ24内にヒットがないと判定された場合、そのメモリアクセス動作のための変換アクセス許可データが検索されなければならない場合に、ウォークステートマシン22(メモリ許可回路)によるテーブルウォークが必要である。そのようなテーブルウォーク動作が実行される前に、ステップ46は、検討中のメモリアクセス動作が図6図7および/または図8に関連して説明したものの1つのような条件付きメモリアクセスであるかどうかを判定する。ステップ46において、メモリアクセス動作が条件付きメモリアクセス動作であると判定された場合、処理はステップ48に進み、そこで条件付きアクセス無効フラグが、ウォークステートマシン22が条件付きメモリアクセス動作に関して無効にされたことを示す第1の値「1」を有するかどうかについて判定される。条件付きアクセス許可チェック無効フラグが第1の値を有する場合、処理はステップ50に進み、そこで変換フォールト、例えば、そのメモリアクセス動作に利用可能な変換テーブルデータがないことに対応するフォールトが通知される。
【0030】
ステップ48で条件付きアクセス無効フラグが第2の値「0」を有すると判定された場合、これはウォークステートマシン22が条件付きメモリアクセスに関して無効にされていないことを示し、したがって、処理はステップ52に進み、そこでウォークステートマシン22は変換テーブルデータ20を介してテーブルウォーク動作を実行する。ステップ54は、関連するメモリアクセスに対する変換データおよびアクセス許可データがテーブルウォーク動作によって見つかったか否かを判定する。変換が見つからなかった場合、処理はステップ50に進み、そこで変換フォールトが通知される。ステップ54において、変換が見つかったと判定された場合、処理はステップ54に進み、そこで関連するメモリアクセスに関するアクセス許可がテストされる。テーブルウォークで有効な変換が見つかった場合、その変換はTLBに記憶される。
【0031】
図10は、使用され得る仮想マシンの実装を示す。上述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実装するものであるが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を実行するホストプロセッサ530上で動作する。通常、適度な速度で実行する仮想マシンの実装を提供するのに大規模で強力なプロセッサが必要であるが、互換性または再利用のために別のプロセッサにネイティブのコードを実行したい場合のような特定の状況では、このようなアプローチは妥当であり得る。仮想マシンプログラム510は、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるであろうアプリケーションプログラムインターフェースと同じアプリケーションプログラムインターフェースをアプリケーションプログラム500に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンハードウェアとの対話をモデル化するために仮想マシンプログラム510を使用してアプリケーションプログラム500内から実行され得る。
【0032】
例示的な実施形態を添付図面を参照しながら本明細書で詳細に説明してきたが、特許請求の範囲はこれらの正確な実施形態に限定されず、添付の特許請求の範囲に記載の範囲および趣旨から逸脱せずに、当業者によって様々な変更、追加および修正が可能であることを理解されたい。例えば、従属請求項の特徴の種々の組み合わせは、独立請求項の特徴を用いてなされ得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10