一致性消息的传输方法、系统、总线接口控制器和芯片与流程

文档序号:11133874阅读:730来源:国知局
一致性消息的传输方法、系统、总线接口控制器和芯片与制造工艺

本发明涉及计算机技术领域,尤其涉及一种一致性消息的传输方法、系统、总线接口控制器和芯片。



背景技术:

在当前计算机技术领域中,计算机系统中的芯片包括多个单核或多核的处理器,由于各个处理器核共享存储资源,则为了保证计算机系统的正常运行,因此保证缓存中的数据一致性尤为重要,即需要维护缓存一致性,例如处理器core1经过运算更改了数据m的赋值,则此时需要维护缓存一致性,以使用于向其他处理器核提供数据m的缓存同步更新该数据m的赋值,以保证各个处理器核使用的数据m为一致的;具体的,在计算机系统中,处理器分布在不同的缓存一致性子域(cache coherence sub-domain,简称CCSD)中,不同的CCSD通过桥片互连;常见的,各个核之间、处理器之间可通过传输一致性消息进行缓存一致性的维护,其中一致性消息由基于高级扩展接口(Advanced extensible Interface,简称AXI)协议下的五种通道进行传输,具体的,一致性消息包括读请求通道(AR通道)传输的一级缓存读失效(ar_request_read)、一级缓存写失效(ar_request_write);写请求通道(包括AW通道和W通道)传输的一级缓存替换请求(aw_replace)、处理器核发往最后一级缓存(Last Level Cache,简称LLC)的响应消息(该响应消息包括:aw_writeback_invalid,aw_writeback,aw_invalid);读响应通道(R通道)传输的读请求通道响应消息(r_response)、最后一级缓存无效命令(r_invalid)、最后一级缓存写回命令(r_writeback)、最后一级缓存写回并无效命令(r_writeback_invalid);写响应通道(B通道)传输的写请求通道响应消息(b_respense)。

在维护缓存一致性时,同一个缓存一致性子域中各个处理器核及最后 一级缓存之间可以通过快速传输(HyperTransport,简称HT)接口中的上述五种信道传输一致性消息;当一个缓存一致性子域中的某个处理器需要将一致性消息发送至另一个缓存一致性子域中最后一级缓存时,或者一个缓存一致性子域中的最后一级缓存要将一致性消息发送至另一个缓存一致性子域中的一个处理器时,通常是依照快速通道互联(QuickPath Interconnect,简称QPI)协议,采用第三代总线接口(PCI-Express,简称PCI-E,是在PCIe1.0标准下于2004年引入的总线和接口标准)电路传送QPI消息,以维护跨子域间的缓存一致性;但现有技术中在维护跨子域间的缓存一致性时,需要针对多个子域设置PCI-E接口电路,还需要对PCI-E的协议栈做较大改动,不便于维护跨子域间的缓存一致性。



技术实现要素:

本发明提供一种一致性消息的传输方法、系统、总线接口控制器和芯片,用于解决现有技术中进行子域之间的一致性消息的传输时,需要对子域间的接口电路和协议栈做出大规模部署及调整的问题。

本发明的第一方面提供一种一致性消息的传输方法,包括:

第一总线接口控制器接收第一缓存一致性子域中的第一一致性消息;所述第一总线接口控制器归属于所述第一缓存一致性子域;所述第一一致性消息携带消息类型和目的地址;

所述第一总线接口控制器根据所述第一一致性消息的消息类型和预设的打包相关信息确定打包格式,并按照所述打包格式对所述第一一致性消息进行打包以获得第一打包消息,所述打包相关信息包括一致性消息的消息类型和打包格式的对应关系;

所述第一总线接口控制器根据所述第一一致性消息的目的地址,将所述第一打包消息通过归属于所述第一缓存一致性子域的总线接口发送至归属于第二缓存一致性子域的第二总线接口控制器;

其中,所述第一缓存一致性子域中包括处理器核与最后一级缓存,所述第一缓存一致性子域中的所述第一一致性消息是由所述第一缓存一致性子域中的处理器核或最后一级缓存发送的。

结合第一方面,在第一方面的第一种可选的实施方式中,所述第一总线 接口控制器和所述第二总线接口控制器为第三代总线接口PCI-E控制器,所述总线接口为PCI-E接口。

结合第一方面的第一种可选的实施方式,在第一方面的第二种可选的实施方式中,所述第一总线接口控制器根据所述第一一致性消息的消息类型和预设的打包相关信息确定打包格式包括:

所述第一PCI-E控制器根据所述第一一致性消息的消息类型和预设的打包相关信息,确定对应的事务层数据包TLP包的打包格式。

结合第一方面的第一种至第二种任一种可选的实施方式,在第一方面的第三种可选的实施方式中,所述第一打包消息至少包括所述第一一致性消息和定义符号;

所述定义符号用于表示所述第一打包消息所采用的打包格式,所述预设的打包相关信息还包括一致性消息的消息类型和定义符号的对应关系。

结合第一方面的第三种可选的实施方式,在第一方面的第四种可选的实施方式中,所述将所述第一打包消息通过归属于所述第一缓存一致性子域的总线接口,发送至归属于第二缓存一致性子域的第二总线接口控制器,包括:

所述第一PCI-E控制器通过归属于所述第一缓存一致性子域的PCI-E接口内所述第一打包消息的定义符号对应的虚通道中的至少两个子虚通道中的一个空闲的子虚通道,将所述第一打包消息发送至所述第二PCI-E控制器;所述PCI-E接口包括4个虚通道;所述第一打包消息中的定义符号对应所述4个虚通道中的一个虚通道;所述4个虚通道中的每个虚通道包括至少两个子虚通道。

结合第一方面的第二种至第四种任一种可选的实施方式,在第一方面的第五种可选的实施方式中,所述传输方法还包括:

所述第一PCI-E控制器接收第二打包消息;

所述第一PCI-E控制器根据所述第二打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式,并根据所述第二打包消息的打包格式,进行解包操作以获得所述第二打包消息所包括的第二一致性消息,所述打包相关信息包括定义符号与打包格式的对应关系;

所述第一PCI-E控制器根据所述第二一致性消息的目的地址,将所述第二一致性消息发送给第一缓存一致性子域中的处理器或最后一级缓存。

本发明的第二方面提供一种总线接口控制器,包括:

第一接收模块,用于接收第一缓存一致性子域中的第一一致性消息;所述总线接口控制器归属于所述第一缓存一致性子域;所述第一一致性消息携带消息类型和目的地址;

处理模块,用于根据所述第一一致性消息的消息类型和预设的打包相关信息确定打包格式,并按照所述打包格式对所述第一一致性消息进行打包以获得第一打包消息,所述打包相关信息包括一致性消息的消息类型和打包格式的对应关系;

第一发送模块,用于根据所述第一一致性消息的目的地址,将所述第一打包消息通过所述总线接口控制器的总线接口发送至归属于第二缓存一致性子域的总线接口控制器;

其中,所述第一缓存一致性子域中包括处理器核与最后一级缓存,所述第一缓存一致性子域中的所述第一一致性消息是由所述第一缓存一致性子域中的处理器核或最后一级缓存发送的。

结合第二方面,在第二方面的第一种可能的实现方式中,所述总线接口控制器为第三代总线接口PCI-E控制器,所述总线接口为PCI-E接口。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理模块,具体用于根据所述第一一致性消息的消息类型和预设的打包相关信息,确定对应的事务层数据包TLP包的打包格式。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第一发送模块,具体用于通过所述PCI-E控制器的PCI-E接口内所述第一打包消息的定义符号对应的虚通道中的至少两个子虚通道中的一个空闲的子虚通道,将所述第一打包消息发送至所述归属于第二缓存一致性子域的总线接口控制器;所述PCI-E接口包括4个虚通道;所述第一打包消息中的定义符号对应所述4个虚通道中的一个虚通道;所述4个虚通道中的每个虚通道包括至少两个子虚通道,所述打包相关信息还包括定义符号与虚通道的对应关系。

结合第二方面的第二种至第三种任一种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括第二接收模块和第二发送模块:

所述第二接收模块,用于接收第二打包消息;

所述处理模块,还用于根据所述第二打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式,并根据所述第二打包消息的打包格式,进行解包操作以获得所述第二打包消息所包括的第二一致性消息,所述打包相关信息包括定义符号与打包格式的对应关系;

所述第二发送模块,用于根据所述第二一致性消息的目的地址,将所述第二一致性消息发送给第一缓存一致性子域中的处理器或最后一级缓存。

本发明的第三方面提供一种芯片,包括:快速传输HT控制器、至少一个HT接口、至少一个总线接口和如第二方面任一种所述的总线接口控制器。

本发明的第四方面提供一种一致性消息的传输系统,包括:第一总线接口控制器和第二总线接口控制器;其中,

所述第一总线接口控制器,用于接收所述第一缓存一致性子域中的处理器核或者最后一级缓存发送的第一一致性消息,所述第一一致性消息携带消息类型和目的地址并根据所述第一一致性消息的消息类型和预设的打包相关信息确定打包格式,并按照所述打包格式对所述第一一致性消息进行打包以获得第一打包消息,所述打包相关信息包括一致性消息的消息类型和打包格式的对应关系;以及根据所述第一一致性消息的目的地址,将所述第一打包消息通过归属于所述第一缓存一致性子域的总线接口发送至归属于第二缓存一致性子域的第二总线接口控制器;

所述第二总线接口控制器接收所述第一打包消息;根据所述第一打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式;并根据所述第一打包消息的打包格式,进行解包操作以获得所述第一打包消息所包括的所述第一一致性消息,所述打包相关信息包括定义符号和打包格式的对应关系;再根据所述第一一致性消息的目的地址,将所述第一一致性消息发送给第二缓存一致性子域中的处理器或最后一级缓存。

本发明实提供的一致性消息的传输方法通过总线接口控制器将第一缓存一致性子域中的第一一致性消息进行打包,使得子域间的一致性消息的传输可通过总线接口发送至第二缓存一致性子域,相比于现有技术,本申请中在进行子域之间的一致性消息的传输时,不需要对子域间的接口电路做出大规模部署及调整,优化了一致性消息的传输过程。

附图说明

图1为本发明一致性消息的传输方法实施例一的流程图;

图2为本发明实施例一缓存一致性子域示意图;

图3为本发明一致性消息的传输方法实施例二的流程图;

图4为本发明一致性消息的传输方法实施例三的信令图;

图5为本发明提供的一种总线接口控制器实施例一的结构示意图;

图6为本发明提供的一种总线接口控制器实施例二的结构示意图;

图7为本发明提供的一种芯片的结构示意图。

具体实施方式

图1为本发明一致性消息的传输方法实施例一的流程图。图2为本发明实施例一缓存一致性子域示意图。

本实施例的执行主体可以为总线接口控制器,例如可以是PCI-E控制器或者是基于目前的PCI-E控制器开发或扩展的其他支持PCI-E接口的传输协议的总线接口控制器,如可能出现的第四代总线接口控制器等。本发明不以此为限,下面以PCI-E控制器为例进行具体说明,该PCI-E控制器位于缓存一致性子域中,具体的,如图2所示,缓存一致性子域(以下简称子域)中至少包括至少一个中央处理器(Central Processing Unit,简称CPU)、最后一级缓存与桥片,每个处理器中至少包括一个处理器核(core)和一个最后一级缓存,各个处理器之间、每个处理器核与该缓存一致性子域上除该处理器核所在的处理器之外的另一处理器中的最后一级缓存之间、各个处理器与桥片之间可通过HT接口进行信息的传输,在各个处理器核或最后一级缓存需要跨子域传输消息时,例如一个缓存一致性子域中的最后一级缓存向另一个缓存一致性子域中的处理器核发送一致性消息时,则最后一级缓存需通过归属于该最后一级缓存所在的缓存一致性子域中的PCI-E控制器进行传输,又如,一个缓存一致性子域中的处理器核向另一个缓存一致性子域中的最后一级缓存发送一致性消息时,则处理器核需通过归属于该处理器核所在的缓存一致性子域中的PCI-E控制器进行传输;在每一个缓存一致性子域中,PCI-E控制器可位于缓存一致性子域内的桥片中。

如图1所示,本实施例的传输方法可以包括:

S101、第一PCI-E控制器接收第一缓存一致性子域中的第一一致性消息。

第一PCI-E控制器归属于所述第一缓存一致性子域;所述第一一致性消息携带消息类型和目的地址。

需要说明的是,上述第一缓存一致性子域与下述第二缓存一致性子域的架构类似,即本实施例中的缓存一致性子域中均至少包括处理器核与最后一级缓存,每一个缓存一致性子域中的一致性消息是由该缓存一致性子域中的处理器核或最后一级缓存发送的;为了便于说明一致性消息的传输过程,做出第一与第二的区分,举例来说,缓存一致性子域A与缓存一致性子域B之间的信息传输过程中,以缓存一致性子域A的角度来看,该缓存一致性子域A即为第一缓存一致性子域,从而缓存一致性子域A中处理器核或最后一级缓存发起的一致性消息即为第一一致性消息,则归属于缓存一致性子域A的PCI-E控制器即为上述第一PCI-E控制器,相应的,缓存一致性子域B即为第二缓存一致性子域,从而缓存一致性子域B中处理器或最后一级缓存发起的一致性消息即为第二一致性消息,则归属于缓存一致性子域B的PCI-E控制器即为下述第二PCI-E控制器;可以理解的,若以缓存一致性子域B的角度来看,则缓存一致性子域B为第一缓存一致性子域,此时缓存一致性子域A为第二缓存一致性子域。

S102、第一PCI-E控制器根据所述第一一致性消息的消息类型和预设的打包相关信息,确定打包格式,并按照所述打包格式,对所述第一一致性消息进行打包以获得第一打包消息。

可选的,在对第一一致性消息进行打包时,可利用PCI-E协议中的事务层数据包(Transport Layer Packet,简称TLP)的格式,从而使得第一打包消息可通过下述S104中所述的PCI-E接口发送。可选的,可以将所述第一一致性消息的内容填充在TLP的data payload字段部分。

可选的,可以将所述第一一致性消息打包为使用posted request转发总线事务的Memory_write类型的TLP。具体地,可以将第一打包消息的TLP包头中的fmt字段填写为11,将type字段填写为0,以表示当前的TLP包为Memory_write类型的TLP包且TLP包的包头长度为4dw,这种TLP在消息传输过程中,发起消息的主设备不需要目标设备(接收该消息的设备)的回应报文,适合于进行基于PCI-E传输协议的点对点消息的传输,如本发明各 个实施例提供的一致性消息的传输。

S103、第一PCI-E控制器根据第一一致性消息的目的地址,将所述第一打包消息通过归属于所述第一缓存一致性子域的PCI-E接口发送至归属于第二缓存一致性子域的第二PCI-E控制器。

当S101中第一一致性消息是第一缓存一致性子域中的最后一级缓存发送的,则上述目的地址则可以具体为第二缓存一致性子域中处理器核的标号,例如第二缓存一致性子域(以CCSD2表示)中处理器核core2在S101之前通过向第一缓存一致性子域(以CCSD1表示)中的最后一级缓存(LLC1)发送第二一致性消息以获取LLC1中的数据,该请求中携带该core2的标识,则LLC1需通过第一一致性消息向core2做出响应,则此时上述目的地址为core2的标识;

当S101中第一一致性消息是CCSD1中的处理器核(core1)发送的,则core1发送的一致性消息是用于请求CCSD2中LLC2中的数据;可以理解的,计算机系统中的缓存(包括一级缓存、最后一级缓存等)在缓存数据时,是将数据的地址信息进行存储的,例如计算机上的程序或处理器向硬盘中写入了数据,该数据是被写入地址1指向的存储位置中,随后计算机处理器核调用了该数据,则一级缓存或最后一级缓存在该数据时,是将该数据的地址信息“地址1”进行存储,其中地址信息是采用多个比特位(通常为48位)表示的,举例来说,计算机系统中通过使用48位比特,将计算机的存储空间划分为248个地址指向的多个位置,每个位置用于存储数据;当计算机上的程序、处理器等使用数据时,是根据数据所在位置的地址进行寻址的;由此可知,地址的范围较大,而上述一级缓存中可缓存的地址的范围不限,但最后一级缓存可缓存的地址范围存在限制,具体来说,假设计算机系统中存在248个用于存储数据的位置,则相应的存在248个地址,根据数据的调用情况,该248个地址中的任意地址均可缓存至一级缓存中,但248个地址中的地址范围0~k仅可缓存至CCSD1中的最后一级缓存LLC1中,地址范围k+1~2k仅可缓存至CCSD2中的LLC2中,以此类推,不同的最后一级缓存可缓存的地址范围是不同的,因此当core1通过第一一致性消息请求数据m时,上述目的地址即为该数据m的地址1,因此当归属于CCSD1的第一PCI-E控制器判断地址1位于地址范围k+1~2k中,则归属于CCSD1的第一PCI-E控制器将上述第一 缓存一致性消息处理为第一打包消息后,便将该第一打包消息发送至归属于CCSD2的第二PCI-E控制器。

第一PCI-E控制器将第一打包消息通过PCI-E接口,发送至第二缓存一致性子域,完成了跨子域间一致性消息的传输,维护了跨子域间的缓存一致性。

本实施例中,PCI-E控制器将第一缓存一致性子域中的第一一致性消息进行打包,使得子域间的一致性消息的传输可通过PCI-E接口发送至第二缓存一致性子域,相比于现有技术,本申请中在进行子域之间的一致性消息的传输时,不需要对子域间的接口电路做出大规模部署及调整,优化了一致性消息的传输过程。

图3为本发明一致性消息的传输方法实施例二的流程图。

如图3所示,本实施例是在图1所示的实施例的基础上做出进一步的描述,本实施例的具体过程如下:

S301、第一PCI-E控制器接收第一缓存一致性子域中的第一一致性消息。

具体的,通过与当前桥片相连的第一接口的第一通道,接收第一缓存一致性子域中的第一一致性消息。

如图3所示,第一接口以HT接口为例,缓存一致性子域中的各个处理器之间及处理器与最后一级缓存之间可以通过该第一接口进行通信,且处理器与最后一级缓存还通过该第一接口与缓存一致性子域内的桥片进行通信,且该第一接口按照AXI协议设置了五条AXI通道。

上述第一通道是当前传输一致性消息的通道,即第一接口按照AXI协议设置的五条通道中的任意一条通道在当前传输消息时,则可看作第一通道。具体的,缓存一致性子域内的处理器核或最后一级缓存在发送一致性消息时,会根据一致性消息的消息类型的不同,在第一接口中选择对应的通道发送。例如当第一一致性消息具体为一级缓存读失效,按照AXI协议,该一级缓存读失效消息需要在AXI协议的读请求通道(AR通道)上发送,则处理器根据该第一一致性消息的消息类型,使用当前作为第一通道的读请求通道(AR通道),将第一一致性消息发送给第一PCI-E控制器。

S302、第一PCI-E控制器根据第一一致性消息的消息类型和预设的打包相关信息确定打包格式,并根据所述打包格式,对第一一致性消息进行打包 以获得第一打包消息。

第一一致性消息携带消息类型,则第一PCI-E控制器可确定第一一致性消息的消息类型对应的打包格式。

一致性消息有多种类型,因此对于当前接收到的第一一致性消息,需按照其类型对应的打包格式进行打包,得到第一打包消息,其中,打包消息至少包括第一一致性消息、定义符号。打包消息的定义符号用于表示该打包消息所采用的打包格式,所述定义符号对应的打包格式是PCI-E控制器根据打包消息中的一致性消息的消息类型确定的。

例如可以使用cmd信号作为定义符号,下述表1为打包相关信息,其中包括本实施例中AXI协议中的一致性消息的消息类型与定义符号和打包格式的对应关系。表1为打包相关信息的一种实现形式,所示的与一致性消息打包时相关的项目和对应关系以及以下各表所示的具体打包格式可预先存储于本发明实施例提供的各个总线接口控制器中。

表1

以HT接口转发给第一PCI-E控制器的第一一致性消息的消息类型为一级缓存读失效为例,第一PCI-E控制器根据第一一致性消息携带的消息类型为一级缓存读失效,可以确定打包格式为打包格式1,以及该第一一致性消息的消息类型对应的TLP包的cmd信号为1100,在将第一一致性消息处理为第一打包消息时按照打包格式1进行处理,并将该第一打包消息中的data payload部分的cmd信号填写为“1100”。

可选的,当第一一致性消息的消息类型为一级缓存读失效、一级缓存写失效时,第一PCI-E控制器根据消息类型确定该第一一致性消息使用的打包格式为打包格式1,则采用表2所示的打包格式1进行处理:

表2

表2中“dw”表示双字,表2与下述各表中的“S[m:n]”表示该位置为S字段的m号比特位至n号比特位,例如cmd[3:0]位于1dw的0号字节的前半部分,即cmd信号的3号比特位至0号比特位占用了1dw的0号字节的7~4号比特位,而1dw的0号字节的3~0号比特位为id字段的3~0号比特位,该id字段的11~4号比特位占用1dw的1号字节中的7~0号比特位,id字段的15~12号比特位占用3w的2号字节中的6~3号比特位。如,id字段可用于指示当前的第一一致性消息在当前处理器核或者最后一级缓存中对应的未处理完的一致性消息的编号,则1dw的第0字节的[3:0]比特位、1dw的第1字节的的[7:0]比特位和3dw的第2字节的[15:12]比特位共同表示该一致性消息的编号。

需要说明的是,表2所示的打包格式1以及下述各表所示的其他打包格式中所示的各个字段均为AXI协议或者扩展AXI协议中对应的一致性消息所包括的字段,例如,cmd、id、addr、data、prot、cache字段为AXI协议的字段,state、cpuno、dirqid、scseti字段为扩展AXI协议的字段,字段定义有不同之处的,在下述的各种打包格式的描述中另行说明。

还需要说明的是,由于基于AXI协议传输的一致性消息的消息包的大小(length字段)均是相同的,因此,在将基于AXI协议的一致性消息打包为TLP包时可不将length字段打包在TLP包中,相应地,在接收该一致性消息对应的TLP包的PCI-E控制器侧,可以采用在还原后的基于AXI协议的一致性消息中填入length字段的默认值的方式还原该一致性消息。

举例来说,当归属于CCSD1的第一PCI-E控制器接收到CCSD1中core1的发送的第一一致性消息时,若第一PCI-E控制器根据core1请求的数据m的地址1,确定该第一一致性消息需发送至CCSD2中的LLC2,则 依照表2打包该一致性消息,其中id字段和cpuno字段中均写入core1的标号,且当该第一一致性消息是core1发起的多个未收到响应的消息中的一个时,id字段中还可写入该第一一致性消息的编号。

又如,当CCSD1中的LLC1在另一个CCSD的core3的请求下,向CCSD2中的core2发送第一一致性消息时,则第一PCI-E控制器按照表2所示的打包格式将LLC1发送的第一一致性消息进行打包后,将core2的标号写入id字段,但同时在cpuno字段中写入core3的标号,用于告知core2该消息是在core3的请求下发出的。

另外,prot信号用于表示该第一一致性消息是用于请求读取/写入指令信息或是具体的数据信息,cache字段用于告知最后一级缓存该第一一致性消息是发往最后一级缓存还是绕过最后一级缓存发往内存的,例如,数据m的地址1缓存在CCSD2中的LLC2中,同时地址1还缓存在计算机系统的内存中,此时CCSD1的core1请求获得内存中的数据m,但第一PCI-E控制器根据地址1,是需要将第一一致性消息路由至CCSD2,但core1通过cache字段,可告知接收到该第一一致性消息的LLC2,是否将该第一一致性消息发送至内存。

上述表2中1dw的2号字节中的7号比特位暂时不使用,故标记为空;而低addr字段和高addr字段用于写入前述的地址1。

可选的,若第一一致性消息的消息类型为一级缓存写回并无效命令响应操作、一级缓存写回命令响应操作、一级缓存无效命令响应操作和二级缓存命令响应操作时,则第一PCI-E控制器确定该第一一致性消息使用的打包格式为打包格式2或打包格式3。打包格式3为打包格式2的一种扩展。采用打包格式2或打包格式3打包的第一打包信息在发送到第二PCI-E控制器进行解包时,可以进一步根据state字段确定该第一打包信息对应的打包格式。

具体的,当第一一致性消息请求写入的数据块处于干净状态(即第一一致性消息请求写入的数据块没有被发送该第一一致性消息的处理器核修改过)时,该第一一致性消息使用打包格式2如表3所示。

表3

在表3所示的打包格式2中,state字段的值指示该第一一致性消息请求写入的数据块处于干净状态,例如,state字段的值为0。

当请求写入的数据块处于脏状态(即第一一致性消息请求写入的数据块被发送该第一一致性消息的处理器核修改过)时,在表3所示的打包格式2的3dw后添加16个dw用来传递数据信息,例如可在下述表4中高date字段和低date字段写入数据m的具体的赋值等,具体的,打包格式3如表4所示。

表4

在表4所示的打包格式3中,state字段的值用于表示该第一一致性消息请求写入的数据块处于脏状态,例如,state字段的值为1。

scseti字段用于指示第一一致性请求的数据的地址在LLC的组号。可以理解的,任意一个最后一级缓存的内部地址进行了分组,各组可存储的数据的地址范围不同,则处理器核在通过发送第一一致性消息以写回数据m的赋值时,第一PCI-E控制器根据数据m的地址1,在scseti字段中写入最后一级缓存的组号,以便接收到该第一一致性消息的最后一级缓存可根据该组号,快速的在该组号对应的组内找到数据m的地址1,并更新数据m的赋值,不需在接收到该第一一致性消息的最后一级缓存中全地址范围的查找地址1。

另外,dirqid字段用于指示LLC接收一致性消息的队列号。可以理解的,在多个一致性消息并行处理场景,如一个CSSD的LLC需要和2个CSSD的core进行一致性消息的传输时,该LLC可以将与这两个core交互的一致性消息分别安排在不同的队列进行传输。例如,当CSSD2的LLC1接收到CSSD1的core1发送的一致性消息,如读请求通道响应操作,用以请求数据m,此时CSSD2的LLC1发现需要根据CSSD3的core3确定该数据的当前值,则CSSD2的LLC1向CSSD3的core3发送消息类型为二级缓存写回命令的一致性消息,其中,dirqid字段的值用于指示CSSD3的core3向CSSD2的LLC1返回一致性消息时,按照dirqid字段指示的队列号返回一致性消息。

需要说明的是,消息类型为一级缓存写回并无效命令响应操作、一级缓存写回命令响应操作、一级缓存无效命令响应操作和二级缓存命令响应操作的一致性消息在AXI协议中未使用cmd信号,因此,在第二PCI-E控制器对包含这几种一致性消息的第一打包消息进行解包时,将cmd字段清空,例如,将还原后的一致性消息中的cmd字段设置为全0。

可选的,若第一一致性消息的消息类型为二级缓存命令响应操作时,确定该第一一致性消息使用的打包格式为打包格式4,打包格式4如表5所示。

表5

需要说明的是,消息类型为二级缓存命令响应操作的一致性消息在AXI协议中未使用cmd信号,即基于AXI协议的二级缓存命令响应操作的一致性消息中的cmd字段为空,因此,在第二PCI-E控制器对包含这种一致性消息的第一打包消息进行解包时,需要将cmd字段清空。

可选的,若第一一致性消息的消息类型为二级缓存写回并无效命令、二级缓存写回命令和二级缓存无效命令时,确定该第一一致性消息使用的 打包格式为打包格式5,打包格式5如表6所示。

表6

打包格式为打包格式4的二级缓存命令响应操作的一致性消息用于响应打包格式为打包格式5的二级缓存写回并无效命令、二级缓存写回命令和二级缓存无效命令的一致性消息,与打包格式5相比,打包格式4的2dw至17dw字段可用于在响应打包格式为打包格式5的一致性消息时携带请求的数据的数值。

可选的,若第一一致性消息的消息类型为写请求通道响应操作时,确定该第一一致性消息使用的打包格式是打包格式6,打包格式6如表7所示。

表7

需要说明的是,消息类型为写请求通道响应操作的一致性消息在AXI协议中未使用cmd信号,因此,在第二PCI-E控制器对包含这种一致性消息的第一打包消息进行解包时,需要将cmd字段清空。

需要补充说明的是,上述打包消息的所有的字段均定义在TLP包的data payload部分。

还需要说明的是,表2至表7所示的各种打包方式可预先存储于本发明实施例提供的各个总线接口控制器中。

S303、第一PCI-E控制器通过所述PCI-E接口内所述第一打包消息的定义符号对应的虚通道中的至少两个子虚通道中的一个空闲通道,将第一打包消息发送至所述第二PCI-E控制器。

其中,所述PCI-E接口可以包括4个虚通道,所述第一打包消息中的定 义符号对应所述4个虚通道中的一个虚通道,所述4个虚通道中的每个虚通道包括至少两个子虚通道。所述两个子虚通道上发送相同类型的一致性消息。定义符号cmd与需PCI-E接口的虚通道的对应关系可以如表1所示。

本实施例中将PCI-E接口虚拟为多个虚通道,避免了当第一PCI-E控制器需要与至少两个PCI-E控制进行一致性消息的通信时出现占用PCI-E接口导致的死锁情形,即一个一致性消息占用一个虚通道时,其他的空闲虚通道可用于传输其他空闲通道。

进一步的,通过S301~S303,第一缓存一致性子域中的处理器通过第一PCI-E控制器将第一一致性消息发送至归属于第二缓存一致性子域的第二PCI-E控制器,并由该第二PCI-E控制器将第一一致性消息发送至第二缓存一致性子域中的最后一级缓存,则第二缓存一致性子域中的最后一级缓存会向第一缓存一致性子域中的处理器返回第二一致性消息,则继续执行下述S304~S307;或者通过S301~S303,第一缓存一致性子域中的最后一级缓存通过第一PCI-E控制器将第一一致性消息发送至归属于第二缓存一致性子域的第二PCI-E控制器,并由该第二PCI-E控制器将第一一致性消息发送至第二缓存一致性子域中的处理器,则第二缓存一致性子域中的处理器会向第一缓存一致性子域中的最后一级缓存返回第二一致性消息,则继续执行S304~S307,具体如下:

S304、第一PCI-E控制器接收第二打包消息。

此时上述第一PCI-E控制器会接收到由第二PCI-E控制器发来的第二打包消息,该第二打包消息是由第二PCI-E控制器将第二缓存一致性子域中的第二一致性消息进行打包处理后得到的。

S305、第一PCI-E控制器根据所述第二打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式。

其中,所述预设的打包相关信息可以如表1所示,所述打包相关信息包括定义符号与打包格式的对应关系。

S306、第一PCI-E控制器根据所述第二打包消息的打包格式,进行解包操作以获得所述第二打包消息所包括的第二一致性消息。

例如第二打包消息的cmd信号为“1100”,则第一PCI-E控制器确定该第二打包消息的打包格式为如表2所示的打包格式1,则根据表2所示的打 包格式1进行解包,得到第二打包消息中的第二一致性消息。

S307、第一PCI-E控制器根据第二一致性消息的目的地址,将第二一致性消息发送给第一缓存一致性子域中的处理器核或最后一级缓存。

若第二一致性消息的目的地址指向第一缓存一致性子域中的处理器,则将第二一致性消息发送给该处理器;若第二一致性消息的目的地址指向第一缓存一致性子域中的最后一级缓存,则将第二一致性消息发送给该最后一级缓存。

上述S304~S307还可发生在S301之前,例如当第二缓存一致性子域中的处理器通过第二PCI-E控制器将第二一致性消息发送至归属于第一缓存一致性子域的第一PCI-E控制器,并由该第一PCI-E控制器将第二一致性消息发送至第一缓存一致性子域中的最后一级缓存,即此时第一PCI-E控制器执行S305~S308;随后第一缓存一致性子域中的最后一级缓存会向第二缓存一致性子域中的处理器返回第一一致性消息,即执行S301~S304;或者在执行S301之前,当第二缓存一致性子域中的最后一级缓存通过第二PCI-E控制器将第二一致性消息发送至归属于第一缓存一致性子域的第一PCI-E控制器,并由该第一PCI-E控制器将第二一致性消息发送至第一缓存一致性子域中的处理器,则第一PCI-E控制器执行S304~S307;随后第一缓存一致性子域中的处理器会向第二缓存一致性子域中的最后一级缓存返回第一一致性消息,此时上述第一PCI-E控制器执行S301~S303;图2中以先执行S301~S303,随后执行S304~S307,但在实际中,可以先执行S304~S307,随后执行S301~S303,或者,一些收到的一致性消息不需要再次应答时,根据实际情况,可以仅执行S301~S303,或仅执行S304~S307。

可选的,若第一PCI-E控制器收到的第二打包消息中的第二一致性消息请求访问的地址不属于本子域的管辖的缓存地址范围,而是属于另一PCI-E控制器所属的缓存一致性子域管辖的缓存地址范围,即第一PCI-E控制器相当于是中转PCI-E控制器,则第一PCI-E控制器也可以将该第二打包消息通过PCI-E接口发送给所述第二一致性消息请求访问的地址所属的缓存一致性子域的PCI-E控制器。

图4为本发明一致性消息的传输方法实施例三的信令图。如图4所示:

S401、core1向控制器1发送ar_request_read请求。

上述控制器1即为归属于core1所在的CCSD1的PCI-E控制器,为叙述方便,称为控制器1,基于相同理由,下述控制器2为归属于LLC2所在的CCSD2的PCI-E控制器,控制器3即为归属于CCSD3的PCI-E控制器;当core1需要数据m,但core1的一级缓存中无数据m时,则需要向其他CCSD中的最后一级缓存中请求读取数据m。

S402、控制器1获取打包消息1。

以控制器1的角度来看,控制器1即为第一PCI-E控制器,则ar_request_read请求即为第一一致性消息,从而打包消息1即为第一打包消息;具体的,core1在该ar_request_read请求中通过使用ar通道的cmd字段,在该ar通道的cmd字段中写入0xc,以告知控制器1该ar_request_read请求的类型为一级缓存读失效,并在ar通道的cpuno字段中写入core1的标号,还在请求中写入了数据m的地址1,则控制器1按照表2,将ar_request_read请求处理为打包消息1,并在打包消息1中将cmd字段写为1100。

S403、控制器1向控制器2发送打包消息1。

如前所述,控制器1根据地址1,可获知缓存了数据m的最后一级缓存具体为LLC2,即前述目的地址即为地址1,从而将打包消息1发送至归属于LLC2所在的CCSD2的控制器2,以控制器1的角度,控制器2则为归属于第二缓存一致性子域(即CCSD2)的第二PCI-E控制器。

S404、控制器2将打包消息1解包以获得ar_request_read请求。

S405、控制器2将ar_request_read请求发送至LLC2。

由于打包消息1中有cmd字段,则控制器2可根据cmd字段选择对应的解包方法,从而获得正确的ar_request_read请求,此时以控制器2的角度来说,该控制器2为第一PCI-E控制器,而打包消息1则为第二打包消息,从而ar_request_read请求为第二一致性消息。

S406、LLC2向控制器2发送r_writeback请求。

LLC2查找到地址1,但其被位于CCSD3中的core3独占,则LLC2需向core3发送r_writeback请求,以使core3写回数据m,但LLC2需先向控制器2发送r_writeback请求,该请求中的目的地址即为core3的标号,且在请求中通过ar通道的cmd字段告知控制器2该请求的类型为二级缓存写回命令。

S407、控制器2将r_writeback请求处理为打包消息2。

此时以控制器2的角度来看,r_writeback请求则为第一一致性消息,控制器2根据ar通道的cmd确定了请求的类型,从而在打包消息2中的cmd字段写入0010。

S408、控制器2将打包消息2发送至控制器3。

控制器2根据r_writeback请求中的目的地址,将打包消息2发送给控制器3,以控制器2的角度,控制器3即为归属于第二缓存一致性子域(此时为CCSD3)的第二PCI-E控制器,即目的PCI-E控制器。

S409、控制器3将打包消息2解包以获得r_writeback请求。

S410并将r_writeback请求发送至core3。

S411、core3向控制器3发送r_response消息。

与前述过程类似,core3通过ar通道的cmd字段向控制器3告知r_response消息的消息类型,同时由于core3修改了数据m的赋值,同时在r_response消息中注明数据m此时为处于脏状态的脏数据,数据m的地址1及数据m修改后的赋值。

S412、控制器3将r_response消息处理为打包消息3。

S413、控制器3将打包消息3发送至控制器2。

控制器3根据S408中core3写入的ar通道的cmd字段,选择表4的打包方式将r_response消息处理为打包消息3,且将数据m修改后的赋值写在高data和低data字段中,并将cmd字段写为0000,并根据地址1确定将打包消息3发送至控制器2。

S414、控制器2将打包消息3解包以获得r_response消息。

S415、控制器2将r_response消息发送给LLC2。

S416、LLC2向控制器2发送b_response消息。

LLC2根据r_response消息中数据m修改后的赋值,更新LLC2中数据m的赋值,最后通过b_response消息响应core1的ar_request_read请求,该b_response消息中的ar通道的cmd字段用于告知控制器2该消息的类型,且在b_response消息中写入的目的地址为core1的标号,还有数据m修改后的赋值。

S417、控制器2将b_response消息处理为打包消息4。

S418、控制器2将打包消息4发送至控制器1。

处理器2根据表7将b_response消息处理为打包消息4,由于b_response消息中目的地址为core1的标号,则将core1的标号写入表7中的id字段,且控制器2将打包消息4发送至归属于CCSD1的控制器1。

S419、控制器1解包打包消息4以获得b_response消息。

S420、控制器1向core1发送b_response消息。

此时core1通过接收b_response消息,可获得数据m修改后的赋值,并将该修改后的赋值缓存至core1的一级缓存中。

上述S401~S420仅为一种维护缓存一致性的应用,由于一致性消息的类型较多,且维护缓存一致性的应用场景多变,则在实际应用中可作出相应的调整;通过上述S401~S420,计算机系统中各个处理器核及跨子域间的最后一级缓存的缓存一致性得以维护,例如前述core3中一级缓存中数据m的赋值、CCSD2中的LLC2中数据m的赋值和core1的一级缓存中数据m的赋值,通过前述S401~S420,得到了一致性的维护,即保持数据m的赋值一致,避免出现运算错误等影响计算机系统运行的情况。

图5为本发明提供的一种总线接口控制器实施例一的结构示意图。

如图5所示,本实施例提供的总线接口控制器100可以包括:

第一接收模块11,可以用于接收第一缓存一致性子域中的第一一致性消息;所述总线接口控制器归属于所述第一缓存一致性子域;所述第一一致性消息携带消息类型和目的地址。

处理模块12,可以用于根据所述第一一致性消息的消息类型的预设的打包相关信息确定所打包格式,并根据所述打包格式,对所述第一一致性消息进行打包以获得第一打包消息,所述打包相关信息包括一致性消息的消息类型和打包格式的对应关系。

第一发送模块13,可以用于根据所述第一一致性消息的目的地址,将所述第一打包消息通过所述总线接口控制器的总线接口发送至归属于第二缓存一致性子域的第二总线接口控制器。

其中,所述第一缓存一致性子域中包括处理器核与最后一级缓存,所述第一缓存一致性子域中的所述第一一致性消息是由该所述第一缓存一致性子域中的处理器核或最后一级缓存发送的。

可选的,总线接口控制器100和归属于第二缓存一致性子域的总线接口 控制器可以为PCI-E控制器,所述总线接口可以为PCI-E接口。

可选的,处理模块12,可以具体用于根据所述第一一致性消息的消息类型,确定对应的事务层数据包TLP包的打包格式。

进一步地,第一发送模块11,可以具体用于通过所述总线接口控制器100的PCI-E接口内所述第一打包消息的定义符号对应的虚通道中的至少两个子虚通道中的任意一个空闲的子虚通道,将所述第一打包消息发送至归属于地二缓存一致性子域的PCI-E控制器;所述PCI-E接口包括4个虚通道;所述第一打包消息中的定义符号对应所述4个虚通道中的一个虚通道;所述4个虚通道中的每个虚通道包括至少两个子虚通道。

本实施例提供的总线接口控制器的技术方案细节及技术效果与图1至图4所示实施例相同,此处不再赘述。

图6为本发明提供的一种总线接口控制器实施例二的结构示意图。

在图5所示的总线接口控制器100的基础上,如图6所示,本实施例的总线接口控制器100还可以包括第二接收模块14和第二发送模块15。

第二接收模块14,用于接收第二打包消息。

处理模块12,还可以用于根据所述第二打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式,并根据所述第二打包消息的打包格式,进行解包操作以获得所述第二打包消息所包括的第二一致性消息,所述打包相关信息包括定义符号与打包格式的对应关系。

第二发送模块15,可以用于根据所述第二一致性消息的目的地址,将所述第二一致性消息发送给第一缓存一致性子域中的处理器或最后一级缓存。

本实施例提供的总线接口控制器的技术方案细节及技术效果与图1至图4所示实施例相同,此处不再赘述。

图7为本发明提供的一种芯片的结构示意图。

如图7所示,本实施例提供的芯片200可以包括:快速传输HT控制器120、如图5至图6所示的任一种总线接口控制器100、至少一个HT接口130和至少一个总线接口110。

举例来说,该总线接口控制器100可以为PCI-E控制器,该总线接口110可以为PCI-E接口。

需要说明的是,本发明实施例的芯片可以为图1所示的桥片,即互连芯 片。

可选的,当一个服务器与多个服务器进行刀片间互连时,芯片200可以具有多个PCI-E接口,例如4个,可参考图1。

本实施例提供的芯片的技术方案细节及技术效果与图1至图4所示实施例相同,此处不再赘述。

本发明还提供一种一致性消息的传输系统,该系统可以包括:归属于第一缓存一致性子域的第一总线接口控制器、至少一个处理器核、至少一个最后一级缓存、至少一个总线接口和归属于第二缓存一致性子域的第二总线接口控制器、至少一个处理器核、至少一个最后一级缓存,所述归属于第一缓存一致性子域的总线接口中的至少一个总线接口与所述归属于第二缓存一致性子域的总线接口中的至少一个总线接口相连。

例如,对于图4所示的一致性消息的发送过程,图4中的控制器1和core1可以归属于第一缓存一致性子域,图4中的控制器2和core3可以归属于第二缓存一致性子域,控制器1可以为第一总线接口控制器,控制器2可以为第二总线接口控制器。

第一总线接口控制器可以用于接收所述第一缓存一致性子域中的处理器核或者最后一级缓存发送的第一一致性消息,第一一致性消息携带消息类型和目的地址并可以根据第一一致性消息的消息类型和预设的打包相关信息确定打包格式,并按照所述打包格式对第一一致性消息进行打包以获得第一打包消息,所述打包相关信息包括一致性消息的消息类型和打包格式的对应关系;以及可以根据第一一致性消息的目的地址,将第一打包消息通过归属于第一缓存一致性子域的总线接口发送至归属于第二缓存一致性子域的第二总线接口控制器。

第二总线接口控制器可以用于接收第一打包消息;根据所述第一打包消息的定义符号和预设的打包相关信息,确定所述第二打包消息的打包格式,并根据所述第一打包消息的打包格式,进行解包操作以获得所述第一打包消息所包括的所述第一一致性消息,所述打包相关信息包括定义符号与打包格式的对应关系;再可以用于根据第一一致性消息的目的地址,将第一一致性消息发送给第二缓存一致性子域中的处理器或最后一级缓存。

需要说明的是,本实施例的第一总线接口控制器和第二接口控制器均可 以采用图5至图6任一种所示的总线接口控制器的结构,且第一总线接接口控制器和第二总线接口控制器均可以位于如图2所示的服务器的桥片上。

可选的,第一总线接口控制器接收的第一一致性消息由第一缓存一致性子域中的处理器核发送,第二总线接口控制器将第一打包消息所包括的第一一致性消息发送给第二缓存一致性子域的最后一级缓存。

或者,可选的,第一总线接口控制器接收的第一一致性消息由所述第一缓存一致性子域中的最后一级缓存发送,第二总线接口控制器将第一打包消息所包括的第一一致性消息发送给第二缓存一致性子域的处理器核。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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