一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

操作存储系统的方法与流程

2022-02-20 12:42:32 来源:中国专利 TAG:


1.本公开涉及用于执行纠删编码的系统和方法。


背景技术:

2.存储系统采用纠删编码(erasure coding,ec)技术,以通过防止意外的位擦除来改善可靠性。这些ec技术针对用户数据生成奇偶校验位,奇偶校验位可以在发生部分删除时用于重新生成用户数据。存储系统在对生成和/或存储用户数据的用户应用未知的和/或不受生成和/或存储用户数据的用户应用控制的纠删编码层实现这些ec技术。ec层被配置为将接收的用户数据划分为数据组块(data chunk),并且以对用户应用未知的方式横跨不同的一个或多个存储装置存储数据组块。同时,被配置为对存储的数据执行计算的存储装置正越来越多地用于存储系统中。然而,在包括以未知的方式横跨多个存储装置存储用户数据的ec层的系统中,在存储装置上运行的计算可能是低效的,或者可能生成错误的结果。例如,如果用于特定计算的数据被ec层横跨两个存储装置存储,则在两个存储装置中的一个或多个处执行特定计算可能导致两个存储装置之间的数据传送,导致与执行特定计算相关联的增大的开销。


技术实现要素:

3.在这里公开了用于以注重存储内计算的方式执行纠删编码的系统和方法。
4.在第一方法中,ec层从用户应用接收组块大小设置。ec层接收数据,并且基于组块大小设置将数据拆分为组块。然后,ec层将组块存储在一个或多个存储装置上。组块大小设置被配置为使得由用户应用利用的数据的块在由ec层存储的组块中被对齐。因此,第一方法可以被称为对齐的数据路径ec方法。例如,在将用户数据组织成数据文件(数据文件转而均被组织成多个扩展区,扩展区转而均被组织成多个页(例如,数据块))的数据库应用中,组块大小设置可以被设置为页的大小(或页的大小的倍数)。因此,数据库的页可以被存储在单个存储装置上,而不是被ec层拆分为分离的组块并被存储在不同的装置上。因此,与其中ec层将页拆分为分离的组块的系统或方法相比,相关数据(例如,页内的数据)可以被更可能地合并到更少的存储装置中。因此,与在其中ec被执行的其他存储装置上执行的存储内操作相比,在其中ec根据第一方法被执行的存储装置上执行的存储内操作可以更高效(例如,在存储装置之间使用更少的同步操作)。
5.在第二方法中,用户应用/文件系统对数据进行划分并且应用ec。第二方法包括在用户应用接收数据。所述方法还包括:将数据对齐,将数据划分为组块,针对数据组块生成奇偶校验位,并且将数据组块和奇偶校验位写入存储装置。因为应用直接控制数据对齐和划分,所以应用可以以防止相关数据横跨存储装置被拆分的方式生成数据组块。第二方法可以被称为用户控制的ec方法。
6.在第三方法中,用户应用/文件系统将数据对齐并将数据划分为组块,并且将组块放置在存储装置中。在第三方法中,用户应用/文件系统将写入存储装置的组块识别到ec
层,ec层生成奇偶校验位并将奇偶校验位写入一个或多个存储装置。第三方法可以被称为解耦合ec方法。与在第二方法中一样,应用可以防止相关数据横跨不同的存储装置被拆分。
7.在这里公开的各种示例中,用户应用生成并存储指向存储装置和数据地址的元数据索引。例如,第二方法和第三方法可以包括生成这样的元数据索引。用户应用可以使用这种元数据索引来生成针对特定存储装置的特定存储器地址的(包括存储内命令的)存储器访问。
8.因此,与实现纠删编码的其他系统和方法相比,公开的系统和方法可以导致相对更高效的存储内计算。
附图说明
9.图1是用于通过设置数据组块长度并基于数据组块长度将数据对齐来执行注重存储内计算的纠删编码的系统的示图。
10.图2是示出可以用在基于组块大小将数据对齐的系统中的数据层次结构的示例的图表。
11.图3是示出在基于组块大小将数据对齐的系统中的存储内计算命令的分发的示图。
12.图4是示出其中应用层包括多于一个应用的示例的示图。
13.图5是示出用于执行注重存储内计算的纠删编码的方法的示图。
14.图6是其中应用层对数据进行划分并执行纠删编码的用于执行注重存储内计算的纠删编码的系统的示图。
15.图7是示出在其中应用层对数据进行划分并执行纠删编码的系统中的存储内计算命令的分发的示图。
16.图8是示出其中用于执行注重存储内计算的纠删编码的系统生成元数据索引的示例的示图。
17.图9是示出元数据索引的示例的示图。
18.图10是示出向存储数据组块的存储装置发出的和向存储奇偶校验组块的装置发出的计算命令的示图。
19.图11是示出用于执行注重存储内计算的纠删编码的方法的示图。
20.图12是示出其中应用层将数据划分为数据组块且纠删编码层基于数据组块生成奇偶校验组块的用于执行注重存储内计算的纠删编码的系统的示图。
21.图13是示出可以被用于执行注重存储内计算的纠删编码的系统使用的多个存储方案的示图。
22.图14是其中包括ec层的虚拟装置管理层位于应用层与存储系统之间的图12的系统的修改版本的示图。
23.图15是其中ec层位于虚拟装置管理层的外部的图14的系统的修改版本的示图。
24.图16是示出用于执行注重存储内计算的纠删编码的方法的示图。
25.图17是示出可以用于执行注重存储内计算的纠删编码的计算装置的示图。
具体实施方式
26.图1是用于通过设置数据组块(chunk)长度(例如,数据组块大小或组块大小设置)并基于数据组块长度将数据对齐来执行注重存储内计算的纠删编码(in-storage computation conscious erasure coding)的系统的示图。
27.参照图1,示出了用于执行注重存储内计算的纠删编码的系统100的示图。系统100包括应用层102。应用层102对应于在一个或多个计算装置上执行的一个或多个应用、文件系统或它们的组合。系统100还包括与应用层102通信的纠删编码(erasure coding,ec)层104。如在这里描述的,ec层104对应于在一个或多个计算装置上执行并被配置为执行ec操作的软件。系统100还包括存储系统106,存储系统106包括与ec层104通信的多个存储装置。在示出的示例中,存储系统106包括第一存储装置106a、第二存储装置106b、第三存储装置106c、第四存储装置106d、第五存储装置106e和第六存储装置106f。存储系统106中的多个存储装置中的每个是包括被配置为在存储装置内执行计算的处理装置的计算机可读存储装置。示例计算机可读存储装置包括固态驱动器、硬盘驱动器等。尽管六个存储装置被示出在存储系统106中,但系统100的其他示例可以包括不同数量的存储装置。
28.应用层102被配置为向ec层104发送组块大小设置120,并且向ec层104发出存储器访问命令。存储器访问命令的示例包括数据写入、数据读取、存储内计算命令等。ec层104被配置为基于从应用层102接收的组块大小设置120将从应用层102接收的数据划分为数据组块(或称为组块),并且将组块存储在存储系统106中。ec层104还被配置为基于组块被存储在存储系统106中何处来存储地址转换数据。ec层104还被配置为基于组块生成奇偶校验位,并且将奇偶校验位存储在存储系统106中。此外,ec层104被配置为基于存储的地址转换数据对包括在存储器访问命令中的地址进行转换。存储系统106被配置为存储从ec层104接收的数据,响应于读取请求而将数据返回给ec层104,并且基于从ec层104接收的命令执行存储内计算。
29.在示出的示例中,应用层102接收第一用户数据(例如,用户数据1)108、第二用户数据(例如,用户数据2)110和第三用户数据(例如,用户数据3)112。用户数据108、110、112可以从外部计算机系统被接收、经由用户输入被接收、从另一源被接收、由应用层102的应用生成或者基于它们的组合被接收或生成。应用层102被配置为对接收的用户数据执行数据对齐。在示出的示例中,应用层102基于第一用户数据108生成第一对齐用户数据(例如,对齐的用户数据1)114,基于第二用户数据110生成第二对齐用户数据(例如,对齐的用户数据2)116,并且基于第三用户数据112生成第三对齐用户数据(例如,对齐的用户数据3)118。此外,应用层102向ec层104发送组块大小设置120。组块大小设置120可以由应用层102基于通常被应用层102(或应用层102的特定应用)操作的数据单元的大小而设置。例如,组块大小设置120可以对应于数据库中的页的大小(例如,8kb)。
30.用户数据(诸如,第一用户数据108、第二用户数据110和第三用户数据112)的大小可以大于由组块大小设置120指示的大小。通过将用户数据对齐,应用层102可以控制用户数据的单元(例如,页、词(word,或“字”)等)如何(如以下进一步描述的)被ec层104划分为数据组块。在一些示例中,执行数据对齐包括:将填充(例如,空值)添加到用户数据(例如,添加到用户数据的一个或多个单元(例如,页)),使得用户数据的一个或多个填充后的单元(例如,页)与组块大小设置120对齐(或对应)。例如,第一用户数据108可以包括具有7kb的
大小的第一页以及具有8kb的大小的第二页,而组块大小设置120指示8kb的组块大小。将第一用户数据108对齐以生成第一对齐用户数据(或称为第一对齐数据)114可以包括(例如,通过添加空值)将第一页填充为8kb的大小。因此,(例如,如下所述,在ec层104)基于组块大小设置120将第一对齐数据114划分为数据组块可以导致包括第一页的第一数据组块和包括第二页的第二数据组块。
31.应注意的是,尽管以上示例描述了将第一用户数据108对齐使得用户数据108的一个填充后的单元(例如,页)为一个数据组块的大小,但其他比率是可行的。例如,用户数据108的第一页可以具有7kb的大小,用户数据108的第二页可以具有6kb的大小,用户数据108的第三页可以具有16kb的大小,而组块大小设置120指示16kb的组块大小。将第一用户数据108对齐以生成第一对齐用户数据114可以包括将第一页和第二页填充为各自8kb的大小或者将第二页填充为9kb的大小,使得第一页和第二页一起为16kb。因此,(例如,如下所述,在ec层104)基于组块大小设置120将第一对齐数据114划分为数据组块可以导致包括第一页和第二页的第一数据组块以及包括第三页的第二数据组块。
32.在一些示例中,将用户数据对齐包括在添加或不添加填充的情况下将用户数据的一个或多个单元移动(shift)(例如,转移(transpose))。例如,第一用户数据108可以包括4kb的第一页、8kb的第二页和4kb的第三页,组块大小可以等于8kb。应用层102可以通过将第三页放置在第一页与第二页之间来生成第一对齐数据114。因此,(例如,如下所述,在ec层104)基于组块大小设置120将第一对齐数据114划分为数据组块可以导致包括第一页和第三页的第一数据组块以及包括第二页的第二数据组块。根据公开的其他数据对齐方案是可行的。
33.因此,通过基于组块大小设置120将输入的用户数据对齐,应用层102可以控制用户数据的单元如何(例如,如下所述,通过ec层104)基于组块大小设置120被划分为数据组块。尽管被描述为防止横跨数据组块拆分(split)数据单元(例如,页),但在一些示例中,数据通过应用层102被对齐,以控制数据单元如何横跨数据组块被拆分。对输入到应用层102的用户数据进行填充可以导致从应用层102输出的对齐的用户数据的大小大于输入的用户数据的大小。例如,第一对齐用户数据114的大小可以大于第一用户数据108的大小。组块大小设置120可以基于用户输入被设置,基于由应用层102执行的应用的应用设置被设置,或者基于一些其他输入被设置。应用层102中的每个应用可以向ec层104发送对应的组块大小设置120,以被ec层104使用来对来自该应用的用户数据进行划分。
34.因此,ec层104基于组块大小设置120对第一对齐用户数据114、第二对齐用户数据116和第三对齐用户数据118进行划分,以生成对齐的数据组块。每个对齐的数据组块具有由组块大小设置120指示的大小。ec层104根据ec技术而基于对齐的数据组块生成奇偶校验组块,并且将奇偶校验组块和对齐的数据组块存储在存储系统106中。在示出的示例中,ec层104被配置为遍及存储系统106建立第一可靠性组(rg1)122、第二可靠性组(rg2)124和第三可靠性组(rg3)126。在第一可靠性组122中,第一对齐用户数据114的第一对齐数据组块(dc1)128被存储在第一存储装置(dev1)106a上;第一对齐用户数据114的第二对齐数据组块(dc2)130被存储在第二存储装置(dev2)106b上;第一对齐用户数据114的第三对齐数据组块(dc3)132被存储在第三存储装置(dev3)106c上;第一对齐用户数据114的第四对齐数据组块(dc4)134被存储在第四存储装置(dev4)106d上;第一奇偶校验组块(pc1)136被存储
在第五存储装置(dev5)106e上;第二奇偶校验组块(pc2)138被存储在第六存储装置(dev6)106f上。在第二可靠性组124中,第二对齐用户数据116的第二对齐数据组块140被存储在第一存储装置106a上;第二对齐用户数据116的第三对齐数据组块142被存储在第二存储装置106b上;第一奇偶校验组块136被存储在第三存储装置106c上;第二奇偶校验组块138被存储在第四存储装置106d上;第一对齐用户数据114的第一对齐数据组块128被存储在第五存储装置106e上;第一对齐用户数据114的第二对齐数据组块130被存储在第六存储装置106f上。在第三可靠性组126中,第一奇偶校验组块136被存储在第一存储装置106a上;第二奇偶校验组块138被存储在第二存储装置106b上;第二对齐用户数据116的第一对齐数据组块144被存储在第三存储装置106c上;第三对齐用户数据118的第一对齐数据组块146被存储在第四存储装置106d上;第三对齐用户数据118的第二对齐数据组块148被存储在第五存储装置106e上;第三对齐用户数据118的第三对齐数据组块150被存储在第六存储装置106f上。
35.因此,应用层102被配置为设置组块大小设置120,并且基于组块大小设置120将用户数据对齐。应用层102可以被配置为基于由应用层102完成的处理的类型来选择组块大小设置120。例如,响应于应用层102(或应用层102的应用)被配置为对布置在页中的数据进行操作,应用层102可以被配置为将组块大小设置120设置为数据的页的大小。因为组块大小设置120由应用层102选择,并且用户数据基于组块大小被对齐,所以相关数据可以更集中到更少的对齐的数据组块中(例如,ec层可以被防止在两个组块之间对数据页进行划分)。因此,与其中数据未基于ec组块大小被对齐的实施方式相比,(例如,通过ec层104)向存储系统106发出的存储内计算命令可以在存储系统106的存储装置之间导致更少的数据同步操作。
36.图2是示出可以用在基于组块大小将数据对齐的系统中的数据层次结构(data hierarchy)的示例的图表。
37.图2示出了可以用在基于组块大小将数据对齐的系统中的示例数据层次结构的图表200。如图表200中所示,数据库202可以被划分为多个数据文件(例如,数据文件1至数据文件4)204。数据文件204中的每个还可以被划分为多个扩展区(extent)206。每个扩展区还可以被划分为多个页208。如所示出的,用于执行注重存储内计算的纠删编码的系统(诸如,系统100)可以采用等于页208的大小的组块大小210。因此,数据库202的页将不横跨由用于执行注重存储内计算的纠删编码的系统生成的数据组块被拆分。因此,存储内计算命令(诸如,利用一个或多个整页的数据的计算)可以在存储装置(诸如,图1的存储系统106的存储装置)之间引发更少的同步操作。在可选的示例中,组块大小210可以对应于扩展区206中的一个扩展区的大小或数据文件204中的一个数据文件的大小。
38.图3是示出在基于组块大小将数据对齐的系统中的存储内计算命令的分发的示图。
39.参照图3,示出了示出在用于执行注重存储内计算的纠删编码的系统100中的存储内计算命令的分发的示图。在示出的示例中,应用层102向ec层104发送计算命令302。计算命令302指定命令和地址范围。ec层104将地址范围转换为由存储系统106的存储装置识别的一个或多个转换的地址范围。例如,ec层104可以向应用层102暴露第一虚拟地址空间,并且使用基于组块大小设置(例如,组块大小设置120)的偏移计算(offset calculation)而
将第一虚拟地址空间的虚拟地址范围映射到由存储系统106中的多个存储装置(诸如,存储装置或真实装置106a至106f(例如,非易失性存储器快速装置/dev/nvme0n1至/dev/nvme5n1))识别的第二虚拟地址范围。可选地,ec层104可以维护将虚拟地址范围(例如,第一虚拟地址空间)映射到由存储系统106识别的转换的虚拟地址范围(例如,第二虚拟地址空间)的数据结构。随着数据组块128、130、132、134、140、142、144、146、148、150被存储在存储系统106中,ec层104可以更新数据结构。
40.基于计算命令(或称为命令)302,ec层104通过将由命令302指示的地址转换为由存储系统106的存储装置识别的转换的地址范围来生成修改的命令304、306、308(例如,计算命令1、计算命令2和计算命令3)。在这里描述的系统可以利用逻辑块地址(lba)。在示出的示例中,ec层104确定由命令302标识的地址范围(lbax,lbay)被映射到由第一存储装置106a识别的第一转换地址范围(lba'x,lba'a)、由第二存储装置106b识别的第二转换地址范围(lba'a,lba'b)以及由第三存储装置106c识别的第三转换地址范围(lba'g,lba'y)。ec层104通过用由第一存储装置106a识别的第一转换地址范围(lba'x,lba'a)替换由命令302指示的地址范围(lbax,lbay)来生成第一修改命令304。ec层104通过用由第二存储装置106b识别的第二转换地址范围(lba'a,lba'b)替换由命令302指示的地址范围(lbax,lbay)来生成第二修改命令306。ec层104还通过用由第三存储装置106c识别的第三转换地址范围(lba'g,lba'y)替换由命令302指示的地址范围(lbax,lbay)来生成第三修改命令308。
41.应注意的是,应用层102可以包括多于一个应用。此外,ec层104可以实现多个虚拟ec装置(或虚拟装置),每个虚拟ec装置向应用层102暴露不同的虚拟地址空间。ec层104被配置为将与虚拟装置相关联的地址(例如,lba地址)映射到由存储系统106识别的地址(例如,lba'地址)。在操作中,特定虚拟装置可以被ec层104映射到存储系统106中的多于一个装置上的地址范围。如图1中所示,ec层104被配置为针对每个虚拟ec装置接收组块大小设置(例如,组块大小设置120),并且基于那些组块大小设置生成数据组块以用于存储在存储系统106中。每个组块大小设置可以由对应的应用(例如,基于应用操作的数据的类型、基于由应用执行的操作的类型等)生成。
42.图4是示出其中应用层包括多于一个应用的示例的示图。
43.图4描绘了其中应用层102包括第一应用402、第二应用404和第三应用406的示例。ec层104包括向第一应用402暴露第一命名空间(例如,命名空间1)414的第一虚拟ec装置408、向第二应用404暴露第二命名空间(例如,命名空间2)416的第二虚拟ec装置410以及向第三应用406暴露第三命名空间(例如,命名空间3)418的第三虚拟ec装置412。命名空间414、416、418中的每个对应于存储系统106中的转换的地址范围。如图1中所示,虚拟ec装置408、410、412(例如,软独立磁盘冗余阵列(raid)装置/dev/md0、/dev/md1、/dev/mdx)中的每个被配置为基于从应用层102接收的数据组块大小将数据划分为数据组块。例如,第一虚拟ec装置408可以基于从第一应用402接收的组块大小设置对从第一应用402接收的数据进行划分。尽管图4描绘了虚拟装置与命名空间之间的一一对应关系,但应注意的是,在一些示例中,多于一个虚拟装置可以被映射到单个命名空间。
44.如图3中所描述的,虚拟ec装置408、410、412中的每个被配置为将在存储内计算命令中标识的地址范围转换为由存储系统106识别的转换的地址范围。例如,第一虚拟ec装置408可以从第一应用402接收指定第一命名空间414内的地址范围的存储内计算命令。第一
虚拟ec装置408可以将地址范围转换为由存储系统106的多个存储装置识别的一个或多个转换的地址范围,并且向对应的存储装置发送存储内计算命令的修改版本(例如,指定所识别的转换的地址范围的版本)。
45.因此,图4描绘了用于执行注重存储内计算的纠删编码的系统可以如何支持各自具有相关联的数据组块大小的多个命名空间。其他示例包括不同数量的应用和/或不同数量的虚拟ec装置。尽管应用402、404、406和虚拟ec装置408、410、412被示出为具有一一对应关系,但应注意的是,多于一个应用可以与单个虚拟ec装置交互。相似地,虚拟ec装置可以与多于一个应用交互。
46.图5是示出用于执行注重存储内计算的纠删编码的方法的示图。
47.参照图5,示出了示出用于执行注重存储内计算的纠删编码的方法500的示图。方法500可以由用于执行注重存储内计算的纠删编码的系统(诸如,图1的系统100)执行。方法500包括:在502,从应用层向ec层发送组块大小设置。例如,应用层102可以向ec层104发送组块大小设置120。
48.方法500还包括:在504,在应用层将数据对齐为组块大小,并且将对齐的数据写入ec层。例如,应用层102可以将第一用户数据108对齐为由组块大小设置120指示的组块大小,以生成第一对齐用户数据114。将第一用户数据108对齐以生成第一对齐用户数据114可以包括填充第一用户数据108内的数据片段(例如,页或其他数据单元)以与由组块大小设置120指示的组块大小对齐。
49.方法500还包括:在506,在ec层基于组块大小设置将对齐的数据划分为一个或多个数据组块,执行ec以生成奇偶校验组块,并写入到计算存储装置。例如,ec层104可以将第一对齐用户数据114划分为第一数据组块128、第二数据组块130、第三数据组块132和第四数据组块134,将数据组块128、130、132、134写入存储系统106,基于数据组块128、130、132、134生成奇偶校验组块136、138,并且将奇偶校验组块136、138写入存储系统106。
50.方法500还包括:在508,从应用层向ec层发送标识地址范围的计算指令(例如,计算命令)。例如,应用层102可以向ec层104发送计算命令302。计算命令302可以标识地址范围(例如,(lbax,lbay))。
51.方法500还包括:在510,通过将地址范围转换为一个或多个转换的地址范围来生成一个或多个修改的命令,并且向计算存储装置发送一个或多个修改的命令。例如,ec层104可以将地址范围(lbax,lbay)转换为多个转换的子范围,多个转换的子范围包括第一存储装置106a上的第一转换地址范围(lba'x,lba'a)、第二存储装置106b上的第二转换地址范围(lba'a,lba'b)以及第三存储装置106c上的第三转换地址范围(lba'g,lba'y)。ec层104可以向第一存储装置106a发送计算命令302的标识第一转换的地址范围的第一修改命令(版本)304,向第二存储装置106b发送计算命令302的标识第二转换地址范围的第二修改命令(版本)306,并且向第三存储装置106c发送计算命令302的标识第三转换地址范围的第三修改命令(版本)308。
52.因此,方法500可以用于设置组块大小设置,基于组块大小设置将数据对齐,基于组块大小设置将对齐的数据划分为组块,并且向存储装置发送计算命令以用于利用ec数据组块的存储内计算。与不基于由将数据对齐的应用层设置的组块大小设置对数据进行分块的方法相比,公开的方法500可以导致更高效的存储内计算。
53.图6是其中应用层对数据进行划分并执行纠删编码的用于执行注重存储内计算的纠删编码的系统的示图。
54.参照图6,示出了用于执行注重存储内计算的纠删编码的另一系统600的示图。系统600包括应用层602和存储系统606,应用层602总体上对应于图1的应用层102,存储系统606对应于图1的存储系统106(例如,与图1的存储系统106具有相同的配置)。应用层602而不是单独的ec层被配置为将用户数据划分为数据组块并且对数据组块执行ec。因为应用层602而不是单独的ec层将用户数据划分为数据组块,所以应用层602可以以防止用户数据的单元(例如,页、词等)被横跨两个分离的数据组块被拆分的方式来生成数据组块。此外,应用层602可以将用户数据划分为大小不等的数据组块。例如,应用层602可以将包括6kb的第一页和5kb的第二页的用户数据划分为包括第一页的第一数据组块和包括第二页的第二数据组块。可选地,应用层602可以基于组块大小设置将用户数据划分为大小一致的组块。组块大小设置可以基于被应用层602频繁操作的数据单元的大小(例如,页大小)被设置。在对用户数据进行划分之前,应用层602可以使用以上针对应用层102描述的一种或多种对齐技术来基于组块大小设置将用户数据对齐。
55.在示出的示例中,应用层602接收第一用户数据608、第二用户数据610和第三用户数据612。应用层602将第一用户数据608划分为第一数据组块628、第二数据组块630、第三数据组块632和第四数据组块634,并且将这些数据组块628、630、632、634存储在存储系统606中。应用层602还将第二用户数据610划分为第一数据组块644、第二数据组块640和第三数据组块642,并且将这些数据组块644、640、642存储在存储系统606中。应用层602还将第三用户数据612划分为第一数据组块646、第二数据组块648和第三数据组块650,并且将数据组块646、648、650存储在存储系统606中。此外,应用层602基于数据组块628、630、632、634、640、642、644、646、648、650生成奇偶校验组块636、638,并且将奇偶校验组块636、638存储在存储系统606中。
56.因为应用层602直接对数据进行划分,所以应用层602可以防止数据的单元横跨数据组块断开(break)。在特定的说明性示例中,应用层602存储文本数据并且对文本数据进行操作。例如,第二用户数据610可以包括文本串(或串)“the traditional ec task”,应用层602可以被配置为向存储系统606(例如,向存储系统606中的特定存储装置)发出基于文本的计算命令(诸如,词计数命令)以用于存储内计算。应用层602可以生成数据组块644、640、642,使得没有词在数据组块之间被拆分。例如,应用层602可以将“the”划分为第一数据组块644,将“traditional ec”划分为第二数据组块640,并且将“task”划分为第三数据组块642。因此,因为没有词由于横跨两个块被断开而被双重计数,所以针对与串“the traditional ec task”对应的地址范围向存储系统606发出的词计数命令可以正确地返回结果“四”。相反,在包括将未对齐的数据盲目地划分为数据组块的ec层的系统中,串可能被拆分为数据组块“the tradi”和“tional ec task”,并且被存储在两个单独的存储装置上。因为“traditional”被双重计数,所以向两个单独的存储装置发出的词计数命令可能导致不正确结果“五”。
57.上述系统100可以通过基于组块大小将串对齐来克服该问题。例如,应用层102可以将填充(例如,“空字符”)插入串中以生成对齐的串(例如,第二对齐的用户数据116)“the\0\0\0\0\0\0\0”“traditional ec task”,该对齐的串可以被ec层104划分为包括“the\0\0\0\0\0\0\0”的第一数据组块和包括“traditional ec task”的第二数据组块。因此,由系统100或系统600对数据组块执行的词计数的存储内计算可以导致正确结果“四”。
58.图7是示出在其中应用层对数据进行划分并执行纠删编码的系统中的存储内计算命令的分发的示图。
59.参照图7,示出了示出在用于执行注重存储内计算的纠删编码的系统600中的存储内计算命令的分发的示图。如所示出的,应用层602被配置为直接向存储系统606(例如,向存储系统606的一个或多个特定存储装置)发出存储内计算命令。在示出的示例中,应用层602针对存储内计算而向第一存储装置606a发出计算命令702。计算命令702包括与第一存储装置606a相关联的存储器位置的地址的范围。
60.系统600的应用层602还被配置为生成并存储用户数据的元数据索引,用户数据被划分并存储在存储装置606a、606b、606c、
……
上。元数据索引指向装置标识符(id)和地址的组合。
61.图8是示出其中用于执行注重存储内计算的纠删编码的系统生成元数据索引的示例。在示出的示例中,应用层602生成与第一用户数据608相关联的元数据索引802,并且在多个存储装置606a、606b、606c、
……
中的一个或多个已知的地址处复制(例如,存储)元数据索引802。在一些实施方式中,元数据索引802对应于树数据结构或表。其他结构也可以用于元数据索引802。在一些实施方式中,应用层602基于索引地址的哈希来复制元数据索引802。
62.在一些实施方式中,应用层602将元数据索引802划分为组块,并且将ec应用于元数据索引组块以生成元数据索引802的奇偶校验组块。这些元数据奇偶校验组块可以被应用层602存储在存储系统606中。
63.在其中元数据索引802对应于树结构的一些实施方式中,应用层602针对元数据索引802的叶节点生成奇偶校验组块,并且在存储系统606中复制非叶节点。例如,应用层602可以通过这样的操作对元数据索引802的纠删编码和复制进行组合:对元数据索引802的不被频繁修改的部分(例如,叶节点)进行纠删编码,并且复制元数据索引802的被频繁修改的部分(例如,非叶节点)。
64.图9是示出元数据索引的示例的示图。
65.参照图9,示出了元数据索引802的示例条目结构。如所示出的,元数据索引802的条目包括元数据902,元数据902链接到装置id 904和地址906的组合。元数据902可以包括文件名、数据库名、数据库页标识符、键名、lba、虚拟地址、一些其他标识符或它们的组合。装置id 904是存储系统606中的一个存储装置的标识符;地址906是该存储装置内的地址(地址可以是虚拟地址)。因此,元数据索引802标识与元数据902相关联的装置以及与元数据902相关联的数据在装置内的位置。例如,元数据902可以对应于第三用户数据612,装置id 904可以指示第三用户数据612的第一数据组块646被存储在第四存储装置606d上。地址906可以指示第三用户数据612的第一数据组块646在第四存储装置606d内的地址。元数据索引802还可以通过指示附加装置id/地址对来指向第三用户数据612的附加块。此外,在其中数据组块(例如,与第一用户数据608的第一数据组块628一样)被存储在多于一个位置处的情况下,元数据索引802可以指向存储有数据组块的每个装置位置/对。因此,图9示出了可以被其中应用层划分并存储数据的用于执行注重存储内计算的纠删编码的系统使用的
元数据索引的示例。
66.应注意的是,因为应用层具有到存储在存储系统606中的奇偶校验组块的通道(access),所以应用层602可以向包括奇偶校验组块的存储装置发出计算命令。例如,由应用层602生成的奇偶校验组块可以对应于将码字定义为数据词的线性组合的纠删码(erasure code),计算命令可以对应于线性计算(诸如,矩阵乘法)。因此,计算命令可以针对数据组块和奇偶校验组块两者。
67.图10是示出向存储数据组块的存储装置(例如,计算存储装置)发出的和向存储奇偶校验组块的装置发出的计算命令的示图。
68.例如,图10示出了示例,在该示例中,应用层602已经将第一用户数据组块(d1)1002存储在第一存储装置606a中,已经将第二用户数据组块(d2)1004存储在第二存储装置606b中,并且已经将奇偶校验组块(d1 d2)1006存储在第三存储装置606c中。奇偶校验组块1006基于用户数据组块1002、1004,并且可以与用户数据组块1002、1004中的一个结合起来使用,以重建用户数据组块1002、1004中的另一个。因此,为了对用户数据组块1002、1004执行操作,应用层602可以向第一存储装置606a和第二存储装置606b、向第一存储装置606a和第三存储装置606c或者向第二存储装置606b和第三存储装置606c发出计算命令。应用层602可以基于任何两个结果的组合来确定对用户数据组块1002、1004的操作的正确结果。
69.示出的示例示出了应用层602向第一存储装置606a发出第一命令(c1)1008,向第二存储装置606b发出第二命令(c2)1010,并且向第三存储装置606c发出第三命令(cp)1012。第一命令1008针对第一用户数据组块1002,第二命令1010针对第二用户数据组块1004,第三命令1012针对奇偶校验组块1006。
70.在一些实施方式中,响应于以特定用户数据为目标的数据操作,应用层602被配置为向存储可用于重建特定用户数据的数据组块和/或奇偶校验组块的所有存储装置发出计算命令,并且使用最快的k个结果(例如,返回给应用层602的前k个结果)来生成数据操作的结果。例如,应用层602可以基于存储装置606a、606b、606c的相对速度发出命令1008、1010、1012中的一个或多个。
71.在一些实施方式中,响应于以特定用户数据为目标的数据操作,应用层602被配置为向存储可用于重建特定用户数据的数据组块和/或奇偶校验组块的每个存储装置发出计算命令。例如,应用层602可以响应于以与第一用户数据组块1002和第二用户数据组块1004对应的用户数据为目标的数据操作而发出第一命令1008、第二命令1010和第三命令1012,并且基于最快返回给应用层的那些结果来生成数据操作的结果。例如,应用层602可以根据哪些结果最早被应用层接收而基于第一命令1008和第二命令1010的结果、基于第一命令1008和第三命令1012的结果或者基于第二命令1010和第三命令1012的结果来生成数据操作的结果。
72.在一些实施方式中,响应于以特定用户数据为目标的数据操作,应用层602被配置为基于负载而向存储可用于重建特定用户数据的数据组块和/或奇偶校验组块的一个或多个存储装置发出计算命令。例如,响应于以与第一用户数据组块1002和第二用户数据组块1004对应的用户数据为目标的数据操作,应用层602可以基于存储装置606a、606b、606c的相对负载而向第一存储装置606a发出第一命令1008并向第二存储装置606b发出第二命令1010、向第一存储装置606a发出第一命令1008并向第三存储装置606c发出第三命令1012或
者向第二存储装置606b发出第二命令1010并向第三存储装置606c发出第三命令1012。
73.图11是示出用于执行注重存储内计算的纠删编码的方法的示图。
74.参照图11,示出了示出用于执行注重存储内计算的纠删编码的方法1100的示图。方法1100可以由图6的系统600执行。方法1100包括:在1102,在应用层,将数据对齐,对对齐的数据进行划分,执行ec以创建奇偶校验数据,并且将数据和奇偶校验数据写入一个或多个计算存储装置。例如,应用层602可以(例如,通过将第一用户数据608的片段填充为组块大小)将第一用户数据608对齐。应用层602还可以将第一用户数据608划分为第一数据组块628、第二数据组块630、第三数据组块632和第四数据组块634,并且基于数据组块628、630、632、634生成奇偶校验组块636、638。应用层602还可以将数据组块628、630、632、634和奇偶校验组块636、638存储在存储系统606中。
75.方法1100还包括:在1104,生成并存储元数据索引。例如,应用层602可以生成元数据索引802,元数据索引802指向存储装置以及在存储装置中存储第一数据组块628的地址(可由存储装置转换的虚拟地址)。应用层602还可以将元数据索引802存储在存储系统606中。
76.方法1100还包括:在1106,从应用层向一个或多个计算存储装置发送一个或多个计算指令。例如,响应于以与第一用户数据组块1002和第二用户数据组块1004对应的用户数据为目标的数据操作,应用层602可以生成第一计算指令(例如,第一命令)1008、第二计算指令(例如,第二命令)1010和第三计算指令(例如,第三命令)1012中的一个或多个。应用层602可以基于元数据索引802对一个或多个计算指令进行寻址。
77.因此,方法1100可以用于执行数据的纠删编码并且发出存储内计算命令。因为方法1100包括在应用层执行ec,所以应用层可以以导致高效的存储内计算的方式将由ec操作生成的数据组块中的数据对齐。例如,应用层可以将数据组块中的数据对齐,使得数据片段(例如,词、页等)不横跨组块断开。
78.图12是示出其中应用层将数据划分为数据组块且纠删编码层基于数据组块生成奇偶校验组块的用于执行注重存储内计算的纠删编码的系统的示图。
79.参照图12,示出了用于执行注重存储内计算的纠删编码的系统1200的示图。在系统1200中,数据被应用层划分为组块,应用层将组块写入存储装置。应用层向ec层发送标识数据组块的通知,ec层基于通知生成奇偶校验组块。
80.系统1200包括应用层1202。应用层1202可以对应于由一个或多个计算装置执行的一个或多个应用和/或一个或多个文件系统。系统1200还包括ec层1204。ec层1204对应于执行一个或多个计算装置以执行在这里描述的功能的软件。系统1200还包括包含被配置为执行存储内计算的多个存储装置的存储系统1206。存储系统1206包括第一存储装置1206a、第二存储装置1206b、第三存储装置1206c、第四存储装置1206d、第五存储装置1206e和第六存储装置1206f。
81.应用层1202被配置为(例如,经由用户输入、从另一应用、从另一计算装置或基于它们的组合)接收用户数据,并且将用户数据划分为数据组块以用于存储。在一些实施方式中,应用层1202被配置为在划分之前将用户数据对齐。在一些实施方式中,由应用层1202生成的数据组块在大小上是不一致的。例如,应用层1202可以被配置为基于用户数据内的具有不同长度(或大小)的数据单元(例如,页)之间的边界来对用户数据进行划分。应用层
1202还被配置为将数据组块存储在存储系统1206中。此外,应用层1202被配置为向ec层1204发送指示将要写入或已经写入存储系统1206的数据组块的写入通知。此外,应用层1202被配置为(例如,响应于数据操作请求)向存储系统发送计算命令。此外,应用层1202被配置为响应于检测到对存储在存储系统1206中的数据组块的擦除(或部分擦除)而向ec层1204发送修复请求。
82.ec层1204被配置为从应用层1202接收写入通知,并且基于由写入通知指示的数据组块来生成奇偶校验组块。ec层1204被配置为将奇偶校验组块存储在存储系统1206中。此外,ec层1204被配置为基于奇偶校验组块来重新生成由来自应用层1202的修复请求标识的数据组块。
83.在示出的示例中,应用层1202接收第一用户数据1208、第二用户数据1210和第三用户数据1212。应用层1202将第一用户数据1208划分为第一数据组块1214、第二数据组块1216、第三数据组块1218、第四数据组块1220和第五数据组块1222。如所示出的,数据组块1214、1216、1218、1220、1222在大小上是不一致的。应用层1202可以被配置为基于用户数据内的数据单元之间的边界来对用户数据进行划分。例如,第一用户数据1208可以包括大小为7kb的第一页、大小为8kb的第二页、大小为5kb的第三页、大小为5kb的第四页和大小为5kb的第五页。应用层1202可以对第一用户数据1208进行划分,使得每个页落入具有页的大小的组块内,而不是将页填充为最大的页大小(例如,8kb)。例如,第一页可以对应于第一数据组块1214,第二页可以对应于第二数据组块1216,第三页可以对应于第三数据组块1218,第四页可以对应于第四数据组块1220,第五页可以对应于第五数据组块1222。应用层1202可以使用各种分配技术(例如,轮流(round robin)等)将数据组块1214、1216、1218、1220、1222写入存储系统1206内的装置。
84.应用层1202将第二用户数据1210划分为第一数据组块1224和第二数据组块1226。应用层1202还将第三用户数据1212划分为第一数据组块1228、第二数据组块1230和第三数据组块1232。应用层1202将数据组块1214、1216、1218、1220、1222、1224、1226、1228、1230、1232存储在存储系统1206中。应用层1202还向ec层1204发送标识数据组块1214、1216、1218、1220、1222、1224、1226、1228、1230、1232的一个或多个写入通知。响应于一个或多个写入通知,ec层1204基于数据组块1214、1216、1218、1220、1222、1224、1226、1228、1230、1232生成第一奇偶校验组块1234和第二奇偶校验组块1236,并且将奇偶校验组块1234、1236存储在存储系统1206中。在一些实施方式中,应用层1202还被配置为生成如以上参照图8和图9描述的元数据索引,并且将元数据索引存储在存储系统1206中。
85.在发生应用层1202检测到对数据组块1214、1216、1218、1220、1222、1224、1226、1228、1230、1232中的一个的擦除时,应用层1202可以向ec层1204发出标识该数据组块的修复请求。响应于修复请求,ec层1204可以基于数据组块1214、1216、1218、1220、1222、1224、1226、1228、1230、1232中的剩余数据组块以及奇偶校验组块1234、1236中的一个或多个来重新生成擦除的数据组块,并且将恢复的数据组块返回给应用层1202以用于存储在存储系统1206中。
86.应用层1202还被配置为直接向存储系统1206(例如,向存储系统1206中的一个或多个特定存储装置)发出存储内计算命令。如在系统600中,因为应用层1202对用户数据进行划分(并且潜在地将用户数据对齐),所以用户数据可以以使存储内计算的效率增大的方
式被存储在存储系统1206中。例如,应用层1202可以防止用户数据的数据片段(例如,词、页等)横跨存储在存储系统1206中的数据组块而断开。
87.图13描绘了可以通过用于执行注重存储内计算的纠删编码的系统而实现的多个存储方案。
88.参照图13,尽管被描述和示出为由应用层1202和ec层1204执行,但示出的存储方案也可以通过ec层104或应用层602被实现。在第一存储方案中,应用层1202将数据组块存储在专用于存储数据组块的存储装置上,ec层1204将奇偶校验组块存储在专用于存储奇偶校验组块的存储装置上。图13包括示出第一存储方案的第一示图1302。在示出的示例中,应用层1202将数据组块存储在第一存储装置1206a、第二存储装置1206b、第三存储装置1206c和第四存储装置1206d上。ec层1204将奇偶校验组块存储在第五存储装置1206e和第六存储装置1206f中。第一存储方案的一个优点在于,应用层1202可以将数据组块写入专用于存储数据组块的存储装置中的任何块。因此,应用层1202不需要确保数据组块被限制在专用于存储数据组块的数据块边界。
89.在第二存储方案中,应用层1202和ec层1204(例如,以轮流方式)将数据组块和奇偶校验组块分布在存储系统1206之中。第二存储方案的示例被示出在图13中示出的第二示图1304中。
90.在一些实施方式中,由应用层1202生成的数据组块是逻辑块地址(lba)对齐的,而在其他实施方式中,数据组块不是lba对齐的。此外,存储系统1206的存储装置可以是块装置或键值装置。在其中数据组块不是lba对齐的并且存储装置是块装置的实施方式中,应用层1202可以被配置为以与数据组块大小除以lba大小的上取整(ceiling)相等的数量的lba来存储数据组块。可选地,应用层1202可以被配置为将来自不同数据组块的数据打包(pack)为lba大小,并且生成字节粒度索引信息。
91.可以对系统1200做出各种修改。例如,虚拟装置管理层可以被添加在应用层1202与存储系统1206之间。
92.图14是其中包括ec层的虚拟装置管理层位于应用层与存储系统之间的图12的系统的修改版本的示图。
93.参照图14,图14示出了其中虚拟装置管理层1402位于应用层1202与存储系统1206之间的图12的系统的修改版本的示例(系统1400)。虚拟装置管理层1402通过在一个或多个计算装置上执行的软件被提供。虚拟装置管理层1402被配置为通过分配存储系统的块中的第一组作为数据块并且分配存储系统的块中的第二组作为奇偶校验块,来配置存储系统1206。虚拟装置管理层1402可以根据以上参照图13描述的存储方案中的一个来配置存储系统1206。虚拟装置管理层1402还被配置为提供通道,以向应用层暴露一个或多个虚拟存储装置(或虚拟数据装置(例如,虚拟非易失性存储器快速装置/dev/vnvme0、/dev/vnvme1、/dev/vnvmen))。一个或多个虚拟存储装置被虚拟装置管理层1402映射到存储系统1206的数据块(例如,存储系统1206内的真实装置(例如,非易失性存储器快速装置/dev/nvme0、/dev/nvme1、/dev/nvmen)中的数据块)。在示出的示例中,虚拟装置管理层1402向应用层1202暴露第一虚拟装置1404、第二虚拟装置1406和第三虚拟装置1408。虚拟装置管理层1402被配置为将针对第一虚拟装置1404的命令(例如,读取命令、写入命令、计算命令等)映射到存储系统1206中的一个或多个数据块。相似地,虚拟装置管理层1402被配置为将针对
第二虚拟装置1406和第三虚拟装置1408的命令映射到存储系统1206中的对应的数据块。
94.虚拟装置管理层1402还包括与ec层1204起相似作用的ec层1410。如在系统1200中那样,应用层1202被配置为将数据划分为数据组块,并且将数据组块写入存储系统1206。然而,在系统1400中,应用层1202通过向虚拟装置管理层1402发送针对虚拟装置1404、1406、1408中的一个的写入命令,来将数据组块写入存储系统1206。虚拟装置管理层1402将由写入命令标识的地址范围转换为存储系统1206中的一个或多个地址范围,并且通知ec层1410。ec层1410基于数据组块生成一个或多个奇偶校验组块,并且将奇偶校验组块写入存储系统1206中的被分配作为奇偶校验块的一个或多个块。
95.图15是其中ec层位于虚拟装置管理层的外部的图14的系统的修改版本的示图。
96.参照图15,图15示出了作为系统1400的修改版本的系统1500。在系统1500中,ec层1502位于虚拟装置管理层1402的外部。虚拟装置管理层1402向ec层1502暴露虚拟奇偶校验装置1504,并且将虚拟奇偶校验装置1504的虚拟地址映射到存储系统1206的奇偶校验块。虚拟装置管理层1402被配置为响应于来自应用层1202的写入命令而向ec层1502发送通知。通知标识通过写入命令被写入的数据组块。ec层1502被配置为基于数据组块生成奇偶校验组块。ec层1502还被配置为向虚拟装置管理层1402发送命令,以将奇偶校验组块写入虚拟奇偶校验装置(例如,虚拟非易失性存储器快速装置/dev/vnvmep)1504。虚拟装置管理层1402被配置为将来自ec层1502的命令映射到存储系统1206中的一个或多个奇偶校验块,并且将奇偶校验组块写入一个或多个奇偶校验块。
97.图16是示出用于执行注重存储内计算的纠删编码的方法的示图。
98.参照图16,示出了示出用于执行注重存储内计算的纠删编码的方法1600的示图。方法1600可以由图12的系统1200执行。方法1600包括:在1602,由应用层在存储装置处配置数据和奇偶校验块布局配置。例如,应用层1202可以(例如,在raid配置中)配置存储系统1206,并且(例如,如图13所示的)指定存储系统1206的特定块作为奇偶校验块并指定存储系统1206的特定块作为数据块。
99.方法1600还包括:在1604,将数据对齐,对数据进行划分,并且将数据写入存储装置中的块。例如,应用层1202可以接收第一用户数据1208,将第一用户数据1208对齐,并且将第一用户数据1208划分为第一数据组块1214、第二数据组块1216、第三数据组块1218、第四数据组块1220和第五数据组块1222。应用层1202还可以直接将数据组块1214、1216、1218、1220、1222存储在存储系统1206上。
100.方法1600还包括:在1605,生成元数据索引。例如,应用层1202可以生成(与元数据索引802相似的)指向第一数据组块1214的装置和地址的元数据索引。应用层1202可以将元数据索引存储在存储系统1206(例如,存储系统1206中的多个(计算)存储装置)中。
101.方法1600还包括:在1606,从应用层向ec层发送通知。例如,应用层1202可以向ec层1204发送标识数据组块1214、1216、1218、1220、1222的通知。
102.方法1600还包括:在1608,计算奇偶校验,并写入到奇偶校验块。例如,ec层1204可以基于数据组块1214、1216、1218、1220、1222生成第一奇偶校验组块1234和/或第二奇偶校验组块1236,并且将第一奇偶校验组块1234和/或第二奇偶校验组块1236存储在存储系统1206中。
103.方法1600还包括:在1610,从应用层向存储装置发送一个或多个计算命令。例如,
应用层1202可以向存储系统1206中的一个或多个存储装置发出一个或多个计算命令。应用层1202可以基于元数据索引对一个或多个计算命令进行寻址。
104.因此,方法1600可以用于执行数据的纠删编码并且发出存储内计算命令。因为方法1600包括在应用层对数据组块进行划分,所以应用层可以以导致高效的存储内计算的方式将数据组块中的数据对齐。例如,应用层可以将数据组块中的数据对齐,使得数据片段(例如,词、页等)不横跨组块断开。
105.图17是示出可以用于执行注重存储内计算的纠删编码的计算装置的示图。
106.图17是示出计算装置1700的示图。在前述示例中描述的一个或多个组件可以包括计算装置(诸如,计算装置1700)。例如,应用层102、602、1202、ec层104、1204和它们的组合中的一个或多个可以对应于在一个或多个计算装置(诸如,计算装置1700)上执行的软件。
107.计算装置1700包括存储ec指令1708的一个或多个计算机可读存储装置1704。一个或多个计算机可读存储装置1704可以包括固态驱动器、硬盘驱动器、光盘、随机存取存储器、其他类型的计算机存储装置或者它们的组合。如在这里使用的,“计算机可读存储装置”是制造的产品,而不是暂时性信号。
108.计算装置1700还包括一个或多个处理器1706。一个或多个处理器1706可以包括中央处理器和/或其他处理器。ec指令1708可由一个或多个处理器1706执行,以执行在这里描述的操作中的一个或多个。因此,计算装置1700可以对应于在这里描述的组件(或组件的部分)。
109.前述是对示例实施例的说明,并且将不被解释成为其限制。尽管已经描述了一些示例实施例,但本领域技术人员将容易理解的是,在实质上不脱离示例实施例的新颖的教导和优点的情况下,许多修改在示例实施例中是可行的。因此,所有这样的修改意图被包括在如权利要求中所限定的示例实施例的范围内。在权利要求中,装置加功能条款意图涵盖在这里描述为执行记载的功能的结构,并且不但涵盖结构等同物而且涵盖等同结构。因此,将理解的是,前述是对示例实施例的说明,并且将不被解释为局限于公开的特定实施例,对公开的示例实施例的该修改以及其他示例实施例意图被包括在所附权利要求的范围内。
110.在这里使用的术语仅是为了描述具体实施例的目的,并且不意图成为本公开的限制。如在这里使用的,除非上下文另外清楚地指出,否则单数形式“一”和“一个(种/者)”也意图包括复数形式。还将理解的是,当术语“包括”、“具有”和“包含”以及它们的变型在用在本说明书中时,说明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在这里使用的,术语“和/或”包括相关所列项中的一个或多个的任何组合和全部组合。
111.如在这里使用的,当描述本公开的实施例时,“可以”的使用是指“本公开的一个或多个实施例”。如在这里使用的,术语“使用”、“正在使用”和“被使用”可以被认为分别与术语“利用”、“正在利用”和“被利用”同义。
112.当特定实施例可以被不同地实现时,可以与描述的顺序不同地执行特定处理顺序。例如,可以基本同时执行或以与描述的顺序不同的顺序执行连续描述的两个处理。
113.在这里描述的根据本公开的实施例的电子或电气装置以及/或者其他相关装置或组件可以利用任何合适的硬件、固件(例如,专用集成电路)、软件或者软件、固件和硬件的组合被实现。例如,这些装置的各种组件可以被形成在一个集成电路(ic)芯片上或在单独
的ic芯片上。此外,这些装置的各种组件可以被实现在柔性印刷电路膜、载带封装(tcp)、印刷电路板(pcb)上,或者被形成在一个基底上。此外,这些装置的各种组件可以是在一个或多个计算装置中的一个或多个处理器上运行的、执行计算机程序指令并与其他系统组件交互以执行在这里描述的各种功能的进程或线程。计算机程序指令被存储在存储器中,存储器可以使用标准存储器装置(诸如,以随机存取存储器(ram)为例)被实现在计算装置中。计算机程序指令也可以被存储在其他非暂时性计算机可读介质(诸如,以cd-rom、闪存驱动器等为例)中。此外,本领域技术人员应认识到的是,在不脱离本公开的示例实施例的精神和范围的情况下,各种计算装置的功能可以被组合或集成到单个计算装置中,或者特定计算装置的功能可以横跨一个或多个其他计算装置被分布。
114.除非另外定义,否则在这里使用的所有术语(包括技术术语和科学术语)具有如本公开所属的领域的普通技术人员所通常理解的含义相同的含义。还将理解的是,除非在这里明确地如此定义,否则术语(诸如在通用字典中定义的术语)应被解释为具有在相关领域的背景和/或本说明书中它们的含义一致的含义,并且不应以理性化的或过意形式化的含义进行解释。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献