微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 行业新闻动态 > Cache结构的低功耗可重构技术研究

Cache结构的低功耗可重构技术研究

时间:07-26 来源:单片机与嵌入式系统应用 点击:

随着集成电路的工作速度和芯片集成度不断提高,芯片的功耗问题变得越来越突出,高性能低功耗设计已经成为当前集成电路领域的一个重要课题。在以微处理器为核心部件的VLS1系统中,Cache是系统取得高数据传输率的关键部件。在现代CPU 中,Cache的功耗约占处理器总功耗的30%~60%,有效降低这部分的功耗,对芯片的低功耗设计有着重大的意义。

  
1 Cache低功耗相关研究

  Cache平均访问功耗是Cache性能表现的一个重要因素。Cache平均访问功耗由Cache 命中时的访问功耗、失效时的访问功耗和失效率三者决定。失效时的访问功耗又包括两部分:一部分是Cache失效时Cache电路的功耗,另一部分则是下一级存储系统的访问功耗。因此降低Cache功耗可以从三个方面考虑:一是降低Cache的失效率,二是降低Cache访问能量,三是降低主存访问能量。

  为了达到低功耗的目的,对Cache结构做了一些改进:Phase-lookup Cache结构,应用两级查询的机制,即先访问tag array,只有命中的那一路data才会在第二相去访问,这样就降低了组相联Cache中数据array部分的功耗,但增加了Cache访问的时间;Way predicTIve组相联Cache结构,在默认情况下只访问一个tag array和一个data array,只有在默认访问失效时才会去访问其他的tag和data array,这种方法也以增加Cache访问时间的代价来换取低功耗;伪组相联Cache结构,是具有多个命中时间的Cache结构,Cache中的每一路可以被顺序读取,从而可以比传统的同时读取结构节省一部分功耗;另外还有基于压缩方法方面的研究,针对高频值的局部性,在读写Cache的过程中,对高频出现的数据值进行压缩存储,用较少存储空间保存编码后的数据,在一定程度上减少了Cache的访问功耗。

  低功耗可重构的Cache研究在最近几年得到关注,通过改变Cache的结构参数,不管是用硬件实现还是用软件实现,针对不同的程序来配置优化的Cache结构,尽可能地关闭不使用的Cache,兼顾了系统的性能和功耗。Cache的结构参数很多,主要的参数有容量大小、相联度、块大小、替换算法、写回策略等。一般而言,系统中的Cache替换算法和写策略是固定的,如果改变也可以在软件层面上实现。所以主要关注Cache的硬件结构是否可重构,仅研究其中几个参数(如Cache容量、块大小和相联度)对访问功耗的影响。在设计芯片之前可以使用CAD 工具来确定对命中时间和功耗的影响。CACTI程序是一个可以评估CMOS微处理器各种Cache结构访问时间和功耗的CAD工具。对于一个给定的最小特征值,可以改变Cache容量、相联度和读/写端口的数目,以估计各种情况的Cache命中时间和功耗。可重构Cache结构需要综合考虑Cache的命中率、平均访问时间和访问能量等性能,合理选择Cache的配置参数。

  
2 可重构Cache的体系结构

  要实现可重构Cache,首先Cache的结构要支持运行过程中的动态划分,其次要有检测 Cache命中率的硬件或者软件机制,并且有相应的动态配置算法。

  2.1 可重构Cache系统设计

  文献提出了一种可重构的数据Cache结构。该Cache的数据区被平均分为4个子分区 (subarray),每个子分区又分为4组。在Cache访问时,只有一个子分区打开,其他子分区的线路不被激活,从而节省了功耗。图1给出了整个 Cache体系结构及功能模块。

  与传统Cache结构相比,图1中增加了Cache配置动态选择器(Cache Configuration Dynamic Selector, CCDS),CCDS用来更新内部状态机,并决定合适的Cache配置。通过配置CCDS,可以使整个子阵列无效,或者使有效子阵列中的某些路无效。对于无效的子阵列或者路,局部自选线(Local Word Line)、预充电(Precharge)和读出放大器(Sense Amplifier)都无激励。通过这些改进使得传统的固定划分的Cache具备了动态配置能力。

  改进后的Cache外在表现为一个虚拟的两级Cache:Ll/L2。这种分级方式同传统的 L1/L2两级Cache结构不同,L1 Cache由激活的不同子分区以及子分区内不同的路数构成,未激活的部分为L2,在L1未命中时激活以进行访问,L1和L2在物理实现上表现为同一级。 Cache的地址划分仍为三部分:标志位、索引位和块内地址。图2给出了Cache的地址划分情况,可分为块地址(Block Address)和块内偏移(Block offset)。块地址可以进一步分为标志字段(Tag)和索引字段(Index)。其中Tag的后两位SS用来做子分区的选择位。访问Cache时,首先访问L1,当L1命中时就直接返回,只有在L1访问失效时才会将所有数据区打开。对不同的应用程序,L1和L2大小的划分不同,其访闽时间和运行功耗也会有较大差异。


2.2 动态重构算法

在程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top