可变历元尖峰序列滤波的制作方法

文档序号:16857135发布日期:2019-02-12 23:27阅读:352来源:国知局
可变历元尖峰序列滤波的制作方法

本公开一般地涉及数字信号处理,并且更特别地涉及尖峰神经网络中的尖峰序列滤波,其中尖峰序列滤波对大范围的学习历元(epoch)持续时间是容忍的。一些示例适用于使用数字神经形态核心的神经形态计算。



背景技术:

神经形态处理器是被构造成模仿大脑及其底层架构(特别是其神经元和在神经元之间的互连)的某些方面的处理器,尽管这样的处理器可能与其生物对应物有偏差。神经形态处理器可以由经由诸如总线或路由设备之类的网络架构互连的许多神经形态(神经网络)核心组成,所述网络架构可以引导核心之间的通信。核心的网络可以经由从核心发送到核心的短分组化尖峰消息通信。每个核心可以实现一定数量的原始非线性时间计算单元(例如神经元)。当神经元的激活超过某阈值水平时其可以生成尖峰消息,所述尖峰消息被传播到包含在目的地核心中的扇出(fan-out)神经元的集合。网络然后可以将尖峰消息分发到目的地神经元,并且那些神经元继而以瞬时的、时间相关的方式更新它们的激活。

可以针对每个神经元维护表示神经元的激活水平的一个或多个状态变量。在典型的操作中,响应于在输入或输出处的尖峰的出现,状态变量经历阶跃改变,其以指数方式作为时间的函数衰减。历史上,已经使用模拟架构对神经元建模,这非常适合于对指数衰减的状态变量建模。在数字神经形态架构中,指数衰减函数的建模提出了多个计算挑战。

附图说明

在不一定按比例绘制的附图中,相同的标号可以描述在不同视图中的类似部件。具有不同字母后缀的相同的标号可以表示类似部件的不同实例。附图通常通过示例的方式而不是通过限制的方式图示了在本文档中讨论的各种实施例。

图1是根据实施例的模型神经核心结构的高级图。

图2a是图示根据实施例的多室神经元的配置和树突累积(dendriticaccumulation)过程的图解图。

图2b是示出根据实施例的多个室的状态结构的图解图。

图3a是图示根据实施例的根据简单神经元模型的树突室的状态动态的框图。

图3b是图示根据实施例的根据多室神经元模型的树突室的状态动态和树突累积过程的框图。

图4是图示根据实施例的根据示例使用案例的作为时间的函数的踪迹变量的简化时序图。

图5是图示根据实施例的用于可变历元尖峰序列滤波的部件交互的框图。

图6图示了根据实施例的用于可变历元尖峰序列滤波的方法的示例的流程图。

图7是图示可以在其上实现一个或多个实施例的机器的示例的框图。

图8是根据本发明的一个实施例的寄存器架构的框图。

图9是图示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图。

图10是图示根据本发明的实施例的要被包括在处理器中的有序架构核心的示例性实施例以及示例性寄存器重命名、乱序发布/执行架构核心两者的框图。

图11a-b图示了更具体的示例性有序核心架构的框图,其中核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)中的一个。

图12是根据本发明的实施例的处理器的框图,所述处理器可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形。

图13-16是示例性计算机架构的框图。

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

具体实施方式

许多生物学上启发的神经网络学习算法利用经过滤波的尖峰序列或“尖峰踪迹”作为描述随时间的网络参数中的改变的等式中的动态变量。这些踪迹变量通常跨滤波时间常数的范围。具有小的时间常数的踪迹测量在邻近的尖峰事件之间的精确时间偏移,而具有大的时间常数的踪迹测量长期平均尖峰活动速率。通常,已经经由应用在尖峰事件之间的指数衰减来处置尖峰踪迹。例如,当接收到第一尖峰时,与最后的尖峰的时间偏移或其他时间参考被记录在临时存储设备中。当接收到随后的尖峰时,偏移被用来衰减第一尖峰以产生踪迹。尖峰踪迹然后被用作第二尖峰的衰减被添加到其的基线。为了限制临时存储设备的提供,通常支持某最大偏移时间,并且这定义了学习历元。将至少基于尖峰到达时间偏移在每个学习历元事件上更新踪迹值,并且将在每个学习历元上评估网络的学习规则。以该方式,可以支持短的或长的学习历元持续时间。然而,对于低比特精度踪迹,归因于组合若干个尖峰事件时的舍入误差,该技术仅支持具有可接受的功率或性能效率和准确性的小的时间常数踪迹。

为了解决该问题,可以通过调节尖峰间的值和修改指数衰减函数来扩展纯粹基于尖峰的学习架构,以不同地解决单尖峰事件和多尖峰事件。例如,在多个尖峰情形中,临时尖峰存储设备可以记录尖峰的计数而不是自从事件以来的时间偏移。当跨这些若干个尖峰执行单个指数衰减操作时,该计数可以被用来重建或建模尖峰到达。在这样做时,诸如舍入误差之类的误差被减小并且更少计算被执行,导致更高的准确性和效率。然而,对于相关历元期间的单个尖峰,存储定时偏移并且将该定时偏移用于指数衰减在没有附加计算的情况下提供了高准确性。因此,这些增强以与基线实现相比的边际额外实现成本大大地改进了大时间常数踪迹(也被称作基于速率的踪迹)的效率和准确性。

图1-4图示了神经形态硬件(诸如神经核心的示例)以及其操作——例如以基线模式,其中每个尖峰被指数衰减以更新尖峰踪迹。图5和6图示了对这些基线示例的修改,由此对尖峰计数并且然后在指数衰减操作中使用该计数以更新尖峰踪迹。

图1是根据实施例的模型神经核心结构的高级图。神经核心145可以在具有若干个其他神经核心的管芯上以形成神经芯片150。还可以将若干个神经芯片封装并且联网在一起以形成神经形态硬件155,所述神经形态硬件155可以被包括在任何数量的设备中,所述设备诸如服务器、移动设备、传感器、致动器等。图示的神经核心结构在功能上对生物神经元的行为建模。在对突触(例如由突触变量存储器105建模)的输入处提供信号(例如进入尖峰),所述突触可以在核心内包括去往具有适当的权重和延迟偏移的其他树突结构的扇出。信号可以由突触变量存储器105修改(例如突触权重可以被应用于寻址相应的突触的尖峰),并且可以被使得对神经元模型110可用。神经元模型110可以包括用于对树突活动和胞体(soma)活动建模的多个部件。在示例中,结构可以包括树突累加器和胞体状态存储。神经元模型110被配置成基于加权尖峰状态产生输出尖峰(例如经由轴突去往一个或若干个目的地核心的外出尖峰)。

在示例中,神经形态计算系统可以采用尖峰定时相关可塑性(stdp)学习。此处,神经网络核心的网络经由从核心发送到核心的短分组化尖峰消息通信。每个核心实现一定数量的神经元,所述神经元作为原始非线性时间计算单元操作。当神经元的激活超过某阈值水平时其生成尖峰消息,所述尖峰消息被传播到包含在目的地核心中的扇出神经元的集合。在管理其激活水平时,神经元可以维护响应于尖峰而递增的踪迹变量(例如作为脉冲响应)。在踪迹变量上的操作可以对多个时间相关特征建模。例如跟随尖峰,踪迹变量可以以指数方式衰减。被建模为指数函数的该指数衰减可以持续达多个时间步长,在这期间附加的尖峰可能或者可能不到达。以下讨论踪迹变量的其他示例使用(例如尖峰踪迹存储设备)。

为了促进尖峰踪迹管理,存储设备115可以记录临时进入尖峰信息,并且存储设备120记录临时外出尖峰信息。此外,持久踪迹变量存储设备140随时间维护踪迹信息。存储设备115、120和140由踪迹计算电路系统130和135(例如踪迹衰减建模器)使用来提供更新的进入和外出踪迹用于供学习引擎125使用。在学习历元事件处(诸如历元的末尾),学习引擎140使用进入踪迹x、外出踪迹y和当前突触权重w(旧)以产生突触权重w(新)的新的集合。新的突触权重然后被安装在突触变量存储器105中以修改(例如加权)未来的进入尖峰,因此修改进入尖峰的特定组合导致外出尖峰的可能性。因此,踪迹计算电路系统130和135的架构角色是响应于作为对核心的输入接收到的尖峰事件(进入尖峰)或者由核心内部的神经元单元110产生的尖峰事件(外出尖峰)而分别维护踪迹变量状态x和y。每个尖峰事件可以生成随着被定义为学习历元的周期性时间的间隔的持续时间累积的踪迹计算的临时状态。在每个学习历元的末尾处,学习引擎部分地作为计算的x和y踪迹值的函数而修改突触变量状态(w)。

网络将尖峰消息分发到目的地神经元,并且响应于接收到尖峰消息,那些神经元以瞬时的、时间相关的方式更新它们的激活,这类似于生物神经元的操作。

一些适用的学习算法的基本实现可以通过尖峰定时相关可塑性来提供,所述尖峰定时相关可塑性基于将输入(例如进入)尖峰与输出(例如外出)尖峰之间的定时相关来调节神经网络中的神经元之间的连接(例如突触)的强度。对于神经元紧接着输出尖峰的输入尖峰被视为对于输出具有因果关系并且它们的权重被加强,而其他输入尖峰的权重被削弱。这些技术使用尖峰时间或者建模尖峰时间以允许根据多个机器学习模式(诸如以无监督学习模式或以强化学习模式)修改建模的神经网络的操作。

