用于预测处理器组件挂起的系统及其方法

文档序号:6566919阅读:112来源:国知局
专利名称:用于预测处理器组件挂起的系统及其方法
技术领域
本发明是有关于处理装置的省电设计(power saving),尤指 悬置处理装置的特定组件。
背景技术
由于在管线之不同组件同时处理多个指令之能力,管线处理 (pipelined processing)通常提供改进的效能。使用分支预测(branch prediction)技术可进一步提升效能,藉此处理装置之分支预测单元预 测是否选取即将来到的流程改变(change of flow, COF)指令所呈现的 分支。若预测将要选取该分支,则可将分支后的指令预加载至该处理 装置之指令高速缓存中,并且该指令亦可在解析(resolve) C0F指令前 被全部或部份地执行。然而,如果发生错误预测,通常管线会被注满 (flushed)且会拋弃任何与错误预测有关联的指令之执行的结果。因 此,错误预测经常造成处理器相当大的电力消耗以及未有效利用的处 理周期。
无论处理器之分支预测的有效性如何,将会了解,管线处理装置 提取(fetch)及执行指令可不包含或需要使用该处理装置之一个或多 个组件。用以说明,代表整数运算之指令的执行通常不需要使用处理 装置的浮点单元(floating point unit, FPU)。因此,即使即将来到 的指令串流(stream)不需要使用某些组件,该处理装置在维持某些组 件于致能状态的同时经常不必要地消耗电力。因此, 一种降低处理装 置的电力消耗以及降低与错误预测的分支有关联之损失的系统与方法 将是有益的。

发明内容
图1至5说明用于动态挂起处理器组件的例示的系统与技术以便 降低处理装置的电力消耗。在至少一个实施例中,指令周期是从储存于高速缓存中的指令决定,其中指令周期表示预测将要由处理装置所 执行的存在于高速缓存中的序列指令。估计指令周期的持续时间,而 可将非预期在指令周期期间使用的处理装置的一个或多个组件挂起达
一部份或全部的该持续时间。举例来说,可藉由时钟闸控(clock gating) 或藉由从一个或多个电源域(power domain)隔离该组件来挂起该组件。


本发明之目的及优点从以下结合附加图标之详细说明对在此技术 领域具有通常知识者将会是显而易见的,其中类似的组件符号系用来 表示类似的组件,并且其中
图1是说明根据本发明之至少一个实施例之例示的处理系统之方 块图2是说明根据本发明之至少一个实施例之第1图之例示处理系 统之例示挂起控制器的方块图;以及
图3、 4及5是说明根据本发明之至少一个实施例之用于动态挂起 处理装置之组件之例示方法的流程图。
具体实施例方式
现参考图1,说明根据本发明之至少一实施例之例示的处理系统 100。该处理系统100包括如处理器102之处理装置,该处理装置耦合 至一个或多个周边组件,例如主总线接口单元104、存储器控制器(MC) 106、以及系统存储器108。该处理器102包括指令管线(instruction pipeline) 110,该指令管线110具有如指令高速缓存112、预取模块 114、译码模块116、地址计算模块118、以及执行模块120。该执行模 块120可包括如整数单元122、浮点单元(FPU)124、多媒体延伸(醒X) 单元126等。该处理器102可进一步包括挂起控制器130、译码高速缓 存132、 二阶(L2)高速缓存134、以及作为该处理器102之组件与周边 组件间之接口的总线控制器(BC) 136。
根据分支预测信息或其它预取信息,该预取模块114自指令高速 缓存112或自系统存储器108撷取被识别的指令,并且提供该指令至 译码模块U6。在一个实施例中,该译码模块116将该预取指令部份地或完全地译码并且储存该指令在译码高速缓存132及/或L2高速缓存 134中。然后可将译码高速缓存132中的指令及/或直接从该指令高速 缓存112撷取的指令提供至地址计算模块118以及执行模块120以根 据程序流程(program flow)而执行。
如参考图2以更详细的方式讨论,在一个实施例中,该译码模块 116决定与由预取模块114所提供之指令相关联的某些程序流程特征, 并且提供这些程序流程特征之表示至译码高速缓存132以与对应译码 指令储存。该程序流程特征可包括(但非限制于)流程改变之特征(亦 即,该指令是否可能造成分支);预期将要用来执行该指令之那些处理 器组件或预期将要由于该指令之执行而使用之那些处理器组件的指 示,而若该指令系C0F指令则为分支预测特征,例如不论是否该分支 预测将要被选取;在补充(complement)该预测前,预期将要选取该指 令的次数;以及在实现该补充预测(complement prediction)之前,已 正确解析该给定的COF指令的次数。
根据译码高速缓存132中的指令以及相关联的程序流程特征,在 一个实施例中,挂起控制器130可在预期将要要求不存在于该译码高 速缓存132中的指令之前估计持续时间。该挂起控制器130可识别在 该估计之持续时间期间预期未使用到的处理器102之那些组件,然后 将一个或多个被识别的组件挂起达一部份或全部的该持续时间,以便 减少在该持续时间期间处理器102所消耗的电力。同样地,该挂起控 制器130可识别在该持续时间期间预期未使用到的一个或多个周边组 件,而将一个或多个这些周边组件挂起达一些或全部的该持续时间期 间。如以下所讨论者,当决定是否挂起特定的组件时,可考虑牵涉关 闭与重新启动处理器组件或周边组件之额外的电力消耗。
在至少一实施例中,藉由关闭对应的电源域来使一个或多个处理 器组件从其对应电源域隔离出来以挂起一个或多个处理器组件。用以 说明,预取模块114可与电源域140相关联,整数单元122可与电源 域142相关联,FPU 124可与电源域144相关联,MMX单元126可与电 源域146相关联,L2高速缓存134可与电源域148相关联,以及系统 存储器108可与电源域150相关联。挂起控制器130因而可例如藉由 提供宣告(asserted)挂起讯号至组件114、 122、 124、 126、 134与电源域140至148之电源供应线之间所插入的一个或多个开关单元160 至168而断开一个或多个组件114、 122、 124、 126、 134与该对应的 电源域140至148的连接。同样地,可供给停止宣告(deasserted)讯 号以重新连接组件至对应的电源域。用以说明,响应预期MMX单元126 将不使用达特定的指令周期的决定,该挂起控制器130可提供宣告挂 起讯号至开关单元166以断开MMX单元126与电源域146之连接。当 指令周期结束(come to conclusion)时,该挂起控制器130可提供停 止宣告挂起讯号至该开关单元166以重新连接该腿X单元126至电源 域146。同样地,响应预期该系统存储器108将不使用的决定,该挂起 控制器130可经由例如BC 136、 MBIU 104以及MC 106而提供宣告讯 号至开关单元170以断开该系统存储器108与电源域150之连接。该 开关单元160至170可包含任何各种适合的开关机制,举例来说,例 如晶体管。
虽然,为了容易说明起见,图1说明电源域与处理器组件之间的 一对一的对应关系,但将会了解,多个组件可与一个电源域相关联及/ 或多个电源域可与一个组件相关联。在预期所有与特定的电源域相关 联的组件在特定的指令周期期间将不被使用的这些例子中,该组件可 藉由将电源域从其电源隔离开来而被挂起。另一种方式,在不脱离本 发明之精神或范畴下,藉由使用其它技术(例如时钟闸控),可挂起处 理器组件及周边组件。
兹参考图2,其系说明根据本发明之至少一个实施例之译码模块 116、译码高速缓存132以及挂起控制器130之例示的实施方式。在一 个实施例中,该译码模块116利用程序流程基准表格202以决定与该 指令模块116储存于译码高速缓存132中之指令相关联的程序流程基 准。在该例示的实例中,该表格202包括多个项目(entry),用于与处 理器102兼容之该指令类型之至少一子集。各项目可具有前置码/操作 码(prefix/opcode)字段204以识别特定的指令类型以及一个或多个字 段以指示是否对应的处理器或周边组件在具有该对应的指令类型之指 令的执行期间或由于具有该对应的指令类型之指令的执行结果而预期 将要被使用。举例来说,字段可能包括存储器字段206、整数字段208、 FPU字段210、以及MMX字段212以指示是否预期具有特定指令类型之指令分别使用系统存储器108、整数单元、FPU 124或腿X单元126。 除此之外,各项目可包括C0F字段213以指示是否该指令类型系可能 的COF指令。
一旦接收来自于预取模块114的指令,译码模块116译码该指令 至适当的程度,并且使用识别符(identifier)(例如该指令之操作码或 前置码)以识别在表格202中之该对应的指令类型项目。使用该表格 202之项目之字段值,该译码模块116以至少部份被译码的指令(储存 于字段214中)及适当的程序流程信息增加于译码高速缓存132之项 目。该译码高速缓存132之程序流程字段可包括:线性指令指针(linear instruction pointer, LIP)字段216以提供索引;C0F字段218以指 示是否该指令系C0F指令以及字段218至226以指示是否预期该指令 分别使用该系统存储器108、整数单元124、 FPU 124或醒X单元126。 该译码高速缓存132之项目可进一步包括预测字段228以指示是否 预测将要选取该C0F指令;预测计数字段230以指示在补充预测前, 预测将要选取C0F指令的次数;预测索引字段232以指示在实现该补 充预测之前,该执行模块120已正确解析该C0F指令的次数;以及目 标字段234以指示C0F指令的目标。藉由使用来自于表格202之信息 以及由与如预取模块114相关联之分支预测逻辑所提供的分支预测信 息,该译码模块116可对这些字段的每一个字段决定适当的值。
在一个实施例中,挂起控制器130分析译码高速缓存132以识别 一个或多个指令周期,各指令周期代表存在于译码高速缓存132中之 一序列指令,该序列指令预期将要由执行模块120依次执行,其中指 令周期之中断包括对于不存在于译码高速缓存132之指令的要求。请 注意,若该译码高速缓存132包括在该译码高速缓存132内形成循环 (loop)之指令,该序列指令可包括一个或多个指令之多个出现。藉由 使用第2图之实例来说明,在LIP1开始之例示的指令周期会包括仏IP 1, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 8, 9, 10}。将会了解,在LIP 2至7之序列指令系重复三次,乃由于在COF 字段218中与在预测字段228中的值"1"表示在LIP 7的指令为C0F 指令并且预测将要被选取;在目标字段234中的值"2"表示该指令将 分支至在LIP 2之指令;以及在预测计数字段230中之值"2"表示该分支至在LIP 2之指令将重复两次。
在识别预期的指令周期后,若处理器102的确实际执行如在指令 周期中所预测的指令,则该挂起控制器可决定预期将要花费之处理时 间的持续时间。在一个实施例中,该持续时间系基于时钟周期而决定。 藉由使用如每一指令的时钟周期之平均数,挂起控制器130可达成用 于指令周期之时钟周期之总数。用以说明,如每一指令预定平均2.4 个时钟周期,该挂起模块130可决定具有一序列30个指令之指令周期 会花费72个时钟周期(亦即,2.4个时钟周期/指令X 30个指令)。另 一方面,该挂起控制器130能决定由处理器102所使用的时钟周期数 以根据其指令类型执行指令周期之各指令以达成用于该指令周期之时 钟周期之总数。
藉由使用如对应于指令周期中的指令之译码高速缓存132之项目 的字段220至226,挂起控制器130可识别预期在指令周期之执行期间 将不被使用的那些组件。用以说明,于字段220与224中,在LIP 2 之指令具有"1"的值,其表示系统存储器108与FPU 124系用来执行 指令,然而以上所提供之例示的指令周期中无任何指令在字段222或 226中具有"1"的值,其表示整数单元122或匿X单元126均不预期 将要在例示的指令周期之指令执行期间被使用。根据指令周期之预期 的持续时间及预期在指令周期的执行期间不被使用的组件,藉由提供 如宣告挂起讯号至适当的开关单元(第1图),该挂起控制器130可挂 起适当的处理器组件以及周边组件。
兹参考图3,说明根据本发明之至少一个实施例之例示的方法300 以识别与挂起处理器及周边组件。该方法300开始于步骤302,其中决 定在译码高速缓存132中被识别的指令周期的持续时间。如以上所注 意到的,该持续时间可由预期将要被使用于指令周期之序列指令的执 行期间之时钟周期数来表示。
在步骤304中,挂起控制器130识别一个或多个可被挂起达部份 或全部的预测持续时间之一个或多个组件。然而,将会了解,可能有 电力与时钟周期浪费在关机与随后重新启动某些组件。举例来说,在 开机时某些组件可能需要初始化,而开机时可能需要数十个、数百个 或数千个时钟周期及多于可忽略的电力。于是,在步骤306中,该挂起控制器130在考虑到挂起特定组件之电力与时间成本之情形下做出 对挂起特定组件是否有省电优势的决定。此评估可将当挂起该组件所 节省的电力与关机并且随后重新启动该组件所消耗的电力列入考量。 举例来说,若预期指令周期将为100个时钟周期长,并且特定组件能 以每一周期省电0.001毫瓦特(mW)(或对该指令周期总共省电0. lmW) 而关闭达那些周期中之90个时钟周期(假设重新初始化期间为10个周 期),若该关机电力成本接近或超过O. lmW,则该挂起控制器130可选 择放弃挂起该组件。
在另一实施例中,根据预期持续时间与一个或多个临界值的比较, 可决定挂起组件的相对值。举例来说,若该持续时间小于于某一临界 值(例如,IOO个时钟周期),则该挂起控制器可选择放弃挂起该组件。 另一种方式为,根据所预测的比较值与一个或多个临界值的比较,可 决定该挂起控制器130所使用的挂起操作的类型。用以说明,若该持 续时间小于第一临界值(例如,50个时钟周期),则不进行挂起操作。 若该持续时间大于该第一临界值但小于第二临界值(例如,200个时钟 周期),则可进行时钟闸控挂起操作。若该持续时间大于该第二临界值, 则可进行将组件从其电源域隔离出来之挂起操作。藉由具有多阶式的 挂起操作,该省电/关机成本平衡可根据其预测的持续时间修改适合特 定的指令周期。将会了解,可将临界值设定成有关于将要被挂起之该 处理装置之特定组件。举例来说,若将要挂起简单的组件(例如多任务 器或加法器),则时钟闸控临界值可设定为相当低(例如,几个时钟周 期),然而挂起较复杂的组件(例如将要挂起FPU),则该时钟闸控临界 值可设定为相当高(例如,数百或数千个时钟周期)。
若判定挂起组件达至少一部份的持续时间系有利的,则在步骤308 中,挂起控制器130挂起该组件达持续时间之识别部份。在该持续时 间之识别部份的执行结束时,该挂起控制器130重新初始化及/或重新 启动该组件,除非该组件被识别为对下一指令周期是不需要的,其中 该挂起控制器可维持该组件于挂起状态。若多个组件被识别为可挂起 的,该挂起控制器130可在步骤310中对各被识别的组件重复步骤306 与308。
现参考图4,其说明例示的方法400。方法400在步骤402开始,其中接受到多个指令。在步骤404中,识别在来自该多个指令之一序 列指令的执行期间预期未使用到的处理器之一个或多个组件。在步骤 406中,在由该处理器执行至少一部份之该序列指令的期间挂起一个或 多个被识别的组件。
现参考图5,其说明例示的方法500。方法500在步骤502开始, 其中多个译码指令系储存于高速缓存中。于步骤504中,识别在来自 该多个指令之一序列指令之执行期间预期未使用到的处理器之一个或 多个组件。于步骤506中,在要求由处理器执行不在该序列指令中的 指令之前估计持续时间。于步骤508中,根据所估计的持续时间,在 至少一部份该序列指令的执行期间,挂起该处理器之一个或多个被识 别的组件之至少一个组件。
以上所揭露本发明之内容仅视为例示性的,而非限制性的,且所 附加的权利要求书是为了涵盖所有的此种修改、功能增强,以及落于 本发明之真实精神与范畴内之其它实施例。因此,在法律允许之最大 程度下,本发明之范畴可由以下的权利要求书及其相等物之最广泛可 允许的诠释来决定,而不应由前述详细的说明所局限或限制。
权利要求
1. 一种方法,包含下列步骤接收多个指令;识别在多个指令中的一序列指令的执行期间,预期未使用到的处理器的一个或多个组件;以及在该处理器执行至少一部份的该序列指令的期间,挂起该处理器的该一个或多个被识别的组件的至少一个组件。
2. 如权利要求1所述的方法,其中,挂起该至少一个组件包括将 该至少一个组件从一个或多个电源域隔离出来。
3. 如权利要求1所述的方法,其中,挂起该至少一个组件包括时 钟闸控该至少一个组件。
4. 如权利要求1所述的方法,其中,挂起该至少一个组件包括根 据重新启动该至少一个组件预期消耗的电量而决定是否挂起该至少一 个组件。
5. —种处理器,包括 多个组件;用于储存多个指令的储存装置;用于识别在该处理器执行该多个指令的一序列指令的期间预期未使用到的该多个组件的一个或多个组件的装置;以及用于在该处理器执行至少一部份的该序列指令的期间挂起该一个 多个被识别的组件的至少一个组件的装置。
6. 如权利要求5所述的处理器,其中,用于挂起该至少一个组件 的该装置包括用于将该至少一个组件从一个或多个电源域隔离出来的 装置。
7. 如权利要求5所述的处理器,还包含用于处理器要求执行不包含在该序列指令内的指令之前决定持续时间的装置。
8. 如权利要求7所述的处理器,其中,用于挂起该至少一个组件 的该装置包括用于当该持续时间大于第一临界值时时钟闸控该至少一 个组件的装置。
9. 如权利要求7所述的处理器,其中,用于挂起该至少一个组件 的装置包括用于当该持续时间大于第二临界值时将该至少一个组件从 一个或多个电源域隔离出来的装置,其中,该第二临界值大于该第一 临界值。
10.如权利要求7所述的处理器,其中,用于挂起该至少一个组 件的装置包括用于当该持续时间大于第一临界值时将该至少一个组件 从一个或多个电源域隔离出来的装置。
全文摘要
一种指令周期是由储存于高速缓存中的指令所决定(502),其中该指令周期代表预期将要由处理装置执行的存在于该高速缓存中的序列指令。估计该指令周期的持续时间(duration),并且非预期用于该指令周期期间的处理装置的一个或多个组件可被挂起达一部份或全部的该持续时间(506)。举例来说,可藉由时钟闸控(clock gating)或将该组件从一个或多个电源域(power domain)隔离出来而挂起该组件(508)。
文档编号G06F9/38GK101427218SQ200680010658
公开日2009年5月6日 申请日期2006年3月21日 优先权日2005年4月4日
发明者D·G·小菲克斯 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1