JP2021043908A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2021043908A JP2021043908A JP2019167659A JP2019167659A JP2021043908A JP 2021043908 A JP2021043908 A JP 2021043908A JP 2019167659 A JP2019167659 A JP 2019167659A JP 2019167659 A JP2019167659 A JP 2019167659A JP 2021043908 A JP2021043908 A JP 2021043908A
- Authority
- JP
- Japan
- Prior art keywords
- data
- movement
- move
- block
- physical address
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
- G06F12/0276—Generational garbage collection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】不揮発性メモリ内のデータ配置を効率よく制御できるメモリシステムを提供する。【解決手段】情報処理システム1は、メモリシステムとしてソリッドステートドライブ(SSD)3を含む。メモリシステムは、複数のブロックを含む不揮発性メモリ5と、不揮発性メモリを制御するコントローラ4とを備える。コントローラは、移動対象データの論理アドレスを指定する移動要求をホスト2から受信し、移動要求の受信から指定された論理アドレスに対応するデータの移動の開始までの期間に、指定された論理アドレスに対応する更新データがホストからの書き込み要求によって不揮発性メモリに書き込まれなかった場合、指定された論理アドレスに関連付けられた不揮発性メモリの物理アドレスに格納されているデータを不揮発性メモリ内の移動先ブロックに移動する移動処理を実行し、当該期間に更新データが書き込まれた場合、当該移動処理を実行しない。【選択図】図1
Description
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。
SSDは、データセンターのサーバのような様々なホスト計算機システムのストレージデバイスとして使用されている。
SSDにおいては、不揮発性メモリ内のデータ配置を効率よく制御するための仕組みの実現が求められている。
本発明が解決しようとする課題は、不揮発性メモリ内のデータ配置を効率よく制御することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備する。前記コントローラは、移動対象データの論理アドレスを指定する移動要求を前記ホストから受信する。前記コントローラは、前記移動要求の受信から前記指定された論理アドレスに対応するデータの移動の開始までの期間に、前記指定された論理アドレスに対応する更新データが前記ホストからの書き込み要求によって前記不揮発性メモリに書き込まれなかった場合、前記指定された論理アドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されているデータを前記不揮発性メモリ内の移動先ブロックに移動する移動処理を実行する。前記物理アドレスは論理物理アドレス変換テーブルを参照することによって取得される。前記コントローラは、前記期間に前記更新データが前記不揮発性メモリに書き込まれた場合、前記移動処理を実行しない。
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
図1は、第1の実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
(第1実施形態)
図1は、第1の実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、SSD3をストレージとして使用するように構成された情報処理装置によって実現される。この情報処理装置は、パーソナルコンピュータ、サーバコンピュータなどのコンピュータであってもよいし、タブレット、スマートフォンなどの携帯端末であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
SSD3は、ホスト2として機能する情報処理装置の外部記憶装置として使用され得る。SSD3は情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0〜BLKm−1を含む。ブロックBLK0〜BLKm−1の各々は複数のページ(ここではページP0〜Pn−1)を含む。ブロックBLK0〜BLKm−1の各々は、データを消去(イレーズ)する単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0〜Pn−1の各々は、データの書き込み(プログラム)および読み出しの単位である。
コントローラ4は、ToggleNANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(NAND型フラッシュメモリダイ)を含んでいてもよい。この場合、NANDインタフェース13は複数のチャンネルChを介して複数のNAND型フラッシュメモリチップにそれぞれ接続されてもよい。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、等が含まれる。論理アドレスは、SSD3の論理アドレス空間内の位置をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、一般に、LBA(logical block address(addressing))が使用され得る。
SSD3にアクセスするためにホスト2によって使用される論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル:L2Pテーブル)31を用いて実行される。コントローラ4は、L2Pテーブル31を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。L2Pテーブル31は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。DRAM6には、L2Pテーブル31全部がSSD3の電源オン時にロードされてもよいし、L2Pテーブル31のうちの必要な部分がSSD3の動作中にその都度ロードされてもよい。
NAND型フラッシュメモリ5においては、ページへのデータ書き込みは1消去サイクル当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。このため、既に書き込まれているデータを更新(変更)する場合には、コントローラ4はそのブロック(または別のブロック)内の未使用領域(未書き込み領域)に新たなデータ(更新データ)を書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル31を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
ブロック管理には、バッドブロック(不良ブロック)の管理と、ウェアレベリングと、ガベージコレクション(GC)等が含まれる。GCは「コンパクション」と称されることもある。ウェアレベリングは、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。GCは、フリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。GCにおいては、コントローラ4は、有効データと無効データとが混在するブロック内の有効データを別のブロック(例えばフリーブロック)に移動する。そして、コントローラ4は、L2Pテーブル31を更新して、移動された有効データの論理アドレスに移動先の物理アドレスをマッピングする。有効データが別のブロックに移動されることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは、このブロックに対する消去動作が実行された後にデータの書き込みのために再利用することが可能となる。
ここで、有効データとは、ある論理アドレスに関連付けられているデータを意味する。例えば、L2Pテーブル31から参照されているデータ(すなわち論理アドレスから最新のデータとして紐付けられているデータ)は有効データであり、後にホスト2からリードされる可能性がある。無効データとは、どの論理アドレスにも関連付けられていないデータを意味する。どの論理アドレスにも関連付けられていないデータは、もはやホスト2からリードされる可能性が無いデータである。
このように、コントローラ4は、あるデータを移動元ブロックから読み出し且つこの読み出したデータを移動先ブロックに書き込む。そして、コントローラ4は、このデータの論理アドレスに関連付けられる物理アドレスが移動元の物理アドレスから移動先の物理アドレスに変更されるようにL2Pテーブル31を更新する。したがって、移動元の物理アドレスに存在していたデータは無効化されるので、データは、その論理アドレスが維持されたまま、移動元の物理アドレスから移動先の物理アドレスに移動される。
SSD3に記録されたデータの寿命などの情報は、SSD3自体よりもホスト2のほうが正確に把握している。そのためGC等のための移動処理(論理アドレスを維持したままデータを移動する処理)を、ホスト2の指示で行うと、SSD3の性能をライトアンプリフィケーションファクタ(WAF)などの観点で改善することが期待される。ここで、データの寿命とは、そのデータが生成される時点からこのデータがその削除または更新(変更)によって無効化される時点までの期間を意味する。同じまたは類似する寿命を有するデータを同じブロックに格納することができたならば、このブロックに格納されている全てのデータがほぼ同時にその削除または更新(変更)によって無効化される可能性が高い。全てのデータが無効化されたブロックに関しては、有効データを他のブロックに移動すること無く、このブロックに対する消去動作を実行することのみによって、このブロックをフリーブロックにすることができる。よって、ホスト2の指示に基づいて移動処理を実行することにより、同じまたは類似する寿命を有するデータ同士を同じブロックに格納するといった、データの寿命を考慮したデータ配置を実現できる。この結果、GC等のためにNAND型フラッシュメモリ5に書き込まれるデータの量を低減できるので、WAFを下げることが可能となる。
ホスト2は、移動要求をSSD3に送出することによって、特定のデータの移動をSSD3のコントローラ4に指示する。なお、ホスト2が主体となって上述した移動処理を実行する場合の詳細は後述するため、ここではその詳しい説明を省略する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、直接メモリアクセスコントローラ(DMAC)15、内部バッファ16、ECCエンコード/デコード部17、等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、直接メモリアクセスコントローラ(DMAC)15、内部バッファ16、ECCエンコード/デコード部17は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってもよい。あるいは、SSD3がEthernet(登録商標)を介してホスト2に接続される構成においては、ホストインタフェース11は、NVMe over Fabrics(NVMeOF)コントローラであってもよい。
ホストインタフェース11は、ホスト2から様々なコマンドを受信する。これらコマンドには、ライトコマンド(ライト要求、書き込み要求)、リードコマンド(リード要求、読み出し要求)、移動コマンド(移動要求)、他の様々なコマンドが含まれる。
ライトコマンドは書き込むべきデータ(ライトデータ)をSSD3に書き込むコマンド(ライト要求、書き込み要求)であり、ライトデータの論理アドレス(開始LBA)、このライトデータの長さ、このライトデータが格納されているホスト2のメモリ内のライトバッファ内の位置を示すデータポインタ(バッファアドレス)、等を含む。
リードコマンドはデータをSSD3から読み出すコマンド(リード要求、読み出し要求)であり、読み出すべきデータの論理アドレス(開始LBA)、このデータの長さ、このデータが転送されるべきホスト2のメモリ内のリードバッファ内の位置を示すデータポインタ(バッファアドレス)、等を含む。
移動コマンドはデータ(移動対象データ)をNAND型フラッシュメモリ5に含まれる移動元ブロックから移動先ブロックに移動するコマンド(移動要求)であり、移動対象データの論理アドレスを指定する。なお、移動コマンドは、移動対象データの論理アドレスのみならず、移動対象データが移動されるべき移動先ブロックを指定するパラメータを含んでいてもよい。移動先ブロックを指定するパラメータは、移動先ブロックの識別子であってもよい。具体的には、移動コマンドは、例えば図2に示すように、コマンドコード、LBAリスト、移動先ブロックの識別子を含んでいてもよい。コマンドコードは移動要求のコマンドコードを示す。LBAリストは移動対象データを指定する1つ以上のLBAを含む。移動先ブロックの識別子は、例えば、移動先ブロックのブロックアドレスである。以下では、移動先ブロックの識別子は移動先ブロックIDと称する。
あるいは、移動コマンドは、図3に示すように、上述した移動先ブロックIDに代えて、ストリームを識別するための識別子(ストリームID)を含んでいてもよい。この場合、移動コマンドに含まれるストリームIDによって識別されるストリームに割り当てられたブロックが、移動対象データを移動する移動先ブロックとして決定される。なお、ストリームとは、NAND型フラッシュメモリ5に含まれる複数のブロックの用途を大別するものであり、例えば、寿命の長いデータに関連付けられたストリーム、寿命の短いデータに関連付けられたストリーム、等があってもよい。一般に、ストリーム書き込みを実行するためのライトコマンドが知られている。ストリーム書き込みにおいては、あるストリームIDを指定するライトコマンドに関連付けられたライトデータはこのストリームIDのストリームに割り当てられた書き込み先ブロックに書き込まれ、他のストリームIDを指定するライトコマンドに関連付けられたライトデータはこの別のストリームIDのストリームに割り当てられた別の書き込み先ブロックに書き込まれる。移動先ブロックとして使用されるべきブロックを決定するためのストリーム群は、書き込み先ブロックに割り当てられたストリーム群と同じであってもよい。あるいは、移動先ブロックとして使用されるべきブロックを決定するためのストリーム群は、書き込み先ブロックに割り当てられたストリーム群とは異なる別個のストリーム群として規定されていてもよい。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、SSD3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。CPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
コンローラ4においては、FTLを実現するための構成要素として、ライト制御部21、リード制御部22および移動制御部23が存在する。これらライト制御部21、リード制御部22および移動制御部23は、CPU12によって実行される上述のファームウェアによって実現されてもよい。なお、これらライト制御部21、リード制御部22および移動制御部23の各々の一部または全部も、コントローラ4内の専用ハードウェアによって実現されてもよい。
ライト制御部21は、ホスト2から受信されるライトコマンド(書き込み要求)に応じて、ライトコマンドに関連付けられたライトデータをNAND型フラッシュメモリ5に書き込むための処理を実行する。コントローラ4が図3に示した形態の移動コマンドをホスト2から受信するように構成されている場合においては、ライト制御部21は、上述のストリーム書き込み動作をサポートする。ライト制御部21は、NAND型フラッシュメモリ5の複数のブロックから複数のストリームに対応する複数の書き込み先ブロックを割り当て、これら割り当てられた複数の書き込み先ブロックを管理する。なお、ホスト2から受信される移動コマンドが、図2に示した形態の移動コマンドのみであり、図3に示した形態の移動コマンドがホスト2から受信されない場合、ライト制御部21は、上述のストリーム書き込み動作をサポートしていなくてもよい。
リード制御部22は、ホスト2からリードコマンドを受信し、この受信されたリードコマンドによって指定されたデータをNAND型フラッシュメモリ5から読み出す。
移動制御部23は、ホスト2から移動コマンド(移動要求)を受信し、この受信された移動コマンドに含まれるLBAリストによって指定された論理アドレスに対応する移動対象データを、NAND型フラッシュメモリ5の複数のブロックのうち、受信された移動コマンドに含まれる移動先ブロックIDまたはストリームIDによって指定された移動先ブロックに移動する。なお、移動コマンドが移動先ブロックを指定するパラメータ(移動先ブロックIDまたはストリームID)を含んでいない場合には、移動制御部23が移動先ブロックを決定してもよい。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、L2Pテーブル31用の記憶領域として利用されてもよい。
DMAC15は、CPU12の制御の下、ホスト2のメモリと内部バッファ16との間のデータ転送を実行する。ホスト2のメモリ内のライトバッファから内部バッファ16にライトデータを転送すべき場合には、CPU12は、ホスト2のメモリ内のライトバッファ上の位置を示す転送元アドレス、データサイズ、内部バッファ16上の位置を示す転送先アドレスをDMAC15に対して指定する。
ECCエンコード/デコード部17は、NAND型フラッシュメモリ5にデータをライトすべき時、データ(書き込むべきデータ)をエンコード(ECCエンコード)することによってこのデータにエラー訂正コード(ECC)を冗長コードとして付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部17は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行う(ECCデコード)。
図4は、ストリーム書き込み処理のために使用される複数のストリームにそれぞれ割り当てられた複数の書き込み先ブロックの一つを移動先ブロックとして使用する構成を示す。
図4では、ストリームID#1のストリームに対して書き込み先ブロックBLK10が関連付けられており、ストリームID#2のストリームに対して書き込み先ブロックBLK20が関連付けられており、ストリームID#3のストリームに対して書き込み先ブロックBLK30が関連付けられており、ストリームID#4のストリームに対して書き込み先ブロックBLK40が関連付けられており、ストリームID#5のストリームに対して書き込み先ブロックBLK50が関連付けられており、ストリームID#6のストリームに対して書き込み先ブロックBLK60が関連付けられており、そしてストリームID#nのストリームに対して書き込み先ブロックBLK100が関連付けられている場合が例示されている。あるストリームに対する書き込み先ブロックがデータで満たされると、フリーブロックがこのストリームの新たな書き込み先ブロックとして割り当てられ、以降はこの新たな書き込み先ブロックがこのストリーム用の書き込み先ブロックとして使用される。
ストリームID#1を含む書き込み要求に関連付けられたライトデータは書き込み先ブロックBLK10に書き込まれ、ストリームID#2を含む書き込み要求に関連付けられたライトデータは書き込み先ブロックBLK20に書き込まれ、ストリームID#nを含む書き込み要求に関連付けられたライトデータは書き込み先ブロックBLK100に書き込まれる。
また、図4では、ストリームID#1のストリームに対する書き込み先ブロックBLK10がストリームID#1のストリームに対する移動先ブロックBLK10としても関連付けられており、またストリームID#nのストリームに対する書き込み先ブロックBLK100がストリームID#nのストリームに対する移動先ブロックBLK100としても関連付けられている場合が例示されている。なお、説明の便宜上、図4では図示を省略しているが、ストリームID#2〜#6のストリームに対する書き込み先ブロックBLK20〜BLK60はストリームID#2〜#6のストリームに対する移動先ブロックBLK20〜BLK60としてもそれぞれ関連付けられている。
ストリームID#1を含む移動要求により指定される移動対象データは移動先ブロックBLK10に移動され、ストリームID#2を含む移動要求により指定される移動対象データは移動先ブロックBLK20に移動され、ストリームID#nを含む移動要求により指定される移動対象データは移動先ブロックBLK100に移動される。
図5は、ホスト2からの移動要求(移動コマンド)の受信に応じて第1実施形態に係るメモリシステムにおいて実行される移動処理の概要を示す。より詳しくは、図5は、SSD3のコントローラ4がホスト2から移動要求を受信し、この受信された移動要求にしたがって、移動対象データを移動元ブロックから移動先ブロックに移動する動作を示す。
ホスト2からの移動要求は、上述したように、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID(またはストリームID)、等を含む。なお、以下では、主に、ホスト2からの移動要求が移動先ブロックIDを含む場合のSSD3のコントローラ4の各種動作を説明するが、ホスト2からの移動要求がストリームIDを含む場合もコントローラ4は同様に動作可能である。
図5においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1,LBA2,LBA3,LBA4,LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、等を含む場合が例示されている。また、図5においては、LBA1に対応するデータがデータD1であり、LBA2に対応するデータがデータD2であり、LBA3に対応するデータがデータD3であり、LBA4に対応するデータがデータD4であり、LBA5に対応するデータがデータD5である場合が例示されている。
まず、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、当該LBAリストにより指定された論理アドレスに対応するデータが移動対象データであることを認識し、且つ、当該移動要求に含まれる移動先ブロックIDを参照して、当該移動対象データの移動先ブロックを認識する。そして、コントローラ4は、移動対象データを移動先ブロック内の未使用領域に順に移動する移動処理を開始する。
具体的には、コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して、移動対象データが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置(移動元ブロック)を認識し、当該移動対象データを移動元ブロックから移動先ブロックに移動する。そして、コントローラ4は、移動対象データの論理アドレスに移動先物理アドレスが関連付けられるようにL2Pテーブル31を更新し、これによって移動対象データを移動先ブロックにおける有効データとして扱い、且つ、移動元ブロックに含まれる以前のデータを無効データとして扱う。
図5の場合、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、LBA1〜LBA5に対応するデータD1〜データD5が移動対象データであることを認識する。また、コントローラ4は、受信した移動要求に含まれる移動先ブロックIDを参照して、移動対象データD1〜移動対象データD5の移動先ブロックがブロックBであることを認識する。そして、コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して移動対象データD1〜移動対象データD5が格納されている物理アドレスそれぞれを取得して、移動対象データD1〜移動対象データD5がそれぞれ格納されている移動元ブロックを個別に認識する。図5では、移動対象データD1〜移動対象データD5がそれぞれブロックAに格納されている場合が例示されているが、一般には、移動対象データD1〜移動対象データD5は異なるブロックに格納されている場合もある。コントローラ4は、各移動対象データを、各移動対象データが格納されている移動元ブロックから、移動先ブロックに移動する。図5に示すように、移動対象データD1〜移動対象データD5がそれぞれブロックAに格納されている場合には、コントローラ4は、LBA1〜LBA5に対応する移動対象データD1〜移動対象データD5を、移動元ブロックAから移動先ブロックB内の未使用領域に移動し、移動対象データD1〜移動対象データD5をブロックBにおける有効データとして扱い、且つ、移動元ブロックAに含まれる以前のデータを無効データとして扱う。換言すれば、コントローラ4は、移動対象データD1〜移動対象データD5に対応するLBA1〜LBA5に関連付けられる物理アドレスが移動元ブロックAの物理アドレスから移動先ブロックBの物理アドレスに変更されるようにL2Pテーブル31を更新する。
以上説明した図5の動作によれば、ホスト2の指示に従って移動処理を実行することができるので、例えば、同じ寿命を有するデータを同じブロックに格納するというデータ配置を実現することができる。
しかしながら、ホスト2からの移動要求は移動対象データの論理アドレスを指定するため、もし、移動対象データの移動処理が開始される前に、ホスト2からの書き込み要求によってこの論理アドレスに対応する更新データ(新たなライトデータ)がNAND型フラッシュメモリ5に書き込まれると、無駄なデータの移動が生じる可能性がある。以下、具体的に説明する。
図6は、移動対象データが更新された場合に生じ得る無駄なデータの移動を示す。より詳しくは、図6は、SSD3のコントローラ4がホスト2からの移動要求を受信してから、当該移動要求により指定された論理アドレスに対応するデータの移動を開始するまでの期間(第1期間)に、当該指定された論理アドレスに対応する更新データがホスト2からの書き込み要求によってNAND型フラッシュメモリ5に書き込まれてしまった場合に生じ得る無駄なデータの移動を示す。
なお、図6においては、上述した図5の場合と同様に、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリストと、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックIDと、を含む場合が例示されている。また、図6においては、移動要求を受信した時点では、LBA1〜LBA5に対応するデータD1〜データD5がブロックAに格納されている場合が例示されている。
まず、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、指定された論理アドレスに対応するデータが移動対象データであることを認識し、且つ、当該移動要求に含まれる移動先ブロックIDを参照して、当該移動対象データの移動先ブロックを認識すると、当該移動対象データを当該移動先ブロック内の未使用領域に順に移動する移動処理を開始する。移動処理では、コントローラ4は、L2Pテーブル31から移動対象データの物理アドレスを取得し、移動対象データをこの物理アドレスから読み出し、そしてこの読み出した移動対象データを移動先ブロックに書き込む。
図6(a)においては、受信した移動要求により指定されたLBA1およびLBA2に対応するデータD1およびデータD2を、移動元ブロックAから移動先ブロックBに移動する処理が完了し、当該移動要求により指定されたLBA3〜LBA5に対応するデータD3〜データD5を移動する処理が開始されていない状態が例示されている。移動が完了したデータD1およびデータD2は、移動先ブロックBにおいてLBA1およびLBA2に対応する有効データとして扱われ、移動元ブロックAに含まれる以前のデータは無効データとして扱われる。換言すれば、コントローラ4は、データD1およびデータD2に対応するLBA1およびLBA2に関連付けられる物理アドレスが移動元ブロックAの物理アドレスから移動先ブロックBの物理アドレスに変更されるようにL2Pテーブル31を更新する。なお、ここでは、移動対象データが移動元ブロックから移動先ブロックに移動される度にL2Pテーブル31が更新される場合を例示しているが、L2Pテーブル31は、受信した移動要求に伴う一連の移動処理が完了した後にまとめて更新されてもよい。
ここで、図6(b)に示すように、コントローラ4により、移動が開始されていない移動対象データに対応する論理アドレスを指定したホスト2からの書き込み要求が受信された場合を想定する。図6(b)においては、ホスト2からの書き込み要求が、ライトデータ(更新データ)の論理アドレスとしてLBA4、等を含む場合が例示されている。また、図6(b)においては、書き込み要求に関連付けられたライトデータを更新データD4’と表記するものとする。
ホスト2から受信される様々なコマンドに対応する処理が並列的に実行されるケースにおいては、あるコマンドに対応する処理の実行中に別のコマンドに対する処理が実行される可能性もある。このため、移動要求に対応する一連の移動処理の実行中に書き込み要求がホスト2から受信された場合には、この移動処理の実行中に、書き込み要求に関連付けられたライトデータの書き込みが実行される場合もある。また、各コマンドに優先度が付与されているケースもある。この場合にも、あるコマンドに対応する処理の実行中に別のコマンドに対する処理が実行される可能性がある。したがって、移動が開始されていない移動対象データに対応する論理アドレスを指定したホスト2からの書き込み要求が受信された場合には、この書き込み要求に対応する書き込み処理によって移動対象データが更新(変更)される可能性がある。この場合、通常、更新データ(新たなライトデータ)は元の物理記憶位置ではなく、現在の書き込み先ブロックの未使用領域に書き込まれる。よって、移動要求によって指定された論理アドレスに対応する最新のデータ(有効データ)は移動元ブロックAに存在しなくなる。
すなわち、ホスト2からの書き込み要求を受信すると、コントローラ4は、受信した書き込み要求に関連付けられた更新データを、当該書き込み要求に含まれる論理アドレスに対応するデータとして書き込む処理を実行する。
図6(b)の場合、コントローラ4は、受信した書き込み要求に関連付けられた更新データD4’を、当該書き込み要求に含まれるLBA4に対応するデータとして、あるブロック内の未使用領域に書き込む。図6(b)では、更新データD4’がブロックBに書き込まれた場合が例示されているが、更新データD4’はブロックB以外の別のブロックの未使用領域に書き込まれてもよい。そして、コントローラ4は、LBA4に関連付けられる物理アドレスが更新前のブロックAの物理アドレスから更新後のブロックBの物理アドレスに変更されるようにL2Pテーブル31を更新し、ブロックBに含まれる更新データD4’をLBA4に対応する有効データとして扱い、ブロックAに含まれる以前のデータD4を無効データとして扱う。
コントローラ4は、書き込み要求に対応する処理を実行し終えると、移動要求に対応する処理を続行する。すなわち、コントローラ4は、移動が開始されていない状態にある移動対象データを移動する移動処理を実行する。
図6(a)に示したように、受信した移動要求により指定されたLBA1およびLBA2に対応するデータの移動は完了しているため、コントローラ4は、図6(c)に示すように、当該移動要求により指定されたLBA3〜LBA5に対応するデータを移動先ブロックBに移動する処理を実行する。
この場合、図6(c)に示すように、LBA3およびLBA5に対応するデータD3およびデータD5は、上述したLBA1およびLBA2に対応するデータD1およびデータD2と同様に、移動元ブロックAから移動先ブロックBに移動されるが、LBA4に対応するデータD4’は、図6(b)に示した書き込み要求に対応する処理により、既に移動先ブロックBに格納されているため、当該データD4’は、図6(c)に示すように、ブロックBからブロックB内の別の物理記憶位置に移動されることになる。なぜなら、L2Pテーブル31からLBA3およびLBA5に対応する物理アドレスが取得された場合、これら物理アドレスは移動元ブロックAを示すが、L2Pテーブル31からLBA4に対応する物理アドレスが取得された場合、この物理アドレスは移動先ブロックBを示すからである。このように、既に移動先ブロックBに格納されているデータを同一ブロック内の別の物理記憶位置に移動する処理は、無駄なデータの移動に相当し、GCにおいて不要な処理である。また、同一ブロック内の別の物理記憶位置にデータを移動する処理は、ブロック内の記憶領域を無駄に使用することになるため、この観点からもあまり好ましいことではない。
このような無駄なデータの移動が実行されてしまうことを抑制するために、本実施形態においては、コントローラ4は、ホスト2からの移動要求を受信した場合、DRAM6内に格納されたL2Pテーブル31を参照し、受信した移動要求に含まれるLBAリストによって指定される論理アドレスと、当該論理アドレスに関連付けられている物理アドレスと、を対応表(第1のテーブル)に格納する処理を実行する。そして、コントローラ4は、受信した移動要求にしたがって、LBAリストにより指定された論理アドレスに対応するデータの移動を開始する際には、L2Pテーブル31を参照することで、当該指定された論理アドレスに対応するデータの物理アドレスを取得し、取得した物理アドレスが、対応表により示される物理アドレスと一致するか否かを判定し、移動要求の受信から移動対象データの移動を開始するまでの期間(第1期間)に当該移動対象データが更新されたか否かを判定する。ここで、移動対象データが更新されたとは、移動対象データの論理アドレスを指定する書き込み要求によってこの論理アドレスに対応するライトデータ(更新データ)がNAND型フラッシュメモリ5に書き込まれたことを意味する。
図7は、ホスト2からの移動要求の受信に応じて、対応表に論理アドレスと物理アドレスとを格納する動作を示す。なお、図7においては、上述した図6の場合と同様に、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリストと、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックIDと、を含む場合が例示されている。また、図7においては、移動要求を受信した時点では、LBA1〜LBA5に対応するデータD1〜データD5がブロックAに格納されている点も上述した図6の場合と同様である。
コントローラ4は、受信した移動要求に含まれるLBAリストにより指定された論理アドレスを認識すると、DRAM6内に格納されたL2Pテーブル31を参照して、当該認識した論理アドレスに関連付けられている物理アドレスを取得する。なお、ここでは、対応表に格納される物理アドレスが、取得された物理アドレスのうちの一部分によって示されるブロックの識別子(例えばブロックアドレス)である場合を想定する。これは、上述した無駄なデータの移動を抑制するためには、コントローラ4は、ブロック粒度での物理アドレスを把握できれば十分なことに起因する。
図7の場合、コントローラ4は、受信した移動要求に含まれるLBAリストによりLBA1〜LBA5が指定されていることを認識し、DRAM6内のL2Pテーブル31を参照して、当該認識したLBA1〜LBA5にそれぞれ関連付けられている物理アドレスとしてブロックAの識別子を取得する。これによれば、図7に示すように、LBA1〜LBA5のそれぞれに、ブロックAの識別子が対応付けられた対応表T1が生成される。対応表T1は、例えばDRAM6内に格納される。
図8は、対応表T1に基づいて、移動対象データの移動を省略する動作を示す。
コントローラ4は、図7に示した動作により対応表T1を生成した後に、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを順に移動対象データとして選択しながら、データを移動する移動処理を実行する。
コントローラ4は、図7に示した動作により対応表T1を生成した後に、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを順に移動対象データとして選択しながら、データを移動する移動処理を実行する。
まず、コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して、移動対象データの論理アドレスに関連付けられている物理アドレスを取得する。そして、コントローラ4は、取得した移動対象データに対応する論理アドレスに関連付けられている物理アドレスと、対応表T1における当該論理アドレスに関連付けられている物理アドレスとが一致するか否かに基づいて、当該論理アドレスに対応する移動対象データが上述した第1期間中に更新されたか否かを判定する。
図8(a)においては、上述した図6(b)に示した書き込み要求に対応する処理により第1期間中に更新された、LBA4に対応するデータD4’が移動対象データである場合の移動処理が例示されている。
この場合、コントローラ4は、DRAM6内のL2Pテーブル31を参照し、移動対象データD4’に対応するLBA4に関連付けられている物理アドレスとして、ブロックBの識別子を取得する。そして、コントローラ4は、LBA4に関連付けられている物理アドレスとして取得されたブロックBの識別子と、対応表T1においてLBA4に対応付けられているブロックAの識別子とが一致していないことに基づいて、LBA4に対応するデータは第1期間中に更新されたと判定し、移動先ブロックBへの移動を省略する。このため、図8(a)に示すように、LBA4に対応するデータD4’は移動先ブロックBの別の物理記憶位置に移動されない。
以上のように、LBA4に対応するデータD4’の無駄なデータの移動が省略されることにより、移動先ブロックBには、図8(b)に示すように、受信した移動要求にしたがって移動されたLBA1〜LBA3,LBA5に対応するデータD1〜データD3,データD5と、第1期間中に受信した書き込み要求にしたがって更新されたLBA4に対応するデータD4’とが格納される。
なお、上述した図7では、ホスト2からの移動要求の受信に応じて、対応表T1に、受信した移動要求に含まれるLBAリストによって指定される論理アドレスと、当該論理アドレスに関連付けられている物理アドレスと、を格納する場合を例示したが、対応表T1には、受信した移動要求によって指定される論理アドレスに対応する移動対象データが、第1期間中に更新されたか否かを示す書き込みフラグがさらに格納されてもよい。
図9は、対応表T1に書き込みフラグを格納する動作を示す。なお、図9においては、上述した図6および図7の場合と同様に、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリストと、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックIDと、を含む場合が例示されている。また、図9においては、移動要求を受信した時点では、LBA1〜LBA5に対応するデータD1〜データD5がブロックAに格納されている点も図6および図7の場合と同様である。
図9の場合、コントローラ4は、ホスト2からの移動要求を受信すると、DRAM6内に格納されたL2Pテーブル31を参照し、当該移動要求に含まれるLBAリストによって指定されるLBA1〜LBA5にそれぞれ関連付けられている物理アドレスとして、ブロックAの識別子を取得する。そして、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定されるLBA1〜LBA5と、当該LBA1〜LBA5にそれぞれ関連付けられている物理アドレスとして取得されたブロックAの識別子とを、対応表T1に格納する。
なお、移動要求の受信時は第1期間の開始時点に相当し、当該移動要求に含まれるLBAリストによって指定されるLBA1〜LBA5に対応する移動対象データD1〜データD5は当然更新されていないため、コントローラ4は、LBA1〜LBA5にそれぞれ関連付けられている書き込みフラグとして「0(更新なし)」を、対応表T1に格納する。
図9に示す動作によれば、LBA1〜LBA5のそれぞれに、ブロックAの識別子と、書き込みフラグ「0」とが対応付けられた対応表T1が生成される。対応表T1に格納される書き込みフラグは、対応付けられた論理アドレスに対応するデータが第1期間中に更新された場合、コントローラ4により「0」から「1(更新あり)」に更新される。
図10は、対応表T1の書き込みフラグに基づいて、移動対象データの移動を省略する動作を示す。
コントローラ4は、図9に示した動作により対応表T1を生成した後に、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを順に移動対象データとして選択しながら、データを移動する移動処理を実行する。
コントローラ4は、図9に示した動作により対応表T1を生成した後に、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを順に移動対象データとして選択しながら、データを移動する移動処理を実行する。
具体的には、コントローラ4は、対応表T1を参照して、移動対象データに対応する論理アドレスに対応付けられている書き込みフラグが「0」であるか否かを判定し、書き込みフラグが「0」である場合には、当該論理アドレスに対応する移動対象データが第1期間中に更新されていないと判定し、書き込みフラグが「1」である場合には、当該論理アドレスに対応する移動対象データが第1期間中に更新されたと判定する。
図10(a)においては、上述した図6(b)に示した書き込み要求に対応する処理により第1期間中に更新された、LBA4に対応するデータD4’が移動対象データである場合の移動処理が例示されている。なお、図6(b)に示した書き込み要求に対応する処理によりLBA4に対応するデータD4’は以前のデータD4から更新されたデータであるため、図10(a)に示すように、対応表T1においてLBA4に対応付けられている書き込みフラグは「0」から「1」に更新されているものとする。
この場合、コントローラ4は、対応表T1を参照して、移動対象データに対応するLBA4に対応付けられている書き込みフラグが「1」であるため、当該LBA4に対応するデータD4’は第1期間中に更新されたと判定し、移動先ブロックBへの移動を省略する。このため、図10(a)に示すように、LBA4に対応するデータD4’は移動先ブロックBの別の物理記憶位置に移動されない。
以上のように、LBA4に対応するデータD4’の無駄なデータの移動が省略されることにより、移動先ブロックBには、図10(b)に示すように、受信した移動要求にしたがって移動されたLBA1〜LBA3,LBA5に対応するデータD1〜データD3,データD5と、第1期間中に受信した書き込み要求にしたがって更新されたLBA4に対応するデータD4’とが格納される。
このように、対応表T1に、移動対象データが、第1期間中に更新されたか否かを示す書き込みフラグがさらに格納される場合であっても、上述した図8の場合と同様に、コントローラ4は無駄なデータの移動を省略することが可能である。また、対応表T1に書き込みフラグがさらに格納される場合、移動対象データが第1期間中に更新されたか否かを判定するために、DRAM6内のL2Pテーブル31を参照して、当該移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得する処理を省略することが可能である。
上述したように、対応表T1に書き込みフラグが格納される場合、対応表T1への物理アドレスの格納は省略されても構わない。つまり、対応表T1には、受信した移動要求に含まれるLBAリストによって指定される論理アドレスと、当該論理アドレスに対応する移動対象データが第1期間中に更新されたか否かを示す書き込みフラグとが格納されているとしても良い。この場合、対応表T1を生成する時点における、LBAリストによって指定される論理アドレスに関連付けられている物理アドレスの取得処理および格納処理を省略することができる一方で、書き込みフラグ「0」に対応付けられている論理アドレスに対応するデータを移動対象データとして選択し移動する際には、この時点で、L2Pテーブル31を参照して、当該移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得する必要がある。但し、この場合であっても、上述の場合と同様に、コントローラ4は無駄なデータの移動を省略することが可能である。
図11のフローチャートは、第1実施形態に係るメモリシステムにおいて実行される移動処理の手順を示す。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS1)。移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、等が含まれている。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS1)。移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、等が含まれている。
続いて、コントローラ4は移動要求を受信すると、DRAM6内に格納されたL2Pテーブル31を参照して、受信した移動要求に含まれるLBAリストにより指定された論理アドレスに関連付けられている物理アドレスを取得する。そして、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定された論理アドレスと、L2Pテーブル31から取得された物理アドレスと、を対応表T1に格納する(ステップS2)。
その後、コントローラ4は、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを移動対象データとして選択し、当該データの移動を開始する(ステップS3)。
コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して、移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得し(ステップS4)、取得した移動対象データに対応する論理アドレスに関連付けられている物理アドレスと、対応表T1に格納された当該論理アドレスに関連付けられている物理アドレスとが一致するか否かを判定する(ステップS5)。
ステップS5の処理において、取得した物理アドレスと、対応表T1に格納された物理アドレスとが一致しないと判定された場合(ステップS5のNo)、コントローラ4は、移動対象データの移動先ブロックへの移動を省略し、後述するステップS7の処理を実行する。
一方で、ステップS5の処理において、取得した物理アドレスと、対応表T1に格納された物理アドレスとが一致すると判定された場合(ステップS5のYes)、コントローラ4は、移動対象データを、受信した移動要求に含まれる移動先ブロックIDによって示される移動先ブロックに移動し、当該移動対象データに対応する論理アドレスに関連付けられる物理アドレスが移動元ブロックの物理アドレスから移動先ブロックの物理アドレスに変更されるようにL2Pテーブル31を更新する(ステップS6)。
しかる後、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定される全ての論理アドレスに対応するデータを移動対象データとして選択したか否かを判定し(ステップS7)、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択したと判定された場合(ステップS7のYes)、受信した移動要求に基づくデータの移動は完了したと判断し、ここでの一連の処理を終了させる。一方で、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択していないと判定された場合(ステップS7のNo)、コントローラ4は、上述したステップS3の処理を再度実行し、まだ移動対象データとして選択していない論理アドレスに対応したデータを移動対象データとして選択し、同様の処理を実行する。
第1実施形態においては、SSD3のコントローラ4は、ホスト2からの移動要求の受信に応じて、受信した移動要求に含まれるLBAリストによって指定される論理アドレスと、当該論理アドレスに関連付けられている物理アドレスと、を対応表T1に格納する。その上で、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定される論理アドレスに対応する移動対象データの移動を開始する際には、DRAM6内のL2Pテーブル31から当該移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得し、取得した物理アドレスが、対応表T1に事前に格納されている物理アドレスと一致しているか否かを判定して、当該移動対象データが第1期間中に更新されたか否かを判定する。
これによれば、移動対象データが第1期間中に更新されている場合には、当該移動対象データの移動を省略することができ、無駄なデータの移動を抑制することが可能である。その一方で、SSD3のコントローラ4は、第1期間中に更新されている移動対象データ以外の移動対象データについては、ホスト2からの移動要求にしたがって移動先ブロックに移動させることが可能であるため、WAF等の観点においてGCの効率を向上させることも可能である。なお、対応表T1に書き込みフラグを格納するケースにおいては、第1期間中にある論理アドレスに対応する更新データの書き込みが行われた場合、コントローラ4は、更新データの書き込みが行われたことを示す書き込みフラグを、この論理アドレスに対応する対応表T1内の位置に格納する。そして、この論理アドレスに対応するデータの移動を開始する際に、コントローラ4は、対応表T1を参照し、この論理アドレスに対応する対応表T1内の位置に書き込みフラグが格納されているか否かに基づいて、第1期間中にこの論理アドレスに対応する更新データの書き込みが行われたか否かを判定する。
(第2実施形態)
次に、第2実施形態について説明する。
次に、第2実施形態について説明する。
なお、第2実施形態に係るメモリシステムを含む情報処理システム1の構成は第1実施形態の構成と同様である。
第1実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDを含む移動要求をホスト2から受信していた。
これに対し、第2実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDに加えて、LBAリストによって指定される論理アドレスに対応するデータ(移動対象データ)が格納されている移動元ブロックを識別するための識別子(移動元ブロックID)をさらに含む移動要求をホスト2から受信する点で、第1実施形態と相違している。
これに対し、第2実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDに加えて、LBAリストによって指定される論理アドレスに対応するデータ(移動対象データ)が格納されている移動元ブロックを識別するための識別子(移動元ブロックID)をさらに含む移動要求をホスト2から受信する点で、第1実施形態と相違している。
図12は、ホスト2からの移動要求の受信に応じて第2実施形態に係るメモリシステムにおいて実行される移動処理の概要を示す。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID、移動元ブロックID、等を含む。図12(a)においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、移動対象データが格納されているブロックとしてブロックAを示す移動元ブロックID、等を含む場合が例示されている。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID、移動元ブロックID、等を含む。図12(a)においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、移動対象データが格納されているブロックとしてブロックAを示す移動元ブロックID、等を含む場合が例示されている。
コントローラ4は、ホスト2からの移動要求の受信に応じた移動処理を開始すると、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを移動対象データとして選択し、DRAM6内に格納されたL2Pテーブル31を参照して、当該移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得する。
そして、コントローラ4は、移動対象データに対応する論理アドレスの物理アドレスの一部分によって示されるブロックの識別子と、受信した移動要求に含まれる移動元ブロックIDによって示される移動元ブロックの識別子とが一致するか否かに基づいて、当該論理アドレスに対応する移動対象データが上述した第1期間中に更新されたか否かを判定する。なお、移動対象データに対応する論理アドレスに関連付けられている物理アドレスの一部分とは、取得された物理アドレスのうちの一部分であって、ブロック粒度の物理アドレス(ブロックアドレス)に相当する。
図12(b)においては、上述した図6(b)に示した書き込み要求に対応する処理により第1期間中に更新された、LBA4に対応するデータD4’が移動対象データである場合の移動処理が例示されている。
この場合、コントローラ4は、DRAM6内のL2Pテーブル31を参照し、移動対象データD4’に対応するLBA4に関連付けられている物理アドレスとして、ブロックBの識別子を取得する。そして、コントローラ4は、LBA4に関連付けられている物理アドレスとして取得されたブロックBの識別子と、受信した移動要求に含まれる移動元ブロックIDによって示されるブロックAの識別子とが一致していないことに基づいて、LBA4に対応するデータは第1期間中に更新されたと判定し、移動先ブロックBへの移動を省略する。このため、図12(b)に示すように、LBA4に対応するデータD4’は移動先ブロックBの別の物理記憶位置に移動されない。
図12では、移動元ブロックIDを含む移動要求であって、移動元ブロックに含まれる全ての有効データを移動対象データとした移動要求がコントローラ4により受信される場合を例示しているが、このように移動元ブロックに含まれる全ての有効データを移動対象データとする場合、ホスト2は、移動要求に移動元ブロックIDを含める代わりにLBAリストを含めないとしてもよい。コントローラ4は、LBAリストが含まれておらず、移動元ブロックIDおよび移動先ブロックIDを含む移動要求を受信した場合、移動元ブロックIDによって示される移動元ブロックに含まれる全ての有効データを移動対象データとして選択し、これら移動対象データを移動先ブロックに移動する。
上述した図12では、ホスト2からの移動要求に移動元ブロックIDが含まれている場合を例示したが、ホスト2とSSD3との間で、NAND型フラッシュメモリ5に含まれるブロックの識別子が共有されていない可能性もある。ここで、ホスト2とSSD3との間でブロックの識別子が共有されていないとは、ホスト2によって管理されている各ブロックの識別子とSSD3によって管理されている各ブロックの識別子とが一致しないことを意味する。この場合、ホスト2は、移動要求により移動元ブロックをブロックの識別子により指定することができないことになる。
このため、ホスト2は、移動元ブロックIDに代えて、移動元ブロックに格納されているデータの一つに対応する論理アドレス(第1の論理アドレス)を移動要求に含めるとしてもよい。移動元ブロックを指定するために移動要求に含める論理アドレスに対応するデータは、移動対象データであってもよいし、移動対象データとは異なる管理用のデータであってもよい。管理用のデータは、例えば、あるブロック内に書き込まれている複数のデータ部にそれぞれ対応する複数の論理アドレスのリスト(LBAリスト)を示す。NAND型フラッシュメモリ5に含まれる複数のブロックのそれぞれに一つずつ管理用のデータが格納されている。各ブロックに格納されている管理用のデータは、ブロック内において当該管理用のデータ以外の全てのデータ部が全て無効化されるまではこのブロック内に維持され続ける。
なお、ホスト2とSSD3との間で、NAND型フラッシュメモリ5に含まれるブロックの識別子が共有されていない場合、ホスト2は、移動要求により移動先ブロックも指定することができないことになるが、移動先ブロックについては未使用領域を有するブロックを移動先ブロックとして使用する旨の指示が移動要求に少なくとも含まれていれば、SSD3のコントローラ4は移動対象データを移動先ブロックに移動させることが可能である。あるいは、移動要求は、移動先ブロックIDの代わりに、上述のストリームIDを指定してもよい。
図13は、移動元ブロックを指定するための論理アドレスを含む移動要求の受信に応じて実行される移動処理の概要を示す。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、ストリームID、移動元ブロックを指定するための論理アドレス、等を含む。図13(a)においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリスト、ストリームID#1、移動元ブロックを指定するための論理アドレスとしてLBA9、等を含む場合が例示されている。LBA9に対応するデータが格納されているブロックはブロックAであるので、ブロックAが移動元ブロックとして指定される。ストリームID#1に対応するストリームに関連付けられているブロックがブロックBである場合には、このブロックBが移動先ブロックとなる。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、ストリームID、移動元ブロックを指定するための論理アドレス、等を含む。図13(a)においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1〜LBA5を示すLBAリスト、ストリームID#1、移動元ブロックを指定するための論理アドレスとしてLBA9、等を含む場合が例示されている。LBA9に対応するデータが格納されているブロックはブロックAであるので、ブロックAが移動元ブロックとして指定される。ストリームID#1に対応するストリームに関連付けられているブロックがブロックBである場合には、このブロックBが移動先ブロックとなる。
コントローラ4は、ホスト2からの移動要求の受信に応じた移動処理を開始すると、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを移動対象データとして選択し、DRAM6内に格納されたL2Pテーブル31を参照して、当該移動対象データに対応する論理アドレスに関連付けられている物理アドレス(第2の物理アドレス)を取得する。また、コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して、受信した移動要求に含まれる移動元ブロックを指定するための論理アドレスに関連付けられている物理アドレス(第1の物理アドレス)を取得する。そして、コントローラ4は、取得した第1の物理アドレスと第2の物理アドレスとが一致するか否かに基づいて、移動対象データが上述した第1期間中に更新されたか否かを判定する。
図13(b)においては、上述した図6(b)に示した書き込み要求に対応する処理により第1期間中に更新された、LBA4に対応するデータD4’が移動対象データである場合の移動処理が例示されている。
この場合、コントローラ4は、DRAM6内のL2Pテーブル31を参照して、移動対象データD4’に対応するLBA4に関連付けられている第2の物理アドレスとして、ブロックBの識別子を取得する。また、コントローラ4は、DRAM6内のL2Pテーブル31を参照して、移動元ブロックを指定するためのLBA9に関連付けられている第1の物理アドレスとして、ブロックAの識別子を取得する。そして、コントローラ4は、第2の物理アドレスとして取得されたブロックBの識別子と、第1の物理アドレスとして取得されたブロックAの識別子とが一致していないことに基づいて、LBA4に対応するデータは第1期間中に更新されたと判定し、移動先ブロック(ブロックB)への移動を省略する。このため、図13(b)に示すように、LBA4に対応するデータD4’は移動先ブロック(ブロックB)の別の物理記憶位置に移動されない。
図14のフローチャートは、第2実施形態に係るメモリシステムにおいて実行される移動処理の手順を示す。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS11)。以下では、移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、移動対象データが格納されているブロックを示す移動元ブロックID、等が含まれている場合を想定するが、移動元ブロックIDの代わりに、移動元ブロックに格納されているデータに対応する論理アドレスが含まれていてもよいし、移動先ブロックIDの代わりに、ストリームIDが含まれていてもよい。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS11)。以下では、移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、移動対象データが格納されているブロックを示す移動元ブロックID、等が含まれている場合を想定するが、移動元ブロックIDの代わりに、移動元ブロックに格納されているデータに対応する論理アドレスが含まれていてもよいし、移動先ブロックIDの代わりに、ストリームIDが含まれていてもよい。
続いて、コントローラ4は、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを移動対象データとして選択し、当該データの移動を開始する(ステップS12)。
コントローラ4は、DRAM6内に格納されたL2Pテーブル31を参照して、移動対象データに対応する論理アドレスに関連付けられている物理アドレスを取得し(ステップS13)、取得した移動対象データに対応する論理アドレスに関連付けられている物理アドレスの一部分によって示されるブロックの識別子(例えばブロックアドレス)と、受信した移動要求に含まれる移動元ブロックIDによって示される移動元ブロックの識別子(例えばブロックアドレス)とが一致するか否かを判定する(ステップS14)。
ステップS14の処理において、取得した物理アドレスの一部分によって示されるブロックの識別子と、受信した移動元ブロックの識別子(物理アドレス)とが一致しないと判定された場合(ステップS14のNo)、コントローラ4は、移動対象データの移動先ブロックへの移動を省略し、後述するステップS16の処理を実行する。
一方で、ステップS14の処理において、取得した物理アドレスの一部分によって示されるブロックの識別子と、受信した移動元ブロックの識別子とが一致すると判定された場合(ステップS14のYes)、コントローラ4は、移動対象データを、受信した移動要求に含まれる移動先ブロックIDによって示される移動先ブロックに移動し、当該移動対象データに対応する論理アドレスに関連付けられる物理アドレスが移動元ブロックの物理アドレスから移動先ブロックの物理アドレスに変更されるようにL2Pテーブル31を更新する(ステップS15)。
しかる後、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定される全ての論理アドレスに対応するデータを移動対象データとして選択したか否かを判定し(ステップS16)、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択したと判定された場合(ステップS16のYes)、受信した移動要求に基づくデータの移動は完了したと判断し、ここでの一連の処理を終了させる。一方で、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択していないと判定された場合(ステップS16のNo)、コントローラ4は、上述したステップS12の処理を再度実行し、まだ移動対象データとして選択していない論理アドレスに対応したデータを移動対象データとして選択し、同様の処理を実行する。
第2実施形態においては、ホスト2からの移動要求には、移動対象データの移動元ブロックを特定可能な情報が含まれているので、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定される論理アドレスと、当該論理アドレスに関連付けられている物理アドレスと、を対応表T1に格納する処理を省略することが可能である。これによれば、コントローラ4にかかる処理負荷を減らすことが可能であり、移動処理に要する時間の短縮等、を期待することが可能である。また、対応表T1が不要になる分、移動処理を実現するにあたって必要なメモリを減らすことも可能である。
(第3実施形態)
次に、第3実施形態について説明する。
次に、第3実施形態について説明する。
なお、第3実施形態に係るメモリシステムを含む情報処理システム1の構成は第1実施形態の構成と同様である。
第1実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDを含む移動要求をホスト2から受信していた。
これに対し、第3実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDに加えて、データを移動する単位を示す粒度をさらに指定する移動要求をホスト2から受信する点で、第1実施形態と相違している。なお、移動要求によって指定される粒度は、データを移動する単位を構成する連続した論理アドレスの数N(N>1)によって表される。
これに対し、第3実施形態では、SSD3のコントローラ4は、LBAリストおよび移動先ブロックIDに加えて、データを移動する単位を示す粒度をさらに指定する移動要求をホスト2から受信する点で、第1実施形態と相違している。なお、移動要求によって指定される粒度は、データを移動する単位を構成する連続した論理アドレスの数N(N>1)によって表される。
図15は、ホスト2からの移動要求の受信に応じて第3実施形態に係るメモリシステムにおいて実行される移動処理の概要を示す。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID、粒度、等を含む。図15においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1,LBA2,LBA3,LBA4,LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、データを移動する単位を構成する論理アドレスの数が2個であることを示す粒度、等を含む場合が例示されている。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID、粒度、等を含む。図15においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1,LBA2,LBA3,LBA4,LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、データを移動する単位を構成する論理アドレスの数が2個であることを示す粒度、等を含む場合が例示されている。
まず、コントローラ4は、受信した移動要求に含まれるLBAリストおよび粒度を参照して、当該LBAリストにより指定された論理アドレスに対応するデータを移動対象データと認識し、且つ、当該移動要求に含まれる移動先ブロックIDを参照して、当該移動対象データの移動先ブロックを認識する。そして、コントローラ4は、移動対象データを移動先ブロック内の未使用領域に順に移動する移動処理を開始する。
図15の場合、コントローラ4は、受信した移動要求に含まれる粒度を参照して、データを移動する単位が連続する2個の論理アドレスに対応する2つのデータであることを認識する。
そして、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、当該LBAリストにより指定されたLBA1に対応するデータD1と、当該LBAリストにより指定されたLBA2に対応するデータD2との各々を移動対象データとして認識し、且つ、当該移動要求に含まれる粒度にしたがった同じ単位に属する2個の連続するLBA1およびLBA2に各々対応するデータD1およびデータD2を移動対象データとして認識する。同様に、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、当該LBAリストにより指定されたLBA3に対応するデータD3と、当該LBAリストにより指定されたLBA4に対応するデータD4との各々を移動対象データとして認識し、且つ、当該移動要求に含まれる粒度にしたがった同じ単位に属する2個の連続するLBA3およびLBA4に各々対応するデータD3およびデータD4を移動対象データとして認識する。さらに、コントローラ4は、受信した移動要求に含まれるLBAリストを参照して、当該LBAリストにより指定されたLBA5に対応するデータD5を移動対象データとして認識し、且つ、当該移動要求に含まれる粒度にしたがった同じ単位に属する2個の連続するLBA5およびLBA6に各々対応するデータD5およびデータD6を移動対象データとして認識する。つまり、LBA6はLBAリストによって指定されていないが、LBA6はLBA5と同じ単位に属する論理アドレスであり、コントローラ4は、LBAリストによって指定されているLBA5に対応するデータD5のみならず、LBAリストによって指定されていないデータD6も移動対象データとして認識する。
この場合、たとえLBA6に対応するデータD6が、LBA5に対応するデータD5とは異なるブロックに格納されている場合であっても、コントローラ4は、LBA6に対応するデータD6を移動対象データとして認識する。
また、図15の場合、コントローラ4は、受信した移動要求に含まれる移動先ブロックIDを参照して、移動対象データD1〜移動対象データD6の移動先ブロックがブロックBであることを認識する。
そして、コントローラ4は、LBA1〜LBA6に対応する移動対象データD1〜移動対象データD6を、移動先ブロックB内の未使用領域に移動し、移動対象データD1〜移動対象データD6をブロックBにおける有効データとして扱い、且つ、移動元ブロックに含まれる以前のデータを無効データとして扱う。換言すれば、コントローラ4は、移動対象データD1〜移動対象データD6に関連付けられる物理アドレスが移動元ブロックの物理アドレスから移動先ブロックBの物理アドレスに変更されるようにL2Pテーブル31を更新する。
図16は、第3実施形態に係るメモリシステムにおける移動対象データの移動を省略しない動作を示し、基本的には、図15の場合と同様である。なお、移動対象データが上述した第1期間中に更新されたか否かは、上述した第1および第2実施形態に示すいずれかの方法により判定されるものとし、ここではその詳しい説明は省略する。
ホスト2からの移動要求は、移動要求のコマンドコードの他に、LBAリスト、移動先ブロックID、粒度、等を含む。図16(a)においては、ホスト2からの移動要求が、移動要求のコマンドコードの他に、移動対象データに対応する論理アドレスとしてLBA1,LBA2,LBA3,LBA4,LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、データを移動する単位を構成する論理アドレスの数が2個であることを示す粒度、等を含む場合が例示されている。
コントローラ4は、受信した移動要求に含まれるLBAリストにより指定された論理アドレスに対応するデータが移動条件を満たすと判定した場合、つまり指定されたこの論理アドレスに対応するデータが上述した第1期間中に更新されなかったと判定した場合、指定されたこの論理アドレスに対応するデータと、この指定された論理アドレスと同じ単位に属し且つ移動要求によって指定されていない論理アドレスに対応するデータを、移動先ブロックへ移動する。例えば、LBA5に対応するデータが移動条件を満たしているならば、LBA5に対応するデータのみならず、LBA6に対応するデータも移動先ブロックへ移動される。一方、LBA5に対応するデータが移動条件を満たしていないならば、LBA5に対応するデータの移動は省略される。この場合には、LBA6に対応するデータも移動されない。なお、LBAリストによって指定された各LBAに関しては、このLBAに対応するデータを移動するか否かが、このLBAに対応するデータが第1期間中に更新された否かに応じて判定される。例えば、LBA2は移動要求によって指定されたLBA1と同じ単位に属しているが、LBA2も移動要求によって指定されている。したがって、LBA2に対応するデータを移動するか否かは、LBA2に対応するデータが移動条件を満たしているか否かによって判定される。同様に、LBA4は移動要求によって指定されたLBA3と同じ単位に属しているが、LBA4も移動要求によって指定されている。したがって、LBA4に対応するデータを移動するか否かは、LBA4に対応するデータが移動条件を満たしているか否かによって判定される。
図16(b)においては、LBA1,LBA2,LBA3,LBA4,LBA5に対応するデータのいずれも上述した第1期間中に更新されていないと判定された場合の動作が例示されている。
LBA1,LBA2,LBA3,LBA4,LBA5は、LBAリストによって指定された論理アドレスである。したがって、これらLBA1,LBA2,LBA3,LBA4,LBA5の各々に関しては、このLBAに対応するデータが第1期間中に更新された否かが個別に判定される。指定されたあるLBAに対応するデータが第1期間中に更新されていない場合には、このLBAに対応するデータは移動条件を満たす。このため、このLBAに対応するデータは移動元ブロックから移動先ブロックに移動される。一方、このLBAに対応するデータが第1期間中に更新されている場合には、このLBAに対応するデータは移動条件を満たさない。このため、このLBAに対応するデータの移動は省略される。LBA1,LBA2,LBA3,LBA4,LBA5に対応するデータのいずれも移動条件を満たしている場合には、図16(b)に示されているように、LBA1に対応するデータD1と、LBA2に対応するデータD2と、LBA3に対応するデータD3と、LBA4に対応するデータD4と、LBA5に対応するデータD5とが移動先ブロックBに移動される。LBA6は、LBAリストによって指定されたLBA5と同じ単位内に属しているLBAである。しかし、このLBA6は、LBAリストによって指定されていない。このため、LBA6に対応するデータD6を移動するか否かは、移動要求によって指定されたLBA5に対応するデータが移動条件を満たしているか否かに応じて決定される。LBA5に対応するデータD5が第1期間中に更新されていない場合には、LBA5に対応するデータD5は移動条件を満たしているので、図16(b)に示されているように、LBA6に対応するデータD6も移動先ブロックBに移動される。
図17は、第3実施形態に係るメモリシステムにおける移動対象データの移動を省略する動作を示し、LBA5に対応するデータが上述した第1期間中に更新されていると判定された場合の動作が例示されている。なお、ホスト2からの移動要求が、移動要求のコマンドコードの他に、LBA1,LBA2,LBA3,LBA4,LBA5を示すLBAリスト、移動対象データが移動されるべきブロックとしてブロックBを示す移動先ブロックID、データを移動する単位を構成する論理アドレスの数が2個であることを示す粒度、を含んでいる点は、上述した図16の場合と同様である。
この場合、コントローラ4は、LBAリストにより指定されたLBA5に対応するデータD5’を移動対象データとして選択すると、このデータD5’が上述した移動条件を満たしていないと判定し、LBAリストにより指定されたLBA5に対応するデータD5’の移動先ブロックBへの移動(図17の場合、移動先ブロックBの別の物理記憶位置への移動)を省略する。また、コントローラ4は、受信した移動要求に含まれる粒度により、LBAリストにより指定されたLBA5と同じ単位内に属しているLBA6がLBAリストによって指定されていないことを認識すると、LBA6に対応するデータD6の移動先ブロックBへの移動も省略する。このため、移動先ブロックBには、図17に示すように、受信した移動要求にしたがって移動されたLBA1〜LBA4に対応するデータD1〜データD4と、第1期間中に受信した書き込み要求にしたがって更新されたLBA5に対応するデータD5’とが格納される。なお、データD5’は移動先ブロックBとは異なるブロックに書き込まれている場合もある。
図18のフローチャートは、第3実施形態に係るメモリシステムにおいて実行される移動処理の手順を示す。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS21)。移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、データを移動する単位を構成する連続した論理アドレスの数を示す粒度、等が含まれている。
まず、SSD3のコントローラ4は移動要求を受信する(ステップS21)。移動要求には、コマンドコードの他に、移動対象データの論理アドレスを指定するためのLBAリスト、移動対象データが移動されるべきブロックを示す移動先ブロックID、データを移動する単位を構成する連続した論理アドレスの数を示す粒度、等が含まれている。
続いて、コントローラ4は、受信した移動要求に含まれるLBAリストにより指定された論理アドレスの一つに対応するデータを移動対象データとして選択し、データの移動を開始する(ステップS22)。
コントローラ4は、移動対象データが上述した移動条件を満たしているか否かを判定する(換言すると、コントローラ4は、移動対象データが上述した第1期間中に更新されていないか否かを判定する)(ステップS23)。
ステップS23の処理において、移動対象データが上述した移動条件を満たしていないと判定された場合、つまり、移動対象データが上述した第1期間中に更新されていたと判定された場合(ステップS23のNo)、コントローラ4は、当該移動対象データの移動先ブロックへの移動を省略し、後述するステップS25の処理を実行する。
一方で、ステップS23の処理において、移動対象データが上述した移動条件を満たしていると判定された場合、つまり、移動対象データが上述した第1期間中に更新されていないと判定された場合(ステップS23のYes)、コントローラ4は、当該移動対象データと、当該移動対象データに対応する論理アドレスと同じ単位内に属する非指定の論理アドレスに対応するデータとを移動先ブロックに移動し、これらデータにそれぞれ対応する論理アドレスに関連付けられる物理アドレスが移動元ブロックの物理アドレスから移動先ブロックの物理アドレスに変更されるようにL2Pテーブル31を更新する(ステップS24)。ここで、非指定の論理アドレスとは、移動要求によって指定されていない論理アドレスを意味する。このように、ステップS24では、移動対象データが移動条件を満たしている場合、コントローラ4は、この移動対象データのみならず、この移動対象データの論理アドレスと同じ単位内に属し且つ移動要求によって指定されなかった別の論理アドレスに対応する別のデータ(つまり、この別の論理アドレスに対応するに関連付けられたNAND型フラッシュメモリ5の物理アドレスに格納されている別のデータ)も移動する。
しかる後、コントローラ4は、受信した移動要求に含まれるLBAリストによって指定される全ての論理アドレスに対応するデータを移動対象データとして選択したか否かを判定し(ステップS25)、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択したと判定された場合(ステップS25のYes)、受信した移動要求に基づくデータの移動は完了したと判断し、ここでの一連の処理を終了させる。一方で、移動要求により指定された全ての論理アドレスに対応するデータを移動対象データとして選択していないと判定された場合(ステップS25のNo)、コントローラ4は、上述したステップS22の処理を再度実行し、まだ移動対象データとして選択していない論理アドレスに対応したデータを移動対象データとして選択し、同様の処理を実行する。
第3実施形態においては、ホスト2は、データを移動する単位を構成する連続した論理アドレスの数を示す粒度を指定することが可能であり、LBAリストにより一つの論理アドレスを指定することで、粒度と同数の複数の論理アドレス(N個の論理アドレス)に対応するデータを移動対象データとして指定することが可能である。これによれば、ホスト2は、管理する論理アドレスの個数を、粒度を指定することができない場合の1/Nに減らすことが可能である。また、ホスト2により粒度が指定されることで、コントローラ4は、関連性の強いデータを纏めて移動することが可能であり、関連性の強いデータを近接した物理記憶位置に格納することが可能となる。さらに、ホスト2から受信される移動要求によって指定された論理アドレスに対応するデータが第1期間中に更新されていた場合には、当該指定された論理アドレスに対応するデータの移動を省略するだけでなく、この指定された論理アドレスと同じ単位内に属する非指定の論理アドレスに対応するデータの移動も省略するため、このように移動要求によって粒度が指定された場合であっても、コントローラ4は無駄なデータの移動を省略することが可能である。
以上説明した各実施形態によれば、移動対象データの論理アドレスを指定する移動要求がホスト2から受信される。そして、移動要求が受信されてから、指定された論理アドレスに対応するデータの移動の開始までの期間に、この指定された論理アドレスに対応する更新データがホスト2からの書き込み要求によってNAND型フラッシュメモリ5に書き込まれなかった場合、この指定された論理アドレスに関連付けられた物理アドレスに格納されているデータがNAND型フラッシュメモリ5内の移動先ブロックに移動する移動処理が実行される。一方、この期間にこの更新データがNAND型フラッシュメモリ5に書き込まれた場合には、移動処理を実行されない。したがって、WAFを増加させる要因となる無駄なデータの移動を抑制しつつ、ホスト2の指示に基づく移動処理を実現できる。よって、NAND型フラッシュメモリ5内のデータ配置を効率よく制御することが可能である。
なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、23…移動制御部、31…L2Pテーブル。
Claims (14)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
移動対象データの論理アドレスを指定する移動要求を前記ホストから受信し、
前記移動要求の受信から前記指定された論理アドレスに対応するデータの移動の開始までの期間に、前記指定された論理アドレスに対応する更新データが前記ホストからの書き込み要求によって前記不揮発性メモリに書き込まれなかった場合、前記指定された論理アドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されているデータを前記不揮発性メモリ内の移動先ブロックに移動する移動処理を実行し、前記物理アドレスは論理物理アドレス変換テーブルを参照することによって取得され、
前記期間に前記更新データが前記不揮発性メモリに書き込まれた場合、前記移動処理を実行しないように構成されている、メモリシステム。 - 前記移動要求はブロックの識別子またはストリームの識別子を指定し、
前記コントローラは、前記指定されたブロックの識別子によって特定されるブロック、または前記指定されたストリームの識別子によって特定されるストリームに割り当てられたブロックを、前記移動先ブロックとして決定するように構成されている請求項1記載のメモリシステム。 - 前記コントローラは、
前記移動要求の受信に応じて、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている前記不揮発性メモリの物理アドレスを取得し、前記指定された論理アドレスと、前記取得した物理アドレスとを第1のテーブルに格納し、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている物理アドレスを取得し、前記取得した物理アドレスが前記第1のテーブルの前記物理アドレスと一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定するように構成されている請求項1記載のメモリシステム。 - 前記第1のテーブルに格納される前記物理アドレスは、前記指定された論理アドレスに対応するデータが格納されているブロックの識別子であり、
前記コントローラは、
前記取得した物理アドレスの一部分によって示されるブロックの識別子が前記第1のテーブルに格納されている前記ブロックの識別子に一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定するように構成されている請求項3記載のメモリシステム。 - 前記コントローラは、
前記移動要求の受信に応じて、前記指定された論理アドレスを第1のテーブルに格納し、
前記期間に前記更新データの書き込みが行われた場合、前記更新データの書き込みが行われたことを示す第1の情報を前記第1のテーブルに格納し、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記第1のテーブルを参照し、前記第1のテーブルに前記第1の情報が格納されているか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定するように構成されている請求項1記載のメモリシステム。 - 前記移動要求は前記指定された論理アドレスに対応するデータが格納されている移動元ブロックの識別子を含み、
前記コントローラは、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている物理アドレスを取得し、前記取得した物理アドレスの一部分によって示されるブロックの識別子が前記指定された移動元ブロックの識別子に一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定するように構成されている請求項1記載のメモリシステム。 - 前記移動要求は前記指定され論理アドレスに対応するデータが格納されている移動元ブロックに格納されている第1のデータに対応する第1の論理アドレスを含み、
前記コントローラは、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記論理物理アドレス変換テーブルを参照することによって、前記第1の論理アドレスに関連付けられている第1の物理アドレスと、前記指定された論理アドレスに関連付けられている第2の物理アドレスとを取得し、
前記取得した第2の物理アドレスの一部分によって示されるブロックの識別子が前記取得した第1の物理アドレスの一部分によって示される前記移動元ブロックの識別子に一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定するように構成されている請求項1記載のメモリシステム。 - 前記第1のデータは前記移動元ブロックに書き込まれた複数のデータ部にそれぞれ対応する複数の論理アドレスのリストを示す管理データである請求項7記載のメモリシステム。
- 前記移動要求はデータを移動する単位を示す粒度を指定し、前記粒度は前記単位を構成する連続した論理アドレスの数によって表され、
前記コントローラは、
前記期間に、前記指定された論理アドレスに対応する前記更新データが前記ホストからの書き込み要求によって前記不揮発性メモリに書き込まれなかった場合、前記指定された論理アドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されている前記データと、前記指定された論理アドレスと同じ単位内に属し且つ前記移動要求によって指定されなかった別の論理ドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されている別のデータを前記不揮発性メモリ内の移動先ブロックに移動する移動処理を実行し、
前記期間に前記更新データが前記不揮発性メモリに書き込まれた場合、前記データと前記別のデータを移動する前記移動処理を実行しないように構成されている、請求項1記載のメモリシステム。 - 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
移動対象データの論理アドレスを指定する移動要求をホストから受信することと、
前記移動要求の受信から前記指定された論理アドレスに対応するデータの移動の開始までの期間に、前記指定された論理アドレスに対応する更新データが前記ホストからの書き込み要求によって前記不揮発性メモリに書き込まれなかった場合、前記指定された論理アドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されているデータを前記不揮発性メモリ内の移動先ブロックに移動する移動処理を実行することと、前記物理アドレスは論理物理アドレス変換テーブルを参照することによって取得され、
前記期間に前記更新データが前記不揮発性メモリに書き込まれた場合、前記移動処理を実行しないことと
を具備する制御方法。 - 前記移動要求はブロックの識別子またはストリームの識別子を指定し、
前記指定されたブロックの識別子によって特定されるブロック、または前記指定されたストリームの識別子によって特定されるストリームに割り当てられたブロックを、前記移動先ブロックとして決定することをさらに具備する請求項10記載の制御方法。 - 前記移動要求の受信に応じて、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている前記不揮発性メモリの物理アドレスを取得する動作と、前記指定された論理アドレスと、前記取得した物理アドレスとを第1のテーブルに格納する動作とを実行することと、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている物理アドレスを取得する動作と、前記取得した物理アドレスが前記第1のテーブルの前記物理アドレスと一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定する動作とを実行することとをさらに具備する請求項10記載の制御方法。 - 前記移動要求は前記指定され論理アドレスに対応するデータが格納されている移動元ブロックの識別子を含み、
前記指定された論理アドレスに対応するデータの移動を開始する際に、前記論理物理アドレス変換テーブルを参照することによって前記指定された論理アドレスに関連付けられている物理アドレスを取得する動作と、前記取得した物理アドレスの一部分によって示されるブロックの識別子が前記指定された移動元ブロックの識別子に一致するか否かに基づいて、前記期間に前記更新データが前記不揮発性メモリに書き込まれたか否かを判定する動作とを実行することをさらに具備する請求項10記載の制御方法。 - 前記移動要求はデータを移動する単位を示す粒度を指定し、前記粒度は前記単位を構成する連続した論理アドレスの数によって表され、
前記期間に、前記指定された論理アドレスに対応する前記更新データが前記ホストからの書き込み要求によって前記不揮発性メモリに書き込まれなかった場合、前記指定された論理アドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されている前記データと、前記指定された論理アドレスと同じ単位内に属する、前記移動要求によって指定されなかった別の論理ドレスに関連付けられた前記不揮発性メモリの物理アドレスに格納されている別のデータを前記不揮発性メモリ内の移動先ブロックに移動する移動処理を実行することと、
前記期間に前記更新データが前記不揮発性メモリに書き込まれた場合、前記データと前記別のデータを移動する前記移動処理を実行しないことをさらに具備する請求項10記載の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019167659A JP2021043908A (ja) | 2019-09-13 | 2019-09-13 | メモリシステムおよび制御方法 |
US16/805,946 US11074178B2 (en) | 2019-09-13 | 2020-03-02 | Memory system and method of controlling nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019167659A JP2021043908A (ja) | 2019-09-13 | 2019-09-13 | メモリシステムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021043908A true JP2021043908A (ja) | 2021-03-18 |
Family
ID=74862431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019167659A Pending JP2021043908A (ja) | 2019-09-13 | 2019-09-13 | メモリシステムおよび制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11074178B2 (ja) |
JP (1) | JP2021043908A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360423A (zh) * | 2020-03-03 | 2021-09-07 | 瑞昱半导体股份有限公司 | 数据储存系统及操作数据储存系统的方法 |
KR20220067776A (ko) * | 2020-11-18 | 2022-05-25 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US11687447B1 (en) * | 2022-01-04 | 2023-06-27 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of additional physical address information |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9898404B2 (en) | 2013-07-14 | 2018-02-20 | Cnex Labs | Method and apparatus for providing improved garbage collection process in solid state drive |
US10002073B2 (en) * | 2015-11-06 | 2018-06-19 | SK Hynix Inc. | Selective data recycling in non-volatile memory |
JP6414852B2 (ja) | 2015-12-14 | 2018-10-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
WO2018016003A1 (ja) * | 2016-07-19 | 2018-01-25 | 株式会社日立製作所 | ストレージ装置 |
US10606484B2 (en) * | 2017-06-23 | 2020-03-31 | Google Llc | NAND flash storage device with NAND buffer |
US10915475B2 (en) | 2017-10-12 | 2021-02-09 | Western Digital Technologies, Inc. | Methods and apparatus for variable size logical page management based on hot and cold data |
-
2019
- 2019-09-13 JP JP2019167659A patent/JP2021043908A/ja active Pending
-
2020
- 2020-03-02 US US16/805,946 patent/US11074178B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210081327A1 (en) | 2021-03-18 |
US11074178B2 (en) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6785205B2 (ja) | メモリシステムおよび制御方法 | |
JP7358594B2 (ja) | メモリシステム | |
JP2021114038A (ja) | メモリシステムおよび制御方法 | |
TW201917580A (zh) | 計算機系統及儲存裝置之控制方法 | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
US20210373814A1 (en) | Memory system and method of controlling nonvolatile memory by controlling the writing of data to and reading of data from a plurality of blocks in the nonvalatile memory | |
US11074178B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11347412B2 (en) | Memory system and method of controlling nonvolatile memory | |
US11662952B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP7392080B2 (ja) | メモリシステム | |
JP4745465B1 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP2021034091A (ja) | メモリシステムおよび制御方法 | |
US20190265910A1 (en) | Memory system | |
JP2018160189A (ja) | メモリシステム | |
JP2021033845A (ja) | メモリシステムおよび制御方法 | |
KR101369408B1 (ko) | 스토리지 시스템 및 이의 데이터 전송 방법 | |
US9798470B2 (en) | Memory system for storing and processing translation information | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
JP5204265B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP2020017134A (ja) | 記憶装置及び記憶制御方法 | |
JP2019212103A (ja) | メモリシステム | |
US20190171393A1 (en) | Semiconductor device | |
JP7400053B2 (ja) | メモリシステムおよび制御方法 | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function |