CN112446474B - 芯片和多芯片***及电子设备和数据传输方法 - Google Patents
芯片和多芯片***及电子设备和数据传输方法 Download PDFInfo
- Publication number
- CN112446474B CN112446474B CN201910819946.3A CN201910819946A CN112446474B CN 112446474 B CN112446474 B CN 112446474B CN 201910819946 A CN201910819946 A CN 201910819946A CN 112446474 B CN112446474 B CN 112446474B
- Authority
- CN
- China
- Prior art keywords
- data
- chip
- information
- unit
- task
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种芯片和多芯片***及电子设备和数据传输方法。电子设备可包括中央处理器、加速模块和存储器。加速模块与中央处理器通信连接,并包括多个根据本申请的芯片。
Description
技术领域
本申请涉及芯片技术领域,具体而言,涉及一种芯片和多芯片***及电子设备和数据传输方法。
背景技术
计算任务的***式增长对芯片设计提出越来越高的要求。以图像识别领域的imagenet挑战赛为例,自从使用深度学习网络之后,其错误率飞速下降,并且在ResNet网络出来之后,超越了人类的识别精度。但是,与之对应的是,其网络规模动辄几百兆字节,其训练的图片数据集动辄上百万个,因此对计算能力的需求飞速膨胀。
为了解决算力的问题,获得更高的性能,更低的功耗,以及量产之后更加低廉的成本,研究者们在努力开发多节点协同解决方案的同时,也在努力设计开发新的芯片结构,希望实现高运算效率和硬件资源的高利用率。
在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请旨在提供一种芯片和多芯片***及电子设备和数据传输方法,能够提高运算效率。
本申请的其该用户特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提供一种芯片,包括数据总线以及与所述数据总线连接的存储器、数据接收器、运算处理单元、数据发送器,其中,所述数据接收器配置为接收来自外部的第一数据和头信息,将所述第一数据通过所述数据总线写入到所述存储器的对应区域,以及根据所述头信息配置对应的运算处理单元和/或数据发送器;所述运算处理单元配置为接收第一任务信息,根据所述第一任务信息执行运算处理并对所述数据发送器执行配置操作;所述数据发送器配置为获取第二任务信息以及第二数据,并基于至少部分所述第二数据向外输出第三数据。
根据本申请的另一方面,提供一种多芯片***,包括根据本申请的所述芯片。
根据本申请的另一方面,还提供一种电子设备,包括根据本申请的所述芯片或多芯片***。
根据本申请的另一方面,还提供一种用于计算节点传输数据的方法,包括:开始接收第一数据;在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,转发所述第一数据的所述一部分;和/或在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,对所述第一数据的所述一部分进行处理并转发处理结果。
根据本申请的另一方面,还提供一种数据传输方法,包括利用根据本申请的芯片执行前述用于计算节点传输数据的方法。
根据本申请的另一方面,还提供一种数据传输方法,包括利用根据本申请的多芯片***执行前述方法。
根据本申请一些实施例,提供一种芯片结构,克服了随着协同工作的芯片数量的提升,多芯片之间的通信量迅速增大的缺陷。通过在芯片中增加了数据发送器、数据接收器以及运算处理单元之间相互触发协同的机制,可以使得计算和传输数据流水起来,从而能够覆盖传输开销,提高运算效率和硬件资源利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
图1示出根据本申请一示例性实施例的芯片结构。
图2A示出根据本申请一示例性实施例的数据接收器。
图2B示出根据本申请另一示例性实施例的数据接收器。
图3A示出根据本申请一示例性实施例的数据发送器。
图3B示出根据本申请另一示例性实施例的数据发送器。
图3C示出根据本申请另一示例性实施例的数据发送器。
图4示出根据本申请示例实施例的归并模块。
图5A示出根据本申请示例实施例的基于环状拓扑的环形连接结构。
图5B示出根据本申请示例实施例的在2D-MESH拓扑结构中构建的环形连接结构。
图6示出根据本申请实施例的一种用于计算节点传输数据的方法。
图7A示出现有技术的数据传输过程的示例。
图7B示出图6所示方法的数据传输过程的示例。
图8示出根据本申请示例实施例的多节点协同执行卷积运算的示意图。
图9示出根据本申请示例实施例的多节点协同执行分类层运算的示意图。
图10示出根据本申请示例实施例的多芯片异步并行协同训练的示意图。
图11示出根据本申请示例实施例的电子设备的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本申请概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本申请所必须的,因此不能用于限制本申请的保护范围。
发明人发现,在多芯片协同***中,例如用于深度学习的多芯片***中,虽然现在单节点的计算峰值指数性的扩展,但是与之对应的多芯片之间的通信带宽却扩展有限。与之相对应的,随着协同工作的芯片数量的提升,多芯片之间的通信量迅速增大。这样,在多芯片协同***中,多芯片通信的瓶颈日益显著,导致增加芯片所带来的边际收益迅速减少。
本申请提出一种芯片设计结构,能够用于多芯片***的协同计算,可以至少部分克服通信开销过大而使得通信无法被计算完全覆盖的问题,提高运算效率和硬件资源利用率。
下面对根据本申请实施例的芯片以及多芯片***进行详细说明。
图1示出根据本申请一示例性实施例的芯片结构。图1所示芯片可以用来构建多芯片***执行深度学习协同计算等运算任务,例如可以是人工智能芯片。
如图1所示,根据示例实施例的芯片100包括数据总线110以及与数据总线110连接的存储器120、数据接收器RX、运算处理单元130、数据发送器TX。
根据示例实施例,数据总线110可以包括NOC(network-on-chip,片上网络),但本申请不限于此。
参照图1,数据接收器RX配置为接收来自外部的第一数据和头信息,将第一数据通过数据总线110写入到存储器120的对应区域,以及根据头信息配置对应的运算处理单元130和/或数据发送器TX。存储器120可以为例如DRAM存储器,但本申请不限于此。
根据示例实施例,数据接收器RX可根据头信息对第一数据进行拆解。
根据一些实施例,数据接收器RX可包括SERDES接口、接收数据缓冲器、解码器及DMA单元等,如后面参照图2所描述的,但本申请不限于此。可选地,数据接收器RX可包括解压单元。
参照图1,运算处理单元130配置为接收第一任务信息,根据第一任务信息执行运算处理并对数据发送器TX执行配置操作。
根据一些实施例,运算处理单元130可以是人工智能处理单元或机器学习处理单元。
根据示例实施例,运算处理单元130配置为在存储器120中存储运算处理结果。
参照图1,数据发送器TX配置为获取第二任务信息以及第二数据,并基于至少部分第二数据向外输出第三数据。
如后面参照附图所说明的,根据一些实施例,数据发送器TX可包括发送解码器、数据重排序缓冲器、串行接口及发送缓冲器。根据有一些实施例,数据发送器TX还可包括算术逻辑单元和/或压缩器。
根据示例实施例,如图1所示,芯片100还可包括配置总线140,从而运算处理单元130、数据接收器RX、数据发送器TX与配置总线140连接从而通过配置总线140相互传输配置信息。
这样,根据本申请实施例,数据接收器RX、数据发送器TX和运算处理单元130可通过数据总线相互传输数据和/或访问存储器。另外,运算处理单元130、数据接收器RX、数据发送器TX可通过配置总线140相互传输配置信息,从而根据本申请实施例的芯片100可有利地用于多芯片协同计算。
图2A示出根据一示例性实施例的数据接收器,其可用于图1所示芯片100。
如图2A所示,根据示例实施例的数据接收器RX可包括第一串行接口210、数据缓冲器220、解码器230以及DMA单元240。
参见图2A,数据接收器RX可通过第一串行接口210接收来自外部例如上游计算节点传输过来的第一数据和头信息。第一串行接口210可采用SERDES接口,SERDES是SERializer(串行器)/DESerializer(解串器)的简称。SERDES包括时分多路复用(TDM)、点对点(P2P)的串行通信技术。在发送端多路低速并行信号被转换成高速串行信号,在接收端高速串行信号重新转换成低速并行信号。这种点对点的串行通信技术充分利用传输媒体的信道容量,提升信号的传输速度,从而大大降低通信成本。
参见图2A,数据缓冲器220用于缓存来自第一串行接口210的第一数据。
根据一些实施例,当需要反压上游的数据发送器时,数据缓冲器220能够容纳整个链路上的过冲数据。这样,可以避免由于过冲数据的存在,导致过冲数据无法被接收而丢失的问题。另外,也可以在反压消失之后,能够给后续模块提供数据,直到接收到新的上游传输过来的数据为止。
解码器230用于从头信息解析用于后续的第一数据的格式和存放地址,从而解析出来的格式切分后续收到的第一数据。另外,解码器230可根据头信息配置运算处理单元130和数据发送器TX的对应位。根据示例实施例,解码器230还将地址信息发送给DMA单元240。
根据一些实施例,头信息中还包含在数据传输结束之后所需启动的运算处理单元和数据发送器的信息,从而当解码器230将接收到的第一数据通过数据总线110写入到存储器120之后,根据头信息置运算处理单元和/或数据发送器对应的位为1。
DMA单元240用于接收来自解码器230的第一数据和存放地址,从而将第一数据通过数据总线110写入到存储器120的对应区域。
根据一些实施例,DMA单元240将地址信息解析为AXI协议等,然后将数据通过数据总线写入存储器120。同时,如果一个包的所有数据全部成功写入到存储器120之后,通知解码器230执行后续行为。
根据一些实施例,如图2B所示,数据接收器RX还可包括解压单元250,用于对来自解码器230的第一数据进行解压,并将解压后的第一数据发送给DMA单元240。
图3A示出根据一示例性实施例的数据发送器,其可用于图1所示的芯片100。
如图3A所示,根据示例实施例的数据发送器TX可包括发送解码器310、数据重排序缓冲器320、发送缓冲器330和第二串行接口340。
参见图3A,发送解码器310配置为将接收到的第二任务信息打包为第二头信息,并将第二头信息发送至发送缓冲器330。另外,发送解码器310还可根据第二任务信息向数据重排序缓冲器320发送数据读取请求信息。
根据一些实施例,发送解码器310依据任务信息获取操作数的地址、大小等以及操作数之间的操作码,并将操作数拆解为具体的访存请求,以通过数据总线110从存储器120获取对应的数据。
数据重排序缓冲器320配置为根据数据读取请求信息通过数据总线110获取并发送第二数据,第二数据包括至少部分第一数据和/或运算处理单元130的运算处理结果。
由于数据总线在传输数据的时候,各个数据传输过程会发生超车,因此,需要数据重排序缓冲器320对收到的数据进行保序。根据一些实施例,数据重排序缓冲器320接收到数据之后,依据数据的源地址和目的地址,对数据进行移位。当两个数据重排序缓冲器320中的数据都进行移位对齐之后发送数据,例如发送到缓冲器330。
根据一些实施例,数据重排序缓冲器320从存储器120获取第二数据。
发送缓冲器330配置为对接收的数据进行缓存,并按照第二串行接口340的格式发送缓存的数据。
根据一些实施例,发送缓冲器330配置为接收第二头信息以及接收并缓存第二数据,以及按照第二串行接口340的格式发送第三数据,第三数据包括第二数据。
第二串行接口340配置为接收并发送第三数据。如前,第二串行接口可以包括SERDES。
根据示例实施例,发送缓冲器330缓存数据之后,将数据整合成一个数据流,然后按照第二串行接口340接受的格式,切分成对应的包(package)和/或突发(burst)进行传输。另外,发送缓冲器330会在下游节点通过第二串行接口340形成反压之后,短时负载上游传递下来的数据,避免对数据总线110形成反压,阻塞其他单元之间传递数据。在第二串行接口340解除反压之后,由于需要重新通过数据总线110获取新的数据,其再发送请求,请求通过数据总线110到达存储器120,存储器120返回数据,数据通过数据总线110返回之前,发送缓冲器330利用自身已经存储的数据,从而避免向第二串行接口输出的数据形成断流。
图3B示出根据另一示例实施例的数据发送器。
如图3B所示,图3B所示的数据发送器TX与图3A所示的基本相同,区别仅在于在图3B所示的数据发送器TX还包括ALU(算术逻辑单元)350。
根据示例实施例,算术逻辑单元350配置为对至少部分第二数据进行运算,并将所得到的运算结果和/或第二数据的部分或全部作为第四数据发送给发送缓冲器330。发送缓冲器330接收第二头信息以及接收并缓存来自算术逻辑单元350的第四数据,按照第二串行接口340的格式发送第三数据,第三数据包括第四数据。第二串行接口340配置为接收并发送第三数据。
根据一些实施例,ALU 350根据发送解码器310传输过来的操作码,将数据重排序缓冲器320传输过来的数据进行对应的加减法运算之后,得到需要传输的数据。在根据任务信息打包成的第二头信息发送之后,ALU 350依次将要传输的数据发送给发送缓冲器330。
根据示例实施例,在数据发送器TX增加了ALU 350,在运算过程中完成处理轻量级的运算操作,能够提高***处理效率,并可加速传输过程。
图3B所示的数据发送器TX的其他部分可参考图3A,此处不再赘述。
图3C示出根据另一示例实施例的数据发送器。
如图3C所示,图3C所示的数据发送器TX与图3A所示的基本相同,区别仅在于在图3C所示的数据发送器TX还包括压缩单元360。
根据示例实施例,压缩单元360配置为将第二数据压缩为第四数据并发送给发送缓冲器330。发送缓冲器330接收第二头信息以及接收并缓存来自压缩单元360的第四数据,按照第二串行接口340的格式发送第三数据,第三数据包括第四数据。第二串行接口340接收并发送第三数据。
根据一些实施例,压缩单元360将小于预设阈值的数据压缩,预设阈值可默认为0,也可以用户定义。
根据一些实施例,压缩模块360可设置在ALU 350之后,从而ALU完成轻量级的运算操作,提高效率。
图3C所示的数据发送器TX的其他部分可参考图3A,此处不再赘述。
图4示出根据示例实施例的归并模块。归并模块400可用于图1所示的芯片结构。
根据示例实施例,归并模块400可设置在数据总线110与运算处理单元130或数据发送器TX之间。如图4所示,归并模块400可包括归并模式单元410、任务预取单元420和任务发送单元430。
例如,设置在数据发送器TX之前的归并模块400负责接收其他单元发送过来的消息,获取任务,查验对应的任务是否可执行。另外,可将任务依据任务信息进行拆解,将拆解得到的子任务发送给发送解码器310进行执行,并依据执行结果和任务信息将信息发送给其他的单元。
根据实施例,归并模式单元410接收并存储其他运算处理单元130和/或数据发送器TX的执行信息。
例如,归并模式单元410存储接收到的其他单元的执行信息,对来自于其他单元的执行信息进行汇总,用于任务预取单元420从中读取信息进行处理。
根据一些实施例,归并模式单元410中存储的表项内的结构如表1所示。参见表1,表项包括Valid、Bit、ID三个字段。
Valid用以标识该表项是否可用,如果其为0,则表示该表项所有信息不可用。每当由一个单元发送信息过来之后,新分配表项,则将对应表项的Valid置1。每当任务预取单元420决定清除表项的时候,将对应表项的Valid置0。Bit可使用onehot(独热码)形式,表示收集到的各个单元的执行状态。由硬件接收各个单元的信息置1,由软件通过任务预取单元420进行清0操作。例如,每当一个单元发送一笔64bit的ID为In的配置信息Bn过来之后,如果在所有已存的表项之中,没有对应能匹配上对应ID的,则将Bn存入表项之中。如果In在已存的表项中有对应的匹配项,则将已存的信息B和Bn进行或操作,再存入表项,即B = Bn|B。
任务预取单元420配置为根据软件配置的寄存器信息从存储器120获取第一任务信息,根据第一任务信息对执行信息进行处理并根据处理结果确定并发送配置信息和/或第二任务信息。
例如,任务预取单元420依据软件配置的寄存器TASK HEAD(任务头)、TASK SIZE(任务大小)和TASK TAIL(任务尾)信息,首先从存储器120获取任务信息,然后依据任务信息对归并模式单元410中的Bit进行处理,依据结果选择是否发送还是继续等待信息。在任务信息中包含64bit的MASK(掩码信息)以及所需要归并的多个ID。然后依据需要归并的ID,从归并模式单元410中取出对应ID的Bit信息,进行归并,得到结果记为Br。最后,将归并的结果与MASK进行或操作,R = Mask|Br。如果R全为1,则该任务可以发送;否则,重新获取各个ID的对应的bit信息,重新进行查询操作。在任务信息中,还包含bit清除信息,其可以依据任务信息中指定的多个ID,清除这些ID对应的表项。
根据一些实施例,任务预取单元420还配置为根据第一任务信息将相应任务拆解为多个传输子任务,并根据执行信息发送多个传输子任务的第二任务信息给任务发送单元430。
任务发送单元430配置为从任务预取单元420接收第二任务信息并发送给其他运算处理单元130和/或者数据发送器TX进行处理。
根据一些实施例,任务发送单元430配置为监听运算处理单元130或数据发送器TX的状态,并根据运算处理单元130或数据发送器TX的执行结束状态向其他运算处理单元和/或数据发送器发送配置信息。
例如,任务发送单元430监听运算处理单元130或数据发送器TX的状态,如果其正常执行结束,则首先依据任务信息中记载的方式,通过配置总线140去向其余的运算处理单元130和/或发送数据单元TX发送信息,同时如果有任务已经可以发送,则发送新的任务进行执行。
根据本申请实施例的芯片可用于构建多芯片***,例如可配置包括环状、网状、树状结构中的至少一种的布局结构的多芯片***。根据本申请实施例的芯片包括能够相互通信的数据接收器、数据发送器和运算处理单元,从而能够更好地用于多芯片协同。
根据一些实施例,多个芯片构建为环形连接结构。图5A示出根据示例实施例的基于环状拓扑的环形连接结构,图5B示出根据示例实施例的在2D-MESH拓扑结构中构建的环形连接结构。
根据本申请实施例的芯片或多芯片***可应用于各种电子设备,包括但不限于超级计算机、晕服务器、智能手机、嵌入式***等。
图6示出根据本申请实施例的一种用于计算节点传输数据的方法。
根据一些实施例,图6所示的方法可利用根据本申请实施例的芯片或多芯片***执行,或应用于根据本申请实施例的芯片或多芯片***,但本申请的方法不限于此。
根据一些实施例,图6所示的数据传输方法可用于包括多个计算节点的***,例如,计算节点可包括根据本申请实施例的芯片。多个计算节点中的至少部分节点执行前述方法。可选地,多个计算节点构建为环形连接结构,参见例如图5A和5B所示出的。
参见图6,在S610,开始接收第一数据。
根据示例实施例,通过前述芯片的数据接收器RX接收第一数据。
在S620,在接收到第一数据的一部分之后,在继续接收第一数据的同时,转发第一数据的一部分。
根据示例实施例,通过前述芯片的数据发送器TX发送数据。
在S630,在接收到第一数据的一部分之后,在继续接收第一数据的同时,对第一数据的一部分进行处理并转发处理结果。
根据示例实施例,通过前述芯片的运算处理单元130处理数据,通过前述芯片的数据发送器TX发送数据。
下面结合图7A和7B对图6所示方法做进一步详细说明。
参见图7A,在现有传输数据的过程中,每次都从一个节点向另一个节点发送数据,然后下游节点接收全部数据之后,向其之后的节点发送数据。
参见图7B,在根据本申请的实施例中,为了加速传输数据的速度,可采用图6所示的方法对传输数据进行处理。即,每个计算节点在接受到一小部分数据之后,可以立刻向下一个节点传输数据。在这种模式下,中间节点在接收到传输的数据之后,在继续接收数据的同时进行处理和转发数据,可以显著减少通信时间。
下面对根据申请实施例的芯片和多芯片***的一些应用进行举例说明。
图8示出根据示例实施例的多节点协同执行卷积运算的示意图。
参见图8,当多个计算节点按照数据并行的方式协同执行卷积运算的时候,其涉及到输入和输出在特征图方向的一个拆分。由于滑动窗口的存在,其所框的数据有可能会横跨多个芯片。那么,多个芯片之间,需要将所重叠的部分传输给对应的相邻节点。在一般的做法中,第一层做完之后,需要等待该层所有的计算节点全部都运算结束之后,再开始数据传输过程,传输结束之后,再启动第二层的运算过程。
根据示例实施例,可以将一层卷积首先在H和W的方向上拆分为4个部分,分散在4个计算节点上,每个计算节点负载等量的一块数据。然后,在每个计算节点的片内部,进一步切分为4个子任务,每个子任务负载相等。图8中深色色块为已经执行的子任务,浅色色块为等待执行的子任务。首先计算与其他计算节点相邻的子任务,在该子任务计算结束之后,启动与对应芯片相连的数据发送器,将计算得到的重叠的数据块发送给对应的计算节点。当一个计算节点的数据接收器接收到相邻计算节点传输过来的数据之后,即可通知对应的运算处理单元(深度学习处理单元),相关的后续任务具备发送条件。例如在第二步执行完之后,中间两列的子任务执行结束,并且重叠的数据传输给对应的计算节点之后,其第二层的上下两边的4个子任务所需要的所有数据即可全部准备完备,因此具备了可执行的条件。这样,对每个计算节点,在第一层的卷积计算结束之后,可以立刻开始第二层的卷积计算。
当更多计算节点协同运算执行更大量的数据时,在H和W的方向上拆分得更加细致之后,其每个计算节点优先执行与其他芯片相连的子任务,每执行完一个子任务,即可将重叠的数据发送给对应相邻的计算节点。这样,对于下一层的计算来说,其对应拆分出来的子任务,也会按照同样的顺序,依次处于可以发送的状态,从而保证即使两个计算节点之间的计算速率不够,执行快的计算节点仍然可以连续执行,而不需要等待执行慢的计算节点执行结束并传输数据。
图9示出根据示例实施例的多节点协同执行分类层运算的示意图。
参见图9,在处理分类层的时候,首先可以将多个输出进行分组,然后多个计算节点可以协同运算同一个输出结果。此时,数据结果等效于一次归并操作。如图9所示,将输出数据分为8组,以协同运算第5组数据作为示例。进一步将输入数据分为12组,放于4个计算节点之中,其相同填充形状的3组放于同一节点。即,0、4、8放于计算节点0进行运算;1、5、9放于计算节点1进行运算;2、6、10放于计算节点2进行运算;3、7、11放于计算节点3进行运算。
在计算的时候,每个计算节点首先将自身所负载的3组输入数据计算,得到第5组输出数据对应的部分和。然后启动归并加和传输过程,每个计算节点将自身所得的部分和数据与接收到的部分和数据进行加和,然后将加和的结果传递给下一个计算节点。同时,各个计算节点在传输数据的时候,可以开始计算第6组输出数据。因此,此时整个拓扑结构中同时包含着第5组部分和的相互传输过程,以及第6组部分和的计算过程。
根据示例实施例,4个计算节点可成环状连接。当做第5组运算的时候,其归并过程可为:首先计算节点1向计算节点2发送部分和;然后计算节点2将接收到的数据与本地部分和数据进行加和之后,传输给计算节点3;再后,计算节点3将接收到的数据与本地部分和数据进行加和之后,传递给计算节点0;最后,计算节点0将接收到的数据进行加和之后留存在本地。此时,如果第6组输出运算已经完成,则由于第6组输出数据存放于计算节点3,同时计算节点0和计算节点1之间的通路未被占用,则计算节点0可以直接启动归并过程,将数据发送给计算节点1。传输过程仍使用切片传输,即,每个计算节点只要接收到上一个计算节点传输过来的部分数据,即可立刻与本地的部分和数据进行加和(或其他运算),然后立刻将该部分结果传输给下游计算节点。
对于单个节点内部来说,首先是运算处理单元(例如,深度学习处理单元)执行完一次子任务之后,即可对相应的数据发送器执行bit置1操作。然后,数据接收器在接收到上游节点传输过来的数据之后,向对应的数据发送器执行bit置1操作。因此,对应的数据发送器通过bit监测,如果发现运算处理单元已经完成对应的子任务运算,同时对应的数据接收器也完成了数据的接收工作,则可以从存储器中获取本地计算得到的部分和以及接收的数据,进行加和运算,然后将数据打包传输给下游计算节点。这样,根据示例实施例,可以服通信开销过大而使得通信无法被计算完全覆盖的问题,提高运算效率。
图10示出根据示例实施例的多芯片异步并行协同训练的示意图。
参见图10,当考虑一个训练体系的多芯片进行异步协同训练的时候,其数据传输主要用来更新权值梯度数据。如图10所示,起始计算节点可包括参数服务节点,有填充的计算节点为分组1,无填充的计算节点为分组2。分两个分组的用意是为了能够在多个计算节点算力不匹配的时候,可以只同步部分计算节点,从而减少不同计算节点之间的等待开销。
在这种结构中,每个计算节点在完成本地batch的训练之后,将其数据保存在本地。控制节点通知起始计算节点发起加和权值梯度数据的请求。起始计算节点(参数服务节点)依据其历史状态,发送获取梯度数据的请求。在这个请求之中,不仅包含更新的代数(第几代),同时还包含有哪些节点需要进行归并操作。由于第一个计算节点本身不参与归并,因此只发送请求给下一个计算节点。第一个需要参与归并的计算节点发送其梯度数据给下一个计算节点。
当后续的计算节点接收到数据之后,如果其需要参与归并,在接收到第一个切片数据的时候,若本地第一个切片的数据也已经准备好,则立刻在本地进行加和操作,然后将该切片传输给下一个计算节点。
例如,当计算节点获取到该请求后,依据其蕴含的更新代数及本地的权值梯度数据所标识的代数,计算其差值。如果差值符合预期,同时该计算节点的权值梯度数据需要归并到这次传输之中,且本地权值梯度数据也已经准备好,则数据发送器可以启动对应的子任务。对应的数据发送器可以从DRAM存储器中获取上游计算节点传输过来的数据,以及本地计算得到的权值梯度数据,进行加和运算,得到新的权值梯度数据,然后通过SERDES,将权值梯度数据传递给下游节点。如图10所示,所有组2的计算节点都会在其输出的时候,进行发送或加和操作,将本地的权值梯度数据整合在传输的数据之中。
当后续的计算节点接收到数据之后,如果其不需要参与归并,则在接收到第一个切片数据的时候,立刻将该切片传输给下一个计算节点即可。例如,所有处于组1的计算节点都会将数据直传下去,不做处理。
当最后一个节点收到数据之后,已经完成了所有节点的归并操作,从而获得了最终的新的权值。此时起始计算节点(参数服务节点)开始权值广播过程。当广播权值数据的时候,所有计算节点都保存更新本地权值备份并且转发权值数据给下一个计算节点,直到最后一个计算节点。至此,完成所有传输。
例如,当起始计算节点(参数服务节点)接收到传输回来的归并之后的数据后,首先更新本地副本。然后,将更新之后的新的权值通过环状拓扑广播给所有计算节点;同时,在信息中标记标签,表示该权值数据的代数。此时,当计算节点接收到对应的权值数据之后,更新其本地的权值数据代数,然后在下次训练的时候使用新的权值数据进行训练。同时,其训练得到的权值梯度数据使用新的权值数据附带的标签标记。
根据示例实施例,控制节点只需要和起始计算节点通信即可。因此,在传输之前,不需要各个归并节点分别与控制节点通信,省去一个同步通信的开销。同时,不需要等到各个节点ready即可发起请求,由各个计算节点依据其本地执行状态,进行控制即可。此外,由于各个计算节点是异步传输过程,因此,可以在第一个分组未完成全部归并之前,即可开始第二个分组的归并过程。另外,将归并和广播过程合在一起。因此,该方案极大的缩减了整体的开销。
图11示出根据本申请示例实施例的电子设备的示意图。
如图11所示,该电子设备1100可包括中央处理器1110、加速模块1120和存储器1130。加速模块1120与中央处理器1110通信连接,并包括多个根据本申请的芯片100。存储器1130存储有计算机程序。当存储在存储器1130中的计算机程序被中央处理器1110执行时,中央处理器1110能够通过加速模块1120获得加速运算的结果。
以上对本申请实施例进行了详细描述和解释。应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的芯片和多芯片***及电子设备和数据传输方法至少具有以下优点中的一个或多个。
根据本申请实施例的芯片包括能够相互通信的数据接收器、数据发送器和运算处理单元,从而能够更好地用于多芯片协同。
根据本申请实施例的芯片设计能够用于多芯片***的协同计算,可以至少部分克服通信开销过大而使得通信无法被计算完全覆盖的问题,提高运算效率和硬件资源利用率。根据一些实施例,通信开销对于计算节点是透明的,几乎感知不到。
根据一些实施例,在数据发送器增加了ALU0,在运算过程中完成处理轻量级的运算操作,能够提高***处理效率,并可加速传输过程。
根据一些实施例,利用本申请的芯片和多芯片***,可以使得计算和传输数据流水起来,从而能够覆盖传输开销,提高运算效率和硬件资源利用率。
根据示例实施例,在芯片中增加了数据发送器、数据接收器以及运算处理单元之间相互触发协同的机制,从而利用该芯片的***不仅可以最大限度的使得计算和通信并行,同时可以获得极高的并行加速比。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。
依据以下方面可更好地理解前述内容:
第1方面:一种芯片,包括数据总线以及与所述数据总线连接的存储器、数据接收器、运算处理单元、数据发送器,其中,
所述数据接收器配置为接收来自外部的第一数据和头信息,将所述第一数据通过所述数据总线写入到所述存储器的对应区域,以及根据所述头信息配置对应的运算处理单元和/或数据发送器;
所述运算处理单元配置为接收第一任务信息,根据所述第一任务信息执行运算处理并对所述数据发送器执行配置操作;
所述数据发送器配置为获取第二任务信息以及第二数据,并基于至少部分所述第二数据向外输出第三数据。
第2方面:根据第1方面所述的芯片,还包括:
配置总线,所述运算处理单元、所述数据接收器、所述数据发送器与所述配置总线连接从而通过所述配置总线相互传输配置信息。
第3方面:根据第1方面所述的芯片,其中,所述数据接收器还配置为根据所述头信息对所述第一数据进行拆解。
第4方面:根据第1方面所述的芯片,其中,所述数据接收器包括:
第一串行接口;
数据缓冲器,用于缓存来自所述第一串行接口的所述第一数据;
解码器,用于从所述头信息解析所述第一数据的格式和存放地址,根据所述第一数据的格式切分所述第一数据,以及根据所述头信息配置所述运算处理单元和所述数据发送器的对应位;
DMA单元,用于接收来自所述解码器的所述第一数据和所述存放地址,从而将所述第一数据通过所述数据总线写入到所述存储器的对应区域。
第5方面:根据第1方面所述的芯片,其中,所述数据接收器还包括:
解压单元,用于对来自所述解码器的所述第一数据进行解压,并将解压后的第一数据发送给所述DMA单元。
第6方面:根据第1方面所述的芯片,所述数据发送器包括发送解码器、数据重排序缓冲器、发送缓冲器和第二串行接口,其中,
所述发送解码器配置为:将所述第二任务信息打包第二为头信息并将所述第二头信息发送至所述发送缓冲器,以及根据所述第二任务信息向所述数据重排序缓冲器发送数据读取请求信息;
所述数据重排序缓冲器配置为根据所述数据读取请求信息通过所述数据总线获取并发送所述第二数据,所述第二数据包括至少部分所述第一数据和/或所述运算处理结果;
所述发送缓冲器配置为对接收的数据进行缓存,并按照所述第二串行接口的格式发送缓存的数据。
第7方面:根据第6方面所述的芯片,其中,
所述发送缓冲器配置为接收所述第二头信息以及接收并缓存所述第二数据,以及按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第二数据;
第二串行接口配置为接收并发送所述第三数据。
第8方面:根据第6方面所述的芯片,其中所述数据发送器还包括算术逻辑单元,
其中,所述算术逻辑单元配置为对至少部分所述第二数据进行运算,并将所得到的运算结果和/或所述第二数据的部分或全部作为第四数据发送给所述发送缓冲器;
其中,所述发送缓冲器配置为接收所述第二头信息以及接收并缓存来自所述算术逻辑单元的所述第四数据,以及按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第四数据;
第二串行接口配置为接收并发送所述第三数据。
第9方面:根据第6方面所述的芯片,其中所述数据发送器还包括压缩单元,
其中,所述压缩单元配置为将所述第二数据压缩为第四数据并发送给所述发送缓冲器;
其中,所述发送缓冲器配置为接收所述第二头信息以及接收并缓存来自所述压缩单元的第四数据,按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第四数据;
其中,所述第二串行接口配置为接收并发送所述第三数据。
第10方面:根据第1方面所述的芯片,其中还包括设置在所述数据总线与所述运算处理单元或所述数据发送器之间的归并模块,所述归并模块包括归并模式单元、任务预取单元和任务发送单元,
其中,所述归并模式单元接收并存储其他运算处理单元和/或数据发送器的执行信息;
其中,所述任务预取单元配置为根据软件配置的寄存器信息从所述存储器获取所述第一任务信息,根据所述第一任务信息对所述执行信息进行处理并根据处理结果确定并发送配置信息和/或所述第二任务信息;
其中,所述任务发送单元配置为从所述任务预取单元接收所述第二任务信息并发送给其他运算处理单元和/或者数据发送器。
第11方面:根据第10方面所述的芯片,其中所述任务预取单元还配置为根据所述第一任务信息将相应任务拆解为多个传输子任务,并根据所述执行信息发送多个传输子任务的所述第二任务信息给所述任务发送单元。
第12方面:根据第10方面所述的芯片,其中所述任务发送单元还配置为监听所述运算处理单元或所述数据发送器的状态,并根据所述运算处理单元或所述数据发送器的执行结束状态向其他运算处理单元和/或数据发送器发送配置信息。
第13方面:根据第1方面所述的芯片,其中,所述数据总线包括NOC。
第14方面:根据第1方面所述的芯片,其中,所述芯片为人工智能芯片,所述运算处理单元为人工智能处理单元或机器学习处理单元。
第15方面:根据第1方面所述的芯片,其中,所述数据接收器、所述数据发送器和所述运算处理单元通过所述数据总线相互传输数据以及访问所述存储器。
第16方面:根据第2方面所述的芯片,其中,
所述数据接收器、所述数据发送器和所述运算处理单元通过所述数据总线相互传输数据以及访问所述存储器;
所述运算处理单元、所述数据接收器、所述数据发送器通过所述配置总线相互传输配置信息。
第17方面:一种多芯片***,包括多个根据第1-16方面中任一项所述的芯片。
第18方面:根据第17方面所述的多芯片***,其中所述多个芯片配置为包括环状、网状、树状结构中的至少一种的布局结构。
第19方面:根据第18方面所述的多芯片***,其中所述多个芯片构建为环形连接结构。
第20方面:一种电子设备,包括根据第1-16方面中任一项所述的芯片或根据第17-19方面中任一项所述的多芯片***。
第21方面:一种用于计算节点传输数据的方法,包括:
开始接收第一数据;
在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,转发所述第一数据的所述一部分;和/或
在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,对所述第一数据的所述一部分进行处理并转发处理结果。
第22方面:一种数据传输方法,包括:利用根据第1-16方面中任一项所述的芯片执行根据第21方面所述的用于计算节点传输数据的方法。
第23方面:一种数据传输方法,用于包括多个计算节点的***,其中所述多个计算节点中的至少部分节点执行根据第21或22方面所述的方法。
第24方面:根据第23方面所述的数据传输方法,其中所述多个计算节点构建为环形连接结构。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (22)
1.一种芯片,包括数据总线以及与所述数据总线连接的存储器、数据接收器、运算处理单元、数据发送器,其中,
所述数据接收器配置为接收来自外部的第一数据和头信息,将所述第一数据通过所述数据总线写入到所述存储器的对应区域,以及根据所述头信息配置对应的运算处理单元和/或数据发送器;
所述运算处理单元配置为接收第一任务信息,根据所述第一任务信息执行运算处理并对所述数据发送器执行配置操作;
所述数据发送器配置为获取第二任务信息以及第二数据,并基于至少部分所述第二数据向外输出第三数据;
所述数据发送器包括发送解码器、数据重排序缓冲器、发送缓冲器和第二串行接口,其中,
所述发送解码器配置为:将所述第二任务信息打包为第二头信息并将所述第二头信息发送至所述发送缓冲器,以及根据所述第二任务信息向所述数据重排序缓冲器发送数据读取请求信息;
所述数据重排序缓冲器配置为根据所述数据读取请求信息通过所述数据总线获取并发送所述第二数据,所述第二数据包括至少部分所述第一数据和/或所述运算处理结果;
所述发送缓冲器配置为对接收的数据进行缓存,并按照所述第二串行接口的格式发送缓存的数据。
2.如权利要求1所述的芯片,还包括:
配置总线,所述运算处理单元、所述数据接收器、所述数据发送器与所述配置总线连接从而通过所述配置总线相互传输配置信息。
3.如权利要求1所述的芯片,其中,所述数据接收器还配置为根据所述头信息对所述第一数据进行拆解。
4.如权利要求1所述的芯片,其中,所述数据接收器包括:
第一串行接口;
数据缓冲器,用于缓存来自所述第一串行接口的所述第一数据;
解码器,用于从所述头信息解析所述第一数据的格式和存放地址,根据所述第一数据的格式切分所述第一数据,以及根据所述头信息配置所述运算处理单元和所述数据发送器的对应位;
DMA单元,用于接收来自所述解码器的所述第一数据和所述存放地址,从而将所述第一数据通过所述数据总线写入到所述存储器的对应区域。
5.如权利要求1所述的芯片,其中,所述数据接收器还包括:
解压单元,用于对来自所述解码器的所述第一数据进行解压,并将解压后的第一数据发送给DMA单元。
6.如权利要求1所述的芯片,其中,
所述发送缓冲器配置为接收所述第二头信息以及接收并缓存所述第二数据,以及按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第二数据;
第二串行接口配置为接收并发送所述第三数据。
7.如权利要求1所述的芯片,其中所述数据发送器还包括算术逻辑单元,
其中,所述算术逻辑单元配置为对至少部分所述第二数据进行运算,并将所得到的运算结果和/或所述第二数据的部分或全部作为第四数据发送给所述发送缓冲器;
其中,所述发送缓冲器配置为接收所述第二头信息以及接收并缓存来自所述算术逻辑单元的所述第四数据,以及按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第四数据;
第二串行接口配置为接收并发送所述第三数据。
8.如权利要求1所述的芯片,其中所述数据发送器还包括压缩单元,
其中,所述压缩单元配置为将所述第二数据压缩为第四数据并发送给所述发送缓冲器;
其中,所述发送缓冲器配置为接收所述第二头信息以及接收并缓存来自所述压缩单元的第四数据,按照所述第二串行接口的格式发送所述第三数据,所述第三数据包括所述第四数据;
其中,所述第二串行接口配置为接收并发送所述第三数据。
9.如权利要求1所述的芯片,其中还包括设置在所述数据总线与所述运算处理单元或所述数据发送器之间的归并模块,所述归并模块包括归并模式单元、任务预取单元和任务发送单元,
其中,所述归并模式单元接收并存储其他运算处理单元和/或数据发送器的执行信息;
其中,所述任务预取单元配置为根据软件配置的寄存器信息从所述存储器获取所述第一任务信息,根据所述第一任务信息对所述执行信息进行处理并根据处理结果确定并发送配置信息和/或所述第二任务信息;
其中,所述任务发送单元配置为从所述任务预取单元接收所述第二任务信息并发送给其他运算处理单元和/或者数据发送器。
10.如权利要求9所述的芯片,其中所述任务预取单元还配置为根据所述第一任务信息将相应任务拆解为多个传输子任务,并根据所述执行信息发送多个传输子任务的所述第二任务信息给所述任务发送单元。
11.如权利要求9所述的芯片,其中所述任务发送单元还配置为监听所述运算处理单元或所述数据发送器的状态,并根据所述运算处理单元或所述数据发送器的执行结束状态向其他运算处理单元和/或数据发送器发送配置信息。
12.如权利要求1所述的芯片,其中,所述数据总线包括NOC。
13.如权利要求1所述的芯片,其中,所述芯片为人工智能芯片,所述运算处理单元为人工智能处理单元或机器学习处理单元。
14.如权利要求1所述的芯片,其中,所述数据接收器、所述数据发送器和所述运算处理单元通过所述数据总线相互传输数据以及访问所述存储器。
15.如权利要求2所述的芯片,其中,
所述数据接收器、所述数据发送器和所述运算处理单元通过所述数据总线相互传输数据以及访问所述存储器;
所述运算处理单元、所述数据接收器、所述数据发送器通过所述配置总线相互传输配置信息。
16.一种多芯片***,包括多个如权利要求1-15中任一项所述的芯片。
17.如权利要求16所述的多芯片***,其中所述多个芯片配置为包括环状、网状、树状结构中的至少一种的布局结构。
18.如权利要求17所述的多芯片***,其中所述多个芯片构建为环形连接结构。
19.一种电子设备,包括如权利要求1-15中任一项所述的芯片或如权利要求16-18中任一项所述的多芯片***。
20.一种用于计算节点传输数据的方法,其中,所述计算节点包括权利要求1-15中任意一项所述的芯片,
所述方法包括:
开始接收第一数据;
在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,转发所述第一数据的所述一部分;和/或
在接收到所述第一数据的一部分之后,在继续接收所述第一数据的同时,对所述第一数据的所述一部分进行处理并转发处理结果。
21.一种数据传输方法,用于包括多个计算节点的***,其中所述多个计算节点中的至少部分节点执行如权利要求20所述的方法。
22.如权利要求21所述的数据传输方法,其中所述多个计算节点构建为环形连接结构。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910819946.3A CN112446474B (zh) | 2019-08-31 | 2019-08-31 | 芯片和多芯片***及电子设备和数据传输方法 |
PCT/CN2020/095205 WO2021036404A1 (zh) | 2019-08-31 | 2020-06-09 | 数据传输方法及相关设备 |
US17/419,819 US11934337B2 (en) | 2019-08-31 | 2020-08-31 | Chip and multi-chip system as well as electronic device and data transmission method |
PCT/CN2020/112525 WO2021037261A1 (zh) | 2019-08-31 | 2020-08-31 | 芯片和多芯片***及电子设备和数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910819946.3A CN112446474B (zh) | 2019-08-31 | 2019-08-31 | 芯片和多芯片***及电子设备和数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112446474A CN112446474A (zh) | 2021-03-05 |
CN112446474B true CN112446474B (zh) | 2022-11-22 |
Family
ID=74685647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910819946.3A Active CN112446474B (zh) | 2019-08-31 | 2019-08-31 | 芯片和多芯片***及电子设备和数据传输方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11934337B2 (zh) |
CN (1) | CN112446474B (zh) |
WO (1) | WO2021037261A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN109522052A (zh) * | 2018-11-27 | 2019-03-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109828843A (zh) * | 2019-01-30 | 2019-05-31 | 郑州云海信息技术有限公司 | 一种计算节点间数据传输的方法、***及电子设备 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5224105A (en) * | 1990-09-25 | 1993-06-29 | Atlantic Richfield Company | Transfer of data without loss over a noisy channel |
US5557734A (en) * | 1994-06-17 | 1996-09-17 | Applied Intelligent Systems, Inc. | Cache burst architecture for parallel processing, such as for image processing |
JP2001117900A (ja) | 1999-10-19 | 2001-04-27 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置 |
US6687247B1 (en) | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
JP2001266488A (ja) * | 2000-03-23 | 2001-09-28 | Toshiba Corp | 圧縮オーディオデータ再生装置および圧縮オーディオデータ再生方法 |
US7251704B2 (en) | 2002-08-23 | 2007-07-31 | Intel Corporation | Store and forward switch device, system and method |
CN100518140C (zh) | 2005-06-15 | 2009-07-22 | 华为技术有限公司 | Spi4ⅱ接口远距离传输的实现方法及装置 |
US8363654B2 (en) | 2008-11-07 | 2013-01-29 | Hewlett-Packard Development Company, L.P. | Predictive packet forwarding for a network switch |
CN102279763A (zh) | 2011-08-30 | 2011-12-14 | 福州瑞芯微电子有限公司 | 一种bootrom的优化方法 |
CN102799561A (zh) | 2012-06-18 | 2012-11-28 | 龙芯中科技术有限公司 | 嵌入式可重构数据处理方法、装置及*** |
US9916251B2 (en) * | 2014-12-01 | 2018-03-13 | Samsung Electronics Co., Ltd. | Display driving apparatus and cache managing method thereof |
US9508282B2 (en) * | 2014-12-10 | 2016-11-29 | Ati Technologies Ulc | Virtualized display output ports configuration |
CN108617009B (zh) | 2016-12-13 | 2020-08-18 | ***通信有限公司研究院 | 一种数据传输方法、装置、***及分组数据网网关 |
WO2018112699A1 (zh) | 2016-12-19 | 2018-06-28 | 上海寒武纪信息科技有限公司 | 人工神经网络反向训练装置和方法 |
CN108462679B (zh) * | 2017-02-21 | 2021-06-04 | 杭州海康威视数字技术股份有限公司 | 数据传输方法及装置 |
KR102415508B1 (ko) | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
JP6925889B2 (ja) | 2017-06-30 | 2021-08-25 | 株式会社東芝 | 中継装置、伝送処理プログラム |
KR102452953B1 (ko) | 2017-10-30 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US10657259B2 (en) | 2017-11-01 | 2020-05-19 | International Business Machines Corporation | Protecting cognitive systems from gradient based attacks through the use of deceiving gradients |
KR20190051697A (ko) | 2017-11-07 | 2019-05-15 | 삼성전자주식회사 | 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법 |
CN109993273B (zh) | 2017-12-29 | 2021-05-11 | 深圳云天励飞技术有限公司 | 卷积神经网络的卷积实现方法及相关产品 |
WO2019141902A1 (en) | 2018-01-17 | 2019-07-25 | Nokia Technologies Oy | An apparatus, a method and a computer program for running a neural network |
CN109117953B (zh) | 2018-09-11 | 2021-11-09 | 北京迈格威科技有限公司 | 网络参数训练方法和***、服务器、客户端及存储介质 |
CN110059809B (zh) | 2018-10-10 | 2020-01-17 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
CN110072257B (zh) | 2019-03-07 | 2022-08-12 | 武汉星耀科技有限公司 | 一种mec下用户互通的方法 |
-
2019
- 2019-08-31 CN CN201910819946.3A patent/CN112446474B/zh active Active
-
2020
- 2020-08-31 WO PCT/CN2020/112525 patent/WO2021037261A1/zh active Application Filing
- 2020-08-31 US US17/419,819 patent/US11934337B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704922A (zh) * | 2017-04-19 | 2018-02-16 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN109522052A (zh) * | 2018-11-27 | 2019-03-26 | 北京中科寒武纪科技有限公司 | 一种计算装置及板卡 |
CN109828843A (zh) * | 2019-01-30 | 2019-05-31 | 郑州云海信息技术有限公司 | 一种计算节点间数据传输的方法、***及电子设备 |
Non-Patent Citations (1)
Title |
---|
《一种HDMI测试***的设计与实现》;高剑;《电子测量技术》;20170531;第40卷(第5期);第99-103页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021037261A1 (zh) | 2021-03-04 |
CN112446474A (zh) | 2021-03-05 |
US20220156221A1 (en) | 2022-05-19 |
US11934337B2 (en) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240171506A1 (en) | System and method for facilitating self-managing reduction engines | |
US7616562B1 (en) | Systems and methods for handling packet fragmentation | |
US7283528B1 (en) | On the fly header checksum processing using dedicated logic | |
US7782857B2 (en) | Logical separation and accessing of descriptor memories | |
US7680116B1 (en) | Optimized buffer loading for packet header processing | |
US10237782B2 (en) | Hardware acceleration for batched sparse codes | |
US10609125B2 (en) | Method and system for transmitting communication data | |
US9900260B2 (en) | Efficient support for variable width data channels in an interconnect network | |
US20230132724A1 (en) | Broadcast adapters in a network-on-chip | |
CN114138707B (zh) | 一种基于fpga的数据传输*** | |
US7239630B1 (en) | Dedicated processing resources for packet header generation | |
CN116383114B (zh) | 芯片、芯片互联***、数据传输方法、电子设备和介质 | |
CN112446474B (zh) | 芯片和多芯片***及电子设备和数据传输方法 | |
US6208645B1 (en) | Time multiplexing of cyclic redundancy functions in point-to-point ringlet-based computer systems | |
CN110535847B (zh) | 网络处理器及网络数据的入栈处理方法 | |
US10826982B2 (en) | Packet processing architecture and method therefor | |
US7158520B1 (en) | Mailbox registers for synchronizing header processing execution | |
US7180893B1 (en) | Parallel layer 2 and layer 3 processing components in a network router | |
WO2021036404A1 (zh) | 数据传输方法及相关设备 | |
CN114844757B (zh) | 一种面向分布式并行运算类算法的片上网络设计方法 | |
US20170295237A1 (en) | Parallel processing apparatus and communication control method | |
WO2024001874A1 (zh) | 模式协商方法、装置、设备、***及计算机可读存储介质 | |
CN114490465B (zh) | 用于直接存储器访问的数据传输方法和装置 | |
CN114399034B (zh) | 用于直接存储器访问装置的数据搬运方法 | |
CN112825101B (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 |