用于使用虚拟分区分配存储单元的部分的方法和分配器技术

技术编号:30820554 阅读:15 留言:0更新日期:2021-11-18 11:19
本发明专利技术涉及用于使用虚拟分区分配存储单元的部分的方法和分配器。具体地,本发明专利技术公开了用于将存储单元的一个或多个部分分配给多个任务以用于存储至少两种类型的数据的方法和存储单元分配器。所述方法包括:接收要存储单元的一个或多个部分存储用于多个任务中的任务的至少两种类型的数据中的特定类型数据的请求;基于请求的一个或多个特性,将请求与存储单元的多种虚拟分区中的一种相关联,每种虚拟分区将存储单元的零个、一个或多于一个部分分配给至少两种类型的数据中的每一种;以及将存储单元的被请求的一个或多个部分从与请求相关联的虚拟分区中分配给特定类型数据的存储单元的零个、一个或多于一个部分中分配给所述任务。所述任务。所述任务。

【技术实现步骤摘要】
用于使用虚拟分区分配存储单元的部分的方法和分配器


[0001]本申请涉及用于分配存储单元的部分以用于存储数据的方法和分配器。

技术介绍

[0002]有很多应用程序希望多个任务在同一存储单元(例如,存储器)中临时存储多种类型的数据,其中,每种类型的数据所需的存储单元的量可以是可变的。例如,如下文更详细所述,图形处理单元可以包括一个或多个逻辑块(其可以被称为统一着色集群),所述一个或多个逻辑块各自被配置成执行着色任务。每个统一着色集群可以包括或可以访问存储单元(其可以被称为统一储存库),所述存储单元被配置成临时存储与统一着色集群执行的着色任务有关的数据。储存在统一储存库中的数据可以分为两类——属性数据和临时数据。属性数据是在执行任务之前存储的数据,其可以用于初始化或配置任务,而临时数据可以是在执行任务期间存储的数据。
[0003]一些着色任务被配置为同时存储属性数据和临时数据,而其他着色任务被配置为仅存储临时数据。有时,将更多存储单元用于属性数据是有利的,而其他时间,将更多存储单元用于临时数据是有利的。然而,在数据类型之间可能存在依赖关系,这意味着每个任务都无法有效地获得对整个存储单元的访问。
[0004]例如,为了减少在任务准备好被执行之前分配给任务的数据量,可以在任务准备好被执行之前将任务分配给存储单元的(多个)部分以用于存储属性数据(使得初始化数据等可以存储在存储单元中),但是仅可以在任务准备好被执行时为任务分配存储单元的(多个)部分用于存储临时数据。这在属性数据和临时数据之间产生了依赖性,在向任务分配存储单元的部分时如果不考虑这种依赖性就可能导致死锁。例如,如果每个任务都可以分配到存储单元的任何部分以用于存储属性数据或临时数据,那么有可能在为任何任务分配任何存储单元以用于存储临时数据之前,就为多个任务一起分配了存储单元的所有部分以用于存储属性数据,从而导致死锁。具体地说,由于任何任务都将无法获得任何存储单元用于存储临时数据,因此这些任务均无法执行。
[0005]因此,需要一种将共享存储器分配给多个任务以用于存储至少两种不同类型的数据的方法,当每种类型的数据所需的存储单元量可变时,所述方法能够高效率地使用存储单元,但在不同类型的数据之间存在依赖性时仍然确保不会发生死锁。
[0006]下文描述的实施例仅以举例的方式提供,而不构成对解决用于向多个任务分配存储单元的多个部分用于存储至少两种不同类型数据的已知方法和存储单元分配器的任何或所有缺点的实施方式的限制。

技术实现思路

[0007]提供本
技术实现思路
是为了介绍在以下详细描述中进一步描述的一些概念。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
[0008]本文描述了用于将存储单元的一个或多个部分分配给多个任务以用于存储至少两种类型的数据的方法和存储单元分配器。所述方法包括:接收要存储单元的一个或多个部分存储用于多个任务中的任务的至少两种类型的数据中的特定类型数据的请求;基于请求的一个或多个特性,将请求与存储单元的多种虚拟分区中的一种相关联,每种虚拟分区将存储单元的零个、一个或多于一个部分分配给至少两种类型的数据中的每一种;以及将存储单元的被请求的一个或多个部分从与请求相关联的虚拟分区中分配给特定类型数据的存储单元的零个、一个或多于一个部分中分配给所述任务。
[0009]第一方面提供了一种将存储单元的一个或多个部分分配给多个任务用于存储至少两种类型的数据的方法,所述方法包括:接收要存储单元的一个或多个部分存储用于多个任务中的任务的至少两种类型的数据中的特定类型数据的请求;基于请求的一个或多个特性,将请求与存储单元的多种虚拟分区中的一种相关联,每种虚拟分区将存储单元的零个、一个或多于一个部分分配给至少两种类型的数据中的每一种;以及将存储单元的被请求的一个或多个部分从与请求相关联的虚拟分区中分配给特定类型数据的存储单元的零个、一个或多于一个部分中分配给所述任务。
[0010]多个任务中的每一个可以与多个任务主部件中的一个任务主部件相关联,并且该请求的一个或多个特性可以包括与任务相关联的任务主部件。
[0011]多种虚拟分区可以包括针对多个任务主部件中的每个任务主部件的虚拟分区。
[0012]多个任务主部件的任务主部件可以与在存储单元中存储至少两种类型的数据的第一类型的数据和第二类型的数据的任务相关联。要存储单元的一个或多个部分,最多达最大数量的部分用于存储与任务主部件相关联的任务的第二类型数据的请求可以是在对存储单元的一个或多个部分作出用于存储那一任务的第一类型数据的请求之后作出的。针对任务主部件的虚拟分区将至少存储单元的最大数量的部分可以分配给第二类型的数据。
[0013]每个虚拟分区可以将存储单元的不多于X

G个部分分配给第一类型的数据,其中,X是存储单元的部分的总数量,并且G是任务用于存储第二类型的数据的存储单元的部分的保证数量。
[0014]G可以是将被多个任务中的任何任务请求用于存储第二类型的数据的存储单元的部分的最大数量。
[0015]G可以少于将被多个任务中的任何任务请求用于存储第二类型的数据的存储单元的部分的最大数量。
[0016]该方法在接收请求之前还可以包括:确定该任务是否要求存储单元的多于保证数量的部分用于第二类型的数据;以及响应于确定对于第二类型的数据任务需要多于存储单元的保证数量的部分,动态地调整虚拟分区中的一种或多种,使得虚拟分区中没有任何虚拟分区将存储单元的多于X

R个部分分配给第一类型的数据,其中,R是对于第二类型的数据任务所需的存储单元的部分的数量,并且R大于G。
[0017]与任务相关联的多个任务主部件的该任务主部件可以由请求中的字段或伴随请求的边带数据标识。
[0018]该任务可以是多种类型的任务中的一种,并且该请求的一个或多个特性可以包括一种所述任务。
[0019]多种虚拟分区可以包括针对多种类型任务中的每种类型任务的虚拟分区。
[0020]虚拟分区中的至少一种可以将存储单元的所有部分分配给至少两种类型的数据中的一种。
[0021]可以在存储器中存储针对多种虚拟分区的每种虚拟分区的信息,所述信息指示将存储单元的零个、一个或多于一个部分分配给至少两种类型的数据中的每种类型的数据,并且所述方法可以进一步包括读取存储器中针对与请求相关联的虚拟分区的信息,以确定与每种类型的数据相关联的存储单元的零个、一个或多于一个部分。
[0022]所述方法还可以包括:接收要存储单元的一个或多个部分存储用于多个任务中的第二任务的至少两种类型的数据中的特定类型数据的第二请求;基于第二请求的一个或多个特性,将第二请求与多种虚拟分区中的不同一种相关联;以及将存储单元的被请求的一个或多个部分从与第二请求相关联的虚拟分区中分配给特定类型数据的存储单元的零个、一个或多于一个部分中分配给所述第二任务。
[0023]多种虚拟分区中的至少两种可以本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将存储单元的一个或多个部分分配给多个任务以用于存储至少两种类型的数据的方法(300),所述方法(300)包括:接收要所述存储单元的一个或多个部分存储用于所述多个任务中的任务的所述至少两种类型的数据中的特定类型数据的请求(302);基于所述请求的一个或多个特性,将所述请求与所述存储单元的多种虚拟分区中的一种相关联,每种虚拟分区将所述存储单元的零个、一个或多于一个部分分配给所述至少两种类型的数据中的每一种(304);以及将所述存储单元的被请求的一个或多个部分从与所述请求相关联的所述虚拟分区中分配给所述特定类型数据的所述存储单元的零个、一个或多于一个部分中分配给所述任务(306)。2.根据权利要求1所述的方法(300),其中,所述多个任务中的每一个与多个任务主部件中的一个任务主部件相关联,并且所述请求的所述一个或多个特性包括与所述任务相关联的所述任务主部件。3.根据权利要求2所述的方法(300),其中,所述多个虚拟分区包括针对所述多个任务主部件中的每个任务主部件的虚拟分区。4.根据权利要求3所述的方法(300),其中:所述多个任务主部件的任务主部件与在所述存储单元中存储所述至少两种类型的数据的第一类型的数据和第二类型的数据的任务相关联;要所述存储单元的一个或多个部分,最多达最大数量的部分用于存储与所述任务主部件相关联的任务的所述第二类型数据的请求是在对所述存储单元的一个或多个部分作出用于存储那一任务的所述第一类型数据的请求之后作出的;并且针对所述任务主部件的所述虚拟分区将至少所述存储单元的所述最大数量的部分分配给所述第二类型的数据。5.根据权利要求4所述的方法(300),其中,每个虚拟分区将所述存储单元的不多于X

G个部分分配给所述第一类型的数据,其中,X是所述存储单元的部分的总数量,并且G是任务用于存储所述第二类型的数据的所述存储单元的部分的保证数量。6.根据权利要求5所述的方法(300),其中,G是将被所述多个任务中的任何任务请求用于存储所述第二类型的数据的所述存储单元的部分的最大数量。7.根据权利要求5所述的方法(300),其中,G少于将被所述多个任务中的任何任务请求用于存储所述第二类型的数据的所述存储单元的部分的最大数量。8.根据权利要求7所述的方法(300),还包括在接收所述请求之前:确定所述任务对于所述第二类型的数据是否需要多于所述存储单元所述保证数量的部分;以及响应于确定对于所述第二类型的数据所述任务需要多于所述存储单元的所述保证数量的部分,动态地调整所述虚拟分区中的一种或多种,使得所述虚拟分区中没有任何虚拟分区将所述存储单元的多于X

R个部分分配给所述第一类型的数据,其中,R是对于所述第二类型的数据所述任务所需的所述存储单元的部分的数量,并且R大于G。9.根据权利要求2至8中任一项所述的方法(300),其中,与所述任务相关联的所述多个任务主部件的所述任务主部件由所述请求中的字段或伴随所述请求的边带数据标识。
10.根据权利要求1所述的方法(300),其中,所述任务是多种类型的任务中的一种,并且所述请求的所述一个或多个特性包括一种类型的所述任务。11.根据权利要求10所述的方法(300),其中,所述多个虚拟分区包括针对所述多种类型的任务中的每...

【专利技术属性】
技术研发人员:I
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1