CN112970037A - 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质 - Google Patents
用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质 Download PDFInfo
- Publication number
- CN112970037A CN112970037A CN201980073119.2A CN201980073119A CN112970037A CN 112970037 A CN112970037 A CN 112970037A CN 201980073119 A CN201980073119 A CN 201980073119A CN 112970037 A CN112970037 A CN 112970037A
- Authority
- CN
- China
- Prior art keywords
- chip
- data
- stage data
- memory
- stage
- 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
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 62
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000015654 memory Effects 0.000 claims description 141
- 210000002364 input neuron Anatomy 0.000 claims description 27
- 210000004205 output neuron Anatomy 0.000 claims description 26
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000013500 data storage Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 7
- 210000000225 synapse Anatomy 0.000 claims description 6
- 210000002569 neuron Anatomy 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000946 synaptic effect Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Analysis (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
- Logic Circuits (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本申请提供一种用于实现神经网络应用的数据处理方法、多芯片系统、和非暂时性计算机可读介质。数据处理方法包括:分配相应的芯片来处理第一阶段数据的相应部分和第二阶段数据的相应部分;第一芯片将第一阶段数据的第一部分通过通道传送到第二芯片;第二芯片将第一阶段数据的第二部分通过通道传送到第一芯片;第一芯片计算第一阶段数据与权重值的第一部分以获得第一结果,并且第二芯片计算第一阶段数据与权重值的第二部分以获得第二结果,其中第一结果和第二结果皆是第二阶段数据的其中之一。
Description
技术领域
本发明关于多芯片系统领域,特别是关于一种用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质。
背景技术
人工神经网络(artificial neural network)是参照生物脑的计算模型。在神经网络中,被称为神经元的节点可以互连并共同操作以处理输入数据。不同类型的神经网络的范例包括但不限于卷积神经网络(convolutional neural network)、递归神经网络(recurrent neural network)、深度信念网络(deep belief network),受限玻尔兹曼机(restricted Boltzman machine)等。在前馈神经网络中,神经网络的神经元与其他神经元有链接,且链路仅在一个方向上延伸(即向前方向)通过神经网络。
可以利用神经网络从复杂的输入数据中提取“特征值”。神经网络可以包括多个层。每个层接收输入数据并通过处理层的输入数据生成输出数据。输出数据可以是神经网络通过将输入图像或特征值图与卷积核(convolution kernel)卷积运算而产生的输入数据的特征值图。在卷积神经网络加速芯片的实现中,由于不可能指定加速资源的具体数量,芯片级并行化处理的可能性是最重要的部分之一。每个芯片中加速元件的同步和数据共享始终是关键问题。
有鉴于此,有必要提供一种用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质,以解决现有技术的问题。
发明内容
为了解决上述技术问题,本揭示的目的在于提供一种多芯片系统,一种多芯片系统、数据处理方法、和非暂时性计算机可读介质,以更有效地实现芯片级并行化处理。
为了达到上述目的,本揭示提供一种适用于多芯片系统的数据处理方法,用于实现神经网络应用,其中所述多芯片系统包括:一通道、一第一芯片、和与所述通道连接的一第二芯片,其中所述神经网络应用包括一第一阶段数据、一第二阶段数据、一第三阶段数据、和多个权重值,其中所述数据处理方法包括:分配所述第一芯片来处理所述第一阶段数据的一第一部分、所述第二阶段数据的一第一部分、以及所述第三阶段数据的一第一部分,以及并分配所述第二芯片来处理所述第一阶段数据的一第二部分、所述第二阶段数据的一第二部分、以及所述第三阶段数据的一第二部分;所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第一部分;所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第二部分;所述第一芯片获取所述第一阶段数据的所述第一部分;所述第一芯片将所述第一阶段数据的所述第一部分通过所述通道传送到所述第二芯片;所述第二芯片接收所述第一阶段数据的所述第一部分;所述第二芯片获取所述第一阶段数据的所述第二部分;所述第二芯片将所述第一阶段数据的所述第二部分通过所述通道传送到所述第一芯片;所述第一芯片接收所述第一阶段数据的所述第二部分;所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第一部分以获得一第一结果,其中所述第一结果是所述第二阶段数据的其中之一;以及所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第二部分以获得一第二结果,其中所述第二结果是所述第二阶段数据的其中之一。
本揭示的其中之一实施例中,在获得所述第一结果和所述第二结果之后,所述数据处理方法还包括:所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第三部分;所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第四部分;所述第一芯片获取所述第一阶段数据的所述第一部分;所述第一芯片将所述第一阶段数据的所述第一部分通过所述通道传送到所述第二芯片;所述第二芯片接收所述第一阶段数据的所述第一部分;所述第二芯片获取所述第一阶段数据的所述第二部分;所述第二芯片将第一阶段数据的所述第二部分通过所述通道传送到所述第一芯片;所述第一芯片接收所述第一阶段数据的所述第二部分;所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第三部分以获得一第三结果,其中所述第三结果是所述第二阶段数据的其中之一;以及所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第四部分以获得一第四结果,其中所述第四结果是所述第二阶段数据的其中之一。
本揭示的其中之一实施例中,在获得所述第一结果、所述第二结果、所述第三结果、和所述第四结果之后,所述数据处理方法还包括:依序地分配所述第一结果、所述第三结果、所述第二结果、和所述第四结果作为所述第二阶段数据的输入数据。
本揭示的其中之一实施例中,所述多芯片系统还包括一第一记忆体和一第二记忆体,并且所述第一记忆体与所述第一芯片相连,以及所述第二记忆体与所述第二芯片相连;其中所述第一记忆体包括一第一区和一第二区,以及所述第二记忆体包括一第三区和一第四区;以及其中所述第一阶段数据的所述第一部分存储在所述第一记忆体的所述第一区中,以及所述第二阶段数据的所述第一部分存储在所述第一记忆体的所述第二区,并且所述第一阶段数据的所述第二部分存储在所述第二记忆体的所述第三区,以及所述第二阶段数据的所述第二部分存储在所述第二记忆体的所述第四区。
本揭示的其中之一实施例中,所述数据处理方法还包括:从所述第一记忆体中擦除所述第一阶段数据的所述第一部分,并从所述第二记忆体中擦除所述第一阶段数据的所述第二部分;以及将所述第一记忆体的所述第二区和所述第二记忆体的所述第四区转换成输入数据存储区域。
本揭示的其中之一实施例中,所述多芯片系统还包括与所述第一芯片和所述第二芯片连接的一记忆体和配置成连接所述第一芯片和所述第二芯片的多条传输线;其中所述记忆体包括一第一区和一第二区;以及其中所述第一阶段数据存储在所述记忆体的所述第一区,以及所述第二阶段数据存储在所述记忆体的所述第二区。
本揭示还提供一种用于实现神经网络应用的多芯片系统,其中所述神经网络应用包括一第一阶段数据、一第二阶段数据、一第三阶段数据、和多个权重值,所述多芯片系统包括:一数据通道;一第一芯片和一第二芯片,其中所述第一芯片和所述第二芯片连接所述数据通道;一存储器;以及一处理器,其中所述多芯片系统的多个计算机代码存储在所述存储器中并且被配置为由所述处理器执行以执行一数据处理方法,所述数据处理方法包括:分配所述第一芯片来处理所述第一阶段数据的一第一部分、所述第二阶段数据的一第一部分、以及所述第三阶段数据的一第一部分,以及并分配所述第二芯片来处理所述第一阶段数据的一第二部分、所述第二阶段数据的一第二部分、以及所述第三阶段数据的一第二部分;所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第一部分;所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第二部分;所述第一芯片获取所述第一阶段数据的所述第一部分;所述第一芯片将所述第一阶段数据的所述第一部分通过所述数据通道传送到所述第二芯片;所述第二芯片接收所述第一阶段数据的所述第一部分;所述第二芯片获取所述第一阶段数据的所述第二部分;所述第二芯片将所述第一阶段数据的所述第二部分通过所述数据通道传送到所述第一芯片;所述第一芯片接收所述第一阶段数据的所述第二部分;所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第一部分以获得一第一结果,其中所述第一结果是所述第二阶段数据的其中之一;以及所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第二部分以获得一第二结果,其中所述第二结果是所述第二阶段数据的其中之一。
本揭示的其中之一实施例中,所述数据处理方法还包括:所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第三部分;所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第四部分;所述第一芯片获取所述第一阶段数据的所述第一部分;所述第一芯片将所述第一阶段数据的所述第一部分通过所述数据通道传送到所述第二芯片;所述第二芯片接收所述第一阶段数据的所述第一部分;所述第二芯片获取所述第一阶段数据的所述第二部分;所述第二芯片将第一阶段数据的所述第二部分通过所述数据通道传送到所述第一芯片;所述第一芯片接收所述第一阶段数据的所述第二部分;所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第三部分以获得一第三结果,其中所述第三结果是所述第二阶段数据的其中之一;以及所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第四部分以获得一第四结果,其中所述第四结果是所述第二阶段数据的其中之一。
本揭示的其中之一实施例中,所述数据处理方法还包括:依序地分配所述第一结果、所述第三结果、所述第二结果、和所述第四结果作为所述第二阶段数据的输入数据。
本揭示的其中之一实施例中,所述多芯片系统还包括一第一记忆体和一第二记忆体,并且所述第一记忆体与所述第一芯片相连,以及所述第二记忆体与所述第二芯片相连;其中所述第一记忆体包括一第一区和一第二区,以及所述第二记忆体包括一第三区和一第四区;以及其中所述第一阶段数据的所述第一部分存储在所述第一记忆体的所述第一区中,以及所述第二阶段数据的所述第一部分存储在所述第一记忆体的所述第二区,并且所述第一阶段数据的所述第二部分存储在所述第二记忆体的所述第三区,以及所述第二阶段数据的所述第二部分存储在所述第二记忆体的所述第四区。
本揭示的其中之一实施例中,所述数据处理方法还包括:从所述第一记忆体中擦除所述第一阶段数据的所述第一部分,并从所述第二记忆体中擦除所述第一阶段数据的所述第二部分;以及将所述第一记忆体的所述第二区和所述第二记忆体的所述第四区转换成输入数据存储区域。
本揭示的其中之一实施例中,所述多芯片系统还包括与所述第一芯片和所述第二芯片连接的一记忆体和配置成连接所述第一芯片和所述第二芯片的多条传输线;其中所述记忆体包括一第一区和一第二区;其中所述第一阶段数据存储在所述记忆体的所述第一区,以及所述第二阶段数据存储在所述记忆体的所述第二区;以及其中每一所述第一芯片和所述第二芯片通过所述多条传输线中的至少一条从所述记忆体获得所述第一阶段数据。
本揭示还一种用于在多芯片系统中实现神经网络应用的非暂时性计算机可读介质,所述非暂时性计算机可读介质内记录有多个程序代码,所述多个程序代码由一处理器执行并且包括:A,设置所述神经网络应用的多个输入神经元和多个输出神经元,其中每个所述多个输出神经元通过多个突触连接到所述多个输入神经元,用于根据多个权重值来加权来自所述多个输入神经元的多个输出;B,等待对应所述多个输入神经元的第一阶段数据通过一通道;C,计算相应的权重值与部分的所述第一阶段数据;D,同时计算对应于所述多个输出神经元的第二阶段数据;E,确定是否计算完所有的所述多个权重值,如果是,则进入F,如果不是,则返回B;F,将所述第二阶段数据保持在一记忆体上;G,为所述多个输出神经元设置所述第二阶段数据;以及H,确定是否所有已分配的所述多个输出神经元都已完成计算,如果是,则切换到下一层应用,如果不是,则调用一新的通道任务并返回到A。
本揭示的其中之一实施例中,在执行所述新的通道任务中所述处理器执行的所述多个程序代码还包含:I,从所述记忆体加载所述第一阶段数据;J,通过所述通道播送所述第一阶段数据;K,确定所述第一阶段数据是否完全播送,如果是,则进入L,如果不是,则返回J;以及L,确定是否计算完所有的所述第一阶段数据,如果是,则所述新的通道任务结束,如果否,则回到I。
本揭示的其中之一实施例中,在执行所述切换到下一层应用中所述处理器执行的所述多个程序代码还包括:M,设置所述记忆体的输入点位作为输出点位;以及N,设置所述记忆体的所述输出点位作为所述输入点位。
相较于现有技术,本揭示提供了一种能够并行运行的多芯片系统。为了提高机器学习加速芯片的性能,本揭示提供了一种用于多芯片系统的广播通道,它是一种基于具有所述功能的形式的市场需求的实现的结构设计理念。为了实现这一点,在本揭示中,每个芯片的输入特征值被部分地传输和共享,并且可以通过在其他芯片中同时使用它来计算群集,计算结果为最终输出神经元数值,并再次作为下一层的输入数据。这使我们能够利用多芯片系统实现高性能、低成本、以及满足市场需求。
附图说明
图1显示根据本揭示的数据处理过程的简易方块图。
图2显示根据本揭示的第一优选实施例的神经网络的简易方块图。
图3显示用于实现图2的神经网络应用的多芯片系统的示意图。
图4显示图3的E部分的特定结构的示意图。
图5显示根据本揭示的第二优选实施例的多芯片系统的示意图。
图6显示本揭示的一优选实施例的示例性计算机系统的方块图。
具体实施方式
为了让本揭示的上述及其他目的、特征、优点能更明显易懂,下文将特举本揭示优选实施例,并配合所附图式,作详细说明如下。
请参考图1,其显示根据本揭示的数据处理过程的简易方块图。所述数据处理过程适用于实现神经网络应用的多芯片系统。多芯片系统至少包括:广播通道110和与广播通道110连接的多个芯片C1-CN,其中每个芯片C1-CN具有内置计数器,以显示其自身的广播顺序。如图1所示,每个芯片C1-CN分配多个输入特征值。例如,第一芯片C1分配输入特征值I1、I2、IM等。在数据处理过程中,每个芯片C1-CN通过广播通道110发送要分配给其他芯片的输入特征值。接着,芯片C1-CN根据接收到的输入特征值进行处理且并行地计算输出特征值,例如输出特征值O1、O2、OM。下面将详细描述用于实现本揭示的神经网络应用的多芯片系统和适用于多芯片系统的数据处理方法的具体实施方式。
请参照图2,其显示根据本揭示的第一优选实施例的神经网络1的简易方块图。神经网络1包括多个层(包括第一层L1、第二层L2、和第三层L3)、第一层L1中的多个神经元2、第二层L2中的多个神经元3、以及第三层L3中的多个神经元5。输入图为第一层L1创建一组值。第一层L1可以通过将输入图的像素直接映射到第一层L1中的特定神经元来生成,使得神经元2与第一阶段数据的一部分(例如A0、A1、A2、A3、A4、AC等)相关联,这取决于像素是否表现出特定属性。根据神经网络的变化和创建的问题来解决,神经网络1的每一层可能具有不同数量的神经元,并且这些可能与多个输入特征值(如,第一阶段数据A0-AC)有关,也可能与的无关。
如图2所示,如果第一层L1是神经网络1的输入层而第二层L2是输出层,则神经元2作为输入神经元,神经元3作为输出神经元。第一层L1中的输入神经元2连接到第二层L2中的输出神经元3。在神经网络1中,特定层中的每个神经元通过多个突触4和多个突触6连接到下一层中的神经元,以根据突触权重值从输入神经元输出权重值(例如W00、W01等)。接着,第二层L2中的输出神经元3从第一层L1中的每个输入神经元2接收第一阶段数据A0-AC。然后,将第一阶段数据A0-AC求和,并将所述和与偏差进行比较,并且所述值后续可以作为下一层的神经元的输入特征值(即第二阶段数据N0-Nf)。所述计算继续神经网络1的各个层执行,直到它到达最后一层。例如,如果第三层L3是最终层,则第二层L2是神经网络1的输入层,第三层L3是输出层。神经元3作为输入神经元,神经元5作为输出神经元。接着,第三层L3中的输出神经元5从第二层L2中的每个输入神经元3接收第二阶段数据N0-Nf。然后将第二阶段数据N0-Nf求和,并将所述和与偏差进行比较,并且所获得的值是第三阶段数据B0-Bc。
请参照图3,其显示用于实现图2的神经网络应用的多芯片系统10的示意图。神经网络1由多芯片系统10实施,且多芯片系统10包括广播通道110、多个芯片(例如,第一芯片C1、第二芯片C2、第N个芯片CN等)、控制器130、和多个记忆体S1-SN。广播通道110与多个芯片C1-CN连接。广播通道110用于从芯片传送数据到其他芯片。在一个实施例中,芯片C1-CN包含加速芯片。每一芯片C1-CN与其中之一记忆体S1-SN连接。所有芯片的唯一索引(例如0001、0010、0100、1000)都是物理分配的。
在本揭示中,其中之一芯片C1-CN通过预定义协议分配为主芯片(即,以主模式操作),其占据广播通道110并执行数据总线操作。所有剩余的芯片都以从属模式运行并接收数据。具体来说,当第一阶段数据A0-AC通过广播通道110顺序发送时,广播通道110的操作协议使得其中之一芯片成为主芯片而另一个芯片作为从属芯片操作。主模式是芯片的操作模式,用以维持对计算芯片的控制。在一实施例中,当在主模式下操作时,芯片可以进一步控制和管理在从属模式下操作的其他芯片。从属模式是其中一个芯片的操作模式,用以允许在主模式下操作的其他芯片控制和管理它。
请参照图4,其显示图3的E部分的特定结构的示意图。第一芯片C1包括计算阵列1201、缓冲器1202、存储器控制器1203、通信通道1204、和物理接口1205。优选地,广播通道110采用多点低压差分信号(multipoint low voltage differential signaling,LVDS)物理通道,并且通信通道1204采用标准化物理通道,例如两个通用串行总线(universalserial bus,USB)或移动产业处理器接口(mobile industry processor interface,MIPI)。如果第一芯片C1在主模式下操作,则其他芯片C2-CN在从属模式下操作。此外,其他芯片的C2-CN中的每一个包括与第一芯片C1类似的元件。
如图2和图3所示,多芯片系统10的控制器130包括存储器131和处理器132。多芯片系统10的多个计算机代码存储在存储器131中,所述存储器131被配置为由处理器132执行以执行数据处理方法。数据处理方法包括如下步骤:首先,将神经网络1的一个或多个不同的多个输入神经元2、多个输出神经元3、和多个神经元5分配给多个芯片C1-CN中的每一个。也就是说,多个输入神经元2、多个输出神经元3、和多个神经元5被每一个芯片C1-CN占据。此外,与神经网络1的多个输入神经元2相关联的第一阶段数据A0-AC存储在多芯片系统10的相应记忆体S1-SN中。具体地,神经网络1的第一至第三个输入神经元2被第一芯片C1占据,并且第一至第三个输入神经元2分别与第一阶段数据A0-A2的第一部分相关联。也就是说,第一芯片C1被分配用于处理第一阶段数据的第一部分A0-A2、第二阶段数据的第一部分(N0和N1)、以及第三阶段数据的第一部分B0。类似地,第二芯片C2被分配用于处理第一阶段数据的第二部分A3-A5、第二阶段数据N2的第二部分(N2和N3)、以及第三阶段数据的第二部分B1。
如图2和图3所示,第一阶段数据的第一部分A0-A2存储在第一记忆体S1中,第一阶段数据的第二部分A3-A5存储在第二记忆体S2中。在神经网络1的神经元2、神经元3、和神经元5被分配给多个芯片中的每一个之后,多个芯片中的每一个获取对应第二阶段数据N0-Nf的权重值的对应部分。举例来说,第一芯片C1获取对应第二阶段数据N0-Nf的权重值的第一部分(例如,W00等),并且第二芯片C2获取对应第二阶段数据N0-Nf的权重值的二部分(例如,W02等)。
接着,每一个芯片C1-CN通过广播通道110顺序地获取第一阶段数据A0-Ac的相应部分并将其传送到其他芯片。在主芯片顺序地发送它的所有数据之后,下一个芯片成为主芯片并执行相同的操作,并且剩余的芯片成为用于接收数据的从属芯片。也就是说,一旦主芯片的第一阶段数据的所有相应部分被共享到其他芯片,具有第一阶段数据的另一对应部分的下一个芯片就成为主芯片直到其第一阶段数据耗尽。举例来说,如果第一芯片C1是主芯片,则第一芯片C1获取第一阶段数据的第一部分A0-A2,并通过广播通道110将第一阶段数据的第一部分A0-A2传送到第二芯片C2,使得第二芯片C2接收第一阶段数据的第一部分A0-A2。类似地,第一芯片C1顺序地将第一阶段数据的第一部分A0-A2传送到其他芯片C3-CN,使得其他芯片C3-CN顺序地接收第一阶段数据的第一部分A0-A2。在第一芯片C1的第一阶段数据的第一部分A0-A2与其他芯片C2-CN共享之后,下一个芯片(即具有第一阶段数据的第二部分A3-A5的第二芯片C2)成为主芯片。接着,第二芯片C2获取第一阶段数据的第二部分A3-A5,并通过广播通道110将第一阶段数据的第二部分A3-A5传送到第一芯片C1,使得第一芯片C1接收第一阶段数据的第二部分A3-A5。接着,第二芯片C2顺序地将第一阶段数据的第二部分A3-A5传送到其他芯片C3-CN,使得其他芯片C3-CN顺序地接收第一阶段数据的第二部分A3-A5。因此,第一芯片C1先获得所有的第一阶段数据A0-Ac,然后是第二芯片C2,依此类推。
在其中之一芯片C1-CN接收到第一阶段数据A0-Ac之后,相应的芯片计算第一阶段数据A0-Ac与相应的突触权重值而产生权重值输出。也就是说,多个芯片C1-CN根据其输出函数并行地计算来自多个输入神经元的总权重值输出的第一阶段数据A0-Ac。举例来说,第一芯片C1通过计算阵列1201计算第一阶段数据A0-Ac和权重值的第一部分(例如,W00等),以获得第一结果N0,其中第一结果N0是第二阶段数据N0-Nf的其中之一。接着,第二芯片C2计算第一阶段数据A0-Ac和权重值的第二部分(例如,W02等),以获得第二结果N2,其中第二结果N2是第二阶段数据N0-Nf的其中之一。
芯片C1-CN重复执行以上获取和顺序地传输步骤,直到所有芯片C1-CN通过广播通道110彼此传送第一阶段数据A0-Ac,并因此完成第二阶段数据N0-Nf。具体地,在获得第二阶段数据N0-Nf的第一结果N0和第二结果N2之后,第一芯片C1获取对应第二阶段数据N0-Nf的权重值的第三部分(例如,W01),以及第二芯片C2获取对应于第二阶段数据N0-Nf的权重值的第四部分(例如,W03等)。接着,每一个芯片C1-CN再次通过广播通道110顺序地获取第一阶段数据A0-Ac的相应部分并将其传送到其他芯片。在主芯片顺序地发送它的所有数据之后,下一个芯片成为主芯片并执行相同的操作,并且剩余的芯片成为用于接收数据的从属芯片。也就是说,一旦主芯片的第一阶段数据的所有对应部分被共享到其他芯片,具有第一阶段数据的另一对应部分的下一个芯片变为主芯片直到其第一阶段数据耗尽。例如,如果第一芯片C1是主芯片,则第一芯片C1获取第一阶段数据的第一部分A0-A2,并通过广播通道110传送第一阶段数据的第一部分A0-A2到第二芯片C2,使得第二芯片C2接收第一阶段数据的第一部分A0-A2。类似地,第一芯片C1顺序地将第一阶段数据的第一部分A0-A2传送到其他芯片C3-CN,使得其他芯片C3-CN顺序地接收第一阶段数据的第一部分A0-A2。在第一芯片C1的第一阶段数据的第一部分A0-A2与其他芯片C2-CN共享之后,下一个芯片(即具有第一阶段数据的第二部分A3-A5的第二芯片C2)成为主芯片。然后,第二芯片C2获取第一阶段数据的第二部分A3-A5,并通过广播通道110将第一阶段数据的第二部分A3-A5传送到第一芯片C1,使得第一芯片C1接收第一阶段数据的第二部分A3-A5。然后,第二芯片C2顺序地将第一阶段数据的第二部分A3-A5传送到其他芯片C3-CN,使得其他芯片C3-CN顺序地接收第一阶段数据的第二部分A3-A5。因此,第一芯片C1l首先获得所有的第一阶段数据A0-Ac,然后是第二芯片C2,依此类推。
在其中之一芯片C1-CN接收到其中之一第一阶段数据A0-Ac之后,相应的芯片计算相应的突触权重值与第一阶段数据A0-Ac以产生权重值输出。也就是说,多个芯片C1-CN根据其输出函数并行地计算来自多个输入神经元的总权重值输出的第一阶段数据A0-Ac。举例来说,第一芯片C1通过计算阵列1201计算第一阶段数据A0-Ac和权重值的第三部分(例如,W01等),以获得第三结果N1,其中第三结果N1是第二阶段数据N0-Nf的其中之一。接着,第二芯片C2计算第一阶段数据A0-Ac和权重值的第四部分(例如,W03等),以获得第四结果N3,其中第四结果N3是第二阶段数据N0-Nf的其中之一。这种顺序地处理的原因是由于所有芯片的C1-CN都具有部分本地化的输入神经元。通过以下事实使得每个芯片都可以用不同的突触4以及目标输出神经元3来计算,即使每个芯片的计算结果随后被存储为输出特征值。此外,第一结果N0、第三结果N1、第二结果N2、和第四结果N3被顺序地指定为第二阶段数据N0-Nf的输入数据。
在所有第一阶段数据A0-Ac都耗尽后,所有芯片C1-CN将其第二阶段数据N0-Nf存储在其记忆体S1-SN中。例如,如图2所示,多芯片系统10的多个记忆体S1-SN包括第一记忆体S1和第二记忆体S2。第一记忆体与第一芯片C1连接,第二记忆体S2与第二芯片C2连接。第一记忆体S1包括第一区Z1和第二区Z2,以及第二记忆体S2包括第三区Z3和第四区Z4。第一阶段数据的第一部分A0-A2存储在第一记忆体S1的第一区Z1中,第二阶段数据的第一部分N0-N1存储在第一记忆体S1的第二区Z2,第一阶段数据的第二部分A3-A5存储在第二记忆体S2的第三区Z3,以及第二阶段数据的第二部分N2-N3存储在第二记忆体S2的第四区Z4中。
在神经网络1的下一层应用中,存储为输出数据的第二阶段数据N0-Nf现在用于下一层,并且第二阶段数据N0-Nf作为输入特征值。这样,存储在其记忆体S1-SN中的第二阶段数据N0-Nf被切换为神经网络1之后续的下一层的输入特征值。此时,第一阶段数据A0-Ac从它们的记忆体S1-SN中擦除。例如,第一阶段数据的第一部分A0-A2从第一记忆体S1的第一区Z1中擦除,第一阶段数据的第二部分A3-A5从第二记忆体S2的第三区Z3擦除。并且,第一记忆体S1的第二区Z2和第二记忆体S2的第四区Z4被转换为输入数据存储区域,用于存储相应的第二阶段数据N0-Nf,以及第一记忆体S1的第一区Z1和第二记忆体S2的第三区Z3被转换成输出数据存储区域,用于存储相应的第三阶段数据B0-BC。
如图2所示,如果第二层L2是神经网络1的输入层而第三层L3是输出层,则神经元3作为输入神经元,以及神经元5作为输出神经元。其中之一芯片C1-CN通过广播通道110获得与对应于另一芯片的神经元3相关联的第二阶段数据N0-Nf的一部分。接着,芯片C1-CN计算第二阶段数据N0-Nf并生成第三阶段数据B0-BC。第三阶段数据B0-BC的获取过程类似于第二阶段数据N0-Nf的获取过程,此处不再赘述。
在第一实施例中,多芯片系统10不共享实际的记忆体资源,换句话说,不可能直接访问其他芯片的局部记忆体S1-SN,但它的结构是每个芯片通过公共广播通道110共享必要的输入特征值(例如,第一阶段数据A0-Ac或第二阶段数据N0-Nf)并使用必要的元件进行计算。因此,通过本揭示的操作机制可以实现多芯片系统10,其优选地应用于需要更好性能的应用系统。
请参照图5,其显示根据本揭示的第二优选实施例的多芯片系统20的示意图。多芯片系统20包括广播通道210、多个芯片(例如第一芯片C1、第二芯片C2、第三芯片C3、和第四芯片C4)、控制器230、和记忆体S。多个芯片C1-C4与广播通道210连接。优选地,芯片C1-C4可以为用于神经网络的加速芯片。第一实施例与第二实施例的区别在于第二优选实施例的多芯片系统20仅包括一个记忆体S。此外,多芯片系统20还包括多条传输线260,用于将芯片C1-C4中的一个与另一个连接。
如图5所示,记忆体S包括第一区Z1和第二区Z2。当多芯片系统20用于实现神经网络应用的第一层时,第一阶段数据存储在第一区Z1以及第二阶段数据存储在第二区Z2中。
如图5所示,在第二实施例中,为了防止由于大量本地化的记忆体而导致的成本增加,记忆体S可以仅安装在一个芯片220上,并且记忆体S可以采用可供许多芯片C1-C4共享的结构。在第二实施例中,需要单独的记忆体共享终端261。此外,其中的芯片从记忆体S通过至少一个芯片提取与输入神经元相关的第一阶段数据的相应部分。然后,芯片通过广播通道210将第一阶段数据的相应部分顺序地传送到其他芯片。
在某些实施例中,本文描述的一个或多个处理步骤可以由执行记录在非暂时性计算机可读介质上的程序代码的一个或多个处理器(例如,计算机处理器)来执行。例如,如图1所示,在多芯片系统中实施神经网络应用的过程。如图2和图3所示,可以具有由一个或多个处理器执行的程序代码执行的一个或多个步骤,所述程序代码作为程式指令存储在计算机可读取存储介质中(例如,非暂时性计算机可读介质)。
请参照图6,其显示本揭示的一优选实施例的示例性计算机系统30的方块图。示例性计算机系统30可以用于实现这里描述的一个或多个实施例。在一些实施例中,计算机系统30可由用户操作以实现这里描述的一个或多个实施例,例如图2和图3所示的在多芯片系统中实现神经网络应用的过程。在图6的实施例中,计算机系统30包括处理器310、存储介质320、和各种外围设备330。处理器310耦合到存储介质320和外围设备330。处理器310被配置为执行程序代码,包括用于实现神经网络应用的指令,其可以是软件。举例来说,如图2所示,如果第一层L1是神经网络1的输入层而第二层L2是输出层,则由处理器310执行的程序代码包括:程序代码A,设置神经网络1的多个输入神经元2和多个输出神经元3,其中每个输出神经元3通过多个突触3连接到所述多个输入神经元2,用于根据多个权重值(例如W00等)来加权来自所述多个输入神经元2的多个输出;程序代码B,等待对应所述多个输入神经元2的第一阶段数据A0-AC通过一通道110;程序代码C,计算相应的权重值与部分的所述第一阶段数据A0-AC;程序代码D,同时计算对应于所述多个输出神经元3的第二阶段数据N0-Nf;程序代码E,确定是否计算完所有的所述多个权重值,如果是,则进入程序代码F,如果不是,则返回程序代码B;程序代码F,将所述第二阶段数据N0-Nf保持在一记忆体上;程序代码G,为所述多个输出神经元3设置所述第二阶段数据N0-Nf;以及程序代码H,确定是否所有已分配的所述多个输出神经元3都已完成计算,如果是,则切换到下一层应用,如果不是,则调用一新的通道任务并返回到程序代码A。
此外,当计算机系统30执行新的通道任务时,处理器310执行的程序代码还包括:程序代码I,从所述记忆体加载所述第一阶段数据A0-AC;程序代码J,通过所述通道110播送所述第一阶段数据A0-AC;程序代码K,确定所述第一阶段数据A0-AC是否完全播送,如果是,则进入程序代码L,如果不是,则返回程序代码J;以及程序代码L,确定是否计算完所有的所述第一阶段数据A0-AC,如果是,则所述新的通道任务结束,如果否,则回到程序代码I。
此外,当计算机系统30切换以执行下一层应用时,由处理器310执行的程序代码包括:程序代码M,设置所述记忆体的输入点位作为输出点位;以及N,设置所述记忆体的所述输出点位作为所述输入点位。具体而言,如图2所示,在神经网络1的下一层应用中,存储为输出数据的第二阶段数据N0-Nf现在用于下一层,并且第二阶段数据N0-Nf随后用作的输入特征值。这样,存储在其记忆体S1-SN中的第二阶段数据N0-Nf被切换为神经网络1之后续的下一层的输入特征值。此时,先前的多个输入特征值A0-AC从其记忆体S1-SN中被擦除。例如,如图3所示,第一阶段数据的第一部分A0-A2从第一记忆体S1的第一区Z1擦除,第一阶段数据的第二部分A3-A5从第二记忆体S2的第三区Z3擦除,并且将第一记忆体S1的第二区Z2和第二记忆体S2的第四区Z4转换成输入数据存储区域,用于存储相应的第二阶段数据N0-Nf,以及第一记忆体S1的第一区Z1和第二记忆体S2的第三区Z3被转换成输出数据存储区域,用于存储相应的第三阶段数据B0-BC。
在一些实施例中,计算机系统30可以包括一个以上的处理器。此外,处理器310可以包括一个或多个处理器或一个或多个处理器核心。处理器310可以以任何期望的方式耦合到存储介质320和外围设备330,例如,在一些实施例中,处理器310可以通过各种互相连接的方式耦合到存储介质320和/或外围设备330。可选地或另外地,可以使用一个或多个桥接芯片来耦合处理器310、存储介质320、和外围设备330。存储介质320可以包括任何类型的记忆体系统。例如,存储介质320可以包括DRAM,更具体地是双数据率(DDR)SDRAM、RDRAM等。存储介质320的接口可以包括记忆体控制器,和/或处理器310可以包括记忆体控制器。存储介质320可以存储在处理器310使用期间由处理器310执行的程序代码、和由处理器在使用期间操作的数据等。外围设备330可以是任何种类的硬件设备,其设置在计算机系统30中或耦合到其上。
存储介质320可以包括代表包括在集成电路设计中的多芯片系统10(图3中描绘)的一个或多个程序代码以及代表在多芯片系统(如图2和图3所示)中实施神经网络应用的过程的一个或多个代码序列。每个代码序列可以包括一个或多个指令,当由计算机系统30中的处理器310执行时,实现针对相应代码序列描述的操作。一般而言,计算机可访问的存储介质可以包括在使用期间计算机系统30可访问的任何存储介质320,以向计算机系统30提供指令和/或数据。存储介质320可以物理地包括在计算机系统30内以向存储介质320提供指令/数据。可选地,存储介质320可以连接到计算机系统30。例如,存储介质320可以通过网络或无线链路(例如网络连接的存储器)连接到计算机系统30。存储介质320可以通过诸如通用串行总线(USB)的外围接口连接。通常,计算机可访问的存储介质可以以非暂时性方式存储数据,其中在所述上下文中的非暂时性可以指的是不在信号上发送指令/数据。例如,非暂时性存储器可以是易失性的(并且可以响应于断电而丢失所存储的指令/数据)或非易失性的。
综上所述,在本揭示中,多芯片系统能够并行运行。为了提高机器学习加速芯片的性能,本揭示提供了一种用于多芯片系统的广播通道,它是一种基于具有所述功能的形式的市场需求的实现的结构设计理念。为了实现这一点,在本揭示中,每个芯片的输入特征值被部分地传输和共享,并且可以通过在其他芯片中同时使用它来计算群集,计算结果为最终输出神经元数值,并再次作为下一层的输入数据。这使我们能够利用多芯片系统实现高性能、低成本、以及满足市场需求。
以上仅是本揭示的优选实施方式,应当指出,对于所属领域技术人员,在不脱离本揭示原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本揭示的保护范围。
Claims (15)
1.一种适用于多芯片系统的数据处理方法,用于实现神经网络应用,其特征在于,所述多芯片系统包括:一通道、一第一芯片、和与所述通道连接的一第二芯片,其中所述神经网络应用包括一第一阶段数据、一第二阶段数据、一第三阶段数据、和多个权重值,其中所述数据处理方法包括:
分配所述第一芯片来处理所述第一阶段数据的一第一部分、所述第二阶段数据的一第一部分、以及所述第三阶段数据的一第一部分,以及并分配所述第二芯片来处理所述第一阶段数据的一第二部分、所述第二阶段数据的一第二部分、以及所述第三阶段数据的一第二部分;
所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第一部分;
所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第二部分;
所述第一芯片获取所述第一阶段数据的所述第一部分;
所述第一芯片将所述第一阶段数据的所述第一部分通过所述通道传送到所述第二芯片;
所述第二芯片接收所述第一阶段数据的所述第一部分;
所述第二芯片获取所述第一阶段数据的所述第二部分;
所述第二芯片将所述第一阶段数据的所述第二部分通过所述通道传送到所述第一芯片;
所述第一芯片接收所述第一阶段数据的所述第二部分;
所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第一部分以获得一第一结果,其中所述第一结果是所述第二阶段数据的其中之一;以及
所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第二部分以获得一第二结果,其中所述第二结果是所述第二阶段数据的其中之一。
2.如权利要求1所述的数据处理方法,其特征在于,在获得所述第一结果和所述第二结果之后,所述数据处理方法还包括:
所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第三部分;
所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第四部分;
所述第一芯片获取所述第一阶段数据的所述第一部分;
所述第一芯片将所述第一阶段数据的所述第一部分通过所述通道传送到所述第二芯片;
所述第二芯片接收所述第一阶段数据的所述第一部分;
所述第二芯片获取所述第一阶段数据的所述第二部分;
所述第二芯片将第一阶段数据的所述第二部分通过所述通道传送到所述第一芯片;
所述第一芯片接收所述第一阶段数据的所述第二部分;
所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第三部分以获得一第三结果,其中所述第三结果是所述第二阶段数据的其中之一;以及
所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第四部分以获得一第四结果,其中所述第四结果是所述第二阶段数据的其中之一。
3.如权利要求2所述的数据处理方法,其特征在于,在获得所述第一结果、所述第二结果、所述第三结果、和所述第四结果之后,所述数据处理方法还包括:依序地分配所述第一结果、所述第三结果、所述第二结果、和所述第四结果作为所述第二阶段数据的输入数据。
4.如权利要求2所述的数据处理方法,其特征在于,所述多芯片系统还包括一第一记忆体和一第二记忆体,并且所述第一记忆体与所述第一芯片相连,以及所述第二记忆体与所述第二芯片相连;
其中所述第一记忆体包括一第一区和一第二区,以及所述第二记忆体包括一第三区和一第四区;以及
其中所述第一阶段数据的所述第一部分存储在所述第一记忆体的所述第一区中,以及所述第二阶段数据的所述第一部分存储在所述第一记忆体的所述第二区,并且所述第一阶段数据的所述第二部分存储在所述第二记忆体的所述第三区,以及所述第二阶段数据的所述第二部分存储在所述第二记忆体的所述第四区。
5.如权利要求4所述的数据处理方法,其特征在于,所述数据处理方法还包括:
从所述第一记忆体中擦除所述第一阶段数据的所述第一部分,并从所述第二记忆体中擦除所述第一阶段数据的所述第二部分;以及
将所述第一记忆体的所述第二区和所述第二记忆体的所述第四区转换成输入数据存储区域。
6.如权利要求1所述的数据处理方法,其特征在于,所述多芯片系统还包括与所述第一芯片和所述第二芯片连接的一记忆体和配置成连接所述第一芯片和所述第二芯片的多条传输线;
其中所述记忆体包括一第一区和一第二区;以及
其中所述第一阶段数据存储在所述记忆体的所述第一区,以及所述第二阶段数据存储在所述记忆体的所述第二区。
7.一种用于实现神经网络应用的多芯片系统,其特征在于,所述神经网络应用包括一第一阶段数据、一第二阶段数据、一第三阶段数据、和多个权重值,所述多芯片系统包括:
一数据通道;
一第一芯片和一第二芯片,其中所述第一芯片和所述第二芯片连接所述数据通道;
一存储器;以及
一处理器,其中所述多芯片系统的多个计算机代码存储在所述存储器中并且被配置为由所述处理器执行以执行一数据处理方法,所述数据处理方法包括:
分配所述第一芯片来处理所述第一阶段数据的一第一部分、所述第二阶段数据的一第一部分、以及所述第三阶段数据的一第一部分,以及并分配所述第二芯片来处理所述第一阶段数据的一第二部分、所述第二阶段数据的一第二部分、以及所述第三阶段数据的一第二部分;
所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第一部分;
所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第二部分;
所述第一芯片获取所述第一阶段数据的所述第一部分;
所述第一芯片将所述第一阶段数据的所述第一部分通过所述数据通道传送到所述第二芯片;
所述第二芯片接收所述第一阶段数据的所述第一部分;
所述第二芯片获取所述第一阶段数据的所述第二部分;
所述第二芯片将所述第一阶段数据的所述第二部分通过所述数据通道传送到所述第一芯片;
所述第一芯片接收所述第一阶段数据的所述第二部分;
所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第一部分以获得一第一结果,其中所述第一结果是所述第二阶段数据的其中之一;以及
所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第二部分以获得一第二结果,其中所述第二结果是所述第二阶段数据的其中之一。
8.如权利要求7所述的多芯片系统,其特征在于,所述数据处理方法还包括:
所述第一芯片获取对应所述第二阶段数据的所述多个权重值的一第三部分;
所述第二芯片获取对应所述第二阶段数据的所述多个权重值的一第四部分;
所述第一芯片获取所述第一阶段数据的所述第一部分;
所述第一芯片将所述第一阶段数据的所述第一部分通过所述数据通道传送到所述第二芯片;
所述第二芯片接收所述第一阶段数据的所述第一部分;
所述第二芯片获取所述第一阶段数据的所述第二部分;
所述第二芯片将第一阶段数据的所述第二部分通过所述数据通道传送到所述第一芯片;
所述第一芯片接收所述第一阶段数据的所述第二部分;
所述第一芯片计算所述第一阶段数据与所述多个权重值的所述第三部分以获得一第三结果,其中所述第三结果是所述第二阶段数据的其中之一;以及
所述第二芯片计算所述第一阶段数据与所述多个权重值的所述第四部分以获得一第四结果,其中所述第四结果是所述第二阶段数据的其中之一。
9.如权利要求8所述的多芯片系统,其特征在于,所述数据处理方法还包括:依序地分配所述第一结果、所述第三结果、所述第二结果、和所述第四结果作为所述第二阶段数据的输入数据。
10.如权利要求7所述的多芯片系统,其特征在于,所述多芯片系统还包括一第一记忆体和一第二记忆体,并且所述第一记忆体与所述第一芯片相连,以及所述第二记忆体与所述第二芯片相连;
其中所述第一记忆体包括一第一区和一第二区,以及所述第二记忆体包括一第三区和一第四区;以及
其中所述第一阶段数据的所述第一部分存储在所述第一记忆体的所述第一区中,以及所述第二阶段数据的所述第一部分存储在所述第一记忆体的所述第二区,并且所述第一阶段数据的所述第二部分存储在所述第二记忆体的所述第三区,以及所述第二阶段数据的所述第二部分存储在所述第二记忆体的所述第四区。
11.如权利要求10所述的多芯片系统,其特征在于,所述数据处理方法还包括:
从所述第一记忆体中擦除所述第一阶段数据的所述第一部分,并从所述第二记忆体中擦除所述第一阶段数据的所述第二部分;以及
将所述第一记忆体的所述第二区和所述第二记忆体的所述第四区转换成输入数据存储区域。
12.如权利要求7所述的多芯片系统,其特征在于,所述多芯片系统还包括与所述第一芯片和所述第二芯片连接的一记忆体和配置成连接所述第一芯片和所述第二芯片的多条传输线;
其中所述记忆体包括一第一区和一第二区;
其中所述第一阶段数据存储在所述记忆体的所述第一区,以及所述第二阶段数据存储在所述记忆体的所述第二区;以及
其中每一所述第一芯片和所述第二芯片通过所述多条传输线中的至少一条从所述记忆体获得所述第一阶段数据。
13.一种用于在多芯片系统中实现神经网络应用的非暂时性计算机可读介质,所述非暂时性计算机可读介质内记录有多个程序代码,其特征在于,所述多个程序代码由一处理器执行并且包括:
A,设置所述神经网络应用的多个输入神经元和多个输出神经元,其中每个所述多个输出神经元通过多个突触连接到所述多个输入神经元,用于根据多个权重值来加权来自所述多个输入神经元的多个输出;
B,等待对应所述多个输入神经元的第一阶段数据通过一通道;
C,计算相应的权重值与部分的所述第一阶段数据;
D,同时计算对应于所述多个输出神经元的第二阶段数据;
E,确定是否计算完所有的所述多个权重值,如果是,则进入F,如果不是,则返回B;
F,将所述第二阶段数据保持在一记忆体上;
G,为所述多个输出神经元设置所述第二阶段数据;以及
H,确定是否所有已分配的所述多个输出神经元都已完成计算,如果是,则切换到下一层应用,如果不是,则调用一新的通道任务并返回到A。
14.如权利要求13所述的用于在所述多芯片系统中实现所述神经网络应用的所述非暂时性计算机可读介质,其特征在于,在执行所述新的通道任务中所述处理器执行的所述多个程序代码还包含:
I,从所述记忆体加载所述第一阶段数据;
J,通过所述通道播送所述第一阶段数据;
K,确定所述第一阶段数据是否完全播送,如果是,则进入L,如果不是,则返回J;以及
L,确定是否计算完所有的所述第一阶段数据,如果是,则所述新的通道任务结束,如果否,则回到I。
15.如权利要求13所述的用于在所述多芯片系统中实现所述神经网络应用的所述非暂时性计算机可读介质,其特征在于,在执行所述切换到下一层应用中所述处理器执行的所述多个程序代码还包括:
M,设置所述记忆体的输入点位作为输出点位;以及
N,设置所述记忆体的所述输出点位作为所述输入点位。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862756095P | 2018-11-06 | 2018-11-06 | |
US62/756095 | 2018-11-06 | ||
PCT/CN2019/082128 WO2020093654A1 (en) | 2018-11-06 | 2019-04-10 | Multichip system and data processing method adapted to the same for implementing neural network application |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112970037A true CN112970037A (zh) | 2021-06-15 |
CN112970037B CN112970037B (zh) | 2024-02-02 |
Family
ID=70610684
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980073119.2A Active CN112970037B (zh) | 2018-11-06 | 2019-04-10 | 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质 |
CN201980073061.1A Active CN112970036B (zh) | 2018-11-06 | 2019-04-30 | 用于实施神经网络应用的卷积块阵列及其使用方法 |
CN201980073120.5A Active CN112955878B (zh) | 2018-11-06 | 2019-05-16 | 实施神经网络的激活逻辑的装置及其方法 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980073061.1A Active CN112970036B (zh) | 2018-11-06 | 2019-04-30 | 用于实施神经网络应用的卷积块阵列及其使用方法 |
CN201980073120.5A Active CN112955878B (zh) | 2018-11-06 | 2019-05-16 | 实施神经网络的激活逻辑的装置及其方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US20220004856A1 (zh) |
CN (3) | CN112970037B (zh) |
TW (3) | TWI766203B (zh) |
WO (3) | WO2020093654A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113902111A (zh) * | 2021-12-09 | 2022-01-07 | 绍兴埃瓦科技有限公司 | 多芯片互连系统及神经网络加速处理方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210130470A (ko) * | 2020-04-22 | 2021-11-01 | 에스케이하이닉스 주식회사 | 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201651A (zh) * | 2016-06-27 | 2016-12-07 | 鄞州浙江清华长三角研究院创新中心 | 神经形态芯片的模拟器 |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
WO2017185248A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN107992942A (zh) * | 2016-10-26 | 2018-05-04 | 上海磁宇信息科技有限公司 | 卷积神经网络芯片以及卷积神经网络芯片操作方法 |
CN108334942A (zh) * | 2017-12-22 | 2018-07-27 | 清华大学 | 神经网络的数据处理方法、装置、芯片和存储介质 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752417B2 (en) * | 2006-06-05 | 2010-07-06 | Oracle America, Inc. | Dynamic selection of memory virtualization techniques |
CN101256536B (zh) * | 2007-03-01 | 2010-05-26 | 创惟科技股份有限公司 | 闪存地址转换层系统 |
US7685355B2 (en) * | 2007-05-07 | 2010-03-23 | Microsoft Corporation | Hardware memory management unit simulation using concurrent lookups for address translation data |
CN101661438B (zh) * | 2008-08-29 | 2013-08-28 | 鸿富锦精密工业(深圳)有限公司 | 电子装置及中央处理器寻址空间扩展方法 |
US8386747B2 (en) * | 2009-06-11 | 2013-02-26 | Freescale Semiconductor, Inc. | Processor and method for dynamic and selective alteration of address translation |
US8635430B2 (en) * | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US20160019161A1 (en) * | 2013-03-12 | 2016-01-21 | Hewlett-Packard Development Company, L.P. | Programmable address mapping and memory access operations |
CN103985083B (zh) * | 2014-05-21 | 2017-02-01 | 西安交通大学 | 一种可重构的一维卷积处理器 |
CN104333435B (zh) * | 2014-09-30 | 2017-11-07 | 扬智科技股份有限公司 | 迭代解映射译码装置 |
CN105844330B (zh) * | 2016-03-22 | 2019-06-28 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN106056211B (zh) * | 2016-05-25 | 2018-11-23 | 清华大学 | 神经元计算单元、神经元计算模块及人工神经网络计算核 |
GB2550859B (en) * | 2016-05-26 | 2019-10-16 | Advanced Risc Mach Ltd | Address translation within a virtualised system |
US11003985B2 (en) * | 2016-11-07 | 2021-05-11 | Electronics And Telecommunications Research Institute | Convolutional neural network system and operation method thereof |
US10394929B2 (en) * | 2016-12-20 | 2019-08-27 | Mediatek, Inc. | Adaptive execution engine for convolution computing systems |
US11205120B2 (en) * | 2016-12-22 | 2021-12-21 | Samsung Electronics Co., Ltd | System and method for training deep learning classification networks |
CN106845635A (zh) * | 2017-01-24 | 2017-06-13 | 东南大学 | 基于级联形式的cnn卷积核硬件设计方法 |
CN106779060B (zh) * | 2017-02-09 | 2019-03-08 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
TWI630544B (zh) * | 2017-02-10 | 2018-07-21 | 耐能股份有限公司 | 卷積神經網路的運算裝置及方法 |
CN107633297B (zh) * | 2017-03-10 | 2021-04-06 | 南京风兴科技有限公司 | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 |
US10049323B1 (en) * | 2017-10-13 | 2018-08-14 | StradVision, Inc. | Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same |
CN107844826B (zh) * | 2017-10-30 | 2020-07-31 | 中国科学院计算技术研究所 | 神经网络处理单元及包含该处理单元的处理系统 |
CN107862374B (zh) * | 2017-10-30 | 2020-07-31 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
GB2568102B (en) * | 2017-11-06 | 2021-04-14 | Imagination Tech Ltd | Exploiting sparsity in a neural network |
CN108171317B (zh) * | 2017-11-27 | 2020-08-04 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
CN111061655B (zh) * | 2017-12-28 | 2022-06-17 | 贵阳忆芯科技有限公司 | 存储设备的地址转换方法与设备 |
CN108229671B (zh) * | 2018-01-16 | 2022-03-04 | 华南理工大学 | 一种降低加速器外部数据存储带宽需求的系统和方法 |
CN108647045B (zh) * | 2018-03-20 | 2021-10-01 | 科大讯飞股份有限公司 | 激活函数的实现方法及装置、存储介质、电子设备 |
-
2019
- 2019-04-10 US US17/290,761 patent/US20220004856A1/en active Pending
- 2019-04-10 WO PCT/CN2019/082128 patent/WO2020093654A1/en active Application Filing
- 2019-04-10 CN CN201980073119.2A patent/CN112970037B/zh active Active
- 2019-04-30 US US17/291,309 patent/US20220027714A1/en active Pending
- 2019-04-30 WO PCT/CN2019/085197 patent/WO2020093669A1/en active Application Filing
- 2019-04-30 CN CN201980073061.1A patent/CN112970036B/zh active Active
- 2019-05-16 CN CN201980073120.5A patent/CN112955878B/zh active Active
- 2019-05-16 WO PCT/CN2019/087299 patent/WO2020093676A1/en active Application Filing
- 2019-05-16 US US17/291,315 patent/US20220004850A1/en active Pending
- 2019-11-06 TW TW108140288A patent/TWI766203B/zh active
- 2019-11-06 TW TW108140289A patent/TWI715281B/zh active
- 2019-11-06 TW TW108140287A patent/TWI726476B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017185248A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 用于执行人工神经网络自学习运算的装置和方法 |
CN106201651A (zh) * | 2016-06-27 | 2016-12-07 | 鄞州浙江清华长三角研究院创新中心 | 神经形态芯片的模拟器 |
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
CN107992942A (zh) * | 2016-10-26 | 2018-05-04 | 上海磁宇信息科技有限公司 | 卷积神经网络芯片以及卷积神经网络芯片操作方法 |
CN108334942A (zh) * | 2017-12-22 | 2018-07-27 | 清华大学 | 神经网络的数据处理方法、装置、芯片和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113902111A (zh) * | 2021-12-09 | 2022-01-07 | 绍兴埃瓦科技有限公司 | 多芯片互连系统及神经网络加速处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112970036B (zh) | 2024-02-23 |
US20220004856A1 (en) | 2022-01-06 |
WO2020093676A1 (en) | 2020-05-14 |
US20220027714A1 (en) | 2022-01-27 |
CN112955878A (zh) | 2021-06-11 |
CN112970037B (zh) | 2024-02-02 |
TWI726476B (zh) | 2021-05-01 |
WO2020093654A1 (en) | 2020-05-14 |
TWI766203B (zh) | 2022-06-01 |
CN112970036A (zh) | 2021-06-15 |
TW202038142A (zh) | 2020-10-16 |
TW202038143A (zh) | 2020-10-16 |
TWI715281B (zh) | 2021-01-01 |
CN112955878B (zh) | 2023-10-27 |
WO2020093669A1 (en) | 2020-05-14 |
US20220004850A1 (en) | 2022-01-06 |
TW202018597A (zh) | 2020-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698730B2 (en) | Neural network processor | |
US11080049B2 (en) | Apparatus and methods for matrix multiplication | |
US10949380B2 (en) | MxN systolic array and processing system that inputs weights to rows or columns based on mode to increase utilization of processing elements | |
CN107315571B (zh) | 一种用于执行全连接层神经网络正向运算的装置和方法 | |
CN109284815B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
JP7053775B2 (ja) | ネットワークオンチップによるデータ処理方法及び装置 | |
US20180039884A1 (en) | Systems, methods and devices for neural network communications | |
WO2019060290A1 (en) | DIRECT ACCESS MATERIAL ACCELERATION IN A NEURONAL NETWORK | |
EP3844610B1 (en) | Method and system for performing parallel computation | |
CN110866610A (zh) | 一种深度学习模型分布式运算的方法及装置 | |
CN112970037B (zh) | 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质 | |
US20210326189A1 (en) | Synchronization of processing elements that execute statically scheduled instructions in a machine learning accelerator | |
CN110865950B (zh) | 数据预处理方法、装置、计算机设备和存储介质 | |
CN111930681B (zh) | 一种计算装置及相关产品 | |
CN116306840A (zh) | 神经网络运算方法、装置、芯片、电子设备和存储介质 | |
CN109685203B (zh) | 数据处理方法、装置、计算机系统及存储介质 | |
JP6906622B2 (ja) | 演算回路および演算方法 | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
KR102373802B1 (ko) | 신경망 연산 효율 증대를 위한 신경망 가속기 및 그의 동작 방법 | |
CN112099850A (zh) | 一种多核Hourglass网络加速方法 | |
CN110865792B (zh) | 数据预处理方法、装置、计算机设备和存储介质 | |
CN118296084B (zh) | 数据处理设备、指令同步方法、电子设备和存储介质 | |
US20220043696A1 (en) | Distributed inferencing using deep learning accelerators with integrated random access memory | |
CN115964085A (zh) | 运算单元和矩阵转置及运算融合执行方法 | |
CN118467134A (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 |