固态硬盘日志生成方法及其装置与流程

文档序号:12747910阅读:392来源:国知局
固态硬盘日志生成方法及其装置与流程

本发明涉及电子设备,更具体地,本发明涉固态硬盘的日志生成方法、启动方法及其装置。



背景技术:

参看图1,以固态存储设备(Solid Storage Device,SSD)作为电子设备的举例,图1展示了存储设备的框图。存储设备102同主机相耦合,用于为主机提供存储能力。主机同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA、IDE、USB、PCIE、NVMe(NVM Express)、SCSI、以太网、光纤通道、无线通信网络等连接主机与存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)存储芯片105以及固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SCSI、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM存储芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器。控制部件104在运行时从固件存储器110加载固件。固件存储器110可以是NOR闪存、ROM、EEPROM等。固件用于提供电子设备底层功能,诸如BIOS、操作系统加载等。

存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic Unit Number)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gol d.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义。

MLC(Multi-Level Cell,多级单元)NVM是在每个存储单元中能够存储至少两比特信息的非易失性存储器。同SLC(Single Level Cell)NVM相比,具有存储容量大,成本低的特点,但存储的可靠性不如SLC,可能发生数据损坏或丢失。

在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。 在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。

存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。固态存储设备的FTL表具有较大的尺寸,例如若干GB级。而在固态存储设备关闭时,需要完整地保存FTL表,在固态存储设备启动时,需要完成FTL完全加载。

现有技术中,在固态存储设备的每个数据页中附加地存储该数据页所对应的逻辑地址。在固态存储设备启动时,需要访问所有数据页,以获得每个数据页所对应的逻辑地址,并重建FTL表。然而这样的操作将需要大量时间,并导致固态存储设备启动过程耗时很长。



技术实现要素:

本发明的一个目的在于希望解决固态存储设备加载FTL表时耗时很长的问题。本发明的又一个目的在于在固态存储设备掉电后的有限时间内,能够可靠地存储FTL表。

根据本发明的第一方面,提供了第一固态硬盘启动方法,包括获取FTL(Flash Translation Layer,闪存转换层)日志在固态硬盘上的存储位置,其中FTL日志包括多个FTL日志数据帧,每个FTL日志数据帧记录了FTL表的部分;从所述存储位置读取FTL日志以及写请求日志;其中写请求日志包括多个写请求日志数据帧,每个写请求日志数据帧包括前一个写请求日志数据帧生成后向固态硬盘发出的多个写请求所对应的逻辑地址与物理地址;利用所述FTL日志以及所述写请求日志重构FTL表;以及完成固态硬盘的启动。

根据本发明第一方面的第一固态硬盘启动方法,提供了本发明第一方面的第二固态硬盘启动方法,其中利用所述FTL日志以及所述写请求日志重构FTL表包括:使用FTL日志构建第一FTL表;使用写请求日志更新第一FTL表,以得到第二FTL表。

根据本发明第一方面的第二固态硬盘启动方法,提供了本发明第一方面的第三固态硬盘启动方法,其中所述使用写请求日志更新第一FTL表,包括顺序使用所述写请求日志的每个写请求日志数据帧,更新所述第一FTL表。

根据本发明第一方面的第一与第二固态硬盘启动方法,提供了本发明第一方面的第四固态硬盘启动方法,其中所述写请求日志中记录了所述FTL日志创建期间向所述固态硬盘发出的全部写请求。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第五固态硬盘启动方法,其中所述FTL表中反映了所述固态硬盘的逻辑地址与物理地址的对应关系。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第六固态硬盘启动方法,其中在所述固态硬盘上,FTL日志数据帧与写请求日志数据帧相关联地存储。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第七固态硬盘启动方法,其中每个FTL日志数据帧按顺序记录了整个FTL表的部分。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第八固态硬盘启动方法,其中每个写请求日志数据帧包括前一个写请求日志数据帧生成后以及后一个写请求日志数据帧生成前向固态硬盘发出的写请求所对应的逻辑地址与物理地址。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第九固态硬盘启动方法,其中所述FTL日志中记录了整个FTL表的信息。

根据本发明第一方面的上述固态硬盘启动方法之一,提供了本发明第一方面的第十固态硬盘启动方法,其中所述固态硬盘包括MLC NVM(Multi-Level Cell Non-Volatile Memory,多级单元非易失存储器),以及从所述存储位置读取FTL日志以及写请求日志时,使用pSLC模式访问所述NVM。

根据本发明第二方面,提供了一种计算机,包括用于存储程序指令的机器可读存储器;用于执行存储在所述存储器中的程序指令的一个或多个处理器;所述程序指令用于使所述一个或多个处理器执行根据本发明第一方面的固态硬盘启动方法之一。

根据本发明的第三方面,提供了一种计算机程序,其使得计算机执行根据本发明第一方面的固态硬盘启动方法之一。

根据本发明的第四方面,提供了在其上存储有所记录的程序的计算机可读存储介质,其中所述程序使得所述计算机执行根据本发明第一方面的固态硬盘启动方法之一。

根据本发明的第五方面,提供了一种程序,所述程序在被固态硬盘的控制器执行时使得所述固态硬盘执行根据本发明第一方面的固态硬盘启动方法之一。

根据本发明的第六方面,提供了一种固态硬盘,包括用于存储程序指令的机器可读存储器,用于执行存储在所述存储器中的程序指令的一个或多个处理器或控制器,所述程序指令用于使所述一个或多个处理器或控制器执行根据本发明第一方面的固态硬盘启动方法之一。

根据本发明的第七方面,提供了第一固态硬盘启动装置,包括日志定位模块,用于获取FTL(Flash Translation Layer,闪存转换层)日志在固态硬盘上的存储位置,其中FTL日志包括多个FTL日志数据帧,每个FTL日志数据帧记录了FTL表的部分;日志获取模块,从所述存储位置读取FTL日志以及写请求日志;其中写请求日志包括多个写请求日志数据帧,每个写请求日志数据帧包括前一个写请求日志数据帧生成后向固态硬盘发出的多个写请求所对应的逻辑地址与物理地址;FTL表重构模块,用于利用所述FTL日志以及所述写请求日志重构FTL表;以及启动模块,用于完成固态硬盘的启动。

根据本发明的第七方面的第一固态硬盘启动装置,提供了本发明第七方面的第二固态硬盘启动装置,其中FTL表重构模块包括:FTL表构建模块,用于使用FTL日志构建第一FTL表;FTL表更新模块,用于使用写请求日志更新第一FTL表,以得到第二FTL表。

根据本发明的第七方面的第二固态硬盘启动装置,提供了本发明第七方面的第三固态硬盘启动装置,其中FTL表更新模块,包括FTL顺序更新模块,用于顺序使用所述写请求日志的每个写请求日志数据帧,更新所述第一FTL表。

根据本发明的第七方面的第一或第二固态硬盘启动装置,提供了本发明第七方面的第四固态硬盘启动装置,其中所述写请求日志中记录了所述FTL日志创建期间向所述固态硬盘发出的全部写请求。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第五固态硬盘启动装置,其中所述FTL表中反映了所述固态硬盘的逻辑地址与物理地址的对应关系。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第六固态硬盘启动装置,其中在所述固态硬盘上,FTL日志数据帧与写请求日志数据帧相关联地存储。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第 七固态硬盘启动装置,其中每个FTL日志数据帧按顺序记录了整个FTL表的部分。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第八固态硬盘启动装置,其中每个写请求日志数据帧包括前一个写请求日志数据帧生成后以及后一个写请求日志数据帧生成前向固态硬盘发出的写请求所对应的逻辑地址与物理地址。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第九固态硬盘启动装置,其中所述FTL日志中记录了整个FTL表的信息。

根据本发明的第七方面的上述固态硬盘启动装置,提供了本发明第七方面的第十固态硬盘启动装置,其中所述固态硬盘包括MLC NVM(Multi-Level Cell Non-Volatile Memory,多级单元非易失存储器),以及从所述存储位置读取FTL日志以及写请求日志时,使用pSLC模式访问所述NVM。

根据本发明的第八方面,提供了第一固态硬盘的日志生成方法,包括基于向固态硬盘发出的写请求,记录该写请求所对应的用于固态硬盘的逻辑地址与物理地址;使用多个所述写请求所对应的多个用于固态硬盘的逻辑地址与物理地址,生成写请求日志数据帧;获取FTL表的部分,生成FTL日志数据帧;在NVM(Non-Volatile Memory,非易失存储器)上存储所述写请求日志数据帧与所述FTL日志数据帧;以及记录在NVM上存储所述FTL日志数据帧的地址。

根据本发明第八方面的第一固态硬盘日志生成方法,提供了本发明第八方面的第二固态硬盘日志生成方法,还包括:当所述固态硬盘关机或掉电时,将所记录的在NVM上存储所述FTL日志数据帧的地址,存储到NVM中。

根据本发明第八方面的第一或第二固态硬盘日志生成方法,提供了本发明第八方面的第三固态硬盘日志生成方法,其中周期性地所述在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧。

根据本发明第八方面的第一或第二固态硬盘日志生成方法,提供了本发明第八方面的第四固态硬盘日志生成方法,,其中在所述写请求日志数据帧生成后,在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧,以及其中所述写请求日志数据帧中包括预定数量的逻辑地址与物理地址对。

根据本发明第八方面的上述固态硬盘日志生成方法,提供了本发明第八方面的第五固态硬盘日志生成方法,,其中所述获取FTL表的部分,生成FTL日志数据帧,包括:获取未用于生成过FTL日志数据帧的FTL表的部分,来生成FTL日志数据帧。

根据本发明第八方面的第一或第二固态硬盘日志生成方法,提供了本发明第八方面的第六固态硬盘日志生成方法,其中所述获取FTL表的部分,生成FTL日志数据帧,包括:选择从FTL表的第一地址开始预定长度的FTL表,作为FTL表的部分,用于生成FTL日志数据帧,其中所述第一地址前的FTL表部分已被用于生成FTL日志数据帧。

根据本发明第八方面的第一或第二固态硬盘日志生成方法,提供了本发明第八方面的第七固态硬盘日志生成方法,其中所述获取未用于生成过FTL日志条目的FTL表的部分,包括:从FTL表的第一地址开始预定长度的FTL表,作为FTL表的部分,用于生成FTL日志数据帧,其中所述第一地址前的FTL表部分已被用于生成FTL日志数据帧。

根据本发明第八方面的第五到第七固态硬盘日志生成方法之一的方法,提供了本发明第八方面的第八固态硬盘日志生成方法,其中所述写请求日志数据帧与所述FTL日志数据帧总计的大小为固态硬盘的数据页大小的整数倍。

根据本发明第八方面的第六到第八固态硬盘日志生成方法之一的方法,提供了本发明第八方面的第九固态硬盘日志生成方法,其中所述NVM(Non-Volatile Memory,非易失存储器)是MLC NVM,以及在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧时,使用pSLC模式访问所述NVM。

根据本发明第八方面的上述固态硬盘日志生成方法,提供了本发明第八方面的第十固态硬盘日志生成方法10,其中在NVM上,所述写请求日志数据帧与所述FTL日志数据帧相关联地存储。

根据本发明第九方面,提供了一种计算机,包括用于存储程序指令的机器可读存储器;用于执行存储在所述存储器中的程序指令的一个或多个处理器;所述程序指令用于使所述一个或多个处理器执行根据本发明第八方面的固态硬盘日志生成方法之一。

根据本发明的第十方面,提供了一种计算机程序,其使得计算机执行根据本发明第八方面的固态硬盘日志生成方法之一。

根据本发明的第十一方面,提供了在其上存储有所记录的程序的计算机可读存储介质,其中所述程序使得所述计算机执行根据本发明第八方面的固态硬盘日志生成方法之一。

根据本发明的第十二方面,提供了一种程序,所述程序在被固态硬盘的控制器执行时使得所述固态硬盘执行根据本发明第八方面的固态硬盘日志生成方法之一。

根据本发明的第十三方面,提供了一种固态硬盘,包括用于存储程序指令的机器可读存储器,用于执行存储在所述存储器中的程序指令的一个或多个处理器或控制器,所述程序指令用于使所述一个或多个处理器或控制器执行根据本发明第八方面的固态硬盘日志生成方法之一。

根据本发明的第十四方面,提供了本发明第十四方面的第一用于固态硬盘的日志生成装置,包括写日志记录模块,用于基于向固态硬盘发出的写请求,记录该写请求所对应的用于固态硬盘的逻辑地址与物理地址;“写”日志数据帧生成模块,用于使用多个所述写请求所对应的多个用于固态硬盘的逻辑地址与物理地址,生成写请求日志数据帧;FTL日志数据帧生成模块,用于获取FTL表的部分,生成FTL日志数据帧;日志存储模块,用于在NVM(Non-Volatile Memory,非易失存储器)上存储所述写请求日志数据帧与所述FTL日志数据帧;以及地址记录模块,用于记录在NVM上存储所述FTL日志数据帧的地址。

根据本发明第十四方面的第一用于固态硬盘的日志生成装置,提供了本发明第十四方面的第二用于固态硬盘的日志生成装置,还包括:掉电保存模块,用于当所述固态硬盘关机或掉电时,将所记录的在NVM上存储所述FTL日志数据帧的地址,存储到NVM中。

根据本发明第十四方面的上述用于固态硬盘的日志生成装置,提供了本发明第十四方面的第三用于固态硬盘的日志生成装置,其中日志存储模块,用于周期性地所述在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧。

根据本发明第十四方面的第一或第二用于固态硬盘的日志生成装置,提供了本发明第十四方面的第四用于固态硬盘的日志生成装置,其中在所述写请求日志数据帧生成后,在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧,以及其中所述写请求日志数据帧中包括预定数量的逻辑地址与物理地址对。

根据本发明第十四方面的上述用于固态硬盘的日志生成装置之一,提供了本发明第十四方面的第五用于固态硬盘的日志生成装置,其中所述FTL日志数据帧生成模块,用于获取未用于生成过FTL日志数据帧的FTL表的部分,来生成FTL日志数据帧。

根据本发明第十四方面的第一至第四用于固态硬盘的日志生成装置之一,提供了本发明第十四方面的第六用于固态硬盘的日志生成装置,其中所述FTL日志数据 帧生成模块,用于选择从FTL表的第一地址开始预定长度的FTL表,作为FTL表的部分,用于生成FTL日志数据帧,其中所述第一地址前的FTL表部分已被用于生成FTL日志数据帧。

根据本发明第十四方面的第五用于固态硬盘的日志生成装置,提供了本发明第十四方面的第七用于固态硬盘的日志生成装置,其中所述获取未用于生成过FTL日志条目的FTL表的部分,包括:从FTL表的第一地址开始预定长度的FTL表,作为FTL表的部分,用于生成FTL日志数据帧,其中所述第一地址前的FTL表部分已被用于生成FTL日志数据帧。

根据本发明第十四方面的第五至第七用于固态硬盘的日志生成装置之一,提供了本发明第十四方面的第八用于固态硬盘的日志生成装置,其中所述写请求日志数据帧与所述FTL日志数据帧总计的大小为固态硬盘的数据页大小的整数倍。

根据本发明第十四方面的第六至第八用于固态硬盘的日志生成装置之一,提供了本发明第十四方面的第九用于固态硬盘的日志生成装置,其中所述NVM(Non-Volatile Memory,非易失存储器)是MLC NVM,以及在NVM上存储所述写请求日志数据帧与所述FTL日志数据帧时,使用pSLC模式访问所述NVM。

根据本发明第十四方面的上述用于固态硬盘的日志生成装置之一,提供了本发明第十四方面的第十用于固态硬盘的日志生成装置,其中在NVM上,所述写请求日志数据帧与所述FTL日志数据帧相关联地存储。

根据本发明第十五方面,提供了一种用于固态硬盘的方法,包括:基于向固态硬盘发出的写请求,记录该写请求所对应的用于固态硬盘的逻辑地址与物理地址;使用多个所述写请求所对应的多个用于固态硬盘的逻辑地址与物理地址,生成写请求日志数据帧;获取FTL表的部分,生成FTL日志数据帧;在NVM(Non-Volatile Memory,非易失存储器)上存储所述写请求日志数据帧与所述FTL日志数据帧;记录在NVM上存储所述FTL日志数据帧的地址;当所述固态硬盘关机或掉电时,将所记录的在NVM上存储所述FTL日志数据帧的地址,存储到NVM中;以及,当所述固态硬盘启动时,通过NVM中存储的在NVM上存储所述FTL日志数据帧的地址,而获取FTL日志在固态硬盘上的存储位置,其中FTL日志包括多个FTL日志数据帧,每个FTL日志数据帧记录了FTL表的部分;从所述存储位置读取FTL日志以及写请求日志;其中写请求日志包括多个写请求日志数据帧,每个写请求日志数据帧包括前一个写请求日志数据帧生成后向固态硬盘发出的多个写请求所对应的逻辑地址与物理地址;利用所述FTL日志以及所述写请求日志重构FTL表;并完成固态硬盘的启动。

根据本发明第十六方面,提供了一种用于固态硬盘的装置,包括:“写”日志记录模块,用于基于向固态硬盘发出的写请求,记录该写请求所对应的用于固态硬盘的逻辑地址与物理地址;“写”日志数据帧生成模块,用于使用多个所述写请求所对应的多个用于固态硬盘的逻辑地址与物理地址,生成写请求日志数据帧;FTL日志数据帧生成模块,用于获取FTL表的部分,生成FTL日志数据帧;日志存储模块,用于在NVM(Non-Volatile Memory,非易失存储器)上存储所述写请求日志数据帧与所述FTL日志数据帧;地址记录模块,用于记录在NVM上存储所述FTL日志数据帧的地址;掉电保护模块,用于当所述固态硬盘关机或掉电时,将所记录的在NVM上存储所述FTL日志数据帧的地址,存储到NVM中;以及,日志定位模块,用于当所述固态硬盘启动时,通过NVM中存储的在NVM上存储所述FTL日志数据帧的地址,而获取FTL日志在固态硬盘上的存储位置,其中FTL日志包括多个FTL日志数据帧,每个FTL日志数据帧记录了FTL表的部分;日志获取模块,用于从所述存储位置读取FTL日志以及写请求日志;其中写请求日志包括多个写请求日志数据帧,每个写请求日志数据帧包括前一个写请求日志数据帧生成后向固态硬盘发出的多个写请求 所对应的逻辑地址与物理地址;FTL表重构模块,用于利用所述FTL日志以及所述写请求日志重构FTL表;以及启动模块,用于完成固态硬盘的启动。

附图说明

当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:

图1是现有技术的存储设备的方框图;

图2是根据本发明的实施例的FTL表的结构框图;

图3是根据本发明的实施例的“写”日志的结构框图;

图4是根据本发明的实施例的固态硬盘日志的结构框图;

图5是根据本发明的实施例的固态硬盘日志生成方法的流程图;

图6是根据本发明的又一实施例的固态硬盘日志生成方法的流程图;以及

图7是根据本发明的实施例的设备启动方法的流程图。

具体实施方式

图2是根据本发明的实施例的FTL表的结构框图。FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。

在依然又一个实施例中,在连续的内存地址空间中存储FTL表,每个FTL表条目中记录物理地址,而以每个FTL表条目自身的内存地址代表对应于物理地址的逻辑地址。FTL表条目的数量对应于固态存储设备逻辑地址空间的大小。

为了在非易失存储介质中存储FTL表的目的,将FTL表组织为数据帧。参看图2,FTL表包括数帧1、数据帧2、数据帧3……数据帧n。每个FTL表数据帧,包括多个FTL表条目。每个FTL表数据帧的大小同非易失存储介质的最小写入单位相对应(例如,页)。非易失存储介质的数据页大小通常为2KB、4KB、8KB或16KB。在一个实施例中,非易失存储介质的数据页大小为16KB,而FTL表的数据帧大小为2KB、4KB或8KB。在另一个实施例中,非易失存储介质的数据页大小为4KB,而FTL表的数据帧大小为512B、1KB或2KB。一般地,选择FTL表的数据帧大小,使得非易失存储介质的数据页大小是FTL表数据帧大小的整数倍,以便于将多个FTL表数据帧存储到为非易失存储介质的数据页。在一个例子中,FTL表包含的数帧1、数据帧2、数据帧3……数据帧n在内存中按内存地址连续存储。

在固态存储设备处理写请求时,为该写请求分配物理地址,并在FTL表中记录该写请求的逻辑地址与物理地址的对应关系。在另一个实施例中,由访问固态存储设备的主机维护FTL表,在需要向固态存储发出写请求时,为该写请求分配固态存储设备的物理地址,并在FTL表中记录该写请求的逻辑地址与物理地址的对应关系。

图3是根据本发明的实施例的“写”日志的结构框图。在固态存储设备处理写请求时,还生成“写”日志。在“写”日志中记录了写操作对应的逻辑地址与物理地址。

为了在非易失存储介质中存储“写”日志的目的,将“写”日志组织为数据帧310(参看图3)。每个“写”日志数据帧310包括多个“写”日志条目(322、324、32n)(或称“表项”)。每个“写”日志条目(322、324或32n)包括一个逻辑地址以及与之相对应的物理地址。按照接收写请求的顺序生成并在写日志数据帧中组织 “写”日志条目。因而在“写”日志中,可能存在具有相同逻辑地址和/或物理地址的“写”日志条目。

每个“写”日志数据帧的大小同非易失存储介质的最小写入单位相对应(例如,页)。非易失存储介质的数据页大小通常为2KB、4KB、8KB或16KB。在一个实施例中,非易失存储介质的数据页大小为16KB,而“写”日志的数据帧大小为2KB、4KB、8KB或16KB。在另一个实施例中,非易失存储介质的数据页大小为4KB,而“写”日志的数据帧大小为512B、1KB或2KB或4KB。一般地,选择“写”日志的数据帧大小,使得非易失存储介质的数据页大小是“写”日志数据帧大小的整数倍,以便于将一个或多个“写”日志数据帧存储到非易失存储介质的数据页。在又一个实施例中,一个或多个FTL表数据帧与一个或多个“写”日志数据帧构成非易失存储介质的一个数据页。

图4是根据本发明的实施例的固态硬盘日志的结构框图。为了在固态硬盘启动时,能够快速重建FTL表的目录,根据本发明的实施例提供固态硬盘日志410。固态硬盘日志410包括多个固态硬盘日志数据帧。在图4中将多个固态硬盘日志数据表示为数据帧1(422)、数据帧2(424)、数据帧3、数据帧4……、数据帧m(42m)。在图4的实施例中,每个固态硬盘日志数据帧包括3个FTL表数据帧与1个写日志数据帧。例如,在固态硬盘日志数据帧1(422)中包括FTL表数据帧1(432)、FT表L数据帧2(434)、FTL表数据帧3(436)与“写”日志数据帧1(438)。在固态硬盘日志数据帧2(424)中包括FTL表数据帧4(442)、FTL表数据帧5(444)、FTL表数据帧6(446)与“写”日志数据帧2(448)。在固态硬盘日志数据帧n(42m)中包括FTL表数据帧n-2(452)、FTL表数据帧n-1(454)、FTL表数据帧n(456)与“写”日志数据帧k(438)。

在根据本发明的实施例中,固态硬盘日志数据帧的大小是非易失存储介质的数据页大小的整数倍,以便于将固态硬盘日志数据帧存储到非易失存储介质的数据页。在根据本发明的另一个实施例中,非易失存储介质是MLC非易失存储介质,将固态硬盘日志数据帧存储到非易失存储介质的数据页时,使用pSLC(pseudo-SLC,伪SLC)模式或SLC模式访问非易失存储介质,以加快固态硬盘日志数据帧存储过程并获得较高的数据可靠性。

所属领域技术人员将意识到,在固态硬盘日志410的数据帧中,可包括其他数量的FTL表数据帧和/或“写”日志数据帧。也可将FTL表数据帧与“写”日志数据帧分别存储在固态硬盘的非易失存储介质中。

在根据本发明的实施例中,固态硬盘日志410的m个固态硬盘日志数据帧组织为循环队列。在向固态硬盘写入固态硬盘日志时,按顺序写入数据帧1(422)、数据帧2(424)、数据帧3、数据帧4直到数据帧m(42m)。在数据帧m(42m)写入后,需再次写入固态硬盘日志时,则再次写入数据帧1(422)。提供固态硬盘日志写指针450,指示固态硬盘日志410的最后写入位置。在固态硬盘日志写指针450存储在非易失存储介质上。在一个实施例中,固态硬盘正常工作时,将固态硬盘日志写指针450保留在内存中,而当固态硬盘关闭或掉电时,将固态硬盘日志写指针写入非易失存储介质。

在固态硬盘日志410中,包括多个FTL表数据帧。利用固态硬盘日志410中的多个FTL表数据帧,能够重建FTL表。

在根据本发明的实施例中,完整的FTL表包括n个FTL表数据帧。在固态硬盘日志410的m个固态硬盘日志数据帧中,存储了总计n个FTL表数据帧。在根据本发明的另一个实施例中,在固态硬盘日志410的m个固态硬盘日志数据帧中,存储了总计2n个FTL表数据帧。在固态硬盘日志410的多个固态硬盘日志数据帧中,按 顺序存储FTL表数据帧,例如,按照FTL表自身所在的存储地址,从小到大或从大到小地存储FTL表数据帧。在一个实施例中,在连续的内存中存储FTL表,FTL表数据帧1(432)、FTL表数据帧2(434)、FTL表数据帧3(436)、FTL表数据帧4(442)、FTL表数据帧5(444)、FTL表数据帧6(446)各自所对应的FTL表的部分在FTL表中的内存地址依次增加。在另一个实施例中,提供固态硬盘的非易失存储介质的坏块记录表,依据坏块映射表,选择可用的块存储固态硬盘日志410的m个固态硬盘数据帧。在依然另一个实施例中,为了从固态硬盘日志410中重建出完整的FTL表的目的,所属领域技术人员可采用其他的FTL表数据帧组织方式。

在根据本发明的实施例中,按照接收写请求的顺序生成并在写日志数据帧中组织“写”日志条目,并且按接收写请求的顺序生成“写”日志数据帧1(438)、“写”日志数据帧2(448)、……、“写”日志数据帧k(458)。

接下来描述根据本发明实施例的固态硬盘日志生成方法。图5是根据本发明的实施例的固态硬盘日志生成方法的流程图。在处理写请求时,需要记录写请求中逻辑地址与物理地址的对应关系(510),并相应地更新FTL表。缓存所记录的逻辑地址与物理地址的对应关系,每一条逻辑地址与物理地址的对应关系,构成一个“写”日志条目。一定数量“写”日志条目构成一个“写”日志数据帧。当缓存的多条逻辑地址与物理地址的对应关系能够构成一个“写”日志数据帧时,利用缓存的多条逻辑地址与物理地址的对应关系生成“写”日志数据帧(520)。选择FTL表的一部分生成FTL表数据帧(530)。所选择是FTL表的一部分是尚未生成过FTL表数据帧的FTL表的部分。所生成的FTL表数据帧与“写”日志数据帧构成了固态硬盘日志数据帧(例如,数据帧1(422),参见图4)。在优选实施例中,固态硬盘日志数据帧的大小对应于固态硬盘的非易失存储介质的数据页大小,从而可通过一次非易失存储介质的写操作将固态硬盘日志数据帧写入固态硬盘的非易失存储介质(540)。

根据本发明的又一个实施例,每接收到预定数量的写请求,生成一个“写”日志数据帧,其中一个“写”日志数据帧中能够容纳该预定数量的写请求所对应的逻辑地址与物理地址的映射关系。而每生成一个“写”日志数据帧,则选择FTL表的部分生成一个或多个FTL表数据帧,使得所生成的“写”日志数据帧与FTL表数据帧构成了固态硬盘日志数据帧。

根据本发明的依然又一个实施例,在处理写请求时,缓存写请求对应的逻辑地址与物理地址的对应关系,每一条逻辑地址与物理地址的对应关系,构成一个“写”日志条目。以及周期地利用所缓存的“写”日志条目生成“写”日志数据帧。以及每生成一个“写”日志数据帧,则选择FTL表的部分生成一个或多个FTL表数据帧,使得所生成的“写”日志数据帧与FTL表数据帧构成了固态硬盘日志数据帧。

根据本发明的依然又一个实施例,“写”日志数据帧与FTL表数据帧在物理上分离地存储。“写”日志数据帧的大小对应于固态硬盘的非易失存储介质的数据页大小,FTL表数据帧的大小也对应于固态硬盘的非易失存储介质的数据页大小。

根据本发明的依然又一个实施例,选择FTL表的部分生成一个或多个FTL表数据帧时,按FTL表自身的内存地址而选择FTL表的部分。例如,当第一次选择FTL的部分时,选择从地址0开始的长度为L的FTL表的部分,以构成一个或多个FTL表数据帧。而第二次选择FTL表的部分时,选择从地址L开始的长度为L的FTL表的部分,以构成一个或多个FTL表数据帧。而第N次选择FTL表的部分时,选择从地址(N-1)*L开始的长度为L的FTL表的部分,以构成一个或多个FTL表数据帧。而当选择FTL表的部分时若达到了FTL表的末尾,则继续从FTL表的头部选择FTL表的部分。以此方式,在固态硬盘日志中能够记录完整的FTL表。例如,若FTL的整体长度为n=N*L,则在第N+1次选择FTL表的部分时,选择从地址0开始长度为 L的FTL表的部分。又例如,若FTL表的整体长度为n=N*L+1,则在第N+1次选择FTL表的部分时,选择从地址N*L开始长度为1的FTL表的部分以及从地址0开始长度为L-1的FTL表的部分。依然有其他方式选择FTL表的部分,使得在固态硬盘日志中能够记录完整的FTL表,以及还能够记录在记录完整的FTL表期间所接收的全部写请求的“写”日志。

以此方式,每次向固态硬盘存储一个固态硬盘日志数据帧。即使固态硬盘掉电,也仅需向固态硬盘写入一个固态硬盘日志数据帧。从而可在备用电源有限的工作时间内,完成FTL表的存储。

所属领域技术人员将意识到,某些情况下,固态硬盘日志中不包括完整的FTL表。例如,对于新的或者空白的固态硬盘,3次选择FTL表的部分而生成FTL表数据帧后发生掉电,此时,固态硬盘日志中仅记录了3个固态硬盘日志数据帧。通过在固态硬盘日志中标记已使用的数据块和/或未使用的数据块,而识别出在固态硬盘日志中的有效数据帧,从而重建固态硬盘掉电时的FTL表。

图6是根据本发明的又一实施例的固态硬盘日志生成方法的流程图。根据图6的实施例的方法可以由固态硬盘实施,也可以由访问固态硬盘的主机实施。

在接收到写请求时(600),需要记录写请求中逻辑地址与物理地址的对应关系(610),并相应地更新FTL表(615)。缓存所记录的逻辑地址与物理地址的对应关系,每一条逻辑地址与物理地址的对应关系,构成一个“写”日志条目。一定数量“写”日志条目构成一个“写”日志数据帧。判断缓存的多条逻辑地址与物理地址的对应关系能否构成一个“写”日志数据帧(620),当缓存的多条逻辑地址与物理地址的对应关系能够构成一个“写”日志数据帧时,利用缓存的多条逻辑地址与物理地址的对应关系生成“写”日志数据帧。如果缓存的多条逻辑地址与物理地址的对应关系尚不够填充一个“写”日志数据帧时,则等待后续的写请求的到来。

当缓存的多条逻辑地址与物理地址的对应关系能够构成一个“写”日志数据帧时,还选择FTL表的一部分生成FTL表数据帧(630)。所选择是FTL表的一部分是尚未生成过FTL表数据帧的FTL表的部分。所生成的FTL表数据帧与“写”日志数据帧构成了固态硬盘日志数据帧(例如,数据帧1(422),参见图4)。在优选实施例中,固态硬盘日志数据帧的大小对应于固态硬盘的非易失存储介质的数据页大小,从而可通过一次非易失存储介质的写操作将固态硬盘日志数据帧写入固态硬盘的非易失存储介质(640)。

为了从固态硬盘中读出固态硬盘日志的目的,每次向固态硬盘的非易失存储介质写入固态硬盘日志的数据帧时,还记录固态硬盘日志数据帧在非易失存储介质上的在存储位置(650)。在一个实施例中,固态硬盘日志的m个固态硬盘日志数据帧组织为循环队列,因而通过存储最后一次向固态硬盘的非易失存储介质写入固态硬盘日志的存储位置,就能够访问完整的固态硬盘日志。在另一个实施例中,在每个固态硬盘数据帧中提供单调变化的序号,通过识别序号而获知最后一次向固态硬盘的非易失存储介质写入固态硬盘日志的存储位置。

以此方式,每次向固态硬盘存储一个固态硬盘日志数据帧。即使固态硬盘掉电,也仅需向固态硬盘写入一个固态硬盘日志数据帧。从而可在备用电源有限的工作时间内,完成固态硬盘日志数据帧的存储。

图7是根据本发明的实施例的设备启动方法的流程图。根据图7的实施例的方法可以由固态硬盘实施,也可以由访问固态硬盘的主机实施。在诸如固态硬盘的设备启动时,从非易失存储介质中的预定位置获取固态硬盘日志的存储位置(710)。根据本发明的一个实施例,非易失存储介质的预定位置记录最后存储的固态硬盘日志数据帧的存储位置。该最后存储位置之前的m个固态硬盘日志数据帧中,记录了完整 的FTL表以及相应的“写”日志。因而依据该最后存储位置可获得固态硬盘日志的起始存储位置与结束存储位置。

依据固态硬盘日志的存储位置,从非易失存储介质中读取固态硬盘日志数据帧。在一个例子中,固态硬盘日志数据帧包括FTL表数据帧与“写”日志数据帧(720)。在另一个例子中,FTL表数据帧与“写”日志数据帧在非易失存储介质上相关联的存储,若获得了FTL数据帧,则能够获得“写”日志数据帧,反之亦然。

从非易失存储介质中读取多个FTL表数据帧,这些多个FTL数据帧的每个包括FTL表的部分,而从这些多个FTL表数据帧中能够重建出完整FTL表(730)。

而在与这些多个FTL表数据帧相对应的多个“写”日志数据帧中,则完整记录了生成这些多个FTL表数据帧期间固态硬盘处理的写请求。对写请求的处理意味着对FTL表的更新。因而在步骤(730)所重建的FTL表的基础上,顺序使用多个“写”日志数据帧中记录的“写”日志数据帧条目来更新所重建的FTL表(740),则得到了最后的固态硬盘日志数据帧被写入固态硬盘的非易失存储介质时的FTL表。接下来固态硬盘设备的启动完成(750),并可利用所更新的FTL表来响应访问请求。

在根据本发明的一个实施例中,固态硬盘日志的m个固态硬盘日志数据帧组织为循环队列,通过获取最后一次向固态硬盘的非易失存储介质写入固态硬盘日志的存储位置,在循环队列中该存储位置之前的固态硬盘日志数据帧中存储了长度为n的完整FTL表。在循环队列中读取预定数量的固态硬盘日志数据帧,以获得完整的固态硬盘日志,并利用固态硬盘日志中的FTL表数据帧重建FTL表。

作为另一个例子,再次参看图4,固态硬盘日志写指针450,指示固态硬盘日志410的最后写入位置为数据帧4。在固态硬盘日志410的m个固态硬盘日志数据帧中,存储了总计n个FTL表数据帧。则在固态硬盘日志数据帧5(未示出)、固态硬盘日志数据帧6(未示出)、固态硬盘日志数据帧7(未示出)、……、固态硬盘日志数据帧m、固态硬盘日志数据帧1、……、固态硬盘日志数据帧4中,存储了完整的FTL表,并且按顺序记录存储完整的FTL表期间发生的请求的“写”日志。从循环队列中读出记录了完整的FTL表的m个固态硬盘日志数据帧,从m个固态硬盘日志数据帧中提取出3*m个FTL表数据帧,并重建出FTL表。而从m个固态硬盘日志数据帧中提取出m个“写”日志数据帧,按照m个“写”日志数据帧生成的顺序,利用m个“写”日志数据帧中记录的逻辑地址与物理地址对应关系,顺序地更新所重建的FTL表,从而得到最后的固态硬盘日志数据帧被写入固态硬盘的非易失存储介质时的FTL表。

上面已经公开了在存储设备中日志生成方法以及利用所生成的日志启动存储设备的过程。所属领域技术人员还将意识到本发明中所公开的方法或操作流程可由软件、固件、硬件及其任何组合实现。实现本发明实施例的方法或操作流程的软件、固件可由访问存储设备的主机的CPU执行,也可由集成于存储设备的嵌入式处理器或控制器执行。实现本发明实施例的方法或操作的软件、固件可存储于网络服务器、访问存储设备的主机和/或存储设备。根据本发明实施例的方法或操作流程也可由FPGA和/或ASIC实现。本发明也提供了实现所公开的方法或操作流程的电子系统和/或控制电路。

已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1