CN114564434B - 一种通用多核类脑处理器、加速卡及计算机设备 - Google Patents

一种通用多核类脑处理器、加速卡及计算机设备 Download PDF

Info

Publication number
CN114564434B
CN114564434B CN202210038047.1A CN202210038047A CN114564434B CN 114564434 B CN114564434 B CN 114564434B CN 202210038047 A CN202210038047 A CN 202210038047A CN 114564434 B CN114564434 B CN 114564434B
Authority
CN
China
Prior art keywords
core
neuron
input
pulse
neurons
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
Application number
CN202210038047.1A
Other languages
English (en)
Other versions
CN114564434A (zh
Inventor
王蕾
杨智杰
王耀
石伟
彭凌辉
康子扬
陈小帆
徐炜遐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202210038047.1A priority Critical patent/CN114564434B/zh
Publication of CN114564434A publication Critical patent/CN114564434A/zh
Application granted granted Critical
Publication of CN114564434B publication Critical patent/CN114564434B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种通用多核类脑处理器、加速卡及计算机设备,本发明的通用多核类脑处理器包括相互连接的数据交换接口模块和类脑处理单元,所述类脑处理单元包括由n*n个路由器R组成的呈C‑Mesh结构的片上网络,每一个路由器R独立连接有至少一个用于完成神经元计算的神经元核构成一个簇,每个神经元核具备多个神经元计算单元、核内全连接突触以及核间连接突触。本发明能够支持多物理神经元的同时计算与互连,可满足未来智能计算发展需求、执行脉冲神经网络为代表的类脑算法、模拟大规模神经元活动、适应不断发展的神经形态计算模型,为上述计算提供高能效的支撑和加速。

Description

一种通用多核类脑处理器、加速卡及计算机设备
技术领域
本发明涉及类脑处理器,具体涉及一种通用多核类脑处理器、加速卡及计算机设备。
背景技术
随着类脑计算的不断发展,涌现出许多高能效且具备通用性的类脑处理器,其中以美国IBM公司的TrueNorth类脑处理器和美国Intel公司的Loihi类脑处理器以及瑞士苏黎世大学的DYNAPs类脑处理器为主要代表。TrueNorth类脑处理器有4096个神经元核,每个核包括采用一个物理神经元时分复用方式实现的256个“集成-放电”逻辑神经元,4096个神经元核通过二维-Mesh片上网络连接在一起。Loihi类脑处理器的单处理器有128个神经元核,每个核有1024个时分复用的逻辑神经元,每个神经元核可以模拟13万个“集成-放电”神经元和1.3亿个突触。DYNAPs类脑处理器由4个核构成,每个核有256个模拟电路实现的神经元。这256个模拟神经元放在16x16的二维-Mesh网络上。每个神经元的最大扇入为64个连接,最大扇出为四千个连接。随着计算神经科学的发展,脉冲神经网络日趋复杂和庞大,从而能够模拟生物大脑中更大规模的脉冲神经网络。这一趋势对现有的类脑处理器体系结构提出了挑战,因为在它们的体系结构下,神经元核中的神经元扇入扇出数量较小且受到约束。这些约束会影响现有的类脑处理器执行大规模脉冲神经网络的能效,因为大的脉冲神经网络需要被划分成多个子网,以适应现有的类脑处理器的约束。这种一次只能执行子网的方式会产生大量数据移动的开销,降低数据的重用性。因此为了满足未来智能计算发展需求、模拟更大规模的神经元活动、适应不断发展的神经形态计算模型,需要设计一款通用的、神经元扇入灵活可变、神经元扇出不受限的类脑处理器为上述计算提供高能效的支撑。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种通用多核类脑处理器、加速卡及计算机设备,本发明以神经元核LSMCore为基础,基于C-Mesh片上网络实现神经元核间的互连通信,能够支持多物理神经元的同时计算与互连,可满足未来智能计算发展需求、执行脉冲神经网络、模拟大规模神经元活动、适应不断发展的神经形态计算模型,为上述计算提供高能效的支撑和加速。
为了解决上述技术问题,本发明采用的技术方案为:
一种通用多核类脑处理器,包括相互连接的数据交换接口模块和类脑处理单元,所述类脑处理单元包括由n*n个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有至少一个用于完成神经元计算的神经元核LSMCore构成一个簇cluster,每个神经元核LSMCore具备多个神经元计算单元、核内全连接突触以及核间连接突触。
可选地,所述数据交换接口模块包括依次相连的PCIe-AXI转换桥、一级AXI转换桥和二级AXI转换桥,所述PCIe-AXI转换桥用于实现PCIe信号、一级AXI信号的转换,所述一级AXI转换桥用于将PCIe-AXI转换桥输出的一级AXI信号分转为多路二级AXI信号和一路APB信号,其中APB信号用于写APB寄存器以标识初始化完毕以及计算完毕,每一路二级AXI信号经过一个簇cluster对应的二级AXI转换桥得到多路三级AXI信号,每一路三级AXI信号对应接入一个神经元核LSMCore,每一个簇cluster中的路由器R还连接有至少一个输入核InputCore,所述输入核InputCore具备多个输入神经元以及用于输入多个时间步的输入脉冲序列,所述输入核InputCore与相同簇cluster下的一个神经元核LSMCore通过分时使用的方式共享路由器R下的端口并分时使用以输入三级AXI信号,接入神经元核LSMCore中的三级AXI信号被进一步分转为多路AHB信号以对应接入神经元核LSMCore中的每一组神经元构成的神经元组。
可选地,所述路由器R为8端口双工路由器,所述路由器R包括东、西、南、北、东北、东南、西北、西南八个方向的端口,且每一个方向的端口包括输入和输出两个端口以用于完成报文的输入和输出功能;所述路由器R包括输入路由模块和输出路由模块,所述输入路由模块包括FIFO缓冲、FIFO控制器以及X-Y路由模块,FIFO缓冲用来缓存从片上网络中接收的脉冲报文,FIFO控制器用于记录FIFO缓冲的状态以控制对FIFO缓冲的读写,所述X-Y路由模块用于对FIFO缓冲中输出的报文基于X-Y路由算法输出到对应的输入端口;所述输出路由模块包括多路选择器和用于控制多路选择器的轮询仲裁模块,如果同时有多个报文请求同一个输出端口,则通过轮询仲裁模块进行仲裁选出优胜者进行当前时钟周期下的数据传输。
可选地,所述n*n个路由器R组成的呈C-Mesh结构的片上网络具体是指3*3个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有4个用于完成神经元计算的神经元核LSMCore和一个输入核InputCore,所述脉冲报文的总长度为64bit,所述路由器R传输脉冲报文的内容包括目的路由器的坐标(Xdst,Ydst)、目的路由器R下挂载的目的神经元核LSMCore的标识Cid以及全局唯一的源神经元编号Nsrc
可选地,所述神经元核LSMCore包括接口模块、存储模块、输入模块、计算模块以及控制器,所述接口模块的功能是与路由器进行交互以实现脉冲报文的接收、生成与发送,所述存储模块的功能是存储核内神经元的突触连接及其权值、神经元的核间扇出连接的目的路由表以及液体状态,所述输入模块的功能是获取每个时间步的输入脉冲并将其发送给计算模块中的神经元,所述计算模块的功能是实现神经元的计算,并支持以硬件神经元单位为基础的逻辑神经元扩展功能,所述控制器用于实现对接口模块和计算模块的调度控制。。
可选地,所述接口模块包含用于报文接收、发送缓冲的读写接口、用于脉冲报文解析的解析器和用于脉冲报文生成的神经元核报文生成器,所述读写接口包含2个通道,一个写通道一个读通道,每个通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;所述解析器用于在接收到脉冲报文后会读取报文中的神经元编号字段以识别该脉冲报文的源神经元编号,并将其发送给输入模块以进一步传输给计算模块进行脉冲的处理;所述神经元核报文生成器用于遍历当前时间步的脉冲输出情况,对有脉冲输出的神经元,会查找目的路由表中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源神经元编号的脉冲报文,经由缓冲发送给路由器进行脉冲报文的核间传递;每个神经元核LSMCore的路由表项数量与核内神经元的数量一致,每个路由表项长64bit以用于记录一个神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,但是标识自己的那1bit恒为0,使得目的路由表项最大支持表示单个神经元到另外35个神经元核的扇出,一旦一个神经元产生脉冲输出,那么最多就会生成35个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的神经元编号;所述存储模块通过32路AHB接口与外部进行数据交换,每路AHB信号的数据通路是128bit宽,地址位宽是16bit宽以寻址64KB地址空间,写使能信号是1bit,根据地址空间分配,使用地址高位译码选通写使能信号可以达到片选的目的,使得数据写入目标存储器;所述存储模块的突触连接及其权值存储器包含三个部分,存储核内1024个神经元1024×1024全连接权值的核内连接权值SRAM、存储核间256×1024突触连接以使得每个神经元最大支持来自核间的256个连接的CAM以及存储神经元的核间突触连接权值的核间连接权值SRAM;一个神经元核中的内部权值连接SRAM分为32个存储体,每个存储体对应存储一组32个神经元的内部全连接权值,每个存储体中的SRAM为1024深、128bit宽,其中1024深代表了每个神经元都能接收来自1024个核内神经元的扇入连接,权值4bit宽使得一行128bit顺序存放了一组32个神经元来自同一个源神经元的扇入连接,由于核内连接权值在使用时是顺序读取的,使得一组32个神经元是共享读核内连接权值的读地址的,当一行128bit被读出时,分送其不同部分给32个神经元作为核内连接权值使用;CAM当中使用存储源神经元的编号的方式来表示一条连接,使得如果属于一个神经元的CAM中存储了某个源神经元的编号则说明它们之间存在连接,以根据CAM中命中的地址,到核间连接权值SRAM中查询对应连接的权值进行计算使用;核间连接权值SRAM的核间连接权值直接对应了核间连接,当从核间连接CAM当中查询到了一条连接存在,那么根据查询到的地址可以直接访问核间连接权值SRAM取出对应连接的权值进行计算,每个神经元的核间连接CAM得出的访问权值的地址是不同的使得核间连接权值SRAM的读地址也不能在神经元间实现共享,每个神经元都拥有一个自己的核间连接权值SRAM;一个神经元核中包含32个核间连接权值SRAM的存储体,每个存储体对应存储一组神经元的核间连接权值,每个bank包含32个SRAM,每个SRAM有256项,对应存储一个神经元的256个核间连接权值,256项中的每一项为4bit,表示一个核间连接权值;一个神经元核接入32路AHB信号,每个AHB信号对应一组神经元称之为一组神经元,第一组的地址空间存放内容依次为核内连接权值SRAM、核间连接CAM、核间连接权值SRAM、目的路由表和液体状态,其余的31组的地址空间分配相同,内容依次包含核内连接权值SRAM、核间连接CAM和核间连接权值SRAM。所述输入模块采用移位寄存器实现,每一个寄存器通过广播的形式连接到了一组32个神经元,输入脉冲或从核间报文中解析得到的源神经元编号信息从一端进入,在每一拍中其内容都左移,经过一段时间后将脉冲发送给所有神经元以脉冲数据的高效流水组播发送。
可选地,所述计算模块包含以二维计算阵列形式实现的神经元阵列、接收脉冲输出的脉冲内容寄存器、实现对脉冲内容的稀疏行进行处理的跳零机制模块和支持神经元扩展的电压归并比较单元,所述电压归并比较单元用于通过加法树将输入的,存放于膜电压寄存器中的电压值,各个逐级两两求和完成其电压的归并计算得到扩展神经元的电压然后再与阈值电压进行比较,而预先设定的组合神经元数量参数决定了归并计算到达加法树的哪一个层级,该参数还被作为不同层级加法结果的选择信号,选通最终计算结果并写回膜电压寄存器中,当得到扩展神经元的最终电压值后,将该电压与阈值进行比较操作,形成最终的神经元脉冲输出并写入脉冲内容寄存器中;在计算模块中,一组神经元与输入模块中的1个脉冲移位寄存器相连以接收核内以及核间脉冲输入,每个神经元与1个归并计算单元中的电压寄存器相连以输出其膜电压,每个归并计算单元经过阈值电压比较器后,将比较结果与脉冲内容寄存器中的1比特相连,以实现脉冲输出的输出。
可选地,所述输入核InputCore包括输入核接口模块、输入核存储模块、以及输入核控制器,所述输入核接口模块的功能是与路由器进行交互以实现脉冲报文的生成与发送,所述输入核存储模块的功能是存储输入神经元的核间扇出连接的目的路由表以及输入脉冲序列,所述输入核控制器用于实现对输入核接口模块的调度控制;所述输入核接口模块包含用于报文发送的写接口和用于脉冲报文生成的输入核报文生成器,所述写接口包含1个写通道,该通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;所述输入核报文生成器用于遍历当前时间步的输入神经元的脉冲输出情况,对有脉冲输出的输入神经元,会查找目的路由表中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源输入神经元编号的脉冲报文,经由缓冲发送给路由器进行脉冲报文的核间传递;每个输入核InputCore的路由表项数量与核内输入神经元的数量一致,每个路由表项长64bit以用于记录一个输入神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,使得目的路由表项最大支持表示单个神经元到另外36个神经元核LSMCore的扇出,一旦一个输入神经元产生脉冲输出,那么最多就会生成36个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的输入神经元编号;输入核InputCore的地址空间分配紧接在一个cluster当中的一个神经元核之后,包括输入神经元的在神经元核第一组神经元地址空间最后部分的目的路由表,输入脉冲序列在后续31组地址空间的最后部分且目前支持1024个时间步中512个输入神经元的脉冲输入序列。
此外,本发明还提供一种加速卡,包括加速卡本体和设于加速卡本体上的加速器,所述加速器为所述的通用多核类脑处理器。
此外,本发明还提供一种计算机设备,包括微处理器和与微处理器相连的神经网络计算加速器,所述神经网络计算加速器为所述的通用多核类脑处理器。
和现有技术相比,本发明主要具有下述优点:本发明的通用多核类脑处理器包括相互连接的数据交换接口模块和类脑处理单元,所述类脑处理单元包括由n*n个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有至少一个用于完成神经元计算的神经元核构成一个簇,每个神经元核具备多个神经元计算单元、核内全连接突触以及核间连接突触,每个神经元支持核内全连接扇入扇出突触连接、可变的核间扇入突触连接以及不受限的核间扇出突触连接,本发明能够支持多物理神经元的同时计算与互连,基于C-Mesh片上网络和神经元核内的移位寄存器脉冲广播机制,实现了核间单播路由通信和核内高速组播通信,使神经元的扇出不受限制,与交叉开关的实现相比降低了硬件复杂度,基于神经元单元组合扩展机制,实现神经元核间扇入连接和权值的可配置性,可满足未来智能计算发展需求、执行脉冲神经网络、模拟大规模神经元活动、适应不断发展的神经形态计算模型,为上述计算提供高能效的支撑和加速。
附图说明
图1为本发明实施例中通用多核类脑处理器架构与外部数据交换接口示意图。
图2为本发明实施例中呈C-Mesh结构的片上网络示意图。
图3为本发明实施例中路由器R的整体结构示意图。
图4为本发明实施例中片上网络传输的报文结构示意图。
图5为本发明实施例中路由器R的输入端口设计以及路由算法示意图。
图6为本发明实施例中路由器R的输出端口设计和仲裁机制示意图。
图7为本发明实施例中神经元核LSMCore的结构示意图。
图8为本发明实施例中目的路由表的示意图。
图9为本发明实施例中核内连接权值SRAM存储组织图。
图10为本发明实施例中CAM和SRAM的结构示意图。
图11为本发明实施例中神经元核核内存储的地址空间分配图。
图12为本发明实施例中输入模块和计算阵列设计框图。
图13为本发明实施例中神经元单元组合实现扇入扩展机制框图。
图14所示是处理器工作及与外部主处理器交互关系。
图15是类脑处理器与外部主处理器交互流程图。
具体实施方式
如图1所示,本实施例的通用多核类脑处理器包括相互连接的数据交换接口模块和类脑处理单元,所述类脑处理单元包括由n*n个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有至少一个用于完成神经元计算的神经元核LSMCore构成一个簇cluster,每个神经元核LSMCore具备多个神经元计算单元、核内全连接突触以及核间连接突触。参见图1可知,作为一种可选的实施方式,本实施例中每一个路由器R独立连接有每一个簇cluster中的路由器R还连接有至少一个输入核InputCore,所述输入核InputCore具备多个输入神经元以及用于输入多个时间步的输入脉冲序列。
为了便于区分,将本实施例中的通用多核类脑处理器简称为类脑处理器,类脑处理器的架构分为三个层次,chip–cluster-core。其中:第一个层次chip包含了整个处理器的外部数据传输接口、一个3*3尺寸的C-Mesh结构的片上网络(Network on Chip,NoC)以及36个神经元核LSMCore(如图1中C表示)。第二个层次cluster由一个路由器(如图1中R表示)及其下面挂载的4个神经元核LSMCore以及一个输入核InputCore(如图1中I表示,部分未标出)构成。第三个层次core即神经元核LSMCore和输入核InputCore。每个神经元核LSMCore支持1K(K=1024)个神经元计算单元、1M(M=10242)的核内全连接突触以及256K的核间连接突触(核内的每个神经元支持256个核间连接)。每个输入核InputCore支持512个输入神经元。因此,整个类脑处理器总共可支持4.5K个输入神经元的输入层作为处理器的输入、支持36K个计算神经元的并行计算、支持45M突触连接的存储(等效突触权值存储40.5MB),可读出36K个神经元的液体状态作为处理器的输出。
参见图1,本实施例中的数据交换接口模块包括依次相连的PCIe-AXI转换桥、一级AXI转换桥和二级AXI转换桥,PCIe-AXI转换桥用于实现PCIe信号、一级AXI信号的转换,一级AXI转换桥用于将PCIe-AXI转换桥输出的一级AXI信号分转为多路二级AXI信号和一路APB信号,其中APB信号用于写APB寄存器以标识初始化完毕以及计算完毕,每一路二级AXI信号经过一个簇cluster对应的二级AXI转换桥得到多路三级AXI信号,每一路三级AXI信号对应接入一个神经元核LSMCore,输入核InputCore与相同簇cluster下的一个神经元核LSMCore通过分时使用的方式共享路由器R下的端口并分时使用以输入三级AXI信号,接入神经元核LSMCore中的三级AXI信号被进一步分转为多路AHB信号以对应接入神经元核LSMCore中的每一组神经元构成的神经元组。通过上述结构,使得类脑处理器可作为一个PCIe从设备,通过PCIe数据传输协议与外部进行数据交换,即处理器的初始化配置以及计算结果的读出。
本实施例中,在类脑处理器的内部,PCIe信号通过一个PCIe-AXI转换桥转换为AXI信号,该路AXI信号又在下一级中通过一个1AXI-9AXI的转换桥分转为9路AXI信号和一路APB信号。其中APB信号用于写APB寄存器,以标识初始化完毕以及计算完毕。每路AXI信号对应接入一个cluster。接入一个cluster中的AXI信号又经过一个1AXI-4AXI的转换桥分转为4路AXI信号,每路AXI信号对应接入一个LSMCore(输入核InputCore与一个LSMCore共享一个AXI),并经由AXI-AHB桥被进一步分转为32路AHB信号,对应接入LSMCore中的32列神经元。多级分转信号中的每一级都对应了处理器当中的一个结构层次。整个处理器不同层次的地址空间分布如表1所示。
表1:类脑处理器的不同层次的地址空间分布。
结构层次 地址空间大小(字节编址)
chip 227
cluster 223
Core 221
神经元列 216
类脑处理器的片上互连通信设计的是C-Mesh NoC架构。它包含两级结构,即负责脉冲序列传递和神经元之间通信的NoC以及负责完成神经元计算的神经元核。每个路由器节点下挂载了4个神经元核LSMCore和一个输入核InputCore,并构成一个簇cluster。
设计一个大型类脑系统中最具挑战性的工作就是设计一个支持大量神经元互相通信的可扩展的脉冲通信系统。由于NoC具有高性能、可扩展、大量并行、低延迟、低功耗的优势,因此非常适合用做类脑处理器中的通信系统。如图2所示是本实施例中为类脑处理器片上互连通信设计的C-Mesh NoC架构的框图。它包含两级结构,即负责脉冲序列传递和神经元之间通信的NoC以及负责完成神经元计算的神经元核。在Mesh型拓扑中,路由器和四周的邻居路由器相连,使得整个片上网络具有较大的吞吐率和并行度。这样的拓扑结构带来两个优势,一是全互连和高并行的设计使得网络可以支持不同拓扑结构的SNN模型,具有通用性和可扩展性;另外,相较于其他网络拓扑,Mesh结构具有大吞吐率的优势,可以满足类脑应用猝发流量的通信需求。每个路由器节点下挂载了4个神经元核LSMCore和一个输入核InputCore,并构成一个cluster。特别需要注意的是,其中输入核InputCore与一个神经元核LSMCore共享一个路由器端口并分时使用。
如图3所示,本实施例中路由器R为8端口双工路由器,所述路由器R包括东、西、南、北、东北、东南、西北、西南八个方向的端口,且每一个方向的端口包括输入和输出两个端口以用于完成报文的输入和输出功能。
本实施例中,n*n个路由器R组成的呈C-Mesh结构的片上网络具体是指3*3个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有4个用于完成神经元计算的神经元核LSMCore,所述脉冲报文的总长度为64bit,所述路由器R传输脉冲报文的内容包括目的路由器的坐标(Xdst,Ydst)、目的路由器R下挂载的目的神经元核LSMCore的标识Cid以及全局唯一的源神经元编号Nsrc。在考虑硬件开销和平衡通信和计算时间的基础上,本实施例中将NoC规模设置为3*3的阵列,每个节点下挂载4个神经元核和1个输入核(输入核与一个神经元核共享路由器端口)。本实施例中为网络设计的脉冲报文总长度为64bit。如图4所示是本实施例中的报文设计框图,其总长度为64bit。目的地址Xdst和目的地址Ydst分别标识了目的路由器的坐标,Cid标识了路由器节点下挂载的4个神经元核中的一个。因此报文的高6位用于其在片上网络上的路由已经足够其寻址到一个目的神经元核。Nsrc字段为16bit,用于存放全局唯一的源神经元编号。神经元编号可以唯一标识65536中的一个神经元而不会产生冲突,便于接收方根据该编号识别脉冲报文的来源,以取出对应的权值连接进行计算。中间的42比特预留作为多播报文的设计,如果使用的话,报文总共可以存放至多8个以特定路径路由的目的神经元核的坐标,从而使网络流量减少8倍。
如图5所示,路由器R包括输入路由模块和输出路由模块,所述输入路由模块包括FIFO缓冲、FIFO控制器以及X-Y路由模块,FIFO缓冲用来缓存从片上网络中接收的脉冲报文,FIFO控制器用于记录FIFO缓冲的状态以控制对FIFO缓冲的读写,所述X-Y路由模块用于对FIFO缓冲中输出的报文基于X-Y路由算法输出到对应的输入端口。其中FIFO缓冲用来缓存从NoC中接收的报文,其深度是可配置的;满信号用来指示缓冲器的状态,如果不为1,则说明FIFO还没有满,因而可以对该端口发出请求。在得到写应答信号的应答后,数据信号输入端口接收到报文并将数据存入缓冲器中。FIFO控制器会记录FIFO的状态,用于控制对FIFO的读写。路由算法确定了报文在网络中按照何种路径从源节点传输到目的节点。在Mesh形网络中,为了防止死锁,一般采用维序优先的路由算法。在本设计中,本实施例中采用XY路由算法。如图5右侧所示是X-Y路由算法的示意图,根据该路由算法可以实现计算当前报文下一跳的传输方向的功能。X-Y路由算法是一种确定性路由算法,只要给定源地址与目的地址,就能唯一确定条路由路径。它十分便于硬件实现,同时也能够满足SNN通信的路由需求。在工作中,它将网络中所有路由器都用一个二维坐标(X,Y)表示,报文中的地址信息也是用二维坐标(X,Y)表示。假设当前路由器的坐标为(cur_x,cur_y),报文中目的地址为(dst_x,dst_y)。如果目的地址和路由器的地址一致,则将报文发送到本地神经元核中;否则,先沿着x轴方向对报文进行传输,直到x轴的坐标与目的地址的x坐标相等,然后沿着y轴的方向传输报文,直到y轴的坐标目的地址的y坐标相等,此时则可以将报文传入本地神经元核。由于SNN的通信流量较为稀疏,因此本实施例中没有使用虫孔路由和虚通道技术。
如图6所示,输出路由模块包括多路选择器和用于控制多路选择器的轮询仲裁模块,如果同时有多个报文请求同一个输出端口,则通过轮询仲裁模块进行仲裁选出优胜者进行当前时钟周期下的数据传输。在本设计中,本实施例中的仲裁机制采用Round-Robin算法仲裁,即轮询仲裁。它指的是轮流对多个请求进行响应。这种仲裁方法比较公平,并且无需记录状态,比较适合硬件实现。
针对神经元核核内连接紧耦合的特点,本实施例中设计了神经元核LSMCore以满足神经元核对于通信密度高的紧耦合神经元簇之间通信延迟低、通信量大的需求,同时兼顾神经元核间的通信处理。神经元核LSMCore的设计重点在于核内部紧耦合的神经元之间的高效通信结构设计以及对来自神经元核间部的脉冲报文的处理。输入核InputCore的主要功能是完成来自输入层的外部输入脉冲的发送。可以视作神经网络的输入层。每个输入核InputCore支持512个输入神经元。每个cluster当中都有一个输入核InputCore,因此总共可以支持4.5K个输入神经元的输入层作为处理器的输入。本实施例中设计的神经元核LSMCore包括四个主要的相互关联的组件,如图7所示,神经元核LSMCore包括接口模块、存储模块、输入模块、计算模块以及控制器,所述接口模块的功能是与路由器进行交互以实现脉冲报文的接收、生成与发送,所述存储模块的功能是存储核内神经元的突触连接及其权值、神经元的核间扇出连接的目的路由表以及液体状态,所述输入模块的功能是获取每个时间步的输入脉冲并将其发送给计算模块中的神经元,所述计算模块的功能是实现神经元的计算,并支持以硬件神经元单位为基础的逻辑神经元扩展功能,所述控制器用于实现对接口模块和计算模块的调度控制。神经元核LSMCore的各个模块详细说明如下:
接口模块包含用于报文接收、发送缓冲的读写接口、用于脉冲报文解析的解析器和用于脉冲报文生成的神经元核报文生成器,所述读写接口包含2个通道,一个写通道一个读通道,每个通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;
解析器用于在接收到脉冲报文后会读取报文中的神经元编号字段以识别该脉冲报文的源神经元编号,并将其发送给输入模块以进一步传输给计算模块进行脉冲的处理;
神经元核报文生成器用于遍历当前时间步的脉冲输出情况,对有脉冲输出的神经元,会查找目的路由表(如图8所示)中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源神经元编号的脉冲报文(具体格式如图4所示),经由缓冲发送给路由器进行脉冲报文的核间传递;
每个神经元核LSMCore的路由表项数量与核内神经元的数量一致,每个路由表项长64bit以用于记录一个神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,但是标识自己的那1bit恒为0,使得目的路由表项最大支持表示单个神经元到另外35个神经元核的扇出,一旦一个神经元产生脉冲输出,那么最多就会生成35个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的神经元编号,如图8所示。
存储模块的功能是存储核内神经元的突触连接及其权值、神经元的核间扇出连接的目的路由表以及液体状态。存储模块通过32路AHB接口与外部进行数据交换,每路AHB信号的数据通路是128bit宽,地址位宽是16bit宽以寻址64KB地址空间,写使能信号是1bit,根据地址空间分配,使用地址高位译码选通写使能信号可以达到片选的目的,使得数据写入目标存储器;
存储模块的突触连接及其权值存储器包含三个部分,存储核内1024个神经元1024×1024全连接权值的核内连接权值SRAM(结构如图9所示)、存储核间256×1024突触连接以使得每个神经元最大支持来自核间的256个连接的CAM(Content Addressing Memory,内容寻址存储器,如图10所示)以及存储神经元的核间突触连接权值的核间连接权值SRAM。
如图11所示是核内连接权值SRAM的结构。一个神经元核中的内部权值连接SRAM分为32个存储体,每个存储体对应存储一组32个神经元的内部全连接权值,每个存储体中的SRAM为1024深、128bit宽,其中1024深代表了每个神经元都能接收来自1024个核内神经元的扇入连接,权值4bit宽使得一行128bit顺序存放了一组32个神经元来自同一个源神经元的扇入连接(如图11右侧所示,0-1表示源神经元为0号,目的神经元为1号的连接),由于核内连接权值在使用时是顺序读取的,使得一组32个神经元是共享读核内连接权值的读地址的,当一行128bit被读出时,分送其不同部分给32个神经元作为核内连接权值使用。
如图10左图所示是存储核间突触连接的CAM。CAM当中使用存储源神经元的编号的方式来表示一条连接,使得如果属于一个神经元的CAM中存储了某个源神经元的编号则说明它们之间存在连接,以根据CAM中命中的地址,核间连接权值SRAM中查询对应连接的权值进行计算使用;本实施例中在目的神经元的CAM当中使用存储源神经元的编号的方式来表示一条连接(以源神经元编号为索引,查询连接是否存在)。换句话说,如果属于一个神经元的CAM中存储了某个源神经元的编号,那么说明它们之间存在连接。之后可以根据CAM中命中的地址,去SRAM当中查询对应连接的权值进行计算使用。CAM的使用可以高效地利用存储空间实现稀疏连接的存储。如图10左图所示,一个神经元核当中包含32个CAM bank,每个对应存储一组神经元的核间连接。每个bank包含32个CAM,每个对应存储一个神经元的核间连接。每个CAM拥有256项,对应存储一个神经元的256核间扇入连接。每个CAM项为16bit,存储的是该连接的源神经元编号。值得注意的是,CAM的读取地址是不能在神经元间共享的,因为每个神经元拿到源神经元编号去查询CAM的时候,由于连接情况不同,每个神经元都会查询到不同位置的CAM项。
如图10右图所示是核间连接权值SRAM的结构。核间连接权值SRAM的核间连接权值直接对应了核间连接,当从核间连接CAM当中查询到了一条连接存在,那么根据查询到的地址可以直接访问核间连接权值SRAM取出对应连接的权值进行计算,每个神经元的核间连接CAM得出的访问权值的地址是不同的使得核间连接权值SRAM的读地址也不能在神经元间实现共享,每个神经元都拥有一个自己的核间连接权值SRAM;
如图10右图所示,一个神经元核中包含32个核间连接权值SRAM的存储体,每个存储体对应存储一组神经元的核间连接权值,每个bank包含32个SRAM,每个SRAM有256项,对应存储一个神经元的256个核间连接权值,256项中的每一项为4bit,表示一个核间连接权值。
神经元核核内存储的地址空间分配如图11所示。一个神经元核接入32路AHB信号,每个AHB信号对应一组神经元称之为一组神经元,第一组的地址空间存放内容依次为核内连接权值SRAM、核间连接CAM、核间连接权值SRAM、目的路由表和液体状态,其余的31组的地址空间分配相同,内容依次包含核内连接权值SRAM、核间连接CAM和核间连接权值SRAM。输入核InputCore的地址空间分配紧接在一个cluster当中的一个神经元核之后,包括输入神经元的目的路由表(在第一个bank最后部分),输入脉冲序列在后续31个bank的最后部分(最大支持1024个时间步中512个输入神经元的脉冲输入序列)。实线框的部分是所有神经元核LSMCore在初始化配置当中需要写入的部分。虚线框部分是计算结束后需要读出的结果部分。长短虚线框是所有输入核InputCore在初始化配置当需要写入的部分。
输入模块的功能是获取每个时间步的输入脉冲并将其发送给计算模块中的神经元。如图12所示,输入模块采用移位寄存器实现,每一个寄存器通过广播的形式连接到了一组32个神经元,输入脉冲或从核间报文中解析得到的源神经元编号信息从一端进入,在每一拍中其内容都左移,经过一段时间后将脉冲发送给所有神经元以脉冲数据的高效流水组播发送。它是通过移位寄存器的方式实现的,每一个寄存器通过广播的形式连接到了32个神经元,输入脉冲(如图12左侧部分表示,对于核内脉冲是1bit表示,如图12右侧部分表示,核间脉冲以解析报文得到的神经元编号表示)从一端进入,在每一拍中其内容都左移,经过一段时间后将脉冲发送给所有神经元。这种方式实现了脉冲数据的高效流水组播发送。
计算模块的功能是实现神经元的计算,并支持以硬件神经元单位为基础的逻辑神经元扩展功能。所谓硬件神经元即实际实现的神经元单元,而逻辑神经元,则是在运行网络算法中一个神经元及其相关属性(主要是突触连接及其权值)。该模块包含以二维计算阵列形式实现的神经元阵列、接收脉冲输出的脉冲内容寄存器、实现对脉冲内容的稀疏行进行处理的跳零机制模块和支持神经元扩展的电压归并模块。对于神经元模型本实施例中采用的是常见的“集成-泄露-放电”(Integrate-Leak-Fire,LIF)神经元模型。本实施例中,计算模块包含以二维计算阵列形式实现的神经元阵列、接收脉冲输出的脉冲内容寄存器、实现对脉冲内容的稀疏行进行处理的跳零机制模块和支持神经元扩展的电压归并比较单元,所述电压归并比较单元用于通过加法树将输入的,存放于膜电压寄存器中的电压值,各个逐级两两求和完成其电压的归并计算得到扩展神经元的电压然后再与阈值电压进行比较,而预先设定的组合神经元数量参数决定了归并计算到达加法树的哪一个层级,该参数还被作为不同层级加法结果的选择信号,选通最终计算结果并写回膜电压寄存器中,当得到扩展神经元的最终电压值后,将该电压与阈值进行比较操作,形成最终的神经元脉冲输出并写入脉冲内容寄存器中;在计算模块中,一组神经元与输入模块中的1个脉冲移位寄存器相连以接收核内以及核间脉冲输入,每个神经元与1个归并计算单元相连以输出其膜电压,每个归并计算单元经过阈值电压比较器后,将比较结果与脉冲内容寄存器中的1比特相连,以实现脉冲输出的输出。
目前在本实施例中的存储器中,突触连接关系的存储采用内容可寻址存储器CAM(Content-Addressable Memory,CAM)连接权值采用静态随机存取存储器(Static Random-Access Memory,SRAM)来实现。这部分存储占据了类脑处理器的大部分片上存储空间。由于类脑处理器的片上存储资源的有限的,实现神经元间的全连接的代价是昂贵且不可接受的。因此本专利针对这一问题,提出了一种通过组合多个神经元单元及其配属的存储突触连接关系和权值的存储器的方法和结构,使类脑处理器可以支持具备可扩展扇入数量的神经元。例如,在类脑处理器中,一个神经元单元的配套存储容量最大只能够支持4条突触扇入连接的存储。然而在目标神经网络拓扑中,存在扇入连接数量为8的神经元。那么该目标神经网络便无法部署到类脑处理器上进行计算。本实施例中的扩展方法通过将多个神经元单元及其存储进行组合,以实现神经元单元扇入连接的扩展,在不额外增加突触连接存储资源的情况下,将目标神经网络部署到类脑处理器上。例如,组合两个原有的神经元单元及其配套存储器来实现对8个扇入连接的支持。为了保证组合后的神经元功能依然正确,本实施例中为类脑处理器装置中增加了必要的归并计算单元,将原来的两个神经元单元的计算结果进行归并以实现单个神经元的正确功能。
如图13所示是本实施例中设计的神经元单元组合扩展机制。其核心思想是组合多个神经元单元以实现一个支持更多扇入连接信息的“扩展神经元Next”。因为本实施例中组合了多个神经元单元NU,所以原先神经元单元NU输出的膜电压只是扩展神经元单元的一个组成部分。因此在本实施例中的方法中,如图13左侧所示,增加了一个电压归并计算比较单元,完成组合内多个神经元单元的电压归并计算,从而保证神经元功能的正确性。该神经元单元组合扩展机制工作流程如下。在阈值比较之前,一个组合内的所有神经元单元需要通过电压归并计算比较单元中的加法树完成其电压的归并计算,以形成“扩展神经元Next”的电压,然后再与阈值电压进行比较。而预先设定的组合神经元数量参数决定了归并计算到达加法树的哪一个层级,该参数还被作为不同层级加法结果的选择信号,选通最终计算结果并写回膜电压寄存器中。当得到扩展神经元的最终电压值后,将该电压与阈值进行比较操作,形成最终的神经元脉冲输出并写入脉冲内容寄存器中。
输入核InputCore包括输入核接口模块、输入核存储模块、以及输入核控制器,所述输入核接口模块的功能是与路由器进行交互以实现脉冲报文的生成与发送,所述输入核存储模块的功能是存储输入神经元的核间扇出连接的目的路由表以及输入脉冲序列,所述输入核控制器用于实现对输入核接口模块的调度控制。本实施例中,输入核接口模块包含用于报文发送的写接口和用于脉冲报文生成的输入核报文生成器,所述写接口包含1个写通道,该通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;输入核报文生成器用于遍历当前时间步的输入神经元的脉冲输出情况,对有脉冲输出的输入神经元,会查找目的路由表中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源输入神经元编号的脉冲报文,经由缓冲发送给路由器进行脉冲报文的核间传递;每个输入核InputCore的路由表项数量与核内输入神经元的数量一致,每个路由表项长64bit以用于记录一个输入神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,使得目的路由表项最大支持表示单个神经元到另外36个神经元核LSMCore的扇出,一旦一个输入神经元产生脉冲输出,那么最多就会生成36个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的输入神经元编号;输入核InputCore的地址空间分配紧接在一个cluster当中的一个神经元核之后,包括输入神经元的在神经元核第一组神经元地址空间最后部分的目的路由表,输入脉冲序列在后续31组地址空间的最后部分且目前支持1024个时间步中512个输入神经元的脉冲输入序列(其中支持的时间步数量和输入神经元数量不限于1024和512,而是可以扩展或减少的)。
如图14和图15所示,除了初始化阶段外,其余阶段皆以一个时间步作为一个执行时间单位,进行循环执行。一张输入图片(或一段语音)被在时间上展开为一段脉冲序列,该段脉冲小序列被人为地划分为多个时间步的脉冲序列以分时处理。参见图14和图15,本实施例中通用多核类脑处理器的工作过程包括:初始化:在初始化过程中,若干个时间步的输入脉冲序列以及标识输入神经元扇出突触的目的路由表经由数据交换接口从片外传输至片上专门用于输入脉冲序列发送的输入核InputCore中存储。神经元核LSMCore中神经元的突触连接及其权值以及标识核内神经元扇出突触的目的路由表经由数据交换接口从片外传输至片上,写入神经元核LSMCore的存储器中。除此之外一些配置信息,包括激活/抑制神经元配置信息、硬件神经元复用配置信息以及其他配置信息等也被传入片上。初始化结束后,外部主机通过写APB寄存器的方式给予处理器启动计算的信号。自此处理器开始工作。核间脉冲通信:在一个时间步中,输入核InputCore取出当前时间步输入的输入脉冲序列,查询目的路由表并生成脉冲报文发送到片上网络上。神经元核LSMCore遍历上一个时间步中神经元核内的脉冲输出,查询目的路由表并生成脉冲报文发送到片上网络上。根据路由算法,报文在片上网络中被路由。每个路由器根据包中的目的路由器坐标将属于自己本地神经元核LSMCore中神经元的报文下载到神经元核LSMCore中。当所有核发送完了其当前时间步需要发送的脉冲报文后,控制器会启动硬同步计时(硬同步计数器从当前时间步脉冲报文发送完毕后开始计数,保证不会出现没有发完就到达硬同步的情况),在预置的限定时间内等待尚未路由到目的地的报文在片上网络上传输。报文处理:神经元核LSMCore通过路由器接收到来自输入核InputCore以及其他神经元核LSMCore的脉冲报文,解析出其所带的源神经元编号后经由输入模块的脉冲移位寄存器以流水发送的方式发送给神经元核LSMCore中的每个神经元。由于在本实施例中的设计中,每个神经元可以有256个来自神经元核LSMCore外部的连接,因此本实施例中为每个神经元分配了一个256深度的CAM用于存储这些连接。这样,每个神经元根据接收到的源神经元编号去CAM当中查找是否存在与该编号对应的连接。如果连接存在就会到核间连接权值SRAM当中取出权值进行神经元的膜电压累积计算。由于使用移位寄存器以及流水处理报文的特点,报文在神经元核LSMCore中无需额外缓存或等待,而是一旦到达即可处理。核内脉冲通信与处理:当到达硬同步时间之后,神经元核LSMCore停止接收报文并启动核内的脉冲传递和神经元膜电压累积运算。即将上一个时间步中核内神经元产生的脉冲输出作为当前时间步的脉冲输入发送给移位寄存器,并发给所有神经元。每个神经元根据接收到的脉冲顺序查找是否有对应的连接存在。如若存在则取出权值进行膜电压累积计算,如果不存在则跳过计算。电压归并与脉冲生成:计算完毕后,根据硬件神经元的逻辑配置信息,对若干个硬件神经元的膜电压进行归并计算以形成逻辑神经元的膜电压。之后,每个神经元将膜电压与之前存储的阈值电压进行比较,如果膜电压超过阈值电压,神经元会产生一个脉冲输出,并重置神经元膜电压。这些脉冲输出被保存在脉冲输出寄存器中留待后续使用,存储位置与核内神经元索引一一对应。在下一个时间步中,核间脉冲发送与处理、核内脉冲发送与处理和电压归并比较将以时间步为执行时间单位循环执行,直至处理完所有时间步的脉冲序列。之后,根据脉冲输出数量累加得到的液体状态可以被从神经元核LSMCore中读出到处理器外部以进行进一步的处理。以此类推,在若干个时间步的报文收发以及神经元计算结束后,处理器会通过写APB寄存器的方式告诉外部主机计算结束(外部主机通过轮询方式不断访问特定地址下的APB寄存器中的结束信号),此时外部主机可以发起读请求将液体状态读出,进行后续的处理。
此外,本实施例还提供一种加速卡,包括加速卡本体和设于加速卡本体上的加速器,所述加速器为前述的通用多核类脑处理器。
此外,本实施例还提供一种计算机设备,包括微处理器和与微处理器相连的神经网络计算加速器,所述神经网络计算加速器为前述的通用多核类脑处理器。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (4)

1.一种通用多核类脑处理器,其特征在于,包括相互连接的数据交换接口模块和类脑处理单元,所述类脑处理单元包括由n*n个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有至少一个用于完成神经元计算的神经元核LSMCore构成一个簇cluster,每个神经元核LSMCore具备多个神经元计算单元、核内全连接突触以及核间连接突触;
数据交换接口模块包括依次相连的PCIe-AXI转换桥、一级AXI转换桥和二级AXI转换桥,所述PCIe-AXI转换桥用于实现PCIe信号、一级AXI信号的转换,所述一级AXI转换桥用于将PCIe-AXI转换桥输出的一级AXI信号分转为多路二级AXI信号和一路APB信号,其中APB信号用于写APB寄存器以标识初始化完毕以及计算完毕,每一路二级AXI信号经过一个簇cluster对应的二级AXI转换桥得到多路三级AXI信号,每一路三级AXI信号对应接入一个神经元核LSMCore,每一个簇cluster中的路由器R还连接有至少一个输入核InputCore,所述输入核InputCore具备多个输入神经元以及用于输入多个时间步的输入脉冲序列,所述输入核InputCore与相同簇cluster下的一个神经元核LSMCore通过分时使用的方式共享路由器R下的端口并分时使用以输入三级AXI信号,接入神经元核LSMCore中的三级AXI信号被进一步分转为多路AHB信号以对应接入神经元核LSMCore中的每一组神经元构成的神经元组;
所述路由器R为8端口双工路由器,所述路由器R包括东、西、南、北、东北、东南、西北、西南八个方向的端口,且每一个方向的端口包括输入和输出两个端口以用于完成报文的输入和输出功能;所述路由器R包括输入路由模块和输出路由模块,所述输入路由模块包括FIFO缓冲、FIFO控制器以及X-Y路由模块,FIFO缓冲用来缓存从片上网络中接收的脉冲报文,FIFO 控制器用于记录FIFO缓冲的状态以控制对FIFO缓冲的读写,所述X-Y路由模块用于对FIFO缓冲中输出的报文基于X-Y路由算法输出到对应的输入端口;所述输出路由模块包括多路选择器和用于控制多路选择器的轮询仲裁模块,如果同时有多个报文请求同一个输出端口,则通过轮询仲裁模块进行仲裁选出优胜者进行当前时钟周期下的数据传输;
所述n*n个路由器R组成的呈C-Mesh结构的片上网络具体是指3*3个路由器R组成的呈C-Mesh结构的片上网络,每一个路由器R独立连接有4个用于完成神经元计算的神经元核LSMCore和一个输入核InputCore,所述脉冲报文的总长度为64bit,所述路由器R传输脉冲报文的内容包括目的路由器的坐标(Xdst,Ydst)、目的路由器R下挂载的目的神经元核LSMCore的标识Cid以及全局唯一的源神经元编号N src
所述神经元核LSMCore包括接口模块、存储模块、输入模块、计算模块以及控制器,所述接口模块的功能是与路由器进行交互以实现脉冲报文的接收、生成与发送,所述存储模块的功能是存储核内神经元的突触连接及其权值、神经元的核间扇出连接的目的路由表以及液体状态,所述输入模块的功能是获取每个时间步的输入脉冲并将其发送给计算模块中的神经元,所述计算模块的功能是实现神经元的计算,并支持以硬件神经元单位为基础的逻辑神经元扩展功能,所述控制器用于实现对接口模块和计算模块的调度控制;
所述接口模块包含用于报文接收、发送缓冲的读写接口、用于脉冲报文解析的解析器和用于脉冲报文生成的神经元核报文生成器,所述读写接口包含2个通道,一个写通道一个读通道,每个通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;所述解析器用于在接收到脉冲报文后会读取报文中的神经元编号字段以识别该脉冲报文的源神经元编号,并将其发送给输入模块以进一步传输给计算模块进行脉冲的处理;所述神经元核报文生成器用于遍历当前时间步的脉冲输出情况,对有脉冲输出的神经元,会查找目的路由表中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源神经元编号的脉冲报文,经由缓冲发送给路由器进行脉冲报文的核间传递;每个神经元核LSMCore的路由表项数量与核内神经元的数量一致,每个路由表项长64bit以用于记录一个神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,但是标识自己的那1bit恒为0,使得目的路由表项最大支持表示单个神经元到另外35个神经元核的扇出,一旦一个神经元产生脉冲输出,那么最多就会生成35个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的神经元编号;所述存储模块通过32路AHB接口与外部进行数据交换,每路AHB信号的数据通路是128 bit宽,地址位宽是16bit宽以寻址64KB地址空间,写使能信号是1bit,根据地址空间分配,使用地址高位译码选通写使能信号可以达到片选的目的,使得数据写入目标存储器;所述存储模块的突触连接及其权值存储器包含三个部分,存储核内1024个神经元1024×1024全连接权值的核内连接权值SRAM、存储核间256×1024突触连接以使得每个神经元最大支持来自核间的256个连接的CAM以及存储神经元的核间突触连接权值的核间连接权值SRAM;一个神经元核中的核内连接权值SRAM分为32个存储体,每个存储体对应存储一组32个神经元的内部全连接权值,每个存储体中的SRAM为1024深、128bit宽,其中1024深代表了每个神经元都能接收来自1024个核内神经元的扇入连接,权值4bit宽使得一行128bit顺序存放了一组32个神经元来自同一个源神经元的扇入连接,由于核内连接权值在使用时是顺序读取的,使得一组32个神经元是共享读核内连接权值的读地址的,当一行128bit被读出时,分送其不同部分给32个神经元作为核内连接权值使用;CAM当中使用存储源神经元的编号的方式来表示一条连接,使得如果属于一个神经元的CAM中存储了某个源神经元的编号则说明它们之间存在连接,以根据CAM中命中的地址,到核间连接权值SRAM中查询对应连接的权值进行计算使用;核间连接权值SRAM的核间连接权值直接对应了核间连接,当从核间连接CAM当中查询到了一条连接存在,那么根据查询到的地址可以直接访问核间连接权值SRAM取出对应连接的权值进行计算,每个神经元的核间连接CAM得出的访问权值的地址是不同的使得核间连接权值SRAM的读地址也不能在神经元间实现共享,每个神经元都拥有一个自己的核间连接权值SRAM;一个神经元核中包含32个核间连接权值SRAM的存储体,每个存储体对应存储一组神经元的核间连接权值,每个存储体包含32个SRAM,每个SRAM有256项,对应存储一个神经元的256个核间连接权值,256项中的每一项为4bit,表示一个核间连接权值;一个神经元核接入32路AHB信号,每个AHB信号对应一组神经元称之为一组神经元,第一组的地址空间存放内容依次为核内连接权值SRAM、核间连接CAM、核间连接权值SRAM、目的路由表和液体状态,其余的31组的地址空间分配相同,内容依次包含核内连接权值SRAM、核间连接CAM和核间连接权值SRAM;所述输入模块采用移位寄存器实现,每一个寄存器通过广播的形式连接到了一组32个神经元,输入脉冲或从核间脉冲报文中解析得到的源神经元编号信息从一端进入,在每一拍中其内容都左移,经过一段时间后将脉冲发送给所有神经元以实现脉冲数据的高效流水组播发送;
所述计算模块包含以二维计算阵列形式实现的神经元阵列、接收脉冲输出的脉冲内容寄存器、实现对脉冲内容的稀疏行进行处理的跳零机制模块和支持神经元扩展的电压归并比较单元,所述电压归并比较单元用于通过加法树将输入的存放于膜电压寄存器中的电压值,各个逐级两两求和完成其电压的归并计算得到扩展神经元的电压然后再与阈值电压进行比较,而预先设定的组合神经元数量参数决定了归并计算到达加法树的哪一个层级,该参数还被作为不同层级加法结果的选择信号,选通最终计算结果并写回膜电压寄存器中,当得到扩展神经元的最终电压值后,将该最终电压值与阈值电压进行比较操作,形成最终的神经元脉冲输出并写入脉冲内容寄存器中;在计算模块中,一组神经元与输入模块中的1个脉冲移位寄存器相连以接收核内以及核间脉冲输入,每个神经元与1个电压归并比较单元中的膜电压寄存器相连以输出其膜电压,每个电压归并比较单元经过阈值电压比较后,将比较结果与脉冲内容寄存器中的1比特相连,以实现脉冲输出的输出。
2.根据权利要求1所述的通用多核类脑处理器,其特征在于,所述输入核InputCore包括输入核接口模块、输入核存储模块、以及输入核控制器,所述输入核接口模块的功能是与路由器进行交互以实现脉冲报文的生成与发送,所述输入核存储模块的功能是存储输入神经元的核间扇出连接的目的路由表以及输入脉冲序列,所述输入核控制器用于实现对输入核接口模块的调度控制;所述输入核接口模块包含用于报文发送的写接口和用于脉冲报文生成的输入核报文生成器,所述写接口包含1个写通道,该通道包含4个信号:满full、请求req、应答ack以及数据data,满full、请求req、应答ack三个信号都是1bit且采用请求-应答信号握手来控制读写,数据data的位宽与一个脉冲报文的位宽64bit相同作为数据通路;所述输入核报文生成器用于遍历当前时间步的输入神经元的脉冲输出情况,对有脉冲输出的输入神经元,会查找目的路由表中存储的该神经元的核间扇出连接的目的节点,并遍历目的节点的信息,逐个生成包含目的节点坐标和源输入神经元编号的脉冲报文,经由缓冲发送给路由器进行脉冲报文的核间传递;每个输入核InputCore的路由表项数量与核内输入神经元的数量一致,每个路由表项长64bit以用于记录一个输入神经元的核间扇出连接信息,其中高36位中的每1bit都标识了该神经元是否有到36个神经元核中的一个的连接,使得目的路由表项最大支持表示单个神经元到另外36个神经元核LSMCore的扇出,一旦一个输入神经元产生脉冲输出,那么最多就会生成36个脉冲报文发送到片上网络中,低16位则存储了属于一个神经元的全局唯一的输入神经元编号;输入核InputCore的地址空间分配紧接在一个簇cluster当中的一个神经元核之后,用于存放输入神经元在神经元核第一组神经元地址空间最后部分的目的路由表,输入脉冲序列在后续31组地址空间的最后部分且目前支持1024个时间步中512个输入神经元的脉冲输入序列。
3.一种加速卡,包括加速卡本体和设于加速卡本体上的加速器,其特征在于,所述加速器为权利要求1或2所述的通用多核类脑处理器。
4.一种计算机设备,包括微处理器和与微处理器相连的神经网络计算加速器,其特征在于,所述神经网络计算加速器为权利要求1或2所述的通用多核类脑处理器。
CN202210038047.1A 2022-01-13 2022-01-13 一种通用多核类脑处理器、加速卡及计算机设备 Active CN114564434B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210038047.1A CN114564434B (zh) 2022-01-13 2022-01-13 一种通用多核类脑处理器、加速卡及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210038047.1A CN114564434B (zh) 2022-01-13 2022-01-13 一种通用多核类脑处理器、加速卡及计算机设备

Publications (2)

Publication Number Publication Date
CN114564434A CN114564434A (zh) 2022-05-31
CN114564434B true CN114564434B (zh) 2024-04-02

Family

ID=81711401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210038047.1A Active CN114564434B (zh) 2022-01-13 2022-01-13 一种通用多核类脑处理器、加速卡及计算机设备

Country Status (1)

Country Link
CN (1) CN114564434B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115271058B (zh) * 2022-09-29 2023-01-17 北京芯可鉴科技有限公司 类脑计算芯片和数据处理终端
CN116074267B (zh) * 2023-02-02 2024-04-09 北京大学 一种数据通信系统及SoC芯片

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105469143A (zh) * 2015-11-13 2016-04-06 清华大学 基于神经网络动态特征的片上网络资源映射方法
CN111082949A (zh) * 2019-10-29 2020-04-28 广东工业大学 一种类脑计算机中脉冲数据包高效传输方法
CN111783320A (zh) * 2020-08-03 2020-10-16 中国人民解放军国防科技大学 针对指定应用的类脑处理器NoC设计空间探索方法、系统及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11238347B2 (en) * 2018-09-28 2022-02-01 International Business Machines Corporation Data distribution in an array of neural network cores

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105469143A (zh) * 2015-11-13 2016-04-06 清华大学 基于神经网络动态特征的片上网络资源映射方法
CN111082949A (zh) * 2019-10-29 2020-04-28 广东工业大学 一种类脑计算机中脉冲数据包高效传输方法
CN111783320A (zh) * 2020-08-03 2020-10-16 中国人民解放军国防科技大学 针对指定应用的类脑处理器NoC设计空间探索方法、系统及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"大数据时代——从冯·诺依曼到计算存储融合";邱赐云等;《计算机科学》;第45卷(第11A期);71-75 *

Also Published As

Publication number Publication date
CN114564434A (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
CN114564434B (zh) 一种通用多核类脑处理器、加速卡及计算机设备
KR100840140B1 (ko) 메모리 허브 메모리 모듈들을 사용하여 데이터 전송들을조직화하는 시스템 및 방법
US11294599B1 (en) Registers for restricted memory
US8225027B2 (en) Mapping address bits to improve spread of banks
WO2020078470A1 (zh) 片上网络数据处理方法及装置
CN104699631A (zh) Gpdsp中多层次协同与共享的存储装置和访存方法
US7251698B2 (en) Address space management in systems having multiple multi-processor clusters
JP2021507386A (ja) ニューラルネットワーク処理のための共用メモリの集中型−分散型混合構成
CN106844263B (zh) 一种基于可配置的多处理器计算机系统及实现方法
US11704270B2 (en) Networked computer with multiple embedded rings
CN114297097B (zh) 一种众核可定义分布式共享存储结构
CN117493237B (zh) 计算设备、服务器、数据处理方法和存储介质
US20230269205A1 (en) Switch for transmitting packet, network on chip having the same, and operating method thereof
JP4687925B2 (ja) 優先調停システム及び優先調停方法
US11526460B1 (en) Multi-chip processing system and method for adding routing path information into headers of packets
CN114398308A (zh) 基于数据驱动粗粒度可重构阵列的近内存计算系统
Liu Architecture and performance of processor-memory interconnection networks for MIMD shared memory parallel processing systems
CN111078625B (zh) 片上网络处理系统和片上网络数据处理方法
CN113159302A (zh) 一种用于可重构神经网络处理器的路由结构
CN112579510A (zh) 一种芯片集群
CN117176674B (zh) 片上网络及数据传输方法、芯片、设备
CN113065647B (zh) 加速神经网络的计算-存储通信系统及通信方法
CN111078624A (zh) 片上网络处理系统和片上网络数据处理方法
US20230259486A1 (en) Neural processing unit synchronization systems and methods
Lin et al. A Configurable Inter-chip Connection Architecture for Multicore Neuromorphic Chip

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