用于神经网络的全局和本地时间步长确定方案的制作方法

文档序号:17327502发布日期:2019-04-05 21:53阅读:313来源:国知局
用于神经网络的全局和本地时间步长确定方案的制作方法

本公开一般涉及计算机开发领域,并且更具体地,涉及用于神经网络的全局和本地时间步长确定方案。



背景技术:

神经网络可以包括在包括通过突触连接的大的神经元集群的生物脑的结构之后松散地建模的神经单元群组。在神经网络中,神经单元经由链路连接到其它神经单元,所述链路对连接的神经单元的激活状态的其影响可能是兴奋的或抑制的。神经单元可以利用其输入的值执行功能以更新神经单元的膜电位。当超过与神经单元关联的阈值时,神经单元可将脉冲信号传播到连接的神经单元。神经网络可以被训练或以其它方式适于执行各种数据处理任务,诸如计算机视觉任务、语音识别任务、或其它适合的计算任务。

附图说明

图1示出了根据某些实施例的包括可以实现神经网络的片上网络(noc)系统的处理器的框图。

图2示出了根据某些实施例的神经网络的示例部分。

图3a示出了根据某些实施例的神经单元的膜电位的示例进展。

图3b示出了根据某些实施例的事件驱动和跳时神经网络的神经单元的膜电位的示例进展。

图4a示出了根据某些实施例的积分和触发神经单元的膜电位的示例进展。

图4b示出了根据某些实施例的泄漏积分和触发神经单元的膜电位的示例进展。

图5示出了根据某些实施例的跨noc的本地下一脉冲时间的通信。

图6示出了根据某些实施例的跨noc的全局下一脉冲时间的通信。

图7示出了根据某些实施例的用于计算本地下一脉冲时间的逻辑。

图8示出了根据某些实施例的用于计算下一脉冲时间和接收全局脉冲时间的示例流程。

图9示出了根据某些实施例的用于本地化时间步长确定方案的两个连接的神经元核之间的可允许的相对时间步长。

图10a-10d示出了根据某些实施例的多个核之间的连接状态序列。

图11示出了根据某些实施例的用于跟踪神经形态核的时间步长的示例神经元核控制器1100。

图12示出了根据某些实施例的神经形态核1200。

图13示出了根据某些实施例的用于处理各种时间步长的脉冲并递增神经形态核的时间步长的流程。

图14a是示出根据某些实施例的示范有序流水线和示范寄存器重命名、乱序发布/执行流水线的框图。

图14b是示出根据某些实施例的要包括在处理器中的乱序发布/执行架构核、示范寄存器重命名和有序架构核的示范实施例的框图;

图15a-b示出了根据某些实施例的更特定的示范有序核架构的框图,所述核会是芯片中的若干逻辑块中的一个(潜在地包括相同类型和/或不同类型的其它核);

图16是根据某些实施例的可以具有多于一个核,可以具有集成存储器控制器以及可以具有集成图形的处理器的框图;

图17、18、19和20是根据某些实施例的示范计算机架构的框图;以及

图21是根据某些实施例对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。

各种附图中相同的附图标号和名称指示相同的元件。

具体实施方式

在以下描述中,阐述了许多特定细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定架构和微架构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量/高度、特定处理器流水线阶段和操作等的示例,以便提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,不需要采用这些特定细节来实施本公开。在其它实例中,众所周知的组件或方法,诸如特定和备选处理器架构、用于所描述的算法的特定逻辑电路/代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、在代码中的算法的特定表达、特定的断电和门控技术/逻辑以及计算机系统的其它特定操作细节没有详细描述以便避免不必要地模糊本公开。

尽管可以参考诸如计算平台或微处理器的特定集成电路来描述以下实施例,但是其它实施例可适用于其它类型的集成电路和逻辑装置。本文描述的实施例的类似技术和教导可以应用于其它类型的电路或半导体装置。例如,所公开的实施例可以用在各种装置中,诸如服务器计算机系统、桌上型计算机系统、手持装置、平板电脑、其它薄笔记本电脑、片上系统(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的路由器可以在两个网络中不同地提供,或者在两个网络中通信,诸如分组交换网络和电路交换网络。此类通信方法可以称为混合分组/电路交换网络。在此类实施例中,可以使用分组交换网络和电路交换网络的资源在各种路由器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的膜电位。在各种实施例中,连接可以是定向的或不定向的。

一般地,在神经网络的每个时间步长期间,神经单元可以接收任何适合的输入,诸如偏置值或来自经由相应突触连接到神经单元的一个或多个神经单元(神经单元的此集合被称为神经单元的扇入神经单元)的一个或多个输入脉冲。应用于神经单元的偏置值可以是应用于输入神经单元的主输入的函数和/或应用于神经单元的某一其它值(例如,可以在神经网络的其它操作或训练期间调整的恒定值)。在各种实施例中,每个神经单元可以与其自身的偏置值关联,或者偏置值可以应用于多个神经单元。

神经单元可利用其输入值及其当前膜电位执行功能。例如,可以将输入添加到神经单元的当前膜电位以生成更新的膜电位。作为另一示例,非线性函数(诸如s形传输函数)可以应用于输入和当前膜电位。可以使用任何其它适合的函数。然后神经单元基于函数的输出更新其膜电位。当神经单元的膜电位超过阈值时,神经单元可以向每个其扇出神经单元(即,连接到脉冲神经单元的输出的神经单元)发送脉冲。例如,当x1脉冲时,脉冲可以传播到x5、x6和x7。作为另一示例,当x5脉冲时,脉冲可以传播到x8和x9(并且在一些实施例中传播到x1、x2、x3和x4)。在各种实施例中,当神经单元脉冲时,脉冲可以传播到驻留在相同神经形态核上的一个或多个连接的神经单元和/或分组化并通过一个或多个路由器104传输到神经形态核,所述神经形态核包括脉冲神经单元的扇出神经单元的一个或多个。当具体神经单元脉冲时脉冲被发送到的神经单元被称为神经单元的扇出神经单元。

在具体实施例中,一个或多个存储器阵列可包括在神经网络200的操作期间使用的存储突触权重、膜电位、阈值、输出(例如,神经单元已脉冲的次数)、偏置量或其它值的存储器单元。用于这些值中的每个值的比特的数量可以取决于实现而变化。在下面示出的示例中,可以相对于具体值描述特定比特长度,但是在其它实施例中,可以使用任何适合的比特长度。可以使用任何适合的易失性和/或非易失性存储器来实现存储器阵列。

在具体实施例中,神经网络200是脉冲神经网络(snn),其包括多个神经单元,每个神经单元在多个时间步长上跟踪它们相应的膜电位。通过使用偏置项、泄漏项(例如,如果神经单元是泄漏积分和触发神经单元)和/或对于传入脉冲的贡献来调整先前时间步长的膜电位来对于每个时间步长更新膜电位。应用于结果的传输函数可以生成二进制输出。

尽管用于典型模式识别工作负载的各种snn中的稀疏程度非常高(例如,对于具体输入模式,整个神经单元群体的5%可能脉冲),用于更新神经状态的存储器访问中消耗的能量的量(即使没有输入脉冲)是相当大的。例如,用于获取突触权重和更新神经单元状态的存储器访问可以是神经形态核的总能量消耗的主组分。在具有稀疏活动的神经网络(例如,snn)中,许多神经单元状态更新执行非常少的有用计算。

在本公开的各种实施例中,提供了用于利用跳时计算的事件驱动神经网络的全局时间步长通信方案。本文描述的各种实施例提供用于减少存储器访问的数量(而不包括神经形态计算平台的计算工作负载的准确性或性能)的系统和方法。在具体实施例中,神经网络仅在正在处理脉冲事件的时间步长(即,活动时间步长)上计算神经单元状态改变。当神经单元的膜电位更新时,由于时间步长(其中神经单元的状态未更新(即,空闲时间步长))的对膜电位的贡献被确定并与由于活跃的时间步长的对膜电位的贡献聚合。然后,神经单元可以保持空闲(即,跳过膜电位更新)直到下一活动时间步长,因此改进性能,同时减少存储器访问以最小化能量消耗(由于跳过用于空闲时间步长的存储器访问)。可以在中心位置确定神经网络(或其子部分)的下一活动时间步长,并将其传递到神经网络的各种神经形态核。

事件驱动的跳时神经网络可用于执行任何适合的工作负载,诸如输入图像的稀疏编码或其它适合的工作负载(例如,其中脉冲的频率相对低的工作负载)。尽管在snn的上下文中讨论了本文的各种实施例,但是本公开的概念可以应用于任何适合的神经网络,例如卷积神经网络或其它适合的神经网络。

图3a示出了根据某些实施例的神经单元的膜电位302a的示例进展。所描绘的进展基于的是基于时间步长的神经计算,其中在每个时间步长308更新神经单元的膜电位。图3a描绘了通过任意输入脉冲模式的积分和触发神经单元(没有泄漏)的示例膜电位进展。304a描绘了对存储神经单元之间的连接的突触权重的阵列(“突触阵列”)进行访问,并且306a描绘了对存储神经单元的偏置项的阵列(“偏置阵列”)和存储神经单元的当前膜电位的阵列(“神经状态阵列”)进行访问。在本文描绘的各种实施例中,膜电位仅是当前膜电位和到神经单元输入的总和,尽管在其它实施例中,任何适合的功能可用于确定更新的膜电位。

在各种实施例中,突触阵列与偏置阵列和/或神经状态阵列分开存储。在具体实施例中,偏置和神经状态阵列使用相对快的存储器实现,诸如寄存器文件(其中每个存储器单元是晶体管、锁存器或其它适合的结构),而突触阵列使用更适合用于存储大量信息的相对较慢的存储器(例如,静态随机存取存储器(sram))来存储(由于神经单元之间的相对大量的连接)。然而,在各种实施例中,任何适合的存储器技术(例如,寄存器文件、sram、动态随机存取存储器(dram)、闪存、相变存储器或其它适合的存储器)可以用于这些阵列中的任何一个。

在时间步长308a,访问偏置阵列和神经状态阵列,并且通过神经单元的偏置项(b)增加神经单元的膜电位,并且将更新的膜电位写回到神经单元状态阵列。在时间步长308a期间,还可以更新其它神经单元(在各种实施例中,处理逻辑可以在多个神经单元之间共享,并且神经单元可以连续更新)。在时间步长308b,再次访问偏置阵列和神经状态阵列,并且将膜电位增加b。在时间步长308c,接收输入脉冲310a。相应地,访问突触阵列以检索正处理的神经单元和从其接收脉冲的神经单元之间的连接的权重(或者如果接收到多个脉冲,则多个突触权重)。在此示例中,脉冲对膜电位具有负面影响(尽管脉冲可能备选地对膜电位具有正面影响或对膜电位没有影响),并且在时间步长308c对电位的总影响为b-w。在时间步长308d-308f,没有接收到输入脉冲,因此仅访问偏置阵列和神经状态阵列,并且在每个时间步长将偏置项添加到膜电位。在时间步长308g,接收另一输入脉冲310b,并且因此访问突触阵列、偏置阵列和神经状态阵列以获得值来更新膜电位。

用这种方法,其中在每个时间步长更新神经状态,膜电位可表达为:

其中u(t+1)等于在下一时间步长的膜电位,u(t)等于当前膜电位,b是神经单元的偏置项,并且(wi·ii)是耦合到正处理的神经单元的具体神经单元i是否是脉冲的二进制指示(即,1或0)与正处理的神经单元和神经单元i之间的连接的突触权重的乘积。可以在耦合到正被处理的神经单元的所有神经单元上执行求和。

在此示例中,其中在每个时间步长更新神经单元,在每个时间步长访问偏置阵列和神经状态阵列。当输入脉冲相对罕见时(例如,对于诸如图像的稀疏编码的工作负载),此类方法可能使用过多的能量。

图3b示出了根据某些实施例事件驱动和跳时的神经网络的神经单元的膜电位302b的示例进展。所描绘的进展是基于跳时和事件驱动的神经计算,其中仅在活动时间步长308c和308g(在其中接收一个或多个输入脉冲)更新神经单元的膜电位。如在图3a中,此进展描绘了具有与进展302a相同的脉冲模式和偏置输入的积分和触发神经单元(没有泄漏)。304b描绘了对突触阵列进行访问,并且306b描绘了对偏置阵列和神经状态阵列进行访问。

与图3a中所示的方法相反,神经单元跳过时间步长308a和308b,并且不访问偏置阵列和神经状态阵列。在时间步长308c,接收输入脉冲310a。类似于图3a的进展,访问突触阵列以检索正处理的神经单元和从其接收脉冲的神经单元之间的连接的权重(或者如果接收到多个脉冲,则多个突触权重)。还访问神经状态阵列和偏置阵列。除了对应于所接收的任何脉冲的突触权重的标识之外,对用于当前时间步长的神经单元的输入和尚未考虑的任何空闲时间步长(例如,在活动时间步长之间发生的时间步长)也被确定(例如,经由偏置阵列访问或其它方式)。相应地,在308c对膜电位的更新计算被为3*b-w,其包括三个偏置项(一个用于当前时间步长,并且两个用于被跳过的空闲时间步长308a和308b)和传入脉冲的权重。然后神经单元跳过时间步长308d、308e和308f。在下一活动时间步长308g,基于在每个空闲时间步长和当前时间步长的输入再次更新膜电位,导致对膜电位的4*b-w的改变。

在图3b的每个活动时间步长之后,膜电位302b与图3a的相同时间步长的膜电位302a匹配。在此示例中,其中神经单元响应传入脉冲更新代替在每个时间步长更新,偏置阵列和神经状态阵列仅在活动时间步长访问,因此节省能量并改进处理时间,同时维持准确跟踪膜电位。

以此方法,其中在每个时间步长不更新神经状态并且偏置项从处理的最后时间步长到正被处理的时间步长保持恒定,膜电位可以表达为:

其中,u(t+n)等于在正被处理的时间步长的膜电位,u(t)等于在处理的最后时间步长的膜电位,n是从最后处理的时间步长到正被处理的时间步长的时间步长的数量,b是神经单元的偏置项,以及wi·ii是耦合到正被处理的神经单元的具体神经单元i是否是脉冲的二进制指示(即,1或0)与正被处理的神经单元和神经单元i之间连接的突触权重的乘积。可以在耦合到正被处理的神经单元的所有神经单元上执行求和。如果从处理的最后时间步长到正被处理的时间步长的偏置不恒定,则可以将等式修改成:

其中bj是在时间步长j的神经单元的偏置项。

在各种实施例中,在更新神经单元的膜电位之后,可以进行关于在没有任何输入脉冲的情况下神经单元未来要脉冲多少时间步长(即,假设在神经单元脉冲之前神经单元没有接收到输入脉冲而进行计算)的确定。通过恒定偏置b,可以如下确定直到膜电位超过阈值θ的时间步长的数量:

其中tnext等于直到膜电位超过阈值的时间步长的数量,u等于针对当前时间步长计算的膜电位,并且b等于偏置项。尽管此处没有示出所述方法论,但是在没有输入脉冲的情况下直到膜电位超过阈值θ的时间步长的数量也可以通过确定在每个时间步长的偏置加上当前膜电位的总和将超过阈值之前将经过多少时间步长来在不保持偏置恒定的情况下被确定。

图4a示出了根据某些实施例的积分和触发神经单元的膜电位的示例进展。此进展描绘了基于时间步长的方法(类似于图4a中所示的方法),其中在每个时间步长更新神经单元的膜电位。图4a还描绘了阈值θ。一旦膜电位超过阈值,神经单元可生成脉冲并且然后进入不应期,其配置成防止神经单元再次立即脉冲(在一些实施例中,当神经单元脉冲时,电位可被重置成具体值)。如上面所陈述的,时间步长方法中的膜电位可以如下计算:

图4b示出了根据某些实施例的泄漏积分和触发神经单元的膜电位的示例进展。在所描绘的实施例中,膜电位在时间步长之间泄漏,并且输入基于时间常数τ被缩放。可以根据以下等式计算膜电位:

与上面描述的实施例类似,在更新泄漏积分和触发经单元的膜电位之后,可以进行关于在没有任何输入脉冲的情况下神经单元未来要脉冲多少时间步长的确定。通过恒定偏置b,可以基于上面等式计算直到膜电位超过阈值θ的时间步长的数量。在没有输入脉冲的情况下,上面的等式变为:

类似地:

相应地:

为了求解tnext(在没有输入脉冲的情况下直到神经单元超过阈值θ的时间步长的数量),将u(t+n)设置成θ,并且n(此处示出为tnext)被隔离在等式的一侧上:

其中,unew是最近计算的神经单元的膜电位。因此,可以使用实现上面计算的逻辑来确定tnext。在一些实施例中,可以通过使用近似来简化逻辑。在具体实施例中,用于u(t+n)的等式:

可以近似为:

在从传入脉冲移除贡献并将u(t+n)设置等于θ之后,可以将tnext计算为:

相应地,可以经由实现此近似的逻辑求解tnext。尽管这里没有示出所述方法论,但是在没有输入脉冲的情况下直到膜电位超过阈值θ的时间步长数量也可以通过确定在每个时间步长的偏置加上当前膜电位的总和将超过阈值之前将经过多少时间步长(并将在每个时间步长的泄漏考虑在内)来在不保持偏置恒定的情况下被确定。

图5示出了根据某些实施例的跨noc的本地下一脉冲时间的通信。如上面所描述的,事件驱动的snn通过确定对于神经单元具体群组的输入脉冲将在那时发生(即,下一脉冲时间)的下一时间步长来增加效率,与假设脉冲将在下一时间步长默认发生相对。例如,如果神经单元被布置在层中,其中一个层中的每个神经元具有到随后层的神经元的定向的连接(例如,前馈网络),则要被处理以用于具体层的神经单元的下一时间步长可以是紧跟时间步长(在该时间步长先前层的任何神经单元要脉冲)的时间步长。作为另一示例,在每个神经单元具有到每一个其它神经单元的定向的连接的递归网络中,要被处理以用于神经单元的下一时间步长是任何神经单元要脉冲所在的下一时间步长。出于解释的目的,以下讨论将聚焦于涉及递归网络的实施例,尽管所述教导可适于任何适合的神经网络。

在利用多个核(例如,每个神经形态核可以包括网络的多个神经单元)的事件驱动的snn中,可以跨所有核传递其中将发生脉冲的下一时间步长以确保脉冲按正确的顺序处理。核可以每个独立且并行地执行其神经单元的脉冲积分和阈值计算。在事件驱动的神经网络中,核还可以确定在计算的推测性下一脉冲时间之前在没有输入脉冲的情况下核中的任何神经单元将脉冲的下一脉冲时间。例如,可以使用上面讨论的任何方法论或其它适合的方法论为神经单元计算下一脉冲时间。

为了解决脉冲依赖性并计算神经网络的非推测性脉冲时间(即,在网络中将发生脉冲的下一时间步长),跨核计算最小的下一脉冲时间。在各种实施例中,所有核处理在此非推测性下一脉冲时间生成的一个或多个脉冲。在一些系统中,每个核使用单播消息将其神经单元的下一脉冲时间传递到每一个其它核,并且然后每个核确定接收的脉冲时间的最小下一脉冲时间,并且然后在对应的时间步长执行处理。其它系统可以依赖全局事件队列和控制器来协调处理的时间步长。在本公开的各种实施例中,通过网络中处理和多播分组以低延迟和能量有效的方式执行脉冲时间通信。

在所描绘的实施例中,每个路由器耦合到相应的核。例如,路由器零耦合到核零、路由器一耦合到核一等等。所描绘的每个路由器可以具有路由器104的任何适合的特性,并且每个核可以具有核108的任何适合的特性或其它适合的特性。例如,核可以每个是实现任何适合数量的神经单元的神经形态核。在其它实施例中,路由器可以直接耦合(例如,通过路由器的端口)到任何数量的神经形态核。例如,每个路由器可以直接耦合到四个神经形态核。

在处理具体时间步长之后,收集操作可以将网络的下一脉冲时间传递到中心实体(例如,所描绘的实施例中的router10)。中心实体可以是任何适合的处理逻辑,诸如路由器、核或关联逻辑。在具体实施例中,在收集操作期间核和路由器之间的通信可以遵循具有中心实体作为其根的生成树。树的每个节点(例如,核或路由器)可以将具有下一脉冲时间的通信发送到生成树上的其父节点(例如,路由器)。

具体路由器的本地下一脉冲时间是在该路由器处接收的下一脉冲时间的最小下一脉冲时间。路由器可以从直接连接到路由器的每个核接收脉冲时间(在所描绘实施例中,每个路由器仅直接耦合到单个核)以及来自紧邻路由器的一个或多个下一脉冲时间。路由器选择本地下一脉冲时间作为接收的下一脉冲时间的最小值,并将此本地下一脉冲时间转发到下一路由器。在所描绘的实施例中,路由器0、3、4、7、8、11、12和15的本地下一脉冲时间将仅仅是路由器耦合到的相应核的下一脉冲时间。router1将从从router0接收的本地下一脉冲时间和从core1接收的下一脉冲时间中选择本地下一脉冲时间。router5将从从router4接收的本地下一脉冲时间和从core5接收的下一脉冲时间中选择本地下一脉冲时间。router9将从从router8接收的本地下一脉冲时间和从core9接收的下一脉冲时间中选择本地下一脉冲时间。router13将从从router12接收的本地下一脉冲时间和从core13接收的下一脉冲时间中选择本地下一脉冲时间。router2将从从router1接收的本地下一脉冲时间、从router3接收的本地下一脉冲时间以及从core2接收的下一脉冲时间中选择本地下一脉冲时间。router6将从从router5接收的本地下一脉冲时间、从router2接收的本地下一脉冲时间、从router7接收的本地下一脉冲时间、以及从core6接收的下一脉冲时间中选择本地下一脉冲时间。router14将从从router13接收的本地下一脉冲时间、从router15接收的本地下一脉冲时间、以及从core14接收的下一脉冲时间中选择本地下一脉冲时间。最后,router10(生成树的根节点)将从从router6、router9、router11和router14接收的本地下一脉冲时间以及从core10接收的下一脉冲时间中选择全局下一脉冲时间。此全局下一脉冲时间表示神经单元将脉冲的跨网络的下一脉冲时间。

因此,生成树的叶(核0到15)将其推测性下一时间步长一跳发送朝向生成树的根(例如,在分组中)。每个路由器从输入端口收集分组,确定输入之间的最小下一脉冲时间,并且将仅最小下一脉冲时间一跳传递朝向根。此过程继续,直到根接收到所有连接的核的最小脉冲时间,此时脉冲时间变成非推测性的并且可以被传递到核(例如,使用多播消息),使得核可以处理由下一脉冲时间指示的时间步长(例如,可以更新每个核的神经单元并且可以确定新的下一脉冲时间)。

代替将独立单播消息从每个核发送到根,使用此波动机制减少网络通信,并改进延迟和性能。可以使用任何适合的技术实时预计算或确定引导路由器通信的树的拓扑。在所描绘的实施例中,路由器使用遵循维度顺序路由选择方案的树进行通信,具体是x第一、y第二路由选择方案,其中本地下一脉冲时间首先在东/西方向上传输并且然后在北/南方向上传输。在其它实施例中,可以使用任何适合的路由选择方案。

在各种实施例中,每个路由器被编程为知道它将从多少个输入端口接收下一脉冲时间以及应当将本地下一脉冲时间发送到哪个输出端口。在各种实施例中,包括本地下一脉冲时间的路由器之间的每个通信(例如,分组)可以包括指示通信包括本地下一脉冲时间的标志比特或操作码。在确定本地下一脉冲时间并将本地下一脉冲时间发送到下一跳之前,每个路由器将等待接收来自指定数量的输入端口的输入。

图6示出了根据某些实施例的跨在noc上实现的神经网络的全局下一脉冲时间的通信。在所描绘的实施例中,中心实体(例如,router10)向网络的每个核发送包括全局下一脉冲时间的多播消息。在具体实施例中,多播消息遵循相同的生成树(其中通信在相反的方向移动)作为本地下一脉冲时间,尽管在其它实施例中,可以使用任何适合的多播方法将全局下一脉冲时间传递到核。在树中的每个分支处,可以经由一个输入端口接收消息并将其复制到多个输出端口。在多播阶段,全局下一脉冲时间被传递到所有核,并且所有核处理在此时间步长期间发生的神经元活动,而不管它们自己的本地推测性的下一时间步长。

图7示出了根据某些实施例的用于计算本地下一脉冲时间的逻辑。在各种实施例中,用于计算本地下一脉冲时间的逻辑可以包括在网络的任何适合的节点处,诸如核、路由器或核与路由器之间的网络接口。类似地,用于计算全局下一脉冲时间并经由多播消息传送全局下一脉冲时间的逻辑可以包括在网络的任何适合的节点处。

在各种实施例中,所描绘的逻辑可包括用于执行本文描述的功能的电路。在具体实施例中,图7中描绘的逻辑可以位于每个路由器内并且可以与一个或多个核(或核和路由器之间的网络接口)以及与路由器端口(即,耦合到其它路由器的端口)通信。当神经网络映射到noc的硬件时,可以编程要从核和/或路由器接收本地下一脉冲时间的输入端口以及要发送计算的本地下一脉冲时间到下一跳的输出端口的数量并在神经网络操作期间保持恒定。

输入端口702可以包括相对于图1描述的输入端口的任何适合的特性。输入端口可以连接到核或另一路由器。所描绘的“数据”可以是包括由路由器或核发送的下一脉冲时间(即,下一脉冲时间分组)的分组。在各种实施例中,这些分组可以通过分组报头中的操作码(或标志)来表示,操作码(或标志)将它们与在noc上传递的其它类型的分组区分。代替直接转发这些分组,可以使用比较器706将分组的下一脉冲时间数据字段与当前本地下一脉冲时间进行比较。异步合并块704可以控制向比较器706提供哪个本地下一脉冲时间(并且当包括下一脉冲时间的多个分组准备好要被处理时,可以提供仲裁)。比较器706可以将所选择的本地下一脉冲时间与存储在缓冲器708中的当前本地下一脉冲时间进行比较。如果所选择的本地下一脉冲时间低于存储在缓冲器708中的本地下一脉冲时间,则所选择的本地下一脉冲时间作为当前本地下一脉冲时间存储在缓冲器708中。异步合并块704还可以向计数器710发送请求信号,所述计数器710跟踪已处理的本地下一脉冲时间的数量。请求信号可以递增由计数器710存储的值。可以将由计数器存储的值与可以在神经网络的操作之前配置的输入数量值712进行比较。输入数量可以等于在处理时间步长并且将本地下一脉冲时间发送到中心实体之后路由器被预期接收的本地下一脉冲时间的数量。一旦计数器710的值等于输入的数量,则已处理了所有本地下一脉冲时间,并且由最小缓冲器708存储的值表示用于路由器的本地下一脉冲时间。路由器可以生成包含本地下一脉冲时间的分组,并且在预编程的方向上将分组发送朝向中心位置(例如,生成树的根节点)。例如,分组可以通过输出端口发送到下一跳路由器。如果路由器是中心路由器,则其计算的本地下一脉冲时间是全局下一脉冲时间,并且可以经由多个不同的输出端口作为多播分组进行通信。

在将本地下一脉冲时间传递到输出端口之后,重置最小缓冲器708和计数器710。在一个实施例中,可以将最小缓冲器708设置为足够高的值,以确保接收的任何本地下一脉冲时间将小于重置值并且将覆盖重置值。

尽管所描绘的逻辑是异步的(例如,配置用于在异步noc中使用),但是可以使用任何适合的电路技术(例如,逻辑可以包括适于用于同步noc的同步电路)。在具体实施例中,逻辑可以利用每分组流程控制的阻塞1-flit(例如,对于请求和ack信号),尽管在各种实施例中可以使用具有保证的递送的任何适合的流程控制。在所描绘的实施例中,请求和ack信号可被利用以提供流控制。例如,一旦输入(例如,数据)信号有效并且数据的目标准备好(如由通过目标发送的ack信号指示的),可以断言或交换请求信号,在此时数据将由目标接收(例如,当请求信号被断言时,输入端口可以锁存在其输入处接收的数据并且输入端口可用于接受新数据)。如果下游电路未准备好,则ack信号的状态可以指令输入端口不接受数据。在所描绘的实施例中,由输出端口发送的ack信号可以将计数器710重置为零,并且在已经发送下一脉冲时间之后将最小缓冲器708设置成最大值。

图8示出了根据某些实施例的用于计算下一脉冲时间并接收全局脉冲时间的示例流程800。所述流程可以例如由网络元件102(例如,路由器和/或一个或多个神经形态核)来执行。

在802,处理第一时间步长。例如,一个或多个神经形态核可以更新其神经单元的膜电位。在804,一个或多个神经形态核可以确定在没有输入脉冲的情况下任何神经单元将脉冲的下一时间步长。可以将这些下一脉冲时间提供到连接到一个或多个神经形态核的路由器。

在806,从一个或多个紧邻节点(例如,路由器)接收一个或多个下一脉冲时间。在808,从从一个或多个路由器和/或一个或多个核接收的下一脉冲时间中选择最小的下一脉冲时间。在810,将所选择的最小下一脉冲时间转发到紧邻节点(例如,在中心实体具有其根节点的生成树的下一跳路由器)。

在稍后的时间,在812,路由器可以从紧邻节点接收下一时间步长(即,全局下一脉冲时间)。在814,路由器可以将下一时间步长转发到一个或多个紧邻节点(例如,在806它从其接收下一脉冲时间的神经形态核和/或路由器)。

在适当的情况下,可以重复、组合、修改或删除图8中所示的一些框,并且还可以将附加框添加到流程图。此外,在不脱离具体实施例的范围的情况下,可以以任何适合的顺序执行框。

尽管上面实施例聚焦于将全局时间步长传递到所有核,但是在一些实施例中,脉冲依赖性可能仅需要仅在互连的神经单元之间解决,例如神经网络中的神经单元的相邻层。相应地,全局下一脉冲时间可以被传递到要处理脉冲的(或者否则具有接收脉冲时间的需要)任何适合的核群组。因此,例如,在具体的神经网络中,可以将核划分成单独的域,并且例如根据相应域的生成树在相应域的中心位置处(以与上面描述的方式类似的方式)为每个域计算全局时间步长,并仅传递到该相应域的核。

图9示出了根据某些实施例的用于本地时间步长确定方案的两个连接的神经元核之间的可允许的相对时间步长。神经形态处理器可以用在时间步长内极其并行的脉冲处理以及使在时间步长之间的有序处理成为必需的脉冲依赖性来运行snn。在单个时间步长内,所有脉冲都是独立的。然而,因为在一个时间步长中脉冲的行为确定哪些神经单元将在随后的时间步长中脉冲,所以存在时间步长之间的脉冲依赖性。

协调时间步长以解决多核神经形态处理器中的脉冲依赖性来解决脉冲依赖性是延迟关键操作。时间步长的持续时间是不容易预测的,因为脉冲神经网络每核的每时间步长具有可变的计算量。一些系统可以通过将snn中的所有核保持在相同的时间步长来以全局方式解决脉冲依赖性。一些系统可以分配最大可能数量的硬件时钟周期来计算每个时间步长。在此类系统中,即使snn中的每一个神经元同时脉冲,神经形态处理器将能够在时间步长结束之前完成所有计算。时间步长持续时间可以是固定的(并且可以不取决于工作负载)。由于snn的脉冲率通常低(脉冲率甚至可能低于1%),因此此技术可能导致许多浪费的时钟周期和不必要的延迟惩罚。当每一个核已完成对于时间步长的其本地处理时,其它系统(例如,结合图5-8描述的实施例)可以检测时间步长的结束。此类系统受益于更短的平均时间步长持续时间(时间步长持续时间由在每个时间步长的最慢核的执行时间设置)但是利用全局集体操作并且全局时间步长在核之间共享。

本公开的各种实施例使用在snn中连接的核之间的本地通信来在逐核基础上控制神经形态核的时间步长,同时保持脉冲依赖性的适当处理。由于脉冲依赖性仅存在于连接的神经单元之间,跟踪每个核的连接的神经元的时间步长可以使脉冲依赖性能够在没有严格的全局同步的情况下被解决。因此,每个神经形态核可以跟踪相邻核(即,向具体核提供输入或从具体核接收输出的核)所处的时间步长,并且当已经接收到来自输入核(即,具有用于核的神经单元的扇入神经单元的核)的脉冲时递增其自己的时间步长,完成本地脉冲处理,并且任何输出核(即,具有用于核的神经单元的扇出神经单元的核)准备好接收新的脉冲。允许更靠近snn输入的核(上游核)计算对于在下游核之前的时间步长的神经单元处理,并缓存未来的脉冲和部分积分结果以用于稍后使用。因此,各种实施例可以利用本地通信以分布式方式实现对于整个多核神经形态处理器的时间步长控制。

具体实施例可以增加硬件可缩放性以支持更大的snn,例如脑缩放网络。本公开的各种实施例减少了在神经形态处理器上执行snn工作负载的延迟。例如,当允许每个核处理到未来的一个时间步长时,具体实施例可以在16核完全递归snn延迟中改进大约24%的延迟并且对于16核前馈snn改进大约20%。通过增加到未来允许核进行处理的时间步长的数量,可以进一步改进延迟。

图9a示出了两个连接的神经元核(“pre核”和“this核”)之间允许的相对时间步长。pre核可以是包括神经单元的核,神经单元是到this核的一个或多个神经单元的扇入神经单元(因此当pre核的神经单元脉冲时,脉冲可以被发送到this核的一个或多个神经单元)。this核可以连接到任何适合数量的pre核。所描绘的状态假设this核处于时间步长t。对于时间步长t-1,在this核处从pre核接收的脉冲在时间步长t在this核中被处理。如果pre核和this核处于相同的时间步长t,则this核可以从时间步长t-1处理完成的pre脉冲,并且连接是活动的。如果this核在pre核之前(例如,在时间步长t-1),则pre脉冲未完成且this连接处于空闲状态,因为this核等待pre核赶上。如果pre核在this核之前(例如,在时间步长t+1,t+2,...t+n),则this核可能忙于计算先前的时间步长或者可能正在等待来自不同联系的输入。在this核正等待来自其它pre核的输入时,this核可能处理来自pre核的未来时间步长的脉冲,this核具有与pre核的前瞻连接。处理结果存储在单独的缓冲器中(例如,每个时间步长的单独缓冲器)以确保有序操作。可用的缓冲器资源的数量可以确定核可以在其pre核之前处理多少时间步长(例如,前瞻状态的数量可以从1到n变化,其中n是可用于存储来自pre核的脉冲的缓冲器的数量)。当相对于具体pre核达到此限制时,可以防止pre核进一步递增其时间步长,这由预空闲连接描绘。

图9b示出了两个连接的神经元核(this核和“post核”)之间允许的相对时间步长。post核可以是包括神经单元的核,神经单元是到this核的一个或多个神经单元的扇出神经单元(因此当this核的神经单元脉冲时,脉冲可被发送到post核的一个或多个神经单元)。this核可以连接到任何适合数量的post核。所描绘的状态假设this核处于时间步长t。这些连接状态镜像pre核和this核之间的连接状态。例如,当post核在t-n-1过于落后this核时,this核与post核之间的连接是空闲的(因为post核中没有足够的缓冲资源来存储来自this核的附加脉冲)。当post核处于时间步长t-n到t-1时,连接状态是前瞻状态,因为post核可以缓冲并处理输入。当post核在时间步长t+1在this核之前时,所述连接是后空闲的,因为时间t的脉冲尚不可用于post核以在时间步长t+1进行处理。

图10a-10d示出了根据某些实施例的多个核之间的连接状态序列。此序列示出了本地时间步长同步如何允许前瞻计算(即,对于在由this核完成的最新时间步长之前的时间步长,允许this核处理某些pre核的输入脉冲),同时维持有序脉冲执行。在这些图中,this核耦合到输入核pre核0和pre核1。pre核0和pre核1都包括向this核的一个或多个神经单元提供脉冲的神经单元。

在图10a中,所有核都在时间步长1中,并且this核可以处理从时间步长0从两个pre核接收的脉冲,因此两个连接状态都是活动的。在图10b中,pre核1和this核已完成时间步长1,但pre核0尚未完成时间步长1。this核可能处理从时间步长1来自pre核1的脉冲,但在完成时间步长2之前,必须等待对于时间步长1的来自pre核0的输入脉冲,因此与pre核0的连接状态是空闲的。在图10c中,this核完成了对于时间步长1的来自pre核0的处理脉冲,但是无法完成时间步长1,因为它仍等待对于时间步长1的来自pre核0的脉冲。对于时间步长2,this核现在可以通过从pre核1接收脉冲、将脉冲存储在缓冲器中、并对神经单元的膜电位执行部分更新(对于具体的时间步长,直到从所有pre核接收到所有脉冲才认为更新完成)来执行前瞻处理。在图10d中,pre核0最终完成时间步长1并进入时间步长2并且对于时间步长1来自pre核0的脉冲到达并被处理,因此this核和pre核0之间的连接状态再次变成活动的。然后,this核可以移动到时间步长3。

图11示出了根据某些实施例的用于跟踪神经形态核的时间步长的示例神经元核控制器1100。在具体实施例中,控制器1100包括用于执行指定功能的电路或其它逻辑。遵循图9和10的约定,包含控制器1100(或以其它方式与控制器1100关联)的核将被称为this核。

神经元核控制器1100可以通过时间步长计数器1102跟踪this核的时间步长。神经元核控制器还可以通过时间步长计数器1104跟踪pre核的时间步长以及通过时间步长计数器1106跟踪post核的时间步长。当this核已经完成神经元处理(例如,当前时间步长的所有脉冲的)并且与所有相邻核(pre和post核)的连接处于活动或前瞻状态时,计数器1102可以递增。如果与任何pre核的连接处于后空闲状态,则对于this核的当前时间步长,仍然可以从该pre核接收一个或多个附加的输入脉冲,因此当前时间步长可以不递增。如果this核处于post核之前过于之前的时间步长,则连接可以进入预空闲状态,因为post核(或对post核可访问的其它存储空间)可能会用尽空间来存储this核在最新的时间步长的输出脉冲。一旦时间步长已经由this核完全处理并且与this核的邻居核的连接状态允许核移动到下一时间步长,则完成信号1108递增计数器1102。

当this核的时间步长递增时,也可以将完成信号发送(例如,经由多播消息)到连接到this核的所有pre核和post核。当这些核递增其时间步长时,this核可以从其pre和post核接收类似的完成信号。当从pre或post核接收到完成信号时,this核通过递增适当的计数器1104或1106来跟踪其pre和post核的时间步长。例如,在所描绘的实施例中,this核可以接收pre核完成信号1110连同指示与完成信号关联的具体pre核的pre核id(在具体实施例中,具有pre核id和pre核完成信号的分组可以从pre核发送到this核)。解码器1114可以基于pre核id将递增信号发送到适当的计数器1104。以这种方式,this核可以跟踪每个其pre核的时间步长。this核还可以以类似的方式跟踪每个其post核的时间步长(利用post核完成信号1118、post核id1120和递增信号1122)。在其它实施例中,用于在核之间传递完成信号和递增时间步长计数器的任何适合的信令机制可以被使用。

为了确定连接处于哪种状态,可以将时间步长计数器1102的值提供到每个pre核连接状态逻辑块1124和post核连接状态逻辑块1126。计数器1102的值和相应计数器1104或1106的值之间的差异可以被计算,并基于结果分辨对应的连接状态。每个连接状态逻辑块1124或1126还可以包括状态输出逻辑1128或1130,其可以输出在对应的连接状态处于活动或前瞻状态时被断言的信号。可以组合并使用所有状态输出的输出(组合神经元处理逻辑1132的输出,其指示对应于当前时间步长的脉冲缓冲器是否具有剩余要处理的任何脉冲)以确定this核是否可以递增其时间步长。

在具体实施例中,时间步长计数器1102可以维持比由时间步长计数器1104和1106维持的计数器值具有更多的比特的计数器值(在一些实施例中,每个计数器保持相同数量的比特)。在一个示例中,计数器1102可以用于神经网络的其它操作,而时间步长计数器1104和1106仅用于跟踪this核的连接的状态。在其中时间步长计数器1102比计数器1104和1106维持更多的比特的实施例中,计数器1102的最低有效位(lsb)群组而不是整个计数器值被供应到每个连接状态逻辑块1124和1126。例如,与由计数器1104和1106存储的比特的数量匹配的计数器1102的多个比特可以被提供到块1124和1126。由计数器1104和1106维持的比特的数量可以足以表示状态的数量,例如,活动状态,所有前瞻状态和至少一个空闲状态(在具体实施例中,两个不同的空闲状态可以混淆,因为它们产生相同行为)。例如,两比特计数器可用于支持两个前瞻状态、活动状态和空闲状态或三比特计数器可用于支持附加的前瞻状态。

在具体实施例中,当this核递增其时间步长时,代替将完成信号发送到pre和post核,可以采用基于事件的方法,其中this核发送其更新的时间步长(或其更新的时间步长的lbs)到pre和post核。相应地,在此类实施例中可以省略计数器1104和1106,并用存储器替换以存储接收的时间步长或用其它电路替换来促进核状态逻辑1128和1130的操作。

图12示出了根据某些实施例的神经形态核1200。核1200可具有本文所描述的其它神经形态核的任何一个或多个特性。核1200包括神经元核控制器1100、pre脉冲缓冲器1202、突触权重存储器1204、权重求和逻辑1206,膜电位增量缓冲器1208和神经元处理逻辑1132。

pre脉冲缓冲器1202存储对于前瞻时间步长要处理的输入脉冲(即,pre核脉冲1212)(这些脉冲可以在当前时间步长或未来时间步长由一个或多个pre核输出)以及对于核1200的当前/活动时间步长要处理的输入脉冲(这些脉冲可以在先前时间步长由一个或多个pre核输出)。在所描绘的实施例中,pre脉冲缓冲器1202包括四个条目,其中一个条目专用于对于当前时间步长从pre核接收的脉冲,以及三个条目每个专用于对于具体前瞻时间步长从pre核接收到的脉冲。

当从pre核的神经单元接收到脉冲1212时,可以基于脉冲的神经单元的标识符(即,pre脉冲地址1214)和指定的时间步长1216(其中神经单元脉冲)将其写入到pre脉冲缓冲器1202中的位置。尽管可以以任何适合的方式寻址缓冲器1202,在具体实施例中,时间步长1216可以分辨缓冲器1202的列,并且pre脉冲地址1214可以分辨缓冲器1202的行(因此缓冲器1202的每个行可以对应于pre核的不同神经单元)。在一些实施例中,缓冲器1202的每个列可用于存储具体时间步长的脉冲。

在各种实施例中,每个脉冲可以在其自己的消息(例如,分组)中从pre核发送到核1200。在其它实施例中,脉冲1212(和pre脉冲地址1214)可以聚合成消息并且作为向量发送到核1200。

除了跟踪相邻核的状态(例如,如上面所描述的)之外,神经元核控制器1100还可以协调各种时间步长的脉冲的处理。在处理脉冲时,神经元核控制器1100可以优先化最早时间步长的脉冲。因此,控制器1100可以在处理缓冲器1202中存在的前瞻时间步长的脉冲之前处理缓冲器1202中存在的当前时间步长的任何脉冲。控制器1100还可以在在缓冲器1202中处理第二前瞻时间步长的脉冲之前处理在缓冲器1202中存在的第一前瞻时间步长的任何脉冲,等等。

在具体实施例中,神经元核控制器1100可以从缓冲器读脉冲(例如,通过断言脉冲的行和列),并且访问核1200的神经单元与脉冲神经单元之间的连接的突触权重。例如,如果生成脉冲的神经单元连接到核1200的每个神经单元,则可以访问包括核1200中的每一个神经单元的突触权重的行。突触权重存储器1204包括用于pre核的扇入神经单元与核1200的神经单元之间的连接的突触权重。

权重求和逻辑1206可以将核1200的每个神经单元的突触权重单独求和成该神经元的膜电位增量。因此,当脉冲被发送到核1200的所有神经单元时,权重求和逻辑1206可以迭代通过神经单元,为脉冲神经单元和对于可适用时间步长被更新成该神经单元的膜电位增量的神经单元添加突触权重。

膜电位增量缓冲器1208可以包括多个条目,每个条目对应于具体的时间步长。在每个条目内,存储膜电位增量集合,带有每个增量对应于具体的神经单元。膜电位增量表示神经单元的部分处理结果,直到时间步长完成(即,所有pre核已供应它们相应的脉冲)。在具体实施例中,用于访问pre脉冲缓冲器1202的相同列地址(例如,时间步长1218)也可用于在脉冲处理期间访问膜电位增量缓冲器1208。

一旦时间步长完成,每个神经单元通过将对于当前时间步长的其膜电位增量添加到在先前时间步长结束的神经单元的膜电位(其可以由神经元处理逻辑1132存储或者存储在对逻辑1132可访问的存储器中)由神经元处理逻辑1132处理。在一些实施例中,如果具体神经单元处于不应期,则膜电位增量不添加到对于该神经单元的膜电位。神经元处理逻辑1132可以执行对神经单元的任何其它适合的操作,例如将偏置和/或泄漏操作应用于神经单元以及确定神经单元在当前时间步长是否脉冲。如果神经单元脉冲,则神经元处理逻辑可以将脉冲1220连同脉冲地址1222发送到具有用于脉冲神经单元的扇出神经单元的核(即,post核),所述脉冲地址1222包括脉冲的神经单元的标识符。

在各种实施例中,对于具有大量神经单元的核,可以执行对突触权重存储器1204的串行访问,以及用于权重求和以及神经元处理的串行处理,尽管可以使用任何适合的方法执行任何这些操作。

在各种实施例中,神经元核控制器1100可以通过输出用于访问pre脉冲缓冲器1202和膜电位增量缓冲器1208的条目的时间步长1218来促进输入脉冲1212的处理。如果当前时间步长的所有接收到的输入脉冲已被处理(并且核1200正等待一个或多个pre核完成生成对于当前时间步长的要处理的脉冲),神经元核控制器1100可以输出对应于前瞻时间步长的地址并处理来自前瞻时间步长的脉冲,直到对于当前时间步长接收到附加输入脉冲(或剩余的pre核完成时间步长而不发送附加脉冲)。

当具体时间步长完成时,pre脉冲缓冲器1202的对应条目和膜电位增量缓冲器1208的条目可以被清除(例如,重置),并用于未来时间步长。

在具体实施例中,在将snn映射到硬件时预确定每个神经形态核的pre核和post核的数量,并且可相应地设计每个核的逻辑。例如,每个核的神经元控制器1100可以适于核的特定配置,并且可以包括例如基于核的pre核和post核的数量使计数器1104和1106的数量不同。作为另一示例,可以基于核1200的pre核的神经单元的数量来配置核1200的pre脉冲缓冲器1202的行的数量。

在所描绘的实施例中,在神经网络开始操作之前,基于pre脉冲缓冲器1202和膜电位增量缓冲器1208中的条目的数量,预配置可允许的前瞻状态的数量,尽管在其它实施例中,可以动态地确定可允许的前瞻状态的数量(即,核可以继续经过相邻核的时间步长的数量)。例如,可以在不同的时间步长和/或核之间共享一个或多个本地存储器池,并且可以动态地分配存储器的部分以用于由时间步长和/或核使用(例如,存储输出和/或膜电位增量)。在具体实施例中,中心控制器可以以智能方式在时间步长和/或核之间动态地分配存储器,以促进神经网络的有效操作。

图13示出了根据某些实施例的用于处理各种时间步长的脉冲并递增神经形态核的时间步长的流程。在1302,用最早时间步长分辨脉冲。例如,可以搜索脉冲缓冲器1202以确定对应于当前时间步长的缓冲器条目中是否存在任何脉冲。如果对于当前时间步不存在脉冲,则可以搜索对应于下一时间步长的缓冲器条目,等等。

在1304,访问针对脉冲的扇出神经单元的突触权重。突触权重可以是要更新的神经单元和脉冲神经单元之间的连接的权重(即扇出神经单元)。在1306,对于与脉冲关联的时间步长(其实际上可以是比脉冲发生的时间步长晚一个时间步长),将突触权重添加到扇出神经单元的膜电位增量。

在1308,确定刚刚更新的神经单元是否是脉冲的神经单元的最后扇出神经单元。如果不是,则流程返回到1304并更新附加的神经单元。如果神经单元是对于脉冲的最后扇出神经单元,则在1310进行关于当前时间步长是否完成的确定。例如,当对于该时间步长所有pre核已提供其输入脉冲到核并且已处理对于该时间步长的所有脉冲时,可以完成时间步长。如果时间步长未完成,则流程可以返回到1302,其中可以处理附加脉冲(对于当前时间步长或对于前瞻时间步长)。

在1312,在确定当前时间步长完成之后,在1312可以执行神经元处理。例如,神经元处理逻辑1132可以执行任何适合的操作,诸如确定哪些神经单元在当前时间步长期间脉冲,应用泄漏和/或偏置项,或执行其它适合的操作。输出脉冲可以传播到适当的核。

在1314,检查相邻核的状态。如果相邻核都处于导致与核的活动或前瞻的连接状态的状态(例如,时间步长),则在1316核的时间步长可以递增。如果存在任何空闲连接,则核可以继续处理前瞻时间步长的脉冲,直到连接状态允许核的时间步长递增。

在适当的情况下,可以重复、组合、修改或删除图13中示出的一些框,并且还可以将附加框添加到流程图。此外,在不脱离具体实施例的范围的情况下,可以以任何适合的顺序执行框。

下面的附图详述了用于实现上面的实施例的示范架构和系统。例如,上面描述的神经形态处理器可以被包括在下面描述的任何系统内。在一些实施例中,神经形态处理器可以通信地耦合到下面的任何处理器。在各种实施例中,神经形态处理器可以在与下面描述的任何处理器相同的芯片内和/或其上实现。在一些实施例中,上面所描述的一个或多个硬件组件和/或指令如下面详述地被模拟,或者实现为软件模块。

处理器核可以不同方式、为了不同目的、以及在不同处理器中被实现。例如,此类核的实现可包括:1)打算用于通用计算的通用有序核;2)打算用于通用计算的高性能通用乱序核;3)打算主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括打算用于通用计算的一个或多个通用有序核和/或打算用于通用计算的一个或多个通用乱序核的cpu;以及2)包括打算主要用于图形和/或科学(吞吐量)的一个或多个专用核的协同处理器。此类不同处理器导致不同计算机系统架构,其可包括:1)在与所述cpu单独的芯片上的协同处理器;2)在与cpu相同的封装中单独管芯上的协同处理器;3)在与cpu相同的管芯上的协同处理器(在该情况中,此类协同处理器有时被称为专用逻辑,诸如集成的图形和/或科学(吞吐量)逻辑,或被称为专用核);以及4)在可在相同管芯上包括所描述的cpu(有时被称为一个或多个应用核或一个或多个应用处理器)、以上所描述的协同处理器、和附加功能性的芯片上系统。示范性核架构接下来被描述,继之以示范性处理器和计算机架构的描述。

图14a是框图,其示出根据本公开的实施例的示范性有序流水线和示范性寄存器重命名、乱序发布/执行流水线两者。图14b是框图,其示出根据本公开的实施例的要被包括在处理器中的有序架构核的示范性实施例和示范性寄存器重命名、乱序发布/执行架构核两者。图14a-b中的实线框示出有序流水线和有序核,而虚线框的可选附加示出寄存器重命名、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集,乱序方面将被描述。

在图14a中,处理器流水线1400包括取阶段1402、长度解码阶段1404、解码阶段1406、分配阶段1408、重命名阶段1410、调度(还已知为分派或发布)阶段1412、寄存器读/存储器读阶段1414、执行阶段1416、写回/存储器写阶段1418、异常处置阶段1422、和提交阶段1424。

图14b示出处理器核1490,其包括耦合到执行引擎单元1450的前端单元1430,并且两者被耦合到存储器单元1470。核1490可以是简化指令集计算(risc)核、复杂指令集计算(cisc)核、非常长指令字(vliw)核、或混合或备选核类型。如仍有的另一个选项,核1490可以是专用核,诸如例如网络或通信核、压缩和/或解压缩引擎、协同处理器核、通用计算图形处理单元(gpgpu)核、图形核等等。

前端单元1430包括耦合到指令高速缓冲存储器单元1434的分支预测单元1432,所述指令高速缓冲存储器单元1434被耦合到指令翻译旁视(lookaside)缓冲器(tlb)1436,其被耦合到指令取单元1438,指令取单元438被耦合到解码单元1440。解码单元1440(或解码器)可解码指令,并生成为输出一个或多个微操作、微代码条目点、微指令、其它指令、或其它控制信号,其被解码自、或其以其它方式反映、或被推导自原始指令。使用各种不同机制,解码单元1440可被实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)、等等。在一个实施例中,核1490包括存储用于某些宏指令的微代码的微代码rom或另一介质(例如,在解码单元1440中或以别的方式在前端单元1430内)。解码单元1440被耦合到执行引擎单元450中的重命名/分配器单元1452。

执行引擎单元1450包括耦合到引退单元1454和一个或多个调度器单元1456的集合的重命名/分配器单元1452。一个或多个调度器单元1456代表任何数量的不同调度器,包括保留站、中央指令窗口、等等。一个或多个调度器单元1456被耦合到一个或多个物理寄存器堆单元1458。一个或多个物理寄存器堆单元1458中的每个代表一个或多个物理寄存器堆,其不同物理寄存器堆存储一个或多个不同数据类型,诸如标量整数、标量浮点、打包的整数、打包的浮点、向量整数、向量浮点、状态(例如,是要被执行的下一个指令的地址的指令指针)、等等。在一个实施例中,一个或多个物理寄存器堆单元1458包括向量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可提供架构上的向量寄存器、向量掩码寄存器、和通用寄存器。一个或多个物理寄存器堆单元1458通过引退单元1454来重叠以示出其中寄存器重命名和乱序执行可被实现的各种方式(例如,使用一个或多个重排序缓冲器和一个或多个引退寄存器堆;使用一个或多个未来堆、一个或多个历史缓冲器、和一个或多个引退寄存器堆;使用寄存器映射和寄存器的池;等等)。引退单元1454和一个或多个物理寄存器堆单元1458被耦合到一个或多个执行集群1460。一个或多个执行集群1460包括一个或多个执行单元1462的集合和一个或多个存储器访问单元1464的集合。执行单元1462可执行各种操作(例如,移位、加法、减法、乘法)以及在各种类型的数据(例如,标量浮点、打包的整数、打包的浮点、向量整数、向量浮点)上执行。虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,其它实施例可包括都执行所有功能的多个执行单元或仅一个执行单元。调度器单元1456、一个或多个物理寄存器堆单元1458、和一个或多个执行集群1460被示出为可能是复数的,因为某些实施例对于某些类型的数据/操作来创建单独流水线(例如,标量整数流水线、标量浮点/打包的整数/打包的浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,其各自具有它们自己的调度器单元、一个或多个物理寄存器堆单元、和/或执行集群—并且在单独的存储器访问流水线的情况中,其中此流水线的仅执行集群具有一个或多个存储器访问单元1464的某些实施例被实现)。还应被理解的是,在单独流水线被使用之处,这些流水线的一个或多个流水线可以是乱序发布/执行,并且剩余的是有序。

存储器访问单元1464的集合被耦合到存储器单元1470,存储器单元1470包括耦合到数据高速缓冲存储器单元1474的数据tlb单元1472,数据高速缓冲存储器单元1474耦合到等级2(l2)高速缓冲存储器单元1476。在一个示范性实施例中,存储器访问单元1464可包括加载单元、存储地址单元、和存储数据单元,其的每个被耦合到存储器单元1470中的数据tlb单元1472。指令高速缓冲存储器单元1434被进一步耦合到存储器单元1470中的等级2(l2)高速缓冲存储器单元1476。l2高速缓冲存储器单元1476被耦合到一个或多个其它等级的高速缓冲存储器并最终到主存储器。

通过示例的方式,示范性寄存器重命名、乱序发布/执行核架构可实现如下流水线1400:1)指令取1438执行取及长度解码阶段1402和1404;2)解码单元1440执行解码阶段1406;3)重命名/分配器单元1452执行分配阶段1408和重命名阶段1410;4)一个或多个调度器单元1456执行调度阶段1412;5)一个或多个物理寄存器堆单元1458和存储器单元1470执行寄存器读/存储器读阶段1414;执行集群1460执行执行阶段1416;6)存储器单元1470和一个或多个物理寄存器堆单元1458执行写回/存储器写阶段1418;7)各种单元可在异常处置阶段1422中被涉及;以及8)引退单元1454和一个或多个物理寄存器堆单元1458执行提交阶段1424。

核1490可支持一个或多个指令集(例如,x86指令集(带有已随较新版本被添加的一些扩展);mipstechnologiesofsunnyvale,ca的mips指令集;armholdingsofsunnyvale,ca的arm指令集(带有诸如neon的可选附加扩展)),包括本文中所描述的一个或多个指令。在一个实施例中,核1490包括用于支持打包数据指令集扩展(例如,avx1、avx2)的逻辑,因此允许由许多多媒体应用来使用的操作使用打包的数据来执行。

应被理解的是,核可支持多线程(执行操作或线程的两个或更多并行集合),并可以多种方式来如此做,所述多种方式包括时间分段的多线程、同时多线程(在单个物理核为线程的每个提供逻辑核的情况中,那个物理核正进行同时多线程),或其组合(例如,诸如在intel®超线程技术中的时间分段的取和解码以及其后的同时多线程)。

虽然寄存器重命名在乱序执行的上下文中被描述,但应理解的是,寄存器重命名可被用在有序架构中。虽然处理器的所示出实施例还包括单独的指令和数据高速缓冲存储器单元1434/1474以及共享的l2高速缓冲存储器单元1476,但备选实施例可具有用于指令和数据两者的单个内部高速缓冲存储器,诸如例如,等级1(l1)内部高速缓冲存储器、或多个等级的内部高速缓冲存储器。在一些实施例中,系统可包括内部高速缓冲存储器及外部于核和/或处理器的外部高速缓冲存储器的组合。备选地,所有高速缓冲存储器可外部于核和/或处理器。

图15a-b示出核将是芯片中若干逻辑块之一(潜在地包括相同类型和/或不同类型的其它核)的更特定示范性有序核架构的框图。逻辑块通过高带宽互连网络(例如,环网络)取决于应用而通信于一些固定的功能逻辑、存储器i/o接口、和另一必要i/o逻辑。

图15a是根据各种实施例的单个处理器核连同到管芯上互连网络1502的它的连接并连同等级2(l2)高速缓冲存储器1504的它的本地子集的框图。在一个实施例中,指令解码器1500支持带有打包的数据指令集扩展的x86指令集。l1高速缓冲存储器1506允许低等待时间访问以将存储器高速缓冲存储器到标量和向量单元中。虽然在一个实施例中(为简化设计),标量单元1508和向量单元1510使用单独的寄存器集合(相应地,是标量寄存器1512和向量寄存器1514),并且在它们之间所转移的数据被写到存储器并然后从等级1(l1)高速缓冲存储器1506读回,但备选实施例可使用不同手段(例如,使用单个寄存器集合或包括允许数据在所述两个寄存器堆之间被转移而不被写和读回的通信路径)。

l2高速缓冲存储器1504的本地子集是全局l2高速缓冲存储器的部分,所述全局l2高速缓冲存储器被划分成单独的本地子集(在一些实施例中,每处理器核一个)。每个处理器核具有到l2高速缓冲存储器1504的它自己的本地子集的直接访问路径。由处理器核所读的数据被存储在其l2高速缓冲存储器子集1504中并能被快速地访问,并行于其它处理器核访问它们自己的本地l2高速缓冲存储器子集。由处理器核所写的数据被存储在其自己的l2高速缓冲存储器子集1504中并且如果必要则从其它子集中被冲刷。环网络确保共享的数据的一致性。环网络是双向的以允许诸如处理器核、l2高速缓冲存储器、和其它逻辑块的代理在芯片内互相通信。在具体实施例中,每个环数据-路径每方向是1012-比特宽。

图15b是根据实施例的图15a中的处理器核的部分的扩展的视图。图15b包括l1高速缓冲存储器1504的l1数据高速缓冲存储器1506a部分,以及关于向量单元1510和向量寄存器1514的更多细节。具体地,向量单元1510是16宽向量处理单元(vpu)(见16宽alu1528),其执行整数、单精度浮动、和双精度浮动指令的一个或多个。vpu支持在存储器输入上通过打乱单元1520来打乱寄存器输入、通过数值转换单元1522a-b来进行数值转换、以及通过复制单元1524来进行复制。写掩码寄存器1526允许预测结果向量写。

带有集成存储器控制器和图形的处理器

图16是根据实施例的可具有多于一个核、可具有集成存储器控制器、并可具有集成图形的处理器1600的框图。图16中的实线框示出带有单个核1602a、系统代理1610、一个或多个总线控制器单元1616的集合的处理器1600,而虚线框的可选附加示出带有多个核1602a-n、系统代理单元1610中的一个或多个集成存储器控制器单元1614的集合、和专用逻辑1608的备选处理器1600。

因此,处理器1600的不同实现可包括:1)cpu,带有是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核)的专用逻辑1608、以及是一个或多个通用核(例如,通用有序核、通用乱序核、所述两个核的组合)的核1602a-n;2)带有是打算主要用于图形和/或科学(吞吐量)的大量的专用核的核1602a-n的协同处理器;以及3)带有是大量的通用有序核的核1602a-n的协同处理器。因此,处理器1600可以是通用处理器、协同处理器或专用处理器,诸如例如,网络或通信处理器、压缩和/解压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量许多集成核(mic)协同处理器(例如,包括30或更多核)、嵌入式处理器、或执行逻辑操作的其它固定的或可配置的逻辑。处理器可被实现在一个或多个芯片上。使用多个处理技术的任何个(诸如例如,bicmos、cmos、或nmos),处理器1600可被实现在一个或多个衬底上和/或是其部分。

在各种实施例中,处理器可包括可以是对称或不对称的任何数量的处理元件。在一个实施例中,处理元件指的是支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其它元件,其能够保持处理器的状态,诸如执行状态或架构状态。换句话说,在一个实施例中,处理元件指能的是够独立地与代码(诸如软件线程、操作系统、应用或其它代码)关联的任何硬件。物理处理器(或处理器插槽)通常指的是集成电路,其潜在地包括任何数量的其它处理元件,诸如核或硬件线程。

核可以指的是位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源关联。硬件线程可以指的是位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。如可以看出的,当共享某些资源而其它资源专用于架构状态时,硬件线程和核的命名之间的线重叠。而通常,核和硬件线程被操作系统视为独立的逻辑处理器,其中操作系统能够在每个逻辑处理器上独立地调度操作。

存储器层级包括核内高速缓冲存储器的一个或多个等级、共享的高速缓冲存储器单元1606的集合或一个或多个、和耦合到集成存储器控制器单元1614的集合的外部存储器(未示出)。共享的高速缓冲存储器单元1606的集合可包括一个或多个中等级高速缓冲存储器,诸如等级2(l2)、等级3(l3)、等级4(l4)、或其它等级的高速缓冲存储器、最后等级高速缓冲存储器(llc)、和/或其组合。虽然在一个实施例中,基于环的互连单元1612将专用逻辑(例如,集成图形逻辑)1608、共享的高速缓冲存储器单元1606的集合、以及系统代理单元1610/一个或多个集成存储器控制器单元1614互连,但备选实施例可使用用于互连此类单元的任何数量的公知技术。在一个实施例中,一个或多个高速缓冲存储器单元1606和核1602-a-n之间的一致性被维持。

在一些实施例中,核1602a-n的一个或多个核有多线程的能力。系统代理1610包括协调和操作核1602a-n的那些组件。系统代理单元1610可包括例如功率控制单元(pcu)和显示器单元。pcu可以是或包括为调节专用逻辑1608和核1602a-n的功率状态所需要的逻辑和组件。显示器单元用于驱动一个或多个外部连接的显示器。

核1602a-n可关于架构指令集是同质或异质的;那就是说,核1602a-n的两个或更多核可有执行相同指令集的能力,而其它的核可有执行不同指令集或那个指令集的仅子集的能力。

图17-20是示范性计算机架构的框图。在对于膝上型计算机、桌上型计算机、手持型pc、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置、以及各种其它电子装置的领域中已知的其它系统设计和配置也是适合用于执行此公开中描述的方法。一般来说,能够合并如本文中所公开的处理器和/或其它执行逻辑的极多种的系统或电子装置一般是适合的。

图17描绘根据本公开的一个实施例的系统1700的框图。系统1700可包括被耦合到控制器集线器1720的一个或多个处理器1710、1715。在一个实施例中,控制器集线器1720包括图形存储器控制器集线器(gmch)1790和输入/输出集线器(ioh)1750(其可在单独的芯片或相同的芯片上);gmch1790包括耦合到存储器1740和协同处理器1745的存储器和图形控制器;ioh1750将输入/输出(i/o)装置1760耦合到gmch1790。备选地,存储器和图形控制器之一或两者被集成在处理器(如本文中所描述的)内,存储器1740和协同处理器1745被直接耦合到处理器1710,并且控制器集线器1720是包括ioh1750的单个芯片。

附加处理器1715的可选性质在图17中用断线来指代。每个处理器1710、1715可包括本文中所描述的处理核中的一个或多个,并可以是处理器600的某版本。

存储器1740可以是例如动态随机存取存储器(dram)、相变存储器(pcm)、其它适合的存储器或其任何组合。存储器1740可以存储任何适合的数据,诸如由处理器1710、1715使用的数据,以提供计算机系统1700的功能性。例如,与被执行的程序关联的数据或由处理器1710、1715访问的文件可以存储在存储器1740中。在各种实施例中,存储器1740可以存储由处理器1710、1715使用或执行的数据和/或指令序列。

在至少一个实施例中,控制器集线器720经由诸如前侧总线(fsb)、诸如快速路径互连(qpi)的点对点接口、或类似连接1795与一个或多个处理器1710、1715通信。

在一个实施例中,协同处理器1745是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。在一个实施例中,控制器集线器1720可包括集成图形加速器。

物理资源1710、1715之间关于包括架构上、微架构上、热、功率耗用特性、和诸如此类的指标的规格的谱能存在多种不同。

在一个实施例中,处理器1710执行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协同处理器指令。处理器1710将这些协同处理器指令辨认为是应由附连的协同处理器1745来执行的类型。因此,处理器1710在协同处理器总线或其它互连上将这些协同处理器指令(或代表协同处理器指令的控制信号)发布到协同处理器1745。一个或多个协同处理器1745接受并执行所接收的协同处理器指令。

图18描绘根据本公开的实施例的第一更特定示范性系统1800的框图。如图18中所示出的,多处理器系统1800是点对点互连系统,并包括经由点对点互连1850所耦合的第一处理器1870和第二处理器1880。处理器1870和1880中的每个可以是处理器1600的某版本。在本发明的一个实施例中,处理器1870和1880相应是处理器1710和1715,而协同处理器1838是协同处理器1745。在另一个实施例中,处理器1870和1880相应是处理器1710、协同处理器1745。

处理器1870和1880被示出相应包括集成存储器控制器(imc)单元1872和1882。处理器1870还包括作为它的总线控制器单元的点对点(p-p)接口1876和1878的部分;类似地,第二处理器1880包括p-p接口1886和1888。使用p-p接口电路1878、1888,处理器1870、1880可经由点对点(p-p)接口1850来互换信息。如图18中所示出的,imc1872和1882将处理器耦合到相应存储器(就是存储器1832和存储器1834),其可以是本地附连到相应处理器的主存储器的部分。

使用点对点接口电路1876、1894、1886、1898,处理器1870、1880可各自经由各个p-p接口1852、1854与芯片集1890互换信息。芯片集1890可以可选地经由高性能接口1838与协同处理器1838互换信息。在一个实施例中,协同处理器1838是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。

共享的高速缓冲存储器(未示出)可被包括在任一处理器中或在两个处理器之外,又经由p-p互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓冲存储器信息可被存储在共享的高速缓冲存储器中。

芯片集1890可经由接口1896来耦合到第一总线1816。在一个实施例中,第一总线1816可以是外围组件互连(pci)总线、或诸如pci高速总线或另一个第三代i/o互连总线的总线,尽管本公开的范畴未被如此限制。

如图18中所示出的,各种i/o装置1814可连同总线桥1818被耦合到第一总线1816,总线桥818将第一总线1816耦合到第二总线1820。在一个实施例中,诸如协同处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列、或任何其它处理器的一个或多个附加处理器1815被耦合到第一总线1816。在一个实施例中,第二总线1820可以是低管脚计数(lpc)总线。各种装置可被耦合到第二总线1820,包括例如键盘和/或鼠标1822、通信装置1827和诸如硬盘驱动器或其它大容量存储装置的存储单元1828,其可包括指令/代码和数据1830(在一个实施例中)。进一步地,音频i/o1824可被耦合到第二总线1820。注意,其它架构是由本公开所预期的。例如,替代图18的点对点架构,系统可实现多点总线或另一此类架构。

图19描绘根据本公开的实施例的第二更特定示范性系统1900的框图。图18和19中的相似元件标有相似附图标记,并且图18的某些方面已从图19中被省略以便避免使图19的其它方面难以理解。

图19示出了处理器1870、1880可相应包括集成存储器以及i/o控制逻辑(“cl”)1872和1882。因此,cl1872、1882包括集成存储器控制器单元并包括i/o控制逻辑。图19示出了不仅存储器1832、1834被耦合到cl1872、1882,而且i/o装置1914也被耦合到控制逻辑1872、1882。遗留i/o装置1915被耦合到芯片集1890。

图20描绘根据本公开的实施例的soc2000的框图。图16中的类似元件标有相似附图标记。同样,虚线框在更高级的soc上是可选特征。在图20中,一个或多个互连单元2002被耦合到:应用处理器2010,其包括一个或多个核1602a-n的集合和一个或多个共享的高速缓冲存储器单元1606;系统代理单元1610;一个或多个总线控制器单元1616;一个或多个集成存储器控制器单元1614;协同处理器2020的集合或一个或多个,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(sram)单元2030;直接存储器访问(dma)单元2032;以及用于耦合到一个或多个外部显示器的显示器单元2040。在一个实施例中,协同处理器2020包括专用处理器,诸如例如,网络或通信处理器、压缩和/或解压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等等。

本文中所公开的机制的实施例可被实现在硬件、软件、固件、或此类实现手段的组合中。本发明的实施例可被实现为在可编程系统上执行的程序代码或计算机程序,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、和至少一个输出装置。

诸如图8中所示出的代码830的程序代码可被应用于输入指令以执行本文中所描述的功能并生成输出信息。输出信息可以已知方式被应用于一个或多个输出装置。为了此应用的目的,处理系统包括具有处理器(诸如例如:数字信号处理器(dsp)、微控制器、应用特定集成电路(asic)、或微处理器)的任何系统。

程序代码可被实现在高等级规程上(procedural)或面向对象的编程语言中以与处理系统通信。如果期望的话,则程序代码可还被实现在汇编或机器语言中。事实上,本文中所描述的机制不限于对任何具体编程语言的范畴中。在任何情况中,语言可以是编译或解译的语言。

至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,其当由机器来读时促使该机器制作用于执行本文中所描述的技术的逻辑。此类表示(已知为“ip核”)可被存储在有形的、机器可读介质上并被供应给各种客户或制造设施以加载到实际做出逻辑或处理器的制作机器。

此类机器可读存储介质可包括由机器或装置所制造或形成的物品(article)的非暂态、有形的布置而没有限制,包括存储介质(诸如硬盘、包括软盘、光盘、紧致盘只读存储器(cd-rom)、可重写紧致盘(cd-rw)、和磁光盘的任何其它类型的盘)、半导体装置(诸如只读存储器(rom),诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)的随机存取存储器(ram),可擦除可编程只读存储器(eprom)、闪速存储器、电可擦除可编程只读存储器(eeprom)、相变存储器(pcm)、磁或光卡、或适合于存储电子指令的任何其它类型的介质)。

因此,本发明的实施例还包括非暂态、有形的机器可读介质,所述介质含有指令或含有设计数据,诸如硬件描述语言(hdl),其定义本文中所描述的结构、电路、设备、处理器和/或系统特征。此类实施例可还被称为程序产品。

仿真(包括二进制翻译,代码变形等)

在一些情况中,指令转换器可被用于将指令从源指令集转换成目标指令集。例如,指令转换器可翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真、或以其它方式将指令转换成要由核来处理的一个或多个其它指令。指令转换器被实现在软件、硬件、固件、或其组合中。指令转换器可在处理器上、离开处理器、或部分在处理器上而部单独开处理器。

图11是框图,其对照根据本发明的实施例的使用软件指令转换器以将源指令集中的二进制指令转换成目标指令集中的二进制指令。在所示出的实施例中,指令转换器是软件指令转换器,尽管备选地指令转换器可被实现在软件、固件、硬件、或其各种组合中。图11示出使用第一编译器1104,用高等级语言1102的程序可被编译以生成第一二进制代码(例如x86)1106,其可由带有至少一个第一指令集核的处理器1116来原生执行。在一些实施例中,带有至少一个第一指令集核的处理器1116表示能如带有至少一个x86指令集核的intel处理器一样大体上执行相同功能的任何处理器,这通过兼容地执行或以其它方式处理(1)intelx86指令集核的指令集的实质部分,或(2)针对于在带有至少一个x86指令集核的intel处理器上运行的应用或另一软件的对象(object)代码版本,以便取得大体上与带有至少一个x86指令集核的intel处理器相同的结果。第一编译器1104表示可操作以生成第一指令集的二进制代码1106(例如,对象代码)的编译器,第一指令集的二进制代码1106能通过或不通过附加联接处理而在带有至少一个第一指令集核的处理器1116上被执行。类似地,图11示出了使用备选指令集编译器1108,用高等级语言1102的程序可被编译以生成备选指令集二进制代码1110,其可由不带有至少一个第一指令集核的处理器1114(例如,带有执行mipstechnologiesofsunnyvale,ca的mips指令集和/或执行armholdingsofsunnyvale,ca的arm指令集的核的处理器)来原生执行。指令转换器1112被用于将第一二进制代码1106转换成可由不带有第一指令集核的处理器1114来原生执行的代码。此被转换的代码不可能与备选指令集二进制代码1110相同,因为能够这样做的指令转换器难以做出;然而,被转换的代码将完成一般操作并由来自备选指令集的指令构成。因此,指令转换器1112表示软件、固件、硬件、或其组合,其通过仿真、模拟或任何其它过程而允许不具有第一指令集处理器或核的处理器或另一电子装置执行第一二进制代码1106。

设计可经过从创建到仿真到制造的各种阶段。表示设计的数据可用许多方式表示所述设计。首先,如在仿真中有用的,硬件可使用硬件描述语言(hdl)或另一功能描述语言来表示。此外,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅的电路级模型。此外,大多数设计在某一阶段达到表示硬件模型中的各种装置的物理放置的数据级。在其中使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模(mask)的不同掩模层上存在或缺乏各种特征的数据。在一些实现中,此类数据可以以诸如图形数据系统ii(gdsii)、开放艺术品系统交换标准(oasis)或类似格式的数据库文件格式存储。

在一些实现中,基于软件的硬件模型,以及hdl和其它功能描述语言对象可以包括寄存器传输语言(rtl)文件(除了其它示例以外)。此类对象可以是机器可解析的,使得设计工具可以接受hdl对象(或模型),解析hdl对象以获得所描述的硬件的属性,并从对象确定物理电路和/或片上布局。设计工具的输出可用于制造物理装置。例如,除了会被实现以便实现在hdl对象中建模的系统的其它属性之外,设计工具还可以确定来自hdl对象的各种硬件和/或固件元件的配置,诸如总线宽度、寄存器(包括大小和类型)、存储器块、物理链路路径、组构拓扑。设计工具可以包括用于确定片上系统(soc)和其它硬件装置的拓扑和组构配置的工具。在一些情况下,hdl对象可以用作对于可以由制造设备用于制造所描述的硬件的开发模型和设计文件的基础。实际上,hdl对象本身可以提供为对制造系统软件的输入,以引起所述硬件的制造。

在设计的任何表示中,表示设计的数据可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成的光波或电波传送的信息以传送此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,进行新的复制。因此,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本公开的实施例的技术的物品,诸如编码到载波中的信息。

在各种实施例中,可以将存储设计的表示的介质提供到制造系统(例如,能够制造集成电路和/或相关组件的半导体制造系统)。设计表示可以指令该系统制造能够执行上面描述的功能的任何组合的装置。例如,设计表示可以指令系统关于制造哪些组件,组件应当如何耦合在一起,组件应当放置在装置上的地方,和/或关于其它适合的规范(关于要制造的装置)。

因此,至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的表示性指令来实现,所述表示性指令表示处理器内的各种逻辑,所述逻辑当由机器读时使机器制造用于执行本文描述的技术的逻辑。此类表示(通常称为“ip核”),可以存储在非暂态有形机器可读介质上,并供应到各种客户或制造设施,以加载到制造逻辑或处理器的制造机器中。

本文所公开的机制的实施例可以用硬件、软件、固件或此类实现方法的组合来实现。本公开的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置、以及至少一个输出装置。

程序代码(例如图18中所示的代码1830)可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出装置。出于本申请的目的,处理系统包括具有处理器(诸如例如,数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器)的任何系统。

程序代码可以用高级面向过程或面向对象的编程语言来实现,以与处理系统通信。如果期望,程序代码也可以用汇编语言或机器语言实现。实际上,本文描述的机制在范围上不限于任何具体编程语言。在各种实施例中,语言可以是编译或解释语言。

上面阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的由处理元件可执行(或以其它方式可访问)的代码或指令来实现。非暂态机器可访问/可读介质包括提供(即,存储和/或传送)以由机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂态机器可访问介质包括诸如静态ram(sram)或动态ram(dram)的随机存取存储器(ram);rom;磁或光存储介质;闪速存储器装置;电存储装置;光存储装置;声存储装置;用于保持从暂态(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等,其要与可以从中接收信息的非暂态介质区分。

用于对逻辑编程以执行本公开的实施例的指令可存储在系统中的存储器内,诸如dram、高速缓存、闪速存储器或其它存储装置内。此外,指令可经由网络或通过其它计算机可读媒体分发。从而,机器可读介质可包括用于以由机器(例如计算机)可读形式存储或传送信息的任何机制,但不限于软盘、光盘、致密盘、只读存储器(cd-rom)、和磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器、或在因特网上经由电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的信息的传送中使用的有形机器可读存储装置。相应地,计算机可读介质包括适合用于存储或传送以由机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。

逻辑可用于实现各种组件的任何功能性,例如网络元件102、路由器104、核108、图7的逻辑、神经元核控制器1100、神经形态核1200,本文所描述的任何处理器,本文描述的其它组件,或这些组件中的任何组件的任何子组件。“逻辑”可以指的是硬件、固件、软件和/或每个的组合以执行一个或多个功能。作为示例,逻辑可以包括与非暂态介质关联的硬件(诸如微控制器或处理器),以存储适于由微控制器或处理器执行的代码。因此,在一个实施例中,对逻辑的参考指的是硬件,其具体配置成识别和/或执行要保持在非暂态介质上的代码。此外,在另一实施例中,逻辑的使用指的是包括代码的非暂态介质,其特别适于由微控制器执行以执行预定操作。并且如可以推断的,在又另一实施例中,术语逻辑(在此示例中)可以指的是硬件和非暂态介质的组合。在各种实施例中,逻辑可包括可操作以执行软件指令的微处理器或其它处理元件、诸如专用集成电路(asic)的分立逻辑、诸如现场可编程门阵列(fpga)的编程逻辑装置、包含指令的存储器装置、逻辑装置的组合(例如,如会在印刷电路板上找到的),或其它适合的硬件和/或软件。逻辑可以包括一个或多个门或其它电路组件,其可以由例如晶体管实现。在一些实施例中,逻辑也可以完全实施为软件。软件可以实施为记录在非暂态计算机可读存储介质上的软件封装、代码、指令、指令集和/或数据。固件可以实施为在存储器装置中硬编码(例如,非易失性)的代码、指令或指令集和/或数据。通常,被示出为单独的逻辑边界通常变化并且潜在地重叠。例如,第一和第二逻辑可以共享硬件、软件、固件或其组合,同时潜在地保留一些独立的硬件、软件或固件。

在一个实施例中,短语“以”或“配置成”的使用指的是布置、放在一起、制造、提供出售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在此示例中,不操作的设备或其元件仍然‘配置成’执行指定的任务(如果其被设计、耦合和/或互连来执行所述指定的任务)。作为纯粹的说明性示例,逻辑门可以在操作期间提供0或1。但是‘配置成’向时钟提供使能信号的逻辑门不包括可能提供1或0的每一个潜在的逻辑门。相反,逻辑门是以某一方式耦合的逻辑门(在操作期间1或0输出要使能时钟)。再次注意到,术语“配置成”的使用不要求操作,而是相反聚焦于设备、硬件和/或元件的隐性状态,其中在隐性状态中,当设备、硬件和/或元件正在操作时,设备、硬件和/或元件被设计成执行具体任务。

此外,在一个实施例中,短语“能够/以”和或“可操作以”的使用指以此类方式设计以使能以指定的方式的设备、逻辑、硬件和/或元件的使用的某一设备、逻辑、硬件和/或元件。如上面注意到,在一个实施例中,以、能够以或可操作以的使用指的是设备、逻辑、硬件和/或元件的隐性状态,其中设备、逻辑、硬件和/或元件未操作但是以此类方式设计以使能以指定的方式的设备的使用。

如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值(logicvalueorlogicalvalue)的使用也被称为1和0,其仅仅表示二进制逻辑状态。例如,1指的是高逻辑电平,以及0指的是低逻辑电平。在一个实施例中,诸如晶体管或闪存单元的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中的值的其它表示已使用。例如,十进制数10也可以表示为二进制值1010和十六进制字母a。因此,值包括能够保持在计算机系统中的信息的任何表示。

此外,状态可以通过值或值的部分来表示。作为示例,诸如逻辑1的第一值可以表示默认或初始状态,而诸如逻辑0的第二值可以表示非默认状态。此外,在一个实施例中,术语重置和设置分别指的是默认值和更新值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新值潜在地包括低逻辑值,即设置。注意到,值的任何组合可以被利用来表示任何数量的状态。

在至少一个实施例中,一种处理器包括:第一神经形态核,用于实现神经网络的多个神经单元,所述第一神经形态核包括:存储器,用于存储所述第一神经形态核的当前时间步长;以及控制器,用于:跟踪相邻神经形态核的当前时间步长,所述神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

在实施例中,所述第一神经形态核要处理从第二神经形态核接收的脉冲,其中当由所述第一神经形态核处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。在实施例中,在其中所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间,所述第一神经形态核要从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中并且第二输出脉冲发生在不同于所述第二时间步长的时间步长中。在实施例中,在其中所述第一神经形态核的所述当前时间步长是所述第一时间步长的时间段期间,所述第一神经形态核要:通过访问与第一输出脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及通过访问与所述第二输出脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。在实施例中,如果要发送脉冲到所述第一神经形态核的第二神经形态核设置成比所述第一神经形态核的所述当前时间步长早的时间步长,则所述控制器要防止所述第一神经形态核前进到下一时间步长。在实施例中,如果要从所述第一神经形态核接收脉冲的第二神经形态核被设置成比所述第一神经形态核的所述当前时间步长早多于阈值数量的时间步长,则所述控制器防止所述第一神经形态核前进到下一时间步长。在实施例中,当所述第一神经形态核的第一的所述当前时间步长递增时,所述第一神经形态核的所述控制器要向所述相邻神经形态核发送消息,所述消息指示所述第一神经形态核的所述当前时间步长已递增。在实施例中,当所述第一神经形态核的第一的所述当前时间步长改变一个或多个时间步长时,所述第一神经形态核的所述控制器要发送包括所述第一神经形态核的所述当前时间步长的至少一部分的消息到所述相邻神经形态核。在实施例中,所述第一神经形态核包括脉冲缓冲器,所述脉冲缓冲器包括用于存储第一时间步长的脉冲的第一条目和用于存储第二时间步长的脉冲的第二条目,其中所述第一时间步长的脉冲和所述第二时间步长的脉冲要并发地被存储在缓冲器中。在实施例中,所述第一神经形态核包括缓冲器,所述缓冲器包括用于存储对于第一时间步长的所述多个神经单元的膜电位增量值的第一条目和用于存储对于第二时间步长的所述多个神经单元的膜电位增量值的第二条目。在实施例中,所述控制器要基于允许的前瞻状态的数量来控制所述第一神经形态核的所述当前时间步长,其中允许的前瞻状态的所述数量由用于存储所述允许的前瞻状态的脉冲的可用存储器的量确定。在实施例中,处理器还包括通信地耦合到所述处理器的电池,通信地耦合到所述处理器的显示器,或通信地耦合到所述处理器的网络接口。

在至少一个实施例中,一种方法包括:在第一神经形态核中实现神经网络的多个神经单元;存储所述第一神经形态核的当前时间步长;跟踪相邻神经形态核的当前时间步长,所述神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

在实施例中,方法还包括在所述第一神经形态核处理从第二神经形态核接收的脉冲,其中当处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。在实施例中,方法还包括在其中所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间在所述第一神经形态核从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中,并且所述第二输出脉冲发生在不同于所述第二时间步长的时间步长中。在实施例中,方法还包括,在将所述第一神经形态核设置成所述第一时间步长的时间段期间:通过访问与所述第一脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及通过访问与所述第二脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。在实施例中,方法还包括:如果要发送脉冲到所述第一神经形态核的第二神经形态核设置成比所述第一神经形态核的所述当前时间步长早的时间步长,则防止所述第一神经形态核前进到下一时间步长。在实施例中,方法还包括:如果要从所述第一神经形态核接收脉冲的第二神经形态核设置成比所述第一神经形态核的所述当前时间步长早超过阈值数量的时间步长的时间步长,则防止所述第一神经形态核前进到下一时间步长。在实施例中,方法还包括:当所述第一神经形态的第一的所述当前时间步长递增时,向所述相邻神经形态核发送消息,所述消息指示所述第一神经形态核的所述当前时间步长已递增。在实施例中,方法还包括:当所述第一神经形态核的第一的所述当前时间步长改变一个或多个时间步长时,发送包括所述第一神经形态核的所述当前时间步长的至少一部分的消息到所述相邻神经形态核。在实施例中,所述第一神经形态核包括脉冲缓冲器,所述脉冲缓冲器包括用于存储第一时间步长的脉冲的第一条目和用于存储第二时间步长的脉冲的第二条目,其中所述第一时间步长的脉冲和所述第二时间步长的脉冲要并发地被存储在缓冲器中。在实施例中,所述第一神经形态核包括缓冲器,所述缓冲器包括用于对于第一时间步长存储所述多个神经单元的膜电位增量值的第一条目,以及对于第二条目存储所述多个神经单元的膜电位增量值的第二条目。在实施例中,方法还包括基于允许的前瞻状态的数量来控制所述第一神经形态核的所述当前时间步长,其中所允许的前瞻状态的所述数量由用于存储所述允许的前瞻状态的脉冲的可用存储器的量确定。

在至少一个实施例中,一种非暂态机器可读存储介质具有存储在其上的指令,所述指令当由机器执行时使所述机器:在第一神经形态核中实现神经网络的多个神经单元;存储所述第一神经形态核的当前时间步长;跟踪相邻神经形态核的当前时间步长,所述神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

在实施例中,所述指令当由机器执行时使所述机器:在所述第一神经形态核处理从第二神经形态核接收的脉冲,其中当处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。在实施例中,所述指令当由机器执行时使所述机器:在其中所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间在所述第一神经形态核从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中,并且所述第二输出脉冲发生在不同于所述第二时间步长的时间步长中。在实施例中,所述指令当由机器执行时使所述机器:在其中所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间,通过访问与所述第一脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及通过访问与所述第二脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。

在至少一个实施例中,一种系统包括:用于在第一神经形态核中实现神经网络的多个神经单元的部件;用于存储所述第一神经形态核的当前时间步长的部件;用于跟踪相邻神经形态核的当前时间步长的部件,所述神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及用于基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长的部件。

在实施例中,系统还包括,用于在所述第一神经形态核处理从第二神经形态核接收的脉冲的部件,其中当处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。在实施例中,系统还包括,用于在其中所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间在所述第一神经形态核从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲的部件,其中所述第一脉冲发生在第二时间步长中,并且所述第二输出脉冲发生在不同于所述第二时间步长的时间步长中。在实施例中,系统还包括用于在将所述第一神经形态核设置成所述第一时间步长的时间段期间执行以下动作的部件:通过访问与所述第一脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及通过访问与所述第二脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。

在至少一个实施例中,系统包括处理器,所述处理器包括:第一神经形态核,用于实现神经网络的多个神经单元;所述第一神经形态核包括存储器,用于存储所述第一神经形态核的当前时间步长;以及控制器,用于跟踪相邻神经形态核的当前时间步长,所述神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长;所述系统还包括耦合到所述处理器的存储器,用于存储由所述神经网络生成的结果。

在实施例中,所述系统还包括网络接口,用于传送由所述神经网络生成的所述结果。在实施例中,所述系统还包括显示器,用于显示由所述神经网络生成的所述结果。在实施例中,所述系统还包括蜂窝通信接口。

本文还提供如下技术方案:

1.一种处理器,包括:

第一神经形态核,所述第一神经形态核用于实现神经网络的多个神经单元,所述第一神经形态核包括:

存储器,所述存储器用于存储所述第一神经形态核的当前时间步长;以及

控制器,所述控制器用于:

跟踪相邻神经形态核的当前时间步长,所述相邻神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及

基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

2.如技术方案1所述的处理器,其中所述第一神经形态核要处理从第二神经形态核接收的脉冲,其中当由所述第一神经形态核处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。

3.如技术方案1所述的处理器,其中在所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间,所述第一神经形态核要从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中并且第二输出脉冲发生在不同于所述第二时间步长的时间步长中。

4.如技术方案3所述的处理器,其中在所述第一神经形态核的所述当前时间步长是所述第一时间步长的时间段期间,所述第一神经形态核要:

通过访问与第一输出脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及

通过访问与所述第二输出脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。

5.如技术方案1所述的处理器,其中如果要发送脉冲到所述第一神经形态核的第二神经形态核设置成比所述第一神经形态核的所述当前时间步长早的时间步长,则所述控制器要防止所述第一神经形态核前进到下一时间步长。

6.如技术方案1所述的处理器,其中如果要从所述第一神经形态核接收脉冲的第二神经形态核被设置成比所述第一神经形态核的所述当前时间步长早多于阈值数量的时间步长,则所述控制器防止所述第一神经形态核前进到下一时间步长。

7.如技术方案1所述的处理器,其中当所述第一神经形态核的第一的所述当前时间步长递增时,所述第一神经形态核的所述控制器要向所述相邻神经形态核发送消息,所述消息指示所述第一神经形态核的所述当前时间步长已递增。

8.如技术方案1所述的处理器,其中当所述第一神经形态核的第一的所述当前时间步长改变一个或多个时间步长时,所述第一神经形态核的所述控制器要发送包括所述第一神经形态核的所述当前时间步长的至少一部分的消息到所述相邻神经形态核。

9.如技术方案1所述的处理器,其中所述第一神经形态核包括脉冲缓冲器,所述脉冲缓冲器包括用于存储第一时间步长的脉冲的第一条目和用于存储第二时间步长的脉冲的第二条目,其中所述第一时间步长的脉冲和所述第二时间步长的脉冲要并发地被存储在缓冲器中。

10.如技术方案1所述的处理器,其中所述第一神经形态核包括缓冲器,所述缓冲器包括用于存储对于第一时间步长的所述多个神经单元的膜电位增量值的第一条目和用于存储对于第二时间步长的所述多个神经单元的膜电位增量值的第二条目。

11.如技术方案1所述的处理器,其中所述控制器要基于允许的前瞻状态的数量来控制所述第一神经形态核的所述当前时间步长,其中允许的前瞻状态的所述数量由用于存储所述允许的前瞻状态的脉冲的可用存储器的量来确定。

12.如技术方案1所述的处理器,还包括通信地耦合到所述处理器的电池、通信地耦合到所述处理器的显示器、或通信地耦合到所述处理器的网络接口。

13.一种非暂态机器可读存储介质,具有存储在其上的指令,所述指令在由机器执行时使所述机器:

在第一神经形态核中实现神经网络的多个神经单元;

存储所述第一神经形态核的当前时间步长;

跟踪相邻神经形态核的当前时间步长,所述相邻神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及

基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

14.如技术方案13所述的介质,所述指令在由所述机器执行时使所述机器在所述第一神经形态核处理从第二神经形态核接收的脉冲,其中当处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。

15.如技术方案13所述的介质,所述指令在由所述机器执行时使所述机器在所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间在所述第一神经形态核从第二神经形态核接收第一脉冲并且从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中,并且所述第二输出脉冲发生在不同于所述第二时间步长的时间步长中。

16.如技术方案15所述的介质,所述指令在由所述机器执行时使所述机器在所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间:

通过访问与所述第一脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及

通过访问与所述第二脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。

17.一种方法,包括:

在第一神经形态核中实现神经网络的多个神经单元;

存储所述第一神经形态核的当前时间步长;

跟踪相邻神经形态核的当前时间步长,所述相邻神经形态核从所述第一神经形态核接收脉冲或提供脉冲到所述第一神经形态核;以及

基于所述相邻神经形态核的所述当前时间步长控制所述第一神经形态核的所述当前时间步长。

18.如技术方案16所述的方法,还包括在所述第一神经形态核处理从第二神经形态核接收的脉冲,其中当处理所述脉冲时所述脉冲发生在比所述第一神经形态核的所述当前时间步长晚的第一时间步长中。

19.如技术方案16所述的方法,还包括在所述第一神经形态核的所述当前时间步长是第一时间步长的时间段期间在所述第一神经形态核从第二神经形态核接收第一脉冲以及从第三神经形态核接收第二脉冲,其中所述第一脉冲发生在第二时间步长中,并且所述第二输出脉冲发生在不同于所述第二时间步长的时间步长中。

20.如技术方案19所述的方法,还包括,在将所述第一神经形态核设置成所述第一时间步长的时间段期间:

通过访问与所述第一脉冲关联的第一突触权重并调整第一膜电位增量来处理所述第一脉冲;以及

通过访问与所述第二脉冲关联的第二突触权重并调整第二膜电位增量来处理所述第二脉冲。

遍及本说明书对“一个实施例”或“实施例”的参考意味着联系所述实施例描述的具体特征、结构或特性被包括在本公开的至少一个实施例中。因此,遍及本说明书在各种位置出现的短语“在一个实施例中”或“在实施例中”不一定都指相同的实施例。此外,具体特征、结构或特性可以在一个或多个实施例中以任何适合的方式组合。

在前述说明书中,已参考特定的示范实现给出了详细的描述。然而,将显而易见的是,可以对其进行各种修改和改变而不脱离如所附权利要求书中所阐述的本公开的更宽泛的精神和范围。相应地,说明书和附图以说明性意义的而不是限定性意义被看待。此外,实施例和其它示范语言的前述使用不一定指的是相同的实施例或相同的示例,而可以指的是不同的和相异的实施例以及潜在地相同实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1