一种应对多核处理器监听访问冲突的Cache设计结构及方法与流程

文档序号:11864607阅读:543来源:国知局
一种应对多核处理器监听访问冲突的Cache设计结构及方法与流程

本发明属于集成电路设计领域,具体涉及一种面向于多核处理器本地双端口应对多核处理器监听访问冲突的Cache设计结构及方法。



背景技术:

随着处理器技术水平的提升,单纯追求系统主频来提高处理器性能的发展模式已经难以为继。为此,通过在一块芯片上集成多个处理器核心而解决性能瓶颈的多核处理器应运而生。它能够以较低的频率实现较高的性能,同时在相同的性能水平下可以避免单核处理器较大的功耗开销。多核处理器设计面临的首要问题是,如何维护各个处理器本地Cache的数据一致性问题。目前商用处理器由于集成的核数较少,因此大多采用基于总线监听的一致性维护协议。该方法的关键是在本地Cache增加一个总线监听器,它能实时监听总线上其它处理器发起的写请求,并在本地Cache进行搜索,一旦命中,则采用写无效或写更新策略保证全局数据的一致。可见,总线监听器的设计结构及监听策略已经成为多核处理器性能的制约因素。

中国专利CN104008068A,名称为“一种基于MSI协议的双核Cache一致性系统电路结构”,它采用的MSI协议主要应用于写回式Cache,通过在原始Cache控制器的基础上增加总线监听控制器来维护不同处理器的数据一致性,然而,该发明未涉及总线监听控制器的具体设计结构。中国专利CN102866923A,名称为“对称多核的高效一致性侦听过滤装置”,它为每一个本地Cache的标志存储器均设置了一个单端口的存储副本,并将所有副本集中构成标志阵列以单独进行监听操作;同时,它将标志阵列划分为两个以及上的分区,每个分区拥有独立的控制信号和数据信号,使得监听操作可以在不同的分区间并行操作,从而提高了监听效率。中国专利CN102662885A,名称为“对称式多核处理器维护二级Cache一致性的装置及其方法”,它的主要特点是完全采用硬件方式在本地二级Cache位置自动完成Cache一致性处理,使用的一致性协议是在传统MESI基础上增加了用于核间Cache共享数据的传递状态,当本地Cache在对共享数据进行读访问时,可以从其它处理器Cache中读取数据,从而减小了访问主存的延迟开销,提高了系统性能。

目前,多核处理器已经成为商用处理器发展的必然趋势,同时也得到航空航天等军品领域的高度关注,而如何高效的应对Cache数据一致性问题,尤其是解决处理器端和总线监听端对Cache的访问冲突问题,是现代多核处理器设计亟需解决的问题。



技术实现要素:

本发明的目的在于针对上述现有技术中的问题,提供一种应对多核处理器监听访问冲突的Cache设计结构,利用片上双端口RAM存储器替代传统单核处理器Cache中单端口RAM存储器,实现处理器端和总线监听端的并行访问;同时基于总线时序特征提出不同行为周期的独立应对策略,在保证Cache一致性的前提下,最大限度的降低因访存冲突对系统性能造成的影响,该技术不受多核应用环境、存储容量的限制,在民用和军用领域均适用。

为了实现上述目的,本发明应对多核处理器监听访问冲突的Cache设计结构,包括:

用于监听第一周期处理器端替换写、总线端监听读的冲突解决模块;

用于监听第一周期处理器检错写、总线端监听读的冲突解决模块;

用于监听第二周期处理器端写、总线端监听写的冲突解决模块;

用于监听第二周期处理器端读、总线端写的冲突解决模块;

各个冲突解决模块均包括用于存储Tag、Valid及Parity值的两路双端口Cache、处理器端访问地址CPU Addr、总线端监听地址Snoop_addr、用于选择Cache替换路的替换算法选择器、用于接收待编码信息并输出校验元的校验元编码器,以及用于接收编码字和校验元并输出错误指示信号的校验元解码器;所述的两路双端口Cache包括两个地址端口、两个读使能端口、两个写使能端口、两个数据输入端口以及两个数据输出端口;处理器端访问地址CPU Addr包括用于作为地址访问两路双端口Cache的L1-index段以及用于作为校验元编码字信息源的L1-tag段,总线端监听地址Snoop_addr中的L1-index段作为地址监听访问两路双端口Cache;冲突解决模块还包括用于接收处理器端访问地址CPU Addr与总线端监听地址Snoop_addr中的L1-index段并进行比较的访问冲突判别电路。

本发明应对多核处理器监听访问冲突的Cache设计方法,包括:

用于监听第一周期处理器端替换写、总线端监听读的冲突解决过程;

用于监听第一周期处理器检错写、总线端监听读的冲突解决过程;

用于监听第二周期处理器端写、总线端监听写的冲突解决过程;

用于监听第二周期处理器端读、总线端写的冲突解决过程。

用于监听第一周期处理器端替换写、总线端监听读的冲突解决过程包括双端口RAM总线端的读使能端OE2以及双端口RAM处理器端的写使能端,访问冲突判别电路比较结果若相等则输出miss为‘0’,若不等则输出miss为‘1’,双端口RAM总线端的读使能端OE2由监听使能信号Snoop_en与取反后的miss信号经过与门提供,双端口RAM处理器端的写使能端由替换算法选择器的输出选择信号以及miss信号经过与门提供。

用于监听第一周期处理器检错写、总线端监听读的冲突解决过程通过双端口RAM处理器端将各路Tag、Valid及Parity的值通过一端数据输出端口送入解码器,若输出错误标识有效,则置Valid的该数据输出端口有效,允许处理器检错写,并且由miss信号、Snoop_en信号以及取反后的该数据输出端口信号经过与门控制另一端读使能端口。

用于监听第二周期处理器端写、总线端监听写的冲突解决过程包括作为Tag存储体监听端的一端数据输出端口,该端口输出的tag值与总线端监听地址Snoop_addr中的L1-tag段匹配,若相同输出的match信号与经过寄存器延迟一个周期的Snoop_en信号经过与门作用于Valid的该端写使能端口使该数据副本无效,监听端Tag、Parity的写使能端口与读使能端口无效;在处理器端,写操作校验错清除valid后Tag、Valid及Parity通过另一端数据输出端口将输出信息送入解码器,校验错输出error信号则该端写使能端口信号经过取反后与error信号、miss信号经过与门作用于另一端写使能端口,取消处理器端的写操作。

用于监听第二周期处理器端读、总线端写的冲突解决过程包括在第二周期发现总线端监听命中时,令Valid存储体的一端写使能端口有效,该端写使能端口信号经过取反,与miss信号以及处理器读使能信号经过与门后作用于另一个读使能端口。处理器总线端在第二周期将读出的tag、parity值锁存后经过多路选择器旁路返回到处理器端。

与现有技术相比,本发明应对多核处理器监听访问冲突的Cache设计结构,采用双端口RAM替代传统单核处理器中单端口的Tag、Valid及Parity存储器,从而在功能特性上允许处理器端和总线端能够有控制路径并行访问本地Cache,解决多核处理器系统中本地Cache在允许处理器访问的同时,还需要实时监听总线上远程访问写请求的问题,降低了总线监听对多核系统性能的影响,该结构不受多核应用环境、存储容量限制,在民用和军用领域均适用。

与现有技术相比,本发明应对多核处理器监听访问冲突的Cache设计方法,在采用双端口RAM存储器的基础上,结合总线端两周期的监听访问时序,分别就不同周期可能存在的两端访问冲突提出相应的解决办法,不需要额外的复杂控制开销,既能保证缓存数据一致性,又能最大程度降低对系统性能的干扰。本发明具有良好的可复用性和可移植性,不依赖于多核处理器的核数以及本地Cahce的容量,适用于任何基于总线监听的多核处理器。本发明能够适用于具有容错要求的多核处理器设计中,只需要将单核处理器缓存中的校验元存储器替换为双端口存储器,允许总线端按照处理器端进行校验解码操作,即能够快速实现容错效果。

附图说明

图1基于双端口RAM的Cache存储器结构示意图;

图2总线端两周期监听时序图;

图3(a)监听第一周期处理器端替换写、总线端监听读冲突解决模块结构框图;

图3(b)监听第一周期处理器检错写、总线端监听读冲突解决模块结构框图;

图4监听第二周期处理器端写、总线端写冲突解决模块结构框图;

图5监听第二周期处理器端读、总线端写冲突解决模块结构框图。

具体实施方式

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

为了解决多核处理器中本地Cache需要应对处理器端和总线端双重访问的问题,本发明利用双端口RAM替代传统单核处理器Cache中的单端口RAM结构。

如图1所示,本地缓存每一路包括三部分:tag存储体、valid存储体以及parity存储体。以本地Cache采用两路组相联结构为例,每路8KB,Cache行大小为16B,即4个字,因此每行对应的valid位也为4位,而奇偶校验的存储交错距离为8,因而校验元也需要4位,根据该配置即得出处理器端地址和总线端地址的index段为9位而tag段为19位。

值得说明的是,由于本发明采用写无效协议,不需更新数据值,因此DATA存储器仍然可以复用既有的单端口RAM结构。

采用双端口RAM实现处理器端和总线端对Cache的并行访问,其最大的障碍就是解决两侧对相同索引地址的读写、写写冲突。当发生访问冲突时,如果优先一方而延迟另一方的访问,其前提必须是尽量降低系统性能损失,同时又要保证程序语义执行的正确性。

降低性能损失就是要缩短监听操作的有效时长,而在包含式多级Cache体系中,监听操作或者来源于处理器的写操作,或者源于二级Cache替换操作引发的反向无效。图2给出了处理器写传播产生的监听操作示意,时序信号包括时钟Clk、监听使能Snoop_en、监听地址Snoop_addr以及监听写使能Snoop_wr。由于各本地Cache采用写直达策略,因此一次写操作需要完成二级Cache以及片外存储器的更新,需锁定较长的总线周期。但是,此时的监听操作并不需要占用相等的时间长度。这是由于本地Cache容量较小,能够在单周期输出查询内容,因此下个周期就能做出命中判断。基于此,一次总线写传播最多需要各本地Cache连续两个周期的监听动作。如图2所示,第①个周期其它处理器发起写操作使得监听使能Snoop_en有效,本地Cache利用总线监听地址Snoop_addr执行对双端口Tag、Valid和Parity存储器总线端的读操作;第②个周期被监听访问的双端口RAM存储器返回读出数据,包括tag、valid及parity值,同时执行校验并做命中判断,如果校验出错或命中,则立即通过双端口RAM总线端的监听写使能Snoop_wr(在后文图中标记为存储体的WE2端口)置对应的valid位无效。从指令角度而言,st/stb/sth类指令影响范围不超过valid位指示的一个字,而std指令虽然影响两个字,但为缓解多核处理器对总线的竞争压力,写数据总线能够修改为64位,因此所有store类指令均可以按照图2在双端口RAM的处理器端用单周期完成对Cache的读和写操作。

下面针对图2中监听访问周期中可能存在的访问冲突问题本发明提出相应的解决办法:

第①周期产生的处理器端写、总线端读的访问冲突;

在图2监听操作第①周期,双端口RAM的总线端执行监听地址的读访问,因此需要考虑双端口RAM在处理器端可能存在的写访问以及冲突解决办法。处理器端对数据Cache产生的写访问存在两种情况:(1)由于load缺失而产生的替换操作需要更新tag、valid及相应的parity值;(2)由于store操作读取tag时校验错需要置valid无效。上述情况没有考虑store缺失是因为数据Cache采用不按写分配策略,而没有考虑load校验出错是因为正确结果将从下级存储器中取回,仍旧能确保valid继续有效。

图3(a)给出了第一种情况的解决策略,主要从数据一致性的角度考虑:当本地load缺失数据替换操作与远程处理器的监听读请求重叠在一个周期时,如果优先处理器的写操作而取消总线端的读操作,那么将会造成本地缓存数据与全局数据的不一致,其后本地除非发生写更新或者缺失替换操作,否则将一直使用过期的数据进行运算处理。为此,图3(a)在两端同时有访问时首先比较两端访问地址是否匹配,如果匹配且处理器端为替换写操作,那么允许总线端对各存储体的读使能;同时,取消处理器端的替换写使能,从而既保证了数据一致,又解决了冲突访问的问题。图3(b)给出了第二种情况的解决策略,主要从性能角度考虑:当store操作因读取tag解码发生校验错误,置valid无效与远程处理器发起的监听读操作重叠时,应令处理器端写操作优先总线端的监听读操作。从性能角度看,store操作读取tag发生校验错误,预示着其在处理器端相较于总线端已经提前对Cache进行了读取访问及校验判断,如果此时取消处理器端对valid的置无效操作将造成前期功耗的浪费,而若延迟处理器端的写操作则会对本地处理器的性能造成影响。从数据一致性角度看,虽然该周期没有保证本地缓存数据与全局数据的一致,但本周期处理器执行store操作并不使用该数据,并且由于流水线指令顺序执行的要求,数据Cache在没有完成全局的写操作前将阻塞后续指令的步进,因此本地处理器后续不会获取该暂时污染的数据。其后,数据Cache将一直阻塞流水直至申请到总线使用权限,一旦占用总线发起写传输,则将复用一致性传播机制再次更新该存储位置数据,从而保证全局各数据副本再次统一,流水线解除锁定后使用的数据即为全局最新值。

第②周期产生的处理器端写、总线端写的访问冲突;

在图2监听操作第②周期,双端口RAM的总线端可能执行监听地址的写访问,这里需要考虑双端口RAM在处理器端可能存在的写访问以及冲突解决办法。这里处理器端的写操作只可能是store操作读取tag时解码出错需置valid无效,不存在load缺失替换时的写状况。这是由于load缺失替换发生的时机是当总线返回下级存储器的缺失数据时刻,而这个时刻恰好是总线移交其他处理器的起始时刻,因此最快也只能在该时刻进行监听读操作,不可能跨越到其后的监听写无效操作。图4给出了这种形式下的冲突解决办法,其思想是优先总线端的监听写无效操作而取消处理器端的写操作。在Snoop_en有效的下一个周期,总线端读出的tag校验后与监听地址Snoop_addr一致,则需要通过Snoop_wr(即图4的WE2)置对应路的Valid值无效,同时如果处理器端store操作解码发现错误需要立即置valid无效,则将被动取消写使能。实际上,从性能角度考虑,无论是优先哪一方的写操作,其对性能的影响都是相等的。这是因为,双方此时的写操作均针对的是Valid存储器并且均将对应位置valid值置无效。从一致性方面考虑,任何一方执行的置valid无效操作都能实现多核一致性的写无效目的。

第②周期产生的处理器端读、总线端写的访问冲突;

这里分析图2监听操作第②周期内,双端口RAM在处理器端执行读操作、总线端执行监听写无效的冲突解决方法。这里,总线端需要对监听命中、以及校验出错Cache路的Valid存储器写无效,而处理器端的读操作则是执行load/store指令时对所有路的Tag、Valid和Parity存储器进行读访问。图5提出了相应的解决策略,其方法是允许总线端的写无效操作而取消处理器端的读使能。当总线端在第②周期对读出的tag、valid和parity进行校验及命中判断后,如果发现匹配或校验错,则会立即打开Valid存储器的写使能Snoop_wr(图5中的WE2)置对应位置无效,同时令处理器端对应路存储器的读使能无效。这种策略虽然保证了多核缓存数据的一致性,但是由于数据Cache控制逻辑发出读请求,就必须在读请求的下一个周期取得返回的读数据,否则就可能引发无法预知的错误。然而处理器端所需的读数据正是总线端在第②周期读出的内容,因此可以考虑将总线端的读出的tag和parity经过锁存后直接旁路到处理器端的相应读数据线上,只有Valid需要以无效值替代,从而产生load/store缺失的效果。可以看出,这方法不仅可以维护一致性,同时在时序上也能保证数据Cache正常的工作时序。

综上所述,本发明缓存设计结构能够有效维护基于总线监听的多核处理器系统的数据一致性,可以在采用写无效策略的多核系统中复用和移植,具有较好的通用性。

图3(a)、3(b)、4、5展示了监听周期内处理器端和总线端的访问冲突解决策略,图中包含的主要部件有两路双端口Cache(Way0与Way1,分别用于存储Tag、Valid及Parity值)、处理器端访问地址CPU Addr、总线端监听地址Snoop_addr、替换算法选择器、校验元编码器、校验元解码器。其中,双端口存储器拥有两套访存端口,分别为地址端口A1/A2、读使能端口OE1/OE2、写使能端口WE1/WE2、数据输入端口D1/D2、数据输出端口Q1/Q2;处理器使用处理器Addr中的L1-index段作为地址访问两路Cache,以L1-tag段作为校验元编码字的信息源,而总线端使用Snoop_addr中的L1-index段作为地址监听访问两路Cache;替换算法选择器用于选择哪一路Cache用于替换;校验元编码器接收待编码信息,输出校验元;校验元解码器接收编码字和校验元,输出错误指示信号。此外,各图均包括一个访问冲突判别电路,它接收处理器Addr以及Snoop_addr中的L1-index段并进行比较,若相等则输出miss为‘0’,若不等则输出miss为‘1’。

图3(a)表示的是监听第一周期处理器端替换写、总线端监听读的冲突解决办法。双端口RAM总线端的读使能OE2由Snoop_en与取反后的miss信号经过与门提供。双端口RAM处理器端的写使能由替换算法选择器的输出选择信号以及miss信号经过与门提供,本图中替换算法因选择way0被替换,因此Valid存储器的D1有效而D2无效,同时将编码后的校验元写入Parity存储器。本图展示的处理策略是,当处理器端的替换写与总线端的监听读访问冲突时,miss信号将控制WE1无效而允许OE2使能。

图3(b)表示的是监听第一周期处理器检错写、总线端监听读的冲突解决办法。双端口RAM处理器端将各路Tag、Valid及Parity的值通过Q1口送入解码器,若输出错误标识有效,则置Valid存储器的WE1口有效,表示允许处理器检错写。由于此时两端访问冲突,miss信号为0,为了避免双端口RAM总线端的OE2有效,因而需要由miss信号、Snoop_en信号以及取反后的WE1信号经过与门控制OE2。本图展示的处理策略是,当处理器端的检错写与总线端的监听读访问冲突时,将控制WE1有效而取消OE2使能。

图4表示的是监听第二周期处理器端写、总线端监听写的冲突解决办法。在监听第二周期,如果Tag存储体监听端Q2输出的tag值与Snoop_addr中的L1-tag段匹配相同,那么输出的match信号与经过寄存器延迟一个周期的Snoop_en信号经过与门作用于Valid存储体的WE2端,表示将置该数据副本无效,此时监听端Tag、Parity存储体的WE2及OE2无效。而在处理器端,写操作只可能是校验错清除valid,此时Tag、Valid及Parity存储体通过Q1将输出信息送入解码器,如果输出error有效则表示校验错,然后WE2信号取反后,与error信号、miss信号经与门作用于WE1,取消了处理器端的写操作。本图展示的处理策略是,当处理器端的检错写与总线端的监听写访问冲突时,将控制Valid存储体的WE1无效而使能WE2。

图5表示的是监听第二周期,处理器端读、总线端写冲突解决策略。与图4相同的是总线端的操作情况,当在第二周期发现总线端监听命中时,令Valid存储体的WE2有效,同时它经过取反与miss信号以及处理器读使能信号经过与门后作用于OE1端口。本图展示的处理策略是,当处理器端的读操作与总线端的监听写访问冲突时,将控制Valid存储体的WE2有效而取消OE1。此外,由于处理器端所需的读数据是总线端在第②周期读出的内容,因此可以将总线端从Tag、Parity存储体的Q2口读出的tag及parity值经过锁存后经过多路选择器旁路返回到处理器端。

本发明已经应用于一款兼容SPARC V8结构的多核处理器芯片中,该多核处理器基于AMBA的核间总线,通过使用本发明所述的双端口RAM作为本地缓存的存储结构,并采用本发明提出的两周期监听冲突解决策略,不仅维护了缓存数据一致性,保证程序语义执行的正确,同时也降低了监听操作对处理器性能的影响。该芯片已完成设计,电路结构功能正常,符合预期目标。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1