一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存分配装置、方法、设备及介质与流程

2022-11-16 07:51:45 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,尤其涉及一种内存分配装置、方法、设备及介质。


背景技术:

2.非易失性内存主机控制器接口规范(nvme)是一种专门用于访问通过pcie总线附加的非易失性内存介质的通讯规范。nvme协议和pcie协议相结合,利用固态硬盘的并行特性,提高了nand的读取和写入速度,实现了更快的非易失性存储。如图1a所示nvme是一种高性能,高度可扩展的存储协议,用来连接主机和内存系统。
3.nvme接口协议的功能包括:支持64k命令队列、可以使用低cpu周期为每个队列发送64k命令、延迟约为2.8微秒、可以直接与系统cpu通信、nvme可以实现超过一百万的iop、nvme将主机端内存分为页的集合,页的大小可以在寄存器中进行配置。nvme协议将内存页通过prp链表的格式组织起来。通过一个入口地址访问各自的prp链表。如下图1b所示,prp链表可以有以下三种存在形式:如链表a所示,入口地址指向一个数据索引页,数据索引页中不会存放任何业务上的数据信息,仅仅存放每一个数据页的索引值。该链表中数据索引页全部存放数据页的索引值。如链表b所示,入口地址直接指向一个数据页,数据页直接用来存储业务上的数据信息。如链表n所示,此时业务n所需的存储空间较大,需要进行多级的数据索引页来级联。此时每一个数据索引页的最后一个地址都用来存放下一个数据索引页的入口地址。
4.然而,现有以prp的形式内存分配的方式中通常是将内存碎片化成最小的颗粒,然后再组织各个最小颗粒形成prp链表,此种方式组织形成的空间往往不连续,而且内存空间的利用率也较低。此外nvme的内存组织方式除了prp的形式还有sgl的形式,然而无论是prp还是sgl,本质上都是描述内存中的一段数据空间。这段数据空间可以是连续的,也可以是离散的。对于prp来讲,一段数据空间只能映射到某一个物理页。而对于sgl来讲,可以映射到任意大小的连续物理空间。灵活性更大,可描述的空间也更大,但是相较于prp格式有点复杂。


技术实现要素:

5.有鉴于此,有必要针对以上技术问题,提供一种内存分配装置、方法、设备及介质。
6.根据本发明的第一方面,提供了一种内存分配装置,所述装置包括:
7.划分单元,所述划分单元用于将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
8.与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
9.任务解码单元,所述任务解码单元用于对待处理任务进行解析以获取任务信息;
10.分发引擎,所述分发引擎用于根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及
利用所述目标内存索引池和所述目标索引值组建prp链表。
11.在一些实施例中,所述任务解码单元进一步用于:
12.获取待处理任务所需内存空间容量;
13.并判断待处理任务是否具有对应的旧prp链表;
14.响应于待处理任务没有对应的旧prp链表,则将待处理任务所需内存空间容量作为所述任务信息;
15.响应于待处理任务有对应的旧prp链表,则将旧prp链表和待处理任务所需内存空间容量作为所述任务信息。
16.在一些实施例中,响应待处理任务所需内存空间容量作为所述任务信息,所述分发引擎进一步用于:
17.判断待处理任务所需内存空间容量是否等于零;
18.响应于待处理任务所需内存空间容量等于零,则创建空的prp链表;
19.响应于待处理任务所需内存空间容量不等于零,则基于以下规则创建prp链表:
20.判断是否存在颗粒度与待处理任务所需内存空间容量相同的内存资源池;
21.响应于存在,则将颗粒度与待处理任务所需内存空间容量相同的内存资源池对应的内存索引池作为目标内存索引池,以及将目标内存索引池中的一个索引值作为所述目标索引值;
22.响应于不存在,则将多个内存资源池中可用空间大于待处理任务所需内存空间容量、且颗粒度最大的内存资源池对应的内存索引池作为目标内存索引池,以及从目标内存索引池按照公式一从目标内存索引池中选取可用索引值作为目标索引值;
[0023][0024]
按照以下规则对每个目标索引值进行重组以生成新索引值;
[0025]
为目标索引值生成crc校验码;
[0026]
组合目标索引值的有效标记、所属资源池、目标索引值以及crc校验码以生成新索引值;
[0027]
组合所有新索引值以生成与待处理任务对应的prp链表。
[0028]
在一些实施例中,响应于旧prp链表和待处理任务所需内存空间容量作为所述任务信息,所述分发引擎进一步用于:
[0029]
计算待处理任务所需内存空间容量与旧prp链表对应的空间容量的差值;
[0030]
响应于所述差值大于零,则基于所述差值从旧prp链表对应的内存索引池中按照公式二选取可用的索引值作为扩展索引值;
[0031][0032]
按照以下规则对每个扩展索引值进行重组以生成新索引值;
[0033]
为扩展索引值生成crc校验码;
[0034]
组合扩展索引值的有效标记、所属资源池、扩展索引值以及crc校验码以生成新索引值;
[0035]
将所有新索引值添加到旧prp链表中以生成与待处理任务对应的prp链表。
[0036]
在一些实施例中,响应于所述差值等于零,所述分发引擎进一步用于:
[0037]
获取旧prp链表中需要替换的索引值,并从旧prp链表对应的内存索引池中为每个需要替换的索引值选取可用的索引值作为填充索引值;
[0038]
按照以下规则对每个填充索引值进行重组以生成新索引值;
[0039]
为填充索引值生成crc校验码;
[0040]
组合填充索引值的有效标记、所属资源池、填充索引值以及crc校验码以生成新索引值;
[0041]
利用每个填充索引值的新索引值覆盖旧prp链表中对应的需要替换的索引值以生成与待处理任务对应的prp链表。
[0042]
在一些实施例中,所述装置还包括:
[0043]
prp链表存储池,所述prp链表存储池用于存放所述分发引擎组建的prp链表。
[0044]
在一些实施例中,划分单元进一步用于:
[0045]
将ddr划分三个内存资源池,三个内存资源池的颗粒度分别为4kb、8.kb和16kb。
[0046]
根据本发明的第二方面,提供了一种内存分配方法,所述方法包括:
[0047]
将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
[0048]
设置与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
[0049]
由任务解码单元对待处理任务进行解析以获取任务信息;
[0050]
由分发引擎根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及利用所述目标内存索引池和所述目标索引值组建prp链表。
[0051]
根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:
[0052]
至少一个处理器;以及
[0053]
存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的内存分配方法。
[0054]
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的内存分配方法。
[0055]
上述一种内存分配装置,通过对内存空间按照不同大小的颗粒度进行划分,对于不同的任务可以提供与之匹配的内存空间,可以有效提升内存空间的利用效率。
[0056]
此外,本发明还提供了一种内存分配方法、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
[0057]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0058]
图1a为传统nvme协议的存储系统示意图;
[0059]
图1b为传统nvme prp链表结构示意图;
[0060]
图2为本发明一个实施例提供的一种内存分配装置的结构示意图;
[0061]
图3为本发明另一个实施例提供的内存资源池中回环ram结构示意图;
[0062]
图4为本发明一个实施例提供的任务解码流水示意图;
[0063]
图5为本发明一个实施例提供的内存索引值的数据格式示意图;
[0064]
图6为本发明另一个实施例提供一种内存分配装置工作流程图及软件交互机制的示意图;
[0065]
图7a为发明一个实施例提供的空链表结构示意图;
[0066]
图7b为发明一个实施例提供的扩展链表结构示意图;
[0067]
图7c为发明一个实施例提供的填充链表结构示意图;
[0068]
图8为本发明一个实施例提供的一种内存分配方法的流程图;
[0069]
图9为本发明另一个实施例中计算机设备的内部结构图。
具体实施方式
[0070]
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
[0071]
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
[0072]
在一个实施例中,请参照图2所示,本发明提供了一种内存分配装置,具体来说,所述装置包括:
[0073]
划分单元,所述划分单元用于将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
[0074]
与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
[0075]
任务解码单元,所述任务解码单元用于对待处理任务进行解析以获取任务信息;
[0076]
分发引擎,所述分发引擎用于根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及利用所述目标内存索引池和所述目标索引值组建prp链表。
[0077]
上述一种内存分配装置,通过对内存空间按照不同大小的颗粒度进行划分,对于不同的任务可以提供与之匹配的内存空间,可以有效提升内存空间的利用效率。
[0078]
在一些实施例中,所述任务解码单元进一步用于:
[0079]
获取待处理任务所需内存空间容量;
[0080]
并判断待处理任务是否具有对应的旧prp链表;
[0081]
响应于待处理任务没有对应的旧prp链表,则将待处理任务所需内存空间容量作为所述任务信息;
[0082]
响应于待处理任务有对应的旧prp链表,则将旧prp链表和待处理任务所需内存空间容量作为所述任务信息。
[0083]
在一些实施例中,响应待处理任务所需内存空间容量作为所述任务信息,所述分发引擎进一步用于:
[0084]
判断待处理任务所需内存空间容量是否等于零;
[0085]
响应于待处理任务所需内存空间容量等于零,则创建空的prp链表;
[0086]
响应于待处理任务所需内存空间容量不等于零,则基于以下规则创建prp链表:
[0087]
判断是否存在颗粒度与待处理任务所需内存空间容量相同的内存资源池;
[0088]
响应于存在,则将颗粒度与待处理任务所需内存空间容量相同的内存资源池对应的内存索引池作为目标内存索引池,以及将目标内存索引池中的一个索引值作为所述目标索引值;
[0089]
响应于不存在,则将多个内存资源池中可用空间大于待处理任务所需内存空间容量、且颗粒度最大的内存资源池对应的内存索引池作为目标内存索引池,以及从目标内存索引池按照公式一从目标内存索引池中选取可用索引值作为目标索引值;
[0090][0091]
按照以下规则对每个目标索引值进行重组以生成新索引值;
[0092]
为目标索引值生成crc校验码;
[0093]
组合目标索引值的有效标记、所属资源池、目标索引值以及crc校验码以生成新索引值;
[0094]
组合所有新索引值以生成与待处理任务对应的prp链表。
[0095]
在一些实施例中,响应于旧prp链表和待处理任务所需内存空间容量作为所述任务信息,所述分发引擎进一步用于:
[0096]
计算待处理任务所需内存空间容量与旧prp链表对应的空间容量的差值;
[0097]
响应于所述差值大于零,则基于所述差值从旧prp链表对应的内存索引池中按照公式二选取可用的索引值作为扩展索引值;
[0098][0099]
按照以下规则对每个扩展索引值进行重组以生成新索引值;
[0100]
为扩展索引值生成crc校验码;
[0101]
组合扩展索引值的有效标记、所属资源池、扩展索引值以及crc校验码以生成新索引值;
[0102]
将所有新索引值添加到旧prp链表中以生成与待处理任务对应的prp链表。
[0103]
在一些实施例中,所述分发引擎进一步用于:
[0104]
响应于所述差值等于零,则获取旧prp链表中需要替换的索引值,并从旧prp链表对应的内存索引池中为每个需要替换的索引值选取可用的索引值作为填充索引值;
[0105]
按照以下规则对每个填充索引值进行重组以生成新索引值;
[0106]
为填充索引值生成crc校验码;
[0107]
组合填充索引值的有效标记、所属资源池、填充索引值以及crc校验码以生成新索引值;
[0108]
利用每个填充索引值的新索引值覆盖旧prp链表中对应的需要替换的索引值以生成与待处理任务对应的prp链表。
[0109]
在一些实施例中,所述装置还包括:
[0110]
prp链表存储池,所述prp链表存储池用于存放所述分发引擎组建的prp链表。
[0111]
在一些实施例中,划分单元进一步用于:
[0112]
将ddr划分三个内存资源池,三个内存资源池的颗粒度分别为4kb、8.kb和16kb。
[0113]
在又一个实施例中,为了便于理解本发明的方案,下面以应用于图1a存储系统为例详细说明本发明的内存分配装置各部分的主要功能以及工作流程。请再次结合图2所示本发明的内存分配装置包括以下几部分:
[0114]
(1)和固件通信的软件接口,该接口内实现了内存分配装置所需的配置寄存器和状态寄存器,软件可以通过配置寄存器控制本装置的执行方式,同时可以通过状态寄存器获取本装置内部的硬件状态。例如每个内存资源池的大小,以及起始地址,等等。
[0115]
(2)针对业务流上下游引擎通讯的交互机制,在本装置完成当前任务后,可以通过写寄存器的方式通知上游或者下游引擎任务的执行状态。
[0116]
(3)内存索引池的存储装置,如图3所示该存储装置通过回环ram的方式实现,用来存放ddr中内存资源池的不同连续空间块的索引值。例如,如果内存资源池a的大小为16mb,每一个连续空间块大小为4kb,则需要4k个的索引值存入索引池a。索引池a中的索引值是随机的,并不一定会指向连续的空间。
[0117]
内存资源池存在于ddr中,可以是ddr中的任意的连续空间。不同内存资源池的颗粒度不同,意味着内存索引池中每一个索引值所代表的内存空间不同。而内存索引池存在于本地的回环ram中。根据软件配置的每一个内存资源池的起始地址和内存资源池大小,来初始化索引值。在进行内存分发的过程中,根据回环ram的头指针读取待分配的内存空间,写入prp链表中。软件初始化多少个内存资源池,硬件就会建立对应的内存索引池。在内存分配时,每个索引池通过管理自己的资源池。使得分发引擎可以知道ddr的内存资源情况。
[0118]
(4)任务解码单元,该装置通过获取当前任务的存放位置,从任务队列池中获取当前任务信息。并将任务信息发送到分发引擎。
[0119]
解析完成的任务信息通过任务解码单元发送到分发引擎,二者通过valid和ready的握手来实现数据的交换。如图4是任务解码单元和分发引擎进行数据交换的简单时序图。当前cb解码成功并且移交给分发引擎后,任务解码单元可以并行的进行下次任务的解码,以此提升硬件的利用率。
[0120]
(5)内存数据格式的分发引擎,该引擎根据当前任务的需要,从内存索引池中获取索引值,组件prp链表并将组建好的prp链表存入prp列表存储池中。
[0121]
分发引擎的主要功能是根据当前任务的控制信息,采取不同的操作方式来完成对prp链表格式的创建,并且将链表写入内存中的链表存储池。图5是prp链表中索引值的格式,主要有以下几个字段:第一个字段:1bit的有效标记,表示该索引值所代表的地址空间是否有效。第二个字段:5bit的资源池id,记录该索引值指向内存中哪一个资源池。第三字段:21bit的索引值,用来记录资源池的地址偏移。第四字段:crc校验码,格式组建后,产生crc校验码,并且填写到该字段中。分发引擎从索引池中拿到索引值后,构建图5所示的索引值格式,然后根据当前任务开始组建prp链表。
[0122]
(6)支持某种总线协议的主接口,可以通过读写控制来访问soc系统中的其他相关模块。
[0123]
需要说明的是在硬件启动任务执行以及异常处理操作中都是通过软硬件交互的
机制来执行的,如图6所示本发明的内存分配装置的工作流程主要可以分为以下几个步骤:
[0124]
步骤一,系统上电后,固件配置内部的寄存器,包括每一个内存池的大小以及起始地址等等。配置完成后写寄存器的标记位,启动硬件开始工作。
[0125]
步骤二,硬件内部根据各个内存池的大小开始初始化内存池的索引值,并且将索引值写入内存索引池。
[0126]
步骤三,从上游引擎接受任务,并且根据任务需求组建prp链表。
[0127]
步骤四,prp建表完成,通知下游引擎开始工作。
[0128]
在内存分配装置工作期间,可能会有一些例外的情况发生。我们通过中断或者事件上报的形式通知软件进行干预。图6中分别描述了软件对于不同的例外情况的干预机制。对于异常事件,本发明仅仅上报软件,然后开始接收下一个任务。
[0129]
本发明的内存分配装置支持以下几种形式的链表组建:
[0130]
(1)创建空表,如图7a所示提供了一种创建空prp链表的方式,该方式仅仅创建链表的结构,而不会填写任何的数据页信息。此时链表可用的内存空间为0。
[0131]
(2)创建新的链表,这种模式下的任务,分发引擎按照实际业务的空间大小申请内存空间,组建prp链表。
[0132]
(3)创建扩展链表,如图7b所示分发引擎可以获取旧链表的空间大小,然后根据新任务所需的空间大小,在原有链表的基础上扩展。这样新的业务的实际空间就是二者扩展之后的和。
[0133]
(4)填充链表,如图7c所示分发引擎可以获取已经存在prp链表的索引值信息,将无效的索引值用新组建的有效的索引值替换,不改变prp链表的结构。
[0134]
上述一种内存分配装置至少具备以下有益技术效果:该装置基于nvme的prp数据组织格式,可以根据实际业务流需求来灵活申请和组织内存空间颗粒。首先固件将内存空间按照不同的颗粒大小划分,比如4kb,8kb以及16kb的颗粒度,将划分方式通知到本装置;其次本装置根据软件的配置,或者上游硬件引擎的业务需求,申请不同颗粒度的空间,并且以prp的格式来组织数据格式;最后通知下游引擎空间申请成功或者通过中断通知cpu申请失败。藉由不同的颗粒通过prp链表的形式组建成较大的内存空间,同时对于出现的例外情况还提供了两种软硬件的交互方式,可供软件干预处理,具有较佳的稳定性和可靠性。
[0135]
在又一个实施例中,请结合图8所示,本发明还提供了一种内存分配方法100,所述方法包括:
[0136]
步骤101,将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
[0137]
步骤102,设置与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
[0138]
步骤103,由任务解码单元对待处理任务进行解析以获取任务信息;
[0139]
步骤104,由分发引擎根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及利用所述目标内存索引池和所述目标索引值组建prp链表。
[0140]
上述一种内存分配方法,通过对内存空间按照不同大小的颗粒度进行划分,对于不同的任务可以提供与之匹配的内存空间,可以有效提升内存空间的利用效率。
[0141]
在一些实施例中,步骤103,由任务解码单元对待处理任务进行解析以获取任务信
息包括:
[0142]
获取待处理任务所需内存空间容量;
[0143]
并判断待处理任务是否具有对应的旧prp链表;
[0144]
响应于待处理任务没有对应的旧prp链表,则将待处理任务所需内存空间容量作为所述任务信息;
[0145]
响应于待处理任务有对应的旧prp链表,则将旧prp链表和待处理任务所需内存空间容量作为所述任务信息。
[0146]
在一些实施例中,响应待处理任务所需内存空间容量作为所述任务信息,前述步骤104包括:
[0147]
判断待处理任务所需内存空间容量是否等于零;
[0148]
响应于待处理任务所需内存空间容量等于零,则创建空的prp链表;
[0149]
响应于待处理任务所需内存空间容量不等于零,则基于以下规则创建prp链表:
[0150]
判断是否存在颗粒度与待处理任务所需内存空间容量相同的内存资源池;
[0151]
响应于存在,则将颗粒度与待处理任务所需内存空间容量相同的内存资源池对应的内存索引池作为目标内存索引池,以及将目标内存索引池中的一个索引值作为所述目标索引值;
[0152]
响应于不存在,则将多个内存资源池中可用空间大于待处理任务所需内存空间容量、且颗粒度最大的内存资源池对应的内存索引池作为目标内存索引池,以及从目标内存索引池按照公式一从目标内存索引池中选取可用索引值作为目标索引值;
[0153][0154]
按照以下规则对每个目标索引值进行重组以生成新索引值;
[0155]
为目标索引值生成crc校验码;
[0156]
组合目标索引值的有效标记、所属资源池、目标索引值以及crc校验码以生成新索引值;
[0157]
组合所有新索引值以生成与待处理任务对应的prp链表。
[0158]
在一些实施例中,响应于旧prp链表和待处理任务所需内存空间容量作为所述任务信息,前述步骤104包括:
[0159]
计算待处理任务所需内存空间容量与旧prp链表对应的空间容量的差值;
[0160]
响应于所述差值大于零,则基于所述差值从旧prp链表对应的内存索引池中按照公式二选取可用的索引值作为扩展索引值;
[0161][0162]
按照以下规则对每个扩展索引值进行重组以生成新索引值;
[0163]
为扩展索引值生成crc校验码;
[0164]
组合扩展索引值的有效标记、所属资源池、扩展索引值以及crc校验码以生成新索引值;
[0165]
将所有新索引值添加到旧prp链表中以生成与待处理任务对应的prp链表。
[0166]
在一些实施中,响应于所述差值等于零,前述步骤104还包括:
[0167]
则获取旧prp链表中需要替换的索引值,并从旧prp链表对应的内存索引池中为每个需要替换的索引值选取可用的索引值作为填充索引值;
[0168]
按照以下规则对每个填充索引值进行重组以生成新索引值;
[0169]
为填充索引值生成crc校验码;
[0170]
组合填充索引值的有效标记、所属资源池、填充索引值以及crc校验码以生成新索引值;
[0171]
利用每个填充索引值的新索引值覆盖旧prp链表中对应的需要替换的索引值以生成与待处理任务对应的prp链表。
[0172]
在一些实施例中,所述方法还包括:
[0173]
设置prp链表存储池,并由prp链表存储池存放所述分发引擎组建的prp链表。
[0174]
在一些实施例中,步骤101,将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度包括:
[0175]
将ddr划分三个内存资源池,三个内存资源池的颗粒度分别为4kb、8.kb和16kb。
[0176]
根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的内存分配方法,具体来说,所述方法包括以下步骤:
[0177]
将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
[0178]
设置与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
[0179]
由任务解码单元对待处理任务进行解析以获取任务信息;
[0180]
由分发引擎根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及利用所述目标内存索引池和所述目标索引值组建prp链表。
[0181]
根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的内存分配方法,具体来说,包括执行以下步骤:
[0182]
将ddr划分成多个内存资源池,其中,不同内存资源池对应不同颗粒度;
[0183]
设置与每个内存资源池一一对应的内存索引池,每一内存索引池中存放对应内存资源池各颗粒的索引值;
[0184]
由任务解码单元对待处理任务进行解析以获取任务信息;
[0185]
由分发引擎根据所述任务信息从多个内存索引池中选择一个作为目标内存索引池,并从所述目标内存索引池中获取与任务信息匹配的目标索引值,以及利用所述目标内存索引池和所述目标索引值组建prp链表。
[0186]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以
通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0187]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0188]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献