JP2013061814A - Data storage, memory controller and method - Google Patents
Data storage, memory controller and method Download PDFInfo
- Publication number
- JP2013061814A JP2013061814A JP2011200018A JP2011200018A JP2013061814A JP 2013061814 A JP2013061814 A JP 2013061814A JP 2011200018 A JP2011200018 A JP 2011200018A JP 2011200018 A JP2011200018 A JP 2011200018A JP 2013061814 A JP2013061814 A JP 2013061814A
- Authority
- JP
- Japan
- Prior art keywords
- data
- write data
- buffer memory
- hole filling
- predetermined size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
Description
本発明の実施形態は、不揮発性メモリを使用するデータ記憶装置、メモリ制御装置及び方法に関する。 Embodiments described herein relate generally to a data storage device, a memory control device, and a method using a nonvolatile memory.
従来から、データ記憶装置として、書き換え可能な不揮発性メモリであるNAND型フラッシュメモリ(以下、単にフラッシュメモリと表記する場合がある)を記憶媒体とするSSD(solid state drive)が開発されている。 2. Description of the Related Art Conventionally, an SSD (solid state drive) using a NAND-type flash memory (hereinafter sometimes simply referred to as a flash memory), which is a rewritable nonvolatile memory, as a storage medium has been developed as a data storage device.
SSDでは、フラッシュメモリに対して、クラスタ(cluster)と呼ぶ論理的なアクセス単位でデータの書き込み、読み出し動作が実行される。即ち、クラスタは、フラッシュメモリに一度にアクセスできるデータサイズの単位である。通常では、1クラスタは、物理的なアクセス単位であるセクタを複数セクタ分まとめたものであり、例えば8セクタ分から構成される。以下、クラスタ単位のデータをクラスタデータと呼び、セクタ単位のデータをセクタデータと呼ぶことがある。 In the SSD, data write and read operations are performed on a flash memory in a logical access unit called a cluster. That is, the cluster is a unit of data size that can access the flash memory at one time. Normally, one cluster is a collection of a plurality of sectors, which are physical access units, and is composed of, for example, eight sectors. Hereinafter, cluster unit data may be referred to as cluster data, and sector unit data may be referred to as sector data.
一方、ホストからは、クラスタ未満サイズのデータが書き込み要求として転送されることがある。なお、ホストからはセクタ単位のデータが転送されて、SSDのバッファメモリに格納される。SSDは、セクタデータをクラスタデータにまとめてフラッシュメモリに書き込む。 On the other hand, data smaller than the cluster size may be transferred as a write request from the host. Note that sector-by-sector data is transferred from the host and stored in the SSD buffer memory. The SSD collects sector data into cluster data and writes it to the flash memory.
ホストからの書き込み要求としてクラスタ未満サイズのデータがある場合に、当該データの論理アドレスが既存の記録データ(フラッシュメモリに書き込まれたデータ)と重複するような場合がある(WAW:Write After Write)。即ち、フラッシュメモリに書き込まれたクラスタデータの一部を書き換える動作である。この場合、いわゆるRMW(read modify write)動作と呼ぶ処理が必要となる。このため、フラッシュメモリからデータを読み出す処理、クラスタデータにまとめる処理、及びフラッシュメモリに書き込む処理などの一連の処理プロセスが発生し、フラッシュメモリに書き込み要求のデータを書き込むための処理効率の向上が課題である。 When there is data of a size less than a cluster as a write request from the host, the logical address of the data may overlap with existing recording data (data written to the flash memory) (WAW: Write After Write) . That is, it is an operation of rewriting a part of the cluster data written in the flash memory. In this case, a so-called RMW (read modify write) operation is required. For this reason, a series of processing processes such as a process of reading data from the flash memory, a process of collecting the data into the cluster data, and a process of writing to the flash memory occur, and it is an issue to improve the processing efficiency for writing the write request data to the flash memory. It is.
本発明の目的は、フラッシュメモリに書き込み要求のデータを書き込むための処理効率を向上できるデータ記憶装置を提供することにある。 An object of the present invention is to provide a data storage device capable of improving the processing efficiency for writing write request data to a flash memory.
実施形態によれば、データ記憶装置は、所定サイズのデータを書き込み単位とするフラッシュメモリと、バッファメモリと、コントローラと、書き込みデータ処理手段とを具備する。バッファメモリは、ホスト装置からの書き込みデータを順次格納する。コントローラは、前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込む。書き込みデータ処理手段は、ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する。さらに、書き込みデータ処理手段は、前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行する。 According to the embodiment, the data storage device includes a flash memory that uses data of a predetermined size as a write unit, a buffer memory, a controller, and write data processing means. The buffer memory sequentially stores write data from the host device. The controller writes the predetermined size data stored in the buffer memory to the flash memory. The write data processing means reads the data of the predetermined size managed at the same address as the write data from the flash memory when the write data from the host device is less than the predetermined size, and stores the data in the buffer memory A merge process for setting the predetermined size data including the write data is executed. Further, the write data processing means may read the new data when there is new write data managed at the same address as the old write data in the buffer memory at the time of reading or completing the data from the flash memory. Merge processing in the buffer memory is executed with write data as data to be merged.
以下図面を参照して、実施形態を説明する。 Embodiments will be described below with reference to the drawings.
[データ記憶装置の構成]
図1は、実施形態のデータ記憶装置の要部を示すブロック図である。
[Configuration of data storage device]
FIG. 1 is a block diagram illustrating a main part of the data storage device according to the embodiment.
実施形態のデータ記憶装置は、NAND型フラッシュメモリ(フラッシュメモリ)を記憶媒体として使用するSSD(solid state drive)である。図1に示すように、SSDは大別して、フラッシュメモリコントローラ10と、マイクロプロセッサ(CPU)19と、メモリ(DRAM:dynamic random access memory)20と、ブート用ROM(read only memory)21と、フラッシュメモリ22とを有する。
The data storage device of the embodiment is an SSD (solid state drive) that uses a NAND flash memory (flash memory) as a storage medium. As shown in FIG. 1, the SSD is roughly divided into a
ブート用ROM21はSSDに対して外部のホストデバイス23からのアクセスを可能とするための起動用プログラムが格納されている。フラッシュメモリコントローラ10は、CPU19からの命令に応じて、フラッシュメモリ22とホストデバイス23間のデータ転送を制御する。システム電源の投入後に、ブート用ROM21からのプログラムがCPU19の内部メモリに転送されると、フラッシュメモリコントローラ10はソフトウエア(CPU19)からの制御が可能となる。
The
フラッシュメモリコントローラ10は、コントロールバス11と、ホストインターフェースコントローラ(ホストI/Fコントローラ)12と、ライトデータ処理モジュール13と、リードデータ処理モジュール14と、アドレス管理モジュール15と、ECC処理及びログ生成モジュール16と、NANDコントローラ(以下単にコントローラ)17と、データバス18とを有する。
The
ホストI/Fコントローラ12は、ホストデバイス23との間でデータ又はコマンドの転送を制御する。ホストデバイス23は、例えばパーソナルコンピュータとSSDとを接続するインターフェース(例えば、SATA(Serial ATA)規格のインターフェース)である。ライトデータ処理モジュール13は、後述するように、ホストI/Fコントローラ12から転送されるデータ(ライトデータ)をフラッシュメモリ22に書き込むための処理を実行する。リードデータ処理モジュール14は、フラッシュメモリ22から読み出されるデータ(リードデータ)をホストI/Fコントローラ12に転送するための処理を実行する。
The host I /
アドレス管理モジュール15は、論理アドレスと物理アドレス間を変換するアドレス変換テーブル(またはLUT:look up table)を有し、フラッシュメモリ22に対する物理的な書き込み先(アドレス)を管理している。ECC処理及びログ生成モジュール16は、フラッシュメモリ22からの読み出し時には、データのエラー検出訂正(ECC:error checking and correcting)処理を実行する。また、ECC処理及びログ生成モジュール16は、フラッシュメモリ22への書き込み時には、エラー訂正符号をクラスタデータに付加する。また、モジュール16は、クラスタデータに付加する属性情報などのログを生成する。コントローラ17は、フラッシュメモリ22に対してクラスタデータの書き込み、または読み出しを実行する。
The
図2は、ライトデータ処理モジュール13の要部を示すブロック図である。
FIG. 2 is a block diagram showing a main part of the write
図2に示すように、ライトデータ処理モジュール13は、ライトバッファメモリ(ライトバッファと表記する場合がある)30と、WBE管理情報バッファメモリ(WBEバッファと表記する場合がある)31と、WBEステート遷移コントローラ(WBEコントローラと表記する場合がある)32と、キュー(Queue)管理モジュール33と、穴埋めリード完了待ちキュー(Queue)モジュール34と、穴埋めリード用バッファメモリ(穴埋めリード用バッファと表記する場合がある)35とを有する。
As shown in FIG. 2, the write
ライトバッファ30は、ホストI/Fコントローラ12で受信したデータ(セクタ単位)を格納する。WBEバッファ31は、CPU19の指定により、そのデータの格納先アドレス(WBA)をWBE(write buffer entry)管理情報(以下、単にWBEと表記する場合がある)で管理する。WBEコントローラ32は、後述するように、WBEのステート遷移を制御する。
The
キュー(Queue)管理モジュール33、穴埋めリード完了待ちキュー(Queue)モジュール34、及び穴埋めリード用バッファ35はそれぞれ、後述するように、セクタ単位のデータをクラスタ単位のデータ(クラスタデータ)にまとめる併合処理(マージ処理)を行なうための構成である。
As will be described later, the
[データ書き込み処理]
以下、本実施形態のフラッシュメモリコントローラ10において、主としてライトデータ処理モジュール13の動作によるデータ書き込み処理を説明する。
[Data writing process]
Hereinafter, in the
まず、ホストデバイス23から転送される書き込み要求のデータ(ライトデータ)は、ホストI/Fコントローラ12で受信されて、ライトデータ処理モジュール13に送られる。ホストデバイス23は、論理ブロックアドレス(LBA)によりアクセスし、セクタ単位のライトデータを転送する。なお、1クラスタを8セクタ構成とした場合に、LBAを8で割った商がLCAとなる。
First, write request data (write data) transferred from the
ライトデータ処理モジュール13は、要するに、当該セクタ単位のライトデータを他のセクタ単位のデータと併合(マージ)して、クラスタ単位のデータ(クラスタデータ)にセットし(まとめ直し)、ECC処理及びログ生成モジュール16及びコントローラ17に転送する。コントローラ17は、フラッシュメモリ22に対して、1回のアクセスでクラスタデータを書き込む制御を実行する。
In short, the write
ここで、アドレス管理モジュール15は、論理と物理のアドレス変換テーブル(LUT)を有し、フラッシュメモリ22に対する物理的な書き込み先(物理アドレス)を管理している。書き込み対象のクラスタデータは、論理アドレスとしては、論理クラスタアドレス(LCA:Logical Cluster Address)により管理されている。ライトデータ処理モジュール13は、受信したセクタデータ(ライトデータ)のLCAを認識した時点で、アドレス管理モジュール15に対してアドレス解決処理を要求する。
Here, the
アドレス解決処理とは、クラスタデータにまとめる(セットする)ためのマージ元データ(併合元データ)の位置(アドレス)を求める処理である。具体的には、アドレス管理モジュール15は、当該ライトデータに対応するLCAの最新位置(端的には1世代前のクラスタデータ)がフラッシュメモリ22上に存在する場合に、その最新位置(物理アドレス)をライトデータ処理モジュール13に返信する(解決処理結果1)。この最新位置は、図3に示すWBEバッファ31に最新位置情報42としてセットされる。また、アドレス管理モジュール15は、当該ライトデータに対応するLCAと同一のLCAを有する別のエントリを示すWBEが示された場合、後述するように、WBE内でライトバッファ30のアドレス(WBA)のアドレス付け替え処理を行う(解決処理結果2)。なお、アドレス付け替え後に、未書き込み部が残った場合には、ライトデータ処理モジュール13は、後述する解決処理結果3に応じた処理を行う。
The address resolution process is a process for obtaining the position (address) of merge source data (merger source data) to be collected (set) into cluster data. Specifically, the
ここで、ライトデータ処理モジュール13は、書き込み要求のライトデータが未書き込みLCAに対応する場合には、それを示すコードをアドレス管理モジュール15から受信する(解決処理結果3)。この場合には、クラスタデータにまとめるためのマージ元データは存在しない。このため、ライトデータ処理モジュール13は、ユーザ定義のデータ(ダミーデータ、例えばオール0)をマージ元データとして使用し、クラスタ単位の空き領域を埋める処理を行なう。また、ホストデバイス23は、書き戻し処理により、当該ダミーデータを埋める処理を行なう方法でもよい。なお、本実施形態では、書き込み要求のライトデータが未書き込みLCAに対応する場合の説明は省略する。
Here, when the write data of the write request corresponds to the unwritten LCA, the write
以下、図3と図4を参照して、本実施形態のライトデータ処理モジュール13の処理を説明する。
Hereinafter, the processing of the write
ホストデバイス23から転送される書き込み要求のライトデータが、クラスタサイズ未満の場合には、ライトデータ処理モジュール13は、前述したように、アドレス管理モジュール15からのアドレス解決処理結果に応じて、マージ処理を実行してクラスタデータにセットするための処理を行う。即ち、ライトデータ処理モジュール13は、当該ライトデータに対応するLCAの1世代前のクラスタデータがフラッシュメモリ22上に存在する場合に、フラッシュメモリ22から当該クラスタデータを読み出す。ライトデータ処理モジュール13は、読み出したクラスタデータをライトバッファ30に格納する。
When the write data of the write request transferred from the
ライトバッファ30での格納先アドレス(WBA:Write Buffer Address)は、WBEバッファ31で管理される。図3は、WBEバッファ31の格納情報を示す。図3に示すように、WBEバッファ31は、WBE番号(WBE#X、WBE#Y)毎に、LCA領域40、セクタ情報領域41、最新位置情報42、セクタバリッドフラグ(SECT-VF)とWBEステータス(WBE-Status)の領域43、セクタ管理情報領域44、予備管理領域(Fw管理)45を有する。
A storage address (WBA: Write Buffer Address) in the
LCA領域40は、LCA(LBAの48ビットを右に3ビットシフトした下位32ビットで示す)を格納する。セクタ情報領域41は、セクタデータのWBAを示す。SECT-VFは、8セクタの中で有効なセクタデータのWBAを示す。即ち、ホストデバイス23から転送されるライトデータは、最終セクタアドレスによりセクタ数が認識される。このセクタ数に対応する有効なWBAは、セクタバリッドフラグ(SECT-VF)により指示される。WBE-Statusは、図4で示す状態50〜55示す。セクタ管理情報領域44は、リードコマンドやライトコマンドの種類を示す。
The
図4は、WBEコントローラ32によるデータ処理のステート遷移の様子を示す。
FIG. 4 shows a state transition state of data processing by the
図4に示すように、ホストI/Fコントローラ12により、ホストデバイス23からのデータ受信処理が開始されると、WBEコントローラ32は、キュー管理モジュール33のWBE invalid Queueから新規のWBEを選択する。WBEコントローラ32は、新規のWBEにあるライトバッファ30の格納先アドレスに格納していく。WBEコントローラ32は並行して、invalidのステートにあった状態を、データ受信中のエントリ状態50(current)に遷移させる。WBEコントローラ32は、エントリ状態50(current)に遷移したWBEを、キュー管理モジュール33のWBE Valid Queueにセットする。WBEコントローラ32は、前述したように、アドレス管理モジュール15に対してアドレス解決処理を要求し、当該アドレス解決処理結果(3は除く1、2)を受け付ける。
As shown in FIG. 4, when data reception processing from the
WBEコントローラ32は、LCAが変化するまで、エントリ状態50(current)に滞留し、LCAが変化したときにデータ受信完了後のエントリ状態51(fresh)に遷移する。WBEコントローラ32は、エントリ状態51(fresh)に遷移した時点で、そのWBEのセクタデータの受信状態を、WBEバッファ31のセクタバリッドフラグ(SECT-VF)で確認する。
The
WBEコントローラ32は、セクタデータ(ライトデータ)の受信状態に応じて、ライトバッファ30に格納されたデータがクラスタサイズに満たない場合には、エントリ状態53(read)に遷移する。WBEコントローラ32は、エントリ状態53(read)に遷移するとき、穴埋め処理(マージ処理)のためのクラスタデータのリードコマンド(穴埋めリードコマンド)を発行する。これにより、穴埋めリード用バッファ35に格納されたデータをマージする。
The
一方、セクタデータの受信状態がクラスタサイズの場合には、クラスタデータがセットされた状態54(ready)に遷移する。この状態54(ready)のWBEのクラスタデータは、ECC処理及びログ生成モジュール16及びコントローラ17に転送される。コントローラ17は、フラッシュメモリ22に対して、1回のアクセスで当該クラスタデータを書き込む。
On the other hand, when the reception state of the sector data is the cluster size, the state transits to a state 54 (ready) in which the cluster data is set. The WBE cluster data in this state 54 (ready) is transferred to the ECC processing and log
フラッシュメモリ22にクラスタデータが書き込まれた後に、当該WBEの無効化が可能になると、アドレス管理モジュール15からライトデータ処理モジュール13に通知される。これにより、当該WBEは、キュー管理モジュール33のWBE invalid Queueにセットされて(状態55)、新たなWBEとして再利用される。
When the WBE can be invalidated after the cluster data is written in the
次に、図5から図9を参照して、エントリ状態53(read)において、バッファメモリ30内でのマージ処理(併合処理)を説明する。ここで、マージ元エントリ(古いエントリ)をWBE#Xとし、マージ対象エントリ(新しいエントリ)をWBE#Yとする。
Next, a merge process (merge process) in the
本実施形態は、同一LCAの1世代前のクラスタデータの穴埋めリード処理を実行しているときに、当該ライトデータに対応するLCAと同一のLCAを有する新たなエントリを示すWBEが示された場合のマージ処理を実行する。この場合、バッファメモリ30内において、古いエントリWBE#Xを新しいエントリWBE#Yに更新し、アドレス(WBA)のアドレス付け替え処理を行う。
In the present embodiment, when a hole filling read process for cluster data one generation before the same LCA is executed, a WBE indicating a new entry having the same LCA as the LCA corresponding to the write data is indicated Execute the merge process. In this case, in the
ライトバッファ30内でのマージ処理は、マージ対象エントリ(新しいエントリ)の有効でないセクタデータについて、マージ元エントリ(古いエントリ)のセクタデータのバッファアドレス(WBA)の付け替えを行うことで、エントリ(WBE)に関連付けされたデータを論理的に入れ替える処理である。
The merge process in the
図8及び図9は、図2に示す穴埋めリード完了待ちキュー(Queue)34と、図5に示すマージ処理との関連を示す。
FIGS. 8 and 9 show the relationship between the hole filling read
図8及び図9に示すように、穴埋めリード処理は、フラッシュメモリ22からクラスタ単位のデータ(クラスタデータ)を穴埋めリード用バッファ35に格納し、アドレスの付け替え処理によりライトバッファ30のエントリ(WBE)に関連付けることで完了する。
As shown in FIG. 8 and FIG. 9, in the hole filling read process, cluster unit data (cluster data) is stored in the hole filling read
図8に示すように、アドレスの付け替え処理を実行する場合、WBEコントローラ32は、マージ元のエントリ(古いエントリWBE#15とする)に対して穴埋めリード処理によりクラスタデータの転送が終了しているか否かをチェックする(処理901)。ここでは、同じLCA(100)のマージ対象エントリ(新しいエントリ)をWBE#20として、古いエントリWBE#15に対するアドレスの付け替え処理(処理902)を実行する場合である。即ち、処理902は、LCA(100)を重複して受け取り、WBE#20はWBE#15がマージ元であることを認識していることを意味します。
As shown in FIG. 8, when the address reassigning process is executed, the
WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照して、穴埋めリードコマンドの発行または完了のチェックを実行する。この場合、当該穴埋めリードTagIDおよびそれに対応するWBE#を消去する。穴埋めリード完了待ちキュー34は、穴埋めリードコマンドの発行順に、穴埋めリード処理の完了を待つエントリ番号(WBE#)を記録する。WBEコントローラ32は、クラスタデータの転送が完了したら、穴埋めリード完了待ちキュー34の当該穴埋めリードコマンドを消去する。
The
図8に示すように、WBEコントローラ32は、古いエントリWBE#15に対するクラスタデータの転送が未終了であるため、先行してライトバッファ30内でのマージ処理を実行する。但し、新しいエントリWBE#20の有効でないセクタデータについて、古いエントリWBE#15のセクタデータのバッファアドレス(WBA)の付け替えを行うアドレスの付け替え処理(処理902)は、穴埋めリード用バッファ35と古いエントリWBE#15間でのアドレス付け替え処理を同時には実行できない。
As shown in FIG. 8, the
次に、図9に示すように、WBEコントローラ32は、穴埋めリード完了待ちキュー34の古いエントリWBE#15を、新しいエントリWBE#20に更新し、エントリ状態53(read)に遷移する。即ち、WBEコントローラ32は、穴埋めリードコマンドを発行し、新しいエントリWBE#20に対するライトバッファ30内でのマージ処理を実行する(処理904)。一方、WBEコントローラ32は、古いエントリWBE#15をキュー管理モジュール33のWBE invalid Queueにセットし、新たなWBEとして再利用する(処理903)。
Next, as shown in FIG. 9, the
さらに図5から図7を参照して、穴埋めリード処理によるクラスタデータの転送中と転送完了時とに分けて、ライトバッファ30内でのマージ処理を説明する。
Further, with reference to FIG. 5 to FIG. 7, the merge process in the
図5と図6は、穴埋めリード処理によりクラスタデータの転送中でのマージ処理を示す図である。ここで、図5は、図6に示すブロック104〜111の処理に対応します。
5 and 6 are diagrams showing merge processing during transfer of cluster data by hole filling read processing. Here, FIG. 5 corresponds to the processing of
まず、WBEコントローラ32は、古いエントリWBE#Xのデータ受信状態がクラスタサイズの場合には、図4に示すように、クラスタデータがセットされた状態(ready)に遷移する(ブロック101のNO)。この場合、コントローラ17は、フラッシュメモリ22に対して1回のアクセスで当該クラスタデータを書き込む。
First, when the data reception state of the old entry WBE # X is a cluster size, the
WBEコントローラ32は、クラスタサイズに満たない場合には、穴埋め処理(マージ処理)のための穴埋めリードコマンドを発行し、図5に示すread状態60に遷移する(ブロック102)。ここで、古いエントリWBE#X及び新しいエントリWBE#Yは、同一のLCA(X0)である。コントローラ17は、フラッシュメモリ22からLCA(X0)のクラスタデータを読み出し(状態61)、穴埋めリード用バッファ35に格納する。
If it is less than the cluster size, the
WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、マージ元のエントリ番号WBE#Xのリードコマンドが存在すれば、当該クラスタデータが転送中と判定する(ブロック103のNO)。この時点で、同一のLCA(X0)の新しいエントリWBE#Yのデータを受信すると(状態70)、WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、古いエントリWBE#Xの存在を確認する(ブロック104のYES)。
The
WBEコントローラ32は、古いエントリWBE#X及び新しいエントリWBE#Yのアドレス付け替え処理を実行する(ブロック105)。これにより、穴埋めリード完了待ちキュー34の古いエントリWBE#Xは、新しいエントリWBE#Yに更新される(ブロック106)。即ち、ライトバッファ30内では、新しいエントリWBE#Yに対するライトバッファ30内でのマージ処理が実行される(状態63)。但し、この間,クラスタデータの転送が完了しても、穴埋め完了処理を実行しない。
The
WBEコントローラ32は、マージ処理完了後に、新しいエントリWBE#Yをエントリ状態63(read)に遷移し、古いエントリWBE#Xをキュー管理モジュール33のWBE invalid Queueにセットする(ブロック107、状態64)。
After the merge process is completed, the
次に、WBEコントローラ32は、穴埋めリード完了待ちキュー34を参照し、エントリ番号WBE#Yのクラスタデータが転送完了であるか否かを判定する(ブロック108)。クラスタデータの転送完了後であれば、WBEコントローラ32は、穴埋めリード完了待ちキュー34を更新し、WBE#Yを消去する(ブロック109)。
Next, the
WBEコントローラ32は、古いエントリWBE#Xの穴埋め処理を完了し、アドレス付け替え処理を実行する(ブロック110)。WBEコントローラ32は、マージ処理完了後に、新しいエントリWBE#Yをクラスタデータがセットされた状態(ready)に遷移する(ブロック111)。
The
次に、図6と図7を参照して、穴埋めリード処理によるクラスタデータの転送完了時でのマージ処理を説明する。ここで、図7は、図6に示すブロック112〜116の処理に対応します。なお、処理117はWAW処理が発生しない場合である。
Next, with reference to FIG. 6 and FIG. 7, a merge process when the transfer of cluster data by the hole filling read process is completed will be described. Here, FIG. 7 corresponds to the processing of
WBEコントローラ32は、クラスタデータ転送完了を待って、穴埋めリード完了待ちキュー34を更新し、エントリWBE#Xを消去する(ブロック112)。WBEコントローラ32は、エントリWBE#Xの穴埋め処理を完了し、アドレス付け替え処理を実行する(ブロック113)。この時点で、同一のLCA(X0)の新しいエントリWBE#Yのデータを受信すると(状態70)、WBEコントローラ32は、古いエントリWBE#X及び新しいエントリWBE#Yのアドレス付け替え処理を実行する(ブロック114のYES,115)。
The
WBEコントローラ32は、マージ処理完了後に、新しいエントリWBE#Yをクラスタデータがセットされた状態(ready)に遷移し、古いエントリWBE#Xをキュー管理モジュール33のWBE invalid Queueにセットする(ブロック116)。また、WBEコントローラ32は、エントリWBE#Yのデータを受信しない場合、エントリWBE#Xをクラスタデータがセットされた状態(ready)に遷移する(ブロック117)。
After the merge process is completed, the
以上のように本実施形態によれば、ホストデバイス23から転送される書き込み要求のライトデータがクラスタサイズ未満の場合には、ライトデータ処理モジュール13は穴埋めリード処理により、クラスタ単位のデータにセットする。このため、フラッシュメモリ22に対して1回のアクセスで書き込むことが可能である。ここで、ホストデバイス23からLCAが重複する古いエントリWBE#Xと新しいエントリWBE#Yのライトデータが転送された場合でも、穴埋めリード処理とフラッシュメモリ22に対する書き込み処理をそれぞれ1回で行なうことができる。従って、必要最小限のフラッシュメモリ22に対するアクセスでクラスタデータをセットし、効率的なフラッシュメモリに対する書き込み動作を実現できる。
As described above, according to the present embodiment, when the write data of the write request transferred from the
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
10…フラッシュメモリコントローラ、
12…ホストインターフェースコントローラ(ホストI/Fコントローラ)、
13…ライトデータ処理モジュール、14…リードデータ処理モジュール、
15…アドレス管理モジュール、16…ECC処理及びログ生成モジュール、
17…NANDコントローラ、19…マイクロプロセッサ(CPU)、
22…フラッシュメモリ、30…ライトバッファメモリ、
31…WBE管理情報バッファメモリ、32…WBEステート遷移コントローラ、
33…キュー(Queue)管理モジュール、
34…穴埋めリード完了待ちキュー(Queue)モジュール、
35…穴埋めリード用バッファメモリ。
10: Flash memory controller,
12: Host interface controller (host I / F controller),
13 ... Write data processing module, 14 ... Read data processing module,
15 ... Address management module, 16 ... ECC processing and log generation module,
17 ... NAND controller, 19 ... Microprocessor (CPU),
22: Flash memory, 30: Write buffer memory,
31 ... WBE management information buffer memory, 32 ... WBE state transition controller,
33 ... Queue management module,
34 ... Queue module for filling hole completion,
35 ... Buffer memory for filling holes.
Claims (10)
ホスト装置からの書き込みデータを順次格納するバッファメモリと、
前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込むコントローラと、
ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する書き込みデータ処理手段とを有し、
前記書き込みデータ処理手段は、
前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するデータ記憶装置。 A flash memory having a predetermined size of data as a writing unit;
A buffer memory for sequentially storing write data from the host device;
A controller that writes the data of the predetermined size stored in the buffer memory to the flash memory;
When the write data from the host device is less than the predetermined size, the data of the predetermined size managed at the same address as the write data is read from the flash memory, and the write data is included in the buffer memory. Write data processing means for executing merge processing for setting data of a predetermined size,
The write data processing means includes
When there is new write data managed at the same address as the old write data in the buffer memory when reading data from the flash memory or when reading is completed, the new write data is used as merge target data. A data storage device that performs merge processing in a buffer memory.
前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、
前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、
前記穴埋めリード処理の完了前に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送する前に前記バッファメモリ内でのマージ処理を先行して実行する手段と
を含む請求項1に記載のデータ記憶装置。 The write data processing means includes
Hole filling read processing means for reading out data of the predetermined size from the flash memory as hole filling data;
Means for determining completion of the hole filling lead processing of the hole filling lead processing means;
When the new write data is stored in the buffer memory before completion of the hole filling read processing, the merge processing in the buffer memory is executed in advance before transferring the hole filling data to the buffer memory. The data storage device according to claim 1, further comprising:
前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、
前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、
前記穴埋めリード処理の完了後に、前記新書き込みデータが前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送した後に前記バッファメモリ内でのマージ処理を実行する手段と
を含む請求項1に記載のデータ記憶装置。 The write data processing means includes
Hole filling read processing means for reading out data of the predetermined size from the flash memory as hole filling data;
Means for determining completion of the hole filling lead processing of the hole filling lead processing means;
Means for executing merge processing in the buffer memory after transferring the hole filling data to the buffer memory when the new write data is stored in the buffer memory after completion of the hole filling read processing; The data storage device according to claim 1, comprising:
前記ホスト装置からの書き込みデータが前記所定サイズとしてクラスタサイズのクラスタデータであるか否かを判定し、
前記書き込みデータが前記クラスタサイズ未満の場合に、前記フラッシュメモリから前記旧書き込みデータと同一のアドレスで管理されている前記クラスタデータを読み出し、前記バッファメモリに前記穴埋め用データを転送する請求項1に記載のデータ記憶装置。 The write data processing means includes
Determine whether the write data from the host device is cluster data of the cluster size as the predetermined size,
2. The cluster data managed by the same address as the old write data is read from the flash memory when the write data is smaller than the cluster size, and the hole filling data is transferred to the buffer memory. The data storage device described.
前記書き込みデータを順次格納するバッファメモリのアドレスをエントリ番号で管理するバッファエントリ管理手段を含み、
前記新書き込みデータと前記旧書き込みデータのアドレス付け替え処理を実行して前記バッファメモリ内でのマージ処理を実行する請求項1から請求項4のいずれか1項に記載のデータ記憶装置。 The write data processing means includes
Buffer entry management means for managing an address of a buffer memory for sequentially storing the write data by an entry number;
5. The data storage device according to claim 1, wherein an address reassigning process of the new write data and the old write data is executed to execute a merge process in the buffer memory. 6.
ホスト装置からの書き込みデータを順次格納するバッファメモリと、
前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込むコントローラと、
ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行する書き込みデータ処理手段とを有し、
前記書き込みデータ処理手段は、
前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するメモリ制御装置。 In a memory control device of a data storage device having a flash memory in which data of a predetermined size is used as a writing unit,
A buffer memory for sequentially storing write data from the host device;
A controller that writes the data of the predetermined size stored in the buffer memory to the flash memory;
When the write data from the host device is less than the predetermined size, the data of the predetermined size managed at the same address as the write data is read from the flash memory, and the write data is included in the buffer memory. Write data processing means for executing merge processing for setting data of a predetermined size,
The write data processing means includes
When there is new write data managed at the same address as the old write data in the buffer memory when reading data from the flash memory or when reading is completed, the new write data is used as merge target data. A memory control device that performs merge processing in a buffer memory.
前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、
前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、
前記穴埋めリード処理の完了前に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送する前に前記バッファメモリ内でのマージ処理を先行して実行する手段と
を含む請求項6に記載のメモリ制御装置。 The write data processing means includes
Hole filling read processing means for reading out data of the predetermined size from the flash memory as hole filling data;
Means for determining completion of the hole filling lead processing of the hole filling lead processing means;
When the new write data is stored in the buffer memory before completion of the hole filling read processing, the merge processing in the buffer memory is executed in advance before transferring the hole filling data to the buffer memory. The memory control device according to claim 6, further comprising:
前記フラッシュメモリから前記所定サイズのデータを穴埋め用データとして読み出す穴埋めリード処理手段と、
前記穴埋めリード処理手段の穴埋めリード処理の完了を判定する手段と、
前記穴埋めリード処理の完了後に、前記新書き込みデータ前記バッファメモリ内に格納された場合に、前記穴埋め用データを前記バッファメモリに転送した後に前記バッファメモリ内でのマージ処理を実行する手段と
を含む請求項6に記載のメモリ制御装置。 The write data processing means includes
Hole filling read processing means for reading out data of the predetermined size from the flash memory as hole filling data;
Means for determining completion of the hole filling lead processing of the hole filling lead processing means;
Means for executing merge processing in the buffer memory after transferring the hole filling data to the buffer memory when the new write data is stored in the buffer memory after completion of the hole filling read processing. The memory control device according to claim 6.
前記書き込みデータを順次格納するバッファメモリのアドレスをエントリ番号で管理するバッファエントリ管理手段を含み、
前記新書き込みデータと前記旧書き込みデータのアドレス付け替え処理を実行して前記バッファメモリ内でのマージ処理を実行する請求項6から請求項8のいずれか1項に記載のメモリ制御装置。 The write data processing means includes
Buffer entry management means for managing an address of a buffer memory for sequentially storing the write data by an entry number;
9. The memory control device according to claim 6, wherein an address reassigning process of the new write data and the old write data is executed to execute a merge process in the buffer memory. 10.
ホスト装置からの書き込みデータをバッファメモリに順次格納し、
前記バッファメモリに格納された前記所定サイズのデータを前記フラッシュメモリに書き込み、
ホスト装置からの書き込みデータが前記所定サイズ未満の場合に、前記フラッシュメモリから前記書き込みデータと同一のアドレスで管理されている前記所定サイズのデータを読み出し、
前記バッファメモリ内で前記書き込みデータを含む前記所定サイズのデータをセットするためのマージ処理を実行し、
前記マージ処理は、
前記フラッシュメモリからのデータの読み出し時または読み出し完了時に、前記バッファメモリ内での旧書き込みデータと同一のアドレスで管理される新書き込みデータが存在した場合に、前記新書き込みデータをマージ対象データとして前記バッファメモリ内でのマージ処理を実行するメモリ制御方法。 A memory control method applied to a data storage device having a flash memory having a predetermined size of data as a writing unit,
Write data from the host device is sequentially stored in the buffer memory,
Writing the predetermined size data stored in the buffer memory to the flash memory;
When the write data from the host device is less than the predetermined size, the data of the predetermined size managed by the same address as the write data is read from the flash memory,
Performing a merge process for setting the data of the predetermined size including the write data in the buffer memory;
The merge process
When there is new write data managed at the same address as the old write data in the buffer memory when reading data from the flash memory or when reading is completed, the new write data is used as merge target data. A memory control method for performing merge processing in a buffer memory.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011200018A JP2013061814A (en) | 2011-09-13 | 2011-09-13 | Data storage, memory controller and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011200018A JP2013061814A (en) | 2011-09-13 | 2011-09-13 | Data storage, memory controller and method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013061814A true JP2013061814A (en) | 2013-04-04 |
Family
ID=48186430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011200018A Withdrawn JP2013061814A (en) | 2011-09-13 | 2011-09-13 | Data storage, memory controller and method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013061814A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016224708A (en) * | 2015-05-29 | 2016-12-28 | 株式会社東芝 | Memory system |
CN117854553A (en) * | 2024-03-06 | 2024-04-09 | 北京云豹创芯智能科技有限公司 | Data shaping circuit, method and chip |
-
2011
- 2011-09-13 JP JP2011200018A patent/JP2013061814A/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016224708A (en) * | 2015-05-29 | 2016-12-28 | 株式会社東芝 | Memory system |
CN117854553A (en) * | 2024-03-06 | 2024-04-09 | 北京云豹创芯智能科技有限公司 | Data shaping circuit, method and chip |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8996791B2 (en) | Flash memory device, memory control device, memory control method, and storage system | |
JP4829365B1 (en) | Data storage device and data writing method | |
KR101086857B1 (en) | Control Method of Solid State Storage System for Data Merging | |
US9268687B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US20140289451A1 (en) | Method of recording mapping information, and memory controller and memory storage apparatus using the same | |
US9280460B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US8510502B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US8589619B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US10310764B2 (en) | Semiconductor memory device and storage apparatus comprising semiconductor memory device | |
US8966157B2 (en) | Data management method, memory controller and memory storage apparatus | |
US9977626B2 (en) | Implementing scattered atomic I/O writes | |
CN110674056B (en) | Garbage recovery method and device | |
US8667348B2 (en) | Data writing method for non-volatile memory module and memory controller and memory storage apparatus using the same | |
US9721669B2 (en) | Data protection method, memory control circuit unit and memory storage apparatus | |
TWI421870B (en) | Data writing method for a flash memory, and controller and storage system using the same | |
TWI459198B (en) | Memory storage device, memory controller thereof, and method for identifying valid data | |
US8812772B2 (en) | Data merging method for non-volatile memory and controller and storage apparatus using the same | |
JP2011090496A (en) | Semiconductor storage device and control method | |
US20150205538A1 (en) | Storage apparatus and method for selecting storage area where data is written | |
US20140089566A1 (en) | Data storing method, and memory controller and memory storage apparatus using the same | |
JP2012248109A (en) | Memory unit having multiple channels and read command group generating method for compaction in the memory unit | |
US8762685B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US9312011B1 (en) | Data writing method, memory storage device and memory control circuit unit | |
US9304906B2 (en) | Memory system, controller and control method of memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131205 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131212 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131219 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20131226 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20140109 |
|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20141202 |