用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序与流程

文档序号:14649809发布日期:2018-06-08 21:33阅读:132来源:国知局
用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序与流程

本发明要求2015年7月31日递交的发明名称为“用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序(Apparatus,method,and computer program for utilizing secondary threads to assist primary threads in performing application tasks)”的第14/815,875号美国非临时专利申请案的在先申请优先权及权益,该在先申请的内容以引用的方式并入。

技术领域

本发明涉及并行处理,并且更具体地说,涉及并行地利用线程以供完成任务。



背景技术:

在设备的单个处理器[例如,中央处理单元(central processing unit,CPU)等]上可发现提高数目的核。然而,单个应用程序在执行期间一直利用所有可用核是不常见的。因此,多个应用程序通常经调度以同时在相同设备上运行,从而实现更好的资源利用率及更高的吞吐量两者。令人遗憾地,此类资源共享可潜在地导致冲突,其又可导致性能损失。

为了避免归因于资源竞争降低性能,常规资源管理器及作业调度器经设计以提供资源分离。典型技术涉及将资源(例如,核等)的不同集合分配到不同个别应用程序,及通过限制此类应用程序仅使用所分配资源集合而避免资源竞争。先前技术图1说明根据先前技术的用于在应用程序当中的资源分配的技术100。如所展示,设备102将静态数目的核分配到第一应用程序104及第二应用程序106两者。

静态地在应用程序当中分区核的此类先前技术技术100在处理已动态地改变工作负载的应用程序时有可能导致较差资源利用率。在此类情形中,被分配到一个应用程序的核集合可未充分利用而不同的应用程序可得益于具有分配到其的更多核。举例来说,如先前技术图1中所展示,第一应用程序104的核108经展示为待利用,而第二应用程序106的核110的至少一部分经展示为未利用。归因于此类静态分区,具有重工作负载的应用程序(例如,第一应用程序104等)并不能够将其工作的部分迁移到另一应用程序(例如,第二应用程序106等)的未充分利用的核。

因此,需要解决与先前技术相关联的这些和/或其它问题。



技术实现要素:

本发明提供一种用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序产品。在使用中,使用多个主线程以执行多个任务中的至少一个,所述多个任务为一应用程序的任务,所述应用程序为使用至少一个相应的核的应用程序,以及基于确定所述主线程在执行所述应用程序的所述多个任务中的一个或多个任务时是否需要辅助,使用多个次级线程以执行所述应用程序的所述一个或多个任务。

附图说明

先前技术图1说明根据先前技术的用于在应用程序当中的资源分配的技术。

图2说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的方法。

图3说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的系统。

图4说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的方法。

图5说明根据一个实施例的用于工作共享的技术。

图6说明根据一个实施例的用于工作窃用的技术。

图7说明根据一个实施例的用于促进在工作共享技术的内容背景中对忙碌状态的检测的例示性数据结构。

图8说明根据一个实施例的用于工作共享及设定忙碌状态的方法。

图9说明根据一个实施例的用于工作窃用的方法。

图10说明根据一个实施例的用于工作窃用及设定忙碌状态的方法。

图11说明根据一个实施例的本文中所揭示的一个或多个方法可提供资源分配的方式。

图12说明根据一个可能实施例的网络架构。

图13说明根据一个实施例的例示性系统。

具体实施方式

图2说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的方法200。如所展示,利用多个主线程以供利用至少一个对应飞核执行应用程序的多个任务中的至少一个。参见操作202。

在本描述的内容背景中,线程指代任何处理资源,其包含但不限于处理器执行时间、处理器执行带宽、用于跟踪任务执行的数据结构、能够执行任务的指令的集合序列及/或能够被利用以执行一个或多个任务的任何其它资源。另外,任务指代应用程序的任何操作,同时核指代硬件(例如,处理器等)、软件及/或能够执行任务的任何其它类型的逻辑(例如,物理的及/或逻辑的等)的任何部分。再者,在本描述中,应用程序指代任何软件程序、计算机代码及/或其一部分。

如所展示,在决策204中,确定主线程在执行所述应用程序的所述任务中的一个或多个时是否需要辅助。如果不需要辅助,那么继续利用主线程以供以所展示方式执行应用程序任务。在各种实施例中,可依据在操作202中利用主线程的方式的任何方面进行决策204的确定,其中此类方面为主线程是否需要辅助的直接或间接指示。将在稍后实施例的描述期间出于说明性目的而阐述此类方面的各种实例。

如果根据决策206确定主线程在执行应用程序的一个或多个任务时需要辅助,那么利用多个次级线程以供执行所述应用程序的所述一个或多个任务。参见操作206。在本描述的内容背景中,次级线程可包含相对于主线程在至少一个方面(例如,物理、逻辑、在其它方面等)上不同的任何线程。举例来说,在一个实施例中,此类次级线程可为与主线程分离的备用线程。

应注意,结合操作206所利用的核可或可不与结合操作202所利用的相应的核相同。再者,尽管在本实施例的内容背景中说明单个决策204,但应注意,在其它实施例中,可有条件地依据多个决策而执行操作206。仅借助于实例,在另一实施例中,可确定至少一个其它核是否为空闲的,及如果确定所述至少一个其它核为空闲的,那么可利用次级线程以供执行所述应用程序的一个或多个任务。

根据用户的需要,现将阐述关于可或可不实施先前方法的各种任选架构及用途的更多说明性信息。应强烈注意,以下信息是出于说明性目的而阐述及不应解释为以任何方式的限制。可在排除或不排除所描述其它特征的情况下任选地并入以下特征中的任一个。

图3说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的系统300。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施系统300。然而,当然,可在任何所要环境的内容背景中实施系统300。

如所展示,提供包含第一应用程序302及第二应用程序304的多个应用程序。就此而言,在此类应用程序可呈软件程序或其部分的任何形式时,此类应用程序的各种实例可包含办公室生产率应用程序(例如,字处理器、电子算表、演示等应用程序)、娱乐应用程序(例如,音乐播放器、视频播放器、游戏等应用程序)、服务器应用程序(例如,数据库服务器、万维网服务器等)或任何其它类型的应用程序。

在一个实施例中,主线程306、310及次级线程308、312各自与不同核314相关联,所述不同核314经利用以供在完成第一应用程序302及第二应用程序304的相应任务时执行对应主线程306、310及次级线程308、312。

为此目的,在运行时间期间,可针对每一应用程序启动两个类型的线程:主线程306、310及次级线程308、312。可由程序员指定主线程306、310的数目作为用于启动相应应用程序302、304的最低要求。为此目的,在一个实施例中,主线程306、310可具有分配到特定对应应用程序的预定数目。另外,可在运行时间期间确定次级线程308、312的数目。在一个例示性非限制性实施例中,可将主线程306、310及次级线程308、312的数目的总和设定成等于对应设备中可用核314的量。

在使用期间,主线程306、310可紧接在被产生之后开始工作,而可首先使次级线程308、312进入睡眠模式且其后将其唤醒(周期性地或以其它方式)以确定是否为开始执行任务的时间。在一个可能实施例中,此确定可用于满足两个条件:相应的核314为空闲的及工作负载的当前量大于主线程306或310可处置的当前量(其需要辅助),以便次级线程308或312开始工作。

举例来说,在一个实施例中,利用相应的核314中的一个(例如核1)实施主线程306;利用相应的核314中的另一个(例如核2)实施主线程310;及利用相应的核314中的又一个(例如核3)实施次级线程308及/或312;等等。在使用中,在唤醒次级线程308、312中的一个或多个之后,可首先确定与次级线程308或312相关联的相应的核314(核3)是否忙碌。如果所述核不忙碌,那么可利用核3实施次级线程308,由此帮助完成由主线程306执行的一个或多个任务。因此,可利用核3实施次级线程308或312中的任一个或两个。为此目的,在一个可能实施例中,与主线程的不同集合相关联的次级线程的多个集合可经装备以利用相同共用核(例如,核3等)。

在另一实施例中,利用核314中的一个(例如核1)实施主线程306中的线程(第一线程);利用核314中的另一个(例如核2)实施主线程310中的线程(第二线程);及利用核314中的又一个(例如核3)实施次级线程308中的线程(第三线程)及次级线程312中的线程(第四线程)。在唤醒第三线程之后,可确定核3是否忙碌。如果核3不忙碌,或如果核3不忙碌且确定核1忙碌,那么可利用核3实施第三线程,由此完成正由利用核1的第一线程执行或待由所述第一线程执行的一个或多个任务。在唤醒第四线程之后,还可确定核3是否忙碌。如果核3不忙碌,或如果核3并不忙碌及确定核2忙碌,那么可利用核3实施第四线程,由此完成正由利用核2的第二线程执行或待由所述第二线程执行的一个或多个任务。

在其它实施例中,举例来说,可利用除核3之外的一个或多个核(例如,甚至核1/核2等)实施次级线程308达到目前使用此类其它核(例如,核1/核2等)正由主线程306、310处置的任何任务已经完成的程度。举例来说,许多(及甚至有可能所有)核314可分配给主线程306、310。另外,在不再需要此类核314以供主线程306、310的此类使用之后,可利用分配给主线程306、310的此类核314中的任一个实施次级线程308、312。为此目的,次级线程308、312可分配到除目前用于(分别)通过其对应主线程306、314完成任务的那些核之外的核314中的任一个,使得次级线程308、312甚至可分配到任何核314,所述任何核314被分配到致力于其它任务的主/次级线程。

图4说明根据一个实施例的用于利用次级线程以辅助主线程执行应用程序任务的方法400。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施方法400。然而,当然,可在任何所要环境的内容背景中实施方法400。

如所展示,方法400以任务是否可用及是否需要处理以执行任务的确定开始。参见决策402。如果是,那么执行主线程以供利用相应的核执行任务,如操作404中所指示。

在主线程的执行期间,周期性地或以其它方式确定主线程是否正经历忙碌状态。参见决策406。在本描述的内容背景中,此忙碌状态可指代任何状态,从而在执行相关联应用程序的多个任务中的一个或多个时主线程需要辅助。

当然,辅助的此类要求可以任何方式界定且不一定随主线程是否停止、失效等而变。换句话说,就此而言,出于预防性目的,总体优化及/或任何其它目的,可仅基于主线程执行的工作负载或其它方面而确定辅助的此类要求。将在下文中在后续图式中所展示的不同实施例的内容背景中阐述可建立忙碌状态的方式的各种实例。参见例如图8及/或10。

如果根据决策406确定主线程处于忙碌状态,那么唤醒次级线程。参见操作408。一旦被唤醒,次级线程可钉到单独核,及确定与此类次级线程相关联的核是否为空闲的。参见决策410。在涉及Linux系统的一个实施例中,空闲状态可基于可从“/proc/stat”读取的利用率。

如果核并不空闲,那么使唤醒次级线程返回进入休眠状态,及依赖于主线程以完成相关联的应用程序任务。参见操作412。在一个实施例中,此决策410的可能目的为确保对于一个应用程序已经在使用中的资源(例如,核等)对于另一应用程序并非“被窃用”,此仅仅将资源问题从一个位置位移到另一位置。当然,在其它实施例中,代替或除决策410之外,优先权方案或其类似者可用于仲裁在不同应用程序当中的此分配。

如果在决策410中确定与次级线程相关联的核空闲,那么可在操作414中执行次级线程以辅助主线程完成任务。为此目的,次级线程可继续执行直到根据决策410相关联的核不再空闲或根据决策416完成任务为止,在此状况下方法400完成。

在各种实施例中,唤醒及执行次级线程的方式可根据工作“共享”或“窃用”框架,将在下文中更详细地阐述其细节。在任何状况下,次级线程可有益于其自身的相关联的应用程序,且同时不一定损害其它应用程序的执行。因此,一旦次级线程检测到相应的核再次变得忙碌,所述次级线程就可停止工作。

图5说明根据一个实施例的用于工作共享的技术500。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施技术500。然而,当然,可在任何所要环境的内容背景中实施技术500。

如所展示,工作共享技术500涉及中心任务队列506中的多个任务502。在使用中,将任务502在产生时置于中心任务队列506中,所述中心任务队列在多个主线程508当中共享。另外,如所展示,中心任务队列506中的任务502被划分成块504。为此目的,每当每一主线程508用完待完成的任务502时,所述主线程508可检索块504中的一个。

将在图8的描述期间阐述关于实施工作共享技术500及确定主线程的忙碌状态的例示性方法的更多信息。如不久将变得显而易见,在工作“共享”实施例中,次级线程在其完成当前任务块之后及在其向中心任务队列请求更多任务之前检查核利用率。如果核利用率高于阈值,那么可使帮助线程返回进入休眠状态;否则,其可继续工作。在实施方案中,由操作系统提供的核利用统计数据可通过取样获得,及因此并非实时的。对于用以在完成当前任务块之后检查核利用率的次级线程,可首先使其进入休眠状态达短时间段以避免进入操作系统的取样周期。因此,在各种实施例中,提供动态线程启动及核回收。另外,可基于有益于资源利用率及/或应用程序吞吐量的实时工作负载信息而实施动态资源分配。

图6说明根据一个实施例的用于工作窃用的技术600。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施技术600。然而,当然,可在任何所要环境的内容背景中实施技术600。

如所展示,类似于图5的工作共享技术500,工作窃用技术600涉及以块(未展示)分组的多个任务602。然而,工作窃用技术600利用各自分配到多个主线程606中的对应一个的多个单独局部队列604,而非中心任务队列。

在使用中,在主线程606中的一个完成对应局部队列604中的所有任务时,随机(或以其它方式)选择另一主线程606(及其局部队列604),及任务从其“被窃用”。将在图7及9到10的描述期间阐述关于实施工作窃用技术600及确定主线程的忙碌状态的例示性方法的更多信息。如不久将进一步变得显而易见,在工作“窃用”实施例中,次级线程在完成某一数目的任务(此数目可或可不预设)之后检查核利用率。如果核再次忙碌,那么其可停止工作及将所有其剩余任务发送到随机目标主线程。当然,可利用任何所要技术。

为了促进在工作窃用技术600的内容背景中忙碌状态的检测,可利用任何所要数据结构。图7说明根据一个实施例的用于促进在工作窃用技术的内容背景中对忙碌状态的检测的例示性数据结构700。如不久将变得显而易见,为了在工作窃用技术600的内容背景中检测忙碌状态,每一主线程维持标志702,其指示对应主线程是否之前已是窃用目标;及计数器704,其跟踪相关联局部任务队列604中已完成的部分。

在一个实施例中,在使用期间,主线程可设定/复位标志702以指示是否存在无法由当前主线程处置的大量任务。由于次级线程与主线程可共享相同存储器地址,因此此类标志702可易于由次级线程存取。还可周期性地唤醒次级线程从而以不久将变得显而易见的方式检查是否存在忙碌状态及当前核利用率。

图8说明根据一个实施例的用于工作共享及设定忙碌状态的方法800。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施方法800。举例来说,可在图5的工作共享技术500的内容背景中实施方法800。然而,当然,可在任何所要环境的内容背景中实施方法800。

如所展示,可识别中心任务队列(例如,图5的队列506等)中块(例如,图5的块504等)的数目。参见操作802。再者,可识别主线程(例如,图5的主线程508等)的数目。参见操作804。

为此目的,可基于相对于在以下方程#1中所界定的值的阈值而确定忙碌状态。

方程#1

(N-n)/N,其中

N为队列中任务的总数目,及n为主线程的数目。

因此,如果根据决策806前述值大于预定阈值,那么可设定忙碌状态。参见操作810。因此,可利用次级线程以供执行所述应用程序的所述多个任务中的一个或多个。另一方面,如果根据决策806前述值并不大于预定阈值,那么不设定忙碌状态。参见操作808。

可因此设定阈值使得如果工作负载的当前量大于主线程可处置的当前量,那么次级线程可在相应的核目前空闲的情况下开始工作。

图9说明根据一个实施例的用于工作窃用的方法900。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施方法900。举例来说,可在图6的工作窃用技术600的内容背景中实施方法900。然而,当然,可在任何所要环境的内容背景中实施方法900。

如所展示,任务(例如,图6的任务602等)选自局部队列(例如,图6的局部队列604等)以供处理。参见操作902。持续此操作直到在决策904中确定局部队列为空的为止。

一旦在决策904中确定局部队列为空,就从另一主线程(例如,图6的主线程606等)的另一局部队列选择任务。参见操作906。如先前所提及,可随机及/或通过任何其它所要算法选择此类其它局部队列/主线程。

一旦选择另一局部队列/主线程,就确定其是否处于忙碌状态。参见决策908。将在图10的描述期间阐述关于实施工作窃用方法900及确定主线程的忙碌状态的例示性方法的更多信息。在一个可能实施例中,一旦选择另一局部队列/主线程,就可确定此局部队列是否为空。如果是,那么确定操作906不成功,及重复操作906的选择过程。继续此操作直到所述所选局部队列并不为空为止,在此状况下可执行相关联的任务。参见操作910。为此目的,方法900选择另一主线程以搜寻可供用于处理的任务,直到窃用成功或所有主线程用完任务为止。

图10说明根据一个实施例的用于工作窃用及设定忙碌状态的方法1000。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施方法1000。举例来说,可在图6的工作窃用技术600的内容背景中并且进一步在图9的用于工作窃用的方法900的内容背景中实施方法1000以确定忙碌状态。然而,当然,可在任何所要环境的内容背景中实施方法1000。

如所展示,识别队列(例如,图6的局部队列604等)中的任务(例如,图6的任务602等)中已完成的一部分。参见操作1002。接着确定队列中的任务中已完成的所述部分是否小于预定阈值。参见决策1004。还确定主线程中的至少一个(例如,图6的主线程606等)是否已是从其获取(例如,被窃用等)的任务的主体。参见决策1006。如先前在图7的描述期间所提及,可基于数据结构而执行决策1004及1006中的确定,所述数据结构存储关于队列中的任务中已完成的部分的信息以及关于主线程中的至少一个是否已是从其获取的所述任务的主体的信息。

如果决策1004及1006两者已经决定使得尚未超出阈值及主线程尚未为窃用的主体,那么可设定忙碌状态。参见操作1008。为此目的,在分配到特定应用程序的所有核全部被利用及需要更多核的情形中,可利用次级线程以供执行所述应用程序的所述多个任务中的一个或多个。

图11说明根据一个实施例的本文中所揭示的一个或多个方法可提供资源分配的方式1100。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中展现本发明技术。然而,当然,在不同实施例中可或可不展现本发明技术。

如所展示,两个应用程序1102、1104可在使用期间具有被执行的相关联任务1110。在某些时间,两个应用程序1102、1104的任务1110各自可需要对线程的全部利用(例如,“并行阶段”1106等)。在其它时间,两个应用程序1102、1104的任务1110中的一个或多个可不一定需要对线程的全部利用(例如,“顺序阶段”1108等)。在后一种状况下,借助于在需要时动态地分配资源,本文中所揭示的一个或多个实施例的资源分配可提供更好的资源利用率及/或更高的吞吐量。

图12说明根据一个可能实施例的网络架构1200。作为选项,可在任何前述及/或后续图式及/或其描述中所阐述的实施例中的任何一个或多个的内容背景中实施本发明网络架构1200。举例来说,图12中所展示的各种设备中的任何一个或多个可并有先前实施例中所描述的方法及技术。

如所展示,提供至少一个网络1202。在本发明网络架构1200的内容背景中,网络1202可呈任何形式,包含但不限于电信网、局域网(local area network,LAN)、无线网络、例如因特网的广域网(wide area network,WAN)、对等网络、电缆网络等。尽管仅展示一个网络,但应理解,可提供两个或多于两个类似或不同网络1202。

多个设备耦合到网络1202。举例来说,服务器计算机1204及终端用户计算机1206出于通信目的可耦合到网络1202。此类终端用户计算机1206可包含台式计算机、笔记本电脑及/或任何其它类型的逻辑。再者,各种其它设备可以耦合到网络1202,包含个人数字助理(personal digital assistant,PDA)设备1208、移动电话设备1210、电视机1212等。

图13说明根据一个实施例的例示性系统1300。作为选项,可以在图12的网络架构1200的设备中的任一个的内容背景中实施系统1300。当然,可以在任何所要环境中实施系统1300。

如所展示,提供包含连接到通信总线1302的至少一个中央处理器1301的系统1300。系统1300还包含主存储器1304[例如,随机存取存储器(random access memory,RAM)等]。系统1300还包含图形处理器1306及显示器1308。

系统1300还可包含辅助存储装置1310。辅助存储装置1310包含例如硬盘驱动器及/或可移动的存储驱动器,表示软盘驱动器、磁带驱动器、光盘驱动器等。可移动的存储驱动器以熟知方式从可移动的存储单元读取及/或写入到可移动的存储单元。

在实例实施例中,系统1300包含利用多个主线程以供利用至少一个相应的核执行应用程序的多个任务中的至少一个的主线程利用模块、确定主线程在执行所述应用程序的所述多个任务中的一个或多个时是否需要辅助的辅助确定模块、及基于主线程在执行所述应用程序的所述多个任务中的一个或多个时是否需要辅助的所述确定而利用多个次级线程以供执行所述应用程序的所述多个任务中的一个或多个的次级线程利用模块。在一些实施例中,系统1300可以包含用于执行实施例中所描述的步骤中的任一个或组合的其它或额外模块。

就此而言,计算机程序或计算机控制逻辑算法可以存储在主存储器1204、辅助存储装置1210及/或任何其它存储器中。此类计算机程序在执行时使系统1200能够执行各种功能(例如,如上文所阐述的功能)。存储器1204、存储装置1210及/或任何其它存储装置是非暂时性计算机可读介质的可能实例。

应注意,在一个方面中,本文中描述的技术实施于计算机可读介质中存储的供指令执行机器、装置或设备使用或结合指令执行机器、装置或设备使用的可执行指令中,所述指令执行机器、装置或设备例如是基于计算机或含有处理器的机器、装置或设备。所属领域的技术人员应了解,对于一些实施例,包含其它类型的计算机可读介质,其可以存储可通过计算机访问的数据,计算机例如是盒式磁带、快闪存储器卡、数字视频磁盘、Bernoulli盒带、随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)以及其类似者。

如此处使用,“计算机可读介质”包含用于存储计算机程序的可执行指令的任何合适的介质中的一个或多个,使得指令执行机器、系统、装置或设备可以从所述计算机可读介质读取(或提取)指令并且执行指令用于实施所描述的方法。合适的存储格式包含电子、磁性、光学和电磁格式中的一个或多个。常规例示性计算机可读介质的非详尽性列表包含:便携式计算机磁盘;RAM;ROM;可擦除可编程只读存储器(EPROM或快闪存储器);光学存储设备,包含便携式压缩光盘(compact disc,CD)、便携式数字视频光盘(digital video disc,DVD)、高清DVD(HD-DVDTM)、蓝光光盘;以及其类似者。

应理解,所描述的图式中所说明的组件的布置是例示性的,并且可能有其它布置。还应理解,由权利要求书界定的、下文描述的并且在各种框图中所说明的各种系统组件(和构件)表示根据本文中所揭示的主题配置的一些系统中的逻辑组件。

例如,这些系统组件(和构件)中的一个或多个可以整体或部分地通过所描述的图式中所说明的布置中所说明的组件中的至少一些实现。另外,尽管这些组件中的至少一个至少部分地实施为电子硬件组件并因此构成机器,但是其它组件可以实施于软件中,当包含于执行环境中时构成机器、硬件或软件和硬件的组合。

更具体地说,由权利要求书界定的至少一个组件至少部分地实施为电子硬件组件,例如指令执行机器(例如,基于处理器的或含有处理器的机器)及/或实施为专用电路或电路系统(例如,互连以执行专用功能的慎密逻辑门)。其它组件可以实施于软件、硬件或软件和硬件的组合中。此外,可以组合这些其它组件中的一些或全部组件,可以完全省略一些组件并且可以添加其它组件,同时仍实现本文中描述的功能性。因此,本文中描述的主题可以许多不同变化形式体现,且所有此类变化形式涵盖在权利要求书的范围内。

在以上描述中,除非另外指明,否则参考动作和由一个或多个设备执行的操作的符号表示来描述主题。因而,应理解,有时被称为计算机执行动作和操作的此类动作和操作包含构造形式的数据处理器的操作。此操作会转换数据或将其维持在计算机的存储器系统中的位置处,这会以所属领域的技术人员充分理解的方式来重新配置或以其它方式改变设备的操作。数据在存储器的物理位置处维持为具有由数据格式界定的特定性质的数据结构。然而,尽管在先前内容背景中描述了主题,但这并不表示对所述主题的限制,所属领域的技术人员将了解,下文中描述的各种动作和操作也可以实施于硬件中。

为了促进对本文中描述的主题的理解,根据动作顺序描述许多方面。由权利要求书界定的这些方面中的至少一个方面由电子硬件组件执行。例如,将认识到,可通过专用电路或电路系统,通过正由一个或多个处理器执行的程序指令或通过这两者的组合执行各个动作。本文中对任何动作顺序的描述并不意图暗示必须遵循用于执行此顺序而描述的特定次序。除非本文中另外指示或另外明显与内容相矛盾,否则本文中所描述的所有方法可以任何合适次序执行。

除非本文中另外指示或明显与内容相矛盾,否则在描述主题的内容背景中(尤其在以上权利要求书的内容背景中)使用术语“一”和“所述”以及类似指示物应理解为涵盖单数和复数。在此引证数值的范围仅旨在用作单独地提及每个单独的数值落在所述范围内的速记的方法,除非本文中另外指出,并且每个单独的数值被并入到本说明书中就像它被个别地在本文中引证一样。此外,上述描述仅出于说明的目的,而不是出于限制的目的,因为寻求保护的范围由上文中所阐述的权利要求书以及其任何等效物来界定。除非另外要求,否则本文中所提供的对任何和所有实例或例示性语言(例如,“例如”)的使用仅仅是意图更好地说明主题,而并非对主题的范围造成限制。使用术语“基于”和其它类似短语指示在权利要求书和书面描述中产生结果的条件,并不旨在排除产生所述结果的任何其它条件。本说明书中的任何语言都不应理解为指示实践所要求保护的本发明所必需的任何不要求保护的元件。

本文中描述的实施例包含发明人实施所要求的主题已知的一个或多个模式。当然,在阅读前文描述之后,所属领域的一般技术人员将明显了解那些实施例的变化形式。本发明人期望熟练的业内人士适当时采用此类变体,并且本发明人打算以不同于本文中特定描述的其它方式来实践本发明所要求的主题。因此,此所要求的主题包含可适用法律所准许的在附属权利要求书中叙述的主题的所有修改和等效物。此外,除非本文中另外指示或另外明显与内容相矛盾,否则本发明涵盖上述要素以其所有可能的变化形式的任何组合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1