一种数据处理方法、系统及相关组件技术方案

技术编号:38148932 阅读:10 留言:0更新日期:2023-07-13 09:12
本申请公开了一种数据处理方法、系统及相关组件,涉及半虚拟化领域,该数据处理方法包括:确定当前通知场景;当前通知场景为通知开启场景或通知未开启场景;若当前通知场景为通知开启场景,获取与通知对应的虚拟队列中的可用描述符,若当前通知场景为通知未开启场景,轮询目标虚拟队列中的可用描述符;执行每一可用描述符指定的数据传输操作。本申请能够实现不同通知场景下的描述符的灵活获取,保障了描述符和驱动侧数据的时效性。述符和驱动侧数据的时效性。述符和驱动侧数据的时效性。

【技术实现步骤摘要】
一种数据处理方法、系统及相关组件


[0001]本申请涉及半虚拟化领域,特别涉及一种数据处理方法、系统及相关组件。

技术介绍

[0002]在依托数据中心网络的云服务业务发展进程中,虚拟化技术因其高效、便捷、易管理等优势被云服务厂商广泛使用。由于物理设备在虚拟机之间的分配带来了主机用户态与内核态之间通信的巨大性能开销,因此以virtio为代表的半虚拟化技术应运而生。以网络设备为例,在virtio的vhost

net架构中,驱动程序的前、后端分别实现在用户态的客户操作系统和内核态的虚拟机监视器,通过virtqueue(虚拟队列)与共享内存的方式打通数据通路,避免了用户、内核态间频繁的切换与数据拷贝,从而提高网络设备的数据带宽。在服务器与FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)加速卡组成的异构系统中,为了降低CPU(Central Processing Unit,中央处理器)负载、提高网络带宽,通常将virtio的设备端驱动程序卸载到FPGA实现。
[0003]在virtio1.0定义的vring结构中,由驱动程序生成可用描述符存入虚拟队列并将此队列通知FPGA,FPGA根据读取可用表的偏置、可用表的内容、最后获取描述符。为了减少通知的频率,virtio标准定义了设备事件抑制(event suppression)功能,以控制驱动程序在设备指定的时机发送通知或完全关闭通知。这一功能的使用容易引入新的问题:一旦通知被关闭或被抑制,设备侧逻辑只能等待通知重新启用才能继续申请描述符,通知被关闭后,即使驱动向虚拟队列中写入了新的可用描述符,FPGA也无法主动获取描述符,造成逻辑资源的浪费、影响描述符时效性。当FPGA侧因某一队列业务繁忙而抑制或关闭该队列的通知后,驱动程序存入一些可用描述但在通知被重新启用后该队列长时间没有新的描述符写入,在通知关闭期间存入的可用描述符将无法被FPGA感知,容易导致上层数据包超时失效。
[0004]因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

技术实现思路

[0005]本申请的目的是提供一种数据处理方法、系统及相关组件,能够实现不同通知场景下的描述符的灵活获取,保障了描述符和驱动侧数据的时效性。
[0006]为解决上述技术问题,本申请提供了一种数据处理方法,包括:
[0007]确定当前通知场景;所述当前通知场景为通知开启场景或通知未开启场景;
[0008]若当前通知场景为所述通知开启场景,获取与通知对应的虚拟队列中的可用描述符,若当前通知场景为所述通知未开启场景,轮询目标虚拟队列中的可用描述符;
[0009]执行每一所述可用描述符指定的数据传输操作。
[0010]可选的,所述执行每一所述可用描述符指定的数据传输操作之后,所述数据处理方法还包括:
[0011]在所述数据传输操作完成后,生成完成信息;
[0012]基于所述完成信息向驱动侧写入已用描述符,以便驱动侧根据所述已用描述符执行数据清理操作。
[0013]可选的,所述获取与通知对应的虚拟队列中的可用描述符的过程包括:
[0014]获取与通知对应的虚拟队列的队列状态信息;
[0015]基于所述队列状态信息判断所述虚拟队列是否有效;
[0016]若是,获取所述虚拟队列中的可用描述符。
[0017]可选的,所述获取与通知对应的虚拟队列中的可用描述符的过程包括:
[0018]获取与通知对应的虚拟队列的队列状态信息;
[0019]基于所述队列状态信息中的读指针发送DMA请求,以获取n个描述符并锁存,n个描述符的长度为预设长度,n为正整数;
[0020]从n个所述描述符中获取可用描述符。
[0021]可选的,所述从n个所述描述符中获取可用描述符的过程包括:
[0022]对n个所述描述符进行校验;
[0023]将校验成功的所述描述符确定为可用描述符。
[0024]可选的,对每个所述描述符进行校验的过程包括:
[0025]获取读指针指向的所述描述符的flag字段的可用位的值、已用位的值及读回绕计数器的值;
[0026]当所述描述符的flag字段的可用位与已用位的值相反、且所述可用位与读回绕计数器的值相同时,判定所述描述符校验成功。
[0027]可选的,所述数据处理方法还包括:
[0028]当满足写入条件,将设备抑制信息写入对应的虚拟队列末端;所述写入条件为所述驱动侧的读回绕计数器的值和本地的读回绕计数器的值相同;
[0029]和/或,
[0030]当满足响应条件,相应驱动侧的事件抑制;所述响应条件为所述驱动侧的写回绕计数器的值和本地的写回绕计数器的值相同。
[0031]为解决上述技术问题,本申请还提供了一种数据处理系统,包括:
[0032]确定模块,用于确定当前通知场景;所述当前通知场景为通知开启场景或通知未开启场景;
[0033]获取模块,用于若当前通知场景为所述通知开启场景,获取与通知对应的虚拟队列中的可用描述符,若当前通知场景为所述通知未开启场景,轮询目标虚拟队列中的可用描述符;
[0034]执行模块,用于执行每一所述可用描述符指定的数据传输操作。
[0035]为解决上述技术问题,本申请还提供了一种电子设备,包括:
[0036]存储器,用于存储计算机程序;
[0037]处理器,用于执行所述计算机程序时实现如上文任意一项所述的数据处理方法的步骤。
[0038]为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任意一项所述的数据处理方法的步骤。
[0039]本申请提供了一种数据处理方法,在通知开启场景下根据通知解析对应的虚拟队列中的可用描述符,对于通知未开启场景,如通知被关闭或被抑制的场景,通过轮询的方式获取目标队列中的可用描述符,从而实现不同通知场景下的描述符的灵活获取,保障了描述符和驱动侧数据的时效性。本申请还提供了一种数据处理系统、电子设备及计算机可读存储介质,具有和上述数据处理方法相同的有益效果。
附图说明
[0040]为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1为本申请所提供的一种通过FPGA实现的virtio设备侧功能框图;
[0042]图2为本申请所提供的一种数据处理方法的步骤流程图;
[0043]图3为本申请所提供的一种为64字节DMA长度下的fetch&check模块的状态机;
[0044]图4为本申请所提供的一种数据处理系统的结构示意图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:确定当前通知场景;所述当前通知场景为通知开启场景或通知未开启场景;若当前通知场景为所述通知开启场景,获取与通知对应的虚拟队列中的可用描述符,若当前通知场景为所述通知未开启场景,轮询目标虚拟队列中的可用描述符;执行每一所述可用描述符指定的数据传输操作。2.根据权利要求1所述的数据处理方法,其特征在于,所述执行每一所述可用描述符指定的数据传输操作之后,所述数据处理方法还包括:在所述数据传输操作完成后,生成完成信息;基于所述完成信息向驱动侧写入已用描述符,以便驱动侧根据所述已用描述符执行数据清理操作。3.根据权利要求1所述的数据处理方法,其特征在于,所述获取与通知对应的虚拟队列中的可用描述符的过程包括:获取与通知对应的虚拟队列的队列状态信息;基于所述队列状态信息判断所述虚拟队列是否有效;若是,获取所述虚拟队列中的可用描述符。4.根据权利要求1所述的数据处理方法,其特征在于,所述获取与通知对应的虚拟队列中的可用描述符的过程包括:获取与通知对应的虚拟队列的队列状态信息;基于所述队列状态信息中的读指针发送DMA请求,以获取n个描述符并锁存,n个描述符的长度为预设长度,n为正整数;从n个所述描述符中获取可用描述符。5.根据权利要求4所述的数据处理方法,其特征在于,所述从n个所述描述符中获取可用描述符的过程包括:对n个所述描述符进行校验;将校验成功的所述描述符确定为可用描述符。6.根据权利要求5所述的数据处理方法,其特征在于,对每个所述描述符进行校验的...

【专利技术属性】
技术研发人员:李军郭巍邓子为
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1