CN115793989A - 一种基于NAND的NVMe KV SSD数据管理方法 - Google Patents

一种基于NAND的NVMe KV SSD数据管理方法 Download PDF

Info

Publication number
CN115793989A
CN115793989A CN202310066360.0A CN202310066360A CN115793989A CN 115793989 A CN115793989 A CN 115793989A CN 202310066360 A CN202310066360 A CN 202310066360A CN 115793989 A CN115793989 A CN 115793989A
Authority
CN
China
Prior art keywords
key
byte
value
node
nand
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.)
Granted
Application number
CN202310066360.0A
Other languages
English (en)
Other versions
CN115793989B (zh
Inventor
王展南
李庭育
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Huacun Electronic Technology Co Ltd
Original Assignee
Jiangsu Huacun Electronic Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Huacun Electronic Technology Co Ltd filed Critical Jiangsu Huacun Electronic Technology Co Ltd
Priority to CN202310066360.0A priority Critical patent/CN115793989B/zh
Publication of CN115793989A publication Critical patent/CN115793989A/zh
Application granted granted Critical
Publication of CN115793989B publication Critical patent/CN115793989B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于NAND的NVMe KV SSD数据管理方法,本数据管理方法包括以下步骤:S1、写入时根据Key Entry Table的Key Value Entries数量是否满630个判定后续处理;S2、读取时根据Key从最小一个Byte每次提取一个Byte(Node)来和128比较,包括以下情况:Byte(Node)值大于128、Byte(Node)值小于128;Byte(Node)值指向NULL;Byte(Node)值指向Memory;Byte(Node)值为Key PBA。本发明用Key的每个Byte的值大小做逻辑二分法,使得Key与NAND Flash的操作具有逻辑与实体对应关系,以利读取,最多只对NAND Flash读一次Key Value Entry Table表块,也只会利用HW accelerator硬件加速器来帮忙查询比对一次,提高处理速度,并且有Key Value Entry才会配置内存存给Key Value Entry Table表块,不会有空表占内存。

Description

一种基于NAND的NVMe KV SSD数据管理方法
技术领域
本发明涉及数据管理技术领域,具体为一种基与NAND的NVMe KV SSD数据管理方法。
背景技术
传统基于NAND 的数据管理方法,Host端下命令是带LBA逻辑地址和length数据长度,FTL(Flash Translation Layer)会用L2P table(逻辑映对实体地址表)和P2L table(实体映对逻辑表)来管理数据,当今NVMe规格书为了更有效并免去Host(主机)端不用多一层档案转逻辑地址的动作推出Key Value SSD规格书,Key Value SSD用一个Key当地址,Value则是Data,不再基于LBA,其优势除Host不用多一层档案转LBA外,用Key当地址在大数据文件时,不用储存和管理大量的FTL表块管理。
现有技术的不足:
因为NAND的特性,传统上FTL用LBA(Logical Block Address)這個有序来对应NAND的实体位圵,但对host file system多一层file to LBA , 所以有 Key Value SSD的规格出现,但 key 沒有逻辑性对应NAND 实体位圵, 目前的实作对读命令不友善,需要多次查找;
由于规格新颖,目前业界推出产品的不多,实作又大多以Hash(哈希算法) 或LSM(Log Structured Merge),存在表块需要不时合并以及多次读取表块的缺点。
发明内容
本发明的目的在于提供一种基于NAND的NVMe KV SSD数据管理方法,以解决上述背景技术中提出的问题。
一种基于NAND的NVMe KV SSD数据管理方法,本数据管理方法包括以下步骤:
S1、写入时根据Key Entry Table的Key Value Entries数量是否满630个判定后续处理;
S2、读取时根据Key从最小一个Byte每次提取一个Byte(Node)来和128比较,包括以下情况:
Byte(Node)值大于128;
Byte(Node)值小于128;
Byte(Node)指标指向NULL;
Byte(Node)指标指向下一个Byte(Node);
Byte(Node)指标指向Memory;
Byte(Node)指标为Key PBA。
作为本发明的进一步改进,本方法步骤S1中当Key Value Entries的数量未满630时,直接Key Entry Cnt+1,将Key Entry 26Bytes加在Memory的后端。
作为本发明的进一步改进,本方法步骤S1中当Key Value Entries的数量满630时,将该Table split成下一个Key Byte的二个Key Entry Tables,并根据Byte与128大小判定Entries的位置。
作为本发明的进一步改进,本方法中Byte≥128时,Entries分到左边的 Memory;
Byte<128时,Entries分到右边的Memory;
630个Key Byte均在同一个表中,则继续Table Split。
作为本发明的进一步改进,本方法中Key Value的 Key为:
Key Value Entry = KeyLength 2Bytes + KeyLow 8 Bytes + KeyHigh 8Bytes+ ValueLength 4B+4Byte Value PBA,具体为:
指出数据在哪一个NAND Die, Block Number和Page address以及在Page中的偏移位置,每一个Key Value Entry 有26 Bytes,并且一个NAND Page有16KB, 有4B可以存储KeyEntryCnt,用于记录该Page的Key Value Entry数量,可以存储630个Key ValueEntries 的长度。
作为本发明的进一步改进,本方法步骤S2中Byte(Node)值大于等于128则看左指标的指向。
作为本发明的进一步改进,本方法步骤S2中Byte(Node)值小于128则看右指标的指向。
作为本发明的进一步改进,本方法步骤S2中Byte(Node)指标指向NULL则回dummy数据。
作为本发明的进一步改进,本方法步骤S2中Byte(Node)指标指向Memory则启动HWAccelerator硬件加速器, 查到Key再从Key映对的Value PBA从NAND读取KeyValueLength长度的数据到Host,无结果则回dummy数据。
作为本发明的进一步改进,本方法步骤S2中Byte(Node)值为Key PBA,则把该表块的Key Value Entries从NAND Flash读上来,再进行查找Key再读取Value数据。
与现有技术相比,本发明的有益效果是:
本发明利用Key的每个Byte的值大小做逻辑二分法,使得Key与NAND Flash的操作具有逻辑与实体对应关系,以利读取,最多只对NAND Flash读一次Key Value Entry Table表块,也只会利用HW accelerator硬件加速器来帮忙查询比对一次,在这之前都只是对Key的下一个Byte的大小比对和看有无对应的表块或再比下一个 Byte,解决一般Key ValueSSD都对读不友善, 可能要查几次表块影响速率的问题;
本发明中有Key Value Entry才会配置内存存给Key Value Entry Table表块,不会有空表占内存,解决了有些实现会在某一层布置一定表块, 但Key Value SSD的Key容易倾向一边,容易浪费内存空间的问题。
附图说明
图1为本发明一种基于NAND的NVMe KV SSD数据管理方法的流程图;
图2为本发明一种基于NAND的NVMe KV SSD数据管理方法的Key Value Entry 26Bytes的组成图;
图3为本发明一种基于NAND的NVMe KV SSD数据管理方法的一和Key Value EntryTable 16KB可储630 Key Value Entry的示意图;
图4为本发明一种基于NAND的NVMe KV SSD数据管理方法的Host第一次写入KeyValue SS的场景图;
图5为本发明一种基于NAND的NVMe KV SSD数据管理方法的一个Key Value EntryTable写满场景图;
图6为本发明一种基于NAND的NVMe KV SSD数据管理方法的Key Value EntryTable Table Split(分表)的场景图;
图7为本发明一种基于NAND的NVMe KV SSD数据管理方法的Key Value EntryTable Table Split(分表) 再分表的场景图;
图8为本发明一种基于NAND的NVMe KV SSD数据管理方法的Key Value Entry内存占满场景图;
图9为本发明一种基于NAND的NVMe KV SSD数据管理方法的最少用的Key ValueEntry Talb写回NAND并将记忆体配罝给新的Key Value Entry Table场景图;
图10为本发明一种基于NAND的NVMe KV SSD数据管理方法的Host读命令遇到的各种场景图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
请参阅图1-10,本发明提供如下技术方案:一种基于NAND的NVMe KV SSD数据管理方法,本数据管理方法包括以下步骤:
S1、写入时根据Key Entry Table的Key Value Entries数量是否满630个判定后续处理;
Key Value Entries的数量未满630时,直接Key Entry Cnt+1,将Key Entry26Bytes加在 Memory的后端;
当Key Value Entries的数量满630时,将该Table split(分表)成下一个KeyByte的二个Key Entry Tables,并根据Byte与128大小判定Entries的位置;
本方法中Byte≥128时,Entries分到左边的Memory;
Byte<128时,Entries分到右边的Memory;
630个Key Byte均在同一个表中,则继续Table Split(表拆分)。
S2、读取时根据Key从最小一个Byte每次提取一个Byte(Node)来和128比较,包括以下情况:
Byte(Node)值大于等于128则往左;
Byte(Node)值小于128则往右;
Byte(Node)指标指向NULL则回dummy数据;
Byte(Node)指标指向下一个Byte(Node);
Byte(Node)指标指向Memory则启动HW Accelerator硬件加速器, 查到Key再从Key映对的Value PBA从NAND读取KeyValueLength长度的数据到Host,无结果则回dummy数据;
Byte(Node)指标为Key PBA则把该表块的Key Value Entries从NAND Flash读上来,再进行查找Key再读取Value数据;
Byte(Node)值大于等于128则往左搜寻,查看左pointer 指标指向是 :Null(则没写过,回空数据);
是Byte(Node), 往下一个Byte(Node) 再判断值的大小,再往下寻找;
Memory 的位置,即Key Value Entry Table已经在RAM中,直接在RAM中寻找Value的PBA,就可以把数据从NAND读给 Host;
Table的PBA,就先把Key Value Entry Table先从NAND读到Memory,再从Memory查找到Value的PBA,再从NAND把数据读给Host,读命令时,本发明对NAND读取Key ValueEntry Table0次或1次,搜寻Value数据的PBA 1次。
本方法中Key Value的 Key为:
Key Value Entry = KeyLength 2Bytes + KeyLow 8 Bytes + KeyHigh 8Bytes+ ValueLength 4B+4Byte Value PBA,具体为:
指出数据在哪一个NAND Die, Block Number和Page address以及在Page中的偏移位置,每一个Key Value Entry 有26 Bytes,并且一个NAND Page有16KB, 有4B可以存储KeyEntryCnt,用于记录该Page的Key Value Entry数量,可以存储630个Key ValueEntries 的长度。
本方法中首先Key Value Entry 26Bytes,如图2所示,Key Value Entry Table=16384Bytes=630 Key Value Entries=1 Page,如图3所示,First Write–No Table,Node0LPointer ->NULL,Node0 RPointer ->NULL,Key Byte0>= 128,Node0 LPointer 配置memory 16KB,Node0 RPonter ->NULL,Value data write to NAND,Key Value write tomemory,EentryCnt = 1,如图4所示,如果Key Byte0<128, 则配置反过来,当一个KeyEntry Table写满了之后,就要利用下一个Key Byte做 Table Split(分表),Node0 Byte0≥ 128的Key Value Entries = 630,遇到写入Key Byte0也大等128,启动HW Accelerator查找Key Byte是否≥128,将Key Value Table的资料一分为二,、如图5所示,Table Split后,判断Key Byte1 ≥128,将Value data写到Value Open Block,再Key Value写到不同的表中,如图6所示,如果遇到Table Split时,所有的Key Byte都≥ 128或都小于128,就往下一个Key Byte 作Table Split,如所有Key Byte0 ≥128的Key Byte1都≥ 128, 则往KeyByte2 split,再判的要写的Key Byte 1和 Key Byte2来决定写到哪一个Key Value EntryTable,如图7所示,当写遇到Memory能放的Key Value Entry Table都满的时候,而且需要再分配或读取新表时,会根据LRU(Least Recently Use) 把最近最少用的表写到NANDFlash Key Open Block后再配置新表或读新表再写入新Key Value Entry,新写Key ValueByte0~4都≥128, Byte5<128,查找到还没配置 memory,Byte0<128,Byte1<128的KeyValue Table buffer是LRU buffer,假设这个系统只有8块 Key Value Table buffers,如图8所示,先把LRU的表把它写到NAND Flash Key Open Block,存入 PBA(NAND Block Page的地址)再将空的memory配置给新的Key Value table, 再将新的Key Value data写入,如图9所示,读时,按Key Byte0,Byte1,顺序查找,找到指向Null的回dummy data,找到指向buffer,启动HW accelerator硬件加速器查找Key映对的Value PBA,再从NAND Flash把Value data读出,如果Key Byte查找到的是Key Value Table的PBA,那先将Key Valuetable从NAND Flash读到buffer,再查找Value PBA,再读Value data,如图10所示,在当下系统重视QOS(Quality of Service)下,SSD读的速度是被要求的,本发明将Key利用每个Byte的unsigned char,适度逻辑化,除了管理数据方便外,在即便不是有full Key ValueTable memory之下,仍最多只需从NAND Flash读取Key Value Table一次。
本发明中利用Key的每个Byte的值大小做逻辑二分法,使得Key与NAND Flash的操作具有逻辑与实体对应关系,以利读取,最多只对NAND Flash读一次Key Value EntryTable表块,也只会利用HW accelerator 硬件加速器来帮忙查询比对一次,在这之前都只是对Key的下一个Byte的大小比对和看有无对应的表块或再比下一个Byte,克服了一般KeyValue SSD都对读不友善,可能要查几次表块,可是读速度正是QOS quality of Service的重要因素的问题,同时有Key Value Entry才会配置内存存给Key Value Entry Table 表块,不会有空表占内存,解决了有些实现会在某一层布置一定表块,但Key Value SSD的Key容易倾向一边,容易浪费内存空间的问题。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性地包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种基于NAND的NVMe KV SSD数据管理方法,其特征在于:本数据管理方法包括以下步骤:
S1、写入时根据Key Entry Table的Key Value Entries数量是否满630个判定后续处理;
S2、读取时根据Key从最小一个Byte每次提取一个Byte(Node)来和128比较,包括以下情况:
Byte(Node)值大于128;
Byte(Node)值小于128;
Byte(Node)指标指向NULL;
Byte(Node)指标指向下一个Byte(Node);
Byte(Node)指标指向Memory;
Byte(Node)指标为Key PBA。
2.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S1中当Key Value Entries的数量未满630时,直接Key Entry Cnt+1,将Key Entry26Bytes加在 Memory的后端。
3.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S1中当Key Value Entries的数量满630时,将该Table split成下一个Key Byte的二个Key Entry Tables,并根据Byte与128大小判定Entries的位置。
4.根据权利要求3所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法中Byte≥128时,Entries分到左边的Memory;
Byte<128时,Entries分到右边的Memory;
630个Key Byte均在同一个表中,则继续Table Split。
5.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法中Key Value的 Key为:
Key Value Entry = KeyLength 2Bytes + KeyLow 8 Bytes + KeyHigh 8Bytes +ValueLength 4B+4Byte Value PBA,具体为:
指出数据在哪一个NAND Die, Block Number和Page address以及在Page中的偏移位置,每一个Key Value Entry 有26 Bytes,并且一个NAND Page有16KB, 有4B可以存储KeyEntryCnt,用于记录该Page的Key Value Entry数量,可以存储630个Key ValueEntries 的长度。
6.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S2中Byte(Node)值大于等于128则看左指标的指向。
7.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S2中Byte(Node)值小于128则看右指标的指向。
8.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S2中Byte(Node)指标指向NULL则回dummy数据。
9.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S2中Byte(Node)指标指向Memory则启动HW Accelerator硬件加速器, 查到Key再从Key映对的Value PBA从NAND读取KeyValueLength长度的数据到Host,无结果则回dummy数据。
10.根据权利要求1所述的基于NAND的NVMe KV SSD数据管理方法,其特征在于:本方法步骤S2中Byte(Node)值为Key PBA,则把该表块的Key Value Entries从NAND Flash读上来,再进行查找Key再读取Value数据。
CN202310066360.0A 2023-02-06 2023-02-06 一种基于NAND的NVMe KV SSD数据管理方法 Active CN115793989B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310066360.0A CN115793989B (zh) 2023-02-06 2023-02-06 一种基于NAND的NVMe KV SSD数据管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310066360.0A CN115793989B (zh) 2023-02-06 2023-02-06 一种基于NAND的NVMe KV SSD数据管理方法

Publications (2)

Publication Number Publication Date
CN115793989A true CN115793989A (zh) 2023-03-14
CN115793989B CN115793989B (zh) 2023-06-20

Family

ID=85429996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310066360.0A Active CN115793989B (zh) 2023-02-06 2023-02-06 一种基于NAND的NVMe KV SSD数据管理方法

Country Status (1)

Country Link
CN (1) CN115793989B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及系统
AU2013205479A1 (en) * 2012-09-13 2014-03-27 Cognian Technologies Ltd Systems, methods and devices for networking over a network
CN107925420A (zh) * 2015-09-25 2018-04-17 英特尔公司 用于经优化压缩比的异构压缩架构
CN112817530A (zh) * 2021-01-22 2021-05-18 万得信息技术股份有限公司 一种多线程安全高效读写有序数据的方法
WO2022042252A1 (zh) * 2020-08-29 2022-03-03 华为技术有限公司 驱动配置管理方法、装置、介质、设备及系统
CN114415966A (zh) * 2022-01-25 2022-04-29 武汉麓谷科技有限公司 一种kv ssd存储引擎的构建方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722449A (zh) * 2012-05-24 2012-10-10 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及系统
AU2013205479A1 (en) * 2012-09-13 2014-03-27 Cognian Technologies Ltd Systems, methods and devices for networking over a network
CN107925420A (zh) * 2015-09-25 2018-04-17 英特尔公司 用于经优化压缩比的异构压缩架构
WO2022042252A1 (zh) * 2020-08-29 2022-03-03 华为技术有限公司 驱动配置管理方法、装置、介质、设备及系统
CN112817530A (zh) * 2021-01-22 2021-05-18 万得信息技术股份有限公司 一种多线程安全高效读写有序数据的方法
CN114415966A (zh) * 2022-01-25 2022-04-29 武汉麓谷科技有限公司 一种kv ssd存储引擎的构建方法

Also Published As

Publication number Publication date
CN115793989B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
CN107066393B (zh) 提高地址映射表中映射信息密度的方法
US9053013B2 (en) Data storage device and operating method thereof
US9501421B1 (en) Memory sharing and page deduplication using indirect lines
US10275361B2 (en) Managing multiple namespaces in a non-volatile memory (NVM)
JP4064380B2 (ja) 演算処理装置およびその制御方法
JP2017182803A (ja) メモリの重複除去方法及び重複除去dramメモリモジュール
US20210157746A1 (en) Key-value storage device and system including the same
US20080126684A1 (en) Caching method for nand flash translation layer
US9977598B2 (en) Electronic device and a method for managing memory space thereof
CN108121813B (zh) 数据管理方法、装置、系统、存储介质及电子设备
TW201301030A (zh) 在一記憶體裝置中減少次要位址表檢查之快速轉譯指示器
US20110004720A1 (en) Method and apparatus for performing full range random writing on a non-volatile memory
US9892034B2 (en) Semiconductor device and operating method thereof
US20100228914A1 (en) Data caching system and method for implementing large capacity cache
US7877570B2 (en) Consolidation of matching memory pages
US20170286005A1 (en) Virtual bucket multiple hash tables for efficient memory in-line deduplication application
CN109918316B (zh) 一种减少ftl地址映射空间的方法及其系统
CN105095113A (zh) 一种缓存管理方法和系统
EP4137963A1 (en) Persistent key value storage device with hashing and method for operating the same
CN107766258B (zh) 内存存储方法与装置、内存查询方法与装置
CN114546898A (zh) 一种tlb管理方法、装置、设备及存储介质
CN113835639B (zh) 一种i/o请求处理方法、装置、设备及可读存储介质
US11256630B2 (en) Cache address mapping method and related device
CN115793989A (zh) 一种基于NAND的NVMe KV SSD数据管理方法
CN108804571B (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