(57)【特許請求の範囲】
【請求項１】
データを格納する第１、２不揮発性メモリと、
前記第１、２不揮発性メモリのうちの前記第１不揮発性メモリを選択するための第１選択信号を出力するＣＰＵと、
読出命令に応じて前記第１、２不揮発性メモリから前記データを読み出す制御部と、
前記第１選択信号に従って、前記第１不揮発性メモリから読み出された前記データを出力するセレクタと、
前記セレクタから出力された前記データに対してエラー訂正を実行し、その結果、前記データに不良がない場合、前記データを前記ＣＰＵに出力し、前記データに不良がある場合、その旨を表すエラー情報を前記ＣＰＵに出力するデコーダと、
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と
を具備し、
前記ＣＰＵは、
前記エラー情報に応じて、前記第１不揮発性メモリに格納された前記データに不良があることを表すアドレス情報を出力し、
前記第１、２不揮発性メモリのうちの前記第２不揮発性メモリを選択するための第２選択信号を前記セレクタに出力し、
前記制御部は、
前記アドレス情報に従って、前記第２不揮発性メモリに格納された前記データを前記ＲＡＭに格納し、
前記第１不揮発性メモリに格納された前記データを消去し、前記ＲＡＭに格納された前記データを前記第１不揮発性メモリに書き込み、
前記セレクタは、
前記第２選択信号に従って、前記第２不揮発性メモリから読み出された前記データを前記デコーダに出力する
マイクロコンピュータ。
【請求項２】
レジスタ
を更に具備し、
前記ＣＰＵは、
前記エラー情報に応じて、前記アドレス情報を前記レジスタに書き込むと共に、エラー発生割込信号を前記制御部に出力し、
前記制御部は、
前記エラー発生割込信号に応じて、前記レジスタから前記アドレス情報を読み出し、
前記アドレス情報に従って、前記第２不揮発性メモリに格納された前記データを前記ＲＡＭに格納する
請求項１に記載のマイクロコンピュータ。
【請求項３】
前記制御部は、
前記第２不揮発性メモリに格納された前記データを前記ＲＡＭに格納したときにコピー終了割込信号を前記ＣＰＵに出力し、
前記ＣＰＵは、
前記コピー終了割込信号に応じて、前記第２選択信号を前記セレクタに出力する
請求項２に記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵは、
前記第２選択信号を前記セレクタに出力したときに、切替終了割込信号を前記制御部に出力し、
前記制御部は、
前記切替終了割込信号に応じて、前記第１不揮発性メモリに格納された前記データを消去し、前記ＲＡＭに格納された前記データを前記第１不揮発性メモリに書き込む
請求項１〜３のいずれかに記載のマイクロコンピュータ。
【請求項５】
前記デコーダは、前記エラー訂正としてＥＣＣデコードを実行する
請求項１〜４のいずれかに記載のマイクロコンピュータ。
【請求項６】
データを格納する第１、２不揮発性メモリと、
前記第１、２不揮発性メモリのうちの前記第１不揮発性メモリを選択する第１選択信号を出力するＣＰＵと、
読出命令に応じて前記第１、２不揮発性メモリから前記データを読み出す制御部と、
前記第１選択信号に従って、前記第１不揮発性メモリから読み出された前記データを出力するセレクタと、
前記セレクタから出力された前記データに対してエラー訂正を実行し、その結果、前記データに不良がない場合、前記データを前記ＣＰＵに出力し、前記データに不良がある場合、その旨を表すエラー情報を前記ＣＰＵに出力するデコーダと、
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と
を具備し、
前記ＣＰＵは、
前記エラー情報に応じて、前記第１不揮発性メモリに格納された前記データに不良があることを表すアドレス情報を出力し、
前記第１、２不揮発性メモリのうちの前記第２不揮発性メモリを選択するための第２選択信号を前記セレクタに出力し、
前記制御部は、
前記アドレス情報に従って、前記第１不揮発性メモリに格納された前記データを前記ＲＡＭに格納し、
前記ＲＡＭに格納された前記データに対してエンコードを実行し、
前記第１不揮発性メモリに格納された前記データを消去し、前記ＲＡＭに格納された前記データを前記第１不揮発性メモリに書き込み、
前記セレクタは、
前記第２選択信号に従って、前記第２不揮発性メモリから読み出された前記データを前記デコーダに出力する
マイクロコンピュータ。
【請求項７】
レジスタ
を更に具備し、
前記ＣＰＵは、
前記エラー情報に応じて、前記アドレス情報を前記レジスタに書き込むと共に、前記第２選択信号を前記セレクタに出力し、エラー発生割込信号を前記制御部に出力し、
前記制御部は、
前記エラー発生割込信号に応じて、前記レジスタから前記アドレス情報を読み出し、
前記アドレス情報に従って、前記第１不揮発性メモリに格納された前記データを前記ＲＡＭに格納する
請求項６に記載のマイクロコンピュータ。
【請求項８】
前記デコーダは、前記エラー訂正としてＥＣＣデコードを実行し、
前記制御部は、前記エンコードとしてＥＣＣエンコードを実行する
請求項６又は７に記載のマイクロコンピュータ。
【請求項９】
前記ＣＰＵは、前記デコーダから出力された前記データに基づいてシステムを制御する
請求項１〜８のいずれかに記載のマイクロコンピュータ。
【請求項１０】
前記データの不良とは、リードリテンション不良である
請求項１〜９のいずれかに記載のマイクロコンピュータ。
【請求項１１】
マイクロコンピュータを用いてメモリアクセスを行なうメモリアクセス方法であって、
データを格納する第１、２不揮発性メモリのうちの前記第１不揮発性メモリを選択不揮発性メモリとしてフェッチするステップと、
読出命令に応じて前記選択不揮発性メモリから前記データを読み出すステップと、
前記選択不揮発性メモリから読み出された前記データに対してエラー訂正を実行し、その結果、前記データに不良がない場合、前記データを出力し、前記データに不良がある場合、その旨を表すエラー情報を出力するステップと、
前記エラー情報に応じて、前記第１不揮発性メモリに格納された前記データに不良があることを表すアドレス情報を出力し、
前記第１、２不揮発性メモリのうちの前記第２不揮発性メモリを前記選択不揮発性メモリとしてフェッチするステップと、
前記アドレス情報に従って、前記第２不揮発性メモリに格納された前記データをＲＡＭに格納するステップと、
前記第１不揮発性メモリに格納された前記データを消去し、前記ＲＡＭに格納された前記データを前記第１不揮発性メモリに書き込むステップと
を具備するメモリアクセス方法。
【請求項１２】
マイクロコンピュータを用いてメモリアクセスを行なうメモリアクセス方法であって、
データを格納する第１、２不揮発性メモリのうちの前記第１不揮発性メモリを選択不揮発性メモリとしてフェッチするステップと、
読出命令に応じて前記選択不揮発性メモリから前記データを読み出すステップと、
前記選択不揮発性メモリから読み出された前記データに対してエラー訂正を実行し、その結果、前記データに不良がない場合、前記データを出力し、前記データに不良がある場合、その旨を表すエラー情報を出力するステップと、
前記エラー情報に応じて、前記第１不揮発性メモリに格納された前記データに不良があることを表すアドレス情報を出力し、
前記第１、２不揮発性メモリのうちの前記第２不揮発性メモリを前記選択不揮発性メモリとしてフェッチするステップと、
前記アドレス情報に従って、前記第１不揮発性メモリに格納された前記データをＲＡＭに格納するステップと、
前記ＲＡＭに格納された前記データに対してエンコードを実行するステップと、
前記第１不揮発性メモリに格納された前記データを消去し、前記ＲＡＭに格納された前記データを前記第１不揮発性メモリに書き込むステップと
を具備するメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータとメモリアクセス方法に関する。
【背景技術】
【０００２】
近年、マイクロコンピュータには、電源を切っても記憶内容を保持することができる不揮発性メモリであるフラッシュメモリが設けられている。フラッシュメモリは、複数のメモリブロック（以下、ブロック）を含み、そのブロックの各々は、行列配置された複数のメモリセルを含んでいる。複数のメモリセルの各々には、データが記憶されている。
【０００３】
フラッシュメモリにおいて、ブロックは、セクターとも呼ばれ、そのブロックの各メモリセルに記憶されているデータを一括消去する時の最小単位である。複数のブロックのうちの特定ブロックに記憶されているデータを消去する場合、特定ブロックの各メモリセルにおいて浮遊ゲートから基板に電子が放出される。通常、この消去状態を“１”と定義している。特定ブロックの複数のメモリセルのうちの特定メモリセルにデータを書き込む場合、その特定メモリセルにおいて浮遊ゲートに電子が注入される。通常、この書込状態を“０”と定義している。特定メモリセルからデータを読み出す場合、マイクロコンピュータでは、その特定メモリセルで電流が流れるか否かを検出する。
【０００４】
特定メモリセルからデータを読み出す場合、ワード線を立ち上げて（選択して）、所定のビット線のデータを読み出しているが、特定メモリセル以外のメモリセルでも、同じワード線に繋がっているメモリセルには、データを書き込むときと同じ方向に僅かな電界が発生する。このため、特定メモリセル以外のメモリセルでも浮遊ゲートと基板との間に形成された僅かな電界によって、浮遊ゲートに徐々に電子が注入され、消去状態“１”から書込状態“０”に反転してしまう。これをリードリテンション（Ｒｅａｄ  Ｒｅｔｅｎｔｉｏｎ）不良という。
【０００５】
このような１ビットのリードリテンション不良が発生した場合、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を用いることによって、エラー訂正を行なうことができる。ここで、上記のデータは、そのデータを表す有効データと、ＥＣＣを表すＥＣＣデータとを含む。そのため、マイクロコンピュータは、特定メモリセルから読み出されたデータに対してＥＣＣデータを用いてエラー訂正を実行することができ、エラー訂正されたデータを転送することができる。
【０００６】
通常、ＥＣＣデータを用いてエラー訂正を実行する場合、ＥＣＣデコーダが用いられる。図１は、従来のマイクロコンピュータの構成を示す図である。従来のマイクロコンピュータは、ＣＰＵ１１０、フラッシュメモリ１０４、ＥＣＣデコーダ１１８を具備している。ＣＰＵ１１０、フラッシュメモリ１０４、ＥＣＣデコーダ１１８は、バス１０２に接続されている。また、バス１０２には、ＣＰＵ１１０により制御されるシステムが接続されている。
【０００７】
データを読み出す場合、バス１０２からフラッシュメモリ１０４に読出命令が与えられる。その読出命令は、アドレスを含んでいる。読出命令に含まれるアドレスは、フラッシュメモリ１０４の複数のブロックのうちの特定ブロックを指定し、その特定ブロックの複数のメモリセルのうちの特定メモリセルを指定する。ＥＣＣデコーダ１１８は、フラッシュメモリ１０４から読み出されたデータに対して、そのデータに含まれるＥＣＣデータを用いてＥＣＣデコード（エラー訂正）を実行する。ＥＣＣデコーダ１１８は、ＥＣＣデコードされたデータをＣＰＵ１１０に出力する。従来のマイクロコンピュータでは、１ビットのリードリテンション不良が発生した場合でも、ＥＣＣデコードされたデータをＣＰＵ１１０に転送することができる。ＣＰＵ１１０は、フラッシュメモリ１０４から読み出されたデータに基づいてシステムを制御する。
【０００８】
しかしながら、複数ビット（２ビット、３ビット、…）のリードリテンション不良が発生した場合、読み出されたデータに対してＥＣＣデコードを実行しても、データを復元できない。データを復元する場合、リードリテンション不良が発生したデータに対してＥＣＣエンコードを実行する。ＥＣＣエンコードは、既知の計算法により行なわれる。ＥＣＣエンコードを実行するＥＣＣエンコーダを従来のマイクロコンピュータに実装した場合、ＥＣＣエンコーダはフラッシュメモリ１０４をアクセスして、リードリテンション不良が発生したデータを復元する。
【０００９】
このような、ＥＣＣでコードを行なう半導体記憶装置に関連する技術として、特開平６−１１０７９３号公報（特許文献１）に不揮発性半導体記憶装置が記載されている。この不揮発性半導体記憶装置は、特許文献１の図１に記載された不揮発性半導体メモリシステムに適用される。この不揮発性半導体メモリシステムは、不揮発性半導体記憶装置と、ＣＰＵと、データバッファ（バッファメモリ）とを具備している。不揮発性半導体記憶装置は、データ領域と訂正用データ領域とを有する複数のページからなるブロック単位に分割された不揮発性半導体記憶部（ＥＥＰＲＯＭ）と、誤り検出・訂正手段と、退避手段と、再書込み手段とを具備している。誤り検出・訂正手段は、不揮発性半導体記憶部からページ単位でデータを読み出すときに、データ領域の誤りデータを検出すると共に、誤りのデータを訂正する。退避手段は、誤り検出・訂正手段により訂正されたデータと、この訂正されたデータを含んだブロックのデータのうち、訂正されたデータ以外の全ページのデータとをバッファメモリに退避させる。再書込み手段は、誤りデータを含むブロックの全ページのデータを不揮発性半導体記憶部から消去し、バッファメモリに退避されたブロックの全ページのデータを不揮発性半導体記憶部に再書込みする（再書込み処理）。再書込み手段は、ＣＰＵの空き時間に再書込み処理を行なう。
【００１０】
【特許文献１】特開平６−１１０７９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
このように、ＣＰＵ１１０が動作していないとき（ＣＰＵ１１０の空き時間）に、ＥＣＣエンコーダによってデータを復元することができる。しかしながら、この場合でも、ＥＣＣデコーダ１１８がリードリテンション不良を検出してから、ＣＰＵ１１０の動作が停止するまでの間、データを復元することができない。この間にフラッシュメモリ１０４に記憶されたデータの内容が変化した場合、フラッシュメモリ１０４からデータを読み出すことができない。あるいは、フラッシュメモリ１０４からデータを読み出したとしても、そのデータが正しくない場合、ＣＰＵ１１０により制御されるシステムが誤動作してしまう可能性がある。この場合でも、システムは所望の動作を実行することができない。
【００１２】
そして、データを復元する場合、ＥＣＣエンコーダがフラッシュメモリ１０４をアクセスするため、ＣＰＵ１１０の動作を停止させる必要がある。ＣＰＵ１１０の動作を停止させることは、ＣＰＵ１１０により制御されるシステムに支障が生じる可能性がある。システムの動作を停止させたくないような仕様、又は、停止させられないシステムである場合、システムは所望の動作を実行することができない。
【００１３】
したがって、本発明の課題は、ＣＰＵの動作を停止させることなく、データを復元することができるマイクロコンピュータとメモリアクセス方法を提供することにある。
【課題を解決するための手段】
【００１４】
以下に、［発明を実施するための最良の形態］で使用する番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１５】
本発明の第１の観点では、マイクロコンピュータは、データを格納する第１不揮発性メモリ（４Ａ）と第２不揮発性メモリ（４Ｂ）と、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうちの前記第１不揮発性メモリ（４Ａ）を選択する第１選択信号を出力するＣＰＵ（１０）と、読出命令に応じて前記第１不揮発性メモリ（４Ａ）及び前記第２不揮発性メモリ（４Ｂ）から前記データを読み出す制御部（１４）と、前記第１選択信号に従って、前記第１不揮発性メモリ（４Ａ）から読み出された前記データを出力するセレクタ（１６）と、前記読み出されたデータに対してエラー訂正を実行し、前記エラー訂正されたデータとエラー情報とを出力するデコーダ（１８）とを具備する。前記エラー訂正されたデータは前記ＣＰＵ（１０）に出力される。前記エラー情報が前記読み出されたデータのエラーを表すとき、前記ＣＰＵ（１０）は、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうちの前記第２不揮発性メモリ（４Ｂ）を選択する第２選択信号を前記セレクタ（１６）に出力する。このとき、前記制御部（１４）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データに代えて前記第２不揮発性メモリ（４Ｂ）に格納された前記データを前記第１不揮発性メモリ（４Ａ）に書き込む。
【００１６】
本発明の第１の観点によるマイクロコンピュータは、ＲＡＭ（６）を更に具備する。前記制御部（１４）は、前記エラー情報が前記読み出されたデータのエラーを表すとき、前記第２不揮発性メモリ（４Ｂ）に格納された前記データを前記ＲＡＭ（６）に格納する。このとき、前記制御部（１４）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データを消去し、前記ＲＡＭ（６）に格納された前記データを前記第１不揮発性メモリ（４Ａ）に書き込む。
【００１７】
本発明の第１の観点によるマイクロコンピュータは、レジスタ（１２）を更に具備する。前記エラー情報が前記読み出されたデータのエラーを表すとき、前記ＣＰＵ（１０）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データがエラーであることを表すアドレス情報をレジスタ（１２）に書き込み、エラー発生割込信号を前記制御部（１４）に出力する。前記制御部（１４）は、前記エラー発生割込信号に応じて、前記レジスタ（１２）から前記アドレス情報を読み出し、前記読み出されたアドレス情報に従って、前記第２不揮発性メモリ（４Ｂ）に格納された前記データを前記ＲＡＭ（６）に格納する。
【００１８】
前記制御部（１４）は、前記第２不揮発性メモリ（４Ｂ）に格納された前記データを前記ＲＡＭ（６）に格納したとき、コピー終了割込信号を前記ＣＰＵ（１０）に出力する。前記ＣＰＵ（１０）は、前記コピー終了割込信号に応じて、前記第２選択信号を前記セレクタ（１６）に出力する。
【００１９】
前記ＣＰＵ（１０）は、前記第２選択信号を前記セレクタ（１６）に出力したときに、切替終了割込信号を前記制御部（１４）に出力する。前記制御部（１４）は、前記切替終了割込信号に応じて、前記第１不揮発性メモリ（４Ａ）に格納された前記データを消去し、前記ＲＡＭ（６）に格納された前記データを前記第１不揮発性メモリ（４Ａ）に書き込む。
【００２０】
前記デコーダ（１８）は、前記エラー訂正としてＥＣＣデコードを実行する。
【００２１】
本発明の第２の観点では、マイクロコンピュータは、データを格納する第１不揮発性メモリ（４Ａ）と第２不揮発性メモリ（４Ｂ）と、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうちの前記第１不揮発性メモリ（４Ａ）を選択する第１選択信号を出力するＣＰＵ（２０）と、読出命令に応じて前記第１不揮発性メモリ（４Ａ）及び前記第２不揮発性メモリ（４Ｂ）から前記データを読み出す制御部（２４）と、前記第１選択信号に従って、前記第１不揮発性メモリ（４Ａ）から読み出された前記データを出力するセレクタ（２６）と、前記読み出されたデータに対してエラー訂正を実行し、前記エラー訂正されたデータとエラー情報とを出力するデコーダ（２８）とを具備する。前記エラー訂正されたデータは前記ＣＰＵ（２０）に出力される。前記エラー情報が前記読み出されたデータのエラーを表すとき、前記ＣＰＵ（２０）は、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうちの前記第２不揮発性メモリ（４Ｂ）を選択する第２選択信号を前記セレクタ（２６）に出力する。このとき、前記制御部（２４）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データに対してエンコードを実行し、前記第１不揮発性メモリ（４Ａ）に書き込む。
【００２２】
本発明の第２の観点によるマイクロコンピュータは、ＲＡＭ（６）を更に具備する。前記制御部（２４）は、前記エラー情報が前記読み出されたデータのエラーを表すとき、前記第１不揮発性メモリ（４Ａ）に格納された前記データを前記ＲＡＭ（６）に格納し、前記ＲＡＭ（６）に格納された前記データに対して前記エンコードを実行する。このとき、前記制御部（２４）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データを消去し、前記ＲＡＭ（６）に格納された前記データを前記第１不揮発性メモリ（４Ａ）に書き込む。
【００２３】
本発明の第２の観点によるマイクロコンピュータは、レジスタ（２２）を更に具備する。前記エラー情報が前記読み出されたデータのエラーを表すとき、前記ＣＰＵ（２０）は、前記第１不揮発性メモリ（４Ａ）に格納された前記データがエラーであることを表すアドレス情報をレジスタ（２２）に書き込み、前記第２選択信号を前記セレクタ（２６）に出力し、エラー発生割込信号を前記制御部（２４）に出力する。前記制御部（２４）は、前記エラー発生割込信号に応じて、前記レジスタ（２２）から前記アドレス情報を読み出し、前記読み出されたアドレス情報に従って、前記第１不揮発性メモリ（４Ａ）に格納された前記データを前記ＲＡＭ（６）に格納する。
【００２４】
前記デコーダ（２８）は、前記エラー訂正としてＥＣＣデコードを実行する。前記制御部（２４）は、前記エンコードとしてＥＣＣエンコードを実行する。
【００２５】
本発明の第３の観点では、メモリアクセス方法は、マイクロコンピュータを用いてメモリアクセスを行なう。このメモリアクセス方法は、データを格納する第１不揮発性メモリ（４Ａ）と第２不揮発性メモリ（４Ｂ）とのうち、前記第１不揮発性メモリ（４Ａ）をフェッチするステップ（Ｓ２）と、読出命令に応じて前記第１不揮発性メモリ（４Ａ）から前記データを読み出すステップ（Ｓ２）と、前記読み出されたデータに対してエラー訂正を実行し、前記エラー訂正されたデータとエラー情報とを出力するステップ（Ｓ４）と、前記エラー訂正されたデータはＣＰＵ（１０）に出力され、前記エラー情報が前記読み出されたデータのエラーを表すとき（Ｓ４−ＹＥＳ）、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうち、前記第２不揮発性メモリ（４Ｂ）をフェッチするステップ（Ｓ１６）と、前記エラー情報が前記読み出されたデータのエラーを表すとき（Ｓ４−ＹＥＳ）、前記第１不揮発性メモリ（４Ａ）に格納された前記データに代えて前記第２不揮発性メモリ（４Ｂ）に格納された前記データを前記第１不揮発性メモリ（４Ａ）に書き込むステップ（Ｓ２０）とを具備する。
【００２６】
本発明の第４の観点では、メモリアクセス方法は、マイクロコンピュータを用いてメモリアクセスを行なう。このメモリアクセス方法は、データを格納する第１不揮発性メモリ（４Ａ）と第２不揮発性メモリ（４Ｂ）とのうち、前記第１不揮発性メモリ（４Ａ）をフェッチするステップ（Ｓ２２）と、読出命令に応じて前記第１不揮発性メモリ（４Ａ）から前記データを読み出すステップ（Ｓ２２）と、前記読み出されたデータに対してエラー訂正を実行し、前記エラー訂正されたデータとエラー情報とを出力するステップ（Ｓ２４）と、前記エラー訂正されたデータはＣＰＵ（１０）に出力され、前記エラー情報が前記読み出されたデータのエラーを表すとき（Ｓ２４−ＹＥＳ）、前記第１不揮発性メモリ（４Ａ）と前記第２不揮発性メモリ（４Ｂ）とのうち、前記第２不揮発性メモリ（４Ｂ）をフェッチするステップ（Ｓ２８）と、前記エラー情報が前記読み出されたデータのエラーを表すとき（Ｓ２４−ＹＥＳ）、前記第１不揮発性メモリ（４Ａ）に格納された前記データに対してエンコードを実行し、前記第１不揮発性メモリ（４Ａ）に書き込むステップ（Ｓ３８）とを具備する。
【発明の効果】
【００２７】
本発明によれば、ＣＰＵの動作を停止させることなく、データを復元することができる。その結果、ＣＰＵにより制御されるシステムは所望の動作を実行することができ、記憶（格納）されたデータを長期間保持することができる。第１不揮発性メモリから読み出されたデータのエラーが発生した場合、第１不揮発性メモリから第２不揮発性メモリに切り替えるため、第１不揮発性メモリに与える負荷を軽減できる。
【発明を実施するための最良の形態】
【００２８】
以下に添付図面を参照して、本発明のマイクロコンピュータについて詳細に説明する。
【００２９】
（第１実施形態）
図２は、本発明の第１実施形態によるマイクロコンピュータの構成を示すブロック図である。第１実施形態によるマイクロコンピュータは、フラッシュメモリ４Ａ、４Ｂ、ＲＡＭ６、ＣＰＵ１０、エラー発生アドレス格納レジスタ１２（以下、レジスタ１２）、制御部１４、セレクタ１６、ＥＣＣデコーダ１８を具備している。ＣＰＵ１０、制御部１４、セレクタ１６、ＥＣＣデコーダ１８はバス２に接続されている。また、バス２には、ＣＰＵ１０により制御されるシステムが接続されている。レジスタ１２は、ＣＰＵ１０内の汎用レジスタでもよい。
【００３０】
フラッシュメモリ４Ａ、４Ｂは、複数のブロック（セクター）を含み、そのブロックの各々は、行列配置された複数のメモリセルを含んでいる。複数のメモリセルの各々には、データが記憶されている。即ち、フラッシュメモリ４Ａ、４Ｂには、同じデータが記憶されている。１ビットのリードリテンション不良が発生したときのエラー訂正としてＥＣＣが用いられ、データは、そのデータを表す有効データと、ＥＣＣを表すＥＣＣデータとを含んでいる。
【００３１】
フラッシュメモリ４Ａとフラッシュメモリ４Ｂとの一方のフラッシュメモリを第１フラッシュメモリとし、フラッシュメモリ４Ａとフラッシュメモリ４Ｂとの他方のフラッシュメモリを第２フラッシュメモリとする。ＣＰＵ１０は、第１フラッシュメモリを選択する第１選択信号をセレクタ１６に出力する。
【００３２】
データを読み出す場合、バス２からＣＰＵ１０、制御部１４に読出命令が与えられる。その読出命令は、アドレスを含んでいる。読出命令に含まれるアドレスは、第１フラッシュメモリ、第２フラッシュメモリの複数のブロックのうちの特定ブロックを指定し、その特定ブロックの複数のメモリセルのうちの特定メモリセルを指定する。制御部１４は、読出命令に応じて、第１フラッシュメモリ、第２フラッシュメモリからデータを読み出す。
【００３３】
セレクタ１６は、第１選択信号に従って、第１フラッシュメモリから読み出されたデータをＥＣＣデコーダ１８に出力する。
【００３４】
ＥＣＣデコーダ１８は、セレクタ１６からのデータに対して、そのデータに含まれるＥＣＣデータを用いてエラー訂正（ＥＣＣデコード）を実行し、ＥＣＣデコードされたデータとエラー情報とをＣＰＵ１０に出力する。ＥＣＣデコーダ１８は、そのデータのエラー（リードリテンション不良）を検出した場合、ＥＣＣデコードされたデータと共に、エラー情報としてエラーフラグをＣＰＵ１０に出力する。
【００３５】
ＣＰＵ１０は、ＥＣＣデコーダ１８からのデータを受け取り、そのデータに基づいてシステムを制御する。ＥＣＣデコーダ１８からのデータは、ＥＣＣデコードされているため、ＣＰＵ１０は正常に動作する。即ち、ＣＰＵ１０により制御されるシステムは正常に動作する。ＣＰＵ１０は、そのデータと共にエラーフラグをＥＣＣデコーダ１８から受け取った場合、アドレス情報をレジスタ１２に書き込む。アドレス情報は、第１フラッシュメモリの特定ブロックの特定メモリセルから読み出されたデータがエラーであることを表し、エラー発生アドレスを含む。エラー発生アドレスは、読出命令に含まれるアドレスである。また、ＣＰＵ１０は、エラーフラグをＥＣＣデコーダ１８から受け取った場合、第２フラッシュメモリを選択する第２選択信号をセレクタ１６に出力する。
【００３６】
制御部１４は、レジスタ１２にアドレス情報が格納されているとき、書替処理を行う。その書替処理は、一時格納処理と、復元処理とを含んでいる。一時格納処理において、制御部１４は、レジスタ１２からアドレス情報を読み出し、そのアドレス情報に従って、第２フラッシュメモリに格納されたデータをＲＡＭ６に格納する。復元処理において、制御部１４は、第１フラッシュメモリに格納されたデータを消去し、ＲＡＭ６に格納されたデータを第１フラッシュメモリに書き込む。第１フラッシュメモリ、第２フラッシュメモリの各ブロックは、各メモリセルに記憶されているデータを一括消去する時の最小単位であるため、書替処理は、ブロック単位で行なわれる。
【００３７】
次に、図３を参照して、本発明の第１実施形態によるマイクロコンピュータの動作として読出処理を説明する。ここで、第１フラッシュメモリをフラッシュメモリ４Ａとし、第２フラッシュメモリをフラッシュメモリ４Ｂとする。
【００３８】
ＣＰＵ１０は、フラッシュメモリ４Ａをフェッチしている（ステップＳ２）。即ち、第１選択信号が既にセレクタ１６に出力されている。バス２からＣＰＵ１０、制御部１４に読出命令が与えられた場合、制御部１４は、フラッシュメモリ４Ａ、４Ｂの特定ブロックの特定メモリセルからデータを読み出す。セレクタ１６は、第１選択信号に従って、フラッシュメモリ４Ａから読み出されたデータをＥＣＣデコーダ１８に出力する。ＥＣＣデコーダ１８は、セレクタ１６からのデータに対して、そのデータに含まれるＥＣＣデータを用いてＥＣＣデコードを実行する。
【００３９】
ＥＣＣデコーダ１８は、ＥＣＣデコードを実行した結果、そのデータのリードリテンション不良を検出しない場合（ステップＳ４−ＮＯ）、ＥＣＣデコードされたデータをＣＰＵ１０に出力する。ＣＰＵ１０は、ＥＣＣデコーダ１８からのデータを受け取り、そのデータに基づいてシステムを制御する。この場合、本発明の第１実施形態によるマイクロコンピュータは、ステップＳ２を実行している。
【００４０】
ＥＣＣデコーダ１８は、ＥＣＣデコードを実行した結果、そのデータのリードリテンション不良を検出した場合（ステップＳ４−ＹＥＳ）、ＥＣＣデコードされたデータとエラーフラグとをＣＰＵ１０に出力する。ＣＰＵ１０は、ＥＣＣデコーダ１８からデータとエラーフラグとを受け取る。ＣＰＵ１０は、アドレス情報をレジスタ１２に書き込む（ステップＳ６）。この場合、アドレス情報は、フラッシュメモリ４Ａの特定ブロックの特定メモリセルに格納されたデータがエラーであることを表し、エラー発生アドレス（読出命令に含まれるアドレス）を含む。その後、ＣＰＵ１０は、エラー発生割込信号を制御部１４に出力する（ステップＳ８）。また、ＣＰＵ１０は、ＥＣＣデコーダ１８からのデータを受け取ったとき、そのデータに基づいてシステムを制御する。
【００４１】
制御部１４は、エラー発生割込信号に応じて、上記の書替処理のうちの一時格納処理を行う。このとき、制御部１４は、レジスタ１２からアドレス情報を読み出す（ステップＳ１０）。制御部１４は、アドレス情報のエラー発生アドレスに従って、フラッシュメモリ４Ｂの特定ブロックのデータを読み出してＲＡＭ６に格納する（ステップＳ１２）。その後、制御部１４は、コピー終了割込信号をＣＰＵ１０に出力する（ステップＳ１４）。
【００４２】
ＣＰＵ１０は、コピー終了割込信号に応じて、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替える（ステップＳ１６）。即ち、ＣＰＵ１０は、コピー終了割込信号に応じて、第２選択信号をセレクタ１６に出力する。その後、ＣＰＵ１０は、切替終了割込信号を制御部１４に出力する（ステップＳ１８）。
【００４３】
制御部１４は、切替終了割込信号に応じて、上記の書替処理のうちの復元処理を行う。このとき、制御部１４は、アドレス情報のエラー発生アドレスに従って、フラッシュメモリ４Ａの特定ブロックのデータを消去し、ＲＡＭ６に格納された特定ブロックのデータを読み出してフラッシュメモリ４Ａの特定ブロックに書き込む（ステップＳ２０）。
【００４４】
以上説明したように、本発明の第１実施形態によるマイクロコンピュータでは、ＣＰＵ１０は、ＥＣＣデコードされたデータとエラーフラグとをＥＣＣデコーダ１８から受け取ったとき、アドレス情報をレジスタ１２に書き込み、ＥＣＣデコーダ１８からのデータに基づいてシステムを制御する。ＣＰＵ１０は、制御部１４からの割込信号（コピー終了割込信号）に応じて、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替える。制御部１４は、レジスタ１２に書き込まれたアドレス情報に従って、フラッシュメモリ４Ａの特定ブロックのデータに代えてフラッシュメモリ４Ｂの特定ブロックのデータをフラッシュメモリ４Ａの特定ブロックに書き込む。このように、ＣＰＵ１０がシステムを制御している間、制御部１４は、フラッシュメモリ４Ａの特定ブロックのデータを復元することができる。
【００４５】
また、本発明の第１実施形態によるマイクロコンピュータは、システムの動作を停止させたくないような仕様に適用される場合がある。ＥＣＣデコーダ１８によりリードリテンション不良が検出された場合、ＣＰＵ１０の動作を停止させることなく、直ちにフラッシュメモリ４Ａの特定ブロックのデータを復元する。このため、ＣＰＵ１０により制御されるシステムは、停止することなく、所望の動作を実行することができる。また、直ちにフラッシュメモリ４Ａの特定ブロックのデータを復元することにより、そのデータを長期間保持することができる。また、ＥＣＣデコーダ１８によりリードリテンション不良が検出された場合、ＣＰＵ１０は、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替えるため、フラッシュメモリ４Ａに与える負荷を軽減できる。
【００４６】
尚、本発明の第１実施形態によるマイクロコンピュータは、フラッシュメモリ４Ｂについて読出処理（Ｓ２〜Ｓ２０）を実行する場合、第１フラッシュメモリをフラッシュメモリ４Ｂとし、第２フラッシュメモリをフラッシュメモリ４Ａとすればよい。この場合、ステップＳ２にて、第２選択信号が既にセレクタ１６に出力されていて、ステップＳ１６にて、ＣＰＵ１０がコピー終了割込信号に応じて第１選択信号をセレクタ１６に出力することにより実現される。
【００４７】
（第２実施形態）
図４は、本発明の第２実施形態によるマイクロコンピュータの構成を示すブロック図である。第２実施形態によるマイクロコンピュータは、フラッシュメモリ４Ａ、４Ｂ、ＲＡＭ６、ＣＰＵ２０、エラー発生アドレス格納レジスタ２２（以下、レジスタ２２）、制御部２４、セレクタ２６、ＥＣＣデコーダ２８を具備している。フラッシュメモリ４Ａ、４Ｂ、ＲＡＭ６は、第１実施形態と同じである。ＣＰＵ２０、制御部２４、セレクタ２６、ＥＣＣデコーダ２８はバス２に接続されている。また、バス２には、ＣＰＵ２０により制御されるシステムが接続されている。レジスタ２２は、ＣＰＵ２０内の汎用レジスタでもよい。
【００４８】
フラッシュメモリ４Ａ、４Ｂ、ＲＡＭ６は、第１実施形態と同じである。即ち、フラッシュメモリ４Ａ、４Ｂは、複数のブロック（セクター）を含み、そのブロックの各々は、行列配置された複数のメモリセルを含んでいる。複数のメモリセルの各々には、データが記憶されている。即ち、フラッシュメモリ４Ａ、４Ｂには、同じデータが記憶されている。１ビットのリードリテンション不良が発生したときのエラー訂正としてＥＣＣが用いられ、データは、そのデータを表す有効データと、ＥＣＣを表すＥＣＣデータとを含んでいる。
【００４９】
フラッシュメモリ４Ａとフラッシュメモリ４Ｂとの一方のフラッシュメモリを第１フラッシュメモリとし、フラッシュメモリ４Ａとフラッシュメモリ４Ｂとの他方のフラッシュメモリを第２フラッシュメモリとする。ＣＰＵ２０は、第１フラッシュメモリを選択する第１選択信号をセレクタ２６に出力する。
【００５０】
データを読み出す場合、バス２からＣＰＵ２０、制御部２４に読出命令が与えられる。その読出命令は、アドレスを含んでいる。読出命令に含まれるアドレスは、第１フラッシュメモリ、第２フラッシュメモリの複数のブロックのうちの特定ブロックを指定し、その特定ブロックの複数のメモリセルのうちの特定メモリセルを指定する。制御部２４は、読出命令に応じて第１フラッシュメモリ、第２フラッシュメモリからデータを読み出す。
【００５１】
セレクタ２６は、第１選択信号に従って、第１フラッシュメモリから読み出されたデータをＥＣＣデコーダ２８に出力する。
【００５２】
ＥＣＣデコーダ２８は、セレクタ２６からのデータに対して、そのデータに含まれるＥＣＣデータを用いてエラー訂正（ＥＣＣデコード）を実行し、ＥＣＣデコードされたデータとエラー情報とをＣＰＵ２０に出力する。ＥＣＣデコーダ２８は、そのデータのエラー（リードリテンション不良）を検出した場合、ＥＣＣデコードされたデータと共に、エラー情報としてエラーフラグをＣＰＵ２０に出力する。
【００５３】
ＣＰＵ２０は、ＥＣＣデコーダ２８からのデータを受け取り、そのデータに基づいてシステムを制御する。ＥＣＣデコーダ２８からのデータは、ＥＣＣデコードされているため、ＣＰＵ２０は正常に動作する。即ち、ＣＰＵ２０により制御されるシステムは正常に動作する。ＣＰＵ２０は、そのデータと共にエラーフラグをＥＣＣデコーダ２８から受け取った場合、アドレス情報をレジスタ２２に書き込む。アドレス情報は、第１フラッシュメモリの特定ブロックの特定メモリセルから読み出されたデータがエラーであることを表し、エラー発生アドレスを含む。エラー発生アドレスは、読出命令に含まれるアドレスである。また、ＣＰＵ２０は、エラーフラグをＥＣＣデコーダ１８から受け取った場合、第２フラッシュメモリを選択する第２選択信号をセレクタ２６に出力する。
【００５４】
制御部２４は、レジスタ２２にアドレス情報が格納されているとき、書替処理を行う。その書替処理は、一時格納処理と、エンコード処理と、復元処理とを含んでいる。一時格納処理において、制御部２４は、レジスタ２２からアドレス情報を読み出し、そのアドレス情報に従って、第１フラッシュメモリに格納されたデータをＲＡＭ６に格納する。制御部２４は、ＥＣＣエンコーダを備えている。エンコード処理において、制御装置２４のＥＣＣエンコーダは、ＲＡＭ６に格納されたデータに対してＥＣＣエンコードを実行する。復元処理において、制御部２４は、第１フラッシュメモリに格納されたデータを消去し、ＲＡＭ６に格納されたデータを第１フラッシュメモリに書き込む。第１フラッシュメモリ、第２フラッシュメモリの各ブロックは、各メモリセルに記憶されているデータを一括消去する時の最小単位であるため、書替処理は、ブロック単位で行なわれる。
【００５５】
次に、図５を参照して、本発明の第２実施形態によるマイクロコンピュータの動作として読出処理を説明する。ここで、第１フラッシュメモリをフラッシュメモリ４Ａとし、第２フラッシュメモリをフラッシュメモリ４Ｂとする。
【００５６】
ＣＰＵ２０は、フラッシュメモリ４Ａをフェッチしている（ステップＳ２２）。即ち、第１選択信号が既にセレクタ２６に出力されている。バス２からＣＰＵ２０、制御部２４に読出命令が与えられた場合、制御部２４は、読出命令に応じて、フラッシュメモリ４Ａ、４Ｂの特定ブロックの特定メモリセルからデータを読み出す。セレクタ２６は、第１選択信号に従って、フラッシュメモリ４Ａから読み出されたデータをＥＣＣデコーダ２８に出力する。ＥＣＣデコーダ２８は、セレクタ２６からのデータに対して、そのデータに含まれるＥＣＣデータを用いてＥＣＣデコードを実行する。
【００５７】
ＥＣＣデコーダ２８は、ＥＣＣデコードを実行した結果、そのデータのリードリテンション不良を検出しない場合（ステップＳ２４−ＮＯ）、ＥＣＣデコードされたデータをＣＰＵ２０に出力する。ＣＰＵ２０は、ＥＣＣデコーダ２８からのデータを受け取り、そのデータに基づいてシステムを制御する。この場合、本発明の第２実施形態によるマイクロコンピュータは、ステップＳ２２を実行している。
【００５８】
ＥＣＣデコーダ２８は、ＥＣＣデコードを実行した結果、そのデータのリードリテンション不良を検出した場合（ステップＳ２４−ＹＥＳ）、ＥＣＣデコードされたデータとエラーフラグとをＣＰＵ２０に出力する。ＣＰＵ２０は、ＥＣＣデコーダ２８からデータとエラーフラグとを受け取る。ＣＰＵ２０は、アドレス情報をレジスタ２２に書き込む（ステップＳ２６）。この場合、アドレス情報は、フラッシュメモリ４Ａの特定ブロックの特定メモリセルに格納されたデータがエラーであることを表し、エラー発生アドレス（読出命令に含まれるアドレス）を含む。その後、ＣＰＵ２０は、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替える（ステップＳ２８）。即ち、ＣＰＵ２０は、第２選択信号をセレクタ２６に出力する。その後、ＣＰＵ２０は、エラー発生割込信号を制御部２４に出力する（ステップＳ３０）。また、ＣＰＵ２０は、ＥＣＣデコーダ２８からのデータを受け取ったとき、そのデータに基づいてシステムを制御する。
【００５９】
制御部２４は、エラー発生割込信号に応じて、上記の書替処理のうちの一時格納処理を行う。このとき、制御部２４は、レジスタ２２からアドレス情報を読み出す（ステップＳ３２）。制御部２４は、アドレス情報のエラー発生アドレスに従って、フラッシュメモリ４Ａの特定ブロックのデータを読み出してＲＡＭ６に格納する（ステップＳ３４）。
【００６０】
次に、制御部２４は、上記の書替処理のうちのエンコード処理を行う。このとき、制御部２４のＥＣＣエンコーダは、ＲＡＭ６に格納されたデータを読み出し、そのデータに対してＥＣＣエンコードを実行してＲＡＭ６に格納する（ステップＳ３６）。
【００６１】
次いで、制御部２４は、上記の書替処理のうちの復元処理を行う。このとき、制御部２４は、アドレス情報のエラー発生アドレスに従って、フラッシュメモリ４Ａの特定ブロックのデータを消去し、ＲＡＭ６に格納された特定ブロックのデータを読み出してフラッシュメモリ４Ａの特定ブロックに書き込む（ステップＳ３８）。
【００６２】
以上説明したように、本発明の第２実施形態によるマイクロコンピュータでは、ＣＰＵ２０は、ＥＣＣデコードされたデータとエラーフラグとをＥＣＣデコーダ２８から受け取ったとき、アドレス情報をレジスタ２２に書き込み、ＥＣＣデコーダ２８からのデータに基づいてシステムを制御する。ＣＰＵ２０は、アドレス情報をレジスタ２２に書き込んだとき、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替える。制御部２４は、レジスタ２２に書き込まれたアドレス情報に従って、フラッシュメモリ４Ａの特定ブロックのデータをエンコード（復元）する。このように、ＣＰＵ１０がシステムを制御している間、制御部１４は、フラッシュメモリ４Ａの特定ブロックのデータを復元することができる。
【００６３】
また、本発明の第２実施形態によるマイクロコンピュータは、システムの動作を停止させたくないような仕様に適用される場合がある。ＥＣＣデコーダ２８によりリードリテンション不良が検出された場合、ＣＰＵ２０の動作を停止させることなく、直ちにフラッシュメモリ４Ａの特定ブロックのデータを復元する。このため、ＣＰＵ２０により制御されるシステムは、停止することなく、所望の動作を実行することができる。また、直ちにフラッシュメモリ４Ａの特定ブロックのデータを復元することにより、そのデータを長期間保持することができる。また、ＥＣＣデコーダ２８によりリードリテンション不良が検出された場合、ＣＰＵ２０は、アドレス情報をレジスタ２２に書き込んだときに、フェッチするメモリをフラッシュメモリ４Ａからフラッシュメモリ４Ｂに切り替えるため、フラッシュメモリ４Ａに与える負荷を第１実施形態のそれよりも軽減できる。
【００６４】
尚、本発明の第２実施形態によるマイクロコンピュータは、フラッシュメモリ４Ｂについて読出処理（Ｓ２２〜Ｓ３８）を実行する場合、第１フラッシュメモリをフラッシュメモリ４Ｂとし、第２フラッシュメモリをフラッシュメモリ４Ａとすればよい。この場合、ステップＳ２２にて、第２選択信号が既にセレクタ２６に出力されていて、ステップＳ２８にて、ＣＰＵ２０がコピー終了割込信号に応じて第１選択信号をセレクタ２６に出力することにより実現される。
【００６５】
第１実施形態及び第２実施形態では、フラッシュメモリについて説明を行なったが、本発明では、フラッシュメモリに関わらず、リードリテンションが起こる不揮発性メモリに適用することが可能である。
【図面の簡単な説明】
【００６６】
【図１】図１は、従来のマイクロコンピュータの構成を示すブロック図である。
【図２】図２は、本発明の第１実施形態によるマイクロコンピュータの構成を示すブロック図である。
【図３】図３は、本発明の第１実施形態によるマイクロコンピュータの動作を示す図である。
【図４】図４は、本発明の第２実施形態によるマイクロコンピュータの構成を示すブロック図である。
【図５】図５は、本発明の第２実施形態によるマイクロコンピュータの動作を示す図である。
【符号の説明】
【００６７】
２、１０２    バス
４Ａ、４Ｂ、１０４    フラッシュメモリ
６    ＲＡＭ
１０、２０、１１０    ＣＰＵ
１２、２２    レジスタ
１４、２４    制御部
１６、２６    セレクタ
１８、２８、１１８    ＥＣＣデコーダ
【図１】
0004656559.tif 000002
【図２】
0004656559.tif 000003
【図３】
0004656559.tif 000004
【図４】
0004656559.tif 000005
【図５】
0004656559.tif 000006