技术简介:
本专利针对现有PCIe Switch仅支持IO设备扩展、无法实现处理器间数据共享的问题,提出通过传输管理器与PCIe标识映射机制,将处理器内存请求封装为PCIe报文经Switch转发至目标处理器的解决方案。利用事务ID映射和链路状态检测确保通信可靠性,实现了跨处理器的高效数据共享。
关键词:PCIeSwitch通信,处理器数据共享
一种基于PCIE Switch通信的方法、装置及系统的制作方法
【专利摘要】本发明实施例提供了一种基于PCIE?Switch通信的方法、装置及系统,涉及通信领域或计算机领域,用于通过PCIE?Switch实现处理器间数据共享。所述方法,包括:第一传输管理器接收第一处理器发送的内存请求;根据内存请求中的第一标识信息确定第二传输管理器,并获取所述第二传输管理器的PCIE标识;根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文;通过PCIE?Switch向第二传输管理器发送PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第一处理器要访问的第二处理器。使得第一处理器通过PCIE?Switch实现对第二处理器存储数据的访问,获取第二处理器存储的数据,从而实现处理器间数据共享的目的。
【专利说明】—种基于PCIE Switch通信的方法、装置及系统
【技术领域】
[0001]本发明涉及通信领域或计算机领域,尤其涉及一种基于PCIE Switch通信的方法、装置及系统。
【背景技术】
[0002]目前,高速外围组件互连(Peripherial Component Interconnect Express,简称PCIE)在交换网络中被广泛使用。PCIE采用了点对点串行连接。与外围组件互连(Peripherial Component Interconnect,简称PCI)及更早前的计算机总线的共享并行结构相比,在PCIE总线的共享并行结构中,每个设备都有自己的专用连接,不需要向整个总线请求带宽。PCIE具有很强的兼容性,所有的PCIE输入/输出(Input/Output,简称1/0)设备都可连接到高速外围组件互连交换机(Peripherial Component Interconnect ExpressSwitch,简称PCIESwitch)上组成基于PCIE拓扑的计算机网络结构。
[0003]现有技术中,通过PCIE Switch只能对1/0设备进行扩展,使得在1/0设备间实现数据共享,并不支持处理器间数据相互共享。
【发明内容】
[0004]本发明的实施例提供一种基于PCIE Switch通信的方法、装置及系统,用以通过PCIE Switch实现处理器间数据共享的目的。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]第一方面,一种基于高速外围组件互连交换机PCIE Switch通信的方法,包括:第一传输管理器接收第一处理器发送的内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识所述第一处理器要访问的第二处理器;所述第一传输管理器根据所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的高速外围组件互连PCIE标识,所述第二传输管理器为管理所述第二处理器的传输管理器;所述第一传输管理器根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文;所述第一传输管理器通过PCIE Switch向所述第二传输管理器发送所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第二处理器。
[0007]在第一方面的第一种可能的实现方式中,在所述第一传输管理器通过PCIESwitch向所述第二传输管理器发送所述PCIE请求报文之前,还包括:所述第一传输管理器向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态;所述第一传输管理器接收所述控制器返回的的链路响应消息;则,当所述链路响应消息表明所述第二传输管理器处于空闲态,第一传输管理器通过所述PCIE Switch向所述第二传输管理器发送所述PCIE请求报文。
[0008]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述第一传输管理器根据所述第一标识信息确定第二传输管理器之前,还包括:所述第一传输管理器根据所述第一标识信息判断所述第二处理器是否由所述第一传输管理器管理;若所述第二处理器不是由所述第一传输管理器管理,执行所述根据所述第一标识信息确定第二传输管理器的步骤;若所述第二处理器由所述第一传输管理器管理,所述第一传输管理器将所述内存请求发送至所述第二处理器。
[0009]结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述第一标识信息确定第二传输管理器,包括:当所述第一标识信息为所述第二处理器的标识时,所述第一传输管理器根据所述第二处理器的标识确定所述第二传输管理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,所述第一传输管理器根据所述内存请求中的系统地址信息确定所述第二传输管理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
[0010]结合第一方面的第三种可能的实现方式,在第一方面的第四可能的实现方式中,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,还包括:所述第一传输管理器根据所述内存请求中的事务标识建立所述事务标识与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务标识与所述第一处理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一处理器;其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0011]第二方面,一种基于高速外围组件互连交换机PCIE Switch通信的方法,包括:第二传输管理器接收PCIE Switch发送的来自于第一传输管理器的高速外围组件互连PCIE请求报文,所述PCIE请求报文封装有内存请求;所述第二传输管理器将所述PCIE请求报文解封装出所述内存请求,所述内存请求中至少携带有第一标识信息,所述第一标识信息用于标识第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器;所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器;所述第二传输管理器将所述内存请求发送至所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
[0012]在第二方面的第一种可能的实现方式中,所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器,包括:当所述第一标识信息为所述第二处理器的标识时,所述第二传输管理器根据所述第二处理器的标识确定所述第二处理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,所述第二传输管理器根据所述内存请求中的系统地址信息确定所述第二处理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
[0013]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,还包括:所述第二传输管理器根据所述内存请求中的事务标识建立所述事务标识与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务标识与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一传输管理器,其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0014]第三方面,本发明实施例提供了一第一传输管理器,包括:第一收发单元,用于接收第一处理器发送的内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识所述第一处理器要访问的第二处理器;处理单元,用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的高速外围组件互连PCIE标识,所述第二传输管理器为管理所述第二处理器的传输管理器;转换单元,用于根据所述第一收发单元接收的所述内存请求、所述第一传输管理器的PCIE标识及所述处理单元获取的所述第二传输管理器的PCIE标识生成PCIE请求报文;第二收发单元,用于通过PCIE Switch向所述第二传输管理器发送所示转换单元生成的所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第二处理器。
[0015]在第三方面的第一种可能的实现方式中,还包括:事务单元,用于向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态;第二收发单元,还用于接收所述控制器返回的链路响应消息;贝U,所述第二收发单元,具体用于,当所述链路响应消息表明所述第二传输管理器处于空闲态,通过所述PCIE Switch向所述第二传输管理器发送所述PCIE请求报文。
[0016]结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述处理单元,还用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息判断所述第二处理器是否由所述第一传输管理器管理;则,所述处理单元,具体用于,在所述第二处理器不是由所述第一传输管理器管理的情况下,根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定所述第二传输管理器;所述第一收发单元,还用于,在所述处理单元判断所述第二处理器由所述第一传输管理器管理的情况下,将所述内存请求发送至所述第二处理器。
[0017]结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理单元,用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定第二传输管理器,具体为,用于当所述第一标识信息为所述第二处理器的标识时,根据所述第二处理器的标识确定所述第二传输管理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的系统地址信息确定所述第二传输管理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
[0018]结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述处理单元,还用于当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的事务标识建立所述事务标识与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务标识与所述第一处理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一处理器;其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0019]第四方面,本发明实施例提供了一第二传输管理器,包括:第一收发单元,用于接收高速外围组件互连交换机PCIE Switch发送的来自于第一传输管理器的高速外围组件互连PCIE请求报文,所述PCIE请求报文封装有内存请求;转换单元,用于将所述第一收发单元接收的所述PCIE请求报文解封装出所述内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器;处理单元,用于根据所述转换单元解封装出的所述内存请求中的所述第一标识信息确定所述第二处理器;第二收发单元,用于将所述转换单元解封装出的内存请求发送至所述处理单元确定的所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
[0020]在第四方面的第一种可能的实现方式中,所述处理单元,具体用于,当所述第一标识信息为所述第二处理器的标识时,第二传输管理器根据所述第二处理器的标识确定所述第二处理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的系统地址信息确定所述第二处理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
[0021]结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述处理单元,还用于在所述第一标识信息为所述第一传输管理器的缓存一致性代理标识的情况下,根据所述内存请求中的事务标识建立所述事务标识与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务标识与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一传输管理器,其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0022]第五方面,本发明实施例提供了一种高速外围组件互连交换机PCIE Switch的通信系统,包括:高速外围组件互连交换机PCIE Switch,高速外围组件互连PCIE总线,与所述PCIE Switch通过所述PCIE总线相连接的控制器,第一总线,至少两个处理器,和至少两个传输管理器;所述至少两个传输管理器中包括:一个PCIE Switch, 一个控制器,至少两个处理器,和至少两个传输管理器;其中,所述至少两个传输管理器通过PCIE总线与所述PCIE Switch相连接,所述控制器通过所述PCIE总线与所述PCIE Switch相连接;所述控制器,用于管理所述PCIE Switch和所述至少两个传输管理器;所述至少两个传输管理器中的第一传输管理器,与所述至少两个处理器中的第一处理器相连接,并管理所述第一处理器,所述第一传输管理器为权利要求14-20任一项所述的第一传输管理器;所述至少两个传输管理器中的第二传输管理器,与所述至少两个处理器中的第二处理器相连接,并管理所述第二处理器,所述第二传输管理器为权利要求21-23任一项所述的第二传输管理器。
[0023]第六方面,本发明实施例提供了一种基于高速外围组件互连交换机PCIE Switch的通信系统,包括:一个PCIE Switch,一个控制器,至少两个处理节点;其中,所述控制器通过PCIE总线与所述PCIESwitch连接,用于管理所述PCIE Switch和所述至少两个处理节点;所述至少两个处理节点通过所述PCIE总线,作为所述PCIE Switch的端点设备连接到所述PCIE Switch ;所述至少两个处理节点中的第一处理节点包括:第一处理器和第一传输管理器;所述第一处理器和所述第一传输管理器相连接,所述第一传输管理器为权利要求14-20任一项所述的第一传输管理器,管理所述第一处理器;所述至少两个处理节点中的第二处理节点包括:第二处理器和第二传输管理器;所述第二处理器和所述第二传输管理器相连接,所述第二传输管理器为权利要求21-23任一项所述的第二传输管理器,管理所述第二处理器。
[0024]本发明实施例提供了一种基于PCIE Switch通信的方法、装置及系统,第一传输管理器接收到第一处理器发送的内存请求后,根据内存请求中第一标识信息确定第二传输管理器,第一传输管理器将内存请求封装为PCIE请求报文,通过PCIE Switch将PCIE请求报文发送至第二传输管理器。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIE Switch实现对第二处理器存储数据的访问,获取第二处理器存储的数据,从而实现了处理器间数据共享的目的。
【专利附图】
【附图说明】
[0025]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本发明实施例中处理器通过高速外围组件互连交换机PCIE Switch互通的架构示意图;
[0027]图2为本发明实施例提供的一种基于高速外围组件互连交换机PCIE Switch通信的方法的示意图;
[0028]图3为本发明实施例提供的一种高速外围组件互连PCIE数据包的报文格式;
[0029]图4为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的方法的示意图;
[0030]图5为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的方法的示意图;
[0031]图6为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的方法的示意图;
[0032]图7为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的方法的示意图;
[0033]图8为本发明实施例提供的一第一传输管理器的结构不意图;
[0034]图9为本发明实施例提供的另一第一传输管理器的结构示意图;
[0035]图10为本发明实施例提供的一第二传输管理器的结构示意图;
[0036]图11为本发明实施例提供的一种基于高速外围组件互连交换机PCIE Switch通信的系统的结构示意图;
[0037]图12为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的系统的结构示意图;
[0038]图13为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的系统的结构示意图;
[0039]图14为本发明实施例提供的另一种基于高速外围组件互连交换机PCIE Switch通信的系统的结构示意图。
【具体实施方式】
[0040]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]如图1所示,中央处理器(Central Processing Unit,简称CPU)和传输管理器组成一个处理器节点,多个处理器节点连接到一个PCIE Switch上,通过PCIE Switch实现各处理器节点间的中央处理器(下文中也称为处理器)之间的数据共享。
[0042]本发明实施例提供了一种基于高速外围组件互连交换机PCIE Switch通信的方法,如图2所示,包括:
[0043]101、第一传输管理器接收第一处理器发送的内存请求。
[0044]其中,所述内存请求中至少携带第一标识信息。所述第一标识信息用于标识所述第一处理器要访问的第二处理器。
[0045]需要说明的是,在本发明实施例的描述的“第一处理器”、“第二处理器”就是一种处理器,在此之所以命名为第一处理器、第二处理器只是为了相区别,其“第一”和“第二”并不具有时序上或者逻辑上的任何关系,只为了表示分别是两个单独的处理器而已,本发明实施例中以第二处理器作为第一处理器要访问的处理器。第一标识信息能够唯一标识出第一处理器要访问的处理器,可以是第二处理器的内存地址信息,也可是第二处理器的ID,还可以是其他能够唯一标识出第二处理器的信息,本发明对此不做限制。本发明实施例中的“第一传输管理器”、“第二传输管理器”等也是如此。
[0046]进一步的,所述内存请求中还携带有系统地址信息及第一处理器的事务标识(Identity,简称 ID)。
[0047]其中,所述系统地址信息为所述第一处理器要访问的处理器的内存地址信息,所述第一处理器的事务标识为所述第一处理器发起的内存请求事务的标识。
[0048]具体的,第一处理器若要访问其他处理器,则向第一传输管理器发送内存请求,以使得第一传输管理器将内存请求发送至相应的处理器。
[0049]需要说明的是,第一处理器由第一传输管理器管理。
[0050]进一步的,第一处理器可以通过快速通道互连(Quick Path Interconnect,简称QPI)总线向第一传输管理器发送内存请求,此时第一处理器发送的内存请求为QP I内存请求。当然也可以通过其他总线,本发明对此不做限制。
[0051]102、第一传输管理器根据所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的高速外围组件互连PCIE标识。
[0052]具体的,在第一传输管理器只管理一个处理器,即第一传输管理器只管理第一处理器的情况下,此时,第一处理器要访问的第二处理器不是由第一传输管理器管理。若第一处理器发送的内存请求中携带的第一标识信息为访问处理器的标识,则第一传输管理器根据访问处理器的标识确定管理访问处理器的第二传输管理器,并获取此第二传输管理器的PCIE标识。
[0053]其中,访问处理器由所述第二传输管理器管理,是第一处理器需要发送内存请求的处理器,也就是说,是第一处理器需要访问的处理器。此处,访问处理器为第二处理器,所述第二传输管理器为管理所述第二处理器的传输管理器。
[0054]需要说明的是,若PCIE Switch连接了至多8个处理器,则第一处理器发送的内存请求中携带的第一标识信息可以为访问处理器的标识。在这种情况下,第一传输管理器预先存储了连接在PCIE Switch的其他传输管理器的PCIE标识及其他传输管理器管理的处理器的标识。在本实施例中,在PCIE Switch连接了至多8个处理器的场景下,可以用访问处理器的标识作为第一标识信息,此处的至多8个处理器仅为一种示例,表明第一处理器可以在发送的内存请求中携带访问处理器的标识来识别访问处理器,多于此数量无法携带访问处理器的标识来识别访问处理器的场景。也可能是至多16个、至多32个或其它任何合理数字的处理器,并不对本发明的保护范围造成限制,本发明中其它实施例中处理器的数量与此类似。
[0055]需要说明的是,若PCIE Switch连接了至多8个处理器,则每个处理器预先获知所有处理器的标识,并且在需访问其他处理器时,在内存请求中添加要访问处理器的标识。优选的,每个处理器存储着所有处理器的标识。
[0056]示例性的,若PCIE Switch连接有8个处理器,每个传输管理器只管理一个处理器。若第一传输管理器的PCIE标识为PCIEOOI,第二传输管理器的PCIE标识为PCIE002,第一传输管理器管理的第一处理器的标识为POOl,第二传输管理器管理的第二处理器的标识为P002。其中,每个传输管理器中存储了连接在PCIE Switch的其他7个传输管理器的PCIE标识及这7个传输管理器管理的处理器的标识。
[0057]若第一传输管理器管理的第一处理器要访问第二传输管理器的第二处理器,则第一处理器向第一传输管理器发送QPI内存请求,QPI内存请求中携带有访问处理器的标识,即为第二传输管理器管理的第二处理器的标识为P002。此时,第一传输管理器根据标识P002查找本地存储的所有第一标识信息,从而可以查找到处理器标识为P002的第二处理器对应的第二传输管理器,并获取第二传输管理器的PCIE标识为PCIE002。
[0058]若PCIE Switch连接了多于8个处理器,且在所述第一处理器要访问的处理器不是由所述第一传输管理器管理的情况下,第一处理器发送的内存请求中携带的第一标识信息为第一处理器的缓存一致性(Cache Coherence,简称CC)代理标识,第一传输管理器在检测到所述第一标识信息为第.一处理器的CC代理标识时,所述第一传输管理器根据所述内存请求中的系统地址信息确定第二传输管理器,并获取此第二传输管理器的PCIE标识。此时第一传输管理器还根据所述内存请求中的所述第一处理器的事务ID建立事务ID与所述第一处理器间的映射关系,以便在接收到该内存请求的内存响应消息后,根据所述事务ID与所述第一处理器间的映射关系以及内存响应消息中的事务ID确定所述内存响应消息对应的所述第一处理器。可选的,以表格的形式表不事务ID与第一处理器间的映射关系。如下表I所示。
[0059]
事务ID j第一处理器
001COOl
[0060]需要说明的是,在PCIE Switch连接了多于8个处理器的情况下,每个传输管理器预先存储了连接在PCIE Switch的其他传输管理器的PCIE标识及其他传输管理器管理的每个处理器的内存地址信息。每个处理器中预先存储了其他处理器的内存地址信息。
[0061]需要说明的是,事务ID与第一处理器间的映射关系也可采用其他形式表示,例如,用指针的形式表示。本发明对此不做限制。[0062]需要说明的是,若PCIE Switch连接了多于8个处理器,则第一处理器发送的内存请求中携带的第一标识信息为第一传输管理器的CC代理标识。在这种情况下,第一传输管理器具有维护与其他传输管理器路由访问的功能。
[0063]具体的,第一传输管理器检测到第一标识信息为第一传输管理器的CC代理标识的内存请求后,第一传输管理器根据所述内存请求的系统地址信息,查找预先存储的连接在PCIE Switch的其他传输管理器管理的每个处理器的内存地址信息,从而能够确定出管理第一处理器要访问的第二处理器的传输管理器,即确定第二传输管理器,并获取第二传输管理器的PCIE标识。
[0064]需要说明的是,在本发明所有实施例中,处理器通过传输管理器与PCIE Switch相连接。
[0065]需要说明的是,若PCIE Switch连接了多于8个处理器,则每个处理器预先存储自身对应的CC代理标识,并且在需访问其他传输管理器管理的处理器时,将自身对应的CC代理标识作为第一标识信息添加至内存请求中,以使得传输管理器确定需将内存请求发送至其他传输管理器。
[0066]示例性的,若PCIE Switch连接有16个处理器,每个传输管理器只管理一个处理器。若第一传输管理器的PCIE标识为PCIE001,第一传输管理器的CC代理标识为C001,第二传输管理器的PCIE标识为PCIE002,第一传输管理器管理的处理器的标识为P001,第二传输管理器管理的第二处理器的标识为P002。其中,每个传输管理器中存储了连接在PCIESwitch的其他15个传输管理器的PCIE标识及其他15个传输管理器管理的每个处理器的内存地址信息。每个处理器中存储了其他处理器的内存地址信息。
[0067]若第一传输管理器管理的第一处理器要访问第二传输管理器管理的第二处理器,则第一处理器将要访问的第二处理器的内存地址信息作为系统地址信息添加至内存请求中,并将第一传输管理器的CC代理标识COOl作为第一标识信息添加至QPI内存请求中,并向第一传输管理器发送QPI内存请求。此时,第一传输管理器接收到内存请求后,检测到内存请求中携带了第一传输管理器的CC代理标识C001,则根据QPI内存请求的系统地址信息确定第二传输管理器,即为需将QPI内存请求发送到的连接到PCIE Switch的其他的传输管理器,并查找到第二传输管理器的PCIE标识为PCIE002。并且,第一传输管理器根据第一处理器的事务ID,建立事务ID与处理器间的映射关系。
[0068]需要说明的是,在PCIE Switch连接了多于8个处理器的情况下,若第一处理器需访问的处理器不是由第一传输管理器管理时,贝1J第一标识信息为第一传输管理器的C C代理标识,若第一处理器需访问的处理器由第一传输管理器管理时,贝1J第一标识信息为第一处理器需访问的处理器的标识。
[0069]103、第一传输管理器根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文。
[0070]具体的,PCIE报文格式,如图3所示。将所述内存请求封装为PCIE请求报文的数据信息,内存请求中携带有第一标识信息,还可以携带系统地址信息及第一处理器的事务ID。将所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识封装为所述PCIE请求报文的报头信息。此时,将第一总线报文格式的内存请求转换为PCIE Switch能够识别的PCIE报文格式。[0071]其中,第一传输管理器将第一传输管理器的PCIE标识作为报头信息的源标识,将第二传输管理器的PCIE标识作为报头信息的目的标识。
[0072]进一步的,将内存请求中携带的系统地址信息及第一处理器的事务ID作为PCIE请求报文的数据信息,进行封装。
[0073]104、第一传输管理器通过PCIE Switch向所述第二传输管理器发送所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第一处理器要访问的第二处理器。
[0074]具体的,第一传输管理器将PCIE请求报文通过PCIE总线发送至PCIE Switch,PCIE Switch根据PCIE请求报文的报头信息中的目的标识,即第二传输管理器的PCIE标识,将PCIE请求报文发送至第二传输管理器,以使得第二传输管理器将PCIE请求报文中封装的内存请求发送至其管理的、第一处理器需访问的第二处理器,实现第一处理器对第二处理器的内存的访问。
[0075]进一步的,在第一传输管理器将PCIE请求报文通过所述PCIE总线发送至PCIESwitch之前,第一传输管理器向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态。
[0076]具体的,第一传输管理器在确定了第二传输管理器后,向控制器发送链路请求,以请求与第二传输管理器通信。控制器接收到链路请求后,根据链路请求中携带的第二传输管理器的PCIE标识查找到第二传输管理器,并检测第二传输管理器是否处于空闲状态。
[0077]其中,控制器检测第二传输管理器是否处于空闲状态的方法可以是控制器向第二传输管理器发送询问消息,若第二传输管理器处于空闲状态,则向控制器返回空闲响应消息,若第二传输管理器处于非空闲状态,则向控制器返回非空闲响应消息,控制器接收到第二传输管理器的响应消息后,便获知第二传输管理器是否处于空闲状态。
[0078]当然,控制器检测第二传输管理器是否处于空闲状态,还可以用其他方法,本发明对此不做限制。
[0079]在控制器检测出第二传输管理器处于空闲态时,则说明第一传输管理器可通过PCIE Switch与第二传输管理器进行通信。控制器向第一传输管理器发送链路响应消息。
[0080]若控制器检测出第二传输管理器处于忙碌态时,则说明第一传输管理器暂时不能通过PCIE Switch与第二传输管理器进行通信,此时控制器需向第一传输管理器发送等待信息,则第一传输管理器需要等待第二传输管理器空闲后才能通过PCIE Switch与第二传输管理器进行通信,可以采用第一传输管理器继续向控制器发送链路请求直至接收到控制器返回的表明所述第二传输管理器空闲的链路响应消息的方式,但不限于此。
[0081]所述第一传输管理器接收所述控制器返回的的链路响应消息。并且,当所述链路响应消息表明所述第二传输管理器处于空闲态,所述第一传输管理器通过所述PCIESwitch向所述第二传输管理器发送所述PCIE请求报文。
[0082]具体的,所述第一传输管理器在接收到控制器返回的表明所述第二传输管理器处于空闲态的链路响应消息的情况下,则第一传输管理器将PCIE请求报文通过PCIE总线发送至PCIE Switch,由PCIE Switch将所述PCIE请求报文转发至第二传输管理器,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第二处理器。
[0083]本发明实施例提供了一种基于PCIE Switch通信的方法,第一传输管理器接收到第一处理器发送的内存请求后,根据内存请求中的第一标识信息确定第二传输管理器,将内存请求封装为PCIE请求报文,通过PCIE Switch将PCIE请求报文发送至第二传输管理器。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的要访问的第二处理器,使得第一处理器通过PCIE Switch实现对第二处理器存储数据的访问,获取第二处理器存储的数据,从而实现处理器间数据共享的目的。
[0084]本发明实施例提供了一种基于PCIE Switch通信的方法,如图4所示,包括:
[0085]301、第二传输管理器接收第一传输管理器通过PCIE Switch发送的PCIE请求报文。
[0086]其中,所述PCIE请求报文封装有内存请求、所述第一传输管理器的PCIE标识和第二传输管理器的PCIE标识。
[0087]302、第二传输管理器将所述PCIE请求报文解封装出所述内存请求。
[0088]其中,所述内存请求中至少携带第一标识信息。所述第一标识信息用于标识所述第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器。
[0089]进一步的,所述内存请求中还携带有系统地址信息及第一传输管理器管理的第一处理器的事务ID。
[0090]其中,所述系统地址信息为所述第一处理器要访问的第二处理器的内存地址信息,所述第一处理器的事务标识为所述第一处理器发起的内存请求事务的标识。
[0091]具体的,第二传输管理器对接收的PCIE请求报文的数据信息进行解封装时,可获取内存请求。在解析PCIE请求报文的报头信息时,可获取第一传输管理器的PCIE标识,第二传输管理器即可获知此内存请求由哪个传输管理器发送。此时,第二传输管理器将内存请求转换为处理器能够识别的报文形式,例如QPI报文格式。
[0092]303、第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第一处理器要访问的第二处理器。
[0093]具体的,第二传输管理器解封装出内存请求后,获取到内存请求中携带的第一标识信息。若检测到第一标识信息为所述第一处理器要访问的第二处理器的标识时,即为检测到第一标识信息为访问处理器的标识,则第二传输管理器根据所述第二处理器的标识确定所述第一处理器要访问的第二处理器,也就是说,第二传输管理器将访问处理器的标识对应的第二处理器确定为第一处理器要访问的处理器。
[0094]若检测到第一标识信息为第一传输管理器的缓存一致性代理标识,则第二传输管理器根据所述内存请求的系统地址信息确定所述第一处理器要访问的第二处理器。进一步的,第二传输管理器根据所述内存请求中的所述第一处理器的事务ID建立所述事务ID与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务ID与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务ID确定所述内存响应消息对应的所述第一传输管理器。
[0095]304、所述第二传输管理器将所述内存请求发送至所述第一处理器要访问的第二处理器,以使得所述第一处理器要访问的第二处理器根据所述内存请求进行响应。
[0096]具体的,第二传输管理器在其管理的至少一个处理器中,确定出第一处理器要访问的第二处理器,将内存请求发送至第二处理器,以便第二处理器根据内存请求对第一传输管理器管理的第一处理器做出相应的响应。
[0097]需要说明的是,在本发明所有实施例中,内存请求可以是第一处理器对第二处理器的读操作,也可是第一处理器将数据写入第二处理器中,还可是其他请求,本发明对此不做限制。
[0098]本发明实施例提供了一种基于PCIE Switch通信的方法,第二传输管理器通过PCIE Switch接收第一传输管理器发送的PCIE请求报文,从PCIE请求报文中解析出内存请求,并确定出要访问的第二处理器,将内存请求发送至第二处理器,从而使得第二处理器对第一处理器发送的内存请求进行相应的响应。这样,可以将由第一传输管理器管理的第一处理器通过PCIE Switch发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIE Switch实现对要访问的第二处理器存储数据的访问,获取要第二处理器存储的数据,从而实现了处理器间数据共享的目的。
[0099]本发明实施例提供了一种基于PCIE Switch通信的方法,该方法应用于由PCIESwitch、控制器、PCIE总线、至少两个处理器及至少两个传输管理器组成的PCIE Switch通信系统。其中,至少两个传输管理器中的每个传输管理器分别通过PCIE总线与PCIESwitch相连接,分别与至少两个处理器中的至少一个处理器相连接。控制器连接在PCIESwitch,且控制器用于控制所有连接在PCIE Switch的传输管理器。
[0100]在PCIE Switch通信系统开始运行时,控制器需对连接在PCIE Switch的所有设备进行检测,并识别出各个设备的类型,为连接在PCIE Switch的所有设备分配PCIE标识。通过传输管理器连接在PCIE Switch的各个处理器开始运行各自的基本输入输出系统(Basic Input Output System,简称BIOS)程序,各个处理器在运行各自的BIOS程序时,获取到各个处理器对应的节点标识,即各个处理器的标识。
[0101]需要说明的是,各个处理器加载的BIOS程序是相同,BIOS用来控制处理器节点上各处理器及其外围设备的运行。
[0102]以下是实现基于PCIE Switch通信的方法的具体步骤,包括:
[0103]401、第一传输管理器接收第一处理器发送的内存请求。
[0104]具体的,与步骤101相同,在此不再赘述。
[0105]需要说明的是,第一传输管理器管理的处理器可以为一个,也可是至少两个。若第一传输管理器只管理一个第一处理器,则执行步骤403-408,409a,410a, 412-418,如图5所示。若第一传输管理器管理至少两个处理器,且第一处理器要访问的第二处理器由第一传输管理器管理时,则执行步骤402-403,409b,410b,417-418,如图6所示。若第一传输管理器管理至少两个处理器,且第一处理器要访问的第二处理器不是由第一传输管理器管理时,则执行步骤402-408,409a,410a,411-418,如图7所示。
[0106]402、第一传输管理器根据所述第一标识信息判断所述第一处理器要访问的第二处理器是否由所述第一传输管理器管理。
[0107]需要说明的是,若PCIE Switch连接的处理器个数不多于8个,则第一标识信息为第一处理器要访问的第二处理器的标识,在第一传输管理器中存储有其管理的处理器的标识和连接在PCIE Switch的其他传输管理器的PCIE标识及连接在PCIE Switch的其他传输管理器管理的处理器的标识。[0108]需要说明的是,图5中第二处理器是由第二传输管理器管理,图6中第二处理器由第一传输管理器管理。
[0109]若PCIE Switch连接的处理器个数多于8个,则第一标识信息包括:第二处理器的标识(图6)或第一传输管理器的CC代理标识(图7);此时,第一传输管理器存储有其管理的处理器的标识及其他传输管理器管理的每个处理器的内存地址信息。每个处理器中预先存储了其他处理器的内存地址信息。
[0110]具体的,在PCIE Switch连接的处理器个数不多于8个的情况下,第一标识信息为访问处理器的标识,此时为第二处理器的标识。第一传输管理器根据第二处理器的标识查看其存储的所有处理器的标识,在存储的连接到PCIE Switch的其他传输管理器管理的处理器的标识区域,找到第一传输管理器存储的与第二处理器的标识相同的处理器的标识时,查找到管理第二处理器的第二传输管理器的PCIE标识,从而确定出第一处理器需访问的第二处理器不是由第一传输管理器管理,而是由连接到PCIE Switch的其他传输管理器管理;当第一传输管理器根据第二处理器的标识查看其存储的所有处理器的标识,在第一传输管理器存储的由第一传输管理器管理的处理器的标识区域,找到第一传输管理器存储的与第二处理器的标识相同的处理器的标识时,确定出第一处理器需访问的第二处理器由第一传输管理器管理。在PCIE Switch连接的处理器个数多于8个的情况下,第一标识信息为第二处理器的标识或第一传输管理器的CC代理标识。当第一传输管理器检测到第一标识信息为第二处理器的标识时,第一传输管理器确定出第一处理器要访问的第二处理器由第一传输管理器管理;当第一传输管理器检测到第一标识信息为第一传输管理器的CC代理标识时,第一传输管理器确定出第一处理器要访问的第二处理器由连接在PCIE Switch的其他传输管理器管理。
[0111]需要说明的是,在本发明所有实施例中,第二传输管理器是除了第一传输管理器之外的,连接到PCIE Switch的传输管理器,是管理第一处理器要访问的第二处理器的传输
管理器。
[0112]403、第一传输管理器根据第一标识信息确定管理第一处理器需访问的第二处理器的传输管理器。
[0113]具体的,在连接到PCIE Switch的传输管理器均管理一个处理器的情况下,第一传输管理器根据第一标识信息确定第二传输管理器,具体的实现方法与步骤102中相关内容相同,在此不再赘述。
[0114]在连接到PCIE Switch的传输管理器均管理至少两个处理器的情况下,若第一处理器要访问的第二处理器由第一传输管理器管理,则第一标识信息为第二处理器的标识,第一传输管理器根据第二处理器的标识确定所述第二处理器。具体的,第一传输管理器获取到内存请求中携带的第一标识信息。若检测到第一标识信息为所述第一处理器要访问的第二处理器的标识时,即为检测到第一标识信息为第二处理器的标识,则第一传输管理器根据所述第二处理器的标识确定所述第一处理器要访问的第二处理器。
[0115]若第一处理器要访问的第二处理器不是由第一传输管理器管理,则在第一标识信息为访问处理器的标识,即第二处理器的标识的情况下,第一传输管理器根据第二处理器的标识确定管理第二处理器的第二传输管理器,并获取此第二传输管理器的PCIE标识。
[0116]若第一处理器要访问的设备不是由第一传输管理器管理,则在第一标识信息为第一传输管理器的CC代理标识的情况下,第一传输管理器可以根据所述内存请求的系统地址信息,在连接到PCIE Switch的其他传输管理器中确定出第一传输管理器管理的第一处理器需访问的第二处理器所在的传输管理器,即为确定出第二传输管理器,并获取此第二传输管理器的PCIE标识。进一步的,第一传输管理器还根据所述内存请求中的所述第一处理器的事务标识建立所述事务ID与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务ID与所述第一处理器间的映射关系以及所述内存响应消息中的事务ID确定所述内存响应消息对应的所述第一处理器。
[0117]404、第一传输管理器根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文。
[0118]具体的,与步骤103相同,在此不再赘述。
[0119]405、第一传输管理器通过PCIE Switch向所述第二传输管理器发送所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第一处理器要访问的第二处理器。
[0120]具体的,与步骤104相同,在此不再赘述。
[0121]406、第二传输管理器接收PCIE Switch发送的来自于第一传输管理器的PCIE请求报文。
[0122]具体的,与步骤301相同,在此不再赘述。
[0123]407、第二传输管理器将所述PCIE请求报文解封装出所述内存请求。
[0124]具体的,与步骤302相同,在此不再赘述。
[0125]408、所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第一处理器要访问的第二处理器。
[0126]具体的,与步骤303相同,在此不再赘述。
[0127]409a、所述第二传输管理器将所述内存请求发送至所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
[0128]具体的,与步骤304相同,在此不再赘述。
[0129]40%、所述第一传输管理器将所述内存请求发送至所述第一处理器要访问的第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
[0130]具体的,第一传输管理器在其管理的至少一个处理器中,确定出第一处理器要访问的第二处理器,将内存请求发送至第二处理器,以便第二处理器根据内存请求对第一传输管理器管理的第一处理器做出相应的响应。
[0131]410a、第二传输管理器接收所述第二处理器发送的内存响应消息。
[0132]其中,所述内存响应消息中携带第二标识信息。第二标识信息用于标识所述第一处理器。
[0133]具体的,第二传输管理器管理的第二处理器在接收到内存请求后,根据内存请求进行响应,并将内存响应消息发送至第二传输管理器。
[0134]进一步的,内存响应消息中携带有第二处理器需响应的处理器的事务ID,即第一处理器的事务ID。
[0135]需要说明的是,第二处理器接收到的内存请求中携带有发送内存请求的第一处理器的事务ID,第二处理器在返回内存响应消息时,将第一处理器的事务ID添加至内存响应消息中。
[0136]410b、第一传输管理器接收第二处理器发送的内存响应消息。
[0137]其中,所述内存响应消息中携带第二标识信息。
[0138]具体的,第一传输管理器管理的第二处理器在接收到内存请求后,根据内存请求进行响应,并将内存响应消息通过第一总线发送至第一传输管理器。
[0139]411、第二传输管理器根据所述第二标识信息判断所述第一处理器是否由所述第
二传输管理器管理。
[0140]具体的,可参考步骤402,在此不再赘述。
[0141]412、第二传输管理器根据所述第二标识信息,确定所述第一传输管理器,并获取第一传输管理器的PCIE标识。
[0142]具体的,在第二传输管理器判断出第一处理器不是由第二传输管理器时,若PCIESwitch连接的处理器个数不多于8个,则第二标识信息为第一处理器的标识,此时,第二传输管理器根据第一处理器的标识确定第一传输管理器,并获取第一传输管理器的PCIE标识。若PCIESwitch连接的处理器个数多于8个,则第二标识信息为第二传输管理器的CC代理标识,此时,第二传输管理器根据所述内存响应消息中携带的事务ID及建立的事务ID与发送内存请求的传输管理器间的映射关系,确定第一传输管理器,并获取第一传输管理器的PCIE标识。
[0143]413、将所述内存响应消息、所述第一传输管理器的PCIE标识及第二传输管理器的PCIE标识生成PCIE响应报文。
[0144]具体的,将第一传输管理器的PCIE标识与第二传输管理器的PCIE标识封装为所述PCIE响应报文的报头信息。将内存响应消息封装PCIE响应报文的数据信息。
[0145]其中,第二传输管理器将第一传输管理器的PCIE标识作为报头信息的目的标识,将第二传输管理器的PCIE标识作为报头信息的源标识进行报头封装,生成所述PCIE请求报文。
[0146]可参考步骤404,在此不再赘述。
[0147]414、第二传输管理器通过PCIE Switch向所述第一传输管理器发送所述PCIE响应报文,以使得所述第一传输管理器根据所述PCIE响应报文将所述内存响应消息发送至所述第一传输管理器管理的第一处理器。
[0148]具体的,第二传输管理器通过PCIE Switch向所述第一传输管理器发送所述PCIE响应报文的方法,与第一传输管理器通过PCIE Switch向第二传输管理器PCIE请求报文的方法相同,可参考步骤405,在此不再赘述。
[0149]415、第一传输管理器接收第二传输管理器通过PCIE Switch发送的PCIE响应报文。
[0150]其中,所述PCIE响应报文封装有内存响应消息。
[0151]416、第一传输管理器将所述PCIE响应报文解封装出所述内存响应消息。
[0152]其中,所述内存响应消息中至少携带第二标识信息。
[0153]进一步的,内存响应消息中还携带有事务ID。
[0154]417、第一传输管理器根据所述第二标识信息确定第一处理器。
[0155]具体的,若所述第二标识信息包括:第一处理器的标识,则根据所述第一处理器的标识确定出所述第二标识信息对应的处理器,即为确定出第一处理器。
[0156]若所述第二标识信息包括:第二传输管理器的CC代理标识,则若检测到所述标识信息包括:第二传输管理器的CC代理标识,则根据所述内存响应消息中携带的事务ID及建立的事务ID与第一处理器间的映射关系确定所述第一处理器。
[0157]418、第一传输管理器将所述内存响应消息发送至所述第一处理器中。
[0158]本发明实施例提供了一种基于PCIE Switch通信的方法,第一传输管理器接收到第一处理器发送的内存请求后,根据内存请求中的第一标识信息确定第二传输管理器,第一传输管理器将内存请求封装为PCIE请求报文,通过PCIE Switch将PCIE请求报文发送至第二传输管理器。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIESwitch实现对由第二传输管理器管理的要访问的第二处理器存储数据的访问,获取由第二传输管理器管理的第二处理器存储的数据,从而实现了处理器间数据共享的目的。
[0159]本发明实施例提供了一第一传输管理器,如图8所不,包括:
[0160]第一收发单元701,用于接收第一处理器发送的内存请求。
[0161]其中,所述内存请求中至少携带第一标识信息。所述第一标识信息用于标识所述第一处理器要访问的第二处理器。
[0162]进一步的,所述内存请求中还携带有系统地址信息及第一处理器的事务标识。所述系统地址信息为所述第一处理器要访问的第二处理器的内存地址信息。所述第一处理器的事务标识为所述第一处理器发起的内存请求事务的标识。
[0163]可选的,第一收发单元701通过快速通道互连QPI总线接收第一处理器发送的内存请求。处理单元702,用于根据所述第一收发单元701接收的所述内存请求中的所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的PCIE标识。
[0164]其中,所述第二传输管理器为管理所述第一处理器要访问的第二处理器的传输管理器。
[0165]可选的,处理单元702为交叉开关矩阵(Crossbar)处理单元,或处理单元702为
缓存一致性处理单元。
[0166]转换单元703,用于根据所述第一收发单元701接收的所述内存请求、所述第一传输管理器的PCIE标识及所述处理单元702获取的所述第二传输管理器的PCIE标识生成PCIE请求报文。
[0167]其中,所述转换单元703具体用于,将所述内存请求封装为PCIE请求报文的数据信息。将所述第一传输管理器的PCIE标识及所述处理单元702获取的所述第二传输管理器的PCIE标识封装为所述PCIE请求报文的报头信息。
[0168]进一步的,所述转换单元703具体用于,根据所述第一收发单元701接收的所述QPI内存请求、所述第一传输管理器的PCIE标识及所述处理单元702获取的所述第二传输管理器的PCIE标识生成PCIE请求报文。
[0169]第二收发单元704,用于通过PCIE Switch向所述第二传输管理器发送所述转换单元703生成的所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第一处理器要访问的第二处理器。
[0170]上述第一传输管理器,如图9所示,还包括:[0171]事务单元705,用于向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态。
[0172]所述第二收发单元704,还用于接收所述控制器返回的链路响应消息。
[0173]具体的,若控制器检测出第二传输管理器处于空闲态时,则说明第一传输管理器可通过PCIE Switch与第二传输管理器进行通信。控制器向第一传输管理器发送表明第二传输管理器处于空闲态的链路响应消息。第一传输管理器的第二收发单元704接收表明第二传输管理器处于空闲态的链路响应消息。
[0174]此时,所述第二收发单元704,具体用于,当所述链路响应消息表明所述第二传输管理器处于空闲态,通过所述PCIE Switch向所述第二传输管理器发送所述PCIE请求报文。
[0175]若控制器检测出第二传输管理器处于忙碌态时,则说明第一传输管理器暂时不能通过PCIE Switch与第二传输管理器进行通信,此时控制器需向所述第一传输管理器发送表明第二传输管理器处于忙碌态的链路响应消息,第一传输管理器的第二收发单兀704接收表明第二传输管理器处于忙碌态的链路响应消息,使得第一传输管理器等待,直至第二传输管理器处于空闲态为止。
[0176]此时,处理单元702,还用于检测出所述第二收发单元704接收的链路响应消息表明第二传输管理器处于忙碌态时,则等待第二传输管理器变为空闲。
[0177]上述处理单元702,还用于根据所述第一收发单元701接收的所述内存请求中的所述第一标识信息判断所述第一处理器要访问的第二处理器是否由所述第一传输管理器管理。
[0178]则,所述处理单元702,具体用于,在所述第一处理器要访问的第二处理器不是由所述第一传输管理器管理的情况下,根据所述第一收发单元701接收的所述内存请求中的所述第一标识信息确定第二传输管理器。
[0179]所述第一收发单元701,还用于在所述处理单元判断所述第一处理器要访问的第二处理器由所述第一传输管理器管理的情况下,将所述内存请求发送至第二处理器。
[0180]其中,所述第二处理器为所述第一处理器要访问的处理器,所述第一标识信息为第二处理器的标识。
[0181]所述处理单元702,用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定第二传输管理器,具体为用于当所述第一标识信息为访问处理器的标识,即第二处理器的标识时,根据所述第二处理器的标识确定所述第二传输管理器。
[0182]当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的系统地址信息确定所述第二传输管理器。
[0183]其中,所述系统地址信息为所述第一处理器要访问的第二处理器的内存地址信
肩、O
[0184]所述处理单元702,还用于当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的所述事务标识建立所述事务标识与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务标识与所述第一处理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一处理器。[0185]其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0186]此时,所述处理单元702,还用于维护与其他传输管理器间的路由访问。
[0187]本发明实施例提供了 一第一传输管理器,第一传输管理器接收到第一处理器发送的内存请求后,根据内存请求中的第一标识信息确定第二传输管理器,第一传输管理器将内存请求封装为PCIE请求报文,通过PCIE Switch将PCIE请求报文发送至第二传输管理器。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIE Switch实现对由第二传输管理器管理的第二处理器存储数据的访问,获取由第二传输管理器管理的第二处理器存储的数据,从而实现了处理器间数据共享的目的。
[0188]本发明实施例提供了一第二传输管理器,如图10所示,包括:
[0189]第一收发单元801,用于接收PCIE Switch发送的来自于第一传输管理器的PCIE请求报文,其中,所述PCIE请求报文封装有内存请求。
[0190]转换单元802,用于将所述第一收发单元801接收的所述PCIE请求报文解封装出所述内存请求。
[0191]其中,所述内存请求中至少携带第一标识信息。所述第一标识信息用于标识所述第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器。
[0192]进一步的,所述内存请求中还携带有系统地址信息及第一传输管理器管理的第一处理器的事务标识。
[0193]其中,所述系统地址信息为所述第一处理器要访问的第二处理器的内存地址信息。所述第一处理器的事务标识为所述第一处理器发起的内存请求事务的标识。
[0194]处理单元803,用于根据所述转换单元802解封装出的所述内存请求中携带的所述第一标识信息确定所述第一处理器要访问的第二处理器。
[0195]具体的,所述处理单元803,具体用于,在所述第一标识信息包括所述第一处理器要访问的第二处理器的标识的情况下,根据所述第二处理器的标识确定所述第二处理器。此时,所述处理单元803包括:交叉开关矩阵Crossbar处理单元。在所述第一标识信息为所述第一传输管理器的缓存一致性代理标识的情况下,根据所述内存请求中的系统地址信息确定所述第一处理器要访问的第二处理器。其中,所述系统地址信息为所述第一处理器要访问的第二处理器的内存地址信息。
[0196]所述处理单元803,还用于在所述第一标识信息为所述第一传输管理器的缓存一致性代理标识的情况下,根据所述内存请求中的所述事务标识建立所述事务ID与所述第一传输管理器间的映射关系,以便在接收到所述第一处理器要访问的第二处理器返回的所述内存请求的内存响应消息后,根据所述事务ID与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务ID确定所述内存响应消息对应的所述第一传输管理器。
[0197]其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
[0198]第二收发单元804,用于将所述转换单元802解封装出的内存请求发送至所述处理单元803确定的所述第一处理器要访问的第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
[0199]本发明实施例提供了一第二传输管理器,第二传输管理器通过PCIE Switch接收第一传输管理器发送的PCIE请求报文,从PCIE请求报文中解析出内存请求,并确定出第一处理器要访问的第二处理器,将内存请求发送至第二处理器,从而使得第二处理器对第一处理器发送的内存请求进行相应的响应。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIE Switch实现对由第二传输管理器管理的第二处理器存储数据的访问,获取由第二传输管理器管理的第二处理器存储的数据,从而实现了处理器间数据共享的目的。
[0200]本发明实施例提供了一种基于PCIE Switch的通信系统,如图11所不,包括:一个PCIE Switch901,一个控制器903至少两个处理器905,和至少两个传输管理器。
[0201]其中,所述至少两个传输管理器通过PCIE总线902与所述PCIESwitch901相连接,所述控制器903通过所述PCIE总线902与所述PCIE Switch901相连接。
[0202]所述控制器903,用于管理所述PCIE Switch901和所述至少两个传输管理器。
[0203]所述至少两个传输管理器中的第一传输管理器9061与所述至少两个处理器905中的第一处理器相连接,并管理所述第一处理器,所述至少两个传输管理器中的第二传输管理器9062与所述至少两个处理器905中的第二处理器相连接,并管理所述第二处理器。
[0204]进一步的,所述第一传输管理器为上述实施例中提供的任一种第一传输管理器;所述第二传输管理器为另一个实施例提供的任一种第二传输管理器。
[0205]可选的,所述至少两个传输管理器中的第一传输管理器9061通过QPI总线与所述至少两个处理器905中的第一处理器相连接,所述至少两个传输管理器中的第二传输管理器9062通过QPI总线与所述至少两个处理器905中的第二处理器相连接。
[0206]本发明实施例提供了一种基于高速外围组件互连交换机PCIE Switch的通信系统,如图12所示,包括:一个PCIE SwitchlOOl,一个控制器1002,至少两个处理节点。其中,所述控制器1002通过PCIE总线1003与所述PCIE SwitchlOOl相连,用于管理所述PCIESwitch和所述至少两个处理节点;所述至少两个处理节点通过所述PCIE总线1003,作为所述PCIE Switch的端点设备(Endpoint,简称EP)连接到所述PCIE Switch901。
[0207]所述至少两个处理节点中的第二处理节点10041,如图13所示,包括:第二处理器100411和第二传输管理器100412。其中,所述第二传输管理器100412为上述实施例所述的任一种第二传输管理器,并管理所述第二处理器。进一步的,所述第二处理器100411和第二传输管理器100412相连接。
[0208]所述至少两个处理节点中的第一处理节点10042,参考图13所示,包括:第一处理器100421和第一传输管理器100422。其中,所述第一传输管理器100422为上述实施例所述的任一种第一传输管理器,并管理所述第一处理器。进一步的,所述第一处理器100421和第一传输管理器100422相连接。
[0209]可选的,所述第二处理器100411和第二传输管理器100412通过QPI总线相连接,所述第一处理器100421和第一传输管理器100422通过QPI总线相连接。进一步可选的,所述至少两个处理节点为基于PCIE的QPI (QPI over PCIE,简称Q2P)处理节点,如图14所
/Jn ο
[0210]本发明实施例提供了一种基于PCIE Switch通信的方法、装置及系统,第一传输管理器接收到第一处理器发送的内存请求后,根据内存请求中的第一标识信息确定第二传输管理器,第一传输管理器将内存请求封装为PCIE请求报文,通过PCIE Switch将PCIE请求报文发送至第二传输管理器,以使得第二传输管理器根据PCIE请求报文将内存请求发送至第一处理器要访问的第二处理器。这样,通过PCIE Switch可以将由第一传输管理器管理的第一处理器发送的内存请求发送至由第二传输管理器管理的第二处理器,使得第一处理器通过PCIE Switch实现对由第二传输管理器管理的第二处理器存储数据的访问,获取由第二传输管理器管理的第二处理器存储的数据,从而实现了处理器间数据共享的目的。
[0211]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0212]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种基于高速外围组件互连交换机PCIE Switch通信的方法,其特征在于,包括:第一传输管理器接收第一处理器发送的内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识所述第一处理器要访问的第二处理器;所述第一传输管理器根据所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的高速外围组件互连PCIE标识,所述第二传输管理器为管理所述第二处理器的传输管理器;所述第一传输管理器根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文;所述第一传输管理器通过PCIE Switch向所述第二传输管理器发送所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第二处理器。
2.根据权利要求1所述的方法,其特征在于,在所述第一传输管理器通过PCIE Switch向所述第二传输管理器发送所述PCIE请求报文之前,还包括:所述第一传输管理器向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态;所述第一传输管理器接收所述控制器返回的的链路响应消息; 贝U,当所述链路响应消息表明所述第二传输管理器处于空闲态,所述第一传输管理器通过所述PCIE Switch向所述第二传输管理器发送所述PCIE请求报文。
3.根据权利要求1或2所述的方法,其特征在于,在所述第一传输管理器根据所述第一标识信息确定第二传输管理器之前,还包括:所述第一传输管理器根据所述第一标识信息判断所述第二处理器是否由所述第一传输管理器管理;若所述第二处理器不是由所述第一传输管理器管理,执行所述根据所述第一标识信息确定第二传输管理器的步骤;若所述第二处理器由所述第一传输管理器管理,所述第一传输管理器将所述内存请求发送至所述第二处理器。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述第一标识信息确定第二传输管理器,包括:当所述第一标识信息为所述第二处理器的标识时,所述第一传输管理器根据所述第二处理器的标识确定所述第二传输管理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,所述第一传输管理器根据所述内存请求中的系统地址信息确定所述第二传输管理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
5.根据权利要求4所述的方法,其特征在于,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,还包括:所述第一传输管理器根据所述内存请求中的事务标识建立所述事务标识与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务标识与所述第一处理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一处理器;其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述内存请求、所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识生成PCIE请求报文包括:所述第一传输管理器将所述内存请求封装为所述PCIE请求报文的数据信息,将所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识封装为所述PCIE请求报文的报头信息,生成所述PCIE请求报文。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述第一传输管理器接收第一处理器发送的内存请求包括:所述第一传输管理器通过QPI总线接收所述第一处理器发送的QPI内存请求。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:所述第二传输管理器接收通过所述PCIE Switch发送的所述PCIE请求报文;所述第二传输管理器将所述PCIE请求报文解封装出所述内存请求; 所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器;所述第二传输管理器将所述内存请求发送至所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
9.根据权利要求8所 述的方法,其特征在于,所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器,包括:当所述第一标识信息为所述第二处理器的标识时,所述第二传输管理器根据所述第二处理器的标识确定所述第二处理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,所述第二传输管理器根据所述内存请求中的系统地址信息确定所述第二处理器。
10.根据权利要求9所述的方法,其特征在于,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,还包括:所述第二传输管理器根据所述内存请求中的所述事务标识建立所述事务标识与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务标识与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一传输管理器。
11.一种基于高速外围组件互连交换机PCIE Switch通信的方法,其特征在于,包括:第二传输管理器接收PCIE Switch发送的来自于第一传输管理器的高速外围组件互连PCIE请求报文,所述PCIE请求报文封装有内存请求;所述第二传输管理器将所述PCIE请求报文解封装出所述内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器; 所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器;所述第二传输管理器将所述内存请求发送至所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
12.根据权利要求11所述的方法,其特征在于,所述第二传输管理器根据所述内存请求中的所述第一标识信息确定所述第二处理器,包括:当所述第一标识信息为所述第二处理器的标识时,所述第二传输管理器根据所述第二处理器的标识确定所述第二处理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,所述第二传输管理器根据所述内存请求中的系统地址信息确定所述第二处理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
13.根据权利要求12所述的方法,其特征在于,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,还包括:所述第二传输管理器根据所述内存请求中的事务标识建立所述事务标识与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务标识与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一传输管理器,其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
14.一第一传输管理器,其特征在于,包括:第一收发单元, 用于接收第一处理器发送的内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识所述第一处理器要访问的第二处理器;处理单元,用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定第二传输管理器,并获取所述第二传输管理器的高速外围组件互连PCIE标识,所述第二传输管理器为管理所述第二处理器的传输管理器;转换单元,用于根据所述第一收发单元接收的所述内存请求、所述第一传输管理器的PCIE标识及所述处理单元获取的所述第二传输管理器的PCIE标识生成PCIE请求报文;第二收发单元,用于通过PCIE Switch向所述第二传输管理器发送所述转换单元生成的所述PCIE请求报文,以使得所述第二传输管理器根据所述PCIE请求报文将所述内存请求发送至所述第二处理器。
15.根据权利要求14所述的第一传输管理器,其特征在于,还包括:事务单元,用于向控制器发送携带有所述第二传输管理器的PCIE标识的链路请求,以使得所述控制器检测所述第二传输管理器是否处于空闲状态;所述第二收发单元,还用于接收所述控制器返回的链路响应消息;贝U,所述第二收发单元,具体用于,当所述链路响应消息表明所述第二传输管理器处于空闲态,通过所述PCIE Switch向所述第二传输管理器发送所述PCIE请求报文。
16.根据权利要求14或15所述的第一传输管理器,其特征在于,所述处理单元,还用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息判断所述第二处理器是否由所述第一传输管理器管理;贝U,所述处理单元,具体用于,在所述第二处理器不是由所述第一传输管理器管理的情况下,根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定所述第二传输管理器;所述第一收发单元,还用于,在所述处理单元判断所述第二处理器由所述第一传输管理器管理的情况下,将所述内存请求发送至所述第二处理器。
17.根据权利要求14-16任一项所述的第一传输管理器,其特征在于,所述处理单元,用于根据所述第一收发单元接收的所述内存请求中的所述第一标识信息确定第二传输管理器,具体为,用于当所述第一标识信息为所述第二处理器的标识时,根据所述第二处理器的标识确定所述第二传输管理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的系统地址信息确定所述第二传输管理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
18.根据权利要求17所述的第一传输管理器,其特征在于,所述处理单元,还用于,当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的事务标识建立所述事务标识与所述第一处理器间的映射关系,以便在接收到所述内存请求的内存响应消息后,根据所述事务标识与所述第一处理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一处理器;其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
19.根据权利要求14-18任一项所述的第一传输管理器,其特征在于,所述转换单元,具体用于,将所述内存请求封装为所述PCIE请求报文的数据信息,将所述第一传输管理器的PCIE标识及所述第二传输管理器的PCIE标识封装为所述PCIE请求报文的报头信息,生成所述PCIE请求报文。
20.根据权利要求14-19任一项所述的第一传输管理器,其特征在于,所述第一收发单元,具体用于,通过快速通道互连总线接收所述第一处理器发送的快速通道互连QPI内存请求。
21.—第二传输管理器,其特征在于,包括:第一收发单元,用于接收高速外围组件互连交换机PCIE Switch发送的来自于第一传输管理器的高速外围组件互连PCIE请求报文,所述PCIE请求报文封装有内存请求;转换单元,用于将所述第一收发单元接收的所述PCIE请求报文解封装出所述内存请求,所述内存请求中至少携带第一标识信息,所述第一标识信息用于标识第一处理器要访问的第二处理器,所述第一传输管理器为管理所述第一处理器的传输管理器;处理单元,用于根据所述转换单元解封装出的所述内存请求中的所述第一标识信息确定所述第二处理器;第二收发单元,用于将所述转换单元解封装出的内存请求发送至所述处理单元确定的所述第二处理器,以使得所述第二处理器根据所述内存请求进行响应。
22.根据权利要求21所述的第二传输管理器,其特征在于,所述处理单元,具体用于,当所述第一标识信息为所述第二处理器的标识时,根据所述第二处理器的标识确定所述第二处理器;当所述第一标识信息为所述第一传输管理器的缓存一致性代理标识时,根据所述内存请求中的系统地址信息确定所述第二处理器,其中,所述系统地址信息为所述第一处理器要访问的所述第二处理器的内存地址信息。
23.根据权利要求22所述的第二传输管理器,其特征在于,所述处理单元,还用于在所述第一标识信息为所述第一传输管理器的缓存一致性代理标识的情况下,根据所述内存请求中的事务标识建立所述事务标识与所述第一传输管理器间的映射关系,以便在接收到所述第二处理器返回的所述内存请求的内存响应消息后,根据所述事务标识与所述第一传输管理器间的映射关系以及所述内存响应消息中的事务标识确定所述内存响应消息对应的所述第一传输管理器,其中,所述事务标识为所述第一处理器发起的内存请求事务的标识。
24.—种基于高速外围组件互连交换机PCIE Switch的通信系统,其特征在于,包括:一个PCIE Switch,一个控制器,至少两个处理器,和至少两个传输管理器;其中,所述至少两个传输管理器通过PCIE总线与所述PCIE Switch相连接,所述控制器通过所述PCIE总线与所述PCIE Switch相连接;所述控制器,用于管理所述PCIE Switch和所述至少两个传输管理器;所述至少两个传输管理器中的第一传输管理器,与所述至少两个处理器中的第一处理器相连接,并管理所述第一处理器,所述第一传输管理器为权利要求14-20任一项所述的第一传输管理器;所述至少两个传输管理器中的第二传输管理器,与所述至少两个处理器中的第二处理器相连接,并管理所述第二处理器,所述第二传输管理器为权利要求21-23任一项所述的第二传输管理器。
25.—种基于高速外围组件互连交换机PCIE Switch的通信系统,其特征在于,包括:一个PCIE Switch,一个控制器,至少两个处理节点;其中,所述控制器通过PCIE总线与所述PCIE Switch连接,用于管理所述PCIE Switch和所述至少两个处理节点;所述至少两个处理节点通过所述PCIE总线,作为所述PCIE Switch的端点设备连接到所述PCIE Switch ; 所述至少两个处理节点中的第一处理节点包括:第一处理器和第一传输管理器,所述第一处理器和所述第一传输管理器相连接,所述第一传输管理器为权利要求14-20任一项所述的第一传输管理器,管理所述第一处理器;所述至少两个处理节点中的第二处理节点包括:第二处理器和第二传输管理器,所述第二处理器和所述第二传输管理器相连接,所述第二传输管理器为权利要求21-23任一项所述的第二传输管理器,管理所述第二处理器。
【文档编号】G06F13/38GK103430161SQ201280003181
【公开日】2013年12月4日 申请日期:2012年11月15日 优先权日:2012年11月15日
【发明者】杨荣玉, 常胜, 王工艺 申请人:华为技术有限公司