CN112688805B - 芯片集群的拓扑结构的枚举方法和装置 - Google Patents

芯片集群的拓扑结构的枚举方法和装置 Download PDF

Info

Publication number
CN112688805B
CN112688805B CN202011502920.5A CN202011502920A CN112688805B CN 112688805 B CN112688805 B CN 112688805B CN 202011502920 A CN202011502920 A CN 202011502920A CN 112688805 B CN112688805 B CN 112688805B
Authority
CN
China
Prior art keywords
chip
node
interconnection
port
interconnection port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011502920.5A
Other languages
English (en)
Other versions
CN112688805A (zh
Inventor
邓良策
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Suiyuan Technology Co.,Ltd.
Original Assignee
Shanghai Enflame Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202011502920.5A priority Critical patent/CN112688805B/zh
Publication of CN112688805A publication Critical patent/CN112688805A/zh
Application granted granted Critical
Publication of CN112688805B publication Critical patent/CN112688805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明提供的一种芯片集群的拓扑结构的枚举方法和装置,所述方法将芯片集群中的一个芯片节点作为当前芯片节点;对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历;利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息;分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点;当所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息作为芯片集群的拓扑结构进行保存。本发明通过任一芯片节点对整个芯片集群进行拓扑结构的枚举,进而实现数据在不同的芯片中的交换传输。

Description

芯片集群的拓扑结构的枚举方法和装置
技术领域
本发明涉及芯片技术领域,特别是涉及一种芯片集群的拓扑结构的枚举方法和装置。
背景技术
如今,随着信息化技术的发展,信息化的数据越来越复杂,处理数据所需的计算量也越来越大。当前,通过各芯片内部的互联端口,可以枚举由多个芯片连接而成的分布式芯片集群。
为了实现数据在不同的芯片中的交换传输,进而对大规模的数据进行快速处理,需要枚举分布式芯片集群的拓扑结构。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种芯片集群的拓扑结构的枚举方法和装置。
本发明一方面提供了一种芯片集群的拓扑结构的枚举方法,包括:
将芯片集群中的一个芯片节点作为当前芯片节点;
将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;
如果未保存有所述拓扑位置信息,则将当前芯片节点具有的层级的下一层级写入所述未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其他芯片节点的节点资源寄存器中;
利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
待与所述当前芯片节点所具有的层级相同的其他芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,返回执行所述对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历的步骤;
当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
在一些实施例中,所述拓扑位置信息还包括拓扑遍历标识,在所述将芯片集群中的一个芯片节点作为当前芯片节点后,所述方法还包括:
将所述当前芯片节点的节点资源寄存器中的拓扑遍历标识设置为有效;
在所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息后,所述方法还包括:
如果未保存有所述拓扑位置信息,则将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
在一些实施例中,所述当前芯片节点的互联端口中未遍历过的互联端口的判断过程包括:
确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息;
判断是否存储有所述已经建立连接的互联端口所对应的互联端口对连接信息;
若未存储,则确认该互联端口为未遍历过的互联端口;
记录所述未遍历过的互联端口的互联端口信息。
在一些实施例中,在所述确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息之前,所述方法还包括:
通过访问所述当前芯片节点的互联端口的端口资源寄存器的端口地址,读取每一个所述当前芯片节点的互联端口所对应的端口资源寄存器的连接标识是否为有效;其中,所述连接标识用于指示所述当前芯片节点的互联端口与其它芯片节点的互联端口是否成功建立连接关系;
若为有效,则确定该互联端口已经与其它芯片节点成功建立连接。
在一些实施例中,所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,包括:
判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中的拓扑遍历标识是否为有效,如果为有效,则确定节点资源寄存器中保存有拓扑位置信息,否则确定节点资源寄存器中未保存有拓扑位置信息;
则所述方法还包括:在确定节点资源寄存器中未保存有拓扑位置信息时,将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
在一些实施例中,每一个芯片节点的互联端口的系统资源访问空间中还设置有节点远程地址以及端口远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的请求时,将该请求中的地址转换成该芯片节点的节点资源地址或该芯片节点的节点远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的互联端口的请求时,将该请求中的地址转换成该芯片节点的端口资源地址或该芯片节点的端口远程地址。
在一些实施例中,所述对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历,包括:
依次获得各个当前芯片节点的互联端口的节点远程地址以及端口远程地址;
通过所述节点远程地址以及所述端口远程地址读取与所述当前芯片节点的互联端口相连接的其它芯片节点的互联端口对应的端口资源寄存器的端口ID以及该其它芯片节点的节点资源寄存器中的拓扑位置信息。
在一些实施例中,所述利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息包括:
将每一个所述当前芯片节点的如下四个信息作为互联端口对中的参数值组成互联端口对连接信息:
一、当前芯片节点的互联端口的互联端口信息中的端口ID;
二、当前芯片节点的节点资源寄存器的拓扑位置信息;
三、当前芯片节点的互联端口连接的其它芯片节点的互联端口的互联端口信息中的端口ID;
四、当前芯片节点的互联端口连接的其它芯片节点的节点资源寄存器中的拓扑位置信息。
在一些实施例中,所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息判断过程包括:
判断各底层节点芯片的互联端口是否均被遍历;
若是,则确定所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息。
本发明另一方面提供了一种芯片集群的拓扑结构的枚举装置,包括:
确定模块,用于将芯片集群中的一个芯片节点作为当前芯片节点;
设置模块,用于将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
遍历模块,用于对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
拓扑位置信息确定模块,用于判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;如果是,则触发信息生成模块;如果否,则触发拓扑位置信息写入模块;
拓扑位置信息写入模块,用于将当前芯片节点具有的层级的下一层级写入所述未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其他芯片节点的节点资源寄存器中;
信息生成模块,用于利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
返回模块,用于待与所述当前芯片节点所具有的层级相同的其他芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,再次触发所述遍历模块;
保存模块,用于当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
借由上述技术方案,本发明提供的一种芯片集群的拓扑结构的枚举方法和装置,所述方法将芯片集群中的一个芯片节点作为当前芯片节点;设置所述当前芯片节点的拓扑位置信息为第一层第一个,并将该拓扑位置信息写入所述当前芯片节点的节点资源寄存器中;对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历;确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息;如果未保存有拓扑位置信息,则将当前芯片节点具有的层级的下一层级写入所述未保存有位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的芯片节点的节点资源寄存器中;利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息;分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,返回执行所述对当前芯片节点的端口中的未遍历过的端口进行一次遍历的步骤;当所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息作为芯片集群的拓扑结构进行保存。
可见,由于本发明提供的一种芯片集群的拓扑结构的枚举方法可以通过任一芯片节点对整个芯片集群进行拓扑结构的枚举,进而实现数据在不同的芯片中的交换传输和数据快速处理。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例中各个地址在芯片节点中地址空间的具体位置的示意图;
图2是本发明实施例示出的一种芯片集群的拓扑结构的枚举方法的流程示意图;
图3为本发明实施例中需要进行拓扑枚举的芯片集群的结构示意图;
图4是本发明实施例提供的一种芯片集群的拓扑结构的枚举装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例可以应用到多个芯片节点构成的分布式芯片集群中。其中,每一个芯片节点具有各自的互联端口。各个芯片节点之间可以是物理连接也可以是逻辑连接。在实际使用时,应用程序需要先枚举该分布式芯片集群的逻辑拓扑结构,从而依据拓扑结构实现各个芯片节点之间的数据传输。
可选的,本发明实施例中的芯片集群,每一个所述芯片节点可以包括:
一个节点资源寄存器以及,与芯片节点的互联端口数量相匹配的端口资源寄存器;
其中,所述节点资源寄存器在所在芯片节点的系统存储资源地址空间中分配有节点资源地址,其中,利用该节点资源地址可以访问该芯片节点的系统存储资源访问空间,该节点资源寄存器用于存储所在芯片节点在芯片集群的拓扑结构中的位置信息;
所述端口资源寄存器在所在芯片节点的系统存储资源地址空间中分配有端口地址,其中,利用该端口地址可以访问该芯片节点的系统存储资源访问空间,每一个端口资源寄存器用于存储该端口寄存器对应的互联端口是否与其它芯片节点的互联端口成功建立连接的连接标识。
本发明一可选实施例中,在芯片内分配有一个节点资源寄存器Node_Register以及每一个互联端口对应的端口资源寄存器Port_Register。
参考图1,图1是本发明实施例中各个地址在芯片节点中地址空间的具体位置的示意图。其中,该芯片节点可以包括有4个互联端口。其中,节点资源寄存器在系统存储资源地址空间分配有节点资源地址Local_Node_Address,该寄存器可以被系统总线读/写访问,该寄存器可以存储有该芯片节点在拓扑结构中的位置信息。
位置信息可以包括位置值以及该位置值的拓扑遍历标识,实际使用中,该拓扑遍历标识可以是有效标志位。当有效标志位配置为有效时,表征该位置值即该芯片节点在拓扑结构中的具体位置。例如,该位置值为2,且有效标志位表征有效,例如1,则表征该芯片节点在拓扑结构中的层级为第2层。当有效标志位无效时,则位置值无意义。可以理解的是,当复位后,有效标志位配置为无效。当然,也可以是特定的标识,例如特定数字或字符等。
可以理解的是,位置信息中还可以包括在拓扑结构中的第几层以及在该层的序号。例如,位置信息可以包括(2,3),则表征该芯片节点在拓扑结构中的第二层,在第二层中的序号为3。
本发明实施例中,端口资源寄存器在系统存储资源地址空间分配有端口地址Local_Port_Address,该端口资源寄存器可以被系统总先读/写访问。其中,该寄存器中可以存储有该互联端口的固定ID值,以及,该互联端口是否与下一个芯片节点的互联端口成功建立连接的连接标识,实际使用中,连接标识可以是连接标志位。其中,固定ID值在出厂时被配置,为唯一值。连接标志位有效时,表征该互联端口和与之连接的下一芯片节点的互联端口成功建立了连接。可以理解的是,当复位后或连接断开时,连接标志位配置为无效。可以理解的是,连接标识还可以是其它形式,例如特定数字或字符等。只需要表证连接关系即可,本发明实施例优选采用连接标识位。
可以理解的是,对于某一芯片节点而言,节点资源寄存器、端口资源寄存器均位于其系统存储资源访问空间。每一个芯片节点具有一个节点资源寄存器以及与互联端口个数Y相同的端口资源寄存器,端口资源寄存器可以记作Port_Register[Port_ID],因此,系统存储资源访问空间的地址记为Local_Node_Address,Local_Port_Address[Port_ID]。Port_ID从1到Y。
本发明实施例中,每一个芯片节点的互联端口的系统资源访问空间中还设置有节点远程地址以及端口远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的请求时,将该请求中的地址转换成该芯片节点的节点资源地址或该芯片节点的节点远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的互联端口的请求时,将该请求中的地址转换成该芯片节点的端口资源地址或该芯片节点的端口远程地址。
本发明实施例中,任一芯片节点A的互联端口访问空间中,分配有节点远程地址Remote_Node_Address,通过访问该地址,可以将数据传输到与之互联的下一芯片节点B的互联端口。
芯片节点B接收到芯片节点A的互联端口发送的请求时,会对该请求中的地址进行转换。
其中,转换规则可以包括:
若接收的请求中目的地址为本芯片节点,即芯片节点B,则将该地址转换成芯片节点B的节点资源地址Local_Node_Address。
否则,通过芯片节点B的互联发送端口访问空间中的节点芯片远程地址Remote_Node_Address将请求传输给与芯片节点B相连接的芯片节点C。
本发明实施例中,任一芯片节点A的互联端口访问空间中,分配有节点端口远程地址Remote_Port_Address,通过访问该地址,可以将数据传输到与之互联的下一芯片节点B的互联端口。可以参考图1中的互联端口0、1、2、3,均可分配有节点芯片远程地址Remote_Node_Address以及节点端口远程地址Remote_Port_Address。
可以理解的是,本发明实施例中,芯片节点B接收到芯片节点A的互联端口发送的请求时,会对该请求中的地址进行转换。
其中,转换规则可以包括:
若接收的请求中目的地址为本芯片节点,即芯片节点B,则将该地址转换成芯片节点B的节点资源地址Local_Port_Address[port_id]。其中,port_id的值为该互联端口在芯片节点B的ID值。同一芯片节点上每一个互联端口的port_id是唯一的。
否则,通过芯片节点B的互联发送端口访问空间中的节点端口远程地址Remote_Port_Address将请求传输给与芯片节点B相连接的芯片节点C。
本发明实施例可以通过对芯片节点配置的节点资源寄存器、端口资源寄存器及其系统资源访问空间,实现拓扑结构的枚举。
参见图2,图2是本发明实施例示出的一种芯片集群的拓扑结构的枚举方法的流程示意图。
S100、将芯片集群中的一个芯片节点作为当前芯片节点;
S200、将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
本发明实施例中的芯片集群中包括N个芯片节点。运行在片内的CPU/MCU等或片外主机例如通过PCIe和芯片节点互联的分布式枚举软件(下称软件)从某个芯片节点中开始进行分布拓扑结构的枚举,可以理解的是,该软件能通过系统总线访问芯片的地址空间。
实际使用中,复位后,硬件内部将所有已建立连接的互联端口将自己对应的端口资源寄存器中的连接标识例如连接标识位设为有效。所有芯片节点的节点资源寄存器中的拓扑遍历标识例如有效连接位在复位后均为无效。
可以理解的是,一个芯片节点在芯片集群中的位置可以通过“第x层第y序号”来表示,一个互联端口通过“第x层第y序号的端口k”来表示。
当开始执行枚举时,软件预先设置有多个软件的内部变量来完成枚举,其中,通过设内部变量“当前层级”的值为1来表示执行枚举的该芯片节点是第1层芯片;设变量“当前层级的序号”的值为1,变量“当前层级序号”的值为1,来表征当前执行枚举的芯片节点在其层级中的序号。变量“下一层级序号”的值为1来表征当前层级的下一层级的序号。
软件通过系统总线访问当前芯片的节点资源地址Local_Node_Address地址,将对应的节点寄存器Node_Register的拓扑位置信息中的“层级”设为第1层,位置值中的“序号”为第1序号;同时置其“拓扑遍历标识”在本申请实施例中为“有效标识位”为有效。
S300、对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
S400、确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;
S500、如果未保存有所述拓扑位置信息,则将当前芯片节点具有的层级的下一层级写入所述未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其他芯片节点的节点资源寄存器中;
本发明实施例中,在步骤S300中,软件对当前芯片节点执行扫描操作,得到并存储当前芯片节点中所有已建立连接的互联端口信息。
需要说明的是,本发明实施例中的连接可以为逻辑连接。
可以理解的是,物理上的连接不能完全等同于逻辑上的连接。如物理上A和B的互联端口通过电缆连接,可以称两者之间的物理连接已经建立;但是在实际使用过程中,A或B的互联端口因为某种原因如发生无法恢复的故障而在逻辑上“不使能”,那么A和B在逻辑上是不连接的。又比如在实际中,插拔电缆的操作次数超过一定值之后会造成物理器件的永久性损坏,从这个意义上说虽然两个互联之间的电缆还物理存在,但逻辑上两个互联是不存在了。
可以理解的是,本发明实施例中,连接位无效,说明该互联端口外面可能没有和其他端口发生物理上的互联;也可能虽然有物理互联了,但是逻辑上不使能这两个端口之间的互联,即逻辑不连接。
本发明实施例中,还可以先确定哪些互联端口已经成功建立了连接。
具体的,在所述确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息之前,所述方法还包括:
通过访问所述当前芯片节点的互联端口的端口资源寄存器的端口地址,读取每一个所述当前芯片节点的互联端口所对应的端口资源寄存器的连接标识是否为有效;其中,所述连接标识用于指示所述当前芯片节点的互联端口与其它芯片节点的互联端口是否成功建立连接关系;
若为有效,则确定该互联端口已经与其它芯片节点成功建立连接。
实际使用中,本发明实施例中的软件通过访问当前芯片节点的节点资源地址Local_Port_Address[port_id],读取当前芯片节点的每一个互联端口对应的端口资源寄存器Port_Register[Port_ID],其中,ID值为该互联端口的port_id。之后根据其连接标识例如“成功连接标志位”是否有效,得到并存储当前芯片节点中所有已建立连接的互联端口信息。
可以理解的是,成功连接标志位有效,则表征该互联端口与其它芯片节点的互联端口成功建立连接,否则,则表征该互联端口未与其它芯片节点的互联端口成功建立连接。
其中,存储的互联端口信息可以如下:
第x层第y序号芯片中已建立连接的互联端口数量:N;
第x层第y序号芯片中已建立连接的N个互联端口ID值的集合:{端口m,端口w,…};
可以理解的是,N小于或等于该芯片节点中提供的互联端口个数。“第x层第y序号”表示当前芯片节点在拓扑结构中的位置。
存储如上信息后,本发明实施例中,可以设置变量“最后一层”的值为0。可以理解的是,用该变量来表征是否遍历到最后一层。
可以理解的是,已经成功建立了连接关系的互联端口有可能已经遍历过,因此,本发明实施例中,可以确定哪些互联端口未被遍历。
本发明实施例中,所述当前芯片节点的互联端口中未遍历过的互联端口的判断过程包括:
确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息;
判断是否存储有所述已经建立连接的互联端口所对应的互联端口对连接信息;
若未存储,则确认该互联端口为未遍历过的互联端口;
记录所述未遍历过的互联端口的互联端口信息。
实际使用中,搜索已存储的所有已确认的互联端口对连接信息,判断当前芯片节点前述所获得的已建立连接的互联端口信息中的每一个互联端口对应的互联端口对连接信息是否已经存在。如果已经存在,则表示已确认,则不需要在本层序号再进行确认;否则需进一步确认这些互联端口对应的互联端口对连接信息,这些互联端口即为当前芯片节点的互联端口中未遍历过的互联端口。
本申请实施例中,将每一个所述当前芯片节点的如下四个信息作为互联端口对中的参数值组成互联端口对连接信息:
一、当前芯片节点的互联端口的互联端口信息中的端口ID;
二、当前芯片节点的节点资源寄存器的拓扑位置信息;
三、当前芯片节点的互联端口连接的其它芯片节点的互联端口的互联端口信息中的端口ID;
四、当前芯片节点的互联端口连接的其它芯片节点的节点资源寄存器中的拓扑位置信息。
本发明实施例中,每一个互联端口对连接信息的表达均可以包括如下内容:
第x层第y序号芯片的互联端口K与第u层第v序号芯片的互联端口P连接。其中,确认表征已经获取该互联端口对连接信息。
过滤掉已经存在对应互联端口对连接信息的互联端口后,软件获得并存储已建立连接但需确定互联端口对连接信息的互联端口的信息:
第x层第y序号芯片中已建立连接但需确定互联端口对连接信息的互联端口数量:M;
第x层第y序号芯片中已建立连接的需确定互联端口对连接信息的互联端口的M个互联端口ID值的集合:{端口r,端口t,…};
其中,M小于或等于前述互联端口数量N。
可以理解的是,如果上述需确认互联端口对连接信息的端口数(M)为0,软件设变量“最后一层”的值为1,执行步骤S700,否则执行步骤S600。
本发明实施例中,所述拓扑位置信息还包括拓扑遍历标识,在所述将芯片集群中的一个芯片节点作为当前芯片节点后,所述方法还包括:
将所述当前芯片节点的节点资源寄存器中的拓扑遍历标识设置为有效;
在所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息后,所述方法还包括:
如果未保存有所述拓扑位置信息,则将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
可以理解的是,如果未保存有所述拓扑位置信息,则表征与当前芯片节点相连接的其它芯片节点未被遍历,因此,会将其它芯片节点中的节点资源器中拓扑遍历标识设置为有效。
本发明实施例中,所述对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历,包括:
依次获得各个当前芯片节点的互联端口的节点远程地址以及端口远程地址;
通过所述节点远程地址以及所述端口远程地址读取与所述当前芯片节点的互联端口相连接的其它芯片节点的互联端口对应的端口资源寄存器的端口ID以及该其它芯片节点的节点资源寄存器中的拓扑位置信息。
实际使用中,软件通过访问上述所获得的每一个互联端口的互联端口访问空间中的远程节点地址Remote_Node_Address[port_id]),读取与该互联端口相连的另外一个芯片的节点资源寄存器Node_Register。如果该节点资源寄存器Node_Register中的“位置有效标志位”为无效,则将该节点资源寄存器Node_Register的位置值中的“层级”设为前述变量“当前层级”值+1,位置值中的“序号”为变量“下一层级序号”的值,同时置该芯片节点的节点资源寄存器Node_Register的“位置有效标志位”为有效。将变量“下一层级序号”加1。
需要说明的是,上述所有节点资源寄存器Node_Register的位置值中的“层级”的最终值都需记录,当任何一个上述的“层级”的值都不大于变量“当前层级”时,则软件将变量“最后一层”设为1;可以理解的是,变量“最后一层”为1时,可以表征当前芯片节点已经遍历到芯片集群中的最后一层。
S600、利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
本发明实施例中,互联端口对信息用来表征当前芯片节点的互联端口和其它芯片节点的互联端口相连接的具体拓扑信息。例如,包括有当前芯片节点以及与其相连接的芯片节点的层级、序号、互联端口ID等信息。实际使用中,获得并存储前述所确定的互联端口和与之相连的芯片节点的层级及序号的关联信息集合作为互联端口对连接信息的集合:
{第x层第y序号芯片的互联端口K与第u层第v序号芯片连接,…};
可以理解的是,其中x,y,K在前述步骤已经确定;u,v即为尚且未确定的值。
本发明实施例中,可以通过访问所获得的每一个互联端口的互联端口访问空间中的远程端口地址Remote_Port_Address[port_id],读取与该互联端口相连的其它芯片节点的接收互联端口的端口寄存器Port_Register中所存储的该端口的ID值。该端口寄存器Port_Register中的ID值即为互联端口对连接信息中P值。则得到互联端口对连接信息可以为:
{第x层第y序号芯片的互联端口K与第u层第v序号芯片的互联端P连接,…}。
可以理解的是,利用前述转换规则对访问请求进行地址转换,来实现跨芯片节点的信息访问。
可以理解的是,与当前芯片节点的层级相同的其它芯片节点芯片也可以通过上述过程来获得每一个互联端口的互联端口对连接信息。
可以理解的是,本发明实施例中步骤S600与步骤S500的执行顺序不进行具体限定,可以同时执行,也可以先后执行。
S700、待与所述当前芯片节点所具有的层级相同的其他芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,返回执行所述对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历的步骤;
本发明实施例中,每一层芯片节点的互联端口的互联端口对连接信息被保存后,即可执行下一层芯片节点的遍历。其中,每一层在执行遍历时,依据每一层芯片节点中序号的先后顺序执行该过程。例如,当前芯片节点所具有的层级为3,序号为2,则将层级为3,序号为3的芯片节点作为当前芯片节点执行所述对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历的步骤。
实际使用中,软件判断变量当前层级序号数中的值是否为本层级的最后一个序号。如果是,表示当前层级处理结束。软件设变量“当前层级序号数”的值设为变量“下一层级序号”值减1,如果有下一层级则执行下一个层级的操作;否则存储本序号所获得的变量“最后一层”的值,同时将变量“当前层级序号”加1,将对应的芯片节点作为当前芯片节点来执行前述对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历的过程。
S800、当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
本发明实施例中,当所有芯片节点的互联端口所对应的互联端口对信息均被保存时,则表证芯片集群的拓扑枚举完成。
实际使用中,获得所有已建立连接的互联端口的互联端口对连接信息,每一个互联端口对连接信息可以包括:第x层第y序号芯片的互联端口K与第u层第v序号芯片的互联端口P连接。
可以看出,本发明实施例中,可以对芯片集群进行拓扑枚举,从任一芯片节点开始,直到芯片集群中全部建立连接的互联端口的互联端口对连接信息保存完成,进而实现数据在不同的芯片中的交换传输和数据快速处理。
为了便于理解,下面参见图3所示,图3为本发明实施例中需要进行拓扑枚举的芯片集群的结构示意图。
其中,为了简化起见,所有芯片节点为同构且具有4个互联端口以及前述芯片节点所设置的特征。其中,软件运行在芯片节点A内部。可以理解的是,即便每一个互联的互联端口对连接信息已经存在,但软件开始时也无法得到该信息,需要重新确定。
步骤1:
复位后,所有已建立连接的互联端口将自己对应的端口资源寄存器Port_register中的成功连接标志位设为有效。所有的芯片的节点资源寄存器Node_Register中的位置有效标志位都是无效的。
软件将芯片节点A记为当前芯片节点,记为第1层芯片,并设变量“当前层级”的值为1,变量“当前层级的序号数”的值为1,变量“当前层级序号”的值为1,变量“下一层级序号”的值为1。
软件通过访问当前芯片的节点资源地址Local_Node_Address,将该芯片节点的节点寄存器Node_Register的位置值中的“层级”设为第1层,位置值中的“序号”为第1序号;同时置其“位置有效标志位”为有效。
步骤2:
前芯片节点为第1层第1序号,即芯片节点A。
软件从第1层第1序号芯片即步骤1中的芯片节点A开始扫描。
在本发明实施例中,芯片节点A中4个互联端口中只有2个是已成功建立连接的,且软件在本步骤读各自的ID值后,已知是端口2和端口3,因此软件获取并存储的芯片A已建立连接的互联端口的信息:
第1层第1序号芯片中已建立连接的互联端口数量:2;
第1层第1序号芯片中已建立连接的互联端口ID值的集合:{端口2,端口3};
软件设变量“最后一层“的值为0。来表征未到芯片集群中的最后一层。
步骤3:
由于第1层第1序号之前的芯片不存在,因此此刻没有任何已确认的互联端口对连接信息存在,所有上述已建立连接的互联端口即端口2和端口3需进一步确认相应的互联端口对连接信息。
因此软件获取并存储的芯片节点A已建立连接的需确定互联端口对连接信息的互联端口的信息:
第1层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口数量:2;
第1层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口的N个互联端口ID值的集合:{端口2,端口3};
步骤4:
软件对第1层第1序号芯片的每一个已建立连接的互联发送端口中未确认互联端口对连接信息的端口即互联端口2和互联端口3进行互联端口对连接信息中的层级确认。
软件分别读取与上述每一个互联端口相连的芯片的节点寄存器Node_Register。与第1层第1序号芯片端口3或端口2互联的芯片节点为芯片节点B和芯片节点C,它们的节点寄存器Node_Register中的位置有效标志位都是无效的。
软件从芯片节点A将芯片节点B的节点寄存器Node_Register的位置值中的“层级”设为变量“当前层级值+1”,即“第2层”,序号为变量“下一层级序号值”,即第1序号,同时置其位置有效标志位为有效,且变量“下一层级序号加1”,即为2。
软件从芯片节点A将芯片节点C的节点寄存器Node_Register的位置值中的“层级”设为变量“当前层级值+1”,即“第2层”,序号为变量“下一层级序号值”,即第2序号,同时置其位置有效标志位为有效,且变量“下一层级序号加1”,即为3。
此时,由于对下一层级芯片节点执行了写入拓扑位置信息的操作,因此变量“最后一层”保持为0。
软件获得并存储以下信息:
第1层第1序号芯片的互联端口3与第2层第1序号芯片连接;
第1层第1序号芯片的互联端口2与第2层第2序号芯片连接;
软件再分别读取与上述每一个互联端口相连的其它芯片节点的互联接收端口的端口寄存器Port_Register的值,获得并存储第1层第1序号芯片节点的互联端口对连接信息:
第1层第1序号芯片的互联端口3与第2层第1序号芯片的互联端口0连接;
第1层第1序号芯片的互联端口2与第2层第2序号芯片的互联端口0连接;
如上所述,软件此时获得并存储以下信息:
变量“最后一层”为0。
步骤5:
由于第1层芯片节点的当前层级的序号数的值为1,因此对第1层芯片的操作到此结束。设变量“当前层级序号数”的值设为变量“下一层级序号值减1”,即3-1=2,跳到步骤6。
步骤6:
由于第1层所有序号芯片节点中对应的变量“最后一层”的值都是0,软件判断当前层级不是最后一个层级,因此将变量“当前层级”的值加1即变为2,变量“当前层级序号”设为1,变量“下一层级序号”设为1,将芯片节点B作为当前芯片节点,返回步骤2,执行下一层级在本实施例中即第2层的操作。
软件返回步骤2,此时当前芯片节点为第2层级第1序号,即芯片节点B。
软件从第2层第1序号芯片,即芯片B开始扫描。
在本发明实施例中,芯片节点B中4个互联端口中有4个是已建立连接的,因此软件获取并存储的芯片B已建立连接的互联端口的信息包括:
第2层第1序号芯片中已建立连接的互联端口数量:4;
第2层第1序号芯片中已建立连接的互联端口ID值的集合:{端口0,端口1,端口2,端口3};
软件设变量“最后一层“的值为0。
步骤3(第2层级第1序号):
软件通过搜索已存储的所有第2层第1序号之前的已确认的互联端口对连接信息,发现第2层第1序号芯片互联端口0对应的互联端口对连接信息已经存在,不需要在本层本序号进行确认。而第2层第1序号芯片的互联端口1、互联端口2和互联端口3的互联端口对连接信息不存在,需进一步确认。
因此软件获取并存储的芯片节点B已建立连接的需确定互联端口对连接信息的互联端口的信息:
第2层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口数量:3;
第2层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口的互联端口ID值的集合:{端口1,端口2,端口3}。
步骤4(第2层级第1序号):
软件对第2层第1序号芯片节点的每一个已建立连接的互联发送端口中未确认互联端口对连接信息的的互联端口,在实施例中即互联端口1、互联端口2和互联端口3进行互联端口对连接信息中的芯片层级确认。
软件分别读取与这些互联端口相连的芯片,即芯片节点C、芯片节点D和芯片节点E的节点寄存器Node_Register。其中,芯片节点D和芯片节点E的节点寄存器Node_Register中的位置有效标志位都是无效的;而芯片C节点的节点寄存器Node_Register中的位置有效标志位已经是有效的且为第2层第2序号。
软件将芯片D的节点寄存器Node_Register的位置值中的层级设为变量“当前层级加1”,即“第3层,”序号为变量“下一层级序号值”,即“第1序号”,同时置其位置有效标志位为有效,且变量“下一层级序号加1”,即为2。
软件将芯片节点E的节点寄存器Node_Register的位置值中的层级设为变量“当前层级加1”,即“第3层”,序号为变量“下一层级序号值”,即第2序号,同时置其位置有效标志位为有效,且变量“下一层级序号”加1,即为3。
此时,由于对下一层级的节点寄存器执行了写入拓扑位置信息的过程,因此,变量“最后一层保持为0”。
软件获得并存储以下信息:
第2层第1序号芯片的互联端口1与第3层第2序号芯片连接;
第2层第1序号芯片的互联端口2与第2层第2序号芯片连接;
第2层第1序号芯片的互联端口3与第3层第1序号芯片连接;
软件再分别读取与上述每一个互联端口相连的其它芯片节点的互联接收端口的端口寄存器Port_Register的值,即可获得并存储第2层第1序号芯片的互联端口对连接信息:
第2层第1序号芯片的互联端口1与第3层第2序号芯片的互联端口3连接;
第2层第1序号芯片的互联端口2与第2层第2序号芯片的互联端口3连接;
第2层第1序号芯片的互联端口3与第3层第1序号芯片的互联端口0连接;
如上所述,软件获得并存储以下信息:
变量“最后一层”为0。
步骤5(第2层级第1序号):
由于第2层芯片节点的当前层级的序号数的值为2,而变量“当前层级序号”值为1,因此对第2层芯片的操作还未结束。
存储当前序号的最后一层变量值,变量“当前层级序号”的值加1,即1+1=2。将芯片节点C作为当前芯片节点,并返回步骤2。
步骤2(第2层级第2序号):
软件从第2层第2序号芯片节点,即芯片节点C开始扫描。
在本发明实施例中,第2层第1序号的芯片节点即芯片节点C中4个互联端口中有4个是已建立连接的,因此软件获取并存储的芯片节点C已建立连接的互联端口的信息包括:
第2层第1序号芯片中已建立连接的互联端口数量:4;
第2层第1序号芯片中已建立连接的互联端口ID值的集合:{端口0,端口1,端口2,端口3}。
步骤3(第2层级第1序号)。
软件通过搜索已存储的所有第2层第2序号之前的已确认的互联端口对连接信息,发现第2层第2序号芯片互联端口0和互联端口3对应的互联端口对连接信息已经存在,不需要在此次遍历中进行确认。而第2层第2序号芯片的互联端口1和互联端口2的互联端口对连接信息不存在,需要确认。
因此软件获取并存储的芯片C已建立连接的需确定互联端口对连接信息的互联端口的信息:
第2层第2序号芯片中已建立连接的需确定互联端口对连接信息的互联端口数量:2;
第2层第2序号芯片中已建立连接的需确定互联端口对连接信息的互联端口的互联端口ID值的集合:{端口1,端口2}。
步骤4(第2层级第2序号):
软件对第2层第2序号芯片节点的每一个已建立连接的互联发送端口中未确认互联端口对连接信息的互联端口即互联端口1和互联端口2的互联端口对连接信息中的芯片层级确认。
软件分别读取与这些互联端口相连的芯片节点,即芯片节点D和芯片节点E的节点寄存器Node_Register,这时它们的节点寄存器Node_Register中的位置有效标志位已经设置为有效,且分别为第3层第1序号和第3层第2序号。
软件获得并存储以下信息:
第2层第2序号芯片的互联端口1与第3层第1序号芯片连接;
第2层第2序号芯片的互联端口2与第3层第2序号芯片连接;
软件再分别通过访问第2层第2序号芯片节点有效互联发送端口的互联端口访问空间中的远程节点地址Remote_Node_Address[1]和远程节点地址Remote_Node_Address[2]地址(即互联端口1和互联端口2),去读取与该互联端口相连的互联接收端口的端口寄存器Port_Register的值,即可获得并存储第2层第2序号芯片的互联端口对连接信息:
第2层第2序号芯片的互联端口1与第3层第1序号芯片的互联端口2连接;
第2层第2序号芯片的互联端口2与第3层第2序号芯片的互联端口0连接;
如上所述,软件获得并存储以下信息:
变量“最后一层”为0。
步骤5(第2层级第2序号):
由于第2层芯片节点的“当前层级的序号数”变量值为2,而变量“当前层级序号”值为2,因此对第2层芯片的操作到此结束。存储本序号所获得的变量“最后一层”的值,同时“当前层级序号”加1,执行步骤6。
步骤6(第2层级第2序号)。
由于第2层所有序号芯片获得的变量最后一层”的值都是0,软件判断当前层级不是最后一个层级,变量“当前层级”加1,即变为3,变量“当前层级序号”设为1,变量“下一层级序号”设为1,将第3层第1序号的芯片节点作为当前芯片节点,返回步骤2。
步骤2(第3层级第1序号):
软件从第3层第1序号芯片节点即芯片节点D开始扫描。
在本例中,第3层第1序号的芯片节点即芯片D中4个互联端口中有3个是已建立连接的,因此软件获取并存储的芯片D已建立连接的互联端口的信息包括:
第3层第1序号芯片中已建立连接的互联端口数量:3
第3层第1序号芯片中已建立连接的互联端口ID值的集合:{端口0,端口1,端口2}
软件设变量“最后一层“的值为0。
步骤3(第3层级第1序号):
软件通过搜索已存储的所有第3层第1序号之前的芯片节点的已确认的互联端口对连接信息,发现第3层第1序号芯片互联端口0和互联端口2对应的互联端口对连接信息已经存在,不需要在本芯片节点作为当前芯片节点时进行确认。而第3层第1序号芯片的互联端口1的互联端口对连接信息不存在,需进一步确认。
因此软件获取并存储的芯片B已建立连接的需确定互联端口对连接信息的互联端口的信息:
第3层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口数量:1;
第3层第1序号芯片中已建立连接的需确定互联端口对连接信息的互联端口的互联端口ID值的集合:{端口1};
步骤4(第3层级第1序号):
软件对第3层第1序号芯片的每一个已建立连接的互联发送端口中未确认互联端口对连接信息的的互联端口1的互联端口对连接信息中的芯片层级确认。
软件分别读取与这些互联端口相连的芯片节点E的Node_Register。芯片节点E的Node_Register中的位置有效标志位是有效的且为第3层第2序号。
显然,由于与其连接的其它芯片节点的拓扑位置信息均有写入,因此,变量“最后一层”设置为1。此时,软件获得并存储以下信息:
第3层第1序号芯片的互联端口1与第3层第2序号芯片连接。
软件再分别通过访问第3层第1序号芯片节点有效互联发送端口的互联端口访问空间中的远程节点地址Remote_Node_Address[1]地址(即互联端口1),去读取与该互联端口相连的互联接收端口的端口寄存器Port_Register的值,即可获得并存储第3层第1序号芯片的互联端口对连接信息:
第3层第1序号芯片的互联端口1与第3层第2序号芯片的互联端口1连接。
如上所述,软件获得并存储以下信息:
变量“最后一层”为1。
步骤5(第3层级第1序号):
由于第3层芯片节点的当前层级的序号数变量值为2,而变量“当前层级序号“值为1,因此对第3层芯片的操作还未结束。存储当前序号的变量值“最后一层”,设变量“当前层级序号”的值加1,即1+1=2。跳到步骤2。
步骤2(第3层级第2序号)。
软件从第3层第2序号芯片节点(即芯片节点E)开始扫描。
在本例中,第3层第2序号的芯片(即芯片E)中4个互联端口中有3个是已建立连接的,因此软件获取并存储的芯片E已建立连接的互联端口的信息包括:
第3层第2序号芯片中已建立连接的互联端口数量:3;
第3层第2序号芯片中已建立连接的互联端口ID值的集合:{端口0,端口1,端口2};
软件设变量“最后一层”的值为0。
步骤3(第3层级第2序号):
软件通过搜索已存储的所有第3层第2序号之前的芯片节点的已确认的互联端口对连接信息,发现第3层第2序号芯片节点的互联端口0、互联端口2和互联端口3对应的互联端口对连接信息已经存在,不需要在本层本序号进行确认。即不存在任何需要确认互联端口对连接信息的端口。
由于不需要再进行互联端口对连接信息确认,因此,变量“最后一层”的值设为1,跳到步骤5。
步骤5(第3层级第2序号):
由于第3层芯片节点的当前层级的序号数变量值为2,而变量“当前序号“值为2,因此对第3层芯片的操作到此结束。存储本序号所获得的变量“最后一层”的值,同时“当前层级序号”加1,跳到步骤6。
步骤6(第3层级第2序号):
由于第3层所有序号芯片节点对应的变量“最后一层”的值都是1,软件判断当前层级是最后一个层级,跳到步骤7。
步骤7:
软件获得所有已建立连接的互联端口的互联端口对连接信息,拓扑结构枚举完成。
本例中,芯片集群的全部芯片节点得到的全部8个互联端口对连接信息如下:
第1层第1序号芯片的互联端口3与第2层第1序号芯片的互联端口0连接;
第1层第1序号芯片的互联端口2与第2层第2序号芯片的互联端口0连接;
第2层第1序号芯片的互联端口1与第3层第2序号芯片的互联端口3连接;
第2层第1序号芯片的互联端口2与第2层第2序号芯片的互联端口3连接;
第2层第1序号芯片的互联端口3与第3层第1序号芯片的互联端口0连接;
第2层第2序号芯片的互联端口1与第3层第1序号芯片的互联端口2连接;
第2层第2序号芯片的互联端口2与第3层第2序号芯片的互联端口0连接;
第3层第1序号芯片的互联端口1与第3层第2序号芯片的互联端口1连接。
至此,枚举完成。将其作为该芯片集群的拓扑结构进行保存。
可以看出,本申请实施例中,可以对芯片集群的拓扑结构进行枚举,进而实现数据在不同的芯片中的交换传输和数据快速处理。
与前述方法相对应的,本发明实施例中还提供了一种芯片集群的拓扑结构的枚举装置。
参见图4,图4是本发明实施例提供的一种芯片集群的拓扑结构的枚举装置的结构示意图。
所述枚举装置包括:
确定模块1,用于将芯片集群中的一个芯片节点作为当前芯片节点;
设置模块2,用于将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
遍历模块3,用于对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
拓扑位置信息确定模块4,用于判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;如果是,则触发信息生成模块;如果否,则触发拓扑位置信息写入模块;
拓扑位置信息写入模块5,用于将当前芯片节点具有的层级的下一层级写入所述未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其他芯片节点的节点资源寄存器中;
信息生成模块6,用于利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
返回模块7,用于待与所述当前芯片节点所具有的层级相同的其他芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,再次触发所述遍历模块;
保存模块8,用于当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
在一些实施例中,所述拓扑位置信息还包括拓扑遍历标识,在所述将芯片集群中的一个芯片节点作为当前芯片节点后,所述装置还包括标识设置模块,具体用于:
将所述当前芯片节点的节点资源寄存器中的拓扑遍历标识设置为有效;
在所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息后,所述方法还包括:
如果未保存有所述拓扑位置信息,则将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
在一些实施例中,所述当前芯片节点的互联端口中未遍历过的互联端口的判断过程包括:
确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息;
判断是否存储有所述已经建立连接的互联端口所对应的互联端口对连接信息;
若未存储,则确认该互联端口为未遍历过的互联端口;
记录所述未遍历过的互联端口的互联端口信息。
在一些实施例中,所述装置还包括连接确认模块,具体用于:
通过访问所述当前芯片节点的互联端口的端口资源寄存器的端口地址,读取每一个所述当前芯片节点的互联端口所对应的端口资源寄存器的连接标识是否为有效;其中,所述连接标识用于指示所述当前芯片节点的互联端口与其它芯片节点的互联端口是否成功建立连接关系;
若为有效,则确定该互联端口已经与其它芯片节点成功建立连接。
在一些实施例中,所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,包括:
判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中的拓扑遍历标识是否为有效,如果为有效,则确定节点资源寄存器中保存有拓扑位置信息,否则确定节点资源寄存器中未保存有拓扑位置信息;
则所述方法还包括:在确定节点资源寄存器中未保存有拓扑位置信息时,将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
在一些实施例中,每一个芯片节点的互联端口的系统资源访问空间中还设置有节点远程地址以及端口远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的请求时,将该请求中的地址转换成该芯片节点的节点资源地址或该芯片节点的节点远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的互联端口的请求时,将该请求中的地址转换成该芯片节点的端口资源地址或该芯片节点的端口远程地址。
在一些实施例中,所述对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历,包括:
依次获得各个当前芯片节点的互联端口的节点远程地址以及端口远程地址;
通过所述节点远程地址以及所述端口远程地址读取与所述当前芯片节点的互联端口相连接的其它芯片节点的互联端口对应的端口资源寄存器的端口ID以及该其它芯片节点的节点资源寄存器中的拓扑位置信息。
在一些实施例中,所述利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息包括:
将每一个所述当前芯片节点的如下四个信息作为互联端口对中的参数值组成互联端口对连接信息:
一、当前芯片节点的互联端口的互联端口信息中的端口ID;
二、当前芯片节点的节点资源寄存器的拓扑位置信息;
三、当前芯片节点的互联端口连接的其它芯片节点的互联端口的互联端口信息中的端口ID;
四、当前芯片节点的互联端口连接的其它芯片节点的节点资源寄存器中的拓扑位置信息。
在一些实施例中,所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息判断过程包括:
判断各底层节点芯片的互联端口是否均被遍历;
若是,则确定所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息。
需要说明的是,装置实施例中各个模块的实现过程可以参照前述方法实施例中的各个步骤,再此不进行赘述。
本发明实施例中,可以对芯片集群进行拓扑枚举,从任一芯片节点开始,直到芯片集群中全部建立连接的互联端口的互联端口对连接信息保存完成,进而实现数据在不同的芯片中的交换传输和数据快速处理。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (10)

1.一种芯片集群的拓扑结构的枚举方法,其特征在于,包括:
将芯片集群中的一个芯片节点作为当前芯片节点;
将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;
如果未保存有所述拓扑位置信息,则将当前芯片节点具有的层级的下一层级写入所述未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其它芯片节点的节点资源寄存器中;
利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
待与所述当前芯片节点所具有的层级相同的其它芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,返回执行所述对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历的步骤;
当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
2.根据权利要求1所述的枚举方法,其特征在于,所述拓扑位置信息还包括拓扑遍历标识,在所述将芯片集群中的一个芯片节点作为当前芯片节点后,所述方法还包括:
将所述当前芯片节点的节点资源寄存器中的拓扑遍历标识设置为有效;
在所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息后,所述方法还包括:
如果未保存有所述拓扑位置信息,则将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
3.根据权利要求1所述的枚举方法,其特征在于,所述当前芯片节点的互联端口中未遍历过的互联端口的判断过程包括:
确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息;
判断是否存储有所述已经建立连接的互联端口所对应的互联端口对连接信息;
若未存储,则确认该互联端口为未遍历过的互联端口;
记录所述未遍历过的互联端口的互联端口信息。
4.根据权利要求3所述的枚举方法,其特征在于,在所述确定所述当前芯片节点中已经建立连接的互联端口的互联端口信息之前,所述方法还包括:
通过访问所述当前芯片节点的互联端口的端口资源寄存器的端口地址,读取每一个所述当前芯片节点的互联端口所对应的端口资源寄存器的连接标识是否为有效;其中,所述连接标识用于指示所述当前芯片节点的互联端口与其它芯片节点的互联端口是否成功建立连接关系;
若为有效,则确定该互联端口已经与其它芯片节点成功建立连接。
5.根据权利要求1所述的枚举方法,其特征在于,所述确定本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,包括:
判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中的拓扑遍历标识是否为有效,如果为有效,则确定节点资源寄存器中保存有拓扑位置信息,否则确定节点资源寄存器中未保存有拓扑位置信息;
则所述方法还包括:在确定节点资源寄存器中未保存有拓扑位置信息时,将所述未保存有拓扑位置信息的节点资源寄存器中的拓扑遍历标识设置为有效。
6.根据权利要求1所述的枚举方法,其特征在于,每一个芯片节点的互联端口的系统资源访问空间中还设置有节点远程地址以及端口远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的请求时,将该请求中的地址转换成该芯片节点的节点资源地址或该芯片节点的节点远程地址;
其中,当任一芯片节点接收到任一互联端口发送的访问芯片节点的互联端口的请求时,将该请求中的地址转换成该芯片节点的端口资源地址或该芯片节点的端口远程地址。
7.根据权利要求6所述的枚举方法,其特征在于,所述对所述当前芯片节点的互联端口中未遍历过的互联端口进行依次遍历,包括:
依次获得各个当前芯片节点的互联端口的节点远程地址以及端口远程地址;
通过所述节点远程地址以及所述端口远程地址读取与所述当前芯片节点的互联端口相连接的其它芯片节点的互联端口对应的端口资源寄存器的端口ID以及该其它芯片节点的节点资源寄存器中的拓扑位置信息。
8.根据权利要求6所述的枚举方法,其特征在于,所述利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息包括:
将每一个所述当前芯片节点的如下四个信息作为互联端口对中的参数值组成互联端口对连接信息:
一、当前芯片节点的互联端口的互联端口信息中的端口ID;
二、当前芯片节点的节点资源寄存器的拓扑位置信息;
三、当前芯片节点的互联端口连接的其它芯片节点的互联端口的互联端口信息中的端口ID;
四、当前芯片节点的互联端口连接的其它芯片节点的节点资源寄存器中的拓扑位置信息。
9.根据权利要求1所述的枚举方法,其特征在于,保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息判断过程包括:
判断各底层节点芯片的互联端口是否均被遍历;
若是,则确定已保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息。
10.一种芯片集群的拓扑结构的枚举装置,其特征在于,包括:
确定模块,用于将芯片集群中的一个芯片节点作为当前芯片节点;
设置模块,用于将所述当前芯片节点具有的层级确定为第一层,将所述当前芯片节点的序号设置为第一个,将所述当前芯片节点的层级和序号写入所述当前芯片节点的节点资源寄存器中;
遍历模块,用于对所述当前芯片节点的互联端口中未遍历过的互联端口依次进行遍历;
拓扑位置信息确定模块,用于判断本次遍历的各互联端口所连接的其它芯片节点的节点资源寄存器中是否保存有拓扑位置信息,其中,所述拓扑位置信息至少包括芯片节点的层级及序号;如果是,则触发信息生成模块;如果否,则触发拓扑位置信息写入模块;
拓扑位置信息写入模块,用于将当前芯片节点具有的层级的下一层级写入未保存有拓扑位置信息的节点资源寄存器中,并根据遍历顺序为所述未保存有位置信息的所述其它芯片节点设置序号且将所述序号分别写入对应的所述其它芯片节点的节点资源寄存器中;
信息生成模块,用于利用每一个所述当前芯片节点的互联端口的互联端口信息以及与该互联端口相连的其它芯片节点的互联端口的互联端口信息组成互联端口对连接信息,保存所述互联端口对连接信息;
返回模块,用于待与所述当前芯片节点所具有的层级相同的其它芯片节点均已遍历时,分别将本次遍历后写入所述序号的芯片节点作为当前芯片节点,再次触发所述遍历模块;
保存模块,用于当保存有所述芯片集群中全部芯片节点中每一个互联端口对应的互联端口对连接信息时,将各个互联端口所对应的互联端口对连接信息确定为芯片集群的拓扑结构。
CN202011502920.5A 2020-12-17 2020-12-17 芯片集群的拓扑结构的枚举方法和装置 Active CN112688805B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011502920.5A CN112688805B (zh) 2020-12-17 2020-12-17 芯片集群的拓扑结构的枚举方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011502920.5A CN112688805B (zh) 2020-12-17 2020-12-17 芯片集群的拓扑结构的枚举方法和装置

Publications (2)

Publication Number Publication Date
CN112688805A CN112688805A (zh) 2021-04-20
CN112688805B true CN112688805B (zh) 2023-02-28

Family

ID=75449529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011502920.5A Active CN112688805B (zh) 2020-12-17 2020-12-17 芯片集群的拓扑结构的枚举方法和装置

Country Status (1)

Country Link
CN (1) CN112688805B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5353412A (en) * 1990-10-03 1994-10-04 Thinking Machines Corporation Partition control circuit for separately controlling message sending of nodes of tree-shaped routing network to divide the network into a number of partitions
US8140545B2 (en) * 2006-12-28 2012-03-20 Sap Ag Data organization and evaluation using a two-topology configuration
US10671581B2 (en) * 2017-01-27 2020-06-02 Sap Se Hierarchical computations of nodes having non-tree topologies in relational database management systems
CN107104824B (zh) * 2017-03-31 2019-12-06 新华三信息技术有限公司 一种网络拓扑确定方法和装置
CN109669824A (zh) * 2018-11-20 2019-04-23 中科曙光信息产业成都有限公司 多fpga拓扑的互联检测与延时测量方法
CN111683014B (zh) * 2020-05-26 2022-02-15 中国人民解放军国防科技大学 一种高速互连网络的路由路径追踪方法及系统

Also Published As

Publication number Publication date
CN112688805A (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
US6915340B2 (en) System and method for deriving future network configuration data from the current and previous network configuration data
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及系统
US8018861B2 (en) Method and device for allocating at least one routing identifier to at least one bridge in a network
EP2237196A1 (en) Tree-based node insertion method and memory device
US6665274B1 (en) Communication control unit
US6870818B1 (en) Method for identifying devices in a communication network and device for implementing said method
US6779052B2 (en) Electronic apparatus, system and method for controlling communication among devices coupled through different interfaces
CN115102780B (zh) 数据传输方法、相关装置、系统及计算机可读存储介质
JP3449313B2 (ja) 機器情報収集方法、機器制御装置およびブリッジ
CN112688805B (zh) 芯片集群的拓扑结构的枚举方法和装置
JP4890916B2 (ja) ネットワークに接続された通信装置の管理方法、機器認識装置及びコンピュータプログラム
US6636925B1 (en) Bus interface circuit preparation apparatus and recording medium
US6920593B2 (en) Logical verification apparatus and method for memory control circuit
US6917970B2 (en) Method and program code for identifying new nodes on a bus following a reset
US6901466B2 (en) Apparatus for extending the available number of configuration registers
EP1351451A2 (en) Local bus bridge
US8195667B2 (en) Bit string search apparatus, search method, and program
US6243775B1 (en) System for extending the available number of configuration registers
JP2003174460A (ja) データ通信方法及びその実施システム並びにその処理プログラム
CN112632886B (zh) 检查总线验证的方法与装置以及电子设备和存储介质
US20240015038A1 (en) Control method, non-transitory computer-readable recording medium storing control program, and information processing device
JP3183398B2 (ja) 資源構成情報管理方式
CN113515467A (zh) 一种用于台区智能融合终端的单总线rom地址搜索算法
WO2000054160A1 (en) Method for extending the available number of configuration registers
JPH022747A (ja) 回収フレーム認識装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 200120 room a-522, 188 Yesheng Road, Lingang xinpian District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Patentee after: Shanghai Suiyuan Technology Co.,Ltd.

Address before: Room 906, no.800, Huanhu West 2nd Road, Nanhui new town, Pudong New Area, Shanghai, 201306

Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.