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

数据编、解码方法、纠错方法、内存控制器、芯片及设备

文献发布时间:2024-04-18 19:54:45


数据编、解码方法、纠错方法、内存控制器、芯片及设备

技术领域

本申请实施例涉及内存技术领域,具体涉及一种数据编、解码方法、纠错方法、内存控制器、芯片及设备。

背景技术

内存在工作过程中由于电磁等环境干扰以及内存自身的结构特性,可能会出现数据错误的情况;例如,在向内存写入数据和从内存读取数据时,内存可能会出现数据错误。

内存的数据错误可能会导致计算机系统产生不稳定或宕机等问题,对稳定性要求较高的用户而言,内存的数据错误可能会引起更加严重的问题;因此计算机系统需要利用纠错算法对从内存读取的数据进行纠错。

对从内存读取的数据进行纠错的前提是,数据在写入内存时需要附带用于纠错的校验码元。在此背景下,如何提供技术方案,以为提升纠错算法的纠错能力提供支持,成为了本领域技术人员亟需解决的技术问题。

明内容

有鉴于此,本申请实施例提供一种数据编、解码方法、纠错方法、内存控制器、芯片及设备,提升校验码元对于数据码元的覆盖度,为提升纠错算法所能纠错的symbol数量提供支持,进而提升纠错算法的纠错能力。

为实现上述目的,本申请实施例提供如下技术方案。

第一方面,本申请实施例提供一种数据编码方法,包括:

确定待写入内存的数据,并将所述数据映射为对应的多个数据码元;

根据扩展编码矩阵,对所述多个数据码元进行编码,得到多个校验码元;其中,所述扩展编码矩阵基于标准编码矩阵变形得到,所述标准编码矩阵在目标数据大小的码元下,存在相同列向量;所述扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且所述扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同;

将所述多个数据码元和所述多个校验码元作为编码结果,写入内存;其中,所述多个校验码元用于在从内存读取所述编码结果时,对所述编码结果进行纠错。

第二方面,本申请实施例提供一种数据解码方法,包括:

从内存读取编码结果,所述编码结果包括多个数据码元和多个校验码元;所述编码结果基于上述第一方面所述的数据编码方法得到;

根据扩展编码矩阵,以及读取的多个数据码元和多个校验码元,确定第一伴随式;

根据所述第一伴随式以及得到扩展编码矩阵的所述方式,确定第二伴随式;其中,所述第一伴随式和所述第二伴随式作为解码结果,所述解码结果作为纠错算法的输入,用于对所述编码结果进行纠错。

第三方面,本申请实施例提供一种数据纠错方法,包括:

获取解码结果,所述解码结果包括第一伴随式和第二伴随式;所述解码结果基于上述第二方面所述的数据解码方法得到;

根据所述第一伴随式和所述第二伴随式,运行纠错算法,以确定从内存读取的编码结果所对应的纠错结果。

第四方面,本申请实施例提供一种内存控制器,包括编码模块、解码模块和纠错模块;所述编码模块用于执行如上述第一方面所述的数据编码方法;所述解码模块用于执行如上述第二方面所述的数据解码方法;所述纠错模块用于执行如上述第三方面所述的数据纠错方法。

第五方面,本申请实施例提供一种芯片,包括如上述第四方面所述的内存控制器。

第六方面,本申请实施例提供一种电子设备,包括如上述第五方面所述的芯片。

本申请实施例提供的数据编码方法包括:确定待写入内存的数据,并将所述数据映射为对应的多个数据码元;根据扩展编码矩阵,对所述多个数据码元进行编码,得到多个校验码元;其中,所述扩展编码矩阵基于标准编码矩阵变形得到,所述标准编码矩阵在目标数据大小的码元下,存在相同列向量;所述扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且所述扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同;在得到所述多个校验码元后,本申请实施例可将所述多个数据码元和所述多个校验码元作为编码结果,写入内存;其中,所述多个校验码元用于在从内存读取所述编码结果时,对所述编码结果进行纠错。

由于本申请实施例的校验码元是基于扩展编码矩阵得到,而扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同;因此相比于标准编码矩阵,本申请实施例的扩展编码矩阵能够为数据码元提供全面的纠错支持,从而基于扩展编码矩阵所生成的校验码元对于数据码元的覆盖度得以提升(比如校验码元能够完全覆盖数据码元),进而能够为提升纠错算法所能纠错的symbol数量提供支持(例如纠错算法能够纠正两个symbol的数据错误)。因此本申请实施例提供的数据编码方法,能够基于扩展编码矩阵,提升校验码元对于数据码元的覆盖度,为提升纠错算法所能纠错的symbol数量提供支持,进而提升了纠错算法的纠错能力。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为计算机系统的部分结构框图。

图2A为得到校验码元的示例图。

图2B为得到校验码元的另一示例图。

图3A为得到扩展编码矩阵的流程图。

图3B为校验码元与单位矩阵的示例图。

图3C为中间范德蒙矩阵的示例图。

图3D为中间范德蒙矩阵的另一示例图。

图4为数据编码方法的流程图。

图5A为数据解码方法的流程图。

图5B为基于范德蒙矩阵得到第一伴随式的示例图。

图6为数据纠错方法的流程图。

图7为确定纠错结果的流程图。

图8为二次方程求根异或表的示例图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1示例性的示出了计算机系统可选的部分结构框图,如图1所示,该计算机系统可以包括:内存110和内存控制器120。

内存110作为计算机系统的重要部件,可用于暂时存放处理器中的运算数据以及与硬盘等外部存储器交换的数据。内存110可以具有不同的内存规范和接口模式,在一个示例中,内存110可以是DDR(Double Data Rate双倍速率)内存,例如DDR5内存。

内存控制器120作为计算机系统中内存110的控制器件,可用于控制数据在内存120的写入和读取。内存控制器120可以具有多个内存通道(channel),例如channel0,channel1等。内存控制器120可利用channel实现向内存写入数据和从内存读取数据。

在向内存110写入数据和从内存110读取数据时,由于内存工作环境的各种干扰以及内存自身的结构特性,内存可能会出现数据错误;为保障计算机系统的可靠性,内存控制器120需要利用纠错算法对从内存110读取的数据进行数据错误检查,并对检查到的数据错误进行纠正,从而使得计算机系统在内存出现数据错误时具有纠错能力与容错能力。

