不同计算单元共享内存池的内存池管理方法和相关的计算机可读介质和内存池管理装置的制造方法

文档序号:10517835阅读:396来源:国知局
不同计算单元共享内存池的内存池管理方法和相关的计算机可读介质和内存池管理装置的制造方法
【专利摘要】一种内存池管理方法,包括:根据多个计算单元的信息来分配存储装置中的多个内存池,其中所述多个计算单元在相同的处理器上独立地执行;以及将所述多个内存池的其中之一指派给所述多个计算单元的其中之一,其中所述多个计算单元中的不同计算单元共享所述多个内存池中的至少一个。
【专利说明】不同计算单元共享内存池的内存池管理方法和相关的计算机 可读介质和内存池管理装置
[0001] 相关申请的交叉引用
[0002]本申请要求2014年5月28日递交的申请号为62/003,611的美国临时案的优先权, 在此合并参考该申请案的申请标的。
技术领域
[0003]本发明公开的实施例涉及内存池 (memory pool)管理,特别是关于不同计算单元 共享一个内存池的内存池管理方法和相关的计算机可读介质和内存池管理装置。
【背景技术】
[0004] 为了完成一个程序(process),多个计算单元(或线程)可在相同的处理器(如,图 形处理单元(GPU))上独立地执行。内存池管理函数(memory pool management function) 通常用于管理由处理器访问的存储装置中分配的内存池。在GPU采用的传统内存池管理设 计中,每个计算单元都有自己的内存池。换句话说,在计算单元和内存池之间具有一对一的 映射。当一个程序的计算单元的数量很大时,在存储装置中分配的内存池的数量也会很大。 如此一来,GPU所使用的存储装置需要具有较大的内存大小来满足计算单元的要求,这必然 会增加生产成本。

【发明内容】

[0005] 根据本发明的示例性实施例,提出了一种不同计算单元共享一个内存池的内存池 管理方法和相关的计算机可读介质和内存池管理装置,以解决上述问题。
[0006] 根据本发明的第一方面,本发明公开了一种示例性内存池管理方法。示例性内存 池管理方法包括:根据多个计算单元的信息来分配(allocate)存储装置中的多个内存池, 其中所述多个计算单元在相同的处理器上独立地执行;以及将所述多个内存池的其中之一 指派(assign)给所述多个计算单元中的其中之一,其中所述多个计算单元中的不同计算单 元共享所述多个内存池中的至少一个。
[0007] 根据本发明的第二方面,本发明公开了一种示例性非暂时性计算机可读介质 (non-transitory machine readable medium)。不例性非暂时性计算机可读介质具有存储 在其中的程序代码。当被处理器执行时,所述程序代码指示所述处理器执行以下步骤:根据 多个计算单元的信息分配存储装置中的多个内存池,其中所述多个计算单元在所述处理器 上独立地执行,以及将所述多个内存池的其中之一指派给所述多个计算单元的其中之一, 其中所述多个计算单元中的不同计算单元共享所述多个内存池中的至少一个。
[0008] 根据本发明的第三方面,本发明公开了一种示例性内存池管理装置。示例性内存 池管理装置包括分配电路(allocating circuit)和调度电路(dispatching circuit)。所 述分配电路用于根据多个计算单元的信息分配存储装置中的多个内存池,其中所述多个计 算单元在相同的处理器上独立地执行。所述调度电路用于将所述多个内存池的其中之一指 派给所述多个计算单元的其中之一,其中所述多个计算单元中的不同计算单元共享所述多 个内存池中的至少一个。
[0009] 对于已经阅读后续由各附图及内容所显示的较佳实施方式的本领域的技术人员 来说,本发明的各目的是明显的。
【附图说明】
[0010] 图1是根据本发明一实施例的计算系统的示意图。
[0011] 图2是根据本发明一实施例的第一内存池管理的流程图。
[0012] 图3是在存储装置中分配的多个内存池的示意图。
[0013] 图4是根据本发明一实施例的寻找最常使用的内存池的方法的流程图。
[0014] 图5是在内存池的数量不小于计算单元的数量的情况下内存池管理的示例图。
[0015] 图6是根据本发明一实施例的第二内存池管理的流程图。
[0016] 图7是在内存池的数量小于计算单元的数量的情况下内存池管理的示例图。
[0017] 图8是根据本发明一实施例的另一计算系统的示意图。
【具体实施方式】
[0018] 在权利要求书及说明书中使用了某些词汇来指称特定的组件。所属领域中的技术 人员应可理解,硬件制造商可能会用不同的名词来称呼同样的组件。本权利要求书及说明 书并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准 贝1J。在权利要求书及说明书中所提及的「包括」为开放式的用语,故应解释成「包括但不限定 于」。另外,「耦接」一词在此包括任何直接及间接的电气连接手段。因此,若文中描述第一装 置耦接于第二装置,则代表所述第一装置可直接电连接于所述第二装置,或通过其他装置 或连接手段间接地电连接至所述第二装置。
[0019] 图1是根据本发明一实施例的计算系统的示意图。计算系统100包括处理器102、高 速缓存104和存储装置106,其中高速缓存104耦接至处理器102和存储装置106。高速缓存 104是一个可选的组件,这取决于实际的设计考虑。例如,在一个替代的计算系统设计中,可 以省略高速缓存104。例如,但不限制本发明,计算系统100可以是图形处理系统,处理器102 可以是图形处理单元(GPU)、中央处理单元(CPU)或任何其他类型的处理器(例如,数字信号 处理器(DSP))。存储装置106是非暂时性计算机可读介质,例如可以是动态随机存取存储器 (DRAM)、静态随机存取存储器(SRAM)或任何其他类型的可以用来保存数据(例如,局部变 量)的存储器。在该实施例中,存储装置106中存储有程序代码PR0G。当被载入并被处理器 102执行时,程序代码PR0G指示处理器102执行内存池管理函数。具体来说,程序代码PR0G是 内存池管理软件,用于执行所提出的内存池共享/再使用(sharing/reus ing)的内存池管 理。在该实施例中,该内存池管理(即,程序代码PROG在处理器102上运行)根据程序的多个 计算单元CU_1-CU_N的信息分配存储装置106中的多个内存池107j-107_M,其中计算单元 CU_1-CU_N在相同的处理器102上独立地执行;并进一步将内存池107_1-107_M中的其中之 一指派给计算单元CU_1-CU_M的其中之一,其中计算单元CU_1-CU_N*的不同计算单元共享 内存池107_1-107_M中的至少一个。计算单元CU_1-CU_N可以通过编程语言来定义。例如,计 算单元CU_1_CU_N中的每一个可以是在0penCL(0pen Computing Language,开放式图形库) 中定义的工作项目(work item)或工作组(work group)。另一个例子,计算单元CU_1_CU_N 中的每一个可以是在OpenCL中定义的像素。然而,这仅作为说明之用,并非用以限制本发 明。
[0020] 在该实施例中,处理器102可以通过高速缓存104从存储装置106加载程序代码 PR0G。然而,这仅作为说明之用。例如,处理器102可以从存储装置106直接加载程序代码 PR0G。应该指出的是,使用相同的存储装置106来存储程序代码PR0G和分配内存池107_1_ 1〇7_Μ仅仅是一个可实行的实施例。作为一种选择,内存池107_1-107_11可以在存储装置106 中分配,以及程序代码PR0G可以存储在另一个存储装置108中。存储装置108是非暂时性计 算机可读介质,可以是DRAM、SRAM、或任何其他类型的可以用来存储程序数据的存储器。此 外,处理器102可以用于直接从存储装置108加载程序代码PR0G。
[0021] 本发明所提出的内存池管理规则可与内存池的数量、计算单元的数量和已使用过 的(ever-used)内存池的可用性和使用率有关。在内存池107_1-107_M的数量不小于计算单 元CU_1-CU_N的数量(即MSN)的情况下,所提出的内存池管理可以用于将已使用过的内存 池或尚未使用的(not-yet-used)内存池指派给计算单元。图2是根据本发明一实施例的第 一内存池管理的流程图。如果可以得到大致相同的结果,则步骤不一定要遵照如图2所示的 顺序来执行。内存池管理方法可以由处理器102加载和执行的程序代码PR0G来执行,可以总 结如下。
[0022] 步骤201:根据多个计算单元的信息来分配存储装置中的多个内存池,其中多个计 算单元在相同的处理器(如GPU)上独立地执行。
[0023]步骤202:在多个计算单元的其中之一的开始执行处。
[0024]步骤204:搜索多个内存池中的已使用过的内存池。
[0025]步骤206:在内存池中是否有已使用过的内存池?如果是的话,进入步骤208;否则, 进入步骤210。
[0026]步骤208:将内存池中的已使用过的内存池指派给计算单元。
[0027] 步骤210:搜索多个内存池中尚未使用的内存池。
[0028] 步骤212:将尚未使用的内存池指派给计算单元。
[0029] 为了完成一个程序,多个计算单元(例如,线程)CU_1_CU_N可以在相同的处理器 102上独立地执行。因此,在处理器102执行任一计算单元CU_1-CU_N之前,内存池管理函数 (即,在处理器102上运行的程序代码PR0G)分配存储装置106中的多个内存池107_1-107_M, 其中MSN(步骤201)。在一些实施例中,在将被处理器102执行的计算单元CU_1-CU_N被确定 后,内存池107_1-107_11才被分配。换句话说,内存池107_1-107_M会根据所确定的计算单元 CU_1-CU_N而被分配。内存池管理函数支持共享/再使用一个内存池。最初,内存装置106中 分配的所有内存池1 〇7_1-107_]?均为尚未使用的内存池。当一个尚未使用的内存池被选中 并被指派给第一计算单元时,在第一计算单元的执行期间,该尚未使用的内存池成为使用 中的(in-used)内存池。在第一计算单元的执行完成之后,该使用中的内存池被释放,然后 成为具有使用计数(used count)(设置为一个更新的数值(例如,1))的已使用过的内存池。 当已使用过的内存池被选择并被指派给比第一计算单元晚执行的第二计算单元时,在第二 计算单元执行期间,该已使用过的内存池成为使用中的内存池。在第二计算单元的执行完 成之后,该使用中的内存池被释放,并成为具有使用计数(设置为另一个更新的数值(例如, 2))的已使用过的内存池。
[0030]当处理器102开始执行计算单元CU_1-CU_N的其中之一时,内存池管理函数获得来 自该计算单元的内存池查询(步骤202)。作为一种选择,当处理器102开始执行计算单元CU_ 1 -CU_N的其中之一时,流程可以直接进入下一步(步骤204)。当计算单元CU_1 -CU_N中的任 何一个开始执行时,流程进入步骤202,并通过随后的步骤(如步骤204、206、210和212;或步 骤204、206和208)找到该计算单元的内存池。
[0031] 在步骤204中,内存池管理函数在内存池107_1-107_M中搜索已使用过的内存池 (即,由先前执行的(executed earlier)不同的计算单元使用过的并且现在不在使用中的 内存池)。选择已使用过的内存池的好处包括:减少高速缓存104的高速缓存写入缺失率 (cache write miss rate),以及减少高速缓存104和存储装置106之间的带宽使用。虽然计 算单元CU_1-CU_N在相同的处理器102上独立地执行,不同的计算单元可以共享相同的内存 池,以及访问在该内存池中的相同的存储地址的数据。因此,当后续执行的(later-executed) 计算单元要存储一写入数据至一存储地址时 ,该存储地址被先前执行的计算单 元读过/写过,会发生该写入数据的高速缓存命中事件,以及该写入数据直接写入到高速缓 存104中,而不需要对存储装置106的进一步内存访问。
[0032]当在内存池107_1-107_M中可以找到已使用过的内存池时,内存池管理函数将已 使用过的内存池指派给计算单元(步骤206和208)。在一个实施例中,内存池管理函数选择 的已使用过的内存池可以是内存池107_1-107_4中最经常使用的一个内存池(特别是在已 使用过的内存池中最经常使用的一个内存池)。图3是在存储装置106中分配的多个内存池 107_1-107_11的示意图。内存池107_1-107_M的每一个具有用于存储使用计数的第一部分和 用于存储数据(例如,计算单元的局部变量)的第二部分。内存池的使用计数记录该内存池 已被一个计算单元使用过的次数。因此,内存池管理函数可以检查所有内存池107_1-107_M 的使用计数,来确定内存池107_1_107_11中的哪一个是被最频繁使用的。在一些实施例中, 内存池107_1-107_M的使用计数可以存储在存储装置106的其他部分或任何其他存储装置 中,而不应限制在发明公开的实施例中。
[0033]例如,内存池管理函数可以基于下面的伪代码从内存池107_1-107_M中找到最常 使用的内存池。
[0035]在上面的伪代码中,C_MP代表最常使用的内存池,并最初设置为第一内存池(例 如,MP_1 = 107_1)。当下一个内存池(例如,MP_i = 107_2)具有的相应使用计数MP_i.used_ cnt大于当前选择的最常使用的内存池的使用计数C_MP.used_cnt时,C_MP被更新为MP_i。 然而,当下一个内存池(例如,MP_i = 107_2)具有的相应使用计数MP_i .used_cnt不大于当 前选择的最常使用的内存池的使用计数C_MP. used_Cnt时,C_MP保持不变。在内存池 107_2_ 1〇7_Μ的使用计数已被检查之后,就可以找到最常使用的内存池 C_MP。
[0036]在另一个实施例中,该内存池管理函数可以基于排序算法找到内存池107_1-107_ Μ中最常使用的内存池。图4是根据本发明一实施例的寻找最常使用的内存池的方法的流程 图。在步骤402中,内存池管理函数采用预定的排序算法,基于内存池107_1-107_11的使用计 数来排序内存池107_1-107_Μ。在步骤404中,按照一定的排列顺序创建内存池107_1-107_Μ 的列表。在步骤406中,根据基于内存池的使用计数来排序的内存池的列表,决定最常使用 的内存池。在列表的内存池107_1-107_Μ按照使用计数升序来排序的情况下,列表中的最后 一个内存池被确定为最常使用的内存池。在列表的内存池107_1-107_Μ按照使用计数降序 来排序的另一种情况下,列表中的第一个内存池被确定为最常使用的内存池。在一些实施 例中,其他的方法也可以用来确定内存池107_1-107_Μ的使用频率,不应被限制在本发明的 实施例中。
[0037]在步骤206中,可能未能找到任何已使用过的内存池以供选择。例如,先前执行的 计算单元使用过的每个内存池均是目前正在执行的计算单元的使用中的内存池。因此,内 存池管理函数搜索内存池107_1-107_11中的尚未使用的内存池,并将在内存池107_1-107_Μ 中找到的未使用的内存池指派给计算单元(步骤210和212)。由于内存池107_1-107_Μ的数 量不小于计算单元CU_1-CU_N的数量,以及多个计算单元可以共享一个内存池(即,由一个 或多个后续执行的计算单元再使用),这就保证了内存池管理函数可以从内存池1〇7_1_ 107_M中找到一个尚未使用的内存池。
[0038]图5是在内存池的数量不小于计算单元的数量的情况下内存池管理的示例图。在 这个例子中,内存池的数量与计算单元的数量相等。如图5所示,有七个计算单元(例如,线 程)⑶〇-⑶6和七个内存池 MPq-MP6。计算单元⑶〇-⑶2共享内存池 MP2。例如,内存池 MP2首先被 计算单元CUo使用,然后被计算单元CUi和CU2再使用(re-used),其中计算单元CU〇-CU2可以一 个接一个地执行。计算单元⑶3和CU4共享内存池 MP3。例如,内存池 MP3首先被计算单元⑶3使 用,然后被计算单元CU4再使用,计算单元⑶3、CU4可以一个接一个地执行。计算单元⑶5和⑶6 共享内存池 MP5。例如,内存池 MP5首先被计算单元CU5使用,然后被计算单元CU6再使用,计算 单元CU5和⑶6可以一个接一个地执行。在这个例子中,通过使用分配的所有内存池 MPQ-MP6 中的三个内存池 mp2、mp3和mp5,包括七个计算单元⑶0-⑶6的相同处理器完成一个程序。因 此,剩余的内存池 MPo、MPi、MP4和MP6保持未使用。与指派一个专用的内存池给每个计算单元 相比,多个计算单元共享一个内存池,可以减少高速缓存写入缺失率以及高速缓存和存储 装置之间的带宽使用。
[0039] 在内存池107_1-107_M数量小于计算单元CU_1-CU_N的数量(S_<N)的另一种情 况下,所提出的内存池管理可以用于将已使用过的内存池、尚未使用的内存池或释放的内 存池 (released memory pool)指派给计算单元。图6是根据本发明一实施例的第二内存池 管理的流程图。如果可以得到大致相同的结果,则步骤不一定要遵照如图6所示的顺序来执 行。内存池管理方法可以处理器102加载并执行的程序代码PR0G来执行。图6和图2中的内存 池管理方法的主要区别在于,图6中的内存池管理方法还包括以下步骤。
[0040]步骤602:在内存池中找到尚未使用的内存池?如果是,进入步骤212;如果否,进入 步骤604。
[0041]步骤604:等待一释放的内存池(即,使用中的内存池释放为已使用过的内存池)。 当释放的内存池可用时,流程进入步骤208。
[0042]内存池管理函数支持共享/再使用一个内存池。在一计算单元的执行完成后,使用 中的内存池被释放,并成为已使用过的内存池。由于内存池的数量小于计算单元的数量,在 一个计算单元的开始执行处,可能所有的内存池都在使用中。因此,在内存池107_1_107_M 中没有搜索到已使用过的内存池时(步骤204),在内存池107_1-107_M中可能也搜索不到未 使用的内存池(步骤210)。在步骤602中,内存池管理函数检查在内存池107_1-107_M中是否 能够找到尚未使用的内存池。当在内存池1 〇7_1 -107_M中找到尚未使用的内存池时,内存池 管理函数将尚未使用的内存池指派给计算单元(步骤212)。然而,当在内存池107_1-107_M 中没有找到尚未使用的内存池时,内存池管理函数须等待释放的内存池(步骤604)。在当前 计算单元的开始执行处,由于所有的内存池107_1-107_M都在使用中,因此使用中的内存池 107 j-107_M*没有可以被指派给当前计算单元的内存池。当一个先前的计算单元执行完 成时,相关的使用中的内存池被释放,然后成为一个可供选择的已使用过的内存池。因此, 当在存储装置106中的一释放的内存池是可用的时,内存池管理函数将该释放的内存池指 派给该当前计算单元(步骤208)。
[0043]图7是在内存池的数量小于计算单元的数量的情况下内存池管理的示例图。如图7 所示,有七个计算单元(例如,线程)⑶『⑶6和三个内存池 ΜΡο ' -MP2。计算单元⑶『CU2共享内 存池 MPo'。例如,计算单元⑶〇首先使用内存池 MPo',然后计算单元⑶:和⑶2再使用,其中计算 单元⑶Q-⑶2可以一个接一个地执行。计算单元⑶3和CU4共享内存池 MPl '。例如,计算单元⑶3 首先使用内存池 MPl ',然后计算单元CU4再使用,计算单元⑶3和CU4可以一个接一个地执行。 计算单元⑶5和⑶6共享内存池 MP2'。例如,计算单元⑶5首先使用内存池 MP2',然后计算单元 CU6再使用,计算单元〇]5和〇]6可以一个接一个地执行。在这个例子中,仅使用在存储装置中 分配的三个内存池 MPo ' -MP2 ',包括七个计算单元⑶0-⑶6的相同处理器可以完成一个程序。 因此,该存储装置(例如,DRAM或SRAM)的内存大小要求可以放宽。此外,与给每个计算单元 指派一个专用的内存池相比,多个计算单元共享一个内存池可以减少高速缓存的高速缓存 写入缺失率以及高速缓存和存储装置之间的带宽使用。
[0044] 在上述实施例中,所提出的内存池管理可以使用基于软件的设计来实现,如在处 理器102上运行的程序代码PR0G。然而,这是做为说明的用途。在其他实施例中,所提出的内 存池管理还可以使用基于硬件的设计来实现,如专用于执行内存池管理的纯硬件。
[0045] 图8是根据本发明一实施例的另一计算系统的示意图。计算系统800包括内存池管 理装置802和上述处理器102、高速缓存104和存储装置106。在这个实施例中,内存池管理装 置802包括分配电路804和调度电路806。内存池管理器802是内存池管理硬件,用于执行提 出的具有内存池共享/再利用的内存池管理。分配电路804用于根据将被处理器102执行的 计算单元CU_1-CU_M的信息来分配存储装置106中的内存池107_1-107_M。调度电路806用于 将内存池107_1-107_M中的一个指派给计算单元CU_1-CU_M中的一个。在一个示例性设计 中,如图2所示的内存池管理方法,可以使用内存池管理器802来实施。例如,步骤201由分配 电路804来执行,以及步骤202、204、206、208、210和212由调度电路806来执行。在另一个示 例性设计中,图6所示的内存池管理方法可以使用内存池管理器802来实施。例如,步骤201 由分配电路804来执行,以及步骤202、204、206、208、210、212、602和604由调度电路806来执 行。作为本领域的技术人员,在阅读以上关于基于软件的内存池管理设计(例如,内存池管 理由在处理器102上运行的程序代码来执行)的段落之后,可以很容易地理解基于硬件的内 存池管理设计(例如,内存池管理由分配电路804和调度电路806来执行)的细节,为简洁起 见,此处省略进一步的说明。
[0046]本领域的技术人员将容易地观察到,在不脱离本发明的精神和范围内,可以对装 置和方法进行多种修改和变动。因此,本发明的范围应以权利要求的范围为准。
【主权项】
1. 一种内存池管理方法,其特征在于,包括: 根据多个计算单元的信息来分配存储装置中的多个内存池,其中所述多个计算单元在 相同的处理器上独立地执行;以及 将所述多个内存池的其中之一指派给所述多个计算单元的其中之一,其中所述多个计 算单元中的不同计算单元共享所述多个内存池中的至少一个。2. 如权利要求1所述的内存池管理方法,其特征在于,所述多个内存池的数量不小于所 述多个计算单元的数量。3. 如权利要求2所述的内存池管理方法,其特征在于,所述将所述多个内存池的其中之 一指派给所述多个计算单元的其中之一的步骤包括: 在所述多个计算单元的一计算单元的开始执行处,搜索所述多个内存池中的已使用过 的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,将所述已使用过的内存池指派 给所述计算单元。4. 如权利要求3所述的内存池管理方法,其特征在于,所述已使用过的内存池是所述多 个内存池中的最经常使用的内存池。5. 如权利要求3所述的内存池管理方法,其特征在于,所述将所述多个内存池的其中之 一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述已使用过的内存池时,将所述多个内存池中的尚 未使用的内存池指派给所述计算单元。6. 如权利要求1所述的内存池管理方法,其特征在于,所述多个内存池的数量小于所述 多个计算单元的数量。7. 如权利要求6所述的内存池管理方法,其特征在于,所述将所述多个内存池的其中之 一指派给所述多个计算单元的其中之一的步骤包括: 在所述多个计算单元的一计算单元的开始执行处,搜索所述多个内存池中的已使用过 的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,将所述已使用过的内存池指派 给所述计算单元。8. 如权利要求7所述的内存池管理方法,其特征在于,所述已使用过的内存池是所述多 个内存池中的最经常使用的内存池。9. 如权利要求7所述的内存池管理方法,其特征在于,所述将所述多个内存池的其中之 一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述已使用过的内存池时,搜索所述多个内存池中的 尚未使用的内存池;以及 当在所述多个内存池中找到所述尚未使用的内存池时,将所述尚未使用的内存池指派 给所述计算单元。10. 如权利要求7所述的内存池管理方法,其特征在于,所述将所述多个内存池的其中 之一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述尚未使用的内存池时,等待所述多个内存池中的 释放的内存池;以及 当所述释放的内存池可用时,将所述释放的内存池指派给所述计算单元。11. 一种非暂时性计算机可读介质,其中存储有程序代码,其特征在于,当由处理器执 行时,所述程序代码指示所述处理器执行以下步骤: 根据多个计算单元的信息来分配存储装置中的多个内存池,其中所述多个计算单元在 所述处理器上独立地执行;以及 将所述多个内存池的其中之一指派给所述多个计算单元的其中之一,其中所述多个计 算单元中的不同计算单元共享所述多个内存池中的至少一个。12. 如权利要求11所述的非暂时性计算机可读介质,其特征在于,所述多个内存池的数 量不小于所述多个计算单元的数量。13. 如权利要求12所述的非暂时性计算机可读介质,其特征在于,所述将所述多个内存 池的其中之一指派给所述多个计算单元的其中之一的步骤包括: 在所述多个计算单元的一计算单元的开始执行处,搜索所述多个内存池中的已使用过 的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,将所述已使用过的内存池指派 给所述计算单元。14. 如权利要求13所述的非暂时性计算机可读介质,其特征在于,所述已使用过的内存 池是所述多个内存池中的最经常使用的内存池。15. 如权利要求13所述的非暂时性计算机可读介质,其特征在于,所述将所述多个内存 池的其中之一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述已使用过的内存池时,将所述多个内存池中的尚 未使用的内存池指派给所述计算单元。16. 如权利要求11所述的非暂时性计算机可读介质,其特征在于,所述多个内存池的数 量小于所述多个计算单元的数量。17. 如权利要求16所述的非暂时性计算机可读介质,其特征在于,所述将所述多个内存 池的其中之一指派给所述多个计算单元的其中之一的步骤包括: 在所述多个计算单元的一计算单元的开始执行处,搜索所述多个内存池中的已使用过 的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,将所述已使用过的内存池指派 给所述计算单元。18. 如权利要求17所述的非暂时性计算机可读介质,其特征在于,所述已使用过的内存 池是所述多个内存池中的最经常使用的内存池。19. 如权利要求17所述的非暂时性计算机可读介质,其特征在于,所述将所述多个内存 池的其中之一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述已使用过的内存池时,搜索所述多个内存池中的 尚未使用的内存池;以及 当在所述多个内存池中找到所述尚未使用的内存池时,将所述尚未使用的内存池指派 给所述计算单元。20. 如权利要求17所述的非暂时性计算机可读介质,其特征在于,所述将所述多个内存 池的其中之一指派给所述多个计算单元的其中之一的步骤还包括: 当在所述多个内存池中没有找到所述尚未使用的内存池时,等待所述多个内存池中的 释放的内存池;以及 当所述释放的内存池可用时,将所述释放的内存池指派给所述计算单元。21. -种内存池管理装置,其特征在于,包括: 分配电路,用于根据所述多个计算单元的信息来分配存储装置中的多个内存池,其中 所述多个计算单元在相同的处理器上独立地执行; 调度电路,将所述多个内存池的其中之一指派给所述多个计算单元的其中之一,其中 所述多个计算单元中的不同计算单元共享所述多个内存池中的至少一个。22. 如权利要求21所述的内存池管理装置,其特征在于,所述多个内存池的数量不小于 所述多个计算单元的数量。23. 如权利要求22所述的内存池管理装置,其特征在于, 在所述多个计算单元的一计算单元的开始执行处,所述调度电路用于搜索所述多个内 存池中的已使用过的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,所述调度电路用于将所述已使 用过的内存池指派给所述计算单元。24. 如权利要求23所述的内存池管理装置,其特征在于,所述已使用过的内存池是所述 多个内存池中的最经常使用的内存池。25. 如权利要求23所述的内存池管理装置,其特征在于,当在所述多个内存池中没有找 到所述已使用过的内存池时,所述调度电路用于将所述多个内存池中的尚未使用的内存池 指派给所述计算单元。26. 如权利要求21所述的内存池管理装置,其特征在于,所述多个内存池的数量小于所 述多个计算单元的数量。27. 如权利要求26所述的内存池管理装置,其特征在于, 在所述多个计算单元的一计算单元的开始执行处,所述调度电路用于搜索所述多个内 存池中的已使用过的内存池;以及 当在所述多个内存池中找到所述已使用过的内存池时,所述调度电路用于将所述已使 用过的内存池指派给所述计算单元。28. 如权利要求27所述的内存池管理装置,其特征在于,所述已使用过的内存池是所述 多个内存池中的最经常使用的内存池。29. 如权利要求27所述的内存池管理装置,其特征在于, 当在所述多个内存池中没有找到所述已使用过的内存池时,所述调度电路用于搜索所 述多个内存池中的尚未使用的内存池;以及 当在所述多个内存池中找到所述尚未使用的内存池时,所述调度电路用于将所述尚未 使用的内存池指派给所述计算单元。30. 如权利要求27所述的内存池管理装置,其特征在于,当在所述多个内存池中没有找 到所述尚未使用的内存池时,所述调度电路用于等待所述多个内存池中的释放的内存池; 以及 当所述释放的内存池可用时,所述调度电路用于将所述释放的内存池指派给所述计算 单元。
【文档编号】G06F12/06GK105874439SQ201580003539
【公开日】2016年8月17日
【申请日】2015年5月28日
【发明人】朱育成, 张胜凯, 陈勇铭, 朱启诚
【申请人】联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1