CN114911581B - 数据通信方法及相关产品 - Google Patents

数据通信方法及相关产品 Download PDF

Info

Publication number
CN114911581B
CN114911581B CN202210845977.8A CN202210845977A CN114911581B CN 114911581 B CN114911581 B CN 114911581B CN 202210845977 A CN202210845977 A CN 202210845977A CN 114911581 B CN114911581 B CN 114911581B
Authority
CN
China
Prior art keywords
virtual network
state
network device
dma
queue
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
Application number
CN202210845977.8A
Other languages
English (en)
Other versions
CN114911581A (zh
Inventor
胡培培
孙路遥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Xingyun Zhilian Technology Co ltd
Original Assignee
Shenzhen Xingyun Zhilian Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Xingyun Zhilian Technology Co ltd filed Critical Shenzhen Xingyun Zhilian Technology Co ltd
Priority to CN202210845977.8A priority Critical patent/CN114911581B/zh
Priority to CN202211171725.8A priority patent/CN115658219A/zh
Publication of CN114911581A publication Critical patent/CN114911581A/zh
Application granted granted Critical
Publication of CN114911581B publication Critical patent/CN114911581B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种数据通信方法及相关产品,其中,数据通信方法包括:获取调度队列,从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。采用本申请,可以提高CPU的资源利用率。

Description

数据通信方法及相关产品
技术领域
本申请涉及虚拟化技术领域,尤其涉及一种数据通信方法及相关产品。
背景技术
虚拟化主要包括处理器的虚拟化, 内存的虚拟化以及输入输出(Input/Output,I/O)的虚拟化等。virtio 是基于内核的虚拟机 (Kernel-based Virtual Machine,KVM)虚拟环境下针对 I/O 虚拟化的一个通用框架。virtio架构中包括前端virtio设备驱动和后端virtio设备,virtio设备实际上是对各种各样的设备(如:网络设备、块设备等)的虚拟,virtio设备驱动可以管理和控制virtio设备,而virtio设备驱动和virtio设备可以按照协商好的一个交互接口进行通信。virtio设备可以包括virtio网络设备(一种虚拟网络设备,可以是虚拟网卡),而virtio网络设备包含多个数据队列和一个控制队列,数据队列用来发送/接收数据报文,控制队列用来在前端驱动和virtio网络设备之间进行多种网卡功能特性的配置和协商。在异构计算中,无论是数据队列还是控制队列,都会占用后端硬件的队列资源。尤其是在virtio网络设备被用于容器和外部之间的通信时,大量的容器会创建出大量的virtio网络设备,从而消耗大量的后端硬件的队列资源。为了节约后端硬件队列资源,可以由ECPU侧实现virtio网络设备的控制队列,来和前端驱动进行控制队列消息的交互,控制队列消息交互是指前端virtio网络设备驱动和ECPU之间数据的DMA搬运,以实现对virtio网络设备执行某个事件。大量的virtio网络设备,会涉及大量控制队列消息的交互,因此如何设计一套ECPU侧与前端virtio网络设备驱动之间大量控制队列消息交互成为一个亟待解决的问题。
发明内容
本申请实施例公开了一种数据通信方法及相关产品,不仅可以高效实现ECPU侧与前端驱动之间大量控制队列消息的交互,并且可以提高CPU的资源利用率。
第一方面,本申请提供一种数据通信方法,所述方法应用于数据通信系统中,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;所述方法包括:
所述CPU获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
所述CPU从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
所述CPU根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。
本申请实施例中,将对各个虚拟网络设备执行的事件流程划分为多个顺序连接的状态,各个状态都涉及到前端驱动和ECPU侧之间DMA数据的搬运,CPU每次从调度队列的队列头中获取第一虚拟网络设备的标识,并根据该第一虚拟网络设备当前所处的第一状态向DMA引擎写入对应的DMA信息,将该第一虚拟网络设备当前所处的状态进行更新,并将其加入调度队列的队列尾部,而让DMA引擎自己去根据DMA引擎完成数据搬运。本申请不需要等待DMA引擎完成数据搬运的情况下,即继续获取下一个虚拟网络设备的标识,并根据下一个虚拟网络设备所处状态写入DMA信息,以此不断循环,由于DMA数据搬运的控制队列消息交互过程需要耗费很多时间,而本申请CPU不用等数据搬运完成即处理其他虚拟网络设备的DMA信息和状态更新,CPU可以不断的根据各个虚拟网络设备当前所处的状态执行对应的操作,能够高效的处理大量虚拟网络设备的控制队列消息的交互,即处理大量虚拟网络设备的DMA数据搬运,并且CPU无需等待数据搬运完成即可处理其他虚拟网络设备的信息,能够充分利用CPU的资源。
在一种可能的实现方式中,所述方法还包括:
所述CPU接收所述前端驱动发送的通知消息,所述通知消息用于通知所述前端驱动准备好对所述第一虚拟网络设备执行所述目标事件的数据;
所述CPU将所述第一虚拟网络设备的标识加入所述调度队列,并设置所述第一虚拟网络设备当前所处的状态为所述第一状态,所述第一状态为所述顺序连接的多个状态中的初始状态。
在一种可能的实现方式中,所述N个虚拟网络设备分别对应的控制队列存储空间包括第二控制队列和有效数据存储空间,所述第二控制队列包含的描述符的数量小于所述第一控制队列包含的描述符的数量。
在一种可能的实现方式中,所述顺序连接的多个状态包括初始状态S0、状态S1、状态S2以及状态S3;
所述CPU根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,包括:
在所述第一状态为所述初始状态S0的情况下,所述CPU向DMA引擎写入第一DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S1,所述第一DMA信息包括第一源地址信息、第一目的地址信息以及第一DMA方向,所述第一源地址信息包括所述第一虚拟网络设备对应的第一控制队列中至少一个第一描述符的地址信息,所述第一目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中第二控制队列包含的至少一个第二描述符的地址信息,所述第一DMA方向指示从所述前端驱动到所述ECPU,所述至少一个第一描述符中存储第一地址信息和第二地址信息;或者,
在所述第一状态为所述状态S1,且所述第一DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第二DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S2,所述第二DMA信息包括第二源地址信息、第二目的地址信息以及所述第一DMA方向,所述第二源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中所述至少一个第二描述符中存储的所述第一地址信息,所述第二目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第三地址信息,所述第一地址信息中存储第一数据;或者,
在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第三DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S3,所述第三DMA信息包括第三源地址信息、第三目的地址信息以及第二DMA方向,所述第三源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第四地址信息,所述第三目的地址信息包括所述至少一个第二描述符中存储的所述第二地址信息,所述第二DMA方向指示从所述ECPU到所述前端驱动,所述第四地址信息存储第二数据。
在一种可能的实现方式中,所述在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第三DMA信息,包括:
在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,根据所述第一数据对所述第一虚拟网络设备执行所述目标事件,并在执行完所述目标事件的情况下,所述CPU向DMA引擎写入所述第三DMA信息。
在一种可能的实现方式中,所述第二数据用于指示所述CPU对所述第一虚拟网络设备执行所述目标事件的执行结果。
第二方面,本申请提供一种数据通信装置,所述数据通信装置应用于数据通信系统中,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括所述数据通信装置和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;所述数据通信装置,包括:
第一获取单元,用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
第二获取单元,用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
写入单元,用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
标识加入单元,用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部;
所述第一获取单元重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。
第三方面,本申请提供一种数据通信系统,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;
所述前端驱动用于向所述CPU发送至少一个通知消息,所述通知消息用于通知所述前端驱动准备好对虚拟网络设备执行目标事件的数据;
所述CPU用于接收所述至少一个通知消息,并将所述至少一个通知消息所通知的至少一个虚拟网络设备的标识加入调度队列;
所述CPU还用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
所述CPU还用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
所述CPU还用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
所述CPU还用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。
第四方面,本申请提供一种数据通信装置,包括:存储器、处理器,其中,所述存储器和所述处理器被相互可通信地连接;其中所述存储器存储有程序指令;所述程序指令被所述处理器执行时,使所述处理器执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第五方面,本申请提供一种数据通信装置,包括:处理器,当所述处理器调用存储器中的计算机程序或指令时,执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序;当所述计算机程序在一个或多个处理器上运行时,执行如第一方面以及第一方面中任一可能的实现方式描述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种数据通信的系统架构示意图;
图2为本申请实施例提供的一种控制队列消息交互流程示意图;
图3为本申请实施例提供的一种状态划分示意图;
图4为本申请实施例提供的一种数据通信方法的流程示意图;
图5为本申请实施例提供的一种前端驱动和ECPU侧的控制队列示意图;
图6为本申请实施例提供的一种调度队列处理示意图;
图7为本申请实施例提供的一种数据通信装置的结构示意图;
图8为本申请实施例提供的另一种数据通信装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步详细描述。
本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现上述短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
下面结合附图对本发明进行详细描述。
请参阅图1,图1为本申请实施例提供的一种数据通信的系统架构示意图,如图1所示,该系统架构可以包括前端驱动、硬件后端现场可编程逻辑门阵列(Field ProgrammableGate Array, FPGA)或者专用集成电路(Application Specific Integrated Circuit,ASIC)以及嵌入式中央处理器(Embedded CPU,ECPU)。
本申请的虚拟网络设备包含多个数据队列和一个控制队列,数据队列用来发送/接收数据报文,控制队列用来在前端驱动和虚拟网络设备之间进行多种网卡功能特性的配置和协商,相应的,在前端驱动中也为每个虚拟网络设备维护一个控制队列。在异构计算中,无论是数据队列还是控制队列,都会占用后端硬件的队列资源。尤其是在虚拟网络设备被用于容器和外部之间的通信时,大量的容器会创建出大量的虚拟网络设备。
为了节约后端硬件队列资源,本申请中可以由ECPU侧实现虚拟网络设备的控制队列,来和前端驱动进行控制队列消息的交互。本申请中所提及的控制队列消息交互可理解为前端驱动对后端的虚拟网络设备执行目标事件的整个流程中所涉及的前端驱动和ECPU侧之间的交互,例如,包括前端驱动在准备好执行目标事件的数据时向ECPU侧发送的通知消息,以及为执行目标事件所涉及的前端驱动和ECPU之间的DMA数据搬运的交互等。其中,对虚拟网络设备执行的目标事件可以是对虚拟网络的配置,例如,对虚拟网络设备进行虚拟局域网 (Virtual Local Area Network,VLAN)配置。
下面结合图2对前端驱动与ECPU之间的控制队列消息交互过程进行举例说明,前端驱动需要对虚拟网络设备执行目标事件,例如,该目标事件可以是为虚拟网络设备配置VLAN 10。前端驱动会为将配置VLAN 10的相关数据分配三块内存地址,分别用于存储消息类型、有效数据以及确认ACK。其中,消息类型用于指示该消息为VLAN配置类型的消息,有效数据为10,确认ACK用于ECPU侧写入执行目标事件的执行结果。
前端驱动将消息类型和有效数据填充到对应内存地址中,并将消息类型的内存地址和有效数据的内存地址分别写入前端驱动的虚拟网络设备对应的第一控制队列的第一描述符和第二描述符中,同时将确认ACK的内存地址写入第三描述符中。
在前端驱动准备好数据的情况下,该前端驱动向ECPU发送通知消息,用于通知ECPU侧该前端驱动准备好执行目标事件的相关数据。
101,写入第一DMA信息:DMA描述符,前端驱动到ECPU。
具体可选的,ECPU向DMA引擎写入第一DMA信息,该第一DMA信息包括源地址、目的地址以及DMA方向,源地址是前端驱动的第一描述符的地址、第二描述符的地址和第三描述符的地址,目的地址是ECPU中第四描述符的地址、第五描述符的地址以及第六描述符的地址,DMA方向是从前端驱动到ECPU侧。可理解,该ECPU与前端驱动在协商过程中可知该第一描述符的地址、第二描述符的地址和第三描述符的地址。
DMA引擎开始将第一描述符中存储的消息类型的内存地址、第二描述符中存储的有效数据的内存地址以及第三描述符中存储的ACK的内存地址DMA搬运到第四描述符、第五描述符和第六描述符中。
102,判断DMA是否完成。
103,如果DMA完成,写入第二DMA信息:DMA第一数据,前端驱动到ECPU。
具体可选的,如果DMA完成,ECPU向DMA引擎写入第二DMA信息,该第二DMA信息包括源地址、目的地址以及DMA方向,源地址包括第四描述符中存储的内存地址、第五描述符中存储的内存地址,目的地址包括ECPU中分配的用于存储消息类型和有效数据的内存地址,DMA方向是从前端驱动到ECPU侧。即将前端驱动中存储的消息类型和有效数据搬运到ECPU,为便于描述,将消息类型和有效数据统称为第一数据。
104,判断DMA是否完成。
105,如果DMA完成,处理第一数据。
具体可选的,如果DMA完成,ECPU解析该第一数据,并执行目标事件,即执行配置VLAN 10的事件。在执行完目标事件之后,将执行目标时间的执行结果(即第二数据)写入ECPU侧的某个内存地址中。
106,写入第三DMA信息:DMA第二数据和预设描述符,ECPU到前端驱动。
具体可选的,ECPU向DMA引擎写入第三DMA信息,该第三DMA信息包括源地址、目的地址以及DMA方向,源地址包括存储第二数据的内存地址,目的地址包括第六描述符中存储的地址,DMA方向为ECPU侧到前端驱动。即将执行目标事件的结果(即第二数据)写入前端驱动的ACK的内存地址中。在一些实施方式中,为了便于指示前端驱动释放第一描述符、第二描述符和第三描述符,ECPU还需向预设描述符中写入flag标识,该预设描述符可以是第一描述符。因此,ECPU可在第四描述符中写入flag标识,上述源地址还可以包括第四描述符的地址,目的地址还可以包括第一描述符的地址,即将flag标识从第四描述符中搬运到第一描述符中,以让前端驱动读取到该flag标识之后,释放第一描述符、第二描述符和第三描述符。
107,判断DMA是否完成,如果完成,则结束执行目标事件的整个流程,该整个流程也可以称为控制队列消息交互流程。
结合图2所示流程,本申请为了便于提高CPU利用率,以让CPU可以处理大量虚拟网络设备的控制队列消息,将上述图2所示执行目标事件的整个流程划分为顺序连接的多个状态,下面以图3所示状态划分作为举例说明,可理解,图3所示状态划分仅为举例,还可以是其他状态划分方式本申请不作限定。
如图3所示,该顺序连接的多个状态分别包括状态S0、状态S1、状态S2、状态S3以及状态S4。可理解,可以不包括状态S4。
在ECPU侧接收到前端驱动发送的关于虚拟网络设备的通知消息时,该虚拟网络设备即进入状态S0。
在ECPU向DMA引擎写入第一DMA信息后,该虚拟网络设备即从状态S0转移到状态S1,在状态S1中,DMA引擎会根据第一DMA信息进行DMA数据搬运。
在ECPU检测到DMA引擎根据第一DMA信息搬运完成后,即向DMA引擎写入第二DMA信息,该虚拟网络设备即从状态S1转移到状态S2,在状态S2中,DMA引擎会根据第二DMA信息进行DMA数据搬运。
在ECPU检测到DMA引擎根据第二DMA信息搬运完成后,即根据搬运过来的第一数据进行处理,对虚拟网络设备执行目标事件。在执行完目标事件之后,ECPU向DMA引擎写入第三DMA信息,该虚拟网络设备即从状态S2转移到状态S3,在状态S3中,DMA引擎会根据第三DMA信息进行DMA数据搬运。
在ECPU检测到DMA引擎根据第三DMA信息搬运完成后,该虚拟网络设备即从状态S3转移到状态S4。
请参阅图4,图4为本申请实施例提供的一种数据通信方法的流程示意图,该方法应用于数据通信系统中,该数据通信系统包括前端驱动和ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数,如图4所示,上述方法可以包括以下步骤:
201,前端驱动向CPU发送至少一个通知消息,所述通知消息用于通知所述前端驱动准备好对虚拟网络设备执行目标事件的数据。
202,CPU将至少一个虚拟网络设备的标识加入调度队列。
如图5所示,对于N个虚拟网络设备中的每个虚拟网络设备,在前端驱动中均有对应于每个虚拟网络设备的第一控制队列和数据空间,在ECPU侧的内存中也包括对应于每个虚拟网络设备的控制队列存储空间,每个控制队列存储空间包括第二控制队列和有效数据存储空间。本申请实施例中,第二控制队列包含的描述符的数量小于第一控制队列包含的描述符数量,从而节省ECPU侧的内存空间。例如,每个第一控制队列包括1024个描述符,而每个第二控制队列包括4个描述符。
前端驱动可指示ECPU侧对虚拟网络设备执行目标事件,可理解,前端驱动可指示ECPU侧对不同虚拟网络设备执行不同的目标事件,也可以指示ECPU侧对不同虚拟网络设备执行相同目标事件,本申请不作限定。
在前端驱动准备好对虚拟网络设备执行目标事件的数据的情况下,该前端驱动可以向ECPU侧发送通知消息。其中,关于前端驱动准备对虚拟网络设备执行目标时间数据的过程可以参照前述实施例的描述,在此不再赘述。相应的,ECPU侧的CPU将该通知消息所通知的虚拟网络设备的标识加入调度队列,相应的,设置该虚拟网络设备的当前状态为初始状态S0。可理解,前端驱动可以发送至少一个通知消息,该至少一个通知消息分别通知该前端驱动准备好不同虚拟网络设备的数据。比如,通知消息1用于通知前端驱动准备好虚拟网络设备1的数据,通知消息2用于通知前端驱动准备好虚拟网络设备2的数据等等。需要说明的是,该至少一个消息的发送时间可以相同或不同,本申请不作限定。每当CPU接收到一个通知消息,即将对应的虚拟网络设备的标识加入调度队列,并设置其为初始状态S0。该至少一个虚拟网络设备的标识在调度队列中的排列顺序可以是接收通知消息的顺序,即每接收到一个通知消息,即将对应的虚拟网络设备的标识加入调度队列的队列尾部。
203,CPU从所述调度队列的队列头中获取第一虚拟网络设备的标识。
204,CPU确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定。
调度队列中包括至少一个虚拟网络设备的标识,CPU每次从调度队列的队列头中获取一个虚拟网络设备的标识,作为第一虚拟网络设备的标识。CPU确定该第一虚拟网络设备当前所处的状态为第一状态,该第一状态可以是顺序连接的多个状态中的一个,其中,该多个状态的获取方式可以参照前述实施例的描述,在此不再赘述。需要说明的是,第一虚拟网络设备当前所处的状态可理解为,为执行前端驱动指示的对第一虚拟网络设备执行目标事件,目前所处的执行阶段。例如,若当前处于状态S1,则说明正在将前端驱动中描述符中的地址信息搬运到ECPU的内存中。
205,CPU根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态。
206,在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部。
在一些实施例中,CPU根据第一虚拟网络设备当前所处的第一状态确定需要向DMA引擎中写入的DMA信息,可理解,在第一虚拟网络设备当前所处的状态不同,则需要向DMA引擎写入的DMA信息不同。示例性的,该DMA引擎中可以包括一个DMA队列,该DMA队列包括至少一个描述符,每写入一个DMA信息占用一个描述符,DMA引擎可以依次处理各个DMA信息,可理解,DMA引擎也可以同时处理多个DMA信息。
CPU向DMA引擎写入DMA信息,并将第一虚拟网络设备当前所处的状态更新为下一个状态,即第二状态。判断该第二状态是否是顺序连接的多个状态的最后一个状态,若不是最后一个状态,则将第一虚拟网络设备的标识加入调度队列的队列尾部,等待下次被CPU获取到。若该第二状态是最后一个状态,则不用再将该第一虚拟网络设备的标识重新加入调度队列。
可理解,DMA引擎可以根据所写入的DMA信息进行数据搬运,同时CPU也不需要等待该DMA引擎数据搬运完成,而可以转由处理其他虚拟网络设备的信息,即又从调度队列的队列头中获取虚拟网络设备的标识,将其作为第一虚拟网络设备的标识,并获取该虚拟网络设备当前所处的状态,作为第一状态,从而根据第一状态向DMA引擎写入DMA信息。换句话说,该CPU不断的循环执行步骤203-步骤206,直到调度队列为空,而不需要等待数据DMA搬运完成,从而提高CPU利用率,还能高效处理多个虚拟网络设备的控制队列消息。
需要说明的是,由于本申请中同一虚拟网络设备在下一个状态所写入的DMA信息依赖于该虚拟网络设备在上一个状态所写入DMA信息所搬运的数据,因此,在为同一虚拟网络设备的下一个状态写入DMA信息之前,需判断该虚拟网络设备在上一个状态所写入DMA信息是否搬运完成,如果搬运完成,则根据下一个状态写入新的DMA信息,如果没有搬运完成,则将该虚拟网络设备的标识放入调度队列的队列尾部等待下次被获取到,而不写入新的DMA信息。
示例性的,当第一虚拟网络设备当前所处的第一状态为初始状态S0的情况下,该CPU向DMA引擎写入第一DMA信息,并将第一虚拟网络设备当前所处的状态更新为下一个状态,即状态S1。该第一DMA信息包括第一源地址信息、第一目的地址信息以及第一DMA方向。该第一源地址信息包括第一虚拟网络设备对应的第一控制队列中至少一个第一描述符的地址信息,所述第一目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中第二控制队列包含的至少一个第二描述符的地址信息,第一DMA方向指示从所述前端驱动到所述ECPU,该至少一个第一描述符中存储第一地址信息和第二地址信息。其中,该第一地址信息可以包括前端驱动中存储第一数据(包括消息类型和有效数据)的地址。第二地址信息为用于存储ECPU侧向前端驱动写入的第二数据(包括执行目标事件结果)的地址。该第一DMA信息用于指示DMA引擎将前端驱动的至少一个第一描述符中存储的第一地址信息和第二地址信息搬运到ECPU侧中,第一虚拟网络设备对应的第二控制队列的至少一个第二描述符中。该第一地址信息用于ECPU侧后续从前端驱动中将第一数据搬运到第一虚拟网络设备对应的有效数据存储空间中。
示例性的,在第一虚拟网络设备当前所处的状态为状态S1,且第一DMA信息指示的数据搬运完成(即上一个状态写入的DMA信息指示的数据搬运已经完成)的情况下,该CPU向DMA引擎写入第二DMA信息,并将第一虚拟网络设备当前所处的状态更新为下一个状态,即状态S2。该第二DMA信息包括第二源地址信息、第二目的地址信息以及第一DMA方向,第二源地址信息包括第一虚拟网络设备对应的控制队列存储空间中上述至少一个第二描述符中存储的第一地址信息,第二目的地址信息包括第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第三地址信息,前端驱动的该第一地址信息中存储第一数据,第一数据可以包括消息类型和有效数据。该第二DMA信息用于指示DMA引擎将前端驱动中第一地址信息中存储的第一数据搬运到ECPU侧该第一虚拟网络设备对应的有效数据存储空间中第三地址信息所指示的地址。从而让ECPU侧的CPU根据第一数据对第一虚拟网络设备执行目标事件。
需要说明的是,若第一虚拟网络设备当前所处的状态为状态S1,且第一DMA信息指示的数据搬运未完成的情况下,则CPU将该第一虚拟网络设备的标识加入调度队列的队列尾部,并且不更新该第一虚拟网络设备当前所处的状态,即仍然为状态S1。
示例性的,在第一虚拟网络设备当前所处的状态为状态S2,且第二DMA信息指示的数据搬运完成的情况下,CPU根据搬运过来的第一数据对第一虚拟网络设备执行目标事件。例如,该目标事件为给第一虚拟网络设备设置VLAN10,则第一数据包括消息类型为VLAN设置类型,有效数据为10,则CPU根据该第一数据,为第一虚拟网络设备设置VLAN10。
在给第一虚拟网络设备执行完目标事件的情况下,该CPU可以向DMA引擎写入第三DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S3。该第三DMA信息包括第三源地址信息、第三目的地址信息以及第二DMA方向,所述第三源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第四地址信息,所述第四地址信息存储第二数据。该第二数据可以指示对第一虚拟网络设备执行目标事件的执行结果,例如,用1指示执行失败,用0指示执行成功。第三目的地址信息包括前述实施例中由前端驱动搬运到ECPU侧的第二地址信息,所述第二DMA方向指示从所述ECPU到所述前端驱动。该第三DMA信息用于指示DMA引擎将ECPU侧第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第四地址信息所指示地址中存储的第二数据搬运到前端驱动中,该第二数据用于指示执行结果。
在一些实施例中,比如packed模式的队列存储技术中,该第三DMA信息还可以指示将flag标识写入前端驱动中至少一个第一描述符中的一个描述符中,以指示前端驱动释放该至少一个描述符。
可选的,顺序连接的多个状态还可以包括状态S4,即在第三DMA信息所指示的数据搬运完成时,第一虚拟网络设备的当前状态即更新为状态S4。可理解,也可以不包括状态S4,即状态S3为最后一个状态,本申请不作限定。
需要说明的是,在不同的存储技术中,状态划分会存在区别,例如,在split模式的队列存储技术中,除了描述符队列外,还有Avail队列和Used队列,在DMA描述符队列之前,需要先DMAAvail队列中存放的描述符队列索引(包括2次DMA,第一次DMAAvail队列的索引,第二次DMAAvail队列的内容,即描述符队列索引);在DMA完第二数据之后,需要将描述符队列索引DMA回到前端(包括2次DMA,第一次DMAUsed队列内容,即描述符队列索引,第二次DMAUsed队列索引)。那么上述顺序连接的多个状态可以依次是状态S0、状态S01、状态S02,状态S1,状态S2,状态S3,状态S30,状态S31,以及状态S4。状态S01是指DMAAvail队列的索引,状态S02是指DMAAvail队列的内容。状态S30是指DMAUsed队列内容,状态S31是指DMAUsed队列索引。
本申请实施例中,将对各个虚拟网络设备执行的事件流程划分为多个顺序连接的状态,各个状态都涉及到前端驱动和ECPU侧之间DMA数据的搬运,CPU每次从调度队列的队列头中获取第一虚拟网络设备的标识,并根据该第一虚拟网络设备当前所处的第一状态向DMA引擎写入对应的DMA信息,将该第一虚拟网络设备当前所处的状态进行更新,并将其加入调度队列的队列尾部,而让DMA引擎自己去根据DMA引擎完成数据搬运。本申请不需要等待DMA引擎完成数据搬运的情况下,即继续获取下一个虚拟网络设备的标识,并根据下一个虚拟网络设备所处状态写入DMA信息,以此不断循环,由于DMA数据搬运的控制队列消息交互过程需要耗费很多时间,而本申请CPU不用等数据搬运完成即处理其他虚拟网络设备的DMA信息和状态更新,CPU可以不断的根据各个虚拟网络设备当前所处的状态执行对应的操作,能够高效的处理大量虚拟网络设备的控制队列消息的交互,即处理大量虚拟网络设备的DMA数据搬运,并且CPU无需等待数据搬运完成即可处理其他虚拟网络设备的信息,能够充分利用CPU的资源。
需要说明的是,在具体实现中,不仅可以循环执行调度队列中已经存在的虚拟网络设备的控制队列消息交互,还可以不断往调度队列中加入新的虚拟网络设备的标识。例如,该调度队列中包括虚拟网络设备1的标识和虚拟网络设备2的标识,在虚拟网络设备1当前所处的状态为状态S2,虚拟网络设备2当前所处的状态为状态S3的情况下,向调度队列中新加入虚拟网络设备3的标识,并放置于调度队列的队列尾部,且该虚拟网络设备3当前所处的状态为状态S0。可理解,调度队列中虚拟网络设备的标识也可以被替换为该虚拟网络设备所对应控制队列消息的标识。
下面结合附图6对本申请的数据通信方法进行举例说明。ECPU侧包括ECPUFWD线程和ECPU控制队列线程。
ECPUFWD线程接收前端驱动发送的ctrQ1通知消息,ECPU控制队列线程将该ctrQ1加入调度队列,设置其当前所处状态为状态S0。
ECPUFWD线程接收前端驱动发送的ctrQ2通知消息,ECPU控制队列线程将该ctrQ2加入调度队列,设置其当前所处状态为状态S0。其中,ctrQ2在ctrQ1后面。
ECPU控制队列线程获取调度队列中队列头部的ctrQ1,并DMA描述符Desc。
具体可选的,向DMA引擎写入第一DMA信息,该第一DMA信息用于前端驱动和ECPU侧进行ctrQ1的相关描述符的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ1当前所处的状态更新为状态S1,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ2,并DMA Desc。
具体可选的,向DMA引擎写入第一DMA信息,该第一DMA信息用于前端驱动和ECPU侧进行ctrQ2的相关描述符的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ2当前所处的状态更新为状态S1,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ1,并DMA第一数据。
具体可选的,如果与ctrQ1关联的第一DMA信息指示的数据搬运未完成的情况下,将ctrQ1加入调度队列的队列尾部。如果与ctrQ1关联的第一DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第二DMA信息,该第二DMA信息用于前端驱动和ECPU侧进行ctrQ1的第一数据的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ1当前所处的状态更新为状态S2,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ2,并DMA第一数据。
具体可选的,如果与ctrQ2关联的第一DMA信息指示的数据搬运未完成的情况下,将ctrQ2加入调度队列的队列尾部。如果与ctrQ2关联的第一DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第二DMA信息,该第二DMA信息用于前端驱动和ECPU侧进行ctrQ2的第一数据的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ2当前所处的状态更新为状态S2,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ1,并DMA第二数据和预设描述符。
具体可选的,如果与ctrQ1关联的第二DMA信息指示的数据搬运未完成的情况下,将ctrQ1加入调度队列的队列尾部。如果与ctrQ1关联的第二DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第三DMA信息,该第三DMA信息用于前端驱动和ECPU侧进行ctrQ1的第二数据和预设描述符的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ1当前所处的状态更新为状态S3,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ2,并DMA第二数据和预设描述符。
具体可选的,如果与ctrQ2关联的第二DMA信息指示的数据搬运未完成的情况下,将ctrQ2加入调度队列的队列尾部。如果与ctrQ2关联的第二DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第三DMA信息,该第三DMA信息用于前端驱动和ECPU侧进行ctrQ2的第二数据和预设描述符的搬移,具体可参照前述实施例中的描述,在此不再赘述。将ctrQ2当前所处的状态更新为状态S3,并将其加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ1,如果与该ctrQ1关联的第三DMA所指示的数据搬运完成的情况下,将该ctrQ1从调度队列中删除,剩余ctrQ2。如果与ctrQ1关联的第三DMA信息指示的数据搬运未完成的情况下,将ctrQ1加入调度队列的队列尾部。
ECPU控制队列线程获取调度队列中队列头部的ctrQ2,如果该ctrQ2关联的第三DMA所指示的数据搬运完成的情况下,将该ctrQ2从调度队列中删除。如果与ctrQ2关联的第三DMA信息指示的数据搬运未完成的情况下,将ctrQ2加入调度队列的队列尾部。
下面结合图7和图8详细说明本申请实施例提供的装置。
可以理解的是,为了实现上述实施例中功能,CPU包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及方法步骤,本申请能够以硬件、软件、或硬件和软件相结合的形式来实现。某个功能究竟以硬件、软件、或是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
参见图7,图7为本申请实施例提供的一种数据通信装置的结构示意图。该数据通信装置应用于数据通信系统中,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括所述数据通信装置和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;如图7所示,该数据通信装置1100可以包括:
第一获取单元1101,用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
第二获取单元1102,用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
写入单元1103,用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
标识加入单元1104,用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部;
所述第一获取单元1101重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。
可选的,该数据通信装置还包括:
接收单元,用于接收所述前端驱动发送的通知消息,所述通知消息用于通知所述前端驱动准备好对所述第一虚拟网络设备执行所述目标事件的数据;
所述标识加入单元1104还用于将所述第一虚拟网络设备的标识加入所述调度队列,并设置所述第一虚拟网络设备当前所处的状态为所述第一状态,所述第一状态为所述顺序连接的多个状态中的初始状态。
可选的,所述N个虚拟网络设备分别对应的控制队列存储空间包括第二控制队列和有效数据存储空间,所述第二控制队列包含的描述符的数量小于所述第一控制队列包含的描述符的数量。
可选的,所述顺序连接的多个状态包括初始状态S0、状态S1、状态S2以及状态S3;
所述写入单元具体用于在所述第一状态为所述初始状态S0的情况下,向DMA引擎写入第一DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S1,所述第一DMA信息包括第一源地址信息、第一目的地址信息以及第一DMA方向,所述第一源地址信息包括所述第一虚拟网络设备对应的第一控制队列中至少一个第一描述符的地址信息,所述第一目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中第二控制队列包含的至少一个第二描述符的地址信息,所述第一DMA方向指示从所述前端驱动到所述ECPU,所述至少一个第一描述符中存储第一地址信息和第二地址信息;或者,
在所述第一状态为所述状态S1,且所述第一DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第二DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S2,所述第二DMA信息包括第二源地址信息、第二目的地址信息以及所述第一DMA方向,所述第二源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中所述至少一个第二描述符中存储的所述第一地址信息,所述第二目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第三地址信息,所述第一地址信息中存储第一数据;或者,
在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,向DMA引擎写入第三DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S3,所述第三DMA信息包括第三源地址信息、第三目的地址信息以及第二DMA方向,所述第三源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第四地址信息,所述第三目的地址信息包括所述至少一个第二描述符中存储的所述第二地址信息,所述第二DMA方向指示从所述ECPU到所述前端驱动,所述第四地址信息存储第二数据。
可选的,所述写入单元具体用于在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,根据所述第一数据对所述第一虚拟网络设备执行所述目标事件,并在执行完所述目标事件的情况下,所述CPU向DMA引擎写入所述第三DMA信息。
可选的,所述第二数据用于指示所述CPU对所述第一虚拟网络设备执行所述目标事件的执行结果。
需要说明的是,上述各单元用于执行上述方法实施例中CPU侧的相关内容。
在本实施例中,CPU是以单元的形式来呈现。这里的“单元”可以指特定专用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上各个单元可通过图8中处理器2101来实现。
可以理解的是,上述数据通信装置的各个单元划分仅为举例,可以不一定包括所有单元,可以仅仅包括其中一些单元,或者,还可以包括其他功能单元等等,本申请不作限定。
如图8所示为本申请提供的另一种数据通信装置的结构示意图,该数据通信装置2100包括至少一个处理器2101,至少一个存储器2102以及至少一个通信接口2103。处理器2101、存储器2102和通信接口2103通过通信总线连接并完成相互间的通信。
通信接口2103,用于与其他设备或通信网络通信,如以太网,RAN,WLAN等。
存储器2102可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROMCD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器2102用于存储执行以上方案的应用程序代码,并由处理器2101来控制执行。所述处理器2101用于执行所述存储器2102中存储的应用程序代码。
存储器2102存储的代码可执行以上提供的一种数据通信方法。
处理器2101还可以采用或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的CPU侧执行的数据通信方法。
处理器2101还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的数据通信方法的各个步骤可以通过处理器2101中的硬件的集成逻辑电路或者软件形式的指令完成。在实现过程中,本申请的各个步骤可以通过处理器2101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2101还可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及模块框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器2102,处理器2101读取存储器2102中的信息,结合其硬件完成本申请实施例的数据通信方法。
通信接口2103使用例如但不限于收发器一类的收发装置,来实现数据通信装置与其他设备或通信网络之间的通信。例如,可以通过通信接口2103获取前端驱动发送的通知消息,以及与前端驱动之间实现数据搬运等等。
总线可包括在装置各个部件(例如,存储器2102、处理器2101、通信接口2103)之间传送信息的通路。
本申请提供一种数据通信系统,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;
所述前端驱动用于向所述CPU发送至少一个通知消息,所述通知消息用于通知所述前端驱动准备好对虚拟网络设备执行目标事件的数据;
所述CPU用于接收所述至少一个通知消息,并将所述至少一个通知消息所通知的至少一个虚拟网络设备的标识加入调度队列;
所述CPU还用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中所述至少一个虚拟网络设备中各虚拟网络设备的标识;
所述CPU还用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
所述CPU还用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
所述CPU还用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,直到所述调度队列为空。
本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行上述方法实施例中的数据通信方法的相关内容。
本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中的数据通信方法的相关内容。
本申请提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述方法实施例的数据通信方法的相关内容。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述方法实施例的数据通信方法的相关内容。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种数据通信方法,其特征在于,所述方法应用于数据通信系统中,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;所述方法包括:
所述CPU获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
所述CPU从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
所述CPU根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,并获取所述第一虚拟网络设备当前所处的状态作为第一状态,根据所述第一状态向DMA引擎写入DMA信息,直到所述调度队列为空;
所述根据所述第一状态向DMA引擎写入DMA信息之前还包括:判断所述第一虚拟网络设备在所述第一状态的上一个状态写入的DMA信息是否搬运完成,在搬运完成的情况下,执行根据所述第一状态向DMA引擎写入DMA信息的步骤;在没有搬运完成的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述CPU接收所述前端驱动发送的通知消息,所述通知消息用于通知所述前端驱动准备好对所述第一虚拟网络设备执行所述目标事件的数据;
所述CPU将所述第一虚拟网络设备的标识加入所述调度队列,并设置所述第一虚拟网络设备当前所处的状态为所述第一状态,所述第一状态为所述顺序连接的多个状态中的初始状态。
3.如权利要求1或2所述的方法,其特征在于,所述N个虚拟网络设备分别对应的控制队列存储空间包括第二控制队列和有效数据存储空间,所述第二控制队列包含的描述符的数量小于所述第一控制队列包含的描述符的数量。
4.如权利要求3所述的方法,其特征在于,所述顺序连接的多个状态包括初始状态S0、状态S1、状态S2以及状态S3;
所述CPU根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,包括:
在所述第一状态为所述初始状态S0的情况下,所述CPU向DMA引擎写入第一DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S1,所述第一DMA信息包括第一源地址信息、第一目的地址信息以及第一DMA方向,所述第一源地址信息包括所述第一虚拟网络设备对应的第一控制队列中至少一个第一描述符的地址信息,所述第一目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中第二控制队列包含的至少一个第二描述符的地址信息,所述第一DMA方向指示从所述前端驱动到所述ECPU,所述至少一个第一描述符中存储第一地址信息和第二地址信息;或者,
在所述第一状态为所述状态S1,且所述第一DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第二DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S2,所述第二DMA信息包括第二源地址信息、第二目的地址信息以及所述第一DMA方向,所述第二源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中所述至少一个第二描述符中存储的所述第一地址信息,所述第二目的地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第三地址信息,所述第一地址信息中存储第一数据;或者,
在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第三DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为所述状态S3,所述第三DMA信息包括第三源地址信息、第三目的地址信息以及第二DMA方向,所述第三源地址信息包括所述第一虚拟网络设备对应的控制队列存储空间中有效数据存储空间中的第四地址信息,所述第三目的地址信息包括所述至少一个第二描述符中存储的所述第二地址信息,所述第二DMA方向指示从所述ECPU到所述前端驱动,所述第四地址信息存储第二数据。
5.如权利要求4所述的方法,其特征在于,所述在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,所述CPU向DMA引擎写入第三DMA信息,包括:
在所述第一状态为所述状态S2,且所述第二DMA信息指示的数据搬运完成的情况下,所述CPU根据所述第一数据对所述第一虚拟网络设备执行所述目标事件,并在执行完所述目标事件的情况下,所述CPU向DMA引擎写入所述第三DMA信息。
6.如权利要求5所述的方法,其特征在于,所述第二数据用于指示所述CPU对所述第一虚拟网络设备执行所述目标事件的执行结果。
7.一种数据通信装置,其特征在于,所述数据通信装置应用于数据通信系统中,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括所述数据通信装置和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;所述数据通信装置,包括:
第一获取单元,用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中至少一个虚拟网络设备中各虚拟网络设备的标识;
第二获取单元,用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
写入单元,用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
标识加入单元,用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,所述CPU将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部;
所述第二获取单元用于重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,并获取所述第一虚拟网络设备当前所处的状态作为第一状态;
所述写入单元还用于根据所述第一状态向DMA引擎写入DMA信息,直到所述调度队列为空;
其中,所述写入单元还用于判断所述第一虚拟网络设备在所述第一状态的上一个状态写入的DMA信息是否搬运完成,在搬运完成的情况下,执行根据所述第一状态向DMA引擎写入DMA信息的步骤;在没有搬运完成的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部。
8.一种数据通信系统,其特征在于,所述数据通信系统包括前端驱动和嵌入式中央处理器ECPU,所述ECPU包括中央处理器CPU和内存,所述内存中包括N个虚拟网络设备分别对应的控制队列存储空间,所述前端驱动包括所述N个虚拟网络设备分别对应的第一控制队列,所述N为大于或者等于1的整数;
所述前端驱动用于向所述CPU发送至少一个通知消息,所述通知消息用于通知所述前端驱动准备好对虚拟网络设备执行目标事件的数据;
所述CPU用于接收所述至少一个通知消息,并将所述至少一个通知消息所通知的至少一个虚拟网络设备的标识加入调度队列;
所述CPU还用于获取调度队列,所述调度队列中包括所述N个虚拟网络设备中所述至少一个虚拟网络设备中各虚拟网络设备的标识;
所述CPU还用于从所述调度队列的队列头中获取第一虚拟网络设备的标识,并确定所述第一虚拟网络设备当前所处的状态为第一状态,所述第一状态是顺序连接的多个状态中的一个,所述多个状态是依据对所述第一虚拟网络设备执行目标事件的流程划分得到的,所述多个状态的连接顺序是根据执行所述目标事件的先后顺序确定;
所述CPU还用于根据所述第一状态向直接存储器访问DMA引擎写入DMA信息,并将所述第一虚拟网络设备当前所处的状态更新为第二状态,所述DMA信息用于所述第一虚拟网络设备对应的第一控制队列和所述第一虚拟网络设备对应的控制队列存储空间之间的数据搬运,所述第二状态为所述顺序连接的多个状态中所述第一状态的下一个状态;
所述CPU还用于在确定所述第二状态不是所述顺序连接的多个状态的最后一个状态的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部,并重新获取所述调度队列的队列头中的虚拟网络设备的标识作为第一虚拟网络设备的标识,并获取所述第一虚拟网络设备当前所处的状态作为第一状态,根据所述第一状态向DMA引擎写入DMA信息,直到所述调度队列为空;
所述CPU根据所述第一状态向DMA引擎写入DMA信息之前还用于判断所述第一虚拟网络设备在所述第一状态的上一个状态写入的DMA信息是否搬运完成,在搬运完成的情况下,执行根据所述第一状态向DMA引擎写入DMA信息的步骤;在没有搬运完成的情况下,将所述第一虚拟网络设备的标识加入所述调度队列的队列尾部。
9.一种数据通信装置,其特征在于,包括:处理器,当所述处理器调用存储器中的计算机程序或指令时,如权利要求1-6任一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令;当所述计算机程序或指令在一个或多个处理器上运行时,执行如权利要求1-6中任一项所述的方法的步骤。
CN202210845977.8A 2022-07-19 2022-07-19 数据通信方法及相关产品 Active CN114911581B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210845977.8A CN114911581B (zh) 2022-07-19 2022-07-19 数据通信方法及相关产品
CN202211171725.8A CN115658219A (zh) 2022-07-19 2022-07-19 数据通信方法及相关装置、系统、介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210845977.8A CN114911581B (zh) 2022-07-19 2022-07-19 数据通信方法及相关产品

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211171725.8A Division CN115658219A (zh) 2022-07-19 2022-07-19 数据通信方法及相关装置、系统、介质和程序产品

Publications (2)

Publication Number Publication Date
CN114911581A CN114911581A (zh) 2022-08-16
CN114911581B true CN114911581B (zh) 2022-09-23

Family

ID=82772657

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211171725.8A Pending CN115658219A (zh) 2022-07-19 2022-07-19 数据通信方法及相关装置、系统、介质和程序产品
CN202210845977.8A Active CN114911581B (zh) 2022-07-19 2022-07-19 数据通信方法及相关产品

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202211171725.8A Pending CN115658219A (zh) 2022-07-19 2022-07-19 数据通信方法及相关装置、系统、介质和程序产品

Country Status (1)

Country Link
CN (2) CN115658219A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904520B (zh) * 2023-03-13 2023-06-06 珠海星云智联科技有限公司 基于pcie拓扑状态变更的配置保存方法及相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870627A (en) * 1995-12-20 1999-02-09 Cirrus Logic, Inc. System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
CN105610730A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 Cpu与网络设备之间的消息交互方法及系统
CN112822299A (zh) * 2021-04-19 2021-05-18 北京易捷思达科技发展有限公司 基于rdma的数据传输方法、装置及电子设备
CN114553635A (zh) * 2022-02-18 2022-05-27 珠海星云智联科技有限公司 Dpu网络设备中的数据处理方法、数据交互方法及产品

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019882A1 (en) * 2002-07-26 2004-01-29 Haydt Robert J. Scalable data communication model
US7831749B2 (en) * 2005-02-03 2010-11-09 Solarflare Communications, Inc. Including descriptor queue empty events in completion events
US7822885B2 (en) * 2007-10-16 2010-10-26 Applied Micro Circuits Corporation Channel-less multithreaded DMA controller
US20180181421A1 (en) * 2016-12-27 2018-06-28 Intel Corporation Transferring packets between virtual machines via a direct memory access device
CN113051199A (zh) * 2019-12-26 2021-06-29 阿里巴巴集团控股有限公司 数据传输方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870627A (en) * 1995-12-20 1999-02-09 Cirrus Logic, Inc. System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
CN105610730A (zh) * 2014-11-19 2016-05-25 中兴通讯股份有限公司 Cpu与网络设备之间的消息交互方法及系统
CN112822299A (zh) * 2021-04-19 2021-05-18 北京易捷思达科技发展有限公司 基于rdma的数据传输方法、装置及电子设备
CN114553635A (zh) * 2022-02-18 2022-05-27 珠海星云智联科技有限公司 Dpu网络设备中的数据处理方法、数据交互方法及产品

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Area and Performance Evaluation of Central DMA Controller in Xilinx Embedded FPGA Designs;Faezeh Shanehsazzadeh等;《2017 Iranian Conference on Electrical Engineering》;20170720;第546-550页 *
DMA在内存间数据拷贝中的应用及其性能分析;曹宗凯等;《电子器件》;20070330(第01期);第311-313、317页 *
一种应用于网卡芯片的DMA控制器设计;曾明;《中国集成电路》;20180405(第04期);第45-50页 *
基于消息的嵌入式多任务软件开发框架研究;刘宇传;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180215(第(2018)02期);I138-390 *
面向云计算的多核处理器存储和网络子系统优化设计;苏文等;《高技术通讯》;20130415(第04期);第360-367页 *

Also Published As

Publication number Publication date
CN114911581A (zh) 2022-08-16
CN115658219A (zh) 2023-01-31

Similar Documents

Publication Publication Date Title
US11941434B2 (en) Task processing method, processing apparatus, and computer system
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN114553635B (zh) Dpu网络设备中的数据处理方法、数据交互方法及产品
CN107967225B (zh) 数据传输方法、装置、计算机可读存储介质和终端设备
US7809875B2 (en) Method and system for secure communication between processor partitions
JPH09128252A (ja) 優先度付きタスク実行制御方法及びデータ処理装置
CN114911581B (zh) 数据通信方法及相关产品
US8874638B2 (en) Interactive analytics processing
US20200250112A1 (en) Handling an input/output store instruction
US10031773B2 (en) Method to communicate task context information and device therefor
US20210311891A1 (en) Handling an input/output store instruction
US20120311180A1 (en) Facilitating routing by selectively aggregating contiguous data units
JP2009238197A (ja) 共有メモリの制御回路、制御方法及び制御プログラム
CN117453318B (zh) 基于iommu的dsp固件使用方法、系统芯片及车机
CN111310638B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN106933646B (zh) 一种创建虚拟机的方法及装置
CN108055186B (zh) 一种主从处理器通信方法及装置
CN111225063A (zh) 用于静态分布式计算架构的数据交换系统及其方法
CN116917876A (zh) 一种数据处理方法及装置
CN110740095B (zh) 多媒体串流及路由装置及其运作方法
CN110383259B (zh) 计算处理装置和信息处理系统
JP3726092B2 (ja) ベクトル処理装置およびベクトルロード方法
US20170180232A1 (en) Apparatus and method for setting bandwidth
US10901735B2 (en) Apparatus and method to improve performance of memory accesses from plural arithmetic processors
JP2507753B2 (ja) デ−タの優先度制御装置

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