专利名称:一种降低指令cache功耗的控制逻辑的制作方法
技术领域:
本发明涉及一种降低指令cache功耗的控制逻辑。
背景技术:
cache可以提供比主存快得多的访问速度,已经成为现代CPU的必要组成部件。但同时cache也成为芯片的主要耗电部件,在有些设计中,cache的耗电量占了整个芯片的30%以上。在对功耗非常敏感的应用中,cache的应用受到了限制,结果往往是减少cache的容量来求得折衷的效果。
Cache的基本结构一般由数据存储器和索引标志存储器两部分组成。下面以一块32位CPU中的指令cache为例来说明其工作原理,该cache容量8K字节,行大小为16字节,映像方式是2路组关联,如图1所示。
1)来自CPU的地址被分为28位行帧地址和4位行内地址,行帧地址又分成20位标志和8位索引。
2)根据8位索引同时访问cache中的两路组,读取相应索引标志存储器的有效位、标志以及数据存储器的数据。
3)行帧地址的标志域与步骤2读取的两个行标志作相等比较。为保证相应行的数据有效,对应行的有效位必须是被置位的,否则比较结果无效。
4)假设有一行标志与行帧地址的标志相匹配,则由2选1多路选择器选取相应的数据行。两个行标志同时匹配的情况是不可能发生的,因为替换算法保证了一个数据行只有一个行标志。
5)读cache失配时,cache向CPU发出一个停顿信号通知CPU等待,并从主存中读入数据。
在图1中,两块索引标志存储器可以用一个静态RAM来实现。
除去cache的控制通路外,cache的数据通路就是几块静态RAM。节省功耗的办法可以是改进静态RAM的内部结构,这一方法已被广泛地研究和讨论。另外在低功耗SRAM基础上,设法减少对cache的访问次数。
在此之前,对减少cache访问次数的研究集中在分步访问上。即先访问索引标志存储器,以访问的结果来确定是否访问某一组数据存储器,如图2所示。这样会不可避免地把索引标志存储器和数据存储器放在不同的流水节拍上,从而增加流水线级数,影响系统性能。
发明内容
本发明提出了一种降低指令cache功耗的控制逻辑。
它的步骤如下1)根据程序顺序执行的特点,在一个cache行内只访问一次索引标志存储器,保存行匹配和组选择结果;2)当下一个指令仍然在该cache行内,利用所保存的组选择结果来减少对数据存储器的访问;3)根据程序顺序执行的特点,作出对下一个要访问的cache行的预测并利用间隙提前访问索引标志存储器,从而提前得到下一个cache行的行匹配和组选择结果;4)当取下一cache行的指令时,利用步骤3的组选择结果来减少对数据存储器的访问;5)使用环形历史缓冲区来保存组选择的历史记录,并通过保存历史记录来减少对索引标志存储器的访问本发明的优点在于硬件开销小,方法简单,节省功耗效果明显,适用于16位,64位等不同字长,多路组相关的指令cache的设计。本发明适用于不同字长的CPU或ASIC芯片。
图1是cache的基本结构示意图;图2是已公布的低功耗cache的结构示意图;图3是利用组选择环形历史缓冲区的低功耗指令cache的结构示意图;图4是对组选择环形历史缓冲区的工作状态示意图;图5是cache控制通路的状态示意图;具体实施方式
本发明充分利用了指令执行的行为特点。
对于地址上相邻的两条指令,设前一条指令为A,后一条指令为B,在cache里的存放可能有两种情况。即A和B可能在同一行内,也可能在相邻的行内。由于指令执行具有顺序性的特点,据研究结果,80%左右的程序代码都是顺序执行的。本发明利用这个特点对行内和相邻行之间的cache访问进行优化。
对于A和B在行内的情况,因为一个行只有一个标志,对索引标志存储器的一次访问得到的信息就可以代表这个行内其它地址的信息。在访问A后,保持所选中的组选择和行匹配(命中)信息,并把这两个信息位用于这个行的其它地址的指令的读取。因为指令的顺序性,在大部分情况下,下一个要取的指令就是指令B。在取B时,与图1所示的cache基本结构的工作过程不同,步骤2对索引标志存储器的访问可以略去,对数据存储器的访问也只要访问其中被选中的那组就可以了。
对于A和B分别在相邻行的情况,也可以利用指令顺序的特点。由于一个行内只需要访问一次索引标志存储器,所以在大部分情况下,索引标志存储器处于空闲状态。所以在取A所在的行的指令时,预测下一条要取的指令B在顺序的下一个行中,提前访问索引标志存储器以得到B所在行的组选择和行匹配信息。这样,当取指令B时,对数据存储器的访问也只要访问其中被选中的那组就可以了。所以说,提前访问索引标志存储器可以大大减少数据存储器上的功耗,这是本发明的一个显著特征。
另外根据对程序行为的研究得出,向后的跳转远远多于向前的跳转,所以如果能够能把以前访问索引标志存储器的结果记录下来,就可以避免重复访问索引标志存储器。本发明利用环形历史缓冲区来记录组选择的历史。
利用组选择环形历史缓冲区的低功耗指令cache的结构如图3所示。环形历史缓冲区在说明之前,先定义跳转指令分类1)相对位移指令,作相对地址的跳转,如MIPS中的b,beq等指令。
2)绝对位移指令,作绝对地址的跳转,如MIPS中的j,jal等指令。
本发明通过环形历史缓冲区来记录组选择的结果。如图4所示。环形历史缓冲区中设置三个指针,一个头指针,一个尾指针和一个当前行指针。在头指针和尾指针之间的部分是有效区,代表了一段连续的地址区域。环形历史缓冲区中位于有效区的信息单元记录着这个连续地址区域内的cache行上的组选择信息。
1)程序复位后,环形历史缓冲区的三个指针都为0。如图4a2)当索引标志缓冲区在空闲状态,如果下一行在有效区以外,即头指针与当前行指针相等,则提前访问下一行的一个组,访问所预测的组的索引标志存储器。
3)在开始访问下一行的指令时,环形历史缓冲区的当前行指针下移。如果步骤2预测成功,组选择结果存入环形历史缓冲区的头指针所指的位置,头指针下移,如图4b;如果步骤2预测失败,环形历史缓冲区等待正确的组选择结果,头指针直到得到行匹配和组选择结果后才下移,如图4c。
4)如果发生相对位移指令,只要位移量落在环形历史缓冲区的有效区内,当前行指针作相应变动,如图4d。
5)如果环形历史缓冲区满了,头指针和尾指针指向同一单元,如图4e。
6)如果发生绝对位移指令,或者相对位移指令落在环形历史缓冲区的有效区外,将环形历史缓冲区清空,跳到步骤2开始执行。
因为环形历史缓冲区记录的是顺序的行,可以推理得出只要环形历史缓冲区的信息单元个数小于cache行数,在除了绝对位移和相对位移跳出有效区的情况外,即使发生cache不命中,有效区内的信息仍然维持有效。控制状态机仍然以上述的32位CPU为例,以下作举例说明。在举例说明前,先定义Cache的访问模式1)基本模式指同时访问所有组的索引标志存储器和数据存储器,以索引标志存储器的结果来选择数据存储器的输出。
2)组选择省电模式指只访问一个组的索引标志存储器和数据存储器。
3)数据省电模式指只访问一个组的数据存储器。
4)索引省电模式指在访问当前行的一个组的数据存储器的同时,根据预测访问下一行的一个组的索引标志存储器。
5)行替换模式在cache不命中时,从主存取数据来替换cache行。
Cache控制通路状态机如图5所示,在状态机中共有五个状态,对应五种访问模式,状态的切换过程如下1)状态机被复位到正常模式访问cache.
2)如果正常模式访问cache没有命中,就进入行替换模式。
3)在行替换完成后,根据低位地址来区别是进入数据省电模式还是索引省电模式。更新环形历史缓冲器。
4)在数据省电模式下,由低位地址判断是否进入索引省电模式。
5)如果在索引省电模式下预测命中,回到数据省电模式,否则进入组选择省电模式。更新环形历史缓冲器。
6)如果在组选择省电模式下命中,回到数据省电模式,否则,进入行替换模式。更新环形历史缓冲器。
7)如果发生绝对跳转或相对转移跳出有效区,进入正常模式,清空环形历史缓冲器。
在顺序执行时,只需要地址的低位就可以判断访问地址是否落在上次访问的行内了。比如说在介绍基本结构时拿来举例的cache里,对32位指令,地址线A1,A0是没有实际意义的。所以如果次低的两位地址线(A3,A2)都为O,则没有落在上次访问的行内,反之,则落在上次访问的行内。同理,在判断何时进入索引省电模式时,也可以用地址的低位来判断。
如果程序控制发生转移,可以通过流水线其它节拍来的转移控制信号和地址偏移量来判断是否落在环形历史缓冲区内。例如,在上例中如果实现了一个包括8个信息单元的环形历史缓冲区,在向后位移时,先用一个3位减法器计算当前行指针和尾指针的位移 将行位移量和当前低位地址合并得到当前地址相对尾指针的偏移量 如果程序位移偏移量的低5位小于当前地址相对尾指针的偏移量,就说明程序位移仍然在有效区内。
可以看出,在例子中,如果一行有8个指令,在顺序执行的情况下,第一个指令在预测成功时工作在数据省电模式,在预测失败时工作在组选择省电模式下;取接着的6个指令时,工作在最省电的数据省电模式下;第8个指令工作在索引省电模式下。所以在顺序执行的情况下,每个cache行指令越多越省电。当然在系统设计中,还有性能方面的考虑。对下一行所在的组进行预测的分析在索引省电模式下,可以对下一个cache行所在的组进行预测,并只访问所预测的组的索引标志存储器。如果预测命中,就不需要访问另一个组的索引标志存储器;如果不命中,进入组选择省电模式。在例子中,如果随机作出预测,指令在所预测的组内的概率应该为50%。采用更准确的预测算法可以节省远远高于50%的索引标志存储器访问次数。
权利要求
1.一种降低指令cache功耗的控制逻辑,其特征在于,它的步骤如下1)在一个cache行内只访问一次索引标志存储器,保存行匹配和组选择结果;2)利用所保存的组选择结果来减少对数据存储器的访问;3)作出对下一个要访问的cache行的预测并利用间隙提前访问索引标志存储器,从而得到下一行的cache行的行匹配和组选择结果;4)在行与行切换时,利用步骤3的组选择结果来减少对数据存储器的访问;5)使用环形历史缓冲区来保存组选择的历史记录和预测结果。
2.根据权利要求1所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的利用所保存的组选择结果来减少对数据存储器的访问,即设置一存储单元保存上次访问过的数据存储器的组号,在同一cache行内,只需访问该存储单元所指的数据存储器,而不需要访问索引标志存储器和其它组的数据存储器。
3.根据权利要求1所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的作出对下一个要访问的cache行的预测并提前访问索引标志存储器,从而提前得到所预测的cache行的行匹配和组选择结果。
4.根据权利要求1所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的在行与行切换时,利用预先获得的组选择结果来减少对数据存储器的访问。就是在取下一行的指令时,只需访问预先得到的组选择结果所指的数据存储器,而不需要访问索引标志存储器和其它组的数据存储器。
5.根据权利要求1所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的使用环形历史缓冲区来保存组选择的历史记录和预测结果,在顺序执行和相对位移跳转仍然落在有效区内时,利用环形历史缓冲区的输出来替代访问索引标志存储器。
6.根据权利要求1或3所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的作出对下一个要访问的cache行的预测并提前访问索引标志存储器,一次只访问一个组的索引标志存储器,在命中的情况下,不对其它组的索引存储器进行访问。
7.根据权利要求1或5所述的一种降低指令cache功耗的控制逻辑,其特征在于所说的相对位移跳转落在有效区内,其判断方法是利用相对位移的偏移量及跳转地址的低位。
全文摘要
本发明公开了一种降低指令cache功耗的控制逻辑。一方面利用访问索引标志存储器的间隙来提前访问索引标志存储器,得到并保存下一个cache行的行匹配和组选择信息,这使得在取指过程中,只需开启一个组的数据存储器就可以得到指令,从而减少对数据存储器的访问;在提前访问索引标志存储器时,还可利用预测机制来减少对索引标志存储器的访问。另一方面利用环形历史缓冲区来记录每次访问索引标志存储器得到的组选择信息及地址范围,在程序跳转时如果地址落在环形历史缓冲区内,组选择信息可以被重用,从而减少对索引标志存储器的访问次数来节省功耗。利用本发明可以极大地节省功耗,而且具有硬件代价小,实现简单的优点。
文档编号G06F9/38GK1445661SQ0311656
公开日2003年10月1日 申请日期2003年4月21日 优先权日2003年4月21日
发明者张宇弘, 王界兵, 严晓浪 申请人:杭州中天微系统有限公司