JP2023001494A - メモリシステムおよび制御方法 - Google Patents
メモリシステムおよび制御方法 Download PDFInfo
- Publication number
- JP2023001494A JP2023001494A JP2021102261A JP2021102261A JP2023001494A JP 2023001494 A JP2023001494 A JP 2023001494A JP 2021102261 A JP2021102261 A JP 2021102261A JP 2021102261 A JP2021102261 A JP 2021102261A JP 2023001494 A JP2023001494 A JP 2023001494A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- physical address
- logical
- storage location
- 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/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
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
【課題】ホストが誤って無効化要求を発行した場合に対処可能な無効化処理を実行できるメモリシステムを提供する。【解決手段】情報処理システム1はホストとソリッドステートドライブ(SSD)とを含む。SSDのコントローラは、ライト要求に関連付けられた第1のデータとライト要求によって指定された第1の論理アドレスとを第1のブロックに書き込み、第1のデータが書き込まれた第1のブロック内の第1の記憶位置を示す第1の物理アドレスが第1の論理アドレスに関連付けられるように論理物理アドレス変換テーブルを更新する。第1の論理アドレスに対応する第1のデータを無効化する無効化要求をホストから受信すると、コントローラは、第1の論理アドレスに関連付けられている第1の物理アドレスを論理物理アドレス変換テーブルから取得し、第1の物理アドレスによって示される記憶位置に対応する第1の有効データ識別子を、無効を示す値に更新する。【選択図】図1
Description
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
SSDのようなメモリシステムにおいては、ホストによって発行された無効化要求によって指定される論理アドレスに対応するデータを無効化する機能が用いられている。この機能は、メモリシステムのライトアンプリフィケーションの削減に有用である。
最近では、ホストが誤って無効化要求を発行した場合に対処可能な新たな無効化処理の実現が望まれている。
本発明の一実施形態が解決しようとする課題は、ホストが誤って無効化要求を発行した場合に対処可能な無効化処理を実行できるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記複数のブロックの各々に含まれている複数の記憶位置にそれぞれ対応する複数の有効データ識別子であって、各々が対応する記憶位置に格納されているデータの有効または無効を示す複数の有効データ識別子を、管理テーブルを使用してブロック毎に管理するように構成されたコントローラとを具備する。前記コントローラは、第1の論理アドレスを指定するライト要求を前記ホストから受信したことに応じて、前記ライト要求に関連付けられた第1のデータと前記第1の論理アドレスとの双方を第1のブロックに書き込み、前記第1のデータが書き込まれた前記第1のブロック内の第1の記憶位置を示す第1の物理アドレスが前記第1の論理アドレスに関連付けられるように論理物理アドレス変換テーブルを更新し、前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の第1の有効データ識別子を、有効を示す値に更新する。前記第1の論理アドレスに対応する前記第1のデータを無効化するための無効化要求を前記ホストから受信したことに応じて、前記コントローラは、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスを前記論理物理アドレス変換テーブルに維持した状態で、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の前記第1の有効データ識別子を、無効を示す値に更新する。前記不揮発性メモリのガベージコレクションを実行する場合、前記コントローラは、前記複数のブロックから前記ガベージコレクションのためのコピー元ブロックを選択し、前記コピー元ブロック内の複数の記憶位置に対応する前記管理テーブル内の複数の第2の有効データ識別子に基づいて、有効データと前記有効データに対応する論理アドレスとの双方を前記コピー元ブロックからコピー先ブロックにコピーし、前記有効データがコピーされた前記コピー先ブロック内のコピー先記憶位置を示す物理アドレスが前記有効データの前記論理アドレスに関連付けられるように前記論理物理アドレス変換テーブルを更新し、前記有効データが格納されている前記コピー元ブロック内のコピー元記憶位置に対応する前記管理テーブル内の第3の有効データ識別子を、無効を示す値に更新し、前記コピー先ブロック内の前記コピー先記憶位置に対応する前記管理テーブル内の第4の有効データ識別子を、有効を示す値に更新する。
以下、図面を参照して、実施形態を説明する。
まず、実施形態に係るメモリシステムを含む情報処理システムの構成について説明する。図1は、実施形態に係るメモリシステムとホストとを含む情報処理システム1の構成例を示すブロック図である。以下では、実施形態に係るメモリシステムがソリッドステートドライブ(SSD)3として実現されている場合を想定する。情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。
まず、実施形態に係るメモリシステムを含む情報処理システムの構成について説明する。図1は、実施形態に係るメモリシステムとホストとを含む情報処理システム1の構成例を示すブロック図である。以下では、実施形態に係るメモリシステムがソリッドステートドライブ(SSD)3として実現されている場合を想定する。情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。
ホスト2は、SSD3の動作を制御する情報処理装置である。情報処理装置の例には、パーソナルコンピュータ、サーバコンピュータ、他の様々なコンピューティングデバイスが含まれる。ホスト2は、データを書き込むための要求であるライト要求をSSD3に送信する。また、ホスト2は、データを読み出すための要求であるリード要求をSSD3に送信する。
ホスト2は、プロセッサ101およびメモリ102、等を含む。プロセッサ101は、ホスト2内の各コンポーネントの動作を制御するように構成されたCPU(Central Processing Unit)である。プロセッサ101は、SSD3、またはホスト2内の他のストレージデバイスからメモリ102にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアには、オペレーティングシステム、ファイルシステム、デバイスドライバ、アプリケーションプログラム等が含まれる。
メモリ102は、ホスト2に設けられたメインメモリである。メモリ102は、電力の供給が停止されるとメモリ102内に記憶されているデータが失われる、揮発性の半導体メモリである。メモリ102は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリによって実現される。
SSD3は、ホスト2から送信されたライト要求およびリード要求を受信し、受信したライト要求およびリード要求に基づいて、不揮発性メモリに対するデータ書き込み動作およびデータ読み出し動作を実行するように構成された半導体ストレージデバイスである。不揮発性メモリは、電源の供給が停止された後も不揮発性メモリ内に記憶されているデータを保持可能な半導体メモリデバイスである。不揮発性メモリとしては、例えば、NAND型フラッシュメモリが用いられる。
SSD3は、ホスト2に接続可能である。SSD3は、例えば、情報処理装置に内蔵される。SSD3は、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを接続するための論理インタフェースの規格としては、例えば、Serial Attached SCSI(SAS)、Serial ATA(SATA)、NVM ExpressTM(NVMeTM規格)が使用され得る。
SSD3は、コントローラ4と、不揮発性メモリ(例えば、NAND型フラッシュメモリ)5とを備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
コントローラ4は、不揮発性メモリの一例であるNAND型フラッシュメモリ5を制御するように構成されたメモリコントローラである。コントローラ4は、System-on-a-Chip(SoC)のような回路によって実現されてもよい。コントローラ4は、チャンネルと称されるメモリバスを介してNAND型フラッシュメモリ5に電気的に接続されている。
NAND型フラッシュメモリ5は、メモリセルアレイを含む。メモリセルアレイは、マトリクス状に配置された複数のメモリセルを含む。NAND型フラッシュメモリ5内のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、データを消去するデータ消去動作の単位である。ブロックBLK0~BLKx-1の各々は、物理ブロック、またはフラッシュブロックとも称される。
ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリダイ(複数のNAND型フラッシュメモリチップ)を含んでいてもよい。各NAND型フラッシュメモリダイは、二次元構造のフラッシュメモリであってもよいし、三次元構造のフラッシュメモリであってもよい。
DRAM6は、電力の供給が停止されるとDRAM6に記憶されているデータが失われる、揮発性の半導体メモリである。DRAM6は、例えば、NAND型フラッシュメモリ5に書き込むべきデータを一時的に格納するために使用される。また、DRAM6の記憶領域は、コントローラ4によって使用される様々な管理データを格納するために使用される。
次に、コントローラ4の詳細な構成について説明する。
コントローラ4は、ホストインタフェース(I/F)11と、CPU12と、NANDインタフェース(I/F)13と、DRAMインタフェース(I/F)14と、直接メモリアクセスコントローラ(DMAC)15と、スタティックRAM(SRAM)16と、ECC(Error Correction Code)エンコード/デコード部17とを含む。
これらホストインタフェース11と、CPU12と、NANDインタフェース13と、DRAMインタフェース14と、DMAC15と、SRAM16と、ECCエンコード/デコード部17とは、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース11は、ホスト2から様々なコマンド(要求)を受信する。これらコマンドには、ライトコマンド、リードコマンド、Trimコマンド、Untrimコマンド、等が含まれる。
ライトコマンドは、書き込むべきデータ(ライトデータ)をNAND型フラッシュメモリ5に書き込むためのコマンド(ライト要求)である。ライトコマンドは、例えば、ライトデータが書き込まれるべき最初のセクタを示す論理アドレス(開始論理ブロックアドレス:開始LBA)と、このライトデータのデータサイズと、このライトデータが格納されているホスト2のメモリ102内の位置を示すデータポインタ(バッファアドレス)とを含む。
ライトデータのデータサイズは、例えば、セクタ(論理ブロック)の数によって指定されもよい。一つのセクタは、ホスト2によって指定可能なライトデータの最小データサイズに対応する。このため、ライトデータのデータサイズはセクタの倍数によって表される。
本実施形態では、ホスト2からのライトコマンドに従ってNAND型フラッシュメモリ5に書き込まれるライトデータは、ユーザデータとしても参照される。
リードコマンドはNAND型フラッシュメモリ5からデータを読み出すコマンド(リード要求)である。リードコマンドは、データ(読み出し対象データ)が読み出されるべき最初のセクタを示す論理アドレス(開始LBA)と、読み出し対象データのデータサイズと、この読み出し対象データが転送されるべきホスト2のメモリ102内の位置を示すデータポインタ(バッファアドレス)とを含む。
Trimコマンドは、ある論理アドレスに対応するデータの無効化を要求するコマンド(無効化要求)である。Trimコマンドは、無効化すべきデータの論理アドレスを指定する。より詳しくは、Trimコマンドは、無効化すべき最初のセクタを示す論理アドレス(開始LBA)と、無効化対象のセクタ(論理アドレス)の数とを示す。Trimコマンドは、Unmapコマンド、またはDeallocateコマンドと称されることもある。
Trimコマンドを使用することにより、ホスト2は、不要になったデータ(ユーザデータ)の論理アドレスをSSD3に通知することができる。この通知により、ガベージコレクションにおいてコピーすべきデータの量を減らすことができるので、SSD3のライトアンプリフィケーションを削減することが可能となる。
Untrimコマンドは、本実施形態のSSD3がサポートする新たなコマンド(再有効化要求)である。Untrimコマンドは、ある論理アドレスに対応するデータの無効化を取り消して、この論理アドレスに対応するデータを再び有効化するために使用される。Trimコマンドは、再有効化すべき最初のセクタを示す論理アドレス(開始LBA)と、再有効化対象のセクタ(論理アドレス)の数とを示す。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、DMAC15、SRAM16、ECCエンコード/デコード部17を制御するように構成されたプロセッサである。
CPU12は、SSD3への電源の供給に応じて、NAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードする。CPU12は、このファームウェアを実行することにより、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。FTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、等が含まれる。
論理アドレスは、SSD3へアクセスするためにホスト2によって使用されるアドレスである。論理アドレスとしては、例えば、LBAが使用される。SSD3へアクセスするためにホスト2によって使用される論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスPBA(physical block address)それぞれとの間のマッピングの管理は、論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)31を用いて実行される。
CPU12は、L2Pテーブル31を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれたNAND型フラッシュメモリ5内の記憶位置(物理記憶位置)を示す。L2Pテーブル31は、例えば、SSD3への電源の供給に応答してNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
L2Pテーブル31は、論理アドレスそれぞれと物理アドレスPBAそれぞれとの間のマッピングをセクタのような所定の管理サイズで管理する。一つのセクタは、ホスト2によって指定可能なライトデータの最小データサイズに対応する。セクタ(論理ブロック)のサイズは、例えば、4KiBである。一つのページに複数のセクタに対応するデータが記憶されてもよい。一つのページのサイズは、例えば、16KiBである。
FTLによって実行されるデータ管理には、有効データおよび無効データの管理も含まれる。CPU12は、NAND型フラッシュメモリ5内の複数のブロックの各々に含まれる複数の記憶位置にそれぞれ対応する複数の有効データ識別子を、管理テーブルを使用してブロック毎に管理する。
複数の有効データ識別子の各々は、対応する記憶位置に格納されているデータの有効または無効を示す。各ブロックに対応する複数の有効データ識別子は、バリッドセクタマップ32として参照される。一つのブロックに対応するバリッドセクタマップ32は、一つのブロックに含まれる複数の記憶位置(セクタ)の数と同数の有効データ識別子を含む。一つのバリッドセクタマップ32に対応するブロックは、例えば、物理ブロックである。あるいは、一つのバリッドセクタマップ32に対応するブロックは、図3を参照して後述するブロックグループ(つまり、スーパーブロック)であってもよい。
各有効データ識別子は、1ビットのフラグによって表される。このため、バリッドセクタマップ32は、ビットマップデータとしても参照される。また、各有効データ識別子は、ビットマップフラグとしても参照される。
有効データは、ある論理アドレスに関連付けられた最新のデータである。ある論理アドレスに対応するデータがNAND型フラッシュメモリ5に書き込まれた場合、NAND型フラッシュメモリ5に書き込まれたデータは有効データである。
また、ある論理アドレスに対応する更新データがNAND型フラッシュメモリ5に書き込まれた場合、書き込まれたデータは有効データである。NAND型フラッシュメモリ5内に残っている古いデータは、無効データとして扱われる。また、ホスト2からの無効化要求によって指定された論理アドレスに対応するデータも無効データとして扱われる。
FTLによって実行されるブロック管理は、バッドブロック(不良ブロック)の管理と、ウェアレベリングと、ガベージコレクションを含む。
ウェアレベリングは、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
ガベージコレクションは、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。ガベージコレクションにおいては、CPU12は、有効データと無効データとが混在するブロックからコピー元ブロックを選択し、コピー元ブロック内に格納されている有効データをコピー先ブロックにコピーする。コピー元ブロック内の全ての有効データのコピーが完了すると、コピー元ブロックは、有効データを含まないフリーブロックとして解放され、データの書き込みに再利用可能となる。
上述したように、ホスト2からの無効化要求によって指定された論理アドレスに対応するデータは、無効データとして扱われる。このため、無効化要求は、ガベージコレクションにおいてコピーすることが必要とされるデータの量を減らし、これによってSSD3のライトアンプリフィケーションを下げることを可能にする。
FTLによって実行されるブロック管理には、フリーブロックとアクティブブロックの管理も含まれる。アクティブブロックは、有効データが格納されているブロックである。CPU12は、フリーブロックリスト33を使用して、各フリーブロックを管理する。また、CPU12は、各アクティブブロックリスト34を使用して、各アクティブブロックを管理する。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。NANDインタフェース13とNAND型フラッシュメモリ5との間の通信は、例えば、Toggle NANDフラッシュインタフェースまたはオープンNANDフラッシュインタフェース(ONFI)に準拠して実行される。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、ホスト2から受信される1以上のライト要求に関連付けられたライトデータを一時的に格納するためのライトバッファ(WB)30として利用される。また、DRAM6の記憶領域の他の一部は、L2Pテーブル31、バリッドセクタマップ32、フリーブロックリスト33およびアクティブブロックリスト34を格納するための記憶領域として利用される。
DMAC15は、CPU12の制御の下、ホスト2のメモリ102とDRAM6(またはSRAM16)との間のデータ転送を実行する。ホスト2のメモリ102からライトバッファ(WB)30にライトデータを転送すべき場合には、CPU12は、ホスト2のメモリ102内の位置を示す転送元アドレス、転送すべきライトデータのサイズ、ライトバッファ(WB)30内の位置を示す転送先アドレスをDMAC15に対して指定する。
ECCエンコード/デコード部17は、NAND型フラッシュメモリ5にデータをライトすべき時、このデータをエンコードすることによってこのデータにエラー訂正コード(ECC)を冗長コードとして付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部17は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行う。
次に、本実施形態に係る無効化処理機能について説明する。CPU12は、ライト制御部121、リード制御部122、ガベージコレクション(GC)制御部123、無効化処理部124、LBA比較処理部125、および再有効化処理部126として機能することができる。
ライト制御部121、リード制御部122、ガベージコレクション(GC)制御部123、無効化処理部124、LBA比較処理部125、および再有効化処理部126の一部または全部は、コントローラ4内の専用ハードウェアによって実現されてもよい。
ホスト2からのライト要求の受信に応じて、ライト制御部121は、受信したライト要求に関連付けられたデータ(ライトデータ)を、書き込み先ブロックに書き込む。書き込み先ブロックは、ホスト2からのデータの書き込みに使用されるブロックとして割り当てられたブロックを意味する。ライト制御部121は、ライトデータのみならず、このライトデータと、ライト要求によって指定されたLBAの双方を、書き込み先ブロックに書き込むことができる。
また、ライト制御部121は、ライトデータが書き込まれた書き込み先ブロック内の記憶位置を示す物理アドレスPBAが、ライト要求によって指定されたLBAに関連付けられるように、L2Pテーブル31を更新する。さらに、ライト制御部121は、ライトデータが書き込まれた書き込み先ブロック内の記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、有効を示す値に更新する。
ホスト2からのリード要求の受信に応じて、リード制御部122は、L2Pテーブル31を参照することによって、リード要求によって指定されたLBAに関連付けられている物理アドレスPBA(=ブロック識別子とオフセット)をL2Pテーブル31から取得する。そして、取得した物理アドレスに基づいて、リード制御部122は、この物理アドレスによって特定されるブロック内の記憶位置から、データとこのデータに対応するLBAとの双方を読み出す。データと共に読み出されたLBAは、読み出されたデータがリード要求によって指定されたLBAに対応するデータであることを検証するために使用される。
NAND型フラッシュメモリ5のガベージコレクションを実行する場合、GC制御部123は、ガベージコレクションのための1つ以上のコピー元ブロック(GCソースブロック)をNAND型フラッシュメモリ5の複数のブロックから選択する。コピー元ブロックの選択においては、例えば、有効データ量が最も少ないアクティブブロックをコピー元ブロックとして優先的に選択するというGCポリシーが使用されてもよいし、別のGCポリシーが使用されてもよい。コピー元ブロックは、ガベージコレクション動作が施されるGC対象ブロックである。
GC制御部123は、選択したコピー元ブロック内の複数の記憶位置にそれぞれ対応するバリッドセクタマップ32内の複数の有効データ識別子に基づいて、選択したコピー元ブロック内の有効データを特定する。そして、GC制御部123は、有効データとこの有効データに対応するLBAとの双方を、コピー元ブロックからガベージコレクション動作のためのコピー先ブロック(GCデスティネーションブロック)にコピーする。
GC制御部123は、有効データがコピーされたコピー先ブロック内のコピー先記憶位置を示す物理アドレスが、コピーされた有効データに対応するLBAに関連付けられるように、L2Pテーブル31を更新する。
コピー元ブロックには有効データとLBAとのペアが格納されている。このため、GC制御部123は、この有効データに対応するLBAを容易に特定できる。この結果、GC制御部123は、この有効データがコピーされたコピー先ブロック内のコピー先記憶位置を示す物理アドレスを、この有効データに対応するLBAに容易に関連付けることができる。
さらに、GC制御部123は、有効データが格納されていたコピー元ブロック内のコピー元記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、無効を示す値に更新する。また、GC制御部123は、コピー先ブロック内のコピー先記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、有効を示す値に更新する。
コピー元ブロック内の全ての有効データと全ての有効データにそれぞれ対応する全てのLBAとのコピーが完了した後に、コピー元ブロックは、データの書き込みのために再利用可能となる。つまり、あるブロックに対してガベージコレクション動作が施されると、このブロックはフリーブロックとなる。よって、ガベージコレクション動作が施されたブロックは書き込み先ブロックとして再利用される。
ある論理アドレスに対応するデータの無効化を要求するTrimコマンドをホスト2から受信したことに応じて、無効化処理部124は、L2Pテーブル31を参照することによって、この論理アドレスに対応するデータが格納されている記憶位置を示す物理アドレスをL2Pテーブル31から取得する。そして、無効化処理部124は、取得した物理アドレスをL2Pテーブル31に維持した状態で、取得した物理アドレスによって示される記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、無効を示す値に更新する。
この結果、この取得した物理アドレスによって示される記憶位置に格納されているデータは無効データとして取り扱われる。よって、この記憶位置を含むブロックがガベージコレクションのためのコピー元ブロックとして選択され場合には、この記憶位置に格納されているデータをコピー対象から除外することができ、これによってライトアンプリフィケーションを低減させることができる。
L2Pテーブル31においては、Trimコマンドによって指定されたLBAに対応する物理アドレスPBAは削除されずに残っている。このため、たとえホスト2があるLBAを指定するTrimコマンドを誤って発行した場合であっても、このTrimコマンドによって指定されたLBAに対応する物理アドレスPBAをL2Pテーブル31から取得することができる。
このため、たとえあるLBAを指定するTrimコマンドがホスト2によって発行されても、このLBAに対応するデータが格納されているブロックに対してガベージコレクション動作が施されて、このブロックが新たな書き込み先ブロックとして再利用されるまでは、このLBAに対応するデータをこのブロックから読み出すことができる。
よって、L2Pテーブル31を更新せずにバリッドセクタマップ32のみを更新するという本実施形態の無効化処理は、ライトアンプリフィケーションを低減させるというTrimコマンドの本来の目的に相当する効果を実現しつつ、このTrimコマンドによって指定された論理アドレスに対応するデータの読み出しを一定期間可能にすることができる。
ここで、比較例に係る無効化処理について説明する。
あるLBAを指定するTrimコマンドが受信された場合、比較例に係る無効化処理では、このLBAに対応するL2Pテーブル31内のエントリから物理アドレスが削除され、代わりに、無効を示すマジックナンバがこのエントリに格納される。
このLBAに対応するデータは、NAND型フラッシュメモリ5内に残っている。しかしながら、このデータが格納されている記憶位置を示す物理アドレスが削除される。よって、比較例に係る無効化処理では、たとえホスト2が誤ってTrimコマンドを発行した場合であっても、このTrimコマンドによって指定されたLBAに対応するデータは、もはやSSD3から読み出せなくなる。
LBA比較処理部125は、ホスト2からのリード要求に応じてNAND型フラッシュメモリ5からデータと共に読み出されるLBAを、このリード要求によって指定されたLBAと比較する。
例えば、既に処理されたTrimコマンドによって指定されたLBAに対応するデータが格納されているブロックに対してガベージコレクション動作が施されて、このブロックが新たな書き込み先ブロックとして再利用されると、このデータが格納されていた記憶位置に、別のLBAに対応するデータが新たに書き込まれる可能性がある。したがって、このブロックに対してガベージコレクション動作が施された後に、既に処理されたTrimコマンドによって指定されたLBAを指定するリード要求がホスト2から発行されたならば、このブロックから、別のLBAに対応するデータが読み出されてしまう可能性がある。
本実施形態では、LBA比較処理部125によるLBA比較の結果に基づいて、NAND型フラッシュメモリ5から読み出されたデータが、リード要求によって指定されたLBAに対応するデータであるか否かを判定することができる。よって、リード要求によって指定されたLBAとは異なる別のLBAに対応するデータがホスト2に送信されてしまうことを防止することができる。
あるLBAに対応するデータを再有効化するためのUntrimコマンドをホスト2から受信したことに応じて、再有効化処理部126は、L2Pテーブル31を参照することによって、このLBAに関連付けられている物理アドレスをL2Pテーブル31から取得する。そして、再有効化処理部126は、取得した物理アドレスによって示される記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、有効を示す値に更新する。これにより、このLBAに対応するデータの無効化を取り消して、このLBAに対応するデータを再び有効化することができる。
本実施形態では、LBA比較処理部125によるLBA比較は、Untrimコマンドの受信時においても実行される。これにより、たとえ既に処理されたTrimコマンドによって指定されたLBAに対応するデータが格納されているブロックに対してガベージコレクション動作が施された後に、既に処理されたTrimコマンドによって指定されたLBAを指定するUntrimコマンドがホスト2から発行された場合であっても、Untrimコマンドによって指定されたLBAとは異なるLBAに対応するデータが誤って有効化されることを防止することができる。
次に、複数のNAND型フラッシュメモリダイを含むNAND型フラッシュメモリ5の構成について説明する。図2は、実施形態に係るメモリシステムにおいて使用される、複数のチャンネルと複数のNAND型フラッシュメモリダイとの関係の例を示すブロック図である。
複数のNAND型フラッシュメモリダイの各々は独立して動作可能である。このため、NAND型フラッシュメモリダイは、並列動作可能な単位として扱われる。図2においては、NANDインタフェース(I/F)13に16個のチャンネルCh.1~Ch.16が接続されており、16個のチャンネルCh.1~Ch.16の各々に2つのNAND型フラッシュメモリダイが接続されている場合が例示されている。
この場合、チャンネルCh.1~Ch.16に接続された16個のNAND型フラッシュメモリダイ#1~#16がバンク#0として構成されてもよく、またチャンネルCh.1~Ch.16に接続された残りの16個のNAND型フラッシュメモリダイ#17~#32がバンク#1として構成されてもよい。バンクは、複数のメモリダイをバンクインタリーブによって並列動作させるための単位として扱われる。図2の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリダイを並列動作させることができる。
消去動作は、一つのブロック(物理ブロック)の単位で実行されてもよいし、並列動作可能な複数の物理ブロックの集合を含むブロックグループの単位で実行されてもよい。ブロックグループはスーパーブロックとしても参照される。
一つのブロックグループ、つまり複数の物理ブロックの集合を含む一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリダイ#1~#32から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリダイ#1~#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#1~#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリダイ#1~#32に対応する64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。
図3には、32個の物理ブロック(ここでは、NAND型フラッシュメモリダイ#1内の物理ブロックBLK2、NAND型フラッシュメモリダイ#2内の物理ブロックBLK3、NAND型フラッシュメモリダイ#3内の物理ブロックBLK7、NAND型フラッシュメモリダイ#4内の物理ブロックBLK4、NAND型フラッシュメモリダイ#5内の物理ブロックBLK6、…、NAND型フラッシュメモリダイ#32内の物理ブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。
なお、一つのスーパーブロックが一つの物理ブロックのみを含む構成が利用されてもよく、この場合には、一つのスーパーブロックは一つの物理ブロックと等価である。
次に、本実施形態に係るL2Pテーブル31について説明する。図4は、実施形態に係るSSD3において使用されるL2Pテーブル31の構成例を示す図である。
L2Pテーブル31は、複数の論理アドレスそれぞれに対応する複数のエントリを含む。ある論理アドレスに対応するエントリには、この論理アドレスに関連付けられた物理アドレスPBAが格納される。例えば、コントローラ4がある論理アドレスに対応するデータをNAND型フラッシュメモリ5内のある記憶位置に書き込んだ場合、コントローラ4は、L2Pテーブル31を更新して、この記憶位置を示す物理アドレスPBAをこの論理アドレスに関連付ける。
図4では、論理アドレス0x00000000、0x00000001、0x00000002、0x00000005、0x00000006、0x00000007に、物理アドレスPBA0、PBA2、PBA1、PBA4、PBA5、PBA6がそれぞれ関連付けられている場合が例示されている。
ある論理アドレスに対応するデータがNAND型フラッシュメモリ5に書き込まれていない場合は、この論理アドレスに対応するエントリには、無効(未割り当て)を示す特定の値であるマジックナンバ(INV)が格納されてもよい。
NAND型フラッシュメモリ5内の各記憶位置を示す物理アドレスPBAは、ブロック識別子と、ブロック内のオフセットとの組み合わせによって表される。ブロック識別子は、個々のブロックを一意に指定可能な識別子である。あるブロック内の記憶位置に対応するオフセットは、このブロックの先頭からこの記憶位置までのオフセット値を示す。
NAND型フラッシュメモリ5においては、ページへの書き込みはそのページが含まれるブロックの1消去サイクル(プログラム/イレーズサイクル)当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることはできない。
このため、既に書き込まれているデータを更新する場合には、コントローラ4はそのブロック(または別のブロック)内の未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている記憶位置ではなく、別の記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル31を更新して、この別の記憶位置を示す物理アドレスをこの論理アドレスに関連付ける。
次に、NAND型フラッシュメモリ5内の複数の物理アドレスについて説明する。図5は、実施形態に係るSSD3における各ブロック内の複数の記憶位置それぞれと複数の物理アドレスそれぞれとの間の関係の例を示す図である。
上述したように、ブロック内に含まれる各記憶位置の物理アドレスは、このブロックのブロック識別子と、この記憶位置に対応するオフセットとの組み合わせによって表される。図5では、NAND型フラッシュメモリ5内の任意の一つのブロック(ここではブロックBLKn)に含まれる複数の記憶位置が例示されている。ブロックBLKnのブロック識別子は、BLKnである。ブロックBLKnは、複数のページ(例えば、ページ0~ページ63)を含む。
ページ0~ページ63の各々のサイズが16KiBであり、セクタのサイズが4KiBである場合、ブロックBLKnは、各々が4KiBのサイズを有する256(=4×64)個の記憶位置に論理的に分割される。
オフセット+0はページP0内の最初の記憶位置を示し、オフセット+1はページP0内の2番目の記憶位置を示し、オフセット+2はページP0内の3番目の記憶位置を示し、オフセット+3はページP0内の4番目の記憶位置を示す。
オフセット+4はページP1内の最初の記憶位置を示し、オフセット+5はページP1内の2番目の記憶位置を示し、オフセット+6はページP1内の3番目の記憶位置を示し、オフセット+7はページP1内の4番目の記憶位置を示す。
そして、オフセット+252はページP63内の最初の記憶位置を示し、オフセット+253はページP63内の2番目の記憶位置を示し、オフセット+254はページP63内の3番目の記憶位置を示し、オフセット+255はページP63内の4番目の記憶位置を示す。
例えば、ページP0内の最初の記憶位置の物理アドレスは、ブロック識別子BLKnとオフセット+0との組み合わせによって表される。
次に、ライトデータを、ライトデータの論理アドレス(LBA)と共にブロックに書き込む動作について説明する。図6および図7は、実施形態に係るSSD3において実行される、論理アドレスとデータのペアをブロックに書き込む動作の例を示す図である。
各ブロックにおいて、各ページは、ユーザデータを格納するためのユーザデータ領域と管理データを格納するための冗長領域とを含んでもよい。ページサイズは16KiB+アルファである。
コントローラ4は、4KiBユーザデータとこの4KiBユーザデータに対応する論理アドレス(LBA)との双方を書き込み先ブロック(ここではブロックBLKn)に書き込む。この場合、図6に示すように、各々がLBAと4KiBユーザデータとを含む4つのデータセットが同じページに書き込まれてもよい。各オフセットは、セット境界を示してもよい。
あるいは、図7に示されているように、4つの4KiBユーザデータがページ内のユーザデータ領域に書き込まれ、これら4つの4KiBユーザデータに対応する4つのLBAがこのページ内の冗長領域に書き込まれてもよい。
次に、バリッドセクタマップ32の構成例について説明する。ここでは、バリッドセクタマップ32が、複数のブロックにそれぞれ対応する複数のバリッドセクタマップから構成されている場合を想定する。図8に示すように、ブロックBLKn内の全ての記憶位置にデータが格納されている場合を想定する。一つのバリッドセクタマップに対応する一つのブロックBLKnのページP0内の4つの記憶位置には、有効データ、無効データ、有効データ、有効データがこの順で格納されている。ブロックBLKnのページP63内の4つの記憶位置には、有効データ、有効データ、無効データ、有効データがこの順で格納されている。
図9は、図8のブロックBLKn内の複数の記憶位置におけるデータ配置と、図8のブロックBLKnに対応するバリッドセクタマップ32-nとを示す図である。
バリッドセクタマップ32-nは、ブロックBLKn内の256個の記憶位置にそれぞれ対応する256個の有効データ識別子、つまり256ビットのビットマップフラグ(1011…1101)を含む。
ここで、「1」の有効データ識別子は、この有効データ識別子に対応する記憶位置に格納されているデータが有効データであることを示す。「0」の有効データ識別子は、この有効データ識別子に対応する記憶位置に格納されているデータが無効データであることを示す。
次に、データ書き込み動作とガベージコレクション動作とを説明する。図10は、実施形態に係るSSD3において実行されるデータ書き込み動作とガベージコレクション動作とを示す図である。
NAND型フラッシュメモリ5に含まれる複数のブロックは、有効データを含まないフリーブロックと、有効データを含むアクティブブロックとに大別される。各フリーブロックはフリーブロックリスト33によって管理される。各アクティブブロックは、アクティブブロックリスト34によって管理される。
まず、フリーブロックリスト33から一つのフリーブロックが選択される。選択されたフリーブロックは、その消去動作が実行された後に、書き込み先ブロックとして割り当てられる。書き込み先ブロックが既に割り当てられている場合には、フリーブロックを書き込み先ブロックとして割り当てる動作は不要である。
ライトバッファ(WB)30に格納されているライトデータは、そのライトデータに対応するLBAと共に、書き込み先ブロックに書き込まれる。
書き込み先ブロック全体がデータで満たされると、この書き込み先ブロックは、アクティブブロックリスト34によって管理される。そして、フリーブロックリスト33から一つのフリーブロックが再び選択される。選択されたフリーブロックは、その消去動作が実行された後に、新たな書き込み先ブロックとして割り当てられる。
NAND型フラッシュメモリ5のガベージコレクション動作が実行される場合には、フリーブロックリスト33から一つのフリーブロックが選択される。選択されたフリーブロックは、その消去動作が実行された後に、コピー先ブロックとして割り当てられる。コピー先ブロックが既に割り当てられている場合には、フリーブロックをコピー先ブロックとして割り当てる動作は不要である。
また、アクティブブロックリスト34内のアクティブブロックからコピー元ブロックが選択される。そして、選択されたコピー元ブロックに対応するバリッドセクタマップに基づいて、有効データとこの有効データに対応するLBAとが、コピー元ブロックからコピー先ブロックにコピーされる。この場合、有効データとこの有効データに対応するLBAとがコピー元ブロックから読み出され、読み出された有効データとLBAとがコピー先ブロックに書き込まれる。
コピー元ブロック内の全ての有効データと全ての有効データに対応する全てのLBAとのコピーが完了すると、コピー元ブロックは、フリーブロックリスト33によってフリーブロックとして管理される。そして、フリーブロックとなったコピー元ブロックは、データの書き込みのために再利用可能となる。
また、コピー先ブロック全体がデータで満たされると、このコピー先ブロックは、アクティブブロックリスト34によってアクティブブロックとして管理される。
次に、ホスト2からのライト要求に応じて実行されるデータ書き込み動作について説明する。図11は、ホスト2からライト要求を受信した場合に実施形態に係るSSD3において実行されるデータ書き込み動作の例を示す図である。
図11においては、LBA11およびサイズ(=4)を指定するライト要求がホスト2から受信された場合が想定されている。ライト制御部121は、例えばブロックBLK1を、書き込み先ブロックとして割り当てる。
ライト制御部121は、ブロックBLK1内のページP0に、ライト要求に関連付けられた16KiBデータと4つのLBA11~LBA14とを書き込む。この場合、ブロックBLK1内のページP0の最初の記憶位置に、ライト要求に関連付けられた16KiBデータのうちの最初の4KiBデータと、LBA11とが書き込まれる。ブロックBLK1内のページP0の2番目の記憶位置には、16KiBデータのうちの2番目の4KiBデータと、LBA12とが書き込まれる。ブロックBLK1内のページP0の3番目の記憶位置には、16KiBデータのうちの3番目の4KiBデータと、LBA13とが書き込まれる。ブロックBLK1内のページP0の4番目の記憶位置には、16KiBデータのうちの4番目の4KiBデータと、LBA14とが書き込まれる。
図12は、図11に示されるデータ書き込み動作に応じて実行される、L2Pテーブル31を更新する動作を示す図である。
ライト制御部121は、4つのLBA11~LBA14に、4つのLBA11~LBA14に対応する4つの4KiBデータが格納された4つの物理アドレスPBAがそれぞれ関連付けられるように、L2Pテーブル31を更新する。
この場合、LBA11に対応するL2Pテーブル31内のエントリには、LBA11に対応する物理アドレスPBA(BLK1、オフセット+0)が格納される。物理アドレスPBA(BLK1、オフセット+0)は、ブロックBLK1内のページP0の最初の記憶位置、つまりLBA11に対応する4KiBデータが書き込まれた記憶位置を示す。
LBA12に対応するL2Pテーブル31内のエントリには、LBA12に対応する物理アドレスPBA(BLK1、オフセット+1)が格納される。物理アドレスPBA(BLK1、オフセット+1)は、ブロックBLK1内のページP0の2番目の記憶位置、つまりLBA12に対応する4KiBデータが書き込まれた記憶位置を示す。
LBA13に対応するL2Pテーブル31内のエントリには、LBA13に対応する物理アドレスPBA(BLK1、オフセット+2)が格納される。物理アドレスPBA(BLK1、オフセット+2)は、ブロックBLK1内のページP0の3番目の記憶位置、つまりLBA13に対応する4KiBデータが書き込まれた記憶位置を示す。
LBA14に対応するL2Pテーブル31内のエントリには、LBA14に対応する物理アドレスPBA(BLK1、オフセット+3)が格納される。物理アドレスPBA(BLK1、オフセット+3)は、ブロックBLK1内のページP0の4番目の記憶位置、つまりLBA14に対応する4KiBデータが書き込まれた記憶位置を示す。
図13は、図11に示されるデータ書き込み動作に応じて実行される、バリッドセクタマップを更新する動作を示す図である。
ライト制御部121は、まず、ブロックBLK1に対応するバリッドセクタマップ32-1を選択する。バリッドセクタマップ32-1内の先頭から4つの有効データ識別子は、ブロックBLK1のページP0内の4つの記憶位置にそれぞれ対応している。ライト制御部121は、これら4つの有効データ識別子の各々を、無効を示す値「0」から、有効を示す値「1」に更新する。これにより、ブロックBLK1のページP0内の4つの記憶位置に格納されている4つの4KiBデータは有効データとなる。
次に、ホスト2からのライト要求に応じて実行される、更新データを書き込む動作について説明する。図14は、ホスト2からライト要求を受信した場合に実施形態に係るSSD3において実行される。更新データ書き込み動作の例を示す図である。
図14においては、開始LBAがLBA51である16KiBデータがブロックBLK0のオフセット+0~+3に対応する記憶位置に格納されている状態で、LBA51およびサイズ=4を指定するライト要求がホスト2から受信された場合が想定されている。
現在割り当てられている書き込み先ブロックはブロックBLK1である。ブロックBLK1のページP0には、4つのLBA11~LBA14に対応する4つの4KiBデータが既に書き込まれている。したがって、ライト制御部121は、ブロックBLK1のページP1に、ライト要求に関連付けられた16KiBデータと4つのLBA51~LBA54とを書き込む。
この場合、ブロックBLK1内のページP1の最初の記憶位置には、ライト要求に関連付けられた16KiB更新データのうちの最初の4KiBデータと、LBA51とが書き込まれる。ブロックBLK1内のページP1の2番目の記憶位置には、16KiB更新データのうちの2番目の4KiBデータと、LBA52とが書き込まれる。ブロックBLK1内のページP1の3番目の記憶位置には、16KiB更新データのうちの3番目の4KiBデータと、LBA53とが書き込まれる。ブロックBLK1内のページP1の4番目の記憶位置には、16KiB更新データのうちの4番目の4KiBデータと、LBA54とが書き込まれる。
図15は、図14に示される更新データ書き込み動作に応じて実行される、L2Pテーブル31を更新する動作を示す図である。
ライト制御部121は、4つのLBA51~LBA54に、4つのLBA51~LBA54に対応する4つの4KiBデータが格納された4つの物理アドレスPBAがそれぞれ関連付けられるように、L2Pテーブル31を更新する。
つまり、LBA51に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK0、オフセット+0)から物理アドレスPBA(BLK1、オフセット+4)に更新される。物理アドレスPBA(BLK0、オフセット+0)は、ブロックBLK0内のページP0の最初の記憶位置、つまりLBA51に対応する以前の4KiBデータが格納されている記憶位置を示す。物理アドレスPBA(BLK1、オフセット+4)は、ブロックBLK1内のページP1の最初の記憶位置、つまりLBA51に対応する4KiB更新データが書き込まれた記憶位置を示す。
LBA52に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK0、オフセット+1)から物理アドレスPBA(BLK1、オフセット+5)に更新される。物理アドレスPBA(BLK0、オフセット+1)は、ブロックBLK0内のページP0の2番目の記憶位置、つまりLBA52に対応する以前の4KiBデータが格納されている記憶位置を示す。物理アドレスPBA(BLK1、オフセット+5)は、ブロックBLK1内のページP1の2番目の記憶位置、つまりLBA52に対応する4KiB更新データが書き込まれた記憶位置を示す。
同様にして、LBA53に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK0、オフセット+2)から物理アドレスPBA(BLK1、オフセット+6)に更新される。さらに、LBA54に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK0、オフセット+4)から物理アドレスPBA(BLK1、オフセット+7)に更新される。
図16は、図14に示される更新データ書き込み動作に応じて実行される、バリッドセクタマップを更新する動作を示す図である。
ライト制御部121は、まず、ブロックBLK0に対応するバリッドセクタマップ32-0を選択する。バリッドセクタマップ32-0内の先頭から4つの有効データ識別子は、ブロックBLK0のページP0内の4つの記憶位置にそれぞれ対応している。ライト制御部121は、これら4つの有効データ識別子の各々を、有効を示す値「1」から、無効を示す値「0」に更新する。
次に、ライト制御部121は、ブロックBLK1に対応するバリッドセクタマップ32-1を選択する。バリッドセクタマップ32-1内の5番目~8番目の4つの有効データ識別子は、ブロックBLK1のページP1内の4つの記憶位置にそれぞれ対応している。ライト制御部121は、これら4つの有効データ識別子の各々を、無効を示す値「0」から、有効を示す値「1」に更新する。
図17は、ブロックBLK1内の各未書き込み記憶位置にデータが書き込まれた状態を示す図である。
図17では、ブロックBLK1内の含まれる総ページ数が4ページである場合、つまりブロックBLK1に含まれる記憶位置(セクタ)の総数が16である場合が例示されている。ブロックBLK1のページP2内の4つの記憶位置には、LBA102~LBA105に対応する4つの4KiBデータが格納されている。ブロックBLK1のページP3内の4つの記憶位置には、LBA81~LBA84に対応する4つの4KiBデータが格納されている。
ここでは、ブロックBLK1内の含まれる16個の4KiBデータのうち、例えば、LBA11に対応する4KiBデータ、LBA13に対応する4KiBデータ、LBA14に対応する4KiBデータ、LBA81に対応する4KiBデータ、LBA82に対応する4KiBデータ、およびLBA84に対応する4KiBデータだけが有効データである場合が想定されている。
次に、バリッドセクタマップ32のデータ構造を説明する。図18は、図17に示されるブロックBLK1内のデータ配置と、図17に示されるブロックBLK1に対応するバリッドセクタマップ32-1のデータ構造の例とを示す図である。
ブロックBLK1に含まれる記憶位置(セクタ)の総数が16である場合、ブロックBLK1に対応するバリッドセクタマップ32-1は、ブロックBLK1内の16個の記憶位置にそれぞれ対応する16個の有効データ識別子、つまり16ビットのビットマップフラグを含む。
LBA11に対応する4KiBデータ、LBA13に対応する4KiBデータ、LBA14に対応する4KiBデータ、LBA81に対応する4KiBデータ、LBA82に対応する4KiBデータ、およびLBA84に対応する4KiBデータだけが有効データである場合、16個の有効データ識別子、つまり16ビットのビットマップフラグは、「1011000000001101」を示す。
次に、無効化処理について説明する。図19は、ある論理アドレスを指定する無効化要求(Trimコマンド)をホスト2から受信した場合に実施形態に係るSSD3において実行される無効化処理を示す図である。
図19では、LBA13およびサイズ=2を指定するTrimコマンドがホスト2から受信された場合が想定されている。
無効化処理部124は、まず、L2Pテーブル31を参照することによって、LBA13に対応する物理アドレスPBA(BLK1、オフセット+2)と、LBA14に対応する物理アドレスPBA(BLK1、オフセット+3)とをL2Pテーブル31から取得する。この場合、無効化処理部124は、物理アドレスPBA(BLK1、オフセット+2)をマジックナンバに変更しない。物理アドレスPBA(BLK1、オフセット+2)は、LBA13に対応するL2Pテーブル31内のエントリに維持される。同様に、無効化処理部124は、物理アドレスPBA(BLK1、オフセット+3)もマジックナンバに変更しない。物理アドレスPBA(BLK1、オフセット+3)は、LBA14に対応するL2Pテーブル31内のエントリに維持される。
物理アドレスPBA(BLK1、オフセット+2)は、ブロックBLK1内の先頭から3番目の記憶位置を示す。したがって、無効化処理部124は、ブロックBLK1に対応するバリッドセクタマップ32-1の先頭から3番目の有効データ識別子を、有効を示す値「1」から、無効を示す値「0」に更新する。
物理アドレスPBA(BLK1、オフセット+3)は、ブロックBLK1内の先頭から4番目の記憶位置を示す。したがって、無効化処理部124は、ブロックBLK1に対応するバリッドセクタマップ32-1の先頭から4番目の有効データ識別子を、有効を示す値「1」から、無効を示す値「0」に更新する。
この結果、LBA13に対応するデータと、LBA14に対応するデータとは、無効データとなる。しかしながら、物理アドレスPBA(BLK1、オフセット+2)と物理アドレスPBA(BLK1、オフセット+3)とはL2Pテーブル31内に維持されている。したがって、LBA13に対応するデータと、LBA14に対応するデータとがブロックBLK1内に存在している間は、ホスト2からのリード要求に従って、LBA13に対応するデータと、LBA14に対応するデータをNAND型フラッシュメモリ5から正常に読み出すことができる。
図20は、実施形態に係るSSD3において実行されるデータ読み出し動作を示す図である。図20では、Trimコマンドによって既に無効化されたLBA13に対応するデータの読み出しが要求された場合が想定されている。
LBA13およびサイズ=1を指定するリード要求(リードコマンド)をホスト2から受信した場合、リード制御部122は、L2Pテーブル31を参照することによって、LBA13に関連付けられている物理アドレスPBA(BLK1、オフセット+2)をL2Pテーブル31から取得する。
物理アドレスPBA(BLK1、オフセット+2)は、ブロックBLK1のページP0内の3番目の記憶位置を示す。したがって、リード制御部122は、ブロックBLK1のページP0内の3番目の記憶位置に格納されている4KiBデータと、この4KiBデータに対応するLBA(ここではLBA13)とを、ブロックBLK1から読み出す。
この場合、例えば、リード制御部122は、まず、ブロックBLK1のページP0から、4つの4KiBデータと、これら4つの4KiBデータに対応する4つのLBAとを読み出してもよい。そして、リード制御部122は、読み出された4つの4KiBデータと読み出された4つのLBAから、ブロックBLK1のページP0内の3番目の記憶位置に格納されている4KiBデータと、この4KiBデータに対応するLBA(ここではLBA13)とを、抽出してもよい。
LBA比較処理部125は、読み出された4KiBデータに対応する読み出されたLBA(ここではLBA13)を、リード要求によって指定されたLBA(ここでは、LBA13)と比較する。これらLBAが互いに一致していることがLBA比較処理部125によって確認されると、リード制御部122は、読み出された4KiBデータをホスト2に送信する。
次に、再有効化処理を説明する。図21は、無効化要求(Trimコマンド)によって指定された論理アドレスに対応するデータを再有効化するための再有効化要求(Untrimコマンド)をホスト2から受信した場合に実施形態に係るSSD3において実行される再有効化処理を示す図である。
図21では、LBA13およびサイズ=2を指定するUntrimコマンドがホスト2から受信された場合が想定されている。
再有効化処理部126は、まず、L2Pテーブル31を参照することによって、LBA13に対応する物理アドレスPBA(BLK1、オフセット+2)と、LBA14に対応する物理アドレスPBA(BLK1、オフセット+3)とをL2Pテーブル31から取得する。
物理アドレスPBA(BLK1、オフセット+2)は、ブロックBLK1内の先頭から3番目の記憶位置を示す。したがって、再有効化処理部126は、ブロックBLK1に対応するバリッドセクタマップ32-1の先頭から3番目の有効データ識別子を、無効を示す値「0」から、有効を示す値「1」に更新する。L2Pテーブル31においては、物理アドレスPBA(BLK1、オフセット+2)はLBA13に対応するエントリに維持されている。したがって、LBA13に対応するエントリに物理アドレスPBA(BLK1、オフセット+2)を再び格納する必要はない。
物理アドレスPBA(BLK1、オフセット+3)は、ブロックBLK1内の先頭から4番目の記憶位置を示す。したがって、再有効化処理部126は、ブロックBLK1に対応するバリッドセクタマップ32-1の先頭から4番目の有効データ識別子を、無効を示す値「0」から、有効を示す値「1」に更新する。L2Pテーブル31においては、物理アドレスPBA(BLK1、オフセット+3)はLBA14に対応するエントリに維持されている。したがって、LBA14に対応するエントリに物理アドレスPBA(BLK1、オフセット+3)を再び格納する必要はない。
次に、バリッドセクタマップ32の内容の遷移について説明する。図22は、あるブロック内のデータ配置と、このブロックに対応するバリッドセクタマップと、無効化要求が処理された後のバリッドセクタマップの内容と、再有効化要求が処理された後のバリッドセクタマップの内容とを示す図である。
図22では、ブロックBLK1に対応するバリッドセクタマップ32-1が例示されている。例えば、ブロックBLK1内の含まれる16個の4KiBデータのうち、LBA11に対応する4KiBデータ、LBA13に対応する4KiBデータ、LBA14に対応する4KiBデータ、LBA81に対応する4KiBデータ、LBA82に対応する4KiBデータ、およびLBA84に対応する4KiBデータだけが有効データである場合を想定する。
この場合、バリッドセクタマップ32-1に含まれる16個の有効データ識別子、つまり、16ビットのビットマップフラグは、「1011000000001101」を示す。
LBA13およびサイズ=2を指定するTrimコマンドをホスト2から受信した場合、LBA13に対応するデータが格納されているブロックBLK1内の3番目の記憶位置に対応する有効データ識別子は、「1」から「0」に更新される。さらに、LBA14に対応するデータが格納されているブロックBLK1内の4番目の記憶位置に対応する有効データ識別子も、「1」から「0」に更新される。この結果、バリッドセクタマップ32-1に含まれる16個の有効データ識別子は、「1000000000001101」を示す。
ブロックBLK1がガベージコレクションのためのコピー元ブロックとして選択された場合、ブロックBLK1内の16個の記憶位置のうち、「1」の有効データ識別子に関連付けられた4個の記憶位置に格納されているデータだけが有効データとしてコピー先ブロックにコピーされる。
LBA13およびサイズ=2を指定するUntrimコマンドをホスト2から受信した場合、LBA13に対応するデータが格納されているブロックBLK1内の3番目の記憶位置に対応する有効データ識別子は、「0」から「1」に更新される。さらに、LBA14に対応するデータが格納されているブロックBLK1内の4番目の記憶位置に対応する有効データ識別子も、「0」から「1」に更新される。この結果、バリッドセクタマップ32-1に含まれる16個の有効データ識別子は、「1011000000001101」を示す。
なお、ブロックBLK1に対してガベージコレクション動作が施された後に、ブロックBLK1が書き込み先ブロックとして再利用されると、ブロックBLK1内の3番目の記憶位置に、LBA13とは異なる別のLBAに対応するデータが新たに書き込まれる可能性がある。同様に、ブロックBLK1内の4番目の記憶位置にも、LBA14とは異なる別のLBAに対応するデータが新たに書き込まれる可能性がある。
この場合には、ブロックBLK1内の3番目の記憶位置から読み出されるLBAは、LBA13に一致しない。したがって、LBA13を指定するUntrimコマンドを受信した場合、ブロックBLK1内の3番目の記憶位置に対応する有効データ識別子を、「0」から「1」に更新する処理は実行されない。同様に、ブロックBLK1内の4番目の記憶位置から読み出されるLBAもLBA14に一致しないので、ブロックBLK1内の4番目の記憶位置に対応する有効データ識別子を、「0」から「1」に更新する処理も実行されない。
次に、ガベージコレクション動作について説明する。図23は、コピー元ブロックに対応するバリッドセクタマップ32に基づいて、有効データと論理アドレスの双方をコピー元ブロックからコピー先ブロックにコピーするガベージコレクション動作を示す図である。
GC制御部123は、アクティブブロックの中からコピー元ブロックを選択する。また、GC制御部123は、フリーブロックの中からコピー先ブロックを選択する。図23では、図19で説明したTrimコマンドによってLBA13~LBA14に対応するデータが無効化された後、ブロックBLK1がコピー元ブロックとして選択された場合が例示されている。また、図23において、ブロックBLK100は、コピー先ブロックとして選択されたブロックである。
GC制御部123は、コピー元ブロックBLK1に対応するバリッドセクタマップ32-1を選択する。このバリッドセクタマップ32-1は、「1000000000001101」を示す。GC制御部123は、バリッドセクタマップ32-1に基づいて、有効データとこの有効データに対応するLBAのみを、コピー元ブロックBLK1からコピー先ブロックBLK100にコピーする。
コピー元ブロックBLK1においては、コピー元ブロックBLK1のページP0内の1番目の記憶位置に格納されている1個の4KiBデータと、コピー元ブロックBLK1ページP3内の1番目、2番目、4番目の3つの記憶位置に格納されている3個の4KiBデータが有効データである。したがって、コピー元ブロックBLK1内のこれら4個の4KiBデータとこれら4個の4KiBデータに対応する4個のLBA(LBA11、LBA81、LBA82、LBA84)とがコピー元ブロックBLK1から読み出される。読み出された4個の4KiBデータと4個のLBA(LBA11、LBA81、LBA82、LBA84)とは、コピー先ブロックBLK100のページP0内の4つのコピー先記憶位置にそれぞれ書き込まれる。
図24は、図23に示すガベージコレクション動作において実行されるL2Pテーブル31を更新する動作を示す図である。
GC制御部123は、コピーされた4個の4KiBデータに対応するLBA11、LBA81、LBA82、LBA84に、4個のコピー先記憶位置を示す4個の物理アドレスPBAがそれぞれ関連付けられるように、L2Pテーブル31を更新する。
つまり、LBA11に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK1、オフセット+0)から物理アドレスPBA(BLK100、オフセット+0)に更新される。物理アドレスPBA(BLK100、オフセット+0)は、ブロックBLK100内のページP0の最初の記憶位置、つまりLBA11に対応する4KiBデータがコピーされた記憶位置を示す。
LBA81に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK1、オフセット+12)から物理アドレスPBA(BLK100、オフセット+1)に更新される。物理アドレスPBA(BLK100、オフセット+1)は、ブロックBLK100内のページP0の2番目の記憶位置、つまりLBA81に対応する4KiBデータがコピーされた記憶位置を示す。
同様にして、LBA82に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK1、オフセット+13)から物理アドレスPBA(BLK100、オフセット+2)に更新される。また、LBA84に対応するL2Pテーブル31内のエントリに格納されている物理アドレスPBAは、物理アドレスPBA(BLK1、オフセット+15)から物理アドレスPBA(BLK100、オフセット+3)に更新される。
図25は、図23に示すガベージコレクション動作において実行される、コピー元ブロックに対応するバリッドセクタマップを更新する動作と、コピー先ブロックに対応するバリッドセクタマップを更新する動作とを示す図である。
GC制御部123は、まず、コピー元ブロックBLK1に対応するバリッドセクタマップ32-1を選択する。バリッドセクタマップ32-1内の最初の有効データ識別子は、コピーされた有効データ(LBA11に対応するデータ)が格納されていたブロックBLK1の先頭の記憶位置(コピー元記憶位置)に対応している。GC制御部123は、この有効データ識別子を、有効を示す値「1」から、無効を示す値「0」に更新する。
バリッドセクタマップ32-1の先頭から13番目の有効データ識別子は、コピーされた有効データ(LBA81に対応するデータ)が格納されていたブロックBLK1の先頭から13番目の記憶位置(コピー元記憶位置)に対応している。GC制御部123は、この有効データ識別子を、有効を示す値「1」から、無効を示す値「0」に更新する。
同様にして、GC制御部123は、バリッドセクタマップ32-1の先頭から14番目および16番目の2つの有効データ識別子の各々を、有効を示す値「1」から、無効を示す値「0」に更新する。
次に、GC制御部123は、コピー先ブロックBLK100に対応するバリッドセクタマップ32-100を選択する。バリッドセクタマップ32-100内の先頭から4つの有効データ識別子は、コピー先ブロックBLK100のページP0内の4つの記憶位置(コピー先記憶位置)にそれぞれ対応している。GC制御部123は、これら4つの有効データ識別子の各々を、無効を示す値「0」から、有効を示す値「1」に更新する。
次に、ガベージコレクション動作が施されたコピー元ブロックをデータ書き込みに再利用する動作を説明する。図26は、コピー元ブロック内の全ての有効データと全ての論理アドレスとのコピーが完了した後にコピー元ブロックをデータの書き込みのために再利用する動作を示す図である。
コピー元ブロックBLK1内の4個の有効データとこれら4個の有効データに対応する4個のLBAとをコピー先ブロックにコピーする動作が完了すると、コピー元ブロックBLK1は、有効データを含まないフリーブロックとなる。よって、ブロックBLK1は、新たな書き込み先ブロックとして再利用可能となる。
ブロックBLK1が新たな書き込み先ブロックとして再利用される場合、まず、ブロックBLK1に対する消去動作が実行される。これにより、ブロックBLK1内の全てのデータがブロックBLK1から消去される。そして、ブロックBLK1に、データとこのデータに対応するLBAとが書き込まれる。
例えば、LBA61およびサイズ(=4)を指定するライト要求をホスト2から受信した場合、ライト制御部121は、ブロックBLK1内のページP0に、ライト要求に関連付けられた16KiBデータと4つのLBA61~LBA64とを書き込む。この場合、ブロックBLK1内のページP0の最初の記憶位置に、ライト要求に関連付けられた16KiBデータのうちの最初の4KiBデータと、LBA61とが書き込まれる。ブロックBLK1内のページP0の2番目の記憶位置には、16KiBデータのうちの2番目の4KiBデータと、LBA62とが書き込まれる。ブロックBLK1内のページP0の3番目の記憶位置には、16KiBデータのうちの3番目の4KiBデータと、LBA63とが書き込まれる。ブロックBLK1内のページP0の4番目の記憶位置には、16KiBデータのうちの4番目の4KiBデータと、LBA64とが書き込まれる。
そして、ライト制御部121は、L2Pテーブル31を更新することによって、4つのLBA61~LBA64に、これら4つの4KiBデータが書き込まれた4つの記憶位置を示す4つの物理アドレスをそれぞれ関連付ける。
図27は、L2Pテーブル31から取得された物理アドレスPBAに対応する記憶位置からデータと共に読み出された論理アドレスが、リード要求によって指定された論理アドレスに一致しない場合に実行される動作を示す図である。
図27では、ブロックBLK1が書き込み先ブロックとして再利用された後に、Trimコマンドによって既に無効化されたLBA13に対応するデータの読み出しが要求された場合が想定されている。
LBA13およびサイズ=1を指定するリード要求(リードコマンド)をホスト2から受信した場合、リード制御部122は、L2Pテーブル31を参照することによって、LBA13に関連付けられている物理アドレスPBA(BLK1、オフセット+2)をL2Pテーブル31から取得する。
物理アドレスPBA(BLK1、オフセット+2)は、ブロックBLK1のページP0内の3番目の記憶位置を示す。したがって、リード制御部122は、ブロックBLK1のページP0内の3番目の記憶位置に格納されている4KiBデータと、この4KiBデータに対応するLBAとを、ブロックBLK1から読み出す。
ブロックBLK1のページP0内の3番目の記憶位置には、LBA63と、このLBA63に対応する4KiBデータとが格納されている。
LBA比較処理部125は、ブロックBLK1から読み出された4KiBデータに対応する読み出されたLBA(ここではLBA63)を、リード要求によって指定されたLBA(ここでは、LBA13)と比較する。これらLBAが互いに一致していないことがLBA比較処理部125によって確認されると、リード制御部122は、読み出した4KiBデータをホスト2に送信しない。
この場合、リード制御部122は、SSD3に存在しないデータをホスト2が要求したことをホスト2に通知してもよい。SSD3に存在しないデータをホスト2が要求したことをホスト2に通知する方法としては、SSD3に存在しないデータをホスト2が要求したことを示すエラーコードをホスト2に送信する方法、または予め決められた特定のデータパターンを有するデータをホスト2に送信する方法、等を使用し得る。
次に、データ書き込み動作と、ガベージコレクション動作と、無効化処理と、再有効化処理と、データ読み出し動作を説明する。図28は、実施形態に係るSSD3において実行される、データ書き込み動作のシーケンスと、ガベージコレクション動作のシーケンスと、無効化処理のシーケンスと、再有効化処理のシーケンスと、データ読み出し動作のシーケンスとを示す図である。
図28において、wLBAおよびwDataはライト要求に関連付けられたLBAおよびデータを示す。wPBAは、データが書き込まれるべき物理アドレスPBAを示す。fLBAは、データと共にNAND型フラッシュメモリ5に書き込まれたLBAを示す。
rLBAとrDataとはリード要求に関連付けられたLBAとリード要求に応じて読み出されたデータとを示す。rPBAは、データが読み出されるべき物理アドレスPBAを示す。
sPBAはGCソースとして使用されるコピー元記憶位置の物理アドレスPBAを示す。dPBAはGCデスティネーションとして使用されるコピー先記憶位置の物理アドレスPBAを示す。
tLBAはTrimコマンド(Trim要求)によって指定されたLBAを示す。uLBAはUntrimコマンド(Untrim要求)によって指定されたLBAを示す。
ホスト2からライト要求を受信した場合、ライト制御部121は、受信したライト要求に関連付けられたデータwDataが書き込まれるべき物理アドレスwPBAを決定する。そして、ライト制御部121は、物理アドレスwPBAによって示されるNAND型フラッシュメモリ5内の記憶位置に、wDataとwLBAとを書き込む。
さらに、ライト制御部121は、wLBAに対応するL2Pテーブル31内のエントリにwPBAを格納することによって、wLBAにwPBAを関連付ける。wDataが書き込まれたwPBAに対応するバリッドセクタマップ32内の有効データ識別子は、「1」に更新される。
GC制御部123は、バリッドセクタマップ32に基づいて、有効データが格納されているコピー元ブロック内の各コピー元記憶位置の物理アドレスsPBAを特定する。GC制御部123は、特定した物理アドレスsPBAから有効データとこの有効データのfLBAとを読み出す。そして、GC制御部123は、読み出した有効データと読み出したfLBAとを、dPBAによって示されるコピー先ブロック内のコピー先記憶位置にコピーする。
GC制御部123は、読み出したfLBAにdPBAが関連付けられるように、L2Pテーブル31を更新する。有効データがコピーされたdPBAに対応するバリッドセクタマップ32内の有効データ識別子は、「1」に更新される。また、有効データが格納されていたsPBAに対応するバリッドセクタマップ32内の有効データ識別子は、「0」に更新される。
tLBAを指定するTrim要求がホスト2から受信された場合、tLBAに関連付けられているPBAがL2Pテーブル31から取得される。この取得されたPBAに対応するバリッドセクタマップ32内の有効データ識別子は、「0」に更新される。
uLBAを指定するUntrim要求がホスト2から受信された場合、tLBAに関連付けられているPBAがL2Pテーブル31から取得される。この取得されたPBAに対応するバリッドセクタマップ32内の有効データ識別子は、「1」に更新される。
rLBAを指定するリード要求がホスト2から受信された場合、tLBAに関連付けられているrPBAがL2Pテーブル31取得される。そして、rPBAによって示される記憶位置から、データとこのデータに対応するfLBAとの双方がNAND型フラッシュメモリ5から読み出される。LBA比較処理部125は、NAND型フラッシュメモリ5からデータと共に読み出されたfLBAを、このリード要求によって指定されたrLBAと比較する。fLBAがrLBAに一致する場合、NAND型フラッシュメモリ5から読み出されたデータは、rDATAとしてホスト2に送信される。fLBAがrLBAに一致しない場合は、NAND型フラッシュメモリ5から読み出されたデータはホスト2に送信されない。
次に、データ書き込み動作の手順を説明する。図29は、実施形態に係るSSD3において実行されるデータ書き込み動作の手順を示すフローチャートである。
ライト要求をホスト2から受信した場合(ステップS101でYes)、コントローラ4は、NAND型フラッシュメモリ5内の複数のブロックの一つを書き込み先ブロックとして割り当てる(ステップS102)。書き込み先ブロックが既に割り当てられている場合には、ステップS102の処理を実行する必要は無い。
コントローラ4は、受信したライト要求に関連付けられたライトデータが書き込まれるべき書き込み先ブロック内の記憶位置(書き込み先位置)を決定する(ステップS103)。コントローラ4は、ライトデータとこのライトデータに対応するLBAの双方を書き込み先ブロック内の書き込み先位置に書き込む(ステップS104)。
コントローラ4は、書き込み先位置を示す物理アドレスPBAがこのLBAに関連付けられるようにL2Pテーブル31を更新する。コントローラ4は、書き込み先ブロックに対応するバリッドセクタマップを選択する(ステップS106)。コントローラ4は、書き込み先ブロック内の書き込み先位置に対応するバリッドセクタマップ内の有効データ識別子(ビットマップフラグ)が有効を示す値に更新されるように、選択したバリッドセクタマップを更新する(ステップS107)。
そして、コントローラ4は、ライト要求の完了を示す応答をホスト2に送信する(ステップS108)。
次に、ガベージコレクション動作の手順を説明する。図30は、実施形態に係るSSD3において実行されるガベージコレクション動作の手順を示すフローチャートである。
コントローラ4は、GC開始条件が満たされたか否かを判定する(ステップS111)。例えば、残りフリーブロックの個数が閾値に達した場合に、GC開始条件が満たされたと判定されてもよい。
GC開始条件が満たされた場合(ステップS111のYes)、コントローラ4は、アクティブブロックからコピー元ブロックを選択する(ステップS112)。コントローラ4は、コピー先ブロックを割り当てる(ステップS113)。
コピー元ブロック内に含まれる複数の記憶位置にそれぞれ対応するバリッドセクタマップ内の複数の有効データフラグに基づいて、コントローラ4は、有効データとこの有効データに対応するLBAとを、コピー元ブロックからコピー先ブロックにコピーする(ステップS114)。コントローラ4は、有効データがコピーされたコピー先ブロック内のコピー先記憶位置を示す物理アドレスPBAが有効データのLBAに関連付けられるように、L2Pテーブル31を更新する(ステップS115)。
コントローラ4は、コピー先ブロックに対応するバリッドセクタマップを選択する。コントローラ4は、有効データがコピーされたコピー先ブロック内のコピー先記憶位置に対応するバリッドセクタマップ内の有効データ識別子(ビットマップフラグ)が有効を示す値に更新されるように、選択したバリッドセクタマップを更新する(ステップS116)。
コントローラ4は、コピー元ブロックに対応するバリッドセクタマップを選択する。コントローラ4は、コピーされた有効データが格納されているコピー元ブロック内のコピー元記憶位置に対応するバリッドセクタマップ内の有効データ識別子(ビットマップフラグ)が無効を示す値に更新されるように、選択したバリッドセクタマップを更新する(ステップS117)。
コントローラ4は、コピー元ブロック内の全ての有効データのコピーが完了したか否かを判定する(ステップS118)。コピー元ブロック内の全ての有効データをコピー元ブロックからコピー先ブロックにコピーする処理が完了するまで、ステップS114~S117の処理が繰り返し実行される。
次に、無効化処理の手順を説明する。図31は、実施形態に係るSSD3において実行される無効化処理の手順を示すフローチャートである。
無効化すべきデータのLBAを指定するTrim要求をホスト2から受信した場合(ステップS121のYes)、コントローラ4は、L2Pテーブル31を参照することによって、受信したTrim要求によって指定されたLBAに関連付けられている物理アドレスPBAをL2Pテーブル31から取得する(ステップS122)。
コントローラ4は、取得した物理アドレスPBAによって指定される記憶位置を含むブロックに対応するバリッドセクタマップを選択する(ステップS123)。
コントローラ4は、L2Pテーブル31を更新せずに、取得した物理アドレスPBAをL2Pテーブル31に維持した状態で、選択したバリッドセクタマップを更新する(ステップS124)。ステップS124では、コントローラ4は、取得した物理アドレスPBAによって示される記憶位置に対応する有効データ識別子が無効を示す値に更新されるように、選択したバリッドセクタマップを更新する。
次に、データ読み出し動作の手順を説明する。図32は、実施形態に係るSSD3において実行されるデータ読み出し動作の手順を示すフローチャートである。
読み出し対象データのLBAを指定するリード要求をホスト2から受信した場合(ステップS131のYes)、コントローラ4は、L2Pテーブル31を参照することによって、受信したリード要求によって指定されたLBAに関連付けられている物理アドレスPBAをL2Pテーブル31から取得する(ステップS132)。
コントローラ4は、取得した物理アドレスPBAによって示されるNAND型フラッシュメモリ5内の記憶位置からデータとLBAとを読み出す(ステップS133)。コントローラ4は、受信したリード要求によって指定されたLBAと読み出したLBAとを比較する(ステップS134)。
読み出したLBAが受信したリード要求によって指定されたLBAと一致した場合(ステップS135のYes)、コントローラ4は、読み出したデータをホスト2に送信する(ステップS136)。そして、コントローラ4は、リード要求の完了を示す応答をホスト2に送信する(ステップS137)。
読み出したLBAが受信したリード要求によって指定されたLBAと一致しなかった場合(ステップS135のNo)、コントローラ4は、リード要求によって指定されたLBAに対応する読み出し対象データがSSD3内に存在しないことをホスト2に通知する(ステップS138)。ステップS138では、読み出したデータはホスト2に送信されない。
次に、再有効化処理を説明する。図33は、実施形態に係るSSD3において実行される再有効化処理の手順を示すフローチャートである。
再有効化すべきデータに対応するLBAを指定するUntrim要求をホスト2から受信した場合(ステップS141のYes)、コントローラ4は、L2Pテーブル31を参照することによって、受信したUntrim要求によって指定されたLBAに関連付けられている物理アドレスPBAをL2Pテーブル31から取得する(ステップS142)。
コントローラ4は、取得した物理アドレスPBAによって示されるNAND型フラッシュメモリ5内の記憶位置からデータとLBAとを読み出す(ステップS143)。コントローラ4は、受信したUntrim要求によって指定されたLBAと読み出したLBAとを比較する(ステップS144)。
読み出したLBAが受信したUntrim要求によって指定されたLBAと一致した場合(ステップS145のYes)、コントローラ4は、取得した物理アドレスPBAによって示される記憶位置を含むブロックに対応するバリッドセクタマップを選択する(ステップS146)。
コントローラ4は、取得した物理アドレスPBAによって示される記憶位置に対応する有効データ識別子(ビットマップフラグ)が有効を示す値に更新されるように、選択したバリッドセクタマップを更新する(ステップS147)。
読み出したLBAが受信したUntrim要求によって指定されたLBAと一致しなかった場合(ステップS145のNo)、コントローラ4は、選択したバリッドセクタマップを更新せずに、エラーをホスト2に送信する(ステップS146)。
以上説明したように、本実施形態によれば、データ書き込み動作においては、データとLBAとの双方がブロックに書き込まれる。このため、ガベージコレクション動作においては、コントローラ4は、コピー元ブロックにデータと一緒に格納されているLBAから、コピー元ブロックからコピー先ブロックにコピーされた有効データに対応するLBAを容易に特定できる。この結果、コントローラ4は、有効データがコピーされたコピー先ブロック内のコピー先記憶位置を示す物理アドレスを、コピーされた有効データに対応するLBAに容易に関連付けることができる。ガベージコレクション動作が施されたコピー元ブロックは書き込み先ブロックとして再利用可能となる。
無効化要求(Trimコマンド)をホスト2から受信した場合には、コントローラ4は、L2Pテーブル31を参照することによって、無効化要求によって指定されたLBAに対応するデータが格納されている記憶位置を示す物理アドレスをL2Pテーブル31から取得する。そして、コントローラ4は、取得した物理アドレスをL2Pテーブル31に維持した状態で、取得した物理アドレスによって示される記憶位置に対応するバリッドセクタマップ32内の有効データ識別子を、無効を示す値に更新する。
この結果、この取得した物理アドレスによって示される記憶位置に格納されているデータは無効データとして取り扱われる。よって、この記憶位置を含むブロックがガベージコレクションのためのコピー元ブロックとして選択された場合には、この記憶位置に格納されているデータをコピー対象から除外することができ、これによってライトアンプリフィケーションを低減させることができる。
L2Pテーブル31においては、無効化要求によって指定されたLBAに対応する物理アドレスは削除されずに残っている。このため、たとえホスト2があるLBAを指定する無効化要求を誤って発行した場合であっても、この無効化要求によって指定されたLBAに対応する物理アドレスをL2Pテーブル31から取得することができる。
このため、たとえあるLBAを指定する無効化要求がホスト2によって発行されても、このLBAに対応するデータが格納されているブロックに対してガベージコレクション動作が施されて、このブロックが新たな書き込み先ブロックとして再利用されるまでは、このLBAに対応するデータをこのブロックから読み出すことができる。
よって、L2Pテーブル31を更新せずにバリッドセクタマップ32のみを更新するという無効化処理は、ライトアンプリフィケーションを低減させるという無効化要求の本来の目的に相当する効果を実現しつつ、この無効化要求によって指定されたLBAに対応するデータの読み出しを一定期間可能にすることができる。
また、上述したように、L2Pテーブル31においては、無効化要求によって指定されたLBAに対応する物理アドレスは残っているので、指定されたLBAに対応する物理アドレスを別のメモリ領域に保存するという追加の処理を行う必要もない。
よって、必要なメモリリソースの増加を招くことなく、ホスト2が誤って無効化要求を発行した場合に対処可能な無効化処理を実現することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、更新を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、121…ライト制御部、122…リード制御部、123…GC制御部、124…無効化処理部、125…LBA比較処理部、126…再有効化処理部。
Claims (10)
- ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記複数のブロックの各々に含まれている複数の記憶位置にそれぞれ対応する複数の有効データ識別子であって、各々が対応する記憶位置に格納されているデータの有効または無効を示す複数の有効データ識別子を、管理テーブルを使用してブロック毎に管理するように構成されたコントローラと、を具備し、
前記コントローラは、
第1の論理アドレスを指定するライト要求を前記ホストから受信したことに応じて、前記ライト要求に関連付けられた第1のデータと前記第1の論理アドレスとの双方を第1のブロックに書き込み、前記第1のデータが書き込まれた前記第1のブロック内の第1の記憶位置を示す第1の物理アドレスが前記第1の論理アドレスに関連付けられるように論理物理アドレス変換テーブルを更新し、前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の第1の有効データ識別子を、有効を示す値に更新し、
前記第1の論理アドレスに対応する前記第1のデータを無効化するための無効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスを前記論理物理アドレス変換テーブルに維持した状態で、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の前記第1の有効データ識別子を、無効を示す値に更新し、
前記不揮発性メモリのガベージコレクションを実行する場合、前記複数のブロックから前記ガベージコレクションのためのコピー元ブロックを選択し、前記コピー元ブロック内の複数の記憶位置に対応する前記管理テーブル内の複数の第2の有効データ識別子に基づいて、有効データと前記有効データに対応する論理アドレスとの双方を前記コピー元ブロックからコピー先ブロックにコピーし、前記有効データがコピーされた前記コピー先ブロック内のコピー先記憶位置を示す物理アドレスが前記有効データの前記論理アドレスに関連付けられるように前記論理物理アドレス変換テーブルを更新し、前記有効データが格納されている前記コピー元ブロック内のコピー元記憶位置に対応する前記管理テーブル内の第3の有効データ識別子を、無効を示す値に更新し、前記コピー先ブロック内の前記コピー先記憶位置に対応する前記管理テーブル内の第4の有効データ識別子を、有効を示す値に更新するように構成されている
メモリシステム。 - 前記コントローラは、
前記第1の論理アドレスを指定するリード要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に格納されているデータと前記データに対応する論理アドレスとの双方を前記第1のブロックから読み出し、前記読み出した論理アドレスが前記リード要求によって指定された前記第1の論理アドレスに一致する場合、前記読み出したデータを前記ホストに送信し、前記読み出した論理アドレスが前記リード要求によって指定された前記第1の論理アドレスに一致しない場合、前記読み出したデータを前記ホストに送信しないように構成されている
請求項1に記載のメモリシステム。 - 前記コントローラは、
前記第1の論理アドレスに対応する前記第1のデータを再有効化するための再有効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記第1の有効データ識別子を、有効を示す値に更新するように構成されている
請求項1または請求項2に記載のメモリシステム。 - 前記コントローラは、
前記再有効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスに基づいて、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に格納されているデータと前記データに対応する論理アドレスとの双方を前記第1のブロックから読み出し、前記読み出した論理アドレスが前記再有効化要求によって指定された前記第1の論理アドレスに一致しない場合、前記第1の有効データ識別子を更新せずに、前記ホストにエラーを通知するように構成されている
請求項3に記載のメモリシステム。 - ホストに接続可能なメモリシステムであって、
複数のブロックを含む不揮発性メモリと、
前記複数のブロックの各々に含まれている複数の記憶位置にそれぞれ対応する複数の有効データ識別子であって、各々が対応する記憶位置に格納されているデータの有効または無効を示す複数の有効データ識別子を、管理テーブルを使用してブロック毎に管理するように構成されたコントローラと、を具備し、
前記コントローラは、
第1の論理アドレスを指定するライト要求を前記ホストから受信したことに応じて、前記ライト要求に関連付けられた第1のデータと前記第1の論理アドレスとの双方を第1のブロックに書き込み、前記第1のデータが書き込まれた前記第1のブロック内の第1の記憶位置を示す第1の物理アドレスが前記第1の論理アドレスに関連付けられるように論理物理アドレス変換テーブルを更新し、前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の第1の有効データ識別子を、有効を示す値に更新し、
前記第1の論理アドレスに対応する前記第1のデータを無効化するための無効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスを前記論理物理アドレス変換テーブルに維持した状態で、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の前記第1の有効データ識別子を、無効を示す値に更新し、
前記第1の論理アドレスに対応する前記第1のデータを再有効化するための再有効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記第1の有効データ識別子を、有効を示す値に更新し、
前記不揮発性メモリのガベージコレクションを実行する場合、前記複数のブロックから前記ガベージコレクションのためのコピー元ブロックを選択し、前記コピー元ブロック内の複数の記憶位置に対応する前記管理テーブル内の複数の第2の有効データ識別子に基づいて、有効データと前記有効データに対応する論理アドレスとの双方を前記コピー元ブロックからコピー先ブロックにコピーし、前記有効データがコピーされた前記コピー先ブロック内のコピー先記憶位置を示す物理アドレスが前記有効データの前記論理アドレスに関連付けられるように前記論理物理アドレス変換テーブルを更新し、前記有効データが格納されている前記コピー元ブロック内のコピー元記憶位置に対応する前記管理テーブル内の第3の有効データ識別子を、無効を示す値に更新し、前記コピー先ブロック内の前記コピー先記憶位置に対応する前記管理テーブル内の第4の有効データ識別子を、有効を示す値に更新するように構成されている
メモリシステム。 - 前記コントローラは、
前記再有効化要求を前記ホストから受信したことに応じて、前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得し、前記取得した第1の物理アドレスに基づいて、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に格納されているデータと前記データに対応する論理アドレスとの双方を前記第1のブロックから読み出し、前記読み出した論理アドレスが前記再有効化要求によって指定された前記第1の論理アドレスに一致しない場合、前記第1の有効データ識別子を更新せずに、前記ホストにエラーを通知するように構成されている
請求項5に記載のメモリシステム。 - 複数のブロックを含む不揮発性メモリを制御する制御方法であって、
前記複数のブロックの各々に含まれている複数の記憶位置にそれぞれ対応する複数の有効データ識別子であって、各々が対応する記憶位置に格納されているデータの有効または無効を示す複数の有効データ識別子を、管理テーブルを使用してブロック毎に管理することと、
第1の論理アドレスを指定するライト要求をホストから受信したことに応じて、
前記ライト要求に関連付けられた第1のデータと前記第1の論理アドレスとの双方を第1のブロックに書き込むことと、
前記第1のデータが書き込まれた前記第1のブロック内の第1の記憶位置を示す第1の物理アドレスが前記第1の論理アドレスに関連付けられるように論理物理アドレス変換テーブルを更新することと、
前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の第1の有効データ識別子を、有効を示す値に更新することと、
前記第1の論理アドレスに対応する前記第1のデータを無効化するための無効化要求を前記ホストから受信したことに応じて、
前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得することと、
前記取得した第1の物理アドレスを前記論理物理アドレス変換テーブルに維持した状態で、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記管理テーブル内の前記第1の有効データ識別子を、無効を示す値に更新することと、
前記不揮発性メモリのガベージコレクションを実行する場合、
前記複数のブロックから前記ガベージコレクションのためのコピー元ブロックを選択することと、
前記コピー元ブロック内の複数の記憶位置に対応する前記管理テーブル内の複数の第2の有効データ識別子に基づいて、有効データと前記有効データに対応する論理アドレスとの双方を前記コピー元ブロックからコピー先ブロックにコピーすることと、
前記有効データがコピーされた前記コピー先ブロック内のコピー先記憶位置を示す物理アドレスが前記有効データの前記論理アドレスに関連付けられるように前記論理物理アドレス変換テーブルを更新することと、
前記有効データが格納されている前記コピー元ブロック内のコピー元記憶位置に対応する前記管理テーブル内の第3の有効データ識別子を、無効を示す値に更新することと、
前記コピー先ブロック内の前記コピー先記憶位置に対応する前記管理テーブル内の第4の有効データ識別子を、有効を示す値に更新することと、を具備する
制御方法。 - 前記第1の論理アドレスを指定するリード要求を前記ホストから受信したことに応じて、
前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得することと、
前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に格納されているデータと前記データに対応する論理アドレスとの双方を前記第1のブロックから読み出すことと、
前記読み出した論理アドレスが前記リード要求によって指定された前記第1の論理アドレスに一致する場合、前記読み出したデータを前記ホストに送信することと、
前記読み出した論理アドレスが前記リード要求によって指定された前記第1の論理アドレスに一致しない場合、前記読み出したデータを前記ホストに送信しないことと、をさらに具備する
請求項7に記載の制御方法。 - 前記第1の論理アドレスに対応する前記第1のデータを再有効化するための再有効化要求を前記ホストから受信したことに応じて、
前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得することと、
前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に対応する前記第1の有効データ識別子を、有効を示す値に更新することと、をさらに具備する
請求項7または請求項8に記載の制御方法。 - 前記再有効化要求を前記ホストから受信したことに応じて、
前記第1の論理アドレスに関連付けられている前記第1の物理アドレスを前記論理物理アドレス変換テーブルから取得することと、
前記取得した第1の物理アドレスに基づいて、前記取得した第1の物理アドレスによって示される前記第1のブロック内の前記第1の記憶位置に格納されているデータと前記データに対応する論理アドレスとの双方を前記第1のブロックから読み出すことと、
前記読み出した論理アドレスが前記再有効化要求によって指定された前記第1の論理アドレスに一致しない場合、前記第1の有効データ識別子を更新せずに、前記ホストにエラーを通知することと、をさらに具備する
請求項9に記載の制御方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021102261A JP2023001494A (ja) | 2021-06-21 | 2021-06-21 | メモリシステムおよび制御方法 |
TW110139608A TWI817223B (zh) | 2021-06-21 | 2021-10-26 | 記憶體系統及控制方法 |
TW112133587A TW202401260A (zh) | 2021-06-21 | 2021-10-26 | 記憶體系統及控制方法 |
CN202111457814.4A CN115576859A (zh) | 2021-06-21 | 2021-12-02 | 存储***以及控制方法 |
US17/653,323 US11853200B2 (en) | 2021-06-21 | 2022-03-03 | Memory system and controller to invalidate data corresponding to a logical address |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021102261A JP2023001494A (ja) | 2021-06-21 | 2021-06-21 | メモリシステムおよび制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023001494A true JP2023001494A (ja) | 2023-01-06 |
Family
ID=84490326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021102261A Pending JP2023001494A (ja) | 2021-06-21 | 2021-06-21 | メモリシステムおよび制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11853200B2 (ja) |
JP (1) | JP2023001494A (ja) |
CN (1) | CN115576859A (ja) |
TW (2) | TW202401260A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022120527A1 (en) * | 2020-12-07 | 2022-06-16 | Micron Technology, Inc. | Techniques for accessing managed nand |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122193B2 (en) * | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
US8397107B1 (en) * | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US11232022B2 (en) * | 2010-10-29 | 2022-01-25 | Samsung Electronics Co., Ltd. | Memory system, data storage device, user device and data management method thereof having a data management information matching determination |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
US9454474B2 (en) * | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
TWI599881B (zh) | 2014-01-22 | 2017-09-21 | 群暉科技股份有限公司 | 用來適應性地管理一固態硬碟之方法、裝置、與計算機程式產品 |
US9619158B2 (en) * | 2014-12-17 | 2017-04-11 | International Business Machines Corporation | Two-level hierarchical log structured array architecture with minimized write amplification |
JP6448570B2 (ja) * | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
TWI622923B (zh) | 2016-05-04 | 2018-05-01 | 群聯電子股份有限公司 | 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置 |
US10489289B1 (en) * | 2016-09-30 | 2019-11-26 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and trim |
JP2018116329A (ja) | 2017-01-16 | 2018-07-26 | 富士通株式会社 | ストレージ制御装置、およびストレージ制御プログラム |
JP6785205B2 (ja) * | 2017-09-21 | 2020-11-18 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP6982468B2 (ja) * | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR20200019430A (ko) * | 2018-08-14 | 2020-02-24 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
TWI791880B (zh) * | 2018-10-12 | 2023-02-11 | 南韓商三星電子股份有限公司 | 電腦系統 |
CN112882650B (zh) * | 2019-11-29 | 2024-04-30 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
JP7500311B2 (ja) * | 2020-07-13 | 2024-06-17 | キオクシア株式会社 | メモリシステム及び情報処理システム |
US11372716B2 (en) * | 2020-07-28 | 2022-06-28 | Micron Technology, Inc. | Detecting special handling metadata using address verification |
-
2021
- 2021-06-21 JP JP2021102261A patent/JP2023001494A/ja active Pending
- 2021-10-26 TW TW112133587A patent/TW202401260A/zh unknown
- 2021-10-26 TW TW110139608A patent/TWI817223B/zh active
- 2021-12-02 CN CN202111457814.4A patent/CN115576859A/zh active Pending
-
2022
- 2022-03-03 US US17/653,323 patent/US11853200B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI817223B (zh) | 2023-10-01 |
US11853200B2 (en) | 2023-12-26 |
US20220405199A1 (en) | 2022-12-22 |
CN115576859A (zh) | 2023-01-06 |
TW202301132A (zh) | 2023-01-01 |
TW202401260A (zh) | 2024-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144888B (zh) | 存储器*** | |
US20210081315A1 (en) | Reconstruction of address mapping in a host of a storage system | |
US11321231B2 (en) | Memory system and method of controlling nonvolatile memory with a write buffer | |
US10599333B2 (en) | Storage device having dual access procedures | |
US11409467B2 (en) | Memory system and method of controlling nonvolatile memory and for reducing a buffer size | |
JP2021033849A (ja) | メモリシステムおよび制御方法 | |
JP7392080B2 (ja) | メモリシステム | |
US20230153012A1 (en) | Memory system and control method | |
US20230333779A1 (en) | Memory system with controller to write data to memory based on lifetime information in write command | |
US20190265910A1 (en) | Memory system | |
US11853200B2 (en) | Memory system and controller to invalidate data corresponding to a logical address | |
JP7077151B2 (ja) | メモリシステム | |
US20230297262A1 (en) | Memory system and control method | |
US20240202113A1 (en) | Memory system | |
US11907567B2 (en) | Memory system having a controller with a data erasure processing function | |
JP2024043063A (ja) | メモリシステムおよび制御方法 |