(57)【要約】【課題】不揮発性半導体メモリを用いるデータ処理装置において、低消費電力と高データ信頼性の両方を実現すること。【解決手段】データ処理装置は、不揮発性半導体メモリと付加ビット制御回路とを備える。不揮発性半導体メモリには、データ本体あるいはその反転データと付加ビットとを含む記憶データが格納される。付加ビット制御回路は、モード指定信号に応じて、モード間で付加ビットを変える。より詳細には、付加ビット制御回路は、低消費電力モード用の付加ビットを生成するデータ反転制御回路と、高信頼性モード用の付加ビットを生成するエラー検出制御回路と、を含む。低消費電力モードでは、データ反転制御回路が機能し、反転フラグを付加ビットとして生成する。一方、高信頼性モードでは、エラー検出制御回路が機能し、エラー検出コードを付加ビットとして生成する。【選択図】図２
2010218447.tif 000002
【特許請求の範囲】
【請求項１】
データ本体あるいは前記データ本体の反転データと付加ビットとを含む記憶データが格納される不揮発性半導体メモリと、
第１モードあるいは第２モードを指定するモード指定信号に応じて、前記第１モードと前記第２モードとの間で前記付加ビットを変える付加ビット制御回路と
を備え、
前記付加ビット制御回路は、
前記第１モード用の前記付加ビットを生成する第１モード回路と、
前記第２モード用の前記付加ビットを生成する第２モード回路と
を含み、
前記第１モード回路は、前記データ本体を少なくとも含む対象データを受け取り、データ書き込み時に前記対象データの各ビットを反転させるか否かを決定し、前記決定の結果を示す反転フラグを前記付加ビットの少なくとも一部として生成し、前記反転フラグを前記対象データあるいは前記対象データの反転データに付加することにより前記記憶データを生成するデータ反転制御回路を含み、
前記第２モード回路は、前記データ本体のエラー検出に用いられるエラー検出コードを前記付加ビットの少なくとも一部として生成し、前記エラー検出コードを前記データ本体に付加することにより前記記憶データを生成するエラー検出制御回路を含む
データ処理装置。
【請求項２】
請求項１に記載のデータ処理装置であって、
前記不揮発性半導体メモリは、第１データ領域と第２データ領域とを含み、
前記第１データ領域へのアクセス時、前記モード指定信号は前記第１モードを指定し、
前記第２データ領域へのアクセス時、前記モード指定信号は前記第２モードを指定する
データ処理装置。
【請求項３】
請求項１又は２に記載のデータ処理装置であって、
あるビットの値が第１値である場合は書き込み状態に対応付けられ、それ以外の場合は消去状態に対応付けられ、
前記対象データは、Ｘビットのデータであり、
前記対象データに含まれる前記第１値のビットの数がＸ／２以上の場合、前記データ反転制御回路は、前記対象データの各ビットを反転させることを決定し、
前記対象データに含まれる前記第１値のビットの数がＸ／２未満の場合、前記データ反転制御回路は、前記対象データの各ビットを反転させないことを決定する
データ処理装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のデータ処理装置であって、
前記第１モードにおけるデータ読み出し時、前記データ反転制御回路は、前記不揮発性半導体メモリから読み出される前記記憶データを受け取り、前記読み出された記憶データに含まれる前記反転フラグを参照することによって、前記読み出された記憶データから前記対象データを復元する
データ処理装置。
【請求項５】
請求項４に記載のデータ処理装置であって、
前記反転フラグは、Ｙビットのデータであり、
Ｙは３以上の奇数であり、
前記第１モードにおけるデータ読み出し時、前記データ反転制御回路は、多数決論理を用いて前記反転フラグのエラーを訂正する
データ処理装置。
【請求項６】
請求項１乃至５のいずれか一項に記載のデータ処理装置であって、
前記第２モードにおけるデータ読み出し時、前記エラー検出制御回路は、前記不揮発性半導体メモリから読み出される前記記憶データを受け取り、前記読み出された記憶データに含まれる前記エラー検出コードに基づいて、前記読み出された記憶データに含まれる前記データ本体のエラーを検出する
データ処理装置。
【請求項７】
請求項６に記載のデータ処理装置であって、
前記エラー検出制御回路は、ＥＣＣ回路であり、
前記第２モードにおけるデータ書き込み時、前記ＥＣＣ回路は、前記データ本体に関するエラー訂正コードを前記エラー検出コードとして算出し、
前記第２モードにおけるデータ読み出し時、前記ＥＣＣ回路は、前記読み出された記憶データに含まれる前記エラー訂正コードに基づいて、前記エラーを検出し、且つ、訂正する
データ処理装置。
【請求項８】
請求項１乃至５のいずれか一項に記載のデータ処理装置であって、
前記第１モード回路は、更に、第１ＥＣＣ回路を含み、
前記第１モードにおけるデータ書き込み時、前記第１ＥＣＣ回路は、前記データ本体に関する第１エラー訂正コードを算出し、前記データ本体に前記第１エラー訂正コードを付加することにより前記対象データを生成する
データ処理装置。
【請求項９】
請求項８に記載のデータ処理装置であって、
前記エラー検出制御回路は、第２ＥＣＣ回路であり、
前記第２モードにおけるデータ書き込み時、前記第２ＥＣＣ回路は、前記データ本体に関する第２エラー訂正コードを前記エラー検出コードとして算出し、
前記第２エラー訂正コードのビット数は、前記第１エラー訂正コードのビット数よりも多い
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いるデータ処理装置に関する。
【背景技術】
【０００２】
フラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）といった不揮発性半導体メモリが知られている。そのような不揮発性半導体メモリでは、浮遊ゲート等の電荷蓄積層を有するセルトランジスタが、メモリセルとして用いられる。電荷蓄積層に電子が注入されると、セルトランジスタの閾値電圧は上昇する。一方、電荷蓄積層から電子が引き抜かれると、セルトランジスタの閾値電圧は減少する。このような閾値電圧の変化を利用して、セルトランジスタはデータ“０”、“１”を記憶する。閾値電圧が比較的低い状態は「消去状態」であり、例えばデータ“１”に対応付けられる。一方、閾値電圧が比較的高い状態は「書き込み状態（プログラム状態）」であり、例えばデータ“０”に対応付けられる。
【０００３】
典型的な不揮発性半導体メモリでは、データ書き込みは、データ消去が一旦行われた後に実施される。例として、データ「０００１」の書き込みを考える。この場合、対応する全てのビットのデータが消去され、ビット状態が「１１１１」となった後に、データ「０００１」が改めて書き込まれる。このとき、ビット“０”に対応する３つのメモリセルの各々において電子注入（書き込み処理）が行われ、その他のメモリセルでは電子注入は行われない。その結果、３つのメモリセルに対応するビットの値が“１”から“０”に変わる。
【０００４】
ここで、上述のデータ「０００１」の各ビットを反転させ、反転データ「１１１０」を書き込むことを考える。その場合、反転データに含まれるビット“０”の数は１個でだけであり、当該１つのビットに対応するメモリセルだけで電子注入が実施されればよい。すなわち、データ「０００１」の代わりに反転データ「１１１０」を書き込むことにより、データ書き込みに要する消費電力（消費電流）を削減することが可能となる。
【０００５】
以上に説明されたように、書き込みデータにビット“０”が多く含まれている場合は、その反転データを書き込むことによって消費電力を削減することができる。書き込みデータがそのまま書き込まれるか、あるいは、反転データが書き込まれるかは、「反転フラグ」により示される。反転フラグは、書き込みデータあるいは反転データに関連付けられ、共にメモリに書き込まれる。データ読み出し時は、この反転フラグを参照することによって、読み出しデータから元のデータを復元することが可能である。このような技術は、例えば特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２４４９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
不揮発性半導体メモリを用いるデバイスに要求される特性は、そのデバイスが搭載される製品に依存して異なる。例えば携帯電話等、充電池で動作する製品では、低消費電力動作が最も要求される。また、例えば自動車等、安全性が最重要視される製品では、極めて高いデータ信頼性が要求される。ここで、適用される製品毎に別々のデバイスを開発することは、コストの観点から好ましくない。
【課題を解決するための手段】
【０００８】
本発明の１つの観点において、データ処理装置が提供される。データ処理装置は、不揮発性半導体メモリと付加ビット制御回路とを備える。不揮発性半導体メモリには、データ本体あるいはデータ本体の反転データと付加ビットとを含む記憶データが格納される。付加ビット制御回路は、第１モードあるいは第２モードを指定するモード指定信号に応じて、それら第１モードと第２モードとの間で付加ビットを変える。より詳細には、付加ビット制御回路は、第１モード用の付加ビットを生成する第１モード回路と、第２モード用の付加ビットを生成する第２モード回路と、を含む。
【０００９】
第１モード回路は、データ反転制御回路を含む。データ反転制御回路は、データ本体を少なくとも含む対象データを受け取り、データ書き込み時にその対象データの各ビットを反転させるか否かを決定する。更に、データ反転制御回路は、当該決定の結果を示す反転フラグを、付加ビットの少なくとも一部として生成する。そして、データ反転制御回路は、その反転フラグを対象データあるいは対象データの反転データに付加することにより、記憶データを生成する。
【００１０】
第２モード回路は、エラー検出制御回路を含む。エラー検出制御回路は、データ本体のエラー検出に用いられるエラー検出コードを、付加ビットの少なくとも一部として生成する。そして、エラー検出制御回路は、そのエラー検出コードをデータ本体に付加することにより、記憶データを生成する。
【発明の効果】
【００１１】
本発明によれば、モード指定信号を用いることによってデータ処理装置の機能を切り替えることが可能である。第１モードでは、データ反転制御回路が機能し、それによりデータ書き込み時の消費電力を削減することが可能となる。この場合、付加ビットの少なくとも一部は反転フラグとして用いられる。一方、第２モードでは、エラー検出制御回路が機能し、それによりデータ信頼性が向上する。この場合、付加ビットの少なくとも一部はエラー検出コードとして用いられる。このように、第１モードと第２モードとの間で付加ビットの内容を変えることによって、１種類のデータ処理装置で低消費電力と高データ信頼性の両方を実現することが可能となる。適用される製品毎に別々のデバイスを開発する必要が無いため、コストが削減される。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。
【図２】図２は、本発明の実施の形態に係る付加ビット制御回路の構成を示すブロック図である。
【図３】図３は、本発明の実施の形態に係る不揮発性半導体メモリの使用方法の一例を示す概念図である。
【図４】図４は、付加ビット制御回路の第１の例を示すブロック図である。
【図５】図５は、付加ビット制御回路の第２の例を示すブロック図である。
【図６】図６は、付加ビット制御回路の第３の例を示すブロック図である。
【図７】図７は、付加ビット制御回路の第４の例を示すブロック図である。
【図８】図８は、リダンダンシ制御回路を示す概念図である。
【図９】図９は、付加ビット制御回路の第５の例を示すブロック図である。
【発明を実施するための形態】
【００１３】
添付図面を参照して、本発明の実施の形態を説明する。
【００１４】
１．データ処理装置
図１は、本実施の形態に係るデータ処理装置１の構成を概略的に示している。データ処理装置１は、コントローラ１０、付加ビット制御回路２０、データ読み書き回路３０、及び不揮発性半導体メモリ４０を備えている。
【００１５】
不揮発性半導体メモリ４０は、アレイ状に配置された複数のメモリセルを備えている。メモリセルとしては、浮遊ゲート等の電荷蓄積層を有するセルトランジスタが用いられる。電荷蓄積層に電子が注入されると、セルトランジスタの閾値電圧は上昇する。一方、電荷蓄積層から電子が引き抜かれると、セルトランジスタの閾値電圧は減少する。このような閾値電圧の変化を利用して、セルトランジスタはデータ“０”、“１”を記憶する。閾値電圧が比較的低い状態は「消去状態」であり、例えばデータ“１”に対応付けられる。一方、閾値電圧が比較的高い状態は「書き込み状態（プログラム状態）」であり、例えばデータ“０”に対応付けられる。
【００１６】
本実施の形態では、不揮発性半導体メモリ４０に格納されるデータには、付加的な制御情報（以下「付加ビットＡＢ」と参照される）が付与される。つまり、不揮発性半導体メモリ４０に格納される記憶データＤＡＴＡは、データ本体ＤＡＴと付加ビットＡＢとを含む。また、後述されるように、記憶データＤＡＴＡがデータ本体ＤＡＴの反転データと付加ビットＡＢとを含む場合もある。データ本体ＤＡＴはｎビットのデータであり、付加ビットＡＢはｎａビットのデータであり、記憶データＤＡＴＡはｎ＋ｎａビットのデータである。データ本体ＤＡＴと付加ビットＡＢとは、互いに関連付けられている。データ本体ＤＡＴ（あるいはその反転データ）が書き込まれるときは対応する付加ビットＡＢも書き込まれ、データ本体ＤＡＴ（あるいはその反転データ）が読み出されるときは対応する付加ビットＡＢも読み出される。尚、不揮発性半導体メモリ４０のデータ格納領域は、データ本体ＤＡＴ（あるいはその反転データ）が格納される領域と、付加ビットＡＢが格納される領域とに区分けされていてもよい。
【００１７】
コントローラ１０は、データ処理装置１の動作を制御するための回路であり、ＣＰＵ（Central Processing Unit）やメモリコントローラを含んでいてもよい。付加ビット制御回路２０は、上述の付加ビットＡＢを制御するための回路であり、その詳細は後述される。データ読み書き回路３０は、不揮発性半導体メモリ４０に対してデータ読み書きを行う回路であり、デコーダやドライバ、センスアンプ等を含んでいる。
【００１８】
不揮発性半導体メモリ４０へのデータ書き込み時、コントローラ１０は、書き込み対象のデータ本体ＤＡＴを、付加ビット制御回路２０に出力する。また、コントローラ１０は、データ書き込みを指示する制御信号ＣＯＮと書き込み先を示すアドレス信号ＡＤＤを、データ読み書き回路３０に出力する。付加ビット制御回路２０は、コントローラ１０から受け取ったデータ本体ＤＡＴに基づいて、後述される適切な付加ビットＡＢを生成する。そして、付加ビット制御回路２０は、その付加ビットＡＢを含む記憶データＤＡＴＡを生成し、その記憶データＤＡＴＡをデータ読み書き回路３０に出力する。データ読み書き回路３０は、制御信号ＣＯＮに応答して、アドレス信号ＡＤＤで指定される書き込み先に記憶データＤＡＴＡを書き込む。
【００１９】
不揮発性半導体メモリ４０からのデータ読み出し時、コントローラ１０は、データ読み出しを指示する制御信号ＣＯＮと読み出し元を示すアドレス信号ＡＤＤを、データ読み書き回路３０に出力する。データ読み書き回路３０は、制御信号ＣＯＮに応答して、アドレス信号ＡＤＤで指定される読み出し元から記憶データＤＡＴＡを読み出す。そして、データ読み書き回路３０は、読み出した記憶データＤＡＴＡを付加ビット制御回路２０に出力する。付加ビット制御回路２０は、読み出された記憶データＤＡＴＡに含まれる付加ビットＡＢに基づいて適切な処理を行い、元のデータ本体２０を生成する。そして、付加ビット制御回路２０は、得られたデータ本体２０をコントローラ１０へ出力する。
【００２０】
２．モード切り替え
上述の通り、不揮発性半導体メモリ４０に格納される記憶データＤＡＴＡは、付加的な制御情報として付加ビットＡＢを含んでいる。よって、その付加ビットＡＢの使い方を変えることによって、様々な機能を実現することが可能となる。
【００２１】
本実施の形態によれば、付加ビットＡＢの使い方はモード間で切り替えられる。すなわち、データ処理装置１は複数のモードをサポートしており、それらモード間で付加ビットＡＢの使い方が変更される。データ処理装置１のモードは、モード指定信号ＭＯＤによって指定される。そのモード指定信号ＭＯＤを用いることによって、付加ビットＡＢの使い方を変更し、データ処理装置１の機能を切り替えることが可能となる。
【００２２】
データ処理装置１の複数のモードは、少なくとも第１モードと第２モードを含む。コントローラ１０は、第１モードあるいは第２モードを指定するモード指定信号ＭＯＤを、付加ビット制御回路２０に出力する。付加ビット制御回路２０は、そのモード指定信号ＭＯＤに応じて、第１モードと第２モードとの間で付加ビットＡＢの内容を変える。
【００２３】
より詳細には、図１に示されるように、付加ビット制御回路２０は、第１モード回路１００と第２モード回路２００とを含んでいる。第１モード回路１００は、モード指定信号ＭＯＤが第１モードを指定している場合に動作し、第１モード用の第１付加ビットＡＢ１を生成する。一方、第２モード回路２００は、モード指定信号ＭＯＤが第２モードを指定している場合に動作し、第２モード用の第２付加ビットＡＢ２を生成する。このように、付加ビットＡＢは、モード指定信号ＭＯＤに応じて、第１付加ビットＡＢ１あるいは第２付加ビットＡＢ２に切り替えられる。
【００２４】
図２は、本実施の形態に係る付加ビット制御回路２０をより詳細に示している。本実施の形態において、第１モードは「低消費電力モード」であり、第２モードは「高信頼性モード」である。よって、第１モード用の第１モード回路１００は、低消費電力を実現できる構成を少なくとも含む。一方、第２モード用の第２モード回路２００は、高信頼性を実現できる構成を少なくとも含む。以下、図２を参照しながら、第１モードと第２モードをより詳細に説明する。
【００２５】
（第１モード＝低消費電力モード）
不揮発性半導体メモリ４０では、データ書き込みは、データ消去が一旦行われた後に実施される。そのデータ書き込み時、書き込みデータにビット“０”が多く含まれている場合は、その反転データを書き込むことによって消費電力を削減することができる。
【００２６】
例として、データ「０００１」の書き込みを考える。この場合、ビット“０”に対応する３つのメモリセルの各々において電子注入（書き込み処理）が行われ、その他のメモリセルでは電子注入は行われない。その結果、それら３つのメモリセルに対応するビットの値が“１（消去状態）”から“０（書き込み状態）”に変わる。次に、上述のデータ「０００１」の各ビットを反転させ、反転データ「１１１０」を書き込むことを考える。その場合、反転データに含まれるビット“０”の数は１個でだけであり、当該１つのビットに対応するメモリセルだけで電子注入が実施されればよい。すなわち、データ「０００１」の代わりに反転データ「１１１０」を書き込むことにより、データ書き込みに要する消費電力（消費電流）を削減することが可能となる。
【００２７】
本実施の形態によれば、第１モードにおいて、このようなデータ反転制御が実施される。そのために、第１モード回路１００は、データ反転制御回路１２０を少なくとも含んでいる。データ反転制御回路１２０は、データ書き込み時に当該データを反転させるか否かを判定し、その判定結果（正転あるいは反転）を示す「反転フラグＦＬ」を生成する。第１モードでは、付加ビットＡＢの少なくとも一部は、この反転フラグＦＬに割り当てられる。すなわち、反転フラグＦＬが、第１付加ビットＡＢ１の少なくとも一部となる。
【００２８】
より詳細には、データ書き込み時、データ反転制御回路１２０は、データ反転の対象となる「対象データＤＡＴ１」を受け取る。対象データＤＡＴ１は、少なくともデータ本体ＤＡＴを含んでいる。ここで、対象データＤＡＴ１は、Ｘビット（Ｘ≧ｎ）のデータである。
【００２９】
次に、データ反転制御回路１２０は、データ書き込み時に対象データＤＡＴ１の各ビットを反転させるか否かを決定する。具体的には、データ反転制御回路１２０は、対象データＤＡＴ１に含まれるビット“０”の数をチェックする。ビット“０”の数がＸ／２以上の場合、データ反転制御回路１２０は、対象データＤＡＴ１の各ビットを反転させることを決定する。一方、ビット“０”の数がＸ／２未満の場合、データ反転制御回路１２０は、対象データＤＡＴ１の各ビットを反転させないことを決定する。
【００３０】
次に、データ反転制御回路１２０は、上記決定の結果を示す反転フラグＦＬを生成する。反転フラグＦＬは、例えば、反転の場合に“１”に設定され、非反転（正転）の場合に“０”に設定される。尚、反転フラグＦＬは１ビットデータに限られず、多ビットデータであってもよい。例えば、反転フラグＦＬは３ビットデータであってもよい。その場合、反転フラグＦＬは、反転の場合に“１１１”に設定され、非反転（正転）の場合に“０００”に設定される。一般化すれば、反転フラグＦＬはＹビットデータ（Ｙは自然数）である。
【００３１】
以上に説明されたように、データ反転制御回路１２０は、第１モードにおけるデータ書き込み時、反転フラグＦＬを第１付加ビットＡＢ１の少なくとも一部として生成する。非反転の場合、データ反転制御回路１２０は、対象データＤＡＴ１そのものに反転フラグＦＬを付加することによって記憶データＤＡＴＡを生成する。一方、反転の場合、データ反転制御回路１２０は、対象データＤＡＴ１の各ビットを反転させて反転データ／ＤＡＴ１を生成し、その反転データ／ＤＡＴ１に反転フラグＦＬを付加することによって記憶データＤＡＴＡを生成する。このような記憶データＤＡＴＡを不揮発性半導体メモリ４０に書き込むことによって、消費電力を削減することができる。
【００３２】
第１モードにおけるデータ読み出し時、データ反転制御回路１２０は、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡを受け取る。そして、その記憶データＤＡＴＡに含まれる反転フラグＦＬを参照することによって、データ反転制御回路１２０は、記憶データＤＡＴＡから元の対象データＤＡＴ１を復元する。具体的には、反転フラグＦＬが非反転（正転）を示している場合、データ反転制御回路１２０は、読み出された記憶データＤＡＴＡに含まれる対象データＤＡＴ１をそのまま出力する。一方、反転フラグＦＬが反転を示している場合、データ反転制御回路１２０は、読み出された記憶データＤＡＴＡに含まれる反転データ／ＤＡＴ１の各ビットを再反転させて対象データＤＡＴ１を生成し、得られた対象データＤＡＴ１を出力する。
【００３３】
尚、Ｙビットの反転フラグＦＬの読み出し時に、多数決演算を適用することも可能である。そのためには、Ｙが３以上の奇数である必要がある。この場合、データ反転制御回路１２０は、多数決論理を用いることによって、読み出された反転フラグＦＬのエラーを訂正することができる。これにより、消費電力を削減すると共に、反転フラグＦＬの信頼性を向上させることも可能となる。この観点から言えば、Ｙは３以上の奇数であることが好適である。
【００３４】
（第２モード＝高信頼性モード）
第２モードは、データエラーを検出し、データ信頼性を向上させるためのモードである。そのために、第２モード回路２００は、エラー検出制御回路２１０を少なくとも含んでいる。エラー検出制御回路２１０は、データ本体ＤＡＴに基づいて、そのデータ本体ＤＡＴのエラー検出に用いられる「エラー検出コードＥＤ」を生成する。第２モードでは、付加ビットＡＢの少なくとも一部は、このエラー検出コードＥＤに割り当てられる。すなわち、エラー検出コードＥＤが第２付加ビットＡＢ２の少なくとも一部となる。
【００３５】
エラー検出制御回路２１０として、例えば、ＥＣＣ（Error Checking and Correcting）回路が挙げられる。ＥＣＣ回路は、エラーを検出するだけでなく、データ中でエラーが発生した箇所（ビット）を特定し、それを正しい値に訂正することができる。具体的には、データ書き込み時、ＥＣＣ回路は、そのデータに対して「エラー訂正コード（ＥＣＣ：Error Correction Code）」と呼ばれる情報を算出する。ＥＣＣ回路の場合、このエラー訂正コードが上記エラー検出コードＥＤに相当する。算出されたエラー訂正コードはメモリ空間に記憶される。その後、当該データが読み出される際、ＥＣＣ回路は、先に算出されたエラー訂正コードを参照することによって読み出しデータのエラーを検知・訂正する。
【００３６】
第２モードにおけるデータ書き込み時、エラー検出制御回路２１０は、エラー検出コードＥＤを第２付加ビットＡＢ２の少なくとも一部として生成する。そして、エラー検出制御回路２１０は、そのエラー検出コードＥＤをデータ本体ＤＡＴに付加することにより記憶データＤＡＴＡを生成する。このような記憶データＤＡＴＡが不揮発性半導体メモリ４０に書き込まれる。
【００３７】
第２モードにおけるデータ読み出し時、エラー検出制御回路２１０は、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡを受け取る。そして、その記憶データＤＡＴＡに含まれるエラー検出コードＥＤに基づいて、エラー検出制御回路２１０は、当該記憶データＤＡＴＡに含まれるデータ本体ＤＡＴのエラーを検出する。これにより、データ信頼性が向上する。
【００３８】
以上に説明されたように、本実施の形態に係るデータ処理装置１は、データ反転制御回路１２０とエラー検出制御回路２１０を備えており、モード指定信号ＭＯＤを用いることによってそのデータ処理装置１の機能を切り替えることが可能である。具体的には、第１モードでは、データ反転制御回路１２０が機能し、それによりデータ書き込み時の消費電力を削減することが可能となる。この場合、付加ビットＡＢの少なくとも一部は反転フラグＦＬとして用いられる。一方、第２モードでは、エラー検出制御回路２１０が機能し、それによりデータ信頼性が向上する。この場合、付加ビットＡＢの少なくとも一部はエラー検出コードＥＤとして用いられる。このように、第１モードと第２モードとの間で付加ビットＡＢの内容を変えることによって、１種類のデータ処理装置１で低消費電力と高データ信頼性の両方を実現することが可能となる。適用される製品毎に別々のデバイスを開発する必要が無いため、コストが削減される。
【００３９】
本実施の形態では、付加ビットＡＢがユーザの要望に応じて有効に活用されているとも言える。例えば携帯電話等、充電池で動作する製品では、低消費電力動作が最も要求される。従って、この場合は、データ処理装置１は第１モードに設定され、付加ビットＡＢが反転フラグＦＬに割り当てられる。また、例えば自動車等、安全性が最重要視される製品では、極めて高いデータ信頼性が要求される。従って、この場合は、データ処理装置１は第２モードに設定され、付加ビットＡＢがエラー検出コードＥＤに割り当てられる。
【００４０】
尚、データ処理装置１のモードは、いずれか１つに固定されていてもよいし、適宜切り替えられてもよい。後者の場合、不揮発性半導体メモリ４０のデータ格納領域がモード毎に切り替えられると好適である。
【００４１】
図３は、不揮発性半導体メモリ４０のデータ格納領域がモード毎に切り替えられる例を示している。図３に示されるように、データ格納領域は、第１データ領域Ｒ１と第２データ領域Ｒ２とに区分けされている。第１データ領域Ｒ１へのアクセス（データ書き込み／読み出し）時、モード指定信号ＭＯＤは第１モードを指定するように設定される。つまり、第１データ領域Ｒ１は、低消費電力領域に設定される。一方、第２データ領域Ｒ２へのアクセス（データ書き込み／読み出し）時、モード指定信号ＭＯＤは第２モードを指定するように設定される。つまり、第２データ領域Ｒ２は、高信頼性領域に設定される。このような設定は、アクセス先を指定するアドレス信号ＡＤＤ（図１参照）とモードを指定するモード指定信号ＭＯＤとを互いに関連付けることによって、容易に可能である。
【００４２】
例えば、第１データ領域Ｒ１はユーザ領域であり、そこでは頻繁にデータ書き換えが行われる。第１データ領域Ｒ１は第１モードに割り当てられるため、頻繁なデータ書き換え時の消費電力を削減することが可能となる。一方、第２データ領域Ｒ２はプログラムやトリミングコードが格納される領域であり、そこではデータ書き換えが行われない、あるいは書き換え回数が極めて少ない。第２データ領域Ｒ２は第２モードに割り当てられるため、プログラムやトリミングコードの信頼性が向上する。このように、データ格納領域をモード毎に切り替えることによって、不揮発性半導体メモリ４０を有効に活用することができる。
【００４３】
３．付加ビット制御回路２０
以下、本実施の形態に係る付加ビット制御回路２０の様々な例を紹介する。以下の例において、データ本体ＤＡＴは３２ビットデータであるとする（ｎ＝３２）。
【００４４】
３−１．第１の例
図４は、第１の例を示している。本例において、付加ビット制御回路２０Ａは、スイッチ回路５０Ａ、６０Ａ、データ反転制御回路１２０Ａ、及びＥＣＣ回路２１０Ａを備えている。スイッチ回路５０Ａ、６０Ａは、モード指定信号ＭＯＤに応じてスイッチングを行う。データ反転制御回路１２０Ａは、第１モード回路１００に含まれる。ＥＣＣ回路２１０Ａは、図２中のエラー検出制御回路２１０に相当し、第２モード回路２００に含まれる。本例では、付加ビットＡＢは７ビットである（ｎａ＝７）。
【００４５】
（第１モード）
第１モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ａに入力される。モード指定信号ＭＯＤが第１モードを指定する場合、ＥＣＣ回路２１０Ａは非活性化されてもよい。
【００４６】
データ書き込み時、スイッチ回路５０Ａは、コントローラ１０から受け取るデータ本体ＤＡＴをデータ反転制御回路１２０Ａに出力する。本例では、データ本体ＤＡＴが、データ反転の対象である対象データＤＡＴ１となる。データ本体ＤＡＴ（３２ビット）に含まれるビット“０”の数が１６以上の場合、データ反転制御回路１２０Ａは、データ本体ＤＡＴを反転させることを決定する。この場合、反転フラグＦＬは、反転を示す“１１１１１１１”に設定される。一方、データ本体ＤＡＴ（３２ビット）に含まれるビット“０”の数が１６未満の場合、データ反転制御回路１２０Ａは、データ本体ＤＡＴを反転させないことを決定する。この場合、反転フラグＦＬは、非反転を示す“０００００００”に設定される。データ反転制御回路１２０Ａは、データ本体ＤＡＴあるいはその反転データ／ＤＡＴに反転フラグＦＬを付加することによって、３９ビットの記憶データＤＡＴＡを生成する。そして、データ反転制御回路１２０Ａは、その記憶データＤＡＴＡをスイッチ回路６０Ａに出力する。スイッチ回路６０Ａは、データ反転制御回路１２０Ａから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００４７】
データ読み出し時、スイッチ回路６０Ａは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをデータ反転制御回路１２０Ａに出力する。データ反転制御回路１２０Ａは、その記憶データＤＡＴＡに含まれる反転フラグＦＬを参照する。ここで、データ反転制御回路１２０Ａは、多数決論理を用いることによって、読み出された反転フラグＦＬ（７ビット）のエラーを訂正してもよい。反転フラグＦＬが非反転を示している場合、データ反転制御回路１２０Ａは、記憶データＤＡＴＡに含まれるデータ本体ＤＡＴをそのままスイッチ回路５０Ａに出力する。一方、反転フラグＦＬが反転を示している場合、データ反転制御回路１２０Ａは、記憶データＤＡＴＡに含まれる反転データ／ＤＡＴの各ビットを再反転させてデータ本体ＤＡＴを復元し、得られたデータ本体ＤＡＴをスイッチ回路５０Ａに出力する。スイッチ回路５０Ａは、データ反転制御回路１２０Ａから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００４８】
（第２モード）
第２モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ａに入力される。モード指定信号ＭＯＤが第２モードを指定する場合、データ反転制御回路１２０Ａは非活性化されてもよい。
【００４９】
データ書き込み時、スイッチ回路５０Ａは、コントローラ１０から受け取るデータ本体ＤＡＴをＥＣＣ回路２１０Ａに出力する。ＥＣＣ回路２１０Ａは、７ビットＥＣＣ回路であり、受け取ったデータ本体ＤＡＴに関して７ビットのエラー訂正コードＥＣＣを算出する。データ本体ＤＡＴが３２ビットデータである場合、７ビットのエラー訂正コードを用いることによって、２ビットエラー検知及び１ビットエラー訂正が可能であり、十分な信頼性が得られる。ＥＣＣ回路２１０Ａは、データ本体ＤＡＴにエラー訂正コードＥＣＣを付加することによって、３９ビットの記憶データＤＡＴＡを生成する。そして、ＥＣＣ回路２１０Ａは、その記憶データＤＡＴＡをスイッチ回路６０Ａに出力する。スイッチ回路６０Ａは、ＥＣＣ回路２１０Ａから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００５０】
データ読み出し時、スイッチ回路６０Ａは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをＥＣＣ回路２１０Ａに出力する。ＥＣＣ回路２１０Ａは、その記憶データＤＡＴＡに含まれるエラー訂正コードＥＣＣに基づいて、記憶データＤＡＴＡに含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、ＥＣＣ回路２１０Ａは、読み出されたデータ本体ＤＡＴをそのままスイッチ回路５０Ａに出力する。１ビットエラーが検出された場合、ＥＣＣ回路２１０Ａは、そのエラーを訂正し、復元されたデータ本体ＤＡＴをスイッチ回路５０Ａに出力する。２ビットエラーが検出された場合、ＥＣＣ回路２１０Ａは、エラー信号ＥＲＲＯＲをコントローラ１０に送る。スイッチ回路５０Ａは、ＥＣＣ回路２１０Ａから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００５１】
３−２．第２の例
図５は、第２の例を示している。本例において、付加ビット制御回路２０Ｂは、スイッチ回路５０Ｂ、６０Ｂ、データ反転制御回路１２０Ｂ、及びパリティ回路２１０Ｂを備えている。スイッチ回路５０Ｂ、６０Ｂは、モード指定信号ＭＯＤに応じてスイッチングを行う。データ反転制御回路１２０Ｂは、第１モード回路１００に含まれる。パリティ回路２１０Ｂは、図２中のエラー検出制御回路２１０に相当し、第２モード回路２００に含まれる。本例では、付加ビットＡＢは１ビットである（ｎａ＝１）。
【００５２】
（第１モード）
第１モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｂに入力される。モード指定信号ＭＯＤが第１モードを指定する場合、パリティ回路２１０Ｂは非活性化されてもよい。
【００５３】
データ書き込み時、スイッチ回路５０Ｂは、コントローラ１０から受け取るデータ本体ＤＡＴをデータ反転制御回路１２０Ｂに出力する。本例では、データ本体ＤＡＴが、データ反転の対象である対象データＤＡＴ１となる。データ本体ＤＡＴ（３２ビット）に含まれるビット“０”の数が１６以上の場合、データ反転制御回路１２０Ｂは、データ本体ＤＡＴを反転させることを決定する。この場合、反転フラグＦＬは、反転を示す“１”に設定される。一方、データ本体ＤＡＴ（３２ビット）に含まれるビット“０”の数が１６未満の場合、データ反転制御回路１２０Ｂは、データ本体ＤＡＴを反転させないことを決定する。この場合、反転フラグＦＬは、非反転を示す“０”に設定される。データ反転制御回路１２０Ｂは、データ本体ＤＡＴあるいはその反転データ／ＤＡＴに反転フラグＦＬを付加することによって、３３ビットの記憶データＤＡＴＡを生成する。そして、データ反転制御回路１２０Ｂは、その記憶データＤＡＴＡをスイッチ回路６０Ｂに出力する。スイッチ回路６０Ｂは、データ反転制御回路１２０Ｂから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００５４】
データ読み出し時、スイッチ回路６０Ｂは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをデータ反転制御回路１２０Ｂに出力する。データ反転制御回路１２０Ｂは、その記憶データＤＡＴＡに含まれる反転フラグＦＬを参照する。反転フラグＦＬが非反転を示している場合、データ反転制御回路１２０Ｂは、記憶データＤＡＴＡに含まれるデータ本体ＤＡＴをそのままスイッチ回路５０Ｂに出力する。一方、反転フラグＦＬが反転を示している場合、データ反転制御回路１２０Ｂは、記憶データＤＡＴＡに含まれる反転データ／ＤＡＴの各ビットを再反転させてデータ本体ＤＡＴを復元し、得られたデータ本体ＤＡＴをスイッチ回路５０Ｂに出力する。スイッチ回路５０Ｂは、データ反転制御回路１２０Ｂから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００５５】
（第２モード）
第２モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｂに入力される。モード指定信号ＭＯＤが第２モードを指定する場合、データ反転制御回路１２０Ｂは非活性化されてもよい。
【００５６】
データ書き込み時、スイッチ回路５０Ｂは、コントローラ１０から受け取るデータ本体ＤＡＴをパリティ回路２１０Ｂに出力する。パリティ回路２１０Ｂは、受け取ったデータ本体ＤＡＴに関するパリティビットＰＢを算出する。本例では、このパリティビットＰＢがエラー検出コードＥＤとして用いられる。パリティ回路２１０Ｂは、データ本体ＤＡＴにパリティビットＰＢを付加することによって、３３ビットの記憶データＤＡＴＡを生成する。そして、パリティ回路２１０Ｂは、その記憶データＤＡＴＡをスイッチ回路６０Ｂに出力する。スイッチ回路６０Ｂは、パリティ回路２１０Ｂから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００５７】
データ読み出し時、スイッチ回路６０Ｂは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをパリティ回路２１０Ｂに出力する。パリティ回路２１０Ｂは、その記憶データＤＡＴＡに含まれるパリティビットＰＢに基づいて、記憶データＤＡＴＡに含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、パリティ回路２１０Ｂは、読み出されたデータ本体ＤＡＴをそのままスイッチ回路５０Ｂに出力する。エラーが検出された場合、パリティ回路２１０Ｂは、エラー信号ＥＲＲＯＲをコントローラ１０に送る。スイッチ回路５０Ｂは、パリティ回路２１０Ｂから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００５８】
３−３．第３の例
図６は、第３の例を示している。本例において、付加ビット制御回路２０Ｃは、スイッチ回路５０Ｃ、６０Ｃ、第１ＥＣＣ回路１１０Ｃ、データ反転制御回路１２０Ｃ、及び第２ＥＣＣ回路２１０Ｃを備えている。スイッチ回路５０Ｃ、６０Ｃは、モード指定信号ＭＯＤに応じてスイッチングを行う。第１ＥＣＣ回路１１０Ｃ及びデータ反転制御回路１２０Ｃは、第１モード回路１００に含まれる。第２ＥＣＣ回路２１０Ｃは、図２中のエラー検出制御回路２１０に相当し、第２モード回路２００に含まれる。本例では、付加ビットＡＢは７ビットである（ｎａ＝７）。
【００５９】
（第１モード）
第１モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｃに入力される。モード指定信号ＭＯＤが第１モードを指定する場合、第２ＥＣＣ回路２１０Ｃは非活性化されてもよい。
【００６０】
データ書き込み時、スイッチ回路５０Ｃは、コントローラ１０から受け取るデータ本体ＤＡＴを第１ＥＣＣ回路１１０Ｃに出力する。第１ＥＣＣ回路１１０Ｃは、６ビットＥＣＣ回路であり、受け取ったデータ本体ＤＡＴに関して６ビットの第１エラー訂正コードＥＣＣ１を算出する。データ本体ＤＡＴが３２ビットデータである場合、６ビットのエラー訂正コードを用いることによって、１ビットエラー検知及び１ビットエラー訂正が可能である。第１ＥＣＣ回路１１０Ｃは、データ本体ＤＡＴに第１エラー訂正コードＥＣＣ１を付加することによって、３８ビットの対象データＤＡＴ１を生成する。そして、第１ＥＣＣ回路１１０Ｃは、その対象データＤＡＴ１（＝ＤＡＴ＋ＥＣＣ１）をデータ反転制御回路１２０Ｃに出力する。
【００６１】
データ反転制御回路１２０Ｃは、３８ビットの対象データＤＡＴ１を受け取る。対象データＤＡＴ１に含まれるビット“０”の数が１９以上の場合、データ反転制御回路１２０Ｃは、対象データＤＡＴ１を反転させることを決定する。この場合、反転フラグＦＬは、反転を示す“１”に設定される。一方、対象データＤＡＴ１に含まれるビット“０”の数が１９未満の場合、データ反転制御回路１２０Ｃは、対象データＤＡＴ１を反転させないことを決定する。この場合、反転フラグＦＬは、非反転を示す“０”に設定される。データ反転制御回路１２０Ｃは、対象データＤＡＴ１あるいはその反転データ／ＤＡＴ１に反転フラグＦＬを付加することによって、３９ビットの記憶データＤＡＴＡを生成する。そして、データ反転制御回路１２０Ｃは、その記憶データＤＡＴＡをスイッチ回路６０Ｃに出力する。スイッチ回路６０Ｃは、データ反転制御回路１２０Ｃから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００６２】
データ読み出し時、スイッチ回路６０Ｃは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをデータ反転制御回路１２０Ｃに出力する。データ反転制御回路１２０Ｃは、その記憶データＤＡＴＡに含まれる反転フラグＦＬを参照する。反転フラグＦＬが非反転を示している場合、データ反転制御回路１２０Ｃは、記憶データＤＡＴＡに含まれる対象データＤＡＴ１をそのまま第１ＥＣＣ回路１１０Ｃに出力する。一方、反転フラグＦＬが反転を示している場合、データ反転制御回路１２０Ｃは、記憶データＤＡＴＡに含まれる反転データ／ＤＡＴ１の各ビットを再反転させて対象データＤＡＴ１を復元し、得られた対象データＤＡＴ１を第１ＥＣＣ回路１１０Ｃに出力する。
【００６３】
第１ＥＣＣ回路１１０Ｃは、読み出された対象データＤＡＴ１（＝ＤＡＴ＋ＥＣＣ１）を受け取る。第１ＥＣＣ回路１１０Ｃは、その対象データＤＡＴ１に含まれる第１エラー訂正コードＥＣＣ１に基づいて、対象データＤＡＴ１に含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、第１ＥＣＣ回路１１０Ｃは、データ本体ＤＡＴをそのままスイッチ回路５０Ｃに出力する。１ビットエラーが検出された場合、第１ＥＣＣ回路２１０Ｃは、そのエラーを訂正し、復元されたデータ本体ＤＡＴをスイッチ回路５０Ｃに出力する。スイッチ回路５０Ｃは、第１ＥＣＣ回路１１０Ｃから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００６４】
（第２モード）
第２モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｃに入力される。モード指定信号ＭＯＤが第２モードを指定する場合、第１ＥＣＣ回路１１０Ｃ及びデータ反転制御回路１２０Ｃは非活性化されてもよい。
【００６５】
データ書き込み時、スイッチ回路５０Ｃは、コントローラ１０から受け取るデータ本体ＤＡＴを第２ＥＣＣ回路２１０Ｃに出力する。第２ＥＣＣ回路２１０Ｃは、７ビットＥＣＣ回路であり、受け取ったデータ本体ＤＡＴに関して７ビットの第２エラー訂正コードＥＣＣ２を算出する。ここで、第２エラー訂正コードＥＣＣ２のビット数は、上述の第１エラー訂正コードＥＣＣ１のビット数よりも多いことに留意されたい。すなわち、データ信頼性は、第１モード時よりも第２モード時の方が高くなる。第２ＥＣＣ回路２１０Ｃは、データ本体ＤＡＴに第２エラー訂正コードＥＣＣ２を付加することによって、３９ビットの記憶データＤＡＴＡを生成する。そして、第２ＥＣＣ回路２１０Ｃは、その記憶データＤＡＴＡをスイッチ回路６０Ｃに出力する。スイッチ回路６０Ｃは、第２ＥＣＣ回路２１０Ｃから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００６６】
データ読み出し時、スイッチ回路６０Ｃは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡを第２ＥＣＣ回路２１０Ｃに出力する。第２ＥＣＣ回路２１０Ｃは、その記憶データＤＡＴＡに含まれる第２エラー訂正コードＥＣＣ２に基づいて、記憶データＤＡＴＡに含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、第２ＥＣＣ回路２１０Ｃは、読み出されたデータ本体ＤＡＴをそのままスイッチ回路５０Ｃに出力する。１ビットエラーが検出された場合、第２ＥＣＣ回路２１０Ｃは、そのエラーを訂正し、復元されたデータ本体ＤＡＴをスイッチ回路５０Ｃに出力する。２ビットエラーが検出された場合、第２ＥＣＣ回路２１０Ｃは、エラー信号ＥＲＲＯＲをコントローラ１０に送る。スイッチ回路５０Ｃは、第２ＥＣＣ回路２１０Ｃから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００６７】
３−４．第４の例
図７は、第４の例を示している。本例において、付加ビット制御回路２０Ｄは、スイッチ回路５０Ｄ、６０Ｄ、第１ＥＣＣ回路１１０Ｄ、データ反転制御回路１２０Ｄ、第２ＥＣＣ回路２１０Ｄ、及びリダンダンシ制御回路２２０Ｄを備えている。スイッチ回路５０Ｄ、６０Ｄは、モード指定信号ＭＯＤに応じてスイッチングを行う。第１ＥＣＣ回路１１０Ｄ及びデータ反転制御回路１２０Ｄは、第１モード回路１００に含まれる。第２ＥＣＣ回路２１０Ｄは、図２中のエラー検出制御回路２１０に相当し、第２モード回路２００に含まれる。リダンダンシ制御回路２２０Ｄも第２モード回路２００に含まれる。本例では、付加ビットＡＢは９ビットである（ｎａ＝９）。
【００６８】
（第１モード）
第１モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｄに入力される。モード指定信号ＭＯＤが第１モードを指定する場合、第２ＥＣＣ回路２１０Ｄ及びリダンダンシ制御回路２２０Ｄは非活性化されてもよい。
【００６９】
データ書き込み時、スイッチ回路５０Ｄは、コントローラ１０から受け取るデータ本体ＤＡＴを第１ＥＣＣ回路１１０Ｄに出力する。第１ＥＣＣ回路１１０Ｄは、第３の例における第１ＥＣＣ回路１１０Ｃと同様に動作し、３８ビットの対象データＤＡＴ１を生成する。データ反転制御回路１２０Ｄは、第３の例におけるデータ反転制御回路１２０Ｃと同様に動作し、反転フラグＦＬを生成する。但し、本例では、反転フラグＦＬは３ビットデータである。データ反転制御回路１２０Ｄは、対象データＤＡＴ１あるいはその反転データ／ＤＡＴ１に３ビットの反転フラグＦＬを付加することによって、４１ビットの記憶データＤＡＴＡを生成する。そして、データ反転制御回路１２０Ｄは、その記憶データＤＡＴＡをスイッチ回路６０Ｄに出力する。スイッチ回路６０Ｄは、データ反転制御回路１２０Ｄから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００７０】
データ読み出し時、スイッチ回路６０Ｄは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをデータ反転制御回路１２０Ｄに出力する。データ反転制御回路１２０Ｄは、第３の例におけるデータ反転制御回路１２０Ｃと同様に動作し、対象データＤＡＴ１を第１ＥＣＣ回路１１０Ｄに出力する。ここで、データ反転制御回路１２０Ｄは、多数決論理を用いることによって、読み出された反転フラグＦＬ（３ビット）のエラーを訂正してもよい。第１ＥＣＣ回路１１０Ｄは、第３の例における第１ＥＣＣ回路１１０Ｃと同様に動作し、データ本体ＤＡＴをスイッチ回路５０Ｄに出力する。スイッチ回路５０Ｄは、第１ＥＣＣ回路１１０Ｄから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００７１】
（第２モード）
第２モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｄに入力される。モード指定信号ＭＯＤが第２モードを指定する場合、第１ＥＣＣ回路１１０Ｄ及びデータ反転制御回路１２０Ｄは非活性化されてもよい。
【００７２】
データ書き込み時、スイッチ回路５０Ｄは、コントローラ１０から受け取るデータ本体ＤＡＴを第２ＥＣＣ回路２１０Ｄに出力する。第２ＥＣＣ回路２１０Ｄは、第３の例における第２ＥＣＣ回路２１０Ｃと同様に動作し、７ビットの第２エラー訂正コードＥＣＣ２を算出する。第２ＥＣＣ回路２１０Ｄは、データ本体ＤＡＴに第２エラー訂正コードＥＣＣ２を付加することによって、３９ビットの記憶データＤＡＴ２を生成する。そして、第２ＥＣＣ回路２１０Ｄは、その記憶データＤＡＴ２をリダンダンシ制御回路２２０Ｄに出力する。リダンダンシ制御回路２２０Ｄは、その記憶データＤＡＴ２を４１ビットの記憶データＤＡＴＡに変換する。スイッチ回路６０Ｄは、リダンダンシ制御回路２２０Ｄから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００７３】
図８は、リダンダンシ制御回路を概念的に示している。本例では、４１ビットの記憶データＤＡＴＡに対応して４１本のビット線（データ入出力線）が不揮発性半導体メモリ４０に設けられているが、第２モードにおいては、その４１本のビット線のうち２本が冗長ビット線として用いられる。すなわち、３９ビットの記憶データＤＡＴ２に対して、２ビットの冗長ビットが用意されている。リダンダンシ制御回路２２０Ｄは、不良ビットを冗長ビットで置換するために、データ入出力の切り替えを行う。その切り替え状態は、リダンダンシ制御信号ＲＤＮによって指定される。つまり、リダンダンシ制御回路２２０Ｄは、リダンダンシ制御信号ＲＤＮに応じてスイッチングを行い、３９ビットの記憶データＤＡＴ２と４１ビットの記憶データＤＡＴＡとの間で変換を行う。
【００７４】
データ読み出し時、スイッチ回路６０Ｄは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをリダンダンシ制御回路２２０Ｄに出力する。リダンダンシ制御回路２２０Ｄは、受け取った記憶データＤＡＴＡを３９ビットの記憶データＤＡＴ２に変換し、その記憶データＤＡＴ２を第２ＥＣＣ回路２１０Ｄに出力する。第２ＥＣＣ回路２１０Ｄは、第３の例における第２ＥＣＣ回路２１０Ｃと同様に動作し、データ本体ＤＡＴをスイッチ回路５０Ｄに出力する。スイッチ回路５０Ｄは、第２ＥＣＣ回路２１０Ｄから出力されるデータ本体ＤＡＴをコントローラ１０に送る。
【００７５】
３−５．第５の例
図９は、第５の例を示している。本例において、付加ビット制御回路２０Ｅは、スイッチ回路５０Ｅ、６０Ｅ、データ反転制御回路１２０Ｅ、リダンダンシ制御回路２２０Ｅ、及びＥＣＣ回路３１０を備えている。スイッチ回路５０Ｅ、６０Ｅは、モード指定信号ＭＯＤに応じてスイッチングを行う。データ反転制御回路１２０Ｅは、第１モード回路１００に含まれる。ＥＣＣ回路３１０は、図２中のエラー検出制御回路２１０に相当し、第２モード回路２００に含まれるが、第１モード回路１００によっても共有される。リダンダンシ制御回路２２０Ｅは、第２モード回路２００に含まれる。本例では、付加ビットＡＢは９ビットである（ｎａ＝９）。
【００７６】
（第１モード）
第１モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｅに入力される。モード指定信号ＭＯＤが第１モードを指定する場合、リダンダンシ制御回路２２０Ｅは非活性化されてもよい。
【００７７】
データ書き込み時、ＥＣＣ回路３１０は、コントローラ１０からデータ本体ＤＡＴを受け取る。ＥＣＣ回路３１０は、６ビットＥＣＣ回路であり、受け取ったデータ本体ＤＡＴに関して６ビットのエラー訂正コードＥＣＣ３を算出する。更に、ＥＣＣ回路３１０は、データ本体ＤＡＴにエラー訂正コードＥＣＣ３を付加することによって、３８ビットの対象データＤＡＴ３を生成する。そして、ＥＣＣ回路３１０は、その対象データＤＡＴ３（＝ＤＡＴ＋ＥＣＣ３）をスイッチ回路５０Ｅに出力する。
【００７８】
スイッチ回路５０Ｅは、ＥＣＣ回路３１０から受け取る対象データＤＡＴ３をデータ反転制御回路１２０Ｅに出力する。データ反転制御回路１２０Ｅは、第４の例におけるデータ反転制御回路１２０Ｄと同様に動作し、３ビットの反転フラグＦＬを生成する。データ反転制御回路１２０Ｅは、対象データＤＡＴ３あるいはその反転データ／ＤＡＴ３に反転フラグＦＬを付加することによって、４１ビットの記憶データＤＡＴＡを生成する。そして、データ反転制御回路１２０Ｅは、その記憶データＤＡＴＡをスイッチ回路６０Ｅに出力する。スイッチ回路６０Ｅは、データ反転制御回路１２０Ｅから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００７９】
データ読み出し時、スイッチ回路６０Ｅは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをデータ反転制御回路１２０Ｅに出力する。データ反転制御回路１２０Ｅは、第４の例におけるデータ反転制御回路１２０Ｄと同様に動作し、対象データＤＡＴ３をスイッチ回路５０Ｅに出力する。スイッチ回路５０Ｅは、データ反転制御回路１２０Ｅから出力される対象データＤＡＴ３をＥＣＣ回路３１０に出力する。
【００８０】
ＥＣＣ回路３１０は、対象データＤＡＴ３（＝ＤＡＴ＋ＥＣＣ３）を受け取る。ＥＣＣ回路３１０は、その対象データＤＡＴ３に含まれるエラー訂正コードＥＣＣ３に基づいて、対象データＤＡＴ３に含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、ＥＣＣ回路３１０は、データ本体ＤＡＴをそのままコントローラ１０に出力する。１ビットエラーが検出された場合、ＥＣＣ回路３１０は、そのエラーを訂正し、復元されたデータ本体ＤＡＴをコントローラ１０に出力する。
【００８１】
（第２モード）
第２モードを指定するモード指定信号ＭＯＤが付加ビット制御回路２０Ｅに入力される。モード指定信号ＭＯＤが第２モードを指定する場合、データ反転制御回路１２０Ｅは非活性化されてもよい。
【００８２】
データ書き込み時、ＥＣＣ回路３１０は、コントローラ１０からデータ本体ＤＡＴを受け取る。ＥＣＣ回路３１０は、６ビットＥＣＣ回路であり、受け取ったデータ本体ＤＡＴに関して６ビットのエラー訂正コードＥＣＣ３を算出する。更に、ＥＣＣ回路３１０は、データ本体ＤＡＴにエラー訂正コードＥＣＣ３を付加することによって、３８ビットの記憶データＤＡＴ３を生成する。そして、ＥＣＣ回路３１０は、その記憶データＤＡＴ３（＝ＤＡＴ＋ＥＣＣ３）をスイッチ回路５０Ｅに出力する。
【００８３】
スイッチ回路５０Ｅは、ＥＣＣ回路３１０から受け取る記憶データＤＡＴ３をリダンダンシ制御回路２２０Ｅに出力する。本例では、３８ビットの記憶データＤＡＴ３に対して、３ビットの冗長ビットが用意されている。リダンダンシ制御回路２２０Ｅは、第４の例におけるリダンダンシ制御回路２２０Ｄと同様に動作し、記憶データＤＡＴ３を４１ビットの記憶データＤＡＴＡに変換する。スイッチ回路６０Ｅは、リダンダンシ制御回路２２０Ｅから出力される記憶データＤＡＴＡをデータ読み書き回路３０に出力する。
【００８４】
データ読み出し時、スイッチ回路６０Ｅは、不揮発性半導体メモリ４０から読み出される記憶データＤＡＴＡをリダンダンシ制御回路２２０Ｅに出力する。リダンダンシ制御回路２２０Ｅは、受け取った記憶データＤＡＴＡを３８ビットの記憶データＤＡＴ３に変換し、その記憶データＤＡＴ３をスイッチ回路５０Ｅに出力する。スイッチ回路５０Ｅは、リダンダンシ制御回路２２０Ｅから出力される記憶データＤＡＴ３をＥＣＣ回路３１０に出力する。
【００８５】
ＥＣＣ回路３１０は、記憶データＤＡＴ３（＝ＤＡＴ＋ＥＣＣ３）を受け取る。ＥＣＣ回路３１０は、その記憶データＤＡＴ３に含まれるエラー訂正コードＥＣＣ３に基づいて、記憶データＤＡＴ３に含まれるデータ本体ＤＡＴに関するエラー検出を行う。エラーが無ければ、ＥＣＣ回路３１０は、データ本体ＤＡＴをそのままコントローラ１０に出力する。１ビットエラーが検出された場合、ＥＣＣ回路３１０は、そのエラーを訂正し、復元されたデータ本体ＤＡＴをコントローラ１０に出力する。
【００８６】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００８７】
１    データ処理装置
１０    コントローラ
２０、２０Ａ〜２０Ｅ    付加ビット制御回路
３０    データ読み書き回路
４０    不揮発性半導体メモリ
５０Ａ〜５０Ｅ    スイッチ回路
６０Ａ〜６０Ｅ    スイッチ回路
１００  第１モード回路
１１０Ｃ〜１１０Ｄ  第１ＥＣＣ回路
１２０、１２０Ａ〜１２０Ｅ  データ反転制御回路
２００  第２モード回路
２１０  エラー検出制御回路
２１０Ａ  ＥＣＣ回路
２１０Ｂ  パリティ回路
２１０Ｃ〜２１０Ｄ  第２ＥＣＣ回路
２２０Ｄ〜２２０Ｅ  リダンダンシ制御回路
３１０    ＥＣＣ回路
ＡＢ      付加ビット
ＡＤＤ    アドレス信号
ＣＯＮ    制御信号
ＥＣＣ    エラー訂正コード
ＥＤ      エラー検出コード
ＦＬ      反転フラグ
ＤＡＴ    データ本体
ＤＡＴＡ  記憶データ
ＭＯＤ    モード指定信号
ＰＢ      パリティビット
ＲＤＮ    リダンダンシ制御信号
Ｒ１      第１データ領域
Ｒ２      第２データ領域
【図１】
2010218447.tif 000003
【図２】
2010218447.tif 000004
【図３】
2010218447.tif 000005
【図４】
2010218447.tif 000006
【図５】
2010218447.tif 000007
【図６】
2010218447.tif 000008
【図７】
2010218447.tif 000009
【図８】
2010218447.tif 000010
【図９】
2010218447.tif 000011