(57)【特許請求の範囲】
【請求項１】
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、
前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、
前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を備えたことを特徴とするメモリ保護装置。
【請求項２】
前記要求元からアクセスキー生成指示を取得するアクセスキー生成指示取得手段と、
前記アクセスキー生成指示取得手段が前記アクセスキー生成指示を取得すると、前記要求元に固有のアクセスキーを生成するアクセスキー生成手段と、
前記アクセスキー生成手段により生成された前記アクセスキーを前記要求元に送るアクセスキー送信手段と
をさらに備えたことを特徴とする請求項１に記載のメモリ保護装置。
【請求項３】
前記アクセスキー生成手段は、前記パリティが付与されたデータと、作成すべきアクセスキーと、既に生成されたいずれのアクセスキーとの排他的論理和からシンドロームを計算した場合にも、２誤りとして検出されるような前記アクセスキーを生成することを特徴とする請求項２に記載のメモリ保護装置。
【請求項４】
前記アクセスキー生成手段は、既に生成されたいずれのアクセスキーとの間においても、ハミング距離が４以上となるような前記アクセスキーを生成することを特徴とする請求項３に記載のメモリ保護装置。
【請求項５】
前記アクセスキー生成手段は、前記要求元が前記メモリにアクセスする単位に対応する複数のワードそれぞれに対し、アクセスキーを生成することを特徴とする請求項２から４のいずれか一項に記載のメモリ保護装置。
【請求項６】
前記メモリのメモリアドレス領域と、前記アクセスキーとを対応付けて保持する書込アクセスキーテーブルと、
前記書込アクセスキーテーブルにおいて前記要求元により設定された前記アクセスキーに対応付けられている前記メモリアドレス領域への前記第１演算後データの書き込みを許可する書込許可手段と
をさらに備え、
前記書込手段は、前記書込許可手段により書き込み許可された前記メモリアドレス領域に対してのみ前記第１演算後データを書き込むことを特徴とする請求項１から５のいずれか一項に記載のメモリ保護装置。
【請求項７】
前記メモリのメモリアドレスと、前記アクセスキーとを対応付けて保持する読出アクセスキーテーブルと、
前記要求元から前記メモリアドレスの指定を受け付けると、前記読出アクセスキーテーブルにおいて、指定された前記メモリアドレスに対応付けられている前記アクセスキーを選択するアクセスキー選択手段と
をさらに備え、
前記アクセスキーレジスタは、前記アクセスキー選択手段により選択された前記アクセスキーを保持することを特徴とする請求項１から６のいずれか一項に記載のメモリ保護装置。
【請求項８】
前記メモリに書き込むべき１ビットのデータを４ビットのデータの排他的論理和で表し、前記４ビットそれぞれを異なるワードに配置し、さらに前記４ビットのうち第１ビットおよび第２ビットを第１のビット位置に配置し、第３ビットおよび第４ビットを第２のビット位置に配置し、前記第１ビットおよび前記第２ビットが配置されたワードの前記第２ビット位置には、それぞれ０および１を配置し、かつ前記第３ビットおよび第４ビットが配置されたワードの前記第１ビット位置には、それぞれ０および１を配置したデータを生成するデータ編集手段をさらに備え、
前記パリティ生成手段は、前記データ編集手段により得られた各ワードに対して前記パリティを生成することを特徴とする請求項１から７のいずれか一項に記載のメモリ保護装置。
【請求項９】
前記第２排他的論理和算出手段は、前記要求元から前記元データの書き込み要求を取得した場合に、前記要求元により前記アクセスキーレジスタに設定された前記アクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出し、
前記パリティ生成手段は、前記出力判断手段が前記第２排他的論理和算出手段により算出された前記排他的論理和に基づいて算出された前記シンドロームに基づいて、前記第２演算後データを前記元データとして出力すると判断した場合に、前記要求元からの前記元データのパリティを生成することを特徴とする請求項１から８のいずれか一項に記載のメモリ保護装置。
【請求項１０】
前記要求元は、プロセッサまたはプロセスであることを特徴とする請求項１から９のいずれか一項に記載のメモリ保護装置。
【請求項１１】
プロセッサと、メモリコントローラと、外部メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、
前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、
前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項１２】
メモリコントローラと、外部のメモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、
前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、
前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項１３】
メモリと、当該メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、
前記メモリ保護装置は、
メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、
前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、
前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、
前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、
前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、
前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、
前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段と
を有することを特徴とするメモリ保護システム。
【請求項１４】
メモリに書き込むべき元データのパリティを生成するパリティ生成ステップと、
前記パリティ生成ステップにおいて生成した前記パリティを前記元データに付与するパリティ付与ステップと、
前記メモリへのデータの書き込みを要求する要求元が前記メモリへのアクセスに利用される当該要求元固有のアクセスキーをアクセスキーレジスタに設定するアクセスキー設定ステップと、
前記パリティ付与ステップにおいて前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出ステップと、
前記第１排他的論理和算出ステップにおいて算出された第１演算後データを前記メモリに書き込む書込ステップと、
前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出ステップと、
前記第２排他的論理和算出ステップにおいて算出された第２演算後データからシンドロームを算出するシンドローム算出ステップと、
前記シンドローム算出ステップにおいて算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断ステップと
を有することを特徴とするメモリ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部のメモリへの不正アクセスを防止するメモリ保護装置、メモリ保護システムおよびメモリ保護方法に関するものである。
【背景技術】
【０００２】
現代のコンピュータシステムにおいては、複数のプロセス（プログラム、タスクまたはジョブ）を切り換えて処理するマルチプログラミング方式を用いることで、例えばメモリやＣＰＵなどコンピュータシステム内のさまざまな資源を有効に活用している。
【０００３】
このため、あるプロセスが処理に用いるメモリ上のデータを他のプロセスが盗み見たり、上書きして破壊したりする問題が発生する。
【０００４】
そこで従来は、非特許文献１に開示されているように、メモリの一定のサイズ（例えば4ＫＢ）毎にストレージキーと呼ぶ情報を記憶しておき、プロセスがメモリをアクセスする場合には、プロセスの持つキーとアクセスするメモリのストレージキーを照らし合わせてアクセスの可否を判断する方式が広く用いられている。
【０００５】
【非特許文献１】z/Architecture Principles of Operation (IBM; SA22-7832-00; December 2000)3-9 〜 3-12ページ
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述のようにストレージキーを用いたメモリ保護方式においては、データを記憶するメモリに加えてストレージキーを記憶するためのメモリが必要になる。このため、ハードウェア量が増加する。
【０００７】
また、保護の単位が例えば４ＫＢのページ単位であり、サイズの小さなデータを保護しようと思うと使用しない無駄なメモリ領域が発生する。この問題は、より小さなメモリ領域単位でストレージキーを対応させることで解決することもできるが、その場合はストレージキーを記憶するためにさらに多くのメモリが必要になる。
【０００８】
本発明は、上記に鑑みてなされたものであって、メモリ容量を増加させることなく、メモリを保護することのできるメモリ保護装置、メモリ保護システムおよびメモリ保護方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、メモリ保護装置であって、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【００１０】
また、本発明の他の形態は、メモリコントローラと、外部のメモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、前記メモリ保護装置は、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【００１１】
また、本発明の他の形態は、メモリと、当該メモリを保護するメモリ保護装置とを備えたメモリ保護システムであって、前記メモリ保護装置は、メモリに書き込むべき元データのパリティを生成するパリティ生成手段と、前記パリティ生成手段が生成した前記パリティを前記元データに付与するパリティ付与手段と、前記メモリへのデータの書き込みを要求する要求元により設定された、前記メモリへのアクセスに利用される当該要求元固有のアクセスキーを保持するアクセスキーレジスタと、前記パリティ付与手段により前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出手段と、前記第１排他的論理和算出手段により算出された第１演算後データを前記メモリに書き込む書込手段と、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出手段と、前記第２排他的論理和算出手段により算出された第２演算後データからシンドロームを算出するシンドローム算出手段と、前記シンドローム算出手段により算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断手段とを有することを特徴とする。
【００１２】
また、本発明の他の形態は、メモリ保護方法であって、メモリに書き込むべき元データのパリティを生成するパリティ生成ステップと、前記パリティ生成ステップにおいて生成した前記パリティを前記元データに付与するパリティ付与ステップと、前記メモリへのデータの書き込みを要求する要求元が前記メモリへのアクセスに利用される当該要求元固有のアクセスキーをアクセスキーレジスタに設定するアクセスキー設定ステップと、前記パリティ付与ステップにおいて前記パリティが付与されたパリティ付与後データと、前記アクセスキーレジスタが保持している前記アクセスキーとの排他的論理和を算出する第１排他的論理和算出ステップと、前記第１排他的論理和算出ステップにおいて算出された第１演算後データを前記メモリに書き込む書込ステップと、前記メモリからのデータの読み出しを要求する要求元により前記アクセスキーレジスタに設定された、前記メモリへのアクセスに利用されるアクセスキーと、前記メモリに格納されている前記第１演算後データとの排他的論理和を算出する第２排他的論理和算出ステップと、前記第２排他的論理和算出ステップにおいて算出された第２演算後データからシンドロームを算出するシンドローム算出ステップと、前記シンドローム算出ステップにおいて算出された前記シンドロームに基づいて、第２演算後データを前記元データとして出力するか否かを判断する出力判断ステップとを有することを特徴とする。
【発明の効果】
【００１３】
本発明にかかるメモリ保護装置においては、プロセスなどのメモリへのデータの読み書きの要求元がメモリにアクセスする際には、アクセスキーレジスタに当該要求元に固有のアクセスキーを設定する。そして、メモリにデータを書き込む際には、このアクセスキーとの排他的論理和の演算結果がメモリに書き込まれ、メモリからデータを読み出す際には、メモリに書き込まれた演算結果とアクセスキーと排他的論理和が算出される。したがって、このアクセスキーが一致しない場合には、正しい読み出すことができず、本来アクセスすべき要求元以外の要求元は、この演算結果から正しい元データを得ることができないので、メモリを保護することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明にかかるメモリ保護装置、メモリ保護システムおよびメモリ保護方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１５】
（実施の形態１）
図１は、実施の形態１にかかるメモリ保護装置１の全体構成を示すブロック図である。メモリ保護装置１は、保護処理装置１０と、プロセッサ２０と、メモリコントローラ３０と、メモリ４０とを備えている。メモリコントローラ３０とプロセッサ２０とはプロセッサバス２１を介して接続している。保護処理装置１０は、メモリコントローラ３０とメモリ４０の間に挿入する独立の装置である。より具体的には、独立のＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）チップとして実装されてもよい。
【００１６】
メモリ４０は、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  ＣｏｄｅまたはＥｒｒｏｒ  Ｃｏｎｔｒｏｌ  Ｃｏｄｅ）をもつ。ここで、ＥＣＣについて説明する。図２および図３は、ＥＣＣを説明するための図である。ＥＣＣは、メモリの信頼性を向上させる手法として従来から広く用いられている。
【００１７】
図２は、データをメモリに書き込む際の処理を説明するための図である。一般に、図２に示すように、一度にメモリに読み書きするｎビットの大きさのデータＤに対して、そのデータの値から計算したｍビットのパリティを付加する。そして、ｎ＋ｍビットのデータＤ’をメモリに書き込む。
【００１８】
図３は、データＤ’を読み出す際の処理を説明するための図である。メモリからデータＤ’を読み出す際には、データＤ’と検査行列Ｈの転置行列の積によってｍビットの値を計算する。このｍビットの値をシンドロームと呼ぶ。シンドロームが０である場合はｎビットのデータの値に誤りがないことを示している。シンドロームが０でない場合には誤りが存在することを示している。誤りが訂正可能な場合は誤りを訂正する。
【００１９】
ＥＣＣには様々な方式がある。それぞれの方式によってパリティのビット数やその計算方法、シンドロームを計算する検査行列およびシンドロームから誤りを訂正するビット位置の求め方が異なる。コンピュータシステムのメモリにおいて広く用いられているのは、ＳＥＣ−ＤＥＤ符号（１誤り訂正２誤り検出符号）である。
【００２０】
ＳＥＣ−ＤＥＤ符号では、データまたはそのパリティの中に１ビットの誤り（１誤りとも呼ぶ）がある場合は誤っている位置を特定することができる。２ビットの誤り（２誤りとも呼ぶ）がある場合は位置は特定できないが誤りがあることを検出することができる。
【００２１】
通常、３２ビットのデータには７ビットのパリティをＥＣＣとして付加する。また、６４ビットのデータには８ビットのパリティを、１２８ビットのデータには９ビットのパリティを付加する。
【００２２】
ＳＥＣ−ＤＥＤ符号にも、そのパリティの計算方法および検査行列の作り方の違いによって、様々な方式が存在する。その中でも広く用いられるのは、拡大ハミング符号と、Ｈｓｉａｏの符号である。拡大ハミング符号については、Ａｌｇｅｂｒａｉｃ  Ｃｏｄｅ  ｆｏｒ  Ｄａｔａ  Ｔｒａｎｓｍｉｓｓｉｏｎ；Ｒｉｃｈａｒｄ  Ｅ．  Ｂｌａｈｕｔ，２００３，Ｃａｍｂｒｉｄｇｅ  Ｕｎｉｖｅｒｓｉｔｙ  Ｐｒｅｓｓ  ６３ページに記載されている。Ｈｓｉａｏの符号については、Ａ  Ｃｌａｓｓ  ｏｆ  Ｏｐｔｉｍａｌ  Ｍｉｎｉｍｕｍ Ｏｄｄ−ｗｅｉｇｈｔ−ｃｏｌｕｍｎ  ＳＥＣ−ＤＥＤ  Ｃｏｄｅｓ；Ｍ．  Ｙ．  Ｈｓｉａｏ，  ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ａｎｄ  Ｄｅｖｅｌｏｐｍｅｎｔ，  Ｊｕｌｙ  １９７０  ３９５〜４０１ページに記載されている。これら２つのＳＥＣ−ＤＥＤ符号においては、シンドロームの値の解釈の方法が異なるが、誤り訂正／検出の能力は同等である。
【００２３】
ＳＥＣ−ＤＥＤ符号では、誤りがない時にはシンドロームの値が０になる。誤りが１つある場合には、シンドロームは誤っているビット位置と１対１に対応する０以外の値になる。通常この値は、検査行列の中の誤っているビット位置に対応する列の値に等しくなる。
【００２４】
このとき、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず１になり、Ｈｓｉａｏの符号ではシンドロームの中の１のビットが必ず奇数個になる。
【００２５】
誤りが２つある場合にもシンドロームは０以外の値である。この場合、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず０になる。Ｈｓｉａｏの符号では、シンドロームの中の１のビットが必ず偶数個になる。
【００２６】
なお、通常ＳＥＣ−ＤＥＤ符号を使う場合には３つ以上の誤りは考慮しない。これは、以下の示すように、３個以上の誤りの場合には２個以下の誤りの場合と区別をつけられない場合があるためである。
【００２７】
誤りが３以上の奇数個ある場合には、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず１になる。Ｈｓｉａｏの符号ではシンドロームの中の１のビットが必ず奇数個になる。これは、誤りが１つの場合と同じである。そのため、誤りがあることはわかる。しかし、多くの場合は１誤りと区別することができない。
【００２８】
誤りが４以上の偶数個ある場合には、拡大ハミング符号ではパリティの計算方法および検査行列から決まるパリティの中の特定のビットの値が必ず０になる。Ｈｓｉａｏの符号ではシンドロームの中の１のビットが必ず偶数個になる。これは、誤りが２つの場合と同じである。
【００２９】
ただし、誤りが２つの場合はシンドロームが必ず０ではないのに対して、４以上の偶数個の誤りの場合はシンドロームが０になることがある。そのため、誤りがあるにもかかわらず、誤りがないと判断される場合がある。
【００３０】
実施の形態１においては、ＥＣＣとして、ＳＥＣ−ＤＥＤ符号を用いる場合について説明する。ＳＥＣ−ＤＥＤ符号は、Ｈｓｉａｏの符号である。なお、他の例としては、拡大ハミング符号であってもよい。また、これ以外の符号であってもよい。さらに、ＳＥＣ−ＤＥＤ符号以外のＥＣＣであってもよい。
【００３１】
再び説明を図１に戻す。保護処理装置１０は、データに対しＥＣＣに加えてメモリ保護のための情報を重ね合わせて記憶することでメモリ保護を実現する。ＥＣＣを利用するため、メモリの保護単位はＥＣＣの単位と同じ３２ビットや６４ビットといったサイズになる。すなわち、従来よりも細かな単位でのメモリ保護を実現することができる。
【００３２】
保護処理装置１０は、パリティ生成回路１００と、第１排他的論理和回路１０２と、アクセスキーレジスタ１１０と、第２排他的論理和回路１２０と、シンドローム計算回路１２２と、誤り訂正回路１２４とを有している。
【００３３】
パリティ生成回路１００は、メモリコントローラ３０を介してプロセッサ２０から取得したデータに対するパリティを生成する。そして、プロセッサ２０から取得したデータに対しパリティを付加する。アクセスキーレジスタ１１０は、プロセッサ２０において起動しているプロセスにより設定されたアクセスキーを保持する。アクセスキーは、メモリ４０にアクセスするためのキーである。
【００３４】
メモリ保護装置１上で動作するオペレーティングシステムは、マルチプログラミングを実現するために複数のプログラムを切り替えて実行させる機能を有している。各プロセスとそのアクセスキーの対応は、このオペレーティングシステムにより管理されている。アクセスキーは、プロセスごとに固有の値を持つように設定されている。すなわち、異なるプロセスは異なるアクセスキーを持つ。
【００３５】
第１排他的論理和回路１０２は、パリティ生成回路１００により生成されたパリティが付加されたデータと、アクセスキーレジスタ１１０に保持されているアクセスキーとの排他的論理和を計算する。そして、計算結果をメモリ４０に書き込む。すなわち、第１排他的論理和回路１０２は、書込手段として機能する。
【００３６】
第２排他的論理和回路１２０は、メモリ４０に格納されているデータと、アクセスキーレジスタ１１０に保持されているアクセスキーとの排他的論理和を計算する。シンドローム計算回路１２２は、第２排他的論理和回路１２０の計算結果からシンドロームを計算する。誤り訂正回路１２４は、シンドローム計算回路１２２により計算されたシンドロームの値に応じて、適宜誤り訂正を行う。すなわち、誤り訂正回路１２４は、出力判断手段として機能する。
【００３７】
なお、メモリコントローラ３０がＥＣＣ回路を有する場合がある。この場合には、パリティ生成回路１００と、シンドローム計算回路１２２と、誤り訂正回路１２４は有さなくてもよい。そして、メモリコントローラ３０の内部に形成されたＥＣＣ回路を利用する。
【００３８】
図４は、メモリ４０にデータを書き込む処理を示すフローチャートである。プロセスを切り替える場合には（ステップＳ１００，Ｙｅｓ）、切り替え後のアクセスキーをアクセスキーレジスタ１１０に設定する（ステップＳ１０２）。
【００３９】
次に、パリティ生成回路１００は、パリティを生成し、メモリ４０に書き込むべきデータに付与する（ステップＳ１０４）。次に、第１排他的論理和回路１０２は、パリティが付与されたデータとアクセスキーレジスタ１１０に保持されているアクセスキーの排他的論理和を計算する（ステップＳ１０６）。次に、演算後のデータをメモリ４０に書き込む（ステップＳ１０８）。以上で書き込み処理が完了する。
【００４０】
図５は、書き込み処理におけるデータの流れを示す図である。起動しているプロセスがメモリ４０にデータＤを書き込む際には、ＥＣＣによりパリティが付加され、パリティ付加データＤ’が得られる。
【００４１】
次に、パリティ付加データＤ’と、このプロセスによりアクセスキーレジスタ１１０に書き込まれたアクセスキー「Ｋａ」との排他的論理和「(」をとった値「Ｄ’(Ｋａ」すなわち、記憶データＤ’’がメモリ４０に書き込まれる。本実施の形態にかかる記憶データＤ’’は、第１演算後データに相当する。
【００４２】
図６は、メモリ４０からデータを読み出す処理を示すフローチャートである。プロセスを切り替える場合には（ステップＳ２００，Ｙｅｓ）、切り替え後のアクセスキーをアクセスキーレジスタ１１０に設定する（ステップＳ２０２）。
【００４３】
次に、第２排他的論理和回路１２０は、メモリ４０に書き込まれている記憶データＤ’’を読み出す（ステップＳ２０４）。次に、読み出した記憶データＤ’’とアクセスキーレジスタ１１０に保持されているアクセスキーの排他的論理和を計算する（ステップＳ２０６）。
【００４４】
さらに、シンドローム計算回路１２２は、ＥＣＣによりシンドロームを計算する（ステップＳ２０８）。シンドロームの値が０である場合、すなわち誤りが検出されない場合には（ステップＳ２１０，Ｙｅｓ）、データＤを読み出す（ステップＳ２１２）。
【００４５】
また、誤りが１つ検出された場合（ステップＳ２１０，Ｎｏ、ステップＳ２１４，Ｙｅｓ）、すなわちシンドロームの値が０以外であって、シンドロームの中の１のビットが奇数個であり、かつシンドロームの値が検査行列のいずれかの列と同じ値をもつ場合には、誤り訂正回路１２４は、誤り訂正を行い（ステップＳ２１６）、訂正後のデータＤを読み出す（ステップＳ２１２）。誤りが２つ検出された場合（ステップＳ２１０，Ｎｏ、ステップＳ２１４，Ｎｏ）、すなわちシンドロームの値が０以外であって、シンドロームの中の１のビットの数が偶数個であるか、またはシンドロームの中の１のビットが奇数個であり、かつシンドロームの値が検査行列のいずれの列とも異なる値をもつ場合には、データＤにかえて「０」データを出力する（ステップＳ２１８）。以上でデータ読み出し処理が完了する。
【００４６】
図７は、メモリ４０に書き込まれたデータを読み出す際の処理を説明するための図である。起動しているプロセスが、メモリ４０からデータを読み出す際には、記憶データＤ’’すなわち、「Ｄ’(Ｋａ」と、このプロセスによりアクセスキーレジスタ１１０に書き込まれたアクセスキー「Ｋｂ」との排他的論理和「(」をとった値「Ｄ’’ (Ｋｂ（＝Ｄ’ (Ｋａ(Ｋｂ）」が計算される。なお、この値は、第２演算後データに相当する。その後、シンドローム計算回路１２２による計算結果に基づいて、ＥＣＣによる誤り検査と訂正を行った値を読み出す。
【００４７】
書き込み時と読み出し時のアクセスキーが同じ場合、すなわち、Ｋａ＝Ｋｂの場合には、正しいデータＤを読み出すことができる。書き込み時と読み出し時のアクセスキーが異なる場合、すなわちＫａ≠Ｋｂの場合は、メモリ４０から読み出した記憶データＤ’’に対して、Ｋａ(Ｋｂの値の１のビットの数だけ誤りが発生している状態である。したがって、この場合には、誤り訂正回路１２４は、「０」データを出力する。
【００４８】
なお、他の例としては、書き込み時と読み出し時のアクセスキーが異なる場合には、誤り訂正回路１２４は、「０」データを出力するのにかえて、データを出力しないこととしてもよい。
【００４９】
アクセスキーは、プロセスごとに固有の値を持つように設定されている。したがって、所定のプロセスが書き込んだデータを、他のプロセスが読み出そうとした場合には、本実施の形態にかかるメモリ保護装置１においては、読み出すことができない。すなわち、他のプロセスからデータを保護することができる。
【００５０】
また、他の例としては、複数のプロセスが１つのアクセスキーを共有してもよい。この場合には、当該複数のプロセスの間でデータを共有することができ、さらにこれ以外のプロセスからデータを保護することができる。
【００５１】
なお、アクセスキーのサイズは、メモリのデータ長(ｎビット)とパリティ長(ｍビット)を合わせたｎ＋ｍビット以下であればよく、任意の長さに決めてよい。
【００５２】
メモリ保護装置１は、以上のように不正なプロセスがデータを読むことを防止する一方で、データの書き込みにおいても、本来データを書くことが許されているプロセスだけが書けるように保護する。具体的には、メモリ４０にデータを書き込む際には、書き込む前に、一度メモリ４０に書き込まれているデータを読み出す。そして、アクセスキーの不一致で読み出しのアクセスができないアドレスにはデータを書き込めないように制御する。これにより、細かな単位の書き込みアクセスの保護を実現することができる。
【００５３】
以上、本発明を実施の形態１を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００５４】
そうした第１の変更例として、実施の形態１にかかるメモリ保護装置１においては、保護処理装置１０は、独立のＬＳＩチップとして実装されたが、これにかえて、各種のシステムＬＳＩに組み込むためのＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）として実現してもよい。
【００５５】
また、第２の変更例として、実施の形態１にかかるメモリ保護装置１は、保護処理装置１０は、プロセッサ２０、メモリコントローラ３０とは独立した回路として実装されたが、これらは一体に形成されてもよい。図８は、第２の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。第２の変更例にかかるメモリ保護装置１は、システムＬＳＩ１１と、メモリ４０とを備えている。システムＬＳＩ１１は、保護処理装置１０と、プロセッサ２０と、メモリコントローラ３０とを有している。
【００５６】
メモリコントローラ３０は、プロセッサバス２１と外部のメモリ４０の間のプロトコル変換を行う。保護処理装置１０は、メモリコントローラ３０とメモリ４０を接続する位置に組み込まれている。保護処理装置１０は、メモリコントローラ３０の付加機能として実装されてもよい。
【００５７】
また、第３の変更例としては、保護処理装置１０は、メモリコントローラ３０と一体の装置として実装されてもよい。図９は、第３の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。第３の変更例にかかるメモリ保護装置１は、プロセッサ２０と、ブリッジＬＳＩ１２と、メモリ４０とを備えている。ブリッジＬＳＩ１２は、メモリコントローラ３０と保護処理装置１０とを有している。
【００５８】
ブリッジＬＳＩ１２は、プロセッサ２０とメモリ４０の間に組み込まれ、保護処理装置１０とプロセッサ２０とを接続する。
【００５９】
また、第４の変更例としては、保護処理装置１０は、メモリ４０と一体の装置として実装されてもよい。図１０は、第４の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。第４の変更例にかかるメモリ保護装置１は、プロセッサ２０と、メモリコントローラ３０と、メモリチップ１３とを備えている。メモリチップ１３は、保護処理装置１０と、メモリ４０とを有している。
【００６０】
このように、メモリ４０側に保護処理装置１０を設けた場合には、メモリチップ１３内部でアクセスキーが異なることを検出し、データがメモリチップ１３から読み出されるのを防ぐことができる。なお、メモリコントローラ３０がＥＣＣ回路を有する場合がある。この場合には、パリティ生成回路１００と、シンドローム計算回路１２２と、誤り訂正回路１２４は有さなくともよい。そして、メモリコントローラ３０の内部に形成されたＥＣＣ回路を利用する。
【００６１】
また、第５の変更例としては、実施の形態１にかかるメモリ保護装置１においては、プロセスとアクセスキーとは、１対１に対応していたが、これに限定されるものではなく、１つのプロセスが複数のアクセスキーを有してもよい。また、複数のプロセスが１つのアクセスキーを有してもよい。
【００６２】
この場合、アクセスキーレジスタ１１０に設定されているアクセスキーと異なるアクセスキーが必要になると、必要なアクセスキーをアクセスキーレジスタ１１０に設定する。具体的には、オペレーティングシステムがアクセスキーレジスタ１１０に設定してもよい。
【００６３】
また、第６の変更例としては、実施の形態１にかかるメモリ保護装置１においては、複数のプロセス間の不正アクセスを対象とし、異なるプロセスからの不正アクセスを防止すべくアクセス制御を行ったが、これにかえて、マルチプロセッサにおける複数のプロセッサ間の不正アクセスを対象としてもよい。この場合には、異なるプロセッサからの不正アクセスを防止することができる。この場合には、プロセッサごとのアクセスキーが設定される。
【００６４】
また、プロセスとＩ／Ｏ装置の間の不正アクセスを対象としてもよい。この場合には、両者の間の不正アクセスを防止することができる。さらに、プロセス、プロセッサ、およびＩ／Ｏ装置のそれぞれの間の不正アクセスを対象としてもよい。このように、不正アクセスから保護する対象は実施の形態１に限定されるものではない。
【００６５】
また、第７の変更例としては、実施の形態１にかかるメモリ保護装置１においては、メモリ４０にデータを書き込む際には、メモリ４０からデータを読み出し、データの読み出しに成功した場合に書き込みを許可したが、これにかえて、アクセスキーにより書き込み可能か否かを判断してもよい。
【００６６】
図１１は、第７の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。第７の変更例にかかるメモリ保護装置１の保護処理装置１０は、書込アクセスキーテーブル１１２と、書込許可部１１４とを有している。
【００６７】
図１２は、書込アクセスキーテーブル１１２のデータ構成を模式的に示す図である。書込アクセスキーテーブル１１２は、アクセスキーとメモリ開始番地およびメモリ終了番地とを対応付けている。書込許可部１１４は、プロセッサ２０から取得したアクセスキーに対応付けられているメモリ開始番地とメモリ終了番地の間のメモリ領域へのデータの書き込みを許可する。またこれ以外の領域へのデータの書き込みを禁止する。さらに、書込アクセスキーテーブル１１２はオペレーティングシステムにより作成され保護処理装置１０に設定されるのが望ましい。
【００６８】
（実施の形態２）
次に、実施の形態２にかかるメモリ保護装置１について説明する。実施の形態２にかかるメモリ保護装置１においては、アクセスするメモリアドレスごとにアクセスキーが設定されている。
【００６９】
図１３は、実施の形態２にかかるメモリ保護装置１の全体構成を示すブロック図である。実施の形態２にかかるメモリ保護装置１の保護処理装置１０は、読出アクセスキーテーブル１１６と、アクセスキー選択部１１８をさらに有している。
【００７０】
図１４は、読出アクセスキーテーブル１１６のデータ構成を示す図である。このように、読出アクセスキーと、メモリ開始番地とを対応付けて保持している。そして、プロセッサ２０からメモリ開始番地が指定されると、アクセスキー選択部１１８は、読出アクセスキーテーブル１１６において開始番地に対応付けられているアクセスキーを選択する。そして、選択したアクセスキーをアクセスキーレジスタ１１０に設定する。読出アクセスキーテーブル１１６は、オペレーティングシステムにより設定されるのが好ましい。
【００７１】
この場合にも、実施の形態１にかかるメモリ保護装置１と同様に、他のプロセスからデータを保護することができる。さらに、メモリアドレスごとにアクセスキーが異なっているので、メモリアドレスの所定の単位ごとにデータを保護することができる。
【００７２】
また、実施の形態１の第５の変更例において説明したようにプロセスとアクセスキーが１対１に対応しない場合であっても、このようにメモリアドレスごとにアクセスキーを管理することにより、不正アクセスを防止することができる。
【００７３】
なお、実施の形態２にかかるメモリ保護装置１のこれ以外の構成および処理は、実施の形態１にかかるメモリ保護装置１の構成および処理と同様である。
【００７４】
（実施の形態３）
次に、実施の形態３にかかるメモリ保護装置１について説明する。実施の形態１および実施の形態２にかかるメモリ保護装置１においては、アクセスキーは任意に設定されたが、実施の形態３にかかるメモリ保護装置１においては、異なるアクセスキーでの読み出しをＥＣＣによって検出可能となるように、各アクセスキーを設定する。
【００７５】
以下、実施の形態３にかかるメモリ保護装置１において設定されるアクセスキーについて説明する。異なるアクセスキーでの読み出しをＥＣＣによって検出するには、以下のようにアクセスキー「Ｋａ」と「Ｋｂ」を選ぶ。すなわち、任意のアクセスキー「Ｋａ」で書き込んだデータをアクセスキー「Ｋｂ」で読み出した場合に、「Ｄ’(Ｋａ(Ｋｂ」から計算したシンドロームが必ず２誤りとして検出できるようなアクセスキー「Ｋａ」と「Ｋｂ」を選ぶ。なお、１誤りとして検出された場合には、誤り訂正回路１２４において訂正されてしまう。このため、１誤りとして検出できるようなアクセスキー「Ｋａ」と「Ｋｂ」では好ましくない。
【００７６】
Ｈｓｉａｏの方式のＳＥＣ−ＤＥＤ符号を用いて実装する場合、シンドロームの値の１のビットの数が偶数（２以上）となる場合に２ビット誤りと解釈される。したがって、１のビットの数が２以上の偶数個になるようなアクセスキー「Ｋａ」と「Ｋｂ」を選べばよい。
【００７７】
「Ｄ’(Ｋａ(Ｋｂ」から計算したシンドロームが必ず２誤りとして検出されるためには、「Ｋａ(Ｋｂ」から計算したシンドロームの値の１のビットの数が必ず２以上の偶数個になるようにアクセスキーを選ぶ必要がある。
【００７８】
さらに、「Ｋａ(Ｋｂ」から計算したシンドロームの値の１のビットの数が必ず２以上の偶数個となるためには、以下の２つの条件を満たす必要がある。１つめは、各アクセスキーから計算したシンドロームの値がそれぞれ異なるように選ぶことである。２つめは、各アクセスキーから計算したシンドロームの値の１のビットの数が必ず偶数個または奇数個となることである。
【００７９】
例えば６４ビットのデータに８ビットのパリティが付いている場合、以上の条件に従いアクセスキーを選ぶと、同時に存在できるアクセスキーの数は、８ビットで表現できるシンドロームのうち１のビットが偶数（あるいは奇数）であるものの数となる。すなわち１２８個になる。
【００８０】
アクセスキーとしては７２（６４＋８）ビットの長さを持てる。したがって、２の７２乗個のアクセスキーの空間の中で、前述のシンドロームの条件を満たす１２８個を同時に存在させることができる。
【００８１】
なお、実施の形態３にかかるメモリ保護装置１のこれ以外の構成および処理は他の実施の形態にかかるメモリ保護装置１と同様である。
【００８２】
（実施の形態４）
実施の形態４にかかるメモリ保護装置１は、メモリ４０のデータが不正に読み出されるのを防ぐようなアクセスキーを設定する。他の形態にかかるメモリ保護装置１においては、ＥＣＣのための情報とメモリ４０保護のための情報を排他的論理和で重ねて記録している。したがって、正しいアクセスキーで読み出している限り、ＥＣＣの誤り検出／訂正は従来どおり動作し、メモリが１誤りを起こした場合は訂正され、２誤りを起こした場合は検出される。
【００８３】
一方、書き込み時と異なるアクセスキーで読み出した時に、同時にメモリの１誤りや２誤りが発生すると、正しいアクセスキーで読み出したのと同じ状態、あるいはその状態から１誤りを発生したのと同じ状態になってしまう可能性がある。この場合には、不正に読み出されてしまう。
【００８４】
このような事態を防ぐべく、異なるアクセスキーの間のハミング距離（異なる値のビット位置の数）が４以上になるようにアクセスキーを選ぶこととする。実施の形態３において説明したように「Ｋａ(Ｋｂ」から計算したシンドロームの値の１のビットの数が必ず２以上の偶数個になるようにアクセスキーを選ぶ必要がある。
【００８５】
この条件からハミング距離を２とすることが考えられる。しかし、ハミング距離を２以上とした場合には、メモリが１誤りを起こした場合にこれにより１つ訂正されて誤りが１となる可能性がある。そして、１誤りは訂正されて出力されてしまう。このため好ましくない。そこで、上述のようにハミング距離４以上を条件とした。
【００８６】
以上の条件を総合すると、各アクセスキーから計算したシンドロームの値がそれぞれ異なり、かつ各アクセスキーから計算したシンドロームの値の１のビットの数が必ず偶数個（あるいは必ず奇数個）で、さらに異なるアクセスキーの間のハミング距離が４以上になるようにアクセスキーを選ぶのが望ましい。
【００８７】
このように、ハミング距離を４以上とすることにより、異なるアクセスキーで読み出したデータは必ず４ビット以上の誤りを含むことになる。また、１ビットまたは２ビットのメモリのエラーが発生した場合であっても、データは必ず２ビット以上誤りを含む状態になる。したがって、間違った１誤り訂正によって正しいデータが読み出せてしまうことを防ぐことができる。
【００８８】
図１５は、上述の条件を満たすアクセスキーを選択する方法の一例を説明するための図である。ここでは、メモリアクセスの単位は６４ビットで、Ｈｓｉａｏの方式のＳＥＣ−ＤＥＤ符号により、６４ビットのデータに対して８ビットのパリティを持つ場合について説明する。なお、その他のサイズのメモリのアクセスの場合や、その他のＥＣＣの方式の場合も同様である。
【００８９】
まず、アクセスキーを作成する種となる５７ビットの数を用意する。この数は、同時に存在する複数のアクセスキーの間で互いに異なるように選ぶ。この数はカウンタなどで順次生成する。
【００９０】
他の例としては、乱数を発生させて重なっていないことが確認されたものを選択してもよい。また、５７ビットを複数の領域に分けて、領域ごとに乱数を使ったりカウンタを使ったりしてもよい。できるだけ乱数に近い値を用いることが、セキュリティ上は望ましい。
【００９１】
次に、５７ビットの数に対して、ＳＥＣ−ＤＥＤ符号のパリティを付与する。これにより、ＳＥＣ−ＤＥＤ符号の性質により、異なる５７ビットの値に７ビットのパリティをつけた６４ビットの値の間のハミング距離は４以上になる。こうして作った６４ビットの値の中で、７ビットのパリティを置く位置は、あらかじめ決めておく。なお、必ずしも下７桁にする必要はない。
【００９２】
こうして生成した６４ビットの値に対して、この値をメモリ４０に書き込むときに付加される８ビットのパリティの値を計算してパリティ部に付加し、７２ビットの値を生成する。こうして生成した７２ビットの値から計算したシンドロームは「０」になる。
【００９３】
次に、今生成しているアクセスキーに対応させたいシンドロームの値を決める。これは、パリティが８ビットの場合、前述したように、有効なアクセスキーは１のビットが偶数個（あるいは奇数個）の１２８個の中のいずれかの値を選択する。このとき、他のアクセスキーのシンドロームと重ならないようにする必要がある。アクセスキーの選択においては、他のアクセスキーのシンドロームと重なるのを避けるべく、例えば、テーブルなどを使って管理するのが望ましい。
【００９４】
Ｈｓｉａｏの方式のＳＥＣ−ＤＥＤ符号においては、パリティのビット位置に対応する検査行列の列ベクトルは、ひとつの行が１であとは０になっている。つまり、８ビットのパリティのそれぞれのビットが、８ビットのシンドロームの各ビットと１対１に対応付けられている。
【００９５】
したがって、パリティのひとつのビットを反転することが、シンドロームのひとつのビットを反転することになる。そこで、前のステップで求めた７２ビットの値のパリティ部の値と、対応させたいアクセスキーの値との排他的論理和を計算し、それを前ステップで求めた７２ビットの値のパリティ部に埋め込む。こうして生成されたアクセスキーのシンドロームは、先に決めた値になる。
【００９６】
なお、実施の形態４にかかるメモリ保護装置１のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置１の構成および処理と同様である。
【００９７】
（実施の形態５）
次に、実施の形態５にかかるメモリ保護装置１について説明する。他の実施の形態において説明したようにアクセスキーとの排他的論理和をメモリ４０に格納することにより他のプロセスからのアクセスを制限することができる。ただし、さらにメモリエラーにより例えば２誤りが３誤り（１誤り）となり訂正されて出力される場合が想定される。この場合には、正しいデータは読み出されないが、読み出されたデータには部分的に正しいデータが含まれている。
【００９８】
実施の形態５にかかるメモリ保護装置１は、このように部分的に正しいデータが読み出された場合に対処可能な形式でデータを格納する。
【００９９】
図１６は、実施の形態５にかかるメモリ保護装置１の全体構成を示すブロック図である。実施の形態５にかかるメモリ保護装置１の保護処理装置１０は、データ編集部１０４をさらに有している。
【０１００】
図１７は、データ編集部１０４の処理を説明するための図である。データ編集部１０４は、１ビット「ｘ」を図１６に示す「ａ」、「ｂ」、「ｃ」および「ｄ」の４つのビットにより表現する。すなわち、１ビットの値を４つのワードに分散して記述する。ここでワードはＥＣＣの単位とする。すなわち、メモリ４０が６４ビット単位でＥＣＣを持つ場合、１つのワードは６４ビットである。
【０１０１】
記録したいひとつのビット値ｘに対して、「ｘ＝ａ(ｂ(ｃ(ｄ」となるような４つの１ビットの値「ａ」、「ｂ」、「ｃ」および「ｄ」を任意に選ぶ。この４つの値は、できるだけ規則性がないようにランダムに選ぶことが望ましい。
【０１０２】
こうして選択された４つの値「ａ」、「ｂ」、「ｃ」および「ｄ」をそれぞれ別のワードに記録する。図１７に示す例においては、それぞれ「ワード１」、「ワード２」、「ワード３」および「ワード４」に記録される。
【０１０３】
さらに、４つのワードのうち２つの値「ａ」および「ｂ」は、ビット位置「ｘｉ」に記録する。残りの２つの値「ｃ」および「ｄ」は、ビット位置「ｘｉ−１」に記録する。
【０１０４】
ビット位置「ｘｉ」のうち「ワード１」および「ワード２」には、それぞれ「ａ」および「ｂ」が記録されたが、「ワード３」および「ワード４」にはまだビットが割り当てられていない。この「ワード３」には、「０」を記録し、「ワード４」には「１」を記録する。
【０１０５】
同様に、ビット位置「ｘｉ−１」のうち「ワード１」および「ワード２」にはそれぞれ「０」および「１」を記録する。
【０１０６】
メモリエラーとして、例えばビット位置「ｘｉ」に固定故障が発生し、「１」および「０」のいずれのワードを読み出しても、「１」を読み出す状態が想定される。
【０１０７】
この場合、上述のように１ビットを４つの１ビットの値「ａ」、「ｂ」、「ｃ」および「ｄ」に分解し、ビット位置「ｘｉ」および「ｘｉ−１」に記録した場合には、ワード３のビット位置「ｘｉ」の「０」が「１」に反転するのでワード３にエラーが検出される。すなわち、「ｃ」を特定することができない。したがって、「ｃ」との排他的論理和により得られるビット値「ｘ」を特定することができない。したがって、メモリエラーにより正しいデータが読み出された場合であっても、記録されたデータが再構築される可能性をより低減することができる。このように、４つのワードすべてを読み出す確率を低減することができる。
【０１０８】
なお、実施の形態５にかかるメモリ保護装置１のこれ以外の構成および処理は他の実施の形態にかかるメモリ保護装置１の構成および処理と同様である。
【０１０９】
実施の形態５にかかるメモリ保護装置１の変更例としては、４つのビットの配置位置は、図１７に示す例に限定されるものではなく、以下に示す条件を満たすものであればよい。すなわち、４つのビットすべてを異なるワードであり、かつ４つのビットのうち少なくとも１つのビットのビット位置が異なる。さらに、各ワードが配置されたビット位置であって、異なるワードに「０」と「１」が記録される。
【０１１０】
以上の条件を満たす他の例としては、２つのビット位置は隣接する位置でなくともよい。また、４ワードも連続する４ワードでなくともよい。
【０１１１】
（実施の形態６）
次に、実施の形態６にかかるメモリ保護装置１について説明する。他の実施の形態にかかるメモリ保護装置１においては、アクセスキーはプロセッサ側においてオペレーティングシステムなどが生成し、保護処理装置１０のアクセスキーレジスタ１１０に設定したが、実施の形態６にかかるメモリ保護装置１においては、保護処理装置１０がアクセスキーを生成する。
【０１１２】
図１８は、実施の形態６にかかるメモリ保護装置１の全体構成を示すブロック図である。実施の形態６にかかるメモリ保護装置１の保護処理装置１０は、アクセスキーを生成するアクセスキー生成部１３０と、アクセスキー生成部１３０により作成されたアクセスキーを保持するアクセスキー管理テーブル１３２をさらに有する。
【０１１３】
アクセスキー生成部１３０は、メモリコントローラ３０を介してプロセッサ２０より新しいアクセスキーの作成指示を取得する。作成指示を取得すると、乱数を発生し、これに基づいてアクセスキーを作成する。なお、実施の形態３または実施の形態４において説明した方法によりアクセスキーを作成するのが好ましい。さらに、作成されたアクセスキーが他のアクセスキーと重なるのを避けるべく、アクセスキー管理テーブル１３２に保持されているアクセスキーと異なるアクセスキーを作成する。
【０１１４】
こうして作成したアクセスキーをメモリコントローラ３０を介してプロセッサ２０に返すとともに、アクセスキー管理テーブル１３２にも登録する。そして、プロセッサ２０は、取得したアクセスキーを用いてメモリ４０へのアクセスを行う。
【０１１５】
なお、実施の形態６にかかるメモリ保護装置１のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置１の構成および処理と同様である。
【０１１６】
実施の形態６にかかるメモリ保護装置１の変更例について説明する。アクセスキーをプロセッサ２０に返した場合、プロセッサ用ＯＳがアクセスキーを管理することとなりアプリケーションから見られる可能性がある。そこで、変更例として、アクセスキーにかえてアクセスキーを識別するアクセスキーＩＤを返すこととしてもよい。
【０１１７】
この場合、保護処理装置１０は、さらにアクセスキーとアクセスキーＩＤとを対応付けたアクセスキーＩＤテーブルを有する。そして、アクセスキーＩＤテーブルを利用して、アクセスキーＩＤからアクセスキーを特定し、このアクセスキーをアクセスキーレジスタ１１０に設定する。これにより、実際のアクセスキーの値をプロセッサ２０上のソフトウェアが特定することはできないので、データのセキュリティが向上する。
【０１１８】
さらに、アクセスキーＩＤテーブルは、特別なアクセスキーを使ってメモリ４０上に記録することとしてもよい。これにより、この特別なアクセスキーをもたない場合には、プロセスはアクセスキーＩＤテーブルを参照することができなくなる。したがって、セキュリティが向上する。この特別なアクセスキーは、保護処理装置１０のみが参照することとし、他のプロセスには使えないように管理するのが望ましい。
【０１１９】
（実施の形態７）
次に、実施の形態７にかかるメモリ保護装置１について説明する。実施の形態３において説明したように、６４ビットのデータに８ビットのパリティをつける場合、有効なアクセスキーの数は最大１２８個である。実施の形態７にかかるメモリ保護装置１は、メモリのデータ幅を変えずにこの数を増やすべく、複数のアクセスキーを組み合わせて使う。
【０１２０】
多くのプロセッサはキャッシュメモリを持っており、同時に複数のワードをメモリから読み出す。例えばキャッシュラインのサイズが２５６ビットであると仮定すると、プロセッサはメモリから６４ビットのワード４つを単位として連続して読み出す。
【０１２１】
すなわち、メモリを２５６ビット単位で区切って、その単位で読み出すことになる。そこで、連続して読み出す４ワードに対して、アクセスキーを４つ用意する。４ワードを読み出すときに、１ワードでもアクセスキーの不一致が検出されたら４ワード全体を読み出せないように制御する。これにより、１２８の４乗の個数のアクセスキーがあるのと同等の効果を得ることができる。
【０１２２】
なお、実施の形態７にかかるメモリ保護装置１のこれ以外の構成および処理は、他の実施の形態にかかるメモリ保護装置１の構成および処理と同様である。
【図面の簡単な説明】
【０１２３】
【図１】実施の形態１にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図２】データをメモリに書き込む際の処理を説明するための図である。
【図３】データＤ’を読み出す際の処理を説明するための図である。
【図４】メモリ４０にデータを書き込む処理を示すフローチャートである。
【図５】書き込み処理におけるデータの流れを示す図である。
【図６】メモリ４０からデータを読み出す処理を示すフローチャートである。
【図７】メモリ４０に書き込まれたデータを読み出す際の処理を説明するための図である。
【図８】実施の形態１の第２の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図９】実施の形態１の第３の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図１０】実施の形態１の第４の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図１１】実施の形態１の第７の変更例にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図１２】書込アクセスキーテーブル１１２のデータ構成を模式的に示す図である。
【図１３】実施の形態２にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図１４】読出アクセスキーテーブル１１６のデータ構成を示す図である。
【図１５】アクセスキーを選択する方法の一例を説明するための図である。
【図１６】実施の形態５にかかるメモリ保護装置１の全体構成を示すブロック図である。
【図１７】データ編集部１０４の処理を説明するための図である。
【図１８】実施の形態６にかかるメモリ保護装置１の全体構成を示すブロック図である。
【符号の説明】
【０１２４】
１  メモリ保護装置
１０  保護処理装置
１１  システムＬＳＩ
１２  ブリッジＬＳＩ
１３  メモリチップ
２０  プロセッサ
２１  プロセッサバス
３０  メモリコントローラ
４０  メモリ
１００  パリティ生成回路
１０２  排他的論理和回路
１０４  データ編集部
１１０  アクセスキーレジスタ
１１２  書込アクセスキーテーブル
１１４  書込許可部
１１６  読出アクセスキーテーブル
１１８  アクセスキー選択部
１２０  排他的論理和回路
１２２  シンドローム計算回路
１２４  誤り訂正回路
１３０  アクセスキー生成部
１３２  アクセスキー管理テーブル
【図１】
0004469783.tif 000002
【図２】
0004469783.tif 000003
【図３】
0004469783.tif 000004
【図４】
0004469783.tif 000005
【図５】
0004469783.tif 000006
【図６】
0004469783.tif 000007
【図７】
0004469783.tif 000008
【図８】
0004469783.tif 000009
【図９】
0004469783.tif 000010
【図１０】
0004469783.tif 000011
【図１１】
0004469783.tif 000012
【図１２】
0004469783.tif 000013
【図１３】
0004469783.tif 000014
【図１４】
0004469783.tif 000015
【図１５】
0004469783.tif 000016
【図１６】
0004469783.tif 000017
【図１７】
0004469783.tif 000018
【図１８】
0004469783.tif 000019