CN117420963B - 一种存储器及其控制方法 - Google Patents
一种存储器及其控制方法 Download PDFInfo
- Publication number
- CN117420963B CN117420963B CN202311734026.4A CN202311734026A CN117420963B CN 117420963 B CN117420963 B CN 117420963B CN 202311734026 A CN202311734026 A CN 202311734026A CN 117420963 B CN117420963 B CN 117420963B
- Authority
- CN
- China
- Prior art keywords
- memory
- reading
- error correction
- read
- threshold
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012937 correction Methods 0.000 claims abstract description 89
- 238000003860 storage Methods 0.000 claims abstract description 79
- 238000012360 testing method Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 5
- 238000004064 recycling Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 2
- 239000010410 layer Substances 0.000 description 30
- 238000007726 management method Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 10
- 238000009825 accumulation Methods 0.000 description 7
- 239000002356 single layer Substances 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0608—Saving storage space on 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/062—Securing 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种存储器及其控制方法,存储器包括:闪存芯片,闪存芯片中划分出多个存储块,且存储块包括多个存储单元;磨损管理模块,磨损管理模块中记录存储块的读取次数和擦除次数;纠错模块,在从闪存芯片中读出数据时,纠错模块对比读出数据和原始数据,并获得读出数据的纠错码;以及阈值调整模块,阈值调整模块中存储多个擦除阶数和多个读取阈值,其中多个读取阈值呈等差分布,当存储块的擦除次数达擦除阶数,阈值调整模块遍历读取存储块的存储单元,并在纠错码的错误比特数大于纠错阈值时,减小读取阈值的等差增量。本发明的提供了一种存储器及其控制方法,能够提升存储器的稳定性和性能。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种存储器及其控制方法。
背景技术
以NAND闪存作为存储介质的存储器具有非易失、读写速度快、抗震、低功耗、体积小等特性,目前己广泛应用于嵌入式系统、航空航天、消费电子等领域。闪存存储数据的稳定性受到多种因素的影响,例如擦写次数就会直接影响到闪存的寿命和闪存存储数据的稳定性。
在对闪存的数据写入进程中,对存储页写入数据时,会导致被写入存储页相邻的存储页出现错误的电荷积累,当电荷积累到一定程度就会导致部分存储页被错误导通,从而导致闪存的存储页数据出错。这是闪存硬件特质导致的读干扰现象,并且会严重影响闪存的稳定性。
发明内容
本发明的目的在于提供一种存储器及其控制方法,能够提升存储器的稳定性和性能。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供了一种存储器,包括:
闪存芯片,所述闪存芯片中划分出多个存储块,且所述存储块包括多个存储单元;
磨损管理模块,所述磨损管理模块中记录所述存储块的读取次数和擦除次数;
纠错模块,在从所述闪存芯片中读出数据时,所述纠错模块对比读出数据和原始数据,并获得所述读出数据的纠错码;以及
阈值调整模块,所述阈值调整模块中存储多个擦除阶数和多个读取阈值,其中多个读取阈值呈等差分布,当所述存储块的擦除次数达所述擦除阶数,所述阈值调整模块遍历读取所述存储块的存储单元,并在所述纠错码的错误比特数大于纠错阈值时,减小所述读取阈值的等差增量。
在本发明一实施例中,在所述存储块中,部分所述单元被划分为弱页,且所述弱页的地址映射信息存储在所述闪存芯片中。
在本发明一实施例中,当所述存储块的读取次数达到所述读取阈值,且所述弱页的错误比特数大于所述纠错阈值,则减小所述读取阈值的等差增量。
在本发明一实施例中,所述弱页为所述存储器的寿命周期读写测试中,纠错码的错误比特数最大的存储单元。
在本发明一实施例中,所述存储器包括主控芯片,所述磨损管理模块、所述纠错模块和所述阈值调整模块设置在所述主控芯片内。
本发明提供了一种存储器的控制方法,基于如上所述的一种存储器,包括以下步骤:
在所述存储器执行主机命令时,记录闪存芯片中存储块的读取次数和擦除次数,其中所述存储器中存储多个擦除阶数和多个读取阈值,且多个读取阈值呈等差分布;
在从所述闪存芯片中读出数据时,对比读出数据和原始数据,并获得所述读出数据的纠错码;以及
当所述存储块的擦除次数达所述擦除阶数,遍历读取所述存储块的存储单元,并在所述纠错码的错误比特数大于纠错阈值时,减小所述读取阈值的等差增量。
在本发明一实施例中,所述遍历读取所述存储块的存储单元的步骤包括:
依次读取所述存储块的存储单元,并获取所述存储单元的纠错码;以及
任一所述存储单元的所述错误比特数大于所述纠错阈值,减小所述存储单元的读取阈值,其中每次所述读取阈值的减小比例相同。
在本发明一实施例中,当所述存储块的读取次数达到所述读取阈值,对所述存储块进行垃圾回收。
在本发明一实施例中,部分所述存储单元被划分为弱页,当所述存储块的读取次数达到所述读取阈值时,读取所述弱页并获取所述弱页的纠错码,当所述纠错码的错误比特数小于等于纠错阈值,减小所述读取阈值的增量。
在本发明一实施例中,当所述纠错码的错误比特数大于所述纠错阈值,对所述存储块进行垃圾回收。
如上所述,本发明提供了一种存储器及其控制方法,能够根据存储器内部的实际使用情况进行垃圾回收,极大程度地节省了存储资源,避免发生无效且过于频繁的垃圾回收进程。因此根据本发明提供的存储器,既能提升存储器的性能,还能保障存储器的存储安全。并且,根据本发明提供的存储器,环境因素造成或是电荷积累造成的读干扰问题都能被极大程度地改善,极大程度地提升了存储器的使用寿命和稳定性。并且减少了存储器内部的无效流程,能够在高性能的同时,提升用户的使用体验。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例中存储器的结构示意图。
图2为本发明一实施例中存储块的结构示意图。
图3为本发明一实施例中控制固件的示意图。
图4为本发明一实施例中读取阈值和擦写次数的等差分布示意图。
图5为本发明一实施例中步骤S10至步骤S80的示意图。
图6为本发明一实施例中步骤S100至步骤S300的示意图。
图7为本发明一实施例中步骤S010至步骤S030的示意图。
图8为对存储块的多个存储单元进行读写测试的错误比特数据分布图。
图中:100、存储器;200、主控芯片;201、微处理器;202、主机接口控制器;203、缓存控制器;204、闪存控制器;205、纠错模块;300、闪存芯片;310、存储块;320、存储层;330、存储单元;400、内存;500、控制固件;501、地址管理模块;502、磨损管理模块;503、纠错判断模块;504、阈值调整模块;505、垃圾回收模块。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明提供的存储器为闪存或包括闪存的存储设备,例如SM闪存卡、CF卡、多媒体卡(Multi Media Card,MMC)、安全数码卡(Secure Digital Card,SD卡)、记忆棒和微硬盘等等。在本实施例中,闪存的存储单元可以是单层存储单元(Single Level Cell,SLC)、多层存储单元(Multi Level Cell,MLC)、三层存储单元(Triple Level Cell)和四层存储单元(Quad-level cells,QLC)。其中,单层存储单元可以存储例如1bit的数据,多层存储单元可以存储例如2bit的数据,三层存储单元可以存储例如3bit的数据,四层存储单元可以存储例如4bit的数据。对于单层存储单元,闪存介质的存储器可以支持例如6万次的擦除次数,而对于多层存储单元,闪存介质的存储器可以支持例如3000次的擦除次数。为平衡不同存储单元或是不同类型存储单元的磨损情况,在写入数据时,可优先选取擦除次数较少的存储单元,从而平衡存储器中各个存储单元的使用情况。其中,存储器的读取次数可以达到千万次,为解决读干扰问题,可以根据定时对存储器启动垃圾回收(Garbage Collection,GC),将可能发生读干扰的存储单元的用户数据转移至别的存储单元。而本发明提供的存储器在运用多层存储单元、三层存储单元和四层存储单元等等的情况下,仍旧能够保持数据存储的稳定性。
请参阅图1所示,本发明提供了存储器100,存储器100包括主控芯片200和闪存芯片300。其中主控芯片200包括微处理器201、主机接口控制器202、缓存控制器203和闪存控制器204,以及纠错模块205。其中微处理器201为精简指令系统计算机(ReducedInstruction System Computer,RISC),且具体为ARM处理器。微处理器201电性连接于主机接口控制器202、缓存控制器203和闪存控制器204。其中,主机接口控制器202通过接口与主机电性连接,以接收主机的指令和数据,并反馈主控芯片200的数据。其中主机和主控芯片200的连接接口可以是SATA硬盘、高速串行计算机扩展总线接口(Peripheral ComponentInterconnect express,PCIe)、SAS接口。缓存控制器203与内存400电性连接,以控制数据的转移和存储。在本实施例中,闪存控制器204电性连接于纠错模块205,以在闪存芯片300的读进程中对闪存芯片300读出的数据进行纠错。其中内存400中存储控制固件500,其中控制固件500可以烧录进内存400中。通过调取控制固件500,微处理器201以及闪存控制器204可以实现对闪存芯片300的进程控制。
请参阅图1所示,在本发明一实施例中,纠错模块205可通过低密度奇偶校验码(Low Density Parity-Check Code,LDPC)完成对闪存芯片300读取数据的错误检查和校正。由于闪存特性,从闪存芯片300中读出的数据天然存在多个错误比特位。在读出数据时,通过纠错模块205对读出的数据进行校核,将错误比特位纠正为正确的数据。而纠错模块205具有纠错上限,当读出数据的错误位数超出纠错上限,就会导致数据读错,纠错模块205会报错。例如,1k的数据纠错的上限为100个比特(bit)。如果错误比特数超出了例如100个比特,那么就会导致纠错模块205报错。其中,天然的错误比特数,可以通过读出原始数据,并比较原始数据和正确数据来获得天然的错误比特数。当出现读干扰,或是环境因素干扰,或是器件质量导致坏块等多种原因,错误比特数就会增加。其中在闪存芯片300的寿命内,读干扰是必然发生且随机发生在闪存芯片300的任一物理位置。由于纠错模块205难以纠正读错误,因此就可能导致对应的物理区块被判定为坏块,并且对应物理页面中的数据还要进行恢复或是遗弃,这就导致用户数据安全性变差,可能会导致严重的存储安全问题。并且,要应对读干扰导致的寿命影响,还需要在存储器100中设置对应的处理固件,占用存储资源去确保存储安全,在有限的硬件面积的前提下,这就致使存储器100的性能难以进一步提升。
请参阅图1和图2所示,在本发明一实施例中,闪存芯片300为NAND闪存。在NAND闪存中,存储块310为闪存的物理区块(block),每个存储块310都有唯一的器件编号。存储块310包括多个存储层320,存储层320包括多个存储单元330。存储单元330不限于是单层存储单元SLC或是多层存储单元TLC。在本实施例中,对于单层存储单元SLC,存储单元330包括单个存储页(page)。对于多层存储单元TLC,存储单元330包括多个存储页。在本实施例中,存储单元330的漏极电性连接于另一存储单元330的源极,从而排列成列,其中位于列一侧边缘的存储单元330电性连接于位线,位于列另一侧边缘的存储单元330电性连接源极控制端(Source line)。在本实施例中,存储器100包括多个成列排布的存储单元330。其中多个存储单元330成行排布,且同行的存储单元330的驱动极电性连接,从而形成存储层320。在本实施例中,位于同一存储层320中的存储单元330连接于同一控制端。其中存储层320对应的是存储器100的字线(Word line)。在本实施例中,存储块310包括例如64个存储层320,图1仅为示意图。在同一存储层320中,当控制端发送控制导通的控制信号,例如发送高电平信号,从而将存储层320中的存储单元330导通,对存储单元330写入数据。在读出存储单元330中的数据时,对要读出的存储层320施加读出电压VR。并同时对同一存储块310中的不读出的存储层320施加导通电压VR-pass。其中VR<VR-pass,从而使对应的存储层320能够被正确读出。其中读取的存储层320被施加导通电压,可以等效为轻微写,从而产生了电荷积累,这会导致存储层320中电荷积累到一定程度,就会导致存储层320中的数据出现翻转,从而导致数据存储出现误差。
请参阅图1至图3所示,在本发明一实施例中,控制固件500包括地址管理模块501、磨损管理模块502、纠错判断模块503、阈值调整模块504和垃圾回收模块505。其中,微处理器201通过获取控制固件500,可以对闪存芯片300进行地址映射管理、磨损均衡管理、读取信息管理和垃圾回收管理等等。在地址映射管理中,主控芯片200通过地址管理模块501将发送至闪存芯片300的逻辑地址转换为写入存储块310的物理地址,并且建立和调整存储块310的地址映射信息。在磨损均衡管理中,主控芯片200通过磨损管理模块502获取存储块310的读写和擦除的次数,从而调整从存储块310所使用的存储层320,使各个存储层320的使用次数趋于均衡。在垃圾回收管理中,主控芯片200通过垃圾回收模块505将存储块310的有效数据转移至另一存储块310中,并擦除转移有效数据后的存储块310,从而整理出新的存储块310,以确保闪存芯片300的正常使用。
请参阅图1至图4所示,在本发明一实施例中,阈值调整模块504中存储擦除阶数和读取阈值。其中多个擦除阶数对应不同的读取阈值。例如,第一擦除阶数C1对应的读取阈值为RC_TH_1,第二擦除阶数C2对应的读取阈值为RC_TH_2,其中C代表擦除阶数。在本实施例中,如图4所示,随着擦除阶数C的增大,读取阈值也增大。并且随着擦除阶数C的增大,读取阈值的等差增量减小。并且在本实施例中,多个擦除阶数呈等差分布,且本发明不限定等差分布的差值。其中多个擦除阶数的读取阈值也呈等差分布,且发明不限定擦除阶数的等差分布差值,也不限定读取阈值的等差分布差值。并且,本发明不限定读取阈值等差增量等差递减的幅度。
请参阅图1至图5所示,在本发明一实施例中,磨损管理模块502中存储各个存储块310的读取次数、擦除次数和写次数。其中,擦除次数直接关系着存储块310的使用寿命。例如,对于单层存储单元SLC,擦除次数为例如6万次,对于多层存储单元TLC,擦除次数为例如3000次。在闪存芯片300内,磨损管理模块502会尽可能地均衡每个存储块310的使用次数。例如,在使用存储块310时,优先选取擦除次数最小的存储块310。在本实施例中,预设读取阈值和擦除阶数。其中,预设多个擦除阶数,多个擦除阶数为等差分布。例如,预设第一个擦除阶数为500,第二个擦除阶数为1000、第三个擦除阶数为1500,以此类推,直到达到存储块310的擦除次数上限。本发明不限定擦除阶数的具体数值。在本实施例中,读取阈值为存储块310读取进程的次数上限。具体的,当存储块310的读取次数达到读取阈值,则可以对存储块310进行垃圾回收,将对应存储块310的数据转移至另一存储块310中,以避免读干扰积累的电荷导致存储单元330读出数据错误,并达到纠错的上限值。其中,当存储块310的读取次数达到擦除阶数时,执行本发明的存储器100的控制方法。在本实施例中,在存储块310的工作进程中,通过磨损管理模块502记录存储块310的擦除次数。
请参阅图1至图5所示,本发明提供了存储器100的控制方法,在存储块310的擦除次数达到擦除阶数时,启动存储器100的控制方法。其中,擦除阶数有多个,每达一次擦除阶数,就执行一次存储器100的控制方法。其中同步监控多个存储块310的擦除次数。当多个存储块310的擦除次数同时到达擦除阶数,可以按照达到擦除阶数的先后顺序,对多个存储块310执行存储器100的控制方法,也可以优先对擦除阶数较大的存储块310执行存储器100的控制方法。在本发明中,存储器100的控制方法包括步骤S10至步骤S80。
步骤S10、设置存储单元的存储类型后,对存储块进行擦写操作。
步骤S20、判断存储块的擦除次数是否达到擦除阶数,当存储块的擦除次数未达到擦除阶数,返回步骤S10。
步骤S30、当存储块的擦除次数达到擦除阶数,获取预设阶数对应的读取阈值。
步骤S40、读取存储块的存储单元,将存储块的读取次数加一,并获取存储单元的纠错码。
步骤S50、判断纠错码的错误比特数是否超出纠错阈值。
步骤S60、当存储单元的纠错码超出纠错阈值,减小读取阈值。
步骤S70、当存储单元的纠错码小于等于纠错阈值,或是纠错码未超出纠错阈值,判断是否遍历读取存储块的存储单元,且若是已遍历读取存储块的存储单元,则返回步骤S10。
步骤S80、若是未遍历读取存储块的存储单元,则选取存储块的另一存储单元,并返回步骤S40。
请参阅图1至图5所示,在本发明一实施例中,步骤S10进行在存储块310的数据存储进程中。具体的,在步骤S10中,在对存储块310进行数据存储时,通过磨损管理模块502记录存储块310的擦除次数。当擦除次数达到任一擦除阶数,执行步骤S20。在步骤S20中,对擦除次数达到擦除阶数的存储块310,执行步骤S30,对于擦除次数未达到擦除阶数的存储块310,则返回步骤S10,继续监控存储块310的擦写进程。在本实施例中,可以在控制固件500中设置询问命令和比较命令,定时将磨损管理模块502记录的擦除次数与擦除阶数进行比较,从而实现步骤S20。其中当擦除次数等于擦除阶数时,启动纠错判断模块503并执行步骤S30。需要说明的是,在步骤S30的执行进程中,停止对存储块310的擦写进程,优先对存储块310进行读取。在本实施例中,通过磨损管理模块502将执行步骤S30至步骤S80的存储块310搁置,并优先选取其他存储块310进行数据编辑。并且,步骤S30至步骤S80的进程执行在存储器100的空闲时间。其中当主机对主控芯片200发送写控制信号时,主控芯片200对主机的控制信号进行响应,此时存储器100处于工作时间,当存储器100的任务序列中无主机任务时,可以执行步骤S30至步骤S80。
请参阅图1至图5所示,在本发明一实施例中,在步骤S30中,获取擦除阶数对应的读取阈值。如图4所示,多个擦除阶数对应不同的预设读取阈值。在步骤S20中达到的擦除阶数,获取对应的读取阈值。接着执行步骤S40和步骤S50。在步骤S40中,读取存储块310。存储块310包括多个存储单元330。其中,随机选取存储块310的任一存储单元330,或是选取存储块310中器件编号第一的存储单元330。在本实施例中,每读取一次存储单元330,将存储块310的读取次数加一。在读出数据后,纠错模块205生成存储单元330的纠错码。通过纠错判断模块503获得纠错码。在步骤S50中,通过纠错判断模块503判断纠错码中的错误比特数是否超出纠错阈值。其中纠错阈值受限于存储器100的硬件水平,因此根据不同的硬件水平,可以调整纠错判断模块503的纠错阈值。在本实施例中,1k数据的纠错阈值为例如100bit。需要说明的是,读取阈值并不是存储块310发生读干扰的危险线。例如,在第600次读取时存储块310可能会发生读干扰,那么可以将读取阈值设置为危险值的例如70%~80%,以确保在真正发生读干扰前,还能留出一定的安全时间,来对存储块310进垃圾回收。
请参阅图1至图5所示,在本发明一实施例中,在步骤S60中,当纠错码超出纠错阈值,则减小预设读取阈值,获得第一读取阈值。接着执行步骤S70,判断当前读取的存储单元330是否为存储块310中的最后一个存储单元330。若是当前的存储单元330是存储块310中最后一个被读的存储单元330,则返回步骤S10,继续执行主机命令,对存储块310进行擦写操作和读取操作等等。若是当前的存储单元330不是最后一个被读的存储单元330,则执行步骤S80。在步骤S80中,继续读取存储块310中的存储单元330。且在步骤S80后,返回步骤S40,继续对读取阈值进行调整。在步骤S50中,当纠错码小于等于纠错阈值,则直接执行步骤S70,判断当前读取的存储单元330是否为存储块310中的最后一个存储单元330。若是当前的存储单元330是存储块310中最后一个被读的存储单元330,则返回步骤S10,继续执行主机命令,对存储块310进行擦写操作和读取操作等等。若是当前的存储单元330不是最后一个被读的存储单元330,则执行步骤S80。在步骤S80中,继续读取存储块310中的存储单元330。且在步骤S80后,并返回步骤S40,继续对读取阈值进行调整。其中,在遍历存储块310的多个存储单元330后,预设读取阈值也经过了多次调整,每调整一次读取阈值,用后调整的读取阈值覆盖前一个读取阈值。在本实施例中,以最后一个读取阈值作为存储块310新的读取阈值。
请参阅图1至图6所示,在本发明一实施例中,每达到一个擦除阶数,就对读取阈值进行调整。且随着擦除阶数的上升,读取阈值逐步下降。具体的,在步骤S60中,每一次减小后的当前读取阈值为前一读取阈值的例如0.9倍。在本实施例中,在执行步骤S10至步骤S80的同时,执行步骤S100至步骤S300。
步骤S100、对存储块的读取次数进行计数。
步骤S200、判断存储块的读取次数是否达到读取阈值,当存储块的读取次数未达到读取阈值,则返回步骤S100。
步骤S300、当存储块的读取次数达到读取阈值,则对存储块进行垃圾回收。
请参阅图1至图6所示,在本发明一实施例中,在步骤S100中,无论存储器100是执行主机命令执行了读数据进程,还是执行步骤S10至步骤S80而执行了读数据进程,都通过磨损管理模块502对读取次数进行计数。在步骤S200中,判断存储块310的读取次数是否达到读取阈值。当存储块310的读取次数达到当前的读取阈值,则执行步骤S300,通过垃圾回收模块505对存储块310进行垃圾回收。若是存储块310的读取次数未达到当前的读取阈值,则返回步骤S100,持续获取并记录存储块310的读取次数。其中在步骤S200中参与判断的读取阈值为存储在阈值调整模块504中的读取阈值。需要说明的是,当存储块310的读取次数达到当前的读取阈值,并且同时擦除次数也达到了擦除阶数,优先执行步骤S100至步骤S300,接着执行步骤S30至步骤S80。在步骤S300中,对存储块310进行垃圾回收。具体的,以读取次数达到读取阈值的存储块310作为源块,以擦除次数最少的存储块310作为目标块,将源块的有效数据转移至目标块中,接着擦除源块,并将源块的擦除次数加一。
请参阅图1至图7所示,在本发明另一实施例中,在每次存储块310中预设弱页,并获取弱页的器件编号。在存储块310的读取次数达到读取阈值后,也可以执行步骤S010至步骤S030,对弱页进行读取检查。
步骤S010、读取存储块的弱页,并获取弱页的错误比特数。
步骤S020、判断弱页的错误比特数是否超出纠错阈值,当弱页的错误比特数超出纠错阈值,对存储块进行垃圾回收。
步骤S030、当弱页的错误比特数未超出纠错阈值,减小读取阈值并返回步骤S200。
请参阅图1至图8所示,在本发明另一实施例中,在步骤S200和步骤S300之间,设置步骤S010至步骤S030。其中弱页可以通过实验确认。具体的,在批量出产存储器100时,可以挑选部分存储器100作为样品进行测试。在本实施例中,弱页为容易发生读干扰的存储单元330。在存储器100的工作周期内,与正在读取的存储单元330相邻的存储单元330发生的电荷积累更多,因此更易出现读干扰。但是数据读取的位置是难以确定的,因此读干扰的位置是难以确定的。在本实施例中,通过大数据实验反复确认存储器100的读干扰发生的页面,发现这种读干扰现象易发生的位置符合规律。如图8所示,横坐标对应存储单元330的编号,以代表不同的存储单元330。纵坐标对应错误位数,以代表不同存储单元330的错误比特数。在本实施例中,对闪存芯片300进行读写测试,记录在闪存芯片300的寿命周期内,或是较长的工作周期内多个存储单元330的错误比特数。其中,可以模拟对存储块310写入数据、读出数据和擦除数据,并反复进行数据读写和擦除进程,记录在实验时间内多个存储单元330的错误比特数。通过大批量的测试,可以看到大多数的数据点落在了错误比特数100以下,一部分错误比特数的落在了100~150之间,另一部分错误比特数落在了150~200之间。并且高错误的错误比特数是落在了较为接近的单个或几个存储单元330中的。通过这样的批量测试,能够确定存储块310内危险的存储单元330。在本实施例中,在批量测试中,错误比特数最多的存储单元330设置为弱页。或者按照错误比特数对存储单元330进行排序,将错误比特数数量排序靠前的多个存储单元330设置为弱页。其中内存400中可以存储弱页存储表,以记录不同存储块310的弱页位置。当需要读取弱页时,从弱页存储表中获取弱页位置,并调取出对应信息。
请参阅图1至图8所示,在本发明另一实施例中,在步骤S200中,当存储块310的读取次数超出读取阈值,则执行步骤S010。若是存储块310的读取次数未超出读取阈值,则返回步骤S100。在步骤S010中,读取存储块310中的弱页,并获取弱页的错误比特数。在步骤S020中,当弱页的错误比特数超出纠错阈值,则执行步骤S300,对存储块310进行垃圾回收。当弱页的错误比特数未超出纠错阈值,则执行步骤S030。在步骤S030中,减小读取阈值。其中减小后的读取阈值可以是当前读取阈值的例如0.9倍。当弱页的错误比特数都位于阈值范围内,则可以认为存储块310中的存储单元330都处于较为安全的状态。当弱页的错误比特数大于纠错阈值,则立即对存储块310执行垃圾回收进程。
请参阅图1至图8所示,在本发明中,步骤S200中的读取次数的存储块310读取次数的等差增量。在本实施例中,在步骤S60和步骤S030中,涉及到更改读取阈值。其中更改的是读取次数的等差增量。例如,预设读取阈值为1万、2万、3万次等等,以此类推。则此时预设读取阈值的等差增量为1万。则减小读取阈值的时候,降低等差增量1万为例如9000,此时第一个读取阈值在存储器100的工作进程中被更改为9000。若是后续读取阈值没有改变,则第二个触发读取阈值的时间点为读取次数达到18000次时。第三次读取的理论触发时间为27000次,但若是在第三次读取阈值触发之前读取阈值的等差增量发生了改变,例如等差增量变为了8100。此时若是读取次数的等差增量已经超出了8100,则按照原先的读取次数执行当前读取和回收进程。若是此时读取次数的等差增量还未超出8100,则将第三次的回收触发时间修改为第26100次。以此类推。其中,图4中的纵坐标显示的对应读取总次数的读取阈值。在本发明中,通过阈值调整模块504可以实现步骤S60和步骤S030的控制进程。因此,根据本发明提供的控制方法,读取阈值是处于动态变化的过程中,能够根据存储器100内部的实际使用情况进行垃圾回收,极大程度地节省了存储资源,避免发生无效且过于频繁的垃圾回收进程。既能提升存储器100的性能,还能保障存储器100的存储安全。
本发明提供了一种存储器及其控制方法,其中存储器包括闪存芯片、磨损管理模块、纠错模块和阈值调整模块。其中,闪存芯片中划分出多个存储块,且存储块包括多个存储单元。其中,磨损管理模块中记录存储块的读取次数和擦除次数。在从闪存芯片中读出数据时,纠错模块对比读出数据和原始数据,并获得读出数据的纠错码。阈值调整模块中存储多个擦除阶数和多个读取阈值,其中多个读取阈值呈等差分布,当存储块的擦除次数达擦除阶数,阈值调整模块遍历读取存储块的存储单元,并在纠错码的错误比特数大于纠错阈值时,减小读取阈值的等差增量。根据本发明提供的存储器及其控制方法,能够对存储器的读取次数和擦除次数进行监控,并且能够根据存储器内部的实际使用情况进行垃圾回收,极大程度地节省了存储资源,避免发生无效且过于频繁的垃圾回收进程。因此根据本发明提供的存储器,既能提升存储器的性能,还能保障存储器的存储安全。并且,根据本发明提供的存储器,环境因素造成或是电荷积累造成的读干扰问题都能被极大程度地改善,极大程度地提升了存储器的使用寿命和稳定性。并且减少了存储器内部的无效流程,能够在高性能的同时,提升用户的使用体验。
以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (7)
1.一种存储器,其特征在于,包括:
闪存芯片,所述闪存芯片中划分出多个存储块,且所述存储块包括多个存储单元,在所述存储块中,部分所述存储单元被划分为弱页,且所述弱页的地址映射信息存储在所述闪存芯片中;
磨损管理模块,所述磨损管理模块中记录所述存储块的读取次数和擦除次数;
纠错模块,在从所述闪存芯片中读出数据时,所述纠错模块对比读出数据和原始数据,并获得所述读出数据的纠错码;
阈值调整模块,所述阈值调整模块中存储多个擦除阶数和多个读取阈值,多个所述擦除阶数对应不同的所述读取阈值,其中多个读取阈值呈等差分布,当所述存储块的擦除次数达到所述擦除阶数,所述阈值调整模块遍历读取所述存储块的存储单元,并在所述纠错码的错误比特数大于纠错阈值时,减小所述读取阈值的等差增量,其中当所述存储块的读取次数达到所述读取阈值,且所述弱页的错误比特数大于所述纠错阈值,则减小所述读取阈值的等差增量;以及
垃圾回收模块,当所述存储块的读取次数达到所述读取阈值,所述垃圾回收模块对所述存储块进行垃圾回收。
2.根据权利要求1所述的一种存储器,其特征在于,所述弱页为所述存储器的寿命周期读写测试中,纠错码的错误比特数最大的存储单元。
3.根据权利要求1所述的一种存储器,其特征在于,所述存储器包括主控芯片,所述磨损管理模块、所述纠错模块和所述阈值调整模块设置在所述主控芯片内。
4.一种存储器的控制方法,基于如权利要求1所述的一种存储器,其特征在于,包括以下步骤:
在所述存储器执行主机命令时,记录闪存芯片中存储块的读取次数和擦除次数,其中所述存储器中存储多个擦除阶数和多个读取阈值,且多个读取阈值呈等差分布;
在从所述闪存芯片中读出数据时,对比读出数据和原始数据,并获得所述读出数据的纠错码;以及
当所述存储块的擦除次数达到所述擦除阶数,遍历读取所述存储块的存储单元,并在所述纠错码的错误比特数大于纠错阈值时,减小所述读取阈值的等差增量。
5.根据权利要求4所述的一种存储器的控制方法,其特征在于,所述遍历读取所述存储块的存储单元的步骤包括:
依次读取所述存储块的存储单元,并获取所述存储单元的纠错码;以及
任一所述存储单元的所述错误比特数大于所述纠错阈值,减小所述存储单元的读取阈值,其中每次所述读取阈值的减小比例相同。
6.根据权利要求4所述的一种存储器的控制方法,其特征在于,部分所述存储单元被划分为弱页,当所述存储块的读取次数达到所述读取阈值时,读取所述弱页并获取所述弱页的纠错码,当所述纠错码的错误比特数小于等于纠错阈值,减小所述读取阈值的等差增量。
7.根据权利要求6所述的一种存储器的控制方法,其特征在于,当所述纠错码的错误比特数大于所述纠错阈值,对所述存储块进行垃圾回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311734026.4A CN117420963B (zh) | 2023-12-18 | 2023-12-18 | 一种存储器及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311734026.4A CN117420963B (zh) | 2023-12-18 | 2023-12-18 | 一种存储器及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117420963A CN117420963A (zh) | 2024-01-19 |
CN117420963B true CN117420963B (zh) | 2024-02-23 |
Family
ID=89528666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311734026.4A Active CN117420963B (zh) | 2023-12-18 | 2023-12-18 | 一种存储器及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117420963B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102915277A (zh) * | 2012-10-17 | 2013-02-06 | 邹粤林 | 提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器 |
US8694855B1 (en) * | 2011-11-02 | 2014-04-08 | Pmc-Sierra Us, Inc. | Error correction code technique for improving read stress endurance |
CN108255739A (zh) * | 2016-12-28 | 2018-07-06 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN115185468A (zh) * | 2022-07-28 | 2022-10-14 | 厦门宏芯创电子有限公司 | 存储器管理方法、存储器控制器及存储器存储装置 |
WO2023134132A1 (zh) * | 2022-01-13 | 2023-07-20 | 苏州浪潮智能科技有限公司 | 一种提高数据读取的成功率的方法、装置及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930778B2 (en) * | 2012-11-15 | 2015-01-06 | Seagate Technology Llc | Read disturb effect determination |
KR102435873B1 (ko) * | 2015-12-18 | 2022-08-25 | 삼성전자주식회사 | 스토리지 장치 및 그것의 리드 리클레임 방법 |
US11907570B2 (en) * | 2020-02-25 | 2024-02-20 | Micron Technology, Inc. | Predictive media management for read disturb |
-
2023
- 2023-12-18 CN CN202311734026.4A patent/CN117420963B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694855B1 (en) * | 2011-11-02 | 2014-04-08 | Pmc-Sierra Us, Inc. | Error correction code technique for improving read stress endurance |
CN102915277A (zh) * | 2012-10-17 | 2013-02-06 | 邹粤林 | 提高闪存芯片内部数据拷贝速度的方法、闪存存储系统及其控制器 |
CN108255739A (zh) * | 2016-12-28 | 2018-07-06 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
WO2023134132A1 (zh) * | 2022-01-13 | 2023-07-20 | 苏州浪潮智能科技有限公司 | 一种提高数据读取的成功率的方法、装置及介质 |
CN115185468A (zh) * | 2022-07-28 | 2022-10-14 | 厦门宏芯创电子有限公司 | 存储器管理方法、存储器控制器及存储器存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117420963A (zh) | 2024-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11347403B2 (en) | Extending the life of a solid state drive by using MLC flash blocks in SLC mode | |
US10102059B2 (en) | Data storage device capable of preventing a data retention fail of a nonvolatile memory device and operating method thereof | |
US10936391B2 (en) | Memory management method and storage controller | |
KR20150044753A (ko) | 데이터 저장 장치의 동작 방법 | |
CN112035060B (zh) | 一种存储介质的错误检测方法、系统及存储系统 | |
US9535611B2 (en) | Cache memory for hybrid disk drives | |
US20190391914A1 (en) | Memory management method and storage controller | |
US12001331B2 (en) | Data storage device, operation method thereof, and storage system including the same | |
KR101468432B1 (ko) | 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 | |
US11042307B1 (en) | System and method for facilitating improved utilization of NAND flash based on page-wise operation | |
US20070294588A1 (en) | Performing a diagnostic on a block of memory associated with a correctable read error | |
US20230266884A1 (en) | Operating method for storage controller and storage system including same | |
US20220214970A1 (en) | Power loss protection in memory sub-systems | |
CN110389716B (zh) | 数据存储装置及应用其的预防数据错误方法 | |
TW201526006A (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US10956064B2 (en) | Adjusting code rates to mitigate cross-temperature effects in a non-volatile memory (NVM) | |
CN110377538B (zh) | 存储器管理方法以及存储控制器 | |
CN117420963B (zh) | 一种存储器及其控制方法 | |
US20120159280A1 (en) | Method for controlling nonvolatile memory apparatus | |
KR20200121068A (ko) | 데이터 저장 장치 및 이의 동작 방법, 이를 위한 컨트롤러 | |
US11791007B2 (en) | Leakage detection circuit, nonvolatile memory device including leakage detection circuit, and memory system including nonvolatile memory device | |
CN115185468A (zh) | 存储器管理方法、存储器控制器及存储器存储装置 | |
CN111309642B (zh) | 一种存储器及其控制方法与存储系统 | |
US11194708B2 (en) | Data relocation in memory having two portions of data | |
CN105761754B (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 |