CN117453615A - 数据传输方法、装置、电子设备及存储介质 - Google Patents
数据传输方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117453615A CN117453615A CN202311478532.1A CN202311478532A CN117453615A CN 117453615 A CN117453615 A CN 117453615A CN 202311478532 A CN202311478532 A CN 202311478532A CN 117453615 A CN117453615 A CN 117453615A
- Authority
- CN
- China
- Prior art keywords
- data
- host
- register
- communication channel
- value
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 187
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000004891 communication Methods 0.000 claims abstract description 202
- 230000004044 response Effects 0.000 claims description 27
- 238000012545 processing Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 238000012512 characterization method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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/10—Program control for peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供了一种数据传输方法、装置、电子设备及存储介质。方法应用于数据传输系统中的第一主机,方法包括:向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令,以使数据处理器响应于请求指令为第一主机分配通信通道的控制权;在第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识,以使第二主机基于第二主机的主机标识确定自身作为接收端后准备接收数据;在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据,以使第二主机从共享寄存器中读取待传输数据。通过采用上述方法,能够有效保障在进行数据传输时的数据传输速率的同时还能避免占用过多的硬件资源。
Description
技术领域
本申请涉及互联网技术领域,更具体地,涉及一种数据传输方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,数据处理系统中存在大量的多主机协同工作的场景,多主机需要合作完成各种功能,多主机之间的内部管理数据依赖于内部数据链路完成数据的传输与接收。网络通道作为多主机间常用的内部管理数据通信链路,软件层面上需要网络软件协议栈的支撑,硬件层面上提供网络设备接口和网络报文转发等功能,且为使报文传输过程中具有高速率、低延时等特性,数据处理系统中各个主机需要具有较高硬件的要求,从而会占用较多的硬件资源。
发明内容
有鉴于此,本申请实施例提出了一种数据传输方法、装置、电子设备及存储介质,能够有效保障在进行数据传输时的数据传输速率的同时还能避免占用过多的硬件资源。
第一方面,本申请实施例提供了一种数据传输方法,应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器,所述方法包括:向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权;在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识,以使所述第二主机基于所述共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据。
第二方面,本申请实施例提供了一种数据传输方法,应用于数据传输系统中的数据处理器,所述数据处理器中设有供多个主机访问的共享寄存器;所述方法包括:若接收到作为发送端的第一主机发送的请求占用所述共享寄存器作为通信通道的控制权的请求指令,响应于所述请求指令,获取所述通信通道的占用信息;若基于所述通信通道的占用信息确认所述通信通道未被占用,为所述第一主机分配所述通信通道的控制权,使所述第一主机按照如前述应用于第一主机的数据传输方法进行数据传输。
第三方面,本申请实施例提供了一种数据传输装置,该装置可以应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器,该装置包括:指令发送模块,用于向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权;标识写入模块,用于在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识,以使所述第二主机基于所述共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;数据写入模块,用于在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据。
在一种可实施方式中,所述共享寄存器包括控制寄存器和数据寄存器,所述待传输数据被写入所述数据寄存器,所述控制寄存器设有第一字段,所述第一字段的值用于表征通信通道的状态,所述装置还包括:字段值设置模块,用于将所述第一字段的值设置表示第一状态的值,所述第一状态为发送端准备发送数据的状态,以使所述第二主机在确认自身作为接收端,且控制寄存器中第一字段的值为表示第一状态的值后,将所述第一字段的值调整为表示第二状态的值,以指示所述接收端已准备接收数据。
在一种可实施方式中,所述数据写入模块,还用于在确认所述第一字段的值为表示第二状态的值后,向所述数据寄存器中写入待传输数据;响应于所述待传输数据被写入所述数据寄存器,将所述第一字段的值由表征第二状态的值调整为表征第三状态的值,以使所述第二主机在确认第一字段的值为表示第三状态的值后,读取所述数据寄存器中的待传输数据,并将所述第一字段的值由表征第三状态的值调整为表征第二状态的值,所述第三状态为表征发送端发送数据成功的状态。
在一种可实施方式中,所述待传输数据是将待传输的目标数据进行分片得到的,所述字段值写入模块,还用于响应于所述待传输数据被写入所述数据寄存器,将所述第一字段的值由表征第二状态的值调整为表征第四状态的值,以使所述第二主机在确认第一字段的值为表示第三状态的值后,读取所述数据寄存器中的待传输数据,将第二主机读取的所有待传输数据进行拼接得到目标数据,以及将所述第一字段的值由表征第四状态的值调整为表征第二状态的值,所述第四状态为表征发送端完成数据发送的状态。
在一种可实施方式中,所述装置还包括数据分片模块,用于根据所述数据寄存器的内存容量和目标数据的数据量,对所述目标数据进行分片,得到至少一份待传输数据,每份所述待传输数据的数据量不大于所述数据寄存器的内存容量。
在一种可实施方式中,所述控制寄存器还设有第二字段和第三字段,所述第二字段的值用于表示发送端,所述第三字段的值用于表示接收端,所述标识写入模块,还用于将所述控制寄存器的中第三字段赋值为所述第二主机的主机标识;以及用于响应于所述第一主机具有所述通信通道的控制权,将所述第二字段的值赋值为所述第一主机的标识。
在一种可实施方式中,所述装置还包括,控制权释放模块,用于在确定所述第一主机结束数据发送且所述第二主机完成数据接收时,释放所述第一主机针对所述通信通道的控制权。
第四方面,本申请实施例提供了一种数据传输装置,该装置可以应用于数据传输系统中的数据处理器,所述数据处理器中设有供多个主机访问的共享寄存器;所述装置包括:信息获取模块,用于在接收到作为发送端的第一主机发送的请求占用所述共享寄存器作为通信通道的控制权的请求指令时,响应于所述请求指令,获取所述通信通道的占用信息;控制权分配模块,用于在基于所述通信通道的占用信息确认所述通信通道未被占用时,为所述第一主机分配所述通信通道的控制权,使所述第一主机利用如前述实施例中应用于第一主机上的数据传输装置进行数据传输。
在一种可实施方式中,所述共享寄存器包括控制寄存器和数据寄存器,所述待传输数据被写入所述数据寄存器;控制权分配模块还用于在作为发送端的第一主机请求占用所述通信通道的控制权时,获取所述控制寄存器中第四字段的值;在所述控制寄存器中第四字段的值表征所述通信通道未被占用时,将所述第四字段的值赋值为所述第一主机的标识,以指示所述通信通道的控制权被所述分配给所述第一主机。
第五方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述处理器执行以实现上述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
第七方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质获取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法。
本申请实施例提供的一种数据传输方法、装置、电子设备及存储介质,方法可应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器方法包括:向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令,以使数据处理器响应于请求指令为第一主机分配通信通道的控制权;在第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识,以使第二主机基于第二主机的主机标识确定自身作为接收端后准备接收数据;在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据,以使第二主机从共享寄存器中读取待传输数据。通过采用上述方法,进行数据传输时,各主机与数据处理器之间可以仅通过数据传输接口连接而无需复杂的硬件即可实现数据传输,且在数据传输过程中,通过在数据处理器中设置共享寄存器作为各主机间的通信通道,充分利用了共享寄存器的高读写速度来提升各主机间进行数据传输的传输速率,也即,通过采用本申请的上述方法,能够有效保障在进行数据传输时的数据传输速率的同时还能避免占用过多的硬件资源。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种数据传输方法的应用场景图;
图2示出了本申请实施例提供的一种应用在数据传输系统上的数据传输方法的流程示意图;
图3示出了本申请实施例提供的各主机设置通信通道的状态的交互示意图;
图4示出了本申请实施例提供的一种应用在第一主机上的数据传输方法的流程示意图;
图5示出了本申请实施例提供的一种应用在数据处理器上的数据传输方法的另一流程示意图;
图6示出了本申请实施例提供的一种共享寄存器的结构的示意图;
图7示出了本申请实施例提供的一种数据传输方法的时序流程图;
图8示出了本申请实施例提供的一种应用在第一主机上的数据传输方法的流程示意图;
图9示出了本申请实施例提供的一种应用在数据处理器上的数据传输方法的流程示意图;
图10示出了本申请实施例提供的一种应用在第二主机上的数据传输方法的流程示意图;
图11示出了本申请实施例提出的一种应用在第一主机上的数据传输装置的连接框图;
图12示出了本申请实施例提出的一种应用在数据处理器上的数据传输装置的连接框图;
图13示出了用于执行本申请实施例的方法的电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
随着计算机技术的发展,涉及多主机的数据处理系统应用越来越广泛,相关技术中,数据处理系统可以为包括多个主机和分别与各主机连接的数据处理器或数据处理设备的平台系统,以数据处理系统为DPU平台系统(包括多个主机和一个DPU的平台系统)为例,(DPU,Data Processing Unit,数据处理器),DPU平台系统中使用网络作为多主机内部管理数据通信链路存在下列的弊端:
DPU平台系统中网络通信实现复杂。具体的,在DPU平台系统中实现多主机的网络通信,需要实现网络设备的虚拟化、通信报文处理与分发、QoS(Quality of Service,服务质量)等功能。这些模块的功能在保证数据高速通信的同时,也为DPU平台系统引入了更多的风险点,这些复杂功能的故障都将破坏内部管理数据链路的可用性,对于可靠性要求高的内部管理数据链路而言,这些复杂功能带来的风险点是非常严重的。同时硬件中为数据链路设计的复杂网络模块也占用了DPU平台的宝贵的硬件资源。
网络通道也会受到DPU业务数据干扰。具体的,DPU内部实现的网络架构中涉及到多个传输队列,包括业务数据和内部管理数据队列,在硬件实现上DPU平台系统内部通信数据链路与业务通道存在共用的模块。当业务数据的通信负载过高,会造成这些共用模块的反压,最终导致多系统内部数据链路速率下降甚至堵死。此外,相关技术中,DPU中串口通信也会被用来实现上DPU平台系统的内部通信,通常被设计为系统故障时的手动调试链路。进而存在下列弊端:串口通信传输速率受限,串口通信传输速率受限于串口波特率,正常情况下串口波特率不超过115200比特每秒。串口通常用于两个主机的数据收发,多主机情况下,需要一台主机作为通信系统,其他设备作为通信从机,通信从机之间的通信依赖于通信系统的转发,通信方式复杂,并且因为转发机制的存在,也进一步降低通信速率。因此,在DPU多系统环境中,串口通信通常只适用于系统发生严重故障的手动调试。
发明人经过认真的研究,提出了一种数据传输方法,可应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器,方法包括:向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权;在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识,以使所述第二主机基于所述共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据。
通过采用上述方法,在数据传输系统中的各个主机之间需要进行数据传输时,利用共享寄存器作为数据传输的载体,从而使不同主机之间通过共享寄存器构建的单独的通信链路能够不受业务数据的干扰,硬件仅需各个主机通过数据传输接口与数据处理器连接,并保障各主机能够访问共享寄存器即可,故本申请的硬件实现复杂度低,能够有效降低系统故障率,保证通信链路的高可靠性;此外,在硬件逻辑实现上,由于共享寄存器实现简单通用,且逻辑资源开销小,其高速访问特性提供了满足数据传输系统需要的数据传输功能。从而使得本申请的数据传输方法,能够有效保障在进行数据传输时的数据传输速率的同时还能避免占用过多的硬件资源。
下面说明本发明实施例提供的用于执行数据传输的示例性应用,本发明实施例提供的数据传输方法可以应用于如图1所示的应用环境。
图1是根据本申请一实施例示出的应用场景的示意图,如图1所示,该应用场景包括数据处理器和多个主机(图中示出了多个主机具体为N个情况,且N为大于或等于2的整数),多个主机中包括作为发送端的第一主机和作为接收端的第二主机。各主机与数据处理器通过通信接口或数据传输线连接,示例性的,多个主机通过同步通信接口与数据处理器连接。
其中,数据处理器可以是CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)或者DPU(Data Processing Unit,数据处理器)等用于进行数据处理的器件或设备。在本申请的一种可实施方式中,数据处理器为DPU。DPU主要用于承担起安全、网络、存储和AI等业务的加速处理,旨在降低CPU的利用率,满足网络专用计算需求,尤其适用于服务器量多、对数据传输速率要求严苛的场景。
主机可以指示任意需要进行数据传输和处理的硬件设备,如,可以是与数据处理器连接后用于进行数据处理的器件、终端或电子设备。在本申请中,当数据处理器为DPU时,多个主机可以是CPU、GPU、终端或电子设备中的一种或多种,且每种主机的数量可以是一个或者多个。
数据处理器中的共享寄存器是指,数据处理器中用于存储数据的存储区域,且该存储区域能够被与数据处理器连接的各个主机读写访问的寄存器。
在利用如图1中的数据传输系统进行数据传输时,作为发送端的第一主机向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令;数据处理器响应于请求指令,在确认通信通道未被占用时为第一主机分配通信通道的控制权;第一主机在具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识;第二主机基于共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;第一主机在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据;第二主机从共享寄存器中读取待传输数据。
通过采用本申请的上述数据传输方法,在数据传输系统中的各个主机之间需要进行数据传输时,数据处理器通过为需要发送数据的主机(第一主机)分配通信通道的控制权,第一主机在具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的标识,使得第二主机具有读写共享寄存器中的数据的权限,从而达到利用共享寄存器为第一主机和第二主机单独建立通信链路的目的,以确保了第一主机和第二主机通过该通信链路进行通信的可靠性。此外,本申请利用共享寄存器作为数据传输的载体,从而使不同主机之间通过共享寄存器构建的单独的通信链路能够不受业务数据的干扰,在利用上述的数据传输系统进行数据传输时,数据传输系统在硬件仅需各个主机通过数据传输接口与数据处理器连接,并保障各主机能够访问共享寄存器即可,故本申请的硬件实现复杂度低,能够有效降低系统故障率,保证通信链路的高可靠性;此外,在硬件逻辑实现上,由于共享寄存器实现简单通用,且逻辑资源开销小,其高速访问特性提供了满足数据传输系统需要的数据传输功能。
下面将结合附图具体描述本申请的各实施例。
如图2所示,是本申请实施例提供的一种数据传输方法,该方法可以应用于上述的数据传输系统,该数据传输系统中包括数据处理器和与数据处理器连接的多个主机,数据处理器中设置有供多个主机访问的共享寄存器,多个主机中包括作为数据发送端的第一主机和作为数据接收端的第二主机。
其中,关于主机和数据处理器的具体类型可以参阅对于数据传输系统的具体描述,本实施例不在一一赘述。共享寄存器可以用来暂时存放各个主机需要传输或交互的数据,该数据可以是各主机参与运算的数据和运算结果。
在共享寄存器用作各主机间进行数据传输时的通信通道时,共享寄存器可以具体包括数据寄存器和控制寄存器,其中,数据寄存器用于存放各主机之间需要传输的数据(待传输数据),控制寄存器用于存储用于控制和确定各主机及数据处理器的操作模式以及当前执行任务的特性,如控制寄存器用于存储指示共享寄存器的通信通道的状态和报文信息,数据寄存器和控制寄存器共同协作可以实现多主机场景下的报文传输,还可以实现在报文传输过程中进行分片与组装。由于共享寄存器是数据处理器中有限存储容量的高速存储部件,在本申请中来暂存待传输数据、位址以及传输控制信息等,由于寄存器拥有非常高的读写速度,因此,本实施例中各主机利用共享寄存器作为数据传输的通信通道来进行数据传输时的数据传输速度非常快。
在各主机与数据处理器之间通过数据传输接口或数据传输线连接后,各主机若要通过数据处理器中的共享寄存器进行通信,则可以首先对通信通道进行初始化,主要包括共享寄存器读/写接口初始化、控制寄存器和数据寄存器初始化。发送端使用初始化后的共享寄存器写入接口向共享寄存器中写入待传输数据,同时,共享寄存器写入接口还用于提供了数据分片和分片数据发送功能。接收端可以使用初始化后的共享寄存器读取接口从共享寄存器中读取待传输数据,同时,共享寄存器读取接口还提供分片数据接收和分片数据拼接功能。初始化后的控制寄存器具有多个字段,分别用于存储数据传输过程中的位址及传输控制信息,初始化后的数据寄存器用于存储待传输数据。
示例性的,数据寄存器占据N个字节以用于存储待传输数据,控制寄存器占据32个字节用于存储位址及传输控制信息等,具体的,控制器分包括第一字段(CAHNNEL STATUS),第一字段的值用来表示通信通道的状态,通信通道的状态具体可以包括第一状态(SEND_START)、第二状态(IDLE)、第三状态(SEND_OK)以及第四状态(SEND_FINISH),其中,第一状态表示发送端准备发送数据的状态,第二状态表示接收端已准备接收数据的状态,第三状态表示发送端发送数据成功的状态,第四状态表示发送端完成数据发送的状态。控制器还包括第二字段,第二字段(SRC ID:)的值用来表示发送端,第三字段(DEST ID)的值用来表示接收端,第四字段(CTRL MASTER)的值用来表示通信通道的控制权的分配对象。
应当理解,上述控制寄存器中包括的字段仅为示意性的,还可以有更多的字段,在此处不作意义限定。上述的字段的值也仅仅示意性的,且字段中的值可以是数字、字符、字符串等任意能够表征其代表的意义的信息,只要能够被主机识别确认即可。
在利用数据传输系统进行数据传输时,方法包括:
步骤S110:第一主机向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令。
其中,第一主机为多个主机中任意需要向其他主机发送数据的主机。
第一主机向数据处理器发送请求指令的方式可以有多种,如,可以是,第一主机向数据处理器中的共享寄存器中写入表征第一主机请求通信通道控制权的请求指令,也可以是第一主机向数据处理器直接发送请求通信通道控制权的请求指令,如通过其连接的数据传输通道或网络直接发送请求指令,上述的发送方式仅为示意性的,只要能使第一主机向数据处理器发送请求指令即可。
步骤S120:数据处理器响应于请求指令,在确认通信通道未被占用时为第一主机分配通信通道的控制权。
数据处理器确认通信通道是否被占用的方式可以是,数据处理器确认控制寄存器中的第四字段中的值是否表征通信通道的控制权未被分配,若第四字段中的值表征通信通道的控制权未被分配,则确认通信通道未被占用。也可以是数据处理器确认预设时长内是否收到请求占用指令,若在预设是时长内未接收到请求占用指令确认通信通道未被占用。还可以是数据处理器确认当寄存器中存储的通道占用截止时刻是否在接收到请求指令之前,若是,则可以确认通信通道未被占用。应当理解,上述确认通信通道是否被占用的方式仅仅是示意性的,还可以有更多的确认方式,在此处不作具体限定。
为第一主机分配通信通道控制权的方式可以是,为控制寄存器的第四字段的值赋值为表征第一主机具有通信通道控制权的值,还可以是为第一主机分配对共享寄存器的数据写入权限(该写入权限包括对控制寄存器的写入权限和数据寄存器的写入权限),以使第一主机具有对共享寄存器的通信通道的控制权。
应当理解,对于不具有对共享寄存器的控制权的主机来说,其通常不具备对共享寄存器中的数据寄存器具有写入权限,也不具备对控制寄存器中的部分字段的写入权限,如,不具备对控制寄存器中的第二字段和第三字段的写入权限。
在一种可实施方式中,数据处理器可以响应于请求指令,获取控制寄存器中第四字段(如,CTRL MASTER字段,也即表示通信通道的控制权的分配对象的字段)的值,若控制寄存器中第四字段的值表征通信通道未被占用(如,为NO MASTER),将第四字段的值赋值为第一主机的标识,以指示通信通道的控制权被分配给第一主机。
在另一种可实施方式中,控制寄存器中还包括通道控制权请求字段(如,CTRL REQ字段),需要进行数据发送的各个主机均可以向共享寄存器的通道控制权请求字段中写入其对应的主机标识,数据处理器可以在检测到通道控制权请求字段中的值为主机标识时,检测第四字段(如,CTRL MASTER字段,也即表示通信通道的控制权的分配对象的字段)中是否存储有主机标识,当检测到第四字段的值表征通信通道无主机占用(如,为NO MASTER)时,将第四字段的值赋值为通道控制权请求字段中的值,也即赋值为通道控制权请求字段中的主机标识,表征当前通信通道的控制权归属于该字段中存储的主机标识对应的第一主机。
需要说明的是,当存在多个主机需要通过共享寄存器发送数据时,各主机可以通过竞争的方式向共享寄存器的通道控制权请求字段中写入其对应的主机标识;当数据处理器检测到通道控制权请求字段中的值为NO MASTER表征没有主机请求占用该通信通道。
步骤S130:第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识。
通过向共享寄存器中写入作为接收端的第二主机的主机标识,可以使第二主机能够具有从共享寄存器读取数据的权限,也可以使第二主机能够具有向共享寄存器的某些字段中写入数据的权限。例如,第一字段中表征通信通道的状态的写入权限。
在向共享寄存器中写入作为接收端的第二主机的主机标识时,可以向共享寄存器中任意可以能够表示接收端的字段中写入作为接收端的第二主机的主机标识。例如,向控制寄存器的第三字段中写入作为接收端的第二主机的主机标识。
为便于第二主机能够获知作为发送端的第一主机,在第一主机具有通信通道的控制权的情况下,还可以向向共享寄存器中任意可以能够表示发送端的字段中写入作为发送端的第一主机的主机标识。例如,向控制寄存器的第二字段中写入作为发送端的第一主机的主机标识。
步骤S140:第二主机基于共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据。
共享寄存器中可以设置有用于存储各主机轮巡或访问共享寄存器的频次的字段,第二主机可以调整该字段对应的频次以指示其准备接收数据。其中,初始状态下,各主机对应的频次可以相同,也可以不同,在第一主机确认第二主机的访问频次发生变化时,或访问频次为指定频次时,可以确认第二主机准备接收数据。示例性的,在第二主机的访问频次增加时,则可以表征第二主机准备接收数据。
共享寄存器中还可以包括用于存储表征接收端处于不同状态的字段,第二主机可以通过设置该字段中的值以表征其是否准备接收数据。
共享寄存器中还可以设置有用于存储通信通道的状态机的状态的字段(第四字段),通信通道的状态机的状态可以由第一主机和第二主机进行更改,当第一主机检测到第二主机对第四字段中的值进行了更改,以基于更改后的值确认第二主机是否准备接收数据。示例性的,在更改后的值表征可以通过通信通道传输数据时,则可以确认第二主机准备接收数据。
应当理解,上述确定第二主机准备接收数据的方式仅仅是示意性的,还可以有更多的确定方式,根据实际需求进行设置。
在本申请的一种可实施方式中,将第一字段的值设置表示第一状态的值,第一状态为发送端准备发送数据的状态,以使第二主机在确认自身作为接收端,且控制寄存器中第一字段的值为表示第一状态的值后,将第一字段的值调整为表示第二状态的值,以指示接收端已准备接收数据。
步骤S150:第一主机在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据。
其中,向共享寄存器中写入待传输数据的方式可以是,向共享寄存器的数据存储器中写入待传输数据,以便第二主机能够读取。
在本申请的一种可实施方式中,第一主机还可以响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第三状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,确认发送端发送数据成功。
步骤S160:第二主机从共享寄存器中读取待传输数据。
其中,第二主机可以轮巡共享寄存器的数据寄存器中是否存储有待传输数据,并在轮巡到存储有待传输数据时,读取待传输数据。
为提升第二主机的数据读取效率,第一主机在向共享寄存器中写入待传输数据后,可以向控制寄存器中可用于表征数据寄存器的存储状态的字段中写入表征数据寄存器中存储有数据的值,以使第二主机在检测到该字段中存储有表征数据寄存器中存储有数据的值时,从共享寄存器的数据寄存器中读取待传输数据。
第一主机在向共享寄存器中写入待传输数据后,还可以对第四字段中的值进行更改,以使第二基于更改后的值确认第一主机发送了数据后,从共享寄存器的数据寄存器中读取待传输数据。
在一种可实施方式中,第二主机在共享寄存器的数据寄存器中读取待传输数据后,还将第一字段的值由表征第三状态的值调整为表征第二状态的值。以便第一主机可以根据第一字段的值确认第二主机是否完成待传输数据读取。
通过采用本申请的上述数据传输方法,在数据传输系统中的各个主机之间需要进行数据传输时,数据处理器通过为需要发送数据的主机(第一主机)分配通信通道的控制权,第一主机在具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的标识,使得第二主机具有读写共享寄存器中的数据的权限,从而达到利用共享寄存器为第一主机和第二主机单独建立通信链路的目的,以确保了第一主机和第二主机通过该通信链路进行通信的可靠性。此外,本申请利用共享寄存器作为数据传输的载体,从而使不同主机之间通过共享寄存器构建的单独的通信链路能够不受业务数据的干扰,在利用上述的数据传输系统进行数据传输时,数据传输系统在硬件仅需各个主机通过数据传输接口与数据处理器连接,并保障各主机能够访问共享寄存器即可,故本申请的硬件实现复杂度低,能够有效降低系统故障率,保证通信链路的高可靠性;此外,在硬件逻辑实现上,由于共享寄存器实现简单通用,且逻辑资源开销小,其高速访问特性提供了满足数据传输系统需要的数据传输功能。
在本申请的一种可实施方式中,考虑到第一主机向第二主机传输数据时,所需传输的目标数据的数据量较大,因此,待传输数据可以是将待传输的目标数据进行分片得到的,方法还包括:响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第四状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,读取数据寄存器中的待传输数据,将第二主机读取的所有待传输数据进行拼接得到目标数据,以及将第一字段的值由表征第四状态的值调整为表征第二状态的值,第四状态为表征发送端完成数据发送的状态。
应当理解,在第一主机对目标数据进行分片后传输的过程中,对于各待传输数据,第一主机可以为每个待传输数据按照其在目标数据中的位置进行标记后按照随机顺序写入到共享寄存器,第二主机在读取到各待传输数据后,可以根据标记进行拼接得到目标数据;对于各待传输数据,第一主机还可以按照待传输数据在目标数据中的位置确定各待传输数据的传输顺序,并按照传输顺序依次将各待传输数据写入共享寄存器,以便后续在传输完成后,第二主机可以直接根据个待传输数据的读取顺序对待传输数据进行拼接从而得到目标数据。
通过将待传输的目标数据进行分片后传输,能够有效避免待传输的目标数据在传输过程中发生数据丢失的情况,提升了各主机之间数据传输的可靠性。
为便于在作为发送端的第一主机在完成向作为接收端的第二主机发送数据后,其他主机可以使用共享寄存器传输数据,在本申请的一种可实施方式中,数据处理器或第一主机在确定第一主机结束数据发送且第二主机完成数据接收,释放第一主机针对通信通道的控制权。
示例性的,数据处理器或第一主机可以在检测到控制寄存器中第一字段表征发送端完成数据发送后,或者在检测到第一主机占用通信通道的时长达到预设时长时,释放第一主机针对通信通道的控制权。其中,预设时长可以是基于共享寄存器的数据传输速度、数据寄存器的内存容量以及待传输的目标数据的数据量确定的最大传输时长。释放第一主机针对通信通道的控制权的方式可以是,将控制寄存器中的第四字段的值设置为表征通信通道未被占用的值,或者取消第一主机对数据寄存器和控制寄存器中部分字段的写入权限。
通过在数据传输完成后,释放第一主机针对通信通道的控制权,可以使其他主机在需要进行数据传输时,使用再次使用上述的共享寄存器进行数据传输。
示例性的,如图3所示,第一字段种通信通道的状态可以分为SEND_START(第一状态),IDLE(第二状态),SEND_OK(第三状态),SEND_FINISH(第四状态),也即共四个状态,第一主机在获取到通信通道的控制权时,将第一字段的值设置为SEND_START,表征发送端准备发送数据的状态;第二主机在确认自身作为接收端且轮巡到第一字段的值为SEND_START后,将第一字段的值由SEND_START调整为IDLE,以指示第二主机已准备接收数据;第一主机在轮巡到第一字段的值为IDLE向所述数据寄存器中写入待传输数据,并将第一字段的值由IDLE调整为SEND_OK,表征发送端发送数据成功;第二主机在轮巡到第一字段的值为SEND_OK读取所述数据寄存器中的待传输数据,并将所述第一字段的值由SEND_OK调整为IDLE;第一主机在轮巡到第一字段的值为IDLE且第一主机已完成所有待传输数据的发送后,将第一字段的值由IDLE调整为SEND_FINISH,SEND_FINISH为表征发送端完成数据发送。第二主机在在确认第一字段的值为SEND_FINISH后,读取所述数据寄存器中的待传输数据,并将读取到的所有待传输数据进行拼接得到目标数据,以及将所述第一字段的值由SEND_FINISH调整为表征IDLE。第一主机在确认所有数据已完成发送,且第一字段的值为SEND_FINISH后,释放通道控制权,从而完成第一主机与第二主机之间的一次数据传输。
请阅图4,图4所示为本申请还提供一种数据传输方法,可以应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,数据处理器中设置有供多个主机访问的共享寄存器,该方法包括:
步骤S210:向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令,以使数据处理器响应于请求指令,在确认通信通道未被占用时为第一主机分配通信通道的控制权。
其中,请求指令中可以包括第一主机的主机标识,上述步骤S110可以是,第一主机向数据处理器发送请求指令,以使数据处理器在接收到请求指令时,响应于该请求指令确认在确认通信通道未被占用时为第一主机分配通信通道的控制权。
关于上述上述步骤S110的具体描述可以参阅前文对步骤S110-S120的具体描述,在本实施例不再一一赘述。
步骤S220:在第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识,以使第二主机基于共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据。
关于上述步骤S220的具体描述可以参阅前文对步骤S130-S140的具体描述,在本实施例不再一一赘述。
步骤S230:在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据,以使第二主机从共享寄存器中读取待传输数据。
关于上述步骤S230的具体描述可以参阅前文对步骤S150-S160的具体描述,在本实施例不再一一赘述。
通过采用上述的数据传输方法,在第一主机需要传输待传输数据时,通过向数据处理器发送通信通道的控制权的请求指令,以使数据处理器为(第一主机)分配通信通道的控制权,并在第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的标识,使得第二主机具有读写共享寄存器中的数据的权限,从而达到利用共享寄存器为第一主机和第二主机单独建立通信链路的目的,确保了第一主机和第二主机通过该通信链路进行通信的可靠性。此外,本申请利用共享寄存器作为数据传输的载体,从而使不同主机之间通过共享寄存器构建的单独的通信链路能够不受业务数据的干扰,在利用上述的数据传输系统进行数据传输时,数据传输系统在硬件仅需各个主机通过数据传输接口与数据处理器连接,并保障各主机能够访问共享寄存器即可,故本申请的硬件实现复杂度低,能够有效降低系统故障率,保证通信链路的高可靠性;此外,在硬件逻辑实现上,由于共享寄存器实现简单通用,且逻辑资源开销小,其高速访问特性提供了满足数据传输系统需要的数据传输功能。
在一种可实施方式中,共享寄存器包括控制寄存器和数据寄存器,待传输数据被写入数据寄存器,控制寄存器设有第一字段,第一字段的值用于表征通信通道的状态;在执行步骤S220之后,方法还包括:将第一字段的值设置表示第一状态的值,第一状态为发送端准备发送数据的状态,以使第二主机在确认自身作为接收端,且控制寄存器中第一字段的值为表示第一状态的值后,将第一字段的值调整为表示第二状态的值,以指示接收端已准备接收数据。
在该种实施方式下,上述步骤S230包括:
S230a:在确认第一字段的值为表示第二状态的值后,向数据寄存器中写入待传输数据。
其中,第一主机在确认第一字段的值为指示接收端已准备接收数据时,则说明第一主机在向数据寄存器中写入待传输数据后,第二主机能够读取寄存器中的待传输数据。
S230b:响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第三状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,读取数据寄存器中的待传输数据,并将第一字段的值由表征第三状态的值调整为表征第二状态的值,第三状态为表征发送端发送数据成功的状态。
在该种实施方式下,待传输数据是将待传输的目标数据进行分片得到的,方法还包括:响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第四状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,读取数据寄存器中的待传输数据,将第二主机读取的所有待传输数据进行拼接得到目标数据,以及将第一字段的值由表征第四状态的值调整为表征第二状态的值,第四状态为表征发送端完成数据发送的状态。
应当理解,若将待传输的目标数据进行分配得到的待传输数据为多个,且在当前传输的待传输数据为最后一个时,可以执行上述的方法步骤。
在一种可实施方式中,待传输的目标数据的分片方式为:根据数据寄存器的内存容量和目标数据的数据量,对目标数据进行分片,得到至少一份待传输数据,每份待传输数据的数据量不大于数据寄存器的内存容量。
通过将待传输的目标数据进行分片后传输,可以有效避免待传输的目标数据因其对应的数据量过大,使得一次传输过程中无法存放至数据寄存器而导致的数据丢失的问题。
在本申请的一种可实施方式中,控制寄存器还设有第二字段和第三字段,第二字段的值用于表示发送端,第三字段的值用于表示接收端,向共享寄存器中写入作为接收端的第二主机的主机标识,包括:将控制寄存器的中第三字段赋值为第二主机的主机标识;数据处理器在为第一主机分配控制权之后,方法还包括:响应于第一主机具有通信通道的控制权,将第二字段的值赋值为第一主机的标识。
通过设置第三字段,可以提升各主机在确认其是否可作为接受端时的效率,也即,各主机可以仅轮巡控制寄存器中的第三字段,即可查询到其是否可作为接收端。通过设置第二字段,且该第二字段的值用于表示发送端,可以使得各主机能够获知作为发送端的第一主机。
在第一主机完成对待传输的目标数据的发送之后,方法还包括:若确定第一主机结束数据发送且第二主机完成数据接收,释放第一主机针对通信通道的控制权。关于释放第一主机针对通信通道控制权的方式可以参阅前述实施例的具体描述,在此处不再一一赘述。
如图5所示,是本申请实施例提供的一种数据传输方法,应用于数据传输系统中的数据处理器,数据处理器中设有供多个主机访问的共享寄存器;方法包括:
步骤S310:若接收到作为发送端的第一主机发送的请求占用共享寄存器作为通信通道的控制权的请求指令,响应于请求指令,获取通信通道的占用信息。
步骤S320:若基于通信通道的占用信息确认通信通道未被占用,为第一主机分配通信通道的控制权,使第一主机按照前述实施例中应用在作为接收端的第一主机的数据传输方法进行数据传输。
关于上述步骤S320的具体描述可以参阅前文对步骤S110-S120的具体描述,在本实施例不在一一赘述。
在本申请的一种可实施方式中,共享寄存器包括控制寄存器和数据寄存器,待传输数据被写入数据寄存器;上述步骤S310具体可以是:若作为发送端的第一主机请求占用通信通道的控制权,获取控制寄存器中第四字段的值;若控制寄存器中第四字段的值表征通信通道未被占用,将第四字段的值赋值为第一主机的标识,以指示通信通道的控制权被分配给第一主机。
请结合参阅图图6至图9所示,是本申请给出来的一种数据传输方法的示例性应用。该方法应用于如图1所示的数据传输系统,如图6所示,共享寄存器中进行初始化后的逻辑区分为控制寄存器和数据寄存器,两类寄存器共同协作,实现多系统场景下的报文传输、分片与组装。其中,控制寄存器主要分为下列字段:
CAHNNEL STATUS字段(第一字段):该字段的值用来表示通信通道的状态(即,通信通道的状态),该字段可以存储有不同状态的值,如SEND_START(第一状态),IDLE(第二状态),SEND_OK(第三状态),SEND_FINISH(第四状态)四个状态对应的值。其中,第一状态可以用于表征发送端获取通道控制权后,准备向接收端发送数据;第二状态可以用于表示该状态表示通道处于空闲状态,发送端可以向接收端发送分片数据;第三状态可以用于表示发送端已完成待传输数据的发送,接收端可以通道中接收待传输数据;第四状态可以用于该状态表示本次数据传输过程中,发送端已完成目标待传输数据的发送。
SRC ID(第二字段):该字段的值用于表示传输报文过程中发送数据的主机ID(作为发送端的第一主机的主机标识)。
DEST ID(第三字段):该字段表示本次传输报文过程中接收数据的主机ID(作为接收端的第二主机的主机标识)。
CTRL MASTER(第四字段):该字段的值用于表示在通道控制权仲裁机制中,表明占用该通道的主机ID,NO MASTER作为一种特殊的ID,用来表示通道无主机占用。
CTRL REQ(第五字段):该字段的值用于表示通道控制权仲裁机制,表明请求占用该通道的主机ID,NO MASTER作为一种特殊的ID,用来表示通道无系统请求占用。
LENGTH:该字段的值用于表示待传输数据的实际长度(待传输数据的数据量)。
数据传输系统在利用上述的共享寄存器中的数据寄存器和控制寄存器进行数据传输时,第一主机、数据处理器以及第二主机的交互时序图如图7所示,具体传输过程中:作为发送端的第一主机首先对上层应用传输的数据进行分片得到多个待传输数据,各待传输数据的大小不超过数据寄存器的最大长度,并执行数据发送相关的操作,且第一主机的数据发送过程如图8中的步骤a1至a5所示;数据处理器用于实现通道控制权仲裁机制能够保证多个系统同时竞争使用通道时,保证同一时间仅有一对系统使用该通道发送数据。具体的,独立于数据发送端和接收端的通道控制权由数据处理器中的仲裁程序来实现通道控制权仲裁机制,数据处理器的控制权仲裁处理流程如图9中的c1和c2所示:作为接收端的第二主机负责接收第一主机发送的分片后的待传输数据,并将分片后的待传输数据按照顺序拼接成完整的目标数据,交付给上层应用,第二主机的数据接收过程如图10中的步骤b2至b4所示。
第一主机执行步骤a1:向数据处理器发送请求获取通信通道的控制权的请求指令。
数据处理器执行步骤c1:响应于请求指令运行通道控制权仲裁程序以确认通信通道是否被占用。
在确认通信通道未被占用时,数据处理器执行步骤c2:为第一主机分配通道控制权。
其中,在通信通道被占用时,表示通道繁忙,拒绝此次通道控制权占用申请。
具体的,上述步骤c1和c2可以是,数据处理器中的通道控制权仲裁程序轮询控制寄存器的CTRL REQ字段的值,确认其是否为等于NO_MASTER时,若是,表示有终端需要占用通道发送数据,此时CTRL REQ字段的值为发送端的ID(即第一主机的ID)。
检查CTRL MASTER字段的值是否等于NO_MASTER,如果是,表示通道空闲,将CTRLMASTER字段的值设置为请求终端的ID,表示为第一主机分配通道控制权。
第一主机执行步骤a2:获取通道控制权后,设置控制寄存器的SRC_ID字段的值为第一主机的ID,设置控制寄存器的DEST ID字段的值为接收端ID,将通道状态机设置为SEND_START状态。
其中,SEND_START状态表示准备向接收端发送传输数据,等待接收端就绪。
第二主机执行步骤b2:在轮询到通道状态机状态为SEND_START状态,且在DEST_ID中存储的接收端ID为第二主机的ID时,将通道状态机设置为IDLE。
第一主机执行步骤a3:轮询到通道状态机状态为IDLE状态后,向数据寄存器中填入第N片待传输数据,设置控制寄存器的LENGTH字段为该第N片待传输数据的长度,将通道状态机设置为SEND_OK状态。
第二主机执行步骤b3:轮询到通道状态机状态为SEND_OK状态时,将数据寄存器中的第N片待传输数据保存到接收缓存中,并通道状态机状态设置为IDLE状态。
第一主机执行步骤a4:完成所有分片的待传输数据的发送后,将通道状态机设置为SEND_FINISH状态。
第二主机执行步骤b4:轮询到通道状态机状态为SEND_FINISH状态时,将数据寄存器中的最后一片分片数据保存到接收缓存中,之后,将接收缓存中的所有分片数据拼接得到待传输的目标数据,将通道状态机状态设置为IDLE状态。
第一主机执行步骤a5:轮询到通道状态机状态为IDLE状态后,确认本次数据传输完成,释放通道控制权。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图11,本申请另一实施例提供了一种数据传输装置400,数据传输装置400可以应用于数据传输系统的多个主机中作为发送端的第一主机,数据传输系统还包括数据处理器,数据处理器中设置有供多个主机访问的共享寄存器,数据传输装置400包括:指令发送模块410,用于向数据处理器发送请求共享寄存器作为通信通道的控制权的请求指令,以使数据处理器响应于请求指令,在确认通信通道未被占用时为第一主机分配通信通道的控制权;标识写入模块420,用于在第一主机具有通信通道的控制权的情况下,向共享寄存器中写入作为接收端的第二主机的主机标识,以使第二主机基于共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;数据写入模块430,用于在确定第二主机已准备接收数据后,向共享寄存器中写入待传输数据,以使第二主机从共享寄存器中读取待传输数据。
在一种可实施方式中,共享寄存器包括控制寄存器和数据寄存器,待传输数据被写入数据寄存器,控制寄存器设有第一字段,第一字段的值用于表征通信通道的状态,数据传输装置400还包括:字段值设置模块,用于将第一字段的值设置表示第一状态的值,第一状态为发送端准备发送数据的状态,以使第二主机在确认自身作为接收端,且控制寄存器中第一字段的值为表示第一状态的值后,将第一字段的值调整为表示第二状态的值,以指示接收端已准备接收数据。
在一种可实施方式中,数据写入模块430,还用于在确认第一字段的值为表示第二状态的值后,向数据寄存器中写入待传输数据;响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第三状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,读取数据寄存器中的待传输数据,并将第一字段的值由表征第三状态的值调整为表征第二状态的值,第三状态为表征发送端发送数据成功的状态。
在一种可实施方式中,待传输数据是将待传输的目标数据进行分片得到的,字段值写入模块,还用于响应于待传输数据被写入数据寄存器,将第一字段的值由表征第二状态的值调整为表征第四状态的值,以使第二主机在确认第一字段的值为表示第三状态的值后,读取数据寄存器中的待传输数据,将第二主机读取的所有待传输数据进行拼接得到目标数据,以及将第一字段的值由表征第四状态的值调整为表征第二状态的值,第四状态为表征发送端完成数据发送的状态。
在一种可实施方式中,数据传输装置400还包括数据分片模块,用于根据数据寄存器的内存容量和目标数据的数据量,对目标数据进行分片,得到至少一份待传输数据,每份待传输数据的数据量不大于数据寄存器的内存容量。
在一种可实施方式中,控制寄存器还设有第二字段和第三字段,第二字段的值用于表示发送端,第三字段的值用于表示接收端,标识写入模块520,还用于将控制寄存器的中第三字段赋值为第二主机的主机标识;以及用于响应于第一主机具有通信通道的控制权,将第二字段的值赋值为第一主机的标识。
在一种可实施方式中,数据传输装置400还包括,控制权释放模块,用于在确定第一主机结束数据发送且第二主机完成数据接收时,释放第一主机针对通信通道的控制权。
请参阅图12,本申请另一实施例提供了一种数据传输装置500,数据传输装置500可以应用于数据传输系统中的数据处理器,数据处理器中设有供多个主机访问的共享寄存器;数据传输装置500包括:信息获取模块510,用于在接收到作为发送端的第一主机发送的请求占用共享寄存器作为通信通道的控制权的请求指令时,响应于请求指令,获取通信通道的占用信息;控制权分配模块520,用于在基于通信通道的占用信息确认通信通道未被占用时,为第一主机分配通信通道的控制权,使第一主机利用如前述实施例中应用于第一主机上的数据传输装置进行数据传输。
在一种可实施方式中,共享寄存器包括控制寄存器和数据寄存器,待传输数据被写入数据寄存器;控制权分配模块520还用于在作为发送端的第一主机请求占用通信通道的控制权时,获取控制寄存器中第四字段的值;在控制寄存器中第四字段的值表征通信通道未被占用时,将第四字段的值赋值为第一主机的标识,以指示通信通道的控制权被分配给第一主机。
上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图13对本申请提供的一种电子设备进行说明。
请参阅图13,基于上述实施例提供的数据传输方法,本申请实施例还提供的另一种包括可以执行前述方法的处理器102的电子设备100,该电子设备100可以为前述的主机或数据处理器。
电子设备100可以包括存储器104。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个用于处理数据的核以及消息矩阵单元。处理器102利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(DigitalSignal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(Central Processing Unit,CPU)、图像处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所获取的数据等。
电子设备100还可以包括数据传输接口、网络模块以及屏幕,网络模块用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和音频播放设备进行通讯。网络模块可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。网络模块可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。
在一些实施例中,电子设备100还可以包括有:外设接口106和至少一个外围设备。处理器102、存储器104和外设接口106之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外设接口连接。
外设接口106可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器102和存储器104。在一些实施例中,处理器102、存储器104和外设接口106被集成在同一芯片或电路板上;在一些其他实施例中,处理器102、存储器104和外设接口106中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
示例性的,在本实施例中,外围设备可以包括通信接口108,电子设备100可以通过通信接口108与其他设备或器件连接以进行数据传输。
本申请实施例还提供一种计算机可读存储介质的结构框图。该计算机可读介质中存储有程序代码,程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质具有执行上述方法中的任何方法步骤的程序代码的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以例如以适当形式进行压缩。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中描述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种数据传输方法,应用于数据传输系统的多个主机中作为发送端的第一主机,其特征在于,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器,所述方法包括:
向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权;
在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识,以使所述第二主机基于所述共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;
在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据。
2.根据权利要求1所述的方法,其特征在于,所述共享寄存器包括控制寄存器和数据寄存器,所述待传输数据被写入所述数据寄存器,所述控制寄存器设有第一字段,所述第一字段的值用于表征通信通道的状态;
所述在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识之后,所述方法还包括:
将所述第一字段的值设置表示第一状态的值,所述第一状态为发送端准备发送数据的状态,以使所述第二主机在确认自身作为接收端,且控制寄存器中第一字段的值为表示第一状态的值后,将所述第一字段的值调整为表示第二状态的值,以指示所述接收端已准备接收数据。
3.根据权利要求2所述的方法,其特征在于,所述在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据,包括:
在确认所述第一字段的值为表示第二状态的值后,向所述数据寄存器中写入待传输数据;
响应于所述待传输数据被写入所述数据寄存器,将所述第一字段的值由表征第二状态的值调整为表征第三状态的值,以使所述第二主机在确认第一字段的值为表示第三状态的值后,读取所述数据寄存器中的待传输数据,并将所述第一字段的值由表征第三状态的值调整为表征第二状态的值,所述第三状态为表征发送端发送数据成功的状态。
4.根据权利要求3所述的方法,其特征在于,所述待传输数据是将待传输的目标数据进行分片得到的,所述方法还包括:
响应于所述待传输数据被写入所述数据寄存器,将所述第一字段的值由表征第二状态的值调整为表征第四状态的值,以使所述第二主机在确认第一字段的值为表示第三状态的值后,读取所述数据寄存器中的待传输数据,将第二主机读取的所有待传输数据进行拼接得到目标数据,以及将所述第一字段的值由表征第四状态的值调整为表征第二状态的值,所述第四状态为表征发送端完成数据发送的状态。
5.根据权利要求4所述的方法,其特征在于,所述在确定所述第二主机准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述目标第二主机从所述共享寄存器中读取待传输数据之前,所述方法还包括:
根据所述数据寄存器的内存容量和目标数据的数据量,对所述目标数据进行分片,得到至少一份待传输数据,每份所述待传输数据的数据量不大于所述数据寄存器的内存容量。
6.根据权利要求2所述的方法,其特征在于,所述控制寄存器还设有第二字段和第三字段,所述第二字段的值用于表示发送端,所述第三字段的值用于表示接收端,所述向所述共享寄存器中写入作为接收端的第二主机的主机标识,包括:
将所述控制寄存器的中第三字段赋值为所述第二主机的主机标识;
所述向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权之后,还包括:
响应于所述第一主机具有所述通信通道的控制权,将所述第二字段的值赋值为所述第一主机的标识。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述第一主机结束数据发送且所述第二主机完成数据接收,释放所述第一主机针对所述通信通道的控制权。
8.一种数据传输方法,应用于数据传输系统中的数据处理器,其特征在于,所述数据处理器中设有供多个主机访问的共享寄存器;所述方法包括:
若接收到作为发送端的第一主机发送的请求占用所述共享寄存器作为通信通道的控制权的请求指令,响应于所述请求指令,获取所述通信通道的占用信息;
若基于所述通信通道的占用信息确认所述通信通道未被占用,为所述第一主机分配所述通信通道的控制权,使所述第一主机按照如权利要求1-7中任一项所述的方法进行数据传输。
9.根据权利要求8所述的方法,其特征在于,所述共享寄存器包括控制寄存器和数据寄存器,所述待传输数据被写入所述数据寄存器;
所述若接收到作为发送端的第一主机发送的请求占用所述共享寄存器作为通信通道的控制权的请求指令,响应于所述请求指令,获取所述通信通道的占用信息,包括:
若作为发送端的第一主机请求占用所述通信通道的控制权,获取所述控制寄存器中第四字段的值;
若所述控制寄存器中第四字段的值表征所述通信通道未被占用,将所述第四字段的值赋值为所述第一主机的标识,以指示所述通信通道的控制权被所述分配给所述第一主机。
10.一种数据传输装置,其特征在于,应用于数据传输系统的多个主机中作为发送端的第一主机,其特征在于,数据传输系统还包括数据处理器,所述数据处理器中设置有供所述多个主机访问的共享寄存器,所述装置包括:
指令发送模块,用于向所述数据处理器发送请求所述共享寄存器作为通信通道的控制权的请求指令,以使所述数据处理器响应于请求指令,在确认所述通信通道未被占用时为所述第一主机分配所述通信通道的控制权;
标识写入模块,用于在所述第一主机具有所述通信通道的控制权的情况下,向所述共享寄存器中写入作为接收端的第二主机的主机标识,以使所述第二主机基于所述共享寄存器中的第二主机的主机标识确定自身作为接收端后准备接收数据;
数据写入模块,用于在确定所述第二主机已准备接收数据后,向所述共享寄存器中写入待传输数据,以使所述第二主机从所述共享寄存器中读取所述待传输数据。
11.一种数据传输装置,应用于数据传输系统中的数据处理器,其特征在于,所述数据处理器中设有供多个主机访问的共享寄存器;所述装置包括:
信息获取模块,用于在接收到作为发送端的第一主机发送的请求占用所述共享寄存器作为通信通道的控制权的请求指令时,响应于所述请求指令,获取所述通信通道的占用信息;
控制权分配模块,用于在基于所述通信通道的占用信息确认所述通信通道未被占用时,为所述第一主机分配所述通信通道的控制权,使所述第一主机利用权利要求10中的数据传输装置进行数据传输。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-7或8-9中任意一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7或8-9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311478532.1A CN117453615A (zh) | 2023-11-07 | 2023-11-07 | 数据传输方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311478532.1A CN117453615A (zh) | 2023-11-07 | 2023-11-07 | 数据传输方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117453615A true CN117453615A (zh) | 2024-01-26 |
Family
ID=89587171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311478532.1A Pending CN117453615A (zh) | 2023-11-07 | 2023-11-07 | 数据传输方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453615A (zh) |
-
2023
- 2023-11-07 CN CN202311478532.1A patent/CN117453615A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3385835B1 (en) | Method and apparatus for configuring accelerator | |
CN110312283B (zh) | 一种信息处理方法及装置 | |
TWI717373B (zh) | 用於通用序列匯流排2.0頻寬保留之方法及系統 | |
CN111614527B (zh) | 一种hinoc终端上线方法、装置、存储介质及终端 | |
CN115357535A (zh) | 一种虚拟串口设计方法及装置 | |
CN113535319A (zh) | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 | |
US20050125563A1 (en) | Load balancing device communications | |
CN112491978B (zh) | 一种调度方法和设备 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
US20040001470A1 (en) | Method for controlling wireless network access through wired network access interface and associated computer system | |
EP2929444B1 (en) | Apparatus and circuit for processing data | |
CN117453615A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
CN112311694A (zh) | 一种优先级调整方法及装置 | |
CN115941382A (zh) | 一种spi通信的流控方法、装置、终端设备及存储介质 | |
CN104850517B (zh) | 一种dma传输报文数据的方法及装置 | |
CN116743524A (zh) | 一种用于传输数据的方法及系统、主模块 | |
KR100285953B1 (ko) | 패킷버스및이를이용하여패킷데이터를전송하는장치및방법 | |
EP2017740B1 (en) | Method for data transfer between host and device | |
CN113535370A (zh) | 一种实现负载均衡的多rdma网卡虚拟化的方法、设备 | |
CN113162990B (zh) | 消息发送方法、装置、设备和存储介质 | |
CN111867082A (zh) | 一种侧行链路逻辑信道的复用方法及装置 | |
CN111124987B (zh) | 一种基于pcie的数据传输控制系统和方法 | |
WO2022062856A1 (zh) | 资源管理方法及装置 | |
CN115189977B (zh) | 一种基于axi协议的广播传输方法、系统及介质 | |
CN117234998B (zh) | 一种多主机数据访问方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |