CN102332290A - 用来管理和存取闪存模块的控制器 - Google Patents
用来管理和存取闪存模块的控制器 Download PDFInfo
- Publication number
- CN102332290A CN102332290A CN2011101352428A CN201110135242A CN102332290A CN 102332290 A CN102332290 A CN 102332290A CN 2011101352428 A CN2011101352428 A CN 2011101352428A CN 201110135242 A CN201110135242 A CN 201110135242A CN 102332290 A CN102332290 A CN 102332290A
- Authority
- CN
- China
- Prior art keywords
- address
- block
- group
- treatment circuit
- addressing
- 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
- 238000004891 communication Methods 0.000 claims description 31
- 238000013519 translation Methods 0.000 claims description 15
- 230000006399 behavior Effects 0.000 claims description 4
- 230000000052 comparative effect Effects 0.000 claims description 3
- 238000000034 method Methods 0.000 abstract description 195
- 238000013507 mapping Methods 0.000 abstract description 20
- 230000008569 process Effects 0.000 description 166
- 238000010586 diagram Methods 0.000 description 64
- 238000007726 management method Methods 0.000 description 48
- 230000009183 running Effects 0.000 description 47
- 230000009471 action Effects 0.000 description 34
- 230000008859 change Effects 0.000 description 19
- 238000012217 deletion Methods 0.000 description 13
- 230000037430 deletion Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 241001269238 Data Species 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000013515 script Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000008034 disappearance Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000035876 healing Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004904 shortening 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
- 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/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
-
- 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/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/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明的闪存控制器之一包含有:通讯接口,用于耦接主控装置;以及处理电路,用于将对应第一组连续逻辑地址的第一组地址记录于第一寻址区块的第一区段,将对应第二组连续逻辑地址的第二组地址记录于第一寻址区块的第二区段,将对应第三组连续逻辑地址的第三组地址记录于第二寻址区块的第一区段,以及将对应第四组连续逻辑地址的第四组地址记录于第二寻址区块的第二区段;其中第二组逻辑地址接续于第一组逻辑地址、且第三组逻辑地址接续于第二组逻辑地址。
Description
技术领域
本发明涉及一种闪存装置,尤指一种用来管理和存取闪存模块的控制器。
背景技术
闪存被广泛使用在很多应用中,例如储存卡、数字相机、数字摄影机、多媒体播放器、移动电话、固态硬盘(solid-state driver)、计算机和许多其它电子装置。闪存可用单阶储存单元(single-level cells,SLC)、多阶储存单元(multi-level cells,MLC)、三阶储存单元(triple-levelcells,TLC)或更高阶数的储存单元来实现。
在很多应用当中,存取闪存的速度(例如读、写速度)是很关键的。例如,在SD卡的应用中,闪存的写入运作必须在250毫秒完成,否则便可能被主控装置剔除联机。存取闪存的速度可以藉由改善闪存控制器的效能来获得提升。例如,可藉由增加闪存控制器内建的易失性存储器容量来改善闪存控制器的运作效能。然而,增加内建的存储容量必须占用闪存控制器内更多的空间,导致闪存控制器的体积变大,在某些应用中并不合适,而且这种方式也不符合电子装置微型化的设计趋势。
发明内容
有鉴于此,如何有效提升存取闪存的速度,并减轻或解决以上所述相关领域中既有技术的缺失,实为业界有待解决的问题。
因此,本说明书提供了一种用来管理一闪存模块的控制器的实施例,其包含有:一通讯接口,用于耦接一主控装置;以及一处理电路,耦接于该通讯接口,用于将包含有对应于第一组连续的M个逻辑地址的第一组M个地址的一第一地址群组记录于一第一寻址区块中的一第一区段,将包含有对应于第二组连续的M个逻辑地址的第二组M个地址的一第二地址群组记录于该第一寻址区块中的一第二区段,将包含有对应于第三组连续的M个逻辑地址的第三组M个地址的一第三地址群组记录于一第二寻址区块中的一第一区段,以及将包含有对应于第四组连续的M个逻辑地址的第四组M个地址的一第四地址群组记录于该第二寻址区块中的一第二区段;其中M是大于1的整数、该第二组M个逻辑地址接续于该第一组M个逻辑地址、该第三组M个逻辑地址接续于该第二组M个逻辑地址、且该第四组M个逻辑地址接续于该第三组M个逻辑地址。
另一种用来管理一闪存模块的控制器的实施例包含有:一处理电路,用于将多个地址群组记录于多个寻址区块中,其中每一地址群组包含有分别对应于多个逻辑地址的多个地址映射信息;以及一通讯接口,耦接于该处理电路,用于自一主控装置接收对应于一目标逻辑地址的一写入指令;其中该处理电路会将该目标逻辑地址和相关的数据写入目标数据区块中的一目的地存储页,从该多个地址群组中取得对应于该目标逻辑地址的地址映射信息,依据该目标数据区块的该目的地存储页的物理位置信息更新所取得的地址映射信息,以及将包含有该目标逻辑地址更新后的地址映射信息的一目标地址群组写入一目标寻址区块中的一目标区段。
本说明书另提供了一种用来存取一闪存模块的控制器的实施例,其包含有:一处理电路,用于将包含有对应于第一组连续的M个逻辑地址的第一组M个地址的一第一地址群组记录于一第一寻址区块中的一第一区段,将包含有对应于第二组连续的M个逻辑地址的第二组M个地址的一第二地址群组记录于该第一寻址区块中的一第二区段,将包含有对应于第三组连续的M个逻辑地址的第三组M个地址的一第三地址群组记录于一第二寻址区块中的一第一区段,以及将包含有对应于第四组连续的M个逻辑地址的第四组M个地址的一第四地址群组记录于该第二寻址区块中的一第二区段;以及一通讯接口,耦接于该处理电路;其中M是大于1的整数、该第二组M个逻辑地址接续于该第一组M个逻辑地址、该第三组M个逻辑地址接续于该第二组M个逻辑地址、且该第四组M个逻辑地址接续于该第三组M个逻辑地址;又,若该通讯接口自一主控装置接收到与位于该第一、第二、第三、或第四组逻辑地址中的一目标逻辑地址相对应的一存取指令,该处理电路会依据该第一、第二、第三、或第四地址群组中所记录的内容,将该目标逻辑地址转换成一相对应的目标物理地址,并存取该目标物理地址所指向的该闪存模块中的一存储页。
另一种用来存取一闪存模块的控制器的实施例包含有:一通讯接口,用于耦接于一主控装置;以及一处理电路,耦接于该通讯接口,用于将多个逻辑地址依序来回写入至一数据写入群组中的多个数据区块;其中每次该处理电路写入该多个逻辑地址的其中之一到该数据写入群组中的一数据区块后,该处理电路会将下一个逻辑地址写入该数据写入群组中的另一数据区块;又,在抹除了该数据写入群组中的一第一数据区块后,该处理电路会将数据写入该数据写入群组中的一第二数据区块,而不先将该第二数据区块抹除。
附图说明
图1为本发明的数据储存***的一实施例简化后的功能方块图。
图2是本发明的数据写入群组的一实施例简化后的示意图。
图3是本发明写入数据至数据写入群组的方法的一实施例简化后的流程图。
图4和图5为本发明的逻辑地址与数据区块内的物理地址间的映射关系的一实施例示意图。
图6为本发明管理逻辑地址的地址映射信息的方法的一第一实施例简化后的流程图。
图7为本发明将逻辑地址的地址映射信息写入寻址区块的一第一实施例的示意图。
图8为本发明的寻址区块中所记录的地址映射信息的一第一实施例的示意图。
图9为本发明用来储存地址群组配置信息的地址群组配置表的一第一实施例的示意图。
图10为本发明将逻辑地址转译成物理地址的方法的一第一实施例简化后的流程图。
图11和图12是本发明更新逻辑地址的地址映射信息的一第一实施例的示意图。
图13和图14是本发明的寻址区块中所记录的更新后的地址映射信息的一第一实施例的示意图。
图15为本发明管理逻辑地址的地址映射信息的方法的一第二实施例简化后的流程图。
图16为本发明将逻辑地址的地址映射信息写入寻址区块的一第二实施例的示意图。
图17为本发明的寻址区块中所记录的地址映射信息的一第二实施例的示意图。
图18为本发明用来储存地址群组配置信息的地址群组配置表的一第二实施例的示意图。
图19为本发明将逻辑地址转译成物理地址的方法的一第二实施例简化后的流程图。
图20和图21是本发明更新逻辑地址的地址映射信息的一第二实施例的示意图。
图22和图23是本发明的寻址区块中所记录的更新后的地址映射信息的一第二实施例的示意图。
图24为本发明监测寻址区块中的地址群组有效性况状的方法的一实施例简化后的流程图。
图25为本发明用来储存地址群组有效性信息的地址群组有效性表的一实施例的示意图。
图26为本发明清除寻址区块的方法的一实施例简化后的流程图。
图27为本发明监测数据区块中的记体页有效性况状的方法的一实施例简化后的流程图。
图28为本发明用来储存存储页有效性信息的存储页有效性表的一实施例的示意图。
图29为本发明清除数据区块的方法的一实施例简化后的流程图。
具体实施方式
以下将配合相关图式来说明本发明的实施例。在这些图式中,相同的标号表示相同或类似的组件或流程步骤。
在说明书及后续的权利要求当中使用了某些词汇来指称特定的组件。所属领域中具有通常知识者应可理解,同样的组件可能会用不同的名词来称呼。本说明书及后续的权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的基准。在通篇说明书及后续的权利要求当中所提及的「包含」为一开放式的用语,故应解释成「包含但不限定于...」。另外,「耦接」一词在此包含任何直接及间接的连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接(包含透过电性连接或无线传输、光学传输等讯号连接方式)连接于该第二装置,或透过其它装置或连接手段间接地电性或讯号连接至该第二装置。
图1为本发明一实施例的数据储存***100简化后的功能方块图。数据储存***100包含主控装置110、控制器120、和闪存模块130。主控装置110会透过控制器120来存取闪存模块130。主控装置110可以是卡片阅读机、数字相机、数字摄影机、移动电话、GPS定位装置,或其它任何能把闪存模块130当作储存媒介的电子装置。控制器120包含有易失性存储器122例如(SRAM)、非易失性存储器124、处理电路126、和通讯接口128。非易失性存储器124是用来储存用以控制处理电路126运作的程序代码。处理电路126在运作时会将要存取的数据和地址映射信息暂存在易失性存储器122。通讯接口128则用以与主控装置110耦接,以使处理电路126和主控装置110能透过通讯接口128进行数据传输。
在一实施例中,闪存模块130是以多阶储存单元(MLC)芯片或三阶储存单元(TLC)芯片来实现,以降低硬件的成本。这些存储芯片可划分为多个数据区块132和多个寻址区块(addressing block)134,以及一或多个管理区块136。数据区块132用来储存从主控装置110接收到的使用者数据。寻址区块134和管理区块136则被控制器120用来储存地址映射信息(address mapping information)、存储页有效性信息(page validityinformation)、和其它为实现管理功能所需的相关信息。实作上,这些寻址区块134可位于相同或不同的存储芯片上。同样地,管理区块136可位于相同或不同的存储芯片上。
控制器120和闪存模块130可一起整合在单一存储装置中,并以可卸除方式与主控装置110连接。或者,控制器120和主控装置110可一起整合成在单一电子装置中。
当主控装置110需要存取闪存模块130中的数据区块132时,主控装置110会透过通讯接口128传送一存取指令(例如写入指令或读取指令)给控制器120,以要求控制器120存取某一逻辑地址的数据。处理电路126会将该逻辑地址转换成位在闪存模块130的一数据区块132中相对应的一物理地址,再依据主控装置110传来的指令存取该物理地址中的数据。
例如,当主控装置110要写入许多笔数据到闪存模块130时,主控装置110可传送多个写入指令给控制器120,每一写入指令会要求控制器120将数据写入一相关的逻辑地址。亦即,有多笔数据和相关的逻辑地址需要被写入闪存模块130中。为了提升数据写入速度,处理电路126会将该多笔数据和相关的逻辑地址依序来回写入(interleave)至由闪存模块的多个数据区块132组成的一数据写入群组(data writing group)中。处理电路126可从闪存模块130的不同存储芯片中选出两个、四个、八个、或其它数目的数据区块132,以组成一数据写入群组,并将数据依序写入数据写入群组的存储页中。以下将搭配图2和图3来进一步说明前述的数据写入运作。
图2是本发明一实施例的数据写入群组200简化后的示意图。图3则是本发明写入数据至数据写入群组200的方法的一实施例简化后的流程图300。为了举例说明,在此假设本实施例中的每一数据区块132都具有256个物理页(分别以编号0到255表示),且处理电路126从不同的存储芯片中选择四个数据区块132A、132B、132C、和132D以组成数据写入群组200。为了方便说明,存储页编号为X的物理页以下称为物理页#X。
在流程310中,处理电路126会依序将数据和相关的逻辑地址写入数据写入群组200中的数据区块132A~132D个别的物理页#0。例如,处理电路126可将主控装置110传来的数据D1和相关的逻辑地址L1写入数据区块132A中的物理页#0,再将主控装置110传来的数据D2和相关的逻辑地址L2写入数据区块132B中的物理页#0。接着,处理电路126会将主控装置110传来的数据D3和相关的逻辑地址L3写入数据区块132C中的物理页#0,再将主控装置110传来的数据D4和相关的逻辑地址L4写入数据区块132D中的物理页#0。
接着,处理电路126会进行流程320,将数据和相关的逻辑地址依序写入数据写入群组200中的数据区块132A~132D个别的物理页#1。例如,处理电路126可将主控装置110传来的数据D5和相关的逻辑地址L5写入数据区块132A中的物理页#1,再将主控装置110传来的数据D6和相关的逻辑地址L6写入数据区块132B中的物理页#1。接着,处理电路126会将主控装置110传来的数据D7和相关的逻辑地址L7写入数据区块132C的物理页#1,再将主控装置110传来的数据D8和相关的逻辑地址L8写入数据区块132D的物理页#1。
依据前述的数据写入顺序,处理电路126会将数据和相关的逻辑地址,依序写入数据区块132A~132D内的其它可用(available)物理页。例如,处理电路126之后可依序将数据和相关的逻辑地址,依序写入数据区块132A~132D个别的物理页#J中,例如物理页#254(流程330)。
在前述的实施例中,处理电路126于同一写入循环内,会将数据和相关的逻辑地址依序写入具有相同存储页编号的物理页,但这仅是一实施例,而非局限本发明的实际实施方式。例如,在另一实施例中,处理电路126于同一写入循环内,可将数据和相关的逻辑地址写入存储页编号不相同的物理页。
由前述说明可知,处理电路126将多个逻辑地址的其中之一与相关的数据,写入数据写入群组200中一数据区块132的一可用物理页后,处理电路126会将下一个要写入的逻辑地址和相关的数据,写入数据写入群组200的另一数据区块132中的一可用物理页中。亦即,每次一逻辑地址Ln和相关的数据Dn被写入数据写入群组200中一数据区块132的一可用物理页后,下一个逻辑地址Ln+1和相关的数据Dn+1便会被写到数据写入群组200的另一数据区块132中的一可用物理页。藉由这种方式,处理电路126便能将要写入的多笔数据和相关的多个逻辑地址依序来回写入分别位于数据区块132A~132D的多个物理页当中。
由于数据区块132A、132B、132C、和132D分别位在不同的闪存芯片上,故将数据和相关的逻辑地址写入到一数据区块132的某一可用物理页的运作,不会干扰到将数据和相关的逻辑地址写入另一数据区块132的某一可用物理页的运作。因此,可大幅缩短将多笔数据写入多个存储页(例如不同数据区块个别的物理页#1)时的所需潜时(latency),进而提升写入数据到闪存模块130的速度。
在运作上,处理电路126可动态的选择特定数量具有可用物理页的数据区块132来组成数据写入群组,以加速数据写入的运作。被选择的数据区块132可以具有相同数量的可用物理页,但也可以不同。另外,处理电路126也可以随时依据个别数据区块132的使用频率或受损情况,改变同一数据写入群组的数据区块成员,以避免用到毁坏的数据区块和避免过度使用特定的数据区块。
为了寻址管理之用,处理电路126会在数据写入群组200的每一数据区块132中,保留至少一物理页作为目标存储页。例如,处理电路126可保留数据区块132A~132D个别的物理页#255来做为个别区块的目标存储页。当处理电路126完成将数据写入到数据区块132A内其它所有物理页的动作后,处理电路126会进行流程340,将储存在数据区块132A内其它所有物理页#0~#254中的逻辑地址L1~Li,依照这些逻辑地址L1~Li在数据区块132A中的所在物理位置的顺序,依序记录在数据区块132A的目标存储页#255中。例如,可依据逻辑地址L1~Li所在的物理页#0~#254的存储页编码顺序,将逻辑地址L1~Li依序记录在数据区块132A的物理页#255中。
在图2所示的实施例中,数据区块132A的物理页#255内包含有一逻辑地址序列,由储存在数据区块132A内的其它所有物理页中的逻辑地址L1~Li所组成,且物理页#255中的每个逻辑地址的排列位置,代表着数据区块132A中用来储存该逻辑地址的物理页的位置。
同样地,当处理电路126完成将数据写入到数据区块132B内其它所有物理页的动作后,处理电路126会进行流程350,将储存在数据区块132B内其它所有物理页#0~#254中的逻辑地址L2~Li+1,依照这些逻辑地址在数据区块132B中的所在物理位置的顺序,依序记录在数据区块132B的目标存储页#255中。如图2所示,数据区块132B的物理页#255内包含有一逻辑地址序列,由储存在数据区块132B内的其它所有物理页中的逻辑地址L2~Li+1所组成,且物理页#255中的每个逻辑地址的排列位置,代表着数据区块132B中用来储存该逻辑地址的物理页的位置。
在本实施例中,每当处理电路126完成将数据写入到某一特定数据区块132内其它所有物理页的动作后,处理电路126便会将储存在该特定数据区块132内其它所有物理页中的逻辑地址,依照这些逻辑地址在该特定数据区块132中的所在物理位置的顺序,依序记录在该特定数据区块132的目标存储页当中。例如,当处理电路126之后完成将数据写入到数据区块132D内其它所有物理页的动作后,处理电路126会进行流程360,将数据区块132D内其它所有物理页中的逻辑地址,依照前述方式记录在数据区块132D的目标存储页中。
因此,对于特定的数据区块132而言,依据目标存储页中所记录的逻辑地址序列的内容,处理电路126便能很轻易且迅速的得知该特定数据区块132中所储存的所有逻辑地址,以及分别映射于这些逻辑地址的物理页。举例而言,在数据区块132A的物理页#255中,逻辑地址序列的第二个位置所记录的逻辑地址为L5。因此,处理电路126可从逻辑地址L5在该逻辑地址序列中的位置,推知逻辑地址L5和相关的数据D5是被储存在数据区块132A内的第二个物理页(在本例中为物理页#1)。换言之,储存在每一数据区块132中的逻辑地址序列,可以当作是储存在数据区块132中的那些逻辑地址的初步地址映射信息。
之后,若主控装置110传送一写入指令要求控制器120将新数据D5’写入逻辑地址L5,但因逻辑地址L5先前已储存在数据区块132A的物理页#1中,故处理电路126可将新数据D5’和相关的逻辑地址L5,写入数据写入群组200的数据区块132A~132D中的一可用物理页。或者,处理电路126也可将新数据D5’和相关的逻辑地址L5,写入不属于数据写入群组200的另一数据区块132中。
如前所述,当主控装置110需要存取闪存模块130内的数据区块132时,处理电路126必须将主控装置110传来的逻辑地址转换成一相对应的物理地址,再存取该物理地址所指向的物理页。麻烦的是,逻辑地址和数据区块132中的物理地址间的映射关系,会因为后续的数据写入或删除的动作而改变。
图4和图5所绘示为逻辑地址与数据区块132内的物理地址间的映射关系的一实施例示意图。如地址映射400所示,每一个逻辑地址会映射到一数据区块132中的一有效物理页,而该有效物理页就是该逻辑地址最后一次储存的物理页。例如,逻辑地址1映射到区块标号为3708的数据区块132中的一物理页#71,而另一逻辑地址4095则映射到区块标号为2351的数据区块132中的一物理页#37。以下,为便利说明,区块标号为Z的数据区块132又称为数据区块#Z。如地址映射400所示,与多个连续的逻辑地址(例如逻辑地址0~524288)相对应的多个有效物理页的地址,通常不是连续排列。
当更新某一逻辑地址的数据时,处理电路126必须将新数据和该逻辑地址写入一可用数据区块132中的一可用物理页。这会改变该逻辑地址的地址映射,且无可避免的会造成该逻辑地址原先的地址映射变成过时(obsolete)的数据。因此,将逻辑地址和相关的数据写入一新的物理页后,应该要将该逻辑地址与物理地址间的映射更新以反映当下的情况。
例如,若处理电路126之后将有关逻辑地址4095的新数据写入数据区块#64中的可用物理页#175,则逻辑地址4095与原先对应的物理地址(亦即数据区块#2351中的物理页#37,如地址映射400所示)间的地址映射就变成过时的数据。图4中的地址映射402描绘了逻辑地址与数据区块132内的物理地址间的新映射关系。之后,若处理电路126将逻辑地址524287的更新数据写入数据区块#2972中的可用物理页#71,则逻辑地址与数据区块132内的物理地址间的新映射关系,会变成图5所描绘的地址映射404。
控制器120将逻辑地址转换成物理地址的运作,又称为地址转译(address translation)或地址解析(address resolution),其效能对于存取闪存模块130的速度有很大的影响。因此,控制器120应该要持续更新和掌握逻辑地址与数据区块132内的物理地址间的映射关系,以达成地址转译的运作。另一方面,现今的闪存模块130内通常会设置相当多的数据区块,以满足大储存容量的需求。逻辑地址与数据区块132内的物理地址间的映射关系的数据量,会与闪存模块130内所设置的数据区块的数量呈正比关系。在存取闪存模块130的运作过程中,若要将所有逻辑地址的地址映射信息都暂存在控制器120中,就势必得在控制器120内设置容量相当大的存储。
大容量的存储不仅会占用控制器120内更多的空间,还会增加控制器120的整体硬件成本。然而,考虑成本与电路空间限制的情况下,很多的应用环境都不允许在控制器120内部设置大容量的存储,尤其是在小型的记忆卡应用中。因此,本实施例中的控制器120的处理电路126在运作的过程中,会以不需要将闪存模块130的所有地址映射信息都暂存在易失性存储器122的方式,来管理逻辑地址的地址映射信息,以有效降低控制器120的硬件成本和所需的内部体积。以下,将搭配图6到图14来进一步说明处理电路126管理逻辑地址的地址映射信息的运作方式。
图6为本发明管理逻辑地址的地址映射信息的方法的一第一实施例简化后的流程图600。图7为本发明将逻辑地址的地址映射信息写入寻址区块134的一第一实施例简化后的示意图。
在流程610中,处理电路126会将闪存模块130可支持的逻辑地址的地址映射信息,群组成多个地址群组(address group)。处理电路126可将一预定数量的连续逻辑地址的地址映射信息群组成一地址群组。例如,在图7的实施例中,每一逻辑地址的地址映射信息,是用一数据区块位置信息(例如数据区块编号)和一物理页位置信息(例如存储页编号)的组合来表示的一物理地址,而处理电路126会将每2048个连续的逻辑地址所对应的2048个地址映射信息群组成一地址群组。亦即,每一地址群组包含有2048个物理地址,分别映射于2048个连续的逻辑地址。如图所示,处理电路126会将映射于连续逻辑地址0~2047的第一组2048个物理地址,群组成一地址群组G0,并将映射于连续逻辑地址2048~4095的第二组2048个物理地址,群组成一地址群组G1,其余依此类推。
如此一来,与一特定地址群组有关的2048个逻辑地址,便会接续于与相邻的地址群组有关的2048个逻辑地址。例如,与地址群组G2有关的2048个逻辑地址,会接续于与地址群组G1有关的2048个逻辑地址;与地址群组G255有关的2048个逻辑地址,会接续于与地址群组G254有关的2048个逻辑地址;与地址群组G256有关的2048个逻辑地址,会接续于与地址群组G255有关的2048个逻辑地址;而与地址群组G257有关的2048个逻辑地址,则会接续于与地址群组G256有关的2048个逻辑地址。
如图7所示,地址群组G0的内容是分别映射于逻辑地址0~2047的2048个物理地址;地址群组G1的内容是分别映射于逻辑地址2048~4095的2048个物理地址;地址群组G255的内容是分别映射于逻辑地址522240~524287的2048个物理地址;地址群组G256的内容是分别映射于逻辑地址524288~526335的2048个物理地址;而地址群组G511的内容是分别映射于逻辑地址1046528~1048575的2048个物理地址;依此类推。
在流程620中,处理电路126会将该等地址群组的数据内容写入寻址区块134。为便于说明,以下假设每一寻址区块134具有256个物理页,分别以编号#0~#255表示。在本实施例中,处理电路126会将寻址区块134区分成主寻址区块(primary addressing block)和副寻址区块(collateraladdressing block),主寻址区块以编号134x表示(x=A、B、C、...),副寻址区块则以编号134x’表示(x’=A’、B’、C’、...),如图7所示。
每一主寻址区块134x会与一相关的副寻址区块134x’配对组成一寻址区块对。例如,在图7所示的实施例中,寻址区块134A和相关的副寻址区块134A’会配对成一第一寻址区块对;寻址区块134B和相关的副寻址区块134B’会配对成一第二寻址区块对;而寻址区块134C和相关的副寻址区块134C’会配对成一第三寻址区块对;依此类推。前述主寻址区块和副寻址区块的划分只是为了便于说明,且处理电路126在后续的运作阶段中也可以将某一寻址区块134划分成另一类寻址区块。
处理电路126在流程620中,可将地址群组G0~G255中每一地址群组的内容,记录在主寻址区块134A的一个区段中;将地址群组G256~G511中每一地址群组的内容,记录在另一主寻址区块134B的一个区段中;并将地址群组G512~G767中每一地址群组的内容,记录在另一主寻址区块134C的一个区段中;其余依此类推。
在图7的实施例中,处理电路126会将地址群组G0~G255中每一地址群组的2048笔地址映射信息,依据相对应的2048个逻辑地址的地址顺序,记录在寻址区块134A的一物理页中。举例而言,如图8所示,处理电路126会将地址群组G0中的第一笔地址映射信息(在本例中为数据区块#23和物理页#4),连同该第一笔地址映射信息的数据有效性标记,写入寻址区块134A的物理页#0中的第一个位置,以做为一信息单元802;还会将地址群组G0中的第二笔地址映射信息(在本例中为数据区块#3708和物理页#71),连同该第二笔地址映射信息的数据有效性标记,写入寻址区块134A的物理页#0中的第二个位置,以做为一信息单元804;其余依此类推。因此,地址群组G0中的第2048笔地址映射信息连同相对应的数据有效性标记,会被记录在寻址区块134A的物理页#0中的第2048个位置,以做为一信息单元。实作上,每一逻辑地址的地址映射信息,可用适当大小的数据格式来记录,例如长字符(longword)的格式。
相仿地,处理电路126会将地址群组G254中所包含的2048笔地址映射信息和相对应的数据有效性标记,写入寻址区块134A的物理页#254。接着,处理电路126会将地址群组G255中的第一笔地址映射信息(在本例中为数据区块#610和物理页#108),连同相对应的数据有效性标记,写入寻址区块134A的物理页#255中的第一个位置,以做为一信息单元806;还会将地址群组G255中的第二笔地址映射信息(在本例中为数据区块#99和物理页#166),连同相对应的数据有效性标记,写入寻址区块134A的物理页#255中的第二个位置,以做为一信息单元808;依此类推。因此,地址群组G255中的第2048笔地址映射信息(在本例中为数据区块#41和物理页#88),连同相对应的数据有效性标记,会被记录在寻址区块134A的物理页#255中的第2048个位置,以做为一信息单元810。
此外,处理电路126也会将地址群组G256中所包含的2048笔地址映射信息和相对应的数据有效性标记,写入寻址区块134B的物理页#0,以做为2048个信息单元,例如图8中所绘示的信息单元812和814。
同样地,处理电路126会将地址群组G511中的第一笔地址映射信息(在本例中为数据区块#66和物理页#49),连同相对应的数据有效性标记,写入寻址区块134B的物理页#255中的第一个位置,以做为一信息单元816;也会将地址群组G511中的第2048笔地址映射信息(在本例中为数据区块#1731和物理页#204),连同相对应的数据有效性标记,写入寻址区块134B的物理页#255中的第2048个位置,以做为一信息单元818。
处理电路126会以前述的方式,继续将其它地址群组的内容写入其它寻址区块134,直到所有地址群组的内容都全部记录在寻址区块134中。在图8的实施例中,处理电路126会将地址群组中的每一笔地址映射信息的数据有效性标记,设为一第一预定值,例如0,以代表这些地址映射信息所指向的物理页中所储存的数据是有效的数据。数据有效性标记的功能在后面段落中会做进一步说明。如此一来,处理电路126便能在寻址区块134中建立并储存一份逻辑地址的初始地址映射数据。
由前述说明可知,在一地址群组中,连续的逻辑地址的地址映射信息是依照逻辑地址的顺序来排列。此外,特定逻辑地址的地址映射信息的存放位置,也会对应于该特定逻辑地址在该连续的逻辑地址中的顺序。例如,在映射于2048个连续的逻辑地址的一地址群组中,该2048个逻辑地址中的第N个逻辑地址的地址映射信息,会记录在该地址群组中的第N个位置。因此,处理电路126无须将逻辑地址记录在地址群组中。
在本实施例中,若某一特定地址群组原先被储存在主寻址区块134x中,则该特定地址群组被更新后的版本,将会记录在相对应的副寻址区块134x’中。换言之,每一对主寻址区块134x和相关的副寻址区块134x’的组合,可用来管理256个地址群组,且每一地址群组包含有映射于2048个连续的逻辑地址的2048个物理地址。因此,每一对主寻址区块134x和相关的副寻址区块134x’的组合,最多可管理该等数据区块132中的524,288个(=256*2048)物理地址。若每一物理地址用以指向大小为8KB的物理页,则控制器120可利用每一对主寻址区块134x和相关的副寻址区块134x’,来管理大小为4,194,304KB(相当于4GB)的闪存的地址映射信息。使用愈多的寻址区块134,控制器120就能管理愈大容量的闪存。
由于该等地址群组会分别记录在多个寻址区块134中,处理电路126还会管理所有地址群组的配置信息(allocation information),以便于需要时能找到特定的地址群组的存放位置。
在流程630中,处理电路126会将该等地址群组的配置信息写入一管理区块136,例如管理区块136A(未绘示)。处理电路126可将所有地址群组的配置信息,按照地址群组的编号,依序写入管理区块136A中,以形成如图9所示的一地址群组配置表(address group allocation table)910。在图9的实施例中,每一地址群组的配置信息,是用一寻址区块类型信息和一物理页位置信息(例如存储页编号)的组合来表示的一物理地址。如图所示,处理电路126会将第一个地址群组G0的配置信息,写入地址群组配置表910中的第一个位置;将第二个地址群组G1的配置信息,写入地址群组配置表910中的第二个位置;将第三个地址群组G2的配置信息,写入地址群组配置表910中的第三个位置;其余依此类推。因此,第512个地址群组G511的配置信息,会被记录在地址群组配置表910中的第512个位置。实作上,每一地址群组的配置信息,可用适当大小的数据格式来记录,例如字符(word)的格式。
换言之,处理电路126在地址群组配置表910中,会将地址群组的配置信息依照地址群组的群组编号的顺序来排列。如此一来,特定地址群组的配置信息的存放位置,就会对应于该特定地址群组的群组编号。因此,处理电路126无须将地址群组的群组编号记录在地址群组配置表910中。
由于特定地址群组的内容有可能是记录在一主寻址区块134x或相关的一副寻址区块134x’中,因此,本实施例中的处理电路126会在个别地址群组的配置信息中,加入该地址群组的有效当前版本的所在寻址区块的类型信息。在本实施例中,寻址区块类型1代表对应的地址群组的当前版本是记录在一主寻址区块134x,而寻址区块类型2代表对应的地址群组的当前版本是记录在与该主寻址区块134x配对的一副寻址区块134x’中。
由于这些包含逻辑地址的地址映射信息的地址群组会储存在寻址区块134中,而这些地址群组的配置信息会储存在管理区块136A中,因此,闪存模块130的地址映射信息不会在断电后(例如切断与主控装置110的连接后)消失。因此,控制器120的处理电路126在闪存模块130下一次通电或连接主控装置110时的初始化过程中,就不需要重新搜集逻辑地址的所有地址映射信息和该等地址群组的配置信息。如此一来,就能有效降低对闪存模块130进行初始化所需的时间。
接下来,在描述流程图600的流程640到流程660的运作之前,将先说明一下处理电路126将逻辑地址转译成物理地址的运作方式。当通讯接口128从主控装置110接收到与一特定逻辑地址相关的存取指令时,处理电路126会参照管理区块136A中储存的地址群组配置信息和寻址区块134中储存的地址映射信息,将该逻辑地址转译成一相对应的物理地址。图10为本发明将逻辑地址转译成物理地址的方法的一第一实施例简化后的流程图1000。
在流程1010中,通讯接口128会从主控装置110接收与一存取指令相关的目标逻辑地址。为便于说明,在此假设该目标逻辑地址是逻辑地址522241。
在流程1020中,处理电路126会将该目标逻辑地址除以单一地址群组所能容纳的地址映射信息笔数的最大值,以获得一商数Q和一余数R。在本实施例中,单一地址群组所能容纳的地址映射信息笔数的最大值是2048。因此,处理电路126会将522241除以2048,以获得一商数255和一余数1。
在流程1030中,处理电路126会依据前述的商数Q,来判断包含有该目标逻辑地址的地址映射信息的一目标地址群组的群组编号。由于在流程1020中获得的商数Q为255,故处理电路126会判定包含目标逻辑地址522241的地址映射信息的目标地址群组是第256个地址群组G255,在本例中其群组编号为255。
在流程1040中,处理电路126会将该群组编号除以一组寻址区块对所能管理的地址群组的最大值,以获得一商数Y。在本实施例中,一组寻址区块对所能管理的地址群组的最大值是256。因此,处理电路126会将255除以256,而获得一商数0。
在流程1050中,处理电路126会依据前述的商数Y找出一组目标寻址区块对。由于在流程1040中获得的商数Y为0,因此,处理电路126在本例中会判定目标地址群组G255是储存在由主寻址区块134A和副寻址区块134A’所组成的第一组寻址区块对。
在流程1060中,处理电路126会查找该目标地址群组的配置信息。由于目标地址群组G255是第256个地址群组,故处理电路126会判断目标地址群组G255的配置信息,是记录在管理区块136A内所储存的最新地址群组配置表中的第256个位置。在本例中,管理区块136A中所储存的最新地址群组配置表是地址群组配置表910,而储存在地址群组配置表910的第256个位置中的配置信息,所记载的内容是寻址区块类型1和物理页#255。
在流程1070中,处理电路126会依据前述的配置信息来找出该目标地址群组的所在位置。处理电路126可依据该目标地址群组的配置信息中所记载的寻址区块类型和物理页编号,来判断出该目标地址群组的最新内容是记录在哪个寻址区块中的哪个物理页。在本例中,由于目标地址群组G255的配置信息所记载的内容是寻址区块类型1和物理页#255,故处理电路126会判定地址群组G255的最新内容是记录在主寻址区块134A的物理页#255中。
在流程1080中,处理电路126会依据该目标地址群组中的地址映射信息,来找出映射于该目标逻辑地址的一物理页地址。由于在流程1020中得到的余数R是1,处理电路126会因此判定目标逻辑地址522241的地址映射信息,是储存在目标地址群组G255中的第2个位置。如图8所示,在目标地址群组G255的第2个位置中,所记载的地址映射信息内容是数据区块#99和物理页#166。因此,处理电路126会将目标逻辑地址522241转译成数据区块#166中的物理页#99。
在运作时,处理电路126不需要将记录在寻址区块134中所有有效的地址映射信息,都暂存在易失性存储器122中。处理电路126可以只将选自不同地址群组的局部地址映射信息暂存在易失性存储器122中,并依据暂存在易失性存储器122中的局部地址映射信息来进行图10所描述的地址转译运作,以存取闪存模块130。
例如,在一实施例中,处理电路126会将每一地址群组切割成多个映射信息段(mapping information segment),并只将分别选自不同地址群组的部分映射信息段,暂存在易失性存储器122中。当主控装置110要求存取一特定逻辑地址时,若当前暂存在易失性存储器122中的一特定映射信息段包含有该特定逻辑地址的地址映射信息,处理电路126会依据易失性存储器122所暂存的该特定映射信息段当中的地址映射信息,将该特定逻辑地址转换成一相对应的物理地址,而不会从寻址区块134中撷取该地址映射信息。另一方面,若当前暂存在易失性存储器122中的映射信息段,都未包含该特定逻辑地址的地址映射信息,则处理电路126会从寻址区块134中撷取该特定逻辑地址的有效地址映射信息,并依据该有效地址映射信息进行地址转译的运作。另外,处理电路126可利用适当的机制来更新易失性存储器122所暂存的地址映射信息。例如,处理电路126可将易失性存储器122中被利用率最低的映射信息段剔除,而将包含有该特定逻辑地址的有效地址映射信息的一目标映射信息段,暂存到易失性存储器122中。由于处理电路126只需将记录在寻址区块134中的所有有效地址映射信息当中非常小比例的部分暂存于易失性存储器122,即可支持前述的地址转译运作,可大幅降低易失性存储器122所需的存储容量。
前述流程图1000中的各流程的执行顺序只是一实施例,而非局限本发明的实际实施方式。例如,可将流程1050和1060顺序对调。在另一实施例中,则可将流程1060移到流程1030和1040之间来进行。
请回过头参阅图6。如前所述,当与某一逻辑地址相关的数据被更新或抹除时,逻辑地址和物理地址间的映射关系便会改变,进而造成逻辑地址原先的地址映射变成过时或无效的数据。因此,当数据更新或抹除运作发生时,处理电路126在流程640中会判断主寻址区块134中所记录的哪个地址群组需要被更新。当处理电路126完成一项与特定逻辑地址有关的数据更新或抹除(或数据删除)运作时,处理电路126会在流程640中判定相对应的地址群组需要被更新,接着,便会进行流程650的运作。
在流程650中,处理电路126会更新包含有该特定逻辑地址的过时地址映射信息的特定地址群组,并将更新后的地址群组记录在与原先的地址群组所在的一主寻址区块134x配对的副寻址区块134x’的一区段中。例如,若一地址群组原先是记录在一主寻址区块134x中,则处理电路126在流程650中会将该地址群组更新后的版本,记录在与该主寻址区块134x配对的副寻址区块134x’中。以下将搭配图11到图14来进一步说明流程650的运作方式。
图11和图12是本发明更新逻辑地址的地址映射信息的一第一实施例的示意图。如图11所示,将有关于逻辑地址4095的新数据写入数据区块#64的物理页#175后,原先映射于逻辑地址4095的物理地址(亦即数据区块#2351的物理页#37)就变成无效数据,而当前映射于逻辑地址4095的有效物理地址是数据区块#64的物理页#175。由图11中的地址映射402可以看出,前述的数据更新运作改变了地址群组G1的内容。
因此,处理电路126在流程650中会更新地址群组G1的内容,并将更新后的地址群组G1记录于与寻址区块134A配对的副寻址区块134A’中的一可用物理页。例如,在图11的实施例中,处理电路126可从寻址区块134A的存储页#1中读取地址群组G1原来的内容,并将逻辑地址4095的地址映射信息从原先的物理地址(亦即数据区块#2351的物理页#37)变更成新的物理地址(亦即数据区块#64的物理页#175)。
接着,处理电路126会将更新后的地址群组G1的内容,写入寻址区块134A’的物理页#0中。在图13的实施例中,处理电路126会将更新后的地址群组G1中的第一笔地址映射信息(本例中为数据区块#1和物理页#34),和相对应的数据有效性标记,写入寻址区块134A’的物理页#0中的第一个位置,以做为一信息单元1302,接着,再将更新后的地址群组G1中的第二笔地址映射信息和相对应的数据有效性标记,写入寻址区块134A’的物理页#0中的第二个位置,以做为另一信息单元,其余依此类推。因此,更新后的地址群组G1中的第2048笔地址映射信息(本例中为数据区块#64和物理页#175)和相对应的数据有效性标记,会被记录在寻址区块134A’的物理页#0中的第2048个位置,以做为一信息单元1304。
更新地址群组G1的内容到寻址区块134A’的物理页#0中的动作,会使得初始地址群组配置表910中所记录的地址群组G1的配置信息变成过时的数据。因此,处理电路126会进行流程660,将更新后的地址群组G1的新配置信息记录于管理区块136A中。例如,处理电路126可从管理区块136A中读取地址群组配置表910的原始内容,并将其中记录的地址群组G1的配置信息,由原先记载的内容(本例中为寻址区块类型1和物理页#1)变更成新的内容(本例中应为寻址区块类型2和物理页#0)。接着,处理电路126再将地址群组G1的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成一更新后的地址群组配置表920,如图9所示。
之后,倘若处理电路126依据主控装置110的要求而写入逻辑地址524287的更新数据至数据区块#2972的物理页#17中,则逻辑地址与闪存模块130的物理地址间的映射关系,会变成如图12中所绘示的地址映射404。
由地址映射404可以看出,对逻辑地址524287所进行的数据更新运作,改变了地址群组G255中的第2048笔地址映射信息。因此,处理电路126会进行流程650以更新地址群组G255的内容,并将地址群组G255更新后的内容记录于与主寻址区块134A配对的副寻址区块134A’中的可用物理页。例如,在图13的实施例中,处理电路126可从寻址区块134A的存储页#255中读取地址群组G255原来的内容,并将其中的逻辑地址524287的地址映射信息,从原先的物理地址(本例中为数据区块#41的物理页#88)变更成新的物理地址(本例中为数据区块#2972的物理页#17)。
接着,处理电路126会将更新后的地址群组G255的内容,写入寻址区块134A’的一可用物理页#1中。例如,处理电路126可将更新后的地址群组G255中的第一笔地址映射信息(本例中为数据区块#610和物理页#108),和相对应的数据有效性标记,写入寻址区块134A’的物理页#1中的第一个位置,以做为一信息单元1306,接着,再将更新后的地址群组G255中的第二笔地址映射信息和相对应的数据有效性标记,写入寻址区块134A’的物理页#1中的第二个位置,以做为另一信息单元,其余依此类推。因此,更新后的地址群组G255中的第2048笔地址映射信息(本例中为数据区块#2972和物理页#17)和相对应的数据有效性标记,会被记录在寻址区块134A’的物理页#1中的第2048个位置,以做为一信息单元1308。
更新地址群组G255的内容到寻址区块134A’的物理页#1的动作,会使得地址群组配置表920中所记录的地址群组G255的配置信息变成过时的数据。因此,处理电路126会进行流程660,将更新后的地址群组G255的新配置信息记录于管理区块136A中。例如,处理电路126可从管理区块136A中读取地址群组配置表920的原始内容,并将其中记录的地址群组G255的配置信息,由原先记载的内容(本例中为寻址区块类型1和物理页#255)变更成新的内容(本例中为寻址区块类型2和物理页#1)。接着,处理电路126再将地址群组G255的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成一更新后的地址群组配置表930,如图9所示。
倘若主控装置110之后要求控制器120抹除(或删除)与特定逻辑地址有关的数据,处理电路126会进行图6中的流程650,以更新与该特定逻辑地址相关的地址群组,但不会立刻抹除当前映射于该特定逻辑地址的数据区块中的物理页所储存的数据。
例如,若主控装置110要求控制器120抹除(或删除)与逻辑地址522240~526335有关的数据,处理电路126会更新包含有逻辑地址522240~526335的地址映射信息的地址群组G255和G256的内容,来做为对于主控装置110所传来的抹除(或删除)指令的响应。在图14所绘示的一实施例中,处理电路126会将寻址区块134A’的物理页#1中所储存的地址群组G255的全部地址映射信息,复制到寻址区块134A’中的一可用物理页#2,并将这些地址映射信息的数据有效性标记全设成一第二预定值,例如1,以代表这些地址映射信息所指向的物理页中所储存的数据已经被「虚拟抹除」。接着,处理电路126会将寻址区块134B的物理页#0中所储存的地址群组G256的全部地址映射信息,复制到寻址区块134B’中的一可用物理页#0,并将这些地址映射信息的数据有效性标记全设成该第二预定值1。
因此,储存在寻址区块134A’的物理页#2中的信息单元,会与储存在寻址区块134A’的物理页#1中的信息单元很类似,但差别在于数据有效性标记的值不同。而且,储存在寻址区块134B’的物理页#0中的信息单元,也会与储存在寻址区块134B的物理页#0中的信息单元很类似,两者的差异同样是在于数据有效性标记的值不同。
在另一实施例中,处理电路126会只单纯将寻址区块134A’的物理页#2中的该等数据有效性标记都设为1,而不把地址群组G255的其它内容复制到寻址区块134A’的物理页#2中。并且,处理电路126会只单纯将寻址区块134B’的物理页#0中的该等数据有效性标记都设为1,而不把地址群组G256的其它内容复制到寻址区块134B’的物理页#0中。如此一来,可进一步加速更新和重新配置相关地址群组的运作,并降低在更新这些地址群组的过程中所需的存储。
换言之,当主控装置110要求控制器120抹除(或删除)与特定逻辑地址有关的数据时,处理电路126可以只单纯的将更新后的相关地址群组写入相关的副寻址区块中,而不真的对相关的数据区块执行传统的抹除运作。藉由数据有效性标记的使用,能让控制器120在决定何时要对相关的数据区块执行真正的抹除运作时有更大的自由度。因此,控制器120不须在接收到主控装置110传来的抹除(或删除)指令时,就立刻对相关的数据区块执行真正的抹除运作。如此便可有效降低闪存模块130进行区块抹除运作的频率,进而大幅改善闪存模块130的存取效能。
当主控装置110之后发送与一特定逻辑地址有关的读取指令过来时,处理电路126会进行前述流程图1000所描述的地址转译方法,以找出该特定逻辑地址的地址映射信息。若处理电路126发现该特定逻辑地址的地址映射信息的数据有效性标记被设成1时,处理电路126就会透过通讯接口128回传虚拟数据(dummy data)给主控装置110。
更新地址群组G255和G256内容的运作,会使得地址群组配置表930中所记录的地址群组G255和G256的配置信息变成过时的数据。因此,处理电路126会进行流程660,将更新后的地址群组G255和G256的新配置信息记录于管理区块136A中。处理电路126可从管理区块136A中读取地址群组配置表930的原始内容,并将其中记录的地址群组G255的配置信息,由原先记载的值(本例中为寻址区块类型2和物理页#1)变更成新的设定(本例中应为寻址区块类型2和物理页#2),并将其中记录的地址群组G256的配置信息,由原先记载的值(本例中为寻址区块类型1和物理页#0)变更成新的设定(本例中为寻址区块类型2和物理页#0)。接着,处理电路126再将地址群组G255和G256的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成一更新后的地址群组配置表940,如图9所示。
在本实施例中,处理电路126可于某一副寻址区块134x’被更新后的地址群组填满时,将副寻址区块134x’与配对的主寻址区块134x一同清除(clean)。例如,若副寻址区块134B’在后续的阶段中被写满了更新后的地址群组,处理电路126会将成对的副寻址区块134B’和相关的主寻址区块134B中所储存的所有有效地址群组,复制到一可用的目标寻址区块134,并将目标寻址区块134设为新的主寻址区块134B,用以记录地址群组G256~G511的内容。处理电路126接着会控制闪存模块130对原本的主寻址区块134B和原本的副寻址区块134B’进行区块抹除的动作,并可指定抹除后的寻址区块的其中之一做为新的副寻址区块134B’,以便与新的主寻址区块134B配对使用。
在另一实施例中,处理电路126则会于某一副寻址区块134x’的可用物理页少于一预定数量(例如5)时,将副寻址区块134x’与配对的主寻址区块134x一同清除。
由于更新一特定寻址区块对的动作会改变该寻址区块对所管理的地址群组的配置情况,故处理电路126会进行流程660,将该特定区块对所管理的地址群组的新配置信息,连同其它地址群组原来的配置信息,一起写入管理区块136A以形成新的地址群组配置表。
以下,将搭配图15到图23来说明本发明管理逻辑地址的地址映射信息的另一实施例。
图15为本发明管理逻辑地址的地址映射信息的方法的一第二实施例简化后的流程图1500。图16为本发明将逻辑地址的地址映射信息写入寻址区块134的一第二实施例简化后的示意图。
流程图1500中的流程610与前述流程图600中的流程610原则上相同。在图16的实施例中,每一逻辑地址的地址映射信息,是用一数据区块位置信息(例如数据区块编号)和一物理页位置信息(例如存储页编号)的组合来表示的一物理地址,而处理电路126会将每2048个连续的逻辑地址所对应的2048的地址映射信息群组成一地址群组。因此,每一地址群组包含有2048个物理地址,分别映射于2048个连续的逻辑地址。例如,处理电路126会将映射于连续逻辑地址0~2047的第一组2048个物理地址,群组成一地址群组G0,并将映射于连续逻辑地址2048~4095的下一组2048个物理地址,群组成一地址群组G1,其余依此类推。
在流程1520中,处理电路126会将这些地址群组的数据内容写入寻址区块134。为便于说明,以下假设每一寻址区块134具有256个物理页,分别以编号#0~#255表示。处理电路126在流程1520中,可将地址群组G0~G254中每一地址群组的内容,记录在寻址区块134A的一个区段中;将地址群组G255~G509中每一地址群组的内容,记录在另一寻址区块134B的一个区段中;并将地址群组G510~G764中每一地址群组的内容,记录在另一寻址区块134C的一个区段中;其余依此类推。
在图16的实施例中,处理电路126会将地址群组G0~G254中每个地址群组的内容,依据相对应的2048个逻辑地址的地址顺序,记录在寻址区块134A的一物理页中。举例而言,如图17所示,处理电路126会将地址群组G0中的第一笔地址映射信息(在本例中为数据区块#23和物理页#4),连同该第一笔地址映射信息的数据有效性标记,写入寻址区块134A的物理页#0中的第一个位置,以做为一信息单元1702;还会将地址群组G0中的第二笔地址映射信息(在本例中为数据区块#3708和物理页#71),连同该第二笔地址映射信息的数据有效性标记,写入寻址区块134A的物理页#0中的第二个位置,以做为一信息单元1704;其余依此类推。因此,地址群组G0中的第2048笔地址映射信息和相对应的数据有效性标记,会被记录在寻址区块134A的物理页#0中的第2048个位置,以做为一信息单元。实作上,每一逻辑地址的地址映射信息,可用适当大小的数据格式来记录,例如长字符的格式。
相仿地,处理电路126会将地址群组G254中的第一笔地址映射信息(在本例中为数据区块#1090和物理页#226)和相对应的数据有效性标记,写入寻址区块134A的物理页#254中的第一个位置,以做为一信息单元1706;还会将地址群组G254中的第2048笔地址映射信息(在本例中为数据区块#449和物理页#8),连同相对应的数据有效性标记,写入寻址区块134A的物理页#254中的第2048个位置,以做为一信息单元1708。
此外,处理电路126也会将地址群组G255中的第一笔地址映射信息(在本例中为数据区块#610和物理页#108),连同相对应的数据有效性标记,写入寻址区块134B的物理页#0中的第一个位置,以做为一信息单元1712;并将地址群组G255中的第2048笔地址映射信息(在本例中为数据区块#41和物理页#88),连同相对应的数据有效性标记,写入寻址区块134B的物理页#0中的第2048个位置,以做为一信息单元1714。
相似地,处理电路126会将地址群组G509中的第一笔地址映射信息(在本例中为数据区块#78和物理页#136),和相对应的数据有效性标记,写入寻址区块134B的物理页#254中的第一个位置,以做为一信息单元1716;也会将地址群组G509中的第2048笔地址映射信息(在本例中为数据区块#28和物理页#7),连同相对应的数据有效性标记,写入寻址区块134B的物理页#254中的第2048个位置,以做为一信息单元1718。
处理电路126会以前述的方式,继续将其它地址群组的内容写入其它寻址区块134,直到所有地址群组的内容都全部记录在寻址区块134中。在图17的实施例中,处理电路126会将地址群组中的每一笔地址映射信息的数据有效性标记,设为一第一预定值,例如0,以代表这些地址映射信息所指向的物理页中所储存的数据是有效的数据。如此一来,处理电路126便能在寻址区块134中建立并储存一份逻辑地址的初始地址映射数据。
与前述的实施例类似,在一地址群组中,连续的逻辑地址的地址映射信息是依照逻辑地址的顺序来排列。此外,特定逻辑地址的地址映射信息的存放位置,也会对应于该特定逻辑地址在该连续的逻辑地址中的顺序。例如,在映射于2048个连续的逻辑地址的一个地址群组中,该2048个逻辑地址中的第N个逻辑地址的地址映射信息,会记录在该地址群组中的第N个位置。因此,处理电路126无须将逻辑地址记录在地址群组中。
在流程1530中,处理电路126会将储存于每一寻址区块134中的地址群组的群组编号,记录在该寻址区块134的一目标区段中。处理电路126可保留每一寻址区块134中的最后一个物理页#255来做为一目标区段。例如,当处理电路126完成了将地址群组G0~G254写入到寻址区块134A内其它所有物理页的动作后,处理电路126会将地址群组G0~G254的群组编号,依照这些地址群组G0~G254在寻址区块134A中的所在物理位置的顺序,依序记录在寻址区块134A的物理页#255中。
在图17所示的实施例中,寻址区块134A的物理页#255内包含有一群组编号序列(group numbering sequence)0、1、2、...、235、和254,与储存在寻址区块134A的其它所有物理页中的地址群组G0~G254相对应,且物理页#255中的每个群组编号的排列位置,代表着寻址区块134A中用来储存相对应的地址群组的物理页的位置。
同样地,当处理电路126完成了将地址群组G255~G509写入到寻址区块134B内其它所有物理页的动作后,处理电路126会进行流程1530,将地址群组G255~G509的群组编号,依照地址群组G255~G509在寻址区块134B中的所在物理位置的顺序,依序记录在寻址区块134B的物理页#255中。如图17所示,寻址区块134B的物理页#255内包含有一群组编号序列255、256、257、...、508、和509,与储存在寻址区块134B的其它所有物理页中的地址群组G255~G509相对应,且物理页#255中的每个群组编号的排列位置,代表着寻址区块134B中用来储存相对应的地址群组的物理页的位置。
因此,依据各寻址区块134的目标区段中所储存的群组编号序列,处理电路126便能轻易且快速地得知储存在该寻址区块134中的所有地址群组的群组编号,以及这些地址群组的所在物理页。以寻址区块134A为例,在寻址区块134A的物理页#255所储存的群组编号序列中的第三个位置,所记载的群组编号是2。因此,处理电路126便能从群组编号2在群组编号序列中的位置,得知地址群组G2是被储存在寻址区块134A的第三个物理页(在本例中为物理页#2)当中。
在本实施例中,每一寻址区块134可用来管理255个地址群组,且每一地址群组包含有映射于2048个连续的逻辑地址的2048个物理地址。若某一特定地址群组原先被储存在一寻址区块134x中(x可为A、B、C、...),则处理电路126可将该特定地址群组的更新版本,记录在任何一个具有可用物理页的可用寻址区块134中。因此,每一寻址区块134最多可管理该等数据区块132中的522,240个(=255*2048)物理地址。若每一物理地址用以指向大小为8KB的物理页,则控制器120可利用每一寻址区块134来管理大小为4,171,920KB(接近于4GB)的闪存的地址映射信息。使用愈多的寻址区块134,控制器120就能管理愈大容量的闪存。
由于该等地址群组会分别记录在多个寻址区块134中,处理电路126还会管理所有地址群组的配置信息(allocation information),以便于需要时能找到特定的地址群组的存放位置。
在流程1540中,处理电路126会将该等地址群组的配置信息写入管理区块136A。处理电路126可将所有地址群组的配置信息,按照地址群组的编号,依序写入管理区块136A中,以形成如图18所示的一地址群组配置表(address group allocation table)1810。在图18的实施例中,每一地址群组的配置信息,是用一寻址区块位置信息(例如寻址区块编号)和一物理页位置信息(例如物理页编号)的组合来表示的一物理地址。如图所示,处理电路126会将第一个地址群组G0的配置信息,写入地址群组配置表1810中的第一个位置;将第二个地址群组G1的配置信息,写入地址群组配置表1810中的第二个位置;将第三个地址群组G2的配置信息,写入地址群组配置表1810中的第三个位置;其余依此类推。因此,第510个地址群组G509的配置信息,会被记录在地址群组配置表1810中的第510个位置。实作上,每一地址群组的配置信息,可用适当大小的数据格式来记录,例如长字符(longword)的格式。
换言之,在地址群组配置表1810中,处理电路126会将地址群组的配置信息依照地址群组的群组编号的顺序来排列。如此一来,特定地址群组的配置信息的存放位置,就会对应于该特定地址群组的群组编号。因此,处理电路126无须将地址群组的群组编号记录在地址群组配置表1810中。
由于这些包含逻辑地址的地址映射信息的地址群组会储存在寻址区块134中,而这些地址群组的配置信息会储存在管理区块136A中,因此,闪存模块130的地址映射信息不会在断电后(例如切断与主控装置110的连接后)消失。因此,控制器120的处理电路126在闪存模块130下一次通电或连接主控装置110时的初始化过程中,就不需要重新搜集逻辑地址的所有地址映射信息和该等地址群组的配置信息。如此一来,就能有效降低对闪存模块130进行初始化所需的时间。
接下来,在描述流程图1500的流程1550到流程1570的运作之前,将先说明一下本实施例中的处理电路126将逻辑地址转译成物理地址的运作方式。当通讯接口128从主控装置1102接收到与一特定逻辑地址相关的存取指令时,处理电路126会参照管理区块136A中储存的地址群组配置信息和寻址区块134中储存的地址映射信息,将该逻辑地址转译成一相对应的物理地址。图19为本发明将逻辑地址转译成物理地址的方法的一第二实施例简化后的流程图1900。
流程图1900中的流程1010与前述流程图1000中的流程1010原则上相同,故前述对流程图1000中的流程1010的说明也适用在这边。为便于说明,在此假设主控装置110传来的目标逻辑地址是逻辑地址520193。
在流程1920中,处理电路126会将该目标逻辑地址除以单一地址群组所能容纳的地址映射信息笔数的最大值,以获得一商数Q和一余数R。在本实施例中,单一地址群组所能容纳的地址映射信息笔数的最大值是2048。因此,处理电路126会将520193除以2048,以获得一商数254和一余数1。
在流程1930中,处理电路126会依据前述的商数Q,来判断包含有该目标逻辑地址的地址映射信息的一目标地址群组的群组编号。由于在流程1920中获得的商数Q为254,故处理电路126会判定包含目标逻辑地址522241的地址映射信息的目标地址群组是第255个地址群组G254,在本例中其群组编号为254。
在流程1940中,处理电路126会查找该目标地址群组的配置信息。由于目标地址群组G254是第255个地址群组,故处理电路126会判断目标地址群组G254的配置信息,是记录在管理区块136A内所储存的最新地址群组配置表中的第255个位置。在本例中,管理区块136A中所储存的最新地址群组配置表是地址群组配置表1810,而储存在地址群组配置表1810的第255个位置中的配置信息,所记载的内容是寻址区块#A和物理页#254。
在流程1950中,处理电路126会依据前述的配置信息来找出该目标地址群组的所在位置。处理电路126可依据该目标地址群组的配置信息,来判断出是哪个寻址区块中的哪个物理页被用来记录该目标地址群组的最新内容。在本例中,由于目标地址群组G254的配置信息所记载的内容是寻址区块#A和物理页#254,故处理电路126会判定地址群组G254的最新内容是记录在寻址区块134A的物理页#254中。
在流程1960中,处理电路126会依据该目标地址群组中的地址映射信息,来找出映射于该目标逻辑地址的一物理页地址。由于在流程1920中得到的余数R是1,处理电路126会因此判定目标逻辑地址520193的地址映射信息,是储存在目标地址群组G254中的第2个位置。如图17所示,在目标地址群组G254的第2个位置中,所记载的地址映射信息内容是数据区块#215和物理页#42。因此,处理电路126会将目标逻辑地址520193转译成数据区块#215中的物理页#42。
与前述实施例类似,处理电路126在运作时不需要将记录在寻址区块134中所有有效的地址映射信息,都暂存在易失性存储器122中。处理电路126可以只将选自不同地址群组的局部地址映射信息暂存在易失性存储器122中,并依据易失性存储器122中所暂存的这些局部地址映射信息来进行图19所描述的地址转译运作,以存取闪存模块130。
例如,在一实施例中,处理电路126会将每一地址群组切割成多个映射信息段(mapping information segment),并只将分别选自不同地址群组的部分映射信息段,暂存在易失性存储器122中。当主控装置110要求存取一特定逻辑地址时,若当前暂存在易失性存储器122中的一特定映射信息段包含有该特定逻辑地址的地址映射信息,处理电路126会依据易失性存储器122所暂存的该特定映射信息段当中的地址映射信息,将该特定逻辑地址转换成一相对应的物理地址,而不会从寻址区块134中撷取该地址映射信息。另一方面,若当前暂存在易失性存储器122中的映射信息段,都未包含该特定逻辑地址的地址映射信息,则处理电路126会从寻址区块134中撷取该特定逻辑地址的有效地址映射信息,并依据该有效地址映射信息进行地址转译的运作。另外,处理电路126可利用适当的机制来更新暂存于易失性存储器122中的地址映射信息。例如,处理电路126可将易失性存储器122中被利用率最低的映射信息段剔除,而将包含有该特定逻辑地址的有效地址映射信息的一目标映射信息段,暂存到易失性存储器122中。由于处理电路126只需将记录在寻址区块134中的所有有效地址映射信息当中非常小比例的部分暂存于易失性存储器122,即可支持前述的地址转译运作,可大幅降低易失性存储器122所需的存储容量。
请回过头参阅图15。如前所述,当与某一逻辑地址相关的数据被更新或抹除时,逻辑地址和物理地址间的映射关系便会改变,进而造成逻辑地址原先的地址映射变成过时或无效的数据。因此,当数据更新或抹除运作发生时,处理电路126在流程1550中会判断寻址区块134中所记录的哪个地址群组需要被更新。当处理电路126完成一项与特定逻辑地址有关的数据更新或抹除(或数据删除)运作时,处理电路126会在流程1550中判定相对应的地址群组需要被更新,接着,便会进行流程1560。
在流程1560中,处理电路126会更新包含有该特定逻辑地址的过时地址映射信息的特定地址群组,并将更新后的地址群组记录在具有可用物理页的一可用寻址区块134的一区段中。以下将搭配图20到图23来进一步说明流程1560的运作方式。
图20和图21是本发明更新逻辑地址的地址映射信息的一第二实施例的示意图。如图20所示,将与逻辑地址4095相关的新数据写入数据区块#64的物理页#175后,原先映射于逻辑地址4095的物理地址(亦即数据区块#2351的物理页#37)就变成无效数据,而当前映射于逻辑地址4095的有效物理地址是数据区块#64的物理页#175。由图20中的地址映射402可以看出,前述的数据更新运作改变了地址群组G1的内容。
因此,处理电路126在流程1560中会更新地址群组G1的内容,并将更新后的地址群组G1记录于一可用寻址区块134A中的一可用物理页。例如,在图20的实施例中,处理电路126可从寻址区块134A的存储页#1中读取地址群组G1原来的内容,并将逻辑地址4095的地址映射信息从原先的物理地址(亦即数据区块#2351的物理页#37)变更成新的物理地址(亦即数据区块#64的物理页#175)。
接着,处理电路126会将更新后的地址群组G1的内容,写入一可用寻址区块134N的一可用物理页#15中。在图22的实施例中,处理电路126会将更新后的地址群组G1中的第一笔地址映射信息(本例中为数据区块#1和物理页#34),和相对应的数据有效性标记,写入寻址区块134N的物理页#15中的第一个位置,以做为一信息单元2202,接着,再将更新后的地址群组G1中的第二笔地址映射信息和相对应的数据有效性标记,写入寻址区块134N的物理页#15中的第二个位置,以做为另一信息单元,其余依此类推。因此,更新后的地址群组G1中的第2048笔地址映射信息(本例中为数据区块#64和物理页#175)和相对应的数据有效性标记,会被记录在寻址区块134N的物理页#15中的第2048个位置,以做为一信息单元2204。
更新地址群组G1的内容到寻址区块134N的物理页#15中的动作,会使得初始地址群组配置表1810中所记录的地址群组G1的配置信息变成过时的数据。因此,处理电路126会进行流程1570,将更新后的地址群组G1的新配置信息记录于管理区块136A中。例如,处理电路126可从管理区块136A中读取地址群组配置表1810的原始内容,并将其中记录的地址群组G1的配置信息,由原先记载的内容(本例中为寻址区块#A和物理页#1)变更成新的内容(本例中为寻址区块#N和物理页#15)。接着,处理电路126再将地址群组G1的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成一更新后的地址群组配置表1820,如图18所示。
之后,倘若处理电路126依据主控装置110的要求而写入逻辑地址524287的更新数据至数据区块#2972的物理页#17中,则逻辑地址与闪存模块130的物理地址间的映射关系,会变成图21中所绘示的地址映射404的情况。
由地址映射404可以看出,对逻辑地址524287所进行的数据更新运作,改变了地址群组G255中的第2048笔地址映射信息。因此,处理电路126会进行流程1560以更新地址群组G255的内容,并将地址群组G255更新后的内容记录于与一可用寻址区块134中的可用物理页。例如,在图22的实施例中,处理电路126可从寻址区块134B的存储页#0中读取地址群组G255原来的内容,并将其中的逻辑地址524287的地址映射信息,从原先的物理地址(本例中为数据区块#41的物理页#88)变更成新的物理地址(本例中为数据区块#2972的物理页#17)。
接着,处理电路126会将更新后的地址群组G255的内容,写入寻址区块134N的下一个可用物理页#16中。例如,处理电路126可将更新后的地址群组G255中的第一笔地址映射信息(本例中为数据区块#610和物理页#108),和相对应的数据有效性标记,写入寻址区块134N的物理页#16中的第一个位置,以做为一信息单元2206,接着,再将更新后的地址群组G255中的第二笔地址映射信息和相对应的数据有效性标记,写入寻址区块134N的物理页#16中的第二个位置,以做为另一信息单元,其余依此类推。因此,更新后的地址群组G255中的第2048笔地址映射信息(本例中为数据区块#2972和物理页#17)和相对应的数据有效性标记,会被记录在寻址区块134N的物理页#16中的第2048个位置,以做为一信息单元2208。
更新地址群组G255的内容到寻址区块134N的物理页#16的动作,会使得地址群组配置表1820中所记录的地址群组G255的配置信息变成过时的数据。因此,处理电路126会进行流程1570,将更新后的地址群组G255的新配置信息记录于管理区块136A中。例如,处理电路126可从管理区块136A中读取地址群组配置表1820的原始内容,并将其中记录的地址群组G255的配置信息,由原先记载的内容(本例中为寻址区块$B和物理页#0)变更成新的内容(本例中为寻址区块#N和物理页#16)。接着,处理电路126再将地址群组G255的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成一更新后的地址群组配置表1830,如图18所示。
倘若主控装置110之后要求控制器120抹除(或删除)与特定逻辑地址有关的数据,处理电路126会进行图15中的流程1560,以更新与该特定逻辑地址相关的地址群组,但不会立刻抹除当前映射于该特定逻辑地址的数据区块中的物理页所储存的数据。
例如,若主控装置110要求控制器120抹除(或删除)与逻辑地址522240~526335有关的数据,处理电路126会更新包含有逻辑地址522240~526335的地址映射信息的地址群组G255和G256的内容,来做为对于主控装置110所传来的抹除(或删除)指令的响应。在图23所绘示的一实施例中,处理电路126会将寻址区块134N的物理页#16中所储存的地址群组G255的全部地址映射信息,复制到寻址区块134N中的下一个可用物理页#17,并将这些地址映射信息的数据有效性标记全设成一第二预定值,例如1,以代表这些地址映射信息所指向的物理页中所储存的数据已经被「虚拟抹除」。接着,处理电路126会将寻址区块134B的物理页#1中所储存的地址群组G256的全部地址映射信息,复制到寻址区块134N中的下一个可用物理页#18,并将这些地址映射信息的数据有效性标记全设成该第二预定值1。
因此,储存在寻址区块134N的物理页#17中的信息单元,会与储存在寻址区块134N的物理页#16中的信息单元很类似,但差别在于数据有效性标记的值不同。而且,储存在寻址区块134N的物理页#18中的信息单元,也会与储存在寻址区块134B的物理页#1中的信息单元很类似,两者的差异同样是在于数据有效性标记的值不同。
在另一实施例中,处理电路126会只单纯将寻址区块134N的物理页#17中的该等数据有效性标记都设为1,而不把地址群组G255的其它内容复制到寻址区块134N的物理页#17中。并且,处理电路126会只单纯将寻址区块134N的物理页#18中的该等数据有效性标记都设为1,而不把地址群组G256的其它内容复制到寻址区块134N的物理页#18中。如此一来,可进一步加速更新和重新配置相关地址群组的运作,并降低在更新这些地址群组的过程中所需的存储。
换言之,当主控装置110要求控制器120抹除(或删除)与特定逻辑地址有关的数据时,处理电路126可以只单纯的将更新后的相关地址群组写入可用的寻址区块中,而不真的对相关的数据区块执行传统的抹除运作。藉由数据有效性标记的使用,能赋予控制器120更大的自由度来决定要在何时对相关的数据区块执行真正的抹除运作,故控制器120不须在每次接收到主控装置110传来的抹除(或删除)指令时,就立刻对相关的数据区块执行真正的抹除运作。如此一来,可有效降低闪存模块130进行区块抹除运作的频率,进而大幅改善闪存模块130的存取效能。
当主控装置110之后发出与一特定逻辑地址有关的读取指令时,处理电路126会进行前述流程图1900所描述的地址转译方法,以找出该特定逻辑地址的地址映射信息。若处理电路126发现该特定逻辑地址的地址映射信息的数据有效性标记被设成1时,则处理电路126会透过通讯接口128回传虚拟数据(dummy data)给主控装置110。
更新地址群组G255和G256内容的运作,会使得地址群组配置表1830中所记录的地址群组G255和G256的配置信息变成过时的数据。因此,处理电路126会进行流程1570,将更新后的地址群组G255和G256的新配置信息记录于管理区块136A中。处理电路126可从管理区块136A中读取地址群组配置表1830的原始内容,并将其中记录的地址群组G255的配置信息,由原先记载的值(本例中为寻址区块#N和物理页#16)变更成新的设定(本例中为寻址区块#N和物理页#17),并将其中记录的地址群组G256的配置信息,由原先记载的值(本例中为寻址区块#B和物理页#1)变更成新的设定(本例中为寻址区块#N和物理页#18)。接着,处理电路126再将地址群组G255和G256的新配置信息连同其它地址群组原本的配置信息,一同写入管理区块136A中,以形成更新后的地址群组配置表1840,如图18所示。
在本实施例中的寻址区块134间并没有前述实施例中的配对关系,故寻址区块134的更新时机与前述实施例不同。在本实施例中,处理电路126可监测各寻址区块134中所储存的该等地址群组的有效性状况,并据以决定是否要清除(clean)一特定的寻址区块134。
请参考图24,其所绘示为本发明监测寻址区块中的地址群组有效性况状的方法的一实施例简化后的流程图2400。
在流程2410中,处理电路126会记录每一寻址区块134的地址群组有效性信息并暂存在易失性存储器122中。在本实施例中,处理电路126可用一有效群组计数值(valid group count)来代表一特定寻址区块134的地址群组有效性信息。由于每一寻址区块134的最后一个物理页被保留用来储存群组编号序列,因此,当特定寻址区块134中的物理页都填满了有效的地址群组时,该特定寻址区块134的最大有效群组计数值是255。
处理电路126可依据特定寻址区块134中储存的群组编号序列来查询当时的地址群组配置表,以计算特定寻址区块134的有效群组计数值。以前面处理电路126刚建立图18中的初始地址群组配置表1810的情况为例。当时,如前所述,处理电路126能依据寻址区块134A的物理页#255中所储存的群组编号序列,轻易的得知储存在寻址区块134A中的所有地址群组G0~G254的群组编号,以及地址群组G0~G254的所在物理页。处理电路126可从寻址区块134A所储存的群组编号序列中获得的地址群组G0~G254的配置信息,并与初始地址群组配置表1810中所记载的地址群组G0~G254的配置信息分别进行比较。例如,处理电路126可将寻址区块134A的初始有效群组计数值设成0,并于每次比对发现从寻址区块134A储存的群组编号序列中所获得的某一地址群组的配置信息,与初始地址群组配置表1810中所记载的该地址群组的配置信息相吻合时,将寻址区块134A的有效群组计数值加1,并对每个地址群组都重复上述的配置信息比对动作。或者,处理电路126也可将寻址区块134A的初始有效群组计数值设成255,并于每次比对发现从寻址区块134A储存的群组编号序列中所获得的某一地址群组的配置信息,与初始地址群组配置表1810中所记载的该地址群组的配置信息不吻合时,将寻址区块134A的有效群组计数值减1,并对每个地址群组都重复上述的配置信息比对动作。在本例中,由于从寻址区块134A所储存的群组编号序列中所获得的所有地址群组G0~G254的配置信息,都与初始地址群组配置表1810中所记载的地址群组G0~G254的配置信息相符,故处理电路126会得到寻址区块134A的有效群组计数值为255。
在运作时,处理电路126可将各寻址区块134的有效群组计数值,依据区块编码的顺序,依序记录在易失性存储器122,以形成如图25所示的一地址群组有效性表(address group validity table)2510。在图25的实施例中,处理电路126会将第一个寻址区块134A的有效群组计数值记录在地址群组有效性表2510中的第一个位置,将第二个寻址区块134B的有效群组计数值记录在地址群组有效性表2510中的第二个位置,将第三个寻址区块134C的有效群组计数值记录在地址群组有效性表2510中的第三个位置,其余依此类推。因此,第14个寻址区块134N的地址群组有效性信息,会被记录在地址群组有效性表2510中的第14个位置。
在流程2420中,处理电路126会判断是否需要更新任何寻址区块134的地址群组有效性信息。每次处理电路126完成了更新一特定地址群组的动作时,处理电路126就会判定该特定地址群组原先所在的一寻址区块的地址群组有效性信息需要被更新。处理电路126也会判定新近用来储存该特定地址群组的一寻址区块的地址群组有效性信息同样需要被更新。因此,每当处理电路126完成了更新一特定地址群组的动作时,处理电路126就会进行流程2430。
在流程2430中,处理电路126会更新相关寻址区块的地址群组有效性信息。以前述图20描述的处理电路126更新地址群组G1的情况为例,处理电路126在本例中会更新原先储存在寻址区块134A的物理页#1中的地址群组G1的内容,将更新后的地址群组G1记录在寻址区块134N的物理页#15中,并对应地更新地址群组G1的配置信息。地址群组G1更新后的配置信息,会使得原本记录于寻址区块134A的物理页#1中的地址群组G1的内容变成无效数据。此一更新地址群组G1的动作,不只会改变寻址区块134A的有效群组计数值,也会改变寻址区块134N的有效群组计数值。
因此,处理电路126会进行流程2430以更新寻址区块134A和寻址区块134N两者的地址群组有效性信息。如图25所示,处理电路126会将寻址区块134N的有效群组计数值加1,并将寻址区块134A的有效群组计数值减1,以形成新的地址群组有效性表2520。
再举前述图21描述的处理电路126更新地址群组G255的情况做为另一个例子,处理电路126在本例中会更新原先储存在寻址区块134B的物理页#0中的地址群组G255的内容,将更新后的地址群组G255记录在寻址区块134N的物理页#16中,并对应地更新地址群组G255的配置信息。地址群组G255更新后的配置信息,会使得寻址区块134B中所记载的地址群组G255的原本内容变成无效数据。此一更新地址群组G255的动作,不只会改变寻址区块134B的有效群组计数值,也会改变寻址区块134N的有效群组计数值。
因此,处理电路126会进行流程2430以更新寻址区块134B和寻址区块134N两者的地址群组有效性信息。如图25所示,处理电路126会将寻址区块134N的有效群组计数值加1,并将寻址区块134B的有效群组计数值减1,以形成新的地址群组有效性表2530。
再举前述图23描述的处理电路126更新地址群组G255和G256的情况做为另一个例子。在本例中,处理电路126会更新原先储存在寻址区块134N的物理页#16中的地址群组G255的内容,将更新后的地址群组G255记录在寻址区块134N的物理页#17中,并对应地更新地址群组G255的配置信息。并且,处理电路126会更新原先储存在寻址区块134B的物理页#1中的地址群组G256的内容,将更新后的地址群组G256记录在寻址区块134N的物理页#18中,并对应地更新地址群组G256的配置信息
地址群组G255和G256更新后的配置信息,会使得寻址区块134N中所记载的地址群组G255的原本内容变成无效数据,也会使得寻址区块134B中所记载的地址群组G256的原本内容变成无效数据。更新地址群组G255和G256的动作,不只会改变寻址区块134B的有效群组计数值,也会改变寻址区块134N的有效群组计数值。
因此,处理电路126会进行流程2430以更新寻址区块134B和寻址区块134N两者的地址群组有效性信息。
在本例中,虽然寻址区块134N中新增两个有效的地址群组G255和G256,但储存在寻址区块134N的物理页#16中的地址群组G255的原先数据会变成无效数据。因此,寻址区块134N的总有效群组计数值只会加1,故处理电路126会将寻址区块134B的有效群组计数值减1,并将寻址区块134N的有效群组计数值加1,以形成如图25所示的新地址群组有效性表2540。
为了避免各寻址区块134的地址群组有效性信息会在断电后消失,处理电路126可于每次某一寻址区块134填满地址群组时,将易失性存储器122当下所暂存的地址群组有效性表,写入一管理区块136中,例如管理区块136B(未绘示)。
请参考图26,其所绘示为本发明清除寻址区块的方法的一实施例简化后的流程图2600。
在运作时,处理电路126可于适当的时机进行流程2610,以将每一寻址区块134的地址群组有效性信息与一预定阀值TH1进行比较。例如,处理电路126可间歇性地进行流程2610,或是趁着主控装置110存取闪存模块130不太频繁的空档进行流程2610的运作。
在流程2620中,处理电路126会依据在流程2610的比较结果,选择至少两个寻址区块134做为候选寻址区块。处理电路126可选择有效群组计数值低于预定阀值TH1的寻址区块134做为候选寻址区块。为了举例说明,在此假设预定阀值TH1是12。在图25的实施例中,处理电路126会选择寻址区块134H和134J做为候选寻址区块,因为它们的有效群组计数值小于12。
在流程2630中,处理电路126会将候选寻址区块134H和134J中所记录的有效地址群组,复制到具有够多可用物理页可储存这些有效地址群组的一目标寻址区块中。为了举例说明,在此假设处理电路126选择寻址区块134P做为目标寻址区块。将候选寻址区块134H和134J中的有效地址群组复制到目标寻址区块134P的运作方式,类似于前述流程图1500中的流程1560。
在流程2640中,处理电路126会抹除候选寻址区块134H和134J,以释出这些区块的储存空间供后续使用。
在流程2650中,处理电路126会更新从候选寻址区块134H和134J复制到目标寻址区块134P中的那些有效地址群组的配置信息。更新储存在目标寻址区块134P中的有效地址群组的配置信息的方式,原则上很类似于前述流程图1500中的流程1570。因此,处理电路126会将这些有效地址群组在寻址区块134P中的新所在物理地址,写入到管理区块136A中以形成一更新后的地址群组配置表。
接着,处理电路126会进行流程2430以更新相关寻址区块的地址群组有效性信息。流程图2600中的流程2430和流程图2400中的流程2430原则上相同。在本例中,处理电路126会更新寻址区块134H、134J和134P的地址群组有效性信息。
前述流程图2600中各流程的执行顺序只是一实施例,而非局限本发明的实际实施方式。例如,流程图2600中的流程2640、2650和2430可同时进行,也可以任意顺序进行。
另外,前述流程2610中所使用预定阀值TH1也可以依据闪存模块130的区块使用状况来动态调整。在一实施例中,处理电路126可以随时依据所有寻址区块134的有效群组计数值总和来动态调整预定阀值TH1。例如,处理电路126可于所有寻址区块134的有效群组计数值总和低于一第一预定水平时,调增TH1的值,并于所有寻址区块134的有效群组计数值总和高于一第二预定水平时,调降TH1的值。
在另一实施例中,处理电路126可以依据闪存模块130的可用区块数量来动态调整预定阀值TH1,其中,可用区块在此指的可以是数据区块132、寻址区块134、或两者的组合。例如,处理电路126可于闪存模块130的可用数据区块132数量低于一第一预定数量时,调增TH1的值,并于闪存模块130的可用数据区块132数量高于一第二预定数量时,调降TH1的值。同样地,处理电路126可于闪存模块130的可用寻址区块134数量低于一第三预定数量时,调增TH1的值,并于闪存模块130的可用寻址区块134数量高于一第四预定数量时,调降TH1的值。
为了避免各寻址区块134的地址群组有效性信息会在断电后消失,处理电路126也可于完成寻址区块134的清除动作时,将易失性存储器122当下所暂存的地址群组有效性表,写入一管理区块136B中。
在前述的实施例中,处理电路126是使用特定寻址区块134的有效群组计数值,来表示特定寻址区块134的地址群组有效性信息。但这只是实施例之一,而非局限本发明的实际实施方式。例如,在另一实施例中,处理电路126可改用特定寻址区块134的无效群组计数值(invalid group count)来表示特定寻址区块134的地址群组有效性信息。在这种情况下,流程图2600中所使用的比较算法和参数,例如预定阀值TH1,都要做对应的调整。
由前述说明可知,由于本实施例中的寻址区块134间没有两两配对使用的关系,故控制器120在选择要清除哪些寻址区块上有更大的自由度。因此,可避免对寻址区块进行没必要的清除动作。如此一来,可进一步降低闪存模块130进行区块抹除动作的频率,进而改善闪存模块130的存取效能。
在前述的实施例中,处理电路126在每一地址群组中所记录的地址映射信息是存储页的真实物理地址。但这只是实施例之一,而非局限本发明的实际实施方式。例如,处理电路126可以先将闪存的物理地址都先转换成虚拟地址,例如虚拟页编号,然后再将这些虚拟地址群组成多个地址群组。如此一来,每一地址群组中所包含的地址映射信息会变成虚拟地址。因此,每一地址群组中所包含的地址映射信息,可以是物理地址,也可以是任何形式的虚拟地址。
前面的部分说明了管理和更新逻辑地址的地址映射信息的方法的部份实施例,以及将逻辑地址转译成相对应的物理地址的方法的部分实施例。由前述说明可知,处理电路126可利用寻址区块134和管理区块136以不同的方式来管理和更新地址映射信息。以下将搭配图27到图29来进一步说明清除数据区块132的运作方式。与前述清除寻址区块134的运作类似,本实施例的处理电路126可监测各数据区块132中所储存的内容的有效性状况,并依据所储存的内容的有效性状况来决定是否要清除一特定的数据区块132。
请参考图27,其所绘示为本发明监测数据区块中的记体页有效性况状的方法的一实施例简化后的流程图2700。
在流程2710中,处理电路126会记录每一数据区块132的存储页有效性信息,并暂存在易失性存储器122中。在本实施例中,处理电路126可用一有效页计数值(valid page count)来代表一特定数据区块132的存储页有效性信息。由于每一数据区块132的最后一个物理页被保留用来储存逻辑地址序列(如图2所示),因此,当特定数据区块132中的物理页都填满了有效的数据和逻辑地址时,该特定数据区块132的最大有效页计数值是255。
处理电路126可依据特定数据区块132中储存的逻辑地址序列,来查询当时相对应的有效地址群组中所记载的地址映射信息,以计算特定数据区块132的有效页计数值。以前面图2中处理电路126刚将逻辑地址序列记录在数据区块132A的目标页中的情况为例。当时,如前所述,处理电路126能依据数据区块132A的物理页#255中所储存的逻辑地址序列,轻易的得知储存在数据区块132A中的所有逻辑地址L1、L5、...、Li,以及这些逻辑地址分别存放在数据区块132A中的那些物理页。处理电路126可从数据区块132A的目标页中所储存的逻辑地址序列,获得储存于数据区块132A中的一特定逻辑地址的一第一地址映射信息,并进行前述图10或图19的地址转译方法,以从一相对应的地址群组中获得该特定逻辑地址的一第二地址映射信息。若该第一地址映射信息与该第二地址映射信息相符,则处理电路126会判定数据区块132A中用来储存该特定逻辑地址的物理页是一有效页(valid page)。反之,处理电路126则会判定数据区块132A中用来储存该特定逻辑地址的物理页是一无效页(invalid page)。
因此,处理电路126可将从数据区块132A中储存的逻辑地址序列所获得的逻辑地址L1、L5、...、Li的地址映射信息,与相对应的地址群组中所记载的逻辑地址L1、L5、...、Li的地址映射信息逐一进行比较,以得出数据区块132A的有效页计数值。例如,处理电路126可将数据区块132A的初始有效页计数值设成0,并于每次比对发现从数据区块132A储存的逻辑地址序列中所获得的某一逻辑地址的地址映射信息,与相对应的地址群组中所记载的该逻辑地址的地址映射信息相吻合时,将数据区块132A的有效页计数值加1,并对其它逻辑地址都重复上述的地址映射信息比对动作。或者,处理电路126也可将数据区块132A的初始有效页计数值设成255,并于每次比对发现从数据区块132A储存的逻辑地址序列中所获得的某一逻辑地址的地址映射信息,与相对应的地址群组中所记载的该逻辑地址的地址映射信息不相符时,将数据区块132A的有效页计数值减1,并对其它逻辑地址都重复上述的地址映射信息比对动作。
在运作时,处理电路126可将各数据区块132的有效页计数值,依据区块编码的顺序,依序记录在易失性存储器122,以形成如图28所示的一存储页有效性表(page validity table)2810。在图28的实施例中,处理电路126会将第一个数据区块#0的有效页计数值,记录在存储页有效性表2810中的第一个位置,将第二个数据区块#1的有效页计数值记录在存储页有效性表2810中的第二个位置,将第三个数据区块#2的有效页计数值记录在存储页有效性表2810中的第三个位置,其余依此类推。因此,第346个数据区块#345的存储页有效信息,会被记录在存储页有效性表2810中的第346个位置。
在流程2720中,处理电路126会判断是否需要更新任何数据区块132的存储页有效性信息。每次处理电路126完成了一特定逻辑地址的数据更新动作时,处理电路126就会判定该特定逻辑地址原先所在的一数据区块的存储页有效性信息需要被更新。处理电路126也会判定新近用来储存该特定逻辑地址的一数据区块的存储页有效性信息同样需要被更新。
因此,每当处理电路126完成了某一特定逻辑地址的数据更新动作时,处理电路126就会进行流程2730,以更新相关数据区块的存储页有效性信息。
先以前述图11或图20描述的处理电路126将与逻辑地址4095相关的新数据写入数据区块#64的物理页#175中的情况为例来说明。在本例中,处理电路126会如前所述将更新数据写入数据区块#64的物理页#175中、更新逻辑地址4095的地址映射信息、并相应地更新地址群组G1的配置信息。对逻辑地址4095进行数据更新的动作,会使得原本记载在数据区块#2351的物理页#37中的内容变成无效数据。此一逻辑地址4095的数据更新动作,不只会改变数据区块#2351的有效页计数值,也会改变数据区块#64的有效页计数值。
因此,处理电路126会进行流程2730以更新数据区块#2351和数据区块#64两者的存储页有效性信息。如图28所示,处理电路126会将数据区块#64的有效页计数值加1,并将数据区块#2351的有效页计数值减1,以形成新的存储页有效性表2820。
再举前述图12或图21描述的处理电路126将与逻辑地址524287相关的新数据写入数据区块#2972的物理页#17中的情况做为另一个例子。在本例中,处理电路126会如前所述将更新数据写入数据区块#2972的物理页#17中、更新逻辑地址524287的地址映射信息、并相应地更新地址群组G255的配置信息。对逻辑地址524287进行数据更新的动作,会使得原本记载在数据区块#41的物理页#88中的内容变成无效数据。此一逻辑地址524287的数据更新动作,不只会改变数据区块#2972的有效页计数值,也会改变数据区块#41的有效页计数值。
因此,处理电路126会进行流程2730以更新数据区块#2972和数据区块#41两者的存储页有效性信息。如图28所示,处理电路126会将数据区块#2972的有效页计数值加1,并将数据区块#41的有效页计数值减1,以形成新的存储页有效性表2830。
再举前述图14或图23描述的主控装置110要求抹除(或删除)与逻辑地址522240~526335有关的数据的情况做为另一个例子来说明。在本例中,处理电路126会如前所述将地址群组G255中的所有地址映射信息的数据有效性标记设为1、将地址群组G256中的所有地址映射信息的数据有效性标记设为1、并更新地址群组G255和G256两者的配置信息。
抹除与逻辑地址522240~526335相关的数据的动作,会使得原本记载在映射于逻辑地址522240~526335的相关物理页中的内容变成无效数据。例如,此一数据抹除动作会使得原本记载在数据区块#610的物理页#108、数据区块#2972的物理页#17、和数据区块#345的物理页#191当中的内容都变成无效数据。因此,此一数据抹除动作会改变数据区块#610、数据区块#2972、数据区块#345、和其它与地址群组G255和G256相关的数据区块的有效页计数值。
因此,处理电路126会进行流程2730以更新与地址群组G255和G256相关的数据区块的存储页有效性信息。例如,如图28所示,处理电路126会将数据区块#345的有效页计数值减1,将数据区块#518的有效页计数值减1,将数据区块#610的有效页计数值减1,将数据区块#2972的有效页计数值减1,并将其它与地址群组G255和G256相关的数据区块的有效页计数值都减1,以形成新的存储页有效性表2840。
为了避免各数据区块132的存储页有效性信息会在断电后消失,处理电路126可于每次某一数据区块132填满数据和逻辑地址时,将易失性存储器122当下所暂存的存储页有效性表,写入一管理区块136B中。
请参考图29,其所绘示为本发明清除数据区块的方法的一实施例简化后的流程图2900。
在运作时,处理电路126可于适当的时机进行流程2910,以将每一数据区块132的存储页有效性信息与一预定阀值TH2进行比较。例如,处理电路126可间歇性地进行流程2910,或是趁着主控装置110存取闪存模块130不太频繁时进行流程2910的运作。
在流程2920中,处理电路126会依据在流程2910的比较结果,选择至少两个数据区块132做为候选数据区块。处理电路126可选择有效页计数值低于预定阀值TH2的数据区块132做为候选数据区块。为了举例说明,在此假设预定阀值TH2是20。在图28的实施例中,处理电路126会选择数据区块#1和数据区块#41做为候选数据区块,因为它们的有效页计数值小于20。
在流程2930中,处理电路126会将候选数据区块#1和数据区块#41中的有效存储页的内容,复制到具有够多可用物理页可储存这些有效内容的一目标数据区块中。为了举例说明,在此假设处理电路126选择数据区块#809做为目标数据区块。因此,处理电路126会将候选数据区块#1和数据区块#41中的有效存储页的储存内容,复制到目标数据区块#809的可用物理页中。
由于流程2930的动作,会改变原先储存在候选数据区块#1和数据区块#41的有效存储页中的那些逻辑地址与物理地址间的映射关系,因此,处理电路126会进行流程2940,以更新包含有这些逻辑地址的地址映射信息的相关地址群组。实作上,处理电路126可采用与前述流程图600中的流程650相同的方式,来更新相关地址群组的内容。或者,处理电路126也可用与前述流程图1500中的流程1560相同的方式,来更新相关的地址群组的内容。
在流程2950中,处理电路126会控制闪存模块130抹除候选数据区块#1和数据区块#41,以释出这些数据区块的储存空间供后续使用。
在流程2960中,处理电路126会更新那些在前面流程2940中被更新的地址群组的配置信息。实作上,处理电路126可采用与前述流程图600中的流程660相同的方式,来更新相关地址群组的配置信息。或者,处理电路126也可采用与前述流程图1500中的流程1570相同的方式,来更新相关地址群组的配置信息。
接着,处理电路126会进行流程2730,以更新相关数据区块的存储页有效性信息。流程图2900中的流程2730和流程图2700中的流程2730原则上相同。在本例中,处理电路126会更新数据区块#1、数据区块#41、和数据区块#809的存储页有效性信息。
前述流程图2900中各流程的执行顺序只是一实施例,而非局限本发明的实际实施方式。例如,流程图2900中的流程2940、2950、2960和2730可同时进行,也可以以任意顺序进行。
另外,前述流程2910中所使用预定阀值TH2也可以依据闪存模块130的区块使用状况来动态调整。在一实施例中,处理电路126可以随时依据所有数据区块132的有效页计数值总和来动态调整预定阀值TH2。例如,处理电路126可于所有数据区块132的有效页计数值总和低于一第三预定水平时,调增TH2的值,并于所有数据区块132的有效页计数值总和高于一第四预定水平时,调降TH2的值。
在另一实施例中,处理电路126可以依据闪存模块130的可用区块数量来动态调整预定阀值TH2,在此所称的可用区块可以是数据区块132、寻址区块134、或两者的组合。例如,处理电路126可于闪存模块130的可用数据区块132数量低于一第五预定数量时,调增TH2的值,并于闪存模块130的可用数据区块132数量高于一第六预定数量时,调降TH2的值。同样地,处理电路126可于闪存模块130的可用寻址区块134数量低于一第七预定数量时,调增TH2的值,并于闪存模块130的可用寻址区块134数量高于一第八预定数量时,调降TH2的值。
为避免各数据区块132的存储页有效性信息因断电而消失,处理电路126也可于完成数据区块132的清除动作时,将易失性存储器122当下所暂存的存储页有效性表,写入管理区块136B中。
由前述说明可知,处理电路126会持续监测每一数据区块的存储页有效性信息,并依据它们的存储页有效性信息来选择要进行清除的数据区块,而不论被选择到的数据区块是否属于同一数据写入群组。因此,属于同一数据写入群组中的个别数据区块,例如图2中的数据区块132A、132B、132C、和132D,是否要被处理电路126清除是彼此独立的。在本实施例中,倘若处理电路126在流程2920中选择了某一特定数据写入群组中的一数据区块和不属于该特定数据写入群组的另一数据区块,来做为候选数据区块,则处理电路126就只会清除这两个被选择的候选数据区块,而不会把该特定数据写入群组中的其它数据区块随着被选到的那个数据区块一起抹除。亦即,在抹除了那两个候选数据区块后,处理电路126可将数据和相关的逻辑地址,写入该特定数据写入群组中的其它数据区块的可用物理页当中,而无须先将这些数据区块抹除。
藉由这种方式,控制器120将可获得更大的自由度来决定那些数据区块要被清除,可避免进行不必要的数据区块清除动作。例如,将可避免将特定数据写入群组中的其它数据区块,随着被选做候选数据区块的区块成员一起抹除这类的情况。如此一来,前述用来管理地址映射信息的架构,以及清除寻址区块与数据区块的方法,不只能有效降低闪存模块130进行区块抹除动作的频率,还能有效降低控制器120必须在很短时间内清除完毕的区块数量。因此,将可大幅提升存取闪存模块130的速度。例如,前述用来管理地址映射信息的架构,以及清除寻址区块与数据区块的方法,可将存取由三阶储存单元(TLC)芯片构成的闪存模块的速度,提升至符合等级6(Class 6)的存取速度水平。
以上所述仅为本发明的较佳实施例,凡依本发明权利要求所做之均等变化与修饰,皆应属本发明之涵盖范围。
Claims (46)
1.一种用来管理一闪存模块的控制器,其特征在于,包含有:
一通讯接口,用于耦接一主控装置;以及
一处理电路,耦接于该通讯接口,用于将包含有对应于第一组连续的M个逻辑地址的第一组M个地址的一第一地址群组记录于一第一寻址区块中的一第一区段,将包含有对应于第二组连续的M个逻辑地址的第二组M个地址的一第二地址群组记录于该第一寻址区块中的一第二区段,将包含有对应于第三组连续的M个逻辑地址的第三组M个地址的一第三地址群组记录于一第二寻址区块中的一第一区段,以及将包含有对应于第四组连续的M个逻辑地址的第四组M个地址的一第四地址群组记录于该第二寻址区块中的一第二区段;
其中M是大于1的整数、该第二组M个逻辑地址接续于该第一组M个逻辑地址、该第三组M个逻辑地址接续于该第二组M个逻辑地址、且该第四组M个逻辑地址接续于该第三组M个逻辑地址。
2.如权利要求1所述的控制器,其中该第一寻址区块中的第一区段和第二区段都是一存储页,且该第二寻址区块中的第一区段和第二区段也都是一存储页。
3.如权利要求1所述的控制器,其中该处理电路另会将该第一寻址区块中所储存的N个地址群组的N个群组编号,记录于该第一寻址区块中的一目标区段。
4.如权利要求3所述的控制器,其中该处理电路会依据该N个地址群组在该第一寻址区块中的储存位置,将该N个群组编号依序记录于该第一寻址区块中的该目标区段。
5.如权利要求1所述的控制器,其中该处理电路另用于:
将用来储存该第二组M个逻辑地址中的一第一逻辑地址的一第一物理地址,和一相对应的数据有效性标记,记录于该第一寻址区块中的该第二区段;以及
将用来储存该第二组M个逻辑地址中的一第二逻辑地址的一第二物理地址,和一相对应的数据有效性标记,记录于该第一寻址区块中的该第二区段。
6.如权利要求5所述的控制器,其中若该通讯接口自该主控装置接收到对应于该第二逻辑地址的一存取指令,该处理电路会依据该第一寻址区块的该第二区段中所储存的内容,将该第二逻辑地址转换成一相对应的物理页地址。
7.如权利要求6所述的控制器,另包含有:
一易失性存储器,耦接于该处理电路;
其中该处理电路会将该第一寻址区块的该第二区段中所记录的部份物理地址暂存于该易失性存储器,并依据该易失性存储器中所暂存的物理地址将该第二逻辑地址转换成相对应的物理页地址。
8.如权利要求5所述的控制器,其中若该通讯接口自该主控装置接收到对应于一第三逻辑地址的一抹除指令,该处理电路会将对应于该第三逻辑地址的一数据有效性标记设定为一预定值。
9.如权利要求8所述的控制器,其中当该通讯接口自该主控装置接收到对应于该第三逻辑地址的一读取指令时,若该第三逻辑地址所对应的数据有效性标记被设定为该预定值,则该处理电路会回传虚拟数据给该主控装置。
10.如权利要求5所述的控制器,其中该处理电路另会将该第一和第二寻址区块中的J个地址群组所在的J个物理地址记录于一第一管理区块中。
11.如权利要求10所述的控制器,其中该处理电路会依据该J个地址群组的群组编号,将该J个物理地址依序记录于该第一管理区块中。
12.如权利要求10所述的控制器,其中该处理电路另会将该J个地址群组中个别地址群组的所在区块位置信息和存储页位置信息,记录于该第一管理区块中。
13.如权利要求12所述的控制器,其中该处理电路另用于将至少两个候选寻址区块中的有效地址群组,储存于一第四寻址区块,并将该第四寻址区块中的多个地址群组的所在物理地址记录于该第一管理区块中。
14.如权利要求13所述的控制器,其中该处理电路另用于将多个寻址区块个别的地址群组有效性信息,记录于一第二管理区块中。
15.如权利要求14所述的控制器,其中该处理电路另用于将该多个寻址区块个别的地址群组有效性信息与一预定阀值进行比较,并依据比较的结果从该多个寻址区块中选出至少两寻址区块做为候选寻址区块。
16.如权利要求15所述的控制器,其中该处理电路另会依据该闪存模块的区块使用状况,动态的调整该预定阀值。
17.如权利要求16所述的控制器,其中该处理电路会依据该多个寻址区块的有效地址群组总数,来动态的调整该预定阀值。
18.如权利要求16所述的控制器,其中该处理电路会依据该闪存模块的可用区块总数,来动态的调整该预定阀值。
19.如权利要求10所述的控制器,其中该处理电路另会将该J个地址群组中个别地址群组的所在区块类型信息和存储页位置信息,记录于该第一管理区块中。
20.如权利要求19所述的控制器,其中该处理电路另用于将成对的两个候选寻址区块中的有效地址群组,储存于一第六寻址区块,并将该第六寻址区块中的多个地址群组的所在物理地址记录于该第一管理区块中。
21.如权利要求10所述的控制器,另包含有:
一易失性存储器,耦接于该处理电路;
其中若该通讯接口自该主控装置接收到对应于该第二逻辑地址的一存取指令,该处理电路会将该第一寻址区块的该第二区段中所记录的部份物理地址暂存于该易失性存储器,并依据该易失性存储器中所暂存的物理地址将该第二逻辑地址转换成相对应的物理页地址。
22.如权利要求21所述的控制器,其中若该通讯接口自该主控装置接收到对应于一第三逻辑地址的一写入指令,该处理电路会更新该第一管理区块的内容。
23.如权利要求5所述的控制器,其中若该通讯接口自该主控装置接收到对应于该第二组M个逻辑地址中的一第三逻辑地址的一写入指令,该处理电路会将该第三逻辑地址和相对应的数据写入一数据区块中的一物理页,更新该第一寻址区块的第二区段中所记录的该第二地址群组,并将更新后的第二地址群组记录于一目标寻址区块中的一物理页。
24.如权利要求23所述的控制器,其中当该目标寻址区块填满了更新后的地址群组时,该处理电路会将该第一寻址区块与该目标寻址区块一起清除。
25.一种用来管理一闪存模块的控制器,包含有:
一处理电路,用于将多个地址群组记录于多个寻址区块中,其中每一地址群组包含有分别对应于多个逻辑地址的多个地址映射信息;以及
一通讯接口,耦接于该处理电路,用于自一主控装置接收对应于一目标逻辑地址的一写入指令;
其中该处理电路会将该目标逻辑地址和相关的数据写入目标数据区块中的一目的地存储页,从该多个地址群组中取得对应于该目标逻辑地址的地址映射信息,依据该目标数据区块的该目的地存储页的物理位置信息更新所取得的地址映射信息,以及将包含有该目标逻辑地址更新后的地址映射信息的一目标地址群组写入一目标寻址区块中的一目标区段。
26.如权利要求25所述的控制器,其中该多个地址群组各包含有与多个连续的逻辑地址分别对应的多个地址映射信息。
27.如权利要求26所述的控制器,其中该处理电路另会记录该多个地址群组个别的配置信息,以及依据该目标寻址区块的该目标区段的物理位置信息,更新该目标地址群组的配置信息。
28.如权利要求27所述的控制器,其中该处理电路会将每一地址群组写入该多个寻址区块的其中一寻址区块的一物理页。
29.如权利要求28所述的控制器,其中该处理电路会将该第一寻址区块中所储存的N个地址群组的N个群组编号,记录于该第一寻址区块中的一区段。
30.如权利要求29所述的控制器,其中该处理电路另用于:
为该第一寻址区块设定一初始有效地址群组数;
将该N个地址群组记录中的配置信息,与依据该N个群组编号所获得的该N个地址群组的配置信息进行比较;以及
依据比较的结果调整该初始有效地址群组数,以获得该第一寻址区块的一有效地址群组数。
31.一种用来存取一闪存模块的控制器,包含有:
一处理电路,用于将包含有对应于第一组连续的M个逻辑地址的第一组M个地址的一第一地址群组记录于一第一寻址区块中的一第一区段,将包含有对应于第二组连续的M个逻辑地址的第二组M个地址的一第二地址群组记录于该第一寻址区块中的一第二区段,将包含有对应于第三组连续的M个逻辑地址的第三组M个地址的一第三地址群组记录于一第二寻址区块中的一第一区段,以及将包含有对应于第四组连续的M个逻辑地址的第四组M个地址的一第四地址群组记录于该第二寻址区块中的一第二区段;以及
一通讯接口,耦接于该处理电路;
其中M是大于1的整数、该第二组M个逻辑地址接续于该第一组M个逻辑地址、该第三组M个逻辑地址接续于该第二组M个逻辑地址、且该第四组M个逻辑地址接续于该第三组M个逻辑地址;
又,若该通讯接口自一主控装置接收到与位于该第一、第二、第三、或第四组逻辑地址中的一目标逻辑地址相对应的一存取指令,该处理电路会依据该第一、第二、第三、或第四地址群组中所记录的内容,将该目标逻辑地址转换成一相对应的目标物理地址,并存取该目标物理地址所指向的该闪存模块中的一存储页。
32.如权利要求31所述的控制器,另包含有:
一易失性存储器,耦接于该处理电路;
其中该处理电路会将该第一、第二、第三、或第四地址群组中所记录的部份物理地址暂存于该易失性存储器,并依据该易失性存储器中所暂存的物理地址将该目标逻辑地址转换成该目标物理地址。
33.如权利要求32所述的控制器,其中该处理电路另用于:
将用来储存该第二组M个逻辑地址中的一第一逻辑地址的一第一物理地址,和一相对应的数据有效性标记,记录于该第一寻址区块中的该第二区段;以及
将用来储存该第二组M个逻辑地址中的一第二逻辑地址的一第二物理地址,和一相对应的数据有效性标记,记录于该第一寻址区块中的该第二区段。
34.如权利要求33所述的控制器,其中若该通讯接口自该主控装置接收到对应于该第一组M个逻辑地址中的一第三逻辑地址的一抹除指令,该处理电路会将对应于该第三逻辑地址的一数据有效性标记设定为一预定值。
35.如权利要求34所述的控制器,其中当该通讯接口自该主控装置接收到对应于该第三逻辑地址的一读取指令时,若该第三逻辑地址所对应的数据有效性标记被设定为该预定值,则该处理电路会回传虚拟数据给该主控装置。
36.如权利要求33所述的控制器,其中该处理电路另会将该第一和第二寻址区块中的J个地址群组所在的J个物理地址记录于一第一管理区块中。
37.一种用来存取一闪存模块的控制器,包含有:
一通讯接口,用于耦接于一主控装置;以及
一处理电路,耦接于该通讯接口,用于将多个逻辑地址依序来回写入至一数据写入群组中的多个数据区块;
其中每次该处理电路写入该多个逻辑地址的其中之一到该数据写入群组中的一数据区块后,该处理电路会将下一个逻辑地址写入该数据写入群组中的另一数据区块;
又,在抹除了该数据写入群组中的一第一数据区块后,该处理电路会将数据写入该数据写入群组中的一第二数据区块,而不先将该第二数据区块抹除。
38.如权利要求37所述的控制器,其中该处理电路另用于:
将该多个逻辑地址中的一第一逻辑地址写入该第一数据区块中的一第一存储页;
写入该第一逻辑地址至该第一数据区块中的该第一存储页后,将该多个逻辑地址中的一第二逻辑地址写入该第二数据区块中的一第一存储页;以及
写入该第二逻辑地址至该第二数据区块中的该第一存储页后,将该多个逻辑地址中的一第三逻辑地址写入该第一数据区块中的一第二存储页。
39.如权利要求37所述的控制器,其中该处理电路在抹除该第一数据区块前,会将该第一数据区块和一第三数据区块中的有效存储页的内容,储存到一目标数据区块;
其中该第三数据区块和该目标数据区块不在该数据写入群组中。
40.如权利要求37所述的控制器,其中该处理电路会将该第一数据区块和该第二数据区块的存储页有效信息记录到一第二管理区块。
41.如权利要求40所述的控制器,其中该处理电路会比较该第一数据区块的存储页有效信息与一预定阀值,并依据比较结果判断是否抹除该第一数据区块。
42.如权利要求41所述的控制器,其中该处理电路另会依据该闪存模块的区块使用状况,动态的调整该预定阀值。
43.如权利要求42所述的控制器,其中该处理电路会依据多个数据区块的有效存储页总数,来动态的调整该预定阀值。
44.如权利要求42所述的控制器,其中该处理电路会依据该闪存模块的可用区块数量,来动态的调整该预定阀值。
45.如权利要求40所述的控制器,其中该处理电路另用于:
将该第一数据区块中储存的N个逻辑地址,记录在该第一数据区块中的一目标存储页;
记录该N个逻辑地址的地址映射信息;
将与该N个逻辑地址中的一目标逻辑地址相对应的更新数据,写入一目的地数据区块中的一目的地存储页;以及
依据该目的地数据区块的该目的地存储页的物理位置信息,更新该目标逻辑地址的地址映射信息。
46.如权利要求45所述的控制器,其中该处理电路另用于:
为该第一数据区块设定一有效存储页初始计数值;
将该N个逻辑地址记录中的地址映射信息,与依据该N个逻辑地址所获得的地址映射信息进行比较;以及
依据比较的结果调整该有效存储页初始计数值,以获得该第一数据区块的存储页有效信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34750010P | 2010-05-24 | 2010-05-24 | |
US61/347,500 | 2010-05-24 | ||
US61/347500 | 2010-05-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102332290A true CN102332290A (zh) | 2012-01-25 |
CN102332290B CN102332290B (zh) | 2015-02-04 |
Family
ID=44973424
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101261823A Pending CN102262594A (zh) | 2010-05-24 | 2011-05-13 | 以动态门槛进行区块管理的方法及存储装置及控制器 |
CN201110135242.8A Active CN102332290B (zh) | 2010-05-24 | 2011-05-24 | 用来管理和存取闪存模块的控制器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101261823A Pending CN102262594A (zh) | 2010-05-24 | 2011-05-13 | 以动态门槛进行区块管理的方法及存储装置及控制器 |
Country Status (3)
Country | Link |
---|---|
US (3) | US9104546B2 (zh) |
CN (2) | CN102262594A (zh) |
TW (2) | TWI437439B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377694A (zh) * | 2012-04-19 | 2013-10-30 | 三星电子株式会社 | 控制非易失性存储设备的操作方法以及映射图案选择方法 |
CN103383664A (zh) * | 2012-05-01 | 2013-11-06 | 索尼公司 | 控制装置、存储装置以及存储控制方法 |
CN103455437A (zh) * | 2012-05-30 | 2013-12-18 | 慧荣科技股份有限公司 | 数据储存装置与数据储存装置操作方法 |
CN103811054A (zh) * | 2012-11-15 | 2014-05-21 | 北京兆易创新科技股份有限公司 | 一种NAND Flash存储器、NAND Flash存储器实现方法及其*** |
CN104750626A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN106598877A (zh) * | 2015-10-15 | 2017-04-26 | 爱思开海力士有限公司 | 存储器***及该存储器***的操作方法 |
CN107526540A (zh) * | 2016-06-21 | 2017-12-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN107632944A (zh) * | 2017-09-22 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种读取数据的方法及装置 |
CN108241473A (zh) * | 2014-02-18 | 2018-07-03 | 慧荣科技股份有限公司 | 存取闪存的方法及相关的控制器 |
CN109343887A (zh) * | 2018-09-20 | 2019-02-15 | 深圳市零点智联科技有限公司 | 一种优化stm32芯片dfu升级的方法 |
KR20190016562A (ko) * | 2016-08-06 | 2019-02-18 | 울리 인코포레이티드 | 저장 클래스 메모리를 위한 웨어 레벨링의 장치 및 방법 |
CN109671458A (zh) * | 2017-10-17 | 2019-04-23 | 联发科技股份有限公司 | 管理闪存模块的方法及相关的闪存控制器 |
CN109783396A (zh) * | 2017-11-13 | 2019-05-21 | 慧荣科技股份有限公司 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
US11237758B2 (en) | 2016-08-06 | 2022-02-01 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using address cache |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101279710B1 (ko) * | 2011-04-01 | 2013-06-27 | 엘에스산전 주식회사 | Plc 데이터 로그모듈 및 이의 데이터 저장 방법 |
US9158670B1 (en) * | 2011-06-30 | 2015-10-13 | Western Digital Technologies, Inc. | System and method for dynamically adjusting garbage collection policies in solid-state memory |
US20130282962A1 (en) * | 2012-04-20 | 2013-10-24 | SMART Storage Systems, Inc. | Storage control system with flash configuration and method of operation thereof |
CN103377135B (zh) * | 2012-04-25 | 2016-04-13 | 上海东软载波微电子有限公司 | 寻址方法、装置及*** |
TWI486767B (zh) * | 2012-06-22 | 2015-06-01 | Phison Electronics Corp | 資料儲存方法、記憶體控制器與記憶體儲存裝置 |
CN103530062B (zh) * | 2012-07-03 | 2016-12-21 | 群联电子股份有限公司 | 数据存储方法、存储器控制器与存储器存储装置 |
US9754648B2 (en) | 2012-10-26 | 2017-09-05 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US9740485B2 (en) | 2012-10-26 | 2017-08-22 | Micron Technology, Inc. | Apparatuses and methods for memory operations having variable latencies |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9734097B2 (en) * | 2013-03-15 | 2017-08-15 | Micron Technology, Inc. | Apparatuses and methods for variable latency memory operations |
US9645920B2 (en) * | 2013-06-25 | 2017-05-09 | Marvell World Trade Ltd. | Adaptive cache memory controller |
US9563565B2 (en) | 2013-08-14 | 2017-02-07 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
US9727493B2 (en) | 2013-08-14 | 2017-08-08 | Micron Technology, Inc. | Apparatuses and methods for providing data to a configurable storage area |
US10365835B2 (en) | 2014-05-28 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for performing write count threshold wear leveling operations |
KR20160075165A (ko) * | 2014-12-19 | 2016-06-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9880755B2 (en) * | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
CN105389130A (zh) * | 2015-11-16 | 2016-03-09 | 联想(北京)有限公司 | 一种信息处理方法及固态硬盘 |
US10593421B2 (en) * | 2015-12-01 | 2020-03-17 | Cnex Labs, Inc. | Method and apparatus for logically removing defective pages in non-volatile memory storage device |
US9880743B1 (en) * | 2016-03-31 | 2018-01-30 | EMC IP Holding Company LLC | Tracking compressed fragments for efficient free space management |
KR102530262B1 (ko) * | 2016-07-21 | 2023-05-11 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10380028B2 (en) | 2016-12-30 | 2019-08-13 | Western Digital Technologies, Inc. | Recovery of validity data for a data storage system |
TWI685747B (zh) * | 2017-05-03 | 2020-02-21 | 大陸商合肥沛睿微電子股份有限公司 | 延伸裝置與記憶系統 |
CN107678684B (zh) * | 2017-08-22 | 2020-11-10 | 深圳市硅格半导体有限公司 | 存储器的无效数据清除方法、装置和存储器 |
WO2019209707A1 (en) * | 2018-04-23 | 2019-10-31 | Micron Technology, Inc. | Host logical-to-physical information refresh |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
CN110968441B (zh) * | 2018-09-28 | 2023-06-06 | 慧荣科技股份有限公司 | 存储卡存取装置及方法 |
TWI726524B (zh) * | 2019-12-09 | 2021-05-01 | 新唐科技股份有限公司 | 電子處理裝置及記憶體控制方法 |
US11500578B2 (en) * | 2021-04-19 | 2022-11-15 | Micron Technology, Inc. | Memory access threshold based memory management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257361A (en) * | 1989-10-30 | 1993-10-26 | Hitachi, Ltd. | Method and apparatus for controlling one or more hierarchical memories using a virtual storage scheme and physical to virtual address translation |
US20080229025A1 (en) * | 2007-03-12 | 2008-09-18 | Robert Plamondon | Systems and methods of using the refresh button to determine freshness policy |
CN201142229Y (zh) * | 2007-12-05 | 2008-10-29 | 苏州壹世通科技有限公司 | 一种闪存阵列装置 |
US7526599B2 (en) * | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
CN101681314A (zh) * | 2008-03-01 | 2010-03-24 | 株式会社东芝 | 存储器*** |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4757438A (en) * | 1984-07-12 | 1988-07-12 | Texas Instruments Incorporated | Computer system enabling automatic memory management operations |
US5784706A (en) * | 1993-12-13 | 1998-07-21 | Cray Research, Inc. | Virtual to logical to physical address translation for distributed memory massively parallel processing systems |
JP4085478B2 (ja) * | 1998-07-28 | 2008-05-14 | ソニー株式会社 | 記憶媒体及び電子機器システム |
US7620769B2 (en) * | 2000-01-06 | 2009-11-17 | Super Talent Electronics, Inc. | Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory |
US6895464B2 (en) * | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
US7254668B1 (en) * | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
US7035967B2 (en) * | 2002-10-28 | 2006-04-25 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
KR100526178B1 (ko) * | 2003-03-31 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리 액세스 장치 및 방법 |
JPWO2005103903A1 (ja) * | 2004-04-20 | 2007-08-30 | 松下電器産業株式会社 | 不揮発性記憶システム |
US7409489B2 (en) * | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
KR100725410B1 (ko) * | 2006-01-20 | 2007-06-07 | 삼성전자주식회사 | 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법 |
US7779426B2 (en) * | 2006-03-30 | 2010-08-17 | Microsoft Corporation | Describing and querying discrete regions of flash storage |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
WO2008057557A2 (en) * | 2006-11-06 | 2008-05-15 | Rambus Inc. | Memory system supporting nonvolatile physical memory |
KR100824412B1 (ko) * | 2006-12-08 | 2008-04-22 | 삼성전자주식회사 | 메모리 카드 시스템 및 그것의 수명 정보 전송 방법 |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
CN101256534B (zh) | 2007-03-01 | 2010-10-06 | 创惟科技股份有限公司 | 闪存的高效率静态平均抹除方法 |
TWI368224B (en) * | 2007-03-19 | 2012-07-11 | A Data Technology Co Ltd | Wear-leveling management and file distribution management of hybrid density memory |
US7908423B2 (en) * | 2007-07-25 | 2011-03-15 | Silicon Motion, Inc. | Memory apparatus, and method of averagely using blocks of a flash memory |
US8751755B2 (en) * | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
CN101632068B (zh) * | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
US8397014B2 (en) * | 2008-02-04 | 2013-03-12 | Apple Inc. | Memory mapping restore and garbage collection operations |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
CN101339808B (zh) | 2008-07-28 | 2011-02-09 | 华中科技大学 | 存储块的擦除方法及装置 |
CN101645309B (zh) * | 2008-08-05 | 2013-05-22 | 威刚科技(苏州)有限公司 | 非挥发性存储装置及其控制方法 |
US8438325B2 (en) * | 2008-10-09 | 2013-05-07 | Cadence Design Systems, Inc. | Method and apparatus for improving small write performance in a non-volatile memory |
US8219781B2 (en) * | 2008-11-06 | 2012-07-10 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
US8412880B2 (en) * | 2009-01-08 | 2013-04-02 | Micron Technology, Inc. | Memory system controller to manage wear leveling across a plurality of storage nodes |
US8166233B2 (en) * | 2009-07-24 | 2012-04-24 | Lsi Corporation | Garbage collection for solid state disks |
US8321727B2 (en) * | 2009-06-29 | 2012-11-27 | Sandisk Technologies Inc. | System and method responsive to a rate of change of a performance parameter of a memory |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8713066B1 (en) * | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
-
2011
- 2011-01-27 US US13/014,735 patent/US9104546B2/en active Active
- 2011-05-03 TW TW100115461A patent/TWI437439B/zh active
- 2011-05-13 CN CN2011101261823A patent/CN102262594A/zh active Pending
- 2011-05-23 US US13/113,376 patent/US9529709B2/en active Active
- 2011-05-23 TW TW100118037A patent/TWI436208B/zh active
- 2011-05-24 CN CN201110135242.8A patent/CN102332290B/zh active Active
-
2013
- 2013-07-15 US US13/942,380 patent/US9606911B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257361A (en) * | 1989-10-30 | 1993-10-26 | Hitachi, Ltd. | Method and apparatus for controlling one or more hierarchical memories using a virtual storage scheme and physical to virtual address translation |
US7526599B2 (en) * | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
US20080229025A1 (en) * | 2007-03-12 | 2008-09-18 | Robert Plamondon | Systems and methods of using the refresh button to determine freshness policy |
CN201142229Y (zh) * | 2007-12-05 | 2008-10-29 | 苏州壹世通科技有限公司 | 一种闪存阵列装置 |
CN101681314A (zh) * | 2008-03-01 | 2010-03-24 | 株式会社东芝 | 存储器*** |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377694B (zh) * | 2012-04-19 | 2018-01-23 | 三星电子株式会社 | 控制非易失性存储设备的操作方法以及映射图案选择方法 |
CN103377694A (zh) * | 2012-04-19 | 2013-10-30 | 三星电子株式会社 | 控制非易失性存储设备的操作方法以及映射图案选择方法 |
CN103383664A (zh) * | 2012-05-01 | 2013-11-06 | 索尼公司 | 控制装置、存储装置以及存储控制方法 |
CN103383664B (zh) * | 2012-05-01 | 2018-01-02 | 泰塞拉先进技术公司 | 控制装置、存储装置以及存储控制方法 |
CN103455437A (zh) * | 2012-05-30 | 2013-12-18 | 慧荣科技股份有限公司 | 数据储存装置与数据储存装置操作方法 |
CN103811054B (zh) * | 2012-11-15 | 2017-09-19 | 北京兆易创新科技股份有限公司 | 一种NAND Flash存储器、NAND Flash存储器实现方法及其*** |
CN103811054A (zh) * | 2012-11-15 | 2014-05-21 | 北京兆易创新科技股份有限公司 | 一种NAND Flash存储器、NAND Flash存储器实现方法及其*** |
US9684568B2 (en) | 2013-12-26 | 2017-06-20 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9727271B2 (en) | 2013-12-26 | 2017-08-08 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9842030B2 (en) | 2013-12-26 | 2017-12-12 | Silicon Motion, Inc. | Data storage device and flash memory control method |
CN104750626A (zh) * | 2013-12-26 | 2015-07-01 | 慧荣科技股份有限公司 | 数据储存装置以及快闪存储器控制方法 |
CN108241473A (zh) * | 2014-02-18 | 2018-07-03 | 慧荣科技股份有限公司 | 存取闪存的方法及相关的控制器 |
CN106598877A (zh) * | 2015-10-15 | 2017-04-26 | 爱思开海力士有限公司 | 存储器***及该存储器***的操作方法 |
CN107526540A (zh) * | 2016-06-21 | 2017-12-29 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
CN107526540B (zh) * | 2016-06-21 | 2020-07-10 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
KR20190016562A (ko) * | 2016-08-06 | 2019-02-18 | 울리 인코포레이티드 | 저장 클래스 메모리를 위한 웨어 레벨링의 장치 및 방법 |
CN109643275A (zh) * | 2016-08-06 | 2019-04-16 | 瓦雷科技股份有限公司 | 存储级存储器的磨损均衡设备和方法 |
US10353812B2 (en) | 2016-08-06 | 2019-07-16 | Wolley Inc | Apparatus and method of wear leveling of storage class memory by recording input group to output group address mapping |
US10394708B2 (en) | 2016-08-06 | 2019-08-27 | Wolley Inc | Apparatus and method of damage recovery of storage class memory using repair entry in write cache |
KR102229648B1 (ko) * | 2016-08-06 | 2021-03-22 | 울리 인코포레이티드 | 저장 클래스 메모리를 위한 웨어 레벨링의 장치 및 방법 |
US11237758B2 (en) | 2016-08-06 | 2022-02-01 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using address cache |
CN107632944A (zh) * | 2017-09-22 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种读取数据的方法及装置 |
CN109671458A (zh) * | 2017-10-17 | 2019-04-23 | 联发科技股份有限公司 | 管理闪存模块的方法及相关的闪存控制器 |
CN109783396A (zh) * | 2017-11-13 | 2019-05-21 | 慧荣科技股份有限公司 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
CN109343887A (zh) * | 2018-09-20 | 2019-02-15 | 深圳市零点智联科技有限公司 | 一种优化stm32芯片dfu升级的方法 |
Also Published As
Publication number | Publication date |
---|---|
US9104546B2 (en) | 2015-08-11 |
US20110289260A1 (en) | 2011-11-24 |
TW201142589A (en) | 2011-12-01 |
US9529709B2 (en) | 2016-12-27 |
TWI437439B (zh) | 2014-05-11 |
TW201142602A (en) | 2011-12-01 |
TWI436208B (zh) | 2014-05-01 |
US20130304975A1 (en) | 2013-11-14 |
US20110289255A1 (en) | 2011-11-24 |
CN102262594A (zh) | 2011-11-30 |
US9606911B2 (en) | 2017-03-28 |
CN102332290B (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102332290A (zh) | 用来管理和存取闪存模块的控制器 | |
CN102612685B (zh) | 经由存储器高速缓存操纵的无阻碍数据传送 | |
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
US5812814A (en) | Alternative flash EEPROM semiconductor memory system | |
CN101937319B (zh) | 存储器***及其映射方法 | |
KR101272642B1 (ko) | 플래시 메모리시스템 내의 데이터 저장 용량의 리클레이밍 | |
KR100526879B1 (ko) | 플래쉬 파일 시스템 | |
CN102483719B (zh) | 基于块的非透明高速缓存 | |
CN111459844B (zh) | 数据储存装置及用于存取逻辑至物理地址映射表的方法 | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
KR100816761B1 (ko) | 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법 | |
US20130212319A1 (en) | Memory system and method of controlling memory system | |
CN103635968A (zh) | 包含存储器***控制器的设备和相关方法 | |
CN109697027B (zh) | 包括共享存储器区域和专用存储器区域的数据存储设备 | |
KR20080091203A (ko) | 복수의 플래시 메모리 유닛을 포함하는 휴대용 데이터 저장장치 | |
US7245539B2 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
CN102341803A (zh) | 响应于触发事件而优化所存储内容的传送的*** | |
US8521947B2 (en) | Method for writing data into flash memory | |
KR20190054426A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
KR20190123090A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
CN103650054A (zh) | 包含存储器***控制器的设备和相关方法 | |
CN103635969A (zh) | 包含存储器***控制器的设备和相关方法 | |
US20150127886A1 (en) | Memory system and method | |
CN106775436B (zh) | 数据存取方法、存储器控制电路单元与存储器 | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |