本发明涉及内存管理技术领域,尤其涉及计算组件的内存资源管理方法与系统。
背景技术:
现场可编程门阵列(fieldprogrammablegatearray,fpga)是在可编程阵列逻辑(programmablearraylogic,pal)、门阵列逻辑(gatearraylogic,gal)、可编程逻辑器件(programmablelogicdevice,pld)等可编程器件的基础上进一步发展的产物。fpga具有逻辑资源、存储资源、算法模块和嵌入式硬核模块等丰富的资源,并具备高性能、高灵活性等特点。基于以上特点,利用fpga实现快速准确的计算已经成为研究热点。除了fpga,显卡上的图形处理器(graphicprocessingunit,gpu)因其内部分布可应对并行高运算密度大问题的算术逻辑单元,已经被用来解决复杂的计算问题。
这些fpga、显卡或专用高性能计算卡等计算组件都会配备一定容量的存储器为计算、逻辑处理等过程提供内存资源。上述存储容量通常是受限的,如何合理高效地进行内存资源的管理以满足大存储量的计算是上述计算组件面临的问题。
在现有技术中,内存资源管理多以字节(byte)为单位进行分配与释放,且计算与结果公用内存资源。以字节为单位进行内存资源管理容易出现内存资源碎片,无形中降低了内存资源的使用效率。而计算使用内存资源与结果使用内存资源公用内存资源使得内存资源不能得到合理的管理和使用。
技术实现要素:
针对上述问题,本发明的目的在于提高内存资源的使用效率,以及解决计算与结果公用内存资源的问题。
为达到上述发明目的,本发明提供的技术方案如下:
一种内存资源管理方法,所述方法由一个计算设备执行,所述计算设备包括至少一个处理器和至少一个存储媒介,其特征在于,所述方法包括:将计算内存资源划分为一个或多个内存块;接收使用所述计算内存资源的请求;根据所述请求确定请求内存资源的大小;以及根据所述请求内存资源的大小分配所述计算内存资源。
一种内存资源管理系统,其特征在于,所述内存资源管理系统包括:处理模块,用于作计算或逻辑处理;内存模块,用于为所述处理模块的所述计算或所述逻辑处理提供计算内存资源;内存管理模块,用于对所述内存模块的所述计算内存资源进行管理,所述对所述内存模块的所述计算内存资源进行管理包括:将所述计算内存资源划分为一个或多个内存块;接收使用所述计算内存资源的请求;根据所述请求确定请求内存资源的大小;以及根据所述请求内存资源的大小分配所述计算内存资源。
在本发明中,所述内存块大小为2n个兆字节,且n为大于或等于1的整数。
在本发明中,所述根据所述请求分配所述计算内存资源包括:确定所述计算内存资源中可用内存资源的大小大于或等于所述请求内存资源的大小,得到第一确定结果;根据所述第一确定结果,修改所述可用内存资源的大小;根据所述请求内存资源的大小以及所述可用内存资源,确定分配内存资源;以及发送所述分配内存资源地址。
在本发明中,所述内存资源管理方法进一步包括:确定所述分配内存资源已被释放,得到第二确定结果;以及根据所述第二确定结果,修改所述可用内存资源的大小。
在本发明中,所述根据所述请求分配所述计算内存资源包括:确定所述计算内存资源中的可用内存资源的大小小于所述请求内存资源的大小,得到第三确定结果;以及根据所述第三确定结果,发送请求失败通知。
在本发明中,所述请求内存资源的大小为所述内存块大小的整数倍。
在本发明中,所述计算设备包括现场可编辑逻辑门阵列(field-programmablegatearray,fpga)。
与现有技术相比,本发明的有益效果表现如下:
一、内存资源管理以大字节(例如,2n兆字节,n为大于或等于1的整数)为单位进行分配与释放,减少了以单个字节为单位进行内存资源管理容易出现内存资源碎片的情况;
二、计算使用内存资源与结果使用资源采用分离管理方式,避免了计算使用内存资源与结果使用内存资源公用内存资源的情况;
三、一次释放使用完毕的内存资源,使得可用内存资源可以得到即时的更新,大幅度提高了内存资源的使用效率。
附图说明
图1为本发明实施例的内存资源管理系统结构示意图;
图2为本发明实施例的内存分配示例流程图;
图3为本发明实施例的内存释放示例流程图;以及
图4为本发明实施例内存资源管理系统的一种计算机设备的架构示例图。
具体实施方式
下面通过具体实施例并结合附图对本发明做进一步描述。
如图1所示,所述内存资源管理系统可以包括处理模块110、内存模块120和内存管理模块130。
所述处理模块110可以用于计算、逻辑处理等过程。
所述内存模块120可以包括计算内存资源。所述计算内存资源可以为计算过程提供内存资源。在一些实施例中,所述内存模块120中还可以包括结果内资源,所述结果内存资源可以为计算结果提供内存资源。在一些实施例中,计算内存资源与结果内存资源也可以分别存在于两个存储模块中。计算内存资源与结果内存资源采用分离管理方式,避免了计算内存资源与结果内存资源公用内存资源的情况。
所述内存管理模块130可用于管理所述内存模块120的计算内存资源。
图2为本发明的内存分配示例流程图。
在步骤210,内存管理模块130可以将内存模块120中的计算内存资源划分为一个或多个内存块。所述内存块的大小可以为256字节(byte)的整数倍,例如,一个内存块的大小可以为512兆字节(megabyte,m)。在一些实施例中,每个内存块的大小可以相等,也可以不等。
在步骤220,内存管理模块130可以接收使用计算内存资源的请求。所述使用计算内存资源的请求可以来自于处理模块110。
在步骤230,内存管理模块130可以根据所述请求,确定请求内存资源的大小。所述请求内存资源可以只处理模块110在进行计算时所需的内存资源。所述请求内存资源的大小可以为所述内存块大小的整数倍。
在步骤240,内存管理模块130可以判断计算内存资源中的可用内存资源的大小是否小于所述请求内存资源的大小。所述可用内存资源可以指没有被占用的空闲内存资源。如果内存管理模块130判断可用内存资源的大小小于所述请求内存资源的大小,则执行步骤250。如果内存管理模块130判断可用内存资源的大小大于或等于请求内存资源的大小,则执行步骤260。
在步骤250,内存资源管理模块130可以向处理模块110发送请求失败通知。
在步骤260,内存资源管理模块130可以根据请求内存资源的大小和可用内存资源,确定分配内存资源。所述分配内存资源可以包括从可用内存资源中确定的分配给处理模块110的内存资源。
在步骤270,内存资源管理模块130可以修改可用内存资源的大小。所述修改可用内存资源的大小可以包括将所述可用内存资源的大小减去分配内存资源的大小。例如,可用内存资源的大小为2g(gigabyte),当2g的可用内存资源被分配占用1g后,可用内存资源的大小会被内存资源管理模块130修改为1g。
在步骤280,内存资源管理模块130可以向处理模块110发送分配内存资源地址。所述分配内存资源地址可以用于表示分配内存资源的位置。
在一些实施例中,内存资源管理模块130可以在步骤260之前执行步骤270,也可以在步骤260之后执行步骤270。在一些实施例中,内存资源管理模块130也可以同时执行步骤260和步骤270。
图3为本发明的内存释放示例流程图。
在步骤310,内存资源管理模块130可以确定分配内存资源已被释放。所述释放分配内存资源可以包括处理模块110在使用完毕分配内存资源后,将所述分配内存资源进行释放。
在步骤320,内存资源管理模块130可以修改可用内存资源的大小。所述修改可用内存资源的大小可以包括在可用内存资源的基础上加上释放的内存资源的大小。例如,可用内存资源的大小修为1g,当处理模块110将占用的1g的内存资源使用完毕释放后,内存资源管理模块130可以将可用内存资源的大小修改为2g。
图4为本发明内存资源管理系统的一种计算机设备的架构示例图。
所述计算机400可以是一个通用目的的计算机,或是一个有特定目的的计算机。本发明中的内存资源管理系统能够被所述计算机设备架构通过其硬件设备、软件程序、固件以及它们的组合所实现。为了方便起见,图4中只绘制了一台计算机设备的架构,但是内存资源管理系统所需要的信息的相关计算机功能是可以以分布的方式、由一组相似的平台所实施的,分散系统的处理负荷。
所述计算机设备架构可以包括通信端口440,与之相连的可以是实现数据通信的网络。所述计算机设备架构还可以包括一个处理器470用于执行程序指令。所述计算机设备架构包括一个内部通信总线410,不同形式的程序储存单元以及数据储存单元,例如硬盘420,只读存储器(rom)460,随机存取存储器(ram)450,能够被配置为存储所述计算机设备架构处理和/或通信使用的各种数据文件,以及处理器470所执行的可能的程序指令。所述计算机设备架构还可以包括一个输入/输出组件430,支持所述计算机设备架构与外部(例如,键盘)之间的数据和/或信息交互。所述计算机设备架构也可以通过通信网络接受程序及数据。
在一些实施例中,本发明中的内存资源管理系统可以包括fpga。在一些实施例中,内存资源管理系统中的处理模块110和/或内存管理模块130可以由处理器470实现,存储模块120可以由硬盘420,只读存储器(rom)460,或随机存取存储器(ram)450实现。
在一些实施例中,fpga内存资源总共12g内存,其中8g用于数据处理使用,4g用于存储生成的ct图像。将内存资源设为允许两个计算任务同时运行,每一个计算任务可以使用的内存资源为6g,其中4g用于数据处理,2g用于存储。在处理数据量较大时(超过1g时),该方式与现有技术常用的临时动态申请资源方式相比,性能有大幅提高,可减少大量资源申请和释放的操作。该方式可以减少的内存动态操作数量是非常可观的。其性能提升可以达到提升100%。
以上所述仅为本发明的优选实施而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。