CN114691581A - 一种数据传输方法、装置、可读存储介质及终端设备 - Google Patents
一种数据传输方法、装置、可读存储介质及终端设备 Download PDFInfo
- Publication number
- CN114691581A CN114691581A CN202011614094.3A CN202011614094A CN114691581A CN 114691581 A CN114691581 A CN 114691581A CN 202011614094 A CN202011614094 A CN 202011614094A CN 114691581 A CN114691581 A CN 114691581A
- Authority
- CN
- China
- Prior art keywords
- channel
- sending
- data
- task
- data processing
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- 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
-
- 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
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请属于芯片技术领域,尤其涉及一种数据传输方法、装置、计算机可读存储介质及终端设备。所述方法包括:创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;将源线程的数据处理任务发送至所述发送任务队列;通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程。通过本申请,在数据传输信道中引入任务队列处理机制来实现主机端的线程与从机端的线程之间的协调管理,极大提升了对于大量复杂任务的处理效率。
Description
技术领域
本申请属于芯片技术领域,尤其涉及一种数据传输方法、装置、计算机可读存储介质及终端设备。
背景技术
随着各种人工智能(Artificial Intelligence,AI)芯片的普及,AI协处理器芯片方案也逐步成为人工智能领域解决方案的主要应用场景。现有技术在进行主处理器和AI协处理器芯片之间的跨平台的数据传输时,大多是直接调用通用的USB接口来实现。但这种方式需要对数据传输过程进行繁杂的协调管理,当面对大量复杂任务时,效率较低。
发明内容
有鉴于此,本申请实施例提供了一种数据传输方法、装置、计算机可读存储介质及终端设备,以解决现有的数据传输方法效率较低的问题。
本申请实施例的第一方面提供了一种数据传输方法,可以包括:
创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;
将源线程的数据处理任务发送至所述发送任务队列;所述源线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输出方;
通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;
通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程;所述目的线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输入方。
进一步地,所述创建主机端与从机端之间的数据传输信道,可以包括:
将所述数据传输信道的信道名称和信道参数传递至预设的信道管理组件中的信道创建模块;
通过所述信道创建模块调用所述信道管理组件中的USB端点资源管理模块,创建与所述信道名称和所述信道参数对应的USB端点逻辑信道;
通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口。
进一步地,所述数据传输信道为从所述主机端到所述从机端方向的信道;所述通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口,可以包括:
通过所述信道创建模块在所述主机端创建发送端口以及与该发送端口对应的发送任务队列;
通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建接收端口。
进一步地,所述数据传输信道为从所述从机端到所述主机端方向的信道;所述通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口,可以包括:
通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建发送端口以及与该发送端口对应的发送任务队列;
通过所述信道创建模块在所述主机端创建接收端口。
进一步地,在将所述数据传输信道的信道名称和信道参数传递至预设的信道管理组件中的信道创建模块之后,还可以包括:
通过所述信道创建模块调用所述信道管理组件中的信道资源管理模块,查询是否存在目标信道,所述目标信道为与所述信道名称和信道参数对应的数据传输信道;
若存在所述目标信道,则停止信道创建过程。
进一步地,所述将源线程的数据处理任务发送至所述发送任务队列,可以包括:
对所述数据处理任务进行序列化,得到序列化的数据处理任务;
根据所述序列化的数据处理任务、任务类型和所述目的线程的任务队列的指针组成新的数据处理任务;
将所述新的数据处理任务发送至所述发送任务队列。
进一步地,所述将所述数据处理任务封装为数据包并发送至所述接收端口,可以包括:
按照预设的组包格式将所述数据处理任务封装为数据包;
若所述数据包的数据长度大于预设的阈值,则将所述数据包发送至所述接收端口;
若所述数据包的数据长度小于或等于所述阈值,则将若干个所述数据包封装为聚包并发送至所述接收端口。
本申请实施例的第二方面提供了一种数据传输装置,可以包括实现上述任一种数据传输方法的各个功能模块。
本申请实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种数据传输方法的步骤。
本申请实施例的第四方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种数据传输方法的步骤。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述任一种数据传输方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;将源线程的数据处理任务发送至所述发送任务队列;通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程。通过本申请实施例,将现有的USB接口进一步封装为主机端与从机端之间的数据传输信道,在其中引入任务队列处理机制来实现主机端的线程与从机端的线程之间的协调管理,而无需使用者进行繁杂的控制操作,极大提升了对于大量复杂任务的处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为进行线程间任务通信的任务队列的示意图;
图2为USB端点逻辑通道的示意图;
图3为从主机端到从机端方向的点对点信道的示意图;
图4为进行点对点信道管理的信道管理组件的示意图;
图5为本申请实施例中一种数据传输方法的一个实施例流程图;
图6为通过数据传输信道进行跨平台的数据传输的示意图;
图7为组包格式的示意图;
图8为聚包的示意图;
图9为本申请实施例中一种数据传输装置的一个实施例结构图;
图10为本申请实施例中一种终端设备的示意框图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请实施例中,可以使用如图1所示的任务队列(记为TaskQueue)来进行数据处理线程(记为Node)间任务(记为Task)的通信。TaskQueue内部使用固定大小的先进先出(First Input First Output,FIFO)队列保存线程间的Task信息,Task信息包括Task类型信息以及Task的指针信息。如图1所示的例子,发送线程A和B在堆空间上动态申请Task对象,通过TaskQueue对象发送任务Task X和Y,接收线程C依次从TaskQueue对象中读取Task并处理,Task类型采用数值表示,约定Task指针的类型信息,处理完毕后在堆空间上释放Task对象。如果发送线程发送任务时TaskQueue的FIFO队列满,那么发送线程会堵塞直到接收线程从FIFO队列中取出Task;如果接收线程接收任务时TaskQueue的FIFO队列为空,那么接收线程会堵塞等待发送线程发送Task。
在本申请实施例中,可以使用USB端点(记为Endpoint)来进行主机端(记为Host)与从机端(记为Device)之间数据通信。一般USB最多支持16个端点,每个端点可以配置最大传输块、传输方向和传输模式。其中,Host一般为基于X86或ARM的主处理器,Device一般为用于特定目的的设备,例如AI协处理器芯片等。图2所示即为USB端点逻辑通道的示意图,USB端点逻辑通道可以分为两个方向的点对点信道(记为P2P Channel),即从Host到Device方向的点对点信道(记为Host→Device P2P Channel),以及从Device到Host方向的点对点信道(记为Device→Host P2P Channel)。
P2P Channel是承载于USB端点逻辑信道连接之上的应用通信信道,利用USB的传输特点高效地把用户数据传递到对端。
以图3所示的从Host到Device方向的信道为例来说明,P2P Channel可以包括:
(1)Host的P2P发送端口的TaskQueue,用于接收Host的其它线程的Task发送请求,发送的Task内容包括:Device的TaskQueue信息、Task的序列化码流信息以及Task类型信息,其中,Task的类型信息用于通知Device如何反序列化接收到的码流信息。
(2)Host的P2P发送端口(记为TxChannel),用于从TaskQueue取出Task并组包发送;
(3)Device的P2P接收端口(记为RxChannel),用于接收数据包并对其解包,解包后获得Task的接收TaskQueue以及Task类型信息,推送到Device对应的TaskQueue中。
从Device到Host方向的P2P Channel与之类似,仅需将上述内容中的Device和Host互换即可,本申请实施例对此不再赘述。
在本申请实施例中,可以在Host端通过如图4所示的信道管理组件(记为P2PChannelWrapper)来进行P2P Channel的管理。P2P ChannelWrapper具体可以包括如下模块:
H2D(Host to Device)的信道创建模块和信道删除模块,用于负责Host到Device的P2P Channel的创建和删除;
D2H(Device to Host)的信道创建模块和信道删除模块,用于负责Device到Host的P2P Channel的创建和删除;
信道资源管理模块,用于维护已经创建的P2P Channel资源信息,支持P2PChannel复用;
USB端点资源管理模块,用于管理USB端点资源使用,支持USB端点成对动态申请和释放。
请参阅图5,本申请实施例中一种数据传输方法的一个实施例可以包括:
步骤S501、创建主机端与从机端之间的数据传输信道。
在本申请实施例中,可以使用P2P Channel来作为Host和Device之间的数据传输信道,其具体的创建过程可以包括如下步骤:
(1)将需创建的数据传输信道的信道名称和信道参数传递至信道管理组件中的信道创建模块。
所述信道名称和所述信道参数可以由用户根据实际情况进行设置,所述信道名称可以为数字、字母以及符号的组合,例如,可以将所述信道名称设置为:“H2D VideoStream#1”,所述信道参数可以包括最大传输块、传输方向和传输模式等具体参数,例如,可以将所述信道参数中的最大传输块设置为1MB,即在该信道中可传输的最大数据块为1MB。
若需创建的数据传输信道为从Host到Device方向的信道,则需将所述信道名称和所述信道参数传递至H2D的信道创建模块;若需创建的数据传输信道为从Device到Host方向的信道,则需将所述信道名称和所述信道参数传递至D2H的信道创建模块。
(2)通过所述信道创建模块调用所述信道管理组件中的信道资源管理模块,查询是否存在目标信道,所述目标信道为与所述信道名称和信道参数对应的数据传输信道。
例如,若所述信道名称为:“H2D VideoStream#1”,所述信道参数为最大传输块1MB,而查询到有同名的信道存在,且该信道的最大传输块不小于1MB,则可将该信道确定为目标信道。
若存在所述目标信道,则可以直接使用该信道,无需重新创建新的信道,通过对已存在的信道的复用来减少对信道资源的消耗。此时调用所述信道资源管理模块将所述目标信道的引用计数加1,并执行步骤(3);若不存在所述目标信道,则需重新创建新的信道,即继续执行步骤(4)。
(3)停止信道创建过程,返回所述目标信道的发送任务队列的指针以便后续需要使用到该发送任务队列时直接对其调用。
(4)通过所述信道创建模块调用所述信道管理组件中的USB端点资源管理模块,创建与所述信道名称和所述信道参数对应的USB端点逻辑信道。
USB端点资源管理模块可以调用通用的USB接口,将所述信道参数中的最大传输块、传输方向和传输模式等具体参数传递至USB接口提供的API函数中,从而创建起一个新的USB端点逻辑信道,并以所述信道名称来为其命名。
若USB端点资源不足,则返回信道申请失败的消息,并可在消息中附带上失败原因为USB端点资源耗尽;若USB端点资源足够,则继续执行步骤(5)。
(5)通过所述信道创建模块在Host端和Device端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口。
若需创建的数据传输信道为从Host到Device方向的信道,则可以通过所述信道创建模块在Host端创建发送端口以及与该发送端口对应的发送任务队列,并通过所述信道创建模块使用预设的远程过程调用模块(Remote Procedure Call,RPC)在Device端创建接收端口,从而建立起从Host到Device方向的数据传输信道。
若需创建的数据传输信道为从Device到Host方向的信道,则可以通过所述信道创建模块使用RPC在Device端创建发送端口以及与该发送端口对应的发送任务队列,并通过所述信道创建模块在Host端创建接收端口,从而建立起从Device到Host方向的数据传输信道。
通过步骤S501的过程,可以在主机端与从机端之间创建起跨平台的数据传输信道,从而为后续的数据传输提供基础。
在完成以上的信道创建过程之后,则可以调用所述信道资源管理模块将新创建的数据传输信道的引用计数加1,并返回创建的发送任务队列的指针以便后续需要使用到该发送任务队列时直接对其调用。
步骤S502、将源线程的数据处理任务发送至所述发送任务队列。
所述源线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输出方;相应地,目的线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输入方。以图6所示为例,Host的线程A发送TaskX1和TaskX2类型的Task给Device的线程B,发送TaskY类型的Task给Device的线程C,则线程A为源线程,线程B、C为目的线程。
在数据传输之前,所述源线程可以通过RPC获取如下信息:
(1)目的线程的TaskQueue指针;
(2)源线程与目的线程之间的任务类型约定,以图6所示为例,可以约定送给线程B的TaskQueue中的TaskType 0表示TaskX1类型的序列化码流,TaskType 1表示TaskX2类型的序列化码流;约定送给线程C的TaskQueue中的TaskType 0表示TaskY类型的序列化码流。
在获得上述信息后,所述源线程则可以进行Task数据流的发送。首先,根据任务类型,对需要进行传输的数据处理任务进行序列化,得到序列化的数据处理任务,或称之为Task序列化码流。然后,根据所述序列化的数据处理任务、任务类型和所述目的线程的TaskQueue指针组成新的数据处理任务,并将所述新的数据处理任务发送至所述发送任务队列。
步骤S503、通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口。
所述发送端口读取的内容包括Task序列化码流、任务类型和目的线程的TaskQueue指针,在读取到这些内容之后,可以按照预设的组包格式将其封装为数据包,并调用USB端点驱动发送数据包。具体的组包格式可以根据实际情况进行设置,图7所示即为一种组包格式的示意图,该组包格式在Task序列化码流之前加入了包括如下内容的传输头:
魔术字:用于数据传输头检测;
数据区描述:包括Task序列化码流的长度信息等;
Task类型:Task的类型标识(id)信息,目的线程依据Task的类型id进行反序列化;
目的线程Queue指针:即目的线程的TaskQueue指针;
聚包数目:传输块的包数目,P2P Channel支持聚集多个小数据包一起发送,详见后续具体说明;
循环冗余校验(Cyclic Redundancy Check,CRC)信息:可选项,如果支持CRC校验,那么针对传输头或者传输头+Task序列化码流的数据区进行CRC计算,确保数据传输完整性。
通过这样的组包格式,便于接收方对接收到的数据包进行检测,及时剔除掉其中可能出现的无效数据包,提高数据的准确性。
优选地,为了减少数据拷贝,本申请实施例可以在用户申请Task序列化所需内存(memory)时,为其分配物理地址连续的缓存(buffer),且在buffer前预留下传输头的存储空间,通过这样的特殊处理,在传输的组包过程中即可无需进行数据拷贝。
在组包完成后,若数据包的数据长度大于预设的阈值,则可以直接将数据包发送至所述接收端口,无需进行聚包过程;若数据包的数据长度小于或等于所述阈值,则可以将若干个所述数据包封装为一个数据包(将该数据包记为聚包)并发送至所述接收端口,从而提高USB传输效率。具体地,发送端口在初始化阶段可以分配一个在USB端点上支持的最大传输块buffer,用于聚包数据发送,然后周期性地从TaskQueue中连续读取Task,并组包填入buffer中,如果buffer已满,那么则调用USB发送。所述阈值可以根据实际情况进行设置,本申请实施例对此不作具体限定。
图8所示即为将两个数据包封装为一个聚包发送的格式,聚包的传输头中的数据长度为两个数据包的传输头以及Task序列化码流的总长度,Task类型和目的线程的TaskQueue指针均为-1,即表示无效。
步骤S504、通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程。
所述接收端口可以按照约定的组包格式对数据包进行解析,并利用魔术字和CRC信息,判断数据包传输的有效性,如果无效,则丢弃该数据包。如果接收到的是由多个数据包组成的聚包,则根据聚包数目的指示进行解包。针对接收的每个有效数据包,读取传输头中的TaskQueue指针以及Task类型,将Task发送到相对应的目的线程的TaskQueue中。所述目的线程则读取其TaskQueue中的Task,根据Task类型的指示对其进行反序列化以及后续处理。
在完成数据传输之后,则可以通过如下步骤删除P2P Channel:
(1)将需删除的数据传输信道的信道名称传递至信道管理组件中的信道删除模块。
若需删除的数据传输信道为从Host到Device方向的信道,则需将该信道名称传递至H2D的信道删除模块;若需删除的数据传输信道为从Device到Host方向的信道,则需将该信道名称传递至D2H的信道删除模块。
(2)通过所述信道删除模块调用所述信道管理组件中的信道资源管理模块,查询是否存在目标信道,所述目标信道为与该信道名称对应的数据传输信道。
例如,若该信道名称为:“H2D VideoStream#1”,且查询到有同名的信道存在,则可将查询到的该信道确定为目标信道。
若不存在目标信道,则返回删除失败的消息,并可在消息中附带上失败原因为删除不存在的P2P Channel;若存在目标信道,则继续执行步骤(3)。
(3)通过所述信道删除模块调用所述信道资源管理模块,将目标信道的引用计数减1,此时若该引用计数为非0,则返回删除成功的消息;若该引用计数为0,则继续执行步骤(4)。
(4)通过所述信道删除模块调用所述信道资源管理模块,清除目标信道的记录,并调用USB端点资源管理模块,释放目标信道占用的USB端点资源,返回信道删除成功的消息。
综上所述,通过本申请实施例,将现有的USB接口进一步封装为主机端与从机端之间的数据传输信道,在其中引入任务队列处理机制来实现主机端的线程与从机端的线程之间的协调管理,而无需使用者进行繁杂的控制操作,极大提升了对于大量复杂任务的处理效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的一种数据传输方法,图9示出了本申请实施例提供的一种数据传输装置的一个实施例结构图。
本实施例中,一种数据传输装置可以包括:
信道创建模块901,用于创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;
数据发送模块902,用于将源线程的数据处理任务发送至所述发送任务队列;所述源线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输出方;
数据封装模块903,用于通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;
数据接收模块904,用于通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程;所述目的线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输入方。
进一步地,所述信道创建模块可以包括:
创建信息传递单元,用于将所述数据传输信道的信道名称和信道参数传递至预设的信道管理组件中的信道创建模块;
资源管理单元,用于通过所述信道创建模块调用所述信道管理组件中的USB端点资源管理模块,创建与所述信道名称和所述信道参数对应的USB端点逻辑信道;
信道创建单元,用于通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口。
进一步地,所述信道创建单元可以包括:
第一创建子单元,用于通过所述信道创建模块在所述主机端创建发送端口以及与该发送端口对应的发送任务队列;通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建接收端口。
第二创建子单元,用于通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建发送端口以及与该发送端口对应的发送任务队列;通过所述信道创建模块在所述主机端创建接收端口。
进一步地,所述信道创建模块还可以包括:
信道查询单元,用于通过所述信道创建模块调用所述信道管理组件中的信道资源管理模块,查询是否存在目标信道,所述目标信道为与所述信道名称和信道参数对应的数据传输信道;
停止创建单元,用于若存在所述目标信道,则停止信道创建过程。
进一步地,所述数据发送模块可以包括:
序列化单元,用于对所述数据处理任务进行序列化,得到序列化的数据处理任务;
组包单元,用于根据所述序列化的数据处理任务、任务类型和所述目的线程的任务队列的指针组成新的数据处理任务;
发送单元,用于将所述新的数据处理任务发送至所述发送任务队列。
进一步地,所述数据封装模块可以包括:
组包单元,用于按照预设的组包格式将所述数据处理任务封装为数据包;
第一处理单元,用于若所述数据包的数据长度大于预设的阈值,则将所述数据包发送至所述接收端口;
第二处理单元,用于若所述数据包的数据长度小于或等于所述阈值,则将若干个所述数据包封装为聚包并发送至所述接收端口。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
图10示出了本申请实施例提供的一种终端设备的示意框图,为了便于说明,仅示出了与本申请实施例相关的部分。
如图10所示,该实施例的终端设备10包括:处理器100、存储器101以及存储在所述存储器101中并可在所述处理器100上运行的计算机程序102。所述处理器100执行所述计算机程序102时实现上述各个数据传输方法实施例中的步骤,例如图5所示的步骤S505至步骤S504。或者,所述处理器100执行所述计算机程序102时实现上述各装置实施例中各模块/单元的功能,例如图9所示模块901至模块904的功能。
示例性的,所述计算机程序102可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器101中,并由所述处理器100执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序102在所述终端设备10中的执行过程。
所述终端设备10可以是桌上型计算机、笔记本、掌上电脑、智能手机及智能电视等计算设备。本领域技术人员可以理解,图10仅仅是终端设备10的示例,并不构成对终端设备10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备10还可以包括输入输出设备、网络接入设备、总线等。
所述处理器100可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。所述处理器100可以是所述终端设备10的神经中枢和指挥中心,所述处理器100可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
所述存储器101可以是所述终端设备10的内部存储单元,例如终端设备10的硬盘或内存。所述存储器101也可以是所述终端设备10的外部存储设备,例如所述终端设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器101还可以既包括所述终端设备10的内部存储单元也包括外部存储设备。所述存储器101用于存储所述计算机程序以及所述终端设备10所需的其它程序和数据。所述存储器101还可以用于暂时地存储已经输出或者将要输出的数据。
所述终端设备10还可以包括通信模块,所述通信模块可以提供应用在网络设备上的包括无线局域网(Wireless Local Area Networks,WLAN)(如Wi-Fi网络),蓝牙,Zigbee,移动通信网络,全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等通信的解决方案。所述通信模块可以是集成至少一个通信处理模块的一个或多个器件。该通信模块可以包括天线,该天线可以只有一个阵元,也可以是包括多个阵元的天线阵列。所述通信模块可以通过天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器。所述通信模块还可以从处理器接收待发送的信号,对其进行调频、放大,经天线转为电磁波辐射出去。
所述终端设备10还可以包括电源管理模块,所述电源管理模块可以接收外接电源、电池和/或充电器的输入,为所述处理器、所述存储器和所述通信模块等供电。
所述终端设备10还可以包括显示模块,所述显示模块可用于显示由用户输入的信息或提供给用户的信息。所述显示模块可包括显示面板,可选的,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。进一步的,触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给所述处理器以确定触摸事件的类型,随后所述处理器根据触摸事件的类型在所述显示面板上提供相应的视觉输出。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在所述终端设备上运行时,使得所述终端设备可实现上述各个方法实施例中的步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据传输方法,其特征在于,包括:
创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;
将源线程的数据处理任务发送至所述发送任务队列;所述源线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输出方;
通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;
通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程;所述目的线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输入方。
2.根据权利要求1所述的数据传输方法,其特征在于,所述创建主机端与从机端之间的数据传输信道,包括:
将所述数据传输信道的信道名称和信道参数传递至预设的信道管理组件中的信道创建模块;
通过所述信道创建模块调用所述信道管理组件中的USB端点资源管理模块,创建与所述信道名称和所述信道参数对应的USB端点逻辑信道;
通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口。
3.根据权利要求2所述的数据传输方法,其特征在于,所述数据传输信道为从所述主机端到所述从机端方向的信道;
所述通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口,包括:
通过所述信道创建模块在所述主机端创建发送端口以及与该发送端口对应的发送任务队列;
通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建接收端口。
4.根据权利要求2所述的数据传输方法,其特征在于,所述数据传输信道为从所述从机端到所述主机端方向的信道;
所述通过所述信道创建模块在所述主机端和所述从机端创建与所述USB端点逻辑信道对应的发送任务队列、发送端口和接收端口,包括:
通过所述信道创建模块使用预设的远程过程调用模块在所述从机端创建发送端口以及与该发送端口对应的发送任务队列;
通过所述信道创建模块在所述主机端创建接收端口。
5.根据权利要求2所述的数据传输方法,其特征在于,在将所述数据传输信道的信道名称和信道参数传递至预设的信道管理组件中的信道创建模块之后,还包括:
通过所述信道创建模块调用所述信道管理组件中的信道资源管理模块,查询是否存在目标信道,所述目标信道为与所述信道名称和信道参数对应的数据传输信道;
若存在所述目标信道,则停止信道创建过程。
6.根据权利要求1所述的数据传输方法,其特征在于,所述将源线程的数据处理任务发送至所述发送任务队列,包括:
对所述数据处理任务进行序列化,得到序列化的数据处理任务;
根据所述序列化的数据处理任务、任务类型和所述目的线程的任务队列的指针组成新的数据处理任务;
将所述新的数据处理任务发送至所述发送任务队列。
7.根据权利要求1至6中任一项所述的数据传输方法,其特征在于,所述将所述数据处理任务封装为数据包并发送至所述接收端口,包括:
按照预设的组包格式将所述数据处理任务封装为数据包;
若所述数据包的数据长度大于预设的阈值,则将所述数据包发送至所述接收端口;
若所述数据包的数据长度小于或等于所述阈值,则将若干个所述数据包封装为聚包并发送至所述接收端口。
8.一种数据传输装置,其特征在于,包括:
信道创建模块,用于创建主机端与从机端之间的数据传输信道,所述数据传输信道包括发送任务队列、发送端口和接收端口;
数据发送模块,用于将源线程的数据处理任务发送至所述发送任务队列;所述源线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输出方;
数据封装模块,用于通过所述发送端口从所述发送任务队列中读取所述数据处理任务,将所述数据处理任务封装为数据包并发送至所述接收端口;
数据接收模块,用于通过所述接收端口接收所述数据包,从所述数据包中解析出所述数据处理任务并发送至目的线程;所述目的线程为所述主机端的数据处理线程和所述从机端的数据处理线程之中的数据流输入方。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据传输方法的步骤。
10.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的数据传输方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011614094.3A CN114691581A (zh) | 2020-12-29 | 2020-12-29 | 一种数据传输方法、装置、可读存储介质及终端设备 |
PCT/CN2021/133114 WO2022142901A1 (zh) | 2020-12-29 | 2021-11-25 | 一种数据传输方法、装置、可读存储介质及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011614094.3A CN114691581A (zh) | 2020-12-29 | 2020-12-29 | 一种数据传输方法、装置、可读存储介质及终端设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691581A true CN114691581A (zh) | 2022-07-01 |
Family
ID=82131620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011614094.3A Pending CN114691581A (zh) | 2020-12-29 | 2020-12-29 | 一种数据传输方法、装置、可读存储介质及终端设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114691581A (zh) |
WO (1) | WO2022142901A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101371570A (zh) * | 2006-02-14 | 2009-02-18 | 国际商业机器公司 | 提供画中画服务的方法和设备 |
CN103051978A (zh) * | 2012-12-16 | 2013-04-17 | 华南理工大学 | 一种基于h264的实时移动视频服务控制方法 |
WO2014082562A1 (en) * | 2012-11-29 | 2014-06-05 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN110399329A (zh) * | 2019-07-12 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种rdma的数据处理方法及相关装置 |
CN111131932A (zh) * | 2019-12-04 | 2020-05-08 | 广东东研网络科技股份有限公司 | 一种olt系统中主从通信的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020091826A1 (en) * | 2000-10-13 | 2002-07-11 | Guillaume Comeau | Method and apparatus for interprocessor communication and peripheral sharing |
US20090259786A1 (en) * | 2008-04-10 | 2009-10-15 | Chu-Ming Lin | Data transfer system and method for host-slave interface with automatic status report |
CN101587462B (zh) * | 2008-05-21 | 2012-02-08 | 上海摩波彼克半导体有限公司 | 高速数据通信链路中的usb数据传输装置及其数据传输方法 |
-
2020
- 2020-12-29 CN CN202011614094.3A patent/CN114691581A/zh active Pending
-
2021
- 2021-11-25 WO PCT/CN2021/133114 patent/WO2022142901A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101371570A (zh) * | 2006-02-14 | 2009-02-18 | 国际商业机器公司 | 提供画中画服务的方法和设备 |
WO2014082562A1 (en) * | 2012-11-29 | 2014-06-05 | Tencent Technology (Shenzhen) Company Limited | Method, device, and system for information processing based on distributed buses |
CN103051978A (zh) * | 2012-12-16 | 2013-04-17 | 华南理工大学 | 一种基于h264的实时移动视频服务控制方法 |
CN110399329A (zh) * | 2019-07-12 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种rdma的数据处理方法及相关装置 |
CN111131932A (zh) * | 2019-12-04 | 2020-05-08 | 广东东研网络科技股份有限公司 | 一种olt系统中主从通信的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022142901A1 (zh) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7948999B2 (en) | Signaling completion of a message transfer from an origin compute node to a target compute node | |
CN104796337A (zh) | 一种转发报文的方法及装置 | |
CN102790776A (zh) | 心跳连接归一处理方法、终端、服务器及通信系统 | |
US20180006970A1 (en) | Technologies for scalable packet reception and transmission | |
CN111177025B (zh) | 数据存储方法、装置及终端设备 | |
US11016769B1 (en) | Method and apparatus for processing information | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
US8578068B2 (en) | Method of data communications with reduced latency | |
CN114265713B (zh) | Rdma事件管理方法、装置、计算机设备及存储介质 | |
CN106549869A (zh) | 数据包处理方法及装置 | |
US7889657B2 (en) | Signaling completion of a message transfer from an origin compute node to a target compute node | |
CN112506676B (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
CN116204487A (zh) | 远程数据访问方法及装置 | |
CN110719233B (zh) | 用于发送信息的方法及装置 | |
CN103558995B (zh) | 一种存储控制芯片及磁盘报文传输方法 | |
CN110659143B (zh) | 一种容器间的通讯方法、装置及电子设备 | |
CN114691581A (zh) | 一种数据传输方法、装置、可读存储介质及终端设备 | |
CN114691231A (zh) | 一种数据流水编排方法、装置、可读存储介质及终端设备 | |
CN116471242A (zh) | 基于rdma的发送端、接收端、数据传输系统及方法 | |
CN115037671B (zh) | 多路径聚合调度方法及电子设备 | |
WO2022179427A1 (zh) | 一种数据传输带宽的配置方法及相关设备 | |
CN114666289A (zh) | 一种基于电磁屏蔽体的数据传输方法及系统 | |
CN116136790A (zh) | 任务处理方法和装置 | |
CN115242816B (zh) | 基于fc设备的数据分发方法、装置、设备及存储介质 | |
CN115658590A (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 |