CN106897023B - 数据读取方法、存储器控制电路单元及存储器储存装置 - Google Patents

数据读取方法、存储器控制电路单元及存储器储存装置 Download PDF

Info

Publication number
CN106897023B
CN106897023B CN201510954296.5A CN201510954296A CN106897023B CN 106897023 B CN106897023 B CN 106897023B CN 201510954296 A CN201510954296 A CN 201510954296A CN 106897023 B CN106897023 B CN 106897023B
Authority
CN
China
Prior art keywords
data
sub
unit
row
column
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510954296.5A
Other languages
English (en)
Other versions
CN106897023A (zh
Inventor
林纬
王天庆
赖国欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phison Electronics Corp
Original Assignee
Phison Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phison Electronics Corp filed Critical Phison Electronics Corp
Priority to CN201510954296.5A priority Critical patent/CN106897023B/zh
Publication of CN106897023A publication Critical patent/CN106897023A/zh
Application granted granted Critical
Publication of CN106897023B publication Critical patent/CN106897023B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明提供一种用于可复写式非易失性存储器模块的数据读取方法、存储器控制电路单元及存储器储存装置。此方法包括依据此错误检查与校正码对使用者数据串执行错误校正解码操作以产生第一已解码数据串;搜索第一已解码数据串的已解码子数据单元之中的多个无法校正子数据单元,从此些无法校正子数据单元之中选出至少一目标子数据单元,在第一已解码数据串中调整此目标子数据单元以产生已调整使用者数据串,并且对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串;以及若在第二已解码数据串中已无错误比特时,将第二已解码数据串作为已校正数据串以传送给主机系统。本发明可有效地校正所读取的数据。

Description

数据读取方法、存储器控制电路单元及存储器储存装置
技术领域
本发明涉及一种用于可复写式非易失性存储器模块的数据读取方法、存储器控制电路单元及存储器储存装置。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性存储器模块(例如,快闪存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
一般来说,写入至可复写式非易失性存储器模块的数据都会根据一个错误更正码来编码,并且从可复写式非易失性存储器模块中所读取的数据也会经过对应的程序来解码。然而,错误更正码的更正能力有其上限。例如,若使用涡轮码算法或是低密度奇偶检查校正码算法经由迭代方式来实施错误更正码,随着迭代解码的次数增加至一定次数后,在后续的迭代解码过程中会出现错误比特数目不随着迭代次数的增加而减少的现象。此现象也称为错误饱和(error floor)。基此,如何能够对所读取的数据顺利地进行解码,以获取原始数据是此领域技术人员所致力的目标。
发明内容
本发明提供一种数据读取方法、存储器控制电路单元及存储器储存装置,其能够有效地校正所读取的数据。
本发明的一范例实施例提出一种用于可复写式非易失性存储器模块的数据读取方法。此方法包括从可复写式非易失性存储器模块读取数据,其中此数据包括使用者数据串与错误检查与校正码组,此使用者数据包括多个子数据单元,错误检查与校正码组包括多个行错误校正码与多个列错误校正码,此些行错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个行数据段,且此些列错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个列数据段。本方法还包括依据此错误检查与校正码对此使用者数据串执行错误校正解码操作以产生第一已解码数据串,其中此第一已解码数据串包括对应此些子数据中至少部分的多个已解码子数据单元。本方法也包括搜索此些已解码子数据单元之中的至少一个无法校正子数据单元,从无法校正子数据单元之中选出至少一目标子数据单元,在第一已解码数据串中调整此至少一目标子数据单元以产生已调整使用者数据串,并且对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串。本方法还包括,将第二已解码数据串作为已校正数据串传送给主机系统以响应读取指令。
在本发明的一范例实施例中,上述依据错误检查与校正码组对使用者数据串执行错误校正解码操作以产生第一已解码数据串的步骤包括依据此些行错误校正码与列错误校正码使用区块涡轮码算法解码此些行数据段与列数据段以获得上述已解码子数据单元。
在本发明的一范例实施例中,上述数据读取方法还包括:判断在第一已解码数据串中是否存有错误比特;若在第一已解码数据串中无错误比特时,将第一已解码数据串作为已校正数据串传送给主机系统;以及若在第一已解码数据串中存有错误比特时,依据第一已解码数据串判断此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目是否小于预先定义值。其中上述搜索此些已解码子数据单元之中的无法校正子数据单元,识别此些无法校正子数据单元之中的目标子数据单元,在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串,对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串的步骤,是在此些行数据段之中无法校正的行数据段的数目小于预先定义值或此些列数据段之中无法校正的列数据段的数目小于预先定义值时被执行。
在本发明的一范例实施例中,上述数据读取方法还包括:若此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目都不小于预先定义值,传送一错误信息给主机系统。
在本发明的一范例实施例中,上述识别此些无法校正子数据单元之中的目标子数据单元的步骤包括:根据此些行数据段之中无法校正的行数据段与此些列数据段之中无法校正的列数据段将此些无法校正子数据单元之中的第一无法校正子数据单元作为目标子数据单元,其中此第一无法校正子数据单元是包括在此些行数据段之中的第一行数据段中且包括在此些列数据段之中的第一列数据段中,此些行错误校正码之中对应此第一行数据段的第一行错误校正码无法校正此第一行数据段并且此些列错误校正码之中对应此第一列数据段的第一列错误校正码无法校正此第一列数据段。
在本发明的一范例实施例中,上述在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串的步骤包括:使用调整数据串与第一无法校正子数据单元进行互斥运算以调整第一无法校正子数据单元的至少一比特的值。
本发明的一范例实施例提出一种用于控制可复写式非易失性存储器模块的忆体控制电路单元。此存储器控制电路单元包括主机接口、存储器接口、存储器管理电路与错误检查与校正电路。主机接口用以电性连接至主机系统。存储器接口用以电性连接至可复写式非易失性存储器模块。存储器管理电路电性连接至主机接口与存储器接口。错误检查与校正电路电性连接至存储器管理电路。存储器管理电路发送读取指令序列以从可复写式非易失性存储器模块读取数据,其中此数据包括使用者数据串与错误检查与校正码组,此使用者数据包括多个子数据单元,错误检查与校正码组包括多个行错误校正码与多个列错误校正码,此些行错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个行数据段,且此些列错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个列数据段。错误检查与校正电路依据此错误检查与校正码对此使用者数据串执行错误校正解码操作以产生第一已解码数据串,其中此第一已解码数据串包括对应此些子数据中至少部分的多个已解码子数据单元。错误检查与校正电路搜索此些已解码子数据单元之中的至少一个无法校正子数据单元,从此些无法校正子数据单元之中选出至少一目标子数据单元,在第一已解码数据串中调整此目标子数据单元以产生已调整使用者数据串,并且对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串。再者,若在第二已解码数据串中已无错误比特时,存储器管理电路将第二已解码数据串作为已校正数据串传送给主机系统。
在本发明的一范例实施例中,在上述依据错误检查与校正码对使用者数据串执行错误校正解码操作以产生第一已解码数据串的操作中,上述错误检查与校正电路依据此些行错误校正码与列错误校正码使用区块涡轮码算法解码此些行数据段与列数据段以获得上述已解码子数据单元。
在本发明的一范例实施例中,上述错误检查与校正电路判断在第一已解码数据串中是否存有错误比特。其中若在第一已解码数据串中无错误比特时,存储器管理电路将第一已解码数据串作为已校正数据串传送给主机系统。若在第一已解码数据串中存有错误比特时,上述错误检查与校正电路依据第一已解码数据串判断此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目是否小于预先定义值。其中,上述错误检查与校正电路是在此些行数据段之中无法校正的行数据段的数目小于预先定义值或此些列数据段之中无法校正的列数据段的数目小于预先定义值时,才执行上述搜索已解码子数据单元之中的无法校正子数据单元,从无法校正子数据单元之中选出目标子数据单元,在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串,对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串的操作。
在本发明的一范例实施例中,若此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目都不小于预先定义值时,上述存储器管理电路传送错误信息给主机系统。
在本发明的一范例实施例中,在上述从无法校正子数据单元之中选出目标子数据单元的操作中,上述错误检查与校正电路根据此些行数据段之中无法校正的行数据段与此些列数据段之中无法校正的列数据段将此些无法校正子数据单元之中的第一无法校正子数据单元作为目标子数据单元,其中此第一无法校正子数据单元是包括在此些行数据段之中的第一行数据段中且包括在此些列数据段之中的第一列数据段中,此些行错误校正码之中对应第一行数据段的第一行错误校正码无法校正第一行数据段并且此些列错误校正码之中对应第一列数据段的第一列错误校正码无法校正第一列数据段。
在本发明的一范例实施例中,上述在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串的操作中,上述错误检查与校正电路使用调整数据串与第一无法校正子数据单元进行互斥运算以调整第一无法校正子数据单元的至少一比特的值。
本发明的一范例实施例提出一种存储器储存装置,其包括连接接口单元、可复写式非易失性存储器模块与存储器控制电路单元。连接接口单元用以电性连接至主机系统。存储器控制电路单元电性连接至连接接口单元与可复写式非易失性存储器模块。存储器控制电路单元发送读取指令序列以从可复写式非易失性存储器模块读取数据,其中此数据包括使用者数据串与错误检查与校正码组,此使用者数据包括多个子数据单元,错误检查与校正码组包括多个行错误校正码与多个列错误校正码,此些行错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个行数据段,且此些列错误校正码是分别地对应在以矩阵形式排列的此些子数据单元之中的多个列数据段。存储器控制电路单元依据此错误检查与校正码对此使用者数据串执行错误校正解码操作以产生第一已解码数据串,其中此第一已解码数据串包括对应此些子数据中至少部分的多个已解码子数据单元。此外,存储器控制电路单元搜索此些已解码子数据单元之中的至少一个无法校正子数据单元,从此些无法校正子数据单元之中选出至少一目标子数据单元,在第一已解码数据串中调整此目标子数据单元以产生已调整使用者数据串,并且对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串。再者,若在第二已解码数据串中已无错误比特时,存储器控制电路单元将第二已解码数据串作为已校正数据串传送给主机系统。
在本发明的一范例实施例中,在上述依据错误检查与校正码对使用者数据串执行错误校正解码操作以产生第一已解码数据串的操作中,上述存储器控制电路单元依据此些行错误校正码与列错误校正码使用区块涡轮码算法解码此些行数据段与列数据段以获得上述已解码子数据单元。
在本发明的一范例实施例中,上述存储器控制电路单元判断在第一已解码数据串中是否存有错误比特。其中若在第一已解码数据串中无错误比特时,存储器控制电路单元将第一已解码数据串作为已校正数据串传送给主机系统。若在第一已解码数据串中存有错误比特时,上述存储器控制电路单元依据第一已解码数据串判断此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目是否小于预先定义值。其中,上述存储器控制电路单元是在此些行数据段之中无法校正的行数据段的数目小于预先定义值或此些列数据段之中无法校正的列数据段的数目小于预先定义值时,才执行上述搜索已解码子数据单元之中的无法校正子数据单元,从无法校正子数据单元之中选出目标子数据单元,在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串,对已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串的操作。
在本发明的一范例实施例中,若此些行数据段之中无法校正的行数据段的数目与此些列数据段之中无法校正的列数据段的数目都不小于预先定义值时,上述存储器控制电路单元传送错误信息给主机系统。
在本发明的一范例实施例中,在上述从此些无法校正子数据单元之中选出目标子数据单元的操作中,上述存储器控制电路单元根据此些行数据段之中无法校正的行数据段与此些列数据段之中无法校正的列数据段将此些无法校正子数据单元之中的第一无法校正子数据单元作为目标子数据单元,其中此第一无法校正子数据单元是包括在此些行数据段之中的第一行数据段中且包括在此些列数据段之中的第一列数据段中,此些行错误校正码之中对应第一行数据段的第一行错误校正码无法校正第一行数据段并且此些列错误校正码之中对应第一列数据段的第一列错误校正码无法校正第一列数据段。
在本发明的一范例实施例中,上述在第一已解码数据串中调整目标子数据单元以产生已调整使用者数据串的操作中,上述存储器控制电路单元使用调整数据串与第一无法校正子数据单元进行互斥运算以调整第一无法校正子数据单元的至少一比特的值。
基于上述,本发明所提供的数据读取方法、存储器控制电路单元及存储器储存装置可以在解码的过程中,通过翻转错误比特来对未能成功解码数据进行再次解码以成功地解码且读取数据,进而增进数据读取的正确性与对于所储存的数据的保护能力。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图;
图2是根据另一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图;
图3是根据本发明范例实施例所示出的主机系统与存储器储存装置的示意图;
图4是根据一范例实施例所示出的主机系统与存储器储存装置的概要方块图;
图5是根据一范例实施例所示出的存储器控制电路单元的概要方块图;
图6与图7是根据一范例实施例所示出的管理物理抹除单元的范例示意图;
图8是根据本发明的一范例实施例所示出的错误检查与校正码框的示意图;
图9是根据本发明的一范例实施例所示出的使用区块涡轮码进行错误校正编码程序的示意图;
图10是根据本发明的一范例实施例所示出的选取目标子数据单元的范例;
图11是根据一范例实施例所示出的数据读取的流程图。
附图标记说明:
10:存储器储存装置;
11:主机系统;
12:输入/输出(I/O)装置;
110:系统总线;
111:处理器;
112:随机存取存储器(RAM);
113:只读存储器(ROM);
114:数据传输接口;
20:主机板;
201:随身碟;
202:记忆卡;
203:固态硬盘(SSD);
204:无线存储器储存装置;
205:全球定位系统模块;
206:网络接口卡;
207:无线传输装置;
208:键盘;
209:屏幕;
210:喇叭;
30:存储器储存装置;
31:主机系统;
32:SD卡;
33:CF卡;
34:嵌入式储存装置;
341:嵌入式多媒体卡;
342:嵌入式多芯片封装储存装置;
402:连接接口单元;
404:存储器控制电路单元;
406:可复写式非易失性存储器模块;
410(0)~410(N):物理抹除单元;
502:存储器管理电路;
504:主机接口;
506:存储器接口;
508:缓冲存储器;
510:电源管理电路;
512:错误检查与校正电路;
602:数据区;
604:闲置区;
606:系统区;
608:取代区;
LBA(0)~LBA(H):逻辑地址;
LZ(0)~LZ(M):逻辑区域;
ECCF1:错误检查与校正码框;
ECC1:错误检查与校正码组;
UD1:数据;
DB1~DB32:子数据单元;
RG1~RG4:列数据段;
CG1~CG8:行数据段;
BCH1~BCH12:错误校正码;
700:二维数据矩阵;
710:二维数据矩阵;
S1101、S1103、S1105、S1107、S1109、S1111、S1113、S1115、S1117、S1119:步骤。
具体实施方式
一般而言,存储器储存装置(也称,存储器储存系统)包括可复写式非易失性存储器模块与控制器(也称,控制电路单元)。通常存储器储存装置是与主机系统一起使用,以使主机系统可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1是根据一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图。且图2是根据另一范例实施例所示出的主机系统、存储器储存装置及输入/输出(I/O)装置的示意图。
请参照图1与图2,主机系统11一般包括处理器111、随机存取存储器(randomaccess memory,简称:RAM)112、只读存储器(read only memory,简称:ROM)113及数据传输接口114。处理器111、随机存取存储器112、只读存储器113及数据传输接口114都电性连接至系统总线(system bus)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、固态硬盘(Solid State Drive,简称:SSD)203或无线存储器储存装置204。无线存储器储存装置204可例如是近距离无线通信(Near Field Communication Storage,简称:NFC)存储器储存装置、无线传真(WiFi)存储器储存装置、蓝牙(Bluetooth)存储器储存装置或低功耗蓝牙存储器储存装置(例如,iBeacon)等以各式无线通信技术为基础的存储器储存装置。此外,主机板20也可以通过系统总线110电性连接至全球定位系统(Global Positioning System,简称: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和/或嵌入式多芯片封装储存装置(embedded Multi Chip Package,简称:eMCP)342等各类型将存储器模块直接电性连接于主机系统的基板上的嵌入式储存装置。
图4是根据一范例实施例所示出的主机系统与存储器储存装置的概要方块图。
请参照图4,存储器储存装置10包括连接接口单元402、存储器控制电路单元404与可复写式非易失性存储器模块406。
在本范例实施例中,连接接口单元402是相容于串行高级技术附件(SerialAdvanced Technology Attachment,简称:SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402也可以是符合并行高级技术附件(Parallel Advanced TechnologyAttachment,简称:PATA)标准、电气和电子工程师协会(Institute of Electrical andElectronic Engineers,简称:IEEE)1394标准、高速周边零件连接接口(PeripheralComponent Interconnect Express,简称:PCI Express)标准、通用串行总线(UniversalSerial Bus,简称:USB)标准、超高速一代(Ultra High Speed-I,简称:UHS-I)接口标准、超高速二代(Ultra High Speed-II,简称:UHS-II)接口标准、安全数字(Secure Digital,简称:SD)接口标准、记忆棒(Memory Stick,简称:MS)接口标准、多芯片封装(Multi-ChipPackage)接口标准、多媒体储存卡(Multi Media Card,简称:MMC)接口标准、崁入式多媒体储存卡(Embedded Multimedia Card,简称:eMMC)接口标准、通用快闪存储器(UniversalFlash Storage,简称:UFS)接口标准、嵌入式多芯片封装(embedded Multi Chip Package,简称:eMCP)接口标准、小型快闪(Compact Flash,简称:CF)接口标准、整合式驱动电子接口(Integrated Device Electronics,简称:IDE)标准或其他适合的标准。在本范例实施例中,连接接口单元402可与存储器控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含存储器控制电路单元的芯片外。
存储器控制电路单元404用以执行以硬件形式或固件形式实现的多个逻辑门或控制指令,并且根据主机系统11的指令在可复写式非易失性存储器模块406中进行数据的写入、读取与抹除等操作。
可复写式非易失性存储器模块406是电性连接至存储器控制电路单元404,并且用以储存主机系统11所写入的数据。可复写式非易失性存储器模块406具有物理抹除单元410(0)~410(N)。例如,物理抹除单元410(0)~410(N)可属于同一个存储器晶粒(die)或者属于不同的存储器晶粒。每一物理抹除单元分别具有多个物理编程单元,其中属于同一个物理抹除单元的物理编程单元可被独立地写入且被同时地抹除。然而,必须了解的是,本发明不限于此,每一物理抹除单元是可由64个物理编程单元、256个物理编程单元或其他任意个物理编程单元所组成。
更详细来说,物理抹除单元为抹除的最小单位。也就是,每一物理抹除单元含有最小数目的一并被抹除的存储单元。物理编程单元为编程的最小单元。即,物理编程单元为写入数据的最小单元。每一物理编程单元通常包括数据比特区与冗余比特区。数据比特区包含多个物理存取地址用以储存使用者的数据,而冗余比特区用以储存系统的数据(例如,控制信息与错误更正码)。在本范例实施例中,每一个物理编程单元的数据比特区中会包含8个物理存取地址,且一个物理存取地址的大小为512字节(byte)。然而,在其他范例实施例中,数据比特区中也可包含数目更多或更少的物理存取地址,本发明并不限制物理存取地址的大小以及个数。例如,在一范例实施例中,物理抹除单元为物理区块,并且物理编程单元为物理页面或物理扇区,但本发明不以此为限。
在本范例实施例中,可复写式非易失性存储器模块406为多阶存储单元(MultiLevel Cell,简称:MLC)NAND型快闪存储器模块(即,一个存储单元中可储存2个数据比特的快闪存储器模块)。然而,本发明不限于此,可复写式非易失性存储器模块406也可是单阶存储单元(Single Level Cell,简称:SLC)NAND型快闪存储器模块(即,一个存储单元中可储存1个数据比特的快闪存储器模块)、三阶存储单元(Trinary Level Cell,简称:TLC)NAND型快闪存储器模块(即,一个存储单元中可储存3个数据比特的快闪存储器模块)、其他快闪存储器模块或其他具有相同特性的存储器模块。
图5是根据一范例实施例所示出的存储器控制电路单元的概要方块图。
请参照图5,存储器控制电路单元404包括存储器管理电路502、主机接口504与存储器接口506、缓冲存储器508、电源管理电路510与错误检查与校正电路512。
存储器管理电路502用以控制存储器控制电路单元404的整体操作。具体来说,存储器管理电路502具有多个控制指令,并且在存储器储存装置10操作时,此些控制指令会被执行以进行数据的写入、读取与抹除等操作。
在本范例实施例中,存储器管理电路502的控制指令是以固件形式来实现。例如,存储器管理电路502具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制指令是被烧录至此只读存储器中。当存储器储存装置10操作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等操作。
图6与图7是根据一范例实施例所示出的管理物理抹除单元的范例示意图。
必须了解的是,在此描述可复写式非易失性存储器模块106的物理抹除单元的操作时,以“提取”、“分组”、“划分”、“关联”等词来操作物理抹除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块的物理抹除单元的实际位置并未更动,而是逻辑上对可复写式非易失性存储器模块的物理抹除单元进行操作。
请参照图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来被更新。
在本发明另一范例实施例中,存储器管理电路502的控制指令也可以代码形式储存于可复写式非易失性存储器模块406的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路502具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有驱动码,并且当存储器控制电路单元404被致能时,微处理器单元会先执行此驱动码段来将储存于可复写式非易失性存储器模块406中的控制指令载入至存储器管理电路502的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等操作。
此外,在本发明另一范例实施例中,存储器管理电路502的控制指令也可以一硬件形式来实现。例如,存储器管理电路502包括微控制器、存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路。存储单元管理电路、存储器写入电路、存储器读取电路、存储器抹除电路与数据处理电路是电性连接至微控制器。其中,存储单元管理电路用以管理可复写式非易失性存储器模块406的物理抹除单元;存储器写入电路用以对可复写式非易失性存储器模块406下达写入指令以将数据写入至可复写式非易失性存储器模块406中;存储器读取电路用以对可复写式非易失性存储器模块406下达读取指令以从可复写式非易失性存储器模块406中读取数据;存储器抹除电路用以对可复写式非易失性存储器模块406下达抹除指令以将数据从可复写式非易失性存储器模块406中抹除;而数据处理电路用以处理欲写入至可复写式非易失性存储器模块406的数据以及从可复写式非易失性存储器模块406中读取的数据。
请再参照图5,主机接口504是电性连接至存储器管理电路502并且用以电性连接至连接接口单元402,以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至存储器管理电路502。在本范例实施例中,主机接口504是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口504也可以是相容于PATA标准、IEEE 1394标准、PCI Express标准、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会为对应此写入指令的数据产生对应的错误检查与校正码(Error Checking and Correcting Code,简称:ECC Code),并且存储器管理电路502会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块406中。之后,当存储器管理电路502从可复写式非易失性存储器模块406中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路512会根据此错误检查与校正码对所读取的数据执行错误检查与校正程序。
在本范例实施例中,当存储器控制电路单元404(或存储器管理电路502)接收到数据时,存储器控制电路单元404(或存储器管理电路502)会先将数据分割为多个子数据单元,之后错误检查与校正电路512再进行错误校正编码程序以产生对应的错误校正码,并且将这些子数据单元与此些错误校正码编码形成为错误检查与校正码框。例如,每个错误检查与校正码框内的数据(也称为使用者数据)的长度可以是4仟字节(kilobyte,简称:KB)、2B、1KB或其他大小。
在本范例实施例中,存储器控制电路单元404(或存储器管理电路502)会以错误检查与校正码框为单位来对数据解码以读取数据。举例来说,假设主机系统11发送读取指令给存储器储存装置10,其中读取指令指示从某个逻辑地址中读取数据,并且此欲读取的数据被编码至1个错误检查与校正码框。在接收到此读取指令后,存储器控制电路单元404(或存储器管理电路502)会发送读取指令序列至可复写式非易失性存储器模块406以从映射此逻辑地址的物理编程单元中读取数据,从所读取的数据中获取使用者数据串,对此使用者数据串执行错误校正解码操作以产生对应的已校正数据串,并且将已校正数据串传送给主机系统以响应读取指令。应注意的是,若欲读取的数据被编码至2个以上的错误检查与校正码框中时,存储器控制电路单元404(或存储器管理电路502)会读取对应每一错误检查与校正码框的数据串,对所读取的数据串进行错误校正解码操作,并且在成功地校正所读取的数据串后合并数据串成为已校正数据串并且传送至主机系统以响应读取指令。
特别是,在本范例实施例中,错误检查与校正电路512所使用的是区块涡轮码(block turbo code,简称:BTC)算法来进行错误校正编码/解码操作。以下将配合附图说明区块涡轮码算法的详细流程。
图8是根据本发明的一范例实施例所示出的错误检查与校正码框的示意图,并且图9是根据本发明的一范例实施例所示出的使用区块涡轮码进行错误校正编码程序的示意图。必须了解的是,在此描述错误检查与校正电路512对数据的操作时,“选择”、“分割”、“划分”、“关联”、“排列”等词是逻辑上的概念。也就是说,错误检查与校正电路512所处理的数据本身的储存位置并未更动,而是逻辑上对数据进行操作。
请参照图8与图9,错误检查与校正电路512对数据串UD1进行错误校正编码程序,以产生错误检查与校正码组ECC1,其中错误检查码ECC1会与数据串UD1一起形成错误与检查校正码框ECCF1而被编程至可复写式挥发性存储器模块406的物理编程单元中。如上所述,在本范例实施例中,错误检查与校正电路512会使用区块涡轮码算法来对数据串UD1。在执行区块涡轮码算法的过程中,错误检查与校正电路512会将数据串UD1划分为多个子数据单元,将所划分的子数据单元以矩阵形式排列,分别为以矩阵形式排列的子数据单元产生对应的行错误检查码与列错误检查码,并且合并所产生的行错误检查码与列错误检查码来形成错误检查与校正码组ECC1。
举例来说,首先,错误检查与校正电路512会将数据串UD1分割为子数据单元DB1~DB32。应注意的是,在本范例实施例中,为了便于说明,每一子数据单元包含2个字节的数据(即,8个比特的数据),但本发明不限于此。例如,在其他实施例中,每一子数据单元也可包含1个或是多于2个的字节的数据。
接着,错误检查与校正电路512将子数据单元DB1~DB32排列为一个8乘以4的二维(横向与纵向)数据矩阵,并且依照维度来划分为多个行数据段与列数据段。例如,横向排列的子数据单元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会使用博斯-乔赫里-霍克码(以下称BCH)作为辅助编码算法来分别对此些子数据单元做编码,以产生对应此些列数据段与行数据段的错误校正码。也就是说,对于横向的列数据段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会使用低密度奇偶检查校正码作为辅助编码算法来分别对此些子数据单元做编码。
值得一提的是,在本范例实施例中,错误检查与校正电路512会先将子数据单元划分至多个行数据段与列数据段之后,再对每一行数据段与列数据段进行编码以产生对应每一行数据段与列数据段的行错误校正码与列错误校正码,但本发明不限于此。例如,在另一范例实施例中,错误检查与校正电路512可不先将子数据单元划分为此些行数据段与列数据段,并且直接根据子数据单元的排列方式来对子数据单元作错误校正编码。举例来说,错误检查与校正电路512会直接对子数据单元DB1~DB8来进行错误校正编码程序,以产生对应子数据单元DB1~DB8的列错误校正码BCH1。
请参照图8,在本范例实施例中,错误检查与校正电路512会将列错误校正码BCH1~BCH4和行错误校正码BCH5~BCH12合并成为错误检查与校正码组ECC1,并且将包含数据串UD1(即,子数据单元DB1~DB32)与错误检查与校正码组ECC1的错误检查与校正码框ECCF1储存至可复写式非易失性存储器模块406。尔后,存储器控制电路单元404从可复写式非易失性存储器模块406中读取错误检查与校正码框ECCF1后,可使用错误检查与校正码组ECC1对错误检查与校正码框ECCF1所读取到的数据串进行错误校正解码程序以获得正确的数据串UD1。
举例来说,当从主机系统接收到读取指令时,存储器控制电路单元404(或存储器管理电路502)会根据读取指令从可复写式非易失性存储器模块406的物理编程单元中读取对应的错误检查与校正码框ECCF1并且获取未校正的数据串UD1及对应的错误检查与校正码组ECC1。接着,错误检查与校正电路512会执行错误校正解码操作,以将未校正的数据串UD1分割为32个子数据单元DB1~DB32,并且将子数据单元DB1~DB32排列成二维数据矩阵700,并且从错误检查与校正码组ECC1中获取对应每一行数据段的行错误校正码BCH5~BCH12与每一列数据段的列错误校正码BCH1~BCH4。然后,错误检查与校正电路512会使用对应的行错误校正码对每一行数据段进行解码并使用对应的列错误校正码对对列数据段进行解码。例如,错误检查与校正电路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会从目前的已解码数据串的多个已解码子数据单元中,搜索无法校正子数据单元并且将其中一个无法校正子数据单元设定为目标子数据单元。特别是,错误检查与校正电路512会调整此目标子数据单元内的数据串的值,并且再重新执行上述区块涡轮码算法来解码调整后的行数据段与列数据段,由此正确输出校正后的使用者数据。具体来说,在本发明范例实施例中,错误检查与校正电路512会根据最后解码的结果搜索无法校正子数据单元,并且根据无法解码成功的行数据段与列数据段来选择目标子数据单元来进行调整。
图10是根据本发明的一范例实施例所输出的选取目标子数据单元的范例。
请参照图10,假设所读取的错误检查与校正码框ECCF1中的使用者数据经过区块涡轮码算法解码后所输出的解码数据串(以下称为第一已解码数据串)会排列成二维数据矩阵710,并且错误检查与校正电路512无法根据列错误校正码BCH2正确校正列数据段RG2且无法根据行错误校正码BCH8正确校正行数据段CG4。在此例子中,错误检查与校正电路512会先搜索出无法校正的子数据单元为子数据单元DB4、DB9、DB10、DB11、DB12、DB13、DB14、DB15、DB16、DB20、DB28(如斜线所示)。然后,错误检查与校正电路512会依据无法校正的列数据段RG2与行数据段CG4识别出交界的子数据单元DB12作为目标子数据单元。
在选出目标子数据单元后,错误检查与校正电路512会改变目标子数据单元内的至少一个比特的值,以产生调整后的使用者数据(以下称为已调整使用者数据)。例如,在每个子数据单元内包括2个字节的数据的例子中,错误检查与校正电路512每次会调整1个比特的值,将其从’0’改变为’1’或从’1’改变为’0’。在本发明一范例实施例中,错误检查与校正电路512可产生一个对应的调整数据串来与目标子数据单元内的数据串进行互斥运算,以改变其比特的值。例如,若目标子数据单元内的数据串为’11111111’且要将第一个比特改变为’0’时,错误检查与校正电路512可产生调整数据串’10000000’并与数据串’11111111’执行互斥运算,则可获得数据串’01111111’。在调整完目标子数据单元内的值后,错误检查与校正电路512会将调整后的目标子数据单元的数据串与第一已解码数据串内其他子数据单元的数据串整合为已调整使用者数据,并重新进行上述区块涡轮码解码操作,以判断目标子数据单元是否可以被正确校正。若目标子数据单元无法被正确校正,错误检查与校正电路512会反复调整目标区块内的每个比特值,并进行上述区块涡轮码解码操作。也就是说,第一次调整目标子数据单元内的第1个比特;第一次调整目标子数据单元内的第2个比特;第三次调整目标子数据单元内的第3个比特;并且以此类推。若在重新执行区块涡轮码解码操作的过程中,目标子数据单元可以被正确校正且使用已调整使用者数据内的其他无法校正子数据单元皆可被校正时,错误检查与校正电路512会输出校正后的数据串(以下称为已校正数据串)。
必须了解的是,在上述例子中,错误检查与校正电路512是一次改变1个比特的值,但本发明不限于此,在另一范例实施例中,错误检查与校正电路512亦可一次改变目标子数据单元内2个比特的值。
基于上述,在本发明范例实施例中,当错误检查与校正电路512对使用者数据串执行完区块涡轮码解码操作后识别无法产生正确校正的数据串时,错误检查与校正电路512会搜索出可能存有大量错误比特的子数据单元,并且以比特翻转(bit flipping)方式调整此子数据单元内的比特值,由此再尝试解码。基此,本发明范例实施例的错误检查与校正电路512可提升正确校正数据的效能。在此,上述找出目标子数据单元、调整目标子数据单元的比特值、重新执行区块涡轮码解码的操作也称为比特翻转解码操作。
图11是根据一范例实施例所示出的数据读取的流程图。
请参照图11,在步骤S1101中,存储器控制电路单元404(或存储器管理电路502)从主机系统11接收指示从逻辑地址读取数据的读取指令。
在步骤S1103中,存储器控制电路单元404(或存储器管理电路502)发送读取指令序列以从可复写式非易失性存储器模块406读取对应此逻辑地址的数据。
在步骤S1105中,存储器控制电路单元404(或错误检查与校正电路512)依据所读取的错误检查与校正码组对所读取的使用者数据串执行错误校正解码操作以产生已解码数据串(以下称为第一已解码数据串)。例如,在本范例实施例中,存储器控制电路单元404(或错误检查与校正电路512)是使用区块涡轮码算法来解码使用者数据串,并且其解码步骤已配合图式详细描述如前,在此不在重复说明。
在步骤S1107中,存储器控制电路单元404(或错误检查与校正电路512)会判断第一已解码数据串是否存有无法校正的错误比特。
倘若第一已解码数据串无存有无法校正的错误比特时,在步骤S1109中,存储器控制电路单元404(或存储器管理电路502)会将第一已解码数据串作为已校正数据串传送给主机系统11以响应此读取指令。
倘若第一已解码数据串存有无法校正的错误比特时,在步骤S1111中,存储器控制电路单元404(或错误检查与校正电路512)会判断是否执行比特翻转操作。例如,在一范例实施例中,存储器控制电路单元404(或错误检查与校正电路512)会判断第一已解码数据串中无法校正的行数据段的数目与无法校正的列数据段的数目是否小于预先定义值。例如,此预先定义值会被设定为1。倘若第一已解码数据串中无法校正的行数据段的数目或无法校正的列数据段的数目小于预先定义值时,存储器控制电路单元404(或错误检查与校正电路512)会决定执行比特翻转解码操作。此外,存储器控制电路单元404(或错误检查与校正电路512)也会判断执行比特翻转操作的次数是否已经达到比特翻转次数门槛值,并且若执行比特翻转操作的次数已经达到比特翻转次数门槛值时,则存储器控制电路单元404(或错误检查与校正电路512)会决定不执行比特翻转解码操作。
倘若决定不执行比特翻转解码操作时,在步骤S1113中存储器控制电路单元404(或存储器管理电路502)会输出指示无法顺利读取数据的错误信息给主机系统11以响应此读取指令。必须了解是,在决定不执行比特翻转解码操作时后就传送错误信息给主机系统11仅是一范例,在另一范例实施例中,存储器控制电路单元404亦可在不执行比特翻转解码操作之后,执行其他辅助解码机制来继续解码。例如,存储器控制电路单元404也为多个错误校正与检查码框产生外部错误校正码,并且当一个错误校正与检查码框的使用者数据无法被校正时,存储器控制电路单元404可读取其他错误校正与检查码框且使用外部错误校正码对此些错误校正与检查码框执行错误校正操作,以尝试校正无法被校正错误校正与检查码框。
倘若决定执行比特翻转解码操作时,在步骤S1115中存储器控制电路单元404(或错误检查与校正电路512)会搜索第一已解码数据串的已解码子数据单元之中的多个无法校正子数据单元,从无法校正子数据单元之中选择目标子数据单元,在第一已解码数据串中调整所选择的目标子数据单元的至少一比特值以产生已调整使用者数据串,并且对该已调整使用者数据串重新执行错误校正解码操作以产生第二已解码数据串。在步骤S1115中搜索无法校正子数据单元、选择目标子数据单元以及调整目标子数据单元的至少一比特值的方式已详细描述如上,在此不再重复描述。
之后,在步骤S1117中,存储器控制电路单元404(或错误检查与校正电路512)会判断第二已解码数据串是否存有无法校正的错误比特。倘若第二已解码数据串无存有无法校正的错误比特时,在步骤S1119中,存储器控制电路单元404(或存储器管理电路502)会将第二已解码数据串作为已校正数据串传送给主机系统11以响应此读取指令。倘若第二已解码数据串存有无法校正的错误比特时,步骤S1111会被执行。
综上所述,本发明范例实施例的数据读取方法、存储器控制电路单元及存储器储存装置在所读取的数据无法被校正时,通过对可能集中出现过多错误比特的子数据单元执行比特翻转,以正确地读取数据。基此,本发明范例实施例的数据读取方法、存储器控制电路单元及存储器储存装置整够有效提升错误校正的效能,避免数据遗失。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (18)

1.一种数据读取方法,其特征在于,用于一可复写式非易失性存储器模块,所述数据读取方法包括:
从所述可复写式非易失性存储器模块读取一数据,其中所述数据包括一使用者数据串与一错误检查与校正码组,所述使用者数据串包括多个子数据单元,所述错误检查与校正码组包括多个行错误校正码与多个列错误校正码,所述多个行错误校正码是分别地对应在以一矩阵形式排列的所述多个子数据单元之中的多个行数据段,且所述多个列错误校正码是分别地对应在以所述矩阵形式排列的所述多个子数据单元之中的多个列数据段;
依据所述错误检查与校正码组对所述使用者数据串执行一错误校正解码操作以产生一第一已解码数据串,其中所述第一已解码数据串包括对应所述多个子数据单元中至少部分的多个已解码子数据单元;
搜索所述多个已解码子数据单元之中的至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出至少一目标子数据单元,在所述第一已解码数据串中使用一调整数据串与所述至少一目标子数据单元进行一逻辑运算以调整所述至少一目标子数据单元并产生一已调整使用者数据串,并且对所述已调整使用者数据串重新执行所述错误校正解码操作以产生一第二已解码数据串;以及
将所述第二已解码数据串作为一已校正数据串传送给一主机系统。
2.根据权利要求1所述的数据读取方法,其特征在于,依据所述错误检查与校正码组对所述使用者数据串执行所述错误校正解码操作以产生所述第一已解码数据串的步骤包括依据所述多个行错误校正码与所述多个列错误校正码解码所述多个行数据段与所述多个列数据段以获得所述多个已解码子数据单元。
3.根据权利要求2所述的数据读取方法,其特征在于,还包括:
判断在所述第一已解码数据串中是否存有错误比特;
若在所述第一已解码数据串中无错误比特时,将所述第一已解码数据串作为所述已校正数据串传送给所述主机系统;以及
若在所述第一已解码数据串中存有错误比特时,依据所述第一已解码数据串判断所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目是否小于一预先定义值,
其中所述搜索所述多个已解码子数据单元之中的所述至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出所述至少一目标子数据单元,在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串,对所述已调整使用者数据串重新执行所述错误校正解码操作以产生所述第二已解码数据串的步骤,是在所述多个行数据段之中无法校正的行数据段的数目小于所述预先定义值或所述多个列数据段之中无法校正的列数据段的数目小于所述预先定义值时被执行。
4.根据权利要求3所述的数据读取方法,其特征在于,还包括:
若所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目都不小于所述预先定义值,传送一错误信息给所述主机系统。
5.根据权利要求3所述的数据读取方法,其特征在于,识别所述至少一无法校正子数据单元之中的所述至少一目标子数据单元的步骤包括:
根据所述多个行数据段之中之一无法校正的行数据段与所述多个列数据段之中之一无法校正的列数据段将所述至少一无法校正子数据单元之中的一第一无法校正子数据单元作为所述至少一目标子数据单元,
其中所述第一无法校正子数据单元是包括在所述多个行数据段之中的一第一行数据段中且包括在所述多个列数据段之中的一第一列数据段中,所述多个行错误校正码之中对应所述第一行数据段的一第一行错误校正码无法校正所述第一行数据段并且所述多个列错误校正码之中对应所述第一列数据段的一第一列错误校正码无法校正所述第一列数据段。
6.根据权利要求5所述的数据读取方法,其特征在于,在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串的步骤包括:
使用一调整数据串与所述第一无法校正子数据单元进行一逻辑运算以调整所述第一无法校正子数据单元的至少一比特的值。
7.一种存储器控制电路单元,其特征在于,用于控制一可复写式非易失性存储器模块,所述存储器控制电路单元包括:
一主机接口,用以电性连接至一主机系统;
一存储器接口,用以电性连接至所述可复写式非易失性存储器模块;
一存储器管理电路,电性连接至所述主机接口与所述存储器接口;以及,
一错误检查与校正电路,电性连接至所述存储器管理电路,
其中所述存储器管理电路发送一读取指令序列以从所述可复写式非易失性存储器模块读取一数据,其中所述数据包括一使用者数据串与一错误检查与校正码组,所述使用者数据包括多个子数据单元,所述错误检查与校正码组包括多个行错误校正码与多个列错误校正码,所述多个行错误校正码是分别地对应在以一矩阵形式排列的所述多个子数据单元之中的多个行数据段,且所述多个列错误校正码是分别地对应在以所述矩阵形式排列的所述多个子数据单元之中的多个列数据段,
其中所述错误检查与校正电路依据所述错误检查与校正码组对所述使用者数据串执行一错误校正解码操作以产生一第一已解码数据串,其中所述第一已解码数据串包括对应所述多个子数据单元中至少部分的多个已解码子数据单元,
其中所述错误检查与校正电路搜索所述多个已解码子数据单元之中的至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出至少一目标子数据单元,在所述第一已解码数据串中使用一调整数据串与所述至少一目标子数据单元进行一逻辑运算以调整所述至少一目标子数据单元并产生一已调整使用者数据串,并且对所述已调整使用者数据串重新执行所述错误校正解码操作以产生一第二已解码数据串,
其中所述存储器管理电路将所述第二已解码数据串作为一已校正数据串传送给所述主机系统。
8.根据权利要求7所述的存储器控制电路单元,其特征在于,在依据所述错误检查与校正码组对所述使用者数据串执行所述错误校正解码操作以产生所述第一已解码数据串的操作中,所述错误检查与校正电路依据所述多个行错误校正码与所述多个列错误校正码使用一区块涡轮码算法解码所述多个行数据段与所述多个列数据段以获得所述多个已解码子数据单元。
9.根据权利要求8所述的存储器控制电路单元,其特征在于,所述错误检查与校正电路判断在所述第一已解码数据串中是否存有错误比特,
其中若在所述第一已解码数据串中无错误比特时,所述存储器管理电路将所述第一已解码数据串作为所述已校正数据串传送给所述主机系统,
其中若在所述第一已解码数据串中存有错误比特时,所述错误检查与校正电路依据所述第一已解码数据串判断所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目是否小于一预先定义值,
其中所述错误检查与校正电路是在所述多个行数据段之中无法校正的行数据段的数目小于所述预先定义值或所述多个列数据段之中无法校正的列数据段的数目小于所述预先定义值时,才执行所述搜索所述多个已解码子数据单元之中的所述至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出所述至少一目标子数据单元,在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串,对所述已调整使用者数据串重新执行所述错误校正解码操作以产生所述第二已解码数据串的操作。
10.根据权利要求9所述的存储器控制电路单元,其特征在于,若所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目都不小于所述预先定义值时,所述存储器管理电路传送一错误信息给所述主机系统。
11.根据权利要求9所述的存储器控制电路单元,其特征在于,在识别所述至少一无法校正子数据单元之中的所述至少一目标子数据单元的操作中,所述错误检查与校正电路根据所述多个行数据段之中无法校正的行数据段与所述多个列数据段之中无法校正的列数据段将所述至少一无法校正子数据单元之中的一第一无法校正子数据单元作为所述至少一目标子数据单元,
其中所述第一无法校正子数据单元是包括在所述多个行数据段之中的一第一行数据段中且包括在所述多个列数据段之中的一第一列数据段中,所述多个行错误校正码之中对应所述第一行数据段的一第一行错误校正码无法校正所述第一行数据段并且所述多个列错误校正码之中对应所述第一列数据段的一第一列错误校正码无法校正所述第一列数据段。
12.根据权利要求11所述的存储器控制电路单元,其特征在于,所述在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串的操作中,所述错误检查与校正电路使用一调整数据串与所述第一无法校正子数据单元进行一互斥运算以调整所述第一无法校正子数据单元的至少一比特的值。
13.一种存储器储存装置,其特征在于,包括:
一连接接口单元,用以电性连接至一主机系统;
一可复写式非易失性存储器模块;以及
一存储器控制电路单元,电性连接至所述连接接口单元与所述可复写式非易失性存储器模块,
其中所述存储器控制电路单元发送一读取指令序列以从所述可复写式非易失性存储器模块读取一数据,其中所述数据包括一使用者数据串与一错误检查与校正码组,所述使用者数据包括多个子数据单元,所述错误检查与校正码组包括多个行错误校正码与多个列错误校正码,所述多个行错误校正码是分别地对应在以一矩阵形式排列的所述多个子数据单元之中的多个行数据段,且所述多个列错误校正码是分别地对应在以所述矩阵形式排列的所述多个子数据单元之中的多个列数据段,
其中所述存储器控制电路单元依据所述错误检查与校正码组对所述使用者数据串执行一错误校正解码操作以产生一第一已解码数据串,其中所述第一已解码数据串包括对应所述多个子数据中至少部分的多个已解码子数据单元,
其中所述存储器控制电路单元搜索所述多个已解码子数据单元之中的至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出至少一目标子数据单元,在所述第一已解码数据串中使用一调整数据串与所述至少一目标子数据单元进行一逻辑运算以调整所述至少一目标子数据单元并产生一已调整使用者数据串,并且对所述已调整使用者数据串重新执行所述错误校正解码操作以产生一第二已解码数据串,
其中所述存储器控制电路单元将所述第二已解码数据串作为一已校正数据串传送给所述主机系统。
14.根据权利要求13所述的存储器储存装置,其特征在于,在依据所述错误检查与校正码对所述使用者数据串执行所述错误校正解码操作以产生所述第一已解码数据串的操作中,所述存储器控制电路单元依据所述多个行错误校正码与所述多个列错误校正码使用一区块涡轮码算法解码所述多个行数据段与所述多个列数据段以获得所述多个已解码子数据单元。
15.根据权利要求14所述的存储器储存装置,其特征在于,所述存储器控制电路单元判断在所述第一已解码数据串中是否存有错误比特,
其中若在所述第一已解码数据串中无错误比特时,所述存储器控制电路单元将所述第一已解码数据串作为所述已校正数据串传送给所述主机系统,
其中若在所述第一已解码数据串中存有错误比特时,所述存储器控制电路单元依据所述第一已解码数据串判断所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目是否小于一预先定义值,
其中所述存储器控制电路单元是在所述多个行数据段之中无法校正的行数据段的数目小于所述预先定义值或所述多个列数据段之中无法校正的列数据段的数目小于所述预先定义值时,才执行所述搜索所述多个已解码子数据单元之中的所述至少一无法校正子数据单元,从所述至少一无法校正子数据单元之中选出所述至少一目标子数据单元,在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串,对所述已调整使用者数据串重新执行所述错误校正解码操作以产生所述第二已解码数据串的操作。
16.根据权利要求15所述的存储器储存装置,其特征在于,若所述多个行数据段之中无法校正的行数据段的数目与所述多个列数据段之中无法校正的列数据段的数目都不小于所述预先定义值,所述存储器控制电路单元传送一错误信息给所述主机系统。
17.根据权利要求15所述的存储器储存装置,其特征在于,在识别所述至少一无法校正子数据单元之中的所述至少一目标子数据单元的操作中,所述存储器控制电路单元根据所述多个行数据段之中无法校正的行数据段与所述多个列数据段之中无法校正的列数据段将所述至少一无法校正子数据单元之中的一第一无法校正子数据单元作为所述至少一目标子数据单元,
其中所述第一无法校正子数据单元是包括在所述多个行数据段之中的一第一行数据段中且包括在所述多个列数据段之中的一第一列数据段中,所述多个行错误校正码之中对应所述第一行数据段的一第一行错误校正码无法校正所述第一行数据段并且所述多个列错误校正码之中对应所述第一列数据段的一第一列错误校正码无法校正所述第一列数据段。
18.根据权利要求17所述的存储器储存装置,其特征在于,所述在所述第一已解码数据串中调整所述至少一目标子数据单元以产生所述已调整使用者数据串的操作中,所述存储器控制电路单元使用一调整数据串与所述第一无法校正子数据单元进行一互斥运算以调整所述第一无法校正子数据单元的至少一比特的值。
CN201510954296.5A 2015-12-18 2015-12-18 数据读取方法、存储器控制电路单元及存储器储存装置 Active CN106897023B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510954296.5A CN106897023B (zh) 2015-12-18 2015-12-18 数据读取方法、存储器控制电路单元及存储器储存装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510954296.5A CN106897023B (zh) 2015-12-18 2015-12-18 数据读取方法、存储器控制电路单元及存储器储存装置

Publications (2)

Publication Number Publication Date
CN106897023A CN106897023A (zh) 2017-06-27
CN106897023B true CN106897023B (zh) 2020-06-09

Family

ID=59189893

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510954296.5A Active CN106897023B (zh) 2015-12-18 2015-12-18 数据读取方法、存储器控制电路单元及存储器储存装置

Country Status (1)

Country Link
CN (1) CN106897023B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580741B (zh) * 2019-02-15 2023-06-13 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
CN116431382B (zh) * 2023-06-12 2023-09-29 深圳大普微电子科技有限公司 纠错单元管理方法、存储控制芯片及闪存设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1947369A (zh) * 2004-04-29 2007-04-11 汤姆森许可贸易公司 传输数字数据分组的方法和实现该方法的设备
US7305607B2 (en) * 2005-04-21 2007-12-04 Hynix Semiconductor Inc. Nonvolatile ferroelectric memory device including failed cell correcting circuit
EP2234305A1 (en) * 2009-03-27 2010-09-29 Nokia Siemens Networks Oy Method of reliable communications by splitting redundant data into CRC sub-blocks best reassembled at the receiver
CN102201266A (zh) * 2010-03-24 2011-09-28 株式会社东芝 半导体存储器装置
US8419547B1 (en) * 2010-11-04 2013-04-16 Wms Gaming, Inc. Iterative XOR-matrix forward error correction for gaming
CN104272396A (zh) * 2012-03-06 2015-01-07 美光科技公司 包含错误校正码组织的设备和方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051358B2 (en) * 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US9098428B2 (en) * 2012-12-11 2015-08-04 Sandisk Technologies Inc. Data recovery on cluster failures and ECC enhancements with code word interleaving

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1947369A (zh) * 2004-04-29 2007-04-11 汤姆森许可贸易公司 传输数字数据分组的方法和实现该方法的设备
US7305607B2 (en) * 2005-04-21 2007-12-04 Hynix Semiconductor Inc. Nonvolatile ferroelectric memory device including failed cell correcting circuit
EP2234305A1 (en) * 2009-03-27 2010-09-29 Nokia Siemens Networks Oy Method of reliable communications by splitting redundant data into CRC sub-blocks best reassembled at the receiver
CN102201266A (zh) * 2010-03-24 2011-09-28 株式会社东芝 半导体存储器装置
US8419547B1 (en) * 2010-11-04 2013-04-16 Wms Gaming, Inc. Iterative XOR-matrix forward error correction for gaming
CN104272396A (zh) * 2012-03-06 2015-01-07 美光科技公司 包含错误校正码组织的设备和方法

Also Published As

Publication number Publication date
CN106897023A (zh) 2017-06-27

Similar Documents

Publication Publication Date Title
US10025660B2 (en) Data reading method, memory control circuit unit and memory storage apparatus
US10977116B2 (en) Data access method, memory control circuit unit and memory storage device
US10691534B2 (en) Data encoding method, data decoding method and storage controller
TWI640865B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US11907059B2 (en) Abnormal power loss recovery method, memory control circuit unit, and memory storage device
TWI640997B (zh) 資料保護方法、記憶體控制電路單元與記憶體儲存裝置
CN109491828B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN111580741B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
TWI732642B (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US9996415B2 (en) Data correcting method, memory control circuit unit, and memory storage device
CN106897023B (zh) 数据读取方法、存储器控制电路单元及存储器储存装置
TWI709850B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN113724774B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
CN107179960B (zh) 解码方法、存储器控制电路单元及存储器存储装置
US11983069B2 (en) Data rebuilding method, memory storage apparatus, and memory control circuit unit
CN110874282B (zh) 数据存取方法、存储器控制电路单元与存储器存储装置
US11817172B2 (en) Table management method, memory storage device and memory control circuit unit
US11531589B1 (en) Decoding method, memory storage device, and memory control circuit unit
CN111724851B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
US20220413960A1 (en) Crossing frames encoding management method, memory storage apparatus and memory control circuit unit
CN107305476B (zh) 数据校正方法、存储器控制电路单元与存储器存储装置
CN114077515A (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
CN117079691A (zh) 解码方法、存储器存储装置及存储器控制电路单元
TW202217556A (zh) 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant