CN114301471A - 固态硬盘中的译码方法、固态硬盘及电子设备 - Google Patents
固态硬盘中的译码方法、固态硬盘及电子设备 Download PDFInfo
- Publication number
- CN114301471A CN114301471A CN202111463113.1A CN202111463113A CN114301471A CN 114301471 A CN114301471 A CN 114301471A CN 202111463113 A CN202111463113 A CN 202111463113A CN 114301471 A CN114301471 A CN 114301471A
- Authority
- CN
- China
- Prior art keywords
- sub
- decoding
- information
- matrix
- parity check
- 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
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本申请实施例提供一种固态硬盘中的译码方法、固态硬盘及电子设备。其中,固态硬盘中的译码方法包括:获取待译码的低密度奇偶校验码;其中,所述低密度奇偶校验码包括多个子矩阵;确定目标资源;根据所述目标资源,确定译码粒度;按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码。本申请实施例提供了一种译码器并行灵活性的实现方案,按照实际的可使用的资源,调整译码处理对象的粒度,继而动态的调整并行处理时校验节点数量,有助于提高资源利用率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种固态硬盘中的译码方法、固态硬盘及电子设备。
背景技术
固态硬盘(Solid State Disk或Solid State Drive,简称SSD),又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘。SSD由控制单元和存储单元(如FLASH芯片、DRAM芯片)组成。存储单元通过ECC(Error Correction Code,纠错码)校验来确保数据写入和读取的正确性。SSD中ECC纠错码主要有LDPC(low-density parity check,低密度奇偶校验)码。
LDPC码的编码算法比较简单,因此编码器的硬件设计同样比较简单。而LDPC译码算法复杂、计算量大,因此译码器设计需要兼顾译码性能、面积和吞吐率等多方面要求,电路种类多,结构复杂。
在固态硬盘控制器开发阶段,可直接选用现成的FPGA(Field Programmable GateArray,现场可编程逻辑门阵列,或可编程控制器)。但选择一个合适的FPGA以提供足够的资源来满足固态硬盘的译码需求是非常困难的。因此会出现FPGA的资源不能得到充分利用的情况。
发明内容
本申请各实施例提供一种灵活性高的译码方案,以提高硬件资源的利用率。
在本申请的一个实施例中,提供了一种固态硬盘中的译码方法。该译码方法包括:
获取待译码的低密度奇偶校验码;其中,所述低密度奇偶校验码包括多个子矩阵;
确定目标资源;
根据所述目标资源,确定译码粒度;
按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码。
在本申请的另一实施例中,提供了一种固态硬盘。该固态硬盘包括:存储单元和控制单元。其中,控制单元,与所述存储单元通信连接,用于实现上述译码方法中的步骤,并将译码后得到的数据存入所述存储单元。
在本申请的又一实施例中,提供了一种译码方法。本方法适用于固态硬盘中的多个控制器,多个控制器中至少部分控制器具有如下译码方法对应的功能。具体的,所述译码方法包括:
接收待存储的数据;其中,所述数据包括待译码的低密度奇偶校验码;所述低密度奇偶校验码包括多个子矩阵;
确定目标资源;
根据所述目标资源,确定译码粒度;
按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码,以将完成译码的所述数据存入存储单元。
在本申请的又一个实施例中,提供了一种电子设备。该电子设备包括上述实施例中的固态硬盘。
本申请实施例还提供了一种计算机程序产品。该计算机程序产品包括计算机程序,当所述计算机程序被计算机执行时,致使所述计算机能够实现上述译码方法中的步骤。
本申请实施例提供的技术方案,在译码前先确定目标资源;基于目标资源确定译码粒度;按照译码粒度对待译码的低密度奇偶校验码中的子矩阵进行分块,以得到多个子块,这样便可在译码时以子块为译码处理对象进行译码。可见,本申请实施例提供了一种译码器并行灵活性的实现方案,按照实际的可使用的资源,调整译码处理对象的粒度,继而动态的调整并行处理时校验节点数量,有助于提高资源利用率。
此外,本申请实施例提供的具有并行灵活性的译码创新,为实现具有多个功分布均衡的FPGA的固态硬盘提供了技术基础。即进一步的,本申请实施例在并行灵活性的译码技术的基础上,设计了基于FPGA的固态硬盘,两个或多个FPGA的功能相同,以保证所需的吞吐流量,且工作负载平衡。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的固态硬盘中的译码方法的流程示意图;
图2为本申请一实施例提供的按照译码粒度对子矩阵进行分块后译码的示意图;
图3为本申请一实施例提供的校验节点运算组的一种实现实例的示意图;
图4为本申请一实施例提供的读取掩码生成及按照读取掩码读取子块的原理性示意图;
图5为本申请一实施例提供的对子矩阵进行分块后半循环层译码的原理性示意图;
图6为本申请一实施例提供的固态硬盘的一种原理性结构示意图;
图7为本申请一实施例提供的固态硬盘中的译码装置的结构示意图;
图8为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。下文所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请实施例提供的技术方案之前,对LDPC码进行简单的介绍。
低密度奇偶校验码(LDPC)是一种具有稀疏的奇偶校验矩阵的线性纠错码。LDPC码在译码过程中可以并行或部分并行处理,译码复杂度不高,利用硬件可实现高速译码,且具有较大灵活性。奇偶校验矩阵中只有很小数目的非0矩阵元素(对于二进制码,非0元素即为元素1),其他元素都为0。LDPC码分为正则(regular)和非正则(irregular)两类。非正则码的纠错性能一般好于正则码,但也增大了其编译码器的实现难度。
本文提供的各实施例中的LDPC码为正则码。LDPC码的奇偶校验矩阵每列包含j个元素1,每行包含k个元素1,其中j和k都是较小的正整数(j<k)。对于正则LDPC码来说,j和k都是固定的,对于非正则码来说,j和k并不唯一。若码长为N比特,正则LDPC码可以记为(N,j,k)码。下面的式(1)给出了一个码长为12,校验比特个数为6,记为(12,2,4)LDPC码的奇偶校验矩阵。其中,k=4,j=2,码率为j/k=1/2。
H矩阵可以分成8个子矩阵,而子矩阵只可能是零矩阵、单位矩阵或单位矩阵循环移位数次后的得到的矩阵。这样的H矩阵叫做准循环奇偶校验矩阵,相应的LDPC码叫做准循环LDPC码(QC_LDPC:Quasi-Cyclic LDPC)。
准循环LDPC码也可表征为下式(2)所示的矩阵,每一个子矩阵采用Ai,j(i=1,2,…,t;j=1,2,…,c)表示,每一个子矩阵Ai,j都是一个b*b的零矩阵、单位矩阵或单位矩阵循环移位后得到的矩阵。其中,b*c=M;b*t=N。
由于准循环LDPC码校验矩阵的准循环特性,在硬件实现时可以方便实现半并行结构(或称为部分并行结构),从而使得硬件资源消耗大大降低,并保证所需的译码速率,从而获得串行结构和并行结构之间的有效折中。其中,半并行结构是将校验矩阵中的非零元素组合成若干个子矩阵,每个子矩阵对应一个独立的存储区域,每块存储区串行的复用同一组节点计算单元,从而实现部分并行的迭代译码。部分并行结构避免了全并行结构资源消耗过大、硬件实现难度大的缺点,同时译码速率比串行结构块。
这里需要重点说明的是:现有技术是根据奇偶校验矩阵的特点来设计译码器的半并行结构,即让译码器的硬件资源尽量适应奇偶校验矩阵。而本申请各实施例提供的技术方案的思路是:通过改变译码粒度的方式来适应译码器的硬件资源。
下面通过各实施例对该思路进行进一步的说明。如图1所示的本申请一实施例提供的固态硬盘中的译码方法。本实施例中所述的译码方法的执行主体可以是固态硬盘中的译码模块(或译码器),其中,译码模块(或译码器)部署在固态硬盘的控制器上。控制器比如可以是FPGA。所述方法包括:
101、获取待译码的低密度奇偶校验码;其中,所述低密度奇偶校验码包括多个子矩阵;
102、确定目标资源;
103、根据所述目标资源,确定译码粒度;
104、按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
105、在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行迭代译码。
上述101中,所述低密度奇偶校验码可以是上文中类似于式(1)和式(2)所示的奇偶校验矩阵H。该矩阵中包括多个子矩阵,如上述式(2)中的Aij(i=1,2,……c;j=1,2,……t),Aij是一个b*b的零矩阵、单位矩阵或单位矩阵循环移位后得到的矩阵。又比如,本实施例步骤101中的子矩阵可以是多个(比如4个等)Aij构成的矩阵等,本文对此不作具体限定。
上述102中,目标资源主要是能用于译码处理的硬件资源,比如运算单元,如变量节点运算单元、校验节点运算单元。参与译码的硬件资源的实现结构为半并行结构(或部分并行结构)。
上述103中,一种是步骤102确定的目标资源为FPGA的全部的能用以译码处理的硬件资源,此时“根据所述目标资源,确定译码粒度”,可具体为:根据所述目标资源及所述低密度奇偶校验码对应的矩阵大小,计算适配所述目标资源的所述译码粒度。另一种是步骤102中确定出的目标资源是:按照默认半并行译码方案(如以子矩阵为处理对象进行译码的方案)进行译码时,闲置的(或多余出的)硬件资源,此时“根据所述目标资源,确定译码粒度”具体包括:根据所述目标资源及子矩阵大小,计算适配所述目标资源的译码粒度。
比如图2所示的例子,假设FPGA在译码处理时能够容纳不超过1.3个子矩阵的逻辑资源。一般情况下,FPGA在译码处理时仅使用一个子矩阵的逻辑资源,剩下的0.3个子矩阵的逻辑资源将被闲置。因此,本实施例提供的技术方案就是要根据子矩阵的大小以及参与译码处理的硬件资源的情况,来计算译码粒度,以将闲置资源降至最低。即“根据闲置的0.3个子矩阵的逻辑资源及子矩阵的大小,可确定译码粒度为0.25。这里为了方便说明,以子矩阵处理时占用的资源为1个逻辑资源来描述的。简单来看,要想将剩下的0.3个子矩阵的逻辑资源也使用上,如图2所示,可确定译码粒度为1/4个子矩阵。比如,子矩阵为8*8的矩阵,那么0.25的粒度,就是对子矩阵进行分块,得到4个2*2的子块。这样在一个时间周期内将可利用上1.25个子矩阵对应的逻辑资源。参见图2所示,若FPGA在译码处理时使用一个子矩阵的逻辑资源,则针对图2中展示的5个子矩阵的译码处理需要5个时钟周期,这将译码粒度调整为0.25个子矩阵后,一个时钟周期内可处理1.25个子矩阵,图2中5个子矩阵仅需要4个时钟周期便可。
下面将换一个角度来说明本实施例中的译码粒度,以加深理解。
由于准循环LDPC码校验矩阵的准循环特性,在硬件实现时可以方便实现半并行结构。图3示出了适于式(2)的半并行译码器的结构的一个实例,对所有的变量节点和校验节点,以b个节点为一组,即半并行译码器以子矩阵为处理对象进行译码。
LDPC码包括两列节点,分别为变量节点(Variable Nodes),校验节点(CheckNodes)。每一个变量节点对应一个比特,每一个校验节点对应于一个奇偶校验约束关系。变量节点与LDPC码奇偶校验矩阵中的列对应,而校验节点与LDPC码奇偶校验矩阵中的行对应。两列节点之间的边与奇偶校验矩阵中的元素1相对应,即奇偶校验矩阵中的元素1所在行对应的校验节点与所在列对应的变量节点相连。
图3示出的适于上述式(2)LDPC码的半并行结构译码器的实例,对LDPC码奇偶校验矩阵中所有的变量节点和校验节点,以b个节点为一组。一组b个节点,校验节点运算单元组CNUs需要一个时钟周期处理。而半并行结构译码器中其他处理单元,如CNUb+1、……CNUb+x,并不能被利用上。其中,x小于b。为了在一个时钟周期内最大程度的利用上闲置的处理单元,本实施例中通过确定译码粒度,以便按照译码粒度对各子矩阵进行分块,然后利用上闲置的处理单元。
比如,LDPC码的半并行结构译码器包括10个校验节点运算单元,待译码的奇偶校验矩阵H中的子矩阵为8*8的矩阵,按照默认的以子矩阵为译码对象进行译码的方案,在一个时钟周期内将有8个校验节点运算单元对8个节点进行处理,但还有2个校验节点运算单元处于闲置状态。为此可计算2=8*译码粒度,可得出译码粒度=0.25。
这里需要补充的是:在具体实施时,可预先配置相关的计算模型或计算公式,以在确定译码粒度时,通过调用相应的计算模型或计算公式来完成译码粒度的计算。本文对计算模型或计算公式不作具体限定。
上述104中,按照所述译码粒度,对子矩阵进行分块,实质上得到的多个子块为非零子块。在具体实施时可利用掩码来实现,此处称为读取掩码。下面以多个子矩阵中的一个子矩阵为例,在下文中称为目标子矩阵,对本步骤104的具体实现进行说明。
即按照所述译码粒度,对所述目标子矩阵进行分块,以得到多个子块,包括:
1041、根据所述译码粒度及所述目标子矩阵中非零元素的位置,生成不同分块对应的读取掩码;
1042、按照不同分块对应的读取掩码,分别读取所述目标子矩阵中对应的元素,得到所述多个子块。
如图4所示,一个目标子矩阵为零矩阵、单位矩阵或单位矩阵循环移位后得到的矩阵。为方便描述,这里将单位矩阵及单位矩阵循环移位后得到的矩阵称为循环子矩阵(circulant)。零矩阵因没有非零元素,所以就不在本步骤考虑的范围内。本步骤中要得到的分块也都是含有非零元素的子块。这里需要说明的是:分块出的子块也是一个矩阵。比如,图4中采用虚线框标出的子块,该子块对应的读取掩码的生成过程可以是:获取目标子矩阵的循环移位量及所述译码粒度,生成对应的读取掩码,如Mask=[0…0 1…1 0…0]。
因循环子矩阵(circulant)的特性,所以在对非零元素(即“1”)进行存储时不需要存储具体的“1”所在的位置。该子矩阵的循环移位量决定了起始地址。子矩阵的存储范围与该子矩阵的大小相关。在确定起始地址后,便可基于该起始地址读取到子矩阵中的非零元素a,再结合译码粒度便可得到相应的读取掩码。其中,单位矩阵循环移位后得到的矩阵可以使用单位矩阵与循环移位量表示。如下式(3)的循环移位量为2;
参见图4所示,变量节点信息存储区域中,对应读取掩码Mask中“0”位置处的元素为不需要读取的元素,对应读取掩码Mask中“1”位置处的元素为需要读取的元素。这样便可得到一个子块。该目标子矩阵的其他子块也可采样上述过程得到。
继续以图2所示的实例为例说明,假设各子矩阵均为8*8的子矩阵,译码粒度为0.25;相应的,通过上述过程后,各子矩阵均被划分出了4个子块,且均为2*2的子块。若FPGA的用以译码处理的硬件资源包括10个运算单元。如图2所示,在t1个时钟周期时,利用10个运算单元,并行地对子矩阵1的第一子块F11(2*2矩阵)、子矩阵2的第一子块F21(2*2矩阵)、子矩阵3的第一子块F31(2*2矩阵)、子矩阵4的第一子块F41(2*2矩阵)、子矩阵5的第一子块F51(2*2矩阵)进行处理。然后在下一个t2时钟周期时,并行地处理F12 F22 F32 42 F52;再在t3时钟周期时,并行地处理F13 F23 F33 43 F53;t4时钟周期时,并行地处理F14 F24F34 44 F54。
图5示出了采用本实施例提供的手段对子矩阵进行分块后,然后再以分块出的子块为处理对象进行译码的示意图。图5中一个方块代表一个子矩阵,子矩阵中的斜线经过的位置处为非零元素。图5中粗体竖线表示半循环层译码选中的校验节点;根据各子矩阵的循环移位量,用粗体横线标出了与校验节点相连的变量节点。子矩阵的尺寸用Nc表示,假设当前处理并行度为每个时钟周期处理2个子矩阵,相应的,若采用现有技术(即以子矩阵为对象进行译码),则需要2*Nc个变量节点运算单元(VNU),Nc个校验节点运算单元(CNU)。若采用本申请实施例提供的译码放发后确定的译码粒度为0.5,即以0.5*Nc大小的子块为处理对象的译码过程,为保持相同的吞吐量(即每个时钟周期处理2个子矩阵),则需要0.5*Nc个校验节点运算单元以及2*Nc个变量节点运算单元来实现。虽然,采用本实施例提供的方案后,一个校验节点运算单元由过去的接收2个变量节点运算单元的消息变成了现在的接收4个变量节点运算单元的消息,看上去校验节点运算单元的处理复杂了,但是本实施例提供的方案还是具有很强的灵活性,及很好的优化潜力。例如,当限制资源时,可采用本实施例提供的方案调整并行处理的校验节点运算单元的数量,以适应FPGA的设计。另外,由本实施例提供的译码方法作为基础,在固态硬盘的控制器设计时采用功能对称的两个控制器变为可能。
本实施例步骤105中以子块为译码处理对象进行译码,可理解为:校验节点运算及变量节点运算过程均以子块为单位进行。即在对第i行的子块进行校验节点更新时,根据子块表查找第i行的所有子块对应的存储块,随后将第i行的子块写入校验节点运算组。在对第j列的子块进行变量节点更新时,根据子块表查找第j列的所有子块对应的存储块,然后将第j列的子块写入变量节点运算组。
具体的,本实施例中的所述低密度奇偶校验码包括:所述多个子矩阵分别对应的多个分块构成的奇偶校验矩阵H;所述奇偶校验矩阵H中的一个分块为一个信息节点。相应的,在一种可实现的技术方案中,上述步骤105“在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行迭代译码”可包括如下步骤:
1051、在对所述低密度奇偶校验码译码时,对所述奇偶校验矩阵H中的信息节点进行初始化,得到信息节点的初始化信息;
1052、在一次迭代过程中,对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算,并根据校验节点运算结果更新存储区内相应的信息节点的信息;
1053、对更新后的信息节点的信息及信息节点的初始化信息进行变量节点运算,并根据变量节点运算结果更新所述存储区内相应的信息节点的信息;
1053、调整迭代次数;
1054、调整后的迭代次数大于阈值或基于所述存储区内信息节点的信息确定满足校验条件时,输出译码结果;
1056、调整后的迭代次数小于所述阈值且基于所述存储区内信息节点的信息确定不满足所述校验条件时,进入下一次迭代。
上述步骤1052中“对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算”可包括如下步骤:
10521、从存储区中,读取符合校验节点运算单元要求数量的多个信息节点的信息,作为第一组待处理信息;
10522、将所述第一组待处理信息分配给所述校验节点运算单元的多个接口,以由所述校验节点运算单元并行地对所述第一组待处理信息进行校验节点运算;
10523、待运算完成后,从所述存储区中读取符合校验节点运算单元要求数量的、在本次迭代中未执行过所述校验节点运算的多个信息节点的信息,作为第二组待处理信息;再由所述校验节点运算单元对所述第二组待处理信息进行并行运算,直至所述奇偶校验矩阵H中所有信息节点均完成运算。
本实施例中的译码过程可简略的总结为如下步骤:
1、将变量节点进行初始化;
2、对校验节点的信息进行更新;
3、对变量节点的信息进行更新;
4、进行信息节点的判断,如果达到最后设计译码迭代次数,或者在达到译码次数之前得到的码字已经满足:H·CT=0;则重新从2步骤开始。
这里需要补充说明的是:变量节点和校验节点可被统称为信息节点,即存储区域内的信息节点根据变量节点和校验节点的信息不断更新。
在进行归一化最小和译码中一般分为两步的迭代方式,即变量节点运算(VNP)与校验节点运算(CNP):
式中:Pn——信息节点的初始化值;rnm——校验节点的值;qnm——变量节点的值
硬件译码器的基本设计流程首先在RAM中存入信息节点的初始值Pn。然后,将信息节点的信息进行校验节点运算,再将运算结果重新存入信息节点中,进行更新得到rnm;最后将更新后的信息节点进行变量节点的运算,但是变量节点qnm的每一次的计算不仅与上一次校验节点更新的信息rnm有关,也与最开始的初始值Pn有关,经过计算之后将得到的变量节点信息值更新qnm。
在进行迭代更新译码的过程中,首先要应用两组RAM,一组RAM根据变量节点与校验节点的信息不断更新,校验节点将RAM的信息从rnm更新为qnm,变量节点将RAM的信息从qnm更新为rnm。另一组RAM只存放信息节点的初始值Pn,提供给变量节点的信息更新。
当译码过程进行了一次迭代过程之后,需要进行判断经过此次译码之后是否已经将错码全部更正。其判断过程就是判断是否H·CT=0,首先要得到译码后的码字,再将码字进行矩阵乘积的运算。
C码字的结果由如下公式得到:
由上可以看出经过每一次迭代运算之后,都要计算一次码字,并且判断此码字是否已经满足矩阵要求,为了对信息码字进行判断,也需要一组RAM对cn进行存储。
这里需要说明的是,本实施例对迭代译码算法不作限定,可参见相关文献。本文提供的实施例目的是提供一种灵活性高能适配硬件资源的译码方法。
由上文可知,因为选择一个合适的FPGA以提供足够的资源来满足固态硬盘的译码需求是非常困难的,假设选择了一款如上述例子中的FPGA,在译码时,因该FPGA提供的资源只适配一个循环子矩阵的处理需求。即,如图所示,FPGA在对上述各循环子矩阵,需要5个时钟周期才能完成一次译码处理。而如果采用本申请各实施例提供的技术方案,将子矩阵划分出多个分块,粒度小了,就能利用上FPGA中其余没有被利用上的资源。这样的话,上图中的例子,采用本实施例提供的方案,因利用了FPGA中零碎的资源,只需4个时钟周期便可完成一次译码处理。可见,通过本申请实施例提供的灵活并行性,分数次循环的解码粒度提高了资源利用率。
进一步,上述1053中“根据变量节点运算结果更新所述存储区内相应的信息节点的信息”,可包括:
10531、根据所述变量节点运算结果,生成对应的写入掩码;
10532、按照所述写入掩码,将所述变量运算结果写入所述存储区的对应位置,以覆盖原数据。
其中,写入掩码的形式类似于上文中提及的读取掩码。比如,写入掩码Mask=[0…1 0 1…0],同样的存储区域中对应写入掩码中元素“1”位置处的元素为需要更新的元素,对应写入掩码中元素“0”位置处的元素为不需要更新的元素。通过写入掩码可保护其他变量节点免受意外覆盖。
进一步的,本实施例中步骤102“确定目标资源”可包括:
获取所述固态硬盘中用于译码处理的硬件资源信息,根据所述硬件资源信息,确定目标资源;或者
资源被调配的情况下,按照调配要求确定目标资源。
由于本实施例提供的高灵活性的译码方案,使得固态硬盘中配置两个可编程逻辑控制器,且两个可编程逻辑控制器均具有译码功能。即本实施例提供的方法还可包括:
106、接收上位机为均衡所述第一可编程逻辑控制器及第二可编程逻辑控制器的负载发送的资源调配指令;
107、基于所述资源调配指令,确定调配要求。
本实施例提供的所述译码方法的执行主体可以是上述第一可编程逻辑控制器,上位机可以电子设备(如台式机、服务器等)。或者,一电子设备内设有CPU、可实现本实施例提供的所述译码方法的固态硬盘,该电子设备可以台式电脑、笔记本电脑等。CPU为均衡固态硬盘内第一可编程逻辑控制器及第二可编程逻辑控制器的负载向本实施例方法的执行主体(即第一可编程逻辑控制器)发送资源调配指令。当然,也可以是由于其他原因,限制第一可编程逻辑控制器的资源使用,本实施例对此不在具体限定。
如图6所示,本申请另一实施例还提供一种固态硬盘。该固态硬盘包括:存储单元12和控制单元11。其中,控制单元11,与所述存储单元12通信连接,用于获取待译码的低密度奇偶校验码;其中,所述低密度奇偶校验码包括多个子矩阵;确定目标资源;根据所述目标资源,确定译码粒度;按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行迭代译码,并将译码后得到的数据存入所述存储单元。
进一步的,本实施例中的控制单元11除可实现上述功能外,还可实现上述译码方法实施例中其他各步骤对应的功能。
进一步的,如图6所示,本实施例中所述的固态硬盘中的所述控制单元11可包括:第一可编程逻辑控制器FPGA1及第二可编程逻辑控制器FPGA2。所述固态硬盘还包括内存13,如DDR、DRAM;所述第一可编程逻辑控制器FPGA1通过信道与上位机通信,并与所述内存及所述存储单元通信连接;所述第二可编程逻辑控制器FPGA2通过信道与上位机通信,并与所述内存及所述存储单元通信连接;所述第一可编程逻辑控制器FPGA1与所述第二可编程逻辑控制器FPGA2功能相同,均能实现上述译码方法中的步骤,并将译码后得到的数据存入所述存储单元。
在一具体的实施方案中,如图6所示,本实施例中的所述存储单元12为多片存储芯片组成的存储阵列(如NAND Flash)。所述存储阵列均分为两个子阵列,分别为第一子阵列及第二子阵列。所述第一可编程逻辑控制器FPGA1与所述第一子阵列通信连接,用于读取第一子阵列中的数据;向所述第一子阵列中存入数据。所述第二可编程逻辑控制器FPGA2与所述第二子阵列通信连接,用于读取第二子阵列中的数据;向所述第二子阵列中存入数据。
本申请实施例提供的具有并行灵活性的译码创新,为实现具有多个功分布均衡的FPGA的固态硬盘提供了技术基础。即进一步的,本申请实施例在并行灵活性的译码技术的基础上,设计了基于FPGA的固态硬盘,两个或多个FPGA的功能相同,以保证所需的吞吐流量,且工作负载平衡。
图7示出了本申请一实施例提供的固态硬盘中的译码装置。例如,该译码装置可以是固态硬盘中的控制器,比如FPGA。具体的,所述译码装置包括:获取模块21、确定模块22、分块模块23及译码模块24。其中,获取模块21用于获取待译码的低密度奇偶校验码;所述低密度奇偶校验码包括多个子矩阵。所述确定模块22用于确定目标资源,还用于根据所述目标资源,确定译码粒度。所述分块模块23用于按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块。所述译码模块24用于在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行迭代译码。
本实施例提供的技术方案,在译码前先确定目标资源;基于目标资源确定译码粒度;按照译码粒度对待译码的低密度奇偶校验码中的子矩阵进行分块,以得到多个子块,这样便可在译码时以子块为译码处理对象进行迭代译码。可见,本申请实施例提供的技术方案,按照实际的目标资源,调整译码处理对象的粒度,继而动态的调整并行处理时校验节点数量,以适配实际可用的资源,有助于提高资源利用率。
进一步的,本实施例中所述多个子矩阵中的任一子矩阵为目标子矩阵。相应的,所述分块模块23在按照所述译码粒度,对所述目标子矩阵进行分块,以得到多个子块时,具体用于:
根据所述译码粒度及所述目标子矩阵中非零元素的位置,生成不同分块对应的读取掩码;按照不同分块对应的读取掩码,分别读取所述目标子矩阵中对应的元素,得到所述多个子块。
进一步的,所述低密度奇偶校验码包括:所述多个子矩阵分别对应的多个分块构成的奇偶校验矩阵H;所述奇偶校验矩阵H中的一个分块为一个信息节点。所述译码模块24在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行迭代译码时,具体用于:
在对所述低密度奇偶校验码译码时,对所述奇偶校验矩阵H中的信息节点进行初始化,得到信息节点的初始化信息;
在一次迭代过程中,对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算,并根据校验节点运算结果更新存储区内相应的信息节点的信息;
对更新后的信息节点的信息及信息节点的初始化信息进行变量节点运算,并根据变量节点运算结果更新所述存储区内相应的信息节点的信息;
调整迭代次数;
调整后的迭代次数大于阈值或基于所述存储区内信息节点的信息确定满足校验条件时,输出译码结果;
调整后的迭代次数小于所述阈值且基于所述存储区内信息节点的信息确定不满足所述校验条件时,进入下一次迭代。
再进一步的,所述译码模块24在对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算时,具体用于:
从存储区中,读取符合校验节点运算单元要求数量的多个信息节点的信息,作为第一组待处理信息;
将所述第一组待处理信息分配给所述校验节点运算单元的多个接口,以由所述校验节点运算单元并行地对所述第一组待处理信息进行校验节点运算;
待运算完成后,从所述存储区中读取符合校验节点运算单元要求数量的、在本次迭代中未执行过所述校验节点运算的多个信息节点的信息,作为第二组待处理信息;再由所述校验节点运算单元对所述第二组待处理信息进行并行运算,直至所述奇偶校验矩阵H中所有信息节点均完成运算。
进一步的,所述译码模块24在根据变量节点运算结果更新所述存储区内相应的信息节点的信息时,具体用于:
根据所述变量节点运算结果,生成对应的写入掩码;按照所述写入掩码,将所述变量运算结果写入所述存储区的对应位置,以覆盖原数据。
进一步的,所述确定模块22在确定目标资源时,可具用于:
获取所述固态硬盘中用于译码处理的硬件资源信息,根据所述硬件资源信息,确定目标资源;
资源被调配的情况下,按照调配要求确定目标资源。
再进一步的,本实施例提供的所述固态硬盘的译码装置还可包括接收模块。其中,接收模块用于接收上位机为均衡所述第一可编程逻辑控制器及第二可编程逻辑控制器的负载发送的资源调配指令。相应的,所述确定模块用于基于所述资源调配指令,确定所述调配要求。
进一步的,所述确定模块22在根据所述目标资源,确定译码粒度时,具体用于:
获取子矩阵的大小;根据所述目标资源及所述子矩阵的大小,计算适配所述目标资源的所述译码粒度。
这里需要说明的是:上述实施例提供的固态硬盘中的译码装置可实现上述各方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述各方法实施例中的相应内容,此处不再赘述。
本申请另一实施例还提供了一种译码方法。本实施例提供的方法的执行主体可以是固态硬盘中一控制器。具体的,固态硬盘包括多个控制器。多个控制器中的至少部分控制器具有如下译码方法对应的功能。例如上文中例举的方案,固态硬盘包括两个控制器(如第一可编程逻辑控制器及第二可编程逻辑控制器),两个控制器的功能相同,均有译码功能。具体的,所述译码方法包括:
201、接收待存储的数据;其中,所述数据包括待译码的低密度奇偶校验码;所述低密度奇偶校验码包括多个子矩阵;
202、确定目标资源;
203、根据所述目标资源,确定译码粒度;
204、按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
205、在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码,以将完成译码的所述数据存入存储单元。
上述201中数据可以是待存入固态硬盘中一帧数据,在完成对该帧数据的译码及存储操作后,便可对下一帧数据进行译码及存储操作。
上述202~204步骤的内容可参见上文中的相应内容,此处不作赘述。
进一步的,本实施例中步骤202“确定目标资源”可具体包括:
根据自身用于译码处理的所述硬件资源信息,确定目标资源;或者
接收上位机为均衡所述多个控制器的负载发送的资源调配指令,依据所述资源调配指令,确定目标资源。
图8示出了本申请一实施例提供一个电子设备的结构示意图。如图8所示,所述电子设备包括:存储器31以及处理器32。存储器31可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器31可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
所述存储器31,用于存储一条或多条计算机指令;
所述处理器32,与所述存储器31耦合,用于执行所述存储器31中存储的一条或多条计算机指令,以实现上述各实施例提供的译码方法中的步骤。
进一步,如图8所示,电子设备还包括:通信组件33、电源组件35及显示器36等其它组件。图8中仅示意性给出部分组件,并不意味着电子设备只包括图8所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序被计算机执行时能够实现上述各实施例提供的固态硬盘中的译码方法中的步骤或功能。
本申请实施例还提供一种计算机程序产品,包括计算机程序,当所述计算机程序被处理器执行时,致使所述处理器能够实现上述各实施例提供的固态硬盘中的译码方法中的步骤或功能。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种固态硬盘中的译码方法,其特征在于,包括:
获取待译码的低密度奇偶校验码;其中,所述低密度奇偶校验码包括多个子矩阵;
确定目标资源;
根据所述目标资源,确定译码粒度;
按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码。
2.根据权利要求1所述的方法,其特征在于,所述多个子矩阵中的任一子矩阵为目标子矩阵;以及
按照所述译码粒度,对所述目标子矩阵进行分块,以得到多个子块,包括:
根据所述译码粒度及所述目标子矩阵中非零元素的位置,生成不同分块对应的读取掩码;
按照不同分块对应的读取掩码,分别读取所述目标子矩阵中对应的元素,得到所述多个子块。
3.根据权利要求1所述的方法,其特征在于,所述低密度奇偶校验码包括:所述多个子矩阵分别对应的多个分块构成的奇偶校验矩阵H;所述奇偶校验矩阵H中的一个分块为一个信息节点;以及
在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码,包括:
在对所述低密度奇偶校验码译码时,对所述奇偶校验矩阵H中的信息节点进行初始化,得到信息节点的初始化信息;
在一次迭代过程中,对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算,并根据校验节点运算结果更新存储区内相应的信息节点的信息;
对更新后的信息节点的信息及信息节点的初始化信息进行变量节点运算,并根据变量节点运算结果更新所述存储区内相应的信息节点的信息;
调整迭代次数;
调整后的迭代次数大于阈值或基于所述存储区内信息节点的信息确定满足校验条件时,输出译码结果;
调整后的迭代次数小于所述阈值且基于所述存储区内信息节点的信息确定不满足所述校验条件时,进入下一次迭代。
4.根据权利要求3所述的方法,其特征在于,对所述奇偶校验矩阵H中的信息节点的信息进行校验节点运算,包括:
从存储区中,读取符合校验节点运算单元要求数量的多个信息节点的信息,作为第一组待处理信息;
将所述第一组待处理信息分配给所述校验节点运算单元的多个接口,以由所述校验节点运算单元并行地对所述第一组待处理信息进行校验节点运算;
待运算完成后,从所述存储区中读取符合校验节点运算单元要求数量的、在本次迭代中未执行过所述校验节点运算的多个信息节点的信息,作为第二组待处理信息;再由所述校验节点运算单元对所述第二组待处理信息进行并行运算,直至所述奇偶校验矩阵H中所有信息节点均完成运算。
5.根据权利要求3所述的方法,其特征在于,根据变量节点运算结果更新所述存储区内相应的信息节点的信息,包括:
根据所述变量节点运算结果,生成对应的写入掩码;
按照所述写入掩码,将所述变量运算结果写入所述存储区的对应位置,以覆盖原数据。
6.根据权利要求1至5中任一项所述的方法,其特征在于,确定目标资源:
获取所述固态硬盘中用于译码处理的硬件资源信息,根据所述硬件资源信息,确定目标资源;或者
资源被调配的情况下,按照调配要求确定目标资源。
7.根据权利要求6所述的方法,其特征在于,还包括:
接收上位机为均衡所述第一可编程逻辑控制器及第二可编程逻辑控制器的负载发送的资源调配指令;
基于所述资源调配指令,确定调配要求。
8.根据权利要求1至5中任一项所述的方法,其特征在于,根据所述目标资源,确定译码粒度,包括:
获取子矩阵的大小;
根据所述目标资源及所述子矩阵的大小,计算适配所述目标资源的所述译码粒度。
9.一种固态硬盘,其特征在于,包括:
存储单元;
控制单元,与所述存储单元通信连接,用于实现上述权利要求1至8中任一项所述译码方法中的步骤,并将译码后得到的数据存入所述存储单元。
10.根据权利要求9所述的固态硬盘,其特征在于,所述控制单元包括:第一可编程逻辑控制器及第二可编程逻辑控制器;
所述固态硬盘还包括内存;
所述第一可编程逻辑控制器通过信道与上位机通信,并与所述内存及所述存储单元通信连接;
所述第二可编程逻辑控制器通过信道与上位机通信,并与所述内存及所述存储单元通信连接;
所述第一可编程逻辑控制器与所述第二可编程逻辑控制器功能相同,均能实现上述权利要求1至8中任一项所述译码方法中的步骤,并将译码后得到的数据存入所述存储单元。
11.根据权利要求10所述的固态硬盘,其特征在于,所述存储单元为多片存储芯片组成的存储阵列;
所述存储阵列均分为两个子阵列,分别为第一子阵列及第二子阵列;
所述第一可编程逻辑控制器与所述第一子阵列通信连接,用于读取第一子阵列中的数据;向所述第一子阵列中存入数据;
所述第二可编程逻辑控制器与所述第二子阵列通信连接,用于读取第二子阵列中的数据;向所述第二子阵列中存入数据。
12.一种译码方法,其特征在于,适用于固态硬盘中的多个控制器,多个控制器中至少部分控制器具有如下译码方法对应的功能,所述译码方法包括:
接收待存储的数据;其中,所述数据包括待译码的低密度奇偶校验码;所述低密度奇偶校验码包括多个子矩阵;
确定目标资源;
根据所述目标资源,确定译码粒度;
按照所述译码粒度,对所述低密度奇偶校验码中的子矩阵进行分块,以得到多个子块;
在对所述低密度奇偶校验码译码时,以子块为译码处理对象进行译码,以将完成译码的所述数据存入存储单元。
13.根据权利要求12所述的方法,其特征在于,确定目标资源,包括:
根据自身用于译码处理的硬件资源信息,确定目标资源;或者
接收上位机为均衡所述多个控制器的负载发送的资源调配指令,依据所述资源调配指令,确定目标资源。
14.一种电子设备,其特征在于,包括上述权利要求9至11中任一项所述的固态硬盘。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111463113.1A CN114301471A (zh) | 2021-12-02 | 2021-12-02 | 固态硬盘中的译码方法、固态硬盘及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111463113.1A CN114301471A (zh) | 2021-12-02 | 2021-12-02 | 固态硬盘中的译码方法、固态硬盘及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114301471A true CN114301471A (zh) | 2022-04-08 |
Family
ID=80966239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111463113.1A Pending CN114301471A (zh) | 2021-12-02 | 2021-12-02 | 固态硬盘中的译码方法、固态硬盘及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114301471A (zh) |
-
2021
- 2021-12-02 CN CN202111463113.1A patent/CN114301471A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6555759B2 (ja) | 構造化されたldpcのコーディング方法、デコーディング方法、コーディング装置及びデコーディング装置 | |
JP7372369B2 (ja) | 構造的ldpcの符号化、復号化方法および装置 | |
US8566667B2 (en) | Low density parity check code decoding system and method | |
US8966339B1 (en) | Decoder supporting multiple code rates and code lengths for data storage systems | |
JP5112468B2 (ja) | 誤り検出訂正回路、メモリコントローラ、および半導体メモリ装置 | |
US20150309869A1 (en) | Error-correction encoding and decoding | |
WO2016112857A1 (zh) | Ldpc码编码器和译码器 | |
US10707902B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
US9195536B2 (en) | Error correction decoder and error correction decoding method | |
US20160218750A1 (en) | Parity check code encoder | |
WO2011109084A1 (en) | Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size | |
US10090860B2 (en) | Memory system using integrated parallel interleaved concatenation | |
JP2007215089A (ja) | 復号装置及び復号方法 | |
US10157097B2 (en) | Redundant bytes utilization in error correction code | |
Lin et al. | Efficient shuffled decoder architecture for nonbinary quasi-cyclic LDPC codes | |
Lin et al. | Byte-reconfigurable LDPC codec design with application to high-performance ECC of NAND flash memory systems | |
Yuan et al. | 4.7-Gb/s LDPC decoder on GPU | |
KR102058499B1 (ko) | 리드-솔로몬 저밀도 패리티 검사 디코더를 포함하는 반도체 메모리 시스템 및 그것의 읽기 방법 | |
US10700708B2 (en) | Permutation network designing method, and permutation circuit of QC-LDPC decoder | |
EP2992429A1 (en) | Decoder having early decoding termination detection | |
Amaricai et al. | Memory efficient FPGA implementation for flooded LDPC decoder | |
Chen et al. | Reliability analysis and improvement for multi-level non-volatile memories with soft information | |
Martínez-Zaldívar et al. | Tridimensional block multiword LDPC decoding on GPUs | |
CN114301471A (zh) | 固态硬盘中的译码方法、固态硬盘及电子设备 | |
CN103973316B (zh) | 具有使用定标常数的可变节点更新器的解码方法和解码*** |
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 |