买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:山东华芯半导体有限公司
摘要:本发明公开一种应用于NVMeSSD控制器的namespace的LBA分配方法和映射方法,基于LMU的方式对SSD控制器中的controller进行组织管理管理,同时基于变体B+树结构对namespace进行LMU分配。在创建namespace时执行controllerLBA的分配。在controllerLBA分配方法时,将所有controllerLBA划分为若干个LBA管理单元LMU,每个LMU包含相同数量的controllerLBA,SSD控制器会以LMU为单位为namespace分配controllerLBA。为了有效利用分配后的controllerLBA,本方法创建度为M的变体B+树数据结构,将可用的LMUID分配给变体B+树叶子结点中的关键字,即完成了本实施例所述的分配方法。本发明可以提升controllerLBA利用率、提高SSD控制器前端读写处理速度。
主权项:1.一种应用于NVMeSSD控制器的namespace的LBA分配方法,namespace指NVMe协议内主机所使用的逻辑空间,LBA指逻辑块地址,其特征在于:所述方法包括以下步骤:S01、SSD控制器将所有controllerLBA等分为NL个LBA管理单元LMU,除最后一个LMU外,每个LMU包括NCL个controllerLBA,controllerLBA指SSD控制器内部的LBA;S02、使用数组结构记录每个LMU的ID和起始controllerLBA,起始controllerLBA记为CLBALMUID-start;S03、SSD控制器接收并解析NVMe协议主机下发的namespace创建请求,获得创建所需要的LBA个数NLBA;S04、通过NLBA和NCL计算需要分配的LMU个数NNL,代表向上取整;S05、以集合S={NCL,2NCL,3NCL,…,NNL*NCL}中的所有元素为关键字创建度为M的变体B+树数据结构,创建流程为:S51、新建结点,并将其作为当前结点;S52、将集合S中的首个元素作为关键字插入当前接点中,并从S中删除该元素;S53、判断当前结点包含的关键字个数,如果关键字个数小于或者等于M-1,则执行步骤S54,否则执行步骤S55;S54、判断S中元素是否为空,是则结束,否则返回步骤S52;S55、以当前结点中第个关键字为中心,代表向下取整,将当前结点分裂为两个结点;S56、将第个关键字按从大到小的顺序插入父结点,该关键字的左边指针指向当前结点分裂后的左边结点,右边指针指向分裂后的右边结点,并将父结点作为当前结点;返回步骤S53;S06、为变体B+树的叶子节点中的每个关键字分配可用的LMUID,变体B+树数据结构创建完成,对namespace的LBA的分配也完成。
全文数据:应用于NVMeSSD控制器的namespace的LBA分配方法和映射方法技术领域本发明涉及基于NVMeNon-VolatileMemoryexpress协议的SSDsolidstatedisk,固态硬盘控制器领域,尤其涉及NVMe协议中多namespace命名空间的LBAlogicblockaddress,逻辑块地址分配方法和LBA映射方法。背景技术一个NVMeSSD主要由SSD控制器、闪存空间和PCIe接口组成。NVMe协议支持主机使用若干独立的逻辑空间经由SSD控制器来管理闪存空间,这样划分出来的每一个逻辑空间称为namespace。每个namespace由若干LBA组成,LBA范围是0到N-1N是namespace包含的LBA个数,一个LBA大小则通常指定为4KB,这里将这类LBA称之为namespaceLBA。每个namespace都有其特定ID,主机在发送读写SSD命令时,通过指定namespaceID和namespaceLBA对闪存相关位置进行操作。在企业级SSD中,客户可以根据不同需求创建不同特征的namespace,即在一个SSD上创建出若干个不同特征的磁盘供不同客户使用。Namespace的另外一个重要使用场合为SR-IOVSingleRoot-IOVirtualization。SR-IOV技术允许在虚拟机之间高效共享PCIe设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的IO性能。单个SSD可由许多虚拟机共享,共享SSD不仅要为每个虚拟机提供专用资源专用namespace,并且还要提供通用资源公有namespace。因此,在NVMeSSD设备中实现多namespace支持符合企业级SSD的发展趋势。主机在对SSD设备执行读写操作时,SSD控制器会根据所接收的namespaceID将namespaceLBA转换为controllerLBA。ControllerLBA是SSD管理闪存空间的基本单元,大小通常也为4K。在主机申请创建namespace时,SSD控制器会将指定数目的可用controllerLBA分配到新的namespace中,这些被分配的controllerLBA通常情况下不会从0开始,有时甚至不会彼此连续。主机对于此类情况无法感知,因为controllerLBA对于主机是透明的,主机只知道新创建的namespace所包含的namespaceLBA是连续的。因此,设计并实现合理高效的controllerLBA分配方案和namespaceLBA到controllerLBA的映射方案,对于提升controllerLBA利用率、提高SSD控制器前端读写处理速度是非常具有现实意义的。发明内容本发明要解决的技术问题是提供一种应用于NVMeSSD控制器的namespace的LBA分配方法和映射方法,提升controllerLBA利用率、提高SSD控制器前端读写处理速度。为了解决所述技术问题,本发明采用的技术方案是:一种应用于NVMeSSD控制器的namespace的LBA分配方法,namespace指NVMe协议主机中划分的逻辑空间,LBA指逻辑块地址,所述方法包括以下步骤:S01、SSD控制器将所有controllerLBA等分为NL个LBA管理单元LMU,除最后一个LMU外,每个LMU包括NCL个controllerLBA,controllerLBA指SSD控制器内部的LBA;S02、使用数组结构记录每个LMU的ID和起始controllerLBA,起始controllerLBA记为CLBALMUID-start,;S03、SSD控制器控制器接收并解析NVMe协议主机下发的namespace创建请求,获得创建所需要的LBA个数NLBA;S04、通过NLBA和NCL计算需要分配的LMU个数NNL,代表向上取整;S05、以集合S={NCL,2NCL,3NCL,…,NNL*NCL}中的所有元素为关键字创建度为M的变体B+树数据结构,创建流程为:S51、新建结点,并将其作为当前结点;S52、将集合S中的首个元素作为关键字插入当前接点中,并从S中删除该元素;S53、判断当前结点包含的关键字个数,如果关键字个数小于或者等于M-1,则执行步骤S54,否则执行步骤S55;S54、判断S中元素是否为空,是则结束,否则返回步骤S52;S55、以当前结点中第个关键字为中心,代表向下取整,将当前结点分裂为两个结点;S56、将第个关键字按从大到小的顺序插入父结点,该关键字的左边指针指向当前结点分裂后的左边结点,右边指针指向分裂后的右边结点,并将父结点作为当前结点;返回步骤c;S06、为变体B+树的叶子节点中的每个关键字分配可用的LMUID,变体B+树数据结构创建完成,对namespace的LBA的分配也完成。进一步的,步骤S55中,第个关键字包含在右边结点内。进一步的,步骤S56中,将关键字插入父结点时,若无父结点则新建父结点。进一步的,新创建的度为M的变体B+树具有以下特性:任意非叶子结点最多只有M个儿子,且M2;根结点的儿子数为[2,M];除根结点以外的非叶子结点的儿子数为[M2,M];每个结点存放至少至多M-1个关键字,且关键字为LMU所包含controllerLBA数目的整数倍;非叶子结点的关键字个数比指向儿子的指针个数小1;非叶子结点的关键字为K[1],K[2],…,K[M-1],且K[i]2;根结点的儿子数为[2,M];除根结点以外的非叶子结点的儿子数为[M2,M];每个结点存放至少至多M-1个关键字,且关键字为LMU所包含controllerLBA数目的整数倍;非叶子结点的关键字个数比指向儿子的指针个数小1;非叶子结点的关键字为K[1],K[2],…,K[M-1],且K[i]K[i+1];非叶子结点的指针为P[1],P[2],…,P[M],其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于等于K[M-1]的子树,其它P[i]指向关键字属于[K[i-1],K[i]的子树;所有叶子结点位于同一层,叶子结点中每个关键字关联一个LMU,所有关键字有序排列。如图1所示,为本实施例中对controllerLBA进行等分的示意图,其中NC表示SSD控制器中controllerLBA总个数,NL表示SSD控制器中LMU总个数,NCL表示每个LMU所包含的controllerLBA个数,LMU从0开始计数。由图可知,每个LMU都有其特定的起始controllerLBA和终止controllerLBA。除最后一个LMU之外,所有LMU所包含的controllerLBA个数均为NCL,最后一个LMU则包含NC-NL-1*NCL个controllerLBA。主机下发namespace创建请求时,SSD控制器会根据请求指定的空间大小为新的namespace分配可用的LMU。如果指定空间大小指定的LBA个数NLBA不是NCL的整数倍,则为其分配个LMU。在主机对namespace执行读写操作时,SSD设备通过解析namespaceID和namespaceLBA来对LMUID进行定位,进而计算出实际要操作的controllerLBA。如图2所示,为本实施例创建的度为M的变体B+树数据结构的示意图,图中所示的叶子结点共分配了9个LMU,该树就是LBA分配的结果。实施例2本实施例公开一种应用于NVMeSSD控制器的针对namespace的LBA映射方法,本映射方法实现namespaceLBA到controllerLBA的转换,所述namespaceLBA经过实施例1分配产生,如图4所示,包括以下步骤:S01、SSD控制器解析主机下发的读写请求,获得namespaceID和namespaceLBA,namespaceID记为NLBAnamespaceID;S02、以namespaceID对应的变体B+树根结点作为当前结点;S03、在当前结点中遍历其关键字,找到关键字Ki-1,若满足Ki-1≤NLBAnamespaceID,将大于Ki-1的子结点作为当前结点;S04、判断当前结点是否为叶子结点,是则继续,否则返回步骤S03;S05、在当前叶子结点遍历其关键字,找到关键字Kj,如果满足NLBAnamespaceID≤Kj,找到Kj所关联的LMU;S06、计算namespaceLBA对应的controllerLBA,计算方式为:CLBAnamespaceID_NLBA=NLBAnamespaceID-Kj-1+CLBALMUID_start,CLBAnamespaceID_NLBA就是namespaceLBA对应的controllerLBA,至此,映射流程结束。本实施例中,步骤S03中遍历当前结点关键字时,同时寻找关键字Ki,并且满足Ki-1≤NLBAnamespaceID≤Ki时,将Ki-1和Ki之间的子节点作为当前结点。本实施例中,步骤步骤S03中遍历当前结点关键字时,同时寻找关键字Kj-1,并且满足Kj-1≤NLBAnamespaceID≤Kj时,找到Kj所关联的LMU。如图2所述,namespace共分配了9个LMU,这些LMU并不连续,即namespace中所包含的controllerLBA无法保证完全连续。在主机对某个namespace执行读写操作时,namespaceLBA的值可能会跨越多个LMU,此时需要计算namespaceLBA在namespace中所对应的LMU索引,再根据LMU索引找到controllerLBA。在不采取任何优化方案的情况下,通过除法运算namespaceLBALMU可以计算出namespaceLBA在namespace中所对应的LMU索引,然而这种方式在随机读写操作中严重影响执行效率。由于无法保证每个LMU所包含的controllerLBA数目为2的幂次方,因此无法使用位运算代替除法运算。基于此,本实施例所述的LBA映射方法采用度为4的变体B+树数据结构来存储和管理namespace中的LMU,其中关键字Ki用于索引namespaceLBA范围,NCL仍表示每个LMU所包含的controllerLBA个数。根结点和非叶子结点中,Ki左边的子结点所包含的namespaceLBA均小于Ki,Ki右边的子结点所包含的namespaceLBA则大于等于Ki。叶子结点中,每个Ki指向所对应的LMUID,该Ki描述了namespaceLBA的范围,范围为[Ki-NCL,Ki-1];LMUID描述了namespaceLBA对应的controllerLBA的范围,该范围为[LMU_ID*NCL,LMU_ID+1*NCL-1]。例如,如果叶子结点中的关键字为5NCL,那么当一个namespaceLBA通过树结构进行查找并定位找到叶子结点中的该关键字时,即表示该namespaceLBA值的范围是[4NCL,5NCL-1],它所对应的controllerLBA位于LMU21中,controllerLBA的范围是[21NCL,22NCL-1].基于该变体B+树索引结构,在输入namespaceLBA后最多执行logM-1*N~logM2*N次查找即可定位namespaceLBA所对应的LMU,相较于除法运算更为高效。本发明提出的一种应用于NVMeSSD控制器中的LBA分配方法和映射方法,针对SSD设备multi-namespace特性进行了controllerLBA的分配优化和存储优化。基于B+树变体数据结构对namespace所包含的controllerLBA进行管理,减少了SSD设备对controllerLBA的管理成本,同时提高了namespaceLBA的映射效率,进而完成了SSD设备读写操作的速度优化。以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
权利要求:1.一种应用于NVMeSSD控制器的namespace的LBA分配方法,namespace指NVMe协议内主机所使用的逻辑空间,LBA指逻辑块地址,其特征在于:所述方法包括以下步骤:S01、SSD控制器将所有controllerLBA等分为NL个LBA管理单元LMU,除最后一个LMU外,每个LMU包括NCL个controllerLBA,controllerLBA指SSD控制器内部的LBA;S02、使用数组结构记录每个LMU的ID和起始controllerLBA,起始controllerLBA记为CLBALMUID-start,;S03、SSD控制器控制器接收并解析NVMe协议主机下发的namespace创建请求,获得创建所需要的LBA个数NLBA;S04、通过NLBA和NCL计算需要分配的LMU个数NNL,代表向上取整;S05、以集合S={NCL,2NCL,3NCL,…,NNL*NCL}中的所有元素为关键字创建度为M的变体B+树数据结构,创建流程为:S51、新建结点,并将其作为当前结点;S52、将集合S中的首个元素作为关键字插入当前接点中,并从S中删除该元素;S53、判断当前结点包含的关键字个数,如果关键字个数小于或者等于M-1,则执行步骤S54,否则执行步骤S55;S54、判断S中元素是否为空,是则结束,否则返回步骤S52;S55、以当前结点中第个关键字为中心,代表向下取整,将当前结点分裂为两个结点;S56、将第个关键字按从大到小的顺序插入父结点,该关键字的左边指针指向当前结点分裂后的左边结点,右边指针指向分裂后的右边结点,并将父结点作为当前结点;返回步骤S53;S06、为变体B+树的叶子节点中的每个关键字分配可用的LMUID,变体B+树数据结构创建完成,对namespace的LBA的分配也完成。2.根据权利要求1所述的NVMeSSD控制器的namespace的LBA分配方法,其特征在于:步骤S55中,第个关键字包含在右边结点内。3.根据权利要求1所述的NVMeSSD控制器的namespace的LBA分配方法,其特征在于:步骤S56中,将关键字插入父结点时,若无父结点则新建父结点。4.根据权利要求1所述的NVMeSSD控制器的namespace的LBA分配方法,其特征在于,新创建的度为M的变体B+树相比一般B+树具有以下特性:结点中关键字K[i]的值应为LMU所包含controllerLBA数目的整数倍;非叶子结点的指针为P[1],P[2],…,P[M],其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于等于K[M-1]的子树,其它P[i]指向关键字属于[K[i-1],K[i]的子树;叶子结点中每个关键字关联一个LMUID。5.一种应用于NVMeSSD控制器的namespace的LBA映射方法,namespace指NVMe协议主机中划分的逻辑空间,LBA指逻辑块地址,其特征在于,本映射方法实现namespaceLBA到controllerLBA的转换,所述namespaceLBA经过权利要求1分配产生,包括以下步骤:S01、SSD控制器解析主机下发的读写请求,获得namespaceID和namespaceLBA,namespaceID记为NLBAnamespaceID;S02、以namespaceID对应的变体B+树根结点作为当前结点;S03、在当前结点中遍历其关键字,找到关键字Ki-1和Ki,若满足Ki-1≤NLBAnamespaceID≤Ki,将Ki-1和Ki间的子结点作为当前结点;S04、判断当前结点是否为叶子结点,是则继续,否则返回步骤S03;S05、在当前叶子结点遍历其关键字,找到关键字Kj-1和Kj,如果满足Kj-1≤NLBAnamespaceID≤Kj,找到Kj所关联的LMU;S06、计算namespaceLBA对应的controllerLBA,计算方式为:CLBAnamespaceID_NLBA=NLBAnamespaceID-Kj-1+CLBALMUID_start,CLBAnamespaceID_NLBA就是namespaceLBA对应的controllerLBA,至此,映射流程结束。6.根据权利要求5所述的应用于NVMeSSD控制器的namespace的LBA映射方法,其特征在于:步骤S03中遍历当前结点关键字时,如果不存在NLBAnamespaceID≤Ki,仅满足Ki-1≤NLBAnamespaceID,则将大于Ki-1的子节点作为当前结点。7.根据权利要求5所述的应用于NVMeSSD控制器的namespace的LBA映射方法,其特征在于:步骤S05中遍历当前结点关键字时,如果不存在Kj-1≤NLBAnamespaceID,仅满足NLBAnamespaceID≤Kj时,找到Kj所关联的LMU。
百度查询: 山东华芯半导体有限公司 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。