説明

アクセス制限回路

【課題】従来よりも小規模な構成で、メモリ資源に格納されているデータを秘匿する。
【解決手段】比較部138は、初期属性レジスタ132Aにアクセス禁止属性の空間として保存された全アドレス空間に対して、任意の時点で改変不能にすることができるハードウェアで実装されたアクセス制限ハードレジスタ133に保存された範囲をアクセス許可属性の空間の範囲として設定し、さらに、このアクセス許可属性の空間の範囲内で、適宜改変することができるソフトウェアで実装されたアクセス制限ソフトレジスタ144に保存された範囲をアクセス禁止属性の空間の範囲として設定することによって、アクセス可能なアドレスの範囲を設定し、アクセス信号が指定するアドレス空間とアクセス可能なアドレスの範囲とを比較して、アクセス信号が指定するアドレス空間がアクセス可能なアドレスの範囲内にある場合に、アクセス信号をメモリ資源へ出力する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、小規模な構成で、悪意のあるプログラムや人物からのメモリ資源へのアクセスを制限する回路に関する。
【背景技術】
【0002】
LSIや当該LSIを搭載するコンピュータは、悪意のあるプログラムや人物から、メモリやレジスタ等の資源(リソース;以下、「メモリ資源」または単に「資源」と称する)に格納されているデータやプログラムを秘匿するために、メモリ資源に対するアクセス制限を行っている。このアクセス制限は、LSI内部またはコンピュータ内部に、アクセスを制限する回路(以下、「アクセス制限回路」と称する)を組み込み、この回路によって行うのが一般的である。
【0003】
以下、図4−1及び図4−2を参照して、弊社等で利用されている、一般的なアクセス制限回路の構成につき説明する。図4−1及び図4−2は、それぞれ、従来のアクセス制限回路の一例を示すブロック図である。図4−1は、後述の図5〜図7に示すアクセス制限を行うための回路を示しており、図4−2は、後述の図8に示すアクセス制限を行うための回路を示している。ここでは、アクセス制限回路130を搭載する製品(以下、「搭載製品」と称する)10が、パーソナルコンピュータやサーバ等のコンピュータであるものとして説明する。
【0004】
図4−1及び図4−2に示すように、アクセス制限回路130は、外部機器20との間でデータを入出力する入出力部110や、各種の演算を行うCPU120、各種のデータやプログラムを格納するメモリ資源140等とともに、コンピュータ10の内部に設けられている。なお、図4−1及び図4−2に示す例では、搭載製品がコンピュータ10となっているので、メモリ資源140は、メモリやレジスタだけでなく、HDD等の記憶装置も含まれる。
【0005】
アクセス制限回路130は、CPU120とメモリ資源140との間に設けられており、CPU120からメモリ資源140へ出力されるアクセス信号ACに対して予め定められた設定に基づいてメモリ資源140への出力を制限する。アクセス制限回路130は、図4−1に示す構成のものと図4−2に示す構成のものとがある。以下、両者を区別する場合に、図4−1に示す構成のものを「アクセス制限回路130a」と称し、図4−2に示す構成のものを「アクセス制限回路130b」と称する。
【0006】
アクセス制限回路130は、内部に、メモリ資源140に割り振られた各アドレス空間の属性データが保存される、ソフトウェアで実装された複数個のレジスタを備えている。属性データは、アドレス空間の範囲と「アクセス禁止」または「アクセス許可」等の属性との対応付け関係を表している。以下、アドレス空間の範囲と属性とを対応付けて保存する動作またはアドレス空間の範囲と属性との対応関係を、「設定」と称する場合がある。また、アクセス禁止属性を単に「禁止属性」と称し、アクセス許可属性を単に「許可属性」と称する場合もある。なお、アクセス制限回路130が複数個のレジスタを備えているのは、保護すなわち秘匿すべきメモリ資源に割り振られたアドレス空間が非連続に配置されていることが多く、その非連続な各アドレス空間の属性を誤りなく定義するためである。
【0007】
アクセス制限回路130は、複数個のレジスタの中の1つを、全アドレス空間の初期属性データすなわちアドレス空間の全範囲の初期状態における属性データが保存されるレジスタ(以下、「初期属性レジスタ」と称する)132Aとして用い、複数個のレジスタの中のいくつかを、アクセス制限データすなわちアクセス制限すべき各アドレス空間の属性データが保存されるレジスタ(以下、「アクセス制限レジスタ」と称する)132−1、132−2、…、132−nとして用い、複数個のレジスタの中の1つを、最終属性データすなわちアクセス制限適用後の各アドレス空間の最終的な属性データが保存されるレジスタ(以下、「最終属性レジスタ」と称する)132Bとして用いている。例えば、図4−1に示す例では、アクセス制限回路130aは、複数個のレジスタの中の1つを初期属性レジスタ132Aとして用い、複数個のレジスタの中の4つをアクセス制限レジスタ132−1、132−2、132−3、及び132−4として用い、複数個のレジスタの中の1つを最終属性レジスタ132Bとして用いている。また、図4−2に示す例では、アクセス制限回路130bは、複数個のレジスタの中の六つをアクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6として用い、複数個のレジスタの中の1つを最終属性レジスタ132Bとして用いている。
【0008】
また、アクセス制限回路130は、内部に、比較部138を備えている。比較部138は、初期属性レジスタ132Aに保存された初期属性データ並びに各アクセス制限レジスタ132−1、132−2、…、132−nに保存された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データを最終属性レジスタ132Bに保存する。
【0009】
比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に(具体的には、コンピュータ10の入出力部110が外部機器20からアクセス要求RQを受信し、これに応答して、コンピュータ10のCPU120がアクセス要求RQに応じたアクセス信号ACをメモリ資源140に出力した場合に)、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行する。すなわち、アクセス制限回路130は、メモリ資源140に対するアクセス制限を行わない。一方、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。すなわち、アクセス制限回路130は、メモリ資源140に対するアクセス制限を行う。
【0010】
なお、図4−1に示すアクセス制限回路130aは、各アクセス制限レジスタ132−1、132−2、…、132−nと比較部138との間に、優先順位判定部135を備えている。この優先順位判定部135は、各アクセス制限レジスタ132−1、132−2、…、132−nに保存された各アドレス空間の属性データの優先順位を判定するための回路である。
【0011】
また、図4−2に示すアクセス制限回路130bは、各アクセス制限レジスタ132−1、132−2、…、132−nと比較部138との間に、複数個の重複判定部136(図4−2に示す例では、6個の重複判定部136−1、136−2、136−3、136−4、136−5、及び136−6)を備えている。これら重複判定部136は、各アクセス制限レジスタ132−1、132−2、…、132−nに保存された各アドレス空間の範囲が重複していないことを判定するための回路である。
【0012】
以下、図5〜図8を参照して、従来のアクセス制限回路130a及び130bによって行われる一般的なアクセス制限の例につき説明する。図5〜図8は、それぞれ、従来の回路によるアクセス制限の一例を示す図である。
【0013】
図5は、許可属性よりも禁止属性を優先する場合のアクセス制限方法を示している。ここでは、図4−1に示すアクセス制限回路130aによって行うものとして説明する。図5に示す例では、初期属性レジスタ132Aには、全アドレス空間a10の初期属性データとして、アドレス空間a10の範囲と「読み取り許可」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第1のアクセス制限レジスタ132−1には、アドレス空間b11の属性データとして、アドレス空間b11の範囲と「読み取り禁止」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第2のアクセス制限レジスタ132−2には、アドレス空間b12の属性データとして、アドレス空間b12の範囲と「読み取り許可」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第3のアクセス制限レジスタ132−3には、アドレス空間b13の属性データとして、アドレス空間b13の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。
【0014】
アクセス制限回路130aの優先順位判定部135は、初期属性レジスタ132Aから初期属性データを読み出すとともに、アクセス制限レジスタ132−1、132−2、…、132−n(図5に示す例では、132−1、132−2、及び132−3)から各属性データを読み出し、予め定められた優先順位の判定基準に基づいて初期属性データ及び各属性データの優先順位、すなわち、読み出すべき各レジスタの優先順位を判定する。優先順位判定部135は、読み出すべき各レジスタの優先順位を判定すると、これに応答して、優先順位にしたがって各レジスタから属性データを読み出して、比較部138に出力する。
【0015】
比較部138は、優先順位判定部135から出力される初期属性レジスタ132Aに保存された初期属性データ並びにアクセス制限レジスタ132−1、132−2、及び132−3に保存された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データを最終属性レジスタ132Bに保存する。
【0016】
このとき、優先順位判定部135は、許可属性よりも禁止属性を優先して、読み出すべき各レジスタの優先順位を判定する。
【0017】
そのため、優先順位判定部135は、まず、初期属性レジスタ132Aから全アドレス空間a10の初期属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135から全アドレス空間a10の初期属性データが入力されると、これに応答して、全アドレス空間a10の初期属性データに基づいて、全アドレス空間a10の範囲をアドレス空間c10の範囲として特定し、アドレス空間c10の属性データとして、アドレス空間c10の範囲と「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0018】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c10の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り禁止」属性及び「書き込み禁止」属性の双方が保存されているアドレス空間b13の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c10及びb13の属性データが入力されると、これに応答して、アドレス空間c10の属性データに基づいて、アドレス空間c10の中から禁止属性(すなわち、「読み取り禁止」属性及び「書き込み禁止」属性の双方または一方)の最終属性データが既に設定されているアドレス空間(ここでは、存在せず)の範囲を特定し、さらに、アドレス空間b13の属性データに基づいて、アドレス空間b13の範囲でかつ禁止属性の最終属性データが既に設定されているアドレス空間を除く範囲(ここでは、アドレス空間b13の範囲)を、アドレス空間c15の範囲として特定し、アドレス空間c15の最終属性データとして、アドレス空間c15の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c15の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c10の属性データの上に、上書きされる。その結果、アドレス空間c15の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0019】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c15の最終属性データが上書きされているアドレス空間c10の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り禁止」属性及び「書き込み禁止」属性の一方が保存されているアドレス空間b11及びb12の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c10、b11及びb12の属性データが入力されると、これに応答して、アドレス空間c10の属性データに基づいて、アドレス空間c10の中から禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c15)の範囲を特定し、さらに、アドレス空間b11及びb12の属性データに基づいて、アドレス空間b11及びb12が重なる範囲でかつ禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c15)を除く範囲を、アドレス空間c13の範囲として特定し、アドレス空間c13の最終属性データとして、アドレス空間c13の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c13の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c10の属性データの上に、上書きされる。その結果、アドレス空間c13の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0020】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c13及びc15の最終属性データが上書きされているアドレス空間c10の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り禁止」属性が保存されているアドレス空間b11の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c10及びb11の属性データが入力されると、これに応答して、アドレス空間c10の属性データに基づいて、アドレス空間c10の中から禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c13及びc15)の範囲を特定し、さらに、アドレス空間b11の属性データに基づいて、アドレス空間b11の範囲でかつ禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c13及びc15)を除く範囲を、アドレス空間c14の範囲として特定し、アドレス空間c14の最終属性データとして、アドレス空間c14の範囲と「読み取り禁止」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c14の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c10の属性データの上に、上書きされる。その結果、アドレス空間c14の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0021】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c13、c14、及びc15の最終属性データが上書きされているアドレス空間c10の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「書き込み禁止」属性が保存されているアドレス空間b12の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c10及びb12の属性データが入力されると、これに応答して、アドレス空間c10の属性データに基づいて、アドレス空間c10の中から禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c13、c14、及びc15)の範囲を特定し、さらに、アドレス空間b12の属性データに基づいて、アドレス空間b12の範囲でかつ禁止属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c13、c14、及びc15)を除く範囲を、アドレス空間c12の範囲として特定し、アドレス空間c12の最終属性データとして、アドレス空間c12の範囲と「読み取り許可」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c12の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c10の属性データの上に、上書きされる。その結果、アドレス空間c12の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0022】
なお、アドレス空間c10の中のアドレス空間c12、c13、c14、及びc15を除く範囲、すなわち、アドレス空間c11及びc16の範囲は、「読み取り許可」属性及び「書き込み許可」属性が対応付けられた範囲のままとなる。
【0023】
この後、比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行し、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。
【0024】
図6は、禁止属性よりも許可属性を優先する場合のアクセス制限方法を示している。ここでは、図4−1に示すアクセス制限回路130aによって行うものとして説明する。図6に示す例では、初期属性レジスタ132Aには、全アドレス空間a20の初期属性データとして、アドレス空間a20の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第1のアクセス制限レジスタ132−1には、アドレス空間b21の属性データとして、アドレス空間b21の範囲と「読み取り禁止」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第2のアクセス制限レジスタ132−2には、アドレス空間b22の属性データとして、アドレス空間b22の範囲と「読み取り許可」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第3のアクセス制限レジスタ132−3には、アドレス空間b23の属性データとして、アドレス空間b23の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。
【0025】
アクセス制限回路130aの優先順位判定部135は、初期属性レジスタ132Aから初期属性データを読み出すとともに、アクセス制限レジスタ132−1、132−2、…、132−n(図6に示す例では、132−1、132−2、及び132−3)から各属性データを読み出し、予め定められた優先順位の判定基準に基づいて初期属性データ及び各属性データの優先順位、すなわち、読み出すべき各レジスタの優先順位を判定する。優先順位判定部135は、読み出すべき各レジスタの優先順位を判定すると、これに応答して、優先順位にしたがって各レジスタから属性データを読み出して、比較部138に出力する。
【0026】
比較部138は、優先順位判定部135から出力される初期属性レジスタ132Aに保存された初期属性データ並びにアクセス制限レジスタ132−1、132−2、及び132−3に保存された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データを最終属性レジスタ132Bに保存する。
【0027】
このとき、優先順位判定部135は、禁止属性よりも許可属性を優先して、読み出すべき各レジスタの優先順位を判定する。
【0028】
そのため、優先順位判定部135は、まず、初期属性レジスタ132Aから全アドレス空間a20の初期属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135から全アドレス空間a20の初期属性データが入力されると、これに応答して、全アドレス空間a20の初期属性データに基づいて、全アドレス空間a20の範囲をアドレス空間c20の範囲として特定し、アドレス空間c20の属性データとして、アドレス空間c20の範囲と「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0029】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c20の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り許可」属性及び「書き込み許可」属性の双方が保存されているアドレス空間(ただし、図6に示す例では、存在せず)の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c20並びに「読み取り許可」属性及び「書き込み許可」属性の双方が保存されているアドレス空間の属性データが入力されると、これに応答して、アドレス空間c20の属性データに基づいて、アドレス空間c20の中から許可属性(すなわち、「読み取り許可」属性及び「書き込み許可」属性の双方または一方)の最終属性データが既に設定されているアドレス空間(ここでは、存在せず)の範囲を特定し、さらに、「読み取り許可」属性及び「書き込み許可」属性の双方が保存されているアドレス空間の属性データに基づいて、「読み取り許可」属性及び「書き込み許可」属性となるアドレス空間の範囲でかつ許可属性の最終属性データが既に設定されているアドレス空間を除く範囲(ここでは、存在せず)を特定し、このアドレス空間の最終属性データとして、このアドレス空間の範囲と「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。ただし、図6に示す例では、「読み取り許可」属性及び「書き込み許可」属性の双方が保存されているアドレス空間が存在しないので、優先順位判定部135及び比較部138は、このような動作を行わずに、次の動作を行う。
【0030】
すなわち、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c20の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り許可」属性及び「書き込み許可」属性の一方が保存されているアドレス空間b21及びb22の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c20、b21及びb22の属性データが入力されると、これに応答して、アドレス空間c20の属性データに基づいて、アドレス空間c20の中から許可属性の最終属性データが既に設定されているアドレス空間(ここでは、存在せず)の範囲を特定し、さらに、アドレス空間b21及びb22の属性データに基づいて、アドレス空間b21及びb22が重なる範囲でかつ許可属性の最終属性データが既に設定されているアドレス空間(ここでは、存在せず)を除く範囲を、アドレス空間c23の範囲として特定し、アドレス空間c23の最終属性データとして、アドレス空間c23の範囲と「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c23の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c20の属性データの上に、上書きされる。その結果、アドレス空間c23の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0031】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c23の最終属性データが上書きされているアドレス空間c20の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り許可」属性が保存されているアドレス空間b22の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c20及びb22の属性データが入力されると、これに応答して、アドレス空間c20の属性データに基づいて、アドレス空間c20の中から許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c23)の範囲を特定し、さらに、アドレス空間b22の属性データに基づいて、アドレス空間b22の範囲でかつ許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c23)を除く範囲を、アドレス空間c22の範囲として特定し、アドレス空間c22の最終属性データとして、アドレス空間c22の範囲と「読み取り許可」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c22の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c20の属性データの上に、上書きされる。その結果、アドレス空間c22の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0032】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c22及びc23の最終属性データが上書きされているアドレス空間c20の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「書き込み許可」属性が保存されているアドレス空間b21の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c20及びb21の属性データが入力されると、これに応答して、アドレス空間c20の属性データに基づいて、アドレス空間c20の中から許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c22及びc23)の範囲を特定し、さらに、アドレス空間b21の属性データに基づいて、アドレス空間b21の範囲でかつ許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c22及びc23)を除く範囲を、アドレス空間c24の範囲として特定し、アドレス空間c24の最終属性データとして、アドレス空間c24の範囲と「読み取り禁止」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c24の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c20の属性データの上に、上書きされる。その結果、アドレス空間c24の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0033】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c22及びc23の最終属性データが上書きされているアドレス空間c20の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから「読み取り禁止」属性及び「書き込み禁止」属性の双方が保存されているアドレス空間b23の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c20及びb23の属性データが入力されると、これに応答して、アドレス空間c20の属性データに基づいて、アドレス空間c20の中から許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c22、c23、及びc24)の範囲を特定し、さらに、アドレス空間b23の属性データに基づいて、アドレス空間b23の範囲でかつ許可属性の最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c22、c23、及びc24)を除く範囲を、アドレス空間c25の範囲として特定し、アドレス空間c25の最終属性データとして、アドレス空間c25の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c25の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c20の属性データの上に、上書きされる。その結果、アドレス空間c25の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0034】
なお、アドレス空間c20の中のアドレス空間c22、c23、c24、及びc25を除く範囲、すなわち、アドレス空間c21及びc26の範囲は、「読み取り禁止」属性及び「書き込み禁止」属性が対応付けられた範囲のままとなる。
【0035】
この後、比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行し、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。
【0036】
図7は、優先順位付きのレジスタを用いる場合のアクセス制限方法を示している。ここでは、図4−1に示すアクセス制限回路130aによって行うものとして説明する。図7に示す例では、初期属性レジスタ132Aには、全アドレス空間a30の初期属性データとして、アドレス空間a30の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第1のアクセス制限レジスタ132−1には、アドレス空間b31の属性データとして、アドレス空間b31の範囲と「読み取り禁止」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第2のアクセス制限レジスタ132−2には、アドレス空間b32の属性データとして、アドレス空間b32の範囲と「読み取り許可」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第3のアクセス制限レジスタ132−3には、アドレス空間b33の属性データとして、アドレス空間b33の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。なお、レジスタの優先順位は、第1のアクセス制限レジスタ132−1が1番目に高く、第2のアクセス制限レジスタ132−2が2番目に高く、第3のアクセス制限レジスタ132−3が3番目に高くなっている。
【0037】
アクセス制限回路130aの優先順位判定部135は、予め定められた優先順位にしたがって各レジスタから属性データを読み出して、比較部138に出力する。
【0038】
比較部138は、優先順位判定部135から出力される初期属性レジスタ132Aに保存された初期属性データ並びにアクセス制限レジスタ132−1、132−2、及び132−3に保存された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データを最終属性レジスタ132Bに保存する。
【0039】
このとき、優先順位判定部135は、レジスタの優先順位にしたがって、各レジスタから属性データを読み出して、比較部138に出力する。
【0040】
そのため、優先順位判定部135は、まず、初期属性レジスタ132Aから全アドレス空間a30の初期属性データを読み出て、比較部138に出力する。比較部138は、優先順位判定部135から全アドレス空間a30の初期属性データが入力されると、これに応答して、全アドレス空間a30の初期属性データに基づいて、全アドレス空間a30の範囲をアドレス空間c30の範囲として特定し、アドレス空間c30の属性データとして、アドレス空間c30の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0041】
次に、優先順位判定部135は、各アクセス制限レジスタ132−1、132−2、…、132−nから優先順位が1番目に高い第1のアクセス制限レジスタ132−1に保存されたアドレス空間b31の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間b31の属性データが入力されると、これに応答して、アドレス空間b31の属性データに基づいて、アドレス空間b31の範囲を、アドレス空間c33の範囲として特定し、アドレス空間c33の最終属性データとして、アドレス空間c33の範囲とアドレス空間b31と同じ属性すなわち「読み取り禁止」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c33の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c30の属性データの上に、上書きされる。その結果、アドレス空間c33の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0042】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c33の最終属性データが上書きされているアドレス空間c30の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから優先順位が2番目に高い第2のアクセス制限レジスタ132−2に保存されたアドレス空間b32の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c30及びb32の属性データが入力されると、これに応答して、アドレス空間c30の属性データに基づいて、アドレス空間c30の中から最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c33)の範囲を特定し、さらに、アドレス空間b32の属性データに基づいて、アドレス空間b32の範囲でかつ最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c33)を除く範囲を、アドレス空間c32の範囲として特定し、アドレス空間c32の最終属性データとして、アドレス空間c32の範囲とアドレス空間b32と同じ属性すなわち「読み取り許可」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アドレス空間c32の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間c30の属性データの上に、上書きされる。その結果、アドレス空間c32の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。
【0043】
次に、優先順位判定部135は、最終属性レジスタ132Bからアドレス空間c32及びc33の最終属性データが上書きされているアドレス空間c30の属性データを読み出すとともに、各アクセス制限レジスタ132−1、132−2、…、132−nから優先順位が3番目に高い第3のアクセス制限レジスタ132−3に保存されたアドレス空間b33の属性データを読み出して、比較部138に出力する。比較部138は、優先順位判定部135からアドレス空間c30及びb33の属性データが入力されると、これに応答して、アドレス空間c30の属性データに基づいて、アドレス空間c30の中から最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c32及びc33)の範囲を特定し、さらに、アドレス空間b33の属性データに基づいて、アドレス空間b33の範囲でかつ最終属性データが既に設定されているアドレス空間(ここでは、アドレス空間c32及びc33)を除く範囲を、アドレス空間c34の範囲として特定し、アドレス空間c34の最終属性データとして、アドレス空間c34の範囲とアドレス空間b33と同じ属性すなわち「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0044】
なお、アドレス空間c30の中のアドレス空間c32、c33、及びc34を除く範囲、すなわち、アドレス空間c31及びc35の範囲は、「読み取り禁止」属性及び「書き込み禁止」属性が対応付けられた範囲のままとなる。
【0045】
この後、比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行し、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。
【0046】
図8は、アドレス空間の重複設定を認めない場合のアクセス制限方法を示している。ここでは、図4−2に示すアクセス制限回路130bによって行うものとして説明する。この方法は、初期属性レジスタを設けずに、複数のアクセス制限レジスタ132−1、132−2、…、132−nを設け、さらに、アドレス空間を「読み取り」及び「書き込み」の属性毎に細分化して、細分化されたアドレス空間毎に、各空間の範囲と属性との対応付けを表す属性データを複数のアクセス制限レジスタに漏れなく予め保存するものである。具体的には、図8に示す例では、6個のアクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6を設けている。そして、第1のアクセス制限レジスタ132−1には、アドレス空間b41の属性データとして、アドレス空間b41の範囲と「読み取り許可」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第2のアクセス制限レジスタ132−2には、アドレス空間b42の属性データとして、アドレス空間b42の範囲と「読み取り許可」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第3のアクセス制限レジスタ132−3には、アドレス空間b43の属性データとして、アドレス空間b43の範囲と「読み取り禁止」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第4のアクセス制限レジスタ132−4には、アドレス空間b44の属性データとして、アドレス空間b44の範囲と「読み取り禁止」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第5のアクセス制限レジスタ132−5には、アドレス空間b45の属性データとして、アドレス空間b45の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第6のアクセス制限レジスタ132−6には、アドレス空間b46の属性データとして、アドレス空間b46の範囲と「読み取り許可」属性及び「書き込み許可」属性とが対応付けられて保存されている。
【0047】
アクセス制限回路130bの重複判定部136−1、136−2、136−3、136−4、136−5、及び136−6は、それぞれ、アクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6に保存された各属性データを参照して、各アクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6に保存された各アドレス空間の範囲が重複していないことを判定して、各アドレス空間の範囲が重複していない場合に、それぞれに対応するアクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6から読み出された各属性データを比較部138に出力する。なお、重複判定部136−1、136−2、136−3、136−4、136−5、及び136−6は、それぞれ、各アドレス空間の範囲が重複している場合に、重複していない範囲については、それぞれに対応するアクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6から読み出された各属性データを比較部138に出力し、重複している範囲については、予め定められた優先条件で最優先となる属性データを比較部138に出力する。
【0048】
比較部138は、重複判定部136−1、136−2、136−3、136−4、136−5、及び136−6から各属性データが入力されると、これに応答して、入力された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データc40を最終属性レジスタ132Bに保存する。
【0049】
このとき、比較部138は、基本的には、各アクセス制限レジスタ132−1、132−2、132−3、132−4、132−5、及び132−6に保存された属性データにしたがって各アドレス空間の範囲を特定する。
【0050】
そのため、比較部138は、まず、第1のアクセス制限レジスタ132−1から読み出されたアドレス空間b41の属性データに基づいて、アドレス空間b41の範囲をアドレス空間c41の範囲として特定し、アドレス空間c41の最終属性データとして、アドレス空間c41の範囲とアドレス空間b41と同じ属性すなわち「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0051】
次に、比較部138は、第2のアクセス制限レジスタ132−2から読み出されたアドレス空間b42の属性データに基づいて、アドレス空間b42の範囲をアドレス空間c42の範囲として特定し、アドレス空間c42の最終属性データとして、アドレス空間c42の範囲とアドレス空間b42と同じ属性すなわち「読み取り許可」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0052】
次に、比較部138は、第3のアクセス制限レジスタ132−3から読み出されたアドレス空間b43の属性データに基づいて、アドレス空間b43の範囲をアドレス空間c43の範囲として特定し、アドレス空間c43の最終属性データとして、アドレス空間c43の範囲とアドレス空間b43と同じ属性すなわち「読み取り禁止」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0053】
次に、比較部138は、第4のアクセス制限レジスタ132−4から読み出されたアドレス空間b44の属性データに基づいて、アドレス空間b44の範囲をアドレス空間c44の範囲として特定し、アドレス空間c44の最終属性データとして、アドレス空間c44の範囲とアドレス空間b44と同じ属性すなわち「読み取り禁止」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0054】
次に、比較部138は、第5のアクセス制限レジスタ132−5から読み出されたアドレス空間b45の属性データに基づいて、アドレス空間b45の範囲をアドレス空間c45の範囲として特定し、アドレス空間c45の最終属性データとして、アドレス空間c45の範囲とアドレス空間b45と同じ属性すなわち「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0055】
次に、比較部138は、第6のアクセス制限レジスタ132−6から読み出されたアドレス空間b46の属性データに基づいて、アドレス空間b46の範囲をアドレス空間c46の範囲として特定し、アドレス空間c45の最終属性データとして、アドレス空間c46の範囲とアドレス空間b46と同じ属性すなわち「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する。
【0056】
なお、最終属性レジスタ132Bに保存されたアドレス空間c41、c42、c43、c44、c45、及びc46の属性データは、それぞれ、アドレス空間c40を構成する各空間の最終属性データとなる。
【0057】
この後、比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行し、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。
【0058】
以上が、従来のアクセス制限回路によって行われるアクセス制限方法である。
【0059】
ところで、図4−1に示すアクセス制限回路130aは、図5、図6、及び図7に示すアクセス制限方法を行う場合に、それぞれ、以下に説明するように、正当なプログラムで禁止属性として設定されたアドレス空間であっても、悪意のあるプログラムや人物にアクセスされる可能性があった。
【0060】
すなわち、アクセス制限回路130aが図5に示す方法すなわち許可属性よりも禁止属性を優先するアクセス制限方法を行う場合に、全アドレス空間の初期属性データとして許可属性が保存される。これは、全アドレス空間の初期属性データとして禁止属性が保存されていると、アクセス制限レジスタで許可属性として保存されたアドレス空間であっても、禁止属性が優先されてしまうため、CPUがアクセスできなくなるからである。しかしながら、この方法を行う場合に、全アドレス空間の初期属性データとして許可属性が保存されている。そのため、悪意のあるプログラムや人物によって搭載製品(ここでは、コンピュータ)10の電源が遮断された場合に、資源へのアクセス制限が無効にされてしまう。その結果、正当なプログラムで禁止属性として設定されたアドレス空間であっても、悪意のあるプログラムや人物にアクセスされる可能性があった。
【0061】
一方、アクセス制限回路130aが図6に示す方法すなわち禁止属性よりも許可属性を優先するアクセス制限方法を行う場合に、全アドレス空間の初期属性データとして禁止属性が保存される。そのため、悪意のあるプログラムや人物によって搭載製品10の電源が遮断されても、資源へのアクセス制限が無効にされない。したがって、悪意のあるプログラムや人物によって搭載製品10の電源が遮断された場合であっても、悪意のあるプログラムや人物から資源に格納されているデータやプログラムを秘匿することができる。しかしながら、この方法を行う場合に、悪意のあるプログラムがアクセス制限回路に侵入し、この悪意のあるプログラムによって属性データが書き換えられると、正当なプログラムで禁止属性として設定されたアドレス空間であっても、悪意のあるプログラムや人物にアクセスされる可能性があった。
【0062】
また、アクセス制限回路130aが図7に示す方法すなわち優先順位付きのレジスタを用いるアクセス制限方法を行う場合に、図7に示す方法と同様に、悪意のあるプログラムがアクセス制限回路に侵入し、この悪意のあるプログラムによって優先順位の高いレジスタが書き換えられると、正当なプログラムで禁止属性として設定されたアドレス空間であっても、悪意のあるプログラムや人物にアクセスされる可能性があった。
【0063】
したがって、悪意のあるプログラムや人物から正当なプログラムで禁止属性として設定されたアドレス空間を厳密に秘匿するためには、図4−2に示すアクセス制限回路130bによってアクセス制限方法すなわち図8に示すアドレス空間の重複設定を認めないアクセス制限方法を行うことのみが有効であった。しかしながら、図8に示す方法を行う場合に、禁止属性と許可属性とが入り組んだ複雑なメモリ資源に対してアクセス制限を行うと、大量のレジスタが必要になるとともに、重複判定部が必要になる。そのため、アクセス制限回路130bの規模が大型化していた。
【0064】
なお、これら図5、図6、図7、及び図8に示すアクセス制限方法は、例えば、予め定められたポリシにしたがって行うアクセス制限方法(特許文献1参照)や、アクセス制限を行う対象を安全ドメインと非安全ドメインの2段階に分けて行うアクセス制限方法(特許文献2参照)等に適用されている。
【0065】
特許文献1に開示された方法は、以下のようなものである。すなわち、ポリシは、どの資源がアクセス可能で、どの資源がアクセス可能でないかを定義している。資源にアクセスする要求は、その資源へのアクセスがポリシによって許可されていて、そのアクセスを実行したとき、ポリシがアクセスを許可していない資源に仮想アドレスが割り当てられるようなことがなければ、許可される。アクセスが許可されていない資源は仮想アドレスを持っていないので、仮想アドレスで資源を特定している、ある種のアクセス要求は、ポリシを調べなくても許可可能になる。
【0066】
特許文献2に開示された方法は、以下のようなものである。すなわち、プロセッサが非安全モードで作動しているときは、メモリ管理ユニットは非安全テーブルから検索された内部記憶ユニット内のデスクリプタから誘導されたアクセス制御情報を参照して、メモリアクセスリクエストのための所定のアクセス制御機能を実行するようになっている。これと対照的に、プロセッサが安全モードで作動しているときは、メモリ管理ユニットは安全テーブルから検索された内部記憶ユニット内のデスクリプタから誘導されたアクセス制御情報を参照してメモリアクセスリクエストのための所定のアクセス制御機能を実行するようになっている。
【0067】
しかしながら、特許文献1に開示された方法では、仮想アドレスを通してメモリ資源にアクセスすることを想定しているため、仮想アドレスを利用できないLSIに適用することができなかった。
【0068】
また、特許文献2に開示された方法では、アクセス制限のポリシを設定する方法が定義されておらず、かつ、2段階での制限では近年の複雑な構造のソフトウェアに対応することができなかった。
【特許文献1】特開2003-330799号公報
【特許文献2】特開2004-288155号公報
【発明の開示】
【発明が解決しようとする課題】
【0069】
従来のアクセス制限回路のうち、図4−1に示す構成のものは、図5に示す方法すなわち許可属性よりも禁止属性を優先するアクセス制限方法を行う場合に、全アクセス空間の初期属性データとして許可属性が保存されているので、悪意あるプログラムや人物が電源遮断を行うことによって、アクセス制限が解除される可能性があった。また、図6に示す方法すなわち禁止属性よりも許可属性を優先するアクセス制限方法を行う場合に、悪意のあるプログラムが属性データを書き換えることによって、アクセス制限が解除される可能性があった。また、また、図7に示す方法すなわち優先順位付きのレジスタを用いるアクセス制限方法を行う場合に、悪意のあるプログラムが優先順位の高いレジスタを書き換えることによって、アクセス制限が解除される可能性があった。したがって、図4−1に示す従来のアクセス制限回路は、正当なプログラムで禁止属性として設定されたアドレス空間であっても、悪意のあるプログラムや人物にアクセスされる可能性があるという課題があった。
【0070】
一方、従来のアクセス制限回路のうち、図4−2に示す構成のものは、悪意のあるプログラムや人物からの正当なプログラムで禁止属性として設定されたアドレス空間へのアクセスを厳密に制限することができる。しかしながら、図4−2に示す従来のアクセス制限回路は、大量のレジスタが必要となるとともに、重複判定部が必要になるため、回路の規模が大型化してしまうという課題があった。
【0071】
また、図4−1及び図4−2に示す従来のアクセス制限回路(特に、図4−2に示すアクセス制限回路)は、保護すなわち秘匿すべきメモリ資源に割り振られたアドレス空間が非連続に配置されていることが多いため、その非連続に配置された各アドレス空間の属性を誤りなく定義するために大量のレジスタを用いているが、レジスタの数量を抑制するような工夫がなされていなかった。また、従来のアクセス制限回路は、大量の属性データが複数個のレジスタに分散して保存されており、その属性データに基づいてアクセス制限を行うため、優先順位判定部や重複判定部等の複雑な判定を行う回路が必要であった。これらの要因により、従来のアクセス制限回路は、アクセス制限回路の規模が大型化してしまうという課題があった。
【0072】
また、従来のアクセス制限回路は、非連続に配置された各アドレス空間の属性を誤りなく定義するために大量のレジスタを用いているが、それでも、近年のソフトウェアは構造が複雑になりすぎており、複雑なソフトウェア構造に対応しかねる場合があるという課題があった。
【0073】
そこで、この発明の目的は、従来のアクセス制限回路も小規模な構成で、近年の複雑な構造のソフトウェアに対応して細かなアクセス制限を容易に設定することができるアクセス制限回路を提供することにある。
【課題を解決するための手段】
【0074】
一般に、悪意のあるプログラムや人物は、主として、メモリ資源の内容の読み出しや改変等のメモリ資源に対する不法行為を行うが、その際に、初めに、アクセスしようとしているアドレス空間の属性データをアクセス禁止属性からアクセス許可属性に変更することが多い。したがって、このような不法行為を阻止するには、属性データのアクセス禁止属性からアクセス許可属性への変更を認めないようにすることが有効である。
【0075】
よって、上述の課題を解決するために、この発明のアクセス制限回路は、予め、アクセス許可属性となるアドレス空間の範囲を設定する属性データを改変不能なハードウェアによって予め実装し、後から、アクセス禁止属性となるアドレス空間の範囲を設定する属性データのみを改変可能なソフトウェアによって実装する。
【0076】
なお、属性データのハードウェアによる実装は、例えば、レジスタ自体を不揮発性メモリによって構成したり、または、レジスタ周りの配線を予め定められたパターンのハードワイヤによって構成することによって、実現される。以下、このような構成のレジスタを「ハードウェアで実装されたレジスタ」と称する。
【0077】
属性データのハードウェアによる実装は、属性データがレジスタ内部に一度保存されたら改変できないようにする。この属性データのハードウェアによる実装は、メーカもしくはユーザが搭載製品を組み立てるときや、搭載製品を工場から出荷するときに行う。
【0078】
ただし、全ての属性データをハードウェアによって実装すると、近年の複雑な構造のソフトウェアに対応したアクセス制限ができなくなる。そのため、属性データの一部は、ソフトウェアによって実装するものとし、これにより、多々あるソフトウェアのそれぞれの構造に応じてアクセス制限の設定変更を可能にする。なお、属性データのソフトウェアによる実装は、アクセス禁止属性のみ可能とする。
【0079】
したがって、この発明のアクセス制限回路は、具体的には、以下のような構成にする。
【0080】
すなわち、アクセス制限レジスタとして、任意の時点で改変不能にすることができるハードウェアで実装されたレジスタ(以下、「アクセス制限ハードレジスタ」と称する)と、任意の時点で適宜改変することができるソフトウェアで実装されたレジスタ(以下、「アクセス制限ソフトレジスタ」と称する)との2種類のレジスタを用いる。
【0081】
そして、このアクセス制限回路は、CPUとメモリ資源との間に介在し、CPUからメモリ資源へ出力されるアクセス信号に対して予め定められた設定に基づいてメモリ資源への出力を制限することにより、メモリ資源へのアクセスを制限するアクセス制限回路であって、初期属性レジスタと、アクセス制限ハードレジスタと、アクセス制限ソフトレジスタと、最終属性レジスタと、比較部とを有する構成とする。
【0082】
なお、初期属性レジスタは、メモリ資源に割り振られた各アドレス空間の初期属性データとして、アドレス空間の全範囲とアクセス禁止属性とが対応付けられて保存される。
【0083】
アクセス制限ハードレジスタは、任意の時点で改変不能すなわち属性データの書き換え不能にすることができるハードウェアで実装されている。したがって、このアクセス制限ハードレジスタは、例えば、改変不能にする処置を搭載製品が工場から出荷される時に施す場合に、属性データの保存動作すなわち設定動作を、搭載製品が工場で製造されてから出荷される迄の間に、限定して行うことができる。また、アクセス制限ハードレジスタは、アクセス許可属性の空間として設定すべき各アドレス空間の属性データが保存される。以下、アクセス制限ハードレジスタに保存される属性データを、第1設定データと称する。アクセス制限ハードレジスタは、第1設定データとして、アクセス許可属性の空間として設定すべき各アドレス空間の範囲とアクセス許可属性とが対応付けられて保存される。
【0084】
アクセス制限ソフトレジスタは、任意の時点で適宜改変することができるソフトウェアで実装されている。また、アクセス制限ソフトレジスタは、アクセス禁止属性の空間として設定すべき各アドレス空間の属性データが保存される。以下、アクセス制限ソフトレジスタに保存される属性データを、第2設定データと称する。アクセス制限ソフトレジスタは、第2設定データとして、アクセス禁止属性の空間として設定すべき各アドレス空間の範囲とアクセス禁止属性とが対応付けられて保存される。
【0085】
最終属性レジスタは、各アドレス空間の最終的な属性データ(以下、単に「最終属性データ」と称する)として、各空間の範囲と各空間の範囲に対応するアクセス許可属性及びアクセス禁止属性のいずれか一方とが対応付けられて保存される。
【0086】
比較部は、アクセス信号をCPUから入力して、アクセス信号によって指定されたアドレス空間の範囲(以下、「指定範囲」と称する)と最終属性データでアクセス許可属性と対応付けられた各アドレス空間の範囲とを比較して、指定範囲が最終属性データでアクセス許可属性と対応付けられたアドレス空間の範囲内にあるときに、アクセス信号のメモリ資源への出力を実行し、かつ、指定範囲が最終属性データでアクセス許可属性と対応付けられたアドレス空間の範囲外にあるときに、アクセス信号のメモリ資源への出力を中止する。
【0087】
この比較部は、初期属性レジスタに保存された初期属性データ、アクセス制限ハードレジスタに保存された第1設定データ、及びアクセス制限ソフトレジスタに保存された第2設定データを参照して、初期属性データでアクセス禁止属性と対応付けられたアドレス空間の全範囲に対して、第1設定データでアクセス許可属性と対応付けられた各空間の範囲をアクセス許可属性の空間の範囲として最終属性レジスタに保存し、さらに、アクセス許可属性の空間の範囲内で、第2設定データでアクセス禁止属性と対応付けられた各空間の範囲をアクセス禁止属性の空間の範囲として最終属性レジスタに保存することによって、各アドレス空間の最終属性データを最終属性レジスタに設定する。
【0088】
これにより、この発明のアクセス制限回路は、たとえ、アクセス制限ハードレジスタが改変不能となった後(例えば、搭載製品が工場から出荷された後)に、悪意あるプログラムがアクセスを禁止すべきアドレス空間の属性データをアクセス許可属性データに書き換える等の不法行為を行ったとしても、アクセス制限ハードレジスタに保存された属性データすなわち第1設定データに基づいて、アクセス制限を実行することができる。
【発明の効果】
【0089】
この発明に係るアクセス制限回路によれば、レジスタを複数用意してその構成を規定することで、従来のアクセス制限回路で必要とされていた優先順位判定部や重複判定部等の複雑な判定を行う回路を排除することができる。したがって、回路の構成を従来のアクセス制限回路も小規模にすることができる。また、優先順位判定部や重複判定部によって行われていた判定に要する時間だけ処理時間を短縮することができる。
【0090】
さらに、このアクセス制限回路によれば、任意の時点以後(例えば、搭載製品を工場から出荷した後)に、アクセス禁止属性の空間として設定すべき各アドレス空間の属性データのみがアクセス制限ソフトレジスタに保存される。そのため、近年の複雑な構造のソフトウェアに対応して細かなアクセス制限を容易に設定することができる。
【発明を実施するための最良の形態】
【0091】
以下、図を参照して、この発明の実施の形態につき説明する。各図において、共通する構成要素や同様な構成要素については、同一の符号を付し、それらの重複する説明を省略する。
【0092】
<この発明のアクセス制限回路の構成>
以下、図1を参照して、この発明のアクセス制限回路の構成につき説明する。なお、図1は、本実施の形態のアクセス制限回路の構成を説明するためのブロック図である。図1は、各構成要素の配置関係を、この発明を理解できる程度に、概略的に示してあるに過ぎない。よって、この発明は、図示例のみに限定されるものではない。
【0093】
なお、図1において、図4−1に示す従来のアクセス制限回路130aと同様の構成要素については、同一の符号を付し、それらの説明を省略する。また、図1には、アクセス制限回路130cを搭載する製品(以下、「搭載製品」と称する)としてのコンピュータ10は、外部機器20とダイレクトに接続されて通信しているように描かれている。しかしながら、実際は、コンピュータ10と外部機器20との間に、図示せぬネットワークや中継装置が介在している場合が多い。以下、この点については、説明を省略する。また、コンピュータ10と外部機器20との間の通信は、コンピュータ10が、通信によって入力されたデータを、一旦、図示せぬ格納部に読み出し自在に格納し、その後、データを格納部から読み出して、予め定められた処理を行うことによって、行われる。これらの一連の動作は、格納部に読み出し自在に予め格納されているプログラムによって規定されている。以下、この点についても、コンピュータ処理では常套手段であるので、その詳細な説明を省略する。
【0094】
図1に示すように、本実施の形態のアクセス制限回路130cは、図4−1に示す従来のアクセス制限回路130aと同様に、CPU120とメモリ資源140との間に設けられており、CPU120からメモリ資源140へ出力されるアクセス信号ACに対して予め定められた設定に基づいてメモリ資源140への出力を制限する。
【0095】
アクセス制限回路130cは、複数個のレジスタの中の1つを初期属性レジスタ132Aとして用い、複数個のレジスタの中のいくつかをアクセス制限ハードレジスタ133として用い、複数個のレジスタの中のいくつかをアクセス制限ソフトレジスタ134として用い、複数個のレジスタの中の1つを最終属性レジスタ132Bとして用いている。
【0096】
なお、アクセス制限ハードレジスタ133は、任意の時点で改変不能にすることができるハードウェアで実装されており、かつ、アクセス許可属性の空間として設定すべき各アドレス空間の属性データとして、空間の範囲とアクセス許可属性とが対応付けられて保存されるレジスタである。図1に示す例では、アクセス制限ハードレジスタ133として、第1及び第2のアクセス制限レジスタ133−1及び133−2が設けられている。
【0097】
また、アクセス制限ソフトレジスタ134は、任意の時点で適宜改変することができるソフトウェアで実装されており、かつ、アクセス禁止属性の空間として設定すべき各アドレス空間の属性データとして、空間の範囲とアクセス禁止属性とが対応付けられて保存されるレジスタである。図1に示す例では、アクセス制限ソフトレジスタ134として、第3及び第4のアクセス制限レジスタ134−1及び134−2が設けられている。
【0098】
また、本実施の形態のアクセス制限回路130cは、図4−1に示す従来のアクセス制限回路130aと同様に、内部に、比較部138を備えている。
【0099】
なお、アクセス制限ハードレジスタ133の数量は、アクセス制限をどの程度行うのかによって決まる。例えば、アクセス制限回路130cが周辺回路、ROM、RAMの3つの構成要素に対してそれぞれm個のアドレス空間のアクセス制限の設定を行い、さらに、ソフトウェアの構造に応じてn通りのアクセス制限の設定を行う場合を想定する。この場合に、アクセス制限ハードレジスタ133は、書き換えができないため、ソフトウェアの構造に応じて個々に用意する必要がある。そのため、この場合に、アクセス制限ハードレジスタ133は、n通り分の組み合わせすなわち(3×m×n)個用意する必要がある。一方、アクセス制限ソフトレジスタ134は、逐次書き換えができるため、ソフトウェアの構造に応じて個々に用意する必要がない。そのため、この場合に、アクセス制限ソフトレジスタ134は、1通り分の組み合わせすなわち(3×m×1)個用意すればよい。したがって、この場合に、用意するアクセス制限レジスタ133及び134の数量は、合計(3×m×(n+1))個となる。
【0100】
例えば、アクセス制限回路130cが周辺回路、ROM、RAMの3つの構成要素に対してそれぞれ3個のアドレス空間のアクセス制限の設定を行い、さらに、ソフトウェアの構造に応じて6通りのアクセス制限の設定を行う場合を想定すると、アクセス制限ハードレジスタ133の数量は、(3×3×6)=54個となり、アクセス制限ソフトレジスタ134の数量は、(3×3×1)=9個となる。したがって、この場合に、この発明のアクセス制限回路130cは、アクセス許可属性用に54個、アクセス禁止属性用に9個、合計63個のアクセス制限レジスタを用意することになる。
【0101】
<この発明のアクセス制限回路の動作>
以下、図2及び図3を参照して、この発明のアクセス制限回路130cによって行われる一般的なアクセス制限の例につき説明する。図2は、本実施の形態の回路の動作を示すフローチャートである。図3は、本実施の形態の回路によるアクセス制限の一例を示す図である。なお、図3に示す例では、初期属性レジスタ132Aには、全アドレス空間A10の初期属性データとして、アドレス空間A10の範囲と「読み取り禁止」属性及び「書き込み禁止」属性とが対応付けられて保存されている。また、第1のアクセス制限ハードレジスタ133−1には、アドレス空間B11の属性データとして、アドレス空間B11の範囲と「読み取り許可」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第2のアクセス制限ハードレジスタ133−2には、アドレス空間B12の属性データとして、アドレス空間B12の範囲と「読み取り許可」属性及び「書き込み許可」属性とが対応付けられて保存されている。また、第1のアクセス制限ソフトレジスタ134−1には、アドレス空間B13及びB14の属性データとして、アドレス空間B13及びB14の範囲と「書き込み禁止」属性とが対応付けられて保存されている。また、第2のアクセス制限ソフトレジスタ134−2には、アドレス空間B15の属性データとして、アドレス空間B15の範囲と「読み取り禁止」属性とが対応付けられて保存されている。
【0102】
アクセス制限回路130cは、コンピュータ10の電源が投入されると、これに応答して、図2に示す動作を開始する。
【0103】
すなわち、図2に示すように、まず、アクセス制限回路130cの比較部138が、最終属性データを生成し、最終属性レジスタ132Bに保存する(S105)。
【0104】
このS105の動作は、比較部138が、初期属性レジスタ132Aに保存された初期属性データ並びにアクセス制限ハードレジスタ133及びアクセス制限ソフトレジスタ134に保存された各属性データを参照して、アクセス制限適用後に禁止属性または許可属性となる各アドレス空間の範囲を特定し、範囲毎に、各空間の範囲と最終的な属性との対応付けを表す最終属性データを最終属性レジスタ132Bに保存することによって、行われる。
【0105】
具体的には、比較部138は、まず、初期属性レジスタ132Aから全アドレス空間A10の初期属性データを読み出し(S105a)、読み出された全アドレス空間A10の初期属性データに基づいて、全アドレス空間A10の範囲をアドレス空間C10の範囲として特定し、アドレス空間C10の属性データとして、アドレス空間C10の範囲と全アドレス空間A10の初期属性すなわち「読み取り禁止」属性及び「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する(S105b)。
【0106】
次に、比較部138は、各アクセス制限ハードレジスタ133(ここでは、アクセス制限ハードレジスタ133−1及び133−2)からアクセス許可属性の空間として設定すべきアドレス空間B11及びB12の属性データを読み出す(S105c)。比較部138は、アドレス空間B11及びB12の属性データを読み出すと、これに応答して、読み出されたアドレス空間B11の属性データに基づいて、アドレス空間B11の範囲を、アクセス禁止属性のアドレス空間(図3に示す例では、C11、C12、及びC13)の範囲として特定し、アドレス空間C11、C12、及びC13の属性データとして、アドレス空間C11、C12、及びC13の範囲とアドレス空間B11と同じ属性すなわち「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存するとともに、読み出されたアドレス空間B12の属性データに基づいて、アドレス空間B12の範囲を、アクセス禁止属性のアドレス空間(図3に示す例では、C15及びC16)の範囲として特定し、アドレス空間C15及びC16の属性データとして、アドレス空間C15及びC16の範囲とアドレス空間B12と同じ属性すなわち「読み取り許可」属性及び「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存する(S105d)。このとき、アドレス空間C11、C12、C13、C15、及びC16の属性データは、最終属性レジスタ132Bに保存されているアドレス空間C10の属性データの上に、上書きされる。なお、アドレス空間C10の中のアドレス空間C11、C12、C13、C15、及びC16を除く範囲、すなわち、アドレス空間C14の範囲は、元の属性が対応付けられた範囲のままとなる。すなわち、アドレス空間14の範囲は、「読み取り禁止」属性及び「書き込み禁止」属性が対応付けられた範囲のままとなる。
【0107】
次に、比較部138は、最終属性レジスタ132Bからアクセス許可属性の空間として設定すべきアドレス空間C11、C12、C13、C15、及びC16の属性データを読み出すとともに(S105e)、各アクセス制限ソフトレジスタ134(ここでは、アクセス制限ソフトレジスタ134−1及び134−2)からアクセス禁止属性の空間として設定すべきアドレス空間B13、B14及びB15の属性データを読み出す(S105f)。比較部138は、アドレス空間C11、C12、C13、C15、及びC16の属性データ、並びに、アドレス空間B13、B14及びB15の属性データを読み出すと、これに応答して、読み出されたアドレス空間C11、C12、C13、C15、及びC16の属性データに基づいて、アドレス空間C11、C12、C13、C15、及びC16の範囲を特定するとともに、アドレス空間B13、B14及びB15の属性データに基づいて、アドレス空間B13、B14及びB15の範囲を特定し、さらに、アドレス空間C11、C12、C13、C15、及びC16の範囲内でかつアドレス空間B13、B14及びB15の範囲を、アクセス禁止属性のアドレス空間(図3に示す例では、C12、C13、及びC15)の範囲として特定し、アドレス空間C12の最終属性データとして、アドレス空間C12の範囲とアドレス空間B11の属性に基づく「読み取り許可」属性及びアドレス空間B13の属性に基づく「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存するとともに、アドレス空間C13の最終属性データとして、アドレス空間C13の範囲とアドレス空間B15の属性に基づく「読み取り禁止」属性及びアドレス空間B11の属性に基づく「書き込み許可」属性とを対応付けて最終属性レジスタ132Bに保存し、アドレス空間C15の最終属性データとして、アドレス空間C15の範囲とアドレス空間B15の属性に基づく「読み取り禁止」属性及びアドレス空間B14の属性に基づく「書き込み禁止」属性とを対応付けて最終属性レジスタ132Bに保存する。このとき、アクセス禁止属性のアドレス空間であるアドレス空間C12、C13、及びC15の最終属性データは、最終属性レジスタ132Bに保存されているアドレス空間C10の属性データの上に、上書きされる。その結果、アドレス空間C12、C13、及びC15の範囲は、最終的な属性が設定されたアドレス空間の範囲となる。なお、アドレス空間C10の中のアドレス空間C12、C13、及びC15を除く範囲、すなわち、アドレス空間C11、C14、及びC16の範囲は、元の属性が対応付けられた範囲のままとなる。すなわち、アドレス空間C11及びC16の範囲は、「読み取り許可」属性及び「書き込み許可」属性が対応付けられた範囲のままとなり、アドレス空間14の範囲は、「読み取り禁止」属性及び「書き込み禁止」属性が対応付けられた範囲のままとなる。
【0108】
この後、比較部138は、アクセス信号ACがCPU120からメモリ資源140へ出力された場合に(具体的には、コンピュータ10の入出力部110が外部機器20からアクセス要求RQを受信し、これに応答して、コンピュータ10のCPU120がアクセス要求RQに応じたアクセス信号ACをメモリ資源140に出力した場合に)、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲とを比較する。そして、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲内にあるときに、アクセス信号ACのメモリ資源140への出力を実行する。すなわち、アクセス制限回路130cは、メモリ資源140に対するアクセス制限を行わない。一方、比較部138は、アクセス信号ACによって指定されたアドレス空間の範囲が最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間の範囲外にあるときに、アクセス信号ACのメモリ資源140への出力を中止する。すなわち、アクセス制限回路130cは、メモリ資源140に対するアクセス制限を行う。これらの動作は、以下のようにして行われる。
【0109】
すなわち、まず、比較部138は、S105で、最終属性データを最終属性レジスタ132Bに保存すると、これに応答して、各アクセス制限ソフトレジスタ134(ここでは、アクセス制限ソフトレジスタ134−1及び134−2)からアクセス禁止属性の空間として設定すべきアドレス空間の属性データを読み出し、S105の後に属性データが変更されていないかを判定する(S110)。
【0110】
S110の判定で、属性データが変更されていない場合すなわち“Yes”の場合に、工程は、S115に進む。一方、S110の判定で、属性データが変更されている場合すなわち“No”の場合に、工程は、S105に戻り、比較部138は、S105a〜S105gの動作を繰り返す。これによりアクセス制限回路130cは、最終属性レジスタ132Bに保存された最終属性データを更新する。
【0111】
S110の判定で、属性データが変更されていない場合すなわち“Yes”の場合に、比較部138は、アクセス信号ACがCPU120からアクセス制限回路130cに入力されたかを判定する(S115)。
【0112】
S115の判定で、アクセス信号ACがCPU120からアクセス制限回路130cに入力されている場合すなわち“Yes”の場合に、工程は、S120に進む。一方、S115の判定で、アクセス信号ACがCPU120からアクセス制限回路130cに入力されていない場合すなわち“No”の場合に、工程は、S110に戻る。
【0113】
S115の判定で、アクセス信号ACがCPU120からアクセス制限回路130cに入力されている場合すなわち“Yes”の場合に、比較部138は、アクセス信号ACが指定する各アドレス空間の範囲がアクセス許可属性の空間の範囲内であるかを判定する(S120)。この動作は、比較部138が、最終属性レジスタ132Bから各アドレス空間(図3に示す例では、C11、C12、C13、C14、C15、及びC16)の最終属性データを読み出し、アクセス信号ACが指定する各アドレス空間の範囲と最終属性レジスタ132Bにアクセス許可属性と対応付けられて保存された空間(図3に示す例では、「読み取り許可」属性としてのアドレス空間C11、C12、及びC16と「書き込み許可」属性としてのアドレス空間C11、C13、及びC16)の範囲とを比較することによって、行われる。
【0114】
S120の判定で、アクセス信号ACが指定する各アドレス空間の範囲がアクセス許可属性の空間の範囲内である場合すなわち“Yes”の場合に、工程は、S125に進む。一方、S120の判定で、アクセス信号ACが指定する各アドレス空間の範囲がアクセス許可属性の空間の範囲内でない場合すなわち“No”の場合に、工程は、S130に進む。
【0115】
S120の判定で、アクセス信号ACが指定する各アドレス空間の範囲がアクセス許可属性の空間の範囲内である場合すなわち“Yes”の場合に、比較部138は、アクセス信号ACのメモリ資源140への出力を実行する(S125)。
【0116】
一方、S120の判定で、アクセス信号ACが指定する各アドレス空間の範囲がアクセス許可属性の空間の範囲内でない場合すなわち“No”の場合に、比較部138は、アクセス信号ACのメモリ資源140への出力を中止する(S130)。
【0117】
S125またはS130の後、比較部138は、コンピュータ10の電源OFF処理がされるかを判定する(S135)。この判定は、CPU120から比較部138に電源OFF処理が行われることを表す通知信号が出力されることによって、行われる。
【0118】
S135の判定で、電源OFF処理がされる場合すなわち“Yes”の場合に、工程は、終了となる。一方、S135の判定で、電源OFF処理がされない場合すなわち“No”の場合に、工程は、S110に戻る。
【0119】
この発明のアクセス制限回路130cは、以上のように動作する。
【0120】
<この発明のアクセス制限回路の特性>
以下に、この発明のアクセス制限回路130cの特性につき説明する。
【0121】
この発明のアクセス制限回路130cによれば、比較部138は、初期属性レジスタ132Aに保存された初期属性データ並びにアクセス制限ハードレジスタ133に保存された属性データ及びアクセス制限ソフトレジスタ134に保存された属性データを参照して、初期属性レジスタ132Aにアクセス禁止属性と対応付けられて保存された全アドレス空間(図3に示す例では、A10)に対して、アクセス制限ハードレジスタ133にアクセス許可属性と対応付けられて保存された各アドレス空間の範囲(図3に示す例では、B11及びB12)をアクセス許可属性の空間の範囲として最終属性レジスタ132Bに保存し、さらに、アクセス許可属性の空間の範囲内で、アクセス制限ソフトレジスタ134にアクセス禁止属性と対応付けられて保存された各アドレス空間の範囲(図3に示す例では、B13、B14、及びB15)をアクセス禁止属性の空間の範囲として最終属性レジスタ132Bに保存することによって、各アドレス空間C10の最終属性データを最終属性レジスタ132Bに設定する。
【0122】
このような構成により、この発明のアクセス制限回路130cは、図4−1に示す従来のアクセス制限回路130aと比べると、アクセス制限回路130aの優先順位判定部135を排除することができる。そのため、アクセス制限回路130cは、アクセス制限回路130aに比べて、以下のような特性を得ることができる。
【0123】
例えば、アクセス制限回路130cが周辺回路、ROM、RAMの3つの構成要素に対してそれぞれ3個のアドレス空間のアクセス制限の設定を行い、さらに、ソフトウェアの構造に応じて1通りのアクセス制限の設定を行う場合を想定すると、アクセス制限ハードレジスタ133の数量は、(3×3×1)=9個となり、アクセス制限ソフトレジスタ134の数量は、(3×3×1)=9個となる。したがって、この場合に、この発明のアクセス制限回路130cは、アクセス許可属性用に9個、アクセス禁止属性用に9個、合計18個のアクセス制限レジスタを用意することになる。
【0124】
一方、図4−1に示すアクセス制限回路130aが、この発明のアクセス制限回路130cと同様のアクセス制限を行うためには、アクセス許可属性用に9個、アクセス禁止属性用に9個、合計18個のアクセス制限レジスタを用意することになる。この場合に、アクセス制限回路130aの優先順位判定部135は、以下の説明するように、各レジスタの優先順位を153通り判定する必要があった。すなわち、図9に示すように、まず、優先順位判定部135は、レジスタ1と他のレジスタとの間で優先順位を判定する。なお、図9は、従来の回路における優先順位判定部の動作説明図である。このとき、優先順位判定部135は、レジスタ1とレジスタ2〜18のそれぞれとを比較して、レジスタ1に対する各レジスタの優先順位を判定する。次に、優先順位判定部135は、レジスタ2と他のレジスタとの間で優先順位を判定する。このとき、レジスタ1とレジスタ2との間の優先順位が既に判定されているので、レジスタ1とレジスタ2との間でさらなる優先順位の判定は不要である。そのため、優先順位判定部135は、優先順位の判定が済んでいないレジスタ同士すなわちレジスタ2とレジスタ3〜18との間で優先順位を判定する。以下、同様に、優先順位判定部135は、レジスタ3以降の各レジスタに対して、優先順位の判定が済んでいないレジスタ同士の間で優先順位を判定する。このような組み合わせを数えると、その総数は、(17+16+…+1+0)=153通りとなる。したがって、アクセス制限回路130aの優先順位判定部135は、各レジスタの優先順位を153通り判定する必要があった。
【0125】
これに対して、この発明のアクセス制限回路130cは、アクセス制限回路130aの優先順位判定部135を排除することができる。そのため、ソフトウェアの構造に応じて行うアクセス制限を1通りとする場合では、アクセス制限回路130cは、アクセス制限回路130aと比べると、優先順位判定部135による153通りの各レジスタの優先順位の判定に要する時間だけ処理時間を短縮することができる。
【0126】
また、この発明のアクセス制限回路130cは、図4−2に示す従来のアクセス制限回路130bと比べると、アクセス制限回路130bの重複判定部136を排除することができる。そのため、アクセス制限回路130cは、アクセス制限回路130bに比べて、以下のような特性を得ることができる。
【0127】
例えば、図4−2に示すアクセス制限回路130bが、ソフトウェアの構造に応じて行うアクセス制限を1通りとする場合に、この発明のアクセス制限回路130cと同様に9個のアクセス禁止用のアクセス制限レジスタで行われていた設定と同じことを実現するためには、各レジスタの重なりを認める構成では、図10に示すように、最大で17個のレジスタが必要になる。この場合に、アクセス制限回路130bの重複判定部136は、以下の説明するように、各レジスタに保存されたアドレス空間の重複の有無を136通り判定する必要がある。すなわち、図11に示すように、まず、重複判定部136は、レジスタ1に保存されたアドレス空間と他のレジスタに保存されたアドレス空間との間で重複の有無を判定する。なお、図10及び図11は、それぞれ、従来の回路における重複判定部の動作説明図である。このとき、重複判定部136は、レジスタ1に保存されたアドレス空間とレジスタ2〜18のそれぞれに保存されたアドレス空間とを比較して、レジスタ1に保存されたアドレス空間に対する各レジスタに保存されたアドレス空間の重複の有無を判定する。次に、重複判定部136は、レジスタ2に保存されたアドレス空間と他のレジスタに保存されたアドレス空間との間で重複の有無を判定する。このとき、レジスタ1に保存されたアドレス空間とレジスタ2に保存されたアドレス空間との間の重複の有無が既に判定されているので、レジスタ1に保存されたアドレス空間とレジスタ2に保存されたアドレス空間との間でさらなる重複の有無の判定は不要である。そのため、重複判定部136は、重複の有無の判定が済んでいないレジスタに保存されたアドレス空間同士すなわちレジスタ2に保存されたアドレス空間とレジスタ3〜18に保存されたアドレス空間との間で重複の有無を判定する。以下、同様に、重複判定部136は、レジスタ3以降の各レジスタに保存されたアドレス空間に対して、重複の有無の判定が済んでいないレジスタに保存されたアドレス空間同士の間で重複の有無を判定する。このような組み合わせを数えると、その総数は、(16+…+1+0)=136通りとなる。したがって、アクセス制限回路130bの重複判定部136は、各レジスタに保存されたアドレス空間の重複の有無を136通り判定する必要があった。
【0128】
これに対して、この発明のアクセス制限回路130cは、アクセス制限回路130bの重複判定部136を排除することができる。そのため、ソフトウェアの構造に応じて行うアクセス制限を1通りとする場合では、アクセス制限回路130cは、アクセス制限回路130bと比べると、重複判定部136による136通りの各レジスタに保存されたアドレス空間の重複の有無の判定に要する時間だけ処理時間を短縮することができる。
【0129】
以上の通り、この発明のアクセス制限回路130cによれば、レジスタを複数用意してその構成を規定することで、図4−1に示す優先順位判定部135や図4−2に示す重複判定部136等の複雑な判定を行う回路を排除することができる。したがって、回路の構成を図4−1及び図4−2に示す従来のアクセス制限回路130a及び130bよりも小規模にすることができる。また、優先順位判定部135や重複判定部136によって行われていた判定に要する時間だけ処理時間を短縮することができる。
【0130】
さらに、このアクセス制限回路130cによれば、任意の時点以後(例えば、搭載製品10を工場から出荷した後)に、アクセス禁止属性の空間として設定すべき各アドレス空間の属性データのみがアクセス制限ソフトレジスタ134に保存される。そのため、多々あるソフトウェア毎に対応して細かなアクセス制限を容易に設定することができるので、保護したいメモリ資源に割り振られたアドレス空間が非連続に配置された場合であっても、容易に対応することができる。
【0131】
この発明は、上述の実施の形態例に限定されることなく、この発明の要旨を逸脱しない範囲で種々の変更や変形を行うことができる。
【0132】
例えば、実施の形態では、搭載製品10の一例としてコンピュータを用いて説明したが、この発明は、コンピュータに限らず、LSIにも適用することができる。なお、LSIチップのメモリ資源のアクセス制限に利用する場合は、属性データのハードウェアによる実装は、LSIメーカでのLSI製造時に行われることになる。
【図面の簡単な説明】
【0133】
【図1】本実施の形態のアクセス制限回路のブロック図である。
【図2】本実施の形態の回路の動作を示すフローチャートである。
【図3】本実施の形態の回路によるアクセス制限の一例を示す図である。
【図4−1】従来のアクセス制限回路の一例を示すブロック図(1)である。
【図4−2】従来のアクセス制限回路の一例を示すブロック図(2)である。
【図5】従来の回路によるアクセス制限の一例を示す図(1)である。
【図6】従来の回路によるアクセス制限の一例を示す図(2)である。
【図7】従来の回路によるアクセス制限の一例を示す図(3)である。
【図8】従来の回路によるアクセス制限の一例を示す図(4)である。
【図9】従来の回路における優先順位判定部の動作説明図である。
【図10】従来の回路における重複判定部の動作説明図(1)である。
【図11】従来の回路における重複判定部の動作説明図(2)である。
【符号の説明】
【0134】
10 …搭載製品(コンピュータ)
20 …外部機器
110 …入出力部
120 …CPU
130(130a、130b、130c) …アクセス制限回路
132A …初期属性レジスタ
132B …最終属性レジスタ
133(133−1,133−2) …アクセス制限ハードレジスタ
134(134−1,134−2) …アクセス制限ソフトレジスタ
135 …優先順位判定部
136 …重複判定部
138 …比較部
300 …メモリ資源(メモリ、レジスタ等)
RQ …アクセス要求
AC …アクセス信号
FD …全アドレス空間の初期属性データ
SD …各アドレス空間の属性データ
LD …各アドレス空間の最終属性データ

【特許請求の範囲】
【請求項1】
CPUとメモリ資源との間に介在し、当該CPUから当該メモリ資源へ出力されるアクセス信号に対して予め定められた設定に基づいて当該メモリ資源への出力を制限することにより、当該メモリ資源へのアクセスを制限するアクセス制限回路において、
前記メモリ資源に割り振られた各アドレス空間の初期属性データとして、アドレス空間の全範囲とアクセス禁止属性とが対応付けられて保存される初期属性レジスタと、
任意の時点で改変不能にすることができるハードウェアで実装されており、かつ、アクセス許可属性の空間として設定すべき各アドレス空間の属性データを第1設定データとし、当該第1設定データの各アドレス空間の範囲とアクセス許可属性とが対応付けられて保存されるアクセス制限ハードレジスタと、
任意の時点で適宜改変することができるソフトウェアで実装されており、かつ、アクセス禁止属性の空間として設定すべき各アドレス空間の属性データを第2設定データとし、当該第2設定データの各アドレス空間の範囲とアクセス禁止属性とが対応付けられて保存されるアクセス制限ソフトレジスタと、
各アドレス空間の最終属性データとして、当該最終属性データの各アドレス空間の範囲とこの範囲のそれぞれに対応するアクセス許可属性またはアクセス禁止属性とが対応付けられて保存される最終属性レジスタと、
前記アクセス信号を前記CPUから入力して、当該アクセス信号によって指定されたアドレス空間の範囲を指定範囲とし、当該指定範囲と前記最終属性データの各アドレス空間の範囲とを比較して、当該指定範囲が前記最終属性データでアクセス許可属性と対応付けられたアドレス空間の範囲内にあるときに、前記アクセス信号を前記メモリ資源へ出力し、かつ、当該指定範囲が前記最終属性データでアクセス許可属性と対応付けられたアドレス空間の範囲外にあるときに、前記アクセス信号の前記メモリ資源への出力を中止する比較部とを有し、
前記比較部は、
前記初期属性レジスタに保存された前記初期属性データ、前記アクセス制限ハードレジスタに保存された前記第1設定データ、及び前記アクセス制限ソフトレジスタに保存された前記第2設定データを参照して、前記初期属性データでアクセス禁止属性と対応付けられたアドレス空間の全範囲に対して、前記第1設定データでアクセス許可属性と対応付けられた各アドレス空間の範囲をアクセス許可属性の空間の範囲として前記最終属性レジスタに保存し、さらに、当該アクセス許可属性の空間の範囲内で、前記第2設定データでアクセス禁止属性と対応付けられた各アドレス空間の範囲をアクセス禁止属性の空間の範囲として前記最終属性レジスタに保存することによって、各アドレス空間の最終属性データを前記最終属性レジスタに設定する
ことを特徴とするアクセス制限回路。
【請求項2】
請求項1に記載のアクセス制限回路において、
前記アクセス制限ハードレジスタは、不揮発性メモリによって構成されている
ことを特徴とするアクセス制限回路。
【請求項3】
請求項1に記載のアクセス制限回路において、
前記アクセス制限ハードレジスタは、周りの配線が予め定められたパターンのハードワイヤによって構成されている
ことを特徴とするアクセス制限回路。
【請求項4】
請求項1〜3のいずれか一項に記載のアクセス制限回路において、
前記アクセス制限ハードレジスタは、当該アクセス制限回路を搭載する製品が工場から出荷されるときに、内部に保存された前記第1設定データが改変不能な状態にされる
ことを特徴とするアクセス制限回路。
【請求項5】
請求項1に記載のアクセス制限回路において、
前記初期属性レジスタは、前記初期属性データとして、アドレス空間の全範囲と読み取り動作及び書き込み動作に対するアクセス禁止属性とが対応付けられて保存され、
前記アクセス制限ハードレジスタは、前記第1設定データとして、当該第1設定データの各アドレス空間の範囲と読み取り動作及び書き込み動作の双方または一方に対するアクセス許可属性とが対応付けられて保存され、
前記アクセス制限ソフトレジスタは、前記第2設定データとして、当該第2設定データの各アドレス空間の範囲と読み取り動作及び書き込み動作の双方または一方に対するアクセス禁止属性とが対応付けられて保存され、
前記最終属性レジスタは、前記最終属性データとして、当該最終属性データの各アドレス空間の範囲と、この範囲のそれぞれに対応する、読み取り動作及び書き込み動作の双方または一方に対するアクセス許可属性及びアクセス禁止属性の双方または一方とが対応付けられて保存され、及び、
前記比較部は、読み取り動作及び書き込み動作のそれぞれに応じて、前記初期属性データでアクセス禁止属性と対応付けられたアドレス空間の全範囲に対して、前記第1設定データでアクセス許可属性と対応付けられた各アドレス空間の範囲をアクセス許可属性の空間の範囲として前記最終属性レジスタに保存し、さらに、当該アクセス許可属性の空間の範囲内で、前記第2設定データでアクセス禁止属性と対応付けられた各アドレス空間の範囲をアクセス禁止属性の空間の範囲として前記最終属性レジスタに保存する
ことを特徴とするアクセス制限回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4−1】
image rotate

【図4−2】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2009−301343(P2009−301343A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2008−155484(P2008−155484)
【出願日】平成20年6月13日(2008.6.13)
【出願人】(308033711)OKIセミコンダクタ株式会社 (898)
【Fターム(参考)】