CN112015341B - 一种数据存储方法、存储系统及存储介质 - Google Patents
一种数据存储方法、存储系统及存储介质 Download PDFInfo
- Publication number
- CN112015341B CN112015341B CN202010867292.4A CN202010867292A CN112015341B CN 112015341 B CN112015341 B CN 112015341B CN 202010867292 A CN202010867292 A CN 202010867292A CN 112015341 B CN112015341 B CN 112015341B
- Authority
- CN
- China
- Prior art keywords
- mapping table
- data
- flash memory
- mapping
- memory chip
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000013500 data storage Methods 0.000 title claims abstract description 27
- 238000013507 mapping Methods 0.000 claims abstract description 255
- 238000006243 chemical reaction Methods 0.000 claims abstract description 31
- 239000007787 solid Substances 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 3
- 239000010410 layer Substances 0.000 description 36
- 238000013519 translation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000007667 floating Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Abstract
本发明提供一种数据存储方法、存储系统及存储介质,所述数据存储方法包括:执行主机的数据写入命令,将数据写入闪存芯片中,数据写入命令中包括数据的逻辑地址;在闪存控制器的闪存转换层中配置第一映射表,第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;在闪存转换层中配置第二映射表,第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片中的实际地址;当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片中;通过所述第二映射表重建未存入闪存芯片的部分所述第一映射表。本发明解决了装置发生预期性断电,重新上电后导致的映射表丢失,造成数据读取障碍的问题。
Description
技术领域
本发明属于存储器技术技术领域,特别是涉及一种数据存储方法、存储系统及存储介质。
背景技术
因闪存储存数据的区块拥有在抹除前不能复写的特性等,会造成有效数据会不断改变在闪存中的实际位置即实际地址,为了能让用户端(Host)读到在闪存中的正确数据,在装置的闪存转换层中需要建立逻辑地址对应闪存中实际地址的映射表,映射表暂时存放在易失性存储单元中,当此映射表达到闪存转换层设定的阈值时,将部分映射表存入闪存中,用以释放一部分易失性存储单元空间,才能继续接收用户端新的数据并建立映射关系,而已存入闪存中的映射表待需要时再从闪存中读取到易失性存储单元上用于查询。在此过程中,若装置发生预期性断电,例如睡眠等减少耗电的行为,则装置重新上电后,则会失去原本暂存在易失性存储单元上的所有映射表,最终造成用户端读取到的是旧数据或是遗失数据。
发明内容
本发明的目的在于提供一种数据存储方法、存储系统及存储介质,解决了装置发生预期性断电,重新上电后导致的映射表丢失,造成数据读取障碍的问题。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种数据存储方法,其至少包括以下步骤:
S1.执行主机的数据写入命令,将所述数据写入闪存芯片中,所述数据写入命令中包括所述数据的逻辑地址;
S2.在闪存控制器的闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;
S3.在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片中的实际地址;
S4.当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片中;
S5.通过所述第二映射表重建未存入闪存芯片的部分所述第一映射表。
在本发明的一个实施例中,所述第二映射表包括数据在闪存芯片中的实际地址范围。
在本发明的一个实施例中,所述第二映射表的记录方法包括:
若写入数据在第一映射表中不存在映射关系,则在所述第二映射表的实际地址的对应位置做有效标记;
若写入数据在第一映射表中存在映射关系,则在所述第二映射表中原有映射关系的实际地址的对应位置处做无效标记,同时在现有映射关系的实际地址的对应位置处做有效标记。
在本发明的一个实施例中,通过所述第二映射表恢复未存入闪存芯片的部分所述第一映射表的方法包括以下步骤:
根据所述第二映射表中设有有效标记的实际地址,在所述闪存芯片中相应的实际地址处获取所述数据;
根据所述数据,获取所述数据的逻辑地址;
根据所述数据的逻辑地址与实际地址的映射关系恢复所述第一映射表。
在本发明的一个实施例中,在步骤S4中,将所述部分第一映射表相对应的第二映射表中的有效标记更改为无效标记。
在本发明的一个实施例中,所述第二映射表包括表头信息,所述表头信息用来表示所述写入数据映射到闪存芯片中的区块和页面等实际地址的范围。
在本发明的一个实施例中,所述第二映射表的占用空间小于所述第一映射表的占用空间。
在本发明的一个实施例中,所述阈值为第一映射表中记录的映射关系的数量达到上限或第二映射表中记录的闪存芯片中数据写入的实际地址的范围达到上限。
本发明还提供一种数据存储系统,其包括:
主机,用于发布数据写入命令,所述数据写入命令中包括所述数据的逻辑地址;
固态硬盘,所述固态硬盘包括:
闪存芯片,其用于存储所述写入数据,所述写入数据对应有实际地址;
闪存控制器,其上设有闪存转换层,在闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片中的实际地址;当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片中;通过所述第二映射表重建未存入闪存芯片的部分所述第一映射表。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述的数据存储方法。
本发明通过建立与第一映射表相关联的第二映射表,从而起到重建第一映射表的作用,若存放在闪存转换层中尚未写入闪存芯片的第一映射表因断电而遗失,则重新上电后,则可以通过第二映射表的内容将第一映射表重建回闪存转换层上。另外,若每次都在部分第一映射表存入闪存后,将暂时存放在闪存转换层上的剩余第一映射表也一并写进闪存芯片中,则会太消耗闪存芯片的空间,也会造成运行上的效能不佳,通过建立空间占比较小的第二映射表,在装置运作期间用第二映射表代替第一映射表写入闪存芯片,则可以降低闪存芯片的空间消耗,提高效能。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例提供的一种数据存储系统的结构原理框图。
图2为本发明另一个实施例提供的一种数据存储系统的结构原理框图。
图3为本发明另一个实施例提供的一种数据存储系统的结构原理框图。
图4为本发明实施例提供的一种数据存储系统的主控制器的结构原理框图。
图5为本发明实施例提供的一种数据存储系统的固态硬盘的结构原理框图。
图6为本发明实施例提供的一种数据存储系统的闪存芯片的结构原理框图。
图7为本发明实施例提供的一种数据存储系统的擦除块的结构原理框图。
图8为本发明实施例提供的一种数据存储系统的页的结构原理框图。
图9为本发明提供的一种数据存储方法流程图。
图10为本发明第一映射表示意图。
图11为本发明第一映射表整理示意图。
图12为本发明一个实施例提供的第二映射表示意图。
图13为本发明另一个实施例提供的第二映射表示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,因闪存储存数据的区块拥有在抹除前不能复写的特性等,会造成有效数据会不断改变在闪存中的实际位置即实际地址,为了能让用户端(Host)读到在闪存中的正确数据,在装置的闪存转换层中需要建立代表逻辑地址对应闪存中实际地址的映射关系,并将此映射关系以映射表的形式暂时存放在易失性存储单元上。若装置在运行过程中发生预期性断电,例如睡眠等减少耗电的行为,则装置重新上电后,则会失去原本暂存在易失性存储单元上的所有映射表,最终本发明提供一种存储系统,所述存储系统包括非易失性半导体存储装置。非易失性半导体存储装置是即使切断电源也不会丢失数据的非易失性存储器(非暂时的存储器),本实施例中,作为非易失性半导体存储装置,举例说明NAND型闪速存储器,简称闪存。另外,作为存储系统,举例说明具备NAND型闪速存储器的固态硬盘设备(Solid State Drive,SSD)。
如图1所示,在一些实施例中,固态硬盘1经由接口41及第一电源线42与主机70(例如:信息处理装置)连接。主机70例如由个人计算机、CPU核或者与网络连接的服务器等构成。主机70对固态硬盘1执行数据存取控制,例如,通过向固态硬盘1发送写入请求、读出请求及删除请求,对固态硬盘1执行数据的写入、读出及删除。
如图1所示,在一些实施例中,固态硬盘1具备主控制器2、闪存、接口控制器(接口部)43及电源供给部45。主控制器2、接口控制器43及闪存通过总线48相互连接。
在一些实施例中,电源供给部45通过第一电源线42与主机70连接,接受从主机70供给的外部电源。电源供给部45和闪存通过第二电源线46连接,电源供给部45和主控制器2通过第三电源线47连接,电源供给部45和接口控制器43通过第四电源线44连接。电源供给部45对外部电源进行升压及降压,生成各种电压,向主控制器2、闪存及接口控制器43供给各种电压。
如图1所示,在一些实施例中,接口控制器43通过接口41与主机70连接。接口控制器43执行与主机70的接口处理。作为接口41,可以采用SATA(Serial Advanced TechnologyAttachment:串行高级技术附件)、PCI Express(Peripheral Component InterconnectExpress:高速外设部件互连)、SAS(Serial Attached SCSI:串行连接SCSI)、USB(Universal Serial Bus:通用串行总线)等。在一实施例中,作为接口41,以采用SATA场合的例子进行说明。
如图1所示,闪存非易失地存储数据。在闪存的实际地址空间、确保存储固件(Firmware,FW)的FW区域52、存储管理信息的管理信息区域53、存储用户数据的用户区域56、存储例如测试步骤时的各种日志的筛选日志区域55。
如图2所示,在一些实施例中,所述主控制器2控制固态硬盘1的各种工作。所述主控制器2可以通过执行在闪存的FW区域52存储的固件的处理器和各种硬件电路等来实现其功能,执行针对来自主机70的写请求、缓存刷新请求、读请求等的各种指令的主机70、闪存间的数据转送控制、在RAM49及闪存存储的各种管理表的更新、管理、筛选处理等。所述主控制器2从第一电源线42接受电源后,从FW区域52读出固件,然后,根据读出固件进行处理。在一些实施例中,所述RAM49由DRAM(Dynamic Random Access Memory:动态随机存取存储器)、SRAM(Static Random Access Memory:静态随机存取存储器)等的易失性RAM,或MRAM(Magnetoresistive Random Access Memory:磁阻随机存取存储器)、FeRAM(Ferroelectric Random Access Memory:铁电随机存取存储器)、ReRAM(ResistanceRandom Access Memory:电阻随机存取存储器)、PRAM(Phase-change Random AccessMemory:相变随机存取存储器)等的非易失性RAM构成。
如图3所示,在本发明的另一实施例中,还提供了一种数据存储系统的结构,所述数据存储系统包括但不限于固态硬盘1、主控制器2、主机70。
如图4所示,在一些实施例中,所述主控制器2包括第一接口卡21、处理器23和第二接口卡24。第一接口卡21用于和主机通信,主控制器2可以通过第一接口卡21接收主机的操作指令。处理器23可能是一个中央处理器(central processing unit,CPU)。在本发明实施例中,处理器23可以用于接收来自主机70的I/O请求、处理所述I/O请求。所述I/O请求可以是写数据请求或者读数据请求,处理器23还可以将写数据请求中的数据发送给固态硬盘1。此外,处理器23还可以用于执行系统垃圾回收操作。第二接口卡24用于和固态硬盘1通信,主控制器2可以通过第二接口卡24将写数据请求(包括数据以及所述数据的生命周期级别)发送给固态硬盘1存储。
如图4所示,在一些实施例中,所述主控制器2还可以包括存储器22。存储器22用于临时存储从主机接收的数据或从固态硬盘1读取的数据。主控制器2接收主机70发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器22中。当存储器22的容量达到一定阈值时,将存储器22存储的数据以及为所述数据分配的逻辑地址发送给固态硬盘1。固态硬盘1存储所述数据。存储器22包括易失性存储器,闪存芯片或其组合。易失性存储器例如为随机访问存储器(random-access memory,RAM)。闪存芯片例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。存储器22具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器22中存储的数据也不会丢失。
如图5所示,需要说明的是,所述主控制器2属于系统控制器,系统控制器是独立的设备,不同于固态硬盘中的控制芯片。本实施例将固态硬盘1的控制芯片称为闪存控制器11,闪存控制器11用于执行主控制器2发送的写数据请求或者读数据请求等操作。
如图5所示,所述闪存控制器11中包含闪存转换层(flash translation layer,闪存转换层)。闪存转换层用于保存有效数据的逻辑地址与实际地址之间的对应关系。因此,闪存转换层用于将系统控制器发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘中数据的实际地址。数据的逻辑地址是由系统控制器分配的,一个段的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘中该数据的实际地址,也可以是在所述实际地址的基础上经过虚拟化,只对闪存控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。
如图5及图6所示,在一些实施例中,所述固态硬盘1包括一个或多个闪存芯片12。每个闪存芯片12包括若干个擦除块121,擦除块121也可以称为物理块或闪存块。所述固态硬盘1在读取或写入时是以一个页(page)为基础的,但擦除操作只能以一个擦除块121为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,闪存控制器11需要先将这个擦除块121中的有效数据复制到另一个块的空白页中去。擦除块121中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。擦除块121中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。
如图7所示,在一些实施例中,每个擦除块121包含多个页1211(page)。固态硬盘1在执行写数据请求时,是以页1211为单位来写数据的。举例来说,主控制器2向闪存控制器11发送一个写数据请求。所述写数据请求包括数据的逻辑地址。闪存控制器11在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个擦除块121中。连续写入一个或多个擦除块121是指,闪存控制器11查找一个空白的擦除块121,将数据写入所述空白的擦除块121,直至将所述空白的擦除块121填满,当所述数据的大小超过擦除块121的容量时,闪存控制器11再查找下一个空白的擦除块121,继续写入。闪存转换层建立并保存所述逻辑地址与写入所述数据的页1211的实际地址之间的对应关系。当主控制器2向闪存控制器11发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。闪存控制器11根据所述逻辑地址,以及所述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给主控制器2。
如图8所示,在一些实施例中,存储单元12111(cell)是页1211的最小操作单元,一个存储单元12111对应一个浮栅晶体管,它可以存储1比特(bit)或多比特的数据,这取决于闪存的类型。一个页1211上的存储单元12111共享一根字符线。存储单元12111包括控制栅极和浮置栅极,浮置栅极是真正存储数据的单元。数据在存储单元12111中是以电荷(electrical charge)形式存储的。存储电荷的多少取决于控制栅极所被施加的电压,其控制了向浮置栅极中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值来表示。往浮置栅极中写入数据就是对控制栅极施加电压,使得浮置栅极中存储的电荷够多,超过阈值,就表示0。对闪存进行擦除操作就是对浮置栅极放电,使得浮置栅极中存储的电荷低于阈值,就表示1。
如图8所示,在一些实施例中,每个存储单元12111中存储一个比特数据的闪存类型称之为单层单元(Single-level cell,SLC),单层单元的浮置栅极有一个电压阈值,因此具有0和1两种状态,可以存储一个比特的数据。单层单元闪存具有高写入速度、低功耗、更长电池耐久的优点,因此具有更快的传输速度和更长使用寿命。多层单元(Multi-levelcell,MLC)是使用多个电压阈值的存储单元12111,从而允许相同数量的晶体管存储更多比特。在单层单元技术中,每个存储单元12111只能处于两种状态中的一种,而MLC在每个存储单元12111中存储四个可能的状态(MLC具有00、01、10、11四种状态),因此可以用每个存储单元12111存储两个比特。相对于SLC来说,MLC的误码率更高,使用寿命更短,但成本更低。一些固态硬盘使用MLC闪存中的部分晶粒模拟为单比特的SLC闪存,从而提供更高的写入速度。另外,每个单元存储三比特的闪存被称为三层单元(Triple-level cell,TLC),TLC具有8种状态。MLC的缺点在TLC上同样存在并更为突出,但TLC也受益于更高的存储密度和更低的成本。另外,闪存类型还有四层单元(Quad-level cell,QLC)以及其他多层单元,本发明实施例并不对闪存类型进行限定。
如图8所示,在一些实施例中,还支持包含两种或两种以上闪存类型的固态硬盘1。例如,在本实施例所提供的固态硬盘1中可以包含设置为MLC以及TLC两种类型的存储单元12111,也可以包含设置为MLC以及QLC两种类型的存储单元12111,也可以包含设置为QLC以及TLC两种类型的存储单元12111,还可以包含设置为MLC、TLC以及QLC三种类型的存储单元12111,或者其他组合。
如图9所示,本发明提供一种数据存储方法,具体为,为了加快逻辑地址到实际地址的映射,在系统运行过程中,在闪存转换层中配置一第一映射表用于记录数据逻辑地址到实际地址的映射,另配置一位图文件来记录数据逻辑地址到实际地址映射的动态更新,其中每个比特代表着一个逻辑地址到实际地址的映射关系,另外设计表头信息用来记录映射到闪存芯片的哪些区块跟页面,从而确定数据实际地址的范围,将表头信息与位图文件合并形成第二映射表。执行主机70的数据写入命令,将所述数据写入闪存芯片12中,所述数据写入命令中包括所述数据的逻辑地址,在所述第一映射表中建立写入数据的逻辑地址对应闪存芯片12中实际地址的映射,同时在第二映射表中对应的实际地址处设置有效标记。当第一映射表内的映射数量或第二映射表内记录的映射到闪存中的实际地址范围达到阈值时,将部分第一映射表存入闪存芯片12中,并将与此部分第一映射表相对应的第二映射表中的所述有效标记更改为无效标记。当逻辑地址发生时,则第一映射表中映射关系发生改变,相对的第二映射表中的标记也随之发生改变,以此实现对闪存芯片12实际地址映射的动态调控。
如图9所示,具体的,本发明的数据存储方法至少包括以下步骤:
S1.执行主机70的数据写入命令,将所述数据写入闪存芯片12中,所述数据写入命令中包括所述数据的逻辑地址;
S2.在闪存控制器11的闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;
S3.在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片12中的实际地址;若写入数据在第一映射表中不存在映射关系,则在所述第二映射表的对应位置做有效标记;若写入数据在第一映射表中存在映射关系,则在所述第二映射表中原有映射关系的对应位置处做无效标记,同时在现有映射关系的对应位置处做有效标记;
S4.当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片12中,并将与此部分第一映射表相对应的第二映射表中的所述有效标记更改为无效标记;
S5.通过所述第二映射表重建未存入闪存芯片12的部分所述第一映射表。
如图9所示,在步骤S1和步骤S2中,首先主机70下发数据写入命令,主控制器2执行主机70的数据写入命令,将所述数据写入固态硬盘1中的闪存芯片12中,所述数据写入命令中包括所述数据的逻辑地址。所述固态硬盘1中包括闪存控制器11和闪存芯片12,闪存控制器11又包含闪存转换层(flash translation layer,闪存转换层)。闪存转换层用于保存有效数据的逻辑地址与实际地址之间的对应关系。因此,闪存转换层用于将主控制器2发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘1中数据的实际地址。数据的逻辑地址是由主控制器2分配的,一个段的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘1中该数据的实际地址,也可以是在所述实际地址的基础上经过虚拟化,只对闪存控制器11可见的地址。该经过虚拟化的实际地址对主控制器2不可见。
如图5及图6所示,所述固态硬盘1通常包括一个或多个闪存芯片12。每个闪存芯片12包括若干个擦除块121,擦除块121也可以称为物理块或闪存块。所述固态硬盘1在读取或写入时是以一个页(page)为基础的,但擦除操作只能以一个擦除块121为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,闪存控制器11需要先将这个擦除块121中的有效数据复制到另一个块的空白页中去。擦除块121中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。擦除块121中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。
如图7所示,每个擦除块121包含多个页1211(page)。固态硬盘1在执行写数据请求时,是以页1211为单位来写数据的。举例来说,主控制器2向闪存控制器11发送一个写数据请求。所述写数据请求包括数据的逻辑地址。闪存控制器11在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个擦除块121中。连续写入一个或多个擦除块121是指,闪存控制器11查找一个空白的擦除块121,将数据写入所述空白的擦除块121,直至将所述空白的擦除块121填满,当所述数据的大小超过擦除块121的容量时,闪存控制器11再查找下一个空白的擦除块121,继续写入。闪存转换层建立并保存所述逻辑地址与写入所述数据的页1211的实际地址之间的对应关系。当主控制器2向闪存控制器11发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。闪存控制器11根据所述逻辑地址,以及所述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给主控制器2。
如图5所示,在步骤S2中,在闪存控制器11的闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系例如图5给出了第一映射表的一个实例。从图中可以看出,在页映射表中,左边一列表示了LPN(Logical PageNumber:逻辑页面编号),右边一列表示了<PBN,PPN>,其中,PBN(Physical BlockNumber)表示物理块编号,PPN(Physical Page Number)表示物理页编号。第一映射表中的一个映射条目{0,<0,1>},表示LPN为0的逻辑页被映射到闪存芯片12中的第0块(PBN=0)中的第1页(PPN=1)。
如图9所示,在步骤S3中,在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表用于标记所述第一映射表中的映射关系是否有效。具体的,在闪存转换层中中另配置一位图文件来记录数据逻辑地址到实际地址映射的动态更新,其中每个比特代表着一个逻辑地址到实际地址的映射关系,另外设计表头信息用来记录映射到闪存芯片12的哪些区块跟页面,从而确定数据实际地址的范围,将表头信息与位图文件合并形成第二映射表。所述第二映射表包括数据在闪存芯片12中的实际地址范围。
如图9及图10所示,在步骤S3中,若写入数据在第一映射表中不存在映射关系,则在所述第二映射表的对应位置做有效标记。若写入数据在第一映射表中存在映射关系,则在所述第二映射表中原有映射关系的对应位置处做无效标记,同时在现有映射关系的对应位置处做有效标记。具体的,当闪存转换层从主机70接收到一数据写入命令时,首先要确定数据要写进闪存芯片12中的哪个位置,若写入数据在第一映射表中不存在此映射关系,则在对应的第二映射表的实际地址位置处将值设定为‘1’,表示为有效的映射关系。若写入数据在第一映射表中存在映射关系,则代表所述写入数据在闪存芯片12中存在旧数据,则将所述旧数据在第二映射表中的实际地址位置处的值设定为‘0’,将写入的新数据在第二映射表中的实际地址位置处的值设定为‘1’。
如图9所示,在步骤S4中,当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片12中,并将与此部分第一映射表相对应的第二映射表中的所述有效标记更改为无效标记。所述阈值可以为第一映射表中记录的映射关系的数量达到上限,所述阈值还可以为第二映射表中记录的闪存芯片12中数据写入的实际地址的范围达到上限。
如图9所示,在步骤S5中,在一些实施例中,部分第一映射表存入闪存芯片12的过程中,可能会出现预期性的断电,重新上电后可以通过所述第二映射表恢复未存入闪存芯片12的部分所述第一映射表。具体的,通过所述第二映射表恢复未存入闪存芯片12的部分所述第一映射表的方法包括以下步骤:根据所述第二映射表中设有有效标记的实际地址,在所述闪存芯片12中相应的实际地址处获取所述数据;根据所述数据,获取所述数据的逻辑地址;根据所述数据的逻辑地址与实际地址的映射关系恢复所述第一映射表。
另外,本发明中的所述第二映射表的占用空间小于所述第一映射表的占用空间。具体的,如图10所示,例如第一映射表的一个逻辑地址占用4Byte,一个实际地址占用4Byte,当从主机70接收到数据写入的命令后,在闪存转换层上的第一映射表中建立数据的逻辑地址与数据会写入的实际地址之间的映射。
如图11所示,当闪存转换层上的第一映射表能暂存的映射关系空间达到阈值时,执行整理操作(FlushTable),例如每连续32个逻辑地址为一组,将第一映射表中零散的映射关系整理成图11中下方的映射关系表格,并存入闪存芯片12中。若要能在预期断电后不遗失闪存转换层上的第一映射表,又能与闪存芯片12中整理好的映射关系表格对应,则势必要一并存入闪存芯片12中,若闪存转换层上的第一映射表大小例如为64KB,每次执行完整理操作后又需额外消耗64KB的闪存芯片12空间、及增加额外的写入时间。若是利用第二映射表中一个比特代表一个映射关系,只需要1KB就能在重新上电后恢复重建64KB的第一映射表,而不需要将64KB全部写进闪存芯片12中,降低写入时的效能。
如图12所示,具体的,第二映射表(ValidAuBmp)中假设映射关系的单位例如为4KB,页的尺寸例如为16KB,芯片数例如为2,平面数例如为2,页数例如为5。其中每个方块代表1个比特,灰色方块代表着在闪存芯片12对应的实际地址处存在着一个映射关系,表头信息记录着实际地址位于哪个区块、页的范围,以及第二映射表的有效区间,图中所示代表着数据一直写到Super Block2的Plane0的PageNo1,所以灰色部分只到图中所示的位置。
如图13所示,当运行一段时间后,第二映射表(ValidAuBmp)可能会呈现如图所示的情况,中间白色的空洞可视为已被整理后存进闪存芯片12的映射关系,也可能为该映射关系的逻辑地址被后续写入的数据覆盖,成为无效的映射关系。从图中ValidAuBmpPtrS及ValidAuBmpPtrE来看第二映射表(ValidAuBmp)对应闪存芯片12实际地址的调控范围从Block1的PageNo3开始到Block3的PageNo2结束,代表着著重新上电后要读取的闪存芯片12的范围。
本发明通过设置第二映射表,可以动态调控所述第一映射表的重建范围。另外通过第二映射表重建第一映射表可以减少初始化时间。
本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述的数据存储方法。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (9)
1.一种数据存储方法,其特征在于,其至少包括以下步骤:
S1.执行主机的数据写入命令,将所述数据写入闪存芯片中,所述数据写入命令中包括所述数据的逻辑地址;
S2.在闪存控制器的闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;
S3.在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片中的实际地址;
S4.当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片中;
S5.通过所述第二映射表重建未存入闪存芯片的部分所述第一映射表;
其中,通过所述第二映射表恢复未存入闪存芯片的部分所述第一映射表的方法包括以下步骤:
根据所述第二映射表中设有有效标记的实际地址,在所述闪存芯片中相应的实际地址处获取所述数据;
根据所述数据,获取所述数据的逻辑地址;
根据所述数据的逻辑地址与实际地址的映射关系恢复所述第一映射表。
2.根据权利要求1所述一种数据存储方法,其特征在于,所述第二映射表包括数据在闪存芯片中的实际地址范围。
3.根据权利要求1所述一种数据存储方法,其特征在于,所述第二映射表的记录方法包括:
若写入数据在第一映射表中不存在映射关系,则在所述第二映射表的实际地址的对应位置做有效标记;
若写入数据在第一映射表中存在映射关系,则在所述第二映射表中原有映射关系的实际地址的对应位置处做无效标记,同时在现有映射关系的实际地址的对应位置处做有效标记。
4.根据权利要求1所述一种数据存储方法,其特征在于,在步骤S4中,将所述部分第一映射表相对应的第二映射表中的有效标记更改为无效标记。
5.根据权利要求1所述一种数据存储方法,其特征在于,所述第二映射表包括表头信息,所述表头信息用来表示所述写入数据映射到闪存芯片中的区块和页面等实际地址的范围。
6.根据权利要求1所述一种数据存储方法,其特征在于,所述第二映射表的占用空间小于所述第一映射表的占用空间。
7.根据权利要求1所述一种数据存储方法,其特征在于,所述阈值为第一映射表中记录的映射关系的数量达到上限或第二映射表中记录的闪存芯片中数据写入的实际地址的范围达到上限。
8.一种数据存储系统,其特征在于,其包括:
主机,用于发布数据写入命令,所述数据写入命令中包括所述数据的逻辑地址;
固态硬盘,所述固态硬盘包括:
闪存芯片,其用于存储写入数据,所述写入数据对应有实际地址;
闪存控制器,其上设有闪存转换层,在闪存转换层中配置第一映射表,所述第一映射表用于保存写入数据的逻辑地址与实际地址之间的映射关系;在所述闪存转换层中配置第二映射表,所述第二映射表与所述第一映射表相关联,所述第二映射表中用于记录所述数据在闪存芯片中的实际地址;当第一映射表或第二映射表的存储条件达到阈值时,将部分第一映射表存入闪存芯片中;通过所述第二映射表重建未存入闪存芯片的部分所述第一映射表;根据所述第二映射表中设有有效标记的实际地址,在所述闪存芯片中相应的实际地址处获取所述数据,根据所述数据,获取所述数据的逻辑地址,根据所述数据的逻辑地址与实际地址的映射关系恢复所述第一映射表。
9.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010867292.4A CN112015341B (zh) | 2020-08-26 | 2020-08-26 | 一种数据存储方法、存储系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010867292.4A CN112015341B (zh) | 2020-08-26 | 2020-08-26 | 一种数据存储方法、存储系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015341A CN112015341A (zh) | 2020-12-01 |
CN112015341B true CN112015341B (zh) | 2024-03-22 |
Family
ID=73503292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010867292.4A Active CN112015341B (zh) | 2020-08-26 | 2020-08-26 | 一种数据存储方法、存储系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015341B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022252082A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 一种数据处理方法、设备及系统 |
CN114398008A (zh) * | 2021-12-31 | 2022-04-26 | 珠海妙存科技有限公司 | 数据回收方法、控制器和计算机可读存储介质 |
CN114546267B (zh) * | 2022-02-14 | 2022-11-18 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘系统 |
CN115407946B (zh) * | 2022-11-02 | 2023-03-24 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法与控制系统 |
CN117407928B (zh) * | 2023-12-13 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 存储装置、存储装置的数据保护方法、计算机设备及介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030167A (zh) * | 2007-01-17 | 2007-09-05 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
TW201007451A (en) * | 2008-08-12 | 2010-02-16 | Phison Electronics Corp | Block management method for flash memory and storage system and controller using the same |
JP2010079371A (ja) * | 2008-09-24 | 2010-04-08 | Toshiba Corp | 記憶装置及び電子機器 |
CN102651009A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种存储系统中检索数据的方法和设备 |
CN103699341A (zh) * | 2013-12-17 | 2014-04-02 | 飞天诚信科技股份有限公司 | 一种向存储设备中写数据的方法 |
CN104216796A (zh) * | 2013-06-04 | 2014-12-17 | 联想(北京)有限公司 | 一种数据备份、恢复方法及电子设备 |
CN104281538A (zh) * | 2013-07-03 | 2015-01-14 | 联想(北京)有限公司 | 一种存储设备的扩容及快照方法和存储设备 |
CN106528446A (zh) * | 2016-11-17 | 2017-03-22 | 深圳市先天海量信息技术有限公司 | 闪存数据的控制方法及控制系统 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
CN108733312A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法和设备 |
CN108807403A (zh) * | 2017-05-05 | 2018-11-13 | 中芯国际集成电路制造(上海)有限公司 | 一种半导体器件及其制作方法、电子装置 |
CN110908926A (zh) * | 2018-09-14 | 2020-03-24 | 慧荣科技股份有限公司 | 数据储存装置及逻辑至物理地址映射表的写入方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930404B (zh) * | 2010-08-27 | 2012-11-21 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
-
2020
- 2020-08-26 CN CN202010867292.4A patent/CN112015341B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030167A (zh) * | 2007-01-17 | 2007-09-05 | 忆正存储技术(深圳)有限公司 | 闪存的区块管理方法 |
TW201007451A (en) * | 2008-08-12 | 2010-02-16 | Phison Electronics Corp | Block management method for flash memory and storage system and controller using the same |
JP2010079371A (ja) * | 2008-09-24 | 2010-04-08 | Toshiba Corp | 記憶装置及び電子機器 |
CN102651009A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种存储系统中检索数据的方法和设备 |
CN104216796A (zh) * | 2013-06-04 | 2014-12-17 | 联想(北京)有限公司 | 一种数据备份、恢复方法及电子设备 |
CN104281538A (zh) * | 2013-07-03 | 2015-01-14 | 联想(北京)有限公司 | 一种存储设备的扩容及快照方法和存储设备 |
CN103699341A (zh) * | 2013-12-17 | 2014-04-02 | 飞天诚信科技股份有限公司 | 一种向存储设备中写数据的方法 |
CN106547703A (zh) * | 2016-10-08 | 2017-03-29 | 华中科技大学 | 一种基于块组结构的ftl优化方法 |
CN106528446A (zh) * | 2016-11-17 | 2017-03-22 | 深圳市先天海量信息技术有限公司 | 闪存数据的控制方法及控制系统 |
CN108733312A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法和设备 |
CN108807403A (zh) * | 2017-05-05 | 2018-11-13 | 中芯国际集成电路制造(上海)有限公司 | 一种半导体器件及其制作方法、电子装置 |
CN110908926A (zh) * | 2018-09-14 | 2020-03-24 | 慧荣科技股份有限公司 | 数据储存装置及逻辑至物理地址映射表的写入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112015341A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015341B (zh) | 一种数据存储方法、存储系统及存储介质 | |
US11967369B2 (en) | Lifetime mixed level non-volatile memory system | |
JP5823875B2 (ja) | 固体メモリフォーマッティング | |
CN105718530B (zh) | 文件存储系统及其文件存储控制方法 | |
JP2008508589A (ja) | フラッシュファイル・システム内での仮想アドレスから物理アドレスへの変換 | |
US11422945B2 (en) | Generating, maintaining, or utilizing a compressed logical-to-physical table based on sequential writes | |
US20220300195A1 (en) | Supporting multiple active regions in memory devices | |
CN109144899A (zh) | 用于管理表恢复的方法 | |
US11693767B2 (en) | Performing a media management operation based on changing a write mode of a data block in a cache | |
CN113946283B (zh) | 存储器装置的分区命名空间中的部分区存储器单元处置 | |
CN112130749A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US20220269440A1 (en) | Control method for flash memory controller and associated flash memory controller and storage device | |
KR20220103340A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11100005B2 (en) | Logical-to-physical (L2P) table sharping strategy | |
US11704247B2 (en) | Enhanced duplicate write data tracking for cache memory | |
US11714722B2 (en) | Power loss recovery for memory devices | |
CN114637695A (zh) | 用于两遍编程存储器装置的日志方案 | |
CN112015339B (zh) | 一种存储器的数据保存系统,保存方法及存储系统 | |
US11922011B2 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
US20240160349A1 (en) | Virtual management unit scheme for two-pass programming in a memory sub-system | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件系统支持 | |
WO2024036505A1 (en) | Atomicity assurance in write through mode | |
US11392505B2 (en) | Rebuilding logical-to-physical address mapping with limited memory | |
US20230061879A1 (en) | Configurable Storage Granularity for Video/Image Recording | |
CN114968067A (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 |