本发明涉及数据处理,特别是涉及一种数据传输方法、装置、计算机设备和存储介质。
背景技术:
1、目前在存储器之间存取数据主要有两种方式,一种是通过cpu(centralprocessing unit,中央处理单元),另一种是通过dma(direct memoryaccess,直接存储器访问)。通过cpu进行数据传输时,cpu先从源地址读取数据,然后将数据写入目的地址,这种方式会占用大量的cpu资源,导致cpu无法高效执行其他任务,进而影响系统的整体性能。通过dma进行数据传输时,dma控制器能够在不经过cpu的情况下,直接在存储器和外设之间传输数据,dma可以在不占用cpu资源的情况下完成大批量的数据传输,能够在后台进行数据传输,从而提高整个系统的并行处理能力。
2、然而,现有的dma传输存在的问题是配置不够灵活。总线上的多个主设备(master)和从设备(slave)可能支持不同的突发大小和突发长度,直接按照固定的突发(burst)大小和长度对所有的传输进行应用,可能会导致总线上挂载的master或slave的写或读出现问题,出现停止传输的情况。dma也可以通过更改全局的突发大小(axsize)、突发长度(axlen),实现修改全局的突发传输数据总量,但是全局配置会降低dma的性能,全局的配置也不便于dma在使用中动态更改。
3、因此,针对现有技术方案的缺点,本发明提供一种数据传输方法。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种数据传输方法、装置、设备和存储介质。
2、一方面,提供一种数据传输方法,所述方法包括:接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中;依次解析每个存储在所述命令配置单元中的直接存储器访问命令,得到被解析的直接存储器访问命令的工作参数,其中所述工作参数包括工作模式、目标地址、突发字节数、数据总量、命令标识和完成标志中至少一项;根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输;监测所述被解析的直接存储器访问命令的数据传输进度,生成所述被解析的直接存储器访问命令的数据传输状态。
3、可选的,所述依次解析每个直接存储器访问命令,包括:根据用户需求,对每个命令配置单元配置权重;根据所述权重,轮询每个命令配置单元;根据所述轮询顺序,依次从每个命令配置单元中获取对应的直接存储器访问命令并解析。
4、可选的,所述根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输,包括:根据所述被解析的直接存储器访问命令的工作参数,确定所述工作模式,其中所述工作模式包括第一工作模式和第二工作模式;当所述工作模式为第一工作模式时,所述目标地址包括第一目标地址和第二目标地址,所述突发字节数包括第一突发字节数和第二突发字节数,根据所述第一目标地址、所述第一突发字节数和所述数据总量,确定第一数据传输方式;通过所述第一数据传输方式,从第一目标地址对应的存储空间中读取数据并存储;根据所述第二目标地址、所述第二突发字节数和所述数据总量,确定第二数据传输方式;通过所述第二数据传输方式,将存储的数据写入所述第二目标地址对应的存储空间中;当所述工作模式为第二工作模式时,所述工作参数包括置位数据,所述目标地址包括第三目标地址,所述突发字节数为所述置位数据的字节数,根据所述第三目标地址、所述置位数据的字节数和所述数据总量,确定第三数据传输方式;通过所述第三数据传输方式,将所述置位数据写入所述第三目标地址对应的存储空间中。
5、可选的,所述方法还包括:根据所述目标地址、所述突发字节数和所述数据总量,确定数据传输方式为对齐传输或非对齐传输;所述数据传输方式为对齐传输时,根据所述突发字节数对所述数据总量进行拆分,得到多个子传输命令,其中所述多个子传输命令包括多个对齐子传输命令;所述数据传输方式为非对齐传输时,根据所述突发字节数对所述数据总量进行拆分,得到多个子传输命令,其中所述多个子传输命令包括一个非对齐子传输命令和多个对齐子传输命令;通过所述多个子传输命令,对所述数据进行传输。
6、可选的,当所述工作模式为第一工作模式时,所述方法还包括:确定第一传输方式中每个第一子传输命令的字节数和第二传输方式中每个第二子传输命令的字节数;通过所述第一数据传输方式,从第一目标地址对应的存储空间中依次读取每个第一子传输命令对应的数据并存储;判断存储的数据的字节数是否满足一个第二子传输命令的字节数;若满足,通过所述第二数据传输方式,从所述存储的数据中提取出一个第二子传输命令对应的数据,将所述第二子传输命令对应的数据写入所述第二目标地址对应的存储空间中。
7、可选的,在所述接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中之前,包括:配置多个命令配置单元;针对每个命令配置单元,配置对应的第一完成标志单元和第二完成标志单元。
8、可选的,所述方法还包括:根据所述被解析的直接存储器访问命令的工作参数,确定所述完成标志,其中所述完成标志包括第一完成标志和第二完成标志;当所述被解析的直接存储器访问命令的所述第一完成标志被置位且数据传输完成时,将所述被解析的直接存储器访问命令的命令标识写入对应的第一完成标志单元;响应于用户的获取请求,发送所述命令标识给用户;当所述被解析的直接存储器访问命令的所述第二完成标志被置位且数据传输完成时,将所述被解析的直接存储器访问命令的命令标识写入对应的第二完成标志单元;生成通知指令,发送所述命令标识给用户。
9、另一方面,提供了一种数据传输装置,所述装置包括:接收模块,用于接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中;解析模块,用于依次解析每个存储在所述命令配置单元中的直接存储器访问命令,得到被解析的直接存储器访问命令的工作参数,其中所述工作参数包括工作模式、目标地址、突发字节数、数据总量、命令标识和完成标志中至少一项;传输模块,用于根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输;监测模块,用于监测所述被解析的直接存储器访问命令的传输进度,生成所述被解析的直接存储器访问命令的数据传输状态。
10、再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中;依次解析每个存储在所述命令配置单元中的直接存储器访问命令,得到被解析的直接存储器访问命令的工作参数,其中所述工作参数包括工作模式、目标地址、突发字节数、数据总量、命令标识和完成标志中至少一项;根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输;监测所述被解析的直接存储器访问命令的数据传输进度,生成所述被解析的直接存储器访问命令的数据传输状态。
11、又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中;依次解析每个存储在所述命令配置单元中的直接存储器访问命令,得到被解析的直接存储器访问命令的工作参数,其中所述工作参数包括工作模式、目标地址、突发字节数、数据总量、命令标识和完成标志中至少一项;根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输;监测所述被解析的直接存储器访问命令的数据传输进度,生成所述被解析的直接存储器访问命令的数据传输状态。
12、上述数据传输方法、装置、设备和存储介质,所述方法包括:接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中;依次解析每个存储在所述命令配置单元中的直接存储器访问命令,得到被解析的直接存储器访问命令的工作参数,其中所述工作参数包括工作模式、目标地址、突发字节数、数据总量、命令标识和完成标志中至少一项;根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输;监测所述被解析的直接存储器访问命令的数据传输进度,生成所述被解析的直接存储器访问命令的数据传输状态;如此,可以灵活配置每个dma命令的工作参数,实现满足不同的接口限制的同时达到接口的最大性能。
1.一种数据传输方法,其特征在于,所述方法包括:
2.根据权利要求1所述的数据传输方法,其特征在于,所述依次解析每个直接存储器访问命令,包括:
3.根据权利要求1所述的数据传输方法,其特征在于,所述根据所述被解析的直接存储器访问命令的工作参数,对所述被解析的直接存储器访问命令进行数据传输,包括:
4.根据权利要求3所述的数据传输方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的数据传输方法,其特征在于,当所述工作模式为第一工作模式时,所述方法还包括:
6.根据权利要求1所述的数据传输方法,其特征在于,在所述接收多个直接存储器访问命令并将每个直接存储器访问命令存储在对应的命令配置单元中之前,包括:
7.根据权利要求6所述的数据传输方法,其特征在于,所述方法还包括:
8.一种数据传输装置,其特征在于,所述装置包括:
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。