CN114327240A - 计算机可读存储介质、闪存存储器的数据存储方法及装置 - Google Patents

计算机可读存储介质、闪存存储器的数据存储方法及装置 Download PDF

Info

Publication number
CN114327240A
CN114327240A CN202011056071.5A CN202011056071A CN114327240A CN 114327240 A CN114327240 A CN 114327240A CN 202011056071 A CN202011056071 A CN 202011056071A CN 114327240 A CN114327240 A CN 114327240A
Authority
CN
China
Prior art keywords
data
physical
flash memory
partition
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011056071.5A
Other languages
English (en)
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 CN202011056071.5A priority Critical patent/CN114327240A/zh
Priority to US17/157,368 priority patent/US11860669B2/en
Publication of CN114327240A publication Critical patent/CN114327240A/zh
Pending legal-status Critical Current

Links

Images

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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F3/0649Lifecycle 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/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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本发明涉及一种计算机可读存储介质、闪存存储器的数据存储方法及装置,该方法由处理单元加载并执行闪存转换层的程序代码时实施,包含:将闪存模块的存储空间划分为第一区和第二区;将从主机端接收的属于第一分区类型的数据只写入第一区中的第一物理块;以及将从主机端接收的属于第二分区类型的数据写入第一区中的第一物理块和第二区中的第二物理块。由此,本发明通过如上所述的闪存模块的局部划分和采用依据不同分区类型的数据特性来写入数据的政策,可更有效地使用闪存模块的存储空间。

Description

计算机可读存储介质、闪存存储器的数据存储方法及装置
技术领域
本发明涉及存储装置,尤指一种计算机可读存储介质、闪存存储器的数据存储方法及装置。
背景技术
闪存通常分为NOR闪存与NAND闪存。NOR闪存为随机存取装置,中央处理器(Host)可于地址引脚上提供任何存取NOR闪存的地址,并及时地从NOR闪存的数据引脚上获得存储于该地址上的数据。相反地,NAND闪存并非随机存取,而是串行存取。NAND闪存无法像NOR闪存一样,可以存取任何随机地址,中央处理器反而需要写入串行的字节(Bytes)的值到NAND闪存中,用于定义请求命令(Command)的类型(如,读取、写入、抹除等),以及用在此命令上的地址。地址可指向一个页面(闪存中写入操作的最小数据块)或一个区块(闪存中抹除操作的最小数据块)。
有效地使用NAND闪存空间来存储不同类型的主机数据,一直在闪存控制器中是个重要的议题。因此,本发明提出一种计算机可读取存储介质、闪存存储器的数据存储方法及装置,适应于不同类型的主机数据。
发明内容
有鉴于此,如何减轻或消除上述相关领域的缺陷,实为有待解决的问题。
本发明涉及一种闪存存储器的数据存储方法,由处理单元加载并执行闪存转换层的程序代码时实施,包含:将闪存模块的存储空间划分为第一区和第二区;将从主机端接收的属于第一分区类型的数据只写入第一区中的第一物理块;以及将从主机端接收的属于第二分区类型的数据写入第一区中的第一物理块和第二区中的第二物理块。
本发明还涉及一种计算机可读取存储介质,用于存储能够被处理单元执行的程序代码,并且所述程序代码被所述处理单元执行时实现以下步骤:将闪存模块的存储空间划分为第一区和第二区;将从主机端接收的属于第一分区类型的数据只写入第一区中的第一物理块;以及将从主机端接收的属于第二分区类型的数据写入第一区中的第一物理块和第二区中的第二物理块。
本发明还涉及一种闪存存储器的数据存储装置,包含闪存接口、主机接口和处理单元。处理单元将闪存模块的存储空间划分为第一区和第二区;驱动闪存接口将通过主机接口从主机端接收的属于第一分区类型的数据只写入第一区中的第一物理块;以及驱动闪存接口将通过主机接口从主机端接收的属于第二分区类型的数据写入第一区中的第一物理块和第二区中的第二物理块。
第一区包含多个第一物理块,第二区包含多个第二物理块,每个第一物理块只能使用单层式单元模式来写入数据,每个第二物理块能够使用单层式单元模式或非单层式单元模式来写入数据。单层式单元模式用于编程存储单元以存储两个状态中的一个,非单层式单元模式用于编程存储单元以存储四个或更多状态中的一个。
上述实施例的优点之一,通过以上所述闪存模块的局部划分和采用依据不同分区类型的数据特性来写入数据的政策,可更有效地使用闪存模块的存储空间。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为依据本发明实施例的电子装置的系统架构图。
图2为依据本发明实施例的闪存模块的示意图。
图3为依据一些实施方式的主机分区和存储局部间的对照示意图。
图4为依据本发明实施例的主机分区和存储局部间的对照示意图。
图5为依据本发明实施例的数据写入的方法流程图。
图6为依据本发明实施例的存储空间整理的方法流程图。
图7为依据本发明实施例的跨区磨耗平均的方法流程图。
图8为依据本发明实施例的跨区读取刷新的方法流程图。
图9为依据本发明实施例的跨区读取再生的方法流程图。
其中,附图中符号的简单说明如下:
10:电子装置;110:主机端;130:闪存控制器;131:主机接口;132:总线;134:处理单元;136:随机存取存储器;138:直接存储存取控制器;139:闪存接口;150:闪存模块;151:接口;153#0~153#15:NAND闪存单元;CH#0~CH#3:通道;CE#0~CE#3:启动信号;300:文件系统;310#1~310#8:分区;350、450:闪存转换层;155#1:单层式单元区;155#3:非单层式单元区;400:原生写命令队列;S510~S560:方法步骤;S610~S640:方法步骤;S710~S760:方法步骤;S810~S840:方法步骤;S910~S930:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、操作、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、操作、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图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)、嵌入式多媒体卡(Embedded Multi-Media Card,eMMC)等通信协议彼此通信。闪存控制器130的闪存接口(Flash Interface)139与闪存模块150可以双倍数据率(Double Data Rate,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 Access Memory,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等。DMA控制器138可依据处理单元134的指令,通过总线架构132在组件间迁移数据,例如,将主机接口131或闪存接口139中的特定数据缓存器(Data Buffer)的数据搬到RAM 136中的特定地址,将RAM 136中的特定地址的数据搬到主机接口131或闪存接口139中的特定数据缓存器等。
闪存模块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间的数据与命令传递,包含数据线(DataLine)、时钟信号(Clock Signal)与控制信号(Control Signal)。数据线可用于传递命令、地址、读出及写入的数据;控制信号线可用于传递芯片启动(Chip Enable,CE)、地址提取启动(Address Latch Enable,ALE)、命令提取启动(Command Latch Enable,CLE)、写入启动(Write Enable,WE)等控制信号。
参考图2,闪存模块150中的接口151可包含四个输入输出通道(I/O channels,以下简称通道)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闪存单元153#0至153#15中的每一个可包含多个物理块,并且每个物理块可设置为SLC块或非SLC块(non-SLC Block)。NAND闪存单元153#0至153#15中的所有SLC块可搜集起来称为SLC区(SLC Region),而其中的所有非SLC块可搜集起来称为non-SLC区(non-SLC Region)。SLC块中的每个存储单元在抹除后只能以SLC模式编程,而non-SLC块中的每个存储单元在抹除后可以SLC、MLC、TLC或QLC等模式编程。MLC、TLC和QLC模式可统称为非SLC模式。每个MLC、TLC或QLC能够比一个SLC存储更多比特的数据,但是,SLC的数据耐用性(Data Retention)和存取速度却优于MLC、TLC或QLC。SLC块、MLC块、TLC块及QLC块中的每个存储单元可分别存储两个、四个、八个及十六个状态中的一个。SLC块中的每个字符线(Word Line)可存储一个页面的数据。MLC块中的每个字符线可存储两个页面的数据,包含最高有效位页面(Most Significant Bit,MSB Page)及最低有效位页面(Least Significant Bit,LSB Page)。TLC块中的每个字符线可存储三个页面的数据,包含最高有效位页面、中间有效位页面(Center Significant Bit,CSB Page)及最低有效位页面。QLC块中的每个字符线可存储四个页面的数据,包含顶部有效位页面(TopSignificant Bit,TSB Page)、最高有效位页面、中间有效位页面及最低有效位页面。
参考图3,主机端110会执行文件系统(File System)300,实现数据的存储、分级组织和存取等操作。例如,文件系统300可对装置端提供的存储空间逻辑性分为第一和第二开机分区(Boot Partitions)310#1和310#2、重现保护记忆块分区(Replay ProtectedMemory Block,RPMB Partition)310#3、第一至第四通用分区(General PurposePartitions)310#4至310#7和用户数据分区(User Data Partition)310#8。文件系统300将逻辑性分区信息传送给闪存控制器130中执行的闪存转换层(Flash Translation Layer,FTL)350,这些信息包含每个分区的编号和长度,而分区的长度通常以逻辑区块地址(Logical Block Address,LBA)的数量表示。一个LBA编号可对应到固定长度的数据,例如512字节的数据。通过文件系统300,主机端110可存储系统配置、开机程序在第一开机分区310#1,以及存储驱动程序、操作系统在第二开机分区310#2。主机端110另可存储各式各样的应用程序到第一至第四通用分区(General Purpose Partitions)310#4至310#7,以及各式各样的数据文件到用户数据分区310#8。举例来说,当主机端110欲写入开机程序到装置端时,可发出主机写命令给闪存控制器130,其中包含第一开机分区(Boot Partitions)310#1的编号、开始LBA编号、长度等信息。当主机端110欲写入视频串流文件到装置端时,也可发出主机写命令给闪存控制器130,其中包含用户数据分区310#8的编号、开始LBA编号、长度等信息。为了方便管理,在一些实施方式中,FTL 350依据主机数据的特性让一部分分区的数据存储在SLC区155#1,并且让其他分区的数据存储在non-SLC区155#3。FTL 350可依据主机写命令中的分区编号将从主机端110接收的数据写入到闪存模块150中的SLC区155#1或non-SLC区155#3中的一个或多个物理块。详细举例来说,FTL 350将相应于第一和第二开机分区310#1和310#2和RPMB分区310#3的数据写入SLC区155#1,并且将相应于第一至第四通用分区310#4至310#7和用户数据分区310#8的数据写入non-SLC区155#3。因此,SLC块可用于存储重要而不能出错,且频繁存取的系统数据,例如,操作系统、驱动程序、键值等等。non-SLC块可用于存储大容量的系统数据和用户数据,例如各式各样的应用程序、文字处理、电子表格、简报、影像、音频、视频等文件。
通常在初始时,FTL 350可配置超过第一和第二开机分区310#1和310#2和RPMB分区310#3的长度的空间给SLC区155#1。例如,虽然逻辑性分区信息指出第一和第二开机分区310#1和310#2和RPMB分区310#3的总长度为8百万字节(Megabyte,MB),但是FTL 350配置了10MB的存储空间给SLC区155#1。然而,因为第一和第二开机分区310#1和310#2和RPMB分区310#3的数据通常很少变动,造成SLC区155#1拥有许多余裕的空间都不会使用到。就算第一至第四通用分区(General Purpose Partitions)310#4至310#7和用户数据分区(UserData Partition)310#8的数据即将写满non-SLC区155#3,SLC区155#1的余裕空间也不能被使用。
为了解决如上所述实施方式的问题,本发明实施例提出一种新的配置方式,用于更有效地使用闪存模块150的存储空间。参考图4,FTL 450依据主机数据的特性让一部分分区的数据只能存储在SLC区155#1,并且让其他分区的数据可存储在SLC区155#1或non-SLC区155#3。举例来说,FTL 450让相应于第一和第二开机分区310#1和310#2和RPMB分区310#3的数据只能写入SLC区155#1,并且将相应于第一至第四通用分区310#4至310#7和用户数据分区310#8的数据能够写入SLC区155#1和non-SLC区155#3。详细来说,当处理单元134加载并执行FTL 450的程序代码时实施闪存存储器的数据存储方法,包含:将闪存模块150的存储空间划分为SLC区155#1和non-SLC区155#3;驱动闪存接口139将通过主机接口131从主机端110接收的属于第一、第二开机分区310#1和310#2和RPMB分区310#3的数据只写入SLC区155#1中的物理块;以及驱动闪存接口139将通过主机接口131从主机端110接收的属于第一至第四通用分区310#4至310#7和用户数据分区10#8的数据写入SLC区155#1中的物理块和non-SLC区155#3中的第二物理块。
在一些实施例中,FTL 450可让相应于第一至第四通用分区310#4至310#7和用户数据分区310#8的随机数据(Random Data)写入SLC区155#1,并且让相应于第一至第四通用分区310#4至310#7和用户数据分区310#8的连续数据(Continuous Data)写入non-SLC区155#3。参考图5所示的数据写入方法的流程图,此方法由处理单元134加载及执行FTL 450的程序代码时实施,详细说明如下:
步骤S510:通过主机接口131从主机端110接收主机写入命令。
步骤S520:判断待写入数据是否属于特定分区类型(Partition-type)。如果是,流程继续进行步骤S530的处理;否则,流程继续进行步骤S540的处理。举例来说,FTL 450将所有分区分成两种类型:第一分区类型包含第一和第二开机分区310#1和310#2和RPMB分区310#3;第二分区类型包含第一至第四通用分区310#4至310#7和用户数据分区310#8。以上所述的特定分区类型指第一分区类型。处理单元134可通过检查主机写入命令中携带的分区号码来完成判断。
步骤S530:写入数据到SLC区155#1中当前块(Current Block)的一个或多个物理页面。SLC区155#1中的每个物理块可标记为三种状态中的一个:闲置块(Spare Blocks)、当前块(Current Blocks)和数据块(Data Blocks)。任何物理块在不包含有效数据之后就可成为闲置块。针对每个NAND闪存单元,闪存控制器130可从其中的每个数据平面的闲置块中挑选出一个来作为当前块,用于写入主机写入命令所请求存储的数据。当数据写满当前块后,闪存控制器130关闭此物理块不再写入而只能读取数据,此时,此物理块称为数据块。接着,闪存控制器130从闲置块中挑选出一个来作为新的当前块,继续新的数据写入。FTL 450可在RAM 136中为每个当前块维护物理-逻辑对照表(Physical-To-Logical,P2L MappingTable),用于依物理页面的顺序存储每个物理页面的数据属于哪个LBA编号的信息。一旦当前块关闭而成为数据块时,FTL 450可驱动闪存接口139来写入P2L对照表到闪存模块150的指定位置。此外,FTL 450另需要更新逻辑-物理对照表(Logical-To-Physical,L2PMapping Table)中的相应内容。L2P对照表依LBA编号的顺序存储每个LBA编号的数据存储在哪个物理地址的信息,物理地址可包含物理块编号、物理页面编号等信息。FTL 450更新L2P对照表中被更新LBA编号的物理地址,用于指到SLC区155#1中相应的物理地址。
在这里需要注意的是,L2P对照表中的每个LBA编号会对应到一个分区编号,用于指出此LBA编号数据属于哪个分区。此外,依据初始的配置,L2P对照表中的每个物理地址属于SLC区155#1或non-SLC区155#3。在一些实施例中,FTL 450可扫描L2P对照表中属于第一至第四通用分区310#4至310#7和用户数据分区310#8的LBA编号的物理地址来知道第一至第四通用分区310#4至310#7和用户数据分区310#8中的每一个LBA编号的数据存储在SLC区155#1或non-SLC区155#3中。
在一些实施例中,FTL 450为了区分SLC区155#1中每个物理块或数据块的每个物理页面的数据属于哪种分区类型,FTL 450可另在RAM 136中为SLC区155#1中每个物理块或数据块维护一个分区类型比特表(Partition-type Bit Table),至少包含一个物理块的全部页面数目的比特,依物理地址的顺序记录每个物理页面属于哪种分区类型的信息。例如,当一个比特记录“1”时,代表相应物理页面的数据属于第二分区类型;当一个比特记录“0”时,代表相应物理页面的数据属于第一分区类型。当数据写入完成,FTL 450更新分区类型比特表中相应于写入物理页面的比特值为“0”。
步骤S540:判断主机写入命令是否为随机写入命令。如果是,流程继续步骤S550的处理;否则,流程进行步骤S560的处理。FTL 450可依据主机写入命令欲写入数据的长度来判断是否为随机写入命令。假设主机端110管理数据的最小单位为4千字节(Kilobyte,KB),且每个物理页面能够存储数据的长度为16KB时:当主机写命令指示写入短于16KB的数据时,FTL 450可判断此主机写入命令为随机写入命令。反之,表示此主机写入命令为连续写入命令,可能结合之前和/或之后的主机写入命令,指示写入一段长的连续数据。
步骤S550:写入数据到SLC区155#1中当前块的一个物理页面。关于写入数据后更新P2L对照表和L2P对照表的技术细节,所属技术领域人员可根据步骤S530的说明推测而得,为求简明不再赘述。在一些实施例中,FTL 450可更新分区类型比特表中相应于写入物理页面的比特值为“1”,代表此物理页面的数据属于第二分区类型。
步骤S560:写入数据到non-SLC区155#3中当前块的一个物理页面。类似地,non-SLC区155#3中的每个物理块可标记为三种状态中的一个:闲置块、当前块和数据块。关于non-SLC区155#3中改变每个物理块的状态的技术细节,所属技术领域人员可根据步骤S530的说明推测而得,为求简明不再赘述。此外,关于写入数据到non-SLC区的当前块后更新P2L对照表和L2P对照表的技术细节,所属技术领域人员可根据步骤S530的说明推测而得,为求简明不再赘述。
在这里需要注意的是,步骤S530、S550和S560所指的数据写入操作并不一定驱动闪存接口139马上写入数据到闪存模块150中,而是先将适当的写入指令存储到闪存接口139的队列中,然后让闪存接口139决定这些写入指令的执行时机,本发明并不因此局限。
当存取闪存模块150经过一段时间的存取后,SLC区155#1中的闲置块数目会变动,FTL 450可维护一个闲置计数器,用于指出SLC区155#1中目前拥有的闲置块的总数。每当SLC区155#1中的一个闲置块变成当前块时,闲置计数器减一。每当SLC区155#1中的一个数据块变成闲置块时,闲置计数器加一。此外,当存取闪存模块150经过一段时间的存取后,SLC区155#1中的许多物理页面可能包含有效区段及无效区段(又称为过期区段),其中,有效区段存储有效数据,无效区段存储无效(旧的)数据。当FTL 450侦测到计数器低于一个阈值时,可读取并搜集一个数据块中属于第二分区类型的有效区段中的数据,接着,驱动闪存接口139重新以MLC、TLC或QLC模式写入搜集起来的有效数据至non-SLC区155#3中当前块的空物理页面。此外,FTL 450可读取并搜集此数据块中属于第一分区类型的有效区段中的数据,接着,驱动闪存接口139重新以SLC模式写入搜集起来的有效数据至SLC区155#1中当前块的空物理页面,使得SLC区155#1中这些包含无效的用户数据的数据块可在抹除后变成为闲置区块让其他数据使用。如上所述的程序称为跨区垃圾回收程序(Cross-regionGarbage Collection,GC Process)。值得注意的是,跨区垃圾回收程序以MLC、TLC或QLC模式写入有效数据到non-SLC区155#3中的物理页面时,可释放SLC区155#1中两个或以上的物理页面(又可称为SLC页面)的存储空间。在跨区垃圾回收程序中,FTL 450会根据写入操作的执行结果更新P2L对照表和L2P对照表的内容。
参考图6所示的存储空间整理方法的流程图,此方法由处理单元134加载及执行FTL 450的程序代码时实施,详细说明如下:
步骤S610:侦测到触发信号。此触发信号可代表装置端即将进入休眠模式,到达预先设定的时间点,或接收到主机写入命令,或者是代表已经满足其他预先设定的启动侦测的触发条件。
步骤S620:读取闲置计数器的值以获得SLC区155#1中目前闲置块的数目。
步骤S630:判断目前闲置块的数目是否低于阈值。如果是,则流程继续进行步骤S640的处理;否则,流程继续进行步骤S610的处理。
步骤S640:执行如上所述的跨区垃圾回收程序。
在跨区垃圾回收程序中,为了判断SLC区155#1中一个数据块的每个物理页面存储的数据属于第一分区类型或第二分区类型,在一些实施例中,FTL450可搜索此数据块的分区类型比特表来获得此数据块中哪些物理页面的数据属于第二分区类型。举例来说,当此数据块的分区类型比特表中一个比特为“1”时,代表相应物理页面的数据属于第二分区类型,FTL 450可搜集相应物理页面中的有效数据。
在另一些实施例中,FTL 450可搜索L2P对照表中属于第二分区类型的LBA编号的物理地址来知道哪些LBA编号的数据存储在SLC区155#1中,并且搜集SLC区155#1中符合条件的物理地址的有效数据。
为了让SLC区155#1中的物理块拥有接近的磨耗程度来延长使用寿命,FTL 450可适时地执行数据迁移程序。FTL 450可为每个物理块记录一个抹除计数器,初始为0。在每次抹除一个物理块后,将相应的抹除计数器加一。参考图7所示的跨区磨耗平均(Cross-region Wear Leveling)方法的流程图,此方法由处理单元134加载及执行FTL 450的程序代码时实施,详细说明如下:
步骤S710:侦测到触发信号。此触发信号可代表装置端即将进入休眠模式,或到达预先设定的时间点,或者是代表已经满足其他预先设定的启动侦测的触发条件。
步骤S720:读取SLC区155#1中第一个或下一个数据块的抹除计数器的值,代表此数据块已经抹除的次数。
步骤S730:判断抹除计数器的值是否高于阈值。如果是,代表此数据块的使用过热,流程继续进行步骤S740的处理;否则,代表此数据块的使用正常,流程继续进行步骤S750的处理。
步骤S740:标记此数据块为迁移来源块。FTL 450可在RAM 136中记录此数据块的标记信息。
步骤S750:判断是否侦测完SLC区中的所有数据块。如果是,流程继续进行步骤S760的处理;否则,流程继续进行步骤S720的处理。
步骤S760:执行数据迁移程序。
在如步骤S760所述的数据迁移程序的一些实施例中,FTL 450可驱动闪存接口139将SLC区155#1中迁移来源块中属于第二分区类型的多个物理页面的数据原封不动地以MLC、TLC或QLC模式写入到non-SLC区155#3中一个当前块的一个物理页面,此当前块的抹除次数为non-SLC区155#3中相对较低的。此外,FTL 450可驱动闪存接口139将SLC区155#1中迁移来源块中属于第一分区类型的每个物理页面的数据原封不动地以SLC模式写入到SLC区155#1中一个当前块的一个物理页面,此当前块的抹除次数为SLC区155#1中相对较低的。值得注意的是,当数据迁移程序分别以MLC、TLC或QLC模式写入SLC区155#1中迁移来源块的两个、三个或四个物理页面的数据到non-SLC区155#3中的non-SLC页面时,可释放SLC区155#1中的两个或以上的物理页面的存储空间。
在如步骤S760所述的数据迁移程序的另一些实施例中,FTL 450可驱动闪存接口139将SLC区155#1中迁移来源块中属于第二分区类型的多个物理页面的有效数据搜集起来以MLC、TLC或QLC模式写入到non-SLC区155#3中一个当前块的一个物理页面,此当前块的抹除次数为non-SLC区155#3中相对较低的。此外,FTL 450可驱动闪存接口139将SLC区155#1中迁移来源块中属于第一分区类型的多个物理页面的有效数据搜集起来以SLC模式写入到SLC区155#1中一个当前块的一个物理页面,此当前块的抹除次数为SLC区155#1中相对较低的。这样,不但可达成磨耗平均的目的,还能够进行垃圾回收,更有效地使用闪存模块150的存储空间。
在如步骤S760所述的数据迁移程序中,当迁移来源块的数据写入到non-SLC区155#3后,FTL 450可标记迁移来源块为暂时不使用的物理块,避免在短时间内被抹除后成为闲置块。
为了避免SLC区155#1中的物理块因为读取次数过多而造成其中存储的数据毁损,FTL 450可适时地执行数据迁移程序。FTL 450可为每个数据块记录一个读取计数器,每次被抹除而成为闲置块后设为0。在每次读取一个数据块中存储的数据后,将相应的读取计数器加一。参考图8所示的跨区读取刷新(Cross-region Read Refresh)方法的流程图,此方法由处理单元134加载及执行FTL 450的程序代码时实施,详细说明如下:
步骤S810:读取SLC区155#1的一个数据块的物理页面中的数据。
步骤S820:将此数据块的读取计数器加一。
步骤S830:判断读取计数器的值是否高于阈值。如果是,代表此数据块的读取过多,流程继续进行步骤S840的处理;否则,代表此数据块的使用正常,流程继续进行步骤S810的处理。
步骤S840:执行数据迁移程序。
在如步骤S840所述的数据迁移程序的一些实施例中,FTL 450可驱动闪存接口139将此数据块中属于第二分区类型的多个物理页面的数据原封不动地以MLC、TLC或QLC模式写入到non-SLC区155#3中一个当前块的一个物理页面。此外,FTL 450可驱动闪存接口139将此数据块中属于第一分区类型的每个物理页面的数据原封不动地以SLC模式写入到SLC区155#1中一个当前块的一个物理页面。值得注意的是,当数据迁移程序分别以MLC、TLC或QLC模式写入SLC区155#1中迁移此数据块的两个、三个或四个物理页面的数据到non-SLC区155#3中的non-SLC页面时,可释放SLC区155#1中两个或以上的物理页面的存储空间。
在如步骤S840所述的数据迁移程序的另一些实施例中,FTL 450可驱动闪存接口139将此数据块中属于第二分区类型的多个物理页面的有效数据搜集起来以MLC、TLC或QLC模式写入到non-SLC区155#3中一个当前块的一个物理页面。此外,FTL 450可驱动闪存接口139将此数据块中属于第一分区类型的多个物理页面的有效数据搜集起来以SLC模式写入到SLC区155#1中一个当前块的一个物理页面。这样,不但可达成读取刷新的目的,还能够进行垃圾回收,更有效地使用闪存模块150的存储空间。
此外,当数据块因若干原因发生读取干扰(Read Disturbance)时,可能造成其中存储的数据包含过多的错误比特。一旦侦测到数据块中的一个或多个物理面页包含了过多的错误比特,FTL 450可适时地为此数据块执行数据迁移程序。参考图9所示的跨区读取再生(Cross-region Read Reclaim)方法的流程图,此方法由处理单元134加载及执行FTL450的程序代码时实施,详细说明如下:
步骤S910:读取SLC区155#1的一个数据块的物理页面中的数据。
步骤S920:判断错误修正率是否高于阈值。如果是,代表此数据块可能发生读取干扰,流程继续进行步骤S930的处理;否则,代表此数据块的使用正常,流程继续进行步骤S910的处理。在数据读取时,闪存接口139可使用相应的纠错码(Error-Correcting Code,ECC)来修正此物理页面中的数据所包含的错误比特。纠错码可为低密度奇偶较验码(Low-Density Parity Check Code,LDPC)、BCH码(Bose–Chaudhuri–Hocquenghem Code)等。以每1KB的数据为例,BCH码可提供最多72个错误比特的修正能力,而LDPC可提供最多128个错误比特的修正能力。阈值可设定为使用纠错码的最大修正能力的50%到80%之间。
步骤S930:执行数据迁移程序。步骤S930的数据迁移程序的详细内容可参考步骤S840的说明,为求简明不再赘述。
在如步骤S760、S840和S930所述的数据迁移程序中,为了判断SLC区155#1中一个迁移来源块的每个物理页面存储的数据属于第一分区类型或第二分区类型,FTL 450可搜索此迁移来源块的分区类型比特表来获得其中每个物理页面的数据属于第一分区类型或第二分区类型。
本发明所述的方法中的全部或部分步骤可以由计算机程序实现,例如存储装置中的固件转换层(Firmware Translation Layer,FTL)、计算机中特定硬件的驱动程序等。此外,也可实现于如上所示的其他类型程序。所属技术领域中的技术人员可将本发明实施例的方法撰写成程序代码,为求简明不再加以描述。依据本发明实施例方法实施的计算机程序可存储于适当的计算机可读取存储介质,例如DVD、CD-ROM、U盘、硬盘,也可置于可通过网络(例如,互联网,或其他适当介质)存取的网络服务器。
虽然图1、图2中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图5到图9的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。

Claims (16)

1.一种闪存存储器的数据存储方法,由处理单元加载并执行闪存转换层的程序代码时实施,其特征在于,所述闪存存储器的数据存储方法包括:
将闪存模块的存储空间划分为第一区和第二区,其中,所述第一区包含多个第一物理块,所述第二区包含多个第二物理块,每个所述第一物理块只能使用单层式单元模式来写入数据,每个所述第二物理块能够使用所述单层式单元模式或非单层式单元模式来写入数据,所述单层式单元模式用于编程存储单元以存储两个状态中的一个,所述非单层式单元模式用于编程存储单元以存储四个或更多状态中的一个;
将从主机端接收的属于第一分区类型的数据只写入所述第一区中的所述第一物理块;以及
将从所述主机端接收的属于第二分区类型的数据写入所述第一区中的所述第一物理块和所述第二区中的所述第二物理块。
2.如权利要求1所述的闪存存储器的数据存储方法,其特征在于,还包括:
从所述主机端接收主机写入命令;
当所述主机写入命令指示写入属于所述第一分区类型的第一数据时,写入所述第一数据到所述第一区中的当前块;
当所述主机写入命令指示写入属于所述第二分区类型的第二数据且所述主机写入命令为随机写入命令时,写入所述第二数据到所述第一区中的当前块;以及
当所述主机写入命令指示写入属于所述第二分区类型的第三数据且所述主机写入命令为连续写入命令时,写入所述第三数据到所述第二区中的当前块。
3.如权利要求2所述的闪存存储器的数据存储方法,其特征在于,所述第二数据的长度短于一个物理页面存储数据的长度,以及所述第三数据的长度等于或长于一个物理页面存储数据的长度。
4.如权利要求2所述的闪存存储器的数据存储方法,其特征在于,还包括:
检查所述主机写入命令携带的分区号码来判断所述主机写入命令指示写入属于所述第一分区类型或所述第二分区类型的数据。
5.如权利要求1所述的闪存存储器的数据存储方法,其特征在于,还包括:
当所述第一区的闲置块的数目低于阈值时,读取并搜集数据块中属于所述第一分区类型的多个第一有效区段中的数据,并使用所述单层式单元模式写入所述第一有效区段中的数据到所述第一区中的当前块;以及
当所述第一区的闲置块的数目低于所述阈值时,读取并搜集所述数据块中属于所述第二分区类型的第二有效区段中的数据,并使用所述非单层式单元模式写入所述第二有效区段中的数据到所述第二区中的当前块。
6.如权利要求1所述的闪存存储器的数据存储方法,其特征在于,还包括:
当所述第一区的数据块的抹除次数或读取次数高于阈值时,读取所述数据块中属于所述第一分区类型的多个第一物理页面中的所有数据或有效数据,并使用所述单层式单元模式写入所述第一物理页面的所有数据或有效数据到所述第一区中的当前块;以及
当所述第一区的所述数据块的所述抹除次数或所述读取次数高于所述阈值时,读取所述数据块中属于所述第二分区类型的多个第二物理页面的所有数据或有效数据,并使用所述非单层式单元模式写入所述第二物理页面的所有数据或有效数据到所述第二区中的当前块。
7.如权利要求1所述的闪存存储器的数据存储方法,其特征在于,还包括:
读取所述第一区的数据块中的物理页面的数据;
当所述物理页面的错误修正率高于阈值时,读取所述数据块中属于所述第一分区类型的多个第一物理页面中的所有数据或有效数据,并使用所述单层式单元模式写入所述第一物理页面的所有数据或有效数据到所述第一区中的当前块;以及
当所述物理页面的所述错误修正率高于所述阈值时,读取所述数据块中属于所述第二分区类型的多个第二物理页面的所有数据或有效数据,并使用所述非单层式单元模式写入所述第二物理页面的所有数据或有效数据到所述第二区中的当前块。
8.如权利要求6或7所述的闪存存储器的数据存储方法,其特征在于,还包括:
搜索所述数据块的分区类型比特表来获得所述数据块中属于所述第一分区类型的所述第一物理页面和属于所述第二分区类型的所述第二物理页面的信息,其中,所述分区类型比特表包含多个比特,每个所述比特记录相应物理页面属于所述第一分区类型或所述第二分区类型的信息。
9.一种计算机可读取存储介质,用于存储能够被处理单元执行的程序代码,其特征在于,所述程序代码被所述处理单元执行时实现以下步骤:
将闪存模块的存储空间划分为第一区和第二区,其中,所述第一区包含多个第一物理块,所述第二区包含多个第二物理块,每个所述第一物理块只能使用单层式单元模式来写入数据,每个所述第二物理块能够使用所述单层式单元模式或非单层式单元模式来写入数据,所述单层式单元模式用于编程存储单元以存储两个状态中的一个,所述非单层式单元模式用于编程存储单元以存储四个或更多状态中的一个;
将从主机端接收的属于第一分区类型的数据只写入所述第一区中的所述第一物理块;以及
将从所述主机端接收的属于第二分区类型的数据写入所述第一区中的所述第一物理块和所述第二区中的所述第二物理块。
10.一种闪存存储器的数据存储装置,其特征在于,包括:
闪存接口,耦接闪存模块;
主机接口,耦接主机端;以及
处理单元,耦接所述闪存接口和所述主机接口,将所述闪存模块的存储空间划分为第一区和第二区,其中,所述第一区包含多个第一物理块,所述第二区包含多个第二物理块,每个所述第一物理块只能使用单层式单元模式来写入数据,每个所述第二物理块能够使用所述单层式单元模式或非单层式单元模式来写入数据,所述单层式单元模式用于编程存储单元以存储两个状态中的一个,所述非单层式单元模式用于编程存储单元以存储四个或更多状态中的一个;驱动所述闪存接口将通过所述主机接口从所述主机端接收的属于第一分区类型的数据只写入所述第一区中的所述第一物理块;以及驱动所述闪存接口将通过所述主机接口从所述主机端接收的属于第二分区类型的数据写入所述第一区中的所述第一物理块和所述第二区中的所述第二物理块。
11.如权利要求10所述的闪存存储器的数据存储装置,其特征在于,所述处理单元通过所述主机接口从所述主机端接收主机写入命令;当所述主机写入命令指示写入属于所述第一分区类型的第一数据时,驱动所述闪存接口写入所述第一数据到所述第一区中的当前块;当所述主机写入命令指示写入属于所述第二分区类型的第二数据且所述主机写入命令为随机写入命令时,驱动所述闪存接口写入所述第二数据到所述第一区中的当前块;以及当所述主机写入命令指示写入属于所述第二分区类型的第三数据且所述主机写入命令为连续写入命令时,驱动所述闪存接口写入所述第三数据到所述第二区中的当前块。
12.如权利要求11所述的闪存存储器的数据存储装置,其特征在于,所述第二数据的长度短于一个物理页面存储数据的长度,以及所述第三数据的长度等于或长于一个物理页面存储数据的长度。
13.如权利要求11所述的闪存存储器的数据存储装置,其特征在于,所述处理单元检查所述主机写入命令携带的分区号码来判断所述主机写入命令指示写入属于所述第一分区类型或所述第二分区类型的数据。
14.如权利要求10所述的闪存存储器的数据存储装置,其特征在于,当所述第一区的闲置块的数目低于阈值时,所述处理单元驱动所述闪存接口读取并搜集数据块中属于所述第一分区类型的多个第一有效区段中的数据,并使用所述单层式单元模式写入所述第一有效区段中的数据到所述第一区中的当前块;以及当所述第一区的闲置块的数目低于所述阈值时,所述处理单元驱动所述闪存接口读取并搜集所述数据块中属于所述第二分区类型的第二有效区段中的数据,并使用所述非单层式单元模式写入所述第二有效区段中的数据到所述第二区中的当前块。
15.如权利要求10所述的闪存存储器的数据存储装置,其特征在于,当所述第一区的数据块的抹除次数或读取次数高于阈值时,所述处理单元驱动所述闪存接口读取所述数据块中属于所述第一分区类型的多个第一物理页面中的所有数据或有效数据,并使用所述单层式单元模式写入所述第一物理页面的所有数据或有效数据到所述第一区中的当前块;以及当所述第一区的所述数据块的所述抹除次数或所述读取次数高于所述阈值时,所述处理单元驱动所述闪存接口读取所述数据块中属于所述第二分区类型的多个第二物理页面的所有数据或有效数据,并使用所述非单层式单元模式写入所述第二物理页面的所有数据或有效数据到所述第二区中的当前块。
16.如权利要求10所述的闪存存储器的数据存储装置,其特征在于,所述处理单元驱动所述闪存接口读取所述第一区的数据块中的物理页面的数据;当所述物理页面的错误修正率高于阈值时,所述处理单元驱动所述闪存接口读取所述数据块中属于所述第一分区类型的多个第一物理页面中的所有数据或有效数据,并使用所述单层式单元模式写入所述第一物理页面的所有数据或有效数据到所述第一区中的当前块;以及当所述物理页面的所述错误修正率高于所述阈值时,所述处理单元驱动所述闪存接口读取所述数据块中属于所述第二分区类型的多个第二物理页面的所有数据或有效数据,并使用所述非单层式单元模式写入所述第二物理页面的所有数据或有效数据到所述第二区中的当前块。
CN202011056071.5A 2020-09-29 2020-09-29 计算机可读存储介质、闪存存储器的数据存储方法及装置 Pending CN114327240A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011056071.5A CN114327240A (zh) 2020-09-29 2020-09-29 计算机可读存储介质、闪存存储器的数据存储方法及装置
US17/157,368 US11860669B2 (en) 2020-09-29 2021-01-25 Method and apparatus and computer program product for storing data in flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011056071.5A CN114327240A (zh) 2020-09-29 2020-09-29 计算机可读存储介质、闪存存储器的数据存储方法及装置

