CN113448487B - 写入闪存管理表的计算机可读取存储介质、方法及装置 - Google Patents

写入闪存管理表的计算机可读取存储介质、方法及装置 Download PDF

Info

Publication number
CN113448487B
CN113448487B CN202010218055.5A CN202010218055A CN113448487B CN 113448487 B CN113448487 B CN 113448487B CN 202010218055 A CN202010218055 A CN 202010218055A CN 113448487 B CN113448487 B CN 113448487B
Authority
CN
China
Prior art keywords
flash memory
host
current block
written
user data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010218055.5A
Other languages
English (en)
Other versions
CN113448487A (zh
Inventor
柯冠宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to CN202010218055.5A priority Critical patent/CN113448487B/zh
Priority to US17/026,632 priority patent/US11307766B2/en
Publication of CN113448487A publication Critical patent/CN113448487A/zh
Application granted granted Critical
Publication of CN113448487B publication Critical patent/CN113448487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种写入闪存管理表的计算机可读取存储介质、方法及装置,闪存管理表写入方法由闪存控制器执行,包含:周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存‑主机对照表的内容更新主机‑闪存对照子表中的记录。由此,本发明通过随机写入条件的检查,可避免因为大量的主机‑闪存对照子表更新而延迟后续主机读命令和/或主机写命令的执行。

Description

写入闪存管理表的计算机可读取存储介质、方法及装置
技术领域
本发明涉及存储装置,尤指一种写入闪存管理表的计算机可读取存储介质、方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
为了提升闪存模块的数据写入及读取效能,闪存控制器会以多个信道并行地执行数据写入及读取。为了达成并行处理的目的,一段连续性的数据会分散地存储到多个通道所连接的闪存单元,并使用闪存管理表(Flash Management Tables)记录用户数据的逻辑地址(由主机端管理)与物理地址(由闪存控制器管理)间的对应关系。然而,闪存管理表的写入也影响到整体***的效能。因此,本发明提出一种写入闪存管理表的计算机可读取存储介质、方法及装置,用于提升***整体效能。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种写入闪存管理表的计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,并且所述程序代码被所述处理单元执行时实现以下步骤:周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录。
本发明还涉及一种写入闪存管理表的方法,由闪存控制器执行,包含:周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录。
本发明还涉及一种写入闪存管理表的装置,包含:闪存接口和处理单元。闪存接口耦接闪存模块,并且处理单元耦接闪存接口。处理单元周期性检查已经写入闪存模块的当前块的用户数据是否满足随机写入条件;以及,如果是,则依据当前块的闪存-主机对照表的内容驱动闪存接口更新闪存模块中的主机-闪存对照子表的记录。
上述实施例的优点之一,通过随机写入条件的检查,可避免因为大量的主机-闪存对照子表更新而延迟后续主机读命令和/或主机写命令的执行。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的***架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据本发明实施例的NAND闪存单元的示意图。
图4为依据本发明实施例的高阶对照表和主机-闪存对照子表之间的关联示意图。
图5为依据本发明实施例的主机-闪存对照子表和物理页面之间的关联示意图。
图6为依据本发明实施例的闪存管理表的写入方法的流程图。
其中,附图中符号的简单说明如下:
10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;136:随机存取存储器;138:直接存储存取控制器;139:闪存接口;150:闪存模块;151:接口;153#0~153#15:NAND闪存单元;CH#0~CH#3:通道;CE#0~CE#3:启动信号;310、330:数据平面;310#0~310#m、330#0~330#m:物理块;P#0~P#n:物理页面;410:高阶对照表;430#0~430#15:H2F子表;510:物理页面;530:物理地址信息;530-0:物理块编号;530-1:物理页面编号;S610~S675:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。电子装置10包含主机端(Host Side)110、闪存控制器130及闪存模块150,并且闪存控制器130及闪存模块150可合称为装置端(Device Side)。电子装置10可实施于个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。主机端110与闪存控制器130的主机接口(Host Interface)131可以通用串行总线(Universal Serial Bus,USB)、先进技术附件(Advanced TechnologyAttachment,ATA)、串行先进技术附件(Serial Advanced Technology Attachment,SATA)、快速外设组件互联(Peripheral Component Interconnect Express,PCI-E)、通用闪存存储(Universal Flash Storage,UFS)、快速非易失存储器(Non-Volatile Memory Express,NVMe)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(Flash Interface)139与闪存模块150可以双倍数据率(Double DataRate,DDR)通信协议彼此通信,例如,开放NAND闪存(Open NAND Flash Interface,ONFI)、双倍数据率开关(DDR Toggle)或其他通信协议。闪存控制器130包含处理单元134,可使用多种方式实施,如使用通用硬件(例如,单处理器、具有并行处理能力的多处理器、图形处理器或其他具有运算能力的处理器),并且在执行软件以及/或固件指令时,提供之后描述的功能。处理单元134通过主机接口131接收主机命令,例如读取命令(Read Command)、写入命令(Write Command)、抹除命令(Erase Command)等,调度并执行这些命令。闪存控制器130另包含随机存取存储器(Random Access Memory,RAM)136,可实施为动态随机存取存储器(Dynamic Random Access Memory,DRAM)、静态随机存取存储器(Static Random AccessMemory,SRAM)或上述两者的结合,用于配置空间作为数据缓冲区,存储从主机端110读取并即将写入闪存模块150的用户数据(也可称为主机数据),以及从闪存模块150读取并即将输出给主机端110的用户数据。随机存取存储器136另可存储执行过程中需要的数据,例如,变量、数据表、主机-闪存对照表(Host-to-Flash,H2F Table)、闪存-主机对照表(Flash-to-Host,F2H Table)等。闪存接口139包含NAND闪存控制器(NAND Flash Controller,NFC),提供存取闪存模块150时需要的功能,例如命令串行器(Command Sequencer)、低密度奇偶校验(Low Density Parity Check,LDPC)等。
闪存控制器130中可配置总线架构(Bus Architecture)132,用于让组件之间彼此耦接以传递数据、地址、控制信号等,这些组件包含主机接口131、处理单元134、RAM 136、直接存储存取(Direct Memory Access,DMA)控制器138、闪存接口139等。于一些实施例中,主机接口131、处理单元134、RAM 136、DMA控制器138与闪存接口139可通过单一总线彼此耦接。于另一些实施例中,闪存控制器130中可配置高速总线,用于让处理单元134、DMA控制器138与RAM 136彼此耦接,并且配置低速总线,用于让处理单元134、DMA控制器138、主机接口131与闪存接口139彼此耦接。DMA控制器138可依据处理单元134的指令,通过总线架构132在组件间迁移数据,例如,将主机接口131或闪存接口139中特定数据缓存器(Data Buffer)的数据搬到RAM136中的特定地址,将RAM 136中特定地址的数据搬到主机接口131或闪存接口139中的特定数据缓存器等。
总线包含并行的物理线,连接闪存控制器130中两个以上的组件。总线是一种共享的传输介质,在任意的时间上,只能有两个装置可以使用这些线来彼此通信,用于传递数据。数据及控制信号能够在组件间分别沿数据和控制线进行双向传播,但另一方面,地址信号只能沿地址线进行单向传播。例如,当处理单元134想要读取RAM 136的特定地址上的数据时,处理单元134在地址线传送此地址给RAM 136。接着,此地址的数据会在数据线上回复给处理单元134。为了完成数据读取操作,控制信号会使用控制线进行传递。
闪存模块150提供大量的存储空间,通常是数百个千兆字节(Gigabytes,GB),甚至是多个兆兆字节(Terabytes,TB),用于存储大量的用户数据,例如高分辨率图片、影片等。闪存模块150中包含控制电路以及存储器数组,存储器数组中的存储单元可包含单层式单元(Single Level Cells,SLCs)、多层式单元(Multiple Level Cells,MLCs)、三层式单元(Triple Level Cells,TLCs)、四层式单元(Quad-Level Cells,QLCs)或上述的任意组合。处理单元134通过闪存接口139写入用户数据到闪存模块150中的指定地址(目的地址),以及从闪存模块150中的指定地址(来源地址)读取用户数据。闪存接口139使用多个电子信号来协调闪存控制器130与闪存模块150间的数据与命令传递,包含数据线(Data Line)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(AddressLatch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(WriteEnable,WE)等控制信号。
参考图2,闪存模块150中的接口151可包含四个输出输入通道(I/Ochannels,以下简称通道)CH#0至CH#3,每一个通道连接四个NAND闪存单元,例如,信道CH#0连接NAND闪存单元153#0、153#4、153#8及153#12。每个NAND闪存单元可封装为独立的芯片(die)。闪存接口139可通过接口151发出启动信号CE#0至CE#3中的一个来启动NAND闪存单元153#0至153#3、153#4至153#7、153#8至153#11、或153#12至153#15,接着以并行的方式从启动的NAND闪存单元读取用户数据,或者写入用户数据至启动的NAND闪存单元。
每个NAND闪存单元可包含多个数据平面(Data Planes),每个数据平面可包含多个物理块(Physical Blocks),并且每个物理块可包含多个物理页面(Physical Pages)。参考图3的实施例,NAND闪存单元153#0包含两个数据平面310及330。数据平面310包含物理块310#0至310#m,且数据平面330包含物理块330#0至330#m。每个物理块包含P#0至P#n共n+1个物理页面。NAND闪存单元、物理块和物理页面可分别使用逻辑单元号(LogicalBlockNumber,LUN)、块编号(Block Number)和页面编号(Page Number)标识,而以上编号的任意组合可称为闪存模块150的物理地址。
每个物理块依其功能可区分为数据块(Data Block)、当前块(Current block)或***块(System block)。处理单元134可为每个NAND闪存单元中每个平面选择出一个空的物理块作为当前块,用于预备写入从主机端110接收的用户数据。为了提升数据写入的效率,主机端110提供的用户数据可并行地写入多个NAND闪存单元中多个平面的多个当前块中的特定页面。处理单元134可在RAM 136中维护每个当前块的闪存-主机对照表(Flash-to-Host,F2H table),包含多笔记录,依页面编号的顺序存储当前块中每个页面的用户数据关联于哪的逻辑地址的信息。逻辑地址可使用逻辑区块地址(Logical Block Address,LBA)、主页面编号(Host Page Number)或其他方式表示,由主机端110管理。举例来说,每个逻辑区块地址关联于512B大小的用户数据,而每个主页面编号关联于4KB大小的用户数据。一个当前块中的所有页面都存储满用户数据之后,或者一个当前块中的剩余页面都填入虚假值之后,处理单元134可驱动闪存接口139将RAM 136中的相应F2H表写入当前块的指定页面(例如最后一个页面),或者其他指定物理块中的空页面。当相应F2H表已经写入闪存模块150后,当前块就改变为数据块,换句话说,其中存储的用户数据不会再改变。接着,处理单元134可选择出另一个空的物理块作为新的当前块。此外,处理单元134可将特定物理块设置为***块,用于存储管理信息,例如闪存标识码(Flash Identifier,ID)、坏块表(BadBlock Table)、坏行表(Bad Column Table)、主机-闪存对照表(Host-to-Flash,H2Ftable)等。F2H表可另称为物理-逻辑对照表,而H2F表可另称为逻辑-物理对照表。
除了将F2H表写入闪存模块150中的相应物理页面外,处理单元134还需要依据当前块的F2H表的内容更新H2F表,用于将来执行主机读命令时能从H2F表快速查找出关联于特定逻辑地址的用户数据实际存储于哪个物理地址的信息。H2F表包含多笔记录,依逻辑地址的顺序存储每个逻辑地址的用户数据实际存储在哪的逻辑地址的信息。然而,由于RAM136无法提供足够空间存储整个H2F表以供处理单元134将来于数据读取操作时快速查找,H2F表可切成多个H2F子表,并存储于闪存模块150,使得将来于数据读取操作时只要从闪存模块150读取相应的H2F子表至RAM 136。参考图4,整个H2F表可切成H2F子表430#0~430#15。处理单元134还维护高阶对照表410,包含多个记录,依逻辑地址的顺序存储每段逻辑地址区段关联的H2F子表的物理地址信息。例如,第0个至第4095个主页面的关联H2F子表430#0存储于特定LUN的特定物理块中(字母“Z”可代表LUN和物理块的编号)的第0个物理页面,第4096个至第8191个主页面的关联H2F子表430#1存储于特定LUN的特定物理块中的第1个物理页面,依此类推。虽然图4中只包含16个H2F子表,但是所属技术领域的技术人员可根据闪存模块150的容量,设置更多的H2F子表,本发明并不因此局限。
每个H2F子表所需的空间可以为1KB、2KB、4KB、8KB等。参考图5。举例来说,H2F子表430#0依照逻辑地址的顺序存储相应于每一逻辑位置的物理位置信息。逻辑位置可以主页面编号表示,每一个主页面编号对应到一个固定大小的物理存储空间,例如4KB。所属技术领域人员也使用LBA来表示逻辑位置,本发明并不因此局限。举例来说,H2F子表430#0依序存储从H#0至H#4095的物理地址信息。物理地址信息530可以四个字节表示:前二个字节530-0记录物理块编号(Physical Block Number);后二个字节530-1记录物理页面编号(Physical Page Number)。举例来说,相应于主页面H#2的物理地址信息530可指向物理块310#1中的物理页面510。字节530-0记录物理块310#1的编号,字节530-1记录物理页面510的编号。闪存管理表可包含如上所述的F2H表、高阶对照表、H2F表、H2F子表等。
在一些实施方式中,每当一个当前块中的所有页面都存储满用户数据之后,或者一个当前块中的剩余页面都填入虚假值之后,处理单元134才依据当前块的F2H表的内容更新H2F表。由于当前块中存储的用户数据可能牵涉到多个H2F子表,详细来说,处理单元134先搜寻高阶对照表410的内容来找出关联H2F子表的物理地址,并驱动闪存接口139从闪存模块150的这些物理地址读取关联H2F子表并存储于RAM 136。接着,处理单元134依据当前块的F2H表的内容更新RAM 136中H2F子表的关联记录的物理地址信息,并驱动闪存接口139写入更新后的H2F子表到闪存模块150的指定***块。然而,上述实施方式在主机端110进行随机写入(Random Write)时,由于需要更新的H2F子表太多而延迟了后续主机读命令和/或主机写命令的执行。更糟的是,后续主机写命令还可能因为等待H2F子表更新的时间过长而逾时,造成主机端110还需要花费时间和运算资源重新产生并传送主机写命令给闪存控制器130。
为了解决如上所述实施方式的问题,本发明实施例提出一种闪存管理表的写入方法,由处理单元134加载和执行相关固件或软件指令时实施。针对闪存模块150中的每个当前块,周期性(详细来说,每当写入默认数目的主页面的用户数据到此当前块后)检查已经写入此当前块的用户数据是否满足随机写入条件。当已经写入的用户数据满足随机写入条件时,依据此当前块的F2H表的内容更新闪存模块150中存储的H2F子表及高阶对照表中的有关记录。参考图6,详细步骤说明如下:
步骤S610:将变量C1和C2初始为0。处理单元134使用变量C1来记录从上一次检查以来已经写入的主页面数目,用于决定检查的时间点。处理单元134还使用变量C2来记录待更新的H2F子表的数目,用于判断是否满足随机写入的条件。
步骤S620:驱动闪存接口139写入一个主页面的用户数据并更新RAM 136中F2H表的相关记录。例如,处理单元134驱动闪存接口139写入主页面H#10000的用户数据到当前块的第100个页面后,更新RAM 136中F2H表的第100个记录,用于存储主页面H#10000(也就是逻辑地址)的信息。
步骤S630:改变变量C1=C1+1。
步骤S640:判断新写入的用户数据所关联的H2F子表是否不属于待更新的H2F子表。如果是,流程进行步骤S645的处理;否则,流程进行步骤S650的处理。处理单元134可在RAM 136中维护更新比特图(Update Bitmap),包含多个比特,每个比特记录闪存模块150中相应H2F子表是否需要更新的信息,“1”代表相应H2F子表需要更新,“0”代表相应H2F子表不需要更新。举例来说,为记录如图4所示的H2F子表430#0至430#15的待更新状态,更新比特图包含16个比特,初始为“0b0000000000000000”。处理单元134可依据写入的主页面编号和更新比特图的内容来判断新写入的用户数据所关联的H2F子表是否不属于待更新的H2F子表。
步骤S645:修改待更新的H2F子表的信息,并且改变C2=C2+1。处理单元134可修改更新比特图的内容来响应新写入的用户数据。举个使用案例来说,假设更新比特图处于初始状态,而已经写入的用户数据的主页面编号为H#10000,则处理单元134可将RAM 136中的比特图改为“0b0001000000000000”并且改变C2为1。
步骤S650:判断变量C1是否超过阈值TH1。如果是,流程进行步骤S655的处理;否则,流程进行步骤S620的处理。处理单元134可通过这个判断决定检查时间点。例如,假设一个当前块能够存储4096个主页面的用户数据,则处理单元134可在每写入当前块的1/4空间的用户数据后就做一次判断,因此,阈值TH1可设为4096/4=1024,使得处理单元134在写入1024、2048、3172和4096个主页面的用户数据后就进行一次是否满足随机写入的判断。所属技术领域人员可通过改变阈值TH1来改变进行上述判断的频次,当阈值TH1设得较低时,就会执行更多是否满足随机写入的判断。
步骤S655:改变变量C1=0。
在另一些实施例中,流程可省略步骤S650和步骤S655,让处理单元134在每次写入一个主页面的用户数据后就进行是否满足随机写入的判断。
步骤S660:判断变量C2是否超过阈值TH2。如果是,流程进行步骤S665的处理;否则,流程进行步骤S670的处理。处理单元134可通过这个判断决定已经写入的用户数据是否满足随机写入条件。在一些实施例中,阈值TH2设定为低于阈值TH1的一个固定值,例如50、100、500、1000、1024、2048或其他的正整数。在另一些实施例中,阈值TH2设定为随另一个阈值TH1改变的值,公式如下:
TH2=TH1/n
其中,n可为小于TH1的任意正整数,例如从2到5的任意正整数。例如,假设阈值TH1=1024,n=4,则处理单元134侦测到C1超过256时(也就是更新比特表中存在超过256个比特为“1”),判定已经写入的用户数据满足随机写入的条件。综上所述,随机写入条件指已经写入闪存模块150的此当前块的用户数据所关联的主机-闪存对照子表的数目高于阈值。
步骤S665:依据F2H表中未处理的内容驱动闪存接口139更新闪存模块150中H2F子表和高阶对照表的相关记录,改变变量C2=0,以及初始化待更新的H2F子表的信息。例如,F2H表中的未处理记录为第1025至第2048笔记录,则处理单元134只需要依据F2H表中第1025至第2048笔记录的内容更新闪存模块150中关联的H2F子表和高阶对照表的相关记录。由于闪存模块150中关联的H2F子表的内容已经更新,因此处理单元134初始化变量C2和更新比特表。
步骤S670:判断当前块是否已经写满。如果是,流程进行步骤S675的处理;否则,流程进行步骤S620的处理。当前块可能已经写满用户数据,或者在将用户数据写入某个物理页面后将剩余的页面填入虚假值(Dummy Values)。
步骤S675:驱动闪存接口139写入最终的F2H表至闪存模块150,并且依据F2H表中未处理的内容驱动闪存接口139更新闪存模块150中H2F子表和高阶对照表的相关记录。
搭配图4的高阶对照表的内容,表1的一个物理块的关联示例F2H表显示已执行的主机写命令为顺序写入(也就是非随机写入):
表1
H#100
H#101
H#102
H#103
H#104
H#105
H#106
H#107
H#108
H#109
H#110
H#111
H#112
H#113
H#114
H#115
虽然表2的一个物理块的关联示例F2H表显示的主页面编号并不是连续的,但是根据步骤S660的判断,已执行的主机写命令也是非随机写入:
表2
H#100
H#108
H#116
H#124
H#132
H#140
H#148
H#156
H#164
H#172
H#180
H#188
H#196
H#204
H#212
H#220
搭配图4的高阶对照表的内容,由于表3的一个物理块的关联示例F2H表显示已执行的主机写命令关联到16个H2F表,因此根据步骤S660的判断,已执行的主机写命令为随机写入:
表3
H#100
H#4196
H#8292
H#12388
H#16484
H#20580
H#24676
H#28772
H#32868
H#36964
H#41060
H#45156
H#49252
H#53348
H#57444
H#61540
为了让读者更容易理解,虽然图6所示的实施例以一个当前块作为例子说明写入闪存管理表的方法、计算机可读取存储介质及装置的操作细节,所属技术领域人员在适当修改后可应用到能够并行写入的多个当前块的闪存管理表的写入操作,本发明并不因此受限。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、计算机中特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1、图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图6的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (8)

1.一种写入闪存管理表的计算机可读取存储介质,用于存储能够被闪存控制器的处理单元执行的程序代码,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
每当写入默认数目的主页面的用户数据到闪存模块的当前块后,检查已经写入所述闪存模块的所述当前块的用户数据是否满足随机写入条件;以及
当已经写入所述闪存模块的所述当前块的用户数据满足所述随机写入条件时,依据所述当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录,
其中,所述随机写入条件指已经写入所述闪存模块的所述当前块的用户数据所关联的所述主机-闪存对照子表的数目高于阈值,以及所述阈值的设定公式如下:
TH2=TH1/n
TH2代表所述阈值,TH1代表所述默认数目,n代表小于TH1的正整数。
2.如权利要求1所述的写入闪存管理表的计算机可读取存储介质,其特征在于,所述阈值为低于所述默认数目的固定正整数。
3.如权利要求1所述的写入闪存管理表的计算机可读取存储介质,其特征在于,n代表从2到5的正整数。
4.如权利要求1所述的写入闪存管理表的计算机可读取存储介质,所述程序代码被所述处理单元执行时实现以下步骤:
搜寻高阶对照表的内容来找出所述主机-闪存对照子表的物理地址;
从所述闪存模块的所述物理地址读取所述主机-闪存对照子表;
依据所述当前块的所述闪存-主机对照表的内容更新所述主机-闪存对照子表中的所述记录;以及
写入更新后的主机-闪存对照子表到所述闪存模块。
5.一种写入闪存管理表的方法,由闪存控制器执行,包含:
每当写入默认数目的主页面的用户数据到闪存模块的当前块后,检查已经写入所述闪存模块的所述当前块的用户数据是否满足随机写入条件;以及
当已经写入所述闪存模块的所述当前块的用户数据满足所述随机写入条件时,依据所述当前块的闪存-主机对照表的内容更新主机-闪存对照子表的记录,
其中,所述随机写入条件指已经写入所述闪存模块的所述当前块的用户数据所关联的所述主机-闪存对照子表的数目高于阈值,以及所述阈值的设定公式如下:
TH2=TH1/n
TH2代表所述阈值,TH1代表所述默认数目,n代表小于TH1的正整数。
6.一种写入闪存管理表的装置,包含:
闪存接口,耦接闪存模块;以及
处理单元,耦接所述闪存接口,用于每当写入默认数目的主页面的用户数据到闪存模块的当前块后,检查已经写入所述闪存模块的所述当前块的用户数据是否满足随机写入条件;以及当已经写入所述闪存模块的所述当前块的用户数据满足所述随机写入条件时,依据所述当前块的闪存-主机对照表的内容驱动所述闪存接口更新所述闪存模块中的主机-闪存对照子表的记录,
其中,所述随机写入条件指已经写入所述闪存模块的所述当前块的用户数据所关联的所述主机-闪存对照子表的数目高于阈值,以及所述阈值的设定公式如下:
TH2=TH1/n
TH2代表所述阈值,TH1代表所述默认数目,n代表小于TH1的正整数。
7.如权利要求6所述的写入闪存管理表的装置,其特征在于,还包含:
随机存取存储器,耦接于所述处理单元,用于存储所述当前块的所述闪存-主机对照表。
8.如权利要求6所述的写入闪存管理表的装置,其特征在于,所述处理单元搜寻高阶对照表的内容来找出所述主机-闪存对照子表的物理地址;驱动所述闪存接口从所述闪存模块的所述物理地址读取所述主机-闪存对照子表;依据所述当前块的所述闪存-主机对照表的内容更新所述主机-闪存对照子表中的所述记录;以及驱动所述闪存接口写入更新后的主机-闪存对照子表到所述闪存模块。
CN202010218055.5A 2020-03-25 2020-03-25 写入闪存管理表的计算机可读取存储介质、方法及装置 Active CN113448487B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010218055.5A CN113448487B (zh) 2020-03-25 2020-03-25 写入闪存管理表的计算机可读取存储介质、方法及装置
US17/026,632 US11307766B2 (en) 2020-03-25 2020-09-21 Apparatus and method and computer program product for programming flash administration tables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010218055.5A CN113448487B (zh) 2020-03-25 2020-03-25 写入闪存管理表的计算机可读取存储介质、方法及装置

Publications (2)

Publication Number Publication Date
CN113448487A CN113448487A (zh) 2021-09-28
CN113448487B true CN113448487B (zh) 2024-06-21

Family

ID=77806980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010218055.5A Active CN113448487B (zh) 2020-03-25 2020-03-25 写入闪存管理表的计算机可读取存储介质、方法及装置

Country Status (2)

Country Link
US (1) US11307766B2 (zh)
CN (1) CN113448487B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220236902A1 (en) * 2021-01-27 2022-07-28 Samsung Electronics Co., Ltd. Systems and methods for data transfer for computational storage devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213705A (zh) * 2017-07-07 2019-01-15 爱思开海力士有限公司 存储装置及其操作方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721040B2 (en) 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
WO2008087634A1 (en) 2007-01-18 2008-07-24 Sandisk Il Ltd. A method and system for facilitating fast wake-up of a flash memory system
US7970983B2 (en) 2007-10-14 2011-06-28 Sandisk Il Ltd. Identity-based flash management
CN101833516A (zh) 2007-12-14 2010-09-15 创惟科技股份有限公司 改进闪存存取效率的存储***与方法
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
WO2011148223A1 (en) 2010-05-27 2011-12-01 Sandisk Il Ltd Memory management storage to a host device
US9244833B2 (en) * 2012-05-30 2016-01-26 Silicon Motion, Inc. Data-storage device and flash memory control method
US9208074B2 (en) * 2013-08-30 2015-12-08 Silicon Motion, Inc. Updating address mapping in sub-intervals in a flash memory data storage device
CN108733576B (zh) * 2017-04-20 2022-12-09 得一微电子股份有限公司 一种固态硬盘及其内存转换层对映方法
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
TWI727185B (zh) * 2018-07-09 2021-05-11 慧榮科技股份有限公司 鏈結串列搜索裝置及方法
CN110908926B (zh) * 2018-09-14 2022-03-22 慧荣科技股份有限公司 数据储存装置及逻辑至物理地址映射表的写入方法
CN110059021A (zh) * 2019-04-18 2019-07-26 深圳市时创意电子有限公司 一种降低写入放大率并提升随机写入性能的算法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109213705A (zh) * 2017-07-07 2019-01-15 爱思开海力士有限公司 存储装置及其操作方法

Also Published As

Publication number Publication date
US11307766B2 (en) 2022-04-19
CN113448487A (zh) 2021-09-28
US20210303159A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
US11150837B2 (en) Method, device and system for processing sequential groups of buffered write data
US10628319B2 (en) Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same
KR102395538B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US8812784B2 (en) Command executing method, memory controller and memory storage apparatus
US9880742B2 (en) Valid data merging method, memory controller and memory storage apparatus
CN109992202B (zh) 数据存储设备、其操作方法以及包括其的数据处理***
CN111158579B (zh) 固态硬盘及其数据存取的方法
KR102507140B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
US9009442B2 (en) Data writing method, memory controller and memory storage apparatus
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102544162B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN113448487B (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
TWI749490B (zh) 寫入閃存管理表的電腦程式產品及方法及裝置
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
KR20230037255A (ko) 이벤트 로그 관리 방법, 컨트롤러 및 저장 장치
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置
TWI740446B (zh) 管理垃圾回收程序的電腦程式產品及方法及裝置
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
US20230214123A1 (en) Storage device and a method of operating the same
CN116931812A (zh) 因应主机丢弃命令的数据存取方法和存储介质和装置
TW202340939A (zh) 因應主機丟棄命令的資料存取方法及產品電腦程式及裝置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant