CN108932109B - 基于优先级的内部数据移动 - Google Patents
基于优先级的内部数据移动 Download PDFInfo
- Publication number
- CN108932109B CN108932109B CN201810225050.8A CN201810225050A CN108932109B CN 108932109 B CN108932109 B CN 108932109B CN 201810225050 A CN201810225050 A CN 201810225050A CN 108932109 B CN108932109 B CN 108932109B
- Authority
- CN
- China
- Prior art keywords
- command type
- request
- wear leveling
- data
- garbage collection
- 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
Links
- 238000013500 data storage Methods 0.000 claims abstract description 58
- 238000012913 prioritisation Methods 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims description 35
- 241001522296 Erithacus rubecula Species 0.000 claims description 12
- 230000008569 process Effects 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 13
- 238000013507 mapping Methods 0.000 description 7
- 238000012005 ligant binding assay Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241000258963 Diplopoda Species 0.000 description 1
- -1 Silicon Oxide Nitride Chemical class 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000001465 metallisation Methods 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage 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/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/0647—Migration mechanisms
-
- 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/0658—Controller construction 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供基于优先级的内部数据移动的数据存储设备包括通信地耦合到易失性存储器和非易失性存储器电路的控制器,其中控制器被配置为将请求在易失性存储器中的多个队列中排队,其中每个请求与多个内部数据移动命令类型中的一个相关联。控制器也被配置为基于多个内部数据移动命令类型的优先化来选择多个队列中的一个队列。控制器也被配置为确定所选择的队列包括关联的内部数据移动命令类型的至少一个请求。控制器也被配置为向非易失性存储器电路中的至少一个发出来自所选择的队列的至少一个请求。
Description
技术领域
本说明书一般涉及数据存储设备内的数据传输,包括用于非易失性存储器设备的基于优先级的内部数据移动。
背景技术
闪存相比其他类型的存储设备享有许多优点。闪存通常比硬盘驱动器(hard diskdrive,HDD)提供更快的读取访问时间和更好的抗震性。与动态随机存取存储器(dynamicrandom access memory,DRAM)不同,闪存是非易失性的,这意味着存储在闪存设备中的数据在移除设备电源时不会丢失。这些优点和其他优点可以解释在诸如存储卡、USB闪存驱动器、移动电话、数码相机、大容量存储设备、MP3播放器等的设备中的用于存储应用的闪存的日益普及。
在闪存系统中,在闪存系统的操作期间执行各种类型的内部维护操作。例如,释放可用存储器空间的内部数据移动、从容易出错的存储器位置重新定位数据、和/或将数据移动到较少损坏的存储器位置都是可用的内务操作,以确保闪存的性能和耐用性。
发明内容
本主题技术提供了用于以某一顺序的多个内部数据移动命令类型(例如垃圾收集、数据重新定位、损耗均衡)的优先化,以提供数据存储设备的最佳性能和耐用性。损耗均衡请求和数据重新定位请求可以在逻辑上分组在一起,其中数据重新定位请求被给予比损耗均衡请求更高的优先级。用垃圾收集请求以循环(round robin)方式提取来自此逻辑分组的请求。当数据重新定位请求和损耗均衡请求的逻辑分组在循环顺序中具有轮次时,只有在所有现有数据重新定位请求已被服务之后才可以选择损耗均衡请求。用这种方法,垃圾收集请求被给予足够的优先级以确保数据存储设备的连续操作。同时,数据重新定位请求和损耗均衡请求被给予考虑以确保数据存储设备的耐用性。
在另一方面,提供基于优先级的内部数据移动的数据存储设备包括多个队列和多个处理器,其中多个处理器中的每一个被配置为排队与多个内部数据移动命令类型中的相应的一个相关联的一个或多个请求。在一些方面,将一个或多个请求中的每一个排队到用于关联的内部数据移动命令类型的多个队列之一中。数据存储设备也包括可通信地耦合到多个队列的调度器,并且调度器被配置为基于多个内部数据移动命令类型的优先化来识别多个内部数据移动命令类型当中的轮次。调度器也被配置为基于识别的轮次来选择多个队列中的一个队列,并且基于关联的内部数据移动命令类型来发出所选择的队列的被排队的请求中的一个。在一些方面,被排队的请求被发出到多个非易失性存储器电路中的至少一个。
在另一方面,一种系统包括非易失性存储器电路和包括多个队列的易失性存储器。该系统也包括通信地耦合到易失性存储器和非易失性存储器电路的控制器,其中控制器被配置为将请求在多个队列中排队,每个请求与多个内部数据移动命令类型中的一个相关联。控制器也被配置为基于多个内部数据移动命令类型的优先化来选择多个队列中的一个队列。控制器也被配置为确定所选择的队列包括所关联的内部数据移动命令类型的至少一个请求。控制器也被配置为发出来自所选择的队列的至少一个请求到非易失性存储器电路中的至少一个。
在另一方面,一种提供基于优先级的内部数据移动的方法包括将请求在易失性存储器中的多个队列中排队,其中每个请求与多个内部数据移动命令类型中的一个相关联。该方法也包括基于多个内部数据移动命令类型的优先化来选择多个队列中的一个队列。该方法也包括确定所选择的队列包括所关联的内部数据移动命令类型的至少一个请求。该方法也包括将来自所选择的队列的至少一个请求发出到至少一个非易失性存储器电路。
在另一方面,一种提供基于优先级的内部数据移动的系统包括用于将与多个内部数据移动命令类型中的相应一个相关联的一个或多个请求的部件排队,其中,一个或多个请求中的每一个被排队在所关联的内部数据移动命令类型的多个队列中的一个中。该系统也包括用于基于多个内部数据移动命令类型的优先化来识别多个内部数据移动命令类型当中的轮次的部件。该系统也包括用于基于所识别的轮次来选择多个队列中的一个队列的部件。该系统也包括用于将来自所选择的队列的被排队的请求中的一个发出到多个非易失性存储器电路中的至少一个的部件。
应当理解,从下面的详细描述中,本主题技术的其他配置对于本领域技术人员来说将变得显而易见,其中通过图示的方式示出和描述了本主题技术的各种配置。如将认识到的,本主题技术能够具有其他不同的配置,并且其若干细节能够在各种其他方面进行修改,所有这些都不脱离本主题技术的范围。因此,附图和详细描述本质上被认为是说明性的而不是限制性的。
附图说明
本主题技术的某些特征在所附权利要求中阐述。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施例。
图1示出了根据一个或多个实施方式的可以实现用于基于优先级的内部数据移动的系统的示例数据存储系统。
图2示出了根据一个或多个实施方式的基于优先级的内部数据移动的示例过程的流程图。
图3示出了根据一个或多个实施方式的用于基于优先级的内部数据移动的系统的示例。
图4示出了根据一个或多个实施方式的示例数据存储设备中分布在不同通道(channel)上的示例非易失性存储器电路。
图5示出了根据一个或多个实施方式的示例数据存储设备中的非易失性存储器电路的示例块。
具体实施方式
以下阐述的详细描述旨在作为本主题技术的各种配置的描述,而不旨在表示可以实践本主题技术的唯一配置。附图在本文中并入并构成详细描述的一部分。详细描述包括提供用于本主题技术的透彻理解的目的的具体细节。然而,本主题技术不限于本文中阐述的具体细节,并且可以使用一个或多个实施方式来实践。在一个或多个实例中,结构和组件以框图形式示出以避免模糊本主题技术的概念。
使用闪存单元体系结构来制造固态驱动器(Solid State Drive,SSD)。闪存是电可擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)的改进形式。传统的EEPROM设备一次只能擦除或写入一个存储器位置。相比之下,闪存允许在一次编程操作中擦除或写入多个存储器位置。因此闪存可以以比传统EEPROM更高的有效速度运行。
存储器控制器执行内部维护操作以管理闪存系统的性能。例如,内部数据移动帮助释放可用存储器空间、帮助从容易出错的存储器位置重新定位数据、和/或帮助将数据移动到较少损耗的存储器位置,以维护闪存系统的性能和耐用性。一种类型的内部数据移动是垃圾收集。垃圾收集是SSD的一项维护特征,以确保足够的擦除/未编程块可用于写入来自主机的传入数据。数据以物理页面的形式写入闪存。然而,闪存只能以较大的块单位(由多个页面组成的)擦除。在这方面,执行垃圾收集以擦除包含已被标记为无效并随后再次被写入的页面的块。例如,如果块的一些页面中的数据无效,则仅读取该块中具有有效数据的页面,并将其重写到擦除的块中。该块然后被擦除,使得其可用于未来的写入操作。
另一类型的内部数据移动是损耗均衡。损耗均衡确保闪存在SSD中的所有块上均匀损耗。在任何给定时间,所有闪存块都可以维护编程/擦除(P/E)周期计数在最小值和最大值之间。损耗均衡通过将冷数据(是将较少更新的数据的扇区)从具有较小擦除计数的块移动到具有较高擦除计数的块,和通过将热数据(是频繁更新的数据的扇区)写入具有较低擦除计数的块,来实现此目的。
另一类型的内部数据移动是由于数据操作错误而导致的数据重新定位。由于数据操作读取/写入错误而导致的数据的重新定位,是在这些块中某些类型的读取/写入错误的发生之后将所有数据移出块(或块集合)的内务操作。例如,当块的位错误计数超过预定错误计数阈值时,可以针对块触发数据重新定位。
这些内部数据移动命令可以在SSD的操作期间发出。垃圾收集维护空闲块的可用性用于SSD的连续操作。损耗均衡维护SSD的耐用性。在某些读取/写入错误发生的事件中,数据的重新定位维护SSD中的数据完整性。所有这些类型的数据移动的请求可能在多个块上同时出现。某些内部数据移动对于SSD的操作可能比其他更重要,因此,按照接收这些请求的相同顺序或者在所有这些类型的内部数据移动之间以循环顺序执行这些数据移动,已经被发现对于维护SSD中的数据完整性而言不太理想。相反,以最佳顺序执行这些数据移动对于具有最佳性能和耐用性的SSD的连续操作来说是期望的。
本主题技术提供内部数据移动命令类型(例如,垃圾收集、数据重新定位、损耗均衡)的优先化,使得对SSD的操作比其他更重要的内部数据移动命令以一定的顺序发出,因此提高数据存储设备的性能和耐用性。损耗均衡请求和数据重新定位请求可以在逻辑上分组在一起,其中数据重新定位请求被给予比损耗均衡请求更高的优先级。用垃圾收集请求,可以以循环方式选择来自此逻辑分组的请求。当数据重新定位请求和损耗均衡请求的逻辑分组具有在循环顺序中的轮次时,可以在所有现有数据重新定位请求已被服务之后选择损耗均衡请求。用这种方法,垃圾收集请求被给予足够的优先级以确保数据存储设备的连续操作。同时,数据重新定位请求和损耗均衡请求被给予考虑,以确保数据存储设备的耐用性。
在一些实施方式中,提供基于优先级的内部数据移动的数据存储设备包括队列和处理器,其中每个处理器被配置为将与内部数据移动命令类型(例如,垃圾收集、数据重新定位、损耗均衡)中的相应一个相关联的一个或多个请求排队。在一些方面,一个或多个请求中的每一个被排队到用于相关联的内部数据移动命令类型的一个队列中。数据存储设备也包括可通信地耦合到队列的调度器,并且调度器被配置为基于内部数据移动命令类型的优先化来识别内部数据移动命令类型当中的轮次。调度器也被配置为基于所识别的轮次来选择队列中的一个队列,并且从所选择的队列的被排队的请求中的一个发出内部数据移动命令类型中的一个。在一些方面,内部数据移动命令类型被发出到非易失性存储器电路中的至少一个。
图1示出了根据一个或多个实施方式的可以实施用于基于优先级的内部数据移动的系统的示例数据存储系统100。然而,并非所有描绘的组件都可以是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。可以做出在组件的布置和类型上的变化,而不脱离本文中阐述的权利要求的精神或范围。可以提供额外的组件、不同的组件或更少的组件。
系统100包括数据存储设备110和主机设备130。数据存储设备110包括一个或多个闪存电路112A-N、一个或多个通道113A-N、控制器114、易失性存储器122、接口124。控制器114包括调度引擎115、垃圾收集引擎116、数据重新定位引擎117、和损耗均衡引擎118。控制器114可以包括一个或多个解码器(未示出)(诸如校正码(error-correcting code,ECC)解码器)、一个或多个编码器(未示出)(诸如ECC编码器)。一个或多个解码器和/或一个或多个编码器可以是控制器114的一个或多个专用电路,可以经由在控制器114上运行的固件来实现,和/或可以是与控制器114分离的一个或多个电路。如本文中所使用的,术语“闪存电路”可以与术语“非易失性存储器电路”互换使用。
控制器114的处理器可以是通用微处理器、多核处理器、微控制器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门控逻辑、分立硬件组件、或前述的组合。由控制器114和/或其处理器运行的一个或多个指令的序列可以从易失性存储器122或一个或多个闪存电路112A-N、电子介质、光学介质、磁介质、或其他类型的存储介质存储和读取。这些存储介质表示其上可以存储由控制器114和/或其处理器可运行的指令/代码的有形和/或非暂时性的机器或计算机可读介质的示例。在一些实施方式中,可以从主机设备130(例如,经由接口124)接收指令。
易失性存储器122可以包含随机存取存储器(random access memory,RAM)、静态随机存取存储器(static random-access memory,SRAM)、动态随机存取存储器(DRAM)、诸如DDR3(Double-Data-Rate 3,第三代双倍数据率)的同步动态随机存取存储器(synchronous dynamic random-access memory,SDRAM)或其任何组合。
根据各种方面,一个或多个闪存电路112A-N可以包括一个或多个闪存集成电路、硫族化物RAM(Chalcogenide RAM,C-RAM)、相变存储器(Phase Change Memory,PC-RAM或PRAM)、可编程金属化单元RAM(Programmable Metallization Cell RAM,PMCRAM或PMCm)、双相统一存储器(Ovonic Unified Memory,OUM)、电阻RAM(Resistance RAM,RRAM)、NANO存储器(例如,单级单元(ingle-level cell,SLC)存储器、多级单元(multi-level cell,MLC)存储器或其任何组合)、NOR存储器、EEPROM、铁电存储器(Ferroelectric Memory,FeRAM)、磁阻RAM(Magnetoresistive RAM,MRAM)、其他分立NVM(non-volatile memory,非易失性存储器)芯片、或其任何组合。数据存储设备110还可以包括其他类型的非易失性和/或易失性储存器,诸如磁储存器。
数据存储设备110的接口124将数据存储设备110耦合到主机设备130。接口124可以是有线接口,诸如外围组件接口控制器(Peripheral Component InterfaceController,PCIC)接口、个人计算机存储卡国际协会(Personal Computer Memory CardInternational Association,PCMCIA)接口、串行AT附件(Serial AT(advancedtechnology,高级技术)Attachment,SATA)接口、通用串行总线(universal serial bus,USB)接口或一般任何有线接口。可选地,或此外,接口124可以是无线接口,诸如无线SATA、蓝牙、或者一般任何无线接口。
通道113A-N可以各自通信地将闪存电路112A-N中的一个或多个耦合到控制器114。在一个或多个实施方式中,例如,通道113A-N可以直接耦合到控制器114。通道113A-N可以是有线接口。
在系统100中,通道113A通信地耦合到闪存电路112A,通道113B通信地耦合到闪存电路112B,通道113C通信地耦合到闪存电路112C,并且通道113N通信地耦合到闪存电路112N。虽然通道113A-N在系统100中示出为每个通信地耦合到闪存电路112A-N中的一个,但是通道113A-N中的每一个可以通信地耦合到闪存电路112A-N中的多个,如下面关于图2进一步讨论的。当闪存电路112A-N的多个耦合到通道113A-N中的单个通道时,闪存电路112A-N中的仅一个可以能够在任何给定时间通过通道发送或接收数据。
可以使用在闪存接口中的一个和相应的闪存电路之间耦合的一个或多个物理I/O总线来实现通道113A-N中的每一个。每个通道允许相应的闪存接口向相应的闪存设备发送读取、写入和/或擦除命令。每个闪速存储器接口可以包括将来自控制器114的对相应闪速存储器设备的读取、写入和/或擦除命令排队的寄存器(例如,先进先出(First-In-First-Out,FIFO)寄存器)。虽然如上使用的术语“通道”指代在闪存接口与相应的闪存设备之间耦合的总线,但是术语“通道”也可以指代可寻址的对应闪存设备。
通道113A-N可以各自与最大带宽和/或吞吐量相关联。类似地,接口124也可以与最大带宽和/或吞吐量相关联。因此,在任何给定时间,在能够被传送和/或在通道113A-N中的每一个通道上的数据量上可能存在带宽/吞吐量限制。此外,闪存电路112A-N中的每一个可以能够在任何给定的时间处理仅单个命令,例如,写入命令或读取命令。
控制器114可以是可操作的,以经由通道113A-N从闪存电路112A-N读取数据和将数据写入闪存电路112A-N。例如,控制器114经由接口124从主机设备130接收诸如数据流的数据,其中数据可以然后经由通道113A-N中的一个或多个被写入闪存电路112A-N中的一个或多个。
控制器114可以利用易失性存储器122来排队旨在被存储在闪存电路112A-N中的系统数据和/或主机数据。例如,易失性存储器122可以用作速率控制的缓冲器,或者另外可以用于存储由控制器114使用的信息(例如,队列、变量、物理块状态、逻辑到物理地址映射表、耐用性/保留数据、设置等),以从/向闪存电路112A-N读取/写入数据。因为易失性存储器122可以是易失性存储器,所以控制器114可以从易失性存储器122写入闪存电路112A-N,以将信息永久存储在闪存电路112A-N中的一个或多个中。当数据存储设备110通电时,控制器114可以从一个或多个闪存电路112A-N中检索信息并将该信息存储在易失性存储器122中。在一些实施方式中,易失性存储器122可以是控制器114的一部分,或在其他实施方式中,易失性存储器122可以是分离的组件并且通信地耦合到控制器114。
由接口124传送的存储访问命令可以包括由主机设备130发出的读取和写入命令。读取和写入命令可以指定用于访问数据存储设备110的逻辑地址(例如,逻辑块地址或LBA(logical block addresses,逻辑块地址))。
在一些实施方式中,数据存储设备110维护由主机设备130使用的逻辑地址与一个或多个闪存电路112A-N中的物理存储器位置之间的地图或映射。映射可以被构造以提供对应于逻辑地址的物理地址的查找,并且映射可以基于逻辑地址(和/或基于物理地址)被索引。由主机设备130写入数据存储设备110的最小单位的大小可以不同于由数据存储设备110存储在一个或多个闪存电路112A-N中的最小数据单位。例如,数据存储设备110的数据单位的大小可以是4千字节,并且由主机设备130写入的主机数据段的大小可以是512字节。由主机设备130使用的逻辑地址与一个或多个闪存电路112A-N中的物理存储器位置之间的映射可以解决该差异。
映射可以作为表格和/或任何其他合适的数据结构来维护。对应于给定逻辑地址(例如,LBA)的物理存储器位置可以由于主机数据被移动而改变。例如,由于一个或多个内务操作,诸如垃圾收集(例如,回收由无效数据使用的存储空间)、损耗均衡(例如,在物理页面和/或块上基本平均地展开写入负载)、存储器刷新(例如,周期性地刷新存储的数据)、坏块管理(例如,发现并且不用于存储不可靠的数据块)等,主机数据可以在一个或多个闪存电路112A-N内移动。此外,当主机设备130为特定的逻辑地址写入数据时,由于数据正被存储在不同的物理存储位置,因此该逻辑地址的映射可能会改变。例如,主机设备130可以将用于LBA的数据存储到数据存储系统110,该数据然后由数据存储设备110存储在第一物理地址中。稍后,可以从主机设备130接收用于LBA的更新数据,使得存储在相应的第一物理地址处的数据变得无效。
闪存电路112A-N可以各自包括物理块,诸如NAND块和/或NOR块。物理块可以各自包括可以写入数据或可以从其中读取数据的物理页面。虽然闪存电路112A-N的块的物理页面可以单独地被写入(例如,物理页面是用于读取/写入操作的单位),但是闪存电路112A-N的块的物理页面不能被单独地擦除。相反,仅能够通过擦除块的所有页面(例如,块是用于擦除操作的单位)来擦除并且随后重写块的页面。因此,当数据从块的页面移动或数据被删除时,该页面可以被标记为无效,并且在整个块被擦除之前不能被重用。
例如,当垃圾收集引擎116识别包括无效页面的闪存电路112A-N之一(诸如闪存电路112A)的块时,垃圾收集引擎116可以发出一系列命令(例如,读取、写入、擦除命令)。例如,垃圾收集引擎116可以通过发起发出垃圾收集命令的请求来促进垃圾收集操作,并且将垃圾收集命令的请求(和/或其指示符)添加到垃圾命令收集队列。垃圾收集命令可以识别闪存电路112A的块的一个或多个有效页面以从中读取数据,将有效页面写入闪存电路112A-N的新块中,并且擦除闪存电路112A的旧块。
调度引擎115基于垃圾收集操作的优先化从垃圾收集命令队列中获得垃圾收集命令的请求,并且根据优先化,将该垃圾收集命令放置在通道113A-N中的一个或多个上。例如,调度引擎115可以通过通道113A向闪存电路112A发出垃圾收集命令的序列。闪存电路112A-N中的任何一个可以接收垃圾收集读取命令并且当资源可用时处理读取命令。因为闪存电路112A一次仅能够处理一个命令,所以读取命令可以在被接收时由闪存电路112A处理,或者可以在被接收到之后被处理一段时间。如果存在有效的数据,则可以执行写入操作。闪存电路112A可以接收垃圾收集写入命令并且处理写入命令以写入有效数据。例如,如果这种块可用,则闪存电路112A可以将有效数据写入闪存电路112A的另一块的页面。
数据重新定位引擎117可以从控制器114的解码器(未示出)接收一个或多个错误检测信号。错误检测信号可以指示某一类型的读取/写入错误正发生在闪存电路112A-N中的一个(诸如闪存电路112A)的一个或多个块中。这种读取/写入错误的再次发生可能致使一个或多个块不可操作,因此有必要将所有数据从所识别的一个或多个块移出到其它块。数据重新定位引擎117可以发起发出数据重新定位命令的请求,并且将对数据重新定位命令的请求(和/或其指示符)添加到数据重新定位队列。数据重新定位命令可以识别闪存电路112A的物理块(从该物理块移动有效数据)。
调度引擎115基于数据重新定位操作的优先化从数据重新定位队列获得对数据重新定位命令的请求,并且根据优先化将数据重新定位命令放置在通道113A-N中的一个或多个上。例如,调度引擎115可以通过通道113A向闪存电路112A发出数据重新定位命令。闪存电路112A可以接收数据重新定位读取命令并且在资源可用时处理读取命令。因为闪存电路112A一次仅能够处理一个命令,所以读取命令可以在被接收时由闪存电路112A处理,或者可以在被接收到之后被处理一段时间。可选地和/或此外,如果这样的块可用,则闪存电路112A可以将数据写入闪存电路112A的另一个块的页面。
损耗均衡引擎118可以获得存储在数据存储设备110的系统数据中的关于保留时间和擦除(P/E)计数的信息。损耗均衡引擎118可以识别包含具有相对低的擦除计数的冷数据的一个或多个块,和包含来自闪存电路112A-N之一(诸如闪存电路112A)的块的具有相对高的擦除计数的热数据的一个或多个块。损耗均衡引擎118通过将数据从具有低擦除计数的块移动到具有高擦除计数的其他块,来将擦除计数维护在最小阈值和最大阈值之间,并且反之亦然,取决于数据正被更新的速率。在任何时候,损耗均衡引擎118都可以将冷数据从具有相对低的擦除计数的块移动到具有相对高的擦除计数的另一块,因为冷数据不会创造大量用块的写入/擦除事务。在另一方面,损耗均衡引擎118可以将热数据从具有相对高的擦除计数的块移动到具有相对低的擦除计数的另一块,因为热数据需要更多用块的写入/擦除事务。通过从具有低擦除计数的块移动冷数据,更多块变得可用于要被移动到这些较低擦除计数块的热数据,以促进低擦除计数块的均匀损耗。类似地,通过将冷数据移动到具有高擦除计数的块,高擦除计数块上的损耗可能会更均匀地处理。
损耗均衡引擎118可以发起发出损耗均衡命令的请求,并且将对损耗均衡命令的请求(和/或其指示符)添加到损耗均衡队列。损耗均衡命令可以识别闪存电路112A的物理块(热数据和/或冷数据从该物理块移动)。
调度引擎115基于损耗均衡操作的优先化从损耗均衡队列获得对损耗均衡命令的请求,并且根据优先化将损耗均衡命令放置在通道113A-N的一个或多个上。例如,调度引擎115可以通过通道113A向闪存电路112A发出损耗均衡命令。闪存电路112A可以接收损耗均衡读取命令并且在资源可用时处理读取命令。因为闪存电路112A一次仅能够处理一个命令,所以读取命令可以在被接收时由闪存电路112A处理,或者可以在被接收到之后被处理一段时间。可替代地和/或此外,如果这样的块可用,则闪存电路112A可以将数据(例如,热数据)写入闪存电路112A的另一个块(例如,具有较低擦除计数的块)的页面。
调度引擎115可以以接收这些请求的相同顺序或者以内部数据移动命令类型之间的循环顺序,来处理由垃圾收集引擎116、数据重新定位引擎117和损耗均衡引擎118排队的请求。然而,以所接收的顺序或以循环顺序来服务请求不允许以及时的方式来服务更重要的操作,因此影响数据存储设备110的数据完整性。
在这方面,调度引擎115优先化内部数据移动命令类型(例如,垃圾收集、数据重新定位、损耗均衡),使得以更及时的方式发出对于操作比其他操作更重要的操作,因此提高数据存储设备110的性能和耐用性。调度引擎115可以在逻辑上将损耗均衡请求和数据重新定位请求分组在一起,其中数据重新定位请求被给予比损耗均衡请求更高的优先级。用垃圾收集请求以循环方式提取来自此逻辑分组的请求。当数据重新定位请求和损耗均衡请求的逻辑分组在循环顺序中具有轮次时,可以在所有现有数据重新定位请求已被服务之后(或者当数据重新定位命令队列为空时)选择损耗均衡请求。用这种方法,垃圾收集请求被给予足够的优先级以确保数据存储设备110的连续操作。同时,数据重新定位请求和损耗均衡请求被给予考虑以确保数据存储设备110的耐用性。
图2示出了根据一个或多个实施方式的基于优先级的内部数据移动的示例过程200的流程图。为了解释的目的,本文中参考图1的控制器114描述示例过程200;然而,示例过程200不限于图1的控制器114,并且示例过程200的一个或多个块可以由控制器114的一个或多个其他组件执行。进一步为了解释的目的,示例过程200的块在本文中被描述为以串行或线性的形式发生。然而,示例过程200的多个块可以并行发生。另外,示例过程200的块不需要以所示的顺序执行,且/或示例过程200的一个或多个块不需要执行。为了本主题技术的解释的目的,过程200将参考图3被讨论。
图3示出了根据一个或多个实施方式的用于基于优先级的内部数据移动的系统300的示例。系统300包括提供基于优先级的内部数据移动的数据存储设备(例如110)。数据存储设备包括至少一个处理器,其被配置为排队与不同类型的内部数据移动命令相关联的请求。在一些方面,内部数据移动命令类型由单个处理核心排队。在其他方面,内部数据移动命令类型由相应的处理核心排队。例如,具有垃圾收集引擎116的垃圾收集模块301是运行负责处理垃圾收集请求的固件的处理核心。在另一示例中,具有数据重新定位引擎117的数据重新定位模块302是运行负责处理数据重新分配请求的固件的处理核心。在另一个示例中,具有损耗均衡引擎118的损耗均衡模块303是运行负责处理损耗均衡请求的固件的处理核心。
在一个或多个方面中,每个请求被排队到队列之一中。返回参考图2,示例过程200在发出不同内部数据移动命令类型的请求被排队在相应命令队列(202)中的情况下开始。例如,垃圾收集模块301可以包括垃圾收集命令队列,垃圾收集命令队列在它们由垃圾收集引擎116发出时将垃圾收集请求排队。在另一个示例中,数据重新定位模块302可以包括数据重新定位命令队列,数据重新定位命令队列在它们由数据重新定位引擎117发出时将数据重新定位请求排队。在另一个示例中,损耗均衡模块303可以包括损耗均衡命令队列,损耗均衡命令队列在它们由损耗均衡引擎118发出时将损耗均衡请求排队。
具有调度引擎115的调度器304被配置为基于内部数据移动命令类型的优先化来识别内部数据移动命令类型当中的轮次。例如,垃圾收集请求在优先化的调度的每隔一个轮次中被服务,并且以循环顺序与其他类型的请求一起被处理。调度器304可以在优先化的调度的交替轮次中服务来自数据重新定位命令队列的数据重新定位请求或来自损耗均衡命令队列的损耗均衡请求。然而,在所有数据重新定位请求被第一次服务(或数据重新定位命令队列为空)之前,损耗均衡请求可能不被服务。
调度器304遍历优先化的调度并识别优先化的调度中的轮次。在这方面,调度器304基于所识别的轮次来选择队列中的一个队列。例如,调度器304可以调度来自垃圾收集模块301中的垃圾收集命令队列、数据重新定位模块302中的数据重新定位命令队列、或损耗均衡模块303中的损耗均衡命令队列的调度命令。一旦被排队的请求已被调度器304识别,则调度器304然后发出与被排队的请求之一相关联的内部数据移动命令类型中的一个。例如,在调度算法的开始,调度器304可以从垃圾收集命令队列中选择请求,并经由控制器306的处理核心向闪存电路307-309中的一个(例如,闪存裸芯0-N)发出垃圾收集读取命令。
返回参考图2,调度器304确定是否轮到发出垃圾收集命令(204)。如果确定没有轮到垃圾收集命令,则过程200前进到步骤210。否则,过程前进到步骤206,其中调度器304确定垃圾收集命令队列是否为空。如果垃圾收集命令队列不是空的,则调度器304调度用于发出的垃圾收集命令(208)。否则,调度器304返回到步骤204以确定下一轮次。在调度用于发出的垃圾收集命令之后,调度器304也返回到步骤204。
在210处,调度器304确定是否轮到发出数据重新定位命令。如果确定没有轮到数据重新定位命令,则过程200前进到步骤216。否则,过程前进到步骤212,其中调度器304确定数据重新定位命令队列是否为空。如果数据重新定位命令队列不是空的,则调度器304调度用于发出的数据重新定位命令(214)。否则,调度器304返回到步骤204以确定下一轮次。在调度用于发出的数据重新定位命令之后,调度器304也返回到步骤204。
在216处,调度器304确定损耗均衡命令队列是否为空。如果损耗均衡命令队列不是空的,则调度器304调度用于发出的损耗均衡命令(218)。否则,调度器304返回到步骤204以确定下一轮次。在调度用于发出的损耗均衡命令之后,调度器304也返回到步骤204。
在图3中,垃圾收集模块301的垃圾收集命令队列包括多个被排队的垃圾收集请求(例如,GC1-GC6)。数据重新定位模块302的数据重新定位命令队列包括多个被排队的数据重新定位请求(例如,DR1、DR2)。而且,损耗均衡模块301的损耗均衡命令队列包括多个被排队的损耗均衡请求(例如,WL1-WL6)。
在一个或多个实施方式中,调度器304可以通过首先扫描垃圾收集命令队列来发起调度算法,然后发出垃圾收集读取命令(例如,GC1)。在优先化的调度的下一轮次中,调度器304扫描数据重新定位命令队列并识别数据重新定位请求,以然后发出数据重新定位读取命令(例如,DR1)。在优先化的调度的后续轮次中,调度器304返回垃圾收集命令队列以识别下一被排队的请求并发出第二垃圾收集读取命令(例如,GC2)。在优先化的调度的下一轮次中,调度器304返回到数据重新定位命令队列并识别另一数据重新定位请求,以然后发出第二数据重新定位读取命令(例如,DR2)。在下一轮次中,调度器304返回垃圾收集命令队列以识别下一个排队的请求并发出第三垃圾收集读取命令(例如,GC3)。下一轮次指引调度器304回到数据重新定位命令队列,然而,数据重新定位命令队列中的所有数据重新定位请求已经被服务(例如,DR1、DR2)。因此,调度器304然后扫描损耗均衡命令队列以识别第一损耗均衡请求,以然后发出第一损耗均衡读取命令(例如,WL1)。考虑到所有数据重新定位请求已经被调度器304服务,垃圾收集请求与损耗均衡请求之间的这个循环过程将继续。对于该示例,发出到控制器306的处理核心的命令的序列如下所示:GC1、DR1、GC2、DR2、GC3、WL1、GC4、WL2、GC5、WL3、GC6、WL4。用这种方法,垃圾收集请求被给予足够的优先级以确保数据存储设备110的连续操作。同时,数据重新定位请求和损耗均衡请求被给予考虑以确保数据存储设备110的耐用性。
在一些方面,调度器304维护状态机以跟踪每个块(或块集合)的状态。在这方面,在某一状态(例如,与垃圾收集相对应的状态)的块可能不能被另一引擎(例如,数据重新定位引擎117、损耗均衡引擎118)访问以执行不同类型的内部数据移动,直到在所识别的块(或块集合)上执行的操作完成。在这方面,块(或块集合)的状态改变为准备状态或另一指示块(或块集合)可用的默认状态。在这方面,调度器304确定闪存电路307-309中的哪些块(或块集合)与排队的请求相关联。调度器304然后将状态分配给确定的块(或块集合)。在某些方面中,状态指示正在发出的内部数据移动命令的类型。在决定对该块(或块集合)发出读取/写入命令之前,垃圾收集模块301、数据重新定位模块302、和损耗均衡模块303能够各自访问块(或块集合)的状态信息。
图4示出根据一个或多个实施方式的在示例数据存储设备110中分布在不同通道上的示例非易失性存储器电路。然而,并非所有描绘的组件都可能是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。在不脱离本文阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供额外的组件、不同的组件、或更少的组件。
示例数据存储设备110包括接口124、控制器114、通道113A-113N、以及一个或多个闪存电路112A-N。闪存电路112A-N各自包括闪存的一个或多个物理块(例如,302A-P),物理块也可以被指代为块并在下面参考图5进一步讨论。
在一些方面,在闪存电路112A接收到数据之后,闪存电路112A可以是忙状态,在此期间闪存电路112A可能不会接收到任何额外的读取和/或写入命令。因此,同时在忙状态中的闪存电路112A-N的数量可以限制数据存储设备110。其他通道113B-N可以以类似的方式操作。
为了说明的目的,图4的数据存储设备110被示出为包括四个通道113A-N,并且通道113A-N中的每一个被示出为通信地耦合到闪存电路112A-N。然而,数据存储设备110可以包括任何数量的通道,诸如8、16、和32。类似地,通道113A-N中的每一个可以通信地耦合到任何数量(诸如任意数字)的闪存电路112A-N。在一个或多个实施方式中,通道113A-N中的一个或多个可以通信地耦合到不同数量的闪存电路112A-N。
图5示出根据一个或多个实施方式的在示例数据存储设备110中分布在不同通道上的非易失性存储器电路的示例块。然而,并非所有描绘的组件都是必需的,并且一个或多个实施方式可以包括图中未示出的额外的组件。在不脱离本文阐述的权利要求的精神或范围的情况下,可以对组件的布置和类型进行变化。可以提供额外的组件、不同的组件、或更少的组件。
为了说明的目的,图4的数据存储设备110被示出为包括闪存电路112A。闪存电路112A包括闪存的一个或多个物理块202A-D,其也可以被指代为块202A-D。块202A-D中的每一个可以包括闪存的一个或多个物理页面402A-D。块202A-D中的的单独的物理页面402A-D能够被以闪存电路112A-N中的最小单位写入,并且可以是例如8-16千字节大小。在一个或多个实施方式中,闪存电路112A可以是16千兆字节大小并且可以包括4252个块,其中每一个块包括256个页面,每个页面存储17760个字节。
本公开的范围内的实施方式能够使用编码一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)来部分地或全部地实现。有形计算机可读存储介质本质上也能够是非瞬态的。
计算机可读存储介质能够是能够被通用或专用计算设备读取、写入、或以其他方式访问的任何存储介质,通用或专用计算设备包括能够运行指令的任何处理电子设备和/或处理电路。例如,没有限制,计算机可读介质能够包括任何易失性半导体存储器,诸如RAM、DRAM、SRAM、T-RAM(Thyristor RAM,可控硅RAM)、Z-RAM和TTRAM(Twin TransistorRAM,双场效应管RAM)。计算机可读介质也能够包括诸如ROM(Read-Only Memory,只读存储器)、PROM(Programmable ROM,可编程ROM)、EPROM(Electrically PROM,电可编程ROM)、EEPROM、NVRAM(Non-Volatile RAM,非易失性RAM)、闪存、nvSRAM(non-volatile SRAM,非易失性SRAM)、FeRAM、FeTRAM(Ferroelectric Transistor RAM,铁电晶体管RAM)、MRAM、PRAM、CBRAM(Conductive-Bridging RAM,导电桥RAM)、SONOS(Silicon Oxide Nitride OxideSilicon,硅-氧化物-氮化物-氧化物-硅)、RRAM、NRAM(Nano-RAM,纳米管RAM)、赛道(racetrack)存储器、FJG(Floating Junction Gate,浮动结栅)、和千足虫(Millipede)存储器的任何非易失性半导体存储器。
此外,计算机可读存储介质能够包括任何非半导体存储器,诸如光盘存储器、磁盘存储器、磁带、其他磁存储设备、或能够存储一个或多个指令的任何其他介质。在一些实施方式中,有形计算机可读存储介质能够直接耦合到计算设备,而在其他实施方式中,有形计算机可读存储介质能够间接(例如,经由一个或多个有线连接、一个或多个无线连接、或其任何组合)耦合到计算设备。
指令能够是直接可运行的或能够用于开发可运行指令。例如,指令能够被实现为可运行或不可运行的机器代码,或者被实现为能够被编译以产生可运行或不可运行的机器代码的高级语言的指令。此外,指令也能够被实现为或能够包括数据。计算机可运行指令也能够以任何格式来组织,包括例程、子例程、程序、数据结构、对象、模块、应用程序、小程序、函数等。如本领域技术人员所认识的,包括但不限于指令的数量、结构、序列和组织的细节能够很大地改变,而不改变基础逻辑、功能、过程和输出。
虽然以上讨论主要涉及运行软件的微处理器或多核处理器,但是一个或多个实施方式由一个或多个集成电路(诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA))执行。在一个或多个实施方式中,这样的集成电路运行存储在电路本身上的指令。
本领域的技术人员将认识到,可以将本文中描述的各种说明性块、模块、元件、组件、方法、和算法实施为电子硬件、计算机软件、或两者的组合。为了说明硬件和软件的这种可互换性,上面已经根据其功能一般地描述了各种说明性块、模块、元件、组件、方法、和算法。这种功能是被实施为硬件还是软件,取决于特定的应用和对整个系统施加的设计约束。本领域技术人员可以针对每个特定应用以各种方式实施所描述的功能。各种部件和块可以不同地布置(例如,以不同的顺序布置、或以不同的方式分割),而全不脱离本主题技术的范围。
应该理解,所公开的过程中的框的任何特定顺序或层次是示例方法的说明。基于设计偏好,可以理解的是,可以重新布置过程中的块的特定顺序或层次,或者执行所有示出的块。任何块可以同时执行。在一个或多个实施方式中,多任务和并行处理可能是有利的。不仅如此,上述实施方式中的各种系统组件的分离不应该被理解为在所有实施方式中都需要这种分离,并且应该理解,所描述的编程组件和系统一般地能够一起集成在单个软件产品中或者封装到多个软件产品中。
如在本说明书和本申请的任何权利要求中所使用的,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”和“存储器”都指代电子或其他技术设备。这些术语不包括人或人群。为了说明的目的,术语“显示”或“正显示”意味着在电子设备上显示。
如本文中所使用的,在一系列术语之前的短语“……中的至少一个”与将任何术语分开的术语“和”或“或”,将列表作为整体修饰,而不是修饰列表中的每个成员(即每个术语)修饰。短语“……中的至少一个”不需要选择列出的每个术语中的至少一个;相反,该短语允许包括任何一个术语中的至少一个、和/或术语的任何组合中的至少一个、和/或每个术语中的至少一个的含义。举例来说,短语“A、B和C中的至少一个”或“A、B或C中的至少一个”各自仅指代A、仅指代B、或仅指代C;A、B和C的任何组合;和/或A、B和C中的每一个中的至少一个。
谓词“配置为”、“可操作为”、和“被编程为”不意味着主体的任何特定的有形或无形修改,而是旨在可互换地使用。在一个或多个实施方式中,被配置为监视和控制操作或组件的处理器也可意指被编程以监视和控制操作的处理器,或可操作为监视和控制操作的处理器。类似地,被配置为运行代码的处理器能够被解释为被编程为运行代码或可操作为运行代码的处理器。
诸如一方面、该方面、另一方面、一些方面、一个或多个方面、实施方式、该实施方式、另一实施方式、一些实施方式、一个或多个实施方式、配置、该配置、另一种配置、一些配置、一种或多种配置、主题技术、公开、本公开、其其他变化等都是为了方便,并不暗示涉及这样的短语的公开对于主题技术是必不可少的,或者这样的公开适用于主题技术的所有配置。涉及这样的短语的公开可以适用于所有配置或者一个或多个配置。涉及这样的短语的公开可以提供一个或多个示例。诸如一方面或一些方面的短语可以指一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
本文中使用词语“示例性”来表示“用作示例、实例或说明”。本文中被描述为“示例性”或“示例”的任何实施方式不必被解释为优于其他实施方式的优选的或有利的实施方式。此外,就在说明书或权利要求书中使用的术语“包括”、“具有”等而言,这样的术语旨在以与术语“包含”类似的方式是包括性的,因为“包含”是在用作权利要求中的过渡词时加以解释。
本领域普通技术人员已知或以后将为本领域技术人员所知的本公开所描述的各个方面的要素的所有结构和功能等同物通过引用明确地并入本文中,并且旨在由权利要求包括。不仅如此,在此公开的任何内容都不旨在致力于公众,不管这些公开是否在权利要求中明确记载。权利要求内容不得根据35U.S.C.§112第六段的规定解释,除非使用短语“用于...的部件”明确叙述该元件,或者在方法权利要求的情况下,使用短语“用于...的步骤”来叙述该元件。
提供之前的描述是为了使本领域的任何技术人员能够实践本文描述的各个方面。这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且这里定义的一般原理可以应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是要符合与语言权利要求相一致的全部范围,其中以单数形式引用的元件并非意在表示“一个且仅一个”(除非具体如此陈述),而是“一个或多个”。除非另有特别说明,否则术语“一些”是指一个或多个。男性(例如他)的代词包括女性和中性(例如她和她的),反之亦然。标题和副标题(如果有的话)仅为了方便,并不限制主题内容。
Claims (20)
1.一种数据存储设备,包含:
多个队列;
多个处理器,所述多个处理器中的每一个被配置为将与多个内部数据移动命令类型中的相应一个相关联的一个或多个请求排队,所述一个或多个请求中的每一个被排队到用于所关联的内部数据移动命令类型的所述多个队列中的一个中;以及
调度器,可通信地耦合到所述多个队列,所述调度器被配置为:
基于所述多个内部数据移动命令类型的优先化来识别所述多个内部数据移动命令类型当中的轮次;
基于所识别的轮次来选择所述多个队列中的一个队列;以及
基于所关联的内部数据移动命令类型,发出所选择的队列的被排队的一个或多个请求中的一个,被排队的一个或多个请求中的一个被发出到多个非易失性存储器电路中的至少一个;以及
其中所述多个内部数据移动命令类型包括垃圾收集命令类型、数据重新定位命令类型、和损耗均衡命令类型,并且
其中所述优先化包括:
将所述数据重新定位命令类型和所述损耗均衡命令类型逻辑分组;
在循环顺序中选择逻辑分组或所述垃圾收集命令类型;以及
当选择所述逻辑分组时,给予比所述损耗均衡命令类型更高的优先级来选择所述数据重新定位命令类型。
2.如权利要求1所述的数据存储设备,其中,所述调度器还被配置为:
确定所选择的队列是否包括所关联的内部数据移动命令类型的至少一个请求,
其中,当所选择的队列被确定为包括所述至少一个请求时,发出所述被排队的一个或多个请求中的一个。
3.如权利要求1所述的数据存储设备,其中,所述调度器被配置为基于指示所述数据重新定位命令类型的所识别的轮次,从所述垃圾收集命令类型交替到所述数据重新定位命令类型。
4.如权利要求3所述的数据存储设备,其中,所述调度器被配置为基于指示所述损耗均衡命令类型的所识别的轮次,从所述垃圾收集命令类型交替到所述损耗均衡命令类型。
5.如权利要求4所述的数据存储设备,其中所述调度器还被配置为:
确定所识别的轮次是指示所述垃圾收集命令类型,还是包含所述数据重新定位命令类型和所述损耗均衡命令类型的逻辑分组,其中所述多个队列中的第一队列被配置为存储所述垃圾收集命令类型的请求,其中所述多个队列中的第二队列被配置为存储所述数据重新定位命令类型的请求,并且其中所述多个队列中的第三队列被配置为存储所述损耗均衡命令类型的请求。
6.如权利要求5所述的数据存储设备,其中所述调度器还被配置为:
确定所识别的轮次指示所述垃圾收集命令类型;
确定所述第一队列包括所述垃圾收集命令类型的至少一个请求;以及
向所述多个非易失性存储器电路中的至少一个提供用于发出的所述垃圾收集命令类型的至少一个请求。
7.如权利要求5所述的数据存储设备,其中所述调度器还被配置为:
确定所识别的轮次指示所述数据重新定位命令类型;
确定所述第二队列包括所述数据重新定位命令类型的至少一个请求;以及
向所述多个非易失性存储器电路中的至少一个提供用于发出的所述数据重新定位命令类型的至少一个请求。
8.如权利要求5所述的数据存储设备,其中所述调度器还被配置为:
确定所识别的轮次指示所述损耗均衡命令类型;
确定所述第三队列包括所述损耗均衡命令类型的至少一个请求;以及
向所述多个非易失性存储器电路中的至少一个提供用于发出的所述损耗均衡命令类型的至少一个请求。
9.如权利要求5所述的数据存储设备,其中所述调度器还被配置为:
当所识别的轮次指示所述逻辑分组时,确定所述第二队列是否为空,其中当确定所述第二队列为空时,所识别的轮次指示所述损耗均衡命令类型。
10.如权利要求5所述的数据存储设备,其中所述调度器还被配置为:
确定所述优先化中的第一轮次不指示垃圾收集命令类型,所述第一轮次指示数据重新定位命令类型;
确定所述第二队列是否包括所述数据重新定位命令类型的至少一个请求;以及
当确定所述第二队列包括所述数据重新定位命令类型的至少一个请求时,向所述多个非易失性存储器电路中的至少一个提供用于发出的所述数据重新定位命令类型的至少一个请求。
11.如权利要求10所述的数据存储设备,其中所述调度器还被配置为:
当确定所述第二队列不包括所述数据重新定位命令类型的至少一个请求时,识别所述优先化中的第二轮次,所述第二轮次指示所述垃圾收集命令类型,所述第二轮次在所述第一轮次之后;
确定所述第一队列是否包括所述垃圾收集命令类型的至少一个请求;以及
当确定所述第一队列包括所述垃圾收集命令类型的至少一个请求时,向所述多个非易失性存储器电路中的至少一个提供用于发出的所述垃圾收集命令类型的至少一个请求。
12.如权利要求11所述的数据存储设备,其中所述调度器还被配置为:
当确定所述第一队列不包括所述垃圾收集命令类型的至少一个请求时,识别所述优先化中的第三轮次,所述第三轮次指示所述损耗均衡命令类型,所述第三轮次在所述第二轮次之后;
确定所述第三队列是否包括所述损耗均衡命令类型的至少一个请求;
当确定所述第三队列包括所述损耗均衡命令类型的至少一个请求时,向所述多个非易失性存储器电路中的至少一个提供用于发出的所述损耗均衡命令类型的至少一个请求;以及
当确定所述第三队列不包括所述损耗均衡命令类型的至少一个请求时,识别所述优先化中的第四轮次,所述第四轮次指示所述垃圾收集命令类型,所述第四轮次在所述第三轮次之后。
13.如权利要求1所述的数据存储设备,其中给予比所述损耗均衡命令类型更高的优先级来选择所述数据重新定位命令类型包括:
只有在与所述数据重新定位命令类型相关联的多个队列中的一个或多个队列全部为空之后,选择所述损耗均衡命令类型。
14.一种提供基于优先级的内部数据移动的系统,包含:
非易失性存储器电路;
包括多个队列的易失性存储器;以及
控制器,通信地耦合到所述易失性存储器和所述非易失性存储器电路,所述控制器被配置为:
在所述多个队列中排队请求,每个所述请求与多个内部数据移动命令类型中的一个相关联;
基于所述多个内部数据移动命令类型的优先化来选择所述多个队列中的一个队列;
确定所选择的队列包括所关联的内部数据移动命令类型的至少一个请求;以及
向所述非易失性存储器电路中的至少一个发出来自所选择的队列的至少一个请求;
其中所述多个内部数据移动命令类型包括垃圾收集命令类型、数据重新定位命令类型、和损耗均衡命令类型,并且
其中所述优先化包括:
将所述数据重新定位命令类型和所述损耗均衡命令类型逻辑分组;
在循环顺序中选择逻辑分组或所述垃圾收集命令类型;以及
当选择所述逻辑分组时,给予比所述损耗均衡命令类型更高的优先级来选择所述数据重新定位命令类型。
15.如权利要求14所述的系统,其中,所述控制器还被配置为:
确定所述优先化中的轮次是指示所述垃圾收集命令类型还是包含用于选择的所述数据重新定位命令类型和所述损耗均衡命令类型的逻辑分组,其中所述多个队列中的第一队列被配置为存储所述垃圾收集命令类型的请求,其中所述多个队列中的第二队列被配置为存储所述数据重新定位命令类型的请求,并且其中所述多个队列中的第三队列被配置为存储所述损耗均衡命令类型的请求。
16.如权利要求15所述的系统,其中所述控制器还被配置为:
确定所述优先化中的第一轮次不指示所述垃圾收集命令类型,所述第一轮次指示所述数据重新定位命令;
确定所述第二队列是否包括所述数据重新定位命令类型的至少一个请求;以及
当确定所述第二队列包括所述数据重新定位命令类型的至少一个请求时,向所述多个非易失性存储器电路中的至少一个提供用于发出的所述数据重新定位命令类型的至少一个请求。
17.如权利要求16所述的系统,其中所述控制器还被配置为:
当确定所述第二队列不包括所述数据重新定位命令类型的至少一个请求时,识别所述优先化中的第二轮次,所述第二轮次指示所述垃圾收集命令类型;
确定所述第一队列是否包括所述垃圾收集命令类型的至少一个请求;以及
当确定所述第一队列包括所述垃圾收集命令类型的至少一个请求时,向多个非易失性存储器电路中的至少一个提供用于发出的所述垃圾收集命令类型的至少一个请求。
18.如权利要求17所述的系统,其中所述控制器还被配置为:
当确定所述第一队列不包括所述垃圾收集命令类型的至少一个请求时,识别所述优先化中的第三轮次,所述第三轮次指示所述损耗均衡命令;
确定所述第三队列是否包括所述损耗均衡命令类型的至少一个请求;
当确定所述第三队列包括所述损耗均衡命令类型的至少一个请求时,向所述多个非易失性存储器电路中的至少一个提供用于发出的所述损耗均衡命令类型的至少一个请求;以及
当确定所述第三队列不包括所述损耗均衡命令类型的至少一个请求时,识别所述优先化中的第四轮次,所述第四轮次指示所述垃圾收集命令类型,所述第四轮次在所述第三轮次之后。
19.一种提供基于优先级的内部数据移动的方法,包含:
在易失性存储器中的多个队列中将请求排队,每个所述请求与多个内部数据移动命令类型中的一个相关联;
基于所述多个内部数据移动命令类型的优先化来选择所述多个队列中的一个队列;
确定所选择的队列包括所关联的内部数据移动命令类型的至少一个请求;以及
向至少一个非易失性存储器电路发出来自所选择的队列的至少一个请求;以及
其中所述多个内部数据移动命令类型包括垃圾收集命令类型、数据重新定位命令类型、和损耗均衡命令类型,并且
其中所述优先化包括:
将所述数据重新定位命令类型和所述损耗均衡命令类型逻辑分组;
在循环顺序中选择逻辑分组或所述垃圾收集命令类型;以及
当选择所述逻辑分组时,给予比所述损耗均衡命令类型更高的优先级来选择所述数据重新定位命令类型。
20.一种提供基于优先级的内部数据移动的系统,包含:
用于将与多个内部数据移动命令类型中的相应一个相关联的一个或多个请求排队的部件,所述一个或多个请求中的每一个在用于相关联的内部数据移动命令类型的多个队列中的一个队列中排队;
用于基于所述多个内部数据移动命令类型的优先化来识别所述多个内部数据移动命令类型当中的轮次的部件;
用于基于所识别的轮次来选择所述多个队列中的一个队列的部件;以及
用于向多个非易失性存储器电路中的至少一个发出来自所选择的队列的被排队的一个或多个请求中的一个的部件;以及
其中所述多个内部数据移动命令类型包括垃圾收集命令类型、数据重新定位命令类型、和损耗均衡命令类型,并且
其中所述优先化包括:
将所述数据重新定位命令类型和所述损耗均衡命令类型逻辑分组;
在循环顺序中选择逻辑分组或所述垃圾收集命令类型;以及
当选择所述逻辑分组时,给予比所述损耗均衡命令类型更高的优先级来选择所述数据重新定位命令类型。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/604,575 | 2017-05-24 | ||
US15/604,575 US10503412B2 (en) | 2017-05-24 | 2017-05-24 | Priority-based internal data movement |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108932109A CN108932109A (zh) | 2018-12-04 |
CN108932109B true CN108932109B (zh) | 2021-06-08 |
Family
ID=64109634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810225050.8A Active CN108932109B (zh) | 2017-05-24 | 2018-03-19 | 基于优先级的内部数据移动 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10503412B2 (zh) |
CN (1) | CN108932109B (zh) |
DE (1) | DE102018105984A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102422032B1 (ko) * | 2017-08-16 | 2022-07-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11416162B2 (en) * | 2017-09-27 | 2022-08-16 | Beijing Memblaze Technology Co., Ltd | Garbage collection method and storage device |
US10936205B2 (en) | 2017-10-05 | 2021-03-02 | International Business Machines Corporation | Techniques for retention and read-disturb aware health binning |
US10824352B2 (en) * | 2017-12-06 | 2020-11-03 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
US10963375B1 (en) * | 2018-03-23 | 2021-03-30 | Amazon Technologies, Inc. | Managing maintenance operations for a distributed system |
US11442628B2 (en) | 2018-07-31 | 2022-09-13 | SK Hynix Inc. | Apparatus and method for engaging a plurality of memory systems with each other |
US11249919B2 (en) | 2018-07-31 | 2022-02-15 | SK Hynix Inc. | Apparatus and method for managing meta data for engagement of plural memory system to store data |
CN110780810B (zh) | 2018-07-31 | 2023-06-27 | 爱思开海力士有限公司 | 用于彼此接合多个存储器系统以存储数据的设备和方法 |
US10699791B2 (en) | 2018-08-24 | 2020-06-30 | International Business Machines Corporation | Adaptive read voltage threshold calibration in non-volatile memory |
US11868309B2 (en) * | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
KR102660399B1 (ko) * | 2018-09-20 | 2024-04-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11500572B2 (en) * | 2019-04-03 | 2022-11-15 | Alibaba Group Holding Limited | Method of optimizing performance of a data storage system |
KR20200129700A (ko) * | 2019-05-09 | 2020-11-18 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
TWI717755B (zh) * | 2019-06-12 | 2021-02-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
CN112114737B (zh) * | 2019-06-20 | 2022-10-04 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN112748853B (zh) * | 2019-10-30 | 2024-04-16 | 伊姆西Ip控股有限责任公司 | 用于管理盘的方法、设备和计算机可读介质 |
US11736417B2 (en) * | 2020-08-17 | 2023-08-22 | Western Digital Technologies, Inc. | Devices and methods for network message sequencing |
US11556267B2 (en) * | 2020-08-31 | 2023-01-17 | Micron Technology, Inc. | Data management during a copyback operation |
KR20220030090A (ko) * | 2020-09-02 | 2022-03-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
TWI769080B (zh) * | 2021-09-17 | 2022-06-21 | 瑞昱半導體股份有限公司 | 用於同步動態隨機存取記憶體之控制模組及其控制方法 |
US20230205425A1 (en) * | 2021-12-29 | 2023-06-29 | Micron Technology, Inc. | Sacrificial block pool |
JP2023108843A (ja) | 2022-01-26 | 2023-08-07 | キオクシア株式会社 | メモリシステム |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176746A (zh) * | 2011-09-06 | 2013-06-26 | 西部数据技术公司 | 用于数据存储系统中增强的控制器架构的系统和方法 |
CN103809917A (zh) * | 2012-11-12 | 2014-05-21 | 擎泰科技股份有限公司 | 用于存储器的工作调度方法及其存储系统 |
CN104731981A (zh) * | 2008-09-19 | 2015-06-24 | 甲骨文国际公司 | 存储器端存储请求管理 |
CN105468305A (zh) * | 2015-12-09 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种数据缓存方法、装置和系统 |
CN105867844A (zh) * | 2016-03-28 | 2016-08-17 | 联想(北京)有限公司 | 一种命令控制方法及存储设备 |
CN106527967A (zh) * | 2015-09-10 | 2017-03-22 | 蜂巢数据有限公司 | 减小存储设备中的读命令时延 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235480A1 (en) * | 2007-03-21 | 2008-09-25 | Shai Traister | Systems for storing memory operations in a queue |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
WO2012050934A2 (en) * | 2010-09-28 | 2012-04-19 | Fusion-Io, Inc. | Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol |
US8918595B2 (en) * | 2011-04-28 | 2014-12-23 | Seagate Technology Llc | Enforcing system intentions during memory scheduling |
US9274945B2 (en) * | 2011-12-15 | 2016-03-01 | International Business Machines Corporation | Processing unit reclaiming requests in a solid state memory device |
US9411718B2 (en) * | 2012-12-21 | 2016-08-09 | Seagate Technology Llc | Method to apply fine grain wear leveling and garbage collection |
US9898341B2 (en) * | 2016-02-25 | 2018-02-20 | Western Digital Technologies, Inc. | Adjustable priority ratios for multiple task queues |
US10489085B2 (en) * | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
-
2017
- 2017-05-24 US US15/604,575 patent/US10503412B2/en active Active
-
2018
- 2018-03-15 DE DE102018105984.1A patent/DE102018105984A1/de active Pending
- 2018-03-19 CN CN201810225050.8A patent/CN108932109B/zh active Active
-
2019
- 2019-11-25 US US16/695,052 patent/US10990296B2/en active Active
-
2021
- 2021-04-05 US US17/222,861 patent/US11487437B2/en active Active
-
2022
- 2022-09-28 US US17/955,432 patent/US11816338B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731981A (zh) * | 2008-09-19 | 2015-06-24 | 甲骨文国际公司 | 存储器端存储请求管理 |
CN103176746A (zh) * | 2011-09-06 | 2013-06-26 | 西部数据技术公司 | 用于数据存储系统中增强的控制器架构的系统和方法 |
CN103809917A (zh) * | 2012-11-12 | 2014-05-21 | 擎泰科技股份有限公司 | 用于存储器的工作调度方法及其存储系统 |
CN106527967A (zh) * | 2015-09-10 | 2017-03-22 | 蜂巢数据有限公司 | 减小存储设备中的读命令时延 |
CN105468305A (zh) * | 2015-12-09 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种数据缓存方法、装置和系统 |
CN105867844A (zh) * | 2016-03-28 | 2016-08-17 | 联想(北京)有限公司 | 一种命令控制方法及存储设备 |
Also Published As
Publication number | Publication date |
---|---|
US20230017605A1 (en) | 2023-01-19 |
DE102018105984A1 (de) | 2018-11-29 |
CN108932109A (zh) | 2018-12-04 |
US20200097187A1 (en) | 2020-03-26 |
US11816338B2 (en) | 2023-11-14 |
US11487437B2 (en) | 2022-11-01 |
US20180341413A1 (en) | 2018-11-29 |
US10990296B2 (en) | 2021-04-27 |
US10503412B2 (en) | 2019-12-10 |
US20210223965A1 (en) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108932109B (zh) | 基于优先级的内部数据移动 | |
CN108628777B (zh) | 动态和自适应中断合并的系统和方法 | |
CN110088723B (zh) | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 | |
CN113179658B (zh) | 非顺序分区命名空间 | |
CN110088724B (zh) | 使用控制器存储器缓冲区进行自适应提前完成发布的系统和方法 | |
CN110088725B (zh) | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 | |
CN110447009B (zh) | 用于自适应命令获取聚合的系统和方法 | |
CN113168374B (zh) | 写入命令在分区命名空间中的保持 | |
US10037167B2 (en) | Multiple scheduling schemes for handling read requests | |
CN110806984B (zh) | 在存储器系统中搜索有效数据的设备和方法 | |
US20150234756A1 (en) | Datapath Management in a Memory Controller | |
KR102378295B1 (ko) | 저장 캐시 관리 | |
CN111290704A (zh) | 用于控制储存在存储系统中的数据的装置和方法 | |
CN107980126B (zh) | 用于调度多裸芯储存装置的方法、数据储存装置及设备 | |
CN110895449B (zh) | 用于在存储器系统中管理有效数据的装置和方法 | |
CN111435291A (zh) | 用于擦除非易失性存储器块中编程的数据的装置和方法 | |
CN113744783B (zh) | 分区名称空间(zns)驱动器中的写入数据传送调度 | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
CN117043753A (zh) | Zns设备中的不同写入优先级 | |
WO2021242313A1 (en) | Moving change log tables to align to zones | |
CN112231252B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240914 Address after: Delaware, USA Patentee after: SANDISK TECHNOLOGIES Inc. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |