首页> 中国专利> 用于在第一和第二处理电路间切换工作量的数据处理装置和方法

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

摘要

本发明提供了一种数据处理装置和方法,用于在两个处理电路之间切换工作量的执行。该数据处理装置具有在体系结构上与第二处理电路兼容的第一处理电路,但是第一处理电路在微体系结构上不同于第二处理电路。在任意时间点处,由至少一个应用和用于运行该应用的至少一个操作系统构成的工作量被第一处理电路和第二处理电路中的一个执行。切换控制器响应于转移激励执行移交操作以将对工作量的执行从源处理电路转移到目标处理电路,所述源处理电路是所述第一和第二处理电路中的一个并且所述目标处理电路是所述第一和第二处理电路中的另外一个。在移交操作期间,切换控制器使得源处理电路使其当前体系结构状态可用于目标处理电路,所述当前体系结构状态是在移交操作被起动时从在第一和第二处理电路之间共享的共享存储器那里不可获得的并且对于目标处理电路成功接管对来自源处理电路的工作量的执行所必需的状态。此外,切换控制器将预定的处理器专用配置信息对所述至少一个操作系统屏蔽起来,以使得工作量的转移对所述至少一个操作系统而言是透明的。这种方法被发现能够产生很大的能量消耗优势,同时避免与为操作系统提供用于在处理电路之间切换应用的功能相关联的复杂度。

著录项

  • 公开/公告号CN102782671A

    专利类型发明专利

  • 公开/公告日2012-11-14

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN201180012204.1

  • 申请日2011-02-17

  • 分类号G06F15/167(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人宋鹤

  • 地址 英国剑桥

  • 入库时间 2023-12-18 07:21:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-04-22

    授权

    授权

  • 2013-02-27

    实质审查的生效 IPC(主分类):G06F15/167 申请日:20110217

    实质审查的生效

  • 2012-11-14

    公开

    公开

说明书

技术领域

本发明涉及用于在第一和第二处理电路之间切换工作量的数据处理装 置和方法,并且更具体地涉及用于执行这种切换以提高数据处理装置的能 量效率的技术。

背景技术

在当今的数据处理系统中,诸如游戏操作之类的高强度任务和诸如 MP3播放之类的低强度任务之间的性能需求差异可能超过100:1的比率。 对于要被用于所有任务的一个处理器而言,该处理器将必须是高性能的, 但是处理器微结构的公理是高性能的处理器比低性能处理器的能量效率 低。公知可以利用诸如动态电压和频率缩放(DVFS)或功率门控之类的 技术为处理器提供一定范围的性能水平和相应的能量消耗特性,从而提高 处理器层的能量效率。然而,这些技术普遍变得不足以允许单个处理器承 接具有如此分散性能需求的任务。

因此,已经考虑使用多核体系结构来提供用于执行这些不同任务的能 量高效系统。虽然具有多个处理器核心的系统被用于提高性能已有一段时 间了,这些系统通过允许不同的核心并行地工作于不同的任务上来提高吞 吐量,但是关于这些系统如何被用于提高能量效率的分析还是相对近期的 发展方向。

V Kumar等的文章“Towards Better Performance Per Watt in Virtual  Environments on Asymmetric Single-ISA Multi-Core Systems”,ACM SIGOPS  Operating Systems Review,第43卷,第3期(2009年7月)讨论了不对称单一 指令集体系结构(ASISA)多核系统,该系统由面向相同的指令集体系结 构(ISA)但在特征、复杂度、功耗和性能方面不同的若干个核心构成。 在这篇文章中,虚拟工作量的属性被研究以了解这些工作量应该怎样在 ASISA系统上被调度,从而提高性能和能量消耗。这篇文章认定某些任务 更适用于高频率/性能的微体系结构(通常是计算密集型任务),而其它任 务则更适合于较低频率/性能的微体系结构并且作为副效应将消耗更少的能 量(通常是输入/输出密集型任务)。虽然这些研究揭示了ASISA系统可以 怎样被用于以能量高效的方式运行各种任务,但是仍然需要提供一种用于 将各个任务调度到最合适的处理器的机制,并且这种调度管理通常会给操 作系统带来很大的负担。

R Kumar等的文章“Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction”,Proceedings of the 36thInternational Symposium of Microarchitecture (MICRO-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)将预定的处理器专用配 置信息对所述至少一个操作系统屏蔽起来,以使得所述工作量的转移对所 述至少一个操作系统而言是透明的。

附图说明

下面将仅以示例的方式参考如附图中所示的本发明的实施例进一步描 述本发明,在附图中:

图1是根据一个实施例的数据处理系统的框图;

图2示意性地图示了根据一个实施例提供切换控制器(这里也被称为 工作量转移控制器)以在逻辑上将由数据处理装置执行的工作量与在数据 处理装置内被用于执行所述工作量的特定硬件平台分开;

图3是示意性地图示了根据一个实施例的源处理器和目标处理器响应 于切换激励以将工作量从源处理器转移到目标处理器而执行的步骤;

图4A示意性地图示了在图3的保存操作期间将源处理电路的当前体 系结构状态存入其相关联的缓存;

图4B示意性地图示了在图3的恢复操作期间利用侦查控制单元控制 源处理电路的当前体系结构状态向目标处理电路的转移;

图5图示了根据一个实施例的用于在转移操作期间提供加速机制以将 源处理电路的当前体系结构状态转移给目标处理电路的替代结构;

图6A到6I示意性地图示了根据一个实施例的将工作量从源处理电路 转移给目标处理电路所执行的步骤;

图7是根据一个实施例的示出了能量效率随性能的变化曲线并且图示 了在该曲线上的各个点处图1中所示的各个处理器核心如何被使用的图;

图8A和8B分别示意性地图示了如在一个实施例中所使用的低性能 处理器管线和高性能处理器管线;以及

图9是示出了当对处理工作量的执行在低性能、高能量效率处理电路 和高性能、低能量效率处理电路之间切换时数据处理系统所消耗的功率变 化的图。

具体实施方式

图1是示意性地图示了根据一个实施例的数据处理系统的框图。如图 1中所示,该系统包括两个在体系结构上兼容的处理电路实例(处理电路 010和处理电路150),但是这两个不同的处理电路实例具有不同的微结 构。具体而言,处理电路10被安排为与处理电路50相比以更高的性能进 行操作,但是作为权衡,处理电路10将比处理电路50的能量效率低。关 于微结构差异的示例将在下面参考图8A和8B进行更详细的描述。

每个处理电路可以包括单个处理单元(这里也被称为处理器核心), 或者这些处理电路实例中的至少一个本身可以包括具有相同微结构的处理 单元的集群。

在图1中所示的示例中,处理电路10包括体系结构和微结构都相同的 两个处理器核心15,20。作为对比,处理电路50只包含单个处理器核心 55。在以下描述中,处理器核心15,20将被称为“大”核心,而处理器核 心55将被称为“小”核心,这是因为处理器核心15,20由于在设计时着 重考虑性能所以通常比处理器核心55更复杂,而相比之下,处理器核心 55由于在设计时着重考虑能量效率所以通常复杂度要低很多。

在图1中,每个处理器核心15,20,55被假设分别具有他们自己的相关 联的本地1级缓存25,30,60,这些缓存可以被布置为用于存储供相关联的 核心引用的指令和数据的统一缓存,或者可以被布置为具有Harvard体系 结构,提供不同的1级数据和1级指令缓存。虽然每个核心被显示为具有 其自己的相关联的1级缓存,但这不是必须的,在替代实施例中,这些核 心中的一个或多个核心可以没有本地缓存。

在图1中所示的实施例中,处理电路10还包括在核心15与核心20之 间共享的2级缓存35,侦查控制单元40被用于确保两个1级缓存25,30 与2级缓存35之间的缓存一致性。在一个实施例中,2级缓存被布置为包 含型缓存,因此被存储在任一1级缓存25,30中的任意数据也都将存在于 2级缓存35中。本领域技术人员将很清楚,侦查控制单元40的目的是确 保各个缓存之间的缓存一致性,以使得可以确保任一核心15,20在发出访 问请求时将总是访问到最新版本的数据。因此,仅作为示例,如果核心 15发出针对不在相关联的1级缓存25中的数据的访问请求,则侦查控制 单元40截获正在传输的对1级缓存25的请求,并且参考1级缓存30和/ 或2级缓存35确定是否可以根据那些其它缓存中的一个的内容为访问请 求提供服务。只有在数据不存在于任何缓存中的情况下,访问请求才经由 互连70被传送给主存储器80,主存储器80是在处理电路10与处理电路 50之间共享的存储器。

设置在互连70内的侦查控制单元75按照与侦查控制单元40相类似的 方式进行操作,但是在该示例中,用于保持设置在处理电路10内的缓存 结构与设置在处理电路50内的缓存结构之间的一致性。在2级缓存35为 包含型缓存的示例中,侦查控制单元保持处理电路10的2级缓存35与处 理电路50的1级缓存60之间的硬件缓存一致性。但是,如果2级缓存35 被布置为排他型2级缓存,则侦查控制单元75还将侦查保存在1级缓存 25,30中的数据以确保处理电路10的缓存与处理电路50的缓存60之间的 缓存一致性。

根据一个实施例,在任意时间点处,将只有处理电路10和处理电路 50中的一个在积极处理工作量。为了本申请的目的,所述工作量可以被认 为包括至少一个应用和用于运行该至少一个应用的至少一个操作系统,例 如在图2中用标号100所示意性示出的。在该示例中,两个应用105,110 正在操作系统115的控制下运行,并且应用105,110和操作系统115一起 构成工作量100。这些应用可以被认为是存在于用户层,而操作系统存在 于优先层(privileged level),并且总地来说由应用和操作系统所构成的工 作量运行在硬件平台125(代表硬件层视图)上。在任意时间点处,硬件 平台将由处理电路10或者由处理电路50提供。

如图1中所示,电力控制电路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,当这些温度上限被达到时可以被检测到,并且在这种情况下,转移 激励可以被生成以触发工作量向能量效率更高的处理电路转移,从而导致 数据处理系统的整体冷却。因而,考虑图1的示例,其中处理电路10是高 性能处理电路且处理电路50是消耗较少能量的较低性能的处理电路,当设 备的温度上限被达到时将工作量从处理电路10转移到处理电路50将导致接 下来设备的冷却,同时仍然允许进行连续的程序执行,尽管会有较低的吞 吐量。

虽然在图1中两个处理电路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中被检测到,导致被缓存的体系结构状态经由侦查控制单元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到6I示意性地图示了被执行用来将对工作量的执行从源处理电 路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监控 的一组侦查停止事件中的任意一个。例如,这组侦查停止事件可以包括以 下事件中的任意一个或多个:

(a)当在目标处理电路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中。

在图6I中,源缓存410随后被电力控制器65关掉电源以使得源处理 电路300整个处于省电状态。目标处理电路继续执行工作量100。从操作 系统115的角度看,现在的情况与图6A中一样。操作系统115不知道工 作量的执行从一个处理电路转移到了另一处理电路。当另一转移激励发生 时,则图6A到6I的相同步骤可被用于将工作量的执行切换回第一处理器 (在这种情况下,处理电路10,50中谁是“源处理电路”谁是“目标处理 电路”将被反过来)。

在图6A到6I的实施例中,对缓存410和源处理电路300的独立电源 控制是可实现的,使得一旦目标处理电路350开始执行工作量以后除了源 缓存410以外的源处理电路300可以被关闭电源(如图6E),而只有源处 理电路300的缓存410保持在加电状态(如图6F到6H)。然后在图6I 中,源缓存410被关闭电源。这种方法对于节省能量来说是有用的,尤其 当源处理电路300是“大”处理电路10时。

然而,也可以在侦查时段中继续对整个源处理电路300加电,然后在 侦查时段结束并且清除源缓存410之后将源处理电路300整个置于省电状 态,如图6I。这在源缓存410与源处理器核心嵌入得太深以至于不能独立 地从源处理器核心供电的情况下可能是更有用的。当源处理器为“小”处 理电路50(其功率消耗与“大”处理电路10相比不算大)时这种方法可 能也是更实用的,因为一旦“大”处理电路10开始处理被转移来的工作 量100,则在侦查时段中将除缓存60以外的“小”处理电路50切换到省 电状态对系统的整体功率消耗的影响很小。这可能意味着向“小”处理电 路50和“小”处理器核心的缓存60提供单独功率控制的附加硬件复杂度 可能是不合理的。

在一些情况下,在工作量转移之前可能知道当目标处理电路350开始 执行工作量100时源缓存410中所存储的数据将不被目标处理电路350所 需要。例如,当转移发生时源处理电路300可能刚刚完成一个应用,因此 转移时源缓存410中的数据与已完成的应用有关,而与转移后目标处理电 路350所要执行的应用无关。在这种情况下,侦查撤消(override)控制器 可以触发虚拟器120和侦查控制电路75以撤消对源缓存410的侦查并且控 制源处理电路300清除源缓存410并关掉其电源,而不等待侦查停止事件 用信号告知侦查时段的结束。在这种情况下,图6A到6I的技术将从图6E 的步骤直接跳到图6G的步骤,而不执行其中数据从源缓存410中被侦查 的图6F的步骤。因而,如果提前知道源缓存410中的数据对于目标处理 电路350而言将不是有用的,则可以通过在不等待侦查停止事件的情况下 将源缓存410和源处理电路300置于省电状态来节省电源。侦查撤消控制 器可以是虚拟器120的一部分,或者可以被实现为在源处理电路300上执 行的固件。侦查撤消控制器也可以被实现为元件的组合,例如当应用结束 时操作系统115可以通知虚拟器120,并且如果转移发生在应用结束时, 则虚拟器120可以撤消对源缓存410的侦查。

图7是其中曲线600示出了能量消耗如何随性能变化的曲线图。对于 该曲线图的各个部分,数据处理系统可以被安排为利用图1中所示的处理 器核心15,20的不同组合,以寻求在性能和能耗之间获得适当的权衡。因 而,例如当大量非常高性能的任务需要被执行时,可以运行处理电路10 的两个大核心15,20以得到所希望的性能。可选地,电源电压变化技术可 被用于在利用这两个核心时允许性能和能耗上的一些变化。

当性能要求降到只利用这些大核心中的一个就可以实现所需要的性能 的水平时,任务可以被转移到大核心15,20中的一个上,另一个核心被关 闭电源或者置于某种其它省电状态中。同样,当利用这样一个大核心时, 电源电压变化也可以被用来允许性能和能耗之间的某些变化。应当注意从 两个大核心转移到一个大核心不需要生成转移激励,也不需要实用上述用 于转移工作量的技术,因为无论怎样都是处理电路10在被使用,而处理 电路50将处于省电状态。然而,如图7中的虚线610所示,当性能降至小 核心能够实现所需要的性能的水平时,转移激励可以被生成以触发上述用 于将整个工作量从处理电路10转移到处理电路50的机制,使得整个工作 量运行在小核心55上,而处理电路10被置于省电状态。同样,电源电压 变化可以被用于允许在小核心55的性能和能耗上的某些变化。

图8A和8B分别图示了根据一个实施例的低性能处理器管线800与高 性能处理器管线850之间的微体系结构差异。图8A的低性能处理器管线 800将适合于图1的小处理核心55,而图8B的高性能处理器管线850将 适合于大核心15,20。

图8A的低性能处理器管线800包括用于从存储器80获取指令的取指 阶段810、用于对所获取的指令译码的译码阶段820、用于发布供执行的 指令的发布阶段830以及多个执行管线,所述多个执行管线包括用于执行 整数操作的整数管线840、用于执行乘累加操作的MAC管线842以及用 于执行SIMD(单一指令多数据)操作或浮点操作的SIMD/FPU管线 844。在低性能处理器管线800中,发布阶段830每次发布一个指令,并 且按照指令被获取的顺序发布指令。

图8B的高性能处理器管线850包括用于从存储器80获取指令的取指 阶段860、用于对所获取的指令译码的译码阶段870、用于为译码后的指 令中所指定的寄存器重命名的重命名阶段875、用于派发供执行的指令的 派发阶段880以及包括两个整数管线890,892、MAC管线894和两个 SIMD/FPU管线896,898的多个执行管线。在高性能处理器管线850中, 派发阶段880是可以一次性向管线890,892,894,896,898中的不同管线发 布多个指令的并行发布阶段。派发阶段880还可以乱序发布指令。与在低 性能处理器管线800中不同,SIMD/FPU管线896,898是可变长度的,这 意味着通过SIMD/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和SIMD/浮点管线 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中的曲线图中是看不到的。

上述实施例描述了包含两个或多个体系结构兼容且具有针对能量效率 或性能优化的微体系结构的处理器实例的系统。操作系统和应用所需要的 体系结构状态可以根据所需要的性能/能量水平在处理器实例之间被切换, 以允许整个工作量在处理器实例之间切换。在一个实施例中,在任意给定 时间处理器实例中只有一个在运行工作量,而另一个处理实例处于省电状 态或者在进入/退出省电状态的过程中。

在一个实施例中,处理器实例可以被安排为彼此硬件缓存一致,以减 少在将体系结构状态从源处理器切换到目标处理器的过程中所涉及的时间 量、能量以及硬件复杂度。这减少了执行切换操作的时间,增加了实施例 的技术可被使用的机会。

这些系统可以被用在能量效率对于电池寿命和/或热管理来说非常重要 的各种情况下,并且性能的扩展使得更高能量效率的处理器可被用于较低 的处理工作量,而较高性能的处理器可被用于较高的处理工作量。

因为两个或多个处理实例在体系结构上是兼容的,所以从应用的角度 来看,两个处理器之间唯一的差异就是可得到的性能。通过一个实施例中 的技术,所有需要的体系结构状态可以在处理器之间移动而不需要涉及到 操作系统,使得关于操作系统和应用在哪个处理器上运行对于操作系统和 运行在操作系统上的应用来说是透明的。

当使用在以上实施例中所述的体系结构兼容的处理器时,需要被转移 的全部体系结构状态可以很容易地放到数据缓存内,并且由于现在的处理 系统通常实现缓存一致性,所以通过将要被切换的体系结构状态存储到数 据缓存内,目标处理器可以快速地利用现有的电路结构以高能量效率的方 式侦查所述状态。

在一个所述实施例中,切换机制被用于确保针对数据处理系统的热上 限不被达到。具体而言,当热上限快要达到时,整个工作量可以被切换到 更高能量效率的处理器实例上,允许整个系统冷却,同时继续进行程序执 行,尽管是有较低的吞吐量。

虽然这里已经描述了特定实施例,但是应当理解本发明并不限于此, 并且很多对本发明的修改和添加都可以在本发明的范围内被进行。例如, 后面的从属权利要求的特征可以与独立权利要求的特征进行各种组合,而 不脱离本发明的范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号