CN116633900A - 逻辑地址分配方法、装置、电子设备及存储介质 - Google Patents
逻辑地址分配方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116633900A CN116633900A CN202310646550.XA CN202310646550A CN116633900A CN 116633900 A CN116633900 A CN 116633900A CN 202310646550 A CN202310646550 A CN 202310646550A CN 116633900 A CN116633900 A CN 116633900A
- Authority
- CN
- China
- Prior art keywords
- target
- hash
- logical address
- hash value
- virtual machine
- 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 76
- 238000012545 processing Methods 0.000 claims description 37
- 238000013507 mapping Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 14
- 230000003139 buffering effect Effects 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/76—Routing in software-defined topologies, e.g. routing between virtual machines
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种逻辑地址分配方法、装置、电子设备及存储介质,通过接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址;基于第一请求进行哈希运算,得到第一哈希值,第一哈希值用于指示提交队列条目;获取目标虚拟机单元对应的目标哈希表,并基于第一哈希值查询目标哈希表,得到第一哈希值所归属的目标哈希桶;基于目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与哈希桶标识对应的目标逻辑地址;将目标逻辑地址注册为生成提交队列条目对应的逻辑地址,实现了提交队列条目的逻辑地址的快速注册,提高逻辑地址的分配效率,降低逻辑地址分配过程中的资源占用。
Description
技术领域
本公开实施例涉及数据存储技术领域,尤其涉及一种逻辑地址分配方法、装置、电子设备及存储介质。
背景技术
设备虚拟化在云计算发展中扮演非常重要的角色,现有技术中,在通过一个或多个非易失性内存主机控制器接口规范(NVM Express,NVMe)的存储介质为虚拟机单元提供存储空间时,由中央处理器分散处理单元(Data Processing Unit,DPU)基于链表来统一管理多个虚拟机单元的逻辑地址,从而实现虚拟机至存储介质的逻辑映射。
然而,现有技术中通过链表对虚拟机单元的逻辑地址进行分配的方案,存在效率低下、资源占用高的问题。
发明内容
本公开实施例提供一种逻辑地址分配方法、装置、电子设备及存储介质,以克服逻辑地址分配过程中存在的效率低下、资源占用高的问题。
第一方面,本公开实施例提供一种逻辑地址分配方法,包括:
接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;基于所述第一请求进行哈希运算,得到第一哈希值,所述第一哈希值用于指示所述提交队列条目;获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址;将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
第二方面,本公开实施例提供一种逻辑地址分配装置,包括:
接收模块,用于接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;
计算模块,用于基于所述第一请求进行哈希运算,得到第一哈希值;
第一分配模块,用于获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;
第二分配模块,用于基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,并将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
第三方面,本公开实施例提供一种电子设备,包括:
处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
本实施例提供的逻辑地址分配方法、装置、电子设备及存储介质,通过接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;基于所述第一请求进行哈希运算,得到第一哈希值,所述第一哈希值用于指示所述提交队列条目;获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址;将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。通过响应第一请求进行哈希计算,得到表征提交队列条目的第一哈希值,再依次基于第一哈希值映射至目标哈希桶、由目标哈希桶映射至提交队列条目所对应的目标逻辑地址,由于基于哈希映射的查表方式相对链表查询方式更加高效,且无需消耗额外存储空间存储链表数据,因此实现了提交队列条目的逻辑地址的快速注册,提高逻辑地址的分配效率,降低逻辑地址分配过程中的资源占用。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的逻辑地址分配方法的一种应用场景图;
图2为本公开实施例提供的逻辑地址分配方法的流程示意图一;
图3为图2所示实施例中步骤S102的具体实现方式的流程图;
图4为本公开实施例提供的一种第一请求的数据结构示意图;
图5为本公开实施例提供的逻辑地址分配方法的流程示意图二;
图6为本公开提供的一种确定哈希桶标识的过程示意图;
图7为本公开实施例提供的一种位图数据的示意图;
图8为本公开实施例提供的一种处理提交队列条目的过程示意图;
图9为本公开实施例提供的逻辑地址分配方法的流程示意图三;
图10为图9所示实施例中步骤S306的具体实现方式的流程图;
图11为图10所示实施例中步骤S3063的具体实现方式的流程图;
图12为本公开实施例提供的一种处理完成队列条目的过程示意图;
图13为本公开实施例提供的逻辑地址分配装置的结构框图;
图14为本公开实施例提供的一种电子设备的结构示意图;
图15为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
下面对本公开实施例的应用场景进行解释:
图1为本公开实施例提供的逻辑地址分配方法的一种应用场景图,本公开实施例提供的逻辑地址分配方法,可以应用于分布式计算、虚拟机管理、运行等应用场景。具体地,本公开实施例提供的方法,可以应用于中央处理器分散处理单元(DPU,后续简称分散处理单元),或包括分散处理单元的电子设备,例如虚拟机服务器。参考图1所示,在电子设备内设置有分散处理单元和固态硬盘(Solid State Disk,SSD),其中,分散处理单元一端通过高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)接口与多个虚拟机单元(软件单元)通信,另一端与基于NVMe协议的固态硬盘通信,其中,分散处理单元中包括NVMe控制器,通过NVMe控制器实现对虚拟机单元的逻辑地址管理、分配,从而实现虚拟机单元与固态硬盘之间的映射,使固态硬盘为多个虚拟机单元提供独立的存储介质,实现虚拟机单元的灵活配置。
现有技术中,针对各虚拟机单元,NVMe控制器会为其分配对应的逻辑地址,其中,具体地,每一个虚拟机单元对应一个命名空间(namespace),每一个命名空间最多可申请预设数量的逻辑地址。当有N个虚拟机单元运行时,NVMe控制器需要维护N个链表来保存其对应的命名空间中的地址信息。之后,在NVMe控制器接收到用于读或写指令的提交队列条目(Submission Queue Entries,SQE)时,NVMe控制器为该提交队列条目分配一个逻辑地址,通过该逻辑地址可以实现与物理存储介质的映射,从而实现对应读写指令的执行。然而,在实际应用过程中,通过链表为提交队列条目分配地址的方案,由于链表本身的特效,通过链表查找对应的逻辑地址,效率低下,且链表的维护需要消耗大量存储资源,因此导致了地方分配效率低下、资源占用高的问题。本公开实施例提供一种逻辑地址分配方法以解决上述问题。
参考图2,图2为本公开实施例提供的逻辑地址分配方法的流程示意图一。本实施例的方法可以应用与分散处理单元或包括分散处理单元的电子设备,该逻辑地址分配方法包括:
步骤S101:接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址。
示例性地,本实施例所提供方法的执行主体,可以为分散处理单元芯片,或者包括该分散处理单元芯片的设备,例如网卡设备,实施例中简称为分散处理单元。参考图1所示的应用场景示意图,目标虚拟机单元是多个与分散处理单元通信连接的虚拟机单元之一,其中,虚拟机单元是指运行在同一个电子设备或多个电子设备中的虚拟机程序、计算线程、计算单元等,虚拟机单元可以通过为其分配的计算核心、线程、内存和存储空间,独立的执行运算指令。
进一步地,当在目标虚拟机需要执行例如读写指令时,需要为该指令创建、注册对应的逻辑地址,从而实现应用层指令至物理层的映射,其中,上述读写指令的执行通过提交队列(Submission Queue,SQ)和完成队列(Completion Queue,CQ)实现。分散处理单元通过NVMe控制器在内存中创建上述提交队列和完成队列,虚拟机单元向发送存储介质发送的读写指令会存储在提交队列中,之后再由存储介质从提交队列中获得上述读写指令。之后,当存储介质执行完上述读写指令后,将执行完的读写指令存储在完成队列中,虚拟机单元通过读取完成队列中的信息,即可确定之前发送的读写指令已执行完毕,其中,位于上述提交队列中的元素(指令信息),即为提交队列条目(Submission Queue Entry);位于上述完成队列中的元素(指令信息),即为完成队列条目(Completion Queue Entry);上述提交队列、完成队列、提交队列元素和完成队列元素的具体实现方式为本领域技术人员知晓的现有技术,此处不再一一赘述。
进一步地,当虚拟机单元需要执行读写指令时,会向分散处理单元发送第一请求,来请求分散处理单元为用于执行读写指令的提交队列条目注册相应的逻辑地址,其中,对于每一个虚拟机单元,其所拥有的逻辑地址为有限的,例如虚拟机单元A,对应的逻辑地址包括addr_0至adrr_255。即虚拟机单元A一共具有最多256个可用的逻辑地址,在虚拟机单元执行读写指令时,可以从上述256个可用的逻辑地址中注册一个,作为提交队列条目的逻辑地址。之后,基于该逻辑地址,以及提交队列条目中的信息进行映射,即可得到所对应的磁盘物理地址,从而完成读写指令的执行。在后续步骤中对该过程进行详细介绍。
步骤S102:基于第一请求进行哈希运算,得到第一哈希值,第一哈希值用于指示提交队列条目。
示例性地,在分散处理单元得到第一请求后,根据第一请求中所携带的表征目标虚拟机单元的提交队列条目的识别信息,进行哈希运算,得到一个用于指示该提交队列条目的哈希值,即第一哈希值。其中,一种可能的实现方式中,第一请求中包括目标虚拟机单元的单元标识和提交队列条目的条目标识,如图3所示,示例性地,步骤S102的具体实现步骤包括:
步骤S1021:组合单元标识和条目标识,得到第一位置标识。
步骤S1022:基于目标哈希算法,对第一位置标识进行处理,得到第一哈希值。
图4为本公开实施例提供的一种第一请求的数据结构示意图,如图4所示,在第一请求的d1字段位置,存储有虚拟机单元的单元标识dev_1(图中示为dev_1),而在第一请求的d2字段位置,存储有提交队列条目的条目标识info_1(图中示为info_1),进一步地,示例性地,该条目标识info_1,可以是基于系统时间生成的针对该提交队列条目的唯一识别码,也可以上述提交队列条目所对应的操作类型、数据长度、起始磁盘地址等信息的集合。通过组合d1字段位置的单元标识dev_1和d2字段位置的条目标识info_1,例如将dev_1所对应的字符和info_1所对应的字符进行拼接,得到第一位置标识[dev_1,info_1],当然,在其他可能的实现方式中,还可以进一步结合其他信息生成第一位置标识,例如,进一步组合d3字段(图中未示出)位置的参考信息info_2,生成第一位置标识[dev_1,info_1,info_2],从而实现对提交队列条目更加精准的表征。之后,以第一位置标识为哈希输入值(即key值),进行哈希运行(图中示为hash(pos_1)),得到的哈希运算结果即为第一哈希值。
步骤S103:获取目标虚拟机单元对应的目标哈希表,并基于第一哈希值查询目标哈希表,得到第一哈希值所归属的目标哈希桶。
步骤S104:基于目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与哈希桶标识对应的目标逻辑地址。
示例性地,在接收到目标虚拟机单元发送的第一请求后,基于第一请求中的识别信息进行哈希计算,得到第一哈希值后,通过查询目标哈希表,来来确定该第一哈希值的位置。具体地,首先根据第一请求中表征目标虚拟机单元的单元标识,确定与目标虚拟机单元所对应的目标哈希表,其中,每一虚拟机单元均对应一个哈希表。通过单元标识和预设的映射关系,可以得到唯一的一个哈希表,即目标哈希表。该目标哈希表表征虚拟机单元与对应的哈希桶的映射关系,也即,表征虚拟机单元的单元标识和目标哈希桶的哈希桶标识的映射关系。其中,哈希桶标识表征第一哈希值所归属的目标哈希桶,哈希桶是一组哈希值的集合,目标哈希桶即包含第一哈希值的哈希桶。进一步地,哈希桶是由多个哈希槽构成的数据结构,通过哈希桶中的哈希槽对哈希值进行存储,从而实现多对一的哈希映射关系,使多个哈希值映射至同一个逻辑地址。
进一步地,通过第一哈希值查询目标哈希表后,得到目标哈希桶,之后,从当前可用的逻辑地址中,基于目标哈希桶的哈希桶标识,为该目标哈希桶分配一个可用的逻辑地址,即目标逻辑地址。
步骤S105:将目标逻辑地址注册为生成提交队列条目对应的逻辑地址。
示例性地,进一步地,在得到目标逻辑地址后,将目标逻辑地址注册为提交队列条目的目标逻辑地址,实现第一请求对应的提交队列条目的逻辑快速地址分配,一方面,通过哈希计算,得到第一哈希值后,基于第一哈希值进行应该,可以(在不出现哈希冲突的情况下)保证提交队列条目所对应的目标逻辑地址的唯一性,从而确保该目标逻辑地址有效。另一方面,分散处理单元通过查询哈希表的方式,可以快速得到第一哈希值所对应的逻辑地址,进而实现为提交队列条目快速、高效分配目标逻辑地址的目的,相比现有技术中使用链表的形式进行逻辑地址分配的方案,可以有效提高地址分配效率、减小存储空间占用。
在本实施例中,通过接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址;基于第一请求进行哈希运算,得到第一哈希值,第一哈希值用于指示提交队列条目;基于第一哈希值,生成提交队列条目对应的目标逻辑地址。通过响应第一请求进行哈希计算,得到表征提交队列条目的第一哈希值,再基于第一哈希值映射至提交队列条目所对应的目标逻辑地址,由于基于哈希值的查表方式相对链表查询方式更加高效,且无需消耗额外存储空间存储链表数据,因此实现了提交队列条目的逻辑地址的快速注册,提高逻辑地址的分配效率,降低逻辑地址分配过程中的资源占用。
参考图5,图5为本公开实施例提供的逻辑地址分配方法的流程示意图二。本实施例在在图2所示实施例的基础上,进一步对步骤S103进行细化,该逻辑地址分配方法包括:
步骤S201:接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址。
步骤S202:获取目标虚拟机单元对应的目标哈希表。
步骤S203:根据第一请求得到第一哈希值,并根据第一哈希值和目标哈希表,确定对应的哈希桶标识,哈希桶标识表征第一哈希值所归属的目标哈希桶。
示例性地,参考图2所示实施例中的相关步骤,在接收到目标虚拟机单元发送的第一请求后,基于第一请求中的识别信息进行哈希计算并查表。具体地,首先根据第一请求中表征目标虚拟机单元的单元标识,确定与目标虚拟机单元所对应的目标哈希表,其中,每一虚拟机单元均对应一个哈希表。通过单元标识和预设的映射关系,可以得到唯一的一个哈希表,即目标哈希表。该目标哈希表表征虚拟机单元与对应的哈希桶的映射关系,也即,表征虚拟机单元的单元标识和目标哈希桶的哈希桶标识的映射关系。其中,哈希桶标识表征第一哈希值所归属的目标哈希桶,哈希桶是一组哈希值的集合,目标哈希桶即包含第一哈希值的哈希桶。其中,哈希桶由多个哈希槽构成的数据结构,通过哈希桶中的多个哈希槽所存储的哈希值,各哈希值与逻辑地址的映射。
在一种可能的实现方式中,目标哈希表为多级哈希表,其中至少包括一级哈希表和二级哈希表,根据第一请求对应的第一哈希值,查询目标哈希表,进而至少两次哈希映射,从而得到对应的哈希桶标识,从而进一步减少哈希冲突。图6为本公开提供的一种确定哈希桶标识的过程示意图,如图6所示,目标哈希表包括一级哈希表hash_0和二级哈希表hash_1,其中,通过第一哈希值首先查询一级哈希表hash_0,在通过一级哈希表hash_0对应的二级哈希表hash_1,从而得到对应的哈希桶标识target_hash,之后,通过哈希桶标识target_hash从位图数据中获得对应的目标逻辑地址。其中,多级哈希表的概念和实现方式为现有技术,此处不再赘述。
步骤S204:根据哈希桶标识和位图数据,得到提交队列条目对应的目标逻辑地址,其中,位图数据表征当前可用的逻辑地址的集合。
示例性地,进一步地,根据哈希桶标识,读取与哈希桶标识对应的位图数据(bitmap),位图数据是一种由二进制数(0和1)或布尔值(Ture和False)构成的序列。通过位图数据,可以实现对当前可用逻辑地址的集合的描述。例如,以二进制数0表征预设的逻辑地址被占用,即该0位置对应的逻辑地址为不可用地址;以二进制数1表征预设的逻辑地址未被占用,即该1位置对应的逻辑地址为可用地址,更具体地,例如。一个8位的位图数据为[00000111]。根据该位图数据,可知第二进制数0所对应的5个逻辑地址被占用,第二进制数1所对应的3个逻辑地址未被占用。因此,位图数据实现了记录可用逻辑地址(的索引)的作用。之后,通过从与哈希桶标识所对应的位图数据中获得一个可用逻辑地址,即目标逻辑地址,作为对第一哈希值(所对应的第一请求)的查询响应,从而实现对的目标虚拟机单元的提交队列条目的逻辑地址的分配。
示例性地,位图数据由目标位数的二进制数构成,步骤S204的具体实现方式包括:
步骤S2041:检测位图数据中首个目标二进制数的目标序列号。
步骤S2042:根据目标序列号和哈希桶标识,得到目标逻辑地址。
其中,示例性地,图7为本公开实施例提供的一种位图数据的示意图,下面结合图7对上述过程进行详细介绍,如图7所示,示例性地,分散处理器单元内存储有N个哈希桶,对应的哈希桶标识分别为hash_1至hash_N,每一哈希桶(或哈希桶标识)对应一个同样存储于分散处理器单元内的位图数据,即位图数据D_1至位图数据D_N。在根据第一哈希值,获得哈希桶标识hash_1之后,基于哈希桶标识hash_1,得到对应的位图数据D_1,在位图数据D_1中的内容为[000111],其中二进制数“1”表征被占用的逻辑地址;二进制数“0”表征被未占用的逻辑地址;其中,目标二进制数用于指示逻辑地址的可用性,本实施例中,目标二进制数是指0,之后,从右至左检测首个目标二进制数的目标序列号index,即index=4;进一步地,根据哈希桶标识hash_1,确定一个逻辑地址的首地址addr_1,再根据目标序列号index,作为地址偏移量,得到最终的目标逻辑地址为addr_2=addr_1+index。当然,可以理解的是,上述根据目标序列号和哈希桶标识得到目标逻辑地址的具体实现方式,仅为示例性地,具体实现方式可以在得到目标序列号和哈希桶标识的基础上,根据需要进行设置,此处不再一一赘述。
在本实施例步骤中,由于位图数据的体积更小,目标逻辑地址是基于位图数据所提供的目标二进制数对应的索引进行二次计算得到的,因此无需在位图数据中存储逻辑地址的位置信息,进一步地降低了存储空间的占用,提高查询效率、降低存储空间占用。
可选地,在另一种可能的实现方式中,在步骤S203之后,还包括:
步骤S205:检测第一哈希值在目标哈希桶内的冲突状态。
步骤S206:当冲突状态为第一状态时,将目标序列号写入目标哈希桶中第一哈希值对应的哈希槽中,以使第一哈希值与目标逻辑地址建立映射关系。
步骤S207:当冲突状态为第二状态时,将第一哈希值缓冲,以使第一哈希值与目标逻辑地址在目标时长后建立映射关系。
示例性地,在得到第一哈希值之后,判断该第一哈希值对应的冲突状态,即若在目标哈希桶中,是否已包含该第一哈希值,具体地,若在目标哈希桶中未包含该第一哈希值,则该第一哈希值不冲突,即冲突状态为第一状态;反正,若在目标哈希桶中已包含该第一哈希值,则该第一哈希值冲突,即冲突状态为第二状态。
进一步地,哈希桶是由哈希槽构成的,哈希槽即用于存储第一哈希值的数据结构,当冲突状态为第一状态,即哈希槽中未存储有该第一哈希值时,通过上述步骤S204得到的目标逻辑地址写入第一哈希值对应的哈希槽,完成对“第一哈希值-目标逻辑地址”的映射关系的记录,即为提交队列条目分配对应的目标逻辑地址。之后,在提交队列条目真正被执行时,通过查询该目标哈希桶,即可得到对应的目标逻辑地址,从而实现提交队列条目所对应的读写指令。另一方面,当冲突状态为第二状态时,即哈希槽中已存储有该第一哈希值时,说明在目标哈希桶中,已存储了以该第一哈希值为索引的目标逻辑地址,此种情况下,由于第一哈希值对应的逻辑地址被占用,因此无法立刻为第一请求所对应的提交队列条目分配目标逻辑地址,此时,将第一哈希值缓冲至内存,相当于对此条第一请求进行挂起,在预设时长之后、或者接收到触发指令之后,当被占用的逻辑地址被释放后,再次对第一请求进行响应,重新执行本实施例的上述步骤,直至将目标逻辑地址写入至目标哈希桶,完成对第一请求对应的提交队列条目的逻辑地址分配。
图8为本公开实施例提供的一种处理提交队列条目的过程示意图,可参考图8所示的处理过程对上述步骤进行理解。如图8所示,首先提交队列条目(图中示为sqe)进行调度,之后基于提交队列条目的nsid和sqeid进行哈希计算,其中,nsid为控制器对命名空间访问的标识符(相当于本实施例中的目标虚拟机单元的单元标识);sqeid是发送队列元素id,全局唯一(相当于本实施例中的提交队列条目的条目标识)。之后读对应哈希表的哈希桶,差值对应的哈希槽(slot),之后判断哈希桶是否满,若满,则暂时存进桶里,待后续再去申请;若未满,则读取对应的位图数据(bitmap)的位置,查找空位,并把位图数据的位置和相应的键(key),填入哈希表对应哈希桶的哈希槽。
本实施例步骤中,通过结合位图数据,确定目标逻辑地址,并将目标逻辑地址存储至哈希桶中对应的哈希槽内,实现第一哈希值与目标逻辑地址的映射构建,进而实现对第一请求对应的提交队列条目的逻辑地址分配,由于位图数据的体积更小,目标逻辑地址是基于位图数据所提供的目标二进制数对应的索引进行二次计算得到的,因此无需在位图数据中存储逻辑地址的位置信息,进一步地降低了存储空间的占用,提高逻辑地址的分配效率。
图9为本公开实施例提供的逻辑地址分配方法的流程示意图三,本实施例在在图2所示实施例的基础上,增加了响应目标虚拟机单元发送的第二请求的步骤,该逻辑地址分配方法包括:
步骤S301:接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址。
步骤S302:基于第一请求进行哈希运算,得到第一哈希值,第一哈希值用于指示提交队列条目。
步骤S303:基于第一哈希值,生成提交队列条目对应的目标逻辑地址。
步骤S304:接收虚拟机单元发送的第二请求,第二请求用于释放虚拟机单元的完成队列条目的逻辑地址。
步骤S305:基于第二请求进行哈希运算,得到第二哈希值,第二哈希值用于指示完成队列条目。
步骤S306:基于第二哈希值,释放完成队列条目对应的目标逻辑地址。
示例性地,基于之前对提交队列和完成队列的介绍,提交队列中的提交队列条目和完成队列中的完成队列条目通常成对出现,因此,参考图2所示的接收目标虚拟机单元发送的第一请求的过程,类似的,分散处理单元在响应第一请求,为提交队列条目分配地址,并且在该提交队列条目对应的读写指令被执行后,需要生成对应的完成队列条目,相应地,分散处理单元需要继续针对该完成队列条目进行处理,从而将该完成队列条目所对应的地址释放,其中,示例性地,本实施例步骤中的完成队列条目与之前步骤中的提交队列条目是针对同一个读写指令的。
进一步地,示例性地,类似地,在上述提交队列条目对应的读写指令执行完毕后,虚拟机单元发送第二请求来释放完成队列条目的逻辑地址,在分散处理单元接收到第二请求后,对第二请求进行哈希运算,得到用于指示该完成队列条目的第二哈希值,具体实现过程与上述实施例中计算第一哈希值的过程类似,此处不再赘述。之后,通过第二哈希值查询目标哈希表,得到存储有目标逻辑地址的目标哈希桶,并对目标哈希桶中的内容进行处理,从而完成对应的目标逻辑地址的地址释放。
示例性地,如图10所示,步骤S306的具体实现方式包括:
步骤S3061:根据第二哈希值和目标虚拟机单元对应的目标哈希表,确定对应的哈希桶标识,哈希桶标识表征第一哈希值所归属的目标哈希桶。
步骤S3062:基于第二哈希值对目标哈希桶进行检索,得到命中结果。
步骤S3063:根据命中结果,获得目标逻辑地址,并对目标逻辑地址进行释放。
示例性地,首先,获取目标虚拟机单元对应的目标哈希表,并根据目标哈希表和第二哈希值进行查询,得到第二哈希值所对应的目标哈希桶;本实施例中,由于完成队列条目与之前步骤中的提交队列条目针对同一个读写指令,因此,完成队列条目所对应的第二哈希值与提交队列条目对应的第一哈希值相同,队列条目所对应的第二哈希值的计算方法,可以参考之前实施例中第一哈希值的计算方法,此处不再赘述。之后,基于第二哈希值对目标哈希桶进行检索,根据检索结果,得到表征第二哈希值是否存储于目标哈希桶的命中结果,若命中,即第二哈希值存储于目标哈希桶对应的哈希槽中,则通过读取该哈希槽中的信息,得到目标逻辑地址,之后,一方面对该哈希槽进行清空,删除存储与该哈希槽中的第二哈希值(也即第一哈希值),另一方面对位图数据中记录目标逻辑位置的二进制数进行还原,从而实现对目标逻辑地址。
示例性地,命中结果包括哈希槽标识,如图11所示,步骤S3063的具体实现步骤包括:
步骤S3063A:根据哈希槽标识,获得目标序列号,目标序列号表征完成队列条目对应的逻辑地址在位图数据中的位置。
步骤S3063B:将位图数据中目标序列号对应的二进制数进行非运算,并删除哈希槽标识所对应的目标哈希槽中存储的第二哈希值删除,以释放目标逻辑地址。
示例性地,当第二哈希值命中对应的目标哈希槽(即第二哈希值已存储于目标哈希槽中),命中结果返回该目标哈希槽的哈希槽标识,之后,基于哈希槽标识读取目标哈希槽中的信息,可以得到目标序列号,即哈希槽中存储有哈希值,以及与该哈希值对应的、表征已被占用的逻辑地址在位图数据中的位置的序列号,即目标序列号。上述被第二哈希值所命中的目标哈希槽中所存储的哈希值和序列号,即上述实施例步骤中通过响应第一请求而写入该目标哈希槽中的第一哈希值和对应的目标序列号。具体可参见图2、图5所示实施例中相关步骤下的介绍,此处不再赘述。
之后,一方面,以该目标序列号为位数坐标(例如5),反向定位与该目标虚拟机单元对应的位图数据中的二进制数的位置,该位置处的二进制数在之前步骤中,由于为提交队列条目分配地址,而被设置为目标二进制数,例如设置为1,此时,对该位置处的二进制数取非运算(即0置为1、1置为0),从而释放之前被提交队列条目所占用的逻辑地址。另一方面,将被该第二哈希值所命中的目标哈希槽清零,即删除存储与该哈希槽中的第二哈希值也即之前为提交队列条目分配逻辑地址时填入的第一哈希值,从而实现对该目标逻辑地址的释放。
图12为本公开实施例提供的一种处理完成队列条目的过程示意图,如图12所示,可参考图12所示的处理过程对上述步骤进行理解。如图12所示,基于完成队列条目(图中示为cqe)的Nsid和Sqeid进行哈希计算,其中,Nsid为控制器对命名空间访问的标识符(相当于本实施例中的目标虚拟机单元的单元标识);Sqeid是发送队列元素id,全局唯一(相当于本实施例中的完成队列条目的条目标识)。之后判断是否命中对应的哈希槽,若命中,则置对应的哈希槽为0,并且吧位图数据(bitmap)对应的位置置0。若未命中,不做处理。
在本实施例中,步骤S301至S303与上述实施例中步骤S101至S103的实现方式一致,详细论述请参考图2、图5所示实施例中相应步骤中的论述,这里不再赘述。
对应于上文实施例的逻辑地址分配方法,图13为本公开实施例提供的逻辑地址分配装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图13,逻辑地址分配装置4包括:
接收模块41,用于接收目标虚拟机单元发送的第一请求,第一请求用于注册目标虚拟机单元的提交队列条目的逻辑地址;
计算模块42,用于基于第一请求进行哈希运算,得到第一哈希值;
第一分配模块43,用于获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;
第二分配模块44,用于基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,并将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
在本公开的一个实施例中,第一请求中包括目标虚拟机单元的单元标识和提交队列条目的条目标识;计算模块42,具体用于:组合单元标识和条目标识,得到第一位置标识;基于目标哈希算法,对第一位置标识进行处理,得到第一哈希值。
在本公开的一个实施例中,所述第二分配模块44,具体用于:获取所述目标虚拟机单元对应的位图数据,其中,所述位图数据由至少两个有序排列的二进制数构成,所述位图数据表征当前可用的逻辑地址的集合;根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址。
在本公开的一个实施例中,所述第二分配模块44在根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址时,具体用于:检测所述位图数据中首个目标二进制数的目标序列号,所述目标二进制数用于指示逻辑地址的可用性;根据所述目标序列号和所述哈希桶标识,得到所述目标逻辑地址。
在本公开的一个实施例中,所述第二分配模块44,还用于:检测第一哈希值在目标哈希桶内的冲突状态;当冲突状态为第一状态时,将目标序列号写入目标哈希桶中第一哈希值对应的哈希槽中,以使第一哈希值与目标逻辑地址建立映射关系;将位图数据中目标序列号对应的二进制数进行非运算。
在本公开的一个实施例中,所述第二分配模块44,还用于:检测第一哈希值在目标哈希桶内的冲突状态;当冲突状态为第二状态时,将第一哈希值缓冲,以使第一哈希值与目标逻辑地址在目标时长后建立映射关系。
在本公开的一个实施例中,接收模块41还用于:接收虚拟机单元发送的第二请求,第二请求用于释放虚拟机单元的完成队列条目的逻辑地址;计算模块42,还用于:基于第二请求进行哈希运算,得到第二哈希值,第二哈希值用于指示完成队列条目;所述第二分配模块44,还用于:基于第二哈希值,释放完成队列条目对应的目标逻辑地址。
在本公开的一个实施例中,所述第二分配模块44在基于第二哈希值,释放完成队列条目对应的目标逻辑地址时,具体用于:根据第二哈希值和目标虚拟机单元对应的目标哈希表,确定对应的哈希桶标识,哈希桶标识表征第一哈希值所归属的目标哈希桶;基于第二哈希值对目标哈希桶进行检索,得到命中结果;根据命中结果,获得目标逻辑地址,并对目标逻辑地址进行释放。
在本公开的一个实施例中,命中结果包括哈希槽标识;分配模块43在根据命中结果,获得目标逻辑地址,并对目标逻辑地址进行释放时,具体用于:根据哈希槽标识,获得目标序列号,目标序列号表征完成队列条目对应的逻辑地址在位图数据中的位置;将位图数据中目标序列号对应的二进制数进行非运算,并删除哈希槽标识所对应的目标哈希槽中存储的第二哈希值删除,以释放目标逻辑地址。
其中,接收模块41、计算模块42、第一分配模块43和第一分配模块44依次连接。本实施例提供的逻辑地址分配装置4可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图14为本公开实施例提供的一种电子设备的结构示意图,如图14所示,该电子设备5包括:
处理器51,以及与处理器51通信连接的存储器52;
存储器52存储计算机执行指令;
处理器51执行存储器52存储的计算机执行指令,以实现如图2-图12所示实施例中的逻辑地址分配方法。
其中,可选地,处理器51和存储器52通过总线53连接。
相关说明可以对应参见图2-图12所对应的实施例中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
本公开实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现本公开图2-图12所对应的实施例中任一实施例提供的逻辑地址分配方法。
本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如图2-图12所示实施例中的逻辑地址分配方法。
参考图15,其示出了适于用来实现本公开实施例的电子设备900的结构示意图,该电子设备900可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图15示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图15所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(Read Only Memory,简称ROM)902中的程序或者从存储装置908加载到随机访问存储器(Random Access Memory,简称RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图15示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM 902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种逻辑地址分配方法,包括:
接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;基于所述第一请求进行哈希运算,得到第一哈希值,所述第一哈希值用于指示所述提交队列条目;获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址;将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
根据本公开的一个或多个实施例,所述第一请求中包括所述目标虚拟机单元的单元标识和所述提交队列条目的条目标识;基于所述第一请求进行哈希运算,得到第一哈希值,包括:组合所述单元标识和所述条目标识,得到第一位置标识;基于目标哈希算法,对所述第一位置标识进行处理,得到所述第一哈希值。
根据本公开的一个或多个实施例,所述基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,包括:获取所述目标虚拟机单元对应的位图数据,其中,所述位图数据由至少两个有序排列的二进制数构成,所述位图数据表征当前可用的逻辑地址的集合;根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址。
根据本公开的一个或多个实施例,所述根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址,包括:检测所述位图数据中首个目标二进制数的目标序列号,所述目标二进制数用于指示逻辑地址的可用性;根据所述目标序列号和所述哈希桶标识,得到所述目标逻辑地址。
根据本公开的一个或多个实施例,所述方法还包括:检测所述第一哈希值在所述目标哈希桶内的冲突状态;当所述冲突状态为第一状态时,将所述目标序列号写入所述目标哈希桶中所述第一哈希值对应的哈希槽中,以使所述第一哈希值与所述目标逻辑地址建立映射关系;将所述位图数据中所述目标序列号对应的二进制数进行非运算。
根据本公开的一个或多个实施例,所述方法还包括:检测所述第一哈希值在所述目标哈希桶内的冲突状态;当所述冲突状态为第二状态时,将所述第一哈希值缓冲,以使所述第一哈希值与所述目标逻辑地址在目标时长后建立映射关系。
根据本公开的一个或多个实施例,所述方法还包括:接收所述虚拟机单元发送的第二请求,第二请求用于释放所述虚拟机单元的完成队列条目的逻辑地址;基于所述第二请求进行哈希运算,得到第二哈希值,所述第二哈希值用于指示所述完成队列条目;基于所述第二哈希值,释放所述完成队列条目对应的目标逻辑地址。
根据本公开的一个或多个实施例,所述基于所述第二哈希值,释放所述完成队列条目对应的目标逻辑地址,包括:根据所述第二哈希值和所述目标虚拟机单元对应的目标哈希表,确定对应的哈希桶标识,所述哈希桶标识表征所述第一哈希值所归属的目标哈希桶;基于所述第二哈希值对所述目标哈希桶进行检索,得到命中结果;根据所述命中结果,获得所述目标逻辑地址,并对所述目标逻辑地址进行释放。
根据本公开的一个或多个实施例,所述命中结果包括哈希槽标识;根据所述命中结果,获得所述目标逻辑地址,并对所述目标逻辑地址进行释放,包括:根据所述哈希槽标识,获得目标序列号,所述目标序列号表征所述完成队列条目对应的逻辑地址在位图数据中的位置;将所述位图数据中所述目标序列号对应的二进制数进行非运算,并删除所述哈希槽标识所对应的目标哈希槽中存储的第二哈希值删除,以释放所述目标逻辑地址。
第二方面,根据本公开的一个或多个实施例,提供了一种逻辑地址分配装置,包括:
接收模块,用于接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;
计算模块,用于基于所述第一请求进行哈希运算,得到第一哈希值;
第一分配模块,用于获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;
第二分配模块,用于基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,并将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
根据本公开的一个或多个实施例,第一请求中包括目标虚拟机单元的单元标识和提交队列条目的条目标识;计算模块,具体用于:组合单元标识和条目标识,得到第一位置标识;基于目标哈希算法,对第一位置标识进行处理,得到第一哈希值。
根据本公开的一个或多个实施例,所述第二分配模块,具体用于:获取所述目标虚拟机单元对应的位图数据,其中,所述位图数据由至少两个有序排列的二进制数构成,所述位图数据表征当前可用的逻辑地址的集合;根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址。
根据本公开的一个或多个实施例,所述第二分配模块在根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址时,具体用于:检测所述位图数据中首个目标二进制数的目标序列号,所述目标二进制数用于指示逻辑地址的可用性;根据所述目标序列号和所述哈希桶标识,得到所述目标逻辑地址。
根据本公开的一个或多个实施例,所述第二分配模块,还用于:检测第一哈希值在目标哈希桶内的冲突状态;当冲突状态为第一状态时,将目标序列号写入目标哈希桶中第一哈希值对应的哈希槽中,以使第一哈希值与目标逻辑地址建立映射关系;将位图数据中目标序列号对应的二进制数进行非运算。
根据本公开的一个或多个实施例,所述第二分配模块,还用于:检测第一哈希值在目标哈希桶内的冲突状态;当冲突状态为第二状态时,将第一哈希值缓冲,以使第一哈希值与目标逻辑地址在目标时长后建立映射关系。
根据本公开的一个或多个实施例,接收模块还用于:接收虚拟机单元发送的第二请求,第二请求用于释放虚拟机单元的完成队列条目的逻辑地址;计算模块,还用于:基于第二请求进行哈希运算,得到第二哈希值,第二哈希值用于指示完成队列条目;所述第二分配模块,还用于:基于第二哈希值,释放完成队列条目对应的目标逻辑地址。
根据本公开的一个或多个实施例,所述第二分配模块在基于第二哈希值,释放完成队列条目对应的目标逻辑地址时,具体用于:根据第二哈希值和目标虚拟机单元对应的目标哈希表,确定对应的哈希桶标识,哈希桶标识表征第一哈希值所归属的目标哈希桶;基于第二哈希值对目标哈希桶进行检索,得到命中结果;根据命中结果,获得目标逻辑地址,并对目标逻辑地址进行释放。
根据本公开的一个或多个实施例,命中结果包括哈希槽标识;分配模块在根据命中结果,获得目标逻辑地址,并对目标逻辑地址进行释放时,具体用于:根据哈希槽标识,获得目标序列号,目标序列号表征完成队列条目对应的逻辑地址在位图数据中的位置;将位图数据中目标序列号对应的二进制数进行非运算,并删除哈希槽标识所对应的目标哈希槽中存储的第二哈希值删除,以释放目标逻辑地址。
第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的逻辑地址分配方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (13)
1.一种逻辑地址分配方法,其特征在于,包括:
接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;
基于所述第一请求进行哈希运算,得到第一哈希值,所述第一哈希值用于指示所述提交队列条目;
获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;
基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址;
将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
2.根据权利要求1所述的方法,其特征在于,所述第一请求中包括所述目标虚拟机单元的单元标识和所述提交队列条目的条目标识;基于所述第一请求进行哈希运算,得到第一哈希值,包括:
组合所述单元标识和所述条目标识,得到第一位置标识;
基于目标哈希算法,对所述第一位置标识进行处理,得到所述第一哈希值。
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,包括:
获取所述目标虚拟机单元对应的位图数据,其中,所述位图数据由至少两个有序排列的二进制数构成,所述位图数据表征当前可用的逻辑地址的集合;
根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述哈希桶标识和所述位图数据,获取与所述哈希桶标识对应的目标逻辑地址,包括:
检测所述位图数据中首个目标二进制数的目标序列号,所述目标二进制数用于指示逻辑地址的可用性;
根据所述目标序列号和所述哈希桶标识,得到所述目标逻辑地址。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
检测所述第一哈希值在所述目标哈希桶内的冲突状态;
当所述冲突状态为第一状态时,将所述目标序列号写入所述目标哈希桶中所述第一哈希值对应的哈希槽中,以使所述第一哈希值与所述目标逻辑地址建立映射关系;
将所述位图数据中所述目标序列号对应的二进制数进行非运算。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
检测所述第一哈希值在所述目标哈希桶内的冲突状态;
当所述冲突状态为第二状态时,将所述第一哈希值缓冲,以使所述第一哈希值与所述目标逻辑地址在目标时长后建立映射关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述虚拟机单元发送的第二请求,第二请求用于释放所述虚拟机单元的完成队列条目的逻辑地址;
基于所述第二请求进行哈希运算,得到第二哈希值,所述第二哈希值用于指示所述完成队列条目;
基于所述第二哈希值,释放所述完成队列条目对应的目标逻辑地址。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第二哈希值,释放所述完成队列条目对应的目标逻辑地址,包括:
根据所述第二哈希值和所述目标虚拟机单元对应的目标哈希表,确定对应的哈希桶标识,所述哈希桶标识表征所述第一哈希值所归属的目标哈希桶;
基于所述第二哈希值对所述目标哈希桶进行检索,得到命中结果;
根据所述命中结果,获得所述目标逻辑地址,并对所述目标逻辑地址进行释放。
9.根据权利要求8所述的方法,其特征在于,所述命中结果包括哈希槽标识;根据所述命中结果,获得所述目标逻辑地址,并对所述目标逻辑地址进行释放,包括:
根据所述哈希槽标识,获得目标序列号,所述目标序列号表征所述完成队列条目对应的逻辑地址在位图数据中的位置;
将所述位图数据中所述目标序列号对应的二进制数进行非运算,并删除所述哈希槽标识所对应的目标哈希槽中存储的第二哈希值删除,以释放所述目标逻辑地址。
10.一种逻辑地址分配装置,其特征在于,包括:
接收模块,用于接收目标虚拟机单元发送的第一请求,所述第一请求用于注册所述目标虚拟机单元的提交队列条目的逻辑地址;
计算模块,用于基于所述第一请求进行哈希运算,得到第一哈希值;
第一分配模块,用于获取所述目标虚拟机单元对应的目标哈希表,并基于所述第一哈希值查询所述目标哈希表,得到所述第一哈希值所归属的目标哈希桶;
第二分配模块,用于基于所述目标哈希桶的哈希桶标识,从当前可用的逻辑地址中,获取与所述哈希桶标识对应的目标逻辑地址,并将所述目标逻辑地址注册为生成所述提交队列条目对应的逻辑地址。
11.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至9中任一项所述的逻辑地址分配方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至9任一项所述的逻辑地址分配方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1至9中任一项所述的逻辑地址分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310646550.XA CN116633900A (zh) | 2023-06-01 | 2023-06-01 | 逻辑地址分配方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310646550.XA CN116633900A (zh) | 2023-06-01 | 2023-06-01 | 逻辑地址分配方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116633900A true CN116633900A (zh) | 2023-08-22 |
Family
ID=87597194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310646550.XA Pending CN116633900A (zh) | 2023-06-01 | 2023-06-01 | 逻辑地址分配方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116633900A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117411738A (zh) * | 2023-12-15 | 2024-01-16 | 格创通信(浙江)有限公司 | 组播复制方法、装置、电子设备和存储介质 |
CN118101622A (zh) * | 2024-04-24 | 2024-05-28 | 惠州市乐亿通科技股份有限公司 | 基于can通信的节点地址分配方法及装置 |
-
2023
- 2023-06-01 CN CN202310646550.XA patent/CN116633900A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117411738A (zh) * | 2023-12-15 | 2024-01-16 | 格创通信(浙江)有限公司 | 组播复制方法、装置、电子设备和存储介质 |
CN117411738B (zh) * | 2023-12-15 | 2024-03-08 | 格创通信(浙江)有限公司 | 组播复制方法、装置、电子设备和存储介质 |
CN118101622A (zh) * | 2024-04-24 | 2024-05-28 | 惠州市乐亿通科技股份有限公司 | 基于can通信的节点地址分配方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116633900A (zh) | 逻辑地址分配方法、装置、电子设备及存储介质 | |
CN111679921B (zh) | 内存共享方法、内存共享装置及终端设备 | |
CN109194736B (zh) | 消息去重方法、装置、电子设备、介质和无人车 | |
CN113287286A (zh) | 通过rdma进行分布式存储节点中的输入/输出处理 | |
CN111737564B (zh) | 一种信息查询方法、装置、设备及介质 | |
US9389997B2 (en) | Heap management using dynamic memory allocation | |
CN111694770A (zh) | 一种处理io请求的方法及装置 | |
CN115994122B (zh) | 快速缓存信息的方法、系统、设备及储存介质 | |
CN109242320B (zh) | 订单分配方法、装置、服务器及存储介质 | |
CN111078410A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
JP6974510B2 (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
CN111104347B (zh) | 堆内存块查找方法、装置、设备及存储介质 | |
CN110706148A (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN113609055A (zh) | 一种后端设备获取描述符的方法、装置、设备及可读介质 | |
CN117112215A (zh) | 内存分配方法、设备及存储介质 | |
US11176053B2 (en) | Routing traffic of a logical unit to multiple backend data objects based on metadata mapping | |
CN117056123A (zh) | 数据恢复方法、装置、介质及电子设备 | |
CN116955251A (zh) | 一种基于重排序缓冲器的读请求处理方法及相关装置 | |
US9405470B2 (en) | Data processing system and data processing method | |
CN111090520B (zh) | 独占资源的用户分配方法、装置、电子设备及存储介质 | |
CN105659216B (zh) | 多核处理器系统的缓存目录处理方法和目录控制器 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
CN112947863A (zh) | 一种飞腾服务器平台下存储空间合并成的方法 | |
CN108196786B (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 |