专利名称:快闪存储器轮询
专利类型:实用新型专利
专利申请号:CN202010227746.1
专利申请(专利权)人:西部数据技术公司
权利人地址:美国加利福尼亚州
专利发明(设计)人:孙超,胡信德,D.乌西尼克
专利摘要:一种数据存储装置(DSD)包含存储数据的快闪存储器。所述快闪存储器的部分基于编程/擦除(P/E)循环的数目和所述快闪存储器的所述部分的物理层级位置中的至少一个而分组为逻辑群组。监视每一逻辑群组的命令执行时延,且基于所述逻辑群组的所监视命令执行时延设定每一相应逻辑的至少一个轮询时间。所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间。
主权利要求:
1.一种数据存储装置,其包括:
快闪存储器,其用于存储数据;以及
控制器,其配置成:
至少部分地基于编程/擦除循环的数目将所述快闪存储器的部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延,其中所述命令执行时延指示从命令发出到命令完成的时间;且基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间。
2.根据权利要求1所述的数据存储装置,其中所述控制器进一步配置成通过计算以下中的至少一个来确定所述至少一个轮询时间:用于执行所述逻辑群组中的命令的平均时延、用于执行所述逻辑群组中的命令的时延的方差,以及用于执行所述逻辑群组中的命令的时延的标准偏差。
3.根据权利要求1所述的数据存储装置,其中所述控制器进一步配置成使用神经网络并使用所述逻辑群组的所述所监视命令执行时延作为到所述神经网络的输入来确定所述至少一个轮询时间。
4.根据权利要求1所述的数据存储装置,其中所述快闪存储器是3D快闪存储器,且其中所述控制器进一步配置成基于所述3D快闪存储器中所述部分的物理层级位置将所述快闪存储器的所述部分分组为所述多个逻辑群组。
5.根据权利要求1所述的数据存储装置,其中所述控制器进一步配置成基于所述多个逻辑群组中的逻辑群组的所述所监视命令执行时延调整所述逻辑群组的大小。
6.根据权利要求1所述的数据存储装置,其中所述控制器进一步配置成基于所述快闪存储器的所述部分的已更新编程/擦除循环数目执行以下操作中的至少一个:将新逻辑群组添加到所述多个逻辑群组,以及将所述快闪存储器的一个或多个部分重新分组为所述多个逻辑群组的不同逻辑群组。
7.根据权利要求6所述的数据存储装置,其中响应于所述将新逻辑群组添加到所述多个逻辑群组,所述控制器进一步配置成:针对所述多个逻辑群组的每一逻辑群组中的预定数目的命令监视每一相应逻辑群组的命令执行时延;且基于针对所述预定数目的命令的每一逻辑群组的所监视命令执行时延,设定每一相应逻辑群组的一个或多个轮询时间。
8.根据权利要求1所述的数据存储装置,其中在监视所述多个逻辑群组的每一逻辑群组的命令执行时延时,所述控制器进一步配置成:将每一逻辑群组的命令执行时延收集到相应队列中;且
对所述相应队列中的每一个中的所述命令执行时延执行一个或多个统计计算。
9.根据权利要求1所述的数据存储装置,其中每一逻辑群组的所述至少一个轮询时间包含初始轮询时间和间隔轮询时间,所述初始轮询时间指示在初始地检查所述快闪存储器中的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间,所述间隔轮询时间指示在初始地检查所述快闪存储器的在所述逻辑群组中的所述部分是否已完成所述命令并确定所述快闪存储器的所述部分尚未完成所述命令之后要等待的时间,且其中所述控制器进一步配置成相比于设定所述初始轮询时间而不太频繁设定所述间隔轮询时间。
10.根据权利要求1所述的数据存储装置,其中每一逻辑群组的所述至少一个轮询时间包含初始轮询时间,所述初始轮询时间指示在初始地检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间,且其中所述控制器进一步配置成:
计算所述逻辑群组的平均命令执行时延;
计算所述逻辑群组的所述命令执行时延的标准偏差;
通过从所述平均命令执行时延中减去所计算的标准偏差来估计所述逻辑群组的经校正平均命令执行时延;且将所估计的经校正平均命令执行时延设定为所述初始轮询时间。
11.一种用于操作数据存储装置的方法,所述数据存储装置包含用于存储数据的快闪存储器,所述方法包括:基于编程/擦除循环的数目和所述快闪存储器中的部分的物理层级位置中的至少一个将所述快闪存储器的所述部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延,其中所述命令执行时延指示从命令发出到命令完成的时间;以及基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间;且其中所述方法由所述数据存储装置的控制器执行。
12.根据权利要求11所述的方法,其进一步包括通过计算以下中的至少一个来确定所述至少一个轮询时间:用于执行所述逻辑群组中的命令的平均时延、用于执行所述逻辑群组中的命令的时延的方差,以及用于执行所述逻辑群组中的命令的时延的标准偏差。
13.根据权利要求11所述的方法,其进一步包括使用神经网络并使用所述逻辑群组的所述所监视命令执行时延作为到所述神经网络的输入来确定所述至少一个轮询时间。
14.根据权利要求11所述的方法,其进一步包括基于所述多个逻辑群组中的逻辑群组的所述所监视命令执行时延调整所述逻辑群组的大小。
15.根据权利要求11所述的方法,其进一步包括基于所述快闪存储器的所述部分的已更新编程/擦除循环数目执行以下操作中的至少一个:将新逻辑群组添加到所述多个逻辑群组,以及将所述快闪存储器的一个或多个部分重新分组为所述多个逻辑群组的不同逻辑群组。
16.根据权利要求15所述的方法,其中响应于所述将新逻辑群组添加到所述多个逻辑群组,所述方法进一步包括:针对所述多个逻辑群组的每一逻辑群组中的预定数目的命令监视每一相应逻辑群组的命令执行时延;以及基于针对所述预定数目的命令的每一逻辑群组的所监视命令执行时延,设定每一相应逻辑群组的一个或多个轮询时间。
17.根据权利要求11所述的方法,其中在监视所述多个逻辑群组的每一逻辑群组的命令执行时延时,所述方法进一步包括:将所述逻辑群组的命令执行时延收集到相应队列中;以及
对所述相应队列中的每一个中的所述命令执行时延执行一个或多个统计计算。
18.根据权利要求11所述的方法,其中每一逻辑群组的所述至少一个轮询时间包含初始轮询时间和间隔轮询时间,所述初始轮询时间指示在初始地检查所述快闪存储器中的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间,所述间隔轮询时间指示在初始地检查所述快闪存储器的在所述逻辑群组中的所述部分是否已完成所述命令并确定所述快闪存储器的所述部分尚未完成所述命令之后要等待的时间,且其中所述方法进一步包括相比于设定所述初始轮询时间而不太频繁设定所述间隔轮询时间。
19.根据权利要求11所述的方法,其中每一逻辑群组的所述至少一个轮询时间包含初始轮询时间,所述初始轮询时间指示在初始地检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间,且其中所述方法进一步包括:
计算所述逻辑群组的平均命令执行时延;
计算所述逻辑群组的所述命令执行时延的标准偏差;
通过从所述平均命令执行时延中减去所计算的标准偏差来估计所述逻辑群组的经校正平均命令执行时延;以及将所估计的经校正平均命令执行时延设定为所述初始轮询时间。
20.一种存储计算机可执行指令的非暂时性计算机可读介质,其中当所述计算机可执行指令由包含快闪存储器的数据存储装置的控制器执行时,所述计算机可执行指令致使所述控制器;
至少部分地基于编程/擦除循环的数目将所述快闪存储器的部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延,其中所述命令执行时延指示从命令发出到命令完成的时间;且基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间。
21.一种数据存储设备(DSD),包括:
快闪存储器,其用于存储数据;以及
控制器,其配置成:
至少部分地基于编程/擦除(P/E)循环的数目将所述快闪存储器的部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延;其中所述命令执行时延指示从命令发出到命令完成的时间;
基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间;
基于所述快闪存储器的所述部分的已更新编程/擦除循环数目执行以下操作中的至少一个:将新逻辑群组添加到所述多个逻辑群组,以及将所述快闪存储器的一个或多个部分重新分组为所述多个逻辑群组的不同逻辑群组;
响应于所述将新逻辑群组添加到所述多个逻辑群组,针对所述多个逻辑群组的每一逻辑群组中的预定数目的命令监视每一相应逻辑群组的命令执行时延;且基于针对所述预定数目的命令的每一逻辑群组的所监视命令执行时延,设定每一相应逻辑群组的一个或多个轮询时间。
22.一种数据存储设备(DSD),包括:
快闪存储器,其用于存储数据;以及
控制器,其配置成:
至少部分地基于编程/擦除(P/E)循环的数目将所述快闪存储器的部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延;其中所述命令执行时延指示从命令发出到命令完成的时间;
基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间;以及相比于设定初始轮询时间而不太频繁设定间隔轮询时间,其中所述初始轮询时间指示在初始地检查所述快闪存储器中的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间,所述间隔轮询时间指示在初始地检查所述快闪存储器的在所述逻辑群组中的所述部分是否已完成所述命令并确定所述快闪存储器的所述部分尚未完成所述命令之后要等待的时间。
23.一种数据存储设备(DSD),包括:
快闪存储器,其用于存储数据;以及
控制器,其配置成:
至少部分地基于编程/擦除(P/E)循环的数目将所述快闪存储器的部分分组为多个逻辑群组;
监视所述多个逻辑群组的每一逻辑群组的命令执行时延,其中所述命令执行时延指示从命令发出到命令完成的时间;
基于每一逻辑群组的所监视命令执行时延,设定所述多个逻辑群组的每一相应逻辑群组的至少一个轮询时间,其中所述至少一个轮询时间指示在检查所述快闪存储器的在所述逻辑群组中的一部分是否已完成命令之前要等待的时间;
计算所述逻辑群组的平均命令执行时延;
计算所述逻辑群组的所述命令执行时延的标准偏差;
通过从所述平均命令执行时延中减去所计算的标准偏差来估计所述逻辑群组的经校正平均命令执行时延;以及将所估计的经校正平均命令执行时延设定为初始轮询时间,所述初始轮询时间指示在初始地检查所述快闪存储器中的在所述逻辑群组中的一部分是否已完成所述命令之前要等待的时间。 说明书 : 快闪存储器轮询背景技术[0001] 数据存储装置(DSD)常常用于将数据记录到存储介质上或从存储介质再现数据。一种类型的存储介质包含快闪存储器,例如NAND闪存。在此类DSD中,控制器可能需要等待一个命令完成(例如擦除NAND存储器块或执行写入命令的命令),才可执行相同裸片中的另一命令(例如读取命令)。控制器在将下一命令发布到裸片之前等待,直至来自裸片的状态指示裸片准备好或可用于执行下一命令。在某些情况下,控制器可从裸片上的专用引脚接收裸片的状态。然而,因为DSD的大小已随NAND闪存裸片增多而增大,所以使用专用引脚来确定裸片是否正忙已经变得不可行,因为没有到每一裸片的控制器的足够的引脚或连接。[0002] 确定裸片是否正忙的更为新近的方法包含使用状态轮询。在此方法中,控制器在存储器总线上将状态请求发送到裸片以确定裸片是否正忙。控制器通常在到裸片的命令之后在请求状态之前等待初始时间周期或初始轮询时间。状态请求可以特定频率或间隔轮询时间重复直至裸片传回就绪状态。[0003] 如果轮询时间太短,则DSD的资源被由过多轮询请求形成的准备、跟踪和总线业务浪费。另一方面,如果轮询时间太长,则快闪存储器的效率或性能依据给定时间周期中可执行的命令数目(例如,输入/输出操作/秒(IOPS))被浪费,因为快闪存储器裸片通常可用于在接收控制器的上一状态请求之前执行下一命令。附图说明[0004] 本公开的实施例的特征和优点将从下文结合附图所阐述的详细描述变得更显而易见。提供附图和相关联的描述以说明本公开的实施例,并且不限制所要求的权利要求的范围。[0005] 图1是根据一实施例的数据存储装置(DSD)和主机的框图。[0006] 图2示出根据一实施例的轮询时间和命令执行时延的实例。[0007] 图3示出根据一实施例将快闪存储器的部分分组为逻辑群组的实例。[0008] 图4是根据一实施例的图3的逻辑群组的所监视命令执行时延的实例。[0009] 图5是根据一实施例针对图3的逻辑群组的不同类型的操作设定的轮询时间的实例。[0010] 图6是根据一实施例的轮询时间设定过程的流程图。[0011] 图7示出根据一实施例使用神经网络来确定逻辑群组的轮询时间的实例。[0012] 图8是根据一实施例的逻辑群组调整过程的流程图。具体实施方式[0013] 在以下详细描述中,阐述众多具体细节以提供对本公开的充分理解。然而,所属领域的一般技术人员将明白,可在没有这些具体细节中的一些的情况下实践所公开的各种实施例。在其它情况下,未详细展示众所周知的结构和技术以免不必要地混淆各种实施例。[0014] 示例系统[0015] 图1展示根据一实施例与主机101通信的数据存储装置(DSD)102的实例。主机101与DSD102通信以从DSD102检索数据以及将数据存储在DSD102中。在一些实施方案中,DSD102可包含(例如)通用串行总线(USB)驱动器或其它类型的固态驱动器(SSD),或可包含例如安全数字(SD)卡等存储卡。DSD102和主机101可以是单独的装置,或可一起容纳作为单个电子装置的一部分,所述电子装置例如台式、膝上型或笔记本计算机或另一类型的电子装置,例如平板电脑、智能电话、网络媒体播放器、便携式媒体播放器、电视机、数码相机或数字录像机(DVR)。如本文中所使用,主机可以指能够向DSD发布存储数据或检索数据的命令的装置。在此方面,主机101可包含能够执行应用且与其它DSD通信的例如智能DSD等另一存储装置。[0016] 在图1中,DSD102的主机接口104配置成使用例如串行高级技术附件(SATA)、快速PCI(PCIexpress,PCIe)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、USB、以太网、光纤信道或WiFi等标准与主机101介接。在此方面,主机101和DSD102可不以物理方式协同定位,且可经由例如局域网(LAN)或广域网(WAN)(例如因特网)等网络通信。此外,主机接口104还可使用例如快速非易失性存储器(Non‑VolatileMemoryexpress,NVMe)或高级主机控制器接口(AHCI)等可由主机101处执行的驱动器实施的逻辑接口规范来与主机101介接。如所属领域的一般技术人员将了解,主机接口104可被包含作为DSD102的控制电路106的一部分。[0017] 控制电路106可包含用于执行指令的例如一个或多个处理器等电路,且可包含例如微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬接线逻辑、模拟电路和/或其组合。在一些实施方案中,控制电路106可包含芯片上系统(SoC)。控制电路106可存取随机存取存储器(RAM)112来执行例如来自固件10的用于控制DSD102的操作的指令。[0018] RAM112可包含例如易失性RAM(例如,动态RAM(DRAM))、非易失性RAM或其它固态存储器。虽然本文中的描述大体参考固态存储器,但应理解,固态存储器可包括各种类型的存储器装置中的一个或多个,例如快闪集成电路、硫族化物RAM(C‑RAM)、相变存储器(PC‑RAM或PRAM)、可编程金属化单元RAM(PMC‑RAM或PMCm)、双向通用存储器(OUM)、电阻性RAM(RRAM)、NAND存储器(例如,单级单元(SLC)存储器、多级单元(MLC)存储器(即,两个或两个以上层级)或其任何组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻式RAM(MRAM)、其它离散NVM芯片或其任何组合。[0019] 在图1的实例中,RAM112可由DSD102使用来存储由控制电路106使用的数据。存储在RAM112中的数据可包含从快闪存储器108读取的数据、待存储在快闪存储器108中的数据、从固件10加载用于由控制电路106执行的指令,和/或在执行固件10时使用的数据。如下文更详细地论述,此类数据可包含时延数据队列14,其可包含已由固件10的监视模块12收集或监视的快闪存储器108的不同逻辑群组的命令执行时延。此外,RAM112可存储针对快闪存储器108的不同部分设定的轮询时间16,如下文更详细地论述。如所属领域的一般技术人员将了解,固件10、时延数据队列14和轮询时间16中的一些或全部可存储在除RAM112外的其它一个或多个存储器中,例如快闪存储器108和/或控制电路106的存储器中。[0020] 快闪存储器108包含裸片1101到110N,其各自包含块,块是存储器的可擦除的最小单位。如所属领域的一般技术人员所理解,快闪存储器块内的页是存储器的一次可写入的最小单位,但页仅可在块层级处擦除。数据通常仅可在页中写入或编程,其中页中的所有单元已经被擦除或设定为值1。在一些实施方案中,快闪存储器108可包含MLC存储器(即,具有两个或两个以上层级/单元)以允许将多个位存储在给定单元中。其它实施方案可包含SLC存储器,其中每单元仅存储一个位。[0021] 为了将先前已经写入到值0的单元改变回到值1,通常需要首先将整个块中的所有单元擦除回到擦除值1。因此,为了改变页中先前写入的数据,来自所述页的数据通常必须重写到新擦除页,或如果擦除页不可用则需要擦除整个块。接着将旧页指示为存储无效或过时的数据,且旧页在擦除其块之后变为可用于再次写入。这种写入(即,编程)和擦除块的循环被称为编程/擦除(P/E)循环。依据在块被P/E循环过度损坏或磨损而不能可靠地存储数据之前块可经历的P/E循环的数目,不同类型的快闪存储器具有不同水平的持久性。[0022] 根据一个方面,本公开包含基于P/E循环的数目和用以设定用于确定逻辑群组中的快闪存储器的一部分是否已完成命令的至少一个轮询时间的物理位置中的至少一个,将快闪存储器的例如页或块等部分逻辑上分组为不同逻辑群组。尽管快闪存储器的可用性通常取决于特定裸片是否当前正执行命令,但本公开的逻辑群组可反常地包含快闪存储器108的在不同裸片中的部分,例如来自图1中的裸片1101和1102两者的块和页。[0023] 每一逻辑群组的所监视命令执行时延可用于更精确地调谐或调整并非太长或太短的轮询时间。如上所述,太长的轮询时间会浪费时间来等待快闪存储器的裸片变为可用。另一方面,太短的轮询时间会因太多状态请求而浪费处理资源(例如,发送和跟踪状态请求)以及控制电路106和快闪存储器108之间的通信资源(例如,存储器总线业务)。本发明人发现,命令执行时延或完成命令的时间可能在快闪存储器的具有不同使用量或P/E循环数目的部分之间极大地变化,且可基于P/E循环数目更精确地调整轮询时间。[0024] 此外,在其中快闪存储器108为竖直地堆叠存储器单元的3DNAND(即,V‑NAND)的实施方案中,快闪存储器108的部分可依据其在堆叠中的不同物理层级位置来分组或进一步分组。举例来说,快闪存储器108的部分可由指示所述部分在特定层级上方还是下方的字线(WL)层级来分组,例如用于单元的十二个上部层级的第一WL层级和用于单元的十二个下部层级的第二WL层级。不同物理层级位置的每一逻辑群组的所监视命令执行时延可用于准确地调谐或调整轮询时间。在此方面,本发明人发现,命令执行时延或完成命令的时间还可能在快闪存储器的处于不同物理层级位置的部分之间极大地变化,且可基于物理层级位置更精确地调整轮询时间。[0025] 在一些实施方案中,例如WL层级等不同物理位置的不同命令执行时延可离线确定为特定DSD或者特定代或类型的快闪存储器的工厂过程的一部分,其方式是:基于命令执行时延的统计评估,例如通过使用集群算法或基于动态阈值的算法对具有类似命令执行时延的不同物理位置进行集群或识别。基于物理位置的命令执行时延的所识别变化可针对固件10设定为固件10的物理划界,以在对快闪存储器108的部分进行逻辑分组时使用。在其它情况下,固件10可执行具有不同命令执行的物理位置的其自身的集群或识别,作为由DSD制造商为固件10设定的默认物理位置划界的补充或替代。[0026] 所属领域的一般技术人员将了解,其它实施方案可包含比图1中展示的元件多或少的元件,且所公开的过程可在其它环境中实施。举例来说,其它实施例可包含不同数目的主机、DSD或非易失性存储装置类型。举例来说,其它实施方案中的DSD102可包含额外快闪存储器,例如其中DSD102包含快闪存储器阵列。在另一实例中,DSD102除快闪存储器108外还可包含旋转磁盘,使得DSD102被视为固态混合驱动器(SSHD)。[0027] 图2示出根据一实施例的轮询时间和命令执行时延的实例。如图2中所展示,控制电路106在将第一状态或轮询请求(即,图2中的P0)发送到裸片110之前等待初始轮询时间T0以确定裸片110的一部分是否已完成命令,以及裸片110是否可用于执行另一命令。如果命令完成状态未由裸片110在P0之后的间隔轮询时间内传回,则控制电路106发送第二状态请求(即,图2中的P1)。如下文参看图5更详细地论述,初始轮询时间T0和/或间隔轮询时间Tint可取决于裸片110的部分(例如,页或块)的逻辑分组,其中依据所述部分的P/E循环数目和所述部分的物理位置(例如,3DNAND中的物理层级位置)中的至少一个执行命令。轮询时间还可取决于命令的类型。举例来说,对于相同页或块,读取命令、写入命令和擦除命令可具有不同轮询时间。[0028] 在图2的实例中,间隔轮询时间小于初始轮询时间。在其它实例中,可仅存在一个轮询时间,因此初始轮询时间和间隔轮询时间相同。轮询时间可初始地基于预期或所规定的命令执行时延来设定。举例来说,可在DSD102的制造过程期间基于相同类型的快闪存储器的典型或预期读取命令时延加上一组实验读取命令执行时延中的标准偏差来最初设定所有读取命令的初始轮询时间,且可将间隔轮询时间初始地设定为实验组的标准偏差。[0029] 在DSD102的操作期间,可随时间基于所观察或所监视命令执行时延来调整或调谐不同逻辑群组的轮询时间,如下文相对于图3的实例更详细地描述。取决于P/E循环数目和/或物理位置基于快闪存储器108的不同部分的群组的所监视执行而进行的这种调整可通常允许在以下方面较好地平衡DSD使用寿命期间的轮询时间:不会等待太长时间来请求状态,同时不需要相同命令的太多状态请求而浪费DSD102的处理和通信资源。[0030] 监视模块12可根据图2中展示的状态请求的数目估计命令执行时延。所观察或估计的时延可表示为T=T0+Tint×N,其中N是在初始轮询请求P0之后的在传回“就绪”状态之前发送的轮询请求的数目。在图2的实例中,N为5,因此图2中的命令的所估计或所观察命令执行时延等于T0+5Tint。监视模块12可接着将所估计或所观察时延存储在快闪存储器108的所述部分的时延数据队列14中。[0031] 图3示出基于P/E循环数目和物理层级位置将快闪存储器108的部分分组为逻辑群组的实例。如图3中所展示,逻辑群组180和181包含快闪存储器108的具有0与100个之间(包含0和100)的P/E循环(即,少于101个P/E循环)的部分(例如块或页)。逻辑群组180和181依据其物理位置进一步分组为在WL层级上方或下方。逻辑群组180的WL0指示,逻辑群组180中的快闪存储器108的部分在特定堆叠高度下方,例如处于底部十二个单元层中。另一方面,逻辑群组181的WL1指示,快闪存储器108的部分在特定堆叠高度上方,例如处于顶部十二个单元层中。[0032] 如图3中所展示,P/E循环群组18内的逻辑群组的相对大小不需要为相同的。在此方面,相比于逻辑群组180,快闪存储器108的更多部分(例如,块或页)在逻辑群组181中。在其它实施方案中,P/E循环群组可基于更多WL层级或基于其它物理位置划界进一步再分组为更多逻辑子群组,例如基于裸片或包含多个裸片的平面物理位置进行再分组。[0033] 在图3的实例中,逻辑群组201和202包含快闪存储器108的具有101到1,000个之间(包含101和1,000)的P/E循环(即,多于100个P/E循环且少于1,001个P/E循环)的部分。逻辑群组201和202依据其物理位置进一步再分组为在WL层级上方或下方。逻辑群组200的WL0指示逻辑群组200中的快闪存储器108的部分在特定堆叠高度下方,且逻辑群组201的WL1指示逻辑群组201中的部分在特定堆叠高度上方。如图3中所展示,逻辑群组或子群组的相对大小可取决于其使用(例如,P/E循环)和/或物理位置而具有不同大小。举例来说,P/E群组18的大小大于P/E群组20的大小。随着快闪存储器108的使用增加,快闪存储器的部分可从P/E群组18重新分组到P/E群组20,它们可具有与P/E群组20不同的轮询时间以反映快闪存储器108的这些部分的使用增加。[0034] 在一些实施方案中,固件10跟踪块层级和/或页层级上所述部分的P/E循环数目,且维持块或页的物理层级位置的指示使得快闪存储器108的所述部分可由控制电路106逻辑上分组。在许多情况下,例如P/E循环数目等信息还用于快闪存储器108的其它维护操作,例如用于耗损均衡以扩展快闪存储器108的使用和延长快闪存储器108的可使用寿命。然而,即使利用耗损均衡,快闪存储器108的不同部分的P/E循环数目的差异也可能影响命令执行时延。本公开可在设定轮询时间的过程中考虑此些差异。[0035] 其它实施方案可包含较多逻辑群组。在此方面,且如下文更详细地论述,可随时间基于逻辑群组的所监视命令执行时延调整逻辑群组的大小。群组大小的此调整通常允许较好调适的轮询时间以进一步改进快闪存储器108的执行效率(例如,IOPS)。此外,大小、逻辑分组和/或逻辑分组的数目可在快闪存储器108的整个寿命中随着P/E循环数目增加而改变。这通常允许在在请求命令状态之前等待太长时间与太快请求命令状态之间提供轮询时间的较好平衡的过程中考虑快闪存储器108的不同部分的不同使用情况。[0036] 图4是图3的逻辑群组的所监视命令执行时延的实例。在图4的实例中,将每一逻辑群组的命令执行时延收集到相应时延数据队列14中。更详细地,命令执行时延a0到an收集到逻辑群组180的队列140中,命令执行时延b0到bn收集到逻辑群组181的队列141中,命令执行时延c0到cn收集到逻辑群组200的队列142中,且命令执行时延d0到dn收集到逻辑群组201的队列143中。[0037] 命令执行时延可包含例如针对例如写入命令、读取命令或擦除命令等特定类型的命令在命令完成状态从快闪存储器108传回到控制电路106之前的时间或时间量的指示。在此方面,一些实施方案可包含用于每种类型的命令的单独的时延数据队列。此外,监视模块12可仅周期性地监视或收集对应于时延数据队列14的大小的预定数目的命令的命令执行时延,例如在给定某一天、周或月内用于每一逻辑群组的前1,000个写入命令。[0038] 如下文更详细地论述,用于每一逻辑群组的命令执行时延的集合可允许使用命令执行时延作为输入而应用统计计算和/或例如神经网络等机器学习(ML)算法的使用。在一些实施方案中,此可包含执行例如针对每一逻辑群组收集的命令执行时延的平均命令执行时延和标准偏差等一个或多个统计计算。控制电路106可接着使用此类输出或计算来设定逻辑群组的新轮询时间,借此将轮询时间调谐到包含在逻辑群组中的快闪存储器108的特定部分。[0039] 每一逻辑群组的时延数据队列的使用可允许为每一逻辑群组收集足够的时延数据(例如,命令执行时延)来更新逻辑群组的至少一个轮询时间。然而,其它实施方案可使用在线算法来连续地监视和更新轮询时间。相比于连续地监视命令执行时延和连续地计算新轮询时间,针对每一逻辑群组使用具有预定大小的队列可节省处理和存储器资源。举例来说,假定1,000个条目的队列大小和用于16个裸片的逻辑群组,每一个具有两个不同的P/E循环范围和96个WL层级,且队列中的每一时延数据值消耗4个字节,则对于每一裸片来说,例如RAM112中消耗的总存储器空间将为768KB乘以16。[0040] 图5是针对不同类型的操作为图4的逻辑群组设定的轮询时间的实例。如图5中所展示,为不同逻辑群组180、181、200和201设定包含初始轮询时间T0和间隔轮询时间Tint的不同轮询时间。轮询时间可存储为例如用于读取命令的轮询时间160、用于编程命令(即,写入命令)的轮询时间161和用于擦除命令的轮询时间162。[0041] 用于读取命令的轮询时间160通常短于编程轮询时间161和擦除轮询时间162。这是归因于与编程和擦除命令相比,快闪存储器108中的读取命令通常更快速地执行。在此方面,本公开中轮询时间的设定可在某些状况下对于读取命令最为显著,这是因为读取命令之后的较多延迟可能归因于因(否则)低效的轮询时间而浪费的时间。本文中所描述的轮询时间设定过程尤其可用于确保读取命令的指定服务质量(QoS)。[0042] 如上所述,针对快闪存储器108的已经依据使用(例如,依据P/E循环数目)和/或依据物理位置(例如,依据3D‑NAND中的物理层级位置)逻辑上分组的不同部分使用不同轮询时间可改进快闪存储器108的执行效率,使得控制电路106不会发布太多或太少状态请求。如图5的示例轮询时间中所展示,逻辑群组200和201的增加的使用或P/E循环数目通常导致与具有较低P/E循环数目的逻辑群组180和181相比更长的轮询时间。[0043] 如上文参看图4所论述,图5中设定的轮询时间可随时间基于不同逻辑群组的命令执行时延的经更新的监视来调整。此外,逻辑群组的大小和数目可随时间改变。轮询时间16的其它实施方案可包含不同数目的轮询时间类型,例如仅包含单个轮询时间或包含初始轮询时间、第二轮询时间和将在第二轮询时间之后使用的间隔轮询时间。[0044] 示例过程[0045] 图6是根据一实施例的轮询时间设定过程的流程图。轮询时间设定过程可例如在更新先前设定的轮询时间的现场执行或作为工厂初始化过程的一部分使用通过控制电路106执行图1中的固件10而执行的实验命令来执行。在其它实施方案中,轮询时间设定过程可由主机(例如,图1中的主机101)或其它装置在现场执行或作为执行DSD102的驱动器或工厂初始化模块的工厂初始化过程的一部分来执行。[0046] 在框602中,基于P/E循环数目和物理位置中的至少一个将快闪存储器108的部分分组为多个逻辑群组。在一些实施方案中,逻辑群组可使用例如100个P/E循环和500个P/E循环等一个或多个P/E循环阈值来确定。基于物理位置的逻辑分组可考虑例如快闪存储器108的部分的物理位置竖直地位于3DNAND快闪存储器中的特定WL层级上方还是下方。在其它实施例中,快闪存储器108的部分可基于另一类型的物理位置逻辑上分组,例如快闪存储器108的部分是否处于快闪存储器108的特定平面或裸片中。[0047] 在框604中,监视所述多个逻辑群组的每一逻辑群组的命令执行时延。命令执行时延可包含例如从发出命令直至命令完成状态传回到控制电路106的时间或时间的指示。在一些实施方案中,命令执行时延的监视可由监视模块12针对预定数目的命令或在预定时间周期内执行。所监视命令执行时延还可分为不同类型的命令(例如,编程/写入、读取和擦除命令)。命令执行时延可例如存储在相应时延数据队列(例如,图1和4中的时延数据队列14)中以供由控制电路106进一步处理。[0048] 在框606中,通过执行一个或多个统计计算且任选地使用神经网络针对每一逻辑群组确定至少一个轮询时间,所述神经网络使用所监视命令执行时延作为对于逻辑群组的输入。在一些实施方案中,用于执行逻辑群组中的命令的平均时延、时延值的方差和时延值的标准偏差中的至少一个可用于确定逻辑群组的至少一个轮询时间。依据逻辑群组的命令执行时延计算的统计数据可用于改进轮询时间(即,轮询时间太长与轮询时间太短之间的较好平衡)。[0049] 在一些实施方案中,平均命令执行时延可设定为逻辑群组的初始轮询时间(即,图2中的T0),且所监视命令执行时延(即,逻辑群组的时延数据队列14中的命令执行时延)的标准偏差可设定为间隔轮询时间(即,图2中的Tint)。在另外其它实施方案中,经校正的平均命令执行时延可估计为初始轮询时间,其方式是从平均命令执行时延中减去命令执行时延的标准偏差。这通常可提供实际平均命令执行时延的更精确估计值,因为命令的实际完成是在接收最后一个状态请求之前的某一点发生。举例来说,在图2中,命令的实际完成在P4和P5之间发生,但为命令记录的命令执行时延包含P4和P5之间的整个时间。从平均命令执行时延中减去标准偏差通常提供更精确的初始轮询时间以考虑最后一个状态请求之前命令的实际完成。[0050] 此外,一些实施方案可相比于初始轮询时间而不太频繁更新或设定间隔轮询时间。在此方面,可用作间隔轮询时间的标准偏差与可用作初始轮询时间的平均命令执行时延或所估计的经校正平均命令执行时延相比通常随时间较少地改变。因为不以框606的每一迭代来计算标准偏差,所以可节省处理资源和存储器资源。举例来说,可以框606和608的每一迭代来确定和设定初始轮询时间T0,而仅可以框606和608的每一其它迭代来确定和设定间隔轮询时间Tint。[0051] 在一些实施方案中,随着所观察命令执行时延添加到时延数据队列14,可使用在线算法来更新或计算统计值,例如平均命令执行时延和方差或标准偏差。在一个实例中,Welford在线算法可用于计算方差以及在队列变满之后可设定为新间隔轮询时间(即,图2中的Tint)的依据方差计算的标准偏差。在此实例中,Welford在线算法可由固件10使用来利用以下等式计算示例方差(即, )或总方差(即, )。[0052][0053][0054][0055] 在上述等式中,M2n表示所观察时延xi与当前平均时延 之间的差的平方的总和,其中xn为当前所观察命令执行时延。M2,n‑1表示差的平方的先前总和,且 表示先前平均时延。在此方面,M2,n可表达为 控制电路106可接着计算示例方差 或总方差 的平方根以导出将设定为间隔轮询时间Tint的标准偏差。[0056] 在一些实施方案中,所观察或所监视命令执行时延可输入到神经网络以导出一个或多个轮询时间,如图7中展示的实例中。神经网络可包含输入层和输出层,以及输入层和输出层之间的任何数目的中间、内部或“隐藏”层。个别层可包含任何数目的单独节点。每一层中的节点连接到后续层中的节点,且这些互连的强度通常从训练过程期间的数据习得。一旦经过训练,神经网络就可用于推断,也就是说,被提供新输入数据以便预测相应输出。邻近层的节点可逻辑上彼此连接,且邻近层的各个节点之间的每一逻辑连接可与相应权重相关联。[0057] 概念上,节点可认为是依据多个不同输入值计算输出值的计算单元。当到与当前节点相关联的函数的输入值包含与先前层中的节点相关联的函数的输出乘以与当前节点和先前层中的节点之间的个别“连接”相关联的权重时,可认为节点“已连接”。每一节点使输入的此加权和的结果经历非线性函数(例如,双弯曲函数、切线双曲函数、修正线性单元(RELU)函数等),然后将其输出到下一层节点。[0058] 这些连接的权重通常是从训练过程期间的数据例如经由反向传播而习得,其中网络参数被调谐以在给定经标记训练数据中的相应输入的情况下产生预期输出。神经网络可重复地处理输入数据,且神经网络的参数(例如,权重矩阵)可在相当于试错过程的过程中修改直至模型产生(或收敛于)大体上接近正确或优选输出的结果。因此,人工神经网络是配置成基于在训练期间流经网络的信息改变其结构(例如,连接配置和/或权重)的自适应系统,且隐藏层的权重可被视为数据中的有意义的模式的编码。[0059] 神经网络的训练可能需要大量处理资源和存储器资源。在一些实施方案中,训练神经网络来确定轮询时间可在闲置周期期间当DSD102不在服务于或执行其它命令时进行。或可初始地执行为工厂过程的一部分。具有其裸片之间的命令执行时延的较大方差的快闪存储器可能需要在现场重新训练神经网络,而具有命令执行时延的较小方差的快闪存储器可能仅需要训练神经网络一次。[0060] 此外,DSD102可包含用于训练神经网络的一个或多个加速器或专用处理器。在此方面,相比于嵌入式DSD,使用一个或多个神经网络来导出轮询时间可较好地适合于较大规模数据存储环境,例如SSD的阵列。在一些实施方案中,例如初始轮询时间T0和用于确定间隔轮询时间Tint的均方差(MSE)等神经网络的所推断结果或输出可存储在不同输入的查找表中以减小使用神经网络执行前馈处理的过程中的计算开销。[0061] 在图7的实例中,神经网络22可包含命令类型(例如,编程/写入命令、读取命令或擦除命令)、逻辑群组的WL层级(例如,图3中的WL0或WL1)、P/E群组(例如,图3中的P/E群组18或20)、所监视时延(例如,逻辑群组的时延数据队列14中收集的时延数据)和悬置值的输入,所述悬置值指示正用于逻辑群组的写入和/或擦除悬置的水平(例如,写入悬置或擦除悬置值0或1)。在此方面,写入悬置可推迟执行写入命令使得可较快地完成读取命令,且擦除悬置可推迟执行擦除命令使得可较快地完成读取命令。[0062] 在其它实施方案中,不同输入可由神经网络22使用。举例来说,在一些实施方案中,专用神经网络可用于每一逻辑群组,而非一个神经网络用于所有逻辑群组。到此类专用神经网络的输入将不包含P/E群组或WL层级输入,因为这些输入对于专用神经网络的每次使用将是相同的。[0063] 如图7中所展示,神经网络22的输出包含初始轮询时间T0,和可用于确定间隔轮询时间Tint的MSE。在图7的实例中,在输入层和输出层之间展示一个隐藏层,然而,神经网络的其它实施方案可包含较多隐藏层。此外,其它实施方案可包含不同输出,例如所推断命令完成时间或所推断Tint。[0064] 返回到图6的轮询时间设定过程,在框606中通过使用统计计算和/或一个或多个神经网络确定的一个或多个轮询时间在框608中设定为每一相应逻辑群组的一个或多个轮询时间。轮询时间可例如设定为图1或图5中展示的轮询时间16的一部分。如上所述,图6的轮询时间设定过程可用于使用实验命令初始地设定轮询时间或用于更新先前设定的轮询时间,例如在特定操作时间周期之后或在快闪存储器108的特定数目的P/E循环之后更新默认轮询时间。在此方面,轮询时间的设定可包含在新确定的轮询时间与先前轮询时间匹配的情况下维持与先前轮询时间相同的轮询时间。如下文参看图8更详细地论述,图6的轮询时间设定过程还可在改变逻辑群组数目或逻辑群组大小之后执行,例如在快闪存储器108的一个或多个部分重新分组为不同逻辑群组时执行。[0065] 图8是根据一实施例的逻辑群组调整过程的流程图。图8的逻辑群组调整过程可例如通过控制电路106执行固件10来执行。[0066] 在框802中,基于逻辑群组的所监视命令执行时延调整逻辑群组的大小。在一些实施方案中,可在新确定的初始轮询时间和先前初始轮询时间之间的差大于上限阈值时减小逻辑群组的大小,且可在新初始轮询时间和旧初始轮询时间之间的差小于下限阈值时增加逻辑群组的大小。在其它实施方案中,可使用单个阈值增加和减小逻辑群组大小,而非下限阈值和上限阈值,其中在下限阈值和上限阈值之间不对群组大小作出改变。此外,其它实施方案可改为在调整群组大小时考虑例如间隔轮询时间等不同轮询时间的改变。[0067] 群组大小的增加或减小可依据预定步长,例如快闪存储器108的落在逻辑群组的P/E循环范围和/或物理位置(例如,WL层级)内的页或块数目。逻辑群组的大小还可能受最大或最小大小限制。基于所监视命令执行动态地调整群组大小通常可改进轮询时间的效率,因为轮询时间的变化太大可指示逻辑群组内命令执行时延的方差太大。[0068] 在框804中,执行以下操作中的至少一个:添加新逻辑群组,以及基于已更新的P/E循环数目将快闪存储器108的一个或多个部分重新分组为不同逻辑群组。随着P/E循环数目随时间增加,快闪存储器108的某些部分将超出其群组的P/E循环数目的上限且被移动到新逻辑群组中。在不存在具有对于P/E循环的较高限制的下一逻辑群组的情况下,添加新逻辑群组。在此些情况下,可向上调整所有逻辑群组的P/E循环数目的范围或限制。[0069] 在框806中,确定是否添加新逻辑群组。如果否,则图8的逻辑群组调整过程在框812处结束。另一方面,如果在框804中基于已更新P/E循环数目添加了新逻辑群组,则在框808中针对预定数目的命令监视每一逻辑群组的命令执行时延,以便填充逻辑群组的时延数据队列14。如上所述,每一逻辑群组的时延数据队列的使用可允许为所述逻辑群组收集足够的时延数据(例如,命令执行时延)来更新逻辑群组的至少一个轮询时间。相比于连续地监视命令执行时延和连续地计算新轮询时间,这通常可允许节省处理资源和存储器资源。然而,其它实施方案可使用例如Welford在线算法等在线算法来连续地监视和更新轮询时间。[0070] 在框808中,针对预定数目的命令监视包含任何新添加的逻辑群组的每一逻辑群组的命令执行时延。举例来说,监视模块12可针对每一逻辑群组监视1,000个读取命令、1,000个写入命令和1,000个擦除命令以填充相应数据时延队列14。在其它实施方案中,可不监视未改变的逻辑群组,以便不会重新评估其轮询时间。然而,新逻辑群组的添加通常改变快闪存储器108的属于每一逻辑群组的部分,以便保证所有逻辑群组的轮询时间的重新评估。[0071] 在框810中,针对每一相应逻辑群组设定依据所监视命令执行时延确定的一个或多个轮询时间。在此方面,轮询时间的设定可包含在新确定的轮询时间与先前轮询时间匹配的情况下维持与先前轮询时间相同的轮询时间。在一些实施方案中,可基于在框808中监视的命令执行时延设定初始轮询时间(例如,图2中的T0)和间隔轮询时间(例如,Tint)。例如平均命令执行时延、命令执行时延的方差和命令执行时延的标准偏差等统计计算可用于确定在框810中设定的一个或多个轮询时间。一些实施方案可使用一个或多个神经网络作为此类统计计算的补充或替代,如上文参看图7所论述。[0072] 在某些情况下。可在框810中仅设定逻辑群组的轮询时间的子集。举例来说,可利用框810的每一迭代设定初始轮询时间,而例如间隔轮询时间等不同轮询时间仅可利用框810的每四个迭代的方式设定。图8的逻辑群组调整过程以框812结束。[0073] 如上文所论述,基于P/E循环数目和物理位置中的至少一个将快闪存储器的部分分组为逻辑群组可允许改进用于确定快闪存储器的部分在执行命令之后何时可用的轮询时间。此外,调整逻辑群组在设定提供发布太多状态请求与通过在完成命令之后在发布下一命令之前不必等待太长时间来改进快闪存储器的性能之间提供较好平衡的轮询时间时考虑了快闪存储器例如归因于存储器单元上的磨损而随时间的改变。[0074] 其它实施例[0075] 所属领域的一般技术人员将了解,关于本文中公开的实例描述的各种说明性逻辑块、模块和过程可实施为电子硬件、计算机软件或两者的组合。此外,前述过程可体现于计算机可读介质上,所述计算机可读介质使处理器或计算机实行或执行某些功能。。[0076] 为清晰地说明硬件与软件的此可互换性,上文已大体就其功能性描述了各种说明性组件、块和模块。这类功能性是以硬件来实施还是以软件来实施取决于特定应用和强加于整个系统的设计约束。所属领域的一般技术人员可针对每个特定应用以不同方式来实施所描述的功能性,但此类实施决策不应被解释为会引起脱离本公开的范围。[0077] 结合本文中公开的实例描述的各种说明性逻辑块、单元、模块和控制器可以用通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其被设计以执行本文中描述的功能的任何组合来实施或执行。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、SoC、一个或多个微处理器与DSP核心结合,或任何其它此类配置。[0078] 结合本文中公开的实例描述的方法或过程的活动可直接在硬件中、在由处理器执行的软件模块中或在两者的组合中体现。也可以按与在实例中提供的次序交替的次序来执行方法或算法的步骤。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移除介质、光学介质或此项技术中已知的任何其它形式的存储介质中。示例性存储介质耦合到处理器,使得处理器可从存储介质读取信息和将信息写入到存储介质。在替代方案中,存储介质可与处理器成一体式。处理器和存储介质可驻留在ASIC或SoC中。[0079] 提供所公开的示例实施例的前述描述以使所属领域的一般技术人员能够制造或使用本公开的实施例。所属领域的一般技术人员将容易显而易见对这些实例的各种修改,且可在不脱离本公开的精神或范围的情况下将本文中公开的原理应用到其它实例。所描述的实施例应在所有方面均被视为仅是说明性的而非限制性的。
专利地区:美国
专利申请日期:2020-03-27
专利公开日期:2024-07-26
专利公告号:CN112130753B