CN116648708A - 在尖峰神经网络中路由尖峰消息 - Google Patents
在尖峰神经网络中路由尖峰消息 Download PDFInfo
- Publication number
- CN116648708A CN116648708A CN202180084534.5A CN202180084534A CN116648708A CN 116648708 A CN116648708 A CN 116648708A CN 202180084534 A CN202180084534 A CN 202180084534A CN 116648708 A CN116648708 A CN 116648708A
- Authority
- CN
- China
- Prior art keywords
- spike
- router
- neuron
- neurons
- synaptic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 23
- 230000000946 synaptic effect Effects 0.000 claims abstract description 212
- 230000015654 memory Effects 0.000 claims abstract description 202
- 238000012421 spiking Methods 0.000 claims abstract description 22
- 210000002569 neuron Anatomy 0.000 claims description 353
- 238000000034 method Methods 0.000 claims description 62
- 230000004044 response Effects 0.000 claims description 13
- 230000008685 targeting Effects 0.000 claims description 4
- 238000013529 biological neural network Methods 0.000 abstract description 10
- 210000000225 synapse Anatomy 0.000 description 58
- 230000010354 integration Effects 0.000 description 47
- 230000027928 long-term synaptic potentiation Effects 0.000 description 47
- 230000001242 postsynaptic effect Effects 0.000 description 39
- 230000003518 presynaptic effect Effects 0.000 description 34
- 210000004027 cell Anatomy 0.000 description 33
- 230000008569 process Effects 0.000 description 33
- 238000012545 processing Methods 0.000 description 31
- 239000012528 membrane Substances 0.000 description 25
- 238000004364 calculation method Methods 0.000 description 22
- 238000003491 array Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 16
- 238000003860 storage Methods 0.000 description 16
- 210000004556 brain Anatomy 0.000 description 14
- 102100023539 Isthmin-1 Human genes 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 238000013500 data storage Methods 0.000 description 8
- 230000001934 delay Effects 0.000 description 8
- 101000977636 Homo sapiens Isthmin-1 Proteins 0.000 description 7
- 239000000872 buffer Substances 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 7
- 230000003956 synaptic plasticity Effects 0.000 description 7
- 210000003050 axon Anatomy 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 6
- 102100039929 Intraflagellar transport protein 172 homolog Human genes 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 102000005962 receptors Human genes 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000010410 layer Substances 0.000 description 4
- 210000005036 nerve Anatomy 0.000 description 4
- 239000002858 neurotransmitter agent Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 210000005215 presynaptic neuron Anatomy 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 239000000126 substance Substances 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 101100423825 Arabidopsis thaliana SYP61 gene Proteins 0.000 description 3
- 101150096276 HOG1 gene Proteins 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000011065 in-situ storage Methods 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 101150078678 osm-1 gene Proteins 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101000960114 Homo sapiens Intraflagellar transport protein 172 homolog Proteins 0.000 description 2
- 102000004310 Ion Channels Human genes 0.000 description 2
- HOKKHZGPKSLGJE-GSVOUGTGSA-N N-Methyl-D-aspartic acid Chemical compound CN[C@@H](C(O)=O)CC(O)=O HOKKHZGPKSLGJE-GSVOUGTGSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 210000000170 cell membrane Anatomy 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000003278 mimic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008062 neuronal firing Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000255581 Drosophila <fruit fly, genus> Species 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- HOKKHZGPKSLGJE-UHFFFAOYSA-N N-methyl-D-aspartic acid Natural products CNC(C(O)=O)CC(O)=O HOKKHZGPKSLGJE-UHFFFAOYSA-N 0.000 description 1
- 102000016979 Other receptors Human genes 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 210000003766 afferent neuron Anatomy 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001054 cortical 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
- 230000003247 decreasing effect Effects 0.000 description 1
- 210000001787 dendrite Anatomy 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002964 excitative effect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 230000000926 neurological effect Effects 0.000 description 1
- 230000010353 neuronal integration Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035699 permeability Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 230000000007 visual 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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/028—Dynamic adaptation of the update intervals, e.g. event-triggered updates
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/08—Learning-based routing, e.g. using neural networks or artificial intelligence
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及数据在执行存储器内操作的尖峰神经网络(SNN)中的路由。为了模仿生物神经网络对计算机实施的SNN进行建模,本公开中的架构涉及用于存储入站尖峰消息、突触连接数据和突触连接参数的不同存储器区段。实施例涉及通过各种基于路由器的拓扑路由尖峰消息。举例来说,可使用地址表将尖峰消息多播到目标路由器。
Description
相关申请的交叉引用
本申请要求2020年11月18日提交且名称为“在尖峰神经网络中路由尖峰消息(ROUTING SPIKE MESSAGES IN SPIKING NEURAL NETWORKS)”的美国专利申请第16/951,898号的优先级,其全部公开内容由此以引用的方式并入本文中。
本申请涉及共同拥有的申请,所述共同拥有的申请具有名称为“尖峰神经网络中存储器存取期间的流水线尖峰(PIPELINING SPIKES DURING MEMORY ACCESS IN SPIKINGNEURAL NETWORKS)”且2020年8月27日提交的美国专利申请第17/005,040号和名称为“尖峰神经网络中的搜索和匹配操作(SEARCH AND MATCH OPERATIONS IN SPIKING NEURALNETWORKS)”且2020年11月18日提交的美国专利申请第16/951,888号,所述两个申请的公开内容以全文引用的方式并入本文中。
背景技术
尖峰神经网络(SNN)为生物神经网络(BNN)的数学模型。BNN由使用尖峰彼此通信的互连神经元组成。神经元基于从连接的神经元输入到其中的其它尖峰产生尖峰。称为突触的神经元到神经元的不同之处在于连接强度。根据所产生的(突触后)尖峰的突触强度或权重,入站尖峰对其具有不同贡献。
BNN通过使用从神经元行进到神经元的尖峰来处理信息。BNN通过添加新突触连接、移除突触连接、改变突触连接的强度或通过改变突触连接中的延迟(例如,传导属性)来学习。举例来说,个人学习演奏新乐器可能会随着时间的推移改变与运动技能相关的突触连接。
SNN通过模拟神经元、突触和BNN的其它元素且将尖峰引入到数学神经网络中来对BNN进行建模。SNN可编码为在数个处理器上执行以模拟在神经网络中传输的尖峰。果蝇约有250,000个神经元且每个神经元约有80个突触,而人脑约有860亿个神经元,且每个神经元约有1700个突触。因此,由于快速处理尖峰的计算资源的需求显著地增加,因此扩展SNN具有挑战性。
附图说明
参考附图可更好地理解本公开的许多方面。图式中的组件不一定按比例绘制,而是将重点放在清楚地说明本公开的原理上。此外,在图式中,相同的参考标号在若干视图中表示对应的部分。
图1为描绘根据各种实施例的SNN系统的尖峰神经网络(SNN)架构的实例。
图2为根据各种实施例的SNN系统内传送的尖峰消息的图式。
图3为根据各种实施例的耦合到SNN系统内的网状架构的节点的图式。
图4为根据各种实施例的SNN系统内的节点的存储器的图式。
图5为说明根据各种实施例的SNN系统内的节点的功能性和结构的图式。
图6为说明根据各种实施例的SNN系统内的节点的并行处理的图式。
图7为说明根据各种实施例的SNN系统内的节点执行的操作的不同实例的流程图。
图8为说明根据各种实施例的在SNN系统中使用路由器和端口转换器路由尖峰消息的拓扑的图。
图8为说明根据各种实施例的在SNN系统中使用路由器和端口转换器路由尖峰消息的拓扑的图。
图9为说明根据各种实施例的SNN系统中路由尖峰消息的通信的图。
图10为说明根据各种实施例的在SNN系统内路由尖峰消息的操作的流程图。
图11说明根据各种实施例的包含作为组件的SNN系统的联网系统的实例。
具体实施方式
本公开涉及一种用于实施尖峰神经网络(SNN)的存储器架构。根据实施例,存储器架构使用配置为“节点”的专用存储器装置。节点表示神经元群组。节点可经由数字光纤耦合在一起以支持大量神经元,进而支持高效可扩展性。本公开涉及实施SNN的存储器装置的流水线架构。节点的存储器部分被分成不同区段以处置处理尖峰的不同阶段。这允许同时存取不同存储器部分以实施SNN的流水线级(pipeline stage)。
举例来说,节点的第一存储器区段处理入站尖峰。存取节点的第二存储器区段以识别特定尖峰的相关突触连接。可执行搜索和匹配操作以识别相关突触连接。节点的第三存储器区段存储对每一神经元和/或突触连接进行建模的参数。当识别突触连接时,存取第三存储器区段,同时执行突触电流计算、膜电势计算和与神经元和/或突触连接的属性相关的其它计算。具体来说,在BNN中,尖峰不仅用于处理输入和控制输出,尖峰还随时间推移引起神经网络的改变,使得神经网络进行学习。反映神经元和/或突触连接的属性的参数与其它操作并行地连续更新。
本公开涉及尖峰消息跨越构成SNN网络的节点的网络的路由。举例来说,一或多个路由器可实施为朝向其预期目的地引导尖峰消息。并非将尖峰消息广播到SNN网络中的每一可能节点,本公开提供多播尖峰消息以减少网络业务的实施例,由此提供用于添加新节点且增加SNN网络的复杂性的可扩展解决方案。每一节点可嵌入或以其它方式耦合到路由器。另外,端口转换器可布置于多种拓扑上以路由尖峰消息。
另外,在不同时间步长中执行尖峰的处理以实施流水线架构。在BNN中,基于跨越神经网络的尖峰中的通信的时间延迟来处理信息。换句话说,信息至少部分地由突触连接的权重和延迟编码,这是由神经元彼此连接的方式诱导的。流水线架构需要追踪和管理与每一突触连接相关联的强度和延迟,且必须支持尖峰相对于每个时间步长的移动。举例来说,流水线架构使用延迟桶以对尖峰进行优先级排序,使得在高延迟尖峰之前处理低延迟尖峰。根据各种实施例,尖峰消息跨越网络的路由必须支持SNN流水线架构,且必须为其的一部分。
图1为描绘根据各种实施例的SNN系统的尖峰神经网络(SNN)架构的实例。SNN架构由多个节点100构成。节点100可被描述为执行存储器内处理以实施SNN的存储器装置。对于存储器内处理SNN,架构为使用计算机架构技术和构建节点100提供SNN功能性的可扩展系统。节点100可为实施为集成电路的专用存储器装置。节点100可为半导体芯片或裸片或裸片堆叠。
节点100可包含一或多个存储器阵列103。存储器阵列103包括多个行和列并且可在行-列大小方面进行界定。图1的实例展示存储器阵列103具有标记为r1至rn的行和标记为c1至cn的列。在每一行和列相交点处为配置成存储值的存储器单元。举例来说,数据阵列可含有如下四个元素:[A、B、C、D],其中第一元素为A,第二元素为B,第三元素为C,且第四元素为D。数据阵列[A、B、C、D]可存储在存储器阵列103中,使得数据阵列的每一元素存储在对应存储器单元中。举例来说,元素A可存储在单元(r1,c1)中,元素B可存储于单元(r1,c2)中,元素C可存储于单元(r1,c3)中,且元素D可存储于单元(r1,c4)中。因此,在此实例中,数据阵列[A、B、C、D]沿着第一行存储且占据前四列。这被称作“位并行”配置。作为另一实例,数据阵列[A、B、C、D]可沿着占据前四行的第一列存储。此处,元素A可存储在单元(r1,c1)中,元素B可存储在单元(r2,c1)中,元素C可存储在单元(r3,c1)中,且元素D可存储在单元(r4,c1)中。这被称作“位串行”配置。每一元素[A、B、C、D]可为二进制数字(例如,零或1,或高值和低值)、离散值(例如,量化值、有限数、整数)或模拟值(例如,连续数、无理数)。因此,存储器阵列103为用于将数据存储为可由行和列寻址的多个阵列元素的硬件组件。
除了存储数据阵列[A、B、C、D]的纯位并行和纯位串行方式之外,还可以混合方式存储数据阵列。举例来说,元素A和B可存储在第一行中且元素C和D可存储在第二行中,使得A和C存储在第一列上,但C和D存储在第二列上。因此,A与B沿行对准,且C与D沿行对准。然而,A与C沿列对准,且B与D沿列对准。此外,A和C不需要沿行相邻,且B和D不需要沿行相邻。并且,A和C不需要沿列相邻,且B和D不需要沿列相邻。因此,在各种实施例中,涵盖位串行和位并行布置的组合。
根据实施例,节点100可为电阻式随机存取存储器(ReRAM)、3D交叉点(3DXP),或实施电阻式存储器单元或实际上可提供弯曲或调制其电导的存储器单元的其它存储器装置。此类单元可为二极管、包含浮动增益和替换栅极晶体管的晶体管等。举例来说,电阻式存储器单元通过根据其存储的数据调制存储器单元的电阻来存储数据。如果电阻式存储器单元存储二进制零(“0”),那么电阻可设置成低值,使得存储器单元形成短路(例如,电阻短路)。存储器单元存储二进制一(“1”),电阻可设置成高值,使得存储器单元形成开路(例如,电阻开路)。电阻还可设置成中间电阻以存储离散值(例如,量化值)。电阻还可被设置成在电阻范围内以存储模拟值。存储器单元还可包含非对称元件,例如二极管,其中电流在一个方向上通过但另外在相反方向上受到阻碍。可充当存储器单元的其它非对称元件包含例如晶体管和磁性隧道结(MTJ)。
节点100可包含控制器109、输入过滤器112、输出过滤器115、本地总线118、网络接口121和潜在地其它集成组件。控制器109可为实施由节点100执行的逻辑的专用处理器或其它组件。控制器109可包括专用于通过根据不同模式组织数据而将数据存储在存储器阵列103中的集成电路。控制器109可包含例如寄存器、静态随机存取存储器(SRAM)阵列、存储用于快速存取的时间数据的高速缓存器的快速存储器元件。
在一些实施例中,控制器109可实施为耦合到节点100的单独装置。举例来说,控制器109可实施于专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它专用处理器中。控制器可因此为耦合到节点100的主机装置的部分。
另外,控制器109可接收输入数据,存储输入数据,存取输入数据,读出存储在存储器阵列中的数据,执行模式匹配操作以确定输入数据是否与存储在存储器装置节点中的模式匹配,且执行其它存储器操作(例如,存储器内操作)以实施SNN的部分。控制器109可包含控制激活哪些字线和位线以及以什么顺序激活的微码。通过向选定字线和位线施加电压或供应电流来激活字线和位线。其可被称作激活信号。在一些实施例中,控制器109可通过根据应用而改变电压或电流来调整激活信号的强度。
使用被称作尖峰消息的消息进行与节点的通信。模仿生物神经网络(BNN)中的电/化学信号对尖峰消息进行建模。举例来说,在BNN中,神经元基于从连接的神经元输入到其中的其它尖峰产生尖峰。称为突触的神经元到神经元的不同之处在于连接强度、极性(兴奋性与抑制性)和许多其它神经科学方面(例如,N-甲基-d-天冬氨酸或N-甲基-d-天冬氨酸(NMDA)类型、离子通道和受体组成、神经递质取向等)。因此,根据所产生的(突触后)尖峰的突触强度(称为权重),入站尖峰对其具有不同贡献。当在计算机实施的SNN中对BNN进行建模时,可根据各种学习规则动态调整每一突触权重。通常,这些规则可将尖峰时序视为基础,例如,如果入站尖峰的时间在所产生尖峰的时间之前或之后。
在BNN中,从另一神经元(突触前神经元)到达一个神经元(突触后神经元)的突触的尖峰触发轴突与突触之间的小间隙(称为突触间隙)中的神经递质的释放。神经递质结合到突触后神经元的受体(或离子通道)。这些受体以爆炸性连锁反应方式在神经元的体内打开一个‘洞’(一个受体触发另一受体打开),因此导致电流流入。少量的神经递质足以触发此连锁反应。因此,到达尖峰通常近似为‘二元’全或全事件,且突触强度与这些受体的数目成比例。图1的SNN架构中的节点100处理入站尖峰消息且产生出站尖峰消息,其中每一尖峰消息对BNN中的神经元之间的电和化学信令进行建模。
对每一节点100进行建模以表示神经元簇。例如“神经元”、“尖峰”、“突触”的术语是指BNN中的生物成分以及模仿其相应生物成分建模的计算机实施成分。单个节点100可接收被引导到由单个节点100表示的簇内的一或多个神经元的尖峰消息。SNN架构可使用神经元标识符来处理包含于节点100中的特定神经元。另外,SNN架构可存储突触连接ID以表示两个神经元之间的突触连接。因为神经元可突触连接到数个其它神经元,所以将存在比神经元标识符更独特的突触连接标识符。
节点100可通过节点100内含有的神经元产生出站尖峰消息。节点100可包含用于处理入站尖峰消息的输入过滤器112和用于处理出站尖峰消息的输出过滤器115。
通过包含用于给定节点100的输入过滤器112,节点100可过滤被引导到节点100内部的目标神经元的入站尖峰消息。输出过滤器115可过滤出在其它节点100中具有目标神经元的所产生尖峰消息。在节点100内针对节点100内的神经元产生的尖峰消息可保持在节点100内部。多个节点100之间的尖峰消息的传输可呈现为类似于以跨越一或多个节点100的神经元的范围为目标的选择性广播操作或多播操作。神经元可通过使用将源神经元ID与目标神经元ID相关联的突触连接标识符的尖峰消息来寻址(例如,定为目标)。
输入过滤器112和/或输出过滤器115的过滤功能可涉及对可由将源神经元链接到目标神经元的突触连接标识符(ID)寻址的突触连接的子集执行的匹配操作。此突触连接标识符可为或以其它方式包含源神经元ID。源神经元ID可为尖峰消息描述符的部分。具有预定算法分配的地址方案可用于加速由输入过滤器112或输出过滤器115执行的过滤操作。举例来说,可分配神经元以使得节点100的节点标识符与源神经元ID中的位子集匹配。在混合识别方法中,还可使用输入过滤器112(或输出过滤器115)与地址方案的组合。在一些实施例中,输入过滤器112(或输出过滤器115)包含查找表,所述查找表包括特定节点100的神经元ID。输入112和输出115过滤器可配置成执行匹配操作,以将入站尖峰消息的源神经元ID与节点100内的目标神经元的目标突触匹配,其中目标神经元通过突触连接而链接到源神经元。标题为“存储器阵列中的匹配模式(Matching Patterns in Memory Arrays)”的专利申请号16/902,685中描述了使用类电阻或类二极管存储器阵列的模式匹配的实例,所述专利申请以全文引用的方式并入本文中。突触ID可作为模式存储在存储器阵列103中。举例来说,突触连接ID可沿着存储器阵列103的特定位线(或字线)存储。尖峰消息的源神经元ID可与存储器阵列103匹配以确定突触连接ID是否存在于存储器阵列103中。位线(或字线)可对应于链接到存储器阵列103的一部分的键值对,所述键值对含有关于突触连接的额外信息,包含连接强度、权重、精确延迟值、上次连接经历尖峰的时间和其它数据。为此目的,存储器阵列中的位线至少部分地可对应于与源神经元ID匹配的突触连接。位线可映射到存储用于匹配突触连接的突触连接参数的另一存储器区段。
节点100的组件可经由本地总线118耦合。本地总线118可提供对存储器103的存取以用于路由与处理尖峰消息相关的命令。节点100还可包含网络接口121。网络接口121可在节点100与其它节点100或外部系统之间提供数据和/或控制信号。因此,网络接口121可将节点100耦合到网状架构132。
网状架构132可传递所产生的尖峰消息,因此其可由所有目标节点100消耗。当模仿BNN对SNN进行建模时,传递时间取决于延迟,延迟对于每一轴突为唯一的,但在1毫秒到100毫秒的范围内。真实神经元的延迟可取决于其对于所有轴突分支公共的轴突树干的长度以及从所述公共点到突触的特异性长度。在SNN架构的一些实施例中,尖峰消息可包含描述符,例如神经元ID、时间、延迟和潜在地尖峰强度。
网状架构132可需要达成最小带宽以支持所有连接的节点100。可使用神经元和突触放置的智能分配来减少允许节点互连的带宽要求。突触可通过相邻放置,其中其彼此连接完全在节点100内。这可减少出站尖峰消息业务。通常,生物神经元的本地连接比远程连接多。因此,神经网络连接自然地支持此分配。当相邻节点100变得更远时,分配还可具有与相邻节点的连接的减少梯度。结果,另一技术为选择性广播或多播,其中大多数尖峰业务被定位在相邻节点100内,对于更远的节点100,连接梯度下降。额外过滤器(例如,输入过滤器112或输出过滤器115)可沿着网状架构132放置以支持选择性广播,使得过滤器可准许具有某些神经元ID的尖峰消息到网状架构132的相应区段中。这可减少冗余业务。
剩余的图说明通过图1中所描述的SNN系统内的流水线架构处置入站尖峰消息的实施例。举例来说,节点100的输入过滤器112接收尖峰消息。节点存储各种突触连接(由突触连接ID指代)。突触连接存储两个神经元之间的连接(其中的每一个由相应神经元ID指代)。另外,节点100可存储关于每一突触连接的参数(例如,权重)。这些参数可指示尖峰消息如何从神经元传送到神经元。流水线架构支持与执行搜索操作并行地使用相关突触连接参数来执行数学运算的能力以将尖峰消息与目标神经元匹配。
图2为根据各种实施例的SNN系统内传送的尖峰消息的图式。SNN架构可将尖峰消息流时间切片为顺序步骤。也就是说,尖峰消息的传送发生在给定时间片(例如,时间间隔或时间步长)中。这将尖峰消息的传输量化为各种顺序时间步长。在图2中展示三个顺序时间步长。每一时间步长可跨越1毫秒。在此实施例中,第一时间步长跨越第一毫秒,第二时间步长跨越第二毫秒,第三时间步长跨越第三毫秒等。
在第一时间步长中,节点100的输入过滤器112可接收有限数目的尖峰消息,所述尖峰消息包含第一尖峰消息202a和第二尖峰消息202b。在第二时间步长中,输入过滤器112可接收包含第三尖峰消息202c、第四尖峰消息202d和第五尖峰消息202e的额外尖峰消息。在第三时间步长中,输入过滤器112可继续接收包含第六尖峰消息202f和第七尖峰消息202g的额外尖峰消息。每一尖峰消息202(例如,202a至202g)可符合预定义尖峰消息格式。预定义尖峰消息格式可包含一组尖峰描述符。尖峰描述符可包含源神经元ID 205、时间延迟208、时间量子211、尖峰强度214和潜在其它信息。
在一些实施例中,源神经元标识符205可为37位。源神经元标识符205的位长度可取决于SNN系统中神经元的数目。举例来说,37位可能足以解决人脑大小的SNN中的所有神经元(例如,860亿个神经元)。时间量子211可识别产生尖峰消息的经量化时间步长。举例来说,第一尖峰消息202a和第二尖峰消息202b对于时间量子211可具有相同值。第三、第四和第五尖峰消息202c至202e对于时间量子211可具有相同值,从先前时间步长递增一的值。在一些实施例中,时间量子可为7位以覆盖1毫秒到100毫秒的范围。所述范围可由在BNN中传输尖峰所花费的最长时间定界。在一些情况下,如果所有消息都在其产生的时间起的最小延迟时间内传递,那么可在消息中省略时间量子。时间延迟可反映尖峰消息的延迟属性。在BNN中,时间延迟为至少源神经元和轴突的物理属性的函数。对于时间延迟信息,7位可足以覆盖1毫秒到100毫秒的范围。在一些实施例中,时间延迟208的值可与突触连接一起存储。
图3为根据各种实施例的耦合到SNN系统内的网状架构的节点的图式。图3提供展示进出节点100的尖峰消息流的高级概述。如上文所提及,节点100表示由神经元ID指代的神经元簇。另外,节点100中的神经元的每一突触连接到源神经元,其中连接由突触连接ID指代。尖峰消息202可在某一点上从网状架构118行进到特定节点100。尖峰消息202被称作入站尖峰消息304。节点100包含输入过滤器112,所述输入过滤器配置成确定哪些入站尖峰消息304被引导到节点100的神经元。举例来说,可以是没有一个入站尖峰消息304以节点100中的神经元为目标的情况。
输入过滤器112配置成执行匹配操作以基于入站尖峰消息304是否以节点100中的神经元为目标来选择所述入站尖峰消息的子集(例如,全部、一些或无)。输入过滤器112因此可通过识别入站尖峰消息304的与节点100相关的子集来减少由节点100执行的工作负载。匹配操作可至少部分地基于将来自尖峰消息的源神经元ID与存储在节点100中的一范围的突触ID匹配。此类范围可由位模式或序列表示。
在过滤入站尖峰消息304之后,节点执行两个主要操作。一个主要操作是基于节点100的神经元和突触连接312产生出站尖峰消息307。另一主要操作是改变神经元和突触连接312的属性。神经元和突触连接312是BNN中神经元和突触连接的数字、混合信号或模拟表示。神经元和突触连接312可具有建模且界定神经元和突触连接312的固有属性的各种参数和权重。在这方面,神经元或突触连接312的参数表示神经元或突触连接的状态。可界定神经元的状态的一个参数可包含神经元的细胞膜电势。可界定突触连接的状态的一个参数为对突触连接的电阻或电导进行建模的突触强度(权重)值。可界定突触连接的状态312的另一参数为延迟值。有可能以类似方式包含更多其它参数。实施方案可取决于针对SNN选择的突触和神经元模型。
BNN通过神经元放电和突触改变其属性的方式处理信息且提供“智能”。生物输入(例如,感觉信号)通过BNN启动尖峰的触发。以特定序列且以特定时序激活不同神经元群组以最终激活一些生物输出(例如,手部肌肉)。BNN通过添加新的神经连接,移除旧的神经连接,增加神经连接之间的电阻,引入延迟或减小电阻,减小延迟来重新布线或重组神经连接,从而进行学习。这被称作突触可塑性,其中神经元连接方式的改变是响应于重复尖峰或缺乏尖峰的。因此,BNN继续中继尖峰以处理输入且产生输出,同时重新布线自身以进行学习。类似地,SNN架构维持界定神经元和突触连接312的信息。此信息用于产生出站尖峰消息307,同时还动态地更新以有效地“学习”。
进一步阐述,SNN学习规则的主要原则是“一起放电的神经元连接在一起”,这被称作赫布学习(Hebbian learning)。一个此类规则取决于尖峰时序,即传入神经元尖峰的时间相对于由神经元尖峰产生的时间。这在数学上建模为尖峰时间相依可塑性(STDP)。STDP为生物神经元根据尖峰前和尖峰后时序调整其突触的一个特征。对于突触尖峰在其突触后(即,目标)神经元产生尖峰之前到达,其突触被增强。对于突触前尖峰在其突触后神经元产生尖峰之后到达,其突触被抑制。突触电导改变的幅度(增强或抑制,即,向上或向下)由类指数曲线确定。一个曲线为长时间增强(LTP),其确定在目标神经元产生尖峰之前接收尖峰的突触的突触电导改变的幅度。另一曲线为长时间抑制(LTD),其确定在目标神经元产生尖峰之后接收尖峰的突触的突触电导改变的幅度。STDP规则允许SNN在本地连续“纠错”每一突触。
在计算机存储器实施的SNN系统中,处置STDP可涉及在LTP窗口的时间长度内存储突触前尖峰,且接着,一旦突触后神经元产生尖峰“重放”这些事件且相应地调整突触电导值。另一方式为在存储器单元层级或存储器架构层级处实施“合格窗口”特征。SNN结构可塑性可通过以下操作实施:添加如由可塑性规则确定的低功效突触连接,且使其通过应用STDP计算或通过消除将其值衰变到极高电阻(低功效)的突触连接进行演变。
当神经元和突触连接312经由STDP规则随着时间的推移改变时,神经元和其突触连接312产生出站尖峰消息307。输出过滤器115可确定如何路由出站尖峰消息307。举例来说,输出过滤器115可经由网状架构132将出站尖峰消息广播或多播到其它节点100。输出过滤器115还可确定出站尖峰消息307中的一些以同一节点100内的神经元为目标。
图4为根据各种实施例的SNN系统内的节点的存储器的图式。图4提供用于储存与神经元和突触连接312相关的信息、储存、排队和优先级排序入站尖峰消息304/出站尖峰消息307且管理与SNN操作相关的其它数据的存储的存储器结构的实例。图4中展示的存储器结构提供组织信息以允许由节点100处置的尖峰消息202的流水线处理的实例。
图4描绘节点100的存储器408。存储器408可包含一或多个存储器阵列103或存储器单元的其它集合。存储器408可划分成多个区段,例如,尖峰高速缓存器(例如,第一存储器区段)、用于存储突触连接数据421的区段(例如,第二存储器区段)和用于存储突触连接和神经元参数435的区段(例如,第三存储器区段)。每一存储器区段可由识别特定存储器阵列103一或多个存储器阵列标识符、行(或字线)范围、列(或位线)范围、识别层面(deck)(例如,3D存储器装置中的层)的一或多个层面标识符或存储器单元的其它分组界定。
可为尖峰高速缓存器413保留第一存储器区段。尖峰高速缓存器配置成将尖峰消息202存储在预定义数目的尖峰群组中。举例来说,尖峰高速缓存器413可存储由输入过滤器112过滤的所有入站尖峰消息304。换句话说,对尖峰消息202进行过滤,使得尖峰消息202涉及节点100内的神经元。不以节点100中的神经元为目标的尖峰消息202不存储在尖峰高速缓存器413中。
在一些实施例中,每一尖峰消息202根据尖峰消息202中所含有的时间延迟208的值被分配给对应尖峰群组,或在简单情况下,分配给具有最近到达尖峰的群组。尖峰群组可为具有对应标记或标识符的“桶”。尖峰群组的使用允许具有较小延迟的尖峰消息优先于具有较大延迟的尖峰,以及尖峰在时间上的连续运动。
为了进一步解释,对于特定时间步长,尖峰集合穿过输入过滤器112且存储在尖峰高速缓存器413内的尖峰群组中。尖峰群组可具有指示其为最新尖峰的群组的标识符(例如,标记“0”)。后续群组的标记递增1。在最大可能延迟中,有多少时间步长,就可有多少尖峰群组。举例来说,给定100毫秒的最大延迟和1毫秒的时间步长,存在100个尖峰群组和相关联的标记。这些尖峰群组构成具有时间局部性和与根据此局部性处理尖峰相关联的时间表的尖峰高速缓存器413。在一些实施例中,尖峰消息不需要在整个持续时间内保持存储直到其变得与最大延迟桶相关联(例如,100毫秒)。相反,一旦其最长延迟,其就可从高速缓存器移除(无效)。因此,这有助于保持高速缓存器利用有效。
在一些实施例中,尖峰高速缓存器413包含小表,所述小表可储存指向存储在存储器的关联中的尖峰群组的“标记<=>指针”。递增到标记100的标记最终循环回到标记“0”。旧尖峰可被丢弃或由新到达尖峰覆盖。这种递增功能可通过递增单个旋转计数器来实现(例如,递增运算和取模运算)。计数器指向具有最新尖峰群组的标记,新过滤的尖峰可在当前时间步长中放置到所述标记。除了当前时间步长中放置所有尖峰,其可根据尖峰消息中的延迟信息而放置到相关桶。尖峰群组可描述为存储尖峰消息描述符的不透明存储器分配,然而在物理上其可能不是不透明的而是分布式的。
可为突触连接数据421保留存储器的第二区段。举例来说,存储器的第二区段配置成存储指示多个突触连接的数据,其中每一突触连接引用一组神经元标识符。存储器的第二区段可由神经元424a至424n组织。举例来说,图4展示储存第一神经元424a到最后一个神经元424n的数据。对于每一神经元424,存储器的第二区段存储一组突触连接426a至426n。每一突触连接426可包含包括突触连接ID 429、时间延迟432和/或源神经元ID 433(例如,突触前神经元ID)的数据。在一些实施例中,此突触连接ID与源神经元ID相同或以其它方式包含源神经元ID,因此消除存储这两者的必要性。BNN中的突触连接涉及源神经元的连接到一或多个目标神经元的树突的轴突。因此,给定神经元424的突触连接426可使用突触连接ID 429来存取和识别。此外,每一突触连接426指定传输神经元的源神经元ID 433。在一些实施例中,突触连接ID与源神经元ID相同,且因此不需要。时间延迟432或其它参数可界定突触连接的特性。在一些实施例中,存储在节点100中的时间延迟432具有精确值,而尖峰消息202包含具有粗略值的时间延迟208。在一些实施例中,前述变量可存储在存储器阵列的不同区段中,或在对应相关位置处存储在不同存储器阵列中。
为了进一步解释,每一神经元424具有突触前(传入或源)连接426a至426n。这些连接可由延迟值分组或排序。在BNN中,跨越突触连接426传送尖峰。尖峰经历延迟,其中延迟是BNN至少部分地编码信息的方式。换句话说,神经元放电的时序是在BNN中处理信息的方式。在SNN架构中,使用一或多个延迟值对延迟进行建模。尖峰消息202可包含为粗略值的时间延迟208。突触连接426可存储具有精确值的时间延迟432。总的来说,时间延迟208、432的粗略值和精确值的总和表示特定突触连接426的总延迟。
粗略时间延迟208可具有某一范围:例如,在1毫秒与100毫秒之间。按时间步长的增量来量化粗略时间延迟208。如果需要高延迟精度,那么可通过添加精确时间延迟432(例如,表示时间步长内的精确延迟的0与1之间的浮点值)来使此粗略延迟值更精确。精确时间延迟432提供经量化延迟的添加,且可在一些实施例中用于改进准确度。取决于实施例,要添加到粗略时间延迟的精确时间延迟可涉及浮点或整数或某一其它自定义格式。
还可根据粗略延迟值以时间步长(例如,1毫秒)的增量在桶中组织和处理每一神经元424的突触连接426。
节点100的存储器408还可包含第三存储器区段,所述第三存储器区段被保留用于存储与特定神经元相关联的每一突触连接的神经元和突触连接参数435。举例来说,第三存储器区段可通过神经元424a至424n组织数据。对每一神经元424a至424n进行建模的数据存储在存储器的此区段中。此可包含每一神经元的膜电势436和其它参数438。这些参数可包含与例如突触连接426的神经元相关联的所有突触连接。BNN中的膜电势为神经元的固有属性,所述界定神经的状态。膜电势基于跨越膜的电流动态随时间改变,至少部分是由于接收到的尖峰。换句话说,神经元接收到的尖峰的强度和接收到的尖峰的频率随着时间推移改变神经元的膜电势。在SNN中,将膜电势436记录为存储在用于每一神经元424的存储器中的值。可响应于特定神经元接收尖峰消息202而连续地更新膜电势436。除膜电势外,还可存储界定神经元状态的其它神经元变量。那些变量可包含各种离子电流、渗透性状态、某些化学物质的浓度等。
其它参数438包含与特定神经元424相关联的每一突触连接426的权重值。当存储在存储器中时,突触连接可由与突触连接相关联的神经元分组。突触连接可以被建模为具有特定权重。多个突触连接的权重组合引起SNN的训练和学习。由于STDP,权重随时间变化。STDP使神经元变成充当选择器装置。神经元演进成跨越其突触连接展现特定权重组合。使用权重来量化连接性允许SNN产生出站尖峰消息。
突触连接参数435用以执行电流整合操作以用于计算神经元424的属性如何随时间发生改变(例如,神经元的膜电势436)以及用于确定由尖峰的每一神经元424产生的出站尖峰消息307。
图4中展示的节点的存储器408的组织允许入站尖峰消息在尖峰高速缓存器413中排队。可基于每一尖峰消息202中所含有的源神经元ID 205搜索突触连接。此类搜索可在每一延迟桶或群组内执行,通过所述延迟桶或群组,尖峰存储在高速缓存器中。这可涉及执行用于将尖峰消息202中的源神经元ID 205与第二存储器区段的突触连接数据421中的源神经元ID 205匹配的存储器内模式搜索技术。作为流水线架构的部分,响应于在第二存储器区段中发现匹配,接着可识别已产生匹配的目标神经元424和/或突触连接426,且可指向第三存储器区段的神经元424和/或突触连接426。可使用存储在第三存储器区段中的突触连接参数435来执行电流整合、神经元整合、STDP操作和其它神经形态特征。
在一些实施例中,尖峰消息不存储在延迟桶中。举例来说,在每一时间步长,节点准许过滤的尖峰消息。这些尖峰消息与节点中的所有神经元的突触ID匹配。突触ID可被预分类,且这加速匹配处理。尖峰ID可立即指示所有目标突触和相关神经元的位置(例如,索引)。每一突触可包含用延迟值(或零)实例化的计数器。每一计数器的时钟递减(或递增),直到其最终达到零或某一其它预定延迟值。
计数器的结束意味着尖峰消息到达其突触。此类搜索和匹配处理可流水线化为突触和神经元计算,这导致新尖峰被发送到网络。
实施此的一种方式为使用由尖峰ID和一或多个相关联的自递减计数器构成的自计数高速缓存器,每一计数器具有信号线。信号线可为双信号线。举例来说,信号线可具有水平和垂直信号线,其中所述信号线在计数器的网格内的交叉点表示哪个计数器到期。此类信号线可为上拉或下拉线。
图5为说明根据各种实施例的SNN系统内的节点的功能性和结构的图式。图5构建在图4的存储器结构上且说明并行地执行突触连接的搜索和计算的流水线架构。图5展示由预定义数目的桶502a至502n组织的尖峰高速缓存器413。每一桶,无论是逻辑的还是物理的,都对应于其中接收到入站尖峰消息304的不同时间步长。控制器109可接收入站尖峰消息304。输入过滤器112可仅在以节点100内的神经元424为目标的相关尖峰消息中进行过滤。连同过滤,其它操作可由输入过滤器执行。此类操作包含例如确定由尖峰定为目标的突触和神经元,将尖峰放置到硬件队列中或直接放置到尖峰高速缓存器中,将尖峰分配到控制器等。控制器109可基于入站尖峰消息304中的时间延迟208的值将入站尖峰消息304存储在对应桶502中,或在简单情况下存储在桶1(最小延迟桶)中。因此,基于量化的时间延迟,通过循序排序的桶502将入站尖峰消息304分组在一起。在移动到下一个桶502的尖峰消息之前,一起处理桶502的尖峰消息。
类似地,突触连接数据421由预定数目的桶505a至505n组织,且突触连接参数435也可由预定数目的桶508a至508n组织。每一桶505、508可包含存储器阵列内的存储器单元513的集合(例如,由行/列范围界定),其中存储器单元513耦合到感测放大器516。
对于尖峰高速缓存器413、突触连接数据421和突触连接参数435,可存在相同数目的桶502、505、508。举例来说,可存在范围从桶1到桶100的100个桶。还可存在在每一时间步长从1到100递增且接着循环回到1的循环桶计数器。举例来说,在时钟周期i处,控制器109处理相关存储器区段中的桶502i、505i、508i-1。具体来说,桶502i和505i涉及搜索和匹配操作(将来自尖峰高速缓存器的桶i中的尖峰ID与突触连接数据421中的突触ID进行匹配)。此操作的结果是确定哪些突触连接与哪些尖峰消息匹配。此数据在下一个时钟周期中与桶508i一起使用。并且,在时钟周期i中,当对桶502i-1和505i-1执行搜索和匹配时,控制器109处理在前一周期中确定为匹配的突触连接的桶508i-1。处理桶508i-1可涉及电流整合、神经元整合、STDP操作和其它神经形态特征。在下一个时钟周期中,桶计数器递增到桶i+1,且控制器109处理每一存储器区段中的第二桶502i+1、505i+1、508i。处理与时钟周期i中相同。此处理对于所有延迟桶重复。举例来说,如果存在100个延迟桶,那么对于单个时间步长存在100个时钟周期(例如,时钟周期i)。作为此流水线处理的结果,搜索和匹配操作与神经形态操作并行地发生。每一时间步长涉及处理所有延迟桶,但连续时间步长之间的主要差异为延迟桶旋转1个位置且其针对不同突触连接桶进行搜索/匹配。术语‘时钟周期’的使用可用‘步长’等代替。通过延迟桶进行此处理的时钟周期或步长可为局部的且与应用于使完整SNN系统的全局操作同步的时间步长分离。
当检测到来自不同时间步长桶的每一神经元424的突触的尖峰ID与突触ID匹配时,在每一时间步长产生许多突触事件(例如,新产生的尖峰消息)。在这方面,可在流水线架构中同时处理所有神经元和每个神经元的所有桶。这涉及首先执行搜索/匹配操作以定位突触连接426。对于每一成功匹配,下一立即步骤是整合与所述匹配相关的突触后电流。在BNN中,由于细胞膜中的局部开口产生突触后电流,且其可针对每个神经元的所有成功匹配而整合。整合处理可考虑突触到神经元胞体的距离(需要更复杂的整合方案)或其可省略此复杂性,这基本上将其减少到简单的电流求和,即根据由尖峰触发的突触效能产生的电流。在SNN架构中,通过存取含有突触连接参数435的存储器区段执行电流整合操作,同时对含有突触连接数据421的存储器区段执行搜索/匹配操作。对于按桶分配,许多优化是可能的。这可包含例如通过连接的共性将神经元分类且将神经元存储在存储器中,从而将神经元分配给节点。另一优化是根据其最小延迟在延迟桶中注入尖峰消息且根据其最大延迟丢弃来自延迟桶的尖峰消息。因此,减少不必要的匹配操作。这将需要将最小延迟信息添加到尖峰消息描述符。另一优化是根据尖峰神经元ID将每一尖峰桶中的尖峰消息分类,且将每一突触桶中的突触分类。这可将处理范围仅限制于尖峰ID的子集。
尖峰ID为可用于匹配操作的一个常见相依性。举例来说,尖峰ID可映射到驱动存储器阵列区段的一组字线(WL),且每一位线(BL)可利用匹配/失配信号作出响应。并行化的另一维度为延迟桶。举例来说,每一延迟桶可存储在不同存储器阵列中且可与其它桶并行地执行匹配操作。神经元并行为另一维度。在此实例中,神经元可分布在许多子阵列中。替代地,可以更串行方式进行匹配,例如,在单个阵列中一次减少到1个桶,只要所有桶在实时步长(例如,1ms)到期前很长时间内完成,以确保服务质量(QoS)。此方法的许多流水线和多路复用变型是可能的。
在一些情况下,所述匹配由网络拓扑所暗含,且可避免。对于具有常规连接(例如,执行卷积操作)的SNN区段,网络拓扑非常适合存储器阵列。搜索和匹配操作对于许多神经元可为相同的。皮质柱具有相似但结构较少的拓扑结构。对于其它SNN区段,突触连接可能很大程度上在神经元与神经元间不同。
在一些实施例中,在存储器阵列中就位的匹配和电流求和,使得匹配操作与电流整合融合(例如,匹配操作将电流整合本地选通到每一存储器单元(或单元群组))。这可涉及形成条件存储器,使得其在检测到第一群组的内容上的模式匹配时提供对第二单元群组的内容的存取。就地提供存取(不通过感测放大器)。因此,类似于此,多个模式可流式传输到装置的多个WL群组中,且BL将就地产生计算结果。此类存储器的潜力将是广泛的,且可包含密码术、内容可寻址存储器、存储器内逻辑、图形操作或SNN以外的其它网络。实现此的一种可能方式可为双层配置,其中第一层面将存储密钥且第二层面将存储在匹配密钥时有条件可存取的值。另一方式为NAND串门控含有具有存储在NAND存储器装置中的突触ID的所有神经元的突触的NOR行的WL。又一方式为NAND串门控含有突触信息的NAND串的另一区段。
此类存储器的性能可主要取决于每个延迟桶的传入尖峰消息的数目。举例来说,在节点100中每个延迟桶平均100个尖峰消息的情况下,系统可需要每个时间步长100个时钟。
图6为说明根据各种实施例的SNN系统内的节点的并行处理的图式。图6展示布置成流水线架构的节点100的操作,以提供找到目标突触连接426与使用目标神经元的参数执行电流整合计算的并行处理。图6展示在特定时间步长内(例如,针对当前桶)从左移动到右的操作的流水线。
在项目602处,节点100接收入站尖峰消息304。过滤器112可过滤出未被引导到节点100的尖峰消息。经由网状架构自其它互连节点100接收尖峰消息602。
在项目605处,节点100更新尖峰群组。举例来说,控制器109可基于入站尖峰消息602中的时间延迟208将入站尖峰消息602存储在对应桶502中,或在简单情况下存储在当前桶1中。指示较小延迟的入站尖峰消息602被高速缓存在朝向当前桶的桶中,如由循环桶计数器所指示。循环指针递增可发生在高速缓存尖峰消息之前。
接着,使用搜索和匹配操作处理存储在桶中的每一尖峰消息。举例来说,图1展示第一入站尖峰消息(标记为“ISM1”)的处理。ISM1为基于对应于当前时间步长的循环桶计数器含于当前桶中的尖峰消息。然而,在当前桶以及其它桶内可存在若干其它尖峰消息,图6展示处理单个入站尖峰消息304。ISM1由具有源神经元ID 205的源神经元(例如,突触前神经元)产生。源神经元可与当前桶中的一或多个目标神经元424具有突触连接。ISM1应以突触连接到源神经元的每一神经元424为目标。
在项目608处,节点100执行搜索和匹配以识别突触连接ID 429。搜索和匹配操作可为存储器内操作以确定存储器是否正存储与ISM1的源神经元标识符205匹配的源神经元标识符433。且如果是,那么其位于存储器中。举例来说,搜索和匹配操作可涉及存储器内模式匹配操作以确定存储器阵列103是否含有输入模式(例如,对应于源神经元标识符205的位序列)。因此,搜索和匹配操作可涉及将尖峰消息中所含有的源神经元标识符的位模式与存储在存储器中的若干位模式进行比较以识别突触连接。此可以上文所论述的位串行、位并行或混合方式发生。
在定位匹配时,确定突触连接ID 429。在一些实施例中,键值对用于使源神经元标识符433与突触连接ID 429相关联。举例来说,如果匹配神经元标识符433位于特定位线和字线上,那么位线和字线映射到含有突触连接的突触连接ID 429的特定存储器位置。图6展示识别第一突触连接426(标记为“SC1”)。换句话说,对ISM1执行搜索和匹配操作产生SC1。单个神经元的神经形态计算可能需要产生所述神经元的所有突触连接SC1(即,识别在当前时间步长中接收尖峰的所有突触)。如上所述,ISM1可以多个神经元的多个突触连接为目标。
在一些实施例中,源神经元标识符433a至433n的阵列存储在串行行中。对于串行存储的源神经元标识符433a至433n的每一行,感测放大器阵列产生位掩码,所述位掩码表示哪些源神经元标识符433a至433n与当前桶中的ISM1的源神经元标识符205中的任一个匹配。在搜索和匹配操作期间,所有桶中的所有入站尖峰消息的每一位与从存储器(存储突触ID的相关延迟桶)检索的相应位进行匹配和测试,从而产生中间位掩码。当正比较用于源神经元标识符205中的每一个的后续位时,更新此位掩码的每一位。在结束时,在对行进行排序且将来自这些行的每一位与源神经元标识符205中的每一个的每一相关位进行比较之后,位掩码中的位可指示匹配。这些位掩码(每个感测放大器1个位掩码)可存储在接近每一感测放大器的快速存储装置(例如,静态RAM(SRAM)或快速动态RAM(DRAM)阵列)中。位掩码可用于优化,使得单个位失配消除对入站尖峰消息304中的源神经元标识符205的后续位的潜在匹配。另外,可根据感测放大器添加多个比较器和额外本地快速存储装置以保持更宽的位掩码。在一些情况下,利用3D存储器拓扑,相同突触ID的位群组可分布在存储器堆叠中的多个层面或裸片中,因此允许在每一层面或裸片上进行并行比较操作。
在一些实施例中,源神经元标识符433a至433n存储在非易失性存储器中以支持存储器内搜索和匹配操作。搜索和匹配操作可通过并行地激活存储源神经元标识符433a至433n的字线群组以及并行地激活存储源神经元标识符433a至433n的位线群组来执行。因此,搜索和匹配操作可与使用流水线和多路复用的存储器存取完全重叠。当应用于非易失性存储器时,具有位线上的计算的一些存储器存取技术允许通过对同时激活的世界线和感测位线执行并行匹配而将此步骤“打包”到更少操作中。
在识别SC1之后,节点100可执行神经形态计算。举例来说,在项目611处,节点100执行神经形态计算。这可包含执行突触电流整合和膜电势计算,以及包含STDP和结构可塑性计算的突触可塑性计算。这些操作在数学上对突触可塑性进行建模。在一些实施例中,神经形态计算与使用流水线和多路复用的存储器存取完全重叠。当应用于非易失性存储器时,具有位线上的计算的一些存储器存取技术允许在存储器阵列103中就地执行突触改变。总体神经形态计算611可为使用大量计算资源的相对较大的计算操作。如图1中所展示,在识别SC1后立即执行神经形态计算(例如,电流整合、膜电势计算等)。另外,突触可塑性可与电流整合交错。具体来说,基于先前时间步长中的突触事件的LTP可在检测到前一时间步长中的神经元放电时在当前时间步长中计算。在对神经元模型膜方程求解之后进行神经元放电或尖峰的检测,所述神经元模型膜方程为基于膜电势随时间的改变且基于由执行电流整合产生的所计算的电流的微分方程。电流整合是基于基于相对于突触后尖峰的过去尖峰和将来尖峰的权重变化。神经元的权重可存储为相对于特定神经元424的突触连接参数。
突触可塑性计算(例如,STDP和结构可塑性计算)产生突触连接参数435的更新值。具体来说,这可涉及计算突触连接的新权重值。突触可塑性计算涉及利用每一突触的突触前和突触后尖峰时序和当前状态的STPD(LTD和LTP)方程。
当存取突触连接参数435(例如,权重)时,功率效率可以被优化。举例来说,可产生指示匹配标识符的位置的位掩码。然而,这种位掩码可能是稀疏的,因为只有少数匹配发生(例如,所有目标标识符的1%)。每一位掩码表示唯一神经元。唯一地存取列或行中的每一单元的存储器可用于存取突触连接参数435。可在列或行中的唯一位置处存取来自每一列或行的权重。然而,这在具有共享WL的存储器装置中是困难的。因此,根据WL存取所有BL。节点可通过一些存储器技术分流或屏蔽存取一些BL以节省功率,同时还利用稀疏存储器存取进行其它计算。
由于各种神经形态计算,节点100可产生出站尖峰消息(标记为“OSM1”),至少部分通过将SC1定位在存储器区段中且在不同存储器区段中执行存储器计算来产生OSM1以基于SC1产生OSM1(OSM1可在当前时间步长中产生,也可以不产生,这取决于神经元状态)。当识别SC1且产生OSM1时,搜索和匹配操作可继续发生于存储突触连接数据421的存储器区段中。举例来说,ISM1可以多个突触连接为目标,在存储突触连接数据421的存储器区段中搜索其中的每一个。流水线架构允许识别额外突触连接(标记为“SC2”),同时相对于SC1进行神经形态计算。SC2可涉及也由ISM1尖峰的第二目标神经元424。SC2用于产生第二出站尖峰消息(标记为“OSM2”)。因此,项目608中所展示的操作相对于项目611中所展示的操作并行地(至少部分地)发生。节点100的存储器架构通过将突触连接数据421存储在一个存储器区段中(用于执行搜索和匹配操作)且将突触连接参数存储在不同存储器区段中来支持此并行流水线处理,以对匹配神经元/突触连接执行突触可塑性计算且产生出站尖峰消息。
在项目614处,节点100传输出站尖峰消息。举例来说,输出过滤器115可处理输出尖峰消息且经由网状架构132将其传输到其它节点100和/或在同一节点100内将其内部传输。
以下提供处置响应于入站尖峰消息而产生的尖峰消息的额外实例。在检测到所产生的尖峰消息时,将产生尖峰消息的神经元ID报告给节点100(例如,与节点相关联的过滤器或路由器)。节点100为产生出站尖峰消息的所有尖峰神经元准备尖峰描述符。节点100执行广播或多播操作,使得尖峰描述符在整个SNN系统中传输。输出过滤器还可过滤出在节点内具有本地连接的尖峰且将其本地分配给相关延迟桶。因此,对于SNN网络中的所有存储器阵列,广播或多播操作可在时钟周期的一部分内(实时)开始。因为对于整个存储器阵列,可以SIMD方式计算膜电势,所以对于所有神经元,还并行地执行突触后尖峰消息的检测和产生。在将所有尖峰消息发送到SNN网络时,节点100可发送含有其产生的尖峰的数目的屏障消息,使得接收方路由器可与来自此组件的其它例子的其它屏障一起执行屏障。此类屏障消息以及所有尖峰消息还可含有神经元和/或节点的相关标识符。
一些实施例涉及使用具有由多个层面组成的存储器结构的节点100。可利用多个层面来提供搜索和匹配操作与神经形态计算(例如,电流整合)的并行化。在一些实施例中,可借助于多路复用在若干存储器阵列中扩展突触前ID位。这可极大地改进性能。举例来说,将ID扩展到37个阵列(以追踪由860亿个神经元构成的人脑的大小)可导致搜索和匹配操作的时延减少37倍。这可被称为实现高性能计算(HPC)的多路复用配置。通过垂直整合累加突触电流和权重可能需要分布在不同层面或接合裸片中的浮点加法器。这可消除宽输入/输出的要求。一般来说,由浮点融合乘积累加(FMA)单元组成的整个单指令多数据(SIMD)处理器可分布在层面当中,因此实施逐路计算(compute-on-a-way)范例。
图7为说明根据各种实施例的节点100的功能性的不同实例的流程图。流程图中的框可表示可由控制器109或节点100中的其它逻辑执行的微码、机器代码、固件或其它软件。流程图的框可替代地表示方法700中的步骤。所述方法可由节点100执行。方法700中的项目至少部分地可在SNN操作的相同或不同时间步长内被流水线化并在时间上彼此重叠。
另外,图7中所展示的操作可表示通过激活行/列且使用存储器阵列103内或附近的感测放大器阵列执行累加操作、相乘操作、比较操作或其它操作而对存储器单元进行操作的存储器内处理。
在项目701处,节点100接收一或多个入站尖峰消息202。入站尖峰消息304可作为在节点100内内部产生的尖峰消息被接收。可从其它互连节点100接收入站尖峰消息304。在一些实施例中,基于每个时间步长接收入站尖峰消息304。举例来说,节点100可配置成在时间步长中操作,所述节点在入站尖峰消息304被接收的相应时间步长中处理所述入站尖峰消息。
在项目704处,节点100过滤入站尖峰消息304。输入过滤器112可用于仅允许以节点100内的神经元为目标的那些入站尖峰消息304。过滤操作可用作处理优化以减小节点的工作负载,使得其仅处理相关的入站尖峰消息。这适用于即使节点100可能不具有目标神经元也将尖峰消息广播到多个节点100的情况。
在项目710处,节点为入站尖峰消息304分配对应的桶502(延迟桶)。每一入站尖峰消息304可含有量化尖峰消息的延迟属性的时间延迟208。时间延迟208可为量化值(例如,1与100之间的整数)。节点可追踪一系列桶且选择序列中的下一桶作为当前桶。将具有短时间延迟208的入站尖峰消息304放置在最接近于当前桶的延迟桶中,而将具有长时间延迟208的入站尖峰消息304放置在最远离当前桶的延迟桶中。将不具有时间延迟208的入站尖峰消息304放置在当前延迟桶中。在处理当前桶之后,桶计数器递增到下一桶以处理存储在所述桶中的尖峰消息。最终,尖峰消息202存储在节点100的第一存储器区段中,所述第一存储器区段可被称作尖峰高速缓存器413。这可涉及根据尖峰消息202中所含有的时间延迟值通过尖峰群组(例如,桶)组织尖峰消息。
在项目713处,节点100识别每一尖峰消息202的一或多个突触连接426。尖峰消息202可包含指代产生尖峰消息202的突触前神经元的源神经元ID 205。因此,源神经元ID205还可被称作突触前ID。为了识别连接426,节点100可将指示多个突触连接的数据作为突触连接数据421存储在第二存储器区段中。节点100可执行搜索和匹配操作以将尖峰消息202中的源神经元ID 205与突触连接数据421匹配。在一些情况下,搜索和匹配操作是分桶的(bucketized)。举例来说,具有相关“老化”延迟的尖峰消息与具有相同延迟的突触连接匹配(例如,第一存储器中的每一桶中的尖峰ID与第二存储器中的相关桶中的突触ID匹配)。这可涉及执行存储器内模式辨识操作,例如位串行、位并行或混合类型或其它。突触连接数据421可包含每一突触连接426的突触连接ID 429。突触连接426将源神经元433的标识符链接到目标神经元424的标识符。突触连接ID 429可包含源神经元ID 433的至少部分和/或目标神经元424的标识符。因此,每一突触连接426通过链接到或暗示(例如,通过存储器阵列内的分配位置)目标神经元标识符或以其它方式含有目标神经元标识符来引用目标神经元标识符。在这方面,每一神经元424为具有神经元标识符的目标神经元。
在项目716处,节点100计算以神经元424为目标的尖峰消息202的突触电流。节点100可使用对突触电流进行建模的方程来执行电流整合操作。举例来说,一旦识别突触连接,源神经元和目标神经元424的参数便通过存取含有突触连接参数435的第三存储器区段已知。可并行地计算突触电流,同时相对于当前桶的任何和所有尖峰消息202搜索额外突触连接。
在项目717处,节点100至少计算在最后时间步长中尖峰的神经元的STDP的LTP部分。此操作可在用于每一突触连接的电流整合之前或之后发生,以具有经更新的突触权重。另外,其涉及检索最后一个突触事件的时间和计算权重变化。这允许节点100仅从存储器检索每一连接的突触权重一次,且在针对每一神经元的每一突触连接的单个操作中执行LTP和电流整合操作两者。除LTP之外,还可针对当前时间步长中接收到尖峰消息的所有突触连接计算LTD。LTD操作可在电流整合之后或在电流整合期间发生,且可涉及检索具有在当前时间步中接收到尖峰消息的突触连接的神经元的最后尖峰时间且计算LTD权重变化。
在项目719处,节点100计算且更新与目标突触连接相关联的神经元的神经元状态。神经元状态可包含例如神经元的膜电势(例如,其可被称为Vm)。可使用微分方程且使用所计算的突触电流和当前局部电势来计算膜电势。随后在计算新的膜电势436之后更新此最新的膜电势436。计算膜电势436涉及存取含有突触连接参数435和神经元状态变量和参数的第三存储器区段。在相对于当前桶的任何和所有尖峰消息202搜索所有突触连接之后,且在对任何特定神经元执行电流整合之后,计算膜电势436。然而,在不同神经元中,此操作可能仍然是并行的。更新膜电势436允许SNN响应于随时间接收(或不接收)尖峰消息而产生新尖峰。
在一些实施例中,代替用数字方式求解膜电势,神经元模型可使用模拟值或模拟状态来实施。举例来说,泄漏DRAM电容器群(部分DRAM列)可用于对膜电势进行建模。突触电流可注入到所述电容器阵列中,接着可使用精确感测放大器测量膜电势且测试尖峰。SIMD处理器的阵列可设计成实施模拟实施方案或数字实施方案两者或任一者。
项目716、717和719指代各种神经形态计算。这可涉及确定、更新和使用表征突触连接的权重。权重可以类似于突触前ID的模式来分配,这使得其存取适合于由位掩码预测的控制器109执行的操作。因此,在产生用于延迟桶的位掩码之后,控制器109可开始存取对应于位掩码中的所有设定位的相关权重,且将突触电流累加到用于每一神经元的指定寄存器(例如,每个神经元10个位线)中。如果控制器109已多路复用与位寻址具有相同BW的一组存储器阵列(例如,追踪到人脑的860亿个神经元的32个阵列),那么其可在执行匹配操作的同时开始在后台存取所有存储器阵列。举例来说,权重可在位串行配置中与突触前ID共同分配,但是可能需要更宽的存储器阵列。替代地,当位掩码可用于消耗较少功率时,控制器109可开始仅存取相关权重。
各种实施例可针对权重分配策略。也就是说,权重是如何在节点中存储和存取的。可按位串行方式(例如,类似于突触前ID的分配)、位并行方式、矩形方式或其它配置分配权重。假设每个神经元可能平均有10个突触匹配(例如,对于人脑:1000个连接的1%),这导致分析每个处理器仅10×1.6K=16K权重的总和(例如,单指令多数据(SIMD))。此可为极稀疏的,且可减少对SIMD具有16K融合乘积累加(FMA)单元的要求(例如,1.6K,每个神经元一个或更少,可足以保持其移植到16K宽的存储器阵列)。因此,位并行分配可具有更好的功率优势且减少对存储器带宽的要求,特别是在存储器阵列容量允许分流或屏蔽每个存储器行的阵列的一些区段的情况下。并且,此配置可导致在LTP操作期间的较快处理。分流或预测位串行分配也可降低功率。然而,位并行存储方式可能需要从位串行分配的ID阵列到位并行分配的权重阵列的固定映射方案。在任一情况下,如果另一阵列(或用于此方法的高度多路复用版本的一组阵列)可用且可与突触前ID的阵列同时操作,那么涉及突触整合的计算可完全隐藏且在搜索和匹配操作的后台期间执行。一些实施例涉及与突触前ID逐位共同分配权重。此实施例可能需要更宽的阵列(至少是其它配置的两倍宽)。
以下提供计算STDP的LTD和LTP部分的额外实例,其可为神经形态计算的一部分。在求解Vm且测试尖峰(在此情况下,检测到突触后尖峰和其突触后的神经元尖峰)之后,应用学习规则(STDP)。对于STDP的LTD部分,对于LTD窗口内突触后尖峰之后到达的所有突触前尖峰,突触效率可能需要被抑制。根据LTD曲线执行权重的减小,且可取决于相对于突触后尖峰的时间到达突触前尖峰的时间。因此,刚好在求解Vm和测试尖峰之后或期间记录突触后尖峰时间步长(此尖峰时间可为神经相关变量的部分)。此记录在Vm计算时间预算内。随后,同一神经元的后续突触后尖峰可覆盖其最后尖峰时间,且整个LTD窗口从特定神经元的新时间“重新开始”。权重减小的LTD任务可与突触整合的以上任务合并。突触整合可涉及每一权重接收一个尖峰,所述尖峰在检测到尖峰神经元ID与存储在存储器中的突触前ID的匹配时从存储器中检索。因此,在突触整合之前,每一神经元的权重需要根据LTD规则减小。
对于LTD的“线上”实施方案,具有一个最新的突触前尖峰可能就足够了,因为更新是即时的(在当前时间步长中)。因此,权重变化的幅度基于最后的突触后尖峰时间和当前权重值。
由于SIMD处理器阵列具有足够的计算能力,此计算可在搜索和匹配操作内(在搜索和匹配操作的后台)进行预算。一些实施例涉及使用自定义STDP指令,所述指令仅检索所有神经元的突触后尖峰时间一次。随后,其可计算依赖于所述时间的所有值,且再利用每一权重的这些中间计算值以计算更新的权重值,且还执行突触整合。匹配的每一后续位掩码可触发突触整合和/或LTD规则且并行地产生其结果。如果神经元在当前时间步长中产生尖峰,那么权重的减小仍可为有效的。这可能是这种情况,因为Vm计算以及随后的突触后尖峰产生取决于利用取决于最后的突触后尖峰的每一LTD的已经更新的权重执行的突触整合。
执行STDP的LTP部分可更复杂,因为其取决于在突触后尖峰之前到达LTP窗口内的突触前尖峰。因此,LTP可在突触后尖峰时计算或在其之前推测性地预先计算。对于对人脑进行建模的SNN,LTP窗口的大小通常为约100毫秒。LTP计算可由如在Vm计算期间所检测到的突触后尖峰触发。因此,其可与尖峰通信阶段并行处理且独立于尖峰通信阶段,但在时间步长的剩余时间预算内(例如,1毫秒)。替代地,可在搜索和匹配操作和突触整合操作期间推测性地计算LTP。然而,在另一实施例中,可在突触整合(与其合并)之前的下一时间步长中计算LTP,因此,导致每个时间步长仅存取突触权重一次。然而,在另一实施例中,下一时间步长可在与LTP合并的当前时间步长中进行,且可在接收下一尖峰之前预先计算整个系统状态,因此仅在接收到下一时间步长中的新尖峰时才准备好更新。后一种情况可被称作“先行一步”或递归为所有情况中最有吸引力的,因为其为异步的且部分为事件驱动的。
在一些实施例中,基于在LTP窗口的持续时间内每一突触的最后一个突触前尖峰的保持时间,在检测到突触后尖峰之后执行LTP计算。举例来说,每一神经元可需要存储对应的突触前尖峰历史。保持此历史的紧凑方式是在经由搜索和匹配操作扩展尖峰之前,对于根据人脑的大小建模的SNN,作为尖峰高速缓存器的简单延续额外100毫秒。然而,在此情况下,需要再次执行搜索和匹配操作,且不是一次,而是100次(将100个延迟桶中的每一个应用到突触前ID阵列,将其移位,且再次应用等)。搜索的范围仅限于在给定时间步长中传输尖峰的神经元的突触连接(例如,突触前尖峰ID)。假设有1毫秒,且假设搜索和匹配每单遍次对人脑大小的SNN的预算为100微秒(或HPC版本中的2微秒),这超出了我们对人脑的预算(100×100微秒=10毫秒)。对于HPC版本,此操作的时延更好。另外,此处理所需要的存储器存取量将导致相当大的功耗。
在突触后尖峰之后实施LTP计算的另一方式是在搜索和匹配操作之后存储尖峰历史。尖峰历史包含指示当每一突触接收尖峰时所述突触的最后时间步长的数据。假设存在100个时间步长,其中每一时间步长为1毫秒,人脑的尖峰时间宽度可限制为7位。存储和/或更新此尖峰时间可与搜索和匹配操作合并。在检测到某一突触连接的尖峰ID匹配时,更新此连接的时间。此外,如果权重和时间步长以共同分配的方式存储,那么时间步长更新可与权重检索和立即写回合并(如上文所论述,与LTD合并)。因此,在写回突触时,记录新时间,这不具有时延惩罚但可能具有存储惩罚,每个权重增加7位(对于人脑,32b+7b=39b)。因此,人脑的突触所需的存储器容量为1.6M×39/8=7.8MB。
最后突触前尖峰时间的值(例如,7位)可与SIMD处理器阵列的某一全局偏移有关。可每128个时间步长更新一次此全局偏移。此全局偏移的更新触发所有权重的所有时间步长的更新。更新时间步长的此操作非常适合LTP计算。因此,为了计算突触尖峰时间(例如,7位值),从当前时间步长减去当前全局偏移。随后针对参与给定时间步长中的突触整合的所有突触更新最后突触前尖峰时间的此值(例如,7位)。
7位时间步长的替代方案为存储在存储器单元电容器中(或其群组中)的模拟电压电平。此电压电平以指数方式随时间自然地衰减,且可用于权重更新计算。此值可在突触前尖峰时刷新,表示其时间接近潜在的突触后尖峰。然而,为了读取此模拟电压值,系统将需要精密模/数转换器(ADC)。并且,还需要屏蔽不需要刷新的单元的能力。
LTP计算可在由SIMD处理器阵列产生突触后尖峰的位掩码之后进行。对于此位掩码内的所有设定位(所有其它位都被预测或屏蔽),节点100需存取每一突触连接参数(例如,权重)和相对于当前全局偏移计算的相关联的突触前尖峰时间。节点可通过计算当前时间步长与当前全局偏移之间的距离来计算突触前尖峰时间,且所述距离减去突触前尖峰时间。节点可检测在LTP窗口的时间步长内计算的突触前尖峰时间,使用与LTD相同的方程但其正的部分来计算新的权重,并将新的权重与原始突触尖峰时间位值一起存储回来。
在一些情况下,在强制执行严格或直接因果关系的情况下,可能需要使突触尖峰时间位值失效(例如,通过将突触尖峰时间位值设置为全部1s),以防止后续突触后尖峰的权重更新,从而消除间接因果关系(例如,单个突触前尖峰造成同一神经元中多于一个后续突触后尖峰)。
由于位掩码可为稀疏的(例如,所存储神经元标识符的1%),可通过存取列中的权重数据来有效地计算LTP操作,列的每一群组(例如,10BL)与某一神经元相关联。在例如ReRAM交叉点阵列的对称存储器中,逐列存取是可能的。在此些情况下,从WL侧接合另一SIMD处理器以计算LTP。因此,此计算将与尖峰神经元的数目(例如,存储器阵列的1%)成比例。对于标准易失性存储器(例如,DRAM),这是不可能的,因为WL面向存取晶体管门,而不是实际媒体。因此,计算将与跨越WL分配的数据成比例。因此,位并行分配将导致用于易失性阵列中的LTP的较好性能。
其它实施例涉及跨越位线水平地分配与每一神经元相关联的权重,使得每一神经元采取若干WL。在此实施例中,计算在神经元内为并行的,但神经元经串行处理(例如,每一神经元的权重加载于SIMD处理器中且经处理)。这些操作可以是独立于每个权重的。然而,突触整合(其可基本上涉及求和)为并行缩减操作(对数复杂性),且因此将导致‘log(突触前尖峰)’惩罚和更复杂的硬件。然而,此选择不应被低估,尤其考虑到突触前尖峰的稀疏性。实施其的主要困难是,当通过延迟桶对所有神经元进行搜索匹配操作时,可能比一次对一个神经元进行搜索匹配操作更有效(所有尖峰ID与单个神经元匹配对比与多个神经元匹配)。然而,在神经元并行搜索的情况下,尖峰位掩码的流水线化可为不可能的,直到其经过所有延迟桶。
通过将当前步骤中的LTP计算与突触整合和/或下一步骤的LTD合并,位并行分配或水平分配可能在性能和功率上没有太大差异(取决于存储器阵列的分流能力)。
LTP操作的时延类似于搜索和匹配操作(要存取相同数目的WL),但是,其是读-改-写存取,而不是搜索和匹配操作中的读-写-回存取。假设LTP计算的预算为10纳秒,导致每一WL为30ns,LTP计算将花费3200WL×30ns=96us或约100us,并为人脑提供额外预算(例如,对于存储在100个延迟桶中的32b浮点,每一延迟桶10个权重)。单一LTP向量操作的30纳秒可通过流水线化多个操作来进一步减少。举例来说,10纳秒第1次读取、10纳秒第2次读取、对来自第1次读取的数据的10纳秒计算、10纳秒第1次读取、对来自第2次读取的数据的10纳秒计算和10纳秒第2次写入将等于总共40纳秒(由于流水线)而不是60纳秒。此操作将需要SIMD处理器处的另外一组向量寄存器。
如果全局偏移的更新超出了时间步长限制,那么可以与LTP步长整合,而没有时延惩罚(在任何情况下,由于DRAM的易失性,读取和写入回用于WL的整个选择的数据)。对于HPC版本(例如,其中对于人类,尖峰ID 37位字从37个阵列中一次读取,且在此情况下,可以相同的方式读取32b浮点),此操作的时延是100个延迟桶×30纳秒,对于人脑是3微秒。通过上文所描述的流水线技术,可进一步改进此操作(以平衡计算与存储器存取)。
在神经元生成突触后尖峰的时间步长中接收到的突触前尖峰的LTP权重更新将是有效的。这是因为Vm的计算以及随后的突触后尖峰取决于电荷和/或电流整合。在神经元产生突触后尖峰的时间步长中到达的突触前尖峰对所产生的突触后尖峰贡献最大。
在另一实施例中,LTP计算可移动到下一时间步长且可与突触整合和LTD合并,从而导致每个时间步长在突触上仅单遍次(而非存取其两次:第一次用于突触整合/LTD,且第二次用于LTP)。然而,对于每一权重的LTP权重更新可能需要在突触整合之前进行,以便保存SNN算法依赖性。因此,对于接收尖峰的所有权重,规则可如下描述:LTP(来自最后步长)=>突触整合与LTD=>Vm更新。
因为LTP用于检测当前突触后尖峰,所以最好将LTP限制为仅在当前时间步长中接收尖峰的权重,以便计算与LTD的突触整合并尽快执行Vm更新。这将允许继续进行检测突触后尖峰且尽可能快地将其发送到SNN网络。在这完成之后,并且检测到并产生新的尖峰,SNN系统将需要继续将LTP应用于在最后一个时间步长中产生尖峰的神经元的其它权重。因此,将LTP移动到下一步长的后果可能需要将权重扫描分成两个部分(一个具有突触整合/LTD且一个没有)。
然而,在另一替代版本中,下一时间步长的计算可‘提前’。在此实施例中,操作在Vm更新之后立即开始,且可进行到需要依赖性的点(新的尖峰尚未被接收)。在此情况下,LTP计算(正如上面的版本)可与下一步长的突触整合和LTD合并。
在下一时间步长中,节点可‘移动’延迟桶且开始对相同尖峰集合的搜索操作,但是相对于延迟桶中的突触前ID具有‘++1’偏移。计算正常进行,在除尚未从网络到达的延迟桶之外的所有延迟桶中进行搜索。产生尖峰掩码,接着LTP(来自此步长)=>突触整合与LTD(对于下一步长)。对于每一尖峰神经元的每一权重进行LTP。根据部分尖峰掩码执行突触整合与LTD。在所有这一切被预先计算之后,节点100可停止待机以接收来自SNN网络的最新尖峰集合。
在项目722处,节点100产生且传输出站尖峰消息307。响应于识别膜电势值且如果所述值已越过尖峰阈值而产生出站尖峰消息307,这可取决于膜电势的演进而发生或不发生。出站尖峰消息307包含目标神经元424作为源神经元。出站尖峰消息还可包含时间延迟208、时间量子211、尖峰强度214和潜在的其它描述符。节点100可通过将出站尖峰消息307广播到其它节点100(例如,经由网状架构132)或通过经由即时节点100的输入部分将其路由回而传输出站尖峰消息307。然后,出站尖峰消息307类似于入站尖峰消息304(但不需要由输入过滤器过滤)处置以用于后续的一轮处理。
图7从而展示通过执行神经形态操作而流水线化搜索和匹配操作的实施例。举例来说,一旦尖峰消息开始到达,节点就继续处理其。此涉及在第一延迟桶中搜索匹配突触连接,产生定位匹配的位掩码,且对所述小匹配子集继续进行突触整合/LTD。在接收到含有在此时间步长中要到达的尖峰的数目的屏障消息时,可通知节点100其需要预期的尖峰的数目。当所有尖峰消息到达时,节点100继续进行以下操作:完成搜索和匹配操作的小部分、突触整合操作的一部分、全Vm更新、新尖峰消息的产生以及将出站尖峰消息立即传输到SNN网络。这取决于网络性能,因为操作是在网络通信的背景下进行的。存储器硬件可平衡以偏移网络。一些关键步骤变为与单个最新延迟桶(搜索和匹配操作以及突触整合)和Vm更新相关的步骤。因此,可需要通过将相关数据放置在快速高速缓存器中并对其预加载,或甚至部分或推测性地预先计算Vm来加速这些操作。如果这样做,那么类似此系统的系统的性能将几乎完全取决于网络。所有计算和存储器存取可能几乎完全被网络通信隐藏。
另外,通过延迟LTP和LTD直到接收到全局奖励/惩罚信号(例如,通过特殊消息),可利用奖励调制进一步扩展STDP操作。代替计算由尖峰触发的LTP/LTD,节点可记录尖峰时间。此后,仅在/当接收到奖励消息时,才触发STDP计算。突触更新值可取决于突触前尖峰时序增量,此外还取决于神经元的最后一个突触后尖峰与接收奖励的时间之间的时间距离。随着奖励调制特征就位,可用仪器或经典调节训练SNN。
图8为说明根据各种实施例的在SNN系统中使用路由器和端口转换器路由尖峰消息的拓扑的图。举例来说,图8提供SNN系统的集群视图,其包含节点之间的尖峰消息的各种路由方案、神经路由器中的笔记群组和路由器之间的总体尖峰消息流。一些实施例包含端口转换器的使用以促进路由。另外,可使用各种方法来调度尖峰消息,例如通过延迟对尖峰消息进行分组和/或通过突触连接标识符和/或神经元标识符对尖峰消息进行分组。
图8包含路由器800的阵列。路由器800可包含一或多个节点100。节点100可嵌入路由器800内,或路由器可以其它方式耦合到一或多个节点100。路由器800可为单个硅裸片或硅裸片的堆叠(例如,与一或多个其它存储器裸片耦合的一或多个逻辑裸片)。路由器800的阵列可为印刷电路板(PCB)或连接的PCB或晶片的阵列,其中每一路由器800直接连接到晶片上的其它路由器800。在一些实施例中,路由器800包含四组端口,每组端口表示为北(N)、东(E)、南(S)和西(W)。可基于其与路由器800的相对位置来参考每组端口。虽然图8展示包含四组端口的路由器800,但本公开预期端口的其它布置。举例来说,每一路由器800可具有顶部和底部端口,由此形成三维路由系统。如本文所使用,路由器800选择和路由一或多个节点100内或路由器自身内的数据包,以及任选地路由路由器的北、南、西、顶部、底部连接。
图8描绘路由器拓扑的一个实例,其中路由器800在行和列的二维阵列中组织。举例来说,路由器可对应于特定列(例如,列A至D)或特定行(例如,列1至4)以建立在A1至D4范围内的路由器800的阵列。每一路由器可使用路由器标识符(例如,路由器A1至D4)寻址。
路由器拓扑还可包含一或多个端口转换器801(标记为“PT”)。端口转换器801可沿着路由器800的阵列形成,例如沿着北侧(例如,PT N1至N4)或沿着西侧(例如,PT W1至W4)布置。每一北侧端口转换器促进尖峰消息沿着相应列的流动。举例来说,PT N1专用于沿着第一列路由器(例如,列A中的路由器)中继或转发尖峰消息。PT N2专用于沿着第二列路由器(例如,列B中的路由器)中继或转发尖峰消息。PT N3专用于沿着第三列路由器(例如,列C中的路由器)中继或转发尖峰消息。且PT N4专用于沿着第四列路由器(例如,列D中的路由器)中继或转发尖峰消息。
每一西侧端口转换器促进尖峰消息沿着相应行的流动。举例来说,PT W1专用于沿着第一行路由器(例如,行1中的路由器)中继或转发尖峰消息。PT W2专用于沿着第二行路由器(例如,行2中的路由器)中继或转发尖峰消息。PT W3专用于沿着第三行路由器(例如,行3中的路由器)中继或转发尖峰消息。且PT W4专用于沿着第四行路由器(例如,行4中的路由器)中继或转发尖峰消息。除了北和西端口转换器之外,其它端口转换器还可位于南和东侧上,以便促进路由器800的行和列从这些侧的连接。另外,在一些实施例中,路由器800可堆叠,从而形成垂直列。在此类实施例中,可连接来自垂直列的顶部和底部的额外端口转换器。因此,作为结果,路由器阵列800在本实施例中可为三维的。多个路由器阵列可通过在每一侧连接相关端口转换器而彼此连接。在此连接的视图中,端口转换器可共享。举例来说,图8中的北端口转换器可与第二路由器阵列(未说明)共享;具体地图8中的北端口转换器可充当第二路由器阵列的南端口转换器。
第一组通道将每一路由器800连接到一或多个端口转换器801。第一组通道以实心黑线连接描绘。举例来说,每一路由器800具有经由第一组通道耦合到相应北侧端口转换器801的一组北端口。另外,每一路由器800具有经由第一组通道耦合到相应西侧端口转换器801的一组西端口。第二组通道将每一路由器800耦合到一或多个相邻路由器800。第二组通道描绘为中空白线连接。举例来说,路由器B3经由路由器的北和西端口经由第一组通道耦合到端口转换器N2和W3。另外,路由器B3经由路由器的东和南端口经由第二组通道耦合到路由器B2、B4、A4和C4。
实施例涉及一种全方位路由器(例如,在路由器的多个侧上具有多组端口,例如北、东、南和西,且在一些实施例中,顶部和底部端口),且提供将尖峰消息从路由器的任何端口路由到任何其它端口的能力。端口转换器801位于路由器阵列的侧上。每一路由器800可包括一或多个节点100。在一些实施例中,节点100包括使用硅穿孔(TSV)连接彼此耦合的高带宽存储器(HBM)堆叠、混合存储器立方体(HMC)堆叠或其它类似堆叠。在其它实施例中,节点100可包括接合的存储器和逻辑裸片、多层面裸片、PCB的组合件或其它类似结构。路由器800还可包含与存储器耦合的路由处理器。
路由器800的存储器堆叠可放置在硅插入件上,其中路由处理器嵌入到插入件中。路由器可包含用于存储路由表和尖峰消息的存储器。路由处理器配置成基于路由表而路由数据包。
端口转换器801配置成将外部网络协议翻译为路由器协议且返回。在一些实施例中,外部网络协议可包括以太网(或类似物理或数据链路层)协议,且路由器协议可包括外围组件互连高速(PCIe)、计算机高速链路(CXL)、双倍数据速率(DDR)协议。可实施用于外部网络协议和路由器协议的其它类似协议,且前述实例并不意图为限制性的。SNN系统可通过将符合路由器协议的通信转换成符合网络协议的通信而在极高带宽下操作,且反之亦然。举例来说,可根据存储器协议(例如,DDR)产生尖峰消息,且接着根据网络协议(例如,以太网)将尖峰消息包化到网络数据包中。这可涉及通过将前导码、标头和其它字段添加到尖峰消息而将尖峰消息封装到数据包中。
端口转换器801可在一侧上从存储器通道(或PCIe道或其它类型的路由器协议)读取尖峰消息,和/或将尖峰消息写入到存储器通道(或PCIe道或其它类型的路由器协议)。接着,在另一侧,端口转换器801可在另一侧上将其发送到以太网物理接口或从以太网物理接口接收其作为包化尖峰消息。具体地,当接收数据包时,端口转换器可将数据包写入-广播到连接到每一端口转换器的存储器通道的所有路由器。举例来说,端口转换器W1沿着第一组通道(实心黑线)将其数据包写入-广播到行1中的所有路由器,且端口转换器N1也在第一组通道上向列1中的所有路由器做同样的事情。以相同方式,所有其它端口转换器在第一组通道上进行写入-广播。
可通过将所有路由器物理地连接到单个存储器通道来进行写入-广播。此类连接可符合DDR或具有用于存储器排选择的装置选择线的类似协议。然而,在此情况下,对于写入-广播操作,装置选择的组合可将所有路由器800放置于接收模式中,这可使得每一路由器配置成接收数据且将所接收数据放置于每一路由器800内的指定接收缓冲空间中。可需要信号放大器和中继器,以便将可靠的广播提供到许多路由器800。
写入-广播允许将数据包从任何西侧端口路由到任何北侧端口,且反之,从任何北侧端口路由到任何西侧端口。举例来说,PT N1可使用第一组通道和装置选择线从列1读取数据包。此列中的每一路由器800含有从相应西侧端口接收到的数据包。举例来说,路由器A1处理从W1接收到的数据包,路由器A3处理从W2接收到的数据包,路由器A3处理从W3接收到的数据包,且A4处理从W4接收到的数据包。相同地适用于所有北侧端口转换器N1至N4,因为西侧端口转换器W1至W4将其数据包写入-广播到其相应行,且使得其可在每一列中用于所有北侧端口转换器N1至N4。
类似地,端口转换器W1可使用第一组通道和装置选择线从行1读取数据包。此行中的每一路由器800含有从相应北侧端口接收到的数据包。路由器A1处理从端口N1接收到的数据包,路由器B1处理从端口N2接收到的数据包,路由器C1处理从端口N3接收到的数据包,且路由器D1处理从端口N4接收到的数据包。相同地适用于所有西侧端口转换器W1至W4,因为北侧端口转换器将其数据包写入-广播到其相应列,且使得其可在每一行中用于所有西侧端口转换器。在一些实施例中,上文所描述的方法可整体地应用到路由器阵列的东/南和顶部/底部连接,且单独地应用到每一路由器。此外,在一些实施例中,除北/西方法之外或与其组合,还可应用所述方法。
当从路由器800的相应行或列读取数据包时,每一端口转换器801可使用装置选择线来选择要从中读取数据包的特定装置(存储器排)。写入广播的时延可为约10至20纳秒(例如,如果路由器协议为DDR等),且同样适用于使用存储器排读取数据包。
在一些实施例中,每一端口上的每一路由器800的存储器缓冲器可在内部桥接到彼此,使得可在北通道处存取到西端口的广播数据,且可在西通道处存取到北端口的广播数据。替代地,每一路由器800可包含共享缓冲器,所述共享缓冲器在所有端口之间共享。举例来说,写入到路由器西端口的数据包可在北通道上存取,且写入到路由器西端口的数据包可在西通道上存取。此可为通过重新引导和处理数据包的路由器处理器来实现。举例来说,处理器可选择缓冲器来放置数据包,且路由器处理器可根据特定针对其所介接的端口转换器的端口的路由表来过滤数据包。举例来说,路由器处理器可使用循环方法来选择缓冲器。
如上文所论述,数据包可从任何西端口路由到任何北端口,且从任何北端口路由到任何西端口。数据包还可在西端口之间路由且还可在北端口之间路由。这涉及使用第二组通道(展示为中空白色线)。在此情况下,以环状方式或菊花链状方式将数据包从一个路由器转发到另一个路由器。举例来说,沿着列1的路由器(例如,路由器A1至A4)可沿着经由南端口转发数据包。在此列中,单个环步骤可为:[A1]=>[A2];[A2]=>[A3];[A3]=>[A4];[A4]=>[A1]。因此,所有西数据可在4个步骤(跳)中在各列内交换。在一些实施例中,第二组通道(展示为中空白色线)可为第一组通道的一部分。这可通过通道模拟(例如,相同虚拟通道上的2个或更多个虚拟通道)或通过虚拟通道上的时间复用数据来实现。
物理上,可使用专用通道(例如,在每一路由器800中一个用于输入且另一个用于输出)或通过与写入-广播的时间共享或时间复用来实现环状数据交换。使用后一种方法的好处是引脚排列更低。通过此方法,下文描述如何路由数据包(上文[A1]=>[A2];[A2]=>[A3];[A3]=>[A4];[A4]=>[A1])可用广播系列替换:[A1]=>{[A2][A3][A4]};[A2]=>{[A1][A3][A4]};[A3]=>{[A1][A2][A4]};[A4]=>{[A1][A2][A3]}。
另外,由于写入-广播,每一列可含有来自每一西端口的数据的副本(例如,来自A1==W1的数据包的副本在装置A1;B1;C1;D1中)。因此,在此实施例中,每一列可仅仅交换四分之一数据包。举例来说,列0交换第一四分之一,列2交换第二四分之一,列3交换第三四分之一,且列4交换第四四分之一。此结果是交换速度提高四倍,这可能有助于减轻长时延。
所有上文还适用于在北端口之间交换数据包的情况。除此之外,路由处理器的相同过滤和路由技术应用于在第二组通道上交换的数据包和在第一组通道上交换的数据包。
对于较高吞吐量,HBM装置(或其它类型的装置)可用于实施路由器800且可放置在硅插入件或PCB的两侧上,由此使端口和带宽的数目加倍。在此情况下,两个平面可通过在PCB的两侧周围延伸第二组通道的环而交换其数据。
图8由此展示路由器800如何与其它路由器800一起实施尖峰神经网络(SNN)以形成路由器A1至D4的阵列。每一路由器可包含一或多个节点100,使得每一节点存储多个神经元和突触连接。每一路由器800具有将路由器耦合到端口转换器801的第一端口(例如,北端口或西端口)。这使用第一组通道实现。另外,每一路由器具有将路由器耦合到相邻路由器的第二端口(例如,东或西端口)。每一路由器800可包含路由器处理器,其用于执行广播或多播在路由器800内产生的尖峰消息和/或将从一个路由器800接收到的尖峰消息转发到另一路由器800的各种路由操作。可经由第一端口(例如,从端口转换器)接收尖峰消息且经由第二端口转发到相邻路由器。
每一路由器800可包含配置成存储路由器800的地址表的存储器。地址表配置成经由端口转换器将由路由器800产生的尖峰消息路由到其它路由器的子集。这相对于图9更详细地描述。
图9为说明根据各种实施例的SNN系统中路由尖峰消息的通信的图。路由器800可存储地址表808。地址表为可动态更新表,其允许路由器将由路由器800内的一或多个节点产生的尖峰消息多播到目标路由器。广播是指将消息传输到网络中的所有接收组件。举例来说,如果网络由路由器A1至D4构成,那么由路由器A1进行的广播将由A1发送到所有其它路由器A2至D4。这有助于网络业务量,从而可增加时延。另一方面,当装置将消息传输到接收装置的选择性群组以减少网络业务时发生多播。这涉及选择性地传输消息的智能程度。可通过将数据写入到每一路由器中的缓冲器来实现广播和多播两者。接着,端口转换器可从此处读取此数据,且在读取期间,数据可在整个通道上可见,且由此可由其它路由器窥探。此操作被称作读取-广播或读取-多播。
随着BNN学习,BNN可能会随着时间的推移“重新接线(rewire)”其神经连接,SNN会随着时间的推移通过改变突触权重来产生或删除突触连接。因此,传输尖峰消息的路由器800可能不知道哪些路由器含有目标突触连接(或目标神经元)。与广播相比,多播减少了网络业务,但还可在目标路由器方面具有包含性,以确保尖峰消息与跨越多个路由器800的SNN中的所有相关突触连接匹配。
地址表808将特定路由器中的产生尖峰消息的神经元的源神经元标识符映射到识别SNN系统中的所有路由器的子集的至少一个路由器标识符。举例来说,路由器A1的节点100中的神经元可产生尖峰消息。尖峰消息可包含识别此神经元为源神经元的标识符。SNN系统配置成确定此尖峰消息需要传递到的所有突触连接和目标神经元。换句话说,SNN系统配置成识别经由突触连接连接到源神经元的所有神经元,以接着执行神经学计算以确定新神经元状态和突触连接状态。另外,SNN系统接着可基于神经元状态是否超出阈值而产生新尖峰消息(例如,突触后尖峰消息)。
地址表可包含源神经元标识符的列表(例如,出于说明性目的展示为十六进制值)。地址表808中的源神经元标识符表示特定路由器、路由器A1内含有的神经元身份。地址表808中的每一源神经元ID映射到一或多个目标路由器。举例来说,源神经元ID 0x0a4e映射到路由器A3和B3。目标路由器的此列表表示由ID为0x0a4e的源神经元产生的尖峰消息的多播的目标路由器。
在一些实施例中,地址表808配置成响应于从SNN网络中的另一路由器接收到的同步消息813而更新。举例来说,路由器A1可从其它路由器A2至D4接收同步消息813。同样地,路由器A1可产生同步消息且将其传输到其它路由器A2至D4,以更新存储于其它路由器A2至D4中的地址表808。在这方面中,每一路由器800可将同步消息813周期性地传输到其它路由器800。
同步消息813可包含对应于SNN内的神经元的源神经元标识符的列表以及指示寻址SNN内的神经元的频率的尖峰历史。图9的实例展示从路由器A3接收同步消息813的路由器A1。路由器A3可追踪由来源于路由器A1的神经元为目标的所有神经元。举例来说,响应于执行入站尖峰消息的搜索和匹配操作,路由器A3可编译属于对应于匹配的路由器A1(以及其它路由器)的源神经元ID的列表。另外,路由器A3可量化速率、频率、时间或指示来自不同路由器(例如,路由器A1)的源神经元对即时路由器(例如,路由器A3)中的神经元的尖峰的程度的其它历史度量。这存储为历史数据,其映射到源神经元ID。
举例来说,路由器A3执行搜索和匹配操作,且确定来自路由器A1的数个神经元已以存储于路由器A3中的神经元为目标。这展示于同步消息813中的源极神经元ID的列表中。对于ID为0x0a4e的源神经元(其为路由器A1中的神经元),路由器A3记录“26”的分数,指示此源神经元频繁地以路由器A3中的神经元为目标。此信息存储于同步消息中且被传输到路由器A1。
响应于来自路由器A3的同步消息813,路由器A1确定ID为0x0a4e的神经元(其为路由器A1中的神经元)有可能具有与路由器A3中的一或多个神经元的突触连接。结果,路由器A1更新地址表808以指示ID为0x0a4e的神经元应具有被路由到路由器A3的其尖峰消息。
图10为说明根据各种实施例的在SNN系统内路由尖峰消息的操作的流程图。流程图中的框可表示可由控制器109或路由器800中的其它逻辑执行的微码、机器代码、固件或其它软件。流程图的框可替代地表示方法1000中的步骤。所述方法可由路由器800执行。
在项目1002处,路由器800接收出站尖峰消息。路由器800可包含一或多个节点100,使得每一节点100包含神经元和突触连接的集合。路由器的神经元可基于其神经元状态且响应于神经元接收先前尖峰消息而产生尖峰消息。
在项目1005处,路由器100确定神经元标识符。神经元标识符可为指示产生尖峰消息的神经元的位序列。由路由器的神经元产生的尖峰消息可存储于输出缓冲器中。路由器的路由器处理器可解析每一出站尖峰消息以确定原始神经元。
在项目1008处,路由器800执行且地址表查找以确定目标路由器的子集。举例来说,路由器800可存储将神经元标识符映射到目标路由器标识符的地址表808。通过以路由器的子集为目标而不是SNN系统中的所有路由器,实施例提供多播(而不是广播,或除广播以外)以减少网络业务。
在项目1011处,路由器800将尖峰消息多播到地址表808中所识别的目标路由器。举例来说,路由器800可将尖峰消息输出到将路由器800耦合到一或多个端口转换器801的第一端口上。端口转换器801可将尖峰消息转换为网络包,且通过将尖峰消息路由到地址表808中的目标路由器而进行多播操作。
在项目1014处,响应于从其它路由器接收到的同步消息813,路由器可更新地址表。同步消息813可指示哪些路由器应当由特定路由器的神经元寻址。
尽管流程图展示了特定执行次序,但应理解,执行次序可以不同于所描绘的执行次序。举例来说,可以相对于所展示次序打乱两个或更多个框的执行次序。同样,连续展示的两个或更多个框可同时执行或部分同时执行和流水线化执行。此外,在一些实施例中,可跳过或省略框中的一或多个。另外,出于增强实用性、计费、性能测量或提供故障检修辅助等目的,可以将任何数目的计数器、状态变量、报警信号标或消息添加到本文中所描述的逻辑流程中。应理解,所有此些变化是在本公开的范围内。
进行流程图的操作的组件亦可包括可实施于由例如计算系统中的处理器等指令执行系统使用或结合所述指令执行系统使用的任何非暂时性计算机可读媒体中的软件或代码。在此意义上,逻辑可包括例如语句,所述语句包含可从计算机可读媒体提取且由指令执行系统执行的指令和声明。在本公开的上下文中,“计算机可读媒体”可为可含有、存储或维持本文中描述的逻辑或应用程序以供由指令执行系统使用或结合指令执行系统使用的任何媒体。
图11说明根据本公开的一些实施例的包含由多个互连节点100构成的节点集群1102的实例联网系统1100。节点100可包含控制器109和一起集成到单个存储器装置中的各种存储器区段。单个存储器装置可制造于单个裸片上,或可为多裸片堆叠。每一节点100可与节点集群1102中的多个其它节点介接以实施尖峰神经网络(SNN)。SNN为计算机实施的基于存储器的系统,其模仿BNN模型化以处理信息。节点集群1102可为路由器800内的节点100的集群,或可为路由器800的阵列,其中的每一个含有一或多个节点100。
图11说明为联网系统1100的部分的计算系统1103的实例的实例部分。图11展示计算系统1103可如何集成到各种机器、设备和系统中,例如IoT(物联网)装置、移动装置、通信网络装置和设备(例如,参见基站1130)、电气设备(例如,参见电气设备1140)和车辆(例如,参见车辆1150)。
联网系统1100的计算系统1103和计算装置(例如,参见计算装置1122a、1122b、1122c和1122d)可以通信方式耦合到一或多个通信网络1120。计算系统1103包含例如总线1106、控制器1108(例如,CPU)、其它存储器1110、网络接口1112、存储系统1114、其它组件1116(例如,移动或计算装置中发现的任何类型的组件、GPS组件、输入/输出(I/O)组件、此各种类型的用户接口组件、传感器、摄像机等)和实施SNN的节点集群1102。其它组件1116还可包含一或多个用户接口(例如,GUI、听觉用户接口、触觉用户接口等)、显示器、不同类型的传感器、触觉、音频和/或视觉输入/输出装置、额外应用专用存储器、一或多个额外控制器(例如,图形处理单元(GPU)、神经处理单元(NPU)、神经处理器)或其任何组合。总线1106以通信方式耦合控制器1108、其它存储器1110、网络接口1112、数据存储系统1114和其它组件1116,且可在一些实施例中将此些组件耦合到节点集群1102。举例来说,网状架构132可耦合到总线1106。
计算系统1103包含计算机系统,其具有控制器1108、其它存储器1110(例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)、交叉点或交叉杆存储器、交叉杆存储器、快闪NAND或快闪NOR等)、节点集群1102和数据存储系统1114,其可经由总线1106(可包含多个总线)彼此通信。
换句话说,图11包含具有计算机系统的计算装置1122的框图,本公开的实施例可在所述计算机系统中操作。在一些实施例中,计算机系统可包含一组指令,其用于在执行时使机器至少部分地执行本文中所论述的方法中的任一或多种。在此类实施例中,机器可连接(例如,经由网络接口1112联网)到局域网(LAN)、内联网、外联网和/或互联网(例如,参见通信网络1120)中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
控制器1108表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特别地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、单指令多数据(SIMD)、多指令多数据(MIMD),或实施其它指令集的处理器,或实施指令集的组合的处理器。控制器1108还可以是一或多个专用处理装置(例如,ASIC)、可编程逻辑(例如,FPGA)、数字信号处理器(DSP)、网络处理器等。控制器1108配置成执行指令以用于执行本文中所论述的操作和步骤。控制器1108可另外包含网络接口装置,例如网络接口1112,以经由一或多个通信网络(例如,网络1120)进行通信。
数据存储系统1114可包含机器可读存储媒体(也被称作计算机可读媒体),在所述机器可读存储媒体上存储有一或多组指令或体现本文中所描述的方法或功能中的任何一或多个的软件。数据存储系统1114可具有执行能力,例如其可至少部分地执行驻存于数据存储系统中的指令。所述指令还可在其由计算机系统、另一存储器1110和节点集群1102中的至少一个以及还构成机器可读存储媒体的控制器1108执行期间完全或至少部分地驻存于所述另一存储器1110和节点集群中的至少一个内和/或控制器1108内。其它存储器1110可为或包含计算装置1122的主存储器或系统存储器。
如所提及,联网系统1100包含计算装置,且计算装置中的每一个可包含一或多个总线、控制器、存储器、网络接口、存储系统和其它组件。另外,图11中所展示和本文所描述的计算装置中的每一个可包含移动装置等或为移动装置等的一部分,例如智能手机、平板计算机、IoT装置、智能电视、智能手表、眼镜或其它智能家用电气设备、车载信息系统、可穿戴智能装置、游戏控制台、PC、数码相机或其任何组合。如所展示,计算装置可连接到网络1120,所述网络至少包含例如蓝牙等本地网、广域网(WAN)、局域网(LAN)、内联网、例如4G或5G等移动无线网络、外联网、互联网和/或其任何组合。在一些实施例中,如通过连接1119所展示,节点集群1102可包含至少一个网络接口,使得其可经由通信网络1120单独与其它装置通信。举例来说,网状架构132可耦合到通信网络1120。在这方面,节点集群1102的存储器模块或存储器模块系统可具有其自己的网络接口,使得此类组件可经由通信网络1120单独与其它装置通信。
本文中所描述的计算装置中的每一个可为以下各者或由以下各者代替:个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指定要由此机器进行的动作的一组指令(顺序的或以其它方式)的任何机器。
并且,虽然针对图11中所展示的计算系统1103示出单个机器,但术语“机器”也应被理解为包含单独或联合执行一组(或多组)指令以执行本文所论述的方法或操作中的一或多个的机器的任何集合。并且,所说明的计算装置以及计算系统中的每一个可各自至少包含总线和/或母板、一或多个控制器(例如,一或多个CPU)、可包含临时数据存储装置的主存储器、至少一种类型的网络接口、可包含永久数据存储装置的存储系统和/或其任何组合。在一些多装置实施例中,一个装置可完成本文中所描述的方法的一些部分,接着通过网络将完成的结果发送到另一装置,使得另一装置可以继续本文中所描述的方法的其它步骤。
虽然存储器、控制器和数据存储装置部分在示例性实施例中展示为各自是单个部分,但每一部分应被认为包含可存储指令且执行其相应操作的单个部分或多个部分。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的一组指令且使机器执行本公开的方法中的任何一或多个的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
除非另外特定陈述,否则例如词组“X、Y或Z中的至少一个”的分离性语言结合如所使用的上下文以其它方式理解为一般呈现项、术语等可为X、Y或Z,或其任何组合(例如X、Y和/或Z)。因此,此类分离性语言一般无意且不应暗示某些实施例要求X中的至少一个、Y中的至少一个,或Z中的至少一个各自都存在。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示为数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里且通常认为是引起所需结果的操作的自洽序列。操作是需要对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可以指将计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据操控和变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理数量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及一种用于执行本文中的操作的设备。此设备可以出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如包含软盘、光盘、CD-ROM和磁性光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中所呈现的算法和显示器本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造更专用的设备来执行方法是方便的。将如下文描述中所阐述的那样呈现各种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可包含其上存储有可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
应强调,本公开的上文所描述的实施例仅是为了清晰理解本公开的原理而阐述的实施方案的可能实例。可对上文所描述的实施例进行许多变化和修改而基本上不脱离本公开的精神和原理。所有此类修改和变化意图在本公开的范围内包含在本文中并受所附权利要求书的保护。
Claims (20)
1.一种计算系统,其包括:
第一路由器,其实施尖峰神经网络(SNN),所述第一路由器配置成存储多个神经元和突触连接;
所述第一路由器的第一端口,其耦合到端口转换器;
所述第一路由器的第二端口,其耦合到多个其它路由器,所述多个其它路由器实施所述SNN;及
存储器,其配置成存储地址表,所述地址表配置成经由所述端口转换器将由所述第一路由器产生的第一尖峰消息路由到所述多个其它路由器的子集。
2.根据权利要求1所述的系统,其中所述第一路由器配置成经由所述第一端口接收第二尖峰消息,且经由所述第二端口将所述第二尖峰消息转发到所述多个其它路由器中的其它路由器中的至少一个。
3.根据权利要求1所述的系统,其中所述第一尖峰消息包括产生所述第一尖峰消息的所述神经元的源神经元标识符。
4.根据权利要求3所述的系统,其中所述地址表将所述第一路由器中的产生所述第一尖峰消息的所述神经元的所述源神经元标识符映射到识别所述多个其它路由器的所述子集的至少一个路由器标识符。
5.根据权利要求1所述的系统,其中所述地址表配置成响应于从所述多个路由器中的第二路由器接收到的同步消息而更新。
6.根据权利要求5所述的系统,其中所述同步消息包括对应于所述SNN内的神经元的源神经元标识符的列表以及指示寻址所述SNN内的神经元的频率的尖峰历史。
7.根据权利要求1所述的系统,其中所述第一路由器配置成周期性地将同步消息传输到所述多个其它路由器。
8.根据权利要求7所述的系统,其中所述同步消息包括存储于所述多个其它路由器中的神经元的列表以及指示所述列表内的神经元由所述第一路由器匹配的频率的尖峰历史。
9.一种系统,其包括:
第一路由器,其实施尖峰神经网络(SNN),所述第一路由器配置成存储多个神经元和突触连接,所述多个神经元配置成产生以所述SNN内的多个其它路由器为目标的尖峰消息;
存储器,其配置成存储地址表,所述地址表配置成经由端口转换器将由所述多个神经元中的第一神经元产生的第一尖峰消息路由到所述多个其它路由器中的路由器的子集;且
其中所述第一路由器配置成从所述端口转换器接收第二尖峰消息,且将所述第二尖峰消息转发到所述多个其它路由器中的第二路由器。
10.根据权利要求9所述的系统,其进一步包括:
第一端口,其耦合到所述端口转换器;
第二端口,其耦合到所述第二路由器。
11.根据权利要求10所述的系统,其中所述第一尖峰消息配置成经由所述第一端口多播到路由器的所述子集。
12.根据权利要求11所述的系统,其中所述第二尖峰消息配置成经由所述第二端口转发到所述第二路由器。
13.根据权利要求9所述的系统,其中所述第一尖峰消息包括识别所述第一神经元的源神经元标识符。
14.根据权利要求9所述的系统,其中所述地址表将所述第一路由器中的所述第一神经元的所述源神经元标识符映射到识别路由器的所述子集的至少一个路由器标识符。
15.根据权利要求9所述的系统,其中所述地址表配置成响应于从所述多个其它路由器中的第二路由器接收到的同步消息而更新。
16.根据权利要求15所述的系统,其中所述同步消息包括对应于所述第一路由器内的神经元的源神经元标识符的列表以及指示寻址所述第一路由器内的神经元的频率的尖峰历史。
17.根据权利要求9所述的系统,其中所述第一路由器配置成周期性地将同步消息传输到所述多个其它路由器。
18.根据权利要求17所述的系统,其中所述同步消息包括存储于所述多个其它路由器中的神经元的列表以及指示所述列表内的神经元由所述第一路由器匹配的频率的尖峰历史。
19.一种用于在计算机实施的尖峰神经元网络(SNN)中路由尖峰消息的方法,所述方法包括:
通过第一路由器的第一神经元产生第一尖峰消息,所述SNN包括存储于多个其它路由器中的神经元集合,所述神经元集合句法地连接到所述第一神经元;
通过存取地址表将所述第一尖峰消息路由到所述多个其它路由器的子集,所述地址表配置成将所述第一神经元的标识符映射到识别所述多个其它路由器的所述子集的至少一个路由器标识符;及
响应于从所述多个其它路由器中的第二路由器接收到同步消息而更新所述地址表。
20.根据权利要求19所述的方法,其中所述同步消息包括对应于所述SNN内的神经元的源神经元标识符的列表以及指示寻址所述SNN内的神经元的频率的尖峰历史。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/951,898 | 2020-11-18 | ||
US16/951,898 US20220156564A1 (en) | 2020-11-18 | 2020-11-18 | Routing spike messages in spiking neural networks |
PCT/US2021/056022 WO2022108704A1 (en) | 2020-11-18 | 2021-10-21 | Routing spike messages in spiking neural networks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116648708A true CN116648708A (zh) | 2023-08-25 |
Family
ID=81587123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180084534.5A Pending CN116648708A (zh) | 2020-11-18 | 2021-10-21 | 在尖峰神经网络中路由尖峰消息 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220156564A1 (zh) |
CN (1) | CN116648708A (zh) |
WO (1) | WO2022108704A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023242374A1 (en) * | 2022-06-16 | 2023-12-21 | Innatera Nanosystems B.V. | Spike interconnect on chip single-packet multicast |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0811057D0 (en) * | 2008-06-17 | 2008-07-23 | Univ Ulster | Artificial neural network architecture |
US20180174028A1 (en) * | 2016-12-20 | 2018-06-21 | Intel Corporation | Sparse coding using neuromorphic computing |
US10824937B2 (en) * | 2016-12-20 | 2020-11-03 | Intel Corporation | Scalable neuromorphic core with shared synaptic memory and variable precision synaptic memory |
US10878313B2 (en) * | 2017-05-02 | 2020-12-29 | Intel Corporation | Post synaptic potential-based learning rule |
US20190102669A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Global and local time-step determination schemes for neural networks |
US11195079B2 (en) * | 2017-11-22 | 2021-12-07 | Intel Corporation | Reconfigurable neuro-synaptic cores for spiking neural network |
EP3881241A1 (en) * | 2018-11-18 | 2021-09-22 | Innatera Nanosystems B.V. | Spiking neural network |
-
2020
- 2020-11-18 US US16/951,898 patent/US20220156564A1/en active Pending
-
2021
- 2021-10-21 CN CN202180084534.5A patent/CN116648708A/zh active Pending
- 2021-10-21 WO PCT/US2021/056022 patent/WO2022108704A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022108704A1 (en) | 2022-05-27 |
US20220156564A1 (en) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11410017B2 (en) | Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching | |
US11055609B2 (en) | Single router shared by a plurality of chip structures | |
US10521714B2 (en) | Multi-compartment neurons with neural cores | |
US10785745B2 (en) | Scaling multi-core neurosynaptic networks across chip boundaries | |
CN107533666B (zh) | 具有用于可扩展事件驱动计算系统的异构存储器结构的网络和分层路由构造 | |
US8843425B2 (en) | Hierarchical routing for two-way information flow and structural plasticity in neural networks | |
US11049001B2 (en) | Event-based neural network with hierarchical addressing for routing event packets between core circuits of the neural network | |
CN110720095A (zh) | 通用并行计算架构 | |
CN116648708A (zh) | 在尖峰神经网络中路由尖峰消息 | |
US20220383080A1 (en) | Parallel processing in a spiking neural network | |
CN118265982A (zh) | 脉冲神经网络中的并行处理 | |
CN116113953A (zh) | 尖峰神经网络中存储器存取期间的流水线尖峰 | |
US20240086689A1 (en) | Step-ahead spiking neural network | |
WO2022108703A1 (en) | Search and match operations in spiking neural networks | |
KR102541000B1 (ko) | 인공신경망 구현을 위한 3차원 적층형 시냅스 어레이 스트링 |
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 |