CN111047031B - 用于神经网络中的数据重用的移位装置 - Google Patents

用于神经网络中的数据重用的移位装置 Download PDF

Info

Publication number
CN111047031B
CN111047031B CN201910884492.8A CN201910884492A CN111047031B CN 111047031 B CN111047031 B CN 111047031B CN 201910884492 A CN201910884492 A CN 201910884492A CN 111047031 B CN111047031 B CN 111047031B
Authority
CN
China
Prior art keywords
data
computing units
input data
neural network
computing
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
Application number
CN201910884492.8A
Other languages
English (en)
Other versions
CN111047031A (zh
Inventor
P-F·邱
W·H·崔
马雯
M·卢克博登
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sandisk Technology Co
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN111047031A publication Critical patent/CN111047031A/zh
Application granted granted Critical
Publication of CN111047031B publication Critical patent/CN111047031B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Memory System (AREA)

Abstract

本发明题为“用于神经网络中的数据重用的移位架构”。本发明公开了用于人工神经网络的增强技术和电路。这些人工神经网络由人工突触形成,在本文的具体实施中,所述人工突触包括具有非易失性存储器元件的存储器阵列。在一个具体实施中,装置包括被配置为存储人工神经网络的权重值的多个非易失性存储器阵列。所述多个非易失性存储器阵列中的每一个可被配置为接收来自在所述多个非易失性存储器阵列之间共享的统一缓冲器的数据,对所述数据进行操作,以及将所述数据的至少一部分移位到所述多个非易失性存储器阵列中的另一个。

Description

用于神经网络中的数据重用的移位装置
相关申请
本专利申请据此要求于2018年10月12日提交的题为“SHIFTING ARCHITECTUREFOR DATA REUSE IN A NEURAL NETWORK”的美国临时专利申请62/744,929的权益和优先权,该美国临时专利申请据此全文以引用方式并入。
技术领域
本公开内容的各方面涉及人工神经网络的硬件实现的领域。
背景技术
人工神经网络(ANN)可由使用软件、集成硬件或其他分立元件模拟的单个人工神经元或突触形成。此类神经网络可用于执行各种功能,如图像处理。在图像处理应用中,可使用专用神经网络(通常称为卷积神经网络或CNN)来分析图像,以检测可能包括在图像内的某些特征。为了执行图像处理,神经网络可对如一个或多个滤波器或内核所定义的图像部分进行操作,所述滤波器或内核围绕图像进行卷积。作为处理的一部分,当滤波器位于图像的特定位置处时,神经网络可对由滤波器所指定的图像的区域中的数据执行乘法和累加(MAC)运算。
为了使用基于计算机的硬件来实现神经网络,可采用处理器和存储器电路。在操作期间,可将数据从存储器电路传输至处理器,以便执行MAC运算。此类数据传输可能导致处理器和存储器电路之间的数据传输瓶颈,并且当承载数据的信号在处理器和存储器电路之间传输时也耗电。
概述
本发明公开了用于人工神经网络的增强技术和电路。这些人工神经网络由人工突触形成,在本文的具体实施中,所述人工突触包括具有非易失性存储器元件的存储器阵列。在一个具体实施中,装置包括被配置为存储人工神经网络的权重值的多个非易失性存储器阵列。所述多个非易失性存储器阵列中的每一个可被配置为接收来自在所述多个非易失性存储器阵列之间共享的统一缓冲器的数据,对所述数据进行操作,并且将所述数据的至少一部分移动到所述多个非易失性存储器阵列中的另一个。
附图说明
参考以下附图可以更好地理解本公开的许多方面。尽管结合这些附图描述了几种具体实施,但本公开并不限于本文所公开的具体实施。相反,其旨在涵盖所有另选方案、修改和等同物。
图1示出了一个具体实施中的人工神经网络系统。
图2示出了一个具体实施中的人工神经网络的操作。
图3示出了一个具体实施中的人工神经网络系统。
图4示出了一个具体实施中的人工神经网络元件。
图5示出了一个具体实施中的人工神经网络元件。
图6示出了一个具体实施中的人工神经网络的操作。
图7示出了一个具体实施中的人工神经网络的操作。
图8根据一个具体实施示出了用来托管或控制人工神经网络的计算系统。
具体实施方式
已经开发了人工神经网络(ANN)以使用被认为类似于生物神经元的技术来处理复杂数据集。生物神经元响应于对神经元细胞体的各种突触输入而典型地产生输出,并且一些形式的人工神经元试图模拟这种行为。因此,可使用人工神经元以及这些人工神经元的特性之间的人工神经连接来形成复杂的人工神经元的网络,以处理大型数据集或执行对于常规数据处理器而言过于复杂的任务,如机器学习。
ANN可由使用软件模拟的单个人工神经元形成,或者由集成硬件和分立电路元件形成。如本文所讨论,人工神经元可以包括单独存储器元件(诸如,非易失性存储器元件),或者可以使用其他类型的存储器元件或软件元件来表示。人工神经元使用人工神经连接进行互连,为了清楚起见,本文将人工神经连接称为“神经连接”。这些神经连接被设计成模拟使生物神经元互连的生物神经突触和轴突。这些神经连接可以包括电互连器,诸如线、迹线、电路以及各种分立或集成的逻辑或光学互连器。当采用存储器元件来形成人工神经元时,这些神经连接可以部分地由任何相关联的存储器阵列的控制线形成。这些控制线可以包括:将数据引入人工神经元的输入控制线;以及从人工神经元接收数据的输出控制线。在特定具体实施中,控制线可以包括存储器阵列的字线和位线。
ANN可以在ANN框架内执行各种机器学习任务、图像处理任务和其他数据处理任务。已经开发了各种类型的ANN,其通常涉及用于连接人工神经元的拓扑结构以及如何通过ANN处理或传播数据。例如,前馈ANN以“向前”方式通过人工神经元的顺序层传播数据,这排除了反向传播和循环。完全连接的ANN具有多层人工神经元,并且每个人工神经元各自连接到后续层的所有人工神经元。卷积神经网络(CNN)由多层人工神经元形成,这些人工神经元完全连接并以前馈方式传播数据。
通常将通过ANN传播和处理数据以产生结果的过程称为推断。然而,在通过ANN处理数据集之前,必须首先训练许多ANN。该训练过程可建立各个人工神经元以及每个人工神经元的数据处理特性之间的连接性。可以将人工神经元的数据处理特性称为权重或突触权重。突触权重指示两个人工神经元之间的连接的强度或幅度。这可对应于激发第一人工神经元对另一人工神经元所具有的影响的量。
许多ANN具体实施使用基于半导体的计算设备来模拟生物神经元的行为。在基于计算机的ANN硬件中,可采用处理器(如中央处理单元(CPU)或图形处理单元(GPU))以及相关联的存储器电路。最近,有人还提出了使用新兴的非易失性存储器(NVM)设备(包括相变存储器(PCM)、电阻式随机存取存储器(RRAM或ReRAM),以及由磁隧道结(MTJ)形成的磁随机存取存储器(MRAM))来模拟突触权重,以及模拟生物神经元。这些设备属于忆阻器存储器技术的广泛类别,并且由于相应的较小所占面积,可提供非常高的密度和连接性。使用具有在施加电压或电流之后仍然存在的可变电阻状态、电导状态、材料状态或磁化状态的新材料,高密度忆阻器存储器技术已变得可能。忆阻器和其他相关的电阻式存储器设备通常包括将电荷与磁通链相关联的电子部件,其中忆阻器的电阻取决于忆阻器先前传递的电流或电压。
下文将考虑表示人工神经网络的突触权重的非易失性存储器(NVM)元件,但增强的电路和技术可以应用于其他电路类型和ANN拓扑结构。通过连接到NVM元件的控制线,单个NVM元件可形成为互连的大阵列,以实现各种类型的ANN。在一些示例中,这些控制线可以包括位线和字线布置,但在其他实施方案中,控制线可以包括其他元件并且与其他存储器阵列布置交接。具体地讲,电阻式存储器元件被组织成可寻址人工突触阵列用于形成ANN。控制线连接不仅可用于读写阵列中的NVM元件,还可用于在逻辑上将NVM阵列细分为ANN的逻辑单元。这些逻辑单元可各自包括任意数量的NVM元件,如64×64,其可基于集成限制(如寄生电容)来进行选择,或者可改为映射到ANN中的各个层。下文讨论的每个NVM元件或NVM元件的差分分组称为“ANN的节点”。通常,每个逻辑单元中NVM元件或节点的数量是相同的,但其他实施方案可以在每个逻辑单元中使用不同数量的NVM元件。在一些示例中,每个逻辑单元的节点可以包括NVM阵列的整个存储页面,或者可以跨越多个存储页面。此外,逻辑单元的节点可以替代性地仅将NVM元件的子集用于特定存储页面,因此可以在逻辑单元之间共享单个存储页面。在另外的示例中,NVM元件可能未采用传统的存储页面组织,而是包括列/行可寻址元件的“平坦”阵列。
基于处理元件(PE)或乘法和累加(MAC)单元的ANN架构提供高度并行化的卷积计算。基于PE的设计连同诸如数据重用、零选通和数据压缩等专门技术改善了CNN计算的能效。由多个基于忆阻器的存储器单元形成的忆阻器阵列能够使用欧姆定律来实现矢量矩阵乘法。可将MAC运算(Σixiωi)映射到忆阻器阵列的并行读运算:ΣiViGi,其中Vi是存储器单元的读电压,而Gi是存储器单元的电导。累加是通过将相关位线上的存储器单元电流累加来执行的。
可使用某些新兴的NVM技术(如忆阻器技术)来执行存储器内计算(IMC)操作。IMC操作是通过将突触权重加载到人工突触(称为节点)中并在许多数据操作中维持节点中的这些权重来进行的。使用权重来对引入到节点的数据进行操作,并且结果从节点向外流出,同时权重保持固定并准备好进而用于对不同数据的操作。但是,输入到每个单独节点的数据仍需要从数据缓冲器或数据源获取。通常,从全局缓冲器获取此输入数据,该全局缓冲器在ANN的所有节点之间共享。此操作可能消耗不期望的能量,并导致相关数据总线上出现瓶颈。
在图像处理应用中,诸如CNN之类的专用神经网络可分析图像,以检测在图像内可识别的特征。CNN可对由一个或多个滤波器或内核所定义的图像的片段进行操作,所述滤波器或内核在图像周围“卷积”。作为卷积操作的一部分,CNN可对由滤波器指定的图像的区域中的图像数据执行乘法和累加(MAC)运算。该滤波器被应用于图像上的各个位置。可将数据从存储器电路传输至处理器,以便执行上述MAC运算以及其他操作。此类数据传输可能导致处理器和存储器电路之间的数据传输瓶颈,并且当承载数据的信号在处理器和存储器电路之间传输时也耗电。本文所述的示例提供了用于使用基于非易失性存储器的神经网络来执行ANN操作(如MAC运算)的增强技术和电路架构,所述神经网络减少了数据流量和耗电量。
此外,由于一些忆阻器技术能够具有多个稳定的电导状态,因此在实现ANN时可能遇到困难。最近引入了二值化神经网络(BNN),以降低计算复杂度并放松存储器要求。在BNN中,突触权重和人工神经元值被截短为二元值(+1和-1)。因此,可以将MAC运算缩减为XNOR和位计数运算。BNN为进一步优化硬件实现以改善性能、面积和耗电提供了机会。具有存储器内计算架构的BNN可使用单级存储器单元来实现,这显著地缓解了对合适的存储器技术的要求。有些方法针对正权重和负权重使用两个存储器阵列。分别感测并量化这两个阵列中的累积电流。然后,从正权重阵列的数字输出中减去负权重阵列的数字输出。这些BNN可利用(+1,0)的激活和(+1,-1)的权重来实现,这会丢失来自想要的源算法的一些状态。有利的是,本文的示例讨论了实现用于BNN的想要的源算法的差分交叉点忆阻器阵列(DCMA)。此外,DCMA无需将正权重阵列和负权重阵列分开,这减少了所需的面积和耗电。
现在转向可用于实现增强人工神经网络的电路结构,呈现了图1。图1示出了系统100,其中用作基于NVM阵列的突触权重阵列的计算系统130连同外围电路110和120用于实现深度神经网络中的一个或多个层。虽然系统100可实现各种类型的ANN,但将在卷积神经网络(CNN)和二值化神经网络(BNN)的上下文中讨论图1的元件。外围电路可以包括控制电路110和统一缓冲器120,其包括示例性电路以至少互连并控制用于深度神经网络中的一个或多个层的突触权重阵列。主机101作为外部系统或计算处理器的示例包括在图1中,该外部系统或计算处理器可与系统100的其他元件进行交互,以执行ANN操作,从计算系统130接收结果,向控制电路110提供指令以及执行其他操作。
图1中还示出了主机链路151和154、控制链路152-153、统一数据总线150和本地链路155-156。主机链路154用于传输输入数据以供计算系统130处理并接收来自计算系统130的结果。主机链路151可承载用于操作控制电路110的命令或指令。控制链路152-153携带由控制电路110发出的命令和控制指令,如用于从统一缓冲器120通过统一数据总线150传输数据,以及控制计算单元131-133之间的相邻数据移位。本地链路155-156包括用于在计算单元131-133之间传输数据的一个或多个本地数据链路。
计算系统130包括三个示例性计算单元131-133(CU-1、CU-2和CU-n),但应当理解,可替代使用不同的数量。计算单元131-133可各自包括非易失性存储器阵列,并且因此通过在计算系统130内包括计算单元131-133来建立多个非易失性存储器阵列。计算单元131-133被配置成将一个或多个突触权重存储在相关联的非易失性存储器元件中,例如图1所示的W1、W2和Wn。存储这些突触权重或权重值,是为了用于人工神经网络的操作。操作可包括本文所讨论的MAC运算以及其他操作。本文讨论了非易失性存储器阵列,其用来存储权重固定数据流的权重值并执行存储器内操作。然而,应当理解,可替代地使用其他类型的元件来实现权重固定的架构,或者这些元件可具有不执行存储器内操作的布置。因此,CU 131-133可包括逻辑单元、MAC单元、处理单元或一些其他形式的权重固定数据流电路。
在操作期间,将输入数据160提供给计算单元131-133以用于传播、处理以及呈现为输出值(例如,输出1、输出2、输出n)。可以将传播和处理操作称为“推断操作”,其通常在训练过程建立将由计算单元131-133的人工突触存储的突触权重之后发生。对于存储器内计算操作,计算单元131-133的非易失性存储器阵列可对由所存储的权重表示的对应滤波器所定义的输入数据的不同部分执行操作。在一些示例中,当一组操作已完成时,可为计算单元131-133的给定非易失性存储器阵列提供新数据以执行下一操作。然而,该新数据先前可能已用作计算单元131-133的不同非易失性存储器阵列的输入。计算单元131-133可在计算单元131-133的不同非易失性存储器阵列之间传输数据,而不是从统一缓冲器120检索新数据,以省电并减少与总线150相关联的数据传输瓶颈。
为了便于在系统100内的计算单元131-133的非易失性存储器阵列之间传输数据,将计算单元131-133耦接到各个本地链路155-156,这些本地链路允许在计算单元131-133的各个非易失性存储器阵列之间进行数据“移位”或传输。在一个示例中,计算单元131-133被配置为从统一缓冲器120通过统一数据总线150接收输入数据的一部分。计算单元131-133被进一步配置为至少基于由控制电路110发出的控制信号将输入数据的一部分通过本地链路转移到指定计算单元的不同非易失性存储器阵列。该指定计算单元可以是接近或相邻的计算单元,以减少计算单元之间的传输距离。然而,应当理解,数据移位不限于相邻计算单元,而是可能在更远的计算单元之间发生。在图1中,第一本地链路155耦接CU-1 131和CU-2 132,并且第二本地链路156耦接CU-2 132和CU-n 133。在其他情况下,计算单元131-133的非易失性存储器阵列中的不止一个可耦接到共享本地总线。其他示例可具有计算单元131-133的非易失性存储器阵列的子集,耦接到各自的本地总线或本地链路。
现在转到关于图1的元件的详细讨论,控制电路110包括各种电路和处理元件,用于将输入数据引入计算系统130和解释由计算系统130提供的输出数据。控制电路110被配置为生成耦合到统一缓冲器120和计算单元131-133两者的多个控制信号。在不同示例中,控制电路110可包括处理器和逻辑电路(包括顺序逻辑电路、可编程逻辑电路、状态机等)的任何合适的组合。控制电路110可以通过控制链路152-153提供指令、命令或数据。控制电路110可通过控制链路153接收由计算系统130确定的所得数据,或指示计算单元131-133中的各个计算单元通过统一数据总线150向统一缓冲器120提供所得数据,或通过包括链路154在内的各种链路向主机101提供所得数据。控制电路110可以对由计算单元131-133提供的信令应用调整或信号解译,然后再将其传输到主机101。在将输入数据引入到计算单元131-133之前,控制电路110可以将突触权重加载到计算单元131-133的NVM元件中。在另外的示例中,控制电路110可包括激活函数、softmax处理元件、logit矢量平均电路、降噪电路和存储电路。
计算单元131-133包括存储器设备(具体地讲,非易失性存储器设备)的阵列。在该示例中,这些NVM设备包括忆阻器类存储器设备,诸如忆阻器、ReRAM、MRAM、PCM或其他设备技术。存储器设备可以连接到可使用所选字线和位线访问的存储器设备的行和列的阵列中。然而,可以采用其他存储器单元布置并利用输入控制线和输出控制线来访问。计算单元131-133由多个节点或人工突触组成。计算单元131-133的存储器单元被布置成组,这些组通常称为“突触”。如本文所用,突触是人工神经网络的单位元,其被配置为执行特定操作,如基于先前存储的权重值的输入值的乘法。计算单元131-133中的存储器单元存储由控制电路110加载的突触权重,其值至少通过训练操作确定。由存储器单元形成的每个人工突触对应于至少一个NVM元件,但在BNN示例中,每个人工突触可由至少两个NVM元件形成,如下所述。权重值可在学习或训练阶段之后存储在人工神经网络的突触中,其中对由人工神经网络执行的总体操作进行增量调整。
计算单元131-133中每一个还包括各种电路,这些电路包括线驱动器、线、开关、感测放大器、模拟或数字累加器、模数转换电路、数模转换电路或用于驱动输入控制线并且监视/读取在输出控制线上提供的值的其他电路。计算单元131-133之间的电路包括在相关存储器阵列的控制线之间建立的电连接。计算单元131-133利用这些控制线来访问各个NVM元件,这些NVM元件可以进一步组织成存储页面等。在特定示例中,输入控制线可以包括NVM阵列的字线,并且输出控制线可以包括NVM阵列的位线。然而,当采用不同的存储器技术或不同于行/列布局的物理布置时,控制线可以与其他布置相对应。例如,当采用人工突触的非阵列布局时,或者当采用分立存储器单元时,控制线可耦接到单个存储器单元。
统一缓冲器120在多个非易失性存储器阵列(如计算单元131-133中包括的非易失性存储器阵列)之间共享。统一缓冲器120可包括任何非暂态存储器存储电路和设备,连同任何相关联的外围电路、控制电路和电源电路。统一缓冲器120可包括静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、易失性或非易失性存储器设备、寄存器文件或任何其他合适类型的存储电路。统一缓冲器120可包括单个存储器设备,或者可由多个存储器设备形成。
现在转向对图1的元件的操作的讨论,呈现了图2。图2是示出操作人工神经网络的方法的流程图200。在图2中,操作与图1的元件相关。然而,图2的操作可以适用于本文所讨论的任何具体实施等。
在操作中,控制电路110在多个非易失性存储器阵列中存储(201)人工神经网络的权重值。在该示例中,权重值由W1、W2和Wn表示。这些权重值对应于在CU 131-133中执行的人工神经网络操作中使用的突触权重。通常,权重值作为数据值存储到CU 131-133的非易失性存储器单元中,所述存储器单元可由一个或多个非易失性存储器元件(如忆阻器或其他非易失性存储器技术)形成。在一些示例中,CU 131-133的多个非易失性存储器阵列包括权重固定的人工神经网络的至少一部分。在权重固定的人工神经网络布置中,权重值可在多组输入数据和处理周期中保持稳定。这些权重值可存储在非易失性存储器单元或阵列中,如本文所述。然而,可采用其他布置用于权重固定的数据流。在其他示例中,在每个处理周期之前加载不同的权重值。
此外,CU 131-133的多个非易失性存储器阵列被配置为通过至少将权重值应用于提供给这多个非易失性存储器阵列的输入数据来执行存储器内操作。这些操作可包括乘法和累加运算(MAC)以及其他操作。MAC运算的乘法部分包括将权重值乘以输入数据的相关联部分。当在存储器中执行时,通过将输入数据的特定部分通过输入线应用于非易失性存储器单元来在每个存储器单元中完成乘法,这在相关联的输出线上产生包括输入数据和所存储的权重值之间的数学乘法和累加的输出。如下文将讨论的那样,输入线可包括非易失性存储器阵列的字线,并且输出线可包括非易失性存储器阵列的位线,所述非易失性存储器阵列与特定非易失性存储器单元相关联。
在计算系统130的第一操作或处理周期中,控制电路110发起从共享缓冲器到多个非易失性存储器阵列的输入数据160的传输(202)。输入数据160存储在统一缓冲器120内,该统一缓冲器在CU 131-133之间共享,并且可通过统一数据总线150向CU 131-133提供输入数据160。CU 131-133接收该输入数据160或其特定部分,以用于ANN操作。CU 131-133可各自包括输入缓冲器,该输入缓冲器接受输入数据160的特定部分并保存输入数据160的该部分以用于第一操作或处理周期期间执行的操作。
然后,CU 131-133各自执行(203)将权重值应用于输入数据的操作。输出可由这些操作产生,这些输出在图1中显示为输出1、输出2和输出n。这些输出是位线上的累加结果。可以通过共享总线(如总线150)传输输出,并且相关联的部分总和可以在相关联的激活模块之前累加。
然后,控制电路110指示CU 131-133对输入数据的部分进行邻近移位(204)。CU131-133中的选定CU可以将对应CU的输入缓冲器内的输入数据的相关联部分传输至CU131-133中的另一个。本文将该传输称为“移位”,移位允许本地传输输入数据的部分。通常,可将输入数据传回统一缓冲器120或直接丢弃(如果输入数据的副本保留在统一缓冲器120中的话)。然而,这将需要将输入数据160从统一缓冲器120再传输到CU 131-133中的单个CU中。或者,控制电路110可指示CU 131-133从统一缓冲器120或从CU 131-133中的另一个接收输入数据的相应部分。因此,CU 131-133可选择性地接受来自统一缓冲器120的新数据或者接受来自CU 131-133中的另一个的多个非易失性存储器阵列中的一个的移位数据。
在图1中,提供了用于在CU 131-133之间传输数据的本地数据链路。具体地,移位数据161和移位数据162可通过一个或多个本地链路155-156传输,所述本地链路可为CU131-133中的单个CU之间的分立链路。本地链路155-156不耦接到统一缓冲器120或统一数据总线150。与CU 131-133中的每一个相关联的多个非易失性存储器阵列可因此从统一缓冲器120或相邻或接近的非易失性存储器阵列接收输入数据160的部分。通常,数据的本地移位将发生在接近或相邻的CU之间。然而,在其他示例中,相关联的非易失性存储器阵列在集成电路上不必彼此紧挨着,而是可以距离远一些。然而,出于示例性目的,第一非易失性存储器阵列可将数据移位到相邻或接近的非易失性存储器阵列。
一旦数据移位已完成,并且输入数据的任何新部分已从统一缓冲器120被传输,则计算系统130通过将权重值应用于每个CU 131-133的输入数据的至少一些部分来执行(203)附加操作或处理周期。此本地移位过程和处理周期操作可继续进行,直到输入数据集已被CU 131-133完全处理。下面讨论的示例将更详细地讨论本地数据移位背后的决策过程,以及何时应将数据移位到邻近装置或从统一缓冲器或共享缓冲器中检索数据。
现在转到人工神经网络的另一个具体实施,呈现了图3。如图3所示,在ANN架构300的上下文中讨论了使用增强型邻近移位技术的示例ANN操作。ANN架构300利用了组织成若干单个NVM阵列的NVM存储器元件。这些NVM阵列通过图3中的名称“DXU”来指示,DXU是指排列形成二值化神经网络(BNN)电路330的差分交叉点(DX)单元(DXU)。图3可包括128×128个DXU的阵列,其中每个DXU包括64×64位的NVM阵列,但其他配置也是可能的。全部数量的DXU可称为“卷积核心”。
ANN架构300包括主机301,该主机可将输入数据通过链路302传输到统一缓冲器320中,以供BNN电路330处理。此外,主机301可通过链路303向控制电路310提供指令或控制信息,该控制电路通过控制链路371-372控制BNN电路330和ANN架构300的其他元件的操作。其他控制链路可包括在图3中,但为了清楚起见而省略。除了主机301之外,ANN架构300还包括控制电路310、统一缓冲器320、激活函数321、池化/旁路模块322、批量归一化(BN)模块323和BNN电路330。
操作由各个DXU通过计算存储的权重与输入值的乘法和累加来进行,其中输入值是从统一缓冲器320或从相邻DXU接收的。输入值通常由馈送到DXU的字线中的电压表示,并且存储的权重由权重存储器阵列中的电导状态或电导值表示。权重存储器阵列可以包括经由相关联的字线和位线耦接的NVM设备诸如忆阻器的阵列。乘法和累加结果以电流值的形式从位线中读出。在图3中,每个DX单元(DXU)331-338包括“DX”类型的NVM阵列,其具有对于每个存储器单元差分布置的两个忆阻器。该存储器单元形成人工突触或人工神经元。DXU331-338还包括外围电路,如驱动器、控制逻辑、多路转换器和感测放大器。图4中示出了DXU331-338的组成的具体例子。然而,下文针对图3的讨论将集中于在ANN架构330的上下文中的BNN电路330的顶层操作。
DXU 331-338的每个NVM阵列包括采用行和列布置的非易失性存储器(NVM)突触权重阵列。这些行和列可通过输入控制线和输出控制线访问。在该示例中,输入控制线包括字线,并且输出控制线包括位线。尽管控制线的其他配置也是可能的,但出于本示例的目的,将讨论字线/位线布置。此外,DXU 331-338的NVM突触权重阵列的存储器元件被配置为存储对应于突触权重的值。可以在控制系统发起操作(如MAC运算)之前预先加载这些值。可在由控制系统发起的相关联ANN的训练过程中确定突触权重,或者可通过软件模型或算法过程来确定突触权重。前馈神经网络的训练操作可以包括前向传播、成本计算、后向传播、参数更新的操作。突触权重是指两个人工神经元(也称为节点)之间的连接强度或幅度。突触权重对应于生物神经元对激发另一个所具有的影响量。
在图3中,在BNN电路330中提供了统一或共享的输入和输出数据总线,即总线364-365。总线364-365可以从统一缓冲器320和链路373传输输入数据,以便交付至DXU 331-338中的单个DXU。总线364-365可以从DXU传输输出数据,以便交付至输出处理块321-323并且最终将其缓冲到统一缓冲器320中,之后再将其传输至主机301或其他系统。然而,通过总线364-365进行大量和高频率的数据传输可能导致瓶颈。可以为图3中的每行DXU提供不同的总线,或者可包括单个统一总线。
为了部分缓解这些瓶颈,提供了本地链路360-363。本地链路360-363包括在相邻或接近的DXU之间耦合的数据传输链路。具体地,每个DXU可包括输入缓冲器,如输入缓冲器341-348所指出的。数据可在每个DXU的MAC运算之前通过总线364-365传输到输入缓冲器341-348以进行高速缓存或存储。然而,可根据特定ANN算法和处理周期的需要在相邻的DXU之间对数据进行移位。输入缓冲器341-348可通过本地链路360-363将存储在其中的数据的部分传输或移位到相邻输入缓冲器。这种移位可直接发生在DXU的输入缓冲器之间。如图3中所示,新数据367通过总线364提供,而移位数据366通过本地链路360提供。更多的相邻数据移位可在其他DXU之间发生。输出缓冲器351-358存储来自每个DXU的由相关联的MAC运算或其他ANN操作产生的结果。输出缓冲器351-358可通过总线364-365和链路374将这些结果传输至批量归一化模块323,以用于进一步操作和处理。
控制电路310管理DXU和ANN架构300的其他元件之间的数据流。总线364在同一行中的输入缓冲器(IB)341-344和输出缓冲器(OB)351-354之间共享。总线365在同一行中的输入缓冲器(IB)345-348和输出缓冲器(OB)355-358之间共享。在一个示例中,各个DXU的控制电路被配置为接收由控制电路310生成的命令信号,并且在相关输入缓冲器电路中的输入数据准备就绪时发出并行MAC运算。各个DXU的控制电路还被配置为在本地链路360-363上建立通信,使得数据可被发送至BNN电路330的DXU中包括的其他非易失性存储器阵列并可从该其他非易失性存储器阵列接收数据。
在一些示例中,控制模块311用作电路、可编程逻辑、逻辑电路、软件、固件或这些的某种组合。如果用作软件或固件,则控制电路310执行相关联的程序指令,所述程序指令包括权重加载312、输入选择器313、相邻移位314和存储器内操作315。控制模块311的功能可集中到控制电路310中,通过链路303部分地从主机301接收,或分布在每个DXU的控制电路之间。
权重加载312被配置为将权重值(也称为“权重”或“突触权重”)存储或加载到每个DXU的NVM元件中。权重值可通过训练过程来确定、预先确定或通过其他过程来确定,并存储到统一缓冲器320或其他存储器电路中,以便以后存储到DXU中。输入选择器313控制图3中的每个DXU的输入选择电路或输入缓冲器(IB)。输入选择器313可指示或命令何时通过总线364/365从统一缓冲器320接受数据或何时从相邻DXU或其他源接受数据。相邻移位314控制从一个DXU到另一个DXU(如相邻的DXU)的数据传输。可以将这些数据从相关联的IB传输到另一个IB,或者从DXU传输到DXU,另外还有其他选项。存储器内操作315控制何时开始ANN操作,如BNN电路330使用所存储的权重值和输入数据的处理周期。
将BNN电路330的输出通过链路374传输至批量归一化(BN)模块323、池化/旁路模块322和激活层321。可使用比较器和多路转换器来实现池化/旁路模块322的池化层。如果在执行卷积的BNN电路330和激活模块321之间未插入池化层,则可绕过池化/旁路模块322。激活模块321包括执行BNN算法中的激活函数的激活层。在该示例中,激活函数包括“硬双曲正切(hard tanh)”函数。不同于需要大查找表或乘法单元的一些激活函数(如sigmoid),可通过比较器电路更容易地构造硬双曲正切激活函数。在该BNN实现中,激活模块321还对结果进行二值化。然后,将激活模块321的二值化结果写入统一缓冲器320,并且稍后检索该结果,用于一个或多个接下来的卷积计算。
提供图4是为了示出DXU的示例性具体实施(如图3中的DXU 331-338)以及各种外围和控制电路。具体地,系统400包括输入缓冲器411和DX单元(DXU)430。输入缓冲器411耦接到DX单元430,并且包括多个输入缓冲器电路412,如寄存器、存储器元件或其他电路。输入缓冲器411可选择性地通过链路415从统一缓冲器接收数据或通过链路416从相邻DXU接收数据。链路415可耦接到耦接到共享或统一数据缓冲器(如图3中的统一缓冲器320)的共享或统一数据总线。链路416可耦接到本地链路或总线,如图3中的链路360-363。可通过由控制线414控制的多路转换器(MUX)413来提供在链路415-416之间的选择。图3中的控制电路310可通过控制线414向MUX 413提供控制。
DX单元430包括带有外围电路的DX阵列431,例如,外围电路可为字线(WL)驱动器432、列多路转换电路(YMUX)433、多级感测放大器(MLSA)/位线(BL)驱动器434和控制逻辑435。DX部分501是指示例性差分交叉点(DX)元(cell)或人工突触,并且在图5中示出了其细节。
在该示例中,DX阵列431是包括由非易失性存储器单元形成的人工突触的DX元的64×64阵列。该大小可为其他大小,但在该示例中,选择64×64以减小电阻电容(RC)寄生效应并实现比更大规模更高的速度。DX阵列431的大小可被选择为满足寄生效应目标和性能目标的任何其他合适的布置。同一列上较少的人工突触也可降低人工突触的量化误差。采用甚至更小的阵列大小,由(例如)阵列面积与总面积所定义的单元效率显著下降。控制逻辑435从图3的控制电路310获取命令,以在输入数据准备就绪时发出并行操作。这些操作可包括MAC运算及其他操作。控制逻辑435还与网络或链路415/416的数据总线建立握手协议以协调输入和输出数据事务。在操作开始时,WL驱动器432根据存储在输入缓冲器(IB)411中的数据来激活对应的差分字线(被定义为WL和WLB线的差分对)。
一旦从DX阵列431的相关联DX元的人工突触中读出了数据,可能需要对该数据进行进一步处理。根据图3中所描述的BNN算法,可通过批量归一化层323来处理该数据,该层是在由DXU 331-338形成卷积层之后并且在将卷积结果截短为二元数之前被纳入的。为了便于进行此归一化,可采用多级感测放大器(MLSA)。因此,对图4中的代表性DX单元430,包括了MLSA 434,而不包括单位比较器。MLSA电路可不同于图4所示的电路,如包括不同的模数转换器(ADC)拓扑,具有不同的分辨率,以及具有不同的串行/并行布置。然而,为了图4中的讨论,详细视图401示出了MSLA电路的一个示例性具体实施。
在详细视图401中示出了列多路转换器(YMUX)433和MLSA 434的元件。MLSA 434还包括位线(BL)驱动器电路。MLSA 434包括电路,以通过至少将相关BL的电压水平与多个参考电压水平中的一个连续比较,将在相关BL上呈现的模拟电压量化为采用4位分辨率的累加结果。由于DTSA 453在小电路区域内提供偏移电压减小,因此应用双尾感测放大器(DTSA)453拓扑。可使用能够产生多个参考电压水平的合适电路来生成多个参考电压水平,如生成十六(16)个参考电压(Vref)水平。与使用多个比较器并行感测多个电平的快速ADC不同,MLSA 434用一个DTSA 453连续地比较每个电平,以减小电路面积并适配到DX阵列431的电路间距中。因此,在MLSA 434的连续周期中给出了不同的参考电压水平。当DX阵列431使用MAC运算时,MAC延迟包括16个电平的BL稳定时间(T稳定)和感测时间(TSA)。MLSA 434的感测时间和相关联的BL的稳定时间是MAC运算的总体延迟的构成部分。由于DX阵列431的间距相对较小,因此DX阵列431的两列可通过列多路转换器(YMUX 433)共享一组控制晶体管(450、451和452)和MLSA 434。
在详细视图401中还示出了控制晶体管450、451和452。控制晶体管450用作列多路转换器,如用于YMUX 433,并且经由Y_SEL激活。当执行读过程时,控制晶体管452控制读路径并且经由R_EN导通,该读过程还涉及使控制晶体管450能够向DTSA 453提供对应的信号。在执行写过程时,控制晶体管451控制写路径并且经由W_EN来导通。
图5示出了示例性差分交叉点(DX)配置500。在图5中示出了差分交叉点布置,以为本文所讨论的某些增强操作提供上下文。然而,应当理解,除了DX配置之外,还可采用不同的配置和架构。具体地,可在不同于DX配置的其他类型的人工神经网络计算单元之间使用本地移位数据。合适的计算单元包括可执行MAC运算的任何处理单元。
配置500包括示例性电路部分501、等距电路视图502、表503和累加输出504。电路部分501为四(4)个DX元的示意图。等距电路视图502包括由DX元、两组位线(BL0 554、BL1555)和两组差分字线(WL0550/WLB0 551和WL1 552/WLB1 553)形成的集成电路的示例性物理布局。
图5中的每个DX元包括差分交叉点忆阻器布置,该布置用于在图3中统称为DXU并且在图4中单独作为DX单元430示出的多个非易失性存储器阵列中。每个DX元包括耦接到第一字线和位线的第一非易失性存储器单元和耦接到第二字线和位线的第二非易失性存储器单元。通过由两个耦合的非易失性存储器单元形成的差分交叉点忆阻器布置的已编程状态来对每个权重值进行编码。
现在转到示例性DX元560,包括忆阻器元件的两个非易失性存储器设备在共享电节点处耦接。在不同示例中,DX元560内的非易失性存储器设备可实现为忆阻器或任何其他合适类型的非易失性存储器单元。第一忆阻器元件561称为“顶部”元件(R顶部),第二忆阻器元件562称为“底部”元件(R底部),但也可以采用其他命名。
R顶部和R底部共同形成人工神经网络的人工突触。R顶部和R底部在相关联的字线之间以差分方式耦合,并且因此被称为“差分交叉点(DX)布置”。R顶部和R底部耦接到共享位线,并且各自耦接到一对字线中的相应一个。R顶部和R底部能够被编程成高电阻状态(HRS)或低电阻状态(LRS),这是电阻的相对值,并且将根据具体实施、特征尺寸和存储器技术而有所不同。因此,每个人工突触由一个HRS单元和一个LRS单元构成。
如上所述,通过由R顶部和R底部形成的差分交叉点忆阻器布置的已编程状态对每个权重值(W)进行编码。DX阵列中的每个人工突触包含两个具有相反状态的忆阻器(例如,相关联的R顶部和R底部)。在差分布置中,对于给定人工突触,权重值由HRS和LRS的组合来表示。在操作期间,将二元输入值(X)呈现为跨与人工突触相关的一对特定的字线(如WL0和WLB0)的差分值。R顶部和R底部形成沿着特定位线的分压器,并且该位线(BL)的电压水平对应于由R顶部和R底部形成的分压器的输出(Y)。
具有卷积加速特性的人工神经网络(如本文所述的那些)可对输入数据的一部分执行MAC运算。在本文所述的架构中,对应于输入数据的一部分的二元输入值跨人工突触被应用。然后,人工突触基于先前存储的权重值对二元值进行乘法运算。表503中示出了描述人工突触内两个二元数(+1和-1)的乘法的情形列表。
在一个示例中,WL驱动器电路被配置为响应于MAC运算的发起而基于存储在相关联的输入缓冲器中的输入数据的值来启用特定字线。表503列出了两个二元数(+1和-1)相乘的四个示例性情形,其中X为输入,W为权重,并且Y为输出。为了表示“-1”的输入,将相关联的WL耦接至参考电势(例如,电接地),并且将相关联的WLB耦接至指定电压V,该指定电压可为防止读取干扰的指定电压水平。当表示“+1”的输入时,反转该配置(即,WL耦接到V并且WLB耦接到接地)。对于不同的权重值,当W为-1时,将顶部忆阻器(R顶部)编程为HRS(RH),并且当W为+1时,将其编程为LRS(RL)。以相反的方式对底部忆阻器(R底部)进行编程。因此,BL上的输出电压与图5中的真值表匹配。具体地讲,VH=V(RH/(RH+RL))对应于Y=+1,并且VL=V(RL/(RH+RL))对应于Y=-1。
为了实现特定BL上的累加输出,同步激活与该BL相关联的所有行。与感测BL上的累加电流的其他方法不同,本文所讨论的DX方案在每个BL上形成分压网络。BL的累加输出被确定为对分压网络线性地映射为数字总和的电压。累加输出504示出公式540以导出表示累加输出的输出电压以及数字总和值与该输出电压之间的相关性。有利的是,输出电压是通过DX元的电阻比(HRS/LRS)来确定,而不是通过电阻的绝对值来确定。当电阻比在5至100范围内时,可维持较大的裕量,然后由多级感测放大器(MLSA)(如图4中的MLSA 434)感测BL电压,所述放大器可将模拟BL电压量化为4位数字值。
应当指出的是,为了减小特定DX元中的有限耐久性的影响,可用预先训练的权重值对DX阵列中的DX元进行编程。然后,DX阵列只需要执行推理计算而不是训练和推理操作两者。为了将权重值编程到DX元中,可以执行以下过程。例如,为了将R顶部编程到LRS(如“set”操作)并将R底部编程到HRS(如“reset”操作),将对应的WL/WLB连接至指示权重值的差分表示的V,并将对应的BL接地,使得正电压落在R顶部上,而负电压落在R底部上。为了将R顶部编程到HRS并将R底部编程到LRS,将对应的WL/WLB接地,并将对应的BL设置为V
现在转向对ANN的数据移位操作的详细讨论,呈现了图6。图6包括示例数据集600和移位过程610。数据集600包括若干行和列的数据,其可包括来自图像的一部分的像素数据以及其他数据类型。在图6中,输入数据(X)通过表示数据的行和列的下标来指示,即下标的第一个数字指示行,而下标的第二个数字指示列。图6示出了经过9×9输入特征图的3×3滤波器的相邻移位方案。任何数量的行和列都可包括在输入数据中,但为了清楚起见,数据集600中仅包括5行和5列。
对于数据集600,指示了两个周期的过滤操作,即第一周期(周期1)和第二周期(周期2)。操作可包括如本文所述的MAC运算,但可替代地包括其他合适的ANN操作。在每个周期中,由特定的DX单元使用先前存储在DX单元的NVM元件中的权重值(W11-W33)来处理数据的3×3集合。如对于周期1可见的那样,在数据集600和移位过程610中,将数据的第一3×3集合作为输入数据提供给具有相关权重值(W11-W33)的九个DX单元(DXU0-DXU9)。对于周期1,该组数据包括由数据集600中的黑色阴影框所指示的数据部分X11、X12、X13、X21、X22、X23、X31、X32和X33。一旦周期1完成,就确定了结果(Y11),其可包括在由对应DXU执行乘法和累加运算之后的MAC结果。
在周期2中,在数据集600中选择另一个3×3输入数据部分用于处理。然而,仅3×3输入数据部分的子集对应于来自数据集600的“新”数据,即数据部分X14、X24和X34。部分X12、X13、X22、X23、X32和X33与周期1的一些部分相同。因此,在移位过程610中,各个DXU可以将数据部分通过一个或多个本地链路移位或传输到其他DXU,这些DXU可以是相邻的DXU。移位611发生,其中X12从DXU1移位至DXU0,X13从DXU2移位至DXU1,X22从DXU4移位至DXU3,X23从DXU5移位至DXU4,X32从DXU7移位至DXU6,并且X33从DXU8移位至DXU7。DXU2、DXU5和DXU8均从共享或统一缓冲器而不是另一DXU接收新数据(具体地讲,为数据部分X14、X24和X34)。
在DXU的另一个处理周期之后,产生和Y12,并且执行另一次移位612(如图6所示)。随着3×3数据窗口移动经过整个数据集600,数据的各子集将在DXU之间移位,同时其他子集将作为来自共享缓冲器的新数据被引入到相关联的DXU中。周期3-9可继续该MAC运算和选择性数据移位的过程。移位613指示针对该特定数据集600的另一移位过程。更大或更小的数据集可具有不同数量的周期。
因此,当滤波器在数据集600中向右移位一个像素时,九个数据部分中的六个已从先前周期加载到DXU中。当滤波器向右移动时,可以重用来自相邻DXU的输入数据的三分之二。在深度神经网络计算中,从共享或统一缓冲器的数据移动造成了大部分的电力消耗。本文所述基于DXU的BNN卷积加速器具有三个数据重用方案用于减少存储器访问的总数。第一,权重固定方案消除了每个周期从外部存储器获取权重的需要。第二,对于不同的滤波器同步共享输入数据。第三,由于BNN的数据流是确定性的,因此可采用相邻DXU之间的数据移位模式。当权重存储在DXU中时,通常从统一缓冲器获取输入。当滤波器向右移位时,可将输入数据的子集传输至相邻DXU,这可省去从统一缓冲器获取次数的2/3。建立连接相邻DXU的本地链路以节省统一缓冲器的共享总线的带宽并降低路由复杂度。此外,相邻移位方案可减少输入数据流量的2/3。由于DXU是使用非易失性存储器来实现的,因此当DXU未被激活时可以关闭电源,以节省电力。本文讨论的DXU通常具有160TMAC/s/W的峰值功率效率,并且适用于人工神经网络系统中的边缘设备。
一些人工神经网络允许多个卷积(每个均与其自身卷积层相关联)按顺序执行,其中一个卷积层的输出被传递到另一个卷积或其他层上,以用于进一步处理。每个卷积层可具有其自身的一组滤波器,以定义其相应输入数据的要操作的部分。可将不同的非易失性存储器阵列分配到不同的卷积层。包括在人工神经网络中的寄存器电路可被配置为存储指示对应非易失性存储器阵列所关联的卷积层的信息。除此之外或作为另外一种选择,可将指示与特定卷积层相关联的非易失性存储器阵列的总数的信息和非易失性存储器阵列的分区信息存储在寄存器电路中。
现在包括图7,其示出了卷积层映射到多个非易失性存储器阵列的实施方案。在图7中,呈现了映射至九(9)个非易失性存储器阵列(DXU)的六十四(64)个3×3×64滤波器701的示例卷积层。滤波器701中的一个像素通道映射至702-703中的一列。图像输入数据可在同一行上的不同滤波器之间共享,从而允许并行地进行不同滤波器的计算。数据共享可通过输入缓冲器(741-742)或相关联DXU(例如,DXU0/DXU8)的其他部分实现。可将单个像素通道映射至非易失性存储器阵列内的特定列,以便执行累加。在通过数据总线进行传输之前,可以将部分总和存储在DXU的输出缓冲器中。可将来自各个DXU的所有部分总和累加,以在执行批量归一化操作之前生成总的合计数。
本文所述的带有数据的相邻移位的DXU配置可有利地用于采用二值化MAC运算的任何算法/模型。然而,在其他示例算法中,DXU和控制器之间的数据流可能不同于本文针对MAC运算所示的数据流。此外,具有不同滤波器大小的BNN模型都可以进行分区并映射到DXU。例如,可将具有128个5×5×256滤波器的卷积层划分为200个DXU。可视几何组模型(例如,VGG-16)之类的复杂模型可以采用总共33,800个DXU。因此,实现VGG-16需要至少184×184个DXU。当使用大型DXU阵列来实现小于阵列大小的模型时,备用DXU可以改为普通的存储器阵列,或用于其他功能。此外,可将DXU断电,因为其具有非易失性。因此,即使DXU阵列的部分未被充分利用,此类DXU阵列也是功率高效的。为了协调不同模型的数据流量,每个DXU可为标识符保存一组寄存器,该标识符指示DXU所属的卷积层、该层的DXU总数以及DXU的分区信息。例如,VGG-16中的第5层可使用72个DXU。实现VGG-16中第5层的第17个DXU可具有5-72-17的标识号。在将模型初始化或映射到DXU阵列时,可由主机或控制电路配置寄存器。
图8示出了计算系统801,其表示在其中可以实现本文所公开的各种操作架构、场景和过程的任何系统或系统集合。例如,计算系统801可用于实现图1的主机101、控制电路110或统一缓冲器120的部分;图3的主机301、控制电路310或统一缓冲器320的部分;图4的控制逻辑435,或本文所讨论的控制电路或数据移位函数的任何其他实例。此外,计算系统801可以用于将突触权重存储并加载到NVM阵列中,可以用于配置互连电路以建立人工神经网络的一个或多个层,并且可以用于通过训练操作确定突触权重。计算系统801可以实现本文所讨论的许多控制操作,无论是使用硬件或软件部件还是使用它们的任何组合来实现。
计算系统801的示例包括但不限于计算机、智能电话、平板计算设备、膝上型电脑、台式计算机、混合计算机、机架式服务器、web服务器、云计算平台、云计算系统、分布式计算系统、软件定义的联网系统和数据中心设备,以及任何其他类型的物理机或虚拟机,以及其他计算系统和设备,以及它们的任何变型或组合。
计算系统801可以被实现为单个装置、系统或设备,或者可以以分布式方式实现为多个装置、系统或设备。计算系统801包括但不限于处理系统802、存储系统803、软件805、通信接口系统807和用户接口系统808。处理系统802与存储系统803、通信接口系统807和用户接口系统808操作地耦接。
处理系统802从存储系统803加载并执行软件805。软件805包括人工神经网络(ANN)环境820,其表示相对于前述附图讨论的过程。当被处理系统802执行以实现并增强ANN操作时,软件805指示处理系统802如本文至少针对前述具体实施中讨论的各种过程、操作场景和序列所述的那样进行操作。计算系统801可以任选地包括为简洁起见而未讨论的附加设备、特征或功能。
仍参考图8,处理系统802可以包括从存储系统803检索并执行软件805的微处理器以及处理电路。处理系统802可以在单个处理设备内实现,但也可以分布在在执行程序指令以及执行本文所讨论的操作时协作的多个处理设备、子系统或专用电路中。处理系统802的示例包括通用中央处理单元、专用处理器和逻辑设备,以及任何其他类型的处理设备、它们的组合或它们的变型。
存储系统803可以包括可由处理系统802读取且能够存储软件805并能够任选地存储突触权重810的任何计算机可读存储介质。存储系统803可以包括用于存储信息(如计算机可读指令、数据结构、程序模块或其他数据)的以任何方法或技术实现的易失性和非易失性介质以及可移除和不可移除介质。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存存储器、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、电阻式存储设备、磁随机存取存储器设备、相变存储器设备、或任何其他合适的非暂态存储介质。
除计算机可读存储介质之外,在一些具体实施中,存储系统803还可以包括计算机可读通信介质,软件805中的至少一些可以通过该计算机可读通信介质在内部或向外部进行传递。存储系统803可以被实现为单个存储设备,但也可以被实现在相对于彼此协同定位或分布的多个存储设备或子系统中。存储系统803可以包括能够与处理系统802或可能的其他系统进行通信的附加元件,如控制器。
软件805可以以程序指令实现,并且在由处理系统802执行时,软件805可以指示处理系统802如相对于本文所示的各种操作场景、序列和过程所述的那样进行操作,以及执行其他功能。例如,软件805可包括用于ANN中的数据的增强相邻移位以及其他操作的程序指令。
具体地讲,程序指令可以包括协作或以其他方式交互以执行本文所述的各种过程和操作场景的各种部件或模块。可以以编译或解译的指令或者指令的一些其他变型或组合来体现各种部件或模块。可以以同步或异步方式,串行或并行地,在单线程环境或多线程环境中,或者根据任何其他合适的执行范例、变型或它们的组合,来执行各种部件或模块。除包括ANN环境820之外,软件805可以包括附加过程、程序或部件,如操作系统软件或其他应用软件。软件805还可以包括可由处理系统802执行的固件或某些其他形式的机器可读处理指令。
一般来讲,当加载到处理系统802中并被执行时,软件805可整体地将合适的装置、系统或设备(计算系统801是其代表性的)从通用计算系统转换为专用计算系统,该专用计算系统被定制为促进ANN中的数据的增强相邻移位。实际上,对存储系统803上的软件805进行编码可以变换存储系统803的物理结构。物理结构的特定转化可以取决于本说明书的不同具体实施中的各种因素。这些因素的示例可以包括但不限于:用于实现存储系统803的存储介质的技术;计算机存储介质是被表征为主存储装置还是被表征为辅助存储装置;以及其他因素。
例如,如果计算机可读存储介质被实现为基于半导体的存储器,则软件805可以在程序指令被编码在半导体存储器中时变换半导体存储器的物理状态(如通过变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态)。对于磁介质或光学介质,可以发生类似的转化。在不脱离本说明书的范围的情况下,物理介质的其他转化也是可能的,提供上述示例仅为了便于对本发明的讨论。
ANN环境820包括一个或多个软件元件,如OS 821和应用程序822。这些元件可以描述计算系统801的各部分,人工神经网络或外部系统的元件可以与这些部分相互作用或进行交互。例如,OS 821可提供在其上执行应用程序822的软件平台,并且允许ANN中数据的增强相邻移位。
NVM阵列服务824可以与NVM元件相互作用,以加载突触权重并将其存储到NVM阵列中。NVM阵列服务824可以在NVM实现的ANN上发起和控制推理操作、MAC运算或其他操作。NVM阵列服务824可以在NVM元件之间建立布置,以诸如通过控制互连电路来实现ANN的层和节点。NVM阵列服务824可以从中间层或隐藏层接收中间结果,并且将这些中间结果提供给后续层。NVM阵列服务824可提供ANN操作的最终结果,以用于图像处理、机器学习或其他应用。
ANN相邻移位服务825控制如本文所述的ANN的操作。例如,ANN相邻移位服务825可控制从共享缓冲器向多个NVM阵列传输输入数据,控制对输入数据应用权重值的操作,以及控制将输入数据的至少部分从多个NVM阵列中的第一个移位到这多个NVM阵列中的第二个,而不通过共享缓冲器来传输输入数据的部分。一旦移位,ANN相邻移位服务825就可控制附加操作的执行,将权重值应用于输入数据的至少移位部分以及来自共享缓冲器的新引入的输入数据。ANN相邻移位服务825可控制ANN的各个计算单元来选择性地接受来自共享输入缓冲器或来自另一计算单元的数据,该另一计算单元可包括相邻计算单元或接近的计算单元。
通信接口系统807可以包括通信连接件和设备,其允许通过通信网络(未示出)与其他计算系统(未示出)进行通信。通信接口系统807还可以与硬件实现的ANN的部分进行通信,如与ANN的层、NVM实现的权重阵列或其他ANN电路进行通信。一起允许系统间通信的连接件和设备的示例可以包括NVM存储器接口、网络接口卡、天线、功率放大器、RF电路、收发器、和其他通信电路。连接件和设备可以通过通信介质(诸如,金属、玻璃、空气、或任何其他合适的通信介质)进行通信,以与其他计算系统或系统网络交换通信或数据。
通信接口系统807可用于计算系统801与其他计算系统(未示出)之间的通信,该通信可通过一个或多个通信网络来进行,并且可以依照各种通信协议、协议的组合或它们的变型来通信。示例包括内联网、因特网、互联网、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义的网络、数据中心总线、计算背板、或任何其他类型的网络、网络的组合、或它们的变型。前述通信网络和协议是众所周知的,这里不需要详细讨论。然而,可以使用的一些通信协议包括但不限于互联网协议(IP、IPv4、IPv6等)、传输控制协议(TCP)和用户数据报协议(UDP),以及任何其他合适的通信协议、变型、或它们的组合。
用户接口系统808是任选的,并且可以包括用于接收来自用户的输入的键盘、鼠标、语音输入设备、触摸输入设备。还可以将输出设备(如显示器、扬声器、web接口、终端接口以及其他类型的输出设备)包括在用户接口系统808中。用户接口系统808可以通过数据接口或网络接口(例如,通信接口系统807)提供输出及接收输入。用户接口系统808还可以包括可由处理系统802执行的相关联用户接口软件,以支持上文所讨论的各种用户输入设备和输出设备。单独地或彼此相结合或结合其他硬件和软件元件,用户接口软件和用户接口设备可支持图形用户界面、自然用户界面或任何其他类型的用户接口。
所包括的描述和附图描绘了教导本领域技术人员如何制作和使用最佳模式的具体实施方案。出于教导发明性原理的目的,已经简化或省略了一些常规的方面。本领域技术人员将理解来自落入本公开范围内的这些实施方案的变型。本领域技术人员还将理解,上述特征可以以各种方式组合以形成多个实施方案。因此,本发明不受上述具体实施方案的限制,而是仅受权利要求书及其等同物的限制。

Claims (20)

1.一种装置,包括:
人工神经网络的多个计算单元,每个计算单元被配置为以差分交叉点忆阻器布置来存储所述人工神经网络的权重值,所述差分交叉点忆阻器布置由连接在第一字线和位线之间的第一非易失性存储器单元和连接在第二字线和所述位线之间的第二非易失性存储器单元形成,所述第一字线位于所述位线下方并且所述第二字线位于所述位线上方,其中所述多个计算单元中的第一个被配置为:
从在所述多个计算单元之间共享的统一缓冲器接收数据;以及
将所述数据移位到所述多个计算单元中的第二个。
2.根据权利要求1所述的装置,其中所述多个计算单元中的所述第一个还被配置为在不通过所述统一缓冲器传输所述数据的情况下移位所述数据。
3.根据权利要求1所述的装置,还包括:
控制电路,所述控制电路被配置为指示所述多个计算单元中的所述第一个:
将所述数据移位到所述多个计算单元中的所述第二个;以及
选择性地接受来自所述统一缓冲器的新数据或者接受来自所述多个计算单元中的一个的移位数据。
4.根据权利要求1所述的装置,还包括:
本地数据链路,所述本地数据链路用于在所述多个计算单元中的所述第一个与所述多个计算单元中的所述第二个之间传输所述数据,其中所述本地数据链路不耦接到所述统一缓冲器。
5.根据权利要求1所述的装置,其中所述多个计算单元包括权重固定的人工神经网络的至少一部分。
6.根据权利要求1所述的装置,其中所述多个计算单元被配置为执行存储器内操作:即对从所述统一缓冲器中的一个或多个中选择性地检索的输入数据以及对经由不耦接到所述统一缓冲器的数据链路而在所述多个计算单元之间本地移位的所述输入数据的部分应用所述权重值。
7.根据权利要求1所述的装置,其中所述权重值通过所述多个计算单元的非易失性存储器单元的已编程状态来编码。
8.根据权利要求1所述的装置,其中所述第一非易失性存储器单元以及所述第二非易失性存储器单元是忆阻器类存储器设备。
9.一种电路,所述电路包括:
控制电路,所述控制电路被配置为生成数据控制信号;
人工神经网络的多个计算单元;
统一缓冲器,所述统一缓冲器在所述人工神经网络的所述多个计算单元之间共享;以及
在所述多个计算单元中的多个差分交叉点忆阻器阵列,所述多个差分交叉点忆阻器阵列的每个差分交叉点忆阻器阵列包括连接在第一字线和位线之间的第一非易失性存储器单元和连接在第二字线和所述位线之间的第二非易失性存储器单元,所述第一字线位于所述位线下方并且所述第二字线位于所述位线上方,其中所述多个差分交叉点忆阻器阵列的每个差分交叉点忆阻器阵列被配置为:
存储所述人工神经网络的权重值;以及
基于所述数据控制信号,选择性地接受来自所述统一缓冲器的输入数据的第一部分,或者接受来自所述多个计算单元中的一个的所述输入数据的第二部分。
10.根据权利要求9所述的电路,其中:
所述多个计算单元中的至少一些被配置为:
基于所述数据控制信号,将所述输入数据的所述第二部分传输到所述多个计算单元中的接近的计算单元,而不通过所述统一缓冲器传输所述输入数据的所述第二部分。
11.根据权利要求10所述的电路,其中:
所述多个计算单元中的至少一些被进一步配置为:
将所述输入数据的所述第二部分传输至所述多个计算单元中的所述接近的计算单元本地的输入缓冲器。
12.根据权利要求9所述的电路,还包括:
一个或多个本地数据链路,所述一个或多个本地数据链路用于在所述多个计算单元中的至少一些与所述多个计算单元中的所述接近的计算单元之间传输所述输入数据的所述第二部分,其中所述一个或多个本地数据链路不耦接到所述统一缓冲器。
13.根据权利要求9所述的电路,其中所述多个计算单元包括权重固定的人工神经网络的至少一部分。
14.根据权利要求9所述的电路,其中所述多个计算单元被配置为通过对所述输入数据应用所述权重值来执行存储器内计算操作,以产生所述人工神经网络的至少一个处理周期的结果。
15.根据权利要求9所述的电路,其中所述权重值各自通过由两个耦合的非易失性存储器单元形成的差分交叉点忆阻器布置的已编程状态来编码。
16.根据权利要求9所述的电路,其中每个差分交叉点忆阻器阵列由至少64*64个差分交叉点单元形成。
17.一种操作人工神经网络的方法,所述方法包括:
将所述人工神经网络的权重值存储在所述人工神经网络的多个计算单元中的差分交叉点忆阻器布置中,每个差分交叉点忆阻器布置由连接在第一字线和位线之间的第一非易失性存储器单元和连接在第二字线和所述位线之间的第二非易失性存储器单元形成,所述第一字线位于所述位线下方并且所述第二字线位于所述位线上方;
将输入数据从共享缓冲器传输到所述多个计算单元;
执行将所述权重值应用于所述输入数据的操作;
将所述输入数据的至少部分从所述多个计算单元中的第一个移位到所述多个计算单元中的第二个,而不通过所述共享缓冲器传输所述输入数据的所述部分;以及
执行附加操作,所述附加操作包括将所述权重值应用于所述输入数据的至少移位部分。
18.根据权利要求17所述的方法,还包括:
通过一个或多个本地数据链路移位所述输入数据的至少所述部分,用于在所述多个计算单元中的对应计算单元之间传输所述输入数据的所述部分,其中所述一个或多个本地数据链路不耦接到所述共享缓冲器。
19.根据权利要求17所述的方法,还包括:
在所述多个计算单元中的每一个中,选择性地接受来自所述共享缓冲器的所述输入数据或者接受包括来自所述多个计算单元中的至少一个的所述输入数据的所述部分的移位数据。
20.根据权利要求17所述的方法,其中所述差分交叉点忆阻器布置被配置为通过对所述输入数据应用所述权重值来执行存储器内操作,以产生所述人工神经网络的至少一个处理周期的结果;并且
其中所述权重值各自通过所述差分交叉点忆阻器布置的非易失性存储器单元的已编程状态来编码。
CN201910884492.8A 2018-10-12 2019-09-19 用于神经网络中的数据重用的移位装置 Active CN111047031B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862744929P 2018-10-12 2018-10-12
US62/744,929 2018-10-12
US16/354,907 US11501141B2 (en) 2018-10-12 2019-03-15 Shifting architecture for data reuse in a neural network
US16/354,907 2019-03-15

Publications (2)

Publication Number Publication Date
CN111047031A CN111047031A (zh) 2020-04-21
CN111047031B true CN111047031B (zh) 2024-02-27

Family

ID=67850942

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910884492.8A Active CN111047031B (zh) 2018-10-12 2019-09-19 用于神经网络中的数据重用的移位装置

Country Status (3)

Country Link
US (1) US11501141B2 (zh)
EP (1) EP3637326B8 (zh)
CN (1) CN111047031B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3089663B1 (fr) * 2018-12-07 2021-09-17 Commissariat Energie Atomique Neurone artificiel pour puce neuromorphique à synapses résistives
CN111382094B (zh) * 2018-12-29 2021-11-30 深圳云天励飞技术有限公司 一种数据处理方法及装置
US12039430B2 (en) * 2019-11-15 2024-07-16 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
KR102410166B1 (ko) * 2019-11-27 2022-06-20 고려대학교 산학협력단 이종 곱셈-누셈 유닛을 이용하는 심층 신경망의 가속기
US11615256B1 (en) * 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
US20210350217A1 (en) * 2020-05-10 2021-11-11 Silicon Storage Technology, Inc. Analog neural memory array in artificial neural network with source line pulldown mechanism
CN111985634B (zh) * 2020-08-21 2024-06-14 北京灵汐科技有限公司 神经网络的运算方法、装置、计算机设备及存储介质
US20220101084A1 (en) * 2020-09-29 2022-03-31 International Business Machines Corporation Pipelining for analog-memory-based neural networks with all-local storage
CN112308223A (zh) * 2020-12-30 2021-02-02 成都科睿埃科技有限公司 一种基于忆阻器的深度神经网络
CN113052299B (zh) * 2021-03-17 2022-05-31 浙江大学 基于通信下界的神经网络存内计算装置及加速方法
US20230069768A1 (en) * 2021-08-31 2023-03-02 Micron Technology, Inc. Distributed Camera System
CN113935479A (zh) * 2021-10-08 2022-01-14 上海科技大学 可用于人工智能物联网的高能效二值神经网络加速器
CN115019856B (zh) * 2022-08-09 2023-05-16 之江实验室 一种基于rram多值存储的存内计算方法与系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3035249A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
GB201718358D0 (en) * 2017-11-06 2017-12-20 Imagination Tech Ltd Exploiting sparsity in a neural network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10546211B2 (en) * 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US10802992B2 (en) * 2016-08-12 2020-10-13 Xilinx Technology Beijing Limited Combining CPU and special accelerator for implementing an artificial neural network
US10838910B2 (en) * 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
WO2020018960A1 (en) * 2018-07-19 2020-01-23 The Regents Of The University Of California Compute-in-memory architecture for neural networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3035249A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
GB201718358D0 (en) * 2017-11-06 2017-12-20 Imagination Tech Ltd Exploiting sparsity in a neural network

Also Published As

Publication number Publication date
EP3637326B8 (en) 2024-09-11
EP3637326B1 (en) 2024-07-31
CN111047031A (zh) 2020-04-21
US20200117982A1 (en) 2020-04-16
EP3637326A1 (en) 2020-04-15
US11501141B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
CN111047031B (zh) 用于神经网络中的数据重用的移位装置
US11501130B2 (en) Neural network hardware accelerator architectures and operating method thereof
AU2020274862B2 (en) Training of artificial neural networks
US20200012924A1 (en) Pipelining to improve neural network inference accuracy
US20180095930A1 (en) Field-Programmable Crossbar Array For Reconfigurable Computing
US9934463B2 (en) Neuromorphic computational system(s) using resistive synaptic devices
US11568200B2 (en) Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference
US9691479B1 (en) Method of operating and apparatus of memristor arrays with diagonal lines interconnect between memristor cells
CN107533459A (zh) 使用电阻存储器阵列的数据处理
US20160196488A1 (en) Neural network computing device, system and method
WO2019082077A1 (en) TRAINING ARTIFICIAL NEURAL NETWORKS
CN108446764B (zh) 一种新型神经形态芯片架构
US20200293855A1 (en) Training of artificial neural networks
CN115204355A (zh) 能够重新使用数据的神经处理单元及其方法
Liu et al. Bit-transformer: Transforming bit-level sparsity into higher preformance in reram-based accelerator
AU2021281628B2 (en) Efficient tile mapping for row-by-row convolutional neural network mapping for analog artificial intelligence network inference
CN113837371A (zh) 用于实现神经网络的神经形态装置和方法
Liu et al. Era-bs: Boosting the efficiency of reram-based pim accelerator with fine-grained bit-level sparsity
US11556311B2 (en) Reconfigurable input precision in-memory computing
CN114004344A (zh) 神经网络电路
CN114072778A (zh) 存储器处理单元架构
US20230161557A1 (en) Compute-in-memory devices and methods of operating the same
WO2024091680A1 (en) Compute in-memory architecture for continuous on-chip learning
CN117933326A (zh) 基于储备池计算的图灵机架构
Hasan et al. A reconfigurable low power high throughput architecture for deep network training

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
TR01 Transfer of patent right

Effective date of registration: 20240829

Address after: California, USA

Patentee after: SanDisk Technology Co.

Country or region after: U.S.A.

Address before: California, USA

Patentee before: Western Digital Technologies, Inc.

Country or region before: U.S.A.

TR01 Transfer of patent right