CN115840620B - 一种数据通路构建方法、设备及介质 - Google Patents
一种数据通路构建方法、设备及介质 Download PDFInfo
- Publication number
- CN115840620B CN115840620B CN202310166109.1A CN202310166109A CN115840620B CN 115840620 B CN115840620 B CN 115840620B CN 202310166109 A CN202310166109 A CN 202310166109A CN 115840620 B CN115840620 B CN 115840620B
- Authority
- CN
- China
- Prior art keywords
- data path
- memory
- read
- construction method
- solid state
- 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.)
- Active
Links
Images
Classifications
-
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Bus Control (AREA)
Abstract
本申请提供一种数据通路构建方法、设备及介质。方法包括:通过FPGA卡检测由客户虚拟机发起的读写操作请求,根据其对应指令读写操作或者数据读写操作来确定分流标记并添加到与读写操作请求对应的提交队列元素,以及写入提交队列元素到提交队列;通过SSD,根据提交队列元素中的地址信息,发起DMA操作用于执行读写操作请求;通过FPGA卡,响应于所发起的DMA操作,根据分流标记将DMA操作选择性地分流到FPGA卡的内存或者主机,当DMA操作被分流到主机时构建起SSD和主机之间的数据通路用于SSD对给定客户虚拟机的内存进行读写。如此实现了NVMe虚拟化数据通路,降低时延提高带宽以及可用原生NVMe驱动。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据通路构建方法、设备及介质。
背景技术
随着存储技术、数据中心、虚拟化技术的不断发展,在数据中心需要采用大量的实例化存储,但是实例化存储一般按照整盘的容量进行售卖,而为了降低存储售卖的起售价格和粒度,一般通过虚拟化技术将物理盘虚拟化成多个更小的虚拟盘,这样的虚拟化层和虚拟出来的虚拟盘与插在主机上的物理盘在使用上难以区别。但是引入虚拟化层会增加延迟,因此难以应对游戏、直播等对存储性能和延迟要求较高的应用场景,而且也要求更高的读写带宽。
为此,本申请提供了一种数据通路构建方法、设备及介质,用于应对上述技术难题。
发明内容
本申请实施例提供了一种数据通路构建方法、设备及介质,用于解决现有技术中存在的问题。
第一方面,本申请提供了一种数据通路构建方法。所述数据通路构建方法应用于包括了至少一个固态硬盘SSD的主机,所述至少一个固态硬盘通过现场可编程逻辑门阵列FPGA卡被虚拟化成多个非易失性内存主机控制器接口规范NVMe虚拟盘,所述多个非易失性内存主机控制器接口规范虚拟盘被分配给相对于所述主机的至少一个客户虚拟机。所述数据通路构建方法包括:通过所述FPGA卡,检测由所述至少一个客户虚拟机发起的读写操作请求,根据所述读写操作请求对应指令读写操作或者数据读写操作来确定分流标记并添加所述分流标记到与所述读写操作请求对应的提交队列元素,以及写入所述提交队列元素到提交队列,所述提交队列存储在所述FPGA卡的内存;通过所述至少一个固态硬盘,根据所述提交队列元素中的地址信息,发起直接内存访问DMA操作用于执行所述读写操作请求;通过所述FPGA卡,响应于所述至少一个固态硬盘所发起的DMA操作,根据所述提交队列元素中的分流标记,将所述至少一个固态硬盘所发起的DMA操作选择性地分流到所述FPGA卡的内存或者所述主机,其中当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时构建起所述至少一个固态硬盘和所述主机之间的数据通路用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的给定客户虚拟机的内存进行读写。
通过本申请的第一方面,实现了优化NVMe虚拟化场景下的数据通路,使得SSD数据通路可以直通主机,并且具有降低数据路径时延、提高带宽、满足高性能应用场景、以及可以使用原生NVMe驱动的技术效果。
在本申请的第一方面的一种可能的实现方式中,经所述至少一个固态硬盘和所述主机之间的数据通路传输的数据不经过所述FPGA卡的内存的转存。
在本申请的第一方面的一种可能的实现方式中,当所述提交队列元素中的分流标记指示所述读写操作请求对应数据读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述主机。
在本申请的第一方面的一种可能的实现方式中,当所述提交队列元素中的分流标记指示所述读写操作请求对应指令读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述FPGA卡的内存。
在本申请的第一方面的一种可能的实现方式中,所述提交队列元素包括物理区域页PRP域段,所述PRP域段包括所述分流标记,功能标识和所述地址信息。
在本申请的第一方面的一种可能的实现方式中,所述PRP域段所包括的所述地址信息对应所述至少一个客户虚拟机使用的非易失性内存主机控制器接口规范NVMe驱动下的客户机物理地址GPA,所述NVMe驱动下的所述GPA根据所述功能标识被转换为主机物理地址HPA,所述HPA用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的所述给定客户虚拟机的内存进行读写。
在本申请的第一方面的一种可能的实现方式中,所述NVMe驱动下的所述GPA通过所述主机的输入输出内存管理单元IOMMU被转换为所述HPA,所述IOMMU包括信息查找表用于根据所述功能标识进行地址重映射以将所述NVMe驱动下的所述GPA转换为所述HPA。
在本申请的第一方面的一种可能的实现方式中,所述至少一个固态硬盘所发起的DMA操作不包括所述功能标识,当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时,所述功能标识通过所述提交队列元素的所述PRP域段获得。
在本申请的第一方面的一种可能的实现方式中,所述分流标记和所述功能标识位于所述PRP域段的高位,所述地址信息位于所述PRP域段的相对于所述高位的低位。
在本申请的第一方面的一种可能的实现方式中,通过对所述NVMe驱动下的所述GPA进行高位截位得到所述PRP域段。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法应用于所述至少一个客户虚拟机使用的原生NVMe驱动。
在本申请的第一方面的一种可能的实现方式中,所述信息查找表包括与快捷外围部件互连标准PCIE拓扑结构对应的总线-设备-功能信息查找表。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法还包括:通过所述FPGA卡,在写入所述提交队列元素到所述提交队列之后,向所述至少一个固态硬盘发出提交队列读取信号。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在接收到所述提交队列读取信号之后发起DMA操作。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在执行完所述读写操作请求之后,写入完成队列元素到所述FPGA卡的内存。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法还包括:通过所述FPGA卡,从所述FPGA卡的内存获得所述完成队列元素,以及将所述完成队列元素写入所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的完成队列。
在本申请的第一方面的一种可能的实现方式中,所述数据通路构建方法还包括:通过所述至少一个客户虚拟机中的所述给定客户虚拟机,从所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的所述完成队列读取所述完成队列元素,然后向所述多个非易失性内存主机控制器接口规范虚拟盘中被分配给所述给定客户虚拟机的非易失性内存主机控制器接口规范虚拟盘发送完成队列读取信号。
在本申请的第一方面的一种可能的实现方式中,所述FPGA卡的内存是所述FPGA卡的板载双倍数据速率同步动态随机存取存储器DDR。
在本申请的第一方面的一种可能的实现方式中,所述至少一个固态硬盘被挂载在所述FPGA卡上。
在本申请的第一方面的一种可能的实现方式中,所述至少一个固态硬盘不支持单根输入输出虚拟化SRIOV功能,所述至少一个固态硬盘中的给定固态硬盘通过所述FPGA卡被虚拟化成所述多个非易失性内存主机控制器接口规范虚拟盘中的至少两个非易失性内存主机控制器接口规范虚拟盘。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据通路构建方法的流程示意图;
图2为本申请实施例提供的一种物理区域页的格式的示意图;
图3为本申请实施例提供的一种虚拟系统的示意图;
图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例提供了一种数据通路构建方法、设备及介质,用于解决现有技术中存在的问题。其中,本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种数据通路构建方法的流程示意图。在数据中心、游戏、直播等应用场景中,需要用到大量的实例化存储,例如使用固态硬盘(Solid StateDrive,SSD)来提供实例化存储。但是实例化存储如SSD或者类似的物理硬盘,如果按照整盘容量进行售卖或者分配,不利于降低起售价格也不利于降低管理上的粒度。此外,数据中心使用的SSD一般要求支持非易失性内存主机控制器接口规范(Non-Volatile MemoryExpress,NVMe)协议。NVMe协议是定义了硬盘的接口和传输规范的存储设备通信协议,其定义了多个通路并提供了多个队列在计算机和多个存储设备之间搬运数据。因此NVMe协议和相关技术提高了计算机与设备连接处的性能,可以结合SSD的快速数据访问特性,也就是使得支持NVMe协议的SSD也即NVMe SSD在数据中心等应用场景中有广泛应用。但是,目前常见的支持NVMe协议的SSD也就是NVMe SSD一般不支持单根输入输出虚拟化(Single Root I/OVirtualization,SRIOV),这样意味着NVMe SSD一般情况下作为单个物理设备与单个虚拟机绑定。如果是作为快捷外围部件互连标准(peripheral component interconnectexpress,PCIE)总线的拓扑结构的一部分,例如作为单个PCIE设备,则意味着单个PCIE设备与单个虚拟机绑定。为了做到低粒度的精细化的资源管理,也为了降低起售价格,可以通过虚拟化技术,例如通过现场可编程逻辑门阵列(field-programmable gate array,FPGA),来实现NVMe虚拟化,这样可以将一个大的SSD虚拟化成多个小的SSD,这样得到的NVMe虚拟化层包括多个NVMe虚拟盘,这样虚拟化得到的NVMe虚拟盘支持NVMe协议。这些NVMe虚拟盘可以分配到虚拟机上,通过FPGA如FPGA卡虚拟得到的SSD,与插在主机上的物理SSD在使用上对于主机来说没有区别,可以做到低粒度下的精细化的资源管理,也可以按照小的SSD的容量进行售卖也就降低了起售价格。另外,通过FPGA卡来实现NVMe虚拟化,可以得到NVMe虚拟化层和多个NVMe虚拟盘,这些NVMe虚拟盘支持NVMe协议也就意味着可以将单个物理设备NVMe SSD虚拟化成多个虚拟设备来被多个虚拟机访问,也就有助于克服当前NVMeSSD不支持SRIOV的问题。但是,因为是借助FPGA或者类似的处理器架构来实现的NVMe虚拟化层,因此需要考虑数据通路延迟和读写带宽方面。具体地,FPGA卡的板载内存一般是双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,DDRSDRAM),有时简称为DDR。FPGA卡的板载内存,例如FPGA卡的板载DDR,其自身容量是有限的。因此,存储在SSD中的数据,一般不会常规的存储在FPGA卡的板载内存中,只能是通过FPGA卡的板载内存如FPGA卡的板载DDR进行中转,但是这样的中转会引入数据通路延迟,也受限于FPGA卡的板载内存的读写带宽。例如,FPGA卡在接收到写入指令后,先从主机侧内存读取数据并将数据写入到板载DDR上,然后SSD才开始执行写入指令并先从板载DDR读取数据。再例如,FPGA卡在接收到读取指令后,下发指令给SSD,SSD开始执行读取指令,先将数据写入到板载DDR,然后FPGA卡从板载DDR读取数据并写入到主机侧内存。这样数据通过FPGA卡上的板载DDR中转意味着在SSD和FPGA卡之间直连,增加数据通路延迟也受限于板载DDR的读写带宽,而且需要占用板载DDR的有限资源。相对于在SSD和FPGA卡之间直连,可以采用不直连的方案,例如利用共享内存技术在主机上申请内存由主机和客户虚拟机共享,这样共享的内存可以被物理盘也就是NVMe SSD访问也可以被FPGA卡虚拟化得到的NVMe虚拟盘访问。输入输出内存管理单元(Input/Output Memory Management Unit,IOMMU)允许系统设备在虚拟内存中进行寻址,也就是将设备要访问的虚拟内存地址映射为物理内存地址,让实体设备可以在虚拟的内存环境中工作。可以将IOMMU映射表卸载到FPGA卡上,这样在FPGA卡接收到写入指令或者读取指令后,可以从中提取出物理区域页(Physical Region Page,PRP)域段,PRP域段可以是例如64位的内存物理地址,其内容可以包括页起始地址和页内偏移,用于指示SSD数据所在内存位置。提取得到的PRP域段是客户机物理地址(Guest PhysicalAddress,GPA),通过IOMMU映射表可以转换成主机物理地址(Host Physical Address, HPA),这样SSD可以基于HPA读写主机侧内存并且可以发起直接内存访问(DirectMemory Access,DMA)操作,进而实现了SSD读写客户虚拟机(guest VM)下的内存空间。但是,这种利用共享内存技术在主机上申请共享内存由主机和客户虚拟机共享的方式,意味着要确保申请得到的数据地址落在共享内存内,也因此使得客户虚拟机无法使用内核原生的NVMe驱动,也使得方案实现起来复杂,并且一般需要通过开启大页内存来减少FPGA维护的IOMMU映射表的项个数,从而限制了其应用场景。总之,考虑到支持NVMe协议的必要性,以及现有的支持NVMe协议的SSD也就是NVMeSSD一般缺乏SRIOV的情况,一方面需要借助NVMe虚拟化来生成多个NVMe虚拟盘从而降低粒度和可以售卖或者分配的容量并且支持多个虚拟设备被多个虚拟机访问,另一方面也需要使得客户虚拟机可以使用内核原生的NVMe驱动从而有利于推广产品和技术,也就是需要构建起支持内核原生的NVMe驱动的且应用于NVMe虚拟化的SSD的数据通路,这样的数据通路直通主机从而使得SSD可以发起DMA操作来提升效率,同时还要考虑到数据通路延迟和读写带宽的影响,也要考虑到方案的复杂度和便利性。下面结合本申请实施例和图1详细说明本申请提供的一种数据通路构建方法,如何优化NVMe虚拟化场景下的数据通路,使得SSD数据通路可以直通主机,并且具有降低数据路径时延、提高带宽、满足高性能应用场景、以及可以使用原生NVMe驱动的技术效果。
NVMe SSD支持NVMe协议也用于构建NVMe虚拟化数据通路,上面提到,NVMe协议定义了多个通路并提供了多个队列在计算机和多个存储设备之间搬运数据。其中,多个队列包括提交队列(Submission Queue,SQ)和完成队列(Completion Queue,CQ)。下发的指令,如NVMe协议的存储指令,作为提交队列元素(Submission Queue Entries,SQE)被写入提交队列,也就是当前待处理指令通过向提交队列发送提交队列元素的方式下发。然后,可以向驱动软件发送读取指令信号(kick doorbell),例如提交队列读取信号(SQ taildoorbell)。驱动软件接到读取指令信号后可以通过轮询方式从提交队列中读取所有待处理指令以及对读取的待处理指令进行处理。某个待处理指令被处理完毕后,可以生成相应的完成队列元素(Completion Queue Entries,CQE)并将该完成队列元素写入完成队列,然后通知读取完成队列元素,例如发送完成队列读取信号(CQ head doorbell)。申请提供的一种数据通路构建方法用于构建NVMe虚拟化场景下的数据通路,具体地用于构建起支持内核原生的NVMe驱动的且应用于NVMe虚拟化的SSD的数据通路。参考图1,所述数据通路构建方法应用于包括了至少一个固态硬盘SSD的主机,所述至少一个固态硬盘通过现场可编程逻辑门阵列FPGA卡被虚拟化成多个非易失性内存主机控制器接口规范NVMe虚拟盘,所述多个非易失性内存主机控制器接口规范虚拟盘被分配给相对于所述主机的至少一个客户虚拟机。如图1所示,数据通路构建方法包括以下步骤。
步骤S102:通过所述FPGA卡,检测由所述至少一个客户虚拟机发起的读写操作请求,根据所述读写操作请求对应指令读写操作或者数据读写操作来确定分流标记并添加所述分流标记到与所述读写操作请求对应的提交队列元素,以及写入所述提交队列元素到提交队列,所述提交队列存储在所述FPGA卡的内存。
步骤S104:通过所述至少一个固态硬盘,根据所述提交队列元素中的地址信息,发起直接内存访问DMA操作用于执行所述读写操作请求。
步骤S106:通过所述FPGA卡,响应于所述至少一个固态硬盘所发起的DMA操作,根据所述提交队列元素中的分流标记,将所述至少一个固态硬盘所发起的DMA操作选择性地分流到所述FPGA卡的内存或者所述主机,其中当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时构建起所述至少一个固态硬盘和所述主机之间的数据通路用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的给定客户虚拟机的内存进行读写。
参阅上述数据通路构建方法的各个步骤以及图1,所述至少一个客户虚拟机发起读写操作请求,例如发起读操作指令并通知FPGA卡去处理。并且,客户虚拟机可以使用内核原生的NVMe驱动来发起读写操作请求,读写操作请求可以对应指令读写操作或者数据读写操作,指令读写操作意味着该读写操作请求要求执行读写指令的操作,数据读写操作意味着该读写操作请求要求执行读写数据的操作。上面提到,如果通过FPGA卡上的板载DDR中转则会增加数据通路延迟。为此,需要对发起的指令读写操作和数据读写操作进行分流。所述至少一个客户虚拟机可以将读写操作请求保存在虚拟机的内存中,所述FPGA卡检测到由所述至少一个客户虚拟机发起的读写操作请求。所述FPGA卡可以从虚拟机的内存中读取读写操作请求,然后根据所述读写操作请求对应指令读写操作或者数据读写操作来确定分流标记。分流标记用于实现指令和数据通路之间的分流,下面详细说明。所述FPGA卡添加所述分流标记到与所述读写操作请求对应的提交队列元素,以及写入所述提交队列元素到提交队列,所述提交队列存储在所述FPGA卡的内存。这样,在FPGA卡的内存,例如FPGA卡的板载DDR中,存储有提交队列SQ以及被添加了分流标记的提交队列元素SQE。在一些实施例中,FPGA卡的逻辑从虚拟机的内存中读取SQE之后,对SQE进行修改并添加分流标记,然后将修改后的SQE写入在FPGA卡的板载DDR上的SQ。因此,通过FPGA卡来确定分流标记并添加分流标记到提交队列元素以及写入所述提交队列元素到提交队列,使得存储在FPGA卡的内存中的提交队列的提交队列元素包括了分流标记。分流标记可以是如0或者1这样的二元方式,可以用于标记主机(host)和本地(local)。其中,标记为主机的分流标记意味着后续分流到主机也就是用于与主机直通,标记为本地的分流标记意味着后续分流到FPGA卡的内存如板载DDR也就是意味着分流到相对于存储了该分流标记所在的SQE的FPGA卡的内存的本地。另外,FPGA卡在初始化SSD的SQ基地址寄存器的时候已经将分流标记设置成本地也就是local,以及FPGA卡在初始化SSD的CQ基地址寄存器的时候已经将分流标记设置成本地也就是local,这意味着默认地是分流到本地。换句话说,根据初始化后的分流标记,FPGA卡检测到的地址中的分流标记是标记了本地,也就意味着分流到FPGA卡的内存。接着,在步骤S104,通过所述至少一个固态硬盘,根据所述提交队列元素中的地址信息,发起直接内存访问DMA操作用于执行所述读写操作请求。SSD可以通过轮询方式来处理SQ中的待处理指令例如待处理的SQE,在一些实施例中还可以通过提交队列读取信号(SQ tail doorbell)的方式来通知SSD。接着,在步骤S106,通过所述FPGA卡,响应于所述至少一个固态硬盘所发起的DMA操作,根据所述提交队列元素中的分流标记,将所述至少一个固态硬盘所发起的DMA操作选择性地分流到所述FPGA卡的内存或者所述主机。如此,通过分流标记实现了指令和数据通路之间的分流。一方面,如果分流到所述FPGA卡的内存意味着是指令的分流,而这样对于所述至少一个固态硬盘根据所述提交队列元素中的地址信息发起的DMA操作也会按照指令读写操作的流程来处理,也意味着可以适配客户虚拟机的内核原生的NVMe驱动。并且,指令的分流是分流到本地也就是所述FPGA卡的内存,这样就不需要向主机申请额外的共享内存,降低了复杂度。另一方面,如果分流到所述主机意味着是数据通路的分流,而这样对于所述至少一个固态硬盘根据所述提交队列元素中的地址信息发起的DMA操作也会按照数据读写操作的流程来处理。当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时构建起所述至少一个固态硬盘和所述主机之间的数据通路用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的给定客户虚拟机的内存进行读写。这样构建的所述至少一个固态硬盘和所述主机之间的数据通路意味着SSD和主机之间的直通,也就是说SSD通过DMA操作可以向对应的虚拟机的内存进行读写。应当理解的是,对于分流到主机侧的数据读写操作,一般还需要提取额外的信息来完成从GPA到HPA的转换或者说进行DMA的再映射。另外,因为是通过数据通路的分流来构建SSD和主机之间的数据通路进而让SSD通过发起的DMA操作来对给定客户虚拟机的内存进行读写,这意味着不需要额外的共享内存,也就意味着可以更好地适配客户虚拟机的内核原生的NVMe驱动。进一步地,相比于指令和数据都通过FPGA卡上的板载DDR来进行中转的方案,通过在步骤S102中确定及添加分流标记,实现了指令和数据通路的分流,这样后续在步骤S104和步骤S106中可以根据分流标记,使得指令经过FPGA卡的内存来转存也就是使得SSD发出的指令读写操作被分流到如FPGA卡的板载DDR,以及使得数据不经过FGPA卡的内存来转存而是使得SSD发出的数据读写操作被分流到主机侧。因为是不经过FPGA卡的内存的转存而是通过直通主机的数据通路来传输数据,因此降低了数据通路延迟,也避免了FPGA卡的内存的读写带宽带来的影响。此外,这样构建的数据通路,可以应用于包括了至少一个固态硬盘的主机并且可用于NVMe虚拟化应用场景,因此是NVMe虚拟化数据通路。并且,图1所示的数据通路构建方法,不仅降低了处理延时和提高了带宽从而有利于应对高性能应用场景,而且减少了对FPGA卡上的有限内存资源的占用,也不需要卸载IOMMU映射表和不需要修改内核原生NVMe驱动,因此实现了优化NVMe虚拟化场景下的数据通路,使得SSD数据通路可以直通主机,并且具有降低数据路径时延、提高带宽、满足高性能应用场景、以及可以使用原生NVMe驱动的技术效果。
在一种可能的实施方式中,经所述至少一个固态硬盘和所述主机之间的数据通路传输的数据不经过所述FPGA卡的内存的转存。在一些实施例中,当所述提交队列元素中的分流标记指示所述读写操作请求对应数据读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述主机。在一些实施例中,当所述提交队列元素中的分流标记指示所述读写操作请求对应指令读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述FPGA卡的内存。如此实现了指令和数据路径的分流,有助于降低数据路径时延、提高带宽、满足高性能应用场景、以及可以使用原生NVMe驱动。
在一些实施例中,所述提交队列元素包括物理区域页PRP域段,所述PRP域段包括所述分流标记,功能标识和所述地址信息。示例性的PRP域段可见于图2。图2为本申请实施例提供的一种物理区域页的格式的示意图。图2中的物理区域页200包括分流标记202,功能标识204以及地址信息206。在一些实施例中,图2中的分流标记202占用1个比特位,功能标识204(function ID)占用12个比特位,地址信息206占用51个比特位,PRP域段也就是物理区域页200总共有64个比特位。上面提到,PRP域段可以是例如64位的内存物理地址,其内容可以包括页起始地址和页内偏移,用于指示SSD数据所在内存位置。因此,通过例如图2所示的物理区域页的格式,可以对现有的PRP域段进行修改并在不改动其整体所占位的前提下实现添加分流标记。在一些实施例中,所述PRP域段所包括的所述地址信息对应所述至少一个客户虚拟机使用的非易失性内存主机控制器接口规范NVMe驱动下的客户机物理地址GPA,所述NVMe驱动下的所述GPA根据所述功能标识被转换为主机物理地址HPA,所述HPA用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的所述给定客户虚拟机的内存进行读写。在一些实施例中,所述NVMe驱动下的所述GPA通过所述主机的输入输出内存管理单元IOMMU被转换为所述HPA,所述IOMMU包括信息查找表用于根据所述功能标识进行地址重映射以将所述NVMe驱动下的所述GPA转换为所述HPA。在一些实施例中,所述至少一个固态硬盘所发起的DMA操作不包括所述功能标识,当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时,所述功能标识通过所述提交队列元素的所述PRP域段获得。在一些实施例中,所述分流标记和所述功能标识位于所述PRP域段的高位,所述地址信息位于所述PRP域段的相对于所述高位的低位。在一些实施例中,通过对所述NVMe驱动下的所述GPA进行高位截位得到所述PRP域段。考虑到虚拟机的内存地址中一般是冗余的,因此可以利用地址高位来传递额外信息,包括分流标记。这里,通过例如高位截位的方式,让低位例如图2所示的占据51位的地址信息206来保留原来的信息,这样不会损失信息,还可以添加分流标记和功能标识。这里,功能标识可以通过IOMMU的信息查找表来使得GPA被转换成HPA。具体地,IOMMU的信息查找表包括标识符用于标识PCIE设备和用于标识整个PCIE拓扑结构,包括标识其中的每一条总线(Bus),每一个设备(Device)和每一项功能(Function)。在一种可能的实施方式中,所述信息查找表包括与快捷外围部件互连标准PCIE拓扑结构对应的总线-设备-功能信息查找表。这样实现了DMA的再映射并且不需要改动现有的PRP域段的大小,因此可以更好地适配内核原生的NVMe驱动。在一种可能的实施方式中,所述数据通路构建方法应用于所述至少一个客户虚拟机使用的原生NVMe驱动。
继续参阅图1,在一种可能的实施方式中,所述数据通路构建方法还包括:通过所述FPGA卡,在写入所述提交队列元素到所述提交队列之后,向所述至少一个固态硬盘发出提交队列读取信号。在一些实施例中,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在接收到所述提交队列读取信号之后发起DMA操作。在一些实施例中,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在执行完所述读写操作请求之后,写入完成队列元素到所述FPGA卡的内存。在一些实施例中,所述数据通路构建方法还包括:通过所述FPGA卡,从所述FPGA卡的内存获得所述完成队列元素,以及将所述完成队列元素写入所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的完成队列。在一些实施例中,所述数据通路构建方法还包括:通过所述至少一个客户虚拟机中的所述给定客户虚拟机,从所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的所述完成队列读取所述完成队列元素,然后向所述多个非易失性内存主机控制器接口规范虚拟盘中被分配给所述给定客户虚拟机的非易失性内存主机控制器接口规范虚拟盘发送完成队列读取信号。如此,实现了在支持NVMe协议的SSD的应用场景下构建所述数据通路。
在一种可能的实施方式中,所述FPGA卡的内存是所述FPGA卡的板载双倍数据速率同步动态随机存取存储器DDR。在一种可能的实施方式中,所述至少一个固态硬盘被挂载在所述FPGA卡上。在一种可能的实施方式中,所述至少一个固态硬盘不支持单根输入输出虚拟化SRIOV功能,所述至少一个固态硬盘中的给定固态硬盘通过所述FPGA卡被虚拟化成所述多个非易失性内存主机控制器接口规范虚拟盘中的至少两个非易失性内存主机控制器接口规范虚拟盘。如此,实现了优化NVMe虚拟化场景下的数据通路,使得SSD数据通路可以直通主机。
参阅图1和图2,以SSD的读取操作为例,分流标记的添加和使用从虚拟机发起读取指令也就是IOR指令开始。FPGA逻辑先把IOR指令从虚拟机内存读取到逻辑内部缓存,然后修改指令中的PRP域段,将分流标记和功能标识添加到PRP的高位上,如图2所示。接着,FPGA逻辑将修改后的IOR指令(其已经携带分流标记和功能标识)写入到FPGA的板载DDR上的SQ,接下来FPGA再通知SSD去处理该指令。然后,SSD根据SQ基地址和当前头指针值发起DMA操作来读取指令,FPGA逻辑检测到SSD的读操作之后,会检查读地址中的分流标记。如果FPGA检测到分流标记为本地也就是意味着将读取指令的操作分流到FPGA卡上的DDR,然后将读取到的IOR指令返回给SSD,应当理解的是,返回给SSD的IOR指令在被写入到DDR的时候已经被添加了分流标记和功能标识。另一方面,SSD读取到IOR指令之后,根据指令中的PRP发起DMA读取数据,FPGA逻辑检测到SSD的读操作之后会检查读地址中的分流标记,如果FPGA检测到分流标记为主机,也就意味着将读取指令的操作分流到虚拟机内存。另外,FPGA卡通过SRIOV可以生成多个虚拟功能(Virtual Function,VF),每个VF对应一个NVMe虚拟盘,这些NVMe虚拟盘可能会分配到不同的虚拟机上。NVMe虚拟盘通过DMA操作从虚拟机内存读写指令或数据,虚拟机上的NVMe驱动使用的物理地址为GPA也就是说DMA读写的地址为GPA。需要将GPA转换成HPA才能被处理,而GPA到HPA的转换是通过IOMMU组件来完成的。IOMMU组件根据设备例如PCIE设备的BDF(bus:device:function)信息查找表来完成GPA到HPA的转换,所以NVMe虚拟盘发出的DMA读写操作必须带上正确的功能标识信息才能完成地址再映射。但是一般情况下,NVMe物理盘也就是NVMe SSD是直接挂在FPGA上的,所以发起的DMA操作并不携带NVMe虚拟盘(VF)的功能标识信息,因此FPGA逻辑利用指令的PRP域段地址高位来携带功能标识,这样当FPGA逻辑检测到NVMe物理盘发出的读写虚拟机内存操作之后,可以从地址中提取出功能标识信息,从而将DMA操作对应到不同的VF上。接着,通过处理器的IOMMU组件,根据信息查找表完成GPA到HPA的转换,从而访问到对应虚拟机的内存空间。
图3为本申请实施例提供的一种虚拟系统的示意图。如图3所示,虚拟系统包括主机302,现场可编程逻辑门阵列卡304,以及至少一个固态硬盘306。现场可编程逻辑门阵列卡304上包括内存310和非易失性内存主机控制器接口规范虚拟盘320,非易失性内存主机控制器接口规范虚拟盘320包括分流单元330。图3所示的虚拟系统的运行原理可以参考上面图1和图2的实施例。具体地,图3所示的虚拟系统可以用于图1所示的数据通路构建方法。所述数据通路构建方法应用于包括了至少一个固态硬盘306的主机302,所述至少一个固态硬盘306通过现场可编程逻辑门阵列卡304被虚拟化成多个非易失性内存主机控制器接口规范虚拟盘320,非易失性内存主机控制器接口规范虚拟盘320被分配给相对于所述主机302的至少一个客户虚拟机(未示出)。所述虚拟系统运行的所述数据通路构建方法包括:通过所述现场可编程逻辑门阵列卡304,检测由所述至少一个客户虚拟机发起的读写操作请求,根据所述读写操作请求对应指令读写操作或者数据读写操作来确定分流标记并添加所述分流标记到与所述读写操作请求对应的提交队列元素,以及写入所述提交队列元素到提交队列,所述提交队列存储在所述现场可编程逻辑门阵列卡304的内存310;通过所述至少一个固态硬盘306,根据所述提交队列元素中的地址信息,发起DMA操作用于执行所述读写操作请求;通过所述现场可编程逻辑门阵列卡304,响应于所述至少一个固态硬盘306所发起的DMA操作,根据所述提交队列元素中的分流标记,将所述至少一个固态硬盘306所发起的DMA操作选择性地分流到所述现场可编程逻辑门阵列卡304的内存310或者所述主机302。其中当所述至少一个固态硬盘306所发起的DMA操作被分流到所述主机302时构建起所述至少一个固态硬盘306和所述主机302之间的数据通路用于所述至少一个固态硬盘306对所述至少一个客户虚拟机中的给定客户虚拟机的内存进行读写。上述的分流通过分流单元330实现。
参见图4,图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processingunit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-networkprocessing unit,NPU)、张量处理器(tensor processing unit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificintegrated circuit,ASIC),可编程逻辑器件(programmable logicdevice,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(localinterconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(doubledatarate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheralcomponent interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherentinterconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行上述方法实施例中的方法步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (20)
1.一种数据通路构建方法,其特征在于,所述数据通路构建方法应用于包括了至少一个固态硬盘的主机,所述至少一个固态硬盘通过现场可编程逻辑门阵列FPGA卡被虚拟化成多个非易失性内存主机控制器接口规范虚拟盘,所述多个非易失性内存主机控制器接口规范虚拟盘被分配给相对于所述主机的至少一个客户虚拟机,所述数据通路构建方法包括:
通过所述FPGA卡,检测由所述至少一个客户虚拟机发起的读写操作请求,根据所述读写操作请求对应指令读写操作或者数据读写操作来确定分流标记并添加所述分流标记到与所述读写操作请求对应的提交队列元素,以及写入所述提交队列元素到提交队列,所述提交队列存储在所述FPGA卡的内存;
通过所述至少一个固态硬盘,根据所述提交队列元素中的地址信息,发起直接内存访问DMA操作用于执行所述读写操作请求;
通过所述FPGA卡,响应于所述至少一个固态硬盘所发起的DMA操作,根据所述提交队列元素中的分流标记,将所述至少一个固态硬盘所发起的DMA操作选择性地分流到所述FPGA卡的内存或者所述主机,其中当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时构建起所述至少一个固态硬盘和所述主机之间的数据通路用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的给定客户虚拟机的内存进行读写,
其中,当所述提交队列元素中的分流标记指示所述读写操作请求对应数据读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述主机,
当所述提交队列元素中的分流标记指示所述读写操作请求对应指令读写操作时,将所述至少一个固态硬盘所发起的DMA操作分流到所述FPGA卡的内存。
2.根据权利要求1所述的数据通路构建方法,其特征在于,经所述至少一个固态硬盘和所述主机之间的数据通路传输的数据不经过所述FPGA卡的内存的转存。
3.根据权利要求1所述的数据通路构建方法,其特征在于,所述提交队列元素包括物理区域页PRP域段,所述PRP域段包括所述分流标记,功能标识和所述地址信息。
4.根据权利要求3所述的数据通路构建方法,其特征在于,所述PRP域段所包括的所述地址信息对应所述至少一个客户虚拟机使用的非易失性内存主机控制器接口规范NVMe驱动下的客户机物理地址GPA,所述NVMe驱动下的所述GPA根据所述功能标识被转换为主机物理地址HPA,所述HPA用于所述至少一个固态硬盘对所述至少一个客户虚拟机中的所述给定客户虚拟机的内存进行读写。
5.根据权利要求4所述的数据通路构建方法,其特征在于,所述NVMe驱动下的所述GPA通过所述主机的输入输出内存管理单元IOMMU被转换为所述HPA,所述IOMMU包括信息查找表用于根据所述功能标识进行地址重映射以将所述NVMe驱动下的所述GPA转换为所述HPA。
6.根据权利要求4所述的数据通路构建方法,其特征在于,所述至少一个固态硬盘所发起的DMA操作不包括所述功能标识,当所述至少一个固态硬盘所发起的DMA操作被分流到所述主机时,所述功能标识通过所述提交队列元素的所述PRP域段获得。
7.根据权利要求4所述的数据通路构建方法,其特征在于,所述分流标记和所述功能标识位于所述PRP域段的高位,所述地址信息位于所述PRP域段的相对于所述高位的低位。
8.根据权利要求7所述的数据通路构建方法,其特征在于,通过对所述NVMe驱动下的所述GPA进行高位截位得到所述PRP域段。
9.根据权利要求4所述的数据通路构建方法,其特征在于,所述数据通路构建方法应用于所述至少一个客户虚拟机使用的原生NVMe驱动。
10.根据权利要求5所述的数据通路构建方法,其特征在于,所述信息查找表包括与快捷外围部件互连标准PCIE拓扑结构对应的总线-设备-功能信息查找表。
11.根据权利要求1所述的数据通路构建方法,其特征在于,所述数据通路构建方法还包括:通过所述FPGA卡,在写入所述提交队列元素到所述提交队列之后,向所述至少一个固态硬盘发出提交队列读取信号。
12.根据权利要求11所述的数据通路构建方法,其特征在于,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在接收到所述提交队列读取信号之后发起DMA操作。
13.根据权利要求12所述的数据通路构建方法,其特征在于,所述数据通路构建方法还包括:通过所述至少一个固态硬盘,在执行完所述读写操作请求之后,写入完成队列元素到所述FPGA卡的内存。
14.根据权利要求13所述的数据通路构建方法,其特征在于,所述数据通路构建方法还包括:通过所述FPGA卡,从所述FPGA卡的内存获得所述完成队列元素,以及将所述完成队列元素写入所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的完成队列。
15.根据权利要求14所述的数据通路构建方法,其特征在于,所述数据通路构建方法还包括:通过所述至少一个客户虚拟机中的所述给定客户虚拟机,从所述至少一个客户虚拟机中的所述给定客户虚拟机的内存的所述完成队列读取所述完成队列元素,然后向所述多个非易失性内存主机控制器接口规范虚拟盘中被分配给所述给定客户虚拟机的非易失性内存主机控制器接口规范虚拟盘发送完成队列读取信号。
16.根据权利要求1至15中任一项所述的数据通路构建方法,其特征在于,所述FPGA卡的内存是所述FPGA卡的板载双倍数据速率同步动态随机存取存储器DDR。
17.根据权利要求1至15中任一项所述的数据通路构建方法,其特征在于,所述至少一个固态硬盘被挂载在所述FPGA卡上。
18.根据权利要求1所述的数据通路构建方法,其特征在于,所述至少一个固态硬盘不支持单根输入输出虚拟化SRIOV功能,所述至少一个固态硬盘中的给定固态硬盘通过所述FPGA卡被虚拟化成所述多个非易失性内存主机控制器接口规范虚拟盘中的至少两个非易失性内存主机控制器接口规范虚拟盘。
19.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至18中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166109.1A CN115840620B (zh) | 2023-02-27 | 2023-02-27 | 一种数据通路构建方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166109.1A CN115840620B (zh) | 2023-02-27 | 2023-02-27 | 一种数据通路构建方法、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840620A CN115840620A (zh) | 2023-03-24 |
CN115840620B true CN115840620B (zh) | 2023-05-16 |
Family
ID=85580201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310166109.1A Active CN115840620B (zh) | 2023-02-27 | 2023-02-27 | 一种数据通路构建方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840620B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303154B (zh) * | 2023-05-19 | 2023-08-22 | 珠海星云智联科技有限公司 | 用于数据处理单元的基地址寄存器资源分配方法及介质 |
CN117614906B (zh) * | 2024-01-23 | 2024-04-19 | 珠海星云智联科技有限公司 | 用于多线程多代表口发包的方法、计算机设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569000A (zh) * | 2019-09-17 | 2019-12-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘阵列的主机端raid管理方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444853A (en) * | 1992-03-31 | 1995-08-22 | Seiko Epson Corporation | System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's |
CN102693198B (zh) * | 2012-05-12 | 2015-03-25 | 北京忆恒创源科技有限公司 | Dma传输方法及系统 |
US10216419B2 (en) * | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
US20180335971A1 (en) * | 2017-05-16 | 2018-11-22 | Cisco Technology, Inc. | Configurable virtualized non-volatile memory express storage |
KR102493964B1 (ko) * | 2017-12-18 | 2023-02-01 | 삼성전자주식회사 | 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법 |
US11016911B2 (en) * | 2018-08-24 | 2021-05-25 | Samsung Electronics Co., Ltd. | Non-volatile memory express over fabric messages between a host and a target using a burst mode |
CN114417373A (zh) * | 2021-12-28 | 2022-04-29 | 联想(北京)有限公司 | 一种NVMe-oF用户态客户端的数据访问方法和装置 |
-
2023
- 2023-02-27 CN CN202310166109.1A patent/CN115840620B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569000A (zh) * | 2019-09-17 | 2019-12-13 | 深圳忆联信息系统有限公司 | 基于固态硬盘阵列的主机端raid管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115840620A (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115840620B (zh) | 一种数据通路构建方法、设备及介质 | |
US11409465B2 (en) | Systems and methods for managing communication between NVMe-SSD storage device(s) and NVMe-of host unit | |
US10152433B2 (en) | Inline PCI-IOV adapter | |
US11256445B2 (en) | Virtual disk file format conversion method and apparatus | |
US9864538B1 (en) | Data size reduction | |
US20190243757A1 (en) | Systems and methods for input/output computing resource control | |
KR102321913B1 (ko) | 불휘발성 메모리 장치, 및 그것을 포함하는 메모리 시스템 | |
JP2013515983A (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
US8966195B2 (en) | Direct memory access and super page swapping optimizations for a memory blade | |
US10977199B2 (en) | Modifying NVMe physical region page list pointers and data pointers to facilitate routing of PCIe memory requests | |
CN105408875B (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
EP4053706A1 (en) | Cross address-space bridging | |
EP3350700B1 (en) | Multi root i/o virtualization system | |
CN115858103B (zh) | 用于开放堆栈架构虚拟机热迁移的方法、设备及介质 | |
CN115543894B (zh) | 存储系统、数据处理方法及装置、存储介质及电子设备 | |
EP4123649A1 (en) | Memory module, system including the same, and operation method of memory module | |
US11907120B2 (en) | Computing device for transceiving information via plurality of buses, and operating method of the computing device | |
US11860792B2 (en) | Memory access handling for peripheral component interconnect devices | |
CN115774701B (zh) | 数据共享方法、装置、电子设备及存储介质 | |
WO2018165939A1 (en) | Flash data compression decompression method and apparatus | |
US20220137998A1 (en) | Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same | |
CN114238183A (zh) | 实现Virtio设备的系统、方法和介质 | |
CN116745754A (zh) | 一种访问远端资源的系统及方法 | |
CN118138558B (zh) | 基于直接内存访问的报文发包方法、计算机设备及介质 | |
US10261700B1 (en) | Method and apparatus for streaming buffering to accelerate reads |
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 |