IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

<>
  • 特表-範囲チェック命令 図1
  • 特表-範囲チェック命令 図2
  • 特表-範囲チェック命令 図3
  • 特表-範囲チェック命令 図4
  • 特表-範囲チェック命令 図5A
  • 特表-範囲チェック命令 図5B
  • 特表-範囲チェック命令 図6
  • 特表-範囲チェック命令 図7
  • 特表-範囲チェック命令 図8
  • 特表-範囲チェック命令 図9
  • 特表-範囲チェック命令 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-01-12
(54)【発明の名称】範囲チェック命令
(51)【国際特許分類】
   G06F 9/30 20180101AFI20220104BHJP
   G06F 9/34 20060101ALI20220104BHJP
   G06F 9/38 20060101ALI20220104BHJP
   G06F 12/14 20060101ALI20220104BHJP
【FI】
G06F9/30 350A
G06F9/34 350A
G06F9/30 380Z
G06F9/38 380B
G06F12/14 510D
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021507901
(86)(22)【出願日】2019-08-20
(85)【翻訳文提出日】2021-02-16
(86)【国際出願番号】 GB2019052336
(87)【国際公開番号】W WO2020079386
(87)【国際公開日】2020-04-23
(31)【優先権主張番号】1816957.3
(32)【優先日】2018-10-18
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】グロカット、トーマス クリストファー
【テーマコード(参考)】
5B013
5B017
5B033
【Fターム(参考)】
5B013EE05
5B017AA01
5B017BA01
5B017BB06
5B017CA01
5B033BE00
5B033DB01
5B033DD05
5B033FA07
5B033FA27
(57)【要約】
装置2は、命令をデコードするための命令デコーダ7と、命令デコーダによってデコードされた命令に応じてデータ処理を実施するための処理回路4と、処理回路によって発行されたメモリ・アクセス・リクエストが複数のメモリ属性エントリ内で指定されるアクセス・パーミッションを満足するかどうかをチェックするメモリ属性チェック回路16であって、それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定する、メモリ属性チェック回路16とを備える。範囲チェック命令が、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定することに応じて、命令デコーダ7は処理回路4が、少なくとも1つのソフトウェア・アクセス可能な記憶場所12、13に第1のアドレス及び第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするよう制御する。
【特許請求の範囲】
【請求項1】
装置であって、
命令をデコードするための命令デコーダと、
前記命令デコーダによってデコードされた前記命令に応じてデータ処理を実施するための処理回路と、
前記処理回路によって発行されたメモリ・アクセス・リクエストが、複数のメモリ属性エントリにおいて指定されるアクセス・パーミッションを満足するかどうかをチェックするメモリ属性チェック回路であって、それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定する、メモリ属性チェック回路と
を備え、
範囲チェック命令が、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定することに応じて、前記命令デコーダは、前記命令デコーダによってサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に、前記第1のアドレス及び前記第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするように前記処理回路を制御するように構成される、
装置。
【請求項2】
前記メモリ属性チェック回路が、前記可変サイズが2の累乗以外のバイト数であることを許可するように構成される、請求項1に記載の装置。
【請求項3】
前記処理回路が、前記第1のアドレスと前記第2のアドレスとの差異が2の累乗以外のバイト数であることを許可するように構成される、請求項1又は2に記載の装置。
【請求項4】
前記アドレス特定パラメータが、前記第1のアドレスがそこから読み出されるベース・アドレス・レジスタ、及び前記第1のアドレスと前記第2のアドレスとの差異を特定するためのオフセットを特定する、請求項1から3までのいずれかに記載の装置。
【請求項5】
前記オフセットが、倍数及びサイズ値として指定され、
前記倍数及び前記サイズ値うちの一方が、前記範囲チェック命令によって指定される可変パラメータであり、
前記倍数及び前記サイズ値のうちのもう一方が
固定値、
前記範囲チェック命令によって指定される即値、
前記範囲チェック命令によって指定されるレジスタ内に格納される値、
のうちの1つである、
請求項4に記載の装置。
【請求項6】
前記アドレス特定パラメータが、前記第1のアドレスがそこから読み出される第1のレジスタ、及び前記第2のアドレスがそこから読み出される第2のレジスタを特定する、請求項1から3までのいずれか一項に記載の装置。
【請求項7】
前記少なくとも1つのソフトウェア・アクセス可能な記憶場所が、前記範囲チェック命令によって指定されるデスティネーション・レジスタを含む、請求項1から6までのいずれかに記載の装置。
【請求項8】
以前の条件状態インジケータ生成命令の結果のプロパティを示す少なくとも1つの条件状態指標を格納するための制御レジスタを備え、
条件付き命令に応じて、前記命令デコーダは、前記制御レジスタに記憶される前記少なくとも1つの条件状態指標が試験条件を満足するかどうかを条件とする条件付き動作を実施するように前記処理回路を制御するように構成され、
前記範囲チェック命令に応じて、前記命令デコーダは、前記制御レジスタ内の前記少なくとも1つの条件状態指標のうちの少なくとも1つを更新することによって前記状態値をセットするように前記処理回路を制御するように構成される、
請求項1から7までのいずれかに記載の装置。
【請求項9】
前記範囲チェック命令に応じて、少なくとも前記第1のアドレスと前記第2のアドレスの両方が同じメモリ属性エントリに対応する場合、前記処理回路が、前記少なくとも1つのソフトウェア・アクセス可能な記憶場所に、前記第1のアドレス及び前記第2のアドレスに対応する一致したメモリ属性エントリから導出された属性情報を記憶するように構成される、請求項1から8までのいずれかに記載の装置。
【請求項10】
前記処理回路が複数の動作状態を有し、
前記範囲チェック命令の少なくとも1つの変形に応じて、前記処理回路が、前記処理回路の現在の動作状態とは異なる動作状態にある場合に前記一致したメモリ属性エントリについて前記対応するアドレス領域へのメモリ・アクセスに課されるアクセス・パーミッションに基づいて前記属性情報を導出するように構成される、請求項9に記載の装置。
【請求項11】
前記処理回路が、セキュアなドメイン及びあまりセキュアではないドメインを含む、動作の複数のセキュリティ・ドメインを有し、それぞれのセキュリティ・ドメイン内で前記処理回路が複数のモードのうちの1つで、且つ複数の特権レベルのうちの1つで動作するように構成され、
前記命令デコーダが、前記範囲チェック命令の以下の変形、すなわち
第1の変形であって、前記処理回路が現在のセキュリティ・ドメイン内にあり、且つ前記現在のモードに関連付けられる特権レベルにある場合、前記属性情報が、前記第1のアドレスと前記第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第1の変形、
第2の変形であって、前記処理回路が前記現在のドメインとは異なるセキュリティ・ドメインにあり、且つ前記異なるセキュリティ・ドメインで動作する際に前記現在のモードに関連付けられる前記特権レベルにある場合、前記属性情報が、前記第1のアドレスと前記第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第2の変形、
第3の変形であって、前記属性情報が、前記第1のアドレスと前記第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが現在のセキュリティ・ドメイン内で、且つ前記現在のモードに関連付けられる前記特権レベルとは異なる特権レベルで許可されるかどうかを指定する、第3の変形、及び
第4の変形であって、前記処理回路が現在のセキュリティ・ドメインとは異なるセキュリティ・ドメイン内に、且つ前記現在のモードに関連付けられる特権レベルとは異なる特権レベルにある場合、前記属性情報が、前記第1のアドレスと前記第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第4の変形、
の変形のうちの少なくとも1つをサポートするように構成される、
請求項9に記載の装置。
【請求項12】
前記命令デコーダが、前記第2の変形及び前記第4の変形のうちの少なくとも1つをサポートするように構成され、前記異なるセキュリティ・ドメインが前記あまりセキュアではないドメインを含み、前記処理回路が前記あまりセキュアではないドメイン内にある場合、前記処理回路が、前記第2の変形及び前記第4の変形のうちの前記少なくとも1つを実行する試行に応じて、フォールトのシグナリングをトリガするように構成される、及び
前記命令デコーダが、前記第3の変形及び前記第4の変形のうちの少なくとも1つをサポートするように構成され、前記異なる特権レベルが、現在の特権レベルよりも低い特権を与えられた特権レベルを含み、前記処理回路は、少なくとも1つの所定の特権レベルにある場合、前記第3の変形及び前記第4の変形のうちの前記少なくとも1つを実行する試行に応じて、フォールトのシグナリングをトリガするように構成され、前記複数の特権レベルが、前記少なくとも1つの所定の特権レベルよりも高い特権を与えられた少なくとも1つの特権レベルを含む
のうちの少なくとも1つである、請求項11に記載の装置。
【請求項13】
前記メモリ属性チェック回路は、前記処理回路によって発行されたメモリ・アクセス・リクエストが、第1の複数のメモリ属性エントリ内で指定されるアクセス・パーミッションを満足するかどうかをチェックし、前記メモリ・アクセス・リクエストが、第2の複数のメモリ属性エントリ内で指定されるアクセス・パーミッションを満足するかどうかをチェックするように構成され、
前記範囲チェック命令に応じて、前記命令デコーダは、
前記第1のアドレス及び前記第2のアドレスが、前記第1の複数のメモリ属性エントリの同じエントリに対応するかどうかを示す第1の状態値と、
前記第1のアドレス及び前記第2のアドレスが、前記第2の複数のメモリ属性エントリの同じエントリに対応するかどうかを示す第2の状態値と
を前記少なくとも1つのソフトウェア・アクセス可能な記憶場所にセットするように前記処理回路を制御するように構成される、
請求項1から12までのいずれかに記載の装置。
【請求項14】
前記複数のメモリ属性エントリが複数のメモリ保護エントリを含み、前記複数のメモリ保護エントリのそれぞれが、
前記対応するアドレス領域が、読み取り専用であるか、又は読み取り可能/書き込み可能の両方であるかどうか、
前記処理回路の複数の特権レベルのどれが前記対応するアドレス領域へアクセスできるか、
のうちの少なくとも1つを示すアクセス・パーミッションを指定する、請求項1から13までのいずれかに記載の装置。
【請求項15】
前記メモリ・アクセス・リクエストがメモリ・システムをアクセスするリクエストを含み、
前記複数のメモリ保護エントリは、メモリ保護テーブルを含み、前記メモリ保護テーブルは前記メモリ・システムに記憶される、
請求項14に記載の装置。
【請求項16】
前記メモリ・システムから取得された前記メモリ保護テーブルの少なくとも1つのメモリ保護エントリをキャッシュするためのメモリ保護キャッシュ記憶回路を備える、請求項15に記載の装置。
【請求項17】
前記処理回路が、セキュアなドメイン及びあまりセキュアではないドメインを含む、動作の複数のドメインを有し、
前記複数のメモリ属性エントリが複数のセキュリティ属性エントリを含み、前記複数のセキュリティ属性エントリのそれぞれが、前記複数のドメインのどれが前記対応するアドレス領域に関連付けられるかを示すアクセス・パーミッションを指定する、請求項1から16までのいずれかに記載の装置。
【請求項18】
前記範囲チェック命令の少なくとも1つの変形に応じて、少なくとも前記第1のアドレスと前記第2のアドレスの両方が同じセキュリティ属性エントリに対応する場合、前記処理回路が、前記少なくとも1つのソフトウェア・アクセス可能な記憶場所に、前記第1のアドレス及び前記第2のアドレスに対応する前記一致したセキュリティ属性エントリにより前記対応するアドレス領域に関連付けられるとして指定された前記セキュリティ・ドメインから導出された属性情報を記憶するように構成される、請求項17に記載の装置。
【請求項19】
前記複数のメモリ属性エントリも複数のメモリ保護エントリを含み、前記複数のメモリ保護エントリのそれぞれが、
前記対応するアドレス領域が、読み取り専用であるか、又は読み取り可能/書き込み可能の両方であるかどうか、
前記処理回路の特権レベルのどれが前記対応するアドレス領域へアクセスできるか、
のうちの少なくとも1つを示すアクセス・パーミッションを指定し、
前記範囲チェック命令の少なくとも1つの変形に応じて、少なくとも前記第1のアドレスと前記第2のアドレスの両方が同じメモリ属性エントリに対応する場合、前記処理回路が、前記少なくとも1つのソフトウェア・アクセス可能な記憶場所に、
前記第1のアドレス及び前記第2のアドレスに対応する一致メモリ保護エントリ内のアクセス・パーミッションと、前記第1のアドレス及び前記第2のアドレスに対応する一致するセキュリティ属性エントリ内で指定されるアクセス・パーミッションとの両方が、所与のタイプのメモリ・アクセスが許可されていることを指定するかどうかを、単一のインジケータで指定する少なくとも1つの組み合わされたパーミッション指標
を記憶するように構成される、
請求項17又は18に記載の装置。
【請求項20】
前記メモリ属性チェック回路が少なくとも1セットの比較器を備え、それぞれの比較器のセットは、
メモリ・アクセス・リクエストのターゲット・アドレスを所与のメモリ属性エントリの下位境界アドレスと比較するための、下位境界比較器と、
メモリ・アクセス・リクエストの前記ターゲット・アドレスを前記所与のメモリ属性エントリの上位境界アドレスと比較するための、上位境界比較器と
を備え、
前記範囲チェック命令に応じて、前記命令デコーダは、前記第1のアドレスを前記ターゲット・アドレスとしてそれぞれの比較器のセットの前記下位境界比較器に与え、前記第2のアドレスを前記ターゲット・アドレスとしてそれぞれの比較器のセットの前記上位境界比較器に与えるように前記処理回路を制御するように構成される、
請求項1から19までのいずれかに記載の装置。
【請求項21】
前記範囲チェック命令のエンコードが、前記第1のアドレスが前記第2のアドレスよりも下位であるように制約する、請求項1から20までのいずれかに記載の装置。
【請求項22】
前記第2のアドレスが前記第1のアドレスより下位である範囲チェック命令に応じて、前記処理回路が少なくとも
フォールトをシグナリングすること、
前記第1のアドレス及び前記第2のアドレスが同じメモリ属性エントリに対応しないことを示す前記状態値をリターンすること、
のうちの1つを実施するように構成される、請求項1から21までのいずれかに記載の装置。
【請求項23】
データ処理方法であって、
命令デコーダを使用して、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定する範囲チェック命令をデコードすること
を含み、
前記範囲チェック命令をデコードすることに応じて、前記命令デコーダによってサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に、前記第1のアドレス及び前記第2のアドレスが複数のメモリ属性エントリのうちの同じメモリ属性エントリに対応するかどうかを示す状態値をセットするように処理回路を制御し、それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域のためのアクセス・パーミッションを指定する、
データ処理方法。
【請求項24】
ターゲット・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、
前記ターゲット・コードの命令をデコードし、前記デコードされた命令に応じてデータ処理を実施するように前記ホスト・データ処理装置を制御するための命令デコード・プログラム・ロジックと、
前記ターゲット・コードの前記デコードされた命令によってトリガされたメモリ・アクセス・リクエストが、複数のメモリ属性エントリにおいて指定されるアクセス・パーミッションを満足するかどうかをチェックするメモリ属性チェック・プログラム・ロジックであって、それぞれのメモリ属性エントリは、前記命令実行環境によってシミュレートされるシミュレート・アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定する、メモリ属性チェック・プログラム・ロジックと
を含み、
範囲チェック命令が、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定することに応じて、前記命令デコード・プログラム・ロジックは、前記命令デコード・プログラム・ロジックによるデコードのためにサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に、前記第1のアドレス及び前記第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするように前記ホスト・データ処理装置を制御するように構成される、
コンピュータ・プログラム。
【請求項25】
請求項24に記載のコンピュータ・プログラムを記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
データ処理装置は、複数のメモリ属性エントリのうちの1つにおいて指定されるアクセス・パーミッションをメモリ・アクセス・リクエストが満足するかどうかをチェックするためのメモリ属性チェック回路を有することがある。例えば、アクセス・パーミッションは、領域が読み取り専用アクセスに制限されるか、又は読み取りと書き込みの両方であり得るか、又は処理回路の動作のどのモードが領域にアクセスすることができるかを指定することなど、アドレス空間の対応する領域のプロパティを指定することができる。これはメモリ・システム内の一定のデータにアクセスすることに対してセキュリティ制約を実施するのに有用であり得る。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁
【発明の概要】
【課題を解決するための手段】
【0004】
少なくともいくつかの実例は、装置であって、命令をデコードするための命令デコーダと、命令デコーダによってデコードされた命令に応じてデータ処理を実施するための処理回路と、処理回路によって発行されたメモリ・アクセス・リクエストが、複数のメモリ属性エントリにおいて指定されるアクセス・パーミッションを満足するかどうかをチェックするメモリ属性チェック回路であって、それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定する、メモリ属性チェック回路とを備え、範囲チェック命令が、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定することに応じて、命令デコーダは、命令デコーダによってサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に第1のアドレス及び第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするよう制御するように構成される、装置を提供する。
【0005】
少なくともいくつかの実例は、データ処理方法であって、命令デコーダを使用して、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定する範囲チェック命令をデコードすることを含み、範囲チェック命令をデコードすることに応じて、処理回路が、命令デコーダによってサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に第1のアドレス及び第2のアドレスが複数のメモリ属性エントリのうち同じメモリ属性エントリに対応するかどうかを示す状態値をセットするように制御し、それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域のためのアクセス・パーミッションを指定する、データ処理方法を提供する。
【0006】
少なくともいくつかの実例は、ターゲット・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、コンピュータ・プログラムは、ターゲット・コードの命令をデコードし、デコードされた命令に応じてデータ処理を実施するようホスト・データ処理装置を制御するための命令デコード・プログラム・ロジックと、ターゲット・コードのデコードされた命令によってトリガされたメモリ・アクセス・リクエストが、複数のメモリ属性エントリにおいて指定されるアクセス・パーミッションを満足するかどうかをチェックするメモリ属性チェック・プログラム・ロジックであって、それぞれのメモリ属性エントリは命令実行環境によってシミュレートされるシミュレート・アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定する、メモリ属性チェック・プログラム・ロジックとを含み、範囲チェック命令が、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定することに応じて、命令デコード・プログラム・ロジックはホスト・データ処理装置が、命令デコード・プログラム・ロジックによるデコードのためにサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に第1のアドレス及び第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするよう制御するように構成される、コンピュータ・プログラムを提供する。
【0007】
少なくともいくつかの実例は上述のコンピュータ・プログラムを記憶するコンピュータ可読記憶媒体を提供する。記憶媒体は非一時的な記憶媒体であってもよい。
【0008】
本技法のさらなる態様、特徴及び利点は、添付の図面と併せて読まれる実例の以下の説明から明らかとなる。
【図面の簡単な説明】
【0009】
図1】メモリ属性チェック回路を有するデータ処理装置の実例の図である。
図2】メモリ属性チェック回路がメモリ・システム内に記憶されるメモリ保護テーブルで定義されるアクセス・パーミッションに対してメモリ・アクセスをチェックするメモリ保護ユニットを含む、実例のより詳細な図である。
図3】メモリ保護ユニット及びセキュリティ属性ユニットによってセットされたオーバラップするパーミッションの実例の図である。
図4】異なるドメイン、モード、及び特権レベルを含む処理回路の異なる動作状態の実例の図である。
図5A】範囲チェック命令の実例の図である。
図5B】範囲チェック命令の実例の図である。
図6】範囲チェック命令のデスティネーション・レジスタに記憶される情報の実例の図である。
図7】範囲チェック命令の複数の変形(variant)の図である。
図8】第1のアドレス及び第2のアドレスが同じメモリ属性エントリに対応するかどうかルックアップするための比較器を使用する実例の図である。
図9】範囲チェック命令を処理する方法の図である。
図10】シミュレータの実例の図である。
【発明を実施するための形態】
【0010】
装置は、命令をデコードするための命令デコーダと、命令デコーダによってデコードされた命令に応じてデータ処理を実施するための処理回路とを有する。メモリ属性チェック回路は、処理回路によって発行されたメモリ・アクセス・リクエストが、2つ以上のメモリ属性エントリにおいて指定されるアクセス・パーミッションを満足するかどうかをチェックするために提供される。それぞれのメモリ属性エントリは、アドレス空間内の可変サイズの対応するアドレス領域に対するアクセス・パーミッションを指定することができる。したがって、それぞれのメモリ属性エントリが可変サイズのアドレス領域に対応することができるため、どのアドレスが特定のメモリ属性エントリにマッピングするか事前に決定されていない。可変サイズのエントリのサポートは、比較的大きなアドレス領域を単一のメモリ属性エントリ内でカバーできるようにするために有用であり得、それにより必要とされるメモリ属性エントリの数を削減する。
【0011】
装置の命令デコーダは、第1のアドレス及び第2のアドレスを特定するためのアドレス特定パラメータを指定する範囲チェック命令のデコードをサポートする。それに応じて、命令デコーダは処理回路が、命令デコーダによってサポートされる命令の少なくとも1つのタイプにとってアクセス可能である少なくとも1つのソフトウェア・アクセス可能な記憶場所に第1のアドレス又は第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値をセットするよう制御する。したがって、この命令はソフトウェアが第1と第2のアドレス両方が同じメモリ属性エントリに対応するか、又は異なるメモリ属性エントリに対応するかどうかについての洞察を得ることを可能にする。そのような動作は比較的稀と考えることができるが、それは典型的にはメモリ属性データが所与のターゲット・アドレスを特定するメモリ・アクセスについてチェックされる時、メモリ属性チェックに基づいてソフトウェアにとって可視である情報は、メモリ・アクセスが正常に実行されたかどうか、又はアクセス・パーミッションが指定されなかったためにフォールトをトリガしたかどうかの指標だけだからである。特定のどのメモリ属性エントリに所与のアドレスが対応するかは、典型的には興味の対象と見なされない。
【0012】
しかしながら、第1及び第2のアドレスが同じメモリ属性エントリに対応するかどうかについての情報は、例えば、ソフトウェア・プロセスが第1及び第2のアドレスによって境界付けされるアレイ内のすべてのワードが特定のソフトウェア・プロセスにとってアクセス可能かどうかをチェックできるようにするために、一定のセキュリティ・チェック動作に有用な場合があると認識される。ソフトウェアから、第1と第2のアドレス両方が同じメモリ属性エントリに対応するかどうかの指標にアクセスできるようにする範囲チェック命令を提供することにより、これはそのようなセキュリティ・チェックを単純化することができる。アドレスが同じメモリ属性エントリに対応している場合、そのメモリ属性エントリがアドレス空間の対応する領域が関連するソフトウェアにとってアクセス可能であることを示す場合、これはそれぞれのアドレスを個々にチェックする必要なく第1及び第2のアドレスとの間のすべてのアドレスがアクセス可能であることを示唆することができ、これによりパーミッション・チェックを実施する速度を大いに改善することができる。第1及び第2のアドレスが同じメモリ属性エントリに対応するかどうかをチェックすることがなぜ有用であり得るかの別の理由は、確定的なレイテンシでタスクを実施することが重大である一定のリアルタイム重要タスクを実施するシステムにとって、第1及び第2のアドレスによって境界付けられるアドレスの一定の範囲がすべて同じメモリ属性エントリに対応することが予め知ることができる場合、メモリ属性エントリがまだ定義されていない異なるアドレス領域にクロスすることに起因してアドレスの範囲を処理している途中でトリガされるフォールトがないと期待することができるからである。
【0013】
2つのアドレスが同じメモリ属性エントリに対応するかどうかチェックする代替的な方法は、命令セット・アーキテクチャ内で単一のアドレスを指定する命令を与えることであり、命令の実行によりそのアドレスに一致する特定のメモリ属性エントリのエントリ番号の指標がソフトウェア・アクセス可能な記憶場所にリターンされる。しかしながら、上で議論したように第1及び第2のアドレスを指定する範囲チェック命令はいくつかの利点を有する。例えば、命令は、所与のアドレスに一致する具体的なエントリを特定する領域番号ではなく、第1及び第2のアドレスが同じメモリ属性エントリに対応するかどうかを示す状態値を単純にリターンするため、このことは命令の結果を記憶するために必要とされる記憶容量が非常に多数の異なるメモリ属性エントリをサポートするシステムにより良好に釣り合うことを意味し、これは例えば、状態値がエントリ総数に応じてサイズが増大する複数ビット数を必要とするのではなく、与えられるメモリ属性エントリ番号に関わらず単一ビットと同程度に小さいからである。
【0014】
また、第1及び第2のアドレスを指定する範囲チェック命令は、第1のアドレス及び第2のアドレス両方に関連付けられるエントリ番号を問い合わせるために2つの別個の命令を要求するのではなく、単一の命令内で第1及び第2のアドレスが同じメモリ属性エントリに対応するかどうかの情報を与えることができる。範囲チェック命令を与えることは、2つの別個の領域番号問い合わせ命令によってリターンされるエントリ番号を比較するための比較命令の必要性をやはり回避する。どのエントリが所与のアドレスに対応するかチェックするためにメモリ属性エントリのセットをルックアップするためのルックアップ・プロセスは、一定の時間を要することがある。アドレスが同じメモリ属性エントリに対応するかどうかをチェックするためのそのようなセキュリティ・チェック動作は、プログラムの全体の実行時間に対して比較的小さな割合に相当し得るが、それにもかかわらず何らかレイテンシに敏感なタスクのクリティカル・パス上にあり、そのため少ない命令で関連するチェックを実施させることを可能とすることにおけるワークロードの低減は、一定のリアルタイムの重大なアプリケーションについて殊に有益であり得る。いくつかのアプリケーションにおいて、パーミッション・チェックはソフトウェア内で大量の関数で実施されなければならないことがある。単一の範囲チェック命令を提供することは、制約された環境内でコード・サイズを削減することにおいて重要であり得る。
【0015】
説明される範囲チェック命令は、メモリ属性チェック回路が所与のメモリ属性エントリについて対応するアドレス領域の可変サイズが2の累乗以外のバイト数であることを許可するシステムについて特に有用であり得る。これは例えばそれぞれのページ・テーブル・エントリが2の累乗固定のバイト数のページに対応することができる階層構造的なページ・テーブルと対照的である場合があり、そのためにアドレスの異なる部分が必要とされる特定のページ・テーブル・エントリに、場合によってはページ・テーブル・ウォーク動作における一連のマルチレベルのルックアップにより、インデックス付くことができる。そのような階層構造的なページ・テーブルでは、データのアレイが全体的に1つのページ・テーブル・エントリ内に収まり得ることは比較的起こりにくい。対照的に、単一のエントリが非2の累乗バイト数に対応することができるメモリ属性チェック手法では、例えばアドレス領域の開始アドレス及び終了アドレスを指定する情報を使用して(例えば、明示的に特定された境界アドレスを使用して、又はベース・アドレス及びサイズを使用して)、これにより任意にサイズ決めされたアドレス領域を単一のエントリ内に定義することができる。したがって、2の累乗のバイト数以外のサイズの可変領域サイズをサポートしている手法では、システムのユーザがそれらのアドレス領域を一定のデータのアレイが全体的に単一の領域に収まるように定義する傾向にあることがより起こりやすく、そのため上で議論した範囲チェック命令がそのような非2の累乗のバイト・サイズの領域を許可するシステムにとって特に有用であり得る。
【0016】
同様に、処理回路は、範囲チェック命令によって特定される第1のアドレスと第2のアドレスとの差異が2の累乗以外のバイト数であることを許可することができる。
【0017】
第1及び第2のアドレスは範囲チェック命令により複数の異なる方法で特定することができる。一実例において、アドレス特定パラメータは、第1のアドレスのベース・アドレスを指定することができ、また第1のアドレスと第2のアドレスとの差異を特定するためのオフセットを特定することができる。ベース・アドレス及びオフセットは、範囲チェック命令によって特定されるレジスタ内で指定することができる。代替的には、ベース・アドレスはレジスタ内で指定することができるが、オフセットは即値として指定することができる。
【0018】
別の実例では、オフセットは掛け合わせるとオフセットを与える、倍数とサイズ値として指定することができる。倍数とサイズ値うちの一方は、範囲チェック命令によって指定される可変パラメータであり得、可変パラメータは例えば即値によって、又は範囲チェック命令によって指定されるレジスタ内に記憶される値によって特定される。一方で、倍数とサイズ値のもう一方は、固定値、範囲チェック命令によって指定される即値、又は範囲チェック命令によって指定されるレジスタ内に記憶される値の任意の1つとして指定することができる。
【0019】
一般的に、ベース・アドレスを通じて第1のアドレスを指定すること、及びベース・アドレスに加算されるオフセットを使用して第2のアドレスを指定することは有用であり得るが、それはどのアドレスが下位アドレス及び上位アドレスであるかについての曖昧さがないことを意味しており、これは第1及び第2のアドレスが同じメモリ属性エントリにマッピングするかどうか判断するために問い合わせの実施を行うことがより簡単に実装できるからである。オフセットを倍数とサイズ値の積として指定することは有用であり得るが、それは場合によってはソフトウェア実行命令が、アドレス空間内の総オフセットの観点ではなく何らかの所与のサイズの要素数の観点からアレイのサイズを指定することがより便利であると分かることがあるからである。したがって、倍数及び/又はサイズを指定する命令の変形は、プログラミング又はコードのコンパイルをより単純にするために有用であり得る。これはやはり結果の実行ファイルのパフォーマンス及びサイズを改善することができる。
【0020】
代替的に、アドレス特定パラメータを特定する別の方法は、第1のアドレスがそこから読み出される第1のレジスタ、及び第2のアドレスがそこから読み出される第2のアドレスを指定することであり得る。したがって、この場合、第1と第2のアドレスの両方は、範囲チェック命令を実行することに先立って、コードによってそれらを第1及び第2のレジスタに書き込むことにより明示的に指定される。
【0021】
同様に、様々なアーキテクチャが、記憶場所が範囲チェック命令に応じて状態値が書き込まれるソフトウェア・アクセス可能な記憶場所である、異なる選択肢を提供することができる。場合によっては、ソフトウェア・アクセス可能な記憶場所は、メモリ内に記憶される記憶場所であり得る。しかしながら、ソフトウェア・アクセス可能な記憶がレジスタであることを、実装形態が提供することが有用であり得るが、このことにより後続の状態値の読み出しが速くなるためであり、これによって上で議論したタイプのセキュリティ・チェック動作をスピード・アップすることができる。
【0022】
したがって、一実例において、少なくとも1つのソフトウェア・アクセス可能な記憶場所は、範囲チェック命令によって指定されるデスティネーション・レジスタを含むことができる。例えば、デスティネーション・レジスタは処理回路の複数の汎用レジスタのうちの任意の1つとして指定することができる。選択されたデスティネーション・レジスタは、第1及び第2のアドレスが同じメモリ属性エントリに対応するかどうかを条件として、あるアクションを実行するために後続の命令のソース・レジスタとして使用することができる。
【0023】
デスティネーション・レジスタに状態値を書き込むことに代替的に、又は追加として、別の手法は、制御レジスタ内で少なくとも1つの条件状態指標を更新することにより状態値をセットする。例えば、制御レジスタは、以前の条件状態インジケータ生成命令の結果のプロパティを示す少なくとも1つの条件状態指標を記憶することができる。例えば、いくつかの命令は、処理結果がゼロであるかどうか、処理結果がマイナスか、又は符号付き若しくは符号無しのオーバーフローが発生しているかなどのプロパティを示すことができる条件状態フラグのセットをトリガすることができる。命令デコーダは、制御レジスタに記憶される少なくとも1つの条件状態指標が試験条件を満足するかどうかを条件とする条件付き動作を実施するように処理回路をトリガする少なくとも1つの条件付き命令をサポートすることができる。したがって、いくつかの命令は、以前の命令の結果を条件として実施される何らかのアクションをトリガするために、条件状態指標に直接アクセスすることができる。したがって、第1及び第2のアドレスが同じメモリ属性エントリにマッピングするかどうかに依存する情報を示す状態値を与えるために条件状態指標を使用することにより、これは比較命令から得られる条件に依存する後続の条件付き命令を有する前に、汎用レジスタ内に配置された値を比較するための介在する命令を必要とすることとは対照的に、後続の命令が単一の命令内で直接条件付き動作を実施できるようにする。これにより、セキュリティ・チェック動作をより速く実施することができる。
【0024】
範囲チェック命令のいくつかの実例では、命令はデスティネーション・レジスタのみを更新することがあるが、条件状態指標はいずれも更新しないことがあり、又はその逆の場合、ただ1つの条件状態指標だけがセットされ、汎用デスティネーション・レジスタ内には値がない場合もある。他の変形は両方のタイプのレジスタを更新することがあり、それによって後続の条件付き命令は、以前の範囲チェック命令が第1及び第2のアドレスが同じメモリ属性エントリにマッピングすると分かったかどうかを判断するために制御レジスタ内の条件コードを直接試験することができるが、他の情報はやはり範囲チェック命令のデスティネーション・レジスタから導出可能であり得る。
【0025】
範囲チェック命令に応じて、少なくとも第1と第2のアドレスの両方が同じメモリ属性エントリにマッピングする時、処理回路が、少なくとも1つのソフトウェア・アクセス可能な記憶場所に、第1及び第2のアドレスに対応する一致メモリ属性エントリから導出された属性情報を記憶することが有用であり得る。例えば、属性情報は一致メモリ属性エントリに対応するアドレス領域へのアクセスが、処理回路の所与の動作モードで許可されるかどうかを示すことができる。そのような属性情報は、第1及び第2のアドレスが同じメモリ属性エントリにマッピングするかどうかの指標に加えて(又はそれと組み合わせて)、単一の命令を使用してセキュリティ・チェックのいくつかの形態を実施することができる。
【0026】
一実例では、属性情報は、第1及び第2のアドレスが同じメモリ属性エントリをマッピングするかどうかを示す状態値とは別個の追加的なフィールドとして記録することができる。
【0027】
他の実例では、属性情報の指標は、第1及び第2のアドレスが同じメモリ属性エントリをマッピングするかどうかを示す状態値と組み合わせることができる。例えば、単一の状態インジケータは次の条件の両方が満足される場合、第1の値にセットすることができる(i)第1と第2のアドレスの両方が同じメモリ属性エントリにマッピングしている、(ii)一致メモリ属性エントリが、そのエントリによって定義される対応するアドレス領域へのメモリ・アクセスが許可されることを指定している、そして、これらの条件のいずれかが満足されない場合、状態インジケータを第2の値にセットすることができる。したがって、そのような実施例では、同じ状態インジケータは状態値と属性情報の両方として機能することができる。
【0028】
一実例において、処理回路は、例えば異なるモード、ドメイン又は特権レベルを機能させることができる複数の異なる動作状態を持つことがある。範囲チェック命令の少なくとも1つの変形に応じて、処理回路の現在の動作状態とは異なる動作状態にある場合、処理回路は、一致メモリ属性エントリについて対応するアドレス領域へのメモリ・アクセスに課されるアクセス・パーミッションに基づいてソフトウェア・アクセス可能な記憶場所に書き込まれる属性情報を導出することがある。したがって、アクセスが現在の動作状態で許可されるかどうかチェックするのではなく、代わりに命令はシステムが異なる動作状態にある場合アクセスが許可されるかどうかの指標を与える。クロス動作状態チェックを許可する範囲チェック命令のそのような変形は、信頼されないソフトウェアを有する攻撃者が、例えば境界外部にあるアレイにポインタを渡すことにより信頼されるソフトウェアを騙して不適切な動作を実施させることを試行することがある混乱した使節の問題(Confused Deputy Problem)に基づくセキュリティ攻撃に対する防御のために特に有用であり得る。したがって、範囲チェック命令のクロス動作状態の変形は、信頼されないコードによって渡された値が有効かどうかをチェックするために、例えばその値に基づいて計算されたアドレスが同じメモリ属性エントリにマッピングするかどうか、及び攻撃者の動作状態について導出された属性情報が、アクセスが許可されることを示しているかどうかをチェックすることにより、信頼されるコードによって使用することができる。
【0029】
特定の一実例において、処理回路はセキュアなドメイン及びあまりセキュアではないドメインを含む複数の動作のドメインを有することができ、それぞれのセキュリティ・ドメイン内で処理回路は複数のモードのうちの1つ、且つ複数の特権レベルのうちの1つで動作することができる。一部のモードは、特定の特権レベルの動作に関連付けられることがある。他のモードは、特定の制御レジスタに記憶することができる現在の特権レベルのインジケータに応じて、2つ以上の異なる特権レベルでの動作をサポートすることができる。セキュリティ・チェック動作の複数の異なるタイプを可能にするために、命令デコーダが、範囲チェック命令の以下の変形のうちの少なくとも1つをサポートすることが有用であり得る:第1の変形であって、処理回路が現在のセキュリティ・ドメイン内にあり、且つ現在のモードに関連付けられる特権レベルにある場合、属性情報が第1のアドレスと第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第1の変形;第2の変形であって、処理回路が現在のドメインとは異なるセキュリティ・ドメインにあり、且つ異なるセキュリティ・ドメインで動作する際に現在のモードに関連付けられる特権レベルにある場合、属性情報が、第1のアドレスと第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第2の変形;第3の変形であって、属性情報が、第1のアドレスと第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが、現在のセキュリティ・ドメイン内で、且つ現在のモードに関連付けられる特権レベルとは異なる特権レベルで許可されるかどうかを指定する、第3の変形;第4の変形であって、処理回路が現在のセキュリティ・ドメインとは異なるセキュリティ・ドメイン内、且つ現在のモードに関連付けられる特権レベルとは異なる特権レベルにある場合、属性情報が、第1のアドレスと第2のアドレスとの間の範囲内のアドレスへのメモリ・アクセスが許可されるかどうかを指定する、第4の変形。プログラマ又はコンパイラに選択の柔軟性を与えるために、いくつかの実施例では第1から第4の変形のうちの少なくとも2つを、命令デコーダによってサポートすることができる。
【0030】
したがって、第1の変形では、現在のドメイン及びモードに関連付けられる属性に基づいたセキュリティ・チェックが可能である。
【0031】
第2及び第4の変形は、現在のドメインとは異なるセキュリティ・ドメインが、第1及び第2のアドレス間のアドレス範囲へのアクセスすることを許可されるどうかをチェックするために、クロス・ドメイン・チェックを許可する。例えば、一部のシステムは、セキュアなドメイン及びあまりセキュアではないドメインそれぞれについてメモリ属性エントリの異なるセットを維持することをサポートすることがあり、そのため範囲チェック命令の第2及び第4の変形について、属性情報を導出するために実施されるチェックは現在のドメインについて使用されるものとは異なるメモリ属性エントリのセットに基づくことができる。命令デコーダが範囲チェック命令の第2の変形及び第4の変形の少なくとも1つをサポートする場合、異なるセキュリティ・ドメインがあまりセキュアではないドメインを含むことが有用であり得る。あまりセキュアではないドメインがセキュリティ・パーミッションを調査するのを妨げるために、あまりセキュアではないドメインで動作している際、命令の第2及び第4の変形のうちの1つを実行する試行があると、処理回路はフォールトのシグナリングをトリガすることがある。したがって、これらの変形によって、よりセキュアなドメインが、第1のアドレスと第2のアドレスとの間のアドレスへのアクセスがあまりセキュアではないドメインに許可されるかどうかをチェックできるようになることがあり、これは混乱した使節の攻撃を回避するために有用であり得る。
【0032】
同様に、第3及び第4の変形について、属性情報は第1及び第2のアドレスの間の範囲にあるアドレスへのメモリ・アクセスが、処理回路の現在の特権レベルとは異なる特権レベルで許可されるかどうかに基づくことができる。やはり、このタイプの変形は、異なる特権レベルが現在の特権レベルより低い特権を与えられた特権レベルである場合に、特に有用であり得る。このケースでは、処理回路が少なくとも1つの所定の特権レベルにある際に範囲チェック命令の第3及び第4の変形のうちの1つを実行する試行がある場合、フォールトがトリガされることがあり、それについて少なくとも1つの所定の特権レベルよりも高い特権を与えられた少なくとも1つの特権レベルがある。命令のこれらの変形は、高い特権を与えられたコードが、低い特権を与えられたコードによって渡された値が信頼できるかどうかをチェックできるようにするために有用であり得る。
【0033】
処理システムの所与の実装形態によって、4つすべての変形がサポートされることは必須ではないことを了解されたい。
【0034】
いくつかの実例において、メモリ属性チェック回路は所与のメモリ・アクセス・リクエストについて、メモリ・アクセス・リクエストが、メモリ属性エントリの第1のセットで指定されたアクセス・パーミッションとメモリ属性エントリの第2のセットで指定されたアクセス・パーミッションとの両方を満足するかどうかをチェックすることができる。例えば、異なる機能に関連付けられる複数の異なるタイプのメモリ属性エントリがある可能性があり、例えばメモリ保護情報(読み取り専用、若しくは読み取り可能及び書き込み可能な領域を定義すること、又はどの特権レベルが対応するアドレス領域にアクセスすることができるかを指定すること、など)を与えるエントリの第1のセット、及びどのセキュリティ・ドメインが所与のアドレス領域に関連付けられるかを指定することができるメモリ属性エントリの第2のセットである。
【0035】
したがって、いくつかの実例では、範囲チェック命令に応じて、命令デコーダは処理回路が、少なくとも1つのソフトウェア・アクセス可能な記憶場所に、第1のアドレス及び第2のアドレスがメモリ属性エントリの第1のセットの同じエントリに対応するかどうかを示す第1の状態値と、第1及び第2のアドレスがメモリ属性エントリの第2のセットの同じエントリに対応するかどうかを示す第2の状態値との両方をセットするよう制御することができる。したがって、単一の命令において、メモリ属性エントリの両方のセットをルックアップすることができ、アドレスの範囲全体がメモリ属性エントリの両方のセットにおいて同じエントリにマッピングするかどうかの指標をリターンすることができる。
【0036】
上で言及したように、メモリ属性エントリのセットのうちの1つはメモリ保護エントリのセットであってもよい。上で議論した範囲チェック命令は、メモリ・アクセス・リクエストが所与のメモリ・システムをターゲットとし、メモリ・システムへのアクセスを制御するために使用されるメモリ保護エントリがメモリ保護テーブルに与えられ、メモリ保護テーブル自身がメモリ・システム内に記憶される、実装形態において特に有用であり得る。この手法は比較的稀であるが、比較的多数のメモリ保護エントリを有するメモリ保護テーブルを、そのような多数のエントリを記憶し管理するハードウェア・コストを大きく増やすことなく、サポートさせることができる。殊に命令が上で議論したようにメモリ属性エントリの複数の異なるセットにおいてマッピングしているアドレスについての情報をリターンするよう意図されている実装形態において、サポートされるメモリ保護エントリの数を増やすことができるようメモリ保護テーブルがメモリ・システム内に記憶されるシステムでは、どの特定のエントリ番号が所与のアドレスに関連付けられるかをリターンする命令を提供することの代替はメモリ保護テーブルのサイズの増大に合わせて増減することが難しいことがあるため、上で議論したタイプの範囲チェック命令は、特に有用であり得る。やはり、メモリ保護エントリがメモリ・システム内に記憶されるシステムでは、メモリ・システムから取得したメモリ保護テーブルの少なくとも1つのメモリ保護エントリをキャッシュするためのメモリ保護キャッシュ記憶回路を提供することが有用であり得る。所与のアドレスにマッピングするメモリ保護エントリのエントリ番号をリターンする代替的な命令が使用される場合、そのような命令はキャッシュ記憶がそれぞれのキャッシュ・エントリに関連付けられるエントリ番号をキャッシュする必要があることを示唆することになり、それによって所与のアドレスに関連付けられるエントリ番号を問い合わせるための命令は、メモリ・システム内でメモリ保護テーブルを探す必要なくキャッシュされたメモリ保護エントリに関連付けられるエントリ番号に素早くアクセスすることができる。対照的に、上で議論した範囲チェック命令では、エントリ番号そのものをキャッシュする必要なく第1又は第2のアドレスが同じエントリにマッピングするかどうか判断することができるため、そのようなエントリ番号のキャッシュは必要ない。これは、メモリ保護キャッシュ記憶回路内のエントリはレジスタ・ベースの記憶として実装することができるため、特に有用であり得、エントリ番号をキャッシュする必要性を無くすことにより、これはそれぞれキャッシュされたエントリ内でビット数を大幅に節約することができ、回路エリアの大幅な削減をもたらすことができる。
【0037】
メモリ・ベースのメモリ保護テーブルを使用するシステムでは、メモリ内に記憶されたメモリ保護テーブルに加えてメモリ保護エントリの少なくとも1つのサブセットを記憶するために一部の設定レジスタをハードウェア内に設けることがやはり可能である。キャッシュとして作用することのない(しかし代わりに、頻繁に使用されるアドレス空間の領域についての一定のプロパティを定義する固定メモリ保護エントリを提供するよう割り振られる)スタティックに設定される一部のレジスタは、パフォーマンスを改善するために有用であり得る。したがって、場合によっては、範囲チェック命令はやはり、そのような設定レジスタに記憶される何らかのメモリ保護エントリを問い合わせることもある。
【0038】
代替的に、範囲チェック命令は、メモリ・システム自身にメモリ保護エントリを1つも記憶しないが、メモリ保護エントリのセット全体が設定レジスタを使用して実装されるシステム内でサポートされ得る。
【0039】
メモリ属性エントリのセットの別の実例は、複数のセキュリティ・ドメインのどれが対応するアドレス領域に関連付けられるかを示すアクセス・パーミッションを指定するセキュリティ属性エントリであり得る。これらは、上で議論したメモリ保護エントリに加えて実装することができる。例えば、所与のアドレス領域に関連付けられるセキュリティ・ドメインをチェックすることは、所与のアドレス領域からコードを実行する際どのセキュリティ・ドメインで処理回路が動作すべきかをチェックするために有用であり得る。やはり、メモリ・アクセス・リクエストが所与のセキュリティ・ドメインから発行される際、セキュリティ属性エントリをチェックすることができる。例えば、あまりセキュアではないドメインに関連付けられるメモリ・アドレス領域は、セキュアなドメイン内でアクセス可能であり得、一方でセキュアなドメインに関連付けられる領域はセキュアなドメイン内でアクセス可能であり得るが、あまりセキュアではないドメイン内ではアクセス不可能であり得る。
【0040】
範囲チェック命令の少なくとも1つの変形に応じて、少なくとも第1と第2のアドレスの両方が同じセキュリティ属性エントリに対応する場合、少なくとも1つのソフトウェア・アクセス可能な記憶場所に与えられる属性情報は、第1及び第2のアドレスに対応する一致セキュリティ属性エントリによって対応するアドレス領域に関連付けられるとして指定されたセキュリティ・ドメインから導出することができる。
【0041】
上で議論したように、一部のシステムでは、メモリ属性チェック回路は、上で議論したメモリ保護エントリとセキュリティ属性エントリ両方をサポートすることができる。このケースでは、範囲チェック命令の少なくとも1つの変形が、第1及び第2のアドレスに対応する一致メモリ属性エントリと、第1及び第2のアドレスに対応する一致セキュリティ属性エントリとの組み合わせから情報を導出することが有用であり得る。例えば、この範囲チェック命令の変形に応じて、命令デコーダは少なくとも1つのソフトウェア・アクセス可能な記憶場所に、単一のインジケータにおいて一致メモリ保護エントリ内のアクセス・パーミッションと一致セキュリティ属性エントリ内のアクセス・パーミッションとの両方が所与のタイプのメモリ・アクセスが許可されることを指定するかどうかを指定する少なくとも1つの組み合わせたパーミッション・インジケータを記憶することができる。例えば、この組み合わされたパーミッション指標は、上で議論したような制御レジスタ内の条件状態指標に記憶することができ、それによって後続の条件付き命令が後続の動作を進めることができるかどうかを判断するために組み合わされたインジケータを直接試験することができる。
【0042】
単一の命令において第1のアドレス及び第2のアドレスの両方が同じメモリ属性エントリにマッピングするかどうかをチェックすることは、特にメモリ・アドレス領域が上で議論したような任意の非2の累乗のサイズを有し得る場合、比較的実施に時間がかかることがあると考えられるかも知れない。しかしながら、実際には、発明者は、第1及び第2のアドレスが同じメモリ属性エントリにマッピングするかどうかを特定する状態情報をリターンするための範囲チェック動作は、実際には単一のアドレスに対応するメモリ属性エントリを特定するために実施されるルックアップ動作と同様のレイテンシを伴って実施され得るということを認識している。実際には、メモリ属性チェック回路は、比較器の少なくとも1つのセットを有することができ、比較器のそれぞれのセットは、メモリ・アクセス・リクエストのターゲット・アドレスを所与のメモリ属性エントリの下位境界アドレスと比較するための下位境界比較器、及びメモリ・アクセス・リクエストのターゲット・アドレスを所与のメモリ属性エントリの上位境界アドレスと比較するための上位境界比較器を含む。定期的なメモリ・アクセス・リクエストについては、下位境界比較器と上位境界比較器の両方がポジティブな結果を与える場合、所与のメモリ属性エントリは、メモリ・アクセス・リクエストのターゲット・アドレスに一致するものとして特定され得る。例えば、下位境界比較器はターゲット・アドレスが下位境界アドレス以上であるかどうかを判断し、上位境界比較器はターゲット・アドレスが上位境界アドレス以下であるかどうかを判断することができる。
【0043】
範囲チェック命令については、第1のアドレス及び第2のアドレスの両方がターゲット・アドレスとして順次に、2つの別個のルックアップで比較器のそれぞれのセットに与えられなければならないと考えられるかも知れない。しかしながら、発明者は、範囲チェック命令に応じて、命令デコーダが、処理回路が第1のアドレスをターゲット・アドレスとして比較器のそれぞれのセットの下位境界比較器に与え、並行して第2のアドレスを比較器のそれぞれのセットの上位境界比較器に与えるよう制御することができることを認識している。したがって、定期的なメモリ・アクセスについてはそれぞれのセット内の2つの比較器が典型的には同じアドレスを下位及び上位境界アドレスそれぞれに対して比較するよう期待される一方で、範囲チェック命令については、第1及び第2のアドレスに基づく比較が並行して実施できるように、これらは異なる入力を受信するよう適合され得る。比較器のセットいずれかが、比較器の同じセット内の下位境界比較器と上位境界比較器の両方が比較のポジティブな結果を特定することをリターンする場合、第1及び第2のアドレスが同じエントリにマッピングすることを示すためにヒット・シグナルが生成され得る。したがって、両方の比較器にターゲット・アドレスを与える代わりに第1及び第2のアドレスを下位及び上位境界比較器に与えるロジック以外、メモリ属性エントリをルックアップする残りのロジックは、典型的には定期的なメモリ・アクセス動作用のルックアップを扱うために既に与えられていると同じであってもよく、そのため範囲チェック命令は、実際には比較的小さな追加的なエリアのオーバヘッドでサポートすることができる。このことは、上で議論したタイプの範囲チェック命令は、2つの別個の命令がどのメモリ属性エントリが単一のアドレスにマッピングされているかを個々にチェックする代替のものよりも著しいパフォーマンスの改善を有することができることを意味する。
【0044】
下位及び上位境界比較器がそれぞれ第1及び第2のアドレスを比較するルックアップ手法は、下位アドレスを下位境界比較器に与えることができるように、また上位アドレスを上位境界比較器に与えることができるように、第1及び第2のアドレスのどちらが下位アドレスであるかに関して先行する情報を必要とすることがある。
【0045】
異なるアーキテクチャの実装形態は、第1のアドレスがいつも第2のアドレスよりも下位であることを確実にするための異なる手法を使用することがある。いくつかの実例において、範囲チェック命令のエンコード自体が、第1のアドレスが第2のアドレスよりも下位であるように制約することができる。例えば、第2のアドレスが第1のアドレスに加算されるオフセットとして指定される上で議論した命令の変形は、定義により第2のアドレスが第1のアドレスよりも上位であることを確実にすることができる。このケースでは、第1のアドレス及び第2のアドレスの完全な比較を与えてどちらが下位であるかをチェックする必要がない。一般的に、第1のアドレスにオフセットを加算することでオーバーフロー又はラップアラウンドが引き起こされない限り、第2のアドレスは第1のアドレスよりも上位であると仮定され得る。例えば、第1のアドレスが許容可能なアドレス範囲内で比較的上位にある場合、オフセットを加算することにより、第2のアドレスがアドレス範囲内の比較的下位のアドレスでラップアラウンドするようになり得る。そのようなラップアラウンドを引き起こす加算について、フォールトをシグナリングすること、又は第1及び第2のアドレスが同じメモリ属性エントリに対応しないことを示す値を伴う状態値を単純にリターンさせることのいずれかが可能である。
【0046】
代替的に、他の手法により、第1及び第2のアドレスの制約されない指定が可能である場合があり、例えば、第2のアドレスが第1のアドレスよりも下位になる機会があるように両方のアドレスが個別のレジスタで指定される上で議論した変形である。このケースでは、ある手法は、第1及び第2のアドレスを比較し、どちらが下位であるかを判断し、第1及び第2のアドレスの低いほうをそれぞれのセットの下位境界比較器に与え、もう一方を上位境界比較器に与えるロジックを提供することである(このロジックは、やはり任意選択で第1及び第2のアドレスの制約される指定を伴う変形に与えられてもよいが、これは必須ではない)。しかしながら、実際にはこのロジックは回路エリアの観点から正当化されないことがあり、代わりにいくつかのアーキテクチャは、命令が第1のアドレスよりも下位である第2のアドレスで定義される場合、命令の結果は予期不可能であり得ることを単純に定義することができる。
【0047】
したがって、第2のアドレスが第1のアドレスよりも下位である場合にあらゆる命令の実行を妨げることによりセキュリティを確実にするために、いくつかの実装形態は、第2のアドレスが第1のアドレスよりも下位である範囲チェック命令を実行する試行がある場合、フォールトのシグナリングをトリガすることができる。代替的に、(又はフォールトをシグナリングすることに加えて)範囲チェック命令が第2のアドレスが第1のアドレスよりも下位である状態で実行されるよう試行される場合、処理回路は、第1のアドレス及び第2のアドレスが同じメモリ属性エントリに対応しないことを示す状態値をリターンすることができる(メモリ属性エントリをルックアップするあらゆる比較ロジックによって、ヒット・シグナルが生成されるかどうかに関わらず)。
【0048】
対応するコンピュータ・プログラムが、命令の実行のための命令実行環境を提供するためにホスト・データ処理装置を制御するために設けられる場合がある。コンピュータ・プログラムは、機能性において上で議論した命令デコーダ及びメモリ属性チェック回路に対応する、命令デコード・プログラム・ロジック及びメモリ属性チェック・プログラム・ロジックを含むことができる。したがって、コンピュータ・プログラムによってシミュレートされる命令実行環境内のプログラムで実行中の範囲チェック命令は、実際に上で議論した命令デコーダ及びメモリ属性チェック回路を含むハードウェア上で実行中のプログラムの範囲チェック命令に類似した方法で扱うことができる。シミュレータ・コンピュータ・プログラムは、これらの特徴をシミュレータ・コンピュータ・プログラムを実行しているホスト・コンピュータに与える実際のハードウェアが何もなくても、シミュレータ・コンピュータ・プログラム上で実行するソフトウェアに、実際のハードウェア装置によって与えられるのと類似した命令環境を提案することができる。上で議論したハードウェア・アーキテクチャの機能性は、命令のセット又はデータ構造などのプログラム・ロジックを与えることによってエミュレートすることができ、それによって、実際にそのようなハードウェアを有する装置で達成される結果と互換性のあるやり方で、一般的なホスト・コンピュータが上で議論したメモリ属性チェックをサポートされる装置での実行を意図されたコードを実行することができる。ホスト・データ処理装置を制御するためのシミュレータ・コンピュータ・プログラムは、記憶媒体に記録することができる。この記憶媒体は非一時的な記憶媒体であってもよい。
【0049】
図1は、命令に応じてデータ処理を実施するための処理回路4を有するデータ処理システム2を概略的に図示している。例えば、処理回路4はCPU、DSP、GPU又はデータ処理システムの他の処理要素であり得る。処理回路4は、処理回路によって処理するためにメモリ・システム10から命令をフェッチするための命令フェッチ・ユニット5、及びフェッチされた命令をデコードし、デコードされた命令に応じてデータ処理動作を実施するために実行ユニット6、8を制御する制御信号を生成するための命令デコーダ7を含むことができる。例えば、実行ユニットは、レジスタ12、14からフェッチされたオペランドに対して算術又は論理演算を実施し、レジスタに書き戻すことができる結果値を生成するための算術/論理ユニット(ALU:arithmetic/logic unit)6を含むことができる。実行ユニットは、レジスタ12、14とメモリ・システム10との間でデータを移送するためにロード/ストア演算を実施するためのロード/ストア・ユニット8も含むことができる。レジスタは、処理回路4によって処理するために整数値を格納するための汎用(整数)レジスタ12、及び、浮動小数点表現を使用して表現される値を格納するための浮動小数点レジスタ14を含む複数の異なるタイプのレジスタを含むことができる。処理回路4にとってアクセス可能なレジスタは、簡潔にするために図1には示されていない他のタイプのレジスタを含むことができ、複数の独立したデータ要素を含むベクトル・オペランドを格納するためのベクトル・レジスタ、並びに/又は処理回路4の動作を制御するための、条件付き動作を実施するかどうかを判断するために条件付き命令によってチェックされ得る条件フラグ、現在の実行ポイントを表現するアドレスを格納するプログラム・カウンタ、及び例えば例外処理を制御するための制御レジスタなどの様々な制御パラメータを格納するための制御レジスタ13などである。
【0050】
メモリ・システム10は1つ又は複数のキャッシュのレベル並びにメイン・メモリを含むことができる。メモリ・システム10は、処理回路4によって、ロード/ストア・ユニット8をトリガして、データをメモリ・システム10からレジスタ12、14にロードするためにメモリ・アクセス・リクエストを発行するロード命令、又はロード/ストア・ユニット8をトリガして、データをレジスタ12、14からメモリ・システム10に格納するためにメモリ・アクセス・リクエストを発行するストア命令を実行することによりアクセス可能である。命令フェッチ・ユニット5も、メモリ・システム10から命令をフェッチするためにメモリ・アクセス・リクエストを発行する。それぞれのメモリ・アクセス・リクエストはアクセスされる場所のターゲット・アドレスを指定することができる。この実例において、ターゲット・アドレスは、アクセスされる場所を直接指定する物理アドレスであるため、アドレス・トランスレーションは必要とされない。
【0051】
メモリ保護ユニット(MPU:memory protection unit)20は、ターゲット・アドレスに基づいてメモリ・アクセス・リクエストが、メモリ・システム10によってサービスされることを許可されるかどうかをチェックするために設けられる。MPU20は、アドレス空間の対応するアドレス領域についてのアクセス・パーミッションを定義する複数のメモリ保護エントリを記憶することができるか、又はそれにアクセスを有することができる。例えば、アクセス・パーミッションは、アドレス空間の所与の領域が読み取り専用領域であるか、若しくは読み取り及び書き込み両方であり得るかどうかを指定することができ、及び/又は処理回路4のどの特権レベルが対応するアドレス領域にアクセスできるかを定義することができる。図1に示すように、MPU20は、いくつかの実例において、2つの別個のMPUであるセキュアなMPU21及びあまりセキュアではないMPU23を備え、それぞれセキュアなドメイン及びあまりセキュアではないドメインに対応する。処理回路4がセキュアなドメインで動作している時、セキュアなMPU21がアクセスされ得、一方であまりセキュアではないドメインで動作している時はあまりセキュアではないMPU23がアクセスされ得る。
【0052】
MPU20に加え、メモリ属性チェック回路16はやはり、セキュリティ属性ユニット(SAU:security attribute unit)42を含むこともでき、これはアドレス空間内のセキュアな及びあまりセキュアではない領域を定義するセキュリティ保護エントリを記憶するメモリ・セキュリティ設定レジスタを備える。メモリ・アクセス・リクエストのターゲット・アドレスは、SAU42によってセキュリティ保護エントリのデータを定義する領域に対してチェックされ、処理回路4は、動作のセキュアなドメイン内で動作する時のみアドレス空間のセキュアな領域をアクセスすることに制限されることがある(アドレス空間のあまりセキュアではない領域はセキュアなドメイン又はあまりセキュアではないドメインの両方でアクセス可能であってもよい)。SAU42のセキュリティ保護エントリによって定義されるアクセス・パーミッションは、メモリ保護エントリ内でMPU20によって定義されるパーミッションに直交するパーミッションに適用することができる。すなわち、MPU20によって許可されるアクセスは、それにも関わらずSAU42によって拒否されることがあるか、又はその逆である。命令フェッチ・ユニット5によって開始されたメモリ・アクセス・リクエスト、及びロード/ストア・ユニット8によって開始されたメモリ・アクセス・リクエストの両方が、MPU20及びSAU42によってチェックにかけることができる。MPU20とSAU42は順次に動作しているように図1に示されるが、いくつかの実装形態は、処理セキュリティによって発行されたメモリ・アクセスのためにMPU20及びSAU42へ並列なルックアップを可能にし、パフォーマンスを改善することができる。
【0053】
MPU20は、処理回路によって発行されたメモリ・アクセス・リクエストが複数のメモリ保護エントリで指定されるアクセス・パーミッションを満足するかどうかチェックする。それぞれのメモリ保護エントリは、アドレス空間内の可変サイズの特定のアドレス領域に対応することができる。所与のメモリ保護エントリについての対応するアドレス領域は、所与のメモリ保護エントリのパラメータを通じて特定される開始アドレス及び終了アドレスによって境界付けすることができる。メモリ管理ユニット(MMU:memory management unit)によって使用されるページ・テーブルとは違って、MPUの場合メモリ保護エントリに対応する領域は、2の累乗以外のバイト数であることを許可され得る可変サイズを有することができる。この手法では、アドレスのアクセスがページ・アドレス境界をクロスするたびに発生するページ・ウォーク及びページ・フォールトのリスクを回避するために、単一のメモリ保護エントリを使用して任意サイズ(非2の累乗)のメモリ・アドレス領域を定義できることが保証され得る。これによりMPUが、リアルタイムのアプリケーションを処理するために設計されたシステムにとってより適したものとなる。また、MPUはメモリ保護エントリを、MPUのローカルに設けられたレジスタ内に記憶することができ、速くアクセスすることができ、やはりリアルタイム処理を支援して、メモリ・システム内で階層構造的な構造を有する大きなページ・テーブルを記憶する必要性を回避しており、これは限られたRAMを有するシステムで重要な場合がある。
【0054】
一実例において、MPU20についてのメモリ保護エントリは、アクセスされるターゲット・アドレスを、レジスタに格納されたそれぞれのメモリ保護エントリのパラメータを特定する領域と比較する際、比較器の並列なバンクに直接接続することができるレジスタを使用して指定することができる。この手法は、例えば8個、16個など限られた数のメモリ保護エントリしか必要としないシステムに適切な場合がある。別個であるセキュアなMPU21及びあまりセキュアではないMPU23を有するシステムでは、レジスタの別個のセットを、セキュアなメモリ保護エントリ及びあまりセキュアではないメモリ保護エントリをそれぞれ定義するために設けることができ、MPU20をルックアップする際、動作の現在のドメインについて関連するエントリのセットが選択される。
【0055】
しかしながら、すべてのメモリ保護エントリがレジスタ内に記憶されるMPUでは、MPUによってサポートされるメモリ保護エントリの数が増加する場合、MPUに関連付けられる能力及びエリアはうまくスケーリングできないことがある。より多数のメモリ保護エントリを必要とするシステムの場合(例えば、レジスタ・ベースのMPU内のメモリ保護エントリの限られた数により、パフォーマンス、又は与えられる保護に重大な影響を及ぼすことがあるため)、メモリ・システム10内でメモリ保護テーブルを提供することによりサポートされるエントリ数を拡張することが有用であり得る。したがって、MPU20によってアクセスが監視される同じメモリ・システム内にメモリ保護テーブルを設けることにより、これはターゲット・アドレスと並行して比較されるそれぞれのエントリごとにデータを定義する領域を記憶するレジスタに基づいている典型的なMPU用に実用的であるよりも、多数のメモリ保護エントリを与えるための柔軟性を提供する。メモリ保護テーブルをメモリ・システム内に入れることがソフトウェアのパフォーマンスを改善させること(典型的にはレジスタよりもアクセスが遅くなる)は、反直観的であり得る。しかしながら、個々のメモリ保護エントリをメモリ・システムからアクセスすることはより低速な場合があるが、ハードウェアのMPUによってサポートされるエントリ数がソフトウェアの要求を扱うには十分でないケースに対処するための以下で議論するソフトウェア回避策を回避することにより、全体的なパフォーマンスを改善することができ、そうでなければアドレス空間の未定義領域へのアクセスのため頻発する例外に遭遇することにより多大なパフォーマンス・コストを損なう。メモリ内にメモリ保護テーブルを設けることにより、ハードウェア・コストはエントリ数に応じて大幅には増減しない。
【0056】
また、それぞれの領域に2の累乗以外のバイト数に相当する任意サイズを持たせることにより、これはそれぞれの領域が大量のメモリをカバーすることができることを意味し、同じアクセス・パーミッションを有することを意図された領域を複数の別個のエントリにサブ分割する必要がなく、そうでなければこれはアドレスが領域境界をクロスする際にメモリ保護のフォールトを引き起こすリスクとなる。これはMPUを、高速及び/又は確定的な応答時間で重大な動作を扱うよう要求するリアルタイムのアプリケーションをサービスすることにおいてMMUよりも良いものにしている。
【0057】
メモリ保護エントリを記憶するためにメモリを使用するこの手法は、いくつかの目的のために有用であり得る。例えば、1つのソフトウェアは多数の別個のアドレス領域を、MPUのレジスタでサポートされる保護エントリの数において、ハードウェアでサポートされるのとは異なるアクセス・パーミッションで定義するよう要求することがある。メモリ内にメモリ保護テーブルが与えられない場合、所与の時間にそのソフトウェアによってアクセスされる必要があるアドレス空間の少なくともいくつかの部分は、そのために定義された対応するメモリ保護エントリを現在有していないことになる。これは、現在アドレス空間の未定義領域内のアドレスへのアクセスが、例外をトリガすることを意味し、次いで、異なる領域用に以前に定義されたパラメータを、今アクセスされる必要がある領域のために必要とされるパラメータで上書きするよう、ソフトウェアがステップインしてMPUのレジスタを再構成することを必要とする。後々命令が以前に定義された上書きされている領域にアクセスする場合、これによりMPU設定を元にスイッチ・バックすることができる。MPUレジスタの内容の、この絶え間ないスイッチングは、毎回スイッチングをトリガするために例外を必要とし、パフォーマンスに大きな悪影響を及ぼすことがある。
【0058】
別の実例は、プロセッサが、相互に信頼していないが互いにデータを共有する必要がある複数のソフトウェアを実行する必要がある場合である。データの共有を可能にするために、所与のソフトウェアは、アドレス空間の限定された部分だけが他のプロセスにとってアクセス可能であるよう、アドレス空間の部分を分割することを望む場合があるが、アドレス空間へのアクセスに対してそのような細かい制御を与えるためには、これは追加的なアドレス領域を定義する必要があることがあり、またそのような細かくされた制御を可能とするためのハードウェア内でMPUによってサポートされるスペアのメモリ保護エントリが十分にないことがある。したがって、実際には、同じデータはアドレス空間の複数の部分に複製される場合があり、例えばある複製は第1のソフトウェアによってアクセスされる部分にあり、別の複製は第2のソフトウェアによってアクセスされる部分にあり、結果として複製を実施するために時間が浪費され、利用可能なメモリ容量の使用が非効率的であり、これは制約のあるメモリ・リソースを伴うシステムでは特に問題となり得る。
【0059】
これらの問題は、メモリ内にメモリ保護テーブルを提供することにより回避することができ、ずっと多くの別個のメモリ保護エントリをサポートがあるため、パフォーマンスを改善することができる。
【0060】
したがって、図2は処理システム2の第2の実例を示しており、メモリ・システム10内にMPU20によるアクセス用のメモリ保護テーブル22が設けられている。この実例では、処理回路4が所与のアドレス領域にアクセスを許可されるかどうかを制御するためのアクセス・パーミッションは、2つの方法でMPU20によって定義することができる。メモリ保護テーブル22はメモリ・システム内に記憶することができ、それぞれが対応するアドレス領域用のアクセス・パーミッションを定義する複数のエントリを含む。MPU20は、MPUテーブル22から情報を取得するために、メモリ・システム10へメモリ・アクセス・リクエストを開始するMPUメモリ・アクセス回路24を有している。MPUメモリ・アクセス回路24は、MPUテーブル22が、処理回路4から受信したメモリ・アクセス・リクエストによって特定されるターゲット・アドレスを含むアドレス領域用のエントリを含むかどうかを特定するために必要とされる比較を実施するためのテーブル・ルックアップ回路26を有する。メモリ・システム10は、複数のMPUテーブルを記憶することができ、それぞれのテーブル22はそれぞれのソフトウェア・プロセスに関連付けられている。どの特定のMPUテーブルがMPUメモリ・アクセス回路24を使用してアクセスされるかを特定するアクティブ・テーブル識別子が、アクティブ・テーブル識別子レジスタ(又はレジスタのグループ)28に格納される。例えば、アクティブ・テーブル識別子レジスタ28は、現在アクティブなMPUテーブルのベース・アドレス30を特定することができ、任意選択で、アクティブ・テーブルのサイズを指定することもできる。メモリ・システム10から選択されたMPUテーブルのエントリをキャッシュするために、MPUキャッシュ記憶装置32がMPU内に設けられ、それによって同じエントリが再度必要とされる場合、より速くアクセスすることができる。例えば、MPUキャッシュ記憶装置は、メモリ・システム10内のMPUテーブル22のバッキング・ストアと比べて、アクセスのレイテンシが低減されたMPUテーブルのエントリをローカルに記憶するためにレジスタのセットを含むことができる。
【0061】
メモリ・システム10へのアクセスを制御するためのアクセス・パーミッションを提供するための別の方法は、スタティックなMPUレジスタ記憶装置36内に、スタティックに設定されるメモリ保護エントリを定義することであり得る。処理回路4は、スタティックなMPUレジスタ記憶装置をアクセスすることを具体的に意図される専用のタイプの命令など、スタティックなMPUレジスタ記憶装置36の内容を設定するための命令をサポートすることができるか、又はターゲット・アドレスとして、スタティックなMPUレジスタ記憶装置36用に設けられるレジスタにマッピングされたメモリにマッピングされているアドレスを指定するロード/ストア・ユニット8によって実施されるより一般的なストア演算を使用することができる。一般的に、いったんスタティックなMPUレジスタ記憶装置36の内容をポピュレートして所与のアドレス領域に対応する所与のメモリ保護エントリを定義するためにMPUパラメータ再設定動作(例えば、これらのメモリにマッピングされるロード/ストア演算のうちの1つ、又は専用のタイプの再設定命令)が実行されると、スタティックなレジスタ記憶装置36内に記憶した情報が失われるリセット又はパワー・ダウンのイベントがなければ、その所与のメモリ保護エントリは、別のMPUパラメータ再設定動作がエントリの内容を変更するまで、スタティックなMPU記憶装置36に残ったままである。これは、所与のアドレス領域用の実際のパラメータ・セットを変更するためのMPUパラメータの再設定動作がなくても、MPUキャッシュ記憶装置32の内容がキャッシュ置換ポリシにしたがって時間とともに変わることがあるMPUキャッシュ記憶装置32とは異なっている。例えば、MPUキャッシュ記憶装置32は、メモリ・システム10内の最も最近アクセスされたメモリ保護テーブル22のエントリのために空間を作る必要がある場合、又は類似の置換ポリシを使用して将来的に最も使用されないと予測されるエントリを追い出すキャッシュ・コントローラに関連付けられることがある。
【0062】
図2はスタティックなMPUレジスタ記憶装置36をMPUキャッシュ記憶装置32と別個になっていることを示しているが、他の実例ではこれらは共通の記憶装置構造の個々の部分であってもよい。例えば、共通の記憶装置構造の一部のエントリは、それらがキャッシュ置換ポリシにより追い出されないスタティックなエントリとして見なされるべきであることを示すためにフラグでマークされることがある。しかしながら、実際には、別個の記憶装置構造32、36を設けることは、キャッシュ記憶装置32へのより効率的なインデックス付けを可能にする場合がある。
【0063】
MPUは、メモリ・システム10に格納されたメモリ保護テーブル22の(又はMPUキャッシュ記憶装置32にキャッシュされた)ルックアップされたエントリ、又はスタティックなMPUレジスタ記憶装置36で指定されたスタティックに設定されたMPUエントリのいずれかにおいて指定されるアクセス・パーミッションのデータを読み出すこと、及び処理回路4によって発行されたメモリ・アクセス・リクエストのプロパティが、メモリ・アクセス・リクエストのターゲット・アドレスに基づいて選択されたエントリについてのアクセス・パーミッションによって指定される要求を満足するかどうか判断することのための、パーミッション・チェック回路40を備える。例えば、アクセス・パーミッションは領域が読み取り専用領域(ここに対しては、処理回路4によって実行されるストア命令によってトリガされるあらゆる書き込みリクエストが拒否されるべきである)かどうか、又は読み取りと書き込みの両方が許可されているかどうかを指定することができる。アクセス・パーミッションはフェッチ・ユニット5が、対応するアドレス領域から命令をフェッチするよう許可されているかどうかを指定することもできる。アクセス・パーミッションは、やはり対応するアドレス領域へのアクセスを一定の例外レベル又は処理回路4の特権レベルまで制限することができ、またパーミッション・チェック回路40は、現在の例外レベル又はメモリ・アクセス・リクエストに関連付けられる特権レベルが、アクセス・パーミッションで定義される制限を満足するかどうかをチェックすることができる。
【0064】
図2の実例は図1のようにセキュアなMPU21とあまりセキュアではないMPU23を分けて示していないが、そのようにMPUを分けることはこの実例でもやはり可能であり、セキュアなMPUとあまりセキュアではないMPUのそれぞれは、図2で示す実例20のように設定されることを了解されたい。例えば、セキュアなMPU及びあまりセキュアではないMPUは、メモリ内の対応するMPUテーブル22について異なるベース・アドレスを指定することができ、またスタティックなMPUレジスタ記憶装置36及び/又はMPUキャッシュ記憶装置32のための別個のレジスタを有することができる。
【0065】
図2の実例は、図1のようにSAU42も有しており、これはアドレス空間のセキュアな/あまりセキュアではない領域を定義するセキュリティ属性エントリを定義するメモリ・セキュリティ設定レジスタ44、及びメモリ・アクセスが許可され得るかどうかを判断するためにターゲット・アドレスをセキュリティ属性エントリに対してチェックするためのセキュリティ・チェック回路46を備えている。この実例では、セキュリティ属性エントリは純粋にレジスタ・ベースであり、他の実例はメモリ10内にMPUテーブル22に類似するセキュリティ属性テーブルを与えることができ、SAUはMPU20の回路24、36、32、28と等価な回路を備えているが、メモリ保護エントリの代わりにセキュリティ属性エントリをルックアップする。
【0066】
したがって、図3に示すように、MPU(動作の現在のドメインに応じて、セキュア又はあまりセキュアではない)及びSAU42は両方、アドレス空間の異なる領域についてのアクセス・パーミッションの直交するセットを定義することができる。SAU42の場合、領域はセキュアなドメイン又はあまりセキュアではないドメインに関連付けられるとして定義することができる。図3に示されるように、MPU20において領域A、B、Cを定義することができ、それぞれの領域は読み取り専用、若しくは読み取り可能/書き込み可能の状態、アドレス領域にアクセスすることができる特権レベルに対する制限、又は領域がメモリ・システムによるメモリ・アクセスのリオーダリングが制限され得るデバイス・タイプの領域かどうかなどの対応する領域について定義される領域タイプなどの他の情報などの何らかのプロパティが定義されている。MPU20又はSAU42が、アドレス空間のすべての部分にメモリ保護エントリを定義することは必須ではない。例えば図3には、MPUエントリが定義されていない50とマークされたいくつかの領域があってもよい。これらの領域の1つのアドレスに処理回路4によるアクセスがある場合、メモリ・アクセスを拒否することができ、フォールトがトリガされることもある。図3の実例では、MPU20及びSAU42の両方が、メモリ・システム10において対応する場所を直接特定する物理アドレスに基づいてアクセスされる物理アドレス空間内のアドレスに基づいてメモリ・アドレス領域を定義している。しかしながら、MPU20又はSAU42は、メモリ10に与えられる対応する物理アドレスを取得するために、処理回路4によって与えられるアドレスに一定のオフセットを加算するなどの、アドレス・トランスレーションの限定された形式を適用することも可能である。
【0067】
一般的に、MPUエントリは、ソフトウェアによって非オーバラップとして定義されるよう期待することができる。いくつかの実装形態は、所与のメモリ属性エントリを設定する際、エントリがあらゆる他のエントリとオーバラップするかどうかをチェックするため、またオーバラップするのであれば所与のメモリ属性エントリの更新を拒否するための、ハードウェア・ロジックを提供することができる。しかしながら、このロジックは、すべての他のMPUエントリで定義されるアドレス範囲に対して比較を必要とすることがあるため、ハードウェア及びパフォーマンスの観点から(殊にメモリ内で定義されるMPUテーブル22を有する図2の実例では)高価な場合がある。したがって、他の実装形態は、このロジックを提供するコストを高価過ぎるように考えることがあり、そのため別の手法は、メモリ属性エントリを定義された非オーバラップのメモリ領域として定義するようソフトウェアが単純に期待されることである可能性があり、アーキテクチャは、ソフトウェアがこの要求を満足しない場合はセキュリティを保証することができないことを指定することができる。
【0068】
同様に、SAUエントリも非オーバラップと期待することができ、ハードウェアのチェックによって強制することができるか、又はハードウェアによっては強制されずソフトウェアがこの要求にしたがうと期待され、ソフトウェアがそのようにしない場合セキュリティは保証されない、のいずれかである。
【0069】
図2の実施例の場合、所与のMPUテーブルのエントリは、非オーバラップ領域を定義するよう期待されることがあるが、スタティックなMPUレジスタ記憶装置36内のスタティックなMPUエントリが、MPUテーブル22内のメモリ・ベースのMPUエントリによって定義されるアドレス領域とオーバラップする領域を定義するよう許可される場合がある。スタティックなMPUレジスタ記憶装置36及びメモリ・ベースのMPUエントリの両方において、アドレスがヒットする場合、いくつかの実装形態は、スタティックなMPUレジスタ記憶装置36からのスタティックなMPUエントリで定義されたパーミッションを使用することができ、一致メモリ・ベースのMPUエントリで定義されたあらゆる相反するパーミッションを却下することができる。代替的に、別の手法は、スタティックなMPUエントリがメモリ・アクセスを許可し、メモリ・アクセスが、一致メモリ・ベースのMPUエントリがメモリ・アクセスを許可するかどうかに関わらず許可され得るが、スタティックなMPUエントリがメモリ・アクセスを許可しない場合、依然としてメモリ・アクセスは一致メモリ・ベースのMPUエントリがメモリ・アクセスを許可する場合に許可され得ることであり得る。それにもかかわらず、2つのスタティックなMPUエントリに関連付けられる領域同士のオーバラップは禁止される場合があり、同様に2つのメモリ・ベースのMPUエントリに関連付けられる領域同士のオーバラップが禁止される場合がある。
【0070】
図4に示すように、処理回路4は、命令を実行することができる複数の動作状態をサポートすることができる。これらは、ドメイン、モード、及び特権レベルを含むことができる。処理回路4は、少なくとも2つの動作のセキュリティ・ドメインをサポートすることができ、少なくとも1つのセキュアなドメインS、及びあまりセキュアではないドメインLSを含む。一般的にシステムは、SAU42によって定義されるアドレス空間のセキュアな領域の1つに記憶されるプログラム・コードを処理する際、セキュアなドメインで動作し、SAU42によって定義されるあまりセキュアではない領域からのコードを実行する際はあまりセキュアではないドメインで動作する。あまりセキュアではないドメインでは、アドレス空間のセキュアな領域はアクセス不能である。
【0071】
加えて、処理回路4は、バックグラウンド処理用のスレッド・モードT、及び例外ハンドリング用のハンドラ・モードHを含む、複数のモードを有することができる。スレッドとハンドラのモードを別個にすることは、例外のハンドリングを単純化するために有用であり得、例えば、レジスタにアクセス可能な処理回路4の制御は、システムがスレッド・モード又はハンドラ・モードのどちらであるかに依存することがある。
【0072】
加えてシステムは、少なくともより高い特権を与えられた特権レベル及びより低い特権を与えられた特権レベルを含む、複数の特権レベルを有することができる。単純にするために、以下でこれらのレベルは「特権を与えられた」及び「特権を与えられていない」と説明するが、他の実例では3つ以上の異なる特権レベルがあってもよく、そのため用語「特権を与えられていない」は単純により低い特権を与えられたものの1つを指し、それよりも高い特権を与えられている少なくとも1つの他の特権レベルがあることを了解されたい。ハンドラ・モードにおいて、システムはデフォルトで特権を与えられた状態で動作することができる。スレッド・モードでは、現在の特権レベルは、制御レジスタ13のうちの1つに維持される現在の特権インジケータに応じて特権を与えられるか、又は特権を与えられないかのいずれかであり得る。現在の特権インジケータの別個のバンクされたバージョンは、セキュアなドメイン及びあまりセキュアではないドメインについてそれぞれ定義することができ、例えば、スレッド・モードは、セキュアなドメインにある時は特権を与えられるとして定義することができるが、あまりセキュアではないドメインにある時は特権を与えられないとして定義される。
【0073】
図5Aは、MPU20及びSAU42によって定義されるメモリ属性を問い合わせるために使用することができる範囲チェック命令(TT命令)の実例を示している。TT命令は、TT命令に応じて状態値が書き込まれるデスティネーション・レジスタRdを指定する。TT命令はまた第1のアドレス#add1及び第2のアドレス#add2を定義するパラメータを指定する。第1及び第2のアドレスは、例えば、アドレスを定義する値を格納している汎用レジスタ12を示すレジスタ指定子を使用して、TT命令によって複数の方法で定義することができ、例えば、明示的に個々のレジスタ内のアドレスを特定するか、又はベース・アドレス及びオフセットを通じてアドレスを指定する。第1のアドレス#add1はレジスタ内に特定されるが、第2のアドレスはサイズ値の倍数及び乗数として特定されるよう、アドレスを定義することもでき、ここで乗数とサイズ値のうち一方又は両方は変数である。変数である乗数及び/又は可変サイズ値は、即値によって又は制御レジスタ13のうちの1つにある設定インジケータによって、レジスタ内で特定することができる。一般的に、TT命令のエンコードは、第1のアドレス#add1が第2のアドレス#add2よりも小さくなるように制約されるか、又はエンコードにより第2のアドレス#add2が第1のアドレス#add1よりも小さくなるよう許可される場合、処理回路4は所与のTT命令のインスタンスについて第2のアドレス#add2が第1のアドレス#add1よりも小さいことを検出するとフォールトをトリガすることができる、のいずれかに制約され得る。
【0074】
図5Bは、範囲チェック命令(TT命令)の別の実例を示しており、上述のように、この命令は状態値をRdによって指定されるデスティネーション・レジスタに書き込む。しかしながら、この実例では、第1のアドレスがRnパラメータによって指定される汎用レジスタ12から読み取られる。Rmパラメータによって指定される別の汎用レジスタ12は読み取られ、Rmから読み取られたサイズ値(オフセット)は、第2のアドレスを作り出すために第1のアドレスに加算される。任意選択で、サイズ値は即値#immによって指定される分、左シフトすることができ、Rmパラメータによって指定されるレジスタから読み取られたサイズ値が効果的に乗算されるようにしている(例えば、1シフトは2を乗ずることに相当し、2シフトは4を乗ずることに相当するなど)。したがって、Rmによって指定されるレジスタ内の値はアレイの長さ(要素の数)であり得、一般的なアレイ要素のサイズの場合(例えば、32ビット・ワードのアレイでは、4バイト)、TT命令は追加的な命令を必要とすることなく第2のアドレス(すなわちアレイの終了アドレス)を計算することができる。
【0075】
TT命令に応じて、メモリ属性チェック回路16は、第1及び第2のアドレスに基づいてMPU20及びSAU42をルックアップし、デスティネーション・レジスタRdに、第1及び第2のアドレスがMPU20の同じメモリ保護エントリにマッピングするかどうか、及び第1及び第2のアドレスがSAU42の同じセキュリティ保護エントリにマッピングするかどうかの指標を記録する。加えて、第1のアドレス及び第2のアドレスが同じエントリにマッピングされるケースでは、デスティネーション・レジスタRdは、やはりMPU20又はSAU42の一致エントリから導出された情報を書き込まれることがある。
【0076】
例えば、図6に示すように、デスティネーション・レジスタRdには、複数の情報を書き込むことができ、以下を含む:
・MVALID:第1のアドレス及び第2のアドレスの両方がMPU20の同じメモリ保護エントリに対応するかどうかを示す;
・SVALID:第1のアドレス及び第2のアドレスがSAU42の同じセキュリティ保護エントリにマッピングするかどうかを示す;
・読み取りパーミッション・フラグR:(少なくとも第1及び第2のアドレスが同じMPUエントリに対応する場合)その一致エントリに対応するアドレス領域へのメモリ・アクセスが許可されるかどうかを指定する;
・読み取り/書き込みパーミッション・フラグRW:(少なくとも第1及び第2のアドレスが同じMPUエントリに対応する場合)読み取り及び書き込みアクセスの両方が、一致エントリ内のアクセス・パーミッションによって許可されるかどうかを示す;
・セキュリティ・ドメイン・フラグS:第1及び第2のアドレスがセキュアな領域又はあまりセキュアではない領域のどちらに対応するかを示す(少なくとも第1及び第2のアドレスが同じSAUエントリに対応する場合);
・組み合わされたインジケータLSR:次の条件がすべて満足される場合、1にセットされる:セキュリティ・フラグSが第1及び第2のアドレスがあまりセキュアではないドメインに対応していることを示している、読み取りフラグRが読み取りアクセスが許可されていることを示している、SVALID及びMVALIDインジケータの両方が1である。これらの条件のうちいずれかが満足されない場合、LSRは0にセットされる;
・第2の組み合わされたインジケータLSRW:次の条件がすべて満足される場合、1にセットされる:第1及び第2のアドレスに関連付けられるセキュリティ・ドメインがあまりセキュアではないドメインである、読み取り/書き込みフラグRWが1であり、読み取り及び書き込みのアクセスが許可されていることを示している、SVALID及びMVALID指標の両方が1である。これらの条件のうちいずれかが満足されない場合、LSRWは0にセットされる。
【0077】
TT命令に応じたハードウェア内での組み合わされたインジケータの設定は、(そうでなければより多くの命令を必要とすることがある、2つ以上の値の組み合わせを試験することを必要とするのではなく)情報の単一ビットを試験することによりセキュリティ・チェックの比較的一般的な形態を素早く実施できるようにしており、有用であり得る。場合によっては、これらの組み合わされたインジケータをデスティネーション・レジスタRdに書き込むことに加えて、処理回路4は、TT命令に応じて、やはり図6に示される情報のうち1つ又は複数に基づいて制御レジスタ13内の条件フラグを更新することができ(例えば、組み合わされたインジケータに基づいて)、それによって後続の条件付き命令は、条件フラグが何らかの試験条件を満足するかどうかに基づいて条件付き動作を直接トリガすることができる。セキュリティ・チェックの少なくともいくつかの形態について、これはどの条件付き動作を実施すべきかを決定するためにレジスタRd内のパラメータを比較するための後続の比較命令の必要性を回避することができ、コード密度を改善するのに役立つ場合がある。
【0078】
図6に示される情報は一実例に過ぎず、第1及び第2のアドレスが同じエントリにマッピングしている場合、MPU又はSAUの一致エントリから導出した情報の他の組み合わせも提供できることを了解されたい。
【0079】
例えば、いくつかの実装形態では、SVALID及びMVALIDは全体的に省略されてもよく、また組み合わされたインジケータ・フィールドLSRW及びLSRは状態値として機能することができ、第1及び第2のアドレスが同じ属性エントリにマッピングされるかどうかを示しており、同様にアドレスが実際に同じエントリにマッピングしているケースでは、一致エントリの属性から導出された追加的な情報を示している。例えば、LSRW又はLSR=1の時、SAU及びMPUの両方においてアドレスが同じ属性エントリにマッピングしていると推論することができる。LSRW又はLSR=0の場合、いくつかの実施例では、アドレスが異なるエントリにマッピングされた(そうであれば、MPUとSAUのどちらかが異なるエントリにアドレスがマップされた)からか、又は一致エントリが対応する領域へのアクセスを禁止している属性を指定したからか、のいずれであるかを見分けることは重要ではないと考えられ得る。
【0080】
また、状態値が読み取り専用、又は読み取り/書き込みパーミッションの別個の指標をリターンすることは必須ではない。他の実装形態では、TT命令の命令エンコードにおいてパラメータは、パーミッションが読み取りアクセスか又は書き込みアクセスかチェックされるかどうかを指定することができ、単一のパーミッション・インジケータ(RW/Rを置換する)又は組み合わされたインジケータ(LSRW及びLSRを置換)は、指定されたタイプのメモリ・アクセス(読み取り又は書き込み)が、第1のアドレスと第2のアドレスとの間のアドレス範囲で許可されるかどうかを示すことができる。
【0081】
この命令は、ソフトウェアが信頼されないソフトウェア(例えば、あまりセキュアではないドメイン内で動作する非セキュアなソフトウェア、又は特権を与えられていないレベルで動作する特権を与えられていないソフトウェア)から生じるポインタのパーミッションをチェックする際、有用であり得る。あまりセキュアではない信頼されないソフトウェアが、不適切なポインタをよりセキュアなソフトウェアによってアクセスされるアレイに渡すことにより、よりセキュアな又は高い特権を与えられたソフトウェアを騙してメモリの不適切な領域(あまりセキュアではない信頼されないソフトウェアにとってアクセス可能ではない可能性がある)へのアクセスを実施させるよう試行することがある場合に、例えば、これは混乱した使節の攻撃を回避するために有用であり得る。TT命令を、メモリ内のアレイの開始及び終了アドレスに対応する第1及び第2のアドレスとともに使用することにより、信頼されるソフトウェアは、そのアレイ内のすべてのワードが、アレイにポインタを渡した信頼されないソフトウェアによってアクセス可能かどうかをチェックすることができる(ソフトウェアがオーバラップするメモリ属性領域を定義していないとすると)。このタイプの命令は、プロセッサがアレイの境界内のあらゆるポインタが信頼されないソフトウェアにとってアクセス可能かどうかを素早くチェックするよう許可することができる。
【0082】
2つのアドレスを定義し、両方のアドレスがMPU及び/又はSAUの同じアドレス領域にあるかどうかをチェックする、図5及び図6に示される命令のフォーマットは、メモリ保護テーブル22がメモリ・システム10に記憶される図2で示される実装形態に特に有用であり得る。例えば所与のアドレスに関連付けられる領域数をリターンするのではなく、レジスタ内でMVALID又はSVALID情報を指定することにより、これは非常に多くのメモリ保護エントリ数をサポートするメモリ保護テーブル22により良好にスケーリングすることができる。やはり、(所与のアドレスに関連付けられる領域数の代わりに)第1及び第2のアドレスが同じエントリにマッピングするかどうかを示す単一のビット・フラグをリターンすることは、TT命令による問い合わせ用にそれぞれのキャッシュ・エントリ内に対応するメモリ保護エントリ全部の領域数をMPUキャッシュ記憶装置32が記憶する必要がないことを意味する。MPUキャッシュ記憶装置32内のエントリは、典型的にはSRAMではなくレジスタ・ベースであるため、キャッシュ記憶装置32内にそれぞれのMPUエントリの領域数を記憶する必要性を回避することで著しいエリアの削減を実現することができる。
【0083】
図7に示すように、複数のTT命令の変形を、処理回路4の動作状態の異なる組み合わせによって定義されるアクセス・パーミッションに対するチェックのために与えることができる。TT命令の第1の変形では、MPU及びSAUを、現在のセキュリティ・ドメインのアクセス・パーミッション、及び処理回路4の現在のモードに基づいてルックアップすることができる。したがって、TT命令に応じて、セキュアなMPU21及びあまりセキュアではないMPU23のうち関連するほうを、動作の現在のドメインに基づいて選択することができ、関連するMPU内のアクセス・パーミッションが、特権を与えられていないアクセス又は特権を与えられたアクセスのどちらを仮定してルックアップされるかを、システムの現在のモード、及び現在のモードで使用される現在の特権レベルに基づいて選択することができる。例えば、現在のモードがハンドラ・モードである場合、アクセスは定義により特権が与えられると仮定され得、一方現在のモードがスレッド・モードである場合、特権を与えられた又は特権を与えられていないルックアップが実施されるか、そうでないか、は制御レジスタ13のうちの1つに記憶されるパラメータに依存することがある。特権を与えられていないルックアップでは、もし領域が特権を与えられていないコードによってアクセスされるよう許可されていなければ、R又はRWフラグは0であり得る。
【0084】
TT命令の第2の変形(TTA)の場合、処理回路4は、命令があまりセキュアではないドメイン内で実行されるよう試行されるとフォールトをトリガすることがあり、TTA命令がセキュアなドメイン内で実行される場合、第1の変形の命令のようにセキュアなMPU21をルックアップすることの代わりに、あまりセキュアではないMPU23に代わりにMPUのルックアップがなされ得る。これは、セキュアなドメイン内で動作するソフトウェアが、もしあまりセキュアではないコードによって実施される場合に一定のメモリ・アクセスが許可されるかどうかをチェックできるようにするために有用であり得、これは混乱した使節の攻撃を妨げるよう、あまりセキュアではないコードによって与えられるポインタをサニタイジングするために有用であり得る。第2の変形の場合、MPUルックアップは、システムがあまりセキュアではないドメインで動作している場合、動作の現在のモードに関連付けられる特権レベルに基づくことができる。場合によっては、ルックアップ用に仮定される特権レベルは、命令のTTA変形を実行する時点の現在の特権レベルとは異なっていてもよい。例えば、TTA命令が現在の特権レベルが特権を与えられている時にセキュアなドメイン内で、且つスレッド・モードで実行されるが、あまりセキュアではないドメインについてスレッド・モードの特権インジケータのバンクされたバージョンがスレッド・モードはあまりセキュアではないドメイン内では特権を与えられるべきではないと定義している場合、TTA命令は、セキュアなドメイン内のスレッド・モードに関連付けられる現在の特権を与えられた状態ではなく、あまりセキュアではないドメイン内のスレッド・モードに関連付けられる特権を与えられていない状態に基づいて、あまりセキュアではないMPU23のルックアップをトリガすることができる。
【0085】
図7はまた、現在のセキュリティ・ドメインに関連付けられるMPU21、23をチェックするが、処理回路4の現在の特権レベルに関わらず特権を与えられていない状態に基づいてMPUのルックアップを強制する命令の第3の変形(TTT)を示している。したがって、処理回路4が現在特権を与えられた状態にあるとしても、図6のパラメータR、RWなどは、処理回路4が現在特権を与えられていない状態にあった場合、読み取り又は読み取り/書き込み動作が許可されるかどうかを示すためにセットされ得る。より高い特権を与えられたコードが、低い特権を与えられたコードにとってアクセス可能である特権を与えられていないパーミッションに対してチェックできるようにし、それによって特権を与えられていないコードによって与えられたポインタをチェックできるようにするために、これは有用であり得る。第3の変形の場合、第3の変形が特権を与えられていない状態で実行される場合にフォールトがトリガされる。
【0086】
同様に、命令の第2及び第3の変形のプロパティを組み合わせた命令の第4の変形(TTAT)を与えることができる。第4の変形の場合、第4の変形が特権を与えられていない状態、又はあまりセキュアではないドメイン内のいずれかで実行される場合にフォールトがトリガされる。第4の変形は、セキュアなドメイン内で実行される場合でも、あまりセキュアではないMPU23のルックアップをトリガし、また現在特権を与えられた状態で実行される場合でも特権を与えられていないメモリ・アクセスについて定義された特権を与えられていないパーミッションに基づいてルックアップをトリガする。
【0087】
したがって、より信頼されるコードがあまり信頼されないコードが第1及び第2のアドレスによって境界付けられるアドレスにアクセスするよう許可されているかどうかをチェックできるように、メモリ・アクセス・パーミッションのクロス動作状態チェックを可能にする第1から第4の変形は複数の命令を定義しており、あまり信頼されないコードによってより信頼されるコードに渡されたポインタをチェックするために、これは有用であり得る。所与の実装形態について、命令の第1から第4の変形のすべてが、命令セット・アーキテクチャ内でサポートされる必要はないことを了解されたい。これらの変形の1つ、2つ又はそれ以上のあらゆるサブセットが、サポートされ得る。命令の異なる変形は、例えば異なるオペコードを使用して、又は変形が同じオペコードを共有する場合は命令の命令エンコード内で定義される別のパラメータを使用して、様々な方法によって区別することができる。例えば、変形のフィールドは、どの変形が使用されるかを特定するために命令エンコード内に設けることができる。他の実例では、命令のエンコードは異なる変形について同じであってもよいが、制御レジスタ13に格納されるパラメータはTT命令が第1、第2、第3又は第4の変形のどれで取り扱われるべきかどうかを指定するためにセットすることができる。
【0088】
第1及び第2のアドレスが同じメモリ属性エントリにマッピングするかどうかをルックアップするルックアップ回路を提供することは、アドレスのそれぞれに対して2つの別個のルックアップを必要とする場合があるため、パフォーマンス及びハードウェアの観点から比較的高価であり得ると考えられるかも知れない。しかしながら、実際にはこれは要求されず、単一のルックアップで両方のアドレスが同じエントリにマッピングするかどうかを特定することができる。図8に示すように、領域チェック・ハードウェアは典型的には、比較器60、62のアレイを含むことができ、この場合スタティックなレジスタ36又はキャッシュ記憶装置32でサポートされるそれぞれのメモリ属性エントリを2つの比較器60、62のセットに関連付けることができる。これらの比較器は、入力アドレスを対応するアドレス領域のベース・アドレス64と比較し、入力アドレス65がベース・アドレス64以上である場合にアサートされるヒット・シグナル66を出力する下位境界比較器60を含む。やはり、スタティックなレジスタ36又はキャッシュ記憶装置32に与えられるそれぞれのエントリについて、入力アドレス67を、対応するアドレス領域の上限を定義するリミット・アドレス68と比較し、入力アドレス67がリミット・アドレス68以下である場合にヒット・シグナル69をアサートする第2の上位境界比較器62を設けることができる。領域ヒット・シグナル70は、ANDゲート71によって生成することができ、下位境界ヒット・シグナル66及び上位境界シグナル69の両方がアサートされている場合、1にセットされる。
【0089】
定期的なメモリ・アクセスの場合、メモリ・アクセスのターゲット・アドレス#addは、入力アドレス65として下位境界比較器60に、また入力アドレス67として上位境界比較器62の両方に与えることができる。
【0090】
2つの別個のアドレスを比較する必要があるTT命令を実装するために、第1のアドレス#add1を入力アドレス65としてそれぞれの下位境界比較器60に与え、第2のアドレス#add2を入力アドレス67としてそれぞれの上位境界比較器62に与えることが可能である。第1のアドレス#add1が第2のアドレス#add2より下位であるとすれば、所与のエントリについてのヒット・シグナル70が、第1と第2のアドレスの両方がそのエントリにマッピングしているか、そうでないかを示す。第1及び第2のアドレスが異なるエントリにマッピングしている場合、個々のエントリについての領域ヒット・シグナル70のいずれもアサートされない。第1及び第2のアドレスが同じエントリに対応している場合、その一致エントリについてのヒット・シグナル70だけがアサートされる。したがって、命令が典型的には既存のメモリ・アクセスをチェックするために既に設けられている比較器60、62を単純に再使用することができるため、追加的なパフォーマンス及びエリアの影響がほとんどない状態で(単一のアドレスのルックアップと比べて、追加的なルックアップの時間もほとんどない)、図5で示されるTT命令を実行することが可能である。比較器のネットワークの単一のルックアップのみが必要とされるため、図5及び図6で示されるTT命令の形態は、第1及び第2のアドレスを領域数に対してチェックするための別個の命令の代わりに単一のTT命令が実行される必要があるという点において、単一のアドレスに関連付けられる領域数のリターンをトリガする代替的な実例と比べて追加的なメリットがある。TT命令は、すべてのサイクルがカウントに入る何らかの割り込みレイテンシ敏感タスクについてのクリティカル・パス上にあると期待されるため、これは大いなる利点となり得る。
【0091】
図9は、範囲チェック命令を処理する方法を示す流れ図である。ステップ100において、範囲チェック命令が命令デコーダ7によってデコードされる。範囲チェック命令は第1のアドレス#add1及び第2のアドレス#add2を特定するアドレス特定パラメータを特定する。この実例では、範囲チェック命令は第1のアドレス#add1が第2のアドレス#add2より下位であるよう制約するエンコードを有するが、これに当てはまらない場合、特定の命令についてアドレス特定パラメータが第2のアドレス#add2が第1のアドレス#add1より下位であることを特定する場合フォールトをトリガすることができる。
【0092】
ステップ102において、デコーダ7は範囲チェック命令のどの変形がデコードされるかを特定する。これは、命令エンコードそれ自身のパラメータ、又は制御レジスタ13に格納されているパラメータに基づくことができる。変形に基づいて、命令デコーダ7は制御信号を生成して、セキュアなMPU21とあまりセキュアではないMPU23とのどちらが、命令に応じてルックアップするために選択されるMPUであるべきか、またどの特権レベルが関連するMPU内のアクセス・パーミッションをチェックするために想定する選択される特権レベルであるべきか、を判断する。
【0093】
命令が、第1の変形のものである場合、ステップ104において、選択されるMPUが、処理回路4の現在のセキュリティ・ドメインに対応するセキュアなMPU21及びあまりセキュアではないMPU23のうちの1つであるように、また選択される特権レベルが処理回路4の現在の特権レベルであると決定される。
【0094】
変形が第2の変形である場合、ステップ106において、システムは現在のセキュリティ・ドメインがあまりセキュアではないドメインであるかどうかをチェックし、そうであれば、ステップ108においてフォールトがトリガされる。したがって、第2の変形の実行は、セキュアなドメイン内での実行に制限されることがある。現在のドメインがセキュアなドメインである場合、ステップ110において、選択されるMPUがあまりセキュアではないMPU23であるように、また処理回路4があまりセキュアではないドメインで動作している際に選択される特権レベルが現在のモードに関連付けられる特権レベルであると決定される。
【0095】
ステップ102において、デコードされた範囲チェック命令の変形が第3の変形であると特定される場合、ステップ112において、現在の特権レベルが特権を与えられていない状態かどうかチェックされ、そうであれば、やはりステップ108でフォールトがトリガされる。したがって、第3の変形の実行はより高い特権を与えられた状態に制限される。現在の特権レベルが、特権を与えられていない状態である場合、ステップ114において、選択されるMPUが、現在のセキュリティ・ドメインに関連付けられるセキュアなMPU21及びあまりセキュアではないMPU23のうちの1つであるように、また選択される特権レベルが処理回路4が動作している現在の特権レベルに関わらず特権を与えられないよう強制されると決定される。
【0096】
命令の変形が第4の変形である場合、ステップ116において、現在のセキュリティ・ドメインがあまりセキュアではないドメインであるかどうか、及び/又は現在の特権レベルが特権を与えられていない状態かどうか判断される。現在のドメインがあまりセキュアではないドメインであること、又は現在の特権レベルが特権を与えられていない状態であることのいずれかである場合、ステップ118でフォールトがトリガされる。したがって、第4の変形の実行は、処理回路がセキュアなドメイン且つより高い特権が与えられた状態にあることを制限される。現在のドメインがあまりセキュアではないドメインではなく、且つ現在の特権レベルが特権を与えられていない状態ではない場合、ステップ120において、選択されるMPUがあまりセキュアではないMPU23であるように決定され、また選択される特権レベルが処理回路4の現在の特権レベルに関わらず特権を与えられていない状態であるように決定される。
【0097】
どの変形に遭遇するかに関わらず、ステップ122において、メモリ属性チェック回路16は、それぞれのエントリの下位境界アドレスと比較された第1のアドレス#add1、及びそれぞれのエントリの上位境界アドレスと比較された第2のアドレス#add2で、選択されたMPUをルックアップするように制御される。図2の実例において、スタティックなMPUレジスタ記憶装置36及びMPUキャッシュ記憶装置32内のエントリがルックアップされる可能性があり、エントリのうちいずれに対しても第1のアドレス又は第2のアドレスのヒットがない場合、メモリ内のMPUテーブル22からメモリ保護エントリを取得するためにテーブル・ルックアップ26を実施する必要がある可能性がある。このテーブル・ルックアップは、第1のアドレス又は第2のアドレスのいずれかに基づくことができるが、それはリターンされるエントリを問い合わせて、第1及び第2のアドレスのもう一方がやはり同じエントリに一致するかどうかを判断することができるためである。第1及び第2のアドレスのうちの1つがスタティックなMPUレジスタ記憶装置36又はMPUキャッシュ記憶装置32内のエントリのうちの1つに一致するTT命令の実行の場合、MPU20のローカルに記憶されたエントリから第2のアドレスも同じエントリに一致するかどうか分かるため、メモリ・システムへのテーブル・ルックアップをトリガする必要はない。
【0098】
ステップ124において、第1及び第2のアドレスが選択されたMPUの同じMPUエントリに対応するかどうか判断される。その場合、ステップ126において、MPU状態有効インジケータ(MVALID:MPU status valid indicator)は、第1及び第2のアドレスが同じメモリ属性エントリに対応することを示すために1にセットされ、一方、第1及び第2のアドレスが同じエントリに対応しない場合、ステップ128においてMVALIDは0にセットされる。MVALIDが1に等しい場合、ステップ130において、読み取りアクセスが許可されているかどうか、又は読み取り及び書き込みアクセスの両方が許可されているかどうかを示す、R及びRWフラグなどの属性情報は、選択された特権レベルがステップ104、110、114、120のうち1つにおいて選択されると仮定すると、一致MPUエントリ内で指定される情報に基づいてセットされる。ステップ124において第1及び第2のアドレスが同じMPUエントリに対応していない場合、ステップ130は省略されてもよい。代替的に、ステップ130は第1及び第2のアドレスが同じMPUエントリに対応していなくても実施することができ、例えば、第2のアドレスも同じエントリに一致するかどうかに関わらず、第1のアドレスに対応するエントリからの情報に基づいて属性情報をセットする。第1のアドレスに関連付けられるエントリだけに基づいて属性情報をセットすることは問題ではないが、それはこの情報が第2のアドレスもカバーするものとして信頼することができるかどうかを示すMVALIDフラグによって資格を与えられ得るからである。したがって、いくつかの実装形態では、回路ロジックにおいて、第1及び第2のアドレスが同じエントリに対応するかどうかに基づいて属性情報の更新を抑制するためのロジックを提供するのではなく、第1及び第2のアドレスが同じMPUエントリに対応するかどうかに関わらず、常に属性情報R、RWをセットするほうがより簡単な場合がある。ステップ128から続く2つの代替的な点線は、実装することができる代替的な選択肢を示している。
【0099】
ステップ132において、SAU42がやはりそれぞれのセキュリティ保護(SAU)エントリの下位境界アドレスと比較された第1のアドレス、及びそれぞれのセキュリティ保護エントリの上位境界アドレスと比較された第2のアドレスでルックアップされる。ステップ134において、処理回路は、第1及び第2のアドレスが同じSAUエントリに対応するかどうかを判断し、そうであればステップ136においてセキュリティ状態値SVALIDは1にセットされ、一方ステップ138において第1及び第2のアドレスが同じSAUエントリに対応していない場合、SVALIDは0にセットされる。ステップ140において、属性情報(例えば、一致エントリが、アドレス空間のセキュアな又はあまりセキュアではない領域として定義されるかどうかを示すセキュリティ・ドメイン・フラグS)が、一致SAUエントリ内で指定される情報に基づいてセットされる。ステップ140は、少なくとも第1及び第2のアドレスが同じSAUエントリに対応する場合実施されるが、(MPUルックアップについてと同様の理由で)ステップ138の後、ステップ140は実施してもよいし、省略されてもよい。図9の実例は、ステップ122~130の後、ステップ132~140が順次実施されることを示すが、他の実例では、MPUルックアップより前にSAUルックアップを実施してもよく、又はMPU及びSAUルックアップが並行して実施されてもよい。
【0100】
MVALID=1且つSVALID=1の場合、ソフトウェアがSAU又はMPUが第1及び第2のアドレスの間の範囲でオーバラップするエントリを有するようにセットされていなければ、S、R、RWパラメータによって示されるパーミッションが第1及び第2のアドレスの間の範囲全体に適用することが保証される。ソフトウェアがオーバラップする領域を定義している場合、このプロパティは保証できない。上で議論したように、MPU領域が非オーバラップであり、且つSAU領域が非オーバラップであることを強制するハードウェア・ロジックを提供する際にコストが発生することは正当化されているとは見なされない場合がある。
【0101】
ステップ142において、処理回路は、一致SAUエントリから導出された情報と一致MPUエントリから導出された情報との組み合わせに基づいて組み合わされたパーミッション・インジケータを生成することができる。やはり、このステップは少なくともMVALID=1且つSVALID=1である場合に実施することができるが、MVALID若しくはSVALIDのいずれかが0であるか、又はそれに関わらず実施することができる(上で議論したのと同じ理由で)。この実例では、2つの組み合わされたパーミッション・インジケータが生成される:アクセスがあまりセキュアではない領域に対してであるかどうか、またその領域に対する読み取りアクセスが選択されたMPUでのルックアップの際選択された特権状態において許可されているかどうかを示す第1のインジケータLSR、一致アドレス領域があまりセキュアではない領域であるかどうか、また読み取り及び書き込み両方が選択されたMPUでのルックアップの際に選択された特権レベルで許可されているかどうかを示す第2のインジケータLSRW。これらは、実施することがしばしば有用であり得る一般的なチェックを表している場合があり、様々なエントリからルックアップされた異なるパラメータからの情報を組み合わせるために単一のビット・インジケータを提供することによって、これは後続のチェックを素早く実施することができる。例えば、セキュリティ・フラグが、領域がセキュアなドメインに関連付けられる場合1であり、領域があまりセキュアではないドメインに関連付けられる場合0であると仮定される場合、LSRを(MVALID AND SVALID AND (NOT S) AND R)の結果に基づいてセットすることができ、LSRWを(MVALID AND SVALID AND (NOT S) AND RW)の結果に基づいてセットすることができる。明らかに、これらのパラメータのうちいくつかについて代替的なマッピングを使用することが可能であり(例えば、S=0がセキュアなドメインを示すことができ、S=1があまりセキュアではないドメインを示すことができる)、この場合、組み合わされたパーミッション・インジケータを生成するために使用される論理演算の組み合わせは変わってもよい。
【0102】
ステップ144において、処理回路4は、少なくとも第1及び第2のアドレスが同じMPUエントリに対応するかどうかを示す状態値MVALID、SVALIDを、ソフトウェア・アクセス可能レジスタ、例えば、範囲チェック命令によって指定されるデスティネーション・レジスタRdに書き込む。ステップ130、140、142において決定された属性情報は、同様にレジスタに書き込むことができる。任意選択で、ステップ146において命令は、制御レジスタ13のうちの1つにある条件フラグを更新することができる。これらの条件フラグは、以前の処理結果の様々な条件を指定するために条件フラグ・セット命令に応じて更新することができ、また試験条件が条件フラグによって満足されるよう指定する条件付き命令によって試験することができ、対応する条件付き動作を条件フラグの現在の値がこの試験条件を満足するかどうかに応じて条件的に実施するようトリガする。例えば、条件フラグのうちいくつかは、組み合わされたパーミッション・インジケータに対応する値にセットすることができ、それによって後続の条件付き命令は、組み合わされたパーミッション・インジケータの値に基づいて条件的に実施されるアクションを直接トリガすることができる。ステップ144と146との間の点線は、ステップ146が任意選択であることを示している。それにもかかわらず、制御レジスタ内の条件フラグが、第1及び第2のアドレスが同じエントリに対応するかどうかを示す状態情報を記憶することができるソフトウェア・アクセス可能な場所の別の実例を表すことができる。他の実例では、デスティネーション・レジスタへの書き込みを省略することができ、命令の唯一の結果は条件フラグを更新することだけである場合がある(例えば、ステップ144が省略される)。値をレジスタに書き込む代わりに、他の実例では、値をアドレス#add1、#add2が同じメモリ属性エントリに対応するかどうかを示すメモリに書き込むことができる。
【0103】
図9に示される例では、命令は、MPU20に対応するメモリ属性エントリの第1のセット、及びSAU42に対応する属性エントリの第2のセットの両方に問い合わせを行う。しかしながら、TT命令は、チェックするメモリ属性エントリのセットを提供するだけのシステムで使用することもできるため、メモリ属性エントリの2つの異なるセットについての値をリターンすることは必須ではない。
【0104】
図10は使用され得るシミュレータの実装形態を図示している。先に説明された実施例は考慮される技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、本明細書で説明される実施例にしたがっており、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、しばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類としては、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ変換器を含むバイナリ変換器が挙げられる。典型的には、シミュレータ実装形態は、任意選択でホスト・オペレーティング・システム220を実行させ、シミュレータ・プログラム210をサポートする、ホスト・プロセッサ230上で実行することができる。いくつかの配置構成において、ハードウェアと提供される命令実行環境との間に複数のシミュレーションのレイヤ、及び/又は同じホスト・プロセッサ上に設けられる複数の別個の命令実行環境があってもよい。歴史的には、適度な速度で実行するシミュレータ実装形態を提供するためにはパワーのあるプロセッサが要求されてきたが、そのような手法は一定の状況下で正当化されてもよく、例えば互換性又は再利用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。例えば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を伴う命令実行環境を提供すること、又は典型的には異なるハードウェア・アーキテクチャに関連付けられる命令実行環境を提供することができる。シミュレーションの概略は「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁に示されている。
【0105】
実施例が特定のハードウェア構築物又は特徴を参照して以前に説明されてきた範囲で、シミュレートされる実施例において等価な機能性が適切なソフトウェア構築物又は特徴によって提供され得る。例えば、特定の回路がコンピュータ・プログラム・ロジックとしてシミュレートされる実施例に実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアが、ソフトウェア・データ構造体としてシミュレートされた実施例に実装されてもよい。やはり、ハードウェア装置2内でメモリ6にアクセスするために使用される物理アドレス空間は、シミュレータ210によってホスト・オペレーティング・システム220によって使用される仮想アドレス空間にマッピングされるシミュレートされたアドレス空間202としてエミュレートすることができる。以前に説明された実施例において参照されるハードウェア要素の1つ又は複数がホスト・ハードウェアに存在する配置構成(例えば、ホスト・プロセッサ230)において、いくつかのシミュレートされる実施例は適切であればホスト・ハードウェアを利用することができる。
【0106】
シミュレータ・プログラム210はコンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶することができ、ターゲット・コード200(アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る)にプログラム・インターフェース(命令実行環境)を提供するが、ターゲット・コード200はシミュレータ・プログラム210によってモデリングされるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じものである。したがって、ターゲット・コード200のプログラム命令は、命令実行環境内からシミュレータ・プログラム210を使用して実行することができ、それによって、上で議論した装置2のハードウェア特徴を実際には有していないホスト・コンピュータ230がこれらの特徴をエミュレートすることができる。シミュレータ・プログラムは命令デコード・プログラム・ロジック235と、メモリ・アクセス・チェック・プログラム・ロジック240とを含み(MPUプログラム・ロジック242及びSAUプログラム・ロジック244を含む)、命令デコーダ7及び図1のハードウェア装置2のメモリ・アクセス・チェック回路22(MPU26及びSAU24を含む)の振る舞いをエミュレートする機能性を与える。システム2のアーキテクチャ的なレジスタ14は、シミュレータ・コード210によって維持されるレジスタ・データ構造255を使用してエミュレートすることもできる。したがって、メモリ属性チェック及びTT命令のためのサポートは、上で議論した技法に対応する方法で、シミュレータ・プログラム210によって実施することができる
【0107】
本出願において、語句「するように構成される」は、装置の要素が定義される動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」はハードウェア又はソフトウェアの内部接続の、配置又はやり方を意味する。例えば、装置は定義される動作を提供する専用のハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスは機能を実施するためにプログラムされてもよい。「するように構成される」は、定義される動作を提供するために装置要素がいかなるやり方でも変更される必要があることを含意するものではない。
【0108】
本発明の図示的な実施例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの正確な実施例に限定されず、当業者により添付の特許請求の範囲によって定義されるような本発明の範囲及び精神を逸脱することなく、その様々な変形及び修正がそこになされ得ることを理解されたい。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
【国際調査報告】