CN114328623A - 芯片***中的数据传输处理方法及相关装置 - Google Patents

芯片***中的数据传输处理方法及相关装置 Download PDF

Info

Publication number
CN114328623A
CN114328623A CN202111633371.XA CN202111633371A CN114328623A CN 114328623 A CN114328623 A CN 114328623A CN 202111633371 A CN202111633371 A CN 202111633371A CN 114328623 A CN114328623 A CN 114328623A
Authority
CN
China
Prior art keywords
sub
chip
data
destination
chips
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.)
Pending
Application number
CN202111633371.XA
Other languages
English (en)
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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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 Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN202111633371.XA priority Critical patent/CN114328623A/zh
Publication of CN114328623A publication Critical patent/CN114328623A/zh
Priority to PCT/CN2022/099777 priority patent/WO2023123902A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种芯片***中的数据传输处理方法及相关装置,该方法包括:源子芯片接收配置参数,并根据该配置参数配置预设的流输出表;该流输出表包括数据流的标识和该数据流的目的子芯片的标识;该源子芯片和该目的子芯片为芯片***包括的多个子芯片中的子芯片,该多个子芯片以预设的拓扑结构连接;该源子芯片执行第一数据处理任务得到输出数据;该源子芯片基于该流输出表将该输出数据生成多个数据包并发送,该数据包中包括该数据流的标识和该目的子芯片的标识。本申请能够实现芯片***中子芯片之间的高效数据传输,提高芯片***的处理性能。

Description

芯片***中的数据传输处理方法及相关装置
技术领域
本发明涉及通信技术领域,尤其涉及一种芯片***中的数据传输处理方法及相关装置。
背景技术
一个芯片***可以包括多个子芯片,每个子芯片都具备单独处理数据的功能,该多个子芯片以一定的拓扑连接以实现互相通信。并且,该多个子芯片可以通过模型并行的方式协同处理单个大型计算任务,以提高任务的处理效率。在协同处理任务的过程中,该多个子芯片之间需要频繁进行数据的交互传输,该数据传输的效率影响着整个芯片***的处理性能。
发明内容
本申请实施例公开了一种芯片***中的数据传输处理方法及相关装置,能够实现芯片***中子芯片之间的高效数据传输,提高芯片***的处理性能。
第一方面,本申请提供一种芯片***中的数据传输处理方法,该方法包括:
源子芯片接收配置参数,并根据前述配置参数配置预设的流输出表;前述流输出表包括数据流的标识和前述数据流的目的子芯片的标识;前述源子芯片和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
前述源子芯片执行第一数据处理任务得到输出数据;
前述源子芯片基于前述流输出表将前述输出数据生成多个数据包并发送,前述数据包中包括前述数据流的标识和前述目的子芯片的标识。
本申请中,通过提前配置源子芯片中的流输出表,使得源子芯片可以通过查询配置好的流输出表快速生成数据包并发送,提高了数据的发送效率,实现了芯片***中子芯片之间的高效数据传输,提高了芯片***的处理性能。
一种可能的实现方式中,前述流输出表还包括前述第一数据处理任务的标识、已发送前述数据流的数据包个数的指示信息和前述源子芯片中用于存储前述数据流包括的数据的起始地址中的一项或多项;前述数据包还包括前述第一数据处理任务的标识。
在本申请中,流输出表包括任务的标识可以用于区分不同的任务的信息,并且使得生成的数据包中也包括对应的任务标识,以指示数据包中的数据所属的任务。流输出表中包括的上述数据包的个数的指示信息和上述起始地址可以快速计算出待发送的数据的存储地址,从而可以快速获取数据打包发送。
一种可能的实现方式中,前述源子芯片基于前述流输出表将前述输出数据生成多个数据包并发送之前,还包括:前述源子芯片接收解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识,前述解除封锁数据包用于向前述源子芯片指示前述目的子芯片已做好接收前述数据流的准备。
在本申请中,目的子芯片做好接收数据的准备后向源子芯片发送解除封锁数据包,可以避免因目的子芯片没准备好而接收数据导致数据丢包等情况。
一种可能的实现方式中,前述源子芯片发送前述多个数据包,包括:前述源子芯片基于端口转发映射表发送前述多个数据包;其中,前述端口转发映射表包括前述目的子芯片的标识与发送端口的映射关系。
本申请中,通过查询端口转发映射表来确定数据包的发送端口,以实现数据包的快速传输。
一种可能的实现方式中,当前述数据流的目的子芯片为多个时,前述数据包包括前述多个目的子芯片的标识。
本申请中,数据包可以携带多个目的子芯片的标识,相比于现有的每个目的地都发送有一个数据包的情况,可以减少发送的数据包的数量,节省传输带宽。
一种可能的实现方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;当前述目的子芯片为前述子***的子芯片时,前述数据包还包括前述子***的标识。
本申请中,通过芯片子***的标识可以快速定位到数据包的目的地,提高数据传输的效率。
第二方面,本申请提供一种芯片***中的数据传输处理方法,该方法包括:
目的子芯片接收配置参数,并根据前述配置参数配置预设的流输入表,前述流输入表包括至少一个待接收的数据流标识;前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
前述目的子芯片在接收到数据包时,判断前述流输入表中是否包含前述数据包中的数据流标识;
当前述流输入表中包含前述数据包中的数据流标识时,存储前述数据包中的数据。
本申请中,通过提前配置目的子芯片中的流输入表,使得目的子芯片可以通过查询配置好的流输入表快速接收数据包进行处理,提高了数据的接收效率,实现了芯片***中子芯片之间的高效数据传输,提高了芯片***的处理性能。
一种可能的实施方式中,前述流输入表还包括前述第一数据处理任务的标识、已接收前述数据流的数据包个数的指示信息和前述目的子芯片中用于存储前述数据流包括的数据的起始地址中的一项或多项;前述数据包还包括前述第一数据处理任务的标识。
在本申请中,流输入表包括任务的标识可以用于区分不同的任务的数据包。流输出表中包括的上述数据包的个数的指示信息和上述起始地址可以快速计算出接收的数据包中数据的存储地址,从而可以快速实现数据存储。
一种可能的实施方式中,前述目的子芯片接收前述数据包之前,还包括:前述目的子芯片发送解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识和源子芯片的标识,前述解除封锁数据包用于向前述源子芯片指示前述目的子芯片已做好接收前述数据流的准备;前述源子芯片为前述芯片***中发送前述数据包的子芯片。
在本申请中,目的子芯片做好接收数据的准备后向源子芯片发送解除封锁数据包,可以避免因目的子芯片没准备好而接收数据导致数据丢包等情况。
一种可能的实施方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;前述数据包还包括前述子***的标识。
本申请中,通过芯片子***的标识可以快速定位到数据包的目的地,提高数据传输的效率。
第三方面,本申请提供一种芯片***中的数据传输处理方法,该方法包括:
控制器为源子芯片分配第一数据处理任务,前述第一数据处理任务执行完成后获得的数据以数据流的形式发往目的子芯片;前述控制器、前述源子芯片和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
前述控制器为前述数据流配置标识;
前述控制器向前述源子芯片发送前述数据流的标识和前述目的子芯片的标识;其中,前述数据流的标识和前述目的子芯片的标识用于关联存储在前述源子芯片的流输出表;前述流输出表为前述源子芯片发送数据的依据。
本申请通过控制器为源子芯片分配任务,并配置源子芯片的流输出表,使得源子芯片可以通过查询配置好的流输出表快速生成数据包并发送,提高了数据的发送效率,实现了芯片***中子芯片之间的高效数据传输,提高了芯片***的处理性能。
一种可能的实施方式中,前述方法还包括:
前述控制器为前述目的子芯片分配第二数据处理任务,前述第二数据处理任务基于前述第一数据处理任务执行完成后获得的数据执行;
前述控制器向前述目的子芯片发送前述数据流的标识;其中,前述数据流的标识用于存储在前述目的子芯片的流输入表中,前述流输入表为前述目的子芯片接收数据的依据。
本申请通过控制器为目的子芯片分配任务,并配置目的子芯片的流输入表,使得目的子芯片可以通过查询配置好的流输入表快速接收数据包进行处理,提高了数据的接收效率,实现了芯片***中子芯片之间的高效数据传输,提高了芯片***的处理性能。
一种可能的实施方式中,前述方法还包括:
前述控制器获取前述芯片***中子芯片之间的数据传输情况;
前述控制器基于前述数据传输情况为前述源子芯片生成调度信息,前述调度信息指示在前述源子芯片中将前述数据流发往前述目的子芯片的发送端口;
前述控制器向前述源子芯片发送前述调度信息。
本申请中,控制器基于整个芯片***的数据传输情况实现对数据包发送端口的调度,从而避免数据包从拥挤的路径传输,提高数据包传输的效率。
第四方面,本申请提供一种源子芯片,该源子芯片包括:
接收单元,用于接收配置参数;
配置单元,用于根据前述配置参数配置预设的流输出表;前述流输出表包括数据流的标识和前述数据流的目的子芯片的标识;前述源子芯片和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
执行单元,用于执行第一数据处理任务得到输出数据;
生成单元,用于基于前述流输出表将前述输出数据生成多个数据包,前述数据包中包括前述数据流的标识和前述目的子芯片的标识;
发送单元,用于发送前述多个数据包。
一种可能的实施方式中,前述流输出表还包括前述第一数据处理任务的标识、已发送前述数据流的数据包个数的指示信息和前述源子芯片中用于存储前述数据流包括的数据的起始地址中的一项或多项;
前述数据包还包括前述第一数据处理任务的标识。
一种可能的实施方式中,前述接收单元,还用于在前述生成单元基于前述流输出表将前述输出数据生成多个数据包之前,
接收解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识,前述解除封锁数据包用于向前述源子芯片指示前述目的子芯片已做好接收前述数据流的准备。
一种可能的实施方式中,前述发送单元具体用于:
基于端口转发映射表发送前述多个数据包;其中,前述端口转发映射表包括前述目的子芯片的标识与发送端口的映射关系。
一种可能的实施方式中,当前述数据流的目的子芯片为多个时,前述数据包包括前述多个目的子芯片的标识。
一种可能的实施方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;
当前述目的子芯片为前述子***的子芯片时,前述数据包还包括前述子***的标识。
第五方面,本申请提供一种目的子芯片,该目的子芯片包括:
接收单元,用于接收配置参数;
配置单元,用于根据前述配置参数配置预设的流输入表,前述流输入表包括至少一个待接收的数据流标识;前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
判断单元,用于在接收到数据包时,判断前述流输入表中是否包含前述数据包中的数据流标识;
存储单元,用于当前述流输入表中包含前述数据包中的数据流标识时,存储前述数据包中的数据。
一种可能的实施方式中,前述流输入表还包括前述第一数据处理任务的标识、已接收前述数据流的数据包个数的指示信息和前述目的子芯片中用于存储前述数据流包括的数据的起始地址中的一项或多项;
前述数据包还包括前述第一数据处理任务的标识。
一种可能的实施方式中,前述目的子芯片还包括发送单元,用于在前述接收单元接收前述数据包之前,
发送解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识和源子芯片的标识,前述解除封锁数据包用于向前述源子芯片指示前述目的子芯片已做好接收前述数据流的准备;前述源子芯片为前述芯片***中发送前述数据包的子芯片。
一种可能的实施方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;
前述数据包还包括前述子***的标识。
第六方面,本申请提供一种控制器,该控制器包括:
分配单元,用于为源子芯片分配第一数据处理任务,前述第一数据处理任务执行完成后获得的数据以数据流的形式发往目的子芯片;前述控制器、前述源子芯片和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
配置单元,用于为前述数据流配置标识;
发送单元,用于向前述源子芯片发送前述数据流的标识和前述目的子芯片的标识;其中,前述数据流的标识和前述目的子芯片的标识用于关联存储在前述源子芯片的流输出表;前述流输出表为前述源子芯片发送数据的依据。
一种可能的实施方式中,前述分配单元,还用于为前述目的子芯片分配第二数据处理任务,前述第二数据处理任务基于前述第一数据处理任务执行完成后获得的数据执行;
前述发送单元,还用于向前述目的子芯片发送前述数据流的标识;其中,前述数据流的标识用于存储在前述目的子芯片的流输入表中,前述流输入表为前述目的子芯片接收数据的依据。
一种可能的实施方式中,前述控制器还包括:
获取单元,用于获取前述芯片***中子芯片之间的数据传输情况;
生成单元,用于基于前述数据传输情况为前述源子芯片生成调度信息,前述调度信息指示在前述源子芯片中将前述数据流发往前述目的子芯片的发送端口;
前述发送单元,还用于向前述源子芯片发送前述调度信息。
第七方面,本申请提供一种子芯片,该子芯片包括处理器、存储器和通信端口;其中,前述存储器和通信端口与前述处理器耦合,前述通信端口用于收发数据,前述存储器用于存储计算机程序,前述处理器用于调用前述计算机程序,以使得前述子芯片执行如第一方面任一项所述的方法;
前述子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接。
第八方面,本申请提供一种子芯片,该子芯片包括处理器、存储器和通信端口;其中,前述存储器和通信端口与前述处理器耦合,前述通信端口用于收发数据,前述存储器用于存储计算机程序,前述处理器用于调用前述计算机程序,以使得前述子芯片执行如第二方面任一项所述的方法;
前述子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接。
第九方面,本申请提供一种子芯片,该子芯片包括处理器、存储器和通信端口;其中,前述存储器和通信端口与前述处理器耦合,前述通信端口用于收发数据,前述存储器用于存储计算机程序,前述处理器用于调用前述计算机程序,以使得前述子芯片执行如第三方面任一项所述的方法;
前述子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接。
第十方面,本申请提供一种芯片***,该芯片***包括源子芯片、目的子芯片和控制器;其中,前述源子芯片为上述第四方面任一项所述的源子芯片,前述目的子芯片为上述第五方面任一项所述的目的子芯片,前述控制器为上述第六方面任一项所述的控制器;或者,
前述源子芯片为上述第七方面所述的子芯片,前述目的子芯片为上述第八方面所述的子芯片,前述控制器为上述第九方面所述的子芯片。
第十一方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,前述计算机程序被处理器执行时,实现第一方面任意一项所述的方法;或者,
前述计算机程序被处理器执行时,实现第二方面任意一项所述的方法;或者,
前述计算机程序被处理器执行时,实现第三方面任意一项所述的方法。
第十二方面,本申请提供一种计算机程序产品,包括计算机程序,当前述计算机程序被处理器执行时,实现第一方面任意一项所述的方法;或者,
当前述计算机程序被处理器执行时,实现第二方面任意一项所述的方法;或者,
当前述计算机程序被处理器执行时,实现第三方面任意一项所述的方法。
可以理解地,上述第四方面至第十二方面均对应用于执行上述第一方面至第三方面中任一项所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
下面将对本申请实施例中所需要使用的附图作介绍。
图1为本申请提供的芯片***示意图;
图2为本申请提供的子芯片的结构示意图;
图3至图6为本申请提供的芯片***示意图;
图7为本申请提供的子芯片组划分示意图;
图8为本申请提供的芯片***中的数据传输处理方法的流程示意图;
图9A和图9B为本申请提供的数据处理流程示意图;
图10为本申请提供的数据包结构示意图;
图11为本申请提供的芯片***中子芯片的端口示意图;
图12为本申请提供的数据包的结构示意图;
图13为本申请提供的路由实现方案的流程示意图;
图14为本申请提供的方向坐标系的示意图;
图15为本申请提供的基于子芯片构建方向坐标系的示意图;
图16为本申请提供的芯片***中子芯片的端口示意图;
图17至图19为本申请提供的虚拟装置的结构示意图;
图20为本申请提供的实体装置的结构示意图。
具体实施方式
下面结合附图对本申请的实施例进行描述。
图1所示为本申请实施例提供的一种芯片***的结构示意图。芯片***110包括多个子芯片(图1中示例性示出了16个子芯片),该多个子芯片按照预设的拓扑连接关系连接,例如,图1中的16个子芯片可以按照矩阵的形式排列,然后,单个子芯片分别与周围的两个、三个或者四个子芯片连接。
每个子芯片都有各自的内存,图1中示例性画出了部分子芯片的内存。内存例如可以是同步动态随机存储器(synchronous dynamic random access memory,SDRAM)或者双倍速率同步动态随机存储器(Double Data Rate SDRAM,DDRSDRAM),DDRSDRAM可以简写为DDR。芯片***100中每个子芯片都具有完整的处理能力,可以独立执行任务。当然,芯片***100中的多个子芯片可以互相协作执行大型的处理任务。
参见图2,图2示例性示出了上述芯片***110中的子芯片的结构示意图。子芯片的结构可以是以片上网络(network-on-chip,NoC)的形式呈现。可以看到,子芯片可以包括处理模块、路由模块、静态存储器、内存控制器和四个端口(d0、d1、d2和d3)。
上述处理模块为子芯片中的控制单元(control unit,CU),负责子芯片中各个处理流程的管理。
上述路由模块负责子芯片内部的数据同步、子芯片之间的数据同步、数据广播和数据传输。其中,路由模块也包括一个控制单元,该控制单元用于负责路由模块中路由流程的管理。路由模块中还包括本地的缓冲区,可以用于暂时存储待处理的数据。路由模块中还包括端口转发映射模块(forwarding-port mapper,FPM),该FPM可以是一个硬件模块或软件模块,该FPM中存储有一个端口转发映射表,该端口转发映射表中包括目的子芯片和发送端口的映射关系,可以用于将数据包映射到对应的端口进行发送。路由模块中存储有流输入表(stream in table,SIT)和流输出表(stream out table,SOT),该SIT和SOT用于子芯片之间的数据传输,后面会详细介绍,此处暂不详述。
上述静态存储器可以是静态随机存取存储器(static random-access memory,SRAM)等,用于存储子芯片中的数据。
上述内存控制器与子芯片对应的内存连接,该内存控制器例如可以是DDR控制器等。
上述四个端口(d0、d1、d2和d3)是子芯片的网络接口,可以实现上述子芯片与子芯片之间的数据传输。上述子芯片和子芯片之间的连接就是通过该四个端口来实现。可选的,子芯片也可以包括两个该端口,例如图1中的子芯片0、子芯片3、子芯片12和子芯片15。或者,可选的,子芯片也可以包括三个该端口,例如图1中的子芯片4等。
本申请实施例提供的芯片***不限于上述图1所示的结构,还可以是其它的结构,例如参见图3。图3示例性示出了芯片***120,该芯片***120同样包括多个子芯片(图2中示例性示出了8个子芯片),该芯片***120的多个子芯片以长方体的形式排列连接,这种连接方式可以使得子芯片之间的数据传输路径尽可能地缩短。芯片***120中的子芯片的结构可以参见上述图2中对应的描述,此处不再赘述。
一种可能的实施方式中,对于超大型的任务,需要更多的子芯片一起来处理以提高任务处理效率,那么,可以通过将上述芯片***110或芯片***120作为一个芯片的子***,由多个该子***组成一个较大的芯片***,示例性地,可以参见图4所示的芯片***130。
该芯片***130可以包括多个上述芯片的子***,图4中以包括8个子***为例示出,该多个子***的每个子***可以为上述芯片***110或芯片***120。可以将每个子***看成是一个整体,那么,该多个子***可以通过预设定的拓扑连接关系进行连接,例如,可以以长方体的形式排列连接,如图4所示。为了便于理解芯片***130中各个子***的连接方式,示例性地,以子***为上述芯片***110为例示出该芯片***130中各个子***的连接结构示意图,可以参见图5。
在图5中可以看到,芯片***130中包括8个子***,该8个子***中每个子***包括16个子芯片,该16个子芯片可以以矩阵的形式排列连接。相邻两个子***之间,可以通过一个子***中的任意一个子芯片与另一个子***中的任意一个子芯片连接来实现该两个子***的连接。图5中示例性地以每个子***中排列在矩阵拐角的子芯片作为与另一个子***连接的子芯片。例如,子***0中,子***0与子***1之间是通过子***0中的子芯片3与子***1中的子芯片0来建立连接。子***0与子***2之间是通过子***0中的子芯片12与子***2中的子芯片0来建立连接。子***0与子***4之间是通过子***0中的子芯片0与子***4中的子芯片0来建立连接。
一种可能的实施方式中,上述子***之间还可以包括控制总线,例如可以参见图6所示的芯片***140。芯片***140中包括一个中心控制器(该中心控制器可以是芯片***140中的一个子芯片或者控制模块等),该中心控制器可以管理该芯片***140中的任务处理流程。该控制总线与中心控制器连接,以用于各个子***接收中心控制器的控制指令。具体实现中,每个子***可以由一个子芯片连接该控制线,该子芯片接收到控制指令后可以代为转发到同子***内对应的子芯片。或者,每个子***中的每个子芯片都连接该控制线以用于直接接收控制指令。本申请对控制器的具体连接不做限制。
除了上述芯片***140之外,本申请实施例提供的芯片***(例如上述芯片***110、芯片***120和芯片***130等)也包括一个中心控制器,用于管理整个芯片***的任务处理流程。同理,该中心控制器可以是芯片***中的一个子芯片或者控制模块等。中心控制器可以获取芯片***中所有子芯片的负载情况和资源使用情况等,从而可以基于这些情况来为各个子芯片分配任务。示例性地,可以通过中心控制器中的任务调度器(scheduler)来基于各个子芯片的负载情况和资源使用情况等信息为这些子芯片分配任务。
在本申请实施例提供的芯片***中,每个子芯片都具备独立处理数据的能力。但是在数据任务较大的情况下,单个子芯片的处理效率较低。为了提高任务的处理效率,可以将上述芯片***中包括的多个子芯片划分成多个子芯片组,每个子芯片组至少包括一个子芯片。这样可以以子芯片组为处理单位来处理数据任务,从而提高处理效率。为了便于理解芯片组,可以参见图7。
图7以上述芯片***110为例,将芯片***中的16个子芯片划分成9个子芯片组,具体参见图7所示的划分情况,每个子芯片组至少包括一个子芯片。另外,同一个子芯片组的多个子芯片可以是相邻的子芯片,例如子芯片组3、子芯片组4、子芯片组7和子芯片组8。或者,同一个子芯片组的多个子芯片可以是不相邻的子芯片,例如子芯片组2,该子芯片组2由不相邻的子芯片1和子芯片12组成。
本申请实施例提供的芯片***可以采用数据并行、模型并行或者模型并行加数据并行的方式来实现数据任务的处理。其中:
数据并行是指把待处理的数据划分成若干数据块,将该若干数据块分别分配到不同的子芯片组上,每一个芯片组运行同样的处理程序对所分派的数据进行处理。例如,假设待处理数据被划分为3个数据块,现有3个子芯片组可以运行同样的处理程序来处理数据块,那么,可以将该3个数据块中的第1数据块发送给该3个子芯片组中的第1个子芯片组处理,将该3个数据块中的第2数据块发送给该3个子芯片组中的第2个子芯片组处理,将该3个数据块中的第3数据块发送给该3个子芯片组中的第3个子芯片组处理。
模型并行是指多个子芯片组共同完成一个数据处理任务,该多个子芯片组中每一个子芯片组只执行整个数据处理任务的部分步骤(该部分步骤可以是一个或多个处理步骤)。例如,假设一个数据处理任务需要经过3个步骤才能完成处理,那么,可以配置两个子芯片组来共同完成该任务。其中,第1个子芯片组完成该3个步骤中的前2步骤的处理,第2子芯片组从第1子芯片组获取处理后的数据以完成第3步骤的处理。或者,可以配置三个子芯片组来共同完成该任务。其中,第1子芯片组完成该3个步骤中的第1步骤的处理,第2子芯片组从第1子芯片组获取处理后的数据完成第2步骤的处理,第3子芯片组从第2子芯片组获取处理后的数据完成第3步骤的处理。即每个芯片组完成的步骤可以是一个或多个,具体可以根据芯片组的负载情况和资源使用情况来确定。
模型并行加数据并行的方式是结合了上述数据并行和模型并行两种方式来处理数据。例如,一个数据处理任务需要经过3个步骤才能完成处理,那么,可以配置三个子芯片组来共同完成该任务。其中,第1子芯片组完成该3个步骤中的第1步骤的处理,第2子芯片组从第1子芯片组获取处理后的数据完成第2步骤的处理,第3子芯片组从第2子芯片组获取处理后的数据完成第3步骤的处理。但是,由于该第1步骤的处理比较复杂,需要花费较多的时间才能完成该步骤的处理,为了提高处理效率,可以再配置一个或多个子芯片组来共同执行该第1步骤的处理任务。例如,可以再配置一个第4子芯片组来和前述第1子芯片组一起来执行该第1步骤的处理任务。具体的,可以将用于进行第1步骤处理的数据分成两份,一份发送给该第1子芯片组处理,另一份发送给该第4子芯片组处理。然后,该第1子芯片组和第4子芯片组处理完之后的数据一起发送给第2子芯片组进行第2步骤的处理。
需要说明的是,上述模型并行加数据并行的方式中,可以是每个处理步骤都采用数据并行的处理方式来处理,或者可以是部分处理步骤采用数据并行的处理方式来处理,具体可以根据具体实现确定,本申请对此不做限制。
在具体实现中,可以通过芯片***的中心控制器将数据处理任务分配到各个子芯片组。采用模型并行或者模型并行加数据并行的方式实现数据任务的处理,需要在子芯片之间进行数据的传输。数据传输会产生时延导致处理效率降低。为了实现芯片***中子芯片之间的高效数据传输,提高芯片***的处理性能,本申请实施例提供了一种芯片***中的数据传输处理方法。
参见图8,本申请实施例提供的数据传输处理方法包括但不限于如下步骤:
S801、源子芯片接收配置参数,并根据该配置参数配置预设的流输出表;该流输出表包括数据流的标识和该数据流的目的子芯片的标识;该源子芯片执行第一数据处理任务得到输出数据。
具体实现中,在采用模型并行或者模型并行加数据并行的方式实现数据任务的处理中,上述源子芯片可以是第一子芯片组中的任一个子芯片,该第一子芯片组为芯片***中用于执行目标任务中第一步骤的处理任务的子芯片组。该第一步骤可以包括该目标任务的一个或多个处理步骤。该芯片***可以是前述介绍的芯片***110、芯片***120、芯片***130或者芯片***140等。
上述流输出表提前初始化存储在该源子芯片中,用于该源子芯片传输对应的数据。该流输出表为该源子芯片发送数据的依据。具体的,该流输出表包括数据流的标识和该数据流前往的目的子芯片的标识。一种可能的实施方式中,该流输出表还可以包括该数据流包括的数据所属的任务的标识、已发送该数据流的数据包个数的指示信息和该源子芯片中用于存储该数据流包括的数据的起始地址中的一项或多项。
具体的,关于数据流,一个子芯片向另一个子芯片发送数据,这些数据被封装成多个数据包,这些数据包按顺序编号并发送,这些连续发送的数据包形成数据流。一种可能的实现中,每个数据包可以携带1kb的数据,若传输的数据总大小为64kb,那么,可以将这些数据拆分封装成64个数据包进行发送,该64个数据包则可以形成一个数据流。
在具体的实现中,可以通过芯片***的中心控制器来初始化流输出表。具体的,基于前面的描述可知,是由中心控制器将各个数据处理任务分配到各个子芯片组,那么,中心控制器可以为各个数据处理任务配置对应的任务标识以用于区分不同的任务。
另外,对于一个数据处理任务,也是由中心控制器配置子芯片组来执行该数据处理任务的各个处理步骤。因此,中心控制器可以获知该数据处理任务对应的数据流的流向,并为对应的数据流配置数据流标识以用于区分不同的数据流。为了便于理解,下面举例说明。
示例性地,参见图9A。假设某个数据处理任务包括八个处理步骤,中心控制器可以基于该数据处理任务的数据量大小、该八个步骤的处理复杂程度以及芯片***中各个子芯片组的负载和资源使用情况,进行处理任务的分配。例如,如图9A所示,中心控制器配置由子芯片组1来执行该数据处理任务的步骤1,由子芯片组2来执行该数据处理任务的步骤2和步骤3,由子芯片组3来执行该数据处理任务的步骤4,由子芯片组4来执行该数据处理任务的步骤5、步骤6和步骤7,由子芯片组5来执行该数据处理任务的步骤8。其中,子芯片组1包括子芯片4,子芯片组2包括子芯片5,子芯片组3包括子芯片6和子芯片7,子芯片组4包括子芯片8,子芯片组5包括子芯片0和子芯片9。
在上述图9A中,假设执行步骤2、步骤5和步骤8均需要经步骤1处理后的数据,那么,子芯片组1可以将经步骤1处理后的数据分别发送个子芯片组2、子芯片组4和子芯片组5。由于子芯片组1发送给子芯片组2、子芯片组4和子芯片组5的数据相同,因此,从子芯片组1到子芯片组2的数据流、从子芯片组1到子芯片组4的数据流以及从子芯片组1到子芯片组5的数据流的标识相同,例如均为17。另外,子芯片组2完成步骤2和步骤3的处理获得的数据发送给子芯片组3以进行步骤4的处理,该从子芯片组2到子芯片组3的数据流的标识可以为18。子芯片组3完成步骤4的处理获得的数据发送给子芯片组5以进行步骤8的处理,该从子芯片组3到子芯片组5的数据流的标识可以为19。子芯片组4完成步骤5、步骤6和步骤7的处理获得的数据发送给子芯片组5以进行步骤8的处理,该从子芯片组4到子芯片组5的数据流的标识可以为20。
具体实现中,子芯片组之间的数据传输实际上是子芯片组中的子芯片之间的数据传输,例如上述子芯片组1将步骤1处理后的数据发送给子芯片组5,实际上是子芯片组1中的子芯片4将步骤1处理后的数据发送给子芯片组5中的子芯片0和子芯片9。其它的同理,不再赘述。
另一种可能的实施方式中,参见图9B中,假设执行步骤2、步骤5和步骤8均需要经步骤1处理后的数据,但需要的数据不同或不完全相同。例如,假设执行步骤2需要的是经步骤1处理后的数据中的数据1,执行步骤5需要的是经步骤1处理后的数据中的数据2,执行步骤8需要的是经步骤1处理后的数据中的数据3。那么,子芯片组可以将该数据1发送给子芯片组2,将该数据2发送给子芯片组4,将该数据3发送给子芯片组5。由于发送给子芯片组2、子芯片组4和子芯片组5这三个子芯片组的数据不同,因此,其对应的数据流的标识也不同。例如,从子芯片组1到子芯片组2的数据流的标识可以为15,从子芯片组1到子芯片组4的数据流的标识可以为16,从子芯片组1到子芯片组5的数据流的标识可以为17。其它的子芯片组之间的数据流的标识可以参见前面关于图9A的描述,此处不再赘述。
在具体实现中,子芯片组内部的子芯片处理步骤之间的数据传输无需配置数据流的标识,例如子芯片组2中,步骤2处理完获得的数据发送给子芯片5中对应的模块进行步骤3的处理,子芯片5内部的数据传输无需配置数据流的标识。子芯片组4中子芯片8内的数据传输同理,无需配置数据流的标识。
基于上述的描述,中心控制器可以获知对应数据流的流向,即可以获知数据流的目的子芯片的标识。中心控制器可以将上述数据处理任务的标识,数据处理任务对应的数据流的标识,该数据流的源子芯片的标识,该数据流的目的子芯片的标识以及该源子芯片对应处理的步骤等信息关联存储。该关联存储可以是以表的形式存储,该表可以称为数据流表(stream table,ST)。为了便于理解该数据流表,例如可以参见表1。
表1
Figure BDA0003440847500000101
Figure BDA0003440847500000111
示例性地,基于上述图9B,上述表1示例性示出了数据处理任务步骤1关联的信息,其它步骤关联的信息同理,此处不再赘述。如表1所示,该数据流表包括任务的标识(taskidentity document,TID),源子芯片的标识(source mask,S_mask),源子芯片执行的步骤,目的子芯片的标识(destination mask,D_mask),目的子芯片执行的步骤以及数据流的标识(stream identity document,SID)。
上述任务的标识指的是对应的数据处理任务的标识。该任务的标识例如可以是1或者其它的标识符号,本申请对此不做限制。
上述源子芯片的标识和源子芯片执行的步骤指示执行该步骤1的子芯片的标识。上述目的子芯片的标识和目的子芯片执行的步骤指示步骤1处理完的数据前往的目的地,以及该目的地执行的对应的处理步骤。数据流的标识指示源子芯片将步骤1处理完的数据发送给各个对应目的子芯片形成的数据流的标识。具体的标识参见表1所示,但是表1所示的标识仅为示例,可以使用是其它的标识符号代替,在计算机执行的程序中,这些标识可以用二进制或者十六进制表示等,本申请对各类标识的表示不做限制。
需要说明的是,本申请实施例中所述的源子芯片和目的子芯片是针对数据流来说的,不同的数据流对应的源子芯片和目的子芯片可能不同。
另外,可选的,上述数据流表包括的内容不限于上述表1所示的各项内容。在具体实现中,该数据流表包括的内容可以是上述表1所示的各项内容中的部分或者全部。或者还可以包括其它的内容,例如目的子芯片执行的其它步骤(例如上述子芯片8除了步骤5还处理步骤6和步骤7,那么,上述数据流表可以包括该步骤6和步骤7的信息等)。
基于上述的描述,中心控制器中存储有上述数据流表,那么,中心控制器可以基于该数据流表来初始化上述源子芯片中的流输出表。具体的,中心控制器可以在数据流表中找到上述源子芯片对应的关联信息,即找到对应的任务标识、目的子芯片的标识和数据流的标识等信息。然后,将这些关联信息发送给该源子芯片。该源子芯片接收到该关联信息之后,将这些信息填入流输出表中。该数据流表中源子芯片对应的关联信息中的一项或多项即为上述配置参数。
一种可能的实施方式中,基于前面的描述,该源子芯片中的流输出表还可以包括已发送该数据流的数据包个数的指示信息和该源子芯片中用于存储该数据流包括的数据的起始地址。这两项内容可以是该源子芯片基于自身的信息填写到该流输出表中。
示例性的,该源子芯片接收到中心控制器分配的数据处理任务(该数据处理任务可以为上述S801中的第一数据处理任务),然后,完成了预设的处理步骤获得处理完之后的数据(该数据即为上述S801中执行第一数据处理任务得到的输出数据)。该处理完之后的数据存储在该源子芯片的内存缓冲区中。那么,该源子芯片可以获知该处理完之后的数据的大小和存储的起始地址。该处理完之后的数据即为需要发送的数据,并且,发送的数据包的大小是预先设定的,那么,获知处理完之后的数据的大小即可获知待发送的数据包的个数。从而源子芯片可以将该待发送的数据包的个数和该待发送的数据的存储起始地址填写到上述流输出表中。至此,完成了源子芯片中流输出表的初始化。
上述源子芯片接收到的第一数据处理任务可以是具体的任务数据和/或任务执行指令等,源子芯片接收到该第一数据处理任务后可以将该任务缓存到预设的存储空间,以待后续执行。
为了便于理解上述该流输出表,示例性地可以参见表2。
表2
Figure BDA0003440847500000121
上述表2中示例性地示出了流输出表中任务1对应的信息。可以看到,表2中任务1对应的TID、SID和D_mask是中心控制器从上述表1中获取发送给源子芯片的,因此与上述表1相同。另外,表2中的起始地址(start address,S_addr)指的是上述源子芯片中用于存储待发送的数据流包括的数据的起始地址。该表2中的数据包计数(count packet,C_packet)指的是已发送该数据流的数据包个数的指示信息。该数据包计数可以是倒计数,例如,初始化时该数据包计数中是该数据流包括的全部数据包的个数,然后,源子芯片每发送一个数据包,该数据包计数减一。
另外,流输出表中可以包括多个任务对应的信息,通过任务的标识来区分,不同任务的数据流的标识可以相同或者不同,具体根据中心控制器的数据流表决定。
或者,示例性地,源子芯片可以在执行中心控制器分配的第一数据处理任务之前完成流输出表的初始化。具体的,该源子芯片可以将流输出表中已发送数据流的数据包个数初始化为零,并将用于存储该数据流包括的数据的起始地址初始化为一个指定存储空间的起始地址。那么,该源子芯片执行中心控制器分配的数据处理任务获得处理完之后的数据可以存储到该指定存储空间。并且,当源子芯片发送该处理完之后的数据的过程中,每发送一个数据包就将流输出表中已发送数据流的数据包个数加一。
S802、该源子芯片基于该流输出表将该输出数据生成多个数据包,该数据包中包括该数据流的标识和该目的子芯片的标识。
上述源子芯片初始化完成流输出表并且执行上述第一数据处理任务获得输出数据后,可以基于该流输出表生成对应数据流的数据包。数据包中可以包括数据包的类型(type)、任务的标识、数据流的标识、目的子芯片的标识、数据包编号和数据。数据包中的目的子芯片的标识可以是一个或多个目的子芯片的标识。若数据包中的数据对应的目的子芯片为一个,则数据包中的目的子芯片的标识为该一个目的子芯片的标识。若数据包中的数据对应的目的子芯片为多个,则数据包中的目的子芯片的标识为该多个目的子芯片的标识。例如,上述表2中,数据流17对应的目的子芯片有两个,分别为子芯片0和子芯片9,那么,该数据流17中的数据包包括该子芯片0和子芯片9的标识。
具体实现中,源子芯片基于上述流输出表中任务的标识和数据流的标识获取存储待发送的数据(即为上述输出数据)的起始地址,基于该起始地址读取待发送的数据生成上述数据包。
一种可能的实施方式中,上述生成的数据包中还可以携带边带信息,这些边带信息可以包括任务的标识、数据流的标识或目的子芯片的标识中的一项或多项信息。这些边带信息可以不封装在数据包内,而是随着数据包一起发送。在具体实现中,数据包内部包括的信息只有子芯片的路由模块才能获知,子芯片中的端口等其它模块并不感知。因此,为了便于快速转发数据包,可以配置数据包携带上述边带信息。为了便于理解数据包的格式和边带信息的格式,可以示例性地参见图10。图10所示的数据包的格式和对应的边带信息仅为示例,在具体实现中数据包中还可以包括其它的信息,边带信息也可以包括更多的信息,本申请对此不做限制。
S803、该源子芯片向目的子芯片发送上述多个数据包。
源子芯片基于上述流输出表生成数据包后,可以将该数据包向目的子芯片发送。具体的,源子芯片可以基于端口转发映射表发送该数据包。基于前面关于芯片***的介绍可知,源子芯片的路由模块中还包括端口转发映射模块FPM,该FPM中存储有一个端口转发映射表,该端口转发映射表中包括目的子芯片的标识和发送端口的映射关系。
具体的,源子芯片可以基于数据包发往的目的子芯片的标识查询该端口转发映射表,可以查询到对应的发送端口,然后,将数据包从该发送端口中发送出去。为了便于理解可以参见图11。在图11中,假设子芯片0为源子芯片,子芯片1为目的子芯片。子芯片0中的端口转发映射表中存储了子芯片1的标识与子芯片0的端口d1的关联关系。那么,当子芯片0有数据包要发往子芯片1时,子芯片0基于子芯片1的标识查询端口转发映射表,获知数据包的发送端口为d1,则子芯片0从端口d1发送该数据包。
S804、该目的子芯片接收上述数据包。
上述源子芯片发出数据包之后,经过一路的传输数据包到达目的子芯片。目的子芯片接收该数据包。例如,以上述图11为例,子芯片0从端口d1发送数据包,该数据包经子芯片1的端口d3到达目的子芯片,该子芯片1则通过该端口d3接收该数据包。
S805、该目的子芯片判断流输入表中是否包含接收的数据包中的数据流标识,该流输入表包括至少一个待接收的数据流标识;在流输入表中包含该接收的数据包中的数据流标识时,存储该接收的数据包中的数据。
在具体实现中,目的子芯片接收到目的地为自身的数据包之后,可以先将数据包中的数据存储到缓冲区中以待后续的处理。具体的,目的子芯片可以基于流输入表来存储该数据包中的数据。该流输入表为该目的子芯片接收数据的依据。
该流输入表可以包括任务的标识和数据流的标识。在具体的实现中,可以通过芯片***的中心控制器来初始化该流输入表。基于前面的描述可知,中心控制器中存储有数据流表。中心控制器可以基于该目的子芯片的标识查询该数据流表,获取该目的子芯片关联的信息发送给该目的子芯片。该目的子芯片关联的信息包括对应的任务的标识和数据流的标识等信息。目的子芯片接收到这些信息后,可以将这些信息写入自身的流输入表中。该数据流表中目的子芯片对应的关联信息中的一项或多项即为用于配置该流输入表的配置参数。该流输入表中的数据流的标识即为目的子芯片待接收的数据流标识,即只有数据包中的数据流标识属于该流输入表中的数据流标识,该目的子芯片才获取该数据包中的数据进行存储以待后续的处理。
另外,上述流输入表中还可以包括已接收数据流的数据包个数的指示信息和该目的子芯片中用于存储数据流包括的数据的起始地址等信息。这些信息可以是该目的子芯片基于自身的信息填写到该流输入表中。示例性地,目的子芯片可以为待接收的数据流配置一个指定的存储空间,然后将该指定的存储空间的起始地址初始化到该流输入表中。并且示例性地,该目的子芯片可以将该流输入表中已接收数据流的数据包个数初始化为零,然后在目的子芯片接收该数据流的数据包的过程中,每接收一个数据包就将流输入表中对应的已接收数据流的数据包个数加一。或者,示例性地,该目的子芯片可以从源子芯片或者控制器获知该待接收的数据流包括的数据包的总个数,并将该流输入表中对应的已接收数据流的数据包个数初始化为该总个数。然后在目的子芯片接收该数据流的数据包的过程中,每接收一个数据包就将流输入表中对应的已接收数据流的数据包个数减一。
为了便于理解该流输入表,示例性地可以参见表3。
表3
Figure BDA0003440847500000141
上述表3中示例性地示出了流输入表中任务1对应的信息。可以看到,表3中任务1对应的TID和SID是中心控制器从上述表1中获取发送给源子芯片的,因此与上述表1相同。另外,表3中的起始地址(start address,S_addr)指的是上述目的子芯片中用于存储数据流15包括的数据的起始地址。该表3中的数据包计数(count packet,C_packet)指的是已接收数据流15的数据包个数的指示信息。该数据包计数可以是倒计数,例如,初始化时该数据包计数中是该数据流包括的全部数据包的个数,然后,目的子芯片每接收一个数据包,该数据包计数减一。
另外,流输入表中可以包括多个任务对应的信息,通过任务的标识来区分,不同任务的数据流的标识可以相同或者不同,具体根据中心控制器的数据流表决定。
另一种可能的实施方式中,目的子芯片可以通过从源子芯片接收一个头数据包(header packet)来初始化上述流输入表。该头数据包可以包括数据包的类型、任务的标识、数据流的标识、目的子芯片的标识、数据流包括的数据包的总个数以及目的子芯片中用于存储该数据流的数据的起始地址。可选的,该头数据包也可以携带边带信息,该边带信息的内容可以和前述的边带信息的内容相同,此处不再赘述。为便于理解头数据包的格式,可以示例性地参见图12。
图12中,N_PK表示数据流包括的数据包的总个数,Address表示上述目的子芯片中用于存储该数据流的数据的起始地址,其它的标识参见前面的描述,此处不再赘述。图12所示的数据包的格式和对应的边带信息仅为示例,在具体实现中数据包中还可以包括其它的信息,边带信息也可以包括更多的信息,本申请对此不做限制。
一种可能的实施方式中,目的子芯片的流输入表初始化完成后,表明目的子芯片已经做好接收对应数据流的准备。因此,目的子芯片可以向源子芯片发送一个解除封锁数据包,该解除封锁数据包用于向该源子芯片指示该目的子芯片做好接收对应数据流的准备。
该解除封锁数据包可以包括数据包类型、任务的标识、数据流的标识和接收该数据包的子芯片的标识。该接收该数据包的子芯片即为上述源子芯片。可选的,该解除封锁数据包也可以携带边带信息,该边带信息的内容可以和前述的边带信息的内容相同,此处不再赘述。
基于上述的描述,目的子芯片初始化完成流输入表后,对于接收到源子芯片发送过来的数据包,可以先获取该数据包中的数据流标识与自身的流输入表中的数据流标识比较。若该流输入表中包括该接收的数据包中的数据流标识,则可以基于该数据包中的任务标识和数据流标识查询该流输入表获取对应的存储数据的起始地址,然后基于该起始地址计算对应的存储地址,将该数据包的数据存储到该对应的存储地址中。
一种可能的实现中,上述中心控制器向该目的子芯片分配了第二数据处理任务,该第二数据处理任务是基于上述第一数据处理任务执行完成后获得的数据执行的。那么,上述源子芯片执行完上述第一数据处理任务获得输出数据,将该输出数据以数据流的形式发送给该目的子芯片。该目的子芯片基于自身的流输入表接收并存储该输出数据。然后,该目的子芯片可以基于已知的存储地址从该存储空间中读取该输出数据以用于执行自身的第二数据处理任务。
一种可能的实施方式中,基于前述芯片***的相关描述可知,芯片***中可以包括多个子***,每个子***之间按照预设的拓扑连接关系连接。若上述源子芯片和目的子芯片不是同一个子***中的子芯片,那么,该两个子芯片之间传输的数据包中还包括接收该数据包的子芯片所在的子***的标识。例如,若是源子芯片向目的子芯片发送数据包(例如上述数据流包括的数据包等),那么,该数据包中还包括目的子芯片所在的子***的标识。若是目的子芯片向源子芯片发送数据包(例如上述解除封锁数据包等),那么,该数据包中还包括源子芯片所在的子***的标识。通过数据包中的子***的标识可以实现跨子***的子芯片之间的数据传输,从而有利于实现大型数据任务的处理,提高处理效率。
综上所述,本申请实施例基于上述初始化好的流输出表和流输入表可以实现芯片***内高效的传输数据,提高芯片***的数据处理性能。
一种可能的实现方式中,为了进一步提高上述芯片***内的数据传输效率,本申请实施例可以提供一种在路由实现方式,以使得数据芯片***的子芯片之间可以灵活调度、高效传输。下面以第一子芯片为例进行介绍。
参见图13,本申请实施例提供的路由实现方式包括但不限于如下步骤:
S1301、第一子芯片获取第一数据包;其中,该第一数据包包括目的子芯片的标识;该第一子芯片和该目的子芯片为芯片***包括的子芯片,该芯片***包括的多个子芯片以预设的拓扑结构连接。
该芯片***可以是前述介绍的芯片***110、芯片***120、芯片***130或者芯片***140等。该第一子芯片可以是这些芯片***中任意一个芯片***中的任意一个子芯片。
示例性地,上述第一子芯片可以是上述图13中所述的源子芯片,那么,上述第一子芯片获取第一数据包可以是该第一子芯片生成该第一数据包。该生成第一数据包的具体实现可以参见上述步骤S802中对应的描述,此处不再赘述。
或者,示例性地,上述第一子芯片可以是数据包从源子芯片传输到目的子芯片的过程中途径的子芯片,那么,上述第一子芯片获取第一数据包可以是该第一子芯片接收该第一数据包。
为了便于后面的描述,成该第一子芯片所在的芯片***为第一芯片***。该第一子芯片从该第一芯片***中的另一个子芯片中接收到上述第一数据包。
在具体实现中,该第一数据包中可以包括包(packet)的类型(type)、任务的标识、数据流的标识、目的子芯片的标识、包编号和数据等信息中的一项或多项。一种可能的实施方式中,上述第一数据包中还可以携带边带信息,这些边带信息可以包括任务的标识、数据流的标识或目的子芯片的标识中的一项或多项信息。关于该第一数据包中包括的内容,可以参见上述步骤S802中关于数据包的描述,此处不再赘述。
S1302、该第一子芯片基于上述芯片***中子芯片之间的数据传输情况发送该第一数据包中的数据。
在具体实现中,芯片***中子芯片之间的数据传输情况包括多种,下面示例性介绍几种可能的实现方式。
第一种可能的实现方式,上述第一子芯片可以基于自身端口的拥塞情况来发送上述第一数据包中的数据。
具体的,基于上述关于芯片***的介绍可知,每个子芯片包括多个与其它子芯片通信的端口。其中,每个端口配置有对应的发送缓冲区,该发送缓冲区用于存储待发送的数据。
上述第一子芯片接收到上述第一数据包之后,解析该第一数据包获知该第一数据包中的目的子芯片的标识。若该目的子芯片的标识指示该第一子芯片为目的子芯片,那么,该第一子芯片提取该第一数据包中的数据存储,以待后续处理。否则,该第一子芯片以该目的子芯片的标识为索引,在自身的转发映射表查找该第一数据包的发送端口。关于转发映射表的介绍可以参见前述关于图2的描述中对应的描述,此处不再赘述。若查找到的发送端口包括多个,那么,可以基于该多个发送端口的发送缓冲区的拥塞情况来确定具体的发送端口。具体的,为了提高数据的传输效率,可以选择该多个发送端口的发送缓冲区中待发送的数据量最少的端口来发送该第一数据包。
一种可能的实施方式中,若上述第一数据包中包括多个目的子芯片的标识,并且该第一子芯片为其中一个目的子芯片,那么,该第一子芯片提取该第一数据包中的数据存储,以待后续处理。并且,该第一子芯片会以剩下的目的子芯片的标识为索引在自身的转发映射表查找该第一数据包的数据的发送端口。
若上述剩下的目的子芯片的标识为一个,那么,同理,查找到对应的发送端口后,选择发送端口的发送缓冲区中待发送的数据量最少的端口来发送该第一数据包中的数据。具体的,该数据会被重新封装为一个数据包进行发送,该重新封装的数据包中的目的子芯片的标识不再包括第一子芯片的标识,只包括该剩下的目的子芯片的标识。
若上述剩下的目的子芯片的标识还有多个,那么,该第一子芯片在自身的转发映射表中分别查找对应的发送端口。若查找到的发送端口相同,那么,可以复制上述第一数据包包括的数据重新生成一个数据包,该新生成的数据包中包括该多个剩下的目的子芯片的标识。并将该新生成的数据包从查找到的相同的发送端口发送。同理,该发送端口可以是找到的发送端口中发送缓冲区待发送数据量最少的端口。
或者,若上述剩下的目的子芯片的标识还有多个,以两个为例,假设该剩下的目的子芯片为子芯片A和子芯片B。上述第一子芯片在自身的转发映射表中查找该子芯片A的标识映射的发送端口,以及查找该子芯片B的标识映射的发送端口。假设查找到的发送端口不同,那么,第一子芯片可以重新生成两个数据包:数据包A和数据包B。两个数据包均包括上述第一数据包包括的数据,其中数据包A包括的目的子芯片的标识为子芯片A的标识,数据包B包括的目的子芯片的标识为子芯片B的标识。然后,通过各自查找到的发送端口发送该数据包A和数据包B。同理,该发送端口可以是找到的发送端口中发送缓冲区待发送数据量最少的端口。
第二种可能的实现方式,上述第一子芯片可以基于最小带宽消耗原则向目的子芯片发送上述第一数据包中的数据。该最小带宽消耗原则指的是以最小的传输带宽将数据送达目的子芯片的原则。
为了便于理解本实现方式,首先介绍一下以第一子芯片为中心构建的方向坐标系。图14示例性示出了以第一子芯片为中心构建的方向坐标系的示意图。可以看到,该方向坐标系包括四个方向轴:第一方向轴、第二方向轴、第三方向轴和第四方向轴。该四个方向轴均是以第一子芯片为中心向外发散。其中,第一方向轴和第二方向轴共线且方向相反;第三方向轴和第四方向轴共线且方向相反。该方向坐标系还包括四个区域:第一区域、第二区域、第三区域和第四区域。其中,该第一区域以该第一方向轴和该第三方向轴为边界;该第二区域以该第二方向轴和该第三方向轴为边界;该第三区域以该第二方向轴和该第四方向轴为边界,该第四区域以该第一方向轴和该第四方向轴为边界。
在芯片***中,该第一子芯片所在的行位于该第一方向轴和该第二方向轴中的至少一个方向轴上,该第一子芯片所在的列位于该第三方向轴和该第四方向轴中的至少一个方向轴上。示例性地可以参见图15。假设芯片***中的子芯片5为第一子芯片,那么,以该子芯片5为中心建立方向坐标系。在该方向坐标系中,该子芯片5所述的第二行位于第一方向轴和第二方向轴上,该子芯片5所述的第二列位于第三方向轴和第四方向轴上。然后,子芯片2和子芯片3位于该方向坐标系的第一区域。子芯片0位于该方向坐标系的第二区域。子芯片8和子芯片12位于该方向坐标系的第三区域。子芯片10、子芯片11、子芯片14和子芯片15位于该方向坐标系的第四区域。
一种可能的实施方式中,若上述图15的芯片***中子芯片0第一子芯片,那么,以该子芯片0为中心建立方向坐标系。在该方向坐标系中,该子芯片0所述的第一行位于第一方向轴上,该子芯片0所述的第一列位于第四方向轴上。然后,除了子芯片0所在的行和所在的列的子芯片,其余子芯片均位于该方向坐标系的第四区域。
一种可能的实施方式中,上述最小带宽消耗原则包括:在上述第一数据包中包括的目的子芯片处于目标方向轴上的情况下,上述第一子芯片沿着该目标方向轴的方向发送该第一数据包的数据;该目标方向轴为该第一方向轴、该第二方向轴、该第三方向轴或该第四方向轴。为了便于理解,结合上述图15为例说明。
在图15中,假设子芯片5为上述第一子芯片,其接收到一个数据包,该数据包中的目的子芯片的标识指示目的子芯片为子芯片7。若该数据包中只包括一个目的子芯片的标识,那么,由于该子芯片7位于第一方向轴上,因此,子芯片5沿着该第一方向轴的方向发送该数据包。即子芯片5先将数据包发送给子芯片6,再由子芯片6转发给子芯片7。若该数据包中包括多个目的子芯片的标识,作为其中一个目的子芯片的子芯片7位于第一方向轴上。因此,子芯片5复制一份该数据包中的数据新生成一个数据包,并将该新的数据包沿着该第一方向轴的方向发送。即子芯片5先将该新的数据包发送给子芯片6,再由子芯片6转发给子芯片7。该新生成的数据包包括该子芯片7的标识。
一种可能的实施方式中,上述第一数据包中包括第一目的子芯片和第二目的子芯片的标识。上述最小带宽消耗原则还包括:以上述第一子芯片为中心建立的方向坐标系中,在该第一目的子芯片和第二目的子芯片分别处于该坐标系的第一区域、第二区域、第三区域和第四区域中相邻的两个区域的情况下,该第一子芯片沿着共同方向轴的方向发送第二数据包。该第二数据包包括该数据、第一目的子芯片和第二目的子芯片的标识。该共同方向轴为该相邻的两个区域共同边界的方向轴。为了便于理解,结合上述图15为例说明。
在图15中,假设子芯片5为上述第一子芯片,其接收到一个数据包,该数据包中的目的子芯片的标识指示目的子芯片为子芯片8和子芯片14。子芯片8位于第三区域,子芯片14位于第四区域,该两个区域为相邻区域,共同的边界为第四方向轴。因此,子芯片5沿着该第四方向轴的方向发送该数据包。即子芯片5先将数据包发送给子芯片9,再由子芯片9进行进一步的转发。具体的,可以将子芯片9也看成是上述第一子芯片,以该子芯片9为中心建立方向坐标系,然后再基于上述最小带宽消耗原则转发数据。
一种可能的实施方式中,上述第一数据包中包括第一目的子芯片和第二目的子芯片的标识。上述最小带宽消耗原则还包括:以上述第一子芯片为中心建立的方向坐标系中,在该第一目的子芯片处于该坐标系的第一区域,该第二目的子芯片处于该第三区域的情况下,该第一子芯片沿着该第一区域两条边界的方向轴中的一个方向轴的方向发送第三数据包,并沿着该第三区域两条边界方向轴中的一个方向轴的方向发送第四数据包。该第三数据包包括该数据和该第一目的子芯片的标识。该第四数据包包括该数据和该第二目的子芯片的标识。为了便于理解,结合上述图15为例说明。
在图15中,假设子芯片5为上述第一子芯片,其接收到一个数据包,该数据包中的目的子芯片的标识指示目的子芯片为子芯片2和子芯片12。子芯片2位于第一区域,子芯片12位于第三区域。那么,子芯片5可以基于接收的数据包中的数据重新生成两个数据包:数据包A和数据包B。数据包A中包括数据和子芯片2的标识,数据包B中包括数据和子芯片12的标识。然后,沿着第一方向轴或第三方向轴的方向发送该数据包A。例如,沿着第一方向轴的方向发送数据包A,即先将数据包A发送给子芯片6,再由子芯片6将数据包A转发给子芯片2。另外子芯片5沿着第二方向轴或第四方向轴的方向发送该数据包B。例如,沿着第四方向轴的方向发送数据包B,即先将数据包B发送给子芯片9,再由子芯片9继续进一步转发。
一种可能的实施方式中,上述第一数据包中包括第一目的子芯片和第二目的子芯片的标识。上述最小带宽消耗原则还包括:以上述第一子芯片为中心建立的方向坐标系中,在该第一目的子芯片处于该坐标系的第二区域,该第二目的子芯片处于该第四区域的情况下,该第一子芯片沿着该第二区域两条边界的方向轴中的一个方向轴的方向发送第三数据包,并沿着该第四区域两条边界方向轴中的一个方向轴的方向发送第四数据包。该第三数据包包括该数据和该第一目的子芯片的标识。该第四数据包包括该数据和该第二目的子芯片的标识。为了便于理解,结合上述图15为例说明。
在图15中,假设子芯片5为上述第一子芯片,其接收到一个数据包,该数据包中的目的子芯片的标识指示目的子芯片为子芯片0和子芯片10。子芯片0位于第二区域,子芯片10位于第四区域。那么,子芯片5可以基于接收的数据包中的数据重新生成两个数据包:数据包C和数据包D。数据包C中包括数据和子芯片0的标识,数据包D中包括数据和子芯片10的标识。然后,沿着第二方向轴或第三方向轴的方向发送该数据包C。例如,沿着第二方向轴的方向发送数据包C,即先将数据包C发送给子芯片4,再由子芯片4将数据包C转发给子芯片0。另外子芯片5沿着第一方向轴或第四方向轴的方向发送该数据包D。例如,沿着第一方向轴的方向发送数据包D,即先将数据包D发送给子芯片6,再由子芯片6转发给子芯片10。
一种可能的实施方式中,上述第一数据包中包括第一目的子芯片和第二目的子芯片的标识。上述最小带宽消耗原则还包括:以上述第一子芯片为中心建立的方向坐标系中,在该第一目的子芯片处于目标区域中,该第二目的子芯片处于该目标区域边界的方向轴上的情况下,该第一子芯片沿着该目标区域边界方向轴的方向发送第五数据包。该第五数据包包括该数据和该第一目的子芯片和第二目的子芯片的标识。该目标区域为第一区域、第二区域、第三区域或第四区域。为了便于理解,结合上述图15为例说明。
在图15中,假设子芯片5为上述第一子芯片,其接收到一个数据包,该数据包中的目的子芯片的标识指示目的子芯片为子芯片14和子芯片9。子芯片14位于第四区域,子芯片9位于第四方向轴上。第四方向轴为该第四区域的边界方向轴,那么,子芯片5可以该接收的数据包沿着第四方向轴的方向发送,即发送给子芯片9。子芯片9接收到该数据包后,存储数据包中的数据。并复制一份该数据重新生成一个数据包。该新的数据包包括子芯片14的标识,然后将该新的数据包发送给子芯片13或者子芯片10,再由该子芯片13或者子芯片10转发给子芯片14。
第三种可能的实现方式,上述第一子芯片可以接收来自芯片***中的中心控制器的调度信息,基于调度信息对应发送数据。
具体的,基于前面对芯片***的介绍中可知,芯片***的中心控制器还可以负责芯片***中的数据调度。具体的,中心控制器通过控制总线获取各个子芯片的数据传输情况,通过对这些数据传输情况的分析可以获知各个传输路径的拥塞情况和/或获知各个子芯片的端口拥塞情况,从而可以基于这些情况制定数据的传输策略,并以调度信息的形式下发给各个子芯片。各个子芯片基于控制器下发的调度信息来对应发送数据,从而降低了拥塞的概率,提高了数据传输效率。
示例性的,中心控制器向一个子芯片发送的调度信息中,可以包括一个或多个子芯片的标识和对应去往该一个或多个子芯片的端口的标识。子芯片接收到该调度信息后,将这些信息更新到自身的转发映射表中,以用于后续的数据转发。为例便于理解,可以示例性地参见图16。
图16示例性示出了一个芯片***的结构示意图,假设子芯片0作为该芯片***的中心控制器,该子芯片0可以通过控制总线(图16中未画出)与芯片***中的其它子芯片通信。具体的,子芯片0可以通过控制总线收集各个子芯片中端口的待发送数据量等信息,基于这些信息可以分析出各个端口的拥塞情况,进而分析出各个传输路径的拥塞情况。基于这些分析得到的情况,子芯片0可以综合制定该芯片***中的数据传输策略,将以调度信息的方式对应下发给各个子芯片。
例如,对于从子芯片1向子芯片6传输的数据,子芯片0经分析得知子芯片1的端口d2较空闲,并且子芯片5的端口d1也较空闲。那么,子芯片0向子芯片1发送一个调度信息,该调度信息包括子芯片6的标识和端口d2的标识。子芯片1接收到该调度信息后,将目的子芯片为子芯片6对应的发送端口为端口d2的信息更新到自身的转发映射表中。另外,子芯片0向子芯片5发送一个调度信息,该调度信息包括子芯片6的标识和端口d1的标识。子芯片5接收到该调度信息后,将目的子芯片为子芯片6对应的发送端口为端口d1的信息更新到自身的转发映射表中。那么,当子芯片1接收到一个发往子芯片6的数据包后,查询自身的转发映射表获知其发送端口为d2,因此,将数据包从端口d2发出。数据包到达子芯片5后,子芯片5查询自身的转发映射表获知其发送端口为d1,因此,将数据包从端口d1发出,将数据包送达子芯片6。
综上所述,本申请实施例通过基于芯片***内的数据传输情况来传输接收到的数据,从而可以灵活调度数据的发送,提高数据的传输效率,进而提高芯片***的处理性能。
上述主要对本申请实施例提供的芯片***中的数据传输处理方法进行了介绍。可以理解的是,各个设备为了实现上述对应的功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本文中所公开的实施例描述的各示例的单元及步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图17示出了装置的一种具体的逻辑结构示意图,该装置可以是上述源子芯片。该装置1700包括:
接收单元1701,用于接收配置参数;
配置单元1702,用于根据前述配置参数配置预设的流输出表;前述流输出表包括数据流的标识和前述数据流的目的子芯片的标识;前述装置1700和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
执行单元1703,用于执行第一数据处理任务得到输出数据;
生成单元1704,用于基于前述流输出表将前述输出数据生成多个数据包,前述数据包中包括前述数据流的标识和前述目的子芯片的标识;
发送单元1705,用于发送前述多个数据包。
一种可能的实施方式中,前述流输出表还包括前述第一数据处理任务的标识、已发送前述数据流的数据包个数的指示信息和前述装置1700中用于存储前述数据流包括的数据的起始地址中的一项或多项;前述数据包还包括前述第一数据处理任务的标识。
一种可能的实施方式中,前述接收单元1701,还用于在前述生成单元基于前述流输出表将前述输出数据生成多个数据包之前,接收解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识,前述解除封锁数据包用于向前述装置1700指示前述目的子芯片已做好接收前述数据流的准备。
一种可能的实施方式中,前述发送单元1705具体用于:基于端口转发映射表发送前述多个数据包;其中,前述端口转发映射表包括前述目的子芯片的标识与发送端口的映射关系。
一种可能的实施方式中,当前述数据流的目的子芯片为多个时,前述数据包包括前述多个目的子芯片的标识。
一种可能的实施方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;当前述目的子芯片为前述子***的子芯片时,前述数据包还包括前述子***的标识。
图17所示装置1700中各个单元的具体操作以及有益效果可以参见上述图8及其可能的方法实施例中对应的描述,此处不再赘述。
在采用对应各个功能划分各个功能模块的情况下,图18示出了装置的一种具体的逻辑结构示意图,该装置可以是上述目的子芯片。该装置1800包括:
接收单元1801,用于接收配置参数;
配置单元1802,用于根据前述配置参数配置预设的流输入表,前述流输入表包括至少一个待接收的数据流标识;前述装置1800为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
判断单元1803,用于在接收到数据包时,判断前述流输入表中是否包含前述数据包中的数据流标识;
存储单元1804,用于当前述数据包中包含前述待接收的数据流标识时,存储前述数据包中的数据。
一种可能的实施方式中,前述流输入表还包括前述第一数据处理任务的标识、已接收前述数据流的数据包个数的指示信息和前述装置1800中用于存储前述数据流包括的数据的起始地址中的一项或多项;前述数据包还包括前述第一数据处理任务的标识。
一种可能的实施方式中,前述装置1800还包括发送单元,用于在前述接收单元1801接收前述数据包之前,发送解除封锁数据包;其中,前述解除封锁数据包中包括前述数据流的标识和源子芯片的标识,前述解除封锁数据包用于向前述源子芯片指示前述装置1800已做好接收前述数据流的准备;前述源子芯片为前述芯片***中发送前述数据包的子芯片。
一种可能的实施方式中,前述芯片***包括子***,前述子***包括至少两个子芯片,前述子***配置有子***标识;前述数据包还包括前述子***的标识。
图18所示装置1800中各个单元的具体操作以及有益效果可以参见上述图8及其可能的方法实施例中对应的描述,此处不再赘述。
在采用对应各个功能划分各个功能模块的情况下,图19示出了装置的一种具体的逻辑结构示意图,该装置可以是上述中心控制器。该装置1900包括:
分配单元1901,用于为源子芯片分配第一数据处理任务,前述第一数据处理任务执行完成后获得的数据以数据流的形式发往目的子芯片;前述装置1900、前述源子芯片和前述目的子芯片为芯片***包括的多个子芯片中的子芯片,前述多个子芯片以预设的拓扑结构连接;
配置单元1902,用于为前述数据流配置标识;
发送单元1903,用于向前述源子芯片发送前述数据流的标识和前述目的子芯片的标识;其中,前述数据流的标识和前述目的子芯片的标识用于关联存储在前述源子芯片的流输出表;前述流输出表为前述源子芯片发送数据的依据。
一种可能的实施方式中,前述分配单元1901,还用于为前述目的子芯片分配第二数据处理任务,前述第二数据处理任务基于前述第一数据处理任务执行完成后获得的数据执行;
前述发送单元1903,还用于向前述目的子芯片发送前述数据流的标识;其中,前述数据流的标识用于存储在前述目的子芯片的流输入表中,前述流输入表为前述目的子芯片接收数据的依据。
一种可能的实施方式中,前述装置1900还包括:
获取单元,用于获取前述芯片***中子芯片之间的数据传输情况;
生成单元,用于基于前述数据传输情况为前述源子芯片生成调度信息,前述调度信息指示在前述源子芯片中将前述数据流发往前述目的子芯片的发送端口;
前述发送单元1903,还用于向前述源子芯片发送前述调度信息。
图19所示装置1900中各个单元的具体操作以及有益效果可以参见上述图8和图13及其可能的方法实施例中对应的描述,此处不再赘述。
图20所示为本申请提供的装置的一种具体的硬件结构示意图。该装置2000包括:处理器2001、存储器2002和通信端口2003。处理器2001、通信端口2003以及存储器2002可以相互连接或者通过总线2004相互连接。
示例性的,存储器2002用于存储装置2000的计算机程序和数据,存储器2002可以包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-onlymemory,ROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)或便携式只读存储器(compact disc read-only memory,CD-ROM)等。示例性的,该存储器2002可以是上述图2中所示的静态存储器。
通信端口2003包括发送端口和接收端口,通信端口2003的个数可以为多个,用于支持装置2000进行通信,例如接收或发送数据或消息等。示例性地,该通信端口2003可以是上述图2中所示的端口d0、d1、d2和d3。
示例性的,处理器2001可以是中央处理器单元、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。示例性地,该处理器2001可以是上述图2中所示的处理模块。
一种可能的实施方式中,上述装置2000为上述图8及其可能的实施方式中的源子芯片。那么,该装置2000中的处理器2001可以用于读取上述存储器2002中存储的程序,使得装置2000执行如上述图8及其具体的实施例中所述的源子芯片执行的操作。
一种可能的实施方式中,上述装置2000为上述图8及其可能的实施方式中的目的子芯片。那么,该装置2000中的处理器2001可以用于读取上述存储器2002中存储的程序,使得装置2000执行如上述图8及其具体的实施例中所述的目的子芯片执行的操作。
一种可能的实施方式中,上述装置2000为上述图8及其可能的实施方式中的中心控制器。那么,该装置2000中的处理器2001可以用于读取上述存储器2002中存储的程序,使得装置2000执行如上述图8及其具体的实施例中所述的中心控制器执行的操作。
图20所示装置2000中各个单元的具体操作以及有益效果可以参见上述图8及其具体的方法实施例中对应的描述,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行上述图8及其可能的方法实施例中任一实施例所述的源子芯片执行的操作。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行上述图8及其可能的方法实施例中任一实施例所述的目的子芯片执行的操作。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行上述图8及其可能的方法实施例中任一实施例所述的中心控制器执行的操作。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,上述图8及其可能的方法实施例中任一实施例所述的源子芯片执行的操作将被实现。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,上述图8及其可能的方法实施例中任一实施例所述的目的子芯片执行的操作将被实现。
本申请实施例还提供一种计算机程序产品,当该计算机程序产品被计算机读取并执行时,上述图8及其可能的方法实施例中任一实施例所述的中心控制器执行的操作将被实现。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (21)

1.一种芯片***中的数据传输处理方法,其特征在于,所述方法包括:
源子芯片接收配置参数,并根据所述配置参数配置预设的流输出表;所述流输出表包括数据流的标识和所述数据流的目的子芯片的标识;所述源子芯片和所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
所述源子芯片执行第一数据处理任务得到输出数据;
所述源子芯片基于所述流输出表将所述输出数据生成多个数据包并发送,所述数据包中包括所述数据流的标识和所述目的子芯片的标识。
2.根据权利要求1所述的方法,其特征在于,所述流输出表还包括所述第一数据处理任务的标识、已发送所述数据流的数据包个数的指示信息和所述源子芯片中用于存储所述数据流包括的数据的起始地址中的一项或多项;
所述数据包还包括所述第一数据处理任务的标识。
3.根据权利要求1所述的方法,其特征在于,所述源子芯片基于所述流输出表将所述输出数据生成多个数据包并发送之前,还包括:
所述源子芯片接收解除封锁数据包;其中,所述解除封锁数据包中包括所述数据流的标识,所述解除封锁数据包用于向所述源子芯片指示所述目的子芯片已做好接收所述数据流的准备。
4.根据权利要求1所述的方法,其特征在于,所述源子芯片发送所述多个数据包,包括:
所述源子芯片基于端口转发映射表发送所述多个数据包;其中,所述端口转发映射表包括所述目的子芯片的标识与发送端口的映射关系。
5.根据权利要求1所述的方法,其特征在于,当所述数据流的目的子芯片为多个时,所述数据包包括所述多个目的子芯片的标识。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述芯片***包括子***,所述子***包括至少两个子芯片,所述子***配置有子***标识;
当所述目的子芯片为所述子***的子芯片时,所述数据包还包括所述子***的标识。
7.一种芯片***中的数据传输处理方法,其特征在于,所述方法包括:
目的子芯片接收配置参数,并根据所述配置参数配置预设的流输入表,所述流输入表包括至少一个待接收的数据流标识;所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
所述目的子芯片在接收到数据包时,判断所述流输入表中是否包含所述数据包中的数据流标识;
当所述流输入表中包含所述数据包中的数据流标识时,存储所述数据包中的数据。
8.根据权利要求7所述的方法,其特征在于,所述流输入表还包括所述第一数据处理任务的标识、已接收所述数据流的数据包个数的指示信息和所述目的子芯片中用于存储所述数据流包括的数据的起始地址中的一项或多项;
所述数据包还包括所述第一数据处理任务的标识。
9.根据权利要求7所述的方法,其特征在于,所述目的子芯片接收所述数据包之前,还包括:
所述目的子芯片发送解除封锁数据包;其中,所述解除封锁数据包中包括所述数据流的标识和源子芯片的标识,所述解除封锁数据包用于向所述源子芯片指示所述目的子芯片已做好接收所述数据流的准备;所述源子芯片为所述芯片***中发送所述数据包的子芯片。
10.根据权利要求7-9任一项所述的方法,其特征在于,所述芯片***包括子***,所述子***包括至少两个子芯片,所述子***配置有子***标识;
所述数据包还包括所述子***的标识。
11.一种芯片***中的数据传输处理方法,其特征在于,所述方法包括:
控制器为源子芯片分配第一数据处理任务,所述第一数据处理任务执行完成后获得的数据以数据流的形式发往目的子芯片;所述控制器、所述源子芯片和所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
所述控制器为所述数据流配置标识;
所述控制器向所述源子芯片发送所述数据流的标识和所述目的子芯片的标识;其中,所述数据流的标识和所述目的子芯片的标识用于关联存储在所述源子芯片的流输出表;所述流输出表为所述源子芯片发送数据的依据。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
所述控制器为所述目的子芯片分配第二数据处理任务,所述第二数据处理任务基于所述第一数据处理任务执行完成后获得的数据执行;
所述控制器向所述目的子芯片发送所述数据流的标识;其中,所述数据流的标识用于存储在所述目的子芯片的流输入表中,所述流输入表为所述目的子芯片接收数据的依据。
13.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:
所述控制器获取所述芯片***中子芯片之间的数据传输情况;
所述控制器基于所述数据传输情况为所述源子芯片生成调度信息,所述调度信息指示在所述源子芯片中将所述数据流发往所述目的子芯片的发送端口;
所述控制器向所述源子芯片发送所述调度信息。
14.一种源子芯片,其特征在于,所述源子芯片包括:
接收单元,用于接收配置参数;
配置单元,用于根据所述配置参数配置预设的流输出表;所述流输出表包括数据流的标识和所述数据流的目的子芯片的标识;所述源子芯片和所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
执行单元,用于执行第一数据处理任务得到输出数据;
生成单元,用于基于所述流输出表将所述输出数据生成多个数据包,所述数据包中包括所述数据流的标识和所述目的子芯片的标识;
发送单元,用于发送所述多个数据包。
15.一种目的子芯片,其特征在于,所述目的子芯片包括:
接收单元,用于接收配置参数;
配置单元,用于根据所述配置参数配置预设的流输入表,所述流输入表包括至少一个待接收的数据流标识;所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
判断单元,用于在接收到数据包时,判断所述流输入表中是否包含所述数据包中的数据流标识;
存储单元,用于当所述流输入表中包含所述数据包中的数据流标识时,存储所述数据包中的数据。
16.一种控制器,其特征在于,所述控制器包括:
分配单元,用于为源子芯片分配第一数据处理任务,所述第一数据处理任务执行完成后获得的数据以数据流的形式发往目的子芯片;所述控制器、所述源子芯片和所述目的子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接;
配置单元,用于为所述数据流配置标识;
发送单元,用于向所述源子芯片发送所述数据流的标识和所述目的子芯片的标识;其中,所述数据流的标识和所述目的子芯片的标识用于关联存储在所述源子芯片的流输出表;所述流输出表为所述源子芯片发送数据的依据。
17.一种子芯片,其特征在于,包括处理器、存储器和通信端口;其中,所述存储器和通信端口与所述处理器耦合,所述通信端口用于收发数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述子芯片执行如权利要求1-6任一项所述的方法;
所述子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接。
18.一种子芯片,其特征在于,包括处理器、存储器和通信端口;其中,所述存储器和通信端口与所述处理器耦合,所述通信端口用于收发数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述子芯片执行如权利要求7-10任一项所述的方法;
所述子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接。
19.一种子芯片,其特征在于,包括处理器、存储器和通信端口;其中,所述存储器和通信端口与所述处理器耦合,所述通信端口用于收发数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述子芯片执行如权利要求11-13任一项所述的方法;
所述子芯片为芯片***包括的多个子芯片中的子芯片,所述多个子芯片以预设的拓扑结构连接。
20.一种芯片***,其特征在于,所述芯片***包括源子芯片、目的子芯片和控制器;其中,所述源子芯片为权利要求14所述的源子芯片,所述目的子芯片为权利要求15所述的目的子芯片,所述控制器为权利要求16所述的控制器;或者,
所述源子芯片为权利要求17所述的子芯片,所述目的子芯片为权利要求18所述的子芯片,所述控制器为权利要求19所述的子芯片。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-6任意一项所述的方法;或者,
所述计算机程序被处理器执行时,实现权利要求7-10任意一项所述的方法;或者,
所述计算机程序被处理器执行时,实现权利要求11-13任意一项所述的方法。
CN202111633371.XA 2021-12-28 2021-12-28 芯片***中的数据传输处理方法及相关装置 Pending CN114328623A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111633371.XA CN114328623A (zh) 2021-12-28 2021-12-28 芯片***中的数据传输处理方法及相关装置
PCT/CN2022/099777 WO2023123902A1 (zh) 2021-12-28 2022-06-20 芯片***中的数据传输处理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111633371.XA CN114328623A (zh) 2021-12-28 2021-12-28 芯片***中的数据传输处理方法及相关装置

Publications (1)

Publication Number Publication Date
CN114328623A true CN114328623A (zh) 2022-04-12

Family

ID=81014166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111633371.XA Pending CN114328623A (zh) 2021-12-28 2021-12-28 芯片***中的数据传输处理方法及相关装置

Country Status (2)

Country Link
CN (1) CN114328623A (zh)
WO (1) WO2023123902A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023123905A1 (zh) * 2021-12-28 2023-07-06 深圳云天励飞技术股份有限公司 芯片***中的数据传输处理方法及相关装置
WO2023123902A1 (zh) * 2021-12-28 2023-07-06 深圳云天励飞技术股份有限公司 芯片***中的数据传输处理方法及相关装置
CN117041186A (zh) * 2023-10-07 2023-11-10 苏州仰思坪半导体有限公司 数据传输方法、芯片***、计算设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112012006126T5 (de) * 2012-03-29 2014-12-24 Intel Corporation Techniken für die Verwendung einer zugewiesenen Switch-Identifikation an einem Eingabe/Ausgabe-Gerät
CN103067295A (zh) * 2013-01-04 2013-04-24 华为技术有限公司 业务传输的方法、装置与***
CN111274197B (zh) * 2018-12-05 2023-05-16 锐迪科(重庆)微电子科技有限公司 数据处理装置及方法
CN112532714B (zh) * 2020-11-25 2022-06-03 北京金山云网络技术有限公司 一种数据处理方法、处理装置、服务器及存储介质
CN112667557A (zh) * 2021-03-16 2021-04-16 南京蓝洋智能科技有限公司 一种适用于chiplet架构的数据传输方法
CN114328623A (zh) * 2021-12-28 2022-04-12 深圳云天励飞技术股份有限公司 芯片***中的数据传输处理方法及相关装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023123905A1 (zh) * 2021-12-28 2023-07-06 深圳云天励飞技术股份有限公司 芯片***中的数据传输处理方法及相关装置
WO2023123902A1 (zh) * 2021-12-28 2023-07-06 深圳云天励飞技术股份有限公司 芯片***中的数据传输处理方法及相关装置
CN117041186A (zh) * 2023-10-07 2023-11-10 苏州仰思坪半导体有限公司 数据传输方法、芯片***、计算设备及存储介质
CN117041186B (zh) * 2023-10-07 2024-01-30 苏州仰思坪半导体有限公司 数据传输方法、芯片***、计算设备及存储介质

Also Published As

Publication number Publication date
WO2023123902A1 (zh) 2023-07-06

Similar Documents

Publication Publication Date Title
CN108319563B (zh) 一种基于fpga的网络功能加速方法和***
CN114328623A (zh) 芯片***中的数据传输处理方法及相关装置
US8312197B2 (en) Method of routing an interrupt signal directly to a virtual processing unit in a system with one or more physical processing units
US10305823B2 (en) Network interface card configuration method and resource management center
US8526422B2 (en) Network on chip with partitions
EP2486715B1 (en) Smart memory
US7613902B1 (en) Device and method for enabling efficient and flexible reconfigurable computing
US20090282211A1 (en) Network On Chip With Partitions
CN109154897B (zh) 分布式处理方法、存储介质、和分布式处理***
CN105408879A (zh) 快捷***部件互连域的资源管理
CN110995598B (zh) 一种变长报文数据处理方法和调度装置
US11675633B2 (en) Virtualised gateways
CN106936739B (zh) 一种报文转发方法及装置
CN112753198B (zh) 在网络中的负载均衡和报文重排序方法及装置
US20210181957A1 (en) High bandwidth memory system with distributed request broadcasting masters
CN114297130A (zh) 芯片***中的数据传输处理方法及相关装置
CN115061973B (zh) 一种基于非对称多处理模式的网卡映射方法及设备
CN104378161A (zh) 一种基于AXI4总线架构的FCoE协议加速引擎IP核
CN110958189B (zh) 一种多核fpga网络处理器
CN107832149A (zh) 一种针对多核处理器动态分组管理的Receive‑side Scaling电路
CN117215989B (zh) 一种异构加速设备、***、方法、装置及存储介质
CN104301228A (zh) 网络处理器中查找模块的实现方法及***
US10872291B2 (en) On-chip communication system for neural network processors
CN105939242B (zh) 实现虚拟***的方法及装置
CN115756296A (zh) 缓存管理方法和装置、控制程序及控制器

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