首页> 中国专利> 减少I/O开销的混洗归约任务

减少I/O开销的混洗归约任务

摘要

混洗归约操作接收由不同映射任务排序和写入的文件作为输入,从每个输入文件获取批次数据,将批次数据合并和排序以形成大的统一的数据段。对统一的数据段应用混洗归约操作以产生输出数据。混洗归约操作包括提供显著小于输入数据量的输出数据量的可交换归约操作。输出数据被写入到存储器。对不同批次的数据重复该过程,直到来自每个输入文件中的数据被完全消耗并且输出数据已完全形成。混洗归约操作大大减少了混洗操作中需要由归约任务读取的数据大小,因此显著降低了输入/输出开销和总执行时间。

著录项

  • 公开/公告号CN114945902A

    专利类型发明专利

  • 公开/公告日2022-08-26

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN202080092843.2

  • 申请日2020-01-15

  • 分类号G06F9/50(2006.01);G06F3/06(2006.01);

  • 代理机构北京同立钧成知识产权代理有限公司 11205;北京同立钧成知识产权代理有限公司 11205;

  • 代理人杨贝贝;臧建明

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 16:31:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-13

    实质审查的生效 IPC(主分类):G06F 9/50 专利申请号:2020800928432 申请日:20200115

    实质审查的生效

说明书

技术领域

本申请涉及大规模数据处理系统,特别是涉及用于在减少对硬盘驱动器(HDD)的随机访问I/O请求的数量的同时减少数据的读取和写入从而在复杂数据处理操作期间减少总执行时间的系统和方法。

背景技术

Spark

不幸的是,这样的方案伴随着相当大的成本。例如,Riffle

发明内容

现在描述各种示例来以简化形式介绍一组概念,这些概念将在下面的详细描述中进一步描述。本发明内容并非意在识别所要求保护的主题的关键或基本特征,也不意在用于限制所要求保护的主题的范围。

在样例实施例中,混洗归约(Shuffle Reduce)任务被设计并集成到数据分析框架中。数据分析框架中的驱动器模块决定是否使用混洗归约任务以及使用多少混洗归约任务。本文描述的混洗归约任务进行顺序读取I/O请求,而不是传统方法中执行的大量随机访问I/O请求(减少I/O开销)。与Riffle

在样例实施例中,混洗归约模块可以被包括在数据分析框架驱动器中,该数据分析框架驱动器决定是为作业调用混洗归约任务(调用多少等)还是维护现有执行计划。如果调用混洗归约任务,则将其作为作业执行计划的部分进行调用。该方案可以应用于任何数据流执行平台。

根据本公开的第一方面,提供了一种执行混洗归约操作的方法,该混洗归约操作在数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换。该方法包括接收来自第一存储器的至少两个输入文件作为输入,其中每个输入文件已被不同的映射任务分类和写入;获取来自每个输入文件的批次数据;对第二存储器中的批次数据进行合并和分类以形成统一的数据段。对统一的数据段应用混洗归约操作以产生输出数据。在样例实施例中,混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作。输出数据被写入第三存储器,重复这些步骤直到来自每个输入文件的数据被完全消耗,并且数据分析过程的分析数据输出已完全形成。

根据本公开的第二方面,提供了一种数据分析系统,包括:至少一个处理器;第一存储器,其储存至少两个输入文件,每个输入文件由数据分析过程的不同映射任务分类和写入;第二存储器;第三存储器;和指令存储器,其储存指令,所述指令当由所述至少一个处理器执行时执行数据分析过程,所述数据分析过程包括在所述数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换的混洗归约操作。在样例实施例中,混洗归约操作包括:(1)接收来自第一存储器的至少两个输入文件作为输入;(2)获取来自每个输入文件的批次数据;(3)对第二存储器中的批次数据进行合并和分类以形成统一的数据段;(4)对统一的数据段应用混洗归约操作以产生输出数据,其中混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作;(5)将输出数据写入到第三存储器;以及(6)重复(2)-(5)直到来自每个输入文件的数据被完全消耗并且数据分析过程的分析数据输出已完全形成。

根据本公开的第三方面,提供了一种非暂态计算机可读储存介质,包括指令,所述指令在由至少一个处理器执行时使所述处理器执行混洗归约操作,所述混洗归约操作通过执行操作在数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换,所述操作包括:(1)接收来自第一存储器的至少两个输入文件作为输入,其中每个输入文件已由不同的映射任务分类和写入;(2)获取来自每个输入文件的批次数据;(3)对第二存储器中的批次数据进行合并和分类以形成统一的数据段;(4)对统一的数据段应用混洗归约操作以产生输出数据,其中混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作;(5)将输出数据写入到第三存储器;以及(6)重复(2)-(5)直到来自每个输入文件的数据被完全消耗并且数据分析过程的分析数据输出已完全形成。

在任一前述方面的第一实现方式中,所述第一存储器和所述第三存储器包括硬盘驱动器,并且所述第二存储器包括动态随机访问存储器(DRAM)。

在任一前述方面的第二实现方式中,第一存储器可以包括至少一个硬盘驱动器,并且第三存储器可以包括固态盘和永久存储器中的至少一者。

在任一前述方面的第三实现方式中,获取来自每个输入文件的批次数据包括获取不超过为所述混洗归约操作分配的存储器容量的数据总量。

在前述任一方面的第四种实现方式中,所述驱动器模块基于下述确定是否对所述数据分析过程中的特定作业执行所述混洗归约操作:所述作业是否包括混洗操作,所述作业的工作负载是否足够大以获得性能增益,所述作业是否包括在输出文件中提供小于输入数据量的输出数据量的所述可交换归约操作,要开始多少个任务以实施所述混洗归约操作,以及何时开始和停止所述混洗归约操作。

在任一前述方面的第五实现方式中,所述数据分析过程在数据分析平台上实施,并且应用所述混洗归约操作包括应用按键聚合操作、按键分组操作和按键归约操作中的至少一者作为所述可交换归约操作。

在任一前述方面的第六实现方式中,第一任务运行下述步骤:接收输入文件、获取来自每个输入文件的批次数据、以及对批次数据合并和分类,而第二任务运行下述步骤:应用混洗归约操作、以及写入输出。在样例实施例中,第一任务和第二任务独立于第一存储器和第三存储器彼此直接通信。

在任一前述方面的第七实现方式中,将所述混洗归约操作应用于统一的数据段以产生输出数据包括应用多个任务以实施所述混洗归约操作。

该方法可以被执行并且计算机可读介质上的指令可以由该装置处理,并且该方法的另外特征和计算机可读介质上的指令由该装置的功能性产生。此外,为每个方面及其实现方式提供的解释同样适用于其他方面和对应的实现方式。不同的实施例可以以硬件、软件或其任何组合来实施。此外,前述示例中的任何一个可以与其他前述示例中的任何一个或更多个组合以在本公开的范围内创建新的实施例。

附图说明

在不一定按比例绘制的附图中,相似的数字可以在不同的视图中描述相似的部件。附图通常通过示例但不限制地例示本文件中讨论的各个实施例。

图1示出了Spark

图2示出了图1中所示的作业的Spark

图3示出了在混洗期映射和归约任务之间的映射。

图4示出了Riffle

图5示出了用于减少I/O开销的混洗归约方法的样例实施例。

图6示出了样例实施例中由混洗归约操作执行的步骤。

图7示出了在样例实施例中混洗归约操作的流程图。

图8示出示了在样例实施例中对指定的输入文件进行混洗归约操作的示例。

图9是示出用于执行根据样例实施例的方法的电路的框图。

具体实施方式

首先应该理解的是,尽管下面提供了一个或更多个实施例的示例性实现方式,但关于图1至图9所描述的被公开的系统和/或方法可以使用任何数量的、无论是目前已知的还是存在的技术来实施。本公开绝不应限于以下示出的示例性实现方式、附图和技术,包括本文中示出和描述的范例性设计和实现方式,而是可以在所附权利要求的范围内连同它们的全部等同物的范围进行修改。

在一实施例中,本文描述的功能或算法可以软件实现。该软件可以包括储存在计算机可读介质或计算机可读储存设备诸如一个或更多个非暂态存储器或其他类型的本地或网络的基于硬件的储存设备上的计算机可执行指令。此外,这样的功能对应于模块,这些模块可以是软件、硬件、固件或其任意组合。可以根据期望在一个或更多个模块中运行多种功能,并且所描述的实施例仅是示例。该软件可以在数字信号处理器、ASIC、微处理器或在计算机系统诸如个人计算机、服务器或其他计算机系统上操作的其他类型的处理器上执行,以将这种计算机系统变成专门程控的机器。

Spark

图2示出了图1中所示的作业的Spark

如本文所使用的,混洗期包括用于阶段1(映射阶段)和阶段2(归约阶段)之间的宽依赖的全对全通信。每个映射任务210从数据分区(例如,大表的若干行)读取,使用映射任务算子将数据转换成中间格式,通过归约阶段的分区功能(例如,键范围)分类和聚合项目以产生项目块,并将块保存到在磁盘上的中间文件。映射任务210还写分开的索引文件,该索引文件示出对应于归约阶段的每个归约任务的块的偏移。每个归约任务使指定的数据块在一起并执行归约任务操作。通过查找索引文件中的偏移,每个归约任务都会对来自所有映射输出文件的目标块发出获取请求。因此,最初根据各表行(table rows)分区的数据被处理并混洗到根据归约键范围分区的数据。在具有宽依赖的阶段之间,每个归约任务都需要从所有映射任务输出中读取数据块。如果中间混洗文件没有永久化,即使单个归约任务失败也可能导致重新计算整个映射阶段。因此,为了强大的容错能力,永久化混洗数据非常重要。

因此,混洗期的混洗操作是一个资源极其密集的操作。从映射任务传送到归约任务的每个数据块都需要经过数据序列化、磁盘和网络I/O以及数据反序列化。尽管如此,混洗操作在各种类型的作业中被大量使用。例如,需要按键对数据进行分区、分组、或归约、或连结的作业都涉及混洗操作。混洗期可用于诸如确定特定单词在文本中出现多少次的操作,其中每个映射任务的单独结果被组合以获得最终结果。

以前的方案让映射任务将它们的输出数据写入永久储存以用于容错(如果一个归约任务失败,则无需重新运行任何映射任务)。对于大型工作负载,硬盘驱动器(HDD)比其他类型的永久存储器更受欢迎,因为它们便宜且易于扩展。但是,随着映射和归约任务数量的增大,这种初始设计不能很好地扩展。归约任务需要对HDD执行M·R次随机访问输入/输出(I/O)请求,其中M是映射任务的数量,R是归约任务的数量。因此,混洗期会导致大量I/O开销。

这种方法总结为错误!引用源未找到,它示出了在混洗期期间映射任务310和相应的归约任务360、370和380之间的映射。如图3所示,每个映射任务310产生相应的数据集330、340和350,如所示的,这些数据集被引导到相应的归约任务360、370和380。如所示出的,数据集330由归约任务360处理,数据集340由归约任务370处理,数据集350由归约任务380处理。

随着作业数据大小的增大,映射任务和归约任务的数量也成比例地增长。因为每个归约任务R都需要从所有映射任务M中获取,所以混洗I/O请求的数量M·R呈二次方增大,每次获取的平均块大小S/(M·R)呈二次方减小。使用较少的归约任务R减少了混洗获取的总数,因此改进了混洗性能。然而,使用较少的任务不可避免地会扩大输入数据的平均大小,并创建非常庞大、缓慢的任务,这些任务必须将中间数据溢出到永久储存中,因此增大开销。

因此,混洗操作(例如,连结)是分布式数据分析平台最难执行的操作。大型工作负载的混洗操作将数据写入到永久储存,从而在归约任务失败的情况下,无需重新运行整个映射阶段。然而,作为最具有成本效益的方案,大量数据临时存留在硬盘驱动器(HDD)中。随机访问I/O请求会导致HDD的显著开销。

前面提到的Riffle

然而,Riffle

本文所述的系统和方法通过为数据分析系统实施混洗期而以具有成本效益的方式进一步降低I/O开销,该混洗期主要避免两次读取和写入整个混洗数据(如Riffle

1.归约操作是可交换的。

2.归约操作减少数据量(输出数据大小比输入数据大小小得多)。

基于这两个特点,提供了一种将合并文件操作与归约操作相结合的混洗归约操作。在样例实施例中,混洗归约操作是在混洗期实施的可交换归约操作,其提供的输出数据量小于输入数据量。由于归约操作是可交换的,因此最终结果是正确的,因为最终结果与以前的方法相同。此外,混洗归约操作最终会向HDD发出与Riffle

图5示出了用于减少I/O开销的混洗归约方法的样例实施例。如图所示,图4的合并操作410由混洗归约任务510代替,该混洗归约任务合并来自相应映射任务310的相应数据集330、340和350,并通过实施归约操作而减少数据集以产生大小减小的分别对应于数据集330、340和350的数据集520、530和540。如所示的,为了容错,数据集330、340和350以及大小减小的数据集520、530和540被储存在HDD中。然后,将归约任务360、370和380分别应用于大小减小的数据集520、530和540。由于数据集520、530和540的大小减小,所得混洗期的总执行时间显著减少。

图6示出了由混洗归约操作执行的步骤,而图7示出了样例实施例中的混洗归约操作的流程图。如图6和图7所示,通过在步骤(1)从外部HDD接收多个输入文件610(图7中的操作710)来实施混洗归约任务。在样例实施例中,每个输入文件610由不同分区中的不同映射任务写入。然后,在步骤(2)从所有输入文件610获取小批次数据620,如图6中的箭头630所示(图7中的操作720)。在样例实施例中,获取的数据的总大小不应超过混洗归约任务的过程的动态随机访问存储器(DRAM)容量。然后,在步骤(3)将小批次数据合并和分类在一起(根据它们的键),以形成统一的数据640(图7中的操作730)。

在步骤(4),将混洗归约操作应用于统一的数据640以产生归约数据集650(图7中的操作740)。在样例实施例中,当归约操作是可交换的并且减少数据量使得输出数据大小与输入数据大小相比小得多时,应用混洗归约操作。例如,在Spark

然后,在步骤(5)将归约的数据集650写入外部HDD,如箭头660所示(图7中的操作750)。当有来自输入文件610的更多数据要处理时,在步骤(6)重复步骤(2)-(5),直到所有输入数据已被处理(图7中的步骤760)。当没有更多输入数据要处理时,该过程在操作770处结束。

因此,混洗归约操作减少了归约任务读取的数据大小(比较步骤(6)之后的数据大小相比于图6中初始大小(1)),这显著降低了I/O开销并减少了混洗期的总执行时间。由于数据大小减小,HDD可用于具有成本效益的方案以用于容错。

除了本文描述的混洗归约任务之外,样例实施例可以包括包含在数据分析框架驱动器中的混洗归约模块。数据分析框架驱动器是数据分析应用中的主节点,它将数据分析应用拆分成任务并安排这些任务在执行器上运行。驱动器模块可以跨多个分区生成任务。在样例实施例中,在客户端侧提供驱动器模块以决定是为作业调用本文所述的混洗归约任务(调用多少等)还是维持现有执行计划。在样例实施例中,传统数据分析框架驱动器的驱动器模块被修改成通过检查下述来确定何时调用混洗归约任务:

1.是否有混洗期;

2.是否工作负载大到足以让混洗归约方法获得收益;和

3.是否已知(或确定)归约操作是可交换的并会减少数据量(输出数据大小与输入数据大小相比要小得多)。

当满足这些条件时,调用本文描述的混洗归约任务。

上述实施例的第一替代方案将混洗归约期划分为两个不同的任务(合并、p归约)。该实施例将具有与上述实施例相似的特征。合并操作之前的所有操作都将由合并任务执行,其余的将由p归约任务执行。合并任务将直接与p归约任务通信,而不是通过HDD。

第一替代方案的益处是,数据分析框架用户/操作者可以独立地扩大/缩小混洗期中的合并和归约操作,这提供了更大的灵活性和更好的资源利用率。缺点是该实施例增加了额外的网络通信层,因为它摆脱了第一实施例的局部性方面。

上述实施例的第二替代方案将使用不同的储存介质代替HDD。出于成本目的,HDD通常较适合用于大量数据,因为HDD比其他方案便宜。然而,由于混洗归约任务显著减少了由归约任务处理的数据量,一个可能的方案是将数据储存在更高效的介质中(如固态磁盘(SSD)或不同的永久存储器技术),以便为混洗归约期获得更好的性能(因为由于储存较少的数据,这些方案的成本现在降低)。因此,第二替代方案以整个架构的总成本为代价提供了更好的I/O性能。

图8示出了在样例实施例中,对指定的输入文件进行混洗归约操作的示例。在该示例中,包括不同类型水果(苹果、蓝莓、葡萄、甜瓜、橙子、芒果)的若干输入文件810在合并操作820处合并以产生储存在DRAM中的相应文件830和840。p归约任务850对相应的文件830和840执行ReduceByKey(总计)操作以产生相应的输出文件860和870。本领域技术人员将理解,ReduceByKey是可交换的操作,并且得到的文件860和870小于文件830和840。如所示的,输出键值对包括水果以及在合并的输入文件830和840中的出现次数。在这个示例中,通过将重复元素组合成元素和元素计数键值对,键值对的数量已经从12个减少到8个,因此节省存储器空间。应当理解,对于其他可交换归约操作诸如AggregateByKey操作或GroupByKey操作,可以实现存储器空间的类似减少。

混洗归约期降低了HDD I/O开销,因为它显著减少了随机访问I/O请求的数量。本文描述的混洗归约任务也大大减少了需要由归约任务读取的数据大小。结果,I/O开销以及混洗期的总执行时间大大降低。

下表比较了包括Spark

其中:

M是映射任务的数量;

R是归约任务的数量;

N是每个合并或混洗归约任务的映射任务的数量;

S是总的混洗数据大小;以及

R是一个归约因子(0<r≤1,取决于工作负载、操作和N)。在样例实施例中,r<0.1,但因工作负载而变化。在最坏的情况下,r=1并且总读/写大小仍然至少与Riffle

图9示出了一种通用计算机900,它适合于实施本文所公开的方法的一个或更多个实施例。例如,图9中的计算机900可以在本文所述类型的数据分析框架(例如,Spark

辅助储存器920通常由一个或更多个磁盘驱动器或磁带驱动器构成,并且用于数据的非易失性储存,并且如果RAM 940不足够大以容纳所有工作数据,则用作溢出数据储存设备。辅助储存器920可以用于储存当程序被选择执行时装载到RAM 940中的该程序。ROM930用于储存在程序执行期间读取的指令和可能的数据。ROM 930是一种非易失性存储器设备,其相对于辅助储存器920的较大存储器容量通常具有较小的存储器容量。RAM 940用于储存易失性数据并且可能用于储存指令。对ROM 930和RAM 940两者的访问通常比对辅助储存器920的访问快。

应当理解,计算机900可以执行来自储存计算机可读指令的计算机可读非暂态介质和耦合到存储器的一个或更多个处理器的指令,并且当执行计算机可读指令时,计算机900被配置为执行在本公开中参考图1至图8描述的方法步骤和操作。计算机可读非暂态介质包括所有类型的计算机可读介质,包括磁储存介质、光储存介质、闪存介质和固态储存介质。

还应理解,包括一个或更多个计算机可执行指令的软件可以安装在一个或更多个服务器或数据库中并与一个或更多个服务器或数据库一起出售,上述计算机可执行指令有助于如以上参考本公开的任何一个步骤或所有步骤所描述的处理和操作。替代性地,可以以与本公开一致的方式获取软件并将其加载到一个或更多个服务器或一个或更多个数据库中,包括通过物理介质或分发系统获取软件,包括例如从软件创建者拥有的服务器或者从软件创建者不拥有但使用的服务器获取。例如,软件可以储存在服务器上以在互联网上分发。

此外,本领域的技术人员将理解,本公开不限于其应用到的在以下描述中阐述或在附图中示出的构造的细节和部件的布置。本文的实施例可以是其他实施例,并且能够以各种方式实践或执行。此外,应当理解,本文使用的措辞和术语是出于描述的目的,不应被视为限制性的。本文使用的“包括”、“包含”或“具有”及其变体意在涵盖其后列出的项目及其等同物以及附加项目。

根据所示实施例采用的示例性设备、系统和方法的部件可以至少部分地在数字电子电路、模拟电子电路中实施或者在计算机硬件、固件、软件或它们的组合中实施。例如,这些部件还可以实施为计算机程序产品诸如在信息载体或机器可读储存设备中有形体现的计算机程序、程序代码或计算机指令,以用于由数据处理设备执行或控制数据处理设备的操作,数据处理设备诸如可编程处理器、计算机或多台计算机。

计算机程序可以以任何形式的编程语言编写,上述编程语言包括编译或解释语言,并且可以以任何形式部署,上述形式包括作为独立程序或作为模块、部件、子程序或适合在计算环境中使用的其他单元。计算机程序可以被部署成在一台计算机上或在一个站点的多台计算机上执行或分布在多个站点上并通过通信网络互连。此外,用于完成本文描述的系统和方法的功能程序、代码和代码段可以由具有本公开所属领域技术的程序员容易地解释为在本公开的范围内。与示例性实施例相关联的方法步骤可以通过一个或更多个可编程处理器执行计算机程序、代码或指令以执行功能(例如,通过对输入数据进行操作并生成输出)而执行。例如,方法步骤也可以由下述执行并且装置可以被实施为下述:专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

结合本文公开的实施例描述的各种示例性逻辑块、模块和电路可以使用下述实施或执行:通用处理器、数字信号处理器(DSP)、ASIC、FPGA或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件或其设计用于执行本文描述的功能任何组合。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以实施为计算设备的组合,例如DSP和微处理器的组合,多个微处理器,一个或更多个微处理器与DSP核的结合,或任何其他这样的配置。

适合于执行计算机程序的处理器包括,例如,通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或更多个处理器。通常,处理器将从只读存储器或随机访问存储器或者从上述两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于储存指令和数据的一个或更多个存储器设备。通常,计算机还将包括用于储存数据的一个或更多个大容量储存设备,或可操作地耦合用于储存数据的一个或更多个大容量储存设备以从其接收数据或向其传输数据,或者从其接收数据并向其传输数据,该一个或更多个大容量储存设备例如磁盘、磁光盘或光盘。适用于包含计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导体存储器设备,例如电可编程只读存储器或ROM(EPROM)、电可擦可编程ROM(EEPROM)、闪存存储器设备和数据储存盘(例如磁盘、内部硬盘或可移动盘、磁光盘、CD-ROM盘,或DVD-ROM盘)。处理器和存储器可以由专用逻辑电路补充或包含在专用逻辑电路中。

本领域技术人员理解可以使用各种不同技术和技巧中的任何一种来表示信息和信号。例如,在整个以上描述中可能引用的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或任何的组合表示。

本领域技术人员还可以理解,结合本文公开的实施例描述的各种示例性逻辑块、模块、电路和算法步骤可以实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,各种示例性部件、块、模块、电路和步骤已经在上面大体上根据它们的功能进行了描述。这种功能是作为硬件还是软件实施取决于特定应用和施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实施所描述的功能,但是这样的实施决策不应被解释为导致脱离本公开的范围。软件模块可以驻留在随机访问存储器(RAM)、闪存存储器、ROM、EPROM、EEPROM、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的储存介质中。样例储存介质耦合到处理器,使得处理器可以从储存介质读取信息以及将信息写入储存介质。或者,储存介质可以集成到处理器。换言之,处理器和储存介质可以驻留在集成电路中或实施为分立部件。

如本文所用,“机器可读介质”是指能够临时或永久储存指令和数据的设备,并且可以包括但不限于随机访问存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪存存储器、光学介质、磁介质、高速缓存存储器、其他类型的储存器(例如可擦除可编程只读存储器(EEPROM)),以及它们的任何适合的组合。术语“机器可读介质”应理解为包括能够储存处理器指令的单个介质或多个介质(例如集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够储存指令以用于由一个或更多个处理器执行的任何介质或多种介质的组合,使得指令在由一个或更多个处理器执行时引起一个或更多个处理器执行本文所述的任何一种或多种方法。因此,“机器可读介质”是指单个储存装置或设备,以及包括多个储存装置或设备的“基于云”的储存系统或储存网络。如本文所用,术语“机器可读介质”不包括信号本身。

尽管上面已经详细描述了几个实施例,但其他修改也是可能的。例如,图中描绘的逻辑流程不需要所示的特定排序或顺序排序来获得期望的结果。可以从所描述的流程中提供其他步骤,或者可以消除步骤,并且其他部件可以添加到所描述的系统中或从所描述的系统中移除。其他实施例可以在所附权利要求的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号