CN109816102A - 用于尖峰神经网络的可重配置的神经突触核 - Google Patents
用于尖峰神经网络的可重配置的神经突触核 Download PDFInfo
- Publication number
- CN109816102A CN109816102A CN201811230495.1A CN201811230495A CN109816102A CN 109816102 A CN109816102 A CN 109816102A CN 201811230495 A CN201811230495 A CN 201811230495A CN 109816102 A CN109816102 A CN 109816102A
- Authority
- CN
- China
- Prior art keywords
- core
- cynapse
- processor
- neuron
- nerves
- 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.)
- Pending
Links
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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
-
- 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/08—Learning methods
-
- 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/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Semiconductor Memories (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请公开了用于尖峰神经网络的可重配置的神经突触核。在一个实施例中,处理器包括:第一神经突触核,包括第一电路,用于:响应于由配置参数指定的第一值,将第一神经突触核配置为神经元核;以及响应于由配置参数指定的第二值,将第一神经突触核配置为突触核。
Description
技术领域
本公开一般涉及计算机开发领域,并且更具体地涉及尖峰神经网络。
背景技术
神经网络可以包括在构造生物大脑之后松散地建模的一组神经元,生物大脑包括通过突触连接的神经元的大的集群。在神经网络中,神经元通过链路连接到其他神经元,链路可能对连接的神经元的激活状态有兴奋或抑制作用。神经元可利用其输入的值来执行功能以更新神经元的膜电位。当超过与神经元相关联的阈值时,神经元可以将尖峰信号传播到连接的神经元。可以训练或以其他方式调整神经网络以执行各种数据处理任务,诸如计算机视觉任务、语音识别任务、数据分类任务或其他合适的计算任务。
附图说明
图1示出了根据某些实施例的包括可以实现神经网络的芯片上网络(NoC)系统的处理器的框图;
图2示出了根据某些实施例的神经网络的示例部分;
图3A示出了根据某些实施例的包括可重配置的神经突触核块的系统的神经形态处理器;
图3B示出了根据某些实施例的包括可重配置的神经突触核块的系统的第二神经形态处理器;
图4示出了具有可重配置的神经突触核的神经突触核块;
图5示出了根据某些实施例的以重突触模式配置的神经突触核块;
图6示出了根据某些实施例的以重神经元模式配置的神经突触核块;
图7A示出了根据某些实施例的用于配置神经突触核的流程;
图7B示出了根据某些实施例的用于配置神经突触核的流程;
图8A是示出根据某些实施例的示例性有序流水线以及示例性寄存器重命名、乱序发布/执行流水线的框图;
图8B是示出根据某些实施例的要被包括在处理器中的有序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者的框图;
图9A-9B示出根据某些实施例的更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(潜在地包括相同类型和/或不同类型的其他核)中的一个逻辑块;
图10是根据某些实施例的可具有超过一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器的框图;
图11、12、13和14是根据某些实施例的示例性计算机架构的框图;以及
图15是根据某些实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
各个附图中相同的参考数字和标记表示相同的元件。
具体实施方式
在以下描述中,阐明了众多具体细节,诸如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等的示例,以提供对本公开的透彻理解。然而,对本领域普通技术人员将显而易见的是,不一定要采用这些具体细节来实施本公开。在其他实例中,未详细描述公知的组件或方法,以避免不必要地使本公开模糊,公知的组件或方法诸如,特定和替代的处理器架构、用于所描述算法的特定逻辑电路/代码、特定的固件代码、特定的互连操作、特定的逻辑配置、特定的制造技术和材料、特定的编译器实现、代码中算法的特定表达、特定的掉电和功率门控技术/逻辑以及计算机系统的其他特定的操作细节。
尽管可能参考特定集成电路(诸如,计算平台或微处理器)描述以下实施例,但是其他实施例适用于其他类型的集成电路和逻辑器件。本文中所描述实施例的类似技术和教导可应用于其他类型的电路或半导体器件。例如,所公开的实施例可以在各种设备中使用,诸如服务器计算机系统、台式计算机系统、手持式设备、平板电脑、其他薄笔记本、芯片上系统(SOC)设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。此外,本文描述的装置、方法和系统不限于物理计算设备,而是还可涉及用于节能和能效的软件优化。
图1示出了根据某些实施例的包括可以实现神经网络的芯片上网络(NoC)系统的处理器100的框图。处理器100可以包括任何处理器或处理设备,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协处理器、SoC、或用于执行代码的其他设备。在特定实施例中,处理器100实现在单个管芯上。
在所描绘的实施例中,处理器100包括布置在网格网络中并且利用双向链路彼此耦合的多个网络元件102。然而,根据本公开的各实施例的NoC可以应用于任何合适的网络拓扑(例如,分层网络或环形网络)、尺寸、总线宽度和过程。在所描绘的实施例中,每个网络元件102包括路由器104和核108(在一些实施例中,其可以是实现神经网络的神经元和/或突触的神经突触核块),然而在其他实施例中,来自不同网络元件102的多个核可以共享单个路由器104。路由器104可以在网络中彼此通信地链接,诸如分组交换网络和/或电路交换网络,从而实现连接到路由器的NoC的组件(诸如核、存储元件或其他逻辑块)之间的通信。在所描绘的实施例中,每个路由器104通信地耦合到其自己的核108。在各实施例中,每个路由器104可以通信地耦合到多个核108(或其他处理元件或逻辑块)。如本文中所使用的,对核的引用也可以应用于使用不同逻辑块代替核的其他实施例。例如,各种逻辑块可以包括硬件加速器(例如,图形加速器、多媒体加速器、或视频编码/解码加速器)、I/O块、存储器控制器、或其他合适的固定功能逻辑。处理器100可以包括任何数量的可以是对称的或不对称的处理元件或其他逻辑块。例如,处理器100的核108可以包括不对称核或对称核。处理器100可以包括用作分组交换网络和电路交换网络之一或两者的逻辑,以提供管芯内通信。
在特定实施例中,可以使用分组交换网络的资源在各种路由器104之间传送分组。换言之,分组交换网络可以提供路由器(及其相关联的核)之间的通信。分组可以包括控制部分和数据部分。控制部分可以包括分组的目的地地址,并且数据部分可以包含要在处理器100上传送的特定数据。例如,控制部分可以包括与管芯的网络元件或核中的一个对应的目的地地址。在一些实施例中,分组交换网络包括缓冲逻辑,因为不能确保从源到目的地的专用路径,并且如果两个或更多个分组需要穿越相同的链路或互连,则可能需要暂时停止分组。作为示例,当分组从源行进到目的地时,可以在相应路由器中的每一个处缓冲分组(例如,通过触发器)。在其他实施例中,可以省略缓冲逻辑,并且当发生冲突时可以丢弃分组。分组可以由路由器104接收、发送和处理。分组交换网络可以使用相邻路由器之间的点对点通信。可以基于分组时钟(诸如4GHz时钟)在路由器之间传输分组的控制部分。可以基于类似时钟(诸如4GHz时钟)在路由器之间传输分组的数据部分。
在实施例中,可以在两个网络中不同地提供处理器100的路由器或者处理器100的路由器可以在两个网络中通信,诸如分组交换网络和电路交换网络。这种通信方法可以称为混合分组/电路交换网络。在此类实施例中,可以使用分组交换网络和电路交换网络的资源在各种路由器104之间各种各样地传送分组。为了发送单个数据分组,电路交换网络可以分配整个路径,而分组交换网络可以仅分配单个段(或互连)。在一些实施例中,分组交换网络可用于保留电路交换网络的资源以用于在路由器104之间传输数据。
路由器104可以包括多个端口组,以不同地耦合到相邻的网络元件102并与其通信。例如,可以通过这些端口组传送电路交换和/或分组交换信号。路由器104的端口组可以在逻辑上划分,例如,根据相邻的网络元件的方向和/或与这些元件的通信量交换的方向。例如,路由器104可以包括具有输入(“IN”)和输出(“OUT”)端口的北端口组,该输入和输出端口被配置为(分别)从位于相对于路由器104的“北”方向的网络元件102接收通信和向其发送通信。附加地或替代地,路由器104可包括类似的端口组,以与位于南、西、东或其他方向的网络元件对接。在所描绘的实施例中,路由器104被配置用于先X后Y的路由,其中数据首先在东/西方向上移动并且然后在北/南方向上移动。在其他实施例中,可以使用任何合适的路由方案。
在各实施例中,路由器104进一步包括另一端口组,该端口组包括输入端口和输出端口,该输入端口和输出端口被配置为(分别)从网络的另一代理接收通信和向其发送通信。在所描绘的实施例中,该端口组被示出在路由器104的中心。在一个实施例中,这些端口用于与逻辑通信,该逻辑与路由器104相邻、与路由器104通信或以其他方式与路由器104相关联,诸如“本地”核108的逻辑。本文中,该端口组将被称为“核端口组”,但是在一些实现方式中它可以与除核之外的逻辑对接。在各实施例中,核端口组可以与多个核对接(例如,当多个核共享单个路由器时),或者路由器104可以包括各自与相应的核对接的多个核端口组。在另一实施例中,该端口组用于与网络元件通信,该网络元件处于比路由器104的层级更高的网络层级结构的下一层级。在一个实施例中,东和西方向链路在一个金属层上,北和南方向链路在第二金属层上,并且核链路在第三金属层上。在实施例中,路由器104包括交叉开关和仲裁逻辑,以提供端口间通信的路径,诸如图1所示的端口间通信。每个网络元件中的逻辑(诸如核108)可以具有唯一的时钟和/或电压或者可以与NoC的一个或多个其他组件共享时钟和/或电压。
在特定实施例中,网络元件的核108可以包括神经突触核块(例如,包括一个或多个神经突触核)以实现一个或多个神经元和/或一个或多个突触。处理器可以包括一个或多个神经突触核。在各实施例中,每个神经突触核可以包括一个或多个计算逻辑块,其在神经突触核的神经元和/或突触上进行时间复用。计算逻辑块可操作以为神经元执行各种计算,诸如更新神经元的膜电位、确定膜电位是否超过阈值、和/或与神经元相关联的其他操作。本文中,对神经元的引用可以指代用于实现神经网络的神经元的逻辑(例如,电路)。这种逻辑可以包括用于与神经元相关联的一个或多个参数的存储。在一些实施例中,用于实现神经元的逻辑可以与用于实现一个或多个其他神经元的逻辑重叠(在一些实施例中,对应于神经元的神经元可以与对应于其他神经元的其他神经元共享计算逻辑,并且控制信号可以确定哪个神经元当前正在使用逻辑进行处理)。
图2示出了根据某些实施例的神经网络200的示例部分。神经网络200包括神经元X1-X9。神经元X1-X4是分别接收主输入I1-I4的输入神经元(其可以在神经网络200处理输出时保持恒定)。可以使用任何合适的主输入。作为一个示例,当神经网络200执行图像处理时,主输入值可以是来自图像的像素的值(并且在处理图像时主输入的值可以保持恒定)。作为另一示例,当神经网络200执行语音处理时,应用于特定输入神经元的主输入值可以基于输入语音的变化而随时间改变。
虽然图2中示出了特定拓扑和连接性方案,但是本公开的教导可以在具有任何合适的拓扑和/或连接性的神经网络中使用。例如,神经网络可以是前馈神经网络、递归网络、卷积神经网络或具有神经元之间的任何合适的连接性的其他神经网络。在所描绘的实施例中,每个两个神经元之间的链路具有突触权重,其指示两个神经元之间的关系的强度。突触权重被描绘为WXY,其中X指示突触前神经元,并且Y指示突触后神经元。神经元之间的链路可能对连接的神经元的激活状态有兴奋或抑制作用。例如,取决于W15的值,从X1传播到X5的尖峰可以增加或减少X5的膜电位。在各实施例中,连接可以是定向的或不定向的。
一般而言,在神经网络的每个时间步长期间,神经元可以接收任何合适的输入,诸如来自多个神经元中的一个或多个的偏置值或一个或多个输入尖峰,多个神经元经由相应的突触连接到该神经元(这一组神经元被称为该神经元的扇入神经元)。应用于神经元的偏置值可以是应用于输入神经元的主输入和/或应用于神经元的一些其他值(例如,可以在神经网络的训练或其他操作期间调整的恒定值)的函数。在各实施例中,每个神经元可以与其自身的偏置值相关联,或者偏置值可以应用于多个神经元。
神经元可以利用其输入的值及其当前的膜电位执行功能。例如,可以将输入添加到神经元的当前的膜电位以生成更新的膜电位。作为另一示例,诸如sigmoid传递函数的非线性函数可以应用于输入和当前的膜电位。可以使用任何其他合适的函数。然后神经元基于函数的输出更新其膜电位。当神经元的膜电位超过阈值时,神经元可以向其扇出神经元(即,连接到尖峰神经元的输出的神经元)中的每一个发送尖峰。例如,当X1出现尖峰时,尖峰可以传播到X5、X6和X7。作为另一示例,当X5出现尖峰时,尖峰可以传播到X8和X9(并且在一些实施例中到X1、X2、X3和X4)。在各实施例中,当神经元出现尖峰时,尖峰可以传播到驻留在同一神经突触核块上的一个或多个连接的神经元和/或分组化并通过一个或多个路由器104传输到包括尖峰神经元的扇出神经元中的一个或多个的神经突触核块。当特定神经元出现尖峰时尖峰被发送到的神经元被称为该神经元的扇出神经元,而可能将尖峰发送到特定神经元的神经元被称为该神经元的扇入神经元。
在特定实施例中,一个或多个存储器阵列可以包括存储突触权重、膜电位、阈值、输出(例如,神经元已经出现尖峰的次数)、偏置量或在神经网络200的操作期间使用的其他值的存储器单元。用于这些值中的每一个的位的数量可以取决于实现方式而变化。在以下示出的示例中,可以关于特定值描述特定位长,但是在其他实施例中,可以使用任何合适的位长。可以使用任何合适的易失性和/或非易失性存储器来实现存储器阵列。
可以通过在互连网络上平铺模块化神经元核和突触核来构建尖峰神经形态计算机,其中突触核存储并处理突触权重,并且神经元核存储神经元膜电位并生成尖峰(在一些实施例中,神经元核还可以执行权重整合)。研究表明,哺乳动物大脑中的生物神经网络通常具有数十亿个神经元,其中神经元具有与多达大约10000个神经元的扇出连接(每个连接具有突触)。为了模拟尖峰神经网络(SNN)中的这种高扇出行为,SNN硬件可以包括用于存储突触权重的大突触阵列(例如,静态随机存取存储器(SRAM))。取决于实现方式,神经元与其连接的突触之间的比率可以约为1:1000。例如,为了支持稀疏或密集连接的尖峰网络,诸如前馈和递归神经网络、或限制/非限制波尔兹曼机型网络,SNN硬件可以支持1:1024的神经元-突触比。这种网络可以称为“重突触”网络。
作为重突触网络的一个示例,尖峰液态机(LSM)网络可以处理并分类28x28个像素的经修改的国家标准和技术研究所(MNIST)数位,其中每个像素被映射到神经元。这种网络可以在可见层上构建有28x28=784个神经元并且在隐藏的储层中构建有512个神经元。在连接性的示例稀疏性为25%的情况下,网络将利用0.25x(784x512+512x512)=165888个突触,导致该网络的神经元-突触比为1:212。
另一方面,用于例如视觉处理的最先进的深度学习或卷积神经网络(CNN)通常利用相反数量的硬件资源,即,大量神经元来处理和存储图像/视频像素和激活映射(也称为卷积特征或特征映射)和相对少的共享突触权重来存储特征(也称为过滤器、内核或特征检测器)以用于卷积操作。这种网络可以称为“重神经元”网络。
例如,针对尖峰深CNN的神经突触硬件可以利用共享突触权重,其通过在图像块上被跨步和卷积来存储要对输入图像提取的多个特征。然后将输入图像的每个像素映射到执行激活的各个神经元。作为示例,在第一卷积层上具有64个尺寸为8x8并且跨度为2的特征的尖峰深CNN网络可以处理和分类256x256个像素的红绿蓝(RGB)图像。该示例网络可以使用64x8x8x3个特征权重(即,特征的突触权重)来生成64x125x125x3个激活映射。在尖峰神经形态计算机中,这种网络将被映射到存储和执行激活的64x125x125=1000000个神经元以及存储要在图像上卷积的特征权重的64x8x8x3=12288个突触。在该示例中,神经网络具有大约81:1的神经元-突触比。
本公开的各实施例允许神经形态处理器通过提供可重配置的资源以取决于目标网络类型作为神经元或突触执行来高效地支持具有相反资源需求的不同类型的神经网络。例如,数字SNN神经形态处理器可以包括可重配置的神经突触核。在一些实施例中,可重配置的神经突触核被布置在神经突触核块中。每个神经突触核块可以包括一个或多个第一神经突触核和/或一个或多个第二神经突触核。在一个配置中,神经突触核块的第一神经突触核被配置为神经元核,并且神经突触核块的第二神经突触核被配置为突触核。在第二配置中,第一神经突触核被配置为突触核,并且第二神经突触核被配置为神经元核。在特定实施例中,第一神经突触核各自包括快速访问小存储器阵列,并且第二神经突触核各自包括高密度大存储器阵列,其包括比小存储器阵列更多的存储空间。在特定实施例中,小阵列是寄存器堆(RF),并且大阵列是静态随机存取存储器(SRAM)。
对于重突触网络,具有小存储器阵列的神经突触核可以被指定为神经元核以生成尖峰、存储和更新神经元膜电位,并且具有大存储器阵列的神经突触核可以被指定为突触核以存储突触权重并执行突触任务,诸如如果执行在线学习的权重更新。相反,对于重神经元网络类型,具有小存储器阵列的神经突触核可以被指定为突触核,并且具有大存储器阵列的神经突触核可以被指定为神经元核。在其中所实现的网络是CNN的一个实施例中,突触核可以将特征的共享权重存储在小阵列中,并且具有大存储器阵列的神经元核可以存储并生成神经元激活的部分和。本公开的各实施例可以通过允许将重突触神经网络(例如,前馈)和重神经元神经网络(例如,CNN)映射到同一处理器硬件上来提高神经形态处理器的效率。
在另一实施例中,神经突触核块的两个神经突触核可以共享单个大存储器阵列,诸如SRAM,其可以被划分为用于存储神经元相关信息的第一部分和用于存储突触权重的第二部分。可以经由适当的地址指针或行偏移来标识每个部分。
本公开的各实施例可以通过在适当的神经突触核中实现专用逻辑来提供可以与任何合适的神经网络和工作机制一起使用的神经形态处理器,诸如(但不限于)在线生物学上看似合理的学习规则、稀疏连接性、时间编码、兴奋抑制网络、可配置的权重精度、奖励调制、定向的和不定向的网络连接、前向和后向发送的尖峰、以及其他工作机制。
图3A示出了根据某些实施例的包括可重配置的神经突触核块308的系统的神经形态处理器300。处理器300包括布置在NoC中的多个网络元件302,其中网络元件302各自包括连接到路由器304的神经突触核块308。在其他实施例中,每个路由器304可以连接到网络元件302中的任何数量的神经突触核块308以最小化网络资源。各网络元件302的路由器304可以允许神经突触核彼此通信。在各实施例中,网络元件302可以具有网络元件102的任何合适的特性,路由器304可以具有路由器104的任何合适的特性,并且神经突触核或核块308可以具有核108的任何合适的特性。在特定实施例中,神经突触核和/或核块是模块化的并且可以(与它们的相关联的路由器304一起)在处理器300上平铺。
神经突触核块308包括一个或多个神经突触核,其各自包括逻辑(例如,电路和其他支持逻辑)以用作神经元核或突触核。例如,在所描绘的实施例中,神经突触核块308包括第一神经突触核310和第二神经突触核312。在另一实施例中,神经突触核块308可以包括单个第一神经突触核310。在又一实施例中,神经突触核块308可以包括单个第二神经突触核312。在又一实施例中,神经突触核块308可以包括多个第一神经突触核310和/或多个第二神经突触核312。
在特定实施例中,神经突触核块308的第一神经突触核310与核块308的第二神经突触核312之间的通信可以穿过路由器304(因此每个神经突触核可以与路由器304的输入和输出端口对接)。在另一实施例中,神经突触核可以使用用于神经突触核之间的通信的专用信道硬连线在一起,使得神经突触核块的神经突触核之间的通信不穿过路由器304。每个神经突触核可以经由路由器304(和其他路由器,如果目标神经突触核在不同的网络元件302中)与处理器上的其他神经突触核通信。在各实施例中,神经突触核可以共享或使用NoC上的其他神经突触核块中的其他可用资源。各种其他实施例可以实现任何合适的通信选项。
当核块308的神经突触核被配置为神经元核时,其可实现多个神经元,并且当神经突触核被配置为突触核时,其可实现多个突触。可以通过实现一个或多个查找表、基于指针的连接、数学映射函数、或其他合适的连接性方案来实现系统的各神经突触核的神经元和突触的连接性。取决于NoC架构及其路由方案,可以广播、多播、或单播输入和神经元-神经元通信尖峰,并且神经形态处理器300的各实施例与这些通信方法中的任一个兼容。
神经突触核块308(和/或各个神经突触核)还可以与资源配置参数314相关联。在特定实施例中,参数314可以实现为二进制指示(例如,经由单个位)。在实施例中,参数314由用户或其他实体基于期望的配置离线地设置,并且其在处理器300的运行时期间(即,当神经网络被操作时)保持恒定,但是本公开不一定限于此。在各实施例中,资源配置参数314是全局设置,其在处理器的全部核块308和/或神经突触核上具有统一值。在其他实施例中,对于不同的神经突触核,配置参数314可以是不同的,取决于为所实现的神经网络利用的资源。在特定实施例中,对于给定的核块308的两个神经突触核,资源配置参数314是互斥的。换言之,对于参数314的第一值,第一神经突触核310被配置为神经元核,并且第二神经突触核312被配置为突触核,并且对于参数314的第二值,第二神经突触核312被配置为神经元核,并且第一神经突触核310被配置为突触核。在特定实施例中,可以通过以下操作来保证该状况:通过对资源配置参数314进行缓冲来生成用于第一神经突触核的配置信号、通过反转用于第一神经突触核的配置信号来生成用于第二神经突触核的配置信号、并且将经反转的信号提供给第二神经突触核。在各实施例中,使用具有互斥性的全局配置设置保留核的神经元和突触处理能力和顶级寻址。
图3B示出了根据某些实施例的包括可重配置的神经突触核块308A和308B的系统的第二神经形态处理器350。神经突触核块308A和308B可以具有神经突触核块308的任何合适的特性。神经突触核块308A包括单个第一神经突触核310,并且神经突触核块308B包括单个第二神经突触核312。任何合适数量的网络元件302可以各自包括神经突触核块308A,并且任何合适数量的网络元件302可以各自包括神经突触核块308B。在各实施例中,处理器可以包括任何合适数量的第一神经突触核310和第二神经突触核312。在特定实施例中,将资源配置参数314提供给第一神经突触核310中的每一个和第二神经突触核312中的每一个。在其他实施例中,对于不同的神经突触核,配置参数314可以是不同的(例如,每个神经突触核310或312可以接收其自己的配置参数314,使得神经突触核可以是单独配置的)。
图4示出了具有可重配置的神经突触核310和312的神经突触核块308。在所描绘的实施例中,神经突触核310包括小存储器阵列410,并且神经突触核312包括大存储器阵列412,其大于小阵列410。在其他实施例中,可以在每个神经突触核内使用任何合适尺寸的存储器阵列,或者一个或多个神经突触核可以共享一个或多个存储器阵列。一般而言,当神经网络是重突触的时,具有较大阵列的神经突触核可以被指定为突触核,并且具有较小阵列的神经突触核可以被指定为神经元核(该配置可以被称为重突触模式)。相反,当神经网络是重神经元的时,具有较大阵列的神经突触核可以被指定为神经元核,并且具有较小阵列的神经突触核可以被指定为突触核(该配置可以被称为重神经元模式)。资源配置参数314可以指定将以重神经元模式还是以重突触模式使用核块308。
在特定实施例中,当处理器300将实现权重共享尖峰神经网络时可以选择重神经元模式,其中可以在不同神经元对之间共享突触权重。权重共享尖峰神经网络的一个示例是CNN,其中可以共享特征权重以生成来自同一输入层的不同激活映射。在各实施例中,当处理器300将实现非权重共享尖峰神经网络时可以选择重突触模式,其中在不同神经元对之间不共享突触权重。例如,在许多前馈或递归网络中,每个连接的神经元对包括其自己的突触权重。在各实施例中,任何合适的神经网络可以通过重神经元和重突触模式来实现。
在各实施例中,核块308的神经突触核以存储器中处理方式建立,其中在每个神经突触核的中心处的存储器与专用电路紧密地集成并且被专用电路包裹。用于重神经元和重突触操作的专用神经元和突触电路建立在存储器阵列周围,并且基于从资源配置参数314导出的配置小阵列信号406和配置大阵列信号408被选择性地激活(例如,可以经由缓冲器402对参数314进行缓冲以产生信号406,并且可以经由反相器404反转参数314以产生信号408)。当特定电路在神经突触核中被激活时,其可以控制神经突触核的存储器阵列并且处置所有突触或神经元操作,而未被使用的电路由相应的信号406或408去激活并且功率门控以最小化泄漏。
例如,在所描绘的实施例中,第一神经突触核310包括各种电路块,包括可以基于资源配置参数314的值(例如,经由配置小阵列信号406)被选择性地激活的突触地址生成器414、神经元地址生成器416、突触处理电路428、以及神经元处理电路430,并且第二神经突触核312包括各种电路块,包括可以基于资源配置参数314的值(例如,经由配置大阵列信号408)被选择性地激活的突触地址生成器415、神经元地址生成器417、突触处理电路429、以及神经元处理电路431。经激活的电路块的输出信号可以由复用器和解复用器块418-427控制,其也由资源配置参数314(例如,经由配置小阵列信号406和配置大阵列信号408)控制。
如上所述,神经突触核块308可以包括用于访问配置参数(例如,资源配置参数314、其导数、或其他配置参数(诸如单独地分配给特定神经突触核块308的配置参数))的电路。该电路还可以在配置参数指定第一值时将神经突触核(例如,310或312)配置为神经元核并且在配置参数指定第二值时将神经突触核配置为突触核。该配置电路可以包括任何合适的电路(例如,电路迹线、复用器、解复用器、或可以基于配置参数的值选择性地启用和禁用电路的其他选择电路)。在至少一个实施例中,将神经突触核(例如,310或312)配置为神经元核可以包括以下的一项或多项:启用核的神经元地址生成器(例如,416或417)和神经元处理电路(例如,430或431);以及禁用突触地址生成器(例如,414或415)和突触处理电路(例如,428或429)。在至少一个实施例中,将神经突触核(例如,310或312)配置为突触核可以包括以下的一项或多项:禁用核的神经元地址生成器(例如,416或417)和神经元处理电路(例如,430或431);以及启用突触地址生成器(例如,414或415)和突触处理电路(例如,428或429)。
神经元处理电路430和神经元处理电路431可以执行关于核块308的神经元的任何合适的操作。例如,此类操作可以包括更新神经元的状态、更新膜电位、学习操作、生成尖峰、本文中所描述的其他操作、和/或其他合适的操作。当神经突触核310或312被配置为神经元核时,神经突触核的阵列可以用于存储膜电位和神经元状态。可以为神经元存储任何合适的神经元状态,诸如神经元是否在不应期中、不应期中剩余多少时间步长、用于在线学习的尖峰时序信息、偏置信息、泄漏信息、神经元的尖峰率、和/或其他合适的状态信息。
在各实施例中,神经元处理电路430可以与神经元处理电路431对称或不对称。例如,在特定实施例中,神经元处理电路430可以执行与神经元处理电路431相同的一组操作。在另一实施例中,神经元处理电路430和神经元处理电路431可以各自执行唯一的一组操作(例如,适于不同的目标神经网络)。类似地,突触处理电路428和突触处理电路429可以是对称的或不对称的。在各实施例中,处理器可以包括各自包括310中所描绘的电路块的多个第一神经突触核以及各自包括312中所描绘的电路块的多个第二神经突触核。
在特定实施例中,神经元状态和膜电位紧凑地存储在阵列的单个区块(例如,单个寄存器堆或SRAM)中。在另一实施例中,膜电位存储在阵列的第一区块中并且神经元状态存储在阵列的第二区块中以减少能量使用并提高性能(可能以较大的存储器阵列面积为代价)。
在特定实施例中,小阵列410是寄存器堆(例如,从位单元建立)。例如,小阵列410可以是为用于其小尺寸的读和写操作提供低能耗的寄存器堆,该寄存器堆包括可以被同时操作以用于快速多端口访问的写入端口和读取端口。在另一实施例中,小阵列410是SRAM。在其他实施例中,小阵列410可以包括任何其他合适的随机存取存储器结构,诸如触发器的阵列。
在特定实施例中,大阵列412是SRAM。例如,大阵列412可以是SRAM,其包括用于读取和写入的单个端口以用于高密度和低面积的影响。在其他实施例中,大阵列412可以包括任何其他合适的随机存取存储器结构,诸如寄存器堆或嵌入式DRAM。
在各实施例中,(例如,基于硬件的目标频率、能量和面积规范),小阵列410和/或大阵列412可以在单个实例中建立或利用并行的分割区块建立并且可以具有任何合适数量的读取和写入端口。
在替代实施例中,单个大存储器(例如,SRAM)可以被动态地分割以利用地址指针或行偏移为小阵列410和大阵列412分配存储器空间。在特定实施例中,如果存储器具有单个读取端口、单个写入端口、或单个组合的读取和写入端口,则经激活的神经元和突触电路单元(例如,电路块414、428、417和431或416、430、415和429)可以以时间复用方式控制统一存储器(例如,SRAM),或者如果存储器能够进行多端口读取和写入,则可以并行地工作。
连接性电路432和434可以包括用于确定系统的各个神经突触核的互连的神经元和突触的电路。例如,当特定神经元出现尖峰时,可以访问被配置为神经元核的神经突触核的连接性电路432或434以确定哪些神经突触核包括用于从出现尖峰的该神经元到扇出神经元的连接的突触权重。作为另一示例,当突触权重将被发送到神经元时,可以访问被配置为突触核的神经突触核的连接性电路432或434以确定哪个神经突触核具有目标神经元。连接性电路也可以用于其他目的,例如,用于引导回尖峰或者学习可以在在线学习方案中使用的消息。连接性电路432或434可以置于神经突触核块308的任何合适的位置中。连接性电路432和434可以经由查找表、基于指针的连接、数学映射函数、或其他合适的连接性方案来实现。
尽管第一神经突触核310的输出被示出为经由路由器304连接到第二神经突触核312的输入,并且反之亦然,但是在各实施例中,第一和第二神经突触核的输出和输入可以经由一个或多个路由器耦合到系统的任何数量的其他神经突触核。例如,用于第一神经元与第二神经元之间的连接的突触权重可以存储在第一神经突触核中,而第一神经元和第二神经元中的一个或两个存储在不同的神经突触核中。
图5示出了根据某些实施例的以重突触模式配置的神经突触核块308。在所描绘的实施例中,第一神经突触核310被配置为神经元核,并且第二神经突触核312被配置为突触核。在重突触模式中,具有小阵列410的神经元核承担存储并更新神经元状态和膜电位并生成尖峰的任务。具有大阵列412的突触核承担存储大量突触权重并将这些权重发送到与尖峰活动相关联的适当的目标神经元的任务。突触核还可以承担如果实现在线学习则更新突触权重的任务(在一些实施例中,神经元核可以确定何时要更新突触权重)。
神经元核实现一组神经元。在各实施例中,神经元可以被配置为整合放电(integrate-fire)或泄漏整合放电(leaky-integrate-fire)(IF或LIF)神经元。神经元的膜电位和状态存储在小阵列410中。在特定实施例中,神经元处理电路430是在神经元组的全部神经元上时间复用的以最小化逻辑面积。在特定实施例中,神经元处理电路430可以执行传入突触权重整合、时间步长更新、尖峰生成、和/或与神经元相关联的其他操作。如果存在在线学习,则神经元处理电路430还可以在适当的后-前和前-后型神经元连接下执行学习任务。
神经网络的突触核将传入突触权重发送到神经元核。例如,当神经元出现尖峰时,可以将神经元(其可以被称为前神经元)与扇出神经元(即,后神经元)之间的连接的突触权重发送到扇出神经元(其可以位于单个神经元核中或者可以跨越多个神经突触核的神经元核)。
在接收突触权重和目标神经元(即,接收尖峰的神经元)的标识符之后,神经元地址生成器416可以确定小阵列410内的神经元的位置。神经元处理电路430基于传入突触权重从阵列410读取并更新目标神经元的膜电位(例如,通过利用加法器502以将突触权重与膜电位累加),并且经更新的膜电位被写回到小阵列410中的适当的地址。
在时间步长更新操作期间,神经元处理电路430(例如,通过利用比较器504)将神经元的膜电位与预设的阈值进行比较。在各实施例中,该比较可以在基于所接收的尖峰更新膜电位之前或在更新膜电位之后发生。如果膜电位大于阈值,则神经元生成尖峰。如果电位不大于阈值,则取决于所实现的神经元行为(例如,IF或LIF),神经元的膜电位可以保持不变或泄漏。在各实施例中,偏置(其可以是恒定的或动态的)还可以用于调节每个时间步长的膜电位。一旦神经元生成尖峰,神经元的膜电位被重置并且神经元进入不应期,在不应期期间其不能出现尖峰(例如,膜电位可以保持在重置值)。当不应期结束时(通常在几个时间步长中),神经元恢复正常操作。如果实现诸如尖峰时间依赖可塑性(STDP)机制的在线学习,则神经元还可以利用适当的计数机制来跟踪尖峰次数。取决于后-前与前-后尖峰之间的时序关系,神经元可以生成被发送到适当的突触核的学习信号以触发对突触权重的更新。神经元处理电路430可以执行上述操作中的任一个或与神经元操作(例如,时间步长前进)相关联的任何其他合适的操作。
由第二神经突触核312实现的突触核包括用于存储突触权重的大阵列412,突触权重可以是单个位或多个位的权重。突触核可以承担处理传入的“前-后”、“后-前”尖峰以及如果存在在线学习的学习信号的任务。以此方式,突触核可以通过访问前神经元与后神经元之间的连接的突触权重并且将突触权重发送到适当的前神经元或后神经元(取决于尖峰是前向传播动作电位,即前向尖峰,还是后向传播动作电位,即后向尖峰)、并且基于所实现的学习规则根据前神经元和后神经元的尖峰时序来更新突触权重以为前神经元和后神经元充当中间通信介质。
当接收到尖峰时,突触核首先访问适当的突触权重。可以使用查找表、映射函数、用于处理由传入尖峰提供的地址指针的逻辑、或用于基于所接收的尖峰(可以与允许标识尖峰神经元与目标神经元之间的连接的突触权重的任何合适的信息一起发送尖峰)确定要被访问的一个或多个突触权重的其他合适机制来实现突触地址生成器415。取决于突触权重的位精度和阵列412的宽度,突触权重可以交错地存储在阵列412的行内或者由阵列412的行单独地存储。一旦突触权重被读取,其被突触核发送到其目标神经元。在各实施例中,可以连续地读取多个突触权重(例如,如果突触核包括多个接收尖峰的扇出神经元的突触权重)。
如果接收到学习信号,则由突触处理电路429利用适当的学习规则更新权重。例如,对于在线STDP学习规则,当在用于学习的时间窗口内后神经元晚于前神经元出现尖峰时,执行长时程增强(LTP)并且利用加法器506使权重增加预设的Δ量(Δw)。相反,当在用于学习的时间窗口内前神经元晚于后神经元出现尖峰时,执行长时程抑制(LTD)并且使权重减少预设的Δ量。在各实施例中,神经元处理电路430可以确定是否要执行学习操作并且可以将标识特定突触的学习消息和对应当增加还是减少突触权重的指示发送到突触核。突触处理电路429(与突触地址生成器415相关联)可以访问指定的突触权重、修改突触、并且将经修改的突触权重写回到大阵列412中。
图6示出了根据某些实施例的以重神经元模式配置的神经突触核块308。在所描绘的实施例中,第一神经突触核310被配置为突触核,并且第二神经突触核312被配置为神经元核。
在重神经元模式中,由神经突触核312实现的神经元核的大阵列412可以存储神经元的膜电位和神经元状态,而由神经突触核310实现的突触核的小阵列410可以存储突触权重。例如,当处理器300正在实现CNN时,大阵列412可以存储CNN的一个或多个激活映射的神经元,并且小阵列410可以存储要在输入图像的像素位置上共享的一个或多个特征的突触权重(例如,当特征跨图像被跨步时)。对于深CNN网络,取决于可用的资源,可以将单个、多个、或全部卷积层映射在可用的神经突触核上以在多次运行上迭代地工作(逐个处理的卷积层)或并行地工作(在一轮中一起处理的级联卷积层)。
当特征权重(即,特征的突触权重)在系统的小阵列410中局部地共享并存储时,输入图像块尖峰可以被多播到为该层存储特征的全部突触核。输入图像块可以存储在神经元核中(例如,在大阵列412中或在其他存储器中)、在专用于存储输入图像块的输入核(未示出)中、或者在其他合适的位置中。在特定实施例中,为输入图像块生成的尖峰可以由神经元核(例如,由神经元处理电路431)生成。
由神经突触核310实现的突触核可以存储单个特征或多个唯一特征的共享权重并且如果实现在线学习则可以更新所存储的特征权重。在深CNN中,特征尺寸(例如,3x3、4x4、5x5等等)、跨度长度(即,在每个卷积操作期间特征滑过输入图像的像素的数量)、输入图像尺寸、和卷积层(例如,激活映射)尺寸可以全部是可调节的变量。因此,具有小阵列410的突触核可以为所存储的特征权重支持各种特征尺寸和访问模式。取决于用于小阵列410的所选择的阵列尺寸(或阵列区块的数量),一个或多个特征可以存储在小阵列410中。权重位精度(即,用于存储每个突触权重的位的数量)可以是可变的,使得权重独立地存储在小阵列410的每一行或者与多个权重以交错方式存储在单个行中。
一旦从神经元核接收到输入图像的像素的尖峰,突触核(例如,经由突触地址生成器414的计数器602)基于源神经元的像素位置生成对应的特征权重的适当的地址并且读出权重。然后将该特征权重发送到目标神经元核。由于被访问的特征可以跨深CNN中的图像的多个像素位置共享(即,当特征跨输入图像跨步时,该特征可以与像素重叠多次,其中每次重叠在该特征的不同位置处发生),还可以以顺序方式读出特征内的剩余的权重并且将其与特征的标识符和权重在特征内的位置(即,W(I,J))的指示一起发送到它们的目标像素神经元。在特定实施例中,计数器602用于基于网络参数(诸如跨度长度、特征尺寸、和/或位精度参数)生成小阵列410的适当的地址。如果多个特征存储在同一突触核上,则可以为同一输入尖峰的剩余特征重复该操作。可以将被访问的权重从突触核逐个发送,或者可以将多个被访问的权重(例如,特定特征的所有被访问的权重或所有特征的所有被访问的权重)聚集在被发送到一个或多个神经元核的单个消息中。
由于突触核可能要求多个时钟周期来完成用于访问共享权重的所有迭代,如果在处理第一尖峰之前接收到一个或多个附加尖峰,则尖峰缓冲器606可以对传入尖峰进行缓冲。在各实施例中,尖峰缓冲器606可以利用触发器(对于小缓冲窗口)或利用小寄存器堆(对于较长的缓冲窗口)来实现,但是任何合适的存储器结构可以用于实现尖峰缓冲器。当实现在线学习规则(诸如STDP)时,突触核(例如,经由突触处理电路428)可以在接收到学习信号时适当地更新权重(例如,利用LTP或LTD操作)。
具有大阵列412的神经元核可以将传入突触权重与部分和(存储为神经元膜电位)整合以为每个特征生成激活映射并且还可以生成尖峰。如果实现在线学习,神经元核还可以跟踪尖峰时序,并且可以发送适当的学习信号。激活映射的膜电位(以及在一些实施例中的神经元状态)存储在大阵列412中,其中激活映射的每个神经元表示,例如,尺寸为NxN(N是任何合适的整数)的特征在具有NxN个像素的相同尺寸的输入图像块上的卷积像素。当从突触核接收到特征权重时,神经元核将传入权重作为卷积操作的“尖峰x权重”按元素乘法来处理并且访问目标像素神经元的膜电位。然后将传入权重与膜电位整合,并且写回所更新的部分和。由神经元地址生成器417生成神经元的地址作为传入权重在特征内的位置(即,W(I,J))、特定特征(例如,如由特征标识符标识)、特征尺寸(例如,NxN)、跨度长度、和/或任何其他合适的参数的函数。因此可以以像素多播方式访问神经元,而不是以时间多播方式。换言之,当表示输入像素的特定神经元出现尖峰时,可以基于为基于特征尺寸NxN和跨度长度在空间上相关的激活映射的多个神经元(或多个激活映射的对应的神经元)连续地接收的多个特征权重来更新这些神经元。如在重突触模式中,神经元组的表示激活映射的神经元可以是IF或LIF神经元(通常为尖峰深CNN网络选择IF型神经元,因为它们固有地执行部分和累加与激活,但是本公开不限于此)。当神经元越过阈值时,生成尖峰。
发送来自卷积层的尖峰的方式取决于网络在神经形态处理器的硬件上的映射。在特定实施例中,如果单个卷积层映射在神经突触核块308上,则所生成的尖峰可以作为单个位存储在同一大阵列412上在神经元状态内。如果多个和级联卷积层映射在处理器上,则尖峰可以多播到存储CNN层级结构中的后续层(诸如池化层)的特征的目标突触核。这些尖峰然后通过在突触核中重复处理任务(例如,如上解释的)来触发下一层操作。可以以与上文关于重突触模式描述的类似的方式生成并发送学习信号。
图7A示出了根据某些实施例的用于配置神经突触核的控制流程。该流程可以由任何合适的硬件执行,诸如神经突触核(例如,310或312)的电路。在702处,访问配置参数(例如,314)。在特定实施例中,配置参数可以是提供给所有神经突触核的全局配置参数。在另一实施例中,配置参数可以是专用于该神经突触核或专用于包括该神经突触核的一组神经突触核的配置参数。
在704处,确定配置参数的值。如果值指定第一值,则流程移动到706,其中神经突触核将其自身配置为神经元核。配置为神经元核的神经突触核可以访问用于存储神经元膜电位和/或神经元状态的存储器。当神经突触核被配置为神经元核时,可以将神经突触核的突触寻址和处理电路去激活(例如,功率门控)以节约功率。当神经突触核被配置为突触核时,被去激活的突触寻址电路可以包括,例如,用于寻址存储在相应的第二存储器中的突触权重的电路。类似地,当神经突触核被配置为突触核时,被去激活的突触处理电路可以包括,例如,用于处理突触权重的电路。
在704处,如果值指定第二值,则流程移动到708,其中神经突触核将其自身配置为突触核。配置为突触核的神经突触核可以访问用于存储突触权重的存储器。当神经突触核被配置为突触核时,可以由核将神经突触核的神经元寻址和处理电路去激活(例如,功率门控)以节约功率。当神经突触核被配置为神经元核时,被去激活的神经元寻址电路可以包括,例如,用于寻址存储在存储器中的膜电位和/或神经元状态的电路。类似地,当神经突触核被配置为神经元核时,被去激活的神经元处理电路可以包括,例如,用于处理膜电位和/或神经元状态的电路。
图7B示出了根据某些实施例的用于配置神经突触核块以用于操作的控制流程。可以由处理器(例如,300或350或耦合到神经形态处理器的处理器)使用专用电路和/或通过执行软件指令、FPGA、或能够配置神经网络的神经突触核的其他集成电路来执行流程的任何一个或多个操作。在710处,访问神经网络参数。在各实施例中,用户(或其他合适的实体)可以经由图形用户界面或其他计算界面指定神经网络参数,并且这些参数可以经由任何合适的网络或互连(诸如本文中所描述的接口或其他合适的接口中的任一个)由处理器300接收或传送到处理器300(或执行该流程的其他逻辑)。神经网络参数可以包括任何合适的参数。例如,神经网络参数可以指定网络的类型(例如,前馈、递归、CNN或任何其他类型的神经网络)、神经网络的一个或多个层中的神经元的数量、突触权重的数量、突触权重的值、稀疏度、偏置、泄漏参数、输入图像、特征、跨度长度、和/或任何其他合适的参数。
在712处,作出关于神经形态处理器应当被置于重神经元模式还是重突触模式中的确定。例如,如果神经元的数量大于突触的数量,则处理器可以被置于重神经元模式中,而如果突触的数量大于神经元的数量,则处理器可以被置于重突触模式中。作为另一示例,神经网络类型可以指示模式(例如,前馈神经网络可以对应于重突触模式,而诸如CNN的权重共享神经网络可以对应于重神经元模式)。作为又一示例,模式可以被显式地指定为神经网络参数中的一个或者从一个或多个其他神经网络参数推断。模式可以以任何其他合适的方式来确定。
如果模式被设置为重神经元,则流程移动到714,其中一个或多个配置参数被设置以使得多个第一神经突触核被配置为神经元核,并且移动到716,其中一个或多个配置参数被设置以使得多个第二神经突触核被配置为突触核。在所有神经形态处理器访问共同的配置参数的特定实施例中,可以通过设置共同的配置参数来执行714和716,而在其他实施例中,714和716可以包括设置各自被提供给一个或多个神经突触核的多个配置参数。
响应于714,每个第一神经突触核的(或与其以其他方式相关联的)电路可以访问相应的配置参数(在一些实施例中当配置参数在多个核之间共享时其可以是同一配置参数)并且基于配置参数的值将第一神经突触核配置为神经元核。响应于716,每个第二神经突触核的(或与其以其他方式相关联的)电路可以访问相应的配置参数(在一些实施例中当配置参数在多个核之间共享时其可以是同一配置参数)并且基于配置参数的值将第二神经突触核配置为神经元核。
如果相反模式被设置为重突触,则流程移动到718,其中一个或多个配置参数被设置以使得多个第一神经突触核被配置为突触核,并且移动到720,其中一个或多个配置参数被设置以使得多个第二神经突触核被配置为神经元核。在所有神经形态处理器访问共同的配置参数的特定实施例中,可以通过设置共同的配置参数来执行718和720,而在其他实施例中,718和720可以包括设置各自被提供给一个或多个神经突触核的多个配置参数。
响应于718,每个第一神经突触核的(或与其以其他方式相关联的)电路可以访问相应的配置参数(在一些实施例中当配置参数在多个核之间共享时其可以是同一配置参数)并且基于配置参数的值将第一神经突触核配置为突触核。响应于720,每个第二神经突触核的(或与其以其他方式相关联的)电路可以访问相应的配置参数(在一些实施例中当配置参数在多个核之间共享时其可以是同一配置参数)并且基于配置参数的值将第二神经突触核配置为突触核。
在各实施例中,如果特定神经突触核不需要实现神经网络(例如,因为所有神经元和突触可以由其他核实现),则可以禁用(例如,功率门控)这些核以减少功耗。
在722处,处理器的神经网络开始操作。神经元核可以生成被发送到突触核的尖峰。突触核可以访问与尖峰相关联的突触权重并且将这些权重发送到适当的神经元核,其可以使用权重来更新膜电位和/或神经元状态。在神经网络操作期间可以执行任何其他合适的操作。在任何合适的时间处(例如,在神经网络的操作期间和/或之后),可以将神经网络的结果(例如,尖峰率、处理结果、或基于处理结果的决定)例如经由显示器或其他接口提供给任何合适的实体。在一些实施例中,可以将结果通过网络接口传送到远程计算系统。
在任何合适的时间处,用户(或其他实体)可以改变神经网络参数以在处理器上实现不同的神经网络。可以重复流程以根据神经网络参数将神经突触核配置为神经元核和突触核。
在适当的情况下,图7A和7B所示的框中的一些可以被重复、组合、修改或删除,并且附加框也可以被添加到流程图。此外,可以以任何合适的顺序(包括同时地)执行框,而不背离特定实施例的范围。
以下附图详述用于实现上文的实施例的示例性架构和系统。例如,处理器300可以被包括在下文所述的处理器或系统中的任一个内。在各实施例中,处理器300可以与处理器、接口、或下文所述的其他组件中的任一个通信。例如,处理器300可以接收来自这些组件中的一个或多个的神经网络参数并且将神经网络操作的结果提供给这些组件中的一个或多个。在一些实施例中,上文所描述的一个或多个硬件组件和/或指令如下文所详述地被仿真,或被实现为软件模块。
处理器核可通过不同的方式、出于不同的目的并且在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
图8A是示出根据本公开的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。图8B是示出根据本公开的实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核两者的框图。图8A-8B中的实线框展示有序流水线和有序核,而虚线框的任选增加展示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也被称为分派或发布)级812、寄存器读取/存储器读取级814、执行级816、写回/存储器写入级818、异常处置级822和提交级824。
图8B示出处理器核890,该处理器核890包括前端单元830,该前端单元830耦合到执行引擎单元850,并且前端单元830和执行引擎单元850两者都耦合到存储器单元870。核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代的核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩和/或解压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元830包括耦合至指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834耦合至指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器836耦合至指令取出单元838,指令取出单元838耦合至解码单元840。解码单元840(或解码器)可对指令进行解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核890包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元840中,或以其他方式在前端单元830内)。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合至引退单元854和一个或多个调度器单元的集合856。调度器单元856表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元856耦合到物理寄存器堆单元858。每个物理寄存器堆单元858表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器堆单元858包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元858由引退单元854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器以及(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。引退单元854和(多个)物理寄存器堆单元858耦合至(多个)执行集群860。(多个)执行集群860包括一个或多个执行单元862的集合以及一个或多个存储器访问单元864的集合。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。调度器单元856、物理寄存器堆单元858和执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有存储器访问单元864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元864的集合耦合至存储器单元870,该存储器单元870包括数据TLB单元872,该数据TLB单元872耦合至数据高速缓存单元874,该数据高速缓存单元874耦合至第二级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个都耦合到存储器单元870中的数据TLB单元872。指令高速缓存单元834进一步耦合到存储器单元870中的第2级(L2)高速缓存单元876。L2高速缓存单元876耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线800:1)指令取出838执行取出级802和长度解码级804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)调度器单元856执行调度级812;5)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取级814;执行集群860执行执行级816;6)存储器单元870和物理寄存器堆单元858执行写回/存储器写入级818;7)各单元可牵涉到异常处置级822;以及8)引退单元854和物理寄存器堆单元858执行提交级824。
核890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中所描述的(多条)指令。在一个实施例中,核890包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,该各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。尽管所展示的处理器的实施例还包括分开的指令和数据高速缓存单元834/874以及共享的L2高速缓存单元876,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图9A-B示出更具体的示例性有序核架构的框图,该核将是芯片中的多个逻辑块中的一个(潜在地包括相同类型和/或不同类型的其他核)。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图9A是根据各实施例的单个处理器核以及它与管芯上互连网络902的连接及其第2级(L2)高速缓存的本地子集904的框图。在一个实施例中,指令解码器900支持具有紧缩数据指令集扩展的x86指令集。L1高速缓存906允许对进入标量和向量单元中的高速缓存存储器的低等待时间的访问。尽管在一个实施例中(为了简化设计),标量单元908和向量单元910使用分开的寄存器集合(分别为标量寄存器912和向量寄存器914),并且在这些寄存器之间转移的数据被写入到存储器并随后从第1级(L1)高速缓存906读回,但是替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器堆之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集904是全局L2高速缓存的部分,该全局L2高速缓存被划分成多个分开的本地子集(在一些实施例中每个处理器核一个本地子集)。每个处理器核具有到其自身的L2高速缓存的本地子集904的直接访问路径。由处理器核读取的数据被存储在其L2高速缓存子集904中,并且可以与其他处理器核访问它们自身的本地L2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自身的L2高速缓存子集904中,并在必要的情况下从其他子集转储清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。在特定实施例中,每个环形数据路径为每个方向1012位宽。
图9B是根据实施例的图9A中的处理器核的一部分的展开图。图9B包括L1数据高速缓存906A(L1高速缓存906的部分),以及关于向量单元910和向量寄存器914的更多细节。具体而言,向量单元910是16宽向量处理单元(VPU)(见16宽ALU 928),该单元执行整数、单精度浮点以及双精度浮点指令中的一个或多个。该VPU利用混合单元920支持对寄存器输入的混合,利用数值转换单元922A-B支持数值转换,并且利用复制单元924支持对存储器输入的复制。写掩码寄存器926允许断言所得的向量写入。
图10是根据各实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1000的框图。图10中的实线框示出具有单个核1002A、系统代理1010、一个或多个总线控制器单元1016的集合的处理器1000,而虚线框的可选附加示出具有多个核1002A-N、系统代理单元1010中的一个或多个集成存储器控制器单元1014的集合以及专用逻辑1008的替代处理器1000。
因此,处理器1000的不同实现可包括:1)CPU,其中专用逻辑1008是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1002A-N是一个或多个通用核(例如,通用有序核、通用乱序核、或这两者的组合);2)协处理器,其中核1002A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1002A-N是大量通用有序核。因此,处理器1000可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(例如,包括30个或更多核)、嵌入式处理器、或执行逻辑操作的其他固定或可配置逻辑。该处理器可以被实现在一个或多个芯片上。处理器1000可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
在各实施例中,处理器可包括可以是对称的或非对称的任何数量的处理元件。在一个实施例中,处理元件指的是用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或能够保持处理器的诸如执行状态或架构状态之类的状态的任何其他元件。换言之,在一个实施例中,处理元件指的是能够与诸如软件线程、操作系统、应用、或其他代码之类的代码独立地相关联的任何硬件。典型地,物理处理器(或处理器插槽)指的是集成电路,该集成电路潜在地包括任何数量的其它处理元件(诸如核或硬件线程)。
核可以指代位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于集成电路上的能够维持独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可见的,当某些资源是共享的而其他资源专用于架构状态时,硬件线程与核的术语之间的界线交叠。但核和硬件线程常常被操作系统视为单个的逻辑处理器,其中,操作系统能够分别在每一个逻辑处理器上调度操作。
存储器层级结构包括核内的一个或多个高速缓存级别、一组或一个或多个共享高速缓存单元1006、以及耦合至集成存储器控制器单元1014的集合的外部存储器(未示出)。共享高速缓存单元1006的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存。尽管在一个实施例中,基于环的互连单元1012将专用逻辑(例如,集成图形逻辑)1008、共享高速缓存单元1006的集合以及系统代理单元1010/(多个)集成存储器控制器单元1014互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,维护一个或多个高速缓存单元1006与核1002A-N之间的一致性(coherency)。
在一些实施例中,一个或多个核1002A-N能够实现多线程化。系统代理1010包括协调并操作核1002A-N的那些组件。系统代理单元1010可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1002A-N以及专用逻辑1008的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1002A-N在架构指令集方面可以是同构的或异构的;即,核1002A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图11-14是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也适用于执行本公开中所描述的方法。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
图11描绘了根据本公开的一个实施例的系统1100的框图。系统1100可包括一个或多个处理器1110、1115,这些处理器耦合至控制器中枢1120。在一个实施例中,控制器中枢1120包括图形存储器控制器中枢(GMCH)1190和输入/输出中枢(IOH)1150(其可以在分开的芯片或同一芯片上);GMCH 1190包括耦合到存储器1140和协处理器1145的存储器和图形控制器;IOH 1150将输入/输出(I/O)设备1160耦合到GMCH 1190。或者,存储器和图形控制器中的一个或两者被集成在处理器内(如本文中所描述的),存储器1140和协处理器1145直接耦合到处理器1110,并且控制器中枢1120是包括IOH 1150的单个芯片。
附加处理器1115的任选性在图11中利用虚线来表示。每一处理器1110、1115可包括本文中所描述的处理核中的一个或多个,并且可以是处理器1000的某一版本。
存储器1140可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、其他合适的存储器、或其任何组合。存储器1140可以存储任何合适的数据,诸如由处理器1110、1115使用的数据,以提供计算机系统1100的功能。例如,与被执行的程序相关联的数据或由处理器1110、1115访问的文件可以存储在存储器1140中。在各实施例中,存储器1140可以存储由处理器1110、1115使用或执行的数据和/或指令序列。
在至少一个实施例中,控制器中枢1120经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1195来与处理器1110、1115进行通信。
在一个实施例中,协处理器1145是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1120可包括集成图形加速器。
在物理资源1110、1115之间会存在包括架构、微架构、热、功耗特性等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1110执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1110将这些协处理器指令识别为具有应当由附连的协处理器1145执行的类型。因此,处理器1110在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1145。(多个)协处理器1145接受并执行所接收的协处理器指令。
图12描绘了根据本公开的实施例的第一更具体的示例性系统1200的框图。如图12中所示,多处理器系统1200是点对点互连系统,并包括经由点对点互连1250耦合的第一处理器1270和第二处理器1280。处理器1270和1280中的每一个可以是处理器1000的某一版本。在本公开的一个实施例中,处理器1270和1280分别是处理器1110和1115,而协处理器1238是协处理器1145。在另一实施例中,处理器1270和1280分别是处理器1110和协处理器1145。
处理器1270和1280示出为分别包括集成存储器控制器(IMC)单元1272和1282。处理器1270还包括作为其总线控制器单元的一部分的点对点(P-P)接口1276和1278;类似地,第二处理器1280包括P-P接口1286和1288。处理器1270、1280可以经由使用点对点(P-P)接口电路1278、1288的P-P接口1250来交换信息。如图12中所示,IMC 1272和1282将处理器耦合至相应的存储器,即存储器1232和存储器1234,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1270、1280可各自经由使用点对点接口电路1276、1294、1286、1298的各个P-P接口1252、1254来与芯片组1290交换信息。芯片组1290可以任选地经由高性能接口1239来与协处理器1238交换信息。在一个实施例中,协处理器1238是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1290可经由接口1296耦合至第一总线1216。在一个实施例中,第一总线1216可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图12中所示,各种I/O设备1214可连同总线桥1218一起耦合至第一总线1216,该总线桥1218将第一总线1216耦合至第二总线1220。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1215耦合到第一总线1216。在一个实施例中,第二总线1220可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合至第二总线1220,这些设备包括例如键盘和/或鼠标1222、通信设备1227以及存储单元1228,该存储单元1228诸如可包括指令/代码和数据1230的盘驱动器或其他大容量存储设备。此外,音频I/O 1224可耦合至第二总线1220。注意,本公开构想了其他架构。例如,代替图12的点对点架构,系统可实现多分支总线或其他此类架构。
图13描绘了根据本公开的实施例的第二更具体的示例性系统1300的框图。图12和13中的类似元件使用类似附图标记,且在图13中省略了图12的某些方面以避免混淆图13的其他方面。
图13示出处理器1270和1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282。由此,CL 1272、1282包括集成存储器控制器单元,并包括I/O控制逻辑。图13示出不仅存储器1232、1234耦合至CL 1272、1282,而且I/O设备1314也耦合至控制逻辑1272、1282。传统I/O设备1315耦合至芯片组1290。
图14描绘了根据本公开的实施例的SoC 1400的框图。图10中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图14中,(多个)互连单元1402被耦合到:应用处理器1410,该应用处理器包括一个或多个核的集合1002A-N以及(多个)共享高速缓存单元1006;系统代理单元1010;(多个)总线控制器单元1016;(多个)集成存储器控制器单元1014;一组或一个或多个协处理器1420,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及用于耦合至一个或多个外部显示器的显示单元1440。在一个实施例中,(多个)协处理器1420包括专用处理器,诸如例如,网络或通信处理器、压缩和/或解压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核来处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图15是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图15示出可使用x86编译器1504来编译利用高级语言1502的程序,以生成可由具有至少一个x86指令集核的处理器1516原生执行的x86二进制代码1506。具有至少一个x86指令集核的处理器1516表示可以通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1504表示可操作用于生成x86二进制代码1506(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1516上执行。类似地,图15示出可以使用替代的指令集编译器1508来编译利用高级语言1502的程序,以生成可以由不具有至少一个x86指令集核的处理器1514(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1510。指令转换器1512用于将x86二进制代码1506转换成可以由不具有x86指令集核的处理器1514原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1510相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器1512通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1506的软件、固件、硬件或其组合。
设计可经历从创造到仿真到制造的各阶段。表示设计的数据可用数种方式来表示该设计。首先,如仿真中有用的,可使用硬件描述语言(HDL)或另一功能性描述语言来表示硬件。另外,可在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在一些阶段都达到表示硬件模型中各种设备的物理布置的数据水平。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在一些实现方式中,此类数据可以以诸如图形数据系统II(GDS II)、开放原图系统交换标准(Open Artwork System InterchangeStandard)(OASIS)之类的数据库文件格式或类似格式存储。
在一些实现方式中,基于软件的硬件模型、以及HDL和其他功能性描述语言对象可以包括寄存器传送语言(RTL)文件,等等此类示例。此类对象可以是机器可解析的,使得设计工具可以接受HDL对象(或模型)、解析HDL对象以获得所描述的硬件的属性、以及根据对象确定物理电路和/或芯片上布局。设计工具的输出可以用于制造物理设备。例如,设计工具可以根据HDL对象确定各种硬件和/或固件元件的配置,诸如总线宽度、寄存器(包括尺寸和类型)、存储器块、物理链路路径、结构拓扑等等的将被实现以实现在HDL对象中建模的系统的此类属性。设计工具可以包括用于确定芯片上系统(SoC)和其他硬件设备的拓扑和结构配置的工具。在一些实例中,HDL对象可以用作开发可以由制造装备使用以制造所描述的硬件的模型和设计文件的基础。实际上,可以提供HDL对象本身作为制造系统软件的输入以引起对所描述的硬件的制造。
在任何设计表示中,表示设计的数据可以被存储在任何形式的机器可读介质中。存储器或磁或光存储(诸如,盘)可以是存储经由光学或电学波来传送的信息的机器可读介质,这些光学或电学波被调制或以其他方式生成以传送这些信息。当指示或承载代码或设计的电学载波被传送达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商会在有形机器可读介质上至少临时地存储具体化本公开的诸个实施例的技术的物品(诸如,编码在载波中的信息)。
在各实施例中,可以将存储设计的表示的介质提供给制造系统(例如,能够制造集成电路和/或相关组件的半导体制造系统)。设计表示可以指导系统制造能够执行上述功能的任何组合的设备。例如,设计表示可以指导系统关于要制造的设备的关于制造哪些组件、应当如何将组件耦合在一起、应当将组件放置在设备上的何处、和/或关于其他合适的规范。
因此,至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示处理器中的各种逻辑的表示性指令来实现,该表示性指令在由机器读取时使得该机器制造用于执行本文中所描述的技术的逻辑。通常被称为“IP核”的这些表示可以被存储在非暂态有形机器可读介质上,并被提供给多个客户或生产设施以加载到制造该逻辑或处理器的制造机器中。
本文中所公开的机制的实施例可被实现在硬件、软件、固件或此类实现方式的组合中。本公开的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图12中所图示的代码1230)应用于输入指令,以执行本文中所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级过程编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中所描述的机制不限于任何特定的编程语言的范围。在各实施例中,该语言可以是编译语言或解释语言。
上述方法、硬件、软件、固件或代码的实施例可经由存储在机器可访问、机器可读、计算机可访问、或计算机可读介质上可由处理元件执行(或以其他方式可访问)的指令或代码来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或发送)诸如计算机或电子系统之类的机器可读形式的信息的任何机制。例如,非暂态机器可访问介质包括:随机存取存储器(RAM),诸如,静态RAM(SRAM)或动态RAM(DRAM);ROM;磁或光存储介质;闪存设备;电存储设备;光存储设备;声存储设备;用于保存从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其他形式的存储设备;等等,这些非暂态机器可访问介质与可从其接收信息的非暂态介质相区别。
被用于对逻辑进行编程以执行本公开的实施例的指令可被存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可经由网络或通过其他计算机可读介质来分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
逻辑可以用于实现各种组件的功能中的任一个,各种组件诸如本文中所描述的处理器(例如,300)、网络元件102和302、路由器104和304、核108、核块308、神经突触核310和312、存储器阵列(例如,410和412)、突触地址生成器414和415、神经元地址生成器416和417、本文中所描述的其他组件、或这些组件中的任一个的任何子组件。此外,逻辑可以与本文中的组件(例如,突触处理电路428和429、神经元处理电路430和431、以及连接性电路432和434)中的任一个一起使用以促进组件的功能。“逻辑”可以指代硬件、固件、软件和/或其中每一个的组合以执行一个或多个功能。作为示例,逻辑可以包括与非暂态介质相关联的诸如微控制器或处理器之类的硬件,该非暂态介质用于存储适于由该微控制器或处理器执行的代码。因此,在一个实施例中,对逻辑的引用是指硬件,该硬件被专门配置成识别和/或执行要保存在非暂态介质上的代码。此外,在另一实施例中,逻辑的使用是指包括代码的非暂态介质,该代码专门适于由微控制器执行以进行预定的操作。并且如可以被推断,在又一实施例中,术语逻辑(在此示例中)可指硬件和非暂态介质的组合。在各实施例中,逻辑可以包括微处理器或可操作以执行软件指令的其他处理元件,分立的逻辑诸如专用集成电路(ASIC)、诸如现场可编程门阵列(FPGA)的经编程的逻辑器件、包括指令的存储器设备、逻辑器件的组合(例如,如将在印刷电路板上发现的)、或其他合适的硬件和/或软件。逻辑可以包括一个或多个门电路或其他电路组件,其可以由例如晶体管来实现。在一些实施例中,逻辑还可以完全地具体化为软件。软件可以具体化为记录在非暂态计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可被具体化为硬编码(例如,非易失性)在存储器设备中的代码、指令或指令集和/或数据。通常,被图示为分开的逻辑的边界一般不同并且潜在地重叠。例如,第一和第二逻辑可共享硬件、软件、固件、或它们的组合,同时潜在地保留一些独立的硬件、软件或固件。
在一个实施例中,使用短语‘用于’或‘被配置成’指的是安排、合在一起、制造、提供销售、进口和/或设计装置、硬件、逻辑或元件以执行指定或所确定的任务。在该示例中,如果不是正在操作的装置或其元件被设计、耦合、和/或互连以执行指定任务,则该不是正在操作的装置或其元件仍然“被配置成”执行所述指定任务。作为纯说明性示例,在操作期间,逻辑门可提供0或1。但“被配置成”向时钟提供启用信号的逻辑门不包括可提供1或0的每一潜在逻辑门。相反,该逻辑门是以在操作期间1或0的输出用于启用时钟的某种方式来耦合的逻辑门。再次注意,使用术语“被配置成”不要求操作,而是关注于装置、硬件、和/或元件的潜在状态,其中在该潜在状态中,该装置、硬件和/或元件被设计成在该装置、硬件和/或元件正在操作时执行特定任务。
此外,在一个实施例中,使用术语‘能够/能够用于’和/或‘能用于’指的是按如下方式设计的一些装置、硬件、和/或元件:以指定方式启用对该装置、硬件、和/或元件的使用。如以上所注意,在一个实施例中,用于、能够、或能用于的使用指的是装置、硬件、和/或元件的潜在状态,其中该装置、硬件、和/或元件不是正在操作,而是以此类方式被设计以便以指定方式启用对装置的使用。
如本文中所使用,值包括数字、状态、逻辑状态、或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值、或多个逻辑值的使用也被称为1和0,这简单地表示了二进制逻辑状态。例如,1指的是高逻辑电平,0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元能够保持单个逻辑的值或多个逻辑的值。不过,也使用了计算机系统中的值的其他表示。例如,十进制数10还可以被表示为二进制值1010和十六进制字母A。因此,值包括能够被保存在计算机系统中的信息的任何表示。
而且,状态也可由值或值的部分来表示。作为示例,诸如逻辑1之类的第一值可表示默认或初始状态,而诸如逻辑0之类的第二值可表示非默认状态。此外,在一个实施例中,术语重置和置位分别指的是默认和已更新的值或状态。例如,默认值潜在地包括高逻辑值,即,重置,而已更新的值潜在地包括低逻辑值,即,置位。注意,可利用值的任何组合来表示任何数量的状态。
在至少一个实施例中,处理器包括:第一神经突触核,包括第一电路,用于:响应于由配置参数指定的第一值,将第一神经突触核配置为神经元核;以及响应于由配置参数指定的第二值,将第一神经突触核配置为突触核。
在实施例中,处理器进一步包括第二神经突触核,其中第二神经突触核包括第二电路,用于:响应于由配置参数指定的第二值,将第二神经突触核配置为神经元核;以及响应于由配置参数指定的第一值,将第二神经突触核配置为突触核。在实施例中,第一神经突触核包括第一存储器阵列,并且第二神经突触核包括第二存储器阵列,其中第一存储器阵列大于第二存储器阵列。在实施例中,第一存储器阵列是静态随机存取存储器(SRAM),并且第二存储器阵列是寄存器堆。在实施例中,第一存储器阵列是共享存储器的第一部分,并且第二存储器阵列是共享存储器的第二部分。在实施例中,突触核用于存储突触权重,并且神经元核用于存储神经元膜电位。在实施例中,神经元核用于:响应于神经元的膜电位超过阈值而生成神经元尖峰,并且将神经元尖峰发送到被配置为突触核的第二神经突触核以访问由第二神经突触核存储的至少一个突触权重。在实施例中,第一神经突触核的第一电路用于:响应于由配置参数指定的第一值,禁用第一神经突触核的第二电路并且启用第一神经突触核的第三电路;以及响应于由配置参数指定的第二值,禁用第三电路并且启用第二电路。在实施例中,配置参数是用于指定处理器的多个第一神经突触核将被配置为神经元核还是突触核的全局配置参数。在实施例中,处理器用于在配置参数指定第二值的时间段期间实现前馈神经网络或递归神经网络。在实施例中,处理器用于在配置参数指定第一值的时间段期间实现卷积神经网络。在实施例中,第一神经突触核经由芯片上网络的一个或多个路由器耦合至处理器的多个神经突触核。
在至少一个实施例中,方法包括:响应于由配置参数指定的第一值,由第一电路将第一神经突触核配置为神经元核;以及响应于由配置参数指定的第二值,由第一电路将第一神经突触核配置为突触核。
在实施例中,方法进一步包括:响应于由配置参数指定的第二值,将第二神经突触核配置为神经元核;以及响应于由配置参数指定的第一值,将第二神经突触核配置为突触核。在实施例中,第一神经突触核包括第一存储器阵列,并且第二神经突触核包括第二存储器阵列,其中第一存储器阵列大于第二存储器阵列。在实施例中,第一存储器阵列是静态随机存取存储器(SRAM),并且第二存储器阵列是寄存器堆。在实施例中,第一存储器阵列是共享存储器的第一部分,并且第二存储器阵列是共享存储器的第二部分。在实施例中,方法进一步包括:由突触核存储突触权重并且由神经元核存储神经元膜电位。在实施例中,方法进一步包括:响应于神经元的膜电位超过阈值,由神经元核生成神经元尖峰;以及将神经元尖峰发送到被配置为突触核的第二神经突触核以访问由第二神经突触核存储的至少一个突触权重。在实施例中,方法进一步包括:响应于由配置参数指定的第一值,禁用第一神经突触核的第二电路并且启用第一神经突触核的第三电路;以及响应于由配置参数指定的第二值,禁用第三电路并且启用第二电路。在实施例中,配置参数是用于指定处理器的多个第一神经突触核将被配置为神经元核还是突触核的全局配置参数。在实施例中,方法进一步包括:在配置参数指定第二值的时间段期间由处理器实现前馈神经网络或递归神经网络。在实施例中,方法进一步包括:在配置参数指定第一值的时间段期间由处理器实现卷积神经网络。在实施例中,第一神经突触核经由芯片上网络的一个或多个路由器耦合至处理器的多个神经突触核。
在至少一个实施例中,非暂态机器可读存储介质包括存储于其上的指令,指令在被机器执行时使机器进行以下操作:访问神经网络参数并且将多个神经突触核配置为实现由神经网络参数指定的神经网络;以及基于神经网络参数中的一个或多个来设置配置参数以指定第一值或第二值,其中多个神经突触核中的第一神经突触核的第一电路用于:响应于由配置参数指定的第一值而将第一神经突触核配置为神经元核;以及响应于由配置参数指定的第二值而将第一神经突触核配置为突触核。
在实施例中,突触核用于存储突触权重,并且神经元核用于存储神经元膜电位。在实施例中,神经元核用于:响应于神经元的膜电位超过阈值而生成神经元尖峰,并且将神经元尖峰发送到被配置为突触核的第二神经突触核以访问由第二神经突触核存储的至少一个突触权重。在实施例中,第一神经突触核的第一电路用于:响应于由配置参数指定的第一值,禁用第一神经突触核的第二电路并且启用第一神经突触核的第三电路;以及响应于由配置参数指定的第二值,禁用第三电路并且启用第二电路。
在至少一个实施例中,系统包括:存储器;以及处理器,包括多个第一神经突触核;其中处理器用于:设置一个或多个配置参数,配置参数用于指定第一值或第二值;响应于由一个或多个配置参数指定的第一值而使多个第一神经突触核被配置为神经元核;以及响应于由一个或多个配置参数指定的第二值而使多个第一神经突触核被配置为突触核。
在实施例中,处理器进一步包括多个第二神经突触核,处理器响应于由一个或多个配置参数指定的第一值而使多个第二神经突触核被配置为突触核;以及响应于由一个或多个配置参数指定的第二值而使多个第二神经突触核被配置为神经元核。在实施例中,系统进一步包括网络接口,用于传送由神经网络生成的结果。在实施例中,系统进一步包括显示器,用于显示由神经网络生成的结果。在实施例中,系统进一步包括蜂窝通信接口。在实施例中,设备进一步包括通信地耦合至处理器的电池、通信地耦合至处理器的显示器、或通信地耦合至处理器的网络接口。
在至少一个实施例中,系统包括:用于响应于由配置参数指定的第一值而由第一电路将第一神经突触核配置为神经元核的装置;以及用于响应于由配置参数指定的第二值而由第一电路将第一神经突触核配置为突触核的装置。
在实施例中,系统进一步包括:用于由突触核存储突触权重并且由神经元核存储神经元膜电位的装置。在实施例中,系统进一步包括:用于响应于神经元的膜电位超过阈值而由神经元核生成神经元尖峰的装置;以及用于将神经元尖峰发送到被配置为突触核的第二神经突触核以访问由第二神经突触核存储的至少一个突触权重的装置。在实施例中,系统进一步包括:用于响应于由配置参数指定的第一值而禁用第一神经突触核的第二电路并且启用第一神经突触核的第三电路的装置;以及用于响应于由配置参数指定的第二值而禁用第三电路并且启用第二电路的装置。
贯穿本说明书,对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个说明书的多个位置出现短语“在一个实施例中”或“在实施例中”不一定全部是指同一实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。
在上述说明书中,已经参考特定示例性实施例给出了具体实施方式。然而,将显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本公开的更宽泛精神和范围。因此,应当认为说明书和附图是说明性的而不是限制性的。此外,实施例和其他示例性语言的上述使用不一定是指同一实施例或同一示例,而可能是指不同和独特的实施例,也有可能是同一实施例。
Claims (24)
1.一种处理器,包括:
第一神经突触核,包括第一电路,用于:
响应于由配置参数指定的第一值,将所述第一神经突触核配置为神经元核;以及
响应于由所述配置参数指定的第二值,将所述第一神经突触核配置为突触核。
2.如权利要求1所述的处理器,其特征在于,进一步包括第二神经突触核,所述第二神经突触核包括第二电路,用于:
响应于由所述配置参数指定的所述第二值,将所述第二神经突触核配置为神经元核;以及
响应于由所述配置参数指定的所述第一值,将所述第二神经突触核配置为突触核。
3.如权利要求1-2中的任一项所述的处理器,其特征在于,所述第一神经突触核包括第一存储器阵列,并且所述第二神经突触核包括第二存储器阵列,其中所述第一存储器阵列大于所述第二存储器阵列。
4.如权利要求3所述的处理器,其特征在于,所述第一存储器阵列是静态随机存取存储器(SRAM),并且所述第二存储器阵列是寄存器堆。
5.如权利要求3所述的处理器,其特征在于,所述第一存储器阵列是共享存储器的第一部分,并且所述第二存储器阵列是所述共享存储器的第二部分。
6.如权利要求1-5中的任一项所述的处理器,其特征在于,所述突触核用于存储突触权重,并且所述神经元核用于存储神经元膜电位。
7.如权利要求1-6中的任一项所述的处理器,其特征在于,所述神经元核用于:响应于神经元的膜电位超过阈值而生成神经元尖峰,并且将所述神经元尖峰发送到被配置为突触核的第二神经突触核以访问由所述第二神经突触核存储的至少一个突触权重。
8.如权利要求1-7中的任一项所述的处理器,其特征在于,所述第一神经突触核的所述第一电路用于:
响应于由所述配置参数指定的所述第一值,禁用所述第一神经突触核的第二电路并且启用所述第一神经突触核的第三电路;以及
响应于由所述配置参数指定的所述第二值,禁用所述第三电路并且启用所述第二电路。
9.如权利要求1-8中的任一项所述的处理器,其特征在于,所述配置参数是用于指定所述处理器的多个第一神经突触核将被配置为神经元核还是突触核的全局配置参数。
10.如权利要求1-9中的任一项所述的处理器,其特征在于,所述处理器用于在所述配置参数指定所述第二值的时间段期间实现前馈神经网络或递归神经网络。
11.如权利要求1-10中的任一项所述的处理器,其特征在于,所述处理器用于在所述配置参数指定所述第一值的时间段期间实现卷积神经网络。
12.如权利要求1-11中的任一项所述的处理器,其特征在于,所述第一神经突触核经由芯片上网络的一个或多个路由器耦合至所述处理器的多个神经突触核。
13.一种方法,包括:
响应于由配置参数指定的第一值,由第一电路将第一神经突触核配置为神经元核;以及
响应于由所述配置参数指定的第二值,由所述第一电路将所述第一神经突触核配置为突触核。
14.如权利要求13所述的方法,其特征在于,进一步包括:
响应于由所述配置参数指定的所述第二值,将所述第二神经突触核配置为神经元核;以及
响应于由所述配置参数指定的所述第一值,将所述第二神经突触核配置为突触核。
15.如权利要求13-14中的任一项所述的方法,其特征在于,所述第一神经突触核包括第一存储器阵列,并且所述第二神经突触核包括第二存储器阵列,其中所述第一存储器阵列大于所述第二存储器阵列。
16.如权利要求15所述的方法,其特征在于,所述第一存储器阵列是静态随机存取存储器(SRAM),并且所述第二存储器阵列是寄存器堆。
17.如权利要求15所述的方法,其特征在于,所述第一存储器阵列是共享存储器的第一部分,并且所述第二存储器阵列是所述共享存储器的第二部分。
18.如权利要求13-17中的任一项所述的方法,其特征在于,进一步包括:由所述突触核存储突触权重并且由所述神经元核存储神经元膜电位。
19.如权利要求13-18中的任一项所述的方法,其特征在于,进一步包括:
响应于神经元的膜电位超过阈值,由所述神经元核生成神经元尖峰;以及
将所述神经元尖峰发送到被配置为突触核的第二神经突触核以访问由所述第二神经突触核存储的至少一个突触权重。
20.如权利要求13-19中的任一项所述的方法,其特征在于,进一步包括:
响应于由所述配置参数指定的所述第一值,禁用所述第一神经突触核的第二电路并且启用所述第一神经突触核的第三电路;以及
响应于由所述配置参数指定的所述第二值,禁用所述第三电路并且启用所述第二电路。
21.如权利要求13-20中的任一项所述的方法,其特征在于,所述配置参数是用于指定所述处理器的多个第一神经突触核将被配置为神经元核还是突触核的全局配置参数。
22.如权利要求13-21中的任一项所述的方法,其特征在于,进一步包括:在所述配置参数指定所述第二值的时间段期间由处理器实现前馈神经网络或递归神经网络。
23.如权利要求13-22中的任一项所述的方法,其特征在于,进一步包括:在所述配置参数指定所述第一值的时间段期间由处理器实现卷积神经网络。
24.如权利要求13-23中的任一项所述的方法,其特征在于,所述第一神经突触核经由芯片上网络的一个或多个路由器耦合至处理器的多个神经突触核。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/821,123 US11195079B2 (en) | 2017-11-22 | 2017-11-22 | Reconfigurable neuro-synaptic cores for spiking neural network |
US15/821,123 | 2017-11-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109816102A true CN109816102A (zh) | 2019-05-28 |
Family
ID=65231077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811230495.1A Pending CN109816102A (zh) | 2017-11-22 | 2018-10-22 | 用于尖峰神经网络的可重配置的神经突触核 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11195079B2 (zh) |
CN (1) | CN109816102A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909869A (zh) * | 2019-11-21 | 2020-03-24 | 浙江大学 | 一种基于脉冲神经网络的类脑计算芯片 |
WO2021115208A1 (zh) * | 2019-12-09 | 2021-06-17 | Oppo广东移动通信有限公司 | 神经网络处理器、芯片和电子设备 |
CN113269317A (zh) * | 2021-04-14 | 2021-08-17 | 南京大学 | 一种脉冲神经网络计算阵列 |
CN114861892A (zh) * | 2022-07-06 | 2022-08-05 | 深圳时识科技有限公司 | 芯片在环代理训练方法及设备、芯片及电子设备 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11037330B2 (en) * | 2017-04-08 | 2021-06-15 | Intel Corporation | Low rank matrix compression |
JP7003021B2 (ja) * | 2018-09-18 | 2022-01-20 | 株式会社東芝 | ニューラルネットワーク装置 |
WO2020092691A1 (en) * | 2018-11-01 | 2020-05-07 | Peter Aj Van Der Made | An improved spiking neural network |
US11494626B2 (en) * | 2018-12-13 | 2022-11-08 | Sri International | Runtime-throttleable neural networks |
US10580481B1 (en) * | 2019-01-14 | 2020-03-03 | University Of Virginia Patent Foundation | Methods, circuits, systems, and articles of manufacture for state machine interconnect architecture using embedded DRAM |
US11816563B2 (en) | 2019-01-17 | 2023-11-14 | Samsung Electronics Co., Ltd. | Method of enabling sparse neural networks on memresistive accelerators |
US10824151B2 (en) * | 2019-01-31 | 2020-11-03 | StradVision, Inc. | Method and device for providing personalized and calibrated adaptive deep learning model for the user of an autonomous vehicle |
US11783200B2 (en) * | 2019-02-08 | 2023-10-10 | International Business Machines Corporation | Artificial neural network implementation in field-programmable gate arrays |
CN111882050B (zh) * | 2020-07-20 | 2024-02-06 | 复旦大学 | 基于fpga的用于提高bcpnn速度的设计方法 |
US20220101084A1 (en) * | 2020-09-29 | 2022-03-31 | International Business Machines Corporation | Pipelining for analog-memory-based neural networks with all-local storage |
CN112215353B (zh) * | 2020-09-29 | 2023-09-01 | 电子科技大学 | 一种基于变分结构优化网络的通道剪枝方法 |
US20220156564A1 (en) * | 2020-11-18 | 2022-05-19 | Micron Technology, Inc. | Routing spike messages in spiking neural networks |
WO2022186763A1 (en) * | 2021-03-03 | 2022-09-09 | Agency For Science, Technology And Research | Neural network processor system with reconfigurable neural processing unit, and method of operating and method of forming thereof |
CN113298242B (zh) * | 2021-06-08 | 2022-08-05 | 浙江大学 | 一种基于脉冲神经网络的脑机接口解码方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070288410A1 (en) * | 2006-06-12 | 2007-12-13 | Benjamin Tomkins | System and method of using genetic programming and neural network technologies to enhance spectral data |
DE102007014650B3 (de) * | 2007-03-27 | 2008-06-12 | Siemens Ag | Verfahren zur rechnergestützten Verarbeitung von in einem Sensornetzwerk erfassten Messwerten |
US9330356B2 (en) * | 2011-09-21 | 2016-05-03 | Qualcomm Technologies Inc. | Apparatus and methods for developing parallel networks using a general purpose programming language |
US8868477B2 (en) * | 2012-03-29 | 2014-10-21 | International Business Machines Coproration | Multi-compartment neurons with neural cores |
US8977583B2 (en) * | 2012-03-29 | 2015-03-10 | International Business Machines Corporation | Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching |
US9159020B2 (en) * | 2012-09-14 | 2015-10-13 | International Business Machines Corporation | Multiplexing physical neurons to optimize power and area |
US20140143193A1 (en) * | 2012-11-20 | 2014-05-22 | Qualcomm Incorporated | Method and apparatus for designing emergent multi-layer spiking networks |
US9959499B2 (en) * | 2013-09-25 | 2018-05-01 | Qualcomm Incorporated | Methods and apparatus for implementation of group tags for neural models |
US9984326B1 (en) * | 2015-04-06 | 2018-05-29 | Hrl Laboratories, Llc | Spiking neural network simulator for image and video processing |
US9672464B2 (en) * | 2014-02-28 | 2017-06-06 | Qualcomm Incorporated | Method and apparatus for efficient implementation of common neuron models |
US10990872B2 (en) * | 2016-03-31 | 2021-04-27 | International Business Machines Corporation | Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency |
US10748060B2 (en) * | 2016-10-14 | 2020-08-18 | Intel Corporation | Pre-synaptic learning using delayed causal updates |
CN109155001B (zh) * | 2016-11-28 | 2022-03-29 | 华为技术有限公司 | 基于脉冲神经网络的信号处理方法和装置 |
US20180174028A1 (en) * | 2016-12-20 | 2018-06-21 | Intel Corporation | Sparse coding using neuromorphic computing |
US10846595B2 (en) * | 2016-12-20 | 2020-11-24 | Intel Corporation | Rapid competitive learning techniques for neural networks |
US10679118B2 (en) * | 2016-12-20 | 2020-06-09 | Intel Corporation | Solving matrix inverse problems using neuromorphic computing |
US11062203B2 (en) * | 2016-12-30 | 2021-07-13 | Intel Corporation | Neuromorphic computer with reconfigurable memory mapping for various neural network topologies |
US10713558B2 (en) | 2016-12-30 | 2020-07-14 | Intel Corporation | Neural network with reconfigurable sparse connectivity and online learning |
US10922607B2 (en) * | 2016-12-30 | 2021-02-16 | Intel Corporation | Event driven and time hopping neural network |
US11017288B2 (en) * | 2017-12-18 | 2021-05-25 | Intel Corporation | Spike timing dependent plasticity in neuromorphic hardware |
-
2017
- 2017-11-22 US US15/821,123 patent/US11195079B2/en active Active
-
2018
- 2018-10-22 CN CN201811230495.1A patent/CN109816102A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909869A (zh) * | 2019-11-21 | 2020-03-24 | 浙江大学 | 一种基于脉冲神经网络的类脑计算芯片 |
CN110909869B (zh) * | 2019-11-21 | 2022-08-23 | 浙江大学 | 一种基于脉冲神经网络的类脑计算芯片 |
WO2021115208A1 (zh) * | 2019-12-09 | 2021-06-17 | Oppo广东移动通信有限公司 | 神经网络处理器、芯片和电子设备 |
CN113269317A (zh) * | 2021-04-14 | 2021-08-17 | 南京大学 | 一种脉冲神经网络计算阵列 |
CN114861892A (zh) * | 2022-07-06 | 2022-08-05 | 深圳时识科技有限公司 | 芯片在环代理训练方法及设备、芯片及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20190042909A1 (en) | 2019-02-07 |
US11195079B2 (en) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109816102A (zh) | 用于尖峰神经网络的可重配置的神经突触核 | |
EP3343465A1 (en) | Neuromorphic computer with reconfigurable memory mapping for various neural network topologies | |
US10713558B2 (en) | Neural network with reconfigurable sparse connectivity and online learning | |
Conti et al. | XNOR neural engine: A hardware accelerator IP for 21.6-fJ/op binary neural network inference | |
CN207440765U (zh) | 片上系统和移动计算设备 | |
CN109597458A (zh) | 用于空间阵列中的可配置时钟门控的处理器和方法 | |
CN107003988A (zh) | 用于执行卷积运算的存储设备和方法 | |
CN107003989A (zh) | 用于人工神经网络中的分布式与协作计算的方法和装置 | |
CN114365185A (zh) | 使用一个或更多个神经网络生成图像 | |
CN109215728A (zh) | 用于分布式存储器危险检测和错误恢复的存储器电路和方法 | |
CN109993683A (zh) | 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性 | |
CN109213523A (zh) | 具有存储器系统性能、功率减小和原子支持特征的可配置空间加速器的处理器、方法和系统 | |
CN104866537B (zh) | 用于特征搜索的系统、装置和方法 | |
CN108805792A (zh) | 具有先进调度的可编程粗粒度化和稀疏矩阵计算硬件 | |
CN104025067B (zh) | 具有由向量冲突指令和置换指令共享的全连接互连的处理器 | |
Huerta et al. | Convergence of artificial intelligence and high performance computing on NSF-supported cyberinfrastructure | |
WO2018119785A1 (en) | Method and apparatus for a binary neural network mapping scheme utilizing a gate array architecture | |
CN110309913A (zh) | 神经形态加速器多任务处理 | |
US20190279038A1 (en) | Data flow graph node parallel update for machine learning | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
US11934308B2 (en) | Processor cluster address generation | |
CN109844776A (zh) | 具有片上学习和随机时间步长控制的可编程神经元核心 | |
CN110419030A (zh) | 测量非均匀存储器访问(numa)系统内按节点的带宽 | |
Agrawal et al. | SPARE: Spiking neural network acceleration using ROM-embedded RAMs as in-memory-computation primitives | |
CN107003944A (zh) | 跨分布式存储器的指针追踪 |
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 |