CN105339913B - 管理不对称存储器系统的写性能 - Google Patents
管理不对称存储器系统的写性能 Download PDFInfo
- Publication number
- CN105339913B CN105339913B CN201480021526.6A CN201480021526A CN105339913B CN 105339913 B CN105339913 B CN 105339913B CN 201480021526 A CN201480021526 A CN 201480021526A CN 105339913 B CN105339913 B CN 105339913B
- Authority
- CN
- China
- Prior art keywords
- write request
- nvram
- write
- data
- subgroup
- 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
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/061—Improving I/O performance
-
- 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
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/7206—Reconfiguration of flash memory system
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
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)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一些实施方式包括一种管理基于所托管的非易失性随机存取存储器(NVRAM)的存储子系统的方法。所述方法包括:在主机计算装置上的装置驱动器接收写请求,所述写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;将所述写请求分类为写请求的群子组,其中各个子群组内的写请求是互斥的;确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;根据所述基于NVRAM的存储子系统的NVRAM装置的负载状况,识别用于处理所述写请求的特定子群组的至少一个NVRAM装置上的目标位置;通过将数据的对应单元写入所述基于NVRAM的存储子系统的至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组。
Description
技术领域
本文献一般地涉及管理不对称存储器系统中的写性能。
背景技术
计算机系统通常使用用于存储数据的存储器模块。通过包括诸如闪速存储器的非易失性计算机存储器的存储卡来实现存储器模块中的一些。
发明内容
本公开描述了用于管理基于非易失性随机存取存储器(NVRAM)的存储子系统的写性能的方法和系统。
在一个方面,一些实施方式包括管理包括非易失性随机存取存储器(NVRAM)装置的基于所托管的NVRAM的存储子系统的方法。所述方法包括:在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入基于NVRAM的存储子系统;将写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理所述写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组。
实施方式可包括以下特征中的一个或多个。处理所述写请求的特定子群组可包括将被归类在写请求的子群组中的一个中的第一写请求的数据的相应单元写入第一目标位置处,并且将被归类在写请求的子群组中的另一个中的第二写请求的数据的相应单元写入第二目标位置处,其中,所述第一目标位置和所述第二目标位置被分开存储器位置的距离,否则在写入所述第一写请求和所述第二写请求的数据的相应单元之前,数据被存储在所述存储器位置内。
处理所述写请求的特定子群组还可包括将被归类在写请求的第一子群组内的写请求的数据的对应单元投影成在被写入之后具有有效期的第一分布,并且将被归类在写请求的第二子群组内的写请求的数据的对应单元投影成在被写入之后具有有效期的第二分布,其中,所述第一分布和所述第二分布在统计学上互不相同。多个自发性或统计学测试可用于确定两个分布从统计学上说是否不同,例如,斯氏t检验、ANOVA分析等。
将写请求分类成写请求的子群组可包括以数据的相应单元的第一大小分布来产生写请求的第一子群组;以数据的相应单元的第二大小分布来产生写请求的第二子群组,其中,所述第一大小分布和所述第二大小分布在统计学上彼此不同。
将写请求分类成写请求的子群组可包括以第一到达时间分布产生在所述装置驱动器处接收的写请求的第一子群组;以第二到达时间分布产生在所述装置驱动器处接收的写请求的第二子群组,其中,所述第一到达时间分布和所述第二到达时间分布在统计学上彼此不同。
将写请求分类成写请求的子群组可包括产生来自线程的一个群组的写请求的特定子群组,所述线程的一个群组与在托管基于NVRAM的存储系统的计算装置上的特定应用相关联。
将写请求分类成写请求的子群组可包括将写请求分类成写请求的第一子群组和写请求的第二子群组,并且其中,所述第一子群组中的写请求请求写入比所述第二子群组中的写请求的数据的相应单元更快改变的数据的相应单元。
所述的方法还可包括:改进因将多个写请求的数据的相应单元写入所述基于NVRAM的存储子系统而造成的写放大开销。改进所述写放大开销可包括通过将接收到的写请求分类来减少已经被重新定位的数据的聚集量,其中数据被重新定位以释放所述至少一个NVRAM装置上的至少一个位置,以便所述基于NVRAM的存储子系统处理在已经接收到多个I/O访问请求之后到达的至少一个写请求。
所述方法还可包括:从候选擦除块的池中选择启用擦除块,所述启用擦除块包括用于容纳特定写请求的数据的相应单元的多于一个写页。选择所述启用擦除块可以基于所述候选擦除块中的每一个上的有效数据的量。选择所述启用擦除块可以基于所述启用擦除块上的负载分布。选择所述启用擦除块可以基于特定写请求的数据的相应单元的预期寿命。
所述方法还可包括:跟踪所述候选擦除块的池中的候选擦除块中的每一个的擦除计数,其中所述擦除计数指示所述擦除块已经经历擦除操作的次数。所述方法可另外包括:响应于候选擦除块的指示所述候选擦除块已经经历小于候选擦除块的池的平均擦除操作的50%的擦除计数,选择用于容纳数据的相应写页的擦除块。
所述方法还可包括跟踪与每个候选擦除块相关联的硬件资源的利用,其中,选择所述启用擦除块使得所有候选擦除块的相应利用变得相互分歧更少。所述硬件资源可包括适于在选自候选擦除块的池中的启用擦除块上执行读写操作的直接存储器访问(DMA)通道。
将多个写请求分类成写请求的子群组包括确定所述多个写请求中的特定写请求是时延敏感还是吞吐量敏感。当写请求是将在接收时被处理时,写请求是时延敏感的。当数据的相应单元将伴随确证被写入时,写请求是吞吐量敏感的。确定特定写请求是延时敏感还是吞吐量敏感还可包括:确认每所述特定写请求要写入的数据的相应单元的块大小;识别发布所述写请求的应用进程或线程。
所述方法还可包括基于确定所述特定写请求是时延敏感的,将所述特定写请求调度成向所述基于NVRAM的存储子系统的异步写,其中,所述异步写是通过将数据的相应单元发送到中间易失性存储,并且无需确证该写请求的数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;基于确定所述特定写请求是吞吐量敏感的,将所述特定写请求调度成向所述基于VNRAM的存储子系统的同步写,其中,所述同步写是通过阻断已经发布所述特定写请求的、在托管所述基于NVRAM的存储子系统的计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置而被执行的。
被确定为时延敏感的写请求的数据的相应单元的大小可小于被确定为吞吐量敏感的写请求的数据的相应单元的大小,其中被归类为时延敏感的写请求的子群组可包括由所述主机计算装置上的应用进程或线程的第一集合发出的写请求,其中被归类为吞吐量敏感的写请求的子群组可包括由所述主机计算装置上的应用进程或线程的第二集合发布的写请求,其中所述应用进程或线程的第一集合的大小可小于所述应用进程或线程的第二集合的大小。
被确定为吞吐量敏感的写请求的数据的相应单元的大小可大于被确定为时延敏感的写请求的数据的相应单元的大小。被归类为时延敏感的写请求的子群组可包括由所述主机计算装置上的应用进程或线程的第一集合发布的写请求。被归类为吞吐量敏感的写请求的子群组可包括由所述主机计算装置上的应用进程或线程的第二集合发布的写请求。所述应用进程或线程的第二集合的大小明显大于所述应用进程或线程的第一集合的大小。
所述方法还可包括:将确认的负载状况与负载阈值进行比较,基于产生所确认的负载状况在所述负载阈值内的比较,通过所述基于NVRAM的存储子系统上的中间易失性存储,作为异步写来写入数据的对应单元,其中,所述异步写可通过向所述中间易失性存储发送数据的相应单元,并且无需确证写请求的数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;基于产生所确认的负载状况超过所述负载阈值的比较,通过所述基于NVRAM的存储子系统上的所述中间易失性存储,作为同步写来所述数据的对应单元,或者绕过所述基于NVRAM的存储子系统上的所述中间易失性存储,其中,所述同步写通过阻断已经发布写请求的、在所述主机计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的至少一个NVRAM装置而被执行。
确认所述基于NVRAM的存储子系统的特定NVRAM装置的负载状况包括确定以下中的至少一个:在所述特定NVRAM装置处的挂起的I/O访问请求的数目、具有I/O访问积压的应用进程或线程的数目、在所述特定NVRAM装置上的物理单元的可用性、或挂起的写请求的队列占用比率。
确认所述队列占用比率可涉及特定NVRAM装置上的控制器处的挂起的写请求的队列或者上面安装至少一个NVRAM装置的主机计算装置上的装置驱动器处的挂起的写请求的队列。所述队列占用比率可检测写请求的特定队列是否超过录入的阈值数目。
在另一个方面,一些实施方式包括一种包括基于非易失性随机存取存储器(NVRAM)的存储子系统的系统。所述基于NVRAM的存储子系统包括至少一个NVRAM装置,其中所述基于NVRAM的存储子系统与主机计算装置进行通信,其中所述基于NVRAM的存储子系统被构造成:从所述主机计算装置接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统,其中所述基于NVRAM的存储子系统包括至少一个NVRAM装置;将所述写请求分类为写请求的子群组,其中各个子群组内的写请求是互斥的;确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;根据所述基于NVRAM的存储子系统的至少一个NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在所述至少一个NVRAM装置上的目标位置;通过将数据的对应单元写入在所述至少最后一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组。
实施方式可包括以下特征中的一个或多个。所述基于NVRAM的存储子系统还可包括所述至少一个NVRAM装置上的中间易失性存储和由控制器提供的逻辑保障机制,其中所述由控制器提供的逻辑保障机制可在所述基于NVRAM的存储子系统意外断电的情况下,将所述中间易失性存储中的数据内容写入所述至少一个NVRAM装置上的闪存介质。
所述基于NVRAM的存储子系统还可被构造成:将所确认的负载状况与负载阈值进行比较;基于产生所确认的负载状况在所述负载阈值内的比较,通过所述基于NVRAM的存储子系统上的中间易失性存储,作为异步写来写入数据的对应单元,其中,所述异步写可通过向所述中间易失性存储发送数据的相应单元,并且无需确证写请求的所述数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;以及基于产生所确认的负载状况超过所述负载阈值的比较,通过所述基于NVRAM的存储子系统上的所述中间易失性存储,作为同步写来写入数据的对应单元,或者绕过所述基于NVRAM的存储子系统上的所述中间易失性存储,其中,所述同步写通过阻断已经发布写请求的、在所述主机计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置而被执行。所述基于NVRAM的存储子系统进一步包括适于处理写请求的直接存储器存取(DMA)通道。
以上技术的实施方式包括方法、计算机程序产品和系统。计算机程序产品适当地在非暂时性机器可读介质中实现并且包括一个或多个处理器可执行的指令。这些指令被构造成使得一个或多个处理器执行上述动作。
所述系统包括一个或多个处理器和能由一个或多个处理器执行的、嵌入非暂时性机器可读介质中的指令。这些指令当被执行时被构造成使得一个或多个处理器执行上述动作。
在附图和下面的描述中阐述了本说明书中描述的主题的一个或多个方面的细节。根据描述、附图和权利要求,主题的其它特征、方面和优点将变得清楚。
附图说明
图1A是图示根据一些实施方式的主机计算装置和NVRAM的图。
图1B是示出根据一些实施方式的示例NVRAM的图。
图2是根据一些实施方式的具有多级控制器的NVRAM装置的图。
图3是根据一些实施方式的监视度量并且报告I/O错误的流程图。
图4是根据一些实施方式的将带缺陷的物理区映射到NVRAM上的方法的流程图。
图5是根据一些实施方式的减小写放大开销的方法的流程图。
图6是基于每个入站(in-bound)写请求的相应特性而差异调度入站写请求的方法的流程图。
图7是图示根据一些实施方式的对NVRAM的I/O操作的时延的时序图。
图8是基于目标NVRAM装置的负载状况而差异调度入站写请求的方法的流程图。
各种附图中的相同附图标记指示相同的元件。
具体实施方式
诸如NOR或NAND闪存装置的非易失性存储器装置可被配置成充当用于企业数据存储和互联网数据中心应用的存储类装置。这种数据存储应用可包括例如备份文件服务器、响应于用户查询的大型数据库应用、提供在线白页服务的分布式目录服务、与云计算关联以提供某种形式的云服务的其它应用。在一些数据存储应用中,NOR和NAND闪存装置可用作机械旋转的介质存储装置的附属物。
相比于SRAM或DRAM,这些非易失性存储器装置(NVMD)不需要恒定的刷新电流来保持存储在闪存介质存储器单元上的数据内容。例如,NVMD可在没有刷新电流的情况下将数据内容保持数十年。另一方面,这些NVMD装置上所存储的数据内容可以或者可以不以其它类型存储器(诸如,易失性存储器)的粒度被访问。以上已经提到了两种类型的闪速存储器,即,NAND和NOR。这两种类型的闪速存储器具有各单元的不同基础的逻辑门布置。NAND闪速存储器可按块(或页)进行写和读,这些块(或页)通常比整个装置的大小小得多,但比单个字节大得多。相比之下,NOR闪速存储器可允许将被单独写入或读取的单个机器字(字节)。另外,NVMD可包括诸如相变存储器的新兴类型的存储器。
在这些NVMD上,每个I/O操作的时延可取决于非易失性存储器装置的密度或处理技术以及特定区域中的薄弱(或劣化)的存在,如以下说明的。
在这些NVMD上,闪速存储器使用浮栅晶体管将数据存储在个体存储器单元中。已经开发出各种存储器单元技术,包括,例如单层单元(SLC)和多层单元(MLC)。SLC可具有两种可能的状态,进而编码一位数据。通过闪存单元的阈值电压Vt确定“0”或“1”。可通过闪存单元的浮栅上增加的电荷量来操纵阈值电压。基于SLC存储器单元的闪速存储器芯片可被称为SLC闪速存储器。相比之下,MLC可允许使用每单元相同数目的晶体管来存储更多的位。基于MLC存储器单元的闪速存储器芯片可被称为MLC闪速存储器。一些MLC单元可编码两位信息,即,“11”、“10”、“01”和“00”。编码是通过特定闪存单元的阈值电压Vt的进一步细分来确定的,其进而是通过特定闪存单元的浮栅上增加的电荷量来操纵的。值得注意,一些闪存单元可编码多于两位的信息。事实上,一些闪存单元可通过阈值电压范围的更进一步的细分来编码例如三位的信息。这个数目增加的状态减少了分离编码状态的阈值电压的余量的量。减少的余量导致MLC闪速存储器上的诸如读写的I/O操作相比于在可比较尺寸的SLC闪速存储器上出现更多错误的情况增加。被设计用于相对低I/O错误率的MLC闪速存储器有时被称为企业级MLC(eMLC)闪速存储器。
SLC和MLC的读取速度可以是可比较的。对闪存单元的电荷层的读取使用电压比较器来比较阈值电压。因此,SLC和MLC之间的架构差异没有影响感测。通常,闪存的读取速度是由使用哪个控制器来确定的。
SLC闪速存储器可具有更快的写速度、更低的功耗和更高的单元耐久性的优点。由于更快的传递速度和更长的寿命,SLC闪存技术被用于高性能存储卡中。然而,因为SLC闪速存储器每单元存储的数据较少,所以其存储的每兆字节要花费更高成本来制造。
相比之下,MLC闪速存储器的主要益处可包括由于数据密度较高,其每存储单元的成本较低。然而,相比于可比较尺寸的SLC闪速存储器,MLC闪速存储器会更容易有I/O错误。可依赖于更复杂的错误检测和校正算法来处理这些I/O错误。相比于可比较尺寸的SLC闪速存储器,MLC闪速存储器的其它缺陷可包括较低的写速度和擦除速度、较少数目的编程-擦除周期和较高的功耗。
因此,SLC闪速存储器倾向于提供比可比较尺寸的MLC闪速存储器更快的存储器存取。然而,相比于可比较的MLC装置,SLC装置通常提供每单位成本更小的容量。因出现I/O错误的可能性增加,MLC装置相对于SLC可能经历噪声更多的I/O特性。
一旦特定类型的NVMD被构造为存储类装置,这些非易失性存储器装置的性能就可以是特定于操作的。如本文中针对这个应用使用的,适于存储类应用的这些非易失性存储器装置可被称为非易失性随机存取存储器(NVRAM),与没有向存储器提供随机存取、仅仅能在通过机械旋转和扫描臂访问的柱面、磁头和扇区中串行化存储的动态随机存取存储器(DRAM)和硬盘装置(HDD)区分开。在这个背景下,可在这个应用中可互换地使用NVRAM和NVMD。
NVRAM装置可快得多地(例如,比具有旋转盘和机械臂阵列以访问特定的柱面、磁头、或扇区的硬盘装置快不止一百倍)执行某些种类的存储器操作(例如,读操作)。但是,非易失性存储器装置可具有导致不仅比与动态随机存取存储器(DRAM)相关联的操作慢而且也比其它NVRAM操作慢的其它存储器操作的物理限制。例如,NVRAM装置的写操作和擦除操作可比NVRAM装置上的读操作慢得多。I/O访问时间的这种不对称被称为NVRAM装置的不对称特性。此外,I/O操作可具有不同的最小数据大小。例如,可每擦除块执行擦除操作,可每写页执行写操作,并且可每读页执行读操作。一个擦除块可以是数个写页的大小。一个写页可以是数个读页的大小。
另外,NVRAM可具有导致性能随时间推移而劣化(尤其是当执行更多写操作和擦除操作时)的某些“耗损”特性。简而言之,随时间推移,会形成(或增加)NVRAM装置的较薄弱(或劣化)的区域。NVRAM装置的较薄弱(或劣化)的区域可以具有比NVRAM装置上的闪速存储器的其它区域弱的I/O性能。例如,NVRAM装置的较薄弱的区域会表现出较慢的读、写、或擦除速度、较高的错误率等。NVRAM装置的较薄弱的区域可以具有比某些优选值差的I/O性能,这些优选值可以是由制造商启发性地设置的专有数值,或者是在行业指南中阐明的标准数值。例如,NVRAM装置的较薄弱的区域会使闪速存储器介质具有比推荐值低的读、写、或擦除速度,或者在进行读、写、或擦除操作期间更容易遇到错误。随着形成较薄弱的区域或者随着较薄弱的区域的尺寸增大,每个NVRAM装置会具有预期的耐久性。另外,每个NVRAM装置当被运输到下游集成商或顾客时会具有固有的制造缺陷(表现为较薄弱的区域)。在存在闪存介质的较薄弱的区域时,需要维护数据完整性以及数据存取速度。同时,可部分地基于基础闪存介质类型,以各种粒度执行I/O操作。例如,对于NAND型存储器介质,可以以一次例如2k至16k字节的页(也被称为块)的粒度执行读写操作。对于NOR类型存储器介质,可以以每个字节的粒度执行读写操作。在闪存介质上读/写特定数据大小的明显性能取决于为了执行读/写操作而进行的I/O操作的粒度,并且因此取决于基础闪速存储器介质的处理技术。
多个NVRAM装置可被包括在基于NVRAM的存储子系统中。基于NVRAM的存储子系统可采用多级控制器来协调每个个体NVRAM装置之间的操作。例如可在企业存储应用中部署这种基于NVRAM的存储子系统。在这些基于NVRAM的存储子系统中,控制器可被组织成包括以下的层次:从属控制器,其协调NVRAM装置的子集的操作;主控制器,其协调多个从属控制器。从属控制器可与主控制器通信。从属控制器和主控制器可被构造成监视I/O访问模式。与驱动器一致行动地,从属控制器和主控制器可智能地调度并且执行基于NVRAM的存储子系统中的个体NVRAM装置上的I/O操作。
在一些实施方式中,从属控制器可被构造成通过协调和监视容纳从属控制器的NVRAM装置的闪存介质访问模式来控制数据传递。受监视的闪速存储器访问模式可被存储在从属控制器的存储器中。从属控制器的存储器可包括NVRAM装置的闪速存储器介质的一部分。从属控制器的存储器还可包括从属控制器上的DRAM的一部分。从属控制器可将受监控的访问模式报告给基于NVRAM的存储系统中的主控制器。来自相应的NVRAM装置上的各种从属控制器的所报告的访问模式可允许主控制器得到有关基于NVRAM的存储子系统的所有构成NVRAM装置的闪存介质访问模式的最新信息。基于构成NVRAM装置的最新信息,基于NVRAM的存储子系统可通过例如损耗平衡、负载平衡等来提高其整体I/O性能。自构成NVRAM装置得到的最新信息还可提供用于改进NVRAM装置的制造过程的指南,如随后在本申请中详细讨论的。
作为背景内容,驱动器可与主控制器和从属控制器协作,以智能地在基于NVRAM的存储子系统中执行I/O操作。I/O操作可以是由应用和/或操作系统——诸如,例如,模块化操作系统的文件系统模块或整体操作系统的文件系统功能——请求的。每个I/O操作被分成诸如例如读、写、或擦除的基本闪存装置操作。在执行基于NVRAM的存储子系统中的个体NVRAM装置的I/O操作时,驱动器和控制器管理将逻辑块映射到物理闪存位置。
基于NVRAM的存储子系统的I/O性能及其耐久性会受到为了I/O操作和垃圾收集等而进行的块分配的策略选择的影响。闪存管理包括对为了回收再利用无效的物理闪存位置而进行的物理块分配、损耗平衡、和垃圾收集的决策。这些决策表现出策略选择并且可对I/O性能(包括例如基于NVRAM的存储子系统上的写操作)有深远影响。作为背景内容,可在基于NVRAM的存储子系统中的NVRAM装置上同步地(即,涉及等待NVRAM装置提供已经发生写的服务保障)或者异步地(通过吸收基于NVRAM的存储子系统中的控制器中的一个或多个上的一些存储器资源中的数据,并且然后依赖基于NVRAM的存储子系统的电力安全机制来提供对写的数据内容的耐久性的服务保障)执行写操作。
为了改进特定NVRAM装置上的I/O性能,可将基于NVRAM的存储子系统所接收的入站写请求分类。在一些实施方式中,入站写请求可被分类成不同的子群组,每个群组具有类似的有效期。来自一个特定子群组的写请求的数据内容可被写入NVRAM装置的闪存介质的相邻目标位置。因为每个子群组内的写请求具有预期今后在可比较的时间内变得无效的数据内容,所以后续的垃圾收集可恢复擦除块,同时遭遇显著减少重新定位(用于传递闪存介质上的别处的有效数据)。其它考虑也被计算在内。在其它实施方式中,入站写请求可被分组成时延敏感的写请求和吞吐量敏感的写请求。时延敏感的写请求可使用异步的写操作,而吞吐量敏感的写请求可使用同步的写操作。在其它实施方式中,可根据基于NVRAM的存储子系统上的目标NVRAM装置的负载状况来调度入站写请求。可监视负载状况。如果受监视的负载状况指示NVRAM装置的忙碌状况,则入站写请求可使用同步的写操作。否则,入站写请求可使用异步的写操作。
图1A是根据一些实施方式的图示具有NVRAM的主机计算装置100的图。在主机计算装置100上,用户应用110A至110N正在应用层1010处运行。每个运行的用户应用可与针对可包括例如文本111、数据112、和堆栈113的段的处理相对应。这些段还可包括堆。操作系统102提供供用户应用110A至110N访问基础服务的应用程序接口(API)122。在一些实施方式中,装置驱动器125可以是OS 102的部分以允许高等级用户应用110A至110N访问主机计算装置100上的硬件装置。高等级用户应用还可被构造成访问装置层工具和装置控件。在其它实施方式中,装置驱动器还可以是OS 102的部分。
主机计算装置100包括:硬件层,其包括中央处理单元(CPU)131;主存储器132,其通常是易失性存储器;以及非易失性随机存取存储器(NVRAM)133,其具有控制器135。闪速存储器介质可位于数张卡上。这些卡可以是外围组件互连(PCI)卡,其使用外围组件互连快速(PCIe)边缘连接器将其安装在主机计算装置的母板上。主机计算装置的母板容纳CPU131和诸如动态随机存取存储器(DRAM)的主存储器132。主机计算装置还可包括具有机械臂的硬盘装置,这些机械臂可利用例如NVRAM 131作为附属物。
每个PCI卡可具有用于执行逻辑操作的两种类型的控制器,即,操纵托管层交互的主控制器和操纵闪存层交互的从属控制器。在一些实施方式中,PCI卡上的一个物理装置可包括一个主控制器和多达例如八个额外的物理装置,每个额外的物理装置实现两个从属控制器。这些额外的物理装置还可在插入基板上的子板(容纳实现主控制器的物理装置的PCI卡)上实现。其它实施方式可利用两个物理装置,这两个物理装置中的每一个实现一个主控制器和多达例如六个从属控制器。主控制器中的一个是计算装置的母板上的PCI扩展槽上的“基板”,并且另一个主控制器在位于基板上的扩展槽上的“子板”上。主机和主控制器的子板之间的通信路由通过基板的主控制器。
主控制器和从属控制器可使用专有硬件接口进行通信。在一些实施方式中,使用物理装置上的引脚和基板上的迹线来实现这个接口。在主控制器和从属控制器处于同一物理装置中的其它实施方式中,可使用物理装置上的内部装置逻辑来实现该接口。
在利用两个物理装置(其中每一个都实现一个主控制器)的实施方式中,这两个主控制器之间的通信可通过PCIe的标准接口来进行。专有的硬件接口也是可行的。
通过一致行动,主控制器和从属控制器可实现系统的数据路径。换句话讲,主控制器和从属控制器接收执行闪存层操作的命令并且针对托管DRAM资源来执行这些命令。数据路径方面是指控制器本身并没有确定在上述操作中涉及哪些闪存位置和哪些DRAM位置——这个确定是由系统的控制路径进行的。在这个背景下,数据路径也可被称为“数据平面”,如网络通信中一般使用的。
用驱动器软件实现系统的控制路径,驱动器软件可被实现为被与控制器关联的嵌入式处理器所执行的固件指令。每卡可仅仅存在一个“驱动器”。驱动器软件指令允许每个从属控制器与一个或多个主控制器独立进行通信。在这个背景下,控制路径也可被称为控制平面,如网络通信中一般使用的。
在一些实施方式中,数据路径通信可涉及数据的直接存储器存取(DMA)传递。例如,驱动器软件可产生包括目标存储器地址的DMA指令并且启动存储器读周期或写周期。DMA指令可利用可被母板的CPU或者主控制器上的嵌入式处理器读和写的主控制器或从属控制器上的数个寄存器。这些寄存器可包括存储器地址寄存器、字节计数寄存器、和一个或多个控制寄存器。控制寄存器指定要使用的I/O端口、传递的方向(从I/O装置读取或者写入I/O装置)、传递单元(一次一个字节或一次一个字)、一次突发要传递的字节数目。
为了执行输入、输出或存储器至存储器的操作,DMA指令可从CPU发布(issue)到主控制器,并且然后到相对应的NVRAM卡上的从属控制器,以开始传递数据。DMA指令包含要传递的字的数目的计数以及其内容将被传递的存储器地址。主控制器接着得到访问系统主存储器132以进行数据传递的权限。每当准备在NVRAM卡和系统主存储器132之间传递数据的字时,控制器(主或从属)会将其内部地址寄存器递增,直到传递完数据的整个块。主控制器和从属控制器能够执行一次一个字地发生的DMA传递或者以突发模式一次性全部地执行DMA传递。
在一些实施方式中,驱动器软件在作为装置驱动器125的主机计算装置上运行。使用标准的PCIe命令与卡上的主控制器进行通信—在标准的术语中,标准的PCIe命令被称为“存储器映射I/O”(MMIO)指令(它们是CPU级的加载/存储指令,不同的是,它们被路由到替代DRAM的合适的装置)。如以上讨论的,MIMO指令可用于启动DMA操作。驱动器进而使用标准的基于托管的API和机制(例如,系统调用)从托管CPU应用和操作系统(例如,文件系统组件)接收请求。
在其它实施方式中,驱动器软件在与基板主控制器耦合的嵌入式CPU上运行。在这些实施方式中,常常使用术语“固件”来代表驱动器软件。在其它实施方式中,驱动器功能可按分离/并行(split/parallel)方式在与一个或多个主控制器关联的多于一个的嵌入式CPU上运行。在固件在一个或多个嵌入式CPU上运行的情况下,应用/操作系统使用例如安装在主机计算装置上的中间(单独、最小的)软件驱动器请求使用相同的PCIe MIMO指令与固件进行通信。
图1B是根据一些实施方式图示示例NVRAM装置的图。如将与图2相关联讨论的,NVRAM 133包括控制器135,控制器135用于与主机计算装置100和NVRAM 133上的其它NVRAM装置进行接口连接。NVRAM 133还可包括闪存转换层(FTL)141,以将逻辑地址空间中的数据访问请求映射到相对应的物理闪存块地址。在一些实施方式中,闪存转换层(FTL)141可被实现为主机计算装置上的装置驱动器125的部分。FTL 141与装置驱动器125和主机计算装置100上的操作系统相结合,可使线性闪速存储器好像是如同硬盘驱动器的系统。作为这个功能,FTL 141可执行多个特定功能。首先,FTL 141可在形成闪存的大擦除块之外,形成数据或扇区的“虚拟”小块。接下来,FTL 141可管理闪存上的数据,使得随时间推移,数据好像被“写到位”,而事实上数据正被存储在闪存中的不同位置。最后,FTL 141可管理闪存,如此存在干净的/被擦除的闪存位置以存储数据。
具体地讲,特定OS可具有以被称为块的结构化段来执行输入和输出的块装置驱动器。块装置包括主机计算装置100上的所有盘驱动器和其它大容量存储装置。在一些实施方式中,FTL 141可模拟块装置。被模拟的块装置可致使NVRAM 133的闪存介质对于主机计算装置100的用户而言好像是从0计数至比块总数少1的存储块的连续阵列。FTL 141因此可充当本地操作系统(OS)文件系统(FS)(诸如,例如,DOS BPB/FAT、WINDOWS NTFS、UNIX FS等)和基础闪存介质之间的转换层。此外,FTL 141可将数据重新映射到将写入数据的物理位置。这样允许本地OS文件系统如同对待任何其它块存储装置一样来对待NVRAM装置上的闪存介质并且保持不知道NVRAM装置上的闪存介质的物理特性。对于计算装置100的用户,FTL141可看上去仅仅从文件系统取得数据并且将它写入指定的串行位置(例如,连续扇区)。对于NVRAM装置上的基础闪存介质,FTL 141将数据安置于闪存介质上的空闲/被擦除位置并且记录数据被安置的物理位置。结果,当文件系统请求已经被安置在NVRAM装置上的数据时,FTL 141找到并且读回正确的数据。FTL 141可具有用于存储此信息的其自身的高速缓存,例如,闪速存储器介质或DRAM。
NVRAM 133可包括被组织成层次的闪速存储器介质。首先,NVRAM 133包括NVMD的卡。该卡可以是利用PCI接口并且位于主机计算装置100的母板的PCI扩展槽上的PCIe卡。此卡也可被称为基板。该卡也可以是安装在基板上的子板。
NVMD的每个卡包括一系列封装,例如,封装143至144。每个封装可包括一系列晶片,例如,封装143上的晶片151、152、153、封装144上的晶片154、155和156。每个晶片可包括上面制造有闪存介质单元的一个连续半导体衬底。在这个背景下,晶粒可被表示为存储器芯片或被作为存储器芯片的引用,术语“晶粒”和“芯片”可互换地使用。每个闪存介质单元是包括控制栅、浮栅、源区和漏区的存储单元。根据控制栅和浮栅的构造,闪存介质可以是NAND型或NOR型。根据浮栅的处理技术,给定的闪存介质单元可以是SLC单元或MLC单元,如以上讨论的。可使用相同技术在相同构造下处理特定NVRAM装置上的闪存介质单元。
每个晶粒可包括大量闪存平面,例如,晶片151、152、153、154、155和156上相应的平面161、162、163、164、165和166。闪存“平面(plane)”是物理子晶粒结构并且每个晶粒可具有偶数的闪存平面。对于具有两个平面的晶粒,其基本上具有两个不同的子区域——每个子区域具有它们自身的存储器单元阵列和接口电路。晶粒可包括向一个平面或另一个平面(或者在一些情况下,向两个平面)发出命令的简单的多路分离结构。
每个闪存平面可包括介质单元的构成块,其被布置成被称为擦除块的集合。擦除块的大小可以是例如1MB至4MB,并且表示使用单次擦除操作可被擦除的闪速存储器介质的最小单元。每个擦除块可进而包含多个较小粒度的写块,这些写块表示可使用单次编程操作被写入的最小粒度的闪速存储器介质。写块的大小可以是例如2KB至16KB。在数据内容可被写入写块之前,每个写块必须首先被擦除。可基于用于访问闪速存储器介质上所存储的数据内容的最小单元来进一步划分介质单元的每个写块。例如,对于NAND型的闪速存储器单元,可按大小512字节—16KB的块(或页)来执行读操作。
NVRAM 133可另外包括用作主存储器132和各构成封装之间的缓冲器的动态随机存取存储器DRAM 142。FTL 141和控制器135二者都可包括它们自身的额外DRAM。
图2是根据一些实施方式的基于NVRAM的存储子系统NVRAM卡200的图。NVRAM卡200可包括封装221、222和223。封装221可包括NVRAM装置201、203和205。封装222可包括NVRAM装置207、209和211。封装223可包括NVRAM装置213、215和217。这些封装可被构造成使用独立磁盘冗余阵列(RAID)机制来提供数据冗余,如共同待决的专利申请61/746,679中概述的。所构造的NVRAM卡200可将数据冗余地存储在分布于封装221至223的数据分片(datastripe)中。在这个背景下,封装221至223也可被称为RAID群组221至223。分组可以是静态的即预定和固定的,或动态的即由于I/O错误造成的重新分片而使得可调整。另外,在这个背景下,闪速存储器晶粒的子部分可以是晶粒内的闪速存储器介质的区域(诸如,写页、擦除块、扇区或闪速存储器晶粒的一些合适的逻辑或物理部分)。当闪速存储器晶粒的子部分处于薄弱(或劣化)状态时,只有闪速存储器晶粒的劣化子部分中的数据被取代,要么是根据处于可靠性考虑在别处复制的镜像副本,要么是根据对在多个晶片上扩展的数据的基于奇偶性的编码而重新构成。随后,在考虑到闪速存储器晶粒的薄弱(或劣化)部分的情况下,闪速存储器晶粒被动态重新分片成不同的平面(或封装)。动态重新分片的细节可见于伴随的专利申请61/746,679。
NVRAM装置可以是主机计算装置的外围组件接口(PCI)总线上的NVMD装置。NVRAM装置还可被安装在其它类型的总线(诸如,双列直插存储器模块(DIMM)、AT附件(ATA)、串行ATA(SATA)、快速SATA(SATAe)、小型计算机系统接口(SCSI)等)上。这种构造的NVMD装置可被称为基板。一些NVRAM装置可被实现为安装在基板上的子板。
封装(或RAID群组)上的每个NVRAM装置可具有从属控制器,从属控制器控制NVRAM装置上的读、写、和擦除存储器操作。各个NVRAM装置上的从属控制器202、204、206、208、210、212、214、216、218可通过多个主-从存储器总线通道连接到主控制器220,所述多个主-从存储器总线通道可被实现为NVRAM卡200的基板上的PCB迹线。每个从属控制器可被安装在封装上或基板上。每个从属控制器可被构造成用于向托管NVRAM装置提供透明化存取。每个从属控制器可包括被调谐为用于每个NVRAM装置的闪存平面上的存储器操作的微指令。每个从属控制器还可包括具有用于执行相同存储器访问功能的固件指令的嵌入式处理器。
如图2所图示,NVRAM卡200可包括与封装221、222和223的构成NVRAM装置上的每个从属控制器进行通信的主控制器220。主控制器220可具有嵌入式处理器以与每个RAID封装的从属NVRAM装置上的从属控制器协调地执行用于读、写、擦除、和保持操作的固件指令。主控制器220本地地控制闪速存储器晶片,以在闪速存储器晶片被包括在封装221-223的情况下得到可预测的带宽和潜在性能。在闪速存储器晶片201、203、205、207、209、211、213、215和217上发生的所有操作(例如,读、写、擦除、诸如重置的控制操作等)对于主控制器220而言是完全可见的(并且是在主控制器220的控制下)。特定封装中的给定闪存晶粒的闪速存储器接口经过相应的从属存储器控制器,通向主控制器206。例如,晶粒201的闪速存储器接口通过从属控制器202通向主控制器220。
在这个背景下,主机计算装置上的装置驱动器125连同主控制器220和每个从属控制器一起可被构造成执行大量操作以提高基于NVRAM的存储子系统的I/O操作性能。这些操作可包括例如错误校正、损耗平衡、不良块映射、读清理或读干扰管理、写干扰管理、读写高速缓存、垃圾收集、和加密等。
具体地讲,NVRAM卡200的主控制器和从属控制器实现在主存储器132和RAID装置的每个NVRAM装置的闪速存储器介质之间传输数据的系统的数据路径。闪存操作的数据路径可包括例如数据传递、操作调度等。在这个背景下,数据路径也可被称为“数据平面”。
相比之下,控制路径确定例如I/O操作的I/O位置和I/O操作的块大小。如以上讨论的,通过驱动器软件来实现闪存管理活动的控制路径,其可被实现为由主机计算装置100上的CPU 131执行或者由主控制器220上的嵌入式处理器执行的固件指令。在这个背景下,控制路径也可被称为控制平面。
错误校正可包括闪存介质错误的检测和校正二者。错误检测识别存储器访问操作中的不一致。错误检测可使用诸如重复码、奇偶位、校验和、循环码校验(CRC)以及其它加密哈希函数的技术。错误校正试图解决所识别到的不一致。错误校正可利用诸如自动重复请求、错误校正码(ECC)等各种技术。示例的ECC算法可包括Reed-Solomon算法、Hamming算法和Bose Ray-ChaudhuriHocquenghem(BCH)算法等。
NVRAM装置包括闪存块,闪存块中的每一个可在表现出不可靠的行为之前通过有限数目的擦除周期。例如,MLC NAND闪存块可在对其访问返回的错误比可用合理实现复杂度校正的错误更多之前,经受3000至10000个擦除操作周期。为了应对与装置损耗相关联的问题,损耗平衡技术试图将写操作均匀地散布于所有闪存段上。
损耗平衡技术可以是动态的,在其中FTL 141使用映射将文件系统的逻辑块地址(LBA)链接到如以上讨论的存储器层次的物理闪存介质。每当应用或OS组件(例如,文件系统)写入替代数据时,更新该映射使得原始的物理块被标记为保持无效数据,并且新的块被链接到该映射条目。每当数据的块被重新写入闪速存储器时,它被写入闪存介质上的新物理位置并且相应更新该映射以反映重新写入。然而,从不取得替代数据的块在闪速存储器上保持没有额外损耗。该装置可被构造成使得只回收动态数据。在动态方法下,NVRAM装置可比没有进行损耗平衡的情况下持续更长时间,但仍然存在一些块保持启用而当驱动器不再可操作时这些块将不再被用到。损耗平衡技术还可以是静态的,没有变化的静态块周期性移动,使得这些很少使用的单元能够被其它数据使用。损耗平衡技术可额外地包括留下没有变化的静态块,直到其它块如静态块一样损耗。与静态方法关联的旋转效应可使NVRAM能够操作直到块中的大部分接近它们的寿命终止。
闪速存储器块在它们被写入之前必须被明确地擦除。擦除块所花费的时间可以是显著的。为了减少写时延,当存储在闪存块处的信息将被更新时,控制器可被编程,以在存在挂起的较少量的存储器访问请求时,将改变后的数据的新副本写入刷新块,重新映射存储器指针,并且然后随后擦除旧的块(后台操作)。
与装置驱动器125一起,主控制器220和从属控制器可执行读清理或读干扰管理。读清理是指检测和校正读操作期间的位错误并且使用诸如ECC代码的错误检测代码来校正位错误的过程。读干扰是指当在读操作期间改变一个或多个位时的I/O错误。在正读取的块内出现读干扰错误,而在除了正被读取的页之外的一页或多页上出现读干扰错误。在针对包括这些页的块的擦除命令之前在个体页上执行大量(例如,成千上万或数百万的)读操作,会使这个错误加剧。为了克服这种类型的错误,主控制器220和从属控制器可被编程以擦除出现错误的块并且将数据重新写入该块。
与装置驱动器125一起,主控制器220和从属控制器可额外地执行“写干扰”管理——在写入闪存单元干扰了同一写页中的另一个相邻区域中的数据的情况下。在一些实施方式中,通过控制闪存单元被写入的次序来完成写干扰管理操纵。在一些其它实施方式中,通过在装置接近寿命终止时限制接收写的单元的子集来完成写干扰管理操纵(以减小装置空闲容量为代价)。
与装置驱动器125一起,主控制器220和从属控制器可额外执行读写高速缓存。NVRAM装置133可包括片上DRAM 142。使用片上DRAM作为缓冲器,主控制器220结合从属控制器可根据所预测到的相应数据存取模式进行读或写操作的信息的高速缓存。高速缓存一般会提升在例如吞吐量、显见访问时间等中所度量的显而易见的I/O性能。
与装置驱动器125一起,主控制器220和从属控制器可额外执行垃圾收集。在NVRAM装置的每个块已经被写入一次之后,闪存控制器将需要返回到不再具有当前数据的初始块(也被称为陈旧块)中的一些。这些陈旧块可与不再被应用程序使用的数据相对应。这些块中的数据可被新写入的块替代,并且现在它们正等待被擦除以使得新数据可被写入它们。这是被称为垃圾收集(GC)的过程。如以上讨论的,GC可以是主控制器220和从属控制器的后台任务,从这个意义上说可在当存在少量挂起的I/O请求时执行GC。
与装置驱动器125一起,主控制器220和从属控制器可额外通过使用各种加密算法执行加密,这些加密算法包括但不限于对称加密和不对称加密。对称加密可采用例如现存的或者正在开发的任何块密码算法。示例的块算法可包括数据加密标准(DES)、高级加密标准(AES)、Blowfish、国际数据加密算法(IDEA)、RC5等。
主控制器220和从属控制器还可被构造用于监视NVRAM装置的I/O性能度量并且映射不良的块。可通过硬件和软件解决方案的组合来实现I/O性能监视和映射。以上已经描述了示例NVRAM装置的硬件组件。软件构造可包括如图1中所示的通过装置驱动器125和API122的实施方式。API 122可为用户应用提供接口以通过装置驱动器125访问NVRAM装置。用户应用可触发对访问NVRAM装置的I/O请求。例如,用户应用可试图打开文件并且读取文件内容,或者用户应用可查询数据库中与搜索准则相匹配的条目。
I/O请求最初可从装置驱动器125被发送到主机计算装置100上的主控制器220。主控制器220接着可协调地将I/O请求分配到保持I/O请求被编址的信息内容的NVRAM装置上的从属控制器。接着,可将I/O请求以无阻断方式推送到从属控制器,在该无阻断方式下,主控制器220没有空闲等待来自从属控制器的响应。替代地,主控制器220可继续进行其它调度任务。当来自从属控制器的响应到达时,可在主控制器220以及装置驱动器125处唤起后续动作,以合并这些响应并且将信息中继回触发I/O请求的用户应用。如以上讨论的,无阻断和阻断数据传递可被实现为DMA数据传递。
图3示出根据一些实施方式的监视度量并且报告I/O错误的流程图300。如以上讨论的硬件和软件解决方案的组合可行动一致地监视基于NVRAM的存储子系统的每个NVRAM装置处的I/O操作的性能度量(302)。性能度量可以是关于诸如读、写、或擦除的I/O操作的持续时间。在一些实施方式中,正受到监视的I/O操作的持续时间可包括等待并且从缓冲器读取的程序时间。正受到监视的性能度量还可包括I/O操作的可校正错误数目或错误率。可通过诸如例如校验和、周期冗余编码(CRC)或错误校正码(ECC)的错误校验机制来识别可校正错误。一旦检测到可校正错误,就可通过例如ECC编码机制来校正该可校正错误。相关的性能度量可以位错误率,位错误率表示用合适级别的ECC来校正的失效位。原始位错误率(RBER)可表示ECC之前的位错误率。由于可校正的位错误没有导致数据丢失,因此不可校正的位错误率(UBER)可指示在给定ECC的实施方式下的数据丢失量。通常,给定ECC编码方案的性能与被分配给各读/写页(块)的空闲空间量相关。时常地,NVRAM装置会需要ECC的更多空闲空间来实现较低的UBER(例如,低于10-17)。在一些实施方式中,空闲空间可允许对于20nm级的NAND闪存装置而言每1KB高达80位的数据校正。在一些实施方式中,可以以运行时正存取的每位/字节为单元基于各操作来监视错误率或可校正误差。在其它实施方式中,可基于总体(例如,许多操作的聚集或者运行时正存取的位/字节的聚集)来监视错误率或可校正错误。每个NVRAM装置上的主控制器220和从属控制器可执行跟踪和监视操作。
主控制器220可协调从属控制器202至218来监视相应的托管NVRAM装置上的I/O操作。例如,当测量I/O请求的速度时,主控制器220可将对特定存储器位置处的数据内容的I/O请求发送到负责该特定存储器位置的从属控制器。在一些实施方式中,可在主控制器上的时间戳为时间1时发送该请求。负责该特定存储器位置的从属控制器可返回被请求的存储器位置处的数据内容。当主控制器在时间2接收数据内容时,其可产生新的时间戳。这两个时间戳之间的差异指示特定存储器位置处的读/写操作的持续时间。在这些实施方式中,可根据主时钟220上的本地时钟发布时间戳。在其它实施方式中,从属控制器在接收到I/O请求时可将接收时间打上时间戳。在完成被请求的I/O操作之后且将结果返回到主控制器220之前,从属控制器可将完成时间打上时间戳。完成时间和接收时间之间的差异可被从属控制器报告回主控制器220,作为特定存储器位置处的I/O操作的持续时间。在这些实施方式中,可根据从属控制器上的本地时钟分配时间戳。在其它实施方式中,如果I/O操作被实现为分配进程或线程等待I/O操作完成的分块操作,则应用进程或线程可仅仅度量分配I/O请求的时间和返回结果的时间之间过去的时间。在这些实施方式中,可根据主机计算装置100的母板上的系统时钟来度量时间。
例如,当度量I/O请求的错误率时,主控制器220可将对特定存储器位置处的数据内容的I/O请求发送到负责该特定存储器位置处的从属控制器。负责该特定存储器位置的从属控制器可执行I/O请求,以例如响应于读请求检索4k页的数据内容。用用于验证数据完整性的奇偶校验码来得到数据内容。在一些实施方式中,从属控制器可执行对所得到的数据内容的奇偶校验,然后将校验结果与奇偶校验码进行比较。基于该比较,从属控制器可校正所接收到的数据内容中的错误,如果这些错误可校正的话。此后,从属控制器可将错误或可校正错误报告给主控制器。可延迟进行报告,以将阈值数目的错误或可校正错误合并在一个报告中。该阈值数目可以是启发性确定的专有数目。该阈值数目还可以是芯片制造商和原始设备制造商(OEM)商定的标准数目。可通过例如指示已经发生了的阈值数目的错误或可校正错误的从控制器上的计数器来触发报告。可通过来自控制路径中的主控制器220、请求来自从属控制器的报告的指令来触发报告。当已经过去了预定的时间周期时,报告也可以是周期性的。
在其它实施方式中,从属控制器可避免针对读操作进行错误校验或校正。替代地,主控制器220在接收到被请求的数据内容时,进行错误校验和校正。此后,主控制器可在向主机计算装置报告之前合并识别到的错误或可校正错误。合并可将阈值数目的错误或可校正错误合并在一个报告中。该阈值数目可以是启发性确定的专有数目。该阈值数目还可以是芯片制造商和原始设备制造商(OEM)商定的标准数目。可通过例如指示已经发生了阈值数目的错误或可校正错误的主控制器220上的计数器来触发向托管计算装置100进行的报告。可通过来自主机计算装置上的装置驱动器125的关于错误计数或错误率的信息的请求来触发报告。每当已经过去了预定的时间段时,向主管计算装置100进行的报告可以是周期性的。
对于不同的实施方式,正被跟踪以监视性能度量的I/O操作的粒度可有所不同。一些实施方式可以以个体写页的粒度来跟踪I/O操作。示例的写页的大小范围可以是例如2kB至16kB。一些实施方式可跟踪可包括多个写页的每个擦除块的性能。其它实施方式可以以更粗的粒度(诸如,例如,以每个晶粒平面(包括多个擦除块)的粒度、以每个闪存晶粒(包括多个晶粒平面)的粒度、以每个封装(包括多个闪存晶片)的粒度、或者以每个卡(包括多个封装)的粒度)来跟踪I/O操作。
跟踪和监视的粒度可以是NVRAM的存储子系统的NVRAM装置的使用年限的函数。在其预期寿命的早期,粒度可以较粗,因为在那时I/O操作预期是平稳运行的。在NVRAM装置寿命的晚期,由于I/O操作的错误和劣化的可能性增加,导致粒度可以较细。跟踪和监视的粒度可取决于利用基于NVRAM的存储子系统的特定应用。对于数据完整性和可靠性可以极受关注的应用(诸如,要求分布式数据存储位置之间的数据一致性的原子操作的远程和分布式数据库应用),跟踪和监视的粒度可以较细。对于数据吞吐量比数据完整性更受偏爱的应用(诸如,例如,电子商务数据服务器的例行数据备份),粒度可以较粗。
对于不同的实施方式,监视I/O操作的频率也可有所不同。可根据用户偏好,构造每个NVRAM装置的监视频率。例如,对于校园网的例行数据备份,用户可优选地进行频率不高且更零星的对I/O操作的跟踪和监视。例如,对于高频率交易应用的银行业务应用,用户可优选地进行频率较高且更集中的对I/O操作的跟踪和监视。
在一些实施方式中,可由应用程序发布对被跟踪信息的请求,并且然后在主控制器220处将请求排队。例如,主控制器220可接收4kB大小的I/O请求并且可将它们分配到四(4)个从属控制器,每个控制器接收1kB大小的I/O请求。每个从属控制器可向主控制器220发送请求完成分组以用信号表达被请求信息是可用的。从属控制器可执行接收到的请求,并且在给定每个从属控制器上的负载状况不同的情况下,用完成分组以不按请求的接收次序进行响应。到达主控制器220处的完成分组可触发主控制器220处的后续动作。作为响应,主控制器可将给定的完成分组与发送到从属控制器的特定请求进行匹配。主控制器220还可对来自被发送请求的从属控制器的完成分组进行重新布置/重排序。一旦接收到所有的完成分组,主控制器220就可合并完成分组并且对具有被请求信息的请求应用做出回应。在其它实施方式中,从属控制器可自发地(sua sponte)跟踪NVRAM装置上的I/O操作的性能度量,然后将被跟踪的性能度量周期性地发送到主控制器220。根据NVRAM装置上的控制器的整体负载状况,从属控制器可被构造成自发地或者在主控制器220请求时跟踪I/O操作。
被跟踪的I/O操作可产生错误数据304。在这个背景下,错误数据一般可以指往往会表现出I/O错误、错误率、可校正错误以及I/O操作持续时间的度量。可将错误数据304与阈值设置进行比较(306),交叉点可使得在从属控制器处产生错误报告,接着错误报告被传播到主控制器220。阈值308可以是截止栏(cut-off bar)。例如,阈值308可以是与诸如读、写、或擦除的存储器操作关联的持续时间阈值。持续时间阈值可以是存储器操作的上限,超过该上限则触发错误报告。持续时间阈值还可以是暂停值,超过该暂停值,则将中止存储器操作。阈值308还可以是每单位时间的读、写、或擦除的数目的最低水平。这个最低水平可检测具有足够带缺陷的闪存页的NVRAM装置。对于擦除操作而言,阈值308还可以是最低水平。因为闪速存储器介质的几何形状,所以诸如擦除的I/O操作可最后在薄弱或劣化的区域中变快。如果擦除操作的持续时间降至低于最低水平,则可生成错误报告。阈值308还可以是保持与所存储的内容不一致的数据的单元的阈值比率。一旦受监视的比率达到阈值比率,则可触发错误报告。阈值308还可以是主控制器220所见证的可校正错误的出现的阈值数目。如果主控制器220所看到的可校正错误的数目超过阈值,则可生成错误报告。
可在运行时和字段操作期间即时地适应和调节阈值308。另外,阈值308在NVRAM装置的寿命早期期间会更严格,而在趋于NVRAM装置的寿命晚期阶段可以宽松。如以上讨论的,在NVRAM装置的寿命的早期阶段期间,预期损耗引起的异常更少,而在NVRAM装置的寿命的晚期阶段期间,预期由于随时间推移的损耗和使用将导致有更多异常。可调节阈值可打破所产生的警报的数目(可放慢常规性能)和得自监视的信息的量之间的折衷的平衡。
在一些实施方式中,可根据可自身改进的任何机器学习方案或通用算法来动态构造阈值308。机器学习方案或通用算法可从I/O性能度量的过去模式学习,以推断用于最佳地区分正常区域与薄弱或劣化区域的最佳阈值。因此,可因此基于推断来调节阈值。在其它实施方式中,可按预定方式预先将阈值编程。预定的阈值可以基于统计学分析(诸如,例如,斯氏T检验(student t-test)、ANOVA分析等)。统计学分析可考虑用历史I/O性能度量和实际装置状态的相关性来推导用于最佳地区分正常群组与薄弱/劣化群组的阈值。区分的最佳性可以基于统计学上的最高置信度、最低p值等。
在其它实施方式中,可基于通过监视给定性能度量而得到的当前错误报告的统计学分析,追溯地调节阈值308。在这些实施方式中,被记录的性能度量的历史对主机计算装置100的主控制器220是可用的。给定性能度量的历史数据可指示例如存储器操作中的时延增加的趋势。历史数据可揭示长期趋势和短期趋势二者。短期趋势可以基于在数小时或数天的时间段内收集的错误数据度量值,而长期趋势可以指基于诸如数周或数月的较长时间段内收集的度量值进行的分析。可基于线性预测(LP)模型来分析趋势。另外,统计学分析可揭示偏离所记录的性能度量分布的异常值。截止阈值可被表达为统计栏。例如,对于基于存储器访问速度的性能度量,统计栏可以是超过平均访问速度的2σ。对于一般分布,2σ的统计栏从样本中选出大致5%作为异常值余量。
以下的表1总结了在一些实施方式中触发错误报告的I/O性能度量的示例阈值。
表1:触发错误报告的I/O度量的示例阈值
表1中的阈值是基于平均闪存单元的损耗水平而建立的,如通过闪存单元选通的当前编程/擦除(P/E)周期来度量。在该背景下,每个擦除操作增量增加用于该擦除块的P/E周期计数。对于由表1中的第二行所涵盖的当前2500P/E周期的闪速存储器单元,可校正错误(每512B)的最小阈值和最大阈值在表中被列为3和5,表现出超过最小阈值的可校正错误的每个擦除块中的512B块的阈值数目在表中被列为4,阈值写时间在表中被列为1.5ms,并且阈值擦除时间在表中被列为2.0ms。如以上讨论的,当基于NVRAN的存储子系统变得更老化时(即,当基础闪速存储器单元的P/E周期增加时),这些阈值往往会变得更宽松。
如以上讨论的,如果阈值(308)被超过或未满足,则可基于错误率生成错误报告(310)。可分析来自所有构成NVRAM装置的所报告的错误数据(312)。在一些实施方式中,可以与正受到监视的存储器访问操作相关联地以各种闪存区域粒度来分析错误报告。例如,可以以每个写页的粒度来分析错误报告并且写页可以是2k-16k字节。还可基于包括多个写页的每个擦除块来分析错误报告。在这种模式下,每个写页可不被单独分析,而是将在聚集中进行分析。可额外以平面级分析错误报告,其中,每个平面包括多个擦除块。在这种模式下,将只在聚集中分析擦除块。还可以晶粒级分析错误报告,在其中将在聚集中而非独立地分析基础平面。还可以每个封装的粒度分析错误报告,在其中在聚集中分析多个基础晶片。同样地,可以每卡的层级来分析错误报告,这是最粗略的分析层级。
分析的粒度可以是NVRAM装置的使用年限的函数。在其预期寿命的早期,粒度可以较粗,因为I/O操作在那时预期是平稳运行的。在NVRAM装置寿命的晚期,由于I/O操作出差错的可能性增加,导致粒度可以较细。分析的粒度可取决于利用NVRAM装置的特定应用。对于数据完整性和可靠性可以极受关注的应用(诸如,要求分布式数据存储位置之间的数据一致性的原子操作的远程和分布式数据库应用),分析的粒度可以较细。对于数据吞吐量比数据完整性会更受偏爱的应用(诸如,例如,电子商务数据服务器的例行数据备份),粒度可以较粗。
在一些实施方式中,错误报告中的信息可被投影到各种粒度。例如,如果错误报告中的信息揭示了经历劣化的写页的擦除块内存在的优良写页,则这些优良写页可被以估算方式被视为劣化的写页。类似地,如果错误报告中的信息揭示了包括之前记录的不良擦除块的平面级中的优良擦除页,则这些优良写页可被以估算方式视为差擦除块。同样地,如果错误报告中的信息揭示了已记录不良平面的优良晶粒平面,则这些优良平面可被以估算方式并不非常谨慎地视为差平面。此外,如果错误报告中的信息揭示了记录了之前不良晶粒的封装中的优良晶片,则优良晶片可被以估算方式并不非常谨慎地视为不良晶片。最后,如果错误报告中的信息揭示了记录了之前不良封装的卡中的优良封装,则这些优良封装可被以估算方式并不非常谨慎地视为不良封装。对于需要高度可靠的数据存储的应用而言,估算方法可以是有利的。这种数据存储应用可见于银行行业、电子交易平台、国防工业(例如,控制雷达/声呐和导弹发射)、航空工业(例如,航天飞机、卫星、和空间站的板载控制)、能源工业(例如,核能站中的离心机和反应堆的实时控制)。
当分析错误报告时,可生成物理装置的状态信息(314)。如以上讨论的,可在NVRAM装置的生命周期期间在各种时间收集I/O访问性能度量。当测量了I/O性能度量时,可触发错误报告,接着可分析错误报告(312)。在早期阶段期间,当预期的异常相对罕见时,不太频繁地生成物理装置的状态信息(314)。在后期阶段期间,当更有可能出现预期异常时,可更频繁地生成物理装置的状态信息(314)。
图4示出根据一些实施方式的将带缺陷的物理区域映射到NVRAM装置上的流程图。通常,所生成的信息可用于映射NVRAM存储的薄弱区域。在一些实施方式中,薄弱区域可与基础闪速存储器介质内的较薄弱区相对应。基础闪速存储器介质内的较薄弱或劣化区一般是指更容易导致错误报告的区。例如,当在整个基础装置中错误报告的阈值水平保持一致时,相比于基础闪速存储器介质的其它区,较薄弱或劣化区会更有可能接收写页错误的报告。例如,基础闪速存储器介质内的较薄弱或劣化区域可与不匀称地接收到比其它区域更多错误报告的区域相对应。例如,基础闪速存储器介质的较薄弱或劣化区域可具有比其它区域更宽的阈值。在其它实施方式中,薄弱或劣化区域还可与整个闪速存储器介质装置相对应。例如,当用于错误报告的阈值水平始终相同时,相比于其它NVMD,较薄弱的闪速存储器介质可能更有可能接收写页错误的错误。例如,较薄弱的闪速存储器介质可与接收到相比其它装置不相称地更多错误的这些NVMD相对应。例如,较薄弱的闪速存储器介质具有比其它NVMD更宽的阈值水平。基础闪速存储器介质内的较薄弱区域或较薄弱的闪速存储器介质的识别可致使整个卡处于劣化状态。
当NVRAM装置的薄弱或劣化被映射时,可减少对所映射的薄弱区域的后续I/O操作。通常,较薄弱或劣化区域是具有可或不可不良得足以致使区无效的不良I/O性能特性的区域。较薄弱或劣化区域可不仅仅与无效区域的最接近的相邻区域相对应。然而,作为一般的经验法则,随着NVRAM装置老化,可更经常地跟踪I/O性能度量并且较薄弱区有可能从较薄弱区恶化至无效区。
参照表1,对于可校正错误计数,表现出超过“最大可校正错误阈值”的闪存区域可被标记为“无效的(inoperative)”。表现出比“最小值”大且比“最大值”小的错误计数属性的闪存区域可被标记为“劣化”—并且举例来说,受制于较低的读干扰阈值。对于写时间阈值,可在一些实施方式中使用恒定因子(例如,1.5或类似数值)来区分劣化且无效的区域。例如,在写持续时间阈值为2.0ms时,看到不足2ms的编程时间的闪存区域可被视为正常,看到超过2.0ms但是不足3.0ms的编程时间的闪存区域可被视为劣化,并且看到超过3.0ms的编程时间的闪存区域可被视为无效。
一旦薄弱化或劣化区域的物理位置被映射到基于NVRAM的存储子系统的每个NVRAM装置上,主机计算装置上的应用需要知道这些物理位置。初始地,可针对基于NVRAM的存储子系统,总结每个构成NVRAM装置上的劣化或无效区域的物理位置(402)。例如,存储可以处于NVRAM内的特定部分(诸如,单层单元(SLC)部分)上,以有助于或改进I/O操作性能。如以上讨论的,SLC部分可提供比MLC部分更快的存储器访问,代价是每单位成本的容量较小。此后,可在例如中央服务器处存留(406)物理位置(404)的总结信息。
基于这个总结信息,当将NVRAM存储子系统上的物理位置映射到线性块地址(LBA)时,FTL 141可避免这些不良块。LBA是被呈现给用于映射到文件系统中的逻辑块的操作系统的块装置视图,如应用所看见的。
所存储的信息可揭示用于整个基于NVRAM的存储子系统的不良块的系统级表现。
可按装置管理的各种方式,利用基于NVRAM的存储子系统上的NVRAM装置上的不良块的系统级表现。可使用状态信息将预制造缺陷表征为对基础半导体组件的处理器的例如良率、缺陷分布、装置耐久性等方面的反馈。不良块的系统级表现还可被用作对产品制造的反馈。该反馈可提供关于制造时NVRAM装置的可靠性的信息。不良块的系统级表现可额外引导将企业计算环境中的NVRAM装置部署为基于NVRAM的存储子系统。部署可提供用于从属控制器将错误报告例如通过主控制器220提交到中央位置的中央报告能力。
基于系统级实施方式,可在系统级表现中总结的被映射的较薄弱或劣化区域中调度较少的I/O操作。基于对较薄弱或劣化区的总结表现,可执行各种存储器存取调度。在页级,例如,被映射的较薄弱或劣化区中的写操作可被禁用并且在被映射的较薄弱区中只允许进行读操作。例如,当与较薄弱或劣化区关联的可校正错误以一致方式超过阈值水平时,可停止一些较薄弱或劣化区中的读操作。例如,当在这些较薄弱区中的聚集的读错误超过临界最高值时,可停止一些较薄弱或劣化区中的读操作。在较薄弱或劣化区中的对应信息被重新分配给其它闪存区域之后,可重新开始这些读操作。
在块级,例如,可调度I/O操作,从使用快页和慢页二者转变为只使用快页。在一些实施方式中,快页可具有400μs量级的关联I/O时延,而慢页通常可具有少于大约2ms的关联I/O时延。
在基于NVRAM存储子系统上的写路径的背景下,存在两种写模式,即,同步写和异步写。“同步写”阻断应用程序或操作系统发布的I/O操作,直到数据内容已经被写入持久闪速存储器中。这种写入可以以写页的粒度(例如,每装置2K至16KB)乘以平面的数目(例如,在一些实施方式中为两个)并且乘以分片因子(例如,在一些实施方式中,高达八个)出现。
另一方面,“异步写”可依赖于控制器存储器资源(无论是从属控制器或主控制器中)和装置功率失效安全机制(可提供一致性保障机制,使得如果出现功率损耗事件,则将驻留在控制器资源中的数据写出到持久闪速存储器)。在这些情况下,数据一被接收到控制器存储器资源中,写操作就可被认为已完成,并且比数据实际存留在闪存中的时间早得多。
异步写路径可被用于写请求,写请求涉及其粒度等于或大于FTL转换粒度(例如,在一些实施方式中,4KB)的数据。FTL转换粒度是FTL将操作系统(OS)所供应的逻辑块地址重新映射到闪存介质上的内部物理闪存地址的粒度。特别地,异步写可涉及将请求数据内容写入控制器资源,并且然后在填充被分配以提供特定请求的擦除块(和映射到这个擦除块的持久闪存)的剩余部分时,宣告已完成写。换句话讲,在没有正式确证请求数据内容已经被完全写入基于NVRAM的存储子系统的NVRAM装置的情况下,执行异步写。擦除块可包括总共为页*平面数(num_planes)*分片因子(stripe_factor)个字节的数据。可在应用可前行至其它任务的同时在后台执行填充——因此名称是“异步”。
写流程可包括选择持久闪存物理位置来吸收写—不同的位置选择将导致正使用不同的闪存封装,因此在写操作中涉及不同的从控制器。
对于具有闪速存储器介质的NVRAM装置的I/O操作而言,写放大现象是有些独特的。写放大是指可能需要实现多个额外的介质写以便支持来自用户应用101的写请求。来自用户应用101的这个写请求可例如将一页数据写入NVRAM装置以供持久存储。写放大可被表达为放大比率以暗示为了支持给定的写请求而执行的额外介质写。对于目前主要的NVRAM装置,在最差的情况下,写放大比率通常的范围是大约2.5至3.5。额外的介质写可以发生在用于冲注(flush)给定写请求的数据内容的介质写之前,以在NVRAM装置上永久存储。例如,会需要额外的介质写将擦除块中的有效数据重新定位以在NVRAM装置上腾出空间,使得连续空间对于写入特定写页的数据内容变得可用。额外的介质写也可以发生在冲注给定写请求的数据内容的介质写之后,以在NVRAM装置上永久存储例如,示例粒度1KB的较小用户写会导致示例粒度4KB的较大数据单元被写入,以在NVRAM装置上进行持久存储。类似地,额外介质写可涉及将在冲注给定写请求的数据内容之后存储在NVRAM装置别处的无效数据重新设置到NVRAM装置上的特定位置以进行永久存储。
当将输入的写请求的新数据内容写入闪速存储器介质上的特定位置时,在新数据内容可被写入特定位置之前,已经存储在特定位置的预先存在的数据会需要被重新定位到新的位置。在一些实施方式中,可执行将预先存在的数据重新分配到新位置以空出预先存在的数据所占用的旧位置,并且并行地,将当前写引导至闪速存储器介质上已经被空出的位置。并行实施方式可改进NVRAM装置上的I/O操作的并发性,原因是,可完成输入的新写请求,而不必等待完成重新定位操作。
作为例证,考虑假定的NVRAM装置具有从页0至页99的100个单元的存储空间。假定的NVRAM装置的存储能力可被宣告为70页,即便它具有物理可用的100页。在响应于写请求正填充NVRAM装置的闪速存储器介质时,写日志中的输入写请求可即刻到达页80。此时,可扫描写日志,以识别与已经变得可用于存储新数据内容的闪速存储器单元所对应的0至80范围内的页。这些可用的闪速存储器单元中的数据内容可出于各种原因被取代(displaced)。因为被宣告的容量只有70个单元,所以可预期,例如,在0至80范围内,存在至少包含可被进行或者已经被进行垃圾收集的无效数据的的页。出于类似原因,可预期,在0至80的范围内,存在包含可被或者已经被重新定位在NVRAM上的别处的数据的超过10个位置。当将数据内容重新定位在识别位置时,只需要重新定位有效数据。有效数据意指还没有被覆写或移除的数据。无效数据意指已经被覆写或移除的数据。因此,在页80处并且响应于新的写请求,可扫描写日志以识别用于录入新写请求中的新数据内容的较小范围(例如,不到页80)内的位置。一旦识别到NVRAM装置上的位置,就可使较小范围(不到页80)内的这些位置可用于录入新数据内容。因为70页(物理可用的100页之外)的所宣告的容量和将数据重新定位到NVRAM装置上别处的新位置的额外操作,所以预期,重新定位和相关联的清除(clean-up)操作实际上影响不止被分配用于接收写请求中的数据内容的最后录入的区,从而导致闪速存储器介质上的更多写操作。在具有100页但被宣告具有70页的存储容量的这个假定NVRAM中,在最差情况下有效与无效数据录入的预期比率是,对于每10个单元,3个单元可包含无效数据,而7个单元包含有效数据。假设到达写日志中的页80,扫描写日志可揭示30页(100页之中的)中的无效数据。这意指,假定的NVRAM装置可取30个新写页。然而,对于吸收这30个新写页的NVRAM装置,因为需要重新定位有效数据,所以可保证额外写。因此,尽管假定的NVRAM装置只被宣告在其物理容量的70%,但由于有效数据的重新定位和垃圾收集,导致字段使用可填充整个物理存储,从而造成更多的写操作更多。
如以上讨论的,可每个擦除块执行NVRAM装置的闪速存储器介质上的擦除操作,可每个写页执行写操作,并且每个读页执行读操作。一个擦除块可以是数个写页的大小。一个写页可以是数个读页的大小。基于每个晶粒,写页具有大约2KB-16KB的范围。对于具有4kB的适中粒度的写操作,例证性的写放大比率可以在大约2至大约2.5的范围内。
图5是根据一些实施方式的减小写放大开销的方法的流程图。可接收大量写请求,其中,每个写请求试图将数据的各个页写入NVRAM装置502。各个页可以是写页的逻辑单元。
入站写请求可被分类为写请求的不同子群组(504)。写请求的子群组可不重叠,从这个意义上说,子群组没有共用写请求。分类成子群组是为了提高依据例如时延和/或吞吐量测得的整体写性能。若干因素会影响聚集写放大开销并且进而影响NVRAM装置的整体写性能。这些因素包括作为写请求目标位置的闪存介质块以及用于实现闪存介质上的写请求的基础写机制。初始地,可选择启用擦除块来形成候选擦除块的池。启用擦除块可以是准备好提供入站写请求的擦除块。候选擦除块的池可表示写操作被引导的最大容器。随后,可选择一个启用擦除块来提供特定的入站的写请求,如以下讨论的。
当提供入站写请求以写入例如与写请求相关联的一个特定写页时,可从闪存介质上的候选擦除块的池中选择擦除块。这个选择可以是基于以下示例考虑中的任一个,即,候选擦除块上的有效数据的量、启用擦除块之间的相似程度、写入启用擦除块的数据的预期寿命的相关性。有效数据的量可表示与给定的候选擦除块相关联的重新定位开销的量。启用擦除块之间的相似程度可指示从属控制器和每个NVRAM装置上的闪存资源被占用的程度。具体地讲,启用擦除块之间的相似程度可指示启用擦除块上的负载分布。被写入启用擦除块的数据的预期寿命可指示数据多快会变得无效。
在一些实施方式中,通过在闪存介质上选择要启用的下一个擦除块(即,将其用于存储写请求的数据),可进一步将损耗平衡计算在内。换句话讲,可选择擦除块来基本上均衡所有候选擦除块上的损耗和消耗。例如,可跟踪池中的每一个候选擦除块的擦除计数。擦除计数可指示相对应的擦除块已经经历的擦除操作的次数。如果特定的候选擦除块的擦除计数指示这个特定候选擦除块已经经历了比池中的可比较候选擦除块明显少的擦除操作,则可选择这个特定候选擦除块,即使例如它已经最近被选择进行启用。例如,候选擦除块的给定池中的平均擦除计数的不足50%的擦除计数可指示特定擦除块是损耗-消耗的这个计数中的异常值。
作为背景,擦除块可经历下面的生命周期。初始地,特定的擦除块可以是干净的,即,被擦除并且准备好用于提供写请求。此后,当响应于输入的写请求而选择特定的擦除块时,该特定的擦除块可变成被启用。接着,可通过将输入的写请求的数据内容顺序地写到擦除块上来提供输入的写请求。顺序写可避免在针对擦除块进行下一次垃圾收集之前填充空间时有间隙。顺序写还可有利于当写入擦除块内的位置“干扰”了其它位置的内容时,将数据内容写到现代MLC NAND闪存上。具体地讲,MLC读算法可针对(并且只针对)从上到下的写模式将写“干扰”计算在内,如同顺序写中一样。随后,当特定的擦除块被完全写入并且没有留下更多空闲空间时,特定的擦除块可变得禁用。接着,可选择禁用的擦除块进行垃圾收集,即,选择其作为重新定位的源。当完成重新定位时,禁用的擦除块可准备好进行移除所有数据内容的擦除操作。一旦完成了擦除操作,擦除块就变干净。
在其它实施方式中,在闪存介质上选择要启用擦除块可将对负载平衡的考虑计算在内。具体地讲,可选择擦除块,以基本上平衡(flatten)与所有候选擦除块相关联的资源的利用。例如,为了利用相关联的资源,可跟踪每个擦除块,这些相关联的资源可包括例如与闪存介质上的擦除块相关联的直接存储器访问(DMA)信道。如果被跟踪的利用指示闪存介质上特定的候选擦除块具有未充分利用的资源,则这个特定的候选擦除块可以是首选的,即使其它考虑将不首选这个特定的候选擦除块(例如,比候选池中的其它候选擦除块具有更高的擦除计数)。
一旦选择了启用擦除块,可选择接下来要使用的擦除块内的写页。随后,对于所选择的擦除块内的所选定的写页,可选择例如同步写、异步写等的特定的写机制,如以下讨论的。
在一些实施方式中,可根据相关联的数据内容的预期寿命将写请求分组,使得写请求的不同群组被引导到闪存介质上的不同目标位置。不同群组的写请求的数据内容的预期寿命可有所不同。换句话讲,写请求的一些群组可包括具有更快变得无效(即,被更多最新版本取代)的关联数据内容的写请求。快速改变的数据可由例如在线交易平台、社交网络媒体站点、新闻馈送等产生的。写请求的其它群组可包括具有在它们被更新之前在长持续时间内保持有效的关联数据内容的写请求。缓慢改变的粘性数据的示例可包括校园网或数据存储中心的备份数据。
快速变化的数据可在它们被覆写时在闪速存储器介质上形成大量无效位置,并且因此是用于垃圾收集以在闪速存储器介质上得到更多空闲空间的优良候选。相反,将缓慢改变的粘性数据写入NVRAM可引发可比较高的写放大开销。因为缓慢改变的数据往往会具有自最近写入NVRAM起已经被改变的较少无效位,所以这种数据往往会随着多次垃圾收集的一部分进行而被多次重新定位。
例如,一个子群组内的写请求可被引导至闪存介质,使得数据的相应页被写入闪存介质上的基本上附近的物理目标位置处(506)。相比之下,来自不同子群组的写请求可被写入闪存介质上的、被分开存储器位置的距离的物理目标位置。可另外在不存在分类为子群组的情况下,填充这个存储器位置的距离。通过聚类闪存介质上的附近目标位置处(例如,同一擦除块上)具有可比较的预期寿命的数据内容,可提高涉及擦除块的垃圾收集操作的效率。具体地讲,凭借构成块的预期寿命之间的相关性,当块的子集已经变得无效时,擦除块更有可能在今后的特定时间包括更多无效数据。结果,(例如,垃圾收集过程期间发起的)后续擦除操作会更有可能重新得到更多可用空间,同时引发重新定位有效数据的重新定位开销较小。特别地,一个群组的写请求的数据内容可被聚类在一个擦除块中,如由NVRAM控制器中的一个或多个(例如,如图2中所图示的主控制器220、从属控制器202、204、206、208、210、212、214、216和218)确定的。一个群组的写请求的数据内容也可被聚类在邻近或相邻的擦除块中。闪存介质上的这些不同目标位置也可被称为目标闪存介质块。
在一些实施方式中,写日志中的写请求可与目标闪存介质的特性关联,目标闪存介质的特性也会影响写性能。闪存介质的不同区域可具有不同的写指标,例如,MLC闪速存储器介质上的擦除块内的快页可允许比擦除块内的慢页更快地进行写。作为例证,写入快页会花费例如大约400μs,而慢页上的可比较大小的写操作可花费2ms。慢页和快页之间的差异会是通过不同的闪存写算法和基础单元布置造成的。例如,可使用与用于SLC型闪速存储器单元的闪存写算法类似的闪存写算法对与多位MLC单元中的第一写对应的快页编程,而与多位MLC单元中的第二位和后续位对应的慢页的编程可能需要更仔细地执行以便没有过度地干扰与这些单元关联的之前被写入页的数据内容。一些实施方式可进行明智选择,以避免写入慢存储单元,以便更快速地处理大量入站写请求(例如,以改进写入操作的时延或数据量的吞吐量)。具体地讲,当NVRAM上存在过量存储容量时,写请求可被重新导向快页上的闪速存储器介质单元并且离开慢页上的闪速存储器介质单元。这个重新导向可提高所测得的吞吐量或时延方面的I/O性能。然而,当过量容量受青睐时,写请求可被重新导向快页和慢页二者上的闪速存储器介质单元。例如,这些实施方式可调度对入站写请求的执行,使得NVRAM装置的可用闪速存储器介质单元的利用可明显增至最大。
一些实施方式可灵活地决定避免将新的写操作导向慢页上的闪速存储器介质单元,以便实现提供入站写请求的时延和对NVRAM装置上的可用存储容量的利用之间的折衷。该折衷可取决于例如NVRAM装置上的可用过量容量相对于入站写请求中的数据量的比率。当该比率高时,在前述写入慢页上的闪速存储器介质单元的同时,调度器可更激进地将写重新导向快页上的闪速存储器介质单元。例如,当该比率大于大约2时,对慢页上的闪速存储器介质单元的超过50%的写入可被重新导向快页上的闪速存储器介质单元。当该比率低时,在前述写入慢页上的闪速存储器介质单元的同时,调度器可更保守地将写入重新导向快页上的闪速存储器介质单元。例如,当该比率小于大约1.5时,对慢页上的闪速存储器介质单元的不足50%的写入可被重新导向快页上的闪速存储器介质单元。该折衷还可取决于应用背景。例如,对于要求对未完成(outstanding)写操作的快速响应时间的数据密集应用(诸如,高频电子交易应用),在前述写入慢页上的闪速存储器介质单元的同时,调度器可更激进地将写重新导向快页上的闪速存储器介质单元。在存在可用的存储配额并且首要要求是使空间利用最大化的情况下,在诸如电子邮件存储系统、媒体(包括照片、视频、和音频)的全部节目系统等的其它示例应用中,在前述写入慢页上的闪速存储器介质单元的同时,调度器可不太激进地将写入重新导向快页上的闪速存储器介质单元。
总之,一些实施方式智能地调度写日志中的写请求以写入启用擦除块内的闪存写页的一些或全部,以提高操纵入站写请求的写性能。
一些实施方式可额外地将大小写请求的写路径分开(即,用于将请求数据存留在所选的写页中的机制),以打破吞吐量和时延的平衡。参照图1和图2,用户应用101可通过操作系统102向装置驱动器125提交写请求。此后,装置驱动器125与主控制器220进行通信以执行写请求。当写请求完成时,主控制器220可通过操作系统102通知用户应用101。从用户应用101的角度看,提交写请求和完成写请求之间的时间以写请求的时延为特征。根据基础闪速存储器介质的速度,用于NVRAM装置上的写请求的例证时延可在大约500μs至大约2.2ms的范围内。如果在闪速存储器介质处重新尝试写入之后写请求完成,则时延可能会恶化。对于大多数用户应用,这些例证性时延数目表示慢写。
图6是基于每个入站写请求的相应特性来差异调度入站写请求的方法的流程图。可接收写请求的流,其中,每个写请求试图将数据的相应页写入NVRAM装置上的闪存介质(602)。接着,每个入站写请求可被分类为时延敏感或吞吐量敏感(604)。例如,一些实施方式可用写日志查明是否只有一个高级线程或应用进程正发布写请求,或者是否存在一次向闪速存储器介质发布大量写请求的用户应用的多个线程。在一个(或少量)高级线程或应用过程在写日志中发布大量写请求的情况下,响应时间性能更有可能是要紧的,因此这些写请求可被归类为是对时延敏感的。这种情景可包括例如高频交易平台,即时地适应正由相对少量的线程承担的大量交易订单。在用户应用的多个线程一次向闪速存储器介质发布大量写请求的情况下,从这个意义上说,吞吐量问题会是最重要的,这些写请求的聚集需要在尽可能短的时间内处理。这种活动的示例可见于例如备份文件服务器应用试图备份校园网上的工作站上的文件。因此,这些写请求可被归类为是吞吐量敏感的。参照图2,根据如上讨论的发布写请求的背景,与装置驱动器125一起工作的主控制器220可内部推断写请求更有可能是对时延敏感的还是吞吐量敏感的。主控制器220可接着根据推断来调度写请求,以根据背景的特定需要进行调整。例如,如果特定写请求被归类为是对时延敏感的,则主控制器220可将特定写请求调度为异步写(606)。然而,如果给定写请求被归类为是吞吐量敏感的,则主控制器220可将给定写请求调度为同步写(608)。
具体地讲,实施方式可基于与写请求相关联的块大小来推断一个或多个写请求是对时延或吞吐量敏感的。与写请求相关联的块大小可指示与写请求相关联的整体应用预期。例如,对于更新数据库日志而言至关重要的写可以是4KB写。类似地,相同数据库应用可发布128KB写,这是相对大的块大小。4KB写是时延更要紧的小写,而128KB写是吞吐量重要的大写。一些实施方式可将写请求分类成块大小范围,然后将时延或吞吐量灵敏度或组合与给定范围相关联。例证性的块大小范围可包括超小块(USB)、常规块和大块。例如,USB范围内的请求可小于时延问题最重要的4KB。类似地,常规块范围可包括具有4KB和128KB之间的块大小的请求。对于常规块,时延和带宽/吞吐量问题二者都是重要的。另外,大块范围可由大小超过128KB的请求组成。对于大块请求,带宽/吐吞量问题往往会胜过时延问题。
一些实施方式可基于特定写请求是否提交(commit)时延最重要的小块中的元数据或数据、或者写请求是否提交吞吐量更要紧的大数据块,来区分写日志中的写请求。对于小和中等写请求,可采用异步样式写操作来实现后写情景(write-behind scenario),在该情况下,小的写入被提交至主或从属控制器中的SRAM缓冲器资源,而发布线程继续进行,而无需等待完成从SRAM缓冲器到闪存的数据传递。示例的异步I/O操作可获取写请求,并且写入SRAM并且将在大致50微秒内将肯定应答返回到请求线程。同时,察觉到已完成写的驱动器继续处理其它写,而非延迟其它写。对于大写请求,控制器可将大写直接提交给闪存,大写可仍然经过SRAM缓冲器,但因为SRAM缓冲器没有确证数据存储并且控制器一直从事写提交直到写被提交给闪存所以发布线程停顿,好像SRAM缓冲器不在那里,因此导致异步写。
一些实施方式可确认用户应用或内核(或控制器)模块是否请求写以实现吞吐量和时延之间的更好折衷。内核或控制器模块级请求往往会与元数据写相关,并且常常是时延敏感的。
图7是根据一些实施方式,图示对NVRAM上的I/O操作的时延的时序图。如以上讨论的,NVRAM装置可采用MLC型NAND闪速存储器介质。在时间T1,在NVRAM装置上的控制器处接收I/O请求,包括将请求的数据内容传递到控制器内的内部易失性存储器资源的时间。控制器可以是主控制器220或从属控制器中的任一个。请求可以是写请求将例如2k至16k字节的数据的写页(块)提交给NVRAM装置上的闪速存储器介质。在时间T2,控制器将访问基础闪速存储器介质的请求排队。在时间T3,写页(块)的数据被提交给基础闪速存储器介质。对于擦除请求,在时间T3,从指定的存储器位置擦除数据。对于读请求,在时间T3,从指定的存储器位置获取数据。为了进行例证,如上所讨论的,T2可以低于200μs,而对于较慢页T3可以是大约2ms,对于较快页T3可以是大约400μs。
返回参照图7,从时间0至T1,在主控制器220处接收写请求。允许继续在时间T1发布线程或进程将使时延受益最多。从时间T1至T2,写请求可从主控制器220被传送到特定闪存平面。在写操作被阻断这段时间,这个持续时间可以高达200μs。。允许继续在时间T2发布线程或应用进程将是时延和吞吐量/带宽之间折衷。在时间T1之后(一旦数据内容被接收在控制器易失性存储器中)或在时间T2(一旦数据内容被传送到闪存装置,而还没有被提交)肯定应答写请求的这种实施方式中,可通过硬件和软件机制的组合来保持数据一致性。具体地讲,如果发生断电,则板上电路(例如,电容器电路)可提供电力,既完成排队的写又将控制器易失性存储器中的数据内容写入到NVRAM装置的闪存介质。类似地,在一些实施方式中,软件的电力失效后的恢复机制可通过检查写出的内容来重构系统的一致状态。从时间T2至T3,已经执行了写请求,因此没有阻断I/O操作,并且可在正在发布的线程或应用进程处接收ACK消息或异常。持续时间可以是例如大约2ms。一直等到T3才请求发布线程将使吞吐量(或一致性)受益最大。此时,数据已经被提交,以在相关闪速存储器单元进行永久存储。
一些实施方式可通过依赖于在断电的情况下将NVRAM装置上的SRAM或DRAM中存储的数据的自动硬件辅助冲注至预先指定的闪速存储器位置,来提供电力安全机制。在这些实施方式中,NVRAM装置上的SRAM或DRAM可用作中间存储,使得可根据硬件资源限制、应用背景等以打破时延和吞吐量之间的平衡的方式执行聚集写。
图8是基于目标NVRAM装置的负载状况的差异调度入站写请求的方法的流程图。可接收多个写请求,其中,每个写请求请求将数据的各个块写在NVRAM装置上(802)。如以上讨论的,数据的页可以以写页为单元。同时,正在监视NVRAM装置的负载状况(804)。面对大量的写请求,可基于多个负载状况因素来进行写一致性确定。负载状况因素可包括NVRAM装置的用户向装置注入的写请求的数目。负载状况因素还可包括发布这些写请求的线程或应用进程的数目。负载状况因素还可包括作为系统是处于高负载状况还是处于低负载状况的一个指示的、在系统上运行的线程或应用进程的数目。
负载状况因素可另外地包括队列占用比率。队列占用比率可被引导至NVRAM装置上的控制器,包括主控制器220、从控制器202、204、206、208、210、212、214、216和218中挂起的写请求的队列。队列占用比率还可被引导至上面安装有NVRAM装置的主机计算装置上的装置驱动器处的挂起的写请求的队列。队列占用比率可检测特定队列的写请求是否已经超过录入的阈值数目。一些实施方式可将来自个体线程或应用进程的请求作为内部队列来处理。通过检查队列是如何被占用的并随后尝试估计写请求的到达速率以及在给定时间在系统中存在的写请求的数目是什么,可估计和表征系统的负载状况。
然后,可将负载状况与阈值进行比较(806)。例如,可将队列占用比率与阈值比率进行比较,以确认基础NVRAM装置的闪存介质是否正提供大量的I/O访问请求。如以上讨论的,如果负载状况超过阈值(例如,队列占用比率超过阈值比率),则入站写请求可以被调度为同步写(808)。通过将入站写请求调度为同步写,排队操作可以被放慢并且抑制挂起I/O请求的进一步建立,因为发布进程等待入站写请求完成并且可不发布其它写请求。然而,如果负载状况低于阈值(例如,队列占用比率在阈值比率内),则入站写请求可被调度为异步写(810),因为基础NVRAM可承担更多I/O任务。
在具有大量积压的挂起线程或应用进程或高线程计数的系统中,因为时延可能不会通过SRAM缓冲器而被减少,一些实施方式可放弃对通过SRAM缓冲器作为中间存储地点保持器而进行后写的追求。在一些实施方式中,如图1中所示的装置驱动器125可将写请求的数据推送到闪存,好像不存在中间SRAM一样。
一些实施方式可基于大量写请求是源自少量线程还是正发布大量写请求的大量线程来进行区分。在一些实施方式中,I/O请求参数(例如,请求线程或应用进程的身份、每个写请求的数据的块大小)是已知的。一些实施方式可通过API 122向操作系统102查询此信息。
一些实施方式会需要推断正积极进行写请求的线程或应用进程的数目、或当前在系统上运行(即,未空闲)的线程或应用进程的数目。一些实施方式可通过API 122向操作系统102查询信息以进行上述推断。
在一些实施方式中,如果应用发布4KB写请求,则相同的写操作可基于周围环境最终在不同时间实现不同部分。有时,4KB数据写可被当作时延敏感操作进行处理。例如,任务关键写可被立即提交给闪速存储器介质,即使这些写的量很轻。例如,在闪速存储器介质处可存在过量存储容量,使得通过如之前描述地将写引导至快页,可以容易地解决时延。在其它时间,4KB写可被当作中等块大小的部分进行处理,对于中等块大小,在时间T2可不阻断写操作,同时允许继续发布线程或应用进程。在其它时间,4KB数据可被当作随后将被提交给闪速存储器介质的一批中的部分进行处理。除了工作负载特性之外,进行确定可考虑系统的状态,例如,闪存资源的压力如何。例如,如果大量闪存资源对相对少的挂起写请求可用,则写将最终使用快页。类似地,在负载相对轻的情况下,即使较大的写最终也将使用时延敏感写路径。
本文中的讨论还应用于共同挂起的读写操作。与以上讨论一致地,一些实施方式可将读优先于写,因为从计算上说读的负担会更小一些,除了某些读取决于写的那些情形之外,在这些情况下,优先进行写操作。在NAND型闪速存储器介质中,一些实施方式可减少介质写的数目,以使由于介质损耗而导致的单元失效最少。
这里描述的系统和技术的各种实施方式可在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件、和/或其组合中来实现。这些各种实施方式可包括能在包括至少一个可编程处理器的可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,可编程处理器可以是专用或通用的,被耦合以从存储系统、至少一个输入装置、和至少一个输出装置接收并且向其传送数据和指令。
这些计算机程序(也被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可用高级程序和/或面向对象的编程语言、和/或汇编/机器语言来实现。如本文中使用的,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、设备和/或装置(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
举例来说,适于执行指令程序的处理器包括例如,通用和专用微处理器二者,以及任何种类的计算机的单个处理器或多个处理器中的一个。通常,处理器将从只读存储器或随机存取存储器或这二者接收指令和数据。计算机的元件可包括用于执行指令的处理器和用于存储指令和数据的一个或多个存储器。通常,计算机将还包括用于存储数据文件的一个或多个大容量存储装置或操作地耦合到大容量存储装置;这种装置包括:诸如内部硬盘和可移动盘的磁盘;磁-光盘;和光盘。适于有形地实现计算机程序指令和数据的存储装置包括所有形式的非易失性存储器,举例来说,包括诸如EPROM、EEPROM和闪速存储器装置的半导体存储器装置;诸如内部硬盘和可移动盘的磁盘;磁-光盘;CD-ROM和DVD-ROM盘。处理器和存储器可用ASIC(专用集成电路)来补充或者被并入ASIC中。
为了提供与用户的交互,这里描述的系统和技术可在具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)和用户可用来向计算机提供输入的键盘和指示装置(例如,鼠标或跟踪球)的计算机上实现。其它种类的装置也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈、或触觉反馈);并且可以用包括声音、语言、或触觉输入的任何形式来接收来自用户的输入。
这里描述的系统和技术可在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或网络浏览器的客户端计算机,用户可通过其与这里描述的系统和技术的实施方式交互),或者这种后端组件、中间件组件、或前端组件的任何组合。系统的组件可通过数字数据通信的任何形式或介质(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和互联网。
计算系统可包括客户端和服务器。客户端和服务器一般彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系凭借在各个计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
已经描述了众多实施方式。但是,应该理解,可在不脱离本发明的精神和范围的情况下进行各种修改。例如,已经相对于发消息和映射应用描述了本文档中的很大部分,但还可应对其它形式的图形应用,诸如,交互式节目指南、web页面导航和缩放、和其它这种应用。
另外,附图中描绘的逻辑流不需要用示出的特定次序或顺序次序来实现所需的结果。另外,可提供其它步骤,或者可排除所描述流中的步骤,并且可在所描述系统中添加或移除其它组件。因此,其它实施例在下面权利要求的范围内。
Claims (26)
1.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入基于NVRAM的存储子系统;
将所述写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;以及
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
其中,处理所述写请求的特定子群组包括将被归类在写请求的子群组中的一个中的第一写请求的数据的相应单元写入第一目标位置处,并且将被归类在写请求的子群组中的另一个中的第二写请求的数据的相应单元写入第二目标位置处,其中所述第一目标位置和所述第二目标位置被分开存储器位置的距离,否则在写入所述第一写请求和所述第二写请求的数据的相应单元之前,数据被存储在所述存储器位置内。
2.根据权利要求1所述的方法,其中,处理所述写请求的特定子群组进一步包括将被归类在写请求的第一子群组内的写请求的数据的对应单元投影成在被写入之后具有有效期的第一分布,并且将被归类在写请求的第二子群组内的写请求的数据的对应单元投影成在被写入之后具有有效期的第二分布,其中,所述第一分布和所述第二分布在统计学上互不相同。
3.根据权利要求1所述的方法,其中,将写请求分类成写请求的子群组包括以数据的相应单元的第一大小分布来产生写请求的第一子群组;以数据的相应单元的第二大小分布来产生写请求的第二子群组,其中,所述第一大小分布和所述第二大小分布在统计学上彼此不同。
4.根据权利要求1所述的方法,其中,将写请求分类成写请求的子群组包括以第一到达时间分布产生在所述装置驱动器处接收的写请求的第一子群组;以第二到达时间分布产生在所述装置驱动器处接收的写请求的第二子群组,其中,所述第一到达时间分布和所述第二到达时间分布在统计学上彼此不同。
5.根据权利要求1所述的方法,其中,将写请求分类成写请求的子群组包括产生来自线程的一个群组的写请求的特定子群组,所述线程的一个群组与在托管所述基于NVRAM的存储子系统的计算装置上的特定应用相关联。
6.根据权利要求1所述的方法,其中,将写请求分类成写请求的子群组包括将写请求分类成写请求的第一子群组和写请求的第二子群组,并且其中,所述第一子群组中的写请求请求写入的数据的相应单元比所述第二子群组中的写请求的数据的相应单元更快改变。
7.根据权利要求6所述的方法,进一步包括:
改进因将写请求的数据的相应单元写入所述基于NVRAM的存储子系统而造成的写放大开销。
8.根据权利要求7所述的方法,其中,改进所述写放大开销包括通过将接收到的写请求分类来减少已经被重新定位的数据的聚集量,其中,数据被重新定位以释放所述至少一个NVRAM装置上的至少一个位置,以便所述基于NVRAM的存储子系统处理在已经接收到多个I/O访问请求之后到达的至少一个写请求。
9.根据权利要求1所述的方法,进一步包括:
从候选擦除块的池中选择启用擦除块,所述启用擦除块包括用于容纳特定写请求的数据的相应单元的多于一个写页。
10.根据权利要求9所述的方法,其中,选择所述启用擦除块是基于所述候选擦除块中的每一个上的有效数据的量。
11.根据权利要求9所述的方法,其中,选择所述启用擦除块是基于所述启用擦除块上的负载分布。
12.根据权利要求9所述的方法,其中,选择所述启用擦除块是基于所述特定写请求的数据的相应单元的预期寿命。
13.根据权利要求9所述的方法,进一步包括跟踪在所述候选擦除块的池中的所述候选擦除块中的每一个的擦除计数,其中,所述擦除计数指示擦除块已经经历擦除操作的次数。
14.根据权利要求13所述的方法,进一步包括:基于候选擦除块的指示所述候选擦除块已经经历小于所述候选擦除块的池的平均擦除操作的50%的擦除计数,来选择用于容纳数据的相应写页的擦除块。
15.根据权利要求9所述的方法,进一步包括跟踪与每个候选擦除块相关联的硬件资源的利用,其中,选择所述启用擦除块使得所有候选擦除块的相应利用变得相互分歧更少。
16.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;
将所述写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
基于确定所述写请求的特定写请求是时延敏感的,将所述特定写请求调度成针对所述基于NVRAM的存储子系统的异步写,其中,所述异步写是通过将数据的相应单元发送到中间易失性存储,并且无需确证该特定写请求的数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;以及
基于确定所述特定写请求是吞吐量敏感的,将所述特定写请求调度成针对所述基于NVRAM的存储子系统的同步写,其中,所述同步写是通过阻断已经发布所述特定写请求的、在托管所述基于NVRAM的存储子系统的计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置而被执行的;
其中,将所述写请求分类成写请求的子群组包括确定所述特定写请求是时延敏感还是吞吐量敏感,其中,当所述特定写请求是将在接收时被处理时,所述特定写请求是时延敏感的,以及其中,当数据的相应单元将伴随确证被写入时,所述特定写请求是吞吐量敏感的。
17.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;
将所述写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;以及
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
其中,将所述写请求分类成写请求的子群组包括确定所述写请求的特定写请求是时延敏感还是吞吐量敏感,其中,当所述特定写请求是将在接收时被处理时,所述特定写请求是时延敏感的,以及其中,当数据的相应单元将伴随确证被写入时,所述特定写请求是吞吐量敏感的;
其中,被确定为时延敏感的写请求的数据的相应单元的大小小于被确定为吞吐量敏感的写请求的数据的相应单元的大小,
其中,被归类为时延敏感的写请求的子群组包括由所述主机计算装置上的应用进程或线程的第一集合发布的写请求,
其中,被归类为吞吐量敏感的写请求的子群组包括由所述主机计算装置上的应用进程或线程的第二集合发布的写请求,以及
其中,所述应用进程或线程的第一集合的大小小于所述应用进程或线程的第二集合的大小。
18.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;
将所述写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;以及
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
其中,将所述写请求分类成写请求的子群组包括确定所述写请求的特定写请求是时延敏感还是吞吐量敏感,其中,当所述特定写请求是将在接收时被处理时,所述特定写请求是时延敏感的,以及其中,当数据的相应单元将伴随确证被写入时,所述特定写请求是吞吐量敏感的;以及
其中,被确定为吞吐量敏感的写请求的数据的相应单元的大小大于被确定为时延敏感的写请求的数据的相应单元的大小。
19.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;
将所述写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;以及
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
其中,将所述写请求分类成写请求的子群组包括确定所述写请求的特定写请求是时延敏感还是吞吐量敏感,其中,当所述特定写请求是将在接收时被处理时,所述特定写请求是时延敏感的,以及其中,当数据的相应单元将伴随确证被写入时,所述特定写请求是吞吐量敏感的;
其中,被归类为时延敏感的写请求的子群组包括由所述主机计算装置上的应用进程或线程的第一集合发布的写请求,
其中,被归类为吞吐量敏感的写请求的子群组包括由所述主机计算装置上的应用进程或线程的第二集合发布的写请求,以及
其中,所述应用进程或线程的第二集合的大小大于所述应用进程或线程的第一集合的大小。
20.一种管理包括非易失性随机存取存储器装置即NVRAM装置的基于所托管的NVRAM的存储子系统的方法,所述方法包括:
在主机计算装置上的装置驱动器处接收写请求,每个写请求均请求将数据的相应单元写入基于NVRAM的存储子系统;
将写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在至少一个NVRAM装置上的目标位置;以及
通过将数据的对应单元写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
将所确认的负载状况与负载阈值进行比较,
基于产生所确认的负载状况在所述负载阈值内的比较,通过所述基于NVRAM的存储子系统上的中间易失性存储,作为异步写来写入数据的对应单元,其中,所述异步写通过向所述中间易失性存储发送数据的相应单元,并且无需确证写请求的数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;以及
基于产生所确认的负载状况超过所述负载阈值的比较,通过所述基于NVRAM的存储子系统上的所述中间易失性存储,作为同步写来写入数据的对应单元,或者绕过所述基于NVRAM的存储子系统上的所述中间易失性存储,其中,所述同步写通过阻断已经发布该写请求的、在所述主机计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置而被执行。
21.根据权利要求20所述的方法,其中,确认所述基于NVRAM的存储子系统的特定NVRAM装置的负载状况包括确定以下中的至少一个:在所述特定NVRAM装置处的挂起的I/O访问请求的数目、具有I/O访问积压的应用进程或线程的数目、在所述特定NVRAM装置上的物理单元的可用性、或挂起的写请求的队列占用比率。
22.根据权利要求21所述的方法,其中,所述队列占用比率涉及所述特定NVRAM装置上的控制器处的挂起的写请求的队列或者托管所述基于NVRAM的存储子系统的计算装置上的装置驱动器处的挂起的写请求的队列。
23.根据权利要求22所述的方法,其中,所述队列占用比率检测写请求的特定队列是否超过录入的阈值数目。
24.一种包括基于非易失性随机存取存储器即NVRAM的存储子系统的系统,其中,所述基于NVRAM的存储子系统包括至少一个NVRAM装置,
其中,所述基于NVRAM的存储子系统与主机计算装置进行通信,以及
其中,所述基于NVRAM的存储子系统被构造成:
从所述主机计算装置接收写请求,每个写请求均请求将数据的相应单元写入所述基于NVRAM的存储子系统;
将写请求分类为写请求的子群组,其中,各个子群组内的写请求是互斥的;
确认所述基于NVRAM的存储子系统的多个NVRAM装置中的每一个的负载状况;
根据所述基于NVRAM的存储子系统的至少一个NVRAM装置的所确认的负载状况,识别用于处理写请求的特定子群组的、在所述至少一个NVRAM装置上的目标位置;
通过将数据的对应单元写入在所述至少一个NVRAM装置上的所识别的目标位置来处理所述写请求的特定子群组;
将所确认的负载状况与负载阈值进行比较;
基于产生所确认的负载状况在所述负载阈值内的比较,通过所述基于NVRAM的存储子系统上的中间易失性存储,作为异步写来写入数据的对应单元,其中,所述异步写通过向所述中间易失性存储发送数据的相应单元,并且无需确证写请求的数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置上的所述目标位置而被执行;以及
基于产生所确认的负载状况超过所述负载阈值的比较,通过所述基于NVRAM的存储子系统上的所述中间易失性存储,作为同步写来写入所述数据的对应单元,或者绕过所述基于NVRAM的存储子系统上的所述中间易失性存储,其中,所述同步写通过阻断已经发布写请求的、在所述主机计算装置上的应用进程或线程,直到数据的相应单元已经被完全写入所述基于NVRAM的存储子系统的所述至少一个NVRAM装置而被执行。
25.根据权利要求24所述的系统,其中,所述基于NVRAM的存储子系统进一步包括所述至少一个NVRAM装置上的中间易失性存储和由控制器提供的逻辑保障机制,并且其中,所述由控制器提供的逻辑保障机制适于响应于所述基于NVRAM的存储子系统的意外断电,而将所述中间易失性存储中的数据内容写入所述至少一个NVRAM装置上的闪存介质。
26.根据权利要求24所述的系统,其中,所述基于NVRAM的存储子系统进一步包括适于处理写请求的直接存储器访问通道。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/838,699 US10073626B2 (en) | 2013-03-15 | 2013-03-15 | Managing the write performance of an asymmetric memory system |
US13/838,699 | 2013-03-15 | ||
US13/927,740 US9323663B2 (en) | 2013-03-15 | 2013-06-26 | Managing the write performance of an asymmetric memory system |
US13/927,871 | 2013-06-26 | ||
US13/927,740 | 2013-06-26 | ||
US13/927,871 US9164891B2 (en) | 2013-03-15 | 2013-06-26 | Managing the write performance of an asymmetric memory system |
PCT/US2014/029053 WO2014144580A1 (en) | 2013-03-15 | 2014-03-14 | Managing the write performance of an asymmetric memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105339913A CN105339913A (zh) | 2016-02-17 |
CN105339913B true CN105339913B (zh) | 2019-03-22 |
Family
ID=51533808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480021526.6A Active CN105339913B (zh) | 2013-03-15 | 2014-03-14 | 管理不对称存储器系统的写性能 |
Country Status (4)
Country | Link |
---|---|
US (6) | US10073626B2 (zh) |
EP (1) | EP2972901B1 (zh) |
CN (1) | CN105339913B (zh) |
WO (1) | WO2014144580A1 (zh) |
Families Citing this family (297)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
JP6039276B2 (ja) * | 2012-07-09 | 2016-12-07 | キヤノン株式会社 | 画像形成装置 |
US9842660B1 (en) | 2012-12-28 | 2017-12-12 | Virident Systems, Llc | System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory |
US9286002B1 (en) | 2012-12-28 | 2016-03-15 | Virident Systems Inc. | Dynamic restriping in nonvolatile memory systems |
US9158687B2 (en) * | 2013-03-04 | 2015-10-13 | Dot Hill Systems Corporation | Method and apparatus for processing fast asynchronous streams |
US9813080B1 (en) | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US10230396B1 (en) | 2013-03-05 | 2019-03-12 | Microsemi Solutions (Us), Inc. | Method and apparatus for layer-specific LDPC decoding |
US9135164B2 (en) | 2013-03-15 | 2015-09-15 | Virident Systems Inc. | Synchronous mirroring in non-volatile memory systems |
US9021188B1 (en) | 2013-03-15 | 2015-04-28 | Virident Systems Inc. | Small block write operations in non-volatile memory systems |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
KR102083547B1 (ko) * | 2013-04-12 | 2020-03-02 | 삼성전자주식회사 | 플래시 메모리와 메모리 컨트롤러를 포함하는 데이터 저장 장치 및 그것의 배드 페이지 관리 방법 |
US9552438B2 (en) * | 2013-05-17 | 2017-01-24 | Paypal, Inc. | Systems and methods for responsive web page delivery based on network bandwidth |
US9727502B2 (en) * | 2013-07-26 | 2017-08-08 | Infineon Technologies Ag | System and method for direct memory access transfers |
WO2015023259A1 (en) * | 2013-08-13 | 2015-02-19 | Empire Technology Development Llc. | Memory systems |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9250999B1 (en) * | 2013-11-19 | 2016-02-02 | Google Inc. | Non-volatile random access memory in computer primary memory |
US9740410B2 (en) * | 2014-03-17 | 2017-08-22 | Primaryio, Inc. | Maximize IO throughput in hybrid storage solution |
US10146437B2 (en) | 2014-03-17 | 2018-12-04 | Primaryio, Inc. | Tier aware caching solution to increase application performance |
US10133488B2 (en) | 2014-03-17 | 2018-11-20 | Primaryio, Inc. | Apparatus and method for cache provisioning, configuration for optimal application performance |
US10853365B2 (en) * | 2014-03-28 | 2020-12-01 | Hitachi, Ltd. | Database management system, computer, and database management method |
US9443616B2 (en) * | 2014-04-02 | 2016-09-13 | Seagate Technology Llc | Bad memory unit detection in a solid state drive |
US10379741B2 (en) * | 2014-04-17 | 2019-08-13 | Seagate Technology Llc | Dynamic storage device region provisioning |
KR20150121560A (ko) * | 2014-04-21 | 2015-10-29 | 삼성전자주식회사 | 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법 |
US9229885B2 (en) * | 2014-05-21 | 2016-01-05 | Freescale Semiconductor, Inc. | Adaptive scheduling queue control for memory controllers based upon page hit distance determinations |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9552166B2 (en) * | 2014-09-02 | 2017-01-24 | Sandisk Technologies Llc. | Process and apparatus to reduce declared capacity of a storage device by deleting data |
US9582203B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
US9582193B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9563362B2 (en) * | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Host system and process to reduce declared capacity of a storage device by trimming |
US9582202B2 (en) * | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by moving data |
US9519427B2 (en) * | 2014-09-02 | 2016-12-13 | Sandisk Technologies Llc | Triggering, at a host system, a process to reduce declared capacity of a storage device |
US9524112B2 (en) * | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by trimming |
US9563370B2 (en) * | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device |
US9524105B2 (en) * | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by altering an encoding format |
US9582212B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device |
US9652153B2 (en) | 2014-09-02 | 2017-05-16 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses |
US9665311B2 (en) | 2014-09-02 | 2017-05-30 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable |
US9582220B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system |
US10394606B2 (en) | 2014-09-30 | 2019-08-27 | Hewlett Packard Enterprise Development Lp | Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy |
US9483187B2 (en) | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
US9600337B2 (en) | 2014-09-30 | 2017-03-21 | Nimble Storage, Inc. | Congestion avoidance in network storage device using dynamic weights |
US10545791B2 (en) | 2014-09-30 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization |
US10534542B2 (en) * | 2014-09-30 | 2020-01-14 | Hewlett Packard Enterprise Development Lp | Dynamic core allocation for consistent performance in a non-preemptive scheduling environment |
US10338817B2 (en) * | 2014-12-30 | 2019-07-02 | Sandisk Technologies Llc | Systems and methods for storage recovery |
WO2016111702A1 (en) | 2015-01-09 | 2016-07-14 | Hewlett Packard Enterprise Development Lp | Persistent memory garbage collection |
US10949286B2 (en) | 2015-01-12 | 2021-03-16 | Hewlett Packard Enterprise Development Lp | Handling memory errors in memory modules that include volatile and non-volatile components |
JP6320318B2 (ja) * | 2015-02-17 | 2018-05-09 | 東芝メモリ株式会社 | 記憶装置及び記憶装置を含む情報処理システム |
JP6294251B2 (ja) * | 2015-02-26 | 2018-03-14 | ファナック株式会社 | 誤り訂正機能による寿命予測を有する制御装置 |
JP2016170583A (ja) * | 2015-03-12 | 2016-09-23 | 株式会社東芝 | メモリシステムおよび情報処理システム |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10332613B1 (en) | 2015-05-18 | 2019-06-25 | Microsemi Solutions (Us), Inc. | Nonvolatile memory system with retention monitor |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US9817576B2 (en) * | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
KR102450553B1 (ko) * | 2015-06-04 | 2022-10-05 | 삼성전자주식회사 | 저장 장치 및 그것을 내장한 메인 보드 및 그것의 자가 진단 방법 |
US10476767B2 (en) * | 2015-06-22 | 2019-11-12 | Draios, Inc. | Communication between independent containers |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US9912752B1 (en) * | 2015-06-29 | 2018-03-06 | Amazon Technologies, Inc. | Retention-based data management in a network-based data store |
US9857986B2 (en) | 2015-06-30 | 2018-01-02 | International Business Machines Corporation | Wear leveling of a memory array |
US10459847B1 (en) | 2015-07-01 | 2019-10-29 | Google Llc | Non-volatile memory device application programming interface |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US9799405B1 (en) | 2015-07-29 | 2017-10-24 | Ip Gem Group, Llc | Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction |
KR102360214B1 (ko) * | 2015-08-26 | 2022-02-08 | 삼성전자주식회사 | 실시간 공유 인터페이스를 포함하는 시스템 온 칩의 스케쥴링 방법 |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10613941B1 (en) | 2015-09-30 | 2020-04-07 | EMC IP Holding Company LLC | Hybrid NVRAM logging in filesystem namespace |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US20170123994A1 (en) * | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | Handling Of Plane Failure In Non-Volatile Storage |
US10705952B2 (en) * | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
CN105404673B (zh) * | 2015-11-19 | 2018-11-09 | 清华大学 | 基于nvram的高效文件系统构建方法 |
US9946483B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
US9417809B1 (en) | 2015-12-07 | 2016-08-16 | International Business Machines Corporation | Efficient management of page retirement in non-volatile memory utilizing page retirement classes |
US9886214B2 (en) | 2015-12-11 | 2018-02-06 | Ip Gem Group, Llc | Nonvolatile memory system with erase suspend circuit and method for erase suspend management |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10496277B1 (en) * | 2015-12-30 | 2019-12-03 | EMC IP Holding Company LLC | Method, apparatus and computer program product for storing data storage metrics |
US9892794B2 (en) | 2016-01-04 | 2018-02-13 | Ip Gem Group, Llc | Method and apparatus with program suspend using test mode |
US9899092B2 (en) | 2016-01-27 | 2018-02-20 | Ip Gem Group, Llc | Nonvolatile memory system with program step manager and method for program step management |
US10481799B2 (en) * | 2016-03-25 | 2019-11-19 | Samsung Electronics Co., Ltd. | Data storage device and method including receiving an external multi-access command and generating first and second access commands for first and second nonvolatile memories |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11194517B2 (en) * | 2016-05-24 | 2021-12-07 | Samsung Electronics Co., Ltd. | Method and apparatus for storage device latency/bandwidth self monitoring |
KR20170132483A (ko) | 2016-05-24 | 2017-12-04 | 삼성전자주식회사 | 메모리 장치의 구동 방법 |
US10331352B2 (en) * | 2016-06-06 | 2019-06-25 | Toshiba Memory Corporation | Dynamic processing of storage command based on internal operations of storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10390114B2 (en) | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US10291263B2 (en) | 2016-07-28 | 2019-05-14 | Ip Gem Group, Llc | Auto-learning log likelihood ratio |
US10157677B2 (en) | 2016-07-28 | 2018-12-18 | Ip Gem Group, Llc | Background reference positioning and local reference positioning using threshold voltage shift read |
US10236915B2 (en) | 2016-07-29 | 2019-03-19 | Microsemi Solutions (U.S.), Inc. | Variable T BCH encoding |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
KR20180032728A (ko) | 2016-09-22 | 2018-04-02 | 삼성전자주식회사 | 저장 장치, 저장 장치를 포함하는 사용자 장치, 및 사용자 장치의 동작 방법 |
US10235397B1 (en) | 2016-09-30 | 2019-03-19 | EMC IP Holding Company LLC | Trees and graphs in flash memory |
CN106448737B (zh) * | 2016-09-30 | 2020-12-01 | 厦门旌存半导体技术有限公司 | 读取闪存数据的方法、装置以及固态驱动器 |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
KR102643916B1 (ko) * | 2016-10-18 | 2024-03-08 | 삼성전자주식회사 | 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법 |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10007459B2 (en) * | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
US10430085B2 (en) * | 2016-11-08 | 2019-10-01 | Micron Technology, Inc. | Memory operations on data |
US9977622B1 (en) | 2016-11-22 | 2018-05-22 | Micron Technology, Inc. | Buffer operations in memory |
US10373528B2 (en) * | 2016-12-14 | 2019-08-06 | Western Digital Technologies, Inc. | Cell-level realization of burn after reading for NAND flash |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US10496470B2 (en) * | 2016-12-30 | 2019-12-03 | Western Digital Technologies, Inc. | Error recovery handling |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10313441B2 (en) | 2017-02-13 | 2019-06-04 | Bank Of America Corporation | Data processing system with machine learning engine to provide enterprise monitoring functions |
CN108628776B (zh) * | 2017-03-22 | 2022-02-18 | 华为技术有限公司 | 一种数据读写访问控制方法及装置 |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US10459659B2 (en) * | 2017-03-31 | 2019-10-29 | Intel Corporation | Technologies for issuing commands on selected memory devices |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10708041B2 (en) * | 2017-04-30 | 2020-07-07 | Technion Research & Development Foundation Limited | Memresistive security hash function |
US10310745B2 (en) * | 2017-05-19 | 2019-06-04 | Samsung Electronics Co., Ltd. | Method and apparatus for fine tuning and optimizing NVMe-oF SSDs |
CN108958904B (zh) * | 2017-05-25 | 2024-04-05 | 北京忆恒创源科技股份有限公司 | 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架 |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US10152422B1 (en) | 2017-06-13 | 2018-12-11 | Seagate Technology Llc | Page-based method for optimizing cache metadata updates |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
US10236069B2 (en) * | 2017-06-20 | 2019-03-19 | Intel Corporation | Word line read disturb error reduction through fine grained access counter mechanism |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10678443B2 (en) | 2017-07-06 | 2020-06-09 | Alibaba Group Holding Limited | Method and system for high-density converged storage via memory bus |
US10564856B2 (en) | 2017-07-06 | 2020-02-18 | Alibaba Group Holding Limited | Method and system for mitigating write amplification in a phase change memory-based storage device |
US10599340B1 (en) | 2017-07-13 | 2020-03-24 | EMC IP Holding LLC | Policy driven IO scheduler to improve read IO performance in hybrid storage systems |
US10719245B1 (en) | 2017-07-13 | 2020-07-21 | EMC IP Holding Company LLC | Transactional IO scheduler for storage systems with multiple storage devices |
US10592123B1 (en) | 2017-07-13 | 2020-03-17 | EMC IP Holding Company LLC | Policy driven IO scheduler to improve write IO performance in hybrid storage systems |
US10509739B1 (en) | 2017-07-13 | 2019-12-17 | EMC IP Holding Company LLC | Optimized read IO for mix read/write scenario by chunking write IOs |
US10346054B1 (en) * | 2017-07-13 | 2019-07-09 | EMC IP Holding Company LLC | Policy driven IO scheduler resilient to storage subsystem performance |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10387051B2 (en) | 2017-08-24 | 2019-08-20 | Hewlett Packard Enterprise Development Lp | Acquisition of IOPS and MBPS limits independently at a scheduler in a scheduler hierarchy |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10496829B2 (en) | 2017-09-15 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for data destruction in a phase change memory-based storage device |
US10642522B2 (en) | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
US10789011B2 (en) | 2017-09-27 | 2020-09-29 | Alibaba Group Holding Limited | Performance enhancement of a storage device using an integrated controller-buffer |
US10503409B2 (en) | 2017-09-27 | 2019-12-10 | Alibaba Group Holding Limited | Low-latency lightweight distributed storage system |
US10423563B2 (en) * | 2017-10-13 | 2019-09-24 | International Business Machines Corporation | Memory access broker system with application-controlled early write acknowledgment support and identification of failed early write acknowledgment requests to guarantee in-order execution of memory requests of applications |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
CN109725840B (zh) * | 2017-10-30 | 2022-04-05 | 伊姆西Ip控股有限责任公司 | 利用异步冲刷对写入进行节流 |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10445190B2 (en) | 2017-11-08 | 2019-10-15 | Alibaba Group Holding Limited | Method and system for enhancing backup efficiency by bypassing encoding and decoding |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10915267B2 (en) * | 2017-12-06 | 2021-02-09 | Intel Corporation | Atomic cross-media writes on a storage device |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11468312B2 (en) * | 2018-02-02 | 2022-10-11 | Samsung Electronics Co., Ltd. | Memory management for machine learning training on GPU |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10496548B2 (en) * | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
TWI689816B (zh) * | 2018-03-06 | 2020-04-01 | 群聯電子股份有限公司 | 區塊管理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN110275668B (zh) * | 2018-03-14 | 2022-09-13 | 群联电子股份有限公司 | 区块管理方法、存储器控制电路单元与存储器存储装置 |
WO2019183958A1 (zh) | 2018-03-30 | 2019-10-03 | 华为技术有限公司 | 数据写入方法、客户端服务器和系统 |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10768844B2 (en) * | 2018-05-15 | 2020-09-08 | International Business Machines Corporation | Internal striping inside a single device |
US10871922B2 (en) * | 2018-05-22 | 2020-12-22 | Pure Storage, Inc. | Integrated storage management between storage systems and container orchestrators |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
JP6735791B2 (ja) * | 2018-06-13 | 2020-08-05 | 株式会社日立製作所 | 記憶制御システム及び消費電力制御方法 |
WO2020000136A1 (en) | 2018-06-25 | 2020-01-02 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of i/o requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US11874782B1 (en) * | 2018-07-20 | 2024-01-16 | Robert Gezelter | Fast mass storage access for digital computers |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US10884662B2 (en) | 2018-08-06 | 2021-01-05 | Silicon Motion, Inc. | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
US11354058B2 (en) * | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10839919B2 (en) * | 2018-11-26 | 2020-11-17 | SK Hynix Inc. | Memory system and method of operating the same |
US10877671B2 (en) * | 2018-12-03 | 2020-12-29 | Vast Data Ltd. | Techniques for prolonging lifespan of storage drives |
US10956053B2 (en) | 2018-12-04 | 2021-03-23 | Micron Technology, Inc. | Selective relocation of data of a subset of a data block based on distribution of reliability statistics |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
CN111290974A (zh) * | 2018-12-07 | 2020-06-16 | 北京忆恒创源科技有限公司 | 用于存储设备的缓存淘汰方法与存储设备 |
US10884654B2 (en) | 2018-12-31 | 2021-01-05 | Alibaba Group Holding Limited | System and method for quality of service assurance of multi-stream scenarios in a hard disk drive |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US10860420B2 (en) | 2019-02-05 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for mitigating read disturb impact on persistent memory |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10783035B1 (en) | 2019-02-28 | 2020-09-22 | Alibaba Group Holding Limited | Method and system for improving throughput and reliability of storage media with high raw-error-rate |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US11036427B2 (en) * | 2019-04-04 | 2021-06-15 | International Business Machines Corporation | Using content addressable memory to perform read-modify-write operations in non-volatile random access memory (NVRAM) |
KR20200120159A (ko) * | 2019-04-11 | 2020-10-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 이의 동작 방법 |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US10732873B1 (en) * | 2019-04-18 | 2020-08-04 | Microsoft Technology Licensing, Llc | Timeout mode for storage devices |
US10838661B1 (en) | 2019-04-29 | 2020-11-17 | Western Digital Technologies, Inc. | Fast storage class memory using write once memory coding |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
CN110347334B (zh) * | 2019-05-29 | 2023-03-14 | 深圳市金泰克半导体有限公司 | 一种固态硬盘工作方法、系统、电子设备和存储介质 |
US11899576B2 (en) * | 2019-06-11 | 2024-02-13 | Micron Technology, Inc. | Dynamically modifying garbage collection rates for a memory subsystem in a closed-loop system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11106370B2 (en) * | 2019-07-02 | 2021-08-31 | Micron Technology, Inc. | Changing of memory components to be used for a stripe based on an endurance condition |
US11044044B2 (en) | 2019-07-16 | 2021-06-22 | Microsoft Technology Licensing, Llc | Peak to average power ratio reduction of optical systems utilizing error correction |
US11063696B2 (en) | 2019-07-16 | 2021-07-13 | Microsoft Technology Licensing, Llc | Increasing average power levels to reduce peak-to-average power levels using error correction codes |
US11172455B2 (en) | 2019-07-16 | 2021-11-09 | Microsoft Technology Licensing, Llc | Peak to average power output reduction of RF systems utilizing error correction |
US11075656B2 (en) | 2019-07-16 | 2021-07-27 | Microsoft Technology Licensing, Llc | Bit error reduction of communication systems using error correction |
US11086719B2 (en) * | 2019-07-16 | 2021-08-10 | Microsoft Technology Licensing, Llc | Use of error correction codes to prevent errors in neighboring storage |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US10783978B1 (en) * | 2019-08-27 | 2020-09-22 | Micron Technology, Inc. | Read voltage-assisted manufacturing tests of memory sub-system |
US11416422B2 (en) * | 2019-09-17 | 2022-08-16 | Micron Technology, Inc. | Memory chip having an integrated data mover |
US11163490B2 (en) | 2019-09-17 | 2021-11-02 | Micron Technology, Inc. | Programmable engine for data movement |
US11397694B2 (en) | 2019-09-17 | 2022-07-26 | Micron Technology, Inc. | Memory chip connecting a system on a chip and an accelerator chip |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11163449B2 (en) | 2019-10-17 | 2021-11-02 | EMC IP Holding Company LLC | Adaptive ingest throttling in layered storage systems |
US11157379B2 (en) * | 2019-10-30 | 2021-10-26 | International Business Machines Corporation | Managing blocks of memory based on block health using hybrid controllers |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11042307B1 (en) | 2020-01-13 | 2021-06-22 | Alibaba Group Holding Limited | System and method for facilitating improved utilization of NAND flash based on page-wise operation |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US11126355B2 (en) * | 2020-02-21 | 2021-09-21 | International Business Machines Corporation | Write-based data management using endurance tiers in a storage system |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11194643B1 (en) * | 2020-06-03 | 2021-12-07 | Micron Technology, Inc. | Access operation status signaling for memory systems |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
CN112328512B (zh) * | 2020-09-22 | 2023-07-28 | 北京计算机技术及应用研究所 | 一种应用于多控存储系统的缓存同步系统及方法 |
CN112487095B (zh) * | 2020-12-09 | 2023-03-28 | 浪潮云信息技术股份公司 | 一种分布式数据库事务数据存储优化的方法 |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
CN112764785B (zh) * | 2020-12-24 | 2021-10-29 | 江苏云涌电子科技股份有限公司 | 一种自动升级多级控制器的方法 |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11520500B2 (en) * | 2021-03-19 | 2022-12-06 | Micron Technology, Inc. | Managing capacity reduction when downshifting multi-level memory cells |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11681471B2 (en) * | 2021-04-07 | 2023-06-20 | EMC IP Holding Company LLC | Bypassing of tier-1 storage in a streaming data storage system |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
KR102344380B1 (ko) | 2021-06-02 | 2021-12-28 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
US20240061602A1 (en) * | 2022-08-22 | 2024-02-22 | Micron Technology, Inc. | Power safety configurations for logical address space partitions |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383510A (zh) * | 2000-05-04 | 2002-12-04 | 皇家菲利浦电子有限公司 | 存储媒体上的数据管理方法、系统和计算机程序 |
CN102035884A (zh) * | 2010-12-03 | 2011-04-27 | 华中科技大学 | 一种云存储系统及其数据部署方法 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3363240A (en) | 1964-06-22 | 1968-01-09 | Burroughs Corp | Solid state electron emissive memory and display apparatus and method |
US5276835A (en) | 1990-12-14 | 1994-01-04 | International Business Machines Corporation | Non-blocking serialization for caching data in a shared cache |
US5734861A (en) | 1995-12-12 | 1998-03-31 | International Business Machines Corporation | Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity |
US5787466A (en) | 1996-05-01 | 1998-07-28 | Sun Microsystems, Inc. | Multi-tier cache and method for implementing such a system |
US6018779A (en) | 1997-12-15 | 2000-01-25 | Emc Corporation | System for encapsulating a plurality of selected commands within a single command and transmitting the single command to a remote device over a communication link therewith |
US6895490B1 (en) | 2001-04-09 | 2005-05-17 | Matrix Semiconductor, Inc. | Method for making a write-once memory device read compatible with a write-many file system |
US6785169B1 (en) | 2002-04-05 | 2004-08-31 | T-Ram, Inc. | Memory cell error recovery |
US7337351B2 (en) | 2002-09-18 | 2008-02-26 | Netezza Corporation | Disk mirror architecture for database appliance with locally balanced regeneration |
US6940777B2 (en) | 2002-10-31 | 2005-09-06 | Renesas Technology Corp. | Semiconductor device and semiconductor memory device provided with internal current setting adjustment circuit |
US7158402B2 (en) | 2003-08-06 | 2007-01-02 | Texas Instruments Incorporated | Asymmetric static random access memory device having reduced bit line leakage |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
JP4582297B2 (ja) * | 2004-06-25 | 2010-11-17 | 日本電気株式会社 | レプリケーションシステム、装置、方法、およびプログラム |
JP2006107151A (ja) | 2004-10-06 | 2006-04-20 | Hitachi Ltd | ストレージシステム及びストレージシステムの通信パス制御方法 |
US7613870B2 (en) | 2004-11-18 | 2009-11-03 | International Business Machines Corporation | Efficient memory usage in systems including volatile and high-density memories |
US7363421B2 (en) * | 2005-01-13 | 2008-04-22 | Stmicroelectronics S.R.L. | Optimizing write/erase operations in memory devices |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
JP2006338370A (ja) | 2005-06-02 | 2006-12-14 | Toshiba Corp | メモリシステム |
US7370143B1 (en) | 2005-06-20 | 2008-05-06 | Network Appliance, Inc. | Controlling write request access to a non-volatile log |
CN100573476C (zh) | 2005-09-25 | 2009-12-23 | 深圳市朗科科技股份有限公司 | 闪存介质数据管理方法 |
US7661054B2 (en) * | 2005-09-30 | 2010-02-09 | Intel Corporation | Methods and arrangements to remap degraded storage blocks |
US8060718B2 (en) | 2006-06-20 | 2011-11-15 | International Business Machines | Updating a memory to maintain even wear |
US7930513B2 (en) | 2006-11-04 | 2011-04-19 | Virident Systems Inc. | Writing to asymmetric memory |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
WO2009052525A1 (en) | 2007-10-19 | 2009-04-23 | Virident Systems, Inc. | Managing memory systems containing components with asymmetric characteristics |
WO2009079478A1 (en) | 2007-12-14 | 2009-06-25 | Virident Systems, Inc. | Distributing metadata across multiple different disruption regions within an asymmetric memory system |
US8245101B2 (en) | 2007-12-27 | 2012-08-14 | Sandisk Enterprise Ip Llc | Patrol function used in flash storage controller to detect data errors |
US7971093B1 (en) | 2008-01-16 | 2011-06-28 | Network Appliance, Inc. | Apparatus and method to proactively address hard disk drive inefficiency and failure |
US8275945B2 (en) | 2008-02-05 | 2012-09-25 | Spansion Llc | Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer |
TW200935422A (en) | 2008-02-05 | 2009-08-16 | Phison Electronics Corp | Flash memory data writing method and controller thereof |
US8762661B2 (en) | 2008-09-18 | 2014-06-24 | Seagate Technology Llc | System and method of managing metadata |
US8266408B2 (en) | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
US8239724B2 (en) | 2009-04-08 | 2012-08-07 | Google Inc. | Error correction for a data storage device |
US8688896B2 (en) | 2009-05-21 | 2014-04-01 | Panasonic Corporation | High speed writing mode in memory controller, nonvolatile storage device, accessing device, nonvolatile storage system, and method and program for writing data |
KR101638061B1 (ko) | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
TWI421870B (zh) | 2009-10-30 | 2014-01-01 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US8621145B1 (en) * | 2010-01-29 | 2013-12-31 | Netapp, Inc. | Concurrent content management and wear optimization for a non-volatile solid-state cache |
US8239617B1 (en) | 2010-02-12 | 2012-08-07 | Emc Corporation | Enterprise data storage system using multi-level cell flash memory |
US8650446B2 (en) | 2010-03-24 | 2014-02-11 | Apple Inc. | Management of a non-volatile memory based on test quality |
US8499227B2 (en) | 2010-09-23 | 2013-07-30 | Micron Technology, Inc. | Memory quality monitor based compensation method and apparatus |
JP5752267B2 (ja) | 2011-01-11 | 2015-07-22 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | 同時要求スケジューリング |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US8957458B2 (en) | 2011-03-24 | 2015-02-17 | Zeno Semiconductor, Inc. | Asymmetric semiconductor memory device having electrically floating body transistor |
US20130019057A1 (en) | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US8583868B2 (en) | 2011-08-29 | 2013-11-12 | International Business Machines | Storage system cache using flash memory with direct block access |
US8627021B2 (en) | 2011-08-31 | 2014-01-07 | Qualcomm Incorporated | Method and apparatus for load-based prefetch access |
US8874828B2 (en) | 2012-05-02 | 2014-10-28 | Apple Inc. | Systems and methods for providing early hinting to nonvolatile memory charge pumps |
CN105917318A (zh) | 2012-07-24 | 2016-08-31 | 英特尔公司 | 用于实现基于ssd的i/o高速缓存的系统和方法 |
US20140068182A1 (en) | 2012-09-04 | 2014-03-06 | Drobo, Inc. | Storage Virtualization In A Block-Level Storage System |
US9280497B2 (en) | 2012-12-21 | 2016-03-08 | Dell Products Lp | Systems and methods for support of non-volatile memory on a DDR memory channel |
US9135164B2 (en) | 2013-03-15 | 2015-09-15 | Virident Systems Inc. | Synchronous mirroring in non-volatile memory systems |
US10073626B2 (en) | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9122588B1 (en) | 2013-03-15 | 2015-09-01 | Virident Systems Inc. | Managing asymmetric memory system as a cache device |
-
2013
- 2013-03-15 US US13/838,699 patent/US10073626B2/en active Active
- 2013-06-26 US US13/927,740 patent/US9323663B2/en active Active
- 2013-06-26 US US13/927,871 patent/US9164891B2/en active Active
-
2014
- 2014-03-14 WO PCT/US2014/029053 patent/WO2014144580A1/en active Application Filing
- 2014-03-14 CN CN201480021526.6A patent/CN105339913B/zh active Active
- 2014-03-14 EP EP14763754.0A patent/EP2972901B1/en active Active
-
2015
- 2015-09-14 US US14/852,844 patent/US9477595B2/en active Active
-
2016
- 2016-03-22 US US15/077,282 patent/US9588698B1/en active Active
- 2016-10-24 US US15/332,740 patent/US9733840B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383510A (zh) * | 2000-05-04 | 2002-12-04 | 皇家菲利浦电子有限公司 | 存储媒体上的数据管理方法、系统和计算机程序 |
CN102035884A (zh) * | 2010-12-03 | 2011-04-27 | 华中科技大学 | 一种云存储系统及其数据部署方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2972901B1 (en) | 2019-01-09 |
US9164891B2 (en) | 2015-10-20 |
US9477595B2 (en) | 2016-10-25 |
US20170038981A1 (en) | 2017-02-09 |
EP2972901A4 (en) | 2017-01-25 |
US20140281152A1 (en) | 2014-09-18 |
US20140281133A1 (en) | 2014-09-18 |
EP2972901A1 (en) | 2016-01-20 |
US9323663B2 (en) | 2016-04-26 |
US20160004635A1 (en) | 2016-01-07 |
US9588698B1 (en) | 2017-03-07 |
US20140281121A1 (en) | 2014-09-18 |
CN105339913A (zh) | 2016-02-17 |
US9733840B2 (en) | 2017-08-15 |
US10073626B2 (en) | 2018-09-11 |
WO2014144580A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105339913B (zh) | 管理不对称存储器系统的写性能 | |
US10049055B2 (en) | Managing asymmetric memory system as a cache device | |
CN105637490B (zh) | 用于在闪速存储器装置之间迁移数据的方法和系统 | |
KR101522848B1 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
US20100191922A1 (en) | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata | |
CN104903864A (zh) | 选择性错误校正码和存储器访问粒度切换 | |
US10049036B2 (en) | Reliable distributed messaging using non-volatile system memory | |
US9767015B1 (en) | Enhanced operating system integrity using non-volatile system memory | |
US9842660B1 (en) | System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory | |
US9760480B1 (en) | Enhanced logging using non-volatile system memory | |
EP2567319A2 (en) | Methods and system for verifying memory device integrity | |
US11232032B2 (en) | Incomplete write group journal | |
US11561707B2 (en) | Allocating data storage based on aggregate duplicate performance | |
US11989452B2 (en) | Read-disturb-based logical storage read temperature information identification system | |
US11922067B2 (en) | Read-disturb-based logical storage read temperature information maintenance system | |
Yang et al. | Ars: Reducing f2fs fragmentation for smartphones using decision trees | |
US10089220B1 (en) | Saving state information resulting from non-idempotent operations in non-volatile system memory | |
US11748277B2 (en) | Client input/output (I/O) access rate variation compensation | |
Thomasian et al. | Disk scheduling policies with lookahead | |
US8626991B1 (en) | Multi-LUN SSD optimization system and method | |
McEwan et al. | Reliability and performance enhancements for SSD RAID | |
Carlson | Storage for hyperscalers | |
Haghdoost | Towards Performance and Reliability Enhancements of Enterprise Data Storage Systems | |
Wang et al. | Reducing the “Tax” of Reliability: A Hardware-Aware Method for Agile Data Persistence in Mobile Devices | |
CN113168288A (zh) | 在由主机管理的闪存转换层中报告和处置闪存编程失败的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Varey Dent Systems Co., Ltd. Address before: American California Applicant before: VIRIDENT SYSTEMS INC |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200806 Address after: California, USA Patentee after: Western Digital Technologies, Inc. Address before: California, USA Patentee before: VIRIDENT SYSTEMS Inc. |
|
TR01 | Transfer of patent right |