CN119045947A - 一种用于DPU的VirtIO设备的链式描述符管理方法及装置 - Google Patents
一种用于DPU的VirtIO设备的链式描述符管理方法及装置 Download PDFInfo
- Publication number
- CN119045947A CN119045947A CN202411101916.6A CN202411101916A CN119045947A CN 119045947 A CN119045947 A CN 119045947A CN 202411101916 A CN202411101916 A CN 202411101916A CN 119045947 A CN119045947 A CN 119045947A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- chain
- descriptors
- address
- queue buffer
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种用于DPU的VirtIO设备的链式描述符管理方法及装置,宿主机接收虚拟功能发出的虚拟输入/输出操作请求;在描述符环形队列缓冲区所指向的内存空间中配置描述符,该描述符包括上一个链内描述符地址、下一个链内描述符地址、描述符截止位等其他基本信息;在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址;通过基址寄存器向VirtIO设备发送通知信号,接收VirtIO设备完成相应虚拟输入/输出操作后返回至完成环形队列缓冲区的控制块,并根据控制块内包含的信息回收被释放的描述符。本发明提供的方法引入链式描述符结构,实现批量数据传输和并发处理,提高VirtIO设备的整体性能。
Description
技术领域
本发明涉及虚拟化技术领域,尤其涉及一种用于DPU的VirtIO设备的链式描述符管理方法及装置。
背景技术
随着云计算和虚拟化技术的快速发展,对高性能数据面、收发包速率还有整体数据传输性能提出了更高的要求。
VirtIO(Virtual Input&Output,虚拟化输入输出)作为一种高效的I/O虚拟化解决方案,在虚拟机性能优化中扮演着重要角色。然而,传统的virtio设备描述符管理方式主要依赖于单一的描述符处理,这在处理大规模数据传输和并发场景时往往受限于性能瓶颈和并发处理能力。
现有VirtIO设备通常采用单一的描述符管理机制,即每次传输仅处理一个描述符。这种机制在处理复杂的数据传输任务时,存在频繁的上下文切换和中断触发,导致性能下降。此外,单一描述符管理方式在并发处理和多通道传输方面的支持也显得较为有限。
发明内容
鉴于此,本发明实施例提供了一种用于DPU的VirtIO设备的链式描述符管理方法及装置,以解决现有VirtIO设备采用的描述符管理机制每次传输仅处理一个描述符,在处理复杂的数据传输任务时,存在频繁的上下文切换和中断触发的问题,从而导致管理效率低,性能低,不适用于大规模数据传输、多通道传输、和并发处理的应用场景的问题。
一方面,本发明提供了一种用于DPU的VirtIO设备的链式描述符管理方法,所述方法包括以下步骤:
宿主机接收虚拟功能发出的含有虚拟输入/输出操作信息的虚拟输入/输出操作请求;
在描述符环形队列缓冲区所指向的内存空间中配置描述符,并根据所述描述符中包含的上一个链内描述符地址和下一个链内描述符地址构建描述符链;其中,每个描述符中包含相应虚拟功能发出的虚拟输入/输出操作信息;
在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址;
通过基址寄存器向VirtIO设备发送通知信号,所述通知信号包括已配置好的描述符信息、描述符头地址信息;
接收完成环形队列缓冲区的控制块,并根据所述控制块内包含的信息回收描述符;其中,所述控制块是由所述VirtIO设备从所述描述符链中读取相应描述符,并根据读取的描述符完成相应虚拟输入/输出操作后,返回至所述完成环形队列缓冲区的数据结构。
在本发明的一些实施例中,所述方法包括:
通过虚拟化层将所述虚拟输入/输出操作请求转发至所述宿主机。
在本发明的一些实施例中,在描述符环形队列缓冲区所指向的内存空间中配置描述符,包括:
所述宿主机分配一个环形缓冲区,将其作为所述描述符环形队列缓冲区,用于存放所述描述符;
在所述描述符环形队列缓冲区中逐个填充所述描述符的内容;
填充完成后,更新所述描述符的状态字段。
在本发明的一些实施例中,在多队列环境中,所述方法还包括:
根据所述通知信号、所述上一个链内描述符地址和所述下一个链内描述符地址,将多个描述符链接,形成连续的描述符链;
遍历所述描述符链,根据每个描述符中包含的下一个链内描述符地址逐个访问所述描述符链中的每个描述符;
获取所需描述符中的信息,进行相应的数据处理;
每处理完一个描述符后,更新所述描述符链结构。
另一方面,本发明还提供一种用于DPU的VirtIO设备的链式描述符管理方法,所述方法包括以下步骤:
VirtIO设备接收宿主机发送的通知信号,所述通知信号包括新的可用的描述符信息;
从可用数据头环形队列缓冲区读取下一个可用的描述符头地址;
根据所述描述符头地址,从描述符环形队列缓冲区读取相应的描述符,所述描述符中包含虚拟功能发出的虚拟输入/输出操作信息,所述描述符根据其包含的上一个链内描述符地址和下一个链内描述符地址预先被构建为描述符链;
根据读取得到的描述符,执行相应的虚拟输入/输出操作之后,将相应的控制块发送至完成环形队列缓冲区。
在本发明的一些实施例中,根据所述描述符头地址,从描述符环形队列缓冲区读取相应的描述符,包括:
首先从所述描述符环形队列缓冲区读取相应描述符的第一部分;
若有后续未被读取的描述符,则连续读取预设数量个描述符,以实现并行处理。
在本发明的一些实施例中,接收宿主机发送的通知信号,包括:
接收所述宿主机发送的中断信号,以得知有新的可用的描述符,并执行预定的中断处理程序来处理新的描述符;
或者使用轮询的方式定期检查描述符状态变化,以得知是否有新的可用的描述符。
另一方面,本发明还提供一种用于DPU的VirtIO设备的链式描述符管理装置,包括处理器、存储器及存储在存储器上的计算机程序/指令,所述处理器用于执行所述计算机程序/指令,当所述计算机程序/指令被执行时该装置实现如上文中提及的任意一项所述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中提及的任意一项所述方法的步骤。
另一方面,本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上文中提及的任意一项所述方法的步骤。
本发明的有益效果至少是:
本发明提供一种用于DPU的VirtIO设备的链式描述符管理方法及装置,宿主机接收虚拟功能发出的虚拟输入/输出操作请求;在描述符环形队列缓冲区所指向的内存空间中配置描述符,该描述符包括上一个链内描述符地址、下一个链内描述符地址、描述符截止位等其他基本信息;在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址;通过基址寄存器向VirtIO设备发送通知信号,接收VirtIO设备完成相应虚拟输入/输出操作后返回至完成环形队列缓冲区的控制块,并根据控制块内包含的信息回收被释放的描述符。本发明提供的方法引入链式描述符结构,支持多个描述符链的并发处理,实现批量数据传输和并发处理。进一步的,通过减少中断次数和上下文切换,降低传输延迟,显著提高VirtIO设备的整体性能。进一步的,链式描述符结构使得管理多个数据缓冲区变得更加简单和直观,降低了管理复杂度。进一步的,本发明的设计具有良好的灵活性和可扩展性,可以根据实际需求调整描述符链的长度和数量,适应不同规模和需求的VirtIO设备场景。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例中VirtIO设备的链式描述符管理方法的步骤示意图。
图2为本发明一实施例中VirtIO设备的链式描述符管理方法的整体框架流程图。
图3为本发明一实施例中描述符环形队列缓冲区模块描述符管理方法的框架流程图。
图4为本发明一实施例中描述符内部结构示意图。
图5为本发明一实施例中描述符链结构示意图。
图6为本发明一实施例中VirtIO设备的链式描述符管理方法的步骤示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
这里需要强调的是,在下文中提及的各步骤标记并不是对各步骤先后顺序的限定,而应当理解为可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
为了解决现有VirtIO设备采用的描述符管理机制每次传输仅处理一个描述符,在处理复杂的数据传输任务时,存在频繁的上下文切换和中断触发的问题,从而导致管理效率低,性能低,不适用于大规模数据传输、多通道传输、和并发处理的应用场景的问题,本发明提出了一种用于DPU的VirtIO设备的链式描述符管理方法,其中,DPU表示数据处理单元(Data Processing Unit),如图1所示,该方法在宿主机侧执行,该方法包括以下步骤S101~S105:
步骤S101:接收虚拟功能发出的含有虚拟输入/输出操作信息的虚拟输入/输出操作请求。
步骤S102:在描述符环形队列缓冲区所指向的内存空间中配置描述符,并根据描述符中包含的上一个链内描述符地址和下一个链内描述符地址构建描述符链。其中,每个描述符中包含相应的虚拟功能发出的虚拟输入/输出操作信息。
步骤S103:在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址。
步骤S104:通过基址寄存器向VirtIO设备发送通知信号。其中,通知信号包括已配置好的描述符信息、描述符头地址信息。
步骤S105:接收完成环形队列缓冲区的控制块,并根据控制块内包含的信息回收描述符。其中,控制块是由VirtIO设备从描述符链中读取相应描述符,并根据读取的描述符完成相应虚拟输入/输出操作后,返回至完成环形队列缓冲区的数据结构。
如图2所示,为VirtIO设备的链式描述符管理方法的整体框架流程图。该方法以宿主机作为执行端,通过基址寄存器发送通知信号,来通知VirtIO设备进行虚拟输入/输出操作,通过配置内存空间中的三个VirtIO环形队列缓冲区中的数据实现VirtIO设备的前端配置,再从完成环形队列缓冲区获取控制块,进一步释放VirtIO环形队列缓冲区资源,实现虚拟队列和描述符的回收,具体的:
在步骤S101中,宿主机(HOST)接收虚拟功能(Virtual Function,VF)发出的虚拟输入/输出(I/O)操作请求。其中,虚拟输入/输出操作的信息包括数据缓冲区、操作类型等信息。
在一些实施例中,通过虚拟化层将虚拟输入/输出操作请求转发至宿主机,其中,虚拟化层位于物理主机操作系统之上,负责管理和分配物理资源给虚拟机,包括处理虚拟机的CPU、内存、存储和I/O设备等资源请求,虚拟化层可以为KVM、Xen等。
在步骤S102中,如图3所示,宿主机在描述符环形队列缓冲区(desc_ring)所指向的内存空间中配置描述符。其中,这些描述符包含了步骤S101中虚拟输入/输出操作的相关信息,如数据缓冲区、操作类型等。
描述符环形队列缓冲区desc_ring,用于存储需要搬移的描述符,描述符通常包含队列号、直接内存访问(Direct MemoryAccess,DMA)地址和数据长度等数据流搬移信息,用于数据DMA操作实现虚拟输入/输出的读写操作。
在一些实施例中,在描述符环形队列缓冲区所指向的内存空间中配置描述符,具体包括以下步骤:
分配描述符空间:宿主机分配一块内存空间,通常为一个环形缓冲区,将其作为描述符环形队列缓冲区,用于存放描述符。这些描述符是结构化的数据块,用来传递关于输入/输出操作的必要信息。
填充描述符内容:宿主机在分配的描述符环形队列缓冲区中逐个填充描述符的内容。每个描述符包含执行一次输入/输出操作所需的信息,比如数据缓冲区的地址或者数据描述符本身,操作类型,读取或写入,数据长度和偏移量等。
标记描述符状态:宿主机在填充完描述符后,可能会更新描述符的状态字段,以指示该描述符已经被主机准备好,等待虚拟设备处理。
在本发明中,引入链式描述符结构,以实现批量数据传输和并发处理,因此,如图4所示,本发明的描述符不仅包含普通描述符结构中的数据、地址、队列号、长度和数据有效位,还包含上一个链内描述符地址、下一个链内描述符地址和描述符截止位。
在一些实施例中,如图5所示,多个队列的多个描述符链在desc_ring中的排布,根据通知信号、上一个链内描述符地址和下一个链内描述符地址,将多个描述符链接,形成连续的描述符链。根据通知信号和链式描述符数量,先后相互交叉排布,但通过链式指针前后有机关联,易于管理。
在一些实施例中,构建得到描述符链后,还包括:
遍历描述符链,根据每个描述符中包含的下一个链内描述符地址逐个访问描述符链中的每个描述符。获取所需描述符中的信息,进行相应的数据处理。每处理完一个描述符后,更新描述符链结构。
在步骤S103中,宿主机在可用数据头环形队列缓冲区(avail_ring)所指向的内存空间中配置描述符头地址。其中,描述符头通常包含描述符的元数据,例如描述符的数量、下一个描述符的地址等信息。
可用数据头环形队列缓冲区avail_ring,用于存储需要搬移的数据头,数据头包含队列号和描述符地址,描述符地址可以用来从desc_ring中获取相应的描述符。
在步骤S104中,宿主机通过基址寄存器(BaseAddress Registers,BAR)向VirtIO设备发送通知信号notify。其中,基址寄存器是VirtIO设备的一部分,用于宿主机和VirtIO设备之间的通信和通知。通知信号包括已配置好的描述符信息,通过通知信号,宿主机告知设备那些描述符已经准备好并可以被使用。
在步骤S105中,宿主机接收VirtIO设备完成相应虚拟输入/输出操作后返回至完成环形队列缓冲区(used_ring)的控制块,并根据控制块内包含的信息回收被释放的描述符。
完成环形队列缓冲区used_ring,用于存储需要返回的完成信息,包含完成队列号,完成数据头和完成描述符,以及本次操作所对应的可用数据头环形队列缓冲区中描述符头读取指针和完成环形队列缓冲区中的完成指针。
本发明还提供一种用于DPU的VirtIO设备的链式描述符管理方法,如图6所示,该方法在VirtIO设备侧执行,该方法包括以下步骤S201~S204:
步骤S201:接收宿主机发送的通知信号,其中,通知信号包括新的可用的描述符信息。
步骤S202:从可用数据头环形队列缓冲区读取下一个可用的描述符头地址。
步骤S203:根据描述符头地址,从描述符环形队列缓冲区读取相应的描述符。其中,描述符中包含虚拟功能发出的虚拟输入/输出操作信息,描述符根据其包含的上一个链内描述符地址和下一个链内描述符地址预先被构建为描述符链。
步骤S204:根据读取得到的描述符,执行相应的虚拟输入/输出操作之后,将相应的控制块发送至完成环形队列缓冲区。
同样可参照图2和图3,该方法以VirtIO设备作为执行端,VirtIO设备在接收到通知信号后,从可用数据头环形队列缓冲区读取描述符头地址,然后根据描述符头地址从描述符环形队列缓冲区读取描述符,完成相应的虚拟输入/输出操作后,向完成环形队列缓冲区发送携带有描述符头地址的控制块,表示相应的描述符不再被使用,主机可以释放相关的内存资源,具体的:
在步骤S201中,VirtIO设备接收宿主机HOST发送的通知信号notify。其中,通知信号包括新的可用的描述符信息,VirtIO设备通过通知信号知道有新的描述符可用。
在一些实施例中,步骤S101通过通信协议或者中断机制实现。例如,VirtIO设备接收宿主机发送的中断信号,以得知有新的可用的描述符,并执行预定的中断处理程序来处理新的描述符,或者使用轮询的方式定期检查描述符状态变化,以得知是否有新的可用的描述符。
在步骤S202中,VirtIO设备从可用数据头环形队列缓冲区(avail_ring)读取下一个可用的描述符头地址。可用数据头环形队列缓冲区的配置与使用与上文保持一致。
在步骤S203中,VirtIO设备根据读取得到的描述符头地址,从描述符环形队列缓冲区(desc_ring)读取相应的描述符。描述符环形队列缓冲区的配置与使用与上文保持一致。
在一些实施例中,VirtIO设备首先从描述符环形队列缓冲区读取相应描述符的第一部分;若有后续未被读取的描述符,则连续读取预设数量个描述符,以实现并行处理,示例性的,预设数量为3。
在本发明中,引入链式描述符结构,以实现批量数据传输和并发处理,因此,同样如图4所示,本发明的描述符不仅包含普通描述符结构中的数据、地址、队列号、长度和数据有效位,还包含上一个链内描述符地址、下一个链内描述符地址和描述符截止位。
在步骤S204中,VirtIO设备根据描述符中所包含的虚拟输入/输出操作信息,执行相应的虚拟输入/输出操作之后,将相应的控制块(Control Packet Logic,CPL)发送至完成环形队列缓冲区(used_ring)。其中,控制块中包含了描述符头地址,宿主机通过从完成环形队列缓冲区提取相应控制块中的描述符头地址,便可以识别哪些描述符已经被使用过。
本发明还提供一种用于DPU的VirtIO设备的链式描述符管理装置,可如图2所示,包括宿主机HOST,基址寄存器BAR、内存空间(可用数据头环形队列缓冲区、描述符环形队列缓冲区、完成环形队列缓冲区)和VirtIO设备,用于被执行实现用于DPU的VirtIO设备的链式描述符管理方法的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现用于DPU的VirtIO设备的链式描述符管理方法的步骤。
与上述方法相应地,本发明还提供了一种设备,该设备包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该设备实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明提供一种用于DPU的VirtIO设备的链式描述符管理方法及装置,宿主机接收虚拟功能发出的虚拟输入/输出操作请求;在描述符环形队列缓冲区所指向的内存空间中配置描述符,该描述符包括上一个链内描述符地址、下一个链内描述符地址、描述符截止位等其他基本信息;在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址;通过基址寄存器向VirtIO设备发送通知信号,接收VirtIO设备完成相应虚拟输入/输出操作后返回至完成环形队列缓冲区的控制块,并根据控制块内包含的信息回收被释放的描述符。本发明提供的方法引入链式描述符结构,支持多个描述符链的并发处理,实现批量数据传输和并发处理。进一步的,通过减少中断次数和上下文切换,降低传输延迟,显著提高VirtIO设备的整体性能。进一步的,链式描述符结构使得管理多个数据缓冲区变得更加简单和直观,降低了管理复杂度。进一步的,本发明的设计具有良好的灵活性和可扩展性,可以根据实际需求调整描述符链的长度和数量,适应不同规模和需求的VirtIO设备场景。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,所述方法包括以下步骤:
宿主机接收虚拟功能发出的含有虚拟输入/输出操作信息的虚拟输入/输出操作请求;
在描述符环形队列缓冲区所指向的内存空间中配置描述符,并根据所述描述符中包含的上一个链内描述符地址和下一个链内描述符地址构建描述符链;其中,每个描述符中包含相应虚拟功能发出的虚拟输入/输出操作信息;
在可用数据头环形队列缓冲区所指向的内存空间中配置描述符头地址;
通过基址寄存器向VirtIO设备发送通知信号,所述通知信号包括已配置好的描述符信息、描述符头地址信息;
接收完成环形队列缓冲区的控制块,并根据所述控制块内包含的信息回收描述符;其中,所述控制块是由所述VirtIO设备从所述描述符链中读取相应描述符,并根据读取的描述符完成相应虚拟输入/输出操作后,返回至所述完成环形队列缓冲区的数据结构。
2.根据权利要求1所述的用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,所述方法包括:
通过虚拟化层将所述虚拟输入/输出操作请求转发至所述宿主机。
3.根据权利要求1所述的用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,在描述符环形队列缓冲区所指向的内存空间中配置描述符,包括:
所述宿主机分配一个环形缓冲区,将其作为所述描述符环形队列缓冲区,用于存放所述描述符;
在所述描述符环形队列缓冲区中逐个填充所述描述符的内容;
填充完成后,更新所述描述符的状态字段。
4.根据权利要求1所述的用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,在多队列环境中,所述方法还包括:
根据所述通知信号、所述上一个链内描述符地址和所述下一个链内描述符地址,将多个描述符链接,形成连续的描述符链;
遍历所述描述符链,根据每个描述符中包含的下一个链内描述符地址逐个访问所述描述符链中的每个描述符;
获取所需描述符中的信息,进行相应的数据处理;
每处理完一个描述符后,更新所述描述符链结构。
5.一种用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,所述方法包括以下步骤:
VirtIO设备接收宿主机发送的通知信号,所述通知信号包括新的可用的描述符信息;
从可用数据头环形队列缓冲区读取下一个可用的描述符头地址;
根据所述描述符头地址,从描述符环形队列缓冲区读取相应的描述符,所述描述符中包含虚拟功能发出的虚拟输入/输出操作信息,所述描述符根据其包含的上一个链内描述符地址和下一个链内描述符地址预先被构建为描述符链;
根据读取得到的描述符,执行相应的虚拟输入/输出操作之后,将相应的控制块发送至完成环形队列缓冲区。
6.根据权利要求5所述的用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,根据所述描述符头地址,从描述符环形队列缓冲区读取相应的描述符,包括:
首先从所述描述符环形队列缓冲区读取相应描述符的第一部分;
若有后续未被读取的描述符,则连续读取预设数量个描述符,以实现并行处理。
7.根据权利要求5所述的用于DPU的VirtIO设备的链式描述符管理方法,其特征在于,接收宿主机发送的通知信号,包括:
接收所述宿主机发送的中断信号,以得知有新的可用的描述符,并执行预定的中断处理程序来处理新的描述符;
或者使用轮询的方式定期检查描述符状态变化,以得知是否有新的可用的描述符。
8.一种用于DPU的VirtIO设备的链式描述符管理装置,包括处理器、存储器及存储在存储器上的计算机程序/指令,其特征在于,所述处理器用于执行所述计算机程序/指令,当所述计算机程序/指令被执行时该装置实现如权利要求1至7中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411101916.6A CN119045947A (zh) | 2024-08-12 | 2024-08-12 | 一种用于DPU的VirtIO设备的链式描述符管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202411101916.6A CN119045947A (zh) | 2024-08-12 | 2024-08-12 | 一种用于DPU的VirtIO设备的链式描述符管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN119045947A true CN119045947A (zh) | 2024-11-29 |
Family
ID=93568316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202411101916.6A Pending CN119045947A (zh) | 2024-08-12 | 2024-08-12 | 一种用于DPU的VirtIO设备的链式描述符管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN119045947A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN109923528A (zh) * | 2017-09-25 | 2019-06-21 | 华为技术有限公司 | 一种数据访问的方法和装置 |
CN113609055A (zh) * | 2021-06-25 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种后端设备获取描述符的方法、装置、设备及可读介质 |
CN115113977A (zh) * | 2022-06-30 | 2022-09-27 | 深圳云豹智能有限公司 | 描述符读取装置和设备、方法及集成电路 |
CN116578391A (zh) * | 2023-07-08 | 2023-08-11 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
-
2024
- 2024-08-12 CN CN202411101916.6A patent/CN119045947A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN109923528A (zh) * | 2017-09-25 | 2019-06-21 | 华为技术有限公司 | 一种数据访问的方法和装置 |
CN113609055A (zh) * | 2021-06-25 | 2021-11-05 | 山东云海国创云计算装备产业创新中心有限公司 | 一种后端设备获取描述符的方法、装置、设备及可读介质 |
CN115113977A (zh) * | 2022-06-30 | 2022-09-27 | 深圳云豹智能有限公司 | 描述符读取装置和设备、方法及集成电路 |
CN116578391A (zh) * | 2023-07-08 | 2023-08-11 | 北京云豹创芯智能科技有限公司 | 描述符表读取方法及模块、后端设备、介质、设备、芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114443529B (zh) | 内存直接访问架构、系统、方法、电子设备和介质 | |
EP2849076B1 (en) | Dma transmission method and system | |
EP2849077B1 (en) | Method for writing data into storage device and storage device | |
JP4917174B2 (ja) | 制御装置と通信するように構成されたホスト・コンピュータ・システムにおける入出力(i/o)操作用の入出力処理を容易にするためのコンピュータ・プログラム、装置、および方法 | |
US5918028A (en) | Apparatus and method for smart host bus adapter for personal computer cards | |
US7433977B2 (en) | DMAC to handle transfers of unknown lengths | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
CN110083461B (zh) | 一种基于fpga的多任务处理系统及方法 | |
US20150186068A1 (en) | Command queuing using linked list queues | |
CN109558344B (zh) | 一种适用于网络传输的dma传输方法及dma控制器 | |
CN107967225B (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
CN112416250B (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
US11397697B2 (en) | Core-to-core communication | |
CN112214240B (zh) | 主机输出输入命令的执行装置及方法及计算机可读取存储介质 | |
WO2022042127A1 (zh) | 一种协程切换的方法、装置及设备 | |
CN114513545B (zh) | 请求处理方法、装置、设备及介质 | |
EP2214103B1 (en) | I/O controller and descriptor transfer method | |
CN114416613A (zh) | 一种dma数据传输系统及方法 | |
WO2022032990A1 (zh) | 一种命令信息传输方法、系统、装置及可读存储介质 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及系统 | |
US8055817B2 (en) | Efficient handling of queued-direct I/O requests and completions | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
CN119045947A (zh) | 一种用于DPU的VirtIO设备的链式描述符管理方法及装置 | |
CN116954675A (zh) | 已用环表更新方法及模块、后端设备、介质、设备、芯片 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 |
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 |