首页> 中国专利> 基于包含式Cache体系的多核处理器低功耗设计结构

基于包含式Cache体系的多核处理器低功耗设计结构

摘要

一种基于包含式Cache体系的多核处理器低功耗设计结构,包括本地Cache和二级共享Cache;本地Cache的每一路均包括原始Tag、Valid以及它们对应的校验元Parity1,还包括新增的路位置指示信息Way‑tag与其对应的校验元Parity2;二级共享Cache包括多路组相联的Tag模块和Data模块,Tag模块包括Tag、Valid以及它们对应的纠检错码ECC,Data模块包括Data及其对应的纠检错码ECC。本发明通过提前预知二级Cache更新时的副本位置,避免激活所有二级Cache的Tag存储体,仅需要访问对应的Tag路即可,以此在不影响处理器性能的前提下节省较大的功耗。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-25

    授权

    授权

  • 2016-12-14

    实质审查的生效 IPC(主分类):G06F13/16 申请日:20160620

    实质审查的生效

  • 2016-11-16

    公开

    公开

说明书

技术领域

本发明属于集成电路设计领域,具体涉及一种基于包含式Cache体系的多核处理器低功耗设计结构,能够面向应用于包含式多级Cache。

背景技术

受到设计复杂度和功耗性能比的限制,通过提高时钟频率以及增加发射宽度来提高处理器性能的技术路线已经难以适应现代微处理器的发展需求。因此,架构简单、具有良好可扩展性和低功耗特性的多核处理器成为目前高性能微处理器体系结构的主流。

然而,随着片上核数的增多,为了解决高速处理器与低速主存的“存储墙”问题,片上Cache尤其是末级共享Cache(目前主流为L2级)的容量不断增大,其功耗所占系统功耗的比重也越来越大,约占整个处理器功耗的30%~60%。因此,涉及多核处理器Cache的低功耗技术,已经成为现代商用多核处理器乃至航天及空间应用处理器的研究热点。

中国专利CN102135793A,名称为“一种面向低功耗的多核共享Cache混合划分方法”,提出利用程序的局部性原理,将二级Cache中访问差异度较大的线程合并为一个划分单位来实现Cache的路划分,使得在运行同一个应用时,通过使用较少的Cache路,关闭剩余Cache路,在满足性能需求的基础上达到降低功耗的目的。中国专利CN101859281A,名称为“基于集中式目录的嵌入式多核Cache一致性方法”,它主要考虑的是多核处理器在处理数据一致性问题时,采用总线监听机制容易造成本地Cache的额外功耗开销,因此它在二级共享Cache处增加集中式目录,通过采用定向消息发送机制降低了广播通信带来带宽的压力,避免了对无关处理器性能及功耗的影响,具有较好的可扩展性。中国专利CN102346714A,名称为“用于多核处理器的一致性维护装置及一致性交互方法”,同样针对Cache一致性的功耗开销进行优化,它首先将所有处理器核划分为并列关系的多个节点,每个节点内包含多个内核,在需要一致性监听时首先预测最近的有效副本节点,并通过内嵌的目录决定是否继续推进至其它节点,由于其以节点为单位进行粗粒度预测,相对以内核为单位的细粒度预测有效节省了功耗开销。上述相关专利的低功耗效果完全依赖于所提策略的预测精度以及背景程序的局部性特征,因此其低功耗效果存在较大的波动和不确定性。

片上Cache作为缓解处理器与主存速度差距的桥梁,在多核处理器中扮演的角色愈加重要。然而,随着功耗与性能收益矛盾的日益突出,商用多核处理器乃至空间多核处理器都迫切需要具有针对性与确定性的低功耗设计方案,但是尚未发现有解决该问题的方法。

发明目的

本发明的目的在于针对上述现有技术中的问题,提供一种基于包含式Cache体系的多核处理器低功耗设计结构,利用多级Cache之间的包含式特征,通过为本地Cache与二级Cache建立路信息的映射表,从而在执行写操作时能够准确的避免二级Cache无关路的激活,能够在不影响处理器性能的前提下,明显降低多核处理器片上大容量二级Cache的动态功耗。

为了实现上述目的,本发明采用的技术方案为:包括本地Cache和二级共享Cache;本地Cache的每一路均包括原始Tag、Valid以及它们对应的校验元Parity1,还包括新增的路位置指示信息Way-tag与其对应的校验元Parity2;二级共享Cache包括多路组相联的Tag模块和Data模块,Tag模块包括Tag、Valid以及它们对应的纠检错码ECC,Data模块包括Data及其对应的纠检错码ECC;本地Cache通过处理器地址CPU Addr进行访问,处理器地址CPU Addr包括用于作为地址检索各路本地Cache的索引段L1-index;本地Cache在第二周期返回每一路的Tag、Valid、Parity1、Way-tag、Parity2,处理器地址CPU Addr还包括在Valid有效的前提下用于与Tag在比较器中进行对比的L1-tag,Tag与校验元Parity1送入校验逻辑单元进行错误判断,比较器与校验逻辑单元的输出结果送入与门;Way-tag与其校验元Parity2送入另一校验逻辑单元进行错误判断;本地Cache各路的命中结果送入多路选择器MUX1,各路的Way-tag送入多路选择器MUX2,Way-tag的校验结果即Way-tag使能信号Way-tag en送入多路选择器MUX3,多路选择器MUX1输出的命中路号控制MUX2和MUX3输出Way-tag及其使能信号Way-tag en,MUX2输出的Way-tag经过译码器转换为独热码形式,并送入由MUX3输出的Way-tag en信号控制判别器中,如果Way-tag可用,将Way-tag送往二级共享Cache,否则由多路选择器MUX4认定为缺失,激活二级共享Cache的所有路进行查询;

二级共享Cache包括处理器地址L2Addr,处理器地址L2Addr包括用于作为地址访问二级共享Cache各路存储体的索引段L2-index;本地Cache的读使能信号经过多路选择器MUX4输出唯一的Way-tag标识,从而打开多路二级Cache存储体中唯一的一路。

所述的二级共享Cache包括16路组相联的Tag模块和Data模块。

所述的二级共享Cache采用先查询Tag模块,后访问Data模块的相位访问方式。

所述的二级共享Cache查询Tag模块时,输出的Tag在Valid有效时与L2Addr中的L2-tag段送入比较器进行对比,同时Tag与ECC送入纠错逻辑,如果出现能够纠正的错误则对存储体内容进行回写,各路Tag比较器的输出结果与纠错逻辑的输出结果送入与门,产生各路最终的命中信号,并由多路选择器MUX5输出确定的命中路号。

所述的二级共享Cache访问Data模块时,各路Data与对应纠检错码ECC送入纠错逻辑单元并对能够纠正的错误进行回写,所有Data路的输出均送入多路选择器MUX6,并由多路选择器MUX5决定哪一路的数据输出返回至处理器。

所述的路位置指示信息Way-tag深度相等,存储开销通过如下公式进行表征:

Sway-tag=SL1Sline,L1×log>Nway,L2×P

在该公式中,Sway-tag表示所有内核Way-tag的存储开销,SL1表示一个数据Cache的容量,Sline,L1表示每个数据Cache块的大小,Way-tag的每个表项位宽为logNway,L2,Nway,L2为二级Cache的关联度,P为处理器核数。

与现有技术相比,本发明具有如下的有益效果:针对大容量片上末级Cache在多核处理器中的功耗问题,本发明使用非预测性的功耗优化技术,即通过在包含式Cache体系的本地Cache中集成能够指示该数据在二级Cache副本的路位置信息,从而在写命中操作时能够避免激活所有二级Cache的Tag存储体,从而以一种定向指示方式降低了二级Cache动态功耗。本发明在集成路位置指示信息的同时,考虑到容错需求,独立于原始Cache结构而单独增加了一位奇偶校验元,以较小的开销避免了路位置信息对原始结构容错性能的干扰,也避免了因编码字位宽的增大而引入的额外访问功耗。本发明具有显著的可伸缩性,所提出的路位置指示信息可以依据本地Cache容量、Cache块大小、处理器核数进行相应调整,并且所产生的额外存储开销相对于原始Cache几乎可以忽略。本发明所提的辅助结构,并不影响本地Cache原始的访问时序,所有路信息的更新与二级Cache缺失数据的返回并行进行,而路信息的访问与Tag存储体并行进行,因而最大限度避免了关键路径的形成。

附图说明

图1包含式Cache体系下多核处理器Cache低功耗策略示意图;

图2本发明的整体结构示意框图;

具体实施方式

下面结合附图对本发明做进一步的详细说明。

参见图1,多核处理器中多级Cache之间的包含属性关乎整个系统架构的设计策略,包含式多级Cache具有监听过滤的效果,能够降低一致性维护的复杂度,同时又具有数据冗余备份能力,有助于提高系统可靠性。然而,包含式特征暗含了本地Cache应采用写直达的写策略,这将使得包含式Cache在拥有诸多优势的同时,也为系统招致了较大的功耗开销。

Cache的功耗主要体现在Tag和Data存储体的激活上,一般的,二级Cache由于距处理器核心较远,对访问延迟不如本地Cache敏感,因此可以采用相位访问的方式,即以Tag检索的结果再对Data进行选择性访问。在多核处理器的共享二级Cache中,由于其容量较大,因此减少二级Cache Tag存储体的激活数量对于降低整个多核处理器的功耗有着重要意义。

在包含式多级Cache体系中,本地数据Cache中有效数据必然在二级Cache对应位置存在拷贝,且该拷贝的位置只有当二级Cache发生缺失替换时才会改变。对于本地Cache存在的四种操作:读命中、读缺失、写命中和写缺失,其中除了读命中外均需要访问二级Cache。

本发明的设计机理为:当本地Cache发生写命中需要更新二级Cache副本时,如果能够提前预知其在二级Cache中的副本位置,那么就能避免激活所有二级Cache的Tag存储体,只需要访问对应的Tag路即可,这样就能够节省较大的功耗。

图1展示了本发明提出的适用于包含式Cache体系的多核Cache低功耗设计结构,它包括四个处理内核以及一个包含式共享二级Cache,其中二级Cache的关联度为8。它的原理就是为每一个本地数据Cache块关联一个路位置信息(记为way-tag),该way-tag信息记录的是本地数据Cache块有效数据在二级Cache中的路号。当二级Cache发生替换操作时,从主存获得的数据块在插入二级Cache的同时,其在二级Cache中所处的路号也将随同该数据一同发往本地Cache的way-tag,由于该路号的更新行为并不占用额外的总线周期,因此并不影响处理器的性能。当处理器执行的写访问在本地Cache发生写命中时,同时读出对应way-tag信息将直接激活二级Cache中对应的Tag路。在图1的示例中,CPU0执行的写操作在本地Cache中命中,其way-tag指向二级Cache的way3,因此在通过总线访问二级Cache时,只需要激活way3进行查询,而剩余7路Tag存储体可以避免激活而节省动态功耗。事实上,实际的way-tag信息位宽并不如图1中与处理器核数相等,这样的存储开销过于庞大,而真实的way-tag信息只用存储副本所处的二级Cache路号即可。因此,本发明需要为每个内核的数据Cache集成深度相等的way-tag,其存储开销可以由如下公式进行表征:

Sway-tag=SL1Sline,L1×log>Nway,L2×P

在该公式中,Sway-tag表示所有内核way-tag的存储开销,SL1表示一个数据Cache的容量,Sline,L1表示每个数据Cache块的大小,way-tag的每个表项位宽为logNway,L2(Nway,L2为二级Cache的关联度),P为处理器核数。此外,考虑到容错的需求,新增的way-tag也应当配置相应的校验元,这是因为如果way-tag受到诸如SEU的影响而产生翻转,将导致在二级Cache中查询不到数据副本,会使得包含式特征不复存在,引发Cache体系管理策略的失效。本发明为应对此风险,为每一个way-tag表项配置一位奇偶校验位,这里之所以没有将way-tag与tag、valid信息统一进行编码校验的原因有三方面:一、出于可靠性考虑,way-tag的加入将会增加编码字的错误累积,可能使得原本Tag中能够检查出的错误被掩盖;二、出于性能的考虑,即使Tag正确而way-tag出错,合并编码也必然导致Cache缺失,那么就降低了Cache的利用效率,使得处理器的执行速度受到影响;三、出于功耗的考虑,在本地Cache的四种操作类型中,只有写访问才会并行访问way-tag,但是如果将way-tag与tag、valid统一进行编码,那么对于读访问也必须激活way-tag才能对tag进行校验,从而增加了不必要的功耗。

综上,考虑到way-tag仅仅是作为辅助信息存在,其重要性低于tag与valid,因此本节将单独为way-tag设置一位奇偶校验元。

值得说明的是,由于包含式的存在,二级Cache在替换时存在反向替换操作,但是本地Cache被反向无效其实属于监听操作范畴,只需要将本地Cache中的数据副本无效即可,不需要对way-tag进行操作。同理,核间进行监听操作时,发起写请求的一方也不需要发送监听way-tag的使能信号。在way-tag实际使用过程中,需要考虑其与原始Tag的访问顺序。首先由本地数据Cache判断执行的是否为store类指令,若条件满足,则在访问Tag的同时并行读取对应位置的way-tag及其校验元,而后在第二个周期返回tag、valid、way-tag及校验元后,如果valid有效,则令way-tag与tag并行进行奇偶校验,这样可以避免两种校验操作在单周期内串行化执行带来的关键路径风险。当tag判别为写命中且所有校验均正确的情况下,本地数据Cache在发出监听使能的同时,也将发出way-tag及其使能信号,而若way-tag校验出错,仅仅撤销way-tag使能信号,并不影响其它操作的正常执行及时序。因此,这里能够认为发往二级Cache的way-tag是有效的。

参见图2,本发明主体结构主要包括两部分组件:本地Cache和二级共享Cache。对于本地Cache,以两路Way0和Way1为例,其中每一路均包括原始的Tag、Valid及对应的校验元Parity1,以及新增的路位置指示信息Way-tag及对应的校验元Parity2。二级Cache分为16路组相联的Tag部分和Data部分:Tag部分包括Tag、Valid及对应的纠检错码(ECC),而Data部分包括Data及对应的纠检错码ECC。

访问本地Cache使用处理器地址CPU Addr,利用其中的索引段L1-index作为地址检索各路Cache,然后本地Cache在第二周期返回每一路的tag、valid、parity1、way-tag、parity2。输出的tag在valid有效的前提下,与CPU Addr中的L1-tag送入比较器进行对比,同时tag与parity1送入校验逻辑进行错误判断,然后比较器的输出结果与校验逻辑的输出结果送入与门,这表示只有当Tag匹配且校验无误,则该路Cache命中。与此同时,way-tag与parity2同样送入另一个校验逻辑进行错误判断。图2中各路的命中结果送入多路选择器MUX1,各路的way-tag送入多路选择器MUX2,而way-tag的校验结果,即way-tag使能信号way-tag en送入多路选择器MUX3,由多路选择器MUX1输出的命中路号控制MUX2及MUX3输出唯一的way-tag以及其使能信号way-tag en。多路选择器MUX2输出的way-tag需经过译码器转换为独热码形式,并送入由多路选择器MUX3输出的way-tag en信号控制的判别器中,以决定该way-tag是否有效可用,如果可用,则将way-tag送往二级Cache,否则由多路选择器MUX4认定为缺失,改为激活二级Cache的所有路进行查询。在完成本地Cache的查询后,仍然使用处理器地址L2Addr中的L2-index段作为索引地址访问二级Cache各路存储体,然而此时各路存储体的读使能信号由本地Cache的多路选择器MUX4决定。如果本地Cache命中且校验无误,则MUX4输出唯一的way-tag标识,从而打开16路二级Cache存储体中唯一一路的读使能,以实现本发明所提的低功耗目标,否则按照传统方式激活所有存储体。

二级Cache采用相位访问方式,即先查询Tag部分,后访问Data部分。在查询Tag部分时,输出的tag在valid有效的情况下,与L2Addr中的L2-tag段送入比较器进行对比,同时tag与ECC送入纠错逻辑,如果出现可纠正的错误则对存储体内容进行回写。与本地Cache结果一样,各路Tag比较器的输出结果与纠错逻辑的输出结果送入与门,产生各路最终的命中信号,并由多路选择器MUX5输出确定的命中路号。对于二级Cache的Data部分,同样需要将各路data与对应ECC送入纠错逻辑并对可纠错误进行回写,此时所有Data路的输出均送入多路选择器MUX6,并由MUX5决定哪一路的数据输出返回给处理器。

本发明已经应用于一款兼容SPARC V8指令集的多核处理器中。该多核处理器采用包含式多级Cache体系,通过使用本发明所述的具有定向访问功能的Cache低功耗优化技术,能够大幅度减少本地Cache写命中时激活二级Cache存储体的数目,从而降低了系统动态功耗。该芯片已完成设计,所述电路结构功能正常,符合预期目标。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号