译码方法、内存储存装置及内存控制电路单元与流程

文档序号:11232730阅读:722来源:国知局
本发明涉及一种译码技术,尤其涉及一种译码方法、内存储存装置及内存控制电路单元。
背景技术
::数码相机、移动电话与mp3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性内存模块(例如,闪存)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。一般来说,为了确保可复写式非易失性内存模块所储存的数据的正确性,在将某一数据储存至可复写式非易失性内存模块之前,此数据会先被编码。编码后的数据(包含原始数据与错误更正码)会被储存至可复写式非易失性内存模块中。往后,编码后的数据可被从可复写式非易失性内存模块中读取并且被译码,以更正其中可能存在的错误。然而,在译码程序中,若所采用的译码算法的运算复杂度较低,则此译码程序的译码速度较快,但是译码成功率较低;若所采用的译码算法的运算复杂度较高,则此译码程序的译码速度较慢,但是译码成功率则较高。因此,如何在提高译码程序的译码成功率的前提下维持译码速度的稳定,实为所属
技术领域
:的技术人员所致力研究的课题之一。技术实现要素:本发明提供一种译码方法、内存储存装置及内存控制电路单元,可在译码速度与译码成功率之间取得平衡。本发明的一范例实施例提供一种译码方法,其用于包括多个记忆胞的可复写式非易失性内存模块,所述译码方法包括:程序化所述记忆胞中的至少一第一记忆胞;基于第一硬决策电压准位读取所述第一记忆胞以获得第一硬位信息;根据所述第一硬位信息执行硬译码程序并判断所述硬译码程序是否失败;若所述硬译码程序失败,判断所述第一记忆胞属于第一类记忆胞或第二类记忆胞;若所述第一记忆胞属于所述第一类记忆胞,基于第二硬决策电压准位读取所述第一记忆胞以获得第二硬位信息并根据所述第二硬位信息执行所述硬译码程序,其中所述第二硬决策电压准位与所述第一硬决策电压准位不同,其中所述第一硬位信息所包含的第一硬位的总数等于所述第二硬位信息所包含的第二硬位的总数;以及若所述第一记忆胞属于所述第二类记忆胞,基于多个软决策电压准位读取所述第一记忆胞以获得软位信息并根据所述软位信息执行软译码程序,其中所述第二硬位信息所包含的所述第二硬位的总数小于所述软位信息所包含的软位的总数。在本发明的一范例实施例中,所述判断所述第一记忆胞属于所述第一类记忆胞或所述第 二类记忆胞的步骤包括:若所述第一记忆胞的损耗程度符合预设条件,判定所述第一记忆胞属于所述第一类记忆胞;以及若所述第一记忆胞的所述损耗程度不符合所述预设条件,判定所述第一记忆胞属于所述第二类记忆胞。在本发明的一范例实施例中,所述判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的步骤还包括:判断所述第一记忆胞的损耗程度值是否小于默认值;若所述第一记忆胞的所述损耗程度值小于所述默认值,判定所述第一记忆胞的所述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述损耗程度值等于或大于所述默认值,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。在本发明的一范例实施例中,所述判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的步骤还包括:根据所述第一记忆胞的损耗参数决定所述第一记忆胞的所述损耗程度值,其中所述第一记忆胞的所述损耗参数包括抹除计数、程序化计数、读取计数、位错误率、数据储存时间、程序化忙碌时间及重试计数的至少其中之一。在本发明的一范例实施例中,所述译码方法还包括:当程序化所述第一记忆胞时,记录用于程序化所述第一记忆胞的忙碌时间;以及根据所述忙碌时间决定所述程序化忙碌时间。在本发明的一范例实施例中,所述译码方法还包括:程序化所述记忆胞中的至少一第二记忆胞;读取所述第二记忆胞并对应于所述第二记忆胞执行第一次数的所述硬译码程序;以及根据所述第一次数决定所述重试计数。在本发明的一范例实施例中,所述映射至所述第一记忆胞的第一逻辑单元是接续于映像至所述第二记忆胞的第二逻辑单元。在本发明的一范例实施例中,所述第一记忆胞与所述第二记忆胞属于所述可复写式非易失性内存模块中的同一个实体抹除单元。在本发明的一范例实施例中,所述判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的步骤还包括:判断所述第一记忆胞的临界电压分布是否符合默认分布;若所述第一记忆胞的所述临界电压分布符合所述默认分布,判定所述第一记忆胞的所述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述临界电压分布不符合所述预设分布,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。本发明的另一范例实施例提供一种内存储存装置,其包括连接接口单元、可复写式非易失性内存模块及内存控制电路单元。所述连接接口单元用以连接至主机系统。所述可复写式非易失性内存模块包括多个记忆胞。所述内存控制电路单元连接至所述连接接口单元与所述可复写式非易失性内存模块,所述内存控制电路单元用以发送写入指令序列,其用以指示程序化所述记忆胞中的至少一第一记忆胞,所述内存控制电路单元更用以发送第一硬读取指令序列,其用以指示基于第一硬决策电压准位读取所述第一记忆胞以获得第一硬位信息,所述内存控制电路单元更用以根据所述第一硬位信息执行硬译码程序并判断所述硬译码程序是否失败,若所述硬译码程序失败,所述内存控制电路单元更用以判断所述第一记忆胞属于第一类记忆胞或第二类记忆胞,若所述第一记忆胞属于所述第一类记忆胞,所述内存控制电路单元更用以发送第二硬读取指令序列,其用以指示基于第二硬决策电压准位读取所述第一记忆胞以获得第二硬位信息,所述内存控制电路单元更用以根据所述第二硬位信息执行所述硬译码程序,所述第二硬决策电压准位与所述第一硬决策电压准位不同,所述第一硬位信息所包含的第一硬位的总数等于所述第二硬位信息所包含的第二硬位的总数,若所述第一记忆胞属 于所述第二类记忆胞,所述内存控制电路单元更用以发送软读取指令序列,其用以指示基于多个软决策电压准位读取所述第一记忆胞以获得软位信息,所述内存控制电路单元更用以根据所述软位信息执行软译码程序,所述第二硬位信息所包含的所述第二硬位的总数小于所述软位信息所包含的软位的总数。在本发明的一范例实施例中,所述内存控制电路单元判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作包括:若所述第一记忆胞的损耗程度符合预设条件,判定所述第一记忆胞属于所述第一类记忆胞;以及若所述第一记忆胞的所述损耗程度不符合所述预设条件,判定所述第一记忆胞属于所述第二类记忆胞。在本发明的一范例实施例中,所述内存控制电路单元判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:判断所述第一记忆胞的损耗程度值是否小于默认值;若所述第一记忆胞的所述损耗程度值小于所述默认值,判定所述第一记忆胞的所述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述损耗程度值等于或大于所述默认值,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。在本发明的一范例实施例中,所述内存控制电路单元判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:根据所述第一记忆胞的损耗参数决定所述第一记忆胞的所述损耗程度值,其中所述第一记忆胞的所述损耗参数包括抹除计数、程序化计数、读取计数、位错误率、数据储存时间、程序化忙碌时间及重试计数的至少其中之一。在本发明的一范例实施例中,当程序化所述第一记忆胞时,所述内存控制电路单元更用以记录用于程序化所述第一记忆胞的忙碌时间,其中所述内存控制电路单元更用以根据所述忙碌时间决定所述程序化忙碌时间。在本发明的一范例实施例中,所述内存控制电路单元更用以指示程序化所述记忆胞中的至少一第二记忆胞,所述内存控制电路单元更用以指示读取所述第二记忆胞并对应于所述第二记忆胞执行第一次数的所述硬译码程序,所述内存控制电路单元更用以根据所述第一次数决定所述重试计数。在本发明的一范例实施例中,所述映射至所述第一记忆胞的第一逻辑单元是接续于映像至所述第二记忆胞的第二逻辑单元。在本发明的一范例实施例中,所述第一记忆胞与所述第二记忆胞属于所述可复写式非易失性内存模块中的同一个实体抹除单元。在本发明的一范例实施例中,所述内存控制电路单元判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:判断所述第一记忆胞的临界电压分布是否符合默认分布;若所述第一记忆胞的所述临界电压分布符合所述默认分布,判定所述第一记忆胞的所述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述临界电压分布不符合所述预设分布,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。本发明的另一范例实施例提供一种内存控制电路单元,其用于控制包含多个记忆胞的可复写式非易失性内存模块,所述内存控制电路单元包括主机接口、内存接口、错误检查与校正电路及内存管理电路。所述主机接口用以连接至主机系统。所述内存接口用以连接至所述可复写式非易失性内存模块。所述内存管理电路连接至所述主机接口、所述内存接口及所述错误检查与校正电路,所述内存控制电路单元用以发送写入指令序列,其用以指示程序化所述记忆胞中的至少一第一记忆胞,所述内存管理电路更用以发送第一硬读取指令序列,其用 以指示基于第一硬决策电压准位读取所述第一记忆胞以获得第一硬位信息,所述错误检查与校正电路用以根据所述第一硬位信息执行硬译码程序,所述内存管理电路更用以判断所述硬译码程序是否失败,若所述硬译码程序失败,所述内存管理电路更用以判断所述第一记忆胞属于第一类记忆胞或第二类记忆胞,若所述第一记忆胞属于所述第一类记忆胞,所述内存管理电路更用以发送第二硬读取指令序列,其用以指示基于第二硬决策电压准位读取所述第一记忆胞以获得第二硬位信息,所述错误检查与校正电路更用以根据所述第二硬位信息执行所述硬译码程序,所述第二硬决策电压准位与所述第一硬决策电压准位不同,所述第一硬位信息所包含的第一硬位的总数等于所述第二硬位信息所包含的第二硬位的总数,若所述第一记忆胞属于所述第二类记忆胞,所述内存管理电路更用以发送软读取指令序列,其用以指示基于多个软决策电压准位读取所述第一记忆胞以获得软位信息,所述错误检查与校正电路更用以根据所述软位信息执行软译码程序,其中所述第二硬位信息所包含的所述第二硬位的总数小于所述软位信息所包含的软位的总数。在本发明的一范例实施例中,所述内存管理电路判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作包括:若所述第一记忆胞的损耗程度符合预设条件,判定所述第一记忆胞属于所述第一类记忆胞;以及若所述第一记忆胞的所述损耗程度不符合所述预设条件,判定所述第一记忆胞属于所述第二类记忆胞。在本发明的一范例实施例中,所述内存管理电路判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:判断所述第一记忆胞的损耗程度值是否小于默认值;若所述第一记忆胞的所述损耗程度值小于所述默认值,判定所述第一记忆胞的所述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述损耗程度值等于或大于所述默认值,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。在本发明的一范例实施例中,所述内存管理电路判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:根据所述第一记忆胞的损耗参数决定所述第一记忆胞的所述损耗程度值,其中所述第一记忆胞的所述损耗参数包括抹除计数、程序化计数、读取计数、位错误率、数据储存时间、程序化忙碌时间及重试计数的至少其中之一。在本发明的一范例实施例中,当程序化所述第一记忆胞时,所述内存管理电路更用以记录用于程序化所述第一记忆胞的忙碌时间,所述内存管理电路更用以根据所述忙碌时间决定所述程序化忙碌时间。在本发明的一范例实施例中,所述内存管理电路更用以指示程序化所述记忆胞中的至少一第二记忆胞,所述内存管理电路更用以指示读取所述第二记忆胞,所述错误检查与校正电路更用以对应于所述第二记忆胞执行第一次数的所述硬译码程序,所述内存管理电路更用以根据所述第一次数决定所述重试计数。在本发明的一范例实施例中,所述映射至所述第一记忆胞的第一逻辑单元是接续于映像至所述第二记忆胞的第二逻辑单元。在本发明的一范例实施例中,所述第一记忆胞与所述第二记忆胞属于所述可复写式非易失性内存模块中的同一个实体抹除单元。在本发明的一范例实施例中,所述内存管理电路判断所述第一记忆胞属于所述第一类记忆胞或所述第二类记忆胞的操作还包括:判断所述第一记忆胞的临界电压分布是否符合默认分布;若所述第一记忆胞的所述临界电压分布符合所述默认分布,判定所述第一记忆胞的所 述损耗程度符合所述预设条件;以及若所述第一记忆胞的所述临界电压分布不符合所述预设分布,判定所述第一记忆胞的所述损耗程度不符合所述预设条件。基于上述,在对于某一记忆胞的硬译码程序失败后,对应于此记忆胞的类型,硬译码程序与软译码程序的其中之一会接续被执行。藉此,相较于一般制式的译码流程,本发明对于硬译码与软译码的选择较有弹性,从而可在译码速度与译码成功率之间取得平衡。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。附图说明图1是根据本发明的一范例实施例所显示的主机系统、内存储存装置及输入/输出(i/o)装置的示意图;图2是根据本发明的另一范例实施例所显示的主机系统、内存储存装置及i/o装置的示意图;图3是根据本发明的另一范例实施例所显示的主机系统与内存储存装置的示意图;图4是根据本发明的一范例实施例所显示的内存储存装置的概要方框图;图5是根据本发明的一范例实施例所显示的内存控制电路单元的概要方框图;图6是根据本发明的一范例实施例所显示的管理可复写式非易失性内存模块的示意图;图7a至图7c是根据本发明的一范例实施例所显示的多个记忆胞的临界电压分布的示意图;图8是根据本发明的一范例实施例所显示的硬译码程序的示意图;图9是根据本发明的一范例实施例所显示的软译码程序的示意图;图10是根据本发明的一范例实施例所显示的译码方法的流程图;图11a与图11b是根据本发明的另一范例实施例所显示的译码方法的流程图。附图标记:10:内存储存装置11:主机系统110:系统总线111:处理器112:随机存取内存113:只读存储器114:数据传输接口12:输入/输出(i/o)装置20:主板201:随身碟202:记忆卡203:固态硬盘204:无线内存储存装置205:全球定位系统模块206:网络适配器207:无线传输装置208:键盘209:屏幕210:喇叭32:sd卡33:cf卡34:嵌入式储存装置341:嵌入式多媒体卡342:嵌入式多芯片封装储存装置402:连接接口单元404:内存控制电路单元406:可复写式非易失性内存模块502:内存管理电路504:主机接口506:内存接口508:错误检查与校正电路510:缓冲存储器512:电源管理电路601:储存区602:取代区610(0)~610(b):实体抹除单元612(0)~612(c):逻辑单元710、720、711、712、721、722、810、820、910、920:分布731、741:重叠区域901~906:区域931、941:软位信息s1001~s1009、s1101~s1118:步骤具体实施方式一般而言,内存储存装置(亦称,内存储存系统)包括可复写式非易失性内存模块(rewritablenon-volatilememorymodule)与控制器(亦称,控制电路)。通常内存储存装置是与主机系统一起使用,以使主机系统可将数据写入至内存储存装置或从内存储存装置中读取数据。图1是根据本发明的一范例实施例所显示的主机系统、内存储存装置及输入/输出(i/o)装置的示意图。图2是根据本发明的另一范例实施例所显示的主机系统、内存储存装置及i/o装置的示意图。请参照图1与图2,主机系统11一般包括处理器111、随机存取内存(randomaccessmemory,ram)112、只读存储器(readonlymemory,rom)113及数据传输接口114。处理器111、随机 存取内存112、只读存储器113及数据传输接口114皆连接至系统总线(systembus)110。在本范例实施例中,主机系统11是通过数据传输接口114与内存储存装置10连接。例如,主机系统11可经由数据传输接口114将数据储存至内存储存装置10或从内存储存装置10中读取数据。此外,主机系统11是通过系统总线110与i/o装置12连接。例如,主机系统11可经由系统总线110将输出信号传送至i/o装置12或从i/o装置12接收输入信号。在本范例实施例中,处理器111、随机存取内存112、只读存储器113及数据传输接口114可设置在主机系统11的主板20上。数据传输接口114的数目可以是一或多个。通过数据传输接口114,主板20可以经由有线或无线方式连接至内存储存装置10。内存储存装置10可例如是随身碟201、记忆卡202、固态硬盘(solidstatedrive,ssd)203或无线内存储存装置204。无线内存储存装置204可例如是近距离无线通信(nearfieldcommunication,nfc)内存储存装置、无线传真(wifi)内存储存装置、蓝牙(bluetooth)内存储存装置或低功耗蓝牙内存储存装置(例如,ibeacon)等以各式无线通信技术为基础的内存储存装置。此外,主板20也可以通过系统总线110连接至全球定位系统(globalpositioningsystem,gps)模块205、网络适配器206、无线传输装置207、键盘208、屏幕209、喇叭210等各式i/o装置。例如,在一范例实施例中,主板20可通过无线传输装置207存取无线内存储存装置204。在一范例实施例中,所提及的主机系统为可实质地与内存储存装置配合以储存数据的任意系统。虽然在上述范例实施例中,主机系统是以计算机系统来作说明,然而,图3是根据本发明的另一范例实施例所显示的主机系统与内存储存装置的示意图。请参照图3,在另一范例实施例中,主机系统31也可以是数码相机、摄影机、通讯装置、音频播放器、视频播放器或平板电脑等系统,而内存储存装置30可为其所使用的安全数字(securedigital,sd)卡32、小型快闪(compactflash,cf)卡33或嵌入式储存装置34等各式非易失性内存储存装置。嵌入式储存装置34包括嵌入式多媒体卡(embeddedmmc,emmc)341和/或嵌入式多芯片封装(embeddedmultichippackage,emcp)储存装置342等各类型将内存模块直接连接于主机系统的基板上的嵌入式储存装置。图4是根据本发明的一范例实施例所显示的内存储存装置的概要方框图。请参照图4,内存储存装置10包括连接接口单元402、内存控制电路单元404与可复写式非易失性内存模块406。在本范例实施例中,连接接口单元402是兼容于序列先进附件(serialadvancedtechnologyattachment,sata)标准。然而,必须了解的是,本发明不限于此,连接接口单元402亦可以是符合并列先进附件(paralleladvancedtechnologyattachment,pata)标准、电气和电子工程师协会(instituteofelectricalandelectronicengineers,ieee)1394标准、高速周边零件连接接口(peripheralcomponentinterconnectexpress,pciexpress)标准、通用串行总线(universalserialbus,usb)标准、sd接口标准、超高速一代(ultrahighspeed-i,uhs-i)接口标准、超高速二代(ultrahighspeed-ii,uhs-ii)接口标准、记忆棒(memorystick,ms)接口标准、多芯片封装(multi-chippackage)接口标准、多媒体储存卡(multimediacard,mmc)接口标准、emmc接口标准、通用闪存(universalflashstorage,ufs)接口标准、emcp接口标准、cf接口标准、整合式驱动电子接口(integrateddeviceelectronics,ide)标准或其他适合的标准。连接接口单元402可与内存控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含内存控制电路单元404的芯片外。内存控制电路单元404用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令并且根据主机系统11的指令在可复写式非易失性内存模块406中进行数据的写入、读取与抹除等运作。可复写式非易失性内存模块406是连接至内存控制电路单元404并且用以储存主机系统11所写入的数据。可复写式非易失性内存模块406可以是单阶记忆胞(singlelevelcell,slc)nand型闪存模块(即,一个记忆胞中可储存1个位的闪存模块)、多阶记忆胞(multilevelcell,mlc)nand型闪存模块(即,一个记忆胞中可储存2个位的闪存模块)、三阶记忆胞(triplelevelcell,tlc)nand型闪存模块(即,一个记忆胞中可储存3个位的闪存模块)、其他闪存模块或其他具有相同特性的内存模块。可复写式非易失性内存模块406中的每一个记忆胞是以电压(以下亦称为临界电压)的改变来储存一或多个位。具体来说,每一个记忆胞的控制栅极(controlgate)与信道之间有一个电荷捕捉层。通过施予一写入电压至控制栅极,可以改变电荷补捉层的电子量,进而改变记忆胞的临界电压。此改变临界电压的程序亦称为“把数据写入至记忆胞”或“程序化记忆胞”。随着临界电压的改变,可复写式非易失性内存模块406中的每一个记忆胞具有多个储存状态。通过施予读取电压可以判断一个记忆胞是属于哪一个储存状态,藉此取得此记忆胞所储存的一或多个位。图5是根据本发明的一范例实施例所显示的内存控制电路单元的概要方框图。请参照图5,内存控制电路单元404包括内存管理电路502、主机接口504、内存接口506及错误检查与校正电路508。内存管理电路502用以控制内存控制电路单元404的整体运作。具体来说,内存管理电路502具有多个控制指令,并且在内存储存装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明内存管理电路502的操作时,等同于说明内存控制电路单元404的操作。在本范例实施例中,内存管理电路502的控制指令是以固件型式来实作。例如,内存管理电路502具有微处理器单元(未显示)与只读存储器(未显示),并且此些控制指令是被刻录至此只读存储器中。当内存储存装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。在另一范例实施例中,内存管理电路502的控制指令亦可以程序代码型式储存于可复写式非易失性内存模块406的特定区域(例如,内存模块中专用于存放系统数据的系统区)中。此外,内存管理电路502具有微处理器单元(未显示)、只读存储器(未显示)及随机存取内存(未显示)。特别是,此只读存储器具有开机码(bootcode),并且当内存控制电路单元404被致能时,微处理器单元会先执行此开机码来将储存于可复写式非易失性内存模块406中的控制指令加载至内存管理电路502的随机存取内存中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。此外,在另一范例实施例中,内存管理电路502的控制指令亦可以一硬件型式来实作。例如,内存管理电路502包括微控制器、记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路。记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路是连接至微控制器。记忆胞管理电路用以管理可复写式非易失性内存模块406的记忆胞或其群组。内存写入电路用以对可复写式非易失性内存模块406下达写入指 令序列以将数据写入至可复写式非易失性内存模块406中。内存读取电路用以对可复写式非易失性内存模块406下达读取指令序列以从可复写式非易失性内存模块406中读取数据。内存抹除电路用以对可复写式非易失性内存模块406下达抹除指令序列以将数据从可复写式非易失性内存模块406中抹除。数据处理电路用以处理欲写入至可复写式非易失性内存模块406的数据以及从可复写式非易失性内存模块406中读取的数据。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序代码或脚本并且用以指示可复写式非易失性内存模块406执行相对应的写入、读取及抹除等操作。在一范例实施例中,内存管理电路502还可以下达其他类型的指令序列给可复写式非易失性内存模块406以指示执行相对应的操作。主机接口504是连接至内存管理电路502并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至内存管理电路502。在本范例实施例中,主机接口504是兼容于sata标准。然而,必须了解的是本发明不限于此,主机接口504亦可以是兼容于pata标准、ieee1394标准、pciexpress标准、usb标准、sd标准、uhs-i标准、uhs-ii标准、ms标准、mmc标准、emmc标准、ufs标准、cf标准、ide标准或其他适合的数据传输标准。内存接口506是连接至内存管理电路502并且用以存取可复写式非易失性内存模块406。也就是说,欲写入至可复写式非易失性内存模块406的数据会经由内存接口506转换为可复写式非易失性内存模块406所能接受的格式。具体来说,若内存管理电路502要存取可复写式非易失性内存模块406,内存接口506会传送对应的指令序列。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种记忆体操作(例如,改变读取电压准位或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列例如是由内存管理电路502产生并且通过内存接口506传送至可复写式非易失性内存模块406。这些指令序列可包括一或多个信号,或是在总线上的数据。这些信号或数据可包括脚本或程序代码。例如,在读取指令序列中,会包括读取的辨识码、内存地址等信息。错误检查与校正电路508是连接至内存管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当内存管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路508会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,ecc)和/或错误检查码(errordetectingcode,edc),并且内存管理电路502会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性内存模块406中。之后,当内存管理电路502从可复写式非易失性内存模块406中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路508会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。在本范例实施例中,错误检查与校正电路508所使用的是低密度奇偶检查码(lowdensityparitycode,ldpc)。然而,在另一范例实施例中,错误检查与校正电路508所使用的也可以是bch码、回旋码(convolutionalcode)、涡轮码(turbocode)、位翻转(bitflipping)等编/译码算法。在一范例实施例中,内存控制电路单元404还包括缓冲存储器510与电源管理电路512。缓冲存储器510是连接至内存管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性内存模块406的数据。电源管理电路512是连接至内存管理电 路502并且用以控制内存储存装置10的电源。在本范例实施例中,可复写式非易失性内存模块406的记忆胞会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体抹除单元。例如,同一条字符在线的记忆胞会组成一或多个实体程序化单元。若每一个记忆胞可储存2个以上的位,则同一条字符在线的实体程序化单元至少可被分类为下实体程序化单元与上实体程序化单元。例如,一记忆胞的最低有效位(leastsignificantbit,lsb)是属于下实体程序化单元,并且一记忆胞的最高有效位(mostsignificantbit,msb)是属于上实体程序化单元。一般来说,在mlcnand型闪存中,下实体程序化单元的写入速度会大于上实体程序化单元的写入速度,和/或下实体程序化单元的可靠度是高于上实体程序化单元的可靠度。在本范例实施例中,实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。例如,实体程序化单元为实体页面(page)或是实体扇(sector)。若实体程序化单元为实体页面,则此些实体程序化单元通常包括数据位区与冗余(redundancy)位区。数据位区包含多个实体扇,用以储存用户数据,而冗余位区用以储存系统数据(例如,错误更正码)。在本范例实施例中,数据位区包含32个实体扇,且一个实体扇的大小为512字节(byte,b)。然而,在其他范例实施例中,数据位区中也可包含8个、16个或数目更多或更少的实体扇,并且每一个实体扇的大小也可以是更大或更小。另一方面,实体抹除单元为抹除之最小单位。亦即,每一实体抹除单元含有最小数目之一并被抹除的记忆胞。例如,实体抹除单元为实体区块(block)。图6是根据本发明的一范例实施例所显示的管理可复写式非易失性内存模块的示意图。请参照图6,内存管理电路502会将可复写式非易失性内存模块406的实体抹除单元610(0)~610(b)逻辑地分组为储存区601与替换区602。储存区601中的实体抹除单元610(0)~610(a)是用以储存数据,而替换区602中的实体抹除单元610(a+1)~610(b)是用以替换储存区601中损坏的实体抹除单元。在本范例实施例中,内存管理电路502会配置逻辑单元612(0)~612(c)以映像储存区601中的实体抹除单元610(0)~610(a)的至少一部分。在本范例实施例中,主机系统11是通过逻辑地址(logicaladdress,la)来存取储存区601中的数据,因此,逻辑单元612(0)~612(c)中的每一个是指一个逻辑地址。然而,在另一范例实施例中,逻辑单元612(0)~612(c)中的每一个也可以是指一个逻辑程序化单元、一个逻辑抹除单元或者由多个连续或不连续的逻辑地址组成,视实务上的需求而定。此外,逻辑单元612(0)~612(c)中的每一个可被映射至一或多个实体抹除单元。在本范例实施例中,内存管理电路502会将逻辑单元与实体抹除单元之间的映像关系(亦称为逻辑-实体映像关系)记录于至少一逻辑-实体映像表。当主机系统11欲从内存储存装置10读取数据或写入数据至内存储存装置10时,内存管理电路502可根据此逻辑-实体映像表来执行对于内存储存装置10的数据存取。图7a至图7c是根据本发明的一范例实施例所显示的多个记忆胞的临界电压分布的示意图。本范例实施例是以slcnand型闪存为例,其中横轴代表记忆胞的临界电压,而纵轴代表记忆胞个数。然而,在另一范例实施例中,图7a至图7c亦可以用来表示mlcnand或tlcnand型闪存中一部分的临界电压分布。请参照图7a,在程序化可复写式非易失性内存模块406中的多个记忆胞后,被程序化的 每一个记忆胞的临界电压会属于分布710与720的其中之一。例如,若某一个记忆胞被用来储存位“1”,则此记忆胞的临界电压会落在分布710;而若某一个记忆胞被用来储存位“0”,则此记忆胞的临界电压会落在分布720。在本范例实施例中,此些被程序化的记忆胞会属于一个实体程序化单元。然而,在另一范例实施例中,此些被程序化的记忆胞也可以是属于一个实体抹除单元。值得一提的是,在本范例实施例中,每一个记忆胞是用以储存一个位,故此些记忆胞的临界电压的分布有两种可能(例如,分布710与分布720)。然而,在其他范例实施例中,若一个记忆胞是用以储存多个位,则对应的临界电压的分布则可能有四种(例如,mlcnand型闪存)、八种(例如,tlcnand型闪存)或其他任意个可能。此外,本发明也不限制每一个分布所代表的位。例如,在图7a的另一范例实施例中,分布710是代表位“0”,并且分布720是代表位“1”。在本范例实施例中,若要读取此些记忆胞中的至少一记忆胞(以下称为第一记忆胞)所储存的数据,内存管理电路502会发送一个默认读取指令序列(以下称为硬读取指令序列)至可复写式非易失性内存模块406。此硬读取指令序列用以指示基于一个默认读取电压准位(以下称为硬决策电压准位)来读取第一记忆胞或第一记忆胞所属的实体单元。例如,此实体单元是指一个实体程序化单元。根据此硬读取指令序列,可复写式非易失性内存模块406会使用一个硬决策电压准位(例如,图7a中的读取电压准位vdefault)来读取第一记忆胞并且将所获得的位信息(以下称为硬位信息)传送给内存管理电路502。其中,硬位信息会包含从每一个第一记忆胞读取的一个位数据(以下称为硬位)。例如,若某一个第一记忆胞的临界电压小于读取电压准位vdefault(例如,临界电压属于分布710的记忆胞),则内存管理电路502会读到硬位“1”;若某一个记忆胞的临界电压大于读取电压准位vdefault(例如,临界电压属于分布720的记忆胞),则内存管理电路502会读到硬位“0”。请持续参照图7a和图7b,随着可复写式非易失性内存模块406的使用时间增加和/或操作环境改变,可复写式非易失性内存模块406中的记忆胞可能会发生性能衰退(degradation)。例如,在属于分布710与分布720的记忆胞发生性能衰退后,分布710与分布720可能会逐渐相互靠近甚至相互重叠。例如,分布711与分布721分别用来表示性能衰退后的分布710与分布720。分布711与分布721包含一个重叠区域731(以斜线表示)。发生性能衰退后,若持续使用相同的硬决策电压准位(例如,读取电压准位vdefault)来读取第一记忆胞,则读取到的硬位可能会包含许多错误。例如,此些错误包括将属于分布711的记忆胞误判为属于分布721,或者将属于分布721的记忆胞误判为属于分布711。因此,在本范例实施例中,错误检查与校正电路508会根据所获得的硬位信息执行一默认译码程序(以下称为硬译码程序),从而尝试更正所获得的硬位中可能存在的错误。若所执行的硬译码程序失败,则更多的硬译码程序可被重复执行。图8是根据本发明的一范例实施例所显示的硬译码程序的示意图。请参照图8,假设每一个第一记忆胞的临界电压组成分布810与分布820。当欲读取储存于第一记忆胞中的数据时,内存管理电路502会发送一个硬读取指令序列(以下称为第一硬读取指令序列)至可复写式非易失性内存模块406。此第一硬读取指令序列用以指示基于一个硬决策电压准位(以下称为第一硬决策电压准位)来读取第一记忆胞或第一记忆胞所属的实体单元。根据第一硬读取指令序列,可复写式非易失性内存模块406会使用第一硬决策电压准位 来读取第一记忆胞并且将所获得的硬位信息(以下称为第一硬位信息)传送给内存管理电路502。在本范例实施例中,第一硬决策电压准位是以图8中的读取电压准位vh1为例。所获得的第一硬位信息会包含从每一个第一记忆胞读取的一个硬位(以下称为第一硬位)hb1。例如,若某一个第一记忆胞的临界电压小于读取电压准位vh1,则内存管理电路502会读到位值为“1”的硬位hb1;若某一个第一记忆胞的临界电压大于读取电压准位vh1,则内存管理电路502会读到位值为“0”的硬位hb1。错误检查与校正电路508会根据所获得的第一硬位信息执行一硬译码程序(以下称为第一硬译码程序)。在第一硬译码程序中,错误检查与校正电路508会尝试更正第一硬位中可能存在的错误。若第一硬位中的错误皆被更正,表示译码成功,则错误检查与校正电路508会输出译码成功的位并且结束第一硬译码程序(或结束整个译码程序)。若第一硬位中的错误并未全部被更正,表示译码失败,则内存管理电路502会调整硬决策电压准位(例如,将硬决策电压准位从第一硬决策电压准位调整为另一硬决策电压准位)并且发送另一个硬读取指令序列(以下称为第二硬读取指令序列)至可复写式非易失性内存模块406。此第二硬读取指令序列用以指示基于调整后的硬决策电压准位(以下称为第二硬决策电压准位)来读取第一记忆胞或第一记忆胞所属的实体单元。根据第二硬读取指令序列,可复写式非易失性内存模块406会使用第二硬决策电压准位来读取第一记忆胞并且将所获得的硬位信息(以下称为第二硬位信息)传送给内存管理电路502。在本范例实施例中,第二硬决策电压准位是以图8中的读取电压准位vh2为例。所获得的第二硬位信息会包含从每一个第一记忆胞读取的另一个硬位(以下称为第二硬位)hb2。例如,若某一个第一记忆胞的临界电压小于读取电压准位vh2,则内存管理电路502会读到位值为“1”的硬位hb2;若某一个第一记忆胞的临界电压大于读取电压准位vh2,则内存管理电路502会读到位值为“0”的硬位hb2。在本范例实施例中,第一硬位信息中硬位hb1的总数会等于第二硬位信息中硬位hb2的总数。错误检查与校正电路508会根据所获得的第二硬位信息执行另一硬译码程序(以下称为第二硬译码程序)。在第二硬译码程序中,错误检查与校正电路508会尝试更正第二硬位中可能存在的错误。若第二硬位中的错误皆被更正,表示译码成功,则错误检查与校正电路508会输出译码成功的位并且结束第二硬译码程序(或结束整个译码程序)。此外,若第二硬位中的错误并未全部被更正,表示译码失败,则内存管理电路502可再次调整用来读取第一记忆胞的硬决策电压准位并且更多的硬译码程序可接续被执行。在一范例实施例中,若某一个硬译码程序失败,内存管理电路502会判断硬译码程序的执行次数是否达到一门槛值(以下称为第一门槛值)。若硬译码程序的执行次数已达到第一门槛值,则内存管理电路502会判定译码失败并且结束硬译码程序(或结束整个译码程序)。若硬译码程序的执行次数尚未达到第一门槛值,则内存管理电路502可再次调整用来读取第一记忆胞的硬决策电压准位并且更多的硬译码程序可接续被执行。请再次参照图7b和图7c,对于临界电压属于分布711与分布721的记忆胞来说,若持续地使用此些记忆胞,则此些记忆胞可能会持续地发生性能衰退。因此,分布711与分布721可能会进一步改变为分布712与分布722。分布712与分布722包含一个重叠区域741(以斜线表示)。重叠区域741的面积会大于重叠区域731的面积。或者,临界电压属于重叠区域741 的记忆胞之总数会多于临界电压属于重叠区域731的记忆胞的总数。相对于分布711与分布721,若使用某一个硬决策电压准位(例如,读取电压准位vdefault、vh1、vh2等)来读取分布712与分布722中的第一记忆胞,则读取到的硬位可能会包含更多的错误。例如,相对于分布711与分布721,更多属于分布712的记忆胞可能会被误判为属于分布722,并且更多属于分布722的记忆胞可能会被误判为属于分布712。在此情况下,受限于硬译码程序的译码能力(或错误更正能力),即便使用再多的硬决策电压准位来读取第一记忆胞并对应执行再多次的硬译码程序,可能都无法藉由单一的硬译码信息来更正所获得的硬位中的所有错误。在本范例实施例中,对于临界电压属于分布712与分布722的记忆胞,若根据第一硬位信息所执行的第一硬译码程序失败,则内存管理电路502会接续发送另一个默认读取指令序列(以下称为软读取指令序列)至可复写式非易失性内存模块406。此软读取指令序列用以指示基于多个默认读取电压准位(以下称为软决策电压准位)来读取第一记忆胞或第一记忆胞所属的实体单元。根据此软读取指令序列,可复写式非易失性内存模块406会使用多个软决策电压准位来读取第一记忆胞并且将所获得的位信息(以下称为软位信息)传送给内存管理电路502。其中,所获的的软位信息会包含从每一个第一记忆胞读取的多个位数据(以下称为软位)。错误检查与校正电路508会根据所获得的软位信息执行另一默认译码程序(以下称为软译码程序),从而尝试更正当前欲译码的码字中存在的错误。在本范例实施例中,软译码程序的错误更正能力高于硬译码程序的错误更正能力。若所执行的软译码程序失败,则更多的软译码程序可被重复执行。图9是根据本发明的一范例实施例所显示的软译码程序的示意图。请参照图9,在第一硬译码程序失败后,内存管理电路502亦可以选择发送一个软读取指令序列至可复写式非易失性内存模块406。此软读取指令序列用以指示基于多个软决策电压准位(例如,读取电压准位vs1~vs5)来读取第一记忆胞或第一记忆胞所属的实体单元。根据此软读取指令序列,可复写式非易失性内存模块406会使用此些软决策电压准位(例如,读取电压准位vs1~vs5)来读取第一记忆胞并且将所获得的软位信息931传送给内存管理电路502。其中,所获得的软位信息931会包含从每一个第一记忆胞读取的多个软位sb1~sb5。在本范例实施例中,假设软位信息、第一硬位信息及第二硬位信息皆是藉由读取相同(例如,相同数目)的第一记忆胞而获得,则第一硬位信息中硬位的总数(或第二硬位信息中硬位的总数)会小于软位信息中软位的总数。在本范例实施例中,藉由依序施加读取电压准位vs1~vs5至某一个记忆胞所获得的软位sb1~sb5可以用来表示此记忆胞的临界电压位于区间901~906中的哪一个。例如,若经由读取某一个记忆胞而获得的软位sb1~sb5是“11111”,表示此记忆胞的临界电压位于区间901;若经由读取某一个记忆胞而获得的软位sb1~sb5是“01111”,表示此记忆胞的临界电压位于区间902;若经由读取某一个记忆胞而获得的软位sb1~sb5是“00111”,表示此记忆胞的临界电压位于区间903;若经由读取某一个记忆胞而获得的软位sb1~sb5是“00011”,表示此记忆胞的临界电压位于区间904;若经由读取某一个记忆胞而获得的软位sb1~sb5是“00001”,表示此记忆胞的临界电压位于区间905;若经由读取某一个记忆胞而获得的软位sb1~sb5是“00000”,表示此记忆胞的临界电压位于区间906。在一范例实施例中,在传送软位信息给内存管理电路502之前,可复写式非易失性内存 模块406会将对应于同一个记忆胞的至少部分软位作逻辑运算,以减少软位信息中软位的总数。以图9为例,可复写式非易失性内存模块406亦可对应于某一个记忆胞的软位sb2与软位sb3作逻辑上的异或(exclusiveor,xor)运算以获得第一运算结果,对应于此记忆胞的软位sb4与软位sb5作逻辑上的异或运算以获得第二运算结果,并且将此记忆胞的软位sb1、第一运算结果及第二运算结果作为对应于此记忆胞的软位信息941传送给内存管理电路502。其中,第一运算结果及第二运算结果也可分别视为是一个软位。相对于传送软位信息931,由于软位信息941所包含的软位的总数较少,软位信息941可以更快地传送给内存管理电路502。错误检查与校正电路508会根据所获得的软位信息执行一个软译码程序,从而尝试更正一个码字中存在的错误。例如,此码字中的每一个位是藉由上述读取电压准位vs1~vs5的其中之一来读取某一个记忆胞而获得。在一范例实施例中,用来读取此码字中的每一个位的软决策电压亦称为一个正负号(sign)读取电压准位。在一范例实施例中,错误检查与校正电路508还会查询一查找表以获得一组信道可靠度信息。例如,当前所欲译码的码字中的每一个位都会被对应至一个信道可靠度信息,而此信道可靠度信息用以表示码字中的每一个位被译码为“1”或“0”的机率是多少。藉此,错误检查与校正电路508会根据此信道可靠度信息与所获得的软位信息来执行软译码程序。此外,在另一范例实施例中,此软位信息也可以被用来更新所使用的信道可靠度信息。在一范例实施例中,软位信息中的每一个软位亦可称为是一个验证位,并且可靠度信息是指对数相似度比值(loglikelihoodratio,llr)。所属
技术领域
:中普通技术人员应当知晓如何利用信道可靠度信息(例如,对数相似度比值)与所获得的软位信息来执行软译码程序,在此便不赘述。此外,对应于不同的译码算法,软译码程序中所采用的信道可靠度信息也可能是指其他用于描述信道状态的信道信息,本发明不加以限制。在软译码程序中,若码字中的错误全部被更正,表示译码成功,错误检查与校正电路508会输出译码成功的位并结束软译码程序(或整个译码程序)。然而,若码字中的错误并未全部被更正,表示译码失败,内存管理电路502可调整下一次用来读取第一记忆胞的软决策电压准位并且更多的软译码程序可接续被执行。在一范例实施例中,若第一硬译码程序失败,内存管理电路502会判断第一记忆胞是属于第一类记忆胞或第二类记忆胞。其中,第一类记忆胞的损耗程度高于第二类记忆胞的损耗程度。若第一记忆胞属于第一类记忆胞,表示第一记忆胞的损耗程度不高,则内存管理电路502会选择接续使用更多的硬译码程序来译码第一记忆胞所储存的数据。例如,内存管理电路502会发送上述第二硬读取指令序列并且指示错误检查与校正电路508根据所获得的第二硬位信息执行第二硬译码程序。关于硬译码程序的操作细节可参考图8的范例实施例,在此便不赘述。相对于在第一硬译码程序失败后直接采用软译码程序,虽然硬译码程序的译码成功率较低,但是硬译码程序有译码速度较快的优势。因此,对于第一类记忆胞来说,持续地采用硬译码程序仍有很高的机率可以快速且成功地完成整个译码程序。另一方面,若第一记忆胞属于第二类记忆胞,表示第一记忆胞的损耗程度较高,故内存管理电路502会选择直接使用软译码程序来译码第一记忆胞所储存的数据。例如,内存管理电路502会发送上述软读取指令序列并且指示错误检查与校正电路508根据所获得的软位信息执行软译码程序。关于软译码程序的操作细节可参考图9的范例实施例,在此便不赘述。相对于持续地采用硬译码程序,虽然软译码程序的译码速度较慢(运算复杂度较高),但是软译 码程序有译码成功率较高的优势。因此,对于第二类记忆胞来说,在第一硬译码程序失败后直接采用软译码程序有较高机率可以加快整个译码程序的完成。在一范例实施例中,内存管理电路502会判断第一记忆胞的损耗程度是否符合一预设条件。若第一记忆胞的损耗程度符合此默认条件,内存管理电路502会判定第一记忆胞属于该第一类记忆胞。若第一记忆胞的损耗程度不符合此默认条件,内存管理电路502会判定第一记忆胞属于第二类记忆胞。在一范例实施例中,内存管理电路502会判断第一记忆胞的临界电压分布是否符合一默认分布。若第一记忆胞的临界电压分布符合此默认分布,内存管理电路502会判定第一记忆胞的损耗程度符合此默认条件并且第一记忆胞属于第一类记忆胞。若第一记忆胞的临界电压分布不符合此默认分布,内存管理电路502会判定第一记忆胞的损耗程度不符合此默认条件并且第一记忆胞属于第二类记忆胞。在一范例实施例中,若第一记忆胞的临界电压分布类似于图7b中的分布711与分布721,则第一记忆胞会被判定为属于第一类记忆胞。若第一记忆胞的临界电压分布类似于图7c中的分布712与分布722,则第一记忆胞会被判定为属于第二类记忆胞。例如,可藉由至少一分布模型来定义怎样的临界电压分布符合默认分布和/或怎样的临界电压分布不符合默认分布。在一范例实施例中,若第一记忆胞中临界电压属于某一重叠区域(例如,图7b的重叠区域731)的记忆胞的总数小于一预设数目,则第一记忆胞会被判定为属于第一类记忆胞。若第一记忆胞中临界电压属于某一重叠区域(例如,图7c的重叠区域741)的记忆胞的总数大于此预设数目,则第一记忆胞会被判定为属于第二类记忆胞。在一范例实施例中,内存管理电路502会判断第一记忆胞的一损耗程度值是否小于一默认值。若第一记忆胞的损耗程度值小于默认值,内存管理电路502会判定第一记忆胞的损耗程度符合默认条件并且第一记忆胞属于第一类记忆胞。若第一记忆胞的损耗程度值等于或大于此默认值,内存管理电路502会判定第一记忆胞的损耗程度不符合默认条件并且第一记忆胞属于第二类记忆胞。在一范例实施例中,内存管理电路502会根据第一记忆胞的一损耗参数决定第一记忆胞的损耗程度值。例如,第一记忆胞的损耗参数包括抹除计数、程序化计数、读取计数、位错误率、数据储存时间、程序化忙碌时间及重试计数的至少其中之一。第一记忆胞的抹除计数用以表示第一记忆胞的至少其中之一被抹除了几次或者第一记忆胞平均被抹除了几次。第一记忆胞的程序化计数用以表示第一记忆胞的至少其中之一被程序化了几次或者第一记忆胞平均被程序化了几次。第一记忆胞的读取计数用以表示第一记忆胞的至少其中之一被读取了几次或者第一记忆胞平均被读取了几次。第一记忆胞的位错误率用以表示第一记忆胞的至少其中之一所储存的位数据中有几个错误位或者第一记忆胞所储存的位数据中平均有几个错误位。第一记忆胞的数据储存时间用以表示目前储存于第一记忆胞的至少其中之一中的数据(平均)被储存了多久。第一记忆胞的程序化忙碌时间用以表示程序化第一记忆胞所需的忙碌时间或多次程序化第一记忆胞所需的平均忙碌时间。例如,当程序化第一记忆胞(例如,将某一数据储存至第一记忆胞)时,内存管理电路502会记录用于程序化第一记忆胞的忙碌时间并且根据所记录的忙碌时间来决定第一记忆胞的(平均)程序化忙碌时间。在此忙碌时间内,第一记忆胞的程序化操作尚未完成。第一记忆胞的重试计数用以表示完成对应于第一记忆胞或者其他与第一记忆胞有关联的记忆胞(以下称为第二记忆胞)的译码所需要重复执行的硬译码程序的一总次数,或者平均需要执行几次硬译码程序才能成完成对应于第一记忆胞或第二记忆胞的译码。在一范例实施例中,内存管理电路502会指示程序化可复写式非易失性内存模块406中的第二记忆胞。然后,当欲读取储存于第二记忆胞中的数据时,错误检查与校正电路508会对应于第二记忆胞执行至少一次(以下称为第一次数)的硬译码程序。内存管理电路502会记录此第一次数并且根据此第一次数来决定第一记忆胞的重试计数。在一范例实施例中,映像至第一记忆胞的一逻辑单元(以下称为第一逻辑单元)是接续于映像至第二记忆胞的另一逻辑单元(以下称为第二逻辑单元)。例如,当主机系统11指示储存一数据至多个连续排列(或编号)的逻辑单元时,此数据的一第一部分先被储存至第二逻辑单元,而此数据的一第二部分接续地被储存至第一逻辑单元。因此,若此数据的第一部分被储存至第二记忆胞并且此数据的第二部分被储存至第一记忆胞,则第二逻辑单元会被映像至第二记忆胞或第二记忆胞所属的实体单元,并且第一逻辑单元会被映像至第一记忆胞或第一记忆胞所属的实体单元。然后,当欲连续地读取储存于第二记忆胞与第一记忆胞的数据时,对应于第二记忆胞的硬译码程序会先被执行并且内存管理电路502可据以更新第一记忆胞的重试计数。然后,当欲执行对应于第一记忆胞的译码时,内存管理电路502可以根据第一记忆胞的重试计数来判定第一记忆胞属于第一类记忆胞或第二类记忆胞。在一范例实施例中,第一记忆胞与第二记忆胞是包含于(或属于)可复写式非易失性内存模块406中的同一个实体抹除单元。在一范例实施例中,第一记忆胞的损耗参数正相关于第一记忆胞的损耗程度值。例如,若第一记忆胞的抹除计数、程序化计数、读取计数、位错误率、数据储存时间、程序化忙碌时间及重试计数的至少其中之一越高,则第一记忆胞的损耗程度值就越大。例如,在一范例实施例中,当第一记忆胞的抹除计数小于200时,第一记忆胞会被视为第一类记忆胞;当第一记忆胞持续地被使用导致其抹除计数高于200时,第一记忆胞会被视为第二类记忆胞。此外,在另一范例实施例中,环境的温度、湿度等各种会随着记忆胞的使用时间、使用状态或使用程度来影响记忆胞的可靠度的参数都可以被视为第一记忆胞的损耗参数,从而影响对于第一记忆胞是否属于第一类记忆胞(或第二类记忆胞)的判断。在一范例实施例中,在判定第一记忆胞属于第一类记忆胞与第二类记忆胞的其中之一之后,这个判断结果可以直接套用至与第一记忆胞属于同一个实体抹除单元的其他记忆胞(以下称为第三记忆胞)。然后,当对应于第三记忆胞的第一硬译码程序失败时,此判断结果可以被用来决定对应于第三记忆胞是要接续使用硬译码程序还是直接切换到软译码程序。或者,在另一范例实施例中,当判定上述第二记忆胞属于第一类记忆胞与第二类记忆胞的其中之一之后,这个判断结果亦可以直接套用至第一记忆胞。在一范例实施例中,在接续于第一硬译码程序之后执行的软译码程序中,所使用的信道可靠度信息会是一组默认信道可靠度信息。若使用此默认信道可靠度信息的软译码程序失败,则内存管理电路502会追踪(track)一个最佳(optimal)读取电压准位并根据此最佳读取电压准位来调整软决策电压准位。以图9为例,此最佳读取电压准位会被设定在分布910与分布920之间的“v”字形的最低点(例如,读取电压准位vs3附近)。然后,内存管理电路502会指示基于调整后的软决策电压准位来再次读取第一记忆胞以获得相对应的软位信息,并且错误检 查与校正电路508会根据所获得的软位信息与默认信道可靠度信息执行下一个软译码程序。若此软译码程序更正了相应的码字中的所有错误,表示译码成功,错误检查与校正电路508会输出译码成功的位并且结束软译码程序(或整个译码程序)。若此软译码程序仍然失败,则内存管理电路502会判断软译码程序的执行次数是否达到另一门槛值(以下称为第二门槛值)。若软译码程序的执行次数已达到第二门槛值,则内存管理电路502会判定译码失败并且结束软译码程序(或结束整个译码程序)。若软译码程序的执行次数尚未达到第二门槛值,则内存管理电路502会再次查询上述查找表以调整所使用的信道可靠度信息并根据调整后的信道可靠度信息再次执行下一个软译码程序。图10是根据本发明的一范例实施例所显示的译码方法的流程图。请参照图10,在步骤s1001中,程序化第一记忆胞。在步骤s1002中,基于硬决策电压准位读取第一记忆胞以获得硬位信息。在步骤s1003中,根据所获得的硬位信息执行硬译码程序。在步骤s1004中,判断所执行的硬译码程序是否失败(或成功)。若所执行的硬译码程序成功,在步骤s1005中,输出译码成功的位并结束硬译码程序。若所执行的硬译码程序失败,在步骤s1006中,判断第一记忆胞是否属于第一类记忆胞(或第二类记忆胞)。若第一记忆胞属于第一类记忆胞,在步骤s1007中,调整硬决策电压准位。然后,步骤s1002以及后续步骤会被重复执行。值得注意的是,在重复执行的步骤s1002中,是使用于步骤s1007中调整后的硬决策电压准位来读取第一记忆胞。若第一记忆胞不属于第一类记忆胞(即,属于第二类记忆胞),则在步骤s1008中,切换至软译码模式并且基于多个软决策电压准位来读取第一记忆胞以获得软位信息。在步骤s1009中,根据所获得的软位信息来执行软译码程序。图11a与图11b是根据本发明的另一范例实施例所显示的译码方法的流程图。请参照图11a,在步骤s1101中,程序化第一记忆胞。在步骤s1102中,基于硬决策电压准位读取第一记忆胞以获得硬位信息。在步骤s1103中,根据所获得的硬位信息执行硬译码程序。在步骤s1104中,判断所执行的硬译码程序是否失败(或成功)。若所执行的硬译码程序成功,在步骤s1105中,输出译码成功的位并结束硬译码程序。若所执行的硬译码程序失败,在步骤s1106中,判断已执行的硬译码程序的执行次数是否达到第一门槛值。若已执行的硬译码程序的执行次数已达到第一门槛值(例如,高于或等于第一门槛值),接续执行步骤s1105。若已执行的硬译码程序的执行次数尚未达到第一门槛值(例如,低于第一门槛值),则在步骤s1107中,判断第一记忆胞是否属于第一类记忆胞(或第二类记忆胞)。若第一记忆胞属于第一类记忆胞,在步骤s1108中,调整硬决策电压准位。然后,步骤s1102以及后续步骤会被重复执行。若第一记忆胞不属于第一类记忆胞(即,属于第二类记忆胞),则在步骤s1109中,基于多个软决策电压准位来读取第一记忆胞以获得软位信息。在步骤s1110中,根据所获得的软位信息来执行软译码程序。请接续参照图11b,在步骤s1111中,判断所执行的软译码程序是否失败(或成功)。若所执行的软译码程序成功,在步骤s1112中,输出译码成功的位并结束软译码程序。若所执行的软译码程序失败,在步骤s1113中,追踪最佳读取电压准位并调整软决策电压准位。在步骤s1114中,基于调整后的软决策电压准位读取第一记忆胞以获得软位信息。在步骤s1115中,根据所获得的软位信息执行软译码程序。在步骤s1116中,判断所执行的软译码程序是否失败(或成功)。若所执行的软译码程序成功,接续执行步骤s1112。若所执行的软译码程序失败,在步骤s1117中,判断已执行的软译码程序的执行次数是否达到第二门槛值。若已执 行的软译码程序的执行次数已达到第二门槛值(例如,高于或等于第二门槛值),则接续执行步骤s1112。若已执行的软译码程序的执行次数尚未达到第二门槛值(例如,低于第二门槛值),则在步骤s1118中,更新软译码程序所使用的可靠度信息(例如,对数相似度比值)。然后,步骤s1115以及后续步骤会被重复执行。然而,图10、图11a及图11b中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图10、图11a及图11b中各步骤可以实作为多个程序代码或是电路,本发明不加以限制。此外,图10、图11a及图11b的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。综上所述,若对于第一记忆胞的第一硬译码程序失败且第一记忆胞属于第一类记忆胞,则对于此第一记忆胞的译码会始终维持在硬译码模式。然而,若对于第一记忆胞的第一硬译码程序失败且第一记忆胞不属于第一类记忆胞(例如,第一记忆胞属于第二类记忆胞),则对于此第一记忆胞的译码会直接切换到软译码模式。藉此,相对于一般制式的译码流程(例如,只能执行硬译码,或者硬译码失败后直接切换至软译码),本发明可以根据记忆胞的使用状态而在译码速度与译码成功率之间取得平衡。虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属
技术领域
:中普通技术人员,在不脱离本发明的精神和范围内,当可作些许的改动与润饰,故本发明的保护范围当视所附权利要求界定范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1