(57)【特許請求の範囲】
【請求項１】
フラッシュメモリに対するデータの書き込み動作時に、前記フラッシュメモリからアクセス単位のリード範囲として書き換え領域及び書き戻し領域のデータを読み出すリード手段と、
前記読み出されたデータのエラー検出を行なうエラー検出手段と、
前記エラー検出手段により前記書き換え領域のデータからエラーが検出された場合にはエラー訂正を実行せずに書き換え動作を実行させ、前記書き戻し領域のデータからエラーが検出された場合にはエラー訂正を実行する制御手段と、
前記書き換え動作により書き換えられたデータと、前記書き戻し領域から読み出されたデータまたは前記エラー訂正後のデータとを前記フラッシュメモリに書き込むライト手段と
を具備するデータ記憶装置。
【請求項２】
前記エラー検出手段により前記書き換え領域または前記書き戻し領域のデータのエラーが検出されたときに、エラー通知を行なうエラー通知手段を有する請求項１に記載のデータ記憶装置。
【請求項３】
前記フラッシュメモリのアクセスの統計情報を管理する統計情報管理手段を有し、
前記統計情報管理手段は、
前記エラー通知に応じてエラーが発生したメモリ領域を前記統計情報に反映させるように構成されている請求項２に記載のデータ記憶装置。
【請求項４】
前記制御手段は、
前記エラー検出手段により前記書き戻し領域のデータからエラーが検出されて、かつ当該エラーの訂正ができない場合には、前記書き込み動作を停止する請求項１から請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記制御手段は、
前記リード手段により前記フラッシュメモリから読み出されたデータをバッファメモリに格納し、
前記バッファメモリからの前記書き戻し領域のデータまたは前記エラー訂正後のデータを前記フラッシュメモリの書き込み領域に転送し、かつ前記書き換え動作により書き換えられたデータを前記書き込み領域に書き込むように前記ライト手段を制御する請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記制御手段は、
前記エラー検出手段により前記書き換え領域のデータからエラーが検出されたときに、エラーを含む前記書き換え領域のデータを前記バッファメモリに格納するように構成されている請求項５に記載のデータ記憶装置。
【請求項７】
前記制御手段は、
前記エラー訂正後のデータを前記バッファメモリに格納する請求項５または請求項６のいずれか１項に記載のデータ記憶装置。
【請求項８】
前記統計情報管理手段は、
前記エラー通知で指定されたメモリ領域を使用不可領域として管理するように構成されている請求項３に記載のデータ記憶装置。
【請求項９】
前記フラッシュメモリを更に具備する請求項１に記載のデータ記憶装置。
【請求項１０】
フラッシュメモリを備えたデータ記憶装置のデータ書き込み方法であって、
前記フラッシュメモリに対するデータの書き込み動作時に、前記フラッシュメモリからアクセス単位のリード範囲として書き換え領域及び書き戻し領域のデータを読み出し、
前記読み出されたデータのエラー検出を実行し、
前記書き換え領域のデータからエラーが検出された場合にはエラー訂正を実行せずに書き換え動作を実行させ、前記書き戻し領域のデータからエラーが検出された場合にはエラー訂正を実行し、
前記書き換え動作により書き換えられたデータと、前記書き戻し領域から読み出されたデータまたは前記エラー訂正後のデータとを前記フラッシュメモリに書き込むデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
【背景技術】
【０００２】
近年、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）の開発が推進されている。
【０００３】
ＳＳＤの書き込み動作には、論理的なアクセス単位であるクラスタ（cluster）のデータの中で、あるセクタ分のデータ（例えば３セクタ分のデータ）のみを書き換える（修正する）書き込み動作がある。この書き込み動作は、リードモディファイライト（read modify write : ＲＭＷ）動作と呼ぶことがある。
【０００４】
クラスタは、フラッシュメモリに一度にアクセスできるデータサイズの単位である。通常では、１クラスタは、物理的なアクセス単位であるセクタを複数セクタ分まとめたものであり、例えば８セクタ分から構成される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１９９７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＲＭＷ動作では、実際の書き込み動作の前に、対象アドレスのデータ（クラスタ単位のデータ）をフラッシュメモリから読み出してバッファメモリに退避させる。このリード動作時に、エラー検出を実行し、リードエラーが発生したときにはエラー訂正処理を行なう。エラー訂正処理はエラー検出処理と比較して多くの処理時間を要するため、エラー発生時にはＳＳＤの書き込み動作の処理効率が低下する可能性が高い。
【０００７】
本発明の目的は、書き込み動作の処理効率の向上を図ることができるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、データ記憶装置は、リード手段と、エラー検出手段と、制御手段と、ライト手段とを具備する。リード手段は、フラッシュメモリに対するデータの書き込み動作時に、前記フラッシュメモリからアクセス単位のリード範囲として書き換え領域及び書き戻し領域のデータを読み出す。エラー検出手段は、前記読み出されたデータのエラー検出を行なう。制御手段は、前記エラー検出手段により前記書き換え領域のデータからエラーが検出された場合にはエラー訂正を実行せずに書き換え動作を実行させ、前記書き戻し領域のデータからエラーが検出された場合にはエラー訂正を実行する。ライト手段は、前記書き換え動作により書き換えられたデータと、前記書き戻し領域から読み出されたデータまたは前記エラー訂正後のデータとを前記フラッシュメモリに書き込む。
【図面の簡単な説明】
【０００９】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関するフラッシュメモリコントローラの構成を説明するためのブロック図。
【図３】実施形態に関するＲＭＷ動作時のリード動作を説明するための図。
【図４】実施形態に関するＲＭＷ動作時の書き込み動作を説明するための図。
【図５】実施形態に関するＲＭＷ動作を説明するためのフローチャート。
【発明を実施するための形態】
【００１０】
以下図面を参照して、実施形態を説明する。
【００１１】
［データ記憶装置の構成］
図１は、実施形態のデータ記憶装置の構成を示すブロック図である。
【００１２】
図１に示すように、実施形態のデータ記憶装置はＳＳＤ（solid state drive）であり、ＳＳＤコントローラ１０と、NAND型フラッシュメモリ（フラッシュメモリ）２０と、ＤＲＡＭ（dynamic random access memory）２１とを有する。フラッシュメモリ２０は、ＳＳＤのデータ記憶媒体であり、複数のフラッシュメモリチップから構成されている。ＤＲＡＭ２１は、バッファメモリとして使用される。
【００１３】
ＳＳＤコントローラ１０は、フラッシュメモリコントローラ（以下、単にメモリコントローラと表記する）１１と、バッファマネージャモジュール１２と、ホストインターフェースコントローラ１３と、サブシステムモジュール１４とを有する。
【００１４】
メモリコントローラ１１は、フラッシュメモリ２０のリード／ライトデータのデータ転送制御を実行し、後述するように、統計情報管理モジュール２２を制御する（図２を参照）。バッファマネージャモジュール１２は、ＤＲＡＭ２１を制御し、バッファメモリとのデータ転送を制御する。
【００１５】
ホストインターフェースコントローラ１３は、ホストインターフェース１５を介して、ホストシステム３０とＳＳＤとのデータやコマンドの転送を制御する。ホストシステム３０は、例えばパーソナルコンピュータである。サブシステムモジュール１４は、マイクロプロセッサから構成されており、ＳＳＤコントローラ１０の全体的制御を実行する。サブシステムモジュール１４は、例えばホストシステム３０からのコマンドに応じて、データの書き込み動作及び読み出し動作に必要なコマンドをメモリコントローラ１１に出力する。
【００１６】
メモリコントローラ１１は、図２に示すように、エラー検出制御モジュール１６と、エラー訂正制御モジュール１７と、モディファイライト（ＭＷ）領域比較モジュール１８と、データ転送情報記憶モジュール１９とを有する。
【００１７】
エラー検出制御モジュール１６は、フラッシュメモリ２０から読み出されたデータのエラー検出を実行し、エラーを検出したときには統計情報管理モジュール２２にエラー情報を通知する（エラー通知と呼ぶ）。エラー情報は、ＲＭＷ動作時のリード対象であるフラッシュメモリ２０のデータ記憶領域（クラスタ単位）のエラー位置情報を含む。
【００１８】
統計情報管理モジュール２２は、フラッシュメモリ２０のアクセスの統計情報を管理し、エラー通知を統計情報に反映させる。即ち、統計情報管理モジュール２２は、エラー位置情報を統計情報として蓄積し、エラーが検出されたデータ記憶領域を使用不可として管理する。
【００１９】
エラー訂正制御モジュール１７は、ＭＷ領域比較モジュール１８からの書き換え領域を示す情報（アドレス）とエラー検出制御モジュール１６から取得されるエラー位置情報（アドレス）とに基づいて、エラー訂正を実行するか否かを判定する。エラー訂正制御モジュール１７は、エラー検出制御モジュール１６によりエラー検出された領域が書き換え領域の場合にはエラー訂正を実行せずに、エラー検出された領域が書き戻し領域の場合にはエラー訂正を実行する。
【００２０】
ＭＷ領域比較モジュール１８は、エラー検出制御モジュール１６から取得されるエラー位置情報（アドレス）と、データ転送情報記憶モジュール１９から取得した領域情報（アドレス）とを比較し、エラーが検出されたデータ記憶領域が書き換え領域であるか否かを判定する。データ転送情報記憶モジュール１９は、フラッシュメモリ２０から読み出したデータの記憶領域を示す領域情報（アドレス）を記憶する。
【００２１】
［データ記憶装置の動作］
以下、図２から図５を参照して、実施形態のデータ記憶装置の動作を説明する。
【００２２】
本実施形態では、コントローラ１０は、ホストシステム３０からのコマンドに応じてフラッシュメモリ２０にアクセスし、クラスタ（cluster）単位でデータの書き込み、読み出し動作を実行する。ホストシステム３０からのコマンドは、サブシステムモジュール１４により解読される。
【００２３】
ここで、本実施形態では、クラスタ単位でデータをフラッシュメモリ２０に書き込む場合に、クラスタ未満のサイズ（例えば３セクタ分）のデータを書き換える（modify:修正する）書き込み動作を、リードモディファイライト（read modify write）動作と呼び、ＲＭＷ動作と表記する。
【００２４】
図５のフローチャートに示すように、メモリコントローラ１１は、ＲＭＷ動作の要求（コマンド）をサブシステムモジュール１４から受け取ると、フラッシュメモリ２０のアクセス対象のデータ記憶領域からデータを読み出す（ブロック５０１）。メモリコントローラ１１は、通常では、フラッシュメモリ２０からセクタ単位にデータを読み出す。エラー検出制御モジュール１６は、フラッシュメモリ２０からリードされるセクタ単位のデータのエラー検出を実行する。
【００２５】
ここで、図３に示すように、ＲＭＷ動作時にリードされるクラスタ単位のデータ記憶領域（リード領域）１００は、書き戻し領域１００Ａ，１００Ｂ及びモディファイライト領域（書き換え領域）１１０からなる。書き戻し領域１００Ａ，１００Ｂは、書き換えしないデータの記憶領域である。また、書き換え領域１１０は、書き換え（修正）されるデータの記憶領域である。
【００２６】
メモリコントローラ１１は、エラー検出制御モジュール１６によりエラーが検出されない場合には、リードしたセクタ単位のデータを、バッファマネージャモジュール１２を介してＤＲＡＭ２１に格納する（ブロック５０２のＹＥＳ，５０７）。次に、メモリコントローラ１１は、ＤＲＡＭ２１に格納された書き戻し領域１００Ａ，１００Ｂのデータ及び書き換え対象のデータを、フラッシュメモリ２０のＲＭＷ領域（書き込み領域）に書き込む（ブロック５０８）。
【００２７】
ここで、図４に示すように、フラッシュメモリ２０のＲＭＷ領域２００は、書き戻し領域２００Ａ，２００Ｂ及び書き換え領域（ＭＷエリア）２１０からなる。書き戻し領域２００Ａには、リード領域１００の書き戻し領域１００Ａから読み出されたデータが書き込まれる。また、書き戻し領域２００Ｂには、リード領域１００の書き戻し領域１００Ｂから読み出されたデータが書き込まれる。さらに、書き換え領域（ＭＷエリア）２１０には、書き換え対象のデータが書き込まれる。この書き換え対象のデータは、書き換え領域１１０に記憶されているデータを更新したデータに相当する。なお、フラッシュメモリ２０のＲＭＷ領域２００は、リード領域１００とは異なる物理的記憶領域であり、ＲＭＷ動作時に選択される空き領域である。
【００２８】
一方、エラー検出制御モジュール１６によりエラーが検出された場合には、ＭＷ領域比較モジュール１８は、エラーが検出されたデータ記憶領域が書き換え領域１１０に含まれるデータであるか否かを判定する（ブロック５０３）。エラー訂正制御モジュール１７は、ＭＷ領域比較モジュール１８からの判定結果に基づいて、書き換え領域１１０以外の書き戻し領域１００Ａ，１００Ｂからリードされたデータにエラーが検出されたときには、エラー訂正処理を実行する（ブロック５０３のＮＯ，５０４のＮＯ，５０５）。
【００２９】
ここで、エラー訂正制御モジュール１７によりエラー訂正処理が不可能なエラー検出の場合には、メモリコントローラ１１は、当該ＲＭＷ動作を停止し、所定のエラー処理を実行する（ブロック５０４のＹＥＳ）。所定のエラー処理には、エラー位置情報を含むエラー情報を統計情報管理モジュール２２に通知するエラー通知が含まれる。統計情報管理モジュール２２は、エラー位置情報を統計情報として蓄積し、エラーが検出されたデータ記憶領域を使用不可として管理する。ここでは、エラー位置情報は、書き戻し領域１００Ａ，１００Ｂのいずれかに含まれるセクタである。
【００３０】
エラー検出制御モジュール１６は、エラー訂正制御モジュール１７によりエラー訂正処理後に、統計情報管理モジュール２２にエラー情報を通知するエラー通知を行なう（ブロック５０６）。メモリコントローラ１１は、エラー訂正制御モジュール１７によりエラー訂正されたセクタ単位のデータを、バッファマネージャモジュール１２を介してＤＲＡＭ２１に格納する（ブロック５０７）。次に、メモリコントローラ１１は、ＤＲＡＭ２１に格納されたデータ及び書き換え対象のデータを、フラッシュメモリ２０のＲＭＷ領域（書き込み領域）２００に書き込む（ブロック５０８）。
【００３１】
一方、エラー訂正制御モジュール１７は、ＭＷ領域比較モジュール１８からの判定結果に基づいて、書き換え領域１１０からリードされたデータにエラーが検出されたときには、エラー訂正処理を実行しない（ブロック５０３のＹＥＳ）。即ち、メモリコントローラ１１は、エラー検出制御モジュール１６によるエラー通知後に、図３に示すように、エラー訂正無しにエラー検出されたセクタのデータ１２０を、バッファマネージャモジュール１２を介してＤＲＡＭ２１に格納する（ブロック５０７）。
【００３２】
ここで、統計情報管理モジュール２２は、エラー位置情報を統計情報として蓄積し、エラーが検出されたデータ記憶領域を使用不可として管理する。ここでは、エラー位置情報は、書き換え領域１１０に含まれるセクタである。
【００３３】
メモリコントローラ１１は、リード領域１００からリードしたセクタ単位のデータ（エラー訂正無しのデータ１２０を含む）をＤＲＡＭ２１に格納した後に、ＤＲＡＭ２１に格納された書き戻し領域１００Ａ，１００Ｂのデータ及び書き換え対象のデータを、フラッシュメモリ２０のＲＭＷ領域（書き込み領域）２００に書き込む（ブロック５０８）。
【００３４】
以上のように本実施形態によれば、ＲＭＷ動作時に、フラッシュメモリ２０からのリード動作でエラーが検出された場合に、当該エラーが書き換え領域１１０からリードされたデータで検出されたときには、エラー訂正処理を実行しない。書き換え領域１１０からリードされたデータは、書き換えられた（修正された）後にＲＭＷ領域２００に書き込まれる。従って、エラー訂正がされていなくても、エラー検出されたデータは所望のデータに書き換えられるため、ＲＭＷ動作には影響しない。
【００３５】
一方、エラー検出時にエラー訂正処理を省略できるため、ＲＭＷ動作の処理時間を短縮化し、処理効率の向上を図ることができる。この場合、エラー検出時にエラー通知が実行されるため、エラーが検出された書き換え領域１１０のセクタについては、統計情報管理モジュール２２により管理される。エラー訂正は、相対的に短時間のエラー検出処理と比較して、多くの処理時間を要する。これにより、エラー訂正処理を省略できれば、ＲＭＷ動作の処理時間を効果的に短縮化することができる。換言すれば、ＲＭＷ動作時のエラー検出におけるＳＳＤの性能劣化の抑制を図ることができる。
【００３６】
また、ＲＭＷ動作時に、フラッシュメモリ２００の書き換え領域１１０に対するエラー訂正処理を不要にできることにより、結果的にフラッシュメモリ２００に対するエラー耐性の向上を図ることが可能となる。
【００３７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００３８】
１０…ＳＳＤコントローラ、１１…フラッシュメモリコントローラ、
１２…バッファマネージャモジュール、１３…ホストインターフェースコントローラ、
１４…サブシステムモジュール、１５…ホストインターフェース、
１６…エラー検出制御モジュール、１７…エラー訂正制御モジュール、
１８…モディファイライト（ＭＷ）領域比較モジュール、
１９…データ転送情報記憶モジュール、２０…NAND型フラッシュメモリ、
２１…ＤＲＡＭ（バッファメモリ）、２２…統計情報管理モジュール、
３０…ホストシステム。
【要約】
【課題】書き込み動作の処理効率の向上を図ることができるデータ記憶装置を提供することにある。
【解決手段】実施形態によれば、データ記憶装置は、リードモジュールと、エラー検出モジュールと、コントローラとを具備する。リードモジュールは、データの書き込み動作時に、フラッシュメモリから書き換え領域及び書き戻し領域のデータを読み出す。エラー検出モジュールは、前記読み出されたデータのエラー検出を行なう。コントローラは、前記エラー検出モジュールにより前記書き換え領域のデータからエラーが検出されたときに、エラー訂正を実行せずに前記書き込み動作を継続させる。
【選択図】図１【図１】
0004837121.tif 000002
【図２】
0004837121.tif 000003
【図３】
0004837121.tif 000004
【図４】
0004837121.tif 000005
【図５】
0004837121.tif 000006