(57)【特許請求の範囲】
【請求項１】
複数のセクションに分割されるとともに隣接する二つの前記セクションの間にチェックデータが記録された第一の半導体メモリと、
この第一の半導体メモリと同じように複数のセクションに分割され当該第一の半導体メモリと同じデータが記録された第二の半導体メモリと、
前記二つのセクション間のチェックデータの初期値を予め記憶しており、前記第一の半導体メモリ内のチェックデータが当該初期値と異なっていた場合に、当該チェックデータが記録された当該二つのセクションの両方にデータ破壊が発生したと判断するデータ破壊チェック手段と、
このデータ破壊チェック手段によってデータ破壊が検出されたとき、前記第二の半導体メモリに記録されたデータに基づき前記第一の半導体メモリのデータを復旧するデータ復旧手段と、
を備えた半導体メモリシステム。
【請求項２】
前記データ破壊チェック手段によってデータ破壊が検出されなかったセクションに対して、システム終了時に前記第一の半導体メモリ内のデータを前記第二の半導体メモリに複写するデータバックアップ手段を、
更に備えた請求項１記載の半導体メモリシステム。
【請求項３】
複数のセクションに分割されるとともに隣接する二つの前記セクションの間にチェックデータが記録された第一の半導体メモリと、この第一の半導体メモリと同じように複数のセクションに分割され当該第一の半導体メモリと同じデータが記録された第二の半導体メモリとを備えた半導体メモリシステムに用いられるデータ復旧方法であって、
前記二つのセクション間のチェックデータの初期値を予め記憶しておき、前記第一の半導体メモリ内のチェックデータが当該初期値と異なっていた場合に、当該チェックデータが記録された当該二つのセクションの両方にデータ破壊が発生したと判断し、
このデータ破壊が検出されたとき、前記第二の半導体メモリに記録されたデータに基づき前記第一の半導体メモリのデータを復旧する、
データ復旧方法。
【請求項４】
前記データ破壊が検出されなかったセクションに対して、システム終了時に前記第一の半導体メモリ内のデータを前記第二の半導体メモリに複写する、
請求項３記載のデータ復旧方法。
【請求項５】
複数のセクションに分割されるとともに隣接する二つの前記セクションの間にチェックデータが記録された第一の半導体メモリと、この第一の半導体メモリと同じように複数のセクションに分割され当該第一の半導体メモリと同じデータが記録された第二の半導体メモリと、コンピュータとを備えた半導体メモリシステムに用いられるデータ復旧プログラムであって、
前記二つのセクション間のチェックデータの初期値を予め記憶しており、前記第一の半導体メモリ内のチェックデータが当該初期値と異なっていた場合に、当該チェックデータが記録された当該二つのセクションの両方にデータ破壊が発生したと判断するデータ破壊チェック手段、及び
このデータ破壊チェック手段によってデータ破壊が検出されたとき、前記第二の半導体メモリに記録されたデータに基づき前記第一の半導体メモリのデータを復旧するデータ復旧手段、
として前記コンピュータを機能させるためのデータ復旧プログラム。
【請求項６】
前記データ破壊チェック手段によってデータ破壊が検出されなかったセクションに対して、システム終了時に前記第一の半導体メモリ内のデータを前記第二の半導体メモリに複写するデータバックアップ手段として、
前記コンピュータを更に機能させるための請求項５記載のデータ復旧プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、携帯電話機などのレスポンス性能が重視される機器に用いられる、半導体メモリシステム及びそのデータ復旧方法並びにデータ復旧プログラムに関する。
【０００２】
【従来の技術】
携帯電話機では、レスポンス性能を重視する観点から、パーソナルコンピュータ等で使われる「ＣＰＵ＋ＯＳ」とは異なる、「ＲＩＳＣ型ＣＰＵ＋リアルタイムＯＳ」を利用することが多い。
【０００３】
ここで、日経ＢＰ社「日経ＢＰデジタル大事典 2001-2002年版」によれば、「ＲＩＳＣ」及び「リアルタイムＯＳ」は次のように定義されている。「ＲＩＳＣ」とは、reduced instruction set computer（縮小命令セット・コンピュータ）の略であり、加算や分岐などの基本的な命令しか持たせずに命令数を減らすことによって構造を単純にし、これにより処理の高速化を図る設計思想のことである。「リアルタイムＯＳ」とは、リアルタイム処理の実現を重視したＯＳのことである。リアルタイム処理は、要求された時間内に目的の処理を行うことが基本であるので、ユーザー・インターフェースなどの操作性の良さよりも、レスポンスの良さや実行時間の速度を重視する。そのため、複数のイベント（事象）が同時に発生した場合でも、その処理を目的の時間内に終了させるための制御を行う必要がある。
【０００４】
【発明が解決しようとする課題】
しかしながら、このような「ＲＩＳＣ型ＣＰＵ＋リアルタイムＯＳ」では、レスポンス性能を重視するあまり、パーソナルコンピュータ等で使われる「ＣＰＵ＋ＯＳ」と比較してメモリ保護機能が弱くなっている。そのため、単純なプログラムミスによって、大切なデータが破壊される可能性がある。
【０００５】
昨今の携帯電話機では、機能強化に伴うソフトウェア開発規模の大幅な増加に加え、メール機能やブラウザ機能等のように携帯電話機の外部から取り込んだデータを処理するケースが多い。このため、評価の対象となる組み合わせが、従来のような閉じた範囲での組み合わせから、無限の組み合わせに膨張しつつある。その結果、評価によるプログラムミスの撲滅が事実上不可能になってきたので、プログラムミスによるデータ破壊からデータを復旧する仕組みの実現が急務となっている。
【０００６】
【発明の目的】
そこで、本発明の目的は、携帯電話機などのレスポンス性能が重視される機器において、プログラムミスによるデータ破壊があってもそのデータを復旧可能とする、半導体メモリシステム及びそのデータ復旧方法並びにデータ復旧プログラムを提供することにある。
【０００７】
【課題を解決するための手段】
第一の半導体メモリシステムは、複数のセクションに分割され各セクション内にチェックデータが記録された第一の半導体メモリと、第一の半導体メモリと同じように複数のセクションに分割され第一の半導体メモリと同じデータが記録された第二の半導体メモリと、データ破壊チェック手段と、データ復旧手段とを備えたものである。このデータ破壊チェック手段は、各セクションのチェックデータの初期値を予め記憶しており、第一の半導体メモリ内のチェックデータが当該初期値と異なっていた場合に、当該チェックデータが記録されたセクションにデータ破壊が発生したと判断する。このデータ復旧手段は、データ破壊チェック手段によってデータ破壊が検出されたとき、第二の半導体メモリに記録されたデータに基づき第一の半導体メモリのデータを復旧する。
【０００８】
第一の半導体メモリのメモリ空間は、複数のセクションに分割されている。これらの各セクション内には、チェックデータが記録されている。ここで、あるセクションにデータ破壊が生じたとすると、そのチェックデータの値も変わってしまう。そこで、データ破壊チェック手段は、予め記憶している各セクションの初期値と、第一の半導体メモリ内のチェックデータとを対比し、これらが一致しなければそのセクションにデータ破壊が発生したと判断する。データ破壊が検出されると、データ復旧手段は、第一の半導体メモリのデータ破壊が生じたセクションに、第二の半導体メモリに記録されたデータを複写することにより、第一の半導体メモリのデータを復旧する。
【０００９】
第二の半導体メモリシステムは、上記第一の半導体メモリシステムにおいて、データバックアップ手段を更に備えたものである。このデータバックアップ手段は、データ破壊チェック手段によってデータ破壊が検出されなかったセクションに対して、システム終了時に第一の半導体メモリ内のデータを第二の半導体メモリに複写する。
【００１０】
本発明に係る半導体メモリシステムは、上記第一又は第二の半導体メモリシステムにおいて、隣接する二つのセクションの間にチェックデータが設けられている。そして、データ破壊チェック手段は、当該チェックデータが初期値と異なっていた場合に、当該二つのセクションの両方にデータ破壊が発生したと判断する。
【００１１】
本発明に係るデータ復旧方法（請求項３又は４）は、本発明に係る半導体メモリシステムに使用されるものであり、それぞれ請求項１又は２の構成に対応する。本発明に係るデータ復旧プログラム（請求項５又は６）は、本発明に係る半導体メモリシステムに使用されるものであり、それぞれ請求項１又は２の構成に対応する。
【００１２】
換言すると、本発明は、特別なメモリ保護機能を有していないＣＰＵやＯＳを使用したシステムにおいて、メモリ破壊に対するデータ保護を可能とする。つまり、本発明は、書き換え可能な不揮発性メモリに対してプログラムの不具合によって不正なデータを書き込んだためにデータ破壊が発生した際、データ破壊を検出するとともにバックアップしておいたデータに基づきデータ復旧を図る。
【００１３】
【発明の実施の形態】
以下、特許請求の範囲における「第一の半導体メモリ」、「第二の半導体メモリ」及び「コンピュータ」をそれぞれ「不揮発性メモリ」、「バックアップメモリ」及び「ＣＰＵ及びＲＯＭ」と具体化して、本発明の実施形態について説明する。
【００１４】
図１は、本発明に係る半導体メモリシステムの一実施形態を示すブロック図である。以下、この図面に基づき説明する。
【００１５】
本実施形態の半導体メモリシステム１０は、「ＲＩＳＣ型ＣＰＵ＋リアルタイムＯＳ」を用いた携帯電話機（図示せず）に搭載され、ＣＰＵ１１、ＲＯＭ１２、不揮発性メモリ１３及びバックアップメモリ１４を備えている。また、ＣＰＵ１１は、ＲＯＭ１２に記録されたデータ復旧用のプログラム１２０によって、データ破壊チェック手段１２１、データ復旧手段１２２及びデータバックアップ手段１２３として機能する。
【００１６】
不揮発性メモリ１３は、複数のセクションに分割され、各セクション内にチェックデータが記録されている。バックアップメモリ１４は、不揮発性メモリ１３と同じように複数のセクションに分割され、不揮発性メモリ１３と同じデータが記録されている。
【００１７】
データ破壊チェック手段１２１は、各セクションのチェックデータの初期値を予め記憶しており、不揮発性メモリ１３内のチェックデータが当該初期値と異なっていた場合に、データ破壊が発生したと判断する。データ復旧手段１２２は、データ破壊チェック手段１２１によってデータ破壊が検出されたとき、バックアップメモリ１４に記録されたデータに基づき不揮発性メモリ１３のデータを復旧する。データバックアップ手段１２３は、データ破壊チェック手段１２１によってデータ破壊が検出されなかったセクションに対して、システム終了時に不揮発性メモリ１３内のデータをバックアップメモリ１４に複写する。
【００１８】
また、チェックデータは、隣接する二つのセクションの間に設けられている。そして、データ破壊チェック手段１２１は、チェックデータが初期値と異なっていた場合に、その二つのセクションの両方にデータ破壊が発生したと判断する。チェックデータが壊れていると、そのチェックデータに隣接する二つのセクションのデータも連続して壊れている可能性が高いからである。
【００１９】
なお、チェックデータは、単なる固定値であるので、チェックサムと異なり、セクション内のデータに基づき演算されるものではない。チェックデータの初期値は、セクション毎に異なる値にしてもよく、全てのセクションで同じ値としてもよい。不揮発性メモリ１３及びバックアップメモリ１４は、例えばフラッシュメモリ、ＥＥＰＲＯＭ、ＭＲＡＭ（magnetic RAM）、二次電池から常に電源電圧が供給されているＤＲＡＭやＳＲＡＭ等である。
【００２０】
更に詳しく説明する。
【００２１】
ＣＰＵ１１は、ＲＯＭ１２に記録されたプログラム１２０に従い、必要に応じて不揮発性メモリ１３へのデータ書き込みを行う。不揮発性メモリ１３は、複数のセクションに分割され、各セクション内にチェックデータが記録されている。チェックデータは、プログラムの不正により不揮発性メモリ１３のデータが破壊されていないかを検出するためのデータであって、不揮発性メモリ１３内の各セクションの先頭に記録されるデータである。
【００２２】
データ破壊チェック手段１２１は、不揮発性メモリ１３内のチェックデータが初期値と異なる値になっていた場合、データ破壊が発生したものと判断する。例えば、チェックデータ１の値が初期値と異なる場合、セクション１のデータが破壊されたものと判断する。同様に、チェックデータｘ（ｎ≧ｘ＞１）の値が初期値と異なる場合、チェックデータｘに隣接するセクションｘ−１及びセクションｘのそれぞれのデータが破壊されたものと判断する。
【００２３】
データ復旧手段１２２は、データ破壊チェック手段１２１によってデータ破壊が検出された際、バックアップメモリ１４に格納されたデータに基づき不揮発性メモリ１３のデータをセクション単位で復旧する。
【００２４】
データバックアップ手段１２３は、不揮発性メモリ１３のデータが更新された場合、システム終了時に不揮発性メモリ１３内のデータをバックアップメモリ１４の対応するセクションに保存する。
【００２５】
システム終了時に、データ破壊チェック手段１２１は、不揮発性メモリ１３内の各チェックデータを検査する。そして、データバックアップ手段１２３は、チェックデータが破壊されていないことを確認後、不揮発性メモリ１３のデータをバックアップメモリ１４に複写する。一方、チェックデータの破壊が検出された場合は、データ復旧手段１２２が不揮発性メモリ１３のデータを復旧する。
【００２６】
システム起動時に、データ破壊チェック手段１２１は、不揮発性メモリ１３内のデータ破壊の有無を検査する。そして、破壊されたセクションが検出されれば、データ復旧手段１２２は、バックアップメモリ１４のデータに基づき、不揮発性メモリ１３のデータをセクション単位で復旧する。
【００２７】
このようにして、ＣＰＵやＯＳにメモリ保護機能のないシステムにおいてもメモリのデータ破壊に対するデータ復旧を可能にする。
【００２８】
次に、言葉を換えてもう一度説明する。
【００２９】
半導体メモリシステム１０は、ＣＰＵ１１と、ＣＰＵ１１を制御するプログラム１２０と、プログラム１２０に従いデータを読み書きすることのできる不揮発性メモリ１３と、不揮発性メモリ１３のデータが破壊された時にデータを復旧するために使用するバックアップメモリ１４と、不揮発性メモリ１３のデータ破壊を検査するデータ破壊チェック手段１２１と、データ破壊された不揮発性メモリ１３のデータをバックアップメモリ１４のデータを基にデータ復旧するデータ復旧手段１２２と、不揮発性メモリ１３のデータをバックアップメモリ１４の対応するセクションに保存するデータバックアップ手段１２３とから構成されている。これらの各構成要素は、概略それぞれ次のように動作する。
【００３０】
データ破壊チェック手段１２１は、不揮発性メモリ１３内の各セクションの先頭に設定されたチェックデータの値を参照し、そのチェックデータの値が初期値と異なる場合、そのチェックデータに隣接するセクションのデータ破壊が発生したと判断する。例えば、チェックデータ１の値が初期値と異なる場合はセクション１のデータ破壊が発生したと判断し、チェックデータｘ（ｎ≧ｘ＞１）の値が初期値と異なる場合はセクションｘ−１及びセクションｘの両方のデータ破壊が発生したと判断する。
【００３１】
データ復旧手段１２２は、バックアップメモリ１４の内容を基にして不揮発性メモリ１３のデータをセクション単位に復旧する。データバックアップ手段１２３は、不揮発性メモリ１３のデータが更新された場合、そのデータに対応するバックアップメモリ１４内のデータをセクション単位で更新する。
【００３２】
図２は、半導体メモリシステム１０におけるシステム起動処理の動作を示すフローチャートである。以下、図１及び図２に基づき説明する。
【００３３】
まず、データ破壊チェック手段１２１は、不揮発性メモリ１３内のチェックデータ１が初期値と一致しているか否かをチェックする（ステップＡ１）。チェックデータ１が初期値と一致していなければ、データ破壊チェック手段１２１はセクション１のデータが破壊されたと判断する。そして、データ復旧手段１２２は、バックアップメモリ１４内のセクション１のデータを不揮発性メモリ１３内のセクション１に複写することにより、データを復旧する（ステップＡ２）。
【００３４】
ステップＡ１でチェックデータ１が初期値と一致していた場合、又はステップＡ２でセクション１のデータを復旧した場合は、処理カウンタ（ｘ）に‘２’をセットする（ステップＡ３）。
【００３５】
続いて、処理カウンタ（ｘ）の値と不揮発性メモリ１３のセクション総数ｎとを、比較する（ステップＡ４）。処理カウンタ（ｘ）の値が不揮発性メモリ１３のセクション総数ｎよりも大きい場合は、システム起動処理を終了する。
【００３６】
一方、処理カウンタ（ｘ）の値が不揮発性メモリ１３のセクション総数ｎ以下であれば、データ破壊チェック手段１２１は、不揮発性メモリ１３内のチェックデータｘが初期値と一致しているか否かをチェックする（ステップＡ５）。
【００３７】
チェックデータｘが初期値と一致していなければ、データ破壊チェック手段１２１はセクションｘ−１及びセクションｘのデータが破壊されたと判断する。そして、データ復旧手段１２２は、バックアップメモリ１４内のセクションｘ−１及びセクションｘのデータを、不揮発性メモリ１３内のセクションｘ−１及びセクションｘに複写することにより、データを復旧する（ステップＡ６）。
【００３８】
ステップＡ５でチェックデータｘが初期値と一致していた場合、又はステップＡ６でセクションｘ−１及びセクションｘのデータを復旧した場合は、処理カウンタ（ｘ）を１つ更新し、ステップＡ４に進み処理を繰り返す（ステップＡ７）。
【００３９】
図３は、半導体メモリシステム１０におけるシステム終了処理の動作を示すフローチャートである。以下、図１及び図３に基づき説明する。
【００４０】
まず、処理カウンタ（ｘ）に‘２’をセットする（ステップＢ１）。続いて、データ破壊チェック手段１２１は、不揮発性メモリ１３内のチェックデータｘ−１及びチェックデータｘが初期値と一致しているか否かをチェックする（ステップＢ２）。
【００４１】
チェックデータｘ−１及びチェックデータｘが初期値に一致していれば、データ破壊チェック手段１２１はセクションｘ−１のデータが破壊されていないと判断する。そして、データバックアップ手段１２３は、不揮発性メモリ１３内のセクションｘ−１のデータをバックアップメモリ１４のセクションｘ−１に複写することにより、バックアップ内容を更新する（ステップＢ３）。
【００４２】
一方、チェックデータｘ−１及びチェックデータｘが初期値に一致していなければ、データ破壊チェック手段１２１はセクションｘ−１のデータが破壊されたと判断する。そして、データ復旧手段１２２は、バックアップメモリ１４内のセクションｘ−１のデータを不揮発性メモリ１３内のセクションｘ−１に複写することにより、データを復旧する（ステップＢ４）。
【００４３】
続いて、処理カウンタ（ｘ）を１つ更新し（ステップＢ５）、処理カウンタ（ｘ）の値と不揮発性メモリ１３のセクション総数ｎとを比較する（ステップＢ６）。処理カウンタ（ｘ）の値が不揮発性メモリ１３のセクション総数ｎ以下であれば、ステップＢ２に戻って処理を繰り返す。
【００４４】
一方、処理カウンタ（ｘ）の値が不揮発性メモリ１３のセクション総数ｎよりも大きい場合は、データ破壊チェック手段１２１は、不揮発性メモリ１３内のチェックデータｘ−１が初期値と一致しているか否かをチェックする（ステップＢ７）。
【００４５】
チェックデータｘ−１が初期値に一致していれば、データ破壊チェック手段１２１はセクションｘ−１のデータが破壊されていないと判断する。そして、データバックアップ手段１２３は、不揮発性メモリ１３内のセクションｘ−１のデータをバックアップメモリ１４のセクションｘ−１に複写することにより、バックアップ内容を更新する（ステップＢ８）。
【００４６】
一方、チェックデータｘ−１が初期値に一致していなければ、データ破壊チェック手段１２１はセクションｘ−１のデータが破壊されたと判断する。そして、データ復旧手段１２２は、バックアップメモリ１４内のセクションｘ−１のデータを不揮発性メモリ１３内のセクションｘ−１に複写することにより、データを復旧する（ステップＢ９）。
【００４７】
以上のように、チェックデータの値によりデータ破壊の有無を判断し、データ破壊と判断された場合に、バックアップしておいたデータによる復旧処理を行うことにより、データ破壊に対するデータ復旧を可能とする。
【００４８】
【発明の効果】
本発明に係る半導体メモリシステム等によれば、複数のセクションに分割され各セクション内にチェックデータが記録された第一の半導体メモリと、第一の半導体メモリと同じように複数のセクションに分割され第一の半導体メモリと同じデータが記録された第二の半導体メモリとを備えるとともに、各セクションのチェックデータの初期値を予め記憶しておき、第一の半導体メモリ内のチェックデータが初期値と異なっていた場合に、データ破壊が発生したと判断し、第二の半導体メモリに記録されたデータに基づき第一の半導体メモリのデータを復旧する。したがって、「ＲＩＳＣ型ＣＰＵ＋リアルタイムＯＳ」を使用するためにメモリ保護機能が弱くなっている携帯電話機などにおいて、プログラムミスによるデータ破壊があっても、そのデータを容易かつ確実に復旧できる。
【００４９】
また、データ破壊が検出されなかったセクションに対して、システム終了時に第一の半導体メモリ内のデータを第二の半導体メモリに複写することにより、システム終了時に最新のデータを第二の半導体メモリにバックアップできる。
【００５０】
更に、隣接する二つのセクションの間にチェックデータが設けられ、このチェックデータが初期値と異なっていた場合に、これらの二つのセクションの両方にデータ破壊が発生したと判断することにより、一つのセクションが二つのチェックデータによって二重に管理されるので、データ破壊をより確実に検出できる。
【００５１】
換言すると、本発明の効果は、プログラムの不正により半導体メモリに保存したデータが破壊されていた場合でも、以前に保存しておいた状態に復旧できることにある。その理由は、半導体メモリ上にチェックデータを記録し、この値の変化によりデータ破壊を検出し、データ破壊が検出された場合に、以前に保存した正常データに基づきデータを復旧するためである。
【図面の簡単な説明】
【図１】本発明に係る半導体メモリシステムの一実施形態を示すブロック図である。
【図２】図１の半導体メモリシステムにおけるシステム起動処理の動作を示すフローチャートである。
【図３】図１の半導体メモリシステムにおけるシステム終了処理の動作を示すフローチャートである。
【符号の説明】
１０  半導体メモリシステム
１１  ＣＰＵ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  バックアップメモリ
１２０  プログラム
１２１  データ破壊チェック手段
１２２  データ復旧手段
１２３  データバックアップ手段
【図１】
0004078871.tif 000002
【図２】
0004078871.tif 000003
【図３】
0004078871.tif 000004