Document
拖动滑块完成拼图
首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

KV存储设备的地址转换方法与系统 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:北京忆恒创源科技股份有限公司

摘要:本申请提供了KV存储设备的地址转换方法与系统。所提供的用于KV存储设备的用于读操作的地址转换方法,包括:获取读操作访问的逻辑地址;若所述逻辑地址命中了缓存的转换页,从缓存的转换页获取同所述逻辑地址对应的物理地址。

主权项:1.一种用于KV读操作的方法,包括:获取读操作访问的键K;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了冲突表的地址,根据所述键K查询冲突表;还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了第二哈希表的地址,根据所述哈希键的第二部分HK2查询第二哈希表;若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第二数据;若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了冲突表的地址,根据所述键K查询冲突表;若以所述键K为索引的第三条目在冲突表中存在,第三条目记录了存储读操作要访问的值V的物理地址,根据第三条目记录的所述物理地址从存储介质读取数据。

全文数据:KV存储设备的地址转换方法与系统技术领域本申请涉及KV存储设备,具体地,涉及KV存储设备的地址转换方法与系统。背景技术图1A展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATASerialAdvancedTechnologyAttachment,串行高级技术附件、SCSISmallComputerSystemInterface,小型计算机系统接口、SASSerialAttachedSCSI,串行连接SCSI、IDEIntegratedDriveElectronics,集成驱动器电子、USBUniversalSerialBus,通用串行总线、PCIEPeripheralComponentInterconnectExpress,PCIe,高速外围组件互联、NVMeNVMExpress,高速非易失存储、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAMDynamicRandomAccessMemory,动态随机访问存储器110。NAND闪存、相变存储器、FeRAMFerroelectricRAM,铁电存储器、MRAMMagneticRandomAccessMemory,磁阻存储器、RRAMResistiveRandomAccessMemory,阻变存储器等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及DRAM110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGAField-programmablegatearray,现场可编程门阵列、ASICApplicationSpecificIntegratedCircuit,应用专用集成电路或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IOInputOutput命令。控制部件104还可以耦合到DRAM110,并可访问DRAM110的数据。在DRAM可存储FTL表和或缓存的IO命令的数据。控制部件104包括闪存接口控制器或称为介质接口控制器、闪存通道控制器,闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。存储器目标Target是NAND闪存封装内的共享CE,ChipEnable,芯片使能信号的一个或多个逻辑单元LUN,LogicUNit。NAND闪存封装内可包括一个或多个管芯Die。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面Plane。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。存储介质上通常按页来存储和读取数据。而按块来擦除数据。块也称物理块包含多个页。块包含多个页。存储介质上的页称为物理页具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。在固态存储设备中,利用FTLFlashTranslationLayer,闪存转换层来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。FTL表包括多个FTL表条目或称表项。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和或逻辑页地址与物理页地址的映射关系。在“DFTL:AFlashTranslationLayerEmployingDemand-basedSelectiveCachingofPage-levelAddressMappings”公开了改进的FTL表法及其在固态存储设备中被应用的方式,其全文可从http:www.cse.psu.edu~buu1paperspsdftl-asplos09.pdf获得。支持Key-Value键-数据,也简称为“KV”存储模型的存储设备,提供基于键Key的读操作GetKey与写PutKey,Value。为执行写操作,主机向存储设备提供键Key与数据Value,以将数据写入存储设备,并将键作为所写入的数据的索引。为执行读操作,主机向存储设备提供键,存储设备根据键找到数据,并将数据提供给主机。因而在KV存储系统中,键是用来访问数据的索引,而数据Value是被访问的数据。一般地,键与数据的长度均不是定长。以及可选地,为了降低复杂性,键和或数据的长度可具有指定范围。图1B展示了现有技术的固态存储设备的地址转换系统的示意图。支持KV存储模型的固态存储设备的地址转换系统也称为FTL表提供从由键得到的哈希值记为哈希键到物理地址例如,PPA,PhysicalPageAddress,物理页地址的映射。可选地,除了物理页地址,FTL表中记录的物理地址可以是物理页内部的数据帧Dataframe的起始地址。数据帧是具有固定大小的数据单元,物理页包括1个或多个数据帧。主机提供的键的长度不定,数据的长度也不定。将不定长的键进行哈希运算,得到定长的哈希键例如,4字节8字节,作为FTL表的索引。用哈希键作为索引查询FTL表,得到对应的物理地址。FTL表可以由数组、链表、树等多种数据结构实现。发明内容本申请的目的包括提供基于KV模型的数据访问方法及其固态存储设备。根据本申请的第一方面,提供了根据本申请第一方面的第一用于KV读操作的方法,包括:获取读操作访问的键K;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。根据本申请第一方面的第一用于KV读操作的方法,提供了根据本申请第一方面的第二用于KV读操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了第二哈希表的地址,根据所述哈希键的第二部分HK2查询第二哈希表。根据本申请第一方面的第一或第二用于KV读操作的方法,提供了根据本申请第一方面的第三用于KV读操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中没有对应条目,指示读操作所访问的键不存在。根据本申请第一方面的第一至第三用于KV读操作的方法之一,提供了根据本申请第一方面的第四用于KV读操作的方法,其中所述哈希键的第一部分HK1的长度小于哈希键HK;以及所述哈希键的第二部分HK1的长度小于哈希键HK。根据本申请第一方面的第一至第四用于KV读操作的方法之一,提供了根据本申请第一方面的第五用于KV读操作的方法,还包括:从所述第一数据获取第一键Kp,若第一键Kp与所述键K匹配,用从所述第一数据获取的值V响应所述读操作。根据本申请第一方面的第五用于KV读操作的方法,提供了根据本申请第一方面的第六用于KV读操作的方法,还包括:若第一键Kp与所述键K不匹配,指示读操作所访问的键不存在。根据本申请第一方面的第二用于KV读操作的方法,提供了根据本申请第一方面的第七用于KV读操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中没有对应条目,指示读操作所访问的键不存在。根据本申请第一方面的第二或第七用于KV读操作的方法,提供了根据本申请第一方面的第八用于KV读操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第二数据。根据本申请第一方面的第八用于KV读操作的方法,提供了根据本申请第一方面的第九用于KV读操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了冲突表的地址,根据所述键K查询冲突表。根据本申请第一方面的第八或第九用于KV读操作的方法,提供了根据本申请第一方面的第十用于KV读操作的方法,还包括:从所述第二数据获取第二键Kp,若第二键Kp与所述键K匹配,用从所述第二数据获取的值V响应所述读操作。根据本申请第一方面的第十用于KV读操作的方法,提供了根据本申请第一方面的第十一用于KV读操作的方法,还包括:若第二键Kp与所述键K不匹配,指示读操作所访问的键不存在。根据本申请第一方面的第二或第七用于KV读操作的方法,提供了根据本申请第一方面的第十二用于KV读操作的方法,其中,若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,比较该条目中记录的第二键的长度与所述键的长度,来识别第二键Kp与所述键K是否匹配。根据本申请第一方面的第一至第四用于KV读操作的方法之一,提供了根据本申请第一方面的第十三用于KV读操作的方法,还包括:从所述哈希键的第一部分HK1在第一哈希表中对应的条目获取第一键Kp的长度,比较第一Kp键的长度与所述键K的长度来识别第一键Kp与所述键K是否匹配。根据本申请第一方面的第九用于KV读操作的方法,提供了根据本申请第一方面的第十四用于KV读操作的方法,还包括:以若所述键K为索引的第三条目在冲突表中存在,第三条目记录了存储读操作要访问的值V的物理地址,根据第三条目记录的所述物理地址从存储介质读取数据。根据本申请第一方面的第九或第十四用于KV读操作的方法,提供了根据本申请第一方面的第十五用于KV读操作的方法,还包括:以若所述键K为索引的第三条目在冲突表中不存在,指示读操作所访问的键不存在。根据本申请第一方面的第一用于KV读操作的方法,提供了根据本申请第一方面的第十六用于KV读操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了冲突表的地址,根据所述键K查询冲突表。根据本申请第一方面的第十六用于KV读操作的方法,提供了根据本申请第一方面的第十七用于KV读操作的方法,还包括:以若所述键K为索引的第三条目在冲突表中存在,第三条目记录了存储读操作要访问的值V的物理地址,根据第三条目记录的所述物理地址从存储介质读取数据。根据本申请第一方面的第十六或第十七用于KV读操作的方法,提供了根据本申请第一方面的第十八用于KV读操作的方法,还包括:以若所述键K为索引的第三条目在冲突表中不存在,指示读操作所访问的键不存在。根据本申请第一方面的第二用于KV读操作的方法,提供了根据本申请第一方面的第十九用于KV读操作的方法,还包括:从存储介质加载第二哈希表。根据本申请的第二方面,提供了根据本申请第二方面的第一用于KV写操作的方法,包括:获取写操作访问的键K与为写操作分配的物理地址;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中没有对应条目,在第一哈希表中添加以所述哈希键的第一部分HK1为索引,记录了被分配的物理地址的条目。根据本申请第二方面的第一用于KV写操作的方法,提供了根据本申请第二方面的第二用于KV写操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的第一条目记录了存储读操作要访问的值V的物理地址,将第一条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第一用于KV写操作的方法,提供了根据本申请第二方面的第三用于KV写操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的第一条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据;从所述第一数据获取第一键Kp,若第一键Kp与所述键K匹配,将第一条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第三用于KV写操作的方法,提供了根据本申请第二方面的第四用于KV写操作的方法,还包括:若第一键Kp与所述键K不匹配,创建第二哈希表,在第二哈希表中创建第二条目与第三条目,其中第二条目以对应于所述第一键Kp的哈希键的第二部分为索引,并记录第一条目记录的物理地址;第三条目以对应于所述键K的哈希键的第二部分HK2为索引,并记录被分配的物理地址;以及将第一条目记录的物理地址更新为第二哈希表的地址。根据本申请第二方面的第一用于KV写操作的方法,提供了根据本申请第二方面的第五用于KV写操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的第一条目记录了存储读操作要访问的值V的物理地址,比较第一条目记录的第一键Kp的长度与所述键K的长度识别第一键Kp与所述键K匹配是否匹配。根据本申请第二方面的第五用于KV写操作的方法,提供了根据本申请第二方面的第六用于KV写操作的方法,还包括:若第一键Kp与所述键K匹配,将第一条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第五或第六用于KV写操作的方法,提供了根据本申请第二方面的第七用于KV写操作的方法,还包括:若第一键Kp与所述键K不匹配,创建第二哈希表,在第二哈希表中创建第二条目与第三条目,其中第二条目以对应于所述第一键Kp的哈希键的第二部分为索引,并记录第一条目记录的物理地址;第三条目以对应于所述键K的哈希键的第二部分HK2为索引,并记录被分配的物理地址;以及将第一条目记录的物理地址更新为第二哈希表的地址。根据本申请第二方面的第一至第七用于KV写操作的方法之一,提供了根据本申请第二方面的第八用于KV写操作的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的第一条目记录了第二哈希表的地址,根据所述哈希键的第二部分HK2查询第二哈希表。根据本申请第二方面的第八用于KV写操作的方法,提供了根据本申请第二方面的第九用于KV写操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中没有对应条目,在第二哈希表中添加以所述哈希键的第二部分HK2为索引,记录了被分配的物理地址的条目。根据本申请第二方面的第八或第九用于KV写操作的方法,提供了根据本申请第二方面的第十用于KV写操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的第四条目记录了存储读操作要访问的值V的物理地址,将第四条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第八至第十用于KV写操作的方法之一,提供了根据本申请第二方面的第十一用于KV写操作的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的第四条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第二数据;从所述第二数据获取第二键Kp,若第二键Kp与所述键K匹配,将第四条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第十一用于KV写操作的方法,提供了根据本申请第二方面的第十二用于KV写操作的方法,还包括:若第二键Kp与所述键K不匹配,创建冲突表,在冲突表中创建第五条目与第六条目,其中第五条目以对应于所述第二键Kp为索引,并记录第四条目记录的物理地址;第六条目以所述键K为索引,并记录被分配的物理地址;以及将第四条目记录的物理地址更新为冲突表的地址。根据本申请第二方面的第八用于KV写操作的方法,提供了根据本申请第二方面的第十三用于KV写操作的方法,32,根据权利要求27所述的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的第四条目记录了存储读操作要访问的值V的物理地址,比较第四条目记录的第二键Kp的长度与所述键K的长度来识别第二键Kp与所述键K匹配是否匹配。根据本申请第二方面的第十三用于KV写操作的方法,提供了根据本申请第二方面的第十四用于KV写操作的方法,还包括:若第二键Kp与所述键K匹配,将第四条目记录的物理地址更新为被分配的物理地址。根据本申请第二方面的第十三或第十四用于KV写操作的方法,提供了根据本申请第二方面的第十五用于KV写操作的方法,还包括:若第二键Kp与所述键K不匹配,创建冲突表,在冲突表中创建第五条目与第六条目,其中第五条目以对应于所述第二键Kp为索引,并记录第四条目记录的物理地址;第六条目以所述键K为索引,并记录被分配的物理地址;以及将第四条目记录的物理地址更新为冲突表的地址。根据本申请第二方面的第一至第十五用于KV写操作的方法之一,提供了根据本申请第二方面的第十六用于KV写操作的方法,其中所述哈希键的第一部分HK1的长度小于哈希键HK。根据本申请第二方面的第四或第七用于KV写操作的方法,提供了根据本申请第二方面的第十七用于KV写操作的方法,还包括:从存储介质加载第二哈希表。根据本申请的第三方面,提供了根据本申请第三方面的第一KV存储设备,包括控制部件、NVM存储介质和存储器,NVM存储介质记录被写入存储设备的键K与值V;存储器中记录第一哈希表,第一哈希表的条目以哈希键HK的第一部分HK1为索引,并记录被写入存储设备的值V的物理地址或第二哈希表的地址;存储器中还记录第二哈希表,第二哈希表的条目以哈希键HK的第二部分HK2为索引,并记录被写入存储设备的值V的物理地址或冲突表的地址;冲突表的条目以键K为索引,记录被写入存储设备的值V的物理地址。根据本申请第三方面的第一KV存储设备,提供了根据本申请第三方面的第二KV存储设备,其中第一哈希表的条目还记录同作为其索引的哈希键HK的第一部分HK1对应的键K的长度。根据本申请第三方面的第一或第二KV存储设备,提供了根据本申请第三方面的第三KV存储设备,其中第一哈希表的条目还记录同作为其索引的哈希键HK的第二部分HK2对应的键K的长度。根据本申请第三方面的第一至第三KV存储设备之一,提供了根据本申请第三方面的第四KV存储设备,其中所述控制部件执行根据本申请第一方面或第二方面提供的方法之一。根据本申请的第四方面,提供了根据本申请第四方面的第一KV存储设备,包括控制部件、NVM存储介质和存储器,NVM存储介质记录被写入存储设备的键K与值V;存储器中记录第一哈希表与冲突,第一哈希表的条目以哈希键HK的第一部分HK1为索引,并记录被写入存储设备的值V的物理地址或冲突表的地址;冲突表的条目以键K为索引,记录被写入存储设备的值V的物理地址。根据本申请第四方面的第一或第二KV存储设备,其中所述控制部件执行根据本申请第一方面或第二方面提供的方法之一。根据本申请的第五方面,提供了根据本申请第五方面的第一KV存储设备,包括控制部件与非易失存储器芯片,其中,控制部件执行根据本申请第一方面或第二方面提供的方法之一。根据本申请的第六方面,提供了根据本申请第六方面的第一包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行根据本申请第一方面或第二方面提供的方法之一。根据本申请的第七方面,提供了根据本申请第七方面的第一用于KV读操作的系统,包括:键获取模块,用于获取读操作访问的键K;哈希键模块,用于对所述键进行哈希计算得到哈希键HK;第一哈希表查询模块,用于根据所述哈希键的第一部分HK1查询第一哈希表;值获取模块,用于若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。根据本申请的第八方面,提供了根据本申请第八方面的第一用于KV写操作的系统,包括:键获取模块,用于获取写操作访问的键K与为写操作分配的物理地址;哈希键模块,用于对所述键进行哈希计算得到哈希键HK;第一哈希表查询模块,用于根据所述哈希键的第一部分HK1查询第一哈希表;值地址记录模块,用于若所述哈希键的第一部分HK1在第一哈希表中没有对应条目,在第一哈希表中添加以所述哈希键的第一部分HK1为索引,记录了被分配的物理地址的条目。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1A是相关技术中固态存储设备的框图;图1B展示了现有技术的固态存储设备的地址转换系统的示意图;图2是根据本申请实施例的固态存储设备的地址转换系统的示意图;图3是根据本申请实施例的固态存储设备的地址转换系统的详细示意图;图4A是根据图3的实施例的固态存储设备的响应读操作GetK而进行地址转换的流程图;图4B是根据图3的实施例的固态存储设备的响应写操作PutK,V而进行地址转换的流程图;以及图5是根据本申请又一实施例的固态存储设备的地址转换系统的示意图。具体实施方式下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图2是根据本申请实施例的固态存储设备的地址转换系统的示意图。固态存储设备的NVM芯片也参看图1,NVM芯片105提供了多个物理块。物理块被用作数据块。数据块包括物理页或数据帧,用于记录被写入固态存储设备的数据。以物理页为例,图2展示的数据块包括5个物理页。每个物理页包括头部字段分别记为“头部1”、“头部2”……与“头部5”。每个物理页具有物理地址记为PPA,通过使用PPA可访问对应的物理页。物理页中记录了键K与值Value,键Key与值Value是主机写入数据时提供的键Key与值Value。物理页中还记录了头部字段,头部字段用于指示键Key和或值Value的起始地址和或长度。例如图2中由“头部1”所指示的物理页,包括头部字段头部1、键1与值1。头部字段记录了键Key的长度与值Value的长度而头部字段的长度为定值,根据PPA所指示的物理地址和头部字段的长度可计算出键Key的起始地址和值Value的起始地址。在一个例子中,头部字段记录键Key的长度,根据PPA所指示的物理地址和头部字段的长度,以及键Key的长度可计算出值Value的起始地址。以及在又一个例子中,键Key的起始地址是固定的,头部字段记录值Value的起始地址。在又一个例子中,键Key与值Value是不定长的。可选地,物理页中记录多个对。以“头部2”所指示的物理页为例,其中记录的“键2”与“值2”为一对,而“键3”与“值3”为另一对。以及根据“头部2”寻址与的每对。依然可选地,物理页例如图2中由“头部3”所指示的物理页头部字段、键Key和值Value的长度的总和不足以填满物理页,则以填充dummy数据填满物理页。由“头部4”与“头部5”所指示的物理页是物理地址连续的物理页,键5与“值5”是主机写入数据时提供的键Key与值Value。由于“值5”的大小超过了物理页所能容纳的大小,在由“头部4”所指示的物理页中记录了键5与主机提供的值5的一部分,在由“头部5”所指示的物理页中记录了“值5”的余下部分。头部字段“头部4”与“头部5”,用于指示“键5”和“值5”在物理页中的起始地址和或长度。可选地,在头部字段中还记录所占用物理页的数量该数量为2。可选地,依然参看图2的“头部4”与“头部5”所指示的物理页,头部字段以及键Key与值Value的大小不足以填满两个物理页,以填充dummy数据填满由“头部5”所指示的物理页。继续参考图2,主机或用户提供的键Key被经过哈希计算得到哈希键记为HK。可选地,键Key是不定长的,而哈希键HK具有指定的长度。哈希键HK被分为多个部分。例如,哈希键HK分为3部分,分别记为HK1、HK2与HK3。例如,长度为128比特的哈希键,HK1是哈希键HK的前16比特,HK2是哈希键HK的接下来的32比特,而HK3是哈希键HK的其余比特。可以理解地,有多种其他方式将哈希键HK分为多个部分,而不限制选取哈希键HK的比特的方式、顺序和或长度等。依然参看图2,固态存储设备的存储器也参看图1,例如DRAM110中记录多种数据表,包括L1哈希表、可选地L2哈希表与冲突链表。L1哈希表由哈希键HK的部分HK1索引。例如,以HK1作为L1哈希表内的偏移值来获取L1哈希表的条目。L1哈希表的条目记录了数据块的物理页或数据单元地址或L2哈希表的地址。提供一个或多个L2哈希表。L1哈希表的条目,可选地记录L2哈希表的地址,从而依据L1哈希表的条目可寻址L2哈希表。每个L2哈希表由哈希键HK的部分HK2索引。例如,以HK2作为L2哈希表内的偏移值来获取L2哈希表的条目。L2哈希表的条目记录了数据块的物理页或数据单元地址或冲突表的地址。提供一个或多个冲突表。L2哈希表的条目记录冲突表的地址,从而依据L2哈希表的条目可寻址冲突表。每个冲突表由键K索引。冲突表的条目记录了数据块的物理页或数据单元地址。在可选的实施方式中,省略L2哈希表。而L1哈希表的条目记录了数据块的物理页或数据单元地址或冲突表的地址。图3是根据本申请实施例的固态存储设备的地址转换系统的详细示意图。L1哈希表的每个条目由哈希键HK的部分HK1索引,而条目的值是数据块的物理页或数据单元地址或L2哈希表的地址。作为举例,以HK1为地址访问L1哈希表的条目。若L1哈希表的条目记录数据块的物理页或数据单元地址,该地址指示对在NVM存储介质中的存储位置。可以理解地,L1哈希表的索引HK1不同于对的键K。且HK1与键K不是一一对应关系,而是多个键K可能都对应相同的HK1。从而,依据HK1从L1哈希表索引到的数据块的物理页或数据单元地址访问到的,有一定概率不是对应于主机用户所访问的、被用于生成哈希键HK1的键,从而发生错误。在一些情况下,这种错误的发生是极小概率的,并且可以被用户或固态存储设备所遵循的技术标准所接受。在另一些情况下,不能接受这种错误,还要比较从L1哈希表索引到的数据块的物理页或数据单元地址访问到的键K与用户要访问的键Key是否相同,来识别错误是否发生。若L1哈希表的条目记录L2哈希表地址,该地址指示同该条目关联的L2哈希表之一在存储器中的位置。从而该L2哈希表条目也关联于HK1。例如,参看图3,L1哈希表中,以HK1-1为索引的条目,记录了物理地址PPA,以HK1-2为索引的条目,记录了L2哈希表320的地址,以HK1-4为索引的条目,记录了L2哈希表322的地址。L2哈希表的每个条目由哈希键HK的部分HK2索引,而条目的值是数据块的物理页或数据单元地址或冲突表的地址。L2哈希表有一个或多个。图3展示了L2哈希表320与L2哈希表322。作为举例,以HK2为地址访问指定L2哈希表的条目。该指定的L2哈希表关联于HK1。若L2哈希表的条目记录数据块的物理页或数据单元地址,该地址指示对在NVM存储介质中的存储位置。可以理解地,L2哈希表的索引HK2不同于对的键K。且HK2与键K不是一一对应关系,而是多个HK2可能都对应相同的键K。以及HK1与HK2的组合与键K也不是一一对应关系,而是多个键K可能都对应相同的HK1与HK2的组合。若L2哈希表的条目记录冲突表地址,该地址指示同该条目关联的冲突表之一在存储器中的位置。从而该冲突表条目也关联于HK1与HK2的组合。例如,参看图3,L2哈希表320中,以HK2-1为索引的条目,记录了物理地址PPA,而以HK2-2为索引的条目,记录了冲突表地址。冲突表的每个条目由键K索引,而条目的值是数据块的物理页或数据单元地址。图3展示了冲突表340、冲突表342与冲突表344。冲突表是例如数组、链表、线性表或树。可选地,冲突表是排序的,例如按键K的数值排序,以支持通过键K在冲突表中快速查找由键K索引的条目。根据图3所示的实施例,L2哈希表的每个条目关联于HK1与HK2。而多个键记为K1与K2可能都对应相同的HK1与HK2的组合。例如,键K1与键K2都对应的相同的HK1_2与HK2_2的组合,从而依据键K1得到的HK1_2与HK2_2关联于由HK2_2所指示的L2哈希表的条目,依据键K2也得到的HK1_2与HK2_2关联于由HK2_2所指示的L2哈希表的条目。在此情况下,由HK2_2所指示的L2哈希表的条目发生冲突。为解决冲突,创建冲突表340,以记录键K1与其物理地址PPA的关联关系,还记录键K2与其物理地址PPA的关联关系。以及在HK2_2所指示的L2哈希表的条目中记录冲突表340的地址。可选地,L1哈希表与L2哈希表具有指定的大小例如,1KB-4MB,而冲突表的条目数量没有限制。依然可选地,选择L1哈希表与L2哈希表的大小,使其易于被操作系统或内存管理单元MMU,MemoryManagementUnit访问,和或易于存储到NVM存储介质。在可选的实施方式中,省略L2哈希表。而在L1哈希表的条目中记录数据块的物理页或数据单元地址或冲突表的地址。当哈希键HK的长度较小时,省略L2哈希表的方式是有利的。这降低了在地址转换系统中查询的开销。在此实施方式中,用哈希键HK的部分HK1索引L1哈希表。若L1哈希表冲突,用键K索引冲突表,得到对应于键K的物理地址PPA。若L1哈希表不存在冲突,从HK1索引的L1哈希表条目中得到物理地址PPA。在依然可选的实施方式中,固态存储设备中包括多个如图3所示的地址转换系统。而固态存储设备的每个命名空间NameSpace对应如图3所示的地址转换系统之一。图4A是根据图3的实施例的固态存储设备的响应读操作GetK而进行地址转换的流程图。读操作GetK指示根据键K获取对应的值Value。在一个例子中,响应于接收了读操作,获取读操作要访问的键K410。对键K执行指定的哈希操作,得到哈希键HK415。以及按指定的规则获得哈希键的各个部分例如,HK1、HK2与HK3。用哈希键部分HK1查询L1哈希表420。哈希键部分HK1查询L1哈希表,得到HK1在L1哈希表中是否存在冲突425。若不存在冲突,根据HK1索引的L1哈希表条目中获取的物理地址PPA访问NVM存储介质435。由于HK1同键K不是一一对应,还根据物理地址PPA从NVM存储介质读出键Kp,并比较键Kp与键K是否相同。若键Kp与键K相同,则NVM存储介质中同键Kp关联地存储的值,是同键K对应的值,将该值作为读操作的结果。若键Kp与键K不同,则NVM存储介质中同键Kp关联地存储的值,不是同键K对应的值,则指示同键K对应的值在固态存储设备中不存在。可选地,在L1哈希表的条目中还记录键KL1的长度。在依据HK1获取了L1哈希表的条目后,还比较条目中记录的键KL1的长度与键K的长度是否相同,从而更早地识别键KL1与键K不同,并指示同键K对应的值在固态存储设备中不存在。可以理解地,若键KL1的长度与键K的长度相同,并不能确定键KL1与键K的长度相同,还需要从物理地址PPA读出键Kp同键K比较。依然可选地,一些情况下,不同的键K得到相同的HK1的几率极小,并且可以被用户或固态存储设备所遵循的技术标准所接受。在此情况下,依据从L1哈希表获得的物理地址PPA访问NVM存储介质,读出同HK1对应的值作为读操作的结果,而不再检查键Kp与键K是否相同。例如,通过增加HK1的长度或HK1的长度占键K长度的比来降低不同的键K得到相同的HK1的几率,和或通过选取哈希操作的算法,来降低不同的键K得到相同的HK1的几率。返回参看图4A,若哈希键部分HK1在L1哈希表中存在冲突425,根据HK1索引的L1哈希表条目中获取的L2哈希表地址访问L2哈希表,以及根据哈希键部分HK2索引查询L2哈希表430。若HK2在L2哈希表中不存在冲突440,根据HK2索引的L2哈希表条目中获取的物理地址PPA访问NVM存储介质448。由于HK1同键K不是一一对应,还根据物理地址PPA从NVM存储介质读出键Kp,以识别物理地址PPA处存储的是否是同键K对应的值。可选地,同在L1哈希表中应用的方式类似,在L2哈希表中记录键KL2的长度,通过键KL2的长度更早地识别键KL2与键K不同。依然可选地,一些情况下,不同的键K得到相同的NK1与HK2的几率极小,并且可以被用户或固态存储设备所遵循的技术标准所接受。在此情况下,依据从L2哈希表获得的物理地址PPA访问NVM存储介质,读出同HK2对应的值作为读操作的结果,而不再检查识别物理地址PPA处存储的是否是同键K对应的值。返回参看图4A,若HK2在L2哈希表中存在冲突440,根据HK2索引的L2哈希表条目中获取的冲突表地址访问冲突表,以及根据键K查询冲突表445。若从冲突表中查询到同键K匹配的条目,根据从条目中获取的物理地址PPA访问NVM存储介质,读出同键K对应的值,作为读操作的结果。若从冲突表中找不到同键K匹配的条目,则指示同键K对应的值在固态存储设备中不存在作为对读操作的响应。在可选的实施方式中,若哈希键部分HK1在L1哈希表中不存在冲突425,还可能是根据HK1在L1哈希表中未找到任何条目,则指示同键K对应的值在固态存储设备中不存在作为对读操作的响应。类似地,若根据HK2在L2哈希表中未找到任何条目,也则指示同键K对应的值在固态存储设备中不存在作为对读操作的响应。在可选的实施方式中,省略L2哈希表。而在L1哈希表的条目中记录数据块的物理页或数据单元地址或冲突表的地址。以及省略图4A中的步骤430、步骤440与步骤448。在此实施方式中,用哈希键HK的部分HK1索引L1哈希表。若L1哈希表冲突425,用键K索引冲突表,得到对应于键K的物理地址PPA。图4B是根据图3的实施例的固态存储设备的响应写操作PutK,V而进行地址转换的流程图。写操作指示将键K对应的值设置或更新为值V。根据图4B的实施例,响应于收到写操作,获取写操作要访问的键K450,为写操作分配物理地址,将写操作的值V写入分配的物理地址PPA。对键K执行指定的哈希操作,得到哈希键HK455。以及按指定的规则获得哈希键的各个部分例如,HK1、HK2与HK3。用哈希键部分HK1查询L1哈希表458。若HK1在L1哈希表中不存在,或在L1哈希表中不存在以HK1为索引的条目460,更新L1哈希表462,在L1哈希表中添加条目,添加的条目以HK1为索引,在条目中记录分配的物理地址PPA。并且写操作处理完成。若HK1在L1哈希表中存在460,进一步识别HK1在L1哈希表中是否存在冲突464。若不存在冲突,根据HK1索引的L1哈希表条目中获取物理地址PPA访问NVM存储介质,从NVM存储介质读出键Kp,并比较键Kp与键K是否相同466。若键Kp与键K相同466,则将根据HK1索引的L1哈希表条目中记录的物理地址更新为物理地址PPA468,并且写操作处理完成。若键Kp与键K不同466,则在L1哈希表中标记索引HK1存在冲突,生成新的L2哈希表,在新的L2哈希表中记录以根据键Kp得到的哈希键HK2_Kp为索引且以物理地址PPA为值的条目,以及以对应于写操作的键K的哈希键部分HK2为索引且以分配的物理地址为值的条目469。可选地,在L1哈希表的条目中还记录键KL1的长度。在依据HK1获取了L1哈希表的条目后,还比较条目中记录的键KL1的长度与键K的长度是否相同,从而更早地识别键KL1与键K不匹配466。可以理解地,若键KL1的长度与键K的长度相同,并不能确定键KL1与键K匹配,还需要从物理地址PPA读出键Kp同键K比较。可选地,在L2哈希表的条目中还记录键KL2的长度。在依据HK2获取了L2哈希表的条目后,还比较条目中记录的键KL2的长度与键K的长度是否相同,从而更早地识别键KL1与键K不匹配476。可以理解地,若键KL2的长度与键K的长度相同,并不能确定键KL2与键K匹配,还需要从物理地址PPA读出键Kp同键K比较。依然可选地,一些情况下,不同的键K得到相同的HK1的几率极小,并且可以被用户或固态存储设备所遵循的技术标准所接受。在此情况下,若HK1在L1哈希表中不存在冲突464,略过步骤466,将根据HK1索引的L1哈希表条目中记录的物理地址更新为物理地址PPA468。依然可选地,一些情况下,不同的键K得到相同的HK1与HK2的组合的几率极小,并且可以被用户或固态存储设备所遵循的技术标准所接受。在此情况下,若HK2在L2哈希表中不存在冲突472,略过步骤474与步骤476,将根据HK2索引的L2哈希表条目中记录的物理地址更新为物理地址PPA479。回到图4B,若HK1在L1哈希表中存在冲突464,根据HK1索引的L1哈希表条目获取L2哈希表的地址,并用哈希键部分HK2查询L2哈希表470。若HK2在L2哈希表中不存在未示出,或在L2哈希表中不存在以HK2为索引的条目,更新L2哈希表,在L2哈希表中添加条目,添加的条目以HK2为索引,在条目中记录分配的物理地址PPA。并且写操作处理完成。若HK2在L2哈希表中存在,进一步识别HK2在L2哈希表中是否存在冲突472。若不存在冲突,根据HK2索引的L2哈希表条目中获取物理地址PPA访问NVM存储介质474,从NVM存储介质读出键Kp,并比较键Kp与键K是否相同476。若键Kp与键K相同476,则将根据HK2索引的L2哈希表条目中记录的物理地址更新为物理地址PPA479,并且写操作处理完成。若键Kp与键K不同476,则在L2哈希表中标记索引HK2存在冲突,生成新的冲突表,在新的冲突表中记录以键Kp为索引且以物理地址PPA为值的条目,以及以对应于写操作的键K为索引且以分配的物理地址为值的条目478。若HK2在L2哈希表中存在冲突472,根据HK2索引的L2哈希表条目获取冲突表的地址,并用键K查询冲突表480。若在冲突表中,查询到以键K为索引的条目482,用分配的物理地址PPA更新该条目486,若冲突表中不存在以键K为索引的条目482,在冲突表中添加以键K为索引且以分配的物理地址PPA为值的条目484。在可选的实施方式中,省略L2哈希表。而在L1哈希表的条目中记录数据块的物理页或数据单元地址或冲突表的地址。将步骤469修改为,在L1哈希表中标记索引HK1存在冲突,生成新的冲突表,在新的冲突表中记录以键Kp为索引且以物理地址PPA为值的条目,以及以对应于写操作的键K为索引且以分配的物理地址为值的条目。以及省略图4B中的步骤470与步骤472。将步骤480修改为在根据HK1索引的L1哈希表条目获取冲突表的地址,并用键K查询冲突表480。图5是根据本申请又一实施例的固态存储设备的地址转换系统的示意图。固态存储设备的NVM芯片也参看图1,NVM芯片105提供了多个物理块。物理块被用作数据块。数据块包括物理页或数据帧,用于记录被写入固态存储设备的数据。继续参考图5,主机或用户提供的键Key被经过哈希计算得到哈希键记为HK。可选地,键Key是不定长的,而哈希键HK具有指定的长度。哈希键HK被分为多个部分。根据图5展示的实施例中,哈希键HK分为4部分,分别记为HK1、HK2、HK3与HK4。可以理解地,哈希键可被分为其他数量的部分,有多种其他方式将哈希键HK分为多个部分,而不限制选取哈希键HK的比特的方式、顺序和或长度等。依然参看图5,固态存储设备的存储器也参看图1,例如DRAM110中记录多种数据表,包括L1哈希表、可选地L2哈希表、L3哈希表与冲突表。L1哈希表由哈希键HK的部分HK1索引。例如,以HK1作为L1哈希表内的偏移值来获取L1哈希表的条目。L1哈希表的条目记录了数据块的物理页或数据单元地址或L2哈希表的地址。提供一个或多个L2哈希表。L1哈希表的条目,可选地记录L2哈希表的地址,从而依据L1哈希表的条目可寻址L2哈希表。每个L2哈希表由哈希键HK的部分HK2索引。例如,以HK2作为L2哈希表内的偏移值来获取L2哈希表的条目。L2哈希表的条目记录了数据块的物理页或数据单元地址或冲突表的地址。提供一个或多个L3哈希表。L2哈希表的条目,可选地记录L3哈希表的地址,从而依据L2哈希表的条目可寻址L3哈希表。每个L3哈希表由哈希键HK的部分HK3索引。例如,以HK3作为L1哈希表内的偏移值来获取L3哈希表的条目。L3哈希表的条目记录了数据块的物理页或数据单元地址或冲突表的地址。提供一个或多个冲突表。L3哈希表的条目记录冲突表的地址,从而依据L3哈希表的条目可寻址冲突表。每个冲突表所键K索引。冲突表的条目记录了数据块的物理页或数据单元地址。通过提供更多的哈希表层级,来易于在地址转换系统中支持更大的地址空间。可选地,L1哈希表、L2哈希表、L3哈希表和或冲突表具有指定的大小,例如1KB-4MB。选择其大小,使其易于被操作系统或内存管理单元MMU,MemoryManagementUnit访问,和或易于存储到NVM存储介质。例如,当地址空间较大时,L1哈希表、L2哈希表、L3哈希表与冲突表的综合容量也随之增大,而难以在存储器中容纳。将L2哈希表、L3哈希表和或冲突表的部分或全部,在存储器与大容量的NVM存储介质之间交换。被访问的L2哈希表、L3哈希表和或冲突表被加载到内存,而未被访问的L2哈希表、L3哈希表和或冲突表被存储到NVM存储介质。依然可选地,根据本申请实施例的地址转换系统,以用于存储器的虚拟地址或物理地址访问L1哈希表、L2哈希表、L3哈希表和或冲突表。对于采用用于存储器的物理地址的实施方式,L1哈希表、L2哈希表与L3哈希表的条目中记录下一级表的用于存储器的物理地址。而对于采用用于存储器的虚拟地址的实施方式,L1哈希表、L2哈希表与L3哈希表的条目中记录下一级表的用于存储器的虚拟地址。在存储设备中还提供用于存储器的虚拟地址到物理地址的地址管理系统。例如,利用现有技术的操作系统提供的存储器内存管理系统或处理器的内存管理单元来提供用于存储器的虚拟地址到物理地址的转换。根据图5的实施例的固态存储设备的响应读操作GetK而进行地址转换的处理流程,以类似于图4A展示的方法而实施。根据图5的实施例的固态存储设备的响应写操作PutK,V而进行地址转换的处理流程,以类似于图4B展示的方法而实施。根据本申请的实施例还提供了一种固态存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种处理方法。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

权利要求:1.一种用于KV读操作的方法,包括:获取读操作访问的键K;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。2.根据权利要求1所述的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了第二哈希表的地址,根据所述哈希键的第二部分HK2查询第二哈希表。3.根据权利要求1或2所述的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中没有对应条目,指示读操作所访问的键不存在。4.根据权利要求1-3任一项所述的方法,其中所述哈希键的第一部分HK1的长度小于哈希键HK;以及所述哈希键的第二部分HK1的长度小于哈希键HK。5.根据权利要求1-4任一项所述的方法,还包括:从所述第一数据获取第一键Kp,若第一键Kp与所述键K匹配,用从所述第一数据获取的值V响应所述读操作。6.根据权利要求2所述的方法,还包括:若所述哈希键的第二部分HK2在第二哈希表中对应的条目记录了存储读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第二数据。7.根据权利要求1-4任一项所述的方法,还包括:从所述哈希键的第一部分HK1在第一哈希表中对应的条目获取第一键Kp的长度,比较第一Kp键的长度与所述键K的长度来识别第一键Kp与所述键K是否匹配。8.一种用于KV写操作的方法,包括:获取写操作访问的键K与为写操作分配的物理地址;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中没有对应条目,在第一哈希表中添加以所述哈希键的第一部分HK1为索引,记录了被分配的物理地址的条目。9.根据权利要求8所述的方法,还包括:若所述哈希键的第一部分HK1在第一哈希表中对应的第一条目记录了存储读操作要访问的值V的物理地址,将第一条目记录的物理地址更新为被分配的物理地址。10.一种KV存储设备,包括控制部件、NVM存储介质和存储器,NVM存储介质记录被写入存储设备的键K与值V;存储器中记录第一哈希表与冲突,第一哈希表的条目以哈希键HK的第一部分HK1为索引,并记录被写入存储设备的值V的物理地址或冲突表的地址;冲突表的条目以键K为索引,记录被写入存储设备的值V的物理地址。

百度查询: 北京忆恒创源科技股份有限公司 KV存储设备的地址转换方法与系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。