改善固态驱动器的耐用性和可维修性的制作方法



1.实施例总体上涉及计算系统。更具体地,实施例涉及通过智能驱动器磨损管理来改善固态驱动器的耐用性和可维修性(serviceability)。


背景技术:



2.许多计算系统依赖于利用固态存储器驱动器的存储设备。通常,在此类系统中,基于每个驱动器的写入(诸如例如,nand写入)的速率,各个固态驱动器(ssd)将相对于系统中的其他固态驱动器非均匀地磨损。由于从系统部署到第一次驱动器维修的时间并非基于所有驱动器的nand写入的平均速率,而是基于写入最多的驱动器的nand写入的速率,因此固态驱动器的此类非均匀磨损负面地影响存储子系统的可用性。由于每个驱动器在其故障时被单独地维修,因此固态驱动器的非均匀磨损还负面地影响存储子系统的可维修性。此类非均匀磨损是由于诸如以下各项之类的因素:热点,其中一些驱动器由于频繁引用的块而接收到相对于其他驱动器更高速率的nand写入;以及分层,其中,一些驱动器被用作高速缓存驱动器,其中它们提供用于最近使用的数据的临时存储。
3.当前的存储磨损调平算法被设计成用于通过跨驱动器的各个块对写入的均匀分发来延长各个ssd的寿命。然而,这些解决方案并未解决存储子系统的多个驱动器之间的输入/输出(i/o)写入非对称性。基于驱动器上所存储的实际内容以及该内容的相对访问模式,存储子系统内的一些驱动器可具有相较于其他驱动器更高的向其写入的nand字节的速率,从而导致驱动器之间磨损水平的偏差。
附图说明
4.通过阅读以下说明书和所附权利要求书并通过参考以下附图,实施例的各种优势对本领域技术人员将变得显而易见,在附图中:
5.图1a提供了图示出根据一个或多个实施例的用于驱动器磨损管理的示例计算系统的框图;
6.图1b提供了图示出根据一个或多个实施例的用于管理驱动器磨损的示例过程流程的流程图;
7.图2a-图2f提供了图示出根据一个或多个实施例的驱动器磨损管理的示例的示图;
8.图3a-图3f提供了图示出根据一个或多个实施例的驱动器磨损管理的另一示例的示图;
9.图4a-图4b提供了图示出根据一个或多个实施例的用于管理驱动器磨损的示例过程的流程图;
10.图5提供了图示出根据一个或多个实施例的用于驱动器磨损管理的示例系统的框图;
11.图6是图示出根据一个或多个实施例的用于驱动器磨损管理的示例半导体设备的
框图;
12.图7是图示出根据一个或多个实施例的示例处理器的框图;以及
13.图8是图示出根据一个或多个实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
14.如本文中所描述的改善的计算系统提供用于监视、跟踪历史使用趋势并提供使存储设备均匀地磨损而与热点或分层属性无关的优化建议的技术。技术可提供用于存储管理的特定优化动作来智能地在重度磨损的驱动器与轻微磨损的驱动器之间轮换驱动器内容(例如,图像、元数据、文件、块等)。另外,技术可准许成组地管理驱动器,以通过在单次维护事件中维修许多接近故障的驱动器而使可预测或排程的维护事件的数量最小化的方式推荐动作。技术还可提供驱动器角在高速缓存与容量层之间的智能轮换。
15.相应地,本文中所描述的技术将磨损调平扩展至存储阵列/子系统级别。为了跨存储阵列的驱动器使磨损水平均匀,技术可标识存储阵列内具有较高磨损的驱动器并用磨损较少的驱动器来轮换它们。由此,作为一项维护活动,可周期性地轮换存储层内的驱动器。更具体地,可通过量化驱动器上的磨损水平、在磨损水平的基础上对其进行分类并在驱动器之间调换数据来实现驱动器轮换。此种在层内轮换驱动器的方法可扩展至使驱动器在存储子系统的高速缓存与容量层之间轮换。
16.此种轮换效应可通过减小跨驱动器的磨损水平的偏差来增强存储子系统的操作寿命,直到该子系统中的大多数驱动器接近其寿命的结束。另外,对驱动器进行分类提供了标识具有类似健康和磨损特性的驱动器组,使得能够对驱动器的子集进行批量管理。进而,这引起系统可维修性成本的降低和系统停机时间的减少。
17.出于量化驱动器(例如,固态驱动器)上的磨损量的目的,可定义磨损值度量(本文中被称为磨损_值(wear_value))。磨损_值度量可被计算为驱动器的磨损属性和健康统计(本文中被统称为磨损属性)的函数。此类磨损属性可以是预先存在的,或者是从预先存在的组件推导的。例如,技术可从smart(自我监测、分析和报告技术)推导出每个驱动器的一些或全部磨损属性,smart是一种报告驱动器的各种属性和健康统计的存储监测组件(由和其他固态驱动器设备支持)。在高级别,预测驱动器的耐用性所需要的数据可包括诸如驱动器尺寸、编程/擦除周期数、写入到驱动器的总的主机/nand字节、写入放大因数、出故障的块的总数量、剩余保留的块的数量、驱动器保修结束日期、和/或设备温度之类的磨损属性。可周期性地或不断地收集、记录和处理此种信息,以标识驱动器的特性的历史趋势,并且可随时间在数据库中维护此种信息。此类经处理的信息可用于计算或更新磨损_值度量,该磨损_值度量也可随时间在数据库中进行维护。
18.由于针对每一个驱动器来对磨损属性进行轮询,因此不论是先前存在的还是新引入的,磨损_值度量均可被计算,并且基于该值,驱动器可被分派有等级。可基于驱动器的等级或磨损_值而将存储阵列分割为驱动器的子集或组。每个驱动器组可具有指示该组中的每个驱动器处于类似的寿命和磨损范围内的共同等级桶(即,相同或类似的等级)。按等级或磨损_值对驱动器进行分组提供了在等级桶内进行磨损调平的能力,实现一个或多个驱动器组的批量可维修性,而不是要求对各个驱动器进行维修。此外,通过对驱动器进行分组,驱动器之间的磨损调平可被包含到等级桶内的驱动器,从而防止诸如例如其中
具有较长保修期的新驱动器可能由于用更靠近其保修结束日期的较旧的驱动器来轮换而遭受密集的磨损之类的不想要的影响。由此,将驱动器分组为等级桶有助于标识具有类似磨损属性的驱动器并使其均匀地磨损。
19.另外,轮换计数器值(本文中被称为轮换_计数器(rotation_counter))可针对阵列中的每个驱动器而被维护,反映驱动器已经使内容与另一驱动器交换(轮换)的次数。每当驱动器经历轮换时(即,当与另一驱动器交换内容时),轮换_计数器可针对该驱动器递增。检查驱动器已经被轮换的次数可有助于确保驱动器相较于组中的其他驱动器不会过于经常地经受轮换。
20.本文中所公开的用于驱动器磨损管理的技术可应用于诸如固态驱动器之类的存储驱动器。此类驱动器可包括存储器设备,诸如ram、固件、闪存等。如下文所讨论,此类驱动器可被包括在存储22中,作为本文中参考图5所描述的计算系统10的部分。
21.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图1a提供了图示出根据一个或多个实施例的用于驱动器磨损管理的示例计算系统100的框图。系统100可包括驱动器排序模块101、磨损评估模块102以及内容交换模块103。系统100还可包括用于执行一个或多个程序以实施驱动器排序模块101、磨损评估模块102和/或内容交换模块103的功能的处理器(未示出)。系统100可进一步包括固态驱动器阵列(未示出)或与其进行数据通信。驱动器排序模块101、磨损评估模块102和/或内容交换模块103中的每一者可由操作系统执行或在操作系统的指引下执行,该操作系统诸如例如,在计算系统100上或在(本文中参考图5所描述的)计算系统10上运行的操作系统。更具体地,驱动器排序模块101、磨损评估模块102和内容交换模块103中的每一者可在一个或多个模块中被实现为逻辑指令的集合,这些逻辑指令被存储在诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)之类的可配置逻辑中,被存储在使用诸如例如专用集成电路(asic)、互补式金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术之类的电路技术的固定功能逻辑硬件中,或被存储在上述各项的任何组合中。
22.例如,可以用一种或多种编程语言的任何组合来编写用于实施由驱动器排序模块101、磨损评估模块102和/或内容交换模块103执行的操作的计算机程序代码,这些编程语言包括诸如java、smalltalk、c++等之类的面向对象的编程语言以及诸如“c”编程语言或类似编程语言的之类的常规的过程编程语言。另外,逻辑指令可包括汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/cpu、微控制器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
23.驱动器排序模块101可针对驱动器阵列中的每个驱动器确定磨损值度量作为该驱动器的磨损水平的指示符。磨损值度量可以被计算为驱动器的磨损属性的函数,并且可表示驱动器上的磨损量。驱动器排序模块101还可基于驱动器的相应的磨损值度量来对它们进行排序或排名。驱动器排序模块101还可将经排序或经排名的驱动器划分(或分组)为组。磨损评估模块102可通过确定驱动器组中相应的驱动器对之间磨损值的差来评估驱动器中的磨损。可相对于磨损偏差阈值来评估磨损值的差。可基于驱动器磨损值和驱动器
轮换计数器值来选择驱动器组中相应的驱动器对。轮换计数器值可表示已经用另一驱动器来对驱动器进行轮换(内容交换)的次数。针对相应驱动器对中的具有超出磨损偏差阈值的磨损值的差的至少一个驱动器对,内容交换模块103可在该对中的第一驱动器与该对中的第二驱动器之间交换内容。在驱动器对中的驱动器之间交换内容可包括在第一驱动器与第二驱动器之间交换所有文件,或者仅用具有较高磨损的驱动器的热文件来交换较低磨损的驱动器的文件。
24.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图1b提供了图示出根据一个或多个实施例的用于管理驱动器磨损的示例过程流程105的流程图。过程105提供采用驱动器内容的轮换的形式的驱动器磨损优化推荐,以使存储设备均匀地磨损。过程105可被实现在计算系统中,该计算系统诸如例如,计算系统100(图1a,已讨论)或者系统10(本文中参考图5所描述)。过程105可由操作系统(例如,在计算系统100或计算系统10上运行的操作系统)执行或在操作系统的指引下执行。更具体地,过程105可在一个或多个模块中被实现为逻辑指令的集合,这些逻辑指令被存储在诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)之类的可配置逻辑中,被存储在使用诸如例如专用集成电路(asic)、互补式金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术之类的电路技术的固定功能逻辑硬件中,或被存储在上述各项的任何组合中。
25.例如,可以用一种或多种编程语言的任何组合来编写用于实施过程105中所示的操作的计算机程序代码,这些编程语言包括诸如java、smalltalk、c++等之类的面向对象编的程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程编程语言。另外,逻辑指令可包括汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/cpu、微控制器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
26.计算系统实现的、用于管理驱动器磨损的过程流程105可包括存储驱动器阵列或可与其进行数据通信。驱动器可以是固态驱动器(ssd)。驱动器阵列可包括数个(n个)驱动器,期望针对这些驱动器来管理驱动器磨损。
27.转向图1b,所图示的处理框110提供:针对驱动器阵列中的每个驱动器,确定磨损_值度量作为该驱动器的磨损水平的指示符。如已经讨论的,磨损_值度量可以被计算为驱动器的磨损属性的函数,并且可表示驱动器上的磨损量。磨损_值度量可在从最小值到最大值的范围内。例如,在一些实施例中,磨损_值度量的范围可以是0到1,其中0指示新的健康驱动器并且1指示驱动器需要被替换。
28.所图示的处理框120提供:基于驱动器的相应的磨损_值来对这些驱动器进行排序(或排名)。在一些实施例中,可基于被分派给驱动器的等级(其中,该等级基于磨损_值)来对驱动器进行排序或排名。
29.所图示的处理框130提供:将经排序或经排名的驱动器划分成m个组,其中每个组具有x个(或大约x个)驱动器。x可例如基于解决方案中驱动器的总数量的百分比来确定,或者可基于其他标准来确定。每个组可被分派有组编号(例如,在1到m的范围内)。在一些实施例中,驱动器的等级可作为整体被分派至组(例如,基于该组的平均磨损_
值)。
30.在每个组内,驱动器被管理以收到均匀磨损。这可通过在每个组m中检查该组的相应驱动器对(d
x
和dy)之间的磨损水平(例如,磨损值)的偏差(如在所图示的处理框140中所示)来实现。相应的驱动器对(d
x
和dy)可基于例如组中的具有最大和最小磨损_值的驱动器来选择,并且随后下一对可基于组中的剩余驱动器中的具有最大和最小磨损_值的驱动器来选择,并且依此类推,直到组中的所有驱动器均已被考虑。换言之,可从组的经排序或经排名的驱动器列表的相对端处的驱动器中选择驱动器对。
31.当在组(或等级桶)内驱动器正在被轮换时,可检查轮换_计数器值,以查看驱动器是否已经承受了多于组的平均值的轮换。在一些实施例中,驱动器的轮换_计数器值可在该驱动器被选择作为用于磨损评估的驱动器对中的一个时被检查。如果该驱动器的轮换_计数器值大于该组中驱动器的轮换_计数器值的平均值,则该驱动器被跳过,并且列表上的下一驱动器被替换在该对中(并且其轮换_计数器值可被检查)。替代地,在一些实施例中,可在配对之前检查驱动器的轮换_计数器值,以查看其是否大于该组中的驱动器的轮换_计数器值的平均值;如果是,则驱动器被跳过而不会进行配对。
32.所图示的处理框150提供:确定驱动器对(d
x
相对于dy)的磨损_值之间的差是否大于指定的磨损偏差阈值δ
t
。如果差大于δ
t
,则在所图示的处理框155处,可对该驱动器对中的每个驱动器的轮换_计数器值进行检查(如果先前在框140处未检查),以查看其是否大于该组中的驱动器的轮换_计数器值的平均值。如果是(即,驱动器轮换_计数器值大于平均值),则具有大于平均轮换_计数器值的驱动器(或多个驱动器)被跳过,并且在所图示的处理框157处,下一驱动器(或多个驱动器)被替换到该对中(分别替换d
x
和/或dy),并且过程返回至框150,以用于相对于磨损偏差阈值条件进行评估。如果驱动器对中的每个驱动器的轮换_计数器值均小于组的平均轮换_计数器值,则过程随后继续在框160处针对该对来交换驱动器内容。如果已经针对该对中的驱动器检查了轮换_计数器值(在框140处),则在框155处不执行对轮换_计数器值的检查,并且过程随后继续在框160处针对该对来交换驱动器内容。
33.继续所图示的处理框150,如果驱动器对(d
x
相对于dy)的磨损_值之间的差小于或等于δ
t
,则过程跳过针对该对来交换驱动器内容,并且进行至框180。将会理解,对磨损偏差阈值的评估(框150)和对轮换计数的评估(框155)可以以相反的顺序执行,以使得框155处的评估可在框150处的评估之前被执行。
34.所图示的处理框160提供:在该驱动器对中的驱动器d
x
与dy之间交换(即,调换)内容。在一些实施例中,每个驱动器的所有内容可被交换至另一驱动器。在一些实施例中,每个驱动器的内容的仅部分可在驱动器之间交换。作为示例,仅具有较高磨损的驱动器的热文件可交换较低磨损的驱动器的文件。
35.在所图示的处理框170处,由于在框160中驱动器交换了内容,因此驱动器对中的驱动器d
x
和dy的轮换_计数器递增。
36.所图示的处理框180提供:检查以查看在驱动器组中是否存在要评估的附加驱动器对。如果是,则在框185处选择下一驱动器对并且过程返回至框150,在框150处对该下一驱动器对进行评估。如果组不存在附加驱动器对,则过程继续框190。
37.所图示的处理框190提供:检查以查看是否存在要评估的附加驱动器组。如果
是,则在所图示的处理框195处可选择下一驱动器组,并且过程返回至框140并且该驱动器组被评估。在所图示的处理框195处,可设置表示要被评估的下一驱动器组的组编号(m)。如果在框190处组编号m已经被设置为m(驱动器组的总数量),则这将指示没有其他驱动器组要被评估。在框190处,如果不存在更多的驱动器组,则过程到达当前循环的结束。过程可随后返回至开始,以再次重新开始该过程。在一些实施例中,过程可以以周期性的或各种间隔重复。
38.贯穿驱动器寿命,上文所描述的磨损管理过程可以以各种或周期性的间隔(例如,第一周期、第二周期等)重复。例如,在一些实施例中,过程可被排程为在某些时间或某几天、某几周等运行。在一些实施例中,过程可连续地(或接近连续地)重复。
39.以各种或周期性的间隔,在驱动器基于磨损_值(或等级)被排序并划分成组之后,可确定每个组中的驱动器的(多个)磨损_值的平均值。对于给定的组,如果平均值超出潜在的驱动器故障阈值,则该组中的驱动器可针对可维修性被标记。例如,可为组中的驱动器提供维护服务。可基于磨损_值的水平来确定或选择潜在驱动器故障阈值,该潜在驱动器故障阈值表示例如未来一段时间内预期发生故障或故障的风险升高。
40.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图2a-图2f提供了图示出根据一个或多个实施例的驱动器磨损管理的示例的示图。如图2a-图2f中所图示和本文中所描述的示例驱动器磨损管理可例如经由过程105(图1b,已讨论)来执行。
41.图2a图示出具有n个驱动器(n=16)的阵列202。这些驱动器中的每个驱动器可用范围从1到n的驱动器编号来标识(即,d1–d16
)。
42.图2b图示出具有16个驱动器的阵列204,示出每个驱动器的状态,包括驱动器的内容和针对该驱动器所确定的磨损值(例如,如图1b中的磨损_值,已讨论)。出于说明目的,将驱动器内容示出为单个字母(即,以a到p来标记),以在这些驱动器中的每一者中的内容之间进行区分。字母或标签并非以其他方式限制驱动器的实际内容或对驱动器的实际内容进行分类。由此,每个驱动器可包括如例如图像、元数据、文件、块等之类的内容。如图2b中所图示,针对每个驱动器所确定的磨损值范围可在0(无磨损)与1(最高磨损)之间。例如,所图示的驱动器d1包括以a标记的内容并且具有当前磨损值0.72;所图示的驱动器d2包括以b标记的内容并且具有当前磨损值0.5;所图示的驱动器d3包括以c标记的内容并且具有当前磨损值0.4,依此类推到所图示的驱动器d
16
,该驱动器d
16
包括以p标记的内容并且具有当前磨损值0.3。
43.在图2c中,所图示的驱动器已经按磨损值排序(从最低磨损值排列到最高磨损值)并且分组为四个(4个)驱动器组206a-206d,其中每个组具有按增加的磨损值排列的四个(4个)驱动器。如图2c中所图示,可基于磨损值来对驱动器进行分组。出于说明的目的,已分别将驱动器组标记为组1、组2、组3和组4。由此,如示例中所示,所图示的组1包含阵列中具有最低磨损值的驱动器:d7和d8各自具有磨损值0,d
11
具有磨损值0.02,并且d5具有磨损值0.1。此外,如示例中所示,所图示的组4包含阵列中具有最高磨损值的驱动器:d
13
具有磨损值0.55,d9具有磨损值0.6,d1具有磨损值0.72,并且d
14
具有磨损值0.8。图2c中的每个驱动器包括与图2b中示出的相应驱动器相同的内容。
44.可针对磨损水平的偏差来检查每个组中的驱动器对。出于说明目的,可使用被设置为0.1的示例磨损偏差阈值δ
t
评估驱动器对;相应地,对于组中要经受轮换(内容交
换)的驱动器对,该驱动器对的磨损值的差应当大于0.1。考虑组1中的驱动器(图2c),可从组的相对端处的驱动器选择第一驱动器对:d5和d7具有磨损值的差0.1(0.1

0),该差等于(但不大于)δ
t
。类似地,可从组1的列表中的两个剩余驱动器选择下一驱动器对:d
11
和d8具有磨损值的差0.02(0.02

0),该差小于δ
t
。相应地,由于组1中的任一驱动器对均不具有大于磨损偏差阈值δ
t
(在该示例中被设置为0.1)的磨损值的差,因此在组1中的任一驱动器对中的驱动器之间将不交换内容。在一些实施例中,在组中最外侧的驱动器对(表示组中具有最大磨损值差的驱动器对)具有不大于磨损偏差阈值δ
t
的磨损值的差的情况下(如在该示例中),则同一组中剩余的驱动器可被跳过而不对磨损值差进行确定。
45.继续图2c中的驱动器组,可针对磨损水平的偏差来检查组2中的驱动器。可从组的相对端处的驱动器选择第一驱动器对:d
12
和d4具有磨损值的差0.13(0.33

0.2),该差大于δ
t
。可从组2的列表中的两个剩余驱动器选择第二驱动器对:d
16
和d6具有磨损值的差0.05(0.3

0.25),该差小于δ
t
。相应地,由于第一驱动器对(d
12
和d4)具有大于δ
t
的磨损值差,因此来自d
12
的内容将与来自d4的内容进行交换。然而,由于第二驱动器对(d
16
和d6)具有小于δ
t
的磨损值差,因此在这两个驱动器之间将不交换内容。
46.图2d图示出内容交换之前和之后组2中的驱动器的状态。在标签210处,在对内容进行交换之前,组2中的四个驱动器以与图2c中针对组2所示出的相同的顺序和状态(内容和磨损值)示出。由于第一驱动器对(d
12
和d4)具有大于δ
t
的磨损值差,因此来自d
12
的内容l与来自d4的内容d进行交换。这经由代表从d
12
到d4的内容转移的顶部箭头212以及代表从d4到d
12
的内容转移的底部箭头214图示。由于第二驱动器对(d
16
和d6)具有小于δ
t
的磨损值差,因此在这两个驱动器之间将不交换内容,并且由此在这两个驱动器之间没有箭头示出。在标签216处,在内容交换后,组2中的四个驱动器以相同顺序示出(并且具有相同磨损值),以使得在交换后,驱动器d
12
现在包含内容d(来自d4)并且驱动器d4现在包含内容l(来自d
12
)。
47.返回至图2c中的驱动器组,可针对磨损水平的偏差来检查组3中的驱动器。可从组的相对端处的驱动器选择第一驱动器对:d
15
和d3具有磨损值的差0.1(0.5

0.4),该差等于(但不大于)δ
t
。类似地,可从组3的列表中的两个剩余驱动器选择下一驱动器对:d2和d
10
具有磨损值的差0.08(0.5

0.42),该差小于δ
t
。相应地,由于组3中的任一驱动器对均不具有大于磨损偏差阈值δ
t
(被设置为0.1)的磨损值的差,因此在组3中的任一驱动器对中的驱动器之间将不交换内容。
48.继续图2c中的驱动器组,可针对磨损水平的偏差来检查组4中的驱动器。可从组的相对端处的驱动器选择第一驱动器对:d
14
和d
13
具有磨损值的差0.25(0.8

0.55),该差大于δ
t
。类似地,可从组4的列表中的两个剩余驱动器选择第二驱动器对:d1和d9具有磨损值的差0.12(0.72

0.6),该差同样大于δ
t
。相应地,由于第一驱动器对(d
14
和d
13
)具有大于δ
t
的磨损值差,因此来自d
14
的内容将与来自d
13
的内容进行交换。另外,由于第二驱动器对(d1和d9)也具有大于δ
t
的磨损值差,因此来自d1的内容将与来自d9的内容进行交换。
49.图2e图示出内容交换之前和之后组4中的驱动器的状态。在标签220处,在对内容进行交换之前,组4中的四个驱动器以与图2c中针对组4所示出的相同的顺序和状态(内容和磨损值)示出。由于第一驱动器对(d
14
和d
13
)具有大于δ
t
的磨损值差,因此来自d
14
的内容n与来自d
13
的内容m进行交换。这经由代表从d
14
到d
13
的内容转移的顶部箭头222以及
代表从d
13
到d
14
的内容转移的底部箭头224图示。由于第二驱动器对(d1和d9)同样具有大于δ
t
的磨损值差,因此来自d1的内容a与来自d9的内容i进行交换。这经由代表从d1到d9的内容转移的中上部箭头223以及代表从d9到d1的内容转移的中下部箭头225图示。在标签226处,在内容交换后,组4中的四个驱动器以相同顺序示出(并且具有相同磨损值),以使得在交换后,驱动器d
14
现在包含内容m(来自d
13
)并且驱动器d
13
现在包含内容n(来自d
14
)。同样,在标签226处,在交换后,驱动器d1现在包含内容i(来自d9)并且驱动器d9现在包含内容a(来自d1)。
50.图2f图示出在参考图2d-图2e所描述的对内容的交换之后四个驱动器组的状态。组1和组3中的驱动器具有与图2c中示出的(分别为标签206a和206c)相同的状态(磨损值和内容),因为在这些组中的驱动器之间没有文件被交换。组2中的驱动器被示出为按图2d中所图示的(标签216)交换后状态。类似地,组4中的驱动器被示出为按图2e中所图示的(标签226)交换后状态。在一些实施例中,一旦当前周期完成了驱动器交换,则可针对每个组中的驱动器的(多个)磨损值确定平均值。对于给定的组,如果平均值超出潜在的驱动器故障阈值,则该组中的驱动器可针对可维修性被标记。
51.虽然图2中的示图中所图示的示例未示出轮换计数器值,但将理解,该示例中所图示的驱动器中的每一者的轮换计数器值将是相同的值(例如,如果表示磨损管理过程的第一循环或周期,则为值0),以使得轮换计数器值将不会影响所选择的驱动器对。
52.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图3a-图3f提供了图示出根据一个或多个实施例的驱动器磨损管理的另一示例的示图。如图3a-图3f中所图示和本文中所描述的示例驱动器磨损管理可例如经由过程105(图1b,已讨论)来执行。
53.图3a图示出具有16个驱动器的阵列304,其中这些驱动器中的每一者以范围从1到n的驱动器编号来标识(即,d1–d16
)。针对每个驱动器示出包括以下各项的驱动器的状态:驱动器的内容、针对该驱动器确定的磨损值(例如,如图1b中的磨损_值,已讨论)、以及该驱动器的轮换计数器(例如,如图1b中的轮换_计数器,已讨论)。类似于图2b,出于说明目的,将驱动器内容示出为单个字母(即,以a到p来标记),以在这些驱动器中每一者中的内容之间进行区分,并且针对每个驱动器确定的磨损值的范围在0(无磨损)与1(最高磨损)之间。例如,所图示的驱动器d1包括以a标记的内容,具有当前磨损值0.72,并且轮换计数器等于1;所图示的驱动器d2包括以b标记的内容,具有当前磨损值0.61,并且轮换计数器等于0;所图示的驱动器d3包括以c标记的内容,具有当前磨损值0.41,并且轮换计数器等于0,依此类推到所图示的驱动器d
16
,该驱动器d
16
包括以p标记的内容,具有当前磨损值0.3,并且轮换计数器等于0。
54.在图3b中,所图示的驱动器已经按磨损值排序(从最低磨损值排列到最高磨损值)并且分组为四个(4个)驱动器组306a-306d,其中每个组具有按增加的磨损值排列的四个(4个)驱动器。如图3b中所图示,可基于磨损值来对驱动器进行分组。出于说明的目的,已分别将驱动器组标记为组1、组2、组3和组4。由此,如示例中所示,所图示的组1包含阵列中具有最低磨损值的驱动器:d8具有磨损值0,d7具有磨损值0.02,d
11
具有磨损值0.05,并且d5具有磨损值0.1。此外,如示例中所示,所图示的组4包含阵列中具有最高磨损值的驱动器:d9具有磨损值0.63,d
13
具有磨损值0.7,d1具有磨损值0.72,并且d
14
具有磨损
值0.8。图3b中的每个驱动器包括与图3a中示出的相应驱动器相同的内容。
55.可针对磨损水平的偏差来检查每个组中的驱动器对。出于说明性目的,可使用被设置为0.1的示例磨损偏差阈值δ
t
来评估驱动器对。考虑组1中的驱动器(图3b),组的平均轮换计数器值为0,这通过将组1中的每个驱动器的轮换计数器的和(0)除以组中的驱动器的数量(4)来确定。由于组中没有驱动器具有超出平均值的轮换计数器,因此组中没有驱动器将由于轮换计数器值而被跳过。可从组1的相对端处的驱动器选择第一驱动器对:d5和d8具有磨损值的差0.1(0.1

0),该差等于(但不大于)δ
t
。类似地,可从组1的列表中的两个剩余驱动器选择下一驱动器对:d
11
和d7具有磨损值的差0.03(0.05

0.02),该差小于δ
t
。相应地,由于组1中的任一驱动器对均不具有大于磨损偏差阈值δ
t
(在该示例中被设置为0.1)的磨损值的差,因此在组1的任一驱动器对中的驱动器之间将不交换内容。在一些实施例中,在组中最外侧的驱动器对(表示具有最大磨损值差的驱动器对)具有不大于磨损偏差阈值δ
t
的磨损值的差的情况下(如在该示例中),则同一组中剩余的驱动器可被跳过而不对磨损值差进行确定。
56.继续图3b中的驱动器组,可针对磨损水平的偏差来检查组2中的驱动器。组2的平均轮换计数器值为0.25,这通过将组2中的每个驱动器的轮换计数器的和(1)除以该组中驱动器的数量(4)来确定。可从组的相对端处的驱动器选择第一驱动器对:d3和d4。然而,由于d4的轮换计数器(即,1)大于组的平均轮换计数器值(0.25),因此跳过驱动器d4并且考虑下一驱动器d
16
。d3和d
16
具有磨损值的差0.11(0.41

0.3),该差大于δ
t
。相应地,由于该驱动器对(d3和d
16
)具有大于δ
t
的磨损值差并且这两个驱动器具有小于平均轮换计数器值的轮换计数器值,因此来自d3的内容将与来自d
16
的内容进行交换。在该周期中,剩余的驱动器d6也将被跳过。
57.图3c图示出内容交换之前和之后组2中的驱动器的状态。在标签310处,在对内容进行交换之前,组2中的四个驱动器以与图3b中针对组2所示出的相同的顺序和状态(内容、磨损值和轮换计数器)示出。由于驱动器对(d3和d
16
)具有大于δ
t
的磨损值差,因此来自d3的内容c与来自d
16
的内容p进行交换。这经由代表从d3到d
16
的内容转移的顶部箭头312以及代表从d
16
到d3的内容转移的底部箭头314图示。在标签316处,在内容交换后,组2中的四个驱动器以相同顺序(并且具有相同磨损值)示出,以使得在交换后,驱动器d3现在包含内容p(来自d
16
)并且其轮换计数器已经递增至1,并且驱动器d
16
现在包含内容c(来自d3)并且其轮换计数器也已经递增至1。
58.返回至图3b中的驱动器组,可针对磨损水平的偏差来检查组3中的驱动器。组3的平均轮换计数器值为0.25,这通过将组3中的每个驱动器的轮换计数器的和(1)除以该组中驱动器的数量(4)来确定。可从组的相对端处的驱动器选择第一驱动器对:d2和d
12
。然而,由于d
12
的轮换计数器(1)大于组的平均轮换计数器值(0.25),因此跳过驱动器d
12
并且考虑下一驱动器d
10
。d2和d
10
具有磨损值的差0.19(0.61

0.42),该差大于δ
t
。相应地,由于该驱动器对(d2和d
10
)具有大于δ
t
的磨损值差并且这两个驱动器具有小于平均轮换计数器值的轮换计数器值,因此来自d2的内容将与来自d
10
的内容进行交换。在该周期中,剩余的驱动器d
15
也将被跳过。
59.图3d图示出内容交换之前和之后组3中的驱动器的状态。在标签320处,在对内容进行交换之前,组3中的四个驱动器以与图3b中针对组3所示出的相同的顺序和状态
(内容、磨损值和轮换计数器)示出。由于驱动器对(d2和d
10
)具有大于δ
t
的磨损值差,因此来自d2的内容b与来自d
10
的内容j进行交换。这经由代表从d2到d
10
的内容转移的顶部箭头322以及代表从d
10
到d2的内容转移的底部箭头324图示。在标签326处,在内容交换后,组3中的四个驱动器以相同顺序(并且具有相同磨损值)示出,以使得在交换后,驱动器d2现在包含内容j(来自d
10
)并且其轮换计数器已经递增至1,并且驱动器d
10
现在包含内容b(来自d2)并且其轮换计数器也已经递增至1。
60.返回至图3b中的驱动器组,可针对磨损水平的偏差来检查组4中的驱动器。该组的平均轮换计数器值为1,因为组中的所有驱动器具有等于1的轮换计数器。由于组中没有驱动器具有超出平均值的轮换计数器,因此组中没有驱动器将由于轮换计数器值而被跳过。可从组的相对端处的驱动器选择第一驱动器对:d
14
和d9具有磨损值的差0.17(0.8

0.63),该差大于δ
t
。可从组4的列表中的两个剩余驱动器选择第二驱动器对:d1和d
13
具有磨损值的差0.02(0.72

0.7),该差小于δ
t
。相应地,由于第一驱动器对(d
14
和d9)具有大于δ
t
的磨损值差,因此来自d
14
的内容将与来自d9的内容进行交换。然而,由于第二驱动器对(d1和d
13
)具有小于δ
t
的磨损值差,因此在这两个驱动器之间将不交换内容。
61.图3e图示出内容交换之前和之后组4中的驱动器的状态。在标签330处,在对内容进行交换之前,组4中的四个驱动器以与图3b中针对组4所示出的相同的顺序和状态(内容、磨损值和轮换计数器)示出。由于驱动器对(d
14
和d9)具有大于δ
t
的磨损值差,因此来自d
14
的内容n与来自d9的内容i进行交换。这经由代表从d
14
到d9的内容转移的顶部箭头332以及代表从d9到d
14
的内容转移的底部箭头334图示。在标签336处,在内容交换后,组4中的四个驱动器以相同顺序(并且具有相同磨损值)示出,以使得在交换后,驱动器d
14
现在包含内容i(来自d9)并且其轮换计数器已经递增至2,并且驱动器d9现在包含内容n(来自d
14
)并且其轮换计数器也已经递增至2。
62.图3f图示出在参考图3c-图3e所描述的对内容的交换之后四个驱动器组的状态。组1中的驱动器具有与图3b中示出的(标签306a)相同的状态(内容、磨损值和轮换计数器),因为在这些组中的驱动器之间没有文件被交换。组2、3和4中的驱动器被示出为处于分别在图3c(组2,标签316)、图3d(组3,标签326)和图3e(组4,标签336)中图示的交换后状态。在一些实施例中,一旦当前周期完成了驱动器交换,则可针对每个组中的驱动器的(多个)磨损值确定平均值。对于给定的组,如果平均值超出潜在的驱动器故障阈值,则该组中的驱动器可针对可维修性被标记。
63.将会理解,图2a-图2f或图3a-图3f中所图示的驱动器磨损管理的示例可使用与本文中所示出和描述的不同的磨损偏差阈值δ
t
和/或不同的轮换计数器评估来实现。例如,可使用阈值来对轮换计数器的差进行评估,而不是对平均轮换计数器值进行评估。将进一步理解,如所描述的交换的示例驱动器内容可包括诸如例如图像、元数据、文件、块等的内容,并且实际上交换的内容可包括驱动器的所有部分或仅一些部分(例如,热文件)。
64.另外,将理解,由于层内的驱动器通常是具有类似驱动器特性的共同的驱动器类型的,因此如本文中所描述的对驱动器进行轮换的方法可应用于层内的驱动器(例如,容量层内的驱动器或高速缓存层内的驱动器)。在一些实施例中,其中(多个)高速缓存层中的驱动器和(多个)容量层中的驱动器可具有共同的或类似的类型,本文中所描述的驱动器轮换可扩展至在存储子系统的高速缓存层与容量层之间对驱动器进行轮换。
65.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图4a-图4b提供了图示出根据一个或多个实施例的用于管理驱动器磨损的示例过程400的流程图。过程400可被实现在计算系统中,该计算系统诸如例如,计算系统100(图1a,已讨论)或者计算系统10(本文中参考图5所讨论)。过程400可由在计算系统100或计算系统10上运行的操作系统执行或在操作系统的指引下执行。更具体地,过程400可在一个或多个模块中被实现为逻辑指令的集合,这些逻辑指令被存储在诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等之类的机器或计算机可读存储介质中,被存储在诸如例如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)之类的可配置逻辑中,被存储在使用诸如例如专用集成电路(asic)、互补式金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术之类的电路技术的固定功能逻辑硬件中,或被存储在上述各项的任何组合中。
66.例如,可以用一种或多种编程语言的任何组合来编写用于实施过程400中所示的操作的计算机程序代码,这些编程语言包括诸如java、smalltalk、c++等之类的面向对象的编程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程编程语言。另外,逻辑指令可包括汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/cpu、微控制器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
67.计算系统实现的、用于管理驱动器磨损的过程流程400可包括存储驱动器阵列或可与其进行数据通信。驱动器可以是固态(ss)驱动器。驱动器阵列可包括数个(n个)驱动器,期望针对这些驱动器来管理驱动器磨损。可针对每个ss驱动器推导磨损值(例如,如上文所描述的磨损_值)。
68.现在转向图4a,在所图示的处理框410处,可在第一ss存储驱动器对中的驱动器之间确定第一磨损值的差。在所图示的处理框420处,如果第一磨损值的差超出磨损偏差阈值,则可在第一ss存储驱动器对中的驱动器之间交换内容。在驱动器之间交换内容可例如包括以下各项中的一项:在对中的第一驱动器与该对中的第二驱动器之间交换所有文件,或者在对中的第一驱动器与该对中的第二驱动器之间交换热文件。
69.在所图示的处理框430处,可基于针对每个驱动器推导出的磨损值(例如,如上文所描述的磨损_值)将固态(ss)存储驱动器阵列排序为多个驱动器组。将驱动器排序为多个驱动器组可包括基于其相应的磨损值来对驱动器进行排序(或排名)并将经排名的驱动器划分成m个组,其中每个组具有x个(或大约x个)驱动器。x可例如基于解决方案中驱动器的总数量的百分比来确定,或者可基于其他标准来确定。在驱动器组内,可按磨损值对驱动器进行排序,以使得可从经排序的驱动器组的相对端处的驱动器选择驱动器对。另外,驱动器组中的每个驱动器可具有相关联的轮换计数器值(例如,如上文所描述的轮换_计数器),以使得可基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对。
70.在所图示的处理框435处,可在驱动器组中的第二驱动器对中的驱动器之间确定第二磨损值的差。第一ss驱动器对和第二ss驱动器对可在同一驱动器组中。在所图示的处理框440处,如果第二磨损值的差超出磨损偏差阈值,则可在第二ss存储驱动器对中的驱动器之间交换内容。在驱动器之间交换内容可例如包括以下各项中的一项:在对中的第
一驱动器与该对中的第二驱动器之间交换所有文件,或者在对中的第一驱动器与该对中的第二驱动器之间交换热文件。
71.在实施例中,可基于以下各项中的一项或多项来推导每个驱动器的磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或者驱动器的设备温度。在实施例中,可基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置磨损偏差阈值。
72.在所图示的处理框445处,可基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值。在所图示的处理框450处,对于驱动器,轮换计数器值可在每次基于磨损值的差交换驱动器内容时被递增。
73.现在转向图4b,在所图示的处理框460处,可针对每个驱动器组中的所有驱动器确定平均轮换计数器值。在所图示的处理框465处,可从该驱动器组中具有小于驱动器组的平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及该驱动器组中的该驱动器子集中具有最低磨损值的驱动器来选择每个驱动器组中的相应驱动器对中的第一对。在所图示的处理框470处,可从驱动器组中的驱动器子集中具有次最高磨损值的驱动器、以及驱动器组中的驱动器子集中具有次最低磨损值的驱动器选择每个驱动器组中的相应驱动器对中的第二对。所图示的处理框460、465和470中提供的功能可替换已讨论的所图示的处理框445中提供的功能。
74.在所图示的处理框480处,对于每个驱动器组,可基于该驱动器组中的每个驱动器的磨损值来确定平均磨损值。在所图示的处理框490处,如果驱动器组的平均磨损值超出潜在驱动器故障阈值,则可为该驱动器组中的驱动器提供维护服务。在实施例中,可基于磨损值来确定或选择潜在驱动器故障阈值,该潜在驱动器故障阈值表示例如未来一段时间内预期发生故障或故障的风险升高。
75.在实施例中,在驱动器组中的每个驱动器的轮换计数器值相同的情况下,每个驱动器组中的相应驱动器对中的第一对可从驱动器组中具有最高磨损值的驱动器和该驱动器组中具有最低磨损值的驱动器选择,并且每个驱动器组中的相应驱动器对中的第二对可从驱动器组中具有次最高磨损值的驱动器和该驱动器组中具有次最低磨损值的驱动器选择。
76.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图5示出了图示出根据一个或多个实施例的用于智能驱动器磨损管理的示例计算系统10的框图。系统10一般可以是具有计算和/或通信功能的电子设备/平台(例如,服务器、云基础设施控制器、数据库控制器、笔记本计算机、台式计算机、个人数字助理/pda、平板计算机、可转换平板、智能电话等)的部分、具有成像功能的电子设备/平台(例如,相机、便携式摄像机)的部分、具有媒体播放功能的电子设备/平台(例如,智能电视/tv)的部分、具有可穿戴功能的电子设备/平台(例如,手表、眼部穿戴物、头戴物、脚部穿戴物、首饰)的部分、具有车载功能的电子设备/平台(例如,汽车、卡车、摩托车)的部分、具有机器人功能的电子设备/平台(例如,自主机器人)的部分、具有物联网(iot)功能的电子设备/平台的部分等等,或者具有以上各功能的任何组合的电子设备/平台的部分。在所图示的示例中,系统10可包括具有集成
存储器控制器(imc)14的主机处理器12(例如,中央处理单元/cpu),该imc 14可耦合至系统存储器20。主机处理器12可包括任何类型的处理设备连同相关联的处理模块或电路系统,该处理设备诸如例如,微控制器、微处理器、risc处理器、asic等。系统存储器20可包括:任何非瞬态机器可读或计算机可读存储介质,诸如ram、rom、prom、eeprom、固件、闪存等;可配置逻辑,诸如例如pla、fpga、cpld;使用诸如例如asic、cmos或ttl技术之类的电路技术的固定功能硬件逻辑;或者适合用于存储指令28的以上各项的任何组合。
77.系统10还可包括输入/输出(i/o)子系统16。i/o子系统16可与例如一个或多个输入/输出(i/o)设备18、网络控制器24(例如,有线和/或无线nic)以及存储22进行通信。存储22可由任何适当的非瞬态机器可读或计算机可读存储器类型(例如,闪存、dram、sram(静态随机存取存储器)、固态驱动器(ssd)、硬盘驱动器(hdd)、光盘等)组成。存储22可包括大容量存储。在一些实施例中,主机处理器12和/或i/o子系统16可经由网络控制器24而与存储22(其全部或部分)进行通信。在一些实施例中,系统10还可包括图形处理器26(例如,图形处理单元/gpu)。
78.主机处理器12和i/o子系统16可在半导体管芯上一起被实现为芯片上系统(soc)11,示出为以实线包围。因此,soc 11可作为用于智能驱动器磨损管理的计算装置来操作。在一些实施例中,soc 11还可包括系统存储器20、网络控制器24和/或图形处理器26(示出为以虚线包围)中的一者或多者。在一些实施例中,soc 11还可包括系统10的其他组件。
79.主机处理器12和/或i/o子系统16可执行从系统存储器20和/或存储22检取的程序指令28,以执行如本文中参考图1b所描述的过程105或如本文中参考图4a-图4b所描述的过程400的一个或多个方面。系统10可实现如本文中参考图1a所描述的系统100的一个或多个方面。因此,至少在技术提供了用于使存储设备均匀地磨损的驱动器磨损优化推荐的程度上,系统10被认为是性能增强的。
80.可以用一种或多种编程语言的任何组合来编写用于实施上文所描述的过程的计算机程序代码,这些编程语言包括诸如java、javascript、python、smalltalk、c++等之类的面向对象的编程语言和/或诸如“c”编程语言或类似编程语言之类的常规过程编程语言,并且该计算机程序代码可被实现为程序指令28。另外,程序指令28可包括汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/cpu、微控制器、微处理器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
81.i/o设备18可包括诸如触摸屏、键盘、鼠标、光标控制设备、触摸屏、话筒、数码相机、视频记录仪、便携式摄像机、生物计量扫描仪和/或传感器之类的输入设备中的一个或多个;输入设备可用于输入信息并与系统10和/或与其他设备交互。i/o设备18还可包括诸如显示器(例如,触摸屏、液晶显示器/lcd、发光二极管/led显示器、等离子体面板等)、扬声器和/或其他视觉或音频输出设备之类的输出设备中的一个或多个。输入和/或输出设备可用于例如提供用户接口。
82.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图6示出了图示出根据一个或多个实施例的用于智能驱动器磨损管理的示例半导体设备30的框图。半导体设备30可被实现为例如芯片、管芯或其他半导体封装。半导体设备30可包括一个或多个衬底32,该一个或多个衬底32由例如硅、蓝宝石、砷化镓等组成。半导体设备30还可包
括逻辑34,该逻辑34由例如耦合至(多个)衬底32的(多个)晶体管阵列和其他集成电路(ic)组件组成。逻辑34可至少部分地被实现在可配置逻辑或固定功能逻辑硬件中。逻辑34可实现上文参考图5所描述的芯片上系统(soc)11。逻辑34可实现上文所描述的过程的一个或多个方面,包括如本文中参考图1b所描述的过程105或者如本文中参考图4a-图4b所描述的过程400。逻辑34可实现计算系统100(图1a,已讨论)或系统10(图5,已讨论)的一个或多个方面。因此,至少在技术提供了用于使存储设备均匀地磨损的驱动器磨损优化推荐的程度上,设备30被认为是性能增强的。
83.半导体设备30可使用任何适当的半导体制造工艺或技术来构造。例如,逻辑34可包括被定位在(例如,嵌入)(多个)衬底32内的晶体管沟道区。因此,逻辑34与(多个)衬底32之间的界面可以不是突变结。逻辑34还可被认为包括在(多个)衬底32的初始晶圆上生长的外延层。
84.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图7是图示出根据一个或多个实施例的示例处理器核40的框图。处理器核40可以是用于任何类型的处理器的核,该处理器诸如微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、或用于执行代码的其他设备。虽然图7中仅图示了一个处理器核40,但处理元件可替代地包括多于一个的图7中所图示的处理器核40。处理器核40可以是单线程核,或对于至少一个实施例,处理器核40可以是多线程的,因为其每个核可包括多于一个的硬件线程上下文(或“逻辑处理器”)。
85.图7还图示出耦合至处理器核40的存储器41。存储器41可以是本领域技术人员已知的或以其他方式对本领域技术人员可用的各种各样的存储器(包括存储器层级结构的各个层)中的任何一种。存储器41可包括用于由处理器核40执行的一条或多条代码42指令。代码42可实现上文所描述的过程的一个或多个方面,包括如本文参考过程105(图1b)和/或过程400(图4a-图4b)所描述的用于智能驱动器磨损管理的过程。处理器核40可实现计算系统100(图1a,已讨论)或系统10(图5,已讨论)的一个或多个方面。处理器核40可遵循由代码42指示的指令的程序序列。每条指令可进入前端部分43并由一个或多个解码器44处理。解码器44可生成微操作(诸如采用预定义格式的固定宽度的微操作)作为其输出,或者可生成反映原始代码指令的其他指令、微指令或控制信号。所图示的前端部分43还包括寄存器重命名逻辑46和调度逻辑48,该调度逻辑48一般分配资源并将与转换指令相对应的操作进行排队以供执行。
86.处理器核40被示出为包括具有一组执行单元55-1至55-n的执行逻辑50。一些实施例可包括专用于特定功能或功能集合的数个执行单元。其他实施例可包括仅一个执行单元或可以执行特定功能的一个执行单元。所图示的执行逻辑50执行由代码指令指定的操作。
87.在完成对由代码指令指定的操作的执行之后,后端逻辑58对代码42的指令进行引退。在一个实施例中,处理器核40允许乱序执行但是要求指令的有序引退。引退逻辑59可采取如本领域技术人员已知的各种形式(例如,重排序缓冲器等等)。以此方式,至少在由解码器生成的输出、由寄存器重命名逻辑46利用的硬件寄存器和表、以及由执行逻辑50修改的任何寄存器(未示出)方面,处理器核40在代码42的执行期间被变换。
88.虽然未在图7中图示,但处理元件可包括与处理器核40一起处于芯片上的其他元件。例如,处理元件可包括连同处理器核40一起的存储器控制逻辑。处理元件可包括i/o控
制逻辑和/或可包括与存储器控制逻辑一起被集成的i/o控制逻辑。处理元件还可包括一个或多个高速缓存。
89.参考本文中所描述的组件和特征(包括但不限于附图和相关联的描述),图8是图示出根据一个或多个实施例的基于多处理器的计算系统60的示例的框图。多处理器系统60包括第一处理元件70和第二处理元件80。尽管示出了两个处理元件70和80,但是要理解,系统60的实施例还可包括仅一个此类处理元件。
90.系统60被图示为点对点互连系统,其中第一处理元件70和第二处理元件80经由点对点互连71耦合。应当理解,图8中所图示的互连中的任何或全部互连可被实现为多分支总线而不是点对点互连。
91.如图8中所示,处理元件70和80中的每一者可以是包括第一处理器核和第二处理器核(即,处理器核74a和74b、以及处理器核84a和84b)的多核处理器。此类核74a、74b、84a、84b可被配置成用于以与上文结合图7所讨论的方式类似的方式来执行指令代码。
92.每个处理元件70、80可包括至少一个共享高速缓存99a、99b。共享高速缓存99a、99b可存储分别由处理器的一个或多个组件(诸如核74a、74b,以及84a、84b)利用的数据(例如,指令)。例如,共享高速缓存99a、99b可本地地对存储器62、63中所存储的数据进行高速缓存以供处理器的组件进行更快速的访问。在一个或多个实施例中,共享高速缓存99a、99b可包括一个或多个中间级别高速缓存(诸如第2级(l2)、第3级(l3)、第4级(l4)、或其他级别的高速缓存)、末级高速缓存(llc)和/或其组合。
93.虽然被示出为具有仅两个处理元件70、80,但要理解,实施例的范围不限于此。在其他实施例中,在给定的处理器中可存在一个或多个附加处理元件。替代地,处理元件70、80中的一者或多者可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。例如,(多个)附加处理元件可包括与第一处理器70相同的(多个)附加处理器、与第一处理器70异构或不对称的(多个)附加处理器、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其他处理元件。在包括架构、微架构、热、功耗特性等等一系列品质度量方面,处理元件70、80之间可以存在各种差异。这些差异自身可有效地表现为处理元件70、80之中的不对称性和异构性。对于至少一个实施例,各处理元件70、80可驻留在同一管芯封装中。
94.第一处理元件70可进一步包括存储器控制器逻辑(mc)72以及点对点(p-p)接口76和78。类似地,第二处理元件80可包括mc 82以及p-p接口86和88。如图8中所示,mc 72和82将处理器耦合至相应的存储器,即存储器62和存储器63,这些存储器可以是本地附连到相应处理器的主存储器的部分。尽管mc 72和mc 82被图示为被集成到处理元件70、80中,但对于替代实施例,mc逻辑可以是处理元件70、80外部的分立逻辑,而不是被集成于其中。
95.第一处理元件70和第二处理元件80可分别经由p-p互连76和86耦合至i/o子系统90。如图8中所示,i/o子系统90包括p-p接口94和98。此外,i/o子系统90包括将i/o子系统90与高性能图形引擎64耦合的接口92。在一个实施例中,可使用总线73将图形引擎64耦合至i/o子系统90。替代地,点对点互连可将这些组件耦合。
96.进而,i/o子系统90可经由接口96耦合至第一总线65。在一个实施例中,第一总线65可以是外围组件互连(pci)总线,或者可以是诸如pci快速(pci express)总线或另一第三代i/o互连总线之类的总线,但是实施例的范围不限于此。
97.如图8中所示,各种i/o设备65a(例如,生物计量扫描仪、扬声器、相机、传感器)可连同总线桥66一起耦合至第一总线65,该总线桥66可将第一总线65耦合至第二总线67。在一个实施例中,第二总线67可以是低引脚数(lpc)总线。在一个实施例中,各种设备可被耦合至第二总线67,包括例如键盘/鼠标67a、(多个)通信设备67b、以及可包括代码69的诸如盘驱动器或其他大容量存储设备之类的数据存储单元68。所图示的代码69可实现上文所描述的过程的一个或多个方面,包括如本文参考过程105(图1b)和/或过程400(图4a-图4b)所描述的用于智能驱动器磨损管理的过程。所图示的代码69可类似于已讨论的代码42(图7)。此外,音频i/o 67c可耦合至第二总线67,并且电池61可向计算系统60提供功率。处理元件70和/或80可实现本文中参考图5所描述的处理器12的一个或多个方面。
98.注意,构想了其他实施例。例如,代替于图8的点对点架构,系统可实现多分支总线或者另一此类通信拓扑。而且,可替代地使用比图8中所示的更多或更少的集成芯片来对图8的元件进行分区。
99.以上系统、设备、组件和/或方法中的每一者的实施例(包括系统100、系统10、半导体设备30、处理器核40、系统60、过程105、过程400和/或任何其他系统组件)可采用硬件、软件或其任何合适的组合来实现。例如,硬件实现可包括诸如例如可编程逻辑阵列(pla)、场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)之类的可配置逻辑,或使用诸如例如专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术之类的电路技术的固定功能逻辑硬件,或者其任何组合。
100.替代地或附加地,前述系统和/或组件和/或方法的全部或一部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等)中的将由处理器或计算设备执行的逻辑指令集。例如,用于实施组件的操作的计算机程序代码能以一种或多种操作系统(os)适用/适当的编程语言的任何组合来编写,编程语言包括诸如python、perl、java、smalltalk、c++、c#等之类的面向对象的编程语言,以及诸如“c”编程语言或类似编程语言之类的常规过程编程语言。
101.附加说明和示例:
102.示例1包括一种计算系统,该计算系统包括:处理器;以及计算机可读存储介质,耦合至处理器,该存储介质包括指令,这些指令在由处理器执行时使得计算系统:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果第一磨损值的差超出磨损偏差阈值,则在第一固态存储驱动器对中的驱动器之间交换内容。
103.示例2包括如示例1所述的系统,进一步包括固态存储驱动器阵列,其中,指令在被执行时使得计算系统:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,第一驱动器对和第二驱动器对在同一驱动器组中;以及如果第二磨损值的差超出磨损偏差阈值,则在第二固态存储驱动器对中的驱动器之间交换内容。
104.示例3包括如示例2所述的系统,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且其中,指令在被执行时使得计算系统:基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增驱动器的轮换计数器值。
105.示例4包括如示例3所述的系统,其中,指令在被执行时进一步使得计算系统针对驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,为了选择驱动器组中相应的驱动器对,指令在被执行时使得计算系统:从驱动器组中具有小于平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及该驱动器组中的该驱动器子集中具有最低磨损值的驱动器选择该驱动器组中相应的驱动器对中的第一对;以及从该驱动器组中的该驱动器子集中具有次最高磨损值的驱动器和该驱动器组中的该驱动器子集中具有次最低磨损值的驱动器选择该驱动器组中的相应的驱动器对中的第二对。
106.示例5包括如示例2所述的系统,其中,指令在被执行时进一步使得计算系统:针对驱动器组中的一个驱动器组,基于该驱动器组中的每个驱动器的磨损值来确定平均磨损值;以及如果该驱动器组的平均磨损值超出潜在的驱动器故障阈值,则提供对该驱动器组中的驱动器的维护服务。
107.示例6包括如示例1-5中任一项所述的系统,其中,基于以下各项中的一项或多项来推导每个驱动器的磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在第一驱动器与第二驱动器之间交换所有文件,或者在第一驱动器与第二驱动器之间交换热文件。
108.示例7包括一种半导体设备,该设备包括:一个或多个衬底;以及逻辑,该逻辑耦合至一个或多个衬底,其中该逻辑至少部分地被实现在可配置逻辑或固定功能硬件逻辑中的一者或多者中,耦合至一个或多个衬底的逻辑用于:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果该第一磨损值的差超出磨损偏差阈值,则在第一固态存储驱动器对中的驱动器之间交换内容。
109.示例8包括如示例7所述的设备,其中,逻辑用于:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,第一驱动器对和第二驱动器对在同一驱动器组中;以及如果第二磨损值的差超出磨损偏差阈值,则在第二固态存储驱动器对中的驱动器之间交换内容。
110.示例9包括如示例8所述的设备,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且其中,逻辑用于:基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增驱动器的轮换计数器值。
111.示例10包括如示例9所述的设备,其中,逻辑进一步用于针对驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,为了选择驱动器组中相应的驱动器对,该逻辑用于:从驱动器组中具有小于平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及该驱动器组中的该驱动器子集中具有最低磨损值的驱动器选择该驱动器组中相应的驱动器对中的第一对;以及从该驱动器组中的该驱动器子集中具有次最高磨损值的驱动器和该驱动器组中的该驱动器子集中具有次
最低磨损值的驱动器选择该驱动器组中的相应的驱动器对中的第二对。
112.示例11包括如示例8所述的设备,其中,逻辑进一步用于:针对驱动器组中的一个驱动器组,基于该驱动器组中的每个驱动器的磨损值来确定平均磨损值;以及如果该驱动器组的平均磨损值超出潜在的驱动器故障阈值,则提供对该驱动器组中的驱动器的维护服务。
113.示例12包括如示例7-11中任一项所述的设备,其中,基于以下各项中的一项或多项来推导每个驱动器的磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在第一驱动器与第二驱动器之间交换所有文件,或者在第一驱动器与第二驱动器之间交换热文件。
114.示例13包括如示例7所述的设备,其中,耦合至一个或多个衬底的逻辑包括定位在该一个或多个衬底内的晶体管沟道区。
115.示例14包括至少一种非瞬态计算机可读存储介质,包括用于管理运行时计算环境的一组指令,这些指令在由计算系统执行时使得该计算系统:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果该第一磨损值的差超出磨损偏差阈值,则在第一固态存储驱动器对中的驱动器之间交换内容。
116.示例15包括如示例14所述的至少一种非瞬态计算机可读存储介质,其中,指令在被执行时使得计算系统:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,第一驱动器对和第二驱动器对在同一驱动器组中;以及如果第二磨损值的差超出磨损偏差阈值,则在第二固态存储驱动器对中的驱动器之间交换内容。
117.示例16包括如示例15所述的至少一种非瞬态计算机可读存储介质,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且其中,指令在被执行时使得计算系统:基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增驱动器的轮换计数器值。
118.示例17包括如示例16所述的至少一种非瞬态计算机可读存储介质,其中,指令在被执行时进一步使得计算系统针对驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,为了选择驱动器组中相应的驱动器对,指令在被执行时使得计算系统:从驱动器组中具有小于平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及该驱动器组中的该驱动器子集中具有最低磨损值的驱动器选择该驱动器组中相应的驱动器对中的第一对;以及从该驱动器组中的该驱动器子集中具有次最高磨损值的驱动器和该驱动器组中的该驱动器子集中具有次最低磨损值的驱动器选择该驱动器组中的相应的驱动器对中的第二对。
119.示例18包括如示例15所述的至少一种非瞬态计算机可读存储介质,其中,指令在被执行时进一步使得计算系统:针对驱动器组中的一个驱动器组,基于该驱动器组中的每个驱动器的磨损值来确定平均磨损值;以及如果该驱动器组的平均磨损值超出潜在的驱动器故障阈值,则提供对该驱动器组中的驱动器的维护服务。
120.示例19包括如示例14-18中任一项所述的至少一种非瞬态计算机可读存储介质,其中,基于以下各项中的一项或多项来推导每个驱动器的磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在第一驱动器与第二驱动器之间交换所有文件,或者在第一驱动器与第二驱动器之间交换热文件。
121.示例20包括一种用于驱动器磨损管理的方法,该方法包括:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果第一磨损值的差超出磨损偏差阈值,则在第一固态存储驱动器对中的驱动器之间交换内容。
122.示例21包括如示例20所述的方法,进一步包括:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,第一驱动器对和第二驱动器对在同一驱动器组中;以及如果第二磨损值的差超出磨损偏差阈值,则在第二固态存储驱动器对中的驱动器之间交换内容。
123.示例22包括如示例21所述的方法,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且该方法进一步包括:基于驱动器磨损值和驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增驱动器的轮换计数器值。
124.示例23包括如示例22所述的方法,进一步包括针对驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,选择驱动器组中相应的驱动器对包括:从驱动器组中具有小于平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及该驱动器组中的该驱动器子集中具有最低磨损值的驱动器选择该驱动器组中相应的驱动器对中的第一对;以及从该驱动器组中的该驱动器子集中具有次最高磨损值的驱动器和该驱动器组中的该驱动器子集中具有次最低磨损值的驱动器选择该驱动器组中的相应的驱动器对中的第二对。
125.示例24包括如示例21所述的方法,进一步包括:针对驱动器组中的一个驱动器组,基于该驱动器组中的每个驱动器的磨损值来确定平均磨损值;以及如果该驱动器组的平均磨损值超出潜在的驱动器故障阈值,则提供对该驱动器组中的驱动器的维护服务。
126.示例25包括如示例20-24中任一项所述的方法,其中,基于以下各项中的一项或多项来推导每个驱动器的磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在第一驱动器与第二驱动器之间交换所有文件,或者在第一驱动器与第二驱动器之间交换热文件。
127.示例26包括一种设备,该设备包括用于执行如示例20-24中任一项所述的方法的
装置。
128.由此,本文中所描述的技术通过延长综合存储解决方案内固态驱动器的寿命而改善了计算系统的性能,并且促进了ssd的高成本效益的可维修性和管理。例如,驱动器磨损管理技术通过实现首次部署与首次维修之间更长的时间、中间维修之间更长的时间、以及在解决方案的寿命期间更少的维修事件而降低了运营成本。另外,该技术实现了在分层解决方案中使用较低耐久性的驱动器的能力。本文中所描述的技术可以可适用于任何数量的计算环境,包括:服务器、云计算、和/或提供具有综合存储要求的计算服务的任何环境。
129.实施例适用于与所有类型的半导体集成电路(“ic”)芯片一起使用。这些ic芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、芯片上系统(soc)、ssd/nand控制器asic等等。另外,在一些附图中,信号导线用线表示。一些线可以是不同的以指示更具构成性的信号路径,可具有数字标号以指示构成性信号路径的数目,和/或可在一端或多端具有箭头以指示主要信息流向。然而,这不应以限制性方式来解释。相反,此类添加的细节可与一个或多个示例性实施例结合使用以促进更容易地理解电路。任何所表示的信号线,不管是否具有附加信息,实际上都可包括一个或多个信号,该一个或多个信号可在多个方向上行进,并且可用任何适合类型的信号方案来实现,例如利用差分对来实现的数字或模拟线路、光纤线路、和/或单端线路。
130.示例尺寸/模型/值/范围可能已经被给出,但是实施例不限于此。随着制造技术(例如,光刻法)随时间变得成熟,预计能制造出更小尺寸的设备。另外,为了说明和讨论的简单起见并且为了不使实施例的某些方面模糊,到ic芯片和其他组件的公知的功率/接地连接可在附图内示出也可不示出。此外,各种配置可以方框图形式示出以避免使各实施例变得晦涩,并也鉴于相对于这些方框图配置的实现的具体细节很大程度地依赖于在其中实现实施例的平台这一事实,即这些具体细节应当落在本领域技术人员的眼界内。在阐述具体细节(例如,电路)以描述示例性实施例的情形下,显然本领域技术人员能不利用这些具体细节或对这些具体细节作出变化地实现各实施例。描述因此被视为是说明性的而不是限制性的。
131.术语“耦合的”在本文中可被用于表示所讨论的组件之间的任何类型的直接或间接关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其他连接。另外,术语“第一”、“第二”等在本文中可仅用于便于讨论,并且不带有特定时间的或按时间顺序的意义,除非另有陈述。
132.如在本技术和权利要求书中所使用的,由术语
“……
中的一个或多个”联接的项列表可意指所列项的任何组合。例如,术语“a、b或c中的一个或多个”可意指a;b;c;a和b;a和c;b和c;或者a、b和c。
133.本领域技术人员从前面的描述将领会,实施例的广泛技术能以各种形式来实现。因此,尽管已结合其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员将变得显而易见。

技术特征:


1.一种计算系统,包括:处理器;以及计算机可读存储介质,耦合至所述处理器,所述存储介质包括指令,所述指令在由所述处理器执行时使得所述计算系统:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果所述第一磨损值的差超出磨损偏差阈值,则在所述第一固态存储驱动器对中的驱动器之间交换内容。2.如权利要求1所述的系统,进一步包括固态存储驱动器阵列,其中,所述指令在被执行时使得所述计算系统:基于针对每个驱动器推导出的磨损值将所述固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,所述第一驱动器对和所述第二驱动器对在同一驱动器组中;以及如果所述第二磨损值的差超出所述磨损偏差阈值,则在所述第二固态存储驱动器对中的驱动器之间交换内容。3.如权利要求2所述的系统,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且其中,所述指令在被执行时使得所述计算系统:基于所述驱动器磨损值和所述驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增所述驱动器的所述轮换计数器值。4.如权利要求3所述的系统,其中,所述指令在被执行时进一步使得所述计算系统针对所述多个驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,为了选择驱动器组中相应的驱动器对,所述指令在被执行时使得所述计算系统:从所述驱动器组中具有小于所述平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及所述驱动器组中的所述驱动器子集中具有最低磨损值的驱动器选择所述驱动器组中相应的驱动器对中的第一对;以及从所述驱动器组中的所述驱动器子集中具有次最高磨损值的驱动器和所述驱动器组中的所述驱动器子集中具有次最低磨损值的驱动器选择所述驱动器组中的相应的驱动器对中的第二对。5.如权利要求2所述的系统,其中,所述指令在被执行时进一步使得所述计算系统:针对所述多个驱动器组中的一个驱动器组,基于所述一个驱动器组中的每个驱动器的所述磨损值来确定平均磨损值;以及如果所述一个驱动器组的所述平均磨损值超出潜在的驱动器故障阈值,则提供对所述一个驱动器组中的驱动器的维护服务。6.如权利要求1-5中任一项所述的系统,其中,基于以下各项中的一项或多项来推导每个驱动器的所述磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保
留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,所述磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在所述第一驱动器与所述第二驱动器之间交换所有文件,或者在所述第一驱动器与所述第二驱动器之间交换热文件。7.一种半导体设备,包括:一个或多个衬底;以及逻辑,耦合至所述一个或多个衬底,其中所述逻辑至少部分地被实现在可配置逻辑或固定功能硬件逻辑中的一个或多个中,耦合至所述一个或多个衬底的所述逻辑用于:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果所述第一磨损值的差超出磨损偏差阈值,则在所述第一固态存储驱动器对中的驱动器之间交换内容。8.如权利要求7所述的设备,其中,所述逻辑用于:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,所述第一驱动器对和所述第二驱动器对在同一驱动器组中;以及如果所述第二磨损值的差超出所述磨损偏差阈值,则在所述第二固态存储驱动器对中的驱动器之间交换内容。9.如权利要求8所述的设备,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且其中,所述逻辑用于:基于所述驱动器磨损值和所述驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增所述驱动器的所述轮换计数器值。10.如权利要求9所述的设备,其中,所述逻辑进一步用于针对所述多个驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,为了选择驱动器组中相应的驱动器对,所述逻辑用于:从所述驱动器组中具有小于所述平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及所述驱动器组中的所述驱动器子集中具有最低磨损值的驱动器选择所述驱动器组中相应的驱动器对中的第一对;以及从所述驱动器组中的所述驱动器子集中具有次最高磨损值的驱动器和所述驱动器组中的所述驱动器子集中具有次最低磨损值的驱动器选择所述驱动器组中的相应的驱动器对中的第二对。11.如权利要求8所述的设备,其中,所述逻辑进一步用于:针对所述多个驱动器组中的一个驱动器组,基于所述一个驱动器组中的每个驱动器的所述磨损值来确定平均磨损值;以及如果所述一个驱动器组的所述平均磨损值超出潜在的驱动器故障阈值,则提供对所述一个驱动器组中的驱动器的维护服务。
12.如权利要求7-11中任一项所述的设备,其中,基于以下各项中的一项或多项来推导每个驱动器的所述磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,所述磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在所述第一驱动器与所述第二驱动器之间交换所有文件,或者在所述第一驱动器与所述第二驱动器之间交换热文件。13.一种驱动器磨损管理设备,包括:用于确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差的装置;以及用于如果所述第一磨损值的差超出磨损偏差阈值则在所述第一固态存储驱动器对中的驱动器之间交换内容的装置。14.如权利要求13所述的设备,进一步包括:用于基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组的装置;用于确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差的装置,其中,所述第一驱动器对和所述第二驱动器对在同一驱动器组中;以及用于如果所述第二磨损值的差超出所述磨损偏差阈值则在所述第二固态存储驱动器对中的驱动器之间交换内容的装置。15.如权利要求14所述的设备,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且所述设备进一步包括:用于基于所述驱动器磨损值和所述驱动器轮换计数器值来选择驱动器组中相应的驱动器对的装置;以及用于在每次驱动器的内容基于磨损值的差而被交换时递增所述驱动器的所述轮换计数器值的装置。16.如权利要求15所述的设备,进一步包括用于针对所述多个驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值的装置;其中,用于选择驱动器组中相应的驱动器对的装置包括:用于从所述驱动器组中具有小于所述平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及所述驱动器组中的所述驱动器子集中具有最低磨损值的驱动器选择所述驱动器组中相应的驱动器对中的第一对的装置;以及用于从所述驱动器组中的所述驱动器子集中具有次最高磨损值的驱动器和所述驱动器组中的所述驱动器子集中具有次最低磨损值的驱动器选择所述驱动器组中的相应的驱动器对中的第二对的装置。17.如权利要求14所述的设备,进一步包括:用于针对所述多个驱动器组中的一个驱动器组、基于所述一个驱动器组中的每个驱动器的所述磨损值来确定平均磨损值的装置;以及
用于如果所述一个驱动器组的所述平均磨损值超出潜在的驱动器故障阈值则提供对所述一个驱动器组中的驱动器的维护服务的装置。18.如权利要求13-17中任一项所述的设备,其中,基于以下各项中的一项或多项来推导每个驱动器的所述磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,所述磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在所述第一驱动器与所述第二驱动器之间交换所有文件,或者在所述第一驱动器与所述第二驱动器之间交换热文件。19.一种用于驱动器磨损管理的方法,包括:确定针对第一固态存储驱动器对中的每个驱动器推导出的磨损值之间的第一差;以及如果所述第一磨损值的差超出磨损偏差阈值,则在所述第一固态存储驱动器对中的驱动器之间交换内容。20.如权利要求19所述的方法,进一步包括:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;确定第二固态存储驱动器对中的驱动器之间的第二磨损值的差,其中,所述第一驱动器对和所述第二驱动器对在同一驱动器组中;以及如果所述第二磨损值的差超出所述磨损偏差阈值,则在所述第二固态存储驱动器对中的驱动器之间交换内容。21.如权利要求20所述的方法,其中,驱动器组中的每个驱动器具有相关联的轮换计数器值,并且所述方法进一步包括:基于所述驱动器磨损值和所述驱动器轮换计数器值来选择驱动器组中相应的驱动器对;以及在每次驱动器的内容基于磨损值的差而被交换时递增所述驱动器的所述轮换计数器值。22.如权利要求21所述的方法,进一步包括针对所述多个驱动器组中的一个驱动器组中的所有驱动器确定平均轮换计数器值;其中,选择驱动器组中相应的驱动器对包括:从所述驱动器组中具有小于所述平均轮换计数器值的轮换计数器值的驱动器子集中具有最高磨损值的驱动器、以及所述驱动器组中的所述驱动器子集中具有最低磨损值的驱动器选择所述驱动器组中相应的驱动器对中的第一对;以及从所述驱动器组中的所述驱动器子集中具有次最高磨损值的驱动器和所述驱动器组中的所述驱动器子集中具有次最低磨损值的驱动器选择所述驱动器组中的相应的驱动器对中的第二对。23.如权利要求20所述的方法,进一步包括:针对所述多个驱动器组中的一个驱动器组,基于所述一个驱动器组中的每个驱动器的所述磨损值来确定平均磨损值;以及
如果所述一个驱动器组的所述平均磨损值超出潜在的驱动器故障阈值,则提供对所述一个驱动器组中的驱动器的维护服务。24.如权利要求19-23中任一项所述的方法,其中,基于以下各项中的一项或多项来推导每个驱动器的所述磨损值:驱动器的尺寸、驱动器的编程或擦除周期数、写入到驱动器的总的主机或nand字节、驱动器的写入放大因数、驱动器的出故障的块的总数量、驱动器的剩余保留块的数量、驱动器的保修结束日期、或驱动器的设备温度;其中,所述磨损偏差阈值是基于预期驱动器轮换频率和期望驱动器轮换频率中的一者或多者来设置的;并且其中,在第一驱动器与第二驱动器之间交换内容包括以下各项中的一项:在所述第一驱动器与所述第二驱动器之间交换所有文件,或者在所述第一驱动器与所述第二驱动器之间交换热文件。25.至少一种非瞬态计算机可读存储介质,包括一组指令,所述指令在被计算系统执行时使得所述计算系统执行如权利要求19-23中任一项所述的方法。

技术总结


系统、装置和方法可提供用于智能驱动器磨损管理的技术。技术可包括:确定针对第一固态存储驱动器推导出的磨损值与针对第二固态存储驱动器推导出的磨损值之间的差;以及如果该磨损值的差超出磨损偏差阈值,则在第一驱动器与第二驱动器之间交换内容。技术还可包括:基于针对每个驱动器推导出的磨损值将固态存储驱动器阵列排序为多个驱动器组;以及针对驱动器组中的第一驱动器对,确定该第一对中的驱动器之间的磨损值的差。可基于驱动器磨损值和与每个驱动器相关联的驱动器轮换计数器值来选择驱动器组中相应的驱动器对。技术可进一步包括:基于驱动器组中的每个驱动器的磨损值来确定每个驱动器组的平均磨损值;以及如果驱动器组的平均磨损值超出潜在的驱动器故障阈值,则为该驱动器组中的驱动器提供维护服务。维护服务。维护服务。


技术研发人员:

C

受保护的技术使用者:

英特尔公司

技术研发日:

2021.09.03

技术公布日:

2022/3/29

本文发布于:2024-09-23 13:14:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/12528.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:驱动器   磨损   群组   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议