CN116204126A - 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 - Google Patents
固态硬盘的数据读写方法及装置、固态硬盘、存储介质 Download PDFInfo
- Publication number
- CN116204126A CN116204126A CN202310174389.0A CN202310174389A CN116204126A CN 116204126 A CN116204126 A CN 116204126A CN 202310174389 A CN202310174389 A CN 202310174389A CN 116204126 A CN116204126 A CN 116204126A
- Authority
- CN
- China
- Prior art keywords
- data
- mapping relation
- solid state
- state disk
- relation table
- 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
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/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种固态硬盘的数据读写方法及装置、固态硬盘、存储介质,包括:当接收到数据写入指令时,同时将所述数据写入指令中的数据写入多层存储单元块和单层存储单元块中,并将写入数据的逻辑地址与所述单层存储单元块中的物理地址的映射关系保存至第一映射关系表中;确定所述写入数据是否稳定;当所述写入数据稳定时,将所述写入数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
Description
技术领域
本公开实施例涉及但不限于计算机技术领域,尤其涉及一种固态硬盘的数据读写方法及装置、固态硬盘、存储介质。
背景技术
闪存颗粒又称闪存,是一种非易失性存储器,即写入的数据在断电的情况下仍然可以保存,并且是以固定的块而不是单字节的形式。根据不同的用途和规格,闪存颗粒有许多品种。NAND闪存颗粒具有功耗更低、价格更低、性能更好等诸多优势,成为存储行业最重要的存储原材料。
3D NAND技术使存储单元能够以三维方式堆叠,从而可以在相同的体积下提供更多的存储空间。为了降低成本,颗粒厂商对颗粒层数不停的进行堆叠,新一代的3D颗粒虽然有着更高的容量但同时稳定性会降低,因此,开放块(open block)中刚写入的页(Page)/字线(word line,WL)和相邻的Page/WL的数据也会变得越来越不可靠。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本公开实施例提供了一种固态硬盘的数据读写方法,包括:
当接收到数据写入指令时,同时将所述数据写入指令中的数据写入多层存储单元块和单层存储单元块中,并将写入数据的逻辑地址与所述单层存储单元块中的物理地址的映射关系保存至第一映射关系表中;
确定所述写入数据是否稳定;
当所述写入数据稳定时,将所述写入数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
可选的,所述确定所述写入数据是否稳定,包括:
确定所述写入数据的组数,每组数据包括预设数量的物理页或字线;
检测所述写入数据是否达到预设的第一数据量阈值;
当所述写入数据达到预设的第一数据量阈值时,把在当前所述写入数据所在组及当前所述写入数据所在组的上一组之前的数据确定为稳定数据。
可选的,所述方法还包括:
当接收到数据读取指令时,在所述第一映射关系表中查询是否存在所述数据读取指令中的数据的映射关系;
当所述第一映射关系表中存在所述数据读取指令中的数据的映射关系时,在所述第一映射关系表中获取所述数据读取指令中的数据对应的单层存储单元块中的物理地址,从所述单层存储单元块中读取对应的数据;
当所述第一映射关系表中不存在所述数据读取指令中的数据的映射关系时,在所述第二映射关系表中获取所述数据读取指令中的数据对应的多层存储单元块中的物理地址,从所述多层存储单元块中读取对应的数据。
可选的,所述方法还包括:
当所述固态硬盘异常断电后重新上电时,对所述固态硬盘中的数据进行数据重建,并将所述单层存储单元块中的数据存储至所述多层存储单元块中。
可选的,所述对所述固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从所述第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理,得到n组纠错成功的数据,每组纠错成功的数据包括预设数量的物理页或字线;
将第一组至第n-1组纠错成功的数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至所述第二映射关系表中。
可选的,所述将所述单层存储单元块中的数据存储至所述多层存储单元块中,包括:
将所述多层存储单元块中有异常断电标记的开放块封住;
读取所述单层存储单元块中的数据,检测所述第二映射关系表中是否存在所述单层存储单元块中的数据;
在所述多层存储单元块中新建开放块,将没有保存至所述第二映射关系表中的所述单层存储单元块中的数据,存储至新建的开放块中。
可选的,所述对所述固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从所述第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理;
将纠错成功数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至所述第二映射关系表中。
本公开实施例还提供了一种固态硬盘的数据读写装置,包括存储器;和连接至所述存储器的处理器,所述存储器用于存储指令,所述处理器被配置为基于存储在所述存储器中的指令,执行本公开任一实施例所述的固态硬盘的数据读写方法的步骤。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开任一实施例所述的固态硬盘的数据读写方法。
本公开实施例还提供了一种固态硬盘,包括:
闪存芯片,所述闪存芯片包括多层存储单元块和单层存储单元块;
缓存,所述缓存包括第一映射关系表和第二映射关系表;
控制器,分别与所述闪存芯片和所述缓存连接,以在所述控制器从所述闪存芯片中执行如本公开任一实施例所述的固态硬盘的数据读写方法的读写操作后,将执行结果存储至所述缓存中。
在阅读理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开的技术方案的限制。附图中各部件的形状和大小不反映真实比例,目的只是示意说明本公开内容。
图1为本公开示例性实施例提供的一种固态硬盘的数据读写方法的流程示意图;
图2示出根据本公开的一些实施例中多层存储单元块和单层存储单元块的示意图;
图3示出根据本公开的一些实施例中的第一映射关系表和第二映射关系表的示意图;
图4示出根据本公开的一些实施例中的掉电前后的缓存映射关系示意图;
图5为本公开示例性实施例提供的一种固态硬盘的结构示意图;
图6为本公开示例性实施例提供的一种固态硬盘的数据读写装置的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,下文中将结合附图对本公开的实施例进行详细说明。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互任意组合。
除非另外定义,本公开实施例公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出该词前面的元件或物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
随着互联网、云计算、物联网等技术的发展及广泛应用,在人类生活中,时时刻刻都会产生海量的数据需要处理及存储,信息技术的高速发展对存储***的性能提出了更高的要求。固态硬盘(Solid State Disk,SSD)作为一种新型的存储设备,由于其优秀的读写性能,已经逐步取代了机械硬盘在存储领域的市场。SSD使用NAND Flash作为存储介质,相较于传统机械硬盘,它在性能、功耗、防震抗摔性、可携带性等方面都有着显著的优势。其高额的成本也随着NAND Flash厂商的技术不断进步而逐步下降,如今对于普通消费者来说,二者的价格几乎已经没有差别。
但是,由于NAND Flash的特性以及SSD的设计架构,open block中刚写入的Page/wordline和相邻的Page/wordline的数据变得越来越不可靠。
如图1所示,本公开实施例提供了一种固态硬盘的数据读写方法,包括:
步骤101、当接收到数据写入指令时,同时将数据写入指令中的数据写入多层存储单元块和单层存储单元(Single Level Cell,SLC)块中,并将写入数据的逻辑地址与单层存储单元块中的物理地址的映射关系保存至第一映射关系表中;
步骤102、确定写入数据是否稳定;
步骤103、当写入数据稳定时,将写入数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
本公开实施例的固态硬盘的数据读写方法,通过将数据同时写入多层存储单元块和单层存储单元块中,在写入数据稳定之前,将写入数据的逻辑地址与单层存储单元块中的物理地址的映射关系保存在第一映射关系表中,在写入数据稳定之后,将写入数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存在第二映射关系表中,使刚写入固态硬盘的数据更加可靠,降低了纠错的难度,从而极大的增加了数据的稳定性;此外,由于只需要额外占用少量的SLC block作为备份数据使用,不需要增加额外的硬件,通过调整固件架构即可实现,适配代价很低,对固态硬盘的性能影响很小。
如图2和图3所示,当收到数据写入指令(data write command)时,固件策略会同时将数据写入多层存储单元块和单层存储单元块中,每当写入数据变稳定之后,便将稳定数据的映射关系从第一映射关系表转存至第二映射关系表中,其中,第一映射关系表保存的是写入数据的逻辑地址与单层存储单元块中的物理地址的映射关系,第二映射关系表保存的是写入数据的逻辑地址与多层存储单元块中的物理地址的映射关系。
在一些示例性实施方式中,多层存储单元块可以包括以下至少之一:多层单元(Multi-Level Cell,MLC)、三层单元(Triple Level Cell,TLC)、四层单元(Quad-levelcell,QLC)、五层单元(Penta Layer Cell,PLC)等。
固态硬盘的闪存颗粒根据其存储单元的存储容量可以分为以下几类:SLC、MLC、TLC、QLC、PLC。这些类型的闪存颗粒最大的区别在于每个存储单元的存储容量不同。它们的单位存储容量分别为:
SLC——1位/单位;
MLC——2位/单位;
TLC——3位/单位;
QLC——4位/单位;
PLC——5位/单位。
随着闪存粒度存储单元存储容量的增加,SSD在擦除寿命、写入速度、功耗、价格等方面都会表现出很大的差异,其中,SLC写入数据时电压改变区间小,寿命长,读写次数在10万次以上,造价高。本公开实施例提供的数据读写方法,将新写入的数据备份一份在可靠的存储区域(单层存储单元块)内,这样对于新写入的数据可以直接从该可靠区域内读取,等到数据稳定可以从目标地址正确读取后,就将这段可靠区域内的数据无效化,便可以实现利用较小空间及很少的性能来保证数据的准确性。
在一些示例性实施方式中,在步骤103中,当写入数据稳定时,除了将写入数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中,该方法还包括:在单层存储单元块中将已稳定的写入数据无效化,并在第一映射关系表中删除已稳定的写入数据的映射关系。
闪存的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此,擦除操作是闪存的基本操作。
NAND Flash以块(block)为擦除单位,以页(Page)或字线(Word Line,WL)为读写单位,示例性的,每个块可以包含32个512字节的页,容量为16KB;而大容量闪存采用2KB页时,每个块可以包含64个页,容量为128KB。在使用过程中,如果一个block的所有Page或WL没有被全部写入数据,我们将其称为open block。open block中最后写入数据的几个page或WL我们称为边缘page(WL)。与open block对应的是完全写满数据的block,我们称为close block。
在一些示例性实施方式中,确定写入数据是否稳定,包括:
确定写入数据的组数,每组数据包括预设数量的物理页或字线;
检测写入数据是否达到预设的第一数据量阈值;
当写入数据达到预设的第一数据量阈值时,把在当前写入数据所在组及当前写入数据所在组的上一组之前的数据确定为稳定数据。
示例性的,每组数据可以包括1024个Page或者2048个Page,然而,本公开实施例对此不作限制。
示例性的,第一数据量阈值可以包括三组数据,然而,本公开实施例对此不作限制。例如,假设当前写入数据所在组为第100组,那么,可以将第一组至第98组数据均视为稳定数据,第99组数据和第100组数据均视为不稳定数据。
在另一些示例性实施方式中,当写入数据达到预设的第一数据量阈值时,可以把在当前写入数据所在组之前的数据确定为稳定数据。
例如,假设当前写入数据所在组为第100组,那么,可以将第一组至第99组数据均视为稳定数据,第100组数据视为不稳定数据。
在又一些示例性实施方式中,当将当前写入数据的open block封住时,可以将已封住block中的写入数据均视为稳定数据。
例如,假设当前写入数据所在组为第100组,在第100组数据之上再填写一层Dummy数据,以将当前写入数据的open block封住,那么,可以将这100组数据均视为稳定数据。
对于刚写入到NAND中的数据,假设此时又接收到数据读取指令,固件将会通过查询映射表找到相对应的物理地址从NAND中读取,但是,这些数据刚写入到NAND中,它们可能还处于open block的状态,直接读取相应的多层存储单元块的地址可能会有大量的错误比特(error bit),甚至于超过了***的纠错能力从而导致读取失败。
在一些示例性实施方式中,所述数据读写方法还包括:
当接收到数据读取指令时,在第一映射关系表中查询是否存在数据读取指令中的数据的映射关系;
当第一映射关系表中存在数据读取指令中的数据的映射关系时,在第一映射关系表中获取数据读取指令中的数据对应的单层存储单元块中的物理地址,从单层存储单元块中读取对应的数据;
当第一映射关系表中不存在数据读取指令中的数据的映射关系时,在第二映射关系表中获取数据读取指令中的数据对应的多层存储单元块中的物理地址,从多层存储单元块中读取对应的数据。
即,对于读流程(read flow)来说,优先会在第一映射关系表中查询,只有第一映射关系表中没有相应的映射关系才去第二映射关系表中查询。本公开实施例的固态硬盘的数据读写方法,通过设置第一映射关系表和第二映射关系表,建立了一个可替换的临时映射关系,假如要读取的数据处于不稳定区域,就采用SLC的映射关系从SLC block中读取;对于稳定的数据,就从多层存储单元块中读取,本公开通过优先从单层存储单元块中读取数据,使读出的数据更加可靠,降低了纠错的难度。
在另一些示例性实施方式中,在写流程(write flow)中,我们可以设计一个写入量阈值,控制用户读取指令是优先从第一映射关系表中读取(当第一映射关系表中没有时,再从第二映射关系表中读取),还是直接从第二映射关系表中读取。示例性的,该写入量阈值可以设置为单层存储单元块中对应存储的数据量大小,然而,本公开实施例对此不作限制。
在一些示例性实施方式中,固态硬盘的结构可以包括:
闪存芯片:用于储存写入数据的芯片;
控制器:用于通过程序控制硬盘读写策略的芯片;
缓存:用于储存FTL映射表,缓解写放大(延长寿命)的芯片。
FTL映射表又称L2P表,用于实现主机逻辑地址空间(Logical Block Address,LBA)到闪存物理地址空间(Physics Block Address,PBA)的映射,是SSD管理数据中的核心元数据之一。L2P表是一份以LBA为索引,PBA为内容的线性表。SSD在工作时,会将每一笔用户数据刷写到闪存地址空间,并记录该逻辑地址到物理地址的映射关系到L2P表中。主机读取该数据时,将发送该数据的LBA给SSD,SSD可通过LBA查找L2P表,找到对应的闪存物理空间地址PBA,读出闪存上存储的该笔数据,返回给用户。SSD运行时,L2P表驻留在缓存中,便于SSD控制器快速访问。SSD下电时可将L2P表从缓存中刷写到闪存中,在SSD上电时,从闪存中读出并加载到指定的缓存区域。
在一些示例性实施方式中,本公开实施例所述的第一映射关系表为第一映射关系缓存表,本公开实施例所述的第二映射关系表为第二映射关系缓存表,固态硬盘还包括第二映射关系闪存表,所述方法还包括:
根据第二映射关系缓存表更新存储于闪存芯片中的第二映射关系闪存表。
在缓存中保存的第二映射关系缓存表,可以认为是闪存芯片中第二映射关系闪存表的拷贝。本公开实施例的固态硬盘,在读取数据的时候,可以直接使用缓存中的第一映射关系缓存表和第二映射关系缓存表,写完之后将写入数据的逻辑地址与单层存储单元块中的物理地址的映射关系更新至第一映射关系缓存表,数据稳定之后,将写入数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系缓存表。但当缓存芯片掉电后缓存中的数据就会丢失,因此需要每隔一段时间或满足一定条件时把第二映射关系缓存表下刷到闪存芯片中。在第二映射关系缓存表下刷完成之后,需要记录当前回收的目标块的位置。如果中途掉电,第一映射关系缓存表和第二映射关系缓存表的数据便丢失了,而第二映射关系闪存表可能并不是最新的,在下刷了第二映射关系缓存表之后,还有可能有数据(也包括回收数据)写入到闪存芯片当中,因此在固态硬盘上电了之后,需要在第二映射关系闪存表的基础上,重建(rebuild)出最新的第二映射关系表。
目前,处理异常掉电的方法是通过设计一种快照机制,通过定期记录在映射关系表中的可靠数据时间,在重新上电之后通过从NAND中读取在这可靠时间之后写入的数据,将其重新写入新的block中并建立新的映射关系来恢复这段数据。但是由于为了降低成本,NAND颗粒在不断堆叠,异常掉电之前open block中的数据在上电之后重新读取已经很难保证其准确性,因此上述的方法就存在丢失数据的风险。
在一些示例性实施方式中,所述方法还包括:
当固态硬盘异常断电后重新上电时,对固态硬盘中的数据进行数据重建,并将单层存储单元块中的数据存储至多层存储单元块中。
本公开实施例的数据读写方法,在APC(abnormal power cycle)场景下,根据固件策略直接从单层存储单元块中读取不稳定的那部分数据,直接写入到新的多层存储单元块中,对于异常断电前原有的未保存进映射关系闪存表中的那部分稳定数据,可以按照当前的重建方法进行重建,并将断电前的open block封住(close),从而可以极大地降低异常掉电后数据重建的时间,同时可以更准确的恢复数据。
在一些示例性实施方式中,对固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理(根据校验数据检测数据是否可以进行纠错处理),得到n组纠错成功的数据,每组纠错成功的数据包括预设数量的物理页或字线;
将第一组至第n-1组纠错成功的数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
示例性的,每组纠错成功的数据可以包括1024个Page或者2048个Page,然而,本公开实施例对此不作限制。例如,假设第1组至第99组的数据均可以纠错,而第100组的数据无法纠错,那么,可以将第一组至第98组数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中,第99组数据和第100组数据均视为不可靠数据。
在另一些示例性实施方式中,对固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理(根据校验数据检测数据是否可以进行纠错处理);
将纠错成功数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
例如,假设第1组至第99组的数据均可以纠错,而第100组的数据无法纠错,那么,可以将第一组至第99组数据的逻辑地址与多层存储单元块中的物理地址的映射关系保存至第二映射关系表中,第100组数据视为不可靠数据。
在一些示例性实施方式中,将单层存储单元块中的数据存储至多层存储单元块中,包括:
将多层存储单元块中有异常断电标记的开放块封住;
读取单层存储单元块中的数据,检测第二映射关系表中是否存在单层存储单元块中的数据;
在多层存储单元块中新建开放块,将没有保存至第二映射关系表中的单层存储单元块中的数据,存储至新建的开放块中(并按前述方法保存数据的映射关系)。
在另一些示例性实施方式中,将单层存储单元块中的数据存储至多层存储单元块中,包括:
将多层存储单元块中有异常断电标记的开放块封住;
读取单层存储单元块中的数据;
在多层存储单元块中新建开放块,将单层存储单元块中的数据存储至新建的开放块中(并按前述方法保存数据的映射关系)。
本实施例中,当写入数据稳定时,在单层存储单元块中将已稳定的写入数据无效化,并在第一映射关系表中删除已稳定的写入数据的映射关系,那么,第二映射关系表中就不包括单层存储单元块中的数据,可以直接将单层存储单元块中的数据存储至新建的开放块中。
图4示出根据本公开的一些实施例中的掉电前后的缓存映射关系示意图,如图4所示,掉电前最新写入的数据大致可以分为三类:映射关系已经存入闪存的数据、映射关系没有存入闪存的稳定数据以及不稳定数据(映射关系没有存入闪存)。对于映射关系已经存入闪存的数据,上电恢复时,我们不做任何处理;对于映射关系没有存入闪存的稳定数据,上电恢复时,我们可以从多层存储单元块中读取其映射关系,并将该映射关系更新到闪存中去;对于不稳定数据,上电恢复时,我们可以从单层存储单元块(SLC block)中正确读取该部分数据,并将该部分数据重新写入多层存储单元块中新建的open block中。本公开实施例提供的数据读写方法,降低了异常掉电后恢复数据的难度。
如图5所示,本公开实施例还提供了一种固态硬盘,包括:
闪存芯片,所述闪存芯片包括多层存储单元块和单层存储单元块;
缓存,所述缓存包括第一映射关系表和第二映射关系表;
控制器,分别与所述闪存芯片和所述缓存连接,以在所述控制器从所述闪存芯片中执行如本公开任一实施例所述的固态硬盘的数据读写方法的读写操作后,将执行结果存储至所述缓存中。
本公开实施例中,图5中的主机接口为固态硬盘和主机之间的接口,可以为PCI(Peripheral Component Interconnect)、IDE(Integrated Drive Electronics)或SATA(Serial ATA)等接口,闪存接口为固态硬盘和闪存芯片之间的接口,可以为Toggle DDR或ONFI等接口,缓存用来存储控制器执行的数据,控制器用来执行固态硬盘的操作程序、算法、固件等数据,纠错模块用来检查和纠正闪存芯片上的错误,闪存芯片可以为闪存芯片阵列。
其中,控制器执行的固态硬盘的数据读写方法可参见前文所述,本公开实施例在此不再赘述。
本公开实施例还提供了一种固态硬盘的数据读写装置,包括存储器;和连接至所述存储器的处理器,所述存储器用于存储指令,所述处理器被配置为基于存储在所述存储器中的指令,执行如本公开任一实施例所述的固态硬盘的数据读写方法的步骤。
如图6所示,在一个示例中,该固态硬盘的数据读写装置可包括:处理器610、存储器620和总线***630,其中,处理器610和存储器620通过总线***630相连,存储器620用于存储指令,处理器610用于执行存储器620存储的指令,以当接收到数据写入指令时,同时将所述数据写入指令中的数据写入多层存储单元块和单层存储单元块中,并将写入数据的逻辑地址与所述单层存储单元块中的物理地址的映射关系保存至第一映射关系表中;确定所述写入数据是否稳定;当所述写入数据稳定时,将所述写入数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
应理解,处理器610可以是中央处理单元(Central Processing Unit,CPU),处理器610还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器620可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数据。存储器620的一部分还可以包括非易失性随机存取存储器。例如,存储器620还可以存储设备类型的信息。
总线***630除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图6中将各种总线都标为总线***630。
在实现过程中,处理设备所执行的处理可以通过处理器610中的硬件的集成逻辑电路或者软件形式的指令完成。即本公开实施例的方法步骤可以体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等存储介质中。该存储介质位于存储器620,处理器610读取存储器620中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例所述的固态硬盘的数据读写方法。通过执行可执行指令驱动固态硬盘的数据读写方法与本公开上述实施例提供的固态硬盘的数据读写方法基本相同,在此不做赘述。
在一些可能的实施方式中,本公开提供的固态硬盘的数据读写方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本公开各种示例性实施方式的固态硬盘的数据读写方法中的步骤,例如,所述计算机设备可以执行本公开实施例所记载的固态硬盘的数据读写方法。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本公开所揭露的实施方式如上,但所述的内容仅为便于理解本公开而采用的实施方式,并非用以限定本公开。任何所属领域内的技术人员,在不脱离本公开所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本公开的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种固态硬盘的数据读写方法,其特征在于,包括:
当接收到数据写入指令时,同时将所述数据写入指令中的数据写入多层存储单元块和单层存储单元块中,并将写入数据的逻辑地址与所述单层存储单元块中的物理地址的映射关系保存至第一映射关系表中;
确定所述写入数据是否稳定;
当所述写入数据稳定时,将所述写入数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至第二映射关系表中。
2.根据权利要求1所述的方法,其特征在于,所述确定所述写入数据是否稳定,包括:
确定所述写入数据的组数,每组数据包括预设数量的物理页或字线;
检测所述写入数据是否达到预设的第一数据量阈值;
当所述写入数据达到预设的第一数据量阈值时,把在当前所述写入数据所在组及当前所述写入数据所在组的上一组之前的数据确定为稳定数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到数据读取指令时,在所述第一映射关系表中查询是否存在所述数据读取指令中的数据的映射关系;
当所述第一映射关系表中存在所述数据读取指令中的数据的映射关系时,在所述第一映射关系表中获取所述数据读取指令中的数据对应的单层存储单元块中的物理地址,从所述单层存储单元块中读取对应的数据;
当所述第一映射关系表中不存在所述数据读取指令中的数据的映射关系时,在所述第二映射关系表中获取所述数据读取指令中的数据对应的多层存储单元块中的物理地址,从所述多层存储单元块中读取对应的数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述固态硬盘异常断电后重新上电时,对所述固态硬盘中的数据进行数据重建,并将所述单层存储单元块中的数据存储至所述多层存储单元块中。
5.根据权利要求4所述的方法,其特征在于,所述对所述固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从所述第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理,得到n组纠错成功的数据,每组纠错成功的数据包括预设数量的物理页或字线;
将第一组至第n-1组纠错成功的数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至所述第二映射关系表中。
6.根据权利要求5所述的方法,其特征在于,所述将所述单层存储单元块中的数据存储至所述多层存储单元块中,包括:
将所述多层存储单元块中有异常断电标记的开放块封住;
读取所述单层存储单元块中的数据,检测所述第二映射关系表中是否存在所述单层存储单元块中的数据;
在所述多层存储单元块中新建开放块,将没有保存至所述第二映射关系表中的所述单层存储单元块中的数据,存储至新建的开放块中。
7.根据权利要求4所述的方法,其特征在于,所述对所述固态硬盘中的数据进行数据重建,包括:
从闪存芯片中读取第二映射关系表至缓存;
从所述第二映射关系表中最末一个物理页的下一物理页开始,依次读取一个或多个物理页,并检测是否可以进行纠错处理;
将纠错成功数据的逻辑地址与所述多层存储单元块中的物理地址的映射关系保存至所述第二映射关系表中。
8.一种固态硬盘的数据读写装置,其特征在于,包括存储器;和连接至所述存储器的处理器,所述存储器用于存储指令,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至7任一项所述的固态硬盘的数据读写方法的步骤。
9.一种存储介质,其特征在于,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至7任一项所述的固态硬盘的数据读写方法。
10.一种固态硬盘,其特征在于,包括:
闪存芯片,所述闪存芯片包括多层存储单元块和单层存储单元块;
缓存,所述缓存包括第一映射关系表和第二映射关系表;
控制器,分别与所述闪存芯片和所述缓存连接,以在所述控制器从所述闪存芯片中执行如权利要求1至7任一项所述的固态硬盘的数据读写方法的读写操作后,将执行结果存储至所述缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174389.0A CN116204126A (zh) | 2023-02-23 | 2023-02-23 | 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310174389.0A CN116204126A (zh) | 2023-02-23 | 2023-02-23 | 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204126A true CN116204126A (zh) | 2023-06-02 |
Family
ID=86518830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310174389.0A Pending CN116204126A (zh) | 2023-02-23 | 2023-02-23 | 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204126A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116909493A (zh) * | 2023-09-12 | 2023-10-20 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
CN117149085A (zh) * | 2023-09-07 | 2023-12-01 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的快速寻址方法 |
-
2023
- 2023-02-23 CN CN202310174389.0A patent/CN116204126A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149085A (zh) * | 2023-09-07 | 2023-12-01 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的快速寻址方法 |
CN117149085B (zh) * | 2023-09-07 | 2024-03-15 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的快速寻址方法 |
CN116909493A (zh) * | 2023-09-12 | 2023-10-20 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
CN116909493B (zh) * | 2023-09-12 | 2023-11-17 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10564690B2 (en) | Power interrupt management | |
CN111078149B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
US9753649B2 (en) | Tracking intermix of writes and un-map commands across power cycles | |
CN106847340B (zh) | 用于非易失性存储器***以及存储器控制器的操作的方法 | |
US10318414B2 (en) | Memory system and memory management method thereof | |
US9996297B2 (en) | Hot-cold data separation method in flash translation layer | |
US20170147499A1 (en) | Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device | |
CN110347332B (zh) | 用于存储器***的垃圾收集策略及执行该垃圾收集的方法 | |
US8954647B2 (en) | Systems and methods for redundantly storing metadata for non-volatile memory | |
US9817752B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US20150106557A1 (en) | Virtual Memory Device (VMD) Application/Driver for Enhanced Flash Endurance | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件***支持 | |
US9824007B2 (en) | Data integrity enhancement to protect against returning old versions of data | |
US10007451B2 (en) | Scalable SPOR algorithm for flash memories | |
CN110442529B (zh) | 可配置的存储器***及配置和使用该存储器***的方法 | |
CN116204126A (zh) | 固态硬盘的数据读写方法及装置、固态硬盘、存储介质 | |
CN107544925B (zh) | 存储器***及加速引导时间的方法 | |
US20180285256A1 (en) | Memory system and operating method thereof | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
CN113590503A (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收*** | |
CN113590502A (zh) | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收*** | |
US11966638B2 (en) | Dynamic rain for zoned storage systems | |
CN115048039B (zh) | 用于基于有效转换单元计数的存储器管理的方法、设备和*** | |
US20220171706A1 (en) | Memory system and operating method thereof |
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 |