CN116263724A - 存储器控制器与数据处理方法 - Google Patents
存储器控制器与数据处理方法 Download PDFInfo
- Publication number
- CN116263724A CN116263724A CN202210301297.XA CN202210301297A CN116263724A CN 116263724 A CN116263724 A CN 116263724A CN 202210301297 A CN202210301297 A CN 202210301297A CN 116263724 A CN116263724 A CN 116263724A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- error correction
- data block
- bit
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012937 correction Methods 0.000 claims abstract description 111
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 description 20
- 238000011084 recovery Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008439 repair process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及一种存储器控制器与数据处理方法。该存储器控制器包括错误更正码引擎、缓冲存储器以及微处理器。微处理器响应于既定数据的第一解码结果对存储器装置执行反复读取操作,以取得包含既定数据的数据组块的多个读取结果,其中数据组块包括多个位元。微处理器更根据数据组块的读取结果执行一数据重建与更正程序,于数据重建操作中,微处理器根据数据组块的读取结果决定数据组块的位元所对应的一位元值,以产生一重建的数据组块,以及于错误更正操作中,微处理器将重建的数据组块提供给错误更正码引擎,以取得既定数据的一第二解码结果。
Description
技术领域
本发明有关于一种可有效改善存储器装置的错误更正效能的数据处理方法及对应的存储器控制器。
背景技术
随着编码技术的演进,现今已发展出许多种可用于存储器装置的错误更正码引擎的错误更正码(或称纠错码),而各种错误更正码的错误更正能力也不尽相同。一般而言,错误更正码引擎的错误更正能力越强,价格越昂贵,因为其通常会采用设计较复杂且纠错能力较强的错误更正码进行开发。然而,基于成本考量,纠错能力相对较弱的错误更正码仍然会被广泛使用。
举例而言,对于较慢速的储存装置(例如,通用序列总线(Universal Serial Bus,缩写为USB)随身碟)而言,BCH(取自Bose、Chaudhuri与Hocquenghem的缩写)码由于可以达到设计简单、价格低廉、体积小巧等优势,因此还是非常广泛被选择做为错误更正码使用。然而,BCH码的校正能力有限。在相同位元数的数据量之下,BCH码所能更正的错误位元数通常低于其他较高阶的错误更正码所能更正的错误位元数。
为了在采用纠错能力相对较弱的错误更正码的产品中加强错误更正效能,本发明提出一种数据处理方法及对应的存储器控制器,以改善存储器装置的错误更正效能。
发明内容
本发明的一目的在于改善存储器装置的错误更正效能。
根据本发明的一实施例,一种存储器控制器,耦接一存储器装置,用以控制存储器装置的存取操作,包括一错误更正码引擎、一缓冲存储器以及一微处理器。错误更正码引擎用以编码需被写入存储器装置的数据,以及解码读取自存储器装置的数据。缓冲存储器用以提供数据缓冲。微处理器响应于既定数据的第一解码结果对存储器装置执行反复读取操作,以取得存储器装置中包含既定数据的数据组块的多个读取结果,其中数据组块包括多个位元,并且读取结果被储存于缓冲存储器。微处理器更根据数据组块的读取结果执行一数据重建与更正程序,其中数据重建与更正程序包括一数据重建操作与一错误更正操作,于数据重建操作中,微处理器根据数据组块的读取结果决定数据组块的位元所对应的一位元值,以产生一重建的数据组块,以及于错误更正操作中,微处理器将重建的数据组块提供给错误更正码引擎,以取得既定数据的一第二解码结果。
根据本发明的另一实施例,一种数据处理方法,由耦接一存储器装置的一存储器控制器所执行,包括:响应于一既定数据的一第一解码结果对存储器装置执行一反复读取操作,以取得存储器装置中包含既定数据的一数据组块的多个读取结果,其中数据组块包括多个位元,并且读取结果被储存于存储器控制器的一缓冲存储器中;以及根据数据组块的读取结果执行一数据重建与更正程序,以取得既定数据的一第二解码结果。其中根据数据组块的读取结果执行数据重建与更正程序的步骤还包括:根据数据组块的读取结果决定数据组块的位元所对应的一位元值,以产生一重建的数据组块;以及将重建的数据组块提供给存储器控制器的一错误更正码引擎,以取得既定数据的第二解码结果。
附图说明
图1显示根据本发明的一实施例所述的数据储存装置的方块图范例。
图2显示根据本发明的一实施例所述的数据处理方法的范例流程图。
图3显示根据本发明的一实施例所述的数据处理流程范例。
图4显示根据本发明的一实施例所述的手动读取的各位元的位元值统计表格范例。
【符号说明】
100:数据储存装置
110:存储器控制器
112:微处理器
112C:程序码
112M:只读存储器
114:存储器接口
116:缓冲存储器
118:主机接口
120:存储器装置
130:主机装置
140:错误更正码引擎
400:统计表格
具体实施方式
在下文中,描述了许多具体细节以提供对本发明实施例的透彻理解。然而,本领域技术人员仍将理解如何在缺少一个或多个具体细节或依赖于其他方法、元件或材料的情况下实施本发明。在其他情况下,未详细示出或描述公知的结构、材料或操作,以避免模糊本发明的主要概念。
在整个说明书中对“一实施例”或“一范例”的引用意味着结合该实施例或范例所描述的特定特征、结构或特性包括于本发明的多个实施例的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“于本发明的一实施例中”、“根据本发明的一实施例”、“于一范例中”或“根据本发明的一范例”不一定都指到相同的实施例或范例。此外,特定特征、结构或特性可以在一个或多个实施例或范例中以任何合适的组合和/或子组合进行结合。
此外,为让本发明的目的、特征和优点能更明显易懂,下文特举出本发明的具体实施例,并配合附图,作详细说明如下。目的在于说明本发明的精神而非用以限定本发明的保护范围,应理解下列实施例可经由软件、硬件、固件、或上述任意组合来实现。
图1显示根据本发明的一实施例所述的数据储存装置的方块图范例。数据储存装置100可包括一存储器装置120与一存储器控制器110。存储器控制器110用以存取(Access)存储器装置120及控制存储器装置120的运作。存储器装置120可为一非挥发性(non-volatile,缩写为NV)存储器装置(例如,一快闪存储器(flash memory)),并且可包括一或多个记忆元件(例如,一或多个快闪存储器晶粒、一或多个快闪存储器芯片、或其他类似元件)。
数据储存装置100可耦接至一主机装置130。主机装置130可至少包括一处理器、一电源电路、以及至少一随机存取存储器(Random Access Memory,缩写为RAM),例如至少一动态随机存取存储器(Dynamic RAM,缩写为DRAM)、至少一静态随机存取存储器(StaticRAM,缩写为SRAM)等(以上未示于图1)。处理器与随机存取存储器可透过一总线彼此相互连接,并且可耦接至电源电路以取得电源。处理器可控制主机装置130的运作。电源电路可将电源供应至处理器、随机存取存储器以及数据储存装置100,例如输出一或多个驱动电压至数据储存装置100。数据储存装置100可自主机装置130取得所述驱动电压作为数据储存装置100的电源,并且为主机装置130提供储存空间。
根据本发明的一实施例,主机装置130可对数据储存装置100发出指令,例如,读取指令或写入指令,用以存取存储器装置120所储存的数据,或者主机装置130可对数据储存装置100发出指令以进一步控制、管理数据储存装置100。
根据本发明的一实施例,存储器控制器110可包括一微处理器112、一只读存储器(Read Only Memory,缩写为ROM)112M、一存储器接口114、一缓冲存储器116、与一主机接口118。只读存储器112M用以储存程序码112C。而微处理器112则用来执行程序码112C以控制对存储器装置120的存取。程序码112C可包括一或多个程序模块,例如启动载入(bootloader)程序码。当数据储存装置100自主机装置130取得电源时,微处理器112可藉由执行程序码112C执行数据储存装置100的一初始化程序。于初始化程序中,微处理器112可自存储器装置120载入一组系统内编程(In-System Programming,缩写为ISP)程序码(未示于图1)。微处理器112可执行该组系统内编程程序码,使得数据储存装置100可具备各种功能。根据本发明的一实施例,该组系统内编程程序码可包括,但不限于:一或多个与存储器存取(例如,读取、写入与抹除)相关的程序模块,例如一读取操作模块、一查找表格模块、一损耗均衡(wear leveling)模块、一读取刷新(read refresh)模块、一读取回收(read reclaim)模块、一垃圾回收模块、一非预期断电恢复(Sudden Power Off Recovery,缩写为SPOR)模块、以及一不可更正错误更正码(Uncorrectable Error Correction Code,缩写为UECC)模块,其分别被提供用以执行对应的读取、查找表格、损耗均衡、读取刷新、读取回收、垃圾回收、非预期断电恢复以及对侦测到的UECC错误进行错误处理等操作。
存储器接口114包含了一错误更正码引擎140。错误更正码引擎140内部可包含一数据缓冲器(图未示),用以暂存数据,以辅助错误更正码引擎140对数据执行编码与解码操作。于将数据写入存储器装置120的写入流程中,错误更正码引擎140对需被写入存储器装置120的数据进行编码,例如执行错误更正码(ECC)编码,以产生额外的奇偶位元(paritybits)。而于将数据读出存储器装置120的读取流程中,错误更正码引擎140对从存储器装置120所读出的数据进行解码,用以检测数据中的错误位元,并且于可更正的情况下(例如,数据中的错误位元数量不超过错误更正码引擎140所能更正的错误位元数上限),修正错误位元的位元值。
于典型状况下,存储器装置120包含了多个记忆元件,例如多个快闪存储器晶粒或多个快闪存储器芯片,各记忆元件可包含多个个存储器区块(Block)。存储器控制器110对存储器装置120进行抹除数据运作以区块为单位来进行。另外,一存储器区块可记录(包含)特定数量的数据页(Page),例如,实体数据页,其中存储器控制器110对存储器装置120进行写入数据的运作以数据页为单位来进行写入。
实作上,存储器控制器110可利用其本身内部的元件来进行诸多控制运作,例如:利用存储器接口114来控制存储器装置120的存取运作(尤其是对至少一存储器区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用主机接口118来与主机装置130沟通。
在一实施例中,存储器控制器110透过主机接口118并使用一标准通讯协定与主机装置130沟通。举例而言,上述的标准通讯协定包含(但不限于):通用序列总线(USB)标准、SD接口标准、超高速一代(Ultra High Speed-I,缩写为UHS-I)接口标准、超高速二代(Ultra High Speed-II,缩写为UHS-II)接口标准、CF接口标准、MMC接口标准、eMMC接口标准、UFS接口标准、高技术组态(Advanced Technology Attachment,缩写为ATA)标准、序列高技术组态(Serial ATA,缩写为SATA)标准、快捷外设互联标准(Peripheral ComponentInterconnect Express,缩写为PCI-E)标准、并列先进附件(Parallel AdvancedTechnology Attachment,缩写为PATA)标准等。
在一实施例中,用以提供数据缓冲的缓冲存储器116以随机存取存储器来实施。例如,缓冲存储器116可以是静态随机存取存储器,但本发明亦不限于此。于其他实施例中,缓冲存储器116可以是动态随机存取存储器。
在一实施例中,数据储存装置100可以是可携式存储器装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡、USB随身碟等装置),且主机装置130为一可与数据储存装置连接的电子装置,例如手机、笔记型电脑、桌上型电脑…等等。而在另一实施例中,数据储存装置100可以是固态硬碟或符合UFS或eMMC规格的嵌入式储存装置,并且可被设置在一电子装置中,例如设置在手机、笔记型电脑、桌上型电脑之中,而此时主机装置130可以是该电子装置的一处理器。
如上所述,为了加强数据储存装置100的错误更正效能,本发明提出一种数据处理方法及对应的存储器控制器,藉由将读取的数据原始内容重新组合后再次执行错误更正操作,以试图成功解码数据。
图2显示根据本发明的一实施例所述的数据处理方法的范例流程图。本发明提出的数据处理方法可由存储器控制器110所执行,并且可包括以下步骤:
步骤S202:响应于一既定数据的一第一解码结果对存储器装置120执行一反复读取操作,以取得存储器装置120中包含既定数据的一数据组块(Chunk)的多个读取结果。于本发明的一实施例中,当第一解码结果为指示错误更正失败的一结果时,可触发反复读取操作。
步骤S204:根据数据组块的多个读取结果执行一数据重建与更正程序,以取得既定数据的一第二解码结果。根据本发明的一实施例,数据重建与更正程序可包括数据重建操作与错误更正操作。于数据重建操作中,存储器控制器110可根据数据组块的多个读取结果决定数据组块中的各位元所对应的一位元值,以产生一重建的数据组块。于错误更正操作中,存储器控制器110可将重建的数据组块提供给错误更正码引擎140,使错误更正码引擎140对重建的数据组块进行解码,以取得既定数据的第二解码结果。
于本发明的实施例中,第二解码结果可能是指示错误更正成功的一结果,也可能是指示错误更正失败的一结果。当第二解码结果指示错误更正成功,代表所述既定数据中的错误位元均可被检测出来,并且可被更正回正确的位元值。即,既定数据的正确内容可被错误更正码引擎140还原。相对地,当第二解码结果指示错误更正失败,代表所述既定数据中的错误位元数量仍超过错误更正码引擎140所能更正的错误位元数上限,因此错误更正码引擎140无法成功地对目前重建的数据组块执行错误更正。
于本发明的实施例中,若第二解码结果指示错误更正成功,存储器控制器110可结束目前的数据处理流程。若第二解码结果指示错误更正失败,存储器控制器110可更执行以下步骤:
步骤S206:根据数据组块的多个读取结果重新执行数据重建与更正程序,以取得既定数据的一第三解码结果。由于步骤S206非必须步骤,因此于图2中以虚线表示。
根据本发明的一实施例,于重新执行数据重建与更正程序时,存储器控制器110可根据一或多个翻转逻辑修改重建的数据组块的至少一位元所对应的位元值,以重新产生重建的数据组块,并将重新产生的重建的数据组块提供给错误更正码引擎140,使错误更正码引擎140对重新产生的重建的数据组块进行解码,以取得既定数据的第三解码结果。
类似地,于本发明的实施例中,若第三解码结果指示错误更正成功,存储器控制器110可结束目前的数据处理流程。若第三解码结果指示错误更正失败,存储器控制器110可再次执行步骤S206,以取得既定数据的第四解码结果,并以此类推。
一般而言,在存储器控制器110响应于接收自主机装置130欲读取一既定数据的一读取指令而执行存储器装置120的读取操作时,存储器控制器110会透过存储器接口114存取存储器装置120用以将既定数据读出,并且由错误更正码引擎140对读出的数据执行解码处理。错误更正码引擎140的解码操作包含了检测既定数据中的错误位元,并且尝试更正错误位元,以修复既定数据被储存于存储器装置120时所发生的错误。若既定数据中的错误位元数量未超过错误更正码引擎140所能更正的错误位元数上限,错误更正码引擎140可成功地修复既定数据中的错误位元,将既定数据的正确内容还原。若既定数据中的错误位元数量超过错误更正码引擎140所能更正的错误位元数上限,意味着出现错误更正码不可更正的错误(ECC Uncorrectable Error),错误更正码引擎140无法判定既定数据的正确内容,因此会将解码结果设定为指示错误更正失败的一结果。
于既有的设计中,当发生错误更正失败时,存储器控制器110便会直接回报主机装置130错误更正失败(ECC Failure),并将读取到的既定数据内容提供给主机装置130。由于存储器控制器110无法检测出既定数据中的哪些位元为错误位元,进而无法修复既定数据中的错误位元,因此存储器控制器110仅能将包含许多未知错误位元的读取结果提供给主机装置130。
为解决上述问题,特别是为了在采用纠错能力相对较弱的错误更正码的产品中加强错误更正效能,本发明提出前述的数据处理方法及对应的存储器控制器,藉由将读取的数据原始内容重新组合后再次执行错误更正操作,以试图成功解码数据。以下段落将做更详细的说明。
图3显示根据本发明的一实施例所述的数据处理流程范例。于本发明的实施例中,应用前述的数据处理方法的数据处理流程可起始于错误更正失败(ECC Failure)的状态,但与既有设计不同的是,此时并不将此错误更正失败回报主机装置130。假设主机装置130发出一读取指令以读取一笔大小为一千位元组(Kilo Byte,缩写为KB)的既定数据,存储器控制器110将响应于接收到的读取指令存取存储器装置120,以尝试读取既定数据。当读出的既定数据发生错误更正失败时(步骤S302),存储器控制器110的微处理器112会手动执行一反复读取操作,对包含既定数据的一数据组块执行多次读取操作(步骤S304)。
于本发明的实施例中,数据组块可包括多个位元,并且数据组块的内容可包含既定数据与既定数据所对应的奇偶(parity)资讯,其中的奇偶资讯为错误更正码引擎140于将既定数据写入存储器装置120时所产生的有助于后续更正错误的资讯。因此,微处理器112于步骤S304所读取的数据组块可包括既定数据的多个数据位元以及奇偶资讯所对应的一或多个位元(奇偶位元,parity bits)。例如,微处理器112于步骤S304中可读取N次既定数据与对应的奇偶资讯,以得到N笔读取结果,其中N为大于1的一正整数。
于本发明的实施例中,所述手动执行读取操作或手动读取操作指微处理器112读取存储器装置120时会略过错误更正码引擎140的错误更正操作,因此,微处理器112所取得的数据为既定数据与奇偶资讯的最原始的读取结果(raw data)。即,未被错误更正码引擎140解码过或者未被错误更正码引擎140更正错误过的读取结果。
一般而言,存储器控制器110于开卡时,会将错误更正码相关的设定值写入存储器装置120的系统数据区块中,其中系统数据区块用以储存存储器控制器110运作时所需的数据。于数据储存装置100的初始化程序中,存储器控制器110可根据系统数据区块的储存内容设定对应的控制模块,例如,由微处理器112藉由执行软件或固件程序码所产生用于控制存储器装置120的一快闪存储器控制模块。举例而言,微处理器112可根据系统数据区块的储存内容为快闪存储器控制模块设定奇偶位元(parity bits)的长度。
假设于先前将1KB(一千位元组)大小的既定数据写入存储器装置120的写入操作中,错误更正码引擎140产生了额外的120B(120位元组)的奇偶资讯(或称奇偶位元),此120B的奇偶资讯会随同1KB的既定数据一并被写入存储器装置120中。
于执行非手动读取操作(即,一般的读取操作)时,例如,前述存储器控制器110响应于主机装置130的读取指令而读取既定数据的读取操作,微处理器112会透过快闪存储器控制模块对存储器装置120发出读取指令,于读取指令中指定读取操作的起始地址,并设定读取长度为(1KB+120B),以一并读取既定数据与其所对应的奇偶资讯。响应于此读取指令,存储器装置120会将读取的数据回传给错误更正码引擎140。读取的数据会暂存于错误更正码引擎140内部的数据缓冲器中,并且由错误更正码引擎140对数据执行解码操作。于解码完成后,无论解码结果为错误更正成功或错误更正失败,错误更正码引擎140会舍弃120B的奇偶资讯,而仅将1KB大小的既定数据(于存在错误位元且可更正的情况下,会是更正后的既定数据)传给存储器控制器110的缓冲存储器116,再由存储器控制器110回传给主机装置130。
而于执行手动读取操作时,微处理器112同样会透过快闪存储器控制模块对存储器装置120发出读取指令,于读取指令中指定读取操作的起始地址,并设定读取长度为(1KB+120B),以一并读取既定数据与其所对应的奇偶资讯,但此时微处理器112将使错误更正码引擎140的解码功能不作用,或者将的设定为禁用(disable)。响应于此读取指令,存储器装置120会将读取的数据回传给错误更正码引擎140,而暂存于错误更正码引擎140内部的数据缓冲器中的(1KB+120B)读取数据会直接被传送至存储器控制器110的缓冲存储器116。因此,相较于执行一般的读取操作时,错误更正码引擎140仅会将要被读取的既定数据传送给缓冲存储器116,于执行手动读取操作时,错误更正码引擎140会将要被读取的既定数据与其所对应的奇偶资讯一并传送给缓冲存储器116。
根据本发明的一实施例,错误更正码引擎140于执行反复读取操作的期间可被禁用。例如,错误更正码引擎140可预设地被致能(enabled),而微处理器112可于需执行反复读取操作的期间(即,需执行多次前述手动读取操作的期间)藉由设定对应的暂存器使错误更正码引擎140暂时被禁用。根据本发明的另一实施例,微处理器112也可藉由其他设定方式使错误更正码引擎140于需执行反复读取操作的期间暂时被禁用,或者使错误更正码引擎140的解码功能于需执行反复读取操作的期间暂时不作用。
根据本发明的一实施例,于步骤S304中,微处理器112会对包含既定数据与其所对应的奇偶资讯的数据组块手动执行N次反复读取操作,使得数据组块的每个位元都会有对应的N个读取结果,并将各位元的N个读取结果储存于缓冲存储器116中。
根据本发明的一实施例,于取得各位元的N个读取结果后,微处理器112可利用读取结果执行数据重建操作(步骤S306),以重建既定数据与其所对应的奇偶资讯的内容。步骤S306中,微处理器112可进一步分析各位元的读取结果内容,例如,为数据组块的各位元累计于N次读取中共有几次其位元值被判定为1,以及共有几次其位元值被判定为0,以得到对应的统计结果。
图4显示根据本发明的一实施例所述的手动读取的各位元的位元值统计表格范例。于统计表格400中,各位元以不同的位元索引值做区隔,例如,表格中所示的位元索引值0~9151,其中的第0~8191个位元为既定数据的内容(于此范例中,既定数据大小为8KB),第8192~9151个位元为此既定数据所对应的奇偶位元。
根据本发明的一实施例,于数据重建操作中,微处理器112可根据各位元所对应的N个读取结果选择一多数值(Majority)作为该位元所对应的位元值。以统计表格400为例,由于第0、1、3个位元的10次读取结果中位元值0的读取结果为多数,微处理器112可于重建时将第0、1、3个位元的位元值设定为0。同理,由于第2个位元的10次读取结果中位元值1的读取结果为多数,微处理器112可重建时将第2个位元的位元值设定为1。其余的位元可以此类推。微处理器112可依循此规则决定出数据组块中的各位元所对应的一位元值,以产生一重建的数据组块。需注意的是,本发明并不限于以选择多数值的方式进行数据重建。举例而言,于本发明的其他实施例中,亦可将N次读取结果的少数值(minority)设定为部份位元所对应的位元值。
接着,微处理器112可将一重建的数据组块提供给错误更正码引擎140,并且由错误更正码引擎140对重建的数据组块执行错误更正的解码操作(步骤S308)。于本发明的一实施例中,错误更正码引擎140于非执行反复读取操作的期间便可被恢复为致能状态,或者由微处理器112使错误更正码引擎140的解码功能恢复作用。
微处理器112可判断步骤S308的解码结果是否仍为错误更正失败(步骤S310)。若否,代表错误更正成功,微处理器112可将由错误更正码引擎140恢复的数据写回存储器装置120中(步骤S312),以保存既定数据的正确内容。根据本发明的一实施例,微处理器112可藉由数据更新的操作将恢复的数据写回存储器装置120中。例如,微处理器112可将由错误更正码引擎140恢复的数据视为既定数据所对应的逻辑地址的更新数据,并将的存于存储器装置120中。于下次主机装置130欲存取此逻辑地址的数据内容时,便可读取到正确的内容。
如上所述,于解码完成后,错误更正码引擎140会将既定数据(于存在错误位元且可更正的情况下,会是更正后的既定数据或者前述恢复的数据)传给存储器控制器110的缓冲存储器116。因此,微处理器112可将缓冲存储器116内的数据写回存储器装置120中。
若步骤S308的解码结果仍为错误更正失败,微处理器112可进一步判断是否还有其他替代的数据重建操作可选择(步骤S314)。于本发明的实施例中,步骤S204或第一次进入步骤S306中执行的数据重建操作可以是预设的数据重建操作,而本发明所提出的数据处理方法可另设计一或多个替代的数据重建操作,以提供于需要重新执行数据重建与更正程序时(例如,如图3所示,于步骤S310判断为“是”时)使用。
若微处理器112判断无其他替代的数据重建操作可选择,便将错误更正失败与数据恢复失败回报主机装置130(步骤S316)(于图中标示数据恢复失败用以与步骤S302区隔),并将读取到的既定数据内容提供给主机装置130。若微处理器112判断还有其他替代的数据重建操作可选择,则处理流程可返回步骤S306(或者,于一些实施例中,可返回步骤S304)。
于本发明的实施例中,由于在重新执行数据重建与更正程序时仅数据重建操作的相关部分具有差异,错误更正操作的部分相同,因此以下将针对数据重建操作的相关部分做说明。
根据本发明的一实施例,于重新执行数据重建与更正程序时,微处理器112可基于先前取得的数据组块的读取结果与先前重建的数据组块根据一或多个翻转逻辑修改数据组块中的至少一位元所对应的位元值,以重新产生重建的数据组块。所述的翻转逻辑为用于挑选出位元值可被翻转(例如,将原先设定的位元值0翻转为1,或者将原先设定的位元值1翻转为0)的位元的逻辑条件。
根据本发明的一实施例,翻转逻辑可以是读取到的位元值被判定0与读取到的位元值被判定1的机率相近,或者读取到的位元值被判定0与读取到的位元值被判定1的次数差少于一临界值的逻辑条件。
举例而言,微处理器112可挑选出于N次读取中,位元值被判定为1与位元值被判定为0的次数差(即,统计表格400中计数值差值)小于一临界值的一或多个位元,并且修改其中的至少一位元所对应的位元值,以重新产生重建的数据组块。
以统计表格400为例,假设于第一次重新执行数据重建与更正程序时,临界值被设定为3,微处理器112可至少挑选出第3个位元其位元值可被翻转(因为第3个位元的计数值差值(6-4=2)小于3)。由于在先前执行数据重建与更正程序时,第3个位元的位元值被设定为0,因此于于第一次重新执行数据重建与更正程序时,微处理器112可将第3个位元的位元值修改为1。微处理器112可依循此逻辑挑选出位元值可被翻转位元,并修改其位元值,以重新产生重建的数据组块。
根据本发明的另一实施例,翻转逻辑也可以是根据存储器装置120的属性被设定。例如,翻转逻辑可以是关于各位元是否被储存于存储器装置120中易发生错误的储存位置的逻辑条件。微处理器112可挑选出被储存于存储器装置120中易发生错误的储存位置的一或多个位元,并且修改其中的至少一位元所对应的位元值,以重新产生重建的数据组块。
根据本发明的另一实施例,替代的数据重建操作也可以被设计为重新读取数据组块,并且重建数据组块。例如,微处理器112可沿用之前设定的读取电压返回步骤S304再次对既定数据手动执行前述反复读取操作,再根据新取得的读取结果于步骤S306执行数据重建操作,藉此也有机会达到修改数据组块中的至少一位元所对应的位元值的结果。
根据本发明的又另一实施例,替代的数据重建操作也可以被设计为调整读取电压后重新读取数据组块,并且重建数据组块。例如,微处理器112可透过对应的固件分析目前存储器装置120被编程的电压,以取得被编程的电压分布图,并且根据此电压分布图决定出一较佳的读取电压。接着,可利用新决定的读取电压返回步骤S304再次对既定数据手动执行前述反复读取操作,再根据新取得的读取结果于步骤S306执行数据重建操作,藉此也有机会达到修改数据组块中的至少一位元所对应的位元值的结果。
于本发明的实施例中,藉由反复读取数据与对应的奇偶资讯的操作取得多笔读取结果,并由其中萃取出正确机率较高的读取结果重建数据,如此可有助于提高错误更正码引擎140的数据修复成功机率。假设错误更正码引擎140所能更正的错误位元数上限为60位元,而于某次读取中,包含既定数据的数据组块中发生错误的位元数量为70位元,因而导致错误更正失败。于此情况下,藉由应用本发明所提出的数据处理方法,若于数据重建或额外的位元值翻转的操作中,将其中的10位元所对应的位元值重建为(或翻转为)正确的数值,则既定数据的解码结果便可不再是错误更正失败。因此,藉由应用本发明所提出的数据处理方法,可大幅增加将具有错误的数据修正回来的机率,进而有效改善存储器装置的错误更正效能。特别是,对于配置有纠错能力相对较弱的错误更正码引擎的存储器装置,不仅存储器装置的错误更正效能可大幅改善,并且存储器装置的成本也可因而降低。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (14)
1.一种存储器控制器,耦接一存储器装置,用以控制该存储器装置的存取操作,包括:
一错误更正码引擎,用以编码需被写入该存储器装置的数据,以及解码读取自该存储器装置的数据;
一缓冲存储器,用以提供数据缓冲;以及
一微处理器,响应于一既定数据的一第一解码结果对该存储器装置执行一反复读取操作,以取得该存储器装置中包含该既定数据的一数据组块的多个读取结果,其中该数据组块包括多个位元,并且该等读取结果被储存于该缓冲存储器,
该微处理器更根据该数据组块的该等读取结果执行一数据重建与更正程序,其中该数据重建与更正程序包括一数据重建操作与一错误更正操作,于该数据重建操作中,该微处理器根据该数据组块的该等读取结果决定该数据组块的该等位元所对应的一位元值,以产生一重建的数据组块,以及于该错误更正操作中,该微处理器将该重建的数据组块提供给该错误更正码引擎,以取得该既定数据的一第二解码结果。
2.如权利要求1所述的存储器控制器,其特征在于,该既定数据的该第一解码结果为指示错误更正失败的一结果。
3.如权利要求1所述的存储器控制器,其特征在于,该数据组块的内容包含该既定数据与该既定数据所对应的奇偶资讯。
4.如权利要求1所述的存储器控制器,其特征在于,该数据组块的该等读取结果为未被该错误更正码引擎解码过的读取结果。
5.如权利要求1所述的存储器控制器,其特征在于,该错误更正码引擎于执行该反复读取操作的期间被禁用。
6.如权利要求1所述的存储器控制器,其特征在于,于该数据重建操作中,该微处理器根据各位元所对应的该等读取结果选择一多数值作为该位元所对应的该位元值。
7.如权利要求1所述的存储器控制器,其特征在于,当该既定数据的该第二解码结果为指示错误更正失败的一结果时,该微处理器重新执行该数据重建与更正程序,其中于该微处理器重新执行该数据重建与更正程序时,该微处理器根据该数据组块的该等读取结果修改该重建的数据组块的至少一位元所对应的该位元值,以重新产生该重建的数据组块,并且将该重新产生的重建的数据组块提供给该错误更正码引擎,以取得该既定数据的一第三解码结果。
8.一种数据处理方法,由耦接一存储器装置的一存储器控制器所执行,包括:
响应于一既定数据的一第一解码结果对该存储器装置执行一反复读取操作,以取得该存储器装置中包含该既定数据的一数据组块的多个读取结果,其中该数据组块包括多个位元,并且该等读取结果被储存于该存储器控制器的一缓冲存储器中;以及
根据该数据组块的该等读取结果执行一数据重建与更正程序,以取得该既定数据的一第二解码结果,
其中根据该数据组块的该等读取结果执行该数据重建与更正程序的步骤还包括:
根据该数据组块的该等读取结果决定该数据组块的该等位元所对应的一位元值,以产生一重建的数据组块;以及
将该重建的数据组块提供给该存储器控制器的一错误更正码引擎,以取得该既定数据的该第二解码结果。
9.如权利要求8所述的数据处理方法,其特征在于,该既定数据的该第一解码结果为指示错误更正失败的一结果。
10.如权利要求8所述的数据处理方法,其特征在于,该数据组块的内容包含该既定数据与该既定数据所对应的奇偶资讯。
11.如权利要求8所述的数据处理方法,其特征在于,该数据组块的该等读取结果为未被该错误更正码引擎解码过的读取结果。
12.如权利要求8所述的数据处理方法,其特征在于,还包括:
于执行该反复读取操作的期间使该错误更正码引擎被禁用。
13.如权利要求8所述的数据处理方法,其特征在于,根据该数据组块的该等读取结果决定该数据组块的该等位元所对应的该位元值的步骤还包括:
根据各位元所对应的该等读取结果选择一多数值作为该位元所对应的该位元值。
14.如权利要求8所述的数据处理方法,其特征在于,当该既定数据的该第二解码结果为指示错误更正失败的一结果时,该数据处理方法还包括:
重新执行该数据重建与更正程序,以取得该既定数据的一第三解码结果,
其中重新执行该数据重建与更正程序的步骤还包括:
根据该数据组块的该等读取结果修改该重建的数据组块的至少一位元所对应的该位元值,以重新产生该重建的数据组块;以及
将该重新产生的重建的数据组块提供给该错误更正码引擎,以取得该既定数据的该第三解码结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110146502 | 2021-12-13 | ||
TW110146502A TWI764856B (zh) | 2021-12-13 | 2021-12-13 | 記憶體控制器與資料處理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116263724A true CN116263724A (zh) | 2023-06-16 |
Family
ID=82594463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210301297.XA Pending CN116263724A (zh) | 2021-12-13 | 2022-03-24 | 存储器控制器与数据处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230185667A1 (zh) |
CN (1) | CN116263724A (zh) |
TW (1) | TWI764856B (zh) |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4942579A (en) * | 1987-06-02 | 1990-07-17 | Cab-Tek, Inc. | High-speed, high-capacity, fault-tolerant error-correcting storage system |
US5623595A (en) * | 1994-09-26 | 1997-04-22 | Oracle Corporation | Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system |
US5592612A (en) * | 1995-04-28 | 1997-01-07 | Birk; Yitzhak | Method and apparatus for supplying data streams |
US6041423A (en) * | 1996-11-08 | 2000-03-21 | Oracle Corporation | Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment |
US7900125B1 (en) * | 2004-05-24 | 2011-03-01 | Seagate Technology Llc | Majority detection in error recovery |
US8200887B2 (en) * | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
WO2007089369A2 (en) * | 2005-12-27 | 2007-08-09 | Sandisk Corporation | Method of storing downloadable firmware on bulk media |
US8793552B2 (en) * | 2012-11-14 | 2014-07-29 | International Business Machines Corporation | Reconstructive error recovery procedure (ERP) for multiple data sets using reserved buffer |
US9053748B2 (en) * | 2012-11-14 | 2015-06-09 | International Business Machines Corporation | Reconstructive error recovery procedure (ERP) using reserved buffer |
US10468118B2 (en) * | 2014-03-03 | 2019-11-05 | Hewlett Packard Enterprise Development Lp | DRAM row sparing |
US10735137B2 (en) * | 2016-03-15 | 2020-08-04 | ClineHair Commercial Endeavors | Distributed storage system data management and security |
US20160012916A1 (en) * | 2014-07-10 | 2016-01-14 | Kabushiki Kaisha Toshiba | Semiconductor memory device and memory system |
US9417955B2 (en) * | 2014-08-21 | 2016-08-16 | Datrium, Inc. | Data reconstruction in distributed data storage system with key-based addressing |
US10248487B1 (en) * | 2015-01-27 | 2019-04-02 | Violin Systems Llc | Error recovery for multi-stage simultaneously running tasks |
US9841908B1 (en) * | 2016-06-30 | 2017-12-12 | Western Digital Technologies, Inc. | Declustered array of storage devices with chunk groups and support for multiple erasure schemes |
US9905289B1 (en) * | 2017-04-28 | 2018-02-27 | EMC IP Holding Company LLC | Method and system for systematic read retry flow in solid state memory |
WO2018226228A1 (en) * | 2017-06-08 | 2018-12-13 | Hitachi Data Systems Corporation | Deduplicating distributed erasure coded objects |
FR3072494B1 (fr) * | 2017-10-18 | 2020-06-19 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Dispositif et procede de controle des cycles de rafraichissement de donnees dans des memoires non-volatiles reprogrammables |
KR102479483B1 (ko) * | 2017-10-19 | 2022-12-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US11182247B2 (en) * | 2019-01-29 | 2021-11-23 | Cloud Storage, Inc. | Encoding and storage node repairing method for minimum storage regenerating codes for distributed storage systems |
US11662955B2 (en) * | 2021-09-27 | 2023-05-30 | GRAID Technology Inc. | Direct memory access data path for RAID storage |
-
2021
- 2021-12-13 TW TW110146502A patent/TWI764856B/zh active
-
2022
- 2022-03-24 CN CN202210301297.XA patent/CN116263724A/zh active Pending
- 2022-12-01 US US18/072,725 patent/US20230185667A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI764856B (zh) | 2022-05-11 |
TW202324433A (zh) | 2023-06-16 |
US20230185667A1 (en) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
US8560926B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US8650463B2 (en) | Solid state drive and method of controlling an error thereof | |
KR102081588B1 (ko) | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 | |
US20170177259A1 (en) | Techniques to Use Open Bit Line Information for a Memory System | |
TWI662410B (zh) | 資料儲存裝置與記憶體裝置之資料處理方法 | |
KR102571747B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TW201916018A (zh) | 資料儲存裝置與將資料寫入記憶體裝置之方法 | |
WO2014164134A2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
CN110858128A (zh) | 数据存储装置及其共享控制器中存储器的方法 | |
US20190138391A1 (en) | Data encoding method, data decoding method and storage controller | |
US11907059B2 (en) | Abnormal power loss recovery method, memory control circuit unit, and memory storage device | |
CN113722144B (zh) | 数据储存装置与数据处理方法 | |
CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
US9430327B2 (en) | Data access method, memory control circuit unit and memory storage apparatus | |
US20160054921A1 (en) | Memory management method, memory storage device and memory controlling circuit unit | |
US10756764B2 (en) | Memory system and control method | |
US10942803B2 (en) | Method for performing data processing for error handling in memory device, associated memory device and controller thereof, and associated electronic device | |
US11995224B2 (en) | Data storage device and data processing method | |
TWI764856B (zh) | 記憶體控制器與資料處理方法 | |
CN114911414A (zh) | 使用错误校正方案的组合的数据恢复 | |
KR20220049856A (ko) | 메모리 시스템 및 컨트롤러 | |
CN112306382A (zh) | 快闪存储器控制器、储存装置及其读取方法 | |
CN113220502B (zh) | 存储器管理方法、存储器存储装置及存储器控制器 | |
US11055231B2 (en) | Data storage devices and data processing methods of skipping editing of fields in H2F table when consecutive addresses are present in F2H table |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |