JP7234144B2 - Nandバッファを有するnandフラッシュストレージデバイス - Google Patents

Nandバッファを有するnandフラッシュストレージデバイス Download PDF

Info

Publication number
JP7234144B2
JP7234144B2 JP2019566261A JP2019566261A JP7234144B2 JP 7234144 B2 JP7234144 B2 JP 7234144B2 JP 2019566261 A JP2019566261 A JP 2019566261A JP 2019566261 A JP2019566261 A JP 2019566261A JP 7234144 B2 JP7234144 B2 JP 7234144B2
Authority
JP
Japan
Prior art keywords
chip
nand flash
write
future
designating
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
JP2019566261A
Other languages
English (en)
Other versions
JP2020524839A5 (ja
JP2020524839A (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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2020524839A publication Critical patent/JP2020524839A/ja
Publication of JP2020524839A5 publication Critical patent/JP2020524839A5/ja
Application granted granted Critical
Publication of JP7234144B2 publication Critical patent/JP7234144B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0658Controller construction 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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/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/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

関連出願
本願は、2017年11月17日に出願された「NANDバッファを有するNANDフラッシュ(登録商標)ストレージデバイス(NAND FLASH STORAGE DEVICE WITH NAND BUFFER)」と題される米国特許出願番号第15/816,447号の利益およびそれに対する優先権を主張し、米国特許出願番号第15/816,447号は、2017年6月23日に出願された「NANDバッファを有するNANDフラッシュストレージデバイス(NAND FLASH STORAGE DEVICE WITH NAND BUFFER)」と題される米国仮特許出願番号第62/524,016号の利益およびそれに対する優先権を主張し、これら両方の特許出願の全内容は引用によって本明細書に援用される。
背景
NANDフラッシュに基づくストレージデバイスは、優れた平均レイテンシを有する。しかし、「テイルレイテンシ」と称される最悪の場合のレイテンシがはるかに長いことがある。NANDフラッシュストレージデバイスにおいてより予測可能なレイテンシを提供することは、NANDフラッシュ技術のいくつかの用途、たとえばNANDフラッシュベースのストレージデバイスおよびスワップデバイスでは有益であり得る。スワップデバイスは、コンピューティングシステムにおいて、スワップ空間と称されることもある拡張メモリ空間としての役割を果たすことができる。スワップデバイスは、RAMの高速化とハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)などの代替メモリ/記憶媒体の低コスト化との間の兼ね合いを表し得る。NANDフラッシュに基づくSSDは、HDDよりも高速であるが、NANDフラッシュチップの動作の仕方により、テイルレイテンシが予測不可能であるおそれがある。
概要
少なくとも1つの局面は、NANDフラッシュストレージデバイスに向けられている。上記NANDフラッシュストレージデバイスは、複数のNANDフラッシュチップと、コントローラとを含む。上記コントローラは、入力/出力(I/O)バスを介してデータを受信するように構成される。上記コントローラは、各NANDフラッシュチップへの書込動作が時間的に重ならないように、上記受信したデータを上記複数のNANDフラッシュチップのうちの第1のNANDフラッシュチップおよび上記複数のNANDフラッシュチップのうちの第2のNANDフラッシュチップに連続的に書き込むように構成される。上記コントローラは、上記I/Oバスを介して読取コマンドを受信するように構成される。上記コントローラは、上記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない上記第1のNANDフラッシュチップまたは上記第2のNANDフラッシュチップのいずれかからデータを読み取るように構成される。
いくつかの実現例では、上記コントローラはさらに、上記第1のNANDフラッシュチップを二次書込チップとして指定し、上記第2のNANDフラッシュチップを将来的な二次書込チップとして指定し、第3のNANDフラッシュチップを一次書込チップとして指定し、第4のNANDフラッシュチップを将来的な一次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するように構成されてもよい。上記コントローラは、各チップへの書込動作が時間的に重ならないように、上記受信したデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むように構成されてもよい。上記コントローラは、有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするように構成されてもよい。上記コントローラは、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、上記第1のNANDフラッシュチップをリードオンリとして指定し、上記第2のNANDフラッシュチップを上記二次書込チップとして指定し、上記第3のNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第4のNANDフラッシュチップを上記一次書込チップとして指定するように構成されてもよい。
いくつかの実現例では、上記コントローラはさらに、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、第5のNANDフラッシュチップを上記将来的な一次書込チップとして指定するように構成されてもよい。上記コントローラは、各チップへの書込動作が時間的に重ならないように、上記I/Oバスを介して受信した第2のデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むように構成されてもよい。上記コントローラは、第2の有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするように構成されてもよい。上記コントローラは、上記第2の受信したデータの上記書き込みおよび上記第2の有効データの上記コピーに続いて、上記第2のNANDフラッシュチップをリードオンリとして指定し、上記第3のNANDフラッシュチップを上記二次書込チップとして指定し、上記第4のNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第5のNANDフラッシュチップを上記一次書込チップとして指定するように構成されてもよい。
いくつかの実現例では、上記コピー動作は、上記有効データおよび空き空間がそれぞれ、上記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーすることを含んでもよい。上記コピー動作は、上記有効データおよび上記空き空間がそれぞれ、上記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な二次書込チップから上記将来的な一次書込チップにコピーバックすることを含んでもよい。上記コピー動作は、上記空き空間が占める上記将来的な一次書込チップおよび上記将来的な二次書込チップの上記メモリ空間を消去することを含んでもよい。
いくつかの実現例では、上記書込動作および上記コピー動作は、重なり合う期間中に実行される。
少なくとも1つの局面は、NANDフラッシュストレージデバイスに向けられている。上記NANDフラッシュストレージデバイスは、複数のバッファNANDフラッシュチップと、複数のストレージNANDフラッシュチップと、コントローラとを含む。上記コントローラは、入力/出力(I/O)バスを介して入来データを受信するように構成される。上記コントローラは、各NANDフラッシュチップへの書込動作が時間的に重ならないように、上記受信した入来データを上記複数のストレージNANDフラッシュチップのうちの第1のバッファNANDフラッシュチップおよび上記複数のバッファNANDフラッシュチップのうちの第1のストレージNANDフラッシュチップに連続的に書き込むように構成される。上記コントローラは、上記I/Oバスを介して読取コマンドを受信するように構成される。上記コントローラは、上記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない上記第1のバッファNANDフラッシュチップまたは上記第1のストレージNANDフラッシュチップのいずれかからデータを読み取るように構成される。
いくつかの実現例では、上記コントローラは、上記第1のストレージNANDフラッシュチップを一次書込チップとして指定し、第2のストレージNANDフラッシュチップを将来的な一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを二次書込チップとして指定し、第2のバッファNANDフラッシュチップを将来的な二次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するように構成されてもよい。上記コントローラは、各チップへの書込動作が時間的に重ならないように、上記受信したデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むように構成されてもよい。上記コントローラは、有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするように構成されてもよい。上記コントローラは、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、上記第1のストレージNANDフラッシュチップをリードオンリとして指定し、上記第2のストレージNANDフラッシュチップを上記一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第2のバッファNANDフラッシュチップを上記二次書込チップとして指定するように構成されてもよい。
いくつかの実現例では、上記コントローラは、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、第3のストレージNANDフラッシュチップを上記将来的な一次書込チップとして指定するように構成されてもよい。上記コントローラは、各チップへの書込動作が時間的に重ならないように、上記I/Oバスを介して受信した第2のデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むように構成されてもよい。上記コントローラは、第2の有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするように構成されてもよい。上記コントローラは、上記第2の受信したデータの上記書き込みおよび上記第2の有効データの上記コピーに続いて、上記第2のストレージNANDフラッシュチップをリードオンリとして指定し、上記第3のストレージNANDフラッシュチップを上記一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを上記二次書込チップとして指定し、上記第2のバッファNANDフラッシュチップを上記将来的な二次書込チップとして指定するように構成されてもよい。
いくつかの実現例では、上記コピー動作は、上記有効データおよび空き空間がそれぞれ、上記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーすることを含んでもよい。上記コピー動作は、上記有効データおよび上記空き空間がそれぞれ、上記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な二次書込チップから上記将来的な一次書込チップにコピーバックすることと、上記空き空間が占める上記将来的な一次書込チップおよび上記将来的な二次書込チップの上記メモリ空間を消去することとを含んでもよい。
いくつかの実現例では、上記バッファNANDフラッシュチップは、シングルレベルセル(SLC)NANDフラッシュチップであってもよく、上記ストレージNANDフラッシュチップは、トリプルレベルセル(TLC)NANDフラッシュチップであってもよい。
少なくとも1つの局面は、NANDフラッシュストレージデバイスをバッファリングする方法に向けられている。上記方法は、入力/出力(I/O)バスを介してデータを受信するステップを含む。上記方法は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、上記受信したデータを複数のNANDフラッシュチップのうちの第1のNANDフラッシュチップおよび複数のNANDフラッシュチップのうちの第2のNANDフラッシュチップに連続的に書き込むステップを含む。上記方法は、上記I/Oバスを介して読取コマンドを受信するステップを含む。上記方法は、上記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない上記第1のNANDフラッシュチップまたは上記第2のNANDフラッシュチップのいずれかからデータを読み取るステップを含む。
いくつかの実現例では、上記方法は、上記第1のNANDフラッシュチップを二次書込チップとして指定し、上記第2のNANDフラッシュチップを将来的な二次書込チップとして指定し、第3のNANDフラッシュチップを一次書込チップとして指定し、第4のNANDフラッシュチップを将来的な一次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するステップを含んでもよい。上記方法は、各チップへの書込動作が時間的に重ならないように、上記受信したデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むステップを含んでもよい。上記方法は、有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするステップを含んでもよい。上記方法は、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、上記第1のNANDフラッシュチップをリードオンリとして指定し、上記第2のNANDフラッシュチップを上記二次書込チップとして指定し、上記第3のNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第4のNANDフラッシュチップを上記一次書込チップとして指定するステップを含んでもよい。
いくつかの実現例では、上記方法は、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、第5のNANDフラッシュチップを上記将来的な一次書込チップとして指定するステップを含んでもよい。上記方法は、各チップへの書込動作が時間的に重ならないように、上記I/Oバスを介して受信した第2のデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むステップを含んでもよい。上記方法は、第2の有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするステップを含んでもよい。上記方法は、上記第2の受信したデータの上記書き込みおよび上記第2の有効データの上記コピーに続いて、上記第2のNANDフラッシュチップをリードオンリとして指定し、上記第3のNANDフラッシュチップを上記二次書込チップとして指定し、上記第4のNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第5のNANDフラッシュチップを上記一次書込チップとして指定するステップを含んでもよい。
いくつかの実現例では、上記コピー動作は、上記有効データおよび空き空間がそれぞれ、上記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーすることを含んでもよい。上記コピー動作は、上記有効データおよび上記空き空間がそれぞれ、上記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な二次書込チップから上記将来的な一次書込チップにコピーバックすることを含んでもよい。上記コピー動作は、上記空き空間が占める上記将来的な一次書込チップおよび上記将来的な二次書込チップの上記メモリ空間を消去することを含んでもよい。
いくつかの実現例では、上記書込動作および上記コピー動作は、重なり合う期間中に実行される。
少なくとも1つの局面は、NANDフラッシュストレージデバイスをバッファリングする方法に向けられている。上記方法は、入力/出力(I/O)バスを介してデータを受信するステップを含む。上記方法は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、上記受信した入来データを複数のストレージNANDフラッシュチップのうちの第1のバッファNANDフラッシュチップおよび複数のバッファNANDフラッシュチップのうちの第1のストレージNANDフラッシュチップに連続的に書き込むステップを含む。上記方法は、上記I/Oバスを介して読取コマンドを受信するステップを含む。上記方法は、上記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない上記第1のバッファNANDフラッシュチップまたは上記第1のストレージNANDフラッシュチップのいずれかからデータを読み取るステップを含む。
いくつかの実現例では、上記方法は、上記第1のストレージNANDフラッシュチップを一次書込チップとして指定し、第2のストレージNANDフラッシュチップを将来的な一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを二次書込チップとして指定し、第2のバッファNANDフラッシュチップを将来的な二次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するステップを含む。上記方法は、各チップへの書込動作が時間的に重ならないように、上記受信したデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むステップを含む。上記方法は、有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするステップを含む。上記方法は、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、上記第1のストレージNANDフラッシュチップをリードオンリとして指定し、上記第2のストレージNANDフラッシュチップを上記一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを上記将来的な二次書込チップとして指定し、上記第2のバッファNANDフラッシュチップを上記二次書込チップとして指定するステップを含む。
いくつかの実現例では、上記方法は、上記受信したデータの上記書き込みおよび上記有効データの上記コピーに続いて、第3のストレージNANDフラッシュチップを上記将来的な一次書込チップとして指定するステップを含む。上記方法は、各チップへの書込動作が時間的に重ならないように、上記I/Oバスを介して受信した第2のデータを上記一次書込チップおよび上記二次書込チップに連続的に書き込むステップを含む。上記方法は、第2の有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするステップを含む。上記方法は、上記第2の受信したデータの上記書き込みおよび上記第2の有効データの上記コピーに続いて、上記第2のストレージNANDフラッシュチップをリードオンリとして指定し、上記第3のストレージNANDフラッシュチップを上記一次書込チップとして指定し、上記第1のバッファNANDフラッシュチップを上記二次書込チップとして指定し、上記第2のバッファNANDフラッシュチップを上記将来的な二次書込チップとして指定するステップを含む。
いくつかの実現例では、上記方法は、上記有効データおよび空き空間がそれぞれ、上記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な一次書込チップから上記将来的な二次書込チップにコピーするステップを含む。上記方法は、上記有効データおよび上記空き空間がそれぞれ、上記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、上記有効データを上記将来的な二次書込チップから上記将来的な一次書込チップにコピーバックするステップを含む。上記方法は、上記空き空間が占める上記将来的な一次書込チップおよび上記将来的な二次書込チップの上記メモリ空間を消去するステップを含む。
いくつかの実現例では、上記バッファNANDフラッシュチップは、シングルレベルセル(SLC)NANDフラッシュチップであってもよく、上記ストレージNANDフラッシュチップは、トリプルレベルセル(TLC)NANDフラッシュチップであってもよい。
これらのおよび他の局面および実現例について以下で詳細に説明する。上記の情報および以下の詳細な説明は、さまざまな局面および実現例の説明的な例を含んでおり、記載されている局面および実現例の本質および特徴を理解するための概要または枠組みを提供する。図面は、さまざまな局面および実現例の説明およびさらなる理解を提供するものであり、本明細書に組み込まれて本明細書の一部を構成している。
添付の図面は、一定の比率に応じて描かれることを意図するものではない。さまざまな図における同様の参照番号および名称は、同様の要素を示す。分かりやすくするために、全ての構成要素が全ての図に記載されているとは限らない。
例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイスを含むコンピュータシステムの例のブロック図である。 例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイスの例のブロック図である。 例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイスを使用する方法の例を示すフローチャートである。 例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイスの例のブロック図である。 例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイスの動作の例を示す。 例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイスを使用する方法の例を示すフローチャートである。 例示的な実現例に係る、ウェアレベリングのための循環式NANDバッファを有するNANDフラッシュストレージデバイスの例のブロック図である。 例示的な実現例に係る、ウェアレベリングのための循環式NANDバッファを有するNANDフラッシュストレージデバイスの動作の例を示す。 例示的な実現例に係る、ウェアレベリングのための循環式NANDバッファを有するNANDフラッシュストレージデバイスを使用する方法の例を示すフローチャートである。
詳細な説明
以下は、NANDバッファを有する、レイテンシが予測可能であるNANDフラッシュストレージデバイス、およびその使用方法に関するさまざまな概念、ならびにそれらの実現例の説明である。上で紹介され、以下でさらに詳細に説明するさまざまな概念は、記載されている概念が任意の特定の実現態様に限定されるものではないので、多数の方法のいずれで実現されてもよい。具体的な実現例および用途の例は、主に説明の目的で提供されている。
本開示は、一般に、NANDバッファを有する、レイテンシが予測可能であるNANDフラッシュストレージデバイスに関する。ストレージデバイスは、ソリッドステートドライブ(SSD)またはスワップデバイスであってもよい。スワップデバイスは、ランダムアクセスメモリ(RAM)の拡張機能として機能することができる二次ストレージデバイスである。メモリに保持されるデータの量がRAMの容量を超えると、「ページング」と称されることもある動作時にデータの一部がスワップデバイスに移動され得る。従来は、この二次デバイスがハードディスクドライブ(HDD)であった。しかし、HDDからのデータの読み書きはRAMと比較して非常にゆっくりであるため、検索速度が重要である設定では、HDDはスワップデバイスとして非実用的になってしまう。最近のSSD、特にNANDフラッシュベースのSSDは、依然としてRAMよりはゆっくりであるが、HDDと比較して速い検索時間を示す。NAND SSDも、RAMより安価である傾向があるため、SSD容量に有利なようにRAM容量を減少させることにより、コストを節約することができる。サムソン社のZ-NANDなどのさらに最近開発された低レイテンシNAND(LLNAND)は、その一般的な読取レイテンシを改善する特別な回路を有して設計されている。LLNANDベースのSSDは、さらに高速であるため、いくつかのサーバアプリケーションにおけるページングおよび他の一時的なデータ記憶に有用である。
しかし、NANDフラッシュSSDには他の欠点がある。NAND読取時間は、約数十マイクロ秒と非常に高速であるが、消去および書込動作は、各々約数ミリ秒とはるかにゆっくりである。そして、NANDフラッシュチップは、読取動作と書込動作とを同時に実行することができないので、消去/書込動作の後ろのキューに入れられた読取動作は、通常の2倍または3倍のレイテンシ増加を示し得る。これは、「テイルレイテンシ」と呼ばれる。RAM内のデータをバッファリングしてNANDフラッシュチップに書き込むことが可能であるが、オーバーヘッドは法外な費用がかかる可能性がある。たとえば、10個のNANDフラッシュチップを有するデバイスは、総NAND容量の10分の1に相当するRAMをバッファとして必要とする。DRAMはNANDストレージの4倍高価であり得るので、コストオーバーヘッドは40%であり得る。
したがって、本開示は、NANDバッファを利用してRAMバッファよりも低コストオーバーヘッドでテイルレイテンシを改善することを提案する。システムは、データの各ページを2つのチップに順番に書き込む、すなわちまず第1のチップに書き込み、次いで第2のチップに書き込む、ことによって機能する。第2のチップは、NANDバッファであると考えられてもよい。書込動作は、時間的に重ならない。読取動作は、現在書込動作を実行していないチップによって実行することができる。したがって、読取動作は、書込動作の後ろのキューに入れられる必要がなく、NANDフラッシュストレージデバイスがより予測可能なレイテンシを有することが可能になる。
いくつかの実現例では、第1のチップ(さらに、ひいては、第2のチップ)は満杯であり、2つの新たなチップが書込バッファとして選択される。第1のチップは、リードオンリに切り換え可能であり、第1のチップが書込動作から中断なしに読取動作を実行することができるので、第2のチップに格納されたデータのコピーはもはや不要である。このとき、第2のチップは、将来的な一次書込動作のために空いている状態である。2つの新たなチップ、すなわち第3のチップおよび第4のチップ、を書き込みのために選択することができる。この場合、第4のチップがNANDバッファであると考えられてもよい。
このようなシステムが機能するために、書き込みのために選択された2つの新たなチップが重複データを含むことが役立つ。したがって、新たなデータを受信する前に、まず第3のチップ上の既存のデータを第4のチップにコピーすることができる。コピー動作は、「ガベージコレクション」、すなわち無効にされた(もはや使用されていない)データが占める空間を解放するためにメモリデバイスが実行する動作、を含む。ガベージコレクションは、時間がかかる可能性があり、消去/書込動作のように、完了するまで読取動作を実行しないようにすることができる。したがって、ガベージコレクションおよびコピー動作は、最初は第4のチップのみが書き込まれていて第3のチップが読み取りに利用できるように実行される。その後、ガベージコレクションされたバージョンが第4のチップから第3のチップにコピーバックされ、その結果、第4のチップが読み取りに利用できるようになる。さらに、第3のチップと第4のチップとの間のガベージコレクションおよびコピー動作は、第1および第2のチップへの書き込みと時間的に重なる。ガベージコレクションおよびコピー動作が書込動作よりも時間がかからない限り、第3および第4のチップは、第1および第2のチップが満杯になったときに書込動作の実行を引き継ぐ準備が整っているだろう。次いで、ガベージコレクションおよびコピー動作のために新たな一対のチップが選択される。
このようなシステムでは、任意の所与の時点において、2つのバッファチップは2つの他のチップの中にデータの複製を含んでいる。したがって、記憶のために10個のNANDフラッシュチップを有するデバイスは、2つのさらなるNANDフラッシュバッファチップを有し得る。したがって、コストオーバーヘッドは20%であり、DRAMバッファを使用した場合のコストオーバーヘッドの半分にすることができる。
NANDフラッシュストレージデバイスの書込帯域幅を改善するためにさらなるバッファNANDフラッシュチップが利用されてもよい。NANDフラッシュストレージデバイスの書込帯域幅とは、NANDフラッシュストレージデバイスが所与の時間内に受信および格納することができるデータの量を指す。場合によっては、NANDフラッシュストレージデバイスの書込帯域幅は、NANDフラッシュストレージデバイスがデータを特定のNANDフラッシュチップに書き込むのにかかる時間によって制限され得る。したがって、書込帯域幅は、より多くのバッファNANDフラッシュチップを追加してそれらの間で書込動作を分散させることによって増加させることができる。したがって、いくつかの実現例では、NANDフラッシュストレージデバイスは、書込帯域幅を改善するためにさらなるバッファチップ(すなわち、4個、6個、8個またはそれ以上)を含み得る。
いくつかの実現例では、NANDフラッシュストレージデバイスは、ウェアレベリングを利用することができる。NANDフラッシュチップは、過度のビットエラーを示す前に有限回数の書込動作しか実行できない。最終的に、多くの書込動作を実行した後、NANDフラッシュチップは摩耗して故障し始める。NANDフラッシュストレージデバイスの寿命を延ばすために、NANDフラッシュストレージデバイスは、どのNANDフラッシュチップが書込動作のためのバッファチップとして指定されるかを循環させることができる。この指定は、書込動作のバッファリングを少数のチップに集中させることとは対照的に、デバイス内のNANDフラッシュチップの一部または全ての中で摩耗を均等化または実質的に均等化するように循環させることができる。このように、デバイスの多くのNANDフラッシュチップにわたって摩耗を分散または「平均化」することができる。
図1は、例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイスを含むコンピュータシステム100の例のブロック図である。システム100は、コンピューティングデバイスであってもよく、たとえば、ラップトップもしくはデスクトップコンピュータなどのパーソナルコンピューティングデバイス、サーバもしくはメインフレームなどの共有コンピューティングデバイス、または、上記のもしくは他のコンピューティングデバイスの構成要素であってもよいが、これらに限定されるものではない。システム100は、中央処理装置(CPU)110などのプロセッサと、DRAMなどのRAM120と、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)などの入力/出力(I/O)バス130と、長期間にわたるデータ記憶のためのハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)などのデータストレージデバイス140と、NANDフラッシュストレージデバイス150とを含む。RAM120は、メインメモリであってもよく、たとえば所望の場所のメモリアドレスを伝えるアドレスバスおよび指定のメモリアドレスにデータを読み書きするために使用されるデータバスを介してCPU110に直接アクセス可能であってもよい。
いくつかの実現例では、NANDフラッシュストレージデバイス150は、スワップ空間をシステム100に提供するスワップデバイスであってもよい。コンピューティング環境によっては、カーネルまたはオペレーティングシステムは、仮想メモリなどのメモリ/ストレージ抽象化を利用することができ、これは、CPU110で実行されるアプリケーションに対して、タイプおよび場所が異なるであろう1つ以上のメモリデバイスへの透過的で一貫したアクセスを提供する。たとえば、仮想メモリは、CPU110で実行されるアプリケーションが拡張メモリ空間にアクセスすることを可能にしてもよい。拡張メモリ空間は、RAM120の容量を超えることがある。メモリに格納することを求められるデータがRAM120の容量を超えると、仮想メモリ機能はページングを実行することができ、それによって、システム100は、HDDまたはSSDなどの二次メモリデバイスにデータを格納することができる。この拡張メモリ空間はスワップ空間と称されてもよく、スワップ空間を提供するストレージデバイスはスワップデバイスと称されてもよい。
さまざまなタイプのメモリおよびストレージデバイスは、アクセス速度が大きく異なり、RAMは一般にHDDよりもはるかに高速であり、NANDフラッシュは中間である。HDDのアクセス時間がゆっくりであることにより、HDDはデータへの高速アクセスを必要とする用途では非実用的である。NANDフラッシュストレージデバイスは、HDDよりもはるかに高速であるため、幅広い範囲の用途で有用になる。NANDフラッシュストレージデバイスは、DRAMなどのいくつかの一般的なタイプのRAMよりも安価であるというさらなる利点を有する。低レイテンシNAND(LLNAND)などの新たなタイプのNANDは、さらに高速であり得て、通常のNANDが約70マイクロ秒であるのに対して、約10マイクロ秒の読取動作のレイテンシを示す。また、LLNANDは、プログラム(書込)動作のためのレイテンシが低く、すなわち通常のNANDでは数ミリ秒であるのに対して、100~200マイクロ秒である。しかし、書込動作は一般にプログラム動作も消去動作も含む。LLNANDは、依然として消去時間がゆっくりとしており、約5ミリ秒かかる可能性がある。さらなる課題として、NANDフラッシュチップまたはダイは、一般に、一度に1つの動作しか実行できない。たとえば、NANDフラッシュチップが書込動作の消去/プログラムシーケンスを実行している場合、完了するまではいかなる入来読取コマンドもキューに入れられる。したがって、いくつかの読取動作は、数十マイクロ秒の名目レイテンシにもかかわらず、完了するまでに最大数ミリ秒を必要とし得る。これらの外れ値レイテンシは、「テイルレイテンシ」と称される。このテイルレイテンシの期間も予測不可能性も、NANDフラッシュを使用する際に問題を生じさせる可能性がある。いくつかのシステムは、RAMを使用して、NANDフラッシュチップが書込動作を実行している間にRAMが読取動作を実行できるように、書き込まれているNANDフラッシュチップの内容をキャッシングすることができる。これについては、たとえば米国特許出願番号第14/936,486号を参照されたい。RAMは、NANDフラッシュよりも高価であり得るので、いくつかの用途では受け入れがたいであろうコストオーバーヘッドを増大させる。したがって、本開示は、1つ以上のさらなるNANDフラッシュチップを提供して、書込動作を実行しているNANDフラッシュチップの中にあるデータのためのキャッシュを提供することを提案する。NANDフラッシュベースのバッファについては、図2を参照して以下でより詳細に説明する。
図2は、例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイス250の例のブロック図である。NANDフラッシュストレージデバイス250は、NANDフラッシュストレージデバイス150としての役割を果たすことができる。読取動作が書込動作の後ろのキューに入れられることに関連付けられたテイルレイテンシを回避するために、NANDフラッシュストレージデバイス250は、2つのNANDフラッシュチップ270aおよび270b(まとめて「NANDフラッシュチップ270」)を使用したダブルバッファリングを利用することができる。コントローラ260は、I/Oバス230を介して受信したストレージアクセスコマンドを処理することができる。コントローラ260は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マイクロコントローラまたはマイクロプロセッサなどのプログラマブルロジックを含み得る。コントローラ260は、NANDフラッシュストレージデバイス250と一体であってもよく、またはNANDフラッシュストレージデバイス250の外側にあってもよい。コントローラ260は、CPU110がNANDフラッシュストレージデバイス250のバッファリング動作を意識しなくてもよいように、またはCPU110自体がNANDフラッシュストレージデバイス250のバッファリング動作を実行しなくてもよいように、NANDフラッシュストレージデバイス250の読取および書込動作を調整することができる。代替的に、コントローラが各動作を完了させるための低レベル作業を実行している間にこれらの動作を調整するように、CPU110に依拠するより単純なコントローラを設計することも可能である。したがって、コントローラ260は、I/Oバス230を介してデータおよび/またはコマンドを受信し、受信したデータをまずNANDフラッシュチップ270のうちの1つに書き込み、次いでもう一つのNANDフラッシュチップ270に書き込むように構成される。コントローラ260は、時間的に重ならないように書込動作を連続的に、自律的またはCPU110の管理下で、実行する。そのため、任意の所与の時点において、現在書込動作を実行していないNANDフラッシュチップ270は、読取動作を迅速に実行することができる。コントローラ260が各書込動作を実行すると、NANDフラッシュチップ270は2つとも同じデータを含み得る。コントローラ260は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない第1のNANDフラッシュチップまたは第2のNANDフラッシュチップのいずれかから読み取りを行うことによって、読取コマンドを実行することができる。このようにして、テイルレイテンシを改善することができる。
いくつかの実現例では、NANDフラッシュストレージデバイス250は、書込帯域幅をさらに改善するためにさらなるNANDフラッシュチップ270cおよび270dを含み得る。たとえば、4個のNANDフラッシュチップ270a~270dを有するNANDフラッシュストレージデバイス250は、2つのNANDフラッシュチップ270、たとえばNANDフラッシュチップ270aおよび270b、の間で書込動作を分割してもよい。NANDフラッシュチップ270aおよび270bがそれぞれの書込動作を完了させた後、それらの書込動作はNANDフラッシュチップ270cおよび270dで繰り返されてもよい。このようにして、NANDフラッシュストレージデバイス250の書込帯域幅を約2倍にすることができる。NANDフラッシュストレージデバイス250は、書込帯域幅をさらに増加させるためにさらなるNANDフラッシュチップ270を利用してもよい。
いくつかの実現例では、NANDデバイス250は、各NANDフラッシュチップ270に書き込まれている間にデータを格納するためのキャッシュまたはバッファとしての役割を果たすように何らかのRAM265を含み得る。このRAM265は、NANDフラッシュチップ270の全内容をバッファリングするほどの容量を有していなくてもよく、データの1ブロックまたは1ページをバッファリングするのに十分な大きさであるだけでよい。したがって、それは、専用のRAMバッファよりもはるかに小さくてもよいため、NANDデバイス250のコストオーバーヘッドに大きく寄与することはない。
図3は、例示的な実現例に係る、NANDバッファを有するNANDフラッシュストレージデバイスを使用する方法300の例を示すフローチャートである。NANDフラッシュストレージデバイスは、本明細書に記載されているNANDフラッシュストレージデバイス150,250,450または750のうちのいずれかを含み得る。方法300は、入力/出力(I/O)バスを介してデータを受信するステップ(段階310)を含む。方法300は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、受信したデータを第1のNANDフラッシュチップおよび第2のNANDフラッシュチップに連続的に書き込むステップ(段階320)を含む。方法は、I/Oバスを介して読取コマンドを受信するステップ(段階330)を含む。方法300は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない第1のNANDフラッシュチップまたは第2のNANDフラッシュチップのいずれかからデータを読み取るステップ(段階340)を含む。
方法300は、I/Oバスを介してデータを受信するステップ(段階310)を含む。NANDフラッシュストレージデバイスは、NANDフラッシュストレージデバイス150または250に関してそれぞれ上記したI/Oバス130または230のうちの1つなどのI/Oバスを介して書込コマンドを受信することができる。書込コマンドは、NANDフラッシュストレージデバイスによって格納されるデータを含み得る。
方法300は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、受信したデータを第1のNANDフラッシュチップおよび第2のNANDフラッシュチップに連続的に書き込むステップ(段階320)を含む。書込動作は、上記のCPU110またはコントローラ260などのNANDフラッシュストレージデバイスのコントローラによって実行することができる。コントローラは、NANDフラッシュチップ270aまたは270bなどの2つのNANDフラッシュチップのうちの1つに対して書込動作を実行することができる。コントローラがNANDフラッシュチップ270のうちの1つに対して書込動作を実行している間は、その特定のNANDフラッシュチップは他の動作を処理することができない。したがって、コントローラは、時間的に重ならないように2つのNANDフラッシュチップに対して連続的に書込動作を実行することになる。いくつかの実現例では、受信段階310および書込段階320は、第1および第2のNANDフラッシュチップが一杯または実質的に一杯になるまで繰り返すことができる。いくつかの実現例では、NANDフラッシュチップは、低レイテンシNAND(LLNAND)チップである。
方法は、I/Oバスを介して読取コマンドを受信するステップ(段階330)を含む。方法300は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない第1のNANDフラッシュチップまたは第2のNANDフラッシュチップのいずれかからデータを読み取るステップ(段階340)を含む。書込動作の実行中に、NANDフラッシュストレージデバイスは、I/Oバスを介して読取コマンドを受信してもよい。コントローラは、現在書込動作を実行していないNANDフラッシュチップのいずれかに読取コマンドを仕向けることができる。このようにして、段階330および340は、段階310および320と同時に進むことができ、読取動作は、ゆっくりとした書込動作の後ろのキューに入れられることなく迅速に処理することができる。方法300のこれらの段階は、さらなるデータおよび読取コマンドがI/Oバスを介して受信されると繰り返すことができる。いくつかの実現例では、各々の特定のNANDフラッシュチップが果たす役割は循環し得て、それぞれのNANDフラッシュチップがそれぞれの時点でそれぞれのバッファリングおよび記憶機能を実行する。異なる態様のNANDフラッシュチップバッファリングおよび記憶の例については、図4~図9を参照して以下で説明する。
図4は、例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイス450の例のブロック図である。NANDフラッシュストレージデバイス450は、I/Oバス430を介して受信した読取および書込コマンドを実行するためのコントローラ460を含む。コントローラ460は、RAM465を含んでもよく、またはメモリバスを介してRAM465と通信してもよい。コントローラ460は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マイクロコントローラまたはマイクロプロセッサなどのプログラマブルロジックを含み得る。コントローラ460は、NANDフラッシュストレージデバイス450と一体であってもよく、またはNANDフラッシュストレージデバイス450の外側にあってもよい。NANDフラッシュストレージデバイス450は、2つのバッファNANDフラッシュチップ470aおよび470b(まとめて「バッファNANDフラッシュチップ470」)を含み得る。いくつかの実現例では、NANDフラッシュストレージデバイス450は、以下でさらに説明するように、さらなるバッファNANDフラッシュチップ470を含み得る。いくつかの実現例では、NANDフラッシュストレージデバイス450は、RAM465を使用して、I/Oバス430を介して受信したデータがバッファNANDフラッシュチップ470のうちの1つ以上に書き込まれている間にこのデータをバッファリングすることができる。NANDフラッシュストレージデバイス450は、バッファNANDフラッシュチップ470のメモリ容量を超えるさらなるメモリ容量を提供するストレージNANDフラッシュチップ475a~475e(まとめて「ストレージNANDフラッシュチップ475」)も含む。I/Oバス430を介して受信したデータは、ストレージNANDフラッシュチップ475のうちの1つにコピーされる前にバッファNANDフラッシュチップ470においてバッファリングされることができる。
いくつかの実現例では、バッファNANDフラッシュチップ470は、シングルレベルセル(SLC)NANDフラッシュチップまたは低レイテンシNAND(LLNAND)フラッシュチップであってもよく、ストレージNANDフラッシュチップ475は、マルチレベルセル(MLC)またはトリプルレベルセル(TLC)NANDフラッシュチップであってもよい。いくつかの実現例では、バッファNANDフラッシュチップ470は、ストレージNANDフラッシュチップ475よりも小さな容量を有し得る。いくつかの実現例では、バッファNANDフラッシュチップ470のグループは、単一のストレージNANDフラッシュチップ475の容量に等しい容量を有し得る。バッファNANDフラッシュチップ470のグループは、まとめて単一のバッファチップとして使用可能である。
NANDフラッシュストレージデバイスの書込帯域幅は、書込動作を実行するペースが比較的ゆっくりであることにより制限される可能性がある。しかし、いくつかの実現例では、書込帯域幅は、より多くのバッファNANDフラッシュチップ470を書込バッファとして指定することによって改善することができる。いくつかの実現例では、NANDフラッシュストレージデバイス250と同様に、NANDフラッシュストレージデバイス450は、さらなるバッファNANDフラッシュチップ470、たとえばバッファNANDフラッシュチップ470cおよび470d、を含み得る。いくつかの実現例では、NANDフラッシュストレージデバイス450は、さらに多くのバッファNANDフラッシュチップ470を含んでもよい。したがって、コントローラ460は、バッファNANDフラッシュチップ470の間で書込動作を分散させて、書込帯域幅を増大させることができる。
NANDフラッシュストレージデバイス450は、ともすれば2つの欠点に直面する可能性がある。第1に、バッファNANDフラッシュチップ470は、最終的には容量に達することになる。バッファNANDフラッシュチップ470内の全てのデータがストレージNANDフラッシュチップ475のうちの1つにコピーされると、バッファNANDフラッシュチップ470内の全てのデータは削除され得る。バッファNANDフラッシュチップ470は、消去動作を実行している間は書込動作を実行することができない。したがって、書込帯域幅は、そのバッファNANDフラッシュチップ470を利用できないことによって制限される。
第2の考えられる欠点は、過度のビットエラーを示す前にNANDフラッシュチップが処理できる書込動作の数が有限であることに関する。NANDフラッシュチップは、書込動作を処理することにより摩耗する。最終的に、多くの書込動作を実行した後、NANDフラッシュチップは、摩耗して故障を示し始める。
いくつかの実現例では、書込帯域幅が制限されるという問題は、上記のようにバッファNANDフラッシュチップ470の数を増加させることによって対処することができ、NANDの摩耗の問題は、高い耐久性のチップをバッファNANDフラッシュチップ470として使用することによって対処することができる。いくつかの実現例では、NANDの摩耗の問題は、入来データのためのバッファとして指定される特定のNANDフラッシュチップを循環させることによって対処することができる。このようなウェアレベリングスキームについては、図7~図9を参照して以下でさらに説明する。以下の図5は、NANDフラッシュストレージデバイス450の動作の例を示す。
図5は、例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイスの動作500の例を示す。これらの動作は、上記のNANDフラッシュストレージデバイス450などのNANDフラッシュストレージデバイスによって実行することができる。動作500は、入来データをバッファNANDフラッシュチップ470aおよびストレージNANDフラッシュチップ475aに書き込み、ガベージコレクションによりデータをストレージNANDフラッシュチップ475bからバッファNANDフラッシュチップ470bにコピーし、その後、ストレージNANDフラッシュチップ475bにコピーバックする段階510を含む。動作500は、入来データをバッファNANDフラッシュチップ470bおよびストレージNANDフラッシュチップ475bに書き込み、ガベージコレクションによりデータをストレージNANDフラッシュチップ475cからバッファNANDフラッシュチップ470aにコピーし、その後、ストレージNANDフラッシュチップ475cにコピーバックする段階520を含む。動作500は、入来データをバッファNANDフラッシュチップ470aおよびストレージNANDフラッシュチップ475cに書き込み、バッファNANDフラッシュチップ470bがストレージNANDフラッシュチップ475dからコピーされたデータを受信する段階530を含む。バッファNANDフラッシュチップ470は、バッファ580枠によって示されている。各NANDフラッシュチップ470または475が現在実行している動作は、頭字語によって示されている。「PW」は、「一次書き込み」を意味し、ストレージNANDフラッシュチップ475がデータを受信して書込動作を実行するように現在指定されていることを示す。「SW」は、「二次書き込み」を意味し、バッファNANDフラッシュチップ470もデータを受信して書込動作を実行するように現在指定されていることを示す。「FPW」は、「将来的な一次書き込み」を意味し、NANDフラッシュチップ475がデータを受信して書込動作を実行する将来的なサービスに備えるように指定されていることを示す。「FSW」は、「将来的な二次書き込み」を意味し、NANDフラッシュチップ470がデータを受信して書込動作を実行する将来的なサービスに備えるように指定されていることを示す。「RO」は、「リードオンリ」を意味し、コントローラ460がROストレージNANDフラッシュチップ475に読取動作を実行するように求めるのみであることを示す。これらの符号は、任意であるに過ぎず、特定の時点でのさまざまなチップの動作を説明する目的でのみ割り当てられている。動作500の各状態間で、各NANDフラッシュチップ470または475の役割は変化する。なぜなら、もう一方のNANDフラッシュチップ470または475がデータを受信して書込動作を実行するからである。
段階510の間は、矢印によって示されるように、バッファNANDフラッシュチップ470aおよびストレージNANDフラッシュチップ475aが入来データを受信して書き込む。バッファNANDフラッシュチップ470aおよびストレージNANDフラッシュチップ475aはそれぞれ、SWチップおよびPWチップとして同一のデータを受信して書き込む。しかし、それらは、重ならない期間中に書込動作を実行することができる。このようにして、PWチップもSWチップも実質的に同一のデータを含み、書込動作を実行していないNANDフラッシュチップは、比較的長時間の書込動作の完了を待つ必要なく読取コマンドに応答して迅速に読取動作を実行することができる。いくつかの実現例では、PWチップおよびSWチップは、一杯または実質的に一杯になるまでデータを受信して書込動作を実行し続けることができる。一方、FPWストレージNANDフラッシュチップ475bは、次の段階520での外部データの受信に備えて、そのデータをFSWバッファNANDフラッシュチップ470bにコピーする。コピー動作中に、NANDフラッシュストレージデバイス450は、FPWチップおよびFSWチップに対してガベージコレクションを実行することができる。断片的なデータがFPWチップからFSWチップにコピーされる場合、それは、連続的または実質的に連続的なメモリ空間においてFSWチップに書き込まれるように統合され、第2の連続的または実質的に連続的なメモリ空間において空き空間が同様に統合される。これにより、データ表現がよりコンパクトになり、次の段階520で書き込まれる新たなデータのための空間が最後部に残ることになる。全ての有効データがFPWチップからFSWチップにコピーされた後、FPW上の空き空間は消去され、有効データはFSWチップからFPWチップにコピーバックされる。PWチップおよびSWチップがそれらの書込動作を完了させ、FPWチップおよびFSWチップがそれらのコピーおよびガベージコレクションを完了させると、動作500は次の段階520に進むことができる。
段階510の間に(段階520および530の間にも)、NANDフラッシュストレージデバイス450は、時折、読取要求を受信してもよい。コントローラ460は、要求されたデータがROチップにあるか、PWチップまたはSWチップのうちの1つにあるか、FPWチップまたはFSWチップのうちの1つにあるかに応じて、3つの方法のうちの1つの方法で読取要求を処理してもよい。要求されたデータがROチップにある場合、コントローラ460は、単にROチップに対して読取動作を実行して、データを返すことができ、読取動作の実行と干渉したり読取動作の実行を遅延させたりするであろう書込動作は生じない。要求されたデータがPWチップまたはSWチップにある場合、コントローラ460は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないPWチップまたはSWチップのいずれかに対して読取動作を実行することができる。要求されたデータがFPWチップまたはFSWチップにある場合、コントローラ460は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないFPWまたはFSWのいずれかに対して読取動作を実行することができる。すなわち、ガベージコレクションによりデータが現在FPWチップからFSWチップにコピーされている場合、コントローラ460は、FSWチップに対して書込動作を実行しているため、FPWチップに対して読取動作を実行することができる。データがFSWチップからFPWチップにコピーバックされている場合、コントローラ460は、FSWチップに対して読取動作を実行することができる。このようにして、どのNANDフラッシュチップが要求されたデータを含んでいるか、およびどのNANDフラッシュチップが書込動作を実行しているかにかかわらず、NANDフラッシュデバイス450は、読取動作を書込動作の後ろのキューに入れることによって引き起こされる過度の遅延なしに、要求されたデータを読み取って返すことができる。
段階520の間は、ストレージNANDフラッシュチップ475bがPWチップとして指定され、バッファNANDフラッシュチップ470bがSWチップとして指定され、ストレージNANDフラッシュチップ475cがFPWチップとして指定され、バッファNANDフラッシュチップ470aがFSWチップとして指定され、ストレージNANDフラッシュチップ475aがROとして指定される。PWチップ、SWチップ、FPWチップおよびFSWチップの機能は、前の段階510において同一名称を有するチップによって実行された機能と同様であるが、それぞれのNANDフラッシュチップが各々の指定された役割を実行する。SWチップおよびPWチップは、矢印によって示されるように、同一のデータを受信して書き込む。しかし、それらは、比較的長時間の書込動作の完了を待つ必要なく読取コマンドに応答して迅速に読取動作を実行することができるように、重なり合わない期間中に書込動作を実行することができる。一方、FPWチップは、次の段階530での外部データの受信に備えて、そのデータをFSWチップにコピーする。コピー動作中、FPWチップおよびFSWチップは、ガベージコレクション動作を実行することができる。PWチップおよびSWチップがそれらの書込動作を完了させ、FPWチップおよびFSWチップがそれらのコピーおよびガベージコレクションを完了させると、動作500は次の段階530に進むことができる。
段階530の間は、ストレージNANDフラッシュチップ475cがPWチップとして指定され、バッファNANDフラッシュチップ470aがSWチップとして指定され、ストレージNANDフラッシュチップ475dがFPWチップとして指定され、バッファNANDフラッシュチップ470bがFSWチップとして指定され、ストレージNANDフラッシュチップ475bがROとして指定される。PWチップ、SWチップ、FPWチップおよびFSWチップの機能は、前の段階510および520において同一名称を有するチップによって実行された機能と同様であるが、それぞれのNANDフラッシュチップが各々の指定された役割を実行する。SWチップおよびPWチップは、矢印によって示されるように、同一のデータを受信して書き込む。しかし、それらは、比較的長時間の書込動作の完了を待つ必要なく読取コマンドに応答して迅速に読取動作を実行することができるように、重なり合わない期間中に書込動作を実行することができる。一方、FPWチップは、次の段階での外部データの受信に備えて、そのデータをFSWチップにコピーする。コピー動作中、FPWチップおよびFSWチップは、ガベージコレクション動作を実行することができる。PWチップおよびSWチップがそれらの書込動作を完了させ、FPWチップおよびFSWチップがそれらのコピーおよびガベージコレクションを完了させると、動作500は次の段階に進むことができる。動作500は、全てのストレージNANDフラッシュチップ475が書き込まれるまでこのように進み続けることができ、全てのストレージNANDフラッシュチップ475が書き込まれた時点で、動作500は、段階510から開始することを繰り返すことができる。
図6は、例示的な実現例に係る、NANDバッファおよびさらなるNANDストレージを有するNANDフラッシュストレージデバイスを使用する方法600の例を示すフローチャートである。方法600は、バッファNANDチップによって提供される記憶空間を超えるNANDフラッシュ記憶空間を提供することができる。たとえば、方法600は、図4を参照して上記したNANDフラッシュストレージデバイス450によって実行することができる。NANDフラッシュストレージデバイス450は、バッファNANDフラッシュチップ470とストレージNANDフラッシュチップ475とを含み得る。方法600は、第1のストレージNANDフラッシュチップを一次書込(PW)チップとして指定し、第2のストレージNANDフラッシュチップを将来的な一次書込(FPW)チップとして指定し、第1のバッファNANDフラッシュチップを二次書込(SW)チップとして指定し、第2のバッファNANDフラッシュチップを将来的な二次書込(FSW)チップとして指定し、残りのNANDフラッシュチップをリードオンリ(RO)として指定するステップを含む。方法600は、入力/出力(I/O)バスを介してデータを受信するステップ(段階620)を含む。方法600は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、受信したデータをPWチップおよびSWチップに連続的に書き込むステップ(段階630)を含む。方法600は、I/Oバスを介して読取コマンドを受信するステップ(段階640)を含む。方法600は、読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないNANDフラッシュチップからデータを読み取るステップ(段階650)を含む。方法600は、有効データをFPWチップからFSWチップにコピーするステップ(段階660)を含む。方法600は、受信したデータの書き込みおよび有効データのコピーに続いて、第1のストレージNANDフラッシュチップをROとして指定し、第2のストレージNANDフラッシュチップをPWチップとして指定し、第1のバッファNANDフラッシュチップをFSWチップとして指定し、第2のバッファNANDフラッシュチップをSWチップとして指定するステップ(段階670)を含む。
方法600は、第1のストレージNANDフラッシュチップを一次書込チップとして指定し、第2のストレージNANDフラッシュチップを将来的な一次書込チップとして指定し、第1のバッファNANDフラッシュチップを二次書込チップとして指定し、第2のバッファNANDフラッシュチップを将来的な二次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリ(RO)として指定するステップを含む。
方法600は、I/Oバスを介してデータを受信するステップ(段階620)を含む。段階620は、上記の段階310と同様であり得る。
方法600は、各NANDフラッシュチップへの書込動作が時間的に重ならないように、受信したデータをPWチップおよびSWチップに連続的に書き込むステップ(段階630)を含む。段階630は、上記の段階320と同様であり得る。いくつかの実現例では、受信段階620および書込段階630は、PWチップおよびSWチップが一杯または実質的に一杯になるまで繰り返すことができる。
方法600は、I/Oバスを介して読取コマンドを受信するステップ(段階640)を含む。段階630は、上記の段階430と同様であり得る。
方法600は、読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないNANDフラッシュチップからデータを読み取るステップ(段階650)を含む。段階650は、上記の段階340と同様であり得る。実際には、要求されたデータは、ROチップ、PWチップもしくはSWチップのうちの1つ、またはFPWチップもしくはFSWチップのうちの1つにあってもよい。コントローラは、要求されたデータがどこにあるかに応じて、3つの方法のうちの1つの方法で読取要求を処理してもよい。要求されたデータがPWチップまたはSWチップにある場合、コントローラは、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないPWチップまたはSWチップのいずれかに対して読取動作を実行することができ、方法600は次の段階に進むことができる。要求されたデータがROチップにある場合、コントローラは、単にROチップに対して読取動作を実行してデータを返すことができ、読取動作の実行と干渉したり読取動作の実行を遅延させたりするであろう書込動作は生じない。要求されたデータがFPWチップまたはFSWチップにある場合、コントローラは、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないFPWまたはFSWのいずれかに対して読取動作を実行することができる。すなわち、ガベージコレクションによりデータが現在FPWチップからFSWチップにコピーされている場合、コントローラ460は、FSWチップに対して書込動作を実行しているため、FPWチップに対して読取動作を実行することができる。データがFSWチップからFPWチップにコピーバックされている場合、コントローラは、FSWチップに対して読取動作を実行することができる。このようにして、どのNANDフラッシュチップが要求されたデータを含んでいるか、およびどのNANDフラッシュチップが書込動作を実行しているかにかかわらず、NANDフラッシュデバイスは、読取動作を書込動作の後ろのキューに入れることによって引き起こされる過度の遅延なしに、要求されたデータを読み取って返すことができる。このように、段階640および650は、段階620および630と同時に進むことができ、読取動作は、ゆっくりとした書込動作の後ろのキューに入れられることなく迅速に処理することができる。段階620~650は、さらなるデータおよび読取コマンドがI/Oバスを介して受信されると繰り返すことができる。
方法600は、有効データをFPWチップからFSWチップにコピーするステップ(段階660)を含む。いくつかの実現例では、コピー動作中、FPWチップおよびFSWチップは、ガベージコレクションを実行して、有効データおよび空き空間をそれぞれ統合することができる。たとえば、NANDフラッシュストレージデバイスは、まず、有効データおよび空き空間がそれぞれFSWチップの実質的に連続したそれぞれのメモリ空間を占めるように、有効データをFPWチップからFSWチップにコピーすることができる。NANDフラッシュストレージデバイスは、有効データおよび空き空間がそれぞれFPWチップの実質的に連続したそれぞれのメモリ空間を占めるように、有効データをFSWチップからFPWチップにコピーバックすることができる。NANDフラッシュストレージデバイスは、空き空間が占めるFPWチップおよびFSWチップのメモリ空間を消去することができる。段階660のコピー動作は、段階620および630のバッファリング動作と重なり合う期間中に実行することができる。また、コピー動作の一部として現在書込動作を実行していないFPWおよびFSWのいずれかによって読取コマンドを受信して実行することができる。このように、段階660のコピー動作は、段階640および650の読取動作と重なり合う期間中にも実行することができる。
方法600は、受信したデータの書き込みおよび有効データのコピーに続いて、第1のストレージNANDフラッシュチップをROとして指定し、第2のストレージNANDフラッシュチップをPWチップとして指定し、第1のバッファNANDフラッシュチップをFSWチップとして指定し、第2のバッファNANDフラッシュチップをSWチップとして指定するステップ(段階670)を含む。方法600のこれらの段階は、さらなるデータおよび読取コマンドがI/Oバスを介して受信されると繰り返すことができる。いくつかの実現例では、各々の特定のNANDフラッシュチップが果たす役割は循環し得て、それぞれのNANDフラッシュチップがそれぞれの時点でそれぞれのバッファリングおよび記憶機能を実行する。
図7は、例示的な実現例に係る、ウェアレベリングのために循環式NANDバッファを有するNANDフラッシュストレージデバイス750の例のブロック図である。NANDフラッシュストレージデバイス750は、I/Oバス730を介して受信した読取および書込コマンドを処理するためのコントローラ760を含む。コントローラ760は、RAM765を含んでもよく、またはメモリバスを介してRAM765と通信してもよい。コントローラ760は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、マイクロコントローラまたはマイクロプロセッサなどのプログラマブルロジックを含み得る。コントローラ760は、NANDフラッシュストレージデバイス750と一体であってもよく、またはNANDフラッシュストレージデバイス750の外側にあってもよい。NANDフラッシュストレージデバイス750は、NANDフラッシュチップ770a~770f(まとめて「NANDフラッシュチップ770」)を含む。いくつかの実現例では、NANDフラッシュストレージデバイス750は、より多くのまたはより少ないNANDフラッシュチップ770を含んでもよい。いくつかの実現例では、NANDフラッシュストレージデバイス750は、RAM765を使用して、I/Oバス730を介して受信したデータがNANDフラッシュチップ770のうちの1つ以上に書き込まれている間にこのデータをバッファリングすることができる。NANDフラッシュストレージデバイス750は、バッファリングに使用されるNANDフラッシュチップ770を時折変化させることによってウェアレベリングを利用することができる。たとえば、動作の第1の段階の間は、NANDフラッシュチップ770aおよび770bは、NANDバッファとしての役割を果たすことができ、コントローラ760は、データを各NANDバッファに順番に書き込む。NANDフラッシュストレージデバイス750の動作の例については、図8を参照して以下でより詳細に説明する。
図8は、例示的な実現例に係る、ウェアレベリングを利用する循環式NANDバッファを有するNANDフラッシュストレージデバイスの動作800の例を示す。これらの動作は、上記のNANDフラッシュストレージデバイス750などのNANDフラッシュストレージデバイスによって実行することができる。動作800は、入来データをNANDフラッシュチップ770aおよび770cに書き込みながら、ガベージコレクションによりデータをNANDフラッシュチップ770dからNANDフラッシュチップ770bにコピーして、その後、NANDフラッシュチップ770dにコピーバックする段階810を含む。動作800は、入来データをNANDフラッシュチップ770bおよび770dに書き込みながら、ガベージコレクションによりデータをNANDフラッシュチップ770eからNANDフラッシュチップ770cにコピーして、その後、NANDフラッシュチップ770eにコピーバックする段階820を含む。動作800は、入来データをNANDフラッシュチップ770cおよび770eに書き込みながら、ガベージコレクションによりデータをNANDフラッシュチップ770fからNANDフラッシュチップ770dにコピーして、その後、NANDフラッシュチップ770fにコピーバックする段階830を含む。各動作800の間、二次書込および将来的な二次書込NANDフラッシュチップ770がバッファNANDフラッシュチップであると考えられ、バッファ880枠によって示されている。各NANDフラッシュチップ770が現在実行している動作は、頭字語によって示されている。「PW」は、「一次書き込み」を意味し、NANDフラッシュチップ770が現在データを受信して書込動作を実行していることを示す。「SW」は、「二次書き込み」を意味し、NANDフラッシュチップ770がバッファNANDフラッシュチップのうちの1つとして現在データを受信して書込動作を実行していることを示す。「FPW」は、「将来的な一次書き込み」を意味し、NANDフラッシュチップ770がそのデータを将来的な二次書込チップにコピーすることによって一次書込チップとして将来的なサービスに備えていることを示す。「FSW」は、「将来的な二次書き込み」を意味し、NANDフラッシュチップ770がSWバッファNANDフラッシュチップとして将来的なサービスに備えてFPWチップからデータを受信していることを示す。「RO」は、「リードオンリ」を意味し、コントローラ760がRO NANDフラッシュチップ770に読取動作を実行するように求めるのみであることを示す。これらの符号は、任意であるに過ぎず、動作800の所与の段階でのさまざまなチップの機能を説明する目的でのみ割り当てられている。各チップの下の符号および利用可能なNANDフラッシュチップ770を循環するバッファ880枠によって示されるように、動作800の各段階の間に、各NANDフラッシュチップ770の役割は変化し得る。
段階810の間は、NANDフラッシュチップ770aがSWチップとしての役割を果たし、NANDフラッシュチップ770bがFSWチップとしての役割を果たし、NANDフラッシュチップ770cがPWチップとしての役割を果たし、NANDフラッシュチップ770dがFPWチップとしての役割を果たし、残りのNANDフラッシュチップがROチップとしての役割を果たす。入来データは、NANDフラッシュチップ770aおよび770c、すなわちSWチップおよびPWチップ、にそれぞれ書き込まれる。一方、ガベージコクレションにより、データはNANDフラッシュチップ770dからNANDフラッシュチップ770bに、すなわちFPWチップからFSWチップに、それぞれコピーされ、その後、NANDフラッシュチップ770bにコピーバックされる。段階810の間は、バッファ880は、NANDフラッシュチップ770aおよび770bを含む。NANDフラッシュチップ770bは、NANDフラッシュチップ770dからデータのコピーを受信するため、少なくとも部分的に読取動作の実行には利用できない可能性があり、コピー動作に関連付けられない読取または書込動作を実行することをコントローラ760によって肯定的に防止することができる。ガベージコレクションは、コピー動作中に実行され得る。これは、有効データのみがコピーされ、無効データによって残されるいかなるギャップもこのプロセスで除去されることを意味する。これにより、データ表現がよりコンパクトになり、次の段階で書き込まれる新たなデータのための空間が最後部に残ることになる。いくつかの実現例では、NANDフラッシュチップ770bにおけるこのコンパクトな形態のデータがNANDフラッシュチップ770dにコピーバックされてもよい。NANDフラッシュチップ770eおよび770f、ならびに不図示のその他のNANDフラッシュチップ770は、ROチップとしての役割を果たすことができる。適時に、コントローラ760は、NANDフラッシュチップ770の名称を更新して、動作800の段階820に進むことができる。これは、バッファNANDフラッシュチップ770aおよび770cが一杯または実質的に一杯になったときであってもよく、予め定められた回数の書込動作が実行された後であってもよく、または予め定められた時間間隔の後であってもよい。
段階810の間に(段階820および830の間にも)、NANDフラッシュストレージデバイス750は、時折、読取要求を受信してもよい。コントローラ760は、要求されたデータがROチップにあるか、PWチップまたはSWチップのうちの1つにあるか、FPWチップまたはFSWチップのうちの1つにあるかに応じて、3つの方法のうちの1つの方法で読取要求を処理してもよい。要求されたデータがROチップにある場合、コントローラ760は、単にROチップに対して読取動作を実行して、データを返すことができ、読取動作の実行と干渉したり読取動作の実行を遅延させたりするであろう書込動作は生じない。要求されたデータがPWチップまたはSWチップにある場合、コントローラ760は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないPWチップまたはSWチップのいずれかに対して読取動作を実行することができる。要求されたデータがFPWチップまたはFSWチップにある場合、コントローラ760は、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないFPWまたはFSWのいずれかに対して読取動作を実行することができる。すなわち、ガベージコレクションによりデータが現在FPWチップからFSWチップにコピーされている場合、コントローラ760は、FSWチップに対して書込動作を実行しているため、FPWチップに対して読取動作を実行することができる。データがFSWチップからFPWチップにコピーバックされている場合、コントローラ760は、FSWチップに対して読取動作を実行することができる。このようにして、どのNANDフラッシュチップが要求されたデータを含んでいるか、およびどのNANDフラッシュチップが書込動作を実行しているかにかかわらず、NANDフラッシュデバイス750は、読取動作を書込動作の後ろのキューに入れることによって引き起こされる過度の遅延なしに、要求されたデータを読み取って返すことができる。
段階820の間は、NANDフラッシュチップ770bがSWチップとしての役割を果たし、NANDフラッシュチップ770cがFSWチップとしての役割を果たし、NANDフラッシュチップ770dがPWチップとしての役割を果たし、NANDフラッシュチップ770eがFPWチップとしての役割を果たし、残りのNANDフラッシュチップがROチップとしての役割を果たす。入来データは、NANDフラッシュチップ770bおよび770dに書き込まれ、ガベージコレクションにより、データは、NANDフラッシュチップ770eからNANDフラッシュチップ770cにコピーされ、その後、NANDフラッシュチップ770eにコピーバックされる。NANDフラッシュチップ770aは、ROチップとして指定され、書込動作からの中断なしに読取動作を実行するように利用可能である。このとき、バッファ880は、NANDフラッシュチップ770bおよび770cを含む。NANDフラッシュチップ770cは、以前PWチップとしての役割を果たしていたので、それが含んでいるデータは固有ではない。なぜなら、そのデータは以前に前のSWにも書き込まれていたからである。したがって、NANDフラッシュチップ770cは、動作の次の段階でSWとして指定されることに備えて、NANDフラッシュチップ770eから重複データを受信することができる。コピー動作中に、NANDフラッシュチップ770cおよび770eは、ガベージコレクション動作を実行することができる。
段階830の間は、NANDフラッシュチップ770cがSWチップとしての役割を果たし、NANDフラッシュチップ770dがFSWチップとしての役割を果たし、NANDフラッシュチップ770eがPWチップとしての役割を果たし、NANDフラッシュチップ770fがFPWチップとしての役割を果たし、残りのNANDフラッシュチップがROフラッシュチップとしての役割を果たす。入来データは、NANDフラッシュチップ770cおよび770eに書き込まれながら、ガベージコレクションにより、データは、NANDフラッシュチップ770fからNANDフラッシュチップ770dにコピーされて、その後、NANDフラッシュチップ770fにコピーバックされる。NANDフラッシュチップ770bは、ROチップとして指定され、書込動作からの中断なしに読取動作を実行するように利用可能である。このとき、バッファ880は、NANDフラッシュチップ770cおよび770dを含む。NANDフラッシュチップ770dは、以前PWチップとしての役割を果たしていたので、それが含んでいるデータは固有ではない。なぜなら、そのデータは以前に前のSWにも書き込まれていたからである。したがって、NANDフラッシュチップ770dは、動作の後続の段階でSWとして指定されることに備えて、NANDフラッシュチップ770fから重複データを受信することができる。
さらなる段階は、このようにして無期限に進行して、利用可能なNANDフラッシュチップ770の一部または全ての間で摩耗を分散させることができる。これらの動作を実行する際、NANDフラッシュストレージデバイス750は、データの各受信ページをNANDフラッシュチップ770に二度書き込むため、受ける摩耗の量が二倍になる。しかし、摩耗が多くのNANDフラッシュチップ770にわたって均一に分散されると、このさらなる摩耗の量は、許容できるものになり得る。
図9は、例示的な実現例に係る、ウェアレベリングのための循環式NANDバッファを有するNANDフラッシュストレージデバイスを使用する方法900の例を示すフローチャートである。たとえば、方法900は、図7を参照して上記したNANDフラッシュストレージデバイス750によって実行することができる。方法900は、書込動作を実行することによって引き起こされる摩耗を分散させて、書込動作を少数のNANDフラッシュチップに集中させることによって引き起こされ得る故障を回避するために、利用可能なNANDフラッシュチップを循環して、各々を順番にバッファNANDチップとして指定することができる。方法900は、第1のNANDフラッシュチップを二次書込(SW)チップとして指定し、第2のNANDフラッシュチップを将来的な二次書込(FSW)チップとして指定し、第3のNANDフラッシュチップを一次書込(PW)チップとして指定し、第4のNANDフラッシュチップを将来的な一次書込(FPW)チップとして指定するステップ(段階910)を含む。方法900は、入力/出力(I/O)バスを介してデータを受信するステップ(段階920)を含む。方法900は、各チップへの書込動作が時間的に重ならないように、受信したデータをPWチップおよびSWチップに連続的に書き込むステップ(段階930)を含む。方法900は、I/Oバスを介して読取コマンドを受信するステップ(段階940)を含む。方法900は、読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないNANDフラッシュチップからデータを読み取るステップ(段階950)を含む。方法900は、有効データをFPWチップからFSWチップにコピーするステップ(段階960)を含む。方法900は、受信したデータの書き込みおよび有効データのコピーに続いて、第1のNANDフラッシュチップをリードオンリとして指定し、第2のNANDフラッシュチップをSWチップとして指定し、第3のNANDフラッシュチップをFSWチップとして指定し、第4のNANDフラッシュチップをPWチップとして指定するステップ(段階970)を含む。
方法900は、第1のNANDフラッシュチップをSWチップとして指定し、第2のNANDフラッシュチップをFSWチップとして指定し、第3のNANDフラッシュチップをPWチップとして指定し、第4のNANDフラッシュチップをFPWチップとして指定するステップ(段階910)を含む。これらの指定については、図8を参照して上記している。
方法900は、I/Oバスを介してデータを受信するステップ(段階920)を含む。段階920は、上記の段階310および610と同様である。
方法900は、各チップへの書込動作が時間的に重ならないように、受信したデータをPWチップおよびSWチップに連続的に書き込むステップ(段階930)を含む。段階930は、上記の段階320および620と同様である。いくつかの実現例では、方法900は、段階950に進む前にPWチップおよびSWチップが一杯または実質的に一杯になるまで段階920の受信動作および段階930の書込動作を実行し続けてもよい。下記の段階940および950の動作は、段階920および930の動作と同時に実行することができる。
方法900は、I/Oバスを介して読取コマンドを受信するステップ(段階940)を含む。段階940は、上記の段階330および640と同様である。
方法900は、読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないNANDフラッシュチップからデータを読み取るステップ(段階950)を含む。段階950は、上記の段階340および650と同様である。実際には、要求されたデータは、ROチップ、PWチップもしくはSWチップのうちの1つ、またはFPWチップもしくはFSWチップのうちの1つにあってもよい。コントローラは、要求されたデータがどこにあるかに応じて、3つの方法のうちの1つの方法で読取要求を処理してもよい。要求されたデータがPWチップまたはSWチップにある場合、コントローラは、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないPWチップまたはSWチップのいずれかに対して読取動作を実行することができ、方法600は次の段階に進むことができる。要求されたデータがROチップにある場合、コントローラは、単にROチップに対して読取動作を実行してデータを返すことができ、読取動作の実行と干渉したり読取動作の実行を遅延させたりするであろう書込動作は生じない。要求されたデータがFPWチップまたはFSWチップにある場合、コントローラは、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していないFPWまたはFSWのいずれかに対して読取動作を実行することができる。すなわち、ガベージコレクションによりデータが現在FPWチップからFSWチップにコピーされている場合、コントローラ460は、FSWチップに対して書込動作を実行しているため、FPWチップに対して読取動作を実行することができる。データがFSWチップからFPWチップにコピーバックされている場合、コントローラは、FSWチップに対して読取動作を実行することができる。このようにして、どのNANDフラッシュチップが要求されたデータを含んでいるか、およびどのNANDフラッシュチップが書込動作を実行しているかにかかわらず、NANDフラッシュデバイスは、読取動作を書込動作の後ろのキューに入れることによって引き起こされる過度の遅延なしに、要求されたデータを読み取って返すことができる。このように、段階940および950は、段階920および930と同時に進むことができ、読取動作は、ゆっくりとした書込動作の後ろのキューに入れられることなく迅速に処理することができる。段階920~950は、さらなるデータおよび読取コマンドがI/Oバスを介して受信されると繰り返すことができる。
方法900は、有効データをFPWチップからFSWチップにコピーするステップ(段階960)を含む。後の段階でバッファNANDチップとしての役割を果たすように2つの新たなNANDフラッシュチップを準備するために、方法900は、データを一方のNANDフラッシュチップから別のNANDフラッシュチップにコピーすることができる。コピー元はFPWチップとして指定され得て、コピー先はFSWチップとして指定され得る。いくつかの実現例では、コピー動作は双方向であってもよい。すなわち、FPWチップおよびFSWチップの各々が他方のデータの複製を含むようにデータをFPWチップとFSWチップとの間で調和させることができる。コピー動作中、FSWチップおよびFPWチップは、ガベージコレクションを実行して、データおよび無効なまたはもはや必要でないデータの空き空間を統合することができる。段階960のコピー動作は、段階920および930のバッファリング動作と重なり合う期間中に実行することができる。また、読取コマンドは、コピー動作の一部として現在書込動作を実行していないFPWおよびFSWのいずれかによって受信され実行されることができる。このようにして、段階960のコピー動作は、段階940および950の読取動作と重なり合う期間中にも実行することができる。
方法900は、受信したデータの書き込みおよび有効データのコピーに続いて、第1のNANDフラッシュチップをリードオンリチップとして指定し、第2のNANDフラッシュチップをSWチップとして指定し、第3のNANDフラッシュチップをFSWチップとして指定し、第4のNANDフラッシュチップをPWチップとして指定するステップ(段階970)を含む。FPWチップおよびFSWチップは、重複データを含むと、それぞれPWチップおよびSWチップとして引き継ぐ準備ができていることになる。バッファNANDフラッシュチップが依然として書込動作を処理している間にコピー動作を実行することができる限り、NANDフラッシュストレージデバイス770は、遅延なしに指定を切り換えて、書込帯域幅の大幅なロスなしに書込動作を実行し続けることができる。
いくつかの実現例では、循環が継続し得る。たとえば、コントローラ760は、第5のNANDフラッシュチップ770eをFPWチップとして指定することができる。コントローラ760は、各チップへの書込動作が時間的に重ならないように、I/Oバス730を介して受信した第2のデータをPWチップおよびSWチップに書き込むことができる。コントローラ760は、第2の有効データをFPWチップからFSWチップにコピーすることができる。そして、第2の受信したデータの書き込みおよび第2の有効データのコピーに続いて、コントローラ760は、第2のNANDフラッシュチップをリードオンリとして指定し、第3のNANDフラッシュチップをSWチップとして指定し、第4のNANDフラッシュチップをFSWチップとして指定し、第5のNANDフラッシュチップをPWチップとして指定し、第6のNANDフラッシュチップをFPWチップとして指定することができる。
本明細書は多くの具体的な実現例の詳細を含んでいるが、これらは、いずれの発明または請求の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実現例に特有の特徴を説明するものとして解釈されるべきである。別々の実現例の文脈で本明細書に記載されている特定の特徴は、単一の実現例において組み合わせて実現することも可能である。逆に、単一の実現例の文脈で記載されているさまざまな特徴は、複数の実現例において別々にまたは任意の好適な部分的な組み合わせで実現することも可能である。さらに、特徴は、特定の組み合わせで動作するものとして上記され、最初にそのように記載されているかもしれないが、記載されている組み合わせの中の1つ以上の特徴は、場合によってはこの組み合わせから除外されてもよく、記載されている組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
「または」への言及は、「または」を使用して記載されているいずれの語も、記載されている語のうちの1つ、2つ以上および全てのいずれも意味するように包括的なものとして解釈され得る。「第1の」、「第2の」、「第3の」などの表示は、必ずしも順序を意味することを意図しているわけではなく、一般に、同様または類似の項目または要素同士を区別するために使用しているに過ぎない。
本開示に記載されている実現例に対するさまざまな変形例は、当業者に容易に明らかになり、本明細書に定義されている一般的原理は、本開示の精神または範囲から逸脱することなく他の実現例に適用されてもよい。したがって、特許請求の範囲は、本明細書に示されている実現例に限定されるよう意図されるものではなく、本開示、原理、および本明細書に開示されている新規の特徴と首尾一貫した最も広い範囲を付与されることが意図されている。

Claims (16)

  1. NANDフラッシュストレージデバイスであって、
    第1~第4のNANDフラッシュチップを含む複数のNANDフラッシュチップと、
    コントローラとを備え、前記コントローラは、
    前記第1のNANDフラッシュチップを二次書込チップとして指定し、前記第2のNANDフラッシュチップを将来的な二次書込チップとして指定し、前記第3のNANDフラッシュチップを一次書込チップとして指定し、前記第4のNANDフラッシュチップを将来的な一次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するように構成され、
    入力/出力(I/O)バスを介してデータを受信するように構成され、
    各NANDフラッシュチップへの書込動作が時間的に重ならないように、前記受信したデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むように構成され、
    前記I/Oバスを介して読取コマンドを受信するように構成され、
    前記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない前記一次書込チップまたは前記二次書込チップのいずれかからデータを読み取るように構成され、
    有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするように構成され、
    前記受信したデータの前記書き込みおよび前記有効データの前記コピーに続いて、前記第1のNANDフラッシュチップをリードオンリとして指定し、前記第2のNANDフラッシュチップを前記二次書込チップとして指定し、前記第3のNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第4のNANDフラッシュチップを前記一次書込チップとして指定するように構成される、NANDフラッシュストレージデバイス。
  2. 前記コントローラは、
    前記受信したデータの前記書き込みおよび前記有効データの前記コピーに続いて、
    第5のNANDフラッシュチップを前記将来的な一次書込チップとして指定するように構成され、
    各チップへの書込動作が時間的に重ならないように、前記I/Oバスを介して受信した第2のデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むように構成され、
    第2の有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするように構成され、
    受信した前記第2のデータの前記書き込みおよび前記第2の有効データの前記コピーに続いて、前記第2のNANDフラッシュチップをリードオンリとして指定し、前記第3のNANDフラッシュチップを前記二次書込チップとして指定し、前記第4のNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第5のNANDフラッシュチップを前記一次書込チップとして指定するように構成される、請求項1に記載のNANDフラッシュストレージデバイス。
  3. 前記コピーは、
    前記有効データおよび空き空間がそれぞれ、前記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーすることと、
    前記有効データおよび前記空き空間がそれぞれ、前記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な二次書込チップから前記将来的な一次書込チップにコピーバックすることと、
    前記空き空間が占める前記将来的な一次書込チップおよび前記将来的な二次書込チップの前記メモリ空間を消去することとを含む、請求項1または2に記載のNANDフラッシュストレージデバイス。
  4. 前記書込動作および前記コピーは、重なり合う期間中に実行される、請求項1~3のいずれか1項に記載のNANDフラッシュストレージデバイス。
  5. NANDフラッシュストレージデバイスであって、
    第1および第2のバッファNANDフラッシュチップを含む複数のバッファNANDフラッシュチップと、
    第1および第2のストレージNANDフラッシュチップを含む複数のストレージNANDフラッシュチップと、
    コントローラとを備え、
    前記コントローラは、
    前記第1のストレージNANDフラッシュチップを一次書込チップとして指定し、第2のストレージNANDフラッシュチップを将来的な一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを二次書込チップとして指定し、第2のバッファNANDフラッシュチップを将来的な二次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するように構成され、
    入力/出力(I/O)バスを介して入来データを受信するように構成され、
    各NANDフラッシュチップへの書込動作が時間的に重ならないように、前記受信した入来データを前記複数のバッファNANDフラッシュチップのうちの第1のバッファNANDフラッシュチップおよび前記複数のストレージNANDフラッシュチップのうちの第1のストレージNANDフラッシュチップに連続的に書き込むように構成され、
    前記I/Oバスを介して読取コマンドを受信するように構成され、
    前記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない前記第1のバッファNANDフラッシュチップまたは前記第1のストレージNANDフラッシュチップのいずれかからデータを読み取るように構成され、
    有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするように構成され、
    前記受信した入来データの前記書き込みおよび前記有効データの前記コピーに続いて、前記第1のストレージNANDフラッシュチップをリードオンリとして指定し、前記第2のストレージNANDフラッシュチップを前記一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第2のバッファNANDフラッシュチップを前記二次書込チップとして指定するように構成される、NANDフラッシュストレージデバイス。
  6. 前記コントローラは、
    前記受信した入来データの前記書き込みおよび前記有効データの前記コピーに続いて、
    第3のストレージNANDフラッシュチップを前記将来的な一次書込チップとして指定するように構成され、
    各チップへの書込動作が時間的に重ならないように、前記I/Oバスを介して受信した第2のデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むように構成され、
    第2の有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするように構成され、
    受信した前記第2のデータの前記書き込みおよび前記第2の有効データの前記コピーに続いて、前記第2のストレージNANDフラッシュチップをリードオンリとして指定し、前記第3のストレージNANDフラッシュチップを前記一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを前記二次書込チップとして指定し、前記第2のバッファNANDフラッシュチップを前記将来的な二次書込チップとして指定するように構成される、請求項5に記載のNANDフラッシュストレージデバイス。
  7. 前記コピーは、
    前記有効データおよび空き空間がそれぞれ、前記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーすることと、
    前記有効データおよび前記空き空間がそれぞれ、前記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な二次書込チップから前記将来的な一次書込チップにコピーバックすることと、
    前記空き空間が占める前記将来的な一次書込チップおよび前記将来的な二次書込チップの前記メモリ空間を消去することとを含む、請求項5または6に記載のNANDフラッシュストレージデバイス。
  8. 前記バッファNANDフラッシュチップは、シングルレベルセル(SLC)NANDフラッシュチップであり、
    前記ストレージNANDフラッシュチップは、トリプルレベルセル(TLC)NANDフラッシュチップである、請求項5~7のいずれか1項に記載のNANDフラッシュストレージデバイス。
  9. 第1~第4のNANDフラッシュチップを含むNANDフラッシュストレージデバイスをコントローラがバッファリングする方法であって、
    前記第1のNANDフラッシュチップを二次書込チップとして指定し、前記第2のNANDフラッシュチップを将来的な二次書込チップとして指定し、前記第3のNANDフラッシュチップを一次書込チップとして指定し、前記第4のNANDフラッシュチップを将来的な一次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するステップと、
    入力/出力(I/O)バスを介してデータを受信するステップと、
    各NANDフラッシュチップへの書込動作が時間的に重ならないように、前記受信したデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むステップと、
    前記I/Oバスを介して読取コマンドを受信するステップと、
    前記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない前記一次書込チップまたは前記二次書込チップのいずれかからデータを読み取るステップと、
    有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするステップと、
    前記受信したデータの前記書き込みおよび前記有効データの前記コピーに続いて、前記第1のNANDフラッシュチップをリードオンリとして指定し、前記第2のNANDフラッシュチップを前記二次書込チップとして指定し、前記第3のNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第4のNANDフラッシュチップを前記一次書込チップとして指定するステップとを備える、方法。
  10. 前記受信したデータの前記書き込みおよび前記有効データの前記コピーに続いて、
    第5のNANDフラッシュチップを前記将来的な一次書込チップとして指定するステップと、
    各チップへの書込動作が時間的に重ならないように、前記I/Oバスを介して受信した第2のデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むステップと、
    第2の有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするステップと、
    受信した前記第2のデータの前記書き込みおよび前記第2の有効データの前記コピーに続いて、前記第2のNANDフラッシュチップをリードオンリとして指定し、前記第3のNANDフラッシュチップを前記二次書込チップとして指定し、前記第4のNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第5のNANDフラッシュチップを前記一次書込チップとして指定するステップとを備える、請求項9に記載の方法。
  11. 前記コピーは、
    前記有効データおよび空き空間がそれぞれ、前記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーすることと、
    前記有効データおよび前記空き空間がそれぞれ、前記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な二次書込チップから前記将来的な一次書込チップにコピーバックすることと、
    前記空き空間が占める前記将来的な一次書込チップおよび前記将来的な二次書込チップの前記メモリ空間を消去することとを含む、請求項9または10に記載の方法。
  12. 前記書込動作および前記コピーは、重なり合う期間中に実行される、請求項9~11のいずれか1項に記載の方法。
  13. 第1および第2のバッファNANDフラッシュチップを含む複数のバッファNANDフラッシュチップと、第1および第2のストレージNANDフラッシュチップを含む複数のストレージNANDフラッシュチップとを含むNANDフラッシュストレージデバイスをコントローラがバッファリングする方法であって、
    前記第1のストレージNANDフラッシュチップを一次書込チップとして指定し、前記第2のストレージNANDフラッシュチップを将来的な一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを二次書込チップとして指定し、前記第2のバッファNANDフラッシュチップを将来的な二次書込チップとして指定し、残りのNANDフラッシュチップをリードオンリとして指定するステップと、
    入力/出力(I/O)バスを介してデータを受信するステップと、
    各NANDフラッシュチップへの書込動作が時間的に重ならないように、前記受信した入来データを複数のバッファNANDフラッシュチップのうちの第1のバッファNANDフラッシュチップおよび複数のストレージNANDフラッシュチップのうちの第1のストレージNANDフラッシュチップに連続的に書き込むステップと、
    前記I/Oバスを介して読取コマンドを受信するステップと、
    前記読取コマンドを受信したことに応答して、読取動作が書込動作の後ろのキューに入れられないように、現在書込動作を実行していない前記第1のバッファNANDフラッシュチップまたは前記第1のストレージNANDフラッシュチップのいずれかからデータを読み取るステップと、
    有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするステップと、
    前記受信した入来データの前記書き込みおよび前記有効データの前記コピーに続いて、前記第1のストレージNANDフラッシュチップをリードオンリとして指定し、前記第2のストレージNANDフラッシュチップを前記一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを前記将来的な二次書込チップとして指定し、前記第2のバッファNANDフラッシュチップを前記二次書込チップとして指定するステップとを備える、方法。
  14. 前記受信した入来データの前記書き込みおよび前記有効データの前記コピーに続いて、
    第3のストレージNANDフラッシュチップを前記将来的な一次書込チップとして指定するステップと、
    各チップへの書込動作が時間的に重ならないように、前記I/Oバスを介して受信した第2のデータを前記一次書込チップおよび前記二次書込チップに連続的に書き込むステップと、
    第2の有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーするステップと、
    受信した前記第2のデータの前記書き込みおよび前記第2の有効データの前記コピーに続いて、前記第2のストレージNANDフラッシュチップをリードオンリとして指定し、前記第3のストレージNANDフラッシュチップを前記一次書込チップとして指定し、前記第1のバッファNANDフラッシュチップを前記二次書込チップとして指定し、前記第2のバッファNANDフラッシュチップを前記将来的な二次書込チップとして指定するステップとを備える、請求項13に記載の方法。
  15. 前記コピーは、
    前記有効データおよび空き空間がそれぞれ、前記将来的な二次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な一次書込チップから前記将来的な二次書込チップにコピーすることと、
    前記有効データおよび前記空き空間がそれぞれ、前記将来的な一次書込チップの実質的に連続したそれぞれのメモリ空間を占めるように、前記有効データを前記将来的な二次書込チップから前記将来的な一次書込チップにコピーバックすることと、
    前記空き空間が占める前記将来的な一次書込チップおよび前記将来的な二次書込チップの前記メモリ空間を消去することとを含む、請求項13または14に記載の方法。
  16. 前記バッファNANDフラッシュチップは、シングルレベルセル(SLC)NANDフラッシュチップであり、
    前記ストレージNANDフラッシュチップは、トリプルレベルセル(TLC)NANDフラッシュチップである、請求項13~15のいずれか1項に記載の方法。
JP2019566261A 2017-06-23 2018-03-15 Nandバッファを有するnandフラッシュストレージデバイス Active JP7234144B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762524016P 2017-06-23 2017-06-23
US62/524,016 2017-06-23
US15/816,447 2017-11-17
US15/816,447 US10606484B2 (en) 2017-06-23 2017-11-17 NAND flash storage device with NAND buffer
PCT/US2018/022683 WO2018236440A1 (en) 2017-06-23 2018-03-15 NAND FLASH STORAGE DEVICE WITH NAND BUFFER

Publications (3)

Publication Number Publication Date
JP2020524839A JP2020524839A (ja) 2020-08-20
JP2020524839A5 JP2020524839A5 (ja) 2020-10-01
JP7234144B2 true JP7234144B2 (ja) 2023-03-07

Family

ID=61899381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019566261A Active JP7234144B2 (ja) 2017-06-23 2018-03-15 Nandバッファを有するnandフラッシュストレージデバイス

Country Status (9)

Country Link
US (1) US10606484B2 (ja)
EP (1) EP3418897B1 (ja)
JP (1) JP7234144B2 (ja)
KR (1) KR102276350B1 (ja)
CN (1) CN109117085B (ja)
DE (2) DE102018109929A1 (ja)
GB (1) GB2563713B (ja)
TW (1) TWI727160B (ja)
WO (1) WO2018236440A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481834B2 (en) * 2018-01-24 2019-11-19 Samsung Electronics Co., Ltd. Erasure code data protection across multiple NVME over fabrics storage devices
US11048430B2 (en) 2019-04-12 2021-06-29 Netapp, Inc. Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
JP2021043908A (ja) * 2019-09-13 2021-03-18 キオクシア株式会社 メモリシステムおよび制御方法
US11269779B2 (en) 2020-05-27 2022-03-08 Microsoft Technology Licensing, Llc Memory system with a predictable read latency from media with a long write latency

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145475A1 (en) 2009-12-15 2011-06-16 International Business Machines Corporation Reducing access contention in flash-based memory systems
US20110258362A1 (en) 2008-12-19 2011-10-20 Mclaren Moray Redundant data storage for uniform read latency
JP2012523624A (ja) 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置
US20140281170A1 (en) 2013-03-15 2014-09-18 Samsung Electronics Co., Ltd. Nonvolatile storage device and operating system (os) image program method thereof

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
WO2013048451A1 (en) 2011-09-30 2013-04-04 Intel Corporation Presentation of direct accessed storage under a logical drive model
CN106021147B (zh) * 2011-09-30 2020-04-28 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
JP2013109404A (ja) * 2011-11-17 2013-06-06 Toshiba Corp 情報処理装置
US8301832B1 (en) 2012-03-23 2012-10-30 DSSD, Inc. Storage system with guaranteed read latency
US20140304452A1 (en) 2013-04-03 2014-10-09 Violin Memory Inc. Method for increasing storage media performance
US9213634B2 (en) * 2013-11-22 2015-12-15 Apple Inc. Efficient reuse of segments in nonoverwrite storage systems
US9632729B2 (en) * 2014-05-07 2017-04-25 Seagate Technology Llc Storage compute device with tiered memory processing
KR20160075229A (ko) 2014-12-19 2016-06-29 삼성전자주식회사 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
US9880778B2 (en) 2015-11-09 2018-01-30 Google Inc. Memory devices and methods
US10318175B2 (en) * 2017-03-07 2019-06-11 Samsung Electronics Co., Ltd. SSD with heterogeneous NVM types

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110258362A1 (en) 2008-12-19 2011-10-20 Mclaren Moray Redundant data storage for uniform read latency
JP2012513060A (ja) 2008-12-19 2012-06-07 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 均一な読み出し待ち時間のための冗長なデータ記憶
JP2012523624A (ja) 2009-04-08 2012-10-04 グーグル インコーポレイテッド フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置
US20140108708A1 (en) 2009-04-08 2014-04-17 Google Inc. Raid configuration in a flash memory data storage device
US20110145475A1 (en) 2009-12-15 2011-06-16 International Business Machines Corporation Reducing access contention in flash-based memory systems
JP2013513881A (ja) 2009-12-15 2013-04-22 インターナショナル・ビジネス・マシーンズ・コーポレーション フラッシュ型メモリ・システムにおけるアクセス競合の低減方法、プログラム及びシステム
US20140281170A1 (en) 2013-03-15 2014-09-18 Samsung Electronics Co., Ltd. Nonvolatile storage device and operating system (os) image program method thereof
JP2014182832A (ja) 2013-03-15 2014-09-29 Samsung Electronics Co Ltd 不揮発性格納装置及びその運営体系イメージプログラム方法

Also Published As

Publication number Publication date
CN109117085B (zh) 2021-08-20
GB2563713B (en) 2020-01-15
CN109117085A (zh) 2019-01-01
TWI727160B (zh) 2021-05-11
GB2563713A (en) 2018-12-26
US20180373440A1 (en) 2018-12-27
US10606484B2 (en) 2020-03-31
KR102276350B1 (ko) 2021-07-12
WO2018236440A1 (en) 2018-12-27
TW201905921A (zh) 2019-02-01
DE202018102304U1 (de) 2018-10-30
KR20200003055A (ko) 2020-01-08
JP2020524839A (ja) 2020-08-20
GB201804693D0 (en) 2018-05-09
EP3418897A1 (en) 2018-12-26
EP3418897B1 (en) 2022-09-14
DE102018109929A1 (de) 2018-12-27

Similar Documents

Publication Publication Date Title
JP7234144B2 (ja) Nandバッファを有するnandフラッシュストレージデバイス
US11416391B2 (en) Garbage collection
US11586357B2 (en) Memory management
KR101692417B1 (ko) 다이렉트 액세스를 갖는 다중-레벨 메모리
US10379782B2 (en) Host managed solid state drivecaching using dynamic write acceleration
JP2013242908A (ja) ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法
US20150052329A1 (en) Memory control device, host computer, information processing system and method of controlling memory control device
KR20100100394A (ko) 반도체 디스크 장치 그리고 그것의 데이터 기록 및 읽기 방법
US20220171574A1 (en) Multi-Pass Data Programming in a Memory Sub-System having Multiple Dies and Planes
JP2012221038A (ja) メモリシステム
KR20220031490A (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
JP2011070365A (ja) メモリシステム
WO2020263586A1 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
CN112166405A (zh) 在存储器系统中分配可变媒体类型的存储器装置
US11507289B2 (en) Storage device, controller and method for operating storage device
JP2024513234A (ja) ソリッドステートドライブ内のnandダイの衝突を軽減する方法及び装置
KR101515621B1 (ko) 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법
EP3772682A1 (en) Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory
US11829650B2 (en) Memory sub-system data migration
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
KR20230063857A (ko) 스토리지 장치 및 전자 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200819

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220621

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230222

R150 Certificate of patent or registration of utility model

Ref document number: 7234144

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150