您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 低功耗cache现状
Cache低功耗结构设计技术现状一.概述纵观计算机系统和微处理器的发展,随着半导体加工工艺水平的不断提高,CPU和存储器的性能都有了很大的提高。CPU频率的提高,必然要求系统中存储器的存取速度要提高,还要求其容量要增大。主存储器DRAM容量的提高还是比较快的,但是DRAM读取时间的提高却很慢。从而在速度上与CPU主频的提高产生了极不相配的情况,这样会影响整个系统的性能。CPU设计的问题之一就是解决高速CPU和低速DRAM之间的平衡或匹配问题,以求系统性能的整体提高。在它们之间加入高速缓冲存储器Cache,就是这个问题的解决方案之一。1)Cache的工作原理从分级存储器体系结构来看,系统执行程序时,被访问的数据从下向上移动,当该数据被上移的新数据替换时,便又向下移动。一般来说,某级存储器中的数据是存储在下一级上数据的一个子集。Cache的存储区划分成行(line),也称为块(block),它与下一级存储器之间以块为单位交换信息。若CPU发出读请求,并且cache中相应数据存在,就可以从cache中读出,这称为命中(hit),否则称为未命中或缺失(miss)。当CPU要访问的数据不在cache中,系统将把包括相应数据的一块从下一级存储器读入cache中。如果此时cache已满,则需要决定将cache中某一块移出去,判定哪一块移出需要一种判断规则,称为替换算法。如果CPU执行写操作,数据需要改变cache和下级存储器中所有相应单元中的数据,这时有两种处理方法:一种是cache和下级存储器中数据同时被修改,称为通写法(writethrough);另一种方法是只修改cache中的数据,只有在cache中相应块被替换出去时才将其写到下级存储器中,这称为回写法(writeback)。2)Cache的组织形式Cache的设计需要考虑很多结构上的问题,如数据在那里查找,查找的方式如何以及cache块应该存在cache中的什么位置等等,这与cache的组织形式有关。Cache中的数据块与主存之中的数据块的对应关系由其采用的映象方式决定。而程序代码和数据也有两种存放方式,一种是将指令和数据分别存放在两个独立的cache中(分离式cache):指令cache(instructioncache,I-cache)和数据cache(datacache,D-cache)分离;另一种是将指令和数据共同存放在一个公用cache中(合一式cache)。在cache中查找和存储数据,既可以使用虚地址(虚cache),也可以使用实地址(实cache)。Cache的映象方式决定了cache的基本布局,一般包括直接映象、全相联映象和组相联映象,其它映象方式不过是此三种方式的延伸。直接映象cache是结构最简单的cache,存储器的地址唯一地确定了用于存放存储器数据块的cache组(set),即任意一个存储器数据块只能放在cache的一个固定位置上。其优点是每次cache访问只需进行一次标签比较,因此节省大量复杂的全同比较线路,可提高时钟速度。由于任意一个主存块只能放在cache的一个固定的组上,因此直接映象cache无需替换算法从而简化了cache设计。它的缺点是如果两个被频繁访问的主存块映象到同一位置,便会产生冲突(conflict),或颠簸(thrashing),其原因是将地址映象到cache块时,并未使用该地址的标签字段,因此,如果两个地址的差别仅在于它们的标签字段,对它们进行映象时就会互相冲突。因此,和其他映象方式相比,直接映象cache的命中率较低。全相联映象方式下,主存的任意一块数据都可以放到cache的任意一行上。它的优点是命中率较高,可以避免冲突现象。它的缺点是需要同时对所有块的标签字段进行匹配比较,因而需要价格昂贵的CAM(相联存储器)来实现,而且访问速度要低于直接映象cache。此外,为提高全相联cache的命中率,需采用合适的替换算法,这也将增加cache结构的复杂度。组相联映象方式是前两种映象方式的折中,它将cache和主存各分成若干大小相同的组(set),主存和cache的组数相等,称每个cache组内所包含的每一块称为一路(way)。主存组号与cache组号一一对应,亦即组间采用直接映象方式。主存组内一个数据块可以放到cache对应组内的任一路上,亦即组内采用全相联映象方式。其优点是兼得直接映象和全相联映象cache设计两种设计的优点,即结构相对比较简单,命中率较高。和全相联cache相比,组相联cache显著减少了匹配比较线路的数量。对于两路组相联cache,也只需两套比较线路;即使是较复杂的八路组相联cache,只需八套比较线路。组相联的替换算法也比较简单。和直接映象cache相比,组相联cache的命中率明显提高,而且较少产生冲突。3)Cache的替换算法对于全相联和组相联cache,在将主存中的一块放入cache时,往往需要先从cache中剔除一块,以便腾出一个空位容纳这个数据块。选择剔除块的准则就是cache的替换算法,在cache容量相同的条件下,好的替换算法可提高cache的命中率,最常见的替换算法包括:1)最近最少使用(LRU)算法:被替换的块是最近最长时间没有被访问的块,对相联度高的cache来说开销太大,因此衍生出很多其近似算法,如最久没有使用(LFU)、最近未使用(NRU)等算法。2)先进先出(FIFO)算法:被替换的块是最先进入的块,实现最简单。3)随机算法:替换块被随机选出。4)Cache的功耗在微处理器芯片中,片上cache产生的功耗占据整个芯片功耗的很大比例,例如DECAlpha21264中的cache的功耗约占芯片功耗的25%。其中大部分能量消耗在标签和数据阵列的预充(precharging)、灵敏放大(sensing)和放电等操作上。芯片上功能部件的功耗一般可参照下面公式进行:P=αCV2f+IoffV(1)α:电路的活动率(每个周期进行翻转的概率)C:电路的等效电容V:工作电压f:时钟频率Ioff:电路的漏电流其中等号右边的第一项是动态功耗,后一项为静态功耗。目前基本上有两种途径来降低cache的功耗,一种是从电路角度进行的低功耗设计,常见的方法包括双电压选择、存储器关电、cache分体等等;另外一种就是从cache结构设计角度,进行低功耗研究。本文着重讨论cache低功耗结构设计方法。降低cache动态功耗最有效的方法就是减少cache存储阵列(包括数据阵列和标签阵列)等效电容充放电的总数,那么从公式(1)中动态功耗表达式可知,降低电压的效果最好,减少电路等效电容、时钟频率以及电路活动率,都能够减少动态功耗。一般来说降低电压和减少频率与现代电路设计中对速度性能要求相矛盾,但是也可以在电路中对于某些模块采用休眠模式、双电压模式来减少功耗;减少电路等效电容是最普遍研究的方向之一,一般可以在L1cach系统中配置一个容量很小的缓冲器(1行或多于1行),大部分存储访问都能够在这个缓冲器中完成。由于缓冲器等效电容较小,因此将整个cache系统功耗降低,此类设计方案包括行缓冲器、L0cache、过滤cache等等;随着CMOS工艺技术的提高,深亚微米条件下静态功耗与动态功耗相比变得越来越不可忽视。近年来针对这个问题,出现越来越多的论述,其中在电路级和晶体管级优化方案(如门控Vdd等技术)有助于结构级cache静态功耗技术的发展。如DRIcache就是利用不同的程序的工作集对cache容量的要求不一样,通常cache的使用效率并不高,其代价就是无用的cache块的漏电流引起的静态功耗。通过检测缺失率指标,对cache块的Vdd进行门控,就是说让将来可能不被访问的块休眠,来去除漏电流引发的静态功耗。二.降低电路的等效电容-小容量缓冲器:最近小容量片上缓冲器得到研究人员广泛而大量的研究,其中最常见的包括过滤cache、L0cache以及行缓冲器,其它不过以三者为基础进行改进。1)过滤cache(Filtercache,FC):如图1b所示,所谓FC就是在L1cache和CPU之间增加一个容量较小的cache,通常256-512Byte,相对的L1cache则在8-32KB之间。其目的在于指令执行过图1三种cache结构示意图程中,提供小的重复率高的循环指令访问,这种循环在嵌入式应用程序中往往占据绝大部分执行时间。因此,此时允许切断L1cache从而节省功耗。原因在于相对小的FC来说,L1电容更大,而且漏电流也要大[1,2]。但是由于FC容量太小,它的缺失率也很高,高达28%的缺失率使得研究者寻找提高FC性能的办法,因此出现了很多预测FC结构(图1c)及算法。在文献[3]中作者介绍了一种解码FC(DecodeFilterCache,DFC),它可以向CPU提供译码后指令。DFC命中就无需从I-cache中取指以及随后的译码,从而降低功耗。DFC与IFC(InstructionFilterCache)的关键区别在于,当IFC缺失,缺失行被直接填充到IFC中,随后的访问就发生在IFC中;而DFC缺失后缺失行不能直接填充DFC,因为指令尚未被译码,因此相应的指令空间局部性便无法有效利用。作者提出使用一个并行行缓冲器,来提高DFC缺失行指令空间局部性利用率。同时为了有效利用cache空间,作者将指令划分为cacheable(可缓存)和uncacheable(不可缓存),只有译码宽度小的指令才可缓存,因此作者又采用矢量cache(sectoredcache)结构以使两种指令在一条cache矢量里。在文献[4]中,作者将其用于宽发射超标量处理器中并进行结构改进。在文献[5]中,作者给出一个两级过滤cache方案,如图2所示。在L1FC中块缓冲器(blockbuffer)用来有效利用时间局部性,以减少没有必要的cache访问。在L2FC采用sentry标签来过滤出在L1缺失时产生的多余路行为(wayactivities)。通过采用L2FC,只有那些可能命中的路被访问,因此更多地节约功耗。该方案无需软件支持,cache访问时间固定。在文章[6]中,作者提出新的模式预测方案进一步降低功耗,它有赖于当前指令前面的FC指令行访问流的缺失模式进行预测。仿真结果表明该方案优于NFPT预测器。由于FC有赖于小循环程序的反复执行,因此如果没有这种条件,便会导致FC性能下降。因此文献[7]提出一种动态FC方案,用来使能FC或关闭之,从而使得性能代价最低。文献[8]中考虑到模式预测器功耗,提出一个低功耗单周期模图22级过滤cache式预测器硬件结构,它能够在处理器时钟大于0.5GHz情况下实现单周期预测,并且面积只增加1500到2700门。2)L0cacheL0cache[9]就是在CPU和L1I-cache之间加入一个小cache,目的在于将频繁使用的代码存储其中,以降低L1访问次数从而降低功耗。它利用分支预测以及Confidenceestimator的结果来决定代码是否存入L0中。但是串行访问L0cache会引起较大的片上cache缺失率。如何有效管理L0Icache,在文献[10]中,作者分析了L0cache系统缺失模式基础,提出一套预测器,当预测为L0在下一次取指时为缺失时,它将被旁路而L1被访问。而且如果正确预测L0缺失,那么流水线取指bubble可以有效避免。HotSpotcache[11]是一种基于L0cache结构的cache结构,图4给出过滤cache和HotSpotcache结构对比示意图。HotSpotcache动态识别那些频繁访问指令,并将其存储于L0cache中,而其他指令则只存放在L1中,分配控制机构在取指阶段进行指令分配存储。仿真结果显示此方案可使I-cache功耗减少58%。图3L0Cache图4FC和HotSpotcache3)行缓冲器(linebuffer,LB):在文章[12]中,提出给组相联cache扩展若干输出锁存器,称为行缓冲器,用来增加地址流访问局部性利用率。也就是说当前正要被访问的cache行,
本文标题:低功耗cache现状
链接地址:https://www.777doc.com/doc-6985893 .html