JP4519738B2 - メモリアクセス制御装置 - Google Patents

メモリアクセス制御装置 Download PDF

Info

Publication number
JP4519738B2
JP4519738B2 JP2005246326A JP2005246326A JP4519738B2 JP 4519738 B2 JP4519738 B2 JP 4519738B2 JP 2005246326 A JP2005246326 A JP 2005246326A JP 2005246326 A JP2005246326 A JP 2005246326A JP 4519738 B2 JP4519738 B2 JP 4519738B2
Authority
JP
Japan
Prior art keywords
domain
address
program
region
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005246326A
Other languages
English (en)
Other versions
JP2007058776A (ja
Inventor
博正 進
茂太 國信
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2005246326A priority Critical patent/JP4519738B2/ja
Priority to US11/509,596 priority patent/US20070050586A1/en
Priority to CNB2006101214554A priority patent/CN100428202C/zh
Publication of JP2007058776A publication Critical patent/JP2007058776A/ja
Application granted granted Critical
Publication of JP4519738B2 publication Critical patent/JP4519738B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、メモリアクセス制御装置に関する。
CPUなどの計算機は、プログラムに対してフラット(単一の整数で指定したメモリ番地が対等なこと)にアドレスすることが可能なメモリ空間を提供している。フラットにアドレスすることが可能なメモリ空間を利用するとポインタ(メモリ番地を格納した変数のこと、プログラミング言語によるメモリ番地の抽象化方法)を用いてデータ構造を構築する方法やコピーを必要としないデータの共有が可能となり、効率の高いプログラムを作成できる。しかしながらプログラムの一部に欠陥や悪意のあるコードが存在するとプログラム全体について信頼性が低下するという問題がある。
そこで信頼性が問題となるような大規模なプログラムでは、複数のプログラム部品(ここでは構成要素)を結合することで、プログラムを作成する。各プログラム部品は、明確に定義された公開インターフェイスを有してそれぞれ連携し、また各プログラム部品間でのメモリのアクセスリージョンや関数コールには必要な範囲に制限するようにしてプログラムが作成される。
このようにプログラム部品ごとのメモリアクセスや関数コールに一定の制限を加えることで、プログラム部品に欠陥や悪意のあるコードが存在してもその影響を一定の範囲に抑えることができる。こうしてプログラム全体の信頼性を向上させることができる。
ここでプログラム部品ごとのメモリアクセスについては、アクセス可能なアドレス領域とそれぞれの操作の種類が規定された許可マップを作成する。この許可マップを参照することによってアクセス制限を行っている。この許可マップに記載されたメモリ領域は、記憶装置のアドレス空間上に散在し、メモリ領域の開始及び終了となる番地はページ境界ごとに整列していない。また、プログラムを変更してプログラム部品を交換するとこれに対応させる許可マップを大幅に変更しなければならないという問題が生じる。
このような許可マップを利用したアクセス制御方法として、従来PTE方式、ABR方式、混合方式がある。
PTE方式は、メモリ管理ユニット(Memory Management Unit)が管理するページ表エントリ(Page Table Entry)に許可ビットを設け、ページ単位でアクセス制限を行うものである。アクセス制御単位となるページ(4キロバイト程度)は、ソフトウエアと比較しても大きな単位であり、プログラム内の保護対象をページ境界に整列させると、ページ内でのフラグメンテーションが生じメモリの利用効率が低くなる。通常は、ページ表エントリに格納する許可ビットは少数のセットに限られ、実行中のプログラム部品に応じた許可マップの多重化を効率よくできないという問題がある。
また、ABR方式は、アクセス可能なメモリ領域の上下限を指定するアドレス境界レジスタ(Address Boundary Register)やセグメント記述子(Segment Descriptor)を設け、アクセス可能なアドレス値の範囲を制限するものである。アクセス制御単位は任意の場所及びサイズに定義できるが、同時に指定可能なメモリ領域の数はアドレス境界レジスタの数で制限されるという問題がある。
また、混合方式は、アドレス上下限、許可ビット及び優先度の組で構成される情報を数セット同時に定義し、要求アドレスを含む最高優先度の区間の許可ビットに基づきアクセス制御するものである。アドレス区間に関しては、アドレスの上位ビット列で指定する方式や特許文献1に記載されているようなアドレス境界レジスタで指定する方式がある。これらの方式ではアドレス上位ビット列による指定は、アドレス区間のサイズ及び配置に関して制限が強いという問題がある。ここで言う強い制限とは、指定可能なアドレス区間が2のべき乗サイズに限定され、区間のアドレスがサイズの倍数に限られることを意味する。
特開2003−6046公報。
このような方法では、プログラムコードを改変することなく、各プログラム部品のアクセスメモリ領域を効率よく制限することができなかった。
本発明は、プログラムコードを改変することなく、格プログラム部品のアクセスメモリ領域を効率よく制限することを可能とするメモリアクセス制限装置を提供することを目的とする。
上記目的を達成するために、本発明は、プログラムを構成する要素がアクセス可能なメモリ領域を記述したリージョン切替表及び前記プログラムを構成する要素間で制御移行可能なアドレスを記述したドメイン切替表を格納する記憶手段と、
前記リージョン切替表と直前にアクセスしたアドレスを含むリージョンの番号と保護ドメインを識別するドメイン番号とを保持する制御レジスタと、
前記プログラムを構成する要素が要求するメモリ操作コード及びアドレス、前記制御レジスタが保持する前記リージョンの番号及び前記ドメイン番号が入力され、前記プログラムを構成する要素が要求するアドレスが前記直前にアクセスしたアドレスを含むリージョンに含まれるかを検査し、含まれない場合にはリージョン境界フォルトを発生して前記プログラムを中断し、含まれる場合には前記ドメイン番号を調べて前記プログラムを構成する要素が要求するメモリ操作コードの許可の有無を検査し、許可がない場合にドメイン境界フォルトを発生して前記プログラムを中断するアクセス検査ユニットと、
前記アクセス検査ユニットが前記リージョン境界フォルトまたは前記ドメイン境界フォルトを発生する場合に、前記プログラムを構成する要素が要求する前記メモリ操作コードを記録する操作コードレジスタ、及び前記アドレスを記録するアドレスレジスタと、
前記アクセス検査ユニットが前記リージョン境界フォルトを発生する場合に、前記制御レジスタが記録する前記リージョン番号を、前記操作コードレジスタが記録する前記アドレスを含むリージョン番号に更新するリージョン切替手段と、
前記アクセス検査ユニットが前記ドメイン境界フォルトを発生する場合に、前記アドレスレジスタが保持する前記メモリ操作コード、前記操作コードレジスタが記録する前記アドレス、前記ドメイン切替表、および前記制御レジスタが保持する前記ドメイン番号が入力され、アクセス違反およびドメイン切替違反を検出する場合にはアクセスを制限し、検出しない場合には前記制御レジスタが保持するドメイン番号を更新して前記プログラムを再開するドメイン切替手段と、
を具備することを特徴とするメモリアクセス制御装置を提供する。
本発明では、保護対象となるプログラムの構造を反映したアクセス制御表を作成し、このアクセス制御表をプログラム実行前にプロセッサに登録する。そしてプロセッサがアクセス制御表を参照して、許可マップの設定や切替を行う。こうすることでプログラムの設定によらず許可マップの設定及び切替を行うことができるので、各プログラム部品のアクセスメモリ領域を効率よく制限することを可能とする。
以下、本発明の好ましい実施形態について図面を用いて説明する。なお、本発明は以下にあげる実施形態に限定されるものではなく、種々応用して用いることができる。
先ず、本発明のアクセス制御装置をコンピュータシステムに設けた場合の概略について図1を用いて説明する。
図1に示すように、このコンピュータシステムは、メインの計算を行うプロセッサコア11と、情報を記録するためのメインメモリ19と、プロセッサコア11への割込みを制御する割込みコントローラ13(INTC)と、メインメモリ19の動作を管理するためのメモリ管理ユニット12(MMU)と命令/データ用キャッシュメモリ15と、プロセッサをバス18へ接続するためのバスインターフェイスユニット16(BIU)と、メインメモリ19をバス18へ接続するためのメモリコントローラ20と、プロセッサコア11と割り込みコントローラ13へ接続し実行中のプログラムに応じたアクセス制御を行うアクセス検査ユニット14(ACU)を有している。メモリシステムとは、プロセッサコア11からメインメモリ19へ至る経路上の要素から構成され、メモリ管理ユニット12や命令/データ用キャッシュメモリ15やメモリコントローラ20やメインメモリ19などで階層的に構成される。アクセス検査ユニット14は、プロセッサコア11とメモリシステムの間に位置し、プロセッサコア11のメモリシステムへのアクセスを監視する。具体的にはプロセッサコア11がメモリシステムへ要求する番地と操作コードを入力とし、実行中のプログラムに関するアクセス制御情報を参照する。そしてプログラムがメモリシステムへアクセス要求した場合にそのアクセスについて許可或いは不許可を与える。
図2は、図1で示したアクセス検査ユニット14及びメインメモリ19上に配置したアクセス制御装置の詳細を示すブロック図である。
図2に示すように、このアクセス制御装置は、アクセス検査ユニット14(ACU)と、ACU制御レジスタ30(REG)と、ACU初期化装置23(INI)と、リージョン切替装置24(RSC)と、ドメイン切替装置25(DSC)を有している。また、メインメモリ19は、ドメイン切替スタック27(DSS)と、リージョン切替表28(RST)と、ドメイン切替表29(DST)を格納有している。なお、管理プログラム22は、ブロック23と24と25を有している。アクセス制御情報26は、ブロック27と28と29を有している。アクセス制御情報は、アクセス制御情報26のうちリージョン切替表28とドメイン切替表29を含む。
このアクセス制御装置では、保護対象となる応用プログラム21の構造を反映したアクセス制御表(28および29)を用いて、ACU初期化装置23(INI)が、このアクセス制御表をプログラム実行前にメインメモリ19へ格納する。そしてリージョン切替表28(RST)をACU制御レジスタ(REG)へ格納し、応用プログラム21を開始する。次に、アクセス検査ユニット14が、リージョン切替表28(RST)を参照して応用プログラム21のメモリアクセスを監視する。そして異常を検出するとプロセッサコア11へ割込みを発生し、管理プログラム24(RSC)および25(DSC)へ制御を移す。リージョン切替装置24(RSC)およびドメイン切替装置25(DSC)が、許可マップの設定及び切替えを応用プログラム21によらずに行う。
こうすることで、アクセス制御表の記述内容を変更することにより、信頼性と性能とのトレードオフを考慮したチューニングが可能である。
実行中のプログラムが要求するアドレスに空間的な局所性が存在する場合には、アクセス制御装置の利用頻度が低くなる機能(具体的には24及び25)をソフトウエアにより実装する。こうして性能を大幅に低下させることなくプロセッサコア11を低コスト化、省電力化させることができる。
ここでアクセス制御表は、プログラムがメモリへアクセスすることを許可する許可マップと、プログラムがメモリへアクセスする領域を切替える切替許可情報を定義するデータであり、リージョン切替表とドメイン切替表を具備する。
図2の矢印31が示すようにプロセッサコア11から、要求コード及び要求アドレスの信号が、CPUクロックに同期してアクセス検査装置14に入力される。また、ACU制御レジスタ30からリージョン番号(図3のRN#)と、ドメイン番号(図3のDN1)と、リージョン切替表28(図3のTAB)がアクセス検査ユニット14(ACU)へ入力される。アクセス検査ユニット14が、応用プログラムのメモリアクセスに異常を検出すると、プロセッサコア11へ例外を送信する。例外発生時は、アクセス検査ユニットが、例外コード(図3のINT)と、例外発生時のコア要求コード(図3のOPC)及びコア要求アドレス(図3のADR)をレジスタ30へ保存する。操作要求コードは、メモリ操作の種別(R|W|X)と、制御移行の要因(call|retn|othr)と、アクセス要求時のアドレスレジスタ番号の三つの成分を含む。メモリ操作の種別は、メモリ読み出し(R)か、メモリ書き込み(W)か、命令読み出し(X)かである。制御移行要因は、手続き呼出し(call)か、手続き戻り(retn)か、その他(othr)である。
次に、アクセス検査ユニット14からの割り込みを受けたプロセッサコア11は、応用プログラム21の実行を中断し、あらかじめ登録されたソフトウエア実装(可能)部22のリージョン切替装置24またはドメイン切替装置25を開始する。リージョン切替装置24は、割込み要因をACU制御レジスタ30から読み込み、リージョン切替表28を参照してリージョン番号(図3のRN#)を更新する。ドメイン切替装置25は、割込み要因をACU制御レジスタ30から読み込み、ドメイン切替表29(図4)及びドメイン切替スタック27(図4)を参照してドメイン番号(図3のDN1)を更新する。ドメイン切替装置25は、メモリへのアクセス違反(INT3)やドメイン切替違反(INT4)を検出することがある。管理プログラム24または25が違反を検出することなく終了すると、プロセッサコア11は応用プログラムを例外が発生した命令から再開する。
本発明によるアクセス制御装置では、プログラム実行中にプロセッサコア11が要求するメモリへのアクセスを制限する方法であって、プログラムの静的構造と対応するアクセス制御表28及び29(図4)を用い、プログラムの動的状態と対応するACU制御レジスタ30とドメイン切替スタック27を用い、アクセス制御表と制御レジスタを参照しながらプログラムのアクセス可否を判定している。
本発明によるアクセス制御装置では、アクセス制御表の構成及び配置に関して、プログラム部品ごとの許可マップを記述するリージョン切替表28とプログラム部品間の制御移行の関係を記述するドメイン切替表29とに分離し、頻繁にアクセスするリージョン切替表28をACU制御レジスタファイル30(REG)に配置することで高速化と信頼性の向上を図っている。
次に、図4を用いて本発明のリージョン切替表28(RST)、ドメイン切替表29(DST)及びドメイン切替スタック27(DSS)について説明する。
図4に示すように、本発明のリージョン切替表28(DSS)は行方向にアドレス、列方向にドメインで表されている。ここではドメインdom-0のアドレスrst.addr[0]からアドレスrst.addr[1]までは命令領域('r-x'例えば0x5)、ドメインdom-0のrst.addr[1]からアドレスrst.addr[2]はアクセス禁止領域('---'例えば0x0)、ドメインdom-0のアドレスrst.addr[2]からアドレスrst.addr[3]は読み出し専用領域('r--'例えば0x1)、ドメインdom-0のアドレスrst.addr[3]からアドレスrst.addr[4]は読み書き可能領域('rw-'例えば0x3)、ドメインdom-0のアドレスrst.addr[4]からアドレスrst.addr[5]はアクセス禁止領域('---'例えば0x0)ドメインdom-0のアドレスrst.addr[5]以降もアクセス禁止領域('---'例えば0x0)となっている。また、ドメインdom-1のアドレスrst.addr[0]からアドレスrst.addr[1]まではアクセス禁止領域('---'例えば0x0)、ドメインdom-1のrst.addr[1]からアドレスrst.addr[2]は命令領域('r-x'例えば0x5)、ドメインdom-1のアドレスrst.addr[2]からアドレスrst.addr[3]は読み出し専用領域('r--'例えば0x1)、ドメインdom-1のアドレスrst.addr[3]からアドレスrst.addr[4]はアクセス禁止領域('---'例えば0x0)、ドメインdom-1のアドレスrst.addr[4]からアドレスrst.addr[5]はRW(読み書き可例えば0x3)、ドメインdom-1のアドレスrst.addr[5]以降は全アクセス許可領域('rwx'例えば0x7)となっている。
また、ドメイン切替表29(DST)は、それぞれドメインdom-0、ドメインdom-1の入り口dst.addr[0],dst.addr[1],dst.addr[2],dst.addr[3]の場所を示している。ドメイン切替スタック27(DSS)は図4に示すとおりである。
保護ドメインと呼ぶ論理的な単位を定義し、プログラムの実行可能コードをいずれかの保護ドメインに割り当てる。同じ保護ドメインの実行可能コードに対しては、共通のアクセス許可マップを用いる。実行可能コードに欠陥や悪意のある部分が存在する際に、影響が及び範囲が保護ドメインとなる。
保護ドメインは、プログラムを構成する部品ごとの割り当てを想定しているが、関係する(製造者が同じ)複数の部品に対しひとつの保護ドメインを割り当てることも可能である。プログラムは複数のドメインを有し、プログラム部品に存在する欠陥は、各ドメイン内で隔離される。保護ドメインは番号で一意的に識別されるものとし、この識別子を以下ではドメイン番号と称す。
また、プログラムのすべての保護ドメイン間で許可属性の共通したアドレスを同じクラスとし、各アドレスをクラスに分けた後、同じクラスに属しアドレス値の連続した最大の区間を保護リージョンと称す。この定義に従ってリージョン切替表を表すと、リージョン最小性が保障される。
定義からリージョン全体の集合は、アドレス空間全体を互いに重なることなく覆い、保護ドメインと要求アドレスを与えると、アドレス区間への可能な操作が決まる。各リージョンはアドレスによる整列順序で一意的に(1対1に)識別可能であり、この識別子を以下ではリージョン番号と呼ぶ。
次に、図3を用いてアクセス検査ユニット14(ACU)の動作を制御するACU制御レジスタ30(REG)について説明する。
まず、制御レジスタ(CTR)は、アクセス検査の有無を指定するレジスタであり、プロセッサコア11からのアクセス検査オン/オフを切り替えるために使用する。アクセス検査ユニット14が例外を検出して例外ハンドラを開始する際は、アクセス検査装置14が、制御レジスタ(CTR)の値をオンからオフへ切り替える。
要求アドレスレジスタ(ADR)は、例外発生時にプロセッサコア11の要求する番地を記録するレジスタであり、アクセス検査ユニット14が書き込む。ACU管理プログラム22を実行中のプロセッサコア11が読み出す。
要求操作コードレジスタ(OPC)は、例外発生時にプロセッサコア11の要求する操作コードを記録するレジスタであり、アクセス検査ユニット14が書き込む。ACU管理プログラム22を実行中のプロセッサコア11が読み出す。
操作要求コードレジスタ(OPC)の値は、メモリ操作の種別(opc[0]::=R|W|X)と、制御移行の要因(opc[1]::=call|retn|othr)と、アクセス要求時のアドレスレジスタ番号(opc[2])の三成分を含む。メモリ操作の種別は、メモリ読み出し(R)か、メモリ書き込み(W)か、命令読み出し(X)かである。制御移行要因は、手続き呼出し(call)か、手続き戻り(retn)か、その他(othr)である。
例外コードレジスタ(INT)は、アクセス検査ユニット14が、例外検出時に更新して、例外処理コード実行中にプロセッサコア11が参照する。例外コードには、リージョン切替例外(INT1)、ドメイン切替例外(INT2)がある。
アドレス境界配列ベースレジスタ(TP1)は、リージョン切替表のアドレス配列(rst.addr[])先頭のACU制御レジスタ番号を保持するレジスタで、同じ応用プログラムを実行する間は、レジスタ値の変更は必要ない。
パーミッション配列ベースレジスタ(TP2)は、リージョン切替表のパーミッション配列(rst.perm[])先頭のACU制御レジスタ番号を保持するレジスタで、同じ応用プログラムを実行する間は、レジスタ値の変更は必要ない。
ドメイン番号レジスタ(DN1)は、応用プログラムの実行中の保護ドメインを識別するドメイン番号を保持する。保護ドメインが変化する際は、後述のドメイン切替装置25がドメイン番号レジスタを更新する。
リージョン番号レジスタ(RN#)は、プロセッサコア11のアドレスレジスタと対に、直前にアクセスしたアドレスを含むリージョン番号を保持する。アドレスがリージョン外に変化する際は、後述のリージョン切替装置24がリージョン番号レジスタを更新する。メモリアクセスに空間的な局所性が存在する場合、リージョン番号レジスタをアドレスレジスタ毎に多重化すると、リージョン切替装置24の実行回数を減らす効果がある。
リージョン切替表28のエンコード例を図5のRSTに示す。フラットなメモリ空間を覆う複数のアドレス区域(リージョン)を定め、各ドメインのメモリ領域へのアクセス可能な操作を列挙する。リージョン切替表は境界アドレスの配列rst.addr[]と許可ビットマップの配列rst.perm[]から構成される。リージョン表領域の先頭ワードは、表のサイズNを記録する。アドレス配列rst.addr[]は、リージョンの境界アドレスをアドレス値の順番に整列して格納し、配列の先頭rst.addr[0]および末尾rst.addr[M]の要素にアドレス空間の下限(32ビット番地なら0x00000000)および上限(32ビット番地なら0xffffffff)を格納する。リージョン番号iのリージョンは、rst.addr[i]以上rst.addr[i+1]未満のアドレス領域と約束する。なお、ここで用いた記号x.y[z]とは「変数xから名前yの成分を取得し、取得したyを配列と見なした時のz番目の成分」の約束とする。
ビットマップ配列rst.perm[]は、i番目要素rst.perm[i]にリージョン番号iの許可属性をビットマップ形式で格納し、ドメイン番号jに対する許可属性は同ビットマップのj番目のスロットrst.perm[i][j]に格納する。このエンコード例では、各スロットは4ビットとしドメインを8個まで記述できる。
ドメイン切替表DSTのエンコード例を図5に示す。ドメイン切替表は、アドレス配列dst.addr[]とビットマップ配列dst.perm[]から構成される。ドメイン切替表領域の先頭ワードは、表のサイズMを格納する。アドレス配列dst.addr[]は、保護ドメインの入口となるアドレス一覧をアドレスの順番に整列して格納する。成分dst.perm[k].dom及びdst.perm[k].callは、k番目の要素にエントリポイントdst.addr[k]の所属ドメイン番号および他ドメインからの呼出し可否を示すビットマップを保持する。
通常、保護ドメインのエントリポイント(入口)とは、プログラム部品が外部へ公開するインターフェイス関数アドレス(Application Programming Interfaceの開始番地)とする。
プロセッサコア11は、応用プログラム21を実行する利用者モード以外に、管理プログラム22を実行する特権モードを有し、リージョン切替装置24及びドメイン切替装置25は特権モードで実行し、特権モードではメモリへのアクセスを検査しない約束とする。アクセス検査ユニット14がフォルトを発生すると、プロセッサコア11は応用プログラム21の実行を中断し、実行モードを利用者モードから特権モードへ切り替え、あらかじめ例外ハンドラとして登録された管理プログラムを開始する。
このプロセッサへ登録する例外ハンドラは、リージョン切替装置24やドメイン切替装置25自身であるか、これら管理プログラム22をフォルトの種別に応じて起動する管理用プログラムとする。上記の特権モードにおけるアクセス検査の中断は、先程の制御レジスタCTRをオフとすれば実現可能である。
次に、図3、図6、図7、図8、図9、図10を用いてアクセス検査装置の動作ついて説明する。
図2の様に、アクセス検査ユニット14は、ACU制御レジスタ群30と、プロセッサコアの要求(図2の31)するアドレスVAと操作コードOPを入力とし動作し、例外発生時のアドレスADRと操作コードOPCと例外要因コードINTを出力とする。
図3と図6の様に、リージョン番号レジスタ(RN#)からアドレス境界値を決定し、コア要求アドレスVAがアドレス境界に含まれることを検査し、ドメイン番号レジスタの値からリージョンへの許可ビットを決定し、当該リージョンにアクセス可能なことを検査する。前段の検査に不合格となるとアドレス境界フォルト(INT1)を発生し、後段の検査に不合格となるとドメイン境界フォルト(INT2)を発生する。
図10の様に、アクセス検査ユニット14をハードウエア回路として実装し、CPUサイクルに同期して応用プログラムのアクセス違反を検査し、フォルトが発生しない限り、アクセス検査に伴う処理遅延を発生しない。
アクセス検査ユニット14は、制御レジスタCTRがオンの場合に限り、プロセッサコア11がメインメモリ19へアクセスする前に可否を判定する。アクセス検査装置14は、リージョン切替表TP1のリージョン番号RN#に対応するエントリを調べ、要求アドレスVAがリージョン境界に収まらない場合は、リージョン境界フォルト(INT1)を発生する。次に、当該アドレスVAを含むリージョンエントリのドメインDN1に対応する許可属性を調べ、要求コードOPの許可がない場合に(INT2)を発生する。例外発生時は、例外を発生した命令の要求アドレスVAをADRに、操作コードOPをOPCに保存し、例外要因をINTへ保存し、制御レジスタCTRをオフにして、プロセッサコア11へ割込みを発生する。プロセッサコア11は、応用プログラムを中断して、管理プログラム(リージョン切替装置24、ドメイン切替装置25)を開始する。なお、管理プログラムから復帰すると制御レジスタCTRをオンにし、応用プログラムを例外を発生した命令アドレスから再開する。
次に、図3、図8を用いてリージョン切替装置24の動作について説明する。
プロセッサコア11の要求するメモリ番地が、現在のリージョン番号の示すリージョン境界の外へ出ると、アクセス検査装置14がアドレス境界フォルト(INT1)を発生し、プロセッサコア11を特権モードへ切り替え、リージョン切替コードを開始する。
リージョン切替装置24は、例外発生時の要因がINT1の場合に開始され、例外発生時のコア要求アドレスADR、当該プロセスのリージョン切替表TP1を入力とし、要求アドレスADRを含む新たなリージョン番号RN#を出力する。リージョン番号を格納すべきレジスタは、コア要求操作コードOPCからプロセッサコア11のISA(命令セットアーキテクチャ)と対応したアドレスレジスタ番号により決定する。
リージョン切替装置24は、要求アドレスVAを含むリージョン番号をリージョン切替表28から二分探索を用いて検索し、新しいリージョン番号をリージョン番号レジスタRN#に設定した後、例外ハンドラから復帰する。プロセッサは、アドレス境界フォルトを発生したプログラム命令から再開する。リージョン切替装置24実行直後に再開した命令では、INT1は発生しない。
次に、図3、図8を用いてドメイン切替装置25について説明する。
ドメイン切替装置25は、例外発生時の要因コードがINT2の場合に起動され、例外発生時の要求アドレス(図3のADR)、当該プロセスのドメイン切替表29(DST)、現在のドメイン番号(図3のDN1)、ドメイン切替スタック(DSS)を入力とし、新たなドメイン番号か例外(INT3またはINT4)を出力する。
ドメイン切替装置25は、コア要求操作コードの種別が命令読み出し(op[0]=x)以外の場合はアクセス違反(INT3)と判定する。命令読み出し(x)の場合に限り、ドメイン切替の可能性がある。次に、制御移行の要因がリターン(op[1]=retn)によるとき、ドメイン切替装置は、ドメイン切替スタック27(DSS)から降ろした戻り番地と要求番地を比較し、一致の時はドメイン番号を切り替え、不一致の時はドメイン切替違反(INT4)と判定する。
制御移行の要因がコール(op[1]=call)によるとき、コア要求アドレスADRをキーにドメイン切替表29(DST)を検索(結果k)し、エントリポイントが存在し(va=e[$dn1])、かつ現ドメインから呼び出し許可である(c[k][$dn1]=1)ならば、現在のドメイン番号と関数の戻り番地をドメイン切替スタック27(DSS)に積み、エントリポイントが属するドメインに切り替え(ドメイン番号レジスタDN1を更新し)、管理プログラムを終了する。プロセッサは、ドメイン境界フォルトを発生した応用プログラムの命令を再開する。
アクセス保護違反(INT3)やドメイン切替違反(INT4)の発生時に、当該プログラムの回復制御等を行う管理プログラムが登録されている時は、リカバリ用の管理プログラムへ制御を移し、それ以外の場合はプログラムを停止する。
次に、アクセス局所性とチューニングについて、図2、図3、図4、図10を用いて説明する。
プログラム実行中にプロセッサの要求するアドレスの系列には、「先に要求したアドレスの近くを次も要求する」空間的な局所性が存在する。空間的な局所性が存在すると、レジスタ値の変化する頻度に観点からは、アドレスレジスタよりもドメイン番号レジスタ(DN1)の変化頻度は小さく、ドメイン番号レジスタよりもリージョン番号レジスタ(RN#)の変化頻度が小さくなる傾向が存在する。また、プロセッサコアのアドレスレジスタごとにリージョン番号レジスタ(RN#)を保持することで、リージョン番号を変更する頻度が少なくなる。
図2で提案するアクセス制御装置においては、アクセス検査ユニットを図10のようにハードウエア回路で実装し、CPUサイクルに同期して応用プログラムを監視するため、制御オーバーヘッドが顕在化するのは、アドレス及びドメインが変化するタイミングで管理プログラムを実行する箇所に限られるため、アクセスの局所性が強く、管理プログラム実行のための割込み頻度が低いほど、アクセス制御に伴うオーバーヘッドが小さい。極端な例として、単一のドメインを定義し、全アドレスを単一リージョンとしフルアクセス('rwx')に設定することで、一切のオーバーヘッドを生ずることなくプログラムを実行できる。
必要に応じてリージョンおよびドメインの粒度を変更すると、信頼性と性能のトレードオフを考慮することが可能となる。チューニングに際しては、アクセス制御対象となるプログラムコード自体の改変は不要であり、保護ドメインを記述したアクセス制御表のみの変更を要する。
図2のアクセス制御装置の実現において必要な機能のうち、高頻度で利用するアクセス検査ユニット14のみをハードウエア回路で実装し、各フォルト発生時の低頻度で利用するリージョン切替装置24及びドメイン切替装置25を管理プログラムとしてソフトウエアで実装することで、アクセス制御装置の実現に必要となるハードウエアの量が抑えられ、プロセッサの低コスト化や省電力化にも寄与する。
管理プログラムは、オペレーティングシステムが存在するシステム上では、オペレーティングシステム上のACUドライバ用プログラムとして登録する。オペレーティングシステムを持たないシステム上では、応用プログラムにリンクする形態と取る。
オペレーティングシステムが存在する時は、保護対象プログラムをユーザ領域メモリに読み込む際、対応するアクセス制御表を所定のディレクトリから探してカーネル領域へ読み込む。対応するアクセス制御表が存在しない場合は、標準のアクセス制御表を作成して利用する。プログラムの開始前に、リージョン番号とドメイン番号の初期値を設定し、対象プログラムに対するアクセス制御を開始する。
図11の様に、オペレーティングの存在するシステムで、別の応用プログラムを実行するなどの事情から保護対象の応用プログラムを中断する場合は、カーネル領域の当該プログラム管理ブロックに、ACU制御レジスタ群30を退避し、再開時に復元するものと約束する。なお、ACU制御レジスタのリージョン切替表RST格納領域TABに余裕がある場合は、複数の応用プログラムのRSTを同時にレジスタに配置して、RST先頭を示すレジスタ
TP1とTP2を切り替える効率的な実装も可能である。
本発明の応用例として、応用プログラムに動的にリンクして実行する拡張(プラグイン)コードに対して、あらかじめ専用のドメインを割り当て、拡張コードが呼び出すシステムコール等のエントリポイントを個別に指定することで、拡張コードに対して安全なサンドボックス実行環境を容易に実現できる。
本発明の応用例として、ドメイン切替装置24がソフトウエアで提供される場合に、システム利用者はドメイン切替コードの変更により、元のプログラムを修正することなく、ドメイン入口の関数が呼ばれるたびに実行可能なフック関数を登録することが可能である。このようなフック関数は、引数の検査を追加、プログラムのデバッグや運用時のログ保存等に有効である。
同様にドメイン切替装置24の変更により、応用プログラムの部品(構成要素)のアクセス違反が生じた場合に、プログラム内の特定のハンドルコードを呼び出すよう登録することが可能となる。この様なハンドルコードには、応用プログラムの部品単位の回復制御(リカバリハンドラ)などを記述することが可能である。
本発明のアクセス制御装置を含むコンピュータシステムの構成図。 本発明のアクセス制御装置の構成を示す機能ブロック図。 本発明のアクセス検査ユニットの制御レジスタ図。 本発明のリージョン切替表とドメイン切替表の図。 本発明のリージョン切替表とドメイン切替表の符号化例。 本発明のアクセス検査ユニット初期化装置のフローチャート。 本発明のアクセス検査ユニットの動作の流れを示すフローチャート。 本発明のリージョン切替え装置のフローチャート。 本発明のドメイン切替え装置のフローチャート。 本発明のアクセス検査ユニットの構成図。 本発明のプログラムの開始、中断及び終了の動作を示すフローチャート。
符号の説明
11・・・プロセッサコア
12・・・メモリ管理ユニット
13・・・割込みコントローラ
14・・・アクセス検査ユニット
15・・・命令/データ用キャッシュメモリ
16・・・バスインターフェイスユニット
17・・・DMAコントローラ
18・・・バス
19・・・メインメモリ
20・・・メモリコントローラ
21・・・応用プログラム
22・・・管理プログラム
23・・・ACU初期化装置
23・・・リージョン切替装置
25・・・ドメイン切替装置
26・・・アクセス制御情報
27・・・ドメイン切替スタック
28・・・リージョン切替表
29・・・ドメイン切替表
30・・・ACU制御レジスタ
31・・・コア要求信号

Claims (1)

  1. プログラムを構成する要素がアクセス可能なメモリ領域を記述したリージョン切替表及び前記プログラムを構成する要素間で制御移行可能なアドレスを記述したドメイン切替表を格納する記憶手段と、
    前記リージョン切替表と直前にアクセスしたアドレスを含むリージョンの番号と保護ドメインを識別するドメイン番号とを保持する制御レジスタと、
    前記プログラムを構成する要素が要求するメモリ操作コード及びアドレス、前記制御レジスタが保持する前記リージョンの番号及び前記ドメイン番号が入力され、前記プログラムを構成する要素が要求するアドレスが前記直前にアクセスしたアドレスを含むリージョンに含まれるかを検査し、含まれない場合にはリージョン境界フォルトを発生して前記プログラムを中断し、含まれる場合には前記ドメイン番号を調べて前記プログラムを構成する要素が要求するメモリ操作コードの許可の有無を検査し、許可がない場合にドメイン境界フォルトを発生して前記プログラムを中断するアクセス検査ユニットと、
    前記アクセス検査ユニットが前記リージョン境界フォルトまたは前記ドメイン境界フォルトを発生する場合に、前記プログラムを構成する要素が要求する前記メモリ操作コードを記録する操作コードレジスタ、及び前記アドレスを記録するアドレスレジスタと、
    前記アクセス検査ユニットが前記リージョン境界フォルトを発生する場合に、前記制御レジスタが記録する前記リージョン番号を、前記操作コードレジスタが記録する前記アドレスを含むリージョン番号に更新するリージョン切替手段と、
    前記アクセス検査ユニットが前記ドメイン境界フォルトを発生する場合に、前記アドレスレジスタが保持する前記メモリ操作コード、前記操作コードレジスタが記録する前記アドレス、前記ドメイン切替表、および前記制御レジスタが保持する前記ドメイン番号が入力され、アクセス違反およびドメイン切替違反を検出する場合にはアクセスを制限し、検出しない場合には前記制御レジスタが保持するドメイン番号を更新して前記プログラムを再開するドメイン切替手段と、
    を具備することを特徴とするメモリアクセス制御装置。
JP2005246326A 2005-08-26 2005-08-26 メモリアクセス制御装置 Expired - Fee Related JP4519738B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005246326A JP4519738B2 (ja) 2005-08-26 2005-08-26 メモリアクセス制御装置
US11/509,596 US20070050586A1 (en) 2005-08-26 2006-08-25 Memory access control apparatus
CNB2006101214554A CN100428202C (zh) 2005-08-26 2006-08-25 存储器访问控制装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005246326A JP4519738B2 (ja) 2005-08-26 2005-08-26 メモリアクセス制御装置

Publications (2)

Publication Number Publication Date
JP2007058776A JP2007058776A (ja) 2007-03-08
JP4519738B2 true JP4519738B2 (ja) 2010-08-04

Family

ID=37778524

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005246326A Expired - Fee Related JP4519738B2 (ja) 2005-08-26 2005-08-26 メモリアクセス制御装置

Country Status (3)

Country Link
US (1) US20070050586A1 (ja)
JP (1) JP4519738B2 (ja)
CN (1) CN100428202C (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307442A1 (en) * 2005-10-25 2009-12-10 Balbir Singh Memory Access Control
JP4220537B2 (ja) * 2006-06-23 2009-02-04 株式会社東芝 アクセス制御キャッシュ装置及び方法
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
KR101405319B1 (ko) * 2007-04-16 2014-06-10 삼성전자 주식회사 가상화 환경에서의 안전한 시스템 보호 장치 및 방법
US8200694B1 (en) 2007-07-23 2012-06-12 Google Inc. Identification of implicitly local queries
US9178848B1 (en) * 2007-07-23 2015-11-03 Google Inc. Identifying affiliated domains
US8788490B1 (en) 2008-06-27 2014-07-22 Google Inc. Link based locale identification for domains and domain content
US20120311285A1 (en) * 2011-06-03 2012-12-06 Ronald Dean Smith Method and System for Context Specific Hardware Memory Access Protection
US10877669B1 (en) * 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
CN102592083B (zh) * 2011-12-27 2014-12-10 深圳国微技术有限公司 用于提高soc芯片***安全的存储保护控制器及方法
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9116711B2 (en) 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9703697B2 (en) * 2012-12-27 2017-07-11 Intel Corporation Sharing serial peripheral interface flash memory in a multi-node server system on chip platform environment
US11243898B2 (en) * 2014-08-01 2022-02-08 Arm Limited Memory controller and method for controlling a memory device to process access requests issued by at least one master device
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
CN106227672B (zh) * 2016-08-10 2019-07-09 中车株洲电力机车研究所有限公司 一种嵌入式应用程序故障捕捉及处理方法
US11783064B2 (en) * 2017-07-10 2023-10-10 Intel Corporation Techniques to provide hardware enforced protection environment for a system management mode
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
TW201945971A (zh) 2018-04-30 2019-12-01 美商多佛微系統公司 用於檢查安全性能的系統和方法
GB2575878B (en) 2018-07-27 2021-06-09 Advanced Risc Mach Ltd Binary search procedure for control table stored in memory system
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11182507B2 (en) * 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
EP3877874A1 (en) 2018-11-06 2021-09-15 Dover Microsystems, Inc. Systems and methods for stalling host processor
WO2020132012A1 (en) 2018-12-18 2020-06-25 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
CN109739799A (zh) * 2018-12-29 2019-05-10 深圳市优必选科技有限公司 异构多核处理器的数据交互方法、异构多核处理器和终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212140A (ja) * 1995-02-01 1996-08-20 Hitachi Ltd メモリプロテクション方式
JPH09311821A (ja) * 1996-05-23 1997-12-02 Mitsubishi Electric Corp 記憶データ保護装置
JP2001056783A (ja) * 1999-08-18 2001-02-27 Nec Software Kobe Ltd プログラム単位メモリ属性管理方式
JP2004526237A (ja) * 2001-02-06 2004-08-26 インフィネオン テクノロジーズ アクチェンゲゼルシャフト データキャリアのためのマイクロプロセッサ回路、および、メモリ内に格納されたデータへのアクセスを組織化するための方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0425771A3 (en) * 1989-11-03 1992-09-02 International Business Machines Corporation An efficient mechanism for providing fine grain storage protection intervals
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
US6519690B1 (en) * 1999-08-23 2003-02-11 Advanced Micro Devices, Inc. Flexible address programming with wrap blocking
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212140A (ja) * 1995-02-01 1996-08-20 Hitachi Ltd メモリプロテクション方式
JPH09311821A (ja) * 1996-05-23 1997-12-02 Mitsubishi Electric Corp 記憶データ保護装置
JP2001056783A (ja) * 1999-08-18 2001-02-27 Nec Software Kobe Ltd プログラム単位メモリ属性管理方式
JP2004526237A (ja) * 2001-02-06 2004-08-26 インフィネオン テクノロジーズ アクチェンゲゼルシャフト データキャリアのためのマイクロプロセッサ回路、および、メモリ内に格納されたデータへのアクセスを組織化するための方法

Also Published As

Publication number Publication date
CN100428202C (zh) 2008-10-22
US20070050586A1 (en) 2007-03-01
CN1920797A (zh) 2007-02-28
JP2007058776A (ja) 2007-03-08

Similar Documents

Publication Publication Date Title
JP4519738B2 (ja) メモリアクセス制御装置
US9465750B2 (en) Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines
JP4759059B2 (ja) メモリページをプログラムに対応付けるページカラーリング
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
US8453015B2 (en) Memory allocation for crash dump
TWI835856B (zh) 用於範圍檢查指令的裝置、方法、電腦程式和電腦可讀儲存媒體
JP4447471B2 (ja) 安全処理システムにおける例外タイプ
RU2602793C2 (ru) Способ модификации разрешений на доступ к памяти в защищенной процессорной среде
US9626303B2 (en) Data processing apparatus and address space protection method
JP4220476B2 (ja) 安全ドメインおよび非安全ドメインを有するシステム内での仮想−物理メモリアドレスマッピング
JP2015228227A (ja) ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジック、方法、およびシステム
JPH0619798A (ja) セレクタの値のロードを回避する方法とシステム
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
GB2456200A (en) Further processor for performing secure tasks at the request of a processor in non-secure mode after set up by the processor in secure mode
JP2009157542A (ja) 情報処理装置及びそのスタックポインタ更新方法
CN103778099B (zh) 信息处理设备
CN112256396A (zh) 内存管理方法、***及安全处理装置、数据处理装置
JP2009009232A (ja) コンピュータとカーネル保護方法並びにコンピュータソフトウエア
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
KR100791815B1 (ko) 컴퓨터 시스템 및 컴퓨터 시스템에서 인스트럭션을 실행하는 방법
JP3585510B2 (ja) プログラム実行管理装置及びプログラム実行管理方法
KR20210034612A (ko) 보호 태그 손실 처리
KR20190059955A (ko) 작업 메모리 보호 방법 및 그 장치
US11150887B2 (en) Secure code patching
US11550651B2 (en) Execution circuits using discardable state

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100420

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100519

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4519738

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130528

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140528

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees