一种降低cache访问功耗的方法和电路
文献发布时间:2023-06-19 11:55:48
技术领域
本申请涉及电路,具体涉及一种降低cache访问功耗的方法和电路。
背景技术
在SOC(System on Chip,片上系统)系统中,CPU访问外部存储介质速度较慢。如在蓝牙音频IC上,CPU一般是以SPI(Serial Peripheral Interface,串行外设接口)NORFLASH为存储介质,速度一般不高于50MB/s,和CPU的总线接口速度相差很大。现有技术一般有两种方法来提高CPU的执行效率:一是使用内部RAM来缓存数据,内部RAM和外部存储介质的数据交换需要软件操作;二是使用cache(高速缓冲存储器)来缓存数据,cache和外部存储介质的数据交换由硬件完成,对软件是透明的。第二种方式对软件开发比较友好,是目前常用的方法,但访问cache的功耗相比访问RAM要大一些。这是因为cache一般是多way相联的,访问一次cache要同时将各way的数据都读出来,然后再比较判断使用哪一路的数据。一个way就是一块RAM,相当于同时要访问多块RAM,所以功耗比访问单块RAM要高。所以现有技术亟待一种新的访问cache的方法。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种访问cache的方法,可以大幅降低访问cache的电路的功耗。本发明实施例是这样实现的,一种降低cache访问功耗的方法,包括:
CPU发出对cache访问请求的访问地址,所述访问地址包括地址高位和地址低位;
比较控制器对所述地址高位与地址寄存器中的高位缓存地址进行比较;
如果上述比较结果一致,所述CPU直接访问与所述高位缓存地址相对应的RAM。
进一步地,所述比较控制器的比较结果如果不一致,则执行普通的cache访问流程。
进一步地,所述执行普通的cache访问流程进一步包括:
读取各个RAM的数据;
判断被访问命中的RAM,并记录所述命中的RAM;
更新所述地址寄存器中的高位缓存地址的值。
进一步地,所述CPU直接访问与所述高位缓存地址相对应的RAM进一步包括:所述比较控制器打开与所述对应的RAM相连接的门控制器,使得所述CPU访问所述对应的RAM。
根据本发明实施例的另一方面,本发明实施例还提供一种降低cache访问功耗的电路,可以大幅降低访问cache的电路的功耗,本发明实施例是这样实现的,包括
比较控制器、N个RAM、N个门控制器以及地址寄存器,所述N个门控制器分别与N个RAM相连;
所述比较控制器和N个门控制器以及外部CPU相连,用于接收外部CPU发出的cache访问请求的访问地址,所述访问地址包括地址高位和地址低位;
所述比较控制器与所述CPU和所述地址寄存器相连,用于对所述地址高位与地址寄存器中的高位缓存地址进行比较,并根据比较结果对所述N个门控制器进行开关控制。
进一步地,所述比较控制器还用于,
当比较结果不一致时,所述比较控制器控制N个门控制器全部打开,用于执行普通的cache访问流程;
当比较结果一致时,所述比较控制器控制打开相应RAM连接的门控制器,所述相应RAM为与所述高位缓存地址相对应的RAM。
进一步地,所述CPU进一步包括:
读取单元,用于读取各个RAM的数据;
判断单元,用于判断被访问命中的RAM,并记录所述命中的RAM;
地址更新单元,用于向地址寄存器发出高位缓存地址更新的指令。
根据本发明实施例的另一方面,本发明实施例还提供一种电路,包括上述任一所述的降低cache访问功耗的电路。
根据上述技术方案,本发明实施例具有如下效果:大幅降低CPU访问cache的功耗,使其尽量接近访问单块RAM的功耗。在CPU和通用cache之间增加一套比较控制电路,将普通访问cache流程里必然要打开所有way的操作变为了某些场景下只会打开一个way的操作,从而降低了访问cache的功耗。同时这部分控制电路的工作和访问cache的过程可以在同一个时钟周期内完成的,控制电路并没有增加新的延时,所以不会引起访问cache的性能下降。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了本申请提供的一种降低cache访问功耗的方法流程图;
图2示出了本申请提供的一种降低cache访问功耗另一实施例的方法流程图;
图3示出了本申请提供的一种降低cache访问功耗的电路框图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请,以下实施例中的步骤顺序仅为列举,在不冲突的情况下可以调整。
如图1所示,本发明实施例提供的一种降低cache访问功耗的方法,包括如下步骤:
(S101)CPU发出对cache访问请求的访问地址,所述访问地址包括地址高位和地址低位;
(S102)比较控制器对所述地址高位与地址寄存器中的高位缓存地址进行比较;
(S103)如果上述比较结果一致,所述CPU直接访问与所述高位缓存地址相对应的RAM。
具体来说,当CPU发出一个访问请求,访问地址Addr被送出来,该访问地址包括地址高位Addr_high和地址低位Addr_low,地址高位Addr_High被送到比较控制器,比较控制器将地址高位Addr_High和地址寄存器Addr_High_Buf里的值做比较,如果比较结果一致,则说明这次CPU访问的数据和上次的数据在同一个cacheline里,也必然是在同一个way里,此时CPU直接访问与所述高位缓存地址相对应的RAM。而地址低位Addr_low的作用在于直接作为各个way的地址去访问各个way的ram。
本发明还提供另外一实施例,在步骤(S103)中,CPU直接访问与所述高位缓存地址相对应的RAM进一步包括:所述比较控制器打开与所述对应的RAM相连接的门控制器,使得所述CPU访问所述对应的RAM。在访问RAM之前会经过门控制器Access_Gate。只有门控制器打开,地址和时钟才会送给ram,如果Access_Gate不打开,则不会有对ram的访问,也不会产生对这块ram的访问电流。当上述实施例中比较控制器比较结果一致时,比较控制器会发出控制信号将对应的way的Access_Gate打开,其他way的Access_Gate关闭。这样CPU既可以访问到正确的数据,又不会因访问了无用的way而消耗多余的功耗。如果Addr_High和地址寄存器Addr_High_Buf里的值不相等,则Compare会用Addr_High的值更新Addr_High_Buf,同时打开所有的Access_Gate,这时就是普通的cache访问流程。下面将提出另外一个实施例对普通的cache访问流程进行说明。
本发明还提供另外一实施例,如图2所示,一种降低cache访问功耗的方法,包括:
(S201)CPU发出对cache访问请求的访问地址,所述访问地址包括地址高位和地址低位;
(S202)比较控制器对所述地址高位与地址寄存器中的高位缓存地址进行比较;
(S203)所述比较控制器的比较结果如果不一致,则执行普通的cache访问流程,读取各个RAM的数据;
(S204)判断被访问命中的RAM,并记录所述命中的RAM;
(S205)更新所述地址寄存器中的高位缓存地址的值。
具体来说,当CPU发出一个访问请求,访问地址Addr被送出来,该访问地址包括地址高位Addr_high和地址低位Addr_low,地址高位Addr_High被送到比较控制器,比较控制器将地址高位Addr_High和地址寄存器Addr_High_Buf里的值做比较,如果比较结果不一致,则说明这次CPU访问的数据和上次的数据不在同一个cacheline里,这时比较控制器则会用Addr_High的值更新Addr_High_Buf,同时打开所有的门控制器,让CPU逐一访问各个way,也就是各个RAM,这时就是普通的cache访问流程。此时CPU走正常的cache访问流程,同时去读取各个RAM的数据,判断哪个RAM被访问命中,并记录所述命中的RAM,并将地址寄存器中的高位缓存地址的值Addr_High_Buf的值更新成此时的高位地址Addr_High。
下面用一个具体示例来对上述流程进行举例说明,假设cache是4way,也就是4个RAM,每一way为4Kbyte,CPU第一次访问cache,发出的访问地址addr=0x10000200,则Addr_high地址高位是0x10000,Addr_low地址低位是0x200,地址寄存器Addr_High_Buf里面由于是第一次访问还没有值,比较控制器对CPU发出的Addr_high地址高位0x10000和Addr_High_Buf比较,如果不相同,此时CPU走正常的cache访问流程,同时去读取4个way的数据,判断哪个way命中,把命中的way记下来,并将Addr_High_Buf的值更新为0x10000。CPU第二次访问cache,addr=0x10000204,则addr高位是0x10000,addr低位是0x204,地址寄存器Addr_High_Buf的值是0x10000,和addr高位比较相等,此时CPU就只读取上次命中的way,比较控制器打开对应这个way的门控制器,其他门控制器不打开,这样其余的3个way就不去访问了,这样就节省了读这3个way的功耗。本领域技术人员可以理解,cache可以具有更多不同的RAM,相应的地址即随之变化。
根据本发明实施例的另一方面,本发明实施例还提供一种降低cache访问功耗的电路,可以大幅降低访问cache的电路的功耗,如图3所示,本发明实施例是这样实现的,比较控制器2、N个RAM4、N个门控制器3以及地址寄存器5,所述N个门控制器4分别与N个RAM4相连;,所述比较控制器2和N个门控制器3相连接以及外部CPU1相连,用于接收外部CPU1发出的cache访问请求的访问地址,所述访问地址包括地址高位和地址低位;所述比较控制器2与所述CPU1和所述地址寄存器5相连,用于对所述地址高位与地址寄存器中的高位缓存地址进行比较,并根据比较结果对所述N个门控制器3进行开关控制。所述门控制器的数量与RAM的数量一致,并且一一对应。本领域技术人员可以理解,本发明实施例可应用于任意处理器对cache的访问方式,任何具有处理功能的例如单片机、图像处理器、SOC等处理器都可以使用。
当CPU1发出一个访问请求,访问地址Addr被送出来,该访问地址包括地址高位Addr_high和地址低位Addr_low,地址高位Addr_High被送到比较控制器2,比较控制器2将地址高位Addr_High和地址寄存器5Addr_High_Buf里的值做比较,如果比较结果一致,则说明这次CPU访问的数据和上次的数据在同一个cacheline里,也必然是在同一个way里,此时CPU1直接访问与所述高位缓存地址相对应的RAM。如果比较结果不一致,所述比较控制器2控制N个门控制器全部打开,用于执行普通的cache访问流程。
本发明还提供另一实施例,所述CPU进一步包括:读取单元,用于读取各个RAM的数据;判断单元,用于判断被访问命中的RAM,并记录所述命中的RAM;地址更新单元,用于向地址寄存器发出高位缓存地址更新的指令,比较控制器根据CPU发出的指令,更新高位缓存地址的值。此时CPU1走正常的cache访问流程,CPU中的读取单元去读取各个RAM的数据,判断单元判断哪个RAM被访问命中,并记录所述命中的RAM,通知地址更新单元将地址寄存器中的高位缓存地址的值Addr_High_Buf的值更新成此时的高位地址Addr_High。
根据本发明实施例的另一方面,本发明实施例还提供一种电路,包括上述任意一种降低cache访问功耗的电路。该电路可广泛应用于各种系统电路,例如多媒体系统、便携式系统、AI控制电路等。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
- 一种降低cache访问功耗的方法和电路
- 一种降低多核终端内存访问功耗的方法和系统