CN109388590A - 提升多通道dma访问性能的动态缓存块管理方法和装置 - Google Patents

提升多通道dma访问性能的动态缓存块管理方法和装置 Download PDF

Info

Publication number
CN109388590A
CN109388590A CN201811140592.1A CN201811140592A CN109388590A CN 109388590 A CN109388590 A CN 109388590A CN 201811140592 A CN201811140592 A CN 201811140592A CN 109388590 A CN109388590 A CN 109388590A
Authority
CN
China
Prior art keywords
cache blocks
data
caching
block number
caching block
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.)
Granted
Application number
CN201811140592.1A
Other languages
English (en)
Other versions
CN109388590B (zh
Inventor
闫华
吴道广
何晶晶
瞿崇晓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 52 Research Institute
Original Assignee
CETC 52 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 52 Research Institute filed Critical CETC 52 Research Institute
Priority to CN201811140592.1A priority Critical patent/CN109388590B/zh
Publication of CN109388590A publication Critical patent/CN109388590A/zh
Application granted granted Critical
Publication of CN109388590B publication Critical patent/CN109388590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

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

Description

提升多通道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访问性能的动态缓存块管理方法包括预先通过驱动提供N(N>1)个缓存块,且各缓存块进行唯一编号,并由编号构建形成缓存块编号表,在缓存块使用能够通过编号快速定位到指定的缓存块。
上述的缓存块是相互独立的,各缓存块均可独立设置大小,申请单个缓存块大小受限于操作系统的DMA管理机制,一般申请多个地址不连续的缓存块。容易理解的是,当缓存块的大小一定时,缓存块的数量越多,对多通道流量不均衡问题的缓解效果越好,但受限于系统内存总量,即N个缓存块总和要小于系统内存,故缓存块的大小和数量都是有限的。
在进行数据操作时,本实施例的提升多通道DMA访问性能的动态缓存块管理方法还包括:
随机选择写通道接收数据,通过hash算法从缓存块编号表中查询空闲的缓存块编号,将查询所得的缓存块编号写入FIFO队列,同时更新对应的缓存块编号的状态为已使用;
发起DMA操作,将写通道中的数据写入空闲的缓存块中;
随机选择读通道,从FIFO队列中读取缓存块编号;
发起DMA操作,将数据从已使用的缓存块写出至读通道,缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲。
其中,在进行空闲的缓存块查询之前,先判断写通道接收的数据量是否大于单个缓存块的大小,若数据量不大于单个缓存块的大小,则从缓存块编号表中申请1个空闲的缓存块编号;
若数据量大于单个缓存块的大小,则将写通道接收的数据根据缓存块的大小分成数据块,并根据数据块的数量申请相应数量的空闲的缓存块编号。
当获取到需要的缓存块的数量后,即可进行空闲缓存块编号的查询,在每次查询时,均优先从缓存块编号表中,上次查询所得的空闲的缓存块编号的后一编号起,继续查询处于空闲状态的缓存块编号,以避免每次查询都需要从第一个编号开始,大大减少了遍历查询的时间开销。
本实施例中,查询空闲的缓存块编号的方法是基于hash算法实现的,在hash算法使用前,先初始化将缓存块编号key映射到数据元素中,并建立缓存块状态到缓存块编号的映射hash(key)中;在进行查询时,根据输入的缓存块编号key,定位该数据元素的存储地址,并根据hash(key)中建立的缓存块状态判断该缓存块编号key是否处于空闲状态。
由于缓存块的大小和数量受限于系统内存,故在初始化时,使缓存块的数量限制在0~N的范围内,故缓存块编号key值范围较小,能够完全映射到数组空间,几乎不存在key值冲突的情况,从而优化了判断缓存块是否空闲的hash算法,使该hash算法判断缓存块编号是否空闲的时间基本恒定,且时间复杂度接近O(1)。一般情况下,查找第一个空闲的缓存块的时间基本固定,最不理想的情况下,即从头开始查询的情况下的时间复杂度为O(N),其中N为缓存块的数量。
在对空闲缓存块进行数据操作过程中,将写通道中的数据写入空闲的缓存块中的过程包括:根据查询所得的缓存块编号定位缓存块地址,将该缓存块地址对应的缓存块分配给相应的写通道使用,通过DMA操作将写通道中的数据写入空闲的缓存块中。
将数据从已使用的缓存块写出至读通道的过程包括:根据从FIFO队列中读取的缓存块编号,定位缓存有数据的缓存块地址,将该缓存块地址对应的缓存块分配给相应的读通道使用,通过DMA操作将数据从缓存块写出至读通道。
可见,在上述的动态缓存块管理方法中,缓存块的申请和释放过程没有真实的内存申请和释放过程,仅通过FIFO队列保存缓存块编号,当使用缓存块时,可根据FIFO队列中的缓存块编号直接定位缓存块地址;当缓存块使用完毕时,将缓存块编号从FIFO队列中移出即可完成缓存块的释放,避免了内存拷贝操作。
且本实施例的动态缓存块管理方法在应用中,支持多个数据通道并行进行数据操作,为每个通道申请FIFO队列,当各通道使用缓存块时,统一从缓存块编号表中动态查询,并将查询所得的缓存块编号写入对应的FIFO队列中完成缓存块申请,各通道进行数据操作时互不影响,且通道中数据量多的能够申请到更多的缓存块,且缓存块使用完成后立即释放,等待其他的通道使用,使缓存块在数据操作过程中得以高效利用。
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。
如图2所示,本实施例还提供一种提升多通道DMA访问性能的动态缓存块管理装置,与上述提升多通道DMA访问性能的动态缓存块管理方法中各步骤的具体操作内容对应。所述提升多通道DMA访问性能的动态缓存块管理装置包括存储模块(图中未示)、高速接口模块、主控模块,其中,
所述高速接口模块,用于与前端设备进行高速数据传输,具有多个读写通道,并用于驱动提供多个缓存块。
所述主控模块中设置有应用单元,应用单元运行在主控模块上,对所述高速接口模块的各缓存块进行唯一编号,并将编号构建形成缓存块编号表,其中,多个缓存块设置在同一缓存池中,便于对各缓存块的同一管理。
在进行数据读写操作时,应用单元随机选择写通道接收数据,动态申请空闲的缓存块;发起DMA操作,将写通道中的数据写入空闲的缓存块中;随机选择读通道,发起DMA操作,将数据从缓存块写出至读通道,动态释放空闲的缓存块。
所述存储模块作为大容量存储介质,用于存储高速接口模块发送的数据。
结合图3对缓存块动态申请和释放的过程进一步说明:
应用单元动态申请空闲的缓存块,执行如下操作:应用单元从缓存块编号表中,上次查询所得的空闲的缓存块编号的后一编号起,继续查询处于空闲状态的缓存块编号,将空闲的缓存块编号写入FIFO队列,同时更对应的缓存块编号的状态为已使用。此时与写入FIFO队列的缓存块编号对应的缓存块即被申请待用。
在对申请的缓存块进行数据操作时,从FIFO队列中读取缓存块编号,并根据缓存块编号定位相应的缓存块地址,通过缓存块地址对对应的缓存块进行数据操作。
在缓存块使用完成后,应用单元动态释放的缓存块,执行如下操作:应用单元从FIFO队列中读取已使用的缓存块编号,在该缓存块编号对应的缓存块中的数据被读取后,将对应的缓存块编号移出FIFO队列,并更新对应的缓存块编号的状态为空闲。此时与移出FIFO队列的缓存块编号对应的缓存块即被释放空闲。
由图可见,在FIFO队列中可存在多个缓存块编号,应用程序将查询所得的缓存块编号一一写入FIFO队列中,同时,使用完成的缓存块编号被一一移除FIFO队列中,真正实现缓存块的动态申请和释放。
本实施例的提升多通道DMA访问性能的动态缓存块管理装置,在缓存块的申请和释放过程没有真实的内存申请和释放过程,仅通过FIFO队列保存缓存块编号,避免了内存拷贝操作。
下面通过两个具体的实施例对整个动态缓存块管理装置的工作流程进一步说明。
实施例1:高速接口模块到存储模块的数据写入过程
如图4所示,应用单元预先为每个通道申请FIFO对列,在进行数据写入之前,随机选择处于空闲状态的通道,并清空通道对应的FIFO队列,判断高速接口模块的数据量与单个缓存块大小的关系,确定需要申请的缓存块数量,并依次申请相应数量的空闲的缓存块,将空闲的缓存块编号写入FIFO队列,同时应用单元复位所选择的通道,启动一次DMA操作,高速接口模块通过DMA引擎把通道接收的数据搬运到指定缓存块;应用程序读取FIFO队列中的缓存块编号,根据读取的缓存块编号定位缓存块地址,将与缓存块地址对应的缓存块内容通过MDA操作写入存储模块,释放缓存块。重复上述空闲的缓存块申请过程,直到数据写入完成,即高速接口模块中的数据全部写入存储模块后,停止数据写入流程,复位数据读写通道,结束。
实施例2:存储模块到高速接口模块的数据读出过程
如图5所示,在进行数据读出之前,应用程序随机选择处于空闲状态的通道并复位,清空与通道对应的FIFO队列,应用单元根据存储模块中的数据量依次申请相应数量的空闲的缓存块,将空闲的缓存块编号写入FIFO队列,启动一次DMA操作,存储模块通过DMA引擎把数据搬运到指定缓存块,同时应用程序读取FIFO队列中的缓存块编号,根据读取的缓存块编号定位缓存块地址,将与缓存块地址对应的缓存块内容通过DMA操作写入高速接口模块,释放缓存块。重复上述空闲的缓存块申请过程,直到数据读出完成,即存储模块中的数据全部读出至高速接口模块后,停止数据读出流程,复位数据读写通道,结束。
可见,上述高速接口模块到存储模块的数据写入过程,和存储模块到高速接口模块的数据读出过程均采用零拷贝FIFO队列技术,在此过程中,数据通过DMA操作进行通道与指定缓存块之间的搬运,数据搬运过程没有CPU参与,整个数据搬运过程都是由硬件来完成,不占用CPU资源。
并且应用程序操作数据时,通过高速接口模块的多个通道读写数据,进行数据读写操作时先动态申请缓存块,应用程序和高速接口模块的通道之间通过FIFO队列传递数据块编号。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (10)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811140592.1A CN109388590B (zh) 2018-09-28 2018-09-28 提升多通道dma访问性能的动态缓存块管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811140592.1A CN109388590B (zh) 2018-09-28 2018-09-28 提升多通道dma访问性能的动态缓存块管理方法和装置

Publications (2)

Publication Number Publication Date
CN109388590A true CN109388590A (zh) 2019-02-26
CN109388590B CN109388590B (zh) 2021-02-26

Family

ID=65418236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811140592.1A Active CN109388590B (zh) 2018-09-28 2018-09-28 提升多通道dma访问性能的动态缓存块管理方法和装置

Country Status (1)

Country Link
CN (1) CN109388590B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110134365A (zh) * 2019-05-21 2019-08-16 合肥工业大学 一种多通道并行读出fifo的方法及装置
CN110865953A (zh) * 2019-10-08 2020-03-06 华南师范大学 异步拷贝方法和装置
CN112073316A (zh) * 2020-09-09 2020-12-11 南京盛科网络有限公司 多通道位宽变化的数据传输系统、方法、设备和存储介质
CN112235268A (zh) * 2020-09-29 2021-01-15 北京智芯微电子科技有限公司 安全通信方法、系统及装置
CN113778694A (zh) * 2021-11-12 2021-12-10 苏州浪潮智能科技有限公司 一种任务处理方法、装置、设备及介质
CN114116556A (zh) * 2021-10-29 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、系统、存储介质及设备
CN117094876A (zh) * 2023-07-12 2023-11-21 荣耀终端有限公司 数据处理的方法、电子设备及可读存储介质
CN117539802A (zh) * 2024-01-10 2024-02-09 中昊芯英(杭州)科技有限公司 一种缓存操作方法、系统以及相关装置
CN117827709A (zh) * 2024-03-05 2024-04-05 龙芯中科(北京)信息技术有限公司 直接内存访问的实现方法、装置、设备及存储介质
CN114116556B (zh) * 2021-10-29 2024-06-28 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、系统、存储介质及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0630499A1 (en) * 1992-03-09 1994-12-28 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
CN102375790A (zh) * 2010-08-12 2012-03-14 杭州华三通信技术有限公司 共享总线传输系统及方法
CN102638412A (zh) * 2012-05-04 2012-08-15 杭州华三通信技术有限公司 一种缓存管理方法及装置
CN103714038A (zh) * 2012-10-09 2014-04-09 中兴通讯股份有限公司 一种数据处理方法和装置
CN106445869A (zh) * 2016-09-20 2017-02-22 烟台大学 一种基于FPGA和PCIe的高速数据交换构架
CN107256196A (zh) * 2017-06-13 2017-10-17 北京中航通用科技有限公司 基于闪存阵列的支持零拷贝的缓存系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0630499A1 (en) * 1992-03-09 1994-12-28 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
CN102375790A (zh) * 2010-08-12 2012-03-14 杭州华三通信技术有限公司 共享总线传输系统及方法
CN102638412A (zh) * 2012-05-04 2012-08-15 杭州华三通信技术有限公司 一种缓存管理方法及装置
CN103714038A (zh) * 2012-10-09 2014-04-09 中兴通讯股份有限公司 一种数据处理方法和装置
CN106445869A (zh) * 2016-09-20 2017-02-22 烟台大学 一种基于FPGA和PCIe的高速数据交换构架
CN107256196A (zh) * 2017-06-13 2017-10-17 北京中航通用科技有限公司 基于闪存阵列的支持零拷贝的缓存系统及方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110134365A (zh) * 2019-05-21 2019-08-16 合肥工业大学 一种多通道并行读出fifo的方法及装置
CN110134365B (zh) * 2019-05-21 2022-10-11 合肥工业大学 一种多通道并行读出fifo的方法及装置
CN110865953A (zh) * 2019-10-08 2020-03-06 华南师范大学 异步拷贝方法和装置
CN112073316A (zh) * 2020-09-09 2020-12-11 南京盛科网络有限公司 多通道位宽变化的数据传输系统、方法、设备和存储介质
CN112235268A (zh) * 2020-09-29 2021-01-15 北京智芯微电子科技有限公司 安全通信方法、系统及装置
CN112235268B (zh) * 2020-09-29 2023-01-24 北京智芯微电子科技有限公司 安全通信方法、系统及装置
CN114116556A (zh) * 2021-10-29 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、系统、存储介质及设备
CN114116556B (zh) * 2021-10-29 2024-06-28 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、系统、存储介质及设备
CN113778694B (zh) * 2021-11-12 2022-02-18 苏州浪潮智能科技有限公司 一种任务处理方法、装置、设备及介质
CN113778694A (zh) * 2021-11-12 2021-12-10 苏州浪潮智能科技有限公司 一种任务处理方法、装置、设备及介质
CN117094876A (zh) * 2023-07-12 2023-11-21 荣耀终端有限公司 数据处理的方法、电子设备及可读存储介质
CN117539802A (zh) * 2024-01-10 2024-02-09 中昊芯英(杭州)科技有限公司 一种缓存操作方法、系统以及相关装置
CN117539802B (zh) * 2024-01-10 2024-04-05 中昊芯英(杭州)科技有限公司 一种缓存操作方法、系统以及相关装置
CN117827709A (zh) * 2024-03-05 2024-04-05 龙芯中科(北京)信息技术有限公司 直接内存访问的实现方法、装置、设备及存储介质
CN117827709B (zh) * 2024-03-05 2024-05-03 龙芯中科(北京)信息技术有限公司 直接内存访问的实现方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN109388590B (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN109388590A (zh) 提升多通道dma访问性能的动态缓存块管理方法和装置
CN104090847B (zh) 一种固态存储设备的地址分配方法
CN103425602B (zh) 一种闪存存储设备数据读写的方法、装置及主机系统
CN100590609C (zh) 一种基于非连续页的动态内存管理方法
US6047356A (en) Method of dynamically allocating network node memory's partitions for caching distributed files
US9058112B2 (en) Retrieving data in a storage system using thin provisioning
CN103425538B (zh) 进程通讯方法及系统
CN103984640B (zh) 实现数据预取方法及装置
CN101324869B (zh) 一种基于axi总线的多路复用器
US20150127691A1 (en) Efficient implementations for mapreduce systems
US10740006B2 (en) System and method for enabling high read rates to data element lists
CN104765575A (zh) 信息存储处理方法
CN101150485A (zh) 一种零拷贝缓冲区队列网络数据发送的管理方法
CN112632069B (zh) 哈希表数据存储管理方法、装置、介质和电子设备
CN102298561A (zh) 一种对存储设备进行多通道数据处理的方法、系统和装置
CN115080455B (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
CN101150486A (zh) 一种零拷贝缓冲区队列网络数据接收的管理方法
CN102314400A (zh) 一种分散聚合式dma方法及装置
CN101673246A (zh) 一种高效的先进先出数据池读写方法
CN112214157A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
CN104778100A (zh) 一种安全备份数据的方法
KR101788245B1 (ko) 다중 포트 캐시 메모리 장치 및 그 구동 방법
CN104991745A (zh) 一种存储系统数据写入方法和系统
CN115658625B (zh) 数据解压系统、图形处理系统、装置、设备及解压方法
CN104850548B (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
GR01 Patent grant
GR01 Patent grant