CN106055489A - 存储器装置与其操作方法 - Google Patents
存储器装置与其操作方法 Download PDFInfo
- Publication number
- CN106055489A CN106055489A CN201510422191.5A CN201510422191A CN106055489A CN 106055489 A CN106055489 A CN 106055489A CN 201510422191 A CN201510422191 A CN 201510422191A CN 106055489 A CN106055489 A CN 106055489A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- memory controller
- mapping
- write
- 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
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
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- 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
-
- 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/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache 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/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
-
- 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
- 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/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
本发明提供了一种存储器装置。该存储器装置包括一存储器控制器与一非易失性存储器。非易失性存储器耦接到存储器控制器并储存一映射表与一日志表。该存储器控制器用以将一数据及该数据的一逻辑地址写到该非易失性存储器,并从非易失性存储器的映射表加载相关于该数据的逻辑地址的映射信息到存储器控制器的一映射高速缓存。并且,存储器控制器更用以使用该数据的逻辑地址与该数据的物理地址之间的一更新映射关系更新该映射高速缓存,并执行一日志操作以将该更新映射关系写到日志表。
Description
技术领域
本发明是有关于一种存储器装置与其操作方法,特别于,一存储器装置包括一非易失性存储器。
背景技术
非易失性存储器装置是一种即使在移除电源供应时仍可连续储存数据的半导体装置。闪存为非易失性装置中已被发展的一种类型。闪存的操作通常包含将更新数据写入到一未使用的物理位置。为了要有效追踪闪存中数据的物理地址,提供一映射表到闪存以储存外部系统可使用的数据的逻辑地址与闪存可使用的数据的物理地址之间的映射信息。
发明内容
根据本发明的一实施例,存储器装置包含一存储器控制器与一非易失性存储器。非易失性存储器耦接到存储器控制器并储存一映射表与一日志表。存储器控制器用以将一数据及该数据的一逻辑地址写到非易失性存储器,并从非易失性存储器的映射表加载相关于该数据的逻辑地址的映射信息到存储器控制器的映射高速缓存(mapping cache)。并且,存储器控制器还用以使用该数据的逻辑地址与该数据的物理地址之间的一更新映射关系更新该映射高速缓存,并执行一日志操作以将该更新映射关系写到日志表。
根据本发明的另一实施例,提供一种由存储器控制器控制存储器装置的方法。存储器装置包括一非易失性存储器,用以储存映射表与日志表。此方法包括:将数据与该数据的逻辑地址写到非易失性存储器,并从非易失性存储器的映射表加载相关于数据的逻辑地址的映射信息到存储器控制器的映射高速缓存。此方法还包括以该数据的逻辑地址与该数据的物理地址之间的更新映射关系更新映射高速缓存,并且执行一日志操作以将该更新映射关系写到日志表。
根据本发明的又一个实施例,提供一种控制非易失性存储器的存储器控制器。非易失性存储器储存一映射表与一日志表。存储器控制器包括一处理电路用以将数据及该数据的逻辑地址入到非易失性存储器,并从非易失性存储器的映射表加载相关于该数据的逻辑地址的一映射信息到存储器控制器的映射高速缓存。此处理电路更用以使用该数据的逻辑地址与该数据的物理地址之间的一更新映射关系更新该映射高速缓存,并且执行一日志操作以将更新映射关系写到日志表。
所附的附图包含在说明书中,并与说明书构成本说明书的一部分,附图示出了本发明的几个实施例,并且可参照说明书用以解释本发明的实施例。
附图说明
图1绘示依据一实施例的一计算机系统的方块图。
图2绘示依据一实施例的如图1的计算机系统的软件层的方块图。
图3~图6绘示依据一实施例的一写入程序的一例。
图7绘示依据一实施例的一恢复程序的一例。
图8绘示依据一实施例的一存储器控制器执行的写入程序的流程图。
图9绘示依据一实施例的一存储器控制器执行的恢复程序的流程图。
【符号说明】
100:计算机系统
110:系统端
115:存储器装置
120:存储器控制器
122:处理电路
124:SRAM
128:映射高速缓存
130:写回高速缓存
140:闪存
142:存储区域
142a、142b、142i、320、420、520、620:数据区块
144:映射表
146:日志表
210:应用层
220:文件系统
230:快闪转换层
804:初始化映射高速缓存和写回高速缓存
806:指定闪存的一空闲数据区块用于写入数据
808:接收写入要求写入数据及逻辑地址
810:写入数据和该数据的逻辑地址到数据区块的一页
812:判断映射高速缓存是否包含逻辑地址的映射信息
814:判断映射高速缓存是否已装满
816:将在映射高速缓存中较少使用的高速缓存的映射信息写回到闪存的映射表
818:纪录写回高速缓存的写回信息
820:从闪存加载相关于对应逻辑地址的一逻辑区块的映射信息到映射高速缓存中
822:以数据的逻辑地址与数据的一物理地址之间的一更新映射关系更新映射高速缓存
824:判断目前数据区块是否已装满?
826:执行一日志操作
906:读取日志表中最后一页的映射信息包含的高速缓存号码
908:设定N=1
910:读取日志表中第N页的写回信息包含的高速缓存号码
912:判断映射高速缓存中是否也存在任何高速缓存号码
914:从映射高速缓存中移除相关于高速缓存号码的映射信息
916:读取日志表中第N页的映射信息包含的高速缓存号码
918:判断日志表中最后一页的映射信息中是否也存在任何高速缓存号码
920:从闪存的映射表加载相关于高速缓存号码地映射信息到映射高速缓存中
922:以日志表第N页的映射信息更新映射高速缓存
924:判断第N页是否为最后一页
926:设定N=N+1
928:以现在数据区块的映射信息更新映射高速缓存
具体实施方式
参照附图描述本发明的实施例。尽可能地,附图中相同的参考符号用来表示相同或相似的元件。
图1绘示依据一实施例的一计算机系统的方块图(在此文中称为系统100)。该系统100包含有一系统端110与一存储器装置115,存储器装置115包含一存储器控制器120与耦接到存储器控制器120的一非易失性存储器140。非易失性存储器140能够通过一闪存执行。在下文中,非易失性存储器140被称为闪存140。然而对于本领域普通技术人员而言,非易失性存储器140可通过任何其他种非易失性存储器执行,如一只读存储器(ROM)、一铁电随机存取存储器(F-RAM)、一磁性的计算机储存装置或一光盘。
系统端110传送一读取或一写入要求到存储器装置115的存储器控制器120。存储器控制器120能响应系统端110接收的该读取或该写入要求而控制闪存140的操作。
存储器控制器120包含一处理电路122与一易失性存储器124。该处理电路122控制存储器控制器120的全部操作。易失性存储器124可通过一快速随机存取存储器,例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或相变化随机存取存储器(PRAM)执行。在下文中,易失性存储器124被称为SRAM 124。然而,对于本领域普通技术人员而言,易失性存储器124可通过任何其他种易失性存储器能执行,例如DRAM或PRAM。SRAM 124作为存储器控制器120的工作存储器。SRAM124储存映射高速缓存128及写回高速缓存130。映射高速缓存128暂时储存存储器控制器120使用的映射信息。写回高速缓存130用来纪录两个连续的日志操作之间执行在映射高速缓存128上的多个操作,将完整描述如下。
闪存140包含多个数据区块,数据区块用来储存存储区域142的数据、映射表144的映射信息、以及日志表146的日志信息。存储区域142储存系统端110经由存储器控制器120接收的用户数据。数据区块142由多个数据区块142a,142b,...,142i组成,每一个数据区块包含多个页面。每一个数据区块142a,142b,...,142i包含一数据区域用来储存用户数据,以及一保留区域(spare area)用来储存相关于储存在数据区块的用户数据的额外信息,例如用户数据的物理地址及/或逻辑地址。映射表144储存存储区域142中的储存的数据的逻辑地址与物理地址之间的映射信息。日志表146储存日志信息,此日志信息为因为存储器控制器120执行的一操作(例如一写入操作)而改变的映射信息。更具体地说,日志表146包含一映射信息区域以储存映射高速缓存128的更新映射信息、一最后高速缓存区域以储存映射高速缓存128的映射信息,以及一写回区域以储存写回高速缓存130的写回信息。
图2绘示依据一实施例的如图1的计算机系统的软件层的方块图。请参照图2,系统100的软件层包含一应用层210、一文件系统220、一快闪转换层(FTL)230以及一闪存140。应用层210包含执行在系统100上的多种应用程序。文件系统220组织欲储存到闪存140的数据或文件。文件系统220被系统端110驱动。快闪转换层230提供在系统端110与闪存140之间的一接口。在一些实施例,快闪转换层230接收由文件系统220所产生的逻辑地址(LA),并将逻辑地址转换成闪存能使用的物理地址(PA)。
如先前所述,存储器控制器120的工作存储器可由SRAM 124形成,其为一易失性存储器。也就是说,当提供到SRAM 124电源供给中断时,储存于SRAM 124的数据会消失,而导致储存在SRAM 124与储存在闪存140的数据之间会不一致。现在已提出一种解决此问题的方法,即以周期性的将SRAM 124的全部数据复制到闪存140,以使在电源中断时,闪存140的数据能被恢复或者能与SRAM的数据一致。然而,周期性复制SRAM124的全部数据到闪存140将导致数据处理的大量负担,而降低系统效率。相反地,根据本发明实施例的有效率的日志方法将几乎负担而实现可靠的管理储存在SRAM 124的数据。
图3~图6绘示依据一实施例的用于管理储存在SRAM124的数据的一写入程序的一例。在图3~6的例子中,一逻辑地址“N_M”(N与M代表任一大于或等于0的整数)代表一逻辑区块号码“N”与一逻辑页面号码“M”。相似地,一物理地址“A_B”(A与B代表任一大于或等于的整数,且)代表一物理区块号码“A”与一物理页面号码“B”。
在图3~图6的例子中,一映射表包含多个单元,其中该些单元由行与列所排列。每一个单元表示一逻辑地址与一物理地址的映射关系。在映射表中,一单元的地址(一列号码“N”与一行号码“M”)表示一逻辑地址“N_M”。包含在映射表的一个单元的信息“A_B”表示一物理地址“A_B”。
在图3~图6的例子中,假设闪存140的每一个数据区块有4页。然而,本领域普通技术人员可理解的是闪存140的每一个数据区块可以有超过4页。
在图3~图6的例子中,假设映射高速缓存128包含以4行和2列排列的多个单元,并可储存两个逻辑区块的映射信息。映射高速缓存128中的每一列有一高速缓存号码[#N],其表示一逻辑区块号码“N”。一行号码“M”表示一逻辑页号码“M”。也就是说,高速缓存[#N]的第M列的一单元代表一逻辑地址“N_M”。除此之外,包含在映射高速缓存128的一单元的信息“A_B”代表一物理地址“A_B”。因此,映射高速缓存128可储存超过两个逻辑区块的映射信息。
在图3~图6的例子中,图示左半边的表格被储存在SRAM 124,以及图示右半边的表格被储存在闪存140。
请参照图3,首先,在步骤311启动系统100。在这个阶段时,SRAM的映射高速缓存128与写回高速缓存130皆为空的,而闪存140的映射表144储存该完整的映射表。如图3所示的映射表144所指示的(当系统100启动时),逻辑地址LA“0_0”映射到物理地址PA“0_0”,以及逻辑地址LA“0_1”映射到物理地址PA“0_1”,等等。
在步骤312中,当存储器控制器120接收一写入要求以写入数据1及LA“0_0”到闪存140时,存储器控制器120指定具有一物理区块号码“101”的一空闲数据区块320以写入数据。之后存储器控制器120写入数据1到数据区块320的第一页(例如页“0”)的数据区域,数据区块320的第1页有物理地址PA“101_0”。存储器控制器120也写入数据1的逻辑地址LA“0_0”到数据区块320的第一页的一保留区域。
现在逻辑地址LA“0_0”映射到物理地址PA“101_0”,而非物理地址PA“0_0”,所以存储器控制器120将逻辑地址LA“0_0”与物理地址PA“101_0”之间的更新映射关系,也就是“0_0→101_0”,储存到SRAM 124的映射高速缓存128。为了要储存该更新映射关系,存储器控制器120从映射表144加载相关于逻辑区块号码“0”(其对应到更新映射关系的逻辑地址LA“0_0”)的映射信息加载到如高速缓存[#0]的映射高速缓存128。之后存储器控制器120将会通过将在高速缓存“0”的行0的单元包含的信息从“0_0”改变为“101_0”以更新映射关系(“0_0→101_0”)更新映射高速缓存128的高速缓存[#0](如图3灰色部分)。在此阶段中,因为存储器控制器120并未将任何映射高速缓存128的映射信息写回闪存140,所以写回高速缓存130为空的。
在步骤313中,当存储器控制器120接收一写入要求以写入数据2及LA“1_0”到闪存140时,存储器控制器120写入数据2到数据区块320的第2页(也就是页“1”)的数据区域,数据区块320的第2页有物理地址PA“101_1”。存储器控制器120也写入数据2的逻辑地址LA“1_0”到数据区块320的第2页(也就是页“1”)的保留区域。并且,为了要储存映射高速缓存128的更新映射关系(“1_0→101_1”),存储器控制器120从映射表144加载相关于逻辑区块号码1(其对应到更新映射关系的逻辑地址LA“1_0”)的映射信息到如高速缓存[#1]的映射高速缓存128。之后存储器控制器120以更新映射关系(“1_0→101_1”)更新映射高速缓存128的高速缓存[#1](如图3灰色部分)。
在步骤314中,当存储器控制器120接收一写入要求时写入数据3及LA“1_1”到闪存140时,存储器控制器120写入数据3到数据区块320中第3页(也就是页“2”)的数据区域,数据区块320的第2页有物理地址PA“101_1”。存储器控制器120也写入数据3的逻辑地址LA“1_1”到数据区块320的第3页的保留区域。对储存更新映射关系(“1_1→101_2”)到映射高速缓存128的下一步骤而言,因为映射高速缓存128已经包含相关于逻辑区块号码1(其对应到更新映射关系的逻辑地址LA“1_1”)的映射信息,所以存储器控制器120无需加载相关于逻辑区块号码1的映射信息到映射高速缓存128。取而代之,存储器控制器120直接地以更新映射关系(“1_1→101_2”)更新映射高速缓存128中的高速缓存[#1](如图3灰色部分)。
在步骤315中,当存储器控制器120接收一写入要求写入数据4及LA“1_2”到闪存140时,存储器控制器120写入数据4到该数据区块320中第4页(也就是页“3”)的数据区域,数据区块320的第4页面有物理地址PA“101_3”。存储器控制器120也写入数据4的逻辑地址LA“1_3”到数据区块320中第4页的保留区域。之后存储器控制器120以更新映射关系(“1_2→101_3”)更新映射高速缓存128中的高速缓存[#1](如图3灰色部分)。
在数据区块320的第4页被写入数据后,存储器控制器120判断数据区块320是否被装满,因此,存储器控制器120在步骤316中执行一日志操作以记录更新映射信息。在此日志操作中,存储器控制器120将全部的更新信息、相关于映射高速缓存128的映射高速缓存、以及相关于写回高速缓存130的写回信息写到闪存140的日志表146的第1页(也就是页“1”)。首先,存储器控制器120将目前储存在映射高速缓存128的更新映射信息写到日志表146的页“1”的区域。也就是说,存储器控制器120将全部的映射关系“0_0→101_0”、“1_0→101_1”、“1_1→101_2”、“1_2→101_3”写到日志表146的页“1”的映射信息区域。存储器控制器120也将目前储存在映射高速缓存128的高速缓存号码写到日志表146的页“1”的一最后高速缓存区域。也就是说,存储器控制器120会将高速缓存号码[#0]与[#1]写到日志表146的页“1”的最后高速缓存区域。因为目前写回高速缓存130为空的,存储器控制器120并未将任何写回信息写到日志表146。因此,日志表146的页“1”的写回区域包含“FF,FF”,代表当存储器控制器120写入映射信息到日志表146的页“1”时,没有映射信息写回到闪存140。
请参照图4,在步骤411中,当存储器控制器120接收一写入要求以写入数据5及LA“0_0”到闪存140时,存储器控制器120指定一个具有一物理区块号码“102”的数据区块420以写入数据。之后存储器控制器120写入数据5到数据区块420的第1页(也就是页“0”)的数据区域,数据区块420的第1页具有物理地址PA“102_0”。存储器控制器120也写入数据5的逻辑地址LA“0_0”到数据区块420的第1页的保留区域。之后存储器控制器120以更新映射关系“0_0→102_0”更新映射高速缓存128的高速缓存[#0](如图4灰色部分)。在此阶段,存储器控制器120加载记录在日志表146的前一页(即页面“1”)的最后高速缓存区域的高速缓存号码到写回高速缓存130。也就是说,存储器控制器120加载高速缓存号码[#0]与[#1]到写回高速缓存130。然而,由于存储器控制器120并未将任何映射高速缓存128的映射信息写回到闪存140,因此,在写回高速缓存130中没有对应于高速缓存号码[#0]与[#1]的数据输入。
在步骤412中,当存储器控制器120接收一写入要求以写入数据6及LA“2_0”到闪存140时,存储器控制器120写入数据6到数据区块420的第2页(也就是页“1”)的数据区域,数据区块420的第2页具有物理地址PA“102_1””。存储器控制器120也写入数据6的逻辑地址LA“2_0”到数据区块420的第2页的保留区域。之后,存储器控制器120准备以储存SRAM 124的映射高速缓存128的一更新映射关系“2_0→102_1”。因为映射高速缓存128目前有高速缓存[#0]与高速缓存[#1],该些高速缓存分别储存逻辑区块“0”与逻辑区块“1”的映射信息,因此映射高速缓存128达到储存两个逻辑区块的映射信息的最大容量(即映射高速缓存128装满)。因此,存储器控制器120判断以通过将映射高速缓存127的较少使用的高速缓存的映射信息写回到闪存140的映射表144而移除映射高速缓存128中较少使用的列(即高速缓存号码)。在图4的例子中,存储器控制器120判断高速缓存[#1]的使用频率低于高速缓存[#0]。因此,存储器控制器120将高速缓存[#1]的映射信息写回到闪存140的映射表144的行[#1]。据此,闪存140的映射表144的列[#1]以储存在映射高速缓存128中的最新映射信息而被更新(如图4的灰色部分)。在一实施例中,更新映射信息的步骤例如是将最新映射信息写入到另一个位置的映射表144。之后存储器控制器120从映射表144加载对应于逻辑区块号码”2”的映射信息(其对应于更新映射信息的逻辑地址LA“2_0”)到如高速缓存[#2]的映射高速缓存128。存储器控制器120以更新映射关系“2_0→102_1”更新映射高速缓存128的高速缓存[#2](如图4的灰色部分)。存储器控制器120还通过以“v”标示高速缓存[#1]以代表高速缓存[#1]已被写回到闪存140的映射表144而纪录写回高速缓存130的中的写回信息。
在步骤413中,当存储器控制器120接收一写入要求以写入数据7及LA“3_1”到闪存140时,存储器控制器120写入数据7到数据区块420的第3页(也就是页“2”)的数据区域,数据区块420的第3页具有物理地址PA“102_2”。存储器控制器120也写入数据7的逻辑地址LA“3_1”到数据区块420的第3页的保留区域。之后,存储器控制器120准备以储存SRAM 124的映射高速缓存128的一更新映射关系“3_1→102_2”。因为映射高速缓存128目前是被装满的,所以存储器控制器120将较少使用的高速缓存[#0]的映射信息写回闪存140的映射表144的列[#0],并从映射表144加载相关于逻辑区块号码“3”(其对应于更新映射关系的逻辑地址LA“3_1”)的映射信息到如高速缓存[#3]的映射高速缓存128。存储器控制器120之后以更新映射关系“3_1→102_2”更新映射高速缓存128的高速缓存[#3](如图4的灰色部分)。存储器控制器120更通过以“v”标示高速缓存[#0]以代表高速缓存[#0]已被写回到闪存140的映射表144而更新写回高速缓存130。
在步骤414中,当存储器控制器120接收一写入要求以将写入数据8及LA“0_3”到闪存140时,存储器控制器120写入数据8到数据区块420的第4页面(也就是页“3”)的数据区域,数据区块420的第4页具有物理地址PA“102_3”。存储器控制器120也写入数据8的逻辑地址LA“0_3”到数据区块420的第4页的保留区域。之后,存储器控制器120准备以储存SRAM 124的映射高速缓存128的一更新映射关系“0_3→102_3”。因为映射高速缓存128目前是被装满的,所以存储器控制器120将较少使用的高速缓存[#2]的映射信息写回闪存140的映射表144的列[#2],并从映射表144加载相关于逻辑区块号码“0”(其对应于更新映射关系的逻辑地址LA“0_3”)的映射信息到如同高速缓存[#0]的映射高速缓存128。存储器控制器120之后以更新映射关系“0_3→102_3”更新映射高速缓存128的高速缓存[#0](如图4的灰色部分)。因为写回高速缓存130中的高速缓存[#0]与高速缓存[#1]已经被标示为“v”,所以存储器控制器120将不会进一步更新写回高速缓存130。
在数据区块420中第4页被写入数据后,存储器控制器120判断数据区块420是否被装满,并据以在步骤415中执行一日志操作。在此日志操作中,存储器控制器120将全部的更新信息、全部的映射高速缓存信息以及全部的写回信息写到日志表的第2页(也就是页“2”)。首先,存储器控制器120将目前储存在映射高速缓存128的更新映射信息写到日志表146的页“2”的一映射信息区域。也就是说,存储器控制器120将全部的映射信息“0_3→102_3”及“3_1→102_2”写到日志表146的页“2”的映射信息区域。因为映射关系“0_0→102_0”已经被记录在闪存140的映射表144中,所以并不一定要将映射关系“0_0→102_0”写到日志表146。存储器控制器120也将目前储存在映射高速缓存128的高速缓存号码写到日志表的页“2”的最后高速缓存区域。也就是说,存储器控制器120将高速缓存[#0]与[#3]写到日志表的页“2”的最后高速缓存区域。存储器控制器120还将被写回到映射表144的如写回高速缓存130中所指示的高速缓存号码写到日志表146的页“2”的一写回区域。也就是说,存储器控制器120将高速缓存[#0]与高速缓存[#1]写到日志表146的页“2”的最后高速缓存区域。
请参照图5,在步骤511中,当存储器控制器120接收一写入要求以写入数据9及LA“0_2”到闪存140时,存储器控制器120指定一个有一物理区块号码“103”的数据区块520以写入数据。之后存储器控制器120写入数据9到数据区块520中第1页(也就是页“0”)的数据区域,数据区块520的第1页具有物理地址PA“103_0”。存储器控制器120也写入数据9的逻辑地址LA“0_2”到数据区块520中第1页的保留区域。之后存储器控制器120以更新映射关系“0_2→103_0”更新映射高速缓存128的高速缓存[#0](如图5灰色部分)。在此阶段,存储器控制器120加载记录在日志表146的前一页(即页“3”)的最后高速缓存区域的高速缓存号码到写回高速缓存130。也就是说,存储器控制器120加载高速缓存号码[#0]与[#3]到写回高速缓存130。然而,由于存储器控制器120并未将任何映射高速缓存128的映射信息写回到闪存140。因此,在写回高速缓存130中没有对应于高速缓存号码[#0]与[#1]的数据输入。
在步骤512中,当存储器控制器120接收一写入要求以写入数据10及LA“4_0”到闪存140时,存储器控制器120写入数据10到数据区块520的第2页(也就是页“1”)的数据区域,数据区块520的第2页具有物理地址PA“103_1”。存储器控制器120也写入数据10的逻辑地址LA“4_0”到数据区块520的第2页的保留区域。之后存储器控制器120需要储存SRAM 124的映射高速缓存128的更新映射关系“4_0→103_1”。因为映射高速缓存128目前是被装满的,所以存储器控制器120将较少使用的高速缓存号码的高速缓存[#3]的映射信息写回闪存140的映射表144的列[#3],并从映射表144加载相关于逻辑区块号码“4”(其对应于更新映射关系中的逻辑地址LA“4_0”)的映射信息到如高速缓存[#4]的映射高速缓存128。之后存储器控制器120以更新映射关系“4_0→103_1”更新映射高速缓存128中的高速缓存[#4](如图5灰色部分)。存储器控制器120还通过以“v”标示高速缓存[#3]以代表高速缓存[#3]已被写回到闪存140的映射表144而更新写回高速缓存130。
在步骤513中,当存储器控制器120接收一写入要求以写入数据11及LA“4_1”到闪存140时,存储器控制器120写入数据11到数据区块520的第3页(也就是页“2”)的数据区域,数据区块520的第3页具有物理地址PA“103_2”。存储器控制器120也写入数据11的逻辑地址LA“4_1”到数据区块520的第3页的保留区域。之后存储器控制器120以更新映射关系“4_1→103_2”更新映射高速缓存128中的高速缓存[#4](如图5灰色部分)。因为存储器控制器120并未将任何映射信息写回映射表144,所以写回高速缓存130保持不变。
在步骤514中,当存储器控制器120接收一写入要求以写入数据12及LA“0_3”到闪存140时,存储器控制器120写入数据12到数据区块520的第4页(也就是页“3”)的数据区域,数据区块520的第4页面具有PA物理地址“103_3”。存储器控制器120也写入数据12的逻辑地址LA“0_3”到数据区块520的第4页的保留区域。之后存储器控制器120以更新映射关系“0_3→103_3”更新映射高速缓存128中的高速缓存[#0](如图5灰色部分)。因为存储器控制器120并未将任何映射信息写回映射表144,所以写回高速缓存130保持不变。
在数据区块520中第4页被写入数据后,存储器控制器120判断数据区块520是否被装满,并据以在步骤515中执行一日志操作。在此日志操作中,存储器控制器120将全部的更新信息、全部的映射高速缓存信息以及全部的写回信息写到日志表146的第3页(也就是页“3”)。首先,存储器控制器120将目前储存在映射高速缓存128的更新映射信息写到日志表146的页“3”的一映射信息区域。也就是说,存储器控制器120将全部的映射信息“0_2→103_0”、“0_3→103_3”、“4_0→103_1”及“4_1→103_2”写到日志表146的页“3”的映射信息区域。存储器控制器120也将目前储存在映射高速缓存128的高速缓存号码写到日志表146的页“3”的一最后高速缓存区域。也就是说,存储器控制器120写入高速缓存号码[#0]与[#4]到日志表146的最后高速缓存区域。存储器控制器120还将被写回到映射表144的如写回高速缓存130中所指示的高速缓存号码写到日志表146的页“3”的写回区域,其中该高速缓存号码已被写回到映射表144(如同写回高速缓存130)。也就是说,存储器控制器120将高速缓存号码[#3]写到日志表146的页“3”的写回区域。
请参照图6,在步骤611中,当存储器控制器120接收一写入要求时以写入数据13及LA“0_1”到闪存140时,存储器控制器120指定一个具有物理区块号码“200”的数据区块620以写入数据。之后存储器控制器120写入数据13到数据区块620的第1页(也就是页“0”)的数据区域,数据区块620的第1页面具有物理地址“200_0”。存储器控制器120也写入数据13的逻辑地址LA“0_1”到数据区块620中第1页的保留区域。之后存储器控制器120以更新映射关系“0_1→200_0”更新映射高速缓存128的高速缓存[#0](如图6灰色部分)。在此阶段,存储器控制器120加载记录在日志表146的前一页面(即页面“3”)的最后高速缓存区域的高速缓存号码到写回高速缓存130。也就是说,存储器控制器120加载高速缓存号码[#0]与[#4]到写回高速缓存130。然而,由于存储器控制器120并未将任何映射高速缓存128的映射信息写回到闪存140。因此,在写回高速缓存130中没有对应于高速缓存号码[#0]与[#4]的数据输入。
在步骤612中,当存储器控制器120接收一写入要求以写入数据14及LA“4_2”到闪存140时,存储器控制器120写入数据14到数据区块620的第2页(也就是页“1”)即第1页面)的数据区域,数据区块620的第2页具有物理地址PA“200_1”。存储器控制器120也写入数据14的逻辑地址LA“4_2”到数据区块620的第2页的保留区域。之后存储器控制器120以更新映射关系“4_2→200_1”更新映射高速缓存128中的高速缓存[#4](如图6灰色部分)。因为存储器控制器120并未将任何映射信息写回映射表144,所以写回高速缓存130保持不变。
在步骤613中,当存储器控制器120接收一写入要求以写入数据15及LA“4_3”到闪存140时,存储器控制器120写入数据15到数据区块620的第3页面(也就是页“2”)的数据区域,数据区块620的第3页具有物理地址PA“200_2”。存储器控制器120也写入数据15的逻辑地址LA“4_3”到数据区块620的第3页的保留区域。之后存储器控制器120以更新映射关系“4_3→200_2”更新映射高速缓存128中的高速缓存[#4](如图6灰色部分)。因为存储器控制器120并未将任何映射信息写回映射表144,所以写回高速缓存130保持不变。
闪存140写入程序可持续执行如同先前描述的步骤。然而,当供应到系统100的电源中断时,SRAM 124的数据将会消失。在此情况下,当系统100的电源重新恢复时,存储器控制器120通过扫描储存在数据区块620的数据、储存在映射表144的数据以及储存在闪存140的日志表146的数据而恢复映射信息。
图7绘示依据一实施例的一恢复程序的一例。此恢复程序可在系统100的断电而恢复电源之后被执行。在图7的例子中,断电发生在如图6所示的步骤613之后,其中存储器控制器120才刚完成写入数据15及LA“4_3到数据区块620,并以更新映射关系“4_3→200_2”更新映射高速缓存128。由于系统100的电源中断,SRAM 124的数据消失,而储存在数据区块620的数据及储存在闪存140的日志表146的数据保持不变。
请参照图7,在步骤711a中,存储器控制器120读取储存在闪存140的日志表146的最后一页(也就是页“3”)的最后高速缓存区域的映射信息,并得到高速缓存号码[#0]与[#4],这代表只有在映射表144中对应于逻辑区块号码“0”与“4”的映射信息被改变且并未被写回到闪存140的映射表144。也就是说,映射表144中对应于逻辑区块号码“0”与“4的映射信息不是最新的,而映射表144中对应于逻辑区块号码“1”、“2”及“3”的映射信息是最新的。在这阶段,存储器控制器120并未从映射表144中加载任何映射信息到SRAM 124的映射高速缓存128,因此映射高速缓存128为空的。
在步骤711b中,存储器控制器120读取储存在日志表146的页“1”的最后高速缓存区域的映射信息,,并得到高速缓存号码[#0]与[#1]。之后存储器控制器120判断高速缓存[#0]是否存在于日志表146的最后一页(也就是页“3”)的映射高速缓存信息中。也就是说,映射高速缓存128中对应于逻辑区块号码“0”的映射信息不是最新的,而映射高速缓存128中中对应于逻辑区块号码“1”的映射信息是最新的。因此,存储器控制器120无需将相关于逻辑区块号码“1”的映射信息加载到映射高速缓存128。存储器控制器120仅从映射表144加载相关于逻辑区块号码“0”的映射信息到如高速缓存[#0]的映射高速缓存128。
在步骤711c中,存储器控制器120读取储存在日志表146的页“1”的映射信息区域的映射信息,并根据此读取映射信息更新映射高速缓存128。也就是说,存储器控制器120读取储存在日志表146的页“1”的映射信息区域的映射关系“0_0→101_0”、“1_0→101_1”、“1_1→101_2”及“1_2→101_3”。因为映射关系“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”对应逻辑区块号码的“1”的映射信息而是映射高速缓存128中最新的,所以存储器控制器120无需依据映射关系“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”更新映射高速缓存128。存储器控制器120仅以读取映射关系“0_0→101_0”更新映射高速缓存128中的高速缓存[#0](如图7灰色部分)。
在步骤712a中,存储器控制器120读取储存在日志表146的页“2”的写回区域的数据,并得到高速缓存号码[#0]与[#1],这代表映射高速缓存128中对应于逻辑区块号码“0”与“1”的映射信息在电源中断发生前已被写回映射表144。因为高速缓存[#0]已经存在于映射高速缓存128中,所以存储器控制器120判断而从映射高速缓存128移除包含在高速缓存[#0]的映射信息。
在步骤712b中,存储器控制器120读取储存在日志表146的页“2”的最后高速缓存区域的数据,并得到高速缓存号码[#0]与[#3]。因为映射高速缓存128中对应于逻辑区块号码“3”的映射信息是最新的,所以存储器控制器120无需将相关于逻辑区块号码“3”的映射信息加载到映射高速缓存128。存储器控制器120仅从映射表144加载相关于逻辑区块号码“0”的映射信息到如高速缓存[#0]的映射高速缓存128。
在步骤712c中,存储器控制器120读取储存在日志表146的页“2”的映射信息区域的映射信息,并根据此读取映射信息更新映射高速缓存128。也就是说,存储器控制器120读取储存在日志表146的页“2”的映射信息区域的映射关系“0_3→102_3”与“3_1→102_2”。因为映射关系“3_1→102_2”对应逻辑区块号码“3”的映射信息而是为映射表144中最新的,所以存储器控制器120无需依据该映射关系“3_1→102_2”更新映射高速缓存128。存储器控制器120仅以读取映射关系“0_3→102_3”更新映射高速缓存128中的高速缓存[#0](如图7灰色部分)。
在步骤713a中,存储器控制器120读取储存在日志表146的页“3”的写回区域的数据,并且得到高速缓存号码[#3],这代表映射高速缓存128中对应于逻辑区块号码“3”的映射信息在电源中断前已被写回映射表144。因为映射高速缓存128并未包含高速缓存[#3],所以存储器控制器120判断对于映射高速缓存128不执行任何动作。
在步骤713b中,存储器控制器120读取储存在日志表146的页“3”的映射信息区域的映射信息,并且得到高速缓存号码[#0]与[#4]。因为映射高速缓存128已经包含高速缓存号码[#0],所以存储器控制器120仅从映射表144加载相关于逻辑区块号码“4”的映射信息加载到如高速缓存[#4]的映射高速缓存128。
在步骤713c,存储器控制器120读取储存在日志表146的页“3”的映射信息区域的映射信息,并根据此读取映射信息更新映射高速缓存128。也就是说,存储器控制器120读取储存在日志表146的页面“3”的映射信息区域的映射关系“0_2→103_0”、“0_3→103_3”、“4_0→103_1”、及“4_1→103_2”。之后存储器控制器120以读取映射关系“0_2→103_0”、“0_3→103_3”、“4_0→103_1”、及“4_1→103_2”更新映射高速缓存128中的高速缓存[#0]与[#3](如图7灰色部分)。
在步骤714中,存储器控制器120扫描目前的数据区块620并得到映射关系“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”,此数据区块620是断电之前存储器控制器120使用的最后数据区块。之后存储器控制器120以获得的映射关系“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”更新映射高速缓存128(如图7灰色部分)。
之后,存储器控制器120结束此恢复程序。当在电源中断发生时,在恢复程序结束时的步骤714的映射高速缓存128与在步骤613的映射高速缓存128是相同的。也就是说,通过扫描储存在数据区块620的数据、储存在映射表144的数据及储存在闪存140的日志表146的数据,存储器控制器120能将映射信息恢复为电源中断前的状态。
图8绘示依据一实施例的一存储器控制器执行的写入程序的流程图。请参照图8,当系统100被启动时,在步骤804,存储器控制器120初始化映射高速缓存128与SRAM 124的写回高速缓存130。举例来说,存储器控制器120通过清除映射高速缓存128与写回高速缓存130来初始化该映射高速缓存128与SRAM 124的写回高速缓存130。因此,映射高速缓存128与写回高速缓存130为空的。
在步骤806,存储器控制器120指定闪存140中的一空闲数据区块以写入数据。举例来说,如图3步骤312所示,存储器控制器120指定具有物理区块号码“101”的数据区块320以写入数据。
在步骤808,存储器控制器120从系统端110接收一写入要求以写入数据及一逻辑地址到闪存140。举例来说,如图3步骤312所示,存储器控制器120接收一写入要求以写入数据1及LA“0_0”到闪存140。
在步骤810,存储器控制器120响应于接收写入要而写入数据和该数据的逻辑地址到指定的数据区块的一页。举例来说,如图3步骤313所示,存储器控制器120写入数据1到数据区块320的第一页的数据区域,并写入数据1的逻辑地址到数据区块320的第一页的保留区域。
之后存储器控制器120将数据的逻辑地址与数据的物理地址之间的一更新映射关系储存到SRAM 124的映射高速缓存128中。举例来说,如图3步骤312所示,存储器控制器120需要将数据区块320的第一页的LA“0_0”与PA“101_0”之间的更新映射关系储存到映射高速缓存128。
具体地,在步骤812,存储器控制器120先判断映射高速缓存128是否包含数据的逻辑地址的映射信息。如果在步骤812中映射高速缓存128没有包含数据的逻辑地址的映射信息(否),则在步骤814,存储器控制器120判断映射高速缓存128是否已被装满。如果在步骤814中映射高速缓存128已被装满(是),则在步骤816存储器控制器120将映射高速缓存128中较少使用的高速缓存的映射信息写回到闪存140的映射表144,并在步骤818纪录写回高速缓存130的写回信息。写回信息代表较少使用的高速缓存中的映射信息已经被写回闪存140的映射表144。之后在步骤820,存储器控制器120从映射表144加载相关于对应逻辑地址的逻辑区块的映射信息到映射高速缓存中128,并在步骤822,以数据的逻辑地址与数据的物理地址之间的一更新映射关系更新映射高速缓存128。
举例来说,如图4步骤412所示,为了储存SRAM 124的映射高速缓存128的一更新映射关系“2_0→102_1,存储器控制器120先判断映射高速缓存128没有包含数据的逻辑地址″2_0″的映射信息,且映射高速缓存128是装满的,也就是映射高速缓存128目前有对应储存逻辑区块″0″与逻辑区块″1″的映射信息的高速缓存[#0]与高速缓存[#1],并达到储存两个逻辑区块的映射信息的最大容量。因此,存储器控制器120将较少使用的高速缓存,也就是高速缓存[#1]中的映射信息写回闪存140的映射表,并记录写回高速缓存130中代表高速缓存[#1]中的映射信息已经被写回闪存140的写回信息。存储器控制器120之后从映射表144加载相关于逻辑区块号码“2”(其对应于更新映射关系中的LA“2_0”)的映射信息到映射高速缓存128,并以更新映射关系“2_0→102_1”更新映射高速缓存128中的高速缓存[#2]。
请再参照图8,如果在步骤812,存储器控制器120判断映射高速缓存128包含有数据的逻辑地址的映射信息(是),则在步骤822,存储器控制器以数据的逻辑地址与数据的物理地址之间的更新映射关系直接更新映射高速缓存。举例来说,如图3步骤314所示,为了储存映射高速缓存128中的更新映射关系(“1_1→101_2”),存储器控制器120判断映射高速缓存128包含逻辑地址LA“1_1”的映射信息的高速缓存[#1],并以更新映射关系“1_1→101_2”直接更新映射高速缓存128中的高速缓存[#1]。
请再参照图8,如果在步骤812,存储器控制器120判断映射高速缓存128没有包含数据的逻辑地址的映射信息(否),但是在步骤814,映射高速缓存没有被装满(否),则在步骤820存储器控制器120从映射表144直接加载相关于对应逻辑地址的逻辑区块的映射信息到映射高速缓存中128,并在步骤822以数据的逻辑地址与数据的物理地址之间的更新映射关系更新映射高速缓存128。举例来说,如图3步骤313所示,为了储存映射高速缓存128中的更新映射关系“1_0→101_1”,存储器控制器120判断映射高速缓存128未包含相关于逻辑地址LA“1_0”的映射信息,但映射高速缓存128未被装满。据此,存储器控制器120从映射表144加载对应LA“1_0”的相关于逻辑区块号码“1”的映射信息到如高速缓存[#1]的映射高速缓存128,并以更新映射关系“1_0→101_1”更新映射高速缓存128中的高速缓存[#1]。
请再参照图8,在存储器控制器120在步骤822以更新映射关系更新映射高速缓存128之后,在步骤824,存储器控制器120判断目前数据区块是否被装满。如果在步骤824中目前数据区块被装满(是),则在步骤826存储器控制器120执行一日志操作以将在映射高速缓存128中的更新映射信息、映射高速缓存128中的映射高速缓存信息、及写回高速缓存130中的写回信息写到闪存140的日志表146。之后存储器控制器120回到步骤806以指定闪存140的一空闲数据区块以写入未来数据。如果在步骤824目前数据区块没有被装满(否),则存储器控制器120回到步骤808以接收写入要求以写入数据。举例来说,如图4的步骤415所示,当存储器控制器120判断数据区块320被装满时,存储器控制器120将全部的映射关系“0_3→102_3”与“3_1→102_2”写到日志表146的映射信息区域。存储器控制器120也将目前储存在映射高速缓存128中的高速缓存号码[#0]与[#3]写到日志表146的最后高速缓存区域。存储器控制器120还将目前储存在写回高速缓存130中的高速缓存号码[#0]与高速缓存号码[#1]写到日志表146的写回区域。之后存储器控制器120如图4所示的指定数据区块420以写入未来数据。
图9绘示依据一实施例的一存储器控制器执行的恢复程序的流程图。请参照图9,在步骤906,当存储器控制器120判断系统100在一断电而恢复电源之后,存储器控制器120读取储存在日志表146的最后一页的映射高速缓存信息包含的高速缓存号码。举例来说,如图7的步骤711a所示,存储器控制器120读取储存在日志表146的最后一页(即页面“3”)的最后高速缓存区域映射高速缓存信息,并得到高速缓存号码[#0]与[#4]。在此时,因为电源中断导致的SRAM的数据消失,所以映射高速缓存128为空的。
之后,存储器控制器120通过从第一页依次读取储存在日志表146的不同页的信息而恢复映射高速缓存128中的映射信息。首先,在步骤908,存储器控制器120设定一页面指标N=1。之后,在步骤910,存储器控制器120读取日志表146的第N页中的写回信息包含的高速缓存号码。举例来说,如图7的步骤711a所示,当N=1时,存储器控制器120读取日志表146的页“1”的写回信息包含的″FF,FF″,″FF,FF″代表当存储器控制器120写入信息到日志表146中的页“1”时,没有映射信息被写回闪存140。在另一个例子中,如图7的步骤712a所示,当N=2时,存储器控制器120读取日志表146的页“2”的写回信息包含的高速缓存[#0]与高速缓存[#1],这代表当存储器控制器120写入映射信息到日志表146的页“2”时,映射高速缓存128的高速缓存[#0]与高速缓存[#1]的映射信息已被写回闪存140。
请再参照图9,在步骤912,存储器控制器120判断映射高速缓存128中的步骤910读取的写回信息是否也存在任何的高速缓存号码。在步骤912中,如果在映射高速缓存128中也存在多个步骤910读取的一个或多个高速缓存号码(是),存储器控制器120从映射高速缓存128中移除相关于该一个或多个高速缓存号码的映射信息。举例来说,如图7的步骤712a所示,当N=2时,存储器控制器120读取日志表146的页“2”的写回信息包含的高速缓存[#0]与高速缓存[#1],并判断映射高速缓存128目前存在高速缓存[#0]。因此,存储器控制器120从映射高速缓存128中移除高速缓存[#0]包含的映射信息。
存储器控制120器读取日志表146中第N页的映射信息包含的高速缓存号码(步骤916)。或者,假如存储器控制器120判断在映射高速缓存128中没有高速缓存号码(步骤912:否),存储器控制器120将直接读取日志表146中第N页的映射信息包含的高速缓存号码(步骤916)。接着存储器控制器120会判断日志表146中最后一页的映射高速缓存信息是否也存在任何高速缓存号码(步骤918)。如果一个或多个高速缓存号码已存日志表146中最后一页的映射高速缓存信息中(步骤918:是),存储器控制器120会从闪存140的映射表中144将相关高速缓存号码的映射信息加载到映射高速缓存128中(步骤920)。然后存储器控制器120还以日志表146中第N页的映射信息更新映射高速缓存(步骤922)。
举例来说,如图7的步骤711b所示,当N=1时,存储器控制器120读取储存在日志表146的页“1”的最后高速缓存区域的映射高速缓存信息包含的高速缓存号码[#0]与高速缓存[#1]。之后存储器控制器120判断高速缓存[#0]存在于储存在日志表146的最后的一页的映射信息。因此,存储器控制器120从闪存140的映射表144中加载相关于逻辑区块号码″0″的映射信息到映射高速缓存128。之后存储器控制器120读取储存在日志表146的页“1”的映射信息区域的映射关系“0_0→101_0”、“1_0→101_1”、“1_1→101_2”、及“1_2→101_3”,并如图7的步骤711所示,以映射关系“0_0→101_0”更新映射高速缓存128。
接在步骤922之后,在步骤924中,存储器控制器120判断第N页是否为日志表146的最后一页。或者,如果在步骤918中存储器控制器120判断在日志表146的最后一页没的映射高速缓存信息没有存在高速缓存号码(否),则存储器控制器120直接跳到步骤924以判断第N页是否为日志表146的最后一页。如果在步骤924,第N页不是日志表146的最后一页(否),则在步骤926存储器控制器120设定N=N+1,并回到步骤910以读取日志表146的第N页中的写回信息包含的高速缓存号码。
否则,如果在步骤924,第N页是日志表146的最后一页(是),则在步骤928存储器控制器120以目前数据区块包含的映射信息更新映射高速缓存。举例来说,如图7的步骤714所示,当存储器控制器120判断页“3”为日志表146的最后一页时,存储器控制器120以包含在数据区块620的映射关系“0_1→200_0”、“4_2→200_1”、及“4_3→200_2”更新映射高速缓存128。之后存储器控制器120便完成此恢复程序。
以上揭露的实施例是在数据区块被填满时执行一日志操作。然而,在一些实施例中,当数据区块没有装满时也可执行日志操作。举例来说,日志操作可在经过一段预定周期的时间之后执行。
本领域普通技术人员依据本说明书和本发明揭露的实施方式容易想到其他实例。应当理解的是本说明书和这些例子仅是示范性的而非用以限定本发明。本发明真正的保护范围和精神如权利要求所示。
Claims (12)
1.一种存储器装置,其特征在于,包括:
一存储器控制器;及
一非易失性存储器,用以耦接到该存储器控制器并储存一映射表与一日志表,
其中该存储器控制器用以:
将一数据及该数据的一逻辑地址写到该非易失性存储器;
从该非易失性存储器的该映射表加载相关于该数据的该逻辑地址的一映射信息到该存储器控制器的一映射高速缓存;
以该数据的该逻辑地址与该数据的一物理地址之间的一更新映射关系更新该映射高速缓存;以及
执行一日志操作以将该更新映射关系写到该日志表。
2.根据权利要求1所述的存储器装置,其中该非易失性存储器还包括多个数据区块,该存储器控制器还用以:
将该数据与该逻辑地址写到该多个数据区块的其中一个,以及
当该多个数据区块的该其中一个被装满时,执行该日志操作,并指定一空闲数据区块以写入一未来数据。
3.根据权利要求1所述的存储器装置,其中该存储器控制器还用以在一写回高速缓存纪录两个连续的日志操作之间执行在该映射高速缓存上的多个操作,并将储存在该写回高速缓存的信息写到该日志表以执行该日志操作。
4.根据权利要求1所述的存储器装置,其中该存储器控制器更用以在一断电而恢复电源之后基于储存在该日志表的该信息恢复该映射高速缓存的该映射信息。
5.一种由一存储器控制器控制一存储器装置的方法,其特征在于,该存储器装置包括一非易失性存储器,用以储存一映射表与一日志表,该方法包括:
将一数据与该数据的一逻辑地址写到该非易失性存储器;
从该非易失性存储器的该映射表加载相关于该数据的该逻辑地址的一映射信息到该存储器控制器的一映射高速缓存;
以该数据的该逻辑地址与该数据的一物理地址之间的一更新映射关系更新该映射高速缓存;以及
执行一日志操作以将该更新映射关系写到该日志表。
6.根据权利要求5所述的方法,其中,该非易失性存储器还包括多个数据区块,
将该数据写到该非易失性存储器的步骤包含将该数据与该逻辑地址写到该多个数据区块的其中一个,以及
当该多个数据区块的该其中一个被装满时,执行该日志操作,并指定一空闲数据区块以写入一未来数据。
7.根据权利要求5所述的方法,其中该方法还包含在一写回高速缓存中纪录两个连续的日志操作之间执行在该映射高速缓存上的多个操作,其中该日志操作包括将储存在该写回高速缓存的信息写到该日志表。
8.根据权利要求5所述的方法,其特征在于,还包括:
在一断电而恢复电源之后基于储存在该日志表中的该信息恢复该映射高速缓存中的该映射信息。
9.一种用以控制一非易失性存储器的存储器控制器,其特征在于,该非易失性存储器储存一映射表与一日志表,
该存储器控制器包括一处理电路用以:
将一数据及该数据的一逻辑地址写到该非易失性存储器;
从该非易失性存储器的该映射表加载相关于该数据的该逻辑地址的一映射信息到该存储器控制器的一映射高速缓存中;
以该数据的该逻辑地址与该数据的一物理地址之间的一更新映射关系更新该映射高速缓存;以及
执行一日志操作以将该更新映射关系写到该日志表。
10.根据权利要求9所述的存储器控制器,其中,该非易失性存储器还包括多个数据区块,该存储控制器的该处理电路用以:
将该数据与该逻辑地址写到该多个数据区块的其中一个,以及
当该多个数据区块的该其中一个被装满时,执行该日志操作,并指定一空闲数据区块以写入一未来数据。
11.根据权利要求9所述的存储器控制器,其中该存储器控制器的该处理电路用以在一写回高速缓存中纪录两个连续的日志操作之间执行在该映射高速缓存上的多个操作,并将储存在该写回高速缓存的信息写到该日志表以执行该日志操作。
12.根据权利要求9所述的存储器控制器,其中该存储器控制器的该处理电路还用以在一断电而恢复电源之后基于储存在该日志表中的该信息恢复该映射高速缓存中的该映射信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/683,630 | 2015-04-10 | ||
US14/683,630 US9817588B2 (en) | 2015-04-10 | 2015-04-10 | Memory device and operating method of same |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055489A true CN106055489A (zh) | 2016-10-26 |
CN106055489B CN106055489B (zh) | 2019-05-10 |
Family
ID=57112239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510422191.5A Active CN106055489B (zh) | 2015-04-10 | 2015-07-17 | 存储器装置与其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9817588B2 (zh) |
CN (1) | CN106055489B (zh) |
TW (1) | TWI590049B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108470006A (zh) * | 2017-02-23 | 2018-08-31 | 西部数据技术公司 | 用于进行非阻塞控制同步操作的技术 |
CN108874302A (zh) * | 2017-05-16 | 2018-11-23 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN109032968A (zh) * | 2017-06-09 | 2018-12-18 | 三星电子株式会社 | 包括逻辑到物理地址映射存储设备及其操作方法 |
CN109388332A (zh) * | 2017-08-04 | 2019-02-26 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
CN109710173A (zh) * | 2017-10-26 | 2019-05-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN111538682A (zh) * | 2018-12-31 | 2020-08-14 | 美光科技公司 | 混合逻辑到物理高速缓存方案 |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9904607B2 (en) | 2015-11-13 | 2018-02-27 | International Business Machines Corporation | Logical to physical table restoration from stored journal entries |
KR102570367B1 (ko) * | 2016-04-21 | 2023-08-28 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법 |
CN108614665B (zh) * | 2016-12-09 | 2021-04-02 | 北京兆易创新科技股份有限公司 | 基于NAND flash的映射表数据更新方法和装置 |
US10359955B2 (en) | 2017-02-23 | 2019-07-23 | Western Digital Technologies, Inc. | Data storage device configured to perform a non-blocking control update operation |
US10521343B2 (en) * | 2017-06-12 | 2019-12-31 | Western Digital Technologies, Inc. | Storage system with a controller having a persistent memory interface to local memory |
US10635654B2 (en) * | 2017-06-12 | 2020-04-28 | Samsung Electronics Co., Ltd. | Data journaling for large solid state storage devices with low DRAM/SRAM |
US10732896B2 (en) * | 2017-06-12 | 2020-08-04 | Western Digital Technologies, Inc. | Method and system for reading data during control sync operations |
KR20200104601A (ko) | 2019-02-27 | 2020-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR102456173B1 (ko) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102521746B1 (ko) * | 2017-12-18 | 2023-04-13 | 에스케이하이닉스 주식회사 | 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 |
TWI695322B (zh) * | 2019-01-18 | 2020-06-01 | 旺宏電子股份有限公司 | 記憶體及記憶體操作方法 |
CN110674056B (zh) * | 2019-09-02 | 2021-11-23 | 新华三大数据技术有限公司 | 一种垃圾回收方法及装置 |
CN112486403A (zh) * | 2019-09-12 | 2021-03-12 | 伊姆西Ip控股有限责任公司 | 管理存储对象的元数据的方法、装置和计算机程序产品 |
US20220374360A1 (en) * | 2021-05-18 | 2022-11-24 | Macronix International Co., Ltd. | Memory device and method for accessing memory device |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1420440A (zh) * | 2001-11-16 | 2003-05-28 | 三星电子株式会社 | 快闪存储器管理方法 |
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
US20130091320A1 (en) * | 2011-10-05 | 2013-04-11 | Hitachi, Ltd. | Storage system and storage method |
CN103236116A (zh) * | 2013-03-21 | 2013-08-07 | 胡飞虎 | 电子储物柜箱格存取系统及投递方法 |
CN103530062A (zh) * | 2012-07-03 | 2014-01-22 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
US20140059279A1 (en) * | 2012-08-27 | 2014-02-27 | Virginia Commonwealth University | SSD Lifetime Via Exploiting Content Locality |
US20140337562A1 (en) * | 2013-05-08 | 2014-11-13 | Fusion-Io, Inc. | Journal management |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US9047214B1 (en) * | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US20150378642A1 (en) * | 2013-03-15 | 2015-12-31 | Seagate Technology Llc | File system back-up for multiple storage medium device |
-
2015
- 2015-04-10 US US14/683,630 patent/US9817588B2/en active Active
- 2015-06-16 TW TW104119484A patent/TWI590049B/zh active
- 2015-07-17 CN CN201510422191.5A patent/CN106055489B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1420440A (zh) * | 2001-11-16 | 2003-05-28 | 三星电子株式会社 | 快闪存储器管理方法 |
CN102089746A (zh) * | 2008-05-13 | 2011-06-08 | 微软公司 | 采用事务日志的闪存恢复 |
US20130091320A1 (en) * | 2011-10-05 | 2013-04-11 | Hitachi, Ltd. | Storage system and storage method |
CN103530062A (zh) * | 2012-07-03 | 2014-01-22 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
US20140059279A1 (en) * | 2012-08-27 | 2014-02-27 | Virginia Commonwealth University | SSD Lifetime Via Exploiting Content Locality |
CN103236116A (zh) * | 2013-03-21 | 2013-08-07 | 胡飞虎 | 电子储物柜箱格存取系统及投递方法 |
US20140337562A1 (en) * | 2013-05-08 | 2014-11-13 | Fusion-Io, Inc. | Journal management |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288201B2 (en) | 2017-02-23 | 2022-03-29 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
CN108470006A (zh) * | 2017-02-23 | 2018-08-31 | 西部数据技术公司 | 用于进行非阻塞控制同步操作的技术 |
CN108874302B (zh) * | 2017-05-16 | 2021-12-10 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN108874302A (zh) * | 2017-05-16 | 2018-11-23 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN109032968A (zh) * | 2017-06-09 | 2018-12-18 | 三星电子株式会社 | 包括逻辑到物理地址映射存储设备及其操作方法 |
CN109032968B (zh) * | 2017-06-09 | 2023-12-19 | 三星电子株式会社 | 包括逻辑到物理地址映射存储设备及其操作方法 |
CN109388332A (zh) * | 2017-08-04 | 2019-02-26 | 群联电子股份有限公司 | 数据存储方法、存储器控制电路单元及存储器存储装置 |
CN109710173B (zh) * | 2017-10-26 | 2021-12-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN109710173A (zh) * | 2017-10-26 | 2019-05-03 | 旺宏电子股份有限公司 | 存储器装置及应用于其上的数据管理方法 |
CN111538682A (zh) * | 2018-12-31 | 2020-08-14 | 美光科技公司 | 混合逻辑到物理高速缓存方案 |
US11650931B2 (en) | 2018-12-31 | 2023-05-16 | Micron Technology, Inc. | Hybrid logical to physical caching scheme of L2P cache and L2P changelog |
CN111538682B (zh) * | 2018-12-31 | 2023-11-10 | 美光科技公司 | 混合逻辑到物理高速缓存方案 |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Also Published As
Publication number | Publication date |
---|---|
TW201636845A (zh) | 2016-10-16 |
US9817588B2 (en) | 2017-11-14 |
CN106055489B (zh) | 2019-05-10 |
US20160299710A1 (en) | 2016-10-13 |
TWI590049B (zh) | 2017-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106055489A (zh) | 存储器装置与其操作方法 | |
CN101876949B (zh) | 数据储存系统与方法 | |
CN101176074B (zh) | 非易失性存储器件,写入数据的方法,和读出数据的方法 | |
CN100424655C (zh) | 快闪存储器管理方法 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN101194238B (zh) | 存储器控制器、非易失性存储装置、非易失性存储系统及数据写入方法 | |
CN101763894B (zh) | 半导体存储装置和存储控制方法 | |
US7562202B2 (en) | Systems, methods, computer readable medium and apparatus for memory management using NVRAM | |
CN101218566B (zh) | 用于方便快速唤醒快闪存储器系统的方法和系统 | |
CN102508784B (zh) | 视频监控设备中闪存卡的数据存储方法及其系统 | |
CN103577574B (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN107038131A (zh) | 固态硬盘断电保护装置及方法 | |
CN106484319A (zh) | 用于非易失性存储器的支持无效命令 | |
CN103678177B (zh) | 固态硬盘装置 | |
CN110058796A (zh) | 数据储存装置 | |
CN101169751A (zh) | 具有闪存设备的系统及其数据恢复方法 | |
CN101479805A (zh) | 具有闪速缓存部分的闪速存储器装置及其使用方法 | |
CN101901189B (zh) | 更新用户数据的方法以及恢复用户数据的方法 | |
CN102768644A (zh) | 闪存系统及其闪存无效数据页信息的管理方法与回收方法 | |
CN101233498A (zh) | 快闪存储器中利用直接数据文件存储的数据操作 | |
CN101576852A (zh) | 在非易失性存储器中为从电源故障恢复而绕回序列号 | |
CN103544110A (zh) | 一种基于固态盘的块级连续数据保护方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN109669889B (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
CN102063380A (zh) | 一种向非易失性存储器写入数据的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |