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

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

Info

Publication number
JP2019185596A
JP2019185596A JP2018078422A JP2018078422A JP2019185596A JP 2019185596 A JP2019185596 A JP 2019185596A JP 2018078422 A JP2018078422 A JP 2018078422A JP 2018078422 A JP2018078422 A JP 2018078422A JP 2019185596 A JP2019185596 A JP 2019185596A
Authority
JP
Japan
Prior art keywords
write
data
host
write data
shared
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.)
Granted
Application number
JP2018078422A
Other languages
English (en)
Other versions
JP7051546B2 (ja
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
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
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2018078422A priority Critical patent/JP7051546B2/ja
Priority to US16/126,038 priority patent/US11003385B2/en
Priority to TW107143109A priority patent/TWI703494B/zh
Priority to CN202310413148.7A priority patent/CN116414314A/zh
Priority to CN201811532009.1A priority patent/CN110389718B/zh
Publication of JP2019185596A publication Critical patent/JP2019185596A/ja
Priority to US17/223,094 priority patent/US11669269B2/en
Application granted granted Critical
Publication of JP7051546B2 publication Critical patent/JP7051546B2/ja
Priority to US18/122,760 priority patent/US11868653B2/en
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/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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】データトラフィックを削減することができるメモリシステムを実現する。【解決手段】メモリシステムは、ホストから受信されるライトデータを複数の書き込み先ブロック間で共有される共有ライトバッファに格納し、複数ページ分の第1のライトデータを共有ライトバッファから取得し、第1段階の書き込み動作によって第1のライトデータを第1の書き込み先ブロックに書き込む。メモリシステムは、共有ライトバッファに空き領域がない状態でホストからライトデータを受信した場合、第1段階の書き込み動作が終了している共有ライトバッファ内のライトデータを破棄する。第1のライトデータの第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有ライトバッファに存在しない場合には、メモリシステムは、第1のライトデータを取得するための要求をホストに送信する。【選択図】図3

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。
データセンターのサーバにおいても、SSDのようなメモリシステムがストレージデバイスとして使用されている。
サーバのような計算機システムにおいて利用されるメモリシステムにおいては、この計算機システムがメモリシステムのホストとして機能する。このため、この計算機システムを利用するエンドユーザ(クライアント)の数が増加するにつれ、より多くのI/Oを処理することがメモリシステムに要求される。また、クライアントの数が増加するにつれ、ホストである計算機システムからメモリシステムに転送されるデータ量、つまりデータトラフィック、は増える傾向となる。
Yiying Zhang, 外, "De-indirection for flash-based SSDs with nameless writes." FAST. 2012, [online], [平成29年9月13日検索], インターネット<URL: https://www.usenix.org/system/files/conference/fast12/zhang.pdf >
本発明が解決しようとする課題は、ホストとメモリシステムとの間のデータトラフィックを削減することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続され、少なくとも第1段階の書き込み動作と第2段階の書き込み動作とを含み、前記不揮発性メモリに複数ページ分の同じデータを複数回転送する複数段階の書き込み動作を実行するように構成されたコントローラとを具備する。前記コントローラは、前記ホストからライト要求を受信する度に、前記複数のブロックから割り当てられた複数の書き込み先ブロックにそれぞれ対応する前記ホストのメモリ上の複数のライトバッファのいずれかに格納されているライトデータを前記ホストから受信し、前記受信したライトデータを前記複数の書き込み先ブロック間で共有される共有ライトバッファに格納する。前記コントローラは、前記複数の書き込み先ブロック内の第1の書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータを前記共有ライトバッファから取得し、前記第1段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックに書き込む。前記コントローラは、前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータを破棄して前記空き領域を前記共有ライトバッファに確保する。前記コントローラは、前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在しない場合、前記第1のライトデータを取得するための要求を前記ホストに送信することによって前記ホストから前記第1のライトデータを取得する。
実施形態のメモリシステムとホストとの関係を示すブロック図。 ホストに設けられる複数のライトバッファ(ホスト側ライトバッファ)と同実施形態のメモリシステムに設けられる共有ライトバッファ(共有デバイス側ライトバッファ)との関係を示す図。 共有ライトバッファを使用して同実施形態のメモリシステムによって実行される、各書き込み先ブロックへのデータ書き込み動作を示すブロック図。 3つのワード線を往復する場合のフォギー・ファイン書き込み動作を説明するための図。 2つのワード線を往復する場合のフォギー・ファイン書き込み動作を説明するための図。 同実施形態のメモリシステムとホストとを含む計算機システムの構成例を示すブロック図。 同実施形態のメモリシステムにおいて使用される複数のチャンネルと複数のNAND型フラッシュメモリチップとの関係を示すブロック図。 同実施形態のメモリシステムにおいて使用される、あるスーパーブロックの構成例を示す図。 ホストと同実施形態のメモリシステムとによって実行される書き込み処理の例を説明するためのブロック図。 ホストと同実施形態のメモリシステムとによって実行される書き込み処理の別の例を説明するためのブロック図。 共有ライトバッファを使用して同実施形態のメモリシステムによって実行されるフォギー・ファイン書き込み動作と共有ライトバッファのデータを破棄する処理とを説明するための図。 共有ライトバッファに未使用の領域がない場合に同実施形態のメモリシステムによって実行される、フォギー書き込み動作が終了した共有ライトバッファ内のライトデータを破棄する処理を説明するための図。 同実施形態のメモリシステムによって実行されるデータ書き込み処理の手順を示すフローチャート。 ホストが書き込み先ブロックを指定し且つ同実施形態のメモリシステムが書き込み先ページを決定するデータ書き込み処理と、ホストがブロックアドレスとページアドレスとを指定するデータ読み出し処理とを説明するための図。 同実施形態のメモリシステムに適用されるブロックアロケートコマンド(ブロック割り当て要求)を説明するための図。 ブロックアロケートコマンドに対するレスポンスを説明するための図。 同実施形態のメモリシステムに適用されるライトコマンドを説明するための図。 ライトコマンドに対するレスポンスを説明するための図。 同実施形態のメモリシステムに適用されるリードコマンドを説明するための図。 1以上のSLCブロックから構成される共有ライトバッファを使用して同実施形態のメモリシステムによって実行される、各書き込み先ブロックへのデータ書き込み動作を示すブロック図。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、ホストと実施形態に係るメモリシステムとの関係を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、NANDフラッシュ技術ベースのフラッシュストレージデバイス3として実現されている。
ホスト(ホストデバイス)2は、複数のフラッシュストレージデバイス3を制御するように構成されている。ホスト2は、複数のフラッシュストレージデバイス3によって構成されるフラッシュアレイをストレージとして使用するように構成された計算機によって実現される。
以下では、サーバコンピュータのような計算機がホスト2として機能する場合を例示して説明する。
ホスト(サーバコンピュータ)2と複数のフラッシュストレージデバイス3は、インタフェース50を介して相互接続される(内部相互接続)。この相互接続のためのインタフェース50としては、これに限定されないが、PCI Express(PCIe)(登録商標)、NVM Express(NVMe)(登録商標)、Ethernet(登録商標)、NVMe over Fabrics(NVMeOF)等を使用し得る。
ホスト2として機能するサーバコンピュータの典型例としては、データセンター内のサーバコンピュータ(以下、サーバと称する)が挙げられる。
ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク51を介して複数のエンドユーザ端末(クライアント)61に接続されてもよい。ホスト2は、これらエンドユーザ端末61に対して様々なサービスを提供することができる。
ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム稼働プラットフォームを各クライアント(各エンドユーザ端末61)に提供するプラットホーム・アズ・ア・サービス(PaaS)、(2)仮想サーバのようなインフラストラクチャを各クライアント(各エンドユーザ端末61)に提供するインフラストラクチャ・アズ・ア・サービス(IaaS)、等がある。
複数の仮想マシンが、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。ホスト(サーバ)2上で走るこれら仮想マシンの各々は、対応する幾つかのクライアント(エンドユーザ端末61)に各種サービスを提供するように構成された仮想サーバとして機能することができる。
ホスト(サーバ)2は、フラッシュアレイを構成する複数のフラッシュストレージデバイス3を管理するストレージ管理機能と、エンドユーザ端末61それぞれに対してストレージアクセスを含む様々なサービスを提供するフロントエンド機能とを含む。
フラッシュストレージデバイス3は、NAND型フラッシュメモリのような不揮発性メモリを含む。一つのフラッシュストレージデバイス3は、不揮発性メモリ内の複数のブロックから割り当てられた複数の書き込み先ブロックを管理する。書き込み先ブロックとは、データが書き込まれるべきブロックを意味する。
フラッシュストレージデバイス3によって管理される複数の書き込み先ブロックは、ホスト(サーバ)2を利用する複数のクライアントによってそれぞれ使用される。あるクライアントに対応するデータはある一つ以上の書き込み先ブロックに書き込まれ、他のクライアントに対応するデータは他の一つ以上の書き込み先ブロックに書き込まれる。
もし一つのフラッシュストレージデバイス3のみがホスト(サーバ)2に接続されているならば、ホスト(サーバ)2を利用するクライアントの総数と同数またはそれ以上のブロックが書き込み先ブロックとして割り当てられる。
一方、複数のフラッシュストレージデバイス3、例えば、8台のフラッシュストレージデバイス3がホスト(サーバ)2に接続されており、ホスト2がこれら8台のフラッシュストレージデバイス3に同数のクライアントを均等に割り当てたならば、各フラッシュストレージデバイス3においては、クライアントの総数の1/8の数のブロックが書き込み先ブロックとして割り当てられてもよい。
NAND型フラッシュメモリの多くはメモリセル当たりに複数ビットのデータを書き込むように構成されており、書き込み先ブロック毎に、この書き込み先ブロックに書き込まれるべき複数ページ分のデータを保持しておくことが必要である。
したがって、同時に利用可能な複数の書き込み先ブロックがフラッシュストレージデバイス3に存在する環境においては、これら書き込み先ブロックの数と同数のライトバッファを用意することが必要となる。換言すれば、クライアントの数と同数のライトバッファを用意することが必要となる。
また、現代のNAND型フラッシュメモリにおいては、プログラムディスターブを削減するために、NAND型フラッシュメモリに複数ページ分の同じデータを複数回転送するという複数段階の書き込み動作が適用されるケースがある。この複数段階の書き込み動作は、少なくとも第1段階の書き込み動作と第2段階の書き込み動作とを含む。
第1段階の書き込み動作では、複数ページ分のデータがNAND型フラッシュメモリに転送され、NAND型フラッシュメモリ内のある書き込み先ブロック内の同じワード線に接続された複数のメモリセルに書き込まれる。第2段階の書き込み動作では、この複数ページ分のデータがNAND型フラッシュメモリに再び転送され、この書き込み先ブロック内のこれら複数のメモリセルに書き込まれる。このように、同じデータを複数回転送することを伴う複数段階の書き込み動作の典型例としては、フォギー・ファイン書き込み動作が挙げられる。
通常、フォギー・ファイン書き込み動作のような複数段階の書き込み動作では、ワード線間の干渉に起因するプログラムディスターブを削減するために、データ書き込み動作は複数のワード線を往復しながら実行される。
例えば、3つのワード線を往復するフォギー・ファイン書き込み動作では、複数ページ分の第1のライトデータがNAND型フラッシュメモリに転送され、そして第1のライトデータが最初の物理ページ(最初のワード線に接続された複数のメモリセル)に書き込まれる(フォギー書き込み動作)。次に、複数ページ分の第2のライトデータがNAND型フラッシュメモリに転送され、そして第2のライトデータが次の物理ページ(次のワード線に接続された複数のメモリセル)に書き込まれる(フォギー書き込み動作)。次に、複数ページ分の第3のライトデータがNAND型フラッシュメモリに転送され、そして第3のライトデータがさらに次の物理ページ(さらに次のワード線に接続された複数のメモリセル)に書き込まれる(フォギー書き込み動作)。そして、書き込み対象の物理ページが最初の物理ページ(最初のワード線に接続された複数のメモリセル)に戻され、複数ページ分の上述の第1のライトデータがNAND型フラッシュメモリに再び転送され、そしてこの第1のライトデータが最初の物理ページ(最初のワード線に接続された複数のメモリセル)に書き込まれる(ファイン書き込み動作)。
したがって、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を実行するケースにおいては、書き込み先ブロック毎に、一つのメモリセルに書き込まれるべきビットの数と、往復するワード線の数との積によって表されるページ数分のデータをライトバッファに保持することが必要とされる。
さらに、実際には、より高いデータ書き込み速度を得るために、複数のブロックにデータが並列に書き込まれるケースが多い。この場合、各ライトバッファに保持することが必要なデータの量は、さらに増加する。
よって、フラッシュストレージデバイス3が複数のクライアントによって共有されるケースにおいては、クライアント毎に、つまり書き込み先ブロック毎にライトバッファを用意し、且つ各ライトバッファに多数のページ数分のデータを保持することが必要とされる。
しかし、通常、フラッシュストレージデバイス3内のランダムアクセスメモリの容量は限られているので、各々が十分な容量を有する十分な数のライトバッファをフラッシュストレージデバイス3内のランダムアクセスメモリ上に用意することは困難な場合がある。
また、たとえフラッシュストレージデバイス3に大容量のランダムアクセスメモリを設けたとしても、フラッシュストレージデバイス3を共有するクライアントの数が少ない場合には、この大容量のランダムアクセスメモリが無駄になる結果となる。
このため、本実施形態では、ホスト2のメモリ上の所定の記憶領域が、複数の書き込み先ブロックにそれぞれ対応する複数のライトバッファとして利用される。複数の書き込み先ブロックは複数のクライアントにそれぞれ対応しているので、これら複数のライトバッファはこれら複数のクライアントにそれぞれ対応する。
ホスト2のメモリ上に用意されるライトバッファの数は、書き込み先ブロックの数、つまりクライアントの数と同数である。ホスト2においては、あるクライアントからのライトデータは、このクライアントに対応するライトバッファに蓄積される。また、別のクライアントからのライトデータは、この別のクライアントに対応する別のライトバッファに蓄積される。
通常、フラッシュストレージデバイス3が管理可能な最大メモリ容量は4Gバイト程度であるのに対し、ホスト2が管理可能な最大メモリ容量は数テラバイトに及ぶ。したがって、ホスト2側のライトバッファを使用するライトバッファリングは、フラッシュストレージデバイス3側のライトバッファを使用するライトバッファリングに比べ、ホスト2を利用するクライアントの数を容易に増やすことを可能にする。
しかし、現代のNAND型フラッシュメモリの多くにおいては、プログラムディスターブを低減するために、上述したように、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を行うことが要求される。この場合、NAND型フラッシュメモリに同じデータを複数回転送することが必要になるので、もしホスト側のライトバッファのみを使用する構成が利用されたならば、ホスト2からフラッシュストレージデバイス3に同じデータを複数回転送することが必要とされる。これにより、ホスト2からフラッシュストレージデバイス3に転送することが必要なデータ量、つまりホスト2とフラッシュストレージデバイス3との間のデータトラフィックが増大し、この結果、I/O性能が低下される可能性がある。
そこで、本実施形態では、フラッシュストレージデバイス3においては、複数の書き込み先ブロック間で共有されるライトバッファ(共有デバイス側ライトバッファ)が用意される。そして、フラッシュストレージデバイス3内に設けられているコントローラは、ホスト2からライト要求を受信する度に、ホスト側の複数のライトバッファのいずれかに格納されているライトデータをホスト2から受信し、受信したライトデータをフラッシュストレージデバイス3内の共有デバイス側ライトバッファに格納する。つまり、ライトデータが書き込まれるべき書き込み先ブロックとは関係なく、どのライトデータもこの共有デバイス側ライトバッファに格納される。
フラッシュストレージデバイス3のコントローラは、フォギー・ファイン書き込み動作のような複数段階の書き込み動作によって、ライトデータをNAND型フラッシュメモリに書き込む。複数段階の書き込み動作は、少なくとも、フォギー書き込み動作のような第1段階の書き込み動作とファイン書き込み動作のような第2段階の書き込み動作とを含む。フォギー書き込み動作は各メモリセルの閾値分布を荒く設定する書き込み動作であり、ファイン書き込み動作は各メモリセルの閾値分布を調整する書き込み動作である。さらに、フォギー書き込み動作とファイン書き込み動作との間に、中間の書き込み動作が実行されてもよい。
フラッシュストレージデバイス3のコントローラは、複数の書き込み先ブロック内のある書き込み先ブロックに書き込むべき複数ページ分のライトデータ(第1のライトデータ)を共有デバイス側ライトバッファから取得し、フォギー書き込み動作のような第1段階の書き込み動作によって第1のライトデータをこの書き込み先ブロックに書き込む。
共有デバイス側ライトバッファにホスト2からのライトデータを効率よく蓄積できるようにするため、共有デバイス側ライトバッファに空き領域がない状態でホスト2から新たなライトデータを受信した場合には、フラッシュストレージデバイス3のコントローラは、フォギー書き込み動作のような第1段階の書き込み動作が終了している共有デバイス側ライトバッファ内のライトデータ(フォギーステートのライトデータ)を破棄して、新たなライトデータを格納可能な空き領域を共有デバイス側ライトバッファに確保する。例えば、共有デバイス側ライトバッファ全体が多数のフォギーステートのライトデータで満たされている状態でホスト2から新たなライトデータを受信した場合には、フラッシュストレージデバイス3のコントローラは、これらフォギーステートのライトデータの中から破棄すべき特定のライトデータを選択し、この選択したライトデータを破棄する。これにより、制限された容量を有する共有デバイス側ライトバッファに複数のクライアントに対応する多くの量のライトデータを効率よく蓄積することができる。
そして、フラッシュストレージデバイス3は、第1のライトデータのファイン書き込み動作のような第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有デバイス側ライトバッファに存在しない場合には、第1のライトデータを取得するための要求(転送要求)をホスト2に送信することによってホスト2から第1のライトデータを取得する。
共有デバイス側ライトバッファはある限られた容量を有しているが、ホスト2を利用するクライアントの数がある一定数以下であるならば、第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有デバイス側ライトバッファに存在する確率(ヒット率)は比較的高い。したがって、同じライトデータをホスト2からフラッシュストレージデバイス3に複数回転送すること無く、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を実行することができる。これにより、ホスト2とフラッシュストレージデバイス3との間のデータトラフィックを削減できるので、データ書き込みの度に同じライトデータをホスト2からフラッシュストレージデバイス3に複数回転送する場合に比し、フラッシュストレージデバイス3のI/O性能を向上することができる。
ホスト2を利用するクライアントの数が増えるにつれて、共有デバイス側ライトバッファのヒット率は低下する。しかし、第1のライトデータが共有デバイス側ライトバッファに存在しない場合(ミス)には、フラッシュストレージデバイス3のコントローラは、転送要求をホスト2に送信することによって第1のライトデータをホスト2から取得する。したがって、クライアントの数が増加しても、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を正常に実行することができる。
よって、フラッシュストレージデバイス3は、フラッシュストレージデバイス3を共有するクライアントの数の増加に柔軟に対応でき且つホスト2とフラッシュストレージデバイス3との間のデータトラフィックを削減することができる。
図2は、ホスト2に設けられる複数のライトバッファ(ホスト側ライトバッファ)とフラッシュストレージデバイス3に設けられる共有ライトバッファ(共有デバイス側ライトバッファ)との関係を示す。
ホスト(サーバ)2においては、複数のエンドユーザ(複数のクライアント)にそれぞれ対応する複数の仮想マシン401が実行される。ハイパースケーラ型のデータセンターにおいては、多数のクライアント、例えば、数百から千程度のクライアントがホスト(サーバ)2を利用する場合がある。これらクライアントはテナントとも称される。
ホスト(サーバ)2はクライアント(テナント)毎に独立したサービスを提供する。図2においては、クライアント#0、クライアント#1、クライアント#2、…、クライアント#m−1がホスト(サーバ)2を利用している場合が例示されている。
各仮想マシン401においては、対応するクライアント(テナント)によって使用される、オペレーティングシステム402およびユーザアプリケーション403が実行される。
また、ホスト(サーバ)2においては、複数のクライアントにそれぞれ対応する複数のI/Oサービス404が実行される。これらI/Oサービス404には、ブロックI/Oサービス、キー・バリュー・ストアサービス、他の様々なI/Oサービスが含まれてもよい。各I/Oサービス404は、データを識別するためのタグそれぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するアドレス変換テーブルであるルックアップテーブル(LUT)404Aを含む。ここで、タグは、論理アドレス空間上の位置を指定する論理アドレス(例えば、論理ブロックアドレス:LBA)であってもよいし、キー・バリュー・ストアのキーであってもよい。
例えば、LBAベースのブロックI/Oサービスにおいては、論理アドレス(LBA)それぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するLUTが使用されてもよい。
また、キー・バリュー・ストアサービスにおいては、キーそれぞれとこれらキーに対応するデータが格納されているフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングを管理するLUTが使用されてもよい。このLUTにおいては、タグと、このタグによって識別されるデータが格納されている物理アドレスと、このデータのデータ長との対応関係が管理されてもよい。
これら各LUT404Aは、ユーザアプリケーション403からのタグ(例えばLBA)それぞれをフラッシュストレージデバイス3用のLBAそれぞれに変換するのではなく、ユーザアプリケーション403からのタグ(例えばLBA)それぞれをフラッシュストレージデバイス3の物理アドレスそれぞれに変換する。
また、ホスト(サーバ)2においては、複数のクライアント(複数のテナント)#0、#1、#2、…、#m−1にそれぞれ対応する複数のホスト側ライトバッファ(#0、#1、#2、…、#m−1)405が設けられる。これらホスト側ライトバッファ405はホスト(サーバ)2のメモリ上に設けられる。
各ホスト側ライトバッファ405は、対応するクライアントからのライトデータを一時的に保持するために使用される。例えば、クライアント(テナント)#0のライトデータはホスト側ライトバッファ#0に格納され、クライアント(テナント)#1のライトデータはホスト側ライトバッファ#1に格納され、クライアント(テナント)#2のライトデータはホスト側ライトバッファ#2に格納され、同様に、クライアント(テナント)#m−1のライトデータはホスト側ライトバッファ#m−1に格納される。
ホスト(サーバ)2からフラッシュストレージデバイス3へのコマンドの送信およびフラッシュストレージデバイス3からホスト(サーバ)2へのコマンド完了のレスポンス等の返送は、複数のクライアントにそれぞれ対応する複数のI/Oキュー500を介して実行される。
フラッシュストレージデバイス3のコントローラは、フラッシュストレージデバイス3を共有する複数のクライアント(複数のテナント)#0、#1、#2、…、#m−1にそれぞれ対応する複数の書き込み先ブロック(フラッシュブロック#0、#1、#2、…、#m−1)602を管理する。また、フラッシュストレージデバイス3においては、複数の書き込み先ブロック(フラッシュブロック)602によって共有される共有デバイス側ライトバッファ601が設けられている。共有デバイス側ライトバッファ601は、複数の書き込み先ブロック(フラッシュブロック#0、#1、#2、…、#m−1)602のいずれかに書き込まれるべきライトデータを一時的に格納するために使用される。換言すれば、どのクライアントからのライトデータも共有デバイス側ライトバッファ601に格納される。
図3は、共有デバイス側ライトバッファ601を使用してフラッシュストレージデバイス3によって実行される、各書き込み先ブロックへのデータ書き込み動作を示す。
ここでは、フラッシュストレージデバイス3においては、各書き込み先ブロックへのデータ書き込みが上述のフォギー・ファイン書き込み動作によって実行される場合を想定する。
フォギー・ファイン書き込み動作をサポートできるようにするために、各ホスト側ライトバッファ405は十分な容量を有することが必要とされる。
例えば、ページサイズ=16Kバイト、NAND型フラッシュメモリチップ当たりのプレーン数=2、往復するワード線数=3、メモリセル当たりに書き込まれるビット数=4(QLC)、並列アクセスされるNAND型フラッシュメモリチップの数=32の場合には、各ホスト側ライトバッファ405の容量は、12Mバイト(=16Kバイト×2×3×4×32)となる。ホスト側ライトバッファ405の数はクライアント(テナント)の数と同数であるので、これらホスト側ライトバッファ405の総容量は、12Mバイトとクライアント(テナント)数との積で表される。例えば、クライアント(テナント)の数が1000であるならば、これらホスト側ライトバッファ405の総容量は12Gバイトとなる。
クライアント(テナント)#0に対応するユーザアプリケーションよって書き込みが要求されたライトデータはホスト側ライトバッファ(#0)405に格納され、クライアント(テナント)#1に対応するユーザアプリケーションよって書き込みが要求されたライトデータはホスト側ライトバッファ(#1)405に格納され、同様に、クライアント(テナント)#m−1に対応するユーザアプリケーションよって書き込みが要求されたライトデータはホスト側ライトバッファ(#m−1)405に格納される。
これら各ホスト側ライトバッファ(#m−1)405は一種のキャッシュとしても利用される。したがって、あるクライアントからのリード要求によって指定されたデータがこのクライアントに対応するホスト側ライトバッファ405に存在する場合には、このデータがこのホスト側ライトバッファ405から読み出されてもよい。
フラッシュストレージデバイス3に設けられる共有デバイス側ライトバッファ601の容量は、実現すべき書き込み速度に応じて決定される。例えば、共有デバイス側ライトバッファ601の容量は、2Mバイトから3Gバイトの範囲内の任意の容量であってもよいし、2Mバイトから4Gバイトの範囲内の任意の容量であってもよい。
フラッシュストレージデバイス3においては、ホスト2から受信されるどのライトデータも共有デバイス側ライトバッファ601に格納される。
フラッシュストレージデバイス3のコントローラは、フォギー・ファイン書き込み動作によって各書き込み先ブロック602にライトデータを書き込む。
ホスト2から受信される各ライト要求は、ライトデータが書き込まれるべき書き込み先ブロックを指定するブロックアドレスを含む。フラッシュストレージデバイス3のコントローラは、複数の書き込み先ブロック602内のある書き込み先ブロック(例えば、ここでは、書き込み先ブロック#0とする)を指定する一つ以上のライト要求に関連付けられた複数ページ分のライトデータ(第1のライトデータ)をフォギー書き込み動作用のライトデータ(フォギーデータ)として共有デバイス側ライトバッファ601から取得する。例えば、ページサイズが16Kバイトで、一つのメモリセルに4ビットのデータを書き込む場合には、フラッシュストレージデバイス3のコントローラは、書き込み先ブロック#0に書き込むべき64Kバイトのライトデータをフォギーデータとして共有デバイス側ライトバッファ601から取得する。この64Kバイトのライトデータは、書き込み先ブロック#0を指定するブロックアドレスを含む一つのライト要求に関連付けられたライトデータであってもよい。あるいは、書き込み先ブロック#0を指定するブロックアドレスを含む各ライト要求に関連付けられたライトデータのサイズが64Kバイトよりも小さい場合には、この64Kバイトのライトデータは、幾つかのライト要求にそれぞれ関連付けられている複数のライトデータ部の集合であってもよい。
そして、フラッシュストレージデバイス3のコントローラは、フォギー書き込み動作によってこの第1のライトデータ(フォギーデータ)を書き込み先ブロック#0内の書き込み対象の一つのワード線に接続された複数のメモリセル(複数の第1のメモリセル)に書き込む。
同様にして、フラッシュストレージデバイス3のコントローラは、この書き込み先ブロック#0内の後続の一つ以上のワード線に対するフォギー書き込み動作を実行する。
そして、第1のライトデータのファイン書き込み動作を実行すべき時点において、フラッシュストレージデバイス3のコントローラは、共有デバイス側ライトバッファ601に対して第1のライトデータを要求する。共有デバイス側ライトバッファ601に第1のライトデータが存在しているならば(ヒット)、フラッシュストレージデバイス3のコントローラは、この第1のライトデータをファイン書き込み動作用のライトデータ(ファインデータ)として共有デバイス側ライトバッファ601から取得する。そして、フラッシュストレージデバイス3のコントローラは、ファイン書き込み動作によってこの第1のライトデータ(ファインデータ)を書き込み先ブロック#0内の上述の複数の第1のメモリセルに書き込む。
他の各書き込み先ブロック602に関しても、同様にしてフォギー・ファイン書き込み動作が実行される。
フラッシュストレージデバイス3のコントローラは、例えば、書き込み先ブロック#m−1を指定する一つ以上のライト要求に関連付けられた複数ページ分のライトデータ(第2のライトデータ)をフォギー書き込み動作用のライトデータ(フォギーデータ)として共有デバイス側ライトバッファ601から取得する。そして、フラッシュストレージデバイス3のコントローラは、フォギー書き込み動作によってこの第2のライトデータ(フォギーデータ)を書き込み先ブロック#m−1内の書き込み対象の一つのワード線に接続された複数のメモリセル(複数の第2のメモリセル)に書き込む。
同様にして、フラッシュストレージデバイス3のコントローラは、この書き込み先ブロック#m−1内の後続の一つ以上のワード線に対するフォギー書き込み動作を実行する。
そして、第2のライトデータのファイン書き込み動作を実行すべき時点において、フラッシュストレージデバイス3のコントローラは、共有デバイス側ライトバッファ601に対して第2のライトデータを要求する。本実施形態では、共有デバイス側ライトバッファ601に空き領域がない状態でホスト2から新たなライトデータが受信された場合には、フォギー書き込み動作が終了している共有デバイス側ライトバッファ601内のあるライトデータが破棄され、これによって新たなライトデータを格納するための空き領域が共有デバイス側ライトバッファ601に確保される。新たなライトデータはこの確保された空き領域に格納される。換言すれば、フォギー書き込み動作が終了している共有デバイス側ライトバッファ601内のあるライトデータが共有デバイス側ライトバッファ601から追い出され、このライトデータが格納されていた共有デバイス側ライトバッファ601内の領域の内容がこの新たなライトデータで置き換えられる。
したがって、ホスト2を利用するクライアントの数が比較的多い場合には、あるワード線に対してファイン書き込み動作を実行すべき時点において、このワード線に対するフォギー書き込み動作で使用したライトデータが既に破棄されている可能性がある。
もし上述の第2のライトデータが共有デバイス側ライトバッファ601に存在しない場ならば(ミス)、フラッシュストレージデバイス3のコントローラは、第2のライトデータを取得するための要求(転送要求)をホスト2に送信することによって、ホスト2のホスト側ライトバッファ#m−1から第2のライトデータをファイン書き込み動作用のライトデータ(ファィンデータ)として取得する。この場合、第2のライトデータが、ホスト2のホスト側ライトバッファ#m−1からフラッシュストレージデバイス3に転送される。この転送された第2のライトデータは、共有デバイス側ライトバッファ601に格納されてもよい。
そして、フラッシュストレージデバイス3のコントローラは、ファイン書き込み動作によってこの第2のライトデータ(ファインデータ)を書き込み先ブロック#m−1内の上述の複数の第2のメモリセルに書き込む。
ここで、フォギー・ファイン書き込み動作をサポートするために必要な各ホスト側ライトバッファ405の容量が12Mバイトであり、1000個のクライアント(テナント)に対応する1000個のホスト側ライトバッファ405の総容量が12Gバイトである場合を想定する。共有デバイス側ライトバッファ601の容量(総容量)が3Gバイトに設定されている場合においては、クライアント(テナント)の数が250個以下であれば、同じライトデータをホスト2からフラッシュストレージデバイス3に複数回転送すること無く、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を実行することができる。
ホスト2を利用するクライアントの数が増えるにつれて、共有デバイス側ライトバッファ601のヒット率は徐々に低下する。しかし、ファイン書き込み動作で使用すべきライトデータが共有デバイス側ライトバッファ601に存在しない場合(ミス)には、フラッシュストレージデバイス3は、転送要求をホスト2に送信することによってこのライトデータをホスト2から取得する。したがって、クライアント(テナント)の数が1000まで増加したとしても、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を正常に実行することができる。
また、1000個のクライアント(テナント)が存在する場合であっても、例えば、8台のフラッシュストレージデバイス3がホスト(サーバ)2に接続されており、且つホスト2がこれら8台のフラッシュストレージデバイス3に同数のクライアントを均等に割り当てたならば、各フラッシュストレージデバイス3は、1.5Gバイトの共有デバイス側ライトバッファ601を備えるだけで、同じライトデータをホスト2からフラッシュストレージデバイス3に複数回転送すること無く、フォギー・ファイン書き込み動作のような複数段階の書き込み動作を実行することができる。
図4は、3つのワード線を往復する場合のフォギー・ファイン書き込み動作を示す。
ここでは、フラッシュストレージデバイス3内のNAND型フラッシュメモリが、メモリセル当たりに4ビットのデータを格納するQLC−フラッシュである場合を想定する。あるNAND型フラッシュメモリ内の一つの特定の書き込み先ブロックに対するフォギー・ファイン書き込み動作は以下のように実行される。
(1)まず、4ページ(P0〜P3)分のライトデータがこのNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0〜P3)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(2)次いで、次の4ページ(P4〜P7)分のライトデータがこのNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(3)次いで、次の4ページ(P8〜P11)分のライトデータがこのNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8〜P11)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(4)ワード線WL2に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL0に戻り、ワード線WL0に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL0に対するフォギー書き込み動作で使用された4ページ(P0〜P3)分のライトデータと同じ4ページ(P0〜P3)分のライトデータがNAND型フラッシュメモリに再び転送され、この書き込み先ブロック内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0〜P3)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP0〜P3に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP0〜P3からデータを読み出すことが可能となる。
(5)次いで、次の4ページ(P12〜P15)分のライトデータがNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL3に接続された複数のメモリセルに、これら4ページ(P12〜P15)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(6)ワード線WL3に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL1に戻り、ワード線WL1に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL1に対するフォギー書き込み動作で使用された4ページ(P4〜P7)分のライトデータと同じ4ページ(P4〜P7)分のライトデータがNAND型フラッシュメモリに再び転送され、この書き込み先ブロック内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP4〜P7に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP4〜P7からデータを読み出すことが可能となる。
図5は、2つのワード線を往復する場合のフォギー・ファイン書き込み動作を示す。
ここでは、フラッシュストレージデバイス3内のNAND型フラッシュメモリが、メモリセル当たりに4ビットのデータを格納するQLC−フラッシュである場合を想定する。あるNAND型フラッシュメモリ内の一つの特定の書き込み先ブロックに対するフォギー・ファイン書き込み動作は以下のように実行される。
(1)まず、4ページ(P0〜P3)分のライトデータがこのNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL0に接続された複数のメモリセルに、これら4ページ(P0〜P3)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(2)次いで、次の4ページ(P4〜P7)分のライトデータがこのNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(3)ワード線WL1に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL0に戻り、ワード線WL0に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL0に対するフォギー書き込み動作で使用された4ページ(P0〜P3)分のライトデータと同じ4ページ(P0〜P3)分のライトデータがNAND型フラッシュメモリに再び転送され、この書き込み先ブロック内のワード線WL0に接続された複数のメモリセルにこれら4ページ(P0〜P3)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP0〜P3に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP0〜P3からデータを読み出すことが可能となる。
(4)次いで、次の4ページ(P8〜P11)分のライトデータがNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL2に接続された複数のメモリセルに、これら4ページ(P8〜P11)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
(5)ワード線WL2に接続された複数のメモリセルに対するフォギー書き込み動作が終了すると、書き込み対象のワード線はワード線WL1に戻り、ワード線WL1に接続された複数のメモリセルに対するファイン書き込み動作の実行が可能となる。そして、ワード線WL1に対するフォギー書き込み動作で使用された4ページ(P4〜P7)分のライトデータと同じ4ページ(P4〜P7)分のライトデータがNAND型フラッシュメモリに再び転送され、この書き込み先ブロック内のワード線WL1に接続された複数のメモリセルに、これら4ページ(P4〜P7)分のライトデータを書き込むためのファイン書き込み動作が実行される。これにより、ページP4〜P7に対するフォギー・ファイン書き込み動作が終了する。この結果、ページP4〜P7からデータを読み出すことが可能となる。
(6)次いで、次の4ページ(P12〜P15)分のライトデータがNAND型フラッシュメモリに転送され、この書き込み先ブロック内のワード線WL3に接続された複数のメモリセルに、これら4ページ(P12〜P15)分のライトデータを書き込むためのフォギー書き込み動作が実行される。
図6は、本実施形態のフラッシュストレージデバイス3とホスト2とを含む計算機システム1の構成例を示す。
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0〜BLKm−1を含む。ブロックBLK0〜BLKm−1の各々は多数のページによって編成される。消去動作はブロックの単位で実行され、データ書き込み動作およびデータ読み込み動作はページの単位で実行される。
NAND型フラッシュメモリ5は、一つのメモリセルに複数のビットを格納可能な多値−フラッシュメモリ、例えば、一つのメモリセルに4ビットを格納可能なクワドレベルセル(QLC)−フラッシュメモリによって実現されていてもよい。この場合、NAND型フラッシュメモリ5は、一つのメモリセルに4ビットを書き込むための書き込みモード(QLCモード)と、一つのメモリセルに1ビットを書き込むための書き込みモード(シングルレベルセル(SLC)モード)とをブロック毎に選択的に使用することができる。QLCモードが適用されるブロックはQLCブロックとして参照され、SLCモードが適用されるブロックはSLCブロックとして参照される。上述の複数段階の書き込み動作は、QLCブロックへのデータの書き込みのために使用される。なお、NAND型フラッシュメモリ5はQLC−フラッシュメモリに限らず、一つのメモリセルに2ビットを格納可能なマルチレベルセル(MLC)−フラッシュメモリ、または一つのメモリセルに3ビットを格納可能なトリプルレベルセル(TLC)−フラッシュメモリによって実現されてよい。上述の複数段階の書き込み動作は、MLCモードが適用されるブロック(MLCブロック)へのデータの書き込みのために使用されてもよいし、TLCモードが適用されるブロック(TLCブロック)へのデータの書き込みのために使用されてもよい。
コントローラ4は、ToggleNANDインタフェース、オープンNANDフラッシュインタフェース(ONFI)のようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。
NAND型フラッシュメモリ5は、図7に示すように、複数のNAND型フラッシュメモリチップ(NAND型フラッシュメモリダイ)を含んでいてもよい。個々のNAND型フラッシュメモリチップは独立して動作可能である。このため、NAND型フラッシュメモリチップは、並列動作可能な単位として機能する。図7においては、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として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図7の構成例においては、16チャンネルと、2つのバンクを使用したバンクインタリーブとによって、最大32個のNAND型フラッシュメモリチップを並列動作させることができる。
消去動作は、一つのブロック(物理ブロック)の単位で実行されてみよいし、並列動作可能な複数のブロックの集合を含むスーパーブロックの単位で実行されてもよい。一つのスーパーブロックは、これに限定されないが、NAND型フラッシュメモリチップ#1〜#32から一つずつ選択される計32個のブロックを含んでいてもよい。なお、NAND型フラッシュメモリチップ#1〜#32の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリチップ#1〜#32の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリチップ#1〜#32に対応する64個のプレーンから一つずつ選択される計64個のブロックを含んでいてもよい。
図8には、32個のブロック(ここでは、NAND型フラッシュメモリチップ#1内のブロックBLK2、NAND型フラッシュメモリチップ#2内のブロックBLK3、NAND型フラッシュメモリチップ#3内のブロックBLK7、NAND型フラッシュメモリチップ#4内のブロックBLK4、NAND型フラッシュメモリチップ#5内のブロックBLK6、…NAND型フラッシュメモリチップ#32内のブロックBLK3)を含む一つのスーパーブロック(SB)が例示されている。
図2、図3で説明した各書き込み先ブロック602としては、並列アクセス可能な複数のブロックの集合であるスーパーブロックが用いられてもよい。
次に、図6のコントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14等を含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続される。
このホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってもよい。あるいは、フラッシュストレージデバイス3がEthernet(登録商標)を介してホスト2に接続される構成においては、ホストインタフェース11は、NVMe over Fabrics(NVMeOF)コントローラであってもよい。フラッシュストレージデバイス3がEthernet(登録商標)を介してホスト2に接続される構成は、必要に応じて、フラッシュストレージデバイス3の数を容易に増やすことを可能にする。さらに、ホスト2の数を容易に増やすことも可能である。
ホストインタフェース11は、ホスト2から様々な要求(コマンド)を受信する。これら要求(コマンド)には、ライト要求(ライトコマンド)、リード要求(リードコマンド)、他の様々な要求(コマンド)が含まれる。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をDRAM6にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ4内の図示しないSRAM上にロードされてもよい。このCPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、ライト制御部21、およびリード制御部22として機能することができる。これらライト制御部21およびリード制御部22もコントローラ4内の専用ハードウェアによって実現されてもよい。
ライト制御部21は、複数ページ分のデータをNAND型フラッシュメモリ5に転送することを伴う第1段階の書き込み動作とこのデータをNAND型フラッシュメモリ5に転送することを伴う第2段階の書き込み動作とを少なくとも含む複数段階の書き込み動作によってこのデータをNAND型フラッシュメモリ5の特定の書き込み先ブロック内の同じワード線に接続された複数のメモリセルに書き込むように構成されている。この複数段階の書き込み動作の典型例には、上述したように、フォギー・ファイン書き込み動作がある。
ライト制御部21は、NAND型フラッシュメモリ5内に含まれる複数のブロックから割り当てられた複数の書き込み先ブロックを管理する。ライト制御部21は、複数の書き込み先ブロックのいずれか一つを指定するブロックアドレスを含むライト要求をホスト2から受信する。ライト要求をホスト2から受信する度に、ライト制御部21は、ホスト2のメモリ33上の複数のホスト側ライトバッファ405のいずれかに格納されているライトデータをホスト2から受信し、受信したライトデータをDRAM6上の共有デバイス側ライトバッファ601に格納する。
ライト制御部21は、ある書き込み先ブロック(第1の書き込み先ブロック)を指定する一つ以上のライト要求に関連付けられた複数ページ分のライトデータ(第1のライトデータ)を共有デバイス側ライトバッファ601から取得する。そして、ライト制御部21は、フォギー書き込み動作のような第1段階の書き込み動作によってこの第1のライトデータを第1の書き込み先ブロック内の書き込み対象の一つのワード線に接続された複数のメモリセル(複数の第1のメモリセル)に書き込む。
第1のライトデータの第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有デバイス側ライトバッファ601に存在する場合には、ライト制御部21は、第1のライトデータを共有デバイス側ライトバッファ601から取得し、第2段階の書き込み動作によって第1のライトデータを第1の書き込み先ブロックの上述の複数の第1のメモリセルに書き込む。
第1のライトデータの第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有デバイス側ライトバッファ601に存在しない場合には、ライト制御部21は、第1のライトデータを取得するための要求(転送要求)をホスト2に送信することによってホスト2から第1のライトデータを取得し、第2段階の書き込み動作によって第1のライトデータを第1の書き込み先ブロックの上述の複数の第1のメモリセルに書き込む。
また、ライト制御部21は、共有デバイス側ライトバッファ601内のあるライトデータを破棄することによって空き領域を共有デバイス側ライトバッファ601に確保する。
例えば、ライト制御部21は、あるライトデータのファイン書き込み動作が終了した場合、つまりこのライトデータの複数段階の書き込み動作が終了した場合、このライトデータを共有デバイス側ライトバッファ601から破棄する。
また、共有デバイス側ライトバッファ601に空き領域がない状態でホスト2から新たなライトデータを受信した場合、ライト制御部21は、フォギー書き込み動作が終了している共有デバイス側ライトバッファ601内のライトデータの中から破棄すべきライトデータを選択し、選択したライトデータを共有デバイス側ライトバッファ601から破棄する。
破棄すべきライトデータを選択するためのアルゴリズムとしては、フォギー書き込み動作のような第1段階の書き込み動作が終了している共有デバイス側ライトバッファ601内のライトデータのうちで、最も古いライトデータを選択するファースト・イン・ファースト・アウトを使用することができる。
データ書き込み量の少ないクライアント(テナント)に対応する書き込み先ブロックへのデータ書き込み動作の進行速度に比べ、データ書き込み量の多いクライアント(テナント)に対応する書き込み先ブロックへのデータ書き込み動作の進行速度は速くなる傾向がある。このため、フォギー書き込み動作のような第1段階の書き込み動作が終了している共有デバイス側ライトバッファ601内のライトデータのうちで最も古いライトデータを破棄するという方法を使用することにより、転送要求がホスト2に送信される頻度を低減することが可能となる。
なお、フォギー書き込み動作のような第1段階の書き込み動作が終了している共有デバイス側ライトバッファ601内のライトデータの中から破棄すべきライトデータを選択するためのアルゴリズムは、ファースト・イン・ファースト・アウトに限定されず、LRU、ランダムのような他のアルゴリズムを使用してもよい。
リード制御部22は、ブロックアドレスおよびページアドレスを指定するリード要求(リードコマンド)をホスト2から受信し、このブロックアドレスおよびページアドレスによって指定されるNAND型フラッシュメモリ5内の物理記憶位置に格納されているデータを読み出し、この読み出したデータをホスト2に返送する。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたメモリ制御回路である。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、共有デバイス側ライトバッファ601として使用される。
ホスト2は、サーバのようなコンピュータであり、そのハードウェアコンポーネントとして、ホストストレージコントローラ31、プロセッサ32、およびメモリ33を備える。これらホストストレージコントローラ31、プロセッサ32、メモリ33は、バス30を介して相互接続されていてもよい。メモリ33はDRAMのようなランダムアクセスメモリであり、メモリ33の記憶領域の一部は、複数のホスト側ライトバッファ405として使用される。
ホスト2は、さらに、ネットワークインターフェース34を備えていてもよい。
図9は、ホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理の例を示す。
ここでは、ある書き込み先ブロックのあるワード線に対するファイン書き込み動作を実行すべきタイミングで、このワード線に接続された複数のメモリセルに書き込むべきライトデータが共有デバイス側ライトバッファ601に存在している場合を想定する。
(1)あるクライアント(テナント)に対応するユーザアプリケーションがデータの書き込みを要求すると、このデータ(ライトデータ)がこのクライアント(テナント)に対応するホスト側ライトバッファ405に蓄積される。そして、ホスト2からフラッシュストレージデバイス3にライト要求が送信される。ライト要求は、例えば、ブロックアドレスとタグとを含んでいてもよい。上述したように、タグはライトデータを識別するための情報(例えば、LBA、キー・バリュー・ストアのキー、等)である。また、ライト要求は、ライトデータが格納されているホスト側ライトバッファ405内の位置を示す記憶位置情報を含んでいてもよい。ライト要求は、例えば、ホスト側ライトバッファ405に所定量のライトデータが蓄積されるといった条件が満たされたときにホスト2からフラッシュストレージデバイス3に送信されてもよい。フラッシュストレージデバイス3のコントローラ4においては、ライト制御部21がホスト2からのライト要求を受信した場合、ライト制御部21は、ホスト側ライトバッファ405に格納されているライトデータをホスト2から受信する。このライトデータはライト要求と一緒にホスト2からフラッシュストレージデバイス3に送信されてもよいし、ライト制御部21が、ライトデータを取得するための要求(転送要求)をホスト2に送信することによってこのライトデータをホスト2から取得してもよい。この転送要求は、ホスト側ライトバッファ405内の位置を示す上述の記憶位置情報を含む。
(2)(3)フラッシュストレージデバイス3のコントローラ4においては、ライト制御部21は、受信したライト要求内のブロックアドレスによって指定される書き込み先ブロック内の書き込み対象のページのページアドレスを決定する。ライト制御部21は、この書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601から取得する。ライト制御部21は、フォギー書き込み動作によってこの複数ページ分の第1のライトデータをNANDインタフェース13を介してこの書き込み先ブロックに書き込む。この場合、ライト制御部21は、この複数ページ分の第1のライトデータ(フォギーデータ)を、この書き込み先ブロックを含むNAND型フラッシュメモリチップに転送し、第1のライトデータをこの書き込み先ブロック内の書き込み対象のワード線に接続された複数の第1のメモリセルに書き込む(フォギー書き込み動作)。
(4)後続の1以上のワード線に対するフォギー書き込み動作の終了によって、この第1のライトデータのファイン書き込みを実行すべき時点になると、ライト制御部21は、複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601に要求する。この複数ページ分の第1のライトデータが共有デバイス側ライトバッファ601に存在する場合、ライト制御部21は、複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601から取得する。ライト制御部21は、ファイン書き込み動作によってこの複数ページ分の第1のライトデータをNANDインタフェース13を介してこの書き込み先ブロックに書き込む。この場合、ライト制御部21は、この複数ページ分の第1のライトデータ(ファインデータ)を、この書き込み先ブロックを含むNAND型フラッシュメモリチップに転送し、第1のライトデータをこの書き込み先ブロック内の上述の複数の第1のメモリセルに書き込む(ファイン書き込み動作)。
(5)ライト制御部21は、ファイン書き込み動作が終了した複数ページ分の第1のライトデータ(ファインステートのライトデータ)を共有デバイス側ライトバッファ601から破棄し、これによって共有デバイス側ライトバッファ601の空き領域を増やす。
図10は、ホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理の別の例を示す。
ここでは、ある書き込み先ブロックのあるワード線に対するファイン書き込み動作を実行すべきタイミングで、このワード線に接続された複数のメモリセルに書き込むべきライトデータが共有デバイス側ライトバッファ601に存在しない場合を想定する。
(1’)あるクライアント(テナント)に対応するユーザアプリケーションがデータの書き込みを要求すると、このデータ(ライトデータ)がこのクライアント(テナント)に対応するホスト側ライトバッファ405に蓄積される。そして、ホスト2からフラッシュストレージデバイス3にライト要求が送信される。ライト要求は、例えば、ブロックアドレスとタグとを含んでいてもよい。上述したように、タグはライトデータを識別するための情報(例えば、LBA、キー・バリュー・ストアのキー、等)である。また、ライト要求は、ライトデータが格納されているホスト側ライトバッファ405内の位置を示す記憶位置情報を含んでいてもよい。ライト要求は、例えば、ホスト側ライトバッファ405に所定量のライトデータが蓄積されるといった条件が満たされたときにホスト2からフラッシュストレージデバイス3に送信されてもよい。フラッシュストレージデバイス3のコントローラ4においては、ライト制御部21がホスト2からのライト要求を受信した場合、ライト制御部21は、ホスト側ライトバッファ405に格納されているライトデータをホスト2から受信する。このライトデータはライト要求と一緒にホスト2からフラッシュストレージデバイス3に送信されてもよいし、ライト制御部21が、ライトデータを取得するための要求(転送要求)をホスト2に送信することによってこのライトデータをホスト2から取得してもよい。この転送要求は、ホスト側ライトバッファ405内の位置を示す上述の記憶位置情報を含む。
(2’)(3’)フラッシュストレージデバイス3のコントローラ4においては、ライト制御部21は、受信したライト要求内のブロックアドレスによって指定される書き込み先ブロック内の書き込み対象のページのページアドレスを決定する。ライト制御部21は、この書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601から取得する。ライト制御部21は、フォギー書き込み動作によってこの複数ページ分の第1のライトデータをNANDインタフェース13を介してこの書き込み先ブロックに書き込む。この場合、ライト制御部21は、この複数ページ分の第1のライトデータ(フォギーデータ)を、この書き込み先ブロックを含むNAND型フラッシュメモリチップに転送し、第1のライトデータをこの書き込み先ブロック内の書き込み対象のワード線に接続された複数の第1のメモリセルに書き込む(フォギー書き込み動作)。
(4’)後続の1以上のワード線に対するフォギー書き込み動作の終了によって、この第1のライトデータのファイン書き込みを実行すべき時点になると、ライト制御部21は、複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601に要求する。この複数ページ分の第1のライトデータが共有デバイス側ライトバッファ601に存在しない場合、ライト制御部21は、第1のライトデータを取得するための要求(転送要求)をホスト2に送信することによってホスト2から第1のライトデータを取得する。この転送要求は、ホスト側ライトバッファ405内の位置を示す上述の記憶位置情報を含む。取得された第1のライトデータは共有デバイス側ライトバッファ601に格納されてもよい。
(5’)ライト制御部21は、ファイン書き込み動作によってこの複数ページ分の第1のライトデータをNANDインタフェース13を介してこの書き込み先ブロックに書き込む。この場合、ライト制御部21は、この複数ページ分の第1のライトデータ(ファインデータ)を、この書き込み先ブロックを含むNAND型フラッシュメモリチップに転送し、第1のライトデータをこの書き込み先ブロック内の上述の複数の第1のメモリセルに書き込む(ファイン書き込み動作)。
(6’)ライト制御部21は、ファイン書き込み動作が終了した複数ページ分の第1のライトデータ(ファインステートのライトデータ)を共有デバイス側ライトバッファ601から破棄し、これによって共有デバイス側ライトバッファ601の空き領域を増やす。
図11は、共有デバイス側ライトバッファ601を使用してフラッシュストレージデバイス3のコントローラ4によって実行されるフォギー・ファイン書き込み動作と共有デバイス側ライトバッファ601のデータを破棄する処理とを示す。
図11においては、図示の簡単化のために、共有デバイス側ライトバッファ601が、領域101〜109を含む場合が例示されている。これら領域101〜109の各々は、例えば4ページ分のサイズを有している。また、図11においては、3つのワード線WLを往復しながらフォギー・ファイン書き込み動作が実行される場合を想定する。
共有デバイス側ライトバッファ601の領域101、102にそれぞれ格納されたライトデータD1、D2が書き込み先ブロックBLK11に書き込むべきライトデータである場合、コントローラ4は、(1)4ページ分のライトデータD1をフォギー書き込み動作によって書き込み先ブロックBLK11のページP0−P3(ワード線WL0に接続された複数のメモリセル)に書き込み、そして、(2)4ページ分のライトデータD2をフォギー書き込み動作によって書き込み先ブロックBLK11のページP4−P7(ワード線WL1に接続された複数のメモリセル)に書き込む。
共有デバイス側ライトバッファ601の領域103、104、105に格納されたライトデータD11、D12、D13が書き込み先ブロックBLK101に書き込むべきライトデータである場合、コントローラ4は、(3)4ページ分のライトデータD11をフォギー書き込み動作によって書き込み先ブロックBLK101のページP0−P3(ワード線WL0に接続された複数のメモリセル)に書き込み、(4)4ページ分のライトデータD12をフォギー書き込み動作によって書き込み先ブロックBLK101のページP4−P7(ワード線WL1に接続された複数のメモリセル)に書き込み、(5)4ページ分のライトデータD13をフォギー書き込み動作によって書き込み先ブロックBLK101のページP8−P11(ワード線WL2に接続された複数のメモリセル)に書き込む。
ワード線WL2に対する4ページ分のライトデータD13のフォギー書き込み動作が終了した後、コントローラ4は、(6)4ページ分のライトデータD11をファイン書き込み動作によって書き込み先ブロックBLK101のページP0−P3(ワード線WL0に接続された複数のメモリセル)に書き込む。ライトデータD11のファイン書き込み動作が終了すると、このライトデータD11のステートはフォギーステートからファインステートに変わる。そして、コントローラ4は、(7)ファイン書き込み動作が終了したこのライトデータD11(ファインステートのライトデータ)を共有デバイス側ライトバッファ601から破棄して領域103を空き領域にする。
図12は、共有デバイス側ライトバッファ601に空き領域がない状態でホスト2から新たなライトデータを受信した場合によって実行される、ファイン書き込み動作が終了した共有デバイス側ライトバッファ601内のライトデータを破棄する処理を示す。
図12の上部は、共有デバイス側ライトバッファ601全体が、フォギー書き込み動作が終了しているフォギーステートのライトデータ(D21〜D23、D31〜D33、D41〜D43)で満たされており、共有デバイス側ライトバッファ601に空き領域がない状態を示している。
この状態でホスト2から新たなライトデータを受信した場合、フラッシュストレージデバイス3のコントローラ4は、図12の中部に示すように、フォギー書き込み動作が終了しているライトデータ(フォギーステートのライトデータ)の中から最も古いライトデータ(ここではライトデータD11)を破棄すべきライトデータとして選択し、この最も古いライトデータ(ここではライトデータD11)を共有デバイス側ライトバッファ601から破棄する。
そして、フラッシュストレージデバイス3のコントローラ4は、図12の下部に示すように、ライトデータD11を破棄することによって空き領域となった領域101に、受信された新たなライトデータ(ここではライトデータD51)を格納する。
図13のフローチャートは、フラッシュストレージデバイス3のコントローラ4によって実行されるデータ書き込み処理の手順を示す。
ステップS101では、コントローラ4は、複数の書き込み先ブロック602のいずれか一つを指定するブロックアドレスを含むライト要求をホスト2から受信する。コントローラ4がホスト2からライト要求を受信する度、コントローラ4は、複数のホスト側ライトバッファ405のいずれかに格納されているライトデータをホスト2から受信し、受信したライトデータを共有デバイス側ライトバッファ601に格納する。
ステップS102では、コントローラ4は、ある書き込み先ブロックを指定する一つ以上のライト要求に関連付けられた複数ページ分の第1のライトデータを共有デバイス側ライトバッファ601から取得する。
ステップS103、S104では、コントローラ4は、取得した複数ページ分の第1のライトデータをNAND型フラッシュメモリ5に転送し、フォギー書き込み動作によってこの第1のライトデータをこの書き込み先ブロック内の書き込み対象の一つのワード線に接続された複数の第1のメモリセルに書き込む。
ステップS105では、この第1のライトデータのファイン書き込み動作を開始すべきタイミングにおいて、コントローラ4は、この第1のライトデータが、共有デバイス側ライトバッファ601に存在するか否かを判定する。
この第1のライトデータが共有デバイス側ライトバッファ601に存在するならば(ステップS106のYES)、ステップS107で、コントローラ4は、第1のライトデータを共有デバイス側ライトバッファ601から取得する。ステップS108、S109で、コントローラ4は、取得した複数ページ分の第1のライトデータをNAND型フラッシュメモリ5に転送し、ファイン書き込み動作によってこの第1のライトデータをこの書き込み先ブロック内の上述の複数の第1のメモリセルに書き込む。そして、ステップS110で、コントローラ4は、第1のライトデータを共有デバイス側ライトバッファ601から破棄する。
この第1のライトデータが共有デバイス側ライトバッファ601に存在しないならば(ステップS106のNO)、ステップS111で、コントローラ4は、転送要求をホスト2に送信し、ホスト側ライトバッファ405からフラッシュストレージデバイス3に転送されるこの第1のライトデータを共有デバイス側ライトバッファ601に格納する。そして、コントローラ4は、ステップS107〜S110の処理を実行する。
図14は、ホスト2が書き込み先ブロックを指定し且つフラッシュストレージデバイス3が書き込み先ページを決定するデータ書き込み動作と、ホスト2がブロックアドレスとページアドレスとを指定するデータ読み出し動作とを説明するための図である。
ホスト2のI/Oサービス404は、ブロック割り当て要求およびライト要求をフラッシュストレージデバイス3に送出する。
フラッシュストレージデバイス3のコントローラ4は、ブロック割り当て部701、およびページ割り当て部702を含む。ブロック割り当て部701、およびページ割り当て部702は、図6で説明したライト制御部21に含まれていてもよい。
データ書き込み動作は以下の手順で実行される。
(1)ホスト2のI/Oサービス404がフラッシュストレージデバイス3にデータ(ライトデータ)を書き込むことが必要な時、I/Oサービス404は、書き込み先ブロックとして使用可能なフリーブロックを割り当てるようにフラッシュストレージデバイス3に要求してもよい。ブロック割り当て部701がこの要求(ブロック割り当て要求)を受信した時、ブロック割り当て部701は、フリーブロック群の一つのフリーブロックを書き込み先ブロックとしてホスト2に割り当て、割り当てられた書き込み先ブロックのブロックアドレス(BLK#)をホスト2に通知する。
(2)ホスト2のI/Oサービス404は、割り当てられた書き込み先ブロックを指定するブロックアドレスと、ライトデータを識別するタグと、このライトデータのデータ長とを含むライト要求を、フラッシュストレージデバイス3に送信する。また、I/Oサービス404は、ライトデータをフラッシュストレージデバイス3に転送する。
(3)ページ割り当て部702がライト要求を受信した時、ページ割り当て部702は、ライト要求によって指定されたブロックアドレスを有するブロック(書き込み先ブロック)内の書き込み先ページを示すページアドレスを決定する。コントローラ4は、ライトデータを共有デバイス側ライトバッファ601から取得し、書き込み先ブロック内のこの決定された書き込み先ページにこのライトデータを書き込む。
(4)コントローラ4は、この書き込み先ページを示すページアドレスを、ライト要求に対するレスポンスとしてホスト2に通知する。あるいは、コントローラ4は、ライト要求に含まれているタグと、ライト要求に含まれているブロックアドレスと、決定されたページアドレスとの組を、ライト要求に対するレスポンスとしてホスト2に通知してもよい。ホスト2においては、ライトデータが書き込まれた物理記憶位置を示す物理アドレス(ブロックアドレス、ページアドレス)が、このライトデータのタグにマッピングされるように、LUT404Aが更新される。
データリード動作は以下の手順で実行される。
(1)’ホスト2がフラッシュストレージデバイス3からデータをリードすることが必要な時、ホスト2は、LUT404Aを参照することによって、リードすべきデータのタグに対応する物理アドレス(ブロックアドレス、ページアドレス)をLUT404Aから取得する。
(2)’ホスト2は、取得されたブロックアドレスおよびページアドレスを指定するリード要求をフラッシュストレージデバイス3に送出する。フラッシュストレージデバイス3のコントローラ4がこのリード要求をホスト2から受信した時、コントローラ4は、ブロックアドレスおよびページアドレスに基づいて、データを、リード対象のブロック内のリード対象の物理記憶位置からリードする。
図15は、フラッシュストレージデバイス3に適用されるブロックアロケートコマンドを示す。
ブロックアロケートコマンドは、フラッシュストレージデバイス3に書き込み先ブロック(フリーブロック)の割り当てを要求するコマンド(ブロック割り当て要求)である。ホスト2は、ブロックアロケートコマンドをフラッシュストレージデバイス3に送信することによって、書き込み先ブロックを割り当てるようにフラッシュストレージデバイス3に要求し、これによってブロックアドレス(割り当てられた書き込み先ブロックのブロックアドレス)を取得することができる。
図16は、ブロックアロケートコマンドに対するレスポンスを示す。
ブロックアロケートコマンドをホスト2から受信した時、フラッシュストレージデバイス3は、フリーブロックリストから、ホスト2に割り当てるべきフリーブロックを選択し、選択したフリーブロックを書き込み先ブロックとして割り当て、そしてこの書き込み先ブロックのブロックアドレスを含むレスポンスをホスト2に返す。
図17は、フラッシュストレージデバイス3に適用されるライトコマンドを示す。
ライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、コマンドID、ブロックアドレス、タグ、長さ、等を含んでもよい。
コマンドIDはこのコマンドがライトコマンドであることを示すID(コマンドコード)であり、ライトコマンドにはライトコマンド用のコマンドIDが含まれる。
ブロックアドレスは、データが書き込まれるべき書き込み先ブロックを指定する物理アドレスである。
タグは、書き込まれるべきライトデータを識別するための識別子である。このタグは、上述したように、LBAのような論理アドレスであってもよいし、キー・バリュー・ストアのキーであってもよい。タグがLBAのような論理アドレスである場合には、このライトコマンドに含まれる論理アドレス(開始LBA)は、ライトデータが書き込まれるべき、論理アドレス空間内の論理位置(最初の論理位置)を示す。
長さは、書き込まれるべきライトデータの長さを示す。
ライトコマンドは、さらに、ライトデータが格納されているホスト側ライトバッファ405内の位置を示す記憶位置情報を含んでいてもよい。
ホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンドによって指定されたブロックアドレスを有する書き込み先ブロック内の書き込み先位置(書き込み先ページ)を決定する。この書き込み先ページは、ページ書き込み順序の制約およびバッドページ等を考慮して決定される。そして、コントローラ4は、ホスト2からのデータを、この書き込み先ブロック内のこの書き込み先位置(書き込み先ページ)に書き込む。
図18は、図17のライトコマンドに対するレスポンスを示す。
このレスポンスは、ページアドレス、長さを含む。ページアドレスは、データが書き込まれた、書き込み先ブロック内の物理記憶位置を示す物理アドレスである。この物理アドレスは、ブロック内オフセット(つまりページアドレスとページ内オフセットとの組)によって表されてもよい。長さは、書き込まれたデータの長さを示す。
あるいは、このレスポンスは、ページアドレス(ブロック内オフセット)および長さだけでなく、タグ、ブロックアドレスをさらに含んでいてもよい。タグは、図17のライトコマンドに含まれていたタグである。ブロックアドレスは、図17のライトコマンドに含まれていたブロックアドレスである。
図19は、フラッシュストレージデバイス3に適用されるリードコマンドを示す。
リードコマンドは、フラッシュストレージデバイス3にデータの読み出しを要求するコマンドである。このリードコマンドは、コマンドID、タグ、ブロックアドレス、ページアドレス、長さを含む。
コマンドIDはこのコマンドがリードコマンドであることを示すID(コマンドコード)であり、リードコマンドにはリードコマンド用のコマンドIDが含まれる。
ブロックアドレスは、リードすべきデータが格納されているブロックを指定する。ページアドレスは、リードすべきデータが格納されているページを指定する。このページアドレスは、リードすべきデータが格納されているブロック内の物理記憶位置を示すブロック内オフセット(つまりページアドレスとページ内オフセットとの組)によって表されてもよい。長さは、リードすべきデータの長さを示す。
図20は、1以上のSLC−ブロックによって実現される共有デバイス側ライトバッファ601の例を示す。
これまでの説明では、DRAM6のようなランダムアクセスメモリによって共有デバイス側ライトバッファ601が実現される場合が想定されていた。しかし、メモリセル当たりに1ビットのデータが書き込まれるSLC−ブロックのデータ書き込み速度は、メモリセル当たりに複数ビットのデータが書き込まれるブロックのデータ書き込み速度よりも速いため、共有デバイス側ライトバッファ601は、図20に示すように、メモリセル当たりに1ビットのデータが書き込まれる一つ以上のSLC−ブロックによって実現されてもよい。この場合、各書き込み先ブロックは、メモリセル当たりに複数ビットのデータが書き込まれるブロック、例えば、メモリセル当たりに4ビットのデータが書き込まれるQLC−ブロックによって実現されてもよい。
以上説明したように、本実施形態によれば、ホスト2からライト要求が受信される度に、複数の書き込み先ブロック602にそれぞれ対応する複数のホスト側ライトバッファ405のいずれかに格納されているライトデータが、複数の書き込み先ブロック602間で共有される共有デバイス側ライトバッファ601に格納される。そして、複数の書き込み先ブロック602内の第1の書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータが共有デバイス側ライトバッファ601から取得され、フォギー書き込み動作のような第1段階の書き込み動作によって第1のライトデータが第1の書き込み先ブロックに書き込まれる。共有デバイス側ライトバッファ601に空き領域がない状態でホスト2からライトデータが受信された場合には、第1段階の書き込み動作が終了している共有デバイス側ライトバッファ601内のライトデータが破棄され、空き領域が共有デバイス側ライトバッファ601に確保される。第1のライトデータのファイン書き込み動作のような第2段階の書き込み動作を実行すべき時点において第1のライトデータが共有デバイス側ライトバッファ601に存在しない場合には、第1のライトデータを取得するための要求がホスト2に送信することによってホスト2から第1のライトデータが取得される。
したがって、第1のライトデータが共有デバイス側ライトバッファ601に存在しない場合にのみ、同じライトデータをホスト2からフラッシュストレージデバイス3に再度転送すればよいので、書き込み先ブックの増加つまりフラッシュストレージデバイス3を共有するクライアントの数の増加に柔軟に対応でき、且つホスト2とフラッシュストレージデバイス3との間のデータトラフィックを削減することができる。
なお、本実施形態では、共有デバイス側ライトバッファ601を使用してフォギー・ファイン書き込み動作のような複数段階の書き込み動作を実行する場合を説明したが、本実施形態の構成および書き込み処理の手順は、複数段階の書き込み動作のみならず、複数ページ分のデータをNAND型フラッシュメモリ5に1回だけ転送するフルシーケンス書き込み動作にも適用することができる。
また、本実施形態では、フラッシュストレージデバイス3に適用されるライトコマンドとして、書き込み先ブロックを指定するブロックアドレスを含むライト要求(ライトコマンド)を説明したが、ブロックアドレスとページアドレスの双方を含むライト要求(ライトコマンド)が使用されてもよい。
また、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…フラッシュストレージデバイス3…コントローラ、5…NAND型フラッシュメモリ、21…ライト制御部、405…ホスト側ライトバッファ、601…共有デバイス側ライトバッファ。

Claims (15)

  1. ホストに接続可能なメモリシステムであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されたコントローラであって、少なくとも第1段階の書き込み動作と第2段階の書き込み動作とを含み、前記不揮発性メモリに複数ページ分の同じデータを複数回転送する複数段階の書き込み動作を実行するように構成されたコントローラとを具備し、
    前記コントローラは、
    前記ホストからライト要求を受信する度に、前記複数のブロックから割り当てられた複数の書き込み先ブロックにそれぞれ対応する前記ホストのメモリ上の複数のライトバッファのいずれかに格納されているライトデータを前記ホストから受信し、前記受信したライトデータを前記複数の書き込み先ブロック間で共有される共有ライトバッファに格納し、
    前記複数の書き込み先ブロック内の第1の書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータを前記共有ライトバッファから取得し、前記第1段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックに書き込み、
    前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータを破棄して前記空き領域を前記共有ライトバッファに確保し、
    前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在しない場合、前記第1のライトデータを取得するための要求を前記ホストに送信することによって前記ホストから前記第1のライトデータを取得するように構成されている、メモリシステム。
  2. 前記コントローラは、前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在する場合、前記第1のライトデータを前記共有ライトバッファから取得し、前記第2段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックに書き込むように構成されている請求項1記載のメモリシステム。
  3. 前記コントローラは、前記第1のライトデータの前記複数段階の書き込み動作が終了した場合、前記第1のライトデータを前記共有ライトバッファから破棄するように構成されている請求項2記載のメモリシステム。
  4. 前記コントローラは、前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータのうちで最も古いライトデータを破棄するように構成されている請求項1記載のメモリシステム。
  5. 前記受信されるライト要求の各々は書き込み先ブロックを指定するブロックアドレスを含み、前記コントローラは、前記第1の書き込み先ブロックを指定する一つ以上のライト要求に関連付けられた複数ページ分のライトデータを前記第1のライトデータとして前記共有ライトバッファから取得するように構成されている請求項1記載のメモリシステム。
  6. 前記共有ライトバッファは、前記メモリシステムに含まれるランダムアクセスメモリによって実現される請求項1記載のメモリシステム。
  7. 前記複数の書き込み先ブロックの各々はメモリセル当たりに複数ビットのデータが書き込まれるブロックによって実現され、前記共有ライトバッファはメモリセル当たりに1ビットのデータが書き込まれる一つ以上のシングルレベルセル−ブロックによって実現される請求項1記載のメモリシステム。
  8. ホストに接続可能なメモリシステムであって、
    複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、複数ページ分のデータを前記不揮発性メモリに転送することを伴う第1段階の書き込み動作と前記データを前記不揮発性メモリに転送することを伴う第2段階の書き込み動作とを少なくとも含む複数段階の書き込み動作によって前記データを前記不揮発性メモリの書き込み先ブロック内の同じワード線に接続された複数のメモリセルに書き込むように構成されたコントローラとを具備し、
    前記コントローラは、
    前記複数の書き込み先ブロックのいずれか一つを指定するブロックアドレスを含むライト要求を前記ホストから受信する度に、前記複数のブロックから割り当てられた複数の書き込み先ブロックにそれぞれ対応する前記ホストのメモリ上の複数のライトバッファのいずれかに格納されているライトデータを前記ホストから受信し、前記受信したライトデータを前記複数の書き込み先ブロック間で共有される共有ライトバッファに格納し、
    前記複数の書き込み先ブロック内の第1の書き込み先ブロックを指定する一つ以上のライト要求に関連付けられた複数ページ分の第1のライトデータを前記共有ライトバッファから取得し、前記第1段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロック内の書き込み対象の一つのワード線に接続された複数の第1のメモリセルに書き込み、
    前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータを破棄して前記空き領域を前記共有ライトバッファに確保し、
    前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在する場合には、前記第1のライトデータを前記共有ライトバッファから取得し、前記第2段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックの前記複数の第1のメモリセルに書き込み、
    前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在しない場合には、前記第1のライトデータを取得するための要求を前記ホストに送信することによって前記ホストから前記第1のライトデータを取得し、前記第2段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックの前記複数の第1のメモリセルに書き込むように構成されている、メモリシステム。
  9. 前記コントローラは、前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータのうちで最も古いライトデータを破棄するように構成されている請求項8記載のメモリシステム。
  10. 前記コントローラは、前記第1のライトデータの前記複数段階の書き込み動作が終了した場合、前記第1のライトデータを前記共有ライトバッファから破棄するように構成されている請求項8記載のメモリシステム。
  11. 複数のブロックを含む不揮発性メモリを制御し、少なくとも第1段階の書き込み動作と第2段階の書き込み動作とを含み、不揮発性メモリに複数ページ分の同じデータを複数回転送する複数段階の書き込み動作を実行する制御方法であって、
    ホストからライト要求を受信する度に、前記複数のブロックから割り当てられた複数の書き込み先ブロックにそれぞれ対応する前記ホストのメモリ上の複数のライトバッファのいずれかに格納されているライトデータを前記ホストから受信し、前記受信したライトデータを前記複数の書き込み先ブロック間で共有される共有ライトバッファに格納することと、
    前記複数の書き込み先ブロック内の第1の書き込み先ブロックに書き込むべき複数ページ分の第1のライトデータを前記共有ライトバッファから取得し、前記第1段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックに書き込むことと、
    前記共有ライトバッファに空き領域がない状態で前記ホストからライトデータを受信した場合、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータを破棄して前記空き領域を前記共有ライトバッファに確保することと、
    前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在しない場合、前記第1のライトデータを取得するための要求を前記ホストに送信することによって前記ホストから前記第1のライトデータを取得することとを具備する制御方法。
  12. 前記第1のライトデータの前記第2段階の書き込み動作を実行すべき時点において前記第1のライトデータが前記共有ライトバッファに存在する場合、前記第1のライトデータを前記共有ライトバッファから取得し、前記第2段階の書き込み動作によって前記第1のライトデータを前記第1の書き込み先ブロックに書き込むことをさらに具備する請求項11記載の制御方法。
  13. 前記第1のライトデータの前記複数段階の書き込み動作が終了した場合、前記第1のライトデータを前記共有ライトバッファから破棄することをさらに具備する請求項11記載の制御方法。
  14. 前記破棄されるライトデータは、前記第1段階の書き込み動作が終了している前記共有ライトバッファ内のライトデータのうちで最も古いライトデータである請求項11記載の制御方法。
  15. 前記受信されるライト要求の各々は書き込み先ブロックを指定するブロックアドレスを含み、
    前記第1の書き込み先ブロックを指定する一つ以上のライト要求に関連付けられた複数ページ分のライトデータが前記第1のライトデータとして前記共有ライトバッファから取得される請求項11記載の制御方法。
JP2018078422A 2018-04-16 2018-04-16 メモリシステムおよび制御方法 Active JP7051546B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2018078422A JP7051546B2 (ja) 2018-04-16 2018-04-16 メモリシステムおよび制御方法
US16/126,038 US11003385B2 (en) 2018-04-16 2018-09-10 Memory system and method for controlling nonvolatile memory in which write data are stored in a shared device side write buffer shared by a plurality of write destination blocks
TW107143109A TWI703494B (zh) 2018-04-16 2018-11-30 記憶體系統及非揮發性記憶體之控制方法
CN201811532009.1A CN110389718B (zh) 2018-04-16 2018-12-14 存储系统及非易失性存储器的控制方法
CN202310413148.7A CN116414314A (zh) 2018-04-16 2018-12-14 存储系统及非易失性存储器的控制方法
US17/223,094 US11669269B2 (en) 2018-04-16 2021-04-06 Memory system and method for controlling nonvolatile memory
US18/122,760 US11868653B2 (en) 2018-04-16 2023-03-17 Memory system and method for controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018078422A JP7051546B2 (ja) 2018-04-16 2018-04-16 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2019185596A true JP2019185596A (ja) 2019-10-24
JP7051546B2 JP7051546B2 (ja) 2022-04-11

Family

ID=68161773

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018078422A Active JP7051546B2 (ja) 2018-04-16 2018-04-16 メモリシステムおよび制御方法

Country Status (4)

Country Link
US (3) US11003385B2 (ja)
JP (1) JP7051546B2 (ja)
CN (2) CN110389718B (ja)
TW (1) TWI703494B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321231B2 (en) 2019-11-19 2022-05-03 Kioxia Corporation Memory system and method of controlling nonvolatile memory with a write buffer

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190135746A (ko) * 2018-05-29 2019-12-09 삼성전자주식회사 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
JP7346311B2 (ja) * 2020-01-16 2023-09-19 キオクシア株式会社 メモリシステム
US11137944B1 (en) 2020-03-13 2021-10-05 Western Digital Technologies, Inc. Combined QLC programming method
US11894075B2 (en) 2020-08-27 2024-02-06 Yangtze Memory Technologies Co. Ltd. Non-destructive mode cache programming in NAND flash memory devices
KR20230015967A (ko) * 2020-08-27 2023-01-31 양쯔 메모리 테크놀로지스 씨오., 엘티디. Nand 플래시 메모리 디바이스의 비파괴 모드 캐시 프로그래밍
TWI756810B (zh) * 2020-09-02 2022-03-01 瑞昱半導體股份有限公司 晶片與相關的晶片系統
JP2022143278A (ja) * 2021-03-17 2022-10-03 キオクシア株式会社 メモリシステム
US11507303B2 (en) * 2021-04-21 2022-11-22 Western Digital Technologies, Inc. User controlled data-in for lower and middle page in MLC-fine QLC memories
JP2022171208A (ja) 2021-04-30 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
KR20220169642A (ko) * 2021-06-21 2022-12-28 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
JP2023012773A (ja) 2021-07-14 2023-01-26 キオクシア株式会社 メモリシステムおよび制御方法
KR20230069642A (ko) * 2021-11-12 2023-05-19 에스케이하이닉스 주식회사 저장 장치 공유 시스템 및 그 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128660A (ja) * 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
JP2014182832A (ja) * 2013-03-15 2014-09-29 Samsung Electronics Co Ltd 不揮発性格納装置及びその運営体系イメージプログラム方法
US20170262228A1 (en) * 2016-03-08 2017-09-14 Kabushiki Kaisha Toshiba Storage system, information processing system and method for controlling nonvolatile memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5867429A (en) * 1997-11-19 1999-02-02 Sandisk Corporation High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates
TW463092B (en) * 1998-03-20 2001-11-11 Accton Technology Corp Quasi-pushout method with upper layer packet discarding discipline and packet communication system implementing the method
JP4303803B2 (ja) * 1998-04-22 2009-07-29 株式会社東芝 キャッシュフラッシュ装置
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
KR101518228B1 (ko) * 2007-03-07 2015-05-08 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리 및 캐시 페이지 카피를 위한 방법
US8144512B2 (en) * 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US8472280B2 (en) * 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
CN106796548B (zh) * 2014-09-06 2021-02-05 Neo半导体公司 非易失性存储器装置及其存储方法和编程方法
JP6270934B2 (ja) * 2015-12-14 2018-01-31 株式会社東芝 磁気メモリ
US20170286114A1 (en) * 2016-04-02 2017-10-05 Intel Corporation Processors, methods, and systems to allocate load and store buffers based on instruction type
JP7048289B2 (ja) * 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
JP6967959B2 (ja) * 2017-12-08 2021-11-17 キオクシア株式会社 メモリシステムおよび制御方法
JP7353934B2 (ja) * 2019-11-19 2023-10-02 キオクシア株式会社 メモリシステムおよび制御方法
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012128660A (ja) * 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
US20130191705A1 (en) * 2010-12-15 2013-07-25 Kabushiki Kaisha Toshiba Semiconductor storage device
JP2014182832A (ja) * 2013-03-15 2014-09-29 Samsung Electronics Co Ltd 不揮発性格納装置及びその運営体系イメージプログラム方法
US20170262228A1 (en) * 2016-03-08 2017-09-14 Kabushiki Kaisha Toshiba Storage system, information processing system and method for controlling nonvolatile memory
JP2017162068A (ja) * 2016-03-08 2017-09-14 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321231B2 (en) 2019-11-19 2022-05-03 Kioxia Corporation Memory system and method of controlling nonvolatile memory with a write buffer
US11663122B2 (en) 2019-11-19 2023-05-30 Kioxia Corporation Memory system and method of controlling nonvolatile memory

Also Published As

Publication number Publication date
CN110389718A (zh) 2019-10-29
US11868653B2 (en) 2024-01-09
TW201944229A (zh) 2019-11-16
US11003385B2 (en) 2021-05-11
TWI703494B (zh) 2020-09-01
US11669269B2 (en) 2023-06-06
CN110389718B (zh) 2023-04-11
JP7051546B2 (ja) 2022-04-11
CN116414314A (zh) 2023-07-11
US20230221886A1 (en) 2023-07-13
US20210223986A1 (en) 2021-07-22
US20190317691A1 (en) 2019-10-17

Similar Documents

Publication Publication Date Title
JP7051546B2 (ja) メモリシステムおよび制御方法
US20230315342A1 (en) Memory system and control method
TWI674502B (zh) 記憶體系統及控制方法
US20240061610A1 (en) Memory system and method for controlling nonvolatile memory
US11726707B2 (en) System and method of writing to nonvolatile memory using write buffers
JP2021033849A (ja) メモリシステムおよび制御方法
JP2020123038A (ja) メモリシステムおよび制御方法
JP2021033848A (ja) メモリシステムおよび制御方法
JP2021033847A (ja) メモリシステムおよび制御方法
JP2020123040A (ja) メモリシステムおよび制御方法
JP2023107418A (ja) ストレージデバイスおよびストレージシステム
JP7463598B2 (ja) メモリシステム
JP7281585B2 (ja) メモリシステム
JP7167295B2 (ja) メモリシステムおよび制御方法
JP2022179798A (ja) メモリシステムおよび制御方法
JP2022111330A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210318

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220216

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: 20220301

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220330

R151 Written notification of patent or utility model registration

Ref document number: 7051546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151