CN109117383B - 管理闪存模块的方法和闪存控制器 - Google Patents

管理闪存模块的方法和闪存控制器 Download PDF

Info

Publication number
CN109117383B
CN109117383B CN201810444354.3A CN201810444354A CN109117383B CN 109117383 B CN109117383 B CN 109117383B CN 201810444354 A CN201810444354 A CN 201810444354A CN 109117383 B CN109117383 B CN 109117383B
Authority
CN
China
Prior art keywords
data
temporary storage
flash memory
block
storage block
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
CN201810444354.3A
Other languages
English (en)
Other versions
CN109117383A (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.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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
Priority claimed from TW107100021A external-priority patent/TWI657339B/zh
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN109117383A publication Critical patent/CN109117383A/zh
Application granted granted Critical
Publication of CN109117383B publication Critical patent/CN109117383B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0614Improving the reliability of storage systems
    • 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
    • G06F3/064Management of blocks
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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]
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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

管理闪存模块的方法和闪存控制器
技术领域
本发明涉及闪存,尤其涉及一种管理闪存模块的方法及相关的闪存控制器。
背景技术
在采用立体NAND型闪存(3D NAND-type flash)的架构中,当闪存控制器需要将数据写入至闪存模块中的多层式存储(Multiple-Level Cell,MLC)区块或是三层式存储(Triple-Level Cell,TLC)区块时,一次写入的数据量必须要很大,例如64千位组(KB)或是128KB,然而,若是闪存控制器需要写入的数据具有很小数据量(例如,4KB)的随机数据时,则闪存控制器需要加入60KB或是124KB的虚拟无效数据(dummy data)至4KB的随机数据中,以使得一次写入的数据量为64KB或是128KB。在这种情况下,若是具有很小数据量的随机数据量很多的时候,每一个区块的大部分内容都会是无效数据,因此会使得闪存模块的空间会很快地不足,进而需要频繁地进行垃圾数据回收(garbage collection)操作,影响到系统效能。
为了避免上述情况,可以在闪存模块中另外设置一暂存区块,其用来收集这些具有很小数据量的随机数据,等到收集到足够数据量的时候再从所述暂存区块写回到上述的多层式存储区块或是三层式存储区块。然而,若是在这种数据写入的过程中发生断电后回复(power off recovery,POR)或是突发断电后回复(sudden power off recovery,SPOR)状况时,则会无法判断暂存区块与多层式存储区块或是三层式存储区块中的数据的新旧,进而造成后续重新建立地址映像表上的问题。
发明内容
因此,本发明的目的之一在于公开一种管理闪存模块的方法,其可以在发生断电后回复或是突发断电后回复状况时,仍然可以正确地判断出暂存区块与多层式存储区块或是三层式存储区块中的数据的新旧,以顺利地重新建立地址映像表,以解决先前技术中的问题。
在本发明的一个实施例中,公开了一种管理一闪存模块的方法,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,以及所述方法包括有:将一第一数据写入至所述多个第二暂存区块中的一第二暂存区块中;当所述闪存模块的存取符合一特定条件时,将存储于所述第二暂存区块中的所述第一数据搬移至所述多个第一暂存区块中的一第一暂存区块,并在所述第一暂存区块中记录目前所述第二暂存区块的第一个空白数据页的信息。
在本发明的另一个实施例中,公开了一种管理一闪存模块的方法,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,以及所述方法包括有:当发生断电后回复状况时,读取一第一暂存区块中一数据页的备用区域的内容,并决定出一数据页序号;判断一第二暂存区块中位于所述数据页序号之前的所有数据页为无效数据页;以及判断所述第二暂存区块中包括所述数据页序号及之后的所有数据页为有效数据页。
在本发明的另一个实施例中,公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,且所述闪存控制器包括有一只读存储器以及一微处理器,其中所述只读存储器用来存储一程序代码,且所述微处理器用来执行所述程序代码以控制对所述闪存模块的存取;其中所述微处理器将一第一数据写入至所述多个第二暂存区块中的一第二暂存区块中;以及当所述闪存模块的存取符合一特定条件时,所述微处理器将存储于所述第二暂存区块中的所述第一数据搬移至所述多个第一暂存区块中的一第一暂存区块,并在所述第一暂存区块中记录目前所述第二暂存区块的第一个空白数据页的信息。
在本发明的另一个实施例中,公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,且所述闪存控制器包括有一只读存储器以及一微处理器,其中所述只读存储器用来存储一程序代码,且所述微处理器用来执行所述程序代码以控制对所述闪存模块的存取;其中当发生断电后回复状况时,所述微处理器读取一第一暂存区块中一数据页的备用区域的内容,并决定出一数据页序号;以及所述微处理器判断一第二暂存区块中位于所述数据页序号之前的所有数据页为无效数据页,且判断所述第二暂存区块中包括所述数据页序号及之后的所有数据页为有效数据页。
附图说明
图1为依据本发明一实施例的一记忆装置的示意图。
图2为根据本发明一实施例的管理闪存模块的流程图。
图3A为管理闪存模块的示意图。
图3B为根据本发明一实施例的超级区块的示意图。
图4为根据本发明一实施例的将数据写入至暂存区块以及数据区块的示意图。
图5为根据本发明另一实施例的管理闪存模块的流程图。
图6为根据本发明一实施例的重新建立暂存区块以及数据区块的地址映像表的示意图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
130 主装置
132 编码器
134 译码器
200~208、500~506 步骤
310、320 闪存芯片
352、534、536 超级区块
DB_0~DB_M 数据区块
TB_MLC_0~TB_MLC_K 第一暂存区块
TB_SLC_0~TB_SLC_N 第二暂存区块
P0~P34 数据页
LBA_001、LBA_XXX 逻辑地址
具体实施方式
参考图1,图1为依据本发明一实施例的一记忆装置100的示意图。记忆装置100包括有一闪存模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。依据本实施例,闪存控制器110包括一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。只读存储器112M是用来存储一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存模块120的存取(Access)。控制逻辑114包括了一编码器132以及一译码器134,其中编码器132用来对写入到闪存模块120中的数据进行编码以产生对应的校验码(或称,错误更正码(ErrorCorrection Code),ECC),而译码器134用来将从闪存模块120所读出的数据进行译码。
于典型状况下,闪存模块120包括了多个闪存芯片,而每一个闪存芯片包括多个区块(Block),而所述控制器(例如:通过微处理器112执行程序代码112C的闪存控制器110)对闪存模块120进行抹除数据运作是以区块为单位来进行。另外,一区块可记录特定数量的数据页(Page),其中所述控制器(例如:通过微处理器112执行程序代码112C的存储器控制器110)对闪存模块120进行写入数据的运作是以数据页为单位来进行写入。在本实施例中,闪存模块120为一立体NAND型闪存(3D NAND-type flash)。
实作上,通过微处理器112执行程序代码112C的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)130沟通。
在一实施例中,记忆装置100可以是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡),且主装置130为一可与记忆装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,记忆装置100可以设置在一电子装置中,例如设置在手机、笔记本电脑、桌面计算机之中,而此时主装置130可以是所述电子装置的一处理器。
参考图2,其为根据本发明一实施例的管理闪存模块120的流程图。在步骤200中,流程开始。在步骤202中,闪存控制器110接收来自主装置130的一写入命令,以将一数据写入至闪存模块120的一区块中。在本实施例中,参考图3A,闪存模块120包括了多个闪存芯片310、320,每一个闪存芯片包括了多个数据区块DB_0~DB_M、多个第二暂存区块TB_SLC_0~TB_SLC_N及多个第一暂存区块TB_MLC_0~TB_MLC_K,而每一个区块均包括了多个数据页。在本实施例中,第二暂存区块TB_SLC_0~TB_SLC_N为单层式存储(Single-Level Cell,SLC)区块,且数据区块DB_0~DB_M以及第一暂存区块TB_MLC_0~TB_MLC_K为多层式存储(MLC)区块,但不以此为限,于其他实施例中数据区块DB0~DB_M及/或第一暂存区块TB_MLC_0~TB_MLC_K可为三层式存储(TLC)区块。在一实施例中,第二暂存区块TB_SLC_0~TB_SLC_N也可使用多层式存储区块来做为单层式存储区块来使用。在闪存模块120的实际操作中,可以“超级区块”来作为数据写入的模式,具体来说,参考图3B,其为根据本发明一实施例的超级区块的示意图。如图3B所示,假设每一个闪存芯片310、320中的区块均分为两个平面(plane),且闪存模块120仅包括两个闪存芯片310、320,故闪存芯片310、320中位于不同平面的四个区块便可以构成一超级区块。在图3B中,闪存芯片310、320中的数据区块DB_0、DB_1构成一超级区块352、闪存芯片310、320中的第二暂存区块TB_SLC_0、TB_SLC_1构成一超级区块354、且闪存芯片310、320中的第一暂存区块TB_MLC_0、TB_MLC_1构成一超级区块356…以此类推。当数据需要写入到闪存模块120时,每一次都需要写入到超级区块中的每一个数据页、也就是说,四个区块的一个数据页中,举例来说,假设一区块中的一个数据页的大小为16KB,则闪存控制器110一次需要写入64KB的数据至一超级区块356的一个数据页,也就是说,将这64KB的数据依序写入到闪存芯片310中第一暂存区块TB_MLC_0的一个数据页、闪存芯片310中第一暂存区块TB_MLC_1的一个数据页、闪存芯片320中第一暂存区块TB_MLC_0的一个数据页、以及闪存芯片320中第一暂存区块TB_MLC_1的一个数据页。于其他实施例中,闪存控制器110一次需要写入128KB的数据至一超级区块356的二个数据页,也就是说,将这128KB的数据写入到闪存芯片310中第一暂存区块TB_MLC_0的二个数据页、闪存芯片310中第一暂存区块TB_MLC_1的二个数据页、闪存芯片320中第一暂存区块TB_MLC_0的二个数据页、以及闪存芯片320中第一暂存区块TB_MLC_1的二个数据页。
在本实施例中,当数据需要写入至闪存模块120时,闪存控制器110会由第一暂存区块TB_MLC_0~TB_MLC_K中选择一个来进行存储,而由于闪存控制器110对于第一暂存区块TB_MLC_0~TB_MLC_K一次写入的数据量需要大于一临界值(例如,上述的64KB),因此,在步骤204中,闪存控制器110判断闪存模块120的存取是否符合一特定条件,若否,流程进入步骤206;若是,则流程进入至步骤208。具体来说,所述特定条件指的是步骤202中所述的写入命令所对应的数据以及目前存储在第二暂存区块中且尚未搬移至第一暂存区块的数据的数据量总和是否到达所述临界值。
在步骤206中,闪存控制器110将步骤202中所述的写入命令所对应的数据写入至所述第二暂存区块中。在步骤208中,闪存控制器110将步骤202中所述的写入命令所对应的数据,连同目前存储在所述第二暂存区块中且尚未搬移至所述第一暂存区块的数据,一并写入至所述第一暂存区块中,此外,在所述第一暂存区块中记录目前所述第二暂存区块的第一个空白数据页的信息。接着,流程回到步骤202。
以下通过图4来举一例子来详细说明图2所示的流程图,需注意的是,为了方便理解,图4是以第二暂存区块TB_SLC_0以及第一暂存区块TB_MLC_0来做为说明,但本领域技术人员应能了解上述暂存区块在实作上可以是图3B所示的超级区块。首先,闪存控制器110自主装置130接收到一第一写入命令,假设所述第一写入命令所对应的数据为随机数据(例如4KB)且数据量不到所述临界值,则闪存控制器110将所述第一写入命令所对应的数据写入至第二暂存区块TB_SLC_0的第一个数据页P0中;接着,闪存控制器110自主装置130依序接收到一第二写入命令及一第三写入命令,假设所述第二、第三写入命令所对应的数据也是随机数据(例如4KB),则闪存控制器110会依序将所述第二、第三写入命令所对应的数据写入至第二暂存区块TB_SLC_0的数据页P1、P2中。接着,闪存控制器110自主装置130接收到一第四写入命令,而假设所述第四写入命令所对应的数据为连续数据,且所述数据的数据量为大于所述临界值的548KB,则由于待写入至第一暂存区块TB_MLC_0的数据量大于所述临界值,则闪存控制器110此时会先将第二暂存区块TB_SLC_0的数据页P0~P2的有效数据(共12KB)连同所述第四写入命令所对应的数据(548KB)一起写入至第一暂存区块TB_MLC_0的数据页P0~P34中。在本实施例中,闪存控制器110在将数据写入到第一暂存区块TB_MLC_0的过程中,会在每一个数据页P0~P34的一备用区域中记录目前第二暂存区块TB_SLC_0的第一个空白数据页的信息(也就是数据页P3)。在本实施例中,所述备用区域的大小通常是64B或是128B,且一般是用来存储文件系统的管理信息。
一般而言,当闪存控制器110接收到所述第一、第二、第三写入命令所对应的数据时,先将所述第一、第二、第三写入命令所对应的数据暂存于缓冲存储器116中,而当闪存控制器110将所述第一、第二、第三写入命令所对应的数据写入至第二暂存区块TB_SLC_0的数据页P0、P1、P2后,将删除缓冲存储器116中暂存的对应数据。于此实施例中,当闪存控制器110将所述第一、第二、第三写入命令所对应的数据写入至第二暂存区块TB_SLC_0的数据页P0、P1、P2后,不删除暂存于缓冲存储器116中的所述第一、第二、第三写入命令所对应的数据。当收到所述第四写入命令时,闪存控制器110将所述第四写入命令所对应的数据暂存于缓冲存储器116后,直接从缓冲存储器116中读取所述第一至第四写入命令所对应的数据,将其一并写入至第一暂存区块TB_MLC_0的数据页P0~P34中,接着再删除缓冲存储器116中暂存的所述第一至第四写入命令所对应的数据。于其他实施例中,当闪存控制器110将所述第一、第二、第三写入命令所对应的数据写入至第二暂存区块TB_SLC_0的数据页P0、P1、P2后,删除暂存于缓冲存储器116中的所述第一、第二、第三写入命令所对应的数据。当收到所述第四写入命令时,闪存控制器110将所述第四写入命令所对应的数据暂存于缓冲存储器116后,从第二暂存区块TB_SLC_0的数据页P0、P1、P2读取数据至缓冲存储器116之后,再从缓冲存储器116中读取所述第一至第四写入命令所对应的数据,将其一并写入至第一暂存区块TB_MLC_0的数据页P0~P34中。
需注意的是,在上述的实施例中,第一暂存区块TB_MLC_0中所记录的第二暂存区块TB_SLC_0的第一个空白数据页的信息是数据页P3,但本发明并不以此为限,在其他实施例中,所谓“第二暂存区块TB_SLC_0的第一个空白数据页的信息”可以是任何可以关联到并据以决定出数据页P3的内容,例如第二暂存区块TB_SLC_0的最后一个有数据写入的数据页的序号,这些设计上的变化应隶属于本发明的范畴。
接着,闪存控制器110自主装置130接收到一第五写入命令及一第六写入命令,假设所述第五、第六写入命令所对应的数据为随机数据,则闪存控制器110会依序将所述第五、第六写入命令所对应的数据写入至第二暂存区块TB_SLC_0的数据页P3、P4中。在本实施例中,是假设第二暂存区块TB_SLC_0的数据页P4所存储的数据是用来更新第二暂存区块TB_SLC_0的数据页P1所存储的数据,也就是说,第二暂存区块TB_SLC_0的数据页P1、P4与第一暂存区块TB_MLC_0的数据页P1对应到相同的逻辑地址。
在图2~4的实施例中,在第一暂存区块TB_MLC_0中的数据页P0~P34的备用区域中记录在其数据写入过程中第二暂存区块TB_SLC_0的第一个空白数据页的信息的目的是为了避免后续发生断电后回复(POR)或是突发断电后回复(SPOR)状况时无法判断第一暂存区块TB_MLC0与第二暂存区块TB_SLC_0中的数据新旧问题,而造成错误。以下图5、6所示的实施例将说明如何利用第一暂存区块TB_MLC_0所记录的第二暂存区块TB_SLC_0的第一个空白数据页的信息来正确地判断第一暂存区块TB_MLC_0与第二暂存区块TB_SLC_0中的数据新旧。
参考图5,其为根据本发明一实施例的管理闪存模块120的方法的流程图。在步骤500中,记忆装置100遭遇到断电后回复(POR)或是突发断电后回复(SPOR)的状况,因此,原本存储在缓冲存储器116中的地址映像表均已遗失。在步骤502中,闪存控制器110读取第一暂存区块的最后一个有数据写入的数据页的备用区域的内容,以决定出第二暂存区块的一数据页序号。在步骤504中,闪存控制器110判断第二暂存区块中从所述数据页序号开始的数据是最新的数据,而所述数据页序号之前的都是旧数据(无效数据)。在步骤506中,闪存控制器110根据步骤504的判断结果来重新建立地址映像表。
具体来说,接续着图4所示的实施例,并同时参考图6,当记忆装置100遭遇到断电后回复(POR)或是突发断电后回复(SPOR)的状况后,闪存控制器110会需要重新建立分别对应到第二暂存区块TB_SLC_0以及第一暂存区块TB_MLC_0的地址映像表。此时,闪存控制器110会直接至第一暂存区块TB_MLC_0的最后一个有数据写入的数据页(也就是P34)的备用区域读取内容,并得到一个数据页序号(也就是P3),而在建立第二暂存区块TB_SLC_0的地址映像表的过程中,闪存控制器110会直接判断第二暂存区块TB_SLC_0从数据页P3开始以后的数据才是新的数据,而数据页P3之前的数据都是旧的数据,因此,第二暂存区块TB_SLC_0的地址映像表只会记录有关于数据页P3、P4的实体地址及对应的逻辑地址,而并不会记录有关于数据页P0~P2的地址信息。
此外,关于第一暂存区块TB_MLC_0的地址映像表,闪存控制器110则会循序地读取第一暂存区块TB_MLC_0中每一个数据页的信息以重新建立出第一暂存区块TB_MLC_0中每一个数据页P0~P34的实体地址及对应的逻辑地址。
在以上的实施例中,由于在断电后回复或是突发断电后回复的状况后所重新建立的第二暂存区块TB_SLC_0的地址映像表仅会包括最新的信息,因此若是第二暂存区块TB_SLC_0与第一暂存区块TB_MLC_0的地址映像表具有一相同的逻辑地址,例如图6所示的第二暂存区块TB_SLC_0的数据页P4与第一暂存区块TB_MLC_0的数据页P1具有相同的逻辑地址(LBA_001),则可以直接地判断第二暂存区块TB_SLC_0的数据页P4是最新的数据,也就是说,第二暂存区块TB_SLC_0的数据页P4的数据是用来更新第一暂存区块TB_MLC_0的数据页P1的内容。在一实施例中,若是此时闪存控制器110接收到一要求读取逻辑地址LBA_001的读取命令,则闪存控制器110会直接先从第二暂存区块TB_SLC_0的地址映像表来取得对应的实体地址,并自第二暂存区块TB_SLC_0的数据页P4来读取数据,而并不需要去读取第一暂存区块TB_MLC_0的地址映像表的内容。
在一实施例中,当多个第一暂存区块完成数据写入之后,可以对所述多个第一暂存区块进行垃圾收集(garbage collection)操作,以将其中的有效数据搬移至至少一数据区块(例如,DB_0)中,而所述多个第一暂存区块之后则便可以被释放出来以继续供数据写入之用。
简要归纳本发明,在本发明的管理闪存模块的方法中,是使用两个暂存区块(第一暂存区块以及第二暂存区块)来存储写入至闪存模块中的数据,其中第一暂存区块主要是用来存储数据量大于一临界值(例如,64KB)的数据,而第二暂存区块则是用来存储数据量小于所述临界值的随机数据。另外,通过在第一暂存区块中记录目前第二暂存区块的最后一个空白数据页的信息,可以在发生断电后回复或是突发断电后回复的状况后能够准确地判断出第二暂存区块与第一暂存区块中的数据新旧,特别是当第一暂存区块与第二暂存区块中有数据页具有相同逻辑地址的情况,以确实解决先前技术的问题。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种管理一闪存模块的方法,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,所述方法的特征在于,包括有:
当发生断电后回复状况时,读取一第一暂存区块中一数据页的备用区域的内容,并决定出一数据页序号;
判断一第二暂存区块中位于所述数据页序号之前的所有数据页为无效数据页;以及
判断所述第二暂存区块中包括所述数据页序号及之后的所有数据页为有效数据页;
其中读取所述第一暂存区块中所述数据页的备用区域的内容,并决定出所述数据页序号的步骤包括有:
读取所述第一暂存区块中最后一个有数据写入的数据页的备用区域,以决定出所述数据页序号,其中所述数据页序号为当所述第一暂存区块最后一次数据写入时所述第二暂存区块的第一个空白数据页的信息。
2.如权利要求1所述的方法,其特征在于,所述第二暂存区块为一单层式存储区块,且所述第一暂存区块为多层式存储区块或是三层式存储区块。
3.如权利要求1所述的方法,其特征在于,所述方法还包括有:
重新建立一地址映像表,其中所述地址映像表不包括所述第二暂存区块中位于所述数据页序号之前的所有数据页的逻辑地址及实体地址。
4.如权利要求1所述的方法,其特征在于,所述方法还包括有:
建立一第一地址映像表,其中所述第一地址映像表记录了所述第一暂存区块中有数据写入的所有数据页的逻辑地址及实体地址;以及
建立一第二地址映像表,其中所述第二地址映像表仅记录了所述第二暂存区块中包括所述数据页序号及之后的所有数据页的逻辑地址及实体地址。
5.如权利要求4所述的方法,其特征在于,所述方法还包括有:
当所述第一地址映像表与所述第二地址映像表中具有相同的一特定逻辑地址时,判断所述第二地址映像表中对应于所述特定逻辑地址的一特定实体地址为最新的数据。
6.一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括多个第一暂存区块以及多个第二暂存区块,每一个第一暂存区块及第二暂存区块包括了多个数据页,且所述闪存控制器的特征在于,包括有:
一只读存储器,用来存储一程序代码;以及
一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;
其中当发生断电后回复状况时,所述微处理器读取一第一暂存区块中一数据页的备用区域的内容,并决定出一数据页序号;以及所述微处理器判断一第二暂存区块中位于所述数据页序号之前的所有数据页为无效数据页,且判断所述第二暂存区块中包括所述数据页序号及之后的所有数据页为有效数据页;
其中所述微处理器读取所述第一暂存区块中最后一个有数据写入的数据页的备用区域,以决定出所述数据页序号,其中所述数据页序号为当所述第一暂存区块最后一次数据写入时所述第二暂存区块的第一个空白数据页的信息。
7.如权利要求6所述的闪存控制器,其特征在于,所述微处理器另建立一第一地址映像表,其中所述第一地址映像表记录了所述第一暂存区块中有数据写入的所有数据页的逻辑地址及实体地址;以及建立一第二地址映像表,其中所述第二地址映像表记录仅记录了所述第二暂存区块中包括所述数据页序号及之后的所有数据页的逻辑地址及实体地址。
8.如权利要求7所述的闪存控制器,其特征在于,当所述第一地址映像表与所述第二地址映像表中具有相同的一特定逻辑地址时,所述微处理器判断所述第二地址映像表中对应于所述特定逻辑地址的一特定实体地址为最新的数据。
CN201810444354.3A 2017-06-25 2018-05-10 管理闪存模块的方法和闪存控制器 Active CN109117383B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762524602P 2017-06-25 2017-06-25
US62/524,602 2017-06-25
TW107100021A TWI657339B (zh) 2017-06-25 2018-01-02 管理快閃記憶體模組的方法及相關的快閃記憶體控制器
TW107100021 2018-01-02

Publications (2)

Publication Number Publication Date
CN109117383A CN109117383A (zh) 2019-01-01
CN109117383B true CN109117383B (zh) 2022-09-20

Family

ID=64693187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810444354.3A Active CN109117383B (zh) 2017-06-25 2018-05-10 管理闪存模块的方法和闪存控制器

Country Status (2)

Country Link
US (1) US10866751B2 (zh)
CN (1) CN109117383B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI734063B (zh) * 2019-01-02 2021-07-21 慧榮科技股份有限公司 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置
TWI697778B (zh) * 2019-06-17 2020-07-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
TWI733360B (zh) * 2020-03-09 2021-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN115004166A (zh) * 2020-04-21 2022-09-02 华为技术有限公司 一种数据访问方法及装置
US11494111B2 (en) * 2020-12-17 2022-11-08 Micron Technology, Inc. Data operation based on valid memory unit count
CN113535085A (zh) * 2021-07-05 2021-10-22 歌尔科技有限公司 产品标识的传输方法、终端设备、系统及存储介质
US11899977B2 (en) * 2022-03-10 2024-02-13 Silicon Motion, Inc. Method and apparatus for performing access management of memory device with aid of serial number assignment timing control

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200947455A (en) * 2008-05-06 2009-11-16 Apacer Technology Inc Method of managing storage unit and storage medium therefor
CN101814318A (zh) * 2009-02-25 2010-08-25 群联电子股份有限公司 多层存储单元与非型闪存储存系统及其控制器与存取方法
TW201040717A (en) * 2009-05-06 2010-11-16 Via Telecom Inc Flash memory managing methods and computing systems utilizing the same
CN102768644A (zh) * 2011-05-06 2012-11-07 创惟科技股份有限公司 闪存系统及其闪存无效数据页信息的管理方法与回收方法
CN103136071A (zh) * 2011-12-01 2013-06-05 晨星软件研发(深圳)有限公司 电子系统及其存储器管理方法
TW201351417A (zh) * 2012-06-04 2013-12-16 Silicon Motion Inc 快閃記憶體裝置及快閃記憶體的資料存取方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI368223B (en) * 2007-12-07 2012-07-11 Phison Electronics Corp Flash memory data writing method and controller using the same
TWI425523B (zh) 2008-03-25 2014-02-01 Asmedia Technology Inc 混合型快閃儲存裝置及其操作方法
US8180955B2 (en) * 2009-05-06 2012-05-15 Via Telecom, Inc. Computing systems and methods for managing flash memory device
TWI423026B (zh) * 2010-10-29 2014-01-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
TWI520153B (zh) 2013-11-05 2016-02-01 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
TWI604307B (zh) * 2014-10-31 2017-11-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
JP6513888B2 (ja) * 2016-09-13 2019-05-15 株式会社日立製作所 データ量削減機能を有する計算機システム、及び、記憶制御方法
US10802727B2 (en) * 2017-06-07 2020-10-13 ScaleFlux, Inc. Solid-state storage power failure protection using distributed metadata checkpointing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200947455A (en) * 2008-05-06 2009-11-16 Apacer Technology Inc Method of managing storage unit and storage medium therefor
CN101814318A (zh) * 2009-02-25 2010-08-25 群联电子股份有限公司 多层存储单元与非型闪存储存系统及其控制器与存取方法
TW201040717A (en) * 2009-05-06 2010-11-16 Via Telecom Inc Flash memory managing methods and computing systems utilizing the same
CN102768644A (zh) * 2011-05-06 2012-11-07 创惟科技股份有限公司 闪存系统及其闪存无效数据页信息的管理方法与回收方法
CN103136071A (zh) * 2011-12-01 2013-06-05 晨星软件研发(深圳)有限公司 电子系统及其存储器管理方法
TW201351417A (zh) * 2012-06-04 2013-12-16 Silicon Motion Inc 快閃記憶體裝置及快閃記憶體的資料存取方法

Also Published As

Publication number Publication date
CN109117383A (zh) 2019-01-01
US10866751B2 (en) 2020-12-15
US20180373433A1 (en) 2018-12-27

Similar Documents

Publication Publication Date Title
CN109117383B (zh) 管理闪存模块的方法和闪存控制器
TWI650644B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
TWI692690B (zh) 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN110058795B (zh) 管理闪存模块的方法及相关的闪存控制器及电子装置
US10372619B2 (en) Data backup method, data recovery method and storage controller
US9582416B2 (en) Data erasing method, memory control circuit unit and memory storage apparatus
US9176865B2 (en) Data writing method, memory controller, and memory storage device
CN109697170B (zh) 存取闪存模块的方法及相关的闪存控制器与电子装置
US20110231713A1 (en) Flash memory module
US20200293441A1 (en) Data storage devices and data processing methods
US11809328B2 (en) Control method of flash memory controller and associated flash memory controller and storage device
CN110633047A (zh) 管理闪存模块的方法及相关的闪存控制器及电子装置
US9037781B2 (en) Method for managing buffer memory, memory controllor, and memory storage device
CN113885808B (zh) 映射信息记录方法以及存储器控制电路单元与存储装置
TWI657339B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器
CN111026325A (zh) 闪存控制器、闪存控制器的控制方法及相关的电子装置
TWI749279B (zh) 資料儲存裝置與資料處理方法
US11748011B2 (en) Control method of flash memory controller and associated flash memory controller and storage device
TW201337553A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN113377282A (zh) 数据存储装置与数据处理方法
CN110489054B (zh) 存取闪存模块的方法、相关的闪存控制器和电子装置
CN110489053B (zh) 管理闪存模块的方法、相关的闪存控制器和电子装置
CN111198651B (zh) 进行存储空间管理的方法以及数据存储装置及其控制器
CN113571121A (zh) 嵌入式设备NAND Flash的ECC码存储方法
CN116795279A (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