JP7366795B2 - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP7366795B2
JP7366795B2 JP2020023249A JP2020023249A JP7366795B2 JP 7366795 B2 JP7366795 B2 JP 7366795B2 JP 2020023249 A JP2020023249 A JP 2020023249A JP 2020023249 A JP2020023249 A JP 2020023249A JP 7366795 B2 JP7366795 B2 JP 7366795B2
Authority
JP
Japan
Prior art keywords
write
zone
qlc
data
buffer
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.)
Active
Application number
JP2020023249A
Other languages
English (en)
Other versions
JP2021128582A (ja
Inventor
伸一 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020023249A priority Critical patent/JP7366795B2/ja
Priority to US17/018,224 priority patent/US11237769B2/en
Publication of JP2021128582A publication Critical patent/JP2021128582A/ja
Priority to US17/557,148 priority patent/US11768632B2/en
Priority to US18/449,924 priority patent/US20230384980A1/en
Application granted granted Critical
Publication of JP7366795B2 publication Critical patent/JP7366795B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
SSDは、データセンターのサーバのような様々なホスト計算機システムのストレージデバイスとして使用されている。
SSDにおいては、不揮発性メモリの記憶領域を効率的に利用できるようにするための新たな技術の実現が必要とされる。
特開2019-191909号公報
本発明が解決しようとする課題は、不揮発性メモリの記憶領域を効率的に利用できるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記メモリシステムをアクセスするための論理アドレス空間を分割することによって得られる複数の論理アドレス範囲がそれぞれに割り当てられた複数のゾーンの各々に、前記不揮発性メモリに含まれる複数の記憶領域のうちの一つの記憶領域を割り当てるように構成されたコントローラとを具備する。前記コントローラは、前記複数のゾーンのうちの第1のゾーンに割り当てられた第1の記憶領域に対する消去動作を実行する。前記コントローラは、前記第1の記憶領域の前記消去動作の実行から第1の時間が経過するまでの間は、前記第1のゾーンを指定する一つ以上のライト要求を前記ホストから受信したことに応じて、前記一つ以上のライト要求の集合に関連付けられたライトデータを前記ホストのライトバッファから前記メモリシステムの内部バッファに転送する動作と、前記内部バッファに転送された前記ライトデータを前記第1の記憶領域に書き込む動作とを含む第1の書き込み動作を実行する。前記コントローラは、前記第1の記憶領域に第1サイズ以上の未書き込み領域が残っている状態で、前記消去動作の実行から前記第1の時間が経過した場合、前記第1の書き込み動作を実行せず、前記第1の記憶領域を、前記複数のゾーンの各々に書き込むべきライトデータを一時的に格納可能な不揮発性バッファとして割り当てる。前記コントローラは、前記第1のゾーンまたは他の一つのゾーンの状態を書き込みが中断された状態に遷移させるための第1の要求を前記ホストから受信した場合、前記第1のゾーンまたは他の一つのゾーンを指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、前記内部バッファに未転送の残りのライトデータを前記ホストのライトバッファから取得し、前記取得した残りのライトデータを前記不揮発性バッファとして割り当てられた前記第1の記憶領域の前記未書き込み領域に書き込む。
実施形態に係るメモリシステムとホストとの関係を示すブロック図。 実施形態に係るメモリシステムの構成例を示すブロック図。 ユーザデータ記憶領域として使用される複数のクワドレベルセルブロック(QLCブロック)と、複数のQLCブロックによって共有される共有QLCバッファとの関係を示すブロック図。 第1のゾーンに割り当てられた第1のQLCブロックを制御するためにそれぞれ使用される第1のモードおよび第2のモードを説明するための図。 共有QLCバッファおよびホストのライトバッファから第2のQLCブロックに、第1のゾーンに対応するライトデータをコピーする動作を示す図。 実施形態に係るメモリシステムにおいて使用される、複数のチャンネルと複数のNAND型フラッシュメモリダイとの関係を示すブロック図。 実施形態に係るメモリシステムにおいて使用される、あるブロックグループ(スーパーブロック)の構成例を示す図。 QLCブロックに一つのメモリセル当たりに4ビットを書き込むモードでデータを書き込む動作を説明するための図。 実施形態に係るメモリシステムにおいて実行される、ゾーンと共有QLCバッファを制御する動作を説明するための図。 実施形態に係るメモリシステムにおいて実行される書き込み動作を示すブロック図。 実施形態に係るメモリシステムにおいて実行される書き込み動作のシーケンスと読み出し動作のシーケンスの例を示すブロック図。 実施形態に係るメモリシステムにおいて実行されるゾーンオープン動作の手順を示すフローチャート。 実施形態に係るメモリシステムにおいて実行される書き込み動作の手順を示すフローチャート。 実施形態に係るメモリシステムにおいて実行されるゾーンクローズ動作の手順を示すフローチャート。 実施形態に係るメモリシステムにおいて実行されるゾーン再オープン動作の手順を示すフローチャート。 実施形態に係るメモリシステムにおいて実行されるモード切り替え動作の手順を示すフローチャート。 第2のモードにおいて実行されるゾーンクローズ動作の手順を示すフローチャート。 第2のモードにおいて実行されるコピー動作の手順を示すフローチャート。
以下、図面を参照して、実施形態を説明する。
図1は、実施形態に係るメモリシステムとホストとの関係を示すブロック図である。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NAND型フラッシュメモリを含むソリッドステートドライブ(SSD)3として実現されている。
ホスト(ホストデバイス)2は、複数のSSD3を制御するように構成されている。ホスト2は、複数のSSD3を含むストレージアレイをストレージとして使用するように構成された情報処理装置によって実現され得る。この情報処理装置はパーソナルコンピュータであってもよいし、サーバコンピュータであってもよい。
なお、SSD3は、ストレージアレイ内に設けられる複数のストレージデバイスの一つとして利用されてもよい。ストレージアレイは、サーバコンピュータのような情報処理装置にケーブルまたはネットワークを介して接続されてもよい。ストレージアレイは、このストレージアレイ内の複数のストレージ(例えば複数のSSD3)を制御するコントローラを含んでもよい。SSD3がストレージアレイに適用された場合には、このストレージアレイのコントローラが、SSD3のホストとして機能してもよい。
以下では、サーバコンピュータのような情報処理装置がホスト2として機能する場合を例示して説明する。
ホスト(サーバ)2と複数のSSD3は、インタフェース50を介して相互接続される(内部相互接続)。この相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。
ホスト2として機能するサーバコンピュータの例としては、データセンター内のサーバコンピュータ(以下、サーバと称する)が挙げられる。
ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク60を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。
ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム稼働プラットフォームを各クライアント(各エンドユーザ端末61)に提供するプラットホーム・アズ・ア・サービス(PaaS)、(2)仮想サーバのようなインフラストラクチャを各クライアント(各エンドユーザ端末61)に提供するインフラストラクチャ・アズ・ア・サービス(IaaS)、等がある。
複数の仮想マシンが、このホスト2として機能する物理サーバ上で実行されてもよい。ホスト2上で走るこれら仮想マシンの各々は、この仮想マシンに対応するクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。各仮想マシンにおいては、対応するエンドユーザ端末61によって使用される、オペレーティングシステムおよびユーザアプリケーションが実行される。各仮想マシンに対応するオペレーティングシステムは、I/Oサービスを含む。このI/Oサービスは、論理ブロックアドレス(LBA)ベースのブロックI/Oサービスであってもよいし、あるいは、キー・バリュー・ストアサービスであってもよい。
各仮想マシンに対応するオペレーティングシステムにおいては、I/Oサービスは、ユーザアプリケーションからのライト/リードに関する要求に応答して、I/Oコマンド(ライトコマンド、リードコマンド)を発行する。これらI/Oコマンドはホスト2内の一つ以上のサブミッションキューを介してSSD3に送出される。
SSD3のコントローラは、不揮発性メモリに含まれる複数の記憶領域の各々にデータを書き込むことがきる。不揮発性メモリに含まれる複数の記憶領域は、ユーザデータを格納するための複数のユーザデータ記憶領域、またはこれら複数のユーザデータ記憶領域によって共有される不揮発性バッファとして利用することができる。ここで、ユーザデータとは、ホスト2から受信したデータ(ライトデータ)を意味する。不揮発性バッファは、複数のユーザデータ記憶領域の各々に書き込むべきユーザデータを、必要に応じて一時的に格納可能な記憶領域である。
図2は、SSD3の構成例を示す。
SSD3は、コントローラ4と、不揮発性メモリ(例えば、NAND型フラッシュメモリ5)とを備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は複数のページ(ここではページP0~Py-1)を含む。ブロックBLK0~BLKx-1は、データを消去する消去動作の単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0~Py-1は、データの書き込みおよび読み出し動作の単位である。
コントローラ4は、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。
コントローラ4はNVMe仕様のZoned Namespaces(ZNS)をサポートしており、SSD3をゾーンド・デバイス(zoned device)として動作させることができる。
ゾーンド・デバイスは、SSD3をアクセスするための論理アドレス空間を分割することによって得られる複数の論理アドレス範囲を使用してアクセスされるデバイスである。SSD3をアクセスするための論理アドレス空間は、SSD3をアクセスするためにホスト2によって使用される連続する論理アドレスである。
コントローラ4は、複数のゾーンの各々に、NAND型フラッシュメモリ5内の複数の記憶領域の一つを割り当てることができる。ある一つのゾーンに割り当てられた一つの記憶領域は上述したユーザデータ記憶領域として使用され、このゾーンに割り当てられた論理アドレス範囲に含まれる連続する論理アドレスを使用してアクセスされる。論理アドレスとしては、通常、論理ブロックアドレス(LBA)が使用される。
NAND型フラッシュメモリ5は、図3に示すように、共有クワドレベルセルバッファ(共有QLCバッファ)201と、複数のクワドレベルセルブロック(QLCブロック)を含むクワドレベルセル領域(QLC領域)202とを含んでいてもよい。
QLCブロックは一つのメモリセル当たりに4ビットを記憶する書き込みモード(プログラムモードとも云う)によってデータが書き込まれるブロックである。QLC領域202内の複数のQLCブロックが、上述した複数の記憶領域として使用されてもよい。この場合、上述した複数のゾーンの各々に、これら複数のQLCブロックの一つが割り当てられる。
図3においては、N+1個のQLCブロックがN+1個のゾーン(ゾーン#0~ゾーン#N)として利用される場合が例示されている。この場合、SSD3のLBA空間はN+1個のLBA範囲に分割される。これらN+1個のLBA範囲は、ホスト2がN+1個のゾーンを選択的にアクセスするために使用される。なお、SSD3は、ホスト2がアクセス対象のゾーンを指定できるようにするために、LBA空間内の個々のゾーンの開始LBAをホスト2に通知してもよい。
基本的には、ホスト2は、一つのゾーン内の書き込みをシーケンシャルに実行することが要求される。このため、N+1個のゾーンの各々について、ホスト2は、ゾーン内の次の書き込み位置を示すライトポインタ(WP)を管理する。あるゾーン内の書き込みの開始時においては、ライトポインタ(WP)はこのゾーンの開始LBAを次の書き込み位置として示す。このゾーンにデータを書き込むためのライトコマンド(ライト要求)が発行されるに連れて、ライトポインタ(WP)の値が進められる。
各QLCブロックにデータを書き込む動作においては、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットのデータを書き込むことができる。
共有QLCバッファ201も幾つかの複数のQLCブロックを含んでもよい。共有QLCバッファ201は上述した不揮発性バッファの一例であり、各ゾーンに書き込むべきユーザデータを必要に応じて不揮発に記憶するために利用される。本実施形態においては、QLC領域202内の複数のQLCブロックのうちの一つ以上のQLCブロックが共有QLCバッファ201として割り当てられる。共有QLCバッファ201として割り当てられた各QLCブロックにユーザデータを書き込む動作においても、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットのデータを書き込むことができる。
共有QLCバッファ201およびQLC領域202のどちらにおいても、各QLCブロックに適用される書き込みモードとして、フォギー・ファイン書き込み動作が使用されてもよい。フォギー・ファイン書き込み動作は、ブロックに含まれる複数のページ内の一つのページに書き込まれたデータの読み出しが、この一つのページに後続する1以上のページへのデータの書き込み後に可能となる書き込みモードの一例である。
フォギー・ファイン書き込み動作は、同じワード線に接続されたメモリセル群に対する複数回の書き込み動作(フォギー書き込み動作、ファイン書き込み動作)によって実行される。1回目の書き込み動作(フォギー書き込み動作)は各メモリセルの閾値電圧を粗く設定する書き込み動作であり、2回目の書き込み動作(ファイン書き込み動作)は各メモリセルの閾値電圧を調整する書き込み動作である。
SSD3がサーバコンピュータのストレージデバイスとして使用されるケースにおいては、例えば、複数種のデータが異なるゾーンにそれぞれ書き込まれるように、例えば、複数のアプリケーション(または複数のクライアント)にそれぞれ対応する複数のゾーンが同時的に使用されるケースがある。この場合、ゾーンに対する書き込みの開始からこのゾーン全体がデータで満たされたフル状態になるまでの時間は、ゾーン毎に異なる場合がある。
一般に、NAND型フラッシュメモリのような不揮発性メモリにおいては、あるブロックに対する消去動作が実行されてからある制限時間内に(書き込み制限時間としても参照される)、このブロック内の全ページの書き込みを終了することが必要とされる。
したがって、あるゾーンに対する書き込みの開始からこのゾーンがフル状態になるまでに要する時間があまりに長いと、このゾーンとして使用されるNAND型フラッシュメモリ5のブロック(ここではQLCブロック)の信頼性が保証できなくなるか、あるいはこのQLCブロックへの書き込みが正常に実行することができなくなる場合がある。
しかしながら、上述したように異なるゾーンを異なるアプリケーション(または異なるクライアント)による書き込みに使用するケースにおいては、あるアプリケーション(またはあるクライアント)からのデータ書き込みの頻度が低い、または、あるアプリケーション(またはあるクライアント)からのデータ書き込み量が少ないと、このアプリケーションによって使用されているゾーンに対する書き込みの速度が遅くなる場合がある。
この場合、このゾーンに割り当てられているQLCブロックの未書き込み領域全体にダミーデータを書き込むことによって、このQLCブロックを強制的にフル状態にしてもよい。しかし、このようにすると、ユーザデータ以外のデータの書き込み量が増加し、この結果、ライトアンプリフィケーションの増加、およびNAND型フラッシュメモリ5の記憶領域の利用効率の低下が引き起こされる可能性がある。
また、どのゾーンに対する書き込みの速度が遅いかを、ホスト2側で予め推定できない場合もある。
そこで、本実施形態では、コントローラ4は、あるゾーンとして割り当てられたQLCブロックに対する消去動作が実行されてから第1の時間が経過するまでの間は、このQLCブロックにこのゾーンに対応するライトデータのみを書き込み可能な第1のモードで、このQLCブロックへの書き込みを制御する。
そして、コントローラ4は、このQLCブロックに第1サイズ以上の未書き込み領域が残っている状態で、消去動作の実行から第1の時間が経過した場合、このQLCブロックを制御するためのモードを、第1のモードから、このQLCブロックに全てのゾーンの各々に対応するライトデータを書き込み可能な第2のモードに切り替える。
図4は、ゾーン#1に割り当てられたQLCブロック#1を制御するためにそれぞれ使用される上述の第1のモードおよび第2のモードを説明するための図である。
コントローラ4は、ゾーン#1に割り当てられたQLCブロック#1に対する消去動作を実行し、これによってゾーン#1をデータの書き込みが可能な状態(オープン状態)にする。QLCブロック#1に対する消去動作が実行されてから第1の時間が経過するまでの間は、コントローラ4は、第1のモードでこのQLCブロック#1への書き込みを制御する。
第1のモードでは、コントローラ4がゾーン#1を指定する一つ以上のライトコマンド(ライト要求)をホスト2から受信した場合、コントローラ4は、受信した一つ以上のライト要求の集合に関連付けられたライトデータを、ゾーン#1に割り当てられたQLCブロック#1に書き込む。
より詳しくは、コントローラ4は、受信した一つ以上のライト要求の集合に関連付けられたライトデータをホスト2のライトバッファからコントローラ4内の内部バッファに転送する動作と、内部バッファに転送されたライトデータをQLCブロック#1に書き込む動作とを実行する。
したがって、ホスト2がゾーン#1を指定するライト要求それぞれをSSD3に送信することにより、これらライト要求それぞれに関連付けられたライトデータがQLCブロック#1に書き込まれる。これにより、時間が経過するに連れて、QLCブロック#1に格納されているライトデータの量は増加する。
QLCブロック#1の消去動作の実行から第1の時間が経過した時点で、コントローラ4は、ホスト2によるゾーン#1に対する書き込みの速度をチェックする。QLCブロック#1に第1サイズ以上の未書き込み領域が残っていない場合には、コントローラ4は、QLCブロック#1の消去動作の実行から書き込み制限時間(第2の時間)内にゾーン#1がフル状態になる可能性が高いと判断する。この場合、コントローラ4は、第1のモードを維持し、第1のモードでこのQLCブロック#1への書き込みを制御する動作を継続する。
一方、ホスト2によるゾーン#1に対する書き込みの速度が遅く、これによってQLCブロック#1に第1サイズ以上の未書き込み領域が残っている場合には、コントローラ4は、たとえQLCブロック#1の消去動作の実行から書き込み制限時間(第2の時間)が経過しても、QLCブロック#1がフル状態にならない可能性が高いと推定する。そして、コントローラ4は、図4に示すように、QLCブロック#1を制御するためのモードを上述の第2のモードに切り替える。
この場合、コントローラ4は、ゾーン#1を指定する各ライトコマンド(ライト要求)に関連付けられたライトデータをQLCブロック#1に書き込むという第1モードの書き込み動作を実行せず、代わりに、QLCブロック#1を上述の共有QLCバッファ201として割り当てる。換言すれば、コントローラ4は、QLCブロック#1をゾーン#1専用の記憶領域ではなく、全てのゾーンに共通の記憶領域である共有QLCバッファ201として使用し始める。
あるオープン状態のゾーンに対するデータの書き込みをしばらくの間実行しない場合、ホスト2は、このゾーン用に使用されているホスト2のライトバッファ内の領域を解放できるようにするために、このゾーンの状態を、書き込みが可能な状態(オープン状態)から書き込みが中断された状態(クローズ状態)に遷移させるためのクローズ要求をSSD3に送信する。ホスト2のライトバッファ内のある領域が解放されると、この領域は他のゾーンに対するライトデータの格納のために使用可能となる。したがって、多数のゾーンがオープンされている環境においては、ホスト2は、様々なゾーンを指定するクローズ要求それぞれを比較的頻繁にSSD3に送信する場合がある。
ゾーン#1または他の一つのゾーンの状態をクローズ状態に遷移させるためのクローズ要求をホストから受信した場合、コントローラ4は、ゾーン#1または他の一つのゾーンを指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、コントローラ4内の内部バッファに未転送の残りのライトデータをホスト2のライトバッファから取得する動作と、取得した残りのライトデータを共有QLCバッファ201として割り当てられたQLCブロック#1の未書き込み領域に書き込む動作とを実行する。
ここで、残りのライトデータは、NAND型フラッシュメモリ5に未書き込みのライトデータである。このライトデータを共有QLCバッファ201に書き込むことにより、このライトデータを不揮発に記憶することが可能となる。よって、このライトデータが格納されているホスト2のライトバッファ内の領域を解放することが可能となる。
図4に示されているように、例えば、コントローラ4が、ゾーン#2を指定するクローズ要求をホスト2から受信した場合は、コントローラ4は、ゾーン#2に対応する未書き込みのライトデータ(つまり、ゾーン#2を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、コントローラ4内の内部バッファに未転送の残りのライトデータ)をホスト2のライトバッファから取得し、取得したライトデータを共有QLCバッファ201として割り当てられたQLCブロック#1の未書き込み領域に書き込む。
また、例えば、コントローラ4が、ゾーン#10を指定するクローズ要求をホスト2から受信した場合は、コントローラ4は、ゾーン#10に対応する未書き込みのライトデータ(つまり、ゾーン#10を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、コントローラ4内の内部バッファに未転送の残りのライトデータ)をホスト2のライトバッファから取得し、取得したライトデータを、共有QLCバッファ201として割り当てられたQLCブロック#1の未書き込み領域に書き込む。
このように、QLCブロック#1を共有QLCバッファ201として割り当てることにより、QLCブロック#1を第1のモードで使用し続けた場合に比し、QLCブロック#1がフル状態になるまでに要する時間を短くすることができる。
なお、ホスト2が発行するクローズ要求の数が少なく、QLCブロック#1の消去動作の実行から第1の時間よりも長い書き込み制限時間(第2の時間)が経過しても、QLCブロック#1がフル状態にならなかった場合には、コントローラ4は、QLCブロック#1の未書き込み領域にコントローラ4によって生成されるダミーデータを書き込むことによって、QLCブロック#1をフル状態に設定すればよい。
共有QLCバッファ201に格納されているゾーン#1に対応するライトデータのデータサイズが1ゾーン分の容量に達した場合、または共有QLCバッファ201に格納されているゾーン#1に対応するライトデータのデータサイズとホスト2のライトバッファに格納されているゾーン#1に対応する後続のライトデータのデータサイズとの合計が1ゾーン分の容量に達した場合、コントローラ4は、共有QLCバッファ201に格納されているゾーン#1に対応するライトデータ、または共有QLCバッファ201に格納されているゾーン#1に対応するライトデータとホスト2のライトバッファに格納されているゾーン#1に対応する後続のライトデータの双方を、共有QLCバッファ201から、または共有QLCバッファ201とホスト2のライトバッファの双方から、ゾーン#1に新たに割り当てられたQLCブロックにコピーする。これにより、ゾーン#1に新たに割り当てられたQLCブロックを即座にフル状態にすることができる。
共有QLCバッファ201に格納されているゾーン#1に対応するライトデータは、第1のモードの書き込み動作によってQLCブロック#1に書き込まれたライトデータと、ゾーン#1を指定する一つ以上のクローズ要求によって共有QLCバッファ201に書き込まれたライトデータとを含む。ホスト2のライトバッファに格納されているゾーン#1に対応する後続のライトデータは、ゾーン#1を指定する後続の一つ以上のライト要求に関連付けられたライトデータである。
例えば、図5では、共有QLCバッファ201に格納されているゾーン#1に対応するライトデータのデータサイズと、ホスト2のライトバッファ51に格納されているゾーン#1に対応する後続のライトデータのデータサイズとの合計が、1ゾーン分の容量に達した場合が想定されている。
QLCブロック#50は、共有QLCバッファ201として割り当てられたQLCブロック#1全体がデータで満たされた後、共有QLCバッファ201として新たに割り当てられた別のQLCブロックである。QLCブロック#50に格納されているゾーン#1に対応するライトデータは、ゾーン#1を指定するクローズ要求によってQLCブロック#50に書き込まれたライトデータである。
ホスト2のライトバッファ51に格納されているゾーン#1に対応するライトデータは、ゾーン#1を指定する後続の一つ以上のライト要求に関連付けられたライトデータである。
第1のモードの書き込み動作によってQLCブロック#1に書き込まれたゾーン#1に対応するライトデータのデータサイズと、クローズ要求によってQLCブロック#50に書き込まれたゾーン#1に対応するライトデータのデータサイズと、ホスト2のライトバッファ51に格納されているゾーン#1に対応する後続のライトデータのデータサイズとの合計が1ゾーン分の容量に達した場合、第2のモードに対応する書き込み開始条件(コピー開始条件としても参照される)が満たされる。
書き込み開始条件が満たされると、コントローラ4は、ゾーン#1に新たなQLCブロック(ここではQLCブロック#100)を割り当て、QLCブロック#100に対する消去動作を実行する。そして、コントローラ4は、ゾーン#1に対応するこれらライトデータを、共有QLCバッファ201とホスト2のライトバッファ51の双方から、ゾーン#1に新たに割り当てられたQLCブロック#100にコピーする。
なお、共有QLCバッファ201に格納されているゾーン#1に対応するライトデータのみによって第2のモードに対応する書き込み開始条件が満たされる場合もある。この場合には、コントローラ4は、ゾーン#1に対応するライトデータを共有QLCバッファ201からQLCブロック#100にコピーする。
このように、本実施形態では、QLCブロック#1に第1サイズ以上の未書き込み領域が残っている状態で、QLCブロック#1の消去動作の実行から第1の時間が経過した場合、QLCブロック#1は全てのゾーンに対するライトデータの書き込みが可能な共有QLCバッファ201として割り当てられる。このため、たとえホスト2によるゾーン#1に対する書き込みの速度が遅い場合であっても、他の様々なゾーンに対応するライトデータを用いてQLCブロック#1を書き込み制限時間以内にフル状態にすることが高い確率で可能となる。よって、QLCブロック#1をゾーン#1専用の記憶領域として使用し続ける場合に比し、QLCブロック#1がフル状態になるまでに要する時間を短くすることができる。
第1の時間の長さはSSD3側で任意に設定可能である。したがって、例えば、コントローラ4は、複数のQLCブロックそれぞれの消耗度を管理し、各QLCブロックの消耗度に基づいて、第1の時間の長さをQLCブロック毎に変更することができる。
例えば、コントローラ4は、複数のQLCブロックを、第1範囲内の消耗度を有するグループと、第1範囲よりも大きい第2範囲内の消耗度を有するグループとに分け、第1範囲内の消耗度を有するグループに属する各QLCブロックに適用すべき第1の時間を、第2範囲内の消耗度を有するグループに属する各QLCブロックに適用される第1の時間よりも長く設定してもよい。これにより、消耗度の少ない各QLCブロックについては、第1のモードで書き込みが実行される時間を長くすることができる。この結果、共有QLCバッファ201に割り当てることが必要となるQLCブロックの数を減少できるので、ユーザ領域として使用されるQLCブロックの数を増やすことができる。
なお、各QLCブロックの消耗度は、例えば、各QLCブロックのプログラム/イレーズサイクルの数、各QLCブロックのビット誤り率、または各QLCブロックのプログラム/イレーズエラーの数に基づいて決定されてよいし、またはこれらプログラム/イレーズサイクルの数、ビット誤り率、プログラム/イレーズエラーの数のうちの任意の組み合わせに基づいて決定されてよい。
次に、NAND型フラッシュメモリ5の構成列について説明する。NAND型フラッシュメモリ5は、図6に示すように、複数のNAND型フラッシュメモリダイ(NAND型フラッシュメモリダイ)を含んでいてもよい。個々のNAND型フラッシュメモリダイは独立して動作可能である。このため、NAND型フラッシュメモリダイは、並列動作可能な単位として機能する。図6においては、NANDインタフェース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として構成されてもよい。バンクは、複数のメモリダイをバンクインタリーブによって並列動作させるための単位として機能する。図6の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリダイを並列動作させることができる。
消去動作は、一つのブロック(物理ブロック)の単位で実行されてもよいし、並列動作可能な複数の物理ブロックの集合を含むブロックグループの単位で実行されてもよい。ブロックグループはスーパーブロックとしても参照される。
一つのブロックグループ、つまり複数の物理ブロックの集合を含む一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリダイ#1~#32から一つずつ選択される計32個の物理ブロックを含んでいてもよい。なお、NAND型フラッシュメモリダイ#1~#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#1~#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリダイ#1~#32に対応する64個のプレーンから一つずつ選択される計64個の物理ブロックを含んでいてもよい。
図7には、32個の物理ブロック(ここでは、NAND型フラッシュメモリダイ#1内の物理ブロックBLK2、NAND型フラッシュメモリダイ#2内の物理ブロックBLK3、NAND型フラッシュメモリダイ#3内の物理ブロックBLK7、NAND型フラッシュメモリダイ#4内の物理ブロックBLK4、NAND型フラッシュメモリダイ#5内の物理ブロックBLK6、…、NAND型フラッシュメモリダイ#32内の物理ブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。
図3で説明したQLC領域202内の各QLCブロックは、一つのスーパーブロック(QLCスーパーブロック)によって実現されてもよいし、一つの物理ブロック(QLC物理ブロック)によって実現されてもよい。なお、一つのスーパーブロックが一つの物理ブロックのみを含む構成が利用されてもよく、この場合には、一つのスーパーブロックは一つの物理ブロックと等価である。
次に、図2のコントローラ4の構成について説明する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、等が含まれる。論理アドレスは、SSD3の論理アドレス空間内の論理アドレスをアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、LBA(logical block address)が使用され得る。
SSD3をアクセスするためにホスト2によって使用される論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル:L2Pテーブル)31を用いて実行される。コントローラ4は、L2Pテーブル31を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理してもよい。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。L2Pテーブル31は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
なお、本実施形態では、各ゾーン内の書き込みはシーケンシャルに実行されるので、コントローラ4は、L2Pテーブル31を使用して、各ゾーンの開始LBAと各ゾーンに割り当てられたQLCブロックを識別するための識別子(例えばブロックアドレス)との間の対応関係のみを管理してもよい。
ブロック管理には、バッドブロック(不良ブロック)の管理と、ウェアレベリングと、ガベージコレクション(GC)等が含まれる。ウェアレベリングは、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
GCは、フリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。GCにおいては、コントローラ4は、有効データと無効データとが混在する幾つかのブロック内の有効データを別のブロック(例えばフリーブロック)にコピーする。ここで、有効データとは、ある論理アドレスに関連付けられているデータを意味する。例えば、L2Pテーブル31から参照されているデータ(すなわち最新のデータとして論理アドレスに関連付けられているデータ)は有効データであり、後にホスト2からリードされる可能性がある。無効データとは、どの論理アドレスにも関連付けられていないデータを意味する。どの論理アドレスにも関連付けられていないデータは、もはやホスト2からリードされる可能性が無いデータである。そして、コントローラ4は、L2Pテーブル31を更新して、コピーされた有効データの論理アドレスそれぞれをコピー先の物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックは、このブロックに対する消去動作が実行された後にデータの書き込みに再利用することが可能となる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、直接メモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16、ECCエンコード/デコード部17、等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、DMAC15、SRAM16、ECCエンコード/デコード部17は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってもよい。あるいは、SSD3がEthernet(登録商標)を介してホスト2に接続される構成においては、ホストインタフェース11は、NVMe over Fabrics(NVMeOF)コントローラであってもよい。
ホストインタフェース11は、ホスト2から様々なコマンドを受信する。これらコマンドには、ライトコマンド、リードコマンド、オープンゾーンコマンド、クローズゾーンコマンド、リセットゾーンコマンド、等が含まれる。
ライトコマンドは書き込むべきデータ(ライトデータ)をNAND型フラッシュメモリ5に書き込むコマンド(ライト要求)である。ライトコマンドは、例えば、ライトデータが書き込まれるべき最初のセクタを示す論理アドレス(開始LBA)、このライトデータのデータサイズ、このライトデータが格納されているホスト2のメモリ(ライトバッファ)内の位置を示すデータポインタ(バッファアドレス)、等を含む。ホスト2のメモリは以下では単にホストメモリとも称する。
ライトコマンドに含まれる論理アドレス(開始LBA)の上位ビット部は、このライトコマンドに関連付けられたライトデータが書き込まれるべきゾーンを指定する識別子として使用される。また、ライトコマンドに含まれる論理アドレス(開始LBA)の下位ビット部は、ライトデータが書き込まれるべきゾーン内のオフセットを指定する。
したがって、ライトコマンドによって指定される論理アドレスは、複数のゾーンのうちの一つのゾーンと、ライトデータが書き込まれるべきこのゾーン内のオフセットとを示す。
ライトデータのデータサイズは、例えば、セクタ(論理ブロック)の数によって指定されもよい。一つのセクタは、ホスト2によって指定可能なライトデータの最小データサイズに対応する。つまり、ライトデータのデータサイズはセクタの倍数によって表される。
リードコマンドはNAND型フラッシュメモリ5からデータを読み出すコマンド(リード要求)である。リードコマンドは、データ(読み出し対象データ)が読み出されるべき最初のセクタを示す論理アドレス(開始LBA)、読み出し対象データのデータサイズ、この読み出し対象データが転送されるべきホストメモリ(リードバッファ)内の位置を示すデータポインタ(バッファアドレス)、等を含む。
リードコマンドに含まれる論理アドレスの上位ビット部は、読み出し対象データが格納されているゾーンを指定する識別子として使用される。また、リードコマンドに含まれる論理アドレスの下位ビット部は、読み出し対象データが格納されているゾーン内のオフセットを指定する。したがって、リードコマンドによって指定される論理アドレスは、ゾーンと、読み出し対象データが格納されているこのゾーン内のオフセットとを示す。
オープンゾーンコマンドは、各々がエンプティ状態の複数のゾーンの一つを、データの書き込みに利用可能なオープン状態に遷移させるためのコマンド(オープン要求)である。オープンゾーンコマンドは、オープン状態に遷移させるべきゾーンを指定する論理アドレスを含む。例えば、オープンゾーンコマンドによって指定される論理アドレスの上位ビット部が、オープン状態に遷移させるべきゾーンを指定する識別子として使用される。
クローズゾーンコマンドは、オープン状態のゾーンの一つを、書き込みが中断されたクローズ状態に遷移させるためのコマンド(クローズ要求)である。クローズゾーンコマンドは、クローズ状態に遷移させるべきゾーンを指定する論理アドレスを含む。例えば、クローズゾーンコマンドによって指定される論理アドレスの上位ビット部が、クローズ状態に遷移させるべきゾーンを指定する識別子として使用される。
リセットゾーンコマンドは、書き換えが実行されるべきゾーンをリセットしてエンプティ状態に遷移させるためのコマンド(リセット要求)である。例えば、リセットゾーンコマンドは、データで満たされているフル状態のゾーンを、有効データを含まないエンプティ状態に遷移させるために使用される。有効データは、論理アドレスに関連付けられているデータを意味する。リセットゾーンコマンドは、エンプティ状態に遷移させるべきゾーンを指定する論理アドレスを含む。例えば、リセットゾーンコマンドによって指定される論理アドレスの上位ビット部が、エンプティ状態に遷移させるべきゾーンを指定する識別子として使用される。リセットゾーンコマンドによってエンプティ状態に遷移されたゾーンに対応するライトポインタの値は、このゾーンの開始LBAを示す値に設定される。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、DMAC15、SRAM16、ECCエンコード/デコード部17を制御するように構成されたプロセッサである。CPU12は、SSD3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはSRAM16上にロードされてもよい。CPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、フラッシュマネジメント部21およびディスパッチャ22として機能することができる。なお、これらフラッシュマネジメント部21およびディスパッチャ22の各々の一部または全部も、コントローラ4内の専用ハードウェアによって実現されてもよい。
フラッシュマネジメント部21は、複数のゾーンとQLC領域202に含まれる複数のQLCブロックとの間のマッピングを管理し、各ゾーンに対してQLC領域202内のいずれか一つのQLCブロックを割り当てる。一つのQLCブロックは、一つの物理ブロックであってもよいし、複数の物理ブロックを含む一つのスーパーブロックであってもよい。
フラッシュマネジメント部21は、データが書き込まれるべきゾーンを各々が指定する一つ以上のライト要求それぞれをホスト2から受信する。
例えば、第1のゾーン#1を指定するオープン要求をホスト2から受信したことに応じて、フラッシュマネジメント部21は、第1のゾーン#1に割り当てられているQLCブロック#1に対する消去動作を実行する。この場合、フラッシュマネジメント部21は、QLCブロック#1の消去動作が実行された時刻(例えば年月日時分秒)を示す消去タイムスタンプを消去タイムスタンプ管理テーブル32に格納する。
また、例えば、第2のゾーン#2を指定するオープン要求をホスト2から受信したことに応じて、フラッシュマネジメント部21は、第2のゾーン#2に割り当てられているQLCブロック#2に対する消去動作を実行する。フラッシュマネジメント部21は、QLCブロック#2の消去動作が実行された時刻を示す消去タイムスタンプを消去タイムスタンプ管理テーブル32に格納する。
そして、第1のゾーン#1を指定する一つ以上のライト要求それぞれをホスト2から受信したことに応じて、フラッシュマネジメント部21は、受信したライト要求の集合に関連付けられているライトデータをホスト2のライトバッファ51からコントローラ4の内部バッファ161に転送する。SRAM16の記憶領域の一部が内部バッファ161として使用されてもよいし、DRAM6の記憶領域の一部が内部バッファ161として使用されてもよい。
そして、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、第1のゾーン#1に割り当てられているQLCブロック#1に書き込む。例えば、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、メモリセル当たりに4ビットのデータを書き込むフォギー・ファイン書き込み動作で、QLCブロック#1に書き込む。
また、第2のゾーン#2を指定する一つ以上のライト要求それぞれをホスト2から受信したことに応じて、フラッシュマネジメント部21は、受信したライト要求の集合に関連付けられているライトデータをホスト2のライトバッファ51からコントローラ4の内部バッファ161に転送する。
そして、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、第2のゾーン#2に割り当てられているQLCブロック#2に書き込む。例えば、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、メモリセル当たりに4ビットのデータを書き込むフォギー・ファイン書き込み動作で、QLCブロック#2に書き込む。
さらに、フラッシュマネジメント部21は、個々のゾーンに対応するQLCブロックに対する書き込みを制御するためのモードを、上述の第1のモードと第2のモードとの間で切り替える処理を実行する。
例えば、QLCブロック#1に対するモードが第1のモードから第2のモードに切り替えられた場合を想定する。
クローズ要求(ゾーンクローズコマンド)をホスト2から受信する度、フラッシュマネジメント部21は、以下の処理を実行する。
フラッシュマネジメント部21は、クローズ要求によって指定されたクローズ対象ゾーンを指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、内部バッファ161に未転送の残りのライトデータをホスト2のライトバッファ51から取得する。フラッシュマネジメント部21は、取得された残りのライトデータを、クローズ要求によって指定されたクローズ対象ゾーンに対応するQLCブロックではなく、共有QLCバッファ201に書き込む。QLCブロック#1を制御するモードが第2のモードに遷移した場合には、QLCブロック#1が共有QLCバッファ201として使用される。したがって、クローズ対象ゾーンに対応する残りのライトデータはQLCブロック#1に書き込まれる。そして、フラッシュマネジメント部21は、クローズ対象ゾーンの状態を、オープン状態から、書き込みが中断されたクローズ状態に遷移させる。
もしクローズ要求の受信の度に、残りのライトデータをクローズ要求によって指定されたクローズ対象ゾーンに対応するQLCブロックに書き込む処理が実行されたならば、クローズ状態に遷移されるべき個々のゾーンへの書き込みが完了できない多くのライトデータによって、ホスト2のライトバッファ51が専有されてしまう場合がある。
すなわち、もしクローズ対象ゾーンに対応するQLCブロックに残りのライトデータを書き込む処理が実行されたならば、このQLCブロックに最後に書き込まれる複数ページ分のデータの書き込みが完了できなくなる場合がある。例えば、メモリセル当たりに4ビットのデータを書き込むフォギー・ファイン書き込み動作でクローズ対象ゾーンに対応するQLCブロックに残りのライトデータが書き込まれたならば、このQLCブロックに最後に書き込まれた4ページ分のデータの書き込みが完了できなくなる。なぜなら、クローズ要求はあるゾーンをクローズ状態に遷移させる要求であるので、クローズ要求の送信後しばらくの間は、ホスト2はこのゾーンに対するライト要求をSSD3に発行しない場合があるからである。この結果、このゾーンに対応するQLCブロックに最後に書き込まれた4ページ分のデータに対するファイン書き込み動作が開始できないので、この4ページ分のデータは、比較的長い間、このQLCブロックから読み出し可能にならない。この結果、この4ページ分のデータが格納されているホスト2のライトバッファ51内の領域を長い間解放することができなくなる。
ページサイズが16KBである場合には、64KB(=4×16KB)のサイズのデータの書き込みが完了できなくなる。各NAND型フラッシュメモリダイが2プレーン構成を有するならば、128KB(=2×4×16KB)のサイズのデータの書き込みが完了できなくなる。
よって、もしクローズ要求の受信の度に、残りのデータをクローズ要求によって指定されたクローズ対象ゾーンに対応するQLCブロックに書き込む処理が実行されたならば、書き込みが完了できない大量のデータをホスト2のライトバッファ51に維持することが必要とされる。例えば、合計1024個のゾーンがクローズ状態に遷移されるケースにおいては、128MB(=1024×128KB)のサイズを有するデータによってホスト2のライトバッファ51が専有されてしまう。
本実施形態では、フラッシュマネジメント部21は、残りのライトデータを、クローズされるべき個々のゾーンに対応するQLCブロックではなく、複数のゾーンによって共有される共有QLCバッファ201に書き込む。したがって、どのゾーンがクローズされる場合であっても、クローズされるべき個々のゾーンに対応する残りのライトデータは、共有QLCバッファ201に書き込まれる。よって、クローズ要求の受信の度に残りのライトデータをクローズ要求によって指定されたクローズ対象ゾーンに対応するQLCブロックに書き込むという構成に比し、書き込みが完了できないライトデータの量を低減でき、ホスト2のライトバッファ内の解放可能な領域を増やすことができる。
共有QLCバッファ201も幾つかのQLCブロックから構成されるので、共有QLCバッファ201最後に書き込まれた128KBのサイズのデータは、後続の128KBのサイズのデータの書き込みの後に読み出し可能となる。
しかしながら、クローズ対象のゾーンに対応するQLCブロックとは異なり、共有QLCバッファ201内の書き込みは中断されない。つまり、クローズ要求の受信の度に共有QLCバッファ201内の書き込みが実行される。したがって、たとえ合計1024個のゾーンがクローズ状態に遷移される場合であっても、これら1024個のゾーンに書き込まれるべきライトデータのうち、共有QLCバッファ201から読み出し可能ではないデータのサイズを最大128KBまでに抑えることができる。よって、残りのライトデータをクローズされるべき個々のゾーンに書き込むケースに比べ、ホスト2のライトバッファ51に維持することが必要なライトデータの量を大幅に削減するこができる。
さらに、本実施形態では、ホスト2による書き込みの速度が遅いゾーンに対応するQLCブロックが共有QLCバッファ201として使用されるので、様々なゾーンに対応する残りのライトデータがこのQLCブロックに書き込まれる。したがって、このQLCブロックがフル状態になるまでに要する時間を短くすることができる。
ディスパッチャ22は、ホスト2のサブミッションキューからコマンドそれぞれを取得する。コントローラ4においては、オープンされている複数のゾーンにそれぞれに対応する複数のコマンドキューが管理されている。ディスパッチャ22は、これら取得したコマンドをライトコマンド(ライト要求)群とライトコマンド以外の他のコマンド群とに分類する。
さらに、ディスパッチャ22は、ライト要求を複数のゾーンにそれぞれ対応する複数のグループに分類する。そして、ディスパッチャ22は、各グループに属するライト要求群を、このグループに対応するコマンドキューに格納する。
例えば、ディスパッチャ22は、ゾーン#1を指定する各ライト要求をゾーン#1に対応するコマンドキューに格納し、ゾーン#2を指定する各ライト要求をゾーン#2に対応するコマンドキューに格納する。
フラッシュマネジメント部21は、ゾーン#1を指定するライト要求の集合に関連付けられたライトデータの総サイズが各ゾーン(各QLCブロック)の最小書き込みサイズ(例えば64KB)に達した場合、最小書き込みサイズを有する、これらライト要求の集合に関連付けられたライトデータを、ホスト2のライトバッファ51から内部バッファ161に転送する。なお、各NAND型フラッシュメモリダイが2プレーンを含む場合には、最小書き込みサイズは128KBに設定されてもよい。
また、フラッシュマネジメント部21は、ゾーン#2を指定するライト要求の集合に関連付けられたライトデータの総サイズが各ゾーン(各QLCブロック)の最小書き込みサイズに達した場合、最小書き込みサイズを有する、これらライト要求の集合に関連付けられたライトデータを、ホスト2のライトバッファ51から内部バッファ161に転送する。
このように、ライトデータを、最小書き込みサイズの単位でホスト2のライトバッファ51から内部バッファ161に転送することにより、NAND型フラッシュメモリ5に書き込むことが出来ない最小書き込みサイズ未満の多数のライトデータによって内部バッファ161が専有されてしまうことを抑制することが可能となり、これによって確保することが必要とされる内部バッファ161の容量を削減することが可能となる。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、L2Pテーブル31、消去タイムスタンプ管理テーブル32,およびブロック管理テーブル33を格納するための記憶領域として利用されてもよい。ブロック管理テーブル33は複数のQLCブロックそれぞれに対応する管理情報の格納に使用される。
DMAC15は、CPU12の制御の下、ホスト2のライトバッファ51と内部バッファ161との間のデータ転送を実行する。ホスト2のライトバッファ51から内部バッファ161にライトデータを転送すべき場合には、CPU12は、ホスト2のライトバッファ51内の位置を示す転送元アドレス、転送すべきライトデータのサイズ、内部バッファ161内の位置を示す転送先アドレスをDMAC15に対して指定する。
ECCエンコード/デコード部17は、NAND型フラッシュメモリ5にデータをライトすべき時、データ(書き込むべきデータ)をエンコード(ECCエンコード)することによってこのデータにエラー訂正コード(ECC)を冗長コードとして付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部17は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行う(ECCデコード)。
図8は、QLCブロックに一つのメモリセル当たりに4ビットを書き込むモードでデータを書き込む動作を説明するための図である。
ここでは、4つのワード線を往復する場合のフォギー・ファイン書き込み動作を例示する。QLCブロック#1に対するフォギー・ファイン書き込み動作は以下のように実行される。
(1)まず、4ページ(P0~P3)分のライトデータがページ単位でNAND型フラッシュメモリ5に転送され、QLCブロック#1内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0~P3)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(2)次いで、次の4ページ(P4~P7)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、QLCブロック#1内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4~P7)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(3)次いで、次の4ページ(P8~P11)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、QLCブロック#1内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8~P11)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(4)次いで、次の4ページ(P12~P15)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、QLCブロック#1内のワード線WL3に接続された複数のメモリセルに、これら4ページ(P12~P15)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(5)ワード線WL3に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL0に戻り、ワード線WL0に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL0に対するフォギー書き込み動作で使用された4ページ(P0~P3)分のライトデータと同じ4ページ(P0~P3)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、QLCブロック#1内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0~P3)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP0~P3に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP0~P3に対応するデータをQLCブロック#1から正しく読み出すことが可能となる。
(6)次いで、次の4ページ(P16~P19)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、QLCブロック#1内のワード線WL4に接続された複数のメモリセルに、これら4ページ(P16~P19)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(7)ワード線WL4に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL1に戻り、ワード線WL1に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL1に対するフォギー書き込み動作で使用された4ページ(P4~P7)分のライトデータと同じ4ページ(P4~P7)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、QLCブロック#1内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4~P7)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP4~P7に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP4~P7に対応するデータをQLCブロック#1から正しく読み出すことが可能となる。
(8)次いで、次の4ページ(P20~P23)分のライトデータがこのNAND型フラッシュメモリ5にページ単位で転送され、QLCブロック#1内のワード線WL5に接続された複数のメモリセルに、これら4ページ(P20~P23)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(9)ワード線WL5に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL2に戻り、ワード線WL2に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL2に対するフォギー書き込み動作で使用された4ページ(P8~P11)分のライトデータと同じ4ページ(P8~P11)分のライトデータがページ単位でNAND型フラッシュメモリ5に再び転送され、QLCブロック#1内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8~P11)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP8~P11に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP8~P11に対応するデータをQLCブロック#1から正しく読み出すことが可能となる。
図9は、SSD3において実行される、ゾーンと共有QLCバッファ201を制御する動作を説明するための図である。
SSD3においては、コントローラ4は、ゾーン#1(またはゾーン#2)をクローズ状態に遷移させるためのクローズ要求をホスト2から受信するまでは、ホスト2のライトバッファ51から受信される全てのライトデータを、内部バッファ161を介してQLCブロック#1(またはQLCブロック#2)にのみ書き込み、共有QLCバッファ201には書き込まない。
QLCブロック#1およびQLCブロック#2の各々に対するデータの書き込みがフォギー・ファイン書き込み動作によって実行されるケースにおいては、コントローラ4は、あるワード線に接続された複数のメモリセルにライトデータを書き込むための2回の書き込み動作(フォギー書き込み動作およびファイン書き込み動作)の双方が終了した場合、このライトデータに対応する各ライト要求の完了(Completion)を示す通知をホスト2に送信する。つまり、QLCブロック#1(またはQLCブロック#2)に書き込まれたデータがQLCブロック#1(またはQLCブロック#2)から読み出し可能になると、コントローラ4は、このデータに対応するライト要求の完了(Completion)を示す通知をホスト2に送信する。
書き込みが中断されたクローズ状態にQLCブロック#1(またはQLCブロック#2)を遷移させるためのクローズ要求をホスト2から受信すると、コントローラ4は、内部バッファ161に未転送の残りのライトデータをホスト2のライトバッファ51から内部バッファ161に転送する。
例えば、ゾーン#1を指定するクローズ要求がホスト2から受信された場合、コントローラ4は、ゾーン#1を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、内部バッファ161に未転送の残りのライトデータを、ホスト2のライトバッファ51から内部バッファ161に転送する。例えば、ゾーン#1を指定する受信済みのライト要求がライト要求W1~ライト要求W5であり、内部バッファ161にライトデータが転送されていないライト要求がライト要求W4とライト要求W5である場合には、ライト要求W4に関連付けられたライトデータとライト要求W5に関連付けられたライトデータとが残りのライトデータとしてホスト2のライトバッファ51から内部バッファ161に転送される。
そして、コントローラ4は、内部バッファ161に転送された残りのライトデータを、QLCブロック#1には書き込まず、共有QLCバッファ201のみに書き込む。残りのライトデータを共有QLCバッファ201に書き込むと、コントローラ4は、ゾーン#1の状態をオープン状態からクローズ状態に遷移させる。さらに、コントローラ4は、残りのライトデータに対応するライト要求それぞれの完了を示す応答と、クローズ要求の完了を示す応答とをホスト2に送信する。
各ライト要求の完了を示す応答の受信に応じて、ホスト2は、各ライト要求に対応するライトデータが格納されているライトバッファ51内の領域を解放することが可能となり、例えば、この領域を新たにオープンされるゾーン用の領域として再利用することが可能となる。
クローズ状態であるゾーン#1にデータを再び書くためのライト要求をホスト2から受信すると、コントローラ4は、ゾーン#1(QLCブロック#1)を再びオープンする。そして、コントローラ4は、共有QLCバッファ201に格納されている上述の残りのライトデータを共有QLCバッファ201から読み出し、内部バッファ161に転送する。共有QLCバッファ201から内部バッファ161に転送された残りのライトデータは、このライトデータがQLCブロック#1に書き込み可能となったタイミングでQLCブロック#1に書き込まれる。
共有QLCバッファ201はダイナミックQLCバッファとして実現されてもよい。ダイナミックQLCバッファは、共有QLCバッファ201用の専用の幾つかのQLCブロックを使用するのではなく、ゾーンに割り当て可能なQLC領域202内のQLCブロック群から共有QLCバッファ201用のQLCブロックを動的に割り当てることによって実現される不揮発性バッファである。
上述したように、クローズ状態のゾーンが再オープンされた後、共有QLCバッファ201に格納されているデータは、この再オープンされたQLCブロックに書き込まれる。また、図5で説明したように、第2のモードに遷移されたゾーンに対応するライトデータは、共有QLCバッファ201から、このゾーンに新たに割り当てられたQLCブロックにコピーされる。したがって、再オープンされたQLCブロックにデータが書き込まれることによって(またはデータのコピーによって)無効データのみとなった共有QLCバッファ201内のQLCブロックはフリーブロックとして解放される。このフリーブロックはQLC領域202に返却される。
図10は、SSD3において実行される書き込み動作を示すブロック図である。
SSD3のコントローラ4においては、オープンされている複数のゾーンにそれぞれ対応する複数のコマンドキューが管理されている。コマンドキュー#1は、ゾーン#1を指定する一つ以上のライト要求それぞれを格納するために使用される。コマンドキュー#2は、ゾーン#2を指定する一つ以上のライト要求それぞれを格納するために使用される。コマンドキュー#3は、ゾーン#3を指定する一つ以上のライト要求それぞれを格納するために使用される。コマンドキュー#pは、ゾーン#pを指定するライト要求それぞれを格納するために使用される。
ホスト2のサブミッションキュー(SQ)に格納されているコマンド(要求)それぞれは、ディスパッチャ22によってフェッチされる。そして、ゾーン#1を指定する各ライト要求はディスパッチャ22によってコマンドキュー#1に格納され、ゾーン#2を指定する各ライト要求はディスパッチャ22によってコマンドキュー#2に格納され、ゾーン#3を指定する各ライト要求はディスパッチャ22によってコマンドキュー#3に格納され、ゾーン#pを指定する各ライト要求はディスパッチャ22によってコマンドキュー#pに格納される。
コマンドキューの各々について、格納されているライト要求の集合に関連付けられているライトデータの総サイズがフラッシュマネジメント部21によってチェックされる。そして、あるコマンドキューに格納されているライト要求の集合に関連付けられているライトデータの総サイズが閾値、例えば、各QLCブロックの最小書き込みサイズに達すると、フラッシュマネジメント部21の制御の下、最小書き込みサイズを有するライトデータが、DMAC15によってホスト2のライトバッファ51から内部バッファ161に転送される。
これにより、QLCブロックへの書き込みを開始できない、最小書き込みサイズ未満の複数のライトデータで内部バッファ161が専有されてしまうことを抑制することができるので、必要な内部バッファ161の容量を削減することが出来る。
また、ホスト2のライトバッファ51から内部バッファ161へのライトデータの転送は、ライト要求がフェッチされた順序ではなく、各ゾーンにライトデータを書き込む順序と同じ順序で実行される。例えば、ゾーン#1に割り当てられたQLCブロック#1のページ#0~ページ#3に対応する4ページ分のライトデータをホスト2のライトバッファ51から内部バッファ161に転送すべき場合、フラッシュマネジメント部21は、ページ#0~ページ#3にそれぞれ書き込まれるべき4つの16KBライトデータを、ページ#0に書き込むべき16KBライトデータ、ページ#1に書き込むべき16KBライトデータ、ページ#2に書き込むべき16KBライトデータ、ページ#3に書き込むべき16KBライトデータ、という順序で、ページ単位でホスト2のライトバッファ51から内部バッファ161に転送する。
図11は、SSD3において実行される書き込み動作のシーケンスと読み出し動作のシーケンスを示すブロック図である。
SSD3のコントローラ4は、QLC領域202に含まれる複数のQLCブロック(複数の物理ブロックまたは複数のQLCスーパーブロック)と複数のゾーンとの間のマッピングを管理するように構成されており、任意のQLCブロックを一つのゾーンとして割り当てることができる。
ある一つのゾーンに対応する一つのQLCブロックは、このゾーンに割り当てられたLBA範囲に含まれる連続する論理アドレスを使用してアクセスされる。一つのゾーン内の書き込みは、基本的には、シーケンシャルに実行される。以下では、QLCブロックが割り当てられたゾーンをQLCゾーンと称する。
個々のQLCゾーンの状態は、オープン状態(オープンゾーン)、クローズ状態(クローズゾーン)、フル状態(フルゾーン)、エンプティ状態(エンプティゾーン)に大別される。
オープン状態のQLCゾーンはデータの書き込みが可能な書き込み先ゾーンとして割り当てられているゾーンである。オープン状態のQLCゾーンに対応するQLCブロックは、書き込み先ブロックとして割り当てられる。フラッシュマネジメント部21は、オープン状態の各QLCゾーン、つまりオープン状態の各QLCゾーンに対応するQLCブロックを、オープンゾーンリスト101を使用して管理する。
クローズ状態のQLCゾーンは書き込みが中断されたゾーンである。書き込みが中断されたQLCゾーンに対応するQLCブロックは、このQLCブロックの一部分にのみデータが書き込まれているQLCブロック、つまり部分的に書き込まれたQLCブロックである。クローズ状態のQLCゾーンに対応するQLCブロックにおいては、データの書き込みに利用可能な幾つかのページが残っている。フラッシュマネジメント部21は、クローズ状態の各QLCゾーン、つまりクローズ状態の各QLCゾーンに対応するQLCブロックを、クローズゾーンリスト102を使用して管理する。
フル状態のQLCゾーンはそのQLCゾーン全体がデータで満たされているゾーンである。フル状態のQLCゾーンに対応するQLCブロックは、そのブロック内の全てのページへの書き込みが完了したブロックである。フラッシュマネジメント部21は、フル状態の各QLCゾーン、つまりフル状態の各QLCゾーンに対応するQLCブロックを、フルゾーンリスト103を使用して管理する。
エンプティ状態のQLCゾーンはリセットされたゾーンである。エンプティ状態のQLCゾーンに対応するQLCブロックは、有効データを格納していないフリーQLCブロックである。フラッシュマネジメント部21は、エンプティ状態の各QLCゾーン、つまりエンプティ状態の各QLCゾーンに対応するQLCブロックを、エンプティゾーンリスト104を使用して管理する。
ホスト2がエンプティ状態のQLCゾーンにデータを書き込むことを望む場合、ホスト2は、このエンプティ状態のQLCゾーンを示す論理アドレスを指定するオープン要求(open request)をSSD3に送信する。このオープン要求(open request)をホスト2から受信したことに応じて、フラッシュマネジメント部21は、このQLCゾーンに割り当てられているQLCブロックに対する消去動作を実行し、これによってこのQLCゾーンの状態をエンプティ状態からオープン状態に遷移させる。
ホスト2はオープン要求(open request)をSSD3に送信する処理を繰り返し実行することにより、複数のQLCゾーンをオープン状態にすることできる。
例えば、フラッシュマネジメント部21がオープン状態のQLCゾーン#1にデータを書き込むためのライト要求(write request)それぞれをホスト2から受信した場合、フラッシュマネジメント部21は、DMAC15を使用して、各QLCゾーンの最小書き込みサイズ分のライトデータをホスト2のライトバッファ51から内部バッファ161に転送する。そして、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、共有QLCバッファ201に書き込まずに、QLCゾーン#1にのみ書き込む。
また、フラッシュマネジメント部21がオープン状態のQLCゾーン#2にデータを書き込むためのライト要求(write request)それぞれをホスト2から受信した場合、フラッシュマネジメント部21は、DMAC15を使用して、各QLCゾーンの最小書き込みサイズ分のライトデータをホスト2のライトバッファ51から内部バッファ161に転送する。そして、フラッシュマネジメント部21は、内部バッファ161に転送されたライトデータを、共有QLCバッファ201に書き込まずに、QLCゾーン#2にのみ書き込む。
あるオープン状態のQLCゾーンに対するデータの書き込みをしばらくの間実行しない場合、ホスト2は、このQLCゾーン用に確保されているホスト2のライトバッファ51内の領域を解放できるようにするために、このQLCゾーンをクローズ状態に遷移させるためのクローズ要求(close request)をSSD3に送信する。
例えば、QLCゾーン#1を示す論理アドレスを指定するクローズ要求(close request)をホスト2から受信した時、QLCゾーン#1に対応する上述のコマンドキュー#1にはQLCゾーン#1(ゾーン#1)への書き込みがまだ開始できないライト要求が格納されている可能性がある。QLCゾーン#1の次の書き込み位置から書き込まれるべき4ページ分のライトデータに対応するライト要求の集合がコマンドキュー#1に蓄積されるまでは、これらライト要求それぞれに関連付けられたライトデータはホスト2のライトバッファ51から内部バッファ161に転送されない場合があるためである。
フラッシュマネジメント部21は、QLCゾーン#1を指定する受信済みの複数のライト要求に関連付けられた複数のライトデータのうち内部バッファ161に未転送の残りのライトデータを、DMAC15を使用して、ホスト2のライトバッファ51から内部バッファ161に転送する。フラッシュマネジメント部21は、内部バッファ161に転送された残りのライトデータを、QLCゾーン#1ではなく、共有QLCバッファ201に書き込む。
なお、QLCゾーン#1への書き込みが終了していないライトデータ、例えば、フォギー書き込み動作のみが終了しておりファイン書き込み動作が終了していないライトデータ、が内部バッファ161に存在する場合には、フラッシュマネジメント部21は、このライトデータも残りのライトデータと一緒に共有QLCバッファ201に書き込む。
そして、フラッシュマネジメント部21は、QLCゾーン#1をクローズ状態に遷移させる。この場合、フラッシュマネジメント部21は、QLCゾーン#1をオープンゾーンリスト101から取り除き、クローズゾーンリスト102に加える。
共有QLCバッファ201は、ダイナミックQLCバッファとして実現される。消去動作の実行から第1の時間以上が経過し且つ第1サイズ以上の未書き込み領域が残っているQLCゾーン(QLCブロック)が、オープンゾーンリスト101またはクローズゾーンリスト102に存在する場合、フラッシュマネジメント部21は、このQLCブロックを、共有QLCバッファ201として割り当てる(Mode Change)。
より詳しくは、フラッシュマネジメント部21は、消去動作の実行から第1の時間以上が経過し且つ第1サイズ以上の未書き込み領域が残っているQLCブロックを制御するためのモードを第1のモードから第2のモードに変更し、このQLCブロックを、共有QLCバッファ201の書き込み先QLCブロック(「Open QLC」)として割り当てる。フラッシュマネジメント部21は、クローズ要求を受信する度に、クローズすべきQLCゾーンに書き込まれるべき残りのライトデータを、共有QLCバッファ201の書き込み先QLCブロック(「Open QLC」)に書き込む。
書き込み先QLCブロック全体がデータで満たされると、フラッシュマネジメント部21は、この書き込み先QLCブロックをフル状態のQLCブロックとして管理する。
フラッシュマネジメント部21は、共有QLCバッファ201に含まれるフル状態の全てのQLCブロックを先入れ先出し(FIFO)リストを使用して管理してもよい。FIFOリストは複数のエントリを含む。フル状態の一つのQLCブロックがFIFOリストに入れられると、FIFOリストの各エントリに既に格納されている各QLCブロックはFIFOリストの出口側に1エントリ分だけ移動する。フラッシュマネジメント部21は、FIFOリストの出口に達したQLCブロック(最も古いQLCブロック)を共有QLCバッファ201のガベージコレクション(GC)のためのコピー元ブロックとして選択してもよい。フラッシュマネジメント部21は、選択したQLCブロックに有効データが格納されているか否かを判定する。
選択したQLCブロックに有効データが格納されていない場合、フラッシュマネジメント部21は、この選択したQLCブロックをQLC領域202用のエンプティゾーンリスト104に入れ、これによってこの選択したQLCブロックをQLC領域202にリセット状態のQLCブロックとして返却する。
選択したQLCブロックに有効データが格納されている場合には、フラッシュマネジメント部21は、選択したQLCブロックに格納されている有効データを書き込み先QLCブロック(open QLC)にコピーする。そして、フラッシュマネジメント部21は、L2Pテーブル31を更新して、有効データがコピーされた書き込み先QLCブロック内の記憶位置を示す物理アドレスを、このコピーされた有効データの論理アドレスにマッピングする。選択したQLCブロック内の全ての有効データのコピーが完了した場合、フラッシュマネジメント部21は、この選択したQLCブロックをQLC領域202用のエンプティゾーンリスト104に入れ、これによってこの選択したQLCブロックをQLC領域202にリセット状態のQLCブロックとして返却する。
共有QLCバッファ201に新たな書き込み先QLCブロック(「Open QLC」)を割り当てることが必要になる度、フラッシュマネジメント部21は、消去動作の実行から第1の時間以上が経過し且つ第1サイズ以上の未書き込み領域が残っているQLCブロックをオープンゾーンリスト101またはクローズゾーンリスト102から選択し、このQLCブロックを、共有QLCバッファ201の新たな書き込み先QLCブロック(「Open QLC」)として割り当てる。
なお、消去動作の実行から第1の時間以上が経過し且つ第1サイズ以上の未書き込み領域が残っているQLCブロックがオープンゾーンリスト101とクローズゾーンリスト102のどちらにも存在しない場合には、フラッシュマネジメント部21は、エンプティゾーンリスト104によって管理されているQLCブロックの集合内の一つのQLCブロックを、共有QLCバッファ201の書き込み先QLCブロック(「Open QLC」)として割り当てる。
また、オープン状態、クローズ状態、またはフル状態であるQLCゾーンの各々に関して、フラッシュマネジメント部21は、このQLCゾーンの読み出し可能エリアと、このQLCゾーンから読み出し可能ではないデータが格納されている各記憶位置を示す記憶位置情報とをブロック管理テーブル33を使用して管理する。
各記憶位置は、共有QLCバッファ201内の記憶位置、またはホスト2のライトバッファ51内の記憶位置のいずれかである。各記憶位置は、例えば、4KBのようなサイズを有するセクタの単位で管理されてもよい。
フラッシュマネジメント部21が、QLCゾーンとこのQLCゾーン内のオフセットとを示す開始LBAと、リード対象データのデータサイズとを指定するリードコマンド(read request)をホスト2から受信した場合、フラッシュマネジメント部21は、リード対象データに対応するLBA範囲がこのQLCブロック(ゾーン)の読み出し可能エリアに含まれているか否かを判定する。リード対象データに対応するLBA範囲は、リードコマンドによってそれぞれ指定されるオフセットとデータサイズとによって規定される。
リード対象データに対応するLBA範囲がこのQLCブロック(ゾーン)の読み出し可能エリアに含まれている場合、フラッシュマネジメント部21は、リード対象データをこのQLCブロック(ゾーン)から読み出し、読み出したリード対象データを、DMAC15を使用してホスト2にリードヒットデータとして送信する。
リード対象データに対応するLBA範囲がこのQLCブロック(ゾーン)の読み出し可能エリアに含まれていない場合、フラッシュマネジメント部21は、このQLCゾーンに対応する記憶位置情報に基づいて、リード対象データをSLCバッファ401、またはホスト2のライトバッファ51から読み出し、読み出したリード対象データを、DMAC15を使用してホスト2にリードヒットデータとして送信する。
なお、フラッシュマネジメント部21は、リード対象データをホスト2のライトバッファ51から読み出す代わりに、リード対象データがSSD3内に存在しないことをホスト2に通知する処理だけを実行してもよい。この場合、フラッシュマネジメント部21は、リード対象データが存在するホスト2のライトバッファ51内の位置をホスト2に通知してもよい。
データで満たされているフル状態のQLCゾーンに関しては、このQLCゾーンのLBA範囲の全てが読み出し可能エリアとして管理される。
フル状態のQLCゾーンに格納されている全てのデータが、利用されない不要データになった場合、ホスト2は、このQLCゾーンを示す論理アドレスを指定するリセット要求(reset request)をSSD3に送信することができる。このリセット要求(reset request)をホスト2から受信したことに応じて、フラッシュマネジメント部21は、このQLCゾーンの状態をエンプティ状態に遷移させる。
図12は、SSD3において実行されるゾーンオープン動作の手順を示すフローチャートである。
ここでは、QLCゾーン#1およびQLCゾーン#2をオープンする動作を例示するが、他のQLCゾーンをオープンする動作も、QLCゾーン#1およびQLCゾーン#2をオープンする動作と同様の手順で実行される。
SSD3のコントローラ4がホスト2からオープン要求を受信した場合(ステップS101のYES)、コントローラ4は、受信したオープン要求が、QLCゾーン#1をオープン状態に遷移させるオープン要求またはQLCゾーン#2をオープン状態に遷移させるオープン要求のいずれであるかを判定する(ステップS102、S103)。
受信したオープン要求がQLCゾーン#1をオープン状態に遷移させるオープン要求である場合(ステップS102のYES)、コントローラ4は、QLCゾーン#1に割り当てられたQLCブロックを含むNAND型フラッシュメモリダイにこのQLCブロックを指定するイレーズ命令を送信し、これによってこのQLCブロックに対する消去動作を実行する(ステップS104)。このQLCブロックに対する消去動作の実行が完了すると、コントローラ4は、QLCゾーン#1の状態をエンプティ状態からオープン状態に遷移させる。コントローラ4は、このQLCブロックの消去動作が実行された時刻(例えば年月日時分秒)を示す消去タイムスタンプを消去タイムスタンプ管理テーブル32に記録する(ステップS105)。そして、コントローラ4は、オープン要求の完了を示す応答をホスト2に送信する(ステップS106)。
受信したオープン要求がQLCゾーン#2をオープン状態に遷移させるオープン要求である場合(ステップS103のYES)、コントローラ4は、QLCゾーン#2に割り当てられたQLCブロックを含むNAND型フラッシュメモリダイにこのQLCブロックを指定するイレーズ命令を送信し、これによってこのQLCブロックに対する消去動作を実行する(ステップS107)。このQLCブロックに対する消去動作の実行が完了すると、コントローラ4は、QLCゾーン#2の状態をエンプティ状態からオープン状態に遷移させる。コントローラ4は、このQLCブロックの消去動作が実行された時刻(例えば年月日時分秒)を示す消去タイムスタンプを消去タイムスタンプ管理テーブル32に記録する(ステップS108)。そして、コントローラ4は、オープン要求の完了を示す応答をホスト2に送信する(ステップS106)。
図13は、SSD3において実行される書き込み動作の手順を示すフローチャートである。
ここでは、QLCゾーン#1およびQLCゾーン#2にライトデータを書き込む場合を例示するが、オープン状態の他のQLCゾーンにライトデータを書き込む動作も、QLCゾーン#1およびQLCゾーン#2にライトデータを書き込む動作と同様の手順で実行される。
QLCゾーン#1およびQLCゾーン#2の各々に対応するQLCブロックの消去動作が実行されてから第1の時間が経過するまでの間は、SSD3のコントローラ4は、QLCゾーン#1およびQLCゾーン#2の各々を第1のモードで制御し、QLCゾーン#1およびQLCゾーン#2の各々に対して以下の書き込み動作を実行する。
SSD3のコントローラ4がホスト2からライト要求を受信した場合(ステップS11のYES)、コントローラ4は、受信したライト要求がQLCゾーン#1を指定するライト要求またはQLCゾーン#2を指定するライト要求のいずれであるかを判定する(ステップS12、S17)。
受信したライト要求がQLCゾーン#1を指定するライト要求である場合(ステップS12のYES)、コントローラ4は、受信したライト要求をQLCゾーン#1に対応するコマンドキュー#1に格納し、QLCゾーン#1に書き込むべきライトデータの転送開始条件が満たされたか否かを判定する(ステップS13)。
ステップS13では、コントローラ4は、コマンドキュー#1に格納されているライト要求の集合に関連付けられたライトデータの総サイズがQLCブロックの最小書き込みサイズ(例えば4ページ分のサイズ)に達したか否かを判定する。
コマンドキュー#1に格納されているライト要求の集合に関連付けられたライトデータの総サイズがQLCブロックの最小書き込みサイズに達したならば、コントローラ4は、QLCゾーン#1に書き込むべきライトデータの転送開始条件が満たされたと判定する(ステップS13のYES)。
この場合、コントローラ4は、DMAC15を用いて、コマンドキュー#1に格納されているライト要求の集合に関連付けられたライトデータを、ホスト2のライトバッファ51から内部バッファ161に転送する(ステップS14)。転送されたライトデータはQLCゾーン#1の書き込み動作に必要な最小書き込みサイズを有している。
コントローラ4は、内部バッファ161に転送されたライトデータを、メモリセル当たりに4ビットのデータを書き込むフォギー・ファイン書き込み動作で、QLCゾーン#1に割り当てられたQLCブロック#1に書き込む(ステップS15)。
このようにして、コントローラ4は、コマンドキュー#1に最小書き込みサイズ分のライト要求の集合が蓄積される度に、ホスト2のライトバッファ51から内部バッファ161へのライトデータの転送と、QLCゾーン#1に割り当てられたQLCブロック#1にライトデータを書き込む動作とを実行する。あるライトデータのファイン書き込み動作が終了することによってこのライトデータがQLCブロック#1から読み出し可能になった場合、コントローラ4は、この読み出し可能になったライトデータに対応するライト要求の完了を示す応答をホスト2に送信する(ステップS16)。
受信したライト要求がQLCゾーン#2を指定するライト要求である場合(ステップS17のYES)、コントローラ4は、受信したライト要求をQLCゾーン#2に対応するコマンドキュー#2に格納し、QLCゾーン#2に書き込むべきライトデータの転送開始条件が満たされたか否かを判定する(ステップS18)。
ステップS18では、コントローラ4は、コマンドキュー#2に格納されているライト要求の集合に関連付けられたライトデータの総サイズがQLCブロックの最小書き込みサイズ(例えば4ページ分のサイズ)に達したか否かを判定する。
コマンドキュー#2に格納されているライト要求の集合に関連付けられたライトデータの総サイズがQLCブロックの最小書き込みサイズに達したならば、コントローラ4は、QLCゾーン#2に書き込むべきライトデータの転送開始条件が満たされたと判定する(ステップS18のYES)。
この場合、コントローラ4は、DMAC15を用いて、コマンドキュー#2に格納されているライト要求の集合に関連付けられたライトデータを、ホスト2のライトバッファ51から内部バッファ161に転送する(ステップS19)。転送されたライトデータはQLCゾーン#2の書き込み動作に必要な最小書き込みサイズを有している。
コントローラ4は、内部バッファ161に転送されたライトデータを、メモリセル当たりに4ビットのデータを書き込むフォギー・ファイン書き込み動作で、QLCゾーン#2に割り当てられたQLCブロック#2に書き込む(ステップS20)。
このようにして、コントローラ4は、コマンドキュー#2に最小書き込みサイズ分のライト要求の集合が蓄積される度に、ホスト2のライトバッファ51から内部バッファ161へのライトデータの転送と、QLCゾーン#2に割り当てられたQLCブロック#2にライトデータを書き込む動作とを実行する。あるライトデータのファイン書き込み動作が終了することによってこのライトデータがQLCブロック#2から読み出し可能になった場合、コントローラ4は、この読み出し可能になったライトデータに対応するライト要求の完了を示す応答をホスト2に送信する(ステップS16)。
図14は、SSD3において実行されるゾーンクローズ動作の手順を示すフローチャートである。
ここでは、QLCゾーン#1およびQLCゾーン#2をクローズ状態に遷移させる場合を例示するが、オープン状態の他のQLCゾーンをクローズ状態に遷移させる動作も、QLCゾーン#1およびQLCゾーン#2をクローズ状態に遷移させる動作と同様の手順で実行される。
クローズ要求をホスト2から受信した場合(ステップS21のYES)、コントローラ4は、受信したクローズ要求によって指定されたQLCゾーンがQLCゾーン#1またはQLCゾーン#2のいずれであるかを判定する(ステップS22、S26)。
受信したクローズ要求によって指定されたQLCゾーンがQLCゾーン#1である場合(ステップS22のYES)、コントローラ4は、QLCゾーン#1を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、内部バッファ161に未転送の残りのライトデータをホスト2のライトバッファ51から取得する(ステップS23)。
コントローラ4は、ホスト2のライトバッファ51から取得した残りのライトデータを、例えばフォギー・ファイン書き込み動作によって、共有QLCバッファ201の書き込み先QLCブロックに書き込む(ステップS24)。ステップS24では、コントローラ4は、QLCゾーン#1に対応するQLCブロック#1から読み出し可能になっていない第1のライトデータ(つまり、フォギー書き込み動作のみが終了しており、ファイン書き込み動作がまだ実行されてないライトデータ)を内部バッファ161から取得し、ホスト2のライトバッファ51から取得したQLCゾーン#1に対応する残りのライトデータを、この第1のライトデータと共に、共有QLCバッファ201の書き込み先QLCブロックに書き込む。これにより、フォギー書き込み動作のみが終了しており、ファイン書き込み動作がまだ実行されてないライトデータも、共有QLCバッファ201を使用して不揮発に記憶することができる。
コントローラ4は、共有QLCバッファ201から読み出し可能となったライトデータに対応するライト要求それぞれの完了を示す応答と、クローズ要求の完了を示す応答とをホスト2に送信する(ステップS25)。
クローズ要求によって指定されたQLCゾーンがQLCゾーン#2である場合(ステップS26のYES)、コントローラ4は、QLCゾーン#2を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、内部バッファ161に未転送の残りのライトデータをホスト2のライトバッファ51から取得する(ステップS27)。そして、コントローラ4は、上述のステップS24,S25の処理を実行する。
図15は、クローズ状態のQLCゾーンを指定するライト要求の受信に応じてSSD3において実行されるゾーン再オープン動作の手順を示すフローチャートである。
クローズ状態のQLCゾーンを指定するライト要求をホスト2から受信した場合(ステップS31のYES)、コントローラ4は、このQLCゾーンを再オープンし、このQLCゾーンの状態をクローズ状態からオープン状態に遷移させる(ステップS32)。
そして、コントローラ4は、共有QLCバッファ201に格納されているこのQLCブCゾーン用のライトデータを共有QLCバッファ201から内部バッファ161に転送し(ステップS33)、共有QLCバッファ201から内部バッファ161に転送されたライトデータとホスト2のライトバッファ51から新たに転送されるこのQLCゾーン用のライトデータとをこのQLCゾーンに書き込むための書き込み処理を実行する(ステップS34)。
図16は、SSD3において実行されるモード切り替え動作の手順を示すフローチャートである。以下のモード切り替え動作は、例えば所定時間間隔で、繰り返し実行されてもよい。
コントローラ4は、まず、オープン状態またはクローズ状態である各QLCゾーンの消去タイムスタンプを消去タイムスタンプ管理テーブル32から取得する(ステップS41)。次に、コントローラ4は、現在時刻を取得する(ステップS42)。コントローラ4は時刻を計時する時計モジュールを含んでいてもよい。この場合には、コントローラ4は現在時刻をコントローラ4内の時計モジュールから取得してもよい。
オープン状態またはクローズ状態である各QLCゾーンについて、コントローラ4は、現在時刻から消去タイムスタンプの値を引くことによって、消去動作の実行から現時点までの経過時間を求める(ステップS43)。
オープン状態またはクローズ状態である各QLCゾーンについて、コントローラ4は、経過時間が第1の時間以上であるか否かを判定する(ステップS44)。あるQLCゾーンの消去動作の実行から現時点までの経過時間が第1の時間以上である場合(ステップS44のYES)、コントローラ4は、このQLCゾーンに対応するQLCブロックに第1サイズ以上の未書き込み領域が残っているか否かを判定する(ステップS45)。
このQLCブロックに第1サイズ以上の未書き込み領域が残っている場合(ステップS45のYES)、コントローラ4は、たとえこのQLCブロック#1の消去動作の実行から書き込み制限時間(第2の時間)が経過しても、このQLCブロックがフル状態にならない可能性が高いと推定する。そして、コントローラ4は、このQLCブロックへの書き込みを制御するためのモードを上述の第1のモードから上述の第2のモードに切り替え、このQLCブロックを共有QLCバッファ201の書き込み先QLCブロックとして割り当てる(ステップS46)。
図17は、第2のモードにおいて実行されるゾーンクローズ動作の手順を示すフローチャートである。
以下では、QLCゾーン#1に割り当てられていたQLCブロック#1を制御するためのモードが第1のモードから第2のモードに変更され、QLCブロック#1が共有QLCバッファ201として割り当てられた場合を想定する。
コントローラ4がQLCゾーン#1または他のゾーンの一つを指定するクローズ要求をホストから受信すると(ステップS201のYES)、コントローラ4は、受信したクローズ要求によって指定されたQLCゾーン(QLCゾーン#1または他のゾーンの一つ)を指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、内部バッファ161に未転送の残りのライトデータをホスト2のライトバッファ51から取得する(ステップS202)。
コントローラ4は、取得したライトデータを、共有QLCバッファ201として割り当てられているQLCブロック#1の未書き込み領域に書き込む(ステップS203)。
コントローラ4は、QLCブロック#1が、QLCブロック#1全体がデータで満たされたフル状態になったか否かを判定する(ステップS204)。QLCブロック#1がフル状態になった場合(ステップS204のYES)、コントローラ4は、QLCブロック#1を共有QLCバッファ201のFIFOリストに入れる(ステップS205)。
QLCブロック#1がフル状態になっていない場合(ステップS204のNO)、コントローラ4は、QLCブロック#1の消去動作の実行からの経過時間が書き込み制限時間(第2の時間)に達したか否かを判定する(ステップS206)。
QLCブロック#1の消去動作の実行からの経過時間が書き込み制限時間(第2の時間)に達した場合(ステップS206のYES)、コントローラ4は、コントローラ4によって生成されるダミーデータをQLCブロック#1の未書き込み領域に書き込むことによって、QLCブロック#1をフル状態に設定し(ステップS207)、そしてフル状態のQLCブロック#1を共有QLCバッファ201のFIFOリストに入れる(ステップS205)。
一方、QLCブロック#1の消去動作の実行からの経過時間が書き込み制限時間(第2の時間)に達していない場合(ステップS206のNO)、コントローラ4は、ステップS201の処理に進み、QLCブロック#1を共有QLCバッファ201の書き込み先QLCブロックとして引き続き使用する。
図18は、第2のモードにおいて実行されるコピー動作の手順を示すフローチャートである。
ここでは、QLCゾーン#1に割り当てられていたQLCブロック#1を制御するためのモードが第1のモードから第2のモードに変更され、QLCブロック#1が共有QLCバッファ201として割り当てられた場合を想定する。
コントローラ4は、QLCゾーン#1を指定する後続のライト要求それぞれをホスト2から受信し、受信した後続のライト要求を、QLCゾーン#1に対応するコマンドバッファに格納する(ステップS51)。
そして、コントローラ4は、QLCブロック#1に関する第2のモードに対応する書き込み開始条件が満たされたか否かを判定する(ステップS52)。QLCブロック#1に関する第2のモードに対応する書き込み開始条件は、共有QLCバッファ201に格納されているQLCゾーン#1に対応するライトデータのデータサイズが1ゾーン分の容量に達した場合、または共有QLCバッファ201に格納されているQLCゾーン#1に対応するライトデータのデータサイズとホスト2のライトバッファ51に格納されているQLCゾーン#1に対応する後続のライトデータのデータサイズとの合計が1ゾーン分の容量に達した場合に満たされる。
第2のモードに対応する書き込み開始条件が満たされるまで、コントローラ4は、ステップS51の処理を繰り返しながら、待つ。第2のモードに対応する書き込み開始条件が満たされる前に、QLCゾーン#1を指定するクローズ要求がホスト2から受信した場合、コントローラ4は、図17で説明したゾーンクローズ動作を実行する。
したがって、共有QLCバッファ201に格納されているゾーン#1に対応するライトデータのデータサイズは、QLCゾーン#1を指定するクローズ要求によって増加される。また、たとえQLCゾーン#1を指定するクローズ要求が受信されない場合であっても、ホスト2のライトバッファ51に格納されているゾーン#1に対応する後続のライトデータのデータサイズは、ゾーン#1を指定する後続のライト要求によって増加される。したがって、いずれQLCブロック#1に関する第2のモードに対応する書き込み開始条件が満たされる。
QLCブロック#1に関する第2のモードに対応する書き込み開始条件が満たされると(ステップS52のYES)、つまり共有QLCバッファ201(または共有QLCバッファ201とホスト2のライトバッファ51)に格納されているQLCゾーン#1に対応するライトデータのデータサイズが1ゾーン分に達すると、コントローラ4は、エンプティゾーンリスト104によって管理されているQLCブロックの集合内の一つのQLCブロック(ここではQLCブロック#x)を、QLCゾーン#1に割り当てる(ステップS53)。コントローラ4は、QLCブロック#xに対する消去動作を実行する(ステップS54)。そして、コントローラ4は、QLCゾーン#1に対応するライトデータを、共有QLCバッファ201から(または共有QLCバッファ201とホスト2のライトバッファ51の双方から)、QLCブロック#xにコピーする(ステップS55)。ステップS55では、コントローラ4は、QLCゾーン#1に対応するライトデータを共有QLCバッファ201から(または共有QLCバッファ201とホスト2のライトバッファ51の双方から)読み出し、読み出したライトデータをQLCブロック#xに書き込む。これにより、QLCゾーン#1に新たに割り当てられたQLCブロック#xはフル状態になる。
以上説明したように、本実施形態によれば、QLCゾーン#1に割り当てられたQLCブロック#1に対する消去動作が実行されてから第1の時間が経過するまでの間は、コントローラ4は、QLCゾーン#1を指定するホスト2からの一つ以上のライト要求の集合に関連付けられたライトデータをホスト2のライトバッファ51から内部バッファ161に転送する動作と、内部バッファ161に転送されたライトデータをQLCブロック#1に書き込む動作とを含む第1の書き込み動作を実行する(第1のモード)。QLCブロック#1に第1サイズ以上の未書き込み領域が残っている状態で、QLCブロック#1の消去動作の実行からの経過時間が第1の時間以上になると、コントローラ4は、第1の書き込み動作を実行せず、代わりに、QLCブロック#1を共有QLCバッファ201として割り当てる。これにより、コントローラ4は、QLCブロック#1をQLCゾーン#1専用の記憶領域ではなく、全てのQLCゾーンに共通の記憶領域である共有QLCバッファ201として使用し始めることができる。このため、QLCブロック#1をゾーン#1専用の記憶領域として使用し続ける場合に比し、QLCブロック#1がフル状態になるまでに要する時間を短くすることができる。よって、たとえホスト2によるQLCゾーン#1に対する書き込みの速度が遅い場合であっても、他の様々なゾーンに対応するライトデータを用いてQLCブロック#1を書き込み制限時間以内にフル状態にすることが高い確率で可能となる。
この結果、ホスト2による書き込みの速度が遅い各QLCゾーンに対応するQLCブロックに、ユーザデータ以外のデータ(ダミーデータ)が書き込まれる量を減らすことが可能となり、NAND型フラッシュメモリ5の記憶領域の利用効率を向上することが可能となる。
また、本実施形態の構成により、オープンされた各QLCゾーンを制限時間内にフル状態にするというホスト2側の制約を実際上無くすことが可能となり、ホスト2側の利便性の向上を図ることができる。
なお、ホスト2のライトバッファ51は不揮発性ライトバッファによって実現してもよい。不揮発性ライトバッファは、ストレージクラスメモリ(SCM)のような不揮発性メモリによって実現されてもよい。
ホスト2のライトバッファ51が不揮発性ライトバッファによって実現されている場合には、たとえ停電のようなパワーロスによって内部バッファ161内のデータが失われても、ホスト2の不揮発性ライトバッファからこのデータを再び取得することが可能となる。したがって、SSD3がパワーロスプロテクション機能を実行するためのキャパシタを備えていなくても、パワーロスによって内部バッファ161内のデータが失われてしまうことを防止することができる。
また、共有QLCバッファ201はストレージクラスメモリ(SCM)のような不揮発性メモリによって実現されてもよいし、幾つかのSLC(シングルレベルセル)ブロックを含むSLCバッファによって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト2…SSD、4…コントローラ、5…NAND型フラッシュメモリ、21…フラッシュマネジメント部、22…ディスパッチャ、51…ホストのライトバッファ、161…内部バッファ、201…共有QLCバッファ、202…QLC領域。

Claims (12)

  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のゾーンに新たに割り当てられた第2の記憶領域にコピーするように構成されている請求項1記載のメモリシステム。
  3. 前記コントローラは、前記第1の記憶領域に前記第1サイズ以上の未書き込み領域が残っていない状態で、前記消去動作の実行から前記第1の時間が経過した場合、前記第1の書き込み動作を継続して実行するように構成されている請求項1記載のメモリシステム。
  4. 前記コントローラは、
    前記第1の記憶領域に対する前記消去動作の実行から前記第1の時間よりも長い第2の時間が経過した場合、前記第1の記憶領域の全体がデータで満たされた状態であるか否かを判定し、
    前記第1の記憶領域の全体がデータで満たされた状態ではない場合、前記第1の記憶領域の未書き込み領域に前記コントローラによって生成されるダミーデータを書き込むことによって、前記第1の記憶領域を、前記第1の記憶領域の全体がデータで満たされた状態に設定するように構成されている請求項1記載のメモリシステム。
  5. 前記コントローラは、
    前記複数の記憶領域のうち、有効データが格納されていない記憶領域の集合を管理し、
    消去動作の実行から前記第1の時間以上が経過し且つ前記第1サイズ以上の未書き込み領域が残っている記憶領域が存在しない場合、前記有効データが格納されていない記憶領域の集合内の一つの記憶領域を、前記不揮発性バッファとして割り当てるように構成されている請求項1記載のメモリシステム。
  6. 前記コントローラは、前記複数の記憶領域の各々の消耗度に基づいて、前記第1の時間の長さを記憶領域毎に変更するように構成されている請求項1記載のメモリシステム。
  7. 前記コントローラは、前記第1のゾーンを指定する一つ以上のライト要求の集合に関連付けられたライトデータのデータサイズが前記複数の記憶領域の各々の最小書き込みサイズに達した場合、前記最小書き込みサイズを有する、前記一つ以上のライト要求の集合に関連付けられた前記ライトデータ、前記ホストのライトバッファから前記内部バッファに転送するように構成されている請求項1記載のメモリシステム。
  8. 不揮発性メモリを含むメモリシステムを制御する制御方法であって、
    前記メモリシステムをアクセスするための論理アドレス空間を分割することによって得られる複数の論理アドレス範囲がそれぞれに割り当てられた複数のゾーンの各々に、前記不揮発性メモリに含まれる複数の記憶領域のうちの一つの記憶領域を割り当てることと、
    前記複数のゾーンのうちの第1のゾーンに割り当てられた第1の記憶領域に対する消去動作を実行することと、
    前記第1の記憶領域の前記消去動作の実行から第1の時間が経過するまでの間は、前記第1のゾーンを指定する一つ以上のライト要求をホストから受信したことに応じて、前記一つ以上のライト要求の集合に関連付けられたライトデータを前記ホストのライトバッファから前記メモリシステムの内部バッファに転送する動作と、前記内部バッファに転送された前記ライトデータを前記第1の記憶領域に書き込む動作とを含む第1の書き込み動作を実行することと、
    前記第1の記憶領域に第1サイズ以上の未書き込み領域が残っている状態で、前記消去動作の実行から前記第1の時間が経過した場合、前記第1の書き込み動作を実行せず、前記第1の記憶領域を、前記複数のゾーンの各々に書き込むべきライトデータを一時的に格納可能な不揮発性バッファとして割り当てることと、
    前記第1のゾーンまたは他の一つのゾーンの状態を書き込みが中断された状態に遷移させるための第1の要求を前記ホストから受信した場合、前記第1のゾーンまたは他の一つのゾーンを指定する受信済みの一つ以上のライト要求に関連付けられたライトデータのうち、前記内部バッファに未転送の残りのライトデータを前記ホストのライトバッファから取得し、前記取得した残りのライトデータを前記不揮発性バッファとして割り当てられた前記第1の記憶領域の前記未書き込み領域に書き込むこととを具備する制御方法。
  9. 前記不揮発性バッファに格納されている前記第1のゾーンに対応するライトデータのデータサイズが一つのゾーン分の容量に達した場合、または前記不揮発性バッファに格納されている前記第1のゾーンに対応する前記ライトデータのデータサイズと前記ホストのライトバッファに格納されている前記第1のゾーンに対応する後続のライトデータのデータサイズとの合計が一つのゾーン分の容量に達した場合、前記第1のゾーンに対応する前記ライトデータ、または前記第1のゾーンに対応する前記ライトデータと前記ホストのライトバッファに格納されている前記第1のゾーンに対応する前記後続のライトデータの双方を、前記不揮発性バッファから、または前記不揮発性バッファと前記ホストのライトバッファの双方から、前記第1のゾーンに新たに割り当てられた第2の記憶領域にコピーすることをさらに具備する請求項8記載の制御方法。
  10. 前記第1の記憶領域に前記第1サイズ以上の未書き込み領域が残っていない状態で、前記消去動作の実行から前記第1の時間が経過した場合、前記第1の書き込み動作を継続して実行することをさらに具備する請求項8記載の制御方法。
  11. 前記第1の記憶領域に対する前記消去動作の実行から前記第1の時間よりも長い第2の時間が経過した場合、前記第1の記憶領域の全体がデータで満たされた状態であるか否かを判定することと、
    前記第1の記憶領域の全体がデータで満たされた状態ではない場合、前記第1の記憶領域の未書き込み領域にダミーデータを書き込むことによって、前記第1の記憶領域を、前記第1の記憶領域の全体がデータで満たされた状態に設定することとをさらに具備する請求項8記載の制御方法。
  12. 前記第1の書き込み動作は、前記第1のゾーンを指定する一つ以上のライト要求の集合に関連付けられたライトデータのデータサイズが前記複数の記憶領域の各々の最小書き込みサイズに達した場合、前記最小書き込みサイズを有する、前記一つ以上のライト要求の集合に関連付けられた前記ライトデータ、前記ホストのライトバッファから前記内部バッファに転送することを含む請求項8記載の制御方法。
JP2020023249A 2020-02-14 2020-02-14 メモリシステムおよび制御方法 Active JP7366795B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020023249A JP7366795B2 (ja) 2020-02-14 2020-02-14 メモリシステムおよび制御方法
US17/018,224 US11237769B2 (en) 2020-02-14 2020-09-11 Memory system and method of controlling nonvolatile memory
US17/557,148 US11768632B2 (en) 2020-02-14 2021-12-21 Memory system and method of controlling nonvolatile memory
US18/449,924 US20230384980A1 (en) 2020-02-14 2023-08-15 Memory system and method of controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020023249A JP7366795B2 (ja) 2020-02-14 2020-02-14 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2021128582A JP2021128582A (ja) 2021-09-02
JP7366795B2 true JP7366795B2 (ja) 2023-10-23

Family

ID=77273459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020023249A Active JP7366795B2 (ja) 2020-02-14 2020-02-14 メモリシステムおよび制御方法

Country Status (2)

Country Link
US (3) US11237769B2 (ja)
JP (1) JP7366795B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7051546B2 (ja) * 2018-04-16 2022-04-11 キオクシア株式会社 メモリシステムおよび制御方法
KR20210025249A (ko) 2019-08-27 2021-03-09 삼성전자주식회사 메모리 시스템 및 그 동작 방법
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
KR20210108107A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102691862B1 (ko) * 2020-04-09 2024-08-06 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20220060372A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20220073998A (ko) * 2020-11-27 2022-06-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP2022094705A (ja) * 2020-12-15 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
TWI775268B (zh) * 2021-01-07 2022-08-21 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
KR20220104511A (ko) * 2021-01-18 2022-07-26 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11868652B2 (en) * 2021-02-25 2024-01-09 SK Hynix Inc. Utilization based dynamic shared buffer in data storage system
KR20220133003A (ko) * 2021-03-24 2022-10-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP2022171208A (ja) * 2021-04-30 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US11537305B1 (en) 2021-06-03 2022-12-27 Western Digital Technologies, Inc. Dissimilar write prioritization in ZNS devices
US11675539B2 (en) * 2021-06-03 2023-06-13 International Business Machines Corporation File system operations for a storage supporting a plurality of submission queues
US11537303B1 (en) * 2021-06-03 2022-12-27 Western Digital Technologies, Inc. Dissimilar write prioritization in ZNS devices
US11593032B1 (en) * 2021-08-06 2023-02-28 Micron Technology, Inc. Memory sub-system data migration
KR20230060163A (ko) * 2021-10-27 2023-05-04 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
JP7448585B2 (ja) * 2022-05-31 2024-03-12 トヨタ自動車株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US12079517B2 (en) * 2022-07-21 2024-09-03 Micron Technology, Inc. Buffer allocation for reducing block transit penalty
CN115904256B (zh) * 2023-02-20 2023-06-13 中电装备山东电子有限公司 一种数据存储方法及存储器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013239099A (ja) 2012-05-17 2013-11-28 Sony Corp 制御装置、記憶装置、記憶制御方法
US20170109085A1 (en) 2015-10-16 2017-04-20 Kabushiki Kaisha Toshiba Memory device that writes data into a block based on time passage since erasure of data from the block
US10048863B1 (en) 2016-06-01 2018-08-14 Seagate Technology Llc Open block refresh management

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US6641346B2 (en) * 2000-02-03 2003-11-04 Performance Design, Inc. Automatic paper feeder for paper hole punch
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
JP5722685B2 (ja) * 2011-04-12 2015-05-27 株式会社日立製作所 半導体装置、不揮発性メモリ装置の制御方法
US10223001B2 (en) * 2015-03-12 2019-03-05 Toshiba Memory Corporation Memory system
US9811462B2 (en) 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
JP6524039B2 (ja) 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
JP2019046238A (ja) * 2017-09-04 2019-03-22 東芝メモリ株式会社 メモリシステム
JP2019191909A (ja) 2018-04-25 2019-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
US10942677B2 (en) * 2019-01-24 2021-03-09 Silicon Motion, Inc. Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device
JP6716757B2 (ja) 2019-06-19 2020-07-01 キオクシア株式会社 メモリシステムおよび制御方法
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
KR20210108107A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013239099A (ja) 2012-05-17 2013-11-28 Sony Corp 制御装置、記憶装置、記憶制御方法
US20170109085A1 (en) 2015-10-16 2017-04-20 Kabushiki Kaisha Toshiba Memory device that writes data into a block based on time passage since erasure of data from the block
US10048863B1 (en) 2016-06-01 2018-08-14 Seagate Technology Llc Open block refresh management

Also Published As

Publication number Publication date
US11768632B2 (en) 2023-09-26
US11237769B2 (en) 2022-02-01
US20210255803A1 (en) 2021-08-19
US20230384980A1 (en) 2023-11-30
US20220113910A1 (en) 2022-04-14
JP2021128582A (ja) 2021-09-02

Similar Documents

Publication Publication Date Title
JP7366795B2 (ja) メモリシステムおよび制御方法
JP7346311B2 (ja) メモリシステム
US11269558B2 (en) Memory system and method of controlling nonvolatile memory
CN109144888B (zh) 存储器系统
JP7353934B2 (ja) メモリシステムおよび制御方法
JP7358594B2 (ja) メモリシステム
WO2018189858A1 (ja) ストレージシステム
KR20120030137A (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
US20230176965A1 (en) Media management based on data access metrics
JP2021033849A (ja) メモリシステムおよび制御方法
JP7381678B2 (ja) メモリシステム
US20230091792A1 (en) Memory system and method of controlling nonvolatile memory
JP7392080B2 (ja) メモリシステム
JP2021033847A (ja) メモリシステムおよび制御方法
JP2023012773A (ja) メモリシステムおよび制御方法
JP2022171208A (ja) メモリシステムおよび制御方法
JP2019148913A (ja) メモリシステム
US20210202008A1 (en) Apparatus and method for managing program operation time and write latency in memory system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230829

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230912

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231011

R151 Written notification of patent or utility model registration

Ref document number: 7366795

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151