解码方法及储存控制器与流程

文档序号:19009966发布日期:2019-10-30 00:14阅读:176来源:国知局
本发明涉及一种解码技术,尤其涉及低密度奇偶校验码的比特翻转算法的一种解码方法及储存控制器。
背景技术
::数码相机、移动电话与mp3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快速存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。一般来说,为了确保可复写式非易失性存储器模块所储存的数据的正确性,在将某一数据储存至可复写式非易失性存储器模块之前,此数据会先被编码。编码后的数据(包含原始数据与错误更正码)会被储存至可复写式非易失性存储器模块中。往后,编码后的数据可被从可复写式非易失性存储器模块中读取并且被解码,以更正其中可能存在的错误。以往错误更正码多使用代数解码算法,如(bchcode),而目前机率解码算法,如低密度奇偶校验码(lowdensityparitycode,以下也称为ldpc),则逐渐成熟。ldpc码通常是经由一个奇偶校验矩阵(parity-checkmatrix)来执行解码操作。图4为根据传统作法所示出的解码操作的时间轴示意图。请参照图4,假设目前对一个码字来执行解码操作,所述码字的多个数据比特值可被划分为多个数据比特值组g1~gn。每个解码操作可包括初始的校验子运算操作加上后续的一或多轮的迭代操作。更详细来说,在初始的校验子运算中,会对依次(依照数据比特值组g1~gn的顺序)对每个数据比特值组来执行校验子运算操作以获得对应的暂态校验子(如,从运算周期“1”开始执行的校验子运算操作s[g1]至s[gn]),以获得最终校验子,进而根据最终校验子来判断是否解码成功。其中,对每个数据比特值组所执行的校验子运算操作会耗费一个运算周期。例如,对n个数据比特值组g1~gn所执行的n个校验子运算操作,共需要耗费n个运算周期能完成所有的校验子运算操作。所述n为数据比特值组的总数目。若成功(即,若判定所述码字为正确的),结束整个解码操作;若失败(即,若判定所述码字为错误的),执行第一轮迭代操作。以第一轮迭代操作为例,一开始会先依次对数据比特值组g1~gn执行错误函数运算操作(如,从运算周期“n+1”开始执行的错误函数运算操作e[g1]至e[gn])。其中,对每个数据比特值组所执行的错误函数运算操作会耗费一个运算周期。在完成对于第一个数据比特值组的错误函数运算后,会开始依次对数据比特值组g1~gn执行极值搜索操作(如,从运算周期“n+2”开始执行的极值搜索操作m[g1]至m[gn])。其中,对每个数据比特值组所执行的极值搜索操作会耗费一个运算周期。接着,在所有极值搜索操作m[g1]~m[gn]完成后,会依次对每个数据比特值组g1~gn来执行比特翻转操作(如,从运算周期“2n+2”开始执行的翻转操作f[g1]至f[gn])。其中,对每个数据比特值组所执行的比特翻转操作会耗费一个运算周期。最后,在完成对于第一个数据比特值组的比特翻转后,会依次对翻转后的该数据比特值组来执行校验子运算操作以获得对应的暂态校验子(如,从运算周期“2n+3”开始执行的校验子运算操作s[g1]至s[gn]),以获得最终校验子,进而根据最终校验子来判断本次的迭代操作是否解码成功。然而,在上述的传统作法的每一轮迭代操作中,有时候,会因为需要等待前一个操作的完成才能进行下一个操作。因此,迭代操作的整体时程会显得过于冗长。基此,如何缩短迭代操作的整体时程,以降低解码操作的整体时程,进而提升ldpc解码器的效能,为此领域技术人员所关心的议题。技术实现要素:本发明提供适用于低密度奇偶校验解码器的一种解码方法及储存控制器,可缩短解码操作的整体时程,以提升低密度奇偶校验解码操作的效能。本发明的一实施例提供适用于低密度奇偶校验解码的一种解码方法。所述方法包括接收一码字,并且将所述码字的多个数据比特分组为多个数据比特值组,并且对所述多个数据比特值组执行一解码操作。所述解码操作包括下列步骤;(1)利用一奇偶校验矩阵的多个奇偶校验子矩阵依次对所述多个数据比特值组执行分别执行多个校验子运算操作,以获得分别对应所述多个数据比特值组的多个暂态校验子,并且在获得所有分别对应所述多个数据比特值组的所述多个暂态校验子后,执行步骤(2);(2)根据最新获得的所述多个暂态校验子判断所述码字是否为正确或错误,其中若判定所述码字为正确,完成所述解码操作并且输出所述多个数据比特,其中若判定所述码字为错误,接续至步骤(3)以开始执行新的一次的迭代操作;(3)根据所述多个暂态校验子依次执行多个错误函数运算,以依次获得分别对应所述多个数据比特值组的多个错误值组,其中反应于获得第一个错误值组,开始同时执行步骤(4)与步骤(5);(4)依次对所述多个错误值组执行多个极值搜索操作以从所述多个错误值组的所有错误值中识别一目标极值,并且根据所述目标极值设定用于下次的迭代操作的一错误门槛值;(5)根据用于当前的迭代操作的一错误门槛值与所述多个错误值组来依次对所述多个数据比特值组分别执行多个比特翻转操作以更新所述多个数据比特值组,其中若当前的迭代操作是第一次的迭代操作,所述用于当前的迭代操作的所述错误门槛值为一预定错误门槛值,其中若当前的迭代操作不是所述第一次的迭代操作,所述用于当前的迭代操作的所述错误门槛值为于前次的迭代操作中所识别的错误门槛值,其中反应于完成第一个比特翻转操作,同时执行步骤(6);以及(6)利用所述多个奇偶校验子矩阵依次对已更新的所述多个数据比特值组分别执行多个校验子运算操作,以获得分别对应所述已更新的所述多个数据比特值组的多个暂态校验子,其中反应于获得所有分别对应所述已更新的所述多个数据比特值组的所述多个暂态校验子,完成当前的迭代操作并且执行步骤(2),其中每一次的迭代操作包括上述步骤(2)~(6),其中于当前的迭代操作所获得的所述已更新的所述多个数据比特值组、对应的所述多个暂态校验子与所述错误门槛值被用于下次的迭代操作。本发明的一实施例提供用于控制配置有一可复写式非易失性存储器模块的存储装置的储存控制器。所述储存控制器包括存储器接口控制电路、错误校验与校正电路与处理器。存储器接口控制电路用以电性连接至所述可复写式非易失性存储器模块。处理器电性连接至所述错误校验与校正电路及所述存储器接口控制电路,其中所述存储器接口控制电路传送读取自所述可复写式非易失性存储器模块的一码字至所述错误校验与校正电路。所述错误校验与校正电路用以接收所述码字,并且将所述码字的多个数据比特分组为多个数据比特值组,并且对所述多个数据比特值组执行一解码操作。在所执行的所述解码操作中,所述错误校验与校正电路用以执行下列运作:(1)所述错误校验与校正电路用以利用一奇偶校验矩阵的多个奇偶校验子矩阵依次对所述多个数据比特值组执行分别执行多个校验子运算操作,以获得分别对应所述多个数据比特值组的多个暂态校验子,并且在获得所有分别对应所述多个数据比特值组的所述多个暂态校验子后,执行步骤(2);(2)所述错误校验与校正电路用以根据最新获得的所述多个暂态校验子判断所述码字是否为正确或错误,其中若判定所述码字为正确,完成所述解码操作并且输出所述多个数据比特,其中若判定所述码字为错误,接续至步骤(3)以开始执行新的一次的迭代操作;(3)所述错误校验与校正电路用以根据所述多个暂态校验子依次执行多个错误函数运算,以依次获得分别对应所述多个数据比特值组的多个错误值组,其中反应于获得第一个错误值组,开始同时执行步骤(4)与步骤(5);(4)所述错误校验与校正电路用以依次对所述多个错误值组执行多个极值搜索操作以从所述多个错误值组的所有错误值中识别一目标极值,并且根据所述目标极值设定用于下次的迭代操作的一错误门槛值;(5)所述错误校验与校正电路用以根据用于当前的迭代操作的一错误门槛值与所述多个错误值组来依次对所述多个数据比特值组分别执行多个比特翻转操作以更新所述多个数据比特值组,其中若当前的迭代操作是第一次的迭代操作,所述用于当前的迭代操作的所述错误门槛值为一预定错误门槛值,其中若当前的迭代操作不是所述第一次的迭代操作,所述用于当前的迭代操作的所述错误门槛值为于前次的迭代操作中所识别的错误门槛值,其中反应于完成第一个比特翻转操作,同时执行步骤(6);以及(6)所述错误校验与校正电路用以利用所述多个奇偶校验子矩阵依次对已更新的所述多个数据比特值组分别执行多个校验子运算操作,以获得分别对应所述已更新的所述多个数据比特值组的多个暂态校验子,其中反应于获得所有分别对应所述已更新的所述多个数据比特值组的所述多个暂态校验子,所述错误校验与校正电路用以完成当前的迭代操作并且执行步骤(2),其中每一次的迭代操作包括上述步骤(2)~(6),其中于当前的迭代操作所获得的所述已更新的所述多个数据比特值组、对应的所述多个暂态校验子与所述错误门槛值被用于下次的迭代操作。基于上述,本发明的实施例所提供的解码方法与储存控制器,可不需要等待所有极值搜索操作的完成而在执行极值搜索操作的同时,也执行全部的比特翻转操作,以缩短了每次所执行的迭代操作的整体时程,进而增进解码的效率且增强了工作效率。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。附图说明图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。图2是根据本发明的一实施例所示出的解码管理电路的方块示意图。图3是根据本发明的一实施例所示出的解码方法的流程图。图4为根据传统作法所示出的解码操作的时间轴示意图。图5为根据本发明的一实施例所示出的解码操作的时间轴示意图。【符号说明】10:主机系统20:存储装置110、211:处理器120:主机存储器130:数据传输接口电路210:储存控制器212:数据管理电路213:存储器接口控制电路214:错误校验与校正电路2141:解码管理电路2142:编码管理电路216:缓冲存储器217:电源管理电路220:可复写式非易失性存储器模块230:连接接口电路301:解码控制器302:校验子运算电路303:错误函数运算电路304:极值搜索电路305:终止电路306:比特翻转电路s31、s32、s321~s326、s33:解码方法的流程步骤1~3n+4:运算周期s[g1]~s[gn]:校验子运算操作e[g1]~e[gn]:错误函数运算操作m[g1]~m[gn]:极值搜索操作f[g1]~f[gn]:比特翻转操作具体实施方式在本实施例中,存储装置包括可复写式非易失性存储器模块(rewritablenon-volatilememorymodule)与存储装置控制器(也称,储存控制器或储存控制电路)。此外,存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储装置或从存储装置中读取数据。图1是根据本发明的一实施例所示出的主机系统及存储装置的方块示意图。请参照图1,主机系统(hostsystem)10包括处理器(processor)110、主机存储器(hostmemory)120及数据传输接口电路(datatransferinterfacecircuit)130。在本实施例中,数据传输接口电路130电性连接(也称,电性连接)至处理器110与主机存储器120。在另一实施例中,处理器110、主机存储器120与数据传输接口电路130之间利用系统总线(systembus)彼此电性连接。存储装置20包括储存控制器(storagecontroller)210、可复写式非易失性存储器模块(rewritablenon-volatilememorymodule)220及连接接口电路(connectioninterfacecircuit)230。其中,储存控制器210包括处理器211、数据管理电路(datamanagementcircuit)212与存储器接口控制电路(memoryinterfacecontrolcircuit)213。在本实施例中,主机系统10是通过数据传输接口电路130与存储装置20的连接接口电路230电性连接至存储装置20来进行数据的存取操作。例如,主机系统10可经由数据传输接口电路130将数据储存至存储装置20或从存储装置20中读取数据。在本实施例中,处理器110、主机存储器120及数据传输接口电路130可设置在主机系统10的主机板上。数据传输接口电路130的数目可以是一或多个。通过数据传输接口电路130,主机板可以经由有线或无线方式电性连接至存储装置20。存储装置20可例如是u盘、存储卡、固态硬盘(solidstatedrive,ssd)或无线存储器存储装置。无线存储器存储装置可例如是近距离无线通讯(nearfieldcommunication,nfc)存储器存储装置、无线传真(wifi)存储器存储装置、蓝牙(bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,ibeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板也可以通过系统总线电性连接至全球定位系统(globalpositioningsystem,gps)模块、网络接口卡、无线传输装置、键盘、屏幕、喇叭等各式i/o装置。在本实施例中,数据传输接口电路130与连接接口电路230是相容于高速周边零件连接接口(peripheralcomponentinterconnectexpress,pciexpress)标准的接口电路。并且,数据传输接口电路130与连接接口电路230之间是利用快速非易失性存储器接口标准(non-volatilememoryexpress,nvme)通讯协议来进行数据的传输。然而,必须了解的是,本发明不限于此,数据传输接口电路130与连接接口电路230也可以是符合并行高级附件(paralleladvancedtechnologyattachment,pata)标准、电气和电子工程师协会(instituteofelectricalandelectronicengineers,ieee)1394标准、串行高级附件(serialadvancedtechnologyattachment,sata)标准、通用串行总线(universalserialbus,usb)标准、sd接口标准、超高速一代(ultrahighspeed-i,uhs-i)接口标准、超高速二代(ultrahighspeed-ii,uhs-ii)接口标准、记忆棒(memorystick,ms)接口标准、多芯片封装(multi-chippackage)接口标准、多媒体储存卡(multimediacard,mmc)接口标准、emmc接口标准、通用快速存储器(universalflashstorage,ufs)接口标准、emcp接口标准、cf接口标准、集成式驱动电子接口(integrateddeviceelectronics,ide)标准或其他适合的标准。此外,在另一实施例中,连接接口电路230可与储存控制器210封装在一个芯片中,或者连接接口电路230是布设于一包含储存控制器210的芯片外。在本实施例中,主机存储器120用以暂存处理器110所执行的指令或数据。例如,在本范例实施例中,主机存储器120可以是动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)等。然而,必须了解的是,本发明不限于此,主机存储器120也可以是其他适合的存储器。储存控制器210用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令并且根据主机系统10的指令在可复写式非易失性存储器模块220中进行数据的写入、读取与抹除等运作。更详细来说,储存控制器210中的处理器211为具备运算能力的硬件,其用以控制储存控制器210的整体运作。具体来说,处理器211具有多个控制指令,并且在存储装置20运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。值得一提的是,在本实施例中,处理器110与处理器211例如是中央处理单元(centralprocessingunit,cpu)、微处理器(micro-processor)、或是其他可程序程序化的处理单元(microprocessor)、数码信号处理器(digitalsignalprocessor,dsp)、可程序化控制器、特殊应用积体电路(applicationspecificintegratedcircuits,asic)、可程序化逻辑装置(programmablelogicdevice,pld)或其他类似电路元件,本发明并不限于此。在一实施例中,储存控制器210还具有只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有开机码(bootcode),并且当储存控制器210被致能时,处理器211会先执行此开机码来将储存于可复写式非易失性存储器模块220中的控制指令载入至储存控制器210的随机存取存储器中。之后,处理器211会运转此些控制指令以进行数据的写入、读取与抹除等运作。在另一实施例中,处理器211的控制指令也可以程序码型式储存于可复写式非易失性存储器模块220的特定区域,例如,可复写式非易失性存储器模块220中专用于存放系统数据的物理储存单元中。在本实施例中,如上所述,储存控制器210还包括数据管理电路212与存储器接口控制电路213。应注意的是,储存控制器220各部件所执行的操作也可视为储存控制器220所执行的操作。其中,数据管理电路212电性连接至处理器211、存储器接口控制电路213与连接接口电路230。数据管理电路212用以接受处理器211的指示来进行数据的传输。例如,经由连接接口电路230从主机系统10(如,主机存储器120)读取数据,并且将所读取的数据经由存储器接口控制电路213写入至可复写式非易失性存储器模块220中(如,根据来自主机系统10的写入指令来进行写入操作)。又例如,经由存储器接口控制电路213从可复写式非易失性存储器模块220的一或多个物理单元中读取数据(数据可读取自一或多个物理单元中的一或多个记忆胞),并且将所读取的数据经由连接接口电路230写入至主机系统10(如,主机存储器120)中(如,根据来自主机系统10的读取指令来进行读取操作)。在另一实施例中,数据管理电路212也可集成至处理器211中。存储器接口控制电路213用以接受处理器211的指示,配合数据管理电路212来进行对于可复写式非易失性存储器模块220的写入(也称,程序化,programming)操作、读取操作或抹除操作。举例来说,处理器211可执行写入指令序列,以指示存储器接口控制电路213将数据写入至可复写式非易失性存储器模块220中;处理器211可执行读取指令序列,以指示存储器接口控制电路213从可复写式非易失性存储器模块220的对应读取指令的一或多个物理单元(也称,目标物理单元)中读取数据;处理器211可执行抹除指令序列,以指示存储器接口控制电路213对可复写式非易失性存储器模块220进行抹除操作。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序码或指令码并且用以指示对可复写式非易失性存储器模块220执行相对应的写入、读取及抹除等操作。在一实施例中,处理器211还可以下达其他类型的指令序列给存储器接口控制电路213,以对可复写式非易失性存储器模块220执行相对应的操作。此外,欲写入至可复写式非易失性存储器模块220的数据会经由存储器接口控制电路213转换为可复写式非易失性存储器模块220所能接受的格式。具体来说,若处理器211要存取可复写式非易失性存储器模块220,处理器211会传送对应的指令序列给存储器接口控制电路213以指示存储器接口控制电路213执行对应的操作。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种存储器操作(例如,改变预设读取电压组的多个预设读取电压值以进行读取操作,或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括指令码或程序码。例如,在读取指令序列中,会包括读取的识别码、存储器地址等信息。可复写式非易失性存储器模块220是电性连接至储存控制器210(存储器接口控制电路213)并且用以储存主机系统10所写入的数据。可复写式非易失性存储器模块220可以是单阶记忆胞(singlelevelcell,slc)nand型快速存储器模块(即,一个记忆胞中可储存1个比特的快速存储器模块)、多阶记忆胞(multilevelcell,mlc)nand型快速存储器模块(即,一个记忆胞中可储存2个比特的快速存储器模块)、三阶记忆胞(triplelevelcell,tlc)nand型快速存储器模块(即,一个记忆胞中可储存3个比特的快速存储器模块)、四阶记忆胞(quadruplelevelcell,qlc)nand型快速存储器模块(即,一个记忆胞中可储存4个比特的快速存储器模块)、三维nand型快速存储器模块(3dnandflashmemorymodule)或垂直nand型快速存储器模块(verticalnandflashmemorymodule)等其他快速存储器模块或其他具有相同特性的存储器模块。可复写式非易失性存储器模块220中的记忆胞是以阵列的方式设置。在本实施例中,可复写式非易失性存储器模块220具有多个字元线,其中所述多个字元线的每一个字元线包括多个记忆胞。同一条字元线上的多个记忆胞会组成一或多个物理程序化单元(物理页面)。此外,多个物理程序化单元可组成一个物理单元(物理区块或物理抹除单元)。在本实施例中,以三阶记忆胞(triplelevelcell,tlc)nand型快速存储器模块做例子来说明,即,在下述的实施例中,会将一个可储存3个比特值的记忆胞作为一个物理程序化单元(即,在每次程序化操作中,会对一个物理程序化单元接着一个物理程序化单元来施加程序化电压以程序化数据),其中每一个记忆胞可区分为各自可储存一个比特值的下物理页面(lowerphysicalpage)、中物理页面(middlephysicalpage)与上物理页面(upperphysicalpage)。在本实施例中,是以记忆胞作为写入(程序化)数据的最小单位。物理单元为抹除的最小单位,即,每一物理单元含有最小数目的一并被抹除的记忆胞。每一物理单元会具有多个记忆胞。在以下实施例中,是以一个物理区块作为一个物理单元的范例。然而,在另一实施例中,一个物理单元也可以是指任意数目的记忆胞组成,视实际上的需求而定。此外,必须了解的是,当处理器211对可复写式非易失性存储器模块220中的记忆胞(或物理单元)进行分组以执行对应的管理操作时,此些记忆胞(或物理单元)是被逻辑地分组,而其实际位置并未更动。在一实施例中,储存控制器210还包括缓冲存储器216与电源管理电路217。缓冲存储器是电性连接至处理器211并且用以暂存来自于主机系统10的数据与指令、来自于可复写式非易失性存储器模块220的数据或其他用以管理存储装置20的系统数据,以让处理器211可快速地从缓冲存储器216中存取所述数据、指令或系统数据。电源管理电路217是电性连接至处理器211并且用以控制存储装置20的电源。在本实施例中,错误校验与校正电路214是电性连接至处理器211并且用以执行错误校验与校正程序以确保数据的正确性。具体来说,当处理器211从主机系统10中接收到写入指令时,错误校验与校正电路214会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,ecc)和/或错误校验码(errordetectingcode,edc),并且处理器211会将对应此写入指令的数据与对应的错误更正码和/或错误校验码写入至可复写式非易失性存储器模块220中。之后,当处理器211从可复写式非易失性存储器模块220中读取数据时会同时读取此数据对应的错误更正码和/或错误校验码,并且错误校验与校正电路214会依据此错误更正码和/或错误校验码对所读取的数据(也称,码字)执行错误校验与校正程序(也称,解码操作)。此外,在错误校验与校正程序后,若成功解码所读取的数据,错误校验与校正电路214会完成对该数据的解码操作,并且输出解码后的该数据给处理器211或是数据管理电路212。在本实施例中,错误校验与校正电路214所执行的是使用低密度奇偶校验码(lowdensityparitycode,ldpc)算法的解码操作。此外,错误校验与校正电路214包括用以处理解码操作的解码管理电路2141及用以处理编码操作的编码管理电路2142。更具体来说,错误校验与校正电路214使用了低密度奇偶校验码算法中的比特翻转算法来执行多次迭代解码操作来挤码所欲解码的码字。在本实施例中,错误校验与校正电路214对一笔数据(码字)所执行的解码操作包括初始的校验子运算操作,以获得用以判断是否解码正确的最终校验子,进而根据是否解码正确来判断是否需执行后续的一或多次的迭代操作。在每一次(每一轮)的迭代操作的最后,也会计算对应当前码字的最终校验子,以判断此次的迭代操作是否成功。若成功(解码后所产生的码字为正确,即,有效码字),则结束本次的迭代操作并且也结束对此码字的整个解码操作;若失败(解码后所产生的码字为错误,即,无效码字),则结束本次的迭代操作并且重新开始新的一次(下一轮)的迭代操作。在本实施例中,每一次的解码操作中所执行的迭代操作的总数量会被记录。每一次的解码操作中,会持续地进行迭代操作,直到迭代操作的次数到达预设上限值。厂商可根据需求自行设定预设上限值,本发明不限于此。以下会配合图1至图3来详细说明本发明的适用于ldpc算法的解码方法、解码管理电路及解码管理电路中的各个元件的细节。图2是根据本发明的一实施例所示出的解码管理电路的方块示意图。请参照图2,在本实施例中,解码管理电路2141包括解码控制器301、校验子运算电路302、错误函数运算电路303、极值搜索电路304、终止电路305以及比特翻转电路306。所述解码控制器301电性连接至校验子运算电路302、错误函数运算电路303、极值搜索电路304、终止电路305以及比特翻转电路306,并且用以管理解码管理电路2141的整体运作。应注意的是,在以下实施例中,上述解码管理电路2141中的各个元件的运作,也可视为解码管理电路2141的运作。所述解码控制器用以接收码字,并且根据预设的奇偶校验矩阵(paritycheckmatrix)(也可称,稀疏奇偶校验矩阵,sparseparitycheckmatrix)来将所述码字(codeword)的多个数据比特值(如,有n个数据比特值)分组为多个数据比特值组(如,n个数据比特值组,其中n=n/z)。例如,依据所述码字所有数据比特值的排序,从第一个数据比特值开始,每z个数据比特值分组至一个数据比特值组。具体来说,奇偶校验矩阵也可称为稀疏奇偶校验矩阵(sparseparitycheckmatrix)为经由m×n个奇偶校验子矩阵所组成的矩阵。所述奇偶校验子矩阵也可称为右平移单位矩阵,(ightshiftedidentitymatrix)。z为所述奇偶校验矩阵的奇偶校验子矩阵(paritychecksub-matrix)的矩阵大小,如,奇偶校验子矩阵为z×z大小的矩阵,并且每个数据比特值组的数据比特值的总数目为z。所述数据比特值包括比特值“0”与比特值“1”。所述校验子运算电路302用以根据所述多个数据比特值组的排序来依次对所述多个数据比特值组分别执行校验子运算操作,以获得多个暂态校验子与最终校验子。所述错误函数运算电路303用以根据所述多个数据比特值组的排序与所述最终校验子来依次对所述多个数据比特值组分别执行错误函数运算操作。即,e[g1]用以表示计算对应第一个数据比特值组g1(如,{y1~yz})的错误值组,如,eg1:{ey1,ey2,…,eyz}。其中对应第一个数据比特值组g1的第一个数据比特值y1的错误值例如为ey1。更详细来说,假设错误函数运算是使用权重比特翻转(weightedbitflipping,wbf)算法,则对于数据比特值组g1的第k个数据比特值yk的错误值eyk例如可以下列错误值计算公式来计算:eyk=∑i∈m(yk)(1-2si)×wi,i=minj∈n(i)|yj|其中,m(yk)用以表示根据第k个数据比特值(即,yk)的排序,在奇偶校验矩阵中的第k行来识别比特值“1”所出现的列数(例如,对应数据比特值y1,找寻奇偶校验矩阵的第1行中比特值“1”出现在哪几个列)。基此,根据此列数(即,i,可为大于等于0的整数)来至最终校验子中识别对应的值si。wi为对应的权重值。应注意的是,本发明并不限定所使用的比特翻转算法及其对应的错误值计算公式。例如,在其他实施例中,还可使用对应调整权重比特翻转(modifiedweightedbitflipping,mwbf)算法、改进式调整权重比特翻转(improvedmodifiedweightedbitflipping,imwbf)算法、可靠率权重比特翻转(reliabilityratioweightedbitflipping,rrbf)算法、或梯度下降比特翻转(gradientdecentbitflipping,gdbf)算法等其他用于比特翻转操作的算法的多种错误值计算公式于错误函数运算操作中。上述对应各种比特翻转算法的公式为本领域习知技术,不赘述于此。所述极值搜索电路304用以执行极值搜索操作。更具体来说,所述极值搜索电路304会在对应每个数据比特值组的错误函数运算操作完成且获得对应的错误值组后,对该错误值组中的错误值进行极值搜索操作,以根据设定来找寻其中的最大值或是最小值。所述终止电路305用以根据对应所述码字的所获得的最新的最终校验子来判断是否结束对于当前码字所执行的解码操作。所述比特翻转电路306用以执行比特翻转操作。更具体来说,所述比特翻转电路306会依据数据比特值组的排序,从第一个数据比特值组开始,根据一错误门槛值来判断是否翻转一个数据比特值组中的数据比特值。具体来说,所述错误门槛值可表示信任门槛值,比特翻转电路306会翻转信任度没有超过信任门槛值的数据比特值。所述「翻转」数据比特值的运作为将为第一比特值(如,“0”)的数据比特值改变为第二比特值(如,“1”),或将为第二比特值的数据比特值改变为第一比特值。也就是说,若对一个数据比特值执行翻转(此数据比特值可具有两种比特值),则表示将此数据比特值的比特值从当前的比特值改变成另一种比特值。图3是根据本发明的一实施例所示出的解码方法的流程图。图5为根据本发明的一实施例所示出的解码操作的时间轴示意图。请同时参照图2、图3与图5,在步骤s31,错误校验与校正电路214接收码字,并且将所述码字的多个数据比特分组为多个数据比特值组。更具体来说,解码管理电路2141(如,解码控制器301),如上所述,可依据预设的奇偶校验矩阵的奇偶校验子矩阵的大小来分组所述码字的所述多个数据比特值。接着,到步骤s32,错误校验与校正电路214对所述多个数据比特值组执行一解码操作。在本实施例中,于解码操作的一开始,解码控制器301指示校验子运算电路302根据奇偶校验矩阵来对已分组的数据比特值组g1~gn分别执行校验子运算操作(也称,初始的校验子运算操作)。即,在步骤s321,校验子运算电路302利用奇偶校验矩阵的多个奇偶校验子矩阵依次对所述多个数据比特值组执行分别执行多个校验子运算操作,以获得分别对应所述多个数据比特值组的多个暂态校验子。举例来说,在对第1个数据比特值组g1所执行的校验子运算操作s[g1]中,校验子运算电路302会将所述多个奇偶校验子矩阵中位于第1行的奇偶校验子矩阵分别与数据比特值组g1进行矩阵相乘,以获得对应第1个数据比特值组g1的暂态校验子。接着,在对第2个数据比特值组g2所执行的校验子运算操作中,校验子运算电路302会将所述多个奇偶校验子矩阵中位于第2行的奇偶校验子矩阵分别与数据比特值组g2进行矩阵相乘,以获得对应第2个数据比特值组g2的暂态校验子。依此类推,校验子运算电路302可经由校验子运算操作s[g1]~s[gn]获得分别对应数据比特值组g1~gn的暂态校验子。执行上述校验子运算操作s[g1]~s[gn]的时间各自为一个运算周期(calculationcircle)。本发明并不限于一个运算周期的时间长度。最后,反应于获得所有暂态校验子,校验子运算电路302会依照暂态校验子的顺序,对暂态校验子执行异运算(xoroperation),以计算出最终校验子。例如,校验子运算电路302首先对g1的暂态校验子与g2的暂态校验子执行异运算,以获得一运算结果。接着,将对此结果与排序在g2的暂态校验子后的g3的暂态校验子执行异运算,以获得另一运算结果。依此类推,直到与最后一个暂态校验子(gn的暂态校验子)执行异运算,以获得最后的一个运算结果,也称,最终校验子。上述的对每两个暂态校验子所执行的异运算可集中在最后一个校验子运算中,也可分散于对应的每个校验子运算周期(如,运算周期1~n)中(例如,在获得g2的暂态校验子时,对g1的暂态校验子与g2的暂态校验子执行异运算)。换言之,在获得所有分别对应数据比特值组g1~gn的所述多个暂态校验子后,校验子运算电路302可计算出对应数据比特值组g1~gn的最终校验子。接着,在步骤s322中,终止电路305根据最新获得的所述多个暂态校验子判断所述码字是否为正确或错误。具体来说,终止电路305会判断对应数据比特值组g1~gn的最终校验子的多个值是否皆为零。若最终校验子的多个值皆为零(即,“0”),判定所述码字为正确,接续至步骤s33;若所述最终校验子的所述多个值不皆为零(即,具有一或多个“1”),判定所述码字为错误,接续至步骤s323。在步骤s33中,终止电路305判定完成所述解码操作(且解码成功)并且输出所述多个数据比特。换言之,终止电路305可根据每次最新获得的最终校验子来判断是否要结束整个目前所进行中的解码操作。在本实施例中,步骤s323至步骤s326的过程可被称为一次(一轮)的迭代操作。其中,在迭代操作的一开始,即,步骤s323中,错误函数运算电路303根据所述多个暂态校验子依次执行多个错误函数运算,以依次获得分别对应所述多个数据比特值组的多个错误值组,其中反应于获得第一个错误值组,开始执行步骤s324与步骤s325。具体来说,如上所述,错误函数运算电路303依照数据比特值组的排列顺序,根据(经由所述多个暂态校验子所计算出的)最终校验子与预设的对应比特翻转的错误值计算公式来分别对每个数据比特值组计算对应的错误值组,即,计算出对应每个数据比特值的错误值。例如,在第n+1个运算周期,所述错误函数运算电路303对第1个数据比特值组g1执行错误函数运算操作,即,错误函数运算操作e[g1],并且获得对应第一个数据比特值组g1(如,{y1~yz})的错误值组eg1(如,{ey1,ey2,…,eyz})。依此类推,在第2n个运算周期,错误函数运算电路303对第n个数据比特值组gn执行错误函数运算操作,即,错误函数运算操作e[gn],并且获得对应第n个数据比特值组gn(如,所述多个数据比特值y1~yn中排序在最后的z个数据比特值)的错误值组egn。应注意的是,在获得对应第一个错误值组后,解码控制器301会指示极值搜索电路304执行极值搜索运算操作(步骤s324),并且同时指示比特翻转电路306执行比特翻转操作(步骤s325)。也就是说,例如,在第n+2个运算周期,极值搜索电路304开始对对应数据比特值组g1的错误值组执行极值搜索运算操作;比特翻转电路306开始对数据比特值组g1执行比特翻转操作。此外,错误函数运算电路303也会继续对数据比特值组g2执行错误函数运算操作,即,错误函数运算操作e[g2],并且获得对应数据比特值组g2的错误值组eg2。在步骤s324中,极值搜索电路304依次对所述多个错误值组执行多个极值搜索操作以从所述多个错误值组的所有错误值中识别一目标极值,并且根据所述目标极值设定用于下次的迭代操作的一错误门槛值。具体来说,假设错误值计算公式为“(1-2si)”的形式,则错误值越小会表示对应的数据比特值越不能被信任(信任度越低)。则,极值搜索操作所要找寻的极值为所有错误值组的错误值中的最小者。在第n+2个运算周期,极值搜索电路304会先对数据比特值组g1(排序在第一个的数据比特值组)执行极值搜索操作,即,极值搜索操作m[g1],以从对应数据比特值组g1的错误值组eg1的多个错误值中找寻最小的错误值。此时,最小的错误值可称为区域目标错误值,或全域目标错误值。接着,在第n+3个运算周期,极值搜索电路304会对数据比特值组g2执行极值搜索操作m[g2],以从对应数据比特值组g2的错误值组eg2的多个错误值中找寻最小的错误值,并且将此对应数据比特值组g2的最小的错误值与之前对应数据比特值组g1的最小的错误值进行比较,取其中的较小者,作为全域的最小的错误值(也称,全域目标错误值)。换言之,上述依次对所述多个错误值组执行多个极值搜索操作以从所述多个错误值组的所有错误值中识别所述目标极值的步骤可包括下列步骤:(1)依照所述多个错误值组的排列顺序,选择尚未被选择的一目标错误值组(如,在第一个极值搜索操作中的错误值组eg1),并且对所述目标错误值组执行所述极值搜索操作以识别所述目标错误值组的多个错误值中的最小值,并且将所述最小值作为对应所述目标错误值组的一区域目标错误值(如,对应数据比特值组g1的最小的错误值);(2)若已存在一全域目标错误值,将所述区域目标错误值与所述全域目标错误值中的较小者作为新的全域目标错误值(如,比较对应数据比特值组g1的最小的错误值与对应数据比特值组g2的最小的错误值以找出其中的较小者,以将之作为新的全域目标错误值),其中若未存在所述全域目标错误值,将所述区域目标错误值作为新的全域目标错误值(如,对应数据比特值组g1的最小的错误值会先作为全域目标错误值,再进行对于错误值组eg2的极值搜索操作);以及(3)若所述多个错误值组中具有尚未被选择以执行所述极值搜索操作的数据比特值组,执行步骤(1)(即,依次继续对尚未执行极值搜索操作的错误值组来执行另个极值搜索操作),其中若所述多个数据比特值组中不具有任何尚未被选择以执行所述极值搜索操作的错误值组,判定完成对应所有错误值组的所述多个极值搜索操作,并且将最新的全域目标错误值识别为所述目标极值(即,经由多个极值搜索操作所识别到的目标极值为所有错误值的最小者)。反之,假设错误值计算公式为“(2si-1)”的形式,则错误值越大会表示对应的数据比特值越不能被信任(信任度越低)。则,极值搜索操作所要找寻的极值为所有错误值组的错误值中的最大者。即,最后所识别的目标极值为所有错误值中的最大者。解码控制器301可记录所述目标极值。此外,假设错误值计算公式为“(1-2si)”的形式。在步骤s324中的“根据所述目标极值设定用于下次的迭代操作的错误门槛值”的步骤包括:若所述目标极值与零之间的一绝对差值不小于一预定偏离值,解码控制器301将所述目标极值“加上”一预定加速值所获得的和设定为用于下次的迭代操作的所述错误门槛值;以及若所述目标极值与零之间的所述绝对差值小于一预定偏离值,解码控制器301直接将所述目标极值设定为用于下次的迭代操作的所述错误门槛值。厂商可根据需求来预先设定所述预定加速值(如,“1”)与所述预定偏离值。也就是说,用于下次的迭代操作的错误门槛值会根据当前的迭代操作所识别出的所述目标极值来决定。解码控制器301会更根据其与零之间的绝对差值来判断是否需要调整所述目标极值。如此一来,可在目标极值较小(较远离零)时,将错误门槛值设定为高于目标极值,以在尔后的迭代操作中,可以翻转较多的数据比特值;可在目标极值较大(较接近零)时,将错误门槛值直接设定为目标极值。反之,假设错误值计算公式为“(2si-1)”的形式。在步骤s324中的“根据所述目标极值设定用于下次的迭代操作的错误门槛值”的步骤包括:若所述目标极值与零之间的一绝对差值不小于一预定偏离值将所述目标极值“减去”一预定加速值所获得的和设定为用于下次的迭代操作的所述错误门槛值;以及若所述目标极值与零之间的所述绝对差值小于一预定偏离值,直接将所述目标极值设定为用于下次的迭代操作的所述错误门槛值。以下说明“用于下次的迭代操作的错误门槛值”与“用于当前的迭代操作的错误门槛值”的细节。在本实施例中,如上所述,当前的迭代操作的目标极值可被用来设定“用于下次的迭代操作”的错误门槛值。此外,“用于当前(本轮)的迭代操作”的错误门槛值可经由前次(前一轮)的迭代操作的目标极值来决定;或是在没有前次的迭代操作的情况下(当前的迭代操作为第一次的迭代操作),用于当前(本轮)的迭代操作的错误门槛值可为预先设定的预定错误门槛值。厂商可自行根据实验结果来设定预定错误门槛值,或是解码控制器301可根据曾经执行过的解码操作的错误门槛值来设定预定错误门槛值。在步骤s325中,比特翻转电路306根据用于当前的迭代操作的一错误门槛值与所述多个错误值组来依次对所述多个数据比特值组分别执行多个翻转操作以更新所述多个数据比特。具体来说,假设错误值计算公式为“(1-2si)”的形式,如上述,则错误值越小会表示对应的数据比特值越不能被信任(信任度越低)。则,比特翻转操作所要翻转的数据比特值为对应的错误值小于或等于错误门槛值(也可称,信任度门槛值)的数据比特值。例如,在第n+2个运算周期,比特翻转电路306会先对数据比特值组g1(排序在第一个的数据比特值组)执行比特翻转操作,即,比特翻转操作f[g1],以识别对应数据比特值组g1的错误值组eg1的多个错误值中识别小于或等于该错误门槛值的错误值(也称,目标错误值)。若识别到(若存在)小于或等于该错误门槛值的一或多个目标错误值,比特翻转电路306会根据所述一或多个目标错误值来翻转数据比特值组g1的多个数据比特值中对应所述一或多个目标错误值的一或多个数据比特值,以完成对应数据比特值组g1的比特翻转操作(即,数据比特值组g1被更新)。接着,在第n+3个运算周期,比特翻转电路306会根据“用于当前的迭代操作的”错误门槛值,对数据比特值组g2执行比特翻转操作f[g2],以识别对应数据比特值组g2的错误值组eg2的多个错误值中识别小于或等于该错误门槛值的错误值(也称,目标错误值)。若识别到(若存在)小于或等于该错误门槛值的一或多个目标错误值,比特翻转电路306会根据所述一或多个目标错误值来翻转数据比特值组g2的多个数据比特值中对应所述一或多个目标错误值的一或多个数据比特值,以完成对应数据比特值组g2的比特翻转操作。依此类推,直到完成对应所有数据比特值组的比特翻转操作。换言之,上述步骤s325可包括下列步骤:(1)依照所述多个数据比特值组的排列顺序,比特翻转电路306选择尚未被选择的一目标数据比特值组(例如,第一次的比特翻转操作是选择第一个数据比特值组g1),并且识别所述多个错误值组中对应所述目标数据比特值组的一目标错误值组(如,对应数据比特值组g1的错误值组eg1);(2)根据所述错误门槛值,比特翻转电路306判断所述目标错误值组的多个错误值是否存在小于或等于所述错误门槛值的目标错误值;(3)若存在小于或等于所述错误门槛值的一或多个目标错误值,比特翻转电路306根据所述一或多个目标错误值来翻转所述目标数据比特值组中对应所述一或多个目标错误值的一或多个目标数据比特,以完成对应所述目标数据比特值组的所述比特翻转操作;以及(4)若所述多个数据比特值组中具有尚未被选择以执行比特翻转操作的数据比特值组,执行步骤(1)(如,完成对应数据比特值组g1的比特翻转操作f[g1]后,执行步骤(1)以选择尚未被选择的数据比特值组g2来执行另一次的比特翻转操作),其中若所述多个数据比特值组中不具有任何尚未被选择以执行比特翻转操作的数据比特值组,判定完成所有数据比特值组的所述多个比特翻转操作。反之,假设错误值计算公式为“(2si-1)”的形式,则错误值越大会表示对应的数据比特值越不能被信任(信任度越低)。则,比特翻转操作所要翻转的数据比特值为对应大于或等于错误门槛值的错误值的数据比特值(信任度低于或等于信任度门槛值)。即,每个被翻转的数据比特值的错误值会大于或等于用于当前的迭代操作的错误门槛值。在所有比特翻转操作皆完成后,所述多个数据比特值组也皆被更新。在本实施例中,反应于完成对于第一个数据比特值组g1的比特翻转操作f[g1]后,会同时执行步骤s326,即,利用所述多个奇偶校验子矩阵依次对已更新的所述多个数据比特值组分别执行多个校验子运算操作,以获得分别对应所述已更新的所述多个数据比特值组的多个暂态校验子。所述步骤s326相似于步骤s321,其中的不同点为:于步骤s326中,是对经过迭代操作中的比特翻转操作的已被更新的所述多个数据比特值组g1~gn来分别执行多个校验子运算操作。例如,从运算周期“n+3”开始执行的校验子运算操作s[g1]至s[gn]。此外,在获得所有分别对应已更新的数据比特值组g1~gn的所述多个暂态校验子后,校验子运算电路302也可计算出对应已更新的数据比特值组g1~gn的最终校验子,完成当前的迭代操作,并且接续至步骤s323,以判断是否要进行下次的迭代操作。值得一提的是,当前的迭代操作所获得的错误门槛值、已更新的所述多个数据比特值组、对应的所述多个暂态校验子被用于下次的迭代操作。应注意的是,在本实施例中,开始执行比特翻转操作时,极值搜索操作并没有全部完成。此外,开始执行比特翻转操作的时间点会相同于开始执行极值搜索操作的时间点。如此一来,本实施例的迭代操作的整体时程,相较于传统作法,会因为不需要等待所有极值搜索操作的完成而先执行全部的比特翻转操作,进而缩短了迭代操作的整体时程。请同时参照图4与图5,举例来说,假设会进行x次的迭代操作。传统作法中,每次解码操作的整体时程(总运算周期)为n+x(2n+2)个运算周期;但,本发明所提供的解码方法,每次解码操作的整体时程(总运算周期)为n+x(n+2)个运算周期。换言之,假设会进行x次的迭代操作。本发明所提供的解码方法会缩短x×n个运算周期,具有显著的进步。综上所述,本发明的实施例所提供的解码方法与储存控制器,可不需要等待所有极值搜索操作的完成而在执行极值搜索操作的同时,也执行全部的比特翻转操作,以缩短了每次所执行的迭代操作的整体时程,进而增进解码的效率且增强了工作效率。虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属
技术领域
:中的技术人员,在不脱离本发明的精神和范围内,当可作些许的改动与润饰,故本发明的保护范围当视权利要求所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1