掌桥专利:专业的专利平台
掌桥专利
首页

用于对编码数据进行解码的神经网络和系统

文献发布时间:2023-06-19 11:55:48


用于对编码数据进行解码的神经网络和系统

本申请要求于2018年12月27日提交的美国申请号16/233,576的优先权,该美国申请出于任何目的通过引用全部结合于此。

技术领域

本文描述的实例涉及用于对编码数据进行解码的神经网络。描述了可以与纠错译码(ECC)存储器一起使用的神经网络的实例,其中神经网络可以用于对编码数据进行解码。

背景技术

纠错译码(ECC)可以用于多种应用,诸如存储器装置或无线基带电路。通常,纠错译码技术可以对具有附加位的原始数据进行编码,以描述意图要存储、检索和/或传输的原始位。附加位可以与原始位一起存储。因此,可以存储和/或传输L位原始数据。编码器可以提供N-L个附加位,使得编码数据可以是N位的数据。原始位可以被存储作为原始位,或者可以由编码器改变以形成所存储数据的编码N位。解码器可以对N个位进行解码以检索和/或估计原始L个位,其在一些实例中可以根据ECC技术来校正。

发明内容

本文描述了解码器的实例。实例性解码器可以包含第一组合器级。该第一组合器级可以接收编码数据并使用该编码数据的组合来评估至少一个非线性函数以提供中间数据。该实例性解码器可以包含至少第二组合器级。该第二组合器级可以接收该中间数据并使用预定权重集合的集合来组合该中间数据,以至少部分地基于与该编码数据相关联的编码技术来为该预定权重集合提供解码数据。

在一些实例中,该预定权重集合是基于神经网络对已知的编码数据的训练。

在此类实例中,该编码技术包括里德-索罗门(Reed-Solomon)译码、博斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,BCH)译码、低密度奇偶校验(LDPC)译码、极化译码或其组合。

在一些实例中,该第一组合器级和该第二组合器级包含第一多个乘法/累加单元,该第一多个乘法/累加单元各自被配置为将该编码数据的至少一个位与该预定权重中集合的至少一个相乘并对该编码数据多个加权位进行求和。

在一些实例中,该第一组合器级可以包含第一多个查找表,该第一多个查找表各自被配置为基于该至少一个非线性函数来查找与该第一多个乘法/累加单元中的相应一个的输出相对应的至少一个中间数据值。

在一些实例中,该至少一个非线性函数包括高斯函数。

在一些实例中,实例性解码器可以包含与该第一组合器级和该第二组合器级进行通信的存储器,该存储器被配置为存储多个预定权重集合,该多个预定权重集合包含该预定权重集合。

本文描述了方法的实例。实例性方法可以包含在包括神经网络的计算装置处接收指示数据对集合的信令,每个数据对包括已知的编码数据和解码数据,其中该已知的编码数据用特定编码技术进行编码。该实例性方法可以进一步包含为该神经网络确定用于以该特定编码技术对数据进行解码的权重集合。该实例性方法可以进一步包含从该计算装置的存储器接收指示用该特定编码技术编码的数据的信令。该实例性方法可以进一步包含使用该神经网络利用该权重对该数据进行解码。该实例性方法可以进一步包含将该解码数据写入该计算装置的存储器或存储介质或从该存储器或存储介质读取该解码数据。

在一些实例中,所述方法可以进一步包含:使用以其它编码技术编码的附加编码数据和解码数据对为该神经网络确定多个权重集合,其中该多个权重集合各自对应于不同的编码技术;选择与该特定编码技术相关联的该权重集合;以及向该神经网络或另一种神经网络提供该权重集合以用于对该另外的编码数据进行解码。

在一些实例中,该方法可以进一步包含:接收以另一种编码技术编码的另外的输入数据;选择与该另一种编码技术相关联的该多个权重集合中的选定权重集合;向该神经网络提供该选定的权重集合;以及使用该选定的权重集合对该另外的输入数据进行解码。

在一些实例中,该特定的编码技术可以包含里德-索罗门译码、博斯-乔赫里-霍克文黑姆(BCH)译码、低密度奇偶校验(LDPC)译码、极化译码或其组合。

在一些实例中,使用该神经网络对该另外的编码数据进行解码可以包含使用该权重集合中的至少一些对该另外的编码数据的位进行加权,并且对该另外的编码数据的选定的加权位进行求和以提供中间数据,然后使用该权重中的至少一些对该中间数据的位进行加权并对该中间数据的选定加权位进行求和以提供解码数据。

在一些实例中,确定初始权重集合可以包含选择导致该神经网络的输出与已知的解码数据之间的误差函数的值最小的权重。

在一些实例中,确定该初始权重集合可以包含使用k均值聚类技术来确定该神经网络的中心矢量。

本文描述存储器系统的实例。实例性存储器系统可以包含:存储器单元,该存储器单元被配置为存储使用编码技术编码的数据;输出缓冲器,该输出缓冲器被配置为从该存储器单元读取选定数据并提供对应的输出数据;以及被配置为利用基于该编码技术选择的初始权重的神经网络,该神经网络被配置为接收该输出数据并提供解码数据的估计值。

在一些实例中,该存储器系统可以包含纠错码块,该纠错码块被配置为接收该解码数据的该估计值并且进一步校正该解码数据的该估计值。

在一些实例中,该神经网络可以包含多个乘法/累加单元,该多个乘法/累加单元各自被配置为将该输出数据的至少一个位与第一预定权重集合中的至少一个相乘并将该输出数据的多个加权位进行求和。

在一些实例中,该神经网络可以包含多个查找表,该多个查找表各自被配置为根据该至少一个非线性函数来查找与该多个乘法/累加单元中的相应一个的输出相对应的至少一个中间数据值。

在一些实例中,该神经网络可以被配置为使用权重集合来提供该解码数据的该估计值。

在一些实例中,该存储器系统可以包含模式配置控制,该模式配置控制被配置为根据该编码技术为该神经网络选择该权重集合。

附图说明

图1是根据本文描述的实例布置的神经网络的示意图。

图2是根据本文描述的实例布置的神经网络的硬件实施方案的示意图。

图3是根据本文描述的实例布置的设备的示意图。

图4是根据本文描述的实例布置的方法的流程图。

具体实施方式

多层神经网络可以用于对编码数据(例如,使用一或多种编码技术编码的数据)进行解码。神经网络可以具有非线性映射和分布式处理能力,这在采用神经网络解码器的许多系统中是有利的。这样,本文描述的神经网络可以用于实施纠错码(ECC)解码器。

编码器可以具有L位的输入数据(a1,a2,…aL)。编码器可以根据编码技术对输入数据进行编码,以提供N位的编码数据(b1,b2,…bN)。编码数据可以被存储和/或传输,或者对编码数据采取某个其它动作,这可能将噪声引入到数据中。因此,解码器可以接收N位的编码数据的版本(x1,x2,…xN)。解码器可以将接收到的编码数据解码为L位原始数据(y1,y2,…yL)的估计值。

无线基带电路的实例可以利用纠错译码(诸如低密度奇偶校验译码,LDPC)。编码器可以将特别选择的N-L个位添加到L位的原始数据中,这可以允许解码器对数据进行解码,并且减少和/或最大程度地减少由数据存储和传输中的噪声、干扰和其它实际因素引入的误差。

存在多种特定的纠错译码技术,包含低密度奇偶校验译码(LDPC)、里德-索罗门译码、博斯-乔赫里-霍克文黑姆(BCH)和极化译码。然而,这些译码技术的使用可能以降低频率和/或通道和/或存储资源使用效率和增加处理复杂性为代价。例如,编码技术的使用可以增加可以被存储和/或传输的数据量。此外,可能需要处理资源来实施编码和解码。在一些实例中,解码器可以是消耗无线基带电路和/或存储器控制器中的大部分计算资源的处理块中的一个,这可以降低在诸如其中超低功耗和超低等待时间高度理想的物联网(IoT)和/或触觉互联网之类的许多新兴应用中的现有解码方案的理想性。

本文描述的实例利用多层神经网络来对编码数据(例如,使用一或多种编码技术编码的数据)进行解码。神经网络具有非线性映射和分布式处理能力,这在采用神经网络解码器的许多系统中是有利的。

图1是根据本文描述的实例布置的神经网络的示意图。神经网络100包含三个级(例如,层)。尽管在图1中示出了三个级,但是在其它实例中可以使用任何数量的级。神经网络100的第一级包含节点118、节点120、节点122和节点124。神经网络100的第二级包含组合器102、组合器104、组合器106和组合器108。神经网络100的第三级包含组合器110、组合器112、组合器114和组合器116。在其它实例中可以使用更多、更少和/或不同的部件。

