提升多通道DMA访问性能的动态缓存块管理方法和装置制造方法及图纸

技术编号:20448607 阅读:38 留言:0更新日期:2019-02-27 02:50
本发明专利技术公开了一种提升多通道DMA访问性能的动态缓存块管理方法和装置,采用多通道DMA的方式传输数据,数据由通道直接到内存,不占用CPU资源;使用高效缓存块编号动态管理方法,提升了多个通道流量不均衡情况下缓存块资源的利用率;多个通道数据传递使用零拷贝FIFO队列技术,通过FIFO队列对缓存块编号进行记录,避免了对内存的实际申请和释放,使得通道每次数据传递减少一次内存拷贝过程,大大提升了数据读写效率。

Dynamic Buffer Block Management Method and Device for Improving Multi-Channel DMA Access Performance

The invention discloses a dynamic buffer block management method and device for improving the access performance of multi-channel DMA, which transmits data by multi-channel DMA, and the data is transferred directly from channel to memory without occupying CPU resources; uses an efficient dynamic buffer block number management method to improve the utilization rate of buffer block resources under the condition of unbalanced traffic of multiple channels; and uses zero data transmission of multiple channels. Copy FIFO queue technology records the number of buffer blocks through FIFO queue, avoids the actual application and release of memory, reduces the process of memory copy once per data transfer, and greatly improves the efficiency of data reading and writing.

【技术实现步骤摘要】
提升多通道DMA访问性能的动态缓存块管理方法和装置
本专利技术涉及数据缓存
,具体涉及一种提升多通道DMA访问性能的动态缓存块管理方法和装置。
技术介绍
随着大数据技术的发展,数据产生的速度越来越快,数据规模呈现爆炸性增长。爆炸式的信息增长产生了海量的数据,信息领域(如数据中心、云计算、军事数据采集等应用)每天都在产生海量的数据。对这些海量数据进行快速访问、挖掘分析有着重要的现实意义。目前高速读写大量数据典型的应用场景包括:高速接口到存储模块的数据写入过程、以及数据从存储模块读出到高速接口。但受限于接口带宽、缓存利用率、存储介质读写速率等因素,传统共享文件访问方式已经无法满足大量数据的快速访问需求。目前传统的高速数据读写方法有两种:一种方法是高速接口模块驱动提供单个缓存块,多个通道共同使用该缓存块,如果缓存块被使用,其他的通道需要等待直到该缓存块被释放。该方法受限于缓存块数量,需要耗费较多的等待时间,数据读写的效率较低。另一种方法是高速接口模块驱动提供多个独立缓存块,应用程序固定分配给多个通道,每个通道的缓存块使用独立队列管理,该方法适用于通道数量较少的情况。通道数量较多时有一个明显的缺点,由于队列数量和队列长度固定,不能根据通道流量情况动态调整通道使用的缓存块数量,缓存块利用率低,数据读写性能不高。
技术实现思路
本专利技术的目的在于提供一种提升多通道DMA访问性能的动态缓存块管理方法和装置,提升了多个通道流量不均衡情况下缓存块资源的利用率,通道每次数据传递减少一次内存拷贝过程,大大提升了数据读写效率。为实现上述目的,本专利技术所采取的技术方案如下:一种提升多通道DMA访问性能的动态缓存块管理方法,所述提升多通道DMA访问性能的动态缓存块管理方法包括:预先通过驱动提供多个缓存块,各缓存块进行唯一编号,并将编号构建形成缓存块编号表;在数据操作时,随机选择写通道接收数据,通过hash算法从缓存块编号表中查询空闲的缓存块编号,将查询所得的缓存块编号写入FIFO队列,同时更新对应的缓存块编号的状态为已使用;发起DMA操作,将写通道中的数据写入空闲的缓存块中;随机选择读通道,从FIFO队列中读取缓存块编号;发起DMA操作,将数据从已使用的缓存块写出至读通道,缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲。优选的,所述通过hash算法从缓存块编号表中查询空闲的缓存块编号,包括:初始化时,将缓存块编号key映射到数据元素中,并建立缓存块状态到缓存块编号的映射hash(key)中;在查询时,根据输入的缓存块编号key,定位该数据元素的存储地址,并根据hash(key)中建立的缓存块状态判断该缓存块编号key是否处于空闲状态。优选的,所述查询空闲的缓存块编号之前,还包括:判断写通道接收的数据量是否大于单个缓存块的大小,若数据量不大于单个缓存块的大小,则从缓存块编号表中申请1个空闲的缓存块编号;若数据量大于单个缓存块的大小,则将写通道接收的数据根据缓存块的大小分成数据块,并根据数据块的数量申请相应数量的空闲的缓存块编号。优选的,所述查询空闲的缓存块编号时,包括:从缓存块编号表中,上次查询所得的空闲的缓存块编号的后一编号起,继续查询处于空闲状态的缓存块编号。优选的,其特征在于,所述发起DMA操作,将写通道中的数据写入空闲的缓存块中,包括:根据查询所得的缓存块编号定位缓存块地址,将该缓存块地址对应的缓存块分配给相应的写通道使用,通过DMA操作将写通道中的数据写入空闲的缓存块中;所述发起DMA操作,将数据从已使用的缓存块写出至读通道,包括:根据从FIFO队列中读取的缓存块编号,定位缓存有数据的缓存块地址,将该缓存块地址对应的缓存块分配给相应的读通道使用,通过DMA操作将数据从缓存块写出至读通道。本专利技术还提出了一种提升多通道DMA访问性能的动态缓存块管理装置,包括存储模块、高速接口模块以及主控模块,其中,所述高速接口模块,具有多个读写通道,并通过驱动提供多个缓存块,各缓存块由所述主控模块进行唯一编号,并将编号构建形成缓存块编号表;所述主控模块,用于随机选择所述高速接口模块的写通道接收数据,通过hash算法从缓存块编号表中查询空闲的缓存块编号,将查询所得的缓存块编号写入FIFO队列,同时更新对应的缓存块编号的状态为已使用;发起DMA操作,将写通道中的数据写入空闲的缓存块中;随机选择所述高速接口模块的读通道,从FIFO队列中读取缓存块编号;发起DMA操作,将数据从已使用的缓存块写出至读通道,缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲;所述存储模块,用于存储所述高速接口模块发送的数据。优选的,所述主控模块,通过hash算法从缓存块编号表中查询空闲的缓存块编号,执行如下操作:所述主控模块,在初始化时,将缓存块编号key映射到数据元素中,并建立缓存块状态到缓存块编号的映射hash(key)中;在查询时,根据输入的缓存块编号key,定位该数据元素的存储地址,并根据hash(key)中建立的缓存块状态判断该缓存块编号key是否处于空闲状态。优选的,所述主控模块在查询空闲的缓存块编号之前,执行如下操作:所述主控模块判断写通道接收的数据量是否大于单个缓存块的大小,若数据量不大于单个缓存块的大小,则从缓存块编号表中申请1个空闲的缓存块编号;若数据量大于单个缓存块的大小,则将写通道接收的数据根据缓存块的大小分成数据块,并根据数据块的数量申请相应数量的空闲的缓存块编号。优选的,所述主控模块在查询空闲的缓存块编号时,执行如下操作:所述主控模块从缓存块编号表中,上次查询所得的空闲的缓存块编号的后一编号起,继续查询处于空闲状态的缓存块编号。优选的,所述主控模块发起DMA操作,将写通道中的数据写入空闲的缓存块中,执行如下操作:所述主控模块根据查询所得的缓存块编号定位缓存块地址,将该缓存块地址对应的缓存块分配给相应的写通道使用,通过DMA操作将写通道中的数据写入空闲的缓存块中;所述主控模块发起DMA操作,将数据从已使用的缓存块写出至读通道,执行如下操作:所述主控模块根据从FIFO队列中读取的缓存块编号,定位缓存有数据的缓存块地址,将该缓存块地址对应的缓存块分配给相应的读通道使用,通过DMA操作将数据从缓存块写出至读通道。本专利技术提供的提升多通道DMA访问性能的动态缓存块管理方法和装置,采用多通道DMA的方式传输数据,数据由通道直接到内存,不占用CPU资源;使用高效缓存块编号动态管理方法,提升了多个通道流量不均衡情况下缓存块资源的利用率;多个通道数据传递使用零拷贝FIFO队列技术,通过FIFO队列对缓存块编号进行记录,避免了对内存的实际申请和释放,使得通道每次数据传递减少一次内存拷贝过程,大大提升了数据读写效率。附图说明图1为本专利技术的提升多通道DMA访问性能的动态缓存块管理方法的一种实施例流程框图;图2为本专利技术的提升多通道DMA访问性能的动态缓存块管理装置的一种实施例结构示意图;图3为本专利技术的缓存块动态申请与释放的流程框图;图4为本专利技术实施例1的高速接口模块到存储模块的数据写入过程的流程图;图5为本专利技术实施例2的存储模块到高速接口模块的数据读出过程的流程图。具体本文档来自技高网...

【技术保护点】
1.一种提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述提升多通道DMA访问性能的动态缓存块管理方法包括:预先通过驱动提供多个缓存块,各缓存块进行唯一编号,并将编号构建形成缓存块编号表;在数据操作时,随机选择写通道接收数据,通过hash算法从缓存块编号表中查询空闲的缓存块编号,将查询所得的缓存块编号写入FIFO队列,同时更新对应的缓存块编号的状态为已使用;发起DMA操作,将写通道中的数据写入空闲的缓存块中;随机选择读通道,从FIFO队列中读取缓存块编号;发起DMA操作,将数据从已使用的缓存块写出至读通道,缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲。

【技术特征摘要】
1.一种提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述提升多通道DMA访问性能的动态缓存块管理方法包括:预先通过驱动提供多个缓存块,各缓存块进行唯一编号,并将编号构建形成缓存块编号表;在数据操作时,随机选择写通道接收数据,通过hash算法从缓存块编号表中查询空闲的缓存块编号,将查询所得的缓存块编号写入FIFO队列,同时更新对应的缓存块编号的状态为已使用;发起DMA操作,将写通道中的数据写入空闲的缓存块中;随机选择读通道,从FIFO队列中读取缓存块编号;发起DMA操作,将数据从已使用的缓存块写出至读通道,缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲。2.如权利要求1所述的提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述通过hash算法从缓存块编号表中查询空闲的缓存块编号,包括:初始化时,将缓存块编号key映射到数据元素中,并建立缓存块状态到缓存块编号的映射hash(key)中;在查询时,根据输入的缓存块编号key,定位该数据元素的存储地址,并根据hash(key)中建立的缓存块状态判断该缓存块编号key是否处于空闲状态。3.如权利要求1所述的提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述查询空闲的缓存块编号之前,还包括:判断写通道接收的数据量是否大于单个缓存块的大小,若数据量不大于单个缓存块的大小,则从缓存块编号表中申请1个空闲的缓存块编号;若数据量大于单个缓存块的大小,则将写通道接收的数据根据缓存块的大小分成数据块,并根据数据块的数量申请相应数量的空闲的缓存块编号。4.如权利要求1所述的提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述查询空闲的缓存块编号时,包括:从缓存块编号表中,上次查询所得的空闲的缓存块编号的后一编号起,继续查询处于空闲状态的缓存块编号。5.如权利要求1所述的提升多通道DMA访问性能的动态缓存块管理方法,其特征在于,所述发起DMA操作,将写通道中的数据写入空闲的缓存块中,包括:根据查询所得的缓存块编号定位缓存块地址,将该缓存块地址对应的缓存块分配给相应的写通道使用,通过DMA操作将写通道中的数据写入空闲的缓存块中;所述发起DMA操作,将数据从已使用的缓存块写出至读通道,包括:根据从FIFO队列中读取的缓存块编号,定位缓存有数据的缓存块地址,将该缓存块地址对应的缓存块分配给相应的读通道使用,通过DMA操作将数据从缓存块写出至读通道。6.一种提升多通道DMA访问性能的动态缓存块管理装置,其特征在于,包括存储模块、高速接口模块以及主控模块,其中,所述高速接口模块,具有多个读...

【专利技术属性】
技术研发人员:闫华吴道广何晶晶瞿崇晓
申请(专利权)人:中国电子科技集团公司第五十二研究所
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1