JP5914145B2 - メモリ保護回路、処理装置、およびメモリ保護方法 - Google Patents

メモリ保護回路、処理装置、およびメモリ保護方法 Download PDF

Info

Publication number
JP5914145B2
JP5914145B2 JP2012104579A JP2012104579A JP5914145B2 JP 5914145 B2 JP5914145 B2 JP 5914145B2 JP 2012104579 A JP2012104579 A JP 2012104579A JP 2012104579 A JP2012104579 A JP 2012104579A JP 5914145 B2 JP5914145 B2 JP 5914145B2
Authority
JP
Japan
Prior art keywords
memory
virtual machine
access
register
information
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.)
Active
Application number
JP2012104579A
Other languages
English (en)
Other versions
JP2013232151A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2012104579A priority Critical patent/JP5914145B2/ja
Priority to US13/859,261 priority patent/US9465750B2/en
Priority to TW102113662A priority patent/TWI603223B/zh
Priority to EP13164879.2A priority patent/EP2660752B1/en
Priority to CN201310157900.2A priority patent/CN103383667B/zh
Publication of JP2013232151A publication Critical patent/JP2013232151A/ja
Application granted granted Critical
Publication of JP5914145B2 publication Critical patent/JP5914145B2/ja
Active 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Description

本発明はメモリ保護回路、処理装置、およびメモリ保護方法に関し、例えば各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護回路、処理装置、およびメモリ保護方法に関する。
一般的に、CPU(Central Processing Unit)等の処理装置は、不正なアクセスからメモリを保護するために、メモリへのアクセスを制御するメモリ保護機構を備えている。メモリ保護機構は、メモリ空間の所定のアドレスに対して、書き込みの許可/禁止や読み込みの許可/禁止を設定することができる。メモリ保護機構としては、例えばメモリ管理ユニット(MMU:Memory Management Unit)やメモリ保護ユニット(MPU:Memory Protection Unit)がある。
また、単一の物理リソース(ハードウェア資源)を複数のリソースに見せかける仮想化技術がある。この仮想化技術を用いることで、例えば、1つのCPU上で複数の仮想マシン(VM:Virtual Machine)を動作させることができ、これにより各々の仮想マシン上で異なるオペレーティングシステム(OS:Operating System)を動作させることができる。
特許文献1には、信頼度が高いと判定された保護領域に対しては直接的なアクセスを可能にして実行効率の低下を軽減し、信頼度が低いと判定された保護領域への直接的なアクセスを不正アクセスとして抑制するメモリ保護技術が開示されている。特許文献2には、信頼性の高いコンピュータシステムを提供し、特にオペレーティングシステムのカーネルを保護する技術が開示されている。
特開2011−146030号公報 特開2009−009232号公報
背景技術で説明したように、仮想化技術を用いることで、例えば1つのCPU上で複数の仮想マシンを動作させることができる。この場合、各々の仮想マシン上では異なるOSやアプリケーションプログラムを動作させることが可能となる一方、各々の仮想マシンは単一の物理的なメモリを共有して使用するため、CPUに仮想化技術を用いるのにあわせて、各々の仮想マシンによるメモリへのアクセスが干渉しないようにする必要がある。このため、各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構を設ける必要がある。
しかしながら、メモリ保護機構として、例えばメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット(MMU)を用いると、使用するハードウェア資源が多くなるという問題がある。このため、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構(メモリ保護回路)が必要とされていた。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態にかかるメモリ保護回路は、メモリアクセス情報レジスタとアクセス判定回路とを備える。メモリアクセス情報レジスタには、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報が格納されており、アクセス判定回路は、各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよびメモリにアクセスする仮想マシンに関する情報と、メモリアクセス情報レジスタに格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定する。
一実施の形態にかかる処理装置は、各々の仮想マシンに対応したプログラムを実行する演算回路と、プログラムの実行時間を仮想マシンに対して割り当てる仮想マシンスケジューラと、各々の仮想マシンによるメモリへのアクセスを制御する前記メモリ保護回路と、を備える。
一実施の形態にかかるメモリ保護方法は、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタに格納し、各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよびメモリにアクセスする仮想マシンに関する情報と、メモリアクセス情報レジスタに格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリへのアクセスの可否を判定する。
前記一実施の形態によれば、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
実施の形態1にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。 仮想化技術を説明するための図である。 演算回路で実行される命令の処理順序の一例を説明するための図である。 実施の形態1にかかるメモリ保護回路の一例を示すブロック図である。 実施の形態1にかかるメモリ保護回路が備えるメモリ領域設定レジスタの一例を示す図である。 実施の形態1にかかるメモリ保護回路が備えるメモリ領域割当レジスタの一例を示す図である。 仮想化技術を用いて構築したシステムを説明するためのブロック図である。 実施の形態1にかかるメモリ保護回路の動作を説明するためのフローチャートである。 実施の形態2にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。 実施の形態2にかかるメモリ保護回路の一例を示すブロック図である。 実施の形態2にかかるメモリ保護回路の動作を説明するためのフローチャートである。 実施の形態3にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。 演算回路で実行される命令の処理順序の一例を説明するための図である。 実施の形態4にかかるメモリ保護回路の一例を示すブロック図である。 実施の形態5にかかるメモリ保護回路の一例を示すブロック図である。 実施の形態5にかかるメモリ保護回路が備えるメモリアクセス情報レジスタに格納されている情報の一例を示す表である。 実施の形態6にかかるメモリ保護回路の一例を示すブロック図である。 実施の形態6にかかるメモリ保護回路が備えるレジスタアクセス情報レジスタに格納されている情報の一例を示す表である。
<実施の形態1>
図1は、実施の形態1にかかるメモリ保護回路を備えた処理装置(CPU)を説明するためのブロック図である。図1に示す処理装置1は、命令バッファ2、セレクタ3、演算回路4、仮想マシンスケジューラ5、およびメモリ保護回路6_1を備える。メモリ保護回路6_1は、メモリアクセス情報レジスタ8およびアクセス判定回路9を備える。図1に示す処理装置1は、バス10を介してメモリ11と接続されている。なお、本実施の形態ではメモリ保護回路6_1が処理装置1に含まれている場合を例として説明するが、メモリ保護回路6_1は処理装置1と独立に設けられていてもよい。
命令バッファ2は、処理装置1で処理するプログラムを一時的に格納する。命令バッファ2は、命令バッファ領域BUF_0〜BUF_2を有する。各命令バッファ領域BUF_0〜BUF_2には、各仮想マシンに対応したプログラムが一時的に格納される。命令バッファ2には、例えばバス10を介して命令(プログラム)が供給されてもよく、また命令メモリ(不図示)に格納されている命令が供給されるようにしてもよい。
セレクタ3は、仮想マシンスケジューラ5が出力する仮想マシン選択信号VM_SELに応じて命令バッファ領域BUF_0〜BUF_2のいずれか1つを選択し、選択した命令バッファ領域から読み出したプログラムを演算回路4に出力する。つまり、セレクタ3は、仮想マシン選択信号VM_SELに応じて複数の仮想マシン(VM#0〜VM#2)の中から1つの仮想マシンを選択し、選択した仮想マシンで実行されるプログラムを演算回路4に出力する。ここで、各々の命令バッファ領域BUF_0〜BUF_2は、VM#0〜VM#2にそれぞれ対応している。
仮想マシンスケジューラ5は、予め設定されたスケジュールに従って、複数の仮想マシンのうち次の実行期間において実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号VM_SELを出力する。つまり、仮想マシンスケジューラ5は、命令バッファ2が備える命令バッファ領域BUF_0〜BUF_2から出力されるプログラムに対応した仮想マシンの順番をスケジューリングし、このスケジューリングに従ってプログラムが演算回路4で実行されるように、仮想マシン選択信号VM_SELを出力する。また、仮想マシンスケジューラ5は、演算回路4で実行されているプログラムに対応した仮想マシンに関する情報VM_n_Mを演算回路4を経由してメモリ保護回路6_1に出力する。
演算回路4は、セレクタ3によって選択されたプログラムに基づき演算処理を実行する。具体的には、演算回路4は複数の実行ステージを有し、パイプライン処理により演算を行う。また、演算回路4は、プログラムの実行結果に応じて、メモリ11にアクセスするためのメモリメモリアドレスADD_Mや書き込みデータWD_Mを送信し、読み込みデータRD_Mを受信する。演算回路4から送信されたメモリメモリアドレスADD_Mや書き込みデータWD_Mは、バス10を介してメモリ11に供給される。
図2は、仮想化技術を説明するための図である。仮想化技術は、単一のハードウェア資源を複数のリソースに見せかける技術である。ここでハードウェア資源21は、図1に示す処理装置(CPU)1やメモリ11、その他周辺装置等に対応している。図2に示すように、ハードウェア資源と仮想マシンとの間の階層には、ハイパーバイザが設けられている。ハイパーバイザは、複数の仮想マシン(VM#0〜VM#2)を管理する権限を有するソフトウェアである。そして、各々の仮想マシン(VM#0〜VM#2)上では、それぞれ異なるスーパバイザ(オペレーティングシステムOS#0〜OS#2)が動作する。各々のスーパバイザ(オペレーティングシステムOS#0〜OS#2)では、それぞれ異なるアプリケーションプログラム#0〜#2が動作する。このように、仮想化技術を用いることで、1つの処理装置(CPU)上で複数の仮想マシン(VM#0〜VM#2)を動作させることができ、これにより各々の仮想マシン上で異なるオペレーティングシステム(OS#0〜OS#2)を動作させることができる。
図3は、演算回路4で実行されるプログラムの処理順序の一例を説明するための図である。図3に示すプログラム#00〜#01(仮想マシン#0に対応する)は、命令バッファ2が備える命令バッファ領域BUF_0に格納されている。同様に、プログラム#10〜#11(仮想マシン#1に対応する)は、命令バッファ領域BUF_1に格納されている。プログラム#20〜#21(仮想マシン#2に対応する)は、命令バッファ領域BUF_2に格納されている。
図3では、一例として、仮想マシン(VM#0)上でプログラム#00〜#01が実行され、仮想マシン(VM#1)上でプログラム#10〜#11が実行され、仮想マシン(VM#2)上でプログラム#20〜#21が実行される場合を示している。
セレクタ3は、仮想マシンスケジューラ5から出力された仮想マシン選択信号VM_SELに応じて命令バッファ領域BUF_0〜BUF_2のうちのいずれか1つを選択し、選択した命令バッファ領域から読み出したプログラムを演算回路4に出力する。図3に示す例では、命令バッファ領域BUF_0〜BUF_2に格納されているプログラムがプログラム#00、プログラム#10、プログラム#20、プログラム#01、・・・、の順番に出力されるように、仮想マシンスケジューラ5においてスケジューリングされている場合を示している。このように、セレクタ3から出力された各プログラムを演算回路4を用いて順次実行することで、各々のプログラムを予めスケジューリングされた複数の仮想マシン(VM#0〜VM#2)のそれぞれの上で処理することができる。
なお、図3に示した仮想マシンで処理するプログラムやプログラムを処理する順序(仮想マシンスケジューリング)は一例であり、これらは任意に決定することができる。
図1に示すメモリ保護回路6_1は、メモリアクセス情報レジスタ8とアクセス判定回路9とを備える。メモリアクセス情報レジスタ8には、各々の仮想マシンがアクセス可能なメモリ11のメモリ領域に関するメモリアクセス情報が格納されている。ここで、仮想マシンがメモリ11のメモリ領域にアクセスするとは、各々の仮想マシンに対応したプログラムが演算回路4で実行された際に、演算回路4がメモリ11のメモリ領域にアクセスすることと同義である。つまり、仮想マシン(演算回路4)は、メモリ11に対してメモリメモリアドレスADD_Mや書き込みデータWD_Mを送信し、また読み込みデータRD_Mを受信することで、メモリ11のメモリ領域にアクセスする。なお、メモリ11やメモリ保護回路6_1には、メモリメモリアドレスADD_M以外にも、例えば、メモリ11へのアクセスの種類(書き込みアクセス/読み込みアクセス)に関する情報やアクセス幅(バイト/ハーフワード/ロングワード)に関する情報も送信される。
また、アクセス判定回路9(第1のアクセス判定回路)は、各々の仮想マシンがメモリ11にアクセスする際のメモリメモリアドレスADD_Mおよびメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、メモリアクセス情報レジスタ8に格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定する。
図4は、本実施の形態にかかるメモリ保護回路6_1の一例を示すブロック図である。図4に示すように、メモリアクセス情報レジスタ8は、メモリ領域割当レジスタ#0〜#3とメモリ領域設定レジスタ#0〜#3とを備える。各々のメモリ領域設定レジスタ#0〜#3には、メモリ11のメモリ領域に関するメモリ領域情報が格納されている。図4に示す例では、メモリアクセス情報レジスタ8は、4つのメモリ領域設定レジスタ#0〜#3を備えており、各々のメモリ領域設定レジスタ#0〜#3には、メモリ11の4つのメモリ領域#0〜#3に関する情報がそれぞれ格納されている。つまり、メモリ領域設定レジスタ#0〜#3は、各々のメモリ領域#0〜#3に対応して設けられている。
図5は、本実施の形態にかかるメモリ保護回路6_1が備えるメモリ領域設定レジスタ#0〜#3の一例を示す図である。図5に示すように、各々のメモリ領域設定レジスタ#0〜#3は、上限アドレスレジスタ(MPUA0〜MPUA3)、下限アドレスレジスタ(MPLA0〜MPLA3)、および属性レジスタ(MPLA0〜MPLA3)を備える。
上限アドレスレジスタ(MPUA0〜MPUA3)は、各々のメモリ領域#0〜#3の上限アドレスを格納するレジスタである。下限アドレスレジスタ(MPLA0〜MPLA3)は、各々のメモリ領域#0〜#3の下限アドレスを格納するレジスタである。例えば、メモリ11のメモリ領域としてメモリ領域#0〜#3を設定する場合、メモリ領域設定レジスタ#0の上限アドレスレジスタMPUA0にはメモリ領域#0の上限アドレスを、下限アドレスレジスタMPLA0にはメモリ領域#0の下限アドレスを格納する。メモリ領域設定レジスタ#1の上限アドレスレジスタMPUA1にはメモリ領域#1の上限アドレスを、下限アドレスレジスタMPLA1にはメモリ領域#1の下限アドレスを格納する。メモリ領域設定レジスタ#2の上限アドレスレジスタMPUA2にはメモリ領域#2の上限アドレスを、下限アドレスレジスタMPLA2にはメモリ領域#2の下限アドレスを格納する。メモリ領域設定レジスタ#3の上限アドレスレジスタMPUA3にはメモリ領域#3の上限アドレスを、下限アドレスレジスタMPLA3にはメモリ領域#3の下限アドレスを格納する。このとき、メモリ11のメモリ領域#0〜#3は、典型的には互いに重ならないように設定する。また、属性レジスタ(MPLA0〜MPLA3)は、各々のメモリ領域#0〜#3の属性(つまり、書き込みの許可/禁止や読み込みの許可/禁止)を格納するレジスタである。
図4に示すメモリアクセス情報レジスタ8が備えるメモリ領域割当レジスタ#0〜#3には、各々のメモリ領域#0〜#3に対してアクセス可能な仮想マシンに関する情報が格納されている。つまり、メモリ領域割当レジスタ#0〜#3には、各々のメモリ領域#0〜#3にアクセス可能な仮想マシン(VM#0〜VM#2)に関する情報が格納されている。
図6は、本実施の形態にかかるメモリ保護回路6_1が備えるメモリ領域割当レジスタ#0〜#3に格納されている情報の一例を示す図である。図6に示すように、各々のメモリ領域割当レジスタ#0〜#3は、メモリ領域レジスタと仮想マシンレジスタとを備える。各々のメモリ領域レジスタには、メモリ領域に関する情報(メモリ領域#0〜#3)が格納されている。また、各々の仮想マシンレジスタには、各々のメモリ領域#0〜#3にアクセス可能な仮想マシン(VM#0〜VM#2)に関する情報が格納されている。
図6に示す例では、メモリ領域割当レジスタ#0のメモリ領域レジスタにメモリ領域#0が格納され、仮想マシンレジスタに仮想マシンVM#0が格納されているので、メモリ領域#0にアクセス可能な仮想マシンとして仮想マシンVM#0が設定されている。また、メモリ領域割当レジスタ#1のメモリ領域レジスタにメモリ領域#1が格納され、仮想マシンレジスタに仮想マシンVM#0が格納されているので、メモリ領域#1にアクセス可能な仮想マシンとして仮想マシンVM#0が設定されている。また、メモリ領域割当レジスタ#2のメモリ領域レジスタにメモリ領域#2が格納され、仮想マシンレジスタに仮想マシンVM#1が格納されているので、メモリ領域#2にアクセス可能な仮想マシンとして仮想マシンVM#1が設定されている。また、メモリ領域割当レジスタ#3のメモリ領域レジスタにメモリ領域#3が格納され、仮想マシンレジスタに仮想マシンVM#2が格納されているので、メモリ領域#3にアクセス可能な仮想マシンとして仮想マシンVM#2が設定されている。
例えば、ハイパーバイザのみにメモリ領域割当レジスタ#0〜#3へのアクセス権限を認め、各々の仮想マシン(スーパバイザ)にはアクセス権限を認めないようにすることで、各々の仮想マシンがメモリ領域割当レジスタ#0〜#3の情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
また、図4に示すアクセス判定回路9は、アドレス判定回路#0〜#3、メモリアクセス判定回路#0〜#3、AND回路(AND2_0〜AND2_3)、およびOR回路(OR_1)を備える。アドレス判定回路#0〜#3は、各々のメモリ領域設定レジスタ#0〜#3に対応して設けられている。そして、アドレス判定回路#0〜#3は、各々のメモリ領域設定レジスタ#0〜#3に格納されているメモリ領域情報に基づき、各々の仮想マシンVM#0〜VM#2がメモリ11にアクセスする際に出力したメモリメモリアドレスADD_Mが各々のメモリ領域設定レジスタ#0〜#3で設定されたメモリ領域#0〜#3に含まれているか否かを判定する。
例えば、アドレス判定回路#0は、各々の仮想マシンVM#0〜VM#2がメモリ11にアクセスする際に出力したメモリメモリアドレスADD_Mと、メモリ領域設定レジスタ#0に格納されているメモリ領域#0の上限アドレスおよび下限アドレスと、を比較する。そして、当該メモリメモリアドレスADD_Mがメモリ領域#0の上限アドレスおよび下限アドレスの範囲内に含まれている場合、アドレス判定回路#0は、当該メモリメモリアドレスADD_Mがメモリ領域設定レジスタ#0で設定されたメモリ領域#0に含まれていると判定する。
例えば、アドレス判定回路#0は、メモリアドレスADD_Mがメモリ領域設定レジスタ#0で設定されたメモリ領域#0に含まれていると判定した場合、AND2_0にハイレベルの信号"1"を出力する。一方、メモリアドレスADD_Mがメモリ領域設定レジスタ#0で設定されたメモリ領域#0に含まれていないと判定した場合、AND2_0にロウレベルの信号"0"を出力する。アドレス判定回路#1〜アドレス判定回路#3についても、上記で説明したアドレス判定回路#0の場合と同様である。
メモリアクセス判定回路#0〜#3は、各々のアドレス判定回路#0〜#3に対応して設けられている。そして、各々のメモリアクセス判定回路#0〜#3は、各々のメモリ領域割当レジスタ#0〜#3に格納されている各々のメモリ領域#0〜#3に対してアクセス可能な仮想マシンに関する情報と、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、アドレス判定回路#0〜#3の判定結果をマスクする。
ここで、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mは、各々のプログラムに対応した仮想マシンの順番をスケジューリングする仮想マシンスケジューラ5から演算回路4を経由してアクセス判定回路9に供給される。つまり、仮想マシンスケジューラ5は、演算回路4で実行しているプログラムに対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ5は、メモリアクセス判定回路#0〜#3に対して、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mを出力することができる。
メモリアクセス判定回路#0は、仮想マシンスケジューラ5から出力されたメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、メモリ領域割当レジスタ#0に格納されているメモリ領域#0に対してアクセス可能な仮想マシンに関する情報と、を比較する。例えば、メモリアクセス判定回路#0は、メモリ領域設定レジスタ#0で設定されるメモリ領域#0にアクセス可能な仮想マシンVM#0と、仮想マシンスケジューラ5から出力されたメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、を比較する。
そして、メモリアクセス判定回路#0は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mが、メモリ領域割当レジスタ#0に格納されているメモリ領域#0にアクセス可能な仮想マシンVM#0と一致する場合は、仮想マシンVM#0がメモリ11にアクセス可能であると判定し、AND2_0にハイレベルの信号"1"を出力する。メモリアクセス判定回路#0から出力された信号がハイレベル"1"の場合、AND2_0は、アドレス判定回路#0から出力された判定結果をマスクすることなく、OR_1に出力する。つまり、AND2_0は、アドレス判定回路#0から出力された判定結果をそのままOR_1に出力する。
一方、メモリアクセス判定回路#0は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mが、メモリ領域割当レジスタ#0に格納されているメモリ領域#0にアクセス可能な仮想マシンVM#0と一致しない場合は、仮想マシンによるメモリ11へのアクセスが禁止されていると判定し、AND2_0にロウレベルの信号"0"を出力する。メモリアクセス判定回路#0から出力された信号がロウレベル"0"の場合、AND2_0は、アドレス判定回路#0から出力された判定結果をマスクする。このとき、AND2_0は、アドレス判定回路#0から出力された判定結果にかかわらずロウレベル"0"の信号をOR_1に出力する。
メモリアクセス判定回路#1〜#3についても、上記で説明したメモリアクセス判定回路#0の場合と同様である。また、メモリ11からデータRD_Mを読み込む場合も上記の場合と同様である。
OR_1は、AND2_0〜AND2_3から供給された信号のOR演算結果をメモリアクセス判定結果OUT_Mとして出力する。つまり、OR_1は、AND2_0〜AND2_3のうちのいずれかからハイレベルの信号が出力された場合、メモリアクセス判定結果OUT_Mとしてアクセス許可を示すハイレベルの信号を出力する。
メモリ保護回路6_1から出力されたメモリアクセス判定結果OUT_Mは、例えばバス10を介してメモリ11に供給される。メモリ11は、メモリアクセス判定結果OUT_Mがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシン(演算回路4)によるメモリ11へのアクセスを無効とする。一方、メモリ11は、メモリアクセス判定結果OUT_Mがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシン(演算回路4)によるメモリ11へのアクセスを有効とする。
なお、メモリ保護回路6_1から出力されたメモリアクセス判定結果OUT_Mは、例えば演算回路4に供給されるようにしてもよい。この場合は、演算回路4は、メモリアクセス判定結果OUT_Mがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシンによるメモリ11へのアクセスを無効として処理する。一方、演算回路4は、メモリアクセス判定結果OUT_Mがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシンによるメモリ11へのアクセスを有効として処理する。
次に、アクセス判定回路9におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンVM#0がメモリ領域#2にアクセスする場合について説明する。仮想マシンVM#0がメモリ領域#2にアクセスしようとした場合、演算回路4はアドレス判定回路#0〜#3にメモリ領域#2に対応したメモリアドレスADD_Mを出力する。また、仮想マシンスケジューラ5は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#0を示す情報VM_0_Mを演算回路4を経由してメモリアクセス判定回路#0〜#3に出力する。アドレス判定回路#0〜#3に供給されたメモリアドレスADD_Mはメモリ領域#2に対応したメモリアドレスであるので、アドレス判定回路#2はハイレベルの信号をAND2_2に出力する。一方、アドレス判定回路#2以外のアドレス判定回路#0、#1、#3はロウレベルの信号をAND2_0、AND2_1、AND2_3にそれぞれ出力する。
また、仮想マシンVM#0に対応するメモリ領域はメモリ領域#0、#1であるので(図6参照)、メモリアクセス判定回路#0、#1は、メモリ11にアクセスする仮想マシンVM#0に関する情報VM_0_Mが供給されると、ハイレベルの信号をAND2_0、AND2_1にそれぞれ出力する。一方、メモリアクセス判定回路#2、#3は、メモリ11にアクセスする仮想マシンVM#0に関する情報VM_0_Mが供給されると、ロウレベルの信号をAND2_2、AND2_3にそれぞれ出力する。
アドレス判定回路#2から出力されたハイレベルの信号は、メモリアクセス判定回路#2から出力された信号がロウレベルであるため、AND2_2によってマスクされる。このため、AND2_2からはロウレベルの信号が出力される。また、アドレス判定回路#0、#1、#3からはロウレベルの信号が出力されているので、AND2_0、AND2_1、AND2_3のそれぞれもロウレベルの信号を出力する。従って、OR_1からはメモリアクセス判定結果OUT_Mとして、アクセス禁止を示すロウレベルの信号が出力される。このようにして、仮想マシンVM#0によるメモリ領域#2へのアクセスが禁止される。
また、他の例として、仮想マシンVM#2がメモリ領域#3にアクセスする場合について説明する。仮想マシンVM#2がメモリ領域#3にアクセスしようとした場合、演算回路4はアドレス判定回路#0〜#3にメモリ領域#3に対応したメモリアドレスADD_Mを出力する。また、仮想マシンスケジューラ5は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#2を示す情報VM_2_Mを演算回路4を経由してメモリアクセス判定回路#0〜#3に出力する。アドレス判定回路#0〜#3に供給されたメモリアドレスADD_Mはメモリ領域#3に対応したメモリアドレスであるので、アドレス判定回路#3はハイレベルの信号をAND2_3に出力する。一方、アドレス判定回路#3以外のアドレス判定回路#0〜#2はロウレベルの信号をAND2_0〜AND2_2にそれぞれ出力する。
また、仮想マシンVM#2に対応するメモリ領域はメモリ領域#3であるので、メモリアクセス判定回路#3は、メモリ11にアクセスする仮想マシンVM#2に関する情報VM_2_Mが供給されると、ハイレベルの信号をAND2_3に出力する。一方、メモリアクセス判定回路#0〜#2は、メモリ11にアクセスする仮想マシンVM#2に関する情報VM_2_Mが供給されると、ロウレベルの信号をAND2_0〜AND2_2にそれぞれ出力する。
アドレス判定回路#3から出力されたハイレベルの信号は、メモリアクセス判定回路#3から出力された信号がハイレベルであるため、AND2_3によってマスクされない。よって、AND2_3からはハイレベルの信号が出力される。従って、OR_1からはメモリアクセス判定結果OUT_Mとして、アクセス許可を示すハイレベルの信号が出力される。このようにして、仮想マシンVM#2によるメモリ領域#3へのアクセスが許可される。
図7は、仮想化技術を用いて構築したシステムを説明するためのブロック図である。図7に示すように、本実施の形態にかかる処理装置(CPU)に仮想化技術を用いた場合は、単一のハードウェア資源を用いて複数の仮想マシンVM#0〜VM#2(42_0〜42_2)を動作させることができる。各々の仮想マシンVM#0〜VM#2上では、それぞれ異なるスーパバイザ43_0〜43_2(オペレーティングシステムOS#0〜OS#2)が動作する。
ハイパーバイザ41は、仮想マシンVM#0〜VM#2を管理する権限を有する。また、ハイパーバイザ41は、メモリ保護回路6_1のメモリ領域割当レジスタ#0〜#3にアクセスする権限を有する。すなわち、ハイパーバイザ41はメモリ保護回路6_1のメモリ領域割当レジスタ#0〜#3を書き換えることで、各々の仮想マシンVM#0〜VM#2がアクセス可能なメモリ領域#0〜#3を任意に設定することができる。
次に、メモリ保護回路6_1を用いて仮想マシン(演算回路4)によるメモリ11へのアクセスを制御する場合の動作について、図8を用いて説明する。なお、以下では、一例として仮想マシン(演算回路4)がメモリ11に情報を書き込む動作について説明するが、仮想マシンがメモリ11から情報を読み込む動作についても同様である。
仮想マシンスケジューラ5は、予め設定されたスケジュールに従って、実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号VM_SELをセレクタ3に出力する。また、仮想マシンスケジューラ5は、演算回路4で実行されているプログラムに対応した仮想マシンに関する情報VM_n_Mを演算回路4に出力する(ステップS1)。セレクタ3は、仮想マシン選択信号VM_SELに応じて選択された仮想マシンに対応するプログラムを演算回路4に出力する(ステップS2)。
そして、仮想マシン(演算回路4)においてプログラムが実行されると、仮想マシン(演算回路4)はメモリ11に対してアクセス要求をする(ステップS3)。仮想マシン(演算回路4)は、メモリ11へアクセス要求する際、メモリ保護回路6_1のアクセス判定回路9に対して、メモリアドレスADD_Mを出力する(ステップS4)。また、仮想マシンスケジューラ5から出力されたメモリにアクセスする仮想マシンに関する情報VM_n_Mは、演算回路4を経由してアクセス判定回路9に出力される(ステップS5)。アクセス判定回路9は、仮想マシンによるメモリ11へのアクセスの可否を判定する(ステップS6)。
すなわち、アクセス判定回路9が備えるアドレス判定回路#0〜#3は、各々のメモリ領域設定レジスタ#0〜#3に格納されているメモリ領域情報に基づき、各々の仮想マシンVM#0〜VM#2がメモリ11にアクセスする際に出力したメモリアドレスADD_Mが各々のメモリ領域設定レジスタ#0〜#3で設定されたメモリ領域#0〜#3に含まれているか否かを判定する。このとき、アドレス判定回路#0〜#3は、メモリアドレスADD_Mがメモリ領域設定レジスタ#0〜#3で設定されたメモリ領域に含まれていると判定した場合、ハイレベルの信号"1"を出力する。
また、メモリアクセス判定回路#0〜#3は、メモリ領域割当レジスタ#0〜#3に格納されている各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報と、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、アドレス判定回路#0〜#3の判定結果をマスクする。
そして、アクセス判定回路9が、仮想マシンによるメモリ11へのアクセスを許可した場合(ステップS7:Yes)、仮想マシンによるメモリ11へのアクセスが有効とされる(ステップS8)。つまり、メモリ11のメモリアドレスADD_Mに書き込みデータWD_Mが書き込まれる。一方、アクセス判定回路9が、仮想マシンによるメモリ11へのアクセスを禁止した場合(ステップS7:No)、仮想マシンによるメモリ11へのアクセスが無効とされる(ステップS9)。
すなわち、アドレス判定回路#0〜#3のうちのいずれか一つのアドレス判定回路からハイレベルの信号が出力され、且つ、当該ハイレベルの信号が出力されたアドレス判定回路に対応するメモリアクセス判定回路からハイレベルの信号が出力された場合、アクセス判定回路9は、仮想マシンによるメモリ11へのアクセスを許可する。この場合は、メモリアクセス判定結果OUT_Mとしてハイレベルの信号が出力され、仮想マシンによるメモリ11へのアクセスが有効とされる。
一方、アドレス判定回路#0〜#3のうちのいずれか一つのアドレス判定回路からハイレベルの信号が出力され、且つ、当該ハイレベルの信号が出力されたアドレス判定回路に対応するメモリアクセス判定回路からロウレベルの信号が出力された場合、アクセス判定回路9は、仮想マシンによるメモリ11へのアクセスを禁止する。この場合は、メモリアクセス判定結果OUT_Mとしてロウレベルの信号が出力され、仮想マシンによるメモリ11へのアクセスが無効とされる。
背景技術で説明したように、仮想化技術を用いることで、例えば1つのCPU上で複数の仮想マシンを動作させることができる。この場合、各々の仮想マシン上では異なるOSやアプリケーションプログラムを動作させることが可能となる一方、各々の仮想マシンは単一の物理的なメモリを共有して使用するため、CPUに仮想化技術を用いるのにあわせて、各々の仮想マシンによるメモリへのアクセスが干渉しないようにする必要があった。このため、各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構を設ける必要があった。
しかしながら、メモリ保護機構として、例えばメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット(MMU)を用いると、使用するハードウェア資源が多くなるという問題があった。このため、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護機構(メモリ保護回路)が必要とされていた。
そこで本実施の形態にかかるメモリ保護回路6_1では、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタ8に格納している。更に、アクセス判定回路9を用いて、各々の仮想マシンがメモリ11にアクセスする際のメモリアドレスADD_Mおよびメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、メモリアクセス情報レジスタ8に格納されているメモリアクセス情報と、に基づき、仮想マシンによるメモリ領域へのアクセスの可否を判定している。よって、本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路を提供することができる。
例えば、処理装置(CPU)には、パーソナルコンピュータ等に用いられるマイクロプロセッサと、搭載される電子機器の制御に機能が特化されているマイクロコントローラとがある。マイクロプロセッサは比較的大容量のメモリを扱うため、メモリ保護機構としてメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット(MMU)を搭載する場合が多い。
メモリ管理ユニット(MMU)は、マイクロプロセッサから仮想アドレスを受け取り、仮想アドレスを物理アドレスに変換する。昨今のメモリ管理ユニット(MMU)では、仮想アドレスから物理アドレスへの変換を高速化するために、TLB(Translation Lookaside Buffer)を備えている。TLBは、仮想アドレスから物理アドレスに変換する際に用いられるページテーブルエントリを有する。仮想アドレス空間はプロセスから見えるメモリ空間であり、この空間は固定サイズのページに分割されている。ページテーブルには、仮想ページと物理メモリ上の位置とを対応づけた情報が格納されている。
マイクロプロセッサがメモリ空間にアクセスする際、仮想アドレスを用いてTLBを検索し、TLBに当該仮想アドレスに対応するエントリがあれば、検索結果として対応する物理アドレスを返す(TLBヒット)。一方、TLBに当該仮想アドレスに対応するエントリがなければ(TLBミスヒット)、メモリに格納されているページテーブル(TLBに収まらないページテーブルエントリを保存する空間)から対応するエントリを検索する必要がある。これをテーブルウォークという。テーブルウォークによって物理アドレスを取得した後、仮想アドレスと物理アドレスのマッピングがTLBに格納される。テーブルウォークは複数個所のメモリの内容を読み取り、そこから物理アドレスを計算する必要があるため、処理に時間がかかる。
一方、マイクロコントローラは搭載される電子機器の制御に機能が特化されているため、大容量のメモリを搭載する必要がなく、また仮想アドレスを物理アドレスに変換するアドレス変換機能も不要である。また、マイクロコントローラでは省電力、小面積が求められている。このため、マイクロコントローラのメモリ保護機構として、メモリ管理ユニット(MMU)を搭載するとハードウェア資源のオーバーヘッドが大きくなる。
また、マイクロコントローラは電子機器の制御に用いられるため、リアルタイム性が重要となる。しかし、マイクロコントローラのメモリ保護機構としてメモリ管理ユニット(MMU)を搭載すると、TLBミスヒット時にテーブルウォークが発生し、処理に時間がかかるためリアルタイム性が損なわれる。
よって、マイクロコントローラのメモリ保護機構としては、アドレス変換機能を備えないメモリ保護ユニット(MPU)を用いるほうが、アドレス変換機能を備えるMMUを用いるよりも好ましい。このため、本実施の形態にかかるメモリ保護回路は、省電力、小面積、リアルタイム性が重視されるマイクロコントローラに特に適しているといえる。すなわち、本実施の形態において、演算回路4から出力されるメモリアドレスADD_Mは物理アドレスであるため、メモリ保護回路6_1は物理アドレスをアドレス変換することなくメモリ11に出力することができる。
なお、本実施の形態にかかるメモリ保護回路は、アドレス変換機能を備えたメモリ保護回路への適用を妨げるものではなく、例えばアドレス変換機能を備えるメモリ管理ユニット(MMU)を搭載したマイクロプロセッサにも適用することができる。更に、本実施の形態にかかるメモリ保護回路は、例えばアドレス変換機能が不要なマイクロプロセッサにも適用することができる。
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
<実施の形態2>
次に、実施の形態2について説明する。図9は、本実施の形態にかかるメモリ保護回路を備えた処理装置を説明するためのブロック図である。本実施の形態では、メモリ保護回路6_2がレジスタI/F(7)を備えている点が、実施の形態1で説明したメモリ保護回路と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
図9に示す処理装置1は、命令バッファ2、セレクタ3、演算回路4、仮想マシンスケジューラ5、およびメモリ保護回路6_2を備える。メモリ保護回路6_2は、レジスタI/F(7)、メモリアクセス情報レジスタ8、およびアクセス判定回路9を備える。
図10は、本実施の形態にかかるメモリ保護回路6_2の一例を示すブロック図である。レジスタI/F(7)は、アクセスデコード回路30、レジスタアクセス判定回路#0〜#3、およびAND回路(AND1_0〜AND1_3)を備える。各々の仮想マシンは、メモリ領域設定レジスタ#0〜#3にアクセスすることで、メモリ領域設定レジスタ#0〜#3の上限アドレスレジスタ(MPUA0〜MPUA3)、下限アドレスレジスタ(MPLA0〜MPLA3)、および属性レジスタ(MPLA0〜MPLA3)にデータを書き込んだり、読み込んだりすることができる。レジスタI/F(7)は、各々の仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスを制御する回路である。
仮想マシンがメモリ領域設定レジスタ#0〜#3にアクセスする際、仮想マシン(演算回路4)は、レジスタI/F(7)に対してレジスタアドレスADD_Rや書き込みデータWD_Rを送信する。また、仮想マシンスケジューラ5は、演算回路4で実行されているプログラムに対応した仮想マシンに関する情報VM_n_MをレジスタI/F(7)に出力する。ここで、仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスは、演算回路4で実行されるプログラムに従い行われる。
アクセスデコード回路30は、仮想マシン(演算回路4)から出力されたレジスタアドレスADD_Rおよび書き込みデータWD_Rを受信し、受信したレジスタアドレスADD_Rに対応したメモリ領域設定レジスタ#0〜#3(つまり、AND1_0〜AND1_3)にレジスタアドレスADD_Rおよび書き込みデータWD_Rを出力する。すなわち、各々のメモリ領域設定レジスタ#0〜#3は、それぞれ異なるレジスタアドレスADD_Rを備えており、アクセスデコード回路30は、受信したレジスタアドレスADD_Rに応じて、メモリ領域設定レジスタ#0〜#3へのアクセスを制御する。
例えば、アクセスデコード回路30は、入力されるレジスタアドレスADD_R、書き込みデータWD_Rの情報から、アドレス情報と書き込むデータの情報を分離し、メモリ領域設定レジスタ#0〜#3に、あるいは、その手前にあるAND1_0〜AND1_3に、適切に情報が入力されるようデコードを行っている。
レジスタアクセス判定回路#0〜#3は、各々のメモリ領域設定レジスタ#0〜#3に対応して設けられている。そして、各々のレジスタアクセス判定回路#0〜#3は、各々のメモリ領域割当レジスタ#0〜#3に格納されているメモリ領域設定レジスタ#0〜#3にアクセス可能な仮想マシンに関する情報と、メモリ領域設定レジスタ#0〜#3にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスの可否を判定する。
ここで、各々のメモリ領域設定レジスタ#0〜#3にアクセスする仮想マシンに関する情報VM_n_Mは、各々のプログラムに対応した仮想マシンの順番をスケジューリングする仮想マシンスケジューラ5から演算回路4を経由してレジスタアクセス判定回路#0〜#3に供給される。つまり、仮想マシンスケジューラ5は、演算回路4で実行しているプログラムに対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ5は、レジスタアクセス判定回路#0〜#3に対して、各々のメモリ領域設定レジスタ#0〜#3にアクセスする仮想マシンに関する情報VM_n_Mを出力することができる。
レジスタアクセス判定回路#0は、仮想マシンスケジューラ5から出力されたメモリ領域設定レジスタ#0〜#3にアクセスする仮想マシンに関する情報VM_n_Mと、メモリ領域割当レジスタ#0〜#3に格納されている各々のメモリ領域#0〜#3(つまり、メモリ領域設定レジスタ#0〜#3に対応している)に対してアクセス可能な仮想マシンに関する情報(図6参照)と、を比較する。例えば、レジスタアクセス判定回路#0は、メモリ領域#0に対応するメモリ領域設定レジスタ#0にアクセス可能な仮想マシンVM#0と、仮想マシンスケジューラ5から出力されたメモリ領域設定レジスタにアクセスする仮想マシンに関する情報VM_n_Mと、を比較する。
そして、レジスタアクセス判定回路#0は、メモリ領域設定レジスタにアクセスする仮想マシンに関する情報VM_n_Mが、メモリ領域割当レジスタ#0に格納されているメモリ領域#0にアクセス可能な仮想マシンVM#0と一致する場合は、仮想マシンVM#0がメモリ領域設定レジスタ#0にアクセス可能であると判定し、AND1_0にハイレベルの信号"1"を出力する。レジスタアクセス判定回路#0から出力された信号がハイレベル"1"である場合、AND1_0は、アクセスデコード回路30から出力されたレジスタアドレスADD_Rおよび書き込みデータWD_Rをマスクすることなく、メモリ領域設定レジスタ#0に出力する。つまり、AND1_0は、アクセスデコード回路30から出力されたレジスタアドレスADD_Rおよび書き込みデータWD_Rをそのままメモリ領域設定レジスタ#0に出力する。
一方、レジスタアクセス判定回路#0は、メモリ領域設定レジスタにアクセスする仮想マシンに関する情報VM_n_Mが、メモリ領域割当レジスタ#0に格納されているメモリ領域#0にアクセス可能な仮想マシンVM#0と一致しない場合は、仮想マシンによるメモリ領域設定レジスタ#0へのアクセスが禁止されていると判定し、AND1_0にロウレベルの信号"0"を出力する。レジスタアクセス判定回路#0から出力された信号がロウレベル"0"である場合、AND1_0は、アクセスデコード回路30から出力されたレジスタアドレスADD_Rおよび書き込みデータWD_Rをマスクする。
なお、レジスタアクセス判定回路#1〜#3についても、上記で説明したレジスタアクセス判定回路#0の場合と同様である。
次に、メモリ保護回路6_2の動作について説明する。図11は、本実施の形態にかかるメモリ保護回路6_2の動作を説明するためのフローチャートであり、仮想マシンがメモリ領域設定レジスタ#0〜#3の情報を書き換える場合のフローを示している。
仮想マシンスケジューラ5は、予め設定されたスケジュールに従って、実行時間が割り当てられる仮想マシンを指定する仮想マシン選択信号VM_SELをセレクタ3に出力する。また、仮想マシンスケジューラ5は、演算回路4で実行されているプログラムに対応した仮想マシンに関する情報VM_n_Mを演算回路4に出力する(ステップS11)。セレクタ3は、仮想マシン選択信号VM_SELに応じて選択された仮想マシンに対応するプログラムを演算回路4に出力する(ステップS12)。
そして、仮想マシン(演算回路4)において、メモリ領域設定レジスタ#0〜#3への書き込みを指示するプログラムが実行される(ステップS13)。メモリ領域設定レジスタ#0〜#3への書き込みを指示するプログラムが実行されると、仮想マシン(演算回路4)は、メモリ保護回路6_2のレジスタI/F(7)に対して、レジスタアドレスADD_Rおよび書き込みデータWD_Rを出力する(ステップS14)。
アクセスデコード回路30は、アクセスデコード処理を実施する(ステップS15)。すなわち、アクセスデコード回路30は、仮想マシン(演算回路4)から出力されたレジスタアドレスADD_Rおよび書き込みデータWD_Rを受信し、受信したレジスタアドレスADD_Rに対応したメモリ領域設定レジスタ#0〜#3(つまり、AND1_0〜AND1_3)にレジスタアドレスADD_Rおよび書き込みデータWD_Rを出力する。
また、仮想マシンスケジューラ5から出力されたメモリ領域設定レジスタ#0〜#3 にアクセスする仮想マシンに関する情報VM_n_Mは、演算回路4を経由してレジスタI/F(7)に出力される(ステップS16)。
次に、レジスタアクセス判定回路#0〜#3は、レジスタアクセス判定処理を実施する(ステップS17)。すなわち、レジスタアクセス判定回路#0〜#3は、メモリ領域割当レジスタ#0〜#3に格納されている各々のメモリ領域設定レジスタ#0〜#3にアクセス可能な仮想マシンに関する情報と、メモリ領域設定レジスタ#0〜#3にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスの可否を判定する。
そして、レジスタアクセス判定回路#0〜#3が仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスを許可している場合(ステップS18:Yes)、仮想マシン(演算回路4)は、レジスタアドレスADD_Rおよび書き込みデータWD_Rを用いてメモリ領域設定レジスタ#0〜#3への書き込みを実行する(ステップS19)。
一方、レジスタアクセス判定回路#0〜#3が仮想マシンによるメモリ領域設定レジスタ#0〜#3へのアクセスを禁止している場合(ステップS18:No)、仮想マシン(演算回路4)によるメモリ領域設定レジスタ#0〜#3への書き込みは禁止される(ステップS20)。
なお、メモリ保護回路6_2が備えるメモリアクセス情報レジスタ8およびアクセス判定回路9の構成および動作についても実施の形態1の場合と同様である。
<実施の形態3>
次に、実施の形態3について説明する。図12は、本実施の形態にかかるメモリ保護回路を備えた処理装置21を説明するためのブロック図である。本実施の形態では、命令バッファ22、セレクタ23、仮想マシン・スレッドスケジューラ25の構成が実施の形態1および2と異なる。これ以外は実施の形態1と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
図12に示す処理装置21は、命令バッファ22、セレクタ23、演算回路4、仮想マシン・スレッドスケジューラ25、およびメモリ保護回路6_1を備える。メモリ保護回路6_1は、メモリアクセス情報レジスタ8およびアクセス判定回路9を備える。
命令バッファ22は、処理装置21で処理する命令を一時的に格納する。命令バッファ22は、命令バッファ領域BUF_A〜BUF_Dを有する。各命令バッファ領域BUF_A〜BUF_Dには、各スレッドに対応した命令が一時的に格納される。命令バッファ22には、例えばバス10を介して命令が供給されてもよく、また命令メモリ(不図示)に格納されている命令が供給されるようにしてもよい。
セレクタ23は、仮想マシン・スレッドスケジューラ25が出力するスレッド選択信号T_SELに応じて命令バッファ領域BUF_A〜BUF_Dのいずれか1つを選択し、選択した命令バッファ領域から読み出した命令を演算回路4に出力する。つまり、セレクタ23は、スレッド選択信号T_SELに応じて複数のスレッド(スレッドA〜スレッドD)の中から1つのスレッドを選択し、選択したスレッドが出力する命令を演算回路4に出力する。ここで、各々の命令バッファ領域BUF_A〜BUF_Dは、スレッドA〜スレッドDにそれぞれ対応している。
仮想マシン・スレッドスケジューラ25は、予め設定されたスケジュールに従って、複数のスレッドのうち次の実行サイクルにおいて実行される1つのスレッドを指定するスレッド選択信号T_SELを出力する。つまり、仮想マシン・スレッドスケジューラ25は、命令バッファ22が備える命令バッファ領域BUF_A〜BUF_Dから出力される命令の順番をスケジューリングし、このスケジューリングに従って命令が演算回路4で実行されるように、スレッド選択信号T_SELを出力する。また、仮想マシン・スレッドスケジューラ25は、演算回路4で実行されている命令に対応した仮想マシンに関する情報VM_n_Mを演算回路4を経由してメモリ保護回路6_1に出力する。
演算回路4は、セレクタ23によって選択された命令に基づき演算処理を実行する。具体的には、演算回路4は複数の実行ステージを有し、パイプライン処理により演算を行う。また、演算回路4は、命令の実行結果に応じて、メモリ11にアクセスするためのメモリアドレスADD_Mや書き込みデータWD_Mを送信し、読み込みデータRD_Mを受信する。演算回路4から送信されたメモリアドレスADD_Mや書き込みデータWD_Mは、バス10を介してメモリ11に供給される。
図13は、演算回路4で実行される命令の処理順序の一例を説明するための図である。図13に示す命令A0〜A7(スレッドAに対応する)は、命令バッファ22が備える命令バッファ領域BUF_Aに格納されている。同様に、命令B0〜B7(スレッドBに対応する)は、命令バッファ領域BUF_Bに格納されている。命令C0〜C7(スレッドCに対応する)は、命令バッファ領域BUF_Cに格納されている。命令D0〜D7(スレッドDに対応する)は、命令バッファ領域BUF_Dに格納されている。
図13では、一例として、仮想マシン(VM#0)上で命令A0〜A7(スレッドA)および命令B0〜B7(スレッドB)が実行され、仮想マシン(VM#1)上で命令C0〜C7(スレッドC)が実行され、仮想マシン(VM#2)上で命令D0〜D7(スレッドD)が実行される場合を示している。
セレクタ23は、仮想マシン・スレッドスケジューラ25から出力されたスレッド選択信号T_SELに応じて命令バッファ領域BUF_A〜BUF_Dのうちのいずれか1つを選択し、選択した命令バッファ領域から読み出した命令を演算回路4に出力する。図13に示す例では、命令バッファ領域BUF_A〜BUF_Dに格納されている命令が命令A0、命令B0、命令C0、命令D0、命令A1、・・・、の順番に出力されるように、仮想マシン・スレッドスケジューラ25においてスケジューリングされている場合を示している。このように、セレクタ23から出力された各命令を演算回路4を用いて順次実行することで、各々の命令を複数の仮想マシン(VM#0〜VM#2)上で並列処理することができる。
なお、図13に示した仮想マシンで処理する命令(スレッド)や命令を処理する順序(スレッドスケジューリング)は一例であり、これらは任意に決定することができる。
実施の形態1および2では仮想マシンスケジューラ5が、予め設定されたスケジュールに従って、複数の仮想マシンのうち次の実行期間において実行時間が割り当てられる仮想マシンを指定していた。つまり、仮想マシンスケジューラ5は、命令バッファ2が備える命令バッファ領域BUF_0〜BUF_2から出力されるプログラムに対応した仮想マシンの順番をスケジューリングし、このスケジューリングに従ってプログラムが演算回路4で実行されるように、仮想マシン選択信号VM_SELを出力していた。
これに対して本実施の形態では、仮想マシン・スレッドスケジューラ25が、予め設定されたスケジュールに従って、複数のスレッドのうち次の実行サイクルにおいて実行される1つのスレッドを指定する。つまり、仮想マシン・スレッドスケジューラ25は、命令バッファ22が備える命令バッファ領域BUF_A〜BUF_Dから出力される命令の順番をスケジューリングし、このスケジューリングに従って命令が演算回路4で実行されるように、スレッド選択信号T_SELを出力している。このとき、仮想マシン・スレッドスケジューラ25は、演算回路4で実行されている命令に対応した仮想マシンに関する情報VM_n_Mを演算回路4を経由してメモリ保護回路6_1に出力している。
これ以外の構成および動作については、実施の形態1および2で説明した場合と同様であるので、重複した説明は省略する。
<実施の形態4>
次に、実施の形態4について説明する。本実施の形態にかかるメモリ保護回路では、メモリ領域設定レジスタ#0〜#3へのアクセス権限をハイパーバイザのみに認めている点が、実施の形態1乃至3にかかるメモリ保護回路6_1〜6_2と異なる。これ以外は実施の形態1乃至3と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は省略する。
図14は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図14に示すように、本実施の形態にかかるメモリ保護回路6_3は、メモリアクセス情報レジスタ51とアクセス判定回路9とを備える。メモリアクセス情報レジスタ51は、メモリ領域割当レジスタ#0〜#3とメモリ領域設定レジスタ#0〜#3とを備える。また、アクセス判定回路9は、アドレス判定回路#0〜#3、メモリアクセス判定回路#0〜#3、AND回路(AND2_0〜AND2_3)、およびOR回路(OR_1)を備える。なお、アクセス判定回路9の構成および動作については、実施の形態1で説明したアクセス判定回路9と同様であるので重複した説明は省略する。
メモリアクセス情報レジスタ51が備えるメモリ領域割当レジスタ#0〜#3には、各々のメモリ領域#0〜#3に対してアクセス可能な仮想マシンに関する情報が格納されている。また、各々のメモリ領域設定レジスタ#0〜#3には、メモリ11のメモリ領域#0〜#3に関するメモリ領域情報が格納されている。そして、本実施の形態にかかるメモリ保護回路6_3では、メモリ領域割当レジスタ#0〜#3のアクセス権限に加えて、メモリ領域設定レジスタ#0〜#3のアクセス権限についても、ハイパーバイザ41に認めている。
すなわち、実施の形態1と同様に、ハイパーバイザ41のみにメモリ領域割当レジスタ#0〜#3へのアクセス権限を認め、各々の仮想マシン(スーパバイザ)にはアクセス権限を認めないことで、各々の仮想マシンがメモリ領域割当レジスタ#0〜#3の情報を自由に書き換えることを抑制することができる。更に、本実施の形態にかかるメモリ保護回路6_3では、ハイパーバイザ41のみにメモリ領域設定レジスタ#0〜#3へのアクセス権限を認め、各々の仮想マシン(スーパバイザ)にはアクセス権限を認めないことで、各々の仮想マシンがメモリ領域設定レジスタ#0〜#3の情報を書き換えることを抑制することができる。このような構成とすることで、ハイパーバイザが各々の仮想マシンが使用するメモリ領域をより厳しく管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することをより確実に抑制することができる。
なお、メモリアクセス情報レジスタ51の上記以外の構成および動作については、実施の形態1で説明したメモリアクセス情報レジスタ8と同様であるので重複した説明は省略する。
本実施の形態においても、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
<実施の形態5>
次に、実施の形態5について説明する。本実施の形態にかかるメモリ保護回路では、メモリアクセス情報レジスタおよびアクセス判定回路の構成および動作が、実施の形態1乃至3で説明したメモリ保護回路6_1〜6_2が備えるメモリアクセス情報レジスタ8およびアクセス判定回路9と異なる。これ以外は実施の形態1乃至3と同様であるので、重複した説明は適宜省略する。
図15は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図15に示すように、本実施の形態にかかるメモリ保護回路6_4は、メモリアクセス情報レジスタ61とアクセス判定回路62とを有する。アクセス判定回路62は、アドレス判定回路63とメモリアクセス判定回路64とを有する。
メモリアクセス情報レジスタ61には、各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報が格納されている。図16は、本実施の形態にかかるメモリ保護回路6_4が備えるメモリアクセス情報レジスタ61に格納されている情報の一例を示す表である。図16に示すように、メモリアクセス情報レジスタ61には、メモリ領域#0〜#3と、当該メモリ領域#0〜#3に対応するアドレス範囲と、当該メモリ領域#0〜#3にアクセス可能な仮想マシンに関する情報が格納されている。図16に示すように、メモリ領域#0のアドレス範囲はアドレスa〜アドレスbであり、メモリ領域#0には仮想マシンVM#0がアクセスすることができる。メモリ領域#1のアドレス範囲はアドレスc〜アドレスdであり、メモリ領域#1には仮想マシンVM#0がアクセスすることができる。メモリ領域#2のアドレス範囲はアドレスe〜アドレスfであり、メモリ領域#2には仮想マシンVM#1がアクセスすることができる。メモリ領域#3のアドレス範囲はアドレスg〜アドレスhであり、メモリ領域#3には仮想マシンVM#2がアクセスすることができる。
なお、メモリアクセス情報レジスタ61へのアクセス権限をハイパーバイザのみに認め、各々の仮想マシン(スーパバイザ)にはアクセス権限を認めないことで、各々の仮想マシンがメモリアクセス情報レジスタ61に格納されているメモリアクセス情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
アクセス判定回路62が備えるアドレス判定回路63は、メモリアクセス情報レジスタ61に格納されているメモリアクセス情報に基づき、各々の仮想マシンがメモリ11にアクセスする際に出力したメモリアドレスADD_Mに対応するメモリ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M'を出力する。
例えば、アドレス判定回路63は、各々の仮想マシンVM#0〜VM#2がメモリ11にアクセスする際に出力したメモリアドレスADD_Mと、メモリアクセス情報レジスタ61に格納されているメモリアクセス情報(具体的には、図16のアドレス範囲)と、を比較する。そして、メモリアドレスADD_Mが含まれているアドレス範囲に対応する仮想マシンに関する情報VM_n_M'をメモリアクセス判定回路64に出力する。例えば、アドレス判定回路63は、メモリアドレスADD_Mがアドレスa〜アドレスbの範囲に含まれている場合、当該アドレス範囲に対応する仮想マシンVM#0に関する情報VM_0_M'をメモリアクセス判定回路64に出力する。
メモリアクセス判定回路64は、アドレス判定回路63から出力されたメモリ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M'と、各々の仮想マシンがメモリ11にアクセスする際に出力したメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、仮想マシンによるメモリ11へのアクセスの可否を判定する。
ここで、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mは、仮想マシンスケジューラ5(図1参照)や仮想マシン・スレッドスケジューラ25(図12参照)から供給される。つまり、仮想マシンスケジューラ5(実施の形態3の場合は、仮想マシン・スレッドスケジューラ25)は、演算回路4で実行している命令に対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ5は、メモリアクセス判定回路64に対して、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mを出力することができる。
メモリアクセス判定回路64は、仮想マシンスケジューラ5から出力されたメモリ11にアクセスする仮想マシンに関する情報VM_n_Mと、アドレス判定回路63から出力されたメモリ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M'と、を比較する。そして、仮想マシンスケジューラ5から出力されたVM_n_Mとアドレス判定回路63から出力されたVM_n_M'とが一致する場合は、仮想マシンがメモリ11にアクセス可能であると判定し、メモリアクセス判定結果OUT_Mとしてアクセス許可を示すハイレベルの信号を出力する。一方、仮想マシンスケジューラ5から出力されたVM_n_Mとアドレス判定回路63から出力されたVM_n_M'とが一致しない場合は、仮想マシンによるメモリ11へのアクセスが禁止されていると判定し、メモリアクセス判定結果OUT_Mとしてアクセス禁止を示すロウレベルの信号を出力する。
メモリ保護回路6_4から出力されたメモリアクセス判定結果OUT_Mは、例えば図1に示すバス10を介してメモリ11に供給される。メモリ11は、メモリアクセス判定結果OUT_Mがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシン(演算回路4)によるメモリ11へのアクセスを無効とする。一方、メモリ11は、メモリアクセス判定結果OUT_Mがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシン(演算回路4)によるメモリ11へのアクセスを有効とする。
なお、メモリ保護回路6_4から出力されたメモリアクセス判定結果OUT_Mは、例えば演算回路4に供給されるようにしてもよい。この場合は、演算回路4は、メモリアクセス判定結果OUT_Mがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシンによるメモリ11へのアクセスを無効として処理する。一方、演算回路4は、メモリアクセス判定結果OUT_Mがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシンによるメモリ11へのアクセスを有効として処理する。
次に、アクセス判定回路62におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンVM#0がメモリ領域#2にアクセスした場合について説明する。仮想マシンVM#0がメモリ領域#2にアクセスしようとした場合、演算回路4はアドレス判定回路63にメモリ領域#2に対応したメモリアドレスADD_Mを出力する。アドレス判定回路63は、当該メモリアドレスADD_Mがメモリ領域#2に対応するアドレス範囲(アドレスe〜アドレスf)に含まれているので、当該アドレス範囲に対応する仮想マシンVM#1に関する情報VM_1_M'をメモリアクセス判定回路64に出力する。
また、仮想マシンスケジューラ5は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#0を示す情報VM_0_Mをメモリアクセス判定回路64に出力する。メモリアクセス判定回路64は、仮想マシンスケジューラ5から出力されたメモリ11にアクセスする仮想マシンVM#0に関する情報VM_0_Mと、アドレス判定回路63から出力されたメモリ領域#2へのアクセスが許可されている仮想マシンVM#1に関する情報VM_1_M'と、を比較する。
この場合は、仮想マシンスケジューラ5から出力されたVM_0_Mとアドレス判定回路63から出力されたVM_1_M'とが一致しないので、メモリアクセス判定回路64は、仮想マシンVM#0によるメモリ領域#2へのアクセスが禁止されていると判定し、メモリアクセス判定結果OUT_Mとしてアクセス禁止を示すロウレベルの信号を出力する。このようにして、仮想マシンVM#0によるメモリ領域#2へのアクセスが禁止される。
また、他の例として、仮想マシンVM#2がメモリ領域#3にアクセスする場合について説明する。仮想マシンVM#2がメモリ領域#3にアクセスしようとした場合、演算回路4はアドレス判定回路63にメモリ領域#3に対応したメモリアドレスADD_Mを出力する。アドレス判定回路63は、当該メモリアドレスADD_Mがメモリ領域#3に対応するアドレス範囲(アドレスg〜アドレスh)に含まれているので、当該アドレス範囲に対応する仮想マシンVM#2に関する情報VM_2_M'をメモリアクセス判定回路64に出力する。
また、仮想マシンスケジューラ5は、メモリ11にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#2を示す情報VM_2_Mをメモリアクセス判定回路64に出力する。メモリアクセス判定回路64は、仮想マシンスケジューラ5から出力されたメモリ11にアクセスする仮想マシンVM#2に関する情報VM_2_Mと、アドレス判定回路63から出力されたメモリ領域#3へのアクセスが許可されている仮想マシンVM#2に関する情報VM_2_M'と、を比較する。
この場合は、仮想マシンスケジューラ5から出力されたVM_2_Mとアドレス判定回路63から出力されたVM_2_M'とが一致するので、メモリアクセス判定回路64は、仮想マシンVM#2によるメモリ領域#3へのアクセスが許可されていると判定し、メモリアクセス判定結果OUT_Mとしてアクセス許可を示すハイレベルの信号を出力する。このようにして、仮想マシンVM#2によるメモリ領域#3へのアクセスが許可される。
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
<実施の形態6>
次に、実施の形態6について説明する。本実施の形態にかかるメモリ保護回路では、実施の形態5で説明したメモリ保護回路6_4にレジスタI/Fが追加されている点が実施の形態5と異なる。これ以外は実施の形態5と同様であるので、重複した説明は適宜省略する。
図17は、本実施の形態にかかるメモリ保護回路の一例を示すブロック図である。図17に示すように、本実施の形態にかかるメモリ保護回路6_5は、レジスタI/F(71)、メモリアクセス情報レジスタ61、およびアクセス判定回路62を有する。ここで、メモリアクセス情報レジスタ61およびアクセス判定回路62の構成および動作については、実施の形態5で説明したメモリアクセス情報レジスタ61およびアクセス判定回路62と同様であるので重複した説明は省略する。
本実施の形態にかかるメモリ保護回路6_5では、メモリアクセス情報レジスタ61に格納されているメモリアクセス情報の一部を各々の仮想マシンが書き換えることができる。各々の仮想マシンによるメモリアクセス情報レジスタ61へのアクセスはレジスタI/F(71)によって制限される。以下で詳細に説明する。
レジスタI/F(71)は、レジスタアクセス情報レジスタ72、レジスタアドレス判定回路73、およびレジスタアクセス判定回路74を備える。レジスタアクセス情報レジスタ72には、各々の仮想マシンがアクセス可能なメモリアクセス情報レジスタ領域に関するレジスタアクセス情報が格納されている。ここで、メモリアクセス情報レジスタ領域とは、メモリアクセス情報レジスタ61が備える複数のレジスタ領域である。
図18は、本実施の形態にかかるメモリ保護回路6_5が備えるレジスタアクセス情報レジスタ72に格納されている情報の一例を示す表である。図18に示すように、レジスタアクセス情報レジスタ72には、メモリ領域#0〜#3と、各々のメモリ領域#0〜#3に関する情報が格納されているレジスタアドレス範囲と、メモリ領域#0〜#3にアクセス可能な仮想マシンに関する情報とが格納されている。ここで、各々のメモリ領域#0〜#3に関する情報とは、図16の表に示すメモリ領域#0〜#3に対応するアドレス範囲である。また、各々のメモリ領域#0〜#3に関する情報が格納されているレジスタアドレス範囲とは、図16の表に示すメモリ領域#0〜#3に対応するアドレス範囲が格納されているメモリアクセス情報レジスタ61のレジスタアドレス範囲である。例えば、メモリ領域#0に関する情報が格納されているレジスタアドレス範囲は、図16の表に示すメモリ領域#0に対応するアドレス範囲(アドレスa〜アドレスb)が格納されているメモリアクセス情報レジスタ61のレジスタアドレス範囲(レジスタアドレスa'〜レジスタアドレスb')である。
図18に示すように、メモリ領域#0のレジスタアドレス範囲はレジスタアドレスa'〜レジスタアドレスb'であり、メモリアクセス情報レジスタ61内のメモリ領域#0に関する情報が格納されている領域(つまり、レジスタアドレスa'〜レジスタアドレスb')には仮想マシンVM#0がアクセスすることができる。メモリ領域#1のレジスタアドレス範囲はレジスタアドレスc'〜レジスタアドレスd'であり、メモリアクセス情報レジスタ61内のメモリ領域#1に関する情報が格納されている領域(つまり、レジスタアドレスc'〜レジスタアドレスd')には仮想マシンVM#0がアクセスすることができる。メモリ領域#2のレジスタアドレス範囲はレジスタアドレスe'〜レジスタアドレスf'であり、メモリアクセス情報レジスタ61内のメモリ領域#2に関する情報が格納されている領域(つまり、レジスタアドレスe'〜レジスタアドレスf')には仮想マシンVM#1がアクセスすることができる。メモリ領域#3のレジスタアドレス範囲はレジスタアドレスg'〜レジスタアドレスh'であり、メモリアクセス情報レジスタ61内のメモリ領域#3に関する情報が格納されている領域(レジスタアドレスg'〜レジスタアドレスh')には仮想マシンVM#2がアクセスすることができる。
なお、本実施の形態では、各々の仮想マシンは図16の表に示すメモリ領域#0〜#3に対応するアドレス範囲に関する情報のみ書き換え可能であるものとし、各々のメモリ領域#0〜#3にアクセス可能な仮想マシンに関する情報については書き換えできないものとする。つまり、各々のメモリ領域#0〜#3にアクセス可能な仮想マシンに関する情報については、ハイパーバイザのみが書き換えることができる。
また、レジスタアクセス情報レジスタ72へのアクセス権限をハイパーバイザのみに認め、各々の仮想マシン(スーパバイザ)にはアクセス権限を認めないようにすることで、各々の仮想マシンがレジスタアクセス情報レジスタ72に格納されているレジスタアクセス情報を自由に書き換えることを抑制することができる。これにより、ハイパーバイザが各々の仮想マシンが使用するメモリ領域を管理することができ、各々の仮想マシンが使用するメモリ領域が干渉することを抑制することができる。
レジスタアドレス判定回路73とレジスタアクセス判定回路74は、第2のアクセス判定回路を構成している。第2のアクセス判定回路は、各々の仮想マシンがメモリアクセス情報レジスタ61にアクセスする際のレジスタアドレスADD_Rおよびメモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mと、レジスタアクセス情報レジスタ72に格納されているレジスタアクセス情報とに基づき仮想マシンによるメモリアクセス情報レジスタ61へのアクセスの可否を判定する。
つまり、レジスタアドレス判定回路73は、レジスタアクセス情報に基づき、各々の仮想マシンがメモリアクセス情報レジスタ61にアクセスする際に出力したレジスタアドレスADD_Rに対応するレジスタ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M''を出力する。
例えば、レジスタアドレス判定回路73は、各々の仮想マシンVM#0〜VM#2がメモリアクセス情報レジスタ61にアクセスする際に出力したレジスタアドレスADD_Rと、レジスタアクセス情報レジスタ72に格納されているレジスタアクセス情報(具体的には、図14のレジスタアドレス範囲)と、を比較する。そして、レジスタアドレスADD_Rが含まれるレジスタアドレス範囲に対応する仮想マシンに関する情報VM_n_M''をレジスタアクセス判定回路74に出力する。例えば、レジスタアドレス判定回路73は、レジスタアドレスADD_Rがレジスタアドレスa'〜レジスタアドレスb'の範囲に含まれている場合、当該レジスタアドレス範囲に対応する仮想マシンVM#0に関する情報VM_0_M''をレジスタアクセス判定回路74に出力する。
レジスタアクセス判定回路74は、レジスタアドレス判定回路73から出力されたメモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M''と、各々の仮想マシンがメモリアクセス情報レジスタ61にアクセスする際に出力したメモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mと、に基づき、仮想マシンによるメモリアクセス情報レジスタ61へのアクセスの可否を判定する。
ここで、メモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mは、仮想マシンスケジューラ5(図1参照)や仮想マシン・スレッドスケジューラ25(図12参照)から供給される。つまり、仮想マシンスケジューラ5(実施の形態3の場合は、仮想マシン・スレッドスケジューラ25)は、演算回路4で実行している命令に対応した仮想マシンに関する情報を保持している。このため、仮想マシンスケジューラ5は、レジスタアクセス判定回路74に対して、メモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mを出力することができる。
レジスタアクセス判定回路74は、仮想マシンスケジューラ5から出力されたメモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mと、レジスタアドレス判定回路73から出力されたメモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報VM_n_M''と、を比較する。そして、仮想マシンスケジューラ5から出力されたVM_n_Mとレジスタアドレス判定回路73から出力されたVM_n_M''とが一致する場合は、仮想マシンがメモリアクセス情報レジスタ61にアクセス可能であると判定し、レジスタアクセス判定結果OUT_Rとしてアクセス許可を示すハイレベルの信号を出力する。一方、仮想マシンスケジューラ5から出力されたVM_n_Mとレジスタアドレス判定回路73から出力されたVM_n_M''とが一致しない場合は、仮想マシンによるメモリアクセス情報レジスタ61へのアクセスが禁止されていると判定し、レジスタアクセス判定結果OUT_Rとしてアクセス禁止を示すロウレベルの信号を出力する。
レジスタアクセス判定回路74から出力されたレジスタアクセス判定結果OUT_Rは、メモリアクセス情報レジスタ61に供給される。メモリアクセス情報レジスタ61は、レジスタアクセス判定結果OUT_Rがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシン(演算回路4)によるアクセスWD_Rを無効とする。一方、メモリアクセス情報レジスタ61は、レジスタアクセス判定結果OUT_Rがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシン(演算回路4)によるアクセスWD_Rを有効とする。
なお、レジスタアクセス判定回路74から出力されたレジスタアクセス判定結果OUT_Rは、例えば演算回路4に供給されるようにしてもよい。この場合は、演算回路4は、レジスタアクセス判定結果OUT_Rがアクセス禁止を示す場合(つまり、ロウレベルの場合)、仮想マシンによるメモリアクセス情報レジスタ61へのアクセスWD_Rを無効として処理する。一方、演算回路4は、レジスタアクセス判定結果OUT_Rがアクセス許可を示す場合(つまり、ハイレベルの場合)、仮想マシンによるメモリアクセス情報レジスタ61へのアクセスWD_Rを有効として処理する。
次に、レジスタI/F(71)におけるアクセス判定について具体的に説明する。まず、一例として、仮想マシンVM#0が、メモリ領域#2に関する情報が格納されているレジスタアドレス範囲(以降、メモリ領域#2に対応するレジスタアドレス範囲と記載する)にアクセスした場合について説明する。仮想マシンVM#0がメモリ領域#2に対応するレジスタアドレス範囲にアクセスしようとした場合、演算回路4はレジスタアドレス判定回路73に、メモリ領域#2に対応するレジスタアドレス範囲(レジスタアドレスe'〜レジスタアドレスf')に対応したアドレスADD_Rを出力する。レジスタアドレス判定回路73は、当該アドレスADD_Rがメモリ領域#2に対応するレジスタアドレス範囲(レジスタアドレスe'〜レジスタアドレスf')に含まれているので、当該レジスタアドレス範囲に対応する仮想マシンVM#1に関する情報VM_1_M''をレジスタアクセス判定回路74に出力する。
また、仮想マシンスケジューラ5は、メモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#0を示す情報VM_0_Mをレジスタアクセス判定回路74に出力する。レジスタアクセス判定回路74は、仮想マシンスケジューラ5から出力されたVM_0_Mと、レジスタアドレス判定回路73から出力されたVM_1_M''と、を比較する。
この場合は、仮想マシンスケジューラ5から出力されたVM_0_Mとレジスタアドレス判定回路73から出力されたVM_1_M''とが一致しない。よって、レジスタアクセス判定回路74は、仮想マシンVM#0によるメモリ領域#2に対応するレジスタアドレス範囲(レジスタアドレスe'〜レジスタアドレスf')へのアクセスが禁止されていると判定し、レジスタアクセス判定結果OUT_Rとしてアクセス禁止を示すロウレベルの信号を出力する。このようにして、仮想マシンVM#0によるメモリ領域#2に対応するレジスタアドレス範囲(レジスタアドレスe'〜レジスタアドレスf')へのアクセスが禁止される。
また、他の例として、仮想マシンVM#2がメモリ領域#3に対応するレジスタアドレス範囲にアクセスする場合について説明する。仮想マシンVM#2がメモリ領域#3に対応するレジスタアドレス範囲(レジスタアドレスg'〜レジスタアドレスh')にアクセスしようとした場合、演算回路4はレジスタアドレス判定回路73にメモリ領域#3に対応するレジスタアドレス範囲(レジスタアドレスg'〜レジスタアドレスh')に対応したレジスタアドレスADD_Rを出力する。レジスタアドレス判定回路73は、当該レジスタアドレスADD_Rがメモリ領域#3に対応するレジスタアドレス範囲(レジスタアドレスg'〜レジスタアドレスh')に含まれているので、当該レジスタアドレス範囲に対応する仮想マシンVM#2に関する情報VM_2_M''をレジスタアクセス判定回路74に出力する。
また、仮想マシンスケジューラ5は、メモリアクセス情報レジスタ61にアクセスする仮想マシンに関する情報VM_n_Mとして、仮想マシンVM#2を示す情報VM_2_Mをレジスタアクセス判定回路74に出力する。レジスタアクセス判定回路74は、仮想マシンスケジューラ5から出力されたVM_2_Mと、レジスタアドレス判定回路73から出力されたVM_2_M''と、を比較する。
この場合は、仮想マシンスケジューラ5から出力されたVM_2_Mとレジスタアドレス判定回路73から出力されたVM_2_M''とが一致するので、レジスタアクセス判定回路74は、仮想マシンVM#2によるメモリ領域#3に対応するレジスタアドレス範囲(レジスタアドレスg'〜レジスタアドレスh')へのアクセスが許可されていると判定し、レジスタアクセス判定結果OUT_Rとしてアクセス許可を示すハイレベルの信号を出力する。このようにして、仮想マシンVM#2によるメモリ領域#3に対応するレジスタアドレス範囲(レジスタアドレスg'〜レジスタアドレスh')へのアクセスが許可される。
以上で説明した本実施の形態により、少ないハードウェア資源で各々の仮想マシンによるメモリへのアクセスを制御可能なメモリ保護回路、処理装置、およびメモリ保護方法を提供することができる。
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
1、21 処理装置(CPU)
2、22 命令バッファ
3、23 セレクタ
4 演算回路
5 仮想マシンスケジューラ
6_1〜6_5 メモリ保護回路
7 レジスタI/F
8 メモリアクセス情報レジスタ
9 アクセス判定回路
10 バス
11 メモリ
25 仮想マシン・スレッドスケジューラ
30 アクセスデコード回路

Claims (15)

  1. 各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報を格納したメモリアクセス情報レジスタと、
    前記各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリ領域へのアクセスの可否を判定する第1のアクセス判定回路と、を備え
    前記メモリにアクセスする仮想マシンに関する情報は、予め設定されたスケジュールに従って前記各々の仮想マシンの実行時間を割り当てる仮想マシンスケジューラから出力される、
    メモリ保護回路。
  2. 前記メモリアクセス情報レジスタは、
    前記各々のメモリ領域に関するメモリ領域情報が格納され、前記メモリ領域に対応して設けられた複数のメモリ領域設定レジスタと、
    前記各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報が格納され、前記メモリ領域に対応して設けられた複数のメモリ領域割当レジスタと、
    を備える、
    請求項1に記載のメモリ保護回路。
  3. 前記第1のアクセス判定回路は、
    前記各々のメモリ領域設定レジスタに対応して設けられ、前記各々のメモリ領域設定レジスタに格納されている前記メモリ領域情報に基づき前記各々の仮想マシンが前記メモリにアクセスする際に出力したメモリアドレスが前記メモリ領域に含まれているか否かを判定するアドレス判定回路と、
    前記各々のアドレス判定回路に対応して設けられ、前記各々のメモリ領域割当レジスタに格納されている前記各々のメモリ領域に対してアクセス可能な仮想マシンに関する情報と、前記メモリにアクセスする仮想マシンに関する情報と、に基づき前記アドレス判定回路の判定結果をマスクするメモリアクセス判定回路と、を備える、
    請求項2に記載のメモリ保護回路。
  4. 前記各々のメモリ領域設定レジスタに対応して設けられ、前記各々のメモリ領域割当レジスタに格納されている各々のメモリ領域設定レジスタにアクセス可能な仮想マシンに関する情報と、前記メモリ領域設定レジスタにアクセスする仮想マシンに関する情報と、に基づき前記仮想マシンによる前記メモリ領域設定レジスタへのアクセスの可否を判定するレジスタアクセス判定回路を更に備える、
    請求項2または3に記載のメモリ保護回路。
  5. 前記仮想マシンスケジューラは、前記仮想マシンに対してプログラムの実行時間の割り当てと処理される当該仮想マシンの処理順序を決定する、請求項1に記載のメモリ保護回路。
  6. 前記メモリにアクセスする仮想マシンに関する情報は、前記各々の仮想マシンで実行される各々の命令の処理順序を決定する仮想マシン・スレッドスケジューラから出力される、請求項1に記載のメモリ保護回路。
  7. 前記メモリ領域割当レジスタへのアクセス権限は、前記各々の仮想マシンを管理するハイパーバイザが有する、請求項2に記載のメモリ保護回路。
  8. 前記メモリ領域割当レジスタおよび前記メモリ領域設定レジスタへのアクセス権限は、前記各々の仮想マシンを管理するハイバーバイザが有する、請求項2に記載のメモリ保護回路。
  9. 前記第1のアクセス判定回路は、
    前記メモリアクセス情報に基づき、前記各々の仮想マシンが前記メモリにアクセスする際に出力したメモリアドレスに対応するメモリ領域へのアクセスが許可されている仮想マシンに関する情報を出力するアドレス判定回路と、
    前記アドレス判定回路から出力された前記メモリ領域へのアクセスが許可されている仮想マシンに関する情報と、前記メモリにアクセスする仮想マシンに関する情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定するメモリアクセス判定回路と、を備える、
    請求項1に記載のメモリ保護回路。
  10. 前記仮想マシンスケジューラは、前記仮想マシンに対してプログラムの実行時間の割り当てと処理される当該仮想マシンの処理順序を決定する、請求項9に記載のメモリ保護回路。
  11. 前記メモリにアクセスする仮想マシンに関する情報は、前記各々の仮想マシンで実行される各々の命令の処理順序を決定する仮想マシン・スレッドスケジューラから出力される、請求項9に記載のメモリ保護回路。
  12. 前記各々の仮想マシンがアクセス可能なメモリアクセス情報レジスタ領域に関するレジスタアクセス情報を格納したレジスタアクセス情報レジスタと、
    前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際のレジスタアドレスおよび前記メモリアクセス情報レジスタにアクセスする仮想マシンに関する情報と、前記レジスタアクセス情報レジスタに格納されている前記レジスタアクセス情報と、に基づき、前記仮想マシンによる前記メモリアクセス情報レジスタへのアクセスの可否を判定する第2のアクセス判定回路と、を備える、
    請求項1に記載のメモリ保護回路。
  13. 前記第2のアクセス判定回路は、
    前記レジスタアクセス情報に基づき、前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際に出力したレジスタアドレスに対応するレジスタ領域へのアクセスが許可されている仮想マシンに関する情報を出力するレジスタアドレス判定回路と、
    前記レジスタアドレス判定回路から出力された前記メモリアクセス情報レジスタ領域へのアクセスが許可されている仮想マシンに関する情報と、前記各々の仮想マシンが前記メモリアクセス情報レジスタにアクセスする際に出力した前記メモリアクセス情報レジスタにアクセスする仮想マシンに関する情報と、に基づき、前記仮想マシンによる前記メモリアクセス情報レジスタへのアクセスの可否を判定するレジスタアクセス判定回路と、を備える、
    請求項12に記載のメモリ保護回路。
  14. 各々の仮想マシンに対応したプログラムを実行する演算回路と、
    前記プログラムの実行時間を前記仮想マシンに対して割り当てる仮想マシンスケジューラと、
    前記各々の仮想マシンによるメモリへのアクセスを制御するメモリ保護回路と、を備え、
    前記メモリ保護回路は、
    前記各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報を格納したメモリアクセス情報レジスタと、
    前記各々の仮想マシンが前記メモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定する第1のアクセス判定回路と、を備え、
    前記メモリにアクセスする仮想マシンに関する情報は、前記仮想マシンスケジューラから出力される、
    処理装置。
  15. 各々の仮想マシンがアクセス可能なメモリ領域に関するメモリアクセス情報をメモリアクセス情報レジスタに格納するステップと
    前記各々の仮想マシンがメモリにアクセスする際のメモリアドレスおよび前記メモリにアクセスする仮想マシンに関する情報と、前記メモリアクセス情報レジスタに格納されている前記メモリアクセス情報と、に基づき、前記仮想マシンによる前記メモリへのアクセスの可否を判定するステップと、を備え、
    前記メモリにアクセスする仮想マシンに関する情報は、予め設定されたスケジュールに従って前記各々の仮想マシンの実行時間を割り当てる仮想マシンスケジューラから出力される、
    メモリ保護方法。
JP2012104579A 2012-05-01 2012-05-01 メモリ保護回路、処理装置、およびメモリ保護方法 Active JP5914145B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012104579A JP5914145B2 (ja) 2012-05-01 2012-05-01 メモリ保護回路、処理装置、およびメモリ保護方法
US13/859,261 US9465750B2 (en) 2012-05-01 2013-04-09 Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines
TW102113662A TWI603223B (zh) 2012-05-01 2013-04-17 記憶體保護電路、處理裝置、及記憶體保護方法
EP13164879.2A EP2660752B1 (en) 2012-05-01 2013-04-23 Memory protection circuit, processing unit, and memory protection method
CN201310157900.2A CN103383667B (zh) 2012-05-01 2013-05-02 存储器保护电路、处理单元和存储器保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012104579A JP5914145B2 (ja) 2012-05-01 2012-05-01 メモリ保護回路、処理装置、およびメモリ保護方法

Publications (2)

Publication Number Publication Date
JP2013232151A JP2013232151A (ja) 2013-11-14
JP5914145B2 true JP5914145B2 (ja) 2016-05-11

Family

ID=48190724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012104579A Active JP5914145B2 (ja) 2012-05-01 2012-05-01 メモリ保護回路、処理装置、およびメモリ保護方法

Country Status (5)

Country Link
US (1) US9465750B2 (ja)
EP (1) EP2660752B1 (ja)
JP (1) JP5914145B2 (ja)
CN (1) CN103383667B (ja)
TW (1) TWI603223B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
DE102014208848A1 (de) * 2014-05-12 2015-11-12 Robert Bosch Gmbh Verfahren zum Überwachen eines elektronischen Sicherheitsmoduls
US9710404B2 (en) * 2015-03-23 2017-07-18 Intel Corporation Dynamic configuration and peripheral access in a processor
CN106155568B (zh) * 2015-04-03 2019-03-01 华为技术有限公司 一种存储分区的方法及终端
DE102015210539A1 (de) * 2015-06-09 2016-12-15 Robert Bosch Gmbh Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539428B (en) * 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
US10042886B2 (en) * 2015-08-03 2018-08-07 Sap Se Distributed resource-aware task scheduling with replicated data placement in parallel database clusters
US9891945B2 (en) * 2016-03-21 2018-02-13 Qualcomm Incorporated Storage resource management in virtualized environments
US10261821B2 (en) * 2016-12-02 2019-04-16 Dell Products L.P. System and method to expose remote virtual media partitions to virtual machines
JP6726088B2 (ja) * 2016-12-15 2020-07-22 ルネサスエレクトロニクス株式会社 データ処理装置、及びアクセス制御方法
CN106990983B (zh) * 2017-03-21 2021-09-24 北京新能源汽车股份有限公司 单片机烧写方法、装置、系统及单片机
JP6963534B2 (ja) 2018-05-25 2021-11-10 ルネサスエレクトロニクス株式会社 メモリ保護回路及びメモリ保護方法
JP6990150B2 (ja) * 2018-06-18 2022-01-12 ルネサスエレクトロニクス株式会社 データ処理装置及びメモリ保護方法
CN112749397A (zh) * 2019-10-29 2021-05-04 阿里巴巴集团控股有限公司 一种系统和方法
US20230098288A1 (en) * 2021-09-25 2023-03-30 Intel Corporation Apparatus and method for role-based register protection for tdx-io

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6126152A (ja) * 1984-07-16 1986-02-05 Fujitsu Ltd アドレスチエツク方式
JPH04155452A (ja) * 1990-10-19 1992-05-28 Nec Corp 仮想計算機の割り込み方式
US5987557A (en) * 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
EP1713000A1 (en) * 2005-04-11 2006-10-18 Jaluna SA Memory protection system
JP2007004661A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US20080162866A1 (en) * 2006-12-28 2008-07-03 Siddiqi Faraz A Apparatus and method for fast and secure memory context switching
JP2009009232A (ja) 2007-06-26 2009-01-15 Hitachi Ltd コンピュータとカーネル保護方法並びにコンピュータソフトウエア
US8661181B2 (en) * 2007-06-28 2014-02-25 Memory Technologies Llc Memory protection unit in a virtual processing environment
US8370559B2 (en) * 2007-09-28 2013-02-05 Intel Corporation Executing a protected device model in a virtual machine
JP4939382B2 (ja) * 2007-11-28 2012-05-23 ルネサスエレクトロニクス株式会社 情報処理装置及びそのプログラム実行制御方法
JP5392263B2 (ja) * 2008-09-22 2014-01-22 富士通株式会社 情報処理装置及びそのメモリ保護方法
US20100161908A1 (en) * 2008-12-18 2010-06-24 Lsi Corporation Efficient Memory Allocation Across Multiple Accessing Systems
CN101937357B (zh) * 2009-07-01 2013-11-06 华为技术有限公司 一种虚拟机迁移决策方法、装置及系统
US8341627B2 (en) * 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
JP5582971B2 (ja) 2009-12-15 2014-09-03 キヤノン株式会社 メモリ保護方法および情報処理装置
JP5484117B2 (ja) * 2010-02-17 2014-05-07 株式会社日立製作所 ハイパーバイザ及びサーバ装置
US20120331465A1 (en) * 2011-03-02 2012-12-27 Tadao Tanikawa Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit

Also Published As

Publication number Publication date
CN103383667A (zh) 2013-11-06
US20130297901A1 (en) 2013-11-07
JP2013232151A (ja) 2013-11-14
US9465750B2 (en) 2016-10-11
CN103383667B (zh) 2017-11-14
EP2660752A2 (en) 2013-11-06
EP2660752A3 (en) 2014-12-17
TW201411406A (zh) 2014-03-16
TWI603223B (zh) 2017-10-21
EP2660752B1 (en) 2018-09-26

Similar Documents

Publication Publication Date Title
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
US7949835B2 (en) Data processing apparatus and method for controlling access to memory
RU2602793C2 (ru) Способ модификации разрешений на доступ к памяти в защищенной процессорной среде
JP6106765B2 (ja) メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US8190839B2 (en) Using domains for physical address management in a multiprocessor system
US9740636B2 (en) Information processing apparatus
JP2007183952A (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US8006055B2 (en) Fine granularity hierarchiacal memory protection
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
CN109313693B (zh) 针对偶发存储器访问程序指令的许可控制
JP2022544384A (ja) 能力書き込みアドレス追跡
EP3881189B1 (en) An apparatus and method for controlling memory accesses
CN113485716B (zh) 防内存越界的程序编译方法及装置
JP2023526811A (ja) タグチェック装置及び方法
US11009841B2 (en) Initialising control data for a device
JP6235088B2 (ja) 情報処理装置
JP5324676B2 (ja) プロセッサ、バスインターフェース装置、およびコンピュータシステム
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質
JP5380392B2 (ja) 半導体装置、バスインターフェース装置、およびコンピュータシステム
CN112585590A (zh) 存储器访问控制
JP2010267077A (ja) オペレーティングシステムとメモリ保護方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151124

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160122

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: 20160315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160404

R150 Certificate of patent or registration of utility model

Ref document number: 5914145

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150