用于增强存储设备的服务质量的存储系统、方法和非暂态计算机可读介质与流程

文档序号:16636671发布日期:2019-01-16 07:05阅读:122来源:国知局
用于增强存储设备的服务质量的存储系统、方法和非暂态计算机可读介质与流程

本发明整体涉及存储设备。更具体地,本发明的示例涉及增强存储设备的服务质量。



背景技术:

希望提高存储设备的后台命令管理。



技术实现要素:

本文提出的系统和方法可增强存储设备的服务质量(qos)。在一个实施方案中,控制器可操作为监测在预先确定的时间段内对存储设备的多个后台命令,确定在预先确定的时间段内发布后台命令中的每个的频率,为后台命令中的每个建立时间间隔,以及以它们相应的时间间隔发布后台命令中的每个。

本文所公开的各种实施方案可以多种方式实施,这是设计时的选择。例如,本文的系统和方法实施方案可以采用计算机硬件、软件、固件或它们的组合的形式。下文描述了其他示例性实施方案。

附图说明

现在将仅以举例的方式,参照附图描述一些实施方案。所有附图中相同的参考标号表示相同的元件或相同类型的元件。

图1为用于增强存储设备的qos的示例性存储系统的框图。

图2为图1的存储系统的示例性进程的流程图。

图3为向存储设备发布的后台进程的示例性时序图。

图4为图1的存储系统的另一示例性进程的流程图。

图5为示出了存储设备的随时间推移的示例性工作负荷以及后台命令的发布方法的曲线图。

图6a和图6b示出了由图1的存储系统的控制器使用的示例性命令缓冲区。

图7为示例性存储控制器及其相关联的存储设备的框图。

图8为包括存储设备及其与主机系统交互的相关联的控制器的i/o模块的框图。

具体实施方式

附图和以下描述示出了具体的示例性实施方案。因此,应当理解,本领域的技术人员能够设想虽然本文没有明确描述或者显示、但是包含了本发明实施方案的原理、并且包含在本发明实施方案的范围内的各种布置方式。此外,本文所述的任何示例旨在帮助理解本发明实施方案的原理,并且应被理解为不限于此类具体列举的示例和条件。因此,这些实施方案不限于下文所述的任何具体示例。

图1为用于增强存储设备15的qos的示例性系统10的框图。系统10包括控制器11,该控制器可操作为针对通信地耦合到其的存储设备15读写数据。控制器还可操作为通过发布具体命令来运行存储设备15上的后台进程。

后台进程(例如,数据保留扫描、垃圾收集、读取干扰扫描、数据完整性扫描等)是在“幕后”运行并且无需用户干预的计算机进程。由于后台进程可能会消耗诸如处理器和存储器使用的资源,因此控制器11可操作为降低后台进程对存储设备15的读写操作的影响,从而增强存储设备15的qos。例如,后台进程向存储设备15发送争用处理资源的请求。当后台进程本质上是“突发的”时或者当多个后台进程在同一时间或几乎同时发生时,它们可以通过延长读写操作的持续时间来降低qos。控制器11管理发布后台进程命令的时间以便提高存储设备15的qos。

在一个实施方案中,存储设备15为使用一个或多个ssd架构诸如单级单元(slc)架构和多级单元(mlc)架构配置的非易失性nand闪存设备。slc架构允许存储器单元存储一个数据位。传统上,mlc架构意味着存储器单元可存储两个数据位。但是,架构已经取得发展,现在提供了甚至更高的密度水平,例如每个存储器单元存储三个位的三级单元(tlc)架构和每个存储器单元存储四个位的四级单元(qlc)架构。然而,一般来讲,也可将每个单元存储多于一个数据位的任何架构称为mlc架构。

通常,闪存设备的每个存储器单元都像金属氧化物半导体场效应晶体管(mosfet)那样用控制栅进行配置。但是,每个存储器单元还具有浮栅,该浮栅被配置在控制栅与mosfet的信道之间的绝缘氧化物层围绕。由于浮栅通过其绝缘层电隔离,因此置于其上的电子被捕集,直到它们通过施加电场(例如,施加电压)被去除。将电子置于浮栅上,将晶体管设置为逻辑“0”状态。一旦浮栅被充电,其中的电子就会屏蔽来自控制栅的电场,从而增大存储器单元的阈值电压。这意味着更高的电压被施加到控制栅以使晶体管的信道导电。

为了从晶体管写入值,将阈值电压之间的中间电压施加到控制栅。如果信道在该中间电压下导电,则浮栅未被充电,导致逻辑“1”存储在存储器单元中。如果信道在中间电压下不导电,则表明浮栅被充电,导致逻辑“0”存储在存储器单元中。当在控制栅上断言中间电压时,通过确定是否有电流流过晶体管来感测逻辑“0”或逻辑“1”的存在。

基于前文所述,控制器11为可操作为从存储设备15读取数据、将数据写入到存储设备15以及在存储设备15上执行各种其他操作(例如,后台扫描、垃圾收集、存储设备15上的数据的纠错编码/解码等)的任何设备、系统、软件、固件或它们的组合。存储设备15是能够持久性或以其他方式存储数据的任何设备。存储设备15的示例包括nand闪存存储器设备、磁阻随机存取存储器设备、磁盘、随机存取存储器(ram诸如dram)或它们的各种组合。因此,控制器11可操作为在任何多种存储设备上执行本文所公开的进程。

图2为图1的系统10的示例性进程20的流程图。在该实施方案中,控制器11在进程元素21中监测在预先确定的时间段内对存储设备15的后台命令。例如,存储设备15的后台进程在不同的时间执行并且可彼此重叠。nand闪存设备上的媒体扫描可每天执行一次(例如,以确保存储器单元正确地读取)。nand闪存设备的数据保留扫描可每三天执行一次(例如,以确保数据不受存储器单元的电荷泄漏的影响)。nand闪存设备上的垃圾收集可在整个一天中例行地执行(例如,以释放存储设备的存储空间)。其它后台进程的示例包括读取干扰扫描、读取重试扫描、读取电压校准、数据完整性扫描、用于nand错误抑制的后台读取以及用于nand错误抑制的后台写入。后台进程由控制器11执行的命令发起。控制器11监测后台进程的命令,以便在进程元素22中确定在预先确定的时间段内发布后台命令中的每个的频率。

一旦确定了关于后台命令的信息,则控制器11在进程元素23中为后台命令中的每个建立时间间隔,使得这些命令彼此不重叠或在不合适的时间突发至i/o处理。例如,如果控制器11不知道何时发布用于后台进程的命令,则这些命令可能在时间上重叠并且同时争用处理实用程序和/或nand管芯资源,从而降低存储设备15提供的qos。另选地或除此之外,可以在工作负荷增加的时段向存储设备15发布用于后台进程的命令,由此争用可由读写i/o处理使用的处理实用程序。在任何情况下,控制器11基于预先确定的时间段内的监测来确定后台命令的时间间隔,使得控制器11可以在进程元素24中以相应的时间间隔发布它们,以便避免处理争用并提高存储设备15的qos。

图3为由控制器11向存储设备15发布的多个后台命令的示例性时序图。在该实施方案中,一旦控制器11已经监测存储设备15的后台操作并确定了它们的周期性,则控制器11将时隙分配给后台命令。例如,为后台命令31(例如,闪存设备的块上的垃圾收集)分配第一时隙,为下一后台命令32(例如,每日媒体扫描)分配由后台命令时间间隔35隔开的下一时隙,使得后台命令32与后台命令31不重叠。为另一后台命令33(例如,每三天的数据保留扫描)分配由另一后台命令时间间隔35隔开的下一时隙。另外,为又一后台命令34(例如,每小时读取保留扫描)分配由后台命令时间间隔35隔开后的时隙。

尽管在本文中示为具有将后台命令31-34隔开使得后台命令31-34在时间上不重叠的后台时间间隔35,但本实施方案不旨在限于共同的时间间隔。例如,时间间隔35可基于存储设备15的工作负荷来自适应地配置。即,控制器11可监测对存储设备15的读写i/o命令。并且,在对存储设备15的更密集的读写时段期间,控制器11可以进一步将后台命令时间间隔隔开,使得后台命令31-34可以在对存储设备15的较不密集的读写时段期间发生,从而进一步提高存储设备15的qos。

另外,如该实施方案所示,后台命令31-34可具有变化的持续时间。例如,针对闪存设备的单个块发布的垃圾收集命令(例如,后台命令31)的持续时间可以比可操作为扫描整个存储设备15的每日媒体扫描(例如,后台命令32)更短。因此,该实施方案并不旨在限于后台命令的任何特定持续时间。

图4为图1的存储系统10的另一示例性进程40的流程图。在该实施方案中,控制器11如先前所提及在进程元素41中监测存储设备15的工作负荷,以确定存储设备15正在经历高的还是低的工作负荷。控制器11在将时隙分配到将发布的后台命令之后,控制器11为这些后台命令中的每个启动定时器。就这一点而言,控制器11在进程元素42中确定后台命令的定时器是否指示命令的即将发布。如果不是,则控制器11在进程元素41中继续监测存储设备15的工作负荷。然而,如果定时器指示后台命令即将发布到存储设备15以开始存储设备15上的后台操作,则控制器在进程元素44中确定存储设备15的当前工作负荷水平(例如,高或低)。

如果存储设备15的工作负荷相对较低,则控制器11可在进程元素45中发布命令,并且在进程元素41中继续监测存储设备15的工作负荷。然而,如果存储设备15的工作负荷相对较高,则控制器11可在进程元素46中自适应地扩展未决命令的定时器,以确保它不消耗读写i/o操作所需的处理实用程序。这种情况的示例如图5所示。在该示例中,控制器11确定在读写操作中存在间歇56和57(例如,存储设备15的每秒i/o操作数或“iops”相对较低),其中可以发布后台命令51和52而不大幅降低i/o性能。

另选地或除此之外,控制器11可在进程元素47中确定是否存在持续时间较短的未决后台进程。如果是,则控制器11可在进程元素42中确定其定时器是否指示即将发布的命令,以确定它是否可以在其他未决后台命令之前发布。这也在图5中示出。

例如,控制器11可确定后台命令51将具有比后台命令52更短的操作持续时间(例如,基于处理能力)。并且,由于与后台命令52相比,后台命令51的持续时间较短的操作可以在对iops中的间歇56的影响较小的情况下实现,因此后台命令51可以在后台命令52之前发布。然后,控制器11可以将后台命令52推送到命令缓冲区/队列的顶部,使得它可以在iops中的下一个间歇57处发布,因为它可能更适合于对iops的影响较小的情况。

如果不存在较短的未决后台进程,则控制器11可以在进程元素48中调节下一命令的时间间隔。例如,控制器11可调节第一未决后台进程的命令与第二/下一时隙化后台进程的下一命令之间的时间间隔。本质上,这将调节第一命令和第二命令的定时器。然后,控制器11可继续监测存储设备15的工作负荷,以确定何时可向存储设备15发布第一未决后台进程的命令。

在该实施方案中也示出了任选的命令中断43。命令中断43可操作为向存储设备15“注入”后台进程。例如,控制器11可确定在某个时间点可能需要后台进程诸如垃圾收集。命令中断43可用于将后台进程推送到命令缓冲区中的其他进程之前。也就是说,可在命令缓冲区中的其他后台命令之前发布该后台命令。

应当指出的是,存储设备15的工作负荷并非旨在仅限于i/o活动“高”和“低”的时段。相反,存储控制器11可以监测任何级别的工作负荷,并调节后台命令将被发布的方式/时间。

例如,图6a和图6b示出命令缓冲区60,该命令缓冲区可操作为保留未决命令以及它们在由控制器11发布的命令之间的各种间隔。在该示例性实施方案中,命令缓冲区60以一天和三天的时间示出。每三天发生的数据保留扫描命令被置于命令缓冲区60的顶部。每日媒体扫描命令被置于命令缓冲区60中在数据保留扫描之后(例如,在时间间隔35之后)。其他命令诸如数据完整性扫描和定时垃圾收集命令在各个点被置于命令缓冲区60中。然后,每日媒体扫描命令在三天之后(例如,控制器11在监测存储设备15的各种后台进程之后确定的预先确定的时间段)被再次置于命令缓冲区60中。

图6a中还示出了检测到的垃圾收集命令。此命令可为命令中断43的结果,如图4所示。例如,控制器11可确定将在存储设备15的特定块上执行垃圾收集。因此,控制器可从命令缓冲区60移除数据完整性扫描,如图6b所示,并将检测到的垃圾收集命令在命令缓冲区60中插入就位。将要发生的数据完整性扫描可重新定位到命令缓冲区60的另一个位置,以确保命令仍然被发布。

应当指出的是,本文的实施方案并非旨在限于可以由命令缓冲区60中的控制器11实现的任何类型、数量、命令间隔或顺序的后台命令/进程。例如,控制器11可向存储设备15自适应地发布用于后台进程的任何类型的命令和/或在命令之间建立任何时间间隔。另外,本文所述的进程也仅仅是示例性的,并且并非旨在限于那些示例性实施方案的进程元素的数量或顺序。

此外,本文中的实施方案可采取硬件、固件、软件或它们的组合的形式。例如,图7和图8示出了可操作为采用本文所述的系统和方法的此类组合。更具体地,图7为示例性存储系统10及其相关联的设备控制器(例如,控制器11)和存储设备15(例如,包括闪存设备14)的框图。图8为包括存储系统10及其与主机系统502交互的相关联的控制器11/存储设备15的存储模块216的框图。

在图7中,控制器11包括主机接口111,该主机接口可操作为与主机系统进行交互以传送主机系统的i/o操作。主机接口111可被配置为具有标签跟踪模块113,该标签跟踪模块可操作为跟踪各个i/o命令(例如,针对存储设备15中的某些地址的读写命令)的进程。标签跟踪模块113可将从主机系统接收的命令的外部标志与控制器11可在处理命令期间访问的内部标志相关联以识别处理的状态。

控制器11还包括数据处理模块121,该数据处理模块包括处理引擎123,该处理引擎通常可操作为对从主机接口111接收或驻留在缓冲区131内的数据执行某些任务,诸如以下一个或多个:将数据格式化;对数据进行转码;对数据进行压缩;对数据进行解压缩;对数据进行加密;对数据进行解密;数据编码/格式化;或它们的任何组合。例如,数据处理模块121的处理引擎123可操作为处理来自生成操作的主机系统的i/o模块的i/o操作,使得可以向存储设备15的逻辑地址写入i/o操作的数据。处理引擎123可提取写入i/o命令的数据并准备将它存储在存储设备15中。在这样做时,处理引擎123可以使用各种数据压缩算法中的任何一种来压缩数据。当从存储设备15检索数据时,处理引擎123可根据用于压缩数据以供存储的算法对数据进行解压缩。

缓冲区131可操作为存储向和从主机系统传输的数据。缓冲区131还可以存储系统数据,诸如由控制器11使用来管理闪存设备14、缓冲区13和存储器137中的任何可能的更高级raid功能的存储器表。其他模块可以包括用于提供更高级别的纠错和冗余功能的纠错码(ecc-x)模块135以及用于控制数据向和从缓冲器131移动的直接存储器访问(dma)模块133。

控制器11还包括纠错码模块161,该纠错码模块可操作为使用各种纠错码技术中的任何一种(例如,循环冗余校验、汉明码、低分辨率纠错码等)来提供缓冲区131中的数据的较低级别的纠错和冗余处理。

设备接口逻辑模块191可操作为根据其中的设备的协议向和从存储设备15传输数据。设备接口逻辑模块191包括调度模块193,该调度模块可操作为将对存储设备15的i/o操作排队。

本文中的控制器11还包括映射模块141,该映射模块可操作为根据查找表12对存储设备15中的位置执行数据寻址。例如,映射模块141可使用查找表12来将来自主机系统的逻辑块地址(lba)转换为指向缓冲区13、闪存设备14或两者的块/页面地址。查找表12可全部或部分地存储在控制器11和/或存储设备15中。例如,在一些实施方案中,可在控制器11中高速缓存查找表12的一部分,其中查找表12的全部通常非易失性地存储在存储设备15中。

回收站151代表控制器11执行垃圾收集。例如,回收站151可通过扫描映射模块141的查找表12来确定正在积极地使用的存储设备15的部分。就这一点而言,回收站151可以通过擦除未使用部分来使存储设备15的未使用部分或“解除分配”部分可用于写入。回收站151也可在存储设备15内移动数据,以使存储设备15的更大的连续部分可用于写入。

控制器11还包括cpu171,该cpu控制控制器11的各个方面。例如,cpu171可以处理指令或固件来实施命令管理173,该命令管理跟踪和控制从主机系统接收的命令。该固件还可以实现控制缓冲区131的分配和使用的缓冲区管理175以及控制映射模块141的转换管理177。固件还可采用一致性管理179来控制数据寻址的一致性以避免冲突,诸如在外部数据访问与回收数据访问之间可能发生的冲突。固件还可提供用于控制设备接口逻辑模块191的设备管理181以及用于控制控制器11内的部件的身份信息的修改和通信的身份管理182。

在图8中,主机系统202可操作为处理软件指令并且利用存储模块216执行i/o操作以针对一个或多个存储系统10进行读写操作。就这一点而言,主机系统202可包括操作系统205,该操作系统为主机系统202提供计算环境。驱动器207可操作为通过链路206与存储模块216进行通信,以利用其所配置有的各种存储系统10执行i/o操作。

与其他计算系统一样,操作系统205可经由管理软件214(例如,bios软件)启动。主机系统202还可包括应用程序软件209以代表主机系统202执行各种计算过程(例如,文字处理应用程序、图像处理应用程序等)。主机系统202还可以包括i/o和存储功能217,其可操作为通过通信网络219(例如,因特网、局域网、广域网等)与一个或多个服务器218进行i/o操作。就这一点而言,存储模块216可充当主机系统202的i/o操作的高速缓存存储器。

存储模块216可以配置有中间控制器203,该中间控制器可操作为将主机系统202的各种i/o操作切换到存储系统10的lba。就这一点而言,存储模块216可以包括存储器212,该存储器存储供中间控制器203进行对lba的i/o操作的映射信息。控制器11的映射模块141还可操作为根据查找表12利用尺寸可变的映射单元执行到存储设备15中的各位置的数据寻址,并将来自主机系统202的lba转换为指向存储设备15的块/页面地址。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1