CN113625939B - 保持非易失性存储器装置中的一致写入延迟 - Google Patents
保持非易失性存储器装置中的一致写入延迟 Download PDFInfo
- Publication number
- CN113625939B CN113625939B CN202110256317.1A CN202110256317A CN113625939B CN 113625939 B CN113625939 B CN 113625939B CN 202110256317 A CN202110256317 A CN 202110256317A CN 113625939 B CN113625939 B CN 113625939B
- Authority
- CN
- China
- Prior art keywords
- delay
- minimum duration
- value
- counters
- write command
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开描述了用于保持非易失性存储器装置中的一致写入延迟的装置、系统和方法。示例方法包括:从主机装置接收写入命令;基于写入命令的到达和写入命令的完成来计算写入命令的实际延迟;基于实际延迟来递增多个计数器中的一个或多个;基于递增之后的多个计数器来更新最小持续时间的值;并且在基于最小持续时间的更新值确定的时间实例处,向主机装置传输写入命令完成的指示,其中最小持续时间表示到达与传输之间的最小延迟,并且其中在时间实例处传输使得观察到的延迟能够保持在实际延迟的平均值的预定公差之内。
Description
技术领域
本专利文件总体上涉及存储器装置,并且更特别地,涉及改进存储器装置的性能。
背景技术
固态驱动器(SSD)使用多层NAND闪存装置进行持久存储。然而,通常需要先擦除多层NAND闪存装置,然后才可以重新写入新数据,这可能导致较大的延迟(latency)。对于个人和企业应用,存在一致写入命令延迟的要求。
发明内容
所公开技术的实施例涉及保持非易失性存储器装置中的一致写入延迟。通过测量每个主机写入命令的延迟并且跟踪基于跟踪延迟违规的计数器进行更新的最小持续时间值,可以至少部分地实现这些以及其它特征和优点。
在示例方面,描述了一种用于保持非易失性存储器装置中的一致写入延迟的方法。该方法包括:从主机装置接收写入命令;基于写入命令的到达和写入命令的完成来计算写入命令的实际延迟;基于实际延迟来递增多个计数器中的一个或多个;基于递增之后的多个计数器来更新最小持续时间的值;并且在基于最小持续时间的更新值确定的时间实例(instance),向主机装置传输写入命令完成的指示,其中最小持续时间表示写入命令的到达与向主机装置传输指示之间的最小延迟,其中在时间实例处传输使得观察到的延迟能够保持在实际延迟的平均值的预定公差之内,其中观察到的延迟基于写入命令的到达与传输之间的时间差而确定,其中多个计数器中的第一计数器指示写入命令的总数,并且在接收到写入命令时递增,并且其中第二和后续计数器中的每一个对应于延迟违规的类型,并且在确定延迟超过多个阈值中的相应阈值时递增。
在又一示例方面,上述方法可以由包括处理器的视频编码器设备或视频解码器设备来实施。
在又一示例方面,这些方法可以以处理器可运行指令的形式实现并且存储在计算机可读程序介质上。
本专利文件中描述的主题可以以提供下面的特征中的一个或多个的特定方式来实施。
附图说明
图1示出存储器系统的示例。
图2是示例非易失性存储器装置的示图。
图3是示出非易失性存储器装置的单元电压电平分布(Vth)的示例图。
图4是示出非易失性存储器装置的单元电压电平分布(Vth)的另一示例图。
图5是示出编程干扰之前与之后的非易失性存储器装置的单元电压电平分布(Vth)的示例图。
图6是示出非易失性存储器装置的单元电压电平分布(Vth)随参考电压变化的示例图。
图7A示出可以用于适应地确定最小持续时间的示例有限状态机(FSM)。
图7B是具有对应于图7A中的FSM的示例阈值的表。
图8示出用于适应地确定非易失性存储器装置中的延时的示例方法的流程图。
图9A是写入延迟分布的示例数值比较。
图9B是写入延迟分布的另一示例数值比较。
图9C是写入延迟分布的又一示例数值比较。
图10示出用于保持非易失性存储器装置中的一致写入延迟的示例方法的流程图。
具体实施方式
由于NAND闪存相比于基于硬盘驱动器的磁性介质具有优异的读取延迟,因此固态驱动器(SSD)使用NAND闪存作为存储介质。然而,基于NAND闪存的介质需要先擦除较大的块,然后其页面才可以重新写入。这导致SSD定期地对具有许多无效页面的旧块进行垃圾收集,从而为新的主机写入创造空间。此外,诸如具有8个层的三层单元(TLC)闪存和具有16个层的四层单元(QLC)闪存的其中每个单元存储多个层的高密度NAND闪存具有较高的编程时间。
图1至图6概述了可以实施所公开技术的实施例的非易失性存储器系统(例如,基于闪存的存储器、NAND闪存)。
图1是基于所公开技术的一些实施例实施的存储器系统100的示例的框图。存储器系统100包括可以用于存储供其它电子装置或系统使用的信息的存储器模块110。存储器系统100可以被并入(例如,位于电路板上)其它电子装置和系统中。可选地,存储器系统100可以被实施为诸如USB闪存驱动器和固态驱动器(SSD)的外部存储装置。
存储器系统100中包括的存储器模块110可以包括存储器区域(例如,存储器阵列)102、104、106和108。存储器区域102、104、106和108中的每一个可以被包括在单个存储器管芯中或多个存储器管芯中。存储器管芯可以被包括在集成电路(IC)芯片中。
存储器区域102、104、106和108中的每一个包括多个存储器单元。可以基于存储器单位执行读取操作、编程操作或擦除操作。因此,每个存储器单位可以包括预定数量的存储器单元。存储器区域102、104、106或108中的存储器单元可以被包括在单个存储器管芯中或多个存储器管芯中。
存储器区域102、104、106和108中的每一个中的存储器单元可以在存储器单位中以行和列布置。存储器单位中的每一个可以是物理单位。例如,一组多个存储器单元可以形成存储器单位。存储器单位中的每一个也可以是逻辑单位。例如,存储器单位可以是可以分别由诸如块地址或页面地址的唯一地址标识的块或页面。再例如,其中存储器区域102、104、106和108可以包括计算机存储器,该计算机存储器包括存储体(memory bank)作为数据存储的逻辑单位,该存储器单位可以是可以由体地址标识的体。在读取操作或写入操作期间,与特定存储器单位相关联的唯一地址可以用于访问该特定存储器单位。基于唯一地址,可以将信息写入该特定存储器单位中的一个或多个存储器单元或从该特定存储器单位中的一个或多个存储器单元检索信息。
存储器区域102、104、106和108中的存储器单元可以包括非易失性存储器单元。非易失性存储器单元的示例包括闪速存储器单元、相变随机存取存储器(PRAM)单元、磁阻随机存取存储器(MRAM)单元或其它类型的非易失性存储器单元。在存储器单元被配置为NAND闪速存储器单元的示例实施方案中,可以基于页面执行读取或写入操作。然而,基于块执行NAND闪速存储器中的擦除操作。
非易失性存储器单元中的每一个可以被配置为单层单元(SLC)或多层存储器单元。单层单元可以每个单元存储一位信息。多层存储器单元可以每个单元存储多于一位的信息。例如,存储器区域102、104、106和108中的存储器单元中的每一个可以被配置为每个单元存储两位信息的多层单元(MLC)、每个单元存储三位信息的三层单元(TLC)或每个单元存储四位信息的四层单元(QLC)。在另一示例中,存储器区域102、104、106和108中的存储器单元中的每一个可以被配置为存储至少一位信息(例如,一位信息或多位信息),并且存储器区域102、104、106和108中的存储器单元中的每一个可以被配置为存储多于一位的信息。
如图1所示,存储器系统100包括控制器模块120。控制器模块120包括:存储器接口121,与存储器模块110通信;主机接口126,与主机(未示出)通信;处理器124,运行固件级代码;以及高速缓存123和存储器122,分别临时地或永久地存储可运行固件/指令和相关联的信息。在一些实施方案中,控制器模块120可以包括错误校正引擎125,以对存储器模块110中存储的信息执行错误校正操作。错误校正引擎125可以被配置为检测/校正单个位错误或多个位错误。在另一实施方案中,错误校正引擎125可以位于存储器模块110中。
主机可以是包括一个或多个处理器的装置或系统,该一个或多个处理器操作为从存储器系统100检索数据或将数据存储或写入存储器系统100中。在一些实施方案中,主机的示例可以包括个人计算机(PC)、便携式数字装置、数字照相机、数字多媒体播放器、电视和无线通信装置。
在一些实施方案中,控制器模块120还可以包括与主机通信的主机接口126。主机接口126可以包括符合主机接口规范中的至少一个的组件,主机接口规范包括但不限于串行高级技术附件(SATA)、串列小型计算机系统接口(SAS)规范、高速外围组件互连(PCIe)。
图2示出基于所公开技术的一些实施例实施的存储器单元阵列的示例。
在一些实施方案中,存储器单元阵列可以包括NAND闪速存储器阵列,该NAND闪速存储器阵列被分成许多块,每个块包含一定数量的页面。每个块包括多个存储器单元串,并且每个存储器单元串包括多个存储器单元。
在存储器单元阵列是NAND闪速存储器阵列的一些实施方案中,基于页面执行读取操作和写入(编程)操作,并且基于块执行擦除操作。在对块中包括的任意页面执行编程操作之前,必须同时擦除同一块内的所有存储器单元。在实施方案中,NAND闪速存储器可以使用偶数/奇数位线结构。在另一实施方案中,NAND闪速存储器可以使用全位线结构。在偶数/奇数位线结构中,偶数和奇数位线沿着每个字线交错并且被交替地访问,使得每对偶数和奇数位线可以共享诸如页面缓冲器的外围电路。在全位线结构中,所有位线同时被访问。
图3示出多层单元装置中的阈值电压分布曲线的示例,其中每个编程/擦除状态的单元数量被绘制为随阈值电压变化。如其中所示,阈值电压分布曲线包括具有最低阈值电压的擦除状态(表示为“ER”并且对应于“11”)以及具有在状态(由虚线表示)之间的读取电压的三个编程状态(表示为分别对应于“01”、“00”和“10”的“P1”、“P2”和“P3”)。在一些实施例中,由于存储器阵列之间的材料属性的差异,编程/擦除状态的阈值电压分布中的每一个具有有限的宽度。
尽管图3通过示例的方式示出了多层单元装置,但是存储器单元中的每一个可以被配置为每个单元存储任意数量个位。在一些实施方案中,存储器单元中的每一个可以被配置为每个单元存储一位信息的单层单元(SLC),或者每个单元存储三位信息的三层单元(TLC),或者每个单元存储四位信息的四层单元(QLC)。
在将多于一个数据位写入存储器单元时,由于相邻分布之间的距离减小,因此需要对存储器单元的阈值电压电平进行精细布置。这是通过使用增量步进脉冲编程(ISPP)来实现的,即使用阶梯(stair case)编程电压被施加到字线的编程和验证方法对同一字线上的存储器单元重复编程。每个编程状态与在验证操作中使用的验证电压相关联,并且设置每个阈值电压分布窗口的目标位置。
阈值电压分布失真或重叠可能导致读取错误。理想的存储器单元阈值电压分布可能由于例如编程和擦除(P/E)循环、单元间干扰以及数据保持错误而严重失真或重叠(这将在下面进行讨论),并且在大多数情况下,可以通过使用错误校正码(ECC)来处理这些读取错误。
图4示出理想的阈值电压分布曲线410的示例和失真的阈值电压分布曲线420的示例。纵轴表示具有横轴上所表示的特定阈值电压的存储器单元的数量。
对于n位多层单元NAND闪速存储器,可以将每个单元的阈值电压编程为2n个可能的值。在理想的多层单元NAND闪速存储器中,每个值对应于不重叠的阈值电压窗口。
闪速存储器P/E循环对单元晶体管的电荷捕获层的浮栅的隧道氧化物造成损害,这导致阈值电压移位并因此逐渐降低存储器装置噪声裕量。随着P/E循环增加,不同编程状态的相邻分布之间的裕量减小,并且最终分布开始重叠。阈值电压被编程到相邻分布的重叠范围内的存储器单元中存储的数据位可能被误判为原始目标值以外的值。
图5示出NAND闪速存储器中的单元间干扰的示例。单元间干扰还可能导致闪存单元的阈值电压失真。一个存储器单元晶体管的阈值电压移位可能通过干扰单元与牺牲单元之间的寄生电容耦合效应而影响其相邻存储器单元晶体管的阈值电压。单元间干扰的量可能受NAND闪速存储器位线结构的影响。在偶数/奇数位线结构中,一个字线上的存储器单元交替地连接到偶数和奇数位线,并且在相同字线中,偶数单元在奇数单元之前被编程。因此,偶数单元和奇数单元经历不同量的单元间干扰。全位线结构中的单元比偶数/奇数位线结构中的偶数单元经受更少的单元间干扰,并且全位线结构可以有效地支持高速电流感测,以改进存储器读取和验证速度。
图5中的虚线表示所考虑的单元的P/E状态(编程干扰之前)的标称分布,并且“相邻状态值”表示相邻状态已经被编程的值。如图5所示,在相邻状态编程为P1时,所考虑的单元的阈值电压分布移位特定的量。然而,在相邻状态编程为阈值电压高于P1的P2时,这导致相比于相邻状态为P1时更大的移位。类似地,当相邻状态编程为P3时,阈值电压分布的移位最大。
图6示出通过将正常的阈值电压分布和移位的阈值电压分布进行比较的NAND闪速存储器中的保持错误的示例。NAND闪速存储器中存储的数据容易随着时间推移而损坏,这被称为数据保持错误。保持错误由单元晶体管的浮栅或电荷捕获层中存储的电荷的损失而引起。由于浮栅或电荷捕获层的损耗,编程擦除循环较多的存储器单元更可能经历保持错误。在图6的示例中,将顶部行的电压分布(损坏之前)和底部行的分布(因保持错误而被污染)进行比较,显示出向左移位。
NAND闪速存储器装置(例如,如图1至图6中所描述的)易受擦除和编程操作的较大延迟的影响,并且为此,SSD可以采用易失性DRAM来高速缓存写入,并且一旦将数据存储在DRAM高速缓存中,就向主机发送写入命令完成。这将大多数写入的主机写入延迟减少至DRAM写入延迟的时间(通常为几微秒)。然而,当DRAM高速缓存已满时,在将一些数据从DRAM高速缓存移动至NAND页面之前,无法完成主机写入命令。这些写入命令经历的延迟等于NAND编程操作的延迟(通常为数百微秒)。在最坏的情况下,没有NAND页面可用,并且SSD必须在可以提供更多的主机写入之前执行一个循环的垃圾收集。这导致主机写入命令的延迟等于擦除操作的延迟(通常为几毫秒)。
当主机工作负载具有大量突发写入命令时,该问题可能会加剧。从主机的角度看,理想的是使用具有一致写入命令延迟的SSD,尤其是对于企业应用,其中在RAID方案中将写入分散在多个驱动器上,并且任何一个驱动器上的较长延迟可能导致应用滞后。
先前的技术已经通过向所有的写入命令完成添加恒定的延时以将最大延迟扩展到所有命令来解决该问题。然而,当写入流量百分比较小或者当写入高速缓存为空时,该方法导致不必要的延迟。
根据所公开技术的一些实施例,SSD控制器硬件(例如,固件)可以在主机接口处测量每个主机写入命令的延迟,并且在所测量的延迟低于特定阈值时,延时写入命令完成。表示最小持续时间的该特定阈值被存储为MinDuration寄存器设置,其中,在最小持续时间之后输出写入命令完成消息。使用最小持续时间确保写入命令的延迟可以被控制在预定量之内(例如,平均值附近的一些小变化)以保持一致写入命令延迟。另一方面,在延迟超过MinDuration阈值时,硬件更新被配置为跟踪延迟违规的一个或多个计数器。在一些实施例中,在计时器超时或遇到闪存转换层(FTL)事件之后,固件基于一个或多个计数器的值调整MinDuration值。应注意的是,在后面的描述中,通过示例而非限制的方式使用了特定寄存器名称和参数,以便于理解所公开的技术。
在一些实施例中,SSD控制器通过在将数据放置在DRAM高速缓存中完成主机写入时向命令完成添加适当的延时,来实现改进的写入QoS(服务质量)。为了确定哪些命令需要添加延时,SSD控制器具有专用的硬件,该硬件保持计时器并在每个写入命令挂起时保持跟踪其到达时间。在这些情况下,向写入命令完成命令添加延时,以实现延迟等于MinDuration的当前值。
在一些实施例中,MinDuration可以被配置为预定值,使得在持续写入的情况下,发送写入完成的速率与数据从高速缓存移动至NAND页面的速率相匹配。
然而,这可能导致不必要的写入性能下降,并且因此,适应方案仅在必要时才将适当的延时应用于写入完成。在这些实施例中,除了计时器和延迟测量块之外,SSD控制器硬件保持下面的计数器:
1)TotalWritesCount:该寄存器保持自上次重置以来完成的主机写入总数的计数。
2)X1Count:该寄存器保持主机写入延迟超过MinDuration5微秒的主机写入次数的计数。
3)X2Count:该寄存器保持延迟超过2×MinDuration的主机写入次数的计数。
SSD控制器上运行的固件定期地读取三个计数器,并且更新MinDuration和下面的寄存器:
1)AdaptiveState:方案的当前状态,其表示自上次写入延迟违规以来的时间或命令。等于0的AdaptiveState表示新近的延迟违规(或等效地,在当前时间之前的预定持续时间内发生了延迟违规),并且等于7的AdaptiveState表示已经通过适应方案实现的稳态。
2)LastSteadyStateMinDuration:最后达到稳态时的MinDuration的值。
在一些实施例中,如图7A所示,固件使用有限状态机(FSM)来确定MinDuration、AdaptiveState和LastSteadyStateMinDuration的新值。图7B是包括图7A所示的FSM的各种示例阈值、分支和重置条件的表。
在图7A和图7B所示的示例中,由于写入违规的突发性,minDuration寄存器设置被配置为快速地增加(例如,当TotalWriteCount大于或等于16时触发延迟违规1),但以较慢的规模缩减。本文中,阈值和重置条件随工作负载变化。
图8示出根据所公开技术的各个实施例的用于适应地确定非易失性存储器装置中的延时的总体方案的流程图。如其中所示,命令延迟监控器810接收写入命令的到达(例如,命令本身或相应的时间戳)、写入命令的完成,并且基于MinDuration寄存器840中的值计算并输出延迟的写入命令的完成。
MinDuration适应模块820读取并更新MinDuration寄存器840,该MinDuration适应模块820还与计数器830(例如,图8所示的示例中的三个计数器)和状态寄存器850(例如,包括AdaptiveState和LastSteadyStateMinDuration)双向通信。
图9A、图9B和图9C示出在将所公开技术的实施例用于各种流量模型时主机写入命令的延迟的分布的尾部的改进。主机写入命令的延迟的分布的尾部是指较远离平均值的延迟值,即,非常低的延迟值(例如,当写入高速缓存为空时)或非常高的延迟值(例如,没有NAND页面可用并且必须执行垃圾收集循环时)。因此,所描述的实施例减少这些尾部事件的发生,从而确保主机写入命令的延迟紧密地聚集在平均值附近。
图9A示出在队列深度为1(QD-1)的驱动器上工作负载为100%的情况下各种minDuration值的主机写入延迟,其对应于单个正在运行的线程,包括每个写入命令指定4KB(4K)随机数据的写入命令。在该示例中,所考虑的驱动器是128Gb驱动器,该驱动器具有15个管芯、2000μs的三层单元(TLC)、28%的有效预留空间(effective over-provisioning,EOP)以及被设置为10μs的无延迟的写入完成消息的标称值(表示为tProg)。“2.7×tProg”是指被设置为(仿真参数的)理想值的固定延迟情况,并且“Adaptive”是指如所公开技术的实施例所描述的适应延时方案。
如图9A所示,适应方案的延迟相对恒定高达“5九(5Nine)”水平,这表明适应方案将主机写入延迟的尾部减小了达99.9999个百分点。“tProg”情况(在输出写入完成命令之前不引起延迟)的延迟随着尾部约束的增加(即,“九Nine”的数量增加)而急剧地增加。
图9B和图9C分别针对图9A中使用的相同驱动器,将99%和95%的写入工作负载的“tProg”和“适应Adaptive”方案进行比较。如其中所示,在95%的工作负载情况下,适应方案仅比“tProg”情况稍差。
所公开技术的实施例可以适用于使用单层单元(SLC)NAND高速缓存而不是DRAM高速缓存(或与DRAM高速缓存结合)的情况。这些情况取决于所测量的延迟而不是写入缓冲器中的空闲页面的数量,因此,当写入缓冲器适应地重新用于SSD中的其它任务时,所描述的实施例也起作用。
图10示出用于保持非易失性存储器装置中的一致写入延迟的方法的流程图。方法1000包括:在操作1010处,从主机装置接收写入命令。
方法1000包括:在操作1020处,基于写入命令的到达和写入命令的完成来计算写入命令的实际延迟。
方法1000包括:在操作1030处,基于实际延迟来递增多个计数器中的一个或多个。
方法1000包括:在操作1040处,基于递增之后的多个计数器来更新最小持续时间的值。
方法1000包括:在操作1050处,在基于最小持续时间的更新值确定的时间实例处,向主机装置传输写入命令完成的指示。
在一些实施例中,最小持续时间表示写入命令的到达与向主机装置传输指示之间的最小延迟,在时间实例处传输使得观察到的延迟能够保持在实际延迟的平均值的预定公差之内,观察到的延迟基于写入命令的到达与传输之间的时间差而确定,多个计数器中的第一计数器指示写入命令的总数并在接收到写入命令时递增,并且第二和后续计数器中的每一个对应于延迟违规的类型并在确定延迟超过多个阈值中的相应阈值时递增。
在一些实施例中,更新最小持续时间的值进一步基于最小持续时间的稳态值。
在一些实施例中,更新最小持续时间的值进一步基于闪存转换层(FTL)事件的发生。
在一些实施例中,非易失性存储器装置是NAND闪存装置。
在一些实施例中,多个计数器包括三个计数器,多个阈值中的第一阈值在最小持续时间的值的110%至125%之间,并且多个阈值中的第二阈值是最小持续时间的值的两倍。
在一些实施例中,多个计数器包括三个计数器,多个阈值中的第一阈值超过最小持续时间的值5微秒,并且多个阈值中的第二阈值是最小持续时间的值的两倍。
在一些实施例中,最小持续时间的初始值是预定的。
在一些实施例中,方法1000进一步包括以下步骤:基于多个计数器来更新第一寄存器,该第一寄存器存储与自最近的延迟违规以来的命令的持续时间或数量相对应的方法的状态,其中状态是0至N范围内的整数,其中状态0对应于在预定量的时间内已经发生的最近延迟违规,并且其中状态N对应于在稳态下操作的方法。
在一些实施例中,方法1000进一步包括以下步骤:基于多个计数器来更新第二寄存器,该第二寄存器存储与该方法在稳态下操作的最近时间相对应的最小持续时间的值。
本专利文件中描述的主题的实施方案和功能操作可以在包括本说明书中公开的结构及其等效结构或者它们中的一个或多个的组合的各种系统、数字电子电路、或计算机软件、固件或硬件中实施。本说明书中描述的主题的实施方案可以被实施为一个或多个计算机程序产品,即在有形和非暂时性计算机可读介质上编码的计算机程序指令的一个或多个模块,以由数据处理设备运行或控制数据处理设备的操作。计算机可读介质可以是机器可读存储装置、机器可读存储衬底、存储器装置、影响机器可读传播信号的物质组成或者它们中的一个或多个的组合。术语“数据处理单位”或“数据处理设备”涵盖用于处理数据的所有设备、装置和机器,通过示例的方式包括可编程处理器、计算机或者多个处理器或计算机。除了硬件之外,设备还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以包括编译语言或解释语言的任何形式的编程语言写入,并且可以以任何形式进行部署,包括适用于在计算环境中使用的独立程序或者模块、组件、子例程或其它单位。计算机程序不必与文件系统中的文件相对应。程序可以存储在保存其它程序或数据的文件的一部分(例如,标记语言文档中存储的一个或多个脚本)、专用于所讨论的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在一台计算机或者在位于一个站点或跨多站点分布并通过通信网络互连的多台计算机上运行。
本说明书中描述的进程和逻辑流程可以由一个或多个可编程处理器来执行,该一个或多个可编程处理器运行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。进程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且设备也可以被实施为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
例如,适用于运行计算机程序的处理器包括通用和专用微处理器以及任意种类的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁、磁力光盘或光盘),或者可操作地联接以从用于存储数据的一个或多个大容量存储装置(例如,磁、磁力光盘或光盘)接收数据或向其传送数据或两者。然而,计算机不必具有这种装置。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如包括半导体存储器装置,例如,EPROM、EEPROM和闪速存储器装置。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路。
虽然本专利文件包含许多细节,但是这些细节不应被解释为对任何发明或可以要求保护的任何发明的范围的限制,而应被解释为可以特定于特定发明的特定实施例的特征的描述。在本专利文件中单独的实施例的上下文中描述的特定特征也可以以单个实施例的组合来实施。相反,在单个实施例的上下文中描述的各种特征也可以单独地在多个实施例中实施,或者以任何合适的子组合来实施。此外,尽管以上可以将特征描述为以特定组合而起作用并且甚至最初如此要求保护,但是在一些情况下,可以从所要求保护的组合中排除组合的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描述了操作,但是这不应被理解为为了实现理想的效果需要以所示的特定顺序或以连续的顺序执行这些操作,或者需要执行所有所示出的操作。此外,本专利文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
本专利文件仅描述了少量的实施方案和示例,并且可以基于本专利文件中描述和示出的内容进行其它实施方案、改进和变化。
Claims (20)
1.一种保持非易失性存储器装置中的一致写入延迟的方法,包括:
从主机装置接收写入命令;
基于所述写入命令的到达和所述写入命令的完成来计算所述写入命令的实际延迟;
基于所述实际延迟来递增多个计数器中的一个或多个;
基于所述递增之后的所述多个计数器来更新最小持续时间的值;并且
在基于所述最小持续时间的更新值确定的时间实例处,向所述主机装置传输写入命令完成的指示,
其中所述最小持续时间表示所述写入命令的到达与向所述主机装置传输所述指示之间的最小延迟,
其中在所述时间实例处传输使得观察到的延迟能够保持在所述实际延迟的平均值的预定公差之内,
其中所述观察到的延迟基于所述写入命令的到达与所述传输之间的时间差而确定,
其中所述多个计数器中的第一计数器指示写入命令的总数,并且在接收到所述写入命令时递增,并且
其中第二和后续计数器中的每一个对应于延迟违规的类型,并且在确定所述延迟超过多个阈值中的相应阈值时递增。
2.根据权利要求1所述的方法,其中更新所述最小持续时间的值进一步基于所述最小持续时间的稳态值。
3.根据权利要求1所述的方法,其中更新所述最小持续时间的值进一步基于闪存转换层事件即FTL事件的发生。
4.根据权利要求1所述的方法,其中所述非易失性存储器装置是NAND闪存装置。
5.根据权利要求1所述的方法,其中所述多个计数器包括三个计数器,其中所述多个阈值中的第一阈值在所述最小持续时间的值的110%至125%之间,并且其中所述多个阈值中的第二阈值是所述最小持续时间的值的两倍。
6.根据权利要求1所述的方法,其中所述多个计数器包括三个计数器,其中所述多个阈值中的第一阈值超过所述最小持续时间的值5微秒,并且其中所述多个阈值中的第二阈值是所述最小持续时间的值的两倍。
7.根据权利要求1所述的方法,其中所述最小持续时间的初始值是预定的。
8.根据权利要求1所述的方法,进一步包括:
基于所述多个计数器来更新第一寄存器,所述第一寄存器存储与自最近的延迟违规以来命令的持续时间或数量相对应的方法的状态,其中所述状态是0至N范围内的整数,其中状态0对应于在预定量的时间内已经发生的最近延迟违规,并且其中状态N对应于在稳态下操作的方法。
9.根据权利要求8所述的方法,进一步包括:
基于所述多个计数器来更新第二寄存器,所述第二寄存器存储与所述方法在稳态下操作的最近时间相对应的所述最小持续时间的值。
10.一种用于保持非易失性存储器装置中的一致写入延迟的系统,包括:
处理器与存储器,所述存储器包括所述存储器上存储的指令,其中所述指令在被所述处理器运行时使所述处理器:
从主机装置接收写入命令;
基于所述写入命令的到达和所述写入命令的完成来计算所述写入命令的实际延迟;
基于所述实际延迟来递增多个计数器中的一个或多个;
基于所述递增之后的所述多个计数器来更新最小持续时间的值;并且
在基于所述最小持续时间的更新值确定的时间实例处,向所述主机装置传输写入命令完成的指示,
其中所述最小持续时间表示所述写入命令的到达与向所述主机装置传输所述指示之间的最小延迟,
其中在所述时间实例处传输使得观察到的延迟能够保持在所述实际延迟的平均值的预定公差之内,
其中所述观察到的延迟基于所述写入命令的到达与所述传输之间的时间差而确定,
其中所述多个计数器中的第一计数器指示写入命令的总数,并且在接收到所述写入命令时递增,并且
其中第二和后续计数器中的每一个对应于延迟违规的类型,并且在确定所述延迟超过多个阈值中的相应阈值时递增。
11.根据权利要求10所述的系统,其中更新所述最小持续时间的值进一步基于所述最小持续时间的稳态值。
12.根据权利要求10所述的系统,其中更新所述最小持续时间的值进一步基于闪存转换层事件即FTL事件的发生。
13.根据权利要求10所述的系统,其中所述多个计数器包括三个计数器,其中所述多个阈值中的第一阈值在所述最小持续时间的值的110%至125%之间,并且其中所述多个阈值中的第二阈值是所述最小持续时间的值的两倍。
14.根据权利要求10所述的系统,其中所述处理器进一步:
基于所述多个计数器来更新第一寄存器,所述第一寄存器存储与自最近的延迟违规以来命令的持续时间或数量相对应的方法的状态,其中所述状态是0至N范围内的整数,其中状态0对应于在预定量的时间内已经发生的最近延迟违规,并且其中状态N对应于在稳态下操作的方法。
15.根据权利要求14所述的系统,其中所述处理器进一步:
基于所述多个计数器来更新第二寄存器,所述第二寄存器存储与所述方法在稳态下操作的最近时间相对应的所述最小持续时间的值。
16.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有保持非易失性存储器装置中的一致写入延迟的指令,所述非暂时性计算机可读存储介质包括:
从主机装置接收写入命令的指令;
基于所述写入命令的到达和所述写入命令的完成来计算所述写入命令的实际延迟的指令;
基于所述实际延迟来递增多个计数器中的一个或多个的指令;
基于所述递增之后的所述多个计数器来更新最小持续时间的值的指令;以及
在基于所述最小持续时间的更新值确定的时间实例处,向所述主机装置传输写入命令完成的指示的指令,
其中所述最小持续时间表示所述写入命令的到达与向所述主机装置传输所述指示之间的最小延迟,
其中在所述时间实例处传输使得观察到的延迟能够保持在所述实际延迟的平均值的预定公差之内,
其中所述观察到的延迟基于所述写入命令的到达与所述传输之间的时间差而确定,
其中所述多个计数器中的第一计数器指示写入命令的总数,并且在接收到所述写入命令时递增,并且
其中第二和后续计数器中的每一个对应于延迟违规的类型,并且在确定所述延迟超过多个阈值中的相应阈值时递增。
17.根据权利要求16所述的存储介质,其中更新所述最小持续时间的值的指令进一步基于所述最小持续时间的稳态值。
18.根据权利要求16所述的存储介质,其中更新所述最小持续时间的值的指令进一步基于闪存转换层事件即FTL事件的发生。
19.根据权利要求16所述的存储介质,其中所述非易失性存储器装置是NAND闪存装置。
20.根据权利要求16所述的存储介质,其中所述多个计数器包括三个计数器,其中所述多个阈值中的第一阈值在所述最小持续时间的值的110%至125%之间,并且其中所述多个阈值中的第二阈值是所述最小持续时间的值的两倍。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/868,367 | 2020-05-06 | ||
US16/868,367 US11106366B1 (en) | 2020-05-06 | 2020-05-06 | Maintaining consistent write latencies in non-volatile memory devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113625939A CN113625939A (zh) | 2021-11-09 |
CN113625939B true CN113625939B (zh) | 2023-10-20 |
Family
ID=77465074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110256317.1A Active CN113625939B (zh) | 2020-05-06 | 2021-03-09 | 保持非易失性存储器装置中的一致写入延迟 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11106366B1 (zh) |
CN (1) | CN113625939B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230205455A1 (en) * | 2021-12-23 | 2023-06-29 | Micron Technology, Inc. | Adaptive Command Completion Timers |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137970A (zh) * | 2005-01-20 | 2008-03-05 | 桑迪士克股份有限公司 | 快闪存储器系统中内务处理操作的调度 |
US9389792B1 (en) * | 2015-12-07 | 2016-07-12 | International Business Machines Corporation | Reducing read-after-write errors in a non-volatile memory system using an old data copy |
US10002649B1 (en) * | 2017-02-23 | 2018-06-19 | Sandisk Technologies Llc | Preliminary ready indication for memory operations on non-volatile memory |
CN110780807A (zh) * | 2018-07-31 | 2020-02-11 | 马维尔国际贸易有限公司 | 控制固态驱动器的性能 |
CN111078146A (zh) * | 2019-12-13 | 2020-04-28 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
CN111105828A (zh) * | 2018-10-29 | 2020-05-05 | 美光科技公司 | Nand读取命令的动态延迟 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170091254A1 (en) * | 2015-09-24 | 2017-03-30 | Kshitij A. Doshi | Making volatile isolation transactions failure-atomic in non-volatile memory |
US11288185B2 (en) * | 2019-01-03 | 2022-03-29 | Silicon Motion, Inc. | Method and computer program product for performing data writes into a flash memory |
-
2020
- 2020-05-06 US US16/868,367 patent/US11106366B1/en active Active
-
2021
- 2021-03-09 CN CN202110256317.1A patent/CN113625939B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137970A (zh) * | 2005-01-20 | 2008-03-05 | 桑迪士克股份有限公司 | 快闪存储器系统中内务处理操作的调度 |
US9389792B1 (en) * | 2015-12-07 | 2016-07-12 | International Business Machines Corporation | Reducing read-after-write errors in a non-volatile memory system using an old data copy |
US10002649B1 (en) * | 2017-02-23 | 2018-06-19 | Sandisk Technologies Llc | Preliminary ready indication for memory operations on non-volatile memory |
CN110780807A (zh) * | 2018-07-31 | 2020-02-11 | 马维尔国际贸易有限公司 | 控制固态驱动器的性能 |
CN111105828A (zh) * | 2018-10-29 | 2020-05-05 | 美光科技公司 | Nand读取命令的动态延迟 |
CN111078146A (zh) * | 2019-12-13 | 2020-04-28 | 合肥兆芯电子有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
Also Published As
Publication number | Publication date |
---|---|
CN113625939A (zh) | 2021-11-09 |
US11106366B1 (en) | 2021-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20210077586A (ko) | Nand 메모리 내에서의 판독 방해를 방지하기 위한 기술들 | |
US11301388B2 (en) | Storage device using buffer memory in read reclaim operation | |
US9880605B2 (en) | Method and system for throttling power consumption | |
US8760921B2 (en) | Storage device and control method of nonvolatile memory | |
US20140281769A1 (en) | Memory system and memory controller | |
CN112447260B (zh) | 使用阈值电压分布之间的间隔来调整读取和写入电压 | |
TWI753777B (zh) | 具記憶體控制器的記憶體裝置及其資料保持方法 | |
WO2011067706A1 (en) | Intra-block memory wear leveling | |
US11532360B2 (en) | Memory system, memory device, and method for operating memory device | |
CN112486724B (zh) | 自适应软解码器的服务质量 | |
KR20210014564A (ko) | 비휘발성 메모리에서 에러 정정을 위한 패스트 페일 지원 | |
US9195406B2 (en) | Operation management in a memory device | |
CN117751345A (zh) | 存储器单元的选择性上电清除 | |
CN113625939B (zh) | 保持非易失性存储器装置中的一致写入延迟 | |
CN114664342A (zh) | Ufs装置及其操作方法 | |
CN114765047A (zh) | 非易失性存储器装置中的软读取阈值估计的高斯建模 | |
US20100077280A1 (en) | Semiconductor recording device | |
US12039190B2 (en) | Memory system and operating method of the memory system for calibrating a history read bias based on a number of error bits generated in a read operation | |
CN112086121B (zh) | 存储器近接干扰管理 | |
CN112562772B (zh) | 自适应低密度奇偶校验硬解码器 | |
TWI844591B (zh) | 減少基於校驗子的準循環解碼器的延遲 | |
US11082062B2 (en) | Hardware implementations of a quasi-cyclic syndrome decoder | |
US11544204B2 (en) | Memory system, memory controller and method for operating memory controller | |
CN118613872A (zh) | 存储器件的读操作中的读偏移补偿 | |
CN118335170A (zh) | 使用横向电荷迁移代理自优化校正读取偏移 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |