一种DMA描述符管理方法、系统、装置及可读存储介质与流程

    专利查询2025-08-04  26


    本发明涉及计算机,更具体的说是涉及一种dma描述符管理方法、系统、装置及可读存储介质。


    背景技术:

    1、目前,非易失性存储器(如ssd)已成为数据存储的主流。非易失性内存主机控制器规范(nvme)协议作为一种高效的数据传输协议,被广泛应用于主机与ssd之间的通信。为提高数据传输效率,同时减轻中央处理器(cpu)的负担,通常在nvme ssd中引入dma引擎,cpu为dma引擎设置dma描述符以指示有关dma引擎传输的信息。

    2、然而,现有nvme协议实现机制中,dma描述符的获取和处理方式普通采用如下流程:1、cpu从本地内存读取队列命令后为其创建dma描述符,并将dma描述符存储于本地内存中。2、cpu通过总线访问dma描述符链地址寄存器,配置描述符地址,并在描述符创建完成后访问dma控制寄存器,触发dma使能信号,表示描述符已经配置好,dma引擎可以传输数据。3、dma引擎通过总线访问dma描述符地址,从本地内存中读取当前dma描述符内容,当dma描述符中的有效位置1时,根据dma描述符内容开始数据传输。4、dma引擎在读取当前dma描述符后,还会读取描述符链中的下一个dma描述符,检查dma描述符是否有效后,再决定是否进行传输。5、当前dma描述符传输行为完成后,dma引擎向本地内存回写dma描述符,将dma完成标志位拉起,完成dma的数据传输,cpu检查dma状态寄存器的完成标志位获得dma传输完成的消息。

    3、在上述dma描述符的获取和处理方式中,cpu需要频繁通过总线访问dma寄存器,向dma发送传输信息,这增加了总线占用率,同时可能导致内存带宽的饱和,影响数据传输效率和性能。另一方面,dma引擎也要频繁通过总线获取描述符信息,并且只有读取到描述符有效位置1后,才会开启数据传输。此外,dma引擎还会读取描述符链中当前描述符的下一个描述符,如果描述符无效,则dma引擎进入休眠阶段,此过程也会占用总线资源,影响系统整体性能。


    技术实现思路

    1、针对以上问题,本发明的目的在于提供一种dma描述符管理方法、系统、装置及可读存储介质,采用队列结构直接将有效的提交队列id和命令id配置给dma引擎,同时引入平衡搜索树管理描述符策略和预取描述符机制,可实现对存储访问的高效管理和优化,减小总线占用率,提高系统整体性能。

    2、本发明为实现上述目的,通过以下技术方案实现:

    3、第一方面,本发明公开了一种dma描述符管理方法,包括:

    4、从主机内存中获取命令队列,提取命令队列中待处理命令的提交队列id和命令id;

    5、根据提交队列id和命令id在本地内存中获取对应的描述符信息,基于描述符信息,利用描述符模版生成dma描述符;

    6、将dma描述符作为节点插入平衡搜索树中,并更新平衡搜索树;

    7、对于命令队列中待执行的命令,根据该命令的提交队列id和命令id在平衡搜索树中检索到相应的dma描述符,并存储到dma分配队列中;

    8、在dma分配队列中依次提取dma描述符,根据提取的dma描述符执行主机内存与本地内存之间的数据传输;

    9、数据传输完成后,更新dma描述符的状态。

    10、进一步,所述根据提交队列id和命令id在本地内存中获取对应的描述符信息,基于描述符信息,利用描述符模版生成dma描述符,包括:

    11、根据提交队列id和命令id在本地内存中获取对应的描述符信息,并存储至描述符缓存区;

    12、在描述符缓存区中,利用描述符模板整理描述符信息,生成dma描述符;

    13、所述dma描述符包括:提交队列id、命令id、主机内存地址、本地内存地址、dma传输方向、dma传输大小、dma有效位和dma完成位。

    14、进一步,所述将dma描述符作为节点插入平衡搜索树中,并更新平衡搜索树,包括:

    15、根据dma描述符生成一个平衡搜索树的新节点,将提交队列id和命令id的组合作为新节点的索引关键值,将主机内存地址和本地内存地址的组合作为新节点的索引结构,并为新节点设置指向左右节点的指针;

    16、在平衡搜索树中,从根节点开始,根据排序准则比较当前节点与新节点的dma描述符;如果当前节点没有子节点,将新节点作为该节点的子节点,并插入新节点;

    17、插入新节点后,更新所有节点平衡因子;

    18、判断每个节点的是否平衡因子绝对值大于1;

    19、若是,则对相应的节点进行左旋或右旋操作以恢复平衡。

    20、进一步,所述对于命令队列中待执行的命令,根据该命令的提交队列id和命令id在平衡搜索树中检索到相应的dma描述符,并存储到dma描述符队列中,包括:

    21、对于命令队列中待执行的命令,提取该命令的提交队列id和命令id;

    22、在平衡搜索树,利用该命令的提交队列id和命令id作为索引关键值搜索节点;搜索到对应的节点后,根据该节点的索引结构定位到目标数据在内存中的位置信息;

    23、提取该节点的dma描述符,并将dma描述符的dma有效位置1,进行dma描述符的更新;

    24、将更新后的dma描述符发送至dma缓冲区,并存储到dma分配队列中。

    25、进一步,所述dma分配队列设置有头指针和尾指针;当dma描述符写入dma缓冲区时,将相关的提交队列id和命令id加入dma分配队列,并对尾指针加1,表示有新的dma描述符等待配置;当提取头指针对应的dma描述符时,从dma分配队列中取出相应的提交队列id和命令id,并对头指针加1;当头指针与尾指针相等时,当前dma分配队列没有需要分配的提交队列id和命令id。

    26、进一步,所述在dma分配队列中依次提取dma描述符,根据提取的dma描述符执行主机内存与本地内存之间的数据传输,包括:

    27、在dma分配队列中依次提取提交队列id和命令id和对应的dma描述符,根据dma描述符主机内存地址、本地内存地址进行数据定位,并进行机内存与本地内存之间的数据传输。

    28、进一步,所述数据传输完成后,更新dma描述符的状态,包括:

    29、数据传输完成后,将dma描述符中的dma完成位置1;

    30、将该dma描述符对应的节点从平衡搜索树中删除,并释放该dma描述符在描述符缓存区中的空间。

    31、第二方面,本发明还公开了一种dma描述符管理系统,包括:dma控制器、主机内存和本地内存,dma控制器分别与主机内存和本地内存数据连接;

    32、所述dma控制器包括:预处理模块、描述符管理器、描述符缓存区、dma缓冲区、命令管理模块、智能调度模块和dma引擎;

    33、预处理模块,用于从主机内存中获取命令队列,提取命令队列中待处理命令的提交队列id和命令id,根据提交队列id和命令id在本地内存中获取对应的描述符信息,并存储至描述符缓存区;

    34、描述符缓存区内设置有描述符模板,用于基于描述符信息,利用描述符模版生成dma描述符;

    35、描述符管理器中设有平衡搜索树,用于从描述符缓存区提取dma描述符,将dma描述符作为节点插入平衡搜索树中,并更新平衡搜索树;还用于获取命令队列中待执行的命令,根据该命令的提交队列id和命令id在平衡搜索树中检索到相应的dma描述符,并存储到dma缓冲区;

    36、dma缓冲区中设有dma分配队列,所述dma分配队列由描述符管理器和命令管理模块维护,以指示当前有效的dma描述符;

    37、dma引擎,用于在dma分配队列中依次提取dma描述符,根据提取的dma描述符执行主机内存与本地内存之间的数据传输;

    38、dma控制器,用于数据传输完成后,更新dma描述符的状态;

    39、智能调度模块,用于根据当前的系统负载、数据传输需求和描述符缓存区的使用情况等因素,动态调整描述符的缓存和预处理策略;结合cpu使用情况和系统负载,选择时机向cpu发送中断。

    40、第三方面,本发明还公开了一种dma描述符管理装置,包括:

    41、存储器,用于存储dma描述符管理程序;

    42、处理器,用于执行所述dma描述符管理程序时实现如上文任一项所述dma描述符管理方法的步骤。

    43、第四方面,本发明还公开了一种可读存储介质,所述可读存储介质上存储有dma描述符管理程序,所述dma描述符管理程序被处理器执行时实现如上文任一项所述dma描述符管理方法的步骤。

    44、对比现有技术,本发明有益效果在于:

    45、1、本发明根据sqid+cid信息,预先获取描述符至描述符缓冲区中,减少了cpu访问总线与dma寄存器交互及dma引擎通过总线读取描述符的时间,可降低总线占用率,有效预防内存带宽饱和的情况发生。

    46、2、本发明利用平衡搜索树管理dma描述符,可快速插入、查找和删除描述符,实现了高效的描述符管理机制。根据索引映射可快速定位本地内存地址,开启数据传输,降低了cpu的占用率,提高了数据传输效率。

    47、3、本发明通过在dma缓冲区中维护队列结构,利用头尾指针来表示sqid+cid的有效性,避免了dma引擎读取描述符有效位确认描述符有效性的时间,减小了传输延迟。

    48、4、本发明能够根据当前的系统状态和cpu的空闲情况,决定是否立即通知cpu或将其放入一个待处理队列中,避免了不必要的cpu中断,进一步降低cpu的利用率。

    49、由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。


    技术特征:

    1.一种dma描述符管理方法,其特征在于,包括:

    2.根据权利要求1所述的dma描述符管理方法,其特征在于,所述根据提交队列id和命令id在本地内存中获取对应的描述符信息,基于描述符信息,利用描述符模版生成dma描述符,包括:

    3.根据权利要求2所述的dma描述符管理方法,其特征在于,所述将dma描述符作为节点插入平衡搜索树中,并更新平衡搜索树,包括:

    4.根据权利要求3所述的dma描述符管理方法,其特征在于,所述对于命令队列中待执行的命令,根据该命令的提交队列id和命令id在平衡搜索树中检索到相应的dma描述符,并存储到dma描述符队列中,包括:

    5.根据权利要求4所述的dma描述符管理方法,其特征在于,所述dma分配队列设置有头指针和尾指针;当dma描述符写入dma缓冲区时,将相关的提交队列id和命令id加入dma分配队列,并对尾指针加1,表示有新的dma描述符等待配置;当提取头指针对应的dma描述符时,从dma分配队列中取出相应的提交队列id和命令id,并对头指针加1;当头指针与尾指针相等时,当前dma分配队列没有需要分配的提交队列id和命令id。

    6.根据权利要求5所述的dma描述符管理方法,其特征在于,所述在dma分配队列中依次提取dma描述符,根据提取的dma描述符执行主机内存与本地内存之间的数据传输,包括:

    7.根据权利要求6所述的dma描述符管理方法,其特征在于,所述数据传输完成后,更新dma描述符的状态,包括:

    8.一种dma描述符管理系统,其特征在于,包括:dma控制器、主机内存和本地内存,dma控制器分别与主机内存和本地内存数据连接;

    9.一种dma描述符管理装置,其特征在于,包括:

    10.一种可读存储介质,其特征在于:所述可读存储介质上存储有dma描述符管理程序,所述dma描述符管理程序被处理器执行时实现如权利要求1至7任一项所述的dma描述符管理方法的步骤。


    技术总结
    本发明提出的一种DMA描述符管理方法、系统、装置及可读存储介质,所述方法包括:从主机内存中获取命令队列,提取命令队列中待处理命令的提交队列ID和命令ID;根据提交队列ID和命令ID在本地内存中获取对应的描述符信息,基于描述符信息,利用描述符模版生成DMA描述符;将DMA描述符作为节点插入平衡搜索树中,并更新平衡搜索树;对于命令队列中待执行的命令,根据该命令的提交队列ID和命令ID在平衡搜索树中检索到相应的DMA描述符,并存储到DMA分配队列中;在DMA分配队列中依次提取DMA描述符,根据提取的DMA描述符执行主机内存与本地内存之间的数据传输;数据传输完成后,更新DMA描述符的状态。本发明可实现对存储访问的高效管理和优化,减小总线占用率,提高系统整体性能。

    技术研发人员:张靖,付溢华,曾昭贵,周永旺,娄博杰
    受保护的技术使用者:山东云海国创云计算装备产业创新中心有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-30980.html

    最新回复(0)