一种应用细胞阵列计算系统实现神经网络计算的方法与流程

文档序号:13707808阅读:141来源:国知局
技术领域本发明涉及计算机及计算机应用技术领域,特别涉及一种应用细胞阵列计算系统实现神经网络计算的方法。

背景技术:
通常来说,一台计算机主要包括三个核心部分:中央处理器(CPU,CentralProcessingUnit)、内存和存储。经过一些世界顶级公司的不懈努力,CPU已经演变成极度复杂的半导体芯片。顶级的CPU内核内部的MOS管数目可以超过一亿个。目前的产业趋势是受制于功耗,CPU的运行频率已经很难再提高。已经极度复杂的现代CPU,运行效率同样很难再提高。新的CPU产品,越来越多地朝多核方向演进。在内存方面,目前居于统治地位的是动态随机存取存储器(DRAM,DynamicRandomAccessMemory)技术。DRAM可以快速随机读写,但却不能在断电的情况下保持内容。实际上,即使在通电的情况下,它也会由于内部用于储存信息的电容器的漏电而丢失信息,必须周期性地自刷新。在存储方面,NAND闪存技术正在逐步取代传统硬盘。闪存所依赖的浮置栅极(floatinggate)技术,虽然能够在断电的情况下保持内容,但写入(将‘1’改写为‘0’)的速度很慢,擦除(将‘0’改写为‘1’)的速度更慢,无法像DRAM那样用于对计算的直接支持。它被制作成块设备(blockdevice),必须整块一起擦除,一个块(block)包含很多页(page),擦除后每页可以进行写入操作。NAND的另外一个问题是具有有限的寿命。DRAM和NAND闪存,以及CPU的逻辑电路,虽然都是基于CMOS半导体工艺生产的,但这三者的工艺彼此并不兼容。于是,计算机的三个核心部分无法在一个芯片上共存,这深刻地影响了现代计算机的架构。现有技术中的计算机架构如图1所示,图1中示出多个CPU内核,分别为CPU1、CPU2、CPU3、……、CPUn,每个CPU内核一般具有相应的一级缓存(L1Cache),根据需要还可以进一步为每个CPU内核配备相应的二级缓存(L2Cache)、三级缓存(L3Cache)。DRAM与各个CPU内核之间通过双倍速率(DDR,DoubleDataRate)接口进行通信,硬盘(HD,HardDisk)或固态硬盘(SSD,SolidStateDrives)与各个CPU内核之间则通过外围设备接口进行通信。一方面,CPU在向多核的方向发展,另一方面内存和存储都在另外的芯片里。多核CPU吞吐信息量成比例增加,与内存、存储的通信就越来越成为系统性能的瓶颈。为了缓解通信瓶颈,CPU不得不采用越来越大的多级缓存。缓存是把内存中的内容复制,通常是用成本比DRAM高得多但速度更快的静态随机存取存储器(SRAM,StaticRandomAccessMemory)设计的。这样的架构,费效比非常的差。半导体芯片的成本由其硅片的面积决定,而传统计算机架构带来的性能提升与其硅片面积的增加远远不成比例。神经网络(NeuralNetworks)是计算机学习中常用的计算方法,是仿照人脑的工作原理,一般使用感知器(Perceptron)或者神经元(Neuron)这样的概念。NeuralNetworks的学习训练过程是一个海量计算的过程,一个神经网络实际上是一个拥有大量参数(可能有数万个)的函数,需要大量的场景,每个场景有输入数据和正确答案,用来调节这些大量的参数以达到学习的目的。由于神经网络计算中涉及的计算量极大,而现有技术中的计算机架构因CPU与内存、存储之间存在的通信瓶颈则会严重影响计算机整体性能,从而不利于神经网络计算的高效实现。

技术实现要素:
本发明要解决的问题是现有技术中的计算机架构因CPU与内存、存储之间存在的通信瓶颈而影响计算机整体性能,从而不利于神经网络计算的高效实现。为解决上述问题,本发明技术方案提供一种应用细胞阵列计算系统实现神经网络计算的方法,所述细胞阵列计算系统包括:主控CPU、细胞阵列和细胞阵列总线;所述细胞阵列是由一个以上兼具计算和存储功能的细胞组成的二维阵列,其中每一个细胞包括微处理器(MPU,MicroProcessingUnit)和非易失(NV,NotVolatile)随机存储器;所述非易失随机存储器用于所述微处理器计算时所涉及数据的随机存取,还用于存储软件的指令代码和需要永久保存的数据;每一个细胞储存各自在所述细胞阵列中的位置作为身份识别号(ID,identification)以供细胞中的软件或硬件读取;所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行通信;所述细胞阵列中的相邻细胞之间有通信接口,能相互发送数据;所述方法包括:在所述细胞阵列内每个参与神经网络计算的细胞中存储一个或一个以上神经元函数的代码;所述主控CPU选择一个或一个以上细胞执行各细胞所存储的神经元函数的代码,并将执行结果向一个或一个以上的目标细胞输出;任一参与神经网络计算的细胞接收到来自其他细胞所输出的对于神经元函数的代码的执行结果,将其作为本细胞的输入数据,基于所有来自其他细胞的输入数据执行本细胞所存储的神经元函数的代码,并将执行结果输出到需要该执行结果的神经元函数所在的细胞,或者存入预设地址,或者向所述主控CPU输出。可选的,所述细胞阵列中的任意两个细胞之间能进行通信,参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞,所述起点细胞为向所述终点细胞发出数据的细胞,所述终点细胞为最终接收所述起点细胞所发数据的细胞,所述中转细胞为沿细胞间通信路径依次相邻且通过所述通信接口中转所述起点细胞所发数据的细胞,所述细胞间通信路径是由所述起点细胞、中转细胞和终点细胞所构成的数据收发路径;所述方法还包括:任意两个细胞之间是通过所述细胞间通信传输对于所述神经元函数的代码的执行结果。可选的,所述细胞阵列中的任一细胞还能作为所述起点细胞向目标区域内的所有细胞进行群发通信,参与所述群发通信且位于目标区域内的细胞作为所述起点细胞、或作为所述终点细胞、或同时作为所述中转细胞和终点细胞,参与所述群发通信且位于目标区域外的细胞作为所述起点细胞或中转细胞;所述方法还包括:若神经网络分成不同层,则使用所述群发通信实现层与层之间的数据传输,同一层中参与神经网络计算的细胞位于同一目标区域内。可选的,所述细胞阵列中还设有至少一个专职输出细胞,所述专职输出细胞作为所述终点细胞接收并存储其他细胞给所述主控CPU的输出数据,并以中断信号通知所述主控CPU读取所述输出数据;将所述执行结果向所述主控CPU输出包括:通过所述细胞间通信将所述执行结果发送至所述专职输出细胞,以供所述主控CPU读取。可选的,所述非易失随机存储器为磁性随机存储器(MRAM,MagneticRandomAccessMemory)。可选的,所述主控CPU选择所述细胞阵列中全部或目标区域内的细胞作为参与神经网络计算的细胞,将相同的神经元函数的代码广播至所选择的每一个细胞的同一段相对地址中,并广播指令使所选择的一个或一个以上细胞的微处理器从所述相对地址开始执行所述神经元函数的代码。与现有技术相比,本发明的技术方案至少具有以下优点:目前的神经网络算法中,学习训练的过程通常是一个海量计算的问题;一个网络的学习训练时间非常长;在细胞阵列中的神经网络,可以实现数千个神经元的平行计算,极大地加快的神经网络的学习过程,提高了学习能力。通过将一个以上兼具独立计算和存储功能的单元(称为“细胞”)组成二维阵列(称为“细胞阵列”),其中每一个细胞包括微处理器和非易失随机存储器,所述非易失随机存储器既能支持所述微处理器进行计算时所涉及数据的随机存取,也能支持存储软件的指令代码和需要永久保存的数据,使内存、存储、计算三个功能集成到每个细胞中,并使各细胞之间形成密集的通讯网络,一方面,主控CPU能通过细胞阵列总线与细胞阵列中的每一个细胞进行通信,另一方面,细胞阵列中的相邻细胞之间也能相互发送数据,由此能通过数据群发和内部网络,克服现有计算机架构因CPU与内存、存储之间存在的通信瓶颈,从而提升计算系统的整体性能,并能使费效比较佳;在将上述具有细胞阵列的计算系统应用于实现神经网络计算的情况下,大量细胞的平行计算极大地加快了的运算速度,特别使得学习训练的速度极大提高,而且细胞中非易失随机存储器所具有的非易失性,使得训练成功的芯片可以直接复制作为解决特定问题的产品销售。通过细胞阵列中相邻细胞之间的通信接口,实现相邻细胞之间对于数据的多次中转,使细胞阵列中的任意两个细胞之间不依靠主控CPU便能进行通信,依靠细胞阵列内部网络通信巨大的带宽提高了细胞间通信的效率,也降低了主控CPU的处理负担,从而能进一步提升计算系统的整体性能,更有利于神经网络计算的高效实现。通过将细胞间的点对点通信功能扩展到区域群发,可以支持更高的平行度,获得高得多的总带宽,从而进一步提升计算系统的整体性能,非常有助于提高神经网络计算的速度。通过在细胞阵列中设置专职输出细胞,以所述专职输出细胞作为所述终点细胞接收并存储其他细胞给主控CPU的输出数据,并以中断信号的方式通知所述主控CPU读取所述输出数据,如此能够在只有少数几个细胞需要向主控CPU输出数据时提高主控CPU读取输出数据的效率,从而能更高效地将神经网络计算的最终结果输出给主控CPU。本发明技术方案中提供的细胞阵列计算系统解决了CPU和内存之间的通信瓶颈问题。这样,在相同的硅片面积下,大量微型MPU的处理能力,在很多问题上远超少数几个顶级CPU的处理能力,而耗电则低得多。细胞阵列使用非易失存储器存储学习训练的结果(各个权重数据),一旦完成训练。整个芯片产品可以简单复制进行销售。本发明技术方案中提供的细胞阵列计算系统使得计算机的架构更接近人脑,为未来的人工智能算法提供了强有力的引擎。附图说明图1是现有技术中计算机架构的示意图;图2是本发明实施例提供的细胞阵列计算系统的一种结构示意图;图3是本发明实施例的一种相邻细胞之间通信方式的示意图;图4是本发明实施例的另一种相邻细胞之间通信方式的示意图;图5是本发明实施例的细胞的结构示意图;图6是本发明实施例的细胞阵列中进行细胞间通信的细胞的结构示意图;图7是本发明实施例的细胞阵列中细胞间通信的路径选择的示意图;图8是本发明实施例的专职输出细胞的实施过程示意图;图9是本发明实施例的细胞阵列中起点细胞在目标区域角上的细胞群发示意图;图10是本发明实施例的细胞阵列中起点细胞在目标区域边上的细胞群发示意图;图11是本发明实施例的细胞阵列中起点细胞在目标区域内部的细胞群发示意图;图12是本发明实施例的细胞阵列中起点细胞在目标区域外的细胞群发示意图;图13是本发明实施例提供的细胞阵列计算系统的另一种结构示意图;图14是本发明实施例提供的细胞阵列计算系统的又一种结构示意图;图15是本发明实施例提供的细胞阵列计算系统的再一种结构示意图;图16是神经网络中一个神经元的示意图;图17是神经网络计算的示意图。具体实施方式现有技术的计算机架构由于CPU与内存、存储之间存在通信瓶颈,从而影响计算机整体性能的提升,并使费效比较差。本申请发明人经过研究后考虑,若是把内存、存储、计算三个功能集成到一个芯片上来,形成相对简单但兼具独立计算和存储功能的单元,并使大量此类单元之间形成密集的通讯网络,以此实现数据广播/群发功能和能够大规模平行传输数据的内部网络,便能开发出一种与人脑存在相似之处的计算架构,这相当于把大量的微型计算机做在一个芯片上。为此,本发明技术方案提供一种与人脑结构相似的计算架构(本发明技术方案中将其称为“细胞阵列计算系统”),该计算架构由众多结构相对简单,兼具存储和计算功能,又有着密集网络连接的单元(本发明技术方案中将其称为“细胞”)组成。这种新计算架构将在大型计算、大数据处理、人工智能等领域中得到广泛的应用。为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细的说明。如图2所示,本发明实施例提供的细胞阵列计算系统包括:主控CPU、细胞阵列和细胞阵列总线;所述细胞阵列是所述细胞阵列计算系统中的主体,它是由一个以上兼具计算和存储功能的细胞组成的二维阵列,其中每一个细胞包括微处理器(MPU)和非易失随机存储器(图2中以MRAM为例);所述非易失随机存储器用于所述微处理器计算时所涉及数据的随机存取,还用于存储软件的指令代码和需要永久保存的数据;每一个细胞储存各自在所述细胞阵列中的位置作为ID以供细胞中的软件或硬件读取;所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行通信;所述细胞阵列中的相邻细胞之间有通信接口,能相互发送数据。需要说明的是,在本实施例中,所述非易失随机存储器是以MRAM为例进行说明。在其他实施例中,随着非易失随机存储技术的进一步发展与成熟,所述非易失随机存储器也可以采用另外几种有潜力的技术实现,例如:相变随机存储器(PCRAM,PhaseChangeRandomAccessMemory)、阻变式随机存储器(ResistiveRandomAccessMemory)、铁电随机存储器(FeRAM,FerroelectricRandomAccessMemory)、铁电动态随机存储器(FEDRAM,FerroelectricDynamicRandomAccessMemory)等等。MRAM是一种新的内存和存储技术,可以像SRAM/DRAM一样快速随机读写,并且比DRAM快;还可以像闪存一样在断电后永久保留数据,并且不像NAND闪存,MRAM可以不限次地擦写,使用寿命较长。此外,MRAM的经济性想当地好,单位容量占用的硅片面积比SRAM(通常作为CPU的缓存)有很大的优势,有望接近DRAM的水平。它的性能也相当好,读写时延接近最好的SRAM,功耗则在各种内存和存储技术最好。而且MRAM不像DRAM以及Flash那样与标准CMOS半导体工艺不兼容,MRAM可以和逻辑电路集成到一个芯片中。通过采用MRAM技术,就可以把内存、存储、计算三个功能集成到一个芯片上来,使所述细胞阵列计算系统的实现便能成为可能。本实施例中,所述微处理器具有通常CPU的功能,还可以根据具体的应用场景添加浮点计算处理器(FPU,FloatPointUnit)、图像处理器等单元,因此,所述微处理器中可以集成有浮点计算处理器和图像处理器中的至少一种。在实际实施时,所述主控CPU与所述细胞阵列和所述细胞阵列总线可以集成于一个芯片中,所述主控CPU也可以作为独立的芯片,通过标准的内存接口与由所述细胞阵列和所述细胞阵列总线组成的芯片进行通信。当所述主控CPU与所述细胞阵列之间采用标准的内存接口进行通信时,则主控CPU可以采用通用的CPU芯片实现,更易于所述细胞阵列计算系统的实施。本实施例中,每一个细胞储存各自在细胞阵列中的位置作为ID,所述位置可以采用平面直角坐标系中第一象限的坐标表示方式,若(x,y)表示某个细胞在细胞阵列中的位置,则(x,y)可以作为ID存储在该细胞中,细胞中的软件和硬件可以读取这个ID,在具体的操作中使用。本实施例中,所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行的通信包括以下情况:按地址读写所述细胞阵列中任一细胞的非易失随机存储器;将数据广播到所述细胞阵列中目标区域内每一个细胞的非易失随机存储器,并写入该目标区域内每一个细胞的非易失随机存储器中相同的相对地址;给所述细胞阵列中任一细胞的微处理器发送指令(包括开始、暂停)、发送数据或读取状态;给目标区域内所有细胞的微处理器广播指令。当然,在其他实施例中,所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行的通信也可以是上述情况中的一种或多种组合。需要说明的是,本发明实施例中的“目标区域”是指由所述主控CPU或所述细胞阵列中的任一细胞选择一个以上存在相邻关系的细胞所构成的区域,该区域内的细胞是主控CPU或细胞阵列中的任一细胞广播数据或指令的对象。本实施例中,所述目标区域具体以矩形区域(a≤x≤b,c≤y≤d,其中a、b分别是该矩形区域在平面直角坐标系中x轴方向的边界坐标,c、d分别是该矩形区域在平面直角坐标系中y轴方向的边界坐标)为例进行说明。在其他实施例中,所述目标区域也可以是其他形状构成的区域,例如菱形区域、三角形区域、六边形区域等等。此外,本发明实施例中“广播”的概念不同于“群发”的概念,前者可以是发一遍数据或指令使得所有的对象都能接收到,而后者则可以是分很多遍发给不同的对象。除了通过主控CPU对所述细胞阵列中任一细胞(包括细胞中的微处理器或非易失随机存储器)进行广播,在所述细胞阵列内,还有一个通信网络,该通信网络能够使得一个细胞可以在其MPU的控制下,向与它相邻的细胞发送数据。如图3所示,在一平面中,任一细胞可以与其上、下、左、右四个方向的相邻细胞进行通信。当然,相邻细胞之间通信方式的概念并不仅仅局限于“上、下、左、右四个方向”,在线路布局能够支持的情况下,也可以是“上、下、左、右、左上、右上、左下、右下八个方向”,如图4所示,任一细胞可以与其上、下、左、右、左上、右上、左下、右下八个方向的相邻细胞进行通信。如图5所示,在本实施例中,所述细胞阵列中的细胞具体还可以包括总线控制器和细胞内部总线,所述总线控制器与所述细胞阵列总线、微处理器以及细胞内部总线相连,所述总线控制器用于识别所述主控CPU与本细胞之间进行的通信,连接所述微处理器以传递所述主控CPU发送的指令或数据、状态读取,或者通过所述细胞内部总线连接所述非易失随机存储器进行数据的读写操作。本领域技术人员知晓,一个比较简单而性能很好的CPU,如ARMCotexM0,只有5万个左右的MOS管,即使适度增加FPU功能,也比顶级CPU的上亿个MOS管小得多,提升CPU性能带来的面积(成本)增加是不成比例的。把一个大CPU用许多小CPU替换,在总成本一样的情况下,总计算能力一定提高很多倍。然而传统计算机架构受制于通信瓶颈,使用大量CPU内核带来的实际性能提升非常有限。而本发明技术方案提供的细胞阵列计算系统通过数据广播/群发和内部网络,解决了通信瓶颈的问题,从而提升计算系统的整体性能,并能使费效比较佳,对此将在后续的应用实例中更清楚地看到这一点。初步的研究表明,如果使用类似于CortexM0的MPU,配合32KB的内存,组成一个细胞。使用40纳米的工艺,可以把3000个这样的细胞做在一个芯片上,这是非常强大的计算能力。进一步的研究表明,使用这种方法,可以在同样的硅片面积上超越当代顶级CPU的计算能力(一般用每秒浮点运算次数(FLOPS,floating-pointoperationspersecond)测量)。由于本发明技术方案的细胞阵列计算系统不再面临与内存接口的瓶颈,在解决很多实际问题中,表现的会更好。基于上述细胞阵列计算系统,本发明实施例还提供一种上述细胞阵列计算系统中的通信方法,包括:主控CPU读写非易失随机存储器的操作、主控CPU与微处理器之间的通信操作、主控CPU的广播操作以及细胞阵列内相邻细胞之间的通信操作;所述主控CPU读写非易失随机存储器的操作具体包括:所述细胞阵列中的任一细胞接收所述主控CPU在所述细胞阵列总线上广播的目标地址,若判断出所述目标地址在本细胞中,则连接该细胞的非易失随机存储器以使所述主控CPU进行数据的读写操作。所述主控CPU与微处理器之间的通信操作具体包括:在系统地址空间中预留第一特殊地址段用于所述主控CPU与微处理器之间的通信并存储目标细胞的ID,若所述细胞阵列中任一细胞接收所述第一特殊地址段时识别出是与本细胞的微处理器的通信,则连接该细胞的微处理器完成后续的指令接收、数据接收和状态读取操作。需要说明的是,所述系统地址空间并不仅仅局限于由细胞阵列的各个细胞中包含的非易失随机存储器组成的地址空间总和,因为连接细胞阵列总线的存储器可能不止是细胞阵列的各个细胞中包含的非易失随机存储器,完全可能还存在其他类型的存储器与细胞阵列总线相连,供所述主控CPU访问。因此,所述主控CPU需要根据细胞的ID去标识其准备访问的细胞(此时该细胞在本实施例中称为“目标细胞”)。所述主控CPU的广播操作具体包括:在系统地址空间中预留第二特殊地址段用于所述主控CPU广播指令,所述第二特殊地址段存有能帮助确定所述细胞阵列中目标区域的范围的各个细胞的ID,若所述细胞阵列中任一细胞接收所述第二特殊地址段后识别出本细胞在所述目标区域中,则连接该细胞的微处理器以传递所述主控CPU发送的指令或数据、状态读取,或者通过连接该细胞的非易失随机存储器进行数据的读写操作。下面以所述目标区域具体是矩形区域为例对所述主控CPU的广播操作举例说明。在系统地址空间中预留一段用做广播指令,这个地址中的一段用于存储目标矩形区域中起点细胞的ID。所述起点细胞是该目标矩形区域中首个被主控CPU访问的细胞,该细胞中的总线控制器接收这个特殊地址后,接收后面的一个字(word)的数据,这个数据包括目标矩形区域中与起点细胞对角的细胞的ID。总线控制器判断本细胞在该区域中,接收第二个字的数据。第二个字标明是给MPU的指令或数据,还是从非易失随机存储器中某一个相对地址开始写入。如果是前者,连接MPU,如果是后者,连接非易失随机存储器完成后面的操作。需要说明的是,在所述第二特殊地址段的存储空间较为有限的情况下,其存储的细胞ID并不一定能完全据此确定目标区域的范围,此时接收所述第二特殊地址段之后,还需要接收后续的数据以配合所述第二特殊地址段中所存储的细胞ID共同确定目标区域的范围。细胞阵列内相邻细胞之间的通信操作包括:所述细胞阵列中的任一细胞在其微处理器的控制下向相邻细胞发送数据。本实施例中,每个细胞设置有一个总线控制器,与细胞阵列总线连接。细胞内部设置细胞内部总线,所述非易失随机存储器是该细胞内部总线的从设备(Slave),所述总线控制器和微处理器是主设备(Master)。上述细胞阵列计算系统中的通信方法中涉及的“所述细胞阵列中的任一细胞判断所述目标地址是否在本细胞中”,“识别是否与本细胞的微处理器的通信”,“识别本细胞是否在所述目标区域中”,以及“连接非易失随机存储器或微处理器”均是由所述总线控制器完成的,所述总线控制器通过所述细胞内部总线连接所述非易失随机存储器。在具体实施时,所述主控CPU对于所述细胞阵列中任一细胞的非易失随机存储器的读写操作的优先级高于该细胞内的微处理器对于相应的非易失随机存储器的读写操作。也就是说,若某个细胞中的微处理器需要读写该细胞中的非易失随机存储器,须等主控CPU对于该细胞的非易失随机存储器的读写操作完成后才能进行。所述细胞阵列计算系统中的通信方法的具体实施也可以参考上述细胞阵列计算系统的实施,此处不再赘述。本实施例中,对于细胞阵列的内部网络的实施,不但可以发送数据到相邻细胞,而且还把它扩展到可以从一个细胞发送到任何一个细胞,即能够实现细胞阵列中的细胞间通信。具体地,所述细胞阵列计算系统的细胞阵列中的任意两个细胞之间能在不依靠主控CPU的情况下进行通信,参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞,所述起点细胞为向所述终点细胞发出数据的细胞,所述终点细胞为最终接收所述起点细胞所发数据的细胞,所述中转细胞为沿细胞间通信路径依次相邻且通过所述通信接口中转所述起点细胞所发数据的细胞,所述细胞间通信路径是由所述起点细胞、中转细胞和终点细胞所构成的数据收发路径。通过细胞阵列中相邻细胞之间的通信接口,实现相邻细胞之间对于数据的多次中转,使细胞阵列中的任意两个细胞之间不依靠主控CPU便能进行通信,提高了细胞间通信的效率,也降低了主控CPU的处理负担,从而能进一步提升计算系统的整体性能。需要说明的是,所述起点细胞、终点细胞和中转细胞均是相对于某一次细胞间通信过程而言的相对概念,因为某个起点细胞完全也可能作为其他细胞间通信过程中的中转细胞或终点细胞,某个终点细胞也可能作为其他细胞间通信过程中的中转细胞或起点细胞。在具体实施时,所述细胞阵列中的细胞还可以包括与所述微处理器相连的网络控制器,所述网络控制器用于在细胞间通信时对发出的数据、中转的数据或者最终接收的数据进行收发控制,还用于向所述微处理器发送中断信号。本实施例中,通过在每个细胞内设置一个网络控制器,以便在不干扰MPU的情况下快速地中转数据,由此降低细胞中MPU的处理负担。在其他实施例中,也可以不设置所述网络控制器,而是由MPU实现数据的中转。在本实施例中,“发出的数据”指的是所述起点细胞自身所发的数据;“中转的数据”指的是所述中转细胞中转所述起点细胞所发出的数据,该数据并非由本细胞自身所需要发出的;“最终接收的数据”指的是终点细胞所接收的数据,该数据在经过多次中转之后已到达目的地,将不再进行中转。“发出的数据”、“中转的数据”和“最终接收的数据”,就内容而言可能为相同的数据,只不过属于不同通信阶段的不同称呼。在具体实施时,所述细胞阵列中的细胞还可以包括与所述网络控制器相连的一组或一组以上先入先出队列(FIFO,FirstInputFirstOutput),各组先入先出队列分别对应一个与本细胞相邻的细胞,每一组先入先出队列包括输入先入先出队列和输出先入先出队列,所述输入先入先出队列用于存储输入本细胞进行中转的数据或最终接收的数据,所述输出先入先出队列用于存储从本细胞输出的需进行中转的数据或本细胞向其他细胞发出的数据。若在以图3所示相邻细胞之间通信方式为例的情况下,本实施例的细胞阵列中进行细胞间通信的细胞的结构如图6所示,图6中的网络控制器分别与MPU以及4组FIFO队列相连,各组FIFO队列分别与本细胞在“二维平面的上、下、左、右四个方向”相邻的细胞一一对应,具体实施时,每两个相邻细胞之间的通信通道可以共用一组相应的FIFO队列。每组FIFO队列均包含输入FIFO和输出FIFO,站在其中一个细胞的角度上而言,输入FIFO存放从其他相邻细胞输入的数据,输出FIFO存放从本细胞向其他相邻细胞输出的数据,相邻细胞的输出FIFO对于本细胞来说属于输入FIFO,本细胞的输出FIFO对于相邻细胞来说属于输入FIFO。需要说明的是,图6所示的细胞中对应存在4组FIFO队列,若是位于矩形的细胞阵列的4个角的细胞,则该细胞仅有两个相邻细胞,此时该细胞对应2组FIFO队列,若是位于矩形的细胞阵列的4条边的细胞,则该细胞有三个相邻细胞,此时该细胞对应3组FIFO队列。本实施例中,网络控制器还和该细胞内的MPU连接,给它发中断信号,如FIFO空、FIFO满、新到数据、数据送出等等;MPU则可以通过网络控制器发出数据,发出的数据通常会先放入相应的一个输出FIFO队列中。需要说明的是,图6中的细胞结构仅仅示出了与进行细胞间通信相关的模块,本领域技术人员能够理解的是,图6所示的细胞结构完全可以与图5所示的细胞结构相结合。此外,本实施例中采用FIFO队列存储输入和输出某个细胞的数据,如此能够使细胞间通信过程中的数据中转更有效率,减少MPU的处理负荷。在其他实施例中,输入和输出某个细胞的数据也可以通过寄存器实现。本发明实施例还提供一种上述细胞阵列计算系统中细胞之间的通信方法,包括:所述细胞阵列中的起点细胞将向终点细胞发出的数据,按选定的发送方向发送至与所述起点细胞相邻的细胞;当所述细胞阵列中的任一细胞接收到相邻细胞发出的数据或中转的数据时,若根据接收到的数据中所标明的所述终点细胞的ID判断出本细胞为终点细胞,则将接收到的数据存入本细胞的非易失随机存储器,或者通知本细胞的微处理器对接收的数据进行处理,否则本细胞作为中转细胞,在选定发送方向后将所述接收到的数据中转给与本细胞相邻的细胞。在具体实施时,细胞间通信过程中涉及的每一条数据都会含有起点细胞和终点细胞的ID,任一细胞根据接收到的数据中所标明的终点细胞的ID便可以判断该数据是发给本细胞的还是需要进一步中转给其他相邻细胞的。一条数据通过相邻细胞间的连接,经过多次中转,到达终点细胞,若该终点细胞需要就起点细胞所发数据作出反馈,则可以根据起点细胞的ID将反馈数据发向起点细胞,所述终点细胞以接收到的数据中所标明的起点细胞的ID作为终点细胞的ID,在对接收到的数据进行处理后所得到的反馈数据中予以标明,此时该终点细胞成为新的一次细胞间通信时的起点细胞,原先的起点细胞则成为该次细胞间通信时的终点细胞。具体实施时,在标明终点细胞的ID的同时,所述起点细胞向终点细胞发出的数据中还标明所述终点细胞中要被访问的地址或者MPU;所述将接收到的数据存入本细胞的非易失随机存储器,是所述终点细胞在识别出接收到的数据中所标明的要被访问的地址之后进行的;所述通知本细胞的MPU对接收的数据进行处理,是所述终点细胞在识别出接收到的数据中所标明的MPU之后进行的。在实际实施时,若终点细胞在识别出接收到的数据中所标明的要被访问的地址后,则接收的数据可以被该终点细胞内的网络控制器直接写入该细胞的非易失随机存储器中的相应地址,在这种情况下,细胞可以实现“繁殖”,一个细胞可以给另外一个细胞下载程序;若终点细胞在识别出接收到的数据中所标明的MPU之后,接收的数据将交由终点细胞内的MPU处理。在本实施例中,由于细胞阵列中的细胞还包括与MPU相连的网络控制器,因此所述起点细胞向终点细胞发出数据、所述细胞阵列中的任一细胞接收相邻细胞发出的数据或中转的数据并判断本细胞为最终细胞或是中转细胞、将接收到的数据存入本细胞的非易失随机存储器或者通知本细胞的MPU对接收的数据进行处理,均是在所述网络控制器的控制下完成的。具体实施时,所述起点细胞向终点细胞发出的数据先由所述网络控制器输入所述输出先入先出队列,再由所述网络控制器从所述输出先入先出队列输出至与所述起点细胞相邻的细胞;若所述细胞阵列中的任一细胞接收到相邻细胞发出的数据或中转的数据,则将接收到的数据输入所述输入先入先出队列,并在判断出接收到的数据需要进行中转时再将该数据输入所述输出先入先出队列。此外,若所述网络控制器判断出所述输入先入先出队列或输出先入先出队列为空或者已满,或接收到相邻细胞发出或中转的数据,或向相邻细胞发出数据或中转数据,则向所述微处理器发送中断信号。在具体实施时,所述起点细胞或中转细胞可以通过如下方式选定所述发送方向:若所述起点细胞或中转细胞与所述终点细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述终点细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述终点细胞的细胞。当然,所述待选相邻细胞的数量有可能为两个,此时则选择这两个待选相邻细胞中输出数据的通信任务更少的细胞作为中转细胞。本实施例中,所述起点细胞或中转细胞通过上述方式选定发送方向,实际上也可以认为是细胞阵列中细胞间通信的路径选择过程。可以参阅图7,图7中的每个矩形表示细胞阵列中的一个细胞,图7中示出的所有细胞为整个细胞阵列中的一部分,假设相邻细胞之间按图3所示的通信方式进行。如果A点表示一个起点细胞,该起点细胞准备向C点所在的终点细胞发出数据,由于A点与C点之间显然是能够形成一条直线的通信路径,则A点所在的细胞将数据发向与其相邻的B点所在的细胞,同理,B点所在的细胞作为中转细胞,继续沿着A点与C点之间的直线向C点所在细胞的方向中转数据,在A点与C点之间形成的细胞间通信路径上依次相邻的细胞,将A点所在细胞发出的数据多次转发,直至传送到C点所在细胞。如果D点表示另一个起点细胞,该起点细胞准备向G点所在的终点细胞发出数据,由于D点与G点之间显然是无法形成一条直线的通信路径,则在与D点所在细胞相邻的细胞之中,E点所在的细胞和F点所在的细胞显然更靠近G点所在的终点细胞,则这两个细胞属于D点所在细胞的待选相邻细胞,可以选择其中输出数据的通信任务更少的细胞作为中转细胞,若这两个细胞输出数据的通信任务相同,则随意选择一个细胞作为中转细胞。如图7所示,选择E点所在的细胞还是F点所在的细胞,将形成不同的细胞间通信路径。需要说明的是,本实施例中是以图3所示的相邻细胞之间的通信方式为例对细胞间通信的路径选择进行说明的,本领域技术人员能够理解的是,若是采用图4所示的相邻细胞之间的通信方式,则可供选择的发送方向将会更多。综上,在实际实施时,每一个发出或中转数据的细胞,其网络控制器都必须选择一个相邻的细胞作为下一站。当起点和终点在一条直线上时,合理的选择一般只有一个;其他情况下,有两个同样合理的选择,网络控制器将选择一个交通相对不忙的邻居。如果某个输入FIFO队列有数据进入,则网络控制器将首先检查它:如果终点是本细胞,那么:若终点是特定相对地址,由于网络控制器具有直接内存访问(DMA,DirectMemoryAccess)的能力,将把接收到的数据直接存入所述非易失随机存储器中的相应地址,并用中断通知MPU;若终点是MPU,则直接用中断信号通知MPU进行处理。如果终点是其他细胞,或者本细胞的MPU向外发出数据,那么:若终点与本细胞在一条直线上,则选择正确的方向,向相邻细胞发送数据;其他情况下,有两个可能的方向,选择其中输出FIFO队列更空闲的相邻细胞发送,如果两个待选相邻细胞中的输出FIFO队列的情况相同,则可以从中随意选择一个相邻细胞发送。在实际实施时,当所述细胞阵列中存在的数千个MPU一起计算时,怎样把各个细胞的输出数据发送给所述主控CPU就成为一个问题。一般来说,每个MPU可以把输出数据存放在其所在细胞的非易失随机存储器中的约定地址,让主控CPU通过逐个轮询每个MPU的方式进行读取。然而,这并不适用于所有问题,在有些问题中,当细胞阵列中只有少数几个细胞需要向主控CPU输出数据时,那么主控CPU逐个轮询每个MPU效率太低。因此,本发明实施例提供的细胞阵列计算系统还包括:所述细胞阵列中还设有至少一个专职输出细胞,所述专职输出细胞作为终点细胞接收并存储其他细胞给所述主控CPU的输出数据,并以中断信号通知所述主控CPU读取所述输出数据。在具体实施时,还可以在所述专职输出细胞的非易失随机存储器中设置FIFO队列,其他细胞给所述主控CPU的所有输出数据存储在该FIFO队列中,该FIFO队列应当具有足够的存储空间,有能力存储其他细胞给所述主控CPU的所有输出数据。实际实施时,可以在细胞阵列中选择一个或几个细胞作为所述专职输出细胞,一般可以选择在位置上与主控CPU之间进行通信更为便捷的细胞。所述专职输出细胞与所述主控CPU之间设有中断线,所述专职输出细胞可以给主控CPU发送中断信号,例如新到其他细胞的输出数据、MRAM中设置的FIFO队列已满、MRAM中设置的FIFO已空等等。基于上述设有专职输出细胞的细胞阵列计算系统,本发明实施例还提供一种细胞阵列计算系统中的通信方法,包括:所述专职输出细胞接收并存储其他细胞给所述主控CPU的输出数据之后,向所述主控CPU发出通知读取的中断信号;所述主控CPU在接收到所述通知读取的中断信号后,从所述专职输出细胞中读取所述输出数据。具体实施时,所述其他细胞可以通过如下方式将所述输出数据发送至所述专职输出细胞:所述其他细胞中的任一细胞作为起点细胞,将所述输出数据按选定的发送方向发送至相邻的细胞;当所述细胞阵列中的任一细胞接收到相邻细胞发送的所述输出数据时,若判断出所述输出数据中所标明的终点细胞的ID与本细胞的ID一致,由于所述输出数据中所标明的终点细胞的ID为所述专职输出细胞的ID,表明本细胞为所述专职输出细胞,则将所述输出数据存入本细胞的非易失随机存储器,否则本细胞作为中转细胞,在选定发送方向后将所述输出数据中转给与本细胞相邻的细胞。所述其他细胞将所述输出数据发送至所述专职输出细胞的过程中,所述起点细胞或中转细胞可以通过如下方式选定所述发送方向:若所述起点细胞或中转细胞与所述专职输出细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述专职输出细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述专职输出细胞的细胞。本发明实施例的专职输出细胞的实施过程还可以参阅图8。图8示出了主控CPU、细胞阵列以及细胞阵列总线,细胞阵列内的一个个小方格简单地表示出一个个细胞,其中J点所在的细胞(即粗线框小方格表示的细胞)为专职输出细胞,图8还进一步示出了专职输出细胞的结构,如图8中虚线箭头所示,可以看到,专职输出细胞中的MRAM中设有存储其他细胞给所述主控CPU的所有输出数据的FIFO队列。假设H点所在的细胞和I点所在的细胞需要向主控CPU提供输出数据,则可以通过细胞之间的通信方式将所述输出数据发送至J点所在的细胞,H点至J点的细胞间通信路径以及I点至J点的细胞间通信路径,请参阅图8。由于细胞间通信方式此前已有详细描述,此处不再赘述。J点所在的细胞接收到H点所在的细胞或I点所在的细胞发出的输出数据后,则可以发送通知读取的中断信号给主控CPU,主控CPU接收到该通知读取的中断信号后,便可以通过细胞阵列总线从J点所在的细胞中读取该输出数据。通过在细胞阵列中设置专职输出细胞,以所述专职输出细胞作为所述终点细胞接收并存储其他细胞给主控CPU的输出数据,并以中断信号的方式通知所述主控CPU读取所述输出数据,如此能够在只有少数几个细胞需要向主控CPU输出数据时提高主控CPU读取输出数据的效率。下面再介绍一个应用上述细胞阵列计算系统的实例。语音识别可以用已知的语音库和输入的声音信号进行比对,这个比对可以是在时域比对也可以在频域比对。当需要比对的字词越来越多,比如说,考虑到不同的口音可以到数万个,如果仅依靠少数几个CPU的计算能力对于实时语音识别就显得不足了。本发明实施例提供的细胞阵列计算系统则非常适合解决此类问题。为此,本发明实施例还提供一种应用上述细胞阵列计算系统进行数据比对的方法,包括:所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞后,把比对程序广播到每个细胞的非易失随机存储器中;所述主控CPU把所选择的每个细胞负责比对的样品分别写入到各细胞的约定地址中;所述主控CPU广播指令给所选择细胞的微处理器,使各个微处理器完成初始化后等待输入待比对的数据;所述主控CPU把待比对的数据广播给所选择细胞的微处理器;所选择细胞的微处理器运行所述比对程序,对接收到的待比对的数据与本细胞负责比对的样品进行比较,若获得两者一致的比较结果,则使用上述细胞阵列计算系统中的通信方法,将所述比较结果作为输出数据发送至所述专职输出细胞以供所述主控CPU读取。具体实施时,所述待比对的数据既可以是待识别的语音数据,也可以是待识别的图像数据,还可以是其他需要进行比对的数据。在实际实施时,每个MPU不断接受语音数据进行比对,通常情况下,几百个到几千个细胞中,只有一个或少数几个得到待比对的数据与本细胞负责比对的样品两者相一致的比较结果,这些细胞把比较结果发送到专职输出细胞,后者用中断信号通知主控CPU接收。若所述待比对的数据具体为语音数据,则数据比对的过程可以在时域或是频域进行,如果是后者,可以先由主控CPU分段进行快速傅里叶变换(FFT,FastFourierTransformation),再广播已转换到频域的语音数据给所选择细胞的MPU。通过应用上述设有专职输出细胞的细胞阵列计算系统进行数据比对,可以使细胞阵列中大量的细胞同时进行比对程序的运算,由此具有极强的并行处理能力,解决了现有技术中CPU和内存之间的通信瓶颈问题,使实时语音/图像识别的能力得到大大提升。如前所述,从一个细胞群发信息到细胞阵列中的某个目标区域,已经有一个简单的方法:由主控CPU读取信息再进行广播。本实施例还提供另外一种实现方式:把细胞间的点对点通信功能被扩展到区域群发,这种方式可以支持更高的平行度,高得多的总带宽。在本实施例提供的细胞阵列计算系统中,所述细胞阵列中的任一细胞还能作为所述起点细胞向目标区域内的所有细胞进行群发通信,参与所述群发通信且位于目标区域内的细胞作为所述起点细胞、或作为所述终点细胞、或同时作为所述中转细胞和终点细胞,参与所述群发通信且位于目标区域外的细胞作为所述起点细胞或中转细胞。具体实施时,每个细胞中与微处理器相连的网络控制器,除了在任意两个细胞进行细胞间通信,而且还在所述群发通信时,对发出的数据、中转的数据或者最终接收的数据进行收发控制,所述网络控制器还用于向所述微处理器发送中断信号。在实际实施时,细胞间群发通信的原始发送者(细胞阵列中作为起点细胞的细胞)负责标明目标区域,仍然通过一系列中转完成数据的群发。本领域技术人员能够理解的是,细胞间群发通信也可以认为是多次细胞间的点对点通信的有效叠加,因此细胞间群发通信的具体实施也可以参考任意两个细胞之间进行通信的实施,例如此前提及的所述细胞阵列中的细胞同样可以包括与所述网络控制器相连的一组或一组以上先入先出队列,此处不再赘述。在上述细胞阵列计算系统支持细胞间群发通信的基础上,本发明实施例还提供一种上述细胞阵列计算系统中细胞间群发通信方法,包括:当细胞阵列中的任一细胞作为起点细胞向目标区域内所有细胞发起群发通信时,若该起点细胞位于该目标区域内,则将细胞间群发数据发送至所有位于该目标区域内的相邻细胞,并针对每一个相邻细胞更新目标区域,否则按靠近目标区域的方向将所述细胞间群发数据发送至相邻的细胞;若位于目标区域外的细胞接收到相邻细胞发送的所述细胞间群发数据,则在判断出所述细胞间群发数据中所标明的目标区域不包含本细胞后,本细胞作为中转细胞,按靠近目标区域的方向将所述细胞间群发数据中转给相邻细胞;若位于目标区域内的细胞接收到相邻细胞发送的所述细胞间群发数据,则在判断出所述细胞间群发数据中所标明的目标区域包含本细胞后,本细胞作为终点细胞,将接收到的所述细胞间群发数据存入本细胞的非易失随机存储器,或者通知本细胞的微处理器对所述细胞间群发数据进行处理,如果目标区域内仍然存在与本细胞相邻的细胞,则本细胞还作为中转细胞,将接收到的所述细胞间群发数据中转给所有位于目标区域内的相邻细胞,并针对每一个相邻细胞更新目标区域;更新后的目标区域包括由更新前的目标区域划分而成的一个或一个以上目标区域,更新前的目标区域内发出或中转所述细胞间群发数据的细胞的每一个相邻细胞分别包含于更新后的各个目标区域内,已发出或已中转所述细胞间群发数据的细胞排除在更新后的目标区域之外。需要说明的是,由于主控CPU也可以将某个细胞的数据广播到细胞阵列中的某个目标区域,为了与“主控CPU的广播数据”有所区别,因此本实施例中将细胞间群发通信时所涉及的群发数据称为“细胞间群发数据”。发起细胞间群发通信的细胞会明确目标区域,该目标区域内所有细胞的ID或者所有细胞ID的范围将会标明在所述细胞间群发数据之中,任一细胞接收到所述细胞间群发数据,便能够根据所述细胞间群发数据中所标明的目标区域判断该细胞间群发数据是由本细胞最终接收的,或是需要进一步中转给其他相邻细胞的,还是两者皆需执行的。此外,所述针对每一个相邻细胞更新目标区域,具体便是将更新前的目标区域划分而成的一个或一个以上目标区域(已发出或已中转所述细胞间群发数据的细胞被排除在更新后的目标区域之外),其中每个目标区域会各自包含一个所述相邻细胞(即与更新前的目标区域内发出或中转所述细胞间群发数据的细胞相邻的细胞),所述每一个相邻细胞在各自所对应的更新后的目标区域内继续进行细胞间的群发通信,相应地,所述细胞间群发数据中所标明的目标区域同样也会得到更新。本实施例中,以图3所示相邻细胞之间通信方式,且以发起群发通信的起点细胞所确定的目标区域的形状为矩形为例进行说明。需要说明的是,本实施例所给出的细胞间群发通信方式是实际实施时较为便捷和高效的方式,本领域技术人员能够理解,在其他实施例中,上述细胞阵列计算系统中细胞间群发通信方法同样能适用于其他相邻细胞之间通信方式或是其他形状的目标区域。具体实施时,作为起点细胞或中转细胞的细胞所处位置的不同,发出或中转的方式将有所不同。当作为起点细胞或中转细胞的第一细胞位于矩形目标区域的角上时,如果所述矩形目标区域中均含有所述第一细胞的相邻两边的其中一边的细胞数量为1,则更新后的目标区域为所述矩形目标区域在所述相邻两边的另一边排除所述第一细胞后形成的矩形区域,否则更新后的目标区域包括两个矩形的目标区域,其中一个目标区域为所述相邻两边中任一边排除所述第一细胞后形成的矩形区域。需要说明的是,本实施例中的所述第一细胞是位于矩形目标区域的角上的一类细胞的统称。可以参阅图9,假设K点所在的细胞为发起细胞间群发通信的起点细胞,或者为负责中转细胞间群发数据的中转细胞,矩形目标区域101为K点所在的细胞发出或中转所述细胞间群发数据前所确定的目标区域,此时K点所在的细胞在矩形目标区域101内,且位于矩形目标区域101的角上,由于矩形目标区域101在水平方向的这条边仅包含1个细胞,此时K点所在的细胞只有一个邻居可以选择为下一站中转,那么该细胞的网络控制器将所述细胞间群发数据发送到L点所在的细胞,并对矩形目标区域101进行更新,更新后形成的目标区域为矩形目标区域102,相当于将K点所在的细胞排除在矩形目标区域101之外;随着目标区域的不断更新,如果目标区域中剩下最后一个细胞,则停止中转。假设M点所在的细胞也为发起细胞间群发通信的起点细胞,或者为负责中转细胞间群发数据的中转细胞,矩形目标区域103为M点所在的细胞发出或中转所述细胞间群发数据前所确定的目标区域,此时M点所在的细胞在矩形目标区域103内,且位于矩形目标区域103的角上,由于矩形目标区域103相邻两边均包含1个以上的细胞,此时M点所在的细胞有两个邻居可以选择为下一站中转,那么该细胞的网络控制器将所述细胞间群发数据发送到N点所在的细胞和O点所在的细胞,并对矩形目标区域103进行更新,更新后的目标区域包括两个矩形的目标区域,其中一个目标区域为矩形目标区域104,另一个目标区域为矩形目标区域105,相当于将M点所在的细胞排除在矩形目标区域103之外,矩形目标区域104和矩形目标区域105可以作为独立的目标区域继续以前述类似方法进行数据中转;随着目标区域的不断更新,如果目标区域中剩下最后一个细胞,则停止中转。当作为起点细胞或中转细胞的第二细胞位于矩形目标区域的边上时,如果所述矩形目标区域中与所述第二细胞所在边相邻的边的细胞数量为1,则更新后的目标区域包括所述第二细胞所在边排除所述第二细胞后形成的两个矩形的目标区域,否则更新后的目标区域包括三个矩形的目标区域,其中两个目标区域为所述第二细胞所在边排除所述第二细胞后形成的两个矩形区域。需要说明的是,本实施例中的所述第二细胞是位于矩形目标区域的边上的一类细胞的统称。可以参阅图10,假设P点所在的细胞为发起细胞间群发通信的起点细胞,或者为负责中转细胞间群发数据的中转细胞,矩形目标区域111为P点所在的细胞发出或中转所述细胞间群发数据前所确定的目标区域,此时P点所在的细胞在矩形目标区域111内,且位于矩形目标区域111的某条边上,由于矩形目标区域111中与P点所在的细胞所在边相邻的边的细胞数量大于1,则此时P点所在的细胞有三个邻居可以选择为下一站中转,该细胞的网络控制器将所述细胞间群发数据分别发送到Q点所在的细胞、R点所在的细胞和S点所在的细胞,并对矩形目标区域111进行更新,更新后的目标区域包括三个矩形的目标区域,分别为矩形目标区域112、矩形目标区域113和矩形目标区域114,相当于将P点所在的细胞排除在矩形目标区域111之外,矩形目标区域112和矩形目标区域113这两个目标区域相当于是P点所在的细胞所在边排除P点所在的细胞后形成的两个矩形区域,矩形目标区域112、矩形目标区域113和矩形目标区域114可以作为独立的目标区域继续以前述类似方法进行数据中转;随着目标区域的不断更新,如果目标区域中剩下最后一个细胞,则停止中转。可以理解的是,若目标区域(图10中未标示)中与P点所在的细胞所在边相邻的边的细胞数量为1,则此时P点所在的细胞有两个邻居可以选择为下一站中转,该细胞的网络控制器将所述细胞间群发数据分别发送到Q点所在的细胞和R点所在的细胞,并对目标区域进行更新,更新后的目标区域包括两个矩形的目标区域,具体为矩形目标区域112和矩形目标区域113。当作为起点细胞的第三细胞位于矩形目标区域的内部时,更新后的目标区域包括四个矩形的目标区域,其中两个目标区域为所述第三细胞所在行或列排除所述第三细胞后形成的两个矩形区域,另外两个目标区域为更新前的所述矩形目标区域被所述第三细胞所在行或列分割而形成的两个矩形区域。需要说明的是,本实施例中的所述第三细胞是位于矩形目标区域的内部的一类细胞的统称,所述矩形目标区域的内部指的是除“角”和“边”以外的区域。可以参阅图11,假设T点所在的细胞为发起细胞间群发通信的起点细胞(本实施例中T点所在的细胞不可能为负责中转细胞间群发数据的中转细胞),矩形目标区域121为T点所在的细胞发出所述细胞间群发数据前所确定的目标区域,此时T点所在的细胞位于矩形目标区域121的内部,T点所在的细胞有四个邻居可以选择为下一站中转,该细胞的网络控制器将所述细胞间群发数据分别发送到U点所在的细胞、V点所在的细胞、W点所在的细胞和X点所在的细胞,并对矩形目标区域121进行更新,更新后的目标区域包括四个矩形的目标区域,分别为矩形目标区域122、矩形目标区域123、矩形目标区域124和矩形目标区域125,相当于将T点所在的细胞排除在矩形目标区域121之外,矩形目标区域122和矩形目标区域123这两个目标区域相当于是T点所在的细胞所在行排除T点所在的细胞后形成的两个矩形区域,矩形目标区域124和矩形目标区域125这两个目标区域相当于是矩形目标区域121被T点所在的细胞所在行分割而形成的两个矩形区域,矩形目标区域122、矩形目标区域123、矩形目标区域124和矩形目标区域125可以作为独立的目标区域继续以前述类似方法进行数据中转;随着目标区域的不断更新,如果目标区域中剩下最后一个细胞,则停止中转。本实施例中,当作为起点细胞或中转细胞的第四细胞位于目标区域之外时,如果所述第四细胞与目标区域内任一细胞之间能形成一条直线的通信路径,则所述第四细胞发出或中转所述细胞间群发数据的发送方向为由所述第四细胞沿所述直线向目标区域的方向,否则所述发送方向为由所述第四细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述第四细胞相邻的细胞之中靠近目标区域的细胞。需要说明的是,本实施例中的所述第四细胞是位于矩形目标区域之外的一类细胞的统称。可以参阅图12,假设Y1点所在的细胞为发起细胞间群发通信的起点细胞,矩形目标区域131为Y1点所在的细胞发出所述细胞间群发数据前所确定的目标区域,此时Y1点所在的细胞在矩形目标区域131之外,由于该细胞在矩形目标区域相对两个边的延长线之间,与矩形目标区域内Y3点所在细胞之间能够形成一条直线的通信路径,此时只有一个邻居可以作为下一站的中转,Y1点所在的细胞的网络控制器把所述细胞间群发数据发送至这个邻居,即Y2点所在的细胞,Y2点所在的细胞作为负责中转所述细胞间群发数据的中转细胞。Y2点所在的细胞将沿着图12中虚线箭头所示的方向中转数据,直至传送到Y3点所在细胞。Y3点所在细胞位于矩形目标区域131的边上,可以按照前述相关方法继续完成矩形目标区域131内的中转过程。继续参阅图12,假设Z1点所在的细胞为发起细胞间群发通信的起点细胞,矩形目标区域131为Z1点所在的细胞发出所述细胞间群发数据前所确定的目标区域,此时Z1点所在的细胞在矩形目标区域131之外,由于该细胞并不在矩形目标区域相对两个边的延长线之间,与矩形目标区域内任一细胞之间都难以形成一条直线的通信路径,此时有两个邻居可以作为下一站的中转,即Z2点所在的细胞和Z3点所在的细胞,这两个细胞为Z1点所在的细胞的待选相邻细胞,因为这两个细胞为Z1点所在的细胞相邻的细胞之中更靠近矩形目标区域131的细胞。在实际实施时,可以任意选择一个或更加实际通信情况选择一个负担比较轻的细胞作为下一站中转,所述负担比较轻的细胞具体指的是输出数据的通信任务更少的细胞。从Z1点所在的细胞出发,通过两条可行的中转通信路径,直至将所述细胞间群发数据中转至Z4点所在细胞。Z4点所在细胞位于矩形目标区域131的角上,可以按照前述相关方法继续完成矩形目标区域131内的中转过程。本实施例提供的细胞阵列计算系统中细胞间群发通信方法,通过将细胞间的点对点通信功能扩展到区域群发,可以支持更高的平行度,获得高得多的总带宽,从而进一步提升计算系统的整体性能。如前所述,本发明实施例的细胞阵列中的细胞兼具内存、存储和计算三个功能,细胞内的所述非易失随机存储器既能实现所述微处理器计算时所涉及数据的随机存取,又能存储软件的指令代码和需要永久保存的数据,然而所述非易失随机存储器的成本一般是较高的,所以细胞中的非易失随机存储器用作内存部分的空间是有限的,那么当细胞中微处理器的数据处理量较大时,有限的内存空间便可能影响微处理器的处理效率,如何扩展细胞的内存空间便成为亟待解决的问题。基于上述考虑,本发明实施例还给出了细胞阵列计算系统的另一种结构,如图13所示,所述细胞阵列计算系统除了包括如前所述的主控CPU、细胞阵列和细胞阵列总线,还可以进一步包括至少一个内存单元阵列,所述内存单元阵列是由一个以上内存单元组成的二维阵列,所述细胞阵列与所有内存单元阵列叠合形成三维结构,每个内存单元阵列中的内存单元与所述细胞阵列中的细胞一一对应地相连,所述内存单元配合所述非易失随机存储器,两者共同用于所述微处理器计算时所涉及数据的随机存取。在实际实施时,细胞中的非易失随机存储器可以是MRAM,所述内存单元阵列则可以是MRAM、DRAM或SRAM硅片,一般可以选取成本较低的一个或多个DRAM硅片,其中每个DRAM硅片是由与所述细胞阵列中各个细胞位置相一致的内存单元形成的内存单元阵列,再将所有DRAM硅片与一个细胞阵列硅片进行3D组合,任一内存单元与细胞阵列中相对应的细胞之间可以通过过硅通孔(TSV,ThroughSiliconVias)建立通信联系,由此扩展每个细胞的内存。本发明实施例中,通过将至少一个由一个以上内存单元组成的内存单元阵列,与所述细胞阵列叠合形成三维结构,并使每个内存单元阵列中的内存单元与细胞阵列中的细胞一一对应地相连,所述内存单元用于所述微处理器计算时所涉及数据的随机存取,如此便能以较低的成本扩展细胞阵列中每个细胞的内存空间,提高细胞中微处理器的处理效率。需要指出的是,图13中仅示出了一个内存单元阵列与所述细胞阵列叠合形成三维结构的情况,本领域技术人员同样也能够理解一个以上内存单元阵列与所述细胞阵列叠合形成三维结构的情况。本领域技术人员还能够理解的是,前述主控CPU通过细胞阵列总线与细胞阵列中每个细胞进行通信、任意两个细胞之间不依靠主控CPU进行的通信、任一细胞向目标区域中所有细胞进行群发通信、通过在细胞阵列中设置专职输出细胞作为终点细胞接收并存储其他细胞给主控CPU的输出数据以供主控CPU读取等通信方法,这些同样适用于包含所述内存单元阵列的细胞阵列计算系统。需要说明的是,由于细胞阵列中的各个细胞扩展了内存空间,所述主控CPU除了可以访问本细胞的非易失随机存储器,还可以访问与本细胞相对应的内存单元(当与细胞阵列叠加成三维结构的内存单元阵列的数量为一个以上时,则与本细胞相对应的内存单元的数量也会有一个以上),因此所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行的通信包括以下情况中的至少一种:按地址读写所述细胞阵列中任一细胞的非易失随机存储器或相应的内存单元;将数据广播到目标区域内每一个细胞的非易失随机存储器或相应的内存单元,并写入该目标区域内每一个细胞的非易失随机存储器或相应的内存单元中相同的相对地址;给所述细胞阵列中任一细胞的微处理器发送指令、发送数据或读取状态;给目标区域内所有细胞的微处理器广播指令。当所述细胞阵列中的细胞还包括总线控制器和细胞内部总线时,所述细胞内部总线除了连接所述微处理器、非易失随机存储器,还与本细胞相对应的内存单元相连,所述总线控制器与所述细胞阵列总线、微处理器以及细胞内部总线相连,所述总线控制器用于识别所述主控CPU与本细胞之间进行的通信,连接所述微处理器以传递所述主控CPU发送的指令或数据、状态读取,或者通过所述细胞内部总线连接所述非易失随机存储器或与本细胞相对应的内存单元进行数据的读写操作。如前所述,本发明实施例的细胞阵列中的细胞兼具内存、存储和计算三个功能,细胞内的所述非易失随机存储器既能实现所述微处理器计算时所涉及数据的随机存取,又能存储软件的指令代码和需要永久保存的数据,然而所述非易失随机存储器的成本一般是较高的,所以细胞中的非易失随机存储器用作存储部分的空间同样是有限的,那么当存在大量文件或数据需要存储在细胞阵列中的各个细胞时,有限的存储空间便无法满足存储要求,甚至还有可能会影响微处理器的处理效率,如何扩展细胞的存储空间则同样是亟待解决的问题。基于上述考虑,本发明实施例还给出了细胞阵列计算系统的又一种结构,如图14所示,所述细胞阵列计算系统除了包括如前所述的主控CPU、细胞阵列和细胞阵列总线,还可以进一步包括至少一个存储单元阵列,所述存储单元阵列是由一个以上存储单元组成的二维阵列,所述细胞阵列与所有存储单元阵列叠合形成三维结构,每个存储单元阵列中的存储单元与所述细胞阵列中的细胞一一对应地相连,所述存储单元配合所述非易失随机存储器,两者共同用于存储软件的指令代码和需要永久保存的数据。在实际实施时,细胞中的非易失随机存储器可以是MRAM,所述存储单元阵列则具体可以是闪存硅片,一般可以选取成本相对于MRAM更低的一个或多个NAND闪存硅片,其中每个NAND闪存硅片是由与所述细胞阵列中各个细胞位置相一致的存储单元形成的存储单元阵列,再将所有NAND闪存硅片与一个细胞阵列硅片进行3D组合,任一存储单元与细胞阵列中相对应的细胞之间可以通过TSV垂直相连以建立通信联系,由此扩展每个细胞的存储空间。具体实施时,所述细胞阵列中的细胞还包括与所述微处理器相连的存储控制器,用于对与本细胞相连的存储单元进行数据存储访问控制。当把一个或多个NAND闪存硅片和一个细胞阵列硅片进行3D组合后,还可以为细胞阵列中的每一个细胞配置NAND闪存控制器,本细胞的MPU通过本细胞的NAND闪存控制器才可以实现对与本细胞相对应的存储单元进行读写。当大量文件或者数据储存在NAND闪存中时,对数据的搜索可以由各个细胞通过各自的NAND通道进行搜索,得到极大的加速。大型软件系统的编译同样需要对成千上万个源代码文件进行编译,当这些源代码保存在这样的细胞阵列计算系统中时,编译同样得到了极大的加速。本发明实施例提供的包含所述存储单元阵列的细胞阵列计算系统,能以较低的成本扩展细胞阵列中每个细胞的存储空间,提高各个细胞的数据存储能力。需要指出的是,图14中仅示出了一个存储单元阵列与所述细胞阵列叠合形成三维结构的情况,本领域技术人员同样也能够理解一个以上存储单元阵列与所述细胞阵列叠合形成三维结构的情况。本领域技术人员能够理解的是,前述主控CPU通过细胞阵列总线与细胞阵列中每个细胞进行通信、任意两个细胞之间不依靠主控CPU进行的通信、任一细胞向目标区域中所有细胞进行群发通信、通过在细胞阵列中设置专职输出细胞作为终点细胞接收并存储其他细胞给主控CPU的输出数据以供主控CPU读取等通信方法,这些同样适用于包含所述存储单元阵列的细胞阵列计算系统。如前所述,由于细胞中的非易失随机存储器用作内存和存储部分的空间都非常有限,因此如何同时扩展细胞的内存和存储空间是亟待解决的问题。基于上述考虑,本发明实施例还给出了细胞阵列计算系统的再一种结构,如图15所示,所述细胞阵列计算系统除了包括主控CPU、细胞阵列和细胞阵列总线,还可以进一步包括至少一个上述存储单元阵列和至少一个上述内存单元阵列。同时包含所述存储单元阵列和内存单元阵列的细胞阵列计算系统可以参考上述仅包含存储单元阵列或仅包含内存单元阵列的细胞阵列计算系统的具体实施,此处不再赘述。本发明实施例提供的同时包含所述存储单元阵列和内存单元阵列的细胞阵列计算系统,能以较低的成本同时扩展细胞阵列中每个细胞的存储和内存空间,提高各个细胞的数据存储能力以及细胞中微处理器的处理效率,从而能更进一步提升计算系统的整体性能。如背景技术所述,神经网络计算涉及的计算量极大,但由于其实现所依托的现有计算机架构存在CPU与内存、存储之间的通信瓶颈,由此影响了计算机整体性能,从而不利于神经网络计算的高效实现。为此,基于本发明实施例所提供的上述细胞阵列计算系统,本发明实施例还提供一种应用上述细胞阵列计算系统实现神经网络计算的方法,包括:在所述细胞阵列内每个参与神经网络计算的细胞中存储一个或一个以上神经元函数的代码;所述主控CPU选择一个或一个以上细胞执行各细胞所存储的神经元函数的代码,并将执行结果向一个或一个以上的目标细胞输出;任一参与神经网络计算的细胞接收到来自其他细胞所输出的对于神经元函数的代码的执行结果,将其作为本细胞的输入数据,基于所有来自其他细胞的输入数据执行本细胞所存储的神经元函数的代码,并将执行结果输出到需要该执行结果的神经元函数所在的细胞,或者存入预设地址等待所述主控CPU读取,或者向所述主控CPU输出。为了能够更好的理解本发明实施例提供的应用上述细胞阵列计算系统实现神经网络计算的方法,有必要先对神经网络计算的原理作简单介绍。神经网络是计算机学习中常用的算法,其仿照了人脑的工作原理。人脑是由大量神经元组成的,每一个神经元可以通过树突结构上的大量(数千个)突触和其他神经元接触,得到输入;突触上的耦合强度具有记忆功能;它输出一个兴奋或抑制的信号,这个信号通过轴突可以传送给远处大量的神经元。仿照人脑工作原理所形成的神经网络计算方法,其中的神经元就是一个函数,如图16所示,它有很多个输入,例如x1、x2和x3是其中3个输入,每一个输入都对应着一个权重,一般的计算方法是每一个输入乘以权重再相加;它输出0或1(由一个阈值决定),或者一个介于0和1之间的值;它内部有很多个参数(例如权重参数、阈值参数等等),调整这些参数的过程就是计算机学习的过程。一个典型的NeuralNetwork,是把大量Neuron的输出、输入连接在一起的网络,通常组织成多级架构。如图17所示,图中这个神经网络组织成三层架构,每一个第一层Neuron的输出发送到每一个第二层Neuron,每一个第二层Neuron的输出发送到每一个第三层Neuron。图17中神经网络的第一层可以称为输入层,第二层可以称为隐含层,第三层可以称为输出层,所述输出层所输出的0、1、2、……、8、9为神经网络计算的最终结果。应用中的神经网络,通常都是这样的分级结构,在实际实施时,这可以是一个用来识别手写数字的神经网络。Neuralnetwork的学习训练过程是一个海量计算的过程。一个网络实际上是一个拥有大量参数(可能有数万个)的函数,需要大量的场景,每个场景有输入数据和正确答案,用来调节这些大量的参数以达到学习的目的(通常使用最陡下降法)。比如训练一个神经网络识别手写数字,需要通过几万张图片,调节参数使得神经网络对每一张图片给出正确的结果,此后的手写识别就有很高的成功率。本申请发明人认为,神经网络计算是非常适合在本发明实施例提供的细胞阵列计算系统中予以实现的。由于训练过程中需要对神经网络进行很多次数的估值,那么该神经网络是可以通过大量的MPU平行计算来加速。在实际实施时,若神经网络中神经元的数量规模未超过细胞阵列计算系统中细胞数量,则细胞阵列中的一个细胞可以完成神经网络中的一个神经元涉及的计算,否则神经网络中一个以上神经元涉及的计算可以集成于一个细胞中完成。具体实施时,每一个细胞存储一个或多个神经元函数的代码,神经元函数的代码可以由主控CPU通过数据广播的方式广播至各个作为神经元的细胞之中,并由主控CPU广播指令至某个目标区域启动神经网络计算,例如:所述主控CPU可以选择所述细胞阵列中全部或目标区域内的细胞作为参与神经网络计算的细胞,将相同的神经元函数的代码广播至所选择的每一个细胞的同一段相对地址中,并广播指令使所选择的一个或一个以上细胞的微处理器从所述相对地址开始执行所述神经元函数的代码。具体实施还可以参考上述细胞阵列计算系统具体实施的相关描述。本发明实施例中,每一个来自其他细胞的输入数据对应一个权重参数,所述基于所有来自其他细胞的输入数据执行本细胞所存储的神经元函数的代码可以包括:将每一个来自其他细胞的输入数据与其对应的权重参数相乘,并对所有乘积求和,将求和后的结果与阈值参数进行比较之后确定的输出值作为执行结果。实际实施时,所述权重参数和阈值参数预先存储于细胞中的所述非易失随机存储器之中。实际实施时,若执行所述神经元函数的代码后输出的执行结果为连续值,则还通过查表的方式加速输出。具体实施时,由于本发明实施例提供的细胞阵列计算系统支持任意两个细胞之间的细胞间通信,则进行神经网络计算时,可以通过采用所述细胞间通信传输对于所述神经元函数的代码的执行结果。依靠细胞阵列内部网络通信巨大的带宽提高了细胞间通信的效率,也降低了主控CPU的处理负担,从而能进一步提升计算系统的整体性能,更有利于神经网络计算的高效实现。具体实施时,当神经网络分成不同层的时候,则层与层之间的数据传输可以使用本发明实施例提供的细胞间通信群发机制,此时同一层中参与神经网络计算的细胞位于同一目标区域内,某一层中任一参与神经网络计算的细胞向目标区域群发对于神经元函数的代码的执行结果,便相当于将对于神经元函数的代码的执行结果群发到下一层所有参与神经网络计算的细胞中。通过将细胞间的点对点通信功能扩展到区域群发,可以支持更高的平行度,获得高得多的总带宽,从而进一步提升计算系统的整体性能,非常有助于提高神经网络计算的速度。具体实施时,若细胞阵列中还设有专职输出细胞,则可以通过所述细胞间通信将神经网络计算的执行结果发送至所述专职输出细胞,以供所述主控CPU读取,如此能更高效地将神经网络计算的执行结果输出给主控CPU。实际实施时,如果最后一层的神经元函数中某些得到肯定的输出(通常的应用是最后一层的神经元中,每一个负责识别一个特定的数据特征或图像),则可以通过这个机制通知主控CPU。通过细胞间通信、细胞间群发以及专职输出细胞实施神经网络计算可以参考细胞阵列计算系统实施例中的相关描述,此处不再赘述。综上所述,使用本发明实施例提供的细胞阵列计算系统实现神经网络计算的优势是显而易见的:大量细胞的平行计算极大地加速的运算速度,特别使得学习训练的速度极大提高;阵列内部网络通信巨大的带宽以及群发机制同样非常有助于提高速度;MRAM的非易失性,使得训练成功的芯片可以直接复制作为解决特定问题的产品销售。虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1