通常,可以使用包含多级节点的神经网络。可以使用处理元件来实施节点,该处理元件可以对从前一级接收的输入执行一或多个函数并将函数的输出提供给神经网络的下一级。处理元件可以使用例如一或多个处理器、控制器和/或诸如专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)之类的定制电路来实施。处理元件可以被实施为组合器和/或加法器和/或用于执行被分配给处理元件的功能的任何其它结构。在一些实例中,本文描述的神经网络的某些处理元件执行加权和,例如,可以使用一或多个乘法/累加单元来实施,该乘法/累加单元可以使用处理器和/或其它电路来实施。

在图1的实例中,神经网络100可以具有输入层,该输入层可以是包含节点118、节点120、节点122和节点124的神经网络的第一级。节点118、节点120、节点122和节点124可以实施线性函数,该线性函数可以向神经网络的另一级(例如,‘隐藏级’或‘隐藏层’)提供输入信号(例如,x1(n),x2(n),...xN(n))。因此,在图1的实例中,可以在操作期间将N位输入数据提供到神经网络的输入级(例如,输入层)。在一些实例中,输入数据可以是根据编码技术(例如,低密度奇偶校验译码(LDPC),里德-索罗门译码、博斯-乔赫里-霍克文黑姆(BCH)和/或极化译码)编码的数据。N位输入数据可以由神经网络100的第一级输出到神经网络100的下一级。在一些实例中,神经网络100的第一级与第二级之间的连接可以不被加权,例如,在一些实例中,第二级中的处理元件可以接收未相对于第一级改变的位。输入数据位中的每一个可以被提供给下一级中的处理元件中的多个处理元件。尽管示出了输入层,但是在一些实例中,可以不存在输入层。

神经网络100可以具有下一层,该下一层在一些实例中可以被称为‘隐藏层’。尽管下一层可以包含组合器102、组合器104、组合器106和组合器108,但是可以使用任何数量的元件。尽管神经网络100的第二级中的处理元件被称为组合器,但是通常第二级中的处理元件可以使用在处理元件处接收的输入数据位来执行非线性激活函数。可以使用任意数量的非线性激活函数。可以使用的函数的实例包含高斯函数,诸如

‘隐藏层’中的每个元件均可以接收输入数据的选定位(例如,一些或全部)作为输入。例如,‘隐藏层’中的每个元件均可以从输入层中的多个选定元件(例如,一些或所有元件)接收输出作为输入。例如,组合器102可以接收节点118、节点120、节点122和节点124的输出作为输入。尽管在图1中以举例方式示出了单个‘隐藏层’,但是可以存在任意数量的‘隐藏层’并且可以将它们串联连接。尽管在‘隐藏层’中示出了四个元件,但是可以使用任意数量,并且它们在数量上可以与输入层中的节点数量和/或任何其它隐藏层中的节点数量相同或不同。隐藏层中的节点可以使用在隐藏层节点(例如,元件)处接收的数据的组合来评估至少一个非线性函数。这样,隐藏层可以在一或多个隐藏层的输出处提供中间数据。

神经网络100可以具有输出层。尽管图1的实例中的输出层可以包含组合器110、组合器112、组合器114和组合器116,但是可以使用任意数量的元件。尽管神经网络100的输出级中的处理元件被称为组合器,但是通常输出中的处理元件可以使用从神经网络中的最后‘隐藏层’接收的数据位来执行任何组合或其它操作。输出层中的每个元件可以接收由最后‘隐藏层’提供的数据的选定位(例如,一些或全部)作为输入。例如,组合器110可以从组合器102、组合器104、组合器106和组合器108接收输出作为输入。隐藏层与输出层之间的连接可以被加权。例如,可以指定权重集合W。在一些实例中,对于隐藏层节点与输出层节点之间的每个连接可以有一个权重。在一些实例中,可以针对每个隐藏层节点存在可以应用于由该节点提供到每个连接输出节点的数据的一个权重。也可以使用其它权重分布。在将输出提供给输出层之前,可以将权重与隐藏层的输出相乘。这样,输出层可以对加权输入执行求和。因此,神经网络100的输出(例如,输出层的输出)可以被称为加权和。输出层可以因此使用权重来组合从一或多个隐藏层接收的中间数据以提供输出数据。

在一些实例中,神经网络100可以用于提供表示与N个输入位相对应的解码数据的L个输出位。例如,在图1的实例中,示出了N个输入位(x

可以训练神经网络的实例。训练通常是指确定权重、函数和/或由神经网络用于创建输入数据到输出数据的期望变换的其它属性的过程。在一些实例中,可以训练本文描述的神经网络以将编码输入数据变换为解码数据(例如,解码数据的估计值)。在一些实例中,可以训练本文描述的神经网络以将有噪声的编码输入数据变换为解码数据(例如,解码数据的估计值)。这样,神经网络可以用于减少和/或改善可能由输入数据中存在的噪声引入的误差。在一些实例中,可以训练本文描述的神经网络以将有噪声的编码输入数据变换为降低了噪声的编码数据。然后,可以将降低了噪声的编码数据提供给任何解码器(例如,神经网络和/或其它解码器)以用于对编码数据进行解码。这样,神经网络可以用于减少和/或改善可能由噪声引入的误差。

在各种实例中,可以监督或不监督如本文描述的训练。在一些实例中,可以使用已知的预期输入和期望输出数据对来进行训练。例如,训练可以利用已知的编码数据和解码数据对来训练神经网络以将随后的编码数据解码为解码数据。在一些实例中,训练可以利用已知有噪声的编码数据和解码数据对来训练神经网络以将后续有噪声的噪声编码数据解码为解码数据。在一些实例中,训练可以利用已知有噪声的噪声编码数据和编码数据对来训练神经网络以提供与输入噪声编码数据相比降低了噪声的编码数据。训练的实例可以包含确定将由诸如图1的神经网络100之类的神经网络使用的权重。在一些实例中,在训练期间使用与将在操作期间使用的神经网络硬件相同的神经网络硬件。然而,在一些实例中,在训练期间可以使用不同的神经网络硬件,并且可以存储在训练期间确定的权重、函数或其它属性以供其它神经网络硬件在操作期间使用。

可以用数学方法描述训练的实例。例如,考虑在时刻(n)的输入数据,给定如下该输入数据:

X(n)=[x

神经网络的隐藏层(例如,图1的组合器102、组合器104、组合器106和组合器108)中的每个元件的中心矢量可以被表示为C

然后可以将隐藏层中的每个元件的输出给定为:

h

最后隐藏层与输出层之间的连接可以被加权。输出层中的每个元件均可以具有线性输入-输出关系,使得它可以执行求和(例如,加权求和)。因此,输出层中的第i个元件在时间n的输出可以被写为:

对于(i=1,2,…,L),并且其中L是输出层的输出的元件编号,而W

通常,神经网络架构(例如,图1的神经网络100)可以包含多个元件,并且可以具有被分布在输入域中的中心矢量,使得神经网络可以逼近非线性多维函数,并且因此可以逼近前向映射两个码字之间的逆映射(例如,从N位输入到L位输出)。通常,由隐藏层中的元件使用的传递函数的选择可以不影响神经网络的映射性能,并且因此,可以使用在一些实例中可以在硬件中方便地实施的函数。例如,薄板样条函数和/或高斯函数可以用在各种实例中,并且可以提供足够的逼近能力。也可以使用其它函数。

因此,可以通过属性(例如,参数)来指定神经网络的实例。在一些实例中,可以使用如下两个参数集合来指定神经网络:连接权重和中心矢量(例如,阈值)。可以通过求解优化函数从选定的输入数据(例如,编码的输入数据)确定参数。实例性优化函数可以被给定为:

其中M是训练的输入矢量(例如,训练的编码数据输入)的数量,而Y(n)是使用上面的方程式1和2从样本输入矢量计算的输出矢量,并且

Y(n)=[y

可以使用各种方法(例如,梯度下降程序)来求解优化函数。然而,在一些实例中,可以使用另一种方法来确定神经网络的参数,这通常可以包含两个步骤:(1)确定中心矢量C

在一些实例中,可以从可用样本矢量的子集选择中心矢量。在此类实例中,隐藏层中的元件的数量可以相对较大以覆盖整个输入域。因此,在一些实例中,可能期望应用k均值聚类算法。通常,k均值聚类算法根据吸引子的自然度量来分布中心矢量(例如,如果数据点的密度为高,则它是中心的密度)。k均值聚类算法可以找到群集中心集合并将训练样本分割为子集。每个群集中心可以与该网络中的H个隐藏层元件中的一个相关联。可以通过将训练点指派给具有最近中心的群集的方式来分割数据。群集中心对应于优化函数的最小值中的一个。与k均值聚类算法一起使用的实例性优化函数可以被给定为:

其中B

每个群集的中心可以被初始化为不同的随机选择的训练点。然后可以将每个训练实例指派给与其最近的元件。当已经指派了所有训练点时,可以找到每个群集的训练点的平均位置,并且将群集中心移动到该点。群集可以成为隐藏层元件的期望中心。

在一些实例中,对于一些传递函数(例如,高斯函数),可以确定缩放因子,并且可以在确定连接权重之前确定缩放因子。可以选择缩放因子来覆盖训练点以允许对期望的网络输出进行平滑拟合。通常,这是指处理元件中心的凸包内的任何点可以显著地激活一个以上的元件。为了实现该目的,每个隐藏层元件可以将至少一个其它隐藏层元件有效地激活至显著程度。用于确定缩放参数的适当方法可以基于P最近邻居启发法(P-nearestneighbor heuristic),其可以如下给定:

其中C

在训练期间可以另外或替代地确定连接权重。在具有加权连接的一个隐藏层作为求和单元的输出元件的神经网络(诸如图1的神经网络100)的实例中,一旦确定了中心矢量和缩放参数,方程式3的优化函数就可以变为线性最小二乘问题。线性最小二乘问题可以被写为

其中W={Wij}是连接权重的LxH矩阵,F是隐藏层处理元件的输出的HxM矩阵,并且使用以下项来计算其矩阵元素

F

并且

其中F

首先,可以将连接权重初始化为任何值(例如,可以使用随机值)。

可以使用方程式2来计算输出矢量Y(n)。输出层中的每个输出元件的误差项e

然后可以基于误差项例如如下所示调整连接权重:

W

(i=1,2,……,L;j=1,2,……,M)

其中γ是学习速率参数,它可以是固定的或时变的。

可以基于来自输出层的输出和期望的(已知的)数据来计算总误差:

可以通过再次计算新的输出矢量、误差项以及再次调整连接权重来对该过程进行迭代。该过程可以继续直到识别出将误差减小到等于或小于阈值误差的权重。

因此,可以训练图1的神经网络100以确定供神经网络100用来执行输入数据与输出数据之间的特定映射的参数(例如,权重)。例如,训练神经网络100可以提供一个参数集合以在对已经用特定编码技术(例如,低密度奇偶校验译码(LDPC)、里德-索罗门译码、博斯-乔赫里-霍克文黑姆(BCH)和/或极化译码)编码的编码数据进行解码时使用。例如,可以使用不同的已知输入/输出数据对多次训练神经网络100(和/或另一种神经网络)。多次训练可以产生多个连接权重集合。例如,可以针对多种编码技术中的每一种确定不同的权重集合,例如,可以确定一个权重集合以用于对LDPC编码数据进行解码,并且可以确定另一个权重集合以用于对BCH编码数据进行解码。

回顾图1的神经网络100的结构仅作为实例提供。在其它实例中可以使用其它多层神经网络结构。此外,本文描述的训练程序也作为实例提供。例如,可以使用其它训练技术(例如,学习算法)来解决局部最小值问题和/或消失梯度问题。每个解码器的确定的权重和/或矢量可以通过神经网络的离线学习模式获得,这可以有利地提供更多的资源和数据。

在监督学习的实例中,输入训练样本[x

图2是神经网络200的硬件实施方案的示意图。神经网络200的硬件实施方案可以用于例如实施一或多种神经网络,诸如图1的神经网络100。神经网络200的硬件实施方案包含具有两级的处理单元230-可以包含乘法/累加单元204、查找表216、乘法/累加单元206、查找表218、乘法/累加单元208和查找表220的第一级。处理单元230包含与第一级串行耦合的第二级,该第二级包含乘法/累加单元210、查找表222、乘法/累加单元212、查找表224、乘法/累加单元214和查找表226。神经网络200的硬件实施方案进一步包含模式可配置控制202和权重存储器228。

处理单元230可以从存储器装置、通信收发器和/或其它部件接收输入数据(例如,x

尽管在图2中示出了两级-包含N个乘法/累加单元和N个查找表的第一级,以及包含L个乘法/累加单元和L个查找表的第二级-但是可以使用任意数量的级以及每个级中的元件数量。在图2的实例中,一个乘法/累加单元后面紧跟一个查找表可以用于实施图1的处理元件。例如,与查找表216串联耦合的乘法/累加单元204可以用于实施图1的组合器102。

通常,图2的每个乘法/累加单元可以使用一或多个乘法器和一或多个加法器来实施。图2的乘法单元/累加单元中的每一个可以包含多个乘法器、多个累加单元或和/或多个加法器。可以使用算术逻辑单元(ALU)来实施图2的乘法单元/累加单元中的任一个。在一些实例中,乘法单元/累加单元中的任一个可以包含各自分别执行多次乘法和多次加法的一个乘法器和一个加法器。实例性乘法/累加单元的输入-输出关系可以被写为:

其中“I”是将由该单元执行的乘法的次数,W

图2所示的表查找通常可以执行从输入到输出的预定非线性映射。例如,表查找可以用于评估至少一个非线性函数。在一些实例中,所描绘的各种查找表的内容和大小可以是不同的并且可以是预定的。在一些实例中,图2所示的查找表中的一或多个可以由单个合并表查找代替。可以由查找表执行的非线性映射(例如,函数)的实例包含高斯函数、分段线性函数、S型函数、薄板样条函数、多二次函数、立方逼近和逆多二次函数。还参考图1描述了函数的实例。在一些实例中,选定的查找表可以被旁通和/或停用,这可以允许查找表及其相关联的乘法/累加单元被认为是单位增益元件。通常,可以使用一或多个查找表(例如,存储在一或多个存储器装置中)来实施表查找,该一或多个查找表可以将输入与利用该输入的非线性函数的输出相关联。

因此,神经网络200的硬件实施方案可以用于将输入码字(例如,x

模式配置控制202可以使用电路(例如,逻辑)、一或多个处理器、微控制器、控制器或其它元件来实施。模式配置控制器202可以从权重存储器228中选择某些权重和/或其它参数,并将这些权重和/或其它参数提供给图2的乘法/累加单元和/或查找表中的一或多个。在一些实例中,被存储在权重存储器228中的权重和/或其它参数可以与特定的编码技术相关联。在操作期间,模式配置控制202可以用于选择权重存储器228中与特定的编码技术(例如,里德-索罗门译码、BCH编码、LDPC编码和/或极化译码)相关联的权重和/或其它参数。然后,神经网络200的硬件实施方案可以利用选定的权重和/或其它参数来充当利用该编码技术编码的数据的解码器。模式配置控制器202可以选择被存储在权重存储器228中与不同的编码技术相关联的不同权重和/或其它参数,以改变神经网络200的硬件实施方案的操作,以用作不同的编码技术的解码器。这样,神经网络200的硬件实施方案可以灵活地充当用于多种编码技术的解码器。

图3是根据本公开的实施例的设备300(例如,集成电路、存储器装置、存储器系统、电子装置或系统、智能电话、平板计算机、计算机、服务器、电器、车辆等)的示意图。装置300通常可以包含主机302和存储器系统304。

主机302可以是主机系统,例如个人膝上型计算机、台式计算机、数码相机、移动电话或存储器卡读取器以及各种其它类型的主机。主机302可以包含多个存储器存取装置(例如,多个处理器)。主机302还可以是存储器控制器,诸如其中存储器系统304是存储器装置(例如,具有管芯上控制器的存储器装置)。

存储器系统304可以是固态驱动器(SSD)或其它类型的存储器,并且可以包含主机接口306、控制器308(例如,处理器和/或其它控制电路)和多个存储器装置310。存储器系统304、控制器308和/或存储器装置310也可以单独被视为“设备”。存储器装置310可以包含多个固态存储器装置,诸如NAND快闪装置,其可以提供存储器系统304的存储卷。也可以使用其它类型的存储器。

控制器308可以经由多个通道耦合到主机接口306和存储器装置310以在存储器系统304与主机302之间传递数据。接口306可以为标准化接口的形式。例如,当存储器系统304用于设备300中的数据存储时,接口306可以是串行高级技术附件(SATA)、高速外围部件互连(PCIe)或通用串行总线(USB)以及其它连接器和接口。通常,接口306提供用于在存储器系统304与具有用于接口306的兼容接收器的主机302之间传递控制、地址、数据和其它信号的接口。

控制器308可以与存储器装置314(其在一些实施例中可以包含单个管芯上的多个存储器阵列)进行通信以控制数据读取、写入和擦除操作以及其它操作。控制器308可以包含用于将控制器308耦合到存储器装置314的每个通道(图3中未示出)的离散存储器通道控制器。控制器308可以包含呈硬件和/或固件(例如,一或多个集成电路)和/或软件形式的多个部件,以用于控制对存储器装置314的存取和/或用于促进主机302与存储器装置314之间的数据传递。

控制器308可以包含ECC编码器310,该ECC编码器用于使用一或多种编码技术对写入存储器装置314的数据位进行编码。ECC编码器310可以包含单个奇偶校验(SPC)编码器,和/或代数纠错电路,诸如包含博斯-乔赫里-霍克文黑姆(BCH)ECC编码器和/或里德-索罗门ECC编码器的组中的一个,以及其它类型的纠错电路。控制器308可以进一步包含用于对编码数据进行解码的ECC解码器312,该解码可以包含标识错误单元、将错误单元转换为擦除和/或校正擦除。存储器装置314可以例如包含可以从存储器装置314的存储器单元中读取选定数据的一或多个输出缓冲器。输出缓冲器可以提供输出数据,该输出数据可以作为编码输入数据提供给ECC解码器312。例如,图1的神经网络100和/或图2的神经网络200的硬件实施方案可以用于实施图3的ECC解码器312。在各种实施例中,ECC解码器312能够对ECC编码器310中的每种类型的编码器的数据进行解码。例如,图2的权重存储器228可以存储与ECC编码器310可以使用的多种编码技术相关联的参数,使得神经网络200的硬件实施方案可以用作‘通用解码器’以使用ECC编码器可用的多种编码技术中的任一种来对由ECC编码器310编码的输入数据进行解码。

ECC编码器310和ECC解码器312可以各自使用离散部件(诸如专用集成电路(ASIC)或其它电路)来实施,或者该部件可以反映由控制器308内不必具有与控制器308的其它部分分离的离散物理形式的电路提供的功能性。尽管在图3中被示出为控制器308内的部件,但是ECC编码器310和ECC解码器312中的每一个可以在控制器308外部或者具有位于控制器308内的多个部件和位于控制器308外部的多个部件。

存储器装置314可以包含多个存储器单元阵列(例如,非易失性存储器单元)。该阵列可以是例如具有NAND架构的快闪阵列。然而,实施例不限于特定类型的存储器阵列或阵列架构。可以使用NAND架构中的浮动栅极型快闪存储器单元,但是实施例不限于此。该单元可以是多级单元(MLC),诸如每单元存储三个数据位的三级单元(TLC)。可以将存储器单元分组为例如包含多个物理页面的多个块。多个块可以被包含在存储器单元的平面中,并且一个阵列可以包含多个平面。作为一个实例,存储器装置可以被配置为每个页面存储8KB(千字节)用户数据,每个块存储128个页面的用户数据,每个平面2048个块以及每个装置16个平面。

根据多个实施例,控制器308可以根据ECC编码器310控制对多个所接收的数据位的编码,该ECC编码器允许稍后标识错误位并将那些错误位转换为擦除。控制器308还可以控制将编码数量的所接收的数据位编程到存储器装置314中的一组存储器单元。

图3所示的设备可以在采用处理器和存储器的多种产品中的任一种中实施,该多种产品包含例如相机、电话、无线装置、显示器、芯片组、机顶盒、游戏系统、车辆和电器。采用存储器系统的所得装置可以受益于本文描述的神经网络的实例以执行其最终用户功能。

从前述内容可以明白,尽管本文中出于说明目的已经描述了特定实施例,但是在不脱离所要求保护的技术范围的情况下可以进行各种修改。本文阐述某些细节以提供对所描述的技术实施例的理解。然而,可以在没有这些特定细节中的各种细节的情况下实践其它实例。在一些情况下,没有详细示出公知的电路、控制信号、定时协议、神经网络结构、算法和/或软件操作,以避免不必要地模糊所描述的实施例。在不脱离此处所呈现的主题的精神或范围的情况下,可以利用其他实施例并且可以进行其它改变。

图4是根据本文描述的实例布置的方法的流程图。实例性方法可以包含框402,然后可以是框404,然后可以是框406,然后可以是框408,然后可以是框410。在其它实例中可以使用附加的、更少的和/或不同的块,并且在其它实例中这些块的顺序可以不同。

框402叙述了“接收已知的编码和解码数据对,该编码数据以特定的编码技术进行编码”。已知的编码和解码数据对可以由包含神经网络(诸如图1的神经网络100和/或图2的神经网络200和/或图3的ECC解码器312)的计算装置接收。可以向计算装置提供指示数据对集合的信令。

框404可以在框402之后。框404叙述了“为神经网络确定用于对以特定的编码技术编码的数据进行解码的权重集合”。例如,可以使用在框402中接收的编码和解码数据对来训练神经网络(例如,本文描述的神经网络中的任一种)。权重可以是数值,当神经网络使用该数值时,允许神经网络输出与以特定的编码技术编码的编码输入数据相对应的解码数据。权重可以被存储在例如图2的权重存储器228中。在一些实例中,可以不执行训练,并且可以例如基于对另一种神经网络的训练来简单地向神经网络提供初始权重集合。

在一些实例中,可以接收多个数据对集合(例如,在框402中),每个集合对应于以不同编码技术编码的数据。因此,可以确定多个权重集合(例如,在框404中),每个集合对应于不同的编码技术。例如,一个权重集合可以被确定可以用于对根据LDPC译码编码的数据进行解码,而另一个权重集合可以被确定可以用于对以BCH译码编码的数据进行解码。

框406可以在框404之后。框406叙述了“接收以特定的编码技术编码的数据”。例如,以特定的编码技术编码的数据(例如,指示数据的信令)可以从计算装置的存储器中检索和/或使用无线通信接收器接收。可以使用多种编码技术中的任一种来对数据进行编码。

框408可以在框406之后。框408叙述了“使用该权重集合对数据进行解码”。通过使用可能已经在块404中确定的权重来处理在块406中接收的编码数据,可以确定解码数据。例如,本文描述的任何神经网络(例如,图1的神经网络100、图2的神经网络200和/或图3的ECC解码器312)可以用于对编码数据进行解码。在一些实例中,可以选择与用于对在框406中接收的数据进行编码的特定编码技术相关联的权重集合。可以从多个可用权重集合中选择该加权集合,每个权重集合用于对以不同的编码技术编码的数据进行解码。

框410可以在框408之后。框410叙述了“将解码数据写入存储器或从存储器读取解码数据”。例如,在框408中解码的数据可以被写入存储器,诸如图3的存储器314。在一些实例中,作为将数据写入到存储器的替代或补充,可以(例如,使用无线通信技术)将解码数据传输到另一个装置。尽管框410叙述了存储器,但是在一些实例中可以使用任何存储装置。

在一些实例中,可以针对以不同的编码技术编码的数据重复框406至410。例如,可以在框406中接收以一种特定的编码技术(例如,LDPC译码)编码的数据。在框408中,可以选择用于与LDPC译码一起使用并提供给神经网络用于解码的权重集合。可以在框410中获得解码数据。然后可以在框406中接收以不同的编码技术(例如,BCH译码)编码的数据。在框408中,可以选择用于与BCH译码一起使用并提供给神经网络用于解码的另一个权重集合。可以在框410中获得解码数据。这样,一种神经网络可以用于对已经以多种编码技术编码的数据进行解码。

本文描述的实例可以将各种部件称为“耦合”或者将信号称为“提供给”某些部件或从某些部件“接收”。应当理解,在一些实例中,部件彼此直接耦合,而在其它实例中,部件与设置在它们之间的中间部件耦合。类似地,信号可以直接提供给所叙述的部件和/或直接从所叙述的部件接收,而没有中间部件,而且也可以通过中间部件提供给某些部件和/或从某些部件接收。

相关技术
  • 用于对编码数据进行解码的神经网络和系统
  • 用于对连接分量的取向向量进行编码的方法和设备、相应的解码方法和设备、以及携带这种已编码数据的存储介质
技术分类

06120113106419