メモリ制御装置及びメモリ制御プログラム
【課題】本構成を有さない場合に比べ、メモリに対する異常データの書込みに対処することができるメモリ制御装置及びメモリ制御プログラムを提供する。
【解決手段】生成した識別子をIDレジスタ32に設定し、データバス30に出力された合成データに含まれる識別子とIDレジスタ32に設定されている識別子が一致する場合は、比較回路34により出力された、LレベルのWE信号によりNVM20に書込データが書込まれ、記憶される。
【解決手段】生成した識別子をIDレジスタ32に設定し、データバス30に出力された合成データに含まれる識別子とIDレジスタ32に設定されている識別子が一致する場合は、比較回路34により出力された、LレベルのWE信号によりNVM20に書込データが書込まれ、記憶される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ制御装置及びメモリ制御プログラムに関する。
【背景技術】
【0002】
特許文献1には、情報処理装置に複数備えられた主記憶装置の故障の際に、他主記憶装置がアクセスされた場合は、自主記憶装置内で生成されたアドレスをリードし、データの誤りを検出し、誤りが検出された場合、そのアドレスデータを格納する技術が記載されている。
【0003】
特許文献2には、補助記憶手段に蓄積記憶された正常値と、半導体メモリに通常の動作電圧以下の電圧を印加して読み出したデータの誤り検出情報と、を比較することでエラーチェックを行うことにより、エラーが発生するセクタを未然に検出する技術及び検出したエラーセクタのデータを更新することでデータを復旧する技術が記載されている。
【0004】
特許文献3には、すでに書込まれたデータと次に書込まれるデータとが所定の関係を満たす場合のみ書込みを許可し、所定の関係でない場合には、誤り検出信号を出力する技術が記載されている。
【特許文献1】特開平5−002498号公報
【特許文献2】特開2000−173276号公報
【特許文献3】特開2004−295696号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、本構成を有さない場合に比べ、メモリに対する異常データの書込みに対処することができるメモリ制御装置及びメモリ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、請求項1に記載のメモリ制御装置は、メモリに記憶するデータであるかを識別するための識別子を生成する識別子生成手段と、前記識別子生成手段で生成された前記識別子を記憶する識別子記憶手段と、前記識別子生成手段で生成された識別子と前記メモリに記憶させるための第1のデータを含む、第2のデータを生成してデータバスに出力する第2データ出力手段と、前記第2データ出力手段により前記データバスに出力された前記第2のデータに含まれる前記識別子と、前記識別子記憶手段に記憶されている前記識別子とが一致した場合は、前記第2のデータに含まれる前記第1のデータの記憶を許可する許可信号を前記メモリに出力する許可信号出力手段と、を備える。
【0007】
請求項2に記載のメモリ制御装置は、請求項1に記載のメモリ制御装置において、前記許可信号出力手段は、前記第2のデータが、前記識別子記憶手段に記憶されている前記識別子を含まない場合は、前記第2のデータに含まれる前記第1のデータの記憶を禁止する禁止信号を前記メモリに出力する。
【0008】
請求項3に記載のメモリ制御装置は、請求項2に記載のメモリ制御装置において、前記許可信号出力手段により、前記禁止信号が前記記憶装置に出力された場合は、前記メモリに対する前記第1のデータの記憶が禁止された場合に予め定められた処理を行う処理手段に通知する通知手段をさらに備える。
【0009】
請求項4に記載のメモリ制御装置は、請求項1から請求項3のいずれか1項に記載のメモリ制御装置において、前記識別子は、第1のデータに対応して予め定められた識別子及び前記メモリに前記第1のデータが記憶される時期を表す識別子の少なくとも一方を含む。
【0010】
請求項5に記載のメモリ制御装置は、請求項1から請求項4のいずれか1項に記載のメモリ制御装置において、前記第2データ出力手段に接続される前記データバスのビット数が、前記メモリに接続される前記データバスのビット数より多く、前記識別子のビット数が、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数との差以下である。
【0011】
請求項6に記載のメモリ制御装置は、請求項1から請求項4のいずれか1項に記載のメモリ制御装置において、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数とが同一であり、前記許可信号出力手段は、前記第2のデータが前記メモリに入力される場合は、前記第1のデータ及び前記識別子の記憶を許可する前記許可信号を出力する。
【0012】
請求項7に記載のメモリ制御プログラムは、コンピュータを、請求項1から請求項6のいずれか1項に記載の前記識別子生成手段及び前記第2データ出力手段として機能させるためのものである。
【発明の効果】
【0013】
請求項1及び請求項7に記載の本発明によれば、本構成を有さない場合に比べ、メモリに対する異常データの書込みに対処することができる、という効果が得られる。
【0014】
請求項2に記載の本発明によれば、異常データを記憶しない、という効果が得られる。
【0015】
請求項3に記載の本発明によれば、本構成を有さない場合に比べ、異常データの書込みの発生に対応することができる、という効果が得られる。
【0016】
請求項4に記載の本発明によれば、第1のデータに対応して予め定められた識別子及び第1のデータが記憶される時期の少なくとも一方を特定する情報により識別することができる、という効果が得られる。
【0017】
請求項5に記載の本発明によれば、本構成を有さない場合に比べ、データバスを有効に使用することができる、という効果が得られる。
【0018】
請求項6に記載の本発明によれば、識別子を記憶することができる、という効果が得られる。
【発明を実施するための最良の形態】
【0019】
[第1の実施の形態]
メモリに異常値が書込まれるケースとしては、例えば、プログラムの暴走による異常な書込み等、書込み動作は正当であるが、データ自体が不正である場合がある。また、例えば、データバスの故障やノイズによる書込データ化け、素子の不良、制御回路の設計不良や製造不良による誤った制御タイミングでの書込み等、プログラムの動作は正常であるが、書込制御が不良でデータが正しく書込みされない場合がある。さらに、例えば、電源のオン/オフの過渡期の信号不安定に起因する擬似的(意図しない)書込み動作等、ノイズや電源電圧の不具合により、意図しない不正な書込み動作が行われてしまう場合がある。本実施の形態はこれらのような書込み異常に対応するためのものである。
【0020】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0021】
なお、本実施の形態では、メモリ素子の具体的一例として、EEPROM、FeRAM等のNVM(non Volatile memory、不揮発性メモリ)のデータの記憶(書込み)を制御する場合について説明する。
【0022】
まず、本実施の形態のメモリ制御装置10の構成について詳細に説明する。図1は、本実施の形態に係るメモリ制御装置10の概略構成の一例を示す機能ブロック図である。本実施の形態のメモリ制御装置10は、プロセッサ12、メモリコントローラ14、及びシステム時計16を備えて構成されている。プロセッサ12、メモリコントローラ14、及びシステム時計16は、コントロールバスやデータバス等のバス18を介して互いに情報等の授受が可能に接続されている。
【0023】
プロセッサ12は、CPU22、ROM24、RAM27、及びHDD28を含んで構成されている。CPU22では、詳細を後述する書込制御処理が実行され、プロセッサ12のOS(図示省略)が提供するNVM書込みのシステム関数[nvmwrite(Adr.Data)]がコールされて実行される。当該書込制御処理の制御プログラム26は、記録媒体としてのROM24に記憶されている。なお、CD−ROMやDVD−ROM等の記録媒体29に記録されている制御プログラム26を、HDD等にインストールし、CPU22に読込まれて実行されるようにしてもよい。ROM24には、制御プログラム26等の各種プログラムやパラメータ等が記憶されており、RAM27は、CPU22による制御プログラム26等の各種プログラムの実行時におけるワークエリア等として用いられる。システム時計16は、メモリ制御装置10のハードウェアの時計である。
【0024】
メモリコントローラ14は、CPU22の指示に従い、メモリ素子(NVM)20のデータの書込み(記憶)を制御するためのものである。メモリコントローラ14とNVM20とは、データバス30、アドレスバス36、及び書込信号等の各種信号線(詳細後述)とで接続されている。
【0025】
本実施の形態に係るメモリコントローラ14の概略構成の一例の概略構成図を図2に示す。本実施の形態のメモリコントローラ14は、制御部15、ID(識別子)レジスタ32、比較回路34、アドレスデコーダ38、NOR回路40、NAND回路42、インバータ44、及びNAND回路46を含んで構成されている。制御部15は、CPU22から出力される各種信号等により、メモリコントローラ14全体の制御を行うためのものである。IDレジスタ32は、データバス30を介して入力された識別子を記憶するためのものである。比較回路34は、IDレジスタ32に記憶されている識別子と、データバス30を介してメモリコントローラ14から入力された識別子とが一致するか比較し、比較結果に応じた信号を出力するための回路である。アドレスデコーダ38は、アドレスバス36を介してメモリコントローラ14から入力されたアドレス信号をデコードし、データを書込むアドレスを表す選択信号(Chip Select信号)をNVM20に出力するためのものである。
【0026】
次に、本実施の形態のメモリ制御装置10による、NVM20の制御(書込制御)について詳細に説明する。
(メイン処理)
まず、本実施の形態の書込制御処理におけるメイン処理について説明する。図3は、本実施の形態のメモリ制御装置10のCPU22で実行される書込み制御処理におけるメイン処理の一例を示すフローチャートである。
【0027】
まず、ステップ100では、詳細を後述する識別子生成処理により、識別子を生成し、次のステップ102では、詳細を後述する書込開始処理により、NVM20にデータの書込みを開始するための処理を行い、次のステップ104では、詳細を後述する書込み指示処理により、NVM20に、書込みデータの書込みを指示する。当該処理によりNVM20は、データバス30を介して入力された書込みデータを、アドレスバス36を介して入力されたアドレスに書込み、記憶する。
【0028】
次のステップ106では、書込エラーが発生したか否か判断する。NAND回路46から出力され、制御部15を介してプロセッサ12に入力されたWrite Error信号に基づいて書込エラーが発生したか否か判断する(詳細後述)。書込エラーが発生したと判断した場合は肯定されて、ステップ108へ進み、詳細を後述するエラー処理を行った後、ステップ110へ進む。一方、書込エラーが発生していないと判断した場合は否定されて、ステップ110へ進む。
【0029】
ステップ110では、本処理を終了するか否か判断する。メモリに書込むデータがまだ残っている場合等は否定されてステップ104に戻り、本処理を繰り返す。一方、全ての書込データの書込を指示した場合等は肯定されて、本処理を終了する。
(識別子生成処理)
次に、識別子生成処理(図3のステップ100)について詳細に説明する。図4は、本実施の形態の識別子生成処理の一例を示すフローチャートである。
【0030】
ステップ200では、時刻情報を取得する。本実施の形態では、システム関数[nvmwrite(Adr.Data)]がシステム立上げ時の初期化において、システム時計16から時刻情報を取得する。
【0031】
次のステップ202では、取得した時刻情報に基づいて、識別子を生成する。なお、本実施の形態では、具体的一例として、データバス30のデータ幅が32ビット及び書込データ(メモリ素子)のデータ幅が16ビットの場合であり、識別子がデータバス30のデータ幅と書込データのデータ幅の差である16ビットである場合について詳細に説明する。識別子及び書込データの具体的一例を図5に示す。本ステップでは、具体的一例として「00E5h」という識別子が生成される。
【0032】
次のステップ204では、IDレジスタ32に生成された識別子を設定する。
【0033】
このように本処理により、NVM20に書込むべきデータか否かを識別するための識別子が、システム時計16より取得した時刻情報に基づいて生成され、IDレジスタ32に設定される。
(書込開始処理)
次に、書込開始処理(図3のステップ102)について詳細に説明する。図6は、本実施の形態の書込処理の一例を示すフローチャートである。
【0034】
ステップ300では、NVM20に書込む(記憶させる)、書込データを準備する。本実施の形態では、システム起動後、NVM20に書込む書込データを、例えば、RAM27に読み出す。書込データの具体的一例としては図5に示すように、「9A3Fh」という16ビットのデータが挙げられる。
【0035】
次のステップ302では、システム関数[nvmwrite(Adr.Data)]をコールした後、本処理を終了する。
【0036】
このように本処理により、NVM20に書込む書込データが準備され、書込データを書込ませるためのシステム関数[nvmwrite(Adr.Data)]がコールされる。
(書込指示処理)
次に、書込指示処理(図3のステップ104)について詳細に説明する。図7は、本実施の形態の書込指示処理の一例を示すフローチャートである。
【0037】
ステップ400では、書込データを取得する。本実施の形態では、上記書込開始処理によりコールされたシステム関数[nvmwrite(Adr.Data)]に、16ビットの書込データが引数として渡される。
【0038】
次のステップ402では、識別子と書込データとを合成する。本実施の形態では、システム関数[nvmwrite(Adr.Data)]が書込データの上位に識別子を付加して32ビット長のデータ(図5参照)を生成する。
【0039】
次のステップ404では、NVM20に書込データを指定アドレスに書込むように指示した後、本処理を終了する。本実施の形態では、上記書込指示処理により識別子と書込データとを含む合成されたデータ(合成データ)をデータバス30に出力し、書込データを書込むアドレスを表す選択信号をアドレスバス36に出力する。また、書込データを書込むためのその他の信号を出力する。
【0040】
当該処理により、NVM20にデータバス30を介して入力された書込データを指定されたアドレスに書込み、記憶させるための動作について詳細に説明する。図8は、本実施の形態のメモリ制御装置10によるNVM20へのデータの書込及び読出しの具体的一例を示したタイミングチャートである。
【0041】
NVM20に書込データ(Data)を書込ませる準備として、LレベルのAddress Strobe信号(AS信号)、R/W信号及びDataStrobe信号(DS信号)が出力される。これにより、NOR回路40からはHレベルの信号が出力される。
【0042】
一方、データバス30に出力された合成データに含まれる識別子は比較回路34に入力され、書込データはNVM20に入力される。比較回路34に入力された識別子は、IDレジスタ32に設定されている識別子と比較される。
【0043】
合成データに含まれる識別子とIDレジスタ32に設定されている識別子とが一致する場合(正常時)は、HレベルのMatch信号が出力される。
【0044】
NOR回路40から出力されたHレベル信号と、HレベルのMatch信号がNAND回路42に入力されると、NAND回路42からはLレベルのWrite Enable信号(WE信号)が出力され、NVM20に入力される。NVM20は、LレベルのWE信号が入力されると、書込データを指定されたアドレスに書込み、記憶する。
【0045】
また、NOR回路40から出力されたHレベル信号と、HレベルのMatch信号がインバータ44でレベルが反転されてLレベルとなった信号と、がNAND回路46に入力されると、NAND回路46からはHレベルのWrite Error信号が出力され、制御部15を介してCPU22に入力される。
【0046】
一方、合成データに含まれる識別子とIDレジスタ32に設定されている識別子とが一致しない場合は(不正時)、LレベルのMatch信号が出力される。
【0047】
NOR回路40から出力されたHレベル信号と、LレベルのMatch信号がNAND回路42に入力されると、NAND回路42からはHレベルのWrite Enable信号(WE信号)が出力され、NVM20に入力される。NVM20は、HレベルのWE信号が入力される場合は、書込データを書込まない。
【0048】
また、NOR回路40から出力されたHレベル信号と、LレベルのMatch信号がインバータ44でレベルが反転されてHレベルとなった信号と、がNAND回路46に入力されると、NAND回路46からはLレベルのWrite Error信号が出力され、制御部15を介してCPU22に入力される。本実施の形態では、CPU22にLレベルのWrite Error信号が入力されると、エラーが発生したと判断(図3ステップ106で肯定判断)しエラー処理(図3のステップ108)を実行する。
【0049】
このように本処理により、システム関数[nvmwrite(Adr.Data)]が書込データと識別子とを合成した合成データを生成し、合成データをデータバス30に、アドレス信号をアドレスバス36に出力する。合成データに含まれる識別子とIDレジスタ32に含まれる識別子とが一致する場合は、NVM20に合成データに含まれる書込データ(DATA)が書込まれ、記憶される。合成データに含まれる識別子とIDレジスタ32に含まれる識別子とが一致しない場合は書込データが書込まれず、CPU22にWrite Error信号が出力される。
(エラー処理)
次に、エラー処理(図3のステップ108)について詳細に説明する。図9は、本実施の形態のエラー処理の一例を示すフローチャートである。
【0050】
ステップ500では、プログラムカウンタ値等の実行情報を退避させ、次のステップ502では、ログファイルを生成する。本実施の形態では、Write Error信号が入力されたときのプログラムカウンタ値等の実行情報がログファイルに記録される。
【0051】
次のステップ504では、システムコンソール(図示省略)にエラーが発生したことを通知し、次のステップ506では、システムが正常動作に復帰するためのリカバリ処理を行った後、本処理を終了する。
【0052】
このように本処理では、書込エラーが発生すると、CPU22は、予め定められたエラー処理により、実行情報をログファイルに記録し、さらに、リカバリ処理を行う。
【0053】
なお、本実施の形態では、NVM20に書込データの書込処理を行った時刻情報をシステム時計16から取得し、これにより識別子を生成しているがこれに限らず、例えば、NVM20に書き込ませるプログラムデータのプログラム開発時に固定的に規定した書込プロセス固有の値等、書込データに対して予め定められた識別子でもよい。また、時刻情報及び予め定められた識別子の両方であってもよい。
【0054】
また、本実施の形態では、書込データのみがNVM20に書込まれる場合について詳細に説明したがこれに限らず、書込データと共に識別子を書込むようにしてもよい。この場合は、NVM20には合成データが入力されるため、NVM20のデータ幅が合成データのデータ幅よりも多くなる。
【0055】
また、NVM20のデータ幅と、データバス30のデータ幅とが同じ場合、データバス30とは別に識別子を入出力するための専用信号線を設け、専用線により識別子を制御部15からIDレジスタ32及び比較回路34に出力するようにすればよい。
【0056】
また、本実施の形態では、識別子のビット数を、データバス30のビット幅とNVM20のデータ幅との差としているが、これに限らず、差以下のビット数であればよい。
【0057】
また、本実施の形態では、NVM20データの書込み、記憶を制御しているがこれに限らず、例えば不揮発性メモリ以外のメモリ等、その他のメモリであってもよい。なお、システム動作に対して重要なプログラムコードやパラメータを保持することが多いため、本実施の形態のように不揮発性メモリに対して行うことがより好ましい。
【0058】
以上説明したように、本実施の形態では、生成した識別子をIDレジスタ32に設定し、データバス30に出力された合成データに含まれる識別子とIDレジスタ32に設定されている識別子が一致する場合は、比較回路34により出力された、LレベルのWE信号によりNVM20に書込データが書込まれ、記憶される。
【0059】
このように、本実施の形態では、不正書込み等、書込み異常が発生した場合にNVM20に格納されたデータを保護すると共に、異常が発生したことをシステムに認識させることが可能となる。これにより、適切な処理、またはデバッグ等を行うことが可能となる。また、本実施の形態では、システム関数が戻り値(Return Value)等で異常の発生を監視する必要がないため、正常時の書込み処理性能を阻害することなく、さらに、不正書込み等の異常の発生時には、ハードウエア信号でいち早くシステムに通知するため、システム実行環境を保存し、デバッグが容易に行える。
【0060】
[第2の実施の形態]
第1の実施の形態では、識別子が一致するとNVM20にデータが書込まれる。例えば、プログラムの制御ミスによるデータ異常等によるプログラムの本来意図しない偽データの書込み等、プログラムの不具合等により、データ自体が不備なまま、正しいプロセスで書込まれる場合がある。
【0061】
本実施の形態では、このような場合に対応するための一例として、比較回路34により識別子を比較し、エラー信号及び書込み信号を生成する処理のその他の例について説明する。
【0062】
本実施の形態の識別子及び書込データの具体的一例を図10に示す。本実施の形態の識別子は、時刻情報とプロセスIDとを含んでいる。本実施の形態では、時刻情報及びプロセスIDのそれぞれをIDレジスタ32に設定する。
【0063】
IDレジスタ32に設定された時刻情報を示す識別子及びプロセスIDを示す識別子と、合成データに含まれる識別子とが一致するかによりエラー信号及び書込信号を生成する。本実施の形態のエラー信号及び書込信号の具体的例を図11に示す。なお、図11におけるエラー信号生成とは、Lレベルの信号の生成、書込信号生成とは、Lレベルの信号を示している。図11に示すように、時刻情報及びプロセスIDのいずれもが一致しないとエラー信号が生成されかつ書込信号が生成されない完全一致の判定と、時刻情報及びプロセスIDの少なくとも一方が一致しない場合は、エラー信号が生成され、少なくとも一方が一致する場合に書込み信号が生成される部分一致の判定のいずれをとることも可能である。部分一致の判定を実施する場合、書込信号を生成する部分の実施例は、図12に示すようにデータの部分一致によりHレベルを出力する信号Partial Matchを比較回路34からNAND回路42に入力する事で実施可能となる。
【0064】
このようにエラー信号により異常データの書き込みを検知し、さらに、時刻情報及びプロセスIDの識別子を判別することにより、正常な書込みプロセス以外のプロセスにより書込みが行われたか、正常なプロセスであるが予期しない時期に書込みが行われたかの判定が可能となる。
【0065】
なお、識別子の一部の情報のみで判定を行うようにしてもよい。
【0066】
また、時刻情報の判定は書込時期を指定する特定時刻指定であっても、NVM20に書込みの可能な範囲期間の指定であってもよい。
【0067】
さらに、識別子及び判定対象の合成データにその他のシステム情報が含まれてもよい。また、一部のみで識別子を構成してもよい。識別子の構成は、ビット構成には依存しない。
【0068】
以上説明したように本実施の形態では、IDレジスタ32に時刻情報及びプロセスIDの識別子がそれぞれ設定されており、それぞれについて一致するか否かにより、エラー信号及び書込信号を生成する。これにより、正常な書込みプロセス以外のプロセスにより書込みが行われたか、正常なプロセスであるが予期しない時期に書込みが行われたかの判定が可能になる。
【0069】
[第3の実施の形態]
本実施の形態では、書込まれた不備なデータを読出し時に検出することで、異常データの書込みに対処する場合について詳細に説明する。
【0070】
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、第1の実施の形態と同一部分には同一符号を付し、詳細な説明を省略する。本実施の形態のメモリ制御装置の概略構成は第1の実施の形態(図1参照)と同様のため、詳細な説明を省略する。
【0071】
本実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図を図13に示す。図13に示すように、本実施の形態では、NVM21は、データ幅が32ビットであり、データバス30により入力された書込みデータ及び識別子を記憶する。
【0072】
NVM21のデータの書込み、記憶処理(図3参照)は、第1の実施の形態と同様であるため、詳細な説明を省略する。IDレジスタ32に設定されている識別子と合成データに含まれる識別子とが一致しており、プログラムのトラブルで書込むべき書込みデータに異常があった場合は、識別子が一致するため、書込みエラー信号が生成されず、書込み時にエラー処理(図9参照)が行われずにNVM21に、異常がある書込みデータ及び識別子が記憶される。本実施の形態では、このような場合にNVM21に記憶されている書込み時の情報(識別子)により異常データの書込みに対応する。なお、識別子が全く一致しない場合でもNVM21にデータと識別子とを常時書込みし、NVM21に記憶されている書込み時の情報(識別子)により異常データの書込みに対応することも可能である。その場合の実施例の構成としては、図13においてNAND回路42に入力されている比較回路34の出力のPartial Match信号を常時Hレベルにすることにより実現可能である。
【0073】
図14に、本実施の形態のリカバリ処理のフローチャートの具体的一例を示す。本処理は、システム上のエラーが発生した場合、異常データの書込みの有無を判断するために実行される。
【0074】
ステップ600では、NVM21に書込まれている全データを読込む。次のステップ602では、データ範囲をチェックする。本実施の形態では、データ値自体が正常範囲を逸脱しているか否かをチェックする。
【0075】
次のステップ604では、プロセスIDをチェックし、次のステップ606では、時刻情報をチェックする。識別子から復元した書込時期またはプロセスIDが異常値である場合は、データが異常であると判断する。
【0076】
次のステップ608では、異常が有るか否かを判断する。異常が無い場合は本処理を終了する。一方、異常が有る場合は肯定されて、ステップ610へ進む。ステップ610では、識別子から書込時期またはプロセスIDを特定する。本実施の形態では、チェックにより、データ値自体が異常と判断された場合は書込み時期またはプロセスIDを特定する。なお、両方の識別子を含む場合は、書込時期及びプロセスIDの両方を特定する。
【0077】
次のステップ612では、エラー情報を生成する。本実施の形態では、上記により異常を判断した場合はその旨をエラー情報として生成し、CPU22に出力する。
【0078】
次のステップ614では、エラーデータを修復した後、本処理を終了する。なお、本実施の形態ではデータを初期値等に復元することで、エラーデータの修復を行う。
【0079】
なお、本実施の形態では、当該リカバリ処理は、システム上のエラーの発生時に行っているがこれに限らず、省エネ復帰を含むシステム立ち上げ時に実施してもよく、また、システムが正常動作中の待機中に実施してもよい。
【0080】
以上説明したように、本実施の形態では、NVM21に書込みデータと共に識別子を記憶しているため、読み出した識別子により、異常の有無等が判断できる。
【図面の簡単な説明】
【0081】
【図1】本発明の第1の実施の形態に係るメモリ制御装置の概略構成の一例を示す機能ブロック図である。
【図2】本発明の第1の実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図である。
【図3】本発明の第1の実施の形態に係るメモリ制御装置10で実行される書込制御処理におけるメイン処理の一例を示すフローチャートである。
【図4】本発明の第1の実施の形態に係る識別子生成処理の一例を示すフローチャートである。
【図5】本発明の第1の実施の形態に係る識別子及び書込データの具体的一例を説明するための説明図である。
【図6】本発明の第1の実施の形態に係る書込開始処理の一例を示すフローチャートである。
【図7】本発明の第1の実施の形態に係る書込指示処理の一例を示すフローチャートである。
【図8】本発明の第1の実施の形態に係るメモリ制御装置によるNVMへのデータの書込、及び読出しの具体的一例を示したタイミングチャートである。
【図9】本発明の第1の実施の形態に係るエラー処理の一例を示すフローチャートである。
【図10】本発明の第2の実施の形態に係る識別子及び書込データの具体的一例を説明するための説明図である。
【図11】本発明の第2の実施の形態に係るエラー信号及び書込信号の生成の具体的例を説明するための説明図である。
【図12】本発明の第2の実施の形態に係る書込信号の生成の具体的例を説明するための説明図である。
【図13】本発明の第3の実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図である。
【図14】本発明の第3の実施の形態に係るリカバリ処理の一例を示すフローチャートである。
【符号の説明】
【0082】
10 メモリ制御装置
12 プロセッサ
22 CPU
14 メモリコントローラ
16 システム時計
20 メモリ素子(NVM)
30 データバス
32 IDレジスタ
34 比較回路
40 NOR回路
42、46 NAND回路
【技術分野】
【0001】
本発明は、メモリ制御装置及びメモリ制御プログラムに関する。
【背景技術】
【0002】
特許文献1には、情報処理装置に複数備えられた主記憶装置の故障の際に、他主記憶装置がアクセスされた場合は、自主記憶装置内で生成されたアドレスをリードし、データの誤りを検出し、誤りが検出された場合、そのアドレスデータを格納する技術が記載されている。
【0003】
特許文献2には、補助記憶手段に蓄積記憶された正常値と、半導体メモリに通常の動作電圧以下の電圧を印加して読み出したデータの誤り検出情報と、を比較することでエラーチェックを行うことにより、エラーが発生するセクタを未然に検出する技術及び検出したエラーセクタのデータを更新することでデータを復旧する技術が記載されている。
【0004】
特許文献3には、すでに書込まれたデータと次に書込まれるデータとが所定の関係を満たす場合のみ書込みを許可し、所定の関係でない場合には、誤り検出信号を出力する技術が記載されている。
【特許文献1】特開平5−002498号公報
【特許文献2】特開2000−173276号公報
【特許文献3】特開2004−295696号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、本構成を有さない場合に比べ、メモリに対する異常データの書込みに対処することができるメモリ制御装置及びメモリ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、請求項1に記載のメモリ制御装置は、メモリに記憶するデータであるかを識別するための識別子を生成する識別子生成手段と、前記識別子生成手段で生成された前記識別子を記憶する識別子記憶手段と、前記識別子生成手段で生成された識別子と前記メモリに記憶させるための第1のデータを含む、第2のデータを生成してデータバスに出力する第2データ出力手段と、前記第2データ出力手段により前記データバスに出力された前記第2のデータに含まれる前記識別子と、前記識別子記憶手段に記憶されている前記識別子とが一致した場合は、前記第2のデータに含まれる前記第1のデータの記憶を許可する許可信号を前記メモリに出力する許可信号出力手段と、を備える。
【0007】
請求項2に記載のメモリ制御装置は、請求項1に記載のメモリ制御装置において、前記許可信号出力手段は、前記第2のデータが、前記識別子記憶手段に記憶されている前記識別子を含まない場合は、前記第2のデータに含まれる前記第1のデータの記憶を禁止する禁止信号を前記メモリに出力する。
【0008】
請求項3に記載のメモリ制御装置は、請求項2に記載のメモリ制御装置において、前記許可信号出力手段により、前記禁止信号が前記記憶装置に出力された場合は、前記メモリに対する前記第1のデータの記憶が禁止された場合に予め定められた処理を行う処理手段に通知する通知手段をさらに備える。
【0009】
請求項4に記載のメモリ制御装置は、請求項1から請求項3のいずれか1項に記載のメモリ制御装置において、前記識別子は、第1のデータに対応して予め定められた識別子及び前記メモリに前記第1のデータが記憶される時期を表す識別子の少なくとも一方を含む。
【0010】
請求項5に記載のメモリ制御装置は、請求項1から請求項4のいずれか1項に記載のメモリ制御装置において、前記第2データ出力手段に接続される前記データバスのビット数が、前記メモリに接続される前記データバスのビット数より多く、前記識別子のビット数が、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数との差以下である。
【0011】
請求項6に記載のメモリ制御装置は、請求項1から請求項4のいずれか1項に記載のメモリ制御装置において、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数とが同一であり、前記許可信号出力手段は、前記第2のデータが前記メモリに入力される場合は、前記第1のデータ及び前記識別子の記憶を許可する前記許可信号を出力する。
【0012】
請求項7に記載のメモリ制御プログラムは、コンピュータを、請求項1から請求項6のいずれか1項に記載の前記識別子生成手段及び前記第2データ出力手段として機能させるためのものである。
【発明の効果】
【0013】
請求項1及び請求項7に記載の本発明によれば、本構成を有さない場合に比べ、メモリに対する異常データの書込みに対処することができる、という効果が得られる。
【0014】
請求項2に記載の本発明によれば、異常データを記憶しない、という効果が得られる。
【0015】
請求項3に記載の本発明によれば、本構成を有さない場合に比べ、異常データの書込みの発生に対応することができる、という効果が得られる。
【0016】
請求項4に記載の本発明によれば、第1のデータに対応して予め定められた識別子及び第1のデータが記憶される時期の少なくとも一方を特定する情報により識別することができる、という効果が得られる。
【0017】
請求項5に記載の本発明によれば、本構成を有さない場合に比べ、データバスを有効に使用することができる、という効果が得られる。
【0018】
請求項6に記載の本発明によれば、識別子を記憶することができる、という効果が得られる。
【発明を実施するための最良の形態】
【0019】
[第1の実施の形態]
メモリに異常値が書込まれるケースとしては、例えば、プログラムの暴走による異常な書込み等、書込み動作は正当であるが、データ自体が不正である場合がある。また、例えば、データバスの故障やノイズによる書込データ化け、素子の不良、制御回路の設計不良や製造不良による誤った制御タイミングでの書込み等、プログラムの動作は正常であるが、書込制御が不良でデータが正しく書込みされない場合がある。さらに、例えば、電源のオン/オフの過渡期の信号不安定に起因する擬似的(意図しない)書込み動作等、ノイズや電源電圧の不具合により、意図しない不正な書込み動作が行われてしまう場合がある。本実施の形態はこれらのような書込み異常に対応するためのものである。
【0020】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【0021】
なお、本実施の形態では、メモリ素子の具体的一例として、EEPROM、FeRAM等のNVM(non Volatile memory、不揮発性メモリ)のデータの記憶(書込み)を制御する場合について説明する。
【0022】
まず、本実施の形態のメモリ制御装置10の構成について詳細に説明する。図1は、本実施の形態に係るメモリ制御装置10の概略構成の一例を示す機能ブロック図である。本実施の形態のメモリ制御装置10は、プロセッサ12、メモリコントローラ14、及びシステム時計16を備えて構成されている。プロセッサ12、メモリコントローラ14、及びシステム時計16は、コントロールバスやデータバス等のバス18を介して互いに情報等の授受が可能に接続されている。
【0023】
プロセッサ12は、CPU22、ROM24、RAM27、及びHDD28を含んで構成されている。CPU22では、詳細を後述する書込制御処理が実行され、プロセッサ12のOS(図示省略)が提供するNVM書込みのシステム関数[nvmwrite(Adr.Data)]がコールされて実行される。当該書込制御処理の制御プログラム26は、記録媒体としてのROM24に記憶されている。なお、CD−ROMやDVD−ROM等の記録媒体29に記録されている制御プログラム26を、HDD等にインストールし、CPU22に読込まれて実行されるようにしてもよい。ROM24には、制御プログラム26等の各種プログラムやパラメータ等が記憶されており、RAM27は、CPU22による制御プログラム26等の各種プログラムの実行時におけるワークエリア等として用いられる。システム時計16は、メモリ制御装置10のハードウェアの時計である。
【0024】
メモリコントローラ14は、CPU22の指示に従い、メモリ素子(NVM)20のデータの書込み(記憶)を制御するためのものである。メモリコントローラ14とNVM20とは、データバス30、アドレスバス36、及び書込信号等の各種信号線(詳細後述)とで接続されている。
【0025】
本実施の形態に係るメモリコントローラ14の概略構成の一例の概略構成図を図2に示す。本実施の形態のメモリコントローラ14は、制御部15、ID(識別子)レジスタ32、比較回路34、アドレスデコーダ38、NOR回路40、NAND回路42、インバータ44、及びNAND回路46を含んで構成されている。制御部15は、CPU22から出力される各種信号等により、メモリコントローラ14全体の制御を行うためのものである。IDレジスタ32は、データバス30を介して入力された識別子を記憶するためのものである。比較回路34は、IDレジスタ32に記憶されている識別子と、データバス30を介してメモリコントローラ14から入力された識別子とが一致するか比較し、比較結果に応じた信号を出力するための回路である。アドレスデコーダ38は、アドレスバス36を介してメモリコントローラ14から入力されたアドレス信号をデコードし、データを書込むアドレスを表す選択信号(Chip Select信号)をNVM20に出力するためのものである。
【0026】
次に、本実施の形態のメモリ制御装置10による、NVM20の制御(書込制御)について詳細に説明する。
(メイン処理)
まず、本実施の形態の書込制御処理におけるメイン処理について説明する。図3は、本実施の形態のメモリ制御装置10のCPU22で実行される書込み制御処理におけるメイン処理の一例を示すフローチャートである。
【0027】
まず、ステップ100では、詳細を後述する識別子生成処理により、識別子を生成し、次のステップ102では、詳細を後述する書込開始処理により、NVM20にデータの書込みを開始するための処理を行い、次のステップ104では、詳細を後述する書込み指示処理により、NVM20に、書込みデータの書込みを指示する。当該処理によりNVM20は、データバス30を介して入力された書込みデータを、アドレスバス36を介して入力されたアドレスに書込み、記憶する。
【0028】
次のステップ106では、書込エラーが発生したか否か判断する。NAND回路46から出力され、制御部15を介してプロセッサ12に入力されたWrite Error信号に基づいて書込エラーが発生したか否か判断する(詳細後述)。書込エラーが発生したと判断した場合は肯定されて、ステップ108へ進み、詳細を後述するエラー処理を行った後、ステップ110へ進む。一方、書込エラーが発生していないと判断した場合は否定されて、ステップ110へ進む。
【0029】
ステップ110では、本処理を終了するか否か判断する。メモリに書込むデータがまだ残っている場合等は否定されてステップ104に戻り、本処理を繰り返す。一方、全ての書込データの書込を指示した場合等は肯定されて、本処理を終了する。
(識別子生成処理)
次に、識別子生成処理(図3のステップ100)について詳細に説明する。図4は、本実施の形態の識別子生成処理の一例を示すフローチャートである。
【0030】
ステップ200では、時刻情報を取得する。本実施の形態では、システム関数[nvmwrite(Adr.Data)]がシステム立上げ時の初期化において、システム時計16から時刻情報を取得する。
【0031】
次のステップ202では、取得した時刻情報に基づいて、識別子を生成する。なお、本実施の形態では、具体的一例として、データバス30のデータ幅が32ビット及び書込データ(メモリ素子)のデータ幅が16ビットの場合であり、識別子がデータバス30のデータ幅と書込データのデータ幅の差である16ビットである場合について詳細に説明する。識別子及び書込データの具体的一例を図5に示す。本ステップでは、具体的一例として「00E5h」という識別子が生成される。
【0032】
次のステップ204では、IDレジスタ32に生成された識別子を設定する。
【0033】
このように本処理により、NVM20に書込むべきデータか否かを識別するための識別子が、システム時計16より取得した時刻情報に基づいて生成され、IDレジスタ32に設定される。
(書込開始処理)
次に、書込開始処理(図3のステップ102)について詳細に説明する。図6は、本実施の形態の書込処理の一例を示すフローチャートである。
【0034】
ステップ300では、NVM20に書込む(記憶させる)、書込データを準備する。本実施の形態では、システム起動後、NVM20に書込む書込データを、例えば、RAM27に読み出す。書込データの具体的一例としては図5に示すように、「9A3Fh」という16ビットのデータが挙げられる。
【0035】
次のステップ302では、システム関数[nvmwrite(Adr.Data)]をコールした後、本処理を終了する。
【0036】
このように本処理により、NVM20に書込む書込データが準備され、書込データを書込ませるためのシステム関数[nvmwrite(Adr.Data)]がコールされる。
(書込指示処理)
次に、書込指示処理(図3のステップ104)について詳細に説明する。図7は、本実施の形態の書込指示処理の一例を示すフローチャートである。
【0037】
ステップ400では、書込データを取得する。本実施の形態では、上記書込開始処理によりコールされたシステム関数[nvmwrite(Adr.Data)]に、16ビットの書込データが引数として渡される。
【0038】
次のステップ402では、識別子と書込データとを合成する。本実施の形態では、システム関数[nvmwrite(Adr.Data)]が書込データの上位に識別子を付加して32ビット長のデータ(図5参照)を生成する。
【0039】
次のステップ404では、NVM20に書込データを指定アドレスに書込むように指示した後、本処理を終了する。本実施の形態では、上記書込指示処理により識別子と書込データとを含む合成されたデータ(合成データ)をデータバス30に出力し、書込データを書込むアドレスを表す選択信号をアドレスバス36に出力する。また、書込データを書込むためのその他の信号を出力する。
【0040】
当該処理により、NVM20にデータバス30を介して入力された書込データを指定されたアドレスに書込み、記憶させるための動作について詳細に説明する。図8は、本実施の形態のメモリ制御装置10によるNVM20へのデータの書込及び読出しの具体的一例を示したタイミングチャートである。
【0041】
NVM20に書込データ(Data)を書込ませる準備として、LレベルのAddress Strobe信号(AS信号)、R/W信号及びDataStrobe信号(DS信号)が出力される。これにより、NOR回路40からはHレベルの信号が出力される。
【0042】
一方、データバス30に出力された合成データに含まれる識別子は比較回路34に入力され、書込データはNVM20に入力される。比較回路34に入力された識別子は、IDレジスタ32に設定されている識別子と比較される。
【0043】
合成データに含まれる識別子とIDレジスタ32に設定されている識別子とが一致する場合(正常時)は、HレベルのMatch信号が出力される。
【0044】
NOR回路40から出力されたHレベル信号と、HレベルのMatch信号がNAND回路42に入力されると、NAND回路42からはLレベルのWrite Enable信号(WE信号)が出力され、NVM20に入力される。NVM20は、LレベルのWE信号が入力されると、書込データを指定されたアドレスに書込み、記憶する。
【0045】
また、NOR回路40から出力されたHレベル信号と、HレベルのMatch信号がインバータ44でレベルが反転されてLレベルとなった信号と、がNAND回路46に入力されると、NAND回路46からはHレベルのWrite Error信号が出力され、制御部15を介してCPU22に入力される。
【0046】
一方、合成データに含まれる識別子とIDレジスタ32に設定されている識別子とが一致しない場合は(不正時)、LレベルのMatch信号が出力される。
【0047】
NOR回路40から出力されたHレベル信号と、LレベルのMatch信号がNAND回路42に入力されると、NAND回路42からはHレベルのWrite Enable信号(WE信号)が出力され、NVM20に入力される。NVM20は、HレベルのWE信号が入力される場合は、書込データを書込まない。
【0048】
また、NOR回路40から出力されたHレベル信号と、LレベルのMatch信号がインバータ44でレベルが反転されてHレベルとなった信号と、がNAND回路46に入力されると、NAND回路46からはLレベルのWrite Error信号が出力され、制御部15を介してCPU22に入力される。本実施の形態では、CPU22にLレベルのWrite Error信号が入力されると、エラーが発生したと判断(図3ステップ106で肯定判断)しエラー処理(図3のステップ108)を実行する。
【0049】
このように本処理により、システム関数[nvmwrite(Adr.Data)]が書込データと識別子とを合成した合成データを生成し、合成データをデータバス30に、アドレス信号をアドレスバス36に出力する。合成データに含まれる識別子とIDレジスタ32に含まれる識別子とが一致する場合は、NVM20に合成データに含まれる書込データ(DATA)が書込まれ、記憶される。合成データに含まれる識別子とIDレジスタ32に含まれる識別子とが一致しない場合は書込データが書込まれず、CPU22にWrite Error信号が出力される。
(エラー処理)
次に、エラー処理(図3のステップ108)について詳細に説明する。図9は、本実施の形態のエラー処理の一例を示すフローチャートである。
【0050】
ステップ500では、プログラムカウンタ値等の実行情報を退避させ、次のステップ502では、ログファイルを生成する。本実施の形態では、Write Error信号が入力されたときのプログラムカウンタ値等の実行情報がログファイルに記録される。
【0051】
次のステップ504では、システムコンソール(図示省略)にエラーが発生したことを通知し、次のステップ506では、システムが正常動作に復帰するためのリカバリ処理を行った後、本処理を終了する。
【0052】
このように本処理では、書込エラーが発生すると、CPU22は、予め定められたエラー処理により、実行情報をログファイルに記録し、さらに、リカバリ処理を行う。
【0053】
なお、本実施の形態では、NVM20に書込データの書込処理を行った時刻情報をシステム時計16から取得し、これにより識別子を生成しているがこれに限らず、例えば、NVM20に書き込ませるプログラムデータのプログラム開発時に固定的に規定した書込プロセス固有の値等、書込データに対して予め定められた識別子でもよい。また、時刻情報及び予め定められた識別子の両方であってもよい。
【0054】
また、本実施の形態では、書込データのみがNVM20に書込まれる場合について詳細に説明したがこれに限らず、書込データと共に識別子を書込むようにしてもよい。この場合は、NVM20には合成データが入力されるため、NVM20のデータ幅が合成データのデータ幅よりも多くなる。
【0055】
また、NVM20のデータ幅と、データバス30のデータ幅とが同じ場合、データバス30とは別に識別子を入出力するための専用信号線を設け、専用線により識別子を制御部15からIDレジスタ32及び比較回路34に出力するようにすればよい。
【0056】
また、本実施の形態では、識別子のビット数を、データバス30のビット幅とNVM20のデータ幅との差としているが、これに限らず、差以下のビット数であればよい。
【0057】
また、本実施の形態では、NVM20データの書込み、記憶を制御しているがこれに限らず、例えば不揮発性メモリ以外のメモリ等、その他のメモリであってもよい。なお、システム動作に対して重要なプログラムコードやパラメータを保持することが多いため、本実施の形態のように不揮発性メモリに対して行うことがより好ましい。
【0058】
以上説明したように、本実施の形態では、生成した識別子をIDレジスタ32に設定し、データバス30に出力された合成データに含まれる識別子とIDレジスタ32に設定されている識別子が一致する場合は、比較回路34により出力された、LレベルのWE信号によりNVM20に書込データが書込まれ、記憶される。
【0059】
このように、本実施の形態では、不正書込み等、書込み異常が発生した場合にNVM20に格納されたデータを保護すると共に、異常が発生したことをシステムに認識させることが可能となる。これにより、適切な処理、またはデバッグ等を行うことが可能となる。また、本実施の形態では、システム関数が戻り値(Return Value)等で異常の発生を監視する必要がないため、正常時の書込み処理性能を阻害することなく、さらに、不正書込み等の異常の発生時には、ハードウエア信号でいち早くシステムに通知するため、システム実行環境を保存し、デバッグが容易に行える。
【0060】
[第2の実施の形態]
第1の実施の形態では、識別子が一致するとNVM20にデータが書込まれる。例えば、プログラムの制御ミスによるデータ異常等によるプログラムの本来意図しない偽データの書込み等、プログラムの不具合等により、データ自体が不備なまま、正しいプロセスで書込まれる場合がある。
【0061】
本実施の形態では、このような場合に対応するための一例として、比較回路34により識別子を比較し、エラー信号及び書込み信号を生成する処理のその他の例について説明する。
【0062】
本実施の形態の識別子及び書込データの具体的一例を図10に示す。本実施の形態の識別子は、時刻情報とプロセスIDとを含んでいる。本実施の形態では、時刻情報及びプロセスIDのそれぞれをIDレジスタ32に設定する。
【0063】
IDレジスタ32に設定された時刻情報を示す識別子及びプロセスIDを示す識別子と、合成データに含まれる識別子とが一致するかによりエラー信号及び書込信号を生成する。本実施の形態のエラー信号及び書込信号の具体的例を図11に示す。なお、図11におけるエラー信号生成とは、Lレベルの信号の生成、書込信号生成とは、Lレベルの信号を示している。図11に示すように、時刻情報及びプロセスIDのいずれもが一致しないとエラー信号が生成されかつ書込信号が生成されない完全一致の判定と、時刻情報及びプロセスIDの少なくとも一方が一致しない場合は、エラー信号が生成され、少なくとも一方が一致する場合に書込み信号が生成される部分一致の判定のいずれをとることも可能である。部分一致の判定を実施する場合、書込信号を生成する部分の実施例は、図12に示すようにデータの部分一致によりHレベルを出力する信号Partial Matchを比較回路34からNAND回路42に入力する事で実施可能となる。
【0064】
このようにエラー信号により異常データの書き込みを検知し、さらに、時刻情報及びプロセスIDの識別子を判別することにより、正常な書込みプロセス以外のプロセスにより書込みが行われたか、正常なプロセスであるが予期しない時期に書込みが行われたかの判定が可能となる。
【0065】
なお、識別子の一部の情報のみで判定を行うようにしてもよい。
【0066】
また、時刻情報の判定は書込時期を指定する特定時刻指定であっても、NVM20に書込みの可能な範囲期間の指定であってもよい。
【0067】
さらに、識別子及び判定対象の合成データにその他のシステム情報が含まれてもよい。また、一部のみで識別子を構成してもよい。識別子の構成は、ビット構成には依存しない。
【0068】
以上説明したように本実施の形態では、IDレジスタ32に時刻情報及びプロセスIDの識別子がそれぞれ設定されており、それぞれについて一致するか否かにより、エラー信号及び書込信号を生成する。これにより、正常な書込みプロセス以外のプロセスにより書込みが行われたか、正常なプロセスであるが予期しない時期に書込みが行われたかの判定が可能になる。
【0069】
[第3の実施の形態]
本実施の形態では、書込まれた不備なデータを読出し時に検出することで、異常データの書込みに対処する場合について詳細に説明する。
【0070】
以下、図面を参照して本発明の実施の形態を詳細に説明する。なお、第1の実施の形態と同一部分には同一符号を付し、詳細な説明を省略する。本実施の形態のメモリ制御装置の概略構成は第1の実施の形態(図1参照)と同様のため、詳細な説明を省略する。
【0071】
本実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図を図13に示す。図13に示すように、本実施の形態では、NVM21は、データ幅が32ビットであり、データバス30により入力された書込みデータ及び識別子を記憶する。
【0072】
NVM21のデータの書込み、記憶処理(図3参照)は、第1の実施の形態と同様であるため、詳細な説明を省略する。IDレジスタ32に設定されている識別子と合成データに含まれる識別子とが一致しており、プログラムのトラブルで書込むべき書込みデータに異常があった場合は、識別子が一致するため、書込みエラー信号が生成されず、書込み時にエラー処理(図9参照)が行われずにNVM21に、異常がある書込みデータ及び識別子が記憶される。本実施の形態では、このような場合にNVM21に記憶されている書込み時の情報(識別子)により異常データの書込みに対応する。なお、識別子が全く一致しない場合でもNVM21にデータと識別子とを常時書込みし、NVM21に記憶されている書込み時の情報(識別子)により異常データの書込みに対応することも可能である。その場合の実施例の構成としては、図13においてNAND回路42に入力されている比較回路34の出力のPartial Match信号を常時Hレベルにすることにより実現可能である。
【0073】
図14に、本実施の形態のリカバリ処理のフローチャートの具体的一例を示す。本処理は、システム上のエラーが発生した場合、異常データの書込みの有無を判断するために実行される。
【0074】
ステップ600では、NVM21に書込まれている全データを読込む。次のステップ602では、データ範囲をチェックする。本実施の形態では、データ値自体が正常範囲を逸脱しているか否かをチェックする。
【0075】
次のステップ604では、プロセスIDをチェックし、次のステップ606では、時刻情報をチェックする。識別子から復元した書込時期またはプロセスIDが異常値である場合は、データが異常であると判断する。
【0076】
次のステップ608では、異常が有るか否かを判断する。異常が無い場合は本処理を終了する。一方、異常が有る場合は肯定されて、ステップ610へ進む。ステップ610では、識別子から書込時期またはプロセスIDを特定する。本実施の形態では、チェックにより、データ値自体が異常と判断された場合は書込み時期またはプロセスIDを特定する。なお、両方の識別子を含む場合は、書込時期及びプロセスIDの両方を特定する。
【0077】
次のステップ612では、エラー情報を生成する。本実施の形態では、上記により異常を判断した場合はその旨をエラー情報として生成し、CPU22に出力する。
【0078】
次のステップ614では、エラーデータを修復した後、本処理を終了する。なお、本実施の形態ではデータを初期値等に復元することで、エラーデータの修復を行う。
【0079】
なお、本実施の形態では、当該リカバリ処理は、システム上のエラーの発生時に行っているがこれに限らず、省エネ復帰を含むシステム立ち上げ時に実施してもよく、また、システムが正常動作中の待機中に実施してもよい。
【0080】
以上説明したように、本実施の形態では、NVM21に書込みデータと共に識別子を記憶しているため、読み出した識別子により、異常の有無等が判断できる。
【図面の簡単な説明】
【0081】
【図1】本発明の第1の実施の形態に係るメモリ制御装置の概略構成の一例を示す機能ブロック図である。
【図2】本発明の第1の実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図である。
【図3】本発明の第1の実施の形態に係るメモリ制御装置10で実行される書込制御処理におけるメイン処理の一例を示すフローチャートである。
【図4】本発明の第1の実施の形態に係る識別子生成処理の一例を示すフローチャートである。
【図5】本発明の第1の実施の形態に係る識別子及び書込データの具体的一例を説明するための説明図である。
【図6】本発明の第1の実施の形態に係る書込開始処理の一例を示すフローチャートである。
【図7】本発明の第1の実施の形態に係る書込指示処理の一例を示すフローチャートである。
【図8】本発明の第1の実施の形態に係るメモリ制御装置によるNVMへのデータの書込、及び読出しの具体的一例を示したタイミングチャートである。
【図9】本発明の第1の実施の形態に係るエラー処理の一例を示すフローチャートである。
【図10】本発明の第2の実施の形態に係る識別子及び書込データの具体的一例を説明するための説明図である。
【図11】本発明の第2の実施の形態に係るエラー信号及び書込信号の生成の具体的例を説明するための説明図である。
【図12】本発明の第2の実施の形態に係る書込信号の生成の具体的例を説明するための説明図である。
【図13】本発明の第3の実施の形態に係るメモリコントローラの概略構成の一例を示す概略構成図である。
【図14】本発明の第3の実施の形態に係るリカバリ処理の一例を示すフローチャートである。
【符号の説明】
【0082】
10 メモリ制御装置
12 プロセッサ
22 CPU
14 メモリコントローラ
16 システム時計
20 メモリ素子(NVM)
30 データバス
32 IDレジスタ
34 比較回路
40 NOR回路
42、46 NAND回路
【特許請求の範囲】
【請求項1】
メモリに記憶するデータであるかを識別するための識別子を生成する識別子生成手段と、
前記識別子生成手段で生成された前記識別子を記憶する識別子記憶手段と、
前記識別子生成手段で生成された識別子と前記メモリに記憶させるための第1のデータを含む、第2のデータを生成してデータバスに出力する第2データ出力手段と、
前記第2データ出力手段により前記データバスに出力された前記第2のデータに含まれる前記識別子と、前記識別子記憶手段に記憶されている前記識別子とが一致した場合は、前記第2のデータに含まれる前記第1のデータの記憶を許可する許可信号を前記メモリに出力する許可信号出力手段と、
を備えたメモリ制御装置。
【請求項2】
前記許可信号出力手段は、前記第2のデータが、前記識別子記憶手段に記憶されている前記識別子を含まない場合は、前記第2のデータに含まれる前記第1のデータの記憶を禁止する禁止信号を前記メモリに出力する、
請求項1に記載のメモリ制御装置。
【請求項3】
前記許可信号出力手段により、前記禁止信号が前記記憶装置に出力された場合は、前記メモリに対する前記第1のデータの記憶が禁止された場合に予め定められた処理を行う処理手段に通知する通知手段をさらに備えた、
請求項2に記載のメモリ制御装置。
【請求項4】
前記識別子は、第1のデータに対応して予め定められた識別子及び前記メモリに前記第1のデータが記憶される時期を表す識別子の少なくとも一方を含む、
請求項1から請求項3のいずれか1項に記載のメモリ制御装置。
【請求項5】
前記第2データ出力手段に接続される前記データバスのビット数が、前記メモリに接続される前記データバスのビット数より多く、前記識別子のビット数が、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数との差以下である、
請求項1から請求項4のいずれか1項に記載のメモリ制御装置。
【請求項6】
前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数とが同一であり、
前記許可信号出力手段は、前記第2のデータが前記メモリに入力される場合は、前記第1のデータ及び前記識別子の記憶を許可する前記許可信号を出力する、
請求項1から請求項4のいずれか1項に記載のメモリ制御装置。
【請求項7】
コンピュータを、請求項1から請求項6のいずれか1項に記載の前記識別子生成手段及び前記第2データ出力手段として機能させるためのメモリ制御プログラム。
【請求項1】
メモリに記憶するデータであるかを識別するための識別子を生成する識別子生成手段と、
前記識別子生成手段で生成された前記識別子を記憶する識別子記憶手段と、
前記識別子生成手段で生成された識別子と前記メモリに記憶させるための第1のデータを含む、第2のデータを生成してデータバスに出力する第2データ出力手段と、
前記第2データ出力手段により前記データバスに出力された前記第2のデータに含まれる前記識別子と、前記識別子記憶手段に記憶されている前記識別子とが一致した場合は、前記第2のデータに含まれる前記第1のデータの記憶を許可する許可信号を前記メモリに出力する許可信号出力手段と、
を備えたメモリ制御装置。
【請求項2】
前記許可信号出力手段は、前記第2のデータが、前記識別子記憶手段に記憶されている前記識別子を含まない場合は、前記第2のデータに含まれる前記第1のデータの記憶を禁止する禁止信号を前記メモリに出力する、
請求項1に記載のメモリ制御装置。
【請求項3】
前記許可信号出力手段により、前記禁止信号が前記記憶装置に出力された場合は、前記メモリに対する前記第1のデータの記憶が禁止された場合に予め定められた処理を行う処理手段に通知する通知手段をさらに備えた、
請求項2に記載のメモリ制御装置。
【請求項4】
前記識別子は、第1のデータに対応して予め定められた識別子及び前記メモリに前記第1のデータが記憶される時期を表す識別子の少なくとも一方を含む、
請求項1から請求項3のいずれか1項に記載のメモリ制御装置。
【請求項5】
前記第2データ出力手段に接続される前記データバスのビット数が、前記メモリに接続される前記データバスのビット数より多く、前記識別子のビット数が、前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数との差以下である、
請求項1から請求項4のいずれか1項に記載のメモリ制御装置。
【請求項6】
前記第2データ出力手段に接続される前記データバスのビット数と前記メモリに接続される前記データバスのビット数とが同一であり、
前記許可信号出力手段は、前記第2のデータが前記メモリに入力される場合は、前記第1のデータ及び前記識別子の記憶を許可する前記許可信号を出力する、
請求項1から請求項4のいずれか1項に記載のメモリ制御装置。
【請求項7】
コンピュータを、請求項1から請求項6のいずれか1項に記載の前記識別子生成手段及び前記第2データ出力手段として機能させるためのメモリ制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−146166(P2010−146166A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2008−321004(P2008−321004)
【出願日】平成20年12月17日(2008.12.17)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願日】平成20年12月17日(2008.12.17)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
[ Back to top ]