一种非cache一致性协议加解锁报文处理方法

文档序号:6541277阅读:168来源:国知局
一种非cache一致性协议加解锁报文处理方法
【专利摘要】本发明提供一种非cache一致性协议加解锁报文处理方法,涉及基于IntelQPI协议芯片设计方法的【技术领域】,本发明应用于多ClumpCPU的互连系统,但并不局限于此系统或此种加解锁报文处理的场景。其中,对应于MasterClump和SlaveClump侧的NC,除地址空间划分和ID配置有差异外,实现功能并无差异,且均具有本Clump的请求控制功能和本Clump外请求的处理功能。作为发起Clump时只进行请求控制功能,作为处理Clump时实现本Clump外请求的处理功能。可以处理应对类似于加解锁报文这种对处理报文有顺序要求和数量要求,且不能阻塞后续报文交互类型的成对报文。
【专利说明】一种非cache —致性协议加解锁报文处理方法
[0001]【技术领域】
本发明属于计算机体系结构范畴,涉及基于Intel QPI协议芯片设计方法的【技术领域】,具体说是一种非cache —致性协议加解锁报文处理方法。
【背景技术】
[0002]基于Intel QPI协议的NC (node controller)芯片,在处理非cache—致性加解锁报文时,由于此种报文的交互具有特殊性,需要专门进行处理。其中,每个Request CPU发起的加解锁报文是成对出现的,在每笔加解锁指令完成前,协议规定其无法继续发出第二组,但允许不同CPU同时发起加解锁报文或其它类型报文;同时协议又规定作为Master的CPU每次只能处理一组加解锁指令报文组,在正确处理前一组加解锁报文后,才能继续处理第二组,且每组加解锁指令中间都需要通过Master CPU主动发起、接收若干笔加解锁相关的广播交互报文及响应报文,来通知所有的Slave CPU指令的状态,最后Master CPU多次需要收集Slave CPU响应,并回复Request CPU,在此过程中NC芯片不能阻塞非加解锁报文类型的报文。

【发明内容】

[0003]考虑到协议处理的各种特殊情况,本发明的目的是提供一种基于Intel QPI协议的非cache —致性加解锁报文的协议处理方法。仿真验证和FPGA验证实际证明了在多路复杂系统中该协议处理方法的有效性。
[0004]本非cache —致性加解锁报文处理方法的具体实现方式为:
一种非cache —致性协议加解锁报文处理方法,应用于多Clump CPU的互连系统,但并不局限于此系统或此种加解锁报文处理的场景;其中,对应于Master Clump和SlaveClump侧的NC,除地址空间划分和ID配置有差异外,实现功能并无差异,且均具有本Clump的请求控制功能和本Clump外请求的处理功能;作为发起Clump时只进行请求控制功能,作为处理Clump时实现本Clump外请求的处理功能;方便起见,将发起Clump称为SlaveClump,处理 clump 称为 Master Clump。
[0005]所述多Clump CPU互连系统,Slave Clump侧NC的加解锁报文的处理流程的具体实施方法为:
1)、同一Clump的各CPU可同时发起加锁请求或同通道其它类型报文;
2)、将同一通道的报文,按照请求到达NC的先后顺序和报文所在通道进行预处理排
队;
3)、判断预处理报文的类型,如果该报文是加锁报文,且存在未处理完成的同类型报文,则将该报文打到专门加解锁排队通道,并读取下一笔预处理排队报文,否则将该报文送入到报文处理器中进行下一步处理;
4)、如果通过判断接收到响应报文的解锁响应报文,也就是该组加解锁报文处理完毕,加解锁排队通道非空,预处理排队通道为空,且报文处理器有空闲ID,则将下一笔加锁报文从加解锁排队通道读出,送入到报文处理器进行处理。
[0006]所述多Clump CPU互连系统,Master Clump侧NC的加解锁报文的处理流程的具体实施方法为:
1)、MasterClump侧NC收集本Clump外的请求报文;
2)、将同一通道的报文按照到达NC的先后顺序和报文所在通道进行预处理排队;
3)、等待该通道处理的空闲ID;其中,ID总数即为分配给该通道预处理报文的处理令牌总数,当有新报文进入报文处理器时,令牌数目减一,当该报文处理完成后释放令牌,令牌数目加一;
4)、判断预处理报文的类型,如果是非加解锁报文,则送入报文处理器;如果是加锁报文,且前面有未处理完成的加锁报文,则将加锁报文读出后,送入加锁报文排队序列,序列计数器加1,否则送入报文处理器;如果是解锁报文,将报文同样送入报文处理器,并监测解锁报文是否正常响应,且将响应报文回送到请求Clump侧;如果解锁完成,则通知加锁控制模块,准备下一笔加锁报文的处理。
[0007]5)、如果加锁控制模块在准备下一笔加锁报文的处理时,判断如果有空闲ID,且无其它报文类型需要处理,则读取加锁排队序列进入报文处理器,直到加锁报文排队序列为空,完成所有加锁报文的处理。
[0008]本发明的有益效果是:
应用于多路服务器系统复杂非一致性加解锁报文的处理;应用于Master CPU对报文的处理有排队顺序要求,且处理顺序以达到Master CPU的时间为序;既可以管理单笔加解锁报文,也能同时管理多clump系统CPU同时发送加解锁报文;处理的加解锁报文,要求每个请求CPU发出的加解锁报文是成对出现的,中间可以有其它类型报文。在请求clump侧进行排队和流控,防止多笔加解锁报文同时发出造成的信道阻塞。在处理每一组加解锁报文时,不能阻塞同通道其它类型报文的处理。提出并实现了解决类似非cache —致性报文请求的方法。该方法在请求发起侧进行流控,并对请求处理侧进行排队处理,具有实现简单、可控,可靠性高的优点。
【专利附图】

【附图说明】
[0009]附图1为非cache —致性加解锁报文处理拓扑结构图;
附图2为Slave Clump侧NC加解锁报文处理流程图;
附图3为Master Clump侧NC加解锁报文处理流程图。
【具体实施方式】
[0010]本非cache —致性加解锁报文处理方法的具体实现方式为:
1、该非cache —致性加解锁报文处理方法应用于如图1所示的多Clump CPU的互连系统,但并不局限于此系统或此种加解锁报文处理的场景。其中,对应于Master Clump和Slave Clump侧的NC,除地址空间划分和ID配置有差异外,实现功能并无差异,且均具有本Clump的请求控制功能和本Clump外请求的处理功能。只不过,作为发起Clump时只进行请求控制功能,作为处理Clump时实现本Clump外请求的处理功能。方便起见,将发起Clump称为 Slave Clump,处理 clump 称为 Master Clump ; 2、所述的多Clump CPU互连系统,Slave Clump侧NC的加解锁报文的处理流程如图2所示。其中,具体实施方法为:
1)、同一Clump的各CPU可同时发起加锁请求或同通道其它类型报文;
2)、将同一通道的报文,按照请求到达NC的先后顺序和报文所在通道进行预处理排
队;
3)、判断预处理报文的类型,如果该报文是加锁报文,且存在未处理完成的同类型报文,则将该报文打到专门加解锁排队通道,并读取下一笔预处理排队报文,否则将该报文送入到报文处理器中进行下一步处理。这样做可以不阻塞同通道其它报文的处理,以免造成系统岩机;
4)、如果通过判断接收到响应报文的解锁响应报文,也就是该组加解锁报文处理完毕,加解锁排队通道非空,预处理排队通道为空,且报文处理器有空闲ID,则将下一笔加锁报文从加解锁排队通道读出,送入到报文处理器进行处理。以此可以避免该通道处理信用的耗尽,阻塞其它同通道报文类型的处理,引起不良后果。
[0011]3、所述的多Clump CPU互连系统,Master Clump侧NC的加解锁报文的处理流程如图3所示。其中,具体实施方法为:
1)、MasterClump侧NC收集本Clump外的请求报文;
2)、将同一通道的报文按照到达NC的先后顺序和报文所在通道进行预处理排队;
3)、等待该通道处理的空闲ID。其中,ID总数即为分配给该通道预处理报文的处理令牌总数,当有新报文进入报文处理器时,令牌数目减一,当该报文处理完成后释放令牌,令牌数目加一;
4)、判断预处理报文的类型,如果是非加解锁报文,则送入报文处理器。如果是加锁报文,且前面有未处理完成的加锁报文,则将加锁报文读出后,送入加锁报文排队序列,序列计数器加1,否则送入报文处理器。如果是解锁报文,将报文同样送入报文处理器,并监测解锁报文是否正常响应,且将响应报文回送到请求Clump侧。如果解锁完成,则通知加锁控制模块,准备下一笔加锁报文的处理。以此保证在上一笔加锁报文处理完成后,再处理下一笔加锁报文,保证Master同时只处理一笔加锁报文。
[0012]5)、如果加锁控制模块在准备下一笔加锁报文的处理时,判断如果有空闲ID,且无其它报文类型需要处理,则读取加锁排队序列进入报文处理器,直到加锁报文排队序列为空,完成所有加锁报文的处理。以此可以应对多Clump同时发起的加锁报文请求的情况的处理。
[0013]多Clump CPU互连系统,可以处理应对类似于加解锁报文这种对处理报文有顺序要求和数量要求,且不能阻塞后续报文交互类型的成对报文。
[0014]由于加解锁报文成对出现,中间具有较多的交互流程,通道的处理能力有限,无法同时满足多笔加锁报文的处理请求,Master CPU同时只能处理一组加解锁报文,且不能阻塞同通道其它种类报文请求,本发明同时满足了以上要求,提出并实现了解决类似非cache一致性报文请求的方法。该方法在请求发起侧进行流控,并对请求处理侧进行排队处理,具有实现简单、可控,可靠性高的优点。
【权利要求】
1.一种非cache—致性协议加解锁报文处理方法,其特征在于应用于多Clump CPU的互连系统,但并不局限于此系统或此种加解锁报文处理的场景;其中,对应于Master Clump和Slave Clump侧的NC,除地址空间划分和ID配置有差异外,实现功能并无差异,且均具有本Clump的请求控制功能和本Clump外请求的处理功能;作为发起Clump时只进行请求控制功能,作为处理Clump时实现本Clump外请求的处理功能;方便起见,将发起Clump称为Slave Clump,处理 clump 称为 Master Clump。
2.根据权利I所述的方法,其特征在于所述多ClumpCPU互连系统,Slave Clump侧NC的加解锁报文的处理流程的具体实施方法为: 1)、同一Clump的各CPU可同时发起加锁请求或同通道其它类型报文; 2)、将同一通道的报文,按照请求到达NC的先后顺序和报文所在通道进行预处理排队; 3)、判断预处理报文的类型,如果该报文是加锁报文,且存在未处理完成的同类型报文,则将该报文打到专门加解锁排队通道,并读取下一笔预处理排队报文,否则将该报文送入到报文处理器中进行下一步处理; 4)、如果通过判断接收到响应报文的解锁响应报文,也就是该组加解锁报文处理完毕,加解锁排队通道非空,预处理排队通道为空,且报文处理器有空闲ID,则将下一笔加锁报文从加解锁排队通道读出,送入到报文处理器进行处理。
3.根据权利I所述的方法,其特征在于所述多ClumpCPU互连系统,Master Clump侧NC的加解锁报文的处理流程的具体实施方法为: 1)、MasterClump侧NC收集本Clump外的请求报文; 2)、将同一通道的报文按照到达NC的先后顺序和报文所在通道进行预处理排队; 3)、等待该通道处理的空闲ID;其中,ID总数即为分配给该通道预处理报文的处理令牌总数,当有新报文进入报文处理器时,令牌数目减一,当该报文处理完成后释放令牌,令牌数目加一; 4)、判断预处理报文的类型,如果是非加解锁报文,则送入报文处理器;如果是加锁报文,且前面有未处理完成的加锁报文,则将加锁报文读出后,送入加锁报文排队序列,序列计数器加1,否则送入报文处理器;如果是解锁报文,将报文同样送入报文处理器,并监测解锁报文是否正常响应,且将响应报文回送到请求Clump侧;如果解锁完成,则通知加锁控制模块,准备下一笔加锁报文的处理; 5)、如果加锁控制模块在准备下一笔加锁报文的处理时,判断如果有空闲ID,且无其它报文类型需要处理,则读取加锁排队序列进入报文处理器,直到加锁报文排队序列为空,完成所有加锁报文的处理。
【文档编号】G06F15/173GK103902500SQ201410106964
【公开日】2014年7月2日 申请日期:2014年3月21日 优先权日:2014年3月21日
【发明者】刘强, 陈继承, 周恒钊, 胡雷军 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1