降低指令高速缓冲存储器功耗的方法及装置的制作方法

文档序号:6377863阅读:156来源:国知局
专利名称:降低指令高速缓冲存储器功耗的方法及装置的制作方法
技术领域
本发明涉及处理器领域,尤其涉及一种降低指令高速缓冲存储器功耗的方法及装置。
背景技术
随着集成电路技术的飞速发展,处理器芯片的速度和集成度都得到了很大的提升,由此带来的功耗问题也变得很突出。大量的功耗消耗会降低便携式设备中电池的使用寿命,而且会给处理器的供电、散热和可靠性带来很多问题。在目前数字信号处理器的设计中,功耗已经成为了一个很重要的指标。指令高速缓冲存储器(简称指令Cache)作为提高处理器内核取指速度的关键部件,是程序运行时最活跃的部分,因此有效降低指令Cache的功耗对于低功耗处理器的设计有着重要的意义。
直接相联方式的指令Cache结构如图I所示,它主要由标志(tag)存储器、数据(data)存储器和状态位(state)组成。当内核访问指令Cache时,tag存储器根据内核地址的Index位作为地址读出标志位tag,并与内核地址中的Tag位比较,如果相等则表示命中,内核直接从指令Cache中读取数据;如果不相等则表示没有命中,这时会启动一个访问主存的操作。内核在取指令的过程中会进行大量的读tag存储器操作和比较操作,这个过程需要消耗大量的功耗。如果能够减少访问tag存储器的次数,则可以有效降低指令Cache的功耗。在2002年8月12-14号的低功耗电子学与设计(ISLPED)会议上Koji Inoue等人发表的文章《A History-Based I-Cache for Low-Energy Multimedia Applications》中提出了一种基于程序运行历史信息的低功耗指令Cache设计方法,该方法与分支预测技术紧密结合。它的工作原理是当分支目标指令曾经执行过并且执行这条分支目标指令与上次执行这条分支目标指令期间没有发生过指令Cache缺失时,可以停止访问tag存储器。但是,这项技术是与分支目标缓冲器紧密结合的,当分支预测与程序运行历史信息更新同时发生时,处理器流水线会出现停顿,导致处理器性能下降;当出现指令Cache访问缺失或分支目标缓冲器内容被替换时,需要清除全部的程序运行历史信息,这就要求处理器在后续的取指过程中重新记录程序运行的历史信息,而在程序运行历史信息的重新记录过程中,处理器由于无法利用本来已经记录的有效历史信息消除不必要的tag存储器的访问功耗,从而降低了程序运行历史信息的使用效率;对于没有采用分支预测机制的数字信号处理器,建立一个分支预测器需要增加很大的硬件代价,而且分支预测器本身也需要消耗一部分功耗。在2011年3月的浙江大学学报(工学版)第45卷第3期中龚帅帅等人发表的文章《基于历史链接关系的指令高速缓存低功耗方法》中提出了一种基于指令Cache历史访问链接关系的低功耗指令Cache设计方法,该方法需要在指令Cache中建立一个历史访问链接关系表。它的工作原理是在程序执行的过程中会根据历史链接表中记录的历史链接关系,直接从链接的数据存储器中读取指令,减少不必要的tag存储器的访问。但是,该方法存在如下不足它需要在指令Cache单元中增加一个历史链接关系表,这样会增加指令Cache的面积和设计复杂度,而且历史链接关系表也会消耗一部分功耗。

发明内容
本发明实施例提出了一种降低指令高速缓冲存储器功耗的方法及装置,可以减少程序执行过程中对标志存储器的访问次数,从而降低指令高速缓冲存储器的整体功耗。在第一方面,本发明实施例提供了一 种降低指令高速缓冲存储器功耗的装置,包括标志存储器控制模块,用于记录分支指令执行的历史信息,并根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号;指令高速缓冲存储器模块,包括指令高速缓冲存储器控制器、与所述指令高速缓冲存储器控制器相连接的标志存储器和数据存储器;其中,所述第一片选信号和所述指令高速缓冲存储器控制器输出的第二片选信号经过处理得到标志存储器的片选控制信号,通过所述标志存储器的片选控制信号控制是否对所述标志存储器进行访问。在第二方面,本发明实施例提供了一种降低指令高速缓冲存储器功耗的方法,所述方法用于如本发明第一方面所述的装置,所述方法包括记录分支指令执行的历史信息;根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号;根据所述第一片选信号和指令高速缓冲存储器控制器输出的第二片选信号经过处理得到标志存储器的片选控制信号,通过所述标志存储器的片选控制信号控制是否对所述标志存储器进行访问。本发明提供的方法和装置可以减少程序执行过程中对标志存储器的访问次数,从而降低指令高速缓冲存储器的整体功耗。


图I为现有技术指令Cache结构示意图;图2为本发明实施例提供的指令代码片段;图3为本发明实施例提供的降低指令Cache功耗的装置的示意图;图4为本发明实施例提供的图3中装置的工作过程示意图;图5为本发明实施例提供的降低指令Cache功耗的方法流程图;图6为本发明实施例提供的tag存储器控制模块工作过程流程图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。首先,结合图2对本发明实施例中的重要概念做明确阐述,图2为本发明实施例提供的指令代码片段。如图2所示分支指令是指在程序执行过程中,遇到的需要跳转到其他地方执行的指令,包括分支跳转指令、循环跳转指令和函数调用等,如图2所示,执行流程I和2表示指令执行到BRANCH1后跳转到分支目标指令L00P2处执行,则BRANCH1为分支指令。分支指令跳转成功是指程序执行过程中,遇到分支指令,并且跳转到该分支目标指令处执行,如图2所示,执行流程I和2表示指令执行到BRANCH1后跳转到分支目标指令L00P2处执行,此时称分支指令BRANCH1跳转成功。分支指令跳转失败是指程序执行过程中,遇到分支指令,没有跳转到该分支目标指令处执行,而是顺序执行后面的指令。如图2中的执行流程3,当指令执行到分支指令BRANCH1后,没有跳转到分支目标指令L00P2处执行,而是顺序执行后面的指令,此时称分支指令BRANCH1跳转失败。图3为本发明实施例提供的降低指令Cache功耗的装置的示意图。如图3所示,所述装置主要由tag存储器控制模块和指令Cache模块组成。tag存储器控制模块用于记录分支指令执行的历史信息,并根据所述分支指令执行的历史信息和分支指令当前信息生 成第一片选信号。指令Cache模块包括指令Cache控制器、与所述指令Cache控制器相连接的tag存储器和数据存储器;其中,所述第一片选信号和所述指令Cache控制器输出的第二片选信号经过处理得到tag存储器的片选控制信号,通过所述tag存储器的片选控制信号控制是否对所述tag存储器进行访问。图3中各个信号意义如下bt用于表示分支指令当前跳转成功的信息,bt=l表示分支指令当前跳转成功;bnt用于表示分支指令当前跳转失败的信息,bnt=l表示分支指令当前跳转失败;b用于表示是否有分支指令,b=l表示有分支指令^用于表示分支指令之前跳转成功的信息,T=I表示有该分支指令之前跳转成功的信息;NT用于表示分支指令之前跳转失败的信息,NT=I表示有该分支指令之前跳转失败的信息。需要说明的是,本领域技术人员可以根据实际情况定义各个信号的取值意义。图3中各个器件的意义如下D1-D4为或门,D5-D7为与门,D8为非门,D9为D触
发器,其中,与门D7起反馈作用,可以起到保持第一片选信号的作用。tag存储器控制模块的输入包括分支指令跳转成功信号、分支指令跳转失败信号和分支指令地址,输出为第一片选信号。tag存储器控制模块包括分支指令地址队列(BIAQ)、分支指令历史表(BIH)和控制电路,其中BIAQ深度为N,数据宽度为M (指令地址宽度),用于存储分支指令地址。BIH深度为N,数据宽度为2bits,用于记录分支指令之前跳转成功的信息和分支指令之前跳转失败的信息。需要说明的是,本领域技术人员可以根据实际情况定义BIAQ和BIH中参数的大小。需要说明的是,BIAQ中记录的之前分支指令地址、BIH中记录的分支指令之前跳转成功的信息和分支指令之前跳转失败的信息共同构成了分支指令执行的历史信息。本发明实施例提供的装置的工作原理为在程序的执行过程中,如果遇到了分支指令,处理器内核会向tag存储器控制模块发送该分支指令跳转成功或者跳转失败的信号,同时会发送该分支指令的地址。当tag存储器控制模块检测到有分支指令时,它会根据该分支指令的地址查询BIAQ,如果与BIAQ中的某一项相等则表示命中,如果全部不相等则表示没有命中。若分支指令的地址没有命中BIAQ,tag存储器控制模块会将该分支指令的地址存入BIAQ中,同时将该分支指令跳转成功或跳转失败的信息记录在BIH中。BIAQ采用“先进先出”的写入方式,即当BIAQ的内容需要替换时会将最先写入BIAQ的分支指令地址替换。若分支指令的地址命中BIAQ,BIH会根据命中信号读出该分支指令之前的信息T和NT,如果满足下列条件之一( I)该分支指令当前跳转成功且T=I ;(2)该分支指令当前跳转失败且NT=I, 则表示该分支指令的目标指令在指令Cache中已经存在,此时可以停止对tag存储器的访问,直接从指令Cache中取指令。若分支指令的地址命中BIAQ,但是不满足上面两个条件中的一个,则如果(I)分支指令当前跳转成功,则将对应的BIH中的T更新为I ;(2)分支指令当前跳转失败,则将对应的BIH中的NT更新为1,同时使tag存储器工作在正常状态。为便于理解,下面以图4为例,对上述工作原理做具体阐述。图4为本发明实施例提供的图3中装置的工作过程示意图,图4中的工作过程对应的代码片段如图2所示。如图4所示,其中m-BRANCHn表示分支指令BRANCHn在第m次执行流中的时间点。下面结合图4以及图3对本发明实施例提供的装置的工作过程做详细阐述假设tag存储器控制模块中BIAQ的深度为2,指令地址宽度为32bits,并且假设初始状态时BIAQ和BIH中均为空,tag存储器的片选控制信号低电平有效。则图4中表示的工作过程如下1-BRANCH1 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现没有命中,从图3可知,与门D5的一个输入信号bt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D6的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,从而D触发器D9输出的第一片选信号为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令的地址BRANCH1写入BIAQ,将跳转成功的信息记录到BIH中。2-BRANCH1 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现命中,并且通过查询BIH发现有该分支指令之前跳转成功的信息记录,如图4所示,BIAQ中BRANCH1对应的BIH中的T=I,从图3可知,与门D5的两个输入信号均为高电平,可知其输出为高电平。与门D5的输出信号为或门D2的输入信号,可知或门D2输出为高电平。或门D2的输出信号为或门D3的输入信号,可知或门D3输出为高电平。因此经过D触发器D9后,输出的第一片选信号也为高电平,或门D4的输出为高电平,关闭tag存储器。3-BRANCH1 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转失败,通过查询BIAQ发现命中,但是通过查询BIH发现没有该分支指令之前跳转失败的信息记录,从图3可知,与门D6的一个输入信号bnt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D5的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,从而D触发器D9输出的第一片选信号为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令跳转失败的信息记录到BIH中。3-BRANCH2 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现没有命中,从图3可知,与门D5的一个输入信号bt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D6的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门 D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,从而D触发器D9输出的第一片选信号为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令的地址BRANCH2写入BIAQ,将跳转成功的信息记录到BIH中。4-BRANCH1 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转失败,通过查询BIAQ发现命中,并且通过查询BIH发现有该分支指令之前跳转失败的信息记录,如图4所示,BIAQ中BRANCH1对应的BIH中的NT=I,从图3可知,与门D6的两个输入信号均为高电平,可知其输出为高电平。与门D6的输出信号为或门D2的输入信号,可知或门D2输出为高电平。或门D2的输出信号为或门D3的输入信号,可知或门D3输出为高电平。因此通过D触发器D9后,输出的第一片选信号也为高电平,或门D4的输出为高电平,关闭tag存储器。4-BRANCH2 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现命中,并且通过查询BIH发现有该分支指令之前跳转成功的信息记录,如图4所示,BIAQ中BRANCH2对应的BIH中的T=I,从图3可知,与门D5的两个输入信号均为高电平,可知其输出为高电平。与门D5的输出信号为或门D2的输入信号,可知或门D2输出为高电平。或门D2的输出信号为或门D3的输入信号,可知或门D3输出为高电平。因此经过D触发器D9后,输出的第一片选信号也为高电平,或门D4的输出为高电平,关闭tag存储器。5-BRANCH1 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转失败,通过查询BIAQ发现命中,并且通过查询BIH发现有该分支指令之前跳转失败的信息记录,如图4所示,BIAQ中BRANCH1对应的BIH中的NT=I,从图3可知,与门D6的两个输入信号均为高电平,可知其输出为高电平。与门D6的输出信号为或门D2的输入信号,可知或门D2输出为高电平。或门D2的输出信号为或门D3的输入信号,可知或门D3输出为高电平。因此通过D触发器D9后,输出的第一片选信号也为高电平,或门D4的输出为高电平,关闭tag存储器。
5-BRANCH2 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转失败,通过查询BIAQ发现命中,但是通过查询BIH发现没有该分支指令之前跳转失败的信息记录,从图3可知,与门D6的一个输入信号bnt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D5的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,因此,经过D触发器D9后,输出的第一片选信号也为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令跳转失败的信息记录到BIH中。5-BRANCH3 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现没有命中,从图3可知,与门D5的一个输入信号bt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D6的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出 为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,从而可知D触发器D9输出的第一片选信号为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令的地址BRANCH3写入BIAQ,将跳转成功的信息记录到BIH中。由于此时BIAQ已经处于满的状态,需要将其中一行替换出去,本实施例采用“先进先出”的方式(也可以采用其他方式),即将BRANCH1替换出去,并清除BRANCH1对应的BIH中的信息。6-BRANCH3 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转成功,通过查询BIAQ发现命中,并且通过查询BIH发现有该分支指令之前跳转成功的信息记录,如图4所示,BIAQ中BRANCH3对应的BIH中的T=I,从图3可知,与门D5的两个输入信号均为高电平,可知其输出为高电平。与门D5的输出信号为或门D2的输入信号,可知或门D2输出为高电平。或门D2的输出信号为或门D3的输入信号,可知或门D3输出为高电平。因此经过D触发器D9后,输出的第一片选信号也为高电平,或门D4的输出为高电平,关闭tag存储器。7-BRANCH3 tag存储器控制模块检测到有分支指令,并且分支指令当前跳转失败,通过查询BIAQ发现命中,但是通过查询BIH发现没有该分支指令之前跳转失败的信息记录,从图3可知,与门D6的一个输入信号bnt为高电平,另一个输入信号为低电平,可知其输出为低电平。与门D5的两个输入信号均为低电平,可知其输出为低电平。与门D5的输出信号和与门D6的输出信号为或门D2的输入信号,可知或门D2输出为低电平。另外,由于b为高电平,经过非门D8后输出低电平,因此,与门D7输出为低电平。与门D7的输出信号和或门D2的输出信号为或门D3的输入信号,可知或门D3输出低电平,因此,经过D触发器D9后,输出的第一片选信号也为低电平,或门D4的输出由指令Cache控制器输出的第二片选信号控制,tag存储器处于正常工作状态。此时tag存储器控制模块将该分支指令跳转失败的信息记录到BIH中。综合上述过程可知当执行一条分支指令时,若该分支指令当前跳转成功并且有该分支指令之前跳转成功的信息记录,或者若该分支指令当前跳转失败并且有该分支指令之前跳转失败的信息记录,则说明该分支指令的目标指令在指令Cache中已经存在,可以直接从指令Cache中取指令,而不需要对tag存储器进行访问;若该分支指令当前跳转成功并且没有该分支指令之前跳转成功的信息记录,或者若该分支指令当前跳转失败并且没有该分支指令之前跳转失败的信息记录,则说明该分支指令的目标指令在指令Cache中不存在,此时需要对tag存储器进行访问。在当前执行分支指令和上 一次执行该分支指令期间如果出现目标指令块被新的指令块替换出指令Cache的情况,程序可能执行出错,因此在使用本发明时,需要满足一个条件程序的指令块大小不能大于指令Cache的大小。满足这个条件后,在当前执行分支指令和上一次执行该分支指令期间就不会出现目标指令块被新的指令块替换出指令Cache的情况,程序就不会执行出错。需要说明的是,本领域技术人员也可以采用其它电路实现上述功能,并不限于本发明实施例图3中提供的电路。上述实施例描述的为tag存储器控制模块根据输入信号、分支指令命中BIAQ的情况及BIH中分支指令的信息输出第一片选信号,该第一片选信号与指令Cache模块中的指令Cache控制器输出的第二片选信号经过处理得到tag存储器的片选控制信号,通过该片选控制信号控制是否需要对tag存储器进行访问,由此可以减少程序执行过程中对tag存储器的访问,从而可以有效降低指令Cache的功耗。下述实施例描述的为降低指令Cache功耗的方法。图5为本发明实施例提供的降低指令Cache功耗的方法流程图。如图5所示,本发明实施例包括以下步骤步骤501,tag存储器控制模块记录分支指令执行的历史信息。具体地,若输入的分支指令地址没有命中BIAQ,则将该分支指令地址存入BIAQ中,并且记录该分支指令跳转成功或跳转失败的信息。若输入的分支指令地址命中BIAQ,若该分支指令当前跳转成功并且没有该分支指令之前跳转成功的信息记录,或者若该分支指令当前跳转失败并且没有该分支指令之前跳转失败的信息记录,则更新BIH中该分支指令跳转成功或跳转失败的信息。步骤502,根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号。分支指令执行的历史信息是指之前分支指令地址、所述分支指令之前跳转成功的信息和所述分支指令之前跳转失败的信息。分支指令当前信息是指当前分支指令地址、所述分支指令当前跳转成功的信息或所述分支指令当前跳转失败的信息。步骤503,根据tag存储器控制模块输出的第一片选信号和指令Cache控制器输出的第二片选信号经过处理得到tag存储器的片选控制信号,通过所述tag存储器的片选控制信号控制是否对所述tag存储器进行访问。下面结合图6对上述步骤502和步骤503做进一步阐述,图6为本发明实施例提供的tag存储器控制模块工作过程流程图。如图6所示,所述方法包括以下步骤步骤601,程序执行过程中,遇到分支指令。步骤602,tag存储器控制模块接收处理器内核发送的该分支指令的跳转成功或跳转失败信号、该分支指令地址,并检测该分支指令地址是否命中BIAQ。
步骤603,若分支指令地址没有命中BIAQ,tag存储器控制模块会将该分支指令地址存入BIAQ中,同时将该分支指令跳转成功或跳转失败的信息记录在BIH中。BIAQ采用“先进先出”的写入方式,即当BIAQ的内容需要替换时会将最先写入BIAQ的分支地址替换,BIAQ也可以采用其他写入方式。步骤604,若分支指令地址命中BIAQ,BIH会根据命中信号读出该分支指令之前的信息,判读是否可以关闭对tag存储器的访问。步骤605,如果满足下列条件之一 ( I)该分支指令当前跳转成功且有该分支指令之前跳转成功的信息记录;(2)该分支指令当前跳转失败且有该分支指令之前跳转失败的信息记录,则表示该分支指令的目标指令在指令Cache中已经存在,此时tag存储器控制模块生成一个可以关闭tag存储器的控制信号并输出,关闭tag存储器。步骤606,如果分支指令地址命中BIAQ,但是不满足上面两个条件中的一个,则如果(I)分支指令当前跳转成功,则将该分支指令跳转成功的信息记录到BI H中;(2)分支指令当前跳转失败,则将该分支指令跳转失败的信息记录到BIH中,此时tag存储器控制器模块生成一个无效的控制信号并输出,tag存储器正常工作。综合上述过程可知若分支指令当前跳转成功并且有该分支指令之前跳转成功的信息记录,或者若分支指令当前跳转失败并且有该分支指令之前跳转失败的信息记录,则说明该分支指令的目标指令在指令Cache中已经存在,可以直接从指令Cache中取指令,而不需要对tag存储器进行访问;若分支指令当前跳转成功并且没有该分支指令之前跳转成功的信息记录,或者若分支指令当前跳转失败并且没有该分支指令之前跳转失败的信息记录,则说明该分支指令的目标指令在指令Cache中不存在,此时需要对tag存储器进行访问。上述实施例描述的为降低指令Cache功耗的方法,tag存储器控制模块根据输入信号、分支指令命中BIAQ的情况及BIH中分支指令的信息输出第一片选信号,该第一片选信号与指令Cache模块中的指令Cache控制器输出的第二片选信号经过处理得到tag存储器的片选控制信号,通过该片选控制信号控制是否需要对tag存储器进行访问,该方法可以减少程序执行过程中对tag存储器的访问,从而可以有效降低指令Cache的整体功耗。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式
,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式
而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。·
权利要求
1.一种降低指令高速缓冲存储器功耗的装置,其特征在于,包括 标志存储器控制模块,用于记录分支指令执行的历史信息,并根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号; 指令高速缓冲存储器模块,包括指令高速缓冲存储器控制器、与所述指令高速缓冲存储器控制器相连接的标志存储器和数据存储器; 其中,所述第一片选信号和所述指令高速缓冲存储器控制器输出的第二片选信号经过处理得到标志存储器的片选控制信号,通过所述标志存储器的片选控制信号控制是否对所述标志存储器进行访问。
2.如权利要求I所述的装置,其特征在于,所述分支指令执行的历史信息是指之前分支指令地址、所述分支指令之前跳转成功的信息和所述分支指令之前跳转失败的信息。
3.如权利要求I所述的装置,其特征在于,所述分支指令当前信息是指当前分支指令地址、所述分支指令当前跳转成功的信息或所述分支指令当前跳转失败的信息。
4.如权利要求1、2或3所述的装置,其特征在于,所述标志存储器控制模块包括存储分支指令地址的分支指令地址队列、记录所述分支指令地址队列中分支指令跳转成功和跳转失败信息的分支指令历史表和控制电路; 若输入的分支指令地址没有命中所述分支指令地址队列,所述标志存储器控制模块将所述分支指令地址存入所述分支指令地址队列中,并且将所述分支指令跳转成功或跳转失败的信息记录在所述分支指令历史表中; 若输入的分支指令地址命中所述分支指令地址队列,若所述分支指令当前跳转成功并且有所述分支指令之前跳转成功的信息记录,或者若所述分支指令当前跳转失败并且有所述分支指令之前跳转失败的信息记录,则所述分支指令地址队列和所述分支指令历史表保持不变;若所述分支指令当前跳转成功并且没有所述分支指令之前跳转成功的信息记录,或者若所述分支指令当前跳转失败并且没有所述分支指令之前跳转失败的信息记录,则所述标志存储器控制模块更新所述分支指令历史表中所述分支指令跳转成功或跳转失败的信息。
5.一种降低指令高速缓冲存储器功耗的方法,所述方法用于如权利要求I至4任一项所述的装置,其特征在于,所述方法包括 记录分支指令执行的历史信息; 根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号; 根据所述第一片选信号和指令高速缓冲存储器控制器输出的第二片选信号经过处理得到标志存储器的片选控制信号,通过所述标志存储器的片选控制信号控制是否对所述标志存储器进行访问。
6.如权利要求5所述的方法,其特征在于,所述分支指令执行的历史信息是指之前分支指令地址、所述分支指令之前跳转成功的信息和所述分支指令之前跳转失败的信息。
7.如权利要求5或6所述的方法,其特征在于,所述分支指令当前信息是指当前分支指令地址、所述分支指令当前跳转成功的信息或所述分支指令当前跳转失败的信息。
8.如权利要求7所述的方法,其特征在于,所述记录分支指令执行的历史信息进一步包括 若所述分支指令地址没有命中分支指令地址队列,则将所述分支指令地址存入所述分支指令地址队列中,并且记录所述分支指令跳转成功或跳转失败的信息; 若所述分支指令地址命中所述分支指令地址队列,若所述分支指令当前跳转成功并且没有所述分支指令之前跳转成功的信息记录,或者若所述分支指令当前跳转失败并且没有所述分支指令之前跳转失败的信息记录,则更新所述分支指令历史表中所述分支指令跳转成功或跳转失败的信息。
全文摘要
本发明涉及一种降低指令高速缓冲存储器功耗的方法及装置。记录分支指令执行的历史信息;根据所述分支指令执行的历史信息和分支指令当前信息生成第一片选信号;根据所述第一片选信号和指令高速缓冲存储器控制器输出的第二片选信号经过处理得到标志存储器的片选控制信号,通过所述标志存储器的片选控制信号控制是否对所述标志存储器进行访问。因此,本发明提供的方法和装置可以减少程序执行过程中对标志存储器的访问次数,从而降低指令高速缓冲存储器的整体功耗。
文档编号G06F13/16GK102902346SQ20121036585
公开日2013年1月30日 申请日期2012年9月27日 优先权日2012年9月27日
发明者张铁军, 李泉泉, 王东辉, 洪缨, 侯朝焕 申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1