核心还可以支持后向传播处理。在生物学中,当胞体形成尖峰时(例如外出尖峰),除了该尖峰向下游传播到其他神经元之外,尖峰还通过树突树向下后向传播,这对于学习是有益的。突触处的突触可塑性是突触后神经元何时激发(fire)以及突触前神经元何时正在激发的函数——突触知道神经元何时被激发。在多室架构中,一旦胞体激发,就有其他单元知道神经元激发以便支持学习,例如因此所有的输入扇入(fan-in)突触都可以看到神经元激发。学习引擎125可以实现尖峰定时相关可塑性(stdp)并且接收该后向动作电位(bap)通知(例如经由踪迹计算电路系统135),并且因此与突触105通信。

图2a是图示根据实施例的多室神经元的配置和树突累积过程的图解图。图2a的图图示了用于在神经核心内部处置和调度进入未来的尖峰的树突(例如建模神经元内的突触后)累积处理。突触输入210被提供到树突累加器结构220,所述树突累加器结构220可以被配置成专用数据存储或者在通用数据存储中分配的数据结构,以维护用于特定室230的权重值的突触刺激计数器。在本上下文中,室230是包含表示神经元的动态状态的状态和配置变量240的抽象神经单元。室230是可以与相关的室依序处理的树突树的部件。当室被处理时针对室保留一些状态信息并且传递所述状态信息提供了可以在核心中发生的广泛类别的信息处理。

树突累加器结构220可以维护用于特定室230的权重值的突触刺激计数器,其中室是神经树结构的分解或者简单地是抽象神经单元。每个室230可以具有表示神经元的动态状态的状态变量(u,v)。

用更新逻辑250的顺序过程可以遍历所有的这些室230,从室230中的每个室接收累积的突触刺激和状态变量245,并且提供尖峰输出255。由于这是顺序过程,因此更新逻辑250可以通过利用逻辑中的临时寄存器存储设备来保留与每个室相关联的瞬时状态信息。通过根据树的数据流程传播该信息,过程可以仿真生物树突树的信息处理。

图2b是示出了根据实施例的多个室的状态结构的图解图。图2b图示了通过室索引230的顺序迭代通常如何类似于树。可以是核心的sram中的存储器地址的该状态结构的行230中的每个,表示经由突触连接260接收突触输入210的室230。核心遍历(walkthrough)这些,其中数字和状态变量245从室230中的每个被传播,直到将是胞体(在生物学术语(nomenclature)中)的一个最终路线室230a,所述室230a提供尖峰输出255。图2b中的所有的其他室230以类似的方式操作,并且由此变换和传播临时树突状态。任何树突索引可以被配置成树突树或胞体中的室。树结构中的每个室可以根据实值信号处理模型变换和传播(u,v)状态变量,如以下描述的那样。

图3a是图示了根据实施例的根据简单神经元模型的树突室的状态动态的框图。根据简单神经元模型的树突室300a(以下对术语“树突”的使用要被解释成与短语“树突室”同义并且作为短语“树突室”的缩写)的动态,所述树突室300a基本上是离散时间滤波电路。可以执行基于存储的第一状态变量(在该例中,电流u)和接收到的尖峰输入210的第一状态变量操作310。然后可以随后执行基于存储的第二状态变量(在该例中,电压v)和第一变量操作310的输出的第二状态变量操作320。可以利用阈值函数345来确定树突室300a是否应当形成尖峰,或者即使其实际上未形成尖峰也至少指示尖峰值。

图3b是图示根据实施例的根据多室神经元模型的树突室的状态动态和树突累积过程的框图。树突室300b、300a可以是例如以上描述的树突室230。图3b的图类似于图3a中的图,并且将不重复类似单元的描述。然而,在图3b中示出的设计中,为了增强用于多室处理的设计,已经在逻辑中添加了两个点ju330、jv332,其中来自顺序过程中的较早室a、b340的信息可以被联结。

作为示例,可以用兴奋性(excitatory)和抑制性(inhibitory)输入来刺激神经元,兴奋性和抑制性输入每个具有其自身的指数滤波时间常数。该尖峰神经元模型和这些神经元的网络可以能够实现强大的神经信息处理算法(例如e/i网络)。

对于在本文中描述的多室支持,可以用两个基本单元构造e/i神经元,一个将“e”输入与τe时间常数积分,另一个将“i”输入与τi时间常数积分。在另一个示例中,更加复杂的单神经元模型可以包括e/i神经元实现的复杂性。由于许多神经形态算法可能不需要该复杂性,因此当前描述的架构提供灵活并且高效的神经形态处理解决方案。架构可以被推广到极其灵活的神经形态神经元处理器,其通过编程可以实现常规的神经元模型(一些具有对于机器学习应用的潜在地重要价值)。

以上描述的结构提供了如在树结构中那样联结在朝向树突树的叶子上的较早输入a、b340的方式。在这些联结操作ju330、jv332的中的每个中,存在连结(interlink)的两个状态变量u(电流)和v(电压),所述状态变量u(电流)和v(电压)是两个动态变量。在该示例中由于存在两个这样的变量,因此存在两个不同的联结可能性(信号流程中的联结点)330、332。

在第一联结点330处可以提供来自较早输入340的电流,并且在第二联结点332处可以提供来自较早输入340的电压。尖峰函数322可以确定是否已经达到尖峰阈值,以确定是否发送尖峰s255(或者代表尖峰的值),并且此外确定包括以与树突室300b的当前状态有关的连续数据的形式的其他的信息的值y350(即表示树突室300b的状态变量的一个或多个数字)。

在生物学中,通过传送数字350(即连续数据)而不是只是传送二进制尖峰值255可以实现效率。聚焦于基于尖峰的发信号上的神经网络的生成主要是由效率驱动的,所述效率来自使用仅信息的绝对最小值用于能量和性能效率的长距离并行通信。虽然用基于尖峰的发信号方法(methodology)处理算法问题的大空间是可能的,但是该方法只能走这么远。在传送数字350而不是只是传送与具有时间代码的二进制尖峰事件255时(特别是当传送足够局部时),仍然有价值。为了该目的,生物神经元使用它们的树突树。树突树可以被视为神经元的空间局部区域,在所述区域上发送跨神经元的膜的连续的电流或电压值是高效的。

可以提供类似于核心支持的指令集的一系列联结操作。例如,人们可以将u变量与来自另一个室的输入一起添加。或者,代替加法运算,乘法运算可以被用作联结操作。例如还可以包括输入室是否超过其阈值以及然后该室的v是否已经超过其阈值的尖峰条件的and——可以采取那两者的and条件,或者那两者的or条件。存在多个不同的操作可以被定义(参见以下表1)。

与常规的前馈人工神经网络模型或纯基于尖峰的网络相比,包括来自其他室的信息的结构赋予树突树结构大量的计算能力。这创建了这些微分方程状态变量的非常灵活的连结的动态系统。设计以顺序单元的后向的、事件驱动的顺序遍历为特征,以将尖峰信息传播回到突触用于突触可塑性(例如权重根据stdp规则的更新)。中断单元上的前向迭代是以性能和能量为代价,并且因此只是少量地(sparingly)进行,即,每当单元形成尖峰时进行。通常,这在对应于神经元的胞体室的树的根形成尖峰时发生。

在生物学中,当胞体形成尖峰时,尖峰向下后向传播通过树突树——这对于学习是有益的。通常来说,突触处的突触可塑性是突触后神经元何时激发以及突触前神经元何时正在激发的函数,因此当神经元被激发时需要通知突触。一旦胞体室激发,多室架构可能对学习造成问题,因为存在其他输入室需要被通知神经元激发以便支持学习,使得所有其输入扇入突触都可以看到该事件。这可以是尖峰定时相关可塑性(stdp)模型的部分,所述尖峰定时相关可塑性(stdp)模型可以实现赫布(hebbian)学习、反赫布学习以及其他模型。

在没有核心的其他配置的情况下可以实现后向传播以允许核心向后传送尖峰。然而,为了效率起见,对于后向传播可能不期望是持续地活跃的。因为使用了时间复用的流水线实现(用于高效的硬件实现),所以在系统正在遍历所有的室时存在都处于执行中的多个前向处理步骤。后向尖峰传播可以被认为类似于正常处理器技术中的异常。所述流水线可以被冲刷(flush),并且处理可以回到某已知点。此处,处理在遍历各个室时将标识尖峰室——在这时刻处理器可能需要冲刷活跃的室并且然后执行后向遍历/传播。在示例中,如此后向传播的尖峰事件然后被存储在突触后踪迹状态存储设备120中。

图4是图示根据实施例的根据示例使用案例的作为时间的函数的踪迹变量402的简化时序图。根据实施例,该踪迹变量402可以作为时间t的函数在神经元处维护。为了说明的简单和易于说明,踪迹变量402被描绘为时间周期t1-t9上的连续函数,尽管在实际的实施例中,每个时间周期t1-t9可以包含50-100个实际的离散时间增量,并且踪迹变量402的值将针对每个单独时间步长的持续时间保持恒定。

输入刺激404a、404b和404c(统称为输入事件404)被图示为脉冲,所述脉冲可以是在神经元的输入或输出处的尖峰。在一些实现中,输入事件404在它们的加权方面中可以变化。每个输入刺激404a-404c引起影响踪迹变量402的神经元中的响应。在描绘的示例中,每个输入刺激引起在406a、406b和406c处指示的正方向上的阶跃改变,之后是如在408a、408b和408c处指示的指数衰减。指数衰减408遵循可以用时间常数τ定义的指数曲线。神经元可以被配置有激活阈值410,当由踪迹变量超过激活阈值410时(如在412和414处描绘的那样),可能引起相应的激活响应,诸如输出尖峰或者神经元的输入权重或阈值中的改变(未图示)。得到的踪迹是滤波的时间尖峰序列踪迹。

n个时间增量上的每个指数衰减函数的基本计算可以被表达成,其中x0表示初始值,并且α是对应于指数函数的时间常数τ的衰减因数。作为基本方法,将会计算n次乘法运算。然而,根据一些实施例,n的n比特表达式在二进制中可以被表示成,其中ni表示每个比特位置i的二进制值。有利地,该计算技术根据xn计算减少到至多[log2n]次乘法运算。

在相关的实施例中,为了改进计算效率,预先计算的数量n常数并且存储在数据存储中以被查找而不是计算。

在相关的实施例中,神经元在当指数衰减函数的延迟值要被用于处理或做决定的时间时(诸如响应于输入刺激)执行指数衰减函数的延迟计算。因此,在没有输入刺激时的时间增量期间,神经元引擎无需计算踪迹变量的指数衰减。这就使系统免于不得不花费能量和计算资源,特别是当可以以更少的运算来执行延迟结果的延迟计算时,如以上例示的那样。在执行延迟指数衰减计算时,考虑在其期间函数经历衰减的时间增量。

图4中图示的指数衰减表示基于单独的尖峰时间偏移对尖峰执行衰减的基线技术。因此,该技术可以被视为基于尖峰的计算的字面实现,其中每个尖峰事件更新架构中的所有状态变量(即使实际的计算被延迟直到学习历元事件)。对于尖峰神经网络推断和短时间尺度学习算法,该方法是高效的。然而,对于长时间尺度踪迹变量,该解决方案可能花费太多时间和能量来更新踪迹状态,并且还可能由于反复的数值舍入而难以保持准确性。

为了解决这些问题,可以重新利用与每个学习历元内的每个踪迹变量相关联的尖峰时间偏移(例如spiketime)状态。代替维护尖峰偏移时间(例如spiketime),当如此配置时,该状态被用来对在学习历元中接收到的尖峰事件的数量(例如spikecount)计数,并且下游的指数衰减手段(machinery)然后提供对于以高准确性计算长时间尺度(速率平均)踪迹值在算数上所需的事物的超集(superset)。在假设spikecount尖峰在时间上均匀地间隔开发生的情况下,与以上的基线解决方案相比,用可忽略的附加配置参数和逻辑,踪迹函数可以支持精确的尖峰序列滤波。

参考回到图1,踪迹计算单元被用来执行尖峰的基于spikecount的衰减以便产生尖峰踪迹。因此,响应于作为对核心的输入接收到的尖峰事件(进入尖峰)或者由核心内部的神经元单元产生的尖峰事件(外出尖峰),踪迹计算分别维护踪迹变量状态x和y。每个尖峰事件生成在定义成学习历元的周期性时间的间隔的持续时间上累积的用于踪迹计算的临时状态。在每个学习历元的末尾,学习引擎部分地作为计算的x和y踪迹值的函数修改突触变量状态(w)。在示例中,图1中示出的硬件结构可以在由神经形态处理器维护的大量的神经资源上被时间多复用。此处描述的操作适用于每个神经单元,并且为了效率可以以并发或流水线方式以硬件来实现。

在以上描述的基线踪迹计算中,以上指示的临时(例如每个历元)踪迹状态是尖峰发生的历元内的尖峰时间偏移。对于每个尖峰事件,旧的踪迹变量(例如x(old))被指数衰减到尖峰的时间,其中尖峰脉冲数量然后添加并且再次衰减到历元的末尾(例如衰减到当前时间)。更新后的踪迹值x和y(例如x(new)和y(new))然后被呈现给学习引擎。

对于预期高时间精度的学习规则,这样的精确衰减计算可能是有用的,以便在单个时间步长的粒度上区分尖峰时间差。然而,当学习规则预期已经在大量的尖峰事件上被平均的踪迹值(例如以大时间常数滤波)时,踪迹值变得对历元内的具体时间偏移不敏感。在该情况下,时间上精确的衰减计算可能是不必要地昂贵的(例如在处理时间、存储使用等方面中)。此外,考虑到典型的神经形态实现的非常低的比特精度,舍入误差可能是相对大的(例如即使对于随机舍入)并且适用于每个单独的衰减计算。对于速率踪迹,舍入误差因此累积,并且可能会显著降低如呈现给学习引擎的踪迹结果的最终准确性。

图5是图示根据实施例的用于可变历元尖峰序列滤波的部件交互的框图。这些交互图示了对图4的基线衰减操作的增强以解决以上指出的问题。例如,不是存储历元内的单个尖峰到达时间值(例如在“临时踪迹状态存储设备”存储器中),而是累积尖峰计数510被针对进入尖峰505维护。计数510在每个历元的开始处被重置成零,并且随后在历元期间的每个尖峰事件上递增。在示例中,计数510具有最大支持值,在所述最大支持值之后附加的尖峰将不被计数。尖峰计数是执行的唯一的每尖峰处理。

为了模拟计数的尖峰的到达时间,计数510可以按isi参数来缩放515。在示例中,单个isi参数对应于最小尖峰间间隔(例如尖峰间距),所述最小尖峰间间隔被用来将历元中的总尖峰计数515缩放到例如对于踪迹变量的动态范围是最优的脉冲值:

(1)impulse=(spikecount*(isi+1))*2shift+1

其中,‘shift’是依赖于踪迹变量比特宽度的常数(例如shift=踪迹状态变量的宽度减去最大spikecount*(isi+1)乘积的宽度)。给定来自等式(1)的impulse值,踪迹计算可以将每个历元的单个指数衰减计算520应用于先前的历元的踪迹值x[i-1],以获得当前历元的末尾踪迹值x[i]525:

(2)x[i]=expdecay(tau,tepoch,x[i-1]–impulse)+impulse

其中,expdecay()通过具有某时间常数tau的tepoch个时间步长(例如历元周期中的时间步长的数量)指数衰减“x[i-1]-impulse”踪迹输入值。例如,该函数可以以上面关于图4描述的方式来实现。根据该实现,只要tepoch是二的幂(例如2、4、8、16、32等),就使用仅单个乘法和随机舍入,这是可能的最小值。

在数学上,以在等式(1)和(2)中描述的方式计算impulse和x[i]对应于spikecount尖峰事件以tepoch/spikecount间隔在历元上均匀地间隔开发生的理想情况,其中第一事件被延迟tepoch/(spikecount*2)。这是用于最小化从历元到历元计算的踪迹值525中的数值抖动的最优尖峰模式。

使用spikecount衰减超过基线spiketime衰减的优点是在更大历元时间帧上的舍入误差中的减小以及增加的计算效率。在完全基于尖峰的基线解决方案中(例如,其中每个spiketime都被跟踪和衰减),不存在“尖峰计数器”累积级,所述累积级在这里用来将多个尖峰聚合到对于每个历元处置的单个事件中。完全基于尖峰的解决方案通常对于每个尖峰激活指数衰减电路系统两次:一次用于在添加新的尖峰脉冲之前在尖峰时间时获得的衰减踪迹值,并且第二次用于获得历元的末尾踪迹值。取决于expdecay()函数的实现(例如以硬件),每个指数衰减可以进一步对于每次衰减迭代执行多于一次乘法运算。因此,虽然完全基于尖峰的实现更加忠实于基本生物模型,但是对于基于速率的踪迹,其既由于数值舍入效应而较不准确,又比基于spikecount的解决方案计算效率低。下表图示了spiketime基线与spikecount架构之间的一些差异:

spikecount可以被最低程度地修改,以虑及对于历元中的稀疏尖峰的spiketime架构的准确性。即,基于尖峰时间的踪迹衰减(例如,spiketime架构)和基于尖峰计数的速率衰减(例如,spikecount架构)模式对于特定踪迹变量不需要是互相排斥的。在示例中,临时spiketime/spikecount踪迹状态值中的一个附加比特可以被用来区分“用spiketime的一个尖峰”和“用spikecount的多于一个尖峰”情况之间的值。在前者的情况下,可以基于尖峰时间偏移(例如spiketime)以时间精确的方式更新踪迹变量。在该情况下,基线衰减被应用于spiketime值。在后者的情况下,优化的基于速率的近似可以作为spikecount值的函数被应用。这样的实现跨基于尖峰和基于速率的方式(regime)最佳地统一了踪迹计算。

图6图示了根据实施例的用于可变历元尖峰序列滤波的方法600的示例的流程图。方法600的操作由计算机硬件执行,所述计算机硬件诸如以上描述的计算机硬件(例如,神经形态硬件)或以下描述的计算机硬件(例如,处理电路系统)。

在操作605处,针对历元启动(例如设定成默认值、重置等等)尖峰踪迹存储设备(例如,临时踪迹变量存储设备或者诸如此类)。在示例中,尖峰踪迹存储设备被包括在神经形态硬件的神经单元中。在示例中,尖峰踪迹存储设备是神经单元的寄存器。历元是在其上修改神经单元的时间周期。即,神经单元关于基于进入尖峰改变以其来生成外出尖峰的方式的行为对于历元而言是恒定的。时间周期可以由神经形态硬件的时间步长来定义,使得基于神经形态硬件内的某发信号活动(或机会)而不是经过的时间(诸如经过的秒、分钟等)的外部记录来递增时间步长。

在操作610处,可以在历元期间在神经单元处接收多个尖峰。

在操作615处,针对多个尖峰中的每个递增尖峰踪迹存储设备以产生接收到的尖峰的计数。如以上指出的那样,尖峰踪迹存储设备正在跟踪多少尖峰到达而不是尖峰到达的时间偏移。

在操作620处,获得历元学习事件。在示例中,历元学习事件是历元的末尾。可以用信号向神经单元通知(例如,由神经单元接收)历元学习事件,或者神经单元可以从外部来源(例如,神经形态硬件的元数据寄存器)感测(例如,取回)历元事件。历元学习事件针对每个历元的启动而不是每个尖峰用信号通知神经核心中的活动用于学习(例如,更新)目的。

在操作625处,响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹。在示例中,使用接收到的尖峰的计数产生尖峰踪迹包括将接收到的尖峰的计数按常数缩放。在示例中,所述常数是最小尖峰间间隔。在示例中,使用接收到的尖峰的计数产生尖峰踪迹包括将缩放的接收到的尖峰的计数乘以二的shift加一次幂。此处,shift常数。是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。在示例中,shift由尖峰踪迹存储设备的宽度(例如,以比特计)减去最大缩放的接收到的尖峰的计数的宽度来定义。这些操作允许基于尖峰计数重建尖峰。虽然各个尖峰可能已经以不同的偏移到达,但是该模型假设尖峰的均匀到达时间。可以将衰减模型应用于这些重建的尖峰。

在示例中,使用接收到的尖峰的计数产生尖峰踪迹包括将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。这说明了对每个历元应用一次衰减,而不是以上描述的基线架构的对每个尖峰一次的衰减应用。在示例中,通过以下等式计算单个指数衰减:

x[i]=expdecay(tau,tepoch,x[i-1]–impulse)+impulse

其中,x[i]是尖峰踪迹,x[i-1]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。在示例中,tepoch是二的幂。

在操作630处,可以使用尖峰踪迹(例如,x[i])来修改神经单元的神经连接。在示例中,使用尖峰踪迹修改神经单元的神经连接包括作为尖峰踪迹的函数修改突触变量状态。因此,学习在基于如由例如图1的踪迹计算电路系统和可编程学习引擎建模的进入尖峰和外出尖峰的交互调节突触权重时发生。

以上描述的示例具体地涉及尖峰计数器而不是尖峰时间偏移的使用。然而,方法600的操作可以被扩展以包括混合模型,由此可以根据基线架构来处理(例如,衰减)历元期间的单个尖峰,并且可以如上处理多个尖峰。例如,方法600可以包括针对第二历元启动尖峰踪迹存储设备,在第二历元期间接收单个尖峰,并且将自从历元以来的尖峰到达(例如尖峰时间偏移)存储在尖峰踪迹存储设备中。此处,如果在历元期间没有接收到其他尖峰,则在获得针对第二历元的第二历元学习事件时,方法600可以响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹。在示例中,响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹包括基于自从历元以来的尖峰到达应用指数衰减。因此,第二尖峰踪迹可以使用spiketime指数衰减而不是上面关于操作625描述的spikecount衰减。在示例中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。方法600然后可以使用第二尖峰踪迹来修改神经单元的神经连接。

图7图示了可以在其上执行在本文中讨论的技术(例如,方法)中的任何一个或多个技术(例如,方法)的示例机器700的框图。如在本文中描述的示例可以包括机器700中的逻辑或多个部件或者机制或者可以由机器700中的逻辑或多个部件或者机制操作。电路系统(例如,处理电路系统)是包括硬件(例如,简单电路、门、逻辑等)的在机器700的以有形实体实现的电路的集合。电路系统成员可以随时间是灵活的。电路系统包括在操作时可以单独地或者组合地执行指定的操作的成员。在示例中,电路系统的硬件可以被不可变地设计成执行具体操作(例如,硬连线)。在示例中,电路系统的硬件可以包括可变地连接的物理部件(例如,执行单元、晶体管、简单电路等),包括物理地修改(例如,不变质量粒子的磁地、电地、可移动放置等)以对具体操作的指令编码的机器可读介质。在连接物理部件时,硬件构成部分的底层电气性质被例如从绝缘体改变到导体或者反之亦然。指令使能的嵌入式硬件(例如,执行单元或加载机制)经由可变连接以硬件创建电路系统的成员,以在处于操作中时执行具体操作的部分。因此,在示例中,机器可读介质单元是电路系统的部分或者当设备正在操作时被通信地耦合到电路系统的其他部件。在示例中,物理部件中的任何物理部件可以被使用在多于一个电路系统的多于一个成员中。例如,在操作下,执行单元在一个时间点中可以被使用在第一电路系统的第一电路中,并且在不同的时间时由第一电路系统中的第二电路或者由第二电路系统中的第三电路重复使用。跟随的是关于机器700的这些部件的附加示例。

在替代实施例中,机器700可以作为独立设备操作或者可以被连接(例如,联网)到其他机器。在联网部署中,机器700可以以服务器-客户端网络环境中的服务器机器、客户端机器或者两者的身份操作。在示例中,机器700可以充当对等(p2p)(或其他分布式)网络环境中的对等机器。机器700可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、移动电话、web设备、网络路由器、交换机或桥,或者是能够执行指定要由该机器采取的动作的指令(顺序或其他方式)的任何机器。此外,虽然图示了仅单个机器,但是术语“机器”还应当被理解为包括单独地或联合地执行指令的集合(或多个集合)以执行在本文中讨论的方法中的任何一个或多个方法的机器的任何集合,诸如云计算、软件即服务(saas)、其他计算机集群配置。

机器(例如,计算机系统)700可以包括硬件处理器702(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器核心或者其任何组合)、主存储器704、静态存储器(例如,用于固件、微代码、基本输入输出(bios)、统一可扩展固件接口(uefi)等的存储器或存储设备)706以及大容量存储设备708(例如,硬盘驱动器、带驱动器、闪存存储设备或其他块设备),其中的一些或全部可以经由连结(例如,总线)730与彼此通信。机器700可以进一步包括显示单元710、字母数字输入设备712(例如,键盘)以及用户界面(ui)导航设备714(例如,鼠标)。在示例中,显示单元710、输入设备712和ui导航设备714可以是触摸屏显示器。机器700可以附加地包括存储设备(例如,驱动单元)708、信号生成设备718(例如,扬声器)、网络接口设备720以及一个或多个传感器716,所述传感器716诸如全球定位系统(gps)传感器、指南针、加速度计或其他传感器。机器700可以包括输出控制器728,诸如用于通信或者控制一个或多个外围设备(例如,打印机、读卡器等)的串行(例如,通用串行总线(usb)、并行或者其他有线或无线(例如,红外(ir)、近场通信(nfc)等)连接。

处理器702的寄存器、主存储器704、静态存储器706或者大容量存储设备708可以是或者包括机器可读介质722,在所述机器可读介质722上存储实现在本文中描述的技术或功能中的任何一个或多个或者由在本文中描述的技术或功能中的任何一个或多个利用的数据结构或指令724(例如,软件)的一个或多个集合。在由机器700对其执行期间,指令724还可以完全地或者至少部分地驻留在处理器702的寄存器、主存储器704、静态存储器706或者大容量存储设备708的任一个内。在示例中,硬件处理器702、主存储器704、静态存储器706或者大容量存储设备708中的一个或任何组合可以构成机器可读介质722。虽然机器可读介质722被图示为单个介质,但是术语“机器可读介质”可以包括配置成存储一个或多个指令724的单个介质或多个介质(例如,集中式或分布式数据库或者相关联的高速缓存和服务器)。

术语“机器可读介质”可以包括能够存储、编码或者携带指令用于由机器700执行并且使得机器700执行本公开的技术的任何一个或多个的任何介质,或者能够存储、编码或携带由这样的指令使用或者与这样的指令相关联的数据结构的任何介质。非限制性的机器可读介质示例可以包括固态存储器、光介质、磁介质以及信号(例如,射频信号、其他基于光子的信号、声音信号等)。在示例中,非暂时性机器可读介质包括具有多个粒子的机器可读介质,所述多个粒子具有不变(例如,静止)质量并且因此是物质的成分。因此,非暂时性机器可读介质是不包括暂时性传播信号的机器可读介质。非暂时性机器可读介质的具体示例可以包括:非易失性存储器,诸如半导体存储器设备(例如,电可编程只读存储器(eprom)、电可擦写可编程只读存储器(eeprom))和闪存设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及cd-rom和dvd-rom盘。

可以进一步通过通信网络726使用传输介质经由网络接口设备720利用多个传输协议中的任何一个(例如,帧中继、互联网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、超文本传输协议(http)等)来传输或接收指令724。除了其他之外,示例通信网络还可以包括局域网(lan)、广域网(wan)、分组数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、普通老式电话(pots)网络以及无线数据网络(例如,被称作wi-fi®的电气和电子工程师协会(ieee)802.11系列标准、被称作wimax®的ieee802.16系列标准)、ieee802.15.4系列标准、对等(p2p)网络。在示例中,网络接口设备720可以包括一个或多个物理插孔(例如,以太网、同轴或者电话插孔)或者一个或多个天线以连接到通信网络726。在示例中,网络接口设备720可以包括多个天线,以使用单输入多输出(simo)、多输入多输出(mimo)或者多输入单输出(miso)技术中的至少一个无线地通信。术语“传输介质”应当被理解为包括能够存储、编码或携带用于由机器700执行的指令的任何有形介质,并且包括数字或模拟通信信号或者用于促进此类软件的通信的其他无形介质。传输介质是机器可读介质。

图8到17图示了可以被用来实现计算机硬件的硬件结构或实现的若干个附加示例。

图8是根据本发明的一个实施例的寄存器架构800的框图。在图示的实施例中,存在32个是512比特宽的矢量寄存器810;这些寄存器被引用为zmm0到zmm31。低的16个zmm寄存器的低阶256比特被覆盖在寄存器ymm0-16上。低的16个zmm寄存器的低阶128比特(ymm寄存器的低阶128比特)被覆盖在寄存器xmm0-15上。

写掩码寄存器815——在图示的实施例中,存在8个写掩码寄存器(k0到k7),每个在大小上是64比特。在替代实施例中,写掩码寄存器815在大小上是16比特。如先前描述的那样,在本发明的一个实施例中,矢量掩码寄存器k0无法被用作写掩码;当通常将指示k0的编码被用于写掩码时,其选择0xffff的硬连线写掩码,实际上针对该指令禁用写掩蔽。

通用寄存器825——在图示的实施例中,存在十六个64比特通用寄存器,所述通用寄存器连同现有的x86寻址模式一起被使用以对存储器操作数寻址。这些寄存器通过名称rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp和r8到r15来引用。

在其上被别名mmx打包整数平面寄存器堆850的标量浮点堆栈寄存器堆(x87堆栈)845——在图示的实施例中,x87堆栈是用来使用x87指令集扩展对32/64/80比特浮点数据执行标量浮点运算的八元素堆栈,而mmx寄存器被用来对64比特打包整数数据执行运算,以及被用来保持用于在mmx与xmm寄存器之间执行的某些运算的操作数。

本发明的替代实施例可以使用更宽或更窄的寄存器。此外,本发明的替代实施例可以使用更多、更少或者不同的寄存器堆和寄存器。

处理器核心可以以不同方式、出于不同目的并且在不同处理器中实现。例如,这样的核心的实现可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用乱序核心;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可以包括:1)包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用乱序核心的cpu;以及2)包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,所述计算机系统架构可以包括:1)与cpu分离的芯片上的协处理器;2)与cpu相同的封装中的分离的管芯上的协处理器;3)与cpu相同的管芯上的协处理器(在这种情况下,这样的协处理器有时被称作专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或者被称作专用核心);以及4)可以在相同的管芯上包括描述的cpu(有时被称作(一个或多个)应用核心或(一个或多个)应用处理器)、以上描述的协处理器和附加的功能的芯片上系统。接下来描述示例性核心架构,之后是示例性的处理器和计算机架构的描述。

图9是图示根据本发明的实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图。图10是图示根据本发明的实施例的要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核心两者的框图。图9-b中的实线框图示了有序流水线和有序核心,而虚线框的可选的添加图示了寄存器重命名、乱序发布/执行流水线和核心。鉴于有序方面是乱序方面的子集,因此将描述乱序方面。

在图9中,处理器流水线900包括取出级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也被称作调度或发布)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写级918、异常处置级922以及提交级924。

图10示出了包括耦合到执行引擎单元950的前端单元930的处理器核心990,并且执行引擎单元950的前端单元930两者都被耦合到存储器单元970。核心990可以是精简指令集计算(risc)核心、复杂指令集计算(cisc)核心、超长指令字(vliw)核心或者混合或替代的核心类型。作为又一选项,核心990可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(gpgpu)核心、图形核心或者诸如此类。

前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,所述指令高速缓存单元934被耦合到指令转换旁视缓冲器(tlb)936,所述指令转换旁视缓冲器(tlb)936被耦合到指令取出单元938,所述指令取出单元938被耦合到解码单元940。解码单元940(或解码器)可以对指令解码,并且生成从原始指令解码或者以其他方式反映原始指令或者从原始指令导出的一个或多个微操作、微代码入口点、微指令、其他指令或者其他控制信号作为输出。可以使用各种不同的机制来实现解码单元940。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核心990包括存储用于某些微指令的微代码的微代码rom或其他介质(例如在解码单元940中或者以其他方式在前端单元930内)。解码单元940被耦合到执行引擎单元950中的重命名/分配器单元952。

执行引擎单元950包括耦合到引退单元954以及一个或多个调度器单元956的集合的重命名/分配器单元952。(一个或多个)调度器单元956表示任何数量的不同的调度器,包括保留站、中央指令窗口等。(一个或多个)调度器单元956被耦合到(一个或多个)物理寄存器堆单元958。(一个或多个)物理寄存器堆单元958中的每个表示一个或多个物理寄存器堆,其中的不同物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点、状态(例如是要被执行的接下来的指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元958包括矢量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元958被引退单元954重叠以说明寄存器重命名和乱序执行可以以其来实现的各种方式(例如使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来堆、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器的池;等)。引退单元954和(一个或多个)物理寄存器堆单元958被耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一个或多个执行单元962的集合以及一个或多个存储器访问单元964的集合。执行单元962可以执行各种操作(例如移位、加法、减法、乘法)并且对各种类型的数据(例如标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)执行各种操作。虽然一些实施例可以包括专用于具体功能或功能的集合的多个执行单元,但是其他实施例可以包括仅一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器堆单元958和(一个或多个)执行集群960被示出为可能是复数的,因为某些实施例针对某些类型的数据/操作创建分离的流水线(例如标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线,和/或每个具有它们自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分离的存储器访问流水线的情况下,某些实施例报被执行,在所述某些实施例中仅该流水线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行并且其余的是有序的。

存储器访问单元964的集合被耦合到存储器单元970,所述存储器单元970包括耦合到数据高速缓存单元974的数据tlb单元972,所述数据高速缓存单元974耦合到2级(l2)高速缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括加载单元、存储地址单元和存储数据单元,其中的每个被耦合到存储器单元970中的数据tlb单元972。指令高速缓存单元934被进一步耦合到存储器单元970中的2级(l2)高速缓存单元976。l2高速缓存单元976被耦合到一个或多个其他级的高速缓存,并且最终被耦合到主存储器。

作为示例,示例性寄存器重命名、乱序发布/执行核心架构可以如下实现流水线900:1)指令取出938执行取出和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(一个或多个)调度器单元956执行调度级912;5)(一个或多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(一个或多个)物理寄存器堆单元958执行写回/存储器写级918;7)各种单元可能涉及异常处置级922;以及8)引退单元954和(一个或多个)物理寄存器堆单元958执行提交级924。

核心990可以支持一个或多个指令集(例如x86指令集(具有已经被添加了较新版本的一些扩展);sunnyvale,ca的mips技术的mips指令集;sunnyvale,ca的arm控股的arm指令集(具有诸如neon之类的可选的附加扩展)),包括在本文中描述的(一个或多个)指令。在一个实施例中,核心990包括用于支持打包数据指令集扩展(例如avx1、avx2)的逻辑,由此允许使用打包数据来执行由许多多媒体应用使用的操作。

应当理解,核心可以支持多线程(执行操作或线程的两个或更多并行集合),并且可以以多种方式这样做,所述多种方式包括时间片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的线程中的每个提供逻辑核心)或其组合(例如,诸如在intel®超线程技术中的时间片取出和解码以及此后的同时多线程)。

虽然在乱序执行的上下文中描述了寄存器重命名,但是应当理解,可以将寄存器重命名用在有序架构中。虽然处理器的图示的实施例还包括分离的指令以及数据高速缓存单元934/974和共享的l2高速缓存单元976,但是替代的实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(l1)内部高速缓存或多级的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和外部高速缓存的组合,所述外部高速缓存在核心和/或处理器的外部。替代地,所有的高速缓存可以在核心和/或处理器的外部。

图11a-b图示了更具体的示例性有序核心架构的框图,其中核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如环形网络)与某固定功能逻辑、存储器i/o接口和其他必要的i/o逻辑通信。

图11a是根据本发明的实施例的单个处理器核心连同其去往管芯上互连网络1102的连接以及其2级(l2)高速缓存1104的本地子集的框图。在一个实施例中,指令解码器1100支持具有打包数据指令集扩展的x86指令集。l1高速缓存1106允许进入到标量和矢量单元中的对高速缓存存储器的低延迟访问。虽然在一个实施例中(为了简化设计),标量单元1108和矢量单元1110使用分离的寄存器集合(分别地标量寄存器1112和矢量寄存器1114),并且在它们之间传递的数据被写到存储器并且然后从1级(l1)高速缓存1106中读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或者包括允许在两个寄存器堆之间传递数据而无需被写和读回的通信路径)。

l2高速缓存1104的本地子集是被划分为分离的本地子集(每个处理器核心一个)的全局l2高速缓存的部分。每个处理器核心具有对其自身的l2高速缓存1104的本地子集的直接访问路径。由处理器核心读取的数据被存储在其l2高速缓存子集1104中,并且可以与访问它们自身的本地l2高速缓存子集的其他处理器核心并行地被快速访问。由处理器核心写的数据被存储在其自身的l2高速缓存子集1104中,并且如果必要的话被从其他子集冲刷。环形网络针对共享的数据确保一致性。环形网络是双向的,以允许诸如处理器核心、l2高速缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环形数据路径是每个方向1012比特宽。

图11b是根据本发明的实施例的图11a中的处理器核心的部分的扩展视图。图11b包括l1高速缓存1104的l1数据高速缓存1106a部分,以及关于矢量单元1110和矢量寄存器1114的更多细节。具体地,矢量单元1110是16宽度的矢量处理单元(vpu)(参见16宽度的alu1128),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。vpu支持用搅和(swizzle)单元1120调派寄存器输入,用数值转换单元1122a-b进行数值转换,并且用复制单元1124对存储器输入进行复制。写掩码寄存器1126允许预测得到的矢量写。

图12是根据本发明的实施例的处理器1200的框图,所述处理器1200可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形装置。图12中的实线框图示了具有单个核心1202a、系统代理1210、一个或多个总线控制器单元1216的集合的处理器1200,而虚线框的可选的添加图示了具有多个核心1202a-n、系统代理单元1210中的一个或多个集成存储器控制器单元1214的集合以及专用逻辑1208的替代处理器1200。

因此,处理器1200的不同实现可以包括:1)具有是集成的图形装置和/或科学(吞吐量)逻辑的专用逻辑1208(其可以包括一个或多个核心)以及是一个或多个通用核心的核心1202a-n(例如通用有序核心、通用乱序核心、两者的组合)的cpu;2)具有是主要意图用于图形和/或科学(吞吐量)的大量专用核心的核心1202a-n的协处理器;以及3)具有是大量通用有序核心的核心1202a-n的协处理器。因此,处理器1200可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量许多集成核心(mic)协处理器(包括30个或更多核心)、嵌入式处理器或者诸如此类。可以在一个或多个芯片上实现处理器。处理器1200可以是使用多个处理技术中的任何处理技术(诸如例如bicmos、cmos或nmos)的一个或多个基板的部分和/或可以在使用多个处理技术中的任何处理技术(诸如例如bicmos、cmos或nmos)的一个或多个基板上实现。

存储器层级包括在核心内的一个或多个级的高速缓存、集合或一个或多个共享高速缓存单元1206和耦合到集成存储器控制器单元1214的集合的外部存储器(未示出)。共享高速缓存单元1206的集合可以包括一个或多个中级高速缓存,诸如2级(l2)、3级(l3)、4级(l4)或其他级的高速缓存、最后级高速缓存(llc)和/或其组合。虽然在一个实施例中基于环形的互连单元1212将集成图形逻辑1208、共享高速缓存单元1206的集合以及系统代理单元1210/(一个或多个)集成存储器控制器单元1214互连,但是替代的实施例可以使用任何数量的公知的技术用于互连这样的单元。在一个实施例中,在一个或多个高速缓存单元1206和核心1202-a-n之间保持一致性。

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

核心1202a-n在架构指令集的方面中可以是同构的或异构的;即,核心1202a-n中的两个或更多可能能够执行相同的指令集,而其他可能能够执行该指令集的仅子集或不同的指令集。

图13-16是示例性计算机架构的框图。针对膝上型计算机、台式计算机、手持式pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的领域中已知的其他系统设计和配置是合适的。通常,能够合并在本文中公开的处理器和/或其他执行逻辑的种类繁多的系统或电子设备通常是合适的。

现在参考图13,示出了根据本发明的一个实施例的系统1300的框图。系统1300可以包括被耦合到控制器中枢1320的一个或多个处理器1310、1315。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(gmch)1390和输入/输出中枢(ioh)1350(其可以在分离的芯片上);gmch1390包括存储器1340和协处理器1345被耦合到其的存储器和图形控制器;ioh1350将输入/输出(i/o)设备1360耦合到gmch1390。替代地,存储器和图形控制器中的一个或两者被集成在(如在本文中描述的)处理器内,存储器1340和协处理器1345被直接耦合到处理器1310,并且控制器中枢1320在具有ioh1350的单个芯片中。

在图13中用虚线表示附加的处理器1315的可选性质。每个处理器1310、1315可以包括在本文中描述的处理核心中的一个或多个,并且可以是处理器1200的某版本。

存储器1340可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或者两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前端总线(fsb)之类的多点(multi-drop)总线、诸如quickpath互连(qpi)之类的点到点接口或者类似的连接1395与(一个或多个)处理器1310、1315通信。

在一个实施例中,协处理器1345是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器或者诸如此类。在一个实施例中,控制器中枢1320可以包括集成图形加速器。

在物理资源1310、1315之间在包括架构、微架构、热、功耗特性以及诸如此类的一系列优点的度量(aspectrumofmetricsofmerit)的方面中可以存在多种差异。

在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1310将这些协处理器指令识别为是应当由附接的协处理器1345执行的类型。因此,处理器1310在协处理器总线或其他互连上向协处理器1345发布这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1345接受并且执行接收到的协处理器指令。

现在参考图14,示出了根据本发明的实施例的第一更具体示例性系统1400的框图。如在图14中示出的那样,多处理器系统1400是点到点互连系统,并且包括经由点到点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每个可以是处理器1200的某版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一个实施例中,处理器1470和1480分别是处理器1310协处理器1345。

处理器1470和1480被示出分别包括集成存储器控制器(imc)单元1472和1482。处理器1470还包括作为其总线控制器单元的部分的点到点(p-p)接口1476和1478;类似地,第二处理器1480包括p-p接口1486和1488。处理器1470、1480可以使用p-p接口电路1478、1488经由点到点(p-p)接口1450来交换信息。如在图14中示出的那样,imc1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,其可以是本地附接到相应的处理器的主存储器的部分。

处理器1470、1480每个可以使用点到点接口电路1476、1494、1486、1498经由单独的p-p接口1452、1454与芯片组1490交换信息。芯片组1490可以可选地经由高性能接口1439与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器或者诸如此类。

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

芯片组1490可以经由接口1496被耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(pci)总线,或者是诸如pci快速总线或另一个第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如在图14中示出的那样,各种i/o设备1414可以连同将第一总线1416耦合到第二总线1420的总线桥1418被耦合到第一总线1416。在一个实施例中,一个或多个附加的处理器1415被耦合到第一总线1416,所述一个或多个附加的处理器1415诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或者任何其他处理器。在一个实施例中,第二总线1420可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以被耦合到第二总线1420,所述各种设备包括例如键盘和/或鼠标1422、通信设备1427和存储单元1428,所述存储单元1428诸如是可以包括指令/代码和数据1430的磁盘驱动器或其他大容量存储设备。此外,音频i/o1424可以被耦合到第二总线1420。注意,其他架构是可能的。例如,代替图14的点到点架构,系统可以实现多点总线或其他此类架构。

现在参考图15,图示了根据本发明的实施例的第二更具体示例性系统1500的框图。图14和15中的相同单元具有相同的参考标号,并且已经从图15省略图14的某些方面,以便避免模糊图15的其他方面。

图15图示了处理器1470、1480可以分别包括集成存储器和i/o控制逻辑(“cl”)1472和1482。因此,cl1472、1482包括集成存储器控制器单元并且包括i/o控制逻辑。图15图示了不仅存储器1432、1434被耦合到cl1472、1482,而且i/o设备1514也被耦合到控制逻辑1472、1482。传统i/o设备1515被耦合到芯片组1490。

现在参考图16,示出了根据本发明的实施例的soc1600的框图。图12中的类似单元具有相同的参考标号。此外,虚线框是更加先进的soc上的可选特征。在图16中,(一个或多个)互连单元1602被耦合到:包括一个或多个核心202a-n的集合以及(一个或多个)共享高速缓存单元1206的应用处理器1610;系统代理单元1210;(一个或多个)总线控制器单元1216;(一个或多个)集成存储器控制器单元1214;可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器的集合或一个或多个协处理器1620;静态随机存取存储器(sram)单元1630;直接存储器访问(dma)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,(一个或多个)协处理器1620包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器或者诸如此类。

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

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

程序代码可以以高级程序或面向对象的编程语言来实现以与处理系统通信。如果期望的话,程序代码还可以以汇编或机器语言来实现。事实上,在本文中描述的机制在范围上不限于任何特定的编程语言。在各种情况中,语言可以是编译的或解释的语言。

至少一个实施例的一个或多个方面可以由表示处理器内的各种逻辑的存储在机器可读介质上的表示的指令来实现,所述指令在由机器读取时使得机器制造逻辑以执行在本文中描述的技术。被称为“ip核心”的这样的表示可以被存储在有形机器可读介质上,并且向各种客户或制造设施提供以加载到实际制造逻辑或处理器的制造机器中。

这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性的有形布置,包括诸如硬盘的存储介质,以及任何其他类型的盘,所述任何其他类型的盘包括软盘、光盘、压缩盘只读存储器(cd-rom)、可重写压缩盘(cd-rw)和磁光盘,半导体设备,诸如只读存储器(rom)、随机存取存储器(ram)(诸如动态随机存取存储器(dram)、静态随机存取存储器(sram))、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom)、相变存储器(pcm)、磁卡或光卡;或者适用于存储电子指令的任何其他类型的介质。

相应地,本发明的实施例还包括包含指令或包含设计数据的非暂时性的有形机器可读介质,诸如定义在本文中描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(hdl)。这样的实施例也可以被称作程序产品。

在一些情况下,指令转换器可以被用来将指令从源指令集转换成目标指令集。例如,指令转换器可以翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或者以其他方式将指令转换成要由核心处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或其组合来顺序。指令转换器可以在处理器上、在处理器外、或者部分在处理器上并且部分在处理器外。

图17是根据本发明的实施例的对比软件指令转换器的使用的框图,所述软件指令转换器用以把来源指令集中的二进制指令转换到目标指令集中的二进制指令。在图示的实施例中,所述指令转换器是软件指令转换器,但是所述指令转换器可以用软件、固件、硬件或者其各种组合来实施。图17图示了可以使用x86编译器1704对高级语言1702中的程序进行编译,从而生成可以由具有至少一个x86指令集核心的处理器1716原生地执行x86二进制代码1706。具有至少一个x86指令集核心的处理器1716表示可以实施与具有至少一个x86指令集核心的intel处理器基本上相同的功能的任何处理器,这是通过兼容地执行或者通过其他方式处理(1)intelx86指令集核心的指令集的一大部分或者(2)目标是运行在具有至少一个x86指令集核心的intel处理器上的应用或其他软件的对象代码版本,以便获得与具有至少一个x86指令集核心的intel处理器基本上相同的结果。x86编译器1704表示适于生成x86二进制代码1706(例如对象代码)的编译器,所述x86二进制代码1706在具有或不具有附加的链接处理的情况下可以被执行在具有至少一个x86指令集核心的处理器1716上。类似地,图17图示了可以使用替代指令集编译器1708对高级语言1702中的程序进行编译,从而生成可以由不具有至少一个x86指令集核心的处理器1714(例如具有执行mipstechnologies(sunnyvale,ca)的mips指令集并且/或者执行armholdings(sunnyvale,ca)的arm指令集的核心的处理器)原生地执行的替代指令集二进制代码1710。指令转换器1712被用来把x86二进制代码1706转换成可以由不具有x86指令集核心的处理器1714原生地执行的代码。该转换后的代码不太可能与替代指令集二进制代码1710相同,这是因为难以制作能够这样做的指令转换器;但是转换后的代码将实现一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1712表示软件、固件、硬件或者其组合,并且通过仿真、模拟或任何其他处理允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1706。

附加的备注和示例

示例1是一种用于可变历元尖峰序列滤波的神经核心,所述神经核心包括:尖峰踪迹存储设备;踪迹衰减建模器电路系统,其用于响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及处理电路系统,其用于:在历元学习事件对应于其的历元期间在神经核心处接收多个尖峰;针对多个尖峰中的每个递增尖峰踪迹存储设备以产生接收到的尖峰的计数;以及响应于历元学习事件的发生,使用尖峰踪迹修改神经核心的网络参数。

在示例2中,示例1的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将接收到的尖峰的计数按常数缩放。

在示例3中,示例2的主题包括,其中,所述常数是最小尖峰间间隔。

在示例4中,示例2-3的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

在示例5中,示例2-4的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

在示例6中,示例5的主题包括,其中,通过以下来计算单个指数衰减:x[i]=expdecay(tau,tepoch,x[i-1]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-1]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

在示例7中,示例6的主题包括,其中,tepoch是二的幂。

在示例8中,示例1-7的主题包括,其中,处理电路系统被进一步用于:在第二历元期间接收单个尖峰;将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;获得针对第二历元的第二历元学习事件;以及使用第二尖峰踪迹修改神经核心的网络参数;并且其中,踪迹衰减建模器电路系统被进一步用于响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹。

在示例9中,示例8的主题包括,其中,为了响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹,踪迹衰减建模器电路系统基于自从历元以来的尖峰到达应用指数衰减。

在示例10中,示例9的主题包括,其中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。

在示例11中,示例1-10的主题包括,其中,历元学习事件是历元的末尾。

在示例12中,示例1-11的主题包括,其中,尖峰踪迹存储设备是神经核心的寄存器。

在示例13中,示例1-12的主题包括,其中,为了使用尖峰踪迹修改神经核心的网络参数,处理电路系统作为尖峰踪迹的函数修改突触变量状态。

示例14是一种用于可变历元尖峰序列滤波的系统,所述系统包括:多个神经芯片,每个神经芯片包括多个神经核心,多个神经核心中的神经核心包括:尖峰踪迹存储设备;踪迹衰减建模器电路系统,其用于响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及处理电路系统,其用于:在历元学习事件对应于其的历元期间在神经核心处接收多个尖峰;针对多个尖峰中的每个递增尖峰踪迹存储设备以产生接收到的尖峰的计数;以及响应于历元学习事件的发生,使用尖峰踪迹修改神经核心的网络参数;以及互连,其用于提供从神经芯片到彼此以及从神经芯片到在系统的外部的设备的通信。

在示例15中,示例14的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将接收到的尖峰的计数按常数缩放。

在示例16中,示例15的主题包括,其中,所述常数是最小尖峰间间隔。

在示例17中,示例15-16的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

在示例18中,示例15-17的主题包括,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

在示例19中,示例18的主题包括,其中,通过以下来计算单个指数衰减:x[i]=expdecay(tau,tepoch,x[i-14]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-14]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

在示例20中,示例19的主题包括,其中,tepoch是二的幂。

在示例21中,示例14-20的主题包括,其中,处理电路系统被进一步用于:在第二历元期间接收单个尖峰;将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;获得针对第二历元的第二历元学习事件;以及使用第二尖峰踪迹修改神经核心的网络参数;并且其中,踪迹衰减建模器电路系统被进一步用于响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹。

在示例22中,示例21的主题包括,其中,为了响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹,踪迹衰减建模器电路系统基于自从历元以来的尖峰到达应用指数衰减。

在示例23中,示例22的主题包括,其中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。

在示例24中,示例14-23的主题包括,其中,历元学习事件是历元的末尾。

在示例25中,示例14-24的主题包括,其中,尖峰踪迹存储设备是神经核心的寄存器。

在示例26中,示例14-25的主题包括,其中,为了使用尖峰踪迹修改神经核心的网络参数,处理电路系统作为尖峰踪迹的函数修改突触变量状态。

在示例27中,示例14-26的主题包括,其中,系统被包括在传感器设备中,并且其中互连将神经芯片连接到传感器。

在示例28中,示例27的主题包括,其中,传感器是照相机、温度计、气压计、位置传感器、湿度传感器或麦克风中的至少一个。

在示例29中,示例27-28的主题包括,其中,互连从神经核心向消费者设备提供分类数据。

在示例30中,示例29的主题包括,其中,消费者设备是用于经由网络与远程机器通信的网络接口。

示例31是一种用于可变历元尖峰序列滤波的方法,所述方法包括:在历元期间在神经核心处接收多个尖峰;针对多个尖峰中的每个递增尖峰踪迹存储设备中的值以产生接收到的尖峰的计数,尖峰踪迹存储设备包括在神经形态硬件的神经核心中;响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及使用尖峰踪迹修改神经核心的网络参数。

在示例32中,示例31的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将接收到的尖峰的计数按常数缩放。

在示例33中,示例32的主题包括,其中,所述常数是最小尖峰间间隔。

在示例34中,示例32-33的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

在示例35中,示例32-34的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

在示例36中,示例35的主题包括,其中,通过以下来计算单个指数衰减:x[i]=expdecay(tau,tepoch,x[i-31]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-31]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

在示例37中,示例36的主题包括,其中,tepoch是二的幂。

在示例38中,示例31-37的主题包括,在第二历元期间接收单个尖峰;将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹;以及使用第二尖峰踪迹修改神经核心的网络参数。

在示例39中,示例38的主题包括,其中,响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹包括基于自从历元以来的尖峰到达应用指数衰减。

在示例40中,示例39的主题包括,其中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。

在示例41中,示例31-40的主题包括,其中,历元学习事件是历元的末尾。

在示例42中,示例31-41的主题包括,其中,尖峰踪迹存储设备是神经核心的寄存器。

在示例43中,示例31-42的主题包括,其中,使用尖峰踪迹修改神经核心的网络参数包括作为尖峰踪迹的函数修改突触变量状态。

示例44是包括指令的至少一个机器可读介质,所述指令在由机器执行时使得机器执行示例31-43的任何方法。

示例45是一种包括用于执行示例31-43的任何方法的装置的系统。

示例46是包括用于可变历元尖峰序列滤波的指令的至少一个机器可读介质,所述指令在由处理电路系统执行时配置处理电路系统以执行包括以下内容的操作:在历元期间在神经核心处接收多个尖峰;针对多个尖峰中的每个递增尖峰踪迹存储设备中的值以产生接收到的尖峰的计数,尖峰踪迹存储设备包括在神经形态硬件的神经核心中;响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及使用尖峰踪迹修改神经核心的网络参数。

在示例47中,示例46的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将接收到的尖峰的计数按常数缩放。

在示例48中,示例47的主题包括,其中,所述常数是最小尖峰间间隔。

在示例49中,示例47-48的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

在示例50中,示例47-49的主题包括,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

在示例51中,示例50的主题包括,其中,通过以下来计算单个指数衰减:x[i]=expdecay(tau,tepoch,x[i-46]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-46]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

在示例52中,示例51的主题包括,其中,tepoch是二的幂。

在示例53中,示例46-52的主题包括,其中,操作包括:在第二历元期间接收单个尖峰;将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹;以及使用第二尖峰踪迹修改神经核心的网络参数。

在示例54中,示例53的主题包括,其中,响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹包括基于自从历元以来的尖峰到达应用指数衰减。

在示例55中,示例54的主题包括,其中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。

在示例56中,示例46-55的主题包括,其中,历元学习事件是历元的末尾。

在示例57中,示例46-56的主题包括,其中,尖峰踪迹存储设备是神经核心的寄存器。

在示例58中,示例46-57的主题包括,其中,使用尖峰踪迹修改神经核心的网络参数包括作为尖峰踪迹的函数修改突触变量状态。

示例59是一种用于可变历元尖峰序列滤波的系统,所述系统包括:用于在历元期间在神经核心处接收多个尖峰的构件;用于针对多个尖峰中的每个递增尖峰踪迹存储设备中的值以产生接收到的尖峰的计数的构件,尖峰踪迹存储设备包括在神经形态硬件的神经核心中;用于响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹的构件;以及用于使用尖峰踪迹修改神经核心的网络参数的构件。

在示例60中,示例59的主题包括,其中,用于使用接收到的尖峰的计数产生尖峰踪迹的构件包括用于将接收到的尖峰的计数按常数缩放的构件。

在示例61中,示例60的主题包括,其中,所述常数是最小尖峰间间隔。

在示例62中,示例60-61的主题包括,其中,用于使用接收到的尖峰的计数产生尖峰踪迹的构件包括用于将缩放的接收到的尖峰的计数乘以二的shift加一次幂的构件,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

在示例63中,示例60-62的主题包括,其中,用于使用接收到的尖峰的计数产生尖峰踪迹的构件包括用于将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹的构件。

在示例64中,示例63的主题包括,其中,通过以下来计算单个指数衰减:x[i]=expdecay(tau,tepoch,x[i-59]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-59]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

在示例65中,示例64的主题包括,其中,tepoch是二的幂。

在示例66中,示例59-65的主题包括,用于在第二历元期间接收单个尖峰的构件;用于将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中的构件;用于响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹的构件;以及用于使用第二尖峰踪迹修改神经核心的网络参数的构件。

在示例67中,示例66的主题包括,其中,用于响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹的构件包括用于基于自从历元以来的尖峰到达应用指数衰减的构件。

在示例68中,示例67的主题包括,其中,尖峰踪迹存储设备包括指示在给定的历元期间单个尖峰还是多个尖峰到达的比特,并且其中由所述比特来控制作为接收到的尖峰的计数或者自从历元以来的尖峰到达的两者之一的尖峰踪迹存储设备的指数衰减。

在示例69中,示例59-68的主题包括,其中,历元学习事件是历元的末尾。

在示例70中,示例59-69的主题包括,其中,尖峰踪迹存储设备是神经核心的寄存器。

在示例71中,示例59-70的主题包括,其中,用于使用尖峰踪迹修改神经核心的网络参数的构件包括用于作为尖峰踪迹的函数修改突触变量状态的构件。

示例72是包括指令的至少一个机器可读介质,所述指令在由机器执行时使得机器执行示例31-43的任何方法。所述指令在由处理电路系统执行时使得处理电路系统执行操作以实现示例1-71中的任一个示例。

示例73是一种装置,其包括用于实现示例1-71中的任一个示例的构件。

示例74是一种用于实现示例1-71中的任一个示例的系统。

示例75是一种用于实现示例1-71中的任一个示例的方法。

本申请提供了如下的技术方案:

1.一种用于可变历元尖峰序列滤波的系统,所述系统包括:

多个神经芯片,每个神经芯片包括多个神经核心,多个神经核心中的神经核心包括:

尖峰踪迹存储设备;

踪迹衰减建模器电路系统,其用于响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及

处理电路系统,其用于:

在历元学习事件对应于其的历元期间在神经核心处接收多个尖峰;

针对多个尖峰中的每个递增尖峰踪迹存储设备以产生接收到的尖峰的计数;以及

响应于历元学习事件的发生,使用尖峰踪迹修改神经核心的网络参数;以及

互连,其用于提供从神经芯片到彼此以及从神经芯片到在系统的外部的设备的通信。

2.如技术方案1所述的系统,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将接收到的尖峰的计数按常数缩放。

3.如技术方案2所述的系统,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

4.如技术方案3所述的系统,其中,通过以下来计算单个指数衰减:

x[i]=expdecay(tau,tepoch,x[i-1]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-1]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

5.如技术方案1所述的系统,其中,为了使用尖峰踪迹修改神经核心的网络参数,处理电路系统作为尖峰踪迹的函数修改突触变量状态。

6.如技术方案1所述的系统,其中,系统被包括在传感器设备中,并且其中互连将神经芯片连接到传感器。

7.如技术方案6所述的系统,其中,传感器是照相机、温度计、气压计、位置传感器、湿度传感器或麦克风中的至少一个。

8.如技术方案6所述的方法,其中,互连从神经核心向消费者设备提供分类数据。

其中,所述互连把分类数据从神经核心提供到消费者设备。

9.如技术方案8所述的方法,其中,消费者设备是用于经由网络与远程机器通信的网络接口。

10.一种用于可变历元尖峰序列滤波的神经核心,所述神经核心包括:

尖峰踪迹存储设备;

踪迹衰减建模器电路系统,其用于响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及

处理电路系统,其用于:

在历元学习事件对应于其的历元期间在神经核心处接收多个尖峰;

针对多个尖峰中的每个递增尖峰踪迹存储设备以产生接收到的尖峰的计数;以及

响应于历元学习事件的发生,使用尖峰踪迹修改神经核心的网络参数。

11.如技术方案10所述的神经核心,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将接收到的尖峰的计数按常数缩放。

12.如技术方案11所述的神经核心,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

13.如技术方案11所述的神经核心,其中,为了使用接收到的尖峰的计数产生尖峰踪迹,踪迹衰减建模器电路系统将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

14.如技术方案13所述的神经核心,其中,通过以下来计算单个指数衰减:

x[i]=expdecay(tau,tepoch,x[i-10]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-10]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

15.如技术方案10所述的神经核心,其中,处理电路系统被进一步用于:

在第二历元期间接收单个尖峰;

将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;

获得针对第二历元的第二历元学习事件;以及

使用第二尖峰踪迹修改神经核心的网络参数;并且

其中,踪迹衰减建模器电路系统被进一步用于响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹。

16.如技术方案15所述的神经核心,其中,为了响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹,踪迹衰减建模器电路系统基于自从历元以来的尖峰到达应用指数衰减。

17.如技术方案10所述的神经核心,其中,为了使用尖峰踪迹修改神经核心的网络参数,处理电路系统作为尖峰踪迹的函数修改突触变量状态。

18.包括用于可变历元尖峰序列滤波的指令的至少一个机器可读介质,所述指令在由处理电路系统执行时配置处理电路系统以执行包括以下内容的操作:

在历元期间在神经核心处接收多个尖峰;

针对多个尖峰中的每个递增尖峰踪迹存储设备中的值以产生接收到的尖峰的计数,尖峰踪迹存储设备包括在神经形态硬件的神经核心中;

响应于历元学习事件使用尖峰踪迹存储设备中的接收到的尖峰的计数产生尖峰踪迹;以及

使用尖峰踪迹修改神经核心的网络参数。

19.如技术方案18所述的至少一个机器可读介质,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将接收到的尖峰的计数按常数缩放。

20.如技术方案19所述的至少一个机器可读介质,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将缩放的接收到的尖峰的计数乘以二的shift加一次幂,其中shift是由尖峰踪迹存储设备的宽度减去最大缩放的接收到的尖峰的计数的宽度来定义的常数。

21.如技术方案19所述的至少一个机器可读介质,其中,使用接收到的尖峰的计数产生尖峰踪迹包括将单个指数衰减应用于先前的历元踪迹值以获得尖峰踪迹。

22.如技术方案21所述的至少一个机器可读介质,其中,通过以下来计算单个指数衰减:

x[i]=expdecay(tau,tepoch,x[i-18]-impulse)+impulse,其中,x[i]是尖峰踪迹,x[i-18]是先前的历元踪迹,impulse是缩放的接收到的尖峰的计数,tepoch是历元中的时间步长的数量,并且tau是常数。

23.如技术方案18所述的至少一个机器可读介质,其中,操作包括:

在第二历元期间接收单个尖峰;

将自从历元以来的尖峰到达存储在尖峰踪迹存储设备中;

响应于第二历元学习事件使用尖峰踪迹存储设备中的自从历元以来的尖峰到达产生第二尖峰踪迹;以及

使用第二尖峰踪迹修改神经核心的网络参数。

24.如技术方案23所述的至少一个机器可读介质,其中,响应于第二历元学习事件使用自从历元以来的尖峰到达产生第二尖峰踪迹包括基于自从历元以来的尖峰到达应用指数衰减。

25.如技术方案18所述的至少一个机器可读介质,其中,使用尖峰踪迹修改神经核心的网络参数包括作为尖峰踪迹的函数修改突触变量状态。

以上具体实施方式包括对形成具体实施方式的部分的附图的参考。附图通过图示的方式示出了可以被实施的具体实施例。这些实施例在本文中也被称作“示例”。这样的示例可以包括除了示出或描述的那些单元之外的单元。然而,本发明人还考虑了其中仅提供示出或描述的那些单元的示例。此外,本发明人还考虑了使用关于特定示例(或者其一个或多个方面)或者关于在本文中示出或描述的其他示例(或者其一个或多个方面)示出或描述的那些单元的任何组合或排列的示例(或者其一个或多个方面)。

在本文档中提到的所有出版物、专利和专利文档都通过引用以其全文被合并在本文中,如同通过引用单独地合并那样。在本文档和通过引用如此合并的那些文档之间不一致的使用的情况中,合并的(一个或多个)参考文档中的使用应当被视为对本文档的使用的补充;对于不可调和的不一致性,以本文档中的使用为准。

在本文档中,如在专利文档中常见的那样,使用术语“一”或“一个”以包括一个或多于一个,其独立于“至少一个”或者“一个或多个”的任何其他实例或使用。除非另有指示,否则在本文档中,术语“或者”被用来指代非排他性的或者,使得“a或者b”包括“a但是没有b”、“b但是没有a”以及“a和b”。在所附权利要求中,术语“包含”和“在其中”被用作相应的术语“包含”和“其中”的纯英语等同物。此外,在以下权利要求中,术语“包含”和“包含”是开放式的,即包括除了在权利要求中的此类术语之后列出的那些之外的元素的系统、设备、制品或过程仍然被视为落在该权利要求的范围内。此外,在以下权利要求中,术语“第一”、“第二”和“第三”等仅仅被用作标签,而不旨在对它们的对象施加数字要求。

以上描述旨在是说明性的而不是限制性的。例如,以上描述的示例(或者其一个或多个方面)可以与彼此组合地使用。其他实施例可以被使用,诸如可以由本领域普通技术人员在审核以上描述时使用。摘要用于允许读者快速地查明本技术公开的性质,并且以摘要将不会被用来解释或限制权利要求的范围或含义的理解来提交。此外,在以上具体实施方式中,可以将各种特征分组在一起以简化本公开。这不应当被解释成旨在未要求保护的公开的特征对于任何权利要求是必要的。相反,本发明的主题可以落在少于特定公开的实施例的所有特征内。因此,以下权利要求据此被合并到具体实施方式中,其中每个权利要求独立作为单独的实施例。应当参考所附权利要求连同这样的权利要求享有的等同物的全部范围来确定实施例的范围。

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