System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及内存管理,尤其涉及一种电子组件、电子设备及内存管理方法。
技术介绍
1、传统方法上为了解决虚拟图形处理器(virtual graphics processing unit,vgpu)间内存资源冲突问题,在以下两种场景下有两种不同的解决方法。
2、1)在有二级系统内存管理单元(system memory management unit,smmu)情况下,由hyper层通过smmu统一动态映射分配gddr内存给各个虚拟机(virtual machine,vm)使用,内存可以被充分利用。
3、2)在没有二级smmu的情况下,内存资源完全静态分配使用,譬如所有vm均分内存,或者有差异的静态分配,如共4gb内存,vm1分配2g,vm2分配1g,vm3分配512m,静态分配情况下,内存不能被充分利用。
技术实现思路
1、本公开的目的是提供一种电子组件、电子设备及内存管理方法,解决了现有技术中在没有二级smmu的情况下内存不能被充分利用的技术问题。
2、根据本公开的一个方面,提供一种电子组件,包括内存、信息缓存单元和至少一个上游设备;内存包括第一预设数量个内存块,第一预设数量个内存块被划分为第二预设数量个内存块组,第二预设数量大于等于至少一个上游设备的总数量,每个上游设备分别对应一个内存块组,至少一个上游设备包括虚拟机和/或主机;
3、信息缓存单元,被配置为缓存每个内存块组对应的第一数据结构,第一数据结构用于记录对应的内存块组内的各个内存
4、上游设备,被配置为在需要占用内存块时,从该上游设备对应的内存块组开始询问,根据当前询问的内存块组对应的第一数据结构,查找空闲状态的内存块进行占用。
5、在一些实施例中,上述电子组件中,第一数据结构包括多个第一数据,一内存块组对应的第一数据结构中的每个第一数据用于分别指示该内存块组中每个内存块的占用状态;上游设备,具体被配置为:
6、在需要占用内存块时,对该上游设备对应的内存块组进行询问,并根据当前询问的内存块组对应的第一数据结构,按照以下方式查找空闲状态的内存块进行占用:
7、读取当前询问的内存块组对应的第一数据结构,并判断当前询问的内存块组对应的第一数据结构中是否存在指示空闲状态的第一数据;
8、若是,则从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用;
9、否则,结束对当前询问的内存块组的询问,并对该内存块组的下一内存块组进行询问。
10、在一些实施例中,上述电子组件中,第一数据结构为位图,每个第一数据的大小为一个比特位。
11、在一些实施例中,上述电子组件中,上游设备当前需要占用的内存块数量为第一数量;当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据的数量为第二数量;
12、上游设备,被配置为从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用,包括:
13、在当前询问的内存块组的第二数量大于等于该上游设备的第一数量时,从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中,选择第一数量个第一数据,将第一数量个第一数据切换为指示非空闲状态,以将当前询问的内存块组中第一数量个第一数据对应的内存块进行占用;
14、在当前询问的内存块组的第二数量小于该上游设备的第一数量时,将当前询问的内存块组对应的第一数据结构中所有指示空闲状态的第一数据切换为指示非空闲状态,以将当前询问的内存块组中所有空闲状态的内存块进行占用;结束对当前询问的内存块组的询问,将该上游设备当前需要占用的内存块数量更新为第一数量和第二数量的差值,并继续对该内存块组的下一内存块组进行询问。
15、在一些实施例中,上述电子组件中,还包括第一寄存器;上游设备,被配置为读取当前询问的内存块组对应的第一数据结构,并判断当前询问的内存块组对应的第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用,包括:
16、上游设备,被配置为将当前询问的内存块组对应的第一数据结构读取到第一寄存器,判断第一寄存器的数据中是否存在指示空闲状态的第一数据;第一寄存器的位宽与第一数据结构的位宽相同;
17、若是,则从第一寄存器的数据中指示空闲状态的第一数据中选择至少一个第一数据,将第一寄存器中的至少一个第一数据切换为指示非空闲状态,并将第一寄存器的数据整体赋值给当前询问的内存块组的第一数据结构,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用。
18、在一些实施例中,上述电子组件中,还包括第二寄存器;上游设备,被配置为读取当前询问的内存块组对应的第一数据结构,并判断当前询问的内存块组对应的第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用,包括:
19、上游设备,被配置为将当前询问的内存块组对应的第一数据结构读取到第二寄存器,判断第二寄存器的数据中是否存在指示空闲状态的第一数据,若是,则从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据;
20、重新读取当前询问的内存块组对应的第一数据结构,比较重新读取的第一数据结构是否等于第二寄存器的数据,若是,则将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用。
21、在一些实施例中,上述电子组件中,上游设备,被配置为重新读取当前询问的内存块组对应的第一数据结构,比较重新读取的第一数据结构是否等于第二寄存器的数据,若是,则将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用,包括:
22、上游设备,被配置为采用原子操作重新读取当前询问的内存块组对应的第一数据结构,比较重新读取的第一数据结构是否等于第二寄存器的数据,若是,则采用原子操作将至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中至少一个第一数据对应的内存块进行占用。
23、在一些实施例中,上述电子组件中,上游设备,被配置为从当前询问的内存块组对应的第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据本文档来自技高网...
【技术保护点】
1.一种电子组件,包括内存、信息缓存单元和至少一个上游设备;所述内存包括第一预设数量个内存块,所述第一预设数量个内存块被划分为第二预设数量个内存块组,所述第二预设数量大于等于所述至少一个上游设备的总数量,每个上游设备分别对应一个内存块组,所述至少一个上游设备包括虚拟机和/或主机;
2.根据权利要求1所述的电子组件,所述第一数据结构包括多个第一数据,一内存块组对应的所述第一数据结构中的每个第一数据用于分别指示该内存块组中每个内存块的占用状态;所述上游设备,具体被配置为:
3.根据权利要求2所述的电子组件,所述第一数据结构为位图,每个第一数据的大小为一个比特位。
4.根据权利要求2所述的电子组件,所述上游设备当前需要占用的内存块数量为第一数量;当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据的数量为第二数量;
5.根据权利要求2所述的电子组件,还包括第一寄存器;所述上游设备,被配置为读取当前询问的内存块组对应的所述第一数据结构,并判断当前询问的内存块组对应的所述第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前
6.根据权利要求2所述的电子组件,还包括第二寄存器;所述上游设备,被配置为读取当前询问的内存块组对应的所述第一数据结构,并判断当前询问的内存块组对应的所述第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
7.根据权利要求6所述的电子组件,所述上游设备,被配置为重新读取当前询问的内存块组对应的所述第一数据结构,比较重新读取的所述第一数据结构是否等于所述第二寄存器的数据,若是,则将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
8.根据权利要求2所述的电子组件,所述上游设备,被配置为从当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
9.根据权利要求1所述的电子组件,所述信息缓存单元还被配置为缓存每个所述第一数据结构对应的第二数据结构,所述第二数据结构为对应的所述第一数据结构的自旋锁;
10.根据权利要求9所述的电子组件,还包括第三寄存器;所述第二数据结构包括第一数据域、第二数据域和第三数据域;第二数据域包括多个第二数据,所述多个第二数据分别对应不同的上游设备,第三数据域包括多个第三数据,所述多个第三数据分别对应不同的上游设备;一第二数据结构中,同一上游设备对应的第二数据和第三数据对应的初始值相同;
11.根据权利要求10所述的电子组件,一第二数据结构中,一上游设备对应的第二数据在其所在的所述第二数据域中的比特位范围,与该上游设备对应的第三数据在其所在的第三数据域中的比特位范围相同;
12.根据权利要求10所述的电子组件,所述上游设备,被配置为尝试将该上游设备的标识写入该内存块组对应的所述第一数据域,并判断该第一数据域是否成功写入该上游设备的标识,包括:
13.根据权利要求10所述的电子组件,所述上游设备,被配置为在对一内存块组的询问结束时,释放该内存块组对应的所述第二数据结构,包括:
14.根据权利要求13所述的电子组件,所述上游设备,被配置为在对一内存块组的询问结束时,判断该内存块组对应的所述第三数据域的各第三数据的值是否均为对应的初始值,包括:
15.根据权利要求13所述的电子组件,所述上游设备,被配置为在对一内存块组的询问结束时,判断该内存块组对应的所述第三数据域的各第三数据的值是否均为对应的初始值,包括:
16.根据权利要求10所述的电子组件,所述第一数据域的长度、所述第二数据的大小、所述第三数据的大小均为1个字节的整数倍。
17.一种电子设备,包括权利要求1至16中任一项所述的电子组件。
18.一种内存管理方法,应用于上游设备,所述内存包括第一预设数量个内存块,所述第一预设数量个内存块被划分为第二预设数量个内存块组,所述第二预设数量大于等于对应的上游设备的总数...
【技术特征摘要】
1.一种电子组件,包括内存、信息缓存单元和至少一个上游设备;所述内存包括第一预设数量个内存块,所述第一预设数量个内存块被划分为第二预设数量个内存块组,所述第二预设数量大于等于所述至少一个上游设备的总数量,每个上游设备分别对应一个内存块组,所述至少一个上游设备包括虚拟机和/或主机;
2.根据权利要求1所述的电子组件,所述第一数据结构包括多个第一数据,一内存块组对应的所述第一数据结构中的每个第一数据用于分别指示该内存块组中每个内存块的占用状态;所述上游设备,具体被配置为:
3.根据权利要求2所述的电子组件,所述第一数据结构为位图,每个第一数据的大小为一个比特位。
4.根据权利要求2所述的电子组件,所述上游设备当前需要占用的内存块数量为第一数量;当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据的数量为第二数量;
5.根据权利要求2所述的电子组件,还包括第一寄存器;所述上游设备,被配置为读取当前询问的内存块组对应的所述第一数据结构,并判断当前询问的内存块组对应的所述第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
6.根据权利要求2所述的电子组件,还包括第二寄存器;所述上游设备,被配置为读取当前询问的内存块组对应的所述第一数据结构,并判断当前询问的内存块组对应的所述第一数据结构中是否存在指示空闲状态的第一数据;若是,则从当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
7.根据权利要求6所述的电子组件,所述上游设备,被配置为重新读取当前询问的内存块组对应的所述第一数据结构,比较重新读取的所述第一数据结构是否等于所述第二寄存器的数据,若是,则将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
8.根据权利要求2所述的电子组件,所述上游设备,被配置为从当前询问的内存块组对应的所述第一数据结构中指示空闲状态的第一数据中选择至少一个第一数据,将所述至少一个第一数据切换为指示非空闲状态,以将当前询问的内存块组中所述至少一个第一数据对应的内存块进行占用,包括:
9.根据权利要求1所述的电子组件,所述信息缓存单元还被配置为缓存每个所述第一数据结构对应的第二数据结构,所述第二数据结构为对应的所述第一数据结构的自旋锁;
10.根据权利要求9所述的电子组件,还包括第三寄存器;所述第二数据结构包括第一数据域、第二数据域和第三数据域;第二数据...
【专利技术属性】
技术研发人员:谭娟,程茂,刘志超,
申请(专利权)人:北京象帝先计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。