CN108549588A - 一种消除tlc闪存多片编程失败的方法 - Google Patents
一种消除tlc闪存多片编程失败的方法 Download PDFInfo
- Publication number
- CN108549588A CN108549588A CN201810259694.9A CN201810259694A CN108549588A CN 108549588 A CN108549588 A CN 108549588A CN 201810259694 A CN201810259694 A CN 201810259694A CN 108549588 A CN108549588 A CN 108549588A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- written
- flash memory
- disc
- 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
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/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/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/1068—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 in sector programmable memories, e.g. flash disk
-
- 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
Abstract
本发明公开了一种消除TLC闪存多片编程失败的方法,其特征在于将TLC闪存中预先分配若干块作为缓存块,将该缓存块强制转换为SLC模式,主机写入的数据先写入缓存块中,硬盘控制器后台在系统空闲时启动多片并行写入模式,将缓存块中的数据并行写入,当其中一个片发生写入错误时,在写入完成后需增加校验与发生错误时并行写入的其它块数据的正确性,如果发生错误需重新从缓存块中获取正确数据,并重新写入。通过开辟一部分SLC block作为闪存cache,将主机数据先写入SLC block,然后SSD空闲时,固件将SLC cache中数据启用多片编程写入TLC block,如果发生多片编程失败,可将SLC cache中源数据重新写入新物理地址,该技术可保证闪存上写入数据的正确性,且不影响主机性能。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种消除TLC闪存多片编程失败的方法。
背景技术
常见的闪存(Nand Flash),内部只有一个芯片(chip),每个chip只有一个片(plane),而有些复杂的,容量更大的闪存,内部有多个芯片,每个芯片有多个片,如图1所示。这类的闪存,往往也有更加高级的功能,比如多片编程(Multi Plane Program)功能。
闪存的芯片执行命令是串行的,即每一次只能执行一次命令(读,写或擦除),为了提升大容量(本专利特指单芯片中封装多个plane的情况)闪存的性能,颗粒厂商提供多片(本专利中以2 plane为例)编程的接口,如图2所示,SSD(固态硬盘)控制器将2个页的数据写入到闪存时需要指定芯片地址以及每个plane中的物理页地址,这样闪存就可以在一次操作中写入2个物理页的数据量,大大提升了写性能,当这2个写操作都完成后,闪存芯片向SSD控制器分别报告两个plane中物理页的写结果状态(成功或失败)。
当前TLC(Trinary-Level Cell)闪存的多片编程功能存在一个问题,当其中一个plane存在坏块时,多片编程后芯片向SSD控制器报告一个写失败(坏块所在的plane)和一个写成功的状态,但实际上两个plane中的物理页上的数据都写错了。
SSD控制器启用多片编程功能,为TLC闪存指定了每个plane中的物理页后,闪存芯片为这2个物理页一起做写(program)操作,写完后向SSD控制器分别上报结果状态。多片编程的写操作本质为闪存中的物理页不断充电子的过程,见图3,直到充入的电子量达到预期值(该值由写入数据决定,该内容不是本专利重点,略过)。但是,如果其中一个物理页处于坏块(Block,闪存擦除的最小单位)中,如图4,假设选择Plane0中物理页2和plane1中物理页3作为多片编程的目标地址,且物理页2所在的块为坏块,那么闪存对物理页2和3会持续尝试注入电子,然后检查电子量是否达到预期值,由于物理页所在块为坏块,其电子量无法注入,闪存会在一定时间T内一直尝试注入电子,同时由于多片编程的特性,物理页3也会被持续注入电子,即使达到了物理页3的预期值后也不会停止,所以这种情况下物理页3会发生过充现象,但是时间T后,闪存芯片向SSD控制器上报的结果为Plane0的物理页2写失败、Plane1的物理页3写成功,这与实际结果不符。SSD控制器获得结果后错误处理任务会将Plane0的物理页2标记为坏块,然后将源数据重写到另一个物理地址,但是Plane1的物理页3上报成功状态,所以SSD控制器不会做错误处理,但是闪存中的数据是错的,后续读该数据会发生错误,且纠错算法很大概率上是纠不回来的。这个问题可以说是TLC闪存本身的设计缺陷。
发明内容
针对以上缺陷,本发明目的在于如何解决在多片并行编程时出现一个坏块会造成并行编程的其它正常块也出现编程失败的问题。
为了实现上述目的,本发明提供了一种消除TLC闪存多片编程失败的方法,其特征在于将TLC闪存中预先分配若干块作为缓存块,将该缓存块强制转换为SLC模式,主机写入的数据先写入缓存块中,硬盘控制器后台在系统空闲时启动多片并行写入模式,将缓存块中的数据并行写入,当其中一个片发生写入错误时,在写入完成后需增加校验与发生错误时并行写入的其它块数据的正确性,如果发生错误需重新从缓存块中获取正确数据,并重新写入。
所述的消除TLC闪存多片编程失败的方法,其特征在于增加记录缓存块被擦写的次数,当被擦写次数达到预先设定的阀值时,重新申请新的TLC存储块转化为新的缓存块。
本发明通过开辟一部分SLC block作为闪存cache,将主机数据先写入SLC block,然后SSD空闲时,固件将SLC cache中数据启用多片编程写入TLC block,如果发生多片编程失败,可将SLC cache中源数据重新写入新物理地址,该技术可保证闪存上写入数据的正确性,且不影响主机性能。
附图说明
图1是闪存的组成示意图;
图2是存在多片的闪存物理机构示意图;
图3是闪存物理页写入过程示意图;
图4是多片编程出现编程失败的示意图;
图5是增加SLC缓存编程示意图;
图6是SLC block数据搬移流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
TLC的多片编程功能能有效提升SSD写性能,所以SSD必须使用该功能,那么固件需要采取一些特殊处理来解决多片编程的缺陷。由上文所述,该缺陷发生在物理页恰巧处于坏块的情况下,这种情况在实际应用中发生的概率非常小,所以基本上不影响正常使用时的性能。
根据TLC闪存的特性,可以使TLC block开成SLC模式来用,SLC模式具有更快的读写性能(是TLC模式的2倍以上)、更长久的生命周期(可擦除次数是TLC模式的十倍以上)且更稳定(不容易变成坏块),只不过容量是TLC模式的三分之一。
我们选出10个TLC block开成SLC模式,把它们当做Nand缓存(cache),如图5,SSD控制器首先把主机发下的数据写到Nand缓存中,由于SLC模式的block具有更快的写速度,所以该权利要求还能更进一步提升主机的写性能(写数据量不密集的情形下)。
在SSD空闲时(无主机请求),SSD启动内部任务将Nand缓存中的数据读出来(SLC模式,读性能也很快),然后启用TLC的多片编程功能将数据写到TLC block中,该过程与现有技术描述的一样。此过程有可能遇到多片编程失败的情况,则对于报写失败的plane中的物理页,SSD固件重新选择新的物理地址将SLC block中源数据(正确的)写进去,对于另一个报成功的物理页,SSD固件需要读一下该数据,如果数据没出错,则结束任务,否则也需要将SLC block中源数据写到新的物理地址。由于该数据转移任务是在系统空闲时进行,所以不会影响主机工作时性能,且能解决多片编程失败的问题。
SSD固件内部搬移数据的流程图见图6。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (2)
1.一种消除TLC闪存多片编程失败的方法,其特征在于将TLC闪存中预先分配若干块作为缓存块,将该缓存块强制转换为SLC模式,主机写入的数据先写入缓存块中,硬盘控制器后台在系统空闲时启动多片并行写入模式,将缓存块中的数据并行写入,当其中一个片发生写入错误时,在写入完成后需增加校验与发生错误时并行写入的其它块数据的正确性,如果发生错误需重新从缓存块中获取正确数据,并重新写入。
2.根据权利要求1所述的消除TLC闪存多片编程失败的方法,其特征在于增加记录缓存块被擦写的次数,当被擦写次数达到预先设定的阀值时,重新申请新的TLC存储块转化为新的缓存块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810259694.9A CN108549588A (zh) | 2018-03-27 | 2018-03-27 | 一种消除tlc闪存多片编程失败的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810259694.9A CN108549588A (zh) | 2018-03-27 | 2018-03-27 | 一种消除tlc闪存多片编程失败的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108549588A true CN108549588A (zh) | 2018-09-18 |
Family
ID=63517393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810259694.9A Pending CN108549588A (zh) | 2018-03-27 | 2018-03-27 | 一种消除tlc闪存多片编程失败的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108549588A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471863A (zh) * | 2019-08-13 | 2019-11-19 | 深圳忆联信息系统有限公司 | 基于固态硬盘的数据写入读取方法、装置和计算机设备 |
CN111026675A (zh) * | 2019-12-06 | 2020-04-17 | 华中科技大学 | 一种高效的闪存数据刷新方法及基于闪存的固态硬盘 |
CN111356980A (zh) * | 2020-02-20 | 2020-06-30 | 长江存储科技有限责任公司 | 对多存储片存储器件进行编程的方法 |
CN111580757A (zh) * | 2020-05-14 | 2020-08-25 | 江苏芯盛智能科技有限公司 | 数据写入方法、系统和固态硬盘 |
CN114546294A (zh) * | 2022-04-22 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、系统及相关组件 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483067A (zh) * | 2008-01-11 | 2009-07-15 | 群联电子股份有限公司 | 快闪存储器数据写入方法及其快闪存储器控制器 |
CN105808371A (zh) * | 2014-12-31 | 2016-07-27 | 深圳市硅格半导体有限公司 | 数据备份与恢复方法、控制芯片及存储装置 |
CN106843762A (zh) * | 2017-01-17 | 2017-06-13 | 北京联想核芯科技有限公司 | 管理存储区域的方法及固态硬盘 |
CN106873912A (zh) * | 2017-02-16 | 2017-06-20 | 郑州云海信息技术有限公司 | Tlc芯片固态硬盘的动态分区存储方法及装置、系统 |
CN107291381A (zh) * | 2017-05-18 | 2017-10-24 | 记忆科技(深圳)有限公司 | 一种固态硬盘动态加速区的实现方法及固态硬盘 |
CN107357534A (zh) * | 2017-07-18 | 2017-11-17 | 深圳市德名利电子有限公司 | 一种闪存块模式的动态切换方法及系统 |
-
2018
- 2018-03-27 CN CN201810259694.9A patent/CN108549588A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483067A (zh) * | 2008-01-11 | 2009-07-15 | 群联电子股份有限公司 | 快闪存储器数据写入方法及其快闪存储器控制器 |
CN105808371A (zh) * | 2014-12-31 | 2016-07-27 | 深圳市硅格半导体有限公司 | 数据备份与恢复方法、控制芯片及存储装置 |
CN106843762A (zh) * | 2017-01-17 | 2017-06-13 | 北京联想核芯科技有限公司 | 管理存储区域的方法及固态硬盘 |
CN106873912A (zh) * | 2017-02-16 | 2017-06-20 | 郑州云海信息技术有限公司 | Tlc芯片固态硬盘的动态分区存储方法及装置、系统 |
CN107291381A (zh) * | 2017-05-18 | 2017-10-24 | 记忆科技(深圳)有限公司 | 一种固态硬盘动态加速区的实现方法及固态硬盘 |
CN107357534A (zh) * | 2017-07-18 | 2017-11-17 | 深圳市德名利电子有限公司 | 一种闪存块模式的动态切换方法及系统 |
Non-Patent Citations (1)
Title |
---|
曾峦等: "《侦察图像获取与融合技术》", 31 May 2015, 国防工业出版社 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471863A (zh) * | 2019-08-13 | 2019-11-19 | 深圳忆联信息系统有限公司 | 基于固态硬盘的数据写入读取方法、装置和计算机设备 |
CN111026675A (zh) * | 2019-12-06 | 2020-04-17 | 华中科技大学 | 一种高效的闪存数据刷新方法及基于闪存的固态硬盘 |
CN111026675B (zh) * | 2019-12-06 | 2022-02-15 | 华中科技大学 | 一种高效的闪存数据刷新方法及基于闪存的固态硬盘 |
CN111356980A (zh) * | 2020-02-20 | 2020-06-30 | 长江存储科技有限责任公司 | 对多存储片存储器件进行编程的方法 |
CN111580757A (zh) * | 2020-05-14 | 2020-08-25 | 江苏芯盛智能科技有限公司 | 数据写入方法、系统和固态硬盘 |
CN111580757B (zh) * | 2020-05-14 | 2022-10-14 | 江苏芯盛智能科技有限公司 | 数据写入方法、系统和固态硬盘 |
CN114546294A (zh) * | 2022-04-22 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、系统及相关组件 |
CN114546294B (zh) * | 2022-04-22 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种固态硬盘读方法、系统及相关组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775178B2 (en) | Data storage systems and methods for improved data relocation based on read-level voltages associated with error recovery | |
CN108549588A (zh) | 一种消除tlc闪存多片编程失败的方法 | |
US9715939B2 (en) | Low read data storage management | |
JP5418808B2 (ja) | 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置 | |
US9280460B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9864545B2 (en) | Open erase block read automation | |
US9176865B2 (en) | Data writing method, memory controller, and memory storage device | |
US8225050B2 (en) | Memory storage device and a control method thereof | |
US9213629B2 (en) | Block management method, memory controller and memory stoarge apparatus | |
CN111045593B (zh) | 用来进行读取加速的方法以及数据存储装置及其控制器 | |
US10437520B2 (en) | Method for performing writing management in a memory device, and associated memory device and controller thereof | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
KR20140133427A (ko) | 플래시 메모리에 저장된 데이터를 관리하는 방법 및 관련 메모리 장치 및 제어기 | |
TW201703052A (zh) | 平均磨損方法、記憶體儲存裝置及記憶體控制電路單元 | |
CN106445401B (zh) | 表格更新方法、存储器储存装置及存储器控制电路单元 | |
TW201344434A (zh) | 記憶體格式化方法、記憶體控制器及記憶體儲存裝置 | |
CN114968096A (zh) | 一种存储器的控制方法、存储器与存储系统 | |
US11068201B2 (en) | Flash memory controller, method for managing flash memory module and associated electronic device | |
US9501397B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
CN106354651B (zh) | 平均磨损方法、存储器控制电路单元及存储器储存装置 | |
CN105513635B (zh) | 编程方法、存储器存储装置及存储器控制电路单元 | |
US20200097215A1 (en) | Adaptive solid state device management based on data expiration time | |
KR20120070408A (ko) | 블록을 관리하는 비휘발성 메모리 장치의 제어 방법 | |
JP2014225196A (ja) | 半導体記憶装置およびその制御方法 | |
US8713242B2 (en) | Control method and allocation structure for flash memory device |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180918 |