CN112650558A - 数据处理方法、装置、可读介质和电子设备 - Google Patents
数据处理方法、装置、可读介质和电子设备 Download PDFInfo
- Publication number
- CN112650558A CN112650558A CN202011595902.6A CN202011595902A CN112650558A CN 112650558 A CN112650558 A CN 112650558A CN 202011595902 A CN202011595902 A CN 202011595902A CN 112650558 A CN112650558 A CN 112650558A
- Authority
- CN
- China
- Prior art keywords
- data
- data processing
- notification
- descriptors
- processed
- 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.)
- Granted
Links
Images
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及信息技术领域,尤其涉及一种数据处理方法、装置、可读介质和电子设备。本申请的数据处理方法用于数据处理***,数据处理***包括:调度模块和执行模块,数据处理方法包括:调度模块生成待处理数据和待处理数据对应的描述符,其中,描述符用于描述待处理数据的信息;调度模块发送数据处理通知,执行模块接收并保存数据处理通知,基于数据处理通知,获取预设数量的描述符,执行模块在判断预设数量的描述符包含无效描述符的情况下,执行模块设置通知使能标志位有效。根据本申请的方法,可以有效解决调度模块生成一次数据发一次通知导致带宽资源被通知大量占用的问题,避免了数据传输带宽的浪费。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种数据处理方法、装置、可读介质和电子设备。
背景技术
在硬件虚拟化的领域中,可以将一个主设备虚拟化成多个虚拟设备,每一个虚拟设备可以使用主设备的资源独自处理数据。
例如,以虚拟设备为执行模块为例,现有的数据处理方法是生成新的待处理数据时,调度模块100向执行模块2001发送通知处理数据同时调度模块100会把具体的待处理数据的个数告诉执行模块2001,例如,如图1所示,当一次生成2个待处理数据即待处理数据1、待处理数据2需要执行模块2001的队列1处理时,调度模块100发送携带数据个数为2的通知1给执行模块2001,当又生成1个待处理数据即待处理数据3需要执行模块2001的队列1处理时,调度模块100再次发送携带数据个数为1的通知2给执行模块2001,当一次生成3个待处理数据即待处理数据4,待处理数据5,待处理数据6需要执行模块2002的队列1处理时,调度模块100发送通知3给执行模块2002。当有新的待处理数据不断生成,调度模块100不停给执行模块2001或执行模块2002发送通知。可以理解,调度模块100每次生成待处理数据,都需要发送一次通知,同时将每次生成的待处理数据的个数通知给执行模块,但是在高性能即大流量的情况下,会浪费数据传输的带宽,同时,还将带来调度模块100的额外开销。
发明内容
本申请实施例提供了一种数据处理方法、装置、可读介质和电子设备。
第一方面,本申请实施例提供了一种数据处理方法,用于数据处理***,数据处理***包括:调度模块和执行模块,数据处理包括:调度模块生成待处理数据和待处理数据对应的描述符,其中,描述符用于描述待处理数据的信息;调度模块发送数据处理通知,其中,数据处理通知用于通知处理待处理数据;执行模块接收并保存数据处理通知,基于数据处理通知,获取预设数量的描述符,其中,根据获取的描述符,获取并处理待处理数据;执行模块在判断预设数量的描述符均为有效描述符的情况下,设置通知使能标志位无效,继续获取预设数量的描述符;执行模块在判断预设数量的描述符包含无效描述符的情况下,设置通知使能标志位有效。
例如,电子设备包括调度模块和执行模块,调度模块与执行模块通过总线连接,其中,总线可以是PCIe总线,调度模块包括处理器、控制器、存储器等,执行模块在具体实现时可以为片上***。例如,执行模块可以是物理网卡,通过SR-IOV技术,物理网卡可以虚拟化出n个虚拟网卡,其中,物理网卡或虚拟网卡包括多个队列,每个队列都可以用于处理待处理数据。
例如,调度模块与物理网卡通过PCIe总线连接,调度模块可以生成需要多队列物理网卡和/或多队列虚拟网卡处理的待处理数据和待处理数据对应的描述符,其中,多队列物理网卡可以是物理网卡的队列1,也可以是物理网卡的队列2,还可以是物理网卡的队列m。多队列虚拟网卡可以是虚拟网卡1的队列1,也可以是虚拟网卡1队列2,还可以是虚拟网卡1的队列m,还可以是虚拟网卡n的队列m。调度模块通过PCIe总线向物理网卡发送待处理数据,执行模块接收并保存数据处理通知,基于数据处理通知,获取预设数量的描述符,执行模块的描述符解析模块在判断预设数量的描述符均为有效描述符的情况下,执行模块的描述符解析模块继续获取预设数量的描述符,执行模块的描述符解析模块在判断预设数量的描述符包含无效描述符的情况下,调度模块设置通知使能标志位有效。可以理解,例如,当调度模块生成需要虚拟网卡1的队列1处理的待处理数据,调度模块发通知给虚拟网卡1的队列1,同时设置虚拟网卡1的队列1的通知使能标志位无效,则调度模块不再发通知给虚拟网卡1的队列1,只有在虚拟网卡1的队列1的通知使能标志位有效并且又有新的待处理数据需要虚拟网卡1的队列1处理时才会再次发通知给虚拟网卡1的队列1。可以理解,调度模块只需要发一次通知给虚拟网卡1的队列1,虚拟网卡主动处理待处理数据,直到遇到无效描述符时,才会停止处理数据。可以理解,根据本申请的方法,可以有效解决调度模块生成一次数据发一次通知导致带宽资源被通知大量占用的问题,避免了数据传输带宽的浪费,同时,还可以减少调度模块的处理器不停读写执行模块带来的处理器额外的时钟周期消耗,在某些场景下还可以减少进程上下文切换,提高调度模块的性能。在上述第一方面的一种可能的实现方式中,待处理数据的信息包括待处理数据的地址信息、待处理数据的长度信息、待处理数据的读写信息。
例如,调度模块生成需要虚拟网卡1的队列1处理的待处理数据,该待处理数据对应的描述符用于描述该待处理数据的信息。该待处理数据对应的描述符可以用于描述以下待处理数据信息:虚拟网卡1的队列1需要处理的待处理数据的地址信息,待处理数据的长度信息,待处理数据是读数据还是写数据信息等。可以理解,当描述符为无效描述符时即没有等待处理的数据,当描述符为有效描述符时即有等待处理的数据。
在上述第一方面的一种可能的实现方式中,通知使能标志位用于发送数据处理通知,其中,在通知使能标志位有效且生成待处理数据的情况下,调度模块发送数据处理通知。
可以理解,调度模块可以设置通知使能标志位为1时有效,则设置通知使能标志位为0时无效。调度模块还可以设置通知使能标志位为1时有效,则设置通知使能标志位为0时无效。
在上述第一方面的一种可能的实现方式中,还包括:数据处理通知保存在执行模块,且在数据处理通知保存在执行模块的情况下,设置自启动标志位有效。
可以理解,执行模块包括通知模块,自启动模块,描述符处理模块,数据处理通知可以保存在通知模块,也可以保存在自启动模块,当数据处理通知保存在通知模块和/或自启动模块,则设置自启动标志位有效。当数据处理通知不保存在通知模块或自启动模块,则设置自启动标志位无效。可以理解,设置自启动标志位有效时即表示有数据处理通知需要处理,设置自启动标志位无效时即表示没有数据处理通知需要处理或者描述符处理通知正在处理数据处理通知。
可以理解,执行模块可以设置自启动标志位为1时有效,则设置自启动标志位为0时无效。执行模块可以设置自启动标志位为0时有效,则设置自启动标志位为1时无效。
在上述第一方面的一种可能的实现方式中,还包括:数据处理通知包含标识信息,基于标识信息,获取预设数量的描述符,其中,标识信息用于唯一标识执行模块,例如调度模块生成需要虚拟网卡1的队列1处理的待处理数据,则数据处理通知包含虚拟网卡1的队列1的标识信息,该虚拟网卡1的队列1的标识信息用于区别于其他多队列物理网卡或多队列虚拟网卡,唯一标识虚拟网卡1的队列1。可以理解,数据处理通知即包含虚拟网卡1的队列1信息(即标识信息)的通知。虚拟网卡1的队列1的标识信息可以是虚拟网卡1的ID与队列1的ID的组合,例如虚拟网卡1的队列1的标识信息可以是21,其中,2表示虚拟网卡的ID,1表示队列1的ID。
在上述第一方面的一种可能的实现方式中,还包括:在判断预设数量的描述符均为有效描述符的情况下,保存最后一个有效描述符的索引,索引用于指示最后一个有效描述符的位置信息即在内存中的位置。可以理解,描述符索引模块保存最后一个有效描述符的索引,当描述符引擎下次获取预设数量的描述符时,根据上次获取的最后一个有效描述符的索引,描述符引擎可以确定从具体的索引位置获取描述符。例如,针对包含虚拟网卡1的ID与队列1的ID的待处理数据,根据描述该待处理数据信息的描述符的索引,确定下一次获取预设数量的描述符的位置,有利于实现先生成的数据先处理,按顺序处理待处理数据。
在上述第一方面的一种可能的实现方式中,还包括:在判断预设值数量的描述符包含无效描述符的情况下,并且在通知使能标志位有效的情况下,基于数据处理通知,再次获取预设值数量的描述符,判断预设值数量的描述符包含无效描述符的情况下,则清除数据处理通知,设置自启动标志位无效。
以调度模块生成需要虚拟网卡1的队列1处理的待处理数据为例,例如,执行模块接收的包含虚拟网卡1的队列1信息的通知,将该数据处理通知保存在通知模块,同时设置虚拟网卡1的队列1的自启动标志位有效即表示有虚拟网卡1的队列1的通知需要处理,当描述符处理模块从通知模块获取包含虚拟网卡1的队列1信息的通知,将虚拟网卡1的队列1的自启动标志位设置为无效即表示正在处理虚拟网卡1的队列1的通知,根据包含虚拟网卡1的队列1信息的通知,描述符处理模块继续获取预设数量的描述符并判断预设数量的描述符是否有效,在描述符为有效描述符的情况下,将描述符处理通知保存到自启动模块,同时将自启动标志位设置为有效即表示有虚拟网卡1的队列1的通知需要处理。执行模块在判断预设数量的描述符包含无效描述符的情况下,执行模块设置通知使能标志位有效,同时,将包含虚拟网卡1的队列1信息的通知保存在自启动模块,将虚拟网卡1的队列1的自启动标志位设置为有效即表示有虚拟网卡1的队列1的通知需要处理,当描述符处理模块从自启动模块获取的预设数量的描述符仍然包含无效描述符同时虚拟网卡1的队列1的自启动标志位为有效状态,则清除数据处理通知(即包含虚拟网卡1的队列1信息的通知),清除虚拟网卡1的队列1的自启动标志位。
可以理解,当虚拟网卡1的队列1的通知使能标志位有效后,调度模块生成新的需要虚拟网卡1的队列1处理的数据时,调度模块发送数据处理通知(即包含虚拟网卡1的队列1信息的通知)。
可以理解,在第一次判断预设数量的描述符包含无效描述符,设置虚拟网卡1的队列1的通知使能标志位有效后,又获取预设值数量的描述符判断是否包含预设值,若仍然包含无效描述符,则清除数据处理通知(即包含虚拟网卡1的队列1信息的通知),清除虚拟网卡1的队列1的自启动标志位。可以理解,在设置虚拟网卡1的队列1的通知使能标志位有效的情况下,二次判断是否包含有效描述符有助于消除异步情形,即当描述符引擎获取了无效的描述符后,还未设置虚拟网卡1的队列1的通知使能标志位有效的情况下,又有新的有效描述符生成的情形。
第二方面,本申请实施例公开了数据处理装置,包括:生成模块,生成待处理数据和待处理数据对应的描述符,其中,描述符用于描述待处理数据的信息;发送模块,发送数据处理通知,其中,数据处理通知用于通知处理待处理数据;接收保存模块,接收并保存数据处理通知,基于数据处理通知,获取预设数量的描述符,其中,根据获取的描述符,获取并处理待处理数据;判断模块,在判断预设数量的描述符均为有效描述符的情况下,设置通知使能标志位无效,继续获取预设数量的描述符,在判断预设数量的描述符包含无效描述符的情况下,执行模块设置通知使能标志位有效。待处理数据的信息包括待处理数据的地址信息、待处理数据的长度信息、待处理数据的读写信息。通知使能标志位用于发送数据处理通知,其中,在通知使能标志位有效且生成待处理数据的情况下,调度模块发送数据处理通知。数据处理通知保存在执行模块,且在数据处理通知保存在执行模块的情况下,设置自启动标志位有效。数据处理通知包含标识信息,基于标识信息,获取预设数量的描述符,其中,标识信息用于唯一标识执行模块。在判断预设数量的描述符均为有效描述符的情况下,保存最后一个有效描述符的索引,索引用于指示最后一个有效描述符的位置信息。在判断预设值数量的描述符包含无效描述符的情况下,并且在通知使能标志位有效的情况下,基于数据处理通知,再次获取预设值数量的描述符,判断预设值数量的描述符包含无效描述符的情况下,则清除数据处理通知和自启动标志位。
第三方面,本申请实施例公开了一种机器可读介质,机器可读介质上存储有指令,该指令在机器上执行时使机器执行上述第一方面的数据处理方法。
第四方面,本申请实施例公开了一种电子设备,包括:存储器,存储指令;处理器,处理器和存储器耦合,当存储器存储的程序指令被处理器执行时,电子设备执行上述第一方面的数据处理方法。
附图说明
图1根据本申请的一些实施例,示出了传统执行模块的数据处理的结构示意框图;
图2根据本申请的一些实施例,示出了Virtio协议中的描述符描述的待处理数据的信息示意图。
图3根据本申请的一些实施例,示出了执行模块的数据处理的结构示意框图;
图4根据本申请的一些实施例,示出了基于SR-IOV技术设备通过PCIe总线进行设备交互的结构示意图;
图5根据本申请的一些实施例,示出了虚拟网卡队列数据处理的方法流程图;
图6根据本申请的一些实施例,示出了一种数据处理装置;
图7根据本申请的一些实施例,示出了一种电子设备的框图;
图8根据本申请的一些实施例,示出了一种片上***(SoC)的框图。
具体实施方式
本申请的说明性实施例包括但不限于数据处理方法、装置、可读介质和电子设备。
为了解决现有技术中的问题,本申请提供了一种数据处理方法,通过描述符描述待处理数据,发一次通知给执行模块,后续有新数据生成时,不需要再给执行模块发送通知,执行模块只需要根据描述符解析模块获取并解析的描述符是否为有效描述符判断是否有数据需要处理,本方法有效的解决了调度模块不停地通过总线发通知给执行模块问题,提高调度模块的性能。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的关键名词进行解释:
多队列网卡:是指一个网卡上有多个队列,服务器的CPU会给每个队列分配一个网卡队列信息。多队列主要应用于服务质量(Quality of Service,QoS)流量类别,把发送队列分配给不同的流量类别,可以让网卡在发送侧做调度;把收包队列分配给不同的流量类别,可以做到基于流的限速。多队列网卡是当前高速率网卡的主流,在单队列无法充分利用网卡带宽的情形下,多队列网卡可以充分利用网卡带宽,满足高性能大流量的场景。
描述符:用于描述待处理的待处理数据在内存中的信息,描述符保存在一片连续的内存中。描述符的大小为16字节(byte)即128位(bit)。
图2根据本申请的一些实施例,示出了虚拟化输入/输出(virtual I/O,Virtio)协议中的描述符描述的待处理数据的信息示意图。如图2所示,Address表示待处理数据在内存中的存储地址。Length表示待处理数据的长度。Id即描述符的id,用于识别描述符。Nextflag用于描述与该描述符在逻辑上相邻的下一个描述符的索引号。Write flag用于表示该描述符是用于发送数据还是接收数据。待处理数据待处理数据待处理数据待处理数据Indirect flag用于指向更大的待处理待处理数据。Reserved flag是保留位,用于说明未使用的bit位。Avail flag与Used flag结合用于判断该描述符是否为有效描述符。
单根输入输出虚拟化(single root I/O virtualization,SR-IOV)技术是IO硬件虚拟化的基础技术,SR-IOV标准允许在IO之间高效共享PCIe设备,由此,基于SR-IOV技术,通过高速串行计算机扩展标准(Peripheral Component Interconnect express,PCIe)总线可以将某个包含物理功能(Physical Function,PF)的物理电子设备虚拟化为具有数百个关联的包含虚拟功能(Virtual Function,VF)的虚拟电子设备。如图3所示,为根据本申请实施例,示出了执行模块处理的数据处理的结构示意图。
如图3所示,该交互示意图包括调度模块100、执行模块200,调度模块100与执行模块200通过总线300进行连接。其中,调度模块100包括处理器、控制器、存储器等。在本申请的实施例中,总线300可以是PCIe总线300。在本申请的一些实施例中,执行模块200可以通过SR-IOV技术虚拟化出多个虚拟执行模块。其中,多个虚拟执行模块包括1个包含物理功能的物理执行模块200、包含n个虚拟功能的虚拟执行模块。每个虚拟功能或者物理功能可以使用多个队列,例如m个队列。其中,任意两个虚拟功能之间是相互隔离的。执行模块200在调度模块100呈现n个虚拟功能,每个虚拟功能可以负责管理调度模块100中的一块存储空间,此时,该n个虚拟功能对虚拟执行模块而言则相当于n个虚拟网卡。
例如,执行模块200通过SRIOV技术向调度模块100呈现出多个包含虚拟功能的执行模块,例如执行模块2001、执行模块2002、执行模块2003……执行模块n。其中,执行模块2001、执行模块2002、执行模块2003……执行模块n在调度模块100端呈现的功能与执行模块200在调度模块100端呈现的功能一样。
在本申请的一些实施例中,执行模块200可以支持与包含基于Virtio协议开发的前端驱动进行通信。其中,前端驱动运行在调度模块100上。可以理解,前端驱动生成需要执行模块处理的数据,即1个前端驱动生成1个执行模块需要处理的数据。如图3所示,执行模块200通过SR-IOV技术虚拟化出n个虚拟执行模块,则包含n+1个前端驱动运行在调度模块100上。
例如,在本申请的实施例中,如图3所示,当一次生成1个待处理数据即待处理数据1需要执行模块2001的队列1处理时,调度模块100发送通知1给执行模块2001,其中,通知1不需要携带待处理数据的个数,当又有待处理数据2、待处理数据3需要执行模块2001的队列1处理时,调度模块100不再发送通知给执行模块2001,待执行模块2001的队列1处理完待处理数据1后,按生成待处理数据的先后顺序,主动处理新生成的需要执行模块2001的队列1处理的待处理数据,例如,待处理数据2、待处理数据3。当一次生成2个待处理数据即待处理数据4,待处理数据5需要执行模块2002的队列1处理时,调度模块100发送通知2给执行模块2002,同理,后续生成新的待处理数据需要执行模块2002的队列1处理时,调度模块100不需要再向执行模块2002发送通知,待执行模块2002的队列1处理完待处理数据4、待处理数据5后,按生成待处理数据的先后顺序,主动处理新生成的需要执行模块2002的队列1处理的待处理数据。可以理解,当有新的待处理数据生成需要执行模块的队列处理时,调度模块100发送一次通知给执行模块,执行模块主动处理新生成的待处理数据。可以理解,调度模块100发送一次通知给执行模块,执行模块主动处理不断生成的待处理数据。因此,可以有效解决调度模块100生成一次数据发一次通知导致带宽资源被通知大量占用的问题,避免了数据传输带宽的浪费,同时还可以减少调度模块100的处理器不停读写执行模块带来的处理器额外的时钟周期消耗,在某些场景下还可以减少进程上下文切换,提高调度模块100的性能。其中,这里处理待处理数据的执行模块的队列可以是执行模块2001的队列1也可以是执行模块的队列m,还可以是执行模块n的队列m,根据实际得工作需求,在此不做限制。
在本申请的一些实施例中,包含执行模块200和调度模块100的电子设备可以是个人计算机(personal computer,PC)、笔记本电脑或者服务器等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,还可以是提供云数据库、云存储和CDN等基础云计算服务的服务器,本申请实施例对此不做限制。
在本申请的一些实施例中,执行模块200在具体实现时可以为片上***(systemon chip,SoC),该SoC可以是一张单独的PCIe卡,该PCIe卡可以部署在调度模块100上,也可以直接和调度模块100主板集成在一起。具体地,执行模块200可以是网卡、显卡、存储设备或声卡等。本申请实施例对此不做限制。
如图4所示,执行模块200包括描述符处理模块203、索引保存模块201、标志位保存模块202、自启动模块204、通知模块205、数据搬运模块206。
描述符处理模块203:用于处理保存在自启动模块204和通知模块205中的通知,解析获取的描述符,判断获取的描述符是否为有效描述符。
通知模块205:用于保存调度模块100通过PCIe总线300发送的通知。
自启动模块204:用于保存通知。若描述符处理模块203解析获取到预设值数量的描述符均为有效描述符,将从通知模块205或者自启动模块204获取的通知保存或重新保存在自启动模块204中。
索引保存模块201:当描述符处理模块203一次获取到预设值数量的描述符均为有效描述符,索引保存模块201用于保存最后一个有效描述符的索引。
标志位保存模块202:用于保存自启动标志位。
数据搬运模块206:用于保存有效描述符并且根据描述符的内容获取待处理数据。
可以理解,图4中执行模块200包括的各个模块可以是硬件模块,也可以是软件模块,本申请不做限制。
为便于说明,下文中调度模块100包括处理器,控制器,存储器等,执行模块200以网卡为例详细说明本申请的实施例的内容。下面根据本申请的一些实施例,结合图4具体说明本申请的技术方案,图5示出了数据处理的方法流程图,如图5所示,调度模块100与虚拟网卡2001的队列1进行交互,数据处理方法包括:
501:调度模块100与虚拟网卡2001的队列1进行数据交互。
在本申请的实施例中,调度模块100通过PCIe总线300与物理网卡200建立物理连接并且调度模块100与虚拟网卡的队列进行数据交互。具体地,根据用户需求,调度模块100与虚拟网卡进行数据交互,其中,物理网卡200通过SRIOV技术向调度模块100呈现出多个包含虚拟功能的虚拟网卡,例如虚拟网卡2001、虚拟网卡2002、虚拟网卡2003……虚拟网卡n。其中,虚拟网卡在调度模块100端呈现的功能与物理网卡200在调度模块100端呈现的功能一样。例如,虚拟网卡也包含多个队列,虚拟网卡的队列也可以与调度模块100进行交互并处理数据。下面以调度模块100生成需要虚拟网卡2001的队列1处理的数据为例来说明调度模块100与虚拟网卡2001的队列1交互时的数据处理方法。
502:调度模块100的前端驱动生成待处理数据,添加描述符。
在本申请的实施例中,调度模块100通过PCIe总线与物理网卡200的建立物理连接并且调度模块100与虚拟网卡2001的队列1进行数据交互。运行在调度模块100上的前端驱动生成需要虚拟网卡2001的队列1处理的数据即待处理数据,同时调度模块100的前端驱动添加描述符。其中,添加的描述符用于描述虚拟网卡2001的队列1的待处理待处理数据的信息。具体地,运行在调度模块100上的前端驱动生成需要虚拟网卡2001的队列1处理的数据即待处理数据,待处理数据由一个或多个待处理数据块组成。其中,待处理数据包含正在的数据、已经生成的数据、即将生成的待处理数据。因此,调度模块100暂时将该待处理数据存储在调度模块100连续的内存中,待通知虚拟网卡2001处理该待处理数据。其中,待处理数据的在内存中的信息可以由多个描述符描述,待处理数据描述信息包括在待处理数据在调度模块100的地址,待处理数据的长度,待处理数据是需要接收的数据还是需要发送的数据等,描述符所描述的待处理数据描述信息的具体内容详见上文描述符名词解释。可以理解,调度模块100的前端驱动也可以生成物理网卡200多队列处理的数据并添加描述符,调度模块100的前端驱动还可以生成虚拟网卡2002多队列或虚拟网卡n多队列处理的数据并添加描述符,其中,多队列可以是队列1,也可以是队列2,还可以是队列m。具体方法与调度模块100的前端驱动生成虚拟网卡2001的队列1的待处理数据并添加描述符的方法一致。
可以理解,添加描述符可以使得物理网卡多队列或虚拟网卡多队列能够按生成的待处理数据的先后顺序来处理数据。针对某一网卡的某一队列,例如虚拟网卡2001的队列1,可以按照先生成的数据先处理原则处理数据。有效避免由于调度模块100在某段时间内连续生成待处理数据,虚拟网卡2001的队列1未及时处理导致待处理数据堆积,出现后生成的待处理数据虚拟网卡2001的队列1先处理,最先生成的待处理数据一直迟迟没有处理的情形,导致数据处理延时,影响用户体验等问题。
503:调度模块100向虚拟网卡2001发送包含虚拟网卡2001的队列1信息的通知。
在本申请的实施例中,调度模块100的前端驱动生成需要虚拟网卡2001的队列1处理的数据,调度模块100暂时将该数据保存在调度模块100连续的内存中,调度模块100需要通知虚拟网卡2001的队列1处理该待处理数据。调度模块100通过PCIe总线300向物理网卡100发送虚拟网卡2001的队列1信息的通知。具体地,包含虚拟网卡2001的队列1信息的通知可以是包含虚拟网卡2001的队列1的标识信息的通知,其中,该标识信息可以是虚拟网卡2001的ID和队列1的ID组合。
在本申请的实施例中,例如,物理网卡200通过SRIOV技术虚拟出两个虚拟网卡,分别是虚拟网卡2001,虚拟网卡2002,其中每个网卡有2个队列,该标识信息可以是网卡的ID和队列1的ID组合。例如,物理网卡200的标识信息可以是1,虚拟网卡2001的标识信息可以是2,虚拟网卡2002的标识信息可以是3。队列1的标识信息可以1,队列2的标识信息可以2。则物理网卡200的队列1的标识信息为11,物理网卡200的队列2的标识信息为12,虚拟网卡2001的队列1的标识信息为21,虚拟网卡2001的队列2的标识信息为22,虚拟网卡2002的队列1的标识信息为31,虚拟网卡2002的队列2的标识信息为32。可以理解,根据包含虚拟网卡2001的队列1信息的通知,物理网卡200可以确定待处理数据由虚拟网卡2001的队列1处理。有利于物理网卡200识别通知并处理该通知。
可以理解,调度模块100也可以向虚拟网卡2002发送包含虚拟网卡2002多队列信息的通知,调度模块100也可以向虚拟网卡n发送包含虚拟网卡n多队列信息的通知,其中,多队列可以是队列1,也可以是队列2,还可以是队列m。具体方法与调度模块100向物理网卡200发送包含虚拟网卡2001的队列1信息的通知的方法相同,在此不做赘述。
504:物理网卡200将包含虚拟网卡2001的队列1信息的通知保存到通知模块205。
在本申请的实施例中,虚拟网卡2001接收调度模块100通过PCIe总线300发送的包含虚拟网卡2001的队列1信息的通知,并且将包含虚拟网卡2001的队列1信息的通知保存在物理网卡200的通知模块205排队,虚拟网卡2001的队列1切换至自启动模式。可以理解,虚拟网卡2001根据包含虚拟网卡2001的队列1的通知确认虚拟网卡2001的队列1有数据需要处理。虚拟网卡2001的队列1切换至自启动模式后,新生成的需要虚拟网卡2001的队列1处理的数据,调度模块100不需要再发送通知给虚拟设备2001,虚拟网卡2001的队列1可以主动处理待处理数据。
进一步地,物理网卡200将包含虚拟网卡2001的队列1信息的通知保存在通知模块205,关闭该通知,同时,设置虚拟网卡2001的队列1的自启动标志位,例如,将执行模块的自启动标志位设置为有效,即可以将自启动标志位设置为1并将该自启动标志位保存在标志位保存模块202中,该自启动标志位用于表示该通知已经保存在通知模块205并且该通知属于待处理状态。可以理解,通知模块205不仅用于保存包含虚拟网卡2001的队列1信息的通知,还可以用于保存包含其他网卡多队列信息的通知。例如,通知模块205可以保存包含物理网卡200的多队列信息的通知,也可以保存包含虚拟网卡2002的多队列的信息的通知,还可以保存包含虚拟网卡n的多队列的信息的通知。其中,多队列可以是队列1,也可以是队列2,还可以是队列m,具体思想与虚拟网卡2001的队列1相同,在此不作赘述。根据先保存先处理原则,描述符处理模块203根据保存通知的先后顺序,依次处理数据处理通知。可以理解,包含网卡多队列信息的通知暂时保存在通知模块205有利于物理网卡200在通知事项较多或者硬件配置有限等情况下,物理网卡200的描述符处理模块203仍然能够依次有序的处理通知。在本申请的其他实施例中,物理网卡200还可以添加多个描述符处理模块203,使得在通知事项较多时,并行处理通知,提高数据交互性能。
具体地,虚拟网卡2001接收调度模块100通过PCIe总线300发送的包含虚拟网卡2001的队列1信息的通知,虚拟网卡2001的队列1切换至自启动模式。当虚拟网卡2001接收数据处理通知时,虚拟网卡2001的队列1切换至自启动模式,描述符处理模块203依照顺序处理通知事项,虚拟网卡2001的队列1主动处理数据。其中,具体通知事项包括:通知模块205保存的数据处理通知、自启动模块204保存的数据处理通知。可以理解,虚拟网卡2001的队列1切换至自启动模式后,该描述符处理模块203能够分时高效的处理通知模块205和自启动模块204中的通知。
505:物理网卡200的描述符处理模块203获取并处理包含虚拟网卡2001的队列1信息的通知。
在本申请的实施例中,描述符处理模块203获取保存在通知模块205中的通知。例如描述符处理模块203获取通知模块205中包含虚拟网卡2001的队列1信息的通知,同时将保存在标志位保存模块202中的虚拟网卡2001的队列1的自启动标志位清除,例如,将该自启动标志位设置为0。进一步地,描述符处理模块203处理该通知即执行步骤506。具体地,例如,描述符处理模块203获取保存在通知模块205中的包含虚拟网卡2001的队列1信息的通知,根据虚拟网卡2001的队列1的标识信息,描述符处理模块203获取虚拟网卡2001的队列1的上下文信息,执行步骤506。其中,虚拟网卡2001的队列1的上下文信息包括虚拟网卡2001的队列1在内存中的基地址,虚拟网卡2001的队列1的大小,预设值数量的描述符的大小等,可以理解,虚拟网卡2001的队列1进入自启动模式后,按照通知模块205保存的数据处理通知的先后顺序,描述符处理模块203获取并处理包含网卡多队列信息的通知。可以理解,描述符处理模块203可以获取并处理包含物理网卡的多队列信息的通知。描述符处理模块203也可以获取并处理包含虚拟网卡2002的多队列信息的通知。描述符处理模块203还可以获取并处理包含虚拟网卡n的多队列信息的通知,其中,多队列可以是队列1,也可以是队列2,还可以是队列m。具体过程与获取虚拟网卡2001的队列1的方法相同,在此不作赘述。
506:物理网卡200的描述符处理模块203发送读取描述符请求,一次可读取预设值数量的描述符。
在本申请的实施例中,根据虚拟网卡2001的队列1的上下文信息,物理网卡200的描述符处理模块203通过PCIe总线300向调度模块100发起读描述符请求,并进一步从调度模块100内存中一次读取预设值数量的描述符。具体地,基于virtio 1.1协议,描述符存储在调度模块100的内存中,其中,存储描述符的内存由描述符表表示。因此,描述符处理模块203通过PCIe总线300对连续的内存读取描述虚拟网卡2001的队列1的待处理数据的描述符,该描述符处理模块203一次从调度模块100内存中读取预设值数量的用于描述虚拟网卡2001的队列1的待处理数据信息的描述符。可以理解,物理网卡200的描述符处理模块203读取的描述符可以是预设值数量的用于描述虚拟网卡2002的多队列的待处理数据信息的描述符,物理网卡200的描述符处理模块203读取的描述符还可以是预设值数量的用于描述虚拟网卡n的多队列的待处理数据信息的描述符,在此不作赘述。
507:物理网卡200的描述符处理模块203解析获取的预设值数量的描述符是否均为有效描述符。
在本申请的实施例中,物理网卡200的描述符处理模块203根据读取的预设值数量的描述虚拟网卡2001的队列1的待处理数据的描述符,该描述符处理模块203解析每个描述符是否为有效描述符。如果解析的预设值数量的描述符均为有效描述符,则执行步骤508。例如,以预设值数量的描述符为10个描述符为例,描述符处理模块203接收描述符处理模块203读取的10个描述虚拟网卡2001的队列1的待处理数据的描述符,描述符处理模块203解析出这10个均是有效描述符,则执行步骤508。如果解析出第5个描述符为无效描述符,则剩余的5个可以确定也是无效描述符。可以理解,无论描述符处理模块203解析到无效描述符后,该描述符处理模块203会继续处理通知模块205或自启动模块204中关于其他网卡多队列的数据处理通知。
在本申请的实施例中,例如,物理网卡200的描述符处理模块203解析获取的预设值数量的用于描述虚拟网卡2001的队列1的待处理数据信息的描述符是否均为有效描述符,若该预设值数量的描述符包含无效描述符,则物理网卡200打开包含虚拟网卡2001的队列1信息的通知,同时将标志位保存模块202中的虚拟网卡2001的队列1的自启动标志位设置为1,根据自启动工作机制,轮到描述符处理模块203处理使能的包含虚拟网卡2001的队列1的描述符的通知,在此执行步骤506和步骤507的内容,若描述符处理模块203获取的预设值数量的描述符没有有效描述符,则清除保存在标志位保存模块202中的虚拟网卡2001的队列1的自启动标志位,即表示描述符处理模块203不再主动处理包含虚拟网卡2001的队列1的信息的通知,待调度模块100发送包含虚拟网卡2001的队列1的描述符的通知时描述符处理模块203再启动处理包含虚拟网卡2001的队列1的信息的通知。可以理解,物理网卡200的描述符处理模块203还可以解析获取的预设值数量的用于描述虚拟网卡2002的多队列的待处理数据信息的描述符是否均为有效描述符,物理网卡200的描述符处理模块203还可以解析获取的预设值数量的用于描述虚拟网卡n的多队列的待处理数据信息的描述符是否均为有效描述符,若预设值数量的描述符包含无效描述符则处理方法与物理网卡200的描述符处理模块203处理描述虚拟网卡2001的队列1的待处理数据信息的描述符的方法一致,在此不作赘述。
可以理解,这里的使能的包含虚拟网卡2001的队列1的描述符的通知与步骤504中保存在通知模块205中的包含虚拟网卡2001的队列1信息的通知内容一致,即包含虚拟网卡2001的队列1的标识信息的通知。其中,该标识信息可以是虚拟网卡2001的ID和队列1的ID组合。而且本步骤中将虚拟网卡2001的队列1的自启动标志位设置为1用于表示该通知已经保存在自启动模块204并且该通知属于待处理状态。
508:物理网卡200将有效描述符保存在数据搬运模块206,并将包含虚拟网卡2001的队列1信息的通知保存到自启动模块204,数据搬运模块206获取并处理描述符描述的待处理数据。
在本申请的实施例中,例如,物理网卡200的描述符处理模块203获取并解析预设值数量的用于描述虚拟网卡2001的队列1的待处理数据信息的描述符是否均为有效描述符,若该预设值数量的描述符均为有效描述符,则物理网卡200将有效的描述符保存在数据搬运模块206。
在本申请的实施例中,物理网卡200还将预设值数量的用于描述虚拟网卡2001的队列1的待处理数据信息的描述符的最后一个有效描述符的索引保存到索引保存模块201中,可以理解,将预设值数量的描述符的最后一个有效描述符的索引保存到索引保存模块201可以用于查看当前描述符处理模块203处理描述符表中的描述符的位置。
在本申请的实施例中,物理网卡200将包含虚拟网卡2001的队列1信息的通知保存到自启动模块204同时将保存在标志位保存模块202的虚拟网卡2001的队列1的自启动标志位设置为1。可以理解,保存在自启动模块204中的包含虚拟网卡2001的队列1信息的通知与步骤504中保存在通知模块205中的包含虚拟网卡2001的队列1信息的通知内容一致,即包含虚拟网卡2001的队列1的标识信息的通知。其中,该标识信息可以是虚拟网卡2001的ID和队列1的ID组合。可以理解,物理网卡200还可以将包含虚拟网卡2002的多队列信息的通知保存到自启动模块204同时将保存在标志位保存模块202的虚拟网卡2002的多队列的自启动标志位设置为1,物理网卡200将包含虚拟网卡n的多队列信息的通知保存到自启动模块204同时将保存在标志位保存模块202的虚拟网卡n的多队列的自启动标志位设置为1,在此不做赘述。
进一步地,在本申请的实施例中,根据物理网卡200的主动获取待处理数据的机制,轮到描述符处理模块203获取并处理自启动模块204中的包含虚拟网卡2001的队列1信息的通知时,同步骤505中描述符处理模块203获取并处理通知模块205的包含虚拟网卡2001的队列1信息的通知的方法一致,同时将标志位保存模块202中的虚拟网卡2001的队列1的自启动标志位设置为0。进一步地,描述符处理模块203从调度模块100的内存中获取包含虚拟网卡2001的队列1的待处理数据的描述符,执行步骤507,步骤508的内容。
在本申请的实施例中,数据搬运模块206根据用于描述虚拟网卡2001的队列1的待处理数据信息的描述符。处理待处理数据。可以理解,描述符用于描述待处理数据在调度模块100内存中的地址、长度、数据读写状态等信息,描述符的write flag用于描述待处理数据的传输状态,当用于描述虚拟网卡2001的队列1的待处理数据信息的描述符的writeflag为1时,则数据搬运模块206处理虚拟网卡2001的队列1的接收待处理数据,当描述符的write flag为0时,则数据搬运模块206处理虚拟网卡2001的队列1的发送待处理数据。数据搬运模块206还可以处理虚拟网卡2002的多队列或虚拟模块n的多队列的数据,具体方法与步骤508相同,在此不作赘述。
图6根据本申请的一些实施例,示出了一种数据处理装置600的结构框图。如图6所示,具体地,包括:
生成模块(602),生成待处理数据和待处理数据对应的描述符,其中,描述符用于描述待处理数据的信息。
发送模块(604),发送数据处理通知,其中,数据处理通知用于通知处理待处理数据;
接收保存模块(606),接收并保存数据处理通知,基于数据处理通知,获取预设数量的描述符,其中,根据获取的描述符,获取并处理待处理数据;
判断模块(608),在判断预设数量的描述符均为有效描述符的情况下,并设置通知使能标志位无效,继续获取预设数量的描述符,在判断预设数量的描述符包含无效描述符的情况下,执行模块设置通知使能标志位有效。
在本申请的实施例中,数据处理装置600还包括:待处理数据的信息包括待处理数据的地址信息、待处理数据的长度信息、待处理数据的读写信息。通知使能标志位用于发送数据处理通知,其中,在通知使能标志位有效且生成待处理数据的情况下,调度模块发送数据处理通知。数据处理通知保存在执行模块,且在数据处理通知保存在执行模块的情况下,设置自启动标志位有效。数据处理通知包含标识信息,基于标识信息,获取预设数量的描述符,其中,标识信息用于唯一标识执行模块。在判断预设数量的描述符均为有效描述符的情况下,保存最后一个有效描述符的索引,索引用于指示最后一个有效描述符的位置信息。在判断预设值数量的描述符包含无效描述符的情况下,并且在通知使能标志位有效的情况下,基于数据处理通知,再次获取预设值数量的描述符,判断预设值数量的描述符包含无效描述符的情况下,则清除数据处理通知和自启动标志位。
可以理解,图6所示的数据处理装置600与本申请提供的数据处理方法相对应,以上关于本申请提供的数据处理方法的具体描述中的技术细节依然适用于图6所示的数据处理装置600,具体描述请参见上文,在此不再赘述。
本申请还提供了一种机器可读介质,机器可读介质上存储有指令,该指令在机器上执行时使机器执行上述数据处理方法。
图7所示为根据本申请的一些实施例的电子设备700的框图。图7示意性地示出了根据多个实施例的示例电子设备700。其中,电子设备700可以包括执行模块200,调度模块100,总线300。
在一些实施例中,电子设备700可以包括一个或多个处理器704,与处理器704中的至少一个连接的***控制逻辑708,与***控制逻辑708连接的***内存712,与***控制逻辑708连接的非易失性存储器(NVM)716,以及与***控制逻辑708连接的网络接口720。
在一些实施例中,处理器704可以包括一个或多个单核或多核处理器。在一些实施例中,处理器704可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。
在一些实施例中,***控制逻辑708可以包括任意合适的接口控制器,以向处理器704中的至少一个和/或与***控制逻辑708通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,***控制逻辑708可以包括一个或多个存储器控制器,以提供连接到***内存712的接口。***内存712可以用于加载以及存储数据和/或指令。在一些实施例中电子设备700的内存712可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM/存储器716可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM/存储器716可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器),CD(Compact Disc,光盘)驱动器,DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM/存储器716可以包括安装电子设备700的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口720通过网络访问NVM/存储716。
特别地,***内存712和NVM/存储器716可以分别包括:指令724的暂时副本和永久副本。指令724可以包括:由处理器704中的至少一个执行时导致电子设备700实施如图5所示的方法的指令。在一些实施例中,指令724、硬件、固件和/或其软件组件可另外地/替代地置于***控制逻辑708,网络接口720和/或处理器704中。
网络接口720可以包括收发器,用于为电子设备700提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口720可以集成于电子设备700的其他组件。例如,网络接口720可以集成于处理器704,***内存712,NVM/存储器716,和具有指令的固件设备(未示出)中的至少一种,当处理器704中的至少一个执行所述指令时,电子设备700实现如图5所示的数据处理方法。
网络接口720可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口720可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器704中的至少一个可以与用于***控制逻辑708的一个或多个控制器的逻辑封装在一起,以形成***封装(SiP)。在一个实施例中,处理器704中的至少一个可以与用于***控制逻辑708的一个或多个控制器的逻辑集成在同一芯片上,以形成片上***(SoC)。
电子设备700可以进一步包括:输入/输出(I/O)设备732。I/O设备732可以包括用户界面,使得用户能够与电子设备700进行交互;***组件接口的设计使得***组件也能够与电子设备700交互。在一些实施例中,电子设备700还包括传感器,用于确定与电子设备700相关的环境条件和位置信息的至少一种。
根据本申请的实施例,图8示出了一种SoC(System on Chip,片上***)800的框图。其中,执行模块200可以是片上***800,在图8中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图8中,SoC 800包括:互连单元850,其被耦合至应用处理器810;***代理单元870;总线控制器单元880;集成存储器控制器单元840;一组或一个或多个协处理器820,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元830;直接存储器存取(DMA)单元860。在一个实施例中,协处理器820包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程***上执行的计算机程序或程序代码,该可编程***包括至少一个处理器、存储***(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理***包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何***。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理***通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息,例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (16)
1.一种数据处理方法,用于数据处理***,所述数据处理***包括:调度模块和执行模块,其特征在于,所述方法包括:
所述调度模块生成待处理数据和所述待处理数据对应的描述符,其中,所述描述符用于描述所述待处理数据的信息;
所述调度模块发送数据处理通知,其中,所述数据处理通知用于通知处理所述待处理数据;
所述执行模块接收并保存数据处理通知,基于所述数据处理通知,获取预设数量的所述描述符,其中,根据获取的所述描述符,获取并处理所述待处理数据;
所述执行模块在判断预设数量的所述描述符均为有效描述符的情况下,设置通知使能标志位无效,继续获取预设数量的所述描述符;
所述执行模块在判断预设数量的所述描述符包含无效描述符的情况下,所述执行模块设置所述通知使能标志位有效。
2.根据权利要求1所述的数据处理方法,其特征在于,所述待处理数据的信息包括所述待处理数据的地址信息、所述待处理数据的长度信息、所述待处理数据的读写信息。
3.根据权利要求1所述的数据处理方法,其特征在于,所述通知使能标志位用于发送所述数据处理通知,其中,
在所述通知使能标志位有效且生成所述待处理数据的情况下,所述调度模块发送所述数据处理通知。
4.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理通知保存在所述执行模块,
且
在所述数据处理通知保存在所述执行模块的情况下,设置自启动标志位有效。
5.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理通知包含标识信息,基于所述标识信息,获取预设数量的所述描述符,其中,所述标识信息用于唯一标识所述执行模块。
6.根据权利要求1所述的数据处理方法,其特征在于,在判断预设数量的所述描述符均为所述有效描述符的情况下,
保存最后一个所述有效描述符的索引,所述索引用于指示最后一个所述有效描述符的位置信息。
7.根据权利要求4所述的数据处理方法,其特征在于,还包括:
在判断预设值数量的描述符包含所述无效描述符的情况下,并且在所述通知使能标志位有效的情况下,
基于所述数据处理通知,再次获取预设值数量的所述描述符,判断预设值数量的所述描述符包含所述无效描述符的情况下,则清除所述数据处理通知和所述自启动标志位。
8.一种数据处理装置,其特征在于,包括:
生成模块,生成待处理数据和所述待处理数据对应的描述符,其中,所述描述符用于描述所述待处理数据的信息;
发送模块,发送数据处理通知,其中,所述数据处理通知用于通知处理所述待处理数据;
接收保存模块,接收并保存数据处理通知,基于所述数据处理通知,获取预设数量的所述描述符,其中,根据获取的所述描述符,获取并处理所述待处理数据;
判断模块,在判断预设数量的所述描述符均为有效描述符的情况下,设置通知使能标志位无效,继续获取预设数量的所述描述符,在判断预设数量的描述符包含无效描述符的情况下,设置所述通知使能标志位有效。
9.根据权利要求8所述的数据处理装置,其特征在于,所述待处理数据的信息包括所述待处理数据的地址信息、所述待处理数据的长度信息、所述待处理数据的读写信息。
10.根据权利要求8所述的数据处理装置,其特征在于,所述通知使能标志位用于发送所述数据处理通知,其中,
在所述通知使能标志位有效且生成所述待处理数据的情况下,发送所述数据处理通知。
11.根据权利要求8所述的数据处理装置,其特征在于,所述数据处理通知保存在执行模块,
且
在所述数据处理通知保存在执行模块的情况下,设置自启动标志位有效。
12.根据权利要求8所述的数据处理装置,其特征在于,所述数据处理通知包含标识信息,基于所述标识信息,获取预设数量的所述描述符,其中,所述标识信息用于唯一标识执行模块。
13.根据权利要求8所述的数据处理装置,其特征在于,在判断预设数量的所述描述符均为所述有效描述符的情况下,
保存最后一个所述有效描述符的索引,所述索引用于指示最后一个所述有效描述符的位置信息。
14.根据权利要求11所述的数据处理装置,其特征在于,还包括:
在判断预设值数量的所述描述符包含所述无效描述符的情况下,并且在所述通知使能标志位有效的情况下,
基于所述数据处理通知,再次获取预设值数量的所述描述符,判断预设值数量的所述描述符包含所述无效描述符的情况下,则清除所述数据处理通知和所述自启动标志位。
15.一种机器可读介质,其特征在于,所述机器可读介质上存储有指令,该指令在机器上执行时使机器执行权利要求1至7中任一项所述的数据处理方法。
16.一种电子设备,其特征在于,包括:
存储器,存储指令;
处理器,所述处理器和存储器耦合,当所述存储器存储的程序指令被所述处理器执行时,所述电子设备执行权利要求1至7中任一项所述的电子设备的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595902.6A CN112650558B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595902.6A CN112650558B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、可读介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112650558A true CN112650558A (zh) | 2021-04-13 |
CN112650558B CN112650558B (zh) | 2022-07-05 |
Family
ID=75364473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011595902.6A Active CN112650558B (zh) | 2020-12-29 | 2020-12-29 | 数据处理方法、装置、可读介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112650558B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225577A (zh) * | 2022-09-20 | 2022-10-21 | 深圳市明源云科技有限公司 | 数据处理控制方法、装置、电子设备及可读存储介质 |
CN116578234A (zh) * | 2023-04-27 | 2023-08-11 | 珠海妙存科技有限公司 | 闪存访问***及方法 |
CN117009265A (zh) * | 2023-09-28 | 2023-11-07 | 北京燧原智能科技有限公司 | 一种应用于片上***的数据处理装置 |
CN117411842A (zh) * | 2023-12-13 | 2024-01-16 | 苏州元脑智能科技有限公司 | 事件抑制方法、装置、设备、异构平台及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机***中节点的dma设备及通信方法 |
CN101015187B (zh) * | 2004-07-14 | 2011-05-11 | 国际商业机器公司 | 在网络协议处理的卸载中支持连接建立的设备和方法 |
US9141651B1 (en) * | 2012-07-31 | 2015-09-22 | Quantcast Corporation | Adaptive column set composition |
CN109117288A (zh) * | 2018-08-15 | 2019-01-01 | 无锡江南计算技术研究所 | 一种低延迟旁路的消息优化方法 |
CN110049070A (zh) * | 2018-01-15 | 2019-07-23 | 华为技术有限公司 | 事件通知方法及相关设备 |
CN110825485A (zh) * | 2018-08-07 | 2020-02-21 | 华为技术有限公司 | 数据处理的方法、设备和服务器 |
CN111190842A (zh) * | 2019-12-30 | 2020-05-22 | Oppo广东移动通信有限公司 | 直接存储器访问、处理器、电子设备和数据搬移方法 |
CN111381946A (zh) * | 2018-12-29 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 任务处理方法、装置及相关产品 |
-
2020
- 2020-12-29 CN CN202011595902.6A patent/CN112650558B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101015187B (zh) * | 2004-07-14 | 2011-05-11 | 国际商业机器公司 | 在网络协议处理的卸载中支持连接建立的设备和方法 |
CN101539902A (zh) * | 2009-05-05 | 2009-09-23 | 中国科学院计算技术研究所 | 多计算机***中节点的dma设备及通信方法 |
US9141651B1 (en) * | 2012-07-31 | 2015-09-22 | Quantcast Corporation | Adaptive column set composition |
CN110049070A (zh) * | 2018-01-15 | 2019-07-23 | 华为技术有限公司 | 事件通知方法及相关设备 |
CN110825485A (zh) * | 2018-08-07 | 2020-02-21 | 华为技术有限公司 | 数据处理的方法、设备和服务器 |
CN109117288A (zh) * | 2018-08-15 | 2019-01-01 | 无锡江南计算技术研究所 | 一种低延迟旁路的消息优化方法 |
CN111381946A (zh) * | 2018-12-29 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 任务处理方法、装置及相关产品 |
CN111190842A (zh) * | 2019-12-30 | 2020-05-22 | Oppo广东移动通信有限公司 | 直接存储器访问、处理器、电子设备和数据搬移方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225577A (zh) * | 2022-09-20 | 2022-10-21 | 深圳市明源云科技有限公司 | 数据处理控制方法、装置、电子设备及可读存储介质 |
CN115225577B (zh) * | 2022-09-20 | 2022-12-27 | 深圳市明源云科技有限公司 | 数据处理控制方法、装置、电子设备及可读存储介质 |
CN116578234A (zh) * | 2023-04-27 | 2023-08-11 | 珠海妙存科技有限公司 | 闪存访问***及方法 |
CN116578234B (zh) * | 2023-04-27 | 2023-11-14 | 珠海妙存科技有限公司 | 闪存访问***及方法 |
CN117009265A (zh) * | 2023-09-28 | 2023-11-07 | 北京燧原智能科技有限公司 | 一种应用于片上***的数据处理装置 |
CN117009265B (zh) * | 2023-09-28 | 2024-01-09 | 北京燧原智能科技有限公司 | 一种应用于片上***的数据处理装置 |
CN117411842A (zh) * | 2023-12-13 | 2024-01-16 | 苏州元脑智能科技有限公司 | 事件抑制方法、装置、设备、异构平台及存储介质 |
CN117411842B (zh) * | 2023-12-13 | 2024-02-27 | 苏州元脑智能科技有限公司 | 事件抑制方法、装置、设备、异构平台及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112650558B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
EP3754498B1 (en) | Architecture for offload of linked work assignments | |
US20210216453A1 (en) | Systems and methods for input/output computing resource control | |
EP3211530B1 (en) | Virtual machine memory management method, physical main machine, pcie device and configuration method therefor, and migration management device | |
US7849214B2 (en) | Packet receiving hardware apparatus for TCP offload engine and receiving system and method using the same | |
US11321256B2 (en) | Persistent kernel for graphics processing unit direct memory access network packet processing | |
US20090055831A1 (en) | Allocating Network Adapter Resources Among Logical Partitions | |
US8996774B2 (en) | Performing emulated message signaled interrupt handling | |
CN115344226B (zh) | 一种虚拟化管理下的投屏方法、装置、设备及介质 | |
US11074203B2 (en) | Handling an input/output store instruction | |
CN116774933A (zh) | 存储设备的虚拟化处理方法、桥接设备、***及介质 | |
CN111290979B (zh) | 数据传输方法、装置及*** | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
US9229891B2 (en) | Determining a direct memory access data transfer mode | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN114020529A (zh) | 一种流表数据的备份方法、装置、网络设备和存储介质 | |
CN115580644B (zh) | 宿主机内客户***间的通讯方法、装置、设备及存储介质 | |
CN116954675A (zh) | 已用环表更新方法及模块、后端设备、介质、设备、芯片 | |
CN207424866U (zh) | 一种基于异构多核处理器的内核之间的数据通讯*** | |
US10284501B2 (en) | Technologies for multi-core wireless network data transmission | |
US20110258282A1 (en) | Optimized utilization of dma buffers for incoming data packets in a network protocol | |
CN113296972A (zh) | 一种信息的注册方法、计算设备及存储介质 | |
CN115297169B (zh) | 数据处理方法、装置、电子设备及介质 | |
CN114662162B (zh) | 实现动态分配vf的多算法核高性能sr-iov加解密***及方法 | |
CN115221098A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |