CN109844776B - 具有片上学习和随机时间步长控制的可编程神经元核心 - Google Patents
具有片上学习和随机时间步长控制的可编程神经元核心 Download PDFInfo
- Publication number
- CN109844776B CN109844776B CN201780059213.3A CN201780059213A CN109844776B CN 109844776 B CN109844776 B CN 109844776B CN 201780059213 A CN201780059213 A CN 201780059213A CN 109844776 B CN109844776 B CN 109844776B
- Authority
- CN
- China
- Prior art keywords
- value
- states
- learning
- weight
- neuromorphic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 210000002569 neuron Anatomy 0.000 title description 26
- 230000015654 memory Effects 0.000 claims abstract description 145
- 239000012528 membrane Substances 0.000 claims abstract description 88
- 230000004044 response Effects 0.000 claims abstract description 42
- 238000003860 storage Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 claims description 19
- 230000036279 refractory period Effects 0.000 claims description 17
- 230000001413 cellular effect Effects 0.000 claims description 8
- 230000003213 activating effect Effects 0.000 claims description 7
- 230000007774 longterm Effects 0.000 claims description 6
- 230000001629 suppression Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 description 32
- 238000012545 processing Methods 0.000 description 32
- 238000007667 floating Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 27
- 230000004913 activation Effects 0.000 description 22
- 238000013528 artificial neural network Methods 0.000 description 22
- 238000004422 calculation algorithm Methods 0.000 description 16
- 230000000875 corresponding effect Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 13
- 230000010354 integration Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 12
- 230000001242 postsynaptic effect Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000003518 presynaptic effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000005291 magnetic effect Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 210000004027 cell Anatomy 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000002401 inhibitory effect Effects 0.000 description 4
- 210000005215 presynaptic neuron Anatomy 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 210000000225 synapse Anatomy 0.000 description 4
- 230000000946 synaptic effect Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000002964 excitative effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000003826 tablet Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000000116 mitigating effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001953 sensory effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000036962 time dependent Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000036982 action potential Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000003169 central nervous system Anatomy 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003121 nonmonotonic effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013349 risk mitigation Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/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
- 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)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
一种作为神经形态系统的计算块的集成电路(IC),其包括:时间步长控制器,以激活时间步长更新信号,以用于实行一组神经形态状态的时间复用选择以进行更新。该IC包括:第一电路,响应于检测到针对所选组神经形态状态的时间步长更新信号来:响应于确定了所选组神经形态状态的第一膜电位超过阈值来生成传出数据信号,其中该传出数据信号包括标识所选组神经形态状态的标识符和存储器地址(其中存储器地址对应于与集成电路相关联的存储器块中的位置),并且响应于传出数据信号的生成,更新所选组神经形态状态的状态。
Description
本公开涉及现场神经形态计算,并且特别地涉及具有能够实时信号集成、时间步长控制和学习的计算块的系统。
背景技术
神经元组表示神经形态计算系统中的核心计算块。术语“神经形态”指代被设计成模拟神经系统中存在的神经生物学架构以部分地克服机器学习系统中的并行计算瓶颈的电子电路。这些系统被设计成处理感官数据(诸如图像和声音),并且以没有被具体编程到系统中的方式响应于数据中的改变。神经形态计算系统中的“神经元”是核心计算块的计算子块,并且包括有时被称为突触或突触存储器的相关联的存储器块。
附图说明
图1A是根据本公开的实施例的神经形态计算系统的框图。
图1B是根据本公开的实施例的图1A的神经形态计算系统的计算块的框图。
图2是图示了根据本公开的实施例的计算块的互连性的框图。
图3是根据本公开的实施例的图1B的计算块的一部分的功能框图。
图3A是图示了根据本公开的实施例的图3的计算块的信号激活路径的框图。
图3B是图示了根据本公开的实施例的图3的计算块的时间步长激活路径的框图。
图4是根据本公开的实施例的时间步长控制器的框图。
图5是根据本公开的实施例的一种写后读(RAW)危险减轻控制方法的流程图。
图6是根据本公开的实施例的图1B和3A的计算块的学习单元的框图。
图7A是图示了根据一个实施例的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。
图7B是图示了可以实行图1B和3的计算块的操作的处理器的微架构的框图。
图8图示了处理器的微架构的框图,该处理器包括用以实行图1B和3的计算块的至少一些操作的逻辑电路。
图9是根据一个实现方式的计算机系统的框图。
图10是根据另一实现方式的计算机系统的框图。
图11是根据一个实现方式的片上系统的框图。
图12图示了计算系统的框图的另一实现方式。
图13图示了计算系统的框图的另一实现方式。
具体实施方式
人工神经网络(ANN)是在生物神经网络(动物的中枢神经系统,特别是大脑)之后建模的处理设备的网络,其被用来估计或近似可以取决于通常未知的大量输入的功能。ANN可以分层组织。这些层可以包括许多互连节点,该互连节点包含激活功能,诸如以某种次序触发节点激活的逻辑。可以经由输入层向ANN呈现(例如,图像、声音等等的)模式,该输入层与一个或多个处理层(在本领域中被称为隐藏层)通信,其中实际处理经由例如包括连接权重的加权连接系统来完成。连接权重是根据学习逻辑定义了节点之间的连接的值,因为ANN开发了输入模式的标识。处理层可以链接到将结果输出到输出节点的输出层。因此,学习逻辑可以根据被应用于输入模式的先前的学习来修改连接的权重。在某种意义上,ANN可以通过示例学习,例如,基于该对象或声音与在前学习的已知对象或声音的相似性来学习识别对象或声音。
神经形态计算系统(在下文中为“系统”)按照由应用程序和工作负载需求所指示的那样来映射不同的ANN拓扑结构。ANN拓扑结构指代:ANN的节点被互连并且数据通过其流动的方式(例如,前馈神经网络、不同种类的径向基函数(RBF)网络等等)。为了实行到ANN拓扑结构的这种映射,系统努力调整驱动这些系统的参数,以便实现最佳的可能性能。这些参数指代影响神经元块内的算术计算的各种因素。然而,如果系统包含片上学习电路以加速训练过程(也被称为机器学习(在下文中为“学习”)),则在系统内实现最佳的可能性能变得更加困难。由于实行学习所需的逻辑的复杂性增加以及神经元参数与连接权重之间的相互作用,性能受到影响。可以通过使用(一种或多种)片上学习算法来实行学习以响应于传入数据信号而更新与计算子块相关联的权重,如将更详细解释的。将更新的权重往回存储到相关联的存储器块中。然后可以在ANN上将更新的权重传输到扇出连接的计算块,例如,作为神经元的本领域中已知的独立处理电路。
在各种实施例中,一些系统将训练过程卸载到片外训练算法和/或在驱动计算的参数和学习算法的不同变体方面限制计算子块的再配置性,以满足一小部分工作负载。工作负载指代在神经形态系统上运行的应用程序数据,诸如为计算机视觉而被处理的图像的集合。因为参数驱动计算子块的活动(如将更详细讨论的)并且学习算法的变体可以取决于这些参数,促进这些参数的再配置性和学习算法的变体来满足一大部分工作负载增加了训练过程的范围和有用性。此外,一些系统采用固定时间步长控制,其禁用了经常在生物神经网络中找到的实时脉冲整合(real-time spike integration),因此限制了这些系统的性能,因为不能实时实行学习。术语“时间步长”指代由某个数量的时钟周期定义的时间段。类似于生物系统中的动作电位,术语“脉冲”指代标识计算块的数据信号,并且为了简化讨论,在下文中将被称为“数据信号”或仅仅“信号”。
本公开引入了一种架构,在该架构中在多组神经形态状态(本文中为“状态”)之间共享计算块,其中每组神经形态状态与神经形态计算系统中的神经元相当。(回想本文中的神经元被称为计算子块,所以计算块实行多个神经元的操作,每个神经元由一组状态来表示。)在一个实施例中,这些神经形态状态是定义计算块的计算子块的参数,它们影响生成传出信号的定时和传入数据信号的整合,以及学习操作何时以及如何发生(根据学习算法,计算块正在为当前ANN执行)。这些参数可以包括例如诸如膜电位、计数器、控制位、脉冲阈值、脉冲速率等等的参数。计算块可以是例如集成电路核心或处理器。
在一个实施例中,计算块可以实行基于脉冲时间依赖可塑性(STDP)的学习。STDP是由突触前神经元与突触后神经元的脉冲之间的紧密时间相关所诱发的Hebbian学习的时间不对称形式。突触前神经元是一种将输出脉冲发送给通过连接权重进行加权的其扇出连接的神经元的神经元。突触后神经元是一种从其扇入连接的神经元(突触前神经元)接收脉冲和相关联的权重的神经元。如果突触前神经元比突触后神经元更早出现脉冲,则突触前脉冲诱发突触后神经元的脉冲活动的可能性较高。相反,突触前脉冲晚于突触后脉冲发生具有反因果关系,因为突触前脉冲不会促成突触后神经元的脉冲活动。因此,可能是突触后神经元的激发原因的输入在未来甚至更有可能做出贡献,而不是突触后脉冲的原因的输入不太可能在未来做出贡献。注意这些相关构成了学习过程,该过程一直持续到初始连接集合的子集保持不变,而通过更新连接权重将全部其他的影响降至零为止。因为在短暂时期内发生许多神经元的输入时神经元会产生输出脉冲,所以剩余的输入的子集是倾向于在时间上相关的那些。此外,因为在输出之前发生的输入被加强,所以提供相关的最早指示的输入最终可能成为对神经元的最终输入。
所公开的计算块还可以包括可以被改变的参数的本地存储装置,以提供在更新状态和实行学习的功能中定义了优化空间的一定水平的可编程性。换言之,优化空间可以由被计算块用来更新神经形态状态并且通过更新连接权重来实行学习的函数的参数构成,如将详细讨论的。体现所公开的计算块的系统可以提供对优化空间的搜索,该优化空间针对改善了性能度量的操作点(例如,基于网络的参数)。这样的性能度量可以包括ANN的分类准确度、收敛速率、每操作消耗的能量、效率等等。
在一个实施例中,所公开的计算块包括:用以存储多组状态的寄存器组。计算块可以进一步实现时间步长控制器,其促进实时信号整合,而例如无需存储或缓冲数据信号。计算块还可以通过将数据路径划分成信号激活数据路径的电路和时间步长激活数据路径的电路来帮助减少寄存器组(RS)访问的功耗。时间步长控制器可以包括:随机方面,例如,以提供信号生成在所公开的系统的计算块上的伪随机概率分布的方式生成时间步长更新信号。以这种方式,计算块可以在可编程时间步长窗口内伪随机地生成传出数据信号,并且实时地整合传入数据信号,由此改善性能并且引入随机存储器更新操作,这改善了训练的普遍化和灵活性。
在一个实施例中,计算块的时间步长控制器可以激活时间步长更新信号。时间步长更新信号可以被用于时间复用地选择一组状态以进行更新,并且为该组状态生成传出数据信号。在一个示例中,时间步长控制器随机地激活时间更新信号,如将讨论的。可以将该组状态存储在计算块的寄存器组中。
计算块可以进一步包括:覆盖时间步长激活数据路径的第一电路。响应于检测到所选组状态的时间步长更新信号,第一电路可以响应于确定所选组状态的第一膜电位超过阈值而生成传出数据信号,并且响应于输出数据信号的生成,更新所选组状态的至少一些状态。膜电位是在全部先前的时间步长期间收集的全部其加权数据信号的累积值(u),第一电路可以例如取决于输入数据值(诸如像素、声音帧或正在由系统处理的其他数据值)的量在时间步长更新时段期间更新该累积值。计算块的膜电位与生物细胞中观察到的膜电压相当,这指示细胞内部与外部部分之间的电位差。膜电位可以被用于确定给定组状态是否将生成可能的输出信号。输出数据信号可以包括:标识符和存储器地址,该存储器地址与所选组状态相关联以指示其扇出连接的计算块。
传出数据信号的存储器地址可以指向相关联存储器块中的位置,其中为所选组状态存储权重值。如先前讨论的,该权重值是用于ANN的连接权重,其可以被用于学习。然后可以将该权重值发出给ANN中对应的扇出连接,并且可以将其加到被存储在寄存器组中的膜电位。此外,可以在生成传出数据信号时重置作为所选组状态的状态的部分的各种计数器。例如,这些计数器可以确保扩展针对所选组状态的传出数据信号生成的定时和实行学习的定时,如将更详细解释的。
在一个实施例中,计算块可以进一步包括:覆盖信号激活数据路径的第二电路。响应于时间步长更新信号为低(例如,未检测到)并且接收到对应于第二组状态的传入数据信号,该第二电路可以将传入数据信号的权重值加到第二组状态的第二膜电位,以生成更新的第二膜电位。可以将更新的第二膜电位存储在寄存器组中,从而替换第二膜电位。以这种方式,可以在不生成传出数据信号的时间期间更新与传入数据信号相关联的状态。该定时可以避免同时更新和访问任何给定组状态的膜电位的潜在冲突。
在一个实施例中,计算块可以进一步包括:学习单元,以结合对第二膜电位的更新来对第二组状态实行学习操作。如本文中提到的学习操作是一种在存储器中更新和替换一组神经形态状态的权重值的过程。学习单元可以部分地通过标识对应于与传入数据信号相关联的标识符的第二组状态,并且更新传入数据信号的权重值来实行该学习操作,以生成要被提供给路由器的更新的权重值,以用于存储在处于与第二组状态相关联的第二存储器地址处的相关联的存储器块中。因此,学习操作是执行通过ANN应用的STDP学习算法的计算块的部分。
图1A是根据本公开的实施例的神经形态计算系统100(在下文中为系统100)的框图。系统100可以包括多个计算子系统104,其中出于示例性目的,所描绘的系统100仅包括九个计算子系统。每个计算子系统104可以进一步包括:计算块106(例如,其可以是核心或处理器)、耦合到计算块106的存储器块108、以及耦合到计算块106和存储器块108二者的路由器110。路由器110也可以耦合到通信网络总线112,该通信网络总线112可以与其他计算块通信,例如,使得在存储器块108中更新的权重可以被发送到扇出连接的计算块。扇出计算块是根据目前的ANN拓扑结构,计算块的权重要被发送到的那些计算块。根据实施例,计算块106包括多组状态107,并且存储器块108包括均与一组状态相关联的多行存储器位置(在本领域中也被称为突触)。
图1B是根据本公开的实施例的图1A的系统100的计算块106的框图。计算块可以包括路由器到计算块接口118、信号激活数据路径120、时间步长激活数据路径160和计算块到路由器接口178。计算块可以进一步包括:参数存储器132、包括单独的寄存器组A 134和寄存器组B 136的寄存器组133、以及时间步长控制器140。在一个实施例中,信号激活数据路径120包括:地址生成器124、包括符号扩展能力的信号积分器118以及学习单元130。时间步长激活数据路径160可以包括:地址生成器164和包括符号扩展能力的信号发生器168。
在一个实施例中,寄存器组124至少与在入口行(entry line)一样深,因为计算块106中存在多状态(例如,神经元)同。此外,通过将寄存器组133拆分成寄存器组A 134和寄存器组B 136,寄存器组设计使功耗最小化,因为在信号整合和学习操作期间不访问被存储在寄存器组B 136中的状态,如将讨论的。
路由器到计算块接口118可以包括:用以接收不同类型的输入数据和地址的端口,其可以包括例如:分组类型(packet type)、存储器行(在存储器块108中)、一组状态的标识符(ID)、核心地址和传入权重。计算块到路由器接口178可以包括:用于传出数据和地址的对应端口。更具体地,封装类型可以指代一种类型的信号事件,诸如例如,信号整合、学习、时间步长控制等等。存储器行可以指代与计算块106相关联的存储器块108中的行。例如,可以将一组状态的存储器地址映射到存储器行。该组状态的ID可以位于传入和传出数据信号内,计算块可以使用该ID来标识到特定的一组状态的传入和传出业务,以用于更新寄存器组133内的该组状态的目的。核心地址可以是存储器块108的系统存储器中的位置,以用于多核心计算系统中的路由目的。
传入权重可以是与被存储在传入数据信号的存储器行处并且将被用于更新状态和实行学习的一组状态相关联的值。在更新状态时,计算块可以将传入权重加到该组状态的膜电位,以更新膜电位。在实行学习时,学习单元可以在生成被往回存储到存储器行中的更新的权重值时作为输入来使用传入权重,从而替换该组状态的权重。
在一个实施例中,信号激活数据路径120可以包括:用于在接收到传入数据信号时更新一组状态,并且用于响应于(由时间步长控制器140生成的)时间步长更新信号为低(例如,未启用)来实行与该组状态有关的学习的电路。地址生成器124可以标识寄存器组中用于存储该组状态的地址,该组状态由传入数据信号中的ID标识。信号积分器128可以实行传入权重与传入数据信号中标识的对应组状态的膜电位的整合,如将参考图3、3A解释的。
学习单元130也可以使用传入权重来实行学习操作,该学习操作生成与该组状态相关联的更新权重,并且将更新的权重往回存储到存储器块108中。然后可以在随后的数据信号生成期间,将该更新的权重发送到扇出连接的计算块,例如,以根据被映射的ANN的扇出连接来更新其他组状态。学习单元可以位于计算块106内的芯片上,并且可以利用STDP规则的不同变体来实行,这取决于被存储在参数存储器132内的可再配置参数,。将参考图6更详细讨论学习单元130的操作。参数存储器还可以为信号激活数据路径和计算块的时间步长激活数据路径的算术计算部分提供可再配置参数,如将参考图3、3A和3B更详细讨论的。
在实施例中,时间步长激活数据路径160可以包括:用于响应于时间步长控制器140激活时间步长更新信号而生成传出数据信号的电路。寄存器组中存储的一组状态的时间步长更新信号可以是选择性的。为了生成传出数据信号,信号发生器168可以对寄存器组133中当前正被访问的一组状态实行一系列操作。该系列操作可导致来更新该组状态中的一些或全部状态,包括更新该组状态的膜电位。然后,地址生成器164可以确定该组状态的存储器地址,并且将该存储器地址映射到存储器块108中的存储器行,其中该存储器行和该组状态的ID是传出数据信号的部分。
图2是图示了根据本公开的实施例的计算块106的互连性的框图。在一个实施例中,在一系列计算块内,存在具有相关联的第一存储器块208A的第一计算块206A、具有相关联的第二存储器块B 208B的第二计算块206B、以及第三计算块206C。如图示的,第一计算块206A通过第一存储器块208A连接到第二计算块206B,并且第三计算块206C通过第二存储器块206B连接到第二计算块206B。
在脉冲时间依赖可塑性(STDP)算法的实现方式中,突触前脉冲(例如,预存储信号)在突触后脉冲事件之前几毫秒到达导致了突触的长期增强(LTP),其中连接得到加强。(如在本文中以上指出的,“突触”指代存储器块的一部分,并且“突触的”指代计算块相对于其连接的计算块的位置。例如,计算块206B充当计算块206C的突触前块,而计算块206B充当计算块206A的突触后块。)。此外,突触前脉冲到达发生在突触后脉冲之后导致了相同突触的长期抑制(LTD),其中连接被削弱。
进一步参考图2,例如,如果在第二计算块208B在时间t0+2处要生成传出数据信号之前,第一计算块208A在时间零(t0)处生成传出数据信号,则有很高的可能性第一计算块208A将使第二计算块208B例如也许在t0+1处生成传出数据信号。此操作序列被称为LTP。相反,如果在第二计算块206B生成传出数据信号之前,第三计算块206C生成传出数据信号,则第二计算块206B在引起第三计算块206C生成其传出数据信号中不起任何作用。此操作序列被称为LTD。作为突触前动作电位和突触后动作电位的相对定时的函数,存储器块中的改变称为STDP函数或学习窗口。STDP函数随着生成信号的相对定时的快速改变表明了时间编码方案在毫秒时间尺度上的可能性。时间编码指代存储用以在脉冲时间中传达的更多信息。例如,输入可以通过精确的脉冲时间,而不是表示该输入所需的脉冲数量来定义。在这样的情况下,STDP对于实现学习算法更有用。因此,将数据信号标记为“LTP”或“LTD”可以在如何处理学习中发挥作用,如将参考图6更详细讨论的。
图3是根据本公开的实施例的图1B的计算块106的一部分306的功能框图。计算块106的部分306可以覆盖信号激活数据路径120和时间步长激活数据路径160二者。在一个实施例中,当时间步长控制器140为下一组状态激活时间步长更新信号时,多路复用器310可以选择行进至时间步长t+1的下一组状态。将参考图4详细讨论时间步长控制器140在选择要更新的下一组状态时的操作。在激活时间步长更新信号的情况下,时间步长激活数据路径160可以实行一系列操作以更新由时间步长更新信号选择的一组状态,并且生成传出数据信号,如将参考图3B详细解释的。
然而,当时间步长更新信号为低(例如,数字零并因此未检测到)时,多路复用器310可以代替地检索寄存器组133中的与传入数据信号的标识符相关联的一组状态的地址。在一个实施例中,在接收到传入数据信号时,信号激活数据路径120可以实行一系列操作以将传入数据信号的权重值与该组状态的膜电位整合,如将参考图3B讨论的。信号激活路径120也可以通过根据一个或多个STDP学习算法更新存储器块108中的相关联的权重来实行学习。将参考图3A和6更详细讨论传入数据信号和学习操作的整合。
附加的参考图3A,信号激活路径120可以包括:学习查找表303;以及寄存器组A134,该寄存器组A 134可以存储膜电位314、不应期计数器318、学习计数器322和学习控制状态326。学习控制状态326可以是指定了学习单元130要采用哪种学习算法的位的集合。学习计数器322可以是位的集合,其提供权重更新值的时间复用选择,以从一组神经形态状态的传入权重值进行加(或减),如将更详细解释的。信号激活路径120可以进一步包括:符号扩展器338、加法器340和学习单元130。
在一个实施例中,符号扩展器338可以选择性地改变传入权重(W)的符号,这取决于ANN仅使用正权重还是使用正权重和负权重两者。在一个实施例中,学习控制状态326可以是可编程的。然后,加法器340可以将符号扩展权重(w)加到与传入数据信号相关联的该组状态的膜电位(u)314,以生成更新的膜电位。然后,这种更新的膜电位可以替换寄存器组A 134中的膜电位。传入权重(W)还可以被发送到学习单元130,被加到来自学习查找表303的权重更新值(∆w)以生成更新的权重(Wupdated)。将更新的权重发送到路由器110以被存储在存储器块108与该组状态相关联的一行处。将参考图6更详细讨论学习单元130的操作。
在一个实施例中,如果不应期计数器318是非零的,则将不会发生传入权重的整合。在生成传出数据信号时,该不应期计数器318被重置成最大计数器值(例如,最大不应期),如图3B中图示的,并且在经过每个时间步长时递减,直到达到零为止。不应期计数器318在其间递减的时间提供了多个时间步长的延迟,在这些时间步长之间,该组状态经历信号生成,直到可以再次实行信号整合为止。最大不应期可以是可编程的,并且因此可以调节该延迟时段。
附加地参考图3B,时间步长激活数据路径160可以包括时间步长控制器140、寄存器组A 134,寄存器组B 136和信号积分器128。寄存器组A 134可以存储膜电位314、不应期计数器318、学习计数器322和学习控制状态326。寄存器组B 136可以存储传入数据值330、信号速率334和偏置值336。在一个实施例中,信号积分器128可以包括:比较器344、乘法器346、第二加法器348、第二多路复用器350、第二比较器354和第三比较器358。
如讨论的,当时间步长更新信号被激活时,时间步长激活数据路径160可以检索由时间步长控制器140选择的一组状态(图4)。如果膜电位大于信号阈值345,如由比较器344确定的,那么时间步长激活数据路径160可以生成传出数据信号(“信号生成”),并且因此更新所选组状态的各种状态。传出数据信号可以包括所选组状态的标识符和其权重以其存储在存储器块108中的存储器地址。
此外,响应于信号生成,可以利用可编程的最大不应期来重置不应期计数器,如参考图3A讨论的。附加地,响应于信号生成,学习计数器322可以被重置成可编程的最大计数器值。该最大计数器值(对于学习计数器)可以被编程为参数,该参数驱动一组状态的学习操作之间的延迟如何影响该组状态的学习。例如,学习计数器322的值可以被用在选择权重更新值中,如参考图6的学习操作所讨论的。
然而,如果所选组状态的膜电位314小于或等于信号阈值345,则如下来更新所选组状态的膜电位。乘法器346可以将膜电位乘以泄漏因子(其在泄漏因子模式下小于一),以生成更新的膜电位。(泄漏因子指代一个值,其可以被用来以增量修改膜电位,就像通过“泄漏”一样。)然后,更新的膜电位可以替换寄存器组A 134中的膜电位。在非泄漏因子模式下,先导因子可以是一(“1”),并且因此不对更新的膜电位进行附加更新。
作为另外的实施例,第二比较器354可以将所选组状态的输入数据值330与伪随机生成的输入信号阈值进行比较。响应于输入数据值330大于伪随机生成的输入信号阈值,第二加法器348可以在利用寄存器组A 134中的第一更新的膜电位替换第一膜电位之前,将输入数据值330加到第一更新的膜电位。
作为仍另外的实施例,第三比较器358可以将偏置值336与伪随机生成的偏置信号阈值进行比较,这两者都是可编程的值。偏置值336是被用来以某种方式修正(例如,“偏置”)泄漏因子的值,并且因此影响膜电位314被如何修改。例如,响应于偏置值大于伪随机生成的输入偏置阈值,第二加法器348可以在利用第一更新的膜电位替换第一膜电位之前,将偏置值加到第一更新的膜电位。在一个实施例中,偏置值336可以是固定的,并且伪随机生成的偏置信号阈值可以是可编程的,以指示要加偏置值336的频率。在第二比较器354和第三比较器358信号二者分别要加输入数据值330和偏置值336的情况下,第三加法器360可以首先将输入数据值和偏置值加在一起,然后再将它们的组合加到更新的膜电位。在一个实施例中,信号阈值345、先导因子、偏置值336、输入信号阈值和/或偏置信号阈值中的任何值也可以是被存储在参数存储器132中的可编程参数。
图4是时间步长控制器440的框图,诸如图1B的计算块106的时间步长控制器140。在一个实施例中,时间步长控制器440可以被设计成例如以伪随机选择的时间和一组状态的选择次序下伪随机地生成时间步长更新信号。一组状态的选择可以因此是伪随机时间复用的。该随机化可以帮助减少跨多个计算块的不同组状态之间的信号生成相关的机会,这里将其称为“核心”,因为时间步长控制器440可以适用于任何组互连的处理器核心。通过使用可编程的伪随机数发生器,可以实现随机化。
更具体地,时间步长控制器440可以包括:线性反馈寄存器(LFSR)444、耦合在第二核心的CA 450A与第三核心的CA 450B之间的元胞自动机(CA)450,以及耦合到CA 450的CA寄存器。时间步长控制器440可以进一步包括:逻辑电路,以完成对要选择的下一组状态的选择以及该选择的定时。在本上下文中的元胞自动机(CA)是伪随机数发生器(元胞自动机)的多维拼凑之一,其中每个CA处于根据状态更新规则部分地取决于相邻元胞自动机的状态的多个可用状态中的不同状态。
在一个实施例中,LFSR 444在由多个时钟周期定义的时间步长处伪随机地生成第一值。因为LSFR 444在时钟周期方面具有由期望长度的时间步长所设置的时段并且以固定的次序走遍伪随机模式,LSFR 444可以增加针对同一组状态的跨核心的信号生成的相关。使用CA 450可以通过与LSFR 444紧密整合并且菊链式连接到其他核心的CA来改善这种相关。这种菊链设计可以形成可以跨核心路由的长回路,使得每个核心具有由其相应的CA生成的不同随机值。
因此,CA 450可以伪随机地生成与由第二CA和第三CA生成的值不同的第二值,并且可以在除了具体时间步长下之外的时候这样做。可以在时间步长的开始处捕获由CA 450生成的第二值并且将其存储在CA寄存器454中。然后,XOR门460可以将第一值与第二值的状态组合以确定更新值,该更新值可以规定要在下一个时间步长中选择的一组状态的。
至于时间步长更新的定时,第二XOR门460B还可以将第一值与第二值组合,以生成更新值。比较器464可以将更新值的排序部分与可编程扫描值进行比较,并且响应于排序部分匹配可编程扫描值来激活时间步长更新信号。在一个实施例中,时间步长更新信号选择了具有由更新值的地址部分所提供的地址的一组状态,其中该地址对应于寄存器组133内用于存储该组状态的位置。
在一个实施例中,逻辑电路包括:第二比较器472,以将(由LFSR 444生成的)第一值的状态与种子值进行比较,并且当两者相等时,生成CA寄存器更新值。例如,种子值可以是伪随机生成的位序列。该CA寄存器更新值可以通过AND门474来触发信号,该AND门474将CA寄存器更新值与时钟组合,这进而触发了CA寄存器454以接受来自CA 450的更新的第二值。该时钟门控可以确保CA寄存器454不改变其状态,直到LFSR 444循环通过针对被存储在CA寄存器454中的值的多个伪随机的状态序列为止。在一个实施例中,核心可以实现菊链能力的“规则30”,其中对于时间t+1,CA 450的随机位由下式给出:
CA[n](t+1)= CA[n-1](t)⊕(CA[n](t)|CA[n+1](t))。等式(1)
图5是根据本公开的实施例的写后读(RAW)危险减轻控制的方法500的流程图。方法500可以由诸如图1B和3的计算块106之类的计算块实行。在一个实施例中,计算块106是支持多线程(执行两个或多个并行的操作或线程集)的核心,并且可以以各种各样的方式这样做,该方式包括时间分片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的每个线程提供逻辑核心)或其组合(例如,诸如在Intel® 超线程技术中,时间分片取指和解码以及此后的同时多线程)。
用于实时信号整合的随机时间步长控制可能在计算块106的多线程流水线中创建潜在的写后读(RAW)危险,其中连续信号可能试图访问一组状态的旧状态而不是仍驻留在流水线缓冲区中的更新状态。所提出的计算块106可以通过实现一个或多个数据转发机制来结合针对RAW危险的危险减轻控制。在图5中,顶部三行图示了来自缓冲区阶段的数据转发,而底部三行图示了来自回写阶段的数据转发。
在一个实施例中,当连续生成信号时会创建RAW危险,其中同一地址可能尝试访问旧状态而不是仍驻留在流水线缓冲区中的更新状态。这在图5的顶部三行中图示,其中来自信号激活数据路径120和时间步长激活数据路径120中的算术逻辑单元(ALU)块的更新状态可以在被回写到寄存器组133中之前进行缓冲。当缓冲发生时,禁用与正在被处理的状态相对应的寄存器组(RF)读取,直到在访问相同地址的最后一条指令的结尾处发生RF回写为止。等待将更新的状态回写到寄存器组直到解决了RAW危险之后为止,使得通常在连续RF写入活动上浪费的功耗最小化。这样,进入到同一神经元的连续脉冲被转换成单个信号整合,从而使得寄存器组访问的数量最小化。
在另一实施例中,当正被处理的信号被两个时钟周期分开时,创建了第二RAW危险。在这种情境中,数据转发可在第一与第三周期之间发生,例如,从回写阶段到ALU块。再一次地,禁用正在被处理的状态的寄存器组读取,直到在访问相同地址的最后一条指令的结尾处发生RF回写为止,这具有与连续访问情境类似的功率节约。
图6是根据本公开的实施例的诸如图1B和3A的计算块106的学习单元130之类的学习单元630的框图。在一个实施例中,学习单元630可以包括:包含LTD权重更新的第一查找表603A、包含LTP权重更新603B的第二查找表603B、查找表626(用于学习控制状态326)、用以在两个查找表603A或603B之间进行选择的第一多路复用器634、权重定标器636、符号扩展器638、第二多路复用器640、加法器674、权重界限检查器678、第三多路复用器680。在接收到传入数据信号时,数据信号包括权重(W)(图1B)。学习单元630可以实行以下操作以生成更新的权重(w),其可以被发送到存储器块108以被存储在与在传入数据信号中标识的一组状态相关联的位置中。
在一个实施例中,学习计数器322(被存储在寄存器组A 134中,如图3A图示的)可以在选择权重更新值时充当查找表603A和603B内的指针。传入数据信号可以指示消息类型(无论是LTP还是LTD),并且因此经由第一多路复用器634从第一查找表603A(如果传入消息类型是LTD)或者从第二查找表603B(如果传入消息类型是LTP)进行选择。权重定标器636可以将权重更新值缩放(例如,2倍、4倍、8倍或另一倍数)以获得针对某些实现方式的较大的权重更新值。符号扩展器638然后可以反转缩放的权重更新值的符号,使缩放的权重更新值为负,在某些情况下作为用以递减传入权重(W)的选项来提供。
然后,学习单元630可以从查找表626(其可以被存储在寄存器组A 134中)检索学习控制状态326,以用在触发第二多路复用器640来从缩放的权重更新值或符号扩展的或负的缩放的权重更新值中进行选择。例如,如果学习控制状态是“00”,则没有学习,并且将传入权重传到输出。如果学习控制状态是“01”,则传入数据信号是LTD,并且选择负值(例如,符号扩展的权重更新值)以便递减传入权重(W)。如果学习控制状态326是“10”,则传入数据信号是LTP,并且选择非符号扩展的权重更新值以便递增传入权重(W)。
在一个实施例中,如果学习控制状态326是“11”,则学习单元630可以访问通过网络接收的调制位,其可以对应于例如限制性玻尔兹曼机器(RBM)、抑制性STDP、奖励极性(reward polarity)或某种不同的ANN映射中的事件驱动的对比散度(CD)阶段。事件驱动的CD是用于脉冲RBM的特殊学习规则,它基于从目标玻尔兹曼分布采样的神经采样,并且在两个交替的阶段中使用增强和抑制的对称STDP。因此,在一个示例中,“11”学习控制状态可以引起对权重更新值的符号扩展版本或非符号扩展版本的选择,这取决于事件驱动的CD学习算法的阶段,如由调制位规定的。
进一步参考图6,加法器674然后可以将加权更新值(△W)的符号(或非符号)扩展版本加到传入数据信号的传入权重(W),以生成该组状态的更新的权重值(W+△W)。然后,权重界限检查器678可以使用上端处的最大权重值(Wmax)和下端处的最小权重值(Wmin)进行检查,以确保更新的权重值不会超过这些界限。然后,第三多路复用器680可以取决于更新的权重值的符号来传递正权重或负权重。然后可以将由此产生的更新的权重(w)传输到路由器110,以被发送到存储器块108以供存储,如先前讨论的那样。
在一个实施例中,可编程权重更新曲线可以被存储在参数存储器132中。学习单元130可以解析权重更新曲线以生成权重更新曲线的LTP部分和LTP部分,以被保存到参数存储器。学习单元630可以通过凭借对权重更新曲线的幅值和/或持续时间操纵来控制LTD对比LTP学习的比率,来对权重更新曲线进行编程。学习单元130可以分别基于权重更新曲线的LTP部分和LTP部分来进一步生成可选择的权重更新值(被存储在更新表603A和603B中)。
如图示的,学习单元630与计算块紧密集成,以支持各种类型的STDP学习,诸如对称、非对称、奖励调制、抑制性STDP等等。对称SDTP可以包括:前后(pre-before-post)信号间隔和后前(post-before-pre)信号间隔,这两种间隔引起类似的权重更新。非对称SDTP可以包括:前后信号生成间隔,其与后前信号生成间隔相比时对突触权重具有相反的影响。相反,典型的前后信号生成引起对应于权重增加的LTP,并且后前信号生成引起对应于权重值递减的LTD。奖励调制STDP经常涉及调制了基础STDP规则的奖励值。例如,奖励信号可以在训练阶段期间匹配输出神经元的目标信号生成速率。无论何时对应于期望输出的计算块生成针对某组状态的输出信号,扇入权重得以增强。类似地,当其他输出状态组生成传出数据信号时,负奖励可以抑制与其他输出状态组相关联的权重。抑制性STDP可以是对称的非单调学习规则,以用于在兴奋抑制性(E-I)脉冲神经网络中学习抑制性连接。抑制性神经元有助于在E-I网络中实现网络均衡方面的平衡。
图7A是图示了用以实行图1B和3的计算块106的操作的处理器700的微架构的框图。具体地,处理器700描绘了根据本公开的至少一个实施例的有序架构核心和要被包括在处理器中的寄存器重命名逻辑、无序发布/执行逻辑。处理器700可以实现图1B和3的计算块106的实施例。
处理器700包括耦合到执行引擎单元750的前端单元730,并且两者都耦合到存储器单元770。处理器700可以包括:精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替换的核心类型。作为又另一选项,处理器700可以包括:专用核心,诸如例如网络或通信核心、压缩引擎、图形核心等等。在一个实施例中,处理器700可以是多核心处理器或可以是多处理器系统的部分。
前端单元730包括:耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元734耦合到指令转换后备缓冲区(TLB)736,其耦合到指令取指单元738,该指令获取单元738耦合到解码单元740。解码单元740(也被称为解码器)可以解码指令,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号从原始指令解码,或以其他方式反映原始指令或者源于原始指令。可以使用各种不同的机制来实现解码器740。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元734进一步耦合到存储器单元770。解码单元740耦合到执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括:重命名/分配器单元752,其耦合到回退单元754和一个或多个调度器单元756的集合。(一个或多个)调度器单元756表示任何数量的不同调度器,包括保留站(RS)、中央指令窗口等。(一个或多个)调度器单元756耦合到(一个或多个)物理寄存器组(一个或多个)单元758。(一个或多个)物理寄存器组单元758中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型,诸如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点等、状态(例如,作为下一条要执行的指令的地址的指令指针)等。(一个或多个)物理寄存器组(一个或多个)单元758与回退单元754重叠,以说明可以实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲区和(一个或多个)回退寄存器组;使用(一个或多个)未来文件、(一个或多个)历史缓冲区和(一个或多个)回退寄存器组;使用寄存器映射和寄存器池等)。
通常,架构寄存器从处理器外面或从程序员的视角是可见的。寄存器不限于任何已知的特定类型的电路。各种不同类型的寄存器是合适的,只要它们能够存储和提供如本文中所述的数据即可。合适的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配的物理寄存器的组合等。回退单元754和(一个或多个)物理寄存器组(一个或多个)单元758耦合到(一个或多个)执行集群760。(一个或多个)执行集群760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以实行各种操作(例如,移位、加法、减法、乘法)并且对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)进行操作。
虽然一些实施例可以包括专用于具体功能或功能集的许多执行单元,但是其他实施例可以仅包括一个执行单元或全部实行全部功能的多个执行单元。(一个或多个)调度器单元756、(一个或多个)物理寄存器组(一个或多个)单元758和(一个或多个)执行集群760被示为可能是复数,因为某些实施例为某些类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,其均具有它们自己的调度器单元、(一个或多个)物理寄存器组单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现了某些实施例,其中仅该流水线的执行集群具有(一个或多个)存储器访问单元964)。还应该理解的是,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序的发布/执行而其余的是有序的。
存储器访问单元764的集合耦合到存储器单元770,其可以包括数据预取器780、数据TLB单元772、数据高速缓存单元(DCU)774和2级(L2)高速缓存单元776,仅举几个例子。在一些实施例中,DCU 774也被称为第一级数据高速缓存(L1高速缓存)。DCU 774可以处理多个未解决的高速缓存未命中并且继续为传入的存储和加载提供服务。它还支持维护高速缓存一致性。数据TLB单元772是被用来通过映射虚拟和物理地址空间来改善虚拟地址转换速度的高速缓存。在一个示例性实施例中,存储器访问单元764可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元770中的数据TLB单元772。L2高速缓存单元776可以耦合到一个或多个其他级别的高速缓存并且最终耦合到主存储器。
在一个实施例中,数据预取器780通过自动预测程序将要消耗哪些数据来推测性地将数据加载/预取到DCU 774。预取可以指代在处理器实际要求数据之前,将被存储在存储器层级结构(例如,较低级别的高速缓存或存储器)的一个存储器位置(例如,方位)中的数据传送到更靠近(例如,产生更低访问时延)处理器的较高级别的存储器位置。更具体地,预取可以指代在处理器发布被返回的具体数据的要求之前,将数据从较低级别的高速缓存/存储器之一提早检索到数据高速缓存和/或预取缓冲区。
处理器700可以支持一个或多个指令集(例如,x86指令集(具有已添加较新版本的一些扩展);英国赫特福德郡金斯兰利的Imagination Technologies公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON))。
应该理解的是,核心可以支持多线程(执行两个或多个并行操作或线程集),并且可以以各种各样的方式这样做,包括时间分片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的每个线程提供逻辑核心)或其组合(例如,诸如在Intel® 超线程技术中,时间分片取指和解码以及此后的同时多线程)。
虽然寄存器重命名是在无序执行的上下文中进行描述的,但是应该理解的是,可以在有序架构中使用寄存器重命名。虽然图示的处理器的实施例还包括单独的指令和数据高速缓存单元和共享的L2高速缓存单元,但是替换的实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器之外的外部高速缓存的组合。替换地,全部的高速缓存都可以在核心和/或处理器之外。注意的是,指令高速缓存单元734、数据高速缓存单元774和L2高速缓存单元776将通常不会实现在本公开中描述的过程,因为通常这些高速缓存单元使用没有展现出页面局部性的行为的管芯上存储器。
图7B是图示了根据本公开的一些实施例的由图7A的处理器700实现的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图7B中的实线框图示了有序流水线,而虚线框图示了寄存器重命名、无序发布/执行流水线。在图7B中,处理器流水线700包括:取指阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也被称为分派或发布)阶段712、寄存器读取/存储器读取阶段714、执行阶段716、回写/存储器写入阶段718、异常处理阶段722和提交阶段724。在一些实施例中,阶段702-724的次序可以与图示的不同,并且不限于图7B中示出的具体次序。
图8图示了根据一个实施例的用于处理器800的微架构的框图,该处理器800包括可以被用来实行图1B和图3的计算块106的操作的逻辑电路。在一些实施例中,可以实现根据一个实施例的指令以对具有字节、字、双字、四字等的大小以及数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端801是处理器800的部分,其取指要被执行的指令并且准备它们以之后在处理器流水线中使用。可以在处理器800中实现页面添加和内容拷贝的实施例。
前端801可以包括若干个单元。在一个实施例中,指令预取器816从存储器中取指指令并且将它们馈送到指令解码器818,该指令解码器818进而对它们进行解码或解释。例如,在一个实施例中,解码器将接收的指令解码成机器可以执行的叫做“微指令”或“微操作”(也叫做micro-op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析成操作码和对应的数据和控制字段,微架构使用它们来实行根据一个实施例的操作。在一个实施例中,跟踪高速缓存830获取解码的微指令并且将它们组装成程序有序序列或uop队列834中的跟踪以供执行。当跟踪高速缓存830遇到复杂指令时,微代码ROM(或RAM)832提供完成操作所需的uop。
一些指令被转换成单个micro-op,而其他指令需要若干个micro-op来完成整个操作。在一个实施例中,如果需要四个以上的micro-op来完成指令,则解码器818访问微代码ROM 832以执行指令。对于一个实施例,可以将指令解码成少量micro-op以在指令解码器818处进行处理。在另一实施例中,如果需要许多micro-op来完成操作,则可以将指令存储在在微代码ROM 832内。跟踪高速缓存830指代入口点可编程逻辑阵列(PLA),以确定正确的微指令指针,其用于读取微代码序列以根据一个实施例完成来自微代码ROM 832的一个或多个指令。在微代码ROM 832完成指令的micro-op排序之后,机器的前端801恢复从跟踪高速缓存830中取指micro-op。
无序执行引擎803是为执行准备指令之处。无序执行逻辑具有许多缓冲区,以在指令流载入流水线并且得以计划执行时平滑和重新排序指令流以优化性能。分配器逻辑分配每个uop需要的机器缓冲区和资源以便执行。寄存器重命名逻辑将逻辑寄存器重命名到寄存器组中的条目上。分配器还为指令调度器(存储器调度器、快速调度器802、慢速/通用浮点调度器804和简单浮点调度器806)前面的两个微指令队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目。uop调度器802、804、806基于它们的从属输入寄存器操作数源的准备情况和uop需要完成它们的操作的执行资源的可用性来确定uop何时准备好执行。一个实施例的快速调度器802可以在每一半主时钟周期上进行调度,而其他调度器只能够每个主处理器时钟周期调度一次。调度器调解分派端口以调度uop以供执行。
寄存器组808、810位于执行块811中的调度器802、804、806与执行单元812、814、816、818、820、822、824之间。存在单独的寄存器组808、810,分别用于整数和浮点操作。一个实施例的每个寄存器组808、810还包括:旁路网络,该旁路网络可以将刚刚完成的尚未被写入到寄存器组中的结果绕过或转发到新的从属uop。整数寄存器组808和浮点寄存器组810也能够与其他的传送数据。对于一个实施例,整数寄存器组808被拆分成两个单独的寄存器组,一个寄存器组用于低阶32位数据,并且第二寄存器组用于高阶32位数据。一个实施例的浮点寄存器组810具有128位宽的条目,因为浮点指令通常具有从64到128位宽的操作数。
执行块811包含:其中实际执行指令的执行单元812、814、816、818、820、822、824。该部分包括:寄存器组808、810,它们存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器800由多个执行单元组成,该执行单元为:地址生成单元(AGU)812、AGU814、快速ALU 816、快速ALU 818、慢速ALU 810、浮点ALU 812、浮点移动单元814。对于一个实施例,浮点执行块812、814执行浮点、MMX、SIMD和SSL或其他操作。一个实施例的浮点ALU812包括:64位乘64位浮点除法器,以执行除法、平方根和余数micro-op。对于本公开的实施例,可以利用浮点硬件来处理涉及浮点值的指令。
在一个实施例中,ALU操作去往高速ALU执行单元816、818。一个实施例的快速ALU816、818可以以半个时钟周期的有效时延执行快速操作。对于一个实施例,大多数复杂的整数操作去往慢速ALU 820,因为慢速ALU 820包括用于长时延类型的操作的整数执行硬件,诸如乘法器、移位、标志逻辑和分支处理。存储器加载/存储操作由AGUs 822、824执行。对于一个实施例,在对64位数据操作数实行整数操作的上下文中描述整数ALU 816、818、820。在替换的实施例中,ALU 816、818、820可以被实现成支持各种各样的数据位,包括16、32、128、256等。类似地,浮点单元822、824可以被实现成支持一系列具有各种宽度的位的操作数。对于一个实施例,浮点单元822、824可以结合SIMD和多媒体指令对128位宽的压缩数据操作数进行操作。
在一个实施例中,uop调度器802、804、806在上层加载(parent load)已完成执行之前分派从属操作。当在处理器800中推测性地调度和执行uop时,处理器800还包括用以处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则流水线中可能存在给调度器留下暂时不正确的数据的运行中的从属操作。重放机制跟踪并且重新执行使用不正确数据的指令。仅需要重放从属操作,并且允许独立操作完成。处理器的一个实施例的调度器和重放机制还被设计成捕获用于文本串比较操作的指令序列。
术语“寄存器”可以指代被用作用以标识操作数的指令的部分的板上处理器存储位置。换言之,寄存器可以是可(根据程序员的视角)从处理器外部使用的寄存器。然而,实施例的寄存器不应在意思上限于特定类型的电路。而是,实施例的寄存器能够存储和提供数据,并且实行本文中描述的功能。本文中描述的寄存器可以使用任何数量的不同技术、由处理器内的电路来实现,诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器组还包含:针对压缩数据的八个多媒体SIMD寄存器。
对于本文中的讨论,寄存器被理解成是被设计成保持压缩数据的数据寄存器,诸如在利用来自加利福尼亚州圣克拉拉的英特尔公司的MMX技术启用的微处理器中的64位宽MMXTM寄存器(在一些实例中也被称为‘mm’寄存器)。这些MMX寄存器(以整数和浮点两种形式可用的)可以与伴随SIMD和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或以上(一般被称为“SSEx”)技术有关的128位宽XMM寄存器也可以被用来保持这样的压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据时,寄存器不需要在两种数据类型之间进行区分。在一个实施例中,整数和浮点被包含在相同的寄存器组或不同的寄存器组中。此外,在一个实施例中,浮点和整数数据可以存储在不同的寄存器或相同的寄存器中。
可以以许多不同的系统类型来实现实施例。现在参考图9,示出的是根据实现方式的多处理器系统900的框图。如图9中示出的,多处理器系统900是点对点互连系统,并且包括经由点对点互连950耦合的第一处理器970和第二处理器980。如图9中示出的,处理器970和980中的每一个可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心974a和974b以及处理器核心984a和984b),尽管处理器中可存在潜在地更多核心。
虽然被示出有两个处理器970、980,但是要理解的是,本公开的范围不受此限制。在其他实现方式中,在给定处理器中可以存在一个或多个附加处理器。
处理器970和980被示出为分别包括集成存储器控制器单元972和982。处理器970还包括作为其总线控制器单元的部分的点对点(P-P)接口976和988;类似地,第二处理器980包括P-P接口986和988。处理器970、980可以使用P-P接口电路978,988经由点对点(P-P)接口950交换信息。如图9中示出的,IMC 972和982将处理器耦合到相应的存储器,即存储器932和存储器934,它们可以是本地附接到相应处理器的主存储器的部分。
处理器970、980可以均使用点对点接口电路976、994、986、998而经由各个P-P接口952、954与芯片组990交换信息。芯片组990还可以经由高性能图形接口939与高性能图形电路938交换信息。
共享高速缓存(未示出)可以被包括在处理器中或两个处理器外部,但经由P-P互连与处理器连接,使得如果将处理器置于低功耗模式,则一个或两个处理器的本地高速缓存信息可以被存储在共享高速缓存中。在将条目分配给共享高速缓存时,还可以跨一个或多个高速缓存控制器在共享高速缓存中创建页面局部性。
芯片组990可以经由接口996耦合到第一总线916。在一个实施例中,第一总线916可以是外围组件互连(PCI)总线,或诸如PCI快速总线或互连总线之类的总线,尽管本公开的范围不受此限制。
现在参考图10,示出的是根据本公开的实施例的第三系统1000的框图。图9和10中的相同元件具有相同的附图标记,并且图10中的某些方面已从图9中省略,以避免使图10的其他方面晦涩难懂。
图10图示了处理器1070、1080可以分别包括集成存储器和I/O控制逻辑(“CL”)1072和1092。对于至少一个实施例,CL 1072、1082可以包括诸如本文中描述的集成存储器控制器单元。此外,CL 1072、1092还可以包括I/O控制逻辑。图10图示了存储器1032、1034耦合到CL 1072、1092,并且I/O设备1014也耦合到控制逻辑1072、1092。遗留I/O设备1015耦合到芯片组1090。
图11是示例性片上系统(SoC)1100,其可以包括核心1102中的一个或多个。用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持设备和各种其他电子设备的本领域已知的其他系统设计和配置也是合适的。通常,能够合并如本文中公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是合适的。
在图11的示例性SoC 1100内,虚线框是更高级的SoC上的特征。(一个或多个)互联单元1102可以耦合到:应用处理器1117,其包括一组一个或多个核心1102A-N和(一个或多个)共享高速缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;媒体处理器1120的集合或一个或多个媒体处理器1120,其可以包括集成图形逻辑1108、用于提供静止和/或视频相机功能的图像处理器1124、用于提供硬件音频加速的音频处理器1126以及用于提供视频编码/解码加速的视频处理器1128;静态随机存取存储器(SRAM)单元1130;直接存储器存取(DMA)单元1132;以及用于耦合到一个或多个外部显示器的显示单元1140。
接下来转向图12,描绘了根据本公开的实施例的片上系统(SoC)设计的实施例。作为例证性示例,SoC 1200被包括在用户设备(UE)中。在一个实施例中,UE指代要被终端用户用来通信的任何设备,诸如手持电话、智能电话、平板设备、超薄笔记本、具有宽带适配器的笔记本或任何其他类似的通信设备。UE可以连接到基站或节点,该基站或节点本质上可以对应于GSM网络中的移动站(MS)。可以在SoC 1200中实现页面添加和内容拷贝的实施例。
此处,SoC 1200包括2个核心——1206和1207。与以上讨论类似,核心1206和1207可以符合指令集架构,诸如具有Intel®架构核心™的处理器、超微半导体公司(AMD)处理器、基于MlPS的处理器、基于ARM的处理器设计或其客户及其被许可人或采用者。核心1206和1207耦合到高速缓存控制1208,该高速缓存控制1208与总线接口单元1209和L2高速缓存1210相关联以与系统1200的其他部分通信。互连1211包括诸如以上讨论的IOSF、AMBA或其他互连之类的片上互连,其可以实现所描述的公开的一个或多个方面。
在一个实施例中,SDRAM控制器1240可以经由高速缓存125连接到互连1211。互连1211向其他组件提供通信信道,诸如用以与SIM卡对接的订户识别模块(SIM)1230、用以保持引导代码以供核心1206和1207执行来初始化和引导SoC 1200的引导ROM 1235、用以与外部存储器(例如,DRAM 1260)对接的SDRAM控制器1240、用以与非易失性存储器(例如,闪存1265)对接的闪存控制器1245、用以与外围设备对接的外围控制1250(例如,串行外围接口)、视频编解码器1220和用以显示和接收输入(例如,触摸启用输入)的视频接口1225、用以实行图形相关计算的GPU 1215等。这些接口中的任何接口可以包含本文中描述的实施例的各方面。
此外,该系统图示了用于通信的外围设备,诸如蓝牙®模块1270、3G调制解调器1275、GPS 1280和Wi-Fi®1285。注意如上文陈述的,UE包括用于通信的无线电。因此,可能不全部包括这些外围通信模块。然而,在UE中,应该包括用于外部通信的某种形式的无线电。
图13图示了以示例形式为计算系统1300的机器的图解表示,在该计算系统1300内可以执行一组指令以使该机器实行本文中讨论的方法中的任何一个或多个。在替换的实施例中,机器可以连接(例如,联网)到LAN、内联网、外联网或互连网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端设备的资格进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web电器、服务器,网络路由器、交换机或网桥、或能够执行指定了该机器要采取的动作的一组指令(顺序或以其它方式)的任何机器。另外,虽然仅图示了单个机器,但是术语“机器”还应被视为包括单独或联合地执行一组(或多组)指令以实行本文中讨论的方法中的任何一个或多个方法的任何机器的集合。可以在计算系统1300中实现页面添加和内容拷贝的实施例。
计算系统1300包括:处理设备1302、主存储器1304(例如,闪速存储器、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1306(例如,闪速存储器、静态随机存取存储器(SRAM)等)和数据存储设备1318,它们经由总线1308彼此通信。在一个实施例中,总线1308可以由图1的系统总线170-1和/或存储器总线170-2构成,并且共享总线1308的存储器和外围设备可以是或通过系统代理114工作,类似于如参考图1所讨论的。
处理设备1302表示一个或多个通用处理设备,诸如微处理器、中央处理单元等等。更特别地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1302还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1302可以包括一个或多个处理器核心。处理设备1302被配置成执行处理逻辑1326以用于实行本文中讨论的操作。
在一个实施例中,处理设备1302可以是图1的计算系统100的部分。替换地,计算系统1300可以包括如本文中描述的其他组件。应该理解的是,核心可以支持多线程(执行两个或更多个并行操作或线程集),并且可以以各种各样的方式这样做,该方式包括时间分片多线程、同时多线程(其中单个物理核心为物理核心同时多线程的每个线程提供逻辑核心)或其组合(例如,诸如在Intel® 超线程技术中,时间分片取指和解码以及此后的同时多线程)。
计算系统1300可以进一步包括可通信地耦合到网络1319的网络接口设备1318。计算系统1300还可以包括:视频显示设备1310(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1310(例如,键盘)、光标控制设备1314(例如,鼠标)、信号发生设备1320(例如,扬声器)或其他外围设备。此外,计算系统1300可以包括:图形处理单元1322、视频处理单元1328和音频处理单元1332。在另一实施例中,计算系统1300可以包括:芯片组(未示出),该芯片组指代被设计成与处理设备1302一起工作并且控制处理设备1302与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是主板上的芯片的集合,该主板将处理设备1302链接到非常高速的设备,诸如主存储器1304和图形控制器,以及将处理设备1302链接到外围设备的低速外围总线,诸如USB、PCI或ISA总线。
数据存储设备1318可以包括:计算机可读存储介质1324,其上存储有体现了本文中描述的功能的方法中的任何一个或多个方法的软件1326。软件1326还可以完全或至少部分地作为指令1326驻留在主存储器1304内,和/或在由计算系统1300执行期间,作为处理逻辑驻留在处理设备1302内;主存储器1304和处理设备1302也构成计算机可读存储介质。
计算机可读存储介质1324还可以被用来存储利用处理设备1302的指令1326,诸如关于图1和2描述的,和/或包含了调用以上应用程序的方法的软件库。虽然计算机可读存储介质1324在示例实施例中被示为是单个介质,但是术语“计算机可读存储介质”应该被视为包括存储一个或多个指令的集合的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被视为包括能够存储、编码或携带指令的集合以供机器执行并且使机器实行本实施例的方法中的任何一个或多个方法的任何介质。术语“计算机可读存储介质”应相应地被视为包括但不限于固态存储器,以及光学和磁性介质。
以下示例涉及另外的实施例。
示例1是一种集成电路,其包括:1)用以激活时间步长更新信号的时间步长控制器,以用于实行一组神经形态状态的时间复用选择以进行更新;以及2)第一电路,响应于检测到针对所选组神经形态状态的时间步长更新信号来:a)响应于确定了所选组神经形态状态的第一膜电位超过阈值来生成传出数据信号,其中传出数据信号包括:标识所选组神经形态状态的标识符和存储器地址,其中存储器地址对应于与集成电路相关联的存储器块中的位置;并且b)响应于传出数据信号的生成,更新所选组神经形态状态的状态。
在示例2中,示例1的集成电路,其中时间步长控制器要随机激活时间步长更新信号,该集成电路进一步包括:第二电路,响应于接收到对应于第二组神经形态状态的传入数据信号来:a)将传入数据信号的权重值加到第二组神经形态状态的第二膜电位,以生成更新的第二膜电位;并且b)将更新的第二膜电位往回存储到寄存器组。
在示例3中,示例2的集成电路,进一步包括:1)寄存器组,用以存储所选组神经形态状态和第二组神经形态状态,其中第二电路进一步要:a)标识在寄存器组内的存储第二组神经形态状态的寄存器,第二组神经形态状态对应于从传入数据信号检索的第二标识符;并且b)从寄存器组检索第二膜电位,其中寄存器组包括:第一寄存器组和第二寄存器组,该第一寄存器组用以存储由第二电路访问的第二神经形态状态的组的子集,该第二寄存器组用以存储也由第一电路访问的第二神经形态状态的组的第二子集。
在示例4中,示例2的集成电路,其中第二电路进一步包括:学习单元,以通过更新第二组神经形态状态的权重值来实行学习操作,以生成更新的权重值,并且其中第二电路进一步要通过路由器传输更新的权重值,该更新的权重值要被存储在存储器块中。
在示例5中,示例4的集成电路,其中第二神经形态状态的组的状态通过学习计数器反映,并且第一电路进一步要:a)在生成第二组神经形态状态的输出数据信号时,将学习计数器设置成最大计数器值;b)响应于每个时间步长更新信号递减学习计数器;并且c)其中学习计数器进一步要触发被加到权重值或从权重值减去的权重更新值的选择,以生成更新的权重值。
在示例6中,示例2的集成电路,其中第二神经形态状态的组的状态通过不应期计数器反映,并且第一电路进一步要:a)在生成第二组神经形态状态的输出数据信号时,将不应期计数器设置成最大计数器值;以及b)响应于每个时间步长更新信号递减不应期计数器;其中第一电路要阻止随后传出数据信号的生成,并且第二电路要阻止加上随后传入数据信号的权重值,直到不应期计数器达到零为止。
在示例7中,示例1的集成电路,其中第一电路进一步要:a)将所选组神经形态状态的第一膜电位乘以泄漏因子,以生成第一更新的膜电位;并且b)响应于第一膜电位小于阈值,利用第一更新的膜电位替换第一膜电位。
在示例8中,示例7的集成电路,其中第一电路进一步要:a)将所选组神经形态状态的输入数据值与伪随机生成的输入信号阈值进行比较;并且b)响应于输入数据值大于伪随机生成的输入信号阈值,在利用第一更新的膜电位替换第一膜电位之前,将输入数据值加到第一更新的膜电位。
在示例9中,示例7的集成电路,其中第一电路进一步要:a)将所选组神经形态状态的偏置值与伪随机生成的输入偏置阈值进行比较;并且b)响应于偏置值大于伪随机生成的输入偏置阈值,在利用第一更新的膜电位替换第一膜电位之前,将偏置值加到第一更新的膜电位。
各种实施例可以具有上文描述的结构特征的不同组合。例如,上文描述的计算系统的全部可选特征也可以关于本文中描述的方法或过程来实现,并且可以在一个或多个实施例中的任何地方使用示例中的细节。
示例10是一种系统,其包括:1)存储器块;2)计算块;以及3)耦合到存储器块和计算块的路由器;其中计算块包括:3)用以激活时间步长更新信号的时间步长控制器,以用于实行一组神经形态状态的时间复用选择以进行更新;4)第一电路,响应于检测到用于所选组神经形态状态的时间步长更新信号来:a)响应于确定了所选组神经形态状态的第一膜电位超过阈值来生成输出数据信号,其中输出数据信号包括标识所选组神经形态状态的标识符和存储器地址,其中存储器地址对应于存储器块中的位置;并且b)响应于传出数据信号的生成,更新所选组神经形态状态的状态;以及5)学习单元,响应于没有检测到时间步长更新信号并且接收到传入数据信号,通过以下方式来实行学习操作:a)标识对应于从传入数据信号中检索的标识符的第二组神经形态状态;并且b)更新传入数据信号的权重值,以生成要被提供给路由器的更新的权重值,以用于存储在存储器块的第二存储器地址处。
在示例11中,示例10的系统,进一步包括:1)寄存器组,用以存储所选组神经形态状态和第二组神经形态状态,其中计算块进一步包括:2)第二电路,响应于接收到传入数据信号来:a)标识在寄存器组内的用于第二组神经形态状态的寄存器;b)从寄存器中检索用于第二组神经形态状态的第二膜电位;c)将传入数据信号的权重值加到第二组神经形态状态的第二膜电位,以生成更新的第二膜电位,并且d)将更新的第二膜电位往回存储到寄存器组。
在示例12中,示例11的系统,其中寄存器组包括:第一寄存器组,以存储由第二电路访问的第二神经形态状态的组的子集;以及第二寄存器组,以存储也由第一电路访问的第二神经形态状态的组的第二子集。
在示例13中,示例11的系统,其中第二神经形态状态的组的状态通过1)学习计数器反映,并且第一电路进一步要:a)在生成第二组神经形态状态的输出数据信号时,将学习计数器设置成最大计数器值;b)响应于每个时间步长更新信号递减学习计数器;并且c)其中学习计数器进一步要触发权重更新值的选择以进行加到权重值或从权重值减去中的一个,以生成更新的权重值。
在示例14中,示例10的系统,其中第一电路进一步要:a)将所选组神经形态状态的第一膜电位乘以泄漏因子,以生成更新的第一膜电位;并且b)响应于膜电位小于阈值,利用更新的第一膜电位替换第一膜电位。
各种实施例可以具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的全部可选特征也可以关于本文中描述的系统来实现,并且可以在一个或多个实施例中的任何地方使用示例中的细节。
示例15是一种包括1)多个核心的系统,其中2)该多个核心中的第一核心包括:3)寄存器组,以存储多组神经形态状态;以及3)时间步长控制器,其包括:4)线性反馈移位寄存器(LFSR),以在由多个时钟周期定义的时间步长下伪随机地生成第一值;以及5)元胞自动机(CA),其耦合到多个核心中的第二核心的第二CA和第三核心的第三CA,其中CA要:a)伪随机地生成与由第二CA和第三CA生成的值不同的第二值;b)将第二值存储到被耦合到CA的CA寄存器中;以及6)逻辑电路,以将第一值与第二值进行组合以生成更新值,并且使用更新值来确定以什么时间步长,并且针对多组神经形态状态的哪个组神经形态状态来激活时间步长更新信号。
在示例16中,示例15的系统,其中逻辑电路包括:XOR门,以将第一值与第二值进行组合。
在示例17中,示例15的系统,其中逻辑电路进一步要:a)将更新值的排序部分与可编程扫描值进行比较,并且b)响应于排序部分匹配可编程扫描值,激活时间步长更新信号,该时间步长更新信号要选择具有由更新值的地址部分提供的地址的一组神经形态状态,其中该地址对应于寄存器组内的用于存储该组神经形态状态的位置。
在示例18中,示例17的系统,其中逻辑电路包括:由伪随机位控制的CA寄存器的时钟门控,以确保LFSR通过针对被存储在CA寄存器中的第二值的多个可用伪随机状态来行进。
各种实施例可以具有上文描述的结构特征的不同组合。例如,上文描述的处理器和方法的全部可选特征也可以关于本文中描述的系统来实现,并且可以在一个或多个实施例中的任何地方使用示例中的细节。
示例19是一种集成电路,其包括1)用于更新多组神经形态状态的核心,该核心包括:2)寄存器组,以存储多组神经形态状态;以及3)耦合到寄存器组的学习单元,并且响应于接收到传入数据信号来实行学习操作,其包括:a)对应于从传入数据信号检索的标识符,标识多组神经形态状态中的一组神经形态状态;b)检索对应于被存储在针对该组神经形态状态的寄存器组中的学习计数器值的权重更新值,其中权重更新值也基于传入学习消息类型;c)取决于学习控制位的集合的的状态,选择性地实行对权重更新值的符号扩展,以生成符号扩展的权重更新值;并且d)将符号扩展的权重更新值加到输入数据信号的权重值,以生成针对该组神经形态状态的更新权重值。
在示例20中,示例19的集成电路,其中传入学习消息类型包括:长期抑制(LTD)或长期增强(LTP)中的一个,并且其中学习控制位的集合的状态包括下述各项中的一个:a)符号扩展的更新权重值的消除;b)响应于LTP传入学习消息,将权重更新值保留为正值;c)响应于LTD传入学习消息,使权重更新值为负值;或者d)根据在将核心经由路由器通信地耦合到的网络上接收的多个调制位来选择权重更新值的正值或负值中的一个。
在示例21中,示例20的集成电路,进一步包括1)可编程参数存储器,其中存储了权重更新曲线,该权重更新曲线包括权重更新曲线的LTD部分和LTP部分,并且学习单元进一步来:a)操纵权重更新曲线以控制LTD对比LTP学习的比率;b)基于权重更新曲线的LTD部分和LTP部分来生成可选择的权重更新值。
在示例22中,示例19的集成电路,其中学习单元进一步要根据可编程最大权重和可编程最小权重来对符号扩展的权重更新值实行最大和最小边界检查的集合。
在示例23中,示例19的集成电路,其中学习单元进一步要在选择性地实行符号扩展之前,将权重标度应用于权重更新值,以生成更大的权重更新值。
在示例24中,示例19的集成电路,其中核心进一步包括:时间步长控制器,以激活时间步长更新信号,该时间步长更新信号实行多组神经形态状态中的一组神经形态状态的时间复用选择,并且学习单元要在没有检测到时间步长更新信号时实行学习操作。
虽然已经关于有限数量的实施例描述了本公开,但是本领域技术人员将从中领会到许多修改和变化。所附权利要求意图覆盖落入本公开的真实精神和范围内的全部这样的修改和变化。
在本文中的描述中,阐述了众多具体的细节,诸如具体类型的处理器和系统配置、具体硬件结构、具体架构和微架构细节、具体寄存器配置、具体指令类型、具体系统组件、具体测量/高度、具体处理器流水线阶段和操作等的示例,以便提供对本公开的透彻理解。然而,对于本领域技术人员将显而易见的是,不必采用这些具体细节来实践本公开。在其他实例中,公知的组件或方法(诸如具体和替换的处理器架构、针对所描述算法的具体逻辑电路/代码、具体的固件代码、具体的互连操作、具体的逻辑配置、具体的制造技术和材料、具体的编译器实现方式、以代码具体表达的算法、具体的掉电和门控技术/逻辑,以及计算机系统的其它具体操作细节)尚未被详细描述,以避免不必要地使本公开晦涩难懂。
关于确定具体集成电路中(诸如计算平台或微处理器中)的基于扇区的高速缓存的高速缓存线路中的数据的有效性来描述实施例。实施例还可以可应用于其他类型的集成电路和可编程逻辑设备。例如,所公开的实施例不限于台式计算机系统或便携式计算机,诸如Intel®UltrabooksTM计算机。并且还可以被用在其他设备中,该其他设备诸如手持设备、平板设备、其他薄型笔记本、片上系统(SoC)设备和嵌入式应用。手持设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用通常包括:微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可以实行下面教导的功能和操作的任何其他系统。描述了该系统可以是任何种类的计算机或嵌入式系统。所公开的实施例可以特别被用于低端设备,比如可穿戴设备(例如,手表)、电子植入物、感官和控制基础设施设备、控制器、监督控制和数据获取(SCADA)系统等等。此外,本文中描述的装置、方法和系统并不限于物理计算设备,而且还可以涉及用于节能和效率的软件优化。如将在以下描述中变得显而易见的,本文中描述的方法、装置和系统的实施例(无论是关于硬件、固件、软件还是其组合)对于与性能考虑相平衡的“绿色技术”的未来是至关重要的。
尽管本文中的实施例是关于处理器来描述的,但是其他实施例也可适用于其他类型的集成电路和逻辑设备。本公开的实施例的类似技术和教导可以被应用于可以受益于较高的流水线吞吐量和改善的性能的其他类型的电路或半导体设备。本公开的实施例的教导可适用于实行数据操纵的任何处理器或机器。然而,本公开并不限于实行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以被应用于其中实行数据操纵或管理的任何处理器和机器。此外,本文中的描述提供了示例,并且附图示出了出于说明的目的的各种示例。然而,不应该以限制意义来解释这些示例,因为它们仅仅意图提供本公开的实施例的示例,而不是提供本公开的实施例的全部可能的实现方式的详尽列表。
尽管以上示例在执行单元和逻辑电路的上下文中描述了指令处理和分发,但是本公开的其他实施例可以借助于被存储在机器可读有形介质上的数据或指令来实现,该数据或指令在由机器实行时使该机器实行与本公开的至少一个实施例一致的功能。在一个实施例中,以机器可执行指令来体现与本公开的实施例相关联的功能。该指令可以被用来使得利用指令编程的通用或专用处理器来实行本公开的步骤。本公开的实施例可以被提供为可以包括具有存储于其上的指令的机器或计算机可读介质的计算机程序产品或软件,该指令可以被用来对计算机(或其他电子设备)进行编程以实行根据本公开的实施例的一个或多个操作。替换地,本公开的实施例的操作可以由包含用于实行操作的固定功能逻辑的具体硬件组件来实行,或者由被编程的计算机组件和固定功能的硬件组件的任何组合来实行。
被用来编程逻辑以实行本公开的实施例的指令可以被存储在系统中的存储器内,该存储器诸如DRAM、高速缓存、闪速存储器或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质进行分发。因此,机器可读介质可以包括:用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但是并不限于软盘、光盘、只读紧凑盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或被用于经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储装置。因此,计算机可读介质包括:适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
设计可以经历从创建到模拟到制造的各种阶段。表示设计的数据可以用多种方式来表示该设计。首先,如在模拟中有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。附加地,在设计过程的某些阶段处,可以产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段处达到表示硬件模型中的各种设备的物理布局的数据级别。在使用传统半导体制造技术的情况下,表示硬件模型的数据可以是指定了在针对被用来生产集成电路的掩模的不同掩模层上存在或不存在各种特征的数据。在设计的任何表示中,数据可以以机器可读介质的任何形式进行存储。存储器或磁或光存储装置(诸如光碟)可以是机器可读介质,以存储经由被调制或以其他方式生成来传输这样的信息的光波或电波来传输的信息。当传输了指示或携带代码或设计的电载波时,就实行电信号的拷贝、缓冲或重传输的范围而言,制作新的拷贝。因此,通信提供者或网络提供者可以将体现本公开的实施例的技术的制品(诸如被编码到载波中的信息)至少暂时性地存储在有形的机器可读介质上。
如在本文中使用的模块指代硬件、软件和/或固件的任何组合。作为示例,模块包括:硬件,诸如微控制器,该硬件与用以存储被适配成由微控制器执行的代码的非暂时性介质相关联。因此,在一个实施例中,对模块的引用指代硬件,其被具体配置成识别和/或执行要被保持在非暂时性介质上的代码。此外,在另一实施例中,模块的使用指代包括代码的非暂时性介质,其专门被适配成由微控制器执行以实行预先确定的操作。并且如可以推断的,在又另一实施例中,术语模块(在该示例中)可以指代微控制器和非暂时性介质的组合。通常被例证为单独的模块边界通常会变化并且可能地会重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时可能保留一些独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器之类的硬件或者诸如可编程逻辑设备之类的其他硬件。
在一个实施例中,短语“被配置成”的使用指代布置、放在一起、制造、提供销售、导入和/或设计装置、硬件、逻辑或元件以实行指定或确定的任务。在该示例中,如果没在操作的装置或其元件被设计、耦合和/或互连以实行所述指定任务,则其仍“被配置成”实行指定任务。作为纯粹的例证性示例,逻辑门在操作期间可以提供0或1。但是,“被配置成”向时钟提供启用信号的逻辑门并不包括可以提供1或0的每个可能的逻辑门。代替地,逻辑门是以某种方式耦合的、在操作期间1或0输出要启用时钟的一个逻辑门。再次注意的是,术语“被配置成”的使用不要求操作,而是专注于装置、硬件和/或元件的潜在状态,其中在潜在状态中,装置、硬件和/或元件被设计成在装置、硬件和/或元件操作时实行特定任务。
此外,在一个实施例中,短语“用以”、“能够/能够来”或“可操作以”的使用指代以这样的方式设计的一些装置、逻辑,硬件和/或元件使得能够以指定的方式使用该装置、逻辑、硬件和/或元件。注意如上文的那样,在一个实施例中,“用以”、“能够来”或“可操作以”的使用指代装置、逻辑、硬件和/或元件的潜在状态,其中装置、逻辑、硬件和/或元件没在操作但是以使得能够以指定方式使用装置的这样的方式进行设计。
如本文中使用的,一个值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。通常,逻辑电平、逻辑值或逻辑的值的使用也被称为1和0,它们仅仅表示二进制逻辑状态。例如,1表示高逻辑电平,并且0表示低逻辑电平。在一个实施例中,诸如晶体管或闪存单元之类的存储单元可能够保持单个逻辑的值或多个逻辑的值。但是,已经使用了计算机系统中的值的其他表示。例如,十进制数字十也可以被表示为二进制值1010和十六进制字母A。因此,一个值包括能够被保持在计算机系统中的信息的任何表示。
此外,状态可以由值或值的一部分来表示。作为示例,第一值(诸如逻辑一)可以表示默认或初始状态,而第二值(诸如逻辑零)可以表示非默认状态。此外,在一个实施例中,术语重置和设置分别指代默认和更新的值或状态。例如,默认值可能包括高逻辑值(即,重置),而更新的值可能包括低逻辑值(即,设置)。注意的是,可以利用值的任何组合来表示任何数量的状态。
以上阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上、可由处理元件执行的指令或代码来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或传输)以机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂时性机器可访问介质包括:随机存取存储器(RAM),诸如静态RAM(SRAM)或动态RAM(DRAM);ROM;磁性或光学存储介质;闪速存储器设备;电存储设备;光存储设备;声学存储设备;用于保持从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收到的信息的其他形式的存储设备;等等,这些存储设备要与从其接收信息的非暂时性介质区别开。
被用来对逻辑进行编程以实行本公开的实施例的指令可以被存储在系统中的存储器内,该存储器诸如DRAM、高速缓存、闪速存储器或其他存储装置。此外,指令可以经由网络或借助于其他计算机可读介质进行分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读形式存储或传输信息的任何机制,但是不限于软盘、光盘、只读紧凑盘存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或用于经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)在互联网上传输信息的有形机器可读存储装置。因此,计算机可读介质包括适合于以机器(例如,计算机)可读形式存储或传输电子指令或信息的任何类型的有形机器可读介质。
遍及本说明书对“一个实施例”或“实施例”的参考意味着结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在遍及本说明书的各种位置中,短语“在一个实施例中”或“在实施例中”的出现不一定全部指代同一实施例。此外,特定的特征、结构或特性可以在一个或多个实施例中以任何合适的方式进行组合。
在前述说明书中,已经关于具体示例性实施例给出了详细描述。然而,明显的是,在不偏离如在所附权利要求中阐述的本公开的更宽泛的精神和范围的情况下,可以对其做出各种修改和改变。因此,说明书和附图应以例证性意义而非限制性意义来考虑。此外,实施例的前述使用和其他示例性语言不一定指代同一实施例或同一示例,而是可以指代不同且独特的实施例,以及可能是同一实施例。
在对计算机存储器内的数据位进行操作的算法和符号方面呈现了具体实施方式的一些部分。这些算法描述和表示是数据处理领域的技术人员用来将他们工作的实质最有效地传达给本领域其他技术人员的手段。算法此处且通常被认为是导致期望结果的自洽的操作序列。操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采用能够被存储、传递、组合、比较和以其他方式操纵的电信号或磁信号的形式。有时已经证明是方便的是,主要出于通用的原因将这些信号称为位、值、元素、符号、字符、术语、数字等等。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当牢记,全部的这些和类似术语都要与适当的物理量相关联,并且仅仅是被应用于这些量的方便标签。除非另行具体陈述,如根据以上讨论显而易见的,应当领会的是,遍及该描述,利用诸如“定义”、“接收”、“确定”、“发布”、“链接”、“关联”、“获得”、“验证”、“禁止”、“执行”、“请求”、“通信”等的术语的讨论指代计算系统或类似电子计算设备的动作和过程,其将被表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据操纵且变换成被类似地表示为计算系统存储器或寄存器或其他这样的信息存储装置、传输或显示设备内的物理量的其他数据。
词语“示例”或“示例性”在本文中被用来意指用作示例、实例或例证。本文中描述的作为“示例”或“示例性”的任何方面或设计不一定被解释为比其他方面或设计更优选或更有利。相反,词语“示例”或“示例性”的使用意图以具体方式来呈现概念。如在本申请中使用的,术语“或”意图意指包含的“或”而不是排他性的“或”。即,除非另行指明或根据上下文中明确的,“X包括A或B”意图意指任何自然的包含性排列。即,如果X包括A;X包括B;或者X包括A和B,则在任何前述情况下满足“X包括A或B”。此外,如本申请和所附权利要求中使用的冠词“一”和“一个”通常应该理解成意指“一个或多个”,除非另行指明或根据上下文明确指向单数形式。此外,除非照此描述,自始至终使用术语“实施例”或“一个实施例”或“实现方式”或“一个实现方式”并不意图意指同一实施例或实现方式。而且,如本文中使用的术语“第一”、“第二”、“第三”、“第四”等是指用以在不同元件当中进行区分的标签,并且根据它们的数字标识可以不一定具有序数含义。
Claims (21)
1.一种集成电路,其包括:
用以激活时间步长更新信号的时间步长控制器,以用于实行一组神经形态状态的时间复用选择以进行更新;以及
第一电路,响应于检测到针对所选组神经形态状态的时间步长更新信号来:
响应于确定了所述所选组神经形态状态的第一膜电位超过阈值来生成传出数据信号,其中所述传出数据信号包括:标识所述所选组神经形态状态的标识符以及存储器地址,其中所述存储器地址对应于与所述集成电路相关联的存储器块中的位置;并且
响应于所述传出数据信号的生成,更新所述所选组神经形态状态的状态,其中所述时间步长控制器要随机激活所述时间步长更新信号,所述集成电路进一步包括:第二电路,响应于接收到对应于第二组神经形态状态的传入数据信号来:
将所述传入数据信号的权重值加到所述第二组神经形态状态的第二膜电位,以生成更新的第二膜电位;并且
将所述更新的第二膜电位往回存储到寄存器组。
2.根据权利要求1所述的集成电路,进一步包括:寄存器组,用以存储所述所选组神经形态状态和所述第二组神经形态状态,其中所述第二电路进一步要:
标识在所述寄存器组内的存储所述第二组神经形态状态的寄存器,所述第二组神经形态状态对应于从所述传入数据信号检索的第二标识符;并且
从所述寄存器组检索所述第二膜电位,其中所述寄存器组包括:第一寄存器组,以存储由所述第二电路访问的第二神经形态状态的组的子集;以及第二寄存器组,以存储也由所述第一电路访问的第二神经形态状态的组的第二子集。
3.根据权利要求1所述的集成电路,其中所述第二电路进一步包括:学习单元,以通过更新所述第二组神经形态状态的权重值来实行学习操作,以生成更新的权重值,并且其中所述第二电路进一步要通过路由器传输所述更新的权重值,所述更新的权重值要被存储在所述存储器块中。
4.根据权利要求3所述的集成电路,其中所述第二神经形态状态的组的状态通过学习计数器反映,并且所述第一电路进一步要:
在生成所述第二组神经形态状态的传出数据信号时,将所述学习计数器设置成最大计数器值;
响应于每个时间步长更新信号递减所述学习计数器;并且
其中所述学习计数器进一步要触发被加到所述权重值或从所述权重值减去的权重更新值的选择,以生成所述更新的权重值。
5.根据权利要求1所述的集成电路,其中第二神经形态状态的组的状态通过不应期计数器反映,并且所述第一电路进一步要:
在生成所述第二组神经形态状态的传出数据信号时,将所述不应期计数器设置成最大计数器值;以及
响应于每个时间步长更新信号递减所述不应期计数器,其中所述第一电路要阻止随后传出数据信号的生成,并且所述第二电路要阻止添加随后传入数据信号的权重值,直到所述不应期计数器达到零为止。
6.根据权利要求1所述的集成电路,其中所述第一电路进一步要:
将所述所选组神经形态状态的第一膜电位乘以泄漏因子,以生成第一更新的膜电位;并且
响应于所述第一膜电位小于所述阈值,利用所述第一更新的膜电位替换所述第一膜电位。
7.根据权利要求6所述的集成电路,其中所述第一电路进一步要:
将所述所选组神经形态状态的输入数据值与伪随机生成的输入信号阈值进行比较;并且
响应于所述输入数据值大于所述伪随机生成的输入信号阈值,在利用所述第一更新的膜电位替换所述第一膜电位之前,将所述输入数据值加到所述第一更新的膜电位。
8.根据权利要求6所述的集成电路,其中所述第一电路进一步要:
将所述所选组神经形态状态的偏置值与伪随机生成的输入偏置阈值进行比较;并且
响应于所述偏置值大于所述伪随机生成的输入偏置阈值,在利用所述第一更新的膜电位替换所述第一膜电位之前,将所述偏置值加到所述第一更新的膜电位。
9.一种系统,其包括:
存储器块;
计算块;以及
耦合到所述存储器块和所述计算块的路由器;
其中所述计算块包括:
用以激活时间步长更新信号的时间步长控制器,以用于实行一组神经形态状态的时间复用选择以进行更新;
第一电路,响应于检测到用于所选组神经形态状态的时间步长更新信号来:
响应于确定了所述所选组神经形态状态的第一膜电位超过阈值来生成传出数据信号,其中所述传出数据信号包括标识所述所选组神经形态状态的标识符和存储器地址,其中所述存储器地址对应于所述存储器块中的位置;并且
响应于所述传出数据信号的生成,更新所述所选组神经形态状态的状态;以及
学习单元,响应于没有检测到时间步长更新信号并且接收到传入数据信号,通过以下方式来实行学习操作:
标识对应于从所述传入数据信号中检索的标识符的第二组神经形态状态;并且
更新所述传入数据信号的权重值,以生成要被提供给所述路由器的更新的权重值,以用于存储在所述存储器块的第二存储器地址处,进一步包括:寄存器组,以存储所述所选组神经形态状态和所述第二组神经形态状态,其中所述计算块进一步包括:第二电路,响应于接收到所述传入数据信号来:
标识在所述寄存器组内的用于所述第二组神经形态状态的寄存器;
从所述寄存器检索用于所述第二组神经形态状态的第二膜电位;
将所述传入数据信号的权重值加到所述第二组神经形态状态的第二膜电位,以生成更新的第二膜电位;并且
将所述更新的第二膜电位往回存储到所述寄存器组。
10.根据权利要求9所述的系统,其中所述寄存器组包括:第一寄存器组,以存储由所述第二电路访问的第二神经形态状态的组的子集;以及第二寄存器组,以存储也由所述第一电路访问的第二神经形态状态的组的第二子集。
11.根据权利要求9所述的系统,其中所述第二神经形态状态的组的状态通过学习计数器反映,并且所述第一电路进一步要:
在生成所述第二组神经形态状态的传出数据信号时,将所述学习计数器设置成最大计数器值;
响应于每个时间步长更新信号递减所述学习计数器;并且
其中所述学习计数器进一步要触发权重更新值的选择以进行加到所述权重值或从所述权重值减去中的一个,以生成所述更新的权重值。
12.根据权利要求9所述的系统,其中所述第一电路进一步要:
将所述所选组神经形态状态的第一膜电位乘以泄漏因子,以生成更新的第一膜电位;并且
响应于所述膜电位小于所述阈值,利用所述更新的第一膜电位替换所述第一膜电位。
13.一种包括多个核心的系统,其中所述多个核心中的第一核心包括:
寄存器组,以存储多组神经形态状态;以及
时间步长控制器,其包括:
线性反馈移位寄存器(LFSR),以在由多个时钟周期定义的时间步长下伪随机地生成第一值;以及
元胞自动机(CA),其耦合到所述多个核心中的第二核心的第二CA和第三核心的第三CA,其中所述CA要:伪随机地生成与由所述第二CA和所述第三CA生成的值不同的第二值;并且将所述第二值存储到被耦合到所述CA的CA寄存器中;以及
逻辑电路,以将所述第一值与所述第二值进行组合以生成更新值,并且使用所述更新值来确定以什么时间步长,并且针对所述多组神经形态状态的哪个组神经形态状态来激活时间步长更新信号。
14.根据权利要求13所述的系统,其中所述逻辑电路包括:XOR门,以将所述第一值与所述第二值进行组合。
15.根据权利要求13所述的系统,其中所述逻辑电路进一步要:
将所述更新值的排序部分与可编程扫描值进行比较;并且
响应于所述排序部分匹配所述可编程扫描值,激活所述时间步长更新信号,所述时间步长更新信号要选择具有由所述更新值的地址部分提供的地址的一组神经形态状态,其中所述地址对应于寄存器组内的用于存储所述组神经形态状态的位置。
16.根据权利要求15所述的系统,其中所述逻辑电路包括:由伪随机位控制的CA寄存器的时钟门控,以确保所述LFSR通过针对被存储在CA寄存器中的第二值的多个可用伪随机状态来行进。
17.一种集成电路,其包括用于更新多组神经形态状态的核心,所述核心包括:
寄存器组,以存储所述多组神经形态状态;以及
耦合到所述寄存器组的学习单元,并且响应于接收到传入数据信号来实行学习操作,其包括以:
对应于从传入数据信号检索的标识符,标识所述多组神经形态状态中的一组神经形态状态;
检索对应于被存储在针对所述组神经形态状态的寄存器组中的学习计数器值的权重更新值,其中所述权重更新值也基于传入学习消息类型;
取决于学习控制位的集合的状态,选择性地实行对所述权重更新值的符号扩展,以生成符号扩展的权重更新值;并且
将所述符号扩展的权重更新值加到所述传入数据信号的权重值,以生成针对所述组神经形态状态的更新权重值,其中所述传入学习消息类型包括:长期抑制(LTD)或长期增强(LTP)中的一个,并且其中所述学习控制位的集合的状态包括下述各项中的一个:
所述符号扩展的更新权重值的消除;
响应于LTP传入学习消息,将所述权重更新值保留为正值;
响应于LTD传入学习消息,使所述权重更新值为负值;或者
根据在所述核心经由路由器通信地耦合到的网络上接收的多个调制位来选择所述权重更新值的正值或负值中的一个。
18.根据权利要求17所述的集成电路,进一步包括:可编程参数存储器,其中存储了权重更新曲线,所述权重更新曲线包括所述权重更新曲线的LTD部分和LTP部分,并且所述学习单元进一步来:
操纵所述权重更新曲线以控制LTD对比LTP学习的比率;并且
基于所述权重更新曲线的LTD部分和LTP部分来生成可选择的权重更新值。
19.根据权利要求17所述的集成电路,其中所述学习单元进一步要根据可编程最大权重和可编程最小权重来对所述符号扩展的权重更新值实行最大和最小边界检查的集合。
20.根据权利要求17所述的集成电路,其中所述学习单元进一步要在选择性地实行所述符号扩展之前,将权重标度应用于所述权重更新值,以生成更大的权重更新值。
21.根据权利要求17所述的集成电路,其中所述核心进一步包括:时间步长控制器,以激活时间步长更新信号,所述时间步长更新信号实行所述多组神经形态状态中的一组神经形态状态的时间复用选择,并且所述学习单元要在没有检测到所述时间步长更新信号时实行所述学习操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/276111 | 2016-09-26 | ||
US15/276,111 US11281963B2 (en) | 2016-09-26 | 2016-09-26 | Programmable neuron core with on-chip learning and stochastic time step control |
PCT/US2017/048501 WO2018057226A1 (en) | 2016-09-26 | 2017-08-24 | Programmable neuron core with on-chip learning and stochastic time step control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109844776A CN109844776A (zh) | 2019-06-04 |
CN109844776B true CN109844776B (zh) | 2023-12-01 |
Family
ID=61686495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780059213.3A Active CN109844776B (zh) | 2016-09-26 | 2017-08-24 | 具有片上学习和随机时间步长控制的可编程神经元核心 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11281963B2 (zh) |
EP (1) | EP3516593A1 (zh) |
CN (1) | CN109844776B (zh) |
WO (1) | WO2018057226A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10509999B2 (en) * | 2015-12-30 | 2019-12-17 | SK Hynix Inc. | Neuromorphic device including post-synaptic neurons having a comparator for deciding quasi- learned synapses |
US11301753B2 (en) * | 2017-11-06 | 2022-04-12 | Samsung Electronics Co., Ltd. | Neuron circuit, system, and method with synapse weight learning |
EP3617957A1 (en) * | 2018-08-29 | 2020-03-04 | GrAl Matter Labs S.A.S. | Neuromorphic processing method and update utility for use therein |
JP7111966B2 (ja) * | 2018-09-03 | 2022-08-03 | 富士通株式会社 | 最適化装置及び最適化装置の制御方法 |
WO2020049541A1 (en) * | 2018-09-09 | 2020-03-12 | Gore Mihir Ratnakar | A neuromorphic computing system |
CN111052141B (zh) | 2019-08-02 | 2022-08-02 | 深圳市汇顶科技股份有限公司 | 指纹检测装置和电子设备 |
US20210103801A1 (en) * | 2019-10-03 | 2021-04-08 | International Business Machines Corporation | Artificial intelligence hardware with synaptic reuse |
JP7475080B2 (ja) * | 2020-04-01 | 2024-04-26 | 義憲 岡島 | 曖昧検索回路 |
CN113743569B (zh) * | 2020-05-29 | 2024-07-05 | 上海新氦类脑智能科技有限公司 | 脉冲信号发送方法、装置及存储介质 |
CN112822113B (zh) * | 2020-12-31 | 2022-04-12 | 北京灵汐科技有限公司 | 路由地址的获取方法及装置、电子设备和可读存储介质 |
CN114708639B (zh) * | 2022-04-07 | 2024-05-14 | 重庆大学 | 一种基于异构脉冲神经网络的人脸识别的fpga芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571200B2 (en) * | 2002-04-24 | 2009-08-04 | Hewlett-Packard Development Company, L.P. | Seedable pseudo-random number generator |
US7904398B1 (en) * | 2005-10-26 | 2011-03-08 | Dominic John Repici | Artificial synapse component using multiple distinct learning means with distinct predetermined learning acquisition times |
CN104641385A (zh) * | 2012-09-14 | 2015-05-20 | 国际商业机器公司 | 神经核心电路 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8447714B2 (en) | 2009-05-21 | 2013-05-21 | International Business Machines Corporation | System for electronic learning synapse with spike-timing dependent plasticity using phase change memory |
US8433665B2 (en) | 2010-07-07 | 2013-04-30 | Qualcomm Incorporated | Methods and systems for three-memristor synapse with STDP and dopamine signaling |
US8606732B2 (en) | 2010-08-04 | 2013-12-10 | Qualcomm Incorporated | Methods and systems for reward-modulated spike-timing-dependent-plasticity |
US8856055B2 (en) * | 2011-04-08 | 2014-10-07 | International Business Machines Corporation | Reconfigurable and customizable general-purpose circuits for neural networks |
US9147156B2 (en) * | 2011-09-21 | 2015-09-29 | Qualcomm Technologies Inc. | Apparatus and methods for synaptic update in a pulse-coded network |
US8943008B2 (en) | 2011-09-21 | 2015-01-27 | Brain Corporation | Apparatus and methods for reinforcement learning in artificial neural networks |
US9256823B2 (en) | 2012-07-27 | 2016-02-09 | Qualcomm Technologies Inc. | Apparatus and methods for efficient updates in spiking neuron network |
US9373073B2 (en) * | 2012-12-21 | 2016-06-21 | International Business Machines Corporation | Time-division multiplexed neurosynaptic module with implicit memory addressing for implementing a universal substrate of adaptation |
US9542643B2 (en) | 2013-05-21 | 2017-01-10 | Qualcomm Incorporated | Efficient hardware implementation of spiking networks |
KR102230784B1 (ko) | 2013-05-30 | 2021-03-23 | 삼성전자주식회사 | Stdp 동작을 위한 시냅스 회로 및 시냅스 회로를 포함하는 뉴로모픽 시스템 |
US9418333B2 (en) | 2013-06-10 | 2016-08-16 | Samsung Electronics Co., Ltd. | Synapse array, pulse shaper circuit and neuromorphic system |
US9558443B2 (en) * | 2013-08-02 | 2017-01-31 | International Business Machines Corporation | Dual deterministic and stochastic neurosynaptic core circuit |
US9330355B2 (en) | 2013-08-06 | 2016-05-03 | Qualcomm Incorporated | Computed synapses for neuromorphic systems |
US10248675B2 (en) * | 2013-10-16 | 2019-04-02 | University Of Tennessee Research Foundation | Method and apparatus for providing real-time monitoring of an artifical neural network |
US10387774B1 (en) * | 2014-01-30 | 2019-08-20 | Hrl Laboratories, Llc | Method for neuromorphic implementation of convolutional neural networks |
US9442726B1 (en) * | 2015-12-15 | 2016-09-13 | International Business Machines Corporation | Perceptron branch predictor with virtualized weights |
US20170286829A1 (en) | 2016-04-01 | 2017-10-05 | Intel Corporation | Event-driven Learning and Reward Modulation with Spike Timing Dependent Plasticity in Neuromorphic Computers |
US11501131B2 (en) * | 2016-09-09 | 2022-11-15 | SK Hynix Inc. | Neural network hardware accelerator architectures and operating method thereof |
-
2016
- 2016-09-26 US US15/276,111 patent/US11281963B2/en active Active
-
2017
- 2017-08-24 EP EP17853642.1A patent/EP3516593A1/en not_active Withdrawn
- 2017-08-24 CN CN201780059213.3A patent/CN109844776B/zh active Active
- 2017-08-24 WO PCT/US2017/048501 patent/WO2018057226A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571200B2 (en) * | 2002-04-24 | 2009-08-04 | Hewlett-Packard Development Company, L.P. | Seedable pseudo-random number generator |
US7904398B1 (en) * | 2005-10-26 | 2011-03-08 | Dominic John Repici | Artificial synapse component using multiple distinct learning means with distinct predetermined learning acquisition times |
CN104641385A (zh) * | 2012-09-14 | 2015-05-20 | 国际商业机器公司 | 神经核心电路 |
Non-Patent Citations (1)
Title |
---|
神经系统识别爆发性锋电位序列的机制讨论;刘艳等;《北京师范大学学报(自然科学版)》;20070815(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20180089557A1 (en) | 2018-03-29 |
EP3516593A1 (en) | 2019-07-31 |
US11281963B2 (en) | 2022-03-22 |
CN109844776A (zh) | 2019-06-04 |
WO2018057226A1 (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109844776B (zh) | 具有片上学习和随机时间步长控制的可编程神经元核心 | |
US10534613B2 (en) | Supporting learned branch predictors | |
US10878313B2 (en) | Post synaptic potential-based learning rule | |
US11195079B2 (en) | Reconfigurable neuro-synaptic cores for spiking neural network | |
JP7494242B2 (ja) | マルチタスク再帰型ニューラルネットワーク | |
CN104954356B (zh) | 保护共享的互连以用于虚拟机 | |
US10482372B2 (en) | Interconnection scheme for reconfigurable neuromorphic hardware | |
US10748060B2 (en) | Pre-synaptic learning using delayed causal updates | |
US20180232627A1 (en) | Variable word length neural network accelerator circuit | |
US10360496B2 (en) | Apparatus and method for a digital neuromorphic processor | |
JP2019204492A (ja) | ニューロモルフィック・アクセラレータ・マルチタスキング | |
EP3394737B1 (en) | Processing devices to perform a key value lookup instruction | |
CN114269445A (zh) | 使用一个或更多个神经网络的内容推荐 | |
US20170286829A1 (en) | Event-driven Learning and Reward Modulation with Spike Timing Dependent Plasticity in Neuromorphic Computers | |
US20190197391A1 (en) | Homeostatic plasticity control for spiking neural networks | |
CN106575284A (zh) | 用于内核模块的多核存储器数据记录器 | |
CN110419030A (zh) | 测量非均匀存储器访问(numa)系统内按节点的带宽 | |
CN108369517A (zh) | 聚合分散指令 | |
EP3343462B1 (en) | Scalable free-running neuromorphic computer | |
WO2017112195A1 (en) | Processing devices to perform a conjugate permute instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |