识别增强型同步操作结果以改善运行时操作的制作方法

文档序号:16049949发布日期:2018-11-24 11:11阅读:164来源:国知局

保证在并行应用执行中的正确性需要硬件原子同步指令。这种指令确保如果多个处理器核心尝试并发更新相同的变量,则只有一个处理器核心将成功。由当前硬件支持的原子同步指令的一些例子包括负载-链路/存储-条件、比较和交换、提取和增加等。

同步指令只向处理器核心返回成功(赢)或失败(输)的二进制通知,造成在硬件和软件之间的信息缺口。因此,处理器核心仅接收其更新是否成功的通知。然而,在处理器核心和资源之间的互连网络上的仲裁器或其它资源同步和管理部件不共享与成功/失败更新相关的其它信息。因此,在原子性硬件和指令集架构之间缺失信息。

由并发执行的两个或更多处理器核心对资源的排他访问可以通过执行原子同步指令以便获得对所述资源的访问而获得。成功执行同步指令的处理器核心将获得对资源的排他访问。

还可以基于先来先服务对发布针对竞争资源的资源访问请求的处理器核心授权对竞争资源的排他访问。资源管理器能够基于竞争资源的可用性来确定是授权还是拒绝对由任意处理器核心(即,请求方处理器核心)发布的资源访问请求的访问。



技术实现要素:

各个实施例的方法和装置提供了用于识别计算设备中的增强型同步操作结果的方法和装置。各个实施例可以包括:从计算设备的多个计算元件接收针对计算设备的第一资源的多个资源访问请求;基于所述第一资源访问请求授权第一计算元件访问第一资源;以及向所述第二计算元件返回响应。所述多个资源访问请求可以包括来自多个计算元件的第一计算元件的第一资源访问请求以及来自多个计算元件的第二计算元件的第二资源访问请求。所述第一资源访问请求可以包括来自第一计算元件的第一请求方标识符。第二资源访问请求可以包括来自第二计算元件的第二请求方标识符。所述响应可以包括作为获胜者计算元件标识符的第一请求方标识符。所述计算元件可以包括物理处理器和核心、或如本文定义的逻辑线程。

一些实施例还可以包括:比较第二请求方标识符与所述获胜者计算元件标识符;以及通过确定第二请求方标识符是否匹配获胜者计算元件标识符,来确定第二计算元件是否是获胜者计算元件。

一些实施例还可以包括:根据获胜者计算元件标识符来识别获胜者计算元件;以及响应于确定出第二计算元件不是获胜者计算元件,确定是否满足标准以调整计算设备的第二资源。这种实施例还可以包括:响应于确定出满足标准以调整第二资源,通过第二计算元件调整第二资源。

在一些实施例中,确定是否满足标准以调整计算设备的第二资源可以包括:通过第二计算元件,基于一个或多个标准,确定通过第一计算元件和第二计算元件共享第二资源的可能性。所述标准可以包括第一计算元件和第二计算元件具有共享的操作系统、共享的动态电压和频率缩放、以及共享的拓扑。

一些实施例还可以包括:接收针对第一资源的第三资源访问请求,所述第三资源访问请求包括来自多个计算元件的第三计算元件的第三请求方标识符;以及向所述第三计算元件返回包括作为获胜者计算元件标识符的第一请求方标识符的响应。

一些实施例还可以包括:确定第二计算元件是否有任务要执行;以及响应于确定出第二计算元件没有任务要执行,发送用于从第一计算元件窃取任务的信号,其中所述信号包括第二请求方标识符。

一些实施例还可以包括:接收对试图窃取任务的响应,该响应包括任务获胜者计算元件标识符。这种实施例还可以包括:比较第二请求方标识符与任务获胜者计算元件标识符;通过确定第二请求方标识符是否匹配任务获胜者计算元件标识符,来确定第二计算元件是否是任务获胜者计算元件。这种实施例还可以包括:响应于确定出第二计算元件不是任务获胜者计算元件,调整第二计算元件的任务窃取列表。

在一些实施例中,调整第二计算元件的任务窃取列表包括:至少部分地基于计算元件是执行递归任务还是非递归任务,重新布置窃取列表中的项目。

各个实施例可以包括被配置用于识别增强型同步操作结果的计算设备。计算设备可以包括多个计算元件,包括第一计算元件和第二计算元件;第一资源;以及资源管理器,其通信地连接到所述多个计算元件和资源,并且所述资源管理器配置有资源管理器可执行指令以执行上述总结的一个或多个实施例方法的操作。

各个实施例可以包括被配置为用于识别增强型同步操作结果的计算设备,其具有用于执行上述总结的一个或多个实施例方法的功能的单元。

各个实施例可以包括存储有处理器可执行指令的非瞬态计算机可读存储介质,所述指令被配置为使得计算设备的处理器执行上述总结的一个或多个实施例方法的操作。

附图说明

附图并入本文并构成本说明书的一部分,其示出了各个实施例的示例性实施例,并与上述给出的通用描述和下文给出的详细描述一起用于解释权利要求的特征。

图1是示出适于实现实施例的计算设备的部件框图。

图2是示出适于实现实施例的示例性多核处理器的部件框图。

图3是示出根据实施例用于识别增强型同步操作结果的硬件支持的过程和信令图。

图4是示出根据实施例的标识符寄存器的代表图。

图5是示出用于基于获胜者在物理级调整资源的实施例方法的过程流程图。

图6是示出用于基于获胜者在逻辑级调整任务窃取启发法的实施例方法的过程流程图。

图7是示出适于与各个实施例一起使用的示例性移动计算设备的部件框图。

图8是示出适于与各个实施例一起使用的示例性移动计算设备的部件框图。

具体实施方式

将参考附图详细描述各个实施例。在可能时,可以贯穿附图使用相同的参考数字来指代相同或类似的部件。参考特定例子和实现方式是出于说明的目的,而并不打算限制权利要求的范围。

术语“计算设备”和“移动计算设备”在此可互换使用,以指代包括存储器以及具有任意数量的处理器核心的可编程处理器的多种电子设备中的任一种。具有多于一个处理器核心的处理器可以被称作多核心处理器。计算设备的例子包括蜂窝电话、智能电话、个人或移动多媒体播放器、个人数字助理(pda)、膝上型计算机、平板计算机、可转换膝上型/平板计算机(二合一计算机)、智能本、超级本、上网本、掌上计算机、无线电子邮件接收机、支持多媒体互联网的蜂窝电话、移动游戏控制器、以及无线游戏控制器。术语“计算设备”还可以指代静止计算设备,包括个人计算机、台式计算机、多合一计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机、以及游戏控制器。各个实施例可以对具有有限存储器和电池资源的移动计算设备尤其有用。然而,实施例一般在实现多个存储器设备和有限功率预算的任意电子设备中有用,其中减少处理器的功耗可以延长电子设备的电池操作时间。

实施例可以包括用于在原子同步操作期间共享更多信息的方法、系统和设备。方法/装置可以包括例如通过将信息存储在一般可访问的寄存器中来识别增强型同步操作结果到失败的竞争者。实施例可以包括发送资源访问请求的每个发出者的标识符(请求方标识符)以及请求的同步指令,并将授权访问竞争资源的发出者的标识符(获胜者请求方标识符)返回给其他竞争者(或存储在寄存器中)。实施例还可以包括用于使用获胜者请求方标识符(或获胜者标识符)在硬件级调整资源配置,和/或在软件级调整工作负荷平衡启发法(例如,工作窃取启发法)的方法。

在计算设备内的计算元件(例如,物理处理器和核心或逻辑线程)可以发布资源访问请求,该请求包括同步指令和发布针对竞争资源的访问请求的计算元件(请求方计算元件)的请求方标识符。接收针对竞争资源的访问请求的资源管理器(例如,仲裁器、屏障(barrier)或控制器)将获胜者标识符返回到请求方计算元件。获胜者标识符标识赢得竞争并因此具有对竞争资源的独有权的计算元件。具有竞争资源的所有权的计算元件在此可以被称作拥有者计算元件、获胜者计算元件、拥有者设备、获胜者设备、拥有者或者获胜者。失去对竞争资源的竞争的请求方计算元件在此可以被称作非拥有者计算元件、失败者计算元件、非拥有者设备、失败者设备、非拥有者、或失败者。请求方标识符可以包括请求对竞争资源的访问的任何硬件部件或软件元件的标识符。

接收获胜者计算元件的获胜者标识符的请求方计算元件可以确定对竞争资源的访问被拒绝,并可以基于与获胜者计算元件的关系以及共享的和/或拓扑接近的资源来调整硬件资源配置和/或软件资源。因为失败者计算元件可能持有获胜者计算元件取得进展所需的软件资源,因此调整资源可能在总体性能上有益。因此,向失败者计算元件通知获胜者计算元件的身份,并且通过该信息,采取动作以转移失败者计算元件所持有的资源的所有权。例如,失败者计算元件可以基于获胜者设备是否由同一操作系统管理、在同一动态电压和频率缩放域内管理、和/或在失败者计算元件的物理近处,来确定共享硬件资源的可能性。基于该信息,可以调整资源配置,包括处理频率、电压缩放、存储器操作的数量、活动状态、带宽使用等。

如何调整以及调整哪些资源配置取决于在获胜者计算元件和失败者计算元件之间共享的资源级别以及计算设备的管理策略。实现方式可以包括减小失败者计算元件的频率并增加获胜者计算元件的频率,以允许获胜者计算元件执行地更快。可以响应于原子操作结果的信号的通知,通过预编程的或在运行时的操作系统(os)来实现对失败者计算元件和获胜者计算元件各自的处理频率的控制。

接收获胜者计算元件的标识符的请求方计算元件还可以基于竞争资源的获胜者来调整工作负荷平衡启发法,例如,工作窃取启发法。例如,工作窃取列表可以包括用于执行应用的逻辑元件。

调整工作平衡启发法可以涉及调整工作窃取启发法以考虑任务的行为。工作窃取启发法的例子可以是一个这样的例子:其中逻辑元件可以在完成其初始分配时从别处窃取未结束的工作项。对于递归任务,其是由另一任务发起的任务,响应于识别出竞争资源的获胜者逻辑元件,获胜者逻辑元件可以被识别为可能繁衍其它任务来执行递归任务的迭代。可以对窃取列表进行重排序,以表示获胜者逻辑元件是针对要窃取的任务需检查的逻辑元件中的第一个逻辑元件。对于非递归任务,响应于识别出竞争资源的获胜者逻辑元件,获胜者逻辑元件可以被识别为已经结束所有其分配的任务以执行应用并从其它逻辑元件窃取任务,表示获胜者逻辑元件没有任何用于窃取的任务。可以修改窃取列表以将获胜者逻辑元件从窃取列表移除或进行重新排序,以表示获胜者逻辑元件是针对待窃取任务需检查的最后一个逻辑元件。

请求方计算元件的标识符可以存储于寄存器中,并连同同步指令被提供给资源管理器。涉及与标识符相关联的硬件部件或软件元件的状态信息也可以存储于寄存器中,并被提供给资源管理器。资源管理器可以返回其接收到的竞争资源的获胜者的信息。资源管理器还可以跟踪竞争信息,包括从对竞争资源的成功资源访问起的失败的资源访问请求的数量以及竞争资源的非拥有者的数量。资源管理器还可以返回竞争信息。

图1示出了适于与各个实施例一起使用的包括与远程计算设备50通信的计算设备10的系统。计算设备10可以包括片上系统(soc)12,其具有处理器14、存储器16、通信接口18和存储存储器接口20。计算设备10还可以包括通信部件22,例如有线或无线调制解调器、存储存储器24、用于建立到无线网络30的无线连接32的天线26、和/或用于将有线连接44连接到互联网40的网络接口28。处理器14可以包括多种硬件核心的任一种,例如,多个处理器核心。

本文使用的术语“片上系统(soc)”通常指的是一组互连电子电路,但不排除包括硬件核心、存储器和通信接口。硬件核心可以包括多个不同类型的处理器,例如通用处理器、中央处理单元(cpu)、数字信号处理器(dsp)、图形处理单元(gpu)、加速处理单元(apu)、辅助处理器、单核处理器、以及多核处理器。硬件核心还可以实现其它硬件和硬件组合,例如,现场可编程门阵列(fpga)、专用集成电路(asic)、其它可编程逻辑设备、离散门逻辑、晶体管逻辑、性能监视硬件、看门狗硬件、以及时间基准。集成电路可以被配置为使得集成电路的部件驻留在单件半导体材料上,例如硅。在各个实施例中,计算设备10的部件的各种组合可以是不包括在soc12上的单独部件。

soc12可以包括一个或多个处理器14。计算设备10可以包括多于一个soc12,由此增加处理器14和处理器核心的数量。计算设备10还可以包括与soc12不关联的处理器14。个体处理器14可以是参考图2在下文中描述的多核处理器。处理器14每个可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或不同。可以将相同或不同配置的一个或多个处理器14和处理器核心分组到一起。一组处理器14或处理器核心可以被称作多处理器集群。

soc12的存储器16可以是易失性或非易失性存储器,其被配置为用于存储处理器14访问的数据和处理器可执行代码。计算设备10和/或soc12可以包括被配置用于各种目的的一个或多个存储器16。在实施例中,一个或多个存储器16可以包括易失性存储器,例如,随机存取存储器(ram)或主要存储器、或高速缓存存储器。这些存储器16可以被配置为临时保存从数据传感器或子系统接收的有限量的数据以及从非易失性存储器请求的数据和/或处理器可执行代码指令。这些存储器16还可以被配置为临时保存基于多种因素预期在将来访问时从非易失性存储器加载到存储器16的数据和/或处理器可执行代码指令。存储器16还可以被配置为临时保存由处理器14产生并临时存储用于将来快速访问的中间处理数据和/或处理器可执行代码指令。

存储器16可以被配置为至少临时地存储从另一存储器设备(例如,另一存储器16或存储存储器24)加载到存储器16上的数据和处理器可执行代码,以供一个或多个处理器14访问。加载到存储器16的数据或处理器可执行代码可以响应于处理器14执行功能而被加载。响应于执行功能而将数据或处理器可执行代码加载到存储器16上可能起因于对存储器16的存储器访问请求不成功或错失,因为所请求的数据或处理器可执行代码不位于存储器16内。响应于错失,可以进行对另一存储器16或存储存储器24的存储器访问请求,以将所请求的数据或处理器可执行代码从另一存储器16或存储存储器24加载到存储器设备16。响应于执行功能而将数据或处理器可执行代码加载到存储器16可能起因于对另一存储器16或存储存储器24的存储器访问请求,并且可以将数据或处理器可执行代码加载到存储器16中以供后续访问。

通信接口18、通信部件22、天线26和/或网络接口28可以一致地工作,以使得计算设备10能够通过无线网络30经由无线连接32和/或有线网络44与远程计算设备50通信。可以使用多种无线通信技术实现无线网络30,所述技术包括例如用于无线通信的射频频谱,以向计算设备10提供到互联网40的连接,通过互联网40,计算设备10可以与远程计算设备50交换数据。

存储存储器接口20和存储存储器24可以一致地工作,以允许计算设备10在非易失性存储介质上存储数据和处理器可执行代码。存储存储器24可以被配置为非常类似存储器16的实施例,其中存储存储器24可以存储数据或处理器可执行代码以供一个或多个处理器14访问。存储存储器24是非易失性的,甚至可以在已经移除计算设备10的电力之后仍保持信息。当电力被重新建立并且计算设备10重启时,存储于存储存储器24上的信息对计算设备10可用。存储存储器接口20可以控制对存储存储器24的访问,并允许处理器14从存储存储器24读取数据并向其写入数据。

计算设备10的一些或所有部件可以被不同布置和/或组合,同时仍服务必要的功能。此外,计算设备10可能不限于每个部件之一,并且每个部件的多个实例可以包含于计算设备10的各种配置中。

图2示出了适于实现实施例的多核处理器14。多核处理器14可以具有多个同构或异构处理器核心200、201、202、203。处理器核心200、201、202、203在实现方式中可以是同构的,其中单个处理器14的核心被配置为用于相同的目的并具有相同或类似的性能特性。例如,处理器14可以是通用处理器,并且处理器核心200、201、202、203可以是同构的通用处理器核心。替代地,处理器14可以是图形处理单元或数字信号处理器,并且处理器核心200、201、202、203可以分别是同构的图形处理器核心或数字信号处理器核心。为了引用的简便,术语“处理器”和“处理器核心”在此可互换使用。

处理器核心200、201、202、203可以是异构的,在于单个处理器14的处理器核心200、201、202、203可以被配置为用于不同目的和/或具有不同性能特性。这种异构处理器核心的异构性可以包括不同的指令集架构、管线、操作频率等。这种异构处理器核心的例子可以包括已知为“big.little”的架构,其中较慢的、低功率的处理器核心可以与更有力的且高耗电的处理器核心耦合。在类似实施例中,soc12可以包括多个同构或异构处理器14。

在图2示出的例子中,多核处理器14包括四个处理器核心200、201、202、203(即,处理器核心0、处理器核心1、处理器核心2和处理器核心3)。为了解释方便,这里的例子可以涉及图2所示的四个处理器核心200、201、202、203。然而,在图2中示出且在本文描述的四个处理器核心200、201、202、203仅被提供为例子,并且不以任何方式表示将各个实施例限制为四核处理器系统。计算设备10、soc12或多核处理器14可以单独地或组合地包括比本文图示和描述的四个处理器核心200、201、202、203少或多的处理器核心。

图3示出了根据实施例用于识别增强型同步操作结果的过程和信令。图3中示出的例子是非限制性的,尤其是关于实现过程和信令的部件的数量和类型,以及图示信号的数量和次序。该例子包括计算元件(计算元件1300和计算元件2302)、资源管理器304以及资源306。在各种实现方式中,计算元件300、302可以包括相同的硬件实现方式和逻辑实现方式或其组合中的任一种,硬件实现方式例如是处理器14、处理器核心200、201、202、203,以及其它硬件核心,例如如上所述的;逻辑实现方式例如是线程和过程。资源管理器304还可以包括硬件实现方式,例如,仲裁器、屏障、控制器、管理单元以及接口设备。资源306可以包括任意硬件部件或软件元件,其可以由计算元件300、302访问和使用来执行任务,例如,存储器或存储单元、各种部件的输入/输出端口、或通信信道。

在图3示出的例子中,计算元件1300和计算元件2302二者可以发布对相同资源306或多个资源的资源访问请求。作为非限制性例子且为了解释方便,本文的描述可以涉及计算元件1300和计算元件2302每个发布针对单个资源306的单个资源访问请求308、310。计算元件1300可以发布资源访问请求308,而计算元件2302可以发布资源访问请求310。资源访问请求310可以包括目标资源306,其例如是通过虚拟或物理地址、操作和请求方标识符所指定的。同步操作可以是要求请求方计算元件300、302对资源306具有排他访问或对修改资源306的至少排他访问的操作。在不具有排他访问或对修改资源306的排他访问的情况下,当在通过计算元件300、302的另一个元件修改资源306之后从资源306获得不期望的值时,操作可能遭遇错误。请求方标识符可以包括唯一标识发布请求访问资源306的计算元件300、302的值。请求方标识符可以存储于部件中,例如,寄存器、高速缓存、或与计算元件300、302相关联的缓冲器中,并可以从部件中获得以用于分别包含于资源访问请求308、310中。

资源管理器304可以接收资源访问请求308、310,并且确定是否允许计算元件300、302中的一个或两个访问资源306。在一些实现方式中,资源306可以变成是有竞争的,并且资源管理器304可以拒绝计算元件300、302之一访问资源306。资源306可以成为有竞争的资源,因为多个计算元件300、302并发访问或试图访问资源306。

对资源306的竞争可以起源于资源管理器304拒绝计算元件1300和计算元件2302中的一个元件进行访问,而另一个元件访问资源306。不是所有并发的试图访问资源306都是竞争性的。然而,竞争可能发生在多个计算元件300、302试图访问资源306以修改资源306时。竞争还可以发生在计算元件之一访问资源306依赖于资源306的一致状态而另一计算元件300、302修改资源306的状态时。竞争还可以发生在由计算元件300、302之一对资源306的访问取决于由计算元件300、302的另一个对资源306的先前访问时。

不管竞争资源306的原因是什么,资源管理器304可以允许由计算元件300、302之一访问资源306,并拒绝另一计算元件300、302访问资源306。因此,资源306可以允许实现资源访问请求308、310之一,并禁止实现资源访问请求308、310的另一个。

对于允许的资源访问请求308、310之一,资源管理器304可以许可在资源306上实现操作312。如上所述,操作312可以包括可能修改资源306的操作,或可以依赖于在操作312期间资源306的一致状态。

资源管理器304可以存储许可的资源访问请求308、310中的请求方标识符。资源管理器304可以将请求方标识符存储为获胜者标识符,与对应于禁止的资源访问请求308、310的请求方标识符的失败者标识符区别开来。在一些实现方式中,获胜者标识符可以存储于计算元件300、302可访问的位置中(例如,寄存器),从而计算元件可以检查获胜者标识符以用于如本文进一步讨论的调整资源。

获胜者标识符可以与资源306相关以允许跟踪资源306的所有权,从而可以通知资源管理器304和请求访问资源306的其它计算元件:拥有且由哪个计算元件拥有资源306。例如,资源管理器304可以使用存储的获胜者标识符及其与资源306的关联,以进一步确定是允许还是禁止访问另一并发资源访问请求。

在图3示出的例子中,资源管理器304允许通过计算元件1300发布的资源访问请求308。结果,计算元件1300是竞争资源306的获胜者,并且可以将计算元件1300和资源访问请求308的请求的标识符指定为获胜者标识符。

对于资源访问请求308、310中被禁止的一个,资源管理器304可以将响应314返回到已经发布了资源访问请求308、310中的被禁止的一个的计算元件300、302。响应314可以向接收计算元件300、302表示其各自的资源访问请求308、310被拒绝。响应314可以通过包括信号(例如,指定位)来表示拒绝资源访问请求308、310,所述信号可以通过具有指定值来表示拒绝。响应314还可以或替代地包括获胜者标识符。

获胜者标识符可以用作表示拒绝禁止的资源访问请求308、310的信号。对此,接收计算元件300、302可以比较获胜者标识符与其自己的请求方标识符,并响应于获胜者标识符不同于其自己的请求标识符来确定资源访问请求308、310被拒绝。

资源管理器304可以在响应314中包括表示拒绝禁止的资源访问请求308、310的信号和/或获胜者标识符。在图3示出的例子中,资源管理器304禁止由计算元件2302发布的资源访问请求310。结果,计算元件2302是资源306竞争的失败者。资源管理器304向计算元件2302发送包括获胜者标识符(即,计算元件1300的请求方标识符)的响应314。计算元件2302可以确定其是资源306竞争的失败者,并且可等待资源306变得可用,继续执行无需访问资源306可执行的任务,和/或调整物理和/或逻辑资源,如本文进一步描述的。

响应于许可的资源访问请求308、310,可以生成响应316以通知许可的资源访问请求308、310的请求方计算元件300、302:完成对资源306的请求访问,或者提供来自资源306的数据。资源管理器304可以接收响应316,注意不管请求的对资源306的访问是否完成,并且可以将响应316引导至许可的资源访问请求308、310的请求方计算元件300、302作为响应318。在一些实现方式中,资源管理器304可以在完成对资源306的请求访问时放弃资源306。这样,资源管理器304可以移除或无效存储的获胜者标识符及其与资源306的关联。

在一些实现方式中,资源访问请求308、310还可以包括各自请求方计算元件300、302的状态信息。状态信息可以包括处理频率、电压缩放、存储器操作的数量、活动状态、带宽使用、温度、电流泄露等。

资源管理器304可以存储并将来自许可的资源访问请求308、310的请求方计算元件300、302的状态信息与获胜者标识符关联。资源管理器304可以包括来自许可的资源访问请求308、310的请求方计算元件300、302的状态信息作为响应314的一部分。失败者计算元件300、302可以使用获胜的计算元件300、302的状态信息来调整物理和/或逻辑资源,如本文中进一步描述的。

资源管理器304还可以跟踪竞争资源306的竞争信息,包括从对竞争资源306的成功资源访问请求起的失败的资源访问请求的数量以及竞争资源306的失败者计算元件300、302的数量。资源管理器304可以存储并将竞争资源306的竞争信息与获胜者标识符关联。资源管理器304可以包括竞争资源306的竞争信息作为响应314的一部分。失败者计算元件300、302可以使用竞争资源306的竞争信息来调整物理和/或逻辑资源,如本文中进一步描述的。

图4示出了根据实施例的标识符寄存器400。每个计算元件300、302可以包括为部件或与标识符寄存器400相关联。标识符寄存器400可以包括用于存储计算元件标识符(id)402的位置,其可以被访问以获得计算元件标识符用作在资源访问请求中的请求标志符。

标识符寄存器400还可以包括与共享资源404-412相关联的位置。共享资源可以是由与标识符寄存器400相关联的计算元件300、302和其它计算元件300、302共享的任意资源以供执行任务,与被与标识符寄存器400相关联的计算元件300、302排他访问相反。

与共享资源404-412相关联的位置每个可以专用于共享资源并存储用于共享所述共享资源的计算元件300、302的计算元件标识符。例如,标识符寄存器400可以包括用于存储共享共享资源1的计算元件标识符的位置404、用于存储共享共享资源2的计算元件标识符的位置406、用于存储共享共享资源n-1的计算元件标识符的位置408、以及用于存储共享共享资源n的计算元件标识符的位置412。标识符寄存器400可以包括任意数量的位置404-412,用于存储针对至少高达“n”个数量的共享资源的计算元件标识符。

可以通过失败者计算元件300、302访问与失败者计算元件300、302和获胜者计算元件300、302相关联的标识符寄存器400,以识别资源306在获胜者和失败者计算元件300、302之间共享。可以调整在获胜者和失败者计算元件300、302之间共享的资源306,以改善通过获胜者计算元件300执行的过程的关键部分,如本文进一步描述的。

图5示出了根据各个实施例基于获胜者在物理级调整资源的方法500。方法500可以在计算设备中使用在通用硬件(例如,处理器)和/或实现计算元件和/或资源管理器的专用硬件上执行的软件执行。

在框502中,计算设备可以发布包括请求方标识符的资源访问请求。如本文所讨论的,请求方标识符可以是发布资源访问请求的计算元件的计算元件标识符。此外,资源访问请求可以包括同步操作,和/或资源访问请求的目标资源的物理或虚拟地址。在一些实现方式中,资源访问请求还可以包括请求方计算元件的状态信息,例如处理频率、电压缩放、存储器操作的数量、活动状态、带宽使用、温度、电流泄露等。

在框504中,计算设备可以在包括获胜者标识符的响应中接收资源访问请求的结果,表示计算元件被资源管理器授权在资源竞争中访问目标资源。在一些实现方式中,所述响应可以包括在获胜者资源访问请求中提供的获胜者计算元件的一些或所有状态信息。

在确定框506中,计算设备可以确定请求方计算元件是否是获胜者计算元件。计算设备可以为请求方计算元件从其相关联的标识符寄存器获得计算元件标识符,并比较计算元件标识符与获胜者标识符。在计算元件标识符和获胜者标识符之间匹配的比较结果可以表示请求方计算元件是获胜者计算元件。在计算元件标识符和获胜者标识符之间不匹配的比较结果可以表示请求方计算元件是失败者计算元件。

响应于确定出请求方计算元件是获胜者计算元件(即,确定框506=“是”),计算设备可以在框516中继续执行由获胜者计算元件执行的过程。可以向获胜者计算元件提供对执行过程必要的资源(例如,竞争资源)的访问。获胜者计算元件可以利用对竞争资源的访问,以便完成需要使用资源的操作的一部分。

获胜者计算元件可以继续维持竞争资源的所有权,直到获胜者计算元件不再需要竞争资源来执行操作为止,此时获胜者计算元件可以放弃对竞争资源的所有权。在一些实现方式中,基于各种因素,可能迫使获胜者计算元件放弃竞争资源的所有权,所述因素包括时间、竞争资源的失败者计算元件的数量、竞争资源的拒绝的访问请求的数量、竞争资源的使用等,以避免计算设备的性能退化。在放弃竞争资源的所有权时,获胜者计算元件可以将通知信号发送到资源管理器、失败者计算元件、其它计算元件、和/或多个计算元件可访问的、可获得竞争资源的寄存器。在一些实现方式中,资源管理器可以将通知信号发送给失败者计算元件、其它计算元件、和/或多个计算元件可访问的、可获得竞争资源的寄存器。

响应于确定出请求方计算元件不是获胜者计算元件或者是失败者计算元件(即,确定框506=“否”),计算设备可以识别获胜者计算元件。计算设备可以将与通过在框504中接收到的资源访问请求的响应中包括的获胜者标识符相关联的计算元件识别为获胜者计算元件。计算设备可以使用获胜者标识符来确定在获胜者计算元件和失败者计算元件之间的关系,用于如本文描述的调整物理和/或逻辑资源。

在确定框510中,计算设备可以确定是否满足标准以调整计算设备的物理和/或逻辑资源。在具有多个操作系统、动态电压和频率缩放域以及拓扑的计算设备中,失败者计算元件可以调整本地和/或共享资源。用于调整的资源可以在失败者计算元件和获胜者计算元件之间共享。在做出该确定时,当本文描述的任意条件被满足并且调整资源很可能可以改善计算设备的性能时,计算设备可以确定是否满足标准以调整计算设备的物理和/或逻辑资源。在各种实现方式中,所述标准可能至少部分地取决于失败者计算元件和获胜者计算元件之间的关系。失败者计算元件可以使用在框508中识别出的获胜者计算设备的信息来在确定框510中做出确定。

响应于确定出满足标准以调整计算设备的物理和/或逻辑资源(即,确定框510=“是”),计算设备可以在框512中调整计算设备的物理和/或逻辑资源。调整计算设备的物理和/或逻辑资源可以如本文所述实现,并可以以有利于计算设备的性能的任意方式实现。例如,失败者计算元件可以基于与获胜者计算元件的关系、共享资源和/或拓扑靠近的资源,来调整硬件资源配置和/或软件资源。

在框512中调整资源可能对计算设备的总体性能有益,因为失败者计算元件可能持有获胜者计算元件在执行过程时取得进展所需的资源。例如,失败者计算元件可以基于获胜者计算元件是否由同一操作系统管理、在同一动态电压和频率缩放域中管理、以及在获胜者计算元件的物理近处,来确定共享硬件资源的可能性。基于该信息,可以调整资源配置,包括处理频率、电压缩放、存储器操作的数量、活动状态、带宽使用、进行中的丢失等。

在框512中如何调整以及调整哪些资源配置取决于在获胜者计算元件和失败者计算元件之间共享的资源级别以及计算设备的管理策略。一些实现方式可以包括失败者计算元件减小其处理频率并增加获胜者计算元件的频率,以减少执行包括使用竞争资源的获胜者计算元件的原子操作的应用的关键部分所需的时间。在另一例子中,失败者计算元件可以调整其高速缓存带宽使用和/或进行中的丢失,以减少在一段时间中显著的丢失请求的数量,由此还减少必要的较慢存储查找的数量,并允许更多的资源被获胜者计算元件使用。

在调整资源之后或与其并行,或者响应于确定没有满足任何标准以调整计算设备的物理和/或逻辑资源(即,确定框510=“否”),在框514中,计算设备可以等待获胜者计算元件释放竞争资源的所有权。如本文讨论的,可以以多种方式向失败者计算元件通知获胜者计算元件的竞争资源的所有权的释放。在一些实现方式中,失败者计算元件可以从获胜者计算元件或资源管理器接收信号,表示获胜者计算元件对竞争资源的所有权的释放。在一些实现方式中,失败者计算元件可以为了获胜者计算元件对竞争资源的所有权的释放的指示来检查可访问的寄存器。当被通知获胜者计算元件对竞争资源的所有权的释放时,在框502中,计算设备可以发布包括请求方标识符的资源访问请求。

图6示出了根据各个实施例的用于基于获胜者在逻辑级调整任务窃取启发法的实施例方法600。方法600可以在计算设备中使用在通用硬件(例如,处理器)和/或实现计算元件和/或资源管理器的专用硬件上执行的软件的执行。

可以以与结合图5描述的方法500中类似编号的框类似的方式实现框502-506和516。在方法600的一些实现方式中,可以可选地实现框502-506和516。

响应于确定出请求方计算元件不是获胜者计算元件或者是失败者计算元件(即,确定框506=“否”),在确定框610中,计算设备可以确定失败者计算元件是否具有无需访问竞争资源就可执行的任务。

响应于确定失败者计算元件不具有无需访问竞争资源就可执行的任务(即,确定框610=“是”),在框612中,计算设备可以试图窃取或请求任务。类似于资源访问请求,用于窃取或请求任务的信号可以包括发送用于窃取或请求工作的信号的计算元件(即,失败者计算元件)的计算元件标识符(请求方标识符)。失败者计算元件可以将通用信号发送到实现调度器的资源管理器,或针对可能具有可用任务和指定计算元件的信号的计算元件来检查其窃取列表中的计算元件。在一些实现方式中,窃取列表可以包含执行与失败者计算元件相同应用的计算元件。类似于资源访问请求,资源管理器可以从试图窃取或请求任务的多个计算元件中确定获胜者和失败者,并将获胜者标识符返回计算元件或使得计算元件可获得获胜者标识符。

在框614中,计算设备可以接收对用于窃取或请求任务的信号的响应。所述响应可以包括获胜者标识符,并且对于获胜者计算元件,执行任务分配。

在确定框616中,计算设备可以确定失败者计算元件是否是任务窃取或请求的获胜者计算设备。类似于在框506中确定计算元件是否是获胜者计算元件,计算设备可以将获胜者标识符与在确定框616中用于窃取或请求任务的信号的发布者的计算元件标识符进行比较。在计算元件标识符和获胜者标识符之间匹配的比较结果可以表示请求方计算元件是任务获胜者计算元件。在计算元件标识符和获胜者标识符之间不匹配的比较结果可以表示请求方计算元件是任务失败者计算元件。

响应于确定出失败者计算元件是任务获胜者计算元件(即,确定框616=“是”),计算设备可以执行窃取的或接收到的任务。

响应于确定出失败者计算元件不是任务获胜者计算元件或是任务失败者计算元件(即,确定框616=“否”),在框618中,计算设备可以更新或调整任务失败者计算元件的任务窃取列表。

在框618中调整窃取列表可以考虑应用的行为。对于执行非递归任务的任务获胜者计算元件,任务获胜者计算元件可以被识别为已经完成其所有分配的用于执行应用的任务并从其它计算元件窃取任务,表示任务获胜者计算元件没有任何任务供窃取。例如,在具有非递归任务的应用中,一旦计算元件结束了初始分配的任务,计算元件将通过窃取或请求其它任务而开始查找其它任务。因此,如果计算元件正竞争任务,则其已经结束了其初始分配的任务并不具有要窃取或给出的任何任务。可以修改窃取列表以从窃取列表移除任务获胜者计算元件,或者对窃取列表重新排序以表示任务获胜者计算元件是针对任务检查的最后一个计算元件。

对于执行递归任务的任务获胜者计算元件,任务获胜者计算元件可以被识别为可能繁衍其它任务来执行递归任务的迭代。例如,在具有递归任务的应用中,一旦计算元件结束了初始分配的任务,则计算元件将通过窃取或请求其它任务开始查找其它任务。因此,如果计算元件正竞争任务,则其已经结束了其初始分配的任务,但是如果分配了其它递归任务则可以生成更多的任务以用于窃取或给出。可以对窃取列表重新排序以表示任务获胜者计算元件是针对任务检查的第一个计算元件。

各个实施例(包括但不限于以上结合图1-6讨论的实施例)可以实现于多种计算系统中,其可以包括适于与图7示出的各个实施例一起使用的示例性移动计算设备。移动计算设备700可以包括耦合到触摸屏控制器704和内部存储器706的处理器702。处理器702可以是一个或多个多核集成电路,其被指定用于通用或专用处理任务。内部存储器706可以是易失性或非易失性存储器,并且还可以是安全的和/或加密存储器,或者不安全的和/或未加密存储器,或其任意组合。可以利用的存储器类型的例子包括但不限于ddr、lpddr、gddr、wideio、ram、sram、dram、p-ram、r-ram、m-ram、stt-ram、以及嵌入式动态随机存取存储器(dram)。触摸屏控制器704和处理器702也可以耦合到触摸屏面板712上,例如,电阻感知触摸屏、电容感知触摸屏、红外感知触摸屏等。另外,计算设备700的显示器不需要具有触摸屏能力。

移动计算设备700可以具有一个或多个无线信号收发机708(例如,peanut、bluetooth、zigbee、wi-fi、rf无线电)和天线710,用于发送和接收通信,其彼此耦合和/或与处理器702耦合。收发机708和天线710可以与上述电路一起使用,以实现各种无线传输协议栈和接口。移动计算设备700可以包括蜂窝网络无线调制解调器芯片716,其使能经由蜂窝网络的通信并耦合到处理器。

移动计算设备700可以包括与处理器702耦合的外围设备连接接口718。外围设备连接接口718可以单独地配置为接受一种类型的连接,或者可以配置为接受公共的或私有的各种类型的物理和通信连接,例如,usb、firewire、thunderbolt或pcie。外围设备连接接口718还可以耦合到类似配置的外围设备连接端口(未示出)。

移动计算设备700还可以包括扬声器714用于提供音频输出。移动计算设备700还可以包括壳体720,其由塑料、金属或材料的组合构成,用于容纳本文讨论的所有或一些部件。移动计算设备700可以包括耦合到处理器702的电源722,例如,一次性或可再充电电池。可再充电电池还可以耦合到外围设备连接端口,以从在移动计算设备700外部的源接收充电电流。移动计算设备700还可以包括物理按钮724,用于接收用户输入。移动计算设备700还可以包括电源按钮726,用于打开或关闭移动计算设备700。

各个实施例(包括但不限于以上结合图1-6讨论的实施例)可以实现于多种计算系统中,其可以包括多种移动计算设备,例如如图8所示的膝上型计算机800。许多膝上型计算机包括触摸板触摸表面817,其用作计算机的指向设备,并因此可以接收拖拽、滚动和轻击手势,类似于在装备有触摸屏显示器及以上描述的计算设备上实现的那些。膝上型计算机800通常包括处理器811,其耦合到易失性存储器812和大容量非易失性存储器,例如闪存的磁盘驱动813。另外,计算机800可以具有一个或多个天线808,用于发送和接收连接到无线数据链路的电磁辐射;和/或耦合到处理器811的蜂窝电话收发机816。计算机800还可以包括耦合到处理器811的软盘驱动814和压缩盘(cd)驱动815。在笔记本配置中,计算机壳体包括触摸板817、键盘818、以及显示器819,其全都耦合到处理器811。计算设备的其它配置可以包括(例如,经由通用串行总线(usb)输入)耦合到处理器的已知的计算机鼠标或轨迹球,其还可以结合各个实施例一起使用。

在可编程处理器上执行以执行各个实施例的操作的计算机程序代码或“程序代码”可以以高级编程语言书写,例如,c、c++、c#、smalltalk、java、javascript、visualbasic、结构化查询语言(例如,transact-sql)、perl、或各种其它编程语言。如在本申请中使用的存储于计算机可读存储介质上的程序代码或程序可以指代处理器可理解其格式的机器语言代码(例如,对象代码)。

上述方法描述和过程流程图仅被提供为说明性例子,并不旨在要求或暗示各个实施例的操作必须以呈现的次序执行。如本领域技术人员可理解的,在上述实施例中操作的次序可以以任意次序执行。例如“之后”、“然后”、“接着”等的词语并不旨在限制操作的次序;这些词语仅用于引导读者贯通方法描述。此外,用单数形式(例如,使用冠词“一(a)”、“一个(an)”或“该(the)”)对权利要求要素的任何引用并不解释为将所述要素限制为单数。

结合各个实施例描述的各个示例性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或其组合。为了清楚地表示硬件和软件之间的可交换性,上面对各种示例性的部件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本发明的保护范围。

用于执行本申请所述功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,可以实现或执行结合本申请所公开内容描述的各种示例性的逻辑、逻辑框图、模块和电路。通用处理器可以是微处理器,或者在替代例中,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp核心的结合,或者任何其它此种结构。替代地,一些操作或方法可以通过专用于给定功能的电路执行。

在一个或多个实施例中,所述功能可以用硬件、软件、固件或其任意组合来实现。如果使用软件实现,则可以将这些功能作为一个或多个指令或代码存储在非暂时性计算机可读介质中或者非暂时性处理器可读介质中。本申请公开的方法或算法的操作可以实现于处理器可执行软件模块中,其可以驻留在非暂时性计算机可读或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储介质可以是由计算机或处理器访问的任意存储介质。通过例子而非限制,这种非暂时性计算机可读或处理器可读介质可以包括ram、rom、eeprom、flash存储器、cd-rom或其它光盘存储、磁盘存储介质或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质。如本申请所使用的,磁盘和光盘包括压缩光盘(cd)、激光光盘、光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上面的组合也应当包括在非暂时性计算机可读和处理器可读介质的保护范围之内。另外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合驻留在非暂时性处理器可读介质和/或计算机可读介质上,其可以并入到计算机程序产品中。

提供所公开的实施例的以上描述用于使本领域的任何技术人员能够实现或使用本发明。对于本领域技术人员来说,对这些实施例的各种修改都是显而易见的,并且本申请定义的总体原理也可以在不脱离权利要求的保护范围的情况下应用于其它实施例。因此,本公开内容并不旨在限于本申请给出的实施例,而是被给予与后续权利要求和本申请公开的原理和新颖特征一致的最广范围。

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