CN116074267B - 一种数据通信系统及SoC芯片 - Google Patents
一种数据通信系统及SoC芯片 Download PDFInfo
- Publication number
- CN116074267B CN116074267B CN202310051841.4A CN202310051841A CN116074267B CN 116074267 B CN116074267 B CN 116074267B CN 202310051841 A CN202310051841 A CN 202310051841A CN 116074267 B CN116074267 B CN 116074267B
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- internet
- fifo
- network chip
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 30
- 238000013528 artificial neural network Methods 0.000 claims abstract description 96
- 230000005540 biological transmission Effects 0.000 claims abstract description 88
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000012546 transfer Methods 0.000 claims description 12
- 238000011144 upstream manufacturing Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000001537 neural effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 23
- 238000000034 method Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 14
- 238000012360 testing method Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 210000002569 neuron Anatomy 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 3
- 239000012528 membrane Substances 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 210000003050 axon Anatomy 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000284 resting effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000036982 action potential Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012421 spiking Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/109—Integrated on microchip, e.g. switch-on-chip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3018—Input queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种数据通信系统及SoC芯片,该系统包括:数据传输模块、脉冲神经网络芯片控制器、第一互联网络以及第二互联网络;所述数据传输模块用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片控制器内,以及获取所述第二互联网络的所述脉冲神经网络芯片控制器内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址;所述脉冲神经网络芯片控制器用于传输所述第一数据至脉冲神经网络芯片,并获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据。该通信系统显著提高了数据传输速度。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种数据通信系统及SoC芯片。
背景技术
脉冲神经网络(Spiking Neuron Network)是受人脑中神经元结构的启发,从而发展出来的新一代神经网络,又被称为第三代神经网络。与传统的人工神经网络相比,脉冲神经网络的基本结构更加贴近人脑,以脉冲作为数据传递的基本形式,不仅包含空间信息,还包含传统人工神经网络所不具备的时间信息。
一种在脉冲神经网络中被广泛使用的基本模型是泄露累积发放模型(LIF),LIF神经元会接收其它神经元发射的脉冲,在自身的膜电位上进行累积,当膜电位高于某个阈值时产生动作电位,发射新的脉冲。脉冲神经网络通过对这种脉冲信息进行编码,来进行信息的传递和表达,从而实现神经网络的功能。另外,由于泄露现象的存在,当神经元没有收到新的脉冲时,膜电位会逐渐回落,直至恢复静息电位。由于脉冲神经网络的发射率较低,运算过程中多数神经元处于静息状态,与人工神经网络相比,脉冲神经网络在低功耗方面具有明显的优势。
由于脉冲神经网络的内部状态量以及损失函数不满足连续可微的性质,所以适用于主流人工神经网络的反向传播(BP)等训练方法不再适用。脉冲神经网络的构建主要有两种方式:一种是采用STDP等学习算法直接对脉冲神经网络进行训练;另一种是将成熟的人工神经网络转化为脉冲神经网络,从而避免直接训练脉冲神经网络的困难。
由北京大学自研的脉冲神经网络芯片(PAICORE 2.0)基于泄露累积发放(LIF)模型,是一种可重构、可扩展的神经形态芯片,由全数字电路实现。芯片共有三种基本数据帧,长度均为64bit,分别为配置帧、测试帧、工作帧,具体格式如下表1所示:
表1PAICORE基本数据帧格式
对于离线推断核心,配置帧用于配置芯片参数,具体包括neuron参数寄存器、状态寄存器和参数RAM;测试帧用于芯片测试模式,可点对点读出相应配置信息;工作帧用于芯片工作模式下的数据传输,工作帧中定义了一种特殊的工作帧:启动帧,用于推动全片的time step。
帧数据传递采用四相单轨握手协议。数据帧传输过程为:
(1)发送方当数据data准备好且接收方ack无效时,req置1发起握手;
(2)送出数据data,等待接收方回复ack;
(3)当发送方等到接收方ack时,req置为0;
(4)发送方发现req置为0后,拉低自身ack。
除了帧数据的传输,芯片还有5组全局信号,分别时Sync_all,Clear_all,Done,Sync_all,Busy和Initial_all:
(1)Sync_all用于全部Core的同步,Core接收到传输到本地的sync_all时,会手动唤醒Core,启动一次tick计数,激活Core进入工作状态;
(2)Clear_all用于清除路由包裹和部分参数;
(3)Done是计算同步使能条件;
(4)Busy信号为路由状态信号,表征路由正忙,片内数据包裹尚未到达目标地址;
(5)Initial_all清空Scheduler里面残留的所有脉冲,可以重置膜电平等。
目前完整的脉冲神经网络运算系统主要由三部分组成:
(1)上位机,对整个系统的数据流进行控制,负责数据的预处理、脉冲神经网络输入数据的生成以及输出数据的解析,同时挂载多种外设,与用户及环境进行交互;
(2)脉冲神经网络芯片阵列,负责脉冲神经网络的推理运算,是系统的运算核心,输入和输出均为脉冲形式;
(3)FPGA,负责系统的数据通信,将上位机与芯片阵列连接在一起,二者之间的数据通路和控制逻辑主要在FPGA上实现,将上位机的标准协议转换为芯片的特定协议。
现有方案采用一块FPGA来实现系统的数据通信功能,而数据的预处理后处理则仍然依靠上位机来实现,上位机和FPGA通信则使用PCIe协议进行通信,将其转化为AXI协议之后在通过Programmable Logic再次转化为PAICORE自有协议才传入脉冲神经网络。
现有方案存在的缺点如下:
(1)消耗逻辑资源多,资源利用率低。在FPGA内部的Programmable Logic需要多个组件,包括PCIe的IP,将PCIe转换至AXI协议的桥接IP和将AXI协议转化为PAICORE自有协议的IP;
(2)传输速度慢。上位机需要先将工作帧生成好之后通过PCIe接口协议送入Zynq-7100,然后内部再转换成AXI协议,并没有充分利用PCIe的速率,且内部由AXI协议的速率限制了最大传输速度;
(3)数据搬运必须等待完成,无法用于大数据量的传输。上位机生成的配置帧和工作帧都处理在上位机的内存中,而要通过多个桥接IP最终才能搬运至PAICORE中,同时传输速度慢导致在搬运数据的过程中,上位机无法处理其他任何事情,严重影响实时性。
发明内容
为解决现有技术的不足,本发明提出一种数据通信系统及SoC芯片。
为实现以上目的,本发明所采用的技术方案包括:
一种数据通信系统,包括:数据传输模块、脉冲神经网络芯片控制器、第一互联网络以及第二互联网络;
所述数据传输模块用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片控制器内,以及获取所述第二互联网络的所述脉冲神经网络芯片控制器内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址;
所述脉冲神经网络芯片控制器用于传输所述第一数据至脉冲神经网络芯片,并获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据;
所述第一互联网络用于接收所述存储器或所述数据传输模块的访问请求并进行数据传输,以及为所述存储器、所述数据传输模块和所述脉冲网络神经芯片控制器分配地址;
所述第二互联网络用于接收所述脉冲神经网络芯片控制器和所述数据传输模块的访问请求并进行数据传输。
进一步地,所述第一互联网络为AXI-互联网络,所述第二互联网络为AXI-Stream互联网络。
进一步地,所述数据传输模块包括第一接口模块和第二接口模块,所述第一接口模块为AXI接口,所述第二接口模块为AXI-Stream接口,所述第一接口模块用于与所述第一互联网络进行连接,所述第二接口模块用于与所述第二互联网络进行连接。
进一步地,所述数据传输模块包括第一控制通路单元和第一数据通路单元;
所述第一控制通路单元用于控制所述数据传输模块的全局数据信号;
所述第一数据通路单元用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片内,以及获取所述第二互联网络的所述脉冲神经网络芯片内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址。
进一步地,所述第一控制通路单元包括第一控制状态寄存器,所述第一控制状态寄存器用于配置所述数据传输模块的通道描述符,所述第一控制状态寄存器包括第一配置寄存器和第一中断寄存器。
进一步地,所述脉冲神经网络芯片控制器包括第二控制通路单元和第二数据通路单元;
所述第二控制通路单元用于控制所述脉冲神经网络芯片的全局数据信号;
所述第二数据通路单元包括下行子模块和上行子模块;所述下行子模块用于传输所述第一数据至所述脉冲神经网络芯片,所述上行子模块用于获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据。
进一步地,所述第二控制通路单元包括IO Controller节点和第二控制状态寄存器;所述IO Controller节点用于控制所述脉冲神经网络芯片的全局数据信号,所述第二控制状态寄存器用于配置所述脉冲神经网络芯片控制器的通道描述符,所述第二控制状态寄存器包括第二配置寄存器和第二中断寄存器。
进一步地,所述下行子模块包括:下行仲裁器状态机、下行FIFO、下行FIFO读出状态机以及Sender节点;所述下行仲裁器状态机用于获取所述第二互联网络的下行数据帧并传输至所述下行FIFO,所述下行FIFO用于暂存所述下行数据帧,所述下行FIFO读出状态机用于获取所述下行FIFO的下行数据帧并经过协议转换通过所述Sender节点发送至所述脉冲神经网络芯片;
所述上行子模块包括:上行FIFO读模块、上行FIFO、上行FIFO写入状态机以及Receiver节点;所述上行FIFO写入状态机通过所述Receiver节点获取所述脉冲神经网络芯片输出的数据经过协议转换形成上行数据帧并写入所述上行FIFO,所述上行FIFO用于暂存所述上行数据帧,所述上行FIFO读模块用于从所述上行FIFO获取所述上行数据帧并送入所述第二互联网络。
进一步地,所述上行子模块和所述下行子模块分别设置有两组通路。
本发明还涉及一种SoC芯片,包括:集成中央处理器CPU、片内总线、脉冲神经网络芯片,以及如上所述的数据通信系统。
本发明的有益效果为:
本发明所述的数据通信系统及SoC芯片,相较现有技术,具有以下优点:
(1)本发明采用SoC的方式直接编写AXI接口与脉冲神经网络芯片进行通信,提高了集成度与资源利用率,现有技术中,PCIe在FPGA上所使用的LUT资源为22474,而本发明的AXI在FPGA上所使用的LUT资源为11568,因此本发明相较现有技术一定程度上提高了FPGA的逻辑资源的利用率;
(2)本发明针对现有的通过PCIe的片外串行数据传输改进为片内并行数据传输,并通过实验进行比对,PCIe将红外96pooling demo的帧全部传输完毕,需要使用0.042s(100MHz),而则AXI传输同样的帧理论上只需要0.8ms(100MHz),因此在本发明相较现有技术一定程度上提高了数据传输速度;
(3)本发明针对该通信系统设计了新的数据传输模块DMA,其接口也是AXI接口,DMA负责实现内存系统和脉冲神经网络芯片控制器之间的数据传递,DMA传输结束之后会发起中断通知主机,解决了CPU在数据传输过程中必须等待的问题。
附图说明
图1为本发明实施例提供的数据通信系统结构示意图。
图2为本发明实施例提供的DMA结构示意图。
图3为本发明实施例提供的PAICORE 2.0控制器结构示意图。
图4为本发明实施例提供的下行子模块结构示意图。
图5为本发明实施例提供的上行子模块结构示意图。
图6为本发明实施例提供的SoC芯片结构示意图。
图7为本发明实施例提供的传输配置帧和输入帧时数据流向示意图。
图8为本发明实施例提供的传输输出帧时数据流向示意图。
图9为本发明实施例提供的下行仲裁状态机的状态转移示意图。
图10为本发明实施例提供的下行FIFO读出状态机的状态转移示意图。
图11为本发明实施例提供的上行FIFO写入状态机的状态转移示意图。
图12为本发明实施例提供的SYNC状态机的状态转移示意图。
图13为本发明实施例提供的SNN状态机的状态转移示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明一方面涉及一种数据通信系统,其结构如图1所示,包括:数据传输模块、脉冲神经网络芯片控制器、第一互联网络以及第二互联网络;
所述数据传输模块用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片控制器内,以及获取所述第二互联网络的所述脉冲神经网络芯片控制器内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址;
所述脉冲神经网络芯片控制器用于传输所述第一数据至脉冲神经网络芯片,并获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据;
所述第一互联网络用于接收所述存储器或所述数据传输模块的访问请求并进行数据传输,以及为所述存储器、所述数据传输模块和所述脉冲网络神经芯片控制器分配地址;
所述第二互联网络用于接收所述脉冲神经网络芯片控制器和所述数据传输模块的访问请求并进行数据传输。
本实施例中,所述第一互联网络为AXI-互联网络,用于SoC系统,可连接DDR、CPU等各种组件,所述第一互联网络是该数据通信系统的主要互联网络,所述第一互联网络至少拥有2个AXI-Slave接口,多个AXI-Master接口;其中,AXI-Slave接口用于接受CPU或DMA的主动访问请求,所述第一互联网络需要为所述存储器、所述数据传输模块和所述脉冲网络神经芯片控制器分配地址。
所述第二互联网络为AXI-Stream互联网络,用于接收所述脉冲神经网络芯片控制器和所述数据传输模块的访问请求并实现数据传输。
相对应的,所述数据传输模块包括第一接口模块和第二接口模块,所述第一接口模块为AXI接口,所述第二接口模块为AXI-Stream接口,所述第一接口模块用于与所述第一互联网络进行连接,所述第二接口模块用于与所述第二互联网络进行连接。
本实施例中,所述数据传输模块包括第一控制通路单元和第一数据通路单元;
所述第一控制通路单元用于控制所述数据传输模块的全局数据信号;
所述第一数据通路单元用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片内,以及获取所述第二互联网络的所述脉冲神经网络芯片内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址。
其中,所述第一控制通路单元包括第一控制状态寄存器,所述第一控制状态寄存器用于配置所述数据传输模块的通道描述符,所述第一控制状态寄存器包括第一配置寄存器和第一中断寄存器。
所述数据传输模块为直接存储器访问(Direct Memory Access,简称DMA)。示例性的,如图2所示,为本实施例中DMA的整体框架,为了节省逻辑资源,本实施例采用将AXI-Slave接口内部通过AXI Adapter转化为AXI-Lite接口后,再访问AXI-Lite Register,AXI-Lite Register为一个寄存器模块,内部包括用于控制DMA的所有配置寄存器与中断寄存器,这些寄存器组成DMA描述符,提供给DMA数据通路进行数据传输;DMA描述符包括Read描述符和Write描述符,其中,Read描述符用于描述DMA数据通路通过AXI Master接口将第一互联网络的某个地址的数据读到DMA,并通过AXI-Stream Master接口搬运到第二互联网络的某个地址;Write描述符用于描述DMA数据通路将第二互联网络某个地址的数据通过AXI-Stream Slave接口搬运到DMA并通过AXI Master接口写到第一互联网络的某个地址。DMA内存映射关系如下表2所示,其中,配置寄存器包括4个域,分别为read通道使能、write通道使能、write错误放弃使能和中断使能。
表2DMA内存映射表
DMA中,中断寄存器优选为4个,4个中断寄存器做线或给出一条中断通知CPU,CPU在处理完对应的中断后将寄存器位清零。
(1)read(write)error中断,当DMA运行出错时,将通过该中断通知CPU。
(2)read(write)done中断,当DMA数据搬运结束之后,将通过该中断通知CPU。
本实施例中,所述脉冲神经网络芯片控制器包括第二控制通路单元和第二数据通路单元;
所述第二控制通路单元用于控制所述脉冲神经网络芯片的全局数据信号;
所述第二数据通路单元包括下行子模块和上行子模块;所述下行子模块用于传输所述第一数据至所述脉冲神经网络芯片,所述上行子模块用于获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据。
其中,所述第二控制通路单元包括IO Controller节点和第二控制状态寄存器;所述IO Controller节点用于控制所述脉冲神经网络芯片的全局数据信号,所述第二控制状态寄存器用于配置所述脉冲神经网络芯片控制器的通道描述符,所述第二控制状态寄存器包括第二配置寄存器和第二中断寄存器。
其中,所述下行子模块包括:下行仲裁器状态机、下行FIFO、下行FIFO读出状态机以及Sender节点;所述下行仲裁器状态机用于获取所述第二互联网络的下行数据帧并传输至所述下行FIFO,所述下行FIFO用于暂存所述下行数据帧,所述下行FIFO读出状态机用于获取所述下行FIFO的下行数据帧并经过协议转换通过所述Sender节点发送至所述脉冲神经网络芯片;
所述上行子模块包括:上行FIFO读模块、上行FIFO、上行FIFO写入状态机以及Receiver节点;所述上行FIFO写入状态机通过所述Receiver节点获取所述脉冲神经网络芯片输出的数据经过协议转换形成上行数据帧并写入所述上行FIFO,所述上行FIFO用于暂存所述上行数据帧,所述上行FIFO读模块用于从所述上行FIFO获取所述上行数据帧并送入所述第二互联网络。
本实施例中,所述脉冲神经网络芯片为PAICORE 2.0,所述脉冲神经网络芯片控制器为PAICORE 2.0控制器,可以与任何AXI接口的CPU、DDR互联,搭建完整的SoC,利用SoC的完整性,从而抛弃原本主机+FPGA+PAICORE的工作模式,能直接运行操作系统,进而提高传输速率和集成逻辑利用率。
其中,所述PAICORE 2.0控制器的所要实现的功能包括以下三个方面:
(1)接收AXI-Stream传输的数据帧并发送给PAICORE 2.0芯片;
(2)给PAICORE 2.0芯片发送控制信号例如sync_all等;
(3)在特定情况下产生中断以通知CPU,例如数据帧发送完成等。
本实施例中,PAICORE 2.0控制器的整体框架如图3所示,包括PAICORE2.0控制器的控制通路和PAICORE 2.0控制器的数据通路,PAICORE 2.0控制器的数据通路用于实现上述功能(1),PAICORE 2.0控制器的控制通路用于实现上述功能(2),PAICORE 2.0控制器的数据通路和PAICORE 2.0控制器的控制通路相互协作实现上述功能(3)。
PAICORE 2.0控制器的数据通路的下行子模块负责将AXI-Stream Slave接口接收的数据通过芯片专用的异步两相单轨握手协议传输给PAICORE 2.0,上行子模块负责将PAICORE 2.0异步传输过来的数据通过AXI-Stream Master接口传输出去。由于PAICORE2.0芯片四个方向都存在多组数据IO口,因此本发明的PAICORE 2.0控制器设计了两组下行数据通道,两组上行数据通道。
配置帧和测试帧一般而言都是多帧一组,用于配置和读取芯片内的寄存器或者RAM某地址的值,因此这些帧的顺序无法打乱;而普通的输入输出数据帧一帧一组,用于激活某个地址的轴突,以及反应的某个地址的轴突电位,根据脉冲神经网络的工作原理,这些帧的顺序则无关紧要,因此本实施例中,PAICORE 2.0控制器设计了下行数据的两种传输模式,分别是配置/测试模式和工作模式,由控制状态寄存器Control决定。配置/测试模式激活1个下行通路,2个上行通路;工作模式则激活2个上行通道,2个下行通道。
如图4所示,下行子模块包括:下行仲裁器状态机、下行FIFO和下行FIFO读出状态机以及Sender节点。
其中,下行仲裁器状态机负责完成AXI-Stream Slave接口的ready valid握手,并将数据送入仲裁的下行FIFO当中,下行仲裁器状态机内部由一个有限状态机控制,其存在两个状态,分别是WRITE0状态与WRITE1状态,如图9所示。WRITE0状态下,在DOWN_FIFO_0非满的情况下tready为1,任何tvalid信号到来都会完成握手,同时在此周期将DOWN_FIFO_0的write信号拉高,将tdata数据写入下行FIFO;若DOWN_FIFO_0已满,则不会完成握手,等待下行FIFO将数据读出,重新完成握手。若工作模式处于配置模式,则不进行状态跳转;若工作模式处于工作模式,则下周期进入WIRTE1状态。WRITE1状态下的工作方式同上,对应控制DOWN_FIFO_1。
由于AXI-Stream的数据线宽度为128bits,且下行FIFO的数据位宽也为128bits,而数据帧的宽度却只有64bits,因此在奇数帧数据的传输过程中,会出现最后一个数据帧不足以填充整个下行FIFO的位宽,因此下行仲裁器状态机还会通过tkeep信号将tdata的数据做掩码操作再送入下行FIFO。若tkeep的某个比特为0,则将送入FIFO的对应字节设为0xFF。因此若送入下行FIFO的数据中,高64bits全为1,则说明该数据帧无效。下行FIFO读出状态机(FIFO Reader)负责将下行FIFO中的128bit数据项拆分成两个64bits的数据帧,并交给异步握手协议的Sender,使之发送给PAICORE 2.0。
下行FIFO读出状态机也由一个有限状态机FIFO_READER控制,其存在三个状态,分别是IDLE状态、LOW状态和HIGH状态,如图10所示。
IDLE状态为空闲状态,复位之后将处于该状态。该状态下检测到下行FIFO中存在数据并且Sender的available信号为1,则将下行FIFO的read信号拉高,下周期将读出下行FIFO的一项数据128bits,即2个数据帧,并且该状态机在下个周期进入LOW状态。
LOW状态为送出第一个数据帧的状态,将读出的2个数据帧的第1个数据帧送入Sender。当Sender获得该数据,则将available信号拉低,表明Sender与PAICORE 2.0的握手尚未完成,Sender无法接收下一个数据,状态机将一直处于LOW状态等待,直到Sender的available信号重新拉高,第1个数据已经送入PAICORE 2.0,此时将判断第2个数据帧是否全为1,即判断该数据帧是否有效,若有效则状态机下个周期将进入HIGH状态,否则将回到IDLE状态。
HIGH状态为送出第二个数据帧的状态,将之前读出的2个数据帧的第二个数据帧送入Sender。同样Sender的available信号会拉低,状态机将一直处于HIGH状态,直至数据送入PAICORE 2.0,available信号重新拉高,此时将会判断下行FIFO是否为空,如果不为空,则将下行FIFO的read信号拉高,状态机下周期进入LOW状态,循环往复;若为空,则下行FIFO中的数据帧全部发送完毕,状态机下周期回到IDLE状态。Sender节点负责将下行FIFO读出状态机传递过来的数据通过异步握手协议送入PAICORE 2.0。
Sender节点与下行FIFO读出状态机进行交互的信号包括一帧数据、valid以及available;其中valid表示该帧数据有效,需要送入PAICORE 2.0;available则表示Sender已经准备好接收一帧数据。Sender与PAICORE 2.0进行交互的方式为异步握手协议,valid信号来临之后,available信号将会拉低,Request则进行反转,同时该帧数据会在Sender内被寄存输出给PAICORE 2.0,直到Acknowledge信号随后进行反转,则说明数据已经传输完毕,available信号将会拉高,可以接收下一帧数据。
如图5所示,上行子模块包括:上行FIFO读模块、上行FIFO和上行FIFO写入状态机以及Receiver节点。
其中,Receiver节点负责将PAICORE 2.0的数据通过异步握手协议接收并发送给上行FIFO写入状态机(uFIFO)。Receiver节点与uFIFO进行交互的信号包括一帧数据、valid以及available。其中available则表示uFIFO已经准备接收一帧数据,valid表示Receiver刚刚接收一帧数据,且需要被uFIFO接收。该模块与PAICORE 2.0进行交互的方式同样是上述的异步握手协议,在接收到request的反转之后,将PAICORE 2.0传递过来的数据寄存,如果此时available信号为1,则产生Valid信号将该数据传递给uFIFO,并在之后反转Acknowledge信号,通知PAICORE 2.0该帧数据已经传输完毕。
uFIFO用于接收Receiver传递的数据,以及生成available信号。uFIFO内部存在一个位宽为64bits的同步FIFO,若该FIFO满了,则available信号为0,反之为1。uFIFO在内部FIFO非空的情况下,将FIFO数据取出,产生一根valid信号交给上行FIFO(Up_FIFO)用于仲裁,表示uFIFO内存在数据帧,若Up_FIFO不接受该数据,则valid信号将一直拉高;若接收了,则再次取出内部同步uFIFO下一个数据之后继续拉高valid交给Up_FIFO。
Up_FIFO负责将两个uFIFO的数据仲裁并合并存入其内部的一个位宽为128bits的上行FIFO,该过程由一个上行FIFO写入状态机FIFO_WRITE()控制,其同样存在三个状态,分别是IDLE状态、LOW状态和HIGH状态,如图11所示。
IDLE状态为空闲状态,也用于从两个uFIFO接收第一个数据帧,从复位之后将处于该状态。该状态会在上行FIFO未满的情况下,从valid信号为1的uFIFO中仲裁出一个,向其发送available信号,表明接收该数据帧,然后状态机在下个周期将进入HIGH状态。仲裁的方式为轮询仲裁,轮流从两个uFIFO中选出valid为1的接收其数据。
HIGH状态为从两个uFIFO中接收第二个数据帧的状态。若该状态下没有valid信号为1的uFIFO,则状态机一直处于该状态等待。若等至有一个uFIFO中存在数据帧,其接受其数据帧,并且与之前状态中接收的数据帧进行拼接,最终送入上行FIFO当中,并且状态机下周期进入LOW状态。若等至IO Controller节点通知PAICORE 2.0已经完成所有计算,产生了finished信号,则说明输出帧个数为奇数帧,需要将0xFFFFFFFF与之前状态中接收的数据帧进行拼接,最终送入上行FIFO当中,并且状态机下周期将回到IDLE状态。
LOW状态为从两个uFIFO中接收第一个数据帧的状态。若检测到上行FIFO满或者IOController的finished信号,则状态机下周期将回到IDLE状态。若该状态下没有valid信号为1的uFIFO,则状态机一直处于该状态等待。若等至有一个uFIFO中存在数据帧,接受其数据帧,并且状态机下周期会回到HIGH状态准备接收第二个数据帧。上行FIFO读模块(FIFO_Reader)负责将上行FIFO中的数据通过AXI-Stream的接口传输出去,FIFO_Reader由控制状态寄存器模块传递的write_start信号控制,在该信号来临之后,将上行FIFO的数据一一读出,并设置成AXI-Stream的tdata信号,然后产生tvalid将其传递出去。若最后一个数据高位全为1,则说明只有奇数帧输出帧,此时将对应的tkeep比特设置成0。在开始传递数据之初,将tlast拉低,在传递最后一个数据之后,将tlast信号拉高。
PAICORE 2.0控制通路包括IO Controller节点和控制状态寄存器,IOController节点用于控制PAICORE 2.0,监听芯片的busy done等状态信号,并产生sync_all等芯片所需的控制信号;控制状态寄存器,主要负责控制本控制器的行为与监测本控制器的状态,例如控制数据传输,监测数据FIFO数量。同时控制状态寄存器也负责处理IOController与Data Path的传输过来的单脉冲中断,这些中断信号会被对应的中断寄存器所寄存,从而产生电平中断信号通知CPU,CPU也可以将其清零表示中断处理完成。
控制状态寄存器是用于控制PAICORE 2.0控制器的一个组件,为了节省逻辑资源,这些寄存器使用AXI-Lite的协议接口进行访问,该接口由AXI Adapter将外接的AXI-Slave接口转换而来。所有控制状态寄存器的内存映射表如下表3所示。其中,Offset是该寄存器相对于本控制器基地址的偏移量,Width为寄存器的宽度,Attr为寄存器的读写权限。
表3PAICORE 2.0控制器内存映射表
TimeStep寄存器:表示将要部署到PAICORE 2.0芯片的应用的时间步寄存器,该值将控制IO Controller模块产生对应次数的sync_all信号并将其传给PAICORE 2.0。
Control寄存器:第0位用于控制数据传输模块的传输模式,如果为0,则是配置模式,只有单路进行数据传输;如果为1,则是工作模式,两路同时进行数据传输。第1位用于使该控制器所有中断,如果为0,则该控制器不会产生任何形式的中断;如果为1,则可以产生三种中断,三种中断会被线或成一根电平中断通知给CPU。
Up_fifo_len寄存器:最高位表示上行FIFO的最后一项数据是否完整,如果为0,表示数据完整,存在两个64bits的数据帧;如果为1,表示数据不完整,值存在一个64bits的数据帧。其他位则表示上行FIFO目前含有的项个数。
Clear_all/Initial_all寄存器:向该寄存器写1将会控制IO Controller产生一个周期的clear_all/initial_all信号并将其传给PAICORE 2.0。
Write_start寄存器:向该寄存器写1将会控制数据传输模块将上行FIFO中的数据通过AXI-Stream接口传输出去,AXI-Stream接口中的id、dest和user信号则分别由axis_tid、axis_tdest和axi_tuser寄存器决定。
Compute_start寄存器:向该寄存器写1将会控制IO Controller开始产生。
TimeStep次数的sync_all信号。
Tx_done寄存器:中断寄存器,当下行数据全部传入PAICORE 2.0,该寄存器置为1。
Rx_done寄存器:中断寄存器,当上行数据全部都由AXI-Stream接口传输出去之后,该寄存器置为1。
UP_FIFO_FULL寄存器:中断寄存器,当上行FIFO满了之后,该寄存器置为1。
本实施例中,IO Controller节点用于监控PAICORE 2.0输出的busy和done信号,对PAICORE 2.0产生initial_all、clear_all和sync_all信号。其中initial_all和clear_all信号都是在其对应的控制状态寄存器写为1之后产生的一周期脉冲信号。而sync_all则根据busy、done、timestep的变化以及两个状态机来负责控制产生。
由于数据包可能正在两个路由节点之间传输,此时它既不属于源路由节点,又不属于目的路由节点,在顶层看来各级路由是没有数据包缓存的,因此busy信号在有些情况下会出现假的低电平,过一段时间又会变为高电平。为了解决这个问题,IO Controller节点使用了三个计数器,busy_before_computeing,busy_after_computing,Busy_in_computing,分别用于PAICORE 2.0计算前、计算中、计算后记录busy信号连续为0的周期数,一旦在记录时出现busy为1的情况,则将重新计数,如果其超过阈值,才认为busy真正变为了0,从而避免假电平现象。IO Controller节点产生的所有的sync_all信号都是在busy_in_computing计数器超过阈值的时候产生。IO Controller节点的三个计数阈值都设置为10个周期。
IO Controller节点中的两个状态机,分别为SNN状态机和SYNC状态机。SNN状态机表明SNN所处的状态,SYNC状态机是busy_in_computing计数器的控制状态机。
SYNC状态机存在三个状态,分别是IDLE状态、BUSY_CNT状态和FINISH状态,如图12所示。
IDLE状态为空闲状态,表明还没有开始进行busy信号的计数。PAICORE2.0的done信号在其还没有开始计算的时候一直是拉高的状态,因此只有从第二个sync_all信号开始,才可以使用done信号作为开始busy_in_computing计数器开始计数的信号。因此,在以下两种情况时,SYNC状态机在下个周期将会进入BUSY_CNT状态:
(1)检测到compute_start信号的下降沿,即第一个sync_all;
(2)检测到done信号,且SNN状态机处于COMPUTING状态。BUSY_CNT状态为计数状态,busy_in_computing计数器开始计数,当计数到10时,产生一个sync_all信号发送给PAICORE 2.0,并且SYNC状态机在下个周期进入到FINISH状态。FINISH状态为完成状态,当done信号重新拉低了,则说明PAICORE 2.0进入下一个时间步的计算了,此时SYNC状态机可以重新回到IDLE状态,等待下一个时间步计算完成,也就是等待下一个done信号的产生。
SNN状态机存在四个状态,分别是IDLE状态、FIRST_SYNC状态、COMPUTING状态和TRANSING状态,如图13所示。
IDLE状态为空闲状态,表示SNN没有开始工作。在compute_start信号为1之后,busy_before_computing计数器开始计数busy为0的周期计数,如果超过阈值,则认为数据路由已经完成,配置帧和输入帧已经全部送入SNN。因此SNN状态机在下一个周期将进入FIRST_SYNC状态。
FIRST_SYNC状态为专门触发busy_in_computing第一次开始计数的一个状态,该状态会将compute_start清零,从而使得SYNC状态机开始从IDLE状态变为BUSY_CNT状态。在此状态中,如果检测到done信号拉低了,则说明PAICORE 2.0真正开始进行了计算,SNN状态机在下周期将进入COMPUTING状态。
COMPUTING状态为PAICORE 2.0开始进行计算的状态,该状态维护一个timestep_now计数器,用于表明现在正在计算的时间步。在此状态每次遇到done信号拉高一次,都说明该时间步的计算全部完成,该计时器加一。当该计数器等于控制状态寄存器中的timeStep寄存器的值的时候,说明所有时间步都计算完成,SNN状态机下周期进入TRANSING状态。
TRANSING状态为等待PAICORE 2.0计算数据全部送出的状态,该状态下busy_after_computing计数器开始计数,在超过阈值,则认为数据已经全部送出PAICORE 2.0,产生finished信号,SNN状态机下周期回到IDLE状态。
在IO Controller节点产生finished信号之后,数据通路会根据该信号判断上行uFIFO是否都为空,如果为空,说明上行uFIFO的数据已全部到达上行FIFO,在此时将RX_DONE中断寄存器设为1。
当数据通路中AXI-Stream Slave接口的tlast为高之后,说明数据已经全部通过AXI-Stream接口传入到了下行FIFO当中,如果之后下行FIFO全部为空了,则表明数据全部送入了PAICORE 2.0,在此时将TX_DONE中断寄存器设为1。
当数据通路中上行FIFO满了,则不允许再接受更多PAICORE 2.0传回的数据,此时需要通知CPU让其将数据通过DMA搬运回内存,因此UP_FIFO_FULL中断寄存器在此时会被设为1。
上述三个中断寄存器的最低位线成一条电平中断,向外引出以作为该PAICORE2.0控制器的中断信号。
在完成PAICORE 2.0控制器的数字前端设计后,采用OpenC906仓库配套的SoC集成仿真参考环境对PAICORE 2.0控制器的功能进行验证,验证结果证明该PAICORE 2.0控制器能够实现上述功能。
本发明所述的数据通信系统,相较现有技术,具有以下优点:
(1)本发明采用SoC的方式直接编写AXI接口与脉冲神经网络芯片进行通信,提高了集成度与资源利用率,现有技术中,PCIe在FPGA上所使用的LUT资源为22474,而本发明的AXI在FPGA上所使用的LUT资源为11568,因此本发明相较现有技术一定程度上提高了FPGA的逻辑资源的利用率;
(2)本发明针对现有的通过PCIe的片外串行数据传输改进为片内并行数据传输,并通过实验进行比对,PCIe将红外96pooling demo的帧全部传输完毕,需要使用0.042s(100MHz),而则AXI传输同样的帧理论上只需要0.8ms(100MHz),因此在一定程度上提高了数据传输速度;
(3)本发明针对该通信系统设计了新的数据传输模块DMA,其接口也是AXI接口,DMA负责实现内存系统和脉冲神经网络芯片控制器之间的数据传递,DMA传输结束之后会发起中断通知主机,解决了CPU在数据传输过程中必须等待的问题。
本发明另一方面还涉及一种SoC芯片,包括:集成中央处理器CPU、片内总线、脉冲神经网络芯片,以及上述实施例所述的数据通信系统,所述SoC芯片的结构示意图如图6所示。
在使用上述系统进行数据通信时,可以参考如下的具体的实施例进行。
如图7和图8所示,本实施例采用OpenC910、Xilinx DDR Controller、PAICORE 2.0以及本发明的数据通信系统组成一个完整的SoC系统,以下内容则是该实施例如何工作的具体流程。
首先,CPU根据脉冲神经网络的模型以及PAICORE 2.0工具链生成配置帧并放入第一互联网络的某个地址A(地址A为DDR的地址),然后将其送入PAICORE 2.0进行配置,传输配置帧时数据流向示意图如7所示,具体传输方式如下:
1.CPU写PAICORE 2.0控制器的寄存器clear_all和initial_all,触发初始化PAICORE 2.0;
2.CPU写PAICORE 2.0控制器的寄存器control的传输模式域为0,表示PAICORE2.0控制器目前处于配置模式,只拥有1个下行通路。写该寄存器的中断使能位1,表示开启PAICORE 2.0控制器的中断;
3.CPU写DMA的control寄存器的read_enable和intr_enable开启read通道和中断;
4.CPU写DMA的寄存器,设置好read描述符;
a.read_desc_dest为PAICORE 2.0控制器的AXI-Stream地址;
b.read_desc_addr为地址A;
c.read_desc_len为送入数据的长度;
5.CPU写DMA的read_desc_valid寄存器,开始传输数据;
6.在数据传输完毕之后,会触发DMA的read_complete中断,CPU得知数据传输到了PAICORE 2.0控制器;
7.PAICORE 2.0控制器接受到DMA传输到的数据的同时,往PAICORE 2.0下行配置帧,当下行FIFO数据全为空后,触发PAICORE 2.0控制器的tx_done中断,CPU得知PAICORE2.0配置完毕。
PAICORE 2.0配置完成之后,开始产生工作帧。一般而言,工作帧同样需要CPU运行PAICORE 2.0的工具链,对存储器的输入数据进行处理,生成工作帧;输入数据在本实施例中可以通过以太网传输获得,生成完一次工作帧后,将其放入第一互联网络的某个地址B(地址B为DDR的另一个地址),同时开辟一个地址C(地址C为DDR的新设地址),用于存放计算后的数据,将工作帧送入PAICORE 2.0使其开始工作,传输输入帧时数据流向示意图如7所示,具体传输方式如下:
1.CPU写PAICORE 2.0控制器的寄存器control的传输模式域为1,表示PAICORE2.0控制器目前处于工作模式,拥有2个下行通路,写该寄存器的中断使能位1,表示开启PAICORE 2.0控制器的中断;
2.CPU写DMA的control寄存器的read_enable和intr_enable开启read通道和中断;
3.CPU写DMA的寄存器,设置好read描述符;
a.read_desc_dest为PAICORE 2.0控制器的AXI-Stream地址;
b.read_desc_addr为地址B;
c.read_desc_len为送入数据的长度;
4.CPU写DMA的read_desc_valid寄存器,开始传输数据;
5.在数据传输完毕之后,会触发DMA的read_complete中断,CPU得知数据传输到了PAICORE 2.0控制器;
6.PAICORE 2.0控制器接受到DMA传输到的数据的同时,往PAICORE 2.0下行工作帧,当下行FIFO数据全为空后,触发PAICORE 2.0控制器的tx_done中断,CPU得知工作帧传输到了PAICORE 2.0。
PAICORE 2.0接收到工作帧之后开始工作,将计算后的帧通过PAICORE 2.0接口发出,然后由PAICORE 2.0控制器所接收,存放在上行FIFO中,如果上行FIFO满或者所有数据都计算完成之后,PAICORE 2.0控制器会产生对应的中断,CPU将把数据送回第一互联网络进行后续处理,产生最终推理结果,传输输出帧时数据流向示意图如8所示,具体传输方式如下:
1.CPU获得up_fifo_full或者rx_done中断之后,读PAICORE 2.0控制器的寄存器up_fifo_len,获取FIFO中的数据长度len;
2.CPU写DMA的寄存器,设置write描述符
a.write_desc_addr为地址C
b.write_desc_len为1所读出的FIFO长度
3.CPU写DMA的write_desc_valid寄存器,表示DMA做好数据传输的准备;
4.CPU写PAICORE 2.0控制器的寄存器write_start为1,使得PAICORE 2.0控制器开始传输上行FIFO中的数据到DMA;
5.直到DMA触发write_complete中断,CPU得知数据传输到了第一互联网络的地址C。
相对应的,测试帧分为输入测试帧和输出测试帧,输入测试帧的传输方式与上述输入帧的传输方式相同,输出测试帧的传输方式与上述输出帧的传输方式相同,本实施例不再赘述。
由于该通信系统总是采用中断的方式运作,因此在这个数据传输过程中,CPU不再需要等待传输完成,可以处理其他操作,DMA传输结束之后会发起中断通知CPU,同时相比于原来片外总线PCIe和片内总线AXI的转换而言,本发明直接采用AXI和AXI-Stream两种片内总线协议的数据传输,速度能够更快。
同时,本发明设计的DMA模块具有极高复用性,只要使用AXI-Stream协议进行数据传输的加速器,其都可利用该DMA模块加速数据传输,除了PAICORE 2.0以外,还可以在SoC中添加其他加速器,比如卷积神经网络芯片(CNN)等,也能够充分利用DMA的特性为其进行数据传输的加速。
本发明的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤。
本发明的实施例还提供一种用于执行上述方法的电子设备,作为该方法的实现装置,所述电子设备至少具备有处理器和存储器,特别是该存储器上存储有执行方法所需的数据和相关的计算机程序,并通过由处理器调用存储器中的数据、程序执行实现方法的全部步骤,并获得对应的技术效果。
优选的,该电子设备可以包含有总线架构,总线可以包括任意数量的互联的总线和桥,总线将包括由一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他系统通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
额外的,所述电子设备还可以进一步包括通信模块、输入单元、音频处理器、显示器、电源等部件。其所采用的处理器(或称为控制器、操作控件)可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器接收输入并控制电子设备的各个部件的操作;存储器可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种,可储存上述有关的数据信息,此外还可存储执行有关信息的程序,并且处理器可执行该存储器存储的该程序,以实现信息存储或处理等;输入单元用于向处理器提供输入,例如可以为按键或触摸输入装置;电源用于向电子设备提供电力;显示器用于进行图像和文字等显示对象的显示,例如可为LCD显示器。通信模块即为经由天线发送和接收信号的发送机/接收机。通信模块(发送机/接收机)耦合到处理器,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)还经由音频处理器耦合到扬声器和麦克风,以经由扬声器提供音频输出,并接收来自麦克风的音频输入,从而实现通常的电信功能。音频处理器可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器还耦合到中央处理器,从而使得可以通过麦克风能够在本机上录音,且使得可以通过扬声器来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (9)
1.一种数据通信系统,其特征在于,包括:数据传输模块、脉冲神经网络芯片控制器、第一互联网络以及第二互联网络;
所述数据传输模块用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片控制器内,以及获取所述第二互联网络的所述脉冲神经网络芯片控制器内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址;
所述脉冲神经网络芯片控制器用于传输所述第一数据至脉冲神经网络芯片,并获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据;
所述第一互联网络用于接收所述存储器或所述数据传输模块的访问请求并进行数据传输,以及为所述存储器、所述数据传输模块和所述脉冲网络神经芯片控制器分配地址;
所述第二互联网络用于接收所述脉冲神经网络芯片控制器和所述数据传输模块的访问请求并进行数据传输;
所述第一互联网络为AXI-互联网络,所述第二互联网络为AXI-Stream互联网络。
2.如权利要求1所述的系统,其特征在于,所述数据传输模块包括第一接口模块和第二接口模块,所述第一接口模块为AXI接口,所述第二接口模块为AXI-Stream接口,所述第一接口模块用于与所述第一互联网络进行连接,所述第二接口模块用于与所述第二互联网络进行连接。
3.如权利要求1至2任一项所述的系统,其特征在于,所述数据传输模块包括第一控制通路单元和第一数据通路单元;
所述第一控制通路单元用于控制所述数据传输模块的全局数据信号;
所述第一数据通路单元用于获取所述第一互联网络中存储器的第一地址的第一数据,并传输至所述第二互联网络的所述脉冲神经网络芯片内,以及获取所述第二互联网络的所述脉冲神经网络芯片内的第二数据,并传输至所述第一互联网络中的所述存储器的第二地址。
4.如权利要求3所述的系统,其特征在于,所述第一控制通路单元包括第一控制状态寄存器,所述第一控制状态寄存器用于配置所述数据传输模块的通道描述符,所述第一控制状态寄存器包括第一配置寄存器和第一中断寄存器。
5.如权利要求1至2任一项所述的系统,其特征在于,所述脉冲神经网络芯片控制器包括第二控制通路单元和第二数据通路单元;
所述第二控制通路单元用于控制所述脉冲神经网络芯片的全局数据信号;
所述第二数据通路单元包括下行子模块和上行子模块;所述下行子模块用于传输所述第一数据至所述脉冲神经网络芯片,所述上行子模块用于获取所述脉冲神经网络芯片根据所述第一数据运算处理获得的所述第二数据。
6.如权利要求5所述的系统,其特征在于,所述第二控制通路单元包括IO Controller节点和第二控制状态寄存器;所述IO Controller节点用于控制所述脉冲神经网络芯片的全局数据信号,所述第二控制状态寄存器用于配置所述脉冲神经网络芯片控制器的通道描述符,所述第二控制状态寄存器包括第二配置寄存器和第二中断寄存器。
7.如权利要求5所述的系统,其特征在于,所述下行子模块包括:下行仲裁器状态机、下行FIFO、下行FIFO读出状态机以及Sender节点;所述下行仲裁器状态机用于获取所述第二互联网络的下行数据帧并传输至所述下行FIFO,所述下行FIFO用于暂存所述下行数据帧,所述下行FIFO读出状态机用于获取所述下行FIFO的下行数据帧并经过协议转换通过所述Sender节点发送至所述脉冲神经网络芯片;
所述上行子模块包括:上行FIFO读模块、上行FIFO、上行FIFO写入状态机以及Receiver节点;所述上行FIFO写入状态机通过所述Receiver节点获取所述脉冲神经网络芯片输出的数据经过协议转换形成上行数据帧并写入所述上行FIFO,所述上行FIFO用于暂存所述上行数据帧,所述上行FIFO读模块用于从所述上行FIFO获取所述上行数据帧并送入所述第二互联网络。
8.如权利要求5所述的系统,其特征在于,所述上行子模块和所述下行子模块分别设置有两组通路。
9.一种SoC芯片,其特征在于,包括:集成中央处理器CPU、片内总线、脉冲神经网络芯片,以及如权利要求1至8任一项所述的数据通信系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310051841.4A CN116074267B (zh) | 2023-02-02 | 2023-02-02 | 一种数据通信系统及SoC芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310051841.4A CN116074267B (zh) | 2023-02-02 | 2023-02-02 | 一种数据通信系统及SoC芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116074267A CN116074267A (zh) | 2023-05-05 |
CN116074267B true CN116074267B (zh) | 2024-04-09 |
Family
ID=86169428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310051841.4A Active CN116074267B (zh) | 2023-02-02 | 2023-02-02 | 一种数据通信系统及SoC芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116074267B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303221B (zh) * | 2023-05-22 | 2023-08-11 | 太初(无锡)电子科技有限公司 | 一种多核处理器片上网络系统的数据传输方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468097A (zh) * | 2021-07-01 | 2021-10-01 | 中国科学技术大学先进技术研究院 | 基于片上系统的数据交换方法 |
CN114564434A (zh) * | 2022-01-13 | 2022-05-31 | 中国人民解放军国防科技大学 | 一种通用多核类脑处理器、加速卡及计算机设备 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
CN114723023A (zh) * | 2022-03-03 | 2022-07-08 | 北京大学 | 数据通信方法及系统、脉冲神经网络运算系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220222513A1 (en) * | 2019-09-03 | 2022-07-14 | Agency For Science, Technology And Research | Neural network processor system and methods of operating and forming thereof |
-
2023
- 2023-02-02 CN CN202310051841.4A patent/CN116074267B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468097A (zh) * | 2021-07-01 | 2021-10-01 | 中国科学技术大学先进技术研究院 | 基于片上系统的数据交换方法 |
CN114564434A (zh) * | 2022-01-13 | 2022-05-31 | 中国人民解放军国防科技大学 | 一种通用多核类脑处理器、加速卡及计算机设备 |
CN114723023A (zh) * | 2022-03-03 | 2022-07-08 | 北京大学 | 数据通信方法及系统、脉冲神经网络运算系统 |
CN114611684A (zh) * | 2022-03-08 | 2022-06-10 | 浙江大学 | 一种基于stdp在线学习的卷积脉冲神经网络的硬件加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN116074267A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Forencich et al. | Corundum: An open-source 100-gbps nic | |
US8082424B2 (en) | Determining when a set of compute nodes participating in a barrier operation on a parallel computer are ready to exit the barrier operation | |
US20140068134A1 (en) | Data transmission apparatus, system, and method | |
CN105068951B (zh) | 一种具有非等时传输结构的片上系统总线 | |
CN105024942B (zh) | 一种动态流量监控方法 | |
CN101344871A (zh) | 一种保证访问先后顺序的总线仲裁单元及其实现方法 | |
CN116074267B (zh) | 一种数据通信系统及SoC芯片 | |
WO2017084523A1 (zh) | 一种片上系统总线行为检测方法、装置和计算机存储介质 | |
Correa et al. | Ultra-low latency communication channels for FPGA-based HPC cluster | |
CN110399324A (zh) | 中断转换器及中断转换方法 | |
CN109739786A (zh) | 一种dma控制器和异构加速系统 | |
CN103885840A (zh) | 一种基于AXI4总线的FCoE协议加速引擎IP核 | |
CN105808476B (zh) | 跨时钟域数据的传输方法及装置 | |
CN106294225A (zh) | 一种数据读取方法、对端设备及控制器 | |
Madhuri et al. | Design and implementation of EDMA controller for AI based DSP SoCs for real-time multimedia processing | |
US20030005344A1 (en) | Synchronizing data with a capture pulse and synchronizer | |
CN114185830A (zh) | 基于mailbox的多处理器通信方法、设备、系统和存储介质 | |
RU175049U9 (ru) | УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire | |
US7302508B2 (en) | Apparatus and method for high speed data transfer | |
Ju et al. | NoC research and practice: Design and implementation of 2× 4 2D-torus topology | |
US6507609B1 (en) | Mechanism for capturing and reporting interrupt events of different clock domains | |
Ge et al. | Design and Implementation of Data Navigator for Heterogeneous Multi-Core System | |
US7047284B1 (en) | Transfer request bus node for transfer controller with hub and ports | |
CN116155843B (zh) | 一种基于pynq的脉冲神经网络芯片数据通信方法及系统 | |
Zhang et al. | Application of SRIO in radar signal processing |
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 |