CN115328819A - 固态存储设备及写/读数据的方法 - Google Patents
固态存储设备及写/读数据的方法 Download PDFInfo
- Publication number
- CN115328819A CN115328819A CN202210990404.4A CN202210990404A CN115328819A CN 115328819 A CN115328819 A CN 115328819A CN 202210990404 A CN202210990404 A CN 202210990404A CN 115328819 A CN115328819 A CN 115328819A
- Authority
- CN
- China
- Prior art keywords
- physical
- logical
- index
- partition
- data
- 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
- 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
-
- 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
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及固态存储设备领域,尤其涉及一种固态存储设备及写/读数据的方法,包括:逻辑地址空间和物理地址空间;将逻辑地址空间按照预定大小划分为若干逻辑块,将所有逻辑块按照预定的规律划分为不同的逻辑分区;将物理地址空间的多个物理D I E合并为一个物理分区,一个物理分区与一个LUN相映射;物理地址空间对应的LUN索引为逻辑分区索引和物理分区索引确定,逻辑分区索引由逻辑地址空间的逻辑地址确定,物理分区索引由物理地址空间的物理D I E确定。本申请可以限制大容量存储设备的FTL表的指数级增大,从而缩短了大容量存储设备异常掉电的恢复时间。
Description
技术领域
本申请涉及固态存储设备领域,尤其涉及一种固态存储设备及写/读数据的方法。
背景技术
随着科技的进步,对于电子设备的存储能力和反应速度提出了越来越高的要求。图1示出了现有技术中的SSD(Solid Storage Device,固态存储设备)的框图。
固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(SerialAdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer SystemInterface,小型计算机***接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速***组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(Non-VolatileMemory,非易失存储器)芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是FPGA(Field-programmable gatearray,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理主机IO命令。控制部件104还耦合到DRAM110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的主机IO命令的数据。
控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。每个逻辑单元具有逻辑单元号(LogicUnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分,后文出现的LUN均表示逻辑单元的简称。
固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个物理管芯(DIE)或逻辑单元(LUN,Logic UNit)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。物理页中可以包括多个数据帧(data frame),数据帧具有指定的尺寸,例如4096或4416字节。
SSD固件在运行时需要利用FTL(Flash Translation Layer,闪存转换层)来维护逻辑地址(LBA,32位)和物理地址(PBA,32位)的映射关系,逻辑地址构成了操作***等上层软件所感知到的固态存储设备的存储空间,物理地址是用于访问固态存储设备的物理存储单元的地址。这张FTL映射关系表保存在SSD的DRAM中。由于DRAM属于易失性存储,设备掉电以后映射表会丢失,所以需要固件在重新上电后恢复此映射表,以保证原始用户数据不会丢失。当发生意外断电时,由电源管理单元120管理备用电源125向存储设备提供临时的电能,用于备份元数据以及处理尚未完成的命令。备用电源125包括超级电容、铝电容、钽聚合物电容、锂电池等。
现有技术中,在固态存储设备的每个物理页中附加地存储该物理页所对应的逻辑地址。在固态存储设备启动时,需要访问所有物理页,以获得每个物理页所对应的逻辑地址,在DRAM中重建FTL表。
SSD的存储介质是闪存,而闪存技术随着3D堆叠技术的发展,容量密度也在不断提升,例如基于176层闪存堆叠技术的SSD,单盘可以实现32TB甚至更大容量。而FTL表的大小和SSD的容量成正比,所以SSD大容量的同时会带来一个问题,那就是FTL表会更大,例如32TB的SSD对应FTL表的大小约为32GB。
逻辑地址LBA和物理地址PBA分别为32位,将FTL表划分为64份(64个数据流),当某一份数据流上对应的逻辑地址有新的写命令发生时,固件会记录日志,每一份数据流都有自己独立的更新日志。固件在恢复映射表时,可以利用多个CPU并发操作,按照日志记录的先后顺序,以打补丁的方式恢复各个数据流。
随着SSD容量的增大,需要管理的逻辑地址和物理地址也随之增多。以32TB的SSD为例,固件内部管理的逻辑地址以4KB为单位,即每个固件内部逻辑地址管理一个4K大小的数据,32位逻辑地址最多能管理4G*4K=16TB的数据,如需管理32TB数据,32位的逻辑地址已经不能满足需求,需要扩充至64位的逻辑地址。同样,32TB的SSD与16TB的SSD相比,物理块的数量也翻了一倍,如果仅简单的将32位物理地址也扩充至64位物理地址,会大大增加FTL表的大小(增加至4倍),从而增加所需DRAM的空间,提高成本。同时,FTL表的增大,每份数据流也随之增大,各个数据流所独有的更新日志也会随之增多,大大增加恢复数据流的时间,从而影响整个SSD的上电恢复时间。
因此,如何缩短大容量存储设备异常掉电的恢复时间,是目前本领域技术人员需要解决的技术问题。
发明内容
本申请提供了一种固态存储设备及写/读数据的方法,可以限制大容量存储设备的FTL表的指数级增大,从而缩短了大容量存储设备异常掉电的恢复时间。
为解决上述技术问题,本申请提供如下技术方案:
一种固态存储设备,包括:逻辑地址空间和物理地址空间;将逻辑地址空间按照预定大小划分为若干逻辑块,将所有逻辑块按照预定的规律划分为不同的逻辑分区;将物理地址空间的多个物理DIE合并为一个物理分区,一个物理分区与一个LUN相映射;物理地址空间对应的LUN索引为逻辑分区索引和物理分区索引确定,逻辑分区索引由逻辑地址空间的逻辑地址确定,物理分区索引由物理地址空间的物理DIE确定。
如上所述的固态存储设备,其中,优选的是,每个逻辑分区由独立的CPU管理。
如上所述的固态存储设备,其中,优选的是,将逻辑分区索引作为物理地址的最高有效位,将物理分区LUN索引作为物理地址的次高有效位;将计算得到的LUN索引在物理地址中覆盖物理分区索引,并将物理地址中逻辑分区索引所占用的比特位设置为物理地址的无效位。
如上所述的固态存储设备,其中,优选的是,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引。
如上所述的固态存储设备,其中,优选的是,32TB SSD的物理地址PBA的0--22位记录的是块×页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引。
如上所述的固态存储设备,其中,优选的是,还包括FTL表;FTL表被划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
一种写数据的方法,包括如下步骤:响应于接收到写命令,依据写命令指示的逻辑地址分配存储写命令指示的数据的物理空间;依据写命令指示的逻辑地址,得到逻辑地址所属的逻辑分区;依据逻辑分区索引和存储写命令指示的数据的物理空间所属的物理分区索引,得到LUN索引;将LUN索引、数据帧索引和块×页记录于物理地址中;将逻辑地址和物理地址的映射关系记录于FTL表中,以更新FTL表;响应于向分配的物理空间中写入数据完毕,写命令完成。
如上所述的写数据的方法,其中,优选的是,还包括:将FTL表划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
一种读数据的方法,包括如下步骤:响应于接收到读命令,依据读命令指示的逻辑地址查询FTL表得到物理地址,其中物理地址中记录有LUN索引、数据帧索引和块×页;依据读命令指示的逻辑地址,得到逻辑地址所属的逻辑分区;依据逻辑分区索引和LUN索引,得到物理分区索引;在物理分区索引所指示的物理分区中,依据块×页和数据帧索引读出读命令指示的数据。
如上所述的读数据的方法,其中,优选的是,还包括:将FTL表划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
相对上述背景技术,本发明所提供固态存储设备及写/读数据的方法,可以限制大容量存储设备的FTL表的指数级增大,从而缩短了大容量存储设备异常掉电的恢复时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1示出了现有技术中的固态存储设备的框图;
图2示出了相关实施例中的固态存储设备的逻辑地址的格式示意图;
图3示出了相关实施例中的固态存储设备的物理地址的格式示意图;
图4是本申请实施例提供的固态存储设备的逻辑地址的格式示意图;
图5是本申请实施例提供的固态存储设备的物理地址的格式示意图;
图6是本申请实施例提供的写数据的方法的流程图;
图7是本申请实施例提供的读数据的方法的流程图;
图8是本申请实施例提供的针对FTL表的数据流的划分示意图;
图9A是本申请实施例提供的CPU并发处理64份数据流的示意图;
图9B是本申请实施例提供的CPU并发处理128份数据流的示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
固件内部管理的逻辑地址LBA是以4K为单位的,即每个固件内部逻辑地址LBA管理一个4K大小的数据,逻辑地址LBA对应的物理地址PBA也是32位格式表征,如果按照传统FTL表映射实现,大容量SSD(例如:16TB、32TB SSD)和小容量SSD(例如:8TB SSD)的物理地址PBA具有相同的格式。
请参阅图2,图2示出了相关实施例中的固态存储设备的逻辑地址的格式示意图。
8TB SSD的逻辑地址(LBA)空间具有n个逻辑块,分别是逻辑块LBA0、逻辑块LBA1、逻辑块LBA2、逻辑块LBA3、……、逻辑块LBAn。当然,16TB SSD和32TB SSD的逻辑地址(LBA)空间也和8TB SSD的逻辑地址(LBA)空间形式相同。
请参阅图3,图3示出了相关实施例中几种容量固态存储设备的物理地址的格式示意图。
8TB SSD的物理地址PBA的0-20位记录的是块×页,8TB SSD的物理地址PBA的21-24位记录的是数据帧索引,8TB SSD的物理地址PBA的25-31位记录的是LUN索引。其中“块×页”表示的是存储空间中以块和页为单位的存储空间,具体为进行数据读写时以页为单位,进行数据擦除时以块(多个页组成)为单位。
16TB SSD的物理地址PBA的0-21位记录的是块×页,16TB SSD的物理地址PBA的22-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引。
32TB SSD的物理地址PBA的0-22位记录的是块×页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引。
由于功耗的限制,SSD同时并发操作的LUN的个数最大为128个(32位表征,2的7次方=128)。而8TB SSD的物理DIE的个数也为128个,可同时并发操作的LUN的最大数量与物理DIE的数量相同,均为128个,能够满足映射要求。但是,16TB SSD的物理DIE的个数为256个,32TBSSD的物理DIE的个数为512个,可同时并发操作的LUN的最大数量与物理DIE的数量不同,物理DIE的数量已经超过可同时并发操作的LUN的最大数量。
为了避免大容量SSD(例如:16TB、32TB)的FTL表的大小出现较大的增大,将大容量SSD的逻辑地址LBA和物理地址PBA均保持在相同位数(如32位),并且将大容量SSD的可同时并发操作的LUN的最大数量与物理DIE的数量保持相同。请参阅图4,图4是本申请实施例提供的固态存储设备的逻辑地址的格式示意图。
逻辑地址(LBA)空间是连续的地址空间,固件将逻辑地址(LBA)空间按照预定大小划分为若干相同大小的区域,每个区域被称为逻辑块。作为一个例子,将逻辑地址空间按照512KB大小划分为n份,形成n个相同大小的逻辑块。例如:形成逻辑块LBA0、……、逻辑块LBAn。
按照预定的规律将若干个逻辑块划分为不同的逻辑分区。例如:将每32个逻辑块划分为一个逻辑分区。作为一个例子,将上述划分的逻辑块LBA0、……、逻辑块LBA31划分为逻辑分区0,将逻辑块LBA32、……、逻辑块LBA63划分为逻辑分区1,将逻辑块LBA64、……、逻辑块LBA95划分为逻辑分区2,将逻辑块LBA96、……、逻辑块LBA127划分为逻辑分区3,……,以此类推,直至将逻辑块LBAn划分至最后一个逻辑分区N。还作为一个例子,在16TB SSD中,LBA 0~127划分为逻辑分区0,LBA 128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区0,LBA 384~511划分为逻辑分区1,LBA 512~639划分为逻辑分区0;在32TB SSD中,LBA 0~127划分为逻辑分区0,LBA 128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区2,LBA 384~511划分为逻辑分区3,LBA 512~639划分为逻辑分区0。
每个逻辑分区均由独立的CPU管理,这意味着所有逻辑分区可同时并发操作。作为一个例子,CPU0管理逻辑分区0,CPU1管理逻辑分区1,CPU2管理逻辑分区2,CPU3管理逻辑分区3,……,CPUm管理逻辑分区N。
请参阅图5,图5是本申请实施例提供的固态存储设备的物理地址的格式示意图。
为了将大容量SSD的物理地址PBA限制在预定的位数(如:32位),物理地址PBA中的LUN索引所占的比特位需要相应的减少,并且物理地址PBA中的LUN索引还需要能反映出物理分区。
通过逻辑地址LBA计算出逻辑分区索引,例如:根据逻辑地址LBA30得到逻辑分区索引为0,根据逻辑地址LBA60得到逻辑分区索引为1,根据逻辑地址LBA90得到逻辑分区索引为3。通过逻辑分区索引和物理分区索引计算得到物理地址中最终记录的LUN索引。作为一个例子,将逻辑分区索引作为物理地址的最高有效位(MSB,Most significant bit),将物理分区索引作为物理地址的次高有效位,然后通过逻辑分区索引和物理分区索引计算出LUN索引,并将计算得到的LUN索引在物理地址中覆盖物理分区索引,并将物理地址中逻辑分区索引所占用的比特位设置为无效位,从而可以将物理地址控制32位。作为另一个例子,LUN索引(例如:0-127)=逻辑分区索引*可同时并发操作的LUN的最大个数(例如:64或32)+物理分区索引。通过上述方法,可以使物理地址仍然保持在32位,从而控制FTL表只按照逻辑空间的增加而增加,避免FTL表因物理地空间的增加而增加,也就在一定程度上限制大容量SSD的FTL表的增大。
将大容量SSD的多个物理DIE合并为一个物理分区一个物理分区与一个LUN相映射,从而使得一个LUN对应的物理DIE较多,进而在LUN的个数不变的情况下,每个LUN中所对应的块的数量增加,满足了固件处理最大LUN的个数限制。另外,在每个LUN中所包含的块的数量增加的情况下,相应的物理地址中的块×页所占用的比特位也相应的增加,那么就需要减少物理地址中的其他部分所占用的比特位。
作为一个例子,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于26-31位,逻辑分区索引被临时记录于32位,通过被临时记录于26-31位的物理分区索引和被临时记录于32位的逻辑分区索引得到LUN索引被最终记录于26-31位,从而使得形成的16TB SSD的物理地址PBA保持在32位。
作为另一个例子,32TB SSD的物理地址PBA的0--22位记录的是块×页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于27-31位,逻辑分区索引被临时记录于31-33位,通过被临时记录于27-31位的物理分区索引和被临时记录于31-33位的逻辑分区索引得到的LUN索引被最终记录于27-31位,从而使得形成的32TB SSD的物理地址PBA保持在32位。
由于本申请通过增加逻辑分区和物理分区,可以精简大容量物理地址长度,在SSD容量增大的情况下,物理地址保持在原来位数,控制FTL表可以只按逻辑地址的增加而增加,可以在一定程度上限制大容量SSD的FTL表的增大,因此可以避免因FTL表增大使所需的DRAM空间增大,从而降低大容量SSD的成本。另外,还由于本申请可以在一定程度上限制大容量SSD的FTL表的增大,因此在固件恢复FTL表时,可以避免每份数据流的增大,也避免各个数据流所独有的更新日志增多,大大缩短大容量SSD异常掉电后的恢复时间。
请参阅图6,图6是本申请实施例提供的写数据的方法的流程图。
本申请提供了一种写数据的方法,包括如下步骤:
步骤S610、响应于接收到写命令,依据写命令指示的逻辑地址分配存储写命令指示的数据的物理空间。
存储设备的固件获取主机提供的写命令,写命令指示了逻辑地址以及待写入的数据。并且,存储设备的固件还依据逻辑地址为写命令指示的待写入的数据分配物理空间,将写命令指示的待写入的数据写入该物理空间中,以存储该数据。
步骤S620、依据写命令指示的逻辑地址,得到逻辑地址所属的逻辑分区。
逻辑地址(LBA)空间是连续的地址空间,固件将逻辑地址(LBA)空间按照预定大小划分为若干相同大小的区域,每个区域被称为逻辑块。作为一个例子,将逻辑地址空间按照512KB大小划分为n份,形成n个相同大小的逻辑块。例如:形成逻辑块LBA0、……、逻辑块LBAn。
按照预定的规律将若干个逻辑块划分为不同的逻辑分区。例如:将每32个逻辑块划分为一个逻辑分区。作为一个例子,将上述划分的逻辑块LBA0、……、逻辑块LBA31划分为逻辑分区0,将逻辑块LBA32、……、逻辑块LBA63划分为逻辑分区1,将逻辑块LBA64、……、逻辑块LBA95划分为逻辑分区2,将逻辑块LBA96、……、逻辑块LBA127划分为逻辑分区3,……,直至将逻辑块LBAn划分至最后一个逻辑分区N。还作为一个例子,在16TB SSD中,LBA 0~127划分为逻辑分区0,可以简化表示为LBA 0~127:逻辑分区0,同理,LBA128~255:逻辑分区1,LBA 256~383:逻辑分区0,LBA 384~511:逻辑分区1,LBA 512~639:逻辑分区0;在32TB SSD中,LBA 0~127:逻辑分区0,LBA 128~255:逻辑分区1,LBA 256~383:逻辑分区2,LBA 384~511:逻辑分区3,LBA 512~639:逻辑分区0。
存储设备的固件接收到主机提供的写命令后,还依据预定的规律通过逻辑地址得到逻辑地址所属的逻辑分区。
步骤S630、依据逻辑分区索引和存储写命令指示的数据的物理空间所属的物理分区索引,得到LUN索引。
将大容量的存储设备的一个或多个物理DIE合并为一个物理分区一个物理分区与一个LUN相映射,从而使得一个LUN对应的物理DIE较多,进而在LUN的个数不变的情况下,每个LUN中所包含的块的数量增加,满足了固件处理最大LUN的个数限制。
存储设备的固件依据写命令指示的逻辑地址分配存储写命令所指示的数据的物理空间。由于本申请将存储设备的一个或多个物理DIE合并为一个物理分区,一个物理分区对应一个LUN所以依据写命令所分配的物理空间必然属于某一物理分区,对应某一LUN,某一LUN必然属于某一逻辑分区,因此本申请中在所分配的物理空间的物理地址PBA中记录了LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的。
步骤S640、将LUN索引、数据帧索引和块×页记录于物理地址中。
作为一个例子,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于26-31位,逻辑分区索引被临时记录于32位,通过被临时记录于26-31位的物理分区索引和被临时记录于32位的逻辑分区索引得到的LUN索引被最终记录于26-31位,从而使得形成的16TB SSD的物理地址PBA保持在32位。
作为又一个例子,32TB SSD的物理地址PBA的0-22位记录的是块和页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引,其中LUN索引通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于27-31位,逻辑分区索引被临时记录于31-33位,通过被临时记录于27-31位的物理分区索引和被临时记录于31-33位的逻辑分区索引得到的LUN索引被最终记录于27-31位,从而使得形成的32TB SSD的物理地址PBA保持在32位。
步骤S650、将逻辑地址和物理地址的映射关系记录于FTL表中,以更新FTL表。
将写命令指示的逻辑地址以及依据逻辑地址分配的物理空间的物理地址记录于FTL表中,其中物理地址中记录有LUN索引、数据帧索引和块×页的物理地址。待将该写命令指示的逻辑地址和分配的物理空间的物理地址记录于FTL表中后,完成对FTL表的更新。
步骤S660、响应于向分配的物理空间中写入数据完毕,写命令完成。
将写命令所指示的数据存储至分配的物理空间后,以及将逻辑地址和物理地址的映射关系记录于FTL表中后,存储设备的固件向主机发送写命令完成的信息。
请参阅图7,图7是本申请实施例提供的读数据的方法的流程图。
本申请提供了一种读数据的方法,包括如下步骤:
步骤S710、响应于接收到读命令,依据读命令指示的逻辑地址查询FTL表得到物理地址,其中物理地址中记录有LUN索引、数据帧索引和块×页。
存储设备的固件获取主机提供的读命令,读命令指示了逻辑地址以及待读取的数据。并且,由于FTL表中记录逻辑地址和物理地址的映射关系,因此存储设备的固件还依据逻辑地址查询FTL表,得到待读取数据存储的物理地址,其中物理地址中记录有LUN索引、数据帧索引和块×页。
作为一个例子,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于26-31位,逻辑分区索引被临时记录于32位,通过被临时记录于26-31位的物理分区索引和被临时记录于32位的逻辑分区索引得到的LUN索引被最终记录于26-31位,从而使得形成的16TB SSD的物理地址PBA保持在32位。
作为又一个例子,32TB SSD的物理地址PBA的0-22位记录的是块和页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引,其中LUN索引通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于27-31位,逻辑分区索引被临时记录于31-33位,通过被临时记录于27-31位的物理分区索引和被临时记录于31-33位的逻辑分区索引得到的LUN索引被最终记录于27-31位,从而使得形成的32TB SSD的物理地址PBA保持在32位。
步骤S720、依据读命令指示的逻辑地址,得到逻辑地址所属的逻辑分区。
逻辑地址(LBA)空间是连续的地址空间,固件将逻辑地址(LBA)空间按照预定大小划分为若干相同大小的区域,每个区域被称为逻辑块。作为一个例子,将逻辑地址空间按照512KB大小划分为n份,形成n个相同大小的逻辑块。例如:形成逻辑块LBA0、……、逻辑块LBAn。
按照预定的规律将若干个逻辑块划分为不同的逻辑分区。例如:将每32个逻辑块划分为一个逻辑分区。作为一个例子,将上述划分的逻辑块LBA0、……、逻辑块LBA31划分为逻辑分区0,将逻辑块LBA32、……、逻辑块LBA63划分为逻辑分区1,将逻辑块LBA64、……、逻辑块LBA95划分为逻辑分区2,将逻辑块LBA96、……、逻辑块LBA127划分为逻辑分区3,……,以此类推,直至将逻辑块LBAn划分至最后一个逻辑分区N。还作为一个例子,在16TB SSD中,LBA 0~127划分为逻辑分区0,LBA 128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区0,LBA 384~511划分为逻辑分区1,LBA 512~639划分为逻辑分区0;在32TB SSD中,LBA 0~127划分为逻辑分区0,LBA 128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区2,LBA 384~511划分为逻辑分区3,LBA 512~639划分为逻辑分区0。
存储设备的固件接收到主机提供的读命令后,还依据预定的规律通过逻辑地址得到逻辑地址所属的逻辑分区。
步骤S730、依据逻辑分区索引和LUN索引,得到物理分区索引。
由于LUN索引是通过物理分区索引和逻辑分区索引得到的,因此根据逻辑分区索引和LUN索引,得到物理分区索引。其中,一个物理分区是大容量的存储设备的一个或多个物理DIE合并而成的。
由于本申请的一个LUN是与一个物理分区相映射,所以使得一个LUN对应的物理DIE较多,进而在LUN的个数不变的情况下,每个LUN中所包含的块的数量增加,满足了固件处理最大LUN的个数限制。
步骤S740、在物理分区索引所指示的物理分区中,依据块×页和数据帧索引读出读命令指示的数据。
储存设备的固件在得到物理分区索引、块×页和数据帧索引后,查找到相应的物理分区,在该物理分区中查找到相应的块×页,在该块×页中查找到相应的数据帧,然后将查找到的数据帧作为待读出数据,提供给主机,从而完成该读命令。
本申请提供了一种固态存储设备,包括:逻辑地址空间和物理地址空间。
其逻辑地址空间被按照预定大小划分为若干逻辑块,所有逻辑块按照预定的规律划分为不同的逻辑分区,逻辑分区索引由逻辑地址空间的逻辑地址确定。
逻辑地址(LBA)空间是连续的地址空间,固件将逻辑地址(LBA)空间按照预定大小划分为若干相同大小的区域,每个区域被称为逻辑块。作为一个例子,将逻辑地址空间按照512KB大小划分为n份,形成n个相同大小的逻辑块。例如:形成逻辑块LBA0、……、逻辑块LBAn。
按照预定的规律将若干个逻辑块划分为不同的逻辑分区。例如:将每32个逻辑块划分为一个逻辑分区。作为一个例子,将上述划分的逻辑块LBA0、……、逻辑块LBA31划分为逻辑分区0,将逻辑块LBA32、……、逻辑块LBA63划分为逻辑分区1,将逻辑块LBA64、……、逻辑块LBA95划分为逻辑分区2,将逻辑块LBA96、……、逻辑块LBA127划分为逻辑分区3,……,以此类推,直至将逻辑块LBAn划分至最后一个逻辑分区N。
还作为一个例子,在16TB SSD中,LBA 0~127划分为逻辑分区0,LBA128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区0,LBA 384~511划分为逻辑分区1,LBA 512~639划分为逻辑分区0;在32TB SSD中,LBA 0~127划分为逻辑分区0,LBA 128~255划分为逻辑分区1,LBA 256~383划分为逻辑分区2,LBA 384~511划分为逻辑分区3,LBA 512~639划分为逻辑分区0。
通过逻辑地址LBA计算出逻辑分区索引,例如:根据逻辑地址LBA30得到逻辑分区索引为0,根据逻辑地址LBA60得到逻辑分区索引为1,根据逻辑地址LBA90得到逻辑分区索引为3。
每个逻辑分区均由独立的CPU管理,这意味着所有逻辑分区可同时并发操作。作为一个例子,CPU0管理逻辑分区0,CPU1管理逻辑分区1,CPU2管理逻辑分区2,CPU3管理逻辑分区3,……,CPUm管理逻辑分区N。
物理地址空间的多个物理DIE合并为一个物理分区,一个物理分区与一个LUN相映射。物理分区索引由物理地址空间的物理DIE确定,即物理分区索引由该物理分区中的所有物理DIE的索引确定。物理地址空间对应的LUN索引为逻辑分区索引和物理分区索引确定。
可选的,将逻辑分区索引作为物理地址的最高有效位(MSB,Most significantbit),将物理分区索引作为物理地址的次高有效位,然后通过逻辑分区索引和物理分区索引计算出LUN索引,并将计算得到的LUN索引在物理地址中覆盖物理分区索引,并将物理地址中逻辑分区索引所占用的比特位设置为无效位,从而可以将物理地址控制32位。作为另一个例子,LUN索引(例如:0-127)=逻辑分区索引*可同时并发操作的LUN的最大个数(例如:64或32)+物理分区索引。
作为一个例子,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于26-31位,逻辑分区索引被临时记录于32位,通过被临时记录于26-31位的物理分区索引和被临时记录于32位的逻辑分区索引得到LUN索引被最终记录于26-31位,从而使得形成的16TB SSD的物理地址PBA保持在32位。
作为另一个例子,32TB SSD的物理地址PBA的0--22位记录的是块×页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引,其中LUN索引是通过物理分区索引和逻辑分区索引得到的,物理分区索引被临时记录于27-31位,逻辑分区索引被临时记录于31-33位,通过被临时记录于27-31位的物理分区索引和被临时记录于31-33位的逻辑分区索引得到的LUN索引被最终记录于27-31位,从而使得形成的32TB SSD的物理地址PBA保持在32位。
上述逻辑地址及物理地址记录于FTL表中,物理地址中记录有LUN索引、数据帧索引和块×页的物理地址。本申请的FTL表还被划分为多个数据流并发单元,划分的数据流并发单元的数量与固态存储设备的容量呈正比,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理。这样,本申请提供的固态存储设备的每个CPU上处理的日志数据就较为均衡,从而使得整个SSD上电恢复时间总体较短。
请参阅图8,图8是本申请实施例提供的针对FTL表的数据流的划分示意图。
将FTL表划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理。其中,划分的数据流并发单元的数量与SSD的容量呈正比,也就是SSD的容量较大,则其FTL表划分的数据流并发单元的数量较多,SSD的容量较小,则FTL表划分的数据流并发单元的数量较少。
作为一个例子,将16TBSSD的FTL表划分为64份(64个数据流Stream并发单元),例如:数据流并发单元1、数据流并发单元2、…、数据流并发单元64。由于16TB SSD的FTL表的大小为16GB,若按照64分来划分,每份数据流并发单元的大小会是16GB/64=250MB。
作为另一个例子,将32TB SSD的FTL表划分为64份(64个数据流并发单元),例如:数据流并发单元1、数据流并发单元2、…、数据流并发单元64。由于32TB SSD的FTL表的大小为32GB,若按照64份来划分,每份数据流并发单元的大小会是32GB/64=500MB。
将32TB SSD的FTL表划分为128份(128个数据流并发单元),例如:数据流并发单元1、数据流并发单元2、…、数据流并发单元128。由于32TB SSD的FTL表的大小为32GB,若按照128份来划分,每份数据流并发单元的大小会是32GB/128=250MB。这样,每份数据流的大小不变,所管理的逻辑地址范围也不变,当有新的写发生时,每份数据流上记录的日志数量也不会有明显变化。减少数据流上记录的日志数量,可以减少大容量SSD上电恢复时间。
异常上电恢复时,多个CPU会并行恢复各个数据流并发单元,由于数据流并发单元的个数远多于CPU的个数,所以会出现多个数据流并发单元在一个CPU上排队等待的情况。那么,将32TB SSD的FTL表划分为128份相较于划分为64份,每份数据流并发单元记录的日志数量较少,每个CPU上处理的日志数据就较为均衡,从而使得整个SSD上电恢复时间总体较短。
基于上述,一方面,通过增加FTL分区,解决因为FTL表大小增加,PBA地址位表征不足问题;另一方面,增加FTL表数据流数量,减少在有新的写命令时各个数据流记录日志的数量,提高上电恢复CPU处理并发度,保证FTL表重构并发处理单元的负载均衡。综合两方面优化,使得对于大容量SSD在异常掉电的情况下,也能保证较短恢复时间,帮助业务快速恢复。请参阅图9A,图9A是本申请实施例提供的CPU并发处理64份数据流的示意图。
作为一个例子,将32TB SSD的FTL表划分为64份数据流并发单元,CPU0处理数据流并发单元10(图中简单标记为数据流10,后文同理)、数据流并发单元18,CPU1处理数据流并发单元11、数据流并发单元21,CPU2处理数据流并发单元12、数据流并发单元30,CPU3处理数据流并发单元13、数据流并发单元43,CPU4处理数据流并发单元14、数据流并发单元49,CPU5处理数据流并发单元15、数据流并发单元60。数据流并发单元21的较大,因此在其他数据流单元处理完成后,CPU1还会持续处理数据流并发单元21,从而整个SSD上电恢复时间总体较长。
请参阅图9B,图9B是本申请实施例提供的CPU并发处理128份数据流的示意图。
作为另一个例子,将32TB SSD的FTL表划分为128份数据流并发单元,CPU0处理数据流并发单元10、数据流并发单元18、数据流并发单元30、数据流并发单元39,CPU1处理数据流并发单元11、数据流并发单元21、数据流并发单元31、数据流并发单元42,CPU2处理数据流并发单元12、数据流并发单元25、数据流并发单元33、数据流并发单元43,CPU3处理数据流并发单元13、数据流并发单元26、数据流并发单元34、数据流并发单元50,CPU4处理数据流并发单元14、数据流并发单元27、数据流并发单元37、数据流并发单元56,CPU5处理数据流并发单元15、数据流并发单元28、数据流并发单元38、数据流并发单元60。虽然,数据流并发单元42和数据流并发单元43也较大,但是由于FTL表划分的份数较多,所以每个数据流并发单元的大小均不是很大,因此CPU1持续处理数据流并发单元42和CPU2持续处理数据流并发单元43的时间均较短,从而整个SSD上电恢复时间总体较短。
本申请限制大容量SSD的FTL表的指数级增大,避免了所需的DRAM空间增大,节省了成本。另外,本申请可以在一定程度上限制大容量SSD的FTL表的增大,并且还使得每份数据流减小,因此避免了各个数据流所独有的更新日志增多,大大缩短了大容量SSD异常掉电后的恢复时间,帮助业务部署快速恢复,满足了市场需求。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (10)
1.一种固态存储设备,其特征在于,包括:逻辑地址空间和物理地址空间;
将逻辑地址空间按照预定大小划分为若干逻辑块,将所有逻辑块按照预定的规律划分为不同的逻辑分区;
将物理地址空间的多个物理DIE合并为一个。
2.根据权利要求1所述的固态存储设备,其特征在于,每个逻辑分区由独立的CPU管理。
3.根据权利要求1或2所述的固态存储设备,其特征在于,将逻辑分区索引作为物理地址的最高有效位,将物理分区LUN索引作为物理地址的次高有效位;
将计算得到的LUN索引在物理地址中覆盖物理分区LUN索引,并将物理地址中逻辑分区索引所占用的比特位设置为物理地址的无效位。
4.根据权利要求3所述的固态存储设备,其特征在于,16TB SSD的物理地址PBA的0-22位记录的是块×页,16TB SSD的物理地址PBA的23-25位记录的是数据帧索引,16TB SSD的物理地址PBA的26-31位记录的是LUN索引。
5.根据权利要求3所述的固态存储设备,其特征在于,32TB SSD的物理地址PBA的0--22位记录的是块×页,32TB SSD的物理地址PBA的23-26位记录的是数据帧索引,32TB SSD的物理地址PBA的27-31位记录的是LUN索引。
6.根据权利要求1或2所述的固态存储设备,其特征在于,还包括:FTL表;
FTL表被划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;
其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
7.一种写数据的方法,其特征在于,包括如下步骤:
响应于接收到写命令,依据写命令指示的逻辑地址分配存储写命令指示的数据的物理空间;
依据写命令指示的逻辑地址,得到逻辑地址所属的逻辑分区;
依据逻辑分区索引和存储写命令指示的数据的物理空间所属的物理分区索引,得到LUN索引;
将LUN索引、数据帧索引和块×页记录于物理地址中;
将逻辑地址和物理地址的映射关系记录于FTL表中,以更新FTL表;
响应于向分配的物理空间中写入数据完毕,写命令完成。
8.根据权利要求7所述的写数据的方法,其特征在于,还包括:
将FTL表划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;
其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
9.一种读数据的方法,其特征在于,包括如下步骤:
响应于接收到读命令,依据读命令指示的逻辑地址查询FTL表得到物理地址,其中物理地址中记录有LUN索引、数据帧索引和块×页;
依据读命令指示的逻辑地址,得到逻辑地址所属的逻辑分区;
依据逻辑分区索引和LUN索引,得到物理分区索引;
在物理分区索引所指示的物理分区中,依据块×页和数据帧索引读出读命令指示的数据。
10.根据权利要求8所述的读数据的方法,其特征在于,还包括:
将FTL表划分为多个数据流并发单元,每个数据流并发单元中包含有多个数据流,一个数据流并发单元中的所有数据流在一个CPU上被处理;
其中,划分的数据流并发单元的数量与固态存储设备的容量呈正比。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210990404.4A CN115328819A (zh) | 2022-08-18 | 2022-08-18 | 固态存储设备及写/读数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210990404.4A CN115328819A (zh) | 2022-08-18 | 2022-08-18 | 固态存储设备及写/读数据的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115328819A true CN115328819A (zh) | 2022-11-11 |
Family
ID=83924721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210990404.4A Pending CN115328819A (zh) | 2022-08-18 | 2022-08-18 | 固态存储设备及写/读数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115328819A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119677A1 (zh) * | 2022-12-08 | 2024-06-13 | 深圳大普微电子科技有限公司 | 物理地址映射方法及组件,数据处理方法及组件 |
-
2022
- 2022-08-18 CN CN202210990404.4A patent/CN115328819A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024119677A1 (zh) * | 2022-12-08 | 2024-06-13 | 深圳大普微电子科技有限公司 | 物理地址映射方法及组件,数据处理方法及组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8166258B2 (en) | Skip operations for solid state disks | |
CN106681931B (zh) | 数据储存设备及其操作方法 | |
US8166233B2 (en) | Garbage collection for solid state disks | |
US8850114B2 (en) | Storage array controller for flash-based storage devices | |
US8904095B2 (en) | Data storage device and operating method thereof | |
US20130073798A1 (en) | Flash memory device and data management method | |
CN108228473B (zh) | 通过动态地传送存储器范围分配的负载平衡的方法及*** | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
TW201040719A (en) | Solid state memory formatting | |
WO2012050934A2 (en) | Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol | |
JP2012515954A (ja) | 論理アドレスオフセット | |
US11086772B2 (en) | Memory system performing garbage collection operation and operating method of memory system | |
CN109144899B (zh) | 用于管理表恢复的方法 | |
KR20210028729A (ko) | 논리적 대 물리적 테이블 프래그먼트들 | |
KR20220022092A (ko) | 존 구획 네임스페이스를 갖는 호스트 관리 하드웨어 압축 | |
US11875036B2 (en) | Computing system including host and storage system and having increased write performance | |
TW202314471A (zh) | 儲存裝置及其操作方法 | |
CN111737160A (zh) | 存储管理中多个副本的优化处理 | |
CN115328819A (zh) | 固态存储设备及写/读数据的方法 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
KR20210156090A (ko) | 저장 장치 및 그 동작 방법 | |
CN110968527B (zh) | Ftl提供的缓存 | |
US11314428B1 (en) | Storage system and method for detecting and utilizing wasted space using a file system | |
US20220283912A1 (en) | Storage device, operating method of storage device, and electronic device including storage device | |
WO2018041258A1 (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 |