CN113609041A - 一种数据传输方法及系统 - Google Patents
一种数据传输方法及系统 Download PDFInfo
- Publication number
- CN113609041A CN113609041A CN202110682683.3A CN202110682683A CN113609041A CN 113609041 A CN113609041 A CN 113609041A CN 202110682683 A CN202110682683 A CN 202110682683A CN 113609041 A CN113609041 A CN 113609041A
- Authority
- CN
- China
- Prior art keywords
- descriptor
- pointer
- data
- descriptor pointer
- transmitted
- 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 82
- 238000000034 method Methods 0.000 title claims abstract description 34
- 239000000872 buffer Substances 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种数据传输方法及系统,方法包括:获取缓存空间内的第一描述符指针和第二描述符指针并基于第一描述符指针和第二描述符指针判断缓存空间是否可用;若是缓存空间可用,则将待传输数据传输到缓存空间并生成描述符;基于待传输数据的数量和缓存空间的属性更新第一描述符指针;基于描述符读取待传输数据并更新第二描述符指针,并判断第二描述符指针是否等于第一描述符指针,若是等于,则数据传输结束。通过本发明的方案,能够对缓存空间循环利用,解决了DMA的块传输方式需要大块的缓存空间的问题,节省了缓存空间,实现了数据的快速传输。
Description
技术领域
本发明涉及数据传输技术领域,尤其涉及一种数据传输方法及系统。
背景技术
服务器上集成了越来越多的传感器及智能设备,传统的系统管理总线(SystemManagement Bus,简称SMBus)传输速度慢,结构单一,容易发生拥堵,对这些设备的监控、管理及升级成为了服务器基板管理控制器(Baseboard Manager Controller,简称BMC)的一个问题。管理组件传输协议(Management Component Transport Protocol,简称MCTP)是一种与媒体无关的协议,该协议仅定义了传输层消息,与传输总线的物理层及链路层无关,即MCTP消息是作为数据载荷封装在其它总线的传输层消息中。将MCTP消息封装在高速的扩展总线中进行传输,能够达到传输速度快、效率高的目的,从而解决了传统的系统管理总线传输速度慢,结构单一,容易发生拥堵的问题。但是MCTP协议并没有定义如何控制数据的传输,因此迫切需要一种数据传输方法,能够使MCTP消息能够在处理器与外部设备之间快速传输,解决了传统的系统管理总线传输速度慢,结构单一,容易发生拥堵的问题。
DMA(Direct Memory Access,直接内存访问)是一种数据传输操作,相对于非DMA方式,DMA数据搬移速度更快,能够实现成批数据的快速传送,更能匹配高速的总线。但传统的基于block(块)的DMA传输方式需要大块的缓存空间,且要求传输的数据个数应该是16字节的倍数。如果传送大小或者DMA计数值不是16的倍数,则DMA将不能完整地传送完数据。因此本发明提出了一种基于链表的DMA数据传输方法,使缓存空间可以循环利用,不需要限制要传送数据的大小,且不需大块的缓存空间。
发明内容
本发明提出了一种数据传输方法及系统,解决了基于block的DMA传输方式需要大块的缓存空间,节省了缓存空间,实现了数据的快速传输。
基于上述目的,本发明一方面提供了一种数据传输方法,具体包括如下步骤:
获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用;
若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
在一些实施方式中,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用,还包括:
获取所述缓存空间内的所述第一描述符指针和所述第二描述符指针,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用。
在一些实施方式中,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用,包括:
对所述第一描述符指针和所述第二描述符指针进行比较;
若是所述第一描述符指针加1不等于所述第二描述符指针,则所述缓存空间可用。
在一些实施方式中,获取缓存空间内的第一描述符指针和第二描述符指针,包括:
若是为首次进行数据传输,将所述缓存空间内的所述第一描述符指针和所述第二描述符指针配置为0。
在一些实施方式中,基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针,包括:
将获取到的所述第一描述符指针加上所述待传输数据的数量并对缓存空间的大小取余以在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针。
在一些实施方式中,所述描述符包括:缓存地址。
在一些实施方式中,基于所述描述符读取所述待传输数据,包括:
从所述描述符的所述缓存地址中,读取待传输数据。
在一些实施方式中,基于所述描述符读取所述待传输数据并更新所述第二描述符指针包括:
响应于每个缓存地址对应的所述待传输数据读取完毕,将当前所述第二描述符指针加1得到更新后的所述第二描述符指针。
在一些实施方式中,方法还包括:
在数据传输结束后,生成中断信号以等待进行下一次数据传输;
响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用。
本发明另一方面,还提供了一种数据传输系统,数据传输系统包括:
获取模块,所述获取模块配置为获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用;
传输模块,所述传输模块配置为若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
配置模块,所述配置模块配置为基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
读取模块,所述读取模块配置为基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
判断模块,所述判断模块配置为若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
本发明具有以下有益技术效果:通过本发明的数据传输方法,可以实现缓存空间的循环利用,解决了基于block的DMA传输方式需要大块的缓存空间,节省了缓存空间,实现了数据的快速传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的数据传输方法的一实施例的框图;
图2为本发明提供的数据传输系统的一实施例的示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种数据传输方法的实施例。如图1所示,其包括如下步骤:
S1、获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用;
S2、若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
S3、基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
S4、基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
S5、若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
根据本发明的实施例,利用缓存空间内的第一描述符指针和第二描述符指针,实现了缓存空间的循环利用,节省了读写数据的缓存空间,实现了数据的快速传输。
具体的,以一次数据发送的数据传输过程为例,当有数据发送时,假设发送描述符的缓存空间首地址为0x8000_0000,发送描述符的缓存空间的大小为8条,每条描述符占用8字节,需要发送两包数据,第一描述符指针为2和第二描述符指针为2,其中,第一描述符指针定义为发送描述符写入指针(TX Descriptor Write Pointer),第二描述符指针定义为发送描述符读取指针(TX Descriptor Read Pointer),基于TX Descriptor WritePointer和TX Descriptor Read Pointer判断缓存空间可用,将两包待发送数据传输到描述符对应的缓存空间,根据两包待发送数据生成两条描述符,根据获取到的TX DescriptorWrite Pointer、待传输数据和缓存空间配置所述待传输数据传输到所述缓存空间后的TXDescriptor Write Pointer,比如,可以将TX Descriptor Write Pointer配置为当前获取到的TX Descriptor Write Pointer+待发送数据的数量并判断是否小于缓存空间的大小,如果小于,则将TX Descriptor Write Pointer配置为当前获取到的TX Descriptor WritePointer+待发送数据的数量,即2+2=4;还可以将TX Descriptor Write Pointer配置为当前获取到的TX Descriptor Write Pointer+待发送数据的数量并对缓存空间的大小取余,即将TX Descriptor Write Pointer配置为(2+2)%8=4;假设第一条描述符的缓存地址为0x8000_0010,以DMA方式,从第一条描述符对应的缓存地址中,读取第一包待发送数据,更新TX Descriptor Read Pointer=3,判断TX Descriptor Write Pointer≠3,继续从第二条描述符对应的缓存地址中,读取第二包待发送数据,更新TX Descriptor Read Pointer=4,判断TX Descriptor Write Pointer=4,则数据发送完成。
需要说明的是,不限于使用上述具体实施方式中的基于获取到的第一描述符指针、待传输数据的数量和缓存空间的大小的方式,来更新待传输数据传输到缓存空间后的第一描述符指针,还可以基于获取到的第一描述符指针、待传输数据和缓存空间的属性的一些其他方式,来更新待传输数据传输到缓存空间后的第一描述符指针。
更进一步的,如果缓存空间不可用,则表示缓存空间已被完全使用,需要等待缓存空间中数据被读走,再将待发送数据传输给存储空间以防止原来的数据被覆盖。
在一些实施例中,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用,还包括:
获取所述缓存空间内的所述第一描述符指针和所述第二描述符指针,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用。
在一些实施例中,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用,包括:
对所述第一描述符指针和所述第二描述符指针进行比较;
若是所述第一描述符指针加1不等于所述第二描述符指针,则所述缓存空间可用。
具体的,如果当前第一描述符指针等于2,第二描述符指针等于1,则缓存空间可用;如果当前第一描述符指针等于1,第二描述符指针等于2,则缓存空间不可用。
在一些实施例中,获取缓存空间内的第一描述符指针和第二描述符指针,包括:
若是为首次进行数据传输,将所述缓存空间内的所述第一描述符指针和所述第二描述符指针配置为0。
具体的,如果为首次进行数据传输,则配置第一描述符指针等0,第二描述符指针等于0。
在一些实施例中,基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针,包括:
将获取到的所述第一描述符指针加上所述待传输数据的数量并对缓存空间的大小取余以在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针。
具体的,如果待传输数据的数量为7,获取到的第一描述符指针为2,缓存空间大小为8,则需要配置第一描述符指针为(2+7)%8=1。
在一些实施例中,所述描述符包括:缓存地址。
具体的,每一条描述符对应一个缓存地址,并且每一条描述符占用8字节。
在一些实施例中,基于所述描述符读取所述待传输数据,包括:
从所述描述符的所述缓存地址中,读取待传输数据。
具体的,假设一条描述符的缓存地址为0x8000_0000,读取本条描述符包含的待传输数据时,先从0x8000_0000处取出描述符,然后解析描述符得到数据缓存地址、数据包大小等信息,然后以DMA方式,从本条描述符指示的数据缓存地址中取出待传输数据。
在一些实施例中,基于所述描述符读取所述待传输数据并更新所述第二描述符指针包括:
响应于每个缓存地址对应的所述待传输数据读取完毕,将当前所述第二描述符指针加1得到更新后的所述第二描述符指针。
具有的,假设当前第二描述符指针为2,有5条描述符中有待传输数据,当第1条描述符中的待传输数据读取完,将当前第二描述符指针加1,即2+1=3,得到更新后的第二描述符指针为3,然后继续读取其他描述符,直到5条描述符都读取完,此时得到的更新后的第二描述符指针为7。
在一些实施例中,方法还包括:
在数据传输结束后,生成中断信号以等待进行下一次数据传输;
响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用。
进一步的,响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用,还包括:
获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用;
若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
基于所述待传输数据和所述缓存空间配置所述待传输数据传输到所述缓存空间后的所述第一描述符指针;
基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
以从内存发送数据的数据传输过程为例,对本发明的若干实施例进行说明。
假设发送描述符的缓存空间首地址为0x8000_0000,发送描述符的缓存空间的大小为8条,每条描述符占用8字节,缓存空间里的数据为空,是第一次从内存发送数据到硬件寄存器,需要发送两包数据,具体传输流程如下:
配置第一描述符指针为0和第二描述符指针为0,其中,第一描述符指针定义为发送描述符写入指针(TX Descriptor Write Pointer),第二描述符指针定义为发送描述符读取指针(TX Descriptor Read Pointer);
基于TX Descriptor Write Pointer和TX Descriptor Read Pointer判断缓存空间可用,开始传输数据;
将两包待发送数据传输到描述符对应的缓存空间,根据两包待发送数据生成两条描述符;
根据获取到的TX Descriptor Write Pointer、待发送数据的数量和缓存空间的大小配置所述待发送数据传输到所述缓存空间后的TX Descriptor Write Pointer为2,即(0+2)%8=2;
配置硬件寄存器为1,开始从缓存空间读取待发送数据;
从0x8000_0000处取出第一条描述符,解析描述符内容得到待发送数据的数据缓存地址,从描述符指示的数据缓存地址中取出指定长度数据,即待发送数据;
将TX Descriptor Read Pointer加1,并判断TX Descriptor Read Pointer是否等于TX Descriptor Write Pointer;
TX Descriptor Read Pointer不等于TX Descriptor Write Pointer,从0x8000_0008处取出第二条描述符,解析描述符内容,从第二条描述符指示的数据缓存地址取出指定长度数据;
将TX Descriptor Read Pointer加1,并判断TX Descriptor Read Pointer是否等于TX Descriptor Write Pointer;
第一次数据发送完成状态并产生中断信号。
下面开始第二次发送数据,假设需要发送7包数据,具体过程如下:
经过第一次数据传输,获取到的TX Descriptor Write Pointer为2,TXDescriptor Read Pointer为2;
比较TX Descriptor Write Pointer和TX Descriptor Read Pointer判断有数据缓存空间可用,开始传输数据;
将要发送的7包数据,写入缓存空间,生成7条描述符;
配置TX Descriptor Write Pointer=(2+7)%8=1;
配置硬件寄存器TX Start=1;
从0x8000_0010处取出第一条描述符,解析描述符内容得到待发送数据的数据缓存地址,从描述符指示的数据缓存地址中取出指定长度数据;
将TX Descriptor Read Pointer加1,并判断TX Descriptor Read Pointer是否等于TX Descriptor Write Pointer;
TX Descriptor Read Pointer不等于TX Descriptor Write Pointer,重复读取至前五条描述符传输完成,此时TX Descriptor Read Pointer=7;
TX Descriptor Read Pointer不等于TX Descriptor Write Pointer,从0x8000_0038处取出第六条描述符,解析描述符内容,从第六条描述符指示的数据缓存地址取出指定长度数据;
将TX Descriptor Read Pointer设置为(7+1)%8=0,并判断TX DescriptorRead Pointer是否等于TX Descriptor Write Pointer;
TX Descriptor Read Pointer不等于TX Descriptor Write Pointer,从0x8000_0000处取出第七条描述符,解析描述符内容,从第七条描述符指示的数据缓存地址取出指定长度数据;
将TX Descriptor Read Pointer加1,并判断TX Descriptor Read Pointer是否等于TX Descriptor Write Pointer;
第二次数据发送完成状态并产生中断信号。
还可以以从内存接收数据传输过程为例,对本发明的若干实施例进行说明。
假设接收描述符的缓存空间首地址为0x4000_0000,接收描述符的缓存空间的大小为8条,每条描述符占用8字节,需要接收两包数据,具体传输流程如下:
配置第一描述符指针为0和第二描述符指针为0,其中,第一描述符指针定义为接收描述符读取指针(RX Descriptor Read Pointer),第二描述符指针定义为接收描述符写入指针(RX Descriptor Write Pointer);
基于RX Descriptor Read Pointer和RX Descriptor Write Pointer判断缓存空间可用,开始数据传输;
将两包待接收数据传输到描述符对应的缓存空间,根据两包待接收数据生成两条描述符;
根据获取到的RX Descriptor Read Pointer、待接收数据的数量和缓存空间的大小配置所述待接收数据传输到所述缓存空间后的RX Descriptor Read Pointer为2,即(0+2)%8=2;
配置硬件寄存器为1,开始向缓存空间写入待接收数据;
从0x4000_0000处取出第一条描述符,解析描述符内容得到待接收数据的数据缓存地址,从描述符指示的数据缓存地址中取出指定长度数据,即待接收数据,写入内存;
将RX Descriptor Write Pointer加1,并判断RX Descriptor Write Pointer是否等于RX Descriptor Read Pointer;
RX Descriptor Write Pointer不等于RX Descriptor Read Pointer,从0x8000_0008处取出第二条描述符,解析描述符内容,从第二条描述符指示的数据缓存地址取出指定长度数据,写入内存;
将RX Descriptor Write Pointer加1,并判断RX Descriptor Write Pointer是否等于RX Descriptor Read Pointer;
RX Descriptor Write Pointer等于RX Descriptor Read Pointer,数据接收完成并产生中断信号。
基于同一发明构思,根据本发明的另一个方面,提出了一种数据传输系统的实施例,如图2所示,数据传输系统包括:
获取模块110,所述获取模块配置为获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用;
传输模块120,所述传输模块配置为若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
配置模块130,所述配置模块配置为基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
读取模块140,所述读取模块配置为基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
判断模块150,所述判断模块配置为若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
在一些实施方式中,获取模块110进一步配置为:
获取所述缓存空间内的所述第一描述符指针和所述第二描述符指针,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用。
在一些实施方式中,获取模块110进一步配置为::
对所述第一描述符指针和所述第二描述符指针进行比较;
若是所述第一描述符指针加1不等于所述第二描述符指针,则所述缓存空间可用。
在一些实施方式中,获取模块110进一步配置为:
若是为首次进行数据传输,将所述缓存空间内的所述第一描述符指针和所述第二描述符指针配置为0。
在一些实施方式中,配置模块130进一步配置为:
将获取到的所述第一描述符指针加上所述待传输数据的数量并对缓存空间的大小取余以在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针。
在一些实施方式中,配置模块140进一步配置为:
从所述描述符的所述缓存地址中,读取待传输数据。
在一些实施方式中,配置模块140进一步配置为:
基于所述描述符读取所述待传输数据并更新所述第二描述符指针包括:
响应于每个缓存地址对应的所述待传输数据读取完毕,将当前所述第二描述符指针加1得到更新后的所述第二描述符指针。
在一些实施方式中,判断模块150进一步配置为:
在数据传输结束后,生成中断信号以等待进行下一次数据传输;
响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用。
在一些实施例中,本发明还可以提供一种计算机设备,计算机设备包括:
处理器;
以及存储器,存储器上存储有可在处理器上运行的计算机程序,处理器执行程序时执行以下步骤:
S1、获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用;
S2、若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
S3、基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
S4、基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
S5、若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
在一些实施方式中,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用,还包括:
获取所述缓存空间内的所述第一描述符指针和所述第二描述符指针,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用。
在一些实施方式中,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用,包括:
对所述第一描述符指针和所述第二描述符指针进行比较;
若是所述第一描述符指针加1不等于所述第二描述符指针,则所述缓存空间可用。
在一些实施方式中,获取缓存空间内的第一描述符指针和第二描述符指针,包括:
若是为首次进行数据传输,将所述缓存空间内的所述第一描述符指针和所述第二描述符指针配置为0。
在一些实施方式中,基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针,包括:
将获取到的所述第一描述符指针加上所述待传输数据的数量并对缓存空间的大小取余以在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针。
在一些实施方式中,所述描述符包括:缓存地址。
在一些实施方式中,基于所述描述符读取所述待传输数据,包括:
从所述描述符的所述缓存地址中,读取待传输数据。
在一些实施方式中,基于所述描述符读取所述待传输数据并更新所述第二描述符指针包括:
响应于每个缓存地址对应的所述待传输数据读取完毕,将当前所述第二描述符指针加1得到更新后的所述第二描述符指针。
在一些实施方式中,步骤还包括:
在数据传输结束后,生成中断信号以等待进行下一次数据传输;
响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用。
在一些实施例中,本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行如上的任一种数据传输方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种数据传输方法,其特征在于,包括:
获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用;
若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
2.根据权利要求1所述的方法,其特征在于,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用,还包括:
获取所述缓存空间内的所述第一描述符指针和所述第二描述符指针,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用。
3.根据权利要求2所述的方法,其特征在于,对所述第一描述符指针和所述第二描述符指针进行比较以判断所述缓存空间是否可用,包括:
对所述第一描述符指针和所述第二描述符指针进行比较;
若是所述第一描述符指针加1不等于所述第二描述符指针,则所述缓存空间可用。
4.根据权利要求1所述的方法,其特征在于,获取缓存空间内的第一描述符指针和第二描述符指针,包括:
若是为首次进行数据传输,将所述缓存空间内的所述第一描述符指针和所述第二描述符指针配置为0。
5.根据权利要求1所述的方法,其特征在于,基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针,包括:
将获取到的所述第一描述符指针加上所述待传输数据的数量并对缓存空间的大小取余以在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针。
6.根据权利要求1所述的方法,其特征在于,所述描述符包括:缓存地址。
7.根据权利要求1所述的方法,其特征在于,基于所述描述符读取所述待传输数据,包括:
从所述描述符的所述缓存地址中,读取待传输数据。
8.根据权利要求7所述的方法,其特征在于,基于所述描述符读取所述待传输数据并更新所述第二描述符指针包括:
响应于每个缓存地址对应的所述待传输数据读取完毕,将当前所述第二描述符指针加1得到更新后的所述第二描述符指针。
9.根据权利要求1所述的方法,其特征在于,还包括:
在数据传输结束后,生成中断信号以等待进行下一次数据传输;
响应于进行下一次数据传输,获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和所述第二描述符指针判断所述缓存空间是否可用。
10.一种数据传输系统,其特征在于,包括:
获取模块,所述获取模块配置为获取缓存空间内的第一描述符指针和第二描述符指针并基于所述第一描述符指针和第二描述符指针判断所述缓存空间是否可用;
传输模块,所述传输模块配置为若是所述缓存空间可用,则将待传输数据传输到所述缓存空间并生成描述符;
配置模块,所述配置模块配置为基于所述待传输数据和所述缓存空间的属性在所述待传输数据传输到所述缓存空间后更新所述第一描述符指针;
读取模块,所述读取模块配置为基于所述描述符读取所述待传输数据并更新所述第二描述符指针,并判断所述第二描述符指针是否等于所述第一描述符指针;
判断模块,所述判断模块配置为若是所述第二描述符指针等于所述第一描述符指针,则数据传输结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110682683.3A CN113609041A (zh) | 2021-06-20 | 2021-06-20 | 一种数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110682683.3A CN113609041A (zh) | 2021-06-20 | 2021-06-20 | 一种数据传输方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113609041A true CN113609041A (zh) | 2021-11-05 |
Family
ID=78336627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110682683.3A Pending CN113609041A (zh) | 2021-06-20 | 2021-06-20 | 一种数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113609041A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963946B1 (en) * | 2003-10-01 | 2005-11-08 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data between a host and a peripheral |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN106533652A (zh) * | 2015-09-15 | 2017-03-22 | 中兴通讯股份有限公司 | 一种基于xts-sm4的存储加解密方法及装置 |
CN108108130A (zh) * | 2017-12-22 | 2018-06-01 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘读写性能的方法及固态硬盘 |
-
2021
- 2021-06-20 CN CN202110682683.3A patent/CN113609041A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963946B1 (en) * | 2003-10-01 | 2005-11-08 | Advanced Micro Devices, Inc. | Descriptor management systems and methods for transferring data between a host and a peripheral |
US20060288129A1 (en) * | 2005-06-17 | 2006-12-21 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN106533652A (zh) * | 2015-09-15 | 2017-03-22 | 中兴通讯股份有限公司 | 一种基于xts-sm4的存储加解密方法及装置 |
CN108108130A (zh) * | 2017-12-22 | 2018-06-01 | 深圳忆联信息系统有限公司 | 一种提升固态硬盘读写性能的方法及固态硬盘 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117834570A (zh) * | 2024-03-04 | 2024-04-05 | 山东云海国创云计算装备产业创新中心有限公司 | 传输系统的数据包处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5429572B2 (ja) | チェーン化デバイスシステムにおいてパラメータを設定し待ち時間を決定する方法 | |
US6070194A (en) | Using an index and count mechanism to coordinate access to a shared resource by interactive devices | |
US11403247B2 (en) | Methods and apparatus for network interface fabric send/receive operations | |
CN111538694B (zh) | 一种用于网络接口支持多链接和重传的数据缓存方法 | |
CN115396527B (zh) | 一种基于fpga的pcie和srio协议转换系统及方法 | |
US11397612B2 (en) | Autonomous job queueing system for hardware accelerators | |
US20050091390A1 (en) | Speculative method and system for rapid data communications | |
CN113609041A (zh) | 一种数据传输方法及系统 | |
CN116204487A (zh) | 远程数据访问方法及装置 | |
CN113821475A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
US20060184708A1 (en) | Host controller device and method | |
CN112422485B (zh) | 一种传输控制协议的通信方法及装置 | |
US9817784B2 (en) | Multi-port transmitter device for transmitting at least partly redundant data, an associated control system, an associated method and an associated computer program product | |
US8041902B2 (en) | Direct memory move of multiple buffers between logical partitions | |
CN113485951B (zh) | 一种基于fpga的dma读操作实现方法、fpga设备以及通信系统 | |
CN116136790A (zh) | 任务处理方法和装置 | |
CN110489361B (zh) | 兼容sram总线的i3c接口电路 | |
US7577560B2 (en) | Microcomputer logic development device | |
CN113157610B (zh) | 数据保存方法及装置、存储介质、电子装置 | |
CN115842790B (zh) | 一种应用于PCIe设备的业务数据流量控制方法 | |
CN116684506B (zh) | 数据处理方法、系统、电子设备及计算机可读存储介质 | |
EP4283468A1 (en) | Data transmission system and related device | |
JP3058010B2 (ja) | プロセッサ間通信方法及び装置 | |
WO2024082563A1 (zh) | 射频前端控制方法、装置、设备及计算机可读存储介质 | |
CN117807011A (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 |