首页> 中国专利> 来源驱动的作业相关性评估

来源驱动的作业相关性评估

摘要

本文中描述了一种用于基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统和方法。例如,从(多个)作业执行日志中获取关于多个作业的先前执行的信息。确定多个作业的数据依赖性。根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响。根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响。根据所计算的用户影响来对多个作业进行排名。根据多个作业的排名来采取动作。该动作可以包括作业的自动调度和/或向用户提供关于排名的信息。

著录项

说明书

背景技术

大型公司使用越来越复杂的基础设施来收集、存储和分析大量数据。例如,特定基础设施可以包括大量超大型集群(例如,每个集群最多50,000个节点),该集群服务于数千个消费者(例如,数据科学家),每天运行数十万个作业,并且访问数十亿个文件。

发明内容

本文中描述了一种用于基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统,该系统包括处理系统,该处理系统包括一个或多个处理器和其上存储有计算机可执行指令的一个或多个存储器,该计算机可执行在由一个或多个处理器执行时使处理系统:获取关于多个作业的先前执行的信息;确定多个作业的数据依赖性;根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响;根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响;根据所计算的用户影响来对多个作业进行排名;以及根据多个作业的排名来采取动作。

提供本“发明内容”以便以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

图1是示出用于基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统的功能框图。

图2是图形用户界面。

图3是示出基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的方法的流程图。

图4是示出基于预测的用户影响来对任务进行排名和/或关于该任务的执行来采取动作的方法的流程图。

图5是示出示例性计算系统的功能框图。

具体实施方式

现在参考附图描述与基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作有关的各种技术,其中相同的附图标记始终用于表示相同的元素。在下面的描述中,出于解释的目的,阐述了很多具体细节以便提供对一个或多个方面的透彻理解。然而,很清楚的是,这样的(多个)方面可以在没有这些具体细节的情况下实践。在其他实例中,以框图形式示出了公知的结构和设备,以便于描述一个或多个方面。此外,应当理解,被描述为由某些系统组件执行的功能可以由多个组件执行。类似地,例如,组件可以被配置为执行被描述为由多个组件执行的功能。

本公开支持各种产品和过程,这些产品和过程执行或被配置为执行与基于预测的用户影响来对共享计算集群的作业进行排名以及可选地对该作业的执行进行优先级排序有关的各种动作。以下是一种或多种示例性系统和方法。

本公开的各方面涉及以下技术问题:在考虑到作为时间的函数的作业效用(jobutility)的情况下基于作业影响来对要执行的作业进行优先级排序。与解决该问题相关联的技术特征涉及(例如,从(多个)作业执行日志)获取关于多个作业的先前执行的信息;确定多个作业之间的数据依赖性;根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响;根据所确定的数据依赖性、作业影响和时间来计算多个作业中的每个作业的用户影响;基于所计算的用户影响来对多个作业进行排名;以及根据多个作业的排名来采取动作。因此,这些技术特征的各方面表现出更高效且有效地调度作业的技术效果,例如,减少资源消耗和/或资源浪费。

此外,术语“或”旨在表示包括性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文中清楚得知,否则短语“X使用A或B”旨在表示任何自然的包括性排列。也就是说,以下任何一种情况都满足短语“X使用A或B”:X使用A;X使用B;或者X同时使用A和B。此外,除非另有说明或从上下文中清楚得知指向单数形式,否则本申请和所附权利要求书中使用的冠词“一个(a)”和“一个(an)”通常应当解释为表示“一个或多个”。

如本文中使用的,术语“组件”和“系统”及其各种形式(例如,组件、系统、子系统等)旨在指代计算机相关实体,其或者是硬件,或者是硬件和软件、软件或执行软件的组合。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在执行进程和/或线程中,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,如本文中使用的,术语“示例性”旨在表示用作某物的图示或示例,而并非旨在表示偏好。

大型公司使用越来越复杂的基础设施来收集、存储和分析大量数据。例如,特定基础设施可以包括大量超大型集群(例如,每个集群最多50,000个节点),该集群服务于数千个消费者(例如,数据科学家),每天运行数十万个作业,并且访问数十亿个文件。根据可用资源、消费者期望、合同义务等来确定作业的调度可能是一项复杂的任务。

本文中描述了一种用于基于预测的作业影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统和方法。本发明解决了以下问题:理解作业的重要性(例如,与任何其他作业相比在绝对的意义上),并且“随着时间的推移”这样做,即,交付作业输出的及时性如何影响该作业的重要性。这可能与客户(例如,估计他们是否在为正确的作业投入资源)和集群运营商(例如,选择要先迁移到软件的新版本的作业、或在容量受损的情况下要运行的作业)都有关。

先前的手动解决方案依赖于不精确和用户对作业重要性的部分理解。在某些情况下,用户固有地很难在重要性方面来量化其作业与其他人的作业的关系(例如,由于缺乏可见性)。例如,某些系统允许用户提供有关“队列大小”、“队列优先级”和/或“作业并行性分配”的信息。通常,用户无法分配这些变量以在不浪费资源的情况下及时成功地交付作业。

本文中描述的系统和方法利用“来源(provenance)”(例如,作业之间的数据依赖性的血统(lineage))及其遥测(例如,关于作业执行的统计信息,诸如作业开始/完成的时间、由作业花费的CPU小时数、总的读/写数据)来自动得出作业的“相关性/重要性”的概念,并且将其与作业执行时间(“作业影响”)相关联。

参考图1,示出了用于基于预测的用户影响100来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统。在诸如数据库、流传输系统、大数据集群等(多个)数据处理系统(“DPS”)的上下文中,使用“作业”的概念。“作业”包括由可能的大量任务执行以将给定“输入”转换为给定“输出”的有限量的计算。作业通常是调度的单位(例如,为特定作业分配了多少资源以及何时分配资源),并且由客户使用以通常完成关键任务目标。

随着DPS变得越来越大和复杂,可能难以跟踪和理解哪些作业正在接收资源,作业何时完成,等等。在某些情况下,及时执行这样的作业可能至关重要,因为作业完成得太晚可能会在应用级别违反服务级别目标(SLO),这可能会带来潜在的破坏性后果。

通常,量化作业的重要性及其及时执行通常留给用户,并且这是一项劳动密集型且容易出错的任务。具有执行等待时间目标的作业通常在以一定周期(诸如每小时、每天等)得出的数据的新版本上重复(recurring)运行。

系统100可以利用该观察结果,以打开用于利用来自过去运行的观察结果来为将来的运行做出决策的机会。系统100提供了一种机制,该机制利用作业执行的历史痕迹,并且跟踪它们的来源(即,作业之间的数据依赖性血统)及其遥测(例如,关于作业执行的统计信息,诸如作业开始/完成的时间、由作业花费的CPU小时数、总的读/写数据)来自动得出作业的“相关性/重要性”的概念,并且将其与作业执行时间相关联,从而得出(多个)基于作业影响的效用函数。

系统100包括作业历史组件110,该作业历史组件110例如从一个或多个作业执行日志120中获取关于多个作业的先前执行的信息。系统100还包括确定多个作业之间的数据依赖性的数据依赖性组件130。在一些实施例中,数据依赖性可以由DAG表示。

系统100还包括根据所确定的数据依赖性来计算多个作业中的每个作业的影响的作业影响计算组件140。

基于作业影响的效用函数基于在下游作业的总体作业影响方面表示作业效用,其中可以根据目标作业及其下游作业(例如,全部)的度量来测量影响。在一些实施例中,作业影响可以表示为一旦作业完成就能够解除阻塞(unblock)多少下游工作,或者由于作业失败或被延迟而不能进行多少工作。作为说明而非限制,作业度量可以包括总作业CPU小时数和/或由目标作业及其下游作业生成的输出文件的总“下载”数(例如,该作业的任何直接或间接副产品从DPS被外部化多少次)。

在一些实施例中,未完成作业的效用必然随着时间的流逝而衰减(例如,数据变得陈旧),并且具有硬依赖性的下游作业无法启动。因此,为了在作业影响的上下文中将作业效用建模为时间的函数,目标作业的“截止日期”被设置(例如,效用“下降”时间)为硬依赖性子作业的提交时间(time to submission)(例如,相对于目标作业的提交时间)。

在一些实施例中,与大多数作业效用函数(在大多数作业效用函数的形状中,一个作业仅具有单个截止日期,在该截止时间点其效用迅速下降)的形状(shape)不同,系统100中的效用下降的数量和幅度可以取决于该作业的子作业。

基于作业影响来构造效用函数可以提供对特定集群的作业量的洞察。在一些实施例中,可以标识有问题的问题和/或感兴趣的性质。出于解释而非限制的目的,这些可以包括(1)大量废弃的定期作业,(2)大量的跨组织作业依赖性,(3)荒谬的优先级,和/或(4)长的作业依赖性链,其包括跨越多个星期的多达数百个作业。

在一些实施例中,使用具有基于作业影响的效用函数的调度器可以通过以有效方式解除阻塞作业来实现集群中的并行性(例如,最大值)。但是,调度器可能会专注于更接近作业依赖性的有向非循环图(DAG)的“根”的作业,而忽略更深入DAG的作业,在某些实施例中,该作业对用户具有重要价值。

系统100还包括根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响的用户影响计算组件150。

在一些实施例中,通过不仅考虑作业对下游作业的影响,而且还通过查看工作流描述和基于作业等待时间的警报来考虑作业对提交用户的实际价值,可以来完善作业效用函数。也就是说,通过将用户影响并入基于现实的作业影响的效用函数中,系统100可以更高效且有效地对作业采取(多个)动作(例如,调度)。

很多用户的业务任务无法通过运行单个作业来完成。取而代之,用户经常定义重复的作业管线或工作流,这些作业管线或工作流包括一组相互依赖的作业和数据操作。在一些实施例中,用户影响最大的作业(例如,为用户贡献最大“价值”或对操作员或用户造成事故的作业)通常位于工作流的末尾,因为如果中间作业已经产生用户关心的输出,则不需要提交消耗中间作业的输出的作业。

在一些实施例中,可以检查与工作流中的作业的延迟输出有关的自动事件警报。这些自动事件警报可以指示一个或多个作业正在等待(多个)其他作业的(多个)输出的情况。如果大多数警报在轮询接近工作流的末尾的作业的输出,则这些“叶”作业很可能确实是为用户贡献最大“价值”的作业。在一些实施例中,虽然使用基于作业影响的效用函数很可能可以解除阻塞最下游作业以用于执行,但是仅使用基于作业影响的效用可能会与优化用户价值的目标相抵触,因为工作流中的较早作业必然比工作流中较晚的作业具有更高的基于作业影响的效用。系统100可以采用“现实的”作业效用函数,该作业效用函数使用来自用户提交的工作流的特征和信号来考虑基于用户影响的效用,最终导致现实的效用函数的生成,该效用函数在基于作业影响的效用与基于用户影响的效用之间取得平衡。

系统100还包括基于所计算的用户影响来对多个作业进行排名的作业排名组件160。系统100还包括根据多个作业的排名来采取动作的作业动作组件170。在一些实施例中,该动作可以包括根据多个作业的排名来自动调度作业。在一些实施例中,该动作可以包括(例如,经由图形用户界面)向(多个)用户提供关于多个作业的排名的信息,以允许(多个)用户接受、拒绝和/或修改多个作业的排名。在一些实施例中,所提供的信息可以包括系统100在得出排名时利用的信息,例如,关于多个作业的先前执行的信息、所确定的数据依赖性、所计算的作业影响和/或所计算的用户影响。

在一些实施例中,系统100还可以包括反馈组件180,反馈组件180关于所采取的动作来向作业影响计算组件140和/或用户影响计算组件150提供反馈(例如,结果)。以这种方式,可以基于利用所采取的动作而采取/获取的结果来自适应地更新由作业影响计算组件140利用的作业影响效用函数和/或由用户影响计算组件150利用的用户影响效用函数。

在一些实施例中,当所采取的动作是根据多个作业的排名来自动调度作业时,反馈可以包括所接收的任何异常,诸如(多个)自动事件警报、(多个)用户动作、关于作业的执行的信息等。在一些实施例中,当所采取的动作是向用户(多个)提供关于多个作业的排名的信息时,反馈可以包括由(多个)用户关于多个作业的调度而采取的(多个)动作(例如,排名的(多个)修改)和/或有关作业的执行的信息。

传统上,在某些情况下,客户为用于产生数据集的硬件资源付费。在一些实施例中,系统100可以包括基于数据消耗和/或数据产生的“定价”。系统100可以提供一种定价形式,其中特定数据集的消费者分担(例如,全部或一些)产生特定数据集的成本。例如,特定消费者可以负责上游作业的部分计算成本。在一些实施例中,特定消费者可以由(多个)其他下游消费者补偿运行特定消费者的(多个)作业的成本。系统100因此可以提供套利,例如,特别是在作业消费(多个)“公共”数据集并且产生“唯一”或非常理想数据集的情况下,它可以对通过该计算而增加的值的差额进行计费。

在一些实施例中,用户(例如,消费者)可以指定从计算集群下载到系统100的(多个)数据集的重要性。系统100可以将指定重要性反向传播到在生产(多个)所下载的数据集时所涉及的一个或多个作业。例如,可以将指定重要性反向传播到在生产(多个)所下载的数据集时所涉及的每个作业。

出于解释而非限制的目的,已经使用数据依赖性来量化作业影响/重要性。在一些实施例中,代替或除了数据依赖性,可以利用(多个)其他因素来量化作业影响/重要性。关于提交特定作业的用户的重要性(例如,公司/政府层次结构中的角色,在与计算集群相关联的合同义务中指定)、特定作业的大小、其输出的下载次数等的信息可以用来量化作业影响/重要性。

在一些实施例中,当基于作业的影响/排名来调度作业时,系统100还可以添加(多个)不同目标。例如,系统100可以尝试使由于不按时执行作业而导致的服务水平协议(SLA)违规和/或金钱损失最小化。

在一些实施例中,系统100可以利用(多个)机器学习模型,在该机器学习模型中,可以以精度换取时间和/或资源,从而产生依赖于时间t和精度a的效用函数U(t,a)。

尽管已经在调度数据处理系统的作业的上下文中讨论了所公开的主题,但是在一些实施例中,系统100可以用于调度诸如工作流等任务(例如,手动和/或自动化)。例如,使用历史数据,可以确定任务之间的依赖性。可以根据所确定的依赖性来计算多个任务中的每个任务的任务影响。此后,可以根据所确定的依赖性、所计算的任务影响和时间来计算多个任务中的每个任务的用户影响。然后可以根据所计算的用户影响来对任务进行排名。然后可以根据多个任务的排名来执行任务调度。

转到图2,在一些实施例中,可以使(多个)用户在(多个)图形用户界面中可获取关于由系统100计算的作业影响的信息,该信息允许用户分析其作业对下游作业和操作的影响。通过分析作业历史和遥测来量化重复作业的“效用”或价值可能是更广泛的工作的一部分。所提供的信息可以与将要进行数据驱动的信息保持一致,从而可以用具体的历史数据来支持由该系统确定的作业的“价值”。

(多个)图形用户界面可以提供对(多个)作业的作业量洞察。图2是图形用户界面200,该图形用户界面200包括:示出作为时间的函数的作业A的效用的图210;以及依赖性图250。如上所述,效用函数指示作为时间的函数的作业的价值。在一些实施例中,作业的“价值”基于总下游依赖性。随着作业和/或操作的截止日期过去,作业的效用降低。

关于图200和依赖性图250,随着依赖性B、C和E被提交,作业A的效用下降。与B相比,针对C的效用下降更大,因为C具有下游依赖性,而B没有。与C相比,E的效用下降更大,因为E具有两个下游依赖性。

允许用户分析其作业对下游作业和操作的影响的(多个)图形用户界面可以包括允许(多个)用户使用不同参数(例如,使用搜索框)搜索(多个)作业实例和/或(多个)重复作业的搜索能力。

搜索作业可以导致呈现与搜索标准匹配的作业列表。用户可以点击作业实例的用于重复作业的重复作业链接,或点击有关该作业的更多实例细节的细节链接。

点击细节链接可以将用户带到作业细节页面。作业细节页面可以显示作业实例的效用函数、重复作业的其他作业实例的效用函数、以及重复作业的平均效用函数的图。

在一些实施例中,作业细节页面还示出了基于由下游作业/操作而贡献的效用的作业效用的依赖性图。此外,在一些实施例中,用户可以使用下拉列表切换所显示的效用函数/依赖性图的类型(例如,通过PnHours和/或通过Downloads)。

图3示出了与基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的示例性方法。图4示出了与基于预测的用户影响来对任务进行排名和/或关于该任务的执行来采取动作有关的示例性方法。虽然该方法被示出和描述为按顺序执行的一系列动作,但是应当理解和了解,该方法不受顺序的限制。例如,某些动作可以以与本文中描述的顺序不同的顺序发生。另外,一个动作可以与另一动作同时发生。此外,在一些情况下,实现本文中描述的方法可能并不需要所有动作。

此外,本文中描述的动作可以是可以由一个或多个处理器实现和/或存储在一个或多个计算机可读介质上的计算机可执行指令。该计算机可执行指令可以包括例程、子例程、程序、执行线程等。更进一步,该方法的动作的结果可以存储在计算机可读介质中,显示在显示设备上,等等。

参考图3,示出了一种基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的方法300。在一些实施例中,方法300由系统100执行。

在310处,获取关于多个作业的(多个)先前执行的信息。在320处,确定作业之间的数据依赖性(如果有)。

在330处,根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响。在340处,根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响。

在350处,根据所计算的用户影响来对多个作业进行排名。在360处,根据多个作业的排名来采取动作。

参考图4,示出了一种基于预测的用户影响来对任务进行排名和/或关于该任务的执行来采取动作的方法400。在一些实施例中,方法400由系统100执行。

在410处,获取关于多个任务的先前执行的信息。在420处,确定任务之间的数据依赖性(如果有)。

在430处,根据所确定的数据依赖性来计算多个任务中的每个任务的任务影响。在440处,根据所确定的数据依赖性、所计算的任务影响和时间来计算多个任务中的每个任务的用户影响。

在450处,根据所计算的用户影响来对多个任务进行排名。在460处,根据多个任务的排名来采取动作。例如,可以根据多个任务的排名来调度任务。

本文中描述的是一种用于基于预测的用户影响来对共享计算集群的作业进行排名和/或关于作业的执行来采取动作的系统。该系统可以包括处理系统,该处理系统包括一个或多个处理器和其上存储有计算机可执行指令的一个或多个存储器,该计算机可执行指令在由处理器执行时引起处理系统:获取关于多个作业的先前执行的信息;确定多个作业的数据依赖性;根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响;根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响;根据所计算的用户影响来对多个作业进行排名;以及根据多个作业的排名来采取动作。

该系统还可以包括:其中关于多个作业的先前执行的信息是从一个或多个作业执行日志中获取的。该系统还可以包括:其中所采取的动作包括根据多个作业的排名和作业效用的基于时间的属性来自动调度多个作业。该系统还可以包括:其中所采取的动作包括经由图形用户界面向用户提供关于多个作业的排名的信息。

该系统可以包括:一个或多个存储器上存储有另外的计算机可执行指令,另外的计算机可执行指令在由一个或多个处理器执行时引起处理系统:从用户接收用于以下至少之一的输入:接受、拒绝或修改多个作业的排名。该系统还可以包括:其中提供给用户的信息包括由系统在得出排名时利用的信息。该系统还可以包括:其中提供给用户的信息包括关于多个作业的先前执行的信息、所确定的数据依赖性、所计算的作业影响或所计算的用户影响中的至少一项。

该系统可以包括:一个或多个存储器上存储有另外的计算机可执行指令,另外的计算机可执行指令在由一个或多个处理器执行时引起处理系统:接收关于所采取的动作的反馈;自适应地更新用于计算作业影响的作业影响效用函数;以及自适应地更新用于计算用户影响的用户影响效用函数。

本文中描述的是一种基于预测的用户影响来对共享计算集群的作业进行排名和/或关于作业的执行来采取动作的方法,该方法包括:获取关于多个作业的先前执行的信息;确定多个作业的数据依赖性;根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响;根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响;根据所计算的用户影响来对多个作业进行排名;以及根据多个作业的排名来采取动作。

该方法还可以包括:其中关于多个作业的先前执行的信息是从一个或多个作业执行日志中获取的。该方法还可以包括:其中所采取的动作包括根据多个作业的排名来自动调度多个作业。该方法还可以包括:其中所采取的动作包括经由图形用户界面向用户提供关于多个作业的排名的信息。

该方法还可以包括:从用户接收用于以下至少之一的输入:接受、拒绝或修改多个作业的排名。该方法还可以包括:其中提供给用户的信息包括由系统在得出排名时利用的信息。该方法还可以包括:其中提供给用户的信息包括关于多个作业的先前执行的信息、所确定的数据依赖性、所计算的作业影响或所计算的用户影响中的至少一项。

该方法还可以包括:接收关于所采取的动作的反馈;自适应地更新用于计算作业影响的作业影响效用函数;以及自适应地更新用于计算用户影响的用户影响效用函数。

本文中描述的是一种计算机存储介质,该计算机存储介质存储计算机可读指令,该计算机可读指令在被执行时引起计算设备:获取关于多个作业的先前执行的信息;确定多个作业的数据依赖性;根据所确定的数据依赖性来计算多个作业中的每个作业的作业影响;根据所确定的数据依赖性、所计算的作业影响和时间来计算多个作业中的每个作业的用户影响;根据所计算的用户影响来对多个作业进行排名;以及根据多个作业的排名来采取动作。

计算机存储介质还可以包括:其中所采取的动作包括根据多个作业的排名来自动调度多个作业。该计算机存储介质还可以包括:其中所采取的动作包括经由图形用户界面向用户提供关于多个作业的排名的信息。该计算机存储介质可以存储另外的计算机可读指令,该另外的计算机可读指令在被执行时引起计算设备:接收关于所采取的动作的反馈;自适应地更新用于计算作业影响的作业影响效用函数;以及自适应地更新用于计算用户影响的用户影响效用函数。

参考图5,示出了示例通用处理系统、计算机或计算设备502(例如,移动电话、台式机、膝上型计算机、平板电脑、手表、服务器、手持式、可编程消费或工业电子产品、机顶盒、游戏系统、计算节点等)。例如,计算设备502可以在用于基于预测的用户影响来对共享计算集群的作业进行排名和/或关于该作业的执行来采取动作的系统100中使用。

计算机502包括一个或多个处理器520、存储器530、系统总线540、(多个)大容量存储设备550和一个或多个接口组件570。系统总线540通信地耦合至少上述系统组成部分。然而,应当理解,计算机502以其最简单的形式可以包括耦合到存储器530的执行存储在存储器530中的各种计算机可执行动作、指令和/或组件的一个或多个处理器520。该指令可以是例如用于实现被描述为由上述一个或多个组件执行的功能的指令或用于实现上述一种或多种方法的指令。

(多个)处理器520可以用被设计为执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现。通用处理器可以是微处理器,但替代地,处理器可以是任何处理器、控制器、微控制器或状态机。(多个)处理器520也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、多核处理器、与DSP核相结合的一个或多个微处理器、或者任何其他这样的配置。在一个实施例中,(多个)处理器520可以是图形处理器。

计算机502可以包括各种计算机可读介质或以其他方式与各种计算机可读介质交互,以便于控制计算机502以实现所要求保护的主题的一个或多个方面。计算机可读介质可以是计算机502可以访问的任何可用介质,并且包括易失性和非易失性介质以及可移动和不可移动介质。计算机可读介质可以包括两种不同且互斥的类型,即,计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性的可移动和不可移动介质。计算机存储介质包括存储设备,诸如存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等)、磁存储设备(例如,硬盘、软盘、卡带、磁带等)、光盘(例如,压缩盘(CD)、数字多功能磁盘(DVD)等)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、钥匙驱动器)等)、或其他任何类似的介质,这些存储设备存储(而不是传输或传递)计算机502可以访问的期望信息。因此,计算机存储介质不包括调制数据信号以及关于通信介质而描述的信号。

通信介质在诸如载波或其他传输机制等调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指具有以将信息编码为信号的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外和其他无线介质等无线介质。

存储器530和(多个)大容量存储设备550是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器530可以是易失性的(例如,RAM)、非易失性的(例如,ROM、闪存等)或这两者的某种组合。作为示例,基本输入/输出系统(BIOS)(包括诸如在启动期间在计算机502内的元件之间传递信息的基本例程)可以存储在非易失性存储器中,而易失性存储器可以充当外部高速缓存以促进(多个)处理器520的处理等。

(多个)大容量存储设备550包括用于存储相对于存储器530的大量数据的可移动/不可移动的易失性/非易失性计算机存储介质。例如,(多个)大容量存储设备550包括但不限于一个或多个设备,诸如磁盘或光盘驱动器、软盘驱动器、闪存、固态驱动器或记忆棒。

存储器530和(多个)大容量存储设备550可以包括或已经存储有操作系统560、一个或多个应用562、一个或多个程序模块564和数据566。操作系统560用于控制和分配计算机502的资源。应用562包括系统和应用软件中的一者或两者,并且可以通过存储在存储器530和/或(多个)大容量存储设备550中的程序模块564和数据566利用操作系统560对资源的管理以执行一个或多个操作。因此,应用562可以根据其提供的逻辑将通用计算机502变成专用机器。

所要求保护的主题的全部或部分可以使用标准编程和/或工程技术产生软件、固件、硬件或其任何组合以控制计算机以实现所公开的功能来实现。作为示例而非限制,系统100或其部分可以是应用562或形成应用562的部分,并且包括存储在存储器和/或(多个)大容量存储设备550中的一个或多个模块564和数据566,其功能可以在由一个或多个处理器520执行时实现。

根据一个特定实施例,(多个)处理器520可以对应于片上系统(SOC)或类似架构,包括或换言之将硬件和软件两者集成在单个集成电路基板上。在此,(多个)处理器520可以包括一个或多个处理器、以及至少类似于(多个)处理器520和存储器530的存储器等。常规处理器包括最少数量的硬件和软件,并且广泛依赖于外部硬件和软件。相比之下,处理器的SOC实现更为强大,因为它在其中嵌入了硬件和软件,从而可以在对外部硬件和软件的依赖最小或不依赖于外部硬件和软件的情况下实现特定功能。例如,系统100和/或相关联的功能可以被嵌入在SOC架构中的硬件内。

计算机502还包括通信地耦合到系统总线540并且促进与计算机502的交互的一个或多个接口组件570。作为示例,接口组件570可以是端口(例如,串行、并行、PCMCIA、USB、FireWire等)或接口卡(例如,声音、视频等)等。在一个示例实现中,接口组件570可以体现为用户输入/输出接口,以使得用户能够例如通过一个或多个手势或语音输入,通过一个或多个输入设备(例如,指示设备,诸如鼠标、轨迹球、手写笔、触摸板、键盘、麦克风、操纵杆、游戏板、碟形卫星天线、扫描仪、相机、其他计算机等)将命令和信息输入到计算机502中。在另一示例实现中,接口组件570可以体现为用于将输出提供给显示器(例如,LCD、LED、等离子体等)、扬声器、打印机和/或其他计算机等的输出外围接口。更进一步,接口组件570可以体现为网络接口,以使得能够与其他计算设备(未示出)进行通信,诸如通过有线或无线通信链路。

上面已经描述的内容包括所要求保护的主题的各方面的示例。当然,不可能出于描述所要求保护的主题的目的而描述组件或方法的每种可能的组合,但是本领域的普通技术人员可以认识到,所公开的主题的很多其他组合和置换是可能的。因此,所公开的主题旨在涵盖落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。此外,如果在具体实施方式或权利要求中使用术语“包括(includes)”,则这样的术语旨在是包括性的,其方式类似于“包括(comprising)”一词在权利要求中作为过渡词使用时的解释。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号