内存控制器120对从内存读取的数据进行纠错的前提是,数据在写入内存时需要附带用于纠错的校验码元。基于此,进一步结合图1所示,内存控制器120可以设置编码模块121、解码模块122和纠错模块123。其中,针对待写入内存的数据,内存控制器120在将数据写入内存110之前,编码模块121可对数据对应的数据码元进行编码,从而产生用于纠错的校验码元,校验码元和数据码元作为编码结果可写入内存110。

由于内存工作环境的干扰以及内存自身的结构特性,内存控制器120在从内存110读取编码结果时,所读取的数据码元与校验码元可能与写入内存时不一致,即产生数据错误;因此内存控制器120在从内存110读取编码结果时,解码模块122可对读取的编码结果进行解码,解码结果作为纠错模块123的输入。

纠错模块123可根据纠错算法以及解码模块122的解码结果进行纠错运算,从而对从内存110读取的编码结果进行错误检查和错误纠正。在一个示例中,纠错模块123所使用的纠错算法例如RS(Reed-Solomon,里德所罗门)、Parity(奇偶校验位)加CRC(CyclicRedundancy Check,循环冗余校核)、SDDC(Single Device Data Correction,单内存颗粒数据纠正)、DDDC(Double Device Data Correction,双内存颗粒数据纠正)等。需要说明的是,RS编码即里德所罗门码(Reed-solomon codes),是一种前向纠错的信道编码,RS编码对由校正过采样数据所产生的多项式有效;RS编码是一类具有纠错能力的特殊的非二进制BCH码(BCH为Bose、Ray-Chaudhuri与Hocquenghem的简写)。

纠错算法存在纠错能力上限,基于内存的数据错误程度是否超出纠错算法的纠错能力上限,内存的数据错误按照严重等级可以分为以下几类:

CE(Correctable Error,可纠正错误),内存的数据错误程度未超出纠错算法的纠错能力上限,则内存的数据错误为CE;

UE(Uncorrectable Error,不可纠正错误),内存的数据错误程度超出纠错算法的纠错能力上限,则内存的数据错误为UE;

不可检测错误,内存的数据错误程度不可被纠错算法检查到,相应的,纠错算法也无法进行数据错误纠正。

在上述类型的数据错误中,CE的严重等级最低,相应的数据错误影响也最轻,一般不会导致严重问题;而UE和不可检测错误都可能导致计算机系统系统产生宕机等问题。因此,数据错误的纠正目标是增强纠错算法的纠错能力,降低数据错误的严重等级;例如,将内存的数据错误从UE变为CE,从不可检测错误变为可检测的UE等。

然而,内存控制器使用的RS、Parity加CRC、SDDC、DDDC等纠错算法,在基于ecc(error check correction,错误检查和纠正)的一次纠错运算中,纠错能力较低。例如,纠错算法在一次纠错运算中仅能纠正一个symbol(符号)的数据错误。在一个示例中,RS ecc算法对数据进行两个symbol的检错以及一个symbol的数据错误纠正。

需要说明的是,symbol又称为码元,是ecc纠错时的最小纠错单元,一个symbol(即一个码元)的数据大小可根据内存颗粒的数据大小而定,比如针对x4的内存颗粒,一个symbol的数据大小为4bit(比特),又比如针对x8的内存颗粒,一个symbol的数据大小为8bit;4bit和8bit仅是一个symbol的数据大小的示例,一个symbol的数据大小可根据实际情况而定,本申请实施例对此并不设限。

纠错算法仅能纠正一个symbol的数据错误,是纠错算法的纠错能力较低的一种体现。本申请的发明人在研究过程中发现,纠错算法的纠错能力较低的原因之一在于:用于纠错的校验码元并无法完全覆盖数据的数据码元,这导致数据码元的纠错支持度较低,因此纠错算法的纠错能力较低(例如仅能纠正一个symbol的数据错误),并存在较高的误纠率。

在进一步的研究中发现,校验码元并无法完全覆盖数据码元的原因之一在于:校验码元可以使用有限域的运算来得到,有限域的运算利用到标准编码矩阵(例如标准范德蒙矩阵等);当码元为目标数据大小时,标准编码矩阵中会存在相同的列向量,从而相同的列向量所对应的数据码元无法被区分,致使基于标准编码矩阵所产生的校验码元无法完全覆盖数据码元,导致纠错算法仅能纠正一个symbol的数据错误,并存在较高的误纠率。也就是说,如果标准编码矩阵(例如标准范德蒙矩阵)中如果存在相同的列向量,则相同的列向量所对应的数据码元无法被区分,致使根据标准编码矩阵与数据码元得到的校验码元无法完全覆盖数据码元。

为便于理解,以基于标准范德蒙矩阵的编码为例,图2A示例性的示出了得到校验码元的示例图,如图2A所示,作为示例,标准范德蒙矩阵为4行16列的编码矩阵,标准范德蒙矩阵中一列的内容形成一个列向量,例如标准范德蒙矩阵中第1个列向量为(1

数据码元与待写入内存的数据相对应,数据码元的数量与标准范德蒙矩阵的列向量数量相对应,例如,对于16列的标准范德蒙矩阵,数据码元的数量为16个,分别为d

在基于有限域的乘法运算来得到校验码元时,可通过标准范德蒙矩阵与数据码元的乘法运算,来计算得到校验码元;从而,4行16列的标准范德蒙矩阵,与16个数据码元形成的矩阵相乘,可得到4个校验码元c

由于有限域含有的元素个数有限,有限个数的元素只能构造出有限个向量空间,因此基于有限域欧拉定理,当码元的数据大小为目标数据大小时(码元的数据大小与有限域内元素的bit大小相对应),有限域中任何元素的指定次幂都相等,这导致在目标数据大小的码元下,基于有限域的标准范德蒙矩阵中会存在相同的列向量。

例如,以码元的数据大小为4bit为例,图2B示例性的示出了得到校验码元的另一示例图;在码元的数据大小为4bit时,有限域GF(2

由于标准范德蒙矩阵中第1个列向量与第16个列向量相等,这进一步导致数据码元中第1个数据码元d

需要说明的是,相比于8bit大小的码元,4bit大小的码元能够降低芯片面积的占用,并且以较小数据总量的数据码元和校验码元,达到纠正2个symbol数据错误的最低长度需求;因此将码元的数据大小设定为4bit具有一定的意义,这也导致图2B示例的标准范德蒙矩阵中存在相同列向量的情况较为常见。

需要进一步说明的是,得到校验码元的有限域乘法运算可以通过查找表的方式实现;例如,两个系数的乘法需要分别在两个系数对应的查找表中进行查表操作,然后将查表操作的结果进行相加后,再查找一个对数表,从而实现有限域的乘法运算;因此有限域中两个系数的乘法,涉及到三个查找表,如果三个查找表的数据大小较大,无疑将对芯片面积产生巨大影响。

在上述情况下,如果以8bit作为码元的数据大小,则三个查找表均需存储256个8bit的数据,这会导致三个查找表占用较多的芯片面积,此外也需要128bit的数据码元和32bit的校验码元,才能满足纠正2个symbol数据错误的最低长度需求(对应一个DDR5channel中的4笔数据传输)。可见以8bit为码元进行纠错,会产生较大的延迟,占用较大的芯片面积,同时纠错算法的纠错能力也不够灵活;另外,一个码元的8个bit同时出错的概率较小,以8bit为码元大小进行纠错存在纠错能力浪费的情况。基于此,以4bit作为一个码元的数据大小,则一个查找表只需要16个4bit的数据,相较于存储256个8bit的数据的查找表,明显能够大幅降低芯片面积的占用;而且通过一个DDR5 channel中的2笔数据传输,即能够满足纠正2个symbol数据错误的最低长度需求,这也使得数据处理的延迟得以降低,因此将码元的数据大小设定为4bit具有一定的意义。

值得注意的是,上述说明仅是表达4bit大小的码元具有一定的技术意义,但是使得标准编码矩阵(例如标准范德蒙矩阵)中存在相同的列向量的码元数据大小并不一定为4bit,具体可根据实际情况而定,本申请实施例对此并不设限。

通过上文描述可以看出,如果标准编码矩阵中存在相同的列向量,则将导致生成的校验码元无法完全覆盖数据码元,从而致使纠错算法的纠错能力较低(例如仅能纠正一个symbol的数据错误),并存在较高的误纠率。

基于此,本申请实施例提供改进的技术方案,通过对标准编码矩阵(例如标准范德蒙矩阵)进行变形,得到扩展编码矩阵(例如扩展范德蒙矩阵),并且扩展编码矩阵在目标数据大小的码元下,不存在相同的列向量。基于扩展编码矩阵,本申请实施例可在编码过程中,利用扩展编码矩阵和数据码元,生成校验码元,使得校验码元对于数据码元的覆盖度得以提升(例如校验码元能够完全覆盖数据码元),从而为提升纠错算法所能纠错的symbol数量提供支持(例如纠错算法能够纠正两个symbol的数据错误)。

另一方面,基于扩展编码矩阵,本申请实施例可在解码过程中,利用扩展编码矩阵对从内存读取的数据码元和校验码元进行解码,得到用于纠错的第一伴随式和第二伴随式;第一伴随式和第二伴随式可视为是解码结果,作为纠错算法的输入。再一方面,在纠错过程中,纠错算法可根据解码结果中的第一伴随式和第二伴随式,确定纠错结果,实现对从内存读取的数据进行纠错;在扩展编码矩阵的支持下,纠错算法能够覆盖所有数据码元的数据错误检测,能够纠正两个symbol的数据错误(例如纠正两个数据码元的数据错误,以及,纠正一个数据码元的数据错误和非首个校验码元的数据错误等),从而提升纠错算法的纠错能力,增强内存的可靠性。

基于上述思路,本申请实施例可对标准编码矩阵进行变形,来得到扩展编码矩阵,并使得扩展编码矩阵在目标数据大小的码元下,不存在相同的列向量;也就是说,标准编码矩阵在目标数据大小的码元下,会存在相同的列向量,而本申请实施例可对标准编码矩阵进行变形,使得得到的扩展编码矩阵在目标数据大小的码元下,不存在相同的列向量。例如,标准范德蒙矩阵在4bit的码元下,会存在相同的列向量(例如第1个列向量与第16个列向量相等),本申请实施例对标准范德蒙矩阵进行变形,得到扩展范德蒙矩阵,并且扩展范德蒙矩阵在4bit的码元下,不存在相同的列向量。

作为对标准编码矩阵进行变形的一种可选实现,图3A示例性的示出了本申请实施例提供的得到扩展编码矩阵的流程图,该流程可以是具有数据处理能力的器件执行。在一个示例中,计算机系统中的处理器,或者外接设备可以执行图3A示例流程,从而得到扩展编码矩阵,并将扩展编码矩阵输入内存控制器,以使得内存控制器可利用扩展编码矩阵进行数据编码、解码和纠错;在一个示例中,本申请实施例也可支持由内存控制器得到扩展编码矩阵。参照图3A,该流程可以包括如下步骤。

在步骤S310中,基于预设列向量,对标准编码矩阵中的列向量进行处理,得到包含预设列向量的中间编码矩阵;中间编码矩阵在目标数据大小的码元下,不存在相同的列向量。

在可选实现中,将标准编码矩阵变形为扩展编码矩阵可以分为两步:横向扩展和行变换。

横向扩展是指,在标准编码矩阵中引入预设列向量,得到中间编码矩阵,从而中间编码矩阵在目标数据大小的码元下,不存在相同的列向量;横向扩展后的编码矩阵可称为中间编码矩阵。可选的,预设列向量可以与校验码元对应的单位矩阵中的单位列向量相关,例如,预设列向量可以与首个校验码元c

行变换是指,消除中间编码矩阵中的预设列向量,得到扩展编码矩阵,从而扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同。

在图3A所示流程中,步骤S310可以视为是横向扩展的实现方式,步骤S311可以视为是行变换的实现方式。

作为步骤S310实现横向扩展的可选方式,本申请实施例可确定标准编码矩阵在目标数据大小的码元下,两个相同的列向量;将两个相同的列向量中的一个列向量,调整为预设列向量。也就是说,将标准编码矩阵中的两个相同列向量中的一个,直接替换为预设列向量,从而得到中间编码矩阵,并使得中间编码矩阵在目标数据大小的码元下,各个列向量不同。可选的,本申请实施例可将两个相同列向量中排序在后的列向量,调整为预设列向量。在一个示例中,以标准范德蒙矩阵为例,结合图2B所示,在4bit的码元下,标准范德蒙矩阵的第1个列向量与第16个列向量是相等的,均为(1,1,1,1);本申请实施例可将第1个和第16个列向量中排序在后的第16个列向量,替换为预设列向量。

在可选实现中,预设列向量可以与首个校验码元c

作为步骤S310实现横向扩展的另一种可选方式,本申请实施例可对标准编码矩阵进行矩阵转置,从而得到包含预设列向量的中间编码矩阵,并且中间编码矩阵在目标数据大小的码元下,不存在相同的列向量。可选的,标准范德蒙矩阵中同一列的指数相同且底数为等比数(例如1,2,4,8之间为2的等比数),并且列之间的指数为顺序递增;本申请实施例在将标准编码矩阵进行矩阵转置时,可设置同一列的指数为等差数且底数相同,并且列之间的底数设置为顺序递增,从而得到中间编码矩阵,并且中间编码矩阵包含预设列向量。在一个实现示例中,图3D示例性的示出了中间范德蒙矩阵的另一示例图,对图2A和图2B所示的标准范德蒙矩阵进行矩阵转置之后,可得到图3D所示的中间范德蒙矩阵;通过矩阵转置之后,中间范德蒙矩阵的列之间的底数从0至15顺序递增,并且同一列的底数相同、指数为0至3的等差数。在经过矩阵转置之后,中间范德蒙矩阵中存在预设列向量,例如以预设列向量为(1,0,0,0)为例,图3D示例的中间范德蒙矩阵中的第一个列向量(0

在步骤S311中,对中间编码矩阵中的行向量进行处理,得到不存在预设列向量的扩展编码矩阵。

在得到中间编码矩阵后,虽然中间编码矩阵在目标数据大小的码元下,不存在相同的列向量,但是中间编码矩阵中引入了预设列向量,而预设列向量与校验码元相关(例如预设列向量为首个校验码元对应的单位列向量),因此本申请实施例需通过行变换来消除中间编码矩阵中的预设列向量,使得最终得到的扩展编码矩阵中不存在预设列向量,即最终得到的扩展编码矩阵与ecc存在线性无关;比如,最终得到的扩展编码矩阵中的各个列向量,与校验码元对应的单位矩阵中的各个列向量均不相等。

在一个示例中,以范德蒙矩阵为例,通过行变换来消除中间范德蒙矩阵中引入的预设列向量(1,0,0,0),并且在行变换过程中,校验码元(c0,c1,c2,c3)对应的单位矩阵中的单位列向量并不会进行变化,因此行变换之后的扩展范德蒙矩阵在消除预设列向量(1,0,0,0)之后,扩展范德蒙矩阵中的16列列向量,与单位矩阵中的4列单位列向量各不相等,实现扩展范德蒙矩阵与ecc存在线性无关。

可选的,本申请实施例可通过对中间编码矩阵中的行向量进行处理(编码矩阵中,一行的内容可以形成一个行向量),以实现对中间编码矩阵进行行变换,从而消除中间编码矩阵中的预设列向量。在可选实现中,对中间编码矩阵中的行向量进行处理可以存在以下几种不同的行变换方式:

方式一、将中间编码矩阵中第一行的行向量乘以第一值,相乘结果加到第二行的行向量;可选的,第一值可以是任意值a0;

方式二、将中间编码矩阵中第一行的行向量乘以第二值,相乘结果加到中间编码矩阵中第三行的行向量;可选的,第二值可以是任意值a1,第一值与第二值可以相等也可以不等;

方式三、将中间编码矩阵中第一行的行向量乘以第三值,相乘结果加到中间编码矩阵中第四行的行向量;可选的,第三值可以是任意值a2,第一值、第二值和第三值可以各不相同,也可以存在至少一个值相同;

方式四、同时使用上述方式一和方式二,即将中间编码矩阵中第一行的行向量乘以第一值,相乘结果加到第二行的行向量,并且,将中间编码矩阵中第一行的行向量乘以第二值,相乘结果加到中间编码矩阵中第三行的行向量;

方式五、同时使用上述方式一和方式三,即将中间编码矩阵中第一行的行向量乘以第一值,相乘结果加到第二行的行向量,并且,将中间编码矩阵中第一行的行向量乘以第三值,相乘结果加到中间编码矩阵中第四行的行向量;

方式六、同时使用方式二和方式三,即将中间编码矩阵中第一行的行向量乘以第二值,相乘结果加到中间编码矩阵中第三行的行向量,并且,将中间编码矩阵中第一行的行向量乘以第三值,相乘结果加到中间编码矩阵中第四行的行向量;

方式七、同时使用方式一、方式二和方式三,即将中间编码矩阵中第一行的行向量乘以第一值,相乘结果加到第二行的行向量,并且,将中间编码矩阵中第一行的行向量乘以第二值,相乘结果加到中间编码矩阵中第三行的行向量,并且,将中间编码矩阵中第一行的行向量乘以第三值,相乘结果加到中间编码矩阵中第四行的行向量。

在可选实现中,本申请实施例在提供上述方式一、方式二和方式三的情况下,可使用方式一、方式二和方式三中的至少一种行变换方式(例如,使用方式一、方式二和方式三中的任意一种、任意两种、或者三种),以实现对中间编码矩阵中的行向量进行处理。需要说明的是,上述提供的对中间编码矩阵中的行向量进行处理的方式,仅是可选实现;只要能够对中间编码矩阵中的行向量进行变化,使得变化后得到的扩展编码矩阵能够消除预设列向量的方式,本申请实施例均支持使用。

可以理解的是,采用不同的行变换方式,则最终得到的扩展编码矩阵的形式各不相同,因此本申请实施例并不设限扩展编码矩阵的最终形式,只要保障扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且扩展编码矩阵中的列向量,与校验码元对应的单位矩阵中的单位列向量不同即可。

在得到扩展编码矩阵后,作为可选实现,本申请实施例可在数据需写入内存时,利用扩展编码矩阵对数据对应的数据码元进行编码,从而得到校验码元;校验码元与数据码元可作为编码结果,写入到内存中。可选的,图4示例性的示出了本申请实施例提供的数据编码方法的可选流程图,该流程可由内存控制器执行实现,例如由内存控制器中的编码模块执行实现。参照图4,该流程可以包括如下步骤。

在步骤S410,确定待写入内存的数据,并将数据映射为对应的多个数据码元。

可选的,在向内存写数据的情况下,内存控制器可获取到数据写请求,数据写请求中携带有待写入内存的数据,以及数据在内存的写地址。本申请实施例可从数据写请求中获取待写入内存的数据,并将数据映射为用于数据编码的多个数据码元,例如待写入内存的数据可映射为16个数据码元d

在步骤S411中,根据扩展编码矩阵,对多个数据码元进行编码,得到多个校验码元。

在本申请实施例中,扩展编码矩阵可基于标准编码矩阵变形得到,标准编码矩阵在目标数据大小的码元下,存在相同列向量;而扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同。扩展编码矩阵的得到方式可参照前文相应部分的描述,此处不再赘述。

在可选实现中,本申请实施例可使用扩展编码矩阵,乘以多个数据码元,从而得到多个校验码元。需要说明的是,本申请实施例所提及的乘法、加法等运算均为有限域运算。在一个示例中,以扩展范德蒙矩阵为例,扩展范德蒙矩阵为4行16列的矩阵,具有16个列向量;待写入内存的数据映射为16个数据码元d

在步骤S412中,将多个数据码元和多个校验码元作为编码结果,写入内存;其中,多个校验码元用于在从内存读取编码结果时,对编码结果进行纠错。

在基于扩展编码矩阵得到多个校验码元后,待写入内存的数据所映射的多个数据码元与得到的多个校验码元,可作为本次的编码结果,从而可将编码结果写入内存(例如基于数据写请求携带的写地址,将编码结果写入内存),以实现在内存写入数据。由于电磁等环境干扰以及内存自身的结构特性,编码结果写入内存后可能会出现数据错误,从而编码结果中的多个校验码元可用于在从内存读取编码结果时,对编码结果进行纠错。

本申请实施例提供的数据编码方法包括:确定待写入内存的数据,并将所述数据映射为对应的多个数据码元;根据扩展编码矩阵,对所述多个数据码元进行编码,得到多个校验码元;其中,所述扩展编码矩阵基于标准编码矩阵变形得到,所述标准编码矩阵在目标数据大小的码元下,存在相同列向量;所述扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且所述扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同;在得到所述多个校验码元后,本申请实施例可将所述多个数据码元和所述多个校验码元作为编码结果,写入内存;其中,所述多个校验码元用于在从内存读取所述编码结果时,对所述编码结果进行纠错。

由于本申请实施例的校验码元是基于扩展编码矩阵得到,而扩展编码矩阵在目标数据大小的码元下,不存在相同列向量,并且扩展编码矩阵中的列向量与校验码元对应的单位矩阵中的单位列向量不同;因此相比于标准编码矩阵,本申请实施例的扩展编码矩阵能够为数据码元提供全面的纠错支持,从而基于扩展编码矩阵所生成的校验码元对于数据码元的覆盖度得以提升(比如校验码元能够完全覆盖数据码元),进而能够为提升纠错算法所能纠错的symbol数量提供支持(例如纠错算法能够纠正两个symbol的数据错误)。因此本申请实施例提供的数据编码方法,能够基于扩展编码矩阵,提升校验码元对于数据码元的覆盖度,为提升纠错算法所能纠错的symbol数量提供支持,进而提升了纠错算法的纠错能力。

基于本申请实施例提供的数据编码方法,本申请实施例提供相应的数据解码方法,在从内存读取编码结果后,本申请实施例提供的数据解码方法可对编码结果进行解码,从而得到作为纠错算法输入的第一伴随式和第二伴随式,以便于纠错算法检查从内存读取的编码结果是否存在数据错误,并对数据错误进行纠正(包括对编码结果中的数据码元和校验码元的纠错)。可选的,图5A示例性的示出了本申请实施例提供的数据解码方法的可选流程图,该流程可由内存控制器执行实现,例如由内存控制器中的解码模块执行实现。参照图5A,该流程可以包括如下步骤。

在步骤S510中,从内存读取编码结果,编码结果包括多个数据码元和多个校验码元。

从内存读取的编码结果可基于本申请实施例提供的数据编码方法得到。由于电磁等环境干扰以及内存自身的结构特性,编码结果写入内存后可能会出现数据错误,因此从内存读取的编码结果与写入内存时的编码结果可能不同,比如内存读取的编码结果中的数据码元与校验码元,可能与写入内存时的数据码元与校验码元不同。基于此,本申请实施例在数据解码阶段,可基于从内存读取的编码结果,构造作为纠错算法输入的伴随式,以对从内存读取的编码结果进行检错和纠错。

在可选实现中,内存控制器可通过DDR channel,从内存读取两笔数据传输,从而读取到包含多个数据码元和多个校验码元的编码结果。例如,以码元的数据大小为4bit为例,则通过DDR channel可读取两笔数据传输,共计80bit,包括16个数据码元d

在可选实现中,在从内存读取数据的情况下,内存控制器可获取数据读请求,数据读请求中携带有读地址;本申请实施例可根据读地址,从内存读取到编码结果。

在步骤S511中,根据扩展编码矩阵,以及读取的多个数据码元和多个校验码元,确定第一伴随式。

在从内存读取到编码结果后,本申请实施例可利用扩展编码矩阵,对读取的编码结果中的多个数据码元和多个校验码元进行处理,从而得到第一伴随式。伴随式可以具有4个伴随参数,在一个示例中,本申请实施例可将第一伴随式定义为(s0’,s1’,s2’,s3’)。

可选的,本申请实施例可将扩展编码矩阵,与读取的多个数据码元进行相乘,相乘结果与读取的多个校验码元以及校验码元对应的单位矩阵进行异或处理,从而得到第一伴随式。例如,本申请实施例可将扩展范德蒙矩阵,与读取的16个数据码元相乘,相乘结果与读取的4个校验码元以及校验码元对应的单位矩阵进行异或,从而得到第一伴随式(s0’,s1’,s2’,s3’)。在一个示例性中,图5B示例性的示出了基于范德蒙矩阵得到第一伴随式的示例图,可进行参照。

在步骤S512中,根据第一伴随式以及扩展编码矩阵的得到方式,确定第二伴随式;其中,第一伴随式和第二伴随式作为解码结果,解码结果作为纠错算法的输入,用于对读取的编码结果进行纠错。

在得到第一伴随式(s0’,s1’,s2’,s3’)后,本申请实施例可根据扩展编码矩阵的得到方式,确定用于得到第二伴随式的运算方式,从而利用所确定的运算方式,对第一伴随式进行运算,以得到第二伴随式。在可选实现,本申请实施例可基于得到扩展编码矩阵所使用的行变换方式,确定用于得到第二伴随式的运算方式,从而利用所确定的运算方式,对第一伴随式进行运算,以得到第二伴随式。

在一个实现示例中,基于前文描述的方式一至方式七的行变换方式,在使用方式一至方式七中的不同行变换方式来得到扩展编码矩阵时,得到第二伴随式的运算方式可相应的调整变化。下面以方式一至方式七的行变换方式为例,说明在方式一至方式七的各种行变换方式下,基于第一伴随式运算得到第二伴随式的示例内容。为便于说明,本申请实施例将第二伴随式定义为(s0,s1,s2,s3)。

运算方式一,对应使用方式一的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’+a0*s0’,s2’,s3’);也就是说,将第一伴随式中的第一伴随参数s0’、第三伴随参数s2’和第四伴随参数s3’维持不变,将第一伴随式中的第一伴随参数s0’与第一值a0相乘,相乘结果与第一伴随式中的第二伴随参数s1’相加,从而对第二伴随式中的第二伴随参数s1进行调整,以得到第二伴随式(s0,s1,s2,s3);

运算方式二,对应使用方式二的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’,s2’+a1*s0’,s3’);也就是说,第一伴随式中的第一伴随参数s0’、第二伴随参数s1’和第四伴随参数s3’维持不变,将第一伴随式中的第一伴随参数s0’与第二值a1相乘,相乘结果与第一伴随式中的第三伴随参数s2’相加,从而对第二伴随式中的第三伴随参数s2进行调整,以得到第二伴随式(s0,s1,s2,s3);

运算方式三,对应使用方式三的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’,s2’,s3’+a2*s0’);也就是说,第一伴随式中的第一伴随参数s0’、第二伴随参数s1’和第三伴随参数s2’维持不变,将第一伴随式中的第一伴随参数s0’与第三值a2相乘,相乘结果与第一伴随式中的第四伴随参数s3’相加,从而对第二伴随式中的第四伴随参数s3进行调整,以得到第二伴随式(s0,s1,s2,s3);

