CN111580757A - 数据写入方法、系统和固态硬盘 - Google Patents
数据写入方法、系统和固态硬盘 Download PDFInfo
- Publication number
- CN111580757A CN111580757A CN202010406040.1A CN202010406040A CN111580757A CN 111580757 A CN111580757 A CN 111580757A CN 202010406040 A CN202010406040 A CN 202010406040A CN 111580757 A CN111580757 A CN 111580757A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- block
- data block
- successfully
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供了一种数据写入方法、系统和固态硬盘,涉及固态硬盘领域。该方法通过获取主机发送的待写数据,将待写数据写入缓存区域后,将待写数据从缓存区域写入第一数据块,当待写数据未成功写入第一数据块时,将缓存区域中的待写数据写入备用块。由于待写数据是先写入闪存芯片的缓存区域,再从缓存区域写到第一数据块中,故当待写数据未成功写入第一数据块时,待写数据仍缓存在缓存区域中,此时可以直接将缓存区域中的待写数据写到闪存芯片的备用块中,从而保护待写数据不丢失,提高了固态硬盘编程失败处理效率以及固态硬盘的使用性能。
Description
技术领域
本发明涉及固态硬盘领域,具体而言,涉及一种数据写入方法、系统和固态硬盘。
背景技术
互联网、云计算、物联网等技术的高速发展及广泛应用,对存储系统的性能提出了更高的要求,固态硬盘因其读写速度快、能耗较低,而被广泛采用。
在固态硬盘的编程中,由于闪存芯片中经常出现坏块,导致数据无法正常写入,出现编程失败的情况。现有技术在处理编程失败的情况时,一般是通过RAID(RedundantArrays of Independent Disks,磁盘阵列)恢复数据,或者通过固态硬盘的内存保留数据,直到确认编程成功再释放。
然而,通过RAID恢复数据,会使固态硬盘的构架增大,而通过内存保留数据,会降低内存的使用效率,从而降低固态硬盘的使用性能。
发明内容
本发明的目的包括,例如,提供了一种数据写入方法、系统和固态硬盘,其能够在待写数据写入失败时,直接将缓存区域中的待写数据写入备用块,从而提高编程失败的处理效率。
本发明的实施例可以这样实现:
第一方面,本发明实施例提供一种数据写入方法,应用于固态硬盘,所述固态硬盘包括闪存芯片,所述闪存芯片包括缓存区域、第一数据块和多个备用块,其中所述第一数据块中的每个存储单元包括一个比特存储空间,所述方法包括:
获取主机发送的待写数据;
将所述待写数据写入所述缓存区域后,将所述待写数据从所述缓存区域写入所述第一数据块;
当所述待写数据未成功写入所述第一数据块时,将所述缓存区域中的待写数据写入所述备用块。
在可选的实施方式中,所述备用块的每个存储单元包括一个比特存储空间。
在可选的实施方式中,所述将所述缓存区域中的待写数据写入所述备用块的步骤之后,所述方法还包括:
若所述缓存区域中的待写数据未成功写入所述备用块,则从所述多个备用块中选取新的备用块,直到所述缓存区域中的待写数据写入成功。
在可选的实施方式中,所述方法还包括:
当所述待写数据未成功写入所述第一数据块时,若所述第一数据块中存在已写入数据,则将所述第一数据块中的已写入数据搬移到重新确定的目标块。
在可选的实施方式中,所述固态硬盘上预存有地址映射表,所述地址映射表用于记录数据对应的主机地址和硬盘地址的映射关系;所述方法还包括:
若所述待写数据写入成功,则在所述地址映射表中记录所述待写数据对应的主机地址与硬盘地址的映射关系。
在可选的实施方式中,所述闪存芯片还包括第二数据块,其中所述第二数据块中的每个存储单元包括多个比特存储空间;所述方法还包括:
当所述第一数据块的存储容量达到第一设定阈值时,将所述第一数据块上的数据搬移到所述第二数据块;
若所述第一数据块上的数据未成功搬移到所述第二数据块,则将所述第一数据块上的数据搬移到所述备用块。
在可选的实施方式中,所述将所述第一数据块上的数据搬移到所述备用块的步骤之后,所述方法还包括:
若所述第一数据块上的数据未成功搬移到所述备用块,则从所述多个备用块中选取新的备用块,直到所述第一数据块上的数据搬移成功。
在可选的实施方式中,所述方法还包括:
当所述第二数据块的存储容量达到第二设定阈值时,将所述第二数据块上的有效数据搬移到第一数据块,并擦除所述第二数据块。
在可选的实施方式中,所述固态硬盘上预存有地址映射表,所述地址映射表用于记录数据对应的主机地址和硬盘地址的映射关系;所述方法还包括:
若所述第一数据块上的数据搬移成功,则在所述地址映射表中更新搬移成功的数据对应的主机地址与硬盘地址的映射关系。
第二方面,本发明实施例提供一种数据写入系统,包括主机和固态硬盘,所述固态硬盘包括主控芯片和闪存芯片,所述主控芯片和所述闪存芯片电连接,所述主控芯片通过运行计算机程序以实现如前述实施方式任一项所述的方法。
第三方面,本发明实施例提供一种固态硬盘,包括主控芯片和闪存芯片,所述主控芯片和所述闪存芯片电连接,所述主控芯片通过运行计算机程序以实现如前述实施方式任一项所述的方法。
本发明实施例的有益效果包括:
本发明实施例提供的数据写入方法、系统和固态硬盘中,由于待写数据是先写入闪存芯片的缓存区域,再从缓存区域写到第一数据块中,故当待写数据未成功写入第一数据块时,待写数据仍缓存在缓存区域中,此时可以直接将缓存区域中的待写数据写到闪存芯片的备用块中,从而保护待写数据不丢失,相对现有技术,不会占用有限的内存空间,不需要内存数据延迟释放,不需要复杂的RAID构架,可以有效降低代码复杂度,实现了提高固态硬盘编程失败处理效率以及提高固态硬盘的使用性能的技术效果。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的数据写入系统的组成示意图;
图2为本发明实施例提供的数据写入方法的一种流程示意图;
图3为本发明实施例提供的数据写入方法的另一种流程示意图;
图4为本发明实施例提供的数据写入方法的又一种流程示意图。
图标:10-数据写入系统;100-固态硬盘;200-主机;110-主控芯片;120-闪存芯片。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
请参考图1,为本发明实施例提供的数据写入系统10的组成示意图。该数据写入系统10可以包括固态硬盘100和主机200,固态硬盘100可与主机200通信,通过主机200可向固态硬盘100中写入数据。
其中,该固态硬盘100可以包括主控芯片110和闪存芯片120,主控芯片110与闪存芯片120电连接,固态硬盘100通过主控芯片110与主机200通信。
在本实施例中,闪存芯片120可以采用NAND Flash芯片,用于存放用户数据和系统数据。该闪存芯片120可以包括缓存区域、多个数据块和多个备用块,其中,缓存区域可以理解为NAND cache,即NAND的内部缓存区域;数据块和备用块都是物理存储区域,该备用块是通过在NAND的每个LUN(Logical Unit Number,逻辑单元号)上保留几个块得到。主控芯片110向闪存芯片120写入数据时,是先将数据写入NAND cache,再从NAND cache写入至NAND的数据块中。
在本实施例中,数据块和备用块可以按照实际需求配置为不同的存储模式,例如SLC(Single-Level Cell,1bit/cell)存储模式和XLC存储模式。SLC存储模式指的是块中的每个存储单元(cell)只存放一个比特数据;XLC存储模式指的是块中的每个存储单元(cell)存放多个比特数据,其包括MLC(Multi-Level Cell,2bit/cell)存储模式、TLC(Trinary-Level Cell,3bit/cell)存储模式和QLC(Quad-Level Cell,4bit/cell)存储模式。
需要说明的是,对于被配置为SLC存储模式的块,本实施例中称之为SLC块;对于被配置为XLC存储模式的块,本实施例中称之为XLC块。可以理解,SLC块的每个存储单元包括一个比特存储空间,用于存放一个比特数据;XLC块的每个存储单元包括多个比特存储空间,用于存放多个比特数据。
该主控芯片110主要包括以下几部分:
CPU(Central Processing Unit,中央处理单元),主要负责总调度,其通过运行计算机程序实现以下各实施例所揭示的数据写入方法。
FTL模块,用于存储地址映射表,该地址映射表记录数据对应的主机地址到硬盘地址的映射关系,每一条映射关系对应地址映射表中的一条表项。同时,该FTL模块还要负责对编程失败的情况进行异常处理,在编程成功后对地址映射表进行更新。
NFC(NAND Flash Control)模块,是NAND Flash的控制模块,用于提供数据命令和非数据命令,负责控制NAND的操作,同时检测NAND操作的成功和失败。
DMA(Direct Memory Access,直接内存存取)模块,用于提供快速内存存储数据的功能。
在本实施例中,当主机200需要向固态硬盘100写数据时,可下发写命令到FTL模块,然后由NFC模块控制DMA模块,将待写数据搬移到闪存芯片120的数据块中,在数据写入完成后,向FTL模块上报数据写入是否成功(即是否编程失败),FTL模块根据上报的结果更新地址映射表或者选择相应的备用块写数据等操作。
在本实施例中,主控芯片110通过运行计算机程序可以实现以下各实施例所揭示的数据写入方法。
下面,基于上述固态硬盘100的硬件结构,介绍本发明实施例提供的数据写入方法。请参照图2,为本发明实施例提供的数据写入方法的一种流程示意图。需要说明的是,本发明实施例的数据写入方法并不以图2以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例的数据写入方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面将对图2所示的具体流程进行详细阐述。
步骤S201,获取主机发送的待写数据。
步骤S202,将待写数据写入缓存区域后,将待写数据从缓存区域写入第一数据块。
在本实施例中,该第一数据块指的是闪存芯片120中被配置为SLC存储模式的数据块(即上述的SLC块),该第一数据块中的每个存储单元(cell)包括一个比特存储空间。
主控芯片110在将待写数据写入闪存芯片120时,首先将待写数据写入闪存芯片120的缓存区域,再将该待写数据从缓存区域写入第一数据块。可以理解,在本实施例中,对于主机200发送的待写数据,都先写到SLC块中。
步骤S203,当待写数据未成功写入第一数据块时,将缓存区域中的待写数据写入备用块。
在本实施例中,当待写数据未成功写入第一数据块时,可以根据待写数据的大小从多个备用块中选取一个或者多个第一目标备用块,然后将待写数据写入该一个或多个第一目标备用块。
在一个示例中,当待写数据写入完成后,NFC模块会向FTL模块上报数据写入是否成功(例如,是否prog fail),若上报的结果表征待写数据未成功写入第一数据块,则FTL模块会根据上报的结果从多个备用块中选择一个或者多个第一目标备用块,然后调用NFC模块的copyback write接口,直接将缓存区域中缓存的待写数据写入该一个或多个第一目标备用块。
可见,本发明实施例提供的数据写入方法中,由于待写数据是先写入闪存芯片120的缓存区域,再从缓存区域写到第一数据块中,故当待写数据未成功写入第一数据块时,待写数据仍缓存在缓存区域中,此时可以直接将缓存区域中的待写数据写到闪存芯片120的备用块中,从而保护待写数据不丢失,相对现有技术,不会占用有限的内存空间,不需要内存数据延迟释放,不需要复杂的RAID构架,可以有效降低代码复杂度,实现了提高固态硬盘100编程失败处理效率以及提高固态硬盘100的使用性能的技术效果。
可选地,由于闪存芯片120上预先保留的备用块的存储模式也可以进行配置,则对于被配置为SLC存储模式的备用块,其每个存储单元(cell)包括一个比特存储空间,每个存储单元可用于存放一个比特数据;对于被配置为XLC存储模式的备用块,其每个存储单元(cell)包括多个比特存储空间,每个存储单元可用于存放多个比特数据。当根据待写数据的大小从多个备用块中选取一个或者多个第一目标备用块时,可以选择与第一数据块的存储模式一致的备用块,可靠性更高。也即是说,选取的第一目标备用块的每个存储单元包括一个比特存储空间,属于SLC块。需要说明的是,在一些实施例中,选取的第一目标备用块也可以是XLC块,本发明对此不做限制。
可选地,在本实施例中,当待写数据成功写入第一数据块或者成功写入备用块时,需要对地址映射表进行更新;当待写数据没有成功写入选取的备用块时,则需要重新选择新的备用块进行操作,直到写入成功。请参照图3,为本发明实施例提供的数据写入方法的另一种流程示意图,该数据写入方法包括:
步骤S301,获取主机发送的待写数据。
步骤S302,将待写数据写入缓存区域后,将待写数据从缓存区域写入第一数据块。
其中,步骤S301和S302的具体内容可以参考前述步骤S201和S202。
步骤S303,判断待写数据是否成功写入第一数据块。
其中,若待写数据未成功写入第一数据块,则执行步骤S304和S308;若待写数据成功写入第一数据块,则执行步骤S307。
步骤S304,当待写数据未成功写入第一数据块时,将缓存区域中的待写数据写入备用块。
其中,该步骤S304的具体内容可以参考前述步骤S203。
步骤S305,判断待写数据是否成功写入备用块。
其中,若待写数据未成功写入备用块,则执行步骤S306;若待写数据成功写入备用块,则执行步骤S307。
步骤S306,若缓存区域中的待写数据未成功写入备用块,则从多个备用块中选取新的备用块,直到缓存区域中的待写数据写入成功。
在本实施例中,该新的备用块可以是该多个备用块中的SLC块,也可以是该多个备用块中的XLC块。
步骤S307,若待写数据写入成功,则在地址映射表中记录待写数据对应的主机地址与硬盘地址的映射关系。
其中,当待写数据成功写入第一数据块时,则在地址映射表中记录待写数据对应的主机地址与第一数据块的物理地址的映射关系;当待写数据成功写入备用块时,则在地址映射表中记录待写数据对应的主机地址与备用块的物理地址的映射关系。
步骤S308,当待写数据未成功写入第一数据块时,若第一数据块中存在已写入数据,则将第一数据块中的已写入数据搬移到重新确定的目标块。
在本实施例中,当待写数据未成功写入第一数据块时(即SLC prog fail),第一数据块中已经写入的数据是可以读回来的,为了防止因第一数据块质量差发生数据丢失的情况,可以在闲时将第一数据块中的已写入数据搬移到重新确定的目标块。需要说明的是,本实施例中重新确定的目标块可以是SLC块,也可以是XLC块,对此不做限制。
在本实施例中,该闪存芯片120还可以包括第二数据块,该第二数据块中的每个存储单元包括多个比特存储空间,该第二数据块可以理解为上述的XLC块。在实际应用中,考虑到将主机200发送的待写数据直接写入XLC块,一旦写入失败(即XLC prog fail),难以从cache中获取待写数据,故本实施例中写数据时需要按照如下策略:对于主机200发送的待写数据,都先写到SLC块,当SLC块不够用时,开始往XLC块上搬移数据;当XLC块不够用时,需要回收XLC块,将数据由XLC块搬移到SLC块。如此,数据只能从SLC块到XLC块,或者从SLC块到SLC块,或者从XLC块到SLC块,而不会从XLC块到XLC块,有效防止了XLC prog fail丢失数据的情况发生。请参照图4,为本发明实施例提供的数据写入方法的又一种流程示意图,该数据写入方法还包括:
步骤S401,当第一数据块的存储容量达到第一设定阈值时,将第一数据块上的数据搬移到第二数据块。
也即是说,当第一数据块的存储容量不够用时,可以将第一数据块上的数据搬移到第二数据块,这样往第二数据块上写入的数据都是通过第一数据块中转,使得数据都会在第一数据块上有备份,一旦发生XLC prog fail丢失数据的情况,就可以从第一数据块上获得原数据。
步骤S402,判断第一数据块上的数据是否成功搬移到第二数据块。
其中,若第一数据块上的数据未成功搬移到第二数据块,则执行步骤S403;若第一数据块上的数据成功搬移到第二数据块,则执行步骤S406。
步骤S403,若第一数据块上的数据未成功搬移到第二数据块,则将第一数据块上的数据搬移到备用块。
在本实施例中,当第一数据块上的数据未成功搬移到第二数据块时,表明该第二数据块出现坏块现象,此时可以根据数据的大小从多个备用块中选取一个或者多个第二目标备用块,从头开始,将第一数据块上的数据搬移到一个或者多个第二目标备用块。
需要说明的是,数据搬移时选取的备用块(即第二目标备用块)可以与第二数据块的存储模式一致,也可以不一致。即第二目标备用块可以是XLC块,也可以是SLC块。
还需要说明的是,在一些场景下,前述的第一目标备用块和第二目标备用块可能相同,也可能不同,本实施例对此不做限制。
步骤S404,判断第一数据块上的数据是否成功搬移到备用块。
其中,若第一数据块上的数据未成功搬移到备用块,则执行步骤S405;若第一数据块上的数据成功搬移到备用块,则执行步骤S406。
步骤S405,若第一数据块上的数据未成功搬移到备用块,则从多个备用块中选取新的备用块,直到第一数据块上的数据搬移成功。
在本实施例中,该新的备用块可以理解为该多个备用块中的XLC块,也可以是该多个备用块中的SLC块。
步骤S406,若第一数据块上的数据搬移成功,则在地址映射表中更新搬移成功的数据对应的主机地址与硬盘地址的映射关系。
在本实施例中,当第一数据块上的数据成功搬移到第二数据块且第二数据块完全封闭时,在地址映射表中将数据对应的主机地址与第一数据块的映射关系更新为主机地址与第二数据块的映射关系;当第一数据块上的数据成功搬移到备用块时,在地址映射表中将数据对应的主机地址与第一数据块的映射关系更新为主机地址与备用块的映射关系。其中,在进行数据搬移时,若是搬移到了XLC存储模式的备用块(即XLC块),则需要等备用块完全封闭后,再对搬移成功的数据对应的主机地址与硬盘地址的映射关系进行更新;若是搬移到了SLC存储模式的备用块,则可以在数据搬移成功后,直接对搬移成功的数据对应的主机地址与硬盘地址的映射关系进行更新。其中,本实施例中的第二数据块或者备用块完全封闭,可以理解为XLC块上的最后一个写操作完成。
步骤S407,当第二数据块的存储容量达到第二设定阈值时,将第二数据块上的有效数据搬移到第一数据块,并擦除第二数据块。
在本实施例中,当第二数据块的存储容量不够时,需要回收第二数据块,此时只需将第二数据块上的有效数据搬移到第一数据块,然后擦除第二数据块。其中,第二数据块上除了有效数据外,还可能存在无效数据,该无效数据指的是用户在主机200进行了删除操作但仍保留在第二数据块中的数据,有效数据指的是未被用户删除的数据。当用户进行删除操作后,会在地址映射表中对被用户删除的数据进行相应的标记,当需要回收第二数据块时,通过查找该地址映射表,便可确定第二数据块上哪些数据属于有效数据,哪些数据属于无效数据。
可见,本实施例提供的数据写入方法中,不采用直写XLC的方式,主机200发送的数据都是先写到SLC块,等到SLC块写到第一设定阈值后,再从SLC块搬移到XLC块,通过SLC块中转,使得数据都会在SLC块中有备份,从而有效防止XLC prog fail丢失数据。
需要说明的是,在其他实施例中,如果XLC写的cache中的数据可以从NAND的寄存器中直接获取,则可以采用直写XLC的方式将数据写入XLC块中。
综上所述,本发明实施例提供的数据写入方法、系统和固态硬盘中,由于待写数据是先写入闪存芯片的缓存区域,再从缓存区域写到第一数据块中,故当待写数据未成功写入第一数据块时,待写数据仍缓存在缓存区域中,此时可以直接将缓存区域中的待写数据写到闪存芯片的备用块中,从而保护待写数据不丢失,相对现有技术,不会占用有限的内存空间,不需要内存数据延迟释放,不需要复杂的RAID构架,可以有效降低代码复杂度,实现了提高固态硬盘编程失败处理效率以及提高固态硬盘的使用性能的技术效果。此外,不采用直写XLC的方式,主机发送的数据都是先写到SLC块,等到SLC块写到第一设定阈值后,再从SLC块搬移到XLC块,通过SLC块中转,使得数据都会在SLC块中有备份,从而有效防止XLCprog fail丢失数据。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种数据写入方法,其特征在于,应用于固态硬盘,所述固态硬盘包括闪存芯片,所述闪存芯片包括缓存区域、第一数据块和多个备用块,其中所述第一数据块中的每个存储单元包括一个比特存储空间,所述方法包括:
获取主机发送的待写数据;
将所述待写数据写入所述缓存区域后,将所述待写数据从所述缓存区域写入所述第一数据块;
当所述待写数据未成功写入所述第一数据块时,将所述缓存区域中的待写数据写入所述备用块。
2.根据权利要求1所述的方法,其特征在于,所述备用块的每个存储单元包括一个比特存储空间。
3.根据权利要求1所述的方法,其特征在于,所述将所述缓存区域中的待写数据写入所述备用块的步骤之后,所述方法还包括:
若所述缓存区域中的待写数据未成功写入所述备用块,则从所述多个备用块中选取新的备用块,直到所述缓存区域中的待写数据写入成功。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述待写数据未成功写入所述第一数据块时,若所述第一数据块中存在已写入数据,则将所述第一数据块中的已写入数据搬移到重新确定的目标块。
5.根据权利要求1所述的方法,其特征在于,所述固态硬盘上预存有地址映射表,所述地址映射表用于记录数据对应的主机地址和硬盘地址的映射关系;所述方法还包括:
若所述待写数据写入成功,则在所述地址映射表中记录所述待写数据对应的主机地址与硬盘地址的映射关系。
6.根据权利要求1所述的方法,其特征在于,所述闪存芯片还包括第二数据块,其中所述第二数据块中的每个存储单元包括多个比特存储空间;所述方法还包括:
当所述第一数据块的存储容量达到第一设定阈值时,将所述第一数据块上的数据搬移到所述第二数据块;
若所述第一数据块上的数据未成功搬移到所述第二数据块,则将所述第一数据块上的数据搬移到所述备用块。
7.根据权利要求6所述的方法,其特征在于,所述将所述第一数据块上的数据搬移到所述备用块的步骤之后,所述方法还包括:
若所述第一数据块上的数据未成功搬移到所述备用块,则从所述多个备用块中选取新的备用块,直到所述第一数据块上的数据搬移成功。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述第二数据块的存储容量达到第二设定阈值时,将所述第二数据块上的有效数据搬移到第一数据块,并擦除所述第二数据块。
9.根据权利要求6所述的方法,其特征在于,所述固态硬盘上预存有地址映射表,所述地址映射表用于记录数据对应的主机地址和硬盘地址的映射关系;所述方法还包括:
若所述第一数据块上的数据搬移成功,则在所述地址映射表中更新搬移成功的数据对应的主机地址与硬盘地址的映射关系。
10.一种数据写入系统,其特征在于,包括主机和固态硬盘,所述固态硬盘包括主控芯片和闪存芯片,所述主控芯片和所述闪存芯片电连接,所述主控芯片通过运行计算机程序以实现如权利要求1-9任一项所述的方法。
11.一种固态硬盘,其特征在于,包括主控芯片和闪存芯片,所述主控芯片和所述闪存芯片电连接;所述主控芯片通过运行计算机程序以实现如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010406040.1A CN111580757B (zh) | 2020-05-14 | 2020-05-14 | 数据写入方法、系统和固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010406040.1A CN111580757B (zh) | 2020-05-14 | 2020-05-14 | 数据写入方法、系统和固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111580757A true CN111580757A (zh) | 2020-08-25 |
CN111580757B CN111580757B (zh) | 2022-10-14 |
Family
ID=72122902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010406040.1A Active CN111580757B (zh) | 2020-05-14 | 2020-05-14 | 数据写入方法、系统和固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111580757B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900903A (zh) * | 2021-10-27 | 2022-01-07 | 深圳星火半导体科技有限公司 | 日志存储装置、日志撷取方法及存储介质 |
CN117008833A (zh) * | 2023-07-21 | 2023-11-07 | 汇钜电科(东莞)实业有限公司 | Nand闪存中数据可靠存储的方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399075A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具多样闪存单元坏块管理的电子数据闪存卡 |
CN103955430A (zh) * | 2014-03-31 | 2014-07-30 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
CN108549588A (zh) * | 2018-03-27 | 2018-09-18 | 深圳忆联信息系统有限公司 | 一种消除tlc闪存多片编程失败的方法 |
CN108920293A (zh) * | 2018-06-28 | 2018-11-30 | 郑州云海信息技术有限公司 | 固态硬盘写失败的处理方法和固态硬盘 |
CN109614044A (zh) * | 2018-12-04 | 2019-04-12 | 浪潮电子信息产业股份有限公司 | 一种固态硬盘写错误的处理方法、装置及设备 |
CN110187832A (zh) * | 2014-05-21 | 2019-08-30 | 华为技术有限公司 | 一种数据操作的方法、设备和系统 |
CN110297603A (zh) * | 2019-06-25 | 2019-10-01 | 深圳忆联信息系统有限公司 | 基于固态硬盘的随机写性能提升方法、装置和计算机设备 |
CN111124944A (zh) * | 2019-12-13 | 2020-05-08 | 深圳大普微电子科技有限公司 | 一种数据写入方法、装置及DRAM-Less固态硬盘 |
-
2020
- 2020-05-14 CN CN202010406040.1A patent/CN111580757B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101399075A (zh) * | 2007-09-28 | 2009-04-01 | 智多星电子科技有限公司 | 具多样闪存单元坏块管理的电子数据闪存卡 |
CN103955430A (zh) * | 2014-03-31 | 2014-07-30 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
CN110187832A (zh) * | 2014-05-21 | 2019-08-30 | 华为技术有限公司 | 一种数据操作的方法、设备和系统 |
CN108549588A (zh) * | 2018-03-27 | 2018-09-18 | 深圳忆联信息系统有限公司 | 一种消除tlc闪存多片编程失败的方法 |
CN108920293A (zh) * | 2018-06-28 | 2018-11-30 | 郑州云海信息技术有限公司 | 固态硬盘写失败的处理方法和固态硬盘 |
CN109614044A (zh) * | 2018-12-04 | 2019-04-12 | 浪潮电子信息产业股份有限公司 | 一种固态硬盘写错误的处理方法、装置及设备 |
CN110297603A (zh) * | 2019-06-25 | 2019-10-01 | 深圳忆联信息系统有限公司 | 基于固态硬盘的随机写性能提升方法、装置和计算机设备 |
CN111124944A (zh) * | 2019-12-13 | 2020-05-08 | 深圳大普微电子科技有限公司 | 一种数据写入方法、装置及DRAM-Less固态硬盘 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113900903A (zh) * | 2021-10-27 | 2022-01-07 | 深圳星火半导体科技有限公司 | 日志存储装置、日志撷取方法及存储介质 |
CN117008833A (zh) * | 2023-07-21 | 2023-11-07 | 汇钜电科(东莞)实业有限公司 | Nand闪存中数据可靠存储的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111580757B (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
US10296224B2 (en) | Apparatus, system and method for increasing the capacity of a storage device available to store user data | |
US7191306B2 (en) | Flash memory, and flash memory access method and apparatus | |
US10372619B2 (en) | Data backup method, data recovery method and storage controller | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
CN109117383B (zh) | 管理闪存模块的方法和闪存控制器 | |
EP3633517B1 (en) | Storage device and method of operating storage device | |
US11520487B2 (en) | Managing write operations during a power loss | |
CN108319430B (zh) | 处理io请求的方法及装置 | |
TWI698749B (zh) | 資料儲存裝置與資料處理方法 | |
CN111580757B (zh) | 数据写入方法、系统和固态硬盘 | |
KR20160074025A (ko) | 데이터 저장 장치의 동작 방법 | |
CN108920094B (zh) | 擦除单元raid方法、装置、计算机设备及存储介质 | |
CN113849420A (zh) | 存储器系统和控制方法 | |
TWI749279B (zh) | 資料儲存裝置與資料處理方法 | |
US11847337B2 (en) | Data parking for ZNS devices | |
TWI657339B (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 | |
CN107562654B (zh) | Io命令处理方法与装置 | |
CN107562639B (zh) | 擦除块读请求处理方法与装置 | |
US11307786B2 (en) | Data storage devices and data processing methods | |
CN108089993A (zh) | 多层式储存格nand闪存、关键数据存储方法及垃圾回收方法 | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
US10872008B2 (en) | Data recovery after storage failure in a memory system | |
CN113377282A (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 |