一种多芯片互联时跨芯片路由的方法 |
|||||||
申请号 | CN202410141523.1 | 申请日 | 2024-02-01 | 公开(公告)号 | CN118018478A | 公开(公告)日 | 2024-05-10 |
申请人 | 北京清微智能科技有限公司; | 发明人 | 邹玥; 周昱; 解宇; 钱屹伟; 胡昭明; 贾淑芸; 欧阳鹏; | ||||
摘要 | 本 发明 属于芯片通信技术领域,具体公开了一种多芯片互联时跨芯片路由的方法。该方法提出只使用一套机制实现 节点 间的路由,不仅有效地减少了由于片上和片间的分层路由造成的查表的开销,而且解决了上层 软件 在芯片互联时难以掌握节点资源分配情况的难点,此外,还使得上层软件能够直接监控互联后多芯片节点间的通信带宽和节点内的实时算 力 。 | ||||||
权利要求 | 1.一种多芯片互联时跨芯片路由的方法,其特征在于,包括步骤: |
||||||
说明书全文 | 一种多芯片互联时跨芯片路由的方法技术领域[0001] 本发明属于芯片通信技术领域,具体涉及一种多芯片互联时跨芯片路由的方法。 背景技术[0002] 当前,在多芯片进行跨片通信时,多采用通过地址重映射的方式实现节点之间的寻址,即在多芯片组成的网络中,通过芯片地址和片内节点地址来对所有芯片中的节点进行编址,并在芯片实际运行时将源芯片中源节点发出的数据路由到目的芯片中目的节点上。 [0003] 这种方法通常需要分别定义芯片网络地址和芯片节点地址,从而使得源节点与目的节点需要通过片内和片间两层路由机制才能实现通信,这不仅使得传输数据在芯片节点之间发送或接受的位置在芯片网络的视角下不可见,难以从全局去控制芯片内节点的资源分配,还导致跨芯片通信时同时需要对芯片网络地址和芯片节点地址进行路由,造成路由开销较大。 发明内容[0004] 为了解决上述背景技术中提到的至少一个问题,本发明提出了提出了一种多芯片互联时跨芯片路由的方法。 [0005] 一种多芯片互联时跨芯片路由的方法,过程如下: [0006] 步骤S1,将芯片部署在互连网络中,该互连网络中的芯片互连需要满足拓扑结构; [0007] 步骤S2,对互连网络中的所有芯片内的所有通信节点标记物理ID,具体规则为: [0008] 首先,选取一个节点为参考物理节点,如果是二维拓扑则标记它为物理坐标(0,0),如果是三维拓扑则标记它为物理坐标(0,0,0); [0009] 然后,标记其他节点相对此参考节点在拓扑上的坐标,如果是二维拓扑则标记xy坐标,如果是三维拓扑则标记xyz坐标。 [0010] 步骤S3,标记物理ID完成后,根据实际需求将互连网络中的一部分芯片中的一部分节点配置在一个计算任务中; [0011] 步骤S4,对配置在同一计算任务中不同芯片内的通信节点标记逻辑ID,具体规则为: [0012] 首先,选取一个节点为参考逻辑节点,如果是二维拓扑则标记它为逻辑坐标(0,0),如果是三维拓扑则标记它为逻辑坐标(0,0,0); [0013] 然后,标记其他节点相对此参考节点在拓扑上的坐标,如果是二维拓扑则标记xy坐标,如果是三维拓扑则标记xyz坐标。 [0015] 步骤S501,以目的节点在全局范围的物理ID,目的节点所在芯片的物理偏移量和源节点所在芯片的物理偏移量来描述请求ID,计算方法为: [0016] TargetId=DstRoutId+DstChipPhyOffset‑SrcChipPhyOffset [0017] 其中,TargetId为请求ID,DstRouteId为目的节点在其芯片内的本地物理ID,DstChipPhyOffset为目的节点所在芯片的物理偏移量,SrcChipPhyOffset为源节点所在芯片的物理偏移量; [0018] 步骤S502,计算出目的节点在其芯片内的本地物理ID,计算方法为: [0019] DstRouteId=DstPhyId‑DstChipPhyOffset [0020] 其中,DstRouteId为目的节点在其芯片内的本地物理ID,DstPhyId为目的节点在全局范围的物理ID,DstChipPhyOffset为目的节点所在芯片的物理偏移量; [0021] 步骤S503,将步骤S502的公式代入步骤S501得到请求ID的计算公式,计算方法为: [0022] TargetId=DstPhyId‑SrcChipPhyOffset [0023] 其中,TargetId为请求ID,DstPhyId为目的节点在全局范围的物理ID,SrcChipPhyOffset为源节点所在芯片的物理偏移量; [0024] 步骤S504,建立目的节点全局物理ID、目的节点逻辑ID、源节点全局物理ID和源节点逻辑ID之间的映射关系,具体映射关系为: [0025] DstPhyId=DstLogicId+(SrcPhyId‑SrcLogicId) [0026] 其中,DstPhyId为目的节点全局物理ID,DstLogicId为目的节点逻辑ID,SrcPhyId为源节点全局物理ID,SrcLogicId为源节点逻辑ID; [0027] 步骤S505,将步骤S403的映射关系中DstPhyId代入步骤S402中的公式,可以计算得到以源、目的节点的逻辑ID,源芯片的物理偏移量以及源节点的物理ID为条件的请求ID通用公式,具体计算方法为: [0028] TargetId=DstLogicId‑SrcPhyId+SrcPhyId‑SrcChipPhyOffset[0029] 其中,TargetId为请求ID,DstLogicId为目的节点逻辑ID,SrcLogicId为源节点逻辑ID,SrcPhyId为源节点全局物理ID,SrcChipPhyOffset为源节点所在芯片的物理偏移量。 [0030] 传统的方法通常都需要区分主网和子网,但是区分主网络地址和子网地址并分别实现各自的路由的话,每一个负责片间路由的模块需要有能力承载所有组网内设备的地址,不仅会造成巨大的硬件开销,同时,也因为节点和节点之间的路径不确定,导致上层软件难以监控节点间的通信带宽和节点内的实时算力。 [0031] 本发明提出只使用一套机制实现节点间的路由,在进行网络部署时片内和片间的节点在路由和计算上都是对等的,有效地减少了由于片上和片间的分层路由造成的查表的开销;而且,由于节点被赋予了逻辑ID后可以直接根据逻辑ID以及源节点的物理地址及芯片的offset来确定在全局中寻址的TargetId,使得上层软件在组网后仍可掌握节点的资源分配情况,此外,因为节点的逻辑域已经确定且节点之间的路径更为耦合,因此上层软件能够直接监控互联后多芯片节点间的通信带宽和节点内的实时算力。 [0032] 步骤S6,源节点根据推导出的ID映射关系得到请求的ID,并根据请求ID的坐标来决定是否将该请求向下一级芯片进行转发,具体包括步骤: [0033] 步骤S601,统计源节点所在芯片X轴、Y轴和Z轴上的节点数量,分别记为N1、N2和N3; [0034] 步骤S602,解析出请求ID的xyz坐标,并设定大于当前该坐标值为正方向,小于当前该坐标值为负方向; [0035] 步骤S603,将解析出的xyz坐标与N1、N2、N3做比较来判断该请求是否落在源节点所在芯片内,并根据判断结果决定是否转发该请求; [0036] 具体判断和转发规则为: [0037] [0038] [0039] [0040] 如果请求ID的xyz坐标小于0,则将请求向该坐标值的负方向进行转发,相应地,xyz坐标值加上该芯片上X轴、Y轴、Z轴上的节点数量,并将原请求ID替换成新请求ID; [0041] 如果请求ID的xyz坐标大于等于0且小于该芯片上X轴、Y轴、Z轴上的节点数量,则不转发请求; [0042] 如果请求ID的xyz坐标大于该芯片上X轴、Y轴、Z轴上的节点数量,则将请求向该坐标值的正方向进行转发,相应地,xyz坐标值加上该芯片上X轴、Y轴、Z轴上的节点数量,并将原请求ID替换成新请求ID; [0043] 步骤S604,如果该请求落在源节点所在芯片内,则通过片内路由方法路由至最终的目的节点,否则将该请求转发至下一级芯片。 [0044] 步骤S7,下一级芯片接收到请求后,按照步骤S6中的步骤判断是否转发该请求,如果不转发,则该请求ID落在本芯片中,并通过片内路由方法路由至最终的目的节点,否则将该请求转发至下一级芯片。 [0045] 本发明提出了一种多芯片互联时跨芯片路由的方法,与现有的技术相比,具有以下有益效果: [0046] 该方法提出只使用一套机制实现节点间的路由,不仅有效地减少了由于片上和片间的分层路由造成的查表的开销,而且解决了上层软件在芯片互联仍难以掌握节点资源分配情况的难点,此外,还使得上层软件能够直接监控互联后多芯片节点间的通信带宽和节点内的实时算力。附图说明 [0047] 图1是本发明的流程示意图; [0048] 图2是本发明中是否转发请求的逻辑判断图。. 具体实施方式[0049] 为了使本发明的目的、特征能够更加的明显和易懂,下面通过实施例并结合附图对本技术方案进行详细说明。 [0050] 按照图1所示的流程,一种多芯片互联时跨芯片路由的方法, [0051] 具体实施过程如下: [0052] 步骤S1,将芯片部署在互连网络中,该互连网络中的芯片互连需要满足拓扑结构。 [0053] 可选地,拓扑结构包括二维mesh和torus以及三维mesh和torus的拓扑。 [0054] 步骤S2,对互连网络中的所有芯片内的所有通信节点标记物理ID,具体规则为: [0055] 首先,选取一个节点为参考物理节点,如果是二维拓扑则标记它为物理坐标(0,0),如果是三维拓扑则标记它为物理坐标(0,0,0)。 [0056] 然后,标记其他节点相对此参考节点在拓扑上的坐标,如果是二维拓扑则标记xy坐标,如果是三维拓扑则标记xyz坐标。 [0057] 步骤S3,标记物理ID完成后,根据实际需求将互连网络中的一部分芯片中的一部分节点配置在一个计算任务中。 [0058] 步骤S4,对配置在同一计算任务中不同芯片内的通信节点标记逻辑ID,具体规则为: [0059] 首先,选取一个节点为参考逻辑节点,如果是二维拓扑则标记它为逻辑坐标(0,0),如果是三维拓扑则标记它为逻辑坐标(0,0,0)。 [0060] 然后,标记其他节点相对此参考节点在拓扑上的坐标,如果是二维拓扑则标记xy坐标,如果是三维拓扑则标记xyz坐标。 [0061] 在实际的实施过程中,由于可能存在多个芯片内各有一部分节点被配置在同一计算任务中被使用,因此本发明对同一计算任务中不同芯片内的通信节点标记逻辑ID。 [0062] 步骤S5,标记需发送数据的通信节点为源节点,需接收数据的通信节点为目的节点,推导该计算任务中源节点向目的节点发送请求时的ID映射关系, [0063] 推导过程包括: [0064] 步骤S501,以目的节点在全局范围的物理ID,目的节点所在芯片的物理偏移量和源节点所在芯片的物理偏移量来描述请求ID,计算方法为: [0065] TargetId=DstRoutId+DstChipPhyOffset‑SrcChipPhyOffset [0066] 其中,TargetId为请求ID,DstRouteId为目的节点在其芯片内的本地物理ID,DstChipPhyOffset为目的节点所在芯片的物理偏移量,SrcChipPhyOffset为源节点所在芯片的物理偏移量; [0067] 步骤S502,计算出目的节点在其芯片内的本地物理ID,计算方法为: [0068] DstRouteId=DstPhyId‑DstChipPhyOffset [0069] 其中,DstRouteId为目的节点在其芯片内的本地物理ID,DstPhyId为目的节点在全局范围的物理ID,DstChipPhyOffset为目的节点所在芯片的物理偏移量; [0070] 步骤S503,将步骤S502的公式代入步骤S501得到请求ID的计算公式,计算方法为: [0071] TargetId=DstPhyId‑SrcChipPhyOffset [0072] 其中,TargetId为请求ID,DstPhyId为目的节点在全局范围的物理ID,SrcChipPhyOffset为源节点所在芯片的物理偏移量; [0073] 步骤S504,建立目的节点全局物理ID、目的节点逻辑ID、源节点全局物理ID和源节点逻辑ID之间的映射关系,具体映射关系为: [0074] DstPhyId=DstLogicId+(SrcPhyId‑SrcLogicId) [0075] 其中,DstPhyId为目的节点全局物理ID,DstLogicId为目的节点逻辑ID,SrcPhyId为源节点全局物理ID,SrcLogicId为源节点逻辑ID; [0076] 步骤S505,将步骤S403的映射关系中DstPhyId代入步骤S402中的公式,可以计算得到以源、目的节点的逻辑ID,源芯片的物理偏移量以及源节点的物理ID为条件的请求ID通用公式,具体计算方法为: [0077] TargetId=DstKogicId‑SrcLogicId+SrcPhyId‑SrcChipPhyOffset[0078] 其中,TargetId为请求ID,DstLogicId为目的节点逻辑ID,SrcLogicId为源节点逻辑ID,SrcPhyId为源节点全局物理ID,SrcChipPhyOffset为源节点所在芯片的物理偏移量。 [0079] 经过上述步骤,请求ID的映射关系已经推导完成,上述步骤是为了实现源节点不需要知道目的节点和目的芯片的物理ID信息就可以实现向目的节点发送请求。 [0080] 步骤S6,源节点根据推导出的ID映射关系得到请求的ID,并根据请求ID的坐标来决定是否将该请求向下一级芯片进行转发,具体包括步骤: [0081] 步骤S601,统计源节点所在芯片X轴、Y轴和Z轴上的节点数量,分别记为N1、N2和N3。 [0082] 步骤S602,解析出请求ID的xyz坐标,并设定大于当前该坐标值为正方向,小于当前该坐标值为负方向。 [0083] 步骤S603,将解析出的xyz坐标与N1、N2、N3做比较来判断该请求是否落在源节点所在芯片内,并根据判断结果决定是否转发该请求。 [0084] 具体判断和转发规则为: [0085] [0086] [0087] [0088] 如果请求ID的xyz坐标小于0,则将请求向该坐标值的负方向进行转发,相应地,xyz坐标值加上该芯片上X轴、Y轴、Z轴上的节点数量,并将原请求ID替换成新请求ID。 [0089] 如果请求ID的xyz坐标大于等于0且小于该芯片上X轴、Y轴、Z轴上的节点数量,则不转发请求。 [0090] 如果请求ID的xyz坐标大于该芯片上X轴、Y轴、Z轴上的节点数量,则将请求向该坐标值的正方向进行转发,相应地,xyz坐标值加上该芯片上X轴、Y轴、Z轴上的节点数量,并将原请求ID替换成新请求ID。 [0091] 步骤S604,如果该请求落在源节点所在芯片内,则通过片内路由方法路由至最终的目的节点,否则将该请求转发至下一级芯片。 [0092] 步骤S7,下一级芯片接收到请求后,按照步骤S6中的步骤判断是否转发该请求,如果不转发,则该请求ID落在本芯片中,并通过片内路由方法路由至最终的目的节点,否则将该请求转发至下一级芯片。 [0093] 至此,按照本发明公开的方法,已实施完一次本发明的工作过程。 [0094] 需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。 |