包括代码再循环技术的用于能效和节能的方法、装置和系统的制作方法

文档序号:6498175阅读:193来源:国知局
包括代码再循环技术的用于能效和节能的方法、装置和系统的制作方法
【专利摘要】本申请描述了用于实现热代码段的智能再循环的装置、方法和系统。确定热代码段,并将开始和结束指令进行标记。当开始指令被解码时,处理器的后端中的再循环逻辑进入检测模式并加载经解码的循环指令。当结束指令被解码时,再循环逻辑进入再循环模式。在再循环模式期间,将循环指令从再循环逻辑直接分派至执行级以供执行。由于该循环在后端之外被直接服务,所以可将前端断电以进入待机状态以节能并提高能效。在完成该循环时,前端被恢复供电并继续正常操作,这可能包括传送在前端进入待机模式之前预取出的该循环之后接下来的指令。
【专利说明】包括代码再循环技术的用于能效和节能的方法、装置和系 统

【技术领域】
[0001] 本公开涉及集成电路中的能效和节能以及在集成电路上执行的代码,更具体地但 不排他地涉及代码再循环。

【背景技术】
[0002] 半导体处理和逻辑设计的进步已允许在集成电路器件上可能存在的逻辑量的增 力口。因此,计算机系统配置已经从系统中的单个或多个集成电路进化至各个集成电路上的 多个硬件线程、多个核、多个设备和/或完整的系统。此外,随着集成电路密度增长,计算系 统(从嵌入式系统到服务器)的功率需求也逐步提高。此外,软件低效率及其对硬件的要 求也已造成了计算设备能耗的提高。实际上,一些研究表明计算机消耗了美国全部电力供 应的大部分。
[0003] 因此,存在对与集成电路相关联的能效和节能的关键需求。而且,随着服务器、桌 面计算机、笔记本、超极本、平板、移动电话、处理器、嵌入式系统等等变得更加流行(从包 括在典型的计算机、汽车和电视中到生物技术),计算设备销售的影响已然超出能耗的范围 而延伸至对经济系统存在显著、直接的影响。
[0004] 当功耗变得更加重要,总是趋向于提高性能的趋势将要与功耗考虑相互平衡。因 此,已经投机地将集成电路的多个部分断电,诸如将处理器置于睡眠状态。不过,现有处理 器通常仍保持它们的流水线的多个部分活动;甚至在它们可能是空闲时也如此,这样为了 在无工作执行时保持逻辑活动可能浪费功率。此外,通常也错过诸如使处理流水线的部分 变成空闲(例如从流水线的一个部分卸载工作来释放它以实现节能)之类的其它节能机 会。例如,在代码执行期间,一些热部分(例如通常执行的代码段)可能通过整个前端流水 线浪费功率,并且可能导致不利的性能问题(例如当指令在两个高速缓存行上未对齐,从 而要在两个循环上被取出时)。

【专利附图】

【附图说明】
[0005] 本发明通过示例进行说明,而且不旨在受限于附图的各图。
[0006] 图1示出包括具有多个处理元件(2个核和4个线程槽)的处理器的系统的逻辑 表示的实施例。
[0007] 图2示出计算机系统配置的逻辑表示的实施例。
[0008] 图3示出计算机系统配置的逻辑表示的另一实施例。
[0009] 图4示出计算机系统配置的逻辑表示的另一实施例。
[0010] 图5示出用于提供代码的热部分的智能代码再循环的设备的逻辑表示的实施例。 [0011] 图6示出用于提供代码的热部分的智能代码再循环的设备的逻辑表示的另一实 施例。
[0012] 图7示出能够对代码内的嵌套循环进行重新计算的再循环逻辑的逻辑表示的实 施例。
[0013] 图8示出用于在处理器流水线的前端中再循环热代码同时节能的流程图的实施 例。

【具体实施方式】
[0014] 在以下描述中,陈述了多个特定细节,诸如特定类型的处理器和系统配置的示例、 特定硬件结构、特定架构和微架构细节、特定寄存器配置、标记指令的特定方法、特定类型 的热代码、特定再循环结构、特定循环指令、特定前端逻辑、特定处理器流水线级和操作、特 定的结束循环迭代条件等等,以提供对本发明的透彻理解。然而,对本领域普通技术人员显 而易见的是,不一定要采用这些具体细节来实施本发明。在其它实例中,未详细描述公知的 组件或方法,诸如特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定 固件代码、特定互连操作、特定分支预测逻辑和方法、特定热代码标识方法、特定动态编译 技术、特定断电和门控技术/逻辑以及处理器的其它特定操作细节,以免不必要地模糊本 发明。
[0015] 虽然参考特定集成电路中(诸如计算平台或微处理器中)的节能和能效描述了以 下实施例,但其它实施例可适用于其它类型的集成电路和逻辑器件。在此描述的实施例的 相似的技术和教导可适用于也可受益于更好能效和节能的其它类型的电路或半导体器件。 例如,所公开的实施例不限于桌面计算机系统。也可用于其它设备,诸如手持式设备、芯片 上系统(S0C)以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、因特网协议设备、数 码相机、个人数字助理(PDA)、手持式PC。嵌入式应用典型地包括微控制器、数字信号处理 器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或 可执行以下教导的功能和操作的任何其他系统。此外,本申请中描述的装置、方法和系统不 限于物理计算设备,而是也涉及用于节能和能效的软件优化。如将在以下描述中容易变得 明显地,本申请中描述的方法、装置和系统的实施例(不论是参考硬件、固件、软件还是其 组合)对于与性能考虑相平衡的"绿色技术"未来是关键的。
[0016] 本申请中描述的方法和装置用于提供智能代码再循环。具体地,在下文中主要参 考微处理器以及其中的节能来讨论代码再循环。不过,本申请中描述的装置和方法不限于 此,因为它们可结合任何集成电路器件来实现。例如,本申请中描述的代码再循环技术可用 于执行迭代和/或热代码的图形处理器。或者,它可用于小形状因数设备、手持式设备、S0C 或嵌入式应用,如上所讨论。
[0017] 参考图1,示出了包括多个核的处理器的实施例。处理器100包括任何处理器或处 理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、 应用处理器、协处理器、芯片上系统(S0C)或用于执行代码的其它器件。在一个实施例中, 处理器100包括至少两个核--核101和102,这两个核可包括不对称核或对称核(所示实 施例)。然而,处理器100可包括任何数量的处理元件,这些处理元件可以是对称的或不对 称的。
[0018] 在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元 件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件 线程、核、和/或能保持处理器的诸如执行状态或架构状态之类的状态的任何其它元件。换 言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其它代码 之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其可能包括任意 数量的诸如核或硬件线程之类的其它处理元件。
[0019] 核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维 持的架构状态与至少某些专用执行资源相关联。与核相反,硬件线程通常指的是位于集成 电路上的能维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访 问。可以看出,当某些资源是共享的而其它资源是架构状态专用时,硬件线程与核的术语之 间的界线交叠。不过通常,核和硬件线程被操作系统视为各个逻辑处理器,其中操作系统能 够分别在每个逻辑处理器上调度操作。
[0020] 如图1中所示的物理处理器100包括两个核,即核101和102。在此,核101和102 被视为对称核,即具有相同配置、功能单元和/或逻辑的核。在另一实施例中,核101包括 无序处理器核,而核102包括有序处理器核。然而,可从任何类型的核中分别选择核101和 102,诸如原生核、软件管理的核、适于执行原生指令集架构(ISA)的核、适于执行经转换指 令集架构(ISA)的核、共同设计的核或其它已知核。不过为了进一步讨论,在下文中更详细 描述了核101中示出的功能单元,因为核102中的单元以相似的方式操作。
[0021] 如所描绘,核101包括两个硬件线程101a和101b,它们可被称为硬件线程槽101a 和101b。因此,在一个实施例中,诸如操作系统之类的软件实体可能将处理器100视为四个 单独的处理器,即能够同时执行四个软件线程的四个逻辑处理器或处理元件。此外,第一线 程与架构状态寄存器l〇la相关联,第二线程与架构状态寄存器101b相关联,第三线程可与 架构状态寄存器102a相关联,以及第四线程可与架构状态寄存器102b相关联。在此,架构 状态寄存器(l〇la、101b、102a和102b)中的每一个可被称为处理元件、线程槽或线程单元, 如上所述。如上所述,架构状态寄存器l〇la被复制在架构状态寄存器101b中,因此能够为 逻辑处理器l〇la和逻辑处理器101b存储各个架构状态/上下文。在核101中,也为线程 101a和101b复制其它较小的资源,诸如分配器和重命名器块130中的指令指针和重命名逻 辑。诸如重排序器/引退单元135中的重排序缓冲器、ILTB 120、加载/存储缓冲器、以及 队列之类的一些资源可通过分区来共享。诸如通用内部寄存器、页表基本寄存器、低级数据 高速缓存和数据TLB 115、执行单元140、以及无序单元135的多个部分之类的其它资源可 能被完全共享。
[0022] 处理器100通常包括其它资源,这些其它资源可被完全共享、通过分区共享、或由 处理元件专用/专用于处理元件。在图1中,示出了具有处理器的说明性的逻辑单元/资 源的纯示例性处理器的实施例。注意,处理器可包括或省略这些功能单元中的任一个,并包 括未描绘出的任何其它已知的功能单元、逻辑或固件。如所示,核101包括简化的表示性的 无序(〇〇〇)处理器核。但是,在不同实施例中可利用有序处理器。000核包括用于预测要执 行/采用的分支的分支目标缓冲器120和用于存储指令的地址转换条目的指令转换缓冲器 (I-TLB)120。
[0023] 核101进一步包括耦合至取出单元120的解码模块125,用于解码取出的元素。在 一个实施例中,取出逻辑包括分别与线程槽l〇la、101b相关联的各个序列发生器。通常,核 101与第一指令集架构(ISA)相关联,第一指令集架构(ISA)定义/指定能在处理器100 上执行的指令。通常,作为第一 ISA的部分的机器代码指令包括该指令的部分(称为操作 码),该部分引用/指定要执行的指令或操作。解码逻辑125包括电路,所述电路根据这些 指令的操作码来识别这些指令并在流水线中传递经解码的指令,以供按照第一 ISA定义地 那样来处理。例如,如下文更详细讨论地,在一个实施例中,解码器125包括设计成或适合 于识别诸如事务性指令之类的特定指令的逻辑。作为解码器125识别的结果,架构或核101 采取特定、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本申请中描述 的任务、块、操作和方法中的任一个可响应于单个或多个指令来执行;它们中的一些可以是 新的或旧的指令。
[0024] 在一个示例中,分配器和重命名器块130包括用于预留资源的分配器,诸如用于 存储指令处理结果的寄存器组。然而,线程l〇la和101b可能能够无序地执行,在此情况下, 分配器和重命名器块130也预留其它资源,诸如用于跟踪指令结果的重排序缓冲器。单元 130也可包括寄存器重命名器,用于将程序/指令引用寄存器重命名为处理器100内部的其 它寄存器。重排序器/引退单元135包括诸如上述的重排序缓冲器、加载缓冲器以及存储 缓冲器之类的组件,以支持无序执行和无序执行的指令的稍后有序引退。
[0025] 在一个实施例中,调度器和执行单元块140包括调度器单元,用于在执行单元上 调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还 包括与执行单元相关联的寄存器组,用于存储信息指令处理结果。示例性的执行单元包括 浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其它已知 的执行单元。
[0026] 较低级数据高速缓存和数据转换缓冲器(D-TLB) 150耦合至执行单元140。数据高 速缓存用于存储诸如数据操作数之类的最近使用/操作的元素,这些元素可能以存储器一 致性状态被保持。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理 器可包括页表结构,用于将物理存储器分解成多个虚拟页。
[0027] 在此,核101和102共享对较高级或进一步远离的高速缓存110的访问,较高级或 进一步远尚的1?速缓存用于1?速缓存最近取出的兀素。注意,较1?级或进一步远尚的1?速 缓存指的是从执行单元提高或进一步远离执行单元的高速缓存级。在一个实施例中,较高 级的高速缓存110是末级数据高速缓存--处理器100上的存储器层次中的最后一级高速 缓存,诸如二级或三级数据高速缓存。然而,较高级高速缓存110不限于此,因为它可与指 令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存--一种类型的指令高速 缓存一可耦合在解码器125之后以存储最近解码的踪迹。
[0028] 在所描绘的配置中,处理器100还包括总线接口模块105。在过去,下文更详细描 述的控制器170已被包含在处理器100外部的计算系统中。在该情形下,总线接口 105用 于与处理器100外部的设备通信,这些设备诸如系统存储器175、芯片组(通常包括用于连 接至存储器175的存储器控制器中枢和用于连接外围设备的I/O控制器中枢)、存储器控制 器中枢、北桥或其它集成电路。并且,在此情形下,总线105可包括任何已知的互连,诸如多 分支总线、点对点互连、串行互连、并行总线、一致(例如高速缓存一致)总线、分层协议架 构、差分总线以及GTL总线。
[0029] 存储器175可专用于处理器100,或与系统中的其它设备共享。存储器175的类 型的常见示例包括动态随机存取存储器(DRAM)、静态RAM(SRAM)、非易失性存储器(NV存储 器)以及其它已知的存储设备。注意,设备180可包括耦合至存储器控制器中枢的图形加 速器、处理器或卡、耦合至I/O控制器中枢的数据储存器、无线收发机、闪存设备、音频控制 器、网络控制器或其它已知设备。
[0030] 然而应注意,在所描绘的实施例中,控制器170被示为处理器100的部分。最近, 随着更多的逻辑和器件被集成在诸如芯片上系统(SOC)之类的单个管芯上,这些器件中的 每一个器件可被包含在处理器100上。例如,在一个实施例中,存储器控制器中枢170在与 处理器100相同的封装和/或管芯上。在此,核的部分(核上部分)包括一个或多个控制 器170,用于与诸如存储器175或图形器件180之类的其它器件相连接。包括互连和用于与 此类器件相连接的控制器的该配置通常被称为核上(或非核配置)。作为示例,总线接口 105包括环形互连,该环形互连具有用于与存储器175相连接的存储器控制器,以及用于与 图形处理器180相连接的图形控制器。不过,在SOC环境下,可在单个管芯或集成电路上集 成甚至更多的器件,诸如网络接口、协处理器、存储器175、图形处理器180以及任何其它已 知的计算机器件/接口,以提供具有高功能性和低功耗的小形状因数。
[0031] 在一个实施例中,处理器100能够执行编译器、优化和/或转换器代码177以编 译、转换和/或优化应用代码176,以支持本申请中描述的装置和方法或与本申请中描述的 装置和方法相连接。编译器通常包括用于将源文本/代码转换成目标文本/代码的程序或 程序集合。通常,利用编译器对程序/应用代码的编译是在多个阶段和多次运行中完成的, 以将高级编程语言代码转换成低级机器或汇编语言代码。不过,对于简单编译,仍可利用单 次运行编译器。编译器可利用任何已知的编译技术,并执行任何已知的编译器操作,诸如词 法分析、预处理、解析、语义分析、代码生成、代码转换以及代码优化。
[0032] 更大的编译器通常包括多个阶段,但多数时候这些阶段被包括在两个一般阶段 中:(1)前端,一般而言,即在其中可进行语法处理、语义处理以及一些转换/优化,(2)后 端,一般而言,即在其中可进行分析、转换、优化以及代码生成。一些编译器指的是中端,其 示出了编译器的前端与后端之间的界定的模糊。因此,对插入、关联、生成或编译器的其它 操作的引用可在编译器的上述阶段或运行中的任一个以及任何其它已知的阶段或运行中 进行。作为说明性示例,编译器可能在编译的一个或多个阶段中插入操作、调用、函数等等, 诸如在编译的前端阶段插入调用/操作,然后在转换阶段期间将这些调用/操作转换成较 低级代码。注意,在动态编译期间,编译器代码或动态优化代码可插入这样的操作/调用, 并优化代码以供在运行时间期间执行。作为特定的说明性示例,可在运行时间期间动态地 优化二进制代码(已经是经编译的代码)。在此,程序代码可包括动态优化代码、二进制代 码或其组合。
[0033] 与编译器类似,诸如二进制转换器之类的转换器将代码静态地或动态地转换以优 化和/或转换代码。因此,对代码、应用代码、程序代码或其它软件环境的执行的引用可表 示:(1)执行编译器程序、优化代码优化器或转换器,以动态地或静态地编译程序代码、维 护软件结构、执行其它操作、优化代码或转换代码;(2)执行包括操作/调用的主程序代码, 诸如已经被优化/编译的应用代码;(3)执行与主程序代码相关联的其它程序代码(诸如 库),以维护软件结构、执行其它软件相关操作、或用于优化代码;或(4)上述的组合。
[0034] 在一个实施例中,处理器100被配置成对代码的热部分进行再循环。在此,通过硬 件、固件、软件或其组合来标识代码的热部分。例如,动态编译器在运行时间期间剖析/跟 踪执行。并且通过动态编译器将代码段(诸如循环)标识为热代码段并作标记(例如,如 果一循环迭代超过预定数量的次数,则它被标识为热代码段)。在该情形下,可利用任何已 知的标记代码的方法(例如在定义该代码段的一个或多个指令中设置位或编码位)。例如, 在循环的开始指令(例如原子性开始或其它循环开始指令)中设置位,和/或在结束指令 (例如分支或其它结束循环指令)中设置位。
[0035] 在一个实施例中,当检测到热循环时(例如标记段被解码),利用再循环硬件来再 循环热代码(例如循环)以供执行单元140执行。例如,假定由动态编译器(或其它代码) 标识热循环。在检测到热循环的开始之后(例如通过解码逻辑125解码),热循环的余下部 分被解码逻辑125解码并通过处理器100的流水线被传送,从而填充再循环硬件,以保持该 热循环的解码格式。注意,该热循环一般从指令缓冲器被分派或从再循环硬件被直接分派, 以在该循环的第一次迭代时由执行单元140执行。在此,再循环硬件可被放置在流水线中 的解码器125之后的任何位置。然而,在一个实施例中,为了加速分派至执行时间,将再循 环硬件尽可能靠近执行单元140放置(例如紧邻在执行单元140之前)。
[0036] 再循环硬件继续被循环指令填充,直到它充满为止,或直到检测到/解码结束循 环指令为止。当被填充时,循环主体能够在该循环的后续迭代时从再循环硬件被直接分派 至执行单元140。如可从该示例中推断出,由于循环递归地执行并且能够从再循环硬件被分 派,通常预测将要采用的分支并取出新代码的前端(例如取出逻辑和分支预测逻辑120)可 能未使用。或者,至少处理器流水线不会显著受益于前端的进一步操作。作为结果,在一个 实施例中,在循环再循环模式(即,当该循环在再循环硬件之外被服务时)期间,将前端断 电。在此,断电可包括零电压电平。然而,在替代实施例中,断电包括待机模式,其中取出/ 分支预测逻辑120中的数据不丢失。如下文中更详细讨论,作为潜在的优点,将分支预测逻 辑断电、并维持超出该循环的分支预测信息以及电源后备潜在地导致该循环之后的加速执 行。
[0037] 因此,如可看出,每当在循环的另一迭代期间遇到指令,能够从再循环队列直接分 派处于解码格式的循环指令,而不是从储存器175或位于解码逻辑125之前的指令高速缓 存取出指令并等待指令传送通过处理器1〇〇的整个流水线。并且(在物理上和在层级上) 非常接近执行单元140的再循环队列的位置实现更高效和更快的循环执行。作为结果,经 标识的热循环的性能潜在地被显著提高。此外,在解码逻辑125之后将循环移动至再循环 硬件允许在再循环期间断电以节省功率。作为结果,性能得以提高,同时实现了能源高效节 电。
[0038] 参考图2-4,示出了适于包括具有可配置的最大电流的处理器的计算机系统配置 的实施例。参考图2,示出双处理器系统200的说明性示例,该系统的每个处理器205、210 中具有集成的存储器控制器和输入/输出(I/O)控制器。尽管为了避免模糊本讨论而未进 行详细讨论,但平台200示出用于在组件之间传输信息的多个互连。例如,在一个实施例 中,点对点(P2P)互连215包括串行P2P、双向的、高速缓存一致性的总线,该总线具有能够 实现高速数据传输的分层协议架构。此外,众所周知的接口(外围组件互连高速,PCIE)或 其变型被用于I/O设备245、250之间的接口 240。但是,任何已知的互连或接口可被用于与 计算系统的域通信或在计算系统的域内通信。
[0039] 转到图3,示出四处理器平台300。像图2-样,处理器301-304通过高速P2P互 连305彼此耦合。并且处理器301-304包括集成控制器301c-304c。图4描绘具有不同配 置的另一四核处理器平台400。在此,代替使用处理器上I/O控制器通过I/O接口(诸如 PCI-E接口)与I/O器件通信,P2P互连被用于耦合处理器和I/O控制器中枢420。然后中 枢420又通过类似PCIE的接口与I/O器件通信。
[0040] 接下来参考图5,示出了用于实现热的代码段的再循环的多个模块的逻辑表示的 实施例。热代码段505包括代码的任何已知的"热"或复现部分。作为第一示例,代码段505 包括迭代的代码段,诸如循环(例如,在编程语言中公知的for或while循环)。在此,基 于设计实现,可将要递归执行的任何循环确定为"热循环"或热代码段。在另一实施例中, 如果循环505执行超过阈值次数,则将它确定为热代码段。在该情形下,硬件、固件、软件或 其组合跟踪被执行的代码,诸如在运行时间利用动态编译器来跟踪执行。具体地,确定循环 505执行了多少次(例如循环经过一段代码多少次)。并且,如果该次数大于或等于阈值, 将其标记为热代码段505。
[0041] 注意,热代码段505不限于循环,更确切地,在另一实施例中,它表示频繁执行或 迭代执行的任何代码部分。例如,程序可频繁地调用来自库代码的特定函数。作为在一时 间量上的频繁调用的结果,确定该函数是"热代码"。因此,该函数被标记为热段。并且,当 遇到函数调用指令(例如分支指令)时,利用本申请中描述的再循环技术(例如通过执行 逻辑530从再循环逻辑520中的再循环队列分派用于该函数的指令的经解码格式)。如该 说明性示例所采用,热代码不限于连续的递归执行。但是更确切而言,在至少一个情形中, 热代码包括频繁执行的代码(例如在时间份额上执行或遇到多次),即使其它代码在这些 频繁执行的代码之间执行。可能经常执行的代码(因此被确定为热代码)的分组的其它示 例包括事务、指令/操作的原子性组、帮助线程等等。
[0042] 不过,不论热代码段505的"类型"是什么,一旦被标识,就如上所述地标记代码段 505。在此可使用标识代码的特定部分或界定代码的部分的任何已知方法。作为第一示例, 将新的指令作为起始指令506和结束指令507来放置,以将代码段505标记为热代码。在 另一实施例中,加载诸如寄存器(未示出)之类的存储结构,寄存器具有标识一个或多个热 代码段的地址范围。在又一种情形中,编译、重新编译、优化、转换、扩充、修改、编码或改变 起始指令506和结束指令507,以指示代码段505是热代码段。例如,假定段505是循环。 开始循环指令506包括在开始指令506中的字段506b (可被称为位或位位置,但不限于单 个位或位位置)以标记/指示热代码段的开始。换言之,当开始指令506包括被设置成开 始热段值的位位置506b时,其指示接下来的代码(代码段505)是热代码段。类似地,与结 束指令507 (包括有被设置成结束热段值的507e)相结合地,如上所述的开始指令506定义 了热段505。
[0043] 如以上相对于图1所述,可通过指令集架构(ISA)来定义指令以及其中的位位置 的编码。换言之,解码逻辑515被设计和配置成识别代码/指令中的某些模式。因此,当接 收到具有特定操作代码(操作码)的开始指令506时,解码逻辑515被设计和配置成查看 位位置506b。如果506b被设置成开始热段值,则解码逻辑515识别热代码段505被定义。 并且,流水线级的余下部分(例如再循环逻辑520以及其它级)基于解码逻辑515对字段 506b的解释来采用预定义动作。注意,字段506b可以是该指令自身的部分、前缀、提示、附 加位、或将信息与指令相关联的其它字段或存储位置。如标记指令的多种形式所暗示,这样 的标记可以是明确的(即确定地将段505标记为热段),或可以是提示(即段505是热段的 软件指示,硬件或固件可基于任何其它因素来选择接受或忽略这样的软件指示)。
[0044] 因此,一旦通过硬件、固件、软件或其组合标识和标记了热段505,解码逻辑515就 解码由前端逻辑510取出的代码(例如将代码段505取出至指令高速缓存(未示出)中)。 响应于解码逻辑解码开始指令506,该开始指令506的位位置506b被标记,再循环逻辑520 进入检测模式。在此,已经遇到代码段505的开始,但尚未发现该代码段的全部。因此,在检 测模式中,代码段505的指令被解码逻辑515解码,并以解码格式被存储在再循环逻辑520 中。注意,热代码段505的解码格式在再循环逻辑520中的存储并不排除正常的流水线操 作(例如将解码指令存储在正常缓冲器中和正常的分派过程)。在该情形下,在循环检测模 式中,再循环逻辑520正在加载代码段505的解码格式。并且,至少部分并行地,执行逻辑 530正在执行代码段505的解码格式。作为结果,根据所选择的实现,从加载指令的再循环 逻辑520或正常缓冲器分派指令。
[0045] 在一个实施例中,再循环逻辑520包括耦合在解码逻辑515之后的存储结构,用 于保持热代码段505的解码格式。该存储结构可包括任何已知的非瞬态可读介质或结构。 这样的存储设施的示例包括队列、缓冲器、寄存器、储存器、高速缓存等等。仅根据图1与5 之间的差别,可以看出从图5中的示图中省略了多个处理器流水线级。然而,将再循环逻辑 520描绘为耦合在解码逻辑515之后,但在解码逻辑515与再循环逻辑520之间可存在任何 数量的级。而且,在一个实施例中,再循环逻辑520紧密耦合至执行逻辑530,比如在一个级 中并且紧邻在执行逻辑530之前。在此,可基于多种因素来选择再循环缓冲器的尺寸(即 能够被容纳的代码部分的尺寸),这些因素包括:要容纳的代码段有多大;将规定代码段的 最小尺寸的前端逻辑断电或上电以实现这样的功率节省的时间量;确保存储结构的性能益 处、成本和复杂度的代码段尺寸、管芯空间、以及用于实现处理器单元/硬件的另一已知的 设计折衷。
[0046] 在一个实施例中,再循环逻辑520还包括控制逻辑或与控制逻辑相关联,以执行 代码再循环。在最基本的形式中,再循环逻辑包括类似分派的逻辑(或再利用现有的处理 器分派逻辑),用于分派来自再循环逻辑520中的存储结构的经解码指令。例如,与指令指 针被用来引用要执行的当前指令(或基于远景的下一指令)非常类似,在一个示例中,再 循环逻辑520包括再循环指令指针。在该情形下,代替指令"地址",再循环指令指针指向/ 引用存储结构内的当前解码指令。作为简单的说明性示例,该存储结构中的第一指令位置 是0,并且这些位置递增。在此,该指令指针可仅包括用于保持值的寄存器(例如,3引用存 储结构中的第4个指令位置)。分派逻辑然后将再循环指令指针所引用的指令分派给执行 逻辑530以供执行,并将该指令指针递增至再循环存储结构中的下一位置。此外,当代码段 505包括循环时,则控制逻辑在它到达该循环的"结束"(例如循环主体的末尾,可包括将执 行返回至该循环的开始以进行另一迭代的分支指令)时进一步循环再循环指令指针,直到 满足迭代条件为止(例如,直到通过该循环的迭代次数已经出现或者遇到迭代条件的另一 末尾为止)。
[0047] 如上文所提到,在一个实施例中,前端逻辑510在再循环期间被断电。换言之,在 被标记的结束指令507被解码之后,再循环逻辑520被热代码段507的解码格式填充。作 为结果,当执行来自逻辑520的再循环时(即从再循环逻辑520直接分派经解码指令),前 端逻辑510不再取出和提供用于代码段505的指令。作为结果,在该情形下,前端逻辑510 在再循环模式期间被断电以节能。如下文中更详细讨论,在一个实施例中,分支预测逻辑将 热代码段505预测为不被采用的分支。作为结果,分支预测逻辑导致热代码段505之后的 "下一指令"被取出。并且,当前端逻辑510被断电至待机模式(并且不是关闭模式)时, "下一指令"仍驻留在前端510中。因此,在再循环完成并且前端510上电之后,"下一指令" 仍然被取出并准备好通过处理器流水线传送。注意,在一些实施例中,前端可被完全断电; 然而,在这些情形下,为了节省"待机"模式(足够电压以保持驻留在前端逻辑510中的数 据/信息)与关闭模式(VDD = 0)之间的附加功率,可能引发额外的时间损失。
[0048] 转至图6,示出了用于实现热代码段的再循环的多个模块的逻辑表示的另一实施 例。在此,标识程序代码中的热循环605。虽然在下文中参考图6讨论热循环,但重要的是 应注意,可将以上参考图5提及的相似的模块、方法和技术应用于其它热代码段。在一个实 施例中,动态优化器/编译器确定循环605迭代至少阈值次数;该阈值被包括在1至1000 之间的任何范围或范围的子集之中。在程序分析和模拟期间,确定一些程序花费它们总体 执行时间的30%至90%来执行迭代超过5次的循环。因此,在本说明性情形下,假定用于确 定热循环的循环迭代的阈值为5。因此,在运行时间期间,动态编译器环境跟踪热循环605 的执行。并且热循环605迭代10次,因此动态编译器环境确定循环605是热的。
[0049] 注意,如果热循环605随后迭代小于5次,则该标识可在以后被动态编译器改变。 此外,在另一实现中,动态编译器仅在热循环605在执行循环605的多个不同实例上迭代超 过阈值5次之后标识热循环605。此外,标识不限于动态编译器。替代地,标识可在动态编 译期间通过微代码、通过固件或通过硬件自身来完成。
[0050] 然而,继续以上利用动态编译器的示例,在确定循环605是"热的"之后,通过软件 将循环605标记为热的。在一个实施例中,将单个位(位606b)添加至循环605的开始循 环指令606的编码,因此当将位606b设置成标记值时,它指示指令606界定热循环的开始。 在此,位607e以与结束循环指令607相似的方式操作。在一个实施例中,将这样的位添加 至任何指令编码以实现对代码段的灵活标记。在另一实施例中,仅将这样的编码添加至特 定指令。例如,因为循环通常以跳回至该循环的开始或另一分支的分支指令结束,所以将循 环结束位607e添加至分支指令,并将循环开始位607b添加至开始一组指令的执行的原子 性指令或开始循环605的执行的其它指令。
[0051] 作为结果,循环605可以被确定为热的(通过初始静态编译器提示或其它软件标 识)或可以不被确定为热的(默认不为热的)。然而,在上述示例中执行之后,动态编译器 分别用位606b和607e来标记指令606和607。在随后的执行期间,取出逻辑611取出热循 环605 (例如至少循环605的开始指令606和随后的指令,以形成迭代的热代码段)。如所 示,前端逻辑610还包括下文更详细描述的分支预测逻辑612。然而,前端逻辑610还可包 括其它单元,诸如指令高速缓存和/或指令转换后备缓冲器(Ι-TLB)。
[0052] 解码逻辑615识别经标记的热循环605。在此,解码逻辑615解码开始指令606, 该开始指令606的位606b被设置成经标记的或开始值。作为结果,解码逻辑615发信号通 知再循环逻辑620进入循环检测模式(S卩,逻辑620检测和加载具有经标记位606b的循环 开始指令606之后的指令)。在一个实施例中,模式寄存器630用于保持再循环模式。在 此,发信号通知再循环逻辑620的循环检测模式包括设置寄存器630中的再循环模式字段, 以指示再循环逻辑620应当进入循环检测模式。在检测模式下,当取出逻辑611取出循环 605中的开始指令606之后的指令并且解码逻辑615解码它们时,它们被分派至执行逻辑 670。同时,它们被加入队列、被缓冲和/或被加载到再循环储存器621中。换言之,再循环 逻辑620正在通过将每个经解码的指令存储在队列、缓冲器或其它存储结构621中来发现 或检测循环605的范围。
[0053] 循环检测过程继续,直到解码逻辑615解码具有标记为结束热段值的结束位607e 的结束指令607或储存器621溢出(即循环605对于再循环储存器621过大,从而触发异 常)为止。在检测到结束指令607时,更新模式寄存器630以反映再循环逻辑将进入循环 再循环模式(即,检测到循环,循环605的解码格式被保持在储存器621中,并且该循环可 从再循环储存器621迭代,而不是必须从前端610中的指令高速缓存重新取出或获取循环 指令)。此外,将循环结束寄存器627设置为保持再循环缓冲器621中保持的代码指令607 的结束热段(例如被示为保持在缓冲器621的最后位置624η中)的引用。然而,取决于循 环605和缓冲器621的尺寸,结束寄存器627可通常引用保持解码格式的结束指令607的 储存器621的不同位置。
[0054] 在一个实施例中,再循环逻辑620包括指向要分派的当前指令的位置寄存器626。 如所示,当前指令包括保持在条目624b中的经解码指令。作为结果,指令624b被分派至执 行逻辑670以供执行。并且,将位置寄存器626递增以引用条目621c中的下一经解码指 令。当位置寄存器626引用结束寄存器621中的相同条目时(即表明已经到达该循环的结 束),则位置寄存器626被重置为引用条目621a中保持的经解码的第一指令(S卩,位置寄存 器626从结束循环回到开始)。
[0055] 再循环逻辑620继续迭代通过储存器621,循环并分派要由执行逻辑670执行的 指令,直到满足结束迭代结束条件为止。最典型的结束迭代条件是在该循环已经迭代必要 次数时(例如,对于设置为迭代100次的循环,则结束条件是当其完成100次迭代时)。通 常,这通过结束指令607的分支未被采用(即返回至该循环的开始的该分支未被采用,因为 已经满足的该循环的迭代次数条件)来指示。其它迭代结束条件的示例包括从循环主体内 进行不返回至循环开始的分支、异常、中断、或处理器执行中的任何其它已知的打断。
[0056] 在一个实施例中,在循环再循环模式期间,功率逻辑635使前端逻辑610断电。在 此,分支预测逻辑612、取出逻辑611以及任何指令高速缓存可被断电以节能,同时处理器 从再循环逻辑620执行。在一个实施例中,功率逻辑635将前端610置于电源关闭模式(即 时钟和功率被门控)。不过,此时前端610中的当前信息将会丢失。因此,在另一实施例中, 前端610被断电至待机模式,其中时钟被门控并且功率被降低,使得前端610中的信息被保 持。由于前端610处于待机模式,在循环再循环模式期间,在循环605之后取出的指令停留 在前端610的流水线锁存器中。当满足结束迭代条件并且循环再循环模式退出时(如在此 在寄存器630中表示),接下来的指令(循环605之后)继续沿着前端610的流水线移动通 过。换言之,前端610在进入循环再循环模式时冻结,并在退出时解冻。该行为导致潜在的 性能益处(即,避免了取出接下来的指令的等待时间)。
[0057] 此外,由于分支预测612也处于待机中,它不会在循环605的执行期间训练/学 习。先前,在热循环605的执行期间,分支预测器将训练结束指令607分支至循环的开始是 最常采用的。但是,由于分支预测器612在该时间期间未被训练,因此它不训练最后分支为 最常采用。此外,在退出循环再循环模式之后开始重新训练时,分支预测612不知道循环 605的再循环的时间推移,并确定分支至开始指令606是最常采用的。在一些实例中,该错 误训练将是糟糕的。然而,在该情形下,当该分支被预测为几乎不采用时,在随后的预测和 取出时,分支预测逻辑612使取出逻辑取出循环605之后的指令。并且作为结果,实现上述 性能益处(在循环再循环期间,使该循环之后的指令准备就绪并且冻结在前端中)。
[0058] 接下来参考图7,描绘了能够处理嵌套循环的再循环逻辑的实施例。类似于图6的 讨论,再循环逻辑720包括用于保持热循环指令的解码格式的存储结构721、用于充当再循 环指令指针的位置寄存器726、用于指向该热循环的经解码结束指令的结束寄存器727。此 夕卜,当软件标识热循环并标记外部循环具有热循环时,其中嵌套的循环也可利用内循环开 始和结束位被标记(即标记为热的)。作为结果,具有嵌套循环的热循环包括利用开始热循 环指令、开始内循环指令、结束内循环指令和热循环结束指令标记的代码。
[0059] 当开始内循环指令被解码时,将内循环开始寄存器730设置为指向条目721e中的 经解码的内循环开始指令。由于该指令表示热循环内的内循环的开始,再循环逻辑720已 经处于循环再循环模式。作为结果,执行继续,直到遇到结束内循环指令为止。该内循环被 再循环(即,当位置寄存器726到达被内循环结束寄存器735引用的条目721i之后,位置 寄存器726循环返回至被内循环开始寄存器730引用的条目721e),直到满足结束内循环条 件为止。在此,当内循环退出时(即,不在结束指令721i处分支以返回至条目721e处的内 循环的开始,该条目721e被内循环结束寄存器735引用),再循环逻辑720将为了该外循 环而停留在循环再循环模式下。因此,该再循环模式不退出而是继续。注意,在初始动态代 码剖析期间,内循环可能首先被确定为外循环之前的热循环,因为内循环对于通过外循环 的每次执行可能迭代多次(例如在循环10次的外循环的每次执行时,迭代通过内循环100 次)。然而,如果外循环然后迭代许多次(例如,相比于5次循环阈值,迭代10次),则它也 可被标记为热循环以进行再循环。
[0060] 换言之,内循环以与先前热循环检测和再循环相似的方式操作。然而,循环通常继 续而不是完成,因此在内循环之后将不采用所有分支的假设可能不正确。例如,如果硬件预 测内循环分支将被采用并且跳转至内循环首部,则内循环将以展开形式被缓冲在再循环队 列721中,这将导致队列721的溢出。因此,在一个实施例中,为防止该溢出情形,前端和后 端不同地处理内循环分支。这里,当解码逻辑解码来自内循环结束指令的内循环结束位时, 前端假定内循环分支未被采用,并缓冲接下来的指令,直到它解码外循环的循环结束指令 中的循环结束位。然而,后端采用内循环分支并以再循环模式迭代通过内循环,重新使用来 自再循环队列721的指令。作为结果,前端处于检测模式中,直到外循环结束指令被解码, 同时后端从结束内循环指令被解码的时间到外循环结束指令根据分支预测被解码的时间 处于循环再循环模式,导致内循环结束指令之后接下来的指令被取出。注意,如果内循环分 支与内循环首部(开始指令)的多个循环(例如3-4个)在一起,则该编译器还可在该内 循环分支之前插入多个操作。
[0061] 此外,当内循环结束时,该分支不被采用,并且可导致循环再循环模式中的分支错 误预测。先前,响应于分支错误预测,再循环模式将退出。然而,在一个实施例中,对于内循 环分支,分支错误预测不导致从循环再循环模式的退出。替代地,在该情形下,处理器流水 线的执行级被清除,同时从再循环队列重新发布这些指令。当再循环逻辑720接收来自执 行级的错误预测信号时,它检查该错误预测是否由内循环分支引起。如果是,则再循环队列 721发布该分支之后接下来的指令,从而停留在循环再循环模式下。然而,如果它不由内循 环分支引起,则退出循环再循环模式。
[0062] 转至图8,示出了用于再循环循环代码并节能的方法的模块和/或流程图的表示 的实施例。注意,以基本上串行的方式示出流程(或模块)。然而,并不要求这些流程的串 行性质以及所示次序。例如,参考图8,在一些实现中,可能不特定执行对前端的断电和加 电。替代地,可保持供电,同时通过再循环的接近来提高性能。此外,以基本线性或串行的 方式示出了流程。然而,可并行或以不同的顺序来执行这些流程。另外,所示流程或逻辑框 中的任何一个都可以在硬件、软件、固件或其组合内执行。如以上和以下所述的,在一个实 施例中,每个流程表示模块、模块的部分、或模块的重叠。此外,一个或多个指令或操作形式 的任何程序代码在被执行时可使机器执行以下所示出和描述的流程。
[0063] 在流程805,确定热代码段。如上所述,硬件、固件、软件或其组合确定段代码是否 是热的。例如,如果代码的部分在一时间段上执行超过多次,则将其确定为"热"的。作为另 一示例,在代码段是循环的情况下,如果一循环迭代超过预定次数,则将该循环确定为热循 环。作为结果,如果循环在流程805被确定为热循环,则在流程810标记该热循环(例如, 通过动态编译器来设置开始循环指令和结束循环指令中的位,以将该循环标定为热循环)。
[0064] 在流程815,开始标记指令被解码。并且,在流程820,响应于解码经标记的开始循 环指令,再循环逻辑进入循环检测模式。此外,在流程825,分支预测逻辑确定不采用该循环 分支。在830,由于该循环分支被预测为不采用,则分支预测器导致取出逻辑取出循环之后 的一个或多个接下来的指令。在流程835,当该循环被解码时,再循环储存器被循环指令的 经解码格式填充。在再循环储存器填充的同时,对于该循环的第一次迭代,分派(从再循环 储存器或一般的缓冲存储器)并执行被解码的指令。
[0065] 当在流程840中结束循环指令被解码时,则在流程845,再循环逻辑进入循环再循 环模式。当在流程845进入循环再循环模式时,在流程850将其前端或部分(例如分支预测 器、取出逻辑或指令高速缓冲)断电至待机模式(例如降低电压和/或时钟被门控)。在流 程855,在循环再循环模式期间,将经解码的循环指令从再循环储存器分派至执行逻辑。在 流程860,在指令被分派时,执行逻辑迭代地执行指令,直到在流程865遇到结束循环条件。 一旦遇到结束循环条件,则在流程870,退出循环再循环模式并且将前端通电至活动或工作 状态。在流程875,由于前端先前取出了该循环之后的接下来的指令,则接下来的指令传送 通过处理器流水线并执行。
[0066] 在本文中使用的模块指的是硬件、软件、和/或固件的任意组合。作为示例,模块 包括与非瞬态介质相关联的诸如微控制器之类的硬件,该非瞬态介质用于存储适于由该微 控制器执行的代码。因此,在一个实施例中,对模块的引用是指硬件,该硬件被专门配置成 识别和/或执行要保存在非瞬态介质上的代码。另外,在另一实施例中,模块的使用是指包 括代码的非瞬态介质,该代码专门适于由微处理器执行以进行预定操作。并且可推断,在又 一实施例中,术语模块(在该示例中)可以指微控制器和非瞬态介质的组合。通常,被示为 分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、 或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语逻辑的 使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。
[0067] 如在本文中所使用的值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知 表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进 制逻辑状态。例如,1指的是逻辑高电平,0指的是逻辑低电平。在一个实施例中,诸如晶体 管或闪存单元之类的存储单元能够保持单个逻辑值或多个逻辑值。不过,也使用了计算机 系统中的值的其它表示。例如,十进制数字10也可被表示为二进制值1010和十六进制字 母A。因此,值包括能保持在计算机系统中的信息的任何表示。
[0068] 而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表 示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例 中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值可能包括高逻辑 值,即重置,而已更新的值可能包括低逻辑值,即置位。注意,值的任何组合可用来表示任意 数量的状态。
[0069] 上述方法、硬件、软件、固件或代码的实施例可通过存储在机器可存取、机器可读、 计算机可存取、或计算机可读介质上可由处理元件执行的指令或代码来实现。非瞬态机器 可存取/可读介质包括提供(即存储和/或发送)诸如计算机或电子系统之类的机器可 读的形式的信息的任何机制。例如,非瞬态机器可存取介质包括:诸如静态RAM (SRAM)或 动态RAM (DRAM)之类的随机存取存储器(RAM) ;R0M;磁或光存储介质;闪存设备;电存储设 备;光存储设备;声存储设备;其它形式的用于保持从瞬态(传送)信号(例如载波、红外 信号、数字信号)接收的信息的存储设备等等,这些信号与可从其接收信息的非瞬态介质 相区别。
[0070] 贯穿本说明书,对"一个实施例"或"一实施例"的引用意味着结合该实施例描述 的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书的多个 位置出现短语"在一个实施例中"或"在实施例中"不一定指的是同一实施例。此外,在一 个或多个实施例中,特定特征、结构或特性可以以任何合适的方式组合起来。
[〇〇71] 在上述说明书中,已经参考特定示例性实施例给出了详细描述。然而,显然可对这 些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范 围。相应地,说明书和附图应被视为说明性的,而不是限制性的。而且,实施例和其它示例 性语言的上述使用不一定指的是同一实施例或同一示例,而可能指的是不同和独特的实施 例,也有可能是同一实施例。
【权利要求】
1. 一种用于高效能耗的装置,包括: 前端逻辑,配置成至少取出迭代的热代码段; 解码逻辑,耦合至所述前端逻辑,所述解码逻辑被配置成识别所述迭代的热代码段; 再循环逻辑,耦合至所述解码逻辑,所述再循环逻辑被配置成保持来自所述迭代的热 代码段的指令的经解码格式; 执行逻辑,耦合至所述再循环逻辑,所述执行逻辑被配置成迭代地执行所述再循环逻 辑中保持的指令的所述经解码格式,直到检测到迭代结束条件为止;以及 功率逻辑,被配置成在所述执行逻辑迭代执行指令的所述经解码格式期间将所述前端 逻辑断电至待机模式,直到检测到所述迭代结束条件为止。
2. 如权利要求1所述的装置,其特征在于,耦合至所述前端逻辑的被配置成识别所述 迭代的热代码段的所述解码逻辑包括: 所述解码逻辑,被配置成识别所述迭代的热代码段的起始处的开始热代码段指令以及 所述迭代的热代码段的结束处的结束热代码段指令,其中所述开始热代码段指令包括被设 置成开始值的开始热段字段,且所述结束热代码段指令包括被设置成结束值的结束热段字 段。
3. 如权利要求1所述的装置,其特征在于,被配置成保持来自所述迭代的热代码段的 指令的经解码格式的所述再循环逻辑包括:再循环缓冲器,被配置成以程序顺序保持所述 迭代的热代码段的指令的所述经解码格式,并且其中所述再循环逻辑进一步包括循环位置 寄存器和循环结束寄存器,所述循环位置寄存器被配置成保持对所述再循环缓冲器内的当 前执行位置的引用,且所述循环结束寄存器被配置成保持对所述再循环缓冲器中保持的所 述结束热代码段指令的经解码格式的引用。
4. 如权利要求3所述的装置,其特征在于,所述再循环逻辑进一步被配置成分派来自 所述循环位置寄存器中引用的当前执行位置的指令的经解码格式以供所述执行逻辑执行, 并将所述循环位置寄存器递增以保持对所述再循环缓冲器内的下一执行位置的引用。
5. 如权利要求2所述的装置,其特征在于,所述前端逻辑包括:分支预测逻辑,适于预 测要采用的分支;取出逻辑,用于取出至少所述迭代的热代码段;以及指令高速缓存。
6. 如权利要求5所述的装置,其特征在于,被配置成在所述执行逻辑迭代地执行指令 的所述经解码格式期间将所述前端逻辑断电至待机模式、直到检测到所述迭代结束条件为 止的所述功率逻辑包括: 模式寄存器,所述模式寄存器被配置成保持再循环模式指示器,其中所述再循环模式 指示器将响应于所述解码逻辑识别所述开始热代码段指令而被设置成循环检测模式指示 器,且将响应于所述解码逻辑识别所述结束热代码段指令而被设置成循环再循环模式指示 器; 控制逻辑,被配置成响应于被保持在所述模式寄存器中的所述再循环模式指示器被设 置成所述循环再循环模式指示器,将所述分支预测逻辑、所述取出逻辑以及所述指令高速 缓存断电至待机模式。
7. 如权利要求1所述的装置,其特征在于,被检测的所述迭代结束条件从由以下项组 成的组中选择:检测到未被采用的最后分支;检测到迭代循环的结束;检测到采用另一分 支;检测到异常;以及检测到中断。
8. -种用于高效能耗的装置,包括: 解码逻辑,被配置成解码开始指令和结束指令,所述开始指令用于指示热代码段的开 始,且所述结束指令用于指示所述热代码段的结束; 再循环逻辑,在处理器流水线中耦合在所述解码逻辑之后,所述再循环逻辑被配置成 响应于所述解码逻辑解码至少所述开始指令而保持来自所述热代码段的指令的经解码格 式,并分派指令的所述经解码格式以供执行;以及 执行逻辑,耦合在所述处理器流水线中的所述再循环逻辑之后,所述执行逻辑被配置 成响应于从所述再循环逻辑分派指令的所述经解码格式,执行指令的所述经解码格式。
9. 如权利要求8所述的装置,其特征在于,所述热代码段包括热循环,所述开始指令包 括开始循环指令,所述开始循环指令具有开始标记位以指示所述开始循环指令将开始所述 热循环,且所述结束指令包括结束循环指令,所述结束循环指令具有结束标记位以指示所 述结束循环指令将结束所述热循环。
10. 如权利要求9所述的装置,其特征在于,被配置成响应于所述解码逻辑解码至少所 述开始指令而保持来自所述热代码段的指令的经解码格式并分派指令的所述经解码格式 以供执行的再循环逻辑包括: 再循环储存结构,被配置成保持来自所述热循环的指令的所述经解码格式; 再循环指令指针,被配置成指向指令的所述经解码格式的当前经解码格式指令; 分派逻辑,被配置成响应于所述再循环指令指针指向所述当前经解码格式指令,而将 所述当前经解码格式指令分派至所述执行逻辑;以及 循环逻辑,用于将所述再循环指令指针从所述热循环的结束循环至所述热循环的开 始,直到满足迭代结束条件为止。
11. 如权利要求9所述的装置,其特征在于,还包括:前端逻辑,被配置成取出所述热代 码段;以及功率逻辑,被配置成响应于从所述再循环逻辑分派指令的所述经解码格式,在所 述执行逻辑执行指令的所述经解码格式期间将所述前端逻辑断电。
12. -种用于高效能耗的装置,包括: 前端逻辑,被配置成取出开始指令和结束指令; 解码逻辑,耦合至所述前端逻辑,所述解码逻辑被配置成解码所述开始指令和所述结 束指令,所述开始指令用于指示热循环的开始,且所述结束指令用于指示所述热循环的结 束,其中所述热循环包括多个热循环指令; 再循环储存结构,耦合至所述解码逻辑,所述再循环储存结构被配置成,响应于所述解 码逻辑解码所述开始指令和结束指令,保持所述多个热循环指令的经解码格式; 再循环逻辑,被配置成迭代通过分派所述多个热循环指令的所述经解码格式的所述再 循环储存结构,直到检测到结束热循环条件为止; 执行逻辑,被配置成响应于所述再循环逻辑分派所述多个热循环指令的经解码格式, 执行所述多个热循环指令的所述经解码格式,直到检测到所述结束热循环条件为止;以及 功率逻辑,耦合至所述前端逻辑和所述解码逻辑,所述功率逻辑被配置成响应于所述 解码逻辑解码所述结束指令而将所述前端逻辑断电至待机模式,并响应于检测到所述结束 热循环条件将所述前端逻辑返回至工作模式。
13. 如权利要求12所述的装置,其特征在于,所述前端逻辑包括分支预测逻辑和取出 逻辑,所述分支预测逻辑被配置成预测要采用的分支,所述取出逻辑被配置成取出所述开 始指令和所述结束指令。
14. 如权利要求13所述的装置,其特征在于,所述分支预测逻辑进一步被配置成预测 包括所述热循环的分支将不被采用,并且所述取出逻辑进一步被配置成响应于所述分支预 测逻辑预测包括所述热循环的分支将不被采用,在所述功率逻辑将所述前端逻辑断电之前 取出在所述热循环指令的结束之后的下一指令。
15. 如权利要求14所述的装置,其特征在于,所述执行逻辑进一步被配置成响应于检 测到所述结束热循环条件,在所述功率逻辑将所述前端逻辑返回至工作模式之后执行由所 述取出逻辑取出的所述下一指令。
16. 如权利要求12所述的装置,其特征在于,所述再循环逻辑包括: 循环结束寄存器,被配置成保持对所述再循环储存结构中保持的所述多个热循环指令 的所述再循环储存结构中保持的结束热循环指令的引用; 位置寄存器,被配置成保持对所述再循环储存结构中所保持的所述多个热循环指令的 所述再循环储存结构中保持的要分派的当前热循环指令的引用; 模式寄存器,被配置成保持再循环模式值,所述再循环模式值包括响应于所述解码逻 辑解码所述开始指令的循环检测模式值并包括响应于所述解码逻辑解码所述结束指令的 循环再循环模式值,并且其中响应于所述模式寄存器保持包括所述循环检测模式值的所述 再循环模式值,所述再循环储存结构被所述多个热循环指令填充,并且,响应于所述解码逻 辑解码所述结束指令而将所述前端逻辑断电至待机模式的所述功率逻辑包括:响应于所述 模式寄存器保持包括所述循环再循环模式值的所述再循环模式值而将所述前端逻辑断电 至待机模式的所述功率逻辑。
17. 如权利要求12所述的装置,其特征在于,被配置成响应于所述解码逻辑解码所述 结束指令而将所述前端逻辑断电至待机模式、并响应于检测到所述结束热循环条件将所述 前端逻辑返回至工作模式的所述功率逻辑包括:所述功率逻辑被配置成:响应于所述解码 逻辑解码所述结束指令,对所述前端进行时钟门控并对所述前端设置最小电压以维持当前 数据;以及,响应于检测到所述结束热循环条件,不对所述前端逻辑进行时钟门控,并将所 述前端返回至工作电压。
18. 如权利要求16所述的装置,其特征在于 所述解码逻辑进一步被配置成解码开始内循环指令和结束内循环指令,所述开始内循 环指令指示所述热循环中的内热循环的开始,所述结束内循环指令指示所述内热循环的结 束; 所述再循环储存结构进一步被配置成保持来自所述内热循环的多个内热循环指令的 经解码格式; 所述再循环逻辑被配置成迭代通过分派所述多个内热循环指令的所述经解码格式的 所述再循环储存结构,直到检测到结束内热循环条件为止,其中所述再循环逻辑进一步包 括: 内循环结束寄存器,被配置成保持对所述再循环储存结构中所保持的所述多个内热循 环指令的所述再循环储存结构中保持的结束内热循环指令的引用,以及 内循环开始寄存器,被配置成保持对所述再循环储存结构中所保持的所述多个内热循 环指令的所述再循环储存结构中保持的开始内热循环指令的引用;以及 所述执行逻辑进一步被配置成响应于所述再循环逻辑分派所述多个内热循环指令的 经解码格式,执行所述多个内热循环指令的所述经解码格式,直到检测到所述结束内热循 环条件为止。
19. 一种包含代码的非瞬态介质,所述代码在被执行时导致机器执行以下能效操作: 在运行时间期间动态地确定热代码段; 标记所述热代码段以形成经标记的代码段;以及 响应于解码逻辑解码所述经标记的代码段,在保持所述热代码段的经解码格式的再循 环储存结构之外执行所述热代码段。
20. 如权利要求19所述的非瞬态介质,其特征在于,所述热代码段包括在运行时间期 间迭代超过预定次数的循环,并且在运行时间期间动态地确定热代码段包括跟踪所述循环 在执行期间迭代的次数,并响应于所述次数大于预定次数确定所述循环是热代码段。
21. 如权利要求20所述的非瞬态介质,其特征在于,标记所述热代码段以形成经标记 的代码段包括:利用开始热循环位编码所述循环的开始指令,并利用结束热循环位编码所 述循环的结束指令。
22. 如权利要求19所述的非瞬态介质,其特征在于,标记所述热代码段以形成所述经 标记的代码段包括将所述热代码段动态地编译成经标记的代码,并且其中所述代码包括: 动态编译器代码,在被执行时导致所述机器执行操作:在运行时间期间动态地确定热 代码段,并将所述热代码段动态地编译成所述经标记的代码;以及 所述经标记的代码,在被执行时导致所述机器执行操作:响应于解码逻辑解码所述经 标记的代码段,在保持所述热代码段的经解码格式的再循环储存结构之外执行所述热代码 段。
23. -种用于高效能耗的方法,包括: 确定热代码段; 标记所述热代码段的开始指令和所述热代码段的结束指令; 解码所述热代码段的所述开始指令、所述热代码段的结束指令以及所述热代码段中的 多个指令,以获得所述热代码段的经解码格式; 用所述热代码段的经解码格式来加载再循环储存结构;以及 迭代地执行来自所述再循环储存结构的所述热代码段的所述经解码格式,直到满足结 束再循环条件为止。
24. 如权利要求23所述的方法,其特征在于,确定热代码段包括:动态地确定运行时间 编译器环境所述热代码段迭代执行至少预定次数。
25. 如权利要求23所述的方法,其特征在于,所述热代码段包括热循环,并且其中标记 所述热代码段的开始指令和所述热代码段的结束指令包括标记所述热循环的开始循环指 令和所述热循环的结束循环指令。
26. 如权利要求23所述的方法,其特征在于,还包括:在用所述热代码段的经解码格式 来加载所述再循环储存结构期间,分派热代码段的所述经解码格式。
27. 如权利要求23所述的方法,其特征在于,所述再循环储存结构包括耦合在所述解 码逻辑之后并在执行逻辑之前的再循环队列。
28. 如权利要求23所述的方法,其特征在于,所述结束再循环条件从由以下项组成的 组中选择:检测到未被采用的最后分支;检测到迭代循环的结束;检测到采用另一分支;检 测到异常;以及检测到中断。
29. -种包含代码的机器可读介质,所述代码在被执行时致使机器执行如权利要求 23 - 28中任一项所述的方法。
30. -种用于高效能耗的设备,包括: 确定装置,用于确定热代码段; 标记装置,用于标记所述热代码段的开始指令和所述热代码段的结束指令; 解码装置,用于解码所述热代码段的所述开始指令、所述热代码段的结束指令以及所 述热代码段中的多个指令,以获得所述热代码段的经解码格式; 再循环装置,用于用所述热代码段的所述经解码格式来加载再循环储存结构;以及 执行装置,用于迭代地执行来自所述再循环储存结构的所述热代码段的所述经解码格 式,直到满足结束再循环条件为止。
31. 如权利要求30所述的设备,其特征在于,确定热代码段包括:动态地确定运行时间 编译器环境所述热代码段迭代执行至少预定次数。
32. 如权利要求30所述的设备,其特征在于,所述热代码段包括热循环,并且其中标记 所述热代码段的开始指令和所述热代码段的结束指令包括标记所述热循环的开始循环指 令和所述热循环的结束循环指令。
33. 如权利要求30所述的设备,其特征在于,还包括分派装置,所述分派装置用于在用 所述热代码段的经解码格式来加载所述再循环储存结构期间分派热代码段的所述经解码 格式。
34. 如权利要求30所述的设备,其特征在于,所述再循环储存结构包括耦合在所述解 码逻辑之后和在执行逻辑之前的再循环队列。
35. 如权利要求30所述的设备,其特征在于,所述结束再循环条件从由以下项组成的 组中选择:检测到未被采用的最后分支;检测到迭代循环的结束;检测到采用另一分支;检 测到异常;以及检测到中断。
36. -种用于高效能耗的系统,包括: 处理器,包括:前端逻辑,被配置成从存储器取出至少迭代的热代码段;解码逻辑,耦 合至所述前端逻辑,所述解码逻辑被配置成识别所述迭代的热代码段;再循环逻辑,耦合至 所述解码逻辑,所述再循环逻辑被配置成保持来自所述迭代的热代码段的指令的经解码格 式;执行逻辑,耦合至所述再循环逻辑,所述执行逻辑被配置成迭代地执行所述再循环逻辑 中保持的指令的所述经解码格式,直到检测到迭代结束条件;以及功率逻辑,被配置成在所 述执行逻辑迭代地执行指令的所述经解码格式期间将所述前端逻辑断电至待机模式,直到 检测到所述迭代结束条件为止;以及 耦合至所述处理器的所述存储器,其中所述存储器被配置成保持所述迭代的热代码 段。
37. 如权利要求36所述的系统,其特征在于,耦合至所述前端逻辑的被配置成识别所 述迭代的热代码段的所述解码逻辑包括: 所述解码逻辑,被配置成识别所述迭代的热代码段的起始处的开始热代码段指令以及 所述迭代的热代码段的结束处的结束热代码段指令,其中所述开始热代码段指令包括被设 置成开始值的开始热段字段,且所述结束热代码段指令包括被设置成结束值的结束热段字 段。
38. 如权利要求36所述的系统,其特征在于,被配置成保持来自所述迭代的热代码段 的指令的经解码格式的所述再循环逻辑包括:再循环缓冲器,被配置成以程序顺序保持所 述迭代的热代码段的指令的所述经解码格式,并且其中所述再循环逻辑进一步包括循环位 置寄存器和循环结束寄存器,所述循环位置寄存器被配置成保持对所述再循环缓冲器内的 当前执行位置的引用,且所述循环结束寄存器被配置成保持对所述再循环缓冲器中保持的 所述结束热代码段指令的经解码格式的引用。
39. 如权利要求38所述的系统,其特征在于,所述再循环逻辑进一步被配置成分派来 自所述循环位置寄存器中引用的当前执行位置的指令的经解码格式以供所述执行逻辑执 行,并将所述循环位置寄存器递增以保持对所述再循环缓冲器内的下一执行位置的引用。
40. 如权利要求37所述的系统,其特征在于,所述前端逻辑包括:分支预测逻辑,适于 预测要采用的分支;取出逻辑,用于取出至少所述迭代的热代码段;以及指令高速缓存。
41. 如权利要求40所述的系统,其特征在于,被配置成在所述执行逻辑迭代地执行指 令的所述经解码格式期间将所述前端逻辑断电至待机模式直到检测到所述迭代结束条件 为止的所述功率逻辑包括:模式寄存器,所述模式寄存器被配置成保持再循环模式指示器, 其中所述再循环模式指示器响应于所述解码逻辑识别所述开始热代码段指令而被设置成 循环检测模式指示器,并所述再循环模式指示器响应于所述解码逻辑识别所述结束热代码 段指令而被设置成循环再循环模式指示器; 控制逻辑,被配置成响应于被保持在所述模式寄存器中的所述再循环模式指示器被设 置成所述循环再循环模式指示器,将所述分支预测逻辑、所述取出逻辑以及所述指令高速 缓存断电至待机模式。
42. 如权利要求36所述的系统,其特征在于,被检测的所述迭代结束条件从由以下项 组成的组中选择:检测到未被采用的最后分支;检测到迭代循环的结束;检测到采用另一 分支;检测到异常;以及检测到中断。
43. -种用于高效能耗的方法,包括: 在运行时间期间动态地确定热代码段; 标记所述热代码段以形成经标记的代码段;以及 响应于解码逻辑解码所述经标记的代码段,在保持所述热代码段的经解码格式的再循 环储存结构之外执行所述热代码段。
44. 如权利要求43所述的方法,其特征在于,所述热代码段包括在运行时间期间迭代 超过预定次数的循环,并且在运行时间期间动态地确定热代码段包括跟踪所述循环在执行 期间迭代的次数,并响应于所述次数大于预定次数确定所述循环是热代码段。
45. 如权利要求44所述的方法,其特征在于,标记所述热代码段以形成经标记的代码 段包括:利用开始热循环位编码所述循环的开始指令,并利用结束热循环位编码所述循环 的结束指令。
46. 如权利要求43所述的方法,其特征在于,标记所述热代码段以形成所述经标记的 代码段包括将所述热代码段动态地编译成经标记的代码,并且其中所述代码包括: 动态编译器代码,在被执行时导致所述机器执行操作:在运行时间期间动态地确定热 代码段,并将所述热代码段动态地编译成所述经标记的代码;以及 所述经标记的代码,在被执行时导致所述机器执行操作:响应于解码逻辑解码所述经 标记的代码段,在保持所述热代码段的经解码格式的再循环储存结构之外执行所述热代码 段。
【文档编号】G06F9/30GK104115094SQ201280069797
【公开日】2014年10月22日 申请日期:2012年12月12日 优先权日:2011年12月15日
【发明者】J·郑, 吴友峰, C·C·王, H·金 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1