Publications (1)

Publication Number Publication Date
CN114327240A true CN114327240A (zh) 2022-04-12

Family

ID=80822434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011056071.5A Pending CN114327240A (zh) 2020-09-29 2020-09-29 计算机可读存储介质、闪存存储器的数据存储方法及装置

Country Status (2)

Country Link
US (1) US11860669B2 (zh)
CN (1) CN114327240A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI768738B (zh) * 2021-03-02 2022-06-21 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
US20230384957A1 (en) * 2022-05-30 2023-11-30 Samsung Electronics Co., Ltd. Storage device providing high purge performance and memory block management method thereof

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
US8312349B2 (en) * 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
US20110252187A1 (en) * 2010-04-07 2011-10-13 Avigdor Segal System and method for operating a non-volatile memory including a portion operating as a single-level cell memory and a portion operating as a multi-level cell memory
KR101662827B1 (ko) * 2010-07-02 2016-10-06 삼성전자주식회사 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US8760922B2 (en) * 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US9363315B2 (en) 2012-08-28 2016-06-07 Skyera, Llc Integrated storage and switching for memory systems
KR102252419B1 (ko) 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system
US9778863B2 (en) * 2014-09-30 2017-10-03 Sandisk Technologies Llc System and method for folding partial blocks into multi-level cell memory blocks
TWI520140B (zh) * 2014-11-03 2016-02-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法
US9583207B2 (en) * 2015-02-10 2017-02-28 Sandisk Technologies Llc Adaptive data shaping in nonvolatile memory
KR20160105624A (ko) * 2015-02-27 2016-09-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
US9851926B2 (en) * 2015-06-02 2017-12-26 Quantum Corporation Log structured block device for hard disk drive
KR20160143259A (ko) * 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US10854290B1 (en) * 2015-06-26 2020-12-01 EMC IP Holding Company LLC Utilizing a flash memory drive which includes single-level cell flash memory and multi-level cell flash memory
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US10528286B2 (en) * 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10095626B2 (en) * 2017-03-10 2018-10-09 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
KR20190074677A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190116641A (ko) * 2018-04-05 2019-10-15 성균관대학교산학협력단 가상화 시스템을 위한 저장 장치 및 그 동작 방법
US11099781B2 (en) 2018-07-19 2021-08-24 Silicon Motion, Inc. Flash memory controller, flash memory module and associated electronic device
US10691377B2 (en) * 2018-09-21 2020-06-23 Micron Technology, Inc. Adjusting scan event thresholds to mitigate memory errors
CN111399750B (zh) 2019-01-03 2023-05-26 慧荣科技股份有限公司 闪存数据写入方法及计算机可读取存储介质
US11199991B2 (en) 2019-01-03 2021-12-14 Silicon Motion, Inc. Method and apparatus for controlling different types of storage units
CN110427158B (zh) * 2019-07-29 2023-06-20 浙江华忆芯科技有限公司 固态硬盘的写入方法及固态硬盘

Also Published As

Publication number Publication date
US11860669B2 (en) 2024-01-02
US20220100373A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
US11593259B2 (en) Directed sanitization of memory
CN107844431B (zh) 映射表更新方法、存储器控制电路单元与存储器存储装置
KR102610395B1 (ko) 비휘발성 메모리 장치를 포함하는 메모리 시스템
CN110908926B (zh) 数据储存装置及逻辑至物理地址映射表的写入方法
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
JP5728672B2 (ja) ハイブリッドメモリ管理
US8180953B2 (en) Data accessing method for flash memory, and storage system and controller system thereof
US10275349B2 (en) Data storage device and the operating method thereof
US20140122783A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
CN110890113A (zh) 存储设备及其操作方法
CN110879793B (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
US20190303019A1 (en) Memory device and computer system for improving read performance and reliability
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
CN114327240A (zh) 计算机可读存储介质、闪存存储器的数据存储方法及装置
CN111984441A (zh) 瞬间断电回复处理方法及装置以及计算机可读取存储介质
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
TWI754396B (zh) 快閃記憶體的資料儲存方法及裝置以及電腦程式產品
CN115390747A (zh) 存储设备及其操作方法
KR20220130526A (ko) 메모리 시스템 및 그 동작 방법
US20240143226A1 (en) Data storage device and method for managing a write buffer
US20240126473A1 (en) Data storage device and method for managing a write buffer
KR20200015185A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11294587B2 (en) Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device
KR20230115195A (ko) 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

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