CN111399751A - 闪存控制器、管理闪存模块的方法及相关的电子装置 - Google Patents
闪存控制器、管理闪存模块的方法及相关的电子装置 Download PDFInfo
- Publication number
- CN111399751A CN111399751A CN201910389135.4A CN201910389135A CN111399751A CN 111399751 A CN111399751 A CN 111399751A CN 201910389135 A CN201910389135 A CN 201910389135A CN 111399751 A CN111399751 A CN 111399751A
- Authority
- CN
- China
- Prior art keywords
- blocks
- flash memory
- data
- memory controller
- powered
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 30
- 239000002356 single layer Substances 0.000 claims abstract description 31
- 239000002355 dual-layer Substances 0.000 claims description 24
- 239000010410 layer Substances 0.000 claims description 12
- 230000002159 abnormal effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000007787 solid Substances 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/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
- 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种闪存控制器,其中所述闪存控制器系用来存取闪存模块,所述闪存模块包括了多个第一区块以及多个第二区块,且所述闪存控制器包括有用来存储一程序码的只读存储器以及微处理器。当所述闪存控制器上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,所述微处理器仅会将所述数据写入至所述多个第一区块中;以及直到所述闪存控制器上电后所写入的第一区块的数量高于临界值时,所述微处理器才会将后续数据写入至所述多个第二区块中。通过本发明,每次上电时所需要写入的单层式存储区块的数量可以根据先前操作来动态地决定,以更符合记忆装置的真实使用状况。
Description
技术领域
本发明关于闪存控制器。
背景技术
目前的闪存模块通常会具有多种不同型式的区块,例如单层式存储(Single-Level Cell,SLC)、双层式存储(Multi-Level Cell,MLC)区块、三层式存储(Triple-LevelCell,TLC)区块或是四层式存储(Quad-Level Cell,QLC)区块中的其中两种,以供有效率地进行读写操作。传统上,闪存控制器在将数据写入至闪存模块时,可以先将数据写入到单层式存储区块中,之后再将多个单层式存储区块中的有效数据搬移到双层式存储区块、三层式存储区块或是四层式存储区块中,此方法的好处是一开始数据所写入的是稳定性高且速度快的单层式存储区块,但缺点是后续需要另外花时间来将数据搬移至数据存储密度较高区块中。在另一传统方法中,闪存控制器在将数据写入至闪存模块时,可以先直接将数据写入到双层式存储区块或是三层式存储区块,此方法的好处是节省了后续数据搬移的时间,但数据在写入的速度会比较慢,而且在目前立体闪存架构中的双层式存储区块、三层式存储区块或是四层式存储区块的数据稳定性并不好,因此若是遭遇到不正常断电、或甚至是连续的不正常断电的情形,除了造成正在写入的数据的损坏之外,更会影响到之前已经成功完成写入的数据,因此造成许多后续数据处理上的问题。
发明内容
因此,本发明的目的之一在于提出一种闪存控制器,其可以在闪存上电后,先将数据写入到单层式存储区块中,之后再选择性地将数据写入到双层式存储区块、三层式存储区块或是四层式存储区块中,以有效率且稳定地完成闪存的写入操作。
在本发明的一个实施例中,公开了一种闪存控制器,其中所述闪存控制器系用来存取一闪存模块,所述闪存模块包括了多个第一区块以及多个第二区块,且所述闪存控制器包括有用来存储一程序码的一只读存储器以及一微处理器。当所述闪存控制器上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,所述微处理器仅会将所述数据写入至所述多个第一区块中;以及直到所述闪存控制器上电后所写入的第一区块的数量高于一临界值时,所述微处理器才会将后续数据写入至所述多个第二区块中。
在本发明的另一个实施例中,公开了一种管理一闪存模块的方法,其中所述闪存模块包括了多个第一区块以及多个第二区块,以及所述方法包括有:当所述闪存模块上电时,仅将数据写入至所述多个第一区块中;以及直到所述闪存模块上电后所写入的第一区块的数量高于一临界值时,才会将后续数据写入至所述多个第二区块中。
在本发明的另一个实施例中,公开了一种包括一闪存模块以及一闪存控制器的电子装置,其中所述闪存模块包括多个第一区块以及多个第二区块,且所述闪存控制器用来存取所述闪存模块。当所述电子装置上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,所述闪存控制器仅会将所述数据写入至所述多个第一区块中;以及直到所述电子装置上电后所述闪存控制器所写入的第一区块的数量高于一临界值时,所述闪存控制器才会将后续数据写入至所述多个第二区块中。
附图说明
图1为依据本发明一实施例的一种记忆装置的示意图。
图2为依据本发明一实施例的闪存模块中一区块的示意图。
图3所示为根据本发明一实施例的闪存模块所包括的多个区块的示意图。
图4为根据本发明一第一实施例的管理闪存模块的流程图。
图5为根据本发明一实施例的决定临界值的流程图。
图6为决定特定区块中无法成功解码的数据页以及不安全数据页的示意图。
图7为将双层式存储区块中的不安全数据页搬移至单层式存储区块的示意图。
图8为根据本发明一第一实施例的管理闪存模块的流程图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
130 主装置
132 编码器
134 解码器
200 区块
202 浮闸晶体管
310_1~310_P 单层式存储区块
320_1~320_Q 双层式存储区块
400~410、500~522、800~812 步骤
BL1、BL2、BL3 位线
P0~P10、P36、P44~P47 数据页
WL0~WL2、WL4~WL6 字线
具体实施方式
图1为依据本发明一实施例的一种记忆装置100的示意图。记忆装置100包括有一闪存(Flash Memory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包括一微处理器112、一只读存储器(Read OnlyMemory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器112M系用来存储一程序码112C,而微处理器112则用来执行程序码112C以控制对闪存模块120的存取(Access)。控制逻辑114包括了一编码器132以及一解码器134,其中编码器132用来对写入到闪存模块120中的数据进行编码以产生对应的校验码(或称,错误更正码(ErrorCorrection Code),ECC),而解码器134用来将从闪存模块120所读出的数据进行解码。
于典型状况下,闪存模块120包括了多个闪存芯片,而每一个闪存芯片包括多个区块(block),而闪存控制器110对闪存模块120进行抹除数据运作系以区块为单位来进行。另外,一区块可记录特定数量的数据页(page),其中闪存控制器110对闪存模块120进行写入数据的运作系以数据页为单位来进行写入。在本实施例中,闪存模块120为一立体NAND型闪存(3D NAND-type flash)模块。
实作上,通过微处理器112执行程序码112C的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)130沟通。缓冲存储器116系以随机存取存储器(Random Access Memory,RAM)来实施。例如,缓冲存储器116可以是静态随机存取存储器(Static RAM,SRAM),但本发明不限于此。
在一实施例中,记忆装置100可以是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡),且主装置130为一可与记忆装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,记忆装置100可以是固态硬盘或符合通用闪存存储(Universal Flash Storage,UFS)或嵌入式多媒体记忆卡(Embedded Multi Media Card,EMMC)规格的嵌入式存储装置,以设置在一电子装置中,例如设置在手机、笔记本电脑、桌面计算机的中,而此时主装置130可以是所述电子装置的一处理器。
图2为依据本发明一实施例的闪存模块120中一区块200的示意图,其中闪存模块120为立体NAND型闪存。如图2所示,区块200包括了多个记忆单元(例如图标的浮闸晶体管202或是其他的电荷捕捉(charge trap)组件),其通过多条位线(图示仅绘示了BL1~BL3)及多条字线(例如图示WL0~WL2、WL4~WL6)来构成立体NAND型闪存架构。在图2中,以最上面的一个平面为例,字线WL0上的所有浮闸晶体管构成了至少一数据页,字线WL1上的所有浮闸晶体管构成了另至少一数据页,而字线WL2的所有浮闸晶体管构成了再另至少一数据页…以此类堆。此外,根据闪存写入方式的不同,字线WL0与数据页(逻辑数据页)之间的定义也会有所不同,详细来说,当使用单层式存储的方式写入时,字线WL0上的所有浮闸晶体管仅对应到单一逻辑数据页;当使用双层式存储的方式写入时,字线WL0上的所有浮闸晶体管对应到两个逻辑数据页;当使用三层式存储的方式写入时,字线WL0上的所有浮闸晶体管对应到三个逻辑数据页;以及当使用四层式存储的方式写入时,字线WL0上的所有浮闸晶体管对应到四个逻辑数据页。由于本技术领域中具有通常知识者应能了解立体NAND型闪存的结构以及字线及数据页之间的关系,故相关的细节在此不予赘述。
在图2所示的架构中,会将多条字线定义为一字线组,而所述字线组会共同具有部分的控制电路,进而导致当数据写入到所述字线组的一条字在线的浮闸晶体管发生失败时(写入失败),可能会连带导致所述字线组的其他字在线的浮闸晶体管的数据发生错误。在一实施例中,位于同一个平面上的字线会被设定为一字线组,参考图2,假设同一个平面上有四个位线,则字线WL0~WL3会被归于第一字线组,而字线WL4~WL7会被归于第二字线组…以此类推。假设闪存控制器110将数据写入到第一字线组的数据页中时系循序将数据写入到字线WL0、WL1、WL2、WL3中的浮闸晶体管202,而假设字线WL0、WL1、WL2上的数据都成功写入,但是当数据写入字线WL3时发生写入错误,则可能会连带使得字线WL0、WL1、WL2上原本写入成功的数据也发生错误。此外,假设闪存控制器110将数据写入到第二字线组的数据页中时系循序将数据写入到字线WL4、WL5、WL6、WL7中的浮闸晶体管202,而假设字线WL4上在写入数据的时候发生错误,则也会连带使得字线WL5、WL6、WL7不稳定而不适合再继续写入数据。
图3所示为根据本发明一实施例的闪存模块120所包括的多个区块的示意图。如图3所示,闪存模块120包括了多个第一区块(在本实施例中系以单层式存储区块310_1~310_P为例)以及多个第二区块(在本实施例中系以双层式存储区块320_1~320_Q为例)。需注意的是,图2仅是用来方便后续的说明,在其他的实施例中,多个第二区块亦可以三层式存储区块或是四层式存储区块来实作。
图4为根据本发明一第一实施例的管理闪存模块120的流程图。如图4所示,在流程400中,闪存控制器110以及闪存模块120上电,且进行相关的初始化操作。在步骤402中,微处理器112决定出一临界值N,其中临界值N系用来指出闪存模块120中有多少个单层式存储区块需要被优先用来存储数据。在步骤404中,闪存控制器110判断是否有接收到写入命令(例如,来自主装置130的写入命令,或是记忆装置100内部的写入操作),若有,流程进入到步骤406。在步骤406中,微处理器112判断自步骤400的记忆装置100上电开始,闪存控制器110将数据写入至多少个单层式存储区块中,若是已写入的单层式存储区块的数量高于N时(或是闪存控制器110已经写满了N个单层式存储区块),则流程进入步骤408且微处理器112将数据写入至双层式存储区块320_1~320_Q中;若是已写入的单层式存储区块的数量小于N时(或是闪存控制器110尚未写满第N个单层式存储区块),则流程进入步骤410且微处理器112将数据写入至单层式存储区块310_1~310_P中。
举一例子来说,假设临界值N为6,则闪存控制器110需要将数据写入到闪存模块120中时,假设单层式存储区块310_1~320_6都是空白区块的情形下,闪存控制器110仅会将数据依序地写入到单层式存储区块310_1~320_6中,而不会对双层式存储区块320_1~320_Q进行任何的写入操作。直到单层式存储区块310_1~320_6都写满之后,闪存控制器110才会将后续的数据写入至双层式存储区块320_1~320_Q中。
在图4所示的实施例中,由于记忆装置100上电时所需要写入的通常是数据较为重要的系统数据,因此,由于这些重要数据仅会被写入到单层式存储区块310_1~310_P中,因此可以让重要数据以较快速的方式写入,且数据的稳定性也比较高。另外,等到单层式存储区块的写入数量到达临界值N之后,闪存控制器110可以将数据写入到存储密度较高的双层式存储区块320_1~320_Q,以增进闪存模块120的利用率。
在一实施例中,图4所示的步骤402中所决定的临界值N可以是一个变动值,且微处理器112可以根据闪存控制器110在上电前所设定的一前一临界值、以及闪存控制器110在上电前一操作区间内所写入的一区块总数(例如,闪存模块120在前一次上电到断电的过程中所被写入的区块总数),以产生临界值N。举例来说,参考图5所示的流程图,决定临界值N的流程如下所述。
步骤500:流程开始。
步骤502:取得闪存控制器110在上电前所设定之前一临界值N’、以及闪存控制器110在上电前一操作区间内所写入的一区块总数M。
步骤504:判断区块总数M是否小于下限值Vmin,若是,则流程进入步骤506;若否,流程进入步骤508。
步骤506:设定临界值N为下限值Vmin。
步骤508:判断区块总数M是否大于上限值Vmax,若是,则流程进入步骤510;若否,流程进入步骤512。
步骤510:设定临界值N为上限值Vmax。
步骤512:判断区块总数M是否大于前一临界值N’,若是,则流程进入步骤514;若否,流程进入步骤516。
步骤514:设定临界值N为区块总数M。
步骤516:设定临界值N为前一临界值N’减去1。
步骤518:判断N是否小于下限值Vmin,若是,则流程进入步骤520;若否,流程进入步骤522。
步骤520:设定临界值N为下限值Vmin。
步骤522:设定临界值N为步骤516所决定的临界值N。
举一例子来说明图5的实施例,假设临界值N的下限值Vmin为2、上限值Vmax为10、闪存控制器110在上电前所设定的前一临界值N’为6,则若是闪存控制器110在上电前一操作区间内所写入的区块总数M为0~2的任意数值,则微处理器112会根据步骤506或步骤520所述以将临界值N设为下限值Vmin(亦即“2”);若是闪存控制器110在上电前一操作区间内所写入的区块总数M为10或以上的任意数值,则微处理器112会根据步骤510所述以将临界值N设为上限值Vmax(亦即“10”);若是闪存控制器110在上电前一操作区间内所写入的区块总数M为7~10的任一者,则微处理器112会根据步骤514所述以将临界值N设为M;以及若是闪存控制器110在上电前一操作区间内所写入的区块总数M为2~5的任一者,则微处理器112会根据步骤516所述以将临界值N设为(N’-1)(亦即“5”)。
通过图5的流程,可以确实根据记忆装置100的实际操作状态来决定出最适合的临界值N,亦即若是前一次记忆装置100上电后所写入的区块数量很多,则增加临界值N以使得记忆装置100在下一次开机时优先使用较多的单层式区块来进行数据写入;而若是前一次记忆装置100上电后所写入的区块数量较少,则减少临界值N以使得记忆装置100在下一次开机时使用较少的单层式区块来进行数据写入。
需注意的是,图3所示的实施例特别可以应用在记忆装置100在遭遇到不正常断电后重新上电后的情形,在一实施例中,图3所示的流程可以仅在记忆装置100在遭遇到不正常断电后重新上电后进行。举例来说,参考图6,假设闪存控制器110在将数据写入至双层式存储区块320_1的过程中发生不正常断电(例如,断电后回复(power off recovery,POR)或是突发断电后回复(sudden power off recovery,SPOR),则在闪存控制器110上电之后,闪存控制器110便会判断是否遭遇到不正常断电,并在判断有遭遇到不正常断电的情形下执行图3所示的流程。
在一实施例中,在闪存控制器110以及闪存模块120在上电时,会先对在上电前最后一个写入的区块进行扫描以判断数据质量,并据以判断先前是否有发生不正常断电,例如根据双层式存储区块320_1中每一个数据页的数据是否可以成功解码,以判断闪存控制器110之前是否曾遭遇到不正常断电。在图6所示的实施例中,由于双层式存储区块320_1中数据页P45无法被成功解码,故闪存控制器110便可判断之前曾遭遇到不正常断电。
在另一实施例中,当记忆装置100在正常关机/断电的情形下,闪存控制器110会将存储在缓冲存储器116中的多个暂存表格及数据存储到闪存模块120中,且其中包括了一个用来标示记忆装置100是否正常关机的标签(flag),因此,闪存控制器110在上电后可以通过读取存储在闪存模块120中的上述卷标来判断记忆装置100之前是否有遭遇到不正常断电的情形,例如,当上述标签并未被正确设定时便判断先前有遭遇到不正常断电。
另一方面,在图6的实施例中,由于双层式存储区块320_1有遭遇到不正常断电,因此有些数据页中的数据会变的不稳定,而可能造成后续的数据遗失。在一例子中,与无法解码的数据页P45位于同一个字线组的其余数据页P36~P44以及P46~P47都会变得不稳定,因此闪存控制器110便需要将这些不稳定的数据页中的数据搬移至其他的区块,参考图7,由于闪存控制器110在上电之后一开始仅能将数据写入到单层式存储区块中,故闪存控制器110可以将双层式存储区块320_1中数据页P36~P44内的数据搬移到单层式存储区块310_1的数据页P0~P8。此外,假设数据页P46~P47为空白数据页,但由于与数据页P45归属于同一个字线组的数据页都是不安全数据页,故微处理器112会将这些空白数据页P46~P47及/或下一个字线组的所有数据页都写入无效数据(dummy data),以使得整个双层式存储区块320_1的数据质量能够更稳定。
图8为根据本发明一第二实施例的管理闪存模块120的流程图。如图8所示,在流程800中,闪存控制器110以及闪存模块120上电,且进行相关的初始化操作。在步骤802中,微处理器112决定出临界值N,其中临界值N系用来指出闪存模块120中有多少的单层式存储区块需要被优先用来存储数据。在步骤804中,闪存控制器110判断是否有接收到写入命令(例如,来自主装置130的写入命令,或是记忆装置100内部的写入操作),若有,流程进入到步骤806。在步骤806中,微处理器112判断自步骤800的记忆装置100上电开始,闪存控制器110将数据写入至多少个单层式存储区块中,若是已写入的单层式存储区块的数量高于N时(或是闪存控制器110已经写满了N个单层式存储区块),则流程进入步骤808;若是已写入的单层式存储区块的数量小于N时(或是闪存控制器110尚未写满第N个单层式存储区块),则流程进入步骤812。在步骤808中,微处理器112判断要写入至闪存模块120的数据量大小,若是此数据被判断为高数据量时(例如,很多个数据页大小),流程进入步骤810且微处理器112将数据写入至双层式存储区块320_1~320_Q中;若是此数据被判断为低数据量时(例如、4仟位组),流程进入步骤812且微处理器112将数据写入至单层式存储区块310_1~310_P中。
在图4所示的实施例中,由于记忆装置100上电时所需要写入的通常是数据较为重要的系统数据,因此,由于这些重要数据仅会被写入到单层式存储区块310_1~320_P中,因此可以让重要数据以较快速的方式写入,且数据的稳定性也比较高。另外,等到单层式存储区块的写入数量到达临界值N之后,闪存控制器110可以根据数据量大小来将低数据量的部分写入至单层式存储区块310_1~310_P以避免数据页空间的浪费,并将高数据量的部分写入至双层式存储区块320_1~320_Q以增进闪存模块120的利用率。
图8所示的步骤802中所决定的临界值N可以是一个变动值,其产生方式可参考图5所示的实施例。
简要归纳本发明,在本发明的闪存控制器及相关的管理方法中,其可以在闪存上电后,先将数据写入到单层式存储区块中,之后再选择性地将数据写入到双层式存储区块、三层式存储区块或是四层式存储区块中,以有效率且稳定地完成闪存的写入操作。此外,每次上电时所需要写入的单层式存储区块的数量可以根据先前操作来动态地决定,以更符合记忆装置的真实使用状况。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种闪存控制器,用来存取一闪存模块,所述闪存模块包括了多个第一区块以及多个第二区块,所述闪存控制器的特征在于,包括有:
一只读存储器,用来存储一程序码;以及
一微处理器,用来执行所述程序码以控制对所述闪存模块的存取;
其中当所述闪存控制器上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,所述微处理器仅会将所述数据写入至所述多个第一区块中;以及直到所述闪存控制器上电后所写入的第一区块的数量高于一临界值时,所述微处理器才会将后续数据写入至所述多个第二区块中。
2.如权利要求1所述的闪存控制器,其特征在于,所述多个第一区块为单层式存储区块,且所述多个第二区块为双层式存储区块、三层式存储区块或是四层式存储区块。
3.如权利要求1所述的闪存控制器,其特征在于,直到所述闪存控制器上电后所写入的第一区块的数量高于所述临界值时,所述微处理器根据所述后续数据的数据量以决定将所述后续数据写入至所述多个第一区块或是所述多个第二区块中。
4.如权利要求3所述的闪存控制器,其特征在于,当所述后续数据被判断为低数据量时,所述微处理器将所述后续数据写入至所述多个第一区块;以及当所述后续数据被判断为高数据量时,所述微处理器将所述后续数据写入至所述多个第二区块。
5.如权利要求4所述的闪存控制器,其特征在于,所述多个第一区块为单层式存储区块,且所述多个第二区块为双层式存储区块、三层式存储区块或是四层式存储区块。
6.如权利要求1所述的闪存控制器,其特征在于,若是所述闪存控制器在上电之前最后一个写入的区块为所述多个第二区块中的一特定第二区块,且所述特定区块尚有剩余的数据页可供写入,则当所述闪存控制器上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,微处理器仍然会将所述数据写入至所述多个第一区块中。
7.如权利要求6所述的闪存控制器,其特征在于,在所述闪存控制器在上电之前系发生不正常断电,且当所述闪存控制器上电时,所述微处理器将所述特定第二区块中可以成功解码的至少一部份数据页的数据搬移至所述暂存区块中,并将与无法成功解码的数据页属于同一字线组或是相邻字线组的空白数据页写入无效数据。
8.如权利要求1所述的闪存控制器,其特征在于,所述临界值系为一变动值。
9.如权利要求8所述的闪存控制器,其特征在于,所述微处理器根据所述闪存控制器在上电前所设定的一前一临界值、以及所述闪存控制器在上电前一操作区间内所写入的一区块总数,以产生所述临界值。
10.如权利要求9所述的闪存控制器,其特征在于,若是所述区块总数高于所述前一临界值,则所述微处理器设定所述临界值高于所述前一临界值;以及若是所述区块总数低于所述前一临界值,则所述微处理器设定所述临界值低于所述前一临界值。
11.如权利要求10所述的闪存控制器,其特征在于,所述临界值具有一上限值以及一下限值,且若是所述区块总数高于所述前一临界值,且所述区块总数低于所述上限值,则所述微处理器设定所述临界值为所述区块总数;以及若是所述区块总数高于所述前一临界值,且所述区块总数高于所述上限值,则所述微处理器设定所述临界值为所述上限值。
12.如权利要求10所述的闪存控制器,其特征在于,所述临界值具有一上限值以及一下限值,且若是所述区块总数低于所述前一临界值,则所述微处理器设定所述临界值低于所述前一临界值,但所述临界值不低于所述下限值。
13.一种管理一闪存模块的方法,所述闪存模块包括了多个第一区块以及多个第二区块,所述方法的特征在于,包括有:
当所述闪存模块上电时,仅将数据写入至所述多个第一区块中;以及
直到所述闪存模块上电后所写入的第一区块的数量高于一临界值时,才会将后续数据写入至所述多个第二区块中。
14.如权利要求13所述的方法,其特征在于,所述多个第一区块为单层式存储区块,且所述多个第二区块为双层式存储区块、三层式存储区块或是四层式存储区块。
15.如权利要求13所述的方法,其特征在于,直到所述闪存模块上电后所写入的第一区块的数量高于所述临界值时,才会将后续数据写入至所述多个第二区块中的步骤包括有:
直到所述闪存模块上电后所写入的第一区块的数量高于所述临界值时,根据所述后续数据的数据量以决定将所述后续数据写入至所述多个第一区块或是所述多个第二区块中。
16.如权利要求15所述的方法,其特征在于,根据所述后续数据的数据量以决定将所述后续数据写入至所述多个第一区块或是所述多个第二区块中的步骤包括有:
当所述后续数据被判断为低数据量时,将所述后续数据写入至所述多个第一区块;以及
当所述后续数据被判断为高数据量时,将所述后续数据写入至所述多个第二区块。
17.一种电子装置,其特征在于,包括有:
一闪存模块,包括多个第一区块以及多个第二区块;以及
一闪存控制器,用来存取所述闪存模块;
其中当所述电子装置上电时,若是所述闪存控制器需要将数据写入至所述闪存模块时,所述闪存控制器仅会将所述数据写入至所述多个第一区块中;以及直到所述电子装置上电后所述闪存控制器所写入的第一区块的数量高于一临界值时,所述闪存控制器才会将后续数据写入至所述多个第二区块中。
18.如权利要求17所述的电子装置,其特征在于,所述多个第一区块为单层式存储区块,且所述多个第二区块为双层式存储区块、三层式存储区块或是四层式存储区块。
19.如权利要求17所述的电子装置,其特征在于,直到所述电子装置上电后所述闪存控制器所写入的第一区块的数量高于所述临界值时,所述闪存控制器根据所述后续数据的数据量以决定将所述后续数据写入至所述多个第一区块或是所述多个第二区块中。
20.如权利要求19所述的电子装置,其特征在于,当所述后续数据被判断为低数据量时,所述闪存控制器将所述后续数据写入至所述多个第一区块;以及当所述后续数据被判断为高数据量时,所述闪存控制器将所述后续数据写入至所述多个第二区块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108100005A TWI734063B (zh) | 2019-01-02 | 2019-01-02 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
TW108100005 | 2019-01-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111399751A true CN111399751A (zh) | 2020-07-10 |
CN111399751B CN111399751B (zh) | 2023-07-18 |
Family
ID=71122927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910389135.4A Active CN111399751B (zh) | 2019-01-02 | 2019-05-10 | 闪存控制器、管理闪存模块的方法及相关的电子装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11068201B2 (zh) |
CN (1) | CN111399751B (zh) |
TW (1) | TWI734063B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403032B2 (en) | 2020-09-10 | 2022-08-02 | Micron Technology, Inc. | Data transfer management within a memory device having multiple memory regions with different memory densities |
US11733914B2 (en) | 2021-10-29 | 2023-08-22 | Western Digital Technologies, Inc. | Direct write operation for quad-level cell based data storage devices |
US11714565B2 (en) * | 2021-11-18 | 2023-08-01 | Western Digital Technologies, Inc. | Block budget enhancement mechanisms for memory |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327591A1 (en) * | 2008-06-25 | 2009-12-31 | Stec, Inc. | Slc-mlc combination flash storage device |
CN102591748A (zh) * | 2011-12-29 | 2012-07-18 | 记忆科技(深圳)有限公司 | 固态硬盘及其掉电保护方法、系统 |
CN108509355A (zh) * | 2018-03-31 | 2018-09-07 | 北京联想核芯科技有限公司 | 一种用于SSD的SLC Cache的方法和装置 |
TWI644210B (zh) * | 2017-09-08 | 2018-12-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN109117383A (zh) * | 2017-06-25 | 2019-01-01 | 慧荣科技股份有限公司 | 管理闪存模块的方法和闪存控制器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176862B2 (en) * | 2011-12-29 | 2015-11-03 | Sandisk Technologies Inc. | SLC-MLC wear balancing |
TWI644120B (zh) * | 2017-01-19 | 2018-12-11 | 鏡元科技股份有限公司 | 太赫茲-吉赫茲魚眼鏡系統 |
KR20200010934A (ko) * | 2018-07-23 | 2020-01-31 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
TWI688863B (zh) * | 2018-11-06 | 2020-03-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US11119672B2 (en) * | 2019-08-06 | 2021-09-14 | Intel Corporation | Dynamic single level cell memory controller |
-
2019
- 2019-01-02 TW TW108100005A patent/TWI734063B/zh active
- 2019-05-10 CN CN201910389135.4A patent/CN111399751B/zh active Active
- 2019-12-20 US US16/721,931 patent/US11068201B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090327591A1 (en) * | 2008-06-25 | 2009-12-31 | Stec, Inc. | Slc-mlc combination flash storage device |
CN102591748A (zh) * | 2011-12-29 | 2012-07-18 | 记忆科技(深圳)有限公司 | 固态硬盘及其掉电保护方法、系统 |
CN109117383A (zh) * | 2017-06-25 | 2019-01-01 | 慧荣科技股份有限公司 | 管理闪存模块的方法和闪存控制器 |
TWI644210B (zh) * | 2017-09-08 | 2018-12-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN108509355A (zh) * | 2018-03-31 | 2018-09-07 | 北京联想核芯科技有限公司 | 一种用于SSD的SLC Cache的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI734063B (zh) | 2021-07-21 |
US20200210101A1 (en) | 2020-07-02 |
TW202026883A (zh) | 2020-07-16 |
CN111399751B (zh) | 2023-07-18 |
US11068201B2 (en) | 2021-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075740B2 (en) | Memory system | |
US10474573B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device | |
US8631310B2 (en) | Method for reducing uncorrectable errors of a memory device regarding error correction code, and associated memory device and controller thereof | |
CN107402716B (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
JP4570891B2 (ja) | 記憶装置 | |
TWI664634B (zh) | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
US20210255783A1 (en) | Method and apparatus for performing data storage management to enhance data reliability with aid of repeated write command detection | |
US20230297464A1 (en) | Abnormal power loss recovery method, memory control circuit unit, and memory storage device | |
CN111399751B (zh) | 闪存控制器、管理闪存模块的方法及相关的电子装置 | |
TWI722938B (zh) | 記憶裝置、快閃記憶體控制器及其存取方法 | |
CN110069362B (zh) | 数据储存装置与数据处理方法 | |
CN111159069B (zh) | 闪存控制器、管理闪存模块的方法及相关的电子装置 | |
TWI748542B (zh) | 電子裝置、快閃記憶體控制器及快閃記憶體模組進行垃圾收集操作的方法 | |
US11347433B2 (en) | Method for performing sudden power off recovery management, associated memory device and controller thereof, and associated electronic device | |
CN111488118B (zh) | 管理闪存模块的方法及相关的闪存控制器与电子装置 | |
CN113495801A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
CN105868046B (zh) | 存储装置中管理、写入及加载固件代码的方法 | |
US11249676B2 (en) | Electronic device, flash memory controller and associated control method | |
US11687290B1 (en) | Method for improve read disturbance phenomenon of flash memory module and associated flash memory controller and electronic device | |
US11809748B2 (en) | Control method of flash memory controller and associated flash memory controller and electronic 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |