CN109117085A - 具有nand缓冲器的nand闪速存储设备 - Google Patents
具有nand缓冲器的nand闪速存储设备 Download PDFInfo
- Publication number
- CN109117085A CN109117085A CN201810391996.1A CN201810391996A CN109117085A CN 109117085 A CN109117085 A CN 109117085A CN 201810391996 A CN201810391996 A CN 201810391996A CN 109117085 A CN109117085 A CN 109117085A
- Authority
- CN
- China
- Prior art keywords
- chip
- flash memory
- nand flash
- write
- appointed
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及具有NAND缓冲器的NAND闪速存储设备。至少一个方面涉及NAND闪速存储设备,所述NAND闪速存储设备包括多个NAND闪存芯片和控制器。所述控制器被配置成通过输入/输出(I/O)总线接收数据,并且将所接收的数据写入到所述多个NAND闪存芯片中的第一NAND闪存芯片和所述多个NAND闪存芯片中的第二NAND闪存芯片。到每个NAND闪存芯片的写入操作在时间上不重叠。所述控制器被配置成从所述第一NAND闪存芯片或所述第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
Description
技术领域
本申请涉及具有NAND缓冲器的NAND闪速存储设备。
相关申请
本申请要求于2017年6月23日提交的标题为“NAND FLASH STORAGE DEVICE WITHNAND BUFFER”的美国临时专利申请No.62/524,016的利益和优先权,所述美国临时专利申请的完整内容特此以引用的方式并入。
背景技术
基于NAND闪存的存储设备具有良好的平均延迟;然而,被称作最坏情况延迟的“尾延迟”可以长得多。在NAND闪速存储设备中提供可预测的延迟在NAND闪存技术的一些应用中可以是有利的,例如在基于NAND闪存的存储设备和交换设备中。交换设备可以充当扩展的存储器空间,有时称作计算系统中的交换空间。交换设备可以表示RAM的较快速度与诸如硬盘驱动器(HDD)或固态驱动器(SSD)等可选存储器/存储媒体的较低成本之间的平衡点。基于NAND闪存的SSD虽然比HDD快,但是由于NAND闪存芯片的操作方式而遭遇不可预测的尾延迟。
发明内容
至少一个方面涉及NAND闪速存储设备。NAND闪速存储设备包括多个NAND闪存芯片和控制器。控制器被配置成通过输入/输出(I/O)总线接收数据。控制器被配置成相继地将接收的数据写入到多个NAND闪存芯片中的第一NAND闪存芯片和多个NAND闪存芯片中的第二NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠。控制器被配置成通过I/O总线接收读取命令。控制器被配置成响应于接收读取命令而从第一NAND闪存芯片或第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
在一些实施方式中,控制器可以被进一步配置成将第一NAND闪存芯片指定为次级写入芯片,将第二NAND闪存芯片指定为未来次级写入芯片,将第三NAND闪存芯片指定为初级写入芯片,将第四NAND闪存芯片指定为未来初级写入芯片,并且将任何其余NAND闪存芯片指定为只读。控制器可以被配置成相继地将接收的数据写入到初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。控制器可以被配置成从未来初级写入芯片复制有效数据到未来次级写入芯片。控制器可以被配置成在接收的数据的写入和有效数据的复制之后,将第一NAND闪存芯片指定为只读,将第二NAND闪存芯片指定为次级写入芯片,将第三NAND闪存芯片指定为未来次级写入芯片,并且将第四NAND闪存芯片指定为初级写入芯片。
在一些实施方式中,控制器还可以被配置成在接收的数据的写入和有效数据的复制之后,将第五NAND闪存芯片指定为未来初级写入芯片。控制器可以被配置成相继地将通过I/O总线接收的第二数据写入初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。控制器可以被配置成从未来初级写入芯片复制第二有效数据到未来次级写入芯片。控制器可以被配置成在接收的数据的写入和有效数据的复制之后,将第二NAND闪存芯片指定为只读,将第三NAND闪存芯片指定为次级写入芯片,将第四NAND闪存芯片指定为未来次级写入芯片,并且将第五NAND闪存芯片指定为初级写入芯片。
在一些实施方式中,复制操作可以包括从未来初级写入芯片复制有效数据到未来次级写入芯片,以使得有效数据和自由空间分别占用未来次级写入芯片的大致连续的相应存储器空间。复制操作可以包括从未来次级写入芯片复制有效数据回到未来初级写入芯片,以使得有效数据和自由空间分别占用未来初级写入芯片的大致连续的相应存储器空间。复制操作可以包括擦除被自由空间占用的未来初级写入芯片和未来次级写入芯片的存储器空间。
在一些实施方式中,写入操作和复制操作是在重叠的时间段期间执行的。
至少一个方面涉及NAND闪速存储设备。NAND闪速存储设备包括多个缓冲器NAND闪存芯片、多个存储NAND闪存芯片和控制器。控制器被配置成通过输入/输出(I/O)总线接收传入数据。控制器被配置成相继地将接收的传入数据写入到多个存储NAND闪存芯片中的第一缓冲器NAND闪存芯片和多个缓冲器NAND闪存芯片中的第一存储NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠。控制器被配置成通过I/O总线接收读取命令。控制器被配置成响应于接收读取命令而从第一缓冲器NAND闪存芯片或第一存储NAND闪存芯片中当前未执行读取操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
在一些实施方式中,控制器可以被配置成将第一存储NAND闪存芯片指定为初级写入芯片,将第二存储NAND闪存芯片指定为未来初级写入芯片,将第一缓冲器NAND闪存芯片指定为次级写入芯片,将第二缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将任何其余NAND闪存芯片指定为只读。控制器可以被配置成相继地将接收的数据写入到初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。控制器可以被配置成从未来初级写入芯片复制有效数据到未来次级写入芯片。控制器可以被配置成在接收的数据的写入和有效数据的复制之后,将第一存储NAND闪存芯片指定为只读,将第二存储NAND闪存芯片指定为初级写入芯片,将第一缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将第二缓冲器NAND闪存芯片指定为次级写入芯片。
在一些实施方式中,控制器可以被配置成在接收的数据的写入和有效数据的复制之后,将第三存储NAND闪存芯片指定为未来初级写入芯片。控制器可以被配置成相继地将通过I/O总线接收的第二数据写入初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。控制器可以被配置成从未来初级写入芯片复制第二有效数据到未来次级写入芯片。控制器可以被配置成在第二接收的数据的写入和第二有效数据的复制之后,将第二存储NAND闪存芯片指定为只读,将第三存储NAND闪存芯片指定为初级写入芯片,将第一缓冲器NAND闪存芯片指定为次级写入芯片,并且将第二缓冲器NAND闪存芯片指定为未来次级写入芯片。
在一些实施方式中,复制操作可以包括从未来初级写入芯片复制有效数据到未来次级写入芯片,以使得有效数据和自由空间分别占用未来次级写入芯片的大致连续的相应存储器空间。复制操作可以包括:从未来次级写入芯片复制有效数据回到未来初级写入芯片,以使得有效数据和自由空间分别占用未来初级写入芯片的大致连续的相应存储器空间;以及擦除被自由空间占用的未来初级写入芯片和未来次级写入芯片的存储器空间。
在一些实施方式中,缓冲器NAND闪存芯片可以是单层单元(SLC)NAND闪存芯片,且存储NAND闪存芯片可以是三层单元(TLC)NAND闪存芯片。
至少一个方面涉及对NAND闪速存储设备进行缓冲的方法。所述方法包括通过输入/输出(I/O)总线接收数据。所述方法包括相继地将接收的数据写入到多个NAND闪存芯片中的第一NAND闪存芯片和多个NAND闪存芯片中的第二NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠。所述方法包括通过I/O总线接收读取命令。所述方法包括响应于接收读取命令而从第一NAND闪存芯片或第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
在一些实施方式中,所述方法可以包括将第一NAND闪存芯片指定为次级写入芯片,将第二NAND闪存芯片指定为未来次级写入芯片,将第三NAND闪存芯片指定为初级写入芯片,将第四NAND闪存芯片指定为未来初级写入芯片,并且将任何其余NAND闪存芯片指定为只读。所述方法可以包括相继地将接收的数据写入到初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。所述方法可以包括从未来初级写入芯片复制有效数据到未来次级写入芯片。所述方法可以包括在接收的数据的写入和有效数据的复制之后,将第一NAND闪存芯片指定为只读,将第二NAND闪存芯片指定为次级写入芯片,将第三NAND闪存芯片指定为未来次级写入芯片,并且将第四NAND闪存芯片指定为初级写入芯片。
在一些实施方式中,所述方法可以包括在接收的数据的写入和有效数据的复制之后,将第五NAND闪存芯片指定为未来初级写入芯片。所述方法可以包括相继地将通过I/O总线接收的第二数据写入初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。所述方法可以包括从未来初级写入芯片复制第二有效数据到未来次级写入芯片。所述方法可以包括在第二接收的数据的写入和第二有效数据的复制之后,将第二NAND闪存芯片指定为只读,将第三NAND闪存芯片指定为次级写入芯片,将第四NAND闪存芯片指定为未来次级写入芯片,并且将第五NAND闪存芯片指定为初级写入芯片。
在一些实施方式中,复制操作可以包括从未来初级写入芯片复制有效数据到未来次级写入芯片,以使得有效数据和自由空间分别占用未来次级写入芯片的大致连续的相应存储器空间。复制操作可以包括从未来次级写入芯片复制有效数据回到未来初级写入芯片,以使得有效数据和自由空间分别占用未来初级写入芯片的大致连续的相应存储器空间。复制操作可以包括擦除被自由空间占用的未来初级写入芯片和未来次级写入芯片的存储器空间。
在一些实施方式中,写入操作和复制操作是在重叠的时间段期间执行的。
至少一个方面涉及对NAND闪速存储设备进行缓冲的方法。所述方法包括通过输入/输出(I/O)总线接收数据。所述方法包括相继地将接收的传入数据写入到多个存储NAND闪存芯片中的第一缓冲器NAND闪存芯片和多个缓冲器NAND闪存芯片中的第一存储NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠。所述方法包括通过I/O总线接收读取命令。所述方法包括响应于接收读取命令而从第一缓冲器NAND闪存芯片或第一存储NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
在一些实施方式中,所述方法包括将第一存储NAND闪存芯片指定为初级写入芯片,将第二存储NAND闪存芯片指定为未来初级写入芯片,将第一缓冲器NAND闪存芯片指定为次级写入芯片,将第二缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将任何其余NAND闪存芯片指定为只读。所述方法包括相继地将接收的数据写入到初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。所述方法包括从未来初级写入芯片复制有效数据到未来次级写入芯片。所述方法包括在接收的数据的写入和有效数据的复制之后,将第一存储NAND闪存芯片指定为只读,将第二存储NAND闪存芯片指定为初级写入芯片,将第一缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将第二缓冲器NAND闪存芯片指定为次级写入芯片。
在一些实施方式中,所述方法包括在接收的数据的写入和有效数据的复制之后,将第三存储NAND闪存芯片指定为未来初级写入芯片。所述方法包括相继地将通过I/O总线接收的第二数据写入初级写入芯片和次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠。所述方法包括从未来初级写入芯片复制第二有效数据到未来次级写入芯片。所述方法包括在第二接收的数据的写入和第二有效数据的复制之后,将第二存储NAND闪存芯片指定为只读,将第三存储NAND闪存芯片指定为初级写入芯片,将第一缓冲器NAND闪存芯片指定为次级写入芯片,并且将第二缓冲器NAND闪存芯片指定为未来次级写入芯片。
在一些实施方式中,所述方法包括从未来初级写入芯片复制有效数据到未来次级写入芯片,以使得有效数据和自由空间分别占用未来次级写入芯片的大致连续的相应存储器空间。所述方法包括从未来次级写入芯片复制有效数据回到未来初级写入芯片,以使得有效数据和自由空间分别占用未来初级写入芯片的大致连续的相应存储器空间。所述方法包括擦除被自由空间占用的未来初级写入芯片和未来次级写入芯片的存储器空间。
在一些实施方式中,缓冲器NAND闪存芯片可以是单层单元(SLC)NAND闪存芯片,且存储NAND闪存芯片可以是三层单元(TLC)NAND闪存芯片。
下面详细讨论了这些方面和其它方面以及实施方式。前述信息和以下详细描述包括各种方面和实施方式的说明性示例,并且提供综述或架构以便理解要求保护的方面和实施方式的性质和特征。附图提供对各种方面和实施方式的说明和进一步理解,并且被并入本说明书中且构成本说明书的一部分。
附图说明
附图并非意在按比例绘制。各种附图中的相似参考编号和名称指示相似的元件。出于清楚的目的,可能并非每个组件都在每张附图上标注。在附图中:
图1是根据说明性实施方式的包括具有NAND缓冲器的NAND闪速存储设备的示例计算机系统的框图;
图2是根据说明性实施方式的具有NAND缓冲器的示例NAND闪速存储设备的框图;
图3是根据说明性实施方式的使用具有NAND缓冲器的示例NAND闪速存储设备的示例方法的流程图;
图4是根据说明性实施方式的具有NAND缓冲器和附加NAND存储装置的示例NAND闪速存储设备的框图;
图5示出根据说明性实施方式的具有NAND缓冲器和附加NAND存储装置的NAND闪速存储设备的示例操作;
图6是示出根据说明性实施方式的使用具有NAND缓冲器和附加NAND存储装置的NAND闪速存储设备的示例方法的流程图;
图7是根据说明性实施方式的具有用于磨损均衡的旋转NAND缓冲器的示例NAND闪速存储设备的框图;
图8示出根据说明性实施方式的具有用于磨损均衡的旋转NAND缓冲器的NAND闪速存储设备的示例操作;并且
图9是示出根据说明性实施方式的使用具有用于磨损均衡的旋转NAND缓冲器的NAND闪速存储设备的示例方法的流程图。
具体实施方式
下面是有关具有NAND缓冲器的可预测延迟NAND闪速存储设备和使用所述NAND闪速存储设备的方法的各种概念及其实施方式的描述。上面引入的和下面更加详细地讨论的各种概念可以以多种方式中的任一个来实现,因为所描述的概念并不限于任何特定方式的实施方式。特定实施方式和应用的示例主要是为了说明性目的而提供的。
本公开大体上涉及具有NAND缓冲器的可预测延迟NAND闪速存储设备。所述存储设备可以是固态驱动器(SSD)或交换设备。交换设备是可以作为随机存取存储器(RAM)的延伸起作用的辅助存储设备。当将保持在存储器中的数据量超过RAM的容量时,在有时被称作“分页(paging)”的操作中可以将这些数据中的一些移动至交换设备。传统地,辅助设备可以是硬盘驱动器(HDD)。从HDD读取和写入数据相对于RAM非常缓慢,然而,使得HDD在检索速度比较重要的设置中作为交换设备不切实际。更近期的SSD,特别是基于NAND闪存的SSD虽然仍然比RAM要慢,但相对于HDD来说,其检索速度更快。NANDSSD往往还比RAM便宜,因此减小RAM容量以支持SSD容量可以引起成本节约。诸如三星的Z-NAND等更最近开发的低延迟NAND(LLNAND)使用特殊电路设计,所述设计改善其典型读取延迟。基于LLNAND的SSD甚至更快,并且因此对于一些服务器应用中的分页和其它临时数据存储是实用的。
然而,NAND闪存SSD具有其它缺点。虽然NAND读取时间非常快,大约为几十微秒,但是擦除操作和写入操作要慢的多,各自为大约为几毫秒。并且,因为NAND闪存芯片无法同时执行读取操作和写入操作,所以排队在擦除/读取操作后面的读取操作可以具有与正常情况相比增加两个或三个数量级的延迟。这被称作“尾延迟”。虽然能够对RAM中的数据进行缓冲以便写入NAND闪存芯片,但是开销可能会非常高昂。例如,具有十个NAND闪存芯片的设备将要求与总NAND容量的十分之一等效的RAM作为缓冲器。因为DRAM可以是NAND存储设备的四倍贵,所以成本开销可以是40%。
因此,本公开提出采用NAND缓冲器来以比RAM缓冲器的成本开销低的成本开销改善尾延迟。系统通过将数据的每个页面按顺序写入两个芯片中来工作:首先写入第一芯片中,并且然后写入第二芯片中。第二芯片可以被视为NAND缓冲器。写入操作在时间上不重叠。读取操作可以由当前未写入操作的芯片来执行。因此,读取操作不必排队在写入操作后面,从而允许NAND闪速存储设备具有更可预测的延迟。
在一些实施方式中,第一芯片(以及扩展来说,第二芯片)被写满,并且可以选择两个新的芯片作为写入缓冲器。该第一芯片可以被切换成只读,并且因为第一芯片可以执行读取操作而不被写入操作中断,所以对存储在第二芯片上的数据的复制将不再必要。第二芯片现在可用于未来的初级写入操作。可以选择两个新的芯片即第三芯片和第四芯片用于写入。在这种情况下,第四芯片可以被视为NAND缓冲器。
为了这种系统工作,选定的用于写入的两个新的芯片含有副本数据是有帮助的。因此,在接收新数据之前,可以首先将第三芯片上的已有数据复制到第四芯片上。复制操作涉及“垃圾收集”,存储器设备执行该操作以清空被已经无效(不再使用)的数据占用的空间。垃圾收集可能是耗时的,并且与擦除/写入操作一样可以防止读取操作被执行直到其完成为止。因此,执行垃圾收集和复制操作以使得最初仅第四芯片被写入,且第三芯片可用于读取。随后,从第四芯片将垃圾被收集的版本复制回到第三芯片,以使得第四芯片可用于读取。接着,第三芯片与第四芯片之间的垃圾收集和复制操作与写入到第一芯片和第二芯片中在时间上重叠。只要垃圾收集和复制操作花费比写入操作少的时间,当第一芯片和第二芯片写满时,第三芯片和第四芯片将准备好接管写入操作的执行。然后将选择一对新的芯片用于垃圾收集和复制操作。
在这样的系统中,在任何给定时间,两个缓冲器芯片含有两个其它芯片中的数据副本。因此,具有10个NAND闪存芯片用于存储的设备可以具有两个附加的NAND闪存缓冲器芯片。成本开销因此将为20%,这可以是使用DRAM缓冲器的成本开销的一半。
可以采用附加的缓冲器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;RAM 120,诸如DRAM;输入/输出(I/O)总线130,诸如外围组件互连高速(PCIe);数据存储设备140,诸如用于长期数据存储的硬盘驱动器(HDD)或固态驱动器(SSD);以及NAND闪速存储设备150。RAM 120可以是主存储器,并且可以通过例如携带所需的位置的存储器地址的地址总线以及用于从指定存储器地址读取数据或将数据写入指定存储器地址的数据总线的数据总线而由CPU 110直接访问。
在一些实施方式中,NAND闪速存储设备150可以是为系统100提供交换空间的交换设备。在一些计算环境中,内核或操作系统可以采用诸如虚拟存储器的存储器/存储抽象,它向在CPU 110上执行的应用提供对可以在类型和位置上变化的一个或多个存储器设备的透明且一致的访问。例如,虚拟存储器可以允许在CPU 110上执行的应用来访问扩展的存储器空间。扩展的存储器空间可以超过RAM 120的容量。当试图被存储在存储器中的数据超过RAM 120的容量时,虚拟存储器功能可以执行分页,通过所述分页,系统100可以将数据存储在诸如HDD或SSD的辅助存储器设备中。该扩展的存储器空间可以被称作交换空间,并且提供交换空间的存储设备可以被称作交换设备。
不同类型的存储器和存储设备在访问速度上可以大大地不同,其中RAM一般比HDD快的多,且NAND闪存落在中间。HDD的缓慢存取时间使得它们对于需要对数据进行快速访问的应用不实用。NAND闪速存储设备比HDD快得多,并且因此变得可用于更广泛的应用。NAND闪速存储设备具有比诸如DRAM的一些常见类型的RAM便宜的附加优点。诸如低延迟NAND(LLNAND)的较新类型的NAND可以甚至更快,对于读取操作展现大约10μs的延迟,相对于常规NAND的大约70μs。LLNAND对于编程(写入)操作也展现较少的延迟,即100μs至200μs的延迟,相对于常规NAND的几毫秒的延迟。然而,写入操作一般涉及编程操作和擦除操作。LLNAND可以仍然经历缓慢擦除时间,这可以花费大约5ms。作为附加的挑战,NAND闪存芯片或裸片一般一次只能执行一次操作。例如,如果NAND闪存芯片正在执行写入操作的擦除/编程序列,那么任何输入的读取命令将被排队直到完成为止。因此,一些读取操作可以需要至多几毫秒来完成,尽管存在几十微秒的标称延迟。这些异常延迟被称作“尾延迟”。该尾延迟的持续时间和不可预测性当使用NAND闪存时可能会带来困难。一些系统可以使用RAM来对被写入的NAND闪存芯片的内容进行缓存,以使得RAM可以在NAND闪存芯片执行写入操作时执行读取操作,参见例如美国专利申请第14/936,486号。然而,因为RAM可以比NAND闪存更昂贵,所以RAM增加了成本开销,这对于一些应用可能是无法接受的。因此,本公开提出提供一个或多个附加NAND闪存芯片,从而为驻留在执行写入操作的NAND闪存芯片中的数据提供缓存。下面相关于图2更加详细地描述了基于NAND闪存的缓冲器。
图2是根据说明性实施方式的具有NAND缓冲器的示例NAND闪速存储设备250的框图。NAND闪速存储设备250可以充当NAND闪速存储设备150。为了避免与被排队在写入操作后面的读取操作相关联的延迟,NAND闪速存储设备250可以采用使用两个NAND闪存芯片270a和270b(统称为“NAND闪存芯片270”)的双缓冲作用。控制器260可以处理通过I/O总线230接收的存储访问命令。控制器260可以包括可编程逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、微控制器或微处理器。控制器260可以与NAND闪速存储设备250成一体或者在其外部。控制器260可以协调NAND闪速存储设备250的读取操作和写入操作,以使得CPU 110不必知道或自身执行NAND闪速存储设备250的缓冲操作。因此,能够设计较简单的控制器,所述控制器依赖CPU 110来协调操作,同时所述控制器执行完成每个操作的较低等级工作。因此,控制器260被配置成通过I/O总线230接收数据和/或命令,并且首先将接收的数据写入NAND闪存芯片270中的一个,并且然后写入NAND闪存芯片270中的第二个。控制器260相继地执行写入操作——同时执行或在CPU 110的指导下执行——以使得它们在时间上不重叠;因此,在任何给定时间,当前未执行写入操作的NAND闪存芯片270可以立即执行读取操作。一旦控制器260执行每个写入操作,NAND闪存芯片270中的两个就可以含有相同的数据。控制器260可以通过从第一NAND闪存芯片或第二NAND闪存芯片中当前未执行写入操作的任何一个进行读取来执行读取命令,以使得读取操作不会被排队在写入操作后面。以此方式,可以改善尾延迟。
在一些实施方式中,NAND闪速存储设备250可以包括附加的NAND闪存芯片270c和270d以进一步提高写入带宽。例如,具有四个NAND闪存芯片270a至270d的NAND闪速存储设备250可以在例如NAND闪存芯片270a和NAND闪存芯片270b的两个NAND闪存芯片270之间分离写入操作。在NAND闪存芯片270a和NAND闪存芯片270b完成它们的相应写入操作之后,可以在NAND闪存芯片270c和NAND闪存芯片270d上重复这些写入操作。以此方式,NAND闪速存储设备250的写入带宽可以近似地加倍。NAND闪速存储设备250可以采用附加的NAND闪存芯片270以便进一步增加写入带宽。
在一些实施方式中,NAND设备250可以包括某一RAM 265来当数据被写入每个NAND闪存芯片270时充当缓存或缓冲器来存储数据。该RAM 265不必具有容量来对NAND闪存芯片270的完整内容进行缓冲,而是可能仅足够大以对单个块或数据页面进行缓冲。因此,它可以比专用RAM缓冲器小得多,并且因此不会显著增加NAND设备250的成本开销。
图3是示出根据说明性实施方式的使用具有NAND缓冲器的NAND闪速存储设备的示例方法300的流程图。NAND闪速存储设备可以包括本文所描述的NAND闪速存储设备150、250、450或750中的任一个。方法300包括通过输入/输出(I/O)总线接收数据(阶段310)。方法300包括相继地将接收的数据写入第一NAND闪存芯片和第二NAND闪存芯片,使得到每个NAND闪存芯片的写入操作在时间上不重叠(阶段320)。所述方法包括通过I/O总线接收读取命令(阶段330)。方法300包括从第一NAND闪存芯片或第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面(阶段340)。
方法300包括通过I/O总线接收数据(阶段310)。NAND闪速存储设备可以通过I/O总线接收写入命令,所述I/O总线诸如前面分别相关于NAND闪速存储设备150或250所描述的I/O总线130或230中的一个。写入命令可以包括将由NAND闪速存储设备存储的数据。
方法300包括相继地将接收的数据写入第一NAND闪存芯片和第二NAND闪存芯片,使得到每个NAND闪存芯片的写入操作在时间上不重叠(步骤320)。写入操作可以由NAND闪速存储设备的控制器执行,所述控制器诸如前面所描述的CPU 110或控制器260。控制器可以对诸如NAND闪存芯片270a或270b的两个NAND闪存芯片中的一个执行写入操作。当控制器对NAND闪存芯片270中的一个执行写入操作时,该特定NAND闪存芯片将无法处理其它操作。因此,控制器将相继地对两个NAND闪存芯片执行写入操作,以使得它们在时间上不重叠。在一些实施方式中,可以重复接收阶段310和写入阶段320,直到第一NAND闪存芯片和第二NAND闪存芯片被写满或大致上写满为止。在一些实施方式中,NAND闪存芯片是低延迟NAND(LLNAND)芯片。
所述方法包括通过I/O总线接收读取命令(阶段330)。方法300包括从第一NAND闪存芯片或第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面(阶段340)。在写入操作的执行期间,NAND闪速存储设备可以通过I/O总线接收读取命令。控制器可以将读取命令引导至NAND闪存芯片中当前未执行写入操作的任何一个。以此方式,可以使阶段330和阶段340与阶段310和阶段320同时进行,并且可以立即处理读取操作处理而不将它们排队在缓慢的写入操作后面。当通过I/O总线接收了附加的数据和读取命令时,可以重复方法300的所述阶段。在一些实施方式中,每个特定NAND闪存芯片所起的作用可以循环,其中不同的NAND闪存芯片在不同的时间执行不同的缓冲和存储功能。下面参考图4至图9描述了不同方式的NAND闪存芯片缓冲和存储的示例。
图4是根据说明性实施方式的具有NAND缓冲器和附加NAND存储装置的示例NAND闪速存储设备450的框图。NAND闪速存储设备450包括用于执行通过I/O总线430接收的读取和写入命令的控制器460。控制器460可以包括RAM 465,或者经由存储器总线与RAM 465通信。控制器460可以包括可编程逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、微控制器或微处理器。控制器460可以与NAND闪速存储设备450成一体或者在其外部。NAND闪速存储设备450可以包括两个缓冲器NAND闪存芯片470a和470b(统称为“缓冲器NAND闪存芯片470”)。在一些实施方式中,NAND闪速存储设备450可以包括附加的缓冲器NAND闪存芯片470,如下面进一步描述。在一些实施方式中,NAND闪速存储设备450可以使用RAM 465以便当数据被写入缓冲器NAND闪存芯片470中的一个或多个时对通过I/O总线430接收的数据进行缓冲。NAND闪速存储设备450还包括存储NAND闪存芯片475a至475e(统称为“存储NAND闪存芯片475”),所述芯片提供超过缓冲器NAND闪存芯片470的容量的附加存储器容量。通过I/O总线430接收的数据在被复制到存储NAND闪存芯片475中的一个之前可以在缓冲器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可以潜在地具有两个缺点。第一,缓冲器NAND闪存芯片470最终将会达到容量。一旦缓冲器NAND闪存芯片470中的所有数据已经被复制到存储NAND闪存芯片475中的一个,就可以删除缓冲器NAND闪存芯片470中的所有数据。虽然缓冲器NAND闪存芯片470执行擦除操作,但是它无法执行写入操作。因此,写入带宽将受到缓冲器NAND闪存芯片470的不可用性限制。
第二潜在缺点有关NAND闪存芯片在出现位错误之前可以处理有限数量的写入操作。NAND闪存芯片由于处理写入操作而经受磨损。最后,在执行了许多写入操作之后,NAND闪存芯片将会磨损并且开始出现故障。
在一些实施方式中,有限写入带宽的挑战可以通过如上所述增加缓冲器NAND闪存芯片470的数量来解决,并且NAND磨损问题可以通过使用与缓冲器NAND闪存芯片470一样的较高耐久性芯片来解决。在一些实施方式中,NAND磨损问题可以通过旋转被指定作为用于传入数据的缓冲器的特定NAND闪存芯片来解决。下面参考图7至图9进一步描述了这样的磨损均衡机制。下面的图5示出NAND闪速存储设备450的示例操作。
图5示出根据说明性实施方式的具有NAND缓冲器和附加NAND存储装置的NAND闪速存储设备的示例操作500。这些操作可以由诸如前面所描述的NAND闪速存储设备450的NAND闪速存储设备执行。操作500包括阶段510,在所述阶段510中将传入数据写入缓冲器NAND闪存芯片470a和存储NAND闪存芯片475a,并且使用垃圾收集从存储NAND闪存芯片475b将数据复制到缓冲器NAND闪存芯片470b,并且随后复制回到存储NAND闪存芯片475b。操作500包括阶段520,在所述阶段520中将传入数据写入缓冲器NAND闪存芯片470b和存储NAND闪存芯片475b,并且使用垃圾收集从存储NAND闪存芯片475c将数据复制到缓冲器NAND闪存芯片470a,并且随后复制回到存储NAND闪存芯片475c。操作500包括阶段530,在所述阶段530中将传入数据写入缓冲器NAND闪存芯片470a和存储NAND闪存芯片475c,并且b接收从存储NAND闪存芯片475d复制的数据。缓冲器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将其数据复制到FSW缓冲器NAND闪存芯片470b,以准备在下一阶段520中接收外部数据。在复制操作期间,NAND闪速存储设备450可以对FPW芯片和FSW芯片执行垃圾收集。当从FPW芯片复制片段式数据至FSW芯片时,数据被合并以使得在连续或大致上连续的存储器空间中被写入FSW芯片,而自由空间在第二连续或大致上连续的存储器空间中被类似地合并。这使得数据表示更紧凑,并且在最后留有空间供新数据在下一阶段520被写入。在所有有效数据被从FPW芯片复制到FSW芯片之后,擦除FPW上的自由空间,并且有效数据被从FSW芯片复制回到FPW芯片。当PW芯片和SW芯片已经完成它们的写入操作且FPW芯片和FSW芯片已经完成它们的复制和垃圾收集时,操作500可以继续进行下一阶段520。
在阶段510(以及阶段520和阶段530)期间,NAND闪速存储设备450可以不时地接收读取请求。控制器460可以以三个方式中的一个处理读取请求,取决于请求的数据在RO芯片上,在PW芯片或SW芯片中的一个上,或是在FPW芯片或FSW芯片中的一个上。如果请求的数据在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芯片将其数据复制到FSW芯片,以准备在下一阶段530中接收外部数据。在复制操作期间,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中的所有已经被写入为止,此时操作500可以在阶段510开始重复。
图6是根据说明性实施方式的示出使用具有NAND缓冲器和附加的NAND存储装置的NAND闪速存储设备的示例方法600的流程图。方法600可以提供超过由缓冲器NAND芯片所提供的存储空间的NAND闪存存储空间。例如,方法600可以由前面参考图4所描述的NAND闪速存储设备450来执行。NAND闪速存储设备450可以包括缓冲器NAND闪存芯片470和存储NAND闪存芯片475。方法600包括将第一存储NAND闪存芯片指定为初级写入(PW)芯片,将第二存储NAND闪存芯片指定为未来初级写入(FPW)芯片,将第一缓冲器NAND闪存芯片指定为次级写入(SW)芯片,将第二缓冲器NAND闪存芯片指定为未来次级写入(FSW)芯片,并且将任何其余NAND闪存芯片指定为只读(RO)。方法600包括通过输入/输出(I/O)总线接收数据(阶段620)。方法600包括相继地将接收的数据写入PW芯片和SW芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠(阶段630)。方法600包括通过I/O总线接收读取命令(阶段640)。方法600包括响应于接收读取命令,从当前未执行写入操作的NAND闪存芯片读取数据,以使得读取操作不会被排队在写入操作后面(阶段650)。方法600包括从FPW芯片复制有效数据至FSW芯片(阶段660)。方法600包括在接收的数据的写入和有效数据的复制之后,将第一存储NAND闪存芯片指定为RO,将第二存储NAND闪存芯片指定为PW芯片,将第一缓冲器NAND闪存芯片指定为FSW芯片,并且将第二缓冲器NAND闪存芯片指定为SW芯片(阶段670)。
方法600包括将第一存储NAND闪存芯片指定为初级写入芯片,将第二存储NAND闪存芯片指定为未来初级写入芯片,将第一缓冲器NAND闪存芯片指定为次级写入芯片,并且将第二缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将任何其余NAND闪存芯片指定为只读(RO)。
方法600包括通过I/O总线接收数据(阶段620)。阶段620可以与前面所描述的阶段310类似。
方法600包括相继地将接收的数据写入PW芯片和SW芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠(阶段630)。阶段630可以与前面所描述的阶段320类似。在一些实施方式中,可以重复接收阶段620和写入阶段630,直到PW芯片和SW芯片被写满或大致上写满为止。
方法600包括通过I/O总线接收读取命令(阶段640)。阶段630可以与前面所描述的阶段430类似。
方法600包括响应于接收读取命令从当前未执行写入操作的NAND闪存芯片读取数据,以使得读取操作不会被排队在写入操作后面(阶段650)。阶段650可以与前面所描述的阶段340类似。在实践中,请求的数据可以驻留在RO芯片上,驻留在PW芯片或SW芯片中的一个上,或驻留在FPW芯片或FSW芯片中的一个上。控制器可以以三个方式中的一个处理读取请求,取决于请求的数据驻留在哪里。如果请求的数据在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同时进行,并且可以立即处理读取操作而不将它们排队在缓慢的写入操作后面。当通过I/O总线接收了附加的数据和读取命令时,可以重复阶段620至阶段650。
方法600包括从FPW芯片复制有效数据至FSW芯片(阶段660)。在一些实施方式中,在复制操作期间,FPW芯片和FSW芯片可以分别执行垃圾收集以合并有效数据和自由空间。例如,NAND闪速存储设备可以首先从FPW芯片复制有效数据至FSW芯片,以使得有效数据和自由空间分别占用FSW芯片的大致连续的相应存储器空间。NAND闪速存储设备可以从FSW芯片复制有效数据回到FPW芯片,以使得有效数据和自由空间分别占用FPW芯片的大致连续的相应存储器空间。NAND闪速存储设备可以擦除FPW芯片和FSW芯片的被自由空间占用的存储器空间。阶段660的复制操作在与阶段620和阶段630的缓冲操作的重叠时间段时间执行。另外,可以通过FPW和FSW中当前未执行写入操作作为复制操作的一部分的任何一个来接收和执行读取命令。以此方式,阶段660的复制操作也可以在与阶段640和阶段650的读取操作的重叠时间段期间执行。
方法600包括在接收的数据的写入和有效数据的复制之后,将第一存储NAND闪存芯片指定为RO,将第二存储NAND闪存芯片指定为PW芯片,将第一缓冲器NAND闪存芯片指定为FSW芯片,并且将第二缓冲器NAND闪存芯片指定为SW芯片(阶段670)。当通过I/O总线接收了附加数据和读取命令时,可以重复方法600的阶段。在一些实施方式中,每个特定NAND闪存芯片所起的作用可以循环,其中不同的NAND闪存芯片在不同的时间执行不同的缓冲和存储功能。
图7是根据说明性实施方式的具有用于磨损均衡的旋转NAND缓冲器的示例NAND闪速存储设备750的框图。NAND闪速存储设备750包括用于处理通过I/O总线730接收的读取命令和写入命令的控制器760。控制器760可以包括RAM 765,或者经由存储器总线与RAM 765通信。控制器760可以包括可编程逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、微控制器或微处理器。控制器760可以与NAND闪速存储设备750成一体或者在其外部。NAND闪速存储设备750包括NAND闪存芯片770a至770f(统称为“NAND闪存芯片770”)。在一些实施方式中,NAND闪速存储设备750可以包括更多的或更少的NAND闪存芯片770。在一些实施方式中,NAND闪速存储设备750可以使用RAM 765以便当数据被写入NAND闪存芯片770中的一个或多个时对通过I/O总线730接收的数据进行缓冲。NAND闪速存储设备750可以通过不定期地改变用于缓冲的NAND闪存芯片770来采用磨耗均衡。例如,在操作的第一阶段期间,NAND闪存芯片770a和770b可以充当NAND缓冲器,其中控制器760依次写入数据至每一个芯片。下面参考图8更加详细地描述了NAND闪速存储设备750的示例操作。
图8示出根据说明性实施方式的具有采用磨损均衡的旋转NAND缓冲器的NAND闪速存储设备的示例操作800。这些操作可以由诸如前面所描述的NAND闪速存储设备750的NAND闪速存储设备来执行。操作800包括阶段810,其中在所述阶段810中将传入数据写入缓冲器NAND闪存芯片770a和存储NAND闪存芯片770c,并且使用垃圾收集从存储NAND闪存芯片770d将数据复制到NAND闪存芯片770b,并且随后复制回到NAND闪存芯片770d。操作800包括阶段820,在所述阶段820中将传入数据写入NAND闪存芯片770b和NAND闪存芯片770d,并且使用垃圾收集从NAND闪存芯片770e将数据复制到NAND闪存芯片770c,并且随后复制回到NAND闪存芯片770e。操作800包括阶段830,在所述阶段830中将传入数据写入NAND闪存芯片770c和NAND闪存芯片770e,并且使用垃圾收集从NAND闪存芯片770f将数据复制到NAND闪存芯片770d,并且随后复制回到NAND闪存芯片770f。在每个操作800期间,次级写入和未来的次级写入NAND闪存芯片770被视为缓冲器NAND闪存芯片,并且由缓冲器880框示出。每个NAND闪存芯片770当前正在执行的操作由首字母缩略词来指示。“PW”代表“初级写入”,并且指示NAND闪存芯片770当前正在接收数据和执行写入操作。“SW”代表“次级写入”,并且指示NAND闪存芯片770与缓冲器NAND闪存芯片中的一个一样当前正在接收数据和执行写入操作。“FPW”代表“未来初级写入”,并且指示NAND闪存芯片770正被准备通过将其数据复制到未来次级写入芯片作为初级写入芯片用于未来服务。“FSW”代表“未来次级写入”,并且指示NAND闪存芯片770正从FPW芯片接收数据以准备作为SW缓冲器NAND闪存芯片用于未来服务。“RO”代表“只读”,并且指示控制器760将仅调用RO NAND存储NAND闪存芯片770来执行读取操作。这些标签仅是任意的,并且仅被指派用于描述各种芯片在操作800的给定阶段期间的功能的目的。在操作800的每个阶段之间,每个NAND闪存芯片770的作用可以改变,如由每个芯片下方的标签所指示以及缓冲器880框旋转通过可用的NAND闪存芯片770。
在阶段810期间,NAND闪存芯片770a充当SW芯片,NAND闪存芯片770b充当FPW芯片,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芯片中的一个上、或是在FPW芯片或FSW芯片中的一个上。如果请求的数据在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可以从NAND闪存芯片770e接收副本数据以准备在操作的下一阶段中被指定为SW。在复制操作期间,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可以从NAND闪存芯片770f接收副本数据以准备在操作的后续阶段中被指定为SW。
附加的阶段可以无限期地以这种方式进行,以在可用的NAND闪存芯片770中的一些或全部之间散布磨损。在执行这些操作时,NAND闪速存储设备750将向NAND闪存芯片770写入每个接收到的数据页面两次,以致于遭受的磨损量加倍;然而,当磨损均匀散布在许多NAND闪存芯片770上时,这种附加磨损的量可能是可接受的。
图9是示出根据说明性实施方式的使用具有用于磨损均衡的旋转NAND缓冲器的NAND闪速存储设备的示例方法900。例如,方法900可以由之前参考图7所描述的NAND闪速存储设备750来执行。方法900可以旋转通过可用的NAND闪存芯片,依次将每个芯片指定为缓冲器NAND芯片,以便分布由于执行写入操作而引起的磨损,并且避免可能由于在少量的NAND闪存芯片上集中写入操作而引起的故障。方法900包括将第一NAND闪存芯片指定为次级写入(SW)芯片,将第二NAND闪存芯片指定为未来次级写入(FSW)芯片,将第三NAND闪存芯片指定为初级写入(PW)芯片,并且将第四NAND闪存芯片指定为未来初级写入(FPW)芯片(阶段910)。方法900包括通过输入/输出(I/O)总线接收数据(阶段920)。方法900包括相继地将接收的数据写入PW芯片和SW芯片,以使得到每个芯片的写入操作在时间上不重叠(阶段930)。方法900包括通过I/O总线接收读取命令(阶段940)。方法900包括响应于接收读取命令从当前未执行写入操作的NAND闪存芯片读取数据,以使得读取操作不会被排队在写入操作后面(阶段950)。方法900包括从FPW芯片复制有效数据至FSW芯片(阶段960)。方法900包括在接收的数据的写入和有效数据的复制之后:将第一NAND闪存芯片指定为只读,将第二NAND闪存芯片指定为SW芯片,将第三NAND闪存芯片指定为FSW芯片,并且将第四NAND闪存芯片指定为PW芯片(阶段970)。
方法900包括将第一NAND闪存芯片指定为SW芯片,将第二NAND闪存芯片指定为FSW芯片,将第三NAND闪存芯片指定为PW芯片,并且将第四NAND闪存芯片指定为FPW芯片(阶段910)。前面参考图8描述了所述指定。
方法900包括通过I/O总线接收数据(阶段920)。阶段920与前面所描述的阶段310和阶段610类似。
方法900包括相继地将接收的数据写入PW芯片和SW芯片,以使得到每个芯片的写入操作在时间上不重叠(阶段930)。阶段930与前面所描述的阶段320和阶段620类似。在一些实施方式中,方法900在前进到阶段950之前可以继续执行阶段920的接收操作和阶段930的写入操作,直到PW芯片和SW芯片被写满或大致上写满为止。下面所描述的阶段940和阶段950的操作可以与阶段920和阶段930的操作同时执行。
方法900包括通过I/O总线接收读取命令(阶段940)。阶段940与前面所描述的阶段330和阶段640类似。
方法900包括响应于接收读取命令从当前未执行写入操作的NAND闪存芯片读取数据,以使得读取操作不会被排队在写入操作后面(阶段950)。阶段950可以与前面所描述的阶段340和阶段650类似。在实践中,请求的数据可以驻留在RO芯片上,驻留在PW芯片或SW芯片中的一个上,或驻留在FPW芯片或FSW芯片中的一个上。控制器可以以三个方式中的一个处理读取请求,取决于请求的数据驻留在哪里。如果请求的数据在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同时进行,并且可以立即处理读取操作而不将它们排队在缓慢的写入操作后面。当通过I/O总线接收了附加的数据和读取命令时,可以重复阶段920至阶段950。
方法900包括从FPW芯片复制有效数据至FSW芯片(阶段960)。为了准备两个新的NAND闪存芯片来在后续阶段中充当缓冲器NAND芯片,方法900可以从一个NAND闪存芯片复制数据至另一NAND闪存芯片。复制源可以被指定为FPW芯片,并且复制目的地可以被指定为FSW芯片。在一些实施方式中,复制操作可以是双向的;也就是,数据可以在FPW芯片与FSW芯片之间协调,以使得它们各自含有其它数据的副本。在复制操作期间,FSW芯片和FPW芯片可以执行垃圾收集操作以合并数据和无效的或不再需要的数据的自由空间。阶段960的复制操作可以在与阶段920和阶段930的缓冲操作的重叠时间段时间执行。另外,可以通过FPW和FSW中当前未执行写入操作作为复制操作的一部分的任何一个来接收和执行读取命令。以此方式,阶段960的复制操作也可以在与阶段940和阶段950的读取操作的重叠时间段期间执行。
方法900包括在接收的数据的写入和有效数据的复制之后:将第一NAND闪存芯片指定为只读芯片,将第二NAND闪存芯片指定为SW芯片,将第三NAND闪存芯片指定为FSW芯片,并且将第四NAND闪存芯片指定为PW芯片(阶段970)。一旦FPW芯片和FSW芯片含有副本数据,它们就准备好分别作为PW芯片和SW芯片来接管。只要复制操作可以当缓冲器NAND闪存芯片仍然在处理写入操作时执行,NAND闪速存储设备770可以切换名称而不出现延迟,并且继续执行写入操作而写入带宽不会出现重大损失。
在一些实施方式中,旋转可以继续。例如,控制器760可以将第五NAND闪存芯片770e指定为FPW芯片。控制器760可以将通过I/O总线730接收的第二数据写入PW芯片和SW芯片,以使得到每个芯片的写入操作在时间上不重叠。控制器760可以从FPW芯片复制第二有效数据至FSW芯片。并且,在第二接收的数据的写入和第二有效数据的复制之后,控制器760可以将第二NAND闪存芯片指定为只读,将第三NAND闪存芯片指定为SW芯片,将第四NAND闪存芯片指定为FSW芯片,将第五NAND闪存芯片指定为PW芯片,并且将第六NAND闪存芯片指定为FPW芯片。
虽然本说明书含有许多具体实施方式细节,但是这些细节不应被解释为是对任何发明或可能要求保护的范围的限制,而是应被解释为对特定于特定发明的特定实施方式的特征的描述。在单独实施方式的上下文中,本说明书中描述的某些特征也可以在单个实施方式中以组合实现。相反,在单个实施方式的上下文中,描述的各种特征也可以在多个实施方式中单独或以任何合适的子组合来实现。此外,虽然上文可以将特征描述为以某些组合起作用并且甚至最初要求如此,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变化形式。
对“或”的引用可以被解释为包含性的,以使得使用“或”描述的任何术语可以指示单个、不止一个以及所有描述的术语中的任何一个。标签“第一”、“第二”、“第三”等不一定意味着指示排序并且通常仅用于区分相同或相似的项目或要素。
本公开中所描述的实施方式的各种修改对于本领域技术人员而言可能是显而易见的,并且在不脱离本公开的精神或范围的情况下,可将本文中定义的一般原理应用于其它实施方式。因此,权利要求并非意在限于本文所示出的实施方式,而是应被赋予与本公开、本文公开的原理和新颖特征一致的最宽范围。
Claims (20)
1.一种NAND闪速存储设备,所述设备包括:
多个NAND闪存芯片;以及
控制器,所述控制器被配置成:
通过输入/输出(I/O)总线接收数据;
相继地将所接收的数据写入到所述多个NAND闪存芯片中的第一NAND闪存芯片和所述多个NAND闪存芯片中的第二NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠;
通过所述I/O总线接收读取命令;以及
响应于接收所述读取命令而从所述第一NAND闪存芯片或所述第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
2.根据权利要求1所述的NAND闪速存储设备,其中,所述控制器被配置成:
将所述第一NAND闪存芯片指定为次级写入芯片,将所述第二NAND闪存芯片指定为未来次级写入芯片,将第三NAND闪存芯片指定为初级写入芯片,将第四NAND闪存芯片指定为未来初级写入芯片,并且将任何其余NAND闪存芯片指定为只读;
相继地将所接收的数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制有效数据到所述未来次级写入芯片;以及
在所接收的数据的所述写入和所述有效数据的所述复制之后,将所述第一NAND闪存芯片指定为只读,将所述第二NAND闪存芯片指定为所述次级写入芯片,将所述第三NAND闪存芯片指定为所述未来次级写入芯片,并且将所述第四NAND闪存芯片指定为所述初级写入芯片。
3.根据权利要求2所述的NAND闪速存储设备,其中,所述控制器被配置成:
在所接收的数据的所述写入和所述有效数据的所述复制之后:
将第五NAND闪存芯片指定为所述未来初级写入芯片;
相继地将通过所述I/O总线接收的第二数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制第二有效数据到所述未来次级写入芯片;以及
在所接收的第二数据的所述写入和所述第二有效数据的所述复制之后:将所述第二NAND闪存芯片指定为只读,将所述第三NAND闪存芯片指定为所述次级写入芯片,将所述第四NAND闪存芯片指定为所述未来次级写入芯片,并且将所述第五NAND闪存芯片指定为所述初级写入芯片。
4.根据权利要求2所述的NAND闪速存储设备,其中,所述复制操作包括:
从所述未来初级写入芯片复制所述有效数据到所述未来次级写入芯片,以使得所述有效数据和自由空间分别占用所述未来次级写入芯片的大致连续的相应存储器空间;
从所述未来次级写入芯片复制所述有效数据回到所述未来初级写入芯片,以使得所述有效数据和自由空间分别占用所述未来初级写入芯片的大致连续的相应存储器空间;以及
擦除被所述自由空间占用的所述未来初级写入芯片和所述未来次级写入芯片的存储器空间。
5.根据权利要求2所述的NAND闪速存储设备,其中:
所述写入操作和所述复制操作在重叠时间段期间被执行。
6.一种NAND闪速存储设备,所述设备包括:
多个缓冲器NAND闪存芯片;
多个存储NAND闪存芯片;以及
控制器,所述控制器被配置成:
通过输入/输出(I/O)总线接收传入数据;
相继地将所接收的传入数据写入到所述多个存储NAND闪存芯片中的第一缓冲器NAND闪存芯片和所述多个缓冲器NAND闪存芯片中的第一存储NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠;
通过所述I/O总线接收读取命令;以及
响应于接收所述读取命令而从所述第一缓冲器NAND闪存芯片或所述第一存储NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
7.根据权利要求6所述的NAND闪速存储设备,其中,所述控制器被配置成:
将所述第一存储NAND闪存芯片指定为初级写入芯片,将第二存储NAND闪存芯片指定为未来初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为次级写入芯片,将第二缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将任何其余NAND闪存芯片指定为只读;
相继地将所接收的数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制有效数据到所述未来次级写入芯片;以及
在所接收的数据的所述写入和所述有效数据的所述复制之后,将所述第一存储NAND闪存芯片指定为只读,将所述第二存储NAND闪存芯片指定为所述初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为所述未来次级写入芯片,并且将所述第二缓冲器NAND闪存芯片指定为所述次级写入芯片。
8.根据权利要求7所述的NAND闪速存储设备,其中,所述控制器被配置成:
在所接收的数据的所述写入和所述有效数据的所述复制之后:
将第三存储NAND闪存芯片指定为所述未来初级写入芯片;
相继地将通过所述I/O总线接收的第二数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制第二有效数据到所述未来次级写入芯片;以及
在所接收的第二数据的所述写入和所述第二有效数据的所述复制之后,将所述第二存储NAND闪存芯片指定为只读,将所述第三存储NAND闪存芯片指定为所述初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为所述次级写入芯片,并且将所述第二缓冲器NAND闪存芯片指定为所述未来次级写入芯片。
9.根据权利要求7所述的NAND闪速存储设备,其中,所述复制操作包括:
从所述未来初级写入芯片复制所述有效数据到所述未来次级写入芯片,以使得所述有效数据和自由空间分别占用所述未来次级写入芯片的大致连续的相应存储器空间。
从所述未来次级写入芯片复制所述有效数据回到所述未来初级写入芯片,以使得所述有效数据和自由空间分别占用所述未来初级写入芯片的大致连续的相应存储器空间;以及
擦除被所述自由空间占用的所述未来初级写入芯片和所述未来次级写入芯片的所述存储器空间。
10.根据权利要求6所述的NAND闪速存储设备,其中:
所述多个缓冲器NAND闪存芯片是单层单元(SLC)NAND闪存芯片;并且
所述多个存储NAND闪存芯片是三层单元(TLC)NAND闪存芯片。
11.一种对NAND闪速存储设备进行缓冲的方法,所述方法包括:
通过输入/输出(I/O)总线接收数据;
相继地将所接收的数据写入到所述多个NAND闪存芯片中的第一NAND闪存芯片和所述多个NAND闪存芯片中的第二NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠;
通过所述I/O总线接收读取命令;以及
响应于接收所述读取命令而从所述第一NAND闪存芯片或所述第二NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
12.根据权利要求11所述的方法,所述方法包括:
将所述第一NAND闪存芯片指定为次级写入芯片,将所述第二NAND闪存芯片指定为未来次级写入芯片,将第三NAND闪存芯片指定为初级写入芯片,将第四NAND闪存芯片指定为未来初级写入芯片,并且将任何其余NAND闪存芯片指定为只读;
相继地将所接收的数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制有效数据到所述未来次级写入芯片;以及
在所接收的数据的所述写入和所述有效数据的所述复制之后,将所述第一NAND闪存芯片指定为只读,将所述第二NAND闪存芯片指定为所述次级写入芯片,将所述第三NAND闪存芯片指定为所述未来次级写入芯片,并且将所述第四NAND闪存芯片指定为所述初级写入芯片。
13.根据权利要求12所述的方法,所述方法包括:
在所接收的数据的所述写入和所述有效数据的所述复制之后:
将第五NAND闪存芯片指定为所述未来初级写入芯片;
相继地将通过所述I/O总线接收的第二数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制第二有效数据到所述未来次级写入芯片;以及
在所接收的第二数据的所述写入和所述第二有效数据的所述复制之后,将所述第二NAND闪存芯片指定为只读,将所述第三NAND闪存芯片指定为所述未来次级写入芯片,将所述第四NAND闪存芯片指定为所述初级写入芯片,并且将所述第五NAND闪存芯片指定为所述未来初级写入芯片。
14.根据权利要求12所述的方法,其中,所述复制操作包括:
从所述未来初级写入芯片复制所述有效数据到所述未来次级写入芯片,以使得所述有效数据和自由空间分别占用所述未来次级写入芯片的大致连续的相应存储器空间;
从所述未来次级写入芯片复制所述有效数据回到所述未来初级写入芯片,以使得所述有效数据和自由空间分别占用所述未来初级写入芯片的大致连续的相应存储器空间;以及
擦除被所述自由空间占用的所述未来初级写入芯片和所述未来次级写入芯片的存储器空间。
15.根据权利要求12所述的方法,其中:
所述写入操作和所述复制操作在重叠时间段期间被执行。
16.一种对NAND闪速存储设备进行缓冲的方法,所述方法包括:
通过输入/输出(I/O)总线接收数据;
相继地将所接收的传入数据写入到所述多个存储NAND闪存芯片中的第一缓冲器NAND闪存芯片和所述多个缓冲器NAND闪存芯片中的第一存储NAND闪存芯片,以使得到每个NAND闪存芯片的写入操作在时间上不重叠;
通过所述I/O总线接收读取命令;以及
响应于接收所述读取命令而从所述第一缓冲器NAND闪存芯片或所述第一存储NAND闪存芯片中当前未执行写入操作的任何一个读取数据,以使得读取操作不会被排队在写入操作后面。
17.根据权利要求16所述的方法,所述方法包括:
将所述第一存储NAND闪存芯片指定为初级写入芯片,将第二存储NAND闪存芯片指定为未来初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为次级写入芯片,将第二缓冲器NAND闪存芯片指定为未来次级写入芯片,并且将任何其余NAND闪存芯片指定为只读;
相继地将所接收的数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制有效数据到所述未来次级写入芯片;以及
在所接收的数据的所述写入和所述有效数据的所述复制之后,将所述第一存储NAND闪存芯片指定为只读,将所述第二存储NAND闪存芯片指定为所述初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为所述未来次级写入芯片,并且将所述第二缓冲器NAND闪存芯片指定为所述次级写入芯片。
18.根据权利要求17所述的方法,所述方法包括:
在所接收的数据的所述写入和所述有效数据的所述复制之后:
将第三存储NAND闪存芯片指定为所述未来初级写入芯片;
相继地将通过所述I/O总线接收的第二数据写入到所述初级写入芯片和所述次级写入芯片,以使得到每个芯片的写入操作在时间上不重叠;
从所述未来初级写入芯片复制第二有效数据到所述未来次级写入芯片;以及
在所接收的第二数据的所述写入和所述第二有效数据的所述复制之后,将所述第二存储NAND闪存芯片指定为只读,将所述第三存储NAND闪存芯片指定为所述初级写入芯片,将所述第一缓冲器NAND闪存芯片指定为所述次级写入芯片,并且将所述第二缓冲器NAND闪存芯片指定为所述未来次级写入芯片。
19.根据权利要求17所述的方法,其中所述复制操作包括:
从所述未来初级写入芯片复制所述有效数据到所述未来次级写入芯片,以使得所述有效数据和自由空间分别占用所述未来次级写入芯片的大致连续的相应存储器空间;
从所述未来次级写入芯片复制所述有效数据回到所述未来初级写入芯片,以使得所述有效数据和自由空间分别占用所述未来初级写入芯片的大致连续的相应存储器空间;以及
擦除被所述自由空间占用的所述未来初级写入芯片和所述未来次级写入芯片的存储器空间。
20.根据权利要求16所述的方法,其中:
所述多个缓冲器NAND闪存芯片是单层单元(SLC)NAND闪存芯片;并且
所述多个存储NAND闪存芯片是三层单元(TLC)NAND闪存芯片。
Applications Claiming Priority (4)
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 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109117085A true CN109117085A (zh) | 2019-01-01 |
CN109117085B CN109117085B (zh) | 2021-08-20 |
Family
ID=61899381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810391996.1A Active CN109117085B (zh) | 2017-06-23 | 2018-04-27 | 具有nand缓冲器的nand闪速存储设备 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10606484B2 (zh) |
EP (1) | EP3418897B1 (zh) |
JP (1) | JP7234144B2 (zh) |
KR (1) | KR102276350B1 (zh) |
CN (1) | CN109117085B (zh) |
DE (2) | DE102018109929A1 (zh) |
GB (1) | GB2563713B (zh) |
TW (1) | TWI727160B (zh) |
WO (1) | WO2018236440A1 (zh) |
Families Citing this family (6)
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 |
CN118093449A (zh) * | 2022-11-25 | 2024-05-28 | 长江存储科技有限责任公司 | 一种存储器系统及其垃圾回收方法、电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010071655A1 (en) * | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
US20170068456A1 (en) * | 2015-09-04 | 2017-03-09 | Kabushiki Kaisha Toshiba | Control unit and control method for controlling semiconductor storage devices |
Family Cites Families (13)
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 |
US8639871B2 (en) | 2009-04-08 | 2014-01-28 | Google Inc. | Partitioning a flash memory data storage device |
US8285946B2 (en) | 2009-12-15 | 2012-10-09 | International Business Machines Corporation | Reducing access contention in flash-based memory systems |
CN104040515B (zh) | 2011-09-30 | 2018-05-11 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
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 |
KR102039537B1 (ko) | 2013-03-15 | 2019-11-01 | 삼성전자주식회사 | 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법 |
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 | 삼성전자주식회사 | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 |
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 |
-
2017
- 2017-11-17 US US15/816,447 patent/US10606484B2/en active Active
-
2018
- 2018-03-15 JP JP2019566261A patent/JP7234144B2/ja active Active
- 2018-03-15 KR KR1020197035081A patent/KR102276350B1/ko active IP Right Grant
- 2018-03-15 WO PCT/US2018/022683 patent/WO2018236440A1/en active Application Filing
- 2018-03-23 GB GB1804693.8A patent/GB2563713B/en active Active
- 2018-04-03 TW TW107111866A patent/TWI727160B/zh active
- 2018-04-25 DE DE102018109929.0A patent/DE102018109929A1/de not_active Withdrawn
- 2018-04-25 DE DE202018102304.7U patent/DE202018102304U1/de active Active
- 2018-04-25 EP EP18169162.7A patent/EP3418897B1/en active Active
- 2018-04-27 CN CN201810391996.1A patent/CN109117085B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010071655A1 (en) * | 2008-12-19 | 2010-06-24 | Hewlett-Packard Development Company, L.P. | Redundant data storage for uniform read latency |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
US20170068456A1 (en) * | 2015-09-04 | 2017-03-09 | Kabushiki Kaisha Toshiba | Control unit and control method for controlling semiconductor storage devices |
Also Published As
Publication number | Publication date |
---|---|
DE102018109929A1 (de) | 2018-12-27 |
TW201905921A (zh) | 2019-02-01 |
KR102276350B1 (ko) | 2021-07-12 |
GB2563713B (en) | 2020-01-15 |
DE202018102304U1 (de) | 2018-10-30 |
GB201804693D0 (en) | 2018-05-09 |
US20180373440A1 (en) | 2018-12-27 |
EP3418897A1 (en) | 2018-12-26 |
KR20200003055A (ko) | 2020-01-08 |
CN109117085B (zh) | 2021-08-20 |
GB2563713A (en) | 2018-12-26 |
JP2020524839A (ja) | 2020-08-20 |
EP3418897B1 (en) | 2022-09-14 |
US10606484B2 (en) | 2020-03-31 |
JP7234144B2 (ja) | 2023-03-07 |
TWI727160B (zh) | 2021-05-11 |
WO2018236440A1 (en) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117085A (zh) | 具有nand缓冲器的nand闪速存储设备 | |
US12045168B2 (en) | Timed data transfer between a host system and a memory sub-system | |
CN104407933B (zh) | 一种数据的备份方法及装置 | |
US11294820B2 (en) | Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system | |
TW201227506A (en) | Controller and method for performing background operations | |
US9678871B2 (en) | Data flush of group table | |
CN105940386A (zh) | 在存储器之间移动数据 | |
CN105302665B (zh) | 一种改进的写时拷贝快照方法及系统 | |
CN108431896A (zh) | 用于非易失性储存阵列操作的数据寄存器复制 | |
CN112771492A (zh) | 支持非确定性命令的存储器子系统 | |
CN105389134A (zh) | 一种闪存接口控制方法及装置 | |
JP2010170295A (ja) | 記憶装置、記憶装置のデータ転送方法 | |
US8374040B2 (en) | Write bandwidth in a memory characterized by a variable write time | |
US11275679B2 (en) | Separate cores for media management of a memory sub-system | |
US10067888B1 (en) | I/O optimization with track splitting | |
US11709631B2 (en) | Read-modify-write data consistency management | |
US20240370373A1 (en) | Timed data transfer between a host system and a memory sub-system | |
US9990137B1 (en) | I/O optimization | |
TW556205B (en) | Method for inspecting flash memory logic address | |
US11068172B1 (en) | Optimizing parallel data replication spanning physical storage devices | |
CN103295621A (zh) | 用于数据解码的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40001601 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |