一种仿C

文档序号:33097716发布日期:2023-02-01 00:12阅读:19来源:国知局
一种仿C
一种仿c
60
分子面结构的片上网络架构
技术领域
1.本发明属于片上网络架构领域,具体涉及一种仿c
60
分子面结构的片上网络架构,更具体的说是应用于脑电信号识别的仿c
60
分子面结构的片上网络架构。


背景技术:

2.脑电信号识别一直以来都是人类积极探索与发展的一个方向,力求在计算机科学、神经科学与脑科学的帮助下,研究大脑信息表征、转换机理和识别规则,最终使机器通过熟悉人类的认知规律,直接被人脑控制。目前,脑电信号识别的相关研究已经在临床医学、认知和情感监测等领域取得了较好的成果。
3.原理上,脑电信号识别系统一般由脑电信号输入、信号数据处理及转换、特征信号的分类识别、识别结果输出等模块组成。脑电信号输入模块是通过穿戴式或植入式设备采集包含某种特性的脑电信号,附带用参数对这类特征信号加以描述。信号数据处理以及转换模块是将采集到的连续的脑电信号以模数转换等方式进行处理,便于下一步进行计算。特征信号的分类识别模块是根据源信号处理后得到的特征信号进行推理计算,确定人脑意识与特征信号之间的关系。识别结果输出模块是脑电信号识别系统的最终模块,根据识别结果控制外部装置,比如通过人脑控制机械臂上下左右移动,达到人机交互的目的。
4.目前脑电识别技术仍存在诸多限制,特征信号的分类识别作为最重要的中间环节,通常由神经网络实现,神经网络是一种模仿生物神经网络的结构和功能的数学模型,由多个节点层连接而成,包含输入层、隐藏层和输出层,不同节点层之间需要传递信息,涉及到大量的数据路由。节点层由多个节点组成,每个节点代表一种特定的函数映射,也称为一个神经元,它们通过突触连接到前一个节点层,具有相应的权重和阈值,如果某个节点的输出高于指定的阈值,那么该节点将被激活,并输出数据到网络的下一个节点层;反之则不会将数据传递到网络的下一个节点层。
5.传统的神经网络推理计算实现方式为“cpu+gpu”混合计算模式;cpu负责控制数据的调度,将数据从内存拷贝到gpu计算、计算后数据结果返回内存。然而这一传统方式需要频繁访问内存,存在效率低、功耗高、成本开销大等缺点,人们意识到要为神经网络算法设计一款专用集成电路,以此提高计算速度以及数据传输效率,神经网络加速器应运而生。
6.在神经网络加速器里,把神经网络的每一层封装为一个核心(core),核心负责进行神经网络的计算,通过路由(router)对核心间的数据进行传输。在神经网络加速器的发展过程中,大量权重参数的存取、计算结果等数据的转发对片上网络架构提出了极高的要求。一个设计合理的架构能极大的提高数据传输效率,使得神经网络的推理效率得到显著地提升。ibm团队提出了true north架构,每个核心的东南西北四个方向各有一个路由,负责接收来自其他不同方向的核心数据,同时向指定方向传递自身核心的输出数据。这种方式在本质上进行的是一个核心到另一个核心的点对点的传输,灵活性较低;距离较远的核心之间数据传输延迟大;每个核心有四个路由,资源开销也比较大。


技术实现要素:

7.针对上述问题,本发明提供了一种仿c
60
分子面结构的片上网络架构。
8.本发明的技术方案为:
9.一种仿c
60
分子面结构的片上网络架构,所述片上网络架构由12个路由和 20个核心构成,并且路由和核心通过仿c
60
分子面结构的方式连接成一个整体,具体为每个核心连接3个路由,每个路由连接5个核心,核心之间通过路由进行数据交互,每个核心的输入数据来源可以是片外或者其他核心(经路由传输),经自身计算后的结果也可以通过路由输出到片外或其他核心。
10.所述片上网络架构的数据传输方式为:每个网络都具有输入层、隐藏层、输出层;每层网络具有一个或多个核心,核心负责计算,路由传输计算结果,数据传输方向为:片外——输入层核心——路由——隐藏层核心——路由——输出层核心——路由——片外。在每个被选中的核心以及路由的寄存器中配置数据处理网络的参数,至少包括路由id、核心位置、输入核心id、目标核心id;
11.所述路由传输数据的方法为:每个路由均存储有与之相连的5个核心的配置参数,根据配置参数构建数据处理网络,同时判断路由是否启用。若是,则核心向路由请求数据传输,同时路由根据自身id与接收到的数据中包含的路由id 进行匹配,若匹配成功,则激活当前路由,否则路由停止工作。当路由激活后,路由与请求数据传输的核心建立连接,并将接收到的数据进行缓存,同时与核心完成握手,缓存满后一次性发送至目标核心,之后清空缓存,准备下一轮传输。若目标核心输入已满,则不响应握手,保留缓存内的数据,直到目标核心空闲。
12.本发明的优点主要包括:
13.1.提出新型的仿c
60
分子面结构的片上网络架构设计方法。
14.2.相较于传统2d片上网络,本发明提出的片上网络架构连通度提高了25%,最长路径需3个路由转发,数据传输效率提高了25%。
15.3.多功能路由模块支持多种路由模式,数据传输灵活性强;路由支持将1~3 个核心的输出计算结果合并转发给另一个核心,也支持将一个核心的输出计算结果转发给其他1~3个核心;因此,得益于路由模块的高效设计,本发明得以支持普通网络、合并网络、转发网络等多种网络形式。
附图说明
16.图1为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法系统框架图;
17.图2为传统2d片上网络架构图;
18.图3为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的路由内部参数配置图;
19.图4为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的路由内部模块原理图;
20.图5为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的路由与核心数据传输时序图;
21.图6为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的网络功能展
示图;
22.图7为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的工作流程示意图;
23.图8为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的具体实施例;
具体实施方式
24.下面结合附图和实施例对本发明进行详细描述。
25.图1为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法系统框架图。该片上网络架构共包含12个路由以及20个核心,每个核心以及路由都有唯一的id,用于区分不同的核心与路由,每个核心连接3个路由,每个路由连接5个核心,通过仿c
60
分子面结构的方式连接成一个整体。核心相当于神经网络的节点层,路由则代表不同节点层之间的连线。核心之间不能直接进行数据交互,需要通过路由传输数据。将该3d架构展开,最长路径为中心点处的核心与左上角核心之间的路径,需要经过3个路由的转发。
26.图2为传统2d片上网络架构图。每个核心东南西北四个方向上各有一个路由,负责接收来自其他不同方向的核心数据,同时向指定方向传递自身核心的输出数据。最长路径为中心点处的核心与左上角核心之间的路径,需要经过4个路由的转发。相比于传统2d片上网络架构,本发明将数据传输效率提高了25%。
27.在计算传统2d片上网络架构连通度时,以truenorth架构为例,将其周围四个路由合并看作一个,每个路由连接一个核心,并连接到周围4个方向上的其他路由,其连通度=(核心数*1+路由数*5)/(核心数+路由数),由于每个核心对应一个路由,故核心数等于路由数,连通度为3.0;本发明提出的片上网络架构连通度=(核心数*3+路由数*5)/(核心数+路由数),核心数为20,路由数为12,代入可得连通度为3.75,相较于传统2d片上网络架构,连通度也提高了25%,架构更加稳定。
28.图3为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的路由内部参数配置图,与路由相连的五个核心的配置信息将会存放在寄存器。当前核心选择路由进行数据传输,定义当前核心为源核心,源核心从外部或者其他核心获取数据,定义提供数据的核心为源核心的输入核心。源核心的计算结果通过路由传递给片外或其他核心进行下一步处理,定义进行下一步处理的核心为源核心的目标核心。每个核心都有4个16bits的寄存器参数,其中,寄存器1_1的[4:0] 比特位表示当前(源)核心的id,[6:5]比特位表示当前核心的输入核心数量,当前核心的输入来自片外或其他核心,可能的值为2’b00\2’b01\2’b10\2’b11,2’b00 表示当前核心的输入来自片外,[8:7]比特位表示当前核心的网络位置,2’b01表示输入层,2’b10表示输出层,2’b11表示隐藏层,2’b00无效,高7位预留,不做处理。寄存器1_2的最高位预留,[14:10]比特位表示输入核心1的id,[9:5] 比特位表示数输入核心2的id,[4:0]比特位表示输入核心3的id,若当前核心输入来自片外,则输入核心id全部为0。寄存器1_3的最高位预留,[14:10]比特位表示目标核心1的id,[9:5]比特位表示目标核心2的id,[4:0]比特位表示目标核心3的id。寄存器1_4的[15:13]比特位预留,[12:0]比特位表示当前核心的神经元数量,注意神经元数量=寄存器1_4[12:0]+1,即13’h0000~13’h1fff 表示神经元数量1~8192。
[0029]
图4为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的路由内部模块原理图,包含控制器模块1、缓存模块2、寄存器模块3。与路由相连的5个核心将其选择的路由id输入到当前路由,控制器模块1通过将当前路由 id信息4与这些输入信号进行匹配,决定是否启用当前路由。若存在核心选择的路由id与当前路由id匹配,则当前路由被启用。若不匹配,则时钟门控关闭,当前路由不工作。当源核心发起数据传输请求时,控制器模块1将源核心数据5暂存至缓存模块2并完成握手,缓存满后将数据6一次性发送至下一层网络,即目标核心,之后清空缓存,准备下一轮传输;若目标核心输入已满,则不响应握手,保留缓存模块2内的数据,直到目标核心空闲。当涉及到网络合并功能时,由于2~3个不同的核心同时作为另一个核心的输入,需要对这2~3个输入核心进行固定优先级的排序,其中输入核心1优先级最高,依次降低优先级,输入核心 3优先级最低。
[0030]
图5为路由与核心数据传输时序图,展示了从源核心到目标核心的完整数据传输过程,包含源核心向路由请求数据传递的时序7与路由向目标核心传递数据的时序8。时序7中源核心向路由请求数据传输时,需要完成握手协议,源核心先拉高写请求信号,路由根据目标核心的状态决定是否拉高写响应信号,若目标核心输入非满,则拉高写响应信号,完成握手,接收当前核心传递过来的单比特数据。反之保持写响应信号为低电平,当前核心无法完成握手,计算也会停止。当累计传输了16次单比特数据后,缓存已满,路由如时序8所示拉高数据有效信号,同时将多比特数据一次性传递给目标核心。由于在数据传输之前就已经知道目标核心输入非满,故这一数据传输过程没有握手。
[0031]
图6为本发明提出的一种仿c
60
分子面结构的片上网络架构设计方法的网络功能展示图。本发明支持在此架构上最多同时部署4个神经网络,总共20个核心,因此共有20层。4个网络需合理分配这20个核心,网络层数之和应小于等于20。路由与核心通过仿c60分子面结构的方式连接起来,核心之间不会直接通信,数据需通过路由转发,每个核心支持最多3个输入核心以及3个目标核心。基于此,设置合理的网络传输途径可以实现灵活高效的神经网络层间通信。普通网络表示4个网络之间没有关联,可单独运行,不受其余网络的影响;合并网络通过配置多个输入核心实现,将2~3个网络的输出合并转发给另一个网络;转发网络通过配置多个目标核心实现,将一个网络转发给另外1~3个网络,转发网络没有优先级排序,网络输出结果同时转发给其余网络。
[0032]
如图7所示,为本发明架构工作流程示意图,其工作步骤包括:
[0033]
步骤1,配置寄存器,与路由相连的5个核心都有图3中展示的一套参数,将其写入相应的寄存器,路由将根据这些配置信息进行下一步的工作。
[0034]
步骤2,判断路由是否被启用,关闭未被使用的路由的时钟,使能被核心选择的路由。
[0035]
步骤3,核心向路由发送数据传输请求。
[0036]
步骤4,路由响应请求,完成握手,将核心的数据缓存下来,路由中对应每个核心都有一块缓存,用于暂存该核心的传输数据。
[0037]
步骤5,根据目标核心的状态决定是否挂起当前核心,当目标核心输入已满,不能再接收数据时,挂起当前核心,路由不再为当前核心服务。由于未完成握手协议,当前核心将会暂停计算,直到目标核心空闲。当目标核心输入非满时,路由将当前核心的计算结果发送给目标核心,进行下一层的计算。
[0038]
实施例
[0039]
本例以本发明提出的片上网络架构为基础,针对基于脉冲神经网络算法的脑电信号识别系统中数据传输效率低、传输路径不灵活等问题,提出了一种具体的解决方式。具体为fpga上搭建仿c
60
分子面结构的片上网络架构,并在其上部署脉冲神经网络算法(snn),进而识别脑电信号。具体为将输入的脑电信号数据通过核心进行计算,再经路由高效地转发到其他核心或片外,并最终控制外部装置做出响应,包括:
[0040]
s1、采集脑电信号,数据经预处理后以二进制单比特数的形式输入fpga,定义输入的原始数据为每组688+16个(2个通道)单比特脉冲输入,共有10组 (即10个timestep),依次输入到核心。
[0041]
s2、配置寄存器参数,包括核心id(共20个核心)、路由id(共12个路由)、核心使用的路由id、核心在神经网络中的位置(输入层、隐藏层或输出层)、核心的数据传输路径。当前核心处理输入数据,将计算结果送往目标核心,若当前核心处于输入层,则输入来自于架构外部或别的核心(称之为输入核心)。若当前核心处于隐藏层或输出层,则输入仅来自于输入核心。此外,当前核心处于输出层时,若没有目标核心,则表示脉冲神经网络计算完成,识别结果将被路由输出至片外。
[0042]
s3、根据寄存器参数判断当前路由是否被启用,每个路由与五个核心相连,每个核心连接三个路由,核心将选择一个路由为其服务,只有核心使用的路由id 与当前路由的id匹配时,当前路由才被激活。没有被核心使用的路由将被时钟门控关闭时钟,停止工作,可以通过这一方式来降低系统功耗。
[0043]
s4、当前核心计算完毕后,向其选择的路由发起数据传输请求,路由将数据缓存下来,并完成握手,缓存满后将数据传输给下一层网络,如果缓存内的数据一直未被下一级取走,则缓存满时不再响应握手。只有完成握手后,当前核心才能开始下一轮的计算,这一方式确保了数据不会丢失。此外,当同时有多个核心需要同一个路由的服务时,根据固定优先级决定服务顺序。
[0044]
s5、路由接受当前核心的数据传输请求并缓存数据后,如果缓存已满,则将缓存内的数据一次性发送给下一级,也即目标核心;如果目标核心的输入已满,无法接收缓存内的数据,路由则不会发起传输,转而暂停为当前核心服务,直到目标核心空闲,再将缓存内的计算结果发送到目标核心。数据传输至目标核心这一过程不需要使用握手协议,因为只有目标核心空闲时才会发起传输。
[0045]
s6、网络输出分为4类,代表“上下左右”4种识别结果,脉冲神经网络输出层计算完毕后,统计输出数据,取数值最大的一类做为最终的识别结果,路由将识别结果传输至片外,外部装置根据分类结果,进行相应的操作。
[0046]
本例的具体实施方式如图8所示,展示了该架构的合并网络模式,体现了该架构多功能、可灵活重构的特点。
[0047]
该片上网络架构最终在xilinx公司的xc7z035ffg676-2 fpga上实现。通过外部装置采集的脑电信号分为两个通道,两个通道输出的数据分别对输入网络1、 2进行推理计算,最终合并转发到网络3。图中网络1是规模为“688*640*618*64”的三层脉冲神经网络,第一层核心id为7,包含640个神经元,每个神经元有 688个突触;第二层核心id为6,包含618个神经元,每个神经元有640个突触;第三层核心id为1,包含64个神经元,每个神经元有618
个突触;网络2是规模为“16*16”的单层脉冲神经网络,核心id为2,包含16个神经元,每个神经元有16个突触;网络3是规模为“80*128*4”的二层脉冲神经网络,第一层核心id为4,包含128个神经元,每个神经元有80个突触;第二层核心id为 5,包含4个神经元,每个神经元有128个突触;网络3的输入来源于网络1、2,即核心4(c4)的输入来源于核心1、2(c1、c2)。
[0048]
配置参数时,以网络1的输入层c7、网络3的输入层c4为例:c7的输入来源于外部,则没有源核心,计算结果只发给c6一个目标核心,神经元数量为 640,因此c7对应的寄存器参数为“16’h0087、16’h0000、16’h1800、16’h027f”。 c4的输入来源于c1、c2共2个源核心,计算结果发送到目标核心c5,神经元数量为128,因此c4对应的寄存器参数为“16’h00c4、16’h0440、16’h1400、 16’h007f”。
[0049]
以网络1的隐藏层c6为例:c6输入来自于c7,输出传输至c1,有618个神经元,因此c6对应的寄存器参数为“16’h01a6、16’h1c00、16’h0400、16’h025f”。同理,网络3的输出层c5,由于没有目标核心,故c5的网络识别结果将发送至片外,其对应的寄存器参数为“16’h0125、16’h1000、16’h0000、16’h0003”。
[0050]
配置完参数后,使能路由1、2(r1、r2),脑电信号通道1以688bits,10timesteps 的数据形式输入网络1;通道2以16bits,10timesteps的数据形式输入网络2。在c7、c2中进行第一层的计算,c7计算结果(640bits)通过r2发送到c6, c6的计算结果(618bits)通过r2发送到c1,当c7和c6同时需要r2的服务时,按固定优先级的顺序排列,在本实施例中,c7的优先级高于c6。下一步在网络3中,r1将c1的计算结果(64bits)、c2的计算结果(16bits)依次发送到 c4,优先级c1高于c2,r1服务c1时,挂起c2,同理,r1服务c2时,挂起 c1。然后c4将计算结果(128bits)通过r1发送给c5,作为没有目标核心的输出层,c5将最后的网络计算结果(4bits,4分类)通过r1发送至片外,外部装置统计10个timesteps里输出层c5的各比特位输出为1的次数,进而得出识别结果,做出相应操作,以此实现人机交互。
[0051]
上述说明包含了本发明中必要的技术设计,普通技术人员能够依据说明搭建网络架构,完成神经网络的部署,故不再赘述其他技术细节。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1