CN105718993B - 细胞阵列计算***以及其中的通信方法 - Google Patents
细胞阵列计算***以及其中的通信方法 Download PDFInfo
- Publication number
- CN105718993B CN105718993B CN201510456252.XA CN201510456252A CN105718993B CN 105718993 B CN105718993 B CN 105718993B CN 201510456252 A CN201510456252 A CN 201510456252A CN 105718993 B CN105718993 B CN 105718993B
- Authority
- CN
- China
- Prior art keywords
- cell
- cellular array
- data
- output
- master cpu
- 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
Landscapes
- Multi Processors (AREA)
Abstract
一种细胞阵列计算***以及其中的通信方法,所述细胞阵列计算***包括:主控CPU、细胞阵列和细胞阵列总线;细胞阵列是由一个以上兼具计算和存储功能的细胞组成的二维阵列;主控CPU通过细胞阵列总线与细胞阵列中的每一个细胞进行通信;细胞阵列中的相邻细胞之间有通信接口,能相互发送数据;细胞阵列中参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞;所述细胞阵列中还设有至少一个专职输出细胞,所述专职输出细胞作为所述终点细胞接收并存储其他细胞给主控CPU的输出数据,并以中断信号通知主控CPU读取所述输出数据。本发明能克服现有计算机架构因CPU与内存、存储之间存在的通信瓶颈,提升计算***的整体性能。
Description
技术领域
本发明涉及计算机及计算机应用技术领域,特别涉及一种细胞阵列计算***以及其中的通信方法。
背景技术
通常来说,一台计算机主要包括三个核心部分:中央处理器(CPU,CentralProcessing Unit)、内存和存储。
经过一些世界顶级公司的不懈努力,CPU已经演变成极度复杂的半导体芯片。顶级的CPU内核内部的MOS管数目可以超过一亿个。目前的产业趋势是受制于功耗,CPU的运行频率已经很难再提高。已经极度复杂的现代CPU,运行效率同样很难再提高。新的CPU产品,越来越多地朝多核方向演进。
在内存方面,目前居于统治地位的是动态随机存取存储器(DRAM,Dynamic RandomAccess Memory)技术。DRAM可以快速随机读写,但却不能在断电的情况下保持内容。实际上,即使在通电的情况下,它也会由于内部用于储存信息的电容器的漏电而丢失信息,必须周期性地自刷新。
在存储方面,NAND闪存技术正在逐步取代传统硬盘。闪存所依赖的浮置栅极(floating gate)技术,虽然能够在断电的情况下保持内容,但写入(将‘1’改写为‘0’)的速度很慢,擦除(将‘0’改写为‘1’)的速度更慢,无法像DRAM那样用于对计算的直接支持。它被制作成块设备(block device),必须整块一起擦除,一个块(block)包含很多页(page),擦除后每页可以进行写入操作。NAND的另外一个问题是具有有限的寿命。
DRAM和NAND闪存,以及CPU的逻辑电路,虽然都是基于CMOS半导体工艺生产的,但这三者的工艺彼此并不兼容。于是,计算机的三个核心部分无法在一个芯片上共存,这深刻地影响了现代计算机的架构。
现有技术中的计算机架构如图1所示,图1中示出多个CPU内核,分别为CPU1、CPU2、CPU3、……、CPUn,每个CPU内核一般具有相应的一级缓存(L1Cache),根据需要还可以进一步为每个CPU内核配备相应的二级缓存(L2Cache)、三级缓存(L3Cache)。DRAM与各个CPU内核之间通过双倍速率(DDR,Double Data Rate)接口进行通信,硬盘(HD,Hard Disk)或固态硬盘(SSD,Solid State Drives)与各个CPU内核之间则通过***设备接口进行通信。
一方面,CPU在向多核的方向发展,另一方面内存和存储都在另外的芯片里。多核CPU吞吐信息量成比例增加,与内存、存储的通信就越来越成为***性能的瓶颈。为了缓解通信瓶颈,CPU不得不采用越来越大的多级缓存。缓存是把内存中的内容复制,通常是用成本比DRAM高得多但速度更快的静态随机存取存储器(SRAM,Static Random AccessMemory)设计的。这样的架构,费效比非常的差。半导体芯片的成本由其硅片的面积决定,而传统计算机架构带来的性能提升与其硅片面积的增加远远不成比例。
发明内容
本发明要解决的问题是现有技术中的计算机架构因CPU与内存、存储之间存在的通信瓶颈而影响计算机整体性能的提升,并使费效比较差。
为解决上述问题,本发明技术方案提供一种细胞阵列计算***,包括:主控CPU、细胞阵列和细胞阵列总线;所述细胞阵列是由一个以上兼具计算和存储功能的细胞组成的二维阵列,其中每一个细胞包括微处理器(MPU,Micro Processing Unit)和非易失(NV,NotVolatile)随机存储器;所述非易失随机存储器用于所述微处理器计算时所涉及数据的随机存取,还用于存储软件的指令代码和需要永久保存的数据;每一个细胞储存各自在所述细胞阵列中的位置作为身份识别号(ID,identification)以供细胞中的软件或硬件读取;所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行通信;所述细胞阵列中的相邻细胞之间有通信接口,能相互发送数据;所述细胞阵列中的任意两个细胞之间能进行通信,参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞,所述起点细胞为向所述终点细胞发出数据的细胞,所述终点细胞为最终接收所述起点细胞所发数据的细胞,所述中转细胞为沿细胞间通信路径依次相邻且通过所述通信接口中转所述起点细胞所发数据的细胞,所述细胞间通信路径是由所述起点细胞、中转细胞和终点细胞所构成的数据收发路径;所述细胞阵列中还设有至少一个专职输出细胞,所述专职输出细胞作为所述终点细胞接收并存储其他细胞给所述主控CPU的输出数据,并以中断信号通知所述主控CPU读取所述输出数据。
可选的,所述专职输出细胞的非易失随机存储器中设有先入先出队列(FIFO,First Input First Output),其他细胞给所述主控CPU的所有输出数据存储在所述先入先出队列中。
可选的,所述细胞阵列中的细胞还包括与所述微处理器相连的网络控制器,所述网络控制器用于在细胞间通信时对发出的数据、中转的数据或者最终接收的数据进行收发控制,还用于向所述微处理器发送中断信号。
可选的,所述细胞阵列中的细胞还包括与所述网络控制器相连的一组或一组以上先入先出队列,各组先入先出队列分别对应一个与本细胞相邻的细胞,每一组先入先出队列包括输入先入先出队列和输出先入先出队列,所述输入先入先出队列用于存储输入本细胞进行中转的数据或最终接收的数据,所述输出先入先出队列用于存储从本细胞输出的需进行中转的数据或本细胞向其他细胞发出的数据。
可选的,所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行的通信包括以下情况中的至少一种:
按地址读写所述细胞阵列中任一细胞的非易失随机存储器;
将数据广播到所述细胞阵列中目标区域内每一个细胞的非易失随机存储器,并写入所述目标区域内每一个细胞的非易失随机存储器中相同的相对地址;
给所述细胞阵列中任一细胞的微处理器发送指令、发送数据或读取状态;
给所述目标区域内所有细胞的微处理器广播指令。
可选的,所述细胞阵列中的细胞还包括总线控制器和细胞内部总线,所述总线控制器与所述细胞阵列总线、微处理器以及细胞内部总线相连,所述总线控制器用于识别所述主控CPU与本细胞之间进行的通信,连接所述微处理器以传递所述主控CPU发送的指令或数据、状态读取,或者通过所述细胞内部总线连接所述非易失随机存储器进行数据的读写操作。
可选的,所述微处理器中集成有浮点计算处理器(FPU,Float Point Unit)和图像处理器中的至少一种。
可选的,所述非易失随机存储器为磁性随机存储器(MRAM,Magnetic RandomAccess Memory)。
可选的,所述主控CPU与所述细胞阵列和所述细胞阵列总线集成于一个芯片中。
可选的,所述主控CPU作为独立的芯片,通过标准的内存接口与由所述细胞阵列和所述细胞阵列总线组成的芯片进行通信。
为解决上述问题,本发明技术方案还提供一种上述细胞阵列计算***中的通信方法,包括:所述专职输出细胞接收并存储其他细胞给所述主控CPU的输出数据之后,向所述主控CPU发出通知读取的中断信号;所述主控CPU在接收到所述通知读取的中断信号后,从所述专职输出细胞中读取所述输出数据;
所述其他细胞通过如下方式将所述输出数据发送至所述专职输出细胞:所述其他细胞中的任一细胞作为起点细胞,将所述输出数据按选定的发送方向发送至相邻的细胞;当所述细胞阵列中的任一细胞接收到相邻细胞发送的所述输出数据时,若判断出所述输出数据中所标明的终点细胞的ID与本细胞的ID一致,则将所述输出数据存入本细胞的非易失随机存储器,否则本细胞作为中转细胞,在选定发送方向后将所述输出数据中转给与本细胞相邻的细胞。
可选的,所述起点细胞或中转细胞通过如下方式选定所述发送方向:若所述起点细胞或中转细胞与所述专职输出细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述专职输出细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述专职输出细胞的细胞。
此外,本发明技术方案还提供一种应用上述细胞阵列计算***进行数据比对的方法,包括:所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞后,把比对程序广播到每个细胞的非易失随机存储器中;所述主控CPU把所选择的每个细胞负责比对的样品分别写入到各细胞的约定地址中;所述主控CPU广播指令给所选择细胞的微处理器,使各个微处理器完成初始化后等待输入待比对的数据;所述主控CPU把待比对的数据广播给所选择细胞的微处理器;所选择细胞的微处理器运行所述比对程序,对接收到的待比对的数据与本细胞负责比对的样品进行比较,若获得两者一致的比较结果,则使用上述细胞阵列计算***中的通信方法,将所述比较结果作为输出数据发送至所述专职输出细胞以供所述主控CPU读取。
与现有技术相比,本发明的技术方案至少具有以下优点:
通过将一个以上兼具独立计算和存储功能的单元(称为“细胞”)组成二维阵列(称为“细胞阵列”),其中每一个细胞包括微处理器和非易失随机存储器,所述非易失随机存储器既能支持所述微处理器进行计算时所涉及数据的随机存取,也能支持存储软件的指令代码和需要永久保存的数据,使内存、存储、计算三个功能集成到每个细胞中,并使各细胞之间形成密集的通讯网络,一方面,主控CPU能通过细胞阵列总线与细胞阵列中的每一个细胞进行通信,另一方面,细胞阵列中的相邻细胞之间也能相互发送数据,由此能通过数据广播/群发和内部网络,克服现有计算机架构因CPU与内存、存储之间存在的通信瓶颈,从而提升计算***的整体性能,并能使费效比较佳。
通过细胞阵列中相邻细胞之间的通信接口,实现相邻细胞之间对于数据的多次中转,使细胞阵列中的任意两个细胞之间不依靠主控CPU便能进行通信,提高了细胞间通信的效率,也降低了主控CPU的处理负担,从而能进一步提升计算***的整体性能。
通过在细胞阵列中设置专职输出细胞,以所述专职输出细胞作为所述终点细胞接收并存储其他细胞给主控CPU的输出数据,并以中断信号的方式通知所述主控CPU读取所述输出数据,如此能够在只有少数几个细胞需要向主控CPU输出数据时提高主控CPU读取输出数据的效率。
本发明解决了CPU和内存之间的通信瓶颈问题。这样,在相同的硅片面积下,大量微型MPU的处理能力,在很多问题上远超少数几个顶级CPU的处理能力,而耗电则低得多。
本发明使得计算机的架构更接近人脑,为未来的人工智能算法提供了强有力的引擎。
附图说明
图1是现有技术中计算机架构的示意图;
图2是本发明实施例的细胞阵列计算***的结构示意图;
图3是本发明实施例的一种相邻细胞之间通信方式的示意图;
图4是本发明实施例的另一种相邻细胞之间通信方式的示意图;
图5是本发明实施例的细胞的结构示意图;
图6是应用细胞阵列计算***以流水线的方式计算Monte Carlo积分的示意图;
图7是本发明实施例的细胞阵列中进行细胞间通信的细胞的结构示意图;
图8是本发明实施例的细胞阵列中细胞间通信的路径选择的示意图;
图9是本发明实施例的专职输出细胞的实施过程示意图。
具体实施方式
现有技术的计算机架构由于CPU与内存、存储之间存在通信瓶颈,从而影响计算机整体性能的提升,并使费效比较差。
本申请发明人经过研究后考虑,若是把内存、存储、计算三个功能集成到一个芯片上来,形成相对简单但兼具独立计算和存储功能的单元,并使大量此类单元之间形成密集的通讯网络,以此实现数据广播/群发功能和能够大规模平行传输数据的内部网络,便能开发出一种与人脑存在相似之处的计算架构,这相当于把大量的微型计算机做在一个芯片上。
为此,本发明技术方案提供一种与人脑结构相似的计算架构(本发明技术方案中将其称为“细胞阵列计算***”),该计算架构由众多结构相对简单,兼具存储和计算功能,又有着密集网络连接的单元(本发明技术方案中将其称为“细胞”)组成。这种新计算架构将在大型计算、大数据处理、人工智能等领域中得到广泛的应用。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细的说明。
如图2所示,本发明实施例提供的细胞阵列计算***包括:主控CPU、细胞阵列和细胞阵列总线;所述细胞阵列是所述细胞阵列计算***中的主体,它是由一个以上兼具计算和存储功能的细胞组成的二维阵列,其中每一个细胞包括微处理器(MPU)和非易失随机存储器(图2中以MRAM为例);所述非易失随机存储器用于所述微处理器计算时所涉及数据的随机存取,还用于存储软件的指令代码和需要永久保存的数据;每一个细胞储存各自在所述细胞阵列中的位置作为ID以供细胞中的软件或硬件读取;所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行通信;所述细胞阵列中的相邻细胞之间有通信接口,能相互发送数据。
需要说明的是,在本实施例中,所述非易失随机存储器是以MRAM为例进行说明。在其他实施例中,随着非易失随机存储技术的进一步发展与成熟,所述非易失随机存储器也可以采用另外几种有潜力的技术实现,例如:相变随机存储器(PCRAM,Phase ChangeRandom Access Memory)、阻变式随机存储器(Resistive Random Access Memory)、铁电随机存储器(FeRAM,Ferroelectric Random Access Memory)、铁电动态随机存储器(FEDRAM,Ferroelectric Dynamic Random Access Memory)等等。
MRAM是一种新的内存和存储技术,可以像SRAM/DRAM一样快速随机读写,并且比DRAM快;还可以像闪存一样在断电后永久保留数据,并且不像NAND闪存,MRAM可以不限次地擦写,使用寿命较长。此外,MRAM的经济性想当地好,单位容量占用的硅片面积比SRAM(通常作为CPU的缓存)有很大的优势,有望接近DRAM的水平。它的性能也相当好,读写时延接近最好的SRAM,功耗则在各种内存和存储技术最好。而且MRAM不像DRAM以及Flash那样与标准CMOS半导体工艺不兼容,MRAM可以和逻辑电路集成到一个芯片中。通过采用MRAM技术,就可以把内存、存储、计算三个功能集成到一个芯片上来,使所述细胞阵列计算***的实现便能成为可能。
本实施例中,所述微处理器具有通常CPU的功能,还可以根据具体的应用场景添加浮点计算处理器、图像处理器等单元,因此,所述微处理器中可以集成有浮点计算处理器和图像处理器中的至少一种。
在实际实施时,所述主控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,如ARM Cotex M0,只有5万个左右的MOS管,即使适度增加FPU功能,也比顶级CPU的上亿个MOS管小得多,提升CPU性能带来的面积(成本)增加是不成比例的。把一个大CPU用许多小CPU替换,在总成本一样的情况下,总计算能力一定提高很多倍。然而传统计算机架构受制于通信瓶颈,使用大量CPU内核带来的实际性能提升非常有限。
而本发明技术方案提供的细胞阵列计算***通过数据广播/群发和内部网络,解决了通信瓶颈的问题,从而提升计算***的整体性能,并能使费效比较佳,对此将在后续的应用实例中更清楚地看到这一点。
初步的研究表明,如果使用类似于Cortex M0的MPU,配合32KB的内存,组成一个细胞。使用40纳米的工艺,可以把3000个这样的细胞做在一个芯片上,这是非常强大的计算能力。进一步的研究表明,使用这种方法,可以在同样的硅片面积上超越当代顶级CPU的计算能力(一般用每秒浮点运算次数(FLOPS,floating-point operations per second)测量)。由于本发明技术方案的细胞阵列计算***不再面临与内存接口的瓶颈,在解决很多实际问题中,表现的会更好。
基于上述细胞阵列计算***,本发明实施例还提供一种上述细胞阵列计算***中的通信方法,包括:主控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对于该细胞的非易失随机存储器的读写操作完成之后才能进行。
所述细胞阵列计算***中的通信方法的具体实施也可以参考上述细胞阵列计算***的实施,此处不再赘述。
此外,本发明实施例还提供一种应用上述细胞阵列计算***计算Monte Carlo积分的方法。Monte Carlo积分是对随机数的求和,是在科学和工程常用到的大计算,其原理相对简单,计算过程参考如下公式。
下面将以对于这个问题的解决方法进一步展示细胞阵列计算***的优越性。Monte Carlo积分的计算非常适合于上述细胞阵列计算***,具体执行步骤如下:
所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞,把被积函数F()对应的程序广播到所选择的每一个细胞的相对地址段;
所述主控CPU广播指令,使所选择细胞的微处理器从所述相对地址段开始执行被积函数F()对应的程序;
每个细胞完成积分运算后,将总和存储于约定的地址,供所述主控CPU读取后进行总求和。
本实施例中,所述被积函数F()对应的程序在开始执行时,其自带的随机数发生器读取细胞的ID作为种子,如此能够保证每个细胞产生的随机数都是不同的。
在实际实施时,几千个细胞同时开始运算,强大的运算能力完全释放,不再受到现有技术中通信瓶颈的制约,从而能更高效地完成Monte Carlo积分的计算。
在实际实施时,如果被积函数F()非常复杂,一个细胞的内存装不下,还可以通过流水线的方式解决。因此,本实施例还提供另一种应用上述细胞阵列计算***计算MonteCarlo积分的方法,包括:
所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞;
所述主控CPU广播一个下载程序到所选择的每一个细胞的同一段相对地址中,并广播指令使所选择细胞的微处理器从所述相对地址开始执行所述下载程序;所述下载程序将等待下一步的输入;
将被积函数对应的程序拆分成两个或两个以上的子程序,所述主控CPU广播各个子程序到所选择细胞的微处理器中;
运行所述下载程序的微处理器,根据各自所在细胞的ID选择其中一个子程序储存,使各个子程序被按序部署在依次相邻的一组细胞中;
所述主控CPU广播指令,使每一组细胞的微处理器依次执行所述被积函数对应的程序被拆分后的子程序,前一级的中间结果输送到下一级做输入;
每一组细胞完成积分运算后,将总和存储于约定的地址,供所述主控CPU读取后进行总求和。
举例来说,如图6所示,比如可以把被积函数F()拆分成f1、f2、f3三个部分(三个子程序),部署在相邻的细胞中,前一级的中间结果输送到下一级做输入。
具体地,当主控CPU广播f1、f2、f3到每一个MPU(注:不是发到内存中,是发给MPU),运行下载程序的MPU,根据自己ID在直角坐标系x轴方向的坐标x(例如以x/3的余数)选择其中一个子程序储存。这样,通过两个阶段的广播,三个子程序被按照所希望的规则被部署到了所有参与计算的细胞中。
另外,由于所述被积函数F()对应程序的执行实际上是从第一个子程序开始执行的,那么在拆分后的第一个子程序开始执行时,仍然是以其自带的随机数发生器读取细胞的ID作为种子,保证每个细胞产生的随机数都是不同的。
和传统计算机架构相比,所述细胞阵列计算***的广播/群发功能和能够大规模平行传输数据的内部网络的优势在这里体现出来。如果用传统的多核CPU架构计算这个问题,当每个CPU自带的缓存不够时,所有的CPU都需要从和内存的接口中读取被积函数F()的代码,形成瓶颈。
本实施例中,对于细胞阵列的内部网络的实施,不但可以发送数据到相邻细胞,而且还把它扩展到可以从一个细胞发送到任何一个细胞,即能够实现细胞阵列中的细胞间通信。
具体地,所述细胞阵列计算***的细胞阵列中的任意两个细胞之间能在不依靠主控CPU的情况下进行通信,参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞,所述起点细胞为向所述终点细胞发出数据的细胞,所述终点细胞为最终接收所述起点细胞所发数据的细胞,所述中转细胞为沿细胞间通信路径依次相邻且通过所述通信接口中转所述起点细胞所发数据的细胞,所述细胞间通信路径是由所述起点细胞、中转细胞和终点细胞所构成的数据收发路径。
通过细胞阵列中相邻细胞之间的通信接口,实现相邻细胞之间对于数据的多次中转,使细胞阵列中的任意两个细胞之间不依靠主控CPU便能进行通信,提高了细胞间通信的效率,也降低了主控CPU的处理负担,从而能进一步提升计算***的整体性能。
需要说明的是,所述起点细胞、终点细胞和中转细胞均是相对于某一次细胞间通信过程而言的相对概念,因为某个起点细胞完全也可能作为其他细胞间通信过程中的中转细胞或终点细胞,某个终点细胞也可能作为其他细胞间通信过程中的中转细胞或起点细胞。
在具体实施时,所述细胞阵列中的细胞还可以包括与所述微处理器相连的网络控制器,所述网络控制器用于在细胞间通信时对发出的数据、中转的数据或者最终接收的数据进行收发控制,还用于向所述微处理器发送中断信号。本实施例中,通过在每个细胞内设置一个网络控制器,以便在不干扰MPU的情况下快速地中转数据,由此降低细胞中MPU的处理负担。在其他实施例中,也可以不设置所述网络控制器,而是由MPU实现数据的中转。
在本实施例中,“发出的数据”指的是所述起点细胞自身所发的数据;“中转的数据”指的是所述中转细胞中转所述起点细胞所发出的数据,该数据并非由本细胞自身所需要发出的;“最终接收的数据”指的是终点细胞所接收的数据,该数据在经过多次中转之后已到达目的地,将不再进行中转。“发出的数据”、“中转的数据”和“最终接收的数据”,就内容而言可能为相同的数据,只不过属于不同通信阶段的不同称呼。
在具体实施时,所述细胞阵列中的细胞还可以包括与所述网络控制器相连的一组或一组以上先入先出队列,各组先入先出队列分别对应一个与本细胞相邻的细胞,每一组先入先出队列包括输入先入先出队列和输出先入先出队列,所述输入先入先出队列用于存储输入本细胞进行中转的数据或最终接收的数据,所述输出先入先出队列用于存储从本细胞输出的需进行中转的数据或本细胞向其他细胞发出的数据。
若在以图3所示相邻细胞之间通信方式为例的情况下,本实施例的细胞阵列中进行细胞间通信的细胞的结构如图7所示,图7中的网络控制器分别与MPU以及4组FIFO队列相连,各组FIFO队列分别与本细胞在“二维平面的上、下、左、右四个方向”相邻的细胞一一对应,具体实施时,每两个相邻细胞之间的通信通道可以共用一组相应的FIFO队列。每组FIFO队列均包含输入FIFO和输出FIFO,站在其中一个细胞的角度上而言,输入FIFO存放从其他相邻细胞输入的数据,输出FIFO存放从本细胞向其他相邻细胞输出的数据,相邻细胞的输出FIFO对于本细胞来说属于输入FIFO,本细胞的输出FIFO对于相邻细胞来说属于输入FIFO。
需要说明的是,图7所示的细胞中对应存在4组FIFO队列,若是位于矩形的细胞阵列的4个角的细胞,则该细胞仅有两个相邻细胞,此时该细胞对应2组FIFO队列,若是位于矩形的细胞阵列的4条边的细胞,则该细胞有三个相邻细胞,此时该细胞对应3组FIFO队列。
本实施例中,网络控制器还和该细胞内的MPU连接,给它发中断信号,如FIFO空、FIFO满、新到数据、数据送出等等;MPU则可以通过网络控制器发出数据,发出的数据通常会先放入相应的一个输出FIFO队列中。
需要说明的是,图7中的细胞结构仅仅示出了与进行细胞间通信相关的模块,本领域技术人员能够理解的是,图7所示的细胞结构完全可以与图5所示的细胞结构相结合。
此外,本实施例中采用FIFO队列存储输入和输出某个细胞的数据,如此能够使细胞间通信过程中的数据中转更有效率,减少MPU的处理负荷。在其他实施例中,输入和输出某个细胞的数据也可以通过寄存器实现。
本发明实施例还提供一种上述细胞阵列计算***中细胞之间的通信方法,包括:所述细胞阵列中的起点细胞将向终点细胞发出的数据,按选定的发送方向发送至与所述起点细胞相邻的细胞;当所述细胞阵列中的任一细胞接收到相邻细胞发出的数据或中转的数据时,若根据接收到的数据中所标明的所述终点细胞的ID判断出本细胞为终点细胞,则将接收到的数据存入本细胞的非易失随机存储器,或者通知本细胞的微处理器对接收的数据进行处理,否则本细胞作为中转细胞,在选定发送方向后将所述接收到的数据中转给与本细胞相邻的细胞。
在具体实施时,细胞间通信过程中涉及的每一条数据都会含有起点细胞和终点细胞的ID,任一细胞根据接收到的数据中所标明的终点细胞的ID便可以判断该数据是发给本细胞的还是需要进一步中转给其他相邻细胞的。一条数据通过相邻细胞间的连接,经过多次中转,到达终点细胞,若该终点细胞需要就起点细胞所发数据作出反馈,则可以根据起点细胞的ID将反馈数据发向起点细胞,此时该终点细胞成为新的一次细胞间通信时的起点细胞,原先的起点细胞则成为该次细胞间通信时的终点细胞。
具体实施时,在标明终点细胞的ID的同时,所述起点细胞向终点细胞发出的数据中还标明所述终点细胞中要被访问的地址或者MPU;所述将接收到的数据存入本细胞的非易失随机存储器,是所述终点细胞在识别出接收到的数据中所标明的要被访问的地址之后进行的;所述通知本细胞的MPU对接收的数据进行处理,是所述终点细胞在识别出接收到的数据中所标明的MPU之后进行的。
在实际实施时,若终点细胞在识别出接收到的数据中所标明的要被访问的地址后,则接收的数据可以被该终点细胞内的网络控制器直接写入该细胞的非易失随机存储器中的相应地址,在这种情况下,细胞可以实现“繁殖”,一个细胞可以给另外一个细胞下载程序;若终点细胞在识别出接收到的数据中所标明的MPU之后,接收的数据将交由终点细胞内的MPU处理。
在本实施例中,由于细胞阵列中的细胞还包括与MPU相连的网络控制器,因此所述起点细胞向终点细胞发出数据、所述细胞阵列中的任一细胞接收相邻细胞发出的数据或中转的数据并判断本细胞为最终细胞或是中转细胞、将接收到的数据存入本细胞的非易失随机存储器或者通知本细胞的MPU对接收的数据进行处理,均是在所述网络控制器的控制下完成的。
具体实施时,所述起点细胞向终点细胞发出的数据先由所述网络控制器输入所述输出先入先出队列,再由所述网络控制器从所述输出先入先出队列输出至与所述起点细胞相邻的细胞;若所述细胞阵列中的任一细胞接收到相邻细胞发出的数据或中转的数据,则将接收到的数据输入所述输入先入先出队列,并在判断出接收到的数据需要进行中转时再将该数据输入所述输出先入先出队列。
此外,若所述网络控制器判断出所述输入先入先出队列或输出先入先出队列为空或者已满,或接收到相邻细胞发出或中转的数据,或向相邻细胞发出数据或中转数据,则向所述微处理器发送中断信号。
在具体实施时,所述起点细胞或中转细胞可以通过如下方式选定所述发送方向:若所述起点细胞或中转细胞与所述终点细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述终点细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述终点细胞的细胞。当然,所述待选相邻细胞的数量有可能为两个,此时则选择这两个待选相邻细胞中输出数据的通信任务更少的细胞作为中转细胞。
本实施例中,所述起点细胞或中转细胞通过上述方式选定发送方向,实际上也可以认为是细胞阵列中细胞间通信的路径选择过程。可以参阅图8,图8中的每个矩形表示细胞阵列中的一个细胞,图8中示出的所有细胞为整个细胞阵列中的一部分,假设相邻细胞之间按图3所示的通信方式进行。
如果A点表示一个起点细胞,该起点细胞准备向C点所在的终点细胞发出数据,由于A点与C点之间显然是能够形成一条直线的通信路径,则A点所在的细胞将数据发向与其相邻的B点所在的细胞,同理,B点所在的细胞作为中转细胞,继续沿着A点与C点之间的直线向C点所在细胞的方向中转数据,在A点与C点之间形成的细胞间通信路径上依次相邻的细胞,将A点所在细胞发出的数据多次转发,直至传送到C点所在细胞。
如果D点表示另一个起点细胞,该起点细胞准备向G点所在的终点细胞发出数据,由于D点与G点之间显然是无法形成一条直线的通信路径,则在与D点所在细胞相邻的细胞之中,E点所在的细胞和F点所在的细胞显然更靠近G点所在的终点细胞,则这两个细胞属于D点所在细胞的待选相邻细胞,可以选择其中输出数据的通信任务更少的细胞作为中转细胞,若这两个细胞输出数据的通信任务相同,则随意选择一个细胞作为中转细胞。如图8所示,选择E点所在的细胞还是F点所在的细胞,将形成不同的细胞间通信路径。
需要说明的是,本实施例中是以图3所示的相邻细胞之间的通信方式为例对细胞间通信的路径选择进行说明的,本领域技术人员能够理解的是,若是采用图4所示的相邻细胞之间的通信方式,则可供选择的发送方向将会更多。
综上,在实际实施时,每一个发出或中转数据的细胞,其网络控制器都必须选择一个相邻的细胞作为下一站。当起点和终点在一条直线上时,合理的选择一般只有一个;其他情况下,有两个同样合理的选择,网络控制器将选择一个交通相对不忙的邻居。
如果某个输入FIFO队列有数据进入,则网络控制器将首先检查它:
如果终点是本细胞,那么:若终点是特定相对地址,由于网络控制器具有直接内存访问(DMA,Direct Memory Access)的能力,将把接收到的数据直接存入所述非易失随机存储器中的相应地址,并用中断通知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,表明本细胞为所述专职输出细胞,则将所述输出数据存入本细胞的非易失随机存储器,否则本细胞作为中转细胞,在选定发送方向后将所述输出数据中转给与本细胞相邻的细胞。
所述其他细胞将所述输出数据发送至所述专职输出细胞的过程中,所述起点细胞或中转细胞可以通过如下方式选定所述发送方向:若所述起点细胞或中转细胞与所述专职输出细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述专职输出细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述专职输出细胞的细胞。
本发明实施例的专职输出细胞的实施过程还可以参阅图9。图9示出了主控CPU、细胞阵列以及细胞阵列总线,细胞阵列内的一个个小方格简单地表示出一个个细胞,其中J点所在的细胞(即粗线框小方格表示的细胞)为专职输出细胞,图9还进一步示出了专职输出细胞的结构,如图9中虚线箭头所示,可以看到,专职输出细胞中的MRAM中设有存储其他细胞给所述主控CPU的所有输出数据的FIFO队列。
假设H点所在的细胞和I点所在的细胞需要向主控CPU提供输出数据,则可以通过细胞之间的通信方式将所述输出数据发送至J点所在的细胞,H点至J点的细胞间通信路径以及I点至J点的细胞间通信路径,请参阅图9。由于细胞间通信方式此前已有详细描述,此处不再赘述。
J点所在的细胞接收到H点所在的细胞或I点所在的细胞发出的输出数据后,则可以发送通知读取的中断信号给主控CPU,主控CPU接收到该通知读取的中断信号后,便可以通过细胞阵列总线从J点所在的细胞中读取该输出数据。
通过在细胞阵列中设置专职输出细胞,以所述专职输出细胞作为所述终点细胞接收并存储其他细胞给主控CPU的输出数据,并以中断信号的方式通知所述主控CPU读取所述输出数据,如此能够在只有少数几个细胞需要向主控CPU输出数据时提高主控CPU读取输出数据的效率。
下面再介绍一个应用上述细胞阵列计算***的实例。
语音识别可以用已知的语音库和输入的声音信号进行比对,这个比对可以是在时域比对也可以在频域比对。当需要比对的字词越来越多,比如说,考虑到不同的口音可以到数万个,如果仅依靠少数几个CPU的计算能力对于实时语音识别就显得不足了。
本发明实施例提供的细胞阵列计算***则非常适合解决此类问题。
为此,本发明实施例还提供一种应用上述细胞阵列计算***进行数据比对的方法,包括:所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞后,把比对程序广播到每个细胞的非易失随机存储器中;所述主控CPU把所选择的每个细胞负责比对的样品分别写入到各细胞的约定地址中;所述主控CPU广播指令给所选择细胞的微处理器,使各个微处理器完成初始化后等待输入待比对的数据;所述主控CPU把待比对的数据广播给所选择细胞的微处理器;所选择细胞的微处理器运行所述比对程序,对接收到的待比对的数据与本细胞负责比对的样品进行比较,若获得两者一致的比较结果,则使用上述细胞阵列计算***中的通信方法,将所述比较结果作为输出数据发送至所述专职输出细胞以供所述主控CPU读取。
具体实施时,所述待比对的数据既可以是待识别的语音数据,也可以是待识别的图像数据,还可以是其他需要进行比对的数据。
在实际实施时,每个MPU不断接受语音数据进行比对,通常情况下,几百个到几千个细胞中,只有一个或少数几个得到待比对的数据与本细胞负责比对的样品两者相一致的比较结果,这些细胞把比较结果发送到专职输出细胞,后者用中断信号通知主控CPU接收。
若所述待比对的数据具体为语音数据,则数据比对的过程可以在时域或是频域进行,如果是后者,可以先由主控CPU分段进行快速傅里叶变换(FFT,Fast FourierTransformation),再广播已转换到频域的语音数据给所选择细胞的MPU。
通过应用上述设有专职输出细胞的细胞阵列计算***进行数据比对,可以使细胞阵列中大量的细胞同时进行比对程序的运算,由此具有极强的并行处理能力,解决了现有技术中CPU和内存之间的通信瓶颈问题,使实时语音/图像识别的能力得到大大提升。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (10)
1.一种细胞阵列计算***,其特征在于,包括:主控CPU、细胞阵列和细胞阵列总线,所述细胞阵列和所述细胞阵列总线集成于一个芯片中;
所述细胞阵列是由一个以上兼具计算和存储功能的细胞组成的二维阵列,其中每一个细胞包括微处理器和非易失随机存储器;所述非易失随机存储器用于所述微处理器计算时所涉及数据的随机存取,还用于存储软件的指令代码和需要永久保存的数据;
每一个细胞储存各自在所述细胞阵列中的位置作为ID以供细胞中的软件或硬件读取;
所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行通信;
所述细胞阵列中的相邻细胞之间有通信接口,能在细胞内指令软件控制下相互发送数据;
所述细胞阵列中的任意两个细胞之间能进行通信,参与细胞间通信的细胞包含起点细胞、终点细胞和中转细胞,所述起点细胞为向所述终点细胞发出数据的细胞,所述终点细胞为最终接收所述起点细胞所发数据的细胞,所述中转细胞为沿细胞间通信路径依次相邻且通过所述通信接口中转所述起点细胞所发数据的细胞,所述细胞间通信路径是由所述起点细胞、中转细胞和终点细胞所构成的数据收发路径;
所述细胞阵列中还设有至少一个专职输出细胞,所述专职输出细胞作为所述终点细胞接收并存储其他细胞给所述主控CPU的输出数据,并以中断信号通知所述主控CPU读取所述输出数据。
2.根据权利要求1所述的细胞阵列计算***,其特征在于,所述专职输出细胞的非易失随机存储器中设有先入先出队列,其他细胞给所述主控CPU的所有输出数据存储在所述先入先出队列中。
3.根据权利要求1所述的细胞阵列计算***,其特征在于,所述细胞阵列中的细胞还包括与所述微处理器相连的网络控制器,所述网络控制器用于在细胞间通信时对发出的数据、中转的数据或者最终接收的数据进行收发控制,还用于向所述微处理器发送中断信号。
4.根据权利要求3所述的细胞阵列计算***,其特征在于,所述细胞阵列中的细胞还包括与所述网络控制器相连的一组或一组以上先入先出队列,各组先入先出队列分别对应一个与本细胞相邻的细胞,每一组先入先出队列包括输入先入先出队列和输出先入先出队列,所述输入先入先出队列用于存储输入本细胞进行中转的数据或最终接收的数据,所述输出先入先出队列用于存储从本细胞输出的需进行中转的数据或本细胞向其他细胞发出的数据。
5.根据权利要求1所述的细胞阵列计算***,其特征在于,所述主控CPU通过所述细胞阵列总线与所述细胞阵列中的每一个细胞进行的通信包括以下情况中的至少一种:
按地址读写所述细胞阵列中任一细胞的非易失随机存储器;
将数据广播到所述细胞阵列中目标区域内每一个细胞的非易失随机存储器,并写入所述目标区域内每一个细胞的非易失随机存储器中相同的相对地址;
给所述细胞阵列中任一细胞的微处理器发送指令、发送数据或读取状态;
给所述目标区域内所有细胞的微处理器广播指令。
6.根据权利要求1所述的细胞阵列计算***,其特征在于,所述细胞阵列中的细胞还包括总线控制器和细胞内部总线,所述总线控制器与所述细胞阵列总线、微处理器以及细胞内部总线相连,所述总线控制器用于识别所述主控CPU与本细胞之间进行的通信,连接所述微处理器以传递所述主控CPU发送的指令或数据、状态读取,或者通过所述细胞内部总线连接所述非易失随机存储器进行数据的读写操作。
7.根据权利要求1所述的细胞阵列计算***,其特征在于,所述非易失随机存储器为MRAM。
8.一种如权利要求1所述的细胞阵列计算***中的通信方法,其特征在于,包括:所述专职输出细胞接收并存储其他细胞给所述主控CPU的输出数据之后,向所述主控CPU发出通知读取的中断信号;
所述主控CPU在接收到所述通知读取的中断信号后,从所述专职输出细胞中读取所述输出数据;
所述其他细胞通过如下方式将所述输出数据发送至所述专职输出细胞:
所述其他细胞中的任一细胞作为起点细胞,将所述输出数据按选定的发送方向发送至相邻的细胞;
当所述细胞阵列中的任一细胞接收到相邻细胞发送的所述输出数据时,若判断出所述输出数据中所标明的终点细胞的ID与本细胞的ID一致,则将所述输出数据存入本细胞的非易失随机存储器,否则本细胞作为中转细胞,在选定发送方向后将所述输出数据中转给与本细胞相邻的细胞。
9.根据权利要求8所述的细胞阵列计算***中的通信方法,其特征在于,所述起点细胞或中转细胞通过如下方式选定所述发送方向:
若所述起点细胞或中转细胞与所述专职输出细胞之间能形成一条直线的通信路径,则所述发送方向为由所述起点细胞或中转细胞沿所述直线向所述专职输出细胞的方向,否则所述发送方向为由所述起点细胞或中转细胞向待选相邻细胞的方向,所述待选相邻细胞为与所述起点细胞或中转细胞相邻的细胞之中靠近所述专职输出细胞的细胞。
10.一种应用如权利要求1至7任一项所述的细胞阵列计算***进行数据比对的方法,其特征在于,包括:
所述主控CPU选择所述细胞阵列中全部或一个目标区域内的细胞后,把比对程序广播到每个细胞的非易失随机存储器中;
所述主控CPU把所选择的每个细胞负责比对的样品分别写入到各细胞的约定地址中;
所述主控CPU广播指令给所选择细胞的微处理器,使各个微处理器完成初始化后等待输入待比对的数据;
所述主控CPU把待比对的数据广播给所选择细胞的微处理器;
所选择细胞的微处理器运行所述比对程序,对接收到的待比对的数据与本细胞负责比对的样品进行比较,若获得两者一致的比较结果,则使用权利要求8或9所述的细胞阵列计算***中的通信方法,将所述比较结果作为输出数据发送至所述专职输出细胞以供所述主控CPU读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510456252.XA CN105718993B (zh) | 2015-07-29 | 2015-07-29 | 细胞阵列计算***以及其中的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510456252.XA CN105718993B (zh) | 2015-07-29 | 2015-07-29 | 细胞阵列计算***以及其中的通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718993A CN105718993A (zh) | 2016-06-29 |
CN105718993B true CN105718993B (zh) | 2019-02-19 |
Family
ID=56144850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510456252.XA Active CN105718993B (zh) | 2015-07-29 | 2015-07-29 | 细胞阵列计算***以及其中的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718993B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255775A (zh) * | 2016-12-28 | 2018-07-06 | 上海磁宇信息科技有限公司 | 用于细胞阵列计算***的细胞阵列总线广播方法 |
WO2020135385A1 (zh) * | 2018-12-29 | 2020-07-02 | 上海寒武纪信息科技有限公司 | 通用机器学习模型、模型文件的生成和解析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1341242A (zh) * | 1999-01-21 | 2002-03-20 | 索尼电脑娱乐公司 | 高速处理器***,使用该***的方法和记录介质 |
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算*** |
CN103019656A (zh) * | 2012-12-04 | 2013-04-03 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理*** |
-
2015
- 2015-07-29 CN CN201510456252.XA patent/CN105718993B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1341242A (zh) * | 1999-01-21 | 2002-03-20 | 索尼电脑娱乐公司 | 高速处理器***,使用该***的方法和记录介质 |
CN101354694A (zh) * | 2007-07-26 | 2009-01-28 | 上海红神信息技术有限公司 | 基于mpu架构的超高扩展超级计算*** |
CN103019656A (zh) * | 2012-12-04 | 2013-04-03 | 中国科学院半导体研究所 | 可动态重构的多级并行单指令多数据阵列处理*** |
Also Published As
Publication number | Publication date |
---|---|
CN105718993A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718994B (zh) | 细胞阵列计算*** | |
CN105740946B (zh) | 一种应用细胞阵列计算***实现神经网络计算的方法 | |
CN105718996B (zh) | 细胞阵列计算***以及其中的通信方法 | |
CN105608490B (zh) | 细胞阵列计算***以及其中的通信方法 | |
CN104699631B (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
TWI624791B (zh) | 用於在多緒處理單元中改善性能之技術 | |
CN103246542B (zh) | 智能缓存及智能终端 | |
CN109785905B (zh) | 一种面向基因比对算法的加速装置 | |
CN105718392B (zh) | 细胞阵列文件存储***及其文件存储设备与文件存储方法 | |
TWI603198B (zh) | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 | |
CN105718990B (zh) | 细胞阵列计算***以及其中细胞之间的通信方法 | |
CN105718991B (zh) | 细胞阵列计算*** | |
CN106326184A (zh) | 基于cpu、gpu和dsp的异构计算框架 | |
CN105718993B (zh) | 细胞阵列计算***以及其中的通信方法 | |
Loh | A register-file approach for row buffer caches in die-stacked DRAMs | |
CN105718380B (zh) | 细胞阵列计算*** | |
CN105718379B (zh) | 细胞阵列计算***以及其中细胞间群发通信方法 | |
CN106293491B (zh) | 写请求的处理方法和内存控制器 | |
CN105718992B (zh) | 细胞阵列计算*** | |
CN107291209A (zh) | 细胞阵列计算*** | |
CN105718995B (zh) | 细胞阵列计算***及其调试方法 | |
CN105719228B (zh) | 摄像***以及图像识别*** | |
CN105719227B (zh) | 一种摄像***以及图像识别*** | |
Liang et al. | Design of 16-bit fixed-point CNN coprocessor based on FPGA | |
CN107341129A (zh) | 细胞阵列计算***及其测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |