"所定サイズのデータを書き込み単位とするフラッシュメモリと、ホスト装置からの書き込みデータを順次格納するバッファメモリと、前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込むコントローラと、ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する書き込みデータ処理手段とを有し、前記書き込みデータ処理手段は、前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するデータ記憶装置。前記書き込みデータ処理手段は、前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、前記穴埋めリード処理の完了前に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送する前に前記バッファメモリ内でのマージ処理を先行して実行する手段とを含む請求項1に記載のデータ記憶装置。前記書き込みデータ処理手段は、前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、前記穴埋めリード処理の完了後に、前記新書き込みデータが前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送した後に前記バッファメモリ内でのマージ処理を実行する手段とを含む請求項1に記載のデータ記憶装置。前記書き込みデータ処理手段は、前記ホスト装置からの書き込みデータが前記所定サイズとしてクラスタサイズのクラスタデータであるか否かを判定し、前記書き込みデータが前記クラスタサイズ未満の場合に、前記フラッシュメモリから前記旧書き込みデータと同一のアドレスで管理されている前記クラスタデータを読み出し、前記バッファメモリに前記穴埋め用データを転送する請求項1に記載のデータ記憶装置。前記書き込みデータ処理手段は、前記書き込みデータを順次格納するバッファメモリのアドレスをエントリ番号で管理するバッファエントリ管理手段を含み、前記新書き込みデータと前記旧書き込みデータのアドレス付け替え処理を実行して前記バッファメモリ内でのマージ処理を実行する請求項1から請求項4のいずれか1項に記載のデータ記憶装置。所定サイズのデータを書き込み単位とするフラッシュメモリを有するデータ記憶装置のメモリ制御装置において、ホスト装置からの書き込みデータを順次格納するバッファメモリと、前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込むコントローラと、ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する書き込みデータ処理手段とを有し、前記書き込みデータ処理手段は、前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するメモリ制御装置。前記書き込みデータ処理手段は、前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、前記穴埋めリード処理の完了前に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送する前に前記バッファメモリ内でのマージ処理を先行して実行する手段とを含む請求項6に記載のメモリ制御装置。前記書き込みデータ処理手段は、前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、前記穴埋めリード処理の完了後に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送した後に前記バッファメモリ内でのマージ処理を実行する手段とを含む請求項6に記載のメモリ制御装置。前記書き込みデータ処理手段は、前記書き込みデータを順次格納するバッファメモリのアドレスをエントリ番号で管理するバッファエントリ管理手段を含み、前記新書き込みデータと前記旧書き込みデータのアドレス付け替え処理を実行して前記バッファメモリ内でのマージ処理を実行する請求項6から請求項8のいずれか1項に記載のメモリ制御装置。所定サイズのデータを書き込み単位とするフラッシュメモリを有するデータ記憶装置に適用するメモリ制御方法であって、ホスト装置からの書き込みデータをバッファメモリに順次格納し、前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込み、ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行し、前記マージ処理は、前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するメモリ制御方法。ホストからの書き込み要求としてクラスタ未満サイズのデータがある場合に、当該データの論理アドレスが既存の記録データフラッシュメモリに書き込まれたデータと重複するような場合があるWAW:WriteAfterWrite。即ち、フラッシュメモリに書き込まれたクラスタデータの一部を書き換える動作である。この場合、いわゆるRMWreadmodifywrite動作と呼ぶ処理が必要となる。このため、フラッシュメモリからデータを読み出す処理、クラスタデータにまとめる処理、及びフラッシュメモリに書き込む処理などの一連の処理プロセスが発生し、フラッシュメモリに書き込み要求のデータを書き込むための処理効率の向上が課題である。本発明の目的は、フラッシュメモリに書き込み要求のデータを書き込むための処理効率を向上できるデータ記憶装置を提供することにある。実施形態によれば、データ記憶装置は、所定サイズのデータを書き込み単位とするフラッシュメモリと、バッファメモリと、コントローラと、書き込みデータ処理手段とを具備する。バッファメモリは、ホスト装置からの書き込みデータを順次格納する。コントローラは、前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込む。書き込みデータ処理手段は、ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する。さらに、書き込みデータ処理手段は、前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行する。以下図面を参照して、実施形態を説明する。[データ記憶装置の構成]図1は、実施形態のデータ記憶装置の要部を示すブロック図である。実施形態のデータ記憶装置は、NAND型フラッシュメモリフラッシュメモリを記憶媒体として使用するSSDsolidstatedriveである。図1に示すように、SSDは大別して、フラッシュメモリコントローラ10と、マイクロプロセッサCPU19と、メモリDRAM:dynamicrandomaccessmemory20と、ブート用ROMreadonlymemory21と、フラッシュメモリ22とを有する。ブート用ROM21はSSDに対して外部のホストデバイス23からのアクセスを可能とするための起動用プログラムが格納されている。フラッシュメモリコントローラ10は、CPU19からの命令に応じて、フラッシュメモリ22とホストデバイス23間のデータ転送を制御する。システム電源の投入後に、ブート用ROM21からのプログラムがCPU19の内部メモリに転送されると、フラッシュメモリコントローラ10はソフトウエアCPU19からの制御が可能となる。フラッシュメモリコントローラ10は、コントロールバス11と、ホストインターフェースコントローラホストI/Fコントローラ12と、ライトデータ処理モジュール13と、リードデータ処理モジュール14と、アドレス管理モジュール15と、ECC処理及びログ生成モジュール16と、NANDコントローラ以下単にコントローラ17と、データバス18とを有する。ホストI/Fコントローラ12は、ホストデバイス23との間でデータ又はコマンドの転送を制御する。ホストデバイス23は、例えばパーソナルコンピュータとSSDとを接続するインターフェース例えば、SATASerialATA規格のインターフェースである。ライトデータ処理モジュール13は、後述するように、ホストI/Fコントローラ12から転送されるデータライトデータをフラッシュメモリ22に書き込むための処理を実行する。リードデータ処理モジュール14は、フラッシュメモリ22から読み出されるデータリードデータをホストI/Fコントローラ12に転送するための処理を実行する。アドレス管理モジュール15は、論理アドレスと物理アドレス間を変換するアドレス変換テーブルまたはLUT:lookuptableを有し、フラッシュメモリ22に対する物理的な書き込み先アドレスを管理している。ECC処理及びログ生成モジュール16は、フラッシュメモリ22からの読み出し時には、データのエラー検出訂正ECC:errorcheckingandcorrecting処理を実行する。また、ECC処理及びログ生成モジュール16は、フラッシュメモリ22への書き込み時には、エラー訂正符号をクラスタデータに付加する。また、モジュール16は、クラスタデータに付加する属性情報などのログを生成する。コントローラ17は、フラッシュメモリ22に対してクラスタデータの書き込み、または読み出しを実行する。図2は、ライトデータ処理モジュール13の要部を示すブロック図である。図2に示すように、ライトデータ処理モジュール13は、ライトバッファメモリライトバッファと表記する場合がある30と、WBE管理情報バッファメモリWBEバッファと表記する場合がある31と、WBEステート遷移コントローラWBEコントローラと表記する場合がある32と、キューQueue管理モジュール33と、穴埋めリード完了待ちキューQueueモジュール34と、穴埋めリード用バッファメモリ穴埋めリード用バッファと表記する場合がある35とを有する。ライトバッファ30は、ホストI/Fコントローラ12で受信したデータセクタ単位を格納する。WBEバッファ31は、CPU19の指定により、そのデータの格納先アドレスWBAをWBEwritebufferentry管理情報以下、単にWBEと表記する場合があるで管理する。WBEコントローラ32は、後述するように、WBEのステート遷移を制御する。キューQueue管理モジュール33、穴埋めリード完了待ちキューQueueモジュール34、及び穴埋めリード用バッファ35はそれぞれ、後述するように、セクタ単位のデータをクラスタ単位のデータクラスタデータにまとめる併合処理マージ処理を行なうための構成である。[データ書き込み処理]以下、本実施形態のフラッシュメモリコントローラ10において、主としてライトデータ処理モジュール13の動作によるデータ書き込み処理を説明する。まず、ホストデバイス23から転送される書き込み要求のデータライトデータは、ホストI/Fコントローラ12で受信されて、ライトデータ処理モジュール13に送られる。ホストデバイス23は、論理ブロックアドレスLBAによりアクセスし、セクタ単位のライトデータを転送する。なお、1クラスタを8セクタ構成とした場合に、LBAを8で割った商がLCAとなる。ライトデータ処理モジュール13は、要するに、当該セクタ単位のライトデータを他のセクタ単位のデータと併合マージして、クラスタ単位のデータクラスタデータにセットしまとめ直し、ECC処理及びログ生成モジュール16及びコントローラ17に転送する。コントローラ17は、フラッシュメモリ22に対して、1回のアクセスでクラスタデータを書き込む制御を実行する。ここで、アドレス管理モジュール15は、論理と物理のアドレス変換テーブルLUTを有し、フラッシュメモリ22に対する物理的な書き込み先物理アドレスを管理している。書き込み対象のクラスタデータは、論理アドレスとしては、論理クラスタアドレスLCA:LogicalClusterAddressにより管理されている。ライトデータ処理モジュール13は、受信したセクタデータライトデータのLCAを認識した時点で、アドレス管理モジュール15に対してアドレス解決処理を要求する。アドレス解決処理とは、クラスタデータにまとめるセットするためのマージ元データ併合元データの位置アドレスを求める処理である。具体的には、アドレス管理モジュール15は、当該ライトデータに対応するLCAの最新位置がフラッシュメモリ22上に存在する場合に、その最新位置物理アドレスをライトデータ処理モジュール13に返信する解決処理結果1。この最新位置は、図3に示すWBEバッファ31に最新位置情報42としてセットされる。また、アドレス管理モジュール15は、当該ライトデータに対応するLCAと同一のLCAを有する別のエントリを示すWBEが示された場合、後述するように、WBE内でライトバッファ30のアドレスWBAのアドレス付け替え処理を行う解決処理結果2。なお、アドレス付け替え後に、未書き込み部が残った場合には、ライトデータ処理モジュール13は、後述する解決処理結果3に応じた処理を行う。ここで、ライトデータ処理モジュール13は、書き込み要求のライトデータが未書き込みLCAに対応する場合には、それを示すコードをアドレス管理モジュール15から受信する解決処理結果3。この場合には、クラスタデータにまとめるためのマージ元データは存在しない。このため、ライトデータ処理モジュール13は、ユーザ定義のデータダミーデータ、例えばオール0をマージ元データとして使用し、クラスタ単位の空き領域を埋める処理を行なう。また、ホストデバイス23は、書き戻し処理により、当該ダミーデータを埋める処理を行なう方法でもよい。なお、本実施形態では、書き込み要求のライトデータが未書き込みLCAに対応する場合の説明は省略する。以下、図3と図4を参照して、本実施形態のライトデータ処理モジュール13の処理を説明する。ホストデバイス23から転送される書き込み要求のライトデータが、クラスタサイズ未満の場合には、ライトデータ処理モジュール13は、前述したように、アドレス管理モジュール15からのアドレス解決処理結果に応じて、マージ処理を実行してクラスタデータにセットするための処理を行う。即ち、ライトデータ処理モジュール13は、当該ライトデータに対応するLCAの1世代前のクラスタデータがフラッシュメモリ22上に存在する場合に、フラッシュメモリ22から当該クラスタデータを読み出す。ライトデータ処理モジュール13は、読み出したクラスタデータをライトバッファ30に格納する。ライトバッファ30での格納先アドレスWBA:WriteBufferAddressは、WBEバッファ31で管理される。図3は、WBEバッファ31の格納情報を示す。図3に示すように、WBEバッファ31は、WBE番号WBEX、WBEY毎に、LCA領域40、セクタ情報領域41、最新位置情報42、セクタバリッドフラグSECTVFとWBEステータスWBEStatusの領域43、セクタ管理情報領域44、予備管理領域Fw管理45を有する。LCA領域40は、LCALBAの48ビットを右に3ビットシフトした下位32ビットで示すを格納する。セクタ情報領域41は、セクタデータのWBAを示す。SECTVFは、8セクタの中で有効なセクタデータのWBAを示す。即ち、ホストデバイス23から転送されるライトデータは、最終セクタアドレスによりセクタ数が認識される。このセクタ数に対応する有効なWBAは、セクタバリッドフラグSECTVFにより指示される。WBEStatusは、図4で示す状態50~55示す。セクタ管理情報領域44は、リードコマンドやライトコマンドの種類を示す。図4は、WBEコントローラ32によるデータ処理のステート遷移の様子を示す。図4に示すように、ホストI/Fコントローラ12により、ホストデバイス23からのデータ受信処理が開始されると、WBEコントローラ32は、キュー管理モジュール33のWBEinvalidQueueから新規のWBEを選択する。WBEコントローラ32は、新規のWBEにあるライトバッファ30の格納先アドレスに格納していく。WBEコントローラ32は並行して、invalidのステートにあった状態を、データ受信中のエントリ状態50currentに遷移させる。WBEコントローラ32は、エントリ状態50currentに遷移したWBEを、キュー管理モジュール33のWBEValidQueueにセットする。WBEコントローラ32は、前述したように、アドレス管理モジュール15に対してアドレス解決処理を要求し、当該アドレス解決処理結果3は除く1、2を受け付ける。WBEコントローラ32は、LCAが変化するまで、エントリ状態50currentに滞留し、LCAが変化したときにデータ受信完了後のエントリ状態51freshに遷移する。WBEコントローラ32は、エントリ状態51freshに遷移した時点で、そのWBEのセクタデータの受信状態を、WBEバッファ31のセクタバリッドフラグSECTVFで確認する。WBEコントローラ32は、セクタデータライトデータの受信状態に応じて、ライトバッファ30に格納されたデータがクラスタサイズに満たない場合には、エントリ状態53readに遷移する。WBEコントローラ32は、エントリ状態53readに遷移するとき、穴埋め処理マージ処理のためのクラスタデータのリードコマンド穴埋めリードコマンドを発行する。これにより、穴埋めリード用バッファ35に格納されたデータをマージする。一方、セクタデータの受信状態がクラスタサイズの場合には、クラスタデータがセットされた状態54readyに遷移する。この状態54readyのWBEのクラスタデータは、ECC処理及びログ生成モジュール16及びコントローラ17に転送される。コントローラ17は、フラッシュメモリ22に対して、1回のアクセスで当該クラスタデータを書き込む。フラッシュメモリ22にクラスタデータが書き込まれた後に、当該WBEの無効化が可能になると、アドレス管理モジュール15からライトデータ処理モジュール13に通知される。これにより、当該WBEは、キュー管理モジュール33のWBEinvalidQueueにセットされて状態55、新たなWBEとして再利用される。次に、図5から図9を参照して、エントリ状態53readにおいて、バッファメモリ30内でのマージ処理併合処理を説明する。ここで、マージ元エントリ古いエントリをWBEXとし、マージ対象エントリ新しいエントリをWBEYとする。本実施形態は、同一LCAの1世代前のクラスタデータの穴埋めリード処理を実行しているときに、当該ライトデータに対応するLCAと同一のLCAを有する新たなエントリを示すWBEが示された場合のマージ処理を実行する。この場合、バッファメモリ30内において、古いエントリWBEXを新しいエントリWBEYに更新し、アドレスWBAのアドレス付け替え処理を行う。ライトバッファ30内でのマージ処理は、マージ対象エントリ新しいエントリの有効でないセクタデータについて、マージ元エントリ古いエントリのセクタデータのバッファアドレスWBAの付け替えを行うことで、エントリWBEに関連付けされたデータを論理的に入れ替える処理である。図8及び図9は、図2に示す穴埋めリード完了待ちキューQueue34と、図5に示すマージ処理との関連を示す。図8及び図9に示すように、穴埋めリード処理は、フラッシュメモリ22からクラスタ単位のデータクラスタデータを穴埋めリード用バッファ35に格納し、アドレスの付け替え処理によりライトバッファ30のエントリWBEに関連付けることで完了する。図8に示すように、アドレスの付け替え処理を実行する場合、WBEコントローラ32は、マージ元のエントリ古いエントリWBE15とするに対して穴埋めリード処理によりクラスタデータの転送が終了しているか否かをチェックする処理901。ここでは、同じLCA100のマージ対象エントリ新しいエントリをWBE20として、古いエントリWBE15に対するアドレスの付け替え処理処理902を実行する場合である。即ち、処理902は、LCA100を重複して受け取り、WBE20はWBE15がマージ元であることを認識していることを意味します。WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照して、穴埋めリードコマンドの発行または完了のチェックを実行する。この場合、当該穴埋めリードTagIDおよびそれに対応するWBEを消去する。穴埋めリード完了待ちキュー34は、穴埋めリードコマンドの発行順に、穴埋めリード処理の完了を待つエントリ番号WBEを記録する。WBEコントローラ32は、クラスタデータの転送が完了したら、穴埋めリード完了待ちキュー34の当該穴埋めリードコマンドを消去する。図8に示すように、WBEコントローラ32は、古いエントリWBE15に対するクラスタデータの転送が未終了であるため、先行してライトバッファ30内でのマージ処理を実行する。但し、新しいエントリWBE20の有効でないセクタデータについて、古いエントリWBE15のセクタデータのバッファアドレスWBAの付け替えを行うアドレスの付け替え処理処理902は、穴埋めリード用バッファ35と古いエントリWBE15間でのアドレス付け替え処理を同時には実行できない。次に、図9に示すように、WBEコントローラ32は、穴埋めリード完了待ちキュー34の古いエントリWBE15を、新しいエントリWBE20に更新し、エントリ状態53readに遷移する。即ち、WBEコントローラ32は、穴埋めリードコマンドを発行し、新しいエントリWBE20に対するライトバッファ30内でのマージ処理を実行する。一方、WBEコントローラ32は、古いエントリWBE15をキュー管理モジュール33のWBEinvalidQueueにセットし、新たなWBEとして再利用する。さらに図5から図7を参照して、穴埋めリード処理によるクラスタデータの転送中と転送完了時とに分けて、ライトバッファ30内でのマージ処理を説明する。図5と図6は、穴埋めリード処理によりクラスタデータの転送中でのマージ処理を示す図である。ここで、図5は、図6に示すブロック104~111の処理に対応します。まず、WBEコントローラ32は、古いエントリWBEXのデータ受信状態がクラスタサイズの場合には、図4に示すように、クラスタデータがセットされた状態readyに遷移するブロック101のNO。この場合、コントローラ17は、フラッシュメモリ22に対して1回のアクセスで当該クラスタデータを書き込む。WBEコントローラ32は、クラスタサイズに満たない場合には、穴埋め処理マージ処理のための穴埋めリードコマンドを発行し、図5に示すread状態60に遷移するブロック102。ここで、古いエントリWBEX及び新しいエントリWBEYは、同一のLCAX0である。コントローラ17は、フラッシュメモリ22からLCAX0のクラスタデータを読み出し状態61、穴埋めリード用バッファ35に格納する。WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、マージ元のエントリ番号WBEXのリードコマンドが存在すれば、当該クラスタデータが転送中と判定するブロック103のNO。この時点で、同一のLCAX0の新しいエントリWBEYのデータを受信すると状態70、WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、古いエントリWBEXの存在を確認するブロック104のYES。WBEコントローラ32は、古いエントリWBEX及び新しいエントリWBEYのアドレス付け替え処理を実行するブロック105。これにより、穴埋めリード完了待ちキュー34の古いエントリWBEXは、新しいエントリWBEYに更新されるブロック106。即ち、ライトバッファ30内では、新しいエントリWBEYに対するライトバッファ30内でのマージ処理が実行される。但し、この間,クラスタデータの転送が完了しても、穴埋め完了処理を実行しない。WBEコントローラ32は、マージ処理完了後に、新しいエントリWBEYをエントリ状態63readに遷移し、古いエントリWBEXをキュー管理モジュール33のWBEinvalidQueueにセットするブロック107、状態64。次に、WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、エントリ番号WBEYのクラスタデータが転送完了であるか否かを判定するブロック108。クラスタデータの転送完了後であれば、WBEコントローラ32は、穴埋めリード完了待ちキュー34を更新し、WBEYを消去するブロック109。WBEコントローラ32は、古いエントリWBEXの穴埋め処理を完了し、アドレス付け替え処理を実行するブロック110。WBEコントローラ32は、マージ処理完了後に、新しいエントリWBEYをクラスタデータがセットされた状態readyに遷移するブロック111。次に、図6と図7を参照して、穴埋めリード処理によるクラスタデータの転送完了時でのマージ処理を説明する。ここで、図7は、図6に示すブロック112~116の処理に対応します。なお、処理117はWAW処理が発生しない場合である。WBEコントローラ32は、クラスタデータ転送完了を待って、穴埋めリード完了待ちキュー34を更新し、エントリWBEXを消去するブロック112。WBEコントローラ32は、エントリWBEXの穴埋め処理を完了し、アドレス付け替え処理を実行するブロック113。この時点で、同一のLCAX0の新しいエントリWBEYのデータを受信すると状態70、WBEコントローラ32は、古いエントリWBEX及び新しいエントリWBEYのアドレス付け替え処理を実行するブロック114のYES,115。WBEコントローラ32は、マージ処理完了後に、新しいエントリWBEYをクラスタデータがセットされた状態readyに遷移し、古いエントリWBEXをキュー管理モジュール33のWBEinvalidQueueにセットするブロック116。また、WBEコントローラ32は、エントリWBEYのデータを受信しない場合、エントリWBEXをクラスタデータがセットされた状態readyに遷移するブロック117。以上のように本実施形態によれば、ホストデバイス23から転送される書き込み要求のライトデータがクラスタサイズ未満の場合には、ライトデータ処理モジュール13は穴埋めリード処理により、クラスタ単位のデータにセットする。このため、フラッシュメモリ22に対して1回のアクセスで書き込むことが可能である。ここで、ホストデバイス23からLCAが重複する古いエントリWBEXと新しいエントリWBEYのライトデータが転送された場合でも、穴埋めリード処理とフラッシュメモリ22に対する書き込み処理をそれぞれ1回で行なうことができる。従って、必要最小限のフラッシュメモリ22に対するアクセスでクラスタデータをセットし、効率的なフラッシュメモリに対する書き込み動作を実現できる。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"