CN117992360A - 存储系统及存储方法 - Google Patents
存储系统及存储方法 Download PDFInfo
- Publication number
- CN117992360A CN117992360A CN202311873089.8A CN202311873089A CN117992360A CN 117992360 A CN117992360 A CN 117992360A CN 202311873089 A CN202311873089 A CN 202311873089A CN 117992360 A CN117992360 A CN 117992360A
- Authority
- CN
- China
- Prior art keywords
- memory
- target
- flash memory
- mapping table
- host
- 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
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 448
- 238000013507 mapping Methods 0.000 claims abstract description 369
- 239000007787 solid Substances 0.000 description 40
- 238000010586 diagram Methods 0.000 description 17
- 238000013519 translation Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000002360 explosive Substances 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 241001212789 Dynamis Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage 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
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Memory System (AREA)
Abstract
本申请实施例涉及存储设备应用领域,公开了一种存储系统及存储方法,该存储系统包括:闪存设备和至少一个外部设备;闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括第一部分映射表表项和第二部分映射表表项,外部设备包括设备内存;闪存设备,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表;外部设备,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。本申请能够协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,避免主机内存压力较大时无法存放映射表的情况,能够最大化利用外部设备的内存资源并减少主机的存储压力。
Description
技术领域
本申请涉及存储设备应用领域,特别是涉及一种存储系统及存储方法。
背景技术
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是一种以半导体闪存(NAND Flash)作为介质的存储设备。闪存设备通常需要将地址映射表存放在内存中,其中,内存包括动态随机存储器(Dynami cRandom Access Memory,DRAM)。
随着数据的爆炸式增长,数据中心对闪存设备的容量提出了更高的要求。然而,提升闪存设备的容量同时还需要配备更大的内存以存放地址映射表,从而保证高速的读写性能。
目前,为了节省闪存设备的内存容量,通常借助主机端的内存,通过计算快速链路(CompressExpressLink,CXL)协议将闪存设备全部的地址映射表传输至主机端内存。
在实现本申请过程中,发明人发现现有技术中至少存在如下问题:将闪存设备全部的地址映射表存放至主机端的内存,会引起主机端严重的内存开销,而且当主机端的内存压力较大时,该方案难以在主机端找到足够的内存空间存放全量的映射表,存在严重的性能问题。
发明内容
本申请实施例提供一种存储系统及存储方法,以协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,避免主机内存压力较大时无法存放映射表的情况。
本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种存储系统,该存储系统包括闪存设备和至少一个外部设备;
其中,闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括第一部分映射表表项和第二部分映射表表项,外部设备包括设备内存;
闪存设备,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表,其中,第一地址映射表位于闪存设备的内存;
外部设备,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。
在一些实施例中,存储系统还包括主机;
主机,连接闪存设备和至少一个外部设备,用于获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项传输给至少一个外部设备;
主机包括PCIe硬件端口,主机通过PCIe硬件端口与闪存设备、外部设备进行连接;
主机基于计算快速链路协议,分别与闪存设备、外部设备进行通信。
在一些实施例中,映射表表项包括逻辑页号与物理页号的映射关系,设备内存包括若干个区域,每一个区域包括若干个固定大小的存储块,存储块用于存储第二部分映射表表项中每一个映射表表项的物理页号;
设备内存中存储有区段表,区段表用于管理若干个存储块的分配信息;
外部设备还包括设备管理编码器,设备管理编码器用于向主机暴露设备内存中的可用内存的物理地址范围。
在一些实施例中,在存储系统上电时,主机用于:
访问每一个外部设备的设备管理编码器,以获取每一个外部设备的可用内存空间地址和可用内存容量;
基于每一个外部设备的可用内存容量,确定可用外部内存总量;
根据第一内存容量、可用外部内存总量、每一个外部设备的可用内存容量,按比例计算每一个外部设备的第二内存容量,其中,第一内存容量为全部的映射表表项存放所需的内存容量与闪存设备的内存容量之差,第二内存容量为外部设备实际使用的内存容量;
根据闪存设备的内存容量、每一个外部设备的第二内存容量,分别计算闪存设备、每一个外部设备需要存放的映射表表项的数量,并确定闪存设备与每一个外部设备实际存放的映射表表项的范围。
在一些实施例中,闪存设备包括闪存介质,闪存设备还用于:
获取主机发送的写请求,其中,写请求包括待写入数据;
基于写请求,将待写入数据写入所述闪存介质;
基于写请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定写请求对应的第一目标表项所在的内存位置,其中,内存位置包括闪存设备的内存或者外部设备的设备内存;
在第一目标表项在闪存设备的内存中时,更新第一地址映射表中的对应表项,并向主机发送第一信息,其中,第一信息用于表示闪存设备已成功执行写请求。
在一些实施例中,在第一目标表项在某一个外部设备的设备内存中时,闪存设备用于:
向主机发送第一请求,其中,第一请求包括第一目标表项的目标逻辑页号、待更新物理页号、第一目标设备存放的映射表表项的范围,其中,第一目标设备为第一目标表项所在的外部设备;
在一些实施例中,在第一目标表项在某一个外部设备的设备内存中时,主机用于:
获取闪存设备发送的第一请求;
基于第一请求,向第一目标设备发送区段表查询请求,以获取内存起始地址、第一目标表项所在区域的起始逻辑页号;
将第一目标表项的目标逻辑页号与第一目标表项所在区域的起始逻辑页号之差,作为第一差值;
将第一差值与一个映射表表项的大小相乘,得到第一偏移地址;
将第一偏移地址与所述内存起始地址相加,得到第一目标表项的实际内存地址;
根据第一目标表项的实际内存地址、待更新物理页号,对第一目标设备中存储的第一目标表项的原物理页号进行更新,并向闪存设备发送第二信息,其中,第二信息用于表示主机已成功更新第一目标表项。
在一些实施例中,闪存设备还用于:
获取主机发送的读请求;
基于读请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定读请求对应的第二目标表项所在的内存位置,其中,内存位置包括闪存设备的内存或者外部设备的设备内存;
在第二目标表项在某一个外部设备的设备内存中时,向主机发送第三请求,其中,第三请求包括第二目标表项的目标逻辑页号、第二目标设备存放的映射表表项的范围,第二目标设备为第二目标表项所在的外部设备;
在第二目标表项在闪存设备的内存中时,在第一地址映射表中查找所述第二目标表项,并根据第二目标表项中的物理页号在闪存介质中读取相应的数据;
将数据发送至主机。
在一些实施例中,在第二目标表项在某一个外部设备的设备内存中时,主机用于:
获取闪存设备发送的第三请求;
基于第三请求,向第二目标设备发送区段表查询请求,以获取内存起始地址、第二目标表项所在区域的起始逻辑页号;
将第二目标表项的目标逻辑页号与第二目标表项所在区域的起始逻辑页号之差,作为第二差值;
将第二差值与一个映射表表项的大小相乘,得到第二偏移地址;
将第二偏移地址与所述内存起始地址相加,得到第二目标表项的实际内存地址;
根据第二目标表项的实际内存地址,在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备。
在一些实施例中,在第二目标表项在某一个外部设备的设备内存中时,闪存设备还用于:
获取主机发送的目标物理页号;
根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机。
在一些实施例中,在存储系统下电时,主机用于获取每一个外部设备的设备内存中存储的映射表表项,并将映射表表项发送至所述闪存设备;
在存储系统下电时,闪存设备用于将第一地址映射表中的每一个映射表表项或者主机发送的每一个映射表表项,存储至对应的映射块。
第二方面,本申请实施例提供一种存储方法,该存储方法应用于第一方面的存储系统,该存储方法包括:
基于闪存设备读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表,其中,第一地址映射表位于闪存设备的内存;
获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项存储到至少一个外部设备的设备内存中。
在一些实施例中,存储系统还包括主机,方法还包括:
根据主机发送的写请求,确定写请求对应的第一目标表项所在的内存位置;
在第一目标表项在闪存设备的内存中时,闪存设备更新第一地址映射表中的对应表项;
在第一目标表项在某一个外部设备的设备内存中时,主机根据第一目标表项的实际内存地址,对第一目标设备中存储的第一目标表项的原物理页号进行更新。
在一些实施例中,闪存设备包括闪存介质,存储系统还包括主机,方法还包括:
根据主机发送的读请求,确定读请求对应的第二目标表项所在的内存位置;
在第二目标表项在闪存设备的内存中时,闪存设备在闪存介质中读取相应的数据,并将数据发送至主机;
在第二目标表项在某一个外部设备的设备内存中时,主机根据第二目标表项的实际内存地址,在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备;
闪存设备根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机。
第三方面,本申请实施例还提供了一种非易失性计算机可读存储介质,非易失性计算机可读存储介质存储有计算机可执行指令,当计算机可执行指令被处理器所执行时,使处理器执行如第二方面的存储方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种存储系统,该存储系统包括闪存设备和至少一个外部设备;其中,闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括第一部分映射表表项和第二部分映射表表项,外部设备包括设备内存;闪存设备,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表,其中,第一地址映射表位于闪存设备的内存;外部设备,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。
通过闪存设备用于将第一部分映射表表项存储至第一地址映射表,外部设备用于将第二部分映射表表项存储至设备内存中,本申请能够协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,避免主机内存压力较大时无法存放映射表的情况,能够最大化利用外部设备的内存资源并减少主机的存储压力。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种基于需求的闪存翻译层的架构示意图;
图3是本申请实施例提供的一种大页面方案的架构示意图;
图4是本申请实施例提供的一种主机端存放全量映射表的示意图;
图5是本申请实施例提供的一种存储系统的结构示意图;
图6是本申请实施例提供的一种存储系统的详细结构示意图;
图7是本申请实施例提供的一种不同设备的结构示意图;
图8是本申请实施例提供的一种多个外部设备存放映射表表项的示意图;
图9是本申请实施例提供的一种存储系统执行写操作的流程示意图;
图10是本申请实施例提供的一种存储系统执行读操作的流程示意图;
图11是本申请实施例提供的一种存储方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
下面结合说明书附图具体说明本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;
在本申请实施例中,闪存设备包括但不限于固态硬盘。
如图1所示,闪存设备100包括连接器101、存储控制芯片102、其他外围单元103、缓存单元104和闪存介质105。
其中,连接器101,连接存储控制芯片102与主机,用于与主机通信,主机例如:计算机或者服务器;存储控制芯片102,连接连接器101、其他外围单元103、缓存单元104和闪存介质105,用于作为控制运算单元,管理闪存设备的内部系统,存储控制芯片102包括但不限于固态硬盘控制器;外围单元103,连接存储控制芯片102,包括串口、传感器、寄存器、电源芯片等部件;缓存单元104,连接存储控制芯片102,作为缓存、算法表存储单元,缓存单元104一般为动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
其中,闪存介质105,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,作为存储单元,用于存储用户数据、系统数据等。存储控制芯片102与闪存介质105之间呈现多个通道,一个通道独立连接一个闪存介质,例如:通道0连接一个闪存介质、通道1连接一个闪存介质、……、通道x连接一个闪存介质。
随着数据的爆炸式增长,数据中心对闪存设备的容量提出了更高的要求。然而,提升闪存设备的容量的同时,还需要配备更大的内存存放地址映射表,以保证高速的读写性能。闪存设备的内存容量大小成为阻碍闪存设备持续扩容的一个重要瓶颈。一方面,配置更大的内存需要更高的成本,增大了闪存设备的生产成本;另一方面,闪存设备的物理空间有限,特别是企业级闪存设备上需要配备大量的电容以防止掉电丢失数据,难以容纳大量的内存芯片。
目前,节省闪存设备的内存容量的方案主要有三类:
第一类方案是通过牺牲索引性能,在内存容量不够时将部分页面映射表信息保存在闪存中,以节省闪存设备的内存容量。例如:通过基于需求的闪存翻译层(On-demandFlashTranslationLayer,DFTL)的架构实现。
请参阅图2,图2是本申请实施例提供的一种基于需求的闪存翻译层的架构示意图;
图2以闪存设备中的固态硬盘为例进行说明。
如图2所示,固态硬盘的闪存中会划分一部分翻译块用于专门存放地址映射表,而在内存中的缓存映射表仅存放部分映射表表项,从而节省固态硬盘使用的内存。其中,缓存映射表用于存放逻辑页号(LogicalPageNumber,LPN)与物理页号(PhysicalPageNumber,PPN)的映射关系,全局翻译目录用于存放虚拟页号(Virtual Page Number,VPN)与物理页号(PhysicalPageNumber,PPN)的映射关系。
当在缓存映射表中查找不到目标逻辑页号(LPN)时,需要在全局翻译目录中查找该映射表项所在的翻译块的物理页号(PPN),将相应的表项从翻译块读取到缓存映射表中。当缓存映射表已满时,需要逐出最近最少使用的表项,将该表项写入到闪存的翻译块中。
然而,该方案由于涉及到大量映射表表项在内存和闪存之间的换入换出,闪存的访问延时比内存高100倍以上,引起额外的读写放大,降低读写性能,而且在闪存检索映射表带来的开销会导致严重的尾部时延,从而使得固态硬盘的整体性能严重下降。
第二类方案是大页面方案,即通过增加映射粒度牺牲写性能,将页面大小从4KB增加到16KB甚至跟大的粒度,以节省闪存设备的内存容量。
请参阅图3,图3是本申请实施例提供的一种大页面方案的架构示意图;
图3以闪存设备中的固态硬盘为例进行说明。
如图3所示,闪存中的若干个数据页组成一个大页面,每个大页面对应一个逻辑页号,内存中存储有地址映射表,地址映射表用于存放每个大页面的逻辑页号与物理页号的映射关系。其中,LPN1表示一个大页面对应的逻辑页号,LPN2表示另一个大页面对应的逻辑页号。
与已有方案相比,大页面方案中管理的页面粒度更大,因此在同等容量下需要管理的映射表表项更少,从而达到了降低内存大小的目的。然而,大页面方案的写粒度更大,会带来严重的写放大,显著降低整个系统的写性能。
第三类方案是通过主机端存放全量映射表,节省闪存设备的内存容量,即借助主机端的内存,通过计算快速链路(CompressExpressLink,CXL)协议将全部的地址映射表传输至主机端的内存。其中,CXL协议是一种高性能、低延迟的互联协议,用于连接处理器、加速器、存储和其他设备,它提供了一种高带宽、低延迟的数据传输和共享内存的方式,以支持加速器和处理器之间的高效通信。
请参阅图4,图4是本申请实施例提供的一种主机端存放全量映射表的示意图;
图4以闪存设备中的固态硬盘为例进行说明。
如图4所示,主机端与固态硬盘均包括外围组件互连快速(Peripheral ComponentInterconnect Express,PCIE)硬件端口,在开机初始化时固态硬盘控制器将全部的地址映射表,通过CXLCache协议传输到主机端的内存中,从而使得主机端的内存中存储该闪存设备的全量缓存映射表。其中,全量缓存映射表用于存放逻辑页号与物理页号的映射关系。
CXL Cache协议是CXL协议的一个扩展,专门用于处理与高速缓存相关的操作。它定义了一套规范,用于在CXL连接的设备之间进行高速缓存的共享和协同操作。CXL Cache协议包括了缓存一致性、缓存共享、缓存控制等方面的机制,以确保多个设备之间的缓存数据一致性和正确性。
然而,第三类方案在主机端存放全部的地址映射表,会引起主机端严重的内存开销,当主机端内存压力较大时,该方案难以找到足够的内存空间存放全部映射表,存在严重的性能问题。
基于此,本申请实施例提供一种存储系统,通过协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,避免主机内存压力较大时无法存放映射表的情况,并且能够最大化利用外部设备的内存资源并减少主机的存储压力。
请参阅图5,图5是本申请实施例提供的一种存储系统的结构示意图;
如图5所示,存储系统500包括闪存设备501和至少一个外部设备502。图5以一个外部设备502为例。
闪存设备501,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表。
外部设备502,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。
请参阅图6,图6是本申请实施例提供的一种存储系统的详细结构示意图;
如图6所示,存储系统500包括闪存设备501、主机503和至少一个外部设备502。其中,主机503分别与闪存设备501、外部设备502通信连接,图6以一个外部设备502为例。
具体的,主机503包括PCIe硬件端口,主机503通过PCIe硬件端口与闪存设备501、外部设备502进行连接。主机503基于计算快速链路协议(CXL协议),分别与闪存设备501、外部设备502进行通信。
CXL协议将传输链路上的事务层(Transaction Layer)和连接层(Link Layer)与I/O分离,可以提供更低的延迟。此外,CXL协议支持动态容量设备(DynamicCapacityDevice,DCD)的特性,允许将设备中的内存动态地暴露给主机软件使用。
闪存设备501,连接主机503,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表。
其中,闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括逻辑页号与物理页号的映射关系,映射表表项包括第一部分映射表表项和第二部分映射表表项,第一部分映射表表项为需要存储在闪存设备的内存中的映射表表项,第二部分映射表表项为需要存储在至少一个外部设备的设备内存中的映射表表项,第一地址映射表位于闪存设备的内存。
具体的,闪存设备501用于读取闪存介质中的映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至内存中的第一地址映射表。
外部设备502,连接主机503,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。其中,外部设备502包括但不限于图形处理器(GraphicsProcessing Unit,GPU)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)、智能网卡(smartNetworkInterfaceCard,smartNIC)等设备。
其中,外部设备502包括设备内存,设备内存包括若干个区域,每一个区域包括若干个固定大小的存储块,存储块用于存储第二部分映射表表项中每一个映射表表项的物理页号。设备内存中存储有区段表,区段表用于管理若干个存储块的分配信息,区段表包括标签、地址和长度。其中,标签作为一个标识,用于记录一段设备内存的所有者,即标记设备内存的某段区域用于存放闪存设备的映射表表项。地址,即内存起始地址,用于记录该段区域在设备内存中的起始地址,长度用于记录该段区域在设备内存中的长度。
外部设备502还包括设备管理编码器(HostDeviceManagementDecoder,HDMdecoder),设备管理编码器用于向主机暴露设备内存中的可用内存的物理地址范围等信息。
具体的,外部设备502基于CXL协议,接收主机503发送的第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。
主机503,连接闪存设备501和至少一个外部设备502,用于获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项传输给至少一个外部设备502。
具体的,在存储系统500上电时,主机503访问每一个外部设备的设备管理编码器,以获取每一个外部设备的可用内存空间地址和可用内存容量,从而确定闪存设备与每一个外部设备实际存放的映射表表项的范围,在获取到第二部分映射表表项之后,根据每一个外部设备实际存放的映射表表项的范围,将第二部分映射表表项传输给至少一个外部设备502。
在本申请实施例中,在存储系统500上电时,主机503具体用于:访问每一个外部设备的设备管理编码器,以获取每一个外部设备的可用内存空间地址和可用内存容量;基于每一个外部设备的可用内存容量,确定可用外部内存总量;根据第一内存容量、可用外部内存总量、每一个外部设备的可用内存容量,按比例计算每一个外部设备的第二内存容量;根据闪存设备的内存容量、每一个外部设备的第二内存容量,分别计算闪存设备、每一个外部设备需要存放的映射表表项的数量,并确定闪存设备与每一个外部设备实际存放的映射表表项的范围。
其中,可用内存空间地址为一个外部设备的设备内存中可被主机访问的内存空间地址,可用内存容量为一个外部设备的设备内存中可被主机访问的内存空间大小,可用外部内存总量为所有的外部设备的可用内存容量之和,第一内存容量为全部的映射表表项存放所需的内存容量与闪存设备的内存容量之差,第二内存容量为外部设备实际使用的内存容量。
具体的,在存储系统500上电时,主机503访问每一个外部设备502的设备管理编码器,以获取每一个外部设备的可用内存空间地址和可用内存容量,然后累加每一个外部设备的可用内存容量,得到可用外部内存总量。其中,可用外部内存总量可用如下公式表示:
S=S1+S2+…+Sn
其中,S表示可用外部内存总量,Sn表示第n个外部设备的可用内存容量。
进一步地,主机503根据下述公式按比例计算每一个外部设备的第二内存容量:
Vi=(N-M)*Si/S
其中,Vi表示每一个外部设备的第二内存容量,N表示第一内存容量,M表示闪存设备的内存容量,Si表示第i个外部设备的可用内存容量,S表示可用外部内存总量。
主机503用闪存设备的内存容量除以一个映射表表项的大小,得到闪存设备需要存放的映射表表项的数量;主机503用每一个外部设备的第二内存容量除以一个映射表表项的大小,计算得到每一个外部设备需要存放的映射表表项的数量。其中,本申请实施例不对一个映射表表项的大小进行限制,示例性地,在映射表中采用数组的方式存放映射表表项时,一个映射表表项的大小为4KB。
从而,主机503根据闪存设备、每一个外部设备需要存放的映射表表项的数量,确定闪存设备与每一个外部设备实际存放的映射表表项的范围。例如:在闪存设备的内存中存放逻辑页号为0-10000的映射表表项,在外部设备1的设备内存中存放逻辑页号为10001-15000的映射表表项。
在主机503完成对设备内存的初始化后,主机503记录闪存设备与每一个外部设备实际存放的映射表表项的范围,并将闪存设备与每一个外部设备实际存放的映射表表项的范围,发送给闪存设备501。
需要说明的是,上述示例只是本申请的一个实施例,本申请并不限制使用的外部设备的数量、在每个外部设备上实际使用的内存容量的大小、在不同设备间分配映射表的策略等。
在存储系统500上电时,闪存设备501从闪存介质的映射块中将映射表表项读取至内存,并将第一部分映射表表项存储至内存中的第一地址映射表,将第二部分映射表表项通过CXL协议发送给主机503。主机503在接收到第二部分映射表表项之后,根据每一个外部设备实际存放的映射表表项的范围,将第二部分映射表表项传输给对应的外部设备502,并在每一个外部设备502的区段表中通过标签标记映射表表项使用的设备内存,并记录映射表表项使用的内存地址和大小等信息。
在本申请实施例中,通过闪存设备501用于将第一部分映射表表项存储至第一地址映射表,主机503用于获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项传输给至少一个外部设备502,外部设备502用于将第二部分映射表表项存储至设备内存中,本申请能够协同闪存设备的内存和主机连接的至少一个外部设备的设备内存存放映射表表项,避免主机内存压力较大时无法存放映射表的情况,能够最大化利用和主机连接的外部设备的内存资源并充分发挥主机的性能。
请参阅图7,图7是本申请实施例提供的一种不同设备的结构示意图;
如图7所示,主机503通过PCIe硬件端口与计算快速链路协议(CXL协议),分别与闪存设备501、外部设备502进行通信。主机503包括处理器、内存和PCIe硬件端口。其中,处理器包括但不限于中央处理器(Central Processing Unit,CPU)。
外部设备502包括但不限于图形处理器、现场可编程门阵列、智能网卡等,设备内存包括多个区域,每一区域包括多个存储块,设备内存还存储有区段表,区段表包括标签、地址和长度,设备管理编码器向主机503暴露设备内存中的可用内存的内存地址和内存大小。
闪存设备501包括闪存、内存和存储控制芯片,闪存包括映射块和数据块,闪存设备501的内存中存储有第一地址映射表。
请参阅图8,图8是本申请实施例提供的一种多个外部设备存放映射表表项的示意图;
如图8所示,主机503分别和闪存设备501、n个外部设备502通信连接,闪存设备501包括内存,n个外部设备502均包括设备内存。
其中,闪存设备501的内存可用于存放第一部分映射表表项,主机503根据每个外部设备502的可用内存容量,将闪存设备501的第二部分映射表表项分散传输到不同的外部设备502的设备内存中。
在本申请实施例中,外部设备502的数量为至少一个,存储系统500可用于将闪存设备501的映射表表项传输到同一个外部设备502的设备内存中。存储系统500也可用于将闪存设备501的映射表表项分散传输到不同的外部设备502的设备内存中,以减轻对单个外部设备502的内存压力。
在本申请实施例中,通过将闪存设备501的映射表表项存放在多个外部设备502的设备内存中,本申请能够尽可能避免主机的内存压力过大时无可用内存的情况,最大化利用外部设备的内存资源并充分发挥主机的性能。
在本申请实施例中,主机503包括应用程序(简称:应用)和闪存设备驱动模块,应用程序用于下发读请求或写请求,闪存设备驱动模块用于管理闪存设备501,闪存设备501包括存储控制芯片和闪存介质。
闪存设备501还用于:获取主机发送的写请求;基于写请求,将待写入数据写入闪存介质;基于写请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定写请求对应的第一目标表项所在的内存位置;在第一目标表项在闪存设备的内存中时,更新第一地址映射表中的对应表项,并向主机发送第一信息。
其中,写请求包括待写入数据和目标逻辑页号,目标逻辑页号为待写入数据对应的逻辑页号,第一目标表项为写请求对应的映射表表项,第一目标表项所在的内存位置包括闪存设备的内存或者外部设备的设备内存,第一信息用于表示闪存设备已成功执行写请求。
具体的,主机503中的应用程序向闪存设备驱动模块下发写请求,闪存设备驱动模块获取该写请求,并通过PCIe总线向闪存设备501中的存储控制芯片提交写请求。
闪存设备501的存储控制芯片根据该写请求,将待写入数据写入闪存介质,然后检测映射表项位置,确定该写请求对应的映射表表项存放在哪个设备中。具体的,闪存设备501的存储控制芯片通过该写请求的目标逻辑页号、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定该写请求对应的第一目标表项所在的内存位置。
若第一目标表项位于闪存设备501的内存中,则闪存设备501的存储控制芯片在第一地址映射表中查找该写请求的目标逻辑页号,更新目标逻辑页号对应的物理页号,并向主机503发送第一信息。
主机503中的闪存设备驱动模块接收第一信息,确定闪存设备501完成写入操作,并向应用程序发送该第一信息,至此,写操作流程结束。
在本申请实施例中,在第一目标表项在某一个外部设备的设备内存中时,闪存设备501用于:向主机发送第一请求,其中,第一请求包括第一目标表项的目标逻辑页号、待更新物理页号、第一目标设备存放的映射表表项的范围,第一目标设备为第一目标表项所在的外部设备。
具体的,在闪存设备501的存储控制芯片确定第一目标表项在某一个外部设备的设备内存中后,存储控制芯片向主机503发送第一请求,以请求主机503更新第一目标表项。
在本申请实施例中,在第一目标表项在某一个外部设备的设备内存中时,主机503用于:获取闪存设备发送的第一请求;基于第一请求,向第一目标设备发送区段表查询请求,以获取内存起始地址、第一目标表项所在区域的起始逻辑页号;将第一目标表项的目标逻辑页号与第一目标表项所在区域的起始逻辑页号之差,作为第一差值;将第一差值与一个映射表表项的大小相乘,得到第一偏移地址;将第一偏移地址与内存起始地址相加,得到第一目标表项的实际内存地址;根据第一目标表项的实际内存地址、待更新物理页号,对第一目标设备中存储的第一目标表项的原物理页号进行更新,并向闪存设备发送第二信息。
具体的,主机503获取闪存设备501发送的第一请求,并基于第一请求,向第一目标设备发送区段表查询请求,从而通过区段表中的标签获取到第一目标设备存放映射表表项的内存起始地址、第一目标表项所在区域的起始逻辑页号。然后,主机503将第一目标表项的目标逻辑页号与第一目标表项所在区域的起始逻辑页号之差,作为第一差值;将第一差值与一个映射表表项的大小(如4KB)相乘,得到第一偏移地址;将第一偏移地址与内存起始地址相加,得到第一目标表项的实际内存地址。其中,第一差值为第一目标表项对应的逻辑页号之差,第一偏移地址为第一目标表项在第一目标设备的设备内存中的偏移地址。
主机503根据第一目标表项的实际内存地址,在第一目标设备的设备内存中查找到第一目标表项,将第一目标表项的原物理页号更新为第一请求中的待更新物理页号,并向闪存设备501发送第二信息。其中,第二信息用于表示主机已成功更新第一目标表项。
主机503中的闪存设备驱动模块接收第一信息或第二信息,确定闪存设备501完成写入操作,并向应用程序发送该第一信息,至此,写操作流程结束。
请参阅图9,图9是本申请实施例提供的一种存储系统执行写操作的流程示意图;
图9以闪存设备为固态硬盘,闪存设备驱动模块为固态硬盘驱动,闪存设备中的存储控制芯片为固态硬盘控制器,n个外部设备为例,说明存储系统500执行写操作的流程。
如图9所示,该存储系统执行写操作的流程,包括:
步骤S1:下发写请求;
具体的,主机端(即主机503)中的应用(即应用程序)向固态硬盘驱动下发写请求。
步骤S2:下发写盘请求;
具体的,固态硬盘驱动通过PCIe总线向固态硬盘控制器发送写盘请求,其中,该写盘请求用于指示固态硬盘写入数据,该写盘请求的内容与写请求的内容相同。
步骤S3:写入数据;
具体的,固态硬盘控制器向闪存中的数据块写入数据。
步骤S4:检测映射表项位置;
具体的,固态硬盘控制器确定该写盘请求对应的第一目标表项所在的内存位置。若第一目标表项位于固态硬盘的内存中,则进入步骤S5;若第一目标表项位于某一个外部设备的设备内存中,则进入步骤S6。
步骤S5:更新盘内映射表;
具体的,固态硬盘控制器直接更新内存中的缓存映射表(即第一地址映射表)的对应表项,跳转到步骤8。
步骤S6:查询区段表;
具体的,主机端(即主机503)向第一目标设备(图9中以外部设备1为例)发送区段表查询请求,以获取内存起始地址、第一目标表项所在区域的起始逻辑页号。然后,主机端(即主机503)确定第一目标表项的实际内存地址。
步骤S7:更新表项;
具体的,主机端(即主机503)更新第一目标表项中的物理页号,并向固态硬盘发送第二信息。
步骤S8:写盘返回;
具体的,固态硬盘控制器向主机端(即主机503)发送第一信息,以通知主机端(即主机503)数据写入和更新表项操作均完成。
步骤S9:写返回。
具体的,固态硬盘驱动向应用(即应用程序)发送第一信息,写操作流程结束。
在本申请实施例中,闪存设备还用于:获取主机发送的读请求;基于读请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定读请求对应的第二目标表项所在的内存位置;在第二目标表项在某一个外部设备的设备内存中时,向主机发送第三请求;在第二目标表项在闪存设备的内存中时,在第一地址映射表中查找第二目标表项,并根据第二目标表项中的物理页号在闪存介质中读取相应的数据;将数据发送至主机。
其中,第三请求包括第二目标表项的目标逻辑页号、第二目标设备存放的映射表表项的范围,第二目标设备为第二目标表项所在的外部设备
具体的,主机503中的应用程序向闪存设备驱动模块下发读请求,闪存设备驱动模块获取该读请求,并通过PCIe总线向闪存设备501中的存储控制芯片提交读请求。
闪存设备501的存储控制芯片根据该读请求,检测映射表项位置,确定该读请求对应的映射表表项存放在哪个设备中。具体的,闪存设备501的存储控制芯片通过该读请求的目标逻辑页号、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定该读请求对应的第二目标表项所在的内存位置。
若第二目标表项位于闪存设备501的内存中,则闪存设备501的存储控制芯片在第一地址映射表中通过查找该读请求的目标逻辑页号,查询到第二目标表项,并根据第二目标表项中的物理页号,在闪存介质中读取相应的数据,并将数据发送至主机503。
若第二目标表项位于某一个外部设备502的设备内存中,则闪存设备501向主机503发送第三请求,以使主机503确定目标物理页号。其中,目标物理页号为该读请求对应的第二目标表项中的物理页号。
在第二目标表项在某一个外部设备的设备内存中时,主机503用于:获取闪存设备发送的第三请求;基于第三请求,向第二目标设备发送区段表查询请求,以获取内存起始地址、第二目标表项所在区域的起始逻辑页号;将第二目标表项的目标逻辑页号与第二目标表项所在区域的起始逻辑页号之差,作为第二差值;将第二差值与一个映射表表项的大小相乘,得到第二偏移地址;将第二偏移地址与内存起始地址相加,得到第二目标表项的实际内存地址;根据第二目标表项的实际内存地址,在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备。
具体的,主机503获取闪存设备501发送的第三请求,并基于第三请求,向第二标设备发送区段表查询请求,从而通过区段表中的标签获取到第二目标设备存放映射表表项的内存起始地址、第二目标表项所在区域的起始逻辑页号。然后,主机503将第二目标表项的目标逻辑页号与第二目标表项所在区域的起始逻辑页号之差,作为第二差值;将第二差值与一个映射表表项的大小(如4KB)相乘,得到第二偏移地址;将第二偏移地址与第二目标设备存放映射表表项的内存起始地址相加,得到第二目标表项的实际内存地址。其中,第二差值为第二目标表项对应的逻辑页号之差,第二偏移地址为第二目标表项在第二目标设备的设备内存中的偏移地址。
主机503根据第二目标表项的实际内存地址,在第二目标设备的设备内存中查找到第二目标表项,读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备501。
在第二目标表项在某一个外部设备的设备内存中时,闪存设备501还用于:获取主机发送的目标物理页号;根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机。
具体的,闪存设备501接收主机503发送的目标物理页号,根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机503。
请参阅图10,图10是本申请实施例提供的一种存储系统执行读操作的流程示意图;
图10以闪存设备为固态硬盘,闪存设备驱动模块为固态硬盘驱动,闪存设备中的存储控制芯片为固态硬盘控制器,n个外部设备为例,说明存储系统500执行读操作的流程。
如图10所示,该存储系统执行读操作的流程,包括:
步骤S1:下发读请求;
具体的,主机端(即主机503)中的应用(即应用程序)向固态硬盘驱动下发读请求。
步骤S2:下发读盘请求;
具体的,固态硬盘驱动通过PCIe总线向固态硬盘控制器发送读盘请求,其中,该读盘请求用于指示固态硬盘读取数据,该读盘请求的内容与写请求的内容相同。
步骤S3:检测映射表项位置;
具体的,固态硬盘控制器确定该读盘请求对应的第二目标表项所在的内存位置。若第二目标表项位于固态硬盘的内存中,则进入步骤S4;若第二目标表项位于某一个外部设备的设备内存中,则进入步骤S5。
步骤S4:读取盘内映射表;
具体的,固态硬盘控制器读取内存中的缓存映射表(即第一地址映射表)中的第二目标表项,得到目标物理页号,跳转到步骤7。
步骤S5:查询区段表;
具体的,主机端(即主机503)向第二目标设备(图10中以外部设备1为例)发送区段表查询请求,以获取内存起始地址、第二目标表项所在区域的起始逻辑页号。然后,主机端(即主机503)确定第二目标表项的实际内存地址。
步骤S6:读取表项;
具体的,主机端(即主机503)在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并向固态硬盘发送目标物理页号。
步骤S7:读取数据;
具体的,固态硬盘控制器根据目标物理页号在闪存介质的数据块中,读取相应的数据。
步骤S8:读盘返回。
具体的,固态硬盘控制器将读取到的数据发送至主机端(即主机503)。
步骤S9:读返回。
具体的,固态硬盘驱动将读取到的数据发送给应用(即应用程序),读操作流程结束。
在本申请实施例中,通过利用计算快速链路协议,协同闪存设备501的内存和与主机503连接的外部设备502的内存空间存放映射表,一方面,本申请能够为大容量闪存设备内的地址映射表提供充足的内存空间,无需修改闪存设备的页面大小,从而保证闪存设备的读写性能不受影响;另一方面,本申请能够降低访问映射表表项的读写延迟,避免索引性能成为设备的IO性能瓶颈,从而提升闪存设备的读写性能。
在本申请实施例中,在存储系统500下电时,主机503用于获取每一个外部设备的设备内存中存储的映射表表项,并将映射表表项发送至闪存设备。在存储系统500下电时,闪存设备501用于将第一地址映射表中的每一个映射表表项或者主机发送的每一个映射表表项,存储至对应的映射块。
具体的,在存储系统500下电时,主机503通过CXL协议向每一个外部设备502发送区段表查询请求,以通过区段表查找到闪存设备501在每一个外部设备502的设备内存中的映射表表项,从而获取这些映射表表项,并将这些映射表表项发送至闪存设备501。闪存设备501将第一地址映射表中的每一个映射表表项存储至对应的映射,并接收主机503发送的映射表表项,将映射表表项存储至对应的映射块。
在本申请实施例中,通过提供一种存储系统,该存储系统包括闪存设备和至少一个外部设备;其中,闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括第一部分映射表表项和第二部分映射表表项,外部设备包括设备内存;闪存设备,用于读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表,其中,第一地址映射表位于闪存设备的内存;外部设备,用于获取第二部分映射表表项,并将第二部分映射表表项存储至设备内存中。
通过闪存设备用于将第一部分映射表表项存储至第一地址映射表,外部设备用于将第二部分映射表表项存储至设备内存中,本申请能够协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,避免主机内存压力较大时无法存放映射表的情况,能够最大化利用外部设备的内存资源并减少主机的存储压力。
请参阅图11,图11是本申请实施例提供的一种存储方法的流程示意图;
其中,该存储方法应用于存储系统500,其中,存储系统500包括闪存设备501和至少一个外部设备502。
其中,闪存设备501包括映射块,映射块用于存储映射表表项,映射表表项包括逻辑页号与物理页号的映射关系,映射表表项包括第一部分映射表表项和第二部分映射表表项,其中,闪存设备包括映射块,映射块用于存储映射表表项,映射表表项包括逻辑页号与物理页号的映射关系,映射表表项包括第一部分映射表表项和第二部分映射表表项。
如图11所示,该存储方法,包括:
步骤S1101:基于闪存设备读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表;
具体的,闪存设备501用于读取闪存介质中的映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至内存中的第一地址映射表。其中,映射块用于存储映射表表项,映射表表项包括逻辑页号与物理页号的映射关系,映射表表项包括第一部分映射表表项和第二部分映射表表项,第一地址映射表位于闪存设备的内存。
步骤S1102:获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项存储到至少一个外部设备的设备内存中。
具体的,存储系统500将映射块内存储的第二部分映射表表项,存储到至少一个外部设备的设备内存中。
在本申请实施例中,存储系统500还包括主机503。主机503包括PCIe硬件端口,主机503通过PCIe硬件端口与闪存设备501、外部设备502进行连接。主机503基于计算快速链路协议(CXL协议),分别与闪存设备501、外部设备502进行通信。
在本申请实施例中,获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项存储到至少一个外部设备的设备内存中,包括:闪存设备501将第二部分映射表表项通过CXL协议发送给主机503;主机503接收第二部分映射表表项,根据每一个外部设备实际存放的映射表表项的范围,将第二部分映射表表项传输给至少一个外部设备502。
具体的,在存储系统500上电时,闪存设备501从闪存介质的映射块中将映射表表项读取至内存,并将第一部分映射表表项存储至内存中的第一地址映射表,将第二部分映射表表项通过CXL协议发送给主机503。
主机503访问每一个外部设备的设备管理编码器,以获取每一个外部设备的可用内存空间地址和可用内存容量,然后累加每一个外部设备的可用内存容量,得到可用外部内存总量,并按比例计算每一个外部设备的第二内存容量,从而根据闪存设备的内存容量、每一个外部设备的第二内存容量,分别计算闪存设备、每一个外部设备需要存放的映射表表项的数量,并确定闪存设备与每一个外部设备实际存放的映射表表项的范围。
在主机503完成对设备内存的初始化后,主机503记录闪存设备与每一个外部设备实际存放的映射表表项的范围,并将闪存设备与每一个外部设备实际存放的映射表表项的范围,发送给闪存设备501。
主机503在接收到第二部分映射表表项之后,根据每一个外部设备实际存放的映射表表项的范围,将第二部分映射表表项传输给对应的外部设备502,并在每一个外部设备502的区段表中通过标签标记映射表表项使用的设备内存,并记录映射表表项使用的内存地址和大小等信息。
在本申请实施例中,方法还包括:存储系统500执行读操作或写操作。
具体的,存储系统500执行写操作的步骤,包括步骤S1201-步骤S1203:
步骤S1201:根据主机发送的写请求,确定写请求对应的第一目标表项所在的内存位置;
具体的,闪存设备501接收主机503发送的写请求,并根据该写请求将待写入数据写入闪存介质,然后通过该写请求的目标逻辑页号、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定该写请求对应的第一目标表项所在的内存位置。
步骤S1202:在第一目标表项在闪存设备的内存中时,闪存设备更新第一地址映射表中的对应表项;
具体的,若第一目标表项位于闪存设备501的内存中,则闪存设备501在第一地址映射表中查找该写请求的目标逻辑页号,更新目标逻辑页号对应的物理页号。
步骤S1203:在第一目标表项在某一个外部设备的设备内存中时,主机根据第一目标表项的实际内存地址,对第一目标设备中存储的第一目标表项的原物理页号进行更新。
具体的,在闪存设备501确定第一目标表项在某一个外部设备的设备内存中后,闪存设备501向主机503发送第一请求。主机503基于第一请求,向第一目标设备发送区段表查询请求,通过区段表中的标签获取到第一目标设备存放映射表表项的内存起始地址、第一目标表项所在区域的起始逻辑页号。
然后,主机503将第一目标表项的目标逻辑页号与第一目标表项所在区域的起始逻辑页号之差,作为第一差值;将第一差值与一个映射表表项的大小(如4KB)相乘,得到第一偏移地址;将第一偏移地址与内存起始地址相加,得到第一目标表项的实际内存地址。
主机503根据第一目标表项的实际内存地址,在第一目标设备的设备内存中查找到第一目标表项,将第一目标表项的原物理页号更新为第一请求中的待更新物理页号。
在本申请实施例中,存储系统500执行读操作的步骤,包括步骤S1301-步骤S1304:
步骤S1301:根据主机发送的读请求,确定读请求对应的第二目标表项所在的内存位置;
具体的,闪存设备501接收主机503发送的读请求,通过该读请求的目标逻辑页号、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定该读请求对应的第二目标表项所在的内存位置。
步骤S1302:在第二目标表项在闪存设备的内存中时,闪存设备在闪存介质中读取相应的数据,并将数据发送至主机;
具体的,若第二目标表项位于闪存设备501的内存中,则闪存设备501在第一地址映射表中通过查找该读请求的目标逻辑页号,查询到第二目标表项,并根据第二目标表项中的物理页号,在闪存介质中读取相应的数据,并将数据发送至主机503。
步骤S1303:在第二目标表项在某一个外部设备的设备内存中时,主机根据第二目标表项的实际内存地址,在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备;
具体的,若第二目标表项位于某一个外部设备502的设备内存中,则闪存设备501向主机503发送第三请求。主机503获取闪存设备501发送的第三请求,并基于第三请求,向第二标设备发送区段表查询请求,从而通过区段表中的标签获取到第二目标设备存放映射表表项的内存起始地址、第二目标表项所在区域的起始逻辑页号。
然后,主机503将第二目标表项的目标逻辑页号与第二目标表项所在区域的起始逻辑页号之差,作为第二差值;将第二差值与一个映射表表项的大小(如4KB)相乘,得到第二偏移地址;将第二偏移地址与第二目标设备存放映射表表项的内存起始地址相加,得到第二目标表项的实际内存地址。
主机503根据第二目标表项的实际内存地址,在第二目标设备的设备内存中查找到第二目标表项,读取第二目标表项,得到目标物理页号,并将目标物理页号发送给闪存设备501。
步骤S1304:闪存设备根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机。
具体的,在第二目标表项在某一个外部设备502的设备内存中时,闪存设备501接收主机503发送的目标物理页号,根据目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至主机503。
在本申请实施例中,通过提供一种存储方法,该存储方法应用于上述任一实施例中的存储系统,该存储方法包括:基于闪存设备读取映射块内存储的第一部分映射表表项,并将第一部分映射表表项存储至第一地址映射表,其中,第一地址映射表位于闪存设备的内存;获取映射块内存储的第二部分映射表表项,并将第二部分映射表表项存储到至少一个外部设备的设备内存中。
通过协同闪存设备的内存和至少一个外部设备的设备内存,存放闪存设备的映射表表项,本申请能够避免主机内存压力较大时无法存放映射表的情况,能够最大化利用外部设备的内存资源并减少主机的存储压力。
本申请实施例还提供了一种非易失性计算机存储介质,非易失性计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如上述一个或多个处理器可执行上述任意方法实施例中的存储方法,例如,执行上述任意方法实施例中的存储方法,例如,执行以上描述的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用于一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (13)
1.一种存储系统,其特征在于,包括闪存设备和至少一个外部设备;
其中,所述闪存设备包括映射块,所述映射块用于存储映射表表项,所述映射表表项包括第一部分映射表表项和第二部分映射表表项,所述外部设备包括设备内存;
闪存设备,用于读取映射块内存储的第一部分映射表表项,并将所述第一部分映射表表项存储至第一地址映射表,其中,所述第一地址映射表位于所述闪存设备的内存;
外部设备,用于获取第二部分映射表表项,并将所述第二部分映射表表项存储至设备内存中。
2.根据权利要求1所述的系统,其特征在于,所述存储系统还包括主机;
主机,连接所述闪存设备和至少一个所述外部设备,用于获取所述映射块内存储的第二部分映射表表项,并将所述第二部分映射表表项传输给至少一个外部设备;
所述主机包括PCIe硬件端口,所述主机通过PCIe硬件端口与所述闪存设备、所述外部设备进行连接;
所述主机基于计算快速链路协议,分别与所述闪存设备、所述外部设备进行通信。
3.根据权利要求2所述的系统,其特征在于,所述映射表表项包括逻辑页号与物理页号的映射关系,所述设备内存包括若干个区域,每一个所述区域包括若干个固定大小的存储块,所述存储块用于存储第二部分映射表表项中每一个映射表表项的物理页号;
所述设备内存中存储有区段表,所述区段表用于管理若干个所述存储块的分配信息;
所述外部设备还包括设备管理编码器,所述设备管理编码器用于向所述主机暴露所述设备内存中的可用内存的物理地址范围。
4.根据权利要求3所述的系统,其特征在于,在所述存储系统上电时,所述主机用于:
访问每一个所述外部设备的设备管理编码器,以获取每一个所述外部设备的可用内存空间地址和可用内存容量;
基于每一个所述外部设备的可用内存容量,确定可用外部内存总量;
根据第一内存容量、所述可用外部内存总量、每一个外部设备的可用内存容量,按比例计算每一个外部设备的第二内存容量,其中,所述第一内存容量为全部的映射表表项存放所需的内存容量与闪存设备的内存容量之差,所述第二内存容量为外部设备实际使用的内存容量;
根据闪存设备的内存容量、每一个外部设备的第二内存容量,分别计算所述闪存设备、每一个所述外部设备需要存放的映射表表项的数量,并确定闪存设备与每一个外部设备实际存放的映射表表项的范围。
5.根据权利要求4所述的系统,其特征在于,所述闪存设备包括闪存介质,所述闪存设备还用于:
获取所述主机发送的写请求,其中,所述写请求包括待写入数据;
基于所述写请求,将待写入数据写入所述闪存介质;
基于所述写请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定所述写请求对应的第一目标表项所在的内存位置,其中,所述内存位置包括闪存设备的内存或者外部设备的设备内存;
在所述第一目标表项在闪存设备的内存中时,更新第一地址映射表中的对应表项,并向所述主机发送第一信息,其中,所述第一信息用于表示所述闪存设备已成功执行所述写请求。
6.根据权利要求5所述的系统,其特征在于,在所述第一目标表项在某一个外部设备的设备内存中时,所述闪存设备用于:
向所述主机发送第一请求,其中,所述第一请求包括第一目标表项的目标逻辑页号、待更新物理页号、第一目标设备存放的映射表表项的范围,其中,所述第一目标设备为第一目标表项所在的外部设备;
在所述第一目标表项在某一个外部设备的设备内存中时,所述主机用于:
获取所述闪存设备发送的第一请求;
基于所述第一请求,向所述第一目标设备发送区段表查询请求,以获取内存起始地址、第一目标表项所在区域的起始逻辑页号;
将第一目标表项的目标逻辑页号与第一目标表项所在区域的起始逻辑页号之差,作为第一差值;
将所述第一差值与一个映射表表项的大小相乘,得到第一偏移地址;
将所述第一偏移地址与所述内存起始地址相加,得到第一目标表项的实际内存地址;
根据所述第一目标表项的实际内存地址、待更新物理页号,对所述第一目标设备中存储的第一目标表项的原物理页号进行更新,并向所述闪存设备发送第二信息,其中,所述第二信息用于表示所述主机已成功更新第一目标表项。
7.根据权利要求4所述的系统,其特征在于,所述闪存设备包括闪存介质,所述闪存设备还用于:
获取所述主机发送的读请求;
基于所述读请求、闪存设备与每一个外部设备实际存放的映射表表项的范围,确定所述读请求对应的第二目标表项所在的内存位置,其中,所述内存位置包括闪存设备的内存或者外部设备的设备内存;
在所述第二目标表项在某一个外部设备的设备内存中时,向所述主机发送第三请求,其中,所述第三请求包括第二目标表项的目标逻辑页号、第二目标设备存放的映射表表项的范围,所述第二目标设备为第二目标表项所在的外部设备;
在所述第二目标表项在闪存设备的内存中时,在所述第一地址映射表中查找所述第二目标表项,并根据所述第二目标表项中的物理页号在闪存介质中读取相应的数据;
将所述数据发送至所述主机。
8.根据权利要求7所述的系统,其特征在于,在所述第二目标表项在某一个外部设备的设备内存中时,所述主机用于:
获取所述闪存设备发送的第三请求;
基于所述第三请求,向所述第二目标设备发送区段表查询请求,以获取内存起始地址、第二目标表项所在区域的起始逻辑页号;
将第二目标表项的目标逻辑页号与第二目标表项所在区域的起始逻辑页号之差,作为第二差值;
将所述第二差值与一个映射表表项的大小相乘,得到第二偏移地址;
将所述第二偏移地址与所述内存起始地址相加,得到第二目标表项的实际内存地址;
根据所述第二目标表项的实际内存地址,在所述第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将所述目标物理页号发送给所述闪存设备。
9.根据权利要求8所述的系统,其特征在于,在所述第二目标表项在某一个外部设备的设备内存中时,所述闪存设备还用于:
获取所述主机发送的目标物理页号;
根据所述目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至所述主机。
10.根据权利要求2所述的系统,其特征在于,
在所述存储系统下电时,主机用于获取每一个外部设备的设备内存中存储的映射表表项,并将映射表表项发送至所述闪存设备;
在所述存储系统下电时,闪存设备用于将第一地址映射表中的每一个映射表表项或者主机发送的每一个映射表表项,存储至对应的映射块。
11.一种存储方法,其特征在于,应用于权利要求1-10任一项所述的存储系统,所述方法包括:
基于所述闪存设备读取映射块内存储的第一部分映射表表项,并将所述第一部分映射表表项存储至第一地址映射表,其中,所述第一地址映射表位于所述闪存设备的内存;
获取所述映射块内存储的第二部分映射表表项,并将所述第二部分映射表表项存储到至少一个外部设备的设备内存中。
12.根据权利要求11所述的方法,其特征在于,所述存储系统还包括主机,所述方法还包括:
根据主机发送的写请求,确定所述写请求对应的第一目标表项所在的内存位置;
在所述第一目标表项在闪存设备的内存中时,所述闪存设备更新第一地址映射表中的对应表项;
在所述第一目标表项在某一个外部设备的设备内存中时,所述主机根据第一目标表项的实际内存地址,对第一目标设备中存储的第一目标表项的原物理页号进行更新。
13.根据权利要求11所述的方法,其特征在于,所述闪存设备包括闪存介质,所述存储系统还包括主机,所述方法还包括:
根据主机发送的读请求,确定所述读请求对应的第二目标表项所在的内存位置;
在所述第二目标表项在闪存设备的内存中时,所述闪存设备在闪存介质中读取相应的数据,并将所述数据发送至所述主机;
在所述第二目标表项在某一个外部设备的设备内存中时,所述主机根据第二目标表项的实际内存地址,在第二目标设备的设备内存中读取第二目标表项,得到目标物理页号,并将所述目标物理页号发送给所述闪存设备;
所述闪存设备根据所述目标物理页号在闪存介质中读取相应的数据,并将读取到的数据发送至所述主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311873089.8A CN117992360A (zh) | 2023-12-29 | 2023-12-29 | 存储系统及存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311873089.8A CN117992360A (zh) | 2023-12-29 | 2023-12-29 | 存储系统及存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992360A true CN117992360A (zh) | 2024-05-07 |
Family
ID=90888510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311873089.8A Pending CN117992360A (zh) | 2023-12-29 | 2023-12-29 | 存储系统及存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992360A (zh) |
-
2023
- 2023-12-29 CN CN202311873089.8A patent/CN117992360A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230259452A1 (en) | Computing system and method for controlling storage device | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11416387B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9507722B2 (en) | Methods, systems, and computer readable media for solid state drive caching across a host bus | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
TWI764265B (zh) | 用於將資料連結至記憶體命名空間的記憶體系統 | |
KR20220045216A (ko) | 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑 | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
CN111512290A (zh) | 文件页表管理技术 | |
CN114077557A (zh) | 执行读取/写入操作的方法和托管客户端装置的计算系统 | |
CN110968527B (zh) | Ftl提供的缓存 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
EP4307129A1 (en) | Method for writing data into solid-state hard disk | |
CN115328819A (zh) | 固态存储设备及写/读数据的方法 | |
CN117992360A (zh) | 存储系统及存储方法 | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
CN115495008A (zh) | 一种数据管理方法、存储空间管理方法及装置 | |
CN111309643B (zh) | 一种数据存储装置及其控制方法与数据存储装置系统 | |
US12038834B2 (en) | Memory system and method for controlling nonvolatile memory during command processing without replacing defective blocks | |
US20230359379A1 (en) | Computing system generating map data, and method of operating the same | |
US20230359389A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230359394A1 (en) | Operating method of memory device for managing map data of each of plurality of storage devices, computing system including memory device, and operating method of computing system | |
US20230359567A1 (en) | Storage device, computing device including storage device and memory device, and operating method of computing device | |
KR20230154618A (ko) | 스토리지 장치, 메모리 장치, 및 스토리지 장치 및 메모리 장치를 포함하는 시스템 | |
CN116501243A (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 |