説明

記憶装置及び電子機器

【課題】記憶されたデータについて高い信頼性を確保可能とする記憶装置、及びその記憶装置を装着して使用される電子機器を提供すること。
【解決手段】電子機器20に装着して使用される記憶装置であるSDメモリカード10であって、不揮発性メモリであるNAND型フラッシュメモリ15と、誤り訂正回路であるECC回路16と、を有し、誤り訂正回路は、電子機器20により発行された信頼性チェック要求に応じて、不揮発性メモリから読み出されたデータのエラーを検出し、不揮発性メモリの第1のブロックから読み出されたデータについて、閾値以上、或いは閾値より大きい数のエラーを誤り訂正回路が検出した場合に、誤り訂正回路による訂正を経た第1のブロックのデータを不揮発性メモリの第2のブロックへ移すとともに、アドレス変換テーブルに保持されている第1のブロックの物理アドレスを第2のブロックの物理アドレスへ変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置及び電子機器、特に、NAND型フラッシュメモリ等のフラッシュメモリを有する記憶装置の技術に関する。
【背景技術】
【0002】
従来、メモリカード等の記憶装置に、NAND型フラッシュメモリが使用されている。NAND型フラッシュメモリは、データの書き換えを繰り返すことによってセル(記憶素子)が劣化する場合がある。セルが劣化すると、書き込まれたデータと読み出されたデータとが一致しなくなる現象(エラー)が生じ易くなり、記憶されているデータの信頼性を低下させることになる。これに対して、従来、フラッシュメモリにおけるエラーの発生状況や書き換え回数を管理することにより、データの信頼性の向上を図る技術が提案されている。例えば、特許文献1には、エラーが発生したページを含むブロックをスペアブロックに代替させる技術が提案されている。特許文献2には、訂正可能なエラーの発生回数、訂正不可能なエラーの発生回数の少なくとも一方が閾値を超えた場合にメモリ素子が劣化したものと判断し、劣化が検出されたメモリ素子へのアクセスを制限する技術が提案されている。
【0003】
検出されたエラーが訂正不可能なものである場合、その時点において書き込まれているデータは消失したものとして扱われる。データの信頼性を向上させるには、訂正不可能なエラーが生じるより前に、書き込まれているデータを消失させないための措置を取り得ることが望ましい。また、データのエラーは、セルの劣化の他、データを書き込んでからの時間が経過することによっても生じる場合がある。従来の技術のように、書き込み及び読み出しのためのアクセスにてエラーをチェックする場合、アクセスが無い限りエラーのチェックがなされないこととなるため、アクセスが少ない領域については書き込みからの時間の経過によるエラーが生じる可能性が高くなる。さらに、従来の技術では、書き込みからの時間の経過によって生じるエラーもセル自体の劣化によって生じるエラーと同様に扱われることとなるため、データを入れ替えれば正常に使用可能なブロックであってもそれ以降使用されなくなる場合があるという問題も生じる。
【0004】
【特許文献1】特開平8−235028号公報
【特許文献2】特開平11−53266号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、記憶されたデータについて高い信頼性を確保可能とする記憶装置、及びその記憶装置を装着して使用される電子機器を提供することを目的とする。
【課題を解決するための手段】
【0006】
本願発明の一態様によれば、電子機器に装着して使用される記憶装置であって、データを記憶する不揮発性メモリと、不揮発性メモリへ書き込まれるデータの誤り訂正符号を生成し、不揮発性メモリから読み出されたデータのエラーを誤り訂正符号に基づいて検出及び訂正する誤り訂正回路と、を有し、誤り訂正回路は、電子機器により発行された信頼性チェック要求に応じて、不揮発性メモリから読み出されたデータのエラーを検出し、不揮発性メモリの第1のブロックから読み出されたデータについて、閾値以上、又は閾値より大きい数のエラーを誤り訂正回路が検出した場合に、誤り訂正回路による訂正を経た第1のブロックのデータを不揮発性メモリの第2のブロックへ移すとともに、論理アドレス及び物理アドレスを対応付けるアドレス変換テーブルに保持されている第1のブロックの物理アドレスを第2のブロックの物理アドレスへ変更することを特徴とする記憶装置が提供される。
【発明の効果】
【0007】
本発明によれば、記憶装置に記憶されたデータについて高い信頼性を確保できるという効果を奏する。
【発明を実施するための最良の形態】
【0008】
以下に添付図面を参照して、この発明に係る記憶装置及び電子機器の最良な実施の形態を詳細に説明する。
【0009】
(第1の実施の形態)
図1は、本発明の第1の実施の形態に係る記憶装置であるSDメモリカード10、及び電子機器20の構成を示すブロック図である。SDメモリカード10は、ホスト機器である電子機器20に装着して使用される。電子機器20は、例えばデジタルカメラである。なお、SDメモリカード10及び電子機器20は、本発明が属する分野の技術者によって、以下の説明要綱に基づき、適宜変形可能である。従って、以下の説明は、当該分野に対して開示される内容として広く理解されるべきであり、本発明を限定するものではない。
【0010】
SDメモリカード10は、ホストインターフェース11、マイクロプロセッサ12、RAM13、NAND型フラッシュメモリインターフェース14、NAND型フラッシュメモリ15、ECC(Error Correction Code)回路16を備える。また、SDメモリカード10は、電子機器20から入力されたデータ、及び電子機器20へ出力するためNAND型フラッシュメモリ15から取り出されたデータを一時的に保存する不図示のデータバッファを備える。電子機器20は、装着されるSDメモリカード10に対してデータの入出力等を行うためのハードウェア及びソフトウェアを備えている。電子機器20は、SDメモリカード10のホストインターフェース11と電気的に接続されている。
【0011】
ホストインターフェース11は、所定のプロトコルに従って、電子機器20との間でコマンド、アドレス及びデータ等の授受を行う。NAND型フラッシュメモリ15は、データや管理データを記憶する不揮発性メモリである。NAND型フラッシュメモリインターフェース14は、NAND型フラッシュメモリ15を制御するとともに、データバッファに保存されたデータをNAND型フラッシュメモリ15に保存させる。また、電子機器20からのデータの読み出し要求に対して、NAND型フラッシュメモリインターフェース14は、NAND型フラッシュメモリ15からデータを読み出し、データバッファに保存させる。
【0012】
マイクロプロセッサ12は、ホストインターフェース11、NAND型フラッシュメモリインターフェース14、RAM13、データバッファを制御する。RAM13は、論理アドレス及び物理アドレスを対応付けるアドレス変換テーブルを保持する。ここで、論理アドレスは、電子機器20が発行し、かつ電子機器20側で管理されているアドレスとする。物理アドレスは、NAND型フラッシュメモリ15における実際のアドレスとする。
【0013】
ECC回路16は、NAND型フラッシュメモリ15へ書き込まれるデータの誤り訂正符号を生成し、NAND型フラッシュメモリ15から読み出されたデータのエラーを誤り訂正符号に基づいて検出及び訂正する誤り訂正回路として機能する。誤り訂正符号は、例えばリードソロモン(Read Solomon)符号である。リードソロモン符号を用いることにより、ECC回路16は、検出したエラーの数を取得することが可能である。ECC回路16は、取得したエラー数をマイクロプロセッサ12に通知する。
【0014】
図2は、データの信頼性チェックにおけるSDメモリカード10の動作を説明するフローチャートである。SDメモリカード10は、電子機器20から発行されたコマンドをホストインターフェース11において受信する(ステップS1)。ホストインターフェース11は、コマンドを受信したことをマイクロプロセッサ12に通知する。マイクロプロセッサ12は、受信したコマンドが信頼性チェックコマンド(信頼性チェック要求)か否かを判断する(ステップS2)。受信したコマンドが信頼性チェックコマンドでなかった場合、SDメモリカード10は、信頼性チェックを行わず、受信したコマンドに応じた処理を適宜実行する。
【0015】
受信したコマンドが信頼性チェックコマンドであった場合、エラーをチェックするチェックアドレスを、チェックを開始するアドレスに初期化する(ステップS3)。ここで、信頼性チェックの対象となる論理アドレス範囲は、信頼性チェックコマンドのパラメータにより指定可能であるものとする。次に、NAND型フラッシュメモリ15へのアクセスにより、チェックアドレスのデータを読み出す(ステップS4)。データの読み出しは、NAND型フラッシュメモリ15のデータを読み出す指示を、マイクロプロセッサ12からNAND型フラッシュメモリインターフェース14へ与えることにより行う。NAND型フラッシュメモリ15から読み出されるデータサイズは、ECC回路16が処理可能なデータサイズとする。ECC回路16は、NAND型フラッシュメモリ15から読み出されたデータのエラーを検出し、エラー数をマイクロプロセッサ12へ通知する(ステップS5)。
【0016】
マイクロプロセッサ12は、ECC回路16から通知されたエラー数が予め設定された閾値以下であるか否かを判断する(ステップS6)。ECC回路16から通知されたエラー数が閾値より大きい値であった場合、チェックアドレスのデータが含まれる元のブロック(第1のブロック)のデータを読み出す。読み出された第1のブロックのデータは、ECC回路16による訂正を経て、用意された新規のブロック(第2のブロック)へ移される(ステップS9)。さらに、アドレス変換テーブルに保持されている第1のブロックの物理アドレスを第2のブロックの物理アドレスへ変更することにより、アドレス変換テーブルを更新する(ステップS10)。これにより、第2のブロックに格納されたデータが有効なデータとして扱われる。
【0017】
ステップS6においてエラー数が閾値以下であった場合、及びステップS10においてアドレス変換テーブルを更新した場合、次に、信頼性チェックコマンドにより指定された論理アドレス範囲のチェックが完了したか否かを判断する(ステップS7)。指定された論理アドレス範囲のチェックが完了していない場合、チェックアドレスをインクリメントする(ステップS11)。そして、インクリメントされたチェックアドレスのデータを読み出し(ステップS4)、上述の手順を繰り返す。ステップS7において、指定された論理アドレス範囲のチェックが完了した場合、SDメモリカード10は、信頼性チェックの結果を電子機器20へ通知し(ステップS8)、信頼性チェックの処理を終了する。
【0018】
エラー数の閾値は、ユーザによって適宜設定可能とすることにより、ユーザが要請する信頼性の程度に応じた信頼性チェックが可能となる。エラー数の閾値としては、SDメモリカード10が持つデフォルト値を使用することとしても良い。なお、第1のブロックのデータを第2のブロックへ移し、アドレス変換テーブルを更新するのは、第1のブロックから読み出されたデータについて閾値より大きい数のエラーを検出した場合である他、閾値以上の数のエラーを検出した場合であっても良い。
【0019】
ステップS8では、例えば、エラー数が閾値を超えたことによるデータの移動があったか否か、指定された論理アドレス範囲において検出したエラー数などを、信頼性チェックの結果として通知する。例えば、信頼性チェックのたびに多くのエラーが継続して検出される場合や、書き込みからの経過時間が短いデータであってもエラーが検出されるような場合に、ユーザは、SDメモリカード10の寿命が近い等の判断が可能となる。本実施の形態のSDメモリカード10は、読み出しエラーが検出されたブロックを劣化したものとして使用を制限するわけではないため、データを入れ替えれば正常に使用可能なブロックであっても以後使用されなくなるということを回避できる。
【0020】
電子機器20からの信頼性チェックコマンドに応じて信頼性チェックを行うことにより、読み出されたデータが訂正不可能なエラーとなるより前に、エラーがあったブロックのデータを他のブロックへ移す。エラーが訂正可能であるうちにデータを移すことにより、書き込まれているデータの消失を低減させ、データの信頼性を向上させることが可能となる。また、信頼性チェックコマンドの受信により信頼性チェックを行うことで、データを書き込み及び読み出す通常のアクセスの多少に関係無くエラーをチェックできる。以上により、記憶されたデータについて高い信頼性を確保できるという効果を奏する。
【0021】
SDメモリカード10が持つメモリ空間の全てを信頼性チェックの対象とする場合、チェックには、ある程度の時間が必要となる。例えば、NAND型フラッシュメモリ15からの読み出し速度が20MB/秒であるとすると、容量が8GBのSDメモリカード10の全てのメモリをチェックする場合、7分程度の時間が必要となる。信頼性チェックコマンドにおいて信頼性チェックの対象となる論理アドレス範囲を指定可能とすることにより、SDメモリカード10に記憶されているデータの信頼性を選択的にチェックすることが可能となる。
【0022】
例えば、SDメモリカード10のファイルシステムが使用する重要なデータ(MBR(Master Boot Record)、PBR(Partition Boot Record)、FAT(File Allocation Tables)、Root Directory Entry、Sub‐Directory Entry等)は、メモリの全容量と比較して容量が小さいため、短時間で信頼性をチェック可能である。SDメモリカード10を起動する上で重要となるデータについて論理アドレスを指定することにより、短時間の信頼性チェックにより、SDメモリカード10の作動に関して高い信頼性が確保可能となる。なお、信頼性チェックは論理アドレス範囲を指定して行う場合に限られず、論理アドレス範囲を指定せずにSDメモリカード10のメモリ空間の全てを信頼性チェックの対象としても良い。
【0023】
(第2の実施の形態)
図3は、本発明の第2の実施の形態における電子機器20の動作を説明するフローチャートである。本実施の形態は、ユーザの指示に応じて信頼性チェックを実行することを特徴とする。まず、電子機器20にSDメモリカード10が装着された状態において、電子機器20は、メニューを提示する(ステップS21)。提示されるメニューには、信頼性チェックを実行する旨の項目が含まれている。ステップS22においてユーザが信頼性チェックの実行を選択しなかった場合、電子機器20は、ユーザが選択したメニューに応じた処理等を適宜実行する。ステップS22においてユーザが信頼性チェックの実行を選択した場合、電子機器20は、SDメモリカード10へ信頼性チェックコマンドを発行する(ステップS23)。
【0024】
信頼性チェックコマンドを発行してから、電子機器20は、SDメモリカード10からの信頼性チェックの結果を受信するまで待機する(ステップS24及びステップS25)。ステップS25において信頼性チェックの結果を受信すると、電子機器20は、表示手段等を用いて信頼性チェックの結果を出力し(ステップS26)、信頼性チェックのための動作を終了する。信頼性チェックの実行をユーザが指示可能とすることにより、ユーザの要望、例えば、SDメモリカード10に記憶させるデータの重要度等に応じてデータの信頼性向上を図れる。
【0025】
(第3の実施の形態)
図4は、本発明の第3の実施の形態における電子機器20の動作を説明するフローチャートである。本実施の形態は、電子機器20の電源が投入されるごとに信頼性チェックを実行することを特徴とする。まず、電子機器20の電源を投入し(ステップS31)、SDメモリカード10が装着されていることを認識すると、電子機器20は、SDメモリカード10のファイルシステムをチェックすることにより、ファイルシステムが使用するアドレス範囲及びクラスタを検知する(ステップS32)。
【0026】
電子機器20は、SDメモリカード10に対して信頼性チェックコマンドを発行する。信頼性チェックコマンドでは、ファイルシステムが使用する論理アドレス範囲をパラメータにより指定する(ステップS33)。信頼性チェックコマンドを発行してから、電子機器20は、SDメモリカード10からの信頼性チェックの結果を受信するまで待機する(ステップS34及びステップS35)。ステップS35において信頼性チェックの結果を受信すると、電子機器20は、表示手段等を用いて信頼性チェックの結果を出力し(ステップS36)、信頼性チェックのための動作を終了する。
【0027】
第1の実施の形態で説明するように、SDメモリカード10のファイルシステムが使用するMBR等の重要なデータは、短時間で信頼性をチェック可能である。本実施の形態では、SDメモリカード10を起動する上で重要となるデータについて、電子機器20の電源を投入するごとの短時間の信頼性チェックにより、高い信頼性を確保可能となる。
【0028】
(第4の実施の形態)
図5は、本発明の第4の実施の形態における電子機器20の動作を説明するフローチャートである。本実施の形態は、電子機器20がSDメモリカード10へ最後にアクセスしてからの経過時間に応じて信頼性チェックを実行することを特徴とする。まず、電子機器20にSDメモリカード10を装着する(ステップS41)と、電子機器20は、SDメモリカード10の識別番号を読み出す(ステップS42)。識別番号は、SDメモリカード10に対して個別に設定された番号であって、SDメモリカード10を識別するための識別情報である。識別番号としては、例えば、カード識別データ(Card Identification Date;CID)レジスタの情報を用いる。識別番号の読み出しは、SDメモリカード10が装着されるごとに行う。
【0029】
電子機器20は、SDメモリカード10へ最後にアクセスした日時を記憶している。電子機器20は、ステップS42で読み出された識別番号のSDメモリカード10について最後にアクセスがあった日時からの経過時間を算出する(ステップS43)。電子機器20には、信頼性チェックを行うか否かの閾値となる経過時間が予め設定されている。電子機器20は、かかる設定時間と算出した経過時間とを比較し、SDメモリカード10への最後のアクセスから所定の設定時間以上が経過したか否かを判断する(ステップS44)。
【0030】
ステップS44において設定時間以上の時間が経過していないと判断した場合、信頼性チェックのための動作を終了する。ステップS44において設定時間以上の時間が経過したと判断した場合、電子機器20は、SDメモリカード10に対して信頼性チェックコマンドを発行する(ステップS45)。信頼性チェックコマンドを発行してから、電子機器20は、SDメモリカード10からの信頼性チェックの結果を受信するまで待機する(ステップS46及びステップS47)。ステップS47において信頼性チェックの結果を受信すると、電子機器20は、表示手段等を用いて信頼性チェックの結果を出力し、(ステップS48)、信頼性チェックのための動作を終了する。
【0031】
SDメモリカード10への最後のアクセスからの経過時間に応じて信頼性チェックを実行することにより、書き込みからの時間の経過によるエラーの発生が想定される場合において信頼性向上を図れる。ステップS44における設定時間は、ユーザが適宜変更可能としても良い。設定時間を適宜設定可能とすることにより、ユーザの要望に応じてデータの信頼性向上を図れる。
【0032】
本発明に係る記憶装置は、SDメモリカード10に限られず、例えば他のメモリカードや他の記憶媒体であっても良い。電子機器20は、デジタルカメラに限られず、記憶装置に記憶された画像、動画、音声、ゲーム等の情報を扱う機器、例えば、パーソナルコンピュータ、デジタルビデオカメラや、MP3等の音楽機器、携帯電話等であっても良い。
【図面の簡単な説明】
【0033】
【図1】第1の実施の形態に係る記憶装置及び電子機器の構成を示すブロック図。
【図2】データの信頼性チェックにおけるSDメモリカードの動作を説明するフローチャート。
【図3】第2の実施の形態における電子機器の動作を説明するフローチャート。
【図4】第3の実施の形態における電子機器の動作を説明するフローチャート。
【図5】第4の実施の形態における電子機器の動作を説明するフローチャート。
【符号の説明】
【0034】
10 SDメモリカード、15 NAND型フラッシュメモリ、16 ECC回路、20 電子機器。

【特許請求の範囲】
【請求項1】
電子機器に装着して使用される記憶装置であって、
データを記憶する不揮発性メモリと、
前記不揮発性メモリへ書き込まれるデータの誤り訂正符号を生成し、前記不揮発性メモリから読み出されたデータのエラーを前記誤り訂正符号に基づいて検出及び訂正する誤り訂正回路と、を有し、
前記誤り訂正回路は、前記電子機器により発行された信頼性チェック要求に応じて、前記不揮発性メモリから読み出されたデータのエラーを検出し、
前記不揮発性メモリの第1のブロックから読み出されたデータについて、閾値以上、或いは閾値より大きい数のエラーを前記誤り訂正回路が検出した場合に、前記誤り訂正回路による訂正を経た前記第1のブロックのデータを前記不揮発性メモリの第2のブロックへ移すとともに、論理アドレス及び物理アドレスを対応付けるアドレス変換テーブルに保持されている前記第1のブロックの物理アドレスを前記第2のブロックの物理アドレスへ変更することを特徴とする記憶装置。
【請求項2】
信頼性チェックの対象となる論理アドレス範囲が前記信頼性チェック要求により指定可能であることを特徴とする請求項1に記載の記憶装置。
【請求項3】
請求項1又は2に記載の記憶装置を装着して使用され、前記記憶装置へ前記信頼性チェック要求を発行することを特徴とする電子機器。
【請求項4】
信頼性チェックの対象として、前記記憶装置のファイルシステムが使用するデータの論理アドレス範囲を前記信頼性チェック要求により指定可能であって、前記電子機器の電源が投入されるごとに前記信頼性チェック要求を発行することを特徴とする請求項3に記載の電子機器。
【請求項5】
前記記憶装置に保存された識別情報を、前記記憶装置が前記電子機器へ装着されるごとに読み出し、前記電子機器による前記記憶装置への最後のアクセスがあったときからの経過時間に応じて前記信頼性チェック要求を発行することを特徴とする請求項3又は4に記載の電子機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2010−79371(P2010−79371A)
【公開日】平成22年4月8日(2010.4.8)
【国際特許分類】
【出願番号】特願2008−243986(P2008−243986)
【出願日】平成20年9月24日(2008.9.24)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】