一种数据回写方法及装置转让专利

申请号 : CN201710289082.X

文献号 : CN107102822B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任晓瑶任红军

申请人 : 杭州迪普科技股份有限公司

摘要 :

本申请提供一种数据回写方法及装置,应用于PCIE设备,所述方法包括:向DMA控制器发送对应于目标数据的DMA请求,然后统计与所述DMA请求对应的数据回写时长;并基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长。在本申请中,PCIE设备通过根据数据回写时长动态设置向DMA控制器发送下一个DMA请求的延时时长,从而能够随PCIE总线的当前的带宽使用情况动态地调整数据回写速率,解决了当PCIE总线中存在PCIE设备热插拔的情况时,PCI设备在数据回写时出现超时或带宽浪费的问题。

权利要求 :

1.一种数据回写方法,应用于PCIE设备,其特征在于,包括:向DMA控制器发送对应于目标数据的DMA请求;

统计与所述DMA请求对应的数据回写时长,所述数据回写时长为,从PCIE设备发送所述DMA请求开始,到PCIE设备确定与上述DMA请求对应的数据回写完成的时长;

基于统计出的与所述DMA请求对应的数据回写时长和当前PCIE总线可用带宽大小,动态设置向所述DMA控制器发送下一个DMA请求的延时时长,所述延时时长与所述可用带宽大小负相关。

2.根据权利要求1所述的方法,其特征在于,所述统计与所述DMA请求对应的数据回写时长,包括:在向DMA控制器发送DMA请求后,启动预设的定时器开始计时;

确定与所述DMA请求对应的数据回写是否完成;

如果与所述DMA请求对应的数据回写完成后,停止所述定时器,根据所述定时器的计时结果,获得所述数据回写时长。

3.根据权利要求2所述的方法,其特征在于,所述确定与所述DMA请求对应的数据回写是否完成,包括:确定是否接收到所述DMA控制器返回的数据回写完成的信号;

如果接收到所述DMA控制器返回的数据回写完成的信号时,确定与所述DMA请求对应的数据回写完成。

4.根据权利要求1所述的方法,其特征在于,所述延时时长与所述数据回写时长成正比。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:确定所述目标数据是否全部回写完成;

如果否,则在所述延时时长超时后,向所述DMA控制器发送对应于所述目标数据的下一个DMA请求。

6.一种数据回写装置,应用于PCIE设备,其特征在于,包括:请求单元,用于向DMA控制器发送对应于目标数据的DMA请求;

计时单元,用于统计与所述DMA请求对应的数据回写时长,所述数据回写时长为,从PCIE设备发送所述DMA请求开始,到PCIE设备确定与上述DMA请求对应的数据回写完成的时长;

设置单元,用于基于统计出的与所述DMA请求对应的数据回写时长和当前PCIE总线可用带宽大小,动态设置向所述DMA控制器发送下一个DMA请求的延时时长,所述延时时长与所述可用带宽大小负相关。

7.根据权利要求6所述的装置,其特征在于,所述计时单元,进一步用于:在向DMA控制器发送DMA请求后,启动预设的定时器开始计时;

确定与所述DMA请求对应的数据回写是否完成;

如果与所述DMA请求对应的数据回写完成后,停止所述定时器,根据所述定时器的计时结果,获得所述数据回写时长。

8.根据权利要求7所述的装置,其特征在于,所述计时单元,进一步用于:确定是否接收到所述DMA控制器返回的数据回写完成的信号;

如果接收到所述DMA控制器返回的数据回写完成的信号时,确定与所述DMA请求对应的数据回写完成。

9.根据权利要求6所述的装置,其特征在于,所述延时时长与所述数据回写时长成正比。

10.根据权利要求6所述的装置,其特征在于,所述装置还包括:确定单元,用于确定所述目标数据是否全部回写完成;

所述请求单元,进一步用于如果否,则在所述延时时长超时后,向所述DMA控制器发送对应于所述目标数据的下一个DMA请求。

说明书 :

一种数据回写方法及装置

技术领域

[0001] 本申请涉及通信技术领域,特别涉及一种数据回写方法及装置。

背景技术

[0002] 现在广泛使用的PCIE(PCI-Express)设备的最大传输速率远大于PCI(Peripheral Component Interconnect,外设部件互联标准)设备的最大传输速率。当PCIE设备与PCI设备共用同一总线时,如果PCIE设备数量较多,则PCIE设备在发送DMA(Direct Memory Access,直接内存存取)请求后进行数据回写时会占用较多带宽,可能会导致PCI设备没有足够的带宽处理业务,从而在发送DMA请求进行数据回写时出现超时。
[0003] 在相关技术中,可以将PCIE设备在每次发送DMA请求间设置固定延时时长,即PCIE设备发送DMA请求,等待数据回写,确定数据回写完成,达到预设的固定延时时长后,再发送下一次DMA请求。通过这个措施,PCIE设备在进行数据回写时,每两次数据回写之间都间隔预设的固定延时时长,因此在针对目标数据进行数据回写时,延长了数据回写的总时长,降低了数据回写速率,进而降低了单位时间内对总线带宽的占用,从而为PCI设备留出足够的带宽处理业务。
[0004] 然而,当PCIE总线中存在PCIE设备或者PCI设备热插拔的情况时,如果PCIE设备较多,则留给PCI设备的带宽可能不够,容易造成PCI设备发包超时;如果PCIE设备较少,则PCIE设备的DMA速率较低,造成带宽的浪费。

发明内容

[0005] 有鉴于此,本申请提供一种数据回写方法及装置,用以解决当PCIE总线中存在PCIE设备热插拔的情况时,造成PCI设备发包超时或带宽浪费的问题。
[0006] 具体地,本申请是通过如下技术方案实现的:
[0007] 一种数据回写方法,应用于PCIE设备,包括:
[0008] 向DMA控制器发送对应于目标数据的DMA请求;
[0009] 统计与所述DMA请求对应的数据回写时长;
[0010] 基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长。
[0011] 在所述数据回写方法中,所述统计与所述DMA请求对应的数据回写时长,包括:
[0012] 在向DMA控制器发送DMA请求后,启动预设的定时器开始计时;
[0013] 确定与所述DMA请求对应的数据回写是否完成;
[0014] 如果与所述DMA请求对应的数据回写完成后,停止所述定时器,根据所述定时器的计时结果,获得所述数据回写时长。
[0015] 在所述数据回写方法中,所述确定与所述DMA请求对应的数据回写是否完成,包括:
[0016] 确定是否接收到所述DMA控制器返回的数据回写完成的信号;
[0017] 如果接收到所述DMA控制器返回的数据回写完成的信号时,确定与所述DMA请求对应的数据回写完成。
[0018] 在所述数据回写方法中,所述延时时长与所述数据回写时长成正比。
[0019] 在所述数据回写方法中,所述方法还包括:
[0020] 确定所述目标数据是否全部回写完成;
[0021] 如果否,则在所述延时时长超时后,向所述DMA控制器发送对应于所述目标数据的下一个DMA请求。
[0022] 一种数据回写装置,应用于PCIE设备,包括:
[0023] 请求单元,用于向DMA控制器发送对应于目标数据的DMA请求;
[0024] 计时单元,用于统计与所述DMA请求对应的数据回写时长;
[0025] 设置单元,用于基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长。
[0026] 在所述数据回写装置中,所述计时单元,进一步用于:
[0027] 在向DMA控制器发送DMA请求后,启动预设的定时器开始计时;
[0028] 确定与所述DMA请求对应的数据回写是否完成;
[0029] 如果与所述DMA请求对应的数据回写完成后,停止所述定时器,根据所述定时器的计时结果,获得所述数据回写时长。
[0030] 在所述数据回写装置中,所述计时单元,进一步用于:
[0031] 确定是否接收到所述DMA控制器返回的数据回写完成的信号;
[0032] 如果接收到所述DMA控制器返回的数据回写完成的信号时,确定与所述DMA请求对应的数据回写完成。
[0033] 在所述数据回写装置中,所述延时时长与所述数据回写时长成正比。
[0034] 在所述数据回写装置中,所述装置还包括:
[0035] 确定单元,用于确定所述目标数据是否全部回写完成;
[0036] 所述请求单元,进一步用于如果否,则在所述延时时长超时后,向所述DMA控制器发送对应于所述目标数据的下一个DMA请求。
[0037] 在本申请实施例中,PCIE设备在向DMA控制器发送对应于目标数据的DMA请求,并统计与所述DMA请求对应的数据回写时长,然后基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长;
[0038] 由于延时时长与数据回写时长相关联,而延时时长直接影响数据回写速率,因此PCIE设备的数据回写速率是随着PCIE总线中的可用带宽动态变化的。当PCIE设备较多,总线的可用带宽较小时,PCIE设备的数据回写速率会减小,为PCI设备留出足够的带宽;当PCIE设备较少,总线的可用带宽较大时,PCIE设备的数据回写速率会变大,有效利用PCIE总线的可用带宽。从而解决了当PCIE总线中存在PCIE设备热插拔的情况时,PCI设备在数据回写时出现超时或带宽浪费的问题。

