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

文档序号:11261878阅读:251来源:国知局
解码方法、存储器控制电路单元及存储器存储装置与流程

本发明是有关于一种解码方法,且特别是有关于一种用于可复写式非挥发性存储器模块的数据解码方法、存储器控制电路单元及存储器存储装置。



背景技术:

数码相机、移动电话与mp3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于可复写式非挥发性存储器模块(例如,快速存储器)具有数据非挥发性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种便携式多媒体装置中。

一般来说,写入至可复写式非挥发性存储器模块的数据都会根据一个错误更正码来编码,并且从可复写式非挥发性存储器模块中所读取的数据也会经过对应的程序来解码。例如,若使用涡轮码演算法通过迭代方式来实施错误更正码,数据会先被分割为子数据单元,每一个子数据单元会对应一个子错误更正码,由此些子错误更正码组成对应数据的错误更正码。然而,子错误更正码的更正能力有其上限。倘若依据子错误更正码解码子数据单元时发生错误校正(mis-correct)的情况,整体的校正能力会因此而下降。基此,如何提升错误更正码的校正能力以对所读取的数据顺利地进行解码而获取原始数据,是此领域技术人员所致力的目标。



技术实现要素:

本发明提供一种解码方法、存储器控制电路单元及存储器存储装置,可提升对所读取数据的解码效能。

本发明的一范例实施例提出一种用于可复写式非挥发性存储器模块的解码方法。可复写式非挥发性存储器模块具有多个存储单元。本方法包括根据第一电压从该些存储单元中读取数据,其中数据包括使用者数据串与错误检查与校正码组,使用者数据串包括多个子数据单元。本方法也包括以第一解 码演算法对此些子数据单元至少部份进行解码以获取多个已解码子数据单元,其中此些已解码子数据单元包括已校正位元,并且已校正位元的值从原始位元值被解码成校正位元值。本方法还包括判断已校正位元是否符合可靠度条件。本方法还包括倘若已校正位元符合可靠度条件,将已校正位元的值回复为原始位元值。

在本发明的一范例实施例中,上述的解码方法还包括根据第二解码演算法对包含该原始位元值的一数据串进行解码。

在本发明的一范例实施例中,上述的解码方法还包括根据第一电压决定预设区域。上述判断已校正位元是否符合可靠度条件的步骤包括:判断存储已校正位元的存储单元的临界电压是否落在预设区域之内;倘若存储已校正位元的存储单元的临界电压落在预设区域之内,判定已校正位元不符合可靠度条件;以及倘若存储已校正位元的存储单元的临界电压值非落在预设区域之内,判定已校正位元符合可靠度条件。

在本发明的一范例实施例中,上述倘若已校正位元符合可靠度条件,将已校正位元的值回复为原始位元值的步骤之后还包括:计数迭代次数;判断迭代次数是否达到预设次数;以及倘若迭代次数非达到预设次数,根据第一电压重新决定预设区域。

在本发明的一范例实施例中,上述以第一解码演算法对此些子数据单元至少部份进行解码以获取此些已解码子数据单元包括:根据第一解码演算法获取此些子数据单元中的错误位元,其中错误位元的值为原始位元值;调整错误位元的值以取得已校正位元的值,其中已校正位元的值为校正位元值;以及根据已校正位元获取此些已解码子数据单元。

在本发明的一范例实施例中,上述倘若已校正位元符合可靠度条件,将已校正位元的值回复为原始位元值的步骤包括:将已校正位元的值回复为原始位元值,并且根据已校正位元的值更新此些已解码子数据单元。

在本发明的一范例实施例中,上述的错误检查与校正码组包括多个第一方向错误校正码与多个第二方向错误校正码,此些第一方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第一方向数据段,此些第二方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第二方向数据段。上述以第一解码演算法对此些子数据单元至少部份 进行解码以获取此些已解码子数据单元包括:根据此些第一方向错误校正码解码此些第一方向数据段以获取此些已解码子数据单元。

在本发明的一范例实施例中,上述的解码方法还包括:根据此些第二方向错误校正码解码此些第二方向数据段以获取多个更新已解码子数据单元;以及根据此些更新已解码子数据单元获取对应使用者数据的已校正数据串。

在本发明的一范例实施例中,上述的此些第一方向数据段为以矩阵形式排列的此些子数据单元的多个行数据段,并且此些第二方向数据段为以矩阵形式排列的此些子数据单元的多个列数据段。

在本发明的一范例实施例中,上述的此些第一方向错误校正码对应第一最大可校正错误位元数,此些第二方向错误校正码对应第二最大可校正错误位元数,并且第一最大可校正错误位元数小于第二最大可校正错误位元数。

本发明的一范例实施例提出一种用于控制可复写式非挥发性存储器模块的存储器控制电路单元。可复写式非挥发性存储器模块具有多个存储单元。本存储器控制电路单元包括主机接口、存储器接口、存储器管理电路与错误检查与校正电路。主机接口电性连接至主机系统。存储器接口电性连接至可复写式非挥发性存储器模块。存储器管理电路电性连接至主机接口与存储器接口。错误检查与校正电路电性连接至存储器管理电路。存储器管理电路发送读取指令序列以根据第一电压从此些存储单元中读取数据,其中此数据包括使用者数据串与错误检查与校正码组,使用者数据串包括多个子数据单元。错误检查与校正电路以第一解码演算法对此些子数据单元至少部份进行解码以获取多个已解码子数据单元,其中此些已解码子数据单元包括已校正位元,并且已校正位元的值从原始位元值被解码成校正位元值。错误检查与校正电路判断已校正位元是否符合可靠度条件。倘若已校正位元符合可靠度条件,错误检查与校正电路将已校正位元的值回复为原始位元值。

在本发明的一范例实施例中,上述的错误检查与校正电路根据一第二解码演算法对包含该原始位元值的一数据串进行解码。

在本发明的一范例实施例中,上述的错误检查与校正电路根据第一电压决定预设区域。在上述判断已校正位元是否符合可靠度条件的运作中,上述的错误检查与校正电路判断存储已校正位元的存储单元的临界电压是否落在预设区域之内。倘若存储已校正位元的存储单元的临界电压落在预设区域之 内,上述的错误检查与校正电路判定已校正位元不符合可靠度条件。倘若存储已校正位元的存储单元的临界电压值非落在预设区域之内,上述的错误检查与校正电路判定已校正位元符合可靠度条件。

在本发明的一范例实施例中,上述的错误检查与校正电路计数迭代次数。上述的错误检查与校正电路判断迭代次数是否达到预设次数。倘若迭代次数非达到预设次数,上述的错误检查与校正电路根据第一电压重新决定预设区域。

在本发明的一范例实施例中,在上述以第一解码演算法对此些子数据单元至少部份进行解码以获取此些已解码子数据单元的运作中,上述的错误检查与校正电路根据第一解码演算法获取此些子数据单元中的错误位元,其中错误位元的值为原始位元值。上述的错误检查与校正电路调整错误位元的值以取得已校正位元的值,其中已校正位元的值为校正位元值。上述的错误检查与校正电路根据已校正位元获取此些已解码子数据单元。

在本发明的一范例实施例中,在上述倘若已校正位元符合可靠度条件,将已校正位元的值回复为原始位元值的运作中,上述的错误检查与校正电路将已校正位元的值回复为原始位元值,并且根据已校正位元的值更新此些已解码子数据单元。

在本发明的一范例实施例中,上述的错误检查与校正码组包括多个第一方向错误校正码与多个第二方向错误校正码,此些第一方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第一方向数据段,此些第二方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第二方向数据段。在上述以第一解码演算法对此些子数据单元至少部份进行解码以获取此些已解码子数据单元的运作中,上述的错误检查与校正电路根据此些第一方向错误校正码解码此些第一方向数据段以获取此些已解码子数据单元。

在本发明的一范例实施例中,上述的错误检查与校正电路根据此些第二方向错误校正码解码此些第二方向数据段以获取多个更新已解码子数据单元。上述的错误检查与校正电路根据此些更新已解码子数据单元获取对应使用者数据的已校正数据串。

在本发明的一范例实施例中,其中此些第一方向数据段为以矩阵形式排 列的此些子数据单元的多个行数据段,并且此些第二方向数据段为以矩阵形式排列的此些子数据单元的多个列数据段。

在本发明的一范例实施例中,其中此些第一方向错误校正码对应第一最大可校正错误位元数,此些第二方向错误校正码对应第二最大可校正错误位元数,并且第一最大可校正错误位元数小于第二最大可校正错误位元数。

本发明的一范例实施例提出一种存储器存储装置。其包括连接接口单元、可复写式非挥发性存储器模块与存储器控制电路单元。连接接口单元电性连接至主机系统。可复写式非挥发性存储器模块具有多个存储单元。存储器控制电路单元电性连接至连接接口单元与可复写式非挥发性存储器模块。存储器控制电路单元发送读取指令序列以根据第一电压从此些存储单元中读取数据,其中此数据包括使用者数据串与错误检查与校正码组,使用者数据串包括多个子数据单元。存储器控制电路单元以第一解码演算法对此些子数据单元至少部份进行解码以获取多个已解码子数据单元,其中此些已解码子数据单元包括已校正位元,并且已校正位元的值从原始位元值被解码成校正位元值。存储器控制电路单元判断已校正位元是否符合可靠度条件。倘若已校正位元符合可靠度条件,存储器控制电路单元将已校正位元的值回复为原始位元值。

在本发明的一范例实施例中,上述的存储器控制电路单元根据一第二解码演算法对包含该原始位元值的一数据串进行解码。

在本发明的一范例实施例中,上述的存储器控制电路单元根据第一电压决定预设区域。在上述判断已校正位元是否符合可靠度条件的运作中,上述的存储器控制电路单元判断存储已校正位元的存储单元的临界电压是否落在预设区域之内。倘若存储已校正位元的存储单元的临界电压落在预设区域之内,上述的存储器控制电路单元判定已校正位元不符合可靠度条件。倘若存储已校正位元的存储单元的临界电压值非落在预设区域之内,上述的存储器控制电路单元判定已校正位元符合可靠度条件。

在本发明的一范例实施例中,上述的存储器控制电路单元计数迭代次数,并且判断迭代次数是否达到预设次数。倘若迭代次数非达到预设次数,上述的存储器控制电路单元根据第一电压重新决定预设区域。

在本发明的一范例实施例中,在上述以第一解码演算法对此些子数据单 元至少部份进行解码以获取此些已解码子数据单元的运作中,上述的存储器控制电路单元根据第一解码演算法获取此些子数据单元中的错误位元,其中错误位元的值为原始位元值。上述的存储器控制电路单元调整错误位元的值以取得已校正位元的值,其中已校正位元的值为校正位元值。上述的存储器控制电路单元根据已校正位元获取此些已解码子数据单元。

在本发明的一范例实施例中,在上述倘若已校正位元符合可靠度条件,将已校正位元的值回复为原始位元值的运作中,上述的存储器控制电路单元将已校正位元的值回复为原始位元值,并且根据已校正位元的值更新此些已解码子数据单元。

在本发明的一范例实施例中,上述的错误检查与校正码组包括多个第一方向错误校正码与多个第二方向错误校正码,此些第一方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第一方向数据段,此些第二方向错误校正码是分别地对应以矩阵形式排列的此些子数据单元之中的多个第二方向数据段。在上述以第一解码演算法对此些子数据单元至少部份进行解码以获取此些已解码子数据单元的运作中,上述的存储器控制电路单元根据此些第一方向错误校正码解码此些第一方向数据段以获取此些已解码子数据单元。

在本发明的一范例实施例中,上述的存储器控制电路单元根据此些第二方向错误校正码解码此些第二方向数据段以获取多个更新已解码子数据单元。上述的存储器控制电路单元根据此些更新已解码子数据单元获取对应使用者数据的已校正数据串。

在本发明的一范例实施例中,其中此些第一方向数据段为以矩阵形式排列的此些子数据单元的多个行数据段,并且此些第二方向数据段为以矩阵形式排列的此些子数据单元的多个列数据段。

在本发明的一范例实施例中,其中此些第一方向错误校正码对应第一最大可校正错误位元数,此些第二方向错误校正码对应第二最大可校正错误位元数,并且第一最大可校正错误位元数小于第二最大可校正错误位元数。

基于上述,本发明所提供的解码方法、存储器控制电路单元与存储器存储装置可以在解码的过程中,通过检查已解码的数据中的已校正位元是否符合可靠度条件以判断已校正位元的正确性。并且,倘若不符合可靠度条件, 会再次调整已校正位元的值,由此避免发生错误校正的情况,进而增进对数据的整体校正能力,提升解码效能。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

图1是根据一范例实施例所示出的主机系统、存储器存储装置及输入/输出(i/o)装置的示意图;

图2是根据另一范例实施例所示出的主机系统、存储器存储装置及输入/输出(i/o)装置的示意图;

图3是根据另一范例实施例所示出的主机系统与存储器存储装置的示意图;

图4是根据一范例实施例所示出的主机系统与存储器存储装置的概要方块图;

图5是根据一范例实施例所示出的存储器控制电路单元的概要方块图;

图6与图7是根据一范例实施例所示出的管理实体抹除单元的范例示意图;

图8是根据本发明的一范例实施例所示出的存储单元的临界电压分布的示意图;

图9是根据本发明的另一范例实施例所示出的存储单元的临界电压分布的示意图;

图10是根据本发明的又一范例实施例所示出的存储单元的临界电压分布的示意图;

图11是根据一范例实施例所示出的错误检查与校正码框的示意图;

图12是根据一范例实施例所示出的使用区块涡轮码进行错误校正编码程序的示意图;

图13a与图13b是根据一范例实施例所示出的设定预设区域的示意图;

图14是根据一范例实施例所示出的根据解码结果调整已校正位元的示意图;

图15是根据一范例实施例所示出的解码方法的流程图。

附图标记说明:

10:存储器存储装置;

11:主机系统;

12:输入/输出(i/o)装置;

110:系统汇流排;

111:处理器;

112:随机存取存储器(ram);

113:只读存储器(rom);

114:数据传输接口;

20:主机板;

201:u盘;

202:内存卡;

203:硬盘;

204:无线存储器存储装置;

205:全球定位系统模块;

206:网络接口卡;

207:无线传输装置;

208:键盘;

209:屏幕;

210:喇叭;

30:存储器存储装置;

31:主机系统;

32:sd卡;

33:cf卡;

34:嵌入式存储装置;

341:嵌入式多媒体卡;

342:嵌入式多芯片封装存储装置;

402:连接接口单元;

404:存储器控制电路单元;

406:可复写式非挥发性存储器模块;

410(0)~410(n)、820、920、930:实体抹除单元;

502:存储器管理电路;

504:主机接口;

506:存储器接口;

508:缓冲存储器;

510:电源管理电路;

512:错误检查与校正电路;

602:数据区;

604:闲置区;

606:系统区;

608:取代区;

lba(0)~lba(h):逻辑单元;

lz(0)~lz(m):逻辑区域;

810、820、910~940、1010~1080:状态;

va~vg、vread、v1、v2:电压;

eccf1:错误检查与校正码框;

ecc1:错误检查与校正码组;

ud1:数据;

db1~db32:子数据单元;

rg1~rg4、1420(1)~1420(4):列数据段;

cg1~cg8、1410(1)~1410(n):行数据段;

bch1~bch12:错误校正码;

1200、1400:数据矩阵;

1310、1320:临界电压分布;

d1、d2:预设差值;

bread、b1、b2、b3、b4、1401、1402:位元;

r1、r2:预设区域;

s1501:从主机系统接收读取指令的步骤;

s1503:下达读取指令序列以根据一读取电压从多个存储单元中读取数据,其中所读取的数据包括使用者数据串与错误检查与校正码组的步骤;

s1505:根据错误检查与校正码组中的第一方向错误校正码解码使用者数据串中的第一方向数据段的子数据单元以获取已解码子数据单元的步骤;

s1507:判断已解码子数据单元中是否存在已校正位元,其中已校正位元的值从原始位元值被解码成校正位元值的步骤;

s1509:判断存储已校正位元的存储单元的临界电压是否符合可靠度条件的步骤;

s1511:将已校正位元的值回复为原始位元值,并根据已校正位元的值更新已解码子数据单元的步骤;

s1513:根据已解码子数据单元获取对应使用者数据的已校正数据串的步骤。

具体实施方式

一般而言,存储器存储装置(亦称,存储器存储系统)包括可复写式非挥发性存储器模块与控制器(亦称,控制电路单元)。通常存储器存储装置是与主机系统一起使用,以使主机系统可将数据写入至存储器存储装置或从存储器存储装置中读取数据。

图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可例如是u盘201、内存卡202、硬盘(solidstatedrive,ssd)203或无线存储器存储装置204。无线存储器存储装置204可例如是近距离无线通讯(nearfieldcommunicationstorage,nfc)存储器存储装置、无线保真(wifi)存储器存储装置、蓝牙(bluetooth)存储器存储装置或低功耗蓝牙存储器存储装置(例如,ibeacon)等以各式无线通讯技术为基础的存储器存储装置。此外,主机板20也可以通过系统汇流排110电性连接至全球定位系统(globalpositioningsystem,gps)模块205、网络接口卡206、无线传输装置207、键盘208、屏幕209、喇叭210等各式i/o装置。例如,在一范例实施例中,主机板20可通过无线传输装置207存取无线存储器存储装置204。

在一范例实施例中,所提及的主机系统为可实质地与存储器存储装置配合以存储数据的任意系统。虽然在上述范例实施例中,主机系统是以电脑系统来作说明,然而,图3是根据另一范例实施例所示出的主机系统与存储器存储装置的示意图。请参照图3,在另一范例实施例中,主机系统31也可以是数码相机、摄像机、通讯装置、音频播放器、视频播放器或平板电脑等系统,而存储器存储装置30可为其所使用的sd卡32、cf卡33或嵌入式存储装置34等各式非挥发性存储器存储装置。嵌入式存储装置34包括嵌入式多媒体卡(embeddedmmc,emmc)341及/或嵌入式多芯片封装存储装置(embeddedmultichippackage,emcp)342等各类型将存储器模块直接电性连接于主机系统的基板上的嵌入式存储装置。

图4是根据一范例实施例所示出的主机系统与存储器存储装置的概要方块图。

请参照图4,存储器存储装置10包括连接接口单元402、存储器控制电路单元404与可复写式非挥发性存储器模块406。

在本范例实施例中,连接接口单元402是相容于序列先进附件(serialadvancedtechnologyattachment,sata)标准。然而,必须了解的是,本发明不限于此,连接接口单元402也可以是符合并列先进附件(paralleladvancedtechnologyattachment,pata)标准、电气和电子工程师协会(instituteof electricalandelectronicengineers,ieee)1394标准、高速周边零件连接接口(peripheralcomponentinterconnectexpress,pciexpress)标准、通用序列汇流排(universalserialbus,usb)标准、超高速一代(ultrahighspeed-i,uhs-i)接口标准、超高速二代(ultrahighspeed-ii,uhs-ii)接口标准、安全数字(securedigital,sd)接口标准、记忆棒(memorystick,ms)接口标准、多芯片封装(multi-chippackage)接口标准、多媒体存储卡(multimediacard,mmc)接口标准、嵌入式多媒体存储卡(embeddedmultimediacard,emmc)接口标准、通用快速存储器(universalflashstorage,ufs)接口标准、嵌入式多芯片封装(embeddedmultichippackage,emcp)接口标准、小型快速(compactflash,cf)接口标准、整合式驱动电子接口(integrateddeviceelectronics,ide)标准或其他适合的标准。在本范例实施例中,连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元的芯片外。

存储器控制电路单元404用以执行以硬件或软件实作的多个逻辑门或控制指令,并且根据主机系统11的指令在可复写式非挥发性存储器模块406中进行数据的写入、读取与抹除等运作。

可复写式非挥发性存储器模块406是电性连接至存储器控制电路单元404,并且用以存储主机系统11所写入的数据。可复写式非挥发性存储器模块406具有实体抹除单元410(0)~410(n)。例如,实体抹除单元410(0)~410(n)可属于同一个存储器晶粒(die)或者属于不同的存储器晶粒。每一实体抹除单元分别具有复数个实体程序化单元,其中属于同一个实体抹除单元的实体程序化单元可被独立地写入且被同时地抹除。然而,必须了解的是,本发明不限于此,每一实体抹除单元是可由64个实体程序化单元、256个实体程序化单元或其他任意个实体程序化单元所组成。

在本范例实施例中,可复写式非挥发性存储器模块406中的存储单元会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体抹除单元。特别是,在同一条字线上的存储单元会构成一或多个实体程序化单元。

更详细来说,实体抹除单元为抹除的最小单位。亦即,每一实体抹除单元含有最小数目的一并被抹除的存储单元。实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。每一实体程序化单元通 常包括数据位元区与冗余位元区。数据位元区包含多个实体存取位址用以存储使用者的数据,而冗余位元区用以存储系统的数据(例如,控制信息与错误更正码)。在本范例实施例中,每一个实体程序化单元的数据位元区中会包含8个实体存取位址,且一个实体存取位址的大小为512位元组(byte)。然而,在其他范例实施例中,数据位元区中也可包含数目更多或更少的实体存取位址,本发明并不限制实体存取位址的大小以及个数。例如,在一范例实施例中,实体抹除单元为实体区块,并且实体程序化单元为实体页面或实体扇区,但本发明不以此为限。

在本范例实施例中,可复写式非挥发性存储器模块406为多阶存储单元(multilevelcell,mlc)nand型快速存储器模块(即,一个存储单元中可存储2个数据位元的快速存储器模块)。然而,本发明不限于此,可复写式非挥发性存储器模块406也可是单阶存储单元(singlelevelcell,slc)nand型快速存储器模块(即,一个存储单元中可存储1个数据位元的快速存储器模块)、复数阶存储单元(trinarylevelcell,tlc)nand型快速存储器模块(即,一个存储单元中可存储3个数据位元的快速存储器模块)、其他快速存储器模块或其他具有相同特性的存储器模块。

在可复写式非挥发性存储器模块406中的每一个存储单元可通过改变存储单元的临界电压(thresholdvoltage)来存储一个或更多的位元(或,位(digit))。特别是,在每一个存储单元中,控制门与通道之间提供了一个电荷存储层。通过施加一个写入电压到控制门来改变电荷存储层中的电子数量,可进一步改变存储单元的电压。这个改变电压的过程也被称为“将数据写入存储单元”或是“程序化存储单元”。根据临界电压的改变,可复写式非挥发性存储器模块406中的每一个存储单元可具有多种存储状态(以下也称为状态)。此外,通过施加读取电压可读取出存储单元所属的存储状态,进而获得存储在此存储单元中的数据。在本范例实施例中,存储单元的电荷存储层也可以是指浮动门(floatinggate)或电荷捕获层(chargetrappinglayer)。

图5是根据一范例实施例所示出的存储器控制电路单元的概要方块图。

请参照图5,存储器控制电路单元404包括存储器管理电路502、主机接口504与存储器接口506、缓冲存储器508、电源管理电路510与错误检查与校正电路512。

存储器管理电路502用以控制存储器控制电路单元404的整体运作。具体来说,存储器管理电路502具有多个控制指令,并且在存储器存储装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。

在本范例实施例中,存储器管理电路502的控制指令是以软件来实作。例如,存储器管理电路502具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器存储装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。

在本发明另一范例实施例中,存储器管理电路502的控制指令也可以程序码型式存储于可复写式非挥发性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路502具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有驱动码,并且当存储器控制电路单元404被致能时,微处理器单元会先执行此驱动码段来将存储于可复写式非挥发性存储器模块406中的控制指令载入至存储器管理电路502的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。

此外,在本发明另一范例实施例中,存储器管理电路502的控制指令也可以一硬件来实作。例如,存储器管理电路502包括微控制器、存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是电性连接至微控制器。其中,存储单元管理电路用以管理可复写式非挥发性存储器模块406的实体抹除单元;存储器写入电路用以对可复写式非挥发性存储器模块406下达写入指令以将数据写入至可复写式非挥发性存储器模块406中;存储器读取电路用以对可复写式非挥发性存储器模块406下达读取指令以从可复写式非挥发性存储器模块406中读取数据;存储器抹除电路用以对可复写式非挥发性存储器模块406下达抹除指令以将数据从可复写式非挥发性存储器模块406中抹除;而数据处理电路用以处理欲写入至可复写式非挥发性存储器模块406的数据以及从可复写式非挥发性存储器模块406中读取的数据。

主机接口504是电性连接至存储器管理电路502并且用以电性连接至连接接口单元402,以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至存储器管理电路502。在本范例实施例中,主机接口504是相容于sata标准。然而,必须了解的是本发明不限于此,主机接口504也可以是相容于pata标准、ieee1394标准、pciexpress标准、usb标准、uhs-i接口标准、uhs-ii接口标准、sd标准、ms标准、mmc标准、cf标准、ide标准或其他适合的数据传输标准。

存储器接口506是电性连接至存储器管理电路502并且用以存取可复写式非挥发性存储器模块406。也就是说,欲写入至可复写式非挥发性存储器模块406的数据会通过存储器接口506转换为可复写式非挥发性存储器模块406所能接受的格式。

缓冲存储器508是电性连接至存储器管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非挥发性存储器模块406的数据。

电源管理电路510是电性连接至存储器管理电路502并且用以控制存储器存储装置10的电源。

错误检查与校正电路512是电性连接至存储器管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路512会为对应此写入指令的数据产生对应的错误检查与校正码(errorcheckingandcorrectingcode,ecccode),并且存储器管理电路502会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非挥发性存储器模块406中。之后,当存储器管理电路502从可复写式非挥发性存储器模块406中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路512会根据此错误检查与校正码对所读取的数据执行错误检查与校正程序。

图6与图7是根据一范例实施例所示出的管理实体抹除单元的范例示意图。

必须了解的是,在此描述可复写式非挥发性存储器模块406的实体抹除 单元的运作时,以“提取”、“分组”、“划分”、“关联”等词来操作实体抹除单元是逻辑上的概念。也就是说,可复写式非挥发性存储器模块的实体抹除单元的实际位置并未更动,而是逻辑上对可复写式非挥发性存储器模块的实体抹除单元进行操作。

请参照图6,存储器控制电路单元404(或存储器管理电路502)会将实体抹除单元410(0)~410(n)逻辑地分组为数据区602、闲置区604、系统区606与取代区608。

逻辑上属于数据区602与闲置区604的实体抹除单元是用以存储来自于主机系统11的数据。具体来说,数据区602的实体抹除单元是被视为已存储数据的实体抹除单元,而闲置区604的实体抹除单元是用以替换数据区602的实体抹除单元。也就是说,当从主机系统11接收到写入指令与欲写入的数据时,存储器管理电路502会从闲置区604中提取实体抹除单元,并且将数据写入至所提取的实体抹除单元中,以替换数据区602的实体抹除单元。

逻辑上属于系统区606的实体抹除单元是用以记录系统数据。例如,系统数据包括关于可复写式非挥发性存储器模块的制造商与型号、可复写式非挥发性存储器模块的实体抹除单元数、每一实体抹除单元的实体程序化单元数等。

逻辑上属于取代区608中的实体抹除单元是用于坏实体抹除单元取代程序,以取代损坏的实体抹除单元。具体来说,倘若取代区608中仍存有正常的实体抹除单元并且数据区602的实体抹除单元损坏时,存储器管理电路502会从取代区608中提取正常的实体抹除单元来更换损坏的实体抹除单元。

特别是,数据区602、闲置区604、系统区606与取代区608的实体抹除单元的数量会根据不同的存储器规格而有所不同。此外,必须了解的是,在存储器存储装置10的运作中,实体抹除单元关联至数据区602、闲置区604、系统区606与取代区608的分组关系会动态地变动。例如,当闲置区604中的实体抹除单元损坏而被取代区608的实体抹除单元取代时,则原本取代区608的实体抹除单元会被关联至闲置区604。

请参照图7,存储器控制电路单元404(或存储器管理电路502)会配置逻辑单元lba(0)~lba(h)以映射数据区602的实体抹除单元,其中每一逻辑单元具有多个逻辑子单元以映射对应的实体抹除单元的实体程序化单元。并 且,当主机系统11欲写入数据至逻辑单元或更新存储于逻辑单元中的数据时,存储器控制电路单元404(或存储器管理电路502)会从闲置区604中提取一个实体抹除单元来写入数据,以轮替数据区602的实体抹除单元。在本范例实施例中,逻辑子单元可以是逻辑页面或逻辑扇区。

为了识别每个逻辑单元的数据被存储在哪个实体抹除单元,在本范例实施例中,存储器控制电路单元404(或存储器管理电路502)会记录逻辑单元与实体抹除单元之间的映射。并且,当主机系统11欲在逻辑子单元中存取数据时,存储器控制电路单元404(或存储器管理电路502)会确认此逻辑子单元所属的逻辑单元,并且在此逻辑单元所映射的实体抹除单元中来存取数据。例如,在本范例实施例中,存储器控制电路单元404(或存储器管理电路502)会在可复写式非挥发性存储器模块406中存储逻辑位址-实体位址映射表来记录每一逻辑单元所映射的实体抹除单元,并且当欲存取数据时存储器控制电路单元404(或存储器管理电路502)会将逻辑地址-实体位址映射表载入至缓冲存储器508来维护。

值得一提的是,由于缓冲存储器508的容量有限无法存储记录所有逻辑单元的映射关系的映射表,因此,在本范例实施例中,存储器控制电路单元404(或存储器管理电路502)会将逻辑单元lba(0)~lba(h)分组为多个逻辑区域lz(0)~lz(m),并且为每一逻辑区域配置一个逻辑位址-实体位址映射表。特别是,当存储器控制电路单元404(或存储器管理电路502)欲更新某个逻辑单元的映射时,对应此逻辑单元所属的逻辑区域的逻辑位址-实体位址映射表会被载入至缓冲存储器508来被更新。

图8是根据本发明的一范例实施例所示出的存储单元的临界电压分布的示意图。

请参照图8,在将数据写入至多个存储单元后,此些存储单元的临界电压分布包括两个状态810和820。举例来说,具有较低的临界电压峰值的状态810用以表示数据“1”,而具有较高的临界电压峰值的状态820用以表示数据“0”。通过施加介于状态810和820之间的读取电压va至此些存储单元,可获得存储于此些存储单元的数据。例如,反应于所施加的读取电压va,临界电压低于所施加的读取电压va的存储单元可被识别为存储数据“1”,而临界电压高于所施加的读取电压va的另一存储单元可被识别为存储数据 “0”。然而,在另一范例实施例中,状态810也可用以表示数据“0”,并且状态820也可用以表示数据“1”。

在本范例实施例中,包括两个状态(例如,状态810和状态820)的存储单元也可视为是被操作于2阶存储单元(two-levelcell,2lc)模式(或称为2lc程序化模式)。操作于2阶存储单元模式的一个存储单元用以存储一个位元的数据(例如,数据“1”或数据“0”)。

图9是根据本发明的另一范例实施例所示出的存储单元的临界电压分布的示意图。

请参照图9,在将数据写入至多个存储单元,此些存储单元的临界电压分布包括四个状态910至940。状态910至940分别用以表示数据“11”、“10”、“00”以及“01”。通过施加介于状态910至940之间的不同的读取电压va~vc至此些存储单元,可获得存储在此些存储单元中的数据。

在本范例实施例中,包括四种状态的存储单元也可视为是被操作于4阶存储单元(four-levelcell,4lc)模式(或称为4lc程序化模式)。操作于4阶存储单元模式的一个存储单元用以存储两个位元的数据。然而,状态910至940中的每一者所代表的数据可能取决于不同的设计而有所不同。

图10是根据本发明的又一范例实施例所示出的存储单元的临界电压分布的示意图。

请参照图10,数据写入多个存储单元后,此些存储单元的临界电压分布包括八个状态1010至1080。状态1010至1080分别表示数据“111”、“110”、“100”、“101”、“001”、“000”、“010”以及“011”。通过施加介于状态1010至1080之间的不同的读取电压va~vg至此些存储单元,可获得存储在此些存储单元中的数据。然而,状态1010至1080中的每一者所代表的数据可能取决于不同的设计而有所不同。

在本范例实施例中,包括八个状态的存储单元也可视为是被操作于8阶存储单元(eight-levelcell,8lc)模式(或称为8lc程序化模式)。操作于8阶存储单元模式的一个存储单元用以存储三个位元的数据。

值得注意的是,在另一范例实施例中,每一个存储单元的状态的数量也可以是三、五、六、七或者更多,本发明不加以限制。换言之,每一个存储单元皆可被操作于一个特定阶(specific-level)存储单元模式。其中,此特定 阶存储单元模式可以是指2阶存储单元模式、3阶存储单元模式、4阶存储单元模式、5阶存储单元模式、6阶存储单元模式等等。在本范例实施例中,若某一个存储单元操作于m阶存储单元(m-levelcell,mlc)模式,则表示此存储单元包括m个状态(或,m个峰)。例如,m是大于1的正整数。

另外,在本范例实施例中,当存储器控制电路单元404(或存储器管理电路502)接收到数据时,存储器控制电路单元404(或存储器管理电路502)会先将数据分割为多个子数据单元,之后错误检查与校正电路512再对这些子数据单元进行错误校正编码程序以产生对应的错误校正码,并且将这些子数据单元与此些错误校正码编码形成为错误检查与校正码框。例如,每个错误检查与校正码框内的数据(也称为使用者数据)的长度可以是4仟位元组(kilobyte,kb)、2kb、1kb或其他大小。

在本范例实施例中,存储器控制电路单元404(或存储器管理电路502)会以错误检查与校正码框为单位来对数据解码以读取数据。举例来说,假设主机系统11发送读取指令给存储器存储装置10,其中读取指令指示从某个逻辑位址中读取数据,并且此欲读取的数据被编码至1个错误检查与校正码框。在接收到此读取指令后,存储器控制电路单元404(或存储器管理电路502)会发送读取指令序列至可复写式非挥发性存储器模块406以从映射此逻辑位址的实体程序化单元中读取数据,从所读取的数据中获取使用者数据串,对此使用者数据串执行错误校正解码操作以产生对应的已校正数据串,并且将已校正数据串传送给主机系统以回应读取指令。应注意的是,若欲读取的数据被编码至2个以上的错误检查与校正码框中时,存储器控制电路单元404(或存储器管理电路502)会读取对应每一错误检查与校正码框的数据串,对所读取的数据串进行错误校正解码操作,并且在成功地校正所读取的数据串后合并数据串成为已校正数据串并且传送至主机系统以回应读取指令。

特别是,在本范例实施例中,错误检查与校正电路512所使用的是区块涡轮码(blockturbocode,btc)演算法来进行错误校正编码/解码操作。以下将配合图式说明区块涡轮码演算法的详细流程。

图11是根据本发明的一范例实施例所示出的错误检查与校正码框的示意图,并且图12是根据本发明的一范例实施例所示出的使用区块涡轮码进行错误校正编码程序的示意图。必须了解的是,在此描述错误检查与校正电路 512对数据的运作时,“选择”、“分割”、“划分”、“关联”、“排列”等词是逻辑上的概念。也就是说,错误检查与校正电路512所处理的数据本身的存储位置并未更动,而是逻辑上对数据进行操作。

请参照图11与图12,错误检查与校正电路512对数据串ud1进行错误校正编码程序,以产生错误检查与校正码组ecc1,其中错误检查码ecc1会与数据串ud1一起形成错误与检查校正码框eccf1而被程序化至可复写式挥发性存储器模块406的实体程序化单元中。如上所述,在本范例实施例中,错误检查与校正电路512会使用区块涡轮码演算法来对数据串ud1进行错误校正编码/解码操作。在执行区块涡轮码演算法的过程中,错误检查与校正电路512会将数据串ud1划分为多个子数据单元,将所划分的子数据单元以矩阵形式排列,分别为以矩阵形式排列的子数据单元产生对应的行错误检查码与列错误检查码,并且合并所产生的行错误检查码与列错误检查码来形成错误检查与校正码组ecc1。

举例来说,首先,错误检查与校正电路512会将数据串ud1分割为子数据单元db1~db32。应注意的是,在本范例实施例中,为了便于说明,每一子数据单元包含1个位元组的数据(即,8个位元的数据),但本发明不限于此。例如,在其他实施例中,每一子数据单元也可包含多于1个的位元组的数据。

接着,错误检查与校正电路512将子数据单元db1~db32排列为一个8乘以4的二维(横向与纵向)数据矩阵,并且依照维度来划分为多个行(column)数据段(也称为第一方向数据段)与列(row)数据段(也称为第二方向数据段)。值得一提的是,在以下揭示中使用第一方向与第二方向来描述数据段与错误校正码仅是为了要区别对应不同方向排列的子数据单元的数据段与错误校正码,并非限制本发明,即,第一方向也可用来描述矩阵的列方向且第二方向也可用来描述矩阵的行方向。例如,横向排列的子数据单元db1~db8会被划分为列数据段rg1;子数据单元db9~db16会被划分为列数据段rg2;子数据单元db17~db24会被划分为列数据段rg3;子数据单元db25~db32会被划分为列数据段rg4。此外,纵向排列的子数据单元db1、db9、db17、db25会被划分为行数据段cg1;子数据单元db2、db10、db18、db26会被划分为行数据段cg2;子数据单元db3、db11、db19、 db27会被划分为行数据段cg3;子数据单元db4、db12、db20、db28会被划分为行数据段cg4;子数据单元db5、db13、db21、db29会被划分为行数据段cg5;子数据单元db6、db14、db22、db30会被划分为行数据段cg6;子数据单元db7、db15、db23、db31会被划分为行数据段cg7;子数据单元db8、db16、db24、db32会被划分为行数据段cg8。

在本范例实施例中,在将子数据单元db1~db32划分为横向的列数据段rg1~rg4与纵向的行数据段cg1~cg8后,错误检查与校正电路512会使用一编码演算法(以下称为第一编码演算法)作为辅助编码演算法来分别对此些子数据单元做编码,以产生对应此些列数据段与行数据段的错误校正码。也就是说,对于横向的列数据段rg1~rg4,错误检查与校正电路512会通过bch演算法对划分至列数据段rg1的数据(亦即,子数据单元db1~db8)进行编码以产生对应列数据段rg1的列错误校正码bch1。依此类推,错误检查与校正电路512会产生对应列数据段rg2的列错误校正码bch2;产生对应列数据段rg3的列错误校正码bch3;产生对应列数据段rg4的列错误校正码bch4。此外,对于纵向的行数据段cg1~cg8,错误检查与校正电路512也会产生对应行数据段cg1的行错误校正码bch5;产生对应行数据段cg2的行错误校正码bch6;产生对应行数据段cg3的行错误校正码bch7;产生对应行数据段cg4的行错误校正码bch8;产生对应行数据段cg5的行错误校正码bch9;产生对应行数据段cg6的行错误校正码bch10;产生对应行数据段cg7的行错误校正码bch11;并且产生对应行数据段cg8的行错误校正码bch12。通过,列数据段rg1~rg4与行数据段cg1~cg8中的数据可分别被对应的列错误校正码bch1~bch4与行错误校正码bch5~bch12保护。此外,必须了解的是,在本范例实施例中,列数据段与行数据段揭示以相同的辅助编码演算法来进行编码,然而本发明不限于此。例如,在另一范例实施例中,错误检查与校正电路512可使用第一编码演算法来编码列数据段,并且使用第二编码演算法来编码行数据段。例如,上述第一编码演算法与第二编码演算法可以分别是博斯-乔赫里-霍克码(以下也称为bch)编码演算法、低密度奇偶检查校正编码演算法或其他适合的编码演算法。

值得一提的是,在本范例实施例中,错误检查与校正电路512会先将子 数据单元划分至多个行数据段与列数据段之后,再对每一行数据段与列数据段进行编码以产生对应每一行数据段与列数据段的行错误校正码与列错误校正码,但本发明不限于此。例如,在另一范例实施例中,错误检查与校正电路512可不先将子数据单元划分为此些行数据段与列数据段,并且直接根据子数据单元的排列方式来对子数据单元作错误校正编码。举例来说,错误检查与校正电路512会直接对子数据单元db1~db8来进行错误校正编码程序,以产生对应子数据单元db1~db8的列错误校正码bch1。此外,在本范例实施例中,列错误校正码的校正能力可以优于行错误校正码的校正能力。换句话说,列错误校正码的最大可校正错误位元数可大于行错误校正码的最大可校正错误位元数。但本发明并不以此为限。在其他范例实施例中,行错误校正码的最大可校正错误位元数可大于列错误校正码的最大可校正错误位元数。

请参照图11,在本范例实施例中,错误检查与校正电路512会将列错误校正码bch1~bch4和行错误校正码bch5~bch12合并成为错误检查与校正码组ecc1,并且将包含数据串ud1(亦即,子数据单元db1~db32)与错误检查与校正码组ecc1的错误检查与校正码框eccf1存储至可复写式非挥发性存储器模块406。之后,存储器控制电路单元404(或存储器管理电路502)从可复写式非挥发性存储器模块406中读取错误检查与校正码框eccf1后,可使用错误检查与校正码组ecc1对错误检查与校正码框eccf1所读取到的数据串进行错误校正解码程序以获得正确的数据串ud1。

举例来说,当从主机系统接收到读取指令时,存储器控制电路单元404(或存储器管理电路502)会根据读取指令从可复写式非挥发性存储器模块406的实体程序化单元中读取对应的错误检查与校正码框eccf1并且获取未校正的数据串ud1及对应的错误检查与校正码组ecc1。接着,错误检查与校正电路512会执行对应的错误校正解码操作,以将未校正的数据串ud1分割为32个子数据单元db1~db32,并且将子数据单元db1~db32排列成二维数据矩阵1200,并且从错误检查与校正码组ecc1中获取对应每一行数据段的行错误校正码bch5~bch12与每一列数据段的列错误校正码bch1~bch4。然后,错误检查与校正电路512会使用对应的行错误校正码对每一行数据段使用对应的解码演算法进行解码并使用对应的列错误校正码使 用对应的解码演算法对列数据段进行解码。在此,对应的解码演算法是对应前述第一编码演算法与第二编码演算法的第一解码演算法与第二解码演算法。在此,第一解码演算法与第二解码演算法可分别是bch解码演算法、低密度奇偶检查校正解码演算法或其他适合的解码演算法。例如,错误检查与校正电路512会先根据对应此些列数据段的列错误校正码对横向排列的子数据单元所形成的多个列数据段进行解码。即,错误检查与校正电路512会使用列错误校正码bch1来解码子数据单元db1~db8;使用列错误校正码bch2来解码子数据单元db9~db16;使用列错误校正码bch3来解码子数据单元db17~db24;并且使用列错误校正码bch4来解码子数据单元db25~db32。倘若在经过第一次横向解码之后,子数据单元db1~db32之中存有无法校正的子数据单元时,错误检查与校正电路512会再根据对应此些行数据段的行错误校正码对包含有无法校正的子数据单元的行数据段数据进行第一次纵向解码。例如,错误检查与校正电路512会使用行错误校正码bch5来解码子数据单元db1、db9、db17、db25;或使用行错误校正码bch6来解码子数据单元db2、db10、db18、db26;或使用行错误校正码bch7来解码子数据单元db3、db11、db19、db27;或使用行错误校正码bch8来解码子数据单元db4、db12、db20、db28;或使用行错误校正码bch9来解码子数据单元db5、db13、db21、db29;或使用行错误校正码bch10来解码子数据单元db6、db14、db22、db30;或使用行错误校正码bch11来解码子数据单元db7、db15、db23、db31;或使用行错误校正码bch12来解码子数据单元db8、db16、db24、db32。在执行第一次纵向解码之后,错误检查与校正电路512会以相同方式,再次执行横向解码(亦即,第二次横向解码),之后再执行纵向解码(亦即,第二次纵向解码),并且以此类推直到所有子数据单元被校正或解码终止条件到达(例如,迭代次数超过一预定次数)。由于在前次横向解码部分无法校正的子数据单元,可能在目前纵向解码被校正,因此,在下次横向解码中,会有更多原先无法校正的子数据单元被校正。基此,通过横向与纵向的迭代解码可快速地对检查与校正码框中的使用者数据进行解码并产生校正后的使用者数据。

值得一提的是,在上述区块涡轮码演算法迭代过程中,在一个子数据单元中出现的错误位元的数目非大于错误检查与校正电路512能够校正的上限 值(亦即,最大可校正错误位元数)时,此子数据单元内的数据可被校正以获取已解码子数据单元。因此,在已解码子数据单元中,子数据单元中的错误位元已被校正为已校正位元。在此,从存储单元读取出的位元的值在校正前为原始位元值,而经校正后会被调整为校正位元值。例如,倘若错误检查与校正电路512的最大可校正错误位元数大于1,而一个子数据单元存在一个错误位元(亦即,错误位元数为1)时,错误检查与校正电路512会通过调整此错误位元的值来校正子数据单元。例如,某错误位元的原始位元值为“1”,经校正为已校正位元后的校正位元值为“0”。然而,错误检查与校正电路512所识别出的错误位元实际上却有可能是正确位元。在此情况下,虽然在改变所识别出的错误位元(实际上是正确位元)的值之后,错误检查与校正电路512会判定解码成功,但实际上却是改变了正确位元的值,而真正发生错误的位元却未被校正,因而发生错误校正的情况。为了避免错误校正,在本范例实施例中,错误检查与校正电路512在对使用者数据串中至少部份的子数据单元进行解码之后,会检查已解码子数据单元中的已校正位元是否为实际上发生错误的位元。

在本范例实施例中,错误检查与校正电路512会根据已校正位元是否符合可靠度条件来决定已校正位元的值。倘若已校正位元符合可靠度条件,错误检查与校正电路512会决定已校正位元的值为原始位元值,亦即忽略已解码子数据单元的解码结果。例如,错误检查与校正电路512会将已解码子数据单元中的已校正位元的值调整(即,回复)为原始位元值。相对地,倘若已校正位元不符合可靠度条件,错误检查与校正电路512会决定已校正位元的值为校正位元值,亦即采用已解码子数据单元的解码结果。也就是说,错误检查与校正电路512不会再对已解码子数据单元中的已校正位元的值进行调整。

具体而言,错误检查与校正电路512会根据存储已校正位元的存储单元的临界电压是否落在一个预设区域内来判断已校正位元是否符合可靠度条件。倘若判定存储已校正位元的存储单元的临界电压落在此预设区域内,错误检查与校正电路512会判定已校正位元不符合可靠度条件。相对地,倘若判定存储已校正位元的存储单元的临界电压落在此预设区域之外(亦即,非落在预设区域内),错误检查与校正电路512会判定已校正位元符合可靠度 条件。

预设区域是根据读取数据时所施加的读取电压来决定。在本范例实施例中,存储器控制电路单元404(或错误检查与校正电路512)会根据读取电压(以下也称为第一电压)以及一个预设差值来决定预设区域。例如,存储器控制电路单元404(或存储器管理电路502)将读取电压减掉预设差值取得一个电压(以下也称为第二电压),并且将读取电压加上预设差值取得另一个电压(以下也称为第三电压)。进一步地,存储器控制电路单元404(或错误检查与校正电路512)将介于第二电压与第三电压之间的电压范围设定为预设区域。然而,本发明并不限制决定预设区域的方式。例如,在另一范例实施例中,预设区域还可以是通过查表的方式来决定。

此外,存储器控制电路单元404(或错误检查与校正电路512)可以在上述区块涡轮码演算法的每一次迭代解码中设定不同的预设区域。例如,在本范例实施例中,在第一次迭代解码中,存储器控制电路单元404(或错误检查与校正电路512)根据读取电压与一个预设差值(以下也称为第一预设差值)来取得一个电压范围以设定一个预设区域(以下也称为第一预设区域)。而在第二次迭代解码中,存储器控制电路单元404(或错误检查与校正电路512)可再根据读取电压值与不同于第一预设差值的另一个预设差值(以下也称为第二预设差值)来取得另一个电压范围以设定另一个预设区域(以下也称为第二预设区域)。例如,第一预设差值小于第二预设差值,因此第一预设区域所对应的电压范围较窄,而第二预设区域所对应的电压范围较宽。然而,在另一范例实施例中,上述的第一预设区域与第二预设区域还可以是通过查表的方式来决定。在此,区块涡轮码演算法的一次迭代解码包括对各行数据段执行一次解码并且对各列数据段执行一次解码。而在一次迭代解码中,倘若对其中一方向的数据段执行解码后所获取的已解码数据已不存在不可校正的位元时,可不继续执行对另一方向数据段的解码。

图13a与图13b是根据一范例实施例所示出的设定预设区域的示意图。为了简化说明,在本范例实施例中是以一个存储单元存储一个位元的数据为例来进行说明。

请参照图13a与图13b,横轴代表存储单元的临界电压,而纵轴代表存储单元数目。例如,图13a与图13b是表示某一个字元线上各个存储单元的 临界电压。在此假设某一个存储单元的临界电压落在分布1310时,此存储单元所存储的是位元“1”,相对地,若某一个存储单元的临界电压落在分布1320时,此存储单元所存储的是位元“0”。值得一提的是,本范例实施例是以slc型快速存储器模块为例,因此临界电压的分布有两种可能。然而,在其他范例实施例中,临界电压的分布可能四种、八种或其他任意个可能。此外,本发明也不限制每一个分布所代表的位元。

当要从可复写式非挥发性存储器模块406读取数据时,存储器控制电路单元404(或存储器管理电路502)会发送一读取指令序列至可复写式非挥发性存储器模块406。此读取指令序列包括一或多个指令或程序码,并且用以指示根据读取电压vread来读取多个存储单元所组成的实体程序化单元,以取得多个位元。若某一个存储单元的临界电压小于读取电压vread,则此存储单元会导通,并且存储器控制电路单元404(或存储器管理电路502)会读到位元“1”。相对地,若某一个存储单元的临界电压大于读取电压vread,则此存储单元不会导通,并且存储器控制电路单元404(或存储器管理电路502)会读到位元“0”。值得注意的是,分布1310与分布1320会包含一个重叠区域(以斜线表示)。重叠区域表示有一些存储单元中所存储的应所述是位元“1”(属于分布1310),但其临界电压大于读取电压vread;或者,有一些存储单元中所存储的应所述是位元“0”(属于分布1320),但其临界电压小于读取电压vread。换言之,所读取的位元中,有部份的位元会有错误。也就是说,倘若一个存储单元的临界电压落在重叠区域内,此存储单元中所存储的位元发生错误的机率较大。相对地,倘若一个存储单元的临界电压落在重叠区域之外的区域,此存储单元中所存储的位元发生错误的机率较小。

请参照图13a,存储器控制电路单元404(或错误检查与校正电路512)会根据读取电压vread与预设差值d1来设定一个预设区域r1。具体而言,存储器控制电路单元404会以读取电压vread与预设差值d1计算出电压v1与电压v2,并且将介于电压v1与电压v2之间的电压范围设定为预设区域r1。当存储已校正位元的存储单元的临界电压落在预设区域r1内(亦即,不符合可靠度条件)时,表示此存储单元所存储的位元发生错误的机率较大,亦即已校正位元很有可能是实际上发生错误的位元,错误检查与校正电路512因而决定此已校正位元的值为校正位元值。例如,在校正子数据单元内的错 误位元而获取已解码子数据单元之后,当已解码子数据单元中的已校正位元所属的存储单元的临界电压落在预设区域r1内时,错误检查与校正电路512会保留已解码子数据单元中的已校正位元的值(亦即校正位元值)。然而,当存储已校正位元的存储单元的临界电压落在预设区域r1之外的区域(亦即,符合可靠度条件)时,表示此存储单元所存储的位元发生错误的机率较小,亦即已校正位元很有可能原本是正确位元,错误检查与校正电路512会判定因而决定已校正位元的值为原始位元值。例如,在校正子数据单元内的错误位元而获取已解码子数据单元之后,当已解码子数据单元中的已校正位元所属的存储单元的临界电压非落在预设区域r1内时,错误检查与校正电路512会再次将已解码子数据单元中的已校正位元的值调整为原始位元值。也就是说,已校正位元的值会被回复为未经校正的原始位元值,因此包括此已校正位元的子数据单元会被识别为未解码成功。

存储单元的临界电压是否落在预设区域r1内的判断方式可以是根据从存储单元所读取到的位元来判断。例如,请参照图13a,预设区域r1是根据电压v1与电压v2来设定。存储器控制电路单元404(或存储器管理电路502)可以通过分别施加电压v1与电压v2来读取某个存储单元以取得位元b1与位元b2。当施加电压v1时,倘若读取到位元b1为“1”,表示此存储单元的临界电压小于电压v1;相对地,倘若读取到位元b1为“0”,表示此存储单元的临界电压大于电压v1。另一方面,当施加电压v2时,倘若读取到位元b2为“1”,表示此存储单元的临界电压小于电压v2;相对地,倘若读取到位元b2为“0”,表示存储单元的临界电压大于电压v2。因此,如图13a所示,当施加电压v1而读取到位元b1为“0”并且施加电压v2而读取到位元b2为“1”时,存储器控制电路单元404(或错误检查与校正电路512)即可判断此存储单元的临界电压落在预设区域r1内。

当已执行了一次迭代解码后,倘若仍存在未解码成功的子数据单元,错误检查与校正电路512会执行下一次迭代解码。请参照图13b,存储器控制电路单元404(或错误检查与校正电路512)会根据读取电压vread与预设差值d2来设定另一个预设区域r2。预设差值d2可以是大于预设差值d1。因此,存储器控制电路单元404会以读取电压vread与预设差值d2计算出电压v3与电压v4,并且将介于电压v3到电压v4之间的范围设定为预设区域 r2。进一步地,存储器控制电路单元404(或错误检查与校正电路512)会根据所设定的预设区域r2来判断已校正位元是否符合可靠度条件。判断方式已于图13a的范例实施例中详细说明,在此不再赘述。

图14是根据一范例实施例所示出的根据解码结果调整已校正位元的示意图。在本范例实施例中,是以区块涡轮码演算法来进行错误校正解码操作。

请参照图14,当从主机系统接收到读取指令时,存储器控制电路单元404(或存储器管理电路502)根据读取指令使用一读取电压从多个存储单元中读取未校正的数据串及对应的错误检查与校正码组。接着,错误检查与校正电路512会执行错误校正解码操作,以将未校正的数据串分割为多个子数据单元,并且将此些子数据单元排列成二维数据矩阵1400以获取多个行数据段与多个列数据段。例如,此些子数据单元可形成行数据段1410(1)~1410(n)与列数据段1420(1)~1420(4)。为简化说明,在本范例实施例中,一个子数据单元仅包括一个位元的数据。然而,在其他范例实施例中,一个子数据单元可以包括更多位元的数据。之后,错误检查与校正电路512会根据错误检查与校正码组的行错误校正码与列错误校正码分别对行数据段与列数据段进行解码。例如,错误检查与校正电路512解码行数据段1410(1)并且判定位元1401发生错误,因而改变位元1401的值以进行校正。在本范例实施例中,错误检查与校正电路512将行数据段1410(1)的位元1401的值从“0”(亦即,原始位元值)改变为“1”(亦即,校正位元值)。

请继续参照图14,例如,在对行数据段1410(1)执行错误校正解码操作之后,错误检查与校正电路512会判断存储位元1401的存储单元的临界电压是否落在预设区域内。在本范例实施例中,假设存储位元1401的存储单元的临界电压落在预设区域之外的区域,亦即表示位元1401可能并非实际上发生错误的位元,因此错误检查与校正电路512会再次调整位元1401,将位元1401的值从“1”(亦即,校正位元值)调整为“0”(亦即,原始位元值)。换句话说,错误检查与校正电路512会通过再次改变位元1401的值以忽略对位元1401的校正。接着,错误检查与校正电路512会继续对下一个行数据段1410(2)进行解码。此时,错误检查与校正电路512判定行数据段1410(2)中的位元1402为错误位元,因而改变位元1402的值以进行校正。在本范例实施例中,错误检查与校正电路512将行数据段1410(2)的位元1402的值从“1” (亦即,原始位元值)调整为“0”(亦即,校正位元值)。然后,错误检查与校正电路512会判断存储位元1402的存储单元的临界电压是否落在预设区域内。在本范例实施例中,假设存储位元1402的存储单元的临界电压落在预设区域内,亦即表示位元1402很有可能就是实际上发生错误的位元,因此错误检查与校正电路512会保留对位元1402的校正结果,并且继续对下一个行数据段1410(3)进行解码。而在本范例实施例中,假设错误检查与校正电路512是先执行列数据段的解码,再执行行数据段的解码。倘若在本次迭代解码中已对每一个列数据段与每一个行数据段都执行过解码,由于至少存在行数据段1410(1)包括未解码成功的子数据单元,因此错误检查与校正电路512会继续执行下一次迭代解码,直到所有子数据单元被校正或解码终止条件到达(例如,迭代次数超过一预定次数)。

在本范例实施例中,是在对每一行数据段执行解码之后针对被校正的位元进行判断。然而,在另一范例实施例中,也可以是在对每一列数据段执行解码之后针对被校正的位元进行判断。此外,在又一范例实施例中,也可以是在对每一列数据段及每一行数据段执行解码之后皆对被校正的位元进行判断。

图15是根据一范例实施例所示出的解码方法的流程图。

请参照图15,在步骤s1501中,存储器控制电路单元404(或存储器管理电路502)从主机系统接收读取指令。

在步骤s1503中,存储器控制电路单元404(或存储器管理电路502)下达读取指令序列以根据一读取电压从可复写式非挥发性存储器模块406的多个存储单元中读取数据,其中所读取的数据包括使用者数据串与错误检查与校正码组。

在步骤s1505中,存储器控制电路单元404(或错误检查与校正电路512)根据错误检查与校正码组中的第一方向错误校正码解码使用者数据串中的第一方向数据段的子数据单元以获取已解码子数据单元。

在步骤s1507中,存储器控制电路单元404(或错误检查与校正电路512)会判断已解码子数据单元中是否存在已校正位元,其中已校正位元的值从原始位元值被解码成校正位元值。

倘若判定存在已校正位元,在步骤s1509中,存储器控制电路单元404 (或错误检查与校正电路512)会判断存储已校正位元的存储单元的临界电压是否符合可靠度条件。

倘若存储已校正位元的存储单元的临界电压符合可靠度条件,在步骤s1511中,存储器控制电路单元404(或错误检查与校正电路512)将已校正位元的值回复为原始位元值,并根据已校正位元的值更新已解码子数据单元。

在上述步骤s1507之后,倘若不存在已校正位元,在步骤s1513中,存储器控制电路单元404(或错误检查与校正电路512)根据已解码子数据单元获取对应使用者数据的已校正数据串。进而,存储器控制电路单元404(或存储器管理电路502)会将已校正数据串回应于主机系统。

在上述步骤s1511之后,存储器控制电路单元404(或错误检查与校正电路512)会根据错误检查与校正码组中的第二方向错误校正码解码使用者数据串中的第二方向数据段的子数据单元以获取更新已解码子数据单元。并且,上述各步骤已详细说明如上,在此不再赘述。

综上所述,本发明在对所读取的数据的至少部分的子数据单元执行解码校正时,通过检查已解码子数据单元中的已校正位元是否属于预设区域来判断已校正位元即为发生错误的位元的机率大小。当已校正位元不属于预设区域时,会判定已校正位元即为发生错误的位元的机率较小而再次调整已校正位元,以将已校正位元的值还原为校正前的的原始位元值。由此可避免错误校正的情况,进而提升对所读取的数据的错误校正能力。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1