CN117041186A - 数据传输方法、芯片系统、计算设备及存储介质 - Google Patents

数据传输方法、芯片系统、计算设备及存储介质 Download PDF

Info

Publication number
CN117041186A
CN117041186A CN202311279547.5A CN202311279547A CN117041186A CN 117041186 A CN117041186 A CN 117041186A CN 202311279547 A CN202311279547 A CN 202311279547A CN 117041186 A CN117041186 A CN 117041186A
Authority
CN
China
Prior art keywords
chip
data
information
packets
data sub
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.)
Granted
Application number
CN202311279547.5A
Other languages
English (en)
Other versions
CN117041186B (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.)
Suzhou Yangsiping Semiconductor Co ltd
Original Assignee
Suzhou Yangsiping Semiconductor 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 Suzhou Yangsiping Semiconductor Co ltd filed Critical Suzhou Yangsiping Semiconductor Co ltd
Priority to CN202311279547.5A priority Critical patent/CN117041186B/zh
Publication of CN117041186A publication Critical patent/CN117041186A/zh
Application granted granted Critical
Publication of CN117041186B publication Critical patent/CN117041186B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures
    • H04L49/506Backpressure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例涉及数据传输技术领域,提供一种数据传输方法、芯片系统、计算设备及存储介质。该方法包括:第一芯片解析待发送的多个数据子包,得到多个数据子包各自的待更新信息;将多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息;完整数据包的头部信息包括所需传输的终点位置,边带信息少包括路由信息;基于终点位置以及路由信息确定第二芯片的芯片信息;第二芯片为完整数据包在芯片系统中需要到达的下一个芯片;基于第二芯片的芯片信息,分别更新多个数据子包各自的待更新信息;向第二芯片发送更新后的多个数据子包。本申请降低芯片间的数据传输量,减少数据传输所需的带宽,提升芯片间数据传输性能。

Description

数据传输方法、芯片系统、计算设备及存储介质
技术领域
本申请实施例涉及数据处理领域,更具体地涉及一种数据传输方法、芯片系统、计算设备及存储介质。
背景技术
大型神经网络加速器可以由多个节点组成。其中,节点可以是多核的芯片,也可以是多个单核芯片。这些芯片之间往往通过一个片间网络连接,由片间网络组织并完成一些较为复杂的任务。比如,神经网络中的数据计算任务、计算加速任务、对象识别任务,等等。
相关技术中,如果片间网络所连接的芯片数量比较多,芯片间的数据传输速度慢,调度难度增加,导致神经网络的加速效率下降。
因此,如何提升芯片间的数据传输性能,成为一个极大的挑战。
发明内容
本申请实施例提供一种数据传输方法、芯片系统、计算设备及存储介质,用于将完整数据包拆分为数据子包,并通过数据子包实现芯片间的数据传输,以降低芯片间的数据传输量,减少数据传输所需的带宽,提升芯片系统的数据传输性能。
第一方面,本申请实施例提供一种数据传输方法,适用于第一芯片,第一芯片接入芯片系统中,芯片系统由采用特定拓扑结构连接的多个芯片组成;上述方法包括:
第一芯片解析待发送的多个数据子包,得到多个数据子包各自的待更新信息;待更新信息包括:头部信息和边带信息;
将多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息;完整数据包的头部信息至少包括完整数据包所需传输的终点位置;完整数据包的边带信息至少包括完整数据包的路由信息;
基于终点位置以及路由信息确定第二芯片的芯片信息;第二芯片为完整数据包在芯片系统中需要到达的下一个芯片;
基于第二芯片的芯片信息,分别更新多个数据子包各自的待更新信息,得到更新后的多个数据子包;
向第二芯片发送更新后的多个数据子包。
第二方面,本申请实施例提供一种芯片系统,该芯片系统包括多个芯片,所述多个芯片之间以特定拓扑结构连接;
所述多个芯片,用于处理各自接收到的数据子包或者由接收到的数据子包拼接得到的完整数据包;
所述多个芯片中的至少一个芯片,被配置用于执行如第一方面提出的数据传输方法。
在一种可能的设计中,上述芯片系统还包括存储器,该存储器用于保存终端必需的程序指令和数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第三方面,本申请实施例提供一种计算设备,其包括存储器,如上述的芯片系统及存储在存储器上并可在芯片系统上运行的计算机程序,其中,芯片系统执行计算机程序时实现如上述的数据传输方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机的芯片系统执行如上述的数据传输方法。
第五方面,本申请实施例提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述数据传输方法。
相较于现有技术,本申请实施例中,提出了一种适用于芯片系统中芯片的数据传输方法。假设该方法应用于芯片系统中的第一芯片,该芯片系统由采用特定拓扑结构连接的多个芯片组成。基于此,第一芯片解析待发送的多个数据子包,得到多个数据子包各自的待更新信息。本申请中提供了特殊数据结构,通过这一特殊数据结构能够减少每次数据传输过程中所需计算的数据量,从而提升数据传输性能,具体来说,本申请中,多个数据子包中包含每次传输需要更新的待更新信息,即头部信息和/或边带信息。接着,将多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息;完整数据包的头部信息至少包括完整数据包所需传输的终点位置;完整数据包的边带信息至少包括完整数据包的路由信息。也就是,由多个数据子包的待更新信息可以拼接得到完整数据包的待更新信息,这样,每次向下一个芯片传输数据时仅需这一部分信息,大大提升了数据传输效率,节省了芯片算力。进而,基于终点位置以及路由信息确定第二芯片的芯片信息,这里,第二芯片为完整数据包在芯片系统中需要到达的下一个芯片。最终,基于第二芯片的芯片信息,分别更新多个数据子包各自的待更新信息,得到更新后的多个数据子包;向第二芯片发送更新后的多个数据子包。这样,通过本申请提出的上述方案,能够将完整数据包拆分为数据子包,并通过数据子包实现芯片间的数据传输,以降低芯片间的数据传输量,减少数据传输所需的带宽,保证数据的快速流通,提升芯片系统的数据传输性能。
附图说明
通过参考附图阅读本申请实施例的详细描述,本申请实施例的目的、特征和优点将变得易于理解。其中:
图1为本申请实施例中芯片系统的示意图;
图2为本申请实施例的数据传输方法的流程图;
图3为本申请实施例的数据结构转换方式的原理示意图;
图4为本申请实施例的数据的整合过程的原理示意图;
图5为本申请实施例的轮询仲裁器的轮询顺序的原理示意图;
图6为本申请实施例的缓冲反压机制的原理示意图;
图7为本申请实施例的路由更新方法的原理示意图;
图8为本申请实施例的芯片间拓扑结构的一种示意图;
图9为本申请实施例的芯片间拓扑结构的另一种示意图;
图10为本申请实施例的芯片间拓扑结构的再一种示意图;
图11为本申请实施例的芯片间拓扑结构的又一种示意图;
图12为本申请实施例的数据传输装置的示意图;
图13为本申请实施例的计算设备的一种结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象(例如第一对象和第二对象分别表示为不同的对象,其他类似),而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行。另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合,通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
为了满足用户对神经网络运算能力的提升要求,相关技术通过多块芯片联合作业,使得现有的神经网络系统能力大大提升。
多块芯片联合作业涉及到数据并行技术和模型并行技术。数据并行是指把待处理的数据划分成若干数据块,将该若干数据块分别分配到不同的芯片组上,每一个芯片组运行同样的处理程序对所分派的数据进行处理。例如,假设待处理数据被划分为两个数据块,现有两个芯片组可以运行同样的处理程序来处理数据块,那么,可以将该两个数据块中的第1数据块发送给该两个芯片组中的第1个芯片组处理,将该两个数据块中的第2数据块发送给该两个芯片组中的第2个芯片组处理。
模型并行是指多个芯片组共同完成一个数据处理任务,该多个芯片组中每一个芯片组只执行整个数据处理任务的部分步骤(该部分步骤可以是一个或多个处理步骤)。例如,假设一个数据处理任务需要经过3个步骤才能完成处理,那么,可以配置两个芯片组来共同完成该任务。其中,第1个芯片组完成该3个步骤中的前两个步骤的处理,第2芯片组从第1芯片组获取处理后的数据以完成第3个步骤的处理。需要说明的是,每个芯片组完成的步骤可以是一个或多个,具体可以根据芯片组的负载情况和资源使用情况来确定。
模型并行加数据并行的方式是结合了上述数据并行和模型并行两种方式来处理数据。需要说明的是,模型并行加数据并行的方式中,可以是每个处理步骤都采用数据并行的处理方式来处理,或者可以是部分处理步骤采用数据并行的处理方式来处理,具体可以根据具体实现确定,本申请对此不做限制。
在具体实现中,采用模型并行或者模型并行加数据并行的方式实现数据任务的处理,需要在芯片之间进行数据的传输。数据传输会产生时延导致芯片系统的处理效率降低。本申请提供的数据传输方法、芯片系统、计算设备及存储介质,能够有效提升数据传输性能。
以下结合图1至图13对本申请的技术方案进行示例性说明。
图1为本申请实施例中适用数据传输方法的系统示意图。
图1中示例性示出了芯片系统,该芯片系统包括多个子芯片,多个子芯片可以以多种形式连接。此处,子芯片可以实现为本申请中的第一芯片、第二芯片、第三芯片、第四芯片,也可以实现为包含片上网络的各种芯片。本申请实施例中,多个芯片之间的特定拓扑结构,比如可以是二维拓扑结构,如长方形、多边形、星形结构等。可选地,芯片系统中多个芯片之间可以采用三维拓扑结构连接。例如,多个芯片之间的特定拓扑结构也可以是三维拓扑结构,如立体结构、不规则立体结构等。通过选用合适的拓扑结构可以缩短多个芯片之间的数据传输路径,从而减少连线冗余,减少多个芯片所占用,提升多个芯片之间的数据传输效率。此外,对于大型神经网络加速任务,需要大量芯片并行处理以提高任务处理效率,可以将多个芯片作为一个芯片系统,进而,由一个或多个芯片系统为不同类型的神经网络模型进行加速。
图1中示例性示出芯片的结构,可以实现为片上网络(Network On Chip,NOC)结构,通过片上网络这一结构可以将芯片内部的模块连接在一起,用于处理神经网络中的各种任务,例如神经网络的加速任务。图1示出的芯片结构可以是芯片系统中的子芯片的内部结构。
图1中,芯片内部的模块包括片上网络模块。此外,芯片还可以包括处理模块、存储器、内存控制器、静态存储器、端口等中至少一个。
例如,处理模块可以为控制单元(Control Unit,CU),负责芯片中各个处理流程的管理。在芯片中,片上网络模块负责芯片内部的数据同步、芯片之间的数据同步、数据广播和数据传输等。其中,片上网络模块可以独享或者共享一个控制单元,该控制单元用于负责片上网络模块中路由管理。片上网络模块中还包括本地的缓冲区,用于暂时存储待处理的数据、缓存数据子包中数据、地址等。
例如,端口可以是芯片的一个或者多个网络接口,可以实现芯片与芯片之间的数据传输。
例如,内存控制器(如DDR控制器等)与芯片对应的内存连接。存储器可以是静态随机存取存储器(Static Random-Access Memory,SRAM)等,用于存储芯片中的数据。
图2为本申请实施例的数据传输方法的流程图。该数据传输方法适用于芯片系统(如虚线框示出的芯片系统)中的一个芯片。示例性地,可以应用于芯片上的片上网络模块。芯片系统中,多个芯片以特定的拓扑结构连接,如图1中的虚线框部分所示的环形对称结构。此外,拓扑结构还可以是其它连接形状,在此不做限定。
参见图2,上述数据传输方法可以包括步骤201至205。本申请实施例中,为区分,将当前执行数据传输流程的芯片称为第一芯片。该第一芯片接入芯片系统中,该芯片系统由采用特定拓扑结构连接的多个芯片组成。
步骤201,第一芯片解析待发送的多个数据子包,得到多个数据子包各自的待更新信息。
步骤202,将多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息。本申请实施例中,完整数据包的头部信息至少包括完整数据包所需传输的终点位置,完整数据包的边带信息至少包括完整数据包的路由信息。
步骤203,基于终点位置以及路由信息确定第二芯片的芯片信息。本申请实施例中,第二芯片为完整数据包在芯片系统中需要到达的下一个芯片。
步骤204,基于第二芯片的芯片信息,分别更新多个数据子包各自的待更新信息,得到更新后的多个数据子包。
步骤205,向第二芯片发送更新后的多个数据子包。
通过上述步骤201至205,能够将完整数据包拆分为数据子包,并通过数据子包实现芯片间的数据传输,以降低芯片间的数据传输量,减少数据传输所需的带宽,保证数据的快速流通,提升芯片系统的数据传输性能。
在步骤201中,第一芯片解析待发送的多个数据子包,得到多个数据子包各自的待更新信息。
本申请实施例中,采用了一种特殊的数据结构。将一个长段的完整数据包分成数个数据子包,其中每个数据子包又包括多个不同的数据片段,即头部信息(header)、边带信息(sideband)、数据(data)。这样,可以将每个完整数据包分割成多个可并行传输的数据子包,从而减少每个数据子包所占用的带宽,提升数据传输性能。同时,数据子包中头部信息和边带信息需要在各个节点进行更新,而数据部分则无需更新,因此可以进一步降低数据处理时长,进一步提升数据传输性能。
具体来说,数据子包是在芯片的数据发送过程中由完整数据包拆分得到的。完整数据包至少包括:头部信息(header)、边带信息(sideband)、数据(data)。而拆分后的各个数据子包也具有对应的三个部分,各个数据子包中的头部信息、边带信息、数据是由完整数据包的三个部分信息拆分得到的。因此,通过全部数据子包可以拼接得到上述三个部分的完整信息,即完整数据包的头部信息、边带信息、数据。示例性地,完整数据包参见图3的长条数据。数据子包的数量可以是特定个数,比如,2个、4个,等等。数据子包包括头部信息和边带信息。
在一可选实施例中,步骤201中,通过解析多个数据子包的预设部分,可以得到多个数据子包各自的待更新信息。解析操作可以是接到每个数据子包之后直接执行的,也可以是将关联的数据子包存储之后统一执行的,还可以是基于芯片处理能力动态调节解析执行周期的,本申请并不限定。
其中,待更新信息是指数据传输过程中在路由到各个芯片后需要更新的信息。本申请实施例中,待更新信息至少包括:头部信息(header)和边带信息(sideband)。此外,数据子包中还包括无需更新的部分,即:数据(data)。这样,芯片每次仅需处理待更新信息这一部分数据,而无需对其他部分数据进行计算,大大降低了计算量,提升了数据传输性能。
在步骤202中,将多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息。
步骤203,基于终点位置以及路由信息确定第二芯片的芯片信息。参见上文,第二芯片为完整数据包在芯片系统中需要到达的下一个芯片。可选地,芯片系统中与第一芯片连接的第二芯片的数量可调整。
本申请实施例中,完整数据包的头部信息至少包括完整数据包所需传输的终点位置,完整数据包的边带信息至少包括完整数据包的路由信息。例如,完整数据包的头部信息是通过多个数据子包(即全部数据子包)的头部信息拼接得到的,完整数据包的边带信息是通过多个数据子包(即全部数据子包)的边带信息拼接得到的。具体而言,完整数据包的头部信息包括特定个数(即一个完整数据包在被拆分传输时,得到的全部数据子包的数量)的数据子包的头部信息,完整数据包的边带信息包括特定个数的数据子包的边带信息。
示例性地,完整数据包所需传输的终点位置可以是不同片上的芯片的地址信息,也可以是同一片上的不同芯片的地址信息。
在一些实施例中,上述方法在基于终点位置输出完整数据包对应的多个数据子包之前,还可以包括如下操作:获得第二芯片的数据子包存储指示信息,该数据子包存储指示信息表征第二芯片(即可以接收这些数据子包的下游芯片)中可存放数据子包的最大数量。实际应用中,数据子包存储指示信息可以实现为:信用(credit)信息。
示例性地,在步骤203中,从所述路由信息中获取当前的数据子包存储指示信息。该数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量。若可存放数据子包的数量大于设定阈值,则基于所述终点位置以及所述路由信息,获取所述第二芯片的芯片地址。
示例性地,完整数据包的边带信息是通过拼接特定个数的数据子包的边带信息之后,基于数据子包存储指示信息对拼接结果进行计算得到的。数据子包的边带信息,至少包括以下一种:数据子包在完整数据包中所处的位置信息、数据子包的终点位置(如目标芯片的地址信息)、数据子包存储指示信息(如credit的更新信息)。
例如,以一个完整数据包分割为四个数据子包为例进行说明。
基于上述假设,四个数据子包的sideband拼在一起后可以得到以下信息,即:完整数据包在整段数据中的位置,完整数据包需要到达的终点位置、credit的更新信息。
继续基于上述假设,四个数据子包的header拼在一起之后可以得到完整数据包是单通道或者是多通道数据,还可以得到完整数据包的终点位置。
其中,credit可以作为芯片之间传输数据的一种工具。例如,该工具是基于credit的一种缓冲反压机制(参见图6),之后当内部的credit计算器计算出下游仍空余可以存放数据子包(如credit不等于0)时,才会向下游(即第二芯片)发送数据子包。这其中,当下游的对应存储空间中出现新的空余存储空间时,下游将向上游(即第一芯片)发送对应数量的credit以便于上游计算当前下游存储空间中数据子包的存储情况。
可以理解的是,本申请在描述过程中并不限定某一芯片为第一芯片或第二芯片。而是以数据子包的数据流向来区分,将在接收到数据子包之后对数据子包进行处理的芯片称为第一芯片,将接收由第一芯片处理完的数据子包的芯片称为第二芯片。因此,当第二芯片接收到数据子包之后,如果需要继续传输数据子包,那么,此情况下,可以将当前的第二芯片看作是新的第一芯片,将后续接收数据子包的芯片看作是新的第二芯片。
其中,当数据子包被传送到一块芯片(即第一芯片)时,数据子包的header信息部分将会被解析,得到数据子包的终点以及单双通道信息,数据子包的其他部分将存放在对应的虚拟通道(Virtual Channel ,VC)中。在来自同一个完整数据包的数据子包中,第一个数据子包被称为头数据子包,在传输数据时对于头数据子包需要单独特殊说明,并且在传输数据时需要表明当前传输的数据子包是否为头数据子包。
在一可选实施例中,步骤201中第一芯片解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息之前,还可以接收从第四芯片接收多个数据子包。所述第四芯片位于所述芯片系统中所述第一芯片上游。进而,根据所述多个数据子包中的时钟信息,设置所述第一芯片的时钟信息。进而,在步骤201中,第一芯片解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息,包括:解析所述多个数据子包的预设位置,得到所述多个数据子包各自的头部信息和/或边带信息。
示例性地,在第一芯片中设置有数据子包的接受层。该接受层接收到数据子包之后,根据数据子包中携带的时钟信息对第一芯片的时钟信息进行调整。此后,接受层会对数据子包进行解析,并且会将多个数据子包恢复成数据分包前的整段数据(即完整数据包),并对整段数据(即完整数据包)的header信息进行解析,将header信息、sideband信息、data信息分别送入对应的其他模块中进行存储。
在步骤204中,基于第二芯片的芯片信息,分别更新多个数据子包各自的待更新信息,得到更新后的多个数据子包。
基于前文示例,在步骤204中,基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包。
在步骤205中,向第二芯片发送更新后的多个数据子包。
示例性地,从所述边带信息中获取所述多个数据子包各自在所述完整数据包中所处的位置。进而,按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包。
基于上述示例,进一步假设多个数据子包按照各自所处的位置划分为:头数据子包、体数据子包、尾数据子包。基于此,在上述按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包的步骤中,按照头数据子包、体数据子包、尾数据子包的顺序,从前到后依次向所述第二芯片依次发送所述多个数据子包。
参见图3,完整数据包表示为长条数据拆分出的多个数据包,长条数据表示的是片间通讯时数据的主要展示形式。其中,每个完整数据包分解成的多个数据子包,分别表示不同片段数据在片间通讯模块内部所使用的数据结构。例如,完整数据包可以分解成4个数据子包,这4个数据子包如图3左下角所示的四行条形数据所示,其中,每一行条形数据视为一个数据子包。如图3所示的一个长条数据中带有header信息和sideband信息,但是当长条数据分割成数据子包时,需要对这些信息进行拆分,而在后续整合过程中又会根据数据子包的顺序将各个数据子包中的header信息和sideband信息放入完整数据包对应的待更新信息中。例如,由完整数据包分成四个数据子包时,header、sideband和data中的每一种将会被分割成四个部分,这里,header、sideband和data分别表示为图3左下角所示的四行条形数据中的3列数据信息。
其中,sideband中携带有顺位指示信息,该顺位指示信息用于表明当前数据子包在完整数据包所处的顺位,即:头数据子包(head)、尾数据子包(tail)、体数据子包(body)。简单来说,每一个长条数据的第一个数据子包的sideband将会通过顺位指示信息表明为头数据子包,最后一个数据子包将会通过顺位指示信息标明为尾数据子包,中间部分将会通过顺位指示信息表明为体数据子包。
从同一完整数据包中分割出来的不同顺位数据子包,可以是并行传输的,也可以是串行传输的。在一可选实施例中,可以通过识别sideband中携带的顺位指示信息来确定数据子包在完整数据包中所处的位置。
需要说明的是,本实施例中确定数据子包(由完整数据包分割成为的数据子包)是否为头数据子包、体数据子包、尾数据子包的方式,可以替换为其他方式。
参见图4,在数据子包的发送层,需要对数据子包进行合包操作,具体地,将数据子包按照各自所属的类型以及对应顺位,即头数据子包(head)、尾数据子包(tail)、体数据子包(body)的顺序,依次排列拼接,得到最终的长条形数据。在图4中,在合包时,需要对每个数据子包的header和sideband进行计算,再将credit的信息放入数据子包的header部分,并将计算结果与data部分拼接。其中,header、sideband、data各个部分均按照上述数据子包的顺序排列拼接。
除上述计算方式之外,还可依据数据子包的其他要求定制数据子包的header和sideband,在计算得到芯片系统的下游节点(即第二芯片)有空余存储空间时才会将数据子包发出。
基于上文介绍,数据子包按照在完整数据包中所处的位置分成三个类型,即:头数据子包(head)、尾数据子包(tail)、体数据子包(body)。相应地,按照头尾顺序依序拼接数据子包得到完整数据包的方式,可以实现为:按照头数据子包、体数据子包、尾数据子包的顺序拼接完整数据包,得到完整数据包。例如,在完整数据包的整合拼接过程中,每一个完整数据包的四个数据子包中的header、sideband和data将会分别进行整合拼接,最后变成完整数据包中对应的三个部分,从而,由数据子包依照上述顺序,即从头数据子包开始到尾数据子包结束,构成长条数据。
在一些实施例中,对数据子包进行合包操作,得到待发送数据子包可以包括如下操作。首先,基于更新路由表拼接特定个数的数据子包的头部信息,得到完整数据包的头部信息;结合数据子包存储指示信息,基于更新路由表拼接特定个数的数据子包的边带信息,得到完整数据包的边带;以及基于更新路由表拼接特定个数的数据子包的,得到完整数据包的数据。然后,基于完整数据包的头部信息、边带信息、数据,构建得到完整数据包。
本实施例中,基于上述特殊的数据结构,可以通过合包操作将多个数据子包按照各自在完整数据包中所处位置匹配的顺序进行排列,各待发送数据子包的排列顺序和发送顺序可以是一致的。如果有需要处理完整数据包则可以进一步通过拼接的方式处理多个数据子包得到完整数据包。
由于在芯片系统的下游芯片可存储数据子包时,上游芯片才会向下游芯片发送数据子包,而不是接收到数据子包之后即刻发送,因而,能够有效保障上下游芯片之间的数据流通效率,避免数据传输带宽堵塞,以及避免数据子包在传输过程中出现下游无法再接收数据(或数据溢出)等问题的发生。
在某些实施例中,可选地,多个片上网络模块分别设置于多个位于同一片上的芯片中,用于实现片上网络路由。
在一些实施例中,步骤205中,向第二芯片发送更新后的多个数据子包,包括:利用带权重的轮询仲裁器处理不同通道发出的占用通道请求;对于在请求处理的过程中单通道占用的情况下,采用轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件。这样,通过轮询仲裁器可以规划不同数据子包传输过程中所占用的传输通道,避免数据传输过程中出现与传输通道相关的问题。实际应用中,具体选择何种传输通道,可以参考前文中对单通道/双通道的设置参数。
具体地,采用轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件可以包括如下操作。首先,将当前询问的可占用通道的下一可占用通道作为起始通道,以便基于该起始通道执行下一轮的询问。然后,询问每一个可占用通道,直至询问次数达到最大可询问次数或者接收到第一个发出请求的通道。
可以理解的是,片上网络路由的优化方面主要在于仲裁器的使用以及在大型片上网络中的路径规划方面。仲裁器可以为轮询仲裁器。为了处理需要使用多通道传输的数据子包同时占用下游同一通道的情况,利用带权重的轮询仲裁器对不同芯片间通道发出的占用通道请求进行处理。在请求处理的过程中根据请求的芯片间通道数量,可以将请求分为多通道占用和单通道占用两种情况。在单通道请求占用的情况下,轮询仲裁器将会依序询问每一个可能需要占用芯片间通道来传输数据子包的数据通道接口,直到碰到第一个发出请求的数据通道接口。当一个数据通道接口获得使用芯片间通道的许可,该数据通道接口使用芯片间通道的时长决定于数据通道接口以及该数据通道接口的权重,当该数据通道接口对芯片间通道的许可结束,轮询仲裁器将会依序询问之后的各数据通道接口是否需要使用该芯片间通道。
具体而言,在一示例中,参见图5,如图所示即为轮询仲裁器的轮询顺序,如图5所示,当轮询仲裁器开始工作时,将会以一定顺序来询问各个模块需要占用资源的情况。假设这一顺序为模块1,模块2,……,模块n。当轮询仲裁器开始工作时,会先询问模块1是否需要占用资源,如果不需要,则询问模块2是否需要使用,以此类推。假设模块i之前的模块都不需要占用资源,其中i小于n,而模块i需要占用,则模块i占用资源。当达到模块i可以使用资源的最大数据个数或者资源可以被使用的最大数据个数时,则开始下一轮的询问。下一轮的询问将从模块i+1开始询问。
需要说明的是,本实施例中的轮询仲裁器可以替换为其他类型的仲裁器。
在某些实施例中,第一芯片与至少一个其他芯片之间通过芯片系统相连。进一步可选地,第二芯片为终点位置所在的目标芯片。或者,第二芯片为第一芯片与目标芯片之间的中介芯片。芯片系统的拓扑结构与前文介绍类似,此处暂不展开。
本申请实施例中,可选地,步骤205中向第二芯片发送更新后的多个数据子包之前,接收所述第二芯片产生的反压控制信号。其中,所述反压控制信号是所述第二芯片基于对应的存储空间中可存放数据子包的数量动态生成的;所述反压控制信号包括数据子包存储指示信息;所述数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量。
进一步可选地,向所述第二芯片发送所述更新后的多个数据子包之后,若检测到所述第二芯片接收到的多个数据子包,则对反压计算器中存储的可存放数据子包的数量减去对应数量。若检测到所述第二芯片的存储空间向第三芯片输出数据子包,则对反压(credit)计算器中存储的可存放数据子包的数量增加对应数量。进而,基于减少或增加后的可存放数据子包的数量,更新所述数据子包存储指示信息。最终,向所述芯片系统中位于所述第二芯片上游的芯片发送更新后的所述数据子包存储指示信息。
示例性地,在片间通讯中,主要包含数据流控制(即反压控制信号)的传递。在数据流控制中,可以通过运用基于credit的缓冲反压机制来实现。在这种反压机制中,将数据子包的发送端称为上游,数据子包的接收端称为下游。具体地,控制向下游发送待发送数据子包可以包括如下操作:首先,确定数据子包存储指示信息的数值。然后,如果数值非零,在对待发送数据子包的下游传输待发送数据子包时,由计算器对数值减一。接着,如果待发送数据子包的下游的存储空间输出一个数据子包,则向该下游的上游发送可传输数据子包数量增加信息,由上游的计算器基于可传输数据子包数量增加信息更新数据子包存储指示信息的数值。例如,当数据上游给数据下游发送有效数据时,首先需要通过其中的credit计算器来判断数据下游中是否拥有足够多的数据存储空间(credit的值足够大)可以进行数据传输,如果数据下游拥有足够大的credit的值,在对数据下游进行数据传输的同时由credit计算器对数据下游对应的credit计数减一。当数据下游中对应的存储空间中每输出一个数据时,就会向数据上游发送一个credit,数据上游将会将这个credit加进credit计数中。在初始化时,将会将数据上游的credit设置成数据下游所能存储的最多的数据个数,其中,credit的值并不会包含数据下游用于处理数据堵塞的缓冲区域。
在某些实施例中,假设反压控制信号存储在数据子包的头部信息和/或边带信息中。基于此假设,可选地,所述反压控制信号还用于表示所述数据子包对数据子包存储指示信息的携带状态。其中,所述数据子包存储指示信息的携带状态包括以下任意一种:带有所述数据子包存储指示信息、不带有所述数据子包存储指示信息、只有所述数据子包存储指示信息、不使用所述数据子包存储指示信息。
此外,为了方便观测芯片内部的运行情况,如统计各个方向的流量,或停止运行的时间和状况等,在芯片内部有用于实现此功能的配置状态寄存器。此寄存器一方面可以用于观测芯片内部,一方面可以在芯片运行出现问题时通过软件控制实现清空等操作。
此外,片间通讯方案可以通过数据清空操作避免可能会遇到的数据损坏导致的通道堵塞。
以下对基于credit的缓冲反压机制进行示例性说明。图6对应的本申请实施例中,示例性给出了一种可能的基于credit的缓冲反压机制。
具体而言,在一可选实施例中,参见图6,假设有缓冲区1和缓冲区2两个缓冲区,它们之间会互相传输数据。当一个带credit的数据子包发送到缓冲区1时,缓冲区1首先需要通过四个数据子包合成的sideband来判断数据子包中是否带有credit,如果没有带有credit,则缓冲区1对此不做处理,如果带有credit,则在缓冲区2对应的credit计数器上加上相应的数值。在需要将数据发送至缓冲区2时,先需要计算缓冲区2对应的credit计数器是否为0。如果为0,说明缓冲区2并没有多余的存储空间,则需要等待缓冲区2有数据子包流出之后,即可产生空余的存储空间,此情况下可以将空余存储空间的信息通过credit机制更新到与该芯片连接的其他芯片侧,用以促进数据子包的传递。如果缓冲区2对应的credit计数器不为0,则在发送数据的同时需要减去与数据子包个数相同的credit,若credit归0则停止发送。此外,还可以设立两个阈值,如果缓冲区1连续接收的数据个数大于数据个数阈值,或者缓冲区1连续没有收到缓冲区2的credit的时间大于时间阈值,则缓冲区1会向缓冲区2发送只带有credit信息的数据子包。
需要说明的是,本实施例中片间通讯的反压机制是基于credit的缓冲反压机制,可以替换为其它数据传输中的反压方式。基于credit的缓冲反压机制同样可以适用于片间通讯。
以下对路由信息更新过程进行示例性说明。
需要传输数据的两个芯片之间可以是直接连接,也可以是间接连接的。以下对间接连接的两个芯片之间的数据传输过程进行示例性说明。
在某些实施例中,当前芯片与多个位于同一片上的n个芯片之间直接通过有线连接,该当前芯片通过中介芯片与目标芯片间接相连。其中,中介芯片是n个芯片中的一个或多个,目标芯片与当前芯片通过中介芯片间接连接。
相应地,当前芯片和目标芯片之间需要传输数据时,需要通过中介芯片进行路由。具体地,上述数据处理方法还包括:如果完整数据包流进中介芯片,则中介芯片的片上网络模块更新完整数据包的头部信息,并且根据完整数据包的头部信息发送完整数据包,直至完整数据包到达目标芯片,其中,中介芯片为与完整数据包的头部信息匹配失败的芯片,如地址不匹配。
例如,每一个芯片可与物理上有直接连线的n块芯片直接连接,如果需要和其它的芯片通讯,则需要通过其他芯片(即中介芯片)来进行。因此在一个数据流进一个芯片时,这块芯片需要判断这个数据是否是自己应该接收的数据。如果不是自己需要接收的数据,则在输出时需要进行路由更新,并发送到相应的芯片上。在片上网络的路径规划方面,还可以设置对最短路径的非锁死功能,从而提升路径规划的灵活性,保障芯片间的数据流通效率。
在某些实施例中,中介芯片基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包,可以包括如下操作:
将所述完整数据包的头部信息和边带信息输入第一先进先出存储器;将所述完整数据包中无需更新的数据信息输入第二先进先出存储器;对所述第一先进先出存储器中的头部信息和边带信息进行解析,获得所述第二芯片的芯片地址,以更新路由信息;将所述第一先进先出存储器中更新路由信息后的头部信息和边带信息,与所述第二先进先出存储器中的数据信息进行拼接,得到更新路由信息后的多个数据子包。
具体来说,首先,以头数据子包为例,将头数据子包中的头部信息和边带信息输入第一先进先出存储器,将头数据子包中的无需更新的数据信息输入第二先进先出存储器。第一先进先出存储器和第二先进先出存储器可以是同类型或不同类型的存储器。然后,第一先进先出存储器对头数据子包的头部信息和边带信息进行解析,获得该头数据子包所要达到的下一个芯片的芯片地址信息,以更新路由信息。接着,将第一先进先出存储器输出的更新路由信息后的头部信息和边带信息与第二先进先出存储器输出的数据进行拼接,得到更新路由信息后的多个数据子包。类似地,对体数据子包和尾数据子包均执行上述处理步骤,得到对应的更新路由信息后的多个数据子包。进而,依次发出这些更新路由信息后的数据子包。
实际应用中,为了防止出现数据丢失、频繁的总线操作以及提高数据的传输速度,在上述场景中使用到的是先进先出(First In First Out,FIFO)存储器。
在计算机编程中,FIFO是处理从队列或堆栈发出的程序工作数据的一种方法,它使最早的输入数据被最先处理。相关技术的FIFO存储器大部分都是实现数据缓存、先进先出的,作为一个存储器实现功能。相关技术的FIFO存储器技术仅考虑了软件方面的实现,没有考虑硬件方面的负担。假设一个完整数据包的长度达到一定的值,在模块连接之间使用与数据长度相仿的带宽会加大成本。
数据位宽表示着FIFO存储的数据位宽是多少,深度指可以存储的数据数量。输入的数据位宽可以和输出的数据位宽不同,但需要存在整数倍关系,深度也会随之变化。二者的乘积是根据写入的配置而固定的。
FIFO存储器是一个先入先出的双口缓冲器,即第一个进入其内的数据第一个被移出,其中一个口是存储器的输入口,另一个口是存储器的输出口。
FIFO存储器中各个指令按照进入顺序来执行,即,在输入过程中,先进入的指令(即先进指令)完成之后,才执行后续的后一条指令(即后进指令)。相应地,输出过程中,先输出先进指令的执行结果,再输出后进指令的执行结果。例如,先缓存数据1,然后,再依序缓存数据2、数据3、数据4。此外,FIFO存储器也会先输出数据1,然后依序输出数据2、数据3和数据4。FIFO存储器与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单。
在某些实施例中,将完整数据包的头数据子包输入第一先进先出存储器可以包括如下操作。
首先,仍以头数据子包为例,将头数据子包的头部和边带中的路由信息替换为所要达到的下一个芯片的芯片地址信息,并且,将头数据子包的数据存储到第一先进先出存储器中。然后,当头数据子包的头部和边带中的路由信息更新完毕时,则与第一先进先出存储器中的数据进行拼接,输出头数据子包。体数据子包和尾数据子包的处理与上述操作类似,此处暂不展开。
例如,在数据子包进入时,将数据子包中的数据分为需要更新的header信息和sideband信息,以及不需要更新的data信息,这两个部分分别输入两个不同FIFO之中,其中,在需要更新部分对应的FIFO中,对header信息和sideband信息进行解析,从中提取该数据子包所要达到的下一个芯片的地址信息,随后将基于地址信息更新后的header信息以及sideband信息,与原有未更新的data信息进行拼接。由此,可以为该数据子包更新路由信息。
本申请实施例还提供了一种路由更新方式,具体过程参见图7。如果一段数据(即完整数据包)通过一个芯片需要传输到另一个芯片,则需要更新各个数据子包的路由信息随后进行发送。在更新路由信息时,由于将路由信息放在header和sideband中,因此不需要对数据的data部分进行处理。在图7中,进入路由信息更新模块时,将header和sideband一同进行更新,将其中的路由信息替换为下一个需要达到的芯片地址,将数据存储到一个先进先出存储器(即FIFO)的缓冲区中,当header和sideband中的信息更新完毕时,则可以和缓冲区中的data进行拼接,最后生成完整的数据进行输出。这样可以高效地更新数据子包的路由信息,提升数据传输性能。
需要说明的是,本实施例中数据子包的处理方式,路由信息的更新方式以及数据的格式并不限定于上述示例方案。
在某些实施例中,还可以对数据段的格式进行改进,以提升FIFO中数据的完整性。
具体地,数据段的头部可以包括两比特位的状态标识。其中,一个比特位用于设置首数据段标识,另一个比特位用于设置尾数据段标识。例如,第一个比特位用于设置首数据段标识,如第一个比特位的取值为1时表征该数据段为首数据段,第一个比特位的取值为0时表征该数据段不是首数据段。第二个比特位用于设置尾数据段标识,如第二个比特位的取值为1时表征该数据段为尾数据段,第二个比特位的取值为0时表征该数据段不是尾数据段。又例如,第一个比特位用于设置尾数据段标识,第二个比特位用于设置首数据段标识。
例如,数据段的尾部包括两比特位的状态标识,其中,一个比特位用于设置首数据段标识,另一个比特位用于设置尾数据段标识。
例如,数据段的两比特位的状态标识可以分别设置在数据段的不同位置,如一个状态标识设置在数据段的头部,另一个状态标识设置在数据段的尾部。其中,一个比特位用于设置首数据段标识,另一个比特位用于设置尾数据段标识。
如果没有FIFO内部没有完整的数据,FIFO本身将不可读。其中,有效数据可以通过一个有效(valid)的输入来表示,输入1就是有效数据,0就是无效数据,除此之外也可以有其他的方式,在此不作限定。
当FIFO中拥有了一完整的数据段时,FIFO才会变成可读状态。此刻输入的数据分段是最后一个分段,因此在数据存储时将会把表示最后一个分段的数位置1。
当FIFO被读取时,完整的数据的数据分段将会被连续输出,通过数据多出来的两位来判断整个数据段是否传输完毕(如根据计数器的计数结果来判断是否传输完毕),其中第一个表示数据有效的信号将会跟随数据一同进行传输。为了保证功能性,FIFO中的深度必须大于n。FIFO的深度可以根据使用情况进行定义。需要说明的是,状态标识位需要占用FIFO存储器的位宽。
当FIFO中被放满数据时,FIFO将不可写入,当FIFO中为空时,FIFO将不可读。
为了判断FIFO中为空还是满,本实施例可以采用两个指针指向FIFO中按顺位被放入的第一个有效数据和最后一个有效数据。如果两个指针相交,将根据指针变化时是否有“套圈”的现象来判断FIFO是满或空。如果FIFO中尾指针套圈了头指针,则FIFO满,若尾指针与头指针重合但没有套圈出现,那么FIFO空。例如,输入一个数据,则尾指针加一,输出一个数据,则头指针加一。如果比深度大就取模,然后判断有没有套圈,用圈(round)信号来表征此刻头指针和尾指针是否套圈。
在某些实施例中,还可以通过如下方式来确定存储区的状态是否处于存满状态。
首先,获取第一指针和第二指针,并根据第一指针和第二指针分别指向的存储地址之间的数据个数,获取储存区的状态。
例如,第一指针指向的存储地址存储储存区中存入顺序最早的数据(如头指针),第二指针指向的存储地址存储储存区中存入顺序最晚的数据(如尾指针)。
在某些实施例中,与当前芯片直接连接的芯片个数可调整。通过调整直接连接芯片的数量,能够优化芯片间数据传输性能。
图8至图11示出了芯片连接的四种不同情况,即四种芯片间的拓扑结构。在本实施例中,一块芯片直接连接的芯片个数可以根据需要进行调整。图8至图11分别代表的不同连接情况和不同的直接连接个数。具体来说,图8示意出一种环形连接结构,图9示意出一种网格连接结构,图10示意出一种不规则连接结构,图11示意出一种三维立体连接结构。在本实施例中,如果一块芯片想要和非物理上直接连接的芯片进行通讯,则需要通过一条从该芯片经过其他芯片到达目标芯片的通路来实现这一过程。参见图11,27个节点(芯片)构成了三层的长方体结构。处于底层的节点若想要和处于顶层的节点进行通讯,可以通过中间层的节点来实现这一过程。
本实施例可以节约大型芯片网络系统中的连线冗余,通过芯片的拓扑结构来进行通过芯片的传输,大大减少网络系统中多余的连线。
本申请的另一方面还提供了一种数据传输装置。图12为本申请实施例的数据传输装置的框图。该装置适用于第一芯片,所述第一芯片接入芯片系统中,所述芯片系统由采用特定拓扑结构连接的多个芯片组成。参见图12,该装置1300可以包括:输入模块1310、处理模块1320、输出模块1330。
输入模块1310,用于接收多个数据子包;
处理模块1320,用于解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息;所述待更新信息包括:头部信息和边带信息;将所述多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息;所述完整数据包的头部信息至少包括所述完整数据包所需传输的终点位置;所述完整数据包的边带信息至少包括所述完整数据包的路由信息;基于所述终点位置以及所述路由信息确定第二芯片的芯片信息;所述第二芯片为所述完整数据包在所述芯片系统中需要到达的下一个芯片;基于所述第二芯片的芯片信息,分别更新所述多个数据子包各自的待更新信息,得到更新后的多个数据子包;
输出模块1330,用于向所述第二芯片发送所述更新后的多个数据子包。
进一步可选地,处理模块1320基于所述终点位置以及所述路由信息确定第二芯片的芯片信息时,具体用于:从所述路由信息中获取当前的数据子包存储指示信息;所述数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量;若可存放数据子包的数量大于设定阈值,则基于所述终点位置以及所述路由信息,获取所述第二芯片的芯片地址。
处理模块1320基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的待更新信息,得到更新后的多个数据子包时,具体用于:基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包。
进一步可选地,输出模块1330向所述第二芯片发送所述更新后的多个数据子包时,具体用于:
从所述边带信息中获取所述多个数据子包各自在所述完整数据包中所处的位置;按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包。
进一步可选地,所述多个数据子包按照各自所处的位置划分为:头数据子包、体数据子包、尾数据子包。输出模块1330按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包时,具体用于:
按照头数据子包、体数据子包、尾数据子包的顺序,从前到后依次向所述第二芯片依次发送所述多个数据子包。
进一步可选地,输出模块1330向所述第二芯片发送所述更新后的多个数据子包时,具体用于:利用带权重的轮询仲裁器处理不同通道发出的占用通道请求;对于在请求处理的过程中单通道占用的情况下,采用所述轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件。
进一步可选地,输出模块1330采用所述轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件时,具体用于:
将当前询问的可占用通道的下一可占用通道作为起始通道,以便基于该起始通道执行下一轮的询问;询问每一个可占用通道,直至询问次数达到最大可询问次数或者接收到第一个发出请求的通道。
进一步可选地,所述第一芯片与至少一个其他芯片之间通过所述芯片系统相连;所述第二芯片为所述终点位置所在的目标芯片;或者,所述第二芯片为所述第一芯片与目标芯片之间的中介芯片。
进一步可选地,处理模块1320基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包时,具体用于:
将所述完整数据包的头部信息和边带信息输入第一先进先出存储器;将所述完整数据包中无需更新的数据信息输入第二先进先出存储器;对所述第一先进先出存储器中的头部信息和边带信息进行解析,获得所述第二芯片的芯片地址,以更新路由信息;将所述第一先进先出存储器中更新路由信息后的头部信息和边带信息,与所述第二先进先出存储器中的数据信息进行拼接,得到更新路由信息后的多个数据子包。
进一步可选地,处理模块1320对所述第一先进先出存储器中的头部信息和边带信息进行解析,获得所述第二芯片的芯片地址,以更新路由信息时,具体用于:
将所述完整数据包的边带信息中的路由信息替换为所述第二芯片的芯片地址。
进一步可选地,在输出模块1330向所述第二芯片发送所述更新后的多个数据子包之前,接收所述第二芯片产生的反压控制信号。
其中,所述反压控制信号是所述第二芯片基于对应的存储空间中可存放数据子包的数量动态生成的;所述反压控制信号包括数据子包存储指示信息;所述数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量。
进一步可选地,处理模块1320还用于:在输出模块1330向所述第二芯片发送所述更新后的多个数据子包之后,若检测到所述第二芯片接收到的多个数据子包,则对反压计算器中存储的可存放数据子包的数量减去对应数量;若检测到所述第二芯片的存储空间向第三芯片输出数据子包,则对反压计算器中存储的可存放数据子包的数量增加对应数量;基于减少或增加后的可存放数据子包的数量,更新所述数据子包存储指示信息。
输出模块1330还用于:向所述芯片系统中位于所述第二芯片上游的芯片发送更新后的所述数据子包存储指示信息。
进一步可选地,所述反压控制信号存储在数据子包的头部信息和/或边带信息中。所述反压控制信号还用于表示所述数据子包对数据子包存储指示信息的携带状态;所述数据子包存储指示信息的携带状态包括以下任意一种:带有所述数据子包存储指示信息、不带有所述数据子包存储指示信息、只有所述数据子包存储指示信息、不使用所述数据子包存储指示信息。
进一步可选地,所述芯片系统中与所述第一芯片连接的第二芯片的数量可调整。
进一步可选地,所述芯片系统中多个芯片之间可以采用三维拓扑结构连接。
进一步可选地,输入模块1310还用于:在处理模块1320解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息之前,接收从第四芯片接收多个数据子包;所述第四芯片位于所述芯片系统中所述第一芯片上游。
处理模块1320还用于:根据所述多个数据子包中的时钟信息,设置所述第一芯片的时钟信息。进而,处理模块1320解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息时,具体用于:解析所述多个数据子包的预设位置,得到所述多个数据子包各自的头部信息和/或边带信息。
本申请还提供了一种计算设备。图13为本申请实施例的计算设备的一种结构示意图。当图12所示的装置具有如图13所示的结构时,图13中的处理器能够实现前述对应该装置的装置实施例提供的模块相同或相似的功能,图13中的存储器存储处理器执行上述存取方法时需要调用的计算机程序。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机计算机程序时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid StateDisk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请实施例的限制。

Claims (14)

1.一种数据传输方法,其特征在于,所述方法适用于第一芯片,所述第一芯片接入芯片系统中,所述芯片系统由采用特定拓扑结构连接的多个芯片组成;所述方法包括:
所述第一芯片解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息;所述待更新信息包括:头部信息和边带信息;
将所述多个数据子包各自的待更新信息拼接为完整数据包的头部信息和边带信息;所述完整数据包的头部信息至少包括所述完整数据包所需传输的终点位置;所述完整数据包的边带信息至少包括所述完整数据包的路由信息;
基于所述终点位置以及所述路由信息确定第二芯片的芯片信息;所述第二芯片为所述完整数据包在所述芯片系统中需要到达的下一个芯片;
基于所述第二芯片的芯片信息,分别更新所述多个数据子包各自的待更新信息,得到更新后的多个数据子包;
向所述第二芯片发送所述更新后的多个数据子包。
2.根据权利要求1所述的数据传输方法,其特征在于,基于所述终点位置以及所述路由信息确定第二芯片的芯片信息,包括:
从所述路由信息中获取当前的数据子包存储指示信息;所述数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量;
若可存放数据子包的数量大于设定阈值,则基于所述终点位置以及所述路由信息,获取所述第二芯片的芯片地址;
基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的待更新信息,得到更新后的多个数据子包,包括:
基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包。
3.根据权利要求2所述的数据传输方法,其特征在于,向所述第二芯片发送所述更新后的多个数据子包,包括:
从所述边带信息中获取所述多个数据子包各自在所述完整数据包中所处的位置;
按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包。
4.根据权利要求3所述的数据传输方法,其特征在于,所述多个数据子包按照各自所处的位置划分为:头数据子包、体数据子包、尾数据子包;
所述按照所述多个数据子包各自所处的位置,向所述第二芯片依次发送所述多个数据子包,包括:
按照头数据子包、体数据子包、尾数据子包的顺序,从前到后依次向所述第二芯片依次发送所述多个数据子包。
5.根据权利要求1所述的数据传输方法,其特征在于,向所述第二芯片发送所述更新后的多个数据子包,包括:
利用带权重的轮询仲裁器处理不同通道发出的占用通道请求;
对于在请求处理的过程中单通道占用的情况下,采用所述轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件。
6.根据权利要求5所述的数据传输方法,其特征在于,所述采用所述轮询仲裁器依序询问每一个可占用通道的数据通道,直至满足轮询终止条件,包括:
将当前询问的可占用通道的下一可占用通道作为起始通道,以便基于该起始通道执行下一轮的询问;
询问每一个可占用通道,直至询问次数达到最大可询问次数或者接收到第一个发出请求的通道。
7.根据权利要求2所述的数据传输方法,其特征在于,所述基于所述第二芯片的芯片地址,分别更新所述多个数据子包各自的头部信息和边带信息,得到所述更新后的多个数据子包,包括:
将所述完整数据包的头部信息和边带信息输入第一先进先出存储器;
将所述完整数据包中无需更新的数据信息输入第二先进先出存储器;
对所述第一先进先出存储器中的头部信息和边带信息进行解析,获得所述第二芯片的芯片地址,以更新路由信息;
将所述第一先进先出存储器中更新路由信息后的头部信息和边带信息,与所述第二先进先出存储器中的数据信息进行拼接,得到更新路由信息后的多个数据子包。
8.根据权利要求7所述的数据传输方法,其特征在于,所述对所述第一先进先出存储器中的头部信息和边带信息进行解析,获得所述第二芯片的芯片地址,以更新路由信息,包括:
将所述完整数据包的边带信息中的路由信息替换为所述第二芯片的芯片地址。
9.根据权利要求2所述的数据传输方法,其特征在于,向所述第二芯片发送所述更新后的多个数据子包之前,所述方法还包括:
接收所述第二芯片产生的反压控制信号;
其中,所述反压控制信号是所述第二芯片基于对应的存储空间中可存放数据子包的数量动态生成的;所述反压控制信号包括数据子包存储指示信息;所述数据子包存储指示信息表征第二芯片对应的存储空间中可存放数据子包的数量。
10.根据权利要求9所述的数据传输方法,其特征在于,向所述第二芯片发送所述更新后的多个数据子包之后,还包括:
若检测到所述第二芯片接收到的多个数据子包,则对反压计算器中存储的可存放数据子包的数量减去对应数量;
若检测到所述第二芯片的存储空间向第三芯片输出数据子包,则对反压计算器中存储的可存放数据子包的数量增加对应数量;
基于减少或增加后的可存放数据子包的数量,更新所述数据子包存储指示信息;
向所述芯片系统中位于所述第二芯片上游的芯片发送更新后的所述数据子包存储指示信息。
11.根据权利要求1所述的数据传输方法,其特征在于,所述第一芯片解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息之前,还包括:
接收从第四芯片接收多个数据子包;所述第四芯片位于所述芯片系统中所述第一芯片上游;
根据所述多个数据子包中的时钟信息,设置所述第一芯片的时钟信息;
所述第一芯片解析待发送的多个数据子包,得到所述多个数据子包各自的待更新信息,包括:
解析所述多个数据子包的预设位置,得到所述多个数据子包各自的头部信息和/或边带信息。
12.一种芯片系统,其特征在于,所述芯片系统包括多个芯片,所述多个芯片之间以特定拓扑结构连接;
所述多个芯片,用于处理各自接收到的数据子包或者由接收到的数据子包拼接得到的完整数据包;
所述多个芯片中的至少一个芯片,被配置用于执行如权利要求1-11任一项所述的数据传输方法。
13.一种计算设备,其特征在于,其包括存储器以及至少一个芯片,所述存储器上存储有计算机程序,其中,所述至少一个芯片执行所述计算机程序时实现如权利要求1-11任一项所述的数据传输方法。
14.一种计算机可读存储介质,其特征在于,其包括指令,当其在计算机上运行时,使得所述计算机的芯片系统执行如权利要求1-11任一项所述的数据传输方法。
CN202311279547.5A 2023-10-07 2023-10-07 数据传输方法、芯片系统、计算设备及存储介质 Active CN117041186B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311279547.5A CN117041186B (zh) 2023-10-07 2023-10-07 数据传输方法、芯片系统、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311279547.5A CN117041186B (zh) 2023-10-07 2023-10-07 数据传输方法、芯片系统、计算设备及存储介质

Publications (2)

Publication Number Publication Date
CN117041186A true CN117041186A (zh) 2023-11-10
CN117041186B CN117041186B (zh) 2024-01-30

Family

ID=88635773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311279547.5A Active CN117041186B (zh) 2023-10-07 2023-10-07 数据传输方法、芯片系统、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN117041186B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267433A (zh) * 2008-04-30 2008-09-17 华中科技大学 一种适应异构网络环境的中心控制源路由协议
CN103916440A (zh) * 2013-01-05 2014-07-09 尼尔森网联媒介数据服务有限公司 一种远程升级的方法及其装置
US20150163014A1 (en) * 2013-12-06 2015-06-11 Mark S. Birrittella Lane error detection and lane removal mechanism to reduce the probability of data corruption
CN106453109A (zh) * 2016-10-28 2017-02-22 南通大学 一种片上网络通信方法及路由器
CN107454003A (zh) * 2017-08-18 2017-12-08 南京航空航天大学 一种可动态切换工作模式的片上网络路由器及方法
CN107592655A (zh) * 2017-09-22 2018-01-16 深圳市沃特玛电池有限公司 一种数据分包传输系统及方法
CN108495338A (zh) * 2018-01-25 2018-09-04 西安电子科技大学 应用于tdma自组网的跨层路由协议实现方法
CN114040445A (zh) * 2021-11-08 2022-02-11 聚好看科技股份有限公司 一种数据传输方法及装置
CN114297130A (zh) * 2021-12-28 2022-04-08 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置
CN114328623A (zh) * 2021-12-28 2022-04-12 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置
CN114928870A (zh) * 2022-06-09 2022-08-19 山东闻远通信技术有限公司 数据传输方法、装置、电子设备及存储介质
CN115994048A (zh) * 2023-03-24 2023-04-21 中昊芯英(杭州)科技有限公司 一种芯片、通信方法、系统及存储介质
CN116325707A (zh) * 2020-08-31 2023-06-23 美光科技公司 透明的包拆分和重组
CN116471224A (zh) * 2023-05-15 2023-07-21 苏州仰思坪半导体有限公司 通信系统、方法及相关装置
CN116501506A (zh) * 2023-06-27 2023-07-28 苏州仰思坪半导体有限公司 一种资源轮询仲裁方法、装置、介质及计算设备
CN116614445A (zh) * 2023-07-20 2023-08-18 苏州仰思坪半导体有限公司 一种数据传输方法及其相关装置

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101267433A (zh) * 2008-04-30 2008-09-17 华中科技大学 一种适应异构网络环境的中心控制源路由协议
CN103916440A (zh) * 2013-01-05 2014-07-09 尼尔森网联媒介数据服务有限公司 一种远程升级的方法及其装置
US20150163014A1 (en) * 2013-12-06 2015-06-11 Mark S. Birrittella Lane error detection and lane removal mechanism to reduce the probability of data corruption
CN106453109A (zh) * 2016-10-28 2017-02-22 南通大学 一种片上网络通信方法及路由器
CN107454003A (zh) * 2017-08-18 2017-12-08 南京航空航天大学 一种可动态切换工作模式的片上网络路由器及方法
CN107592655A (zh) * 2017-09-22 2018-01-16 深圳市沃特玛电池有限公司 一种数据分包传输系统及方法
CN108495338A (zh) * 2018-01-25 2018-09-04 西安电子科技大学 应用于tdma自组网的跨层路由协议实现方法
CN116325707A (zh) * 2020-08-31 2023-06-23 美光科技公司 透明的包拆分和重组
CN114040445A (zh) * 2021-11-08 2022-02-11 聚好看科技股份有限公司 一种数据传输方法及装置
CN114297130A (zh) * 2021-12-28 2022-04-08 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置
CN114328623A (zh) * 2021-12-28 2022-04-12 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置
WO2023123902A1 (zh) * 2021-12-28 2023-07-06 深圳云天励飞技术股份有限公司 芯片系统中的数据传输处理方法及相关装置
CN114928870A (zh) * 2022-06-09 2022-08-19 山东闻远通信技术有限公司 数据传输方法、装置、电子设备及存储介质
CN115994048A (zh) * 2023-03-24 2023-04-21 中昊芯英(杭州)科技有限公司 一种芯片、通信方法、系统及存储介质
CN116471224A (zh) * 2023-05-15 2023-07-21 苏州仰思坪半导体有限公司 通信系统、方法及相关装置
CN116501506A (zh) * 2023-06-27 2023-07-28 苏州仰思坪半导体有限公司 一种资源轮询仲裁方法、装置、介质及计算设备
CN116614445A (zh) * 2023-07-20 2023-08-18 苏州仰思坪半导体有限公司 一种数据传输方法及其相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于晓娜;王建敏;王怀江;: "基于多功能车辆总线(MVB)的消息数据传输协议", 铁路通信信号工程技术 *

Also Published As

Publication number Publication date
CN117041186B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
US20240171507A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US8850085B2 (en) Bandwidth aware request throttling
US8718065B2 (en) Transmission using multiple physical interface
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
US7227841B2 (en) Packet input thresholding for resource distribution in a network switch
US7940788B2 (en) System for transmitting data within a network between nodes of the network and flow control process for transmitting the data
CN103810133B (zh) 用于管理对共享读缓冲器资源的访问的方法和装置
US7283556B2 (en) Method and system for managing time division multiplexing (TDM) timeslots in a network switch
US6628615B1 (en) Two level virtual channels
US7406041B2 (en) System and method for late-dropping packets in a network switch
US7613849B2 (en) Integrated circuit and method for transaction abortion
JPH08265270A (ja) 転送路割り当てシステム
US10079782B2 (en) Facilitating communication of data packets using credit-based flow control
EP1554644A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
WO2018149102A1 (zh) 一种降低高优先级数据传输时延的方法和装置、存储介质
CN116893983B (zh) 数据缓存方法、设备及介质
CN116569154A (zh) 数据传输方法和相关装置
CN117041186B (zh) 数据传输方法、芯片系统、计算设备及存储介质
US9338219B2 (en) Direct push operations and gather operations
CN113553279B (zh) 一种rdma通信加速集合通信的方法及系统
US9996468B1 (en) Scalable dynamic memory management in a network device
CN109145397A (zh) 一种支持并行流水访问的外存仲裁结构
JP5772132B2 (ja) データ転送装置、データ転送方法および情報処理装置
CN118509399A (zh) 一种报文处理方法、装置、电子设备及存储介质
CN118555252A (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
GR01 Patent grant
GR01 Patent grant