附图说明

[0039] 图1是本申请示出的一种数据回写方法的流程图;
[0040] 图2是本申请示出的另一种数据回写方法的流程图;
[0041] 图3是本申请示出的一种数据回写装置的实施例框图;
[0042] 图4是本申请示出的一种数据回写装置的硬件结构图。

具体实施方式

[0043] 为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
[0044] 目前计算机通常基于PCIE总线集中管理内部的各种功能部件,各功能部件通过总线相连接。其中,功能部件主要是PCIE设备,也有部分PCI设备通过PCIE-to-PCI桥片与总线连接。
[0045] PCIE设备的最大传输速率远大于PCI设备的最大传输速率,因此,当PCIE设备与PCI设备共用同一总线时,如果PCIE设备数量较多,则可能由于PCIE设备占用较多总线带宽,导致PCI设备可以使用的带宽不足,进而在数据回写过程中出现超时。
[0046] 为解决这个问题,在相关技术中,可以为PCIE设备设置固定延时时长。PCIE设备经配置该固定延时时长后,在发送DMA请求时,等待数据回写,并在确定数据回写完成,并在上述固定延时时长超时后,才会继续发送下一次DMA请求。通过上述措施,PCIE设备在数据回写时,每两次数据回写之间都间隔预设的固定延时时长,因此在针对目标数据进行数据回写时,延长了数据回写的总时长,进而在针对目标数据进行数据回写时,降低了数据回写速率,从而降低了单位时间内对总线带宽的占用,为PCI设备留出足够的带宽处理业务。
[0047] 然而,如果PCIE总线结构不固定,比如,当PCIE总线中存在PCIE设备或者PCI设备热插拔的情况时,总线的带宽使用情况是动态变化的。此时,为PCIE设备设置固定延时时长,不能适用于动态变化的总线带宽使用情况。
[0048] 一方面,如果PCIE总线中的PCIE设备过多时,则PCIE设备即使预设固定延时时长,也会占用大量的总线带宽,使得PCI设备没有足够的带宽处理业务;
[0049] 另一方面,如果PCIE总线中的PCIE设备较少,则PCIE设备始终基于固定延时时长来进行数据回写,并未充分使用总线带宽,造成总线带宽的浪费。
[0050] 可见,相关技术通过为PCIE设备设置固定延时时长的做法,无法有效适用于PCIE总线结构不固定的情况,可能导致PCI设备没有足够的带宽处理业务,或者浪费总线带宽的问题。
[0051] 为解决上述问题,本申请实施例的技术方案,基于每次发送DMA请求后的数据回写时长,动态调整向DMA控制器发送下一个DMA请求的延时时长,然后在该延时时长超时后,继续发送DMA请求。当PCIE总线的当前的可用带宽较大时,数据回写时长较小,相应地,延时时长较小;而当PCIE总线的当前的可用带宽较小时,数据回写时长较大,相应地,延时时长较大。
[0052] 通过动态调整延时时长,PCIE设备可以在PCIE总线的可用带宽较小时,为PCI设备预留足够的带宽用于处理业务,并可以在PCIE总线的可用带宽较大时,合理地利用总线带宽。
[0053] 参见图1,为本申请示出的一种数据回写方法的流程图,该方法应用于PCIE设备,所述方法包括以下步骤:
[0054] 步骤101:向DMA控制器发送对应于目标数据的DMA请求。
[0055] 步骤102:统计与所述DMA请求对应的数据回写时长。
[0056] 步骤103:基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长。
[0057] 其中,上述延时时长,指的是一次数据回写完成,到发送下一个DMA请求之间的时间间隔。
[0058] 上述PCIE设备可以包括基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的PCIE设备。
[0059] 请继续参见图2,为本申请示出的另一种数据回写方法的流程图,图2示出了数据回写方法的全过程,以下结合图1和图2对本申请技术方案进行说明。
[0060] 在本申请实施例中,当PCIE设备需要对目标数据进行数据回写时,可以向DMA控制器发送对应于该目标数据的DMA请求。DMA控制器接收到该DMA请求后,可以基于该DMA请求进行数据回写。
[0061] 需要指出的是,DMA控制器基于DMA请求进行数据回写时,每次回写的数据大小为PCIE设备的有效负载,因此,针对目标数据进行数据回写时,需进行多次操作才能最终完成数据回写。相应地,PCIE设备需要发送多次DMA请求。比如,如果PCIE设备的有效负载是256字节,当目标数据为1MB时,总共需要进行4096次操作,相应地,PCIE设备需要发送4096次DMA请求。
[0062] 在本申请实施例中,PCIE设备在发送DMA请求后,可以统计与该DMA请求对应的数据回写时长。
[0063] 在示出的一种实施方式中,PCIE设备可以预设定时器,并在向DMA控制器发送DMA请求时,启动该定时器开始计时。然后PCIE设备可以确定与上述DMA请求对应的数据回写是否完成,当PCIE设备确定与上述DMA请求对应的数据回写完成后,可以停止该定时器,然后根据定时器的计时结果,获得与上述DMA请求对应的数据回写时长。
[0064] 在示出的另一种实施方式中,PCIE设备可以在向DMA控制器发送DMA请求时,记录当前计算机的系统时间。然后PCIE设备确定与上述DMA请求对应的数据回写是否完成,当PCIE设备确定与上述DMA请求对应的数据回写完成后,可以再记录当前计算机的系统时间,然后根据两次系统时间的差值,获得与上述DMA请求对应的数据回写时长。
[0065] 需要说明的是,DMA控制器在完成数据回写后,会向PCIE设备发送DMA结束信号。因此,PCIE设备在确定与上述DMA请求对应的数据回写是否完成时,可以确定是否接收到上述DMA控制器发送的表明数据回写完成的DMA结束信号,如果没有接收到DMA结束信号,则数据回写未完成;如果接收到DMA结束信号,则表明与上述DMA请求对应的数据回写已经完成。
[0066] 在本申请实施例中,PCIE设备在获得与上述DMA请求对应的数据回写时长后,基于该数据回写时长,动态设置向上述DMA控制器发送下一个DMA请求的延时时长。
[0067] 在示出的一种实施方式中,当PCIE设备获得对应于上述DMA请求的数据回写时长后,可以基于预设的算法,计算该数据回写时长,从而获得延时时长,然后将该延时时长设置为向上述DMA控制器发送下一个DMA请求的延时时长。
[0068] 需要指出的是,在一定的范围之内,PCIE总线的当前的可用带宽越大,则DMA控制器用于数据回写的带宽就越大,数据回写时长就越小。因此,数据回写时长与PCIE总线的当前的可用带宽成反比。而PCIE设备可以基于PCIE总线的当前的可用带宽调整延时时长,在当前的可用带宽较大时,减少延时时长,在当前的可用带宽较小时,增加延时时长。因此,PCIE设备根据预设的算法计算出的上述延时时长与上述数据回写时长成正比。
[0069] 在本申请实施例中,PFGA获得上述延时时长后,可以确定上述目标数据是否全部回写完成。
[0070] 具体的,PCIE设备计算获得上述延时时长,并在上述延时时长超时后,即在延时达到上述延时时长后,比较预先获得的上述目标数据的大小与此前累积的回写完成的数据大小是否一致;
[0071] 一方面,如果上述目标数据的大小大于此前累积的回写完成的数据大小,说明对上述目标数据尚未全部回写完成,此时,PCIE设备可以继续向DMA控制器发送对应于上述目标数据的下一个DMA请求,并在发送DMA请求后开始计时,后续过程如前所述,在此不再赘述;
[0072] 另一方面,如果上述目标数据的大小与此前累计回写完成的数据大小一致,说明对上述目标数据已经全部回写完成,此时,PCIE设备不再针对上述目标数据发送DMA请求。
[0073] 综上所述,在本申请实施例中,PCIE设备需要对目标数据进行回写时,可以向DMA控制器发送对应于该目标数据的DMA请求,然后统计与上述DMA请求对应的数据回写时长,并基于统计出的与上述DMA请求对应的数据回写时长,动态设置向上述DMA控制器发送下一个DMA请求的延时时长;
[0074] 由于在本申请中,延时时长基于数据回写时长动态设置,而数据回写时长随PCIE总线的当前的可用带宽变化,因此PCIE设备可以随总线的当前可用带宽动态调整数据回写速率;
[0075] 一方面,当PCIE总线中的PCIE设备较多,当前的可用带宽较小时,数据回写时长较大,计算得到的延时时长较大,则PCIE设备数据回写速率下降,从而降低了对总线带宽的占用,为PCI设备留出足够的带宽处理业务;
[0076] 另一方面,当PCIE总线中的PCIE设备或PCI设备较少,当前的可以带宽较大时,计算得到的延时时长较小,则PCI设备数据回写速率上升,从而合理使用总线当前的可用带宽。
[0077] 与上述数据回写方法的实施例相对应,本申请还提供了数据回写装置的实施例。
[0078] 参见图3,为本申请示出的一种数据回写装置的实施例框图:
[0079] 如图3所示,该数据回写装置30包括:
[0080] 请求单元310,用于向DMA控制器发送对应于目标数据的DMA请求。
[0081] 计时单元320,用于统计与所述DMA请求对应的数据回写时长。
[0082] 设置单元330,用于基于统计出的与所述DMA请求对应的数据回写时长,动态设置向所述DMA控制器发送下一个DMA请求的延时时长。
[0083] 在本例中,所述计时单元320,进一步用于:
[0084] 在向DMA控制器发送DMA请求后,启动预设的定时器开始计时;
[0085] 确定与所述DMA请求对应的数据回写是否完成;
[0086] 如果与所述DMA请求对应的数据回写完成后,停止所述定时器,根据所述定时器的计时结果,获得所述数据回写时长。
[0087] 在本例中,所述计时单元320,进一步用于:
[0088] 确定是否接收到所述DMA控制器返回的数据回写完成的信号;
[0089] 如果接收到所述DMA控制器返回的数据回写完成的信号时,确定与所述DMA请求对应的数据回写完成。
[0090] 在本例中,所述延时时长与所述数据回写时长成正比。
[0091] 在本例中,所述装置还包括:
[0092] 确定单元340,用于确定所述目标数据是否全部回写完成。
[0093] 所述请求单元310,进一步用于如果否,则在所述延时时长超时后,向所述DMA控制器发送对应于所述目标数据的下一个DMA请求。
[0094] 本申请数据回写装置的实施例可以应用在PCIE设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在PCIE设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请数据回写装置所在PCIE设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的PCIE设备通常根据该数据回写装置的实际功能,还可以包括其他硬件,对此不再赘述。
[0095] 上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0096] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0097] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。