用于在第一和第二处理电路间切换工作量的数据处理装置和方法

文档序号:6359787阅读:154来源:国知局
专利名称:用于在第一和第二处理电路间切换工作量的数据处理装置和方法
技术领域
本发明涉及用于在第一和第二处理电路之间切换工作量的数据处理装置和方法,并且更具体地涉及用于执行这种切换以提高数据处理装置的能量效率的技术。
背景技术
在当今的数据处理系统中,诸如游戏操作之类的高强度任务和诸如MP3播放之类的低强度任务之间的性能需求差异可能超过100:1的比率。对于要被用于所有任务的一个处理器而言,该处理器将必须是高性能的,但是处理器微结构的公理是高性能的处理器比低性能处理器的能量效率低。公知可以利用诸如动态电压和频率缩放(DVFS)或功率门控之类的技术为处理器提供一定范围的性能水平和相应的能量消耗特性,从而提高处理器层的能量效率。然而,这些技术普遍变得不足以允许单个处理器承接具有如此分散性能需求 的任务。因此,已经考虑使用多核体系结构来提供用于执行这些不同任务的能量高效系统。虽然具有多个处理器核心的系统被用于提高性能已有一段时间了,这些系统通过允许不同的核心并行地工作于不同的任务上来提高吞吐量,但是关于这些系统如何被用于提高能量效率的分析还是相对近期的发展方向。V Kumar 等的文章“Towards Better Performance Per Watt in VirtualEnvironments on Asymmetric Single-ISA Multi-Core Systems”, ACM SIGOPS OperatingSystems Review,第43卷,第3期(2009年7月)讨论了不对称单一指令集体系结构(ASISA)多核系统,该系统由面向相同的指令集体系结构(ISA)但在特征、复杂度、功耗和性能方面不同的若干个核心构成。在这篇文章中,虚拟工作量的属性被研究以了解这些工作量应该怎样在ASISA系统上被调度,从而提高性能和能量消耗。这篇文章认定某些任务更适用于高频率/性能的微体系结构(通常是计算密集型任务),而其它任务则更适合于较低频率/性能的微体系结构并且作为副效应将消耗更少的能量(通常是输入/输出密集型任务)。虽然这些研究揭示了 ASISA系统可以怎样被用于以能量高效的方式运行各种任务,但是仍然需要提供一种用于将各个任务调度到最合适的处理器的机制,并且这种调度管理通常会给操作系统带来很大的负担。R Kumar 等的文章“Single-ISA Heterogeneous Multi-Core Architectures: ThePotential for Processor Power Reduction,,,Proceedings of the 36thInternationalSymposium of Microarchitecture (MICR0-36’03)讨论了一种多核体系结构,其中所有核心执行相同的指令集但是具有不同的功能和性能水平。在运行时,系统软件对应用的资源需求进行评估,并选择可以最佳地满足这些需求同时又最小化能量消耗的核心。如这篇文章的第2部分中所论述的,在应用执行期间,操作系统软件尝试将应用与不同的核心匹配,试图满足定义的目标功能,例如特定的性能要求。在2. 3部分中,提到会有切换核心的开销,需要对切换的粒度进行限制。接下来论述了具体示例,其中如果操作系统确定切换已就绪,则对新核心加电,触发缓存刷新(cache flush)以将所有脏的缓存数据保存到共享的存储器结构中,然后发信号告知新核心在预定义的操作系统入口点处启动。然后,旧核心可以被关闭电源,同时新核心从存储器中获取所需要的数据。这种方法在2. 3部分中被描述为允许通过操作系统将应用在核心之间切换。这篇文章的其余部分还论述了在目标是减少能量消耗的情况下,这种切换可以怎样在多核设置内被动态执行。虽然上述文章讨论了单一 ISA异构多核体系结构实现能量消耗减少的可能,但是它仍然要求操作系统被提供足够的功能以实现针对各个应用做出的调度决定。当在具有不同体系结构特征的处理器实例之间切换时,操作系统的角色会被变得更加复杂。在此,应当注意该文章中所考虑的Alpha核心EV4到EV8不是完全ISA兼容的,例如在2. 2部分的第五段中所论述的。此外,这篇文章不能解决在核心之间切换应用时会涉及到很大开销的问题,这个 问题可能很大程度上减少了从这种切换中所获得的好处。

发明内容
从一个方面来看,本发明提供了一种数据处理装置,该数据处理装置包括以下部件用于执行数据处理操作的第一处理电路;用于执行数据处理操作的第二处理电路;所述第一处理电路在体系结构上与所述第二处理电路兼容,以使得要由所述数据处理装置执行的工作量可以在所述第一处理电路或所述第二处理电路上被执行,所述工作量包括至少一个应用和用于运行所述至少一个应用的至少一个操作系统;所述第一处理电路在微体系结构上不同于所述第二处理电路,以使得所述第一处理电路的性能不同于所述第二处理电路的性能;所述第一和第二处理电路被配置以使得在任意时间点处所述工作量被所述第一处理电路和所述第二处理电路中的一个执行;切换控制器,该切换控制器响应于转移激励执行移交操作以将对所述工作量的执行从源处理电路转移到目标处理电路,所述源处理电路为所述第一处理电路和所述第二处理电路中的一个,且所述目标处理电路为所述第一处理电路和所述第二处理电路中的另外一个;所述切换控制器被安排为在所述移交操作期间(i)使得所述源处理电路使其当前体系结构状态可用于所述目标处理电路,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于所述目标处理电路成功接管对来自所述源处理电路的工作量的执行所必需的状态;并且(ii)将预定的处理器专用配置信息对所述至少一个操作系统屏蔽起来,以使得所述工作量的转移对所述至少一个操作系统而言是透明的。根据本发明,数据处理装置具有体系结构上彼此兼容但是微体系结构不同的第一和第二处理电路。由于第一和第二处理电路的体系结构兼容,包括一个或多个应用以及用于运行这些一个或多个应用的至少一个操作系统的工作量可以在第一和第二处理电路之间被移动。此外,因为第一和第二处理电路在微体系结构上是不同的,所以第一和第二处理电路的性能特性(以及能量消耗特性)不同。根据本发明,在任意时间点处,工作量被第一和第二处理电路中的一个执行,并且切换控制器响应于转移激励执行移交操作以在处理电路之间转移对工作量的执行。一旦接收到转移激励,这两个处理电路中的当前正在执行工作量的那个处理电路被认为是源处理电路,并且另一个被认为是目标处理电路。负责执行移交操作的切换控制器使得源处理电路的当前体系结构状态对目标处理电路而言是可得到的,并且将预定的处理器专用配置信息对构成工作量的一部分的所述至少一个操作系统屏蔽起来,以使得工作量的转移对于所述操作系统而言是透明的。通过使用本发明,可以将整个工作量从一个处理电路转移到另一个处理电路,同时对操作系统屏蔽所述转移,并且同时确保使得在移交操作被起动时不在共享存储器中的必要的体系结构状态可用于目标处理电路,以使得目标处理电路可以成功地接管对工作量的执行。通过将整个工作量视作在任意特定时间点处都仅在第一和第二处理电路中的一个上被执行的宏观实体,本发明的技术使得工作量以一种对操作系统透明的方式很好地在第一和第二处理电路之间切换,同时确保目标处理电路具有使其能够成功接管对工作量的执行所必需的所有信息。这种方法解决了由于使用操作系统来管理针对特定处理电路的应用的安排而产生的前述问题,并且已被发现能够实现很大程度的能耗节省。在一个实施例中,数据处理装置还包括电力控制电路,用于独立地控制被提供给所述第一处理电路和所述第二处理电路的电力;其中在所述转移激励发生之前,所述目标处理电路处于省电状态,并且在所述移交操作期间,所述电力控制电路在所述目标处理电路接管对所述工作量的执行之前使得所述目标处理电路退出所述省电状态。通过使用这种电力控制电路,可以减少当前不在执行工作量的任一处理电路所消耗的能量。在一个实施例中,在移交操作之后,电力控制电路使得源处理电路进入省电状态。这可以在移交操作之后立即发生,或者在替代实施例中,源处理电路可以被安排为只是在经过了某个预定时间段之后才进入省电状态,这可允许源处理电路仍保留的数据被使得以更大能量效率和更高性能的方式可用于目标处理电路。不管切换以何种方式在不同处理电路之间进行,现有技术中还存在的另一个问题是如何以一种快速且高能量效率的方式转移该切换成功所需要的信息。具体而言,前述当前体系结构状态需要被使得对目标处理电路可用。可以实现这一目的的一种方式是作为移交操作的一部分,将当前体系结构状态的全部写入共享存储器中,以使得该当前体系结构状态随后可以由目标处理电路从共享存储器中读取。这里所使用的术语“共享存储器”指的是可以被第一处理电路和第二处理电路两者直接访问的存储器,例如经由互连被耦接到第一和第二处理电路的主存储器。然而,在将当前体系结构状态的全部写入共享存储器时产生的问题是这个过程不仅花费非常多的时间,而且消耗很多能量,这可能相当大程度上抵消了通过执行切换所可能获得的好处。根据一个实施例,在转移操作期间,切换控制器使得源处理电路利用加速机制以使其当前体系结构状态可用于目标处理电路,而不需要目标处理电路参考共享存储器来获得当前体系结构状态。因此,根据这些实施例,一种机制被提供,其避免了为了使体系结构状态可用于目标处理电路而经由共享存储器路由该体系结构状态的要求。这不仅导致转移操作期间的性能提升,而且减少了与转移操作相关联的能量消耗。在一个实施例中,至少源电路具有相关联的缓存,数据处理装置还包括侦查控制电路,并且加速机制包括通过使用源电路的相关联缓存和侦查控制电路来将当前体系结构状态传送给目标处理电路。
根据该技术,源处理电路的本地缓存被用于存储必须使得可用于目标处理器的当前体系结构状态。然后,所述状态被标记为可共享的,这允许该状态被目标处理电路利用侦查控制电路进行侦查。因而,在这些实施例中,第一和第二处理电路被使得具有彼此一致的硬件缓存,这样减少了从源处理电路切换到目标处理电路中所涉及的时间量、能量和硬件
复杂度。在一个特定实施例中,加速机制是存储恢复机制,该机制使得源处理电路将其当前体系结构状态存储到其相关联的缓存中,并使得目标处理电路执行恢复操作,侦查控制电路经由所述恢复操作从源处理电路的相关联缓存中取回当前体系结构状态,并将所取回的当前体系结构状态提供给目标处理电路。这种存储/恢复机制提供了一种非常高效的技术,用于将体系结构状态存入源电路的本地缓存中并且供目标处理电路在之后获取所述状态。不管目标处理电路是否有其自己的相关联本地缓存,这种方法都可以被使用。无论何时针对体系结构的项的请求被侦查控制电路接收到,或者直接从目标处理电路接收到 或者在发生缓存缺失的情况下从目标处理电路的相关联缓存接收到,侦查控制电路都将确定所需要的体系结构状态项是否被存储在与源电路相关联的本地缓存中,并且从源电路的本地缓存中获取该数据以返回给目标处理电路(直接或者经由目标处理电路的相关联缓存(如果有的话))。在一个特定实施例中,目标处理电路有相关联的缓存,侦查控制电路所获得的被转移体系结构状态被存储在该缓存中供目标处理电路参考。然而,上述硬件缓存一致方法不是可用于提供上述加速机制的唯一技术。例如,在替代实施例中,该加速机制包括在源处理电路和目标处理电路之间的专用总线,源处理电路将其当前体系结构状态通过专用总线提供给目标处理电路。虽然这种方法通常比利用缓存一致方法有更高的硬件成本,但是它将提供一种更快速的执行切换的方式,这在某些实现方式中是有利的。切换控制器可以采用各种形式。但是,在一个实施例中切换控制器至少包括虚拟软件(virtualisation software),该虚拟软件从逻辑上将所述至少一个操作系统与第一处理电路和第二处理电路分隔开。公知利用虚拟机来允许应用利用要被执行的一组特定的本地指令被写到具有不同本地指令集的硬件上。这些应用在虚拟机环境中被执行,其中应用的指令对于虚拟机而言是本地的,但是虚拟机是通过在具有不同本地指令集的硬件上执行的软件来实现的。上述实施例的切换控制器所提供的虚拟软件可以被看作是以与虚拟机环境中的管理程序类似的方式工作的,因为它提供了工作量与下层硬件平台之间的隔离。在本发明的上下文中,虚拟软件提供了一种高效的机制,用于将工作量从一个处理电路转移到另一处理电路,同时对形成所述工作量的操作系统屏蔽处理器专用配置信息。转移激励可能因为各种原因而被生成。然而,在一个实施例中,转移激励的定时被选择以提高数据处理装置的能量效率。这可以用各种方式来实现。例如,处理电路的性能计数器可以被设置为对性能敏感事件进行计数(例如被执行指令的数目或者载入存储操作的数目)。与周期计数器或系统定时器耦接,这允许识别出高度计算密集型应用正在执行,这种应用可以通过切换到较高性能的处理电路被更好地服务,或者识别出指示可以在能量高效的处理电路上被更好地服务的I/o密集型应用的大量载入-存储操作等。另一种方法是应用被描述且标记为“大”、“小”或者“大/小”,从而操作系统可以与切换控制器接口以相应地移动工作量(这里,术语“大”指代较高性能的处理电路,而术语“小”指代较高能量效率的处理电路)。目标处理电路成功接管对来自源处理电路的工作量的执行所需要的体系结构状态可以采用各种形式。然而,在一个实施例中,该体系结构状态至少包括源处理电路的一个或多个专用寄存器的当前值,包括程序计数器值。除了程序计数器值以外,各种其它信息也可以被存储在专用寄存器内。例如,其它专用寄存器包括保存针对处理器模式、中断屏蔽、执行状态和标记的控制位的处理器状态寄存器(例如,ARM体系结构中的CPSR和SPSR)。其它专用寄存器包括保存改变数据字节排序、开关MMU、开关数据/指令缓存等的位的体系结构控件(ARM体系结构中的CP15系统控制寄存器)。CP15 中的其它专用寄存器存储异常地址和状态信息。在一个实施例中,体系结构状态还包括存储在源处理电路的体系结构寄存器文件中的当前值。本领域技术人员应当理解,体系结构寄存器文件包含在应用运行的同时所执行的指令将会引用的寄存器,那些寄存器保存用于计算的源操作数,并且提供那些计算的结果被存储的位置。在一个实施例中,第一处理电路和第二处理电路中的至少一个包括单个处理单兀。此外,在一个实施例中,第一处理电路和第二处理电路中的至少一个包括具有相同微体系结构的处理单元的集群。在一个特定实施例中,第一处理电路可以包括具有相同体系结构的处理单元的集群,而第二处理电路包括单个处理单元(具有与构成第一处理电路的集群中处理单元的微体系结构不同的微体系结构)。电力控制电路可以选择性地将第一和第二处理电路置于其中的省电状态可以采用各种形式。在一个实施例中,省电状态是以下状态中的一个断电状态、部分/全部数据保持状态、休眠状态或发呆状态。这些状态将可以被本领域技术人员很好地理解,因此这里将不进行详细论述。第一和第二处理电路可以按各种方式被安排为具有不同的微体系结构。在一个实施例中,第一处理电路和第二处理电路通过具有以下项中的至少一项而在微体系结构上是不同的不同的执行管线(pipeline)长度;或不同的执行资源。管线长度的不同通常导致工作频率的不同,进而对性能产生影响。类似地,执行资源的不同将对吞吐量以及性能产生影响。例如,具有更宽范围的执行资源的处理电路将使得在任意特定时间点处有更多的信息被处理,提高吞吐量。此外又或者,一个处理电路可以具有比另一处理电路更多的执行资源,例如更多的算术逻辑单元(ALU),这同样将提高吞吐量。作为不同执行资源的另一示例,高能量效率的处理电路可以被提供简单的顺序管线,而较高性能的处理电路可以被提供乱序超标量管线。当使用高性能处理电路(例如运行在GHz频率上)时可能产生的另一个问题是这些处理器接近并且有时候超过了它们被设计工作的热上限。用于解决这些问题的已知技术可以包括将处理电路置于低功率状态下以减少热输出,这可以包括时钟降频和/或电压减小以及可能甚至将处理电路完全关闭一段时间。然而,当采用本发明实施例的技术时,可以实现一种替代方法来避免超过热上限。具体而言,在一个实施例中,源处理电路比目标处理电路的性能更高,并且数据处理装置还包括热监控电路,用于监控所述源处理电路的热输出,并且用于在所述热输出达到预定水平时触发所述转移激励。根据这种技术,整个工作量可以从较高性能的处理电路被转移到较低性能的处理电路,之后将产生较少的热量,并且源处理电路将被允许冷却下来。因此,包含两个处理电路的封装系统可以在继续进行程序执行的同时冷却,尽管有较低的吞吐量。数据处理装置可以按各种方式被布置。然而,在一个实施例中,第一处理电路和第二处理电路位于单个集成电路内。从第二方面来看,本发明提供了一种数据处理装置,该数据处理装置包括以下部件用于执行数据处理操作的第一处理装置;用于执行数据处理操作的第二处理装置;所述第一处理装置在体系结构上与所述第二处理装置兼容,以使得要由所述数据处理装置执行的工作量可以在所述第一处理装置或所述第二处理装置上被执行,所述工作量包括至少一个应用和用于运行所述至少一个应用的至少一个操作系统;所述第一处理装置在微体系结构上不同于所述第二处理装置,以使得所述第一处理装置的性能不同于所述第二处理装置的性能;所述第一和第二处理装置被配置以使得在任意时间点处所述工作量被所述第一处理装置和所述第二处理装置中的一个执行;切换控制装置,该切换控制装置响应于转移 激励执行移交操作以将对所述工作量的执行从源处理装置转移到目标处理装置,所述源处理装置为所述第一处理装置和所述第二处理装置中的一个,且所述目标处理装置为所述第一处理装置和所述第二处理装置中的另外一个;所述切换控制装置在所述移交操作期间
(i)用于使得所述源处理装置使其当前体系结构状态可用于所述目标处理装置,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理装置之间共享的共享存储装置那里不可获得的并且对于所述目标处理装置成功接管对来自所述源处理装置的工作量的执行所必需的状态;并且(ii)用于将预定的处理器专用配置信息对所述至少一个操作系统屏蔽起来,以使得所述工作量的转移对所述至少一个操作系统而言是透明的。从第三方面来看,本发明提供了一种操作数据处理装置的方法,所述数据处理装置包括用于执行数据处理操作的第一处理电路和用于执行数据处理操作的第二处理电路,所述第一处理电路在体系结构上与所述第二处理电路兼容,以使得要由所述数据处理装置执行的工作量可以在所述第一处理电路或所述第二处理电路上被执行,所述工作量包括至少一个应用和用于运行所述至少一个应用的至少一个操作系统,并且所述第一处理电路在微体系结构上不同于所述第二处理电路,以使得所述第一处理电路的性能不同于所述第二处理电路的性能,所述方法包括以下步骤在任意时间点处在所述第一处理电路和所述第二处理电路中的一个上执行所述工作量;响应于转移激励执行移交操作以将对所述工作量的执行从源处理电路转移到目标处理电路,所述源处理电路为所述第一处理电路和所述第二处理电路中的一个,且所述目标处理电路为所述第一处理电路和所述第二处理电路中的另外一个;在所述移交操作期间(i)使得所述源处理电路使其当前体系结构状态可用于所述目标处理电路,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于所述目标处理电路成功接管对来自所述源处理电路的工作量的执行所必需的状态;并且(ii)将预定的处理器专用配置信息对所述至少一个操作系统屏蔽起来,以使得所述工作量的转移对所述至少一个操作系统而言是透明的。


下面将仅以示例的方式参考如附图中所示的本发明的实施例进一步描述本发明,在附图中图I是根据一个实施例的数据处理系统的框图;图2示意性地图示了根据一个实施例提供切换控制器(这里也被称为工作量转移控制器)以在逻辑上将由数据处理装置执行的工作量与在数据处理装置内被用于执行所述工作量的特定硬件平台分开;图3是示意性地图示了根据一个实施例的源处理器和目标处理器响应于切换激励以将工作量从源处理器转移到目标处理器而执行的步骤;图4A示意性地图示了在图3的保存操作期间将源处理电路的当前体系结构状态存入其相关联的缓存; 图4B示意性地图示了在图3的恢复操作期间利用侦查控制单元控制源处理电路的当前体系结构状态向目标处理电路的转移;图5图示了根据一个实施例的用于在转移操作期间提供加速机制以将源处理电路的当前体系结构状态转移给目标处理电路的替代结构;图6A到61示意性地图示了根据一个实施例的将工作量从源处理电路转移给目标处理电路所执行的步骤;图7是根据一个实施例的示出了能量效率随性能的变化曲线并且图示了在该曲线上的各个点处图I中所示的各个处理器核心如何被使用的图;图8A和SB分别示意性地图示了如在一个实施例中所使用的低性能处理器管线和高性能处理器管线;以及图9是示出了当对处理工作量的执行在低性能、高能量效率处理电路和高性能、低能量效率处理电路之间切换时数据处理系统所消耗的功率变化的图。
具体实施例方式图I是示意性地图示了根据一个实施例的数据处理系统的框图。如图I中所示,该系统包括两个在体系结构上兼容的处理电路实例(处理电路010和处理电路150),但是这两个不同的处理电路实例具有不同的微结构。具体而言,处理电路10被安排为与处理电路50相比以更高的性能进行操作,但是作为权衡,处理电路10将比处理电路50的能量效率低。关于微结构差异的示例将在下面参考图8A和SB进行更详细的描述。每个处理电路可以包括单个处理单元(这里也被称为处理器核心),或者这些处理电路实例中的至少一个本身可以包括具有相同微结构的处理单元的集群。在图I中所示的示例中,处理电路10包括体系结构和微结构都相同的两个处理器核心15,20。作为对比,处理电路50只包含单个处理器核心55。在以下描述中,处理器核心15,20将被称为“大”核心,而处理器核心55将被称为“小”核心,这是因为处理器核心15,20由于在设计时着重考虑性能所以通常比处理器核心55更复杂,而相比之下,处理器核心55由于在设计时着重考虑能量效率所以通常复杂度要低很多。在图I中,每个处理器核心15,20,55被假设分别具有他们自己的相关联的本地I级缓存25,30,60,这些缓存可以被布置为用于存储供相关联的核心引用的指令和数据的统一缓存,或者可以被布置为具有Harvard体系结构,提供不同的I级数据和I级指令缓存。虽然每个核心被显示为具有其自己的相关联的I级缓存,但这不是必须的,在替代实施例中,这些核心中的一个或多个核心可以没有本地缓存。在图I中所示的实施例中,处理电路10还包括在核心15与核心20之间共享的2级缓存35,侦查控制单元40被用于确保两个I级缓存25,30与2级缓存35之间的缓存一致性。在一个实施例中,2级缓存被布置为包含型缓存,因此被存储在任一 I级缓存25,30中的任意数据也都将存在于2级缓存35中。本领域技术人员将很清楚,侦查控制单元40的目的是确保各个缓存之间的缓存一致性,以使得可以确保任一核心15,20在发出访问请求时将总是访问到最新版本的数据。因此,仅作为示例,如果核心15发出针对不在相关联的I级缓存25中的数据的访问请求,则侦查控制单元40截获正在传输的对I级缓存25的 请求,并且参考I级缓存30和/或2级缓存35确定是否可以根据那些其它缓存中的一个的内容为访问请求提供服务。只有在数据不存在于任何缓存中的情况下,访问请求才经由互连70被传送给主存储器80,主存储器80是在处理电路10与处理电路50之间共享的存储器。设置在互连70内的侦查控制单元75按照与侦查控制单元40相类似的方式进行操作,但是在该示例中,用于保持设置在处理电路10内的缓存结构与设置在处理电路50内的缓存结构之间的一致性。在2级缓存35为包含型缓存的示例中,侦查控制单元保持处理电路10的2级缓存35与处理电路50的I级缓存60之间的硬件缓存一致性。但是,如果2级缓存35被布置为排他型2级缓存,则侦查控制单元75还将侦查保存在I级缓存25,30中的数据以确保处理电路10的缓存与处理电路50的缓存60之间的缓存一致性。根据一个实施例,在任意时间点处,将只有处理电路10和处理电路50中的一个在积极处理工作量。为了本申请的目的,所述工作量可以被认为包括至少一个应用和用于运行该至少一个应用的至少一个操作系统,例如在图2中用标号100所示意性示出的。在该示例中,两个应用105,110正在操作系统115的控制下运行,并且应用105,110和操作系统115 —起构成工作量100。这些应用可以被认为是存在于用户层,而操作系统存在于优先层(privileged level),并且总地来说由应用和操作系统所构成的工作量运行在硬件平台125 (代表硬件层视图)上。在任意时间点处,硬件平台将由处理电路10或者由处理电路50提供。如图I中所示,电力控制电路50被提供用于选择性地独立地向处理电路10和处理电路50提供电力。在从一个处理电路向另一处理电路转移工作量之前,通常只有处理电路中的一个是被充分供电的,即,当前正在执行工作量的那个处理电路(源处理电路),而另一处理电路(目标处理电路)通常处于省电状态。当确定工作量应当从一个处理电路被转移给另一处理电路时,在转移操作期间将有一段时间两个处理电路都处于加电状态,但是在转移操作之后的某个时间点处,工作量从其中被转移的源处理电路将被置于省电状态中。取决于实现方式,省电状态可以采用各种形式,因而例如可以是关闭电源状态、部分/全部数据保持状态、休眠状态或发呆状态中的一个。这些状态将可以被本领域技术人员很好地理解,因此这里将不进行详细论述。所述实施例的目的是根据工作量所需要的性能/能量水平在处理电路之间执行工作量的切换。因此,当工作量涉及执行一个或多个性能密集型任务(例如执行游戏应用)时,工作量可以在高性能处理电路10上被执行,或者利用大核心15,20中的一个或两者来执行。然而,作为对比,当工作量是仅仅执行低执行强度的任务(例如MP3播放)时,整个工作量可以被转移到处理电路50,从而得益于通过使用处理电路50而实现的能量效率。为了最优地利用这些切换功能,需要提供一种机制,允许切换以一种简单且高效的方式进行以使得转移工作量的动作不会过多地消耗能量到抵消了切换所带来的好处的程度,并且还确保切换过程足够快以使得其本身不会在很大程度上降低性能。在一个实施例中,这些好处至少部分地通过将处理电路10安排为与处理电路50在体系结构上兼容来获得。这确保了工作量可以从一个处理电路被转移到另一处理电路,同时确保正确的操作。作为最低要求,这种体系结构的兼容要求两个处理电路10和50共享相同的指令集体系结构。然而,在一个实施例中,这种体系结构的兼容还意味着更高的兼容要求以确保两个处理电路实例从编程者的角度看是相同的 。在一个实施例中,这包括使用相同的体系结构寄存器,以及存储操作系统在执行应用时所使用的数据的一个或多个专用寄存器。有了这种级别的体系结构兼容,就可以对操作系统115屏蔽工作量在处理电路之间的转移,以使得操作系统完全不知道工作量是在处理电路10上还是在处理电路50上被执行的。在一个实施例中,对从一个处理电路到另一处理电路的转移的处理由图2中所示的切换控制器120 (这里也被称为虚拟器并且在文中的其它地方还被称为工作量转移控制器)管理。切换控制器可以用硬件、固件和/或软件特征的混合来实现,但是在一个实施例中包括本质上类似于虚拟机中发现的管理程序软件的软件以使得用一种本地指令集编写的应用能够在采用不同本地指令集的硬件平台上被执行。由于两个处理电路10,50之间的体系结构兼容性,切换控制器120可以仅仅通过对操作系统屏蔽一个或多个预定的处理器专用配置信息项来对操作系统屏蔽所述转移。例如,处理器专用配置信息可以包括CP15处理器ID寄存器和CP15缓存类型寄存器的内容。在这样的实施例中,切换控制器然后只需要确保在转移被起动时尚不能从共享存储器80中获得的、源处理电路在转移时所保持的任意当前体系结构状态被使得可用于目标处理电路,以使得目标电路处于能够成功接管对工作量的执行的状况下。利用前述示例,这种体系结构状态通常将包括存储在源处理电路的体系结构寄存器文件中的当前值以及源处理电路的一个或多个专用寄存器的当前值。由于处理电路10,50之间的体系结构的兼容性,如果所述当前体系结构状态可以从源处理电路被传送给目标处理电路,则目标处理电路将处于成功接管对来自源处理电路的工作量的执行的状况下。虽然处理电路10,50之间的体系结构的兼容性便于整个工作量在这两个处理电路之间的转移,但是在一个实施例中,处理电路10,50在微体系结构上彼此不同,使得存在与这两个处理电路相关联的不同的性能特性以及能量消耗特性。如前所述,在一个实施例中,处理电路10是高性能、高能耗处理电路,而处理电路50是较低性能、较低能耗的处理电路。这两个处理电路可以在很多方面上具有彼此不同的微体系结构,但是通常具有不同的执行管线长度和/或不同的执行资源中的至少一个。管线长度的不同通常将导致操作频率的不同,进而将对性能产生影响。类似地,执行资源的不同将对吞吐量以及性能产生影响。因而,例如,处理电路10可以具有更宽范围的执行资源和/或更多的执行资源以提高吞吐量。此外,处理器核心15,20内的管线可以被安排为执行乱序超标量处理,而能量高效处理电路50内的更简单的核心55可以被安排为顺序管线。关于微体系结构差异的更多讨论将在后面参考图8A和8B给出。生成转移激励以使得切换控制器120起动移交操作将工作量从一个处理电路转移到另一处理电路可能因为很多种原因而被触发。例如,在一个实施例中,应用可以被描述和标记为“大”、“小”或者“大/小”,从而操作系统可以与切换控制器接口以相应地移动工作量。因此,利用这种方法,转移激励的生成可被映射到被执行的应用的特定组合,以确保当需要高性能时,工作量在高性能处理电路10上被执行,而当不需要高性能时,作为替代,能量高效处理电路50被使用。在其它实施例中,算法可以被执行以基于一个或多个输入动态地确定何时触发从一个处理电路到另一处理电路的工作量的转移。例如,处理电路的性能计数器可以被设置为对性能敏感事件进行计数(例如被执行指令的数目或者载入存储(load-store)操作的数目)。与周期计数器或系统定时器耦接,这允许识别出高度计算密集型应用正在执行,这种应用可以通过切换到较高性能的处理电路被更好地服务,或者识别出指示可以在能量高效的处理电路上被更好地服务的I/O密集型应用的大量载入-存储操作等。
作为转移激励可能被生成的另一示例,数据处理系统可以包括用于监控数据处理系统在操作期间的温度的一个或多个热传感器90。可能出现这样的情况,即现在的高性能处理电路(例如那些运行在GHz频率上的处理电路)有时会达到或者超过它们被指定工作的温度上限。利用这种热传感器90,当这些温度上限被达到时可以被检测到,并且在这种情况下,转移激励可以被生成以触发工作量向能量效率更高的处理电路转移,从而导致数据处理系统的整体冷却。因而,考虑图I的示例,其中处理电路10是高性能处理电路且处理电路50是消耗较少能量的较低性能的处理电路,当设备的温度上限被达到时将工作量从处理电路10转移到处理电路50将导致接下来设备的冷却,同时仍然允许进行连续的程序执行,尽管会有较低的吞吐量。虽然在图I中两个处理电路10,50被示出,但是应当理解上述实施例的技术也可以被应用于包括两个以上不同处理电路的系统,允许数据处理系统有更大范围的性能/能量水平的跨度。在这些实施例中,不同处理电路中的每一个将被安排为在体系结构上彼此兼容以允许整个工作量在处理电路之间的妥当转移,但是也可以在微体系结构上彼此不同以允许根据所需要的性能/能量水平在对那些处理电路的使用之间进行选择。图3是图示了在接收到转移激励之后工作量从源处理器被转移到目标处理器时在源处理器和目标处理器上执行的一系列步骤的流程图。这种转移激励可以经由系统固件接口由操作系统115或虚拟器120生成,导致在步骤200中源处理器(该处理器将不仅在运行工作量,并且在运行构成切换控制器120的至少一部分的虚拟器软件)检测到该切换激励。在步骤200中接收到转移激励(这里也被称为切换激励)将使得电力控制器65在目标处理器上起动加电和重置操作205。在该加电和重置操作之后,目标处理器将在步骤210中使其本地缓存无效,然后在步骤215中启动侦查。此时,目标处理器将用信号告知源处理器其已准备好进行工作量的转移,该信号使得源处理器在步骤225中执行保存状态操作。该保存状态操作将在后面参考图4A进行更详细的论述,但是在一个实施例中保存状态操作涉及源处理电路将其当前体系结构状态中任意在移交操作被起动时不能从共享存储器中获取且对于目标处理电路成功接管对工作量的执行而言必需的状态存储到其本地缓存中。
在保存状态操作225之后,切换状态信号将被发给目标处理器230,向目标处理器指示其现在应该开始侦查源处理器以获取所需要的体系结构状态。该过程通过恢复状态操作230进行,该恢复状态操作将在后面参考图4B进行更详细的论述,但是在一个实施例中,恢复状态操作涉及目标处理电路起动一系列访问,这些访问被在互连70内的侦查控制单元75截获,并且使得在源处理器的本地缓存中缓存的体系结构状态的拷贝被获取并返回给目标处理器。在步骤230之后,目标处理器就能够接管对工作量的执行了,因此在步骤235中常规操作开始。在一个实施例中,一旦在目标处理器上常规操作开始,源处理器的缓存就可以被清除了,如步骤250中所示,从而将任何脏数据都刷新到共享存储器80中,然后在步骤255中源处理器可以被关闭电源。然而,在一个实施例中,为了进一步提高目标处理器的效率,源处理器被安排为在一段时间内保持加电,该段时间在图3中被称为侦查时段。在这个时段中,源电路的缓存中的至少一个保持加电,以使得其内容可以被侦查控制电路75响应于 目标处理器所发布的访问请求进行侦查。在利用图3中所述的过程转移整个工作量之后,预期至少在最初的一段时间内(在该段时间之后目标处理器开始对工作量的执行),工作量的执行期间所需要的数据中的一些将保留在源处理器的缓存中。如果源处理器已经将其内容刷新到存储器中并且已经被关闭电源,则目标处理器在这些早期阶段将相对低效率地操作,这是因为在其本地缓存中可能有大量的缓存缺失,并且大量地从共享存储器中获取数据,导致在目标处理器的缓存“热起来”(即填充了目标处理器电路执行工作量所指定的操作所需要的数据值)的同时有很大的性能影响。然而,通过在侦查时段中保持源处理器的缓存加电,侦查控制电路75将能够参考源电路的缓存为大量的这些缓存缺失请求提供服务,与从共享存储器80中获取数据相比具有很大的性能优势。然而,这个性能优势只能期望在切换之后持续一段特定的时间,在切换之后源处理器的缓存的内容将变为无效。因此,在某个时间点处,侦查停止事件将在步骤245中被生成以禁止侦查,之后在步骤250中源处理器的缓存将被清除,然后在步骤255中源处理器将被关闭电源。关于侦查停止事件可能被生成的各种情境的讨论将在后面参考图6G进行更详细的论述。图4A示意性地图示了根据一个实施例在图3中的步骤225处执行的保存操作。具体而言,在一个实施例中,需要从源处理电路300被存储到本地缓存330中的体系结构状态由寄存器文件310的内容以及各个专用寄存器320的内容构成,所述寄存器文件310在数据处理操作的执行期间被算术逻辑单元(ALU) 305参考,所述各个专用寄存器320标识工作量所需要的各条信息以成功使工作量能被目标处理电路接管。专用寄存器320的内容将包括例如标识当前被执行的指令的程序计数器值以及各种其它信息。例如,其它专用寄存器包括保存针对处理器模式、中断屏蔽、执行状态和标记的控制位的处理器状态寄存器(例如,ARM体系结构中的CPSR和SPSR)。其它专用寄存器包括保存改变数据字节排序、开关MMU、开关数据/指令缓存等的位的体系结构控制(ARM体系结构中的CP15系统控制寄存器)。CP15中的其它专用寄存器存储异常地址和状态信息。如图4A中示意性图示的,源处理电路300通常还保存一些处理器专用配置信息315,但是这个信息不需要保存到缓存330中,这是因为其不可应用于目标处理电路。处理器专用配置信息315通常利用逻辑常量被硬编码在源处理电路300中,并且可以包括例如CP15处理器ID寄存器的内容(该内容对于每个处理电路而言是不同的)或者CP15缓存类型寄存器的内容(该内容将取决于缓存25,30,60的配置,例如指示缓存具有不同的缓存行长度)。当操作系统115需要一项处理器专用配置信息315时,那么除非处理器已经处于管理程序模式(hypervisor mode),否则到管理程序模式的执行陷讲(execution trap)发生。作为响应,在一个实施例中,虚拟器120可以指出被请求的信息的值,但是在另一实施例中将返回“虚拟”值。在处理器ID值的情况下,这个虚拟值可以被选择为对于“大”和“小”处理器来说是相同的,从而使得实际的硬件配置通过虚拟器120对操作系统115隐藏。如图4A中示意性图示的,在保存操作期间,寄存器文件310和专用寄存器320的内容被源处理电路存储到缓存330中以形成缓存拷贝335。然后,该缓存拷贝被标记为可共享的,这允许目标处理器经由侦查控制单元75侦查该状态。随后在目标处理器上执行的恢复操作在图4B中被示意性地示出。具体而言,目标
处理电路350 (该电路可以有或没有其自己的本地缓存)将发布针对体系结构状态的特定项的请求,该请求被侦查控制单元75截获。然后,侦查控制单元向源处理电路的本地缓存330发布侦查请求以确定所述体系结构状态的该项是否存在于源处理电路的缓存中。因为在图4A中所讨论的保存操作期间所进行的步骤,命中将在源处理电路的缓存330中被检测至IJ,导致被缓存的体系结构状态经由侦查控制单元75被返回给目标处理电路350。该过程可以被来回重复一直到体系结构状态的所有项都已经由对源处理电路的缓存的侦查被获取为止。与目标处理电路350相关的任意处理器专用配置信息通常被硬编码在目标处理电路350中,如前所述。因此,一旦恢复操作已完成,目标处理电路就拥有了使其能够成功接管对工作量的处理所需要的全部信息。此外,在一个实施例中,不管工作量100是在被“大”处理电路10还是被“小”处理电路50执行,虚拟器120都向操作系统115提供具有相同值的虚拟配置信息,所以“大”和“小”处理电路10,50之间的硬件差异被通过虚拟器120对操作系统115屏蔽起来。这意味着操作系统115不知道工作量100的执行已被转移到不同的硬件平台。根据参考图4A和4B描述的保存和恢复操作,各个处理器实例10,50被安排为具有彼此相一致的硬件缓存,以减少在将体系结构状态从源处理器传送给目标处理器中所涉及的时间量、能量以及硬件复杂度。该技术利用源处理器的本地缓存来存储必须从源处理器转移到目标处理器的在转移操作发生时不能从共享存储器中获得的所有状态。因为状态在源处理器的缓存内被标记为可共享的,所以这允许硬件缓存一致的目标处理器能够在转移操作期间侦查所述状态。利用这种技术,可以在处理器实例之间转移状态,而不需要将该状态保存到主存储器或者本地存储器映射的存储单元中。因而,这会带来很大的性能和能耗方面的好处,增加了适合于切换工作量以寻求实现能耗优势的各种情形。然而,虽然上述利用缓存一致性的技术提供了一种加速机制,用于在不需要经由共享存储器来路由当前体系结构状态的情况下使得当前体系结构状态可用于目标处理器,但是这不是这种加速机制可以实现的唯一方式。例如,图5图示了一种替代机制,其中专用总线380被设置在源处理电路300和目标处理电路350之间以允许体系结构状态在移交操作期间被转移。因而,在这种实施例中,图3的保存和恢复操作225,230用利用专用总线380的替代转移机制来代替。虽然这种方法通常比利用缓存一致性方法有更高的硬件成本(缓存一致性方法通常利用已经在数据处理系统内的硬件),但是该方法将提供一种更加快速的执行切换的方式,这在某些实现方式中可能是有利的。图6A到61示意性地图示了被执行用来将对工作量的执行从源处理电路300转移到目标处理电路350的一系列步骤。源处理电路300是处理电路10,50中在转移之前正在执行工作量的任一处理电路,而目标处理电路则是处理电路10,50中的另一处理电路。图6A示出了在初始状态下的系统,其中源处理电路300被电力控制器65供电并且正在执行处理工作量100,而目标处理电路350处于省电状态。在该实施例中,省电状态是断电状态,但是如上所述,其它类型的省电状态也可以被使用。包括应用105,110和用于运行应用105,110的操作系统115的工作量100被虚拟器120从源处理电路300的硬件平台提取出来。在执行工作量100的同时,源处理电路300维护体系结构状态400,该体系结构状态可以包括例如寄存器文件310和专用寄存器320的内容,如图4A中所示。
在图6B中,转移激励430被虚拟器120检测到。虽然转移激励430在图6B中被显示为外部事件(例如热传感器90检测到热超标),但是转移激励430也可以是由虚拟器120本身或者由操作系统115触发的事件(例如操作系统115可以被配置为当特定类型的应用要被处理时通知虚拟器120)。虚拟器120通过控制电力控制器65向目标处理电路350提供电力来对转移激励430做出响应,以将目标处理电路350置于加电状态。在图6C中,目标处理电路350开始执行虚拟器120。虚拟器120控制目标处理电路350来无效其缓存420,从而防止在对目标处理电路350加电时可能存在于缓存420中的错误数据值所引起的处理错误。在目标缓存420被无效的同时,源处理电路300继续执行工作量100。当目标缓存420的无效完成时,虚拟器120控制目标处理电路350以用信号告知源处理电路300 目标处理电路350已经准备好接管工作量100。通过继续在源处理电路300上处理工作量100 —直到目标处理电路350准备好移交操作,可以减少移交对性能的影响。在接下来的阶段中,如图6D中所示,源处理电路300停止执行工作量100。在此阶段期间,源处理电路300和目标处理电路350都不执行工作量100。体系结构状态400的拷贝从源处理电路300被传送给目标处理电路350。例如,体系结构状态400可以被保存到源缓存410中并且被返回给目标处理电路350,如图4A和4B中所示,或者可以如图5中所示通过专用总线来传送。体系结构状态400包括除已经存在于共享存储器80中的信息以外的目标处理电路250执行工作量100所需要的全部状态信息。在将体系结构状态400转移给目标处理电路350之后,源处理电路300被电力控制电路65置于省电状态(参考图6E),例外的是源缓存410保持加电状态。同时,目标处理电路350开始利用被转移来的体系结构状态400执行工作量100。当目标处理电路350开始处理工作量100时,侦查时段开始(参考图6F)。在侦查时段中,侦查控制单元75可以代表目标处理电路350侦查存储在源缓存410中的数据并获取数据。当目标处理电路350请求不存在于目标缓存420中的数据时,目标处理电路350请求来自侦查控制单元75的数据。然后,侦查控制单元75侦查源缓存410,并且如果侦查导致缓存命中,则侦查控制单元75从源缓存410中获取所侦查的数据并将其返回给目标处理电路350,其中所侦查的数据可被存储在目标缓存420中。另一方面,如果侦查导致源缓存410中的缓存缺失,则被请求的数据从共享存储器80中被获取并被返回给目标处理电路350。因为对源缓存410中的数据的访问比访问共享存储器80更快并且需要更少的能量,所以在一段时间内侦查源缓存410在工作量100移交到目标处理电路350之后的最初时段中提高了处理性能并且减少了能耗。在图6G中所示的步骤中,侦查控制单元75检测到侦查停止事件,该事件指示将源缓存410保持在加电状态已经不再是高效的了。侦查停止事件触发侦查时段的结束。该侦查停止事件可以是被侦查控制电路75监控的一组侦查停止事件中的任意一个。例如,这组侦查停止事件可以包括以下事件中的任意一个或多个Ca)当在目标处理电路350已经开始执行工作量100之后导致源缓存410内的缓存命中的侦查命中的百分比或比例(即,与侦查命中的数目/总侦查的数目成比例的量)降到预定的阈值水平以下时;(b)当从目标处理电路350开始执行工作量100起被执行的事务的数目或者预定类型的事务(例如,可缓存事务)的数目超过预定阈值时;

(c)当从目标处理电路350开始执行工作量100起经过的处理周期的数目超过预定阈值时;(d)当从目标处理电路350开始执行工作量100起共享存储器80的特定区域第一次被访问时;(e)当共享存储器80中在目标处理电路350开始执行工作量100之后的最初时段内被访问的特定区域在预定数目的周期或预定的时间段内未被访问时;(f)当目标处理电路350在开始执行被转移来的工作量100起第一次向预定的存储器位置写入时。这些侦查停止事件可以利用在包括侦查控制单元75的一致性互连70中的可编程计数器被检测到。其它类型的侦查停止事件也可以被包括在这组侦查停止事件中。在检测到侦查停止事件时,侦查控制单元75向源处理器300发送侦查停止信号440。侦查控制单元75停止侦查源缓存410并且从此刻开始通过从共享存储器80中获取被请求数据并将所获取的数据返回给目标处理电路350对来自目标处理电路350的数据访问请求做出响应,所获取的数据可以被缓存在目标处理电路350中。在图6H中,源缓存的控制电路响应于侦查停止信号440清除缓存410,以将任何有效的脏数据值(即,其被缓存的值比共享存储器80中的相应值更新)保存到共享存储器80中。在图61中,源缓存410随后被电力控制器65关掉电源以使得源处理电路300整个处于省电状态。目标处理电路继续执行工作量100。从操作系统115的角度看,现在的情况与图6A中一样。操作系统115不知道工作量的执行从一个处理电路转移到了另一处理电路。当另一转移激励发生时,则图6A到61的相同步骤可被用于将工作量的执行切换回第一处理器(在这种情况下,处理电路10,50中谁是“源处理电路”谁是“目标处理电路”将被反过来)。在图6A到61的实施例中,对缓存410和源处理电路300的独立电源控制是可实现的,使得一旦目标处理电路350开始执行工作量以后除了源缓存410以外的源处理电路300可以被关闭电源(如图6E),而只有源处理电路300的缓存410保持在加电状态(如图6F到6H)。然后在图61中,源缓存410被关闭电源。这种方法对于节省能量来说是有用的,尤其当源处理电路300是“大”处理电路10时。然而,也可以在侦查时段中继续对整个源处理电路300加电,然后在侦查时段结束并且清除源缓存410之后将源处理电路300整个置于省电状态,如图61。这在源缓存410与源处理器核心嵌入得太深以至于不能独立地从源处理器核心供电的情况下可能是更有用的。当源处理器为“小”处理电路50 (其 功率消耗与“大”处理电路10相比不算大)时这种方法可能也是更实用的,因为一旦“大”处理电路10开始处理被转移来的工作量100,则在侦查时段中将除缓存60以外的“小”处理电路50切换到省电状态对系统的整体功率消耗的影响很小。这可能意味着向“小”处理电路50和“小”处理器核心的缓存60提供单独功率控制的附加硬件复杂度可能是不合理的。在一些情况下,在工作量转移之前可能知道当目标处理电路350开始执行工作量100时源缓存410中所存储的数据将不被目标处理电路350所需要。例如,当转移发生时源处理电路300可能刚刚完成一个应用,因此转移时源缓存410中的数据与已完成的应用有关,而与转移后目标处理电路350所要执行的应用无关。在这种情况下,侦查撤消(override)控制器可以触发虚拟器120和侦查控制电路75以撤消对源缓存410的侦查并且控制源处理电路300清除源缓存410并关掉其电源,而不等待侦查停止事件用信号告知侦查时段的结束。在这种情况下,图6A到61的技术将从图6E的步骤直接跳到图6G的步骤,而不执行其中数据从源缓存410中被侦查的图6F的步骤。因而,如果提前知道源缓存410中的数据对于目标处理电路350而言将不是有用的,则可以通过在不等待侦查停止事件的情况下将源缓存410和源处理电路300置于省电状态来节省电源。侦查撤消控制器可以是虚拟器120的一部分,或者可以被实现为在源处理电路300上执行的固件。侦查撤消控制器也可以被实现为元件的组合,例如当应用结束时操作系统115可以通知虚拟器120,并且如果转移发生在应用结束时,则虚拟器120可以撤消对源缓存410的侦查。图7是其中曲线600示出了能量消耗如何随性能变化的曲线图。对于该曲线图的各个部分,数据处理系统可以被安排为利用图I中所示的处理器核心15,20的不同组合,以寻求在性能和能耗之间获得适当的权衡。因而,例如当大量非常高性能的任务需要被执行时,可以运行处理电路10的两个大核心15,20以得到所希望的性能。可选地,电源电压变化技术可被用于在利用这两个核心时允许性能和能耗上的一些变化。当性能要求降到只利用这些大核心中的一个就可以实现所需要的性能的水平时,任务可以被转移到大核心15,20中的一个上,另一个核心被关闭电源或者置于某种其它省电状态中。同样,当利用这样一个大核心时,电源电压变化也可以被用来允许性能和能耗之间的某些变化。应当注意从两个大核心转移到一个大核心不需要生成转移激励,也不需要实用上述用于转移工作量的技术,因为无论怎样都是处理电路10在被使用,而处理电路50将处于省电状态。然而,如图7中的虚线610所示,当性能降至小核心能够实现所需要的性能的水平时,转移激励可以被生成以触发上述用于将整个工作量从处理电路10转移到处理电路50的机制,使得整个工作量运行在小核心55上,而处理电路10被置于省电状态。同样,电源电压变化可以被用于允许在小核心55的性能和能耗上的某些变化。图8A和SB分别图示了根据一个实施例的低性能处理器管线800与高性能处理器管线850之间的微体系结构差异。图8A的低性能处理器管线800将适合于图I的小处理核心55,而图8B的高性能处理器管线850将适合于大核心15,20。
图8A的低性能处理器管线800包括用于从存储器80获取指令的取指阶段810、用于对所获取的指令译码的译码阶段820、用于发布供执行的指令的发布阶段830以及多个执行管线,所述多个执行管线包括用于执行整数操作的整数管线840、用于执行乘累加操作的MAC管线842以及用于执行SMD (单一指令多数据)操作或浮点操作的SMD/FPU管线844。在低性能处理器管线800中,发布阶段830每次发布一个指令,并且按照指令被获取的顺序发布指令。图SB的高性能处理器管线850包括用于从存储器80获取指令的取指阶段860、用于对所获取的指令译码的译码阶段870、用于为译码后的指令中所指定的寄存器重命名的重命名阶段875、用于派发供执行的指令的派发阶段880以及包括两个整数管线890,892、MAC管线894和两个SMD/FPU管线896,898的多个执行管线。在高性能处理器管线850中,派发阶段880是可以一次性向管线890,892,894,896, 898中的不同管线发布多个指令的并行发布阶段。派发阶段880还可以乱序发布指令。与在低性能处理器管线800中不同,SMD/FPU管线896,898是可变长度的,这意味着通过SMD/FPU管线896,898进行的操作可以被控制跳过某些阶段。这种方法的优点是如果多个执行管线分别有不同的资源,则 不需要人为地加长最短的管线以使其与最长的管线有相同的长度,但是反而需要逻辑来应对不同管线所产生的结果的乱序特征(例如如果处理异常发生则要将一切按顺序放回)。重命名阶段875被提供用于将寄存器指示符映射到作为硬件平台的实际寄存器的物理寄存器,所述寄存器指示符被包括在程序指令中并且标识从编程者模式的角度看的特定体系结构寄存器。重命名阶段875使得与存在于微处理器的编程者模式视角内的寄存器相比,更大的物理寄存器的集合被微处理器提供。这个更大的物理寄存器的集合在乱序执行期间是有用的,因为它通过将两个或多个不同指令中所指定的相同体系结构寄存器映射到两个或多个不同的物理寄存器而使得诸如写后写(WAW)危险(hazard)之类的危险被避免,从而使不同的指令可以被同时执行。对于寄存器重命名技术的更多细节,读者可以参考同时拥有的美国专利申请US 2008/114966和美国专利7,590,826。低性能管线800和高性能管线850的微体系结构在很多方面上是不同的。这些微体系结构差异可以包括(a)管线具有不同的阶段。例如,高性能管线850具有不存在于低性能管线800中的重命名阶段875.(b)管线阶段具有不同的功能。例如,低性能管线800的发布阶段830只能够发布单个指令,而高性能管线850的派发阶段880可以并行地发布指令。并行发布提高了管线的处理吞吐量,从而提高了性能。(C)管线阶段具有不同的长度。例如,高性能管线850的译码阶段870可以包括三个子阶段,而低性能管线800的译码阶段820可只包括一个子阶段。管线阶段越长(子阶段的数目越多),可以同时进行的指令的数目就越多,从而管线可以工作的工作频率就越大,导致更高的性能水平。(d)不同数目的执行管线(例如高性能管线850比低性能管线800有更多的执行管线)。通过提供更多的执行管线,更多的指令可以被并行处理,从而性能被提高。(e)提供顺序执行(如管线800中)或乱序执行(如管线850中)。当指令可以被乱序执行时,由于指令的执行可以被动态调度以最优化性能所以提高了性能。例如,在低性能顺序管线800中,在后面的指令可以被整数管线840和SMD/浮点管线844中的一个执行之前,一系列MAC指令需要一个一个地被MAC管线842执行。作为对比,在高性能管线850中,MAC指令可以被MAC管线894执行,同时(面临不能通过重命名解决的数据危险)使用不同的执行管线890,892,896,898的后面的指令可以与MAC指令并行地被执行。这意味着乱序执行可提高处理性能。这些及其它微体系结构差异的示例导致管线850提供比管线800更高性能的处理。另一方面,微体系结构差异也使得管线850比管线800消耗更多的能量。因此,提供微体系结构不同的管线800,850使得对工作量的处理针对高性能(通过使用具有高性能管线850的“大”处理电路10)或高能量效率(通过使用具有低性能管线800的“小”处理电路50)被优化。图9示出了图示出数据处理系统的功耗在对工作量100的执行在大处理电路10和小处理电路50之间切换时的变化的曲线图。 在图9的点A处,工作量100正在小处理电路50上被执行,因而功耗较低。在点B处,转移激励发生,指示高强度处理要被执行,所以对工作量的执行被移交给大处理电路10。然后,在点C处功耗增大并且保持高值,同时大处理电路10在执行工作量。在点D处,假设两个大核心在一起工作以处理工作量。然而,如果性能要求降到工作量可以仅用一个大核心来处理的水平,则工作量被转移到仅一个大核心上,并且另一个大核心被关掉电源,如功率下降到临近点E的水平所示。然而,在点E处,另一转移激励发生(指示需要返回到低强度处理)以触发将对工作量的执行转移到小处理电路50。当小处理电路50开始处理处理工作量时,大处理电路的大部分处于省电状态,但是大处理电路10的缓存在侦查时段(图9中的点F)中保持加电,以使得缓存中的数据被获取用于小处理电路50。因而,大处理电路10的缓存使得在点F处的功耗比只有小处理电路50被加电的点A处的功耗要高。在侦查时段结束时,大处理电路10的缓存被关掉电源,并且在点G处功耗返回到只有小处理电路50有效时的较低水平。如上所述,在图9中,由于大处理电路10的缓存在侦查时段中被加电,所以在点F处的侦查时段中功耗比在点G处要高。虽然这种功耗的增加被指示为只是在大到小转换之后,但是在小到大转换之后,也可以有侦查时段,在该时段中小处理电路50的缓存中的数据可以由侦查控制单元75代表大处理电路10进行侦查。针对小到大转换的侦查时段在图9中未被示出,这是因为通过在侦查时段中将小处理电路50的缓存保持在加电状态所消耗的功率与大处理电路10执行处理工作量时所消耗的功率相比是很小的,所以由于小处理电路50的缓存被加电而造成的功耗的少量增加在图9中的曲线图中是看不到的。上述实施例描述了包含两个或多个体系结构兼容且具有针对能量效率或性能优化的微体系结构的处理器实例的系统。操作系统和应用所需要的体系结构状态可以根据所需要的性能/能量水平在处理器实例之间被切换,以允许整个工作量在处理器实例之间切换。在一个实施例中,在任意给定时间处理器实例中只有一个在运行工作量,而另一个处理实例处于省电状态或者在进入/退出省电状态的过程中。在一个实施例中,处理器实例可以被安排为彼此硬件缓存一致,以减少在将体系结构状态从源处理器切换到目标处理器的过程中所涉及的时间量、能量以及硬件复杂度。这减少了执行切换操作的时间,增加了实施例的技术可被使用的机会。
这些系统可以被用在能量效率对于电池寿命和/或热管理来说非常重要的各种情况下,并且性能的扩展使得更高能量效率的处理器可被用于较低的处理工作量,而较高性能的处理器可被用于较高的处理工作量。因为两个或多个处理实例在体系结构上是兼容的,所以从应用的角度来看,两个处理器之间唯一的差异就是可得到的性能。通过一个实施例中的技术,所有需要的体系结构状态可以在处理器之间移动而不需要涉及到操作系统,使得关于操作系统和应用在哪个处理器上运行对于操作系统和运行在操作系统上的应用来说是透明的。当使用在以上实施例中所述的体系结构兼容的处理器时,需要被转移的全部体系结构状态可以很容易地放到数据缓存内,并且由于现在的处理系统通常实现缓存一致性,所以通过将要被切换的体系结构状态存储到数据缓存内,目标处理器可以快速地利用现有的电路结构以高能量效率的方式侦查所述状态。在一个所述实施例中,切换机制被用于确保针对数据处理系统的热上限不被达至IJ。具体而言,当热上限快要达到时,整个工作量可以被切换到更高能量效率的处理器实例 上,允许整个系统冷却,同时继续进行程序执行,尽管是有较低的吞吐量。虽然这里已经描述了特定实施例,但是应当理解本发明并不限于此,并且很多对本发明的修改和添加都可以在本发明的范围内被进行。例如,后面的从属权利要求的特征可以与独立权利要求的特征进行各种组合,而不脱离本发明的范围。
权利要求
1.ー种数据处理装置,包括 用于执行数据处理操作的第一处理电路; 用于执行数据处理操作的第二处理电路; 所述第一处理电路在体系结构上与所述第二处理电路兼容,以使得要由所述数据处理装置执行的工作量能在所述第一处理电路或所述第二处理电路上被执行,所述工作量包括至少ー个应用和用于运行所述至少一个应用的至少ー个操作系统; 所述第一处理电路在微体系结构上不同于所述第二处理电路,以使得所述第一处理电路的性能不同于所述第二处理电路的性能; 所述第一和第二处理电路被配置以使得在任意时间点处所述工作量被所述第一处理电路和所述第二处理电路中的一个处理电路执行; 切换控制器,该切换控制器响应于转移激励而执行移交操作以将对所述工作量的执行从源处理电路转移到目标处理电路,所述源处理电路为所述第一处理电路和所述第二处理电路中的ー个,且所述目标处理电路为所述第一处理电路和所述第二处理电路中的另外ー个; 所述切换控制器被安排为在所述移交操作期间 (i)使得所述源处理电路使其当前体系结构状态能被所述目标处理电路获得,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于所述目标处理电路成功接管对来自所述源处理电路的工作量的执行所必需的状态;并且 (ii)将预定的处理器专用配置信息对所述至少ー个操作系统屏蔽起来,以使得所述エ作量的转移对所述至少ー个操作系统而言是透明的。
2.根据权利要求I所述的数据处理装置,还包括 电カ控制电路,用于独立地控制被提供给所述第一处理电路和所述第二处理电路的电力; 其中在所述转移激励发生之前,所述目标处理电路处于省电状态,并且在所述移交操作期间,所述电カ控制电路在所述目标处理电路接管对所述工作量的执行之前使得所述目标处理电路退出所述省电状态。
3.根据权利要求2所述的数据处理装置,其中在所述移交操作之后,所述电カ控制电路使得所述源处理电路进入所述省电状态。
4.根据前述任ー权利要求所述的数据处理装置,其中在所述转移操作期间,所述切换控制器使得所述源处理电路利用加速机制以使其当前体系结构状态能被所述目标处理电路获得,而不需要所述目标处理电路參考所述共享存储器来获得所述当前体系结构状态。
5.根据权利要求4所述的数据处理装置,其中 至少所述源电路具有相关联的缓存; 所述数据处理装置还包括侦查控制电路;并且 所述加速机制包括通过利用所述源电路的相关联缓存和所述侦查控制电路将所述当前体系结构状态转移给所述目标处理电路。
6.根据权利要求5所述的数据处理装置,其中所述加速机制是存储恢复机制,该机制使得所述源处理电路将其当前体系结构状态存储到其相关联的缓存中,并使得所述目标处理电路执行恢复操作,所述侦查控制电路经由所述恢复操作从所述源处理电路的相关联缓存中取回所述当前体系结构状态,并将所取回的当前体系结构状态提供给所述目标处理电路。
7.根据权利要求5或6所述的数据处理装置,其中所述目标处理电路具有相关联缓存,所述侦查控制电路所获得的被转移的体系结构状态被存储在所述目标处理电路的相关联缓存中以供所述目标处理电路參考。
8.根据权利要求4到7中的任ー权利要求所述的数据处理装置,其中所述加速机制包括在所述源处理电路和所述目标处理电路之间的专用总线,所述源处理电路将其当前体系结构状态通过所述专用总线提供给所述目标处理电路。
9.根据前述任ー权利要求所述的数据处理装置,其中所述切换控制器至少包括虚拟软件,该虚拟软件从逻辑上将所述至少ー个操作系统与所述第一处理电路和所述第二处理电路分隔开。
10.根据前述任ー权利要求所述的数据处理装置,其中所述转移激励的定时被选择以提高所述数据处理装置的能量效率。
11.根据前述任ー权利要求所述的数据处理装置,其中所述体系结构状态至少包括所述源处理电路的一个或多个专用寄存器的当前值,包括程序计数器的值。
12.根据权利要求11所述的数据处理装置,其中所述体系结构状态还包括所述源处理电路的体系结构寄存器文件中所存储的当前值。
13.根据前述任ー权利要求所述的数据处理装置,其中所述第一处理电路和所述第二处理电路中的至少ー个包括单个处理单元。
14.根据前述任ー权利要求所述的数据处理装置,其中所述第一处理电路和所述第二处理电路中的至少ー个包括具有相同微体系结构的处理单元的集群。
15.根据权利要求2的前述任一从属权利要求的数据处理装置,其中所述省电状态是以下各项中的ー个 断电状态; 部分/全部数据保持状态; 休眠状态;或者 发呆状态。
16.根据前述任ー权利要求所述的数据处理装置,其中所述第一处理电路和第二处理电路因为具有以下项中的至少ー个而在微体系结构上是不同的 不同的执行管线长度;或者 不同的执行资源。
17.根据前述任ー权利要求所述的数据处理装置,其中所述源处理电路比所述目标处理电路的性能更高,并且所述数据处理装置还包括 热监控电路,用于监控所述源处理电路的热输出,并且用于在所述热输出达到预定水平时触发所述转移激励。
18.根据前述任ー权利要求所述的数据处理装置,其中所述第一处理电路和所述第二处理电路位于单个集成电路内。
19.ー种数据处理装置,包括用于执行数据处理操作的第一处理装置; 用于执行数据处理操作的第二处理装置; 所述第一处理装置在体系结构上与所述第二处理装置兼容,以使得要由所述数据处理装置执行的工作量能在所述第一处理装置或所述第二处理装置上被执行,所述工作量包括至少ー个应用和用于运行所述至少一个应用的至少ー个操作系统; 所述第一处理装置在微体系结构上不同于所述第二处理装置,以使得所述第一处理装置的性能不同于所述第二处理装置的性能; 所述第一和第二处理装置被配置以使得在任意时间点处所述工作量被所述第一处理装置和所述第二处理装置中的一个执行; 切换控制装置,该切换控制装置响应于转移激励执行移交操作以将对所述工作量的执行从源处理装置转移到目标处理装置,所述源处理装置为所述第一处理装置和所述第二处 理装置中的ー个,且所述目标处理装置为所述第一处理装置和所述第二处理装置中的另外ー个; 所述切换控制装置在所述移交操作期间 (i)用于使得所述源处理装置使其当前体系结构状态能被所述目标处理装置获得,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理装置之间共享的共享存储装置那里不可获得的并且对于所述目标处理装置成功接管对来自所述源处理装置的工作量的执行所必需的状态;并且 (ii)用于将预定的处理器专用配置信息对所述至少ー个操作系统屏蔽起来,以使得所述工作量的转移对所述至少ー个操作系统而言是透明的。
20.ー种操作数据处理装置的方法,所述数据处理装置包括用于执行数据处理操作的第一处理电路和用于执行数据处理操作的第二处理电路,所述第一处理电路在体系结构上与所述第二处理电路兼容,以使得要由所述数据处理装置执行的工作量能在所述第一处理电路或所述第二处理电路上被执行,所述工作量包括至少ー个应用和用于运行所述至少一个应用的至少ー个操作系统,并且所述第一处理电路在微体系结构上不同于所述第二处理电路,以使得所述第一处理电路的性能不同于所述第二处理电路的性能,所述方法包括以下步骤 在任意时间点处在所述第一处理电路和所述第二处理电路中的一个上执行所述工作量; 响应于转移激励执行移交操作以将对所述工作量的执行从源处理电路转移到目标处理电路,所述源处理电路为所述第一处理电路和所述第二处理电路中的ー个,且所述目标处理电路为所述第一处理电路和所述第二处理电路中的另外一个; 在所述移交操作期间 (i)使得所述源处理电路使其当前体系结构状态能被所述目标处理电路获得,所述当前体系结构状态是在所述移交操作被起动时从在所述第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于所述目标处理电路成功接管对来自所述源处理电路的工作量的执行所必需的状态;并且 (ii)将预定的处理器专用配置信息对所述至少ー个操作系统屏蔽起来,以使得所述エ作量的转移对所述至少ー个操作系统而言是透明的。
全文摘要
本发明提供了一种数据处理装置和方法,用于在两个处理电路之间切换工作量的执行。该数据处理装置具有在体系结构上与第二处理电路兼容的第一处理电路,但是第一处理电路在微体系结构上不同于第二处理电路。在任意时间点处,由至少一个应用和用于运行该应用的至少一个操作系统构成的工作量被第一处理电路和第二处理电路中的一个执行。切换控制器响应于转移激励执行移交操作以将对工作量的执行从源处理电路转移到目标处理电路,所述源处理电路是所述第一和第二处理电路中的一个并且所述目标处理电路是所述第一和第二处理电路中的另外一个。在移交操作期间,切换控制器使得源处理电路使其当前体系结构状态可用于目标处理电路,所述当前体系结构状态是在移交操作被起动时从在第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于目标处理电路成功接管对来自源处理电路的工作量的执行所必需的状态。此外,切换控制器将预定的处理器专用配置信息对所述至少一个操作系统屏蔽起来,以使得工作量的转移对所述至少一个操作系统而言是透明的。这种方法被发现能够产生很大的能量消耗优势,同时避免与为操作系统提供用于在处理电路之间切换应用的功能相关联的复杂度。
文档编号G06F15/167GK102782671SQ201180012204
公开日2012年11月14日 申请日期2011年2月17日 优先权日2010年3月1日
发明者彼得·理查德·格林哈尔格, 理查德·罗伊·格里森思怀特 申请人:Arm 有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1