(57)【要約】【課題】データ領域の効率的な使用を可能とし、かつ、読み出しデータの信頼性を高めることが可能な不揮発性記憶装置、不揮発性記憶システムおよび不揮発性記憶装置の制御方法を提供すること。【解決手段】不揮発性記憶装置１は、データを保持する複数のデータ領域１３と、データ領域１３の各々に対応して備えられ、データ領域１３に保持されるデータに関するエラー訂正コードＥＣＣを保持するＥＣＣ領域１４と、入力されるコード生成コマンドＣＭＤに応じて、データ領域１３に保持される全てのデータに関するエラー訂正コードＥＣＣを生成しＥＣＣ領域１４へ保持するエラー訂正コード生成部２と、エラー訂正コードＥＣＣが生成されていることを検知する検知回路１５と、検知回路１５で検知動作が行われることに応じて、データ領域１３から読み出されるデータをエラー訂正コードＥＣＣを用いて訂正する読出し部３とを備える。【選択図】図１
2008310896.tif 000002
【特許請求の範囲】
【請求項１】
データを保持する複数のデータ領域と、
前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域と
を備える不揮発性記憶装置において、
入力されるコード生成コマンドに応じて、前記データ領域に保持される全ての前記データに関する前記エラー訂正コードを生成し前記ＥＣＣ領域へ保持するエラー訂正コード生成部と、
前記エラー訂正コードが生成されていることを検知する検知回路と、
前記検知回路で検知動作が行われることに応じて、前記データ領域から読み出される前記データを前記エラー訂正コードを用いて訂正する読出し部と
を備えることを特徴とする不揮発性記憶装置。
【請求項２】
前記エラー訂正コード生成部は前記エラー訂正コードの生成に際してフラグ情報を生成し、
前記検知回路は前記フラグ情報に応じて前記エラー訂正コードが生成されていることを検知する
ことを特徴とする請求項１に記載の不揮発性記憶装置。
【請求項３】
前記ＥＣＣ領域は前記フラグ情報を格納し、
前記検知回路は前記ＥＣＣ領域から前記フラグ情報が入力される
ことを特徴とする請求項２に記載の不揮発性記憶装置。
【請求項４】
前記検知回路は、
前記ＥＣＣ領域に保持される前記エラー訂正コードの全ビットが同一ビットである場合には前記エラー訂正コードが生成されていない旨の検知結果を出力し、
前記ＥＣＣ領域に保持される前記エラー訂正コードの全ビットのうち少なくとも１ビットが異なる場合には前記エラー訂正コードが生成されている旨の検知結果を出力することを特徴とする請求項１に記載の不揮発性記憶装置。
【請求項５】
前記エラー訂正コード生成部は、
前記エラー訂正コードを生成するコード生成回路と、
前記コード生成回路に入力される前記データを保持するバッファと、
前記コード生成コマンドに応じて、前記データ領域に保持される全ての前記データを前記バッファへ入力する入力経路と
を備えることを特徴とする請求項１に記載の不揮発性記憶装置。
【請求項６】
前記バッファは、
前記コード生成コマンドの入力と同時期に外部から前記バッファへ入力される前記データと、前記入力経路を介して前記バッファへ入力される前記データとを結合して前記コード生成回路へ出力することを特徴とする請求項５に記載の不揮発性記憶装置。
【請求項７】
前記読出し部は、
前記データ領域から読み出される前記データを前記エラー訂正コードを用いて訂正する訂正回路と、
前記訂正回路の出力と前記データ領域の出力とが入力され、前記検知回路から前記エラー訂正コードが生成されていない旨が報知される場合には前記データ領域の出力を選択して出力し、前記検知回路から前記エラー訂正コードが生成されている旨が報知される場合には前記訂正回路の出力を選択して出力するセレクタと
を備えることを特徴とする請求項１に記載の不揮発性記憶装置。
【請求項８】
データを保持する複数のデータ領域と、
前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域と
を備える不揮発性記憶システムにおいて、
入力されるコード生成コマンドに応じて、前記データ領域に保持される全ての前記データに関する前記エラー訂正コードを生成し前記ＥＣＣ領域へ保持するエラー訂正コード生成部と、
前記エラー訂正コードが生成されていることを検知する検知回路と、
前記検知回路で検知動作が行われることに応じて、前記データ領域から読み出される前記データを前記エラー訂正コードを用いて訂正する読出し部と
を備えることを特徴とする不揮発性記憶システム。
【請求項９】
前記検知回路において検知動作が行われることに応じて、前記データ領域の前記データが書き込まれていない空き領域に対して新たな前記データの追加書き込みを禁止することを特徴とする請求項８に記載の不揮発性記憶システム。
【請求項１０】
データを保持する複数のデータ領域と、
前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域と
を備える不揮発性記憶装置の制御方法において、
前記データ領域へのデータの書き込みまたは読み出しを行うステップと、
前記エラー訂正コードを生成する旨のコード生成コマンドの入力に応じて、前記データ領域に保持される全ての前記データから前記エラー訂正コードを生成し前記ＥＣＣ領域に保持するステップと、
前記エラー訂正コードが生成されることに応じて、前記データ領域から前記データを読み出す際に、前記エラー訂正コードを用いて前記データを訂正するステップと
を備えることを特徴とする不揮発性記憶装置の制御方法。
【請求項１１】
前記コード生成コマンドが入力されることに応じて、前記データ領域の前記データが書き込まれていない空き領域に対して新たな前記データの追加書き込みを禁止することを特徴とする請求項１０に記載の不揮発性記憶装置の制御方法。
【請求項１２】
前記エラー訂正コードを生成するステップは、
前記データ領域に書き込まれた全ての前記データを読み出すステップと、
読み出された前記データと、前記コード生成コマンドと同時期に外部から入力される外部入力データとを結合して結合データを生成するステップと、
前記結合データから前記エラー訂正コードを生成するステップと
を備えることを特徴とする請求項１０に記載の不揮発性記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性記憶装置、不揮発性記憶システムおよび不揮発性記憶装置の制御方法に関し、特に、データ領域の効率的な使用を可能とし、かつ、読み出しデータの信頼性を高めることが可能な技術に関するものである。
【背景技術】
【０００２】
不揮発性記憶装置の信頼性向上のために、エラー訂正コードが用いられている。エラー訂正コードは、所定のデータ領域に保持される全データを用いて生成される。生成されたエラー訂正コードは、各々のデータ領域に対応して備えられるＥＣＣ領域に保持される。データ領域からデータを読み出す際には、ＥＣＣ領域に保持されたエラー訂正コードを用いて、読み出されるデータのエラー検出およびエラー訂正が行われる。
【０００３】
尚、上記の関連技術として特許文献１および２が開示されている。
【特許文献１】特開２００４−２２０６７６号公報
【特許文献２】特開２００３−２４８６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データ領域にデータの追加書き込みをすることにより、エラー訂正コードは更新される。しかしエラー訂正コードを保持するＥＣＣ領域は、上書きすることができない不揮発性記憶素子で構成されているため、エラー訂正コードの書込みは１回限りとされる。するとエラー訂正コードを生成し、ＥＣＣ領域へ書込みを行った後においては、更新されたエラー訂正コードを上書きすることができないため、データ領域へのデータの追加書き込みが禁止される。すると、データ領域の効率的な使用ができないため問題である。
【０００５】
本発明は前記背景技術に鑑みなされたものであり、データ領域の効率的な使用を可能とし、かつ、読み出しデータの信頼性を高めることが可能な不揮発性記憶装置、不揮発性記憶システムおよび不揮発性記憶装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記目的を達成するためになされた本発明に係る不揮発性記憶装置は、データを保持する複数のデータ領域と、前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域とを備える不揮発性記憶装置において、入力されるコード生成コマンドに応じて、前記データ領域に保持される全ての前記データに関する前記エラー訂正コードを生成し前記ＥＣＣ領域へ保持するエラー訂正コード生成部と、前記エラー訂正コードが生成されていることを検知する検知回路と、前記検知回路で検知動作が行われることに応じて、前記データ領域から読み出される前記データを前記エラー訂正コードを用いて訂正する読出し部とを備えることを特徴とする。
【０００７】
また本発明に係る不揮発性記憶システムは、データを保持する複数のデータ領域と、前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域とを備える不揮発性記憶システムにおいて、入力されるコード生成コマンドに応じて、前記データ領域に保持される全ての前記データに関する前記エラー訂正コードを生成し前記ＥＣＣ領域へ保持するエラー訂正コード生成部と、前記エラー訂正コードが生成されていることを検知する検知回路と、前記検知回路で検知動作が行われることに応じて、前記データ領域から読み出される前記データを前記エラー訂正コードを用いて訂正する読出し部とを備えることを特徴とする。
【０００８】
本発明に係る不揮発性記憶装置および不揮発性記憶システムでは、データを保持する複数のデータ領域と、データ領域の各々に対応して備えられるＥＣＣ領域とが備えられる。データ領域にはデータが書き込まれる。データの書込みには、初回書込みと追加書込みとが存在する。初回書込みとはデータ領域に初めてデータを書き込む動作である。また追加書込みとは、初回書込みが行われたデータ領域の空き領域に対して、追加してデータを書き込む動作である。また追加書込みは、空き領域が存在する限り、複数回可能とされる。
【０００９】
またＥＣＣ領域には、対応するデータ領域に保持されているデータに関するエラー訂正コードが保持される。エラー訂正コードとは、データ領域から読み出されるデータの誤りを検出・訂正するための情報である。なお、データ領域およびＥＣＣ領域へは、データの上書きをすることはできない。
【００１０】
エラー訂正コード生成部には、コード生成コマンドが入力される。コード生成コマンドは不揮発性記憶装置の外部から入力される。またコード生成コマンドは任意のタイミングで入力することが可能とされる。よってコード生成コマンドの入力は、データ領域への初回書込みが行われた後でもよいし、データ領域への追加書込みが行われる際と同時でもよいし、追加書込みが行われた後でもよい。
【００１１】
コード生成コマンドが入力されることに応じて、エラー訂正符号生成回路は、データ領域に保持される全てのデータを用いてエラー訂正コードを生成する。ここで全てのデータとは、データ領域に初回書込みデータと追加書込みデータとが保持されている場合には、それら全てのデータを指す。またコード生成コマンドと同時に入力される追加データがあれば、その追加データも含むデータを指す。すなわち、コード生成コマンドが入力された時点における、データ領域に保持されるべき全てのデータを指している。
【００１２】
検知回路は、エラー訂正コードの生成の有無を検知する。読出し部は、検知回路で検知動作が行われることに応じて、データ領域から読み出されるデータをエラー訂正コードを用いて訂正する。
【００１３】
動作を説明する。エラー訂正コードは、データ領域に保持される全てのデータを用いて生成されるため、データ領域にデータの追加書き込みが行われると、エラー訂正コードは更新される。しかしエラー訂正コードを保持するＥＣＣ領域は、上書きすることができない不揮発性記憶素子で構成されているため、エラー訂正コードをＥＣＣ領域に一度書き込んだ後においては、更新されたエラー訂正コードを上書きすることができない。よってエラー訂正コードをＥＣＣ領域に一度書き込んだ後においては、データ領域へのデータの追加書き込みをすることができない。
【００１４】
コード生成コマンドが入力される前の期間では、エラー訂正コードの生成・書込みはまだ行われていないため、データ領域に追加書込みをすることが可能とされる。また検知回路では、エラー訂正コードが生成されていないことが検知される。また読出し部では、エラー訂正コードが未生成のため、データ領域から読み出されるデータに対する訂正は行われない。
【００１５】
そしてコード生成コマンドが入力されると、エラー訂正コード生成部では、エラー訂正コードが生成され、生成されたエラー訂正コードはＥＣＣ領域に書き込まれる。
【００１６】
コード生成コマンドが入力された後の期間においては、ＥＣＣ領域へエラー訂正コードが書き込まれているため、データ領域に追加書込みをすることはできない。そして検知回路では、エラー訂正コードが生成されていることが検知される。また読出し部では、検知回路において検知動作が行われることに応じて、データ領域から読み出されるデータをエラー訂正コードを用いて訂正した上で出力する。
【００１７】
また本発明に係る不揮発性記憶装置の制御方法は、データを保持する複数のデータ領域と、前記データ領域の各々に対応して備えられ、前記データ領域に保持される前記データに関するエラー訂正コードを保持するＥＣＣ領域とを備える不揮発性記憶装置の制御方法において、前記データ領域へのデータの書き込みまたは読み出しを行うステップと、前記エラー訂正コードを生成する旨のコード生成コマンドの入力に応じて、前記データ領域に保持される全ての前記データから前記エラー訂正コードを生成し前記ＥＣＣ領域に保持するステップと、前記エラー訂正コードが生成されることに応じて、前記データ領域から前記データを読み出す際に、前記エラー訂正コードを用いて前記データを訂正するステップとを備えることを特徴とする。
【００１８】
コード生成コマンドの入力前においては、エラー訂正コードの生成・書込みはまだ行われていないため、データ領域に追加書込みをすることが可能とされる。またデータ領域から読み出されるデータに対する訂正は行われない。コード生成コマンドが入力されると、前記データ領域に保持される全ての前記データから前記エラー訂正コードが生成される。コード生成コマンドが入力された後の期間においては、ＥＣＣ領域へエラー訂正コードが書き込まれているため、データ領域に追加書込みをすることはできない。そして前記データ領域から読み出される前記データはエラー訂正コードを用いて訂正される。
【００１９】
以上より、データ領域を、コード生成コマンド入力前の期間においては追加書き込みが可能なデータ領域として用い、コード生成コマンド入力後の期間においては高い読み出しの信頼性を有するデータ領域として用いることができる。すなわちコード生成コマンドによって、任意のタイミングで、データ領域の状態を追加書き込みが可能な状態から高い読み出しの信頼性を有する状態へ切り替えることができる。これにより、データ領域への上書きを可能とすることと、データ読み出しの高信頼性の得ることという、相反する２つの要望を両立することができる。
【発明の効果】
【００２０】
本発明によれば、データ領域の効率的な使用を可能とし、かつ、読み出しデータの信頼性を高めることが可能な不揮発性記憶装置、不揮発性記憶システムおよび不揮発性記憶装置の制御方法を提供することができる。
【発明を実施するための最良の形態】
【００２１】
本発明の原理図を図１に示す。フラッシュメモリ１Ｇは、データ領域１３、ＥＣＣ領域１４、検知回路１５、エラー訂正コード生成部２、読出し部３を備える。なおデータ領域１３およびＥＣＣ領域１４は、上書きすることができない不揮発性記憶素子で構成されている。
【００２２】
データ領域１３には、外部から第１データＩＤ１および第２データＩＤ２が順次入力される。まず第１データＩＤ１が入力されると、データ領域１３に初回書込みされる。次に第２データＩＤ２が入力されると、データ領域１３の空き領域に対して、追加書き込みされる。なお追加書込みは、空き領域が存在する限り複数回可能とされるため、第２データＩＤ２以降のデータが追加書き込みされるとしてもよい。またデータ領域１３には、フラッシュメモリ１Ｇの外部に備えられる不図示のメモリコントローラ等から、コード生成コマンドＣＭＤが入力される。なおコード生成コマンドＣＭＤは、任意のタイミングで入力可能とされる。
【００２３】
エラー訂正コード生成部２には、データ領域１３から第１データＩＤ１および第２データＩＤ２が入力されると共に、外部からコード生成コマンドＣＭＤが入力される。エラー訂正コード生成部２で生成されたエラー訂正コードＥＣＣおよびフラグ信号ＦＳは、ＥＣＣ領域１４に入力・保持される。ＥＣＣ領域１４から出力されるエラー訂正コードＥＣＣは読出し部３へ入力され、ＥＣＣ領域１４から出力されるフラグ信号ＦＳは検知回路１５へ入力される。検知回路１５からは検知信号ＤＳが出力される。読出し部３には第１データＩＤ１および第２データＩＤ２、エラー訂正コードＥＣＣおよび検知信号ＤＳが入力され、出力データＯＤが出力される。
【００２４】
フラッシュメモリ１Ｇの動作を説明する。エラー訂正コードＥＣＣは、データ領域１３に保持される全てのデータを用いて生成されるため、データ領域１３にデータの追加書き込みが行われると、エラー訂正コードＥＣＣは更新される。しかしエラー訂正コードＥＣＣを保持するＥＣＣ領域１４は、上書きすることができない不揮発性記憶素子で構成されているため、エラー訂正コードＥＣＣをＥＣＣ領域１４に一度書き込んだ後においては、その後に更新されたエラー訂正コードＥＣＣをＥＣＣ領域１４に上書きすることができない。よってＥＣＣ領域１４にエラー訂正コードＥＣＣを一度書き込んだ後においては、データ領域１３へのデータの追加書き込みをすることができない。
【００２５】
コード生成コマンドＣＭＤが入力される前の期間では、エラー訂正コード生成部２は動作停止状態とされ、エラー訂正コードＥＣＣおよびフラグ信号ＦＳの生成・書込みはまだ行われていないため、データ領域１３にデータの初回書込みおよび追加書込みをすることが可能とされる。よって外部から第１データＩＤ１が入力されるとデータ領域１３に初回書込みされ、その後第２データＩＤ２が入力されるとデータ領域１３の空き領域に追加書込みされる。またこの期間では、検知回路１５は、フラグ信号ＦＳが生成されていないことを検知し、エラー訂正コードＥＣＣが生成されていない旨の検知信号ＤＳを出力する。読出し部３は、検知信号ＤＳに応じて、データ領域１３から読み出される第１データＩＤ１および第２データＩＤ２を訂正せずに出力データＯＤとして出力する。
【００２６】
そしてコード生成コマンドＣＭＤが入力されることに応じて、エラー訂正コードＥＣＣおよびフラグ信号ＦＳの生成が開始される。まず、データ領域１３に保持されている全データである第１データＩＤ１および第２データＩＤ２がコード生成コマンドＣＭＤに応じて読み出され、エラー訂正コード生成部２へ入力される。エラー訂正コード生成部２では、第１データＩＤ１および第２データＩＤ２を元に、エラー訂正コードＥＣＣおよびフラグ信号ＦＳを生成する。生成されたエラー訂正コードＥＣＣおよびフラグ信号ＦＳは、ＥＣＣ領域１４に書き込まれる。
【００２７】
コード生成コマンドＣＭＤが入力された後の期間では、検知回路１５において、フラグ信号ＦＳによってエラー訂正コードＥＣＣが生成されていることが検知される。そして検知回路１５からはその旨を報知する検知信号ＤＳが出力される。読出し部３は、検知信号ＤＳに応じて、データ領域１３から読み出される第１データＩＤ１および第２データＩＤ２をエラー訂正コードＥＣＣを用いて訂正した上で、出力データＯＤとして出力する。
【００２８】
以上より、データ領域１３を、コード生成コマンドＣＭＤ入力前の期間においては追加書き込みが可能なデータ領域として用い、コード生成コマンドＣＭＤ入力後の期間においては高い読み出しの信頼性を有するデータ領域として用いることができる。すなわちコード生成コマンドＣＭＤによって、任意のタイミングで、データ領域１３の状態を追加書き込みが可能な状態から高い読み出しの信頼性を有する状態へ切り替えることができる。これにより、データ領域へのデータ上書きの要請と、データ領域からのデータ読み出しの高信頼性の要望という、相反する２つの要望を両立することができるフラッシュメモリ１Ｇを構成できる。
【００２９】
本発明の実施形態を図２に示す。フラッシュメモリ１は、エラー訂正コード生成部２、読出し部３、データ用プログラムバッファ１２、データ領域１３、ＥＣＣ用プログラムバッファ１９、ＥＣＣ領域１４、検知回路１５、制御回路１６、コマンドデコーダ２２を備える。エラー訂正コード生成部２は、ライトバッファ１０、ＥＣＣ生成回路１１、スイッチ２０を備える。読出し部３は、シンドローム算出回路２３、訂正回路２４、セレクタ回路１８を備える。
【００３０】
コマンドデコーダ２２には、フラッシュメモリ１の外部に備えられる不図示のメモリコントローラ等からコード生成コマンドＣＭＤが入力され、コード生成指令ＧＣが出力される。またコード生成コマンドＣＭＤは任意のタイミングで入力することが可能とされる。ライトバッファ１０には、外部から第１データＩＤ１および第２データＩＤ２が順次入力される。またライトバッファ１０には、データ領域１３から出力された第１データＩＤ１および第２データＩＤ２が、内部経路３０およびスイッチ２０を介して入力される。ライトバッファ１０はユーザデータを蓄えるバッファであり、データ領域１３よりも大きい記憶容量を備える。ライトバッファ１０から出力される第１データＩＤ１および第２データＩＤ２は、ＥＣＣ生成回路１１およびデータ用プログラムバッファ１２に入力される。またＥＣＣ生成回路１１には、制御回路１６から制御信号Ｓ１が入力される。そしてＥＣＣ生成回路１１からは、エラー訂正コードＥＣＣおよびフラグ信号ＦＳが出力される。
【００３１】
データ用プログラムバッファ１２には第１データＩＤ１および第２データＩＤ２、検知信号ＤＳが入力される。データ用プログラムバッファ１２は、実際にデータ領域１３へ書き込まれるデータを蓄えるバッファである。またＥＣＣ用プログラムバッファ１９にはエラー訂正コードＥＣＣ、フラグ信号ＦＳが入力される。ＥＣＣ用プログラムバッファ１９は、実際にＥＣＣ領域１４へ書き込まれるデータを蓄えるバッファである。データ領域１３には、第１データＩＤ１および第２データＩＤ２が入力・保持される。またデータ領域１３にはコード生成指令ＧＣが入力される。またＥＣＣ領域１４には、エラー訂正コードＥＣＣおよびフラグ信号ＦＳが入力・保持される。検知回路１５にはＥＣＣ領域１４から出力されるフラグ信号ＦＳが入力され、検知回路１５からは検知信号ＤＳが出力される。制御回路１６には、コード生成指令ＧＣが入力され、制御信号Ｓ１が出力される。
【００３２】
データ領域１３からは、第１データＩＤ１および第２データＩＤ２が出力される。シンドローム算出回路２３には、エラー訂正コードＥＣＣ、第１データＩＤ１および第２データＩＤ２が入力され、シンドロームＳＤが出力される。訂正回路２４には、シンドロームＳＤ、第１データＩＤ１および第２データＩＤ２が入力され、訂正データＣＤが出力される。セレクタ回路１８には、訂正データＣＤ、第１データＩＤ１および第２データＩＤ２が入力され、出力データＯＤが出力される。
【００３３】
図３に、データ領域１３およびＥＣＣ領域１４の詳細図を示す。データ領域１３は複数のセクタ１３ａないし１３ｃを備える。またＥＣＣ領域１４は、複数のセクタ１３ａないし１３ｃの各々に対応して、セクタ１４ａないし１４ｃを備える。ここでコード生成コマンドＣＭＤおよびコード生成指令ＧＣは、セクタナンバーの情報を有している。よってデータ領域１３は、コード生成指令ＧＣに含まれるセクタナンバーの情報に応じて、セクタ１３ａないし１３ｃの何れかを指定し、保持されているデータを読出すことができる。またＥＣＣ生成回路１１は、指定されたセクタから読み出されたデータを用いて、エラー訂正コードＥＣＣおよびフラグ信号ＦＳを生成する。また制御回路１６は、コード生成指令ＧＣに含まれるセクタナンバーの情報に応じて制御信号Ｓ１を出力する。制御信号Ｓ１に応じて、セクタ１３ａが指定された場合にはセクタ１４ａが選択され、セクタ１３ｂが指定された場合にはセクタ１４ｂが選択され、セクタ１３ｃが指定された場合にはセクタ１４ｃが選択される。そしてセクタ１４ａないし１４ｃのうちから選択されたセクタに、ＥＣＣ生成回路１１から出力されるエラー訂正コードＥＣＣおよびフラグ信号ＦＳが入力・保持される。以上より、セクタ１３ａないし１３ｃの何れかを指定してＥＣＣ生成回路１１を活性化し、エラー訂正コードＥＣＣを生成した上で、対応するセクタ１４ａないし１４ｃに生成したエラー訂正コードＥＣＣを書き込むことができる。
【００３４】
なおデータ領域１３のセクタ１３ａないし１３ｃ、およびＥＣＣ領域１４のセクタ１４ａないし１４ｃは、セクタ内の全ビットを一斉に”０”から”１”へ書き換えをすることはできるが、ビット単位で”０”から”１”への書き換えをすることが出来ない。従って一度書き込まれた”０”状態を”１”に変えることができないため、セクタにデータの上書きをすることは不可とされる。
【００３５】
フラッシュメモリ１の動作を説明する。例として、データ領域１３のセクタ１３ａにアクセスする場合を説明する。フラッシュメモリ１では、コード生成コマンドＣＭＤの入力タイミングに応じて３つの動作期間がある。第１にコード生成コマンドＣＭＤが入力される前の期間、第２にコード生成コマンドＣＭＤの入力時、第３にコード生成コマンドＣＭＤが入力された後の期間である。
【００３６】
まず第１に、コード生成コマンドＣＭＤが入力される前の期間について説明する。この期間では、ＥＣＣ領域１４のセクタ１４ａにはまだエラー訂正コードＥＣＣおよびフラグ信号ＦＳは書込まれていない。検知回路１５では、フラグ信号ＦＳが書き込まれていないことが検知され、その旨を報知するローレベルの検知信号ＤＳが検知回路１５から出力される。データ用プログラムバッファ１２は、ローレベルの検知信号ＤＳに応じて活性状態とされる。よってこの期間では、セクタ１３ａにデータ書込みをすることが可能とされる。またＥＣＣ生成回路１１は、制御信号Ｓ１が未入力のため不活性状態とされる。
【００３７】
外部から第１データＩＤ１が入力されると、ライトバッファ１０を介してデータ用プログラムバッファ１２およびＥＣＣ生成回路１１に入力される。データ用プログラムバッファ１２は、データ領域１３のセクタ１３ａに、第１データＩＤ１の初回書き込みを行う（図３、領域Ａ）。一方、ＥＣＣ生成回路１１は不活性状態であるため、ＥＣＣ生成回路１１では第１データＩＤ１に関するエラー訂正コードＥＣＣは生成されない。
【００３８】
またコード生成コマンドＣＭＤが入力される前の期間では、データ領域１３のセクタ１３ａに追加書込みをすることが可能である。よって外部から第２データＩＤ２が入力されると、データ用プログラムバッファ１２を介してセクタ１３ａの空き領域に追加書込みされる（図３、領域Ｂ）。
【００３９】
また読出し部３では、ローレベルの検知信号ＤＳに応じて、シンドローム算出回路２３および訂正回路２４は不活性状態にされると共に、セレクタ回路１８は入力元としてデータ領域１３を選択する。よってこの期間では、データ領域１３のセクタ１３ａから読み出される第１データＩＤ１および第２データＩＤ２は、訂正回路２４で訂正されることなく、セレクタ回路１８から出力データＯＤとして出力される。以上よりこの期間では、フラッシュメモリ１は、追加書き込みが可能なメモリとして使用可能とされる。
【００４０】
第２に、セクタ１３ａに対するコード生成コマンドＣＭＤが入力された時の動作について説明する。コマンドデコーダ２２は、入力されるコード生成コマンドＣＭＤをデコードし、セクタ１３ａに対するコード生成指令ＧＣを出力する。制御回路１６は、コード生成指令ＧＣの入力に応じて制御信号Ｓ１を出力し、ＥＣＣ生成回路１１を不活性状態から活性状態へ遷移させる。コード生成指令ＧＣの入力に応じて、データ領域１３のセクタ１３ａに保持されている全データである第１データＩＤ１および第２データＩＤ２が読み出される。またスイッチ２０は、コード生成指令ＧＣの入力に応じて導通状態とされるため、データ領域１３から読み出された第１データＩＤ１および第２データＩＤ２が、内部経路３０を介してライトバッファ１０へ保持される。
【００４１】
ライトバッファ１０に保持された第１データＩＤ１および第２データＩＤ２は、ＥＣＣ生成回路１１に入力される。ＥＣＣ生成回路１１は、第１データＩＤ１および第２データＩＤ２からエラー訂正コードＥＣＣおよびフラグ信号ＦＳを生成する。生成されたエラー訂正コードＥＣＣおよびフラグ信号ＦＳは、ＥＣＣ用プログラムバッファ１９を介してＥＣＣ領域１４のセクタ１４ａに書き込まれる（図３、領域Ｃ）。以上よりこの期間では、セクタ１３ａに保持される第１データＩＤ１および第２データＩＤ２についてのエラー訂正コードＥＣＣおよびフラグ信号ＦＳが生成され、ＥＣＣ領域１４のセクタ１４ａに書き込まれる。
【００４２】
第３に、コード生成コマンドＣＭＤが入力された後の期間において、セクタ１３ａにアクセスする場合を説明する。このとき検知回路１５では、フラグ信号ＦＳがセクタ１４ａに書き込まれていることが検知され、その旨を報知するハイレベルの検知信号ＤＳが検知回路１５から出力される。検知信号ＤＳはフラッシュメモリ１外部の不図示のメモリコントローラへ報知され、メモリコントローラはセクタ１３ａへのデータ書込みを禁止する。またデータ用プログラムバッファ１２は、ハイレベルの検知信号ＤＳに応じて不活性状態とされる。よってこの期間では、セクタ１３ａにデータ書込みをすることが不可とされる。
【００４３】
また読出し部３では、ハイレベルの検知信号ＤＳに応じて、シンドローム算出回路２３および訂正回路２４は活性状態にされると共に、セレクタ回路１８は入力元として訂正回路２４を選択する。セクタ１３ａから読み出された第１データＩＤ１および第２データＩＤ２は、シンドローム算出回路２３、訂正回路２４、セレクタ回路１８に入力される。シンドローム算出回路２３は、第１データＩＤ１および第２データＩＤ２とエラー訂正コードＥＣＣとからシンドロームＳＤを算出する。訂正回路２４は、シンドロームＳＤに基づいて、誤りがあるときには誤り訂正処理を行い、訂正データＣＤを出力する。セレクタ回路１８は、訂正データＣＤを出力データＯＤとして出力する。以上よりコード生成コマンドＣＭＤが入力された後の期間においては、セクタ１３ａから読み出される第１データＩＤ１および第２データＩＤ２が、エラー訂正コードＥＣＣを用いて訂正されるため、フラッシュメモリ１は高い読み出しの信頼性を有するメモリとして使用される。
【００４４】
以上の説明から明らかなように、本実施形態によれば、データ領域１３を、コード生成コマンドＣＭＤ入力前の期間においては追加書き込みが可能なデータ領域として用い、コード生成コマンドＣＭＤ入力後の期間においては高い読み出しの信頼性を有するデータ領域として用いることができる。すなわちコード生成コマンドＣＭＤによって、任意のタイミングで、データ領域１３の状態を追加書き込みが可能な状態から高い読み出しの信頼性を有する状態へ切り替えることができる。これにより、データ領域へのデータ上書きの要請と、データ領域からのデータ読み出しの高信頼性の要望という、相反する２つの要望を両立することができるフラッシュメモリ１を構成できる。
【００４５】
尚、本発明は前記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々の改良、変形が可能であることは言うまでもない。本実施形態では、コード生成コマンドＣＭＤが単独でコマンドデコーダ２２に入力される場合を説明したが、この形態に限られない。コード生成コマンドＣＭＤの入力と同時に、第３データＩＤ３がライトバッファ１０へ入力されるとしてもよい。ライトバッファ１０は、新たに入力された第３データＩＤ３と、内部経路３０を介して読み出された第１データＩＤ１および第２データＩＤ２とを結合された上で保持する。すなわちライトバッファ１０には、コード生成指令ＧＣが入力された時点においてデータ領域１３に保持されるべき全データである、第１データＩＤ１ないし第３データＩＤ３が保持される。そしてライトバッファ１０から出力された第１データＩＤ１ないし第３データＩＤ３を用いて、ＥＣＣ生成回路１１では、エラー訂正コードＥＣＣが生成される。またセクタ１３ａの空き領域には、ライトバッファ１０およびデータ用プログラムバッファ１２を介して第３データＩＤ３が追加書き込みされる。
【００４６】
また本実施形態では、コード生成コマンドＣＭＤを入力してフラッシュメモリ１を使用する場合を説明したが、この形態に限られず、コード生成コマンドＣＭＤを入力せずにフラッシュメモリ１を使用することも可能であることは言うまでもない。すなわち、高い読み出しの信頼性が必要な場合には、コード生成コマンドＣＭＤを入力してフラッシュメモリ１を使用する。また読出しデータのさらなる高信頼性は必要ないが、常時データの追加書き込みをする必要がある場合には、コード生成コマンドＣＭＤを入力せずにフラッシュメモリ１を使用する。これにより、コード生成コマンドＣＭＤの入力の有無で、フラッシュメモリ１の使い分けをすることができる。これにより、１種類のフラッシュメモリ１で、高い読み出しの信頼性を有するメモリと、常時データの追加書き込みが可能なメモリとの２種類のメモリを実現することができるため、種類ごとに不揮発性記憶装置を設計する必要がなく、コスト削減を図る事が可能となる。
【００４７】
また本実施形態では、検知回路１５は、ＥＣＣ領域１４に書き込まれたフラグ信号ＦＳによって、エラー訂正コードＥＣＣが生成されているか否かを判定するとしたが、この形態に限られない。検知回路１５は、ＥＣＣ領域１４に保持されているエラー訂正コードＥＣＣを直接監視することによって、エラー訂正コードＥＣＣが生成されているか否かを判定するとしてもよいことは言うまでもない。例えばＥＣＣ領域１４に保持されているエラー訂正コードＥＣＣのビットが全て”１”である場合にはエラー訂正コードＥＣＣが未生成・未書込みであると判定し、エラー訂正コードＥＣＣのビットの少なくとも１つが”０”である場合には、エラー訂正コードＥＣＣが生成・書込み済みであると判定することができる。これにより、フラグ信号ＦＳを省略することができ、ＥＣＣ領域１４からフラグ信号ＦＳを保持する領域を不要とすることができるため、ＥＣＣ領域１４の縮小化を図ることが可能となる。
【００４８】
また本実施形態では、コード生成コマンドＣＭＤおよびコード生成指令ＧＣは、セクタナンバーの情報を有しており、任意のセクタを指定してエラー訂正コードＥＣＣを生成する事が出来るとしたが、この形態に限られない。コード生成コマンドＣＭＤおよびコード生成指令ＧＣはセクタナンバーの情報を有さず、全てのセクタに対して一括にエラー訂正コードＥＣＣを生成する形態としてもよいことは言うまでもない。
【００４９】
なお、ＥＣＣ生成回路１１はコード生成回路の一例、ライトバッファ１０はバッファの一例、内部経路３０およびスイッチ２０は入力経路のそれぞれ一例である。
【図面の簡単な説明】
【００５０】
【図１】本発明の原理図である。
【図２】フラッシュメモリ１の回路図である。
【図３】データ領域１３およびＥＣＣ領域１４の詳細図である。
【符号の説明】
【００５１】
１３  データ領域
１４  ＥＣＣ領域
ＥＣＣ  エラー訂正コード
ＣＭＤ  コード生成コマンド
２  エラー訂正コード生成部
１５  検知回路
３  読出し部
１０  ライトバッファ
３０  内部経路
２０  スイッチ
２４  訂正回路
１８  セレクタ回路
【図１】
2008310896.tif 000003
【図２】
2008310896.tif 000004
【図３】
2008310896.tif 000005