对神经网络中第一层的第一神经元上的值实行计算的方法与流程

文档序号:20582059发布日期:2020-04-29 01:32阅读:221来源:国知局
对神经网络中第一层的第一神经元上的值实行计算的方法与流程

本申请的实施例是有关于一种对神经网络中第一层的第一神经元上的值实行计算的方法。



背景技术:

受动物大脑启发的人工神经网络(artificialneuralnetwork,ann)是机器学习中使用的主要工具之一。神经网络由输入层及输出层组成。在常见的ann实施方案中,人工神经元之间的连接处的信号是实数,且每一人工神经元的输出是通过所述每一人工神经元的输入之和的一些非线性函数来计算。人工神经元之间的连接被称为“边缘”。人工神经元及边缘通常具有随着学习的进行而调整的权重。权重增大或减小表示两个神经元之间的连接处的信号的强度增大或减小。人工神经元可具有阈值,使得只有当聚合信号(aggregatesignal)越过此阈值时,才会发送信号。通常,人工神经元被聚合到层中。不同的层可对所述不同层的输入实行不同种类的变换。信号从第一层(输入层)行进到最后一层(输出层),这可能是在多次穿越所述层之后。

因此神经元的网络通过具有不同传输效率的边缘进行连接。流经边缘的信息会与反映边缘的效率及准确度的常数相乘。在基于硬件的ann中,神经元的权重可被编程在存储胞元阵列的胞元上。存储胞元阵列中的有缺陷胞元会影响信号在相应的层中的神经元之间行进的准确度。因此,需要开发一种方法来改善人工神经网络对存储胞元阵列中的有缺陷胞元的容忍度。



技术实现要素:

在一个实施例中,一种对神经网络中第一层的第一神经元上的值实行计算的方法包括:接收存储胞元阵列的第一图案,其中所述存储胞元阵列包括多个存储胞元,所述多个存储胞元被配置成多个列及多个行;使用第三图案确定所述存储胞元阵列的第二图案;根据所述第一图案及所述第二图案确定所述存储胞元阵列的至少一对列;对所述存储胞元阵列的所述至少一对列中的每一对中的两个列的输入数据进行切换;使用存储在所述多个存储胞元中的所述输入数据实行逐位计算;以及对所述存储胞元阵列的所述至少一对列中的每一对中的所述两个列的输出数据进行切换,以确定所述第一层的所述第一神经元上的所述值。

附图说明

结合附图阅读以下详细说明,会最好地理解本公开的各个方面。应注意,各种特征未必按比例绘制。事实上,为使例示清晰起见,可任意增大或减小各种特征的尺寸及几何形状。

图1示出根据本公开一些实施例的人工神经网络(ann)的全连接网络(fullyconnectednetwork)的示例图。

图2示出根据本公开一些实施例的网络中的输入层与隐藏层之间的示例性权重图案。

图3a示出根据本公开一些实施例的存储胞元阵列的示例性缺陷图案[d]n×m。

图3b示出根据本公开一些实施例的存储胞元阵列的示例性缺陷图案[d]n×m。

图4a示出根据本公开一些实施例的曲线图,所述曲线图示出第一存储胞元阵列及第二存储胞元阵列中的注入缺陷的数目与准确度下降值之间的关系。

图4b示出根据本公开一些实施例的曲线图,所述曲线图示出不正确计数与错误数目之间的关系。

图4c示出根据本公开一些实施例的曲线图,所述曲线图示出与第二权重图案[x]10×64对应的第二存储胞元阵列的每一列处的准确度下降值。

图5a示出根据本公开一些实施例的用于对存储胞元阵列上的权重图案及输入数据进行重新排列的示意图。

图5b示出根据本公开一些实施例的用于对存储胞元阵列上的权重图案及输入数据进行重新排列的示意图。

图6a示出根据本公开一些实施例的系统的方块图,所述系统用于确定网络的隐藏层上的神经元上的值。

图6b示出根据本公开一些实施例的系统的方块图,所述系统用于确定网络的隐藏层上的神经元上的值。

图7a示出根据本公开一些实施例的方法的流程图,所述方法使用神经网络宏对网络的隐藏层上的神经元中的每一者上的值实行计算。

图7b示出根据本公开一些实施例的方法730的流程图,方法730用于通过选择器614中的状态机来对i/o进行交换。

图7c示出根据本公开一些实施例的表,所述表具有图7b中所呈现的交换过程中的示例性数据。

图8示出根据本公开一些实施例的系统的方块图,所述系统用于确定网络的隐藏层上的神经元上的值。

图9示出根据本公开一些实施例的方法的流程图,所述方法对网络的隐藏层上的神经元中的每一者上的值实行计算。

附图标号说明

100:全连接网络/网络

102、104、w1,1、w1,2、w1,3、w1,m、w2,1、w2,2、w2,3、w2,m、w3,1、w3,2、w3,3、w3,m、w4,1、wn,1、wn,2、wn,3、wn,m、wm,1、x1,1、x2,1、x3,1、xn,1:权重

106、106-1、106-2、106-3、106-4、106-m、108、108-1、108-2、108-3、108-n、110、110-1、110-2、110-p:神经元

112:输入层

114:隐藏层

116:输出层

118、120、200、[w]n×m、[w]64×64、[w]’n×m、[x]p×n、[x]10×64、[x]64×10:权重图案

202、202-1、202-2、202-3、202-a、202-b、202-j、202-m、302、302-1、302-2、302-3、302-j、302-m:列

204-1、204-2、204-3、204-n、304、304-1、304-2、304-3、304-n、#、#1、#2、#3、#4、#5、#6、#7、#8、#9、#10:行

206:权重图案灵敏度(wps)/第一wps

300、[d]n×m、[d1]64×64、[d1]n×m、[d2]10×64:缺陷图案/检测图案

306、306-1、306-2:缺陷图案指示符(dpi)

400、410、420:曲线图

402、422:准确度下降值

404:注入缺陷

412:不正确计数

414:错误数目

426:曲线

500、510:示意图

512:故障位计数(fbc)

514:统计严重性(ss)

600、660、800:系统

602:存储器宏

604:存储胞元阵列

606:写入驱动器(wd)

608:多路复用器(mux)

610:读出放大器(sa)

612:控制电路

614、616:选择器

618:存储器

620:控制器

622:输入

624:权重图案灵敏度(wps)

630:输出

650:神经网络宏/网络宏/系统接口

700、730、900:方法

702、704、706、708、710、712、714、716、718、720、732、734、736、738、902、904、906、908、910、912、914、916、918、920:操作

740:表

802:缓冲器

804:处理器

806:en信号

a1、a2、a3、a4、am、b1、b2、b3、bn、c1、c2、c3、cp:值

temp1:第一临时参数

temp2:第二临时参数

[a]、[a]m×1、[a]’1×m、[a]’m×1:输入数据

[b]n×m、[b]’n×m:输出数据

具体实施方式

以下公开阐述了用于实施主题的不同特征的各种示例性实施例。以下阐述组件及排列的具体实例以简化本公开。当然,这些仅为实例且并非旨在进行限制。例如,应理解,当称一元件“连接到”或“耦合到”另一元件时,所述元件可直接连接到或耦合到所述另一元件,或者也可存在一个或多个中间元件。

存在用于实施神经网络的两种根本上不同的选择方案:传统计算机中的软件模拟或能够显著减少执行时间的专用硬件解决方案。软件模拟可有助于开发及调试新算法以及使用小型网络对所述新算法进行基准测试。然而,如果要使用大型网络,软件模拟是不够的。问题在于学习过程所需的时间,所述时间可根据网络的大小而以指数方式增加。然而,不进行学习的神经网络相当无趣。但构建专用硬件的主要目的是为高效的自适应系统提供能够随着时间的进行来更新所述系统的参数的平台。因此,新的硬件解决方案是必要的。使用存储胞元阵列的基于硬件的解决方案可提供改善的功率效率。存储胞元阵列中的存储胞元之间的本征差异(例如,存储胞元阵列中的有缺陷存储胞元的类型及地址)通常由制作过程引起,此导致不同存储胞元阵列之间的本征差异。不同存储胞元阵列的单独训练过程可使成本开销显著增加。本公开呈现可改善基于硬件的神经网络的缺陷容忍度的方法及装置的各种实施例。

图1示出根据本公开一些实施例的人工神经网络(ann)的全连接网络100的示例图。网络100包括输入层112、隐藏层114及输出层116。应注意,网络100仅为实例,而并非旨在对本公开进行限制。因此,应理解,可在图1中的输入层112与输出层116之间提供附加的隐藏层114,且每一层(即112、114及116)可包括不同数目的神经元,此处于本申请的范围内。还应注意,神经元上的值可利用不同的算法来确定,此也处于本申请的范围内。

在所示出的实施例中,输入层112包括多个神经元106。所述多个神经元106中的每一者包括相应的值,即神经元106-1上的a1、神经元106-2上的a2、神经元106-3上的a3、...、及神经元106-m上的am,其中m是正整数。在一些实施例中,输入层112上的神经元106上的值为[a]m×1=[a1;a2;a3;…;am]。此外,隐藏层114包括多个神经元108。所述多个神经元108中的每一者包括相应的值,即神经元108-1上的b1、神经元108-2上的b2、神经元108-3上的b3、...、及神经元108-n上的bn,其中n是正整数。在一些实施例中,隐藏层114上的神经元108上的值为[b]n×1=[b1;b2;b3;…;bn]。相似地,根据一些实施例,输出层116包括多个神经元110。所述多个神经元110中的每一者包括相应的值,即c1、c2、c3、...、及cp,其中p是正整数。在一些实施例中,输出层116上的神经元110上的值为[c]p×1=[c1;c2;c3;…;cp]。

在一些实施例中,输入层112中的所述多个神经元106中的每一者通过多个对应的权重102耦合到隐藏层114中的所述多个神经元108中的每一者。举例来说,权重w1,1、w2,1、...、及wm,1用于耦合输入层112的神经元106-1、106-2、106-3、...、106-m与隐藏层114的神经元108-1。在一些实施例中,输入层112的神经元106与隐藏层114的神经元108之间的对应的权重102中的每一者具有值“0”或值“1”。在一些实施例中,对应的权重(wi,j)102中的每一者的值表示对应的神经元106的值(ai)对对应的神经元108的值(即bj)的贡献度,其中i≤m,j≤n,i及j是正整数。

相似地,隐藏层114中的所述多个神经元108中的每一者通过多个对应的权重104耦合到输出层116中的所述多个神经元110中的每一者。举例来说,权重x1,1、x2,1、...、及xn,1用于在隐藏层114的神经元108-1、108-2、108-3、...、及108-n与输出层116的神经元110-1之间进行耦合。在一些实施例中,隐藏层114的神经元108与输出层116的神经元110之间的对应的权重104中的每一者具有值“0”或值“1”。在一些实施例中,对应的权重(xj,k)104中的每一者的值也表示对应的神经元108的值(bj)对对应的神经元110的值(ck)的贡献度,其中j≤n,k≤p,j及k是正整数。

在一些实施例中,权重102及104是根据预先定义的算法及方法通过训练过程获得的经训练权重。在一些实施例中,训练算法是反向传播算法(back-propagationalgorithm),在反向传播算法中网络的权重被重复调整,以使实际输出向量与所看到的输出向量之间的差最小化。在一些实施例中,权重训练可使用硬件存储胞元阵列在芯片上执行或使用软件在芯片外执行。在一些实施例中,在假设为无缺陷存储胞元阵列的情况下确定网络的权重。

在一些实施例中,输入层112与隐藏层114之间的权重102的所有值被集合在一起,以形成具有n个行及m个列的第一权重图案[w]n×m118。在一些实施例中,隐藏层114与输出层116之间的所有权重104被集合在一起,以形成具有p个行及n个列的第二权重图案[x]p×n120。在一些实施例中,在实施期间,第一权重图案[w]n×m118可通过第一存储胞元阵列实现且第二权重图案[x]p×n120通过第二存储胞元阵列实现。在一些实施例中,第一存储胞元阵列包括具有n×m大小的存储胞元阵列且第二存储胞元阵列包括具有p×n大小的存储胞元阵列。

图2示出根据本公开一些实施例的网络100中的输入层112与隐藏层114之间的示例性权重图案200。在所示出的实施例中,可根据对应的权重图案200(例如,第一权重图案[w]n×m118)来获得权重图案灵敏度(weightpatternsensitivity,wps)206。在所示出的实施例中,wps206包括1个行及m个列。在一些实施例中,第一权重图案[w]n×m118包括n个行(即204-1、204-2、...及204-n)以及m个列(即202-1、202-2、...及202-m)。在一些实施例中,对应的第一权重图案[w]n×m118的第一wps206可根据列202中的“0”的数目或“1”的数目来确定。举例来说,当第一权重图案[w]n×m118的列202-j中的“1”的数目等于或大于预先定义的阈值时,wps206中的sj被确定为1,其中j≤m且j是正整数。相似地,当第一权重图案[w]n×m118的列202-j中的“1”的数目小于预先定义的阈值时,wps206中的sj的值被确定为“0”。在一些实施例中,对于对应的权重图案[w]n×m118,存在一个wps206。

在一些实施例中,通过将权重图案的列中的“1”的数目与多级阈值进行比较来确定wps206中的值。举例来说,当权重图案的列中的“1”的数目等于或大于0且小于5时,此列的wps值为0;当权重图案的列中的“1”的数目等于或大于5且小于10时,列的wps值为1;当权重图案的列中的“1”的数目等于或大于10且小于15时,列的wps值为2;且当权重图案的列中的“1”的数目等于或大于15且小于列的大小(例如,n)时,列的wps值为3。

图3a示出根据本公开一些实施例的存储胞元阵列的示例性缺陷图案[d]n×m300。在所示出的实施例中,通过测量具有n×m大小的存储胞元阵列以存储第一权重图案[w]n×m118并确定隐藏层114的神经元108中的每一者上的值来获得缺陷图案[d]n×m300。在一些实施例中,存储胞元阵列可包括以下中的一者:多个寄存器、多个电熔丝(e-fuse)、静态随机存取存储器(staticrandomaccessmemory,sram)及存储胞元阵列的一部分。

在一些实施例中,缺陷图案[d]n×m300通过以下方式获得:在阵列中的存储胞元中的每一者中写入“0”或“1”,然后测量在阵列中的存储胞元中的每一者上保存的逻辑状态。当写入有“1”的存储胞元被测量为“0”时,则此存储胞元被确定为有缺陷,且更具体来说是有“置位到复位(set-to-reset)”缺陷;且当写入有“0”的存储胞元被测量为“1”时,则此存储胞元也被确定为有缺陷,且更具体来说是有“复位到置位(reset-to-set)”缺陷。在一些其他实施例中,当写入有“1”或“0”的存储胞元也被测量为“1”或“0”时,此存储胞元被确定为稳定的且因此无缺陷。在一些实施例中,当存储胞元稳定时,dij=1;且当存储胞元有缺陷时,dij=0,其中i及j是正整数,i≤m且j≤n。

在一些实施例中,缺陷图案指示符(defectpatternindicator,dpi)306可根据对应的缺陷图案[d]n×m300的m个列302中的每一者中的有缺陷存储胞元的数目获得。在一些实施例中,对于包括n个行304及m个列302的缺陷图案[d]n×m300,dpi306包括1个行及m个列。在一些实施例中,当缺陷图案[d]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306中的对应的dj被确定为“0”;且当缺陷图案[d]n×m300的列302-j中的有缺陷存储胞元的数目小于预先定义的阈值时,dpi306中的对应的dj被确定为“1”。

图3b示出根据本公开一些实施例的存储胞元阵列的示例性缺陷图案[d]n×m300。在所示出的实施例中,通过测量具有n×m大小的存储胞元阵列以存储第一权重图案[w]n×m118并确定隐藏层114的神经元108中的每一者上的值来获得缺陷图案[d]n×m300。在一些实施例中,存储胞元阵列可包括以下中的一者:多个寄存器、多个电熔丝、静态随机存取存储器(sram)及存储胞元阵列的一部分。

在一些实施例中,缺陷图案[d]n×m300通过以下方式获得:在阵列中的存储胞元中的每一者中写入“0”或“1”,然后测量在阵列中的存储胞元中的每一者上保存的逻辑状态。当写入有“1”的存储胞元被测量为“0”时,则此存储胞元被确定为有缺陷,且更具体来说是有“置位到复位”缺陷;且当写入有“0”的存储胞元被测量为“1”时,则此存储胞元也被确定为有缺陷,且更具体来说是有“复位到置位”缺陷。在一些其他实施例中,当写入有“1”或“0”的存储胞元也被测量为“1”或“0”时,此存储胞元被确定为稳定的且因此无缺陷。

在一些实施例中,缺陷图案指示符(dpi)306可根据列302中的有缺陷存储胞元的数目获得。在一些实施例中,dpi306包括1个行及m个列,其中m=log2m,m是对应的缺陷图案[d]n×m300中的列的数目。在一些实施例中,当缺陷图案[d]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306被确定为列302-j的地址。举例来说,当第二列302-2及最末列302-m被确定为所包括的有缺陷存储胞元比预先定义的阈值大的列时,对于列302-2来说,dpi-1306-1是[00…1]且对于列302-m来说,dpi-2306-2是[11…1]。

图4a到图4c示出根据本公开一些实施例的使用网络100的模拟结果。在一些实施例中,网络100包括输入层112、隐藏层114及输出层116,其中输入层112包括n=64个神经元,隐藏层114包括m=64个神经元且输出层116包括p=10个神经元。此外,网络100包括2个权重图案,即第一权重图案[w]64×64及第二权重图案[x]64×10。在一些实施例中,第一权重图案存储在第一存储胞元阵列中且第二权重图案存储在第二存储胞元阵列中。在一些实施例中,第一存储胞元阵列包括具有64×64大小的存储胞元的阵列且第二存储胞元阵列包括具有10×64大小的存储胞元的阵列。

图4a示出根据本公开一些实施例的曲线图400,曲线图400示出第一存储胞元阵列及第二存储胞元阵列中的注入缺陷404的数目与准确度下降值402之间的关系。在一些实施例中,准确度下降值由以下方程式确定:

准确度下降值=缺陷注入之前的准确度-缺陷注入之后的准确度

其中单位为%的准确度下降值402是在有缺陷胞元(在下文中称为“缺陷”)被引入到相应的存储胞元阵列中之前与在有缺陷胞元被引入到相应的存储胞元阵列中之后的准确度差。在一些实施例中,手动引入每一存储胞元阵列的注入缺陷404的数目,以创建第一存储胞元阵列的第一缺陷图案[d1]64×64及第二存储胞元阵列的第二缺陷图案[d2]10×64。在一些实施例中,在通过训练过程确定(例如,在假设为无缺陷存储胞元阵列的情况下使用软件在芯片外确定)对应的权重图案(例如,[w]n×m及[x]p×n)之后,将缺陷注入到对应的存储胞元阵列。

在所示出的实施例中,当1个缺陷被注入到第一存储胞元阵列时,准确度下降值402等于0.024%;当2个缺陷被注入到第一存储胞元阵列时,准确度下降值等于0.047%;当3个缺陷被注入到第一存储胞元阵列时,准确度下降值等于0.070%;当4个缺陷被注入到第一存储胞元阵列时,准确度下降值等于0.094%;且当5个缺陷被注入到第一存储胞元阵列时,准确度下降值等于0.113%。

在所示出的实施例中,当1个缺陷被注入到第二存储胞元阵列时,准确度下降值等于0.012%;当2个缺陷被注入到第二存储胞元阵列时,准确度下降值等于0.024%;当3个缺陷被注入到第二存储胞元阵列时,准确度下降值等于0.036%;当4个缺陷被注入到第二存储胞元阵列时,准确度下降值等于0.047%;且当5个缺陷被注入到第二存储胞元阵列时,准确度下降值等于0.058%。

在所示出的实施例中,当1个缺陷被注入到第一存储胞元阵列及第二存储胞元阵列中的每一者时,准确度下降值等于0.042%;当2个缺陷被注入到第一存储胞元阵列及第二存储胞元阵列中的每一者时,准确度下降值等于0.074%;当3个缺陷被注入到第一存储胞元阵列及第二存储胞元阵列中的每一者时,准确度下降值等于0.104%;当4个缺陷被注入到第一存储胞元阵列及第二存储胞元阵列中的每一者时,准确度下降值等于0.139%;且当5个缺陷被注入到第一存储胞元阵列及第二存储胞元阵列中的每一者时,准确度下降值等于0.167%。

在所示出的实施例中,第一存储胞元阵列中的注入缺陷引起的准确度下降值比第二存储胞元阵列中的相同数目的注入缺陷引起的准确度下降值更显著。如图4a中所示,与向第二存储胞元阵列注入缺陷所引发的准确度下降量相比,向第一存储胞元阵列注入缺陷可引发更显著的准确度下降量。在图4a中所示的模拟结果中会观察到,第二存储胞元阵列具有从第一存储胞元阵列的输出接收的较少数目的神经元激活(例如,第一存储胞元阵列的输出处的“1”的数目),因此第二存储胞元阵列中的能够导致相同准确度降低量的缺陷的数目较少。应注意,这种趋势也适用于其他数目的注入缺陷。

图4b示出根据本公开一些实施例的曲线图410,曲线图410示出不正确计数412与错误数目414之间的关系。在一些实施例中,错误数目414是被不正确分类的测试图像(例如,具有数字8的输入图像在通过整个人工神经网络之后被识别并分类为数字6)的数目。在一些实施例中,为引入1到0缺陷(1-to-0defect),存储在存储胞元阵列的胞元中的1的权重被修改为0。相似地,在一些其他实施例中,为引入0到1缺陷(0-to-1defect),存储在存储胞元阵列的胞元中的0的权重被修改为1。

图4c示出根据本公开一些实施例的曲线图420,曲线图420示出与第二权重图案[x]10×64120对应的第二存储胞元阵列的每一列处的准确度下降值422。具体来说,在此模拟中,曲线426是第二权重图案[x]10×64120的每一列中的“1”的数目相对于行#的曲线图。在所示出的实施例中,第二权重图案[x]10×64120的行#0到行#10中的“1”的数目分别为16、17、13、13、12、15、16、17、13及15。在所示出的实施例中,在1个缺陷、2个缺陷及3个缺陷处,行1中的准确度下降值分别为1.13、2.27及3.79;在1个缺陷、2个缺陷及3个缺陷处,行2中的准确度下降值分别为1、2.62及5.31;在1个缺陷、2个缺陷及3个缺陷处,行3中的准确度下降值分别为2.97、7.90及16.94;在1个缺陷、2个缺陷及3个缺陷处,行4中的准确度下降值分别为4.02、8.06及12.56;在1个缺陷、2个缺陷及3个缺陷处,行5中的准确度下降值分别为3.68、10.52及23.14;在1个缺陷、2个缺陷及3个缺陷处,行6中的准确度下降值分别为2.83、7.31及14.52;在1个缺陷、2个缺陷及3个缺陷处,行7中的准确度下降值分别为2.45、5.06及9.54;在1个缺陷、2个缺陷及3个缺陷处,行8中的准确度下降值分别为1.76、3.98及6.78;在1个缺陷、2个缺陷及3个缺陷处,行9中的准确度下降值分别为3.35、7.42及12.77;且在1个缺陷、2个缺陷及3个缺陷处,行10中的准确度下降值分别为3.16、7.94及14.52。

在所示出的实施例中,当权重图案的列中的“1”的数目大时,准确度下降值442小;且当权重图案的列中的“1”的数目小时,准确度下降值442大。如在此模拟结果中所示,权重图案的列中的“1”的数目与准确度下降值442相关联。当权重图案的列中的“1”的数目较大时,准确度下降值较小,且因此,权重图案中的“1”的数目较大的列因此对存储胞元阵列的存储胞元的列中的缺陷具有容忍度或不太敏感。相似地,当权重图案的列中的“1”的数目较少时,准确度下降值较大,且因此,权重图案中的“1”的数目较少的列对存储胞元阵列的存储胞元的列中的缺陷敏感或容忍度较低。

图5a示出根据本公开一些实施例的用于对存储胞元阵列上的权重图案及输入数据进行重新排列的示意图500。在一些实施例中,所述重新排列是根据权重图案灵敏度(wps)206及存储胞元阵列的对应的缺陷图案300来确定。在所示出的实施例中,wps206包括1个行及m个列,且每一列包括二进制数,所述二进制数表示对应的权重图案的列中的1的数目与预先定义的阈值之间的关系。举例来说,如果对应的权重图案的列中的1的数目等于或大于预先定义的阈值,则wps206中的对应的要素等于1;且如果对应的权重图案的列中的1的数目小于预先定义的阈值,则wps206中的对应的要素等于0。在所示出的实施例中,wps206的最末列是1且wps206的第一列是0。在所示出的实施例中,缺陷图案300示出了存储胞元阵列中的有缺陷胞元(即缺陷)的数目。在所示出的实施例中,存储胞元阵列中的第一列无缺陷且存储胞元阵列的最末列包含最大数目的缺陷(例如,2个缺陷)。根据wps206及检测图案300,存储胞元阵列的列1接收最初为存储胞元阵列的列m指定的对应的权重及输入数据;且存储胞元阵列的列m接收最初为存储胞元阵列的列1指定的对应的权重及输入数据,以采用缺陷数目最少的列来存储对缺陷最敏感的权重及对应的输入数据。

图5b示出根据本公开一些实施例的用于对存储胞元阵列上的权重图案及输入数据进行重新排列的示意图510。在一些实施例中,所述重新排列是根据权重图案灵敏度(wps)206及对应的缺陷图案300来确定。在所示出的实施例中,wps206包括1个行及m个列,且每一列包括非二进制数。在一些实施例中,通过将权重图案的列中的正权重的数目与多级阈值进行比较来确定wps206中的值。举例来说,当权重图案的列中的正权重的数目等于或大于0且小于5时,此列的wps值为0;当权重图案的列中的正权重的数目等于或大于5且小于10时,此列的wps值为1;当权重图案的列中的正权重的数目等于或大于10且小于15时,此列的wps值为2;且当权重图案的列中的正权重的数目等于或大于15且小于列的大小(例如,图2中的n)时,此列的wps值为3。

在所示出的实施例中,缺陷图案300示出了存储胞元阵列中的有缺陷胞元(即缺陷)的映射。在所示出的实施例中,可根据给定的缺陷图案300来确定每一列的故障位计数(failurebitcount,fbc)512,故障位计数512是每一列的缺陷的数目。在所示出的实施例中,存储胞元阵列的第一列包括0个缺陷,存储胞元阵列的第二列包括2个缺陷,存储胞元阵列的第三列包括1个缺陷,...,存储胞元阵列的第m-2列包括0个缺陷,存储胞元阵列的第m-1列包括2个缺陷,且存储胞元阵列的第m列包括1个缺陷。在所示出的实施例中,统计严重性(statisticsseverity,ss)514被确定为fbc512与wps206的乘积。

根据ss514,存储胞元阵列的列1接收最初为存储胞元阵列的列m-1指定的对应的权重及输入数据;且存储胞元阵列的列m-1接收最初为存储胞元阵列的列1指定的对应的权重及输入数据。相似地,存储胞元阵列的列2接收最初为存储胞元阵列的列m-2指定的对应的权重及输入数据;且存储胞元阵列的列m-2接收最初为存储胞元阵列的列2指定的对应的权重及输入数据。

在一些实施例中,当没有足够好的列用来交换时,需要从一个方向开始(例如,从左到右、从低地址到高地址、从低io数目到高io数目等)。

应注意,图5a到图5b仅为实例,而并非旨在进行限制。需要进行重新排列的存储胞元阵列的缺陷的不同数目、权重图案的不同值、列的不同位置及数目均处于本申请的范围内。

图6a示出根据本公开一些实施例的系统600的方块图,系统600用于确定网络100的隐藏层114上的神经元108上的值。应注意,系统600仅为实例,而并非旨在对本公开进行限制。因此,应理解,可提供位于系统600中或耦合到系统600的附加的功能块,且一些其他功能块在本文中可仅进行简要阐述。

在图6a所示出的实施例中,系统600包括神经网络宏650,其中神经网络宏650包括存储器宏602。在一些实施例中,存储器宏602包括存储胞元阵列604,存储胞元阵列604包括多个存储胞元。在一些实施例中,所述多个存储胞元以列-行的配置方式排列,其中每一列具有位线(bitline,bl)及反位线(bitlinebar,blb),每一行具有字线(wordline,wl)。更具体来说,每一列的bl及blb分别耦合到设置在此列中的多个存储胞元,且此列中的每一存储胞元排列在不同的行上且耦合到相应的(不同的)wl。也就是说,存储胞元阵列604的每一存储胞元耦合到存储胞元阵列604的列的bl、存储胞元阵列604的列的blb及存储胞元阵列604的行的wl。在一些实施例中,bl与blb在垂直方向上平行地排列,且wl在水平方向上平行地排列(即与bl及blb垂直)。在一些实施例中,存储胞元阵列604中的每一行存储胞元的wl连接在一起。

在一些实施例中,存储胞元阵列604的存储胞元中的每一者包括至少一个晶体管。在一些其他实施例中,存储胞元阵列604的所述多个存储胞元中的每一者可包括以下中的一者:忆阻器(memristor)、电阻式随机存取存储器(resistiverandomaccessmemory,reram、rram)、相变随机存取存储器(phasechangerandomaccessmemory,pcram、pcm)、磁阻随机存取存储器(magnetoresistiverandomaccessmemory,mram)、导电桥随机存取存储器(conductivebridgerandomaccessmemory,cbram)、浮动栅极闪存(floatinggateflashmemory,flash)及静态随机存取存储器(sram)。

在一些实施例中,存储器宏602还包括写入驱动器(writedriver,wd)606、多路复用器(multiplexer,mux)608、读出放大器(senseamplifier,sa)610及控制电路612。在一些实施例中,wd606被配置成提供对存储胞元阵列604进行编程所需的必要电压和/或电流。在一些实施例中,mux608被配置成选择将输入信号转发到输出的路径。在一些实施例中,sa610被配置成将在读取操作期间产生的电压或电流与预先定义的阈值进行比较。

在一些实施例中,控制电路612是代表性器件且可包括处理器、存储器、输入/输出接口、通信接口及系统总线。处理器可包括能够操作以对存储器宏602的控制电路612的操作及性能进行控制的任何处理电路系统。在各个方面中,处理器可被实施成通用处理器、芯片多处理器(chipmultiprocessor,cmp)、专用处理器、嵌入式处理器、数字信号处理器(digitalsignalprocessor,dsp)、网络处理器、输入/输出(input/output,i/o)处理器、媒体存取控制(mediaaccesscontrol,mac)处理器、无线电基带处理器、协同处理器(co-processor)、微处理器(例如复杂指令集计算机(complexinstructionsetcomputer,cisc)微处理器、精简指令集计算(reducedinstructionsetcomputing,risc)微处理器和/或超长指令字(verylonginstructionword,vliw)微处理器)或其他处理器件。处理器也可由控制器、微控制器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、可编程逻辑器件(programmablelogicdevice,pld)等来实施。

在各个方面中,处理器可被布置成运行操作系统(operatingsystem,os)及各种应用。os的实例包括例如一般以苹果os(appleos)、微软视窗os(microsoftwindowsos)、安卓os(androidos)及任何其他专有或开源os的商标名命名的操作系统。

在一些实施例中,提供至少一种上面包含计算机可执行指令的非暂时性计算机可读存储媒体(non-transitorycomputer-readablestoragemedium),其中计算机可执行指令在由至少一个处理器执行时使所述至少一个处理器实行本文中所述的方法的实施例。这种计算机可读存储媒体可包含在存储器中。

在一些实施例中,存储器可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器可包括至少一个非易失性存储单元。仅举几个例子来说,非易失性存储单元能够存储一个或多个软件程序。软件程序可包含例如应用、用户数据、器件数据和/或配置数据或其组合。软件程序可包含可由存储器宏602的控制电路612的各个组件执行的指令。

举例来说,存储器可包括只读存储器(read-onlymemory,rom)、随机存取存储器(random-accessmemory,ram)、动态随机存取存储器(dynamicram,dram)、双倍数据速率动态随机存取存储器(double-data-ratedram,ddr-dram)、同步动态随机存取存储器(synchronousdram,sdram)、静态随机存取存储器(sram)、可编程只读存储器(programmablerom,prom)、可擦可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyerasableprogrammablerom,eeprom)、闪存(例如,或非(nor)闪存或者与非(nand)闪存)、内容可寻址存储器(contentaddressablememory,cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(silicon-oxide-nitride-oxide-silicon,sonos)存储器、盘存储器(diskmemory)(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器可包含文件形式的指令集,以用于执行本文所述的产生一个或多个时序库(timinglibrary)的方法。指令集可以机器可读指令的任何可接受形式(包括源代码或各种适当的编程语言)存储。可用于存储指令集的编程语言的一些实例包括但不限于java、c、c++、c#、python、objective-c、visualbasic或net编程。在一些实施例中,包括编译器或解释器,以将指令集转换成供处理器执行的机器可执行代码。

在一些实施例中,i/o接口可包括任何合适的机构或组件,以至少使用户能够将输入(即测试/请求和/或测试/正常模式等)提供到存储器宏602的控制电路612且使存储器宏602的控制电路612能够将输出控制提供到存储器宏602的其他组件(例如,存储胞元阵列604、wd606、mux608及sa610)。

在一些实施例中,神经网络宏650还包括2个选择器614/616。在一些实施例中,选择器614及选择器616分别被配置成根据图5a及图5b中所论述的重新排列来交换输入,以形成存储胞元阵列604的映射输入。

在一些实施例中,神经网络宏650还包括存储器618。在一些实施例中,存储器可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器可包括至少一个非易失性存储单元。举例来说,存储器可包括只读存储器(rom)、随机存取存储器(ram)、动态随机存取存储器(dram)、双倍数据速率动态随机存取存储器(ddr-dram)、同步动态随机存取存储器(sdram)、静态随机存取存储器(sram)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存(例如,nor闪存或者nand闪存)、内容可寻址存储器(cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、盘存储器(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器618包含图3a到图3b中所论述的呈文件形式或机器可读指令的任何可接受形式的缺陷图案[d1]n×m。在一些实施例中,存储器618包括存储胞元阵列604中的对应的有缺陷存储胞元的地址。在一些实施例中,预先存储在存储器618中的缺陷图案是通过在制造过程期间对测量存储胞元阵列604进行编程来确定。

在一些实施例中,神经网络宏650还包括控制器620。在一些实施例中,控制器620被配置成从存储器618接收缺陷图案且接收权重图案灵敏度(wps)624。在一些实施例中,控制器620还被配置成基于缺陷图案300及wps206来确定交换决策,以指示选择器614/616实行i/o交换。在一些实施例中,选择器614/616及控制器620可被配置在系统接口650外部。在一些实施例中,系统接口650的外部还包括以下中的至少一者:处理单元、感测单元及功率调节单元,所有这些均未示出。

图6b示出根据本公开一些实施例的系统660的方块图,系统660用于确定网络100的隐藏层114上的神经元108上的值。应注意,系统660仅为实例,而并非旨在对本公开进行限制。因此,应理解,可提供位于系统660中或耦合到系统660的附加的功能块,且一些其他功能块在本文中可仅进行简要阐述。

在图6b所示出的实施例中,系统660包括神经网络宏650,其中神经网络宏650包括存储器宏602及存储器618。在一些实施例中,存储器宏602包括存储胞元阵列604,存储胞元阵列604包括多个存储胞元。在一些实施例中,所述多个存储胞元以列-行的配置方式排列,其中每一列具有存储位线(bl)及反存储位线(blb),每一行具有字线(wl)。更具体来说,每一列的bl及blb分别耦合到设置在此列中的多个存储胞元,且此列中的每一存储胞元排列在不同的行上且耦合到相应的(不同的)wl。也就是说,存储胞元阵列604的每一存储胞元耦合到存储胞元阵列604的列的bl、存储胞元阵列604的列的blb及存储胞元阵列604的行的wl。在一些实施例中,bl与blb在垂直方向上平行地排列,且wl在水平方向上平行地排列(即与bl及blb垂直)。在一些实施例中,存储胞元阵列604中的每一行存储胞元的wl连接在一起。

在一些实施例中,存储胞元阵列604的存储胞元中的每一者包括至少一个晶体管。在一些其他实施例中,存储胞元阵列604的所述多个存储胞元中的每一者可包括以下中的一者:忆阻器、电阻式随机存取存储器(reram、rram)、相变随机存取存储器(pcram、pcm)、磁阻随机存取存储器(mram)、导电桥随机存取存储器(cbram)、浮动栅极闪存(flash)及静态随机存取存储器(sram)。

在一些实施例中,存储器宏602还包括写入驱动器(wd)606、多路复用器(mux)608、读出放大器(sa)610及控制电路612。在一些实施例中,wd606被配置成提供对存储胞元阵列604进行编程所需的必要电压和/或电流。在一些实施例中,mux608被配置成选择将输入信号转发到输出的路径。在一些实施例中,sa610被配置成将在读取操作期间产生的电压或电流与预先定义的阈值进行比较。

在一些实施例中,控制电路612是代表性器件且可包括处理器、存储器、输入/输出接口、通信接口及系统总线。处理器可包括能够操作以对存储器宏602的控制电路612的操作及性能进行控制的任何处理电路系统。在各个方面中,处理器可被实施成通用处理器、芯片多处理器(cmp)、专用处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、输入/输出(i/o)处理器、媒体存取控制(mac)处理器、无线电基带处理器、协同处理器、微处理器(例如复杂指令集计算机(cisc)微处理器、精简指令集计算(risc)微处理器和/或超长指令字(vliw)微处理器)或其他处理器件。处理器也可由控制器、微控制器、应用专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)等来实施。

在各个方面中,处理器可被布置成运行操作系统(os)及各种应用。os的实例包括例如一般以苹果os、微软视窗os、安卓os及任何其他专有或开源os的商标名命名的操作系统。

在一些实施例中,提供至少一种上面包含计算机可执行指令的非暂时性计算机可读存储媒体,其中计算机可执行指令在由至少一个处理器执行时使所述至少一个处理器实行本文中所述的方法的实施例。这种计算机可读存储媒体可包含在存储器中。

在一些实施例中,存储器可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器可包括至少一个非易失性存储单元。非易失性存储单元能够存储一个或多个软件程序。仅举几个例子来说,软件程序可包含例如应用、用户数据、器件数据和/或配置数据或其组合。软件程序可包含可由存储器宏602的控制电路612的各个组件执行的指令。

举例来说,存储器可包括只读存储器(rom)、随机存取存储器(ram)、动态随机存取存储器(dram)、双倍数据速率动态随机存取存储器(ddr-dram)、同步动态随机存取存储器(sdram)、静态随机存取存储器(sram)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存(例如,nor闪存或者nand闪存)、内容可寻址存储器(cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、盘存储器(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器可包含文件形式的指令集,以用于执行本文中所述的产生一个或多个时序库的方法。指令集可以机器可读指令的任何可接受形式(包括源代码或各种适当的编程语言)存储。可用于存储指令集的编程语言的一些实例包括但不限于java、c、c++、c#、python、objective-c、visualbasic或net编程。在一些实施例中,包括编译器或解释器,以将指令集转换成供处理器执行的机器可执行代码。

在一些实施例中,存储器618可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器618可包括至少一个非易失性存储单元。举例来说,存储器618可包括只读存储器(rom)、随机存取存储器(ram)、动态随机存取存储器(dram)、双倍数据速率动态随机存取存储器(ddr-dram)、同步动态随机存取存储器(sdram)、静态随机存取存储器(sram)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存(例如,nor闪存或者nand闪存)、内容可寻址存储器(cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、盘存储器(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器618包含图3a到图3b中所论述的呈文件形式或机器可读指令的任何可接受形式的缺陷图案[d1]n×m。在一些实施例中,存储器618包括存储胞元阵列604中的对应的有缺陷存储胞元的地址。在一些实施例中,预先存储在存储器618中的缺陷图案是通过在制造过程期间对测量存储胞元阵列604进行编程来确定。

在一些实施例中,网络宏650耦合到第一选择器614、第二选择器616及控制器620。在一些实施例中,系统660还包括2个选择器614/616。在一些实施例中,选择器614及选择器616分别被配置成根据图5a及图5b中所论述的重新排列来交换输入,以形成存储胞元阵列604的映射输入。

在一些实施例中,控制器620被配置成从存储器618接收缺陷图案且接收权重图案灵敏度(wps)624。在一些实施例中,控制器620还被配置成基于缺陷图案300及wps206来确定交换决策,以指示选择器614/616实行i/o交换。在一些实施例中,系统660还包括以下中的至少一者:处理单元、感测单元及功率调节单元,所有这些均未示出且位于神经网络宏650的外部。

图7a示出根据本公开一些实施例的方法700的流程图,方法700使用系统600或660对网络100的隐藏层114上的神经元108中的每一者上的值实行计算。在一些实施例中,方法700的操作由图1、图3、图5及图6a到图6b中所示的相应的组件来实行。为便于论述,将结合图1、图3、图5及图6a到图6b来阐述方法700的以下实施例。所示出的方法700的实施例仅是根据权重图案的权重图案灵敏度(wps)实行权重重新排列的实例。因此,应理解,在保持处于本公开范围内的同时,可对各种操作中的任何操作进行省略、重新排序和/或添加。

方法700从操作702开始,在操作702中,根据一些实施例将存储胞元阵列604的缺陷图案[d1]n×m300加载到控制器620。在一些实施例中,缺陷图案[d1]n×m300包含存储胞元阵列604中的有缺陷存储胞元的地址。在一些实施例中,可将缺陷图案指示符(dpi)306加载到控制器620中。在一些实施例中,dpi306包括1个行及m个列,其中m=log2m,m是对应的缺陷图案[d1]n×m300中的列的数目。在一些实施例中,当缺陷图案[d]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306被确定为列302-j的地址。在一些其他实施例中,对于包括n个行及m个列的对应的缺陷图案[d1]n×m300,dpi306还可包括n个行及1个列。在一些实施例中,当缺陷图案[d1]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306中的dj的值被确定为“0”;且当缺陷图案[d1]n×m300的列302-j中的有缺陷存储胞元的数目小于预先定义的阈值时,dpi306中的对应的dj被确定为“1”。在一些实施例中,缺陷图案[d1]n×m300或dpi306可存储在存储器618中。

在一些实施例中,在进行操作702之前,可通过测量存储胞元阵列604来确定缺陷图案[d1]n×m。在一些实施例中,操作702还包括将预先配置的逻辑状态(例如,“1”)写入到存储胞元阵列604中的多个存储胞元中的每一者并对所存储逻辑状态进行测量。当存储胞元中的所存储逻辑状态与预先配置的逻辑状态一致(例如,两者均为“1”)时,存储胞元是稳定的且无缺陷。当存储胞元中的所存储逻辑状态不同于预先配置的逻辑状态(例如,所存储逻辑状态为“0”)时,存储胞元被确定为有缺陷,且因此,存储胞元是存储胞元阵列604中的缺陷。具体来说,存储胞元有“1”到“0”缺陷。相似地,当将“0”写入到存储胞元中且所存储逻辑状态为“1”时,则存储胞元也被确定为有“0”到“1”缺陷。在一些实施例中,操作702可由神经网络系统实行或在制作过程期间由存储器制造商实行。

方法700继续进行操作704,在操作704中,根据一些实施例将权重图案灵敏度(wps)206加载到控制器620。在所示出的实施例中,wps206包括1个行及m个列。在一些实施例中,可根据列202中的“0”的数目或“1”的数目来确定对应的权重图案[w]n×m118的wps206。举例来说,当列202-j中的“1”的数目等于或大于预先定义的阈值时,wps206中的sj被确定为1,其中j≤n且j是正整数。相似地,当列202-j中的“1”的数目小于预先定义的阈值时,wps206中的sj被确定为“0”。在一些实施例中,对于对应的权重图案[w]n×m118,存在一个wps206。在一些实施例中,wps206可由用户从外部获得和/或进行调整。

在一些实施例中,通过将权重图案的列中的正权重的数目与多级阈值进行比较来确定wps206中的值。举例来说,当权重图案的列中的正权重的数目等于或大于0且小于5时,此列的wps值为0;当权重图案的列中的正权重的数目等于或大于5且小于10时,此列的wps值为1;当权重图案的列中的正权重的数目等于或大于10且小于15时,此列的wps值为2;且当权重图案的列中的正权重的数目等于或大于15且小于列的大小(例如,图2中的n)时,此列的wps值为3。

方法700继续进行操作706,在操作706中,根据一些实施例由控制器620对wps206与对应的权重图案118[w]n×m的缺陷图案[d1]n×m300进行比较。在一些其他实施例中,由控制器620对wps206与dpi306进行比较。在一些其他实施例中,确定wps206与缺陷图案[d1]n×m300的每一列中的缺陷的数目的乘积。

方法700继续进行操作708,在操作708中,根据一些实施例由控制器620确定交换决策。在一些实施例中,存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列被确定为接收最初存储在存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列上的权重及输入数据。在一些其他实施例中,根据wps206与缺陷图案[d1]n×m300的每一列中的缺陷数目的乘积来确定统计严重性(ss)514。在一些实施例中,存储胞元阵列的存储胞元阵列604中具有最高数目的ss514的列被确定为接收最初存储在存储胞元阵列604中具有最低数目的ss514的列上的权重及输入数据。

方法700继续进行操作710,在操作710中,根据一些实施例将权重图案[w]n×m118作为输入622加载到神经网络宏650中。在一些实施例中,权重图案[w]n×m118是通过使用软件的训练过程来确定,而不考虑存储胞元阵列604及在相应的制作过程中引起的存储胞元阵列604的潜在缺陷。在一些实施例中,权重图案[w]n×m118作为输入622而通过位于神经网络宏650之外的选择器614被加载到神经网络宏650中。

方法700继续进行操作712,在操作712中,根据一些实施例对权重图案[w]n×m118进行重新排列,以通过交换i/o来确定重新排列的权重图案[w]’n×m。在一些实施例中,重新排列的权重图案[w]’n×m是根据在操作708中确定的交换决策来确定。举例来说,输入处的权重图案[w]n×m118的和存储胞元阵列604中的在对应的权重图案[w]n×m118中具有最高数目的缺陷及最高数目的1的列对应的列202-a与输入处的权重图案[w]n×m118的和存储胞元阵列604的在对应的权重图案[w]n×m118中具有最低数目的缺陷及最低数目的1的列对应的列202-b进行切换,其中a及b是正整数且二者均小于m。在一些实施例中,这种重新排列过程可在以下的图7b中进行阐述。

图7b示出根据本公开一些实施例的方法730的流程图,方法730用于通过选择器614中的状态机来对i/o进行交换。方法730从操作732开始,在操作732中,根据一些实施例在选择器614的输入i/o处提供数据。在一些实施例中,在选择器614的输入i/o处提供对应的权重图案[w]n×m118。在一些实施例中,选择器614位于神经网络宏650的内部。在一些实施例中,可根据用户的需要来选择及实施选择器614。在一些实施例中,数据可为以下中的一者:权重图案[w]n×m118及数据输入[a],所述数据将在以下进行进一步详细论述。

方法730继续进行操作734,在操作734中,根据一些实施例存储至少两个交换i/o中的数据。在一些实施例中,交换i/o是与权重图案[w]n×m118中的两个列(例如,列202-a及202-b)对应的输入i/o。在一些实施例中,将列202-a及202-b中的数据存储在两个相应的临时参数中。

方法730继续进行操作736,在操作736中,根据一些实施例制备两个掩码阵列并确定输出i/o。在一些实施例中,所述两个掩码阵列(包括“或_掩码(or_mask)”及“与_掩码(and_mask)”)由选择器614基于输入622处的交换i/o的数据内容(例如权重图案[w]n×m118的列202-a与列202-b)来产生。在一些实施例中,选择器614的输出i/o通过以下操作来确定:

输出i/o=输入i/o|or_掩码&and_掩码,其中“|”是逐位or运算符且“&”是逐位and运算符。

方法730继续进行操作738,在操作738中,根据一些实施例确定输出i/o上的数据。在一些实施例中,根据权重图案[w]n×m及所述两个掩码阵列来确定经重新排列的权重图案[w]’n×m。举例来说,将存储在第一临时参数中的列202-a中的数据加载到与列202-b对应的输出i/o且将存储在第二临时参数中的列202-b中的数据加载到与列202-a对应的输出i/o中。

在一些实施例中,方法730继续进行根据一些实施例的操作734。

图7c示出根据本公开一些实施例的表740,表740具有图7b中所呈现的交换过程中的示例性数据。在所示出的实施例中,输入i/o包括8个位(01011010),且根据图7a中阐述的过程确定第三位与第五位将进行交换。在一些实施例中,第三i/o包括保存在第一临时参数(例如,temp1)上的数据011,且第五i/o包括存储在第二临时参数(即temp2)上的数据101。在一些实施例中,第一掩码(即,或掩码)包括8个位且第三位是1,而第一掩码的所有其他位是0;第二掩码(即,与掩码)也包括8个位且第五位是0,而第二掩码的所有其他位是1。在操作之后,输出i/o包括8个位,即01110010。此外,输出i/o中的第三i/o输出数据101且输出i/o中的第五i/o输出数据011。

方法700继续进行操作714,在操作714中,根据一些实施例将经重新排列的权重图案[w]’n×m加载到存储胞元阵列604。在一些实施例中,通过将“0”或“1”存储在存储胞元阵列604的对应的存储胞元中来写入经重新排列的权重图案[w]’n×m。在一些实施例中,存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列接收最初存储在存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列中的权重。相似地,存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列接收最初存储在存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列中的权重。所有其他列均接收其对应的权重而无需进行进一步修改。

方法700继续进行操作716,在操作716中,根据一些实施例将输入层112的神经元106上的值加载到神经网络宏650。在一些实施例中,输入层112的神经元106上的值是输入数据[a]m×1。在一些实施例中,输入数据[a]m×1可自前一过程的输出加载。

方法700继续进行操作712,在操作712中,根据一些实施例将输入数据[a]m×1进行重新排列以确定经重新排列的输入数据[a]’m×1。在一些实施例中,经重新排列的输入数据[a]’m×1是根据在操作708中确定的交换决策来确定。在一些实施例中,在加载到存储胞元阵列604之前,经重新排列的输入数据[a]’m×1从列转置到行的输入数据([a]’1×m)。在一些实施例中,根据以上图7b中所论述的方法730获得经重新排列的输入数据[a]’m×1。

方法700继续进行操作714,在操作714中,根据一些实施例将经重新排列及转置的输入数据[a]’1×m加载到存储胞元阵列604中。

方法700继续进行操作718,在操作718中,根据一些实施例确定映射输出数据[b]’n×m。在一些实施例中,映射输出数据[b]’n×m是根据预先确定的算法来确定。在一些实施例中,经重新排列的输入数据[a]’1×m及经重新排列的权重图案[w]’n×m通过位内乘法在对应的存储胞元中进行处理。

方法700继续进行操作720,在操作720中,根据一些实施例确定输出数据[b]n×m。在一些实施例中,输出数据[b]n×m是根据交换决策而通过映射输出数据[b]’n×m的反向排列来确定。继续参照图7b中所论述的实例,接着将存储胞元阵列的列202-a上的输出数据在对应的列202-b的输出i/o上输出。相似地,接着将存储胞元阵列的列202-b上的输出数据在对应的列202-b的输出i/o上输出。在一些实施例中,交换决策由选择器616从控制器620接收。在一些实施例中,操作720由选择器616在输出处实行。

图8示出根据本公开一些实施例的系统800的方块图,系统800用于确定网络100的隐藏层114上的神经元108上的值。应注意,系统800仅为实例,而并非旨在对本公开进行限制。因此,应理解,可提供位于系统800中或耦合到系统800的附加的功能块,且一些其他功能块在本文中可仅进行简要阐述。

在图8所示出的实施例中,系统800包括神经网络宏650,其中神经网络宏650包括存储器宏602。在一些实施例中,存储器宏602包括存储胞元阵列604,存储胞元阵列604包括多个存储胞元。在一些实施例中,所述多个存储胞元以列-行的配置方式排列,其中每一列具有位线(bl)及反位线(blb),每一行具有字线(wl)。更具体来说,每一列的bl及blb分别耦合到设置在此列中的多个存储胞元,且此列中的每一存储胞元排列在不同的行上且耦合到相应的(不同的)wl。也就是说,存储胞元阵列604的每一存储胞元耦合到存储胞元阵列604的列的bl、存储胞元阵列604的列的blb及存储胞元阵列604的行的wl。在一些实施例中,bl与blb在垂直方向上平行地排列,且wl在水平方向上平行地排列(即与bl及blb垂直)。在一些实施例中,存储胞元阵列604中的每一行存储胞元的wl连接在一起。

在一些实施例中,存储胞元阵列604的存储胞元中的每一者包括至少一个晶体管。在一些其他实施例中,存储胞元阵列604的所述多个存储胞元中的每一者可包括以下中的一者:忆阻器、电阻式随机存取存储器(reram、rram)、相变随机存取存储器(pcram、pcm)、磁阻随机存取存储器(mram)、导电桥随机存取存储器(cbram)、浮动栅极闪存(flash)及静态随机存取存储器(sram)。

在一些实施例中,存储器宏602还包括写入驱动器(wd)606、多路复用器(mux)608、读出放大器(sa)610及控制电路612。在一些实施例中,wd606被配置成提供对存储胞元阵列604进行编程所需的必要电压和/或电流。在一些实施例中,mux608被配置成选择将输入信号转发到输出的路径。在一些实施例中,sa610被配置成将在读取操作期间产生的电压或电流与预先定义的阈值进行比较。

在一些实施例中,控制电路612是代表性器件且可包括处理器、存储器、输入/输出接口、通信接口及系统总线。处理器可包括能够操作以对存储器宏602的控制电路612的操作及性能进行控制的任何处理电路系统。在各个方面中,处理器可被实施成通用处理器、芯片多处理器(cmp)、专用处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、输入/输出(i/o)处理器、媒体存取控制(mac)处理器、无线电基带处理器、协同处理器、微处理器(例如复杂指令集计算机(cisc)微处理器、精简指令集计算(risc)微处理器和/或超长指令字(vliw)微处理器)或其他处理器件。处理器也可由控制器、微控制器、应用专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)等来实施。

在各个方面中,处理器可被布置成运行操作系统(os)及各种应用。os的实例包括例如一般以苹果os、微软视窗os、安卓os及任何其他专有或开源os的商标名命名的操作系统。

在一些实施例中,提供至少一种上面包含计算机可执行指令的非暂时性计算机可读存储媒体,其中计算机可执行指令在由至少一个处理器执行时使所述至少一个处理器实行本文中所述的方法的实施例。这种计算机可读存储媒体可包含在存储器中。

在一些实施例中,存储器可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器可包括至少一个非易失性存储单元。非易失性存储单元能够存储一个或多个软件程序。仅举几个例子来说,软件程序可包含例如应用、用户数据、器件数据和/或配置数据或其组合。软件程序可包含可由存储器宏602的控制电路612的各个组件执行的指令。

举例来说,存储器可包括只读存储器(rom)、随机存取存储器(ram)、动态随机存取存储器(dram)、双倍数据速率动态随机存取存储器(ddr-dram)、同步动态随机存取存储器(sdram)、静态随机存取存储器(sram)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存(例如,nor闪存或者nand闪存)、内容可寻址存储器(cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、盘存储器(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器可包含文件形式的指令集,以用于执行本文中所述的产生一个或多个时序库的方法。指令集可以机器可读指令的任何可接受形式(包括源代码或各种适当的编程语言)存储。可用于存储指令集的编程语言的一些实例包括但不限于java、c、c++、c#、python、objective-c、visualbasic或net编程。在一些实施例中,包括编译器或解释器,以将指令集转换成供处理器执行的机器可执行代码。

在一些实施例中,i/o接口可包括任何合适的机构或组件,以至少使用户能够将输入(即测试/请求和/或测试/正常模式等)提供到存储器宏602的控制电路612且使存储器宏602的控制电路612能够将输出控制提供到存储器宏602的其他组件(例如,存储胞元阵列604、wd606、mux608及sa610)。

在一些实施例中,神经网络宏650还包括2个选择器614/616。在一些实施例中,选择器614被配置成根据图5a及图5b中所论述的交换决策来交换输入,以形成存储胞元阵列604的映射输入,且选择器616被配置成根据图5a及图5b中所论述的交换决策来交换存储胞元阵列604的输出。

在一些实施例中,神经网络宏650还包括存储器618。在一些实施例中,存储器可包括能够存储数据的任何机器可读或计算机可读媒体(包括易失性/非易失性存储器及可移动/不可移动存储器二者)。存储器可包括至少一个非易失性存储单元。举例来说,存储器可包括只读存储器(rom)、随机存取存储器(ram)、动态随机存取存储器(dram)、双倍数据速率动态随机存取存储器(ddr-dram)、同步动态随机存取存储器(sdram)、静态随机存取存储器(sram)、可编程只读存储器(prom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存(例如,nor闪存或者nand闪存)、内容可寻址存储器(cam)、聚合物存储器(例如,铁电聚合物存储器)、相变存储器(例如,双向存储器)、铁电存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、盘存储器(例如,软盘、硬盘驱动器、光盘、磁盘)或卡(例如,磁卡、光卡)或适合存储信息的任何其他类型的媒体。

在一个实施例中,存储器618包含图3a到图3b中所论述的呈文件形式或机器可读指令的任何可接受形式的缺陷图案[d1]n×m。在一些实施例中,存储器618包括存储胞元阵列604中的对应的有缺陷存储胞元的地址。在一些实施例中,预先存储在存储器618中的缺陷图案是通过在制造过程期间对存储胞元阵列604进行测量来确定。

在一些实施例中,神经网络宏650还包括控制器620。在一些实施例中,控制器620被配置成从存储器618接收缺陷图案且接收权重图案灵敏度(wps)624。在一些实施例中,控制器620还被配置成基于缺陷图案300及wps624来确定交换决策,以指示选择器614/616实行i/o交换。

在一些实施例中,神经网络宏650还包括缓冲器802及处理器804。在一些实施例中,缓冲器802存储由处理器804用来确定wps624的多个权重。在一些实施例中,处理器804由en信号806使能,以根据存储在缓冲器802中的所述多个权重来确定wps624。在一些实施例中,系统接口650的外部还包括以下中的至少一者:处理单元、感测单元及功率调节单元,所有这些均未示出。

图9示出根据本公开一些实施例的方法900的流程图,方法900对网络100的隐藏层114上的神经元108中的每一者上的值实行计算。在一些实施例中,方法900的操作由图1到图4、图5、图7b及图8中所示的相应的组件来实行。为便于论述,将结合图1到图4、图5、图7b及图8来阐述方法900的以下实施例。所示出的方法900的实施例仅是对网络100的隐藏层114上的神经元108中的每一者上的值实行计算的实例。因此,应理解,在保持处于本公开范围内的同时,可对各种操作中的任何操作进行省略、重新排序和/或添加。还应注意,网络100可包括多个隐藏层且所述多个隐藏层中的每一者可包括不同数目的神经元,被确定将进行交换的i/o可多于2个,且可使用不同的算法来确定神经元中的每一者上的值,所有这些均处于本申请的范围内。

方法900从操作902开始,在操作902中,根据一些实施例将存储胞元阵列604的缺陷图案[d1]n×m300加载到神经网络宏650的存储器618中。在一些实施例中,缺陷图案[d1]n×m300包含存储胞元阵列604中的有缺陷存储胞元的地址。在一些实施例中,可将缺陷图案指示符(dpi)306加载到控制器620中。在一些实施例中,dpi306包括1个行及m个列,其中m=log2m,m是对应的缺陷图案[d1]n×m300中的列的数目。在一些实施例中,当缺陷图案[d]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306被确定为列302-j的地址。在一些其他实施例中,对于包括n个行及m个列的对应的缺陷图案[d1]n×m300,dpi306还可包括n个行及1个列。在一些实施例中,当缺陷图案[d1]n×m300的列302-j中的有缺陷存储胞元的数目等于或大于预先定义的阈值时,dpi306中的dj的值被确定为“0”;且当缺陷图案[d1]n×m300的列302-j中的有缺陷存储胞元的数目小于预先定义的阈值时,dpi306中的对应的dj被确定为“1”。在一些实施例中,缺陷图案[d1]n×m300或dpi306可存储在存储器618中。

在一些实施例中,可通过测量存储胞元阵列604来确定缺陷图案[d1]n×m300。在一些实施例中,操作902还包括将预先配置的逻辑状态(例如,“1”)写入到存储胞元阵列604中的多个存储胞元中的每一者并对所存储逻辑状态进行测量。当存储胞元中的所存储逻辑状态与预先配置的逻辑状态一致(例如,两者均为“1”)时,存储胞元是稳定的且无缺陷。当存储胞元中的所存储逻辑状态不同于预先配置的逻辑状态(例如,所存储逻辑状态为“0”)时,存储胞元被确定为有缺陷且存储胞元是存储胞元阵列604中的缺陷。在一些实施例中,操作902可由神经网络系统实行或在制作过程期间由存储器制造商实行。

方法900继续进行操作904,在操作904中,根据一些实施例将权重图案[w]n×m118作为输入622加载到神经网络宏650中。在一些实施例中,权重图案[w]n×m118是通过使用软件的训练过程来确定,而不考虑存储胞元阵列604及在相应的制作过程中引入的存储胞元阵列604的潜在缺陷。在一些实施例中,权重图案[w]n×m118作为输入622被加载到神经网络宏650中,到达神经网络宏650的缓冲器802。

方法900继续进行操作906,在操作906中,根据一些实施例确定权重图案灵敏度(wps)206。在一些实施例中,wps206由神经网络宏650的处理器804根据存储在缓冲器802中的权重图案[w]n×m118的权重来确定。在所示出的实施例中,wps206包括1个行及m个列。在一些实施例中,可根据列202中的“0”的数目或“1”的数目来确定对应的权重图案[w]n×m118的wps206。举例来说,当列202-j中的“1”的数目等于或大于预先定义的阈值时,wps206中的sj被确定为1,其中j≤n且j是正整数。相似地,当列202-j中的“1”的数目小于预先定义的阈值时,wps206中的sj被确定为“0”。在一些实施例中,对于对应的权重图案118[w]n×m,存在一个wps206。在一些实施例中,wps206可根据不同的阈值而有所不同,阈值可由用户预先定义或指定。

在一些实施例中,通过将权重图案的列中的正权重的数目与多级阈值进行比较来确定wps206中的值。举例来说,当权重图案的列中的正权重的数目等于或大于0且小于5时,此列的wps值为0;当权重图案的列中的正权重的数目等于或大于5且小于10时,此列的wps值为1;当权重图案的列中的正权重的数目等于或大于10且小于15时,此列的wps值为2;且当权重图案的列中的正权重的数目等于或大于15且小于列的大小(例如,图2中的n)时,此列的wps值为3。

方法900继续进行操作908,在操作908中,根据一些实施例由控制器620对wps206与对应的权重图案[w]n×m118的缺陷图案[d1]n×m300进行比较。在一些其他实施例中,由控制器620对wps206与dpi306进行比较。在一些其他实施例中,确定wps206与缺陷图案[d1]n×m300的每一列中的缺陷的数目的乘积。在一些实施例中,控制器620从处理器804接收wps624且从存储器618接收缺陷图案300,以确定交换决策。

方法900继续进行操作910,在操作910中,根据一些实施例由控制器620确定交换决策。在一些实施例中,存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列被确定为接收最初存储在存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列上的权重及输入数据。在一些其他实施例中,根据wps206与缺陷图案[d1]n×m300的每一列中的缺陷数目的乘积来确定统计严重性(ss)514。在一些实施例中,存储胞元阵列的存储胞元阵列604中具有最高数目的ss514的列被确定为接收最初存储在存储胞元阵列604中具有最低数目的ss514的列上的权重及输入数据。

方法900继续进行操作912,在操作912中,根据一些实施例将权重图案[w]n×m118加载到选择器614。在一些实施例中,权重图案[w]n×m118从缓冲器802加载到选择器614。

方法900继续进行操作914,在操作914中,根据一些实施例对权重图案[w]n×m118进行重新排列以确定映射权重图案[w]’n×m。在一些实施例中,映射权重图案[w]’n×m是根据在操作910中确定的交换决策来确定。举例来说,输入处的权重图案[w]n×m118的和存储胞元阵列604中的在对应的权重图案[w]n×m118中具有最高数目的缺陷及最高数目的1的列对应的列202-a与输入处的权重图案[w]n×m118的和存储胞元阵列604的在对应的权重图案[w]n×m118中具有最低数目的缺陷及最低数目的1的列对应的列202-b进行切换,其中a及b是正整数且二者均小于m。

方法900继续进行操作916,在操作916中,根据一些实施例将映射权重图案[w]’n×m加载到存储胞元阵列604。在一些实施例中,通过将“0”或“1”存储在存储胞元阵列604的对应的存储胞元中来写入映射权重图案[w]’n×m。在一些实施例中,存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列接收最初存储在存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列中的权重。相似地,存储胞元阵列604中在对应的权重图案中具有最低数目的缺陷及最低数目的1的列接收最初存储在存储胞元阵列604中在对应的权重图案中具有最高数目的缺陷及最高数目的1的列中的权重。所有其他列均接收它们对应的权重而无需进行进一步修改。

方法900继续进行操作912,在操作912中,根据一些实施例将输入层112的神经元106上的值加载到神经网络宏650。在一些实施例中,输入层112的神经元106上的值是输入数据[a]m×1。在一些实施例中,可自前一网络的输出加载输入数据[a]m×1。

方法900继续进行操作914,在操作914中,根据一些实施例对输入数据[a]m×1进行重新排列以确定映射输入数据[a]’m×1。在一些实施例中,映射输入数据[a]’m×1是根据在操作910中确定的交换决策来确定。在一些实施例中,映射输入数据[a]’m×1接着在加载到存储胞元阵列604之前从列转置到行([a]’1×m)。在一些实施例中,根据图7b中所示的方法730获得映射输入数据[a]’m×1。

方法900继续进行操作916,在操作916中,根据一些实施例将经映射及转置的输入数据[a]’1×m加载到存储胞元阵列604中。

方法900继续进行操作918,在操作918中,根据一些实施例确定映射输出数据[b]’n×m。在一些实施例中,映射输出数据[b]’n×m是根据预先确定的算法来确定。在一些实施例中,经映射及转置的输入数据[a]’1×m及映射权重图案[w]’n×m通过位内乘法(in-bitmultiplication)在对应的存储胞元中进行处理。

方法900继续进行操作920,在操作920中,根据一些实施例确定输出数据[b]n×m。在一些实施例中,输出数据[b]n×m是根据交换决策而通过映射输出数据[b]’n×m的反向排列来确定。继续参照图7b中所论述的实例,接着在对应的列202-b的输出i/o上输出存储胞元阵列的列202-a上的输出数据,且接着在对应的列202-b的输出i/o上输出存储胞元阵列的列202-b上的输出数据。在一些实施例中,交换决策由选择器616从控制器620接收。在一些实施例中,操作920由选择器616在图8所示神经网络宏650的输出处实行。

在一个实施例中,一种对神经网络中第一层的第一神经元上的值实行计算的方法包括:接收存储胞元阵列的第一图案,其中所述存储胞元阵列包括多个存储胞元,所述多个存储胞元被配置成多个列及多个行;使用第三图案确定所述存储胞元阵列的第二图案;根据所述第一图案及所述第二图案确定所述存储胞元阵列的至少一对列;对所述存储胞元阵列的所述至少一对列中的每一对中的两个列的输入数据进行切换;使用存储在所述多个存储胞元中的所述输入数据实行逐位计算;以及对所述存储胞元阵列的所述至少一对列中的每一对中的所述两个列的输出数据进行切换,以确定所述第一层的所述第一神经元上的所述值。在一个实施例中,所述第一图案是缺陷图案,其中所述缺陷图案映射所述存储胞元阵列中的至少一个有缺陷存储胞元。在一个实施例中,方法还包括在接收所述第一图案之前,将预先配置的逻辑状态写入到所述多个存储胞元中的每一者;测量所述多个存储胞元中的每一者中的所存储逻辑状态;以及将所述预先配置的逻辑状态与所述多个存储胞元中的每一者中的所述所存储逻辑状态进行比较,以确定至少一个有缺陷存储胞元。在一个实施例中,所述第二图案包括多个权重图案灵敏度值,其中所述多个权重图案灵敏度值中的每一者是通过将至少一个预先确定的阈值与所述第三图案中的对应的列中的以下数目中的一者进行比较来确定:逻辑“1”值的第一数目、及逻辑“0”值的第二数目。在一个实施例中,所述第三图案是包括多个权重的权重图案,其中所述多个权重中的每一者具有值“0”或值“1”。在一个实施例中,所述第三图案是通过芯片外训练过程来确定。在一个实施例中,所述确定至少一对列还包括根据所述第一图案确定所述存储胞元阵列的所述多个列中的每一列中的有缺陷存储胞元的数目;确定所述多个列中的每一者的统计严重性值,其中对应的列的所述统计严重性值被确定为有缺陷存储胞元的所述数目与所述第二图案中所述对应的列的值的乘积;以及根据所述统计严重性值确定所述至少一对列。在一个实施例中,所述输入数据包括以下中的一者:所述第三图案、及第二层的第二神经元的输出数据,其中所述第二层的所述第二神经元耦合到所述第一层的所述第一神经元。

在另一实施例中,一种对神经网络中第一层的第一神经元上的值实行计算的系统包括:存储胞元阵列,包括多个存储胞元,所述多个存储胞元被配置成多个列及多个行;存储单元,被配置成存储第一图案;处理器单元,被配置成使用第三图案确定第二图案;控制器单元,被配置成根据从所述存储单元接收的所述第一图案及从所述处理器单元接收的所述第二图案来确定所述存储胞元阵列的至少一对列;第一选择器,被配置成对所述存储胞元阵列的所述至少一对列中的每一对中的两个列的输入数据进行切换;以及第二选择器,被配置成对所述存储胞元阵列的所述至少一对列中的每一对中的所述两个列的输出数据进行切换,以确定各别的所述神经元上的所述值。在一个实施例中,所述第一图案是缺陷图案,其中所述缺陷图案映射所述存储胞元阵列中的至少一个有缺陷存储胞元。在一个实施例中,所述第一图案是通过以下方式来确定:将预先配置的逻辑状态写入到所述多个存储胞元中的每一者;测量所述多个存储胞元中的每一者中的所存储逻辑状态;以及将所述预先配置的逻辑状态与所述多个存储胞元中的每一者中的所述所存储逻辑状态进行比较。在一个实施例中,所述第二图案包括多个权重图案灵敏度值,其中所述多个权重图案灵敏度值中的每一者是通过将至少一个预先确定的阈值与所述第三图案中的对应的列中的以下数目中的一者进行比较来确定:逻辑“1”值的第一数目、及逻辑“0”值的第二数目。在一个实施例中,所述第三图案是包括多个权重的权重图案,其中所述多个权重中的每一者具有值“0”或值“1”。在一个实施例中,所述输入数据包括以下中的一者:所述第三图案、及第二层的第二神经元的输出数据,其中所述第二层的所述第二神经元耦合到所述第一层的所述第一神经元。在一个实施例中,所述第一选择器及所述第二选择器是由所述控制器控制。在一个实施例中,所述第三图案是通过芯片外训练过程来确定。在一个实施例中,所述至少一对列是根据所述多个列的统计严重性值来确定,其中对应的列的所述统计严重性值中的每一者被确定为所述对应的列的有缺陷存储胞元的数目与所述第二图案中的所述对应的列的值的乘积。

在又一实施例中,一种对神经网络中第一层的第一神经元上的值实行计算的系统包括:存储胞元阵列,包括多个存储胞元,所述多个存储胞元被配置成多个列及多个行;存储单元,被配置成存储第一图案;处理器单元,被配置成使用第三图案确定第二图案;控制器单元,被配置成根据从所述存储单元接收的所述第一图案及从所述处理器单元接收的所述第二图案来确定所述存储胞元阵列的至少一对列;第一选择器,被配置成对所述存储胞元阵列的所述至少一对列中的每一对中的两个列的输入数据进行切换;以及第二选择器,被配置成对所述存储胞元阵列的所述至少一对列中的每一对中的所述两个列的输出数据进行切换,以确定各别的所述神经元上的所述值,其中所述第一图案是缺陷图案,其中所述缺陷图案映射所述存储胞元阵列中的至少一个有缺陷存储胞元,其中所述第二图案包括多个权重图案灵敏度值,其中所述多个权重图案灵敏度值中的每一者是通过将至少一个预先确定的阈值与所述第三图案中的对应的列中的以下数目中的一者进行比较来确定:逻辑“1”值的[第一]数目、及逻辑“0”值的第二数目,且其中所述第三图案是包括多个权重的权重图案,其中所述多个权重中的每一者具有值“0”或值“1”。在一个实施例中,所述输入数据包括以下中的一者:所述第三图案、及第二层的第二神经元的输出数据,其中所述第二层的所述第二神经元耦合到所述第一层的所述第一神经元。在一个实施例中,所述第三图案是通过芯片外训练过程来确定。

以上概述了若干实施例的特征,以使所属领域中的技术人员可更好地理解本公开的各个方面。所属领域中的技术人员应理解,他们可容易地使用本公开作为设计或修改其他工艺及结构的基础来施行与本文中所介绍的实施例相同的目的和/或实现与本文中所介绍的实施例相同的优点。所属领域中的技术人员还应认识到,这些等效构造并不背离本公开的精神及范围,而且他们可在不背离本公开的精神及范围的条件下对其作出各种改变、代替及变更。

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