(57)【要約】【課題】退避データの処理効率の向上を図ることができるデータ記憶装置を提供することにある。【解決手段】本実施形態によれば、データ記憶装置は、所定のサイズ単位でデータの書き込みと読み出しを行なうフラッシュメモリと、前記フラッシュメモリを制御する制御モジュールとを備えた構成である。前記制御モジュールは、前記サイズ単位未満のデータの書き換えを含む書き込み動作時に、前記フラッシュメモリから読み出した前記サイズ単位の退避データから属性情報を分離して属性情報格納用バッファに格納し、前記退避データに含まれるユーザデータを退避データ格納領域に転送する構成である。【選択図】図１
2011253251.tif 000002
【特許請求の範囲】
【請求項１】
所定のサイズ単位でデータの書き込みと読み出しを行なうフラッシュメモリと、
前記サイズ単位未満のデータを書き換える書き込み動作時に、前記フラッシュメモリから読み出した前記サイズ単位の退避データから属性情報を分離して属性情報用記憶手段に格納し、前記退避データに含まれるユーザデータを退避用記憶手段に転送する制御手段と
を具備するデータ記憶装置。
【請求項２】
前記制御手段は、
前記サイズ単位未満の書き換え用ユーザデータの属性情報を生成する手段と、
前記書き換え用ユーザデータ、前記退避用記憶手段に格納された書き換え対象を除くユーザデータ、及び当該各ユーザデータの属性情報を含む書き込み用データを前記フラッシュメモリに書き込む手段と
を含む請求項１に記載のデータ記憶装置。
【請求項３】
前記所定のサイズ単位は、複数の物理ブロックから構成されるクラスタであり、
前記サイズ単位未満のデータは、物理ブロック単位で前記クラスタ未満である請求項１又は請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記制御手段は、
ファームウェアからのライトコマンドの処理時に、前記サイズ単位未満のデータを書き換える書き込み動作をＲＭＷ動作と判定し、
前記ＲＭＷ動作の実行時に、前記属性情報を属性情報用記憶手段に格納し、前記退避データに含まれるユーザデータを退避用記憶手段に転送するリード動作を実行し、
前記サイズ単位未満の書き換え用ユーザデータと前記退避用記憶手段に格納されたユーザデータとを組み合わせて、前記フラッシュメモリに書き込むライト動作を実行する請求項１に記載のデータ記憶装置。
【請求項５】
前記制御手段は、
前記フラッシュメモリから読み出した前記退避データ前記退避データのエラー検出処理を実行し、
前記エラー検出処理によりエラーが検出されたときには、前記書き込み動作を中断する請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記属性情報用記憶手段は、前記制御手段の内部メモリに確保されている記憶領域であり、
前記退避用記憶手段は、前記制御手段の外部に設けられたバッファメモリに確保されている記憶領域である請求項１から請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記制御手段は、
前記退避データに含まれるユーザデータを退避用記憶手段に転送した後で、ホストデバイスからのリードコマンドを受信したときに、
前記リードコマンドにより要求されたデータを前記退避用記憶手段から読み出して前記ホストデバイスに転送する手段を具備する請求項１から請求項６のいずれか１項に記載のデータ記憶装置。
【請求項８】
所定のサイズ単位でデータの書き込みと読み出しを行なうフラッシュメモリを有すルデータ記憶装置に適用するデータ書き込み方法であって、
前記サイズ単位未満のデータを書き換える書き込み動作時に、前記フラッシュメモリから読み出した前記サイズ単位の退避データから属性情報を分離して属性情報用記憶手段に格納し、
前記退避データに含まれるユーザデータを退避用記憶手段に転送するデータ書き込み方法。
【請求項９】
前記サイズ単位未満の書き換え用ユーザデータと前記退避用記憶手段に格納されたユーザデータとを組み合わせて、前記フラッシュメモリに書き込む請求項８に記載のデータ書き込み方法。
【請求項１０】
前記退避データに含まれるユーザデータを退避用記憶手段に転送した後で、ホストデバイスからのリードコマンドを受信したときに、
前記リードコマンドにより要求されたデータを前記退避用記憶手段から読み出して前記ホストデバイスに転送する請求項８から請求項９のいずれか１項に記載のデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを記憶媒体とするデータ記憶装置に関する。
【背景技術】
【０００２】
従来から、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ（以下、単にフラッシュメモリと表記する場合がある）を記憶媒体とするＳＳＤ（solid state drive）が開発されている。また、サーバ用またはエンタープライズ向けのデータ記憶装置として、大容量のＳＳＤも実現されている。
【０００３】
ＳＳＤでは、クラスタ（cluster）と呼ぶ論理的なアクセス単位でデータの書き込み、読み出し動作が実行される。即ち、クラスタは、フラッシュメモリに一度にアクセスできるデータサイズの単位である。通常では、１クラスタは、物理的なアクセス単位であるセクタを複数セクタ分まとめたものであり、例えば８セクタ分から構成される。ＳＳＤには、セクタ単位でのデータの書き込み、読み出し動作を可能とする仕組みを有するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３５３９７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のＳＳＤの書き込み動作には、１クラスタのデータの中で、セクタ単位の一部のデータ（例えば３セクタ分のデータ）のみを書き換える（修正する）書き込み動作がある。この書き込み動作は、ＲＭＷ（read modify write）動作と呼ぶことがある。
【０００６】
ＲＭＷ動作では、書き込み対象アドレスのクラスタデータ（１クラスタ分のデータ）をフラッシュメモリから読み出してバッファメモリに退避させる。この退避させたデータの中で、書き換え対象のデータ（例えば３セクタ分のデータ）を書き換えて、新たなクラスタデータを生成し、フラッシュメモリの書き込み対象アドレスに書き込む。
【０００７】
ＲＭＷ動作では、退避データをフラッシュメモリから読み出して、バッファメモリまで転送する処理が必要となる。従って、データ記憶装置のパフォーマンスの向上を図るためには、ＲＭＷ動作時の退避データの転送及びバッファメモリのアクセスの処理、即ち退避データの処理効率の向上を図ることが有効である。
【０００８】
発明の目的は、退避データの処理効率の向上を図ることができるデータ記憶装置を提供することにある。
【課題を解決するための手段】
【０００９】
本実施形態によれば、データ記憶装置は、所定のサイズ単位でデータの書き込みと読み出しを行なうフラッシュメモリと、前記フラッシュメモリを制御する制御手段とを備えた構成である。前記制御手段は、前記サイズ単位未満のデータの書き換えを含む書き込み動作時に、前記フラッシュメモリから読み出した前記サイズ単位の退避データから属性情報を分離して属性情報用記憶手段に格納し、前記退避データに含まれるユーザデータを退避用記憶手段に転送する構成である。
【図面の簡単な説明】
【００１０】
【図１】実施形態に関するデータ記憶装置の構成を説明するためのブロック図。
【図２】実施形態に関する書き込み動作を説明するためのブロック図。
【図３】実施形態に関する書き込み動作を説明するためのフローチャート。
【図４】実施形態に関するキャッシュ動作を説明するためのフローチャート。
【図５】実施形態に関するデータフォーマットを説明するための図。
【発明を実施するための形態】
【００１１】
以下図面を参照して、実施形態を説明する。
【００１２】
［データ記憶装置の構成］
図１は、実施形態のデータ記憶装置の構成を示すブロック図である。
【００１３】
実施形態のデータ記憶装置は、NAND型フラッシュメモリ（フラッシュメモリ）を記憶媒体として使用するＳＳＤ（solid state drive）である。図１に示すように、データ記憶装置は、NANDメモリコントローラチップ（以下、単にコントローラと表記する）１と、複数のフラッシュメモリ２と、ブート用ＲＯＭ（read only memory）４とを有する。ブート用ＲＯＭ４はフラッシュメモリからなり、ＳＳＤに対して外部からのアクセスを可能とするための起動用プログラムが格納されている。
【００１４】
コントローラ１は大別して、フラッシュメモリ２に対してアドレスやデータ制御を行なうNANDフラッシュ制御モジュール（以下、フラッシュ制御モジュールと略す）１０と、メモリインターフェース２０と、ホストインターフェース２１と、データフロー制御モジュール２２と、マイクロプロセッサ（ＣＰＵ）２３と、ＤＲＡＭ（dynamic random access memory）２４と、内部バス２５とを有する。
【００１５】
ＣＰＵ２３はファームウェアであり、ホストデバイス３からのコマンドに応じて、データの書き込み動作及び読み出し動作に必要なコマンドをフラッシュ制御モジュール１０に出力する。ＤＲＡＭ２４は、ＣＰＵ２３のアクセス制御により、退避データ、書き換えデータ（modifyデータ）及びテーブル情報などを格納するバッファメモリである。ＤＲＡＭ２４は、図２に示すように、退避データを格納する退避データ格納領域２４１及び書き換えデータを格納する書き換えデータ格納領域２４２を有する。
【００１６】
メモリインターフェース２０は入出力（Ｉ／Ｏ）バッファを含み、フラッシュメモリ２との間でアドレスやデータの入出力を制御する。ホストインターフェース２１は、ホストデバイス３との間でデータ又はコマンドを転送する。ホストデバイス３は、例えばパーソナルコンピュータとＳＳＤとを接続する。ホストデバイス３は、例えばＳＡＳ（Serial Attached SCSI）規格やＳＡＴＡ（Serial ATA）規格のインターフェースコントローラである。データフロー制御モジュール２２は、ホストインターフェース２１により転送するデータのバッファ制御を行なう。なお、ホストデバイス３は、論理ブロックアドレス（ＬＢＡ）によりアクセスを行なう。
【００１７】
フラッシュ制御モジュール１０は、データ処理モジュール１１と、コマンド処理モジュール１２と、コマンドキュー（Queue）１３と、NANDフラッシュ・コマンドシーケンサ（以下、コマンドシーケンサと略す）１４と、テーブル管理モジュール１５と、レスポンスキュー（Queue）１６とを有する。
【００１８】
データ処理モジュール１１は、データのエラー検出処理やエラー訂正処理（ＥＣＣ処理など）を行なう。コマンド処理モジュール１２は、コマンドキュー（Queue）１３に格納されているライトコマンドなどのコマンドを解読して実行する。コマンドキュー（Queue）１３は待ち行列バッファであり、ＣＰＵ２３からの命令やリードシーケンス処理後のライトコマンドなどを格納する。
【００１９】
コマンドシーケンサ１４は、複数のフラッシュメモリ２の選択処理及びフラッシュメモリ２のアクセスコマンドを発行する。テーブル管理モジュール１５は、ＤＲＡＭ２４に格納されているテーブル情報（ＬＢＡと物理アドレスの変換用テーブルなど）を更新する。レスポンスキュー１６は、ＣＰＵ２３にコマンド終了情報とステータス情報を提供する。
【００２０】
［データ記憶装置の動作］
以下、図２から図５を参照して、実施形態のデータ記憶装置の動作を説明する。
【００２１】
本実施形態では、フラッシュメモリ２に対しては、アクセス単位としてクラスタ（cluster）単位でデータの書き込み、読み出し動作が実行される。１クラスタは、例えば８セクタ分のデータサイズ単位である。なお、セクタは物理的なアクセス単位であり、例えば５１２バイトのデータサイズである。
【００２２】
さらに、本実施形態では、クラスタ単位でデータをフラッシュメモリ２に書き込む場合に、クラスタ未満のサイズ（例えば３セクタ分）のデータを書き換える（modify:修正する）書き込み動作を、ＲＭＷ（read modify write）動作と呼ぶ。
【００２３】
まず、システム電源の投入後の起動時に、ブート用ＲＯＭ４から起動用プログラムが、ＣＰＵ２３の内部メモリまたはＤＲＡＭ２４に転送された後に、データ記憶装置はソフトウエアからのアクセスが可能となる。次に、図２及び図３のフローチャートを参照して、主としてフラッシュ制御モジュール１０の動作を説明する。
【００２４】
ＣＰＵ２３は、ホストデバイス３から転送されたコマンドに応じて、ライトコマンドを発行する（ブロック３００）。フラッシュ制御モジュール１０は、ＣＰＵ２３からの命令を受理することで、フラッシュメモリ２とＤＲＡＭ２４間のデータ転送を開始する。
【００２５】
フラッシュ制御モジュール１０は、ＣＰＵ２３からライトコマンドを受信すると、コマンドキュー１３に格納する（ブロック１００）。コマンド処理モジュール１２は、コマンドキュー１３からライトコマンドを取り出し、データ転送長がクラスタ未満の書き換えを検知して、ＲＭＷ動作であるか否かを判定する（ブロック１０１）。即ち、コマンド処理モジュール１２は、書き込み対象のクラスタの中で、書き換え対象のデータがクラスタ未満のサイズ（例えば３セクタ分）の場合に、ＲＭＷ動作であると判定する。
【００２６】
テーブル管理モジュール１５は、ライトコマンドに伴う論理ブロックアドレスＬＢＡをインデックスとしてＤＲＡＭ２４のテーブル（アドレス管理テーブル）を参照し、退避データの物理ブロック番号（物理ページ番号）や、フラッシュメモリ２のチップ番号を算出する（ブロック１０２，１０３）。
【００２７】
本実施形態では、図２に示すように、フラッシュメモリ２に格納されているデータの中で、論理ブロックアドレスＬＢＡにより指定される書き込み対象のクラスタが、便宜的に物理アドレス（物理ブロック番号）ＳＤ０〜ＳＤ７の各セクタデータから構成されている。
【００２８】
従って、フラッシュ制御モジュール１０は、当該セクタデータＳＤ０〜ＳＤ７を退避データとして認識する。
【００２９】
次に、コマンドシーケンサ１４は、コマンド処理モジュール１２からのリードアクセスのコマンド３０に応じて、退避データをリードするためのリードコマンド３１をフラッシュメモリ２に発行する（ブロック１０４）。コマンド処理モジュール１２からのコマンド３０には、物理アドレスＳＤ０〜ＳＤ７及びＤＲＡＭ２４上の退避データ格納領域２４１の格納先アドレスが含まれる。
【００３０】
図２に示すように、フラッシュ制御モジュール１０は、フラッシュメモリ２から退避データ（セクタデータＳＤ０〜ＳＤ７）を読み出し、ＤＲＡＭ２４上の退避データ格納領域２４１に転送する（ブロック１０５）。ここで、データ処理モジュール１１は、読み出された退避データ（クラスタデータ）中に、ＥＣＣ処理によりエラーを検出するとコマンド処理モジュール１２に通知する（ブロック１０６のＹＥＳ）。コマンド処理モジュール１２は、データ処理モジュール１１からの通知３２に応じて、レスポンスキュー１６を介してＣＰＵ２３にレスポンスを発行する（ブロック１１３）。これにより、ＣＰＵ２３は、ＲＭＷ動作を中断する。
【００３１】
一方、コマンドシーケンサ１４は、フラッシュメモリ２からの退避データの読み出し動作が終了すると、コマンド処理モジュール１２に対してリード終了通知を行なう。このとき、コマンドシーケンサ１４は、退避データからユーザデータ２００と属性情報とを分離して属性情報をコマンド処理モジュール１２に出力する（図１に示す転送３３）。
【００３２】
ここで、図５に示すように、フラッシュメモリ２に格納されているセクタデータ（ＳＤ０〜ＳＤ７）は、論理ブロックアドレス（ＬＢＡ）、属性情報、ユーザデータ、及びＥＣＣデータのフォーマットから構成されている。この属性情報とは、後続のライト処理において、例えばユーザデータに対してＥＣＣ処理を行なうか否かを示すフラグ情報である。
【００３３】
図２に示すように、コマンド処理モジュール１２は、受信した属性情報を属性情報格納バッファ２０１に格納しポインタ管理する（ブロック１０７）。属性情報格納用バッファ２０１は、フラッシュ制御モジュール１０の内部メモリに確保されたバッファ領域である。図２に示すように、コマンド処理モジュール１２は、ポインタとして便宜的にフラッシュメモリ２のチップ番号（Ch00）及びクラスタ番号（Cluster00）を使用して管理する。
【００３４】
一方、コマンド処理モジュール１２は、退避データからユーザデータ２００を分離して、ＤＲＡＭ２４上の退避データ格納領域２４１に転送する。コマンド処理モジュール１２は、退避データ格納領域２４１のアドレスを保持して管理する。
【００３５】
次に、図３のブロック１０８からを参照し、後続のライト処理について説明する。
【００３６】
まず、コマンド処理モジュール１２は、予めＣＰＵ２３経由で、フラッシュ制御モジュール１０の内部メモリに確保されたレジスタ領域にセットされているフラッシュメモリ２の書き込み先物理アドレスを取得する（ブロック１０８）。
【００３７】
実施形態では、図２に示すように、ＲＭＷ動作による書き込み動作時のクラスタデータは、退避データ格納領域２４１に格納されているユーザデータ（ＳＤ０，ＳＤ１）２１０、ユーザデータ（ＳＤ５〜ＳＤ７）２１１、及び書き換えデータ格納領域２４２に格納されている書き換えデータ（Modifyデータ）２１２からなる。
【００３８】
コマンド処理モジュール１２は、コマンドシーケンサ１４に対して、ＤＲＡＭ２４上の退避データ格納領域２４１のアドレス（Ａ）を含むライトコマンド（３０）を発行する（ブロック１０９）。このライトコマンド（３０）は、書き込み対象チャネルのフラッシュメモリ２を指定する。また、コマンド処理モジュール１２は、属性情報格納バッファ２０１に格納されたセクタＳＤ０，ＳＤ１分の属性情報のアドレスをコマンドシーケンサ１４に指示する。
【００３９】
コマンドシーケンサ１４は、退避データ格納領域２４１のアドレス（Ａ）からコマンドの引数で与えられた転送開始セクタＳＤ０とセクタ転送数２を算出し、指定されたセクタＳＤ０，ＳＤ１分のユーザデータを読み出す。コマンドシーケンサ１４は、フラッシュメモリ２に対してライトコマンド（３１）を発行し、フラッシュメモリ２に書き込む（ブロック１１０）。このとき、コマンドシーケンサ１４は、読み出したセクタＳＤ０，ＳＤ１分のユーザデータに、属性情報格納バッファ２０１に格納されている属性情報２１３を付加してフラッシュメモリ２に書き込む。また、データ処理モジュール１１は、ＥＣＣデータも付加する。
【００４０】
次に、コマンド処理モジュール１２は、コマンドシーケンサ１４に対して、コマンドキュー１３から取得したＤＲＡＭ２４上の書き換えデータ格納領域２４２のアドレス（Ｂ）と転送セクタ数（３）を含むライトコマンド（３０）を発行する（ブロック１１１のＮＯ，１０９）。また、コマンド処理モジュール１２は、属性情報生成モジュール２０２により生成された書き換えデータＳＤ２〜ＳＤ４分の属性情報をコマンドシーケンサ１４に出力する。
【００４１】
コマンドシーケンサ１４は、書き換えデータ格納領域２４２のアドレス（Ｂ）からコマンドの引数で与えられた転送開始セクタＳＤ２とセクタ転送数３を算出し、指定されたセクタＳＤ２〜ＳＤ４分のユーザデータ（書き換えデータ）を読み出す。コマンドシーケンサ１４は、フラッシュメモリ２に対してライトコマンド（３１）を発行し、フラッシュメモリ２に書き込む（ブロック１１０）。このとき、コマンドシーケンサ１４は、読み出したセクタＳＤ２〜ＳＤ４分の書き換えデータに、属性情報生成モジュール２０２により生成された属性情報２１４を付加してフラッシュメモリ２に書き込む（書き換えデータ２２０）。また、データ処理モジュール１１は、ＥＣＣデータも付加する。
【００４２】
さらに、コマンド処理モジュール１２は、コマンドシーケンサ１４に対して、ＤＲＡＭ２４上の退避データ格納領域２４１のアドレス（Ｃ）を含むライトコマンド（３０）を発行する（ブロック１１１のＮＯ，１０９）。また、コマンド処理モジュール１２は、属性情報格納バッファ２０１に格納されたセクタＳＤ５〜ＳＤ７分の属性情報のアドレスをコマンドシーケンサ１４に指示する。
【００４３】
コマンドシーケンサ１４は、退避データ格納領域２４１のアドレス（Ｃ）からコマンドの引数で与えられた転送開始セクタＳＤ５とセクタ転送数３を算出し、指定されたセクタＳＤ５〜ＳＤ７分のユーザデータを読み出す。コマンドシーケンサ１４は、フラッシュメモリ２に対してライトコマンド（３１）を発行し、フラッシュメモリ２に書き込む（ブロック１１０）。このとき、コマンドシーケンサ１４は、読み出したセクタＳＤ５〜ＳＤ７分のユーザデータに、属性情報格納バッファ２０１に格納されている属性情報２１３を付加してフラッシュメモリ２に書き込む。また、データ処理モジュール１１は、ＥＣＣデータも付加する。
【００４４】
なお、コマンド処理モジュール１２は、書き換えデータの範囲に応じて、２回または４回以上のコマンド発行を行なう。コマンド処理モジュール１２は、クラスタデータの書き込み動作が終了すると、終了通知と各種テーブル更新に必要な情報をテーブル管理モジュール１５に提供する（ブロック１１１のＹＥＳ）。テーブル管理モジュール１５は、ＤＲＡＭ２４上のテーブル情報を更新し、レスポンスキュー１６に終了情報とステータスを発行する（ブロック１１２，１１３）。ＣＰＵ２３は、レスポンスキュー１６からの情報に基づいて、書き込み動作が正常に終了したことかを判断する。
【００４５】
以上のように本実施形態によれば、クラスタ未満の書き換えデータがあるＲＭＷ動作において、リード動作では、フラッシュメモリから退避データを退避させるときに、ユーザデータと属性情報を分離する。コントローラ１は、属性情報を属性情報格納バッファ２０１に格納し、ユーザデータを退避データ格納領域２４１に転送する。ライト動作では、退避データ格納領域２４１に格納されている退避データ（ユーザデータ）と書き換えデータ（Modifyデータ）とをマージ（merge:合併）して、フラッシュメモリに書き込む。
【００４６】
従って、属性情報を含めて退避データを退避データ格納領域２４１に転送する場合と比較して、本実施形態は、ユーザデータを退避データ格納領域２４１に転送するため、ＤＲＡＭ２４に対して、属性情報の書き換えに伴うアクセスを削減することができる。即ち、退避データに伴うＤＲＡＭ２４のアクセスを低減できるため、結果としてＣＰＵ２３の負荷を削減できる。
【００４７】
また、通常のリード動作では、コントローラ１は、フラッシュメモリから読み出したデータから属性情報を含まないデータをホストデバイス３に転送する。従って、本実施形態のＲＭＷ動作時の退避データ（属性情報を含まないデータ）の転送パスと、通常のリード動作時のデータの転送パスとを共用することができる。これにより、コントローラ１を構成する回路規模の低減化、及び回路動作の検証コストなどを抑制することが可能となる。
【００４８】
さらに、ＲＭＷ動作時のリード動作（フラッシュメモリ２から退避データの読み出し）とライト動作（フラッシュメモリ２への書き込み）の処理において、ＣＰＵ２３は最初のライトコマンドを発行するだけである。従って、ＣＰＵ２３の負荷を削減できる効果があり、システムとしてのパフォーマンスを向上することができる。
【００４９】
なお、フラッシュメモリの未書き込み領域に対するＲＭＷ動作時に、退避データが存在しない場合は、ホストデバイス３からＤＲＡＭ２４の退避データ格納領域２４１に固定値データを書き込むことで、本実施形態を適用することができる。この際の属性情報は、コマンドキュー１３でセットされたライト動作時のコマンド情報と同じものとすればよい。
【００５０】
［本実施形態の応用例］
図４は、本実施形態の応用例を説明するためのフローチャートである。
【００５１】
本実施形態では、コントローラ１は、ＲＭＷ動作時に、フラッシュメモリ２から退避データ（属情情報を分離）を読み出して、ＤＲＡＭ２４の退避データ格納領域２４１に転送する（ブロック１０５）。
【００５２】
ここで、コントローラ１は、ホストデバイス３からリードコマンドを受信したときに、当該リードコマンドで要求されているデータが退避データ格納領域２４１に格納されているデータであるか否かをＬＢＡに基づいて判定する（ブロック３００）。
【００５３】
コントローラ１は、要求に該当するデータが存在する場合に、ＤＲＡＭ２４上の退避データ格納領域２４１に格納されたユーザデータ（指定のセクタ分データ）を読み出す（ブロック３０１）。コントローラ１は、ＤＲＡＭ２４から読み出した当該データを、ホストインターフェース２１に転送する（ブロック３０２）。ホストインターフェース２１は、リードコマンドにより要求されたデータをホストデバイス３に転送する（ブロック３０３）。
【００５４】
以上のようにして、本実施形態のＲＭＷ動作時に、フラッシュメモリ２からＤＲＡＭ２４の退避データ格納領域２４１に転送した退避データの中で、ホストデバイス３からリード要求されたデータを転送することができる。本実施形態では、退避データ格納領域２４１に格納される退避データは、通常のリード動作時と同様に属性情報を含まないデータである。
【００５５】
従って、本実施形態では、ＲＭＷ動作時にホストからリードコマンドを受信した場合に、フラッシュメモリ２をアクセスすることなく、バッファメモリであるＤＲＡＭ２４から高速に要求データをホストに転送できる。換言すれば、ＤＲＡＭ２４の退避データ格納領域２４１をキャッシュメモリとして機能させて、高速にリード要求データをホストに転送するキャッシュ処理を実現することが可能である。
【００５６】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５７】
１…NANDメモリコントローラチップ（コントローラ）、２…フラッシュメモリ、
３…ホストデバイス、４…ブート用ＲＯＭ、
１０…NANDフラッシュ制御モジュール、１１…データ処理モジュール、
１２…コマンド処理モジュール、１３…コマンドキュー、
１４…NANDフラッシュ・コマンドシーケンサ、１５…テーブル管理モジュール、
１６…レスポンスキュー、２０…メモリインターフェース、
２１…ホストインターフェース、２２…データフロー制御モジュール、
２３…マイクロプロセッサ（ＣＰＵ）、２４…ＤＲＡＭ、２５…内部バス。
【図１】
2011253251.tif 000003
【図２】
2011253251.tif 000004
【図３】
2011253251.tif 000005
【図４】
2011253251.tif 000006
【図５】
2011253251.tif 000007
【手続補正書】
【提出日】平成23年7月29日(2011.7.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザデータとデータの属性を示す属性情報とを含む最小単位データの複数分からなる所定サイズの単位でデータの書き込みと読み出しを行なうフラッシュメモリと、
前記フラッシュメモリの対象アドレスにデータを書き込む場合に、前記所定サイズ未満のデータを書き換える制御を行う制御手段とを有し、
前記制御手段は、
前記対象アドレスから前記所定サイズのデータを退避データとして読み出し、
前記退避データに含まれる前記属性情報と前記ユーザデータとを分離して記憶し、
前記退避データに含まれる書き換え対象ユーザデータを書き換えた書き換え用ユーザデータを記憶し、
前記退避データに含まれるユーザデータの中で前記書き換え対象ユーザデータを除くユーザデータ、前記書き換え用ユーザデータ及び前記属性情報を含む前記所定サイズのデータを生成して前記フラッシュメモリに書き込むように制御するデータ記憶装置。
【請求項２】
前記制御手段は、
前記書き換え用ユーザデータの属性情報を生成し、前記所定サイズのデータに含ませて前記フラッシュメモリに書き込むように制御する請求項１に記載のデータ記憶装置。
【請求項３】
前記最小単位データは物理ブロック単位データであり、
前記所定サイズは、複数の物理ブロックから構成されるクラスタであり、
前記所定サイズ未満のデータは、物理ブロック単位で前記クラスタ未満である請求項１又は請求項２のいずれか１項に記載のデータ記憶装置。
【請求項４】
前記制御手段は、
ファームウェアからのライトコマンドの処理時に前記フラッシュメモリの対象アドレスにデータを書き込む書き込み動作がＲＭＷ動作であるか否かを判定し、
前記ＲＭＷ動作であると判定した場合に、前記所定サイズ未満のデータを書き換える制御を実行する請求項１に記載のデータ記憶装置。
【請求項５】
前記制御手段は、
前記フラッシュメモリから読み出した前記退避データのエラー検出処理を実行し、
前記エラー検出処理によりエラーが検出されたときには、前記書き込み動作を中断する請求項１から請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記制御手段は、
前記退避データ、前記属性情報、前記書き換え用ユーザデータのそれぞれを、内部のバッファメモリに確保されている各記憶領域に記憶する請求項１から請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
前記制御手段は、
前記退避データに含まれるユーザデータを内部のメモリに記憶した後で、ホストデバイスからのリードコマンドを受信したときに、
前記リードコマンドにより要求されたデータを前記内部のメモリから読み出して前記ホストデバイスに転送する手段を具備する請求項１から請求項６のいずれか１項に記載のデータ記憶装置。
【請求項８】
フラッシュメモリに対して、ユーザデータとデータの属性を示す属性情報とを含む最小単位データの複数分からなる所定サイズの単位でデータの書き込みと読み出しを行なうデータ制御装置であって、
前記フラッシュメモリの対象アドレスにデータを書き込む場合に、前記所定サイズ未満のデータを書き換える制御を行う制御手段を有し、
前記制御手段は、
前記対象アドレスから前記所定サイズのデータを退避データとして読み出し、
前記退避データに含まれる前記属性情報と前記ユーザデータとを分離して記憶し、
前記退避データに含まれる書き換え対象ユーザデータを書き換えた書き換え用ユーザデータを記憶し、
前記退避データに含まれるユーザデータの中で前記書き換え対象ユーザデータを除くユーザデータ、前記書き換え用ユーザデータ及び前記属性情報を含む前記所定サイズのデータを生成して前記フラッシュメモリに書き込むように制御するデータ制御装置。
【請求項９】
ユーザデータとデータの属性を示す属性情報とを含む最小単位データの複数分からなる所定サイズの単位でデータの書き込みと読み出しを行なうフラッシュメモリを有するデータ記憶装置に適用するデータ書き込み方法であって、
前記フラッシュメモリの対象アドレスにデータを書き込む場合に、前記所定サイズ未満のデータを書き換える制御において、
前記対象アドレスから前記所定サイズのデータを退避データとして読み出し、
前記退避データに含まれる前記属性情報と前記ユーザデータとを分離して記憶し、
前記退避データに含まれる書き換え対象ユーザデータを書き換えた書き換え用ユーザデータを記憶し、
前記退避データに含まれるユーザデータの中で前記書き換え対象ユーザデータを除くユーザデータ、前記書き換え用ユーザデータ及び前記属性情報を含む前記所定サイズのデータを生成して前記フラッシュメモリに書き込むように制御するデータ書き込み方法。
【請求項１０】
前記退避データに含まれるユーザデータを内部のメモリに記憶した後で、ホストデバイスからのリードコマンドを受信したときに、
前記リードコマンドにより要求されたデータを前記内部のメモリから読み出して前記ホストデバイスに転送する請求項９に記載のデータ書き込み方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本実施形態によれば、データ記憶装置は、ユーザデータとデータの属性を示す属性情報とを含む最小単位データの複数分からなる所定サイズの単位でデータの書き込みと読み出しを行なうフラッシュメモリと、前記フラッシュメモリの対象アドレスにデータを書き込む場合に、前記所定サイズ未満のデータを書き換える制御を行う制御手段とを有する。前記制御手段は、前記対象アドレスから前記所定サイズのデータを退避データとして読み出し、前記属性情報と前記ユーザデータとを分離して記憶し、前記退避データに含まれる書き換え対象ユーザデータを書き換えた書き換え用ユーザデータを記憶し、前記退避データに含まれるユーザデータの中で前記書き換え対象ユーザデータを除くユーザデータ、前記書き換え用ユーザデータ及び前記属性情報を含む前記所定サイズのデータを生成して前記フラッシュメモリに書き込むように制御する構成である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
本実施形態では、コントローラ１は、ＲＭＷ動作時に、フラッシュメモリ２から退避データ（属性情報を分離）を読み出して、ＤＲＡＭ２４の退避データ格納領域２４１に転送する（ブロック１０５）。