运算方式四,对应使用方式四的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’+a0*s0’,s2’+a1*s0’,s3’);也就是说,运算方式四同时使用运算方式一和运算方式二;

运算方式五,对应使用方式五的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’+a0*s0’,s2’,s3’+a2*s0’);也就是说,运算方式五同时使用运算方式一和运算方式三;

运算方式六,对应使用方式六的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’,s2’+a1*s0’,s3’+a2*s0’);也就是说,运算方式六同时使用运算方式二和运算方式三;

运算方式七,对应使用方式七的行变换方式得到扩展编码矩阵的情况,(s0,s1,s2,s3)=(s0’,s1’+a0*s0’,s2’+a1*s0’,s3’+a2*s0’);也就是说,运算方式七同时使用运算方式一、运算方式二和运算方式三。

可以看出,基于得到扩展编码矩阵所使用的行变换方式为方式一、方式二和方式三中的至少一种行变换方式,本申请实施例可以对应的使用运算方式一、运算方式二和运算方式三中的至少一种(例如使用运算方式一、运算方式二和运算方式三中的任意一种、任意两种或者三种),来对第一伴随式(s0’,s1’,s2’,s3’)进行运算,以得到第二伴随式(s0,s1,s2,s3)。

在得到解码结果后,解码结果可作为纠错算法的输入,以对从内存读取的编码结果进行纠错。作为可选实现,图6示例性的示出了本申请实施例提供的数据纠错方法的可选流程图,该流程可由内存控制器执行实现,例如由内存控制器中的纠错模块执行实现。参照图6,该流程可以包括如下步骤。

在步骤S610中,获取解码结果,所述解码结果包括第一伴随式和第二伴随式。

纠错模块所获取的解码结果可基于本申请实施例提供的数据解码方法得到。纠错模块所获取的解码结果可以包括第一伴随式(s0’,s1’,s2’,s3’)和第二伴随式(s0,s1,s2,s3)。

在步骤S611中,根据第一伴随式和第二伴随式,运行纠错算法,以确定从内存读取的编码结果所对应的纠错结果。

解码结果作为纠错模块的纠错算法的输入,纠错模块在获得解码结果后,可根据解码结果中的第一伴随式和第二伴随式,运行纠错算法,从而确定从内存读取的编码结果对应的纠错结果。可选的,纠错结果可能是从内存读取的编码结果不存在数据错误,此时,从内存读取的编码结果中的数据码元不存在数据错误,本申请实施例可输出从内存读取的数据码元。可选的,纠错结果还可能是从内存读取的编码结果存在数据错误,此时,本申请实施例可输出从内存读取的编码结果中出现数据错误的错误位置(例如出现数据错误的码元位置),以及各错误位置的错误值。基于扩展编码矩阵的支持,本申请实施例可支持对2个symbol的数据错误进行纠正。需要说明的是,码元与symbol(符号)对应,因此在对从内存读取的编码结果进行纠错时,出现数据错误的码元位置和错误值也是出现数据错误的symbol位置和错误值。

可选的,从内存读取的编码结果可基于本申请实施例提供的数据编码方法得到。

作为可选实现,图7示例性的示出了确定纠错结果的可选流程图,图7可以视为是图6所示步骤S611可选实现方式。参照图7,该流程可以包括如下步骤。

在步骤S710中,读取第一伴随式和第二伴随式。

在步骤S711中,判断第一伴随式中的伴随参数是否均为目标值,若是,执行步骤S712,若否,执行步骤S713。

可选的,目标值可以是从内存读取的编码结果不存在数据错误所对应的值(例如从内存读取的数据码元和校验码元均不存在数据错误所对应的值)。在一个实现示例中,目标值可以为0;本申请实施例可判断第一伴随式中的伴随参数是否均为0。

在步骤S712中,输出从内存读取的编码结果中的数据码元。

在第一伴随式中的伴随参数均为目标值时,本申请实施例可确定从内存读取的编码结果不存在数据错误,进而本申请实施例可将从内存读取的编码结果中的数据码元进行输出,以实现将内存读取的数据进行输出。例如,将数据码元输出至处理器等要求读取数据的器件。

在步骤S713中,判断第一伴随式中值为目标值的伴随参数的数量,是否达到预设数量,若是,执行步骤S712,若否,执行步骤S714。

第一伴随式中值为目标值的伴随参数的数量,达到预设数量,则说明从内存读取的编码结果虽然存在数据错误,但数据错误发生在一个校验码元处,而数据码元并未发生数据错误,因此本申请实施例可允许输出从内存读取的编码结果中的数据码元。可选的,预设数量可以为第一伴随式中的伴随参数的总数量减一;例如,预设数量为3,本申请实施例可判断第一伴随式中值为0的伴随参数的数量,是否达到3。

在步骤S714中,利用多种纠错运算,对第二伴随式进行纠错处理,得到各种纠错运算的纠错输出。

可选的,当第一伴随式中的伴随参数均不为目标值,并且值为目标值的伴随参数的数量未达到预设数量,则说明从内存读取的编码结果中存在数据码元出现数据错误(出现数据错误的可能均是数据码元,也可能是数据码元和校验码元出现数据错误),此时本申请实施例需利用多种纠错运算,来对第二伴随式进行纠错处理,并得到各种纠错运算的纠错输出。例如,在第一伴随式(s0’,s1’,s2’,s3’)中的伴随参数均不为0,并且值为0的伴随参数的数量未达到3个时,本申请实施例可利用多种纠错运算,对第二伴随式(s0,s1,s2,s3)进行纠错处理,从而得到各种纠错运算的纠错输出。

在可选实现中,本申请实施例可利用以下5种纠错运算中的至少两种,对第二伴随式进行纠错处理;在一个示例中,以下5种纠错运算均可用于对第二伴随式进行纠错处理。

双数据纠错运算(2data error correction);

数据与ecc1纠错运算(data&ecc1 error correction);

数据与ecc2纠错运算(data&ecc2 error correction);

数据与ecc3纠错运算(data&ecc3 error correction);

单数据纠错运算(single dataerror correction)。

可选的,在利用多种纠错运算,对第二伴随式进行纠错处理后,每种纠错算法具有各自的纠错输出,一种纠错算法的纠错输出可以包括以下内容:是否有解,以及有解时对应的发生数据错误的码元位置和错误值;纠错算法输出有解则视为纠错算法能够求解得到发生数据错误的码元位置和错误值,纠错算法输出无解则视为纠错算法无法求解得到发生数据错误的码元位置和错误值。

在步骤S715中,结合各种纠错运算的纠错输出,确定从内存读取的编码结果中出现数据错误的码元位置和错误值。

可选的,基于多种纠错算法的纠错输出,如果多种纠错算法中只有一种纠错算法输出有解,则本申请实施例可确定该纠错算法输出的发生数据错误的码元位置和错误值,为从内存读取的编码结果中出现数据错误的码元位置和错误值。

可选的,如果多种纠错算法中存在多于一种纠错算法输出有解,则本申请实施例可视为数据错误无解,此时本申请实施例可确定从内存读取的编码结果出现数据错误不可纠正的情况,本申请实施例可不输出任何错误位置和错误值,并且不输出数据码元。在一个示例中,假设使用双数据纠错运算以及数据与ecc1纠错运算,对第二伴随式进行纠错处理;如果双数据纠错运算以及数据与ecc1纠错运算均输出有解,并且输出了发生数据错误的错误位置(双数据纠错运算以及数据与ecc1纠错运算输出的错误位置可能不同),则本申请实施例可视为编码结果出现的数据错误为无解,不可纠正。

在步骤S716中,根据出现数据错误的码元位置和错误值,对从内存读取的编码结果中出现数据错误的码元进行数据错误纠正,得到纠正数据错误的编码结果,并输出纠正数据错误后的编码结果中的数据码元。

当多种纠错算法的纠错输出中,仅有一种纠错算法输出有解时,本申请实施例可将该纠错算法输出的出现数据错误的码元位置和错误值,作为从内存读取的编码结果中出现数据错误的码元位置和错误值;进而,根据该纠错算法输出的出现数据错误的码元位置和错误值,本申请实施例可对从内存读取的编码结果中出现数据错误的码元进行数据错误纠正,得到纠正数据错误的编码结果,并输出纠正数据错误后的编码结果中的数据码元,以使得准确的数据码元可输出至要求读取数据的处理器等器件。

在对从内存读取的编码结果中出现数据错误的码元进行数据错误纠正时,基于本申请实施例的扩展编码矩阵的支持,本申请实施例可支持对2个码元的数据错误进行纠正,例如,支持对2个码元的数据错误进行纠正,当然,也可支持对1个码元的数据错误进行纠正。

以4bit的码元为例,基于扩展范德蒙矩阵的支持,本申请实施例能够在64bit的数据码元(对应16个数据码元)和16bit的校验码元(对应4个校验码元)中,纠正任意2个码元错误,从而解决两个symbol(符号)位置出错的情况。相比于经典RS码方案,经典RS码方案支持在44bit的数据码元和16bit的校验码元中纠正任意2个码元的错误,而本申请实施例在纠正2个码元的错误的情况下,能够相比于经典RS码方案,支持对更多数据量的数据码元进行纠错。相比于标准范德蒙矩阵的方案,由于标准范德蒙矩阵受有限域下欧拉定理的限制,最多支持对60bit的数据码元进行纠错,而无法覆盖另外一个4bit的数据码元;因此本申请实施例提供方案,相比于标准范德蒙矩阵的方案,能够支持对64bit的数据码元提供完整的纠错能力覆盖,解决两个symbol(符号)位置出错的情况,从而提升纠错算法的纠错能力。另外需要说明的是,在适应于DDR5标准的位宽的情况下,本申请实施例能够在DDR5内存出现2个device(内存颗粒)出错的情况时,将原本的不可纠正错误调整为可纠正错误,从而将内存出错的两个device的数据进行错误纠正;一个device与一个symbol相对应。

在进一步的可选实现中,下面以上文提及的5种纠错运算为例,对使用纠错运算对第二伴随式进行纠错处理的可选实现进行介绍。在可选实现中,内存控制器中的纠错模块,可分别设置各种纠错运算对应的纠错运算单元,以实现利用各种纠错运算,对第二伴随式进行纠错处理。

(1)双数据纠错运算

根据第二伴随式(s0,s1,s2,s3)计算第一参数a、第二参数b和第三参数c;可选的,第一参数a、第二参数b和第三参数c的计算公式可以例如:

a=s1

根据第一参数a、第二参数b和第三参数c,构造有限域下的二次方程ax

基于上述的二次方程,若a为0,则视为双数据纠错运算无解,即双数据纠错运算输出不存在数据错误;

若a不为0,则令y=ax/b,u=ac/b

针对转换后的方程,可对方程y

如果方程有解,本申请实施例可通过异或运算得到方程的解y与y’;进而根据构造扩展范德蒙矩阵时,行变换使用的方式一,来计算第一错误位置x,和第二错误位置x’;第一错误位置x可以视为是第一个出错的数据码元的错误位置,第二错误位置x’可以视为是第二个出错的数据码元的错误位置;第一个错误位置x和第二个错误位置x’的计算可以采用以下方案中的任一种:

方案(11),x=log(y*b/a),x’=log(y’*b/a);

方案(12),x=y*b/a,x’=y’*b/a;

基于计算第一个错误位置x和第二个错误位置x’使用的不同方案,计算第一个错误位置x的错误值e

使用方案(11)计算x和x’时,e

使用方案(12)计算x和x’时,e

(2)数据与ecc1纠错运算

假设ecc1的值错误(ecc1与第二个校验码元c1对应,即假设第二个校验码元c1出错),则可使用以下方案确定发生数据错误的错误位置和错误值;

方案(21),基于第二伴随式(s0,s1,s2,s3),若s3/s2=2

方案(22),第二伴随式(s0,s1,s2,s3),若s3/s2=x,且s2/s0=x

(3)数据与ecc2纠错运算

假设ecc2的值错误(ecc2与第三个校验码元c2对应,即假设第三个校验码元c2出错),则使用以下方案确定发生数据错误的错误位置和错误值;

方案(31),基于第二伴随式(s0,s1,s2,s3),若s1/s0=2

方案(32),基于第二伴随式(s0,s1,s2,s3),若s1/s0=x,且s3/s1=x

(4)数据与ecc3纠错运算

假设ecc3的值错误(ecc3与第四个校验码元c3对应,即假设第四个校验码元c3出错),则使用以下方案确定发生数据错误的错误位置和错误值;

方案(41),基于第二伴随式(s0,s1,s2,s3),若s1/s0=s2/s1=2

方案(42),基于第二伴随式(s0,s1,s2,s3),若s1/s0=s2/s1=x,则错误位置分别为x与ecc3,x的错误值为s0,ecc3的错误值为(s2*x⊕s3)。

(5)单数据纠错运算

使用单数据纠错运算进行纠错运算时,可使用以下方案确定发生数据错误的错误位置和错误值;

方案(51),基于第二伴随式(s0,s1,s2,s3),若s3/s2=s2/s1=s1/s0=2

方案(52),基于第二伴随式(s0,s1,s2,s3),若s3/s2=s2/s1=s1/s0=x,则错误位置为x,错误值为s0。

在使用单数据纠错运算时,单数据纠错运算负责输出单个数据码元的错误位置和错误值,而单个校验码元的纠错由步骤S713进行确定;例如,在第一伴随式中值为目标值的伴随参数的数量,达到预设数量时,数据错误发生在一个校验码元之处。

可以看出,在多种纠错运算时,如果仅有双数据纠错运算输出有解,则本申请实施例可纠正两个数据码元的数据错误,例如纠正错误位置x和x’的数据错误。

如果仅有数据与ecc1纠错运算输出有解,则本申请实施例可纠正一个数据码元的数据错误,以及校验码元c1的数据错误,例如纠正错误位置x和校验码元c1的数据错误。

如果仅有数据与ecc2纠错运算输出有解,则本申请实施例可纠正一个数据码元的数据错误,以及校验码元c2的数据错误,例如纠正错误位置x和校验码元c2的数据错误。

如果仅有数据与ecc3纠错运算输出有解,则本申请实施例可纠正一个数据码元的数据错误,以及校验码元c3的数据错误,例如纠正错误位置x和校验码元c3是数据错误。

如果仅有单数据纠错运算输出有解,则本申请实施例可纠正一个数据码元的数据错误。

也就是说,上述5种纠错运算了覆盖了16个数据码元和3个校验码元(c1,c2,c3),因此在16个数据码元和4个校验码元的20个码元中,两个码元出现错误的情况,本申请实施例能够大部分的覆盖。例如,以码元为4bit为例,在扩展范德蒙矩阵的支持下,本申请实施例可以实现在64bit的16个数据码元,与16bit的4个校验码元中,同时纠正两个码元的错误;若只有一个4bit的码元出错,本申请实施例也可支持实现错误纠正,而无需要更换算法。本申请实施例能够提高纠错算法的纠错能力,增强内存可靠性。

在具体实践中,以码元为4bit为例,基于扩展范德蒙矩阵,本申请实施例能够在64bit的数据码元和16bit的校验码元中纠正任意1或2个码元的数据错误。当只有一个码元位置出错时,使用扩展范德蒙矩阵纠正的正确率达到100%,并且,本申请实施例可解决在两个位置的码元出错时,发生UE报告的问题,实现对两个位置的码元出错进行纠正。

进一步的,本申请实施例可利用编码矩阵的特性,在解码过程中生成两组伴随式,并在纠错过程中分步判断错误类型;进而利用有限域下二次方程特性,快速判断错误数量,并且可以判断出错位置是否包含校验码元,提高纠正错误的概率。另外,若ecc颗粒的正确性得到保证,使用扩展范德蒙矩阵纠正两个随机的数据码元错误的正确率可以达到100%。

值得注意的是,本发明所使用的扩展范德蒙矩阵等扩展编码矩阵并不唯一,通过对编码矩阵进行镜像变换、交换行列等变换,仍能使得编码矩阵中各个列向量不相等,仍然可以用于纠错;因此本申请实施例使用的扩展范德蒙矩阵等扩展编码矩阵的形式存在多种可能的情况,本申请实施例对此并不设限。

扩展范德蒙矩阵等扩展编码矩阵并不局限于码元为4bit的情况,标准范德蒙矩阵在GF(2

本申请实施例还提供一种内存控制器,结合图1所示,该内存控制器可以包括编码模块、解码模块和纠错模块;其中,编码模块用于执行本申请实施例提供的数据编码方法,解码模块用于执行本申请实施例提供的数据解码方法,纠错模块用于执行本申请实施例提供的数据纠错方法。本申请实施例提供的数据编码方法、数据解码方法和数据纠错方法的内容,可参照前文相应部分的描述;相应的,编码模块、解码模块和纠错模块的功能也可参照前文相应部分的描述。

本申请实施例还提供一种芯片,包括本申请实施例提供的内存控制器。

本申请实施例还提供一种电子设备,例如终端设备或者服务器设备,该电子设备可以包括本申请实施例提供的芯片。

上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。

虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

相关技术
  • 智能公交电子站牌展示方法、系统及智能公交电子站牌
  • 一种实现智能公交站牌的方法、系统以及智能公交站牌
技术分类

06120116380408