【论文导读】Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power

处理器的memory system中存在相当数量的dead block(即最后一次touch直到被选择victim cacheline替换出去的cacheline)。这些cacheline的存在会增加系统的静态功耗,即Leakage Power。
【论文导读】Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power
统计上dead time占总体时间的30%。

对cacheline设置为dead的策略:当维持cacheline的所需要的静态功耗等于从下一级cacheline取数据所消耗的动态功耗时,则可以将cachline 设置为dead。

经过统计之后,从L2获取数据所消耗的动态等于9x整体L1 cache的动态功耗,如果L1的cachline的数目为1024,那么就是当cacheline在9x1024即10 000个cycle后都没有被再次访问,就可以将cacheline设置为invaliate。

采用time-base cache decay的方式,考虑到专门为每一个cachline都设置一个计数器,那么时间代价太大,因此增加一个总体的计数器,在时间计数到达阈值时,就关闭cacheline。
【论文导读】Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power
考虑到如果设置了固定的计数,就将cacheline victim出去,可能会导致victim出去之后,就立刻被访问而发现miss,因此作者又设置了adaptive模式,即cache decay之后仍然计数,如果立刻被访问,那么就将decay interval增加,而如果过了很久才被访问,那么就将decay interval减小,这样以实现动态的适应。
【论文导读】Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage Power
比较有意思的几点

  • 其实即使没有实现高效的cachline victim出去,性能也不一定恶化很多,因为这样这里其实提前write back了dirty的cacheline
  • 如果是inclusive的cache hierarchy,比如存在L1D和L1I,可能需要L2对state的记录以实现SMC,这时的tag是应当保留的,以保证state能正确的被发现了
  • 考虑到多条dirty的cacheline可能同时到达阈值,而需要decay,那么需要将它们之前设置一定的时间间隔,以避免发生write back burst的情况

欢迎关注我的公众号《处理器与AI芯片》