説明

メモリ保護装置、メモリ保護システムおよびメモリ保護方法

【課題】メモリ容量を増加させることなく、メモリを保護することのできるメモリ保護装置を提供する。
【解決手段】パリティを元データに付与するパリティ付与手段100と、要求元により設定されたアクセスキーを保持するアクセスキーレジスタ110と、パリティ付与後データとアクセスキーレジスタ110が保持しているアクセスキーとの排他的論理和をメモリ40に書き込む第1排他的論理和算出手段102と、データの読み出し要求元によりアクセスキーレジスタ110に設定されたアクセスキーと、メモリ40に格納されている第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段120と、第2演算後データのシンドロームに基づいて、第2演算後データを元データとして出力するか否かを判断する出力判断手段124とを備えた。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部のメモリへの不正アクセスを防止するメモリ保護装置、メモリ保護システムおよびメモリ保護方法に関するものである。
【背景技術】
【0002】
現代のコンピュータシステムにおいては、複数のプロセス(プログラム、タスクまたはジョブ)を切り換えて処理するマルチプログラミング方式を用いることで、例えばメモリやCPUなどコンピュータシステム内のさまざまな資源を有効に活用している。
【0003】
このため、あるプロセスが処理に用いるメモリ上のデータを他のプロセスが盗み見たり、上書きして破壊したりする問題が発生する。
【0004】
そこで従来は、非特許文献1に開示されているように、メモリの一定のサイズ(例えば4KB)毎にストレージキーと呼ぶ情報を記憶しておき、プロセスがメモリをアクセスする場合には、プロセスの持つキーとアクセスするメモリのストレージキーを照らし合わせてアクセスの可否を判断する方式が広く用いられている。
【0005】
【非特許文献1】z/Architecture Principles of Operation (IBM; SA22-7832-00; December 2000)3-9 〜 3-12ページ
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のようにストレージキーを用いたメモリ保護方式においては、データを記憶するメモリに加えてストレージキーを記憶するためのメモリが必要になる。このため、ハードウェア量が増加する。
【0007】
また、保護の単位が例えば4KBのページ単位であり、サイズの小さなデータを保護しようと思うと使用しない無駄なメモリ領域が発生する。この問題は、より小さなメモリ領域単位でストレージキーを対応させることで解決することもできるが、その場合はストレージキーを記憶するためにさらに多くのメモリが必要になる。
【0008】
本発明は、上記に鑑みてなされたものであって、メモリ容量を増加させることなく、メモリを保護することのできるメモリ保護装置、メモリ保護システムおよびメモリ保護方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明は、メモリ保護装置であって、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【0010】
また、本発明の他の形態は、メモリコントローラと、外部のメモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、前記メモリ保護装置は、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【0011】
また、本発明の他の形態は、メモリと、当該メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、前記メモリ保護装置は、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【0012】
また、本発明の他の形態は、メモリ保護方法であって、メモリに書き込むべき元データのパリティを生成するパリティ生成ステップと、前記パリティ生成ステップにおいて生成した前記パリティを前記元データに付与するパリティ付与ステップと、前記メモリへのデータの書き込みを要求する要求元が前記メモリへのアクセスに利用される当該要求元固有のアクセスキーをアクセスキーレジスタに設定するアクセスキー設定ステップと、前記パリティ付与ステップにおいて前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出ステップと、前記第1排他的論理和算出ステップにおいて算出された第1演算後データを前記メモリに書き込む書込ステップと、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出ステップと、前記第2排他的論理和算出ステップにおいて算出された第2演算後データからシンドロームを算出するシンドローム算出ステップと、前記シンドローム算出ステップにおいて算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断ステップとを有することを特徴とする。
【発明の効果】
【0013】
本発明にかかるメモリ保護装置においては、プロセスなどのメモリへのデータの読み書きの要求元がメモリにアクセスする際には、アクセスキーレジスタに当該要求元に固有のアクセスキーを設定する。そして、メモリにデータを書き込む際には、このアクセスキーとの排他的論理和の演算結果がメモリに書き込まれ、メモリからデータを読み出す際には、メモリに書き込まれた演算結果とアクセスキーと排他的論理和が算出される。したがって、このアクセスキーが一致しない場合には、正しい読み出すことができず、本来アクセスすべき要求元以外の要求元は、この演算結果から正しい元データを得ることができないので、メモリを保護することができるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に、本発明にかかるメモリ保護装置、メモリ保護システムおよびメモリ保護方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【0015】
(実施の形態1)
図1は、実施の形態1にかかるメモリ保護装置1の全体構成を示すブロック図である。メモリ保護装置1は、保護処理装置10と、プロセッサ20と、メモリコントローラ30と、メモリ40とを備えている。メモリコントローラ30とプロセッサ20とはプロセッサバス21を介して接続している。保護処理装置10は、メモリコントローラ30とメモリ40の間に挿入する独立の装置である。より具体的には、独立のLSI(Large Scale Integration)チップとして実装されてもよい。
【0016】
メモリ40は、ECC(Error Correcting CodeまたはError Control Code)をもつ。ここで、ECCについて説明する。図2および図3は、ECCを説明するための図である。ECCは、メモリの信頼性を向上させる手法として従来から広く用いられている。
【0017】
図2は、データをメモリに書き込む際の処理を説明するための図である。一般に、図2に示すように、一度にメモリに読み書きするnビットの大きさのデータDに対して、そのデータの値から計算したmビットのパリティを付加する。そして、n+mビットのデータD’をメモリに書き込む。
【0018】
図3は、データD’を読み出す際の処理を説明するための図である。メモリからデータD’を読み出す際には、データD’と検査行列Hの転置行列の積によってmビットの値を計算する。このmビットの値をシンドロームと呼ぶ。シンドロームが0である場合はnビットのデータの値に誤りがないことを示している。シンドロームが0でない場合には誤りが存在することを示している。誤りが訂正可能な場合は誤りを訂正する。
【0019】
ECCには様々な方式がある。それぞれの方式によってパリティのビット数やその計算方法、シンドロームを計算する検査行列およびシンドロームから誤りを訂正するビット位置の求め方が異なる。コンピュータシステムのメモリにおいて広く用いられているのは、SEC−DED符号(1誤り訂正2誤り検出符号)である。
【0020】
SEC−DED符号では、データまたはそのパリティの中に1ビットの誤り(1誤りとも呼ぶ)がある場合は誤っている位置を特定することができる。2ビットの誤り(2誤りとも呼ぶ)がある場合は位置は特定できないが誤りがあることを検出することができる。
【0021】
通常、32ビットのデータには7ビットのパリティをECCとして付加する。また、64ビットのデータには8ビットのパリティを、128ビットのデータには9ビットのパリティを付加する。
【0022】
SEC−DED符号にも、そのパリティの計算方法および検査行列の作り方の違いによって、様々な方式が存在する。その中でも広く用いられるのは、拡大ハミング符号と、Hsiaoの符号である。拡大ハミング符号については、Algebraic Code for Data Transmission;Richard E. Blahut,2003,Cambridge University Press 63ページに記載されている。Hsiaoの符号については、A Class of Optimal Minimum Odd−weight−column SEC−DED Codes;M. Y. Hsiao, IBM Journal of Research and Development, July 1970 395〜401ページに記載されている。これら2つのSEC−DED符号においては、シンドロームの値の解釈の方法が異なるが、誤り訂正/検出の能力は同等である。
【0023】
SEC−DED符号では、誤りがない時にはシンドロームの値が0になる。誤りが1つある場合には、シンドロームは誤っているビット位置と1対1に対応する0以外の値になる。通常この値は、検査行列の中の誤っているビット位置に対応する列の値に等しくなる。
【0024】
このとき、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず1になり、Hsiaoの符号ではシンドロームの中の1のビットが必ず奇数個になる。
【0025】
誤りが2つある場合にもシンドロームは0以外の値である。この場合、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず0になる。Hsiaoの符号では、シンドロームの中の1のビットが必ず偶数個になる。
【0026】
なお、通常SEC−DED符号を使う場合には3つ以上の誤りは考慮しない。これは、以下の示すように、3個以上の誤りの場合には2個以下の誤りの場合と区別をつけられない場合があるためである。
【0027】
誤りが3以上の奇数個ある場合には、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず1になる。Hsiaoの符号ではシンドロームの中の1のビットが必ず奇数個になる。これは、誤りが1つの場合と同じである。そのため、誤りがあることはわかる。しかし、多くの場合は1誤りと区別することができない。
【0028】
誤りが4以上の偶数個ある場合には、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず0になる。Hsiaoの符号ではシンドロームの中の1のビットが必ず偶数個になる。これは、誤りが2つの場合と同じである。
【0029】
ただし、誤りが2つの場合はシンドロームが必ず0ではないのに対して、4以上の偶数個の誤りの場合はシンドロームが0になることがある。そのため、誤りがあるにもかかわらず、誤りがないと判断される場合がある。
【0030】
実施の形態1においては、ECCとして、SEC−DED符号を用いる場合について説明する。SEC−DED符号は、Hsiaoの符号である。なお、他の例としては、拡大ハミング符号であってもよい。また、これ以外の符号であってもよい。さらに、SEC−DED符号以外のECCであってもよい。
【0031】
再び説明を図1に戻す。保護処理装置10は、データに対しECCに加えてメモリ保護のための情報を重ね合わせて記憶することでメモリ保護を実現する。ECCを利用するため、メモリの保護単位はECCの単位と同じ32ビットや64ビットといったサイズになる。すなわち、従来よりも細かな単位でのメモリ保護を実現することができる。
【0032】
保護処理装置10は、パリティ生成回路100と、第1排他的論理和回路102と、アクセスキーレジスタ110と、第2排他的論理和回路120と、シンドローム計算回路122と、誤り訂正回路124とを有している。
【0033】
パリティ生成回路100は、メモリコントローラ30を介してプロセッサ20から取得したデータに対するパリティを生成する。そして、プロセッサ20から取得したデータに対しパリティを付加する。アクセスキーレジスタ110は、プロセッサ20において起動しているプロセスにより設定されたアクセスキーを保持する。アクセスキーは、メモリ40にアクセスするためのキーである。
【0034】
メモリ保護装置1上で動作するオペレーティングシステムは、マルチプログラミングを実現するために複数のプログラムを切り替えて実行させる機能を有している。各プロセスとそのアクセスキーの対応は、このオペレーティングシステムにより管理されている。アクセスキーは、プロセスごとに固有の値を持つように設定されている。すなわち、異なるプロセスは異なるアクセスキーを持つ。
【0035】
第1排他的論理和回路102は、パリティ生成回路100により生成されたパリティが付加されたデータと、アクセスキーレジスタ110に保持されているアクセスキーとの排他的論理和を計算する。そして、計算結果をメモリ40に書き込む。すなわち、第1排他的論理和回路102は、書込手段として機能する。
【0036】
第2排他的論理和回路120は、メモリ40に格納されているデータと、アクセスキーレジスタ110に保持されているアクセスキーとの排他的論理和を計算する。シンドローム計算回路122は、第2排他的論理和回路120の計算結果からシンドロームを計算する。誤り訂正回路124は、シンドローム計算回路122により計算されたシンドロームの値に応じて、適宜誤り訂正を行う。すなわち、誤り訂正回路124は、出力判断手段として機能する。
【0037】
なお、メモリコントローラ30がECC回路を有する場合がある。この場合には、パリティ生成回路100と、シンドローム計算回路122と、誤り訂正回路124は有さなくてもよい。そして、メモリコントローラ30の内部に形成されたECC回路を利用する。
【0038】
図4は、メモリ40にデータを書き込む処理を示すフローチャートである。プロセスを切り替える場合には(ステップS100,Yes)、切り替え後のアクセスキーをアクセスキーレジスタ110に設定する(ステップS102)。
【0039】
次に、パリティ生成回路100は、パリティを生成し、メモリ40に書き込むべきデータに付与する(ステップS104)。次に、第1排他的論理和回路102は、パリティが付与されたデータとアクセスキーレジスタ110に保持されているアクセスキーの排他的論理和を計算する(ステップS106)。次に、演算後のデータをメモリ40に書き込む(ステップS108)。以上で書き込み処理が完了する。
【0040】
図5は、書き込み処理におけるデータの流れを示す図である。起動しているプロセスがメモリ40にデータDを書き込む際には、ECCによりパリティが付加され、パリティ付加データD’が得られる。
【0041】
次に、パリティ付加データD’と、このプロセスによりアクセスキーレジスタ110に書き込まれたアクセスキー「Ka」との排他的論理和「(」をとった値「D’(Ka」すなわち、記憶データD’’がメモリ40に書き込まれる。本実施の形態にかかる記憶データD’’は、第1演算後データに相当する。
【0042】
図6は、メモリ40からデータを読み出す処理を示すフローチャートである。プロセスを切り替える場合には(ステップS200,Yes)、切り替え後のアクセスキーをアクセスキーレジスタ110に設定する(ステップS202)。
【0043】
次に、第2排他的論理和回路120は、メモリ40に書き込まれている記憶データD’’を読み出す(ステップS204)。次に、読み出した記憶データD’’とアクセスキーレジスタ110に保持されているアクセスキーの排他的論理和を計算する(ステップS206)。
【0044】
さらに、シンドローム計算回路122は、ECCによりシンドロームを計算する(ステップS208)。シンドロームの値が0である場合、すなわち誤りが検出されない場合には(ステップS210,Yes)、データDを読み出す(ステップS212)。
【0045】
また、誤りが1つ検出された場合(ステップS210,No、ステップS214,Yes)、すなわちシンドロームの値が0以外であって、シンドロームの中の1のビットが奇数個であり、かつシンドロームの値が検査行列のいずれかの列と同じ値をもつ場合には、誤り訂正回路124は、誤り訂正を行い(ステップS216)、訂正後のデータDを読み出す(ステップS212)。誤りが2つ検出された場合(ステップS210,No、ステップS214,No)、すなわちシンドロームの値が0以外であって、シンドロームの中の1のビットの数が偶数個であるか、またはシンドロームの中の1のビットが奇数個であり、かつシンドロームの値が検査行列のいずれの列とも異なる値をもつ場合には、データDにかえて「0」データを出力する(ステップS218)。以上でデータ読み出し処理が完了する。
【0046】
図7は、メモリ40に書き込まれたデータを読み出す際の処理を説明するための図である。起動しているプロセスが、メモリ40からデータを読み出す際には、記憶データD’’すなわち、「D’(Ka」と、このプロセスによりアクセスキーレジスタ110に書き込まれたアクセスキー「Kb」との排他的論理和「(」をとった値「D’’ (Kb(=D’ (Ka(Kb)」が計算される。なお、この値は、第2演算後データに相当する。その後、シンドローム計算回路122による計算結果に基づいて、ECCによる誤り検査と訂正を行った値を読み出す。
【0047】
書き込み時と読み出し時のアクセスキーが同じ場合、すなわち、Ka=Kbの場合には、正しいデータDを読み出すことができる。書き込み時と読み出し時のアクセスキーが異なる場合、すなわちKa≠Kbの場合は、メモリ40から読み出した記憶データD’’に対して、Ka(Kbの値の1のビットの数だけ誤りが発生している状態である。したがって、この場合には、誤り訂正回路124は、「0」データを出力する。
【0048】
なお、他の例としては、書き込み時と読み出し時のアクセスキーが異なる場合には、誤り訂正回路124は、「0」データを出力するのにかえて、データを出力しないこととしてもよい。
【0049】
アクセスキーは、プロセスごとに固有の値を持つように設定されている。したがって、所定のプロセスが書き込んだデータを、他のプロセスが読み出そうとした場合には、本実施の形態にかかるメモリ保護装置1においては、読み出すことができない。すなわち、他のプロセスからデータを保護することができる。
【0050】
また、他の例としては、複数のプロセスが1つのアクセスキーを共有してもよい。この場合には、当該複数のプロセスの間でデータを共有することができ、さらにこれ以外のプロセスからデータを保護することができる。
【0051】
なお、アクセスキーのサイズは、メモリのデータ長(nビット)とパリティ長(mビット)を合わせたn+mビット以下であればよく、任意の長さに決めてよい。
【0052】
メモリ保護装置1は、以上のように不正なプロセスがデータを読むことを防止する一方で、データの書き込みにおいても、本来データを書くことが許されているプロセスだけが書けるように保護する。具体的には、メモリ40にデータを書き込む際には、書き込む前に、一度メモリ40に書き込まれているデータを読み出す。そして、アクセスキーの不一致で読み出しのアクセスができないアドレスにはデータを書き込めないように制御する。これにより、細かな単位の書き込みアクセスの保護を実現することができる。
【0053】
以上、本発明を実施の形態1を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【0054】
そうした第1の変更例として、実施の形態1にかかるメモリ保護装置1においては、保護処理装置10は、独立のLSIチップとして実装されたが、これにかえて、各種のシステムLSIに組み込むためのIP(Intellectual Property)として実現してもよい。
【0055】
また、第2の変更例として、実施の形態1にかかるメモリ保護装置1は、保護処理装置10は、プロセッサ20、メモリコントローラ30とは独立した回路として実装されたが、これらは一体に形成されてもよい。図8は、第2の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。第2の変更例にかかるメモリ保護装置1は、システムLSI11と、メモリ40とを備えている。システムLSI11は、保護処理装置10と、プロセッサ20と、メモリコントローラ30とを有している。
【0056】
メモリコントローラ30は、プロセッサバス21と外部のメモリ40の間のプロトコル変換を行う。保護処理装置10は、メモリコントローラ30とメモリ40を接続する位置に組み込まれている。保護処理装置10は、メモリコントローラ30の付加機能として実装されてもよい。
【0057】
また、第3の変更例としては、保護処理装置10は、メモリコントローラ30と一体の装置として実装されてもよい。図9は、第3の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。第3の変更例にかかるメモリ保護装置1は、プロセッサ20と、ブリッジLSI12と、メモリ40とを備えている。ブリッジLSI12は、メモリコントローラ30と保護処理装置10とを有している。
【0058】
ブリッジLSI12は、プロセッサ20とメモリ40の間に組み込まれ、保護処理装置10とプロセッサ20とを接続する。
【0059】
また、第4の変更例としては、保護処理装置10は、メモリ40と一体の装置として実装されてもよい。図10は、第4の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。第4の変更例にかかるメモリ保護装置1は、プロセッサ20と、メモリコントローラ30と、メモリチップ13とを備えている。メモリチップ13は、保護処理装置10と、メモリ40とを有している。
【0060】
このように、メモリ40側に保護処理装置10を設けた場合には、メモリチップ13内部でアクセスキーが異なることを検出し、データがメモリチップ13から読み出されるのを防ぐことができる。なお、メモリコントローラ30がECC回路を有する場合がある。この場合には、パリティ生成回路100と、シンドローム計算回路122と、誤り訂正回路124は有さなくともよい。そして、メモリコントローラ30の内部に形成されたECC回路を利用する。
【0061】
また、第5の変更例としては、実施の形態1にかかるメモリ保護装置1においては、プロセスとアクセスキーとは、1対1に対応していたが、これに限定されるものではなく、1つのプロセスが複数のアクセスキーを有してもよい。また、複数のプロセスが1つのアクセスキーを有してもよい。
【0062】
この場合、アクセスキーレジスタ110に設定されているアクセスキーと異なるアクセスキーが必要になると、必要なアクセスキーをアクセスキーレジスタ110に設定する。具体的には、オペレーティングシステムがアクセスキーレジスタ110に設定してもよい。
【0063】
また、第6の変更例としては、実施の形態1にかかるメモリ保護装置1においては、複数のプロセス間の不正アクセスを対象とし、異なるプロセスからの不正アクセスを防止すべくアクセス制御を行ったが、これにかえて、マルチプロセッサにおける複数のプロセッサ間の不正アクセスを対象としてもよい。この場合には、異なるプロセッサからの不正アクセスを防止することができる。この場合には、プロセッサごとのアクセスキーが設定される。
【0064】
また、プロセスとI/O装置の間の不正アクセスを対象としてもよい。この場合には、両者の間の不正アクセスを防止することができる。さらに、プロセス、プロセッサ、およびI/O装置のそれぞれの間の不正アクセスを対象としてもよい。このように、不正アクセスから保護する対象は実施の形態1に限定されるものではない。
【0065】
また、第7の変更例としては、実施の形態1にかかるメモリ保護装置1においては、メモリ40にデータを書き込む際には、メモリ40からデータを読み出し、データの読み出しに成功した場合に書き込みを許可したが、これにかえて、アクセスキーにより書き込み可能か否かを判断してもよい。
【0066】
図11は、第7の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。第7の変更例にかかるメモリ保護装置1の保護処理装置10は、書込アクセスキーテーブル112と、書込許可部114とを有している。
【0067】
図12は、書込アクセスキーテーブル112のデータ構成を模式的に示す図である。書込アクセスキーテーブル112は、アクセスキーとメモリ開始番地およびメモリ終了番地とを対応付けている。書込許可部114は、プロセッサ20から取得したアクセスキーに対応付けられているメモリ開始番地とメモリ終了番地の間のメモリ領域へのデータの書き込みを許可する。またこれ以外の領域へのデータの書き込みを禁止する。さらに、書込アクセスキーテーブル112はオペレーティングシステムにより作成され保護処理装置10に設定されるのが望ましい。
【0068】
(実施の形態2)
次に、実施の形態2にかかるメモリ保護装置1について説明する。実施の形態2にかかるメモリ保護装置1においては、アクセスするメモリアドレスごとにアクセスキーが設定されている。
【0069】
図13は、実施の形態2にかかるメモリ保護装置1の全体構成を示すブロック図である。実施の形態2にかかるメモリ保護装置1の保護処理装置10は、読出アクセスキーテーブル116と、アクセスキー選択部118をさらに有している。
【0070】
図14は、読出アクセスキーテーブル116のデータ構成を示す図である。このように、読出アクセスキーと、メモリ開始番地とを対応付けて保持している。そして、プロセッサ20からメモリ開始番地が指定されると、アクセスキー選択部118は、読出アクセスキーテーブル116において開始番地に対応付けられているアクセスキーを選択する。そして、選択したアクセスキーをアクセスキーレジスタ110に設定する。読出アクセスキーテーブル116は、オペレーティングシステムにより設定されるのが好ましい。
【0071】
この場合にも、実施の形態1にかかるメモリ保護装置1と同様に、他のプロセスからデータを保護することができる。さらに、メモリアドレスごとにアクセスキーが異なっているので、メモリアドレスの所定の単位ごとにデータを保護することができる。
【0072】
また、実施の形態1の第5の変更例において説明したようにプロセスとアクセスキーが1対1に対応しない場合であっても、このようにメモリアドレスごとにアクセスキーを管理することにより、不正アクセスを防止することができる。
【0073】
なお、実施の形態2にかかるメモリ保護装置1のこれ以外の構成および処理は、実施の形態1にかかるメモリ保護装置1の構成および処理と同様である。
【0074】
(実施の形態3)
次に、実施の形態3にかかるメモリ保護装置1について説明する。実施の形態1および実施の形態2にかかるメモリ保護装置1においては、アクセスキーは任意に設定されたが、実施の形態3にかかるメモリ保護装置1においては、異なるアクセスキーでの読み出しをECCによって検出可能となるように、各アクセスキーを設定する。
【0075】
以下、実施の形態3にかかるメモリ保護装置1において設定されるアクセスキーについて説明する。異なるアクセスキーでの読み出しをECCによって検出するには、以下のようにアクセスキー「Ka」と「Kb」を選ぶ。すなわち、任意のアクセスキー「Ka」で書き込んだデータをアクセスキー「Kb」で読み出した場合に、「D’(Ka(Kb」から計算したシンドロームが必ず2誤りとして検出できるようなアクセスキー「Ka」と「Kb」を選ぶ。なお、1誤りとして検出された場合には、誤り訂正回路124において訂正されてしまう。このため、1誤りとして検出できるようなアクセスキー「Ka」と「Kb」では好ましくない。
【0076】
Hsiaoの方式のSEC−DED符号を用いて実装する場合、シンドロームの値の1のビットの数が偶数(2以上)となる場合に2ビット誤りと解釈される。したがって、1のビットの数が2以上の偶数個になるようなアクセスキー「Ka」と「Kb」を選べばよい。
【0077】
「D’(Ka(Kb」から計算したシンドロームが必ず2誤りとして検出されるためには、「Ka(Kb」から計算したシンドロームの値の1のビットの数が必ず2以上の偶数個になるようにアクセスキーを選ぶ必要がある。
【0078】
さらに、「Ka(Kb」から計算したシンドロームの値の1のビットの数が必ず2以上の偶数個となるためには、以下の2つの条件を満たす必要がある。1つめは、各アクセスキーから計算したシンドロームの値がそれぞれ異なるように選ぶことである。2つめは、各アクセスキーから計算したシンドロームの値の1のビットの数が必ず偶数個または奇数個となることである。
【0079】
例えば64ビットのデータに8ビットのパリティが付いている場合、以上の条件に従いアクセスキーを選ぶと、同時に存在できるアクセスキーの数は、8ビットで表現できるシンドロームのうち1のビットが偶数(あるいは奇数)であるものの数となる。すなわち128個になる。
【0080】
アクセスキーとしては72(64+8)ビットの長さを持てる。したがって、2の72乗個のアクセスキーの空間の中で、前述のシンドロームの条件を満たす128個を同時に存在させることができる。
【0081】
なお、実施の形態3にかかるメモリ保護装置1のこれ以外の構成および処理は他の実施の形態にかかるメモリ保護装置1と同様である。
【0082】
(実施の形態4)
実施の形態4にかかるメモリ保護装置1は、メモリ40のデータが不正に読み出されるのを防ぐようなアクセスキーを設定する。他の形態にかかるメモリ保護装置1においては、ECCのための情報とメモリ40保護のための情報を排他的論理和で重ねて記録している。したがって、正しいアクセスキーで読み出している限り、ECCの誤り検出/訂正は従来どおり動作し、メモリが1誤りを起こした場合は訂正され、2誤りを起こした場合は検出される。
【0083】
一方、書き込み時と異なるアクセスキーで読み出した時に、同時にメモリの1誤りや2誤りが発生すると、正しいアクセスキーで読み出したのと同じ状態、あるいはその状態から1誤りを発生したのと同じ状態になってしまう可能性がある。この場合には、不正に読み出されてしまう。
【0084】
このような事態を防ぐべく、異なるアクセスキーの間のハミング距離(異なる値のビット位置の数)が4以上になるようにアクセスキーを選ぶこととする。実施の形態3において説明したように「Ka(Kb」から計算したシンドロームの値の1のビットの数が必ず2以上の偶数個になるようにアクセスキーを選ぶ必要がある。
【0085】
この条件からハミング距離を2とすることが考えられる。しかし、ハミング距離を2以上とした場合には、メモリが1誤りを起こした場合にこれにより1つ訂正されて誤りが1となる可能性がある。そして、1誤りは訂正されて出力されてしまう。このため好ましくない。そこで、上述のようにハミング距離4以上を条件とした。
【0086】
以上の条件を総合すると、各アクセスキーから計算したシンドロームの値がそれぞれ異なり、かつ各アクセスキーから計算したシンドロームの値の1のビットの数が必ず偶数個(あるいは必ず奇数個)で、さらに異なるアクセスキーの間のハミング距離が4以上になるようにアクセスキーを選ぶのが望ましい。
【0087】
このように、ハミング距離を4以上とすることにより、異なるアクセスキーで読み出したデータは必ず4ビット以上の誤りを含むことになる。また、1ビットまたは2ビットのメモリのエラーが発生した場合であっても、データは必ず2ビット以上誤りを含む状態になる。したがって、間違った1誤り訂正によって正しいデータが読み出せてしまうことを防ぐことができる。
【0088】
図15は、上述の条件を満たすアクセスキーを選択する方法の一例を説明するための図である。ここでは、メモリアクセスの単位は64ビットで、Hsiaoの方式のSEC−DED符号により、64ビットのデータに対して8ビットのパリティを持つ場合について説明する。なお、その他のサイズのメモリのアクセスの場合や、その他のECCの方式の場合も同様である。
【0089】
まず、アクセスキーを作成する種となる57ビットの数を用意する。この数は、同時に存在する複数のアクセスキーの間で互いに異なるように選ぶ。この数はカウンタなどで順次生成する。
【0090】
他の例としては、乱数を発生させて重なっていないことが確認されたものを選択してもよい。また、57ビットを複数の領域に分けて、領域ごとに乱数を使ったりカウンタを使ったりしてもよい。できるだけ乱数に近い値を用いることが、セキュリティ上は望ましい。
【0091】
次に、57ビットの数に対して、SEC−DED符号のパリティを付与する。これにより、SEC−DED符号の性質により、異なる57ビットの値に7ビットのパリティをつけた64ビットの値の間のハミング距離は4以上になる。こうして作った64ビットの値の中で、7ビットのパリティを置く位置は、あらかじめ決めておく。なお、必ずしも下7桁にする必要はない。
【0092】
こうして生成した64ビットの値に対して、この値をメモリ40に書き込むときに付加される8ビットのパリティの値を計算してパリティ部に付加し、72ビットの値を生成する。こうして生成した72ビットの値から計算したシンドロームは「0」になる。
【0093】
次に、今生成しているアクセスキーに対応させたいシンドロームの値を決める。これは、パリティが8ビットの場合、前述したように、有効なアクセスキーは1のビットが偶数個(あるいは奇数個)の128個の中のいずれかの値を選択する。このとき、他のアクセスキーのシンドロームと重ならないようにする必要がある。アクセスキーの選択においては、他のアクセスキーのシンドロームと重なるのを避けるべく、例えば、テーブルなどを使って管理するのが望ましい。
【0094】
Hsiaoの方式のSEC−DED符号においては、パリティのビット位置に対応する検査行列の列ベクトルは、ひとつの行が1であとは0になっている。つまり、8ビットのパリティのそれぞれのビットが、8ビットのシンドロームの各ビットと1対1に対応付けられている。
【0095】
したがって、パリティのひとつのビットを反転することが、シンドロームのひとつのビットを反転することになる。そこで、前のステップで求めた72ビットの値のパリティ部の値と、対応させたいアクセスキーの値との排他的論理和を計算し、それを前ステップで求めた72ビットの値のパリティ部に埋め込む。こうして生成されたアクセスキーのシンドロームは、先に決めた値になる。
【0096】
なお、実施の形態4にかかるメモリ保護装置1のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置1の構成および処理と同様である。
【0097】
(実施の形態5)
次に、実施の形態5にかかるメモリ保護装置1について説明する。他の実施の形態において説明したようにアクセスキーとの排他的論理和をメモリ40に格納することにより他のプロセスからのアクセスを制限することができる。ただし、さらにメモリエラーにより例えば2誤りが3誤り(1誤り)となり訂正されて出力される場合が想定される。この場合には、正しいデータは読み出されないが、読み出されたデータには部分的に正しいデータが含まれている。
【0098】
実施の形態5にかかるメモリ保護装置1は、このように部分的に正しいデータが読み出された場合に対処可能な形式でデータを格納する。
【0099】
図16は、実施の形態5にかかるメモリ保護装置1の全体構成を示すブロック図である。実施の形態5にかかるメモリ保護装置1の保護処理装置10は、データ編集部104をさらに有している。
【0100】
図17は、データ編集部104の処理を説明するための図である。データ編集部104は、1ビット「x」を図16に示す「a」、「b」、「c」および「d」の4つのビットにより表現する。すなわち、1ビットの値を4つのワードに分散して記述する。ここでワードはECCの単位とする。すなわち、メモリ40が64ビット単位でECCを持つ場合、1つのワードは64ビットである。
【0101】
記録したいひとつのビット値xに対して、「x=a(b(c(d」となるような4つの1ビットの値「a」、「b」、「c」および「d」を任意に選ぶ。この4つの値は、できるだけ規則性がないようにランダムに選ぶことが望ましい。
【0102】
こうして選択された4つの値「a」、「b」、「c」および「d」をそれぞれ別のワードに記録する。図17に示す例においては、それぞれ「ワード1」、「ワード2」、「ワード3」および「ワード4」に記録される。
【0103】
さらに、4つのワードのうち2つの値「a」および「b」は、ビット位置「xi」に記録する。残りの2つの値「c」および「d」は、ビット位置「xi−1」に記録する。
【0104】
ビット位置「xi」のうち「ワード1」および「ワード2」には、それぞれ「a」および「b」が記録されたが、「ワード3」および「ワード4」にはまだビットが割り当てられていない。この「ワード3」には、「0」を記録し、「ワード4」には「1」を記録する。
【0105】
同様に、ビット位置「xi−1」のうち「ワード1」および「ワード2」にはそれぞれ「0」および「1」を記録する。
【0106】
メモリエラーとして、例えばビット位置「xi」に固定故障が発生し、「1」および「0」のいずれのワードを読み出しても、「1」を読み出す状態が想定される。
【0107】
この場合、上述のように1ビットを4つの1ビットの値「a」、「b」、「c」および「d」に分解し、ビット位置「xi」および「xi−1」に記録した場合には、ワード3のビット位置「xi」の「0」が「1」に反転するのでワード3にエラーが検出される。すなわち、「c」を特定することができない。したがって、「c」との排他的論理和により得られるビット値「x」を特定することができない。したがって、メモリエラーにより正しいデータが読み出された場合であっても、記録されたデータが再構築される可能性をより低減することができる。このように、4つのワードすべてを読み出す確率を低減することができる。
【0108】
なお、実施の形態5にかかるメモリ保護装置1のこれ以外の構成および処理は他の実施の形態にかかるメモリ保護装置1の構成および処理と同様である。
【0109】
実施の形態5にかかるメモリ保護装置1の変更例としては、4つのビットの配置位置は、図17に示す例に限定されるものではなく、以下に示す条件を満たすものであればよい。すなわち、4つのビットすべてを異なるワードであり、かつ4つのビットのうち少なくとも1つのビットのビット位置が異なる。さらに、各ワードが配置されたビット位置であって、異なるワードに「0」と「1」が記録される。
【0110】
以上の条件を満たす他の例としては、2つのビット位置は隣接する位置でなくともよい。また、4ワードも連続する4ワードでなくともよい。
【0111】
(実施の形態6)
次に、実施の形態6にかかるメモリ保護装置1について説明する。他の実施の形態にかかるメモリ保護装置1においては、アクセスキーはプロセッサ側においてオペレーティングシステムなどが生成し、保護処理装置10のアクセスキーレジスタ110に設定したが、実施の形態6にかかるメモリ保護装置1においては、保護処理装置10がアクセスキーを生成する。
【0112】
図18は、実施の形態6にかかるメモリ保護装置1の全体構成を示すブロック図である。実施の形態6にかかるメモリ保護装置1の保護処理装置10は、アクセスキーを生成するアクセスキー生成部130と、アクセスキー生成部130により作成されたアクセスキーを保持するアクセスキー管理テーブル132をさらに有する。
【0113】
アクセスキー生成部130は、メモリコントローラ30を介してプロセッサ20より新しいアクセスキーの作成指示を取得する。作成指示を取得すると、乱数を発生し、これに基づいてアクセスキーを作成する。なお、実施の形態3または実施の形態4において説明した方法によりアクセスキーを作成するのが好ましい。さらに、作成されたアクセスキーが他のアクセスキーと重なるのを避けるべく、アクセスキー管理テーブル132に保持されているアクセスキーと異なるアクセスキーを作成する。
【0114】
こうして作成したアクセスキーをメモリコントローラ30を介してプロセッサ20に返すとともに、アクセスキー管理テーブル132にも登録する。そして、プロセッサ20は、取得したアクセスキーを用いてメモリ40へのアクセスを行う。
【0115】
なお、実施の形態6にかかるメモリ保護装置1のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置1の構成および処理と同様である。
【0116】
実施の形態6にかかるメモリ保護装置1の変更例について説明する。アクセスキーをプロセッサ20に返した場合、プロセッサ用OSがアクセスキーを管理することとなりアプリケーションから見られる可能性がある。そこで、変更例として、アクセスキーにかえてアクセスキーを識別するアクセスキーIDを返すこととしてもよい。
【0117】
この場合、保護処理装置10は、さらにアクセスキーとアクセスキーIDとを対応付けたアクセスキーIDテーブルを有する。そして、アクセスキーIDテーブルを利用して、アクセスキーIDからアクセスキーを特定し、このアクセスキーをアクセスキーレジスタ110に設定する。これにより、実際のアクセスキーの値をプロセッサ20上のソフトウェアが特定することはできないので、データのセキュリティが向上する。
【0118】
さらに、アクセスキーIDテーブルは、特別なアクセスキーを使ってメモリ40上に記録することとしてもよい。これにより、この特別なアクセスキーをもたない場合には、プロセスはアクセスキーIDテーブルを参照することができなくなる。したがって、セキュリティが向上する。この特別なアクセスキーは、保護処理装置10のみが参照することとし、他のプロセスには使えないように管理するのが望ましい。
【0119】
(実施の形態7)
次に、実施の形態7にかかるメモリ保護装置1について説明する。実施の形態3において説明したように、64ビットのデータに8ビットのパリティをつける場合、有効なアクセスキーの数は最大128個である。実施の形態7にかかるメモリ保護装置1は、メモリのデータ幅を変えずにこの数を増やすべく、複数のアクセスキーを組み合わせて使う。
【0120】
多くのプロセッサはキャッシュメモリを持っており、同時に複数のワードをメモリから読み出す。例えばキャッシュラインのサイズが256ビットであると仮定すると、プロセッサはメモリから64ビットのワード4つを単位として連続して読み出す。
【0121】
すなわち、メモリを256ビット単位で区切って、その単位で読み出すことになる。そこで、連続して読み出す4ワードに対して、アクセスキーを4つ用意する。4ワードを読み出すときに、1ワードでもアクセスキーの不一致が検出されたら4ワード全体を読み出せないように制御する。これにより、128の4乗の個数のアクセスキーがあるのと同等の効果を得ることができる。
【0122】
なお、実施の形態7にかかるメモリ保護装置1のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置1の構成および処理と同様である。
【図面の簡単な説明】
【0123】
【図1】実施の形態1にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図2】データをメモリに書き込む際の処理を説明するための図である。
【図3】データD’を読み出す際の処理を説明するための図である。
【図4】メモリ40にデータを書き込む処理を示すフローチャートである。
【図5】書き込み処理におけるデータの流れを示す図である。
【図6】メモリ40からデータを読み出す処理を示すフローチャートである。
【図7】メモリ40に書き込まれたデータを読み出す際の処理を説明するための図である。
【図8】実施の形態1の第2の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図9】実施の形態1の第3の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図10】実施の形態1の第4の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図11】実施の形態1の第7の変更例にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図12】書込アクセスキーテーブル112のデータ構成を模式的に示す図である。
【図13】実施の形態2にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図14】読出アクセスキーテーブル116のデータ構成を示す図である。
【図15】アクセスキーを選択する方法の一例を説明するための図である。
【図16】実施の形態5にかかるメモリ保護装置1の全体構成を示すブロック図である。
【図17】データ編集部104の処理を説明するための図である。
【図18】実施の形態6にかかるメモリ保護装置1の全体構成を示すブロック図である。
【符号の説明】
【0124】
1 メモリ保護装置
10 保護処理装置
11 システムLSI
12 ブリッジLSI
13 メモリチップ
20 プロセッサ
21 プロセッサバス
30 メモリコントローラ
40 メモリ
100 パリティ生成回路
102 排他的論理和回路
104 データ編集部
110 アクセスキーレジスタ
112 書込アクセスキーテーブル
114 書込許可部
116 読出アクセスキーテーブル
118 アクセスキー選択部
120 排他的論理和回路
122 シンドローム計算回路
124 誤り訂正回路
130 アクセスキー生成部
132 アクセスキー管理テーブル

【特許請求の範囲】
【請求項1】
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、
前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、
前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を備えたことを特徴とするメモリ保護装置。
【請求項2】
前記要求元からアクセスキー生成指示を取得するアクセスキー生成指示取得手段と、
前記アクセスキー生成指示取得手段が前記アクセスキー生成指示を取得すると、前記要求元に固有のアクセスキーを生成するアクセスキー生成手段と、
前記アクセスキー生成手段により生成された前記アクセスキーを前記要求元に送るアクセスキー送信手段と
をさらに備えたことを特徴とする請求項1に記載のメモリ保護装置。
【請求項3】
前記アクセスキー生成手段は、前記パリティが付与されたデータと、作成すべきアクセスキーと、既に生成されたいずれのアクセスキーとの排他的論理和からシンドロームを計算した場合にも、2誤りとして検出されるような前記アクセスキーを生成することを特徴とする請求項2に記載のメモリ保護装置。
【請求項4】
前記アクセスキー生成手段は、既に生成されたいずれのアクセスキーとの間においても、ハミング距離が4以上となるような前記アクセスキーを生成することを特徴とする請求項3に記載のメモリ保護装置。
【請求項5】
前記アクセスキー生成手段は、前記要求元が前記メモリにアクセスする単位に対応する複数のワードそれぞれに対し、アクセスキーを生成することを特徴とする請求項2から4のいずれか一項に記載のメモリ保護装置。
【請求項6】
前記メモリのメモリアドレス領域と、前記アクセスキーとを対応付けて保持する書込アクセスキーテーブルと、
前記書込アクセスキーテーブルにおいて前記要求元により設定された前記アクセスキーに対応付けられている前記メモリアドレス領域への前記第1演算後データの書き込みを許可する書込許可手段と
をさらに備え、
前記書込手段は、前記書込許可手段により書き込み許可された前記メモリアドレス領域に対してのみ前記第1演算後データを書き込むことを特徴とする請求項1から5のいずれか一項に記載のメモリ保護装置。
【請求項7】
前記メモリのメモリアドレスと、前記アクセスキーとを対応付けて保持する読出アクセスキーテーブルと、
前記要求元から前記メモリアドレスの指定を受け付けると、前記読出アクセスキーテーブルにおいて、指定された前記メモリアドレスに対応付けられている前記アクセスキーを選択するアクセスキー選択手段と
をさらに備え、
前記アクセスキーレジスタは、前記アクセスキー選択手段により選択された前記アクセスキーを保持することを特徴とする請求項1から6のいずれか一項に記載のメモリ保護装置。
【請求項8】
前記メモリに書き込むべき1ビットのデータを4ビットのデータの排他的論理和で表し、前記4ビットそれぞれを異なるワードに配置し、さらに前記4ビットのうち第1ビットおよび第2ビットを第1のビット位置に配置し、第3ビットおよび第4ビットを第2のビット位置に配置し、前記第1ビットおよび前記第2ビットが配置されたワードの前記第2ビット位置には、それぞれ0および1を配置し、かつ前記第3ビットおよび第4ビットが配置されたワードの前記第1ビット位置には、それぞれ0および1を配置したデータを生成するデータ編集手段をさらに備え、
前記パリティ生成手段は、前記データ編集手段により得られた各ワードに対して前記パリティを生成することを特徴とする請求項1から7のいずれか一項に記載のメモリ保護装置。
【請求項9】
前記第2排他的論理和算出手段は、前記要求元から前記元データの書き込み要求を取得した場合に、前記要求元により前記アクセスキーレジスタに設定された前記アクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出し、
前記パリティ生成手段は、前記出力判断手段が前記第2排他的論理和算出手段により算出された前記排他的論理和に基づいて算出された前記シンドロームに基づいて、前記第2演算後データを前記元データとして出力すると判断した場合に、前記要求元からの前記元データのパリティを生成することを特徴とする請求項1から8のいずれか一項に記載のメモリ保護装置。
【請求項10】
前記要求元は、プロセッサまたはプロセスであることを特徴とする請求項1から9のいずれか一項に記載のメモリ保護装置。
【請求項11】
プロセッサと、メモリコントローラと、外部メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、
前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、
前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項12】
メモリコントローラと、外部のメモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、
前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、
前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項13】
メモリと、当該メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出手段と、
前記第1排他的論理和算出手段により算出された第1演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出手段と、
前記第2排他的論理和算出手段により算出された第2演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項14】
メモリに書き込むべき元データのパリティを生成するパリティ生成ステップと、
前記パリティ生成ステップにおいて生成した前記パリティを前記元データに付与するパリティ付与ステップと、
前記メモリへのデータの書き込みを要求する要求元が前記メモリへのアクセスに利用される当該要求元固有のアクセスキーをアクセスキーレジスタに設定するアクセスキー設定ステップと、
前記パリティ付与ステップにおいて前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第1排他的論理和算出ステップと、
前記第1排他的論理和算出ステップにおいて算出された第1演算後データを前記メモリに書き込む書込ステップと、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第1演算後データとの排他的論理和を算出する第2排他的論理和算出ステップと、
前記第2排他的論理和算出ステップにおいて算出された第2演算後データからシンドロームを算出するシンドローム算出ステップと、
前記シンドローム算出ステップにおいて算出された前記シンドロームに基づいて、第2演算後データを前記元データとして出力するか否かを判断する出力判断ステップと
を有することを特徴とするメモリ保護方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2007−148770(P2007−148770A)
【公開日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願番号】特願2005−342135(P2005−342135)
【出願日】平成17年11月28日(2005.11.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】