CN109697170A - 存取闪存模块的方法及相关的闪存控制器与电子装置 - Google Patents
存取闪存模块的方法及相关的闪存控制器与电子装置 Download PDFInfo
- Publication number
- CN109697170A CN109697170A CN201810443706.3A CN201810443706A CN109697170A CN 109697170 A CN109697170 A CN 109697170A CN 201810443706 A CN201810443706 A CN 201810443706A CN 109697170 A CN109697170 A CN 109697170A
- Authority
- CN
- China
- Prior art keywords
- comparisons
- physical
- data page
- block
- physical address
- 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 abstract description 30
- 239000010813 municipal solid waste Substances 0.000 claims abstract description 16
- 241000208340 Araliaceae Species 0.000 claims 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims 1
- 235000003140 Panax quinquefolius Nutrition 0.000 claims 1
- 235000008434 ginseng Nutrition 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 210000003205 muscle Anatomy 0.000 description 6
- 230000003068 static effect Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/0253—Garbage collection, i.e. reclamation of unreferenced 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/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/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/1016—Performance 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种存取闪存模块的方法,其包括有以下步骤:建立对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;以及当该闪存模块中特定区块需要进行垃圾收集操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
Description
技术领域
本发明有关于闪存,尤指一种存取闪存模块的方法及相关的闪存控制器。
背景技术
当闪存模块中的空间不足时,闪存控制器会进行垃圾收集(garbage collection)操作以将多个区块中的有效数据页中的数据搬移到新的区块中,并将原本的区块内容抹除以释放更多的存储空间。然而,在上述的操作中,由于需要正确地判断出每一个区块中的有效数据页及无效数据页,因此会需要预先存储相关的地址信息以供进行比对判断。然而,随着区块的大小增加及所包括的资料页也跟着变多的情形下,上述地址信息的数据量也大幅增加,且常常会进行许多无效的读取/判断操作,进而影响到闪存模块中的存储空间以及闪存控制器的处理效率。
发明内容
因此,本发明的目的之一在于提供一种存取闪存模块的方法,其可以大幅度地减少无效的读取/判断操作,并有效率地判断出每一个区块中的有效数据页及无效数据页,以解决先前技术中的问题。
根据本发明的实施例,公开了一种存取闪存模块的方法,其包括有以下步骤:建立对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;以及当该闪存模块中特定区块需要进行垃圾收集操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
根据本发明的实施例,另公开了一种闪存控制器,其中该闪存控制器用来存取闪存模块,且该闪存控制器包括有只读存储器、微处理器以及内存。该只读存储器用来存储程序代码;该微处理器用来执行该程序代码以控制对该闪存模块之存取;以及该内存用以存储对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址。当该闪存模块中特定区块需要进行垃圾收集操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,该微处理器参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
根据本发明的实施例,另公开了一种电子装置,其包括有闪存模块以及闪存控制器。该闪存控制器建立对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;以及当该闪存模块中特定区块需要进行垃圾收集操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,该闪存控制器参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
附图说明
图1为依据本发明实施例之一种存储装置的示意图。
图2为根据本发明实施例之存取闪存模块的流程图。
图3为根据本发明实施例之两个逻辑地址至实体地址对照表及对应之实体区块记录表的示意图。
图4为实体地址至逻辑地址对照表的示意图。
图5为本发明实施例之使用实体地址至逻辑地址对照表来更新逻辑地址至实体地址对照表的示意图。
图6为本发明实施例之使用更新后的逻辑地址至实体地址对照表来更新实体区块记录表的示意图。
图7为本发明实施例之使用实体地址至逻辑地址对照表来再次更新逻辑地址至实体地址对照表的示意图。
图8所示为根据本发明实施例之进行垃圾收集操作的流程图。
图9为根据本发明实施例之实体区块记录表的示意图。
其中,附图标记说明如下:
100 存储装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
120 闪存模块
130 主装置
132 编码器
134 译码器
200~214、800~810 步骤
310_1、310_2 逻辑地址至实体地址对照表
320_1、320_2、900 实体区块记录表
400、700 实体地址至逻辑地址对照表
410、420 闪存芯片
B_0~B_M 区块
P0~PN 资料页
LBA_0~LBA_511 逻辑地址
具体实施方式
请参照图1,图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中的数据进行编码以产生对应的校验码(或称,错误更正码(Error CorrectionCode),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沟通。缓冲存储器116是以随机存取内存(Random Access Memory,RAM)来实施。例如,缓冲存储器116可以是静态随机存取内存(Static RAM,SRAM),但本发明不限于此。
【1】在实施例中,存储装置100可以是可携式存储装置(例如:符合SD/MMC、CF、MS、XD标准之存储卡),且主装置130为一可与存储装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,存储装置100可以是固态硬盘或符合通用闪存存储(Universal Flash Storage,UFS)或嵌入式多媒体存储卡(Embedded Multi MediaCard,EMMC)规格之嵌入式存储装置,以设置在电子装置中,例如设置在手机、笔记本电脑、桌面计算机之中,而此时主装置130可以是该电子装置的处理器。
请参照图2,其为根据本发明实施例之存取闪存模块120的流程图。在步骤200中,流程开始。在步骤202中,微处理器112针对每一个逻辑地址至实体地址对照表(以下称L2P对照表),建立其对应的实体区块记录表,其中该实体区块记录表记录了该L2P对照表具有闪存模块120中哪些区块的实体地址。举例来说,请参照图3,其绘示了两个L2P对照表310_1、310_2及对应之实体区块记录表320_1、320_2的示意图。在图3中,L2P对照表310_1具有连续的逻辑地址LBA_0~LBA_255及对应的实体地址,而L2P对照表310_2具有连续的逻辑地址LBA_256~LBA_511及对应的实体地址,假设目前闪存模块120中并未具有逻辑地址LBA_0~LBA_511的数据写入,故L2P对照表310_1、310_2中并未记录任何的实体地址信息。需注意的是,在本实施例中,逻辑地址的序号代表着其顺序,而连续的序号代表着连续的逻辑地址。此外,假设闪存模块120包括了多个区块B_0~B_M,则实体区块记录表320_1记录了闪存模块120中每一个区块B_0~B_M的状态,其用来表示L2P对照表310_1是否有记录该区块的实体地址,而在本实施例中,每一个区块的状态以位的两个数字值来表示,其中数字值“0”表示L2P对照表310_1并未记录该区块的实体地址,而数字值“1”表示L2P对照表310_1有记录该区块的实体地址。类似地,实体区块记录表320_2也记录了闪存模块120中每一个区块B_0~B_M的状态,其用来表示L2P对照表310_2是否有记录该区块的实体地址。在图3中,由于目前假设L2P对照表310_1、310_2中并未记录任何的实体地址信息,故实体区块记录表320_1、320_2中所记录之每一个区块的B_0~B_M的状态均为“0”。
在步骤204中,闪存控制器110接收来自主装置130的至少一写入命令,以将第一笔数据写入至闪存模块120的区块中。在本实施例中,请参照图4,闪存模块120包括了多个闪存芯片410、420,每一个闪存芯片包括了多个区块B_0~B_M,而每一个区块包括了N个资料页P0~PN。在以下的说明中,闪存控制器110是将数据循序写入到闪存芯片410的区块B_0,然而,需注意的是,上述的“区块”在实作上也可以是包括了多个芯片之位于不同平面(plane)的多个区块(一般称为“超级区块”),举例来说,假设闪存芯片410、420均包括了两个平面(plane),而区块B_0及B_M是位于不同的平面,则闪存芯片410的区块B_0、B_M以及闪存芯片420的区块B_0、B_M可以构成一个超级区块。
在数据写入至区块B_0之前,微处理器112会建立实体地址至逻辑地址对照表(以下称P2L对照表)400,并存储在缓冲存储器116之中,其中P2L对照表400包括区块B_0中的连续之数据页的实体地址P0~PN,以及所对应之逻辑地址。详细来说,闪存控制器110首先将来自主装置130且具有逻辑地址LBA_5的数据写入至数据页P0中,接着,依序将来自主装置130且具有逻辑地址LBA_500、LBA_350、LBA_6、LBA_7、LBA_100的数据分别写入至数据页P1~P5。需注意的是,在本实施例中,实体地址的序号代表着其顺序,而连续的序号代表着连续的实体地址。
接着,在步骤206中,微处理器112判断区块B_0中的最后一个数据页PN是否已完成数据写入(亦即,区块B_0已经写满),若否,则流程进入步骤204以继续将下一笔数据写入到区块B_0;若是,则流程进入步骤208。在步骤208中,微处理器112参考P2L对照表400内容以自闪存模块120中读取一部分的L2P对照表,并使用P2L对照表400来更新所读取之L2P对照表的内容。具体来说,以图3、4的实施例来做说明,由于P2L对照表400所记录的逻辑地址LBA_5、LBA_500、LBA_350、LBA_6、LBA_7、LBA_100是位于逻辑地址范围LBA_0~LBA_255以及逻辑地址范围LBA_256~LBA_511中,故微处理器112自闪存模块120中读取如图5所示的两个L2P对照表310_1、310_2。接着,由于P2L对照表400中有4笔对应至逻辑地址范围LBA_0~LBA_255中的信息,故微处理器112将L2P对照表310_1中的逻辑地址LBA_5更新为对应到区块B_0的数据页P0、逻辑地址LBA_6更新为对应到区块B_0的数据页P3、逻辑地址LBA_7更新为对应到区块B_0的数据页P4、且逻辑地址LBA_100更新为对应到区块B_0的数据页P5;此外,由于P2L对照表400中有2笔对应至逻辑地址范围LBA_256~LBA_511中的信息,故微处理器112将L2P对照表310_2中的逻辑地址LBA_350更新为对应到区块B_0的数据页P2、以及且逻辑地址LBA_500更新为对应到区块B_0的数据页P1。
在步骤210中,微处理器112使用更新后的L2P对照表310_1、310_2来更新实体区块记录表320_1、320_2。请参照图6,由于更新后的L2P对照表310_1、310_2均有记录区块B_0的实体地址,故微处理器112更新实体区块记录表320_1、320_2以将区块B_0的状态变更为“1”。
在步骤212中,微处理器112将P2L对照表400以及更新后的L2P对照表310_1、310_2存储至闪存模块120中,并将其自缓冲存储器116中删除。
在步骤214中,闪存控制器110选择下一个区块(例如,区块B_1)以供后续的数据写入,且流程回到步骤204。在一实施例中,假设流程回到步骤204,且闪存控制器110接收到主装置130的写入命令以要求将具有逻辑地址LBA_350及LBA_500的数据更新,则请参照图7,微处理器112会另外针对区块B_1建立P2L对照表700,并将L2P对照表310_2自闪存模块120中读取并进行更新,以将逻辑地址LBA_350、LBA_500更新为分别对应到区块B_1的数据页P0、P1,之后再回存到闪存模块120中。此外,因为更新后的L2P对照表310_2包括了区块B_1的实体地址,故实体区块记录表320_2中有关于区块B_1的状态被更新为“1”;且由于更新后的L2P对照表310_2已经不包括了区块B_0的实体地址,故实体区块记录表320_2中有关于区块B_1的状态被更新为“0”。
在以上的实施例中,实体区块记录表320_1、320_2常驻在缓冲存储器116中,亦即当闪存控制器110上电之后,实体区块记录表320_1、320_2便会一直存储在缓冲存储器116中,并实时地随着L2P对照表310_1、310_2内容地变化来进行更新。
图8所示为根据本发明实施例之进行垃圾收集操作的流程图,其中在本实施例中是以对图4所示的区块B_0来进行垃圾收集操作,且相关的内容是以第2~6的实施例来做为范例说明,以方便理解。在步骤800,流程开始,且闪存控制器110准备对区块B_0进行垃圾收集操作。在步骤802中,微处理器112自闪存模块120中读取区块B_0的P2L对照表400。接着,在步骤804中,微处理器112准备依序判断区块B_0中的每一个数据页P0~PN为有效数据页或是无效数据页,而针对每一个资料页P0~PN,微处理器112是根据P2L对照表400来决定对应的逻辑地址及实体区块记录表。举例来说,针对数据页P0,微处理器112决定出对应的逻辑地址LBA_5及实体区块记录表320_1;针对数据页P1及其对应的逻辑地址LBA_500,微处理器112决定出对应的逻辑地址LBA_500及实体区块记录表320_2,…,以此类推。
在步骤806中,微处理器112判断实体区块记录表中该区块的状态是否为“1”,若是,流程进入步骤808以自闪存模块120中读取L2P对照表以判断该数据页为有效数据页或是无效数据页;若否,流程进入步骤810,并在不自闪存模块120中读取L2P对照表的情形下直接判定该数据页为无效数据页。举例来说,针对资料页P0及在步骤804中所决定出的实体区块记录表320_1,由于图6所示之实体区块记录表320_1的区块B_0的状态为“1”,故微处理器112自闪存模块120中读取对应的L2P对照表310_1,并根据L2P对照表310_1以及区块B_0的内容(或是区块B_0之P2L对照表400的内容)以判定数据页P0是否为有效资料页;在本实施例中,由于L2P对照表310_1中也记录了逻辑地址LBA_5对应到区块B_0的数据页P0,故微处理器112判定数据页P0为有效数据页。接着,针对数据页P1及在步骤804中所决定出的实体区块记录表320_2,由于图6所示之实体区块记录表320_2的区块B_0的状态为“0”,故微处理器112不需要自闪存模块120中读取对应的L2P对照表310_2,便可以直接判定数据页P1为无效数据页。接着,微处理器112重复以上操作直到区块B_0中的每一个数据页P0~PN都完成有效/无效数据页的判断。
最后,当区块B_0中的每一个数据页P0~PN都完成有效/无效数据页的判断,微处理器112会将区块B_0中所有的有效数据页都搬移到另外一个区块中,并将区块B_0抹除以释放出可用的存储空间。需注意的是,上述对区块B_0进行抹除操作并非立即地进行,而是可以先将区块B_0标记为无效,并等待闪存控制器110较为空闲的时候再进行区块B_0的抹除操作。
如以上图8的流程所述,由于微处理器112在对每一个数据页P0~PN进行有效/无效数据页判断的时候会先参考常驻在缓冲存储器116中的实体区块记录表,并根据实体区块记录表中的记录以决定是否自闪存模块120中读取对应的L2P对照表。因此,本实施例可以避免许多无效读取L2P对照表的操作,以增进闪存控制器110的效能。
需注意的是,在以上的实施例中,实体区块记录表310_1、310_2纪录了每一个区块B0~B_M的状态,然而,在本发明的另一个实施例中,为了降低实体区块记录表的数据量以节省缓冲存储器116的空间,如图9所示,实体区块记录表900可以包括了多个区块群组的状态,其中每一个区块群组可以包括多个区块,例如B_0~B_9构成第1个区块群组、B_10~B_19构成第2个区块群组、B_20~B_29构成第3个区块群组、…B_(M-10)~B_M构成第最后一个区块群组。类似于先前的实施例所述,实体地址记录表900记录了闪存模块120中每一个区块群组的状态,其用来表示对应之区块群组的多个L2P对照表是否有记录该区块群组的实体地址,且每一个区块群组的状态是以位的两个数字值来表示,其中数字值“0”表示该些L2P对照表并未记录该区块群组中区块之任一数据页的实体地址,而数字值“1”表示该些L2P对照表有记录该区块群组中区块之任一数据页的实体地址。由于本领域具有通常知识者在阅读过以上的实施例之后应能了解到如何将实体地址记录表900应用在图2、8的流程中,故相关细节在此不予赘述。
简要归纳本发明,在本发明之存取闪存模块的方法中,透过建立对应于每一个L2P对照表的实体区块纪录表,可以在使用很少资料量的情形下标示出每一个L2P对照表具有那些区块的实体地址,以供在进行垃圾数据收集的过程中大幅度地减少无效地自闪存模块120中读取L2P对照表的操作,以有效率地判断出每一个区块中的有效数据页及无效数据页,并提升闪存控制器110的效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种存取闪存模块的方法,包括有:
建立对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;以及
当该闪存模块中特定区块需要进行垃圾收集(garbage collection)操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
2.如权利要求1所述的方法,其中参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页的步骤包括有:
当该实体区块记录表记录了该逻辑地址至实体地址对照表具有该特定区块的实体地址时,自该闪存模块读取该逻辑地址至实体地址对照表,并根据该逻辑地址至实体地址对照表以决定出该数据页是有效数据页或是无效数据页;以及
当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,决定该数据页是无效数据页。
3.如权利要求2所述的方法,其中当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,决定该数据页是无效数据页的步骤包括有:
当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,在不自该闪存模块读取该逻辑地址至实体地址对照表的情形下,直接决定该数据页是无效数据页。
4.如权利要求1所述的方法,其中该实体区块记录表存储在闪存控制器的内存中,且当该闪存控制器更新该逻辑地址至实体地址对照表时,会根据该逻辑地址至实体地址对照表的更新内容一并更新该实体区块记录表。
5.如权利要求4所述的方法,其中该实体区块记录表常驻在该内存中。
6.如权利要求1所述的方法,其中该实体区块记录表记录了该闪存模块中多个区块的状态,且每一个区块的状态记录了该逻辑地址至实体地址对照表是否具有该特定区块中任一数据页的实体地址。
7.如权利要求6所述的方法,其中每一个区块的状态以位来表示,且该位的两个数字值分别用来表示该逻辑地址至实体地址对照表是否具有该特定区块中任一数据页的实体地址。
8.如权利要求1所述的方法,其中该实体区块记录表记录了该闪存模块中多个区块群组的状态,每一区块群组包括了多个区块,且每一个区块群组的状态记录了该逻辑地址至实体地址对照表是否具有该区块群组中区块之任一数据页的实体地址。
9.如权利要求8所述的方法,其中每一个区块群组的状态以位来表示,且该位的两个数字值分别用来表示该逻辑地址至实体地址对照表是否具有该区块群组中区块之任一数据页的实体地址。
10.一种闪存控制器,其中该闪存控制器用来存取闪存模块,且该闪存控制器包括有:
只读存储器,用来存储程序代码;
微处理器,用来执行该程序代码以控制对该闪存模块之存取;以及
内存,用以存储对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;
其中当该闪存模块中特定区块需要进行垃圾收集(garbage collection)操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,该微处理器参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
11.如权利要求10所述的闪存控制器,其中当该实体区块记录表记录了该逻辑地址至实体地址对照表具有该特定区块的实体地址时,该微处理器自该闪存模块读取该逻辑地址至实体地址对照表,并根据该逻辑地址至实体地址对照表以决定出该数据页是有效数据页或是无效数据页;以及当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,该微处理器决定该数据页是无效数据页。
12.如权利要求11所述的闪存控制器,其中当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,该微处理器在不自该闪存模块读取该逻辑地址至实体地址对照表的情形下,直接决定该数据页是无效数据页。
13.如权利要求10所述的闪存控制器,其中当该微处理器更新该逻辑地址至实体地址对照表时,会根据该逻辑地址至实体地址对照表的更新内容一并更新该实体区块记录表。
14.如权利要求13所述的闪存控制器,其中该实体区块记录表常驻在该内存中。
15.如权利要求10所述的闪存控制器,其中该实体区块记录表记录了该闪存模块中多个区块的状态,且每一个区块的状态记录了该逻辑地址至实体地址对照表是否具有该特定区块中任一数据页的实体地址。
16.如权利要求15所述的闪存控制器,其中每一个区块的状态以位来表示,且该位的两个数字值分别用来表示该逻辑地址至实体地址对照表是否具有该特定区块中任一数据页的实体地址。
17.如权利要求10所述的闪存控制器,其中该实体区块记录表记录了该闪存模块中多个区块群组的状态,每一区块群组包括了多个区块,且每一个区块群组的状态记录了该逻辑地址至实体地址对照表是否具有该区块群组中区块之任一数据页的实体地址。
18.如权利要求17所述的闪存控制器,其中每一个区块群组的状态以位来表示,且该位的两个数字值分别用来表示该逻辑地址至实体地址对照表是否具有该区块群组中区块之任一数据页的实体地址。
19.一种电子装置,包括有:
闪存模块;以及
闪存控制器,用来存取该闪存模块;
其中该闪存控制器建立对应于逻辑地址至实体地址对照表之实体区块记录表,其中该实体区块记录表记录了该逻辑地址至实体地址对照表具有该闪存模块中哪些区块的实体地址;以及当该闪存模块中特定区块需要进行垃圾收集(garbage collection)操作时,针对该特定区块中具有位于该逻辑地址至实体地址对照表中逻辑地址的数据页,该闪存控制器参考该实体区块记录表以决定是否自该闪存模块读取该逻辑地址至实体地址对照表,以供判断该数据页是有效数据页或是无效数据页。
20.如权利要求19所述的电子装置,其中当该实体区块记录表记录了该逻辑地址至实体地址对照表具有该特定区块的实体地址时,该闪存控制器自该闪存模块读取该逻辑地址至实体地址对照表,并根据该逻辑地址至实体地址对照表以决定出该数据页是有效数据页或是无效数据页;以及当该实体区块记录表记录了该逻辑地址至实体地址对照表不具有该特定区块的实体地址时,该闪存控制器在不自该闪存模块读取该逻辑地址至实体地址对照表的情形下,直接决定该数据页是无效数据页。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106136049A TWI659304B (zh) | 2017-10-20 | 2017-10-20 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
TW106136049 | 2017-10-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109697170A true CN109697170A (zh) | 2019-04-30 |
CN109697170B CN109697170B (zh) | 2022-09-20 |
Family
ID=66169972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810443706.3A Active CN109697170B (zh) | 2017-10-20 | 2018-05-10 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10606744B2 (zh) |
CN (1) | CN109697170B (zh) |
TW (1) | TWI659304B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688325A (zh) * | 2019-09-05 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
CN113903383A (zh) * | 2020-07-06 | 2022-01-07 | 慧荣科技股份有限公司 | 存储装置、快闪存储器控制器及其存取方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200019513A (ko) * | 2018-08-14 | 2020-02-24 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그 동작 방법 |
US11907114B2 (en) * | 2019-08-18 | 2024-02-20 | Smart IOPS, Inc. | Devices, systems, and methods for dynamically remapping memory addresses |
TWI724550B (zh) * | 2019-09-19 | 2021-04-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
US20240069771A1 (en) * | 2022-08-29 | 2024-02-29 | Micron Technology, Inc. | Read operations for mixed data |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100115188A1 (en) * | 2008-11-06 | 2010-05-06 | Chun-Kun Lee | Method for managing a memory apparatus, and associated memory apparatus thereof |
US20110029715A1 (en) * | 2009-07-29 | 2011-02-03 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
CN102033812A (zh) * | 2009-09-24 | 2011-04-27 | 慧荣科技股份有限公司 | 用于管理闪存多个区块的方法和相关记忆装置及其控制器 |
JP2013196646A (ja) * | 2012-03-22 | 2013-09-30 | Toshiba Corp | メモリ制御装置、データ記憶装置及びメモリ制御方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN107168886A (zh) * | 2016-03-07 | 2017-09-15 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478796B2 (en) * | 2010-03-23 | 2013-07-02 | Apple Inc. | Uncorrectable error handling schemes for non-volatile memories |
US8812816B2 (en) * | 2010-03-23 | 2014-08-19 | Apple Inc. | Garbage collection schemes for index block |
US9727570B2 (en) * | 2011-06-03 | 2017-08-08 | Apple Inc. | Mount-time unmapping of unused logical addresses in non-volatile memory systems |
US8930614B2 (en) * | 2011-07-29 | 2015-01-06 | Kabushiki Kaisha Toshiba | Data storage apparatus and method for compaction processing |
US20130080687A1 (en) * | 2011-09-23 | 2013-03-28 | Avalanche Technology, Inc. | Solid state disk employing flash and magnetic random access memory (mram) |
US9323667B2 (en) * | 2012-04-12 | 2016-04-26 | Violin Memory Inc. | System and method for managing trim operations in a flash memory system using mapping tables and block status tables |
US9928166B2 (en) * | 2013-12-24 | 2018-03-27 | International Business Machines Corporation | Detecting hot spots through flash memory management table snapshots |
CN107038131A (zh) * | 2016-02-04 | 2017-08-11 | 广明光电股份有限公司 | 固态硬盘断电保护装置及方法 |
KR102515137B1 (ko) * | 2016-03-28 | 2023-03-29 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI592800B (zh) * | 2016-10-04 | 2017-07-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
-
2017
- 2017-10-20 TW TW106136049A patent/TWI659304B/zh active
-
2018
- 2018-01-02 US US15/859,738 patent/US10606744B2/en active Active
- 2018-05-10 CN CN201810443706.3A patent/CN109697170B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100115188A1 (en) * | 2008-11-06 | 2010-05-06 | Chun-Kun Lee | Method for managing a memory apparatus, and associated memory apparatus thereof |
US20110029715A1 (en) * | 2009-07-29 | 2011-02-03 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
CN102033812A (zh) * | 2009-09-24 | 2011-04-27 | 慧荣科技股份有限公司 | 用于管理闪存多个区块的方法和相关记忆装置及其控制器 |
JP2013196646A (ja) * | 2012-03-22 | 2013-09-30 | Toshiba Corp | メモリ制御装置、データ記憶装置及びメモリ制御方法 |
CN104268094A (zh) * | 2014-09-23 | 2015-01-07 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
CN107168886A (zh) * | 2016-03-07 | 2017-09-15 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688325A (zh) * | 2019-09-05 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
CN110688325B (zh) * | 2019-09-05 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种固态硬盘的垃圾回收方法、装置、设备及存储介质 |
CN113903383A (zh) * | 2020-07-06 | 2022-01-07 | 慧荣科技股份有限公司 | 存储装置、快闪存储器控制器及其存取方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201917578A (zh) | 2019-05-01 |
US20190121726A1 (en) | 2019-04-25 |
TWI659304B (zh) | 2019-05-11 |
US10606744B2 (en) | 2020-03-31 |
CN109697170B (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697170A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
CN109871333A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
TWI409633B (zh) | 快閃記憶體儲存裝置、其控制器與資料寫入方法 | |
CN105786412B (zh) | 非易失性存储器装置的操作方法 | |
CN110008136A (zh) | 管理闪存模块的方法及相关的闪存控制器及电子装置 | |
CN104166636B (zh) | 存储器储存装置及其还原方法与存储器控制器 | |
CN106067321A (zh) | 适于存储器编程暂停-恢复的控制器 | |
TWI454911B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI405209B (zh) | 資料管理方法及使用此方法的快閃儲存系統與控制器 | |
CN109426619A (zh) | 访问快闪存储器模块的方法及相关闪存控制器与电子装置 | |
CN104484283B (zh) | 一种降低固态硬盘写放大的方法 | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN109783396A (zh) | 存取闪存模块的方法及相关的闪存控制器与电子装置 | |
CN109117383B (zh) | 管理闪存模块的方法和闪存控制器 | |
CN110058795A (zh) | 管理闪存模块的方法及相关的闪存控制器及电子装置 | |
CN106484316A (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
CN103425589A (zh) | 控制装置、存储装置以及存储控制方法 | |
CN104715796A (zh) | 多位存储单元非易失性存储器的写入方法及系统 | |
CN106776376A (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN106598493A (zh) | 一种固态硬盘地址映射表管理方法 | |
CN106445832A (zh) | 闪存存储系统的地址映射方法及装置 | |
TW201216057A (en) | Block management method, memory controller and memory storage apparatus | |
CN102592670B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
TW202024924A (zh) | 資料儲存裝置與資料處理方法 | |
TWI440044B (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 |