用于异构并行结构的细粒度功率优化的制作方法

文档序号:17850569发布日期:2019-06-11 22:09阅读:165来源:国知局

本申请要求享受2016年8月12日提交的、标题为“fine-grainedpoweroptimizationforheterogeneousparallelconstructs”的美国临时申请no.62/374,165的优先权,故以引用方式将其全部内容并入本文。



背景技术:

异构计算可以用于将计算工作分解成分布在多个异构处理设备上执行的多个工作组成部分,以便减少计算工作的处理时间和功耗。例如,异构计算可以用于将计算工作分布在一个或多个中央处理单元(cpu)、一个或多个图形处理单元(gpu)、一个或多个数字信号处理器(dsp)、以及其它类型的处理器。

在异构并行计算结构中,控制器将工作组成部分分配到并行运行的两个或更多异构处理设备,以在计算工作结束时达到共同的同步点。一些异构处理设备可以在比其他异构处理设备更少的时间内完成相同的工作量。共同的同步点导致在其它异构处理设备之前完成其分配的工作组成部分的任何异构处理设备进行等待,直到所有其它异构处理设备都完成执行的剩余工作组成部分为止。

通常,异构处理设备可以具有不同的功率状态设定。例如,异构处理设备可以具有通过在执行期间允许最大功率电平而使性能最大化的性能功率状态设定。再举一个例子,异构处理设备可以具有通过将执行期间的功耗限制到最小功率电平来节省功率的功率状态设定。再举一个例子,异构处理设备可以具有在执行期间使性能与功率比最大化的有效功率状态设定。

在当前的异构并行计算结构中,控制器能够将接收分布式工作组成部分的所有异构处理设备都设置为共同的功率状态设定。例如,控制器可以将工作组成部分所分配到的所有异构处理设备,都设置为有效的功率状态设定。但是,向所有异构处理设备应用相同的功率状态设定,可能造成一个或多个异构处理设备在其它异构处理设备之前完成分配的工作组成部分,其导致能量浪费和/或更高的热报警机率。



技术实现要素:

各个实施例提供了在异构并行计算结构中的每个异构处理设备的基础上实现联合目标(例如,功率和性能目标)的方法、设备和非临时性处理器可读存储介质。各个实施例可以在每个异构处理设备的基础上分配用于异构处理设备的功率状态。各个实施例可以在每个异构处理设备的基础上,实现用于异构处理设备的功率状态的动态调整。

各个实施例包括管理异构并行计算的方法、以及实现该方法的计算设备。各个实施例可以包括:由控制器确定用于计算性工作结构的联合目标;由控制器至少部分地基于该联合目标,在针对所述计算性工作结构的运行时间,确定结构功率状态,其中该结构功率状态指示用于多个异构处理设备中的每个异构处理设备的选定的功率状态;由控制器向所述多个异构处理设备中的每个异构处理设备,分配在所述结构功率状态中指示的、用于所述多个异构处理设备中的该相应异构处理设备的所选定的功率状态,以执行工作组成部分。

此外,一些实施例还可以包括:在控制器中接收所述计算性工作结构,其中,该计算性工作结构可以包括将被分配以供所述多个异构处理设备执行的工作组成部分和用于所述多个异构处理设备中的每个异构处理设备的工作分配指示。

在一些实施例中,至少部分地基于联合目标来确定所述结构功率状态,可以包括:由控制器至少部分地基于与所述计算性工作结构相关联的计算历史、第一预测函数、以及第二预测函数,在针对所述计算性工作结构的运行时间,确定两个或更多个可能的结构功率状态,其中所述可能的结构功率状态可以指示用于所述多个异构处理设备中的每个异构处理设备的预测的功率状态。在这些实施例中,至少部分地基于联合目标来确定所述结构功率状态,还可以包括:至少部分地基于所述联合目标,确定所述两个或更多可能的结构功率状态中的每个结构功率状态的效用;选择所述两个或更多个可能的结构功率状态中的与最大确定的效用相关联的结构功率状态,作为所述结构功率状态。在这些实施例中,所述第一预测函数可以计算性能提高,所述第二预测函数可以计算功率改善。

此外,一些实施例还可以包括:在所述计算性工作结构的所有工作组成部分都完成执行之前,由控制器针对所述多个异构处理设备中的完成了相应分配的工作组成部分的执行的任何异构处理设备,确定新选定的功率状态;在所述计算性工作结构的所有工作组成部分都完成执行之前,由控制器分配所述新选定的功率状态。

在一些实施例中,由控制器至少部分地基于所述联合目标来确定所述结构功率状态,可以包括:监测所述多个异构处理设备中的每个异构处理设备在一段时间间隔内执行所述计算性工作结构的进度;由控制器至少部分地基于第一预测函数、第二预测函数、以及所述多个异构处理设备中的每个异构处理设备在所述时间间隔内执行所述计算性工作结构的进度,确定两个或更多个可能的结构功率状态;由控制器至少部分地基于所述联合目标,确定所述两个或更多可能的结构功率状态中的每个结构功率状态的效用;由控制器选择所述两个或更多个可能的结构功率状态中的与最大确定的效用相关联的结构功率状态,作为所述结构功率状态。在这些实施例中,所述两个或更多个可能的结构功率状态还可以是基于:在执行所述计算性工作结构的所述多个异构处理设备中的最大剩余计算时间、以及在执行所述计算性工作结构的所述多个异构处理设备的剩余功耗的总和。在这些实施例中,所述第一预测函数可以计算剩余执行时间,所述第二预测函数可以计算预测的功耗。

在一些实施例中,所述联合目标可以是包括性能目标状态与功率目标状态之比的功率和性能目标。在一些实施例中,所述联合目标可以指示功率状态、热状态、电池状态、存储器性能状态、以及频率状态中的至少一个。在一些实施例中,所述计算性工作结构可以指示用于执行所述计算性工作结构的时间。

一些实施例还可以包括:由控制器防止向所述多个异构处理设备分配与所述计算性工作结构无关的新工作组成部分,直到所述计算性工作结构的所有工作组成部分都完成执行为止。

各个实施例可以包括具有控制器的计算设备,其中该控制器配置有处理器可执行指令以执行上面所概述的方法的操作。各个实施例可以包括:具有用于执行上面所概述的方法的功能的单元的计算设备。各个实施例可以包括其上存储有处理器可执行指令的非临时性处理器可读介质,其中所述处理器可执行指令被配置为使计算设备的控制器执行上面所概述的方法的操作。

附图说明

被并入本文并且构成本说明书一部分的附图,描绘了示例性实施例,并且连同上面给出的概括描述以及下面给出的详细描述一起来解释各个实施例的特征。

图1是描绘适合于实现一个实施例的计算设备的组件框图。

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

图3a到图3c是示出适合于实现各个实施例的异构并行计算系统的三个例子的组件框图。

图4是根据一个实施例,示出一种用于异构并行计算的方法的处理流程图。

图5是根据一个实施例,示出一种用于至少部分地基于联合目标,确定结构功率状态的方法的处理流程图。

图6是根据一个实施例,示出用于至少部分地基于联合目标,确定结构功率状态的另一种方法的处理流程图。

图7是根据一个实施例,示出一种用于异构并行计算的方法的处理流程图。

图8是示出适合于结合各个实施例使用的示例性移动计算设备的组件框图。

图9是示出适合于结合各个实施例使用的示例性移动计算设备的组件框图。

图10是描绘适合于结合各个实施例使用的示例性服务器的组件框图。

具体实施方式

现在参照附图来详细地描述各个实施例和实现。在可以的地方,贯穿附图使用相同的附图标记来指代相同或者类似的部件。对于特定示例和实现的引用只是用于说明目的,而不是旨在限制本公开内容或者权利要求的保护范围。

本文可互换地使用术语“计算设备”和“移动计算设备”来指代下面中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(pda)、膝上型计算机、平板计算机、可转换膝上型计算机/平板设备(2合1计算机)、智能本、超级本、上网本、掌上计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、移动游戏控制台、无线游戏控制器、以及包括存储器和可编程处理器的类似个人电子设备。此外,术语“计算设备”还可以指代包括以下的静止计算设备:个人计算机、桌面型计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院电脑和游戏控制台。

各个实施例提供了在异构并行计算结构中的每个异构处理设备的基础上实现联合目标(例如,功率和性能目标)的方法、设备和非临时性处理器可读存储介质。如本文所使用的,术语“联合目标”和“多个联合目标”指代将两个或更多目标相互关联的目标,例如功率目标、性能目标、热目标等等中的任何两个或多个。虽然本文通常结合性能目标和功率目标来讨论联合目标,但这些目标只不过是示例性目标,联合目标不一定需要包括性能目标或功率目标,或者仅限于两个目标。例如,联合目标可以涉及性能目标和热目标、功率目标和热目标、热目标和另一种类型目标、性能目标和另一种类型目标、功率目标和另一种类型目标等等。

各个实施例可以在每个异构处理设备的基础上分配用于异构处理设备的功率状态。各个实施例可以在每个异构处理设备的基础上,实现用于异构处理设备的功率状态的动态调整。异构处理设备可以位于相同的芯片上,例如,位于处理器的不同内核上。异构处理设备可以位于相同的设备(例如,计算设备的cpu和gpu)中。异构处理设备可以位于不同的设备中,例如,利用消息传递接口(mpi)分布式环境来联网在一起的不同计算设备的cpu。在各个实施例中,从通用调度控制器接收计算性工作结构的结构控制器,可以执行对选定的功率状态的分配。

在各个实施例中,通用调度控制器可以定义计算性工作结构。在各个实施例中,可以将计算性工作结构分割成一些工作组成部分,并且可以将这些工作组成部分分配到多个异构处理设备来执行。如本文所使用的,术语“计算性工作结构”可以指代根据下面的要求相互有关的一个或多个工作组成部分的集合:1)在完成所有工作组成部分之前,计算性工作结构不能被认为是完成的;和/或2)执行工作组成部分的任何异构处理设备不能被分配与该计算性工作结构无关的新的工作组成部分,直到该计算性工作结构的所有工作组成部分都完成执行为止。因此,在计算性工作结构中,针对该计算性工作结构发起的所有并行工作线程或内核,必须在该计算性工作结构完成之前完成。用此方式,最慢执行的工作组成部分可以指定(dictate)总的计算性工作结构执行时间。另外,在计算性工作结构中,运行该计算性工作结构的工作线程或内核的异构处理设备可能不可用于运行与该计算性工作结构无关的工作线程或内核,直到该计算性工作结构在所有分配的异构处理设备之中都完成为止。具体而言,结构控制器可以阻止无关的工作线程或内核的执行,以确保在没有来自无关工作线程或内核的执行的干扰情况下,可靠地实现该计算性工作结构的联合目标。

在各个实施例中,通用调度控制器可以选择将使用哪些异构处理设备来执行工作组成部分。在各个实施例中,通用调度控制器可以确定所选定的多个异构处理设备之间的工作分配,并且可以在计算性工作结构中指示该工作分配。例如,计算性工作结构可以指示将要分割到所选定的多个异构处理设备的工作组成部分的百分数(例如,cpu分配20%、gpu分配30%等等),以作为对工作分配的指示。再举一个例子,计算性工作结构可以将该计算性工作结构的特定工作组成部分映射到所选定的多个异构处理设备中的特定一个,以作为对工作分配的指示。在各个实施例中,计算性工作结构可以指示用于执行该计算性工作结构的时间。在各个实施例中,通用调度控制器可以向结构控制器发送计算性工作结构,例如,用于指示多个异构处理设备来执行工作组成部分、工作分配指示、和/或执行该计算性工作结构的指示的时间的计算性工作结构,并且结构控制器可以接收该计算性工作结构。

在各个实施例中,计算性工作结构可以与用于控制工作组成部分的执行的功率和性能目标相关联。为计算性工作结构建立联合目标(或多个目标)(例如,功率目标和性能目标(或多个目标))的方式,可以在各个实施例中进行变化。在一些实施例中,用于计算性工作结构的联合目标(或多个目标)(如,功率和性能目标)对于计算性工作结构可能是不变的,或者可以随着计算性工作结构的每次迭代而改变。在一些实施例中,诸如功率和性能目标之类的联合目标可以是预定的设置,例如,存储在结构控制器可用的存储器中的设置、硬编码成由结构控制器执行的软件的设置等等。在一些实施例中,联合目标可以是设备的用户确定的动态设置。在一些实施例中,联合目标可以是设备的用户部分地设置和部分地预先确定的混合设置。在各个实施例中,诸如功率和性能目标之类的联合目标可以指示:用于计算性工作结构的功率状态、性能状态、热状态、电池状态、存储器性能状态、以及频率状态目标中的一个或多个。在各个实施例中,结构控制器可以在针对所述计算性工作结构的运行时间,基于一种或多种各种因素(例如,该计算性工作结构的属性、异构处理设备的属性等等)来挑选用于计算性工作结构的联合目标(例如,功率和性能目标)。

在各个实施例中,用于计算性工作结构的联合目标可以是两个状态的比率,例如,性能状态与功率状态之比。联合目标可以是两个值之比,例如,“x:y”。例如,诸如“x”的第一项可以表示授权针对第二项(如,“y”)进行交换的性能提高的百分比,其以百分比计算。举一个特定的例子,联合目标比率“20:30”可以表明计算性工作结构可以接受30%功率损失来获得20%性能提升的平衡,或者反之亦然。在各个实施例中,可以在联合目标中包括另外的目标/状态,可以针对每个另外状态的比率,增加另外的值。这些另外的目标/状态的示例包括热状态、电池状态、存储器性能状态、以及频率状态中的一个或多个。例如,指示性能状态、功率状态、以及热状态的联合目标可以是三个值之比,例如,“x:y:z”的形式。

在各个实施例中,可以对诸如功率和性能目标之类的联合目标进行裁剪,以便通过调整比率的值来实现不同的功率目标。在各个实施例中,用户可以指定当前某些目标/状态不感兴趣,故可以从设备的功率状态的确定中扣除这些不感兴趣的目标/状态。例如,不管功率而使性能最大化的目标,可以在联合目标中表达成x:*,其中x指示性能状态,*指示不感兴趣的另一种目标/状态(例如,功率状态)。

在各个实施例中,在针对所述计算性工作结构的运行时间,结构控制器可以至少部分地基于联合目标(例如,功率和性能目标)来确定结构功率状态。例如,在结构控制器上运行的应用程序接口(api),可以至少部分地基于功率和性能目标来确定结构功率状态。在各个实施例中,结构功率状态可以指示多个异构处理设备中的每个异构处理设备的选定功率状态。在各个实施例中,可以向异构处理设备分配结构功率状态中所指示的它们相应的选定功率状态,以执行它们相应的工作组成部分。用此方式,每一个执行其相应的工作组成部分的异构处理设备,可以被单独地设置到其自己的相应选定的功率状态,使得计算性工作结构的总体执行满足联合目标(例如,功率和性能目标)。

在一些实施例中,可以通过主动预测来确定结构功率状态。该结构功率状态可以是基于来自上一次运行该计算性工作结构的信息。由于一些计算性工作结构重复地运行,因此结构控制器可以跟踪计算性工作结构的每次调用,并生成与该计算性工作结构相关联的计算历史。例如,计算历史可以跟踪该计算性工作结构的每次调用的结构功率状态、执行时间和功耗。在当前针对所述计算性工作结构的运行时间,结构控制器可以基于一个或多个预测函数和计算历史,来确定用于该计算性工作结构的一个或多个可能的结构功率状态。例如,基于用于计算性能提高的第一预测函数、用于计算功率改善的第二预测函数、以及计算历史,结构控制器可以确定两个或更多个可能的结构功率状态。在各个实施例中,所述一个或多个预测函数可以是任何类型的函数,例如,线性函数、非线性函数、机器学习函数等等。结构控制器可以基于联合目标(例如,联合功率和性能目标)来确定每一个确定的可能结构功率状态的效用,并且选择具有最大确定效用的可能功率结构作为结构功率状态,作为用于执行当前计算性工作结构的结构功率状态。

在一些实施例中,可以通过进度监测来确定结构功率状态。可以通过监测执行进度,在每次执行计算性工作结构期间不断地调整结构功率状态。结构控制器可以监测每一个异构处理设备在一段时间间隔内执行计算性工作结构的进度。基于每一个异构处理设备的进度,结构控制器可以在当前功率状态配置下,线性地推断(extrapolate)每个异构处理设备的剩余计算时间和剩余功耗。

结构控制器可以基于一个或多个预测函数和每个异构处理设备的进度,确定用于计算性工作结构的一个或多个可能的结构功率状态。例如,基于用于计算剩余执行时间的第一预测函数、用于计算预测剩余功耗的第二预测函数、以及每个异构处理设备在该时间间隔的进度,结构控制器可以确定两个或更多个可能的结构功率状态。所述两个或更多个可能的结构功率状态可以通过整体剩余执行时间和剩余功耗来控制,其中整体剩余执行时间是最慢异构处理设备的最大剩余执行时间,剩余功耗是异构处理设备的功耗的总和。在各个实施例中,所述一个或多个预测函数可以是任何类型的函数,例如,线性函数、非线性函数、机器学习函数等等。

结构控制器可以基于联合目标(例如,功率和性能目标),确定每一个确定的可能结构功率状态的效用,并且选择具有最大确定效用的可能功率结构作为用于执行当前计算性工作结构的结构功率状态。

图1示出了适合于结合各个实施例使用的包括计算设备10的系统。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储内存接口20的片上系统(soc)12。该计算设备10还可以包括诸如有线或无线调制解调器之类的通信组件22、存储内存24、用于建立无线通信链路的天线26。处理器14可以包括各种各样的处理设备(例如,多个处理器内核)中的任何一种。

本文使用术语“片上系统”(soc)指代一组相互连接的电子电路,其通常包括但不限于:处理设备、存储器和通信接口。处理设备可以包括各种不同类型的处理器14和处理器内核,例如,通用处理器、中央处理单元(cpu)、数字信号处理器(dsp)、图形处理单元(gpu)、加速处理单元(apu)、辅助处理器、单核处理器和多核处理器。此外,处理设备还可以体现其它硬件和硬件组合,例如,现场可编程门阵列(fpga)、专用集成电路(asci)、其它可编程逻辑器件、分离门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置,使得集成电路的部件位于单片的半导体材料(例如,硅)上。

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的数据、和/或处理器14产生的中间处理数据和/或处理器可执行代码指令、以及临时地存储以便未来快速访问而无需存储在非易失性存储器中的数据。

存储器16可以被配置为至少临时地存储从另一个存储器设备(例如,另一个存储器16或存储内存24)装载到存储器16,以便处理器14的一个或多个进行访问的数据和处理器可执行代码。可以响应于处理器14对于某个功能的执行,对用于装载到存储器16的数据或处理器可执行代码进行装载。响应于某个功能的执行,将数据或处理器可执行代码装载到存储器16,可以源自于不成功或者未命中的针对存储器16的内存访问请求(由于所请求的数据或处理器可执行代码不位于存储器16中)。响应于未命中,可以进行针对另一个存储器16或存储内存24的内存访问请求,以便将所请求的数据或处理器可执行代码从另一个存储器16或存储内存24装载到存储器设备16中。响应于某个功能的执行,将数据或处理器可执行代码装载到存储器16,可以源自于针对另一个存储器16或存储内存的内存访问请求,可以将数据或处理器可执行代码装载到存储器16中以便稍后访问。

存储内存接口20和存储内存24可以一致地工作,以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。可以非常类似于存储器16的实施例,对存储内存24进行配置,其中,存储内存24可以存储用于处理器14中的一个或多个进行访问的数据或者处理器可执行代码。在计算设备10的电源被关闭之后,存储内存24(其是非易失性的)可以保持该信息。当电源被再次打开,计算设备10重新启动时,计算设备10可获得存储内存24上存储的该信息。存储内存接口20可以控制针对存储内存24的访问,允许处理器14从存储内存24读取数据和向存储内存24写入数据。

可以对计算设备10的组件中的一些或全部进行不同地排列和/或组合,同时仍然服务必要的功能。此外,计算设备10并不限于这些组件中的每一个,在计算设备10的各种配置中可以包括每一个组件的多个实例。

图2示出了适合于实现一个实施例的多核处理器14。多核处理器14可以具有多个同构或者异构的处理器内核200、201、202、203。处理器内核200、201、202、203可以是同构的,其在于:单一处理器14的处理器内核200、201、202、203可以被配置为用于相同目的,具有相同或类似的性能特性。例如,处理器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只是提供成一个例子,其决不意味着将各个实施例限制于四核处理器系统。与本文所示出和描述的四个处理器内核200、201、202、203相比,计算设备10、soc12、或多核处理器14可以各自地或者组合地包括更少或者更多的内核。

图3a、3b和图3c示出了异构并行计算系统300a到300c的示例性实施例。在各个实施例中,异构并行计算系统300a到300c可以包括中央控制器架构、分布式控制器架构、或者中央和分布式控制器架构的组合。在各个实施例中,中央和分布式控制器架构可以包括彼此之间进行通信的一个或多个通用调度控制器304a、305b、305c、305d与一个或多个结构控制器304a、304b、304c、304d。在各个实施例中,中央和分布式控制器架构中的任何一个,可以包括成soc(例如,图1的soc12)或者处理设备(例如,图1和图2的处理器14)的集成硬件组件、计算设备(例如,图1的计算设备10)的单独硬件组件、或者可以由处理设备执行的程序组件(例如,软件或固件)。

图3a到图3c中所示出的示例性异构并行计算系统300a、300b、300c可以是异构处理设备302a、302b、302c,它们可以包括本文所描述的通用或专用处理设备中的任何一个(例如,图1和图2的处理器14),异构处理设备302a、302b、302c中的至少一个可以与其它异构处理设备302a、302b、302c进行不同地配置。例如,异构处理设备302a可以是cpu,而其它异构处理设备302b、302c可以是诸如gpu、dsp和/或apu之类的加速器。另一个示例可以包括相同类型的异构处理设备302a、302b、302c,例如,具有各种配置的多cpu,其包括不同的指令集架构、管道、工作频率等等。

在各个实施例中(例如,图3a和图3c中所示出的例子),集中式通用调度控制器305a可以通信地连接到集中式结构控制器304a。集中式通用调度控制器305a可以被配置为定义计算性工作结构。集中式通用调度控制器305a可以被配置为选择将用于执行工作组成部分的异构处理设备302a、302b、302c。例如,集中式通用调度控制器305a可以选择或者分配异构处理设备302a、302b、302c中的一个或多个执行计算性工作结构的工作组成部分。用此方式,集中式通用调度控制器305a可以指定只使用异构处理设备302a、302b、302c中的所选定的一个或多个,来执行计算性工作结构的工作组成部分。在各个实施例中,集中式通用调度控制器305a可以被配置为提供各个计算性工作结构之间的负载平衡,并且可以选择异构处理设备302a、302b、和/或302c中的一个或多个来满足一个或多个负载平衡目标。

在各个实施例中,集中式通用调度控制器305a可以被配置为:确定被选定为执行计算性工作结构的工作组成部分的多个异构处理设备302a、302b、和/或302c之间的工作分配,并且可以在计算性工作结构中指示该工作分配。例如,计算性工作结构可以指示将分割在所选定的多个异构处理设备302a、302b、和/或302c之中的工作组成部分的百分数(例如,向302a分配40%、向302b分配25%、并且向302c分配35%),以作为对工作分配的指示。再举一个例子,计算性工作结构可以将该计算性工作结构的特定工作组成部分映射到所选定的多个异构处理设备302a、302b、和/或302c中的特定一个,以作为对工作分配的指示。在各个实施例中,集中式通用调度控制器305a可以被配置为确定用于执行计算性工作结构的时间,并且该计算性工作结构可以指示用于执行该计算性工作结构的时间。

在各个实施例中,集中式通用调度控制器305a可以向集中式结构控制器304a发送计算性工作结构,例如,用于指示多个异构处理设备302a、302b、和/或302c来执行工作组成部分、和/或工作分配指示的计算性工作结构,并且集中式结构控制器304a可以接收该计算性工作结构。

在各个实施例中(例如,图3a和图3c中所示出的例子),集中式结构控制器304a可以通信地连接到所述多个异构处理设备302a、302b、302c。集中式结构控制器304a可以被配置为分配选定的功率状态、以及用于由异构处理设备302a、302b、302c中的任何一个执行的工作组成部分。集中式结构控制器304a可以被配置为至少部分地基于联合目标(例如,联合功率和性能目标)来确定结构功率状态。集中式结构控制器304a可以通过主动预测和/或异构处理设备302a、302b、302c的进度监测,来确定结构功率状态。

图3a中所示出的示例性异构并行计算系统300a可以将集中式通用调度控制器305a和/或集中式控制器304a包括成多个异构处理设备302a、302b、302c中的一个(在该例子中,异构处理设备302a)的合并的硬件部件。图3c中所示出的示例性异构并行计算系统300c可以将集中式通用调度控制器305a和/或集中式控制器304a包括成soc的合并的硬件部分或者计算设备的单独硬件部件。

在各个实施例中(例如,图3b中所示出的例子),分布式通用调度控制器305b、305c、305d和/或分布式结构控制器304b、304c、304d可以通信地连接到分布式通用调度控制器305b、305c、305d和/或结构控制器304b、304c、304d中的另一个。在各个实施例中,分布式通用调度控制器305b、305c、305d中的一个或多个和/或分布式结构控制器304b、304c、304d中的一个或多个,可以通信地连接到集中式控制器304a。此外,分布式结构控制器304b、304c、304d还可以通信地连接到相关联的异构处理设备302a、302b、302c。

分布式通用调度控制器305b、305c、305d可以被配置为定义计算性工作结构。分布式通用调度控制器305b、305c、305d可以被配置为选择将用于执行工作组成部分的异构处理设备302a、302b、302c。例如,分布式通用调度控制器305b、305c、305d可以选择或者分配异构处理设备302a、302b、302c中的一个或多个执行计算性工作结构的工作组成部分。用此方式,分布式通用调度控制器305b、305c、305d可以指定只使用异构处理设备302a、302b、302c中的所选定的一个或多个,来执行计算性工作结构的工作组成部分。在各个实施例中,分布式通用调度控制器305b、305c、305d可以被配置为提供各个计算性工作结构之间的负载平衡,并且可以选择异构处理设备302a、302b和/或302c中的一个或多个来满足一个或多个负载平衡目标。

在各个实施例中,分布式通用调度控制器305b、305c、305d可以被配置为:确定被选定为执行计算性工作结构的工作组成部分的多个异构处理设备302a、302b和/或302c之间的工作分配,并且可以在计算性工作结构中指示该工作分配。例如,计算性工作结构可以指示将分割在所选定的多个异构处理设备302a、302b、和/或302c之中的工作组成部分的百分数(例如,向302a分配40%、向302b分配25%、并且向302c分配35%),以作为对工作分配的指示。再举一个例子,计算性工作结构可以将该计算性工作结构的特定工作组成部分映射到所选定的多个异构处理设备302a、302b、和/或302c中的特定一个,以作为对工作分配的指示。在各个实施例中,分布式通用调度控制器305b、305c、305d可以被配置为确定用于执行计算性工作结构的时间,计算性工作结构可以指示用于执行该计算性工作结构的时间。

在各个实施例中,分布式通用调度控制器305b、305c、305d可以向分布式结构控制器304b、304c、304d发送计算性工作结构,例如,用于指示多个异构处理设备302a、302b、和/或302c来执行工作组成部分、和/或工作分配指示的计算性工作结构,并且分布式结构控制器304b、304c、304d可以接收该计算性工作结构。

分布式结构控制器304b、304c、304d可以被配置为分配选定的功率状态、以及用于由异构处理设备302a、302b、302c中的任何一个经由它们相关联的分布式结构控制器304b、304c、304d来执行的工作组成部分。分布式结构控制器304b、304c、304d可以被配置为至少部分地基于联合目标(例如,联合功率和性能目标)来确定结构功率状态。分布式结构控制器304b、304c、304d可以通过主动预测和/或异构处理设备302a、302b、302c的进度监测(经由它们的相关联的分布式结构控制器304b、304c、304d),来确定结构功率状态。

图3b中所示出的示例性异构并行计算系统300b可以将分布式通用调度控制器305b、305c、305d和/或分布式结构控制器304b、304c、304d包括成多个异构处理设备302a、302b、302c的合并的硬件部件。在该例子中,分布式通用调度控制器305b和分布式结构控制器304b可以与异构处理设备302a相关联,分布式通用调度控制器305c和分布式结构控制器304c可以与异构处理设备302b相关联,并且分布式通用调度控制器305d和分布式结构控制器304d可以与异构处理设备302c相关联。

控制器和处理设备的数量和组合并不限于图3a到图3c中所示出的例子。可以使用任意数量和组合的控制器和处理设备,来配置异构并行计算系统,其包括集中式和/或分布式控制器的任意组合。此外,这些组合还可以包括:作为集成硬件部件、单独硬件部件、和/或程序组件的控制器的组合。

图4根据一个实施例,示出了一种用于异构并行计算的方法400。可以利用在处理器(例如,图1和图2中的处理器14)中执行的软件、利用通用硬件、利用专用硬件(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)、或者利用处理器和专用硬件的组合(比如,在包括其它单个组件的异构并行计算系统中执行软件的处理器),在计算设备中实现方法400。为了涵盖在各个实施例中启用的替代配置,本文将实现方法400的硬件称为“控制器”。

在方框401中,控制器可以接收计算性工作结构,其中该计算性工作结构包括将被分配以供多个异构处理设备执行的工作组成部分和用于所述多个异构处理设备中的每个异构处理设备的工作分配指示。例如,包括有分配给多个异构处理设备执行的工作组成部分和用于所述多个异构处理设备中的每个异构处理设备的工作分配指示的计算性工作结构,可以是从通用调度控制器(例如,图3a到图3c中的通用调度控制器305a、305b、305c、305d)发送的,并由结构控制器(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)接收的。在各个实施例中,计算性工作结构可以是根据下面的要求相互有关的工作组成部分的集合:1)在分别地完成所有工作组成部分之前,计算性工作结构不能被认为是完成的;2)执行工作组成部分的任何异构处理设备不能被分配与该计算性工作结构无关的新的工作组成部分,直到该计算性工作结构的所有工作组成部分都完成执行为止。因此,针对该计算性工作结构发起的所有并行工作线程或内核,必须在该计算性工作结构完成之前完成。用此方式,最慢执行的工作组成部分可以指定总的计算性工作结构执行时间。在各个实施例中,将用于执行该工作结构的所述多个异构处理设备可以是预先选定的,例如由通用调度控制器(例如,图3a到图3c中的通用调度控制器305a、305b、305c、305d)预先选定,这些预先定的异构处理设备可以是在工作结构中指示的多个异构处理设备。在各个实施例中,在所选定的多个异构处理设备之间的工作分配可以是预先确定的,例如由通用调度控制器(例如,图3a到图3c中的通用调度控制器305a、305b、305c、305d)预先确定,该预先确定的工作分配可以在计算性工作结构中进行指示。例如,计算性工作结构可以指示将要分割到所选定的多个异构处理设备的工作组成部分的百分数(例如,cpu分配20%、gpu分配30%等等),以作为对工作分配的指示。再举一个例子,计算性工作结构可以将该计算性工作结构的特定工作组成部分映射到所选定的多个异构处理设备中的特定一个,以作为对工作分配的指示。在各个实施例中,计算性工作结构可以指示用于执行该计算性工作结构的在方框402中,控制器可以确定用于该计算性工作结构的联合目标。例如,控制器可以针对于包括有将被分配以供多个异构处理设备执行的工作组成部分的计算性工作结构,确定联合功率和性能目标。用于计算性工作结构的联合目标对于计算性工作结构可能是不变的,或者可以随着计算性工作结构的每次迭代而改变。在一些实施例中,联合目标可以是预定的设置,例如,存储在该控制器可用的存储器中的设置、硬编码成由该控制器执行的软件的设置等等。在这些实施例中,确定联合目标可以包括:装载这些预定的设置。在一些实施例中,联合目标可以是设备的用户确定的动态设置。在这些实施例中,确定联合目标可以包括:从计算设备的用户接收该设置指示。在一些实施例中,联合目标可以是设备的用户部分地设置和部分地预先确定的混合设置。

在各个实施例中,诸如联合功率和性能目标之类的联合目标,可以指示:用于计算性工作结构的功率状态、性能状态、热状态、电池状态、存储器性能状态、以及频率状态目标中的一个或多个。在各个实施例中,控制器可以在针对所述计算性工作结构的运行时间,基于一种或多种各种因素(例如,该计算性工作结构的属性、异构处理设备的属性等等)来挑选用于结构的联合目标(例如,功率和性能目标)。

在各个实施例中,联合目标可以是性能状态与功率状态之比。例如,联合目标可以是两个值之比,比如“x:y”。对于联合功率和性能目标的例子而言,诸如“x”的第一项可以表示授权针对第二项(如,“y”)进行交换的性能提高的百分比,其以百分比计算。举一个特定的例子,比率“20:30”可以表明计算性工作结构可以接受30%功率损失来获得20%性能提升的平衡。在各个实施例中,可以在联合目标中包括另外的目标/状态(例如,热状态、电池状态、存储器性能状态、以及频率状态),可以针对每个另外目标/状态的比率,增加另外的值。例如,指示性能状态、功率状态和热状态的联合目标可以是三个值之比,例如,“x:y:z”。在各个实施例中,可以对诸如功率和性能目标之类的联合目标进行裁剪,以便通过调整比率的值来实现不同的功率目标。在各个实施例中,用户可以指定当前某些目标/状态不感兴趣,故可以从设备的功率状态的确定中扣除这些不感兴趣的目标/状态。例如,不管功率而使性能最大化的目标,可以在联合目标中表达成x:*,其中x指示性能状态,*指示不感兴趣的另一种目标/状态(例如,功率状态)。

在方框404中,控制器可以至少部分地基于联合目标,确定结构功率状态(g)。例如,控制器可以至少部分地基于功率和性能目标,确定结构功率状态(g)。在各个实施例中,可以在针对所述计算性工作结构的运行时间,执行用于确定结构功率状态(g)的方框404的操作。在各个实施例中,结构功率状态(g)可以指示多个异构处理设备中的每个异构处理设备的选定功率状态(g)。例如,结构功率状态(g)可以将用于cpu的选定功率状态(gcpu)和用于gpu的选定功率状态(ggpu),指示为数组“g=[gcpu,ggpu]”。再举一个例子,结构功率状态(g)可以将用于多个异构处理设备(d1、d2、…、dn)的选定功率状态指示为数组“g=[g1,g2,…gn]”。在各个实施例中,控制器可以通过主动预测和/或异构处理设备的进度监测,来确定结构功率状态(g)。

在方框406中,控制器可以向所述多个异构处理设备中的每个异构处理设备,分配结构功率状态中所指示的针对所述多个异构处理设备中的相应异构处理设备的选定功率状态,以执行工作组成部分。用此方式,可以在每个异构处理设备的基础上,为每一个异构处理设备分配选定的功率状态,计算性工作结构的总体执行满足联合目标(例如,联合功率和性能目标)。

在方框408中,控制器可以防止向所述多个异构处理设备分配与该计算性工作结构无关的新工作组成部分,直到该计算性工作结构的所有工作组成部分都完成执行为止。用此方式,控制器可以防止运行该计算性工作结构的工作线程或者内核的异构处理设备变得可用于运行与该计算性工作结构无关的工作线程或内核,直到该计算性工作结构在所有分配的异构处理设备中都完成为止。

图5根据一个实施例,示出一种用于至少部分地基于联合目标(例如,联合功率和性能目标),确定结构功率状态的方法500。方法500可以实现结构功率状态(g)的主动预测。可以利用在处理器(例如,图1和图2中的处理器14)中执行的软件、利用通用硬件、利用专用硬件(例如,图3a-3c中的结构控制器304a、304b、304c、304d)、或者利用处理器和专用硬件的组合(比如,在包括其它单个组件的异构并行计算系统中执行软件的处理器),在计算设备中实现方法500。为了涵盖在各个实施例中启用的替代配置,本文将实现方法500的硬件称为“控制器”。

方法500的操作实现图4的方法400的方框404中所执行的操作的一些实施例。因此,参见图1到图5,控制器可以响应于确定计算性工作结构(其包括待分配以便在方法400的方框402中,由多个异构处理设备执行的工作组成部分)的联合目标(例如,联合功率和性能目标),开始执行方法500的操作。

在方框502中,控制器可以至少部分地基于与计算性工作结构相关联的计算历史(h)、第一预测函数(α)、以及第二预测函数(β),确定两个或更多个可能的结构功率状态(g’)。在各个实施例中,可以在针对所述计算性工作结构的运行时间,执行用于确定所述两个或更多个可能的结构功率状态(g’)的方框502的操作。

由于一些计算性工作结构重复地运行,因此控制器可以跟踪计算性工作结构的每次调用,并生成与该计算性工作结构相关联的计算历史(h)。例如,计算历史可以跟踪该计算性工作结构的每次调用的结构功率状态(g)、执行时间(t)、以及功耗(p)。例如,结构功率状态(g)可以将用于执行该工作结构的cpu的功率状态(gcpu)和gpu的功率状态(ggpu),指示为数组“g=[gcpu,ggpu]”,执行时间(t)可以将用于执行该工作结构的cpu的执行时间(tcpu)和gpu的执行时间(tgpu)指示为数组“t=[tcpu,tgpu]”,并且功耗(p)可以将用于执行该工作结构的cpu的功耗(pcpu)和gpu的功耗(pgpu)指示为数组“p=[pcpu,pgpu]”。计算历史(h)可以跟踪该工作结构的重复调用,例如,利用数组“h={(g1,t1,p1),(g2,t2,p2),…(gn,tn,pn)}”。计算历史(h)可以包括所述多个异构处理设备的当前功率状态、执行时间、以及功耗。

第一预测函数(α)和第二预测函数(β)可以是任何类型的函数,例如,线性函数、非线性函数、机器学习函数等等。例如,第一预测函数(α)可以基于当前功率状态(gcpu)、当前执行时间(tcpu)、以及可能的功率状态(g’cpu)的输入,来计算cpu的性能提高(t’cpu),如下所示:

αcpu(gcputcpug’cpu)→t’cpu.

第二预测函数(β)可以计算功率改善。例如,第二预测函数(β)可以基于当前功率状态(gcpu)、当前功耗(pcpu)、以及可能的功率状态(g’cpu)的输入,来计算cpu的功率改善(p’cpu),如下所示:

βcpu(gcpupcpug’cpu)→p’cpu.

可以对异构处理设备中的每一个所对应的可能功率状态进行组合,以形成可能的结构功率状态(g’)。

在方框504中,控制器可以至少部分地基于联合目标(例如,联合功率和性能目标),确定所述两个或更多个可能的结构功率状态(g’)中的每一个的效用。对于联合功率和性能目标的例子而言,可以基于性能提高(perfimprovement)、功率改善(powerimprovement)、以及功率和性能目标(x:y)来发现可能的结构功率状态(g’)对应的效用(u),如下所示:

在方框506中,控制器选择所述两个或更多个可能的结构功率状态中的与最大确定的效用相关联的结构功率状态,作为结构功率状态。响应于选择了结构功率状态,控制器可以返回到执行方法400的方框406的操作(图4)。

图6根据一个实施例,示出一种用于至少部分地基于联合目标(例如,联合功率和性能目标),确定结构功率状态的方法600。方法600可以实现结构功率状态(g)的基于进度监控的控制。可以利用在处理器(例如,图1和图2中的处理器14)中执行的软件、利用通用硬件、利用专用硬件(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)、或者利用处理器和专用硬件的组合(比如,在包括其它单个组件的异构并行计算系统中执行软件的处理器),在计算设备中实现方法600。为了涵盖在各个实施例中启用的替代配置,本文将实现方法600的硬件称为“控制器”。

方法600的操作实现图4的方法400的方框404中所执行的操作的一些实施例。因此,参见图1到图6,控制器可以响应于确定计算性工作结构(其包括待分配以便在方法400的方框402中,由多个异构处理设备执行的工作组成部分)的联合目标(例如,联合功率和性能目标),开始执行方法600的操作。

在方框602中,控制器可以监测所述多个异构处理设备中的每个异构处理设备在一段时间间隔(δt)内执行该计算性工作结构的进度。在各个实施例中,控制器可以监测每一个异构处理设备在一段时间间隔(δt)内执行该计算性工作结构中包括的全部工作组成部分(m)的进度(m)。基于每一个异构处理设备的进度(m),控制器可以在当前功率状态配置下,线性地推断每个异构处理设备的剩余计算时间(td)和剩余功耗(pd)。例如,可以如下所示地来确定在第一进度时间间隔(m1)之后的剩余计算时间(td):

在方框604中,控制器可以至少部分地基于第一预测函数(α)、第二预测函数(β)、以及所述多个异构处理设备中的每个异构处理设备在时间间隔(δt)内执行该计算性工作结构的进度,确定两个或更多个可能的结构功率状态(g’)。在各个实施例中,可以在针对所述计算性工作结构的运行时间,执行用于确定所述两个或更多个可能的结构功率状态(g’)的方框602的操作。

第一预测函数(α)和第二预测函数(β)可以是任何类型的函数,例如,线性函数、非线性函数、机器学习函数等等。例如,第一预测函数(α)可以计算设备在可能的功率状态(g’d)时的预测的剩余执行时间(t’d),如下所示:

α(gd,td,g’d)→t’d.

例如,第二预测函数(β)可以计算设备在可能的功率状态(g’d)时的预测的剩余功耗(p’d),如下所示:

β(gd,pd,g’d)→p’d.

所述两个或更多个可能的结构功率状态(g’)可以通过整体的剩余执行时间(tnew)来控制,其中,该整体的剩余执行时间(tnew)可以是最慢异构处理设备的最大剩余执行时间(t’d)。例如,可以针对多个异构处理设备(d0、d1、…、dn)来计算该整体的剩余执行时间(tnew),如下所示:

tnew=max{t’0,t’1,…t’n}.

所述两个或更多个可能的结构功率状态(g’)可以通过剩余的功耗(pnew)来控制,其中,该剩余的功耗(pnew)可以是这些异构处理设备的剩余功耗的总和。例如,可以针对多个异构处理设备(d0、d1、…、dn)来计算剩余的功耗(pnew),如下所示:

在方框504中,控制器可以至少部分地基于联合目标(x:y),确定所述两个或更多个可能的结构功率状态(g’)中的每一个的效用。对于联合功率和性能目标的例子而言,可以发现可能的结构功率状态(g’)对应的效用(u),如下所示:

其中,

在方框506中,在联合功率和性能目标的例子中,控制器可以选择所述两个或更多个可能的结构功率状态中的与最大确定的效用相关联的结构功率状态,作为结构功率状态。响应于选择了结构功率状态,控制器可以返回到执行方法400的方框406的操作(图4)。

图7根据一个实施例,示出一种用于异构并行计算的方法700。可以利用在处理器(例如,图1和图2中的处理器14)中执行的软件、利用通用硬件、利用专用硬件(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)、或者利用处理器和专用硬件的组合(比如,在包括其它单个组件的异构并行计算系统中执行软件的处理器),在计算设备中实现方法700。为了涵盖在各个实施例中启用的替代配置,本文将实现方法700的硬件称为“控制器”。

参见图1到图7,方法700可以开始于:控制器执行参照方法400、500、和600所描述的类似编号方框401、402、404、406、和408的操作。

在方框702中,控制器可以在计算性工作结构的所有工作组成部分都完成执行之前,针对所述多个异构处理设备中的完成了相应分配的工作组成部分的执行的任何异构处理设备,来确定新选定的功率状态。例如,在其它异构处理设备都完成执行该计算性工作结构之前,结构控制器可以针对完成了所有分配的工作组成部分的异构处理设备,来确定新选定的功率状态。新选定的功率状态可以实现另外的功率、能量、和/或热节省,还可以实现满足该计算性工作结构的联合目标。

在方框704中,在计算性工作结构的所有工作组成部分都完成执行之前,控制器可以分配新选定的功率状态。用此方式,可以向提前于其它异构处理设备完成了执行的异构处理设备,分配新选定的功率状态,而其它异构处理设备则完成所述计算性工作结构的任何剩余工作组成部分的执行。

可以在包括移动计算设备的各种各样的计算系统中实现各个实施例(其包括但不限于上面参照图1到图7所描述的实施例),在图8中示出了适合于结合各个实施例使用的移动计算设备的例子。移动计算设备800可以包括耦合到触摸屏控制器804和内部存储器806的处理器802。处理器802可以是被设计为实现通用或特定处理任务的一个或多个多核集成电路。内部存储器806可以是易失性存储器或非易失性存储器,还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。可以利用的存储器类型的例子,包括但不限于:ddr、lpddr、gddr、wideio、ram、sram、dram、p-ram、r-ram、m-ram、stt-ram和嵌入式dram。触摸屏控制器804和处理器802还可以耦合到触摸屏面板812,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感应触摸屏等等。另外,计算设备800的显示器并不需要具有触摸屏能力。

此外,移动计算设备800还可以包括耦合到处理器802、并被配置为执行本文的各个实施例的功能和操作的一个或多个硬件部件830。在一些实施例中,该硬件部件830可以是结构控制器(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)。在一些实施例中,该硬件部件830可以结合处理器802进行操作,以执行处理器802不执行的各个实施例的功能和操作。

移动计算设备800可以具有用于发送和接收通信的一个或多个无线信号收发机808(例如,peanut、bluetooth、zigbee、wi-fi、rf无线电装置)和天线810,它们彼此之间相耦合和/或耦合到处理器802。收发机808和天线810可以结合上面所提及的电路来使用,以实现各种无线传输协议栈和接口。移动计算设备800可以包括蜂窝网络无线调制解调器芯片816,后者经由蜂窝网络来实现通信并耦合到处理器。

移动计算设备800可以包括耦合到处理器802的外围设备连接接口818。外围设备连接接口818可以被单独地配置为接受一种类型的连接,或者被配置为接受多种类型的物理和通信连接、共同或专有连接(例如,通用串行总线(usb)、火线、thunderbolt或pcie)。此外,外围设备连接接口818还可以耦合到类似配置的外围设备连接端口(没有示出)。

此外,移动计算设备800还可以包括用于提供音频输出的扬声器814。此外,移动计算设备800还可以包括使用塑料、金属、或材料的组合所构成的壳体820,以包含本文所描述的所有部件或者一些部件。移动计算设备800可以包括耦合到处理器802的电源822,例如一次性或可充电电池。此外,该可充电电池还可以耦合到外围设备连接端口,以便从移动计算设备800之外的源接收充电电流。此外,移动计算设备800还可以包括用于接收用户输入的物理按键824。此外,移动计算设备800还可以包括用于打开和关闭移动计算设备800的电源按键826。

各个实施例(其包括但不限于上面参照图1-7所描述的实施例)可以实现在包括膝上型计算机900的各种各样的计算系统中,在图9中示出了这些计算系统的例子。很多膝上型计算机包括触摸板触摸接口917,后者服务成该计算机的指向设备,故可以接收拖动、滚动和滑动手势(其类似于上面所描述的在装备有触摸屏显示器的计算设备上所实现的那些手势)。通常,膝上型计算机900包括耦合到易失性存储器912和大容量非易失性存储器(例如,闪存的硬盘驱动器913)的处理器911。

此外,计算机900还可以包括耦合到处理器911、并被配置为执行本文的各个实施例的功能和操作的一个或多个硬件部件930。在一些实施例中,该硬件部件930可以是结构控制器(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)。在一些实施例中,该硬件部件930可以结合处理器802进行操作,以执行处理器911不执行的各个实施例的功能和操作。

另外,计算机900可以具有用于发送和接收电磁辐射的一付或多付天线908,这些天线908可以连接到无线数据链路和/或耦合到处理器911的蜂窝电话收发机916。此外,计算机900还可以包括耦合到处理器911的软盘驱动器914和压缩光盘(cd)驱动器915。在笔记本配置中,计算机壳体包括全部都耦合到处理器911的触摸板917、键盘918和显示器919。该计算设备的其它配置可以包括(例如,经由usb输入)耦合到处理器的计算机鼠标或者跟踪球,如公众所知道的,这些部件也可以结合各个实施例来使用。

各个实施例(其包括但不限于上面参照图1-7所描述的实施例)还可以实现在固定计算系统中(例如,各种各样的商业可用的服务器中的任何一种)。图10描绘了一种示例性服务器1000。通常,这种服务器1000包括耦合到易失性存储器1002和大容量非易失性存储器(例如,磁盘驱动器1004)的一个或多个多核处理器组件1001。如图10中所示,可以通过将多核处理器组件1001插入到组装的架中,来增加到服务器1000中。此外,服务器1000还可以包括耦合到处理器1001的软盘驱动器、压缩光盘(cd)或数字通用光盘(dvd)光盘驱动器1006。此外,服务器1000还可以包括耦合到处理器1001、并被配置为执行本文的各个实施例的功能和操作的一个或多个硬件部件1030。在一些实施例中,该硬件部件1030可以是结构控制器(例如,图3a到图3c中的结构控制器304a、304b、304c、304d)。在一些实施例中,该硬件部件1030可以结合处理器1001进行操作,以执行处理器1001不执行的各个实施例的功能和操作。

此外,服务器1000还可以包括耦合到多核处理器组件1001的网络接入端口1003,以便与网络1005(例如,耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(如,cdma、tdma、gsm、pcs、3g、4g、lte或者任何其它类型的蜂窝数据网络))建立网络接口连接。

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

上述的方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个实施例的步骤。如本领域普通技术人员所应当理解的,可以以任何顺序来执行上述的实施例中的操作顺序。诸如“其后”、“转而”、“接着”等等之类的词语,并不旨在限制这些操作的顺序;这些词语仅仅只是用于引导读者遍历该方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一个(a)”、“某个(an)”或者“该(the)”),不应被解释为将该元素限制为单数形式。

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

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

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

为使本领域任何普通技术人员能够实现或者使用各个实施例,上面围绕所公开的实施例进行了描述。对于本领域普通技术人员来说,对这些实施例的各种修改是显而易见的,并且,本文定义的总体原理也可以在不脱离本发明的保护范围的基础上应用于一些实施例。因此,本公开内容并不限于本文所示出的示例,而是与所附权利要求书和本文公开的原理和新颖性特征的最广范围相一致。

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