CN111104044B - 数据储存装置及其适应性数据读取方法 - Google Patents

数据储存装置及其适应性数据读取方法 Download PDF

Info

Publication number
CN111104044B
CN111104044B CN201811250388.5A CN201811250388A CN111104044B CN 111104044 B CN111104044 B CN 111104044B CN 201811250388 A CN201811250388 A CN 201811250388A CN 111104044 B CN111104044 B CN 111104044B
Authority
CN
China
Prior art keywords
read
threshold voltage
preset
reading
setting
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
CN201811250388.5A
Other languages
English (en)
Other versions
CN111104044A (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.)
Shannon Systems Ltd
Original Assignee
Shannon Systems Ltd
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 Shannon Systems Ltd filed Critical Shannon Systems Ltd
Priority to CN201811250388.5A priority Critical patent/CN111104044B/zh
Priority to US16/441,051 priority patent/US10963335B2/en
Publication of CN111104044A publication Critical patent/CN111104044A/zh
Application granted granted Critical
Publication of CN111104044B publication Critical patent/CN111104044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • G06F11/1052Bypassing or disabling error detection or correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明提供一种数据储存装置,包括:一闪存,具有多个区块用以储存数据,其中各区块包括多个页面;以及一控制器,用以接收来自一主控端的一主控读取指令,并将该主控读取指令转换为对该闪存的一读取操作指令以进行一预设读取操作由该等页面读取一页面数据,其中该预设读取操作具有一预设读取阈值电压的设定,其中当该预设读取操作失败时,该控制器依序将一读取重试表中的多个项目的每一者相应的一读取阈值电压的设定对该闪存进行一读取操作,并将成功进行该读取操作的该读取阈值电压的设定取代该预设读取阈值电压的设定。

Description

数据储存装置及其适应性数据读取方法
技术领域
本发明有关于一种数据储存装置,特别是有关于一种数据储存装置及其适应性数据读取方法。
背景技术
闪存装置通常分为NOR快闪装置与NAND快闪装置。NOR快闪装置为随机存取装置,而可于地址脚位上提供任何的地址,用以存取NOR快闪装置的主装置(host),并及时地由NOR快闪装置的数据脚位上获得储存于该地址上的数据。相反地,NAND快闪装置并非随机存取,而是序列存取。NAND快闪装置无法像NOR快闪装置一样,可以存取任何随机地址,主装置反而需要写入序列的字节(bytes)的值到NAND快闪装置中,用以定义请求命令(command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(在闪存中的一个写入作业的最小数据块)或一个区块(在闪存中的一个抹除作业的最小数据块)。实际上,NAND快闪装置通常从存储器单元(memory cells)上读取或写入完整的数页数据。当一整页的数据从阵列读取到装置中的缓存器(buffer)后,藉由使用提取信号(strobesignal)顺序地敲出(clock out)内容,让主单元可逐字节或字符组(words)存取数据。
NAND闪存的体积越来越小,而数据保留、数据干扰等因素会造成NAND闪存越来越难正确读取数据因此,本发明提出一种数据储存装置及其适应性数据读取方法,用以提升读取数据的效率。
发明内容
本发明提供一种数据储存装置,包括:一闪存,具有多个区块用以储存数据,其中各区块包括多个页面;以及一控制器,用以接收来自一主控端的一主控读取指令,并将该主控读取指令转换为对该闪存的一读取操作指令以进行一预设读取操作由该等页面读取一页面数据,其中该预设读取操作具有一预设读取阈值电压的设定,其中当该预设读取操作失败时,该控制器依序将一读取重试表中的多个项目的每一者相应的一读取阈值电压的设定对该闪存进行一读取操作,并将成功进行该读取操作的该读取阈值电压的设定取代该预设读取阈值电压的设定。
在本发明一实施例中,该该控制器包括一错误校正电路用以对该预设读取操作或该读取操作所读取的该页面数据进行错误校正,其中当该错误校正电路判断可对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生正确页面数据时,该控制器判断该预设读取操作或该读取操作成功,其中当该错误校正电路判断无法对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生该正确页面数据时,该控制器判断该预设读取操作或该读取操作失败。其中该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定分别具有相应的一初始排名,其中该预设读取阈值电压的设定具有最高的该初始排名,且该控制器在一检查点计算该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定的一更新排名,并将具有最高的该更新排名的该读取阈值电压的设定或该预设读取阈值电压的设定取代为该预设读取阈值电压的设定,并将其他的该读取阈值电压的设定依照该更新排名依序更新至该读取重试表中的各项目。
在上述实施例中的检查点为每一固定时间周期或该闪存达到一预定读取次数。该更新排名依据各个该读取阈值电压的设定及该预设阈值电压的设定在该检查点时所分别相应的一成功读取次数或一读取成功率所决定。
在上述实施例中,当该数据储存装置处于一特定情境时,该控制器将相应于该特定情境的另一读取重试表取代原本的该读取重试表。该特定情境为该数据储存装置操作高于一预定温度持续一预定时间,或是该闪存中的闪存单元的平均抹除次数大于一预定抹除次数。
在上述实施例中,当该错误校正电路使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作均失败时,该控制器对使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作所取得到该页面数据进行一软式解码错误校正以产生校正后的正确页面数据,并将该正确页面数据回报至该主控端。
本发明更提供一种适应性数据读取方法,用于一数据储存装置,该数据储存装置包括一闪存,该方法包括:接收来自一主控端的一主控读取指令,并将该主控读取指令转换为对该闪存的一读取操作指令以进行一预设读取操作由该等页面读取一页面数据,其中该预设读取操作具有一预设读取阈值电压的设定;以及当该预设读取操作失败时,依序将一读取重试表中的多个项目的每一者相应的一读取阈值电压的设定对该闪存进行一读取操作,并将成功进行该读取操作的该读取阈值电压的设定取代该预设读取阈值电压的设定。
附图说明
图1是显示本发明的一实施例中的电子系统的方块图。
图2是显示依据本发明另一实施例中的电子系统的方块图。
图3是显示依据本发明一实施例中的读取页面数据的流程的示意图。
图4A是显示依据本发明一实施例中的缓存器及读取重试表的示意图。
图4B是显示依据本发明图4A的实施例中的更新后的缓存器及读取重试表的示意图。
图5是显示依据本发明一实施例中的适应性数据读取方法的流程图。
图6A-6B是显示依据本发明另一实施例中的适应性数据读取方法的流程图。
附图标记
100、200~电子系统;
120、220~主控端;
140、240~数据储存装置;
141、241~读取重试表;
160、260~控制器;
162、262~运算单元;
165、265~读取缓存器;
166、266~动态随机存取存储器;
168、268~错误校正电路;
150、170、250、270~存取接口;
180、280~闪存;
181、281~快闪转译层;
182、282~缓存器;
310、331-33N、340~方块;
330、3301、3302~范围;
410、420~箭头;
S510-S534、S610-S634、S640-S650~步骤。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1显示依据本发明一实施例中的电子系统的方块图。电子系统100例如可为一个人计算机(personal computer)、一数据服务器(data server)、一网络附加储存装置(network-attached storage,NAS),一可携式电子装置(portable electronic device)等等,但本发明并不限于此。可携式电子装置例如可为一笔记本电脑、手持移动电话、智能型手机、平板计算机、个人数字助理(personal digital assistant,PDA)、数字相机(digitalcamera)、数字摄影机(digital video camera)、可携式多媒体播放器(portablemultimedia player)、个人导航装置(personal navigation device)、手持游戏主机(handheld game console)、电子书(e-book)等等,但本发明并不限于此。
电子装置100包括一主控端(host)120以及一数据储存装置140。数据储存装置140包括一闪存180以及一控制器160。控制器160包括一运算单元162、、一读取缓存器(readbuffer)165、一动态随机存取存储器(dynamic random access memory,DRAM)166、及一错误校正电路168。运算单元162可使用多种方式实施,例如专用硬件电路或通用硬件实现(例如,单处理器、具平行处理能力的多处理器或其他具运算能力的处理器)、上述实现方式例如可为一通用处理器(general-purpose processor)、或一微控制器(microcontroller),但本发明并不限于此。控制器160中的运算单元162可根据主控端120所下达的命令操作,例如透过存取接口170写入数据到闪存180中的指定地址、或是由闪存180中的指定地址读取页面数据。
运算单元162与闪存180间的数据与命令传递透过数个电子信号进行协调,上述电子信号包括数据线(data line)、时钟信号(clock signal)与控制信号(control signal)。数据线可用以传递命令、地址、读出及写入的数据;控制信号线可用以传递芯片使能(chipenable,CE)、地址提取使能(address latch enable,ALE)、命令提取使能(command latchenable,CLE)、写入使能(write enable,WE)等控制信号。存取接口170可采用双倍数据率(double data rate,DDR)通讯协议与闪存180沟通,例如,开放NAND快闪(open NAND flashinterface,ONFI)、双倍数据率开关(DDR toggle)或其他接口。运算单元162另可使用存取接口150透过指定通讯协议与主控端120进行沟通,例如,通用串行总线(universal serialbus,USB)、先进技术附着(advanced technology attachment,ATA)、序列先进技术附着(serial advanced technology attachment,SATA)、快速周边元件互联(peripheralcomponent interconnect express,PCI-E)、非易失性存储器的传输规范(Non-VolatileMemory Express,NVMe)或其他接口。
由程序代码及数据所组成固件(firmware)由运算单元162执行,控制器160基于该固件控制该闪存180。动态随机存取存储器(DRAM)166为非必要,使用动态随机存取存储器166以暂存程序代码与参数,如此一来可改善系统的效能。
闪存180例如为一NAND闪存,其包括多个区块(Blocks),其中各区块包括多个页面(Pages)用以储存数据。闪存180更包括多条字元线与多条位元线,其中每一字元线用以控制至少一页面,以选择所欲读取的页面。举例而言,当闪存180为单阶储存单元(Single-Level Cell,SLC)时,一条位元线用以控制一个页面。当闪存180为多阶储存单元(Multi-Level Cell,MLC)时,一条位元线用以控制两个页面。当闪存180为三阶储存单元(Triple-Level Cell,TLC)时,一条位元线用以控制三个页面,但本发明不限于此。
在另一实施例中,快闪转译层181的功能在数据储存装置140实现。举例来说,与快闪转译层181相关的逻辑至物理映射表(亦可称为H2F表或L2P表)例如可储存于数据储存装置140中的闪存180,且运算单元162可由闪存180读取其储存的全部或部分的逻辑至对象映射表至动态随机存取存储器166。
当控制器160以一读取阈值电压读取闪存180的页面数据后,所读取的页面数据传送至错误校正电路168,错误校正电路168用以对页面数据进行错误校正(errorcorrection),上述错误校正例如可称为硬式数据解码(hard data decoding)。在一些实施例中,错误校正电路168包括一低密度奇偶检查码(low-density parity-check code,LDPC)错误校正引擎(图1未绘示)、及/或一BCH码校正引擎(图1未绘示),但本发明并不限于此。
举例来说,闪存180的各个页面所储存的页面数据中均包括错误校正码(errorcorrection code,ECC),例如可包括LDPC错误校正码及/或BCH错误校正码。错误校正电路168可依据上述读取的数据中的错误校正码对读取的数据进行错误校正。一般而言,错误校正电路168具有一预定的错误校正能力,例如可校正N位的数据。若读取的页面数据中的错误位的数量小于或等于N,则错误校正电路168可利用所读取的页面数据中的错误校正码对页面数据进行错误校正,再将校正后的页面数据输出至主控端120。
若读取的页面数据中的错误位的数量大于N,则错误校正电路168并无法利用页面数据的错误校正码对页面数据进行错误校正,此时错误校正电路168通知控制器160错误校正失败,此时,控制器160将启动错误处理程序,例如:执行读取重试程序,以取得可校正的页面数据。
读取重试程序可依据读取重试表(read-retry table)141而进行读取操作。读取重试表141包括多个项目(entry),且各项目记录了执行读取操作所需的读取阈值电压Vth的设定。在一实施例中,读取重试表141例如可整合于数据储存装置140的快闪转译层181中,在另一实施例中,读取重试表141例如可存放于闪存180中,当执行读取重试程序,再由读取重试程序自闪存180中取得读取重试表141。在又一实施例中,读取重试表141可视为控制器160中的一查找表(lookup),且可利用硬件电路实现,例如复杂可程序逻辑装置(complex programmable logic device,CPLD)、可程序化阵列逻辑(programmable arraylogic,PAL)、可程序化逻辑阵列(programmable logic array,PLA),但本发明并不限于此。
其中,在读取重试表141中的各项目的地址(编号)表示控制器160在进行读取操作时的优先级。举例来说,若读取重试表141包括N个项目,分别对应于地址#0~#(N-1),则在地址0的项目的读取阈值电压Vth的排名(ranking)或优先度(priority)最高,在地址#(N-1)的项目的读取阈值电压Vth的排名或优先度最低。选择性地,地址#0~#(N-1)的优先度亦可以反向排序,例如在地址#(N-1)的项目的读取阈值电压Vth的排名或优先度最高,在地址#0的项目的读取阈值电压Vth的排名或优先度最低。
在一些实施例中,读取重试表141中的多个项目的地址可划分为多个范围(或是称为子读取重试表),其中各个范围可包括一或多个项目,且各个范围中的项目对应于一或多种应用情境,例如高温情境(例如操作于50℃下持续一个月)、及/或读取干扰(例如同一个闪存单元(flash memory cell)已超过50万次读取)等等,但本发明并不限于此。举例来说,当数据储存装置140处于一特定应用情境下且控制器160判断需要依据读取重试表141以进行读取操作时,控制器160可读取在读取重试表141中相应于该特定应用情境的特定范围中的项目以依序进行读取重试。
在一实施例中,当控制器160判断需执行读取重试程序时,则控制器160会优先使用地址#0的项目的读取阈值电压Vth的设定进行读取操作。当地址0的项目的读取阈值电压Vth无法成功读取闪存180的页面数据时(例如无法以错误校正电路168进行错误校正,即利用硬件电路进行数据错误校正失败),则控制器160会再以地址#1的项目(即下一项目)的读取阈值电压Vth的设定对闪存180进行读取操作,依此类推,其中上述流程例如为一试误循环(trial-and-error loop)。
举例来说,若控制器160在依序使用在读取重试表141中的项目的过程中,有一特定项目的读取阈值电压Vth的设定可成功地让控制器160读取闪存的页面数据时,则读取重试的流程结束,且控制器160可透过存取接口170将校正后的正确页面数据回报至主控端120。若控制器160已尝试过读取重试表141中的N个项目中的所有读取阈值电压Vth的设定均无法成功读取闪存180的页面数据时,则控制器160会利用运算单元162执行软式解码错误校正(soft-decoding error correction)。
举例来说,在控制器160每一次依据读取重试表141中的各项目相应的读取阈值电压的设定对闪存180读取页面数据且错误校正电路168对读取的页面数据进行硬式解码而错误校正失败时,原始页面数据(或是校正后的页面数据)均会被运算单元162记录于一缓存器或是动态随机存取存储器166。若控制器160已尝试过读取重试表141中的N个项目中的所有读取阈值电压Vth的设定均无法成功读取闪存180的数据时,则控制器160会利用运算单元162依据所储存的硬式解码失败的页面数据以执行软式解码错误校正。此时,运算单元162需进行花费时间进行复杂度较高的软式解码错误校正计算,以将错误位数较高的页面数据校正为正确的页面数据,并将校正后的正确页面数据回报至主控端120。
在一实施例中,运算单元162可直接对储存于读取缓存器165中的多笔页面数据进行软式解码,并接着进行错误校正计算。在另一实施例中,可直接对储存于读取缓存器165中的多笔页面数据进行软式解码以产生一待校正页面数据,其中上述待校正页面数据是运算单元162依据储存于读取缓存器165中的多笔页面数据(例如可为原始页面数据或是硬式校正后的校正页面数据(但仍有错误位))中的相关性而计算所产生,且上述待校正页面数据的错误位会小于错误校正电路168的错误校正能力。因此,运算单元162可将上述待校正页面数据输入至错误校正电路168进行错误校正以得到校正后的正确页面数据。
图2显示依据本发明另一实施例中的电子系统的方块图。图1中的电子系统100的一具体实施例可为图2中的电子系统200,且在图2的电子系统200中的各元件相应于图1的电子系统100中的各元件,故其细节于此不再详述。
然而,需注意的是,图1及图2的差异在于图2中快闪转译层281乃置于主控端220而非运算单元162。主控端220例如可将存取指令中指定数据储存装置240的闪存280中相应的物理地址,并透过存取接口250而将存取指令传送至运算单元162,运算单元162再依据存取指令中所指定的物理地址进行相关操作,换句话说,运算单元162无需执行将逻辑地址转换为物理地址的操作。
在一实施例中,电子系统200中的读取重试表241例如可整合于主控端220的快闪转译层281中。在另一实施例中,读取重试表241例如为控制器260中的一查找表(lookuptable),且可利用硬件电路实现,例如复杂可程序逻辑装置(complex programmable logicdevice,CPLD)、可程序化阵列逻辑(programmable array logic,PAL)、可程序化逻辑阵列(programmable logic array,PLA),但本发明并不限于此。
需注意的是,当读取重试表241整合于主控端220的快闪转译层281中时,主控端220可在电子系统200开机时读取在快闪转译层中281中的读取重试表241,并产生读取重试作业的微码,例如将读取重试表241的各项目中的读取阈值电压转换为相应的微码(microcode)。接着,主控端220将上述微码储存于控制器260中的一指令缓存器(图2未绘示)。控制器260即可依据指令缓存器中所储存的微码以进行相应的读取操作。在一些实施例中,当主控端220判断需更新读取重试表241中的各项目的顺序时,主控端220可重新将读取重试表241的各项目中的读取阈值电压转换为相应的微码,再将更新后的微码储存于控制器260中的指令缓存器。
图3显示依据本发明一实施例中的读取页面数据的流程的示意图。请同时参考图1及图3,每当主控端120发送读取指令至控制器160,在方块310,控制器160会进行预设读取动作,例如控制器160以一预设读取阈值电压的设定对闪存180读取其页面数据,当控制器160判断在使用预设读取阈值电压的设定且无法用错误校正电路168校正由闪存180所读出的页面数据时,控制器160即会执行读取重试程序,例如在范围330中各方块的读取操作均属于读取重试程序的试误循环。在一实施例中,控制器160藉由设定闪存180的缓存器182以改变读取阈值电压的设定。在另一实施例中,缓存器182例如可设置于控制器160中。
举例来说,在范围330中的试误循环例如包括范围3301中的硬式解码错误校正及范围3302中的软式解码错误校正。范围3301中的方块331-33N例如是由错误校正电路168进行硬式解码错误校正,例如分别表示读取操作#1至读取操作#N,且分别对应于读取重试表141中的第1个至第N个项目(地址为#0至#N-1)。范围3302中的方块340例如是由运算单元162进行软式解码错误校正。
每当在范围3301中的某个特定方块所执行的读取操作失败时(意即利用在读取重试表中相应的项目的读取阈值电压所读取的页面数据无法由错误校正电路168进行错误校正),控制器160即会进行下一个方块以读取重试表141中下一个项目的读取阈值电压的设定来读取闪存180的页面数据,并由错误校正电路168进行错误校正。若在此特定方块中,可由错误校正电路168成功对所读取的页面进行错误校正,控制器160即会跳出此试误循环,并可将校正后的正确页面数据输出至主控端120。
需注意的是,方块310中的预设读取操作并不属于试误循环。举例来说,闪存180均具有一预设读取阈值电压的设定以执行预设读取操作。当预设读取操作失败时,读取重试程序才会被执行,并以不同的读取阈值电压的设定分别执行方块330的读取操作#1~#N。此外,图2的主控端220例如可启动读取重试程序或是命令控制器260启动读取重试程序,之后,主控端220命令控制器260修改闪存280中的缓存器282的数值,或由控制器260自行修改闪存280中的缓存器282的数值,以改变预设读取阈值电压。
闪存180的预设读取阈值电压的设定并无法适用于某些特别情境,例如闪存180持续操作于超过一预定温度(例如大于50℃)下超过一预定时间,或是闪存180中的闪存单元的读取次数或抹除次数已超过一预定次数。在上述情境下,图1中的控制器160可修改在闪存180中的缓存器182的数值以改变预设读取阈值电压的设定。此外,图2的主控端220例如可透过控制器260修改在闪存280中的缓存器282的数值以改变预设读取阈值电压的设定。如此一来,当控制器160或260进行如方块310中的预设读取操作时,会有较高的成功率,因此,可成功地避免启动读取重试程序,减少数据读取操作的次数,增加数据读取的效率。
图4A显示依据本发明一实施例中的读取重试表的示意图。图4B显示依据本发明图4A的实施例中的更新后的读取重试表的示意图。
请同时参考图1、图3、及图4A-4B。在一实施例中,控制器160以一预定顺序(例如图4A中的箭头410)执行图3中的读取页面数据的流程,例如会以预设读取阈值电压(例如可称为读取阈值电压的设定#0)读取闪存180的页面数据(即方块310的预设读取操作)。当方块310的预设读取操作失败后,启动读取重试程序,此时,控制器160依据在读取重试表141中的各项目所储存的读取阈值电压的设定的排名高低依序进行试误,例如在读取重试表141的第1~N个项目分别具有读取阈值电压的设定#1~#N,如图4A所示。需注意的是,在图4A中读取重试表141的各项目的读取阈值电压的设定的排名是处于初始状态,例如可称为初始排名。
当数据储存装置140运作一段时间之后,数据储存装置140的环境状态(例如温度)改变或是闪存180中的闪存单元的抹除次数/读取次数增加,使得预设读取阈值电压在此状况下无法正确地读取闪存180的页面数据。因此,本发明中的控制器160执行一适应性排序方法以调整读取重试表141的各项目的先后顺序,其中适应性排序方法的细节将详述于后。
举例来说,如图4B所示,在控制器160执行适应性排序方法后,原本在读取重试表141中的第2项目的读取阈值电压的设定#2做为预设读取阈值电压,而读取阈值电压的设定#0则更新至读取重试表141中的第2项目。因此,在更新后,控制器160则会依据图4B中的箭头420的顺序依据预设读取阈值电压(更新后)开始进行预设读取操作,启动读取重试程序之后,再接着依据读取重试表141中的第1个项目至第N个项目所记录的读取阈值电压的设定依序进行读取操作。
需注意的是,读取重试表141的各项目的读取阈值电压的设定的排名可在控制器160判断有需要时即进行调整,例如可在一预定时间周期进行判断是否需更新上述读取阈值电压的设定的排名,或是在数据储存装置140进行前述实施例中所述的特定情境时,控制器160即更新上述读取阈值电压的设定的排名。
在一实施例中,本发明的适应性排序方法例如可依据控制器160实际对闪存180进行读取重试的成功/失败的统计数据,例如读取重试的成功次数及失败次数。
详细而言,控制器160例如可先使用如图4A所示的初始排名(例如为第一顺序)进行预设读取操作及读取操作,并计算在一开始时间(例如时间点t)至一结束时间(例如时间点t+T)的周期(T)中读取重试表141的各个读取阈值电压的设定以读取页面数据并跳出试误循环的成功次数。接着,在结束时间(即时间点t+T),控制器160将各个读取阈值电压的设定在时间点t至时间点t+T的期间T中的成功次数由高而低进行排名以得到第二顺序。控制器160并将第二顺序取代第一顺序,并重置各读取阈值电压的设定相应的计数器。控制器160接着可在时间点t+2T时(即统计时间点t+T至时间点t+2T的期间),再依据使用第二顺序的各读取阈值电压的设定读取页面数据的成功次数,并将上述成功次数由高而低进行排序,例如可得到第三顺序,再将第三顺序取代第二顺序,依此类推。
在一实施例中,若数据储存装置140的环境或操作状态改变不大时,第一顺序可能会等于第二顺序,且第三顺序可能会等于第二顺序。然而,若数据储存装置140的环境或操作状态改变较大时,可能会造成上述各读取阈值电压的设定的顺序更新的频率相当频繁,例如每隔周期T均会改变各读取阈值电压的设定的顺序。若上述实施例中的读取重试表为读取重试表141的一部分,例如一子读取重试表,当经过一预定数量的周期T后,控制器160例如可由读取重试表141中选择适当的另一个子读取重试表以取代原本的子读取重试表。
在另一实施例中,当闪存180中的闪存单元的平均抹除次数例如增加至一预定抹除次数(例如1000次)时,控制器160亦可由读取重试表141中选择适当的另一个子读取重试表以取代原本的子读取重试表。此外,在上述实施例中,当控制器160已将原本的子读取重试表以新的子读取重试表取代后,控制器160即可继续利用上述的适应性排序方法以计算缓存器182及新的子读取重试表中的各项目的各读取阈值电压的设定在一周期内的成功读取次数,并据以更新在缓存器182及新的子读取重试表中的各项目的各读取阈值电压的设定的顺序。
需注意的是,本发明并不限于使用上述实施例中的适应性排序方法以调整在缓存器182及读取重试表141的各项目的读取阈值电压的顺序。
图5显示依据本发明一实施例中的适应性数据读取方法的流程图。请同时参考图1及图5。
在步骤S510,控制器160依据预设读取阈值电压对闪存180进行读取操作。其中,控制器160例如可由主控端120接收一主控读取指令后,将主控读取指令转成对闪存180的读取操作指令,执行读取操作指令时,依据读取阈值电压的设定#0所对应的读取阈值电压而对闪存180进行读取操作。
在步骤S512,控制器160由闪存180接收页面数据。其中上述页面数据例如是未校正过的原始页面数据,控制器160可将页面数据暂存至读取缓存器165或直接将页面数据输出至错误校正电路168。
在步骤S514,控制器160的错误校正电路168判断是否可对该页面数据成功进行错误校正。若是,则错误校正电路168对页面数据进行错误校正并产生校正后的正确页面数据,之后,控制器160输出正确页面数据至主控端120(步骤S516),并结束此流程。若否,则启动读取重试程序,执行步骤S518。
在步骤S518,由读取重试表141中取得读取阈值电压的设定。举例来说,每当执行步骤S518,控制器160均会由读取重试表141中选择下一个项目中的读取阈值电压的设定,例如:读取阈值电压的设定#2。读取阈值电压的设定对应至读取阈值电压,控制器160可依据读取阈值电压的设定而控制或产生操作闪存180所需的读取阈值电压。
在步骤S520,控制器160依据读取阈值电压的设定而对闪存180进行读取操作。举例来说,控制器160执行读取操作指令时,依据读取阈值电压的设定#2所对应的读取阈值电压而对闪存180进行读取操作,以取得闪存180中特定物理地址所储存的页面数据,其中,特定物理地址由读取操作指令所指定。
在步骤S522,控制器160由闪存180接收页面数据。其中上述页面数据例如是未校正过的原始页面数据,且储存于控制器160中的读取缓存器165。
在步骤S524,错误校正电路168判断是否可对该页面数据成功进行错误校正。若是,则控制器160输出校正后的正确页面数据至主控端120(步骤S526)。若否,则执行步骤S530。
在步骤S528,控制器160以读取阈值电压的设定作为预设读取操作的读取阈值电压的设定。举例来说,控制器160例如可将由读取重试表141所取得可成功读取页面数据的读取阈值电压的设定#2作为预设读取操作的读取阈值电压的设定。意即,当控制器160欲读取闪存180的另一页面数据时,控制器160会以读取阈值电压的设定#2作为预设读取操作的读取阈值电压的设定,而不再以阈值电压的设定#0作为预设读取操作的读取阈值电压的设定。其中,控制器160例如可将读取阈值电压的设定#2替代读取阈值电压的设定#0;或者,将读取阈值电压的设定#0与读取阈值电压的设定#2所在的项目对调;或者,直接将读取阈值电压的设定#2替代读取阈值电压的设定#0,删除读取重试表141中删除读取阈值电压的设定#2所在的项目,且该项目之后的项目可依序往前递补。
在步骤S530,控制器160判断在读取重试表141中的所有项目的读取阈值电压Vth的设定均已使用过。若是,则表示已无法利用错误校正电路168对来自闪存180的页面数据成功进行硬式解码错误校正,故会执行步骤S532,由运算单元162进行软式解码错误校正以产生校正后的正确页面数据。
在步骤S534,输出校正后的正确页面数据至主控端120。举例来说,一旦要使用运算单元162进行软式解码错误校正时,则表示运算单元162会将所记录在依据读取重试表141中的各项目的读取阈值电压的设定所读取出的原始页面数据(或硬式校正后的校正页面数据(仍有错误位))进行软式解码。虽然软式解码的错误校正能力比硬式解码的错误校正能力高,但也耗费运算单元162相当多的运算资源及运算时间(还包括硬式解码所耗费的时间)以计算出正确的页面数据。虽然可透过软式解码错误校正以得到正确的页面数据,但这也会导致数据储存装置140的读取延迟很长且读取效能低落。
需注意的是,图5的流程亦可由图2中的电子系统所执行。若用图2中的电子系统200执行步骤S510,则会与图1的电子系统100的上述操作方式略有不同。举例来说,因为电子系统200中的主控端220具有快闪转译层281及读取重试表241,故主控端220可预先将读取重试表241的全部或所需的范围的各项目相应的读取阈值电压设定的设定储存于控制器260中的动态随机存取存储器266,且主控端220可直接发送带有物理地址的主控读取指令至控制器260,并接收控制器266所回传的页面数据或校正后的校正页面数据。
综上所述,在图5的流程中,只要控制器160启动读取重试程序,即进行一或多次读取操作,控制器160即会将在试误循环中可成功读取页面数据的读取阈值电压的设定取代预设读取操作的读取阈值电压的设定,意即控制器160会更新预设读取操作的读取阈值电压的设定,如此一来,可有效地避免控制器160启动读取重试程序。
图6A-6B显示依据本发明另一实施例中的适应性数据读取方法的流程图。
图6A-6B的流程类似于图5的流程,例如图6A-6B的步骤S610~S634对应于图5中的步骤S510~S534,故其细节于此不再赘述。图6A-6B及图5的主要差别在于取代预设读取操作的读取阈值电压的设定的机制不同。
举例来说,于启动读取重试程序之后,在步骤S640,将此次读取操作中可成功读取页面数据的读取阈值电压的设定相应的一第一计数值C1加1。
在步骤S642,控制器160判断是否已经过周期T。若是,则执行步骤S646;若否,则回到步骤S610,再接收下一个读取指令。在一些实施例中,控制器160是判断是否已到达一预定读取次数N。在步骤S642中,无论是使用周期T或预定读取次数N进行判断,周期T及预定读取次数N的数值是可依据闪存180的操作情况而调整,例如在闪存180刚开始被使用时,周期T及预定读取次数N可采用较大的数值,且在闪存180的使用寿命快结束时,周期T及预定读取次数N可采用较小的数值,但本发明并不限于此。
在步骤S644,将预设读取操作的读取阈值电压的设定相应的一第二计数值C2加1。因为步骤S644是接在步骤S616之后,且控制器160是利用预设读取操作的读取阈值电压的设定即可由闪存180成功地读取页面数据,故控制器160将预设读取阈值电压相应的第二计数值C2加1。
在步骤S646,判断是否有任一个第一计数值C1大于第二计数值C2。若有,则执行步骤S648;若无,则执行步骤S650。举例来说,若有任一个第一计数值大于第二计数值,表示在此周期T中,有在读取重试表141中有一特定项目的读取阈值电压的设定相应的成功读取次数比预设读取操作的读取阈值电压的设定相应的成功读取次数还高,故可将该特定项目的读取阈值电压的设定取代原本的预设读取操作的读取阈值电压的设定。因此,在下个周期T中,控制器160先利用已更新后的预设读取操作的读取阈值电压的设定对闪存180读取页面数据应会有较高的成功率,意即可降低控制器160进入读取重试流程的试误循环的机率,故可降低数据储存装置140的读取延迟并提升数据储存装置140的读取效能。
在一实施例中,第一计数值及第二计数值亦可依据其他的统计数据而增加,例如是各读取阈值电压的设定的成功率(success rate),或是采用取样计数器,每隔一定次数才将相应的第一计数值或第二计数值加1,藉以降低电子系统的运算负担。
在步骤S648,将具有最大第一计数值的读取阈值电压的设定取代预设读取操作的读取阈值电压的设定,并更新读取重试表141。举例来说,控制器160可将全部的第一计数值及该第二计数值由高而低进行排序。因为在步骤S648中是在有任何第一计数值大于第二计数值的情况下,故具有最大第一计数值的读取阈值电压的设定必然是全部的第一计数值及该第二计数值中的最大值,故可将具有最大第一计数值的读取阈值电压的设定做为下个周期T的预设读取操作的读取阈值电压的设定。其余的第一计数值及第二计数值则会依据其数值由大而小进行排序,并将相应的读取阈值电压的设定依序更新至读取重试表141中的各项目。
在步骤S650,重置各第一计数值及第二计数值。举例来说,每经过周期T,控制器160即会依据在目前周期中的各第一计数值及第二计数值的统计结果以判断那个读取阈值电压的设定的成功读取次数最高。
在图6A-6B的流程中,控制器160会每隔一固定周期T或是到达一预定读取次数N时进行检查(意即为一检查点),例如对各读取阈值电压的设定(包括预设读取操作的读取阈值电压的设定及读取重试表141中的N个读取阈值电压的设定)可成功读取页面数据的计数值由大而小进行排序(共有N+1个计数值),其中具有最大计数值的读取阈值电压的设定做为下个周期T的预设读取操作的读取阈值电压的设定。具有第二大的计数值至最小计数值的读取阈值电压的设定则会依序更新至读取重试表141中的第1至第N个项目。图5的流程例如可视为图6A-6B的流程的一个特例,例如固定周期T或预定读取次数N的数值很小,所以控制器160每次以读取重试表141中的一读取阈值电压的设定成功读取闪存180的页面数据后,即可将预设读取操作的读取阈值电压更新为此次读取操作中可成功读取页面数据的读取阈值电压的设定。
综上所述,本发明提供一种数据储存装置及其适应性数据读取方法,其可在一检查点更新预设读取阈值电压及在读取重试表中的各项目相应的读取阈值电压的排名,并将排名最高的读取阈值电压取代原本的预设读取阈值电压,使得数据储存装置在某些情境下可将原本的预设读取阈值电压取代为较适合的预设读取阈值电压,可避免使用预设读取阈值电压的读取操作的失败并进入试误循环的机率,并可降低数据储存装置的读取延迟并提升读取效能。
惟以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求书及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或权利要求不须达成本发明所揭露的全部目的或优点或特点。此外,摘要部分和标题仅是用来辅助专利文件搜寻之用,并非用来限制本发明的权利范围。

Claims (12)

1.一种数据储存装置,其特征在于,包括:
一闪存,具有多个区块用以储存数据,其中各区块包括多个页面;以及
一控制器,用以接收来自一主控端的一主控读取指令,并将该主控读取指令转换为对该闪存的一读取操作指令以进行一预设读取操作由该多个页面读取一页面数据,其中该预设读取操作具有一预设读取阈值电压的设定,
其中:
当该预设读取操作失败时,该控制器依序将一读取重试表中的多个项目的每一者相应的一读取阈值电压的设定对该闪存进行一读取操作,并将成功进行该读取操作的该读取阈值电压的设定取代该预设读取阈值电压的设定;
该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定分别具有相应的一初始排名,供依序试错用,其中该预设读取阈值电压的设定具有最高的该初始排名,且该控制器在一检查点计算该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定的一更新排名,并将具有最高的该更新排名的该读取阈值电压的设定或该预设读取阈值电压的设定取代为该预设读取阈值电压的设定,并将其他的该读取阈值电压的设定依照该更新排名依序更新至该读取重试表中的各项目;
该读取重试表属于多个子读取重试表中对应一特定情境的一子读取重试表;且
当该数据储存装置处于该特定情境时,经过一预定数量的周期T后,以另一子读取重试表取代该读取重试表,其中,周期T用于判断是否需更新上述读取阈值电压的设定的排名。
2.如权利要求1项所述的数据储存装置,其特征在于,该控制器包括一错误校正电路用以对该预设读取操作或该读取操作所读取的该页面数据进行错误校正,
其中当该错误校正电路判断可对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生正确页面数据时,该控制器判断该预设读取操作或该读取操作成功,
其中当该错误校正电路判断无法对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生该正确页面数据时,该控制器判断该预设读取操作或该读取操作失败。
3.如权利要求1所述的数据储存装置,其特征在于,该更新排名依据各个该读取阈值电压的设定及该预设读取阈值电压的设定在该检查点时所分别相应的一成功读取次数所决定。
4.如权利要求1所述的数据储存装置,其特征在于,该更新排名依据各个该读取阈值电压的设定及该预设读取阈值电压的设定在该检查点时所分别相应的一读取成功率所决定。
5.如权利要求1所述的数据储存装置,其特征在于,该特定情境为该数据储存装置操作高于一预定温度持续一预定时间,或是该闪存中的闪存单元的平均抹除次数大于一预定抹除次数。
6.如权利要求2所述的数据储存装置,其特征在于,当该错误校正电路使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作均失败时,该控制器对使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作所取得到该页面数据进行一软式解码错误校正以产生校正后的正确页面数据,并将该正确页面数据回报至该主控端。
7.一种适应性数据读取方法,用于一数据储存装置,其特征在于,该数据储存装置包括一闪存,该方法包括:
接收来自一主控端的一主控读取指令,并将该主控读取指令转换为对该闪存的一读取操作指令以进行一预设读取操作由多个页面读取一页面数据,其中该预设读取操作具有一预设读取阈值电压的设定;当该预设读取操作失败时,依序将一读取重试表中的多个项目的每一者相应的一读取阈值电压的设定对该闪存进行一读取操作,并将成功进行该读取操作的该读取阈值电压的设定取代该预设读取阈值电压的设定,其中,该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定分别具有相应的一初始排名,该预设读取阈值电压的设定具有最高的该初始排名;
在一检查点计算该预设读取阈值电压的设定及在该读取重试表中的各项目的该读取阈值电压的设定的一更新排名;
将具有最高的该更新排名的该读取阈值电压的设定或该预设读取阈值电压的设定取代为该预设读取阈值电压的设定;以及
将其他的该读取阈值电压的设定依照该更新排名依序更新至该读取重试表中的各项目;
其中:
该读取重试表属于多个子读取重试表中对应一特定情境的一子读取重试表;且
当该数据储存装置处于该特定情境时,经过一预定数量的周期T后,另一子读取重试表取代该读取重试表,其中,周期T用于判断是否需更新上述读取阈值电压的设定的排名。
8.如权利要求7所述的适应性数据读取方法,其特征在于,该数据储存装置包括一错误校正电路用以对该预设读取操作或该读取操作所读取的该页面数据进行错误校正,其中该方法更包括:
当该错误校正电路判断可对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生正确页面数据时,该预设读取操作或该读取操作成功;以及
当该错误校正电路判断无法对该预设读取操作或该读取操作所读取的该页面数据进行错误校正以产生该正确页面数据时,判断该预设读取操作或该读取操作失败。
9.如权利要求7所述的适应性数据读取方法,其特征在于,更包括:
依据各个该读取阈值电压及该预设读取阈值电压在该检查点时所分别相应的一成功读取次数以决定该更新排名。
10.如权利要求7所述的适应性数据读取方法,其特征在于,更包括:
依据各个该读取阈值电压的设定及该预设读取阈值电压的设定在该检查点时所分别相应的一读取成功率以决定该更新排名。
11.如权利要求7所述的适应性数据读取方法,其特征在于,该特定情境为该数据储存装置操作高于一预定温度持续一预定时间,或是该闪存中的闪存单元的平均抹除次数大于一预定抹除次数。
12.如权利要求8所述的适应性数据读取方法,其特征在于,更包括:
当该错误校正电路使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作均失败时,对使用该读取重试表中各项目相应的该读取阈值电压的设定的该读取操作所取得到该页面数据进行一软式解码错误校正以产生校正后的正确页面数据;以及
将该正确页面数据回报至该主控端。
CN201811250388.5A 2018-10-25 2018-10-25 数据储存装置及其适应性数据读取方法 Active CN111104044B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811250388.5A CN111104044B (zh) 2018-10-25 2018-10-25 数据储存装置及其适应性数据读取方法
US16/441,051 US10963335B2 (en) 2018-10-25 2019-06-14 Data storage device and adaptive data-reading method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811250388.5A CN111104044B (zh) 2018-10-25 2018-10-25 数据储存装置及其适应性数据读取方法

Publications (2)

Publication Number Publication Date
CN111104044A CN111104044A (zh) 2020-05-05
CN111104044B true CN111104044B (zh) 2024-04-30

Family

ID=70326729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811250388.5A Active CN111104044B (zh) 2018-10-25 2018-10-25 数据储存装置及其适应性数据读取方法

Country Status (2)

Country Link
US (1) US10963335B2 (zh)
CN (1) CN111104044B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102612749B1 (ko) * 2018-12-19 2023-12-13 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10922010B2 (en) * 2019-03-25 2021-02-16 Micron Technology, Inc. Secure data removal
KR20210099895A (ko) * 2020-02-05 2021-08-13 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210112872A (ko) * 2020-03-06 2021-09-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN111625194B (zh) * 2020-05-26 2023-03-24 合肥康芯威存储技术有限公司 一种存储介质的数据读取方法、存储系统及存储设备
CN111863097B (zh) * 2020-06-29 2022-06-17 联芸科技(杭州)有限公司 快闪存储器的读取控制方法及装置
TWI751620B (zh) 2020-07-23 2022-01-01 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112530499B (zh) * 2020-12-09 2024-09-13 合肥康芯威存储技术有限公司 一种数据读取方法及计算机可读存储设备
WO2022204928A1 (en) * 2021-03-30 2022-10-06 Yangtze Memory Technologies Co., Ltd. Memory controller with read error handling
TWI777519B (zh) * 2021-04-26 2022-09-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN113707211B (zh) * 2021-07-21 2024-05-10 深圳市宏旺微电子有限公司 一种闪存Read Retry纠错的方法及装置
US20230064822A1 (en) * 2021-09-01 2023-03-02 Micron Technology, Inc. Temperature controlled media management operations at a memory sub-system
CN114661233A (zh) * 2022-03-18 2022-06-24 合肥兆芯电子有限公司 表格排序方法、存储器存储装置及存储器控制电路单元
US11770133B1 (en) * 2022-04-20 2023-09-26 SK Hynix Inc. Exact ber reporting in the presence of CRC termination
CN116185309B (zh) * 2023-04-27 2023-08-08 合肥康芯威存储技术有限公司 一种数据处理方法及数据存储设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106158038A (zh) * 2015-04-14 2016-11-23 飞思卡尔半导体公司 从非易失性存储器读取数据的方法
CN106653087A (zh) * 2015-10-28 2017-05-10 光宝电子(广州)有限公司 固态存储装置及其相关读取控制方法
CN107797821A (zh) * 2016-09-05 2018-03-13 上海宝存信息科技有限公司 重试读取方法以及使用该方法的装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100555536B1 (ko) * 2003-12-05 2006-03-03 삼성전자주식회사 데이터 저장 시스템에서의 적응적 리트라이 제어 방법 및이를 이용한 디스크 드라이브
US20130185612A1 (en) * 2012-01-18 2013-07-18 Samsung Electronics Co., Ltd. Flash memory system and read method of flash memory system
CN104217761B (zh) * 2013-05-31 2018-12-14 慧荣科技股份有限公司 数据储存装置及其错误校正方法
KR102114234B1 (ko) * 2013-10-22 2020-05-25 에스케이하이닉스 주식회사 데이터 저장 시스템 및 그것의 동작 방법
US9633740B1 (en) * 2016-02-11 2017-04-25 Seagate Technology Llc Read retry operations where likelihood value assignments change sign at different read voltages for each read retry
US9563502B1 (en) * 2013-12-20 2017-02-07 Seagate Technology Llc Read retry operations with read reference voltages ranked for different page populations of a memory
US9514848B2 (en) * 2014-04-03 2016-12-06 Lite-On Electronics (Guangzhou) Limited Solid state drive and associated error check and correction method
CN104933343A (zh) * 2015-07-01 2015-09-23 京东方科技集团股份有限公司 一种应用程序的保密方法及装置、电子设备
US10102920B2 (en) * 2016-08-15 2018-10-16 Sandisk Technologies Llc Memory system with a weighted read retry table
CN108363544B (zh) * 2017-01-26 2021-05-07 建兴储存科技(广州)有限公司 固态储存装置及其读取重试方法
KR102347184B1 (ko) * 2017-05-23 2022-01-04 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN110767253B (zh) * 2018-07-25 2021-08-03 建兴储存科技(广州)有限公司 固态储存装置及其读取表管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106158038A (zh) * 2015-04-14 2016-11-23 飞思卡尔半导体公司 从非易失性存储器读取数据的方法
CN106653087A (zh) * 2015-10-28 2017-05-10 光宝电子(广州)有限公司 固态存储装置及其相关读取控制方法
CN107797821A (zh) * 2016-09-05 2018-03-13 上海宝存信息科技有限公司 重试读取方法以及使用该方法的装置

Also Published As

Publication number Publication date
CN111104044A (zh) 2020-05-05
US10963335B2 (en) 2021-03-30
US20200133767A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
CN111104044B (zh) 数据储存装置及其适应性数据读取方法
US8812784B2 (en) Command executing method, memory controller and memory storage apparatus
US8392649B2 (en) Memory storage device, controller, and method for responding to host write commands triggering data movement
US11557352B2 (en) Adjustable read retry order based on decoding success trend
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
US9880742B2 (en) Valid data merging method, memory controller and memory storage apparatus
US10303367B2 (en) Mapping table updating method without updating the first mapping information, memory control circuit unit and memory storage device
US9786379B2 (en) Data storage device and data maintenance method
US20200220562A1 (en) Dynamic Multi-Stage Decoding
US9965194B2 (en) Data writing method, memory control circuit unit and memory storage apparatus which performs data arrangement operation according to usage frequency of physical erasing unit of memory storage apparatus
US10977116B2 (en) Data access method, memory control circuit unit and memory storage device
US11093326B2 (en) Dynamic multi-stage decoding
US10116335B2 (en) Data processing method, memory storage device and memory control circuit unit
US11467758B2 (en) Data writing method using different programming modes based on the number of available physical erasing units, memory control circuit unit and memory storage device
KR102693836B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11797222B2 (en) Read disturb checking method, memory storage device and memory control circuit unit
US11726709B2 (en) Memory control method, memory storage device and memory control circuit unit
US11662940B2 (en) Data storage device and data processing method for restoring MLC/TLC memory to avoid degradation of access performance of a memory device caused by word line short
US10732845B2 (en) Data search method, memory storage apparatus, and memory control circuit unit
US11372590B2 (en) Memory control method, memory storage device and memory control circuit unit
CN117608501B (zh) 电压调整方法、存储器存储装置及存储器控制电路单元
CN114327265B (zh) 读取干扰检查方法、存储器存储装置及控制电路单元
CN116150042A (zh) 藉助于多阶段垃圾收集管理以进行存取控制的方法以及相关设备

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
GR01 Patent grant
GR01 Patent grant
TG01 Patent term adjustment
TG01 Patent term adjustment