基于裸片的高优先级及低优先级错误队列的制作方法

文档序号:29469010发布日期:2022-04-02 04:17阅读:86来源:国知局
基于裸片的高优先级及低优先级错误队列的制作方法

1.本发明大体来说涉及在处理器上调度错误恢复消息的系统及方法。


背景技术:

2.在例如固态驱动器等的存储器系统中,存储器装置阵列经由多个存储器通道连接到存储器控制器。存储器控制器中的处理器维持每一通道的存储器命令的队列且调度命令以供发射到存储器装置。
3.常规存储器控制器处理器根据轮循(round-robin)选择方法调度队列中的存储器命令,从而调度所选择队列的头部处的命令以供发射到存储器装置。当读取存储器命令未能正确地读取数据时,处理器尝试错误校正。如果此错误校正失败,那么按惯例,处理器创建放置于单个错误恢复队列中的一或多个新命令以尝试恢复数据。对原始读取命令的响应必须等到数据恢复完成,这会增加遭遇失败的读取命令的等待时间。当在短时间段内发生许多读取错误时,大量错误恢复命令将被添加到单个队列中以便以串行方式进行处置,这会进一步增加读取命令的等待时间。
4.将错误恢复命令分组到单个队列中的常规分组也未计及向存储器控制器处理器发布的所有读取命令(包含主机发起的读取命令及由存储器控制器创建的内部读取命令两者)的不同类型及优先级。举例来说,具有严格等待时间要求的主机发布的读取命令可能在等待调度的队列中位于内部读取错误恢复命令之后。这些问题在存储器装置上的损耗随年龄及所报告错误的数目增加而增加时变得更加突出及成问题。
5.因此,长期以来存在对存储器控制器能够高效地调度去往存储器装置的错误恢复命令的未被满足的需要。


技术实现要素:

6.一方面,处理器通信地耦合到具有具n个通道的n x m nand存储器裸片阵列的nand存储器装置,其中所述n个通道中的每一通道通信地耦合到m个nand存储器裸片,且由所述处理器调度错误恢复指令的方法包含响应于对所述n v m nand存储器裸片阵列的目的地裸片进行读取命令的经尝试执行而接收读取错误的指示。所述方法还包含响应于所述读取错误的所述指示而创建错误恢复指令,确定所述错误恢复指令的所述目的地裸片,及基于所述错误恢复指令的所述目的地裸片将所述错误恢复指令发送到裸片队列。
7.另一方面,用于在处理器处调度错误恢复指令的系统包含:nand存储器装置,其具有具n个通道的n x m nand存储器裸片阵列,其中所述n个通道中的每一通道通信地耦合到m个nand存储器裸片;及处理器,其通信地耦合到所述nand存储器装置。所述处理器包含:逻辑,其处理向所述nand存储器装置请求数据的读取命令及供在所述nand存储器装置上执行的错误恢复指令;及针对所述n x m阵列的每一nand存储器裸片的裸片队列。所述处理器响应于对所述n x m nand存储器裸片阵列的目的地裸片的读取命令进行经尝试执行而接收读取错误的指示,响应于所述错误的所述指示而创建错误恢复指令,及确定所述错误恢复
指令的所述目的地裸片。所述处理器还基于所述错误恢复指令的所述目的地裸片将所述错误恢复指令发送到裸片队列。
附图说明
8.将在联合附图考虑以下详细说明时明了前述以及其它目标及优点,遍及附图相似参考符号指代相似部件,且在附图中:
9.图1展示支持错误恢复消息的调度的固态驱动器(“ssd”)存储器装置系统的框图;
10.图2展示在ssd存储器装置中处置读取命令及读取错误的过程的框图;
11.图3展示进入ssd存储器装置处理器的基于裸片的错误恢复消息队列的框图;
12.图4a展示4通道
×
4存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
13.图4b展示4通道
×
8存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
14.图5a展示利用单个读取错误恢复队列的消息调度过程的框图;
15.图5b展示利用多个基于裸片的读取错误恢复队列的消息调度过程的框图;
16.图6展示ssd存储器装置处理器处的各种队列的框图;
17.图7展示利用高及低优先级命令的多个基于裸片的读取错误恢复队列的消息调度过程的框图;
18.图8a展示启用iod的ssd裸片阵列的框图;
19.图8b展示针对图8a的启用iod的ssd裸片阵列的错误恢复消息队列的框图;
20.图9a展示4通道启用iod的ssd裸片阵列的2通道iod组的4通道
×
4存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
21.图9b展示启用iod的ssd裸片阵列的4通道
×
8存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
22.图10展示利用启用iod的ssd的高及低优先级命令的多个基于裸片的读取错误恢复队列的消息调度过程的框图;
23.图11展示启用io流的ssd裸片阵列的框图;
24.图12a展示2存储器库启用io流的ssd裸片阵列的4通道
×
4存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
25.图12b展示2存储器库启用io流的ssd裸片阵列的4通道
×
8存储器库配置的错误恢复消息到基于裸片的队列的映射的框图;
26.图13展示用于利用基于裸片的队列调度错误恢复消息的方法的流程图;
27.图14展示用于利用基于裸片的队列及优先级队列调度错误恢复消息的方法的流程图;及
28.图15展示在启用iod组的ssd及启用io流的ssd中实施的用于利用基于裸片的队列及优先级队列调度错误恢复消息的方法的流程图。
具体实施方式
29.为提供对本文中所描述的装置的总体理解,将描述某些说明性实施例。尽管本文
中所描述的实施例及特征被具体描述为供结合具有控制器的ssd来使用,但将理解下文所概述的所有组件及其它特征可以任何适合方式彼此组合且可适于并被应用于裸片阵列上需要各种命令的调度的其它类型的ssd架构。
30.图1展示ssd存储器装置系统100的框图。ssd存储器装置系统100包含通过总线103通信地耦合到主机102的ssd 104。ssd 104包含专用集成电路(“asic”)106及nand存储器装置108。asic 106包含主机接口110、快闪转换层114及快闪接口层118。主机接口110通过内部总线112通信地耦合到快闪转换层114。快闪转换层114包含查找表(“lut”)117及lut引擎119。快闪转换层114将存储器命令116发射到快闪接口层118。快闪接口层118包含快闪接口中央处理单元(“cpu”)119及快闪接口控制器121。快闪接口cpu 119控制快闪接口控制器121。快闪接口层118通信地耦合到快闪接口控制器121,快闪接口控制器121通过多个nand存储器通道通信地耦合到nand存储器装置108。此处为清晰起见图解说明两个通道,但任何数目个通道可将快闪接口控制器121耦合到nand存储器装置108内的存储器。如所图解说明,快闪接口控制器121通过第一通道(ch 0)120耦合到存储器裸片的多个存储器库124,此处包含第一存储器库126及第二存储器库128。快闪接口控制器121通过第二通道(ch 1)122耦合到存储器裸片的多个存储器库130,此处包含第三存储器库132及第四存储器库134。虽然图1中针对通道中的每一者仅展示两个存储器库,但任何数目个存储器库可耦合到通道。
31.ssd 104从主机102接收存取存储于nand存储器装置108中的数据的各种存储协议命令。所述命令首先由快闪转换层114解译成一或多个存储器命令116,所述存储器命令在例如多个过程间通信(“ipc”)队列等的多个队列中路由到快闪接口层118。ssd 104还可产生需要存取存储于nand存储器装置108中的数据的内部命令及消息,所述内部命令及消息也被路由到快闪接口层118ipc队列。快闪接口层118将所述命令及消息指派到适当ipc队列,然后依次从所述队列提取命令以便由快闪接口cpu 119调度及处理。快闪接口cpu 119将基于经调度命令及消息执行各种任务的指令发送到快闪控制器121。图2中进一步描述将命令及消息分发到ipc队列以及快闪接口cpu 119提取及处理命令及消息的此过程。
32.如文本中所使用,所属领域的技术人员将理解术语

消息’意指传达指令(含有信息的指导)的手段。所属领域的技术人员将理解术语

错误恢复消息’意指关于在存储器裸片上的错误中发生了什么及可如何从其中恢复错误的指令或含有信息的指导。如文本中所使用,错误恢复消息还可理解为执行错误恢复的通信、报告、任务、命令或请求,使得响应于错误恢复消息的内容,cpu形成对存储器裸片执行错误恢复动作的命令。作为实例,错误恢复消息可致使一组读取命令被发布到存储器裸片,所述组读取命令定义读取命令的不同电压阈值。尽管本文中描述ipc队列,但可将路由到快闪接口层的各种命令及消息指派到任一适当队列,且所述队列未必是ipc队列。
33.图2展示在例如图1中的ssd 104等的ssd存储器装置中处置读取命令及读取错误恢复消息的过程的框图200。框图200展示从ipc队列236中的命令及消息开始到快闪接口cpu 219再到快闪控制器221及再到nand存储器装置208的处理方法的流程。快闪接口cpu 219及快闪控制器221是快闪接口(例如图1的快闪接口层118)内的组件。在步骤1处,快闪接口cpu 219从ipc队列236中的队列的头部提取读取命令作为ipc消息。快闪接口cpu 219根据调度算法从ipc队列236的头部提取命令。在一些实施方案中,调度算法是为每一队列赋予相等优先级加权的轮循策略。在一些实施方案中,使用另一调度算法。在一些实施方案
中,调度算法使得快闪接口cpu 219能够基于所提取读取消息的属性从队列的头部提取多个ipc消息。在一些实施方案中,调度算法使得快闪接口cpu 219能够从队列中除队列的头部之外的位置提取命令。在一些实施方案中,调度算法计及ipc队列236内的队列的不同优先级。快闪接口cpu 219处理命令且将指令发射到快闪控制器221,以响应于命令及消息而在存储器通道上将存储器命令信号发布到nand存储器装置208。
34.在步骤2处,快闪接口cpu 219基于所接收ipc消息而创建读取封包且将所述读取封包发射262到快闪控制器221。快闪控制器221处理所述读取封包且在步骤3处经由路径264将读取命令信号发射到nand存储器装置208。快闪控制器221经由适当通道(例如图1中的第一通道(ch 0)120或第二通道(ch 1))将命令信号发射到nand存储器装置208以到达目的地存储器库(例如图1中的第一存储器库126、第二存储器库128、第三存储器库132或第四存储器库134)以供执行读取。nand存储器装置208在图2中展示为具有八个可用裸片,包含第一裸片273、第二裸片274、第三裸片275、第四裸片276、第五裸片277、第六裸片278、第七裸片279,及第八裸片280。
35.在步骤4处,快闪控制器221在路径266处检测响应于在nand存储器装置208处进行读取的经尝试执行以及任何数据读取的指示。所述指示可指示存储器读取命令的执行的失败且无数据被传回,或所述指示可指示成功且数据被传回。快闪控制器221使用错误校正码(“ecc”)解码器(为清晰起见未展示)检查所传回的数据,所述检查可指示成功(数据已被成功读取)或失败(已发生不可校正的ecc失败)。快闪控制器221在步骤5处通过路径268将存储器读取失败或ecc失败的指示发射到快闪接口cpu 219。响应于因存储器读取失败或ecc失败导致的读取错误的指示,快闪接口cpu 219必须尝试使用各种读取错误恢复方法中的一者恢复数据。在一些实施方案中,快闪接口cpu 219执行经增强的较强错误校正算法以尝试校正经识别错误。在一些实施方案中,快闪接口cpu 219基于错误恢复算法而确定新存储器单元阈值电压值以尝试恢复经识别错误。在一些实施方案中,快闪接口cpu 219准备具有各种阈值电压值的一或多个读取命令以重新尝试在nand存储器装置208上进行存储器读取。这些错误恢复算法以及已知替代错误恢复算法及方法中的每一者可结合本文中所描述的实施例中的一或多者来使用。
36.在步骤6处,快闪接口cpu 219准备包含关于读取的相关细节的新错误恢复ipc消息以执行必要恢复步骤,且将所述ipc消息发射到其自身的ipc队列以发布另外的读取校正步骤。当一次发生多于一个读取错误时,快闪接口cpu 219创建更多的错误恢复ipc消息且将其添加到ipc队列。为了高效地处置这些错误恢复消息,必须将所述消息适当地分组。可根据命令或消息的类型将消息及命令分组成例如响应消息队列群组、错误恢复队列群组、主机读取命令队列群组,及涵盖除主机发起的命令之外的读取、写入及擦除命令的另一命令队列群组,或任何其它适当分组。还可在将命令及消息分组时计及命令及消息的优先级。因此,在步骤6中,当快闪接口cpu 219将消息发射到其自身的ipc队列时,必须将消息指派到ipc队列236内的适当队列。如下文将在图3中进一步描述,快闪接口cpu 219将错误恢复ipc消息发射到ipc队列236内的基于裸片的队列。ipc队列236按nand存储器装置208内的每裸片包含至少一个错误恢复ipc队列,且可针对每一裸片包含多个队列。
37.错误恢复ipc消息是已发生错误的指示,且还可包含关于错误的类型及严重性的指示,所述指示规定在消息到达其相应ipc队列的头部时消息被如何处理。一旦错误恢复消
息到达ipc队列的前部且被提取以供进行调度,快闪接口cpu 219便处理错误恢复消息以确定所述消息所需的动作。在步骤7处,快闪接口cpu 219基于错误ipc消息通过路径272将读取封包发布到快闪控制器221以供发射到nand存储器装置208。如上文所描述,在一些实施方案中,所述读取封包包含经更新阈值电压值以尝试恢复数据。在一些实施方案中,所述读取封包通过另一读取错误校正或恢复方法解决数据恢复。重复步骤1到7直到读取错误被完全校正。
38.nand存储器装置208的裸片中阻碍命令的完成的错误是随机地发生,且可能随裸片年龄及损耗的增加而增加。常规系统包含到达快闪接口cpu 219的ipc队列236的错误恢复消息的单个ipc队列。在这些常规系统中,所有错误恢复消息均被路由到单个错误恢复消息ipc队列,这造成消息的调度的长时间等待及资源的低效使用。单个错误恢复消息ipc队列的使用导致长等待时间且未能计及各种命令及响应于其的错误恢复消息可具有不用优先等级及相关联的可接受等待时间等级。
39.与常规单个错误恢复消息ipc队列相比,图3展示基于裸片的错误恢复消息ipc队列336的框图300,所述基于裸片的错误恢复消息ipc队列用于在于快闪接口cpu 319的ipc队列处接收到消息时在每裸片(本文中还称为“每存储器库”)基础上将错误恢复消息队列分组。错误恢复消息ipc队列336包含针对nand存储器装置的每一裸片的单独队列以促进错误恢复消息的高效调度。基于裸片的错误恢复消息ipc队列336可包含每裸片具有至少一个队列的任何数目个基于裸片的队列。将需要对特定裸片执行的所有错误恢复消息均通过指派到裸片的队列中的一者来路由,使得与不同裸片上的错误恢复相关的消息可被并行调度以高效地处置错误恢复。为清晰起见,图3仅展示表示总共64个队列的八个队列,且包含前四个队列(第一队列338、第二队列340、第三队列342及第四队列344)以及后四个队列(第61队列346、第62队列348、第63队列350及第64队列352)。图3对应于4通道
×
16存储器库的裸片阵列。此阵列具有64个裸片,且基于裸片的错误恢复队列群组336因此具有64个队列。
40.作为实例,第一队列338对应于第一通道上的第一存储器库,第二队列340对应于第二通道上的第一存储器库,第三队列342对应于第三通道上的第一存储器库,且第四队列344对应于第四通道上的第一存储器库。第61队列346对应于第一通道上的第16存储器库,第62队列348对应于第二通道上的第16存储器库,第63队列350对应于第三通道上的第16存储器库,且第64队列352对应于第四通道上的第16存储器库。以此方式,每一队列对应于通过存储器装置中的特定通道存取的特定存储器库,且将在所述通道及存储器库处执行的错误恢复消息是通过对应队列来路由。nand存储器装置中的裸片各自是独特的且可独立地操作。裸片中的块可取决于块的使用而具有不同损耗水平,且错误可在任一裸片上随机地发生。如果快闪接口cpu 319利用基于裸片的错误恢复消息队列,使得存在为每一裸片建立的队列,那么当存在多个错误时,快闪接口cpu 319可跨越nand裸片并行地快速且高效地调度多个错误恢复动作。使用基于裸片的错误恢复消息队列使得能够跨越各种通道及存储器库并行地调度错误恢复消息,使得用较少等待时间更高效地处置错误恢复。系统还可取决于装置容量而有效地按比例放大或缩小。
41.图4a及4b分别展示4通道
×
4存储器库配置及4通道
×
8存储器库配置的用于对特定裸片执行的错误恢复消息到基于裸片的队列的映射的框图。如图3中所描述,错误恢复消息ipc队列包含针对装置中的每一存储器库的队列,使得存在对应于通过通道存取的每一
存储器库的队列。图4a图解说明4通道
×
4存储器库配置的通道404及存储器库406到基于裸片的错误恢复消息队列402的映射400。图4b展示4通道
×
8存储器库配置的通道414及存储器库416到基于裸片的错误恢复消息队列412的映射401的框图。
42.基于裸片的错误恢复消息队列的利用改进了跨越nand存储器装置对消息及命令的高效调度。作为实例,图5a展示利用单个读取错误恢复消息队列的常规消息调度过程的框图500,且与图5b形成对比,图5b展示利用多个基于裸片的读取错误恢复消息队列的消息调度过程的框图550。
43.图5a展示图解说明在快闪接口cpu(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219,或图3中的快闪接口cpu 319)处利用单个错误恢复消息ipc队列调度命令及消息的过程的框图500。图5a展示在将命令及消息发射到cpu时,所述命令及消息被添加到适当ipc队列的末尾(步骤502)。ipc队列包含单个错误恢复消息队列508以及多个低优先级命令队列504及基于裸片的主机读取命令队列506(即,针对nand存储器装置中的每一裸片存在一个队列)。命令及消息在其到达时被添加到队列的末端,且随着调度及处理队列的头部处的命令及消息而在位置上穿过队列向上移动。根据选择过程从ipc队列的头部选择待调度的命令及消息(步骤510)。在一些实施方案中,所述选择过程是轮循方案。在一些实施方案中,cpu从队列中除队列的头部之外的位置提取命令。在一些实施方案中,调度算法使得cpu能够基于所提取读取消息的属性而从队列的头部提取多个ipc消息。cpu提取每一队列的第一命令或消息(例如,在队列的头部处),基于所提取消息而形成命令以供进行调度,且调度所形成命令。以错误恢复消息队列508开始,cpu提取单个队列508的头部处的第一消息以形成命令514以供进行调度。cpu然后继续(步骤512)提取主机读取命令队列506的头部中的每一者处的命令以形成命令516以供进行调度,使得多个主机读取命令经调度以去往nand存储器装置的各种裸片。最后,cpu提取(步骤512)来自低优先级命令队列504中的每一者的头部的命令以形成命令518以供进行调度。处理来自包含单个错误恢复消息508、多个主机读取命令506及多个低优先级命令504的各种队列的头部的所选择消息及命令且将基于所述消息的命令或指令信号发射到快闪接口控制器以执行命令或采取各种动作(步骤520)。cpu然后通过提取现在位于每一ipc队列的头部处的命令或消息且形成命令以供进行调度而开始重复上文所描述的步骤的第二迭代。使用仅单个错误恢复消息队列来调度命令及消息会导致每调度回合发射单个错误恢复消息,这是低效的且可在较高优先级错误恢复消息在队列中卡在较不重要的消息之后时造成问题。
44.相比来说,图5b展示在快闪接口cpu处利用多个基于裸片的读取错误恢复消息队列的ipc消息调度过程的框图550。如上文图5a中所描述,在图5b中,当将命令及消息发射到cpu时,所述命令及消息被添加到适当ipc队列的末尾(步骤552)。ipc队列包含多个基于裸片的错误恢复队列558、低优先级命令队列554及基于裸片的主机读取命令队列556。当cpu根据轮循或其它选择方案从队列的头部提取命令及消息(步骤560)时,从包含针对每一裸片的错误恢复队列的队列的头部中的每一者提取命令或消息。cpu以基于裸片的错误恢复消息队列558开始且提取每一队列的头部处的消息以形成命令564以供进行调度,然后继续(步骤562)提取主机读取命令队列556中的每一者的头部处的命令以形成命令566以供进行调度,且最后(步骤562)提取低优先级命令队列554中的每一队列的头部处的命令以形成命令568以供进行调度。处理来自包含多个基于裸片的错误恢复消息队列558、多个主机读取
命令队列556及多个低优先级命令队列554的各种队列的头部的所有命令及消息,且形成命令并调度命令以供发射到快闪接口控制器以便执行命令或采取各种动作(步骤570)。
45.调度来自基于裸片的错误恢复队列的消息会实现读取错误恢复消息的优化处置同时减少在错误校正期间的总固件开销。快闪接口cpu能够更灵活地调度及处理错误恢复消息同时还处理及调度其它命令及消息。此外,基于裸片的错误恢复队列可容易地缩放以适应各种nand架构(例如基于iod及io流的架构)以便改进这些装置上的错误处置。基于裸片的错误恢复队列还可改进可能对错误校正码(“ecc”)错误较敏感的四电平单元(“qlc”)装置的错误处置。在一些实施方案中,可将基于裸片的错误恢复消息ipc队列进一步划分成ssd的每一裸片队列内具有异步独立平面读取功能性(“启用了aipr”)的基于平面的队列,使得每一裸片的两个平面可被独立且并行地存取以实现裸片上的错误恢复的优化处置。此过程进一步描述于2020年9月16日提出申请且涉及启用了aipr的ssd中的具有进一步的基于平面的队列的基于裸片的高及低优先级错误队列的使用的标题为“启用了aipr的ssd的基于平面的队列配置(plane-based for aipr-enabled drives)”的第17/022,911号美国专利申请案中。
46.在一些实施方案中,可通过还考虑且计及错误恢复消息的优先级、通过针对每一基于裸片的错误恢复消息队列实施例如高优先级错误恢复消息队列及低优先级错误恢复消息队列等的两个或更多个优先级队列而进一步提高调度及执行错误恢复消息的效率。还可实施其它优先等级,或可将优先等级指派到裸片的子组,如下文将进一步论述。图6展示快闪接口cpu 619(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219或图3中的快闪接口cpu 319)处的包含高优先级错误恢复消息队列群组639及低优先级错误恢复消息队列群组643的各种ipc队列群组的框图600。ipc队列群组包含响应消息队列群组637、高优先级错误恢复消息队列群组639、基于主机的命令队列群组641、低优先级错误恢复消息队列群组643及另一命令队列群组645。尽管为清晰起见展示这些队列群组,但在快闪接口cpu处还可实施其它ipc队列。
47.不同类型的读取命令被发布到cpu,包含来自主机的读取命令、压缩读取、巡查读取、物理读取等。不同读取类型各自具有不同等待时间要求;从主机发布的命令具有最严格的等待时间要求,且在后台中在内部发布到驱动器的读取通常是最灵活的。如果在不考虑读取命令的等待时间要求及优先级的情况下将所有读取错误恢复消息分组在一起,那么可能出现其中要求低等待时间的主机发布的读取被卡在用于错误恢复的较低优先级内部读取之后的情况。这显著增加了主机读取的等待时间,且所述问题可在nand块的损耗及年龄增加时更成问题。此问题可在利用单个错误恢复消息队列的情况下、在利用每通道恢复消息队列的情况下或甚至有时在利用基于裸片的错误恢复消息队列的情况下出现。
48.高优先级错误恢复消息队列群组639及低优先级错误恢复消息队列群组643两者均是基于裸片的队列,例如基于裸片的错误恢复消息ipc队列636。高及低优先级基于裸片的错误恢复消息队列使得快闪接口cpu 619能够快速调度去往nand存储器装置的相应裸片的错误恢复消息,以便并行地操作。错误恢复消息的并行操作提高了错误恢复过程的效率且减少了等待时间。此外,通过按优先等级将错误恢复消息分成高优先级错误恢复消息队列群组639及低优先级错误恢复消息队列群组643,快闪接口cpu 619还可计及与读取错误及错误恢复消息相关联的等待时间要求。举例来说,快闪接口cpu 619可取决于失败的读取
命令的类型而将错误恢复消息发送到高或低优先级基于裸片的队列,因为每一类型的读取命令可具有不同的相关联等待时间要求。读取命令的类型可由原始读取命令的来源指示。举例来说,可将与从主机接收的读取命令相关联的错误恢复消息放置于高优先级错误恢复消息ipc队列中,以减少所述消息在被调度之前必须等待的时间量。可将与内部读取命令相关联的错误恢复消息放置到低优先级错误恢复消息ipc队列中。在一些实施方案中,如下文将论述,可基于在上面尝试原始读取命令的目的地裸片而确定错误恢复消息的优先级。在一些实施方案中,对快闪接口cpu处的ipc队列赋予在其当中不同的优先等级以确保重要命令及消息被快速调度。举例来说,主机读取命令群组可具有比低优先级错误恢复消息ipc队列高的优先级,以确保与低优先级消息相比,主机读取被更快地且以更高的频率调度以减少主机读取的等待时间。
49.图7展示利用高及低优先级错误恢复消息的多个基于裸片的读取错误恢复消息队列的ipc消息调度过程的框图700。如上文图5a及5b中所描述,在图7中,在将命令及消息发射到cpu(例如,图1中的快闪接口cpu 119、图2中的快闪接口cpu 219、图3中的快闪接口cpu 319、图6中的快闪接口cpu 619)时,其等被添加到适当ipc队列的末尾(步骤702)。ipc队列包含低优先级命令队列704、低优先级基于裸片的错误恢复消息队列705、基于裸片的主机读取命令队列706及高优先级基于裸片的错误恢复消息队列707。当cpu根据轮循或其它选择方案从队列头部中的每一者提取待调度的命令及消息(步骤710)时,包含从针对每一裸片的高及低优先级错误恢复队列开始轮流提取每一队列的头部处的命令或消息。cpu以高优先级基于裸片的错误恢复消息队列707开始且提取每一基于裸片的队列707的头部处的消息以形成命令713以供进行调度,然后继续(步骤710)提取主机读取命令队列706中的每一者的头部以形成命令714以供进行调度。cpu然后提取低优先级基于裸片的错误恢复消息队列705中的每一者的头部处的消息以形成命令716以供进行调度,且最后提取低优先级命令队列704中的每一者的头部以形成命令718以供进行调度。在此过程之后,处理来自各种队列的头部的所有所选择命令及消息(包含来自高优先级基于裸片的错误恢复消息队列713的消息、来自基于裸片的主机读取命令队列714的命令、来自低优先级错误恢复消息队列716的消息及来自低优先级命令队列718的命令)且发射基于消息的命令或指令信号以供执行(步骤720)。
50.通过包含基于裸片的错误恢复消息队列以及这些每裸片队列的高及低优先等级,可达成较高调度效率。在一些实施方案中,cpu可基于失败的读取命令的类型确定每一读取错误恢复消息应被指派哪一队列。举例来说,如果失败的读取命令是内部读取命令,那么可将其指派到低优先级队列,且如果失败的读取命令是主机发起的读取命令,那么可将其指派高优先级队列。cpu从裸片队列中的每一者的高及低优先级队列中的每一者提取消息,使得高优先级错误恢复消息不需要在队列中在若干个低优先级消息之后等待。可处理消息且可将基于消息的读取命令或其它错误恢复指令并行地发射到快闪接口控制器及发射到nand装置以提高错误校正及数据恢复的效率。
51.在一些实施方案中,将每一基于裸片的错误恢复消息队列分成高优先级队列及低优先级队列,使得存在两倍于nand存储器装置中的裸片的队列。在一些实施方案中,将每一基于裸片的错误恢复消息队列分成多个优先级队列,例如三个、四个或更多个不同优先级的队列。将每一基于裸片的队列划分成两个或更多个优先级队列可结合前述实施例中的一
或多者来使用。
52.基于裸片的优先级队列可实施于各种各样的系统中且可被有效地缩放以供在启用iod组的ssd及io流ssd中实施。在启用iod组的ssd及io流ssd中,可将裸片的子组分组且指派共同优先等级、错误恢复要求或水平及/或针对将在裸片的群组处执行的消息及命令的调度机制。可将上文所描述的基于裸片的错误恢复消息队列结构或方法中的任一者在逻辑上分组以支持启用iod组的ssd及io流ssd。图8到10图解说明此系统在启用iod组的ssd中的实施方案,且图11到12图解说明其在io流ssd中的实施方案。图8a展示启用iod组的ssd裸片阵列的框图800。启用iod组的ssd定义若干个裸片组,且可为每一组指派不同任务或优先级。启用iod组的ssd因根据用户要求将裸片分组及定义裸片组的能力而具有增加的灵活性。启用iod组的ssd包含可基于用户要求被指派不同错误恢复要求、调度机制及错误校正水平的“经结合(clubbed)”或经分组裸片。图8a的启用iod组的ssd包含具有8个通道804及8个裸片802的ssd裸片阵列。所述裸片阵列包含十六个裸片的四个经定义组:第一组814、第二组816、第三组818,及第四组820。每一两通道组的逻辑块的所有裸片均含于两个通道内,如由第一组814、第二组816、第三组818及第四组820的各种图案图解说明。
53.图8b展示图解说明与每一组相关联的用于将错误恢复消息发射到快闪接口cpu中的队列的框图801。框图801展示第一快闪接口cpu 811及第二快闪接口cpu 813。第一组814的队列及第二组816的队列进入第一快闪接口cpu 811。第三组818及第四组820的队列进入第二快闪接口cpu 813。每一队列包含基于裸片的优先级队列,且每一组裸片由cpu基于指派到所述组的特性(例如,基于所指派错误恢复要求、调度机制或所述组的错误恢复水平)来处理。因此,第一组814的队列包含针对所述组中的裸片中的每一者的高优先级及低优先级队列。cpu基于组的预定特性从这些队列的头部提取消息。举例来说,cpu可根据与另一组不同的调度算法从一个组提取消息。cpu还可利用预定特性来确定将用于恢复数据或校正错误的错误恢复算法。
54.图9a及9b分别展示启用iod的ssd裸片阵列的4通道
×
4存储器库配置及4通道
×
8存储器库配置的错误恢复消息到基于裸片的队列的映射的框图。图9a图解说明4通道启用iod的ssd裸片阵列中的2通道iod组的通道904及存储器库906到基于裸片的错误恢复消息队列902的映射900。映射900包含利用通道0及1的第一组903a-d,以及利用通道2及3的第二组905a-d。图9b图解说明通道914及存储器库916到基于裸片的错误恢复消息队列912的映射901。映射901包含利用通道0及1的第一组913a-h,以及利用通道2及3的第二组915a-h。当消息进入快闪接口cpu中,其基于映射900及901被指派到队列且根据指派到组的特性来提取及调度。在一些实施方案中,启用iod的ssd裸片阵列上的至少一组裸片被指派cpu在调度去往所述至少一组的消息时计及的优先级。在一些实施方案中,消息可基于所述消息中指示优先等级、目的地裸片或相关联读取命令的起源的额外信息进一步被指派到特定裸片队列内的优先级队列。图9a及9b中的映射通过将队列映射到通道使得可并行地利用nand总线而利用通道并行化,从而减少等待时间且提高错误恢复效率。
55.图10展示利用启用iod的ssd的高及低优先级命令的多个基于裸片的读取错误恢复消息队列的ipc消息调度过程的框图1000。在图10中,将命令及消息发射到cpu(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219、图3中的快闪接口cpu 319、图6中的快闪接口cpu 619或图8中的快闪接口cpu 811及813)且将其添加到适当ipc队列的末尾(步骤
1002)。ipc队列包含多个低优先级命令队列1004、基于裸片的低优先级读取错误恢复消息队列1005、基于裸片的主机读取命令队列1006及基于裸片的高优先级读取错误恢复消息队列1007。低优先级读取错误恢复消息队列1005及高优先级读取错误恢复消息队列1007中的每一者进一步包含启用iod组的ssd的经定义组的多个子群组。高优先级读取错误恢复消息队列1005包含第一高优先级子群组1027及第二高优先级子群组1037。低优先级读取错误恢复消息队列1007包含第一低优先级子群组1025及第二低优先级子群组1035。当cpu根据轮循或其它选择方案从队列中的每一者的头部提取命令及消息(步骤1010)时,从队列的头部中的每一者提取命令或消息,所述队列包含针对每一优先等级中的每一裸片及针对每一子群组(或启用iod的ssd内的经定义组)的读取错误恢复消息队列。cpu通过从基于裸片的高优先级读取错误恢复消息队列1007的头部提取消息而开始,且提取第一高优先级子群组1027中的每一队列的头部处的消息以形成命令1013以供进行调度,并提取第二高优先级子群组1037中的每一队列的头部处的消息以形成命令1015以供进行调度。cpu然后(步骤1012)提取主机读取命令队列1006中的每一者的头部处的命令以形成命令1014以供进行调度。cpu然后提取低优先级读取错误恢复消息队列1005的第一低优先级子群组1025中的每一队列的头部处的消息以形成命令1016以供进行调度,后续接着提取低优先级读取错误恢复消息队列1005的第二低优先级子群组1035中的每一队列的头部处的消息以形成命令1017以供进行调度。最后,cpu提取低优先级命令队列1004中的每一队列的头部处的命令以形成命令1018以供进行调度。cpu处理来自高优先级读取错误恢复消息队列1007的第一高优先级子群组1027及第二高优先级子群组1037中的每一者中的每一基于裸片的队列、主机读取命令队列1006中的基于裸片的队列、低优先级读取错误恢复消息队列1005的第一低优先级子群组1025及第二低优先级子群组1035的基于裸片的队列以及低优先级命令队列1004的基于裸片的队列的头部的所选择命令及消息中的每一者,且基于所述消息形成然后被发射以供执行的命令或信号(步骤1020)。
56.图11展示启用io流的ssd裸片阵列的框图1100。启用io流的ssd通过将跨域多个通道散布的裸片分组而定义若干个流,且如同启用iod组的ssd,基于用户要求为每一流指派不同任务或特性。举例来说,每一流可被指派不同于其它流的错误恢复要求、调度机制或错误校正水平。启用io流的ssd因根据用户要求将裸片分组及定义裸片的流的此能力而具有增加的灵活性。图11的启用io流的ssd包含具有八个通道1104及八个裸片1102的ssd裸片阵列。所述裸片阵列包含十六个裸片的四个经定义组:第一组1114、第二组1116、第三组1层118,及第四组1120。每一流的逻辑块在多个通道上的裸片当中散布,如由第一组1114、第二组1116、第三组1层118及第四组1120的各种图案图解说明。如上文所描述在每裸片基础上定义高及低优先级错误恢复消息队列在对固件做出非常少的改变的情况下与启用io流的ssd兼容。
57.图12a及12b分别展示2存储器库启用io流的ssd裸片阵列的4通道
×
4存储器库配置及2存储器库启用io流的ssd裸片阵列的4通道
×
8存储器库配置的错误恢复消息到基于裸片的队列的映射的框图。图12a图解说明2存储器库io流的4通道
×
4存储器库配置的通道1204及存储器库1206到基于裸片的错误恢复消息队列1202的映射1200。映射1200包含:第一流1203,其包含来自第一存储器库(存储器库0)及第二存储器库(存储器库1)的裸片;及第二流1205,其包含来自第三存储器库(存储器库2)及第四存储器库(存储器库3)的裸片。
图12b展示2存储器库io流的4通道
×
8存储器库配置的通道1214及存储器库1216到基于裸片的错误恢复消息队列1212的映射1201的框图。映射1201包含由表的不同阴影指示的四个流:第一流1213,其包含来自第一及第二存储器库(存储器库0及存储器库1)的裸片;第二流1215,其包含来自第二及第三存储器库(存储器库2及存储器库3)的裸片;第三流1217,其包含来自第五及第六存储器库(存储器库4及存储器库5)的裸片;及第四流1213,其包含来自第七及第八存储器库(存储器库6及存储器库7)的裸片。
58.图13展示用于利用基于裸片的队列调度错误恢复指令(本文中还称为错误恢复消息)的方法1300的流程图。错误恢复指令的调度是在快闪接口cpu(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219、图3中的快闪接口cpu 319、图6中的快闪接口cpu619或图8中的快闪接口cpu 811及813)处进行处置。在步骤1302处,快闪接口cpu接收存储器装置内耦合到快闪接口cpu的存储器裸片当中的目的地裸片上的读取错误的指示。所述指示是响应于对目的地裸片的经尝试读取而接收,所述经尝试读取由于错误而失败。在步骤1304处,快闪接口cpu响应于读取错误的指示而创建错误恢复指令。错误恢复指令指示已发生错误,且还可指示上面发生错误的目的地裸片以及关于在存储器裸片上的错误中发生了什么及可如何恢复错误的信息。在一些实施方案中,错误恢复指令还包含关于所发生的错误的类型或严重性的指示。
59.在步骤1306处,快闪接口cpu确定错误恢复指令的目的地裸片。在一些实施方案中,错误恢复指令的目的地裸片与失败的读取命令的目的地裸片相同。在一些实施方案中,可规定多于一个目的地裸片。错误恢复指令所需的错误恢复的规范可取决于ssd所利用的错误恢复算法及错误的类型或位置。在一些实施方案中,快闪接口cpu还可基于错误恢复消息做出其它确定,举例来说,快闪接口cpu可确定错误恢复消息的优先级(如下文图14中将描述)或目的地裸片的目的地平面。快闪接口cpu可使用这些额外确定来确定错误恢复指令将被发送到哪一裸片队列或裸片队列内的哪一优先级或平面队列。在步骤1308处,快闪接口cpu基于错误恢复消息的目的地裸片将错误恢复指令发送到裸片队列。快闪接口cpu处的错误恢复指令ipc队列包含存储器装置的每裸片至少一个队列,且快闪接口cpu将错误恢复指令发送到目的地裸片的裸片队列。错误恢复指令被发送到裸片队列的末尾,且随着从队列的头部提取其它指令以形成命令以供由快闪接口cpu进行调度而穿过队列向上移动,并随后被从队列移除。
60.在步骤1310处,快闪接口cpu在错误恢复指令到达裸片队列的头部时从裸片队列提取错误恢复指令。然后将错误恢复指令从裸片队列移除,且形成命令并由快闪接口cpu调度所述命令。快闪接口cpu根据确定消息及指令的选择的调度算法轮流选择每一队列的头部处的指令。在一些实施方案中,调度算法是轮循选择方法。在步骤1312处,快闪接口cpu基于错误恢复消息对目的地裸片执行读取错误恢复。快闪接口cpu将实施读取错误恢复的命令发送到裸片。所执行的读取错误恢复取决于ssd所利用及错误类型所需要的恢复策略的类型。在一些实施方案中,从队列提取的错误恢复指令致使将一或多个读取命令发送到裸片。所述读取命令可包含用于软读取过程的不同v
th
电压阈值,以重新尝试读取及从读取错误进行恢复。在一些实施方案中,从队列提取的错误恢复指令通过致使经由第一通道将第一读取命令发射到第一目的地裸片及经由第二通道将第二读取命令发射到第二目的地裸片而导致从两个或更多个裸片的冗余辅助型恢复。在一些实施方案中,这通过使用四重摆
动码(quadruple swing-by code,qsbc)错误校正码将裸片中的数据编码而达成。在一些实施方案中,这通过使用包含但不限于raid码及擦除码的其它数据冗余码将裸片中的数据编码而达成。错误恢复策略中的每一者可结合前述实施例中的一或多者来使用。
61.图14展示用于利用基于裸片的队列及优先级队列调度错误恢复指令的方法1400的流程图。如上文图13中所描述,错误恢复指令的调度是在快闪接口cpu(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219、图3中的快闪接口cpu 319、图6中的快闪接口cpu 619或图8中的快闪接口cpu 811及813)处进行处置。在步骤1402处,快闪接口cpu接收存储器装置内耦合到快闪接口cpu的存储器裸片当中的目的地裸片上的读取错误的指示。在步骤1404处,快闪接口cpu响应于读取错误的指示而创建错误恢复指令。在步骤1406处,快闪接口cpu确定错误恢复指令的目的地裸片。
62.图14的方法与图14的方法的不同之处在于,在步骤1408处,快闪接口cpu确定错误恢复消息的优先级。在步骤1410处,快闪接口cpu基于错误恢复指令的目的地裸片及经确定优先级而将错误恢复指令发送到裸片优先级队列。快闪接口cpu处的ipc队列包含针对存储器装置的每一裸片的错误恢复指令队列。每一裸片队列包含两个或更多个优先级队列。这可替代地表达为快闪接口cpu处的错误恢复指令ipc队列包含两个或更多个优先级队列,每一优先级队列划分成对应于耦合到快闪接口cpu的数目n个裸片的n个裸片队列。举例来说,如果存储器装置包含32个裸片,那么将存在32个裸片队列,每一裸片队列分成高及低优先级队列使得总共存在64个队列。虽然将优先级队列描述为高及低优先级队列,但可存在优先级的其它命名使得每一裸片队列包含多于两个优先级队列。
63.在步骤1412处,快闪接口cpu在错误恢复指令到达裸片优先级队列的头部时从裸片优先级队列提取错误恢复指令,且基于错误恢复消息中所含的信息形成并调度一或多个命令。在步骤1414处,快闪接口cpu基于错误恢复消息对目的地裸片执行读取错误恢复。
64.图15展示用于利用启用iod组的ssd或启用io流的ssd的基于裸片的队列及优先级队列调度错误恢复指令的方法1500的流程图。如上文图13及14中所描述,错误恢复指令的调度是在快闪接口cpu(例如图1中的快闪接口cpu 119、图2中的快闪接口cpu 219、图3中的快闪接口cpu 319、图6中的快闪接口cpu 619或图8中的快闪接口cpu 811及813)处进行处置。在步骤1502处,快闪接口cpu接收存储器装置内耦合到快闪接口cpu的存储器裸片当中的目的地裸片上的读取错误的指示。在步骤1504处,快闪接口cpu响应于读取错误的指示而创建错误恢复指令。在步骤1506处,快闪接口cpu确定错误恢复消息的目的地裸片及优先级。在一些实施方案中,cpu可基于导致错误恢复消息的读取命令的类型做出优先级确定。
65.在步骤1508处,快闪接口cpu确定错误恢复消息的目的地裸片的子群组。启用iod组的ssd或启用io流的ssd将nand存储器装置上的裸片组或流定义为群组或子群组,且将例如对所述组或流中的一或多者的不同调度机制、错误校正水平或错误恢复要求等的特性指派到所述群组。在一些实施方案中,为每一裸片群组指派不同调度机制、错误校正水平或错误恢复要求中的至少一者。在步骤1510处,快闪接口cpu基于错误恢复消息的目的地裸片、经确定优先级及目的地裸片的经确定子群组将错误恢复指令发送到裸片优先级子群组队列。快闪接口cpu处的ipc队列包含针对存储器装置的每一裸片的错误恢复指令队列。每一裸片队列包含两个或更多个优先级队列,且裸片队列被进一步分组以反映ssd的经指派子群组。这可替代地表达为快闪接口cpu处的错误恢复指令ipc队列包含两个或更多个优先级
队列,每一优先级队列划分成对应于耦合到快闪接口cpu的每m通道数目n个裸片的n x m个裸片队列,其中n x m个裸片队列经分组以反映经指派组或流。举例来说,如果存储器装置总共包含32个裸片,那么将存在32个裸片队列,每一裸片队列分成高及低优先级队列使得总共存在64个队列,其中所述队列通过子群组被分组以易于由cpu处理,或其中不同子群组可具有不同错误恢复机制。虽然将优先级队列描述为高及低优先级队列,但可存在p个优先等级的其它命名,使得每一裸片队列包含多于两个优先级队列。
66.在步骤1512处,快闪接口cpu在错误恢复指令到达裸片优先级队列的头部时从裸片优先级队列提取错误恢复指令。快闪接口cpu形成用于调度的一或多个命令,其中所形成的命令基于指派到子群组的特性,且在一些实施方案中还基于经提取错误恢复消息中的信息及指令。在步骤1514处,快闪接口cpu基于错误恢复指令及指派到子群组的特性对目的地裸片执行读取错误恢复。
67.将错误恢复指令发送到特定于错误恢复指令的目的地裸片及优先级的队列会提高指令调度及错误恢复的效率。基于裸片的错误恢复队列及基于优先级的错误恢复队列降低了高优先级指令将在队列中置于低优先级消息之后的可能性且改进了调度系统的等待时间。读取错误恢复指令的基于裸片及优先级的优化处置减少了在错误恢复期间的总固件开销,且快闪接口cpu能够更灵活地调度错误恢复指令同时还处理及调度其它命令、消息及指令。
68.此外,基于裸片的错误恢复消息队列可容易地缩放以改进上文图8到12中所描述的例如启用iod组的ssd架构及启用io流的ssd架构等的各种nand架构上的错误处置。启用iod组的ssd架构及启用io流的ssd架构定义ssd上的裸片的子群组,所述子群组可取决于用户要求而被指派不同任务或特性。裸片的子群组可被指派不同调度机制、错误校正水平或错误恢复要求以支持用户要求,且通过根据子群组将错误恢复指令优先级裸片队列分组,cpu可利用群组的经指派特性来调度指令或执行数据及错误恢复。利用通过启用iod组的ssd及启用io流的ssd允许的子群组的引入,cpu在调度及执行错误恢复方面的经改进灵活性提高了cpu的效率,减少了在错误恢复期间的开销,且减少了等待时间以实现读取错误的优化处置。
69.本发明的各种方面的其它目标、优点及实施例将为所属领域的技术人员所明了且在说明及附图的范围内。举例来说但不具限制地,可与本发明一致地重新布置结构或功能元件。类似地,根据本发明的原理可应用于其它实例,所述实例即使未在此处经详细地具体描述,但仍将在本发明的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1