CN113485791B - 配置方法和访问方法、装置、虚拟化系统和存储介质 - Google Patents
配置方法和访问方法、装置、虚拟化系统和存储介质 Download PDFInfo
- Publication number
- CN113485791B CN113485791B CN202110767684.8A CN202110767684A CN113485791B CN 113485791 B CN113485791 B CN 113485791B CN 202110767684 A CN202110767684 A CN 202110767684A CN 113485791 B CN113485791 B CN 113485791B
- Authority
- CN
- China
- Prior art keywords
- access request
- memory
- address
- subspace
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 137
- 230000004044 response Effects 0.000 claims description 126
- 238000004590 computer program Methods 0.000 claims description 21
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 22
- 239000000872 buffer Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种配置方法和访问方法、装置、虚拟化系统和存储介质。该配置方法用于配置计算设备的片上缓存空间,计算设备包括物理装置和存储装置,并且创建有至少一个虚拟装置,配置方法包括:在计算设备的存储装置的内存空间中划分出至少一个切分内存空间;切分内存空间包括第一内存子空间和第二内存子空间,第一内存子空间配置为至少由虚拟装置以内存方式访问,第二内存子空间配置为由物理装置访问但不能由虚拟装置以内存方式访问;在第二内存子空间中划分出第三内存子空间,且将第三内存子空间配置为虚拟装置的片上缓存空间,由虚拟装置以缓存方式访问。该配置方法可以在不增加额外硬件和物理地址空间的情况下,将片上缓存空间提供给虚拟机的用户使用。
Description
技术领域
本公开的实施例涉及一种应用于计算设备的片上缓存空间的配置方法和访问方法、配置装置、访问装置、计算设备的虚拟化系统和存储介质。
背景技术
在计算机领域,片上缓冲(on-chip buffer)能为计算、传输、存储等带来性能的提升,并因此能将整个系统的性能大大提高。在虚拟化技术下,虚拟机对性能是比较敏感的,如能加入对片上缓冲的支持,则能为虚拟化带来明显的性能提升。
发明内容
本公开至少一个实施例提供一种应用于计算设备的片上缓存空间的配置方法,所述计算设备包括至少一个物理装置以及存储装置,所述计算设备中创建有至少一个虚拟装置,所述方法包括:在所述计算设备的存储装置的内存空间中划分出用于所述至少一个虚拟装置的至少一个切分内存空间,所述切分内存空间包括第一内存子空间和第二内存子空间,所述第一内存子空间配置为至少由所述虚拟装置以内存方式访问,所述第二内存子空间配置为由所述物理装置访问但不能由所述虚拟装置以内存方式访问;在所述第二内存子空间中划分出第三内存子空间,且将所述第三内存子空间配置为所述虚拟装置的片上缓存空间,由所述虚拟装置以缓存方式访问。
例如,在本公开至少一实施例提供的配置方法中,所述第三内存子空间小于等于所述第二内存子空间。
例如,在本公开至少一实施例提供的配置方法中,所述第三内存子空间与所述第一内存子空间连续寻址。
例如,在本公开至少一实施例提供的配置方法中,所述第三内存子空间与所述第一内存子空间不连续寻址。
例如,在本公开至少一实施例提供的配置方法中,由所述虚拟装置以所述缓存方式访问,包括:在所述虚拟装置中从所述虚拟装置的设备侧以缓存方式访问,或者在所述虚拟装置中从所述虚拟装置的主机侧以缓存方式访问。
例如,在本公开至少一实施例提供的配置方法中,所述计算设备中创建有多个虚拟装置,在所述计算设备的存储装置的内存空间中划分出用于所述至少一个虚拟装置的至少一个切分内存空间,包括:在所述计算设备的存储装置的内存空间中为所述多个虚拟装置分别划分出对应地用于所述多个虚拟装置的多个切分内存空间,一个所述虚拟装置对应一个所述切分内存空间。
本公开至少一实施例还提供一种片上缓存空间的访问方法,所述片上缓存空间基于本公开任一实施例提供的片上缓存空间的配置方法配置,所述访问方法包括:响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
例如,在本公开至少一实施例提供的访问方法,还包括:响应于对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求,判断所述访问请求的地址是否超过所述切分内存空间,响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;响应于所述访问请求的地址超过所述切分内存空间,报错。
例如,在本公开至少一实施例提供的访问方法,还包括:判断对于所述切分内存空间的访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求。
例如,在本公开至少一实施例提供的访问方法中,来自于所述物理装置的访问请求和来自于所述虚拟装置的访问请求分别包括设备侧访问请求和主机侧访问请求;所述物理装置的设备侧访问请求配置为从所述物理装置的设备侧访问所述切分内存空间;所述物理装置的主机侧访问请求配置为从所述物理装置的主机侧访问所述第二内存子空间;所述虚拟装置的设备侧访问请求配置为从所述虚拟装置的设备侧以内存方式访问所述第一内存子空间和以缓存方式访问所述第三内存子空间;所述虚拟装置的主机侧访问请求配置为从所述虚拟装置的主机侧以内存方式访问所述第一内存子空间和以缓存方式访问所述第三内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,包括:判断来自于所述虚拟装置的访问请求是所述虚拟装置的设备侧访问请求还是所述虚拟装置的主机侧访问请求;响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,还包括:响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问至所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,报错。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,包括:判断来自于所述虚拟装置的访问请求是所述虚拟装置的设备侧访问请求还是所述虚拟装置的主机侧访问请求;响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,还包括:响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,报错。
例如,在本公开至少一实施例提供的访问方法中,所述虚拟装置的设备侧和主机侧在同一时间以所述缓存方式访问所述第三内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求,判断所述访问请求的地址是否超过所述切分内存空间,包括:判断所述访问请求是所述物理装置的设备侧访问请求还是所述物理装置的主机侧访问请求;响应于所述访问请求为所述物理装置的设备侧访问请求,判断所述访问请求的地址是否超过所述切分内存空间,响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;响应于所述访问请求的地址超过所述切分内存空间,报错。
例如,在本公开至少一实施例提供的访问方法中,响应于对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求,判断所述访问请求的地址是否超过所述切分内存空间,还包括:响应于所述访问请求为所述物理装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第二内存子空间,响应于所述访问请求的地址位于所述第二内存子空间,由所述物理装置访问所述第二内存子空间;响应于所述访问请求的地址超过所述第二内存子空间,报错。
例如,在本公开至少一实施例提供的访问方法中,在响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间之前,还包括:判断对于所述切分内存空间的所述访问请求是设备侧访问请求还是主机侧访问请求。
例如,在本公开至少一实施例提供的访问方法,还包括:响应于所述访问请求是所述主机侧访问请求,判断所述主机侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;响应于对于所述切分内存空间的所述主机侧访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于所述访问请求是所述设备侧访问请求,判断所述设备侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,报错;响应于所述访问请求为所述物理装置的设备侧访问请求,判断所述访问请求的地址是否超过所述切分内存空间,响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;响应于所述访问请求的地址超过所述切分内存空间,报错。
例如,在本公开至少一实施例提供的访问方法,还包括:响应于所述访问请求是所述设备侧访问请求,判断所述设备侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;响应于对于所述切分内存空间的所述设备侧访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间。
例如,在本公开至少一实施例提供的访问方法中,响应于所述访问请求是所述主机侧访问请求,判断所述主机侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,报错;响应于所述访问请求为所述物理装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第二内存子空间,响应于所述访问请求的地址位于所述第二内存子空间,由所述物理装置访问所述第二内存子空间;响应于所述访问请求的地址超过所述第二内存子空间,报错。
本公开至少一实施例还提供一种应用于计算设备的片上缓存空间的配置装置,所述计算设备包括至少一个物理装置以及存储装置,所述计算设备中创建有至少一个虚拟装置,所述配置装置包括:第一配置单元,配置为在所述计算设备的存储装置的内存空间中划分出用于所述至少一个虚拟装置的至少一个切分内存空间,所述切分内存空间包括第一内存子空间和第二内存子空间,所述第一内存子空间配置为至少由所述虚拟装置以内存方式访问,所述第二内存子空间配置为由所述物理装置访问但不能由所述虚拟装置以内存方式访问;第二配置单元,配置为在所述第二内存子空间中划分出第三内存子空间,且将所述第三内存子空间配置为所述虚拟装置的片上缓存空间,由所述虚拟装置以缓存方式访问。
本公开至少一实施例还提供一种应用于计算设备的片上缓存空间的配置装置,所述计算设备包括至少一个物理装置以及存储装置,所述计算设备中创建有至少一个虚拟装置,所述配置装置包括:处理器;存储器;一个或多个计算机程序模块,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行实现本公开任一实施例提供的配置方法的指令。
本公开至少一实施例还提供一种片上缓存空间的访问装置,所述片上缓存空间通过本公开任一实施例提供的配置装置配置,所述访问装置包括:第一访问单元,配置为响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,第二访问单元,配置为响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;第三访问单元,配置为响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,第四访问单元,配置为响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
本公开至少一实施例还提供一种片上缓存空间的访问装置,所述片上缓存空间通过本公开任一实施例提供的配置装置配置,所述访问装置包括:处理器;存储器;一个或多个计算机程序模块,其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行实现本公开任一实施例提供的访问方法的指令。
本公开至少一实施例还提供一种计算设备的虚拟化系统,包括:本公开任一实施例提供的配置装置或本公开任一实施例提供的访问装置、至少一个物理装置和至少一个虚拟装置;其中,所述物理装置配置为访问所述切分内存空间或所述第二内存子空间;所述虚拟装置配置为以所述内存方式访问所述第一内存子空间和以所述缓存方式访问所述第三内存子空间。
本公开至少一实施例还提供一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行根据本公开任一实施例提供的配置方法或本公开任一实施例提供的访问方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种非虚拟化情况下的访问片上缓存空间的示意图;
图2示出了本公开至少一实施例提供的一种片上缓存空间的配置方法的流程图;
图3示出了本公开至少一个实施例提供的划分存储装置的示意图;
图4示出了本公开至少一个实施例提供的物理装置和虚拟装置访问存储装置的示意图;
图5示出了本公开至少一个实施例提供的第三内存子空间的示意图;
图6示出了本公开至少一个实施例提供的第三内存子空间与第一内存子空间不连续寻址的示意图;
图7示出了本公开至少一个实施例提供的一种访问方法的流程图;
图8示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图9示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图10示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图11示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图12示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图13示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图14示出了本公开至少一个实施例提供的另一种访问方法的流程图;
图15示出了本公开至少一个实施例提供的一种配置装置的示意框图;
图16示出了本公开至少一个实施例提供的一种访问装置的示意框图;
图17示出了本公开至少一个实施例提供的另一种配置装置的示意框图;
图18示出了本公开至少一个实施例提供的另一种访问装置的示意框图;
图19示出了本公开至少一个实施例提供的另一种配置装置或者访问装置的示意框图;以及
图20示出了本公开至少一个实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在虚拟化技术中,可以将一个物理设备上的资源(例如,CPU(Central ProcessingUnit,中央处理器)或者其他外设设备)虚拟成多个虚拟的物理组件。虚拟化技术可以在一台物理计算机虚拟出多台逻辑计算机,即在一台物理计算机上可以同时运行多个逻辑计算机,每个逻辑计算机都有自己的虚拟硬件,例如具有虚拟CPU和虚拟GPU(GraphicProcessing Unit,图形处理器)等,每个逻辑计算机可运行不同的操作系统,并且每个逻辑计算机上的应用程序都可以在相互独立的空间内运行而互不影响,从而可以显著提高计算机的工作效率。
在本公开的实施例中,物理装置可以是上述的物理计算机,也称为物理机,是具有硬件实体的硬件系统。虚拟装置可以是上述的逻辑计算机,也称为虚拟机(VirtualMachine),是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。
在本公开的实施例中,片上缓存也可称为片上缓冲。
发明人发现,在虚拟化技术下,虚拟机如果要访问片上缓冲的话,一种访问方式需要特定的硬件设备以及占用额外的硬件地址空间,此外还需要特定的接口来显示操作,相比于虚拟机对内存的访问方式来说比较复杂,带来了硬件设计和软件使用的复杂性。在另一种访问方式中,虚拟机可以通过主机进行片上缓冲的访问操作,在这种访问方式下,虚拟机不能单独进行片上缓冲的访问操作,由于所有虚拟机的访问操作都需要被主机截获,待主机处理完之后才能把结果返回给虚拟机,其性能将会大打折扣。
本公开至少一个实施例提供一种应用于计算设备的片上缓存空间的配置方法和访问方法、配置装置、访问装置、计算设备的虚拟化系统和存储介质。该计算设备包括至少一个物理装置以及存储装置,计算设备中创建有至少一个虚拟装置,该配置方法包括:在计算设备的存储装置的内存空间中划分出用于至少一个虚拟装置的至少一个切分内存空间,切分内存空间包括第一内存子空间和第二内存子空间,第一内存子空间配置为至少由虚拟装置以内存方式访问,第二内存子空间配置为由物理装置访问但不能由虚拟装置以内存方式访问;在第二内存子空间中划分出第三内存子空间,且将第三内存子空间配置为虚拟装置的片上缓存空间,由虚拟装置以缓存方式访问。
本公开至少一实施例提供的配置方法可以在不增加额外硬件和物理地址空间的情况下,利用物理内存地址空间可以复用的特点,将物理内存地址空间的部分空间复用作片上缓存空间提供给虚拟机的用户使用,使得虚拟机用户可以按照访问物理内存的方式一样对片上缓存空间进行访问等操作,操作方式简单,并且降低了硬件设计和软件使用的复杂性。
例如,计算设备包括但不限于笔记本电脑、台式计算机、局域网服务器、广域网服务器、云端服务器或者边缘端的计算机等。计算设备例如可以包括主机和目标设备,该目标设备可以与主机连接,例如可以是外接于主机的显卡设备,显卡设备可以包括GPU和GPU内存等,主机可以包括CPU和CPU内存等。
例如,存储装置可以是目标设备中的存储装置,例如可以是GPU内存,也可以位于目标设备外,例如,位于计算设备上,只要是该目标设备对应运行的存储装置即可,存储装置可以为半导体存储装置(例如DRAM、SRAM、PMEM等)、磁介质存储装置(硬盘)等,本公开的实施例对此不作限制。例如,存储装置可以是物理内存地址空间,例如可以存储有物理地址,通过访问存储装置中的物理地址,可以根据物理地址进一步访问物理地址所指向的目标数据。在其他实施例中,存储装置中还可以存储有除物理地址之外的其他数据。
例如,对存储装置的地址空间的访问包含两个类别,一类是设备(device)侧访问,另一类是主机(host)侧访问。例如,设备侧访问可以是目标设备对其自身存储装置的访问,例如目标设备内部的DMA(Direct Memory Access,直接存储器访问)向存储装置发起的地址访问请求,或者例如是目标设备的计算单元向存储装置发起的地址访问请求等;主机侧访问可以是除该目标设备之外的其他设备对存储装置的访问,例如由主机中的中央处理器(Central Processing Unit,CPU)向存储装置发起的地址访问请求等,本公开的实施例对此不作限制。
例如,计算设备包括至少一个物理装置,计算设备中可以利用虚拟化技术创建至少一个虚拟装置。
例如,物理装置对存储装置的访问,可以分为物理装置的主机(host)侧访问和物理装置的设备(device)侧访问,物理装置的主机侧访问可以是物理装置的主机对目标设备的存储装置进行访问,例如,物理装置的CPU对物理装置的GPU内存进行访问。物理装置的设备侧访问可以是物理装置的目标设备对目标设备自身的存储装置进行访问,例如物理装置的GPU对GPU内存进行访问。
例如,在虚拟化的情况下,虚拟装置对存储装置的访问,也分为虚拟装置的主机侧访问和虚拟装置的设备侧访问。虚拟装置的主机侧访问可以是虚拟装置的主机对目标设备的存储装置进行访问,例如,虚拟装置的CPU对虚拟装置的GPU内存进行访问。虚拟装置的设备侧访问可以是虚拟装置的目标设备对目标设备自身的存储装置进行访问,例如虚拟装置的GPU对GPU内存进行访问。
在以下的示例中,以存储装置为GPU内存为例进行说明。但是,这仅仅是示例性的,本公开的实施例并不限于此。在其他实施例中,目标设备还可以是除显卡设备之外的其他设备,例如可以是包含CPU和CPU内存的处理设备,存储装置可以是CPU内存,本公开的实施例对此不做限制。
图1示出了本公开至少一个实施例提供的在非虚拟化情况下的访问片上缓存空间的示意图。如图1所示,在非虚拟化情况下,存储装置10可以包括内存空间11,为了实现物理装置对片上缓存的访问,必须增加目标设备的内存空间11大小,例如,增加片上缓存空间12,该片上缓存空间12区别于设备的内存空间11,使得主机和目标设备有能力访问片上缓存。例如,物理装置可以访问存储装置10,物理装置的主机侧访问和设备侧能够访问的空间一致,例如均可以访问内存空间11和片上缓存空间12。因此,在非虚拟化技术下,需要增加额外硬件和存储装置的内存空间才能实现片上缓存的访问。同理,在虚拟化技术下,也面临同样的问题。
针对上述问题,下面结合附图对本公开实施例提供的虚拟化情况下片上缓存空间的配置方法进行详细地介绍。
图2示出了本公开至少一实施例提供的一种应用于计算设备的片上缓存空间的配置方法的流程图。
如图2所示,该方法可以包括步骤S110~S120。
步骤S110:在计算设备的存储装置的内存空间中划分出用于至少一个虚拟装置的至少一个切分内存空间;切分内存空间包括第一内存子空间和第二内存子空间,第一内存子空间配置为至少由虚拟装置以内存方式访问,第二内存子空间配置为由物理装置访问但不能由虚拟装置以内存方式访问。
步骤S120:在第二内存子空间中划分出第三内存子空间,且将第三内存子空间配置为虚拟装置的片上缓存空间,由虚拟装置以缓存方式访问。
对于步骤S110,例如,图3示出了本公开至少一个实施例提供的划分存储装置的示意图。
例如,如图3所示,计算设备中例如可以创建有多个虚拟装置,例如创建有4个虚拟装置:虚拟装置a、虚拟装置b、虚拟装置c和虚拟装置d。当然还可以设置有更多或更少的虚拟装置。为了表述清楚、简洁,下面以虚拟装置创建如上4个虚拟装置为例进行介绍,本公开的实施例对此不作限制。在计算设备的存储装置20的内存空间中为多个虚拟装置分别划分出对应地用于多个虚拟装置的多个切分内存空间21,一个虚拟装置对应一个切分内存空间21。例如,可以按照虚拟装置的个数划分内存空间,对应4个虚拟装置可以划分出4个切分内存空间21。例如,每个切分内存空间21的大小可以相同,也可以不同,具体划分方式可视实际情况而定,本公开的实施例对此不作限制。
例如,每个切分内存空间21均包括第一内存子空间211和第二内存子空间212,第一内存子空间211可以被虚拟装置以内存方式访问,即能够响应虚拟装置发起的对内存的访问请求。第二内存子空间212被物理装置占用,可以响应物理装置发起的内存访问请求,但是不能由虚拟装置以内存方式访问,即不能响应虚拟装置发起的内存访问请求。例如,第一内存子空间211在一些情况下也可以被物理装置访问,具体情形将在下面进行详细地介绍,在此不再赘述。
例如,存储装置20可以被多个虚拟装置和一个物理装置所切分,例如,该多个虚拟装置是在该物理装置上可以同时运行的多个逻辑计算机。
例如,每个虚拟装置对应的内存空间可以形成一个切分内存子空间21,每个虚拟装置可以访问其对应的第一内存子空间211。物理装置占用的内存可以按照虚拟装置的数量均匀地分散为相应数量的第二内存子空间212,每个第二内存子空间212和一个第一内存子空间211相对应。每个虚拟装置可以访问其自己对应的第一内存子空间211,物理装置可以访问任意一个第二内存子空间212。但是每个第二内存子空间212均不能被虚拟装置以内存方式访问,即不能响应任一虚拟装置发起的对内存的访问请求。
图4示出了本公开至少一个实施例提供的物理装置和虚拟装置访问存储装置的示意图。
例如,如图4所示,以一个切分内存空间为例进行说明,虚拟装置对存储装置的访问分为主机侧访问和设备侧访问,对于虚拟装置的主机侧访问和设备侧访问,只能以内存方式访问分配给该虚拟装置的第一内存子空间211,即虚拟装置的主机侧和设备侧所能够访问的内存空间地址仅是[MEM_BASE,MEM_M]之间的地址范围,否则就会报错。
例如,物理装置对存储装置的访问也分为主机侧访问和设备侧访问,物理装置的设备侧可以访问存储装置的全部内存空间,包含分配给物理装置的内存空间(第二内存子空间212)以及该虚拟装置能访问的内存空间(第一内存子空间211),即物理装置的设备侧所能够访问的内存空间地址是[MEM_BASE,MEM_SIZE]之间的地址范围。物理装置的主机侧仅能访问第二内存子空间212,即物理装置的主机侧所能够访问的内存空间地址是[MEM_M,MEM_SIZE]之间的地址范围,否则就会报错。
对于步骤S120,例如,将第三内存子空间复用为所述虚拟装置的片上缓存空间,即第三内存空间既可以由物理装置访问,也可以由虚拟装置以缓存方式访问。
图5示出了本公开至少一个实施例提供的第三内存子空间的示意图。如图5所示,针对每个第二内存子空间212,可以从中划分出至少一个第三内存子空间213,该第三内存子空间213是可以被物理装置访问的内存空间,同时,将该第三内存子空间213复用为虚拟装置的片上缓存空间。第三内存子空间213可以被虚拟装置以缓存的方式访问,即可以响应虚拟装置对片上缓存的访问请求。
例如,第三内存子空间213可以小于第二内存子空间212,即可以将第二内存子空间212中的一部分空间作为第三内存子空间213,即复用第二内存子空间212中的一部分空间作为片上缓存空间。在另一示例中,第三内存子空间213可以等于第二内存子空间212,即将第二内存子空间212全部作为第三内存子空间213,即复用第二内存子空间212的全部空间作为片上缓存空间。第三内存子空间213占第二内存子空间212的比例可以根据实际情况而定,本公开的实施例对此不做限制。
例如,第三内存子空间213可以与第一内存子空间211连续寻址。如图4和图5所示,第一内存子空间211的起始地址例如为MEM_BASE,终止地址例如为MEM_M,若第三内存子空间213与第一内存子空间211连续寻址,则第三内存子空间213的起始地址BUF_OFFSET即为第一内存子空间211的终止地址,即BUF_OFFSET与MEM_M为同一地址。若第三内存子空间213的大小为BUF_SIZE,则第三内存子空间213的终止地址为BUF_OFFSET+BUF_SIZE。
在另一示例中,第三内存子空间213与第一内存子空间211也可以不连续寻址。图6示出了本公开至少一个实施例提供的第三内存子空间与第一内存子空间不连续寻址的示意图。如图6所示,例如,第一内存子空间211的起始地址例如为MEM_BASE,终止地址例如为MEM_M。第三内存子空间213的起始地址例如为BUF_OFFSET,终止地址例如为BUF_OFFSET+BUF_SIZE。若第三内存子空间213与第一内存子空间211不连续寻址,则第一内存子空间211的终止地址MEM_M与第三内存子空间213的起始地址BUF_OFFSET不同,两者之间间隔有只能由物理装置但不能由虚拟装置访问的其他地址。
例如,在一个示例中,由虚拟装置以缓存方式访问可以包括:在虚拟装置中从虚拟装置的设备侧以缓存方式访问,以及在虚拟装置中从虚拟装置的主机侧以缓存方式访问。例如,虚拟装置的主机侧和设备侧均可以以缓存方式访问第三内存子空间213。
例如,在另一示例中,由虚拟装置以缓存方式访问可以包括:在虚拟装置中从虚拟装置的设备侧以缓存方式访问,或者在虚拟装置中从虚拟装置的主机侧以缓存方式访问。
例如,第三内存子空间213可以被虚拟装置的主机侧和设备侧中的一侧以缓存方式访问,而不能被另一侧以缓存方式访问。
例如,如图5所示,虚拟装置的设备侧可以以缓存方式访问第三内存子空间213,而虚拟装置的主机侧不能以缓存方式访问第三内存子空间213。这种情况下,虚拟装置的主机侧可以内存方式访问第一内存子空间211,虚拟装置的主机侧发起的对内存的访问请求的地址可以是[MEM_BASE,BUF_OFFSET]之间的地址。虚拟装置的设备侧可以以内存方式访问第一内存子空间211,并且可以以缓存方式访问第三内存子空间213,虚拟装置的设备侧发起的内存访问请求的地址可以是[MEM_BASE,BUF_OFFSET]之间的地址,若第三内存子空间213包含的地址范围为[BUF_OFFSET,BUF_OFFSET+BUF_SIZE],则虚拟装置的设备侧发起的对片上缓存的访问请求的地址可以是[BUF_OFFSET,BUF_OFFSET+BUF_SIZE]之间的地址。
在另一示例中,虚拟装置的主机侧可以以缓存方式访问第三内存子空间213,而虚拟装置的设备侧不能以缓存方式访问第三内存子空间213。用户可以根据实际需求来设定虚拟装置的设备侧还是主机侧来以缓存方式访问第三内存子空间213,本公开的实施例对此不做限制。
例如,物理装置的设备侧可以访问切分内存空间中的全部物理内存空间,物理装置的设备侧发起的内存访问请求的地址可以是[MEM_BASE,MEM_SIZE]之间的地址。物理装置的主机侧可以访问第一内存子空间211,物理装置的主机侧发起的内存访问请求的地址可以是[BUF_OFFSET,MEM_SIZE]之间的地址。
例如,利用在虚拟装置不能访问的地址空间(第二内存子空间212)中划出一片区间复用作片上缓冲的地址区域,使得片上缓冲能被虚拟装置以缓存方式访问,即利用该空间在虚拟装置下不能被用于访问内存的特性,复用该地址空间来进行片上缓冲的寻址操作。如果不采用该机制,则需要重新在PCIE(peripheral component interconnectexpress)空间中开辟一块新地址,根据PCIE地址空间是2n的规定,则需要对空间翻倍,会造成开销太大,而采用本公开的实施例可以克服这一问题,通过复用内存子空间212的部分空间复用作虚拟装置可以缓存方式访问的片上缓存空间,无需开辟新的空间地址,提高了空间的利用率,节省了成本。
需要注意的是,在本公开的实施例中,切分内存空间、第一子内存空间、第二内存子空间和第三内存子空间可以用于存储地址,虚拟装置和物理装置通过访问上述空间中的地址,以根据该地址进一步访问地址所指向的目标数据;当然,也可以直接存储目标数据,本公开的实施例对此不作限制。
在本公开的至少一个实施例中,可以在不增加额外硬件和物理地址空间的情况下,利用物理内存地址空间可以复用的特点,将物理内存地址空间的部分空间复用作片上缓存空间提供给虚拟机的用户使用,使得虚拟机用户可以按照访问物理内存一样来对片上缓存空间来进行访问等操作,操作方式简单,并且降低了硬件设计和软件使用的复杂性,提升了计算设备在虚拟化下的性能。此外,由于将片上缓存空间放在物理地址空间中,提高了片上缓存的易用性,并且,由于每个虚拟机的物理内存空间是相互独立的,因此片上缓存空间也能保证良好的隔离性。
本公开至少一实施例还提供一种片上缓存空间的访问方法,该片上缓存空间可以基于上述任一实施例的片上缓存空间的配置方法配置。
图7示出了本公开至少一个实施例提供的一种访问方法的流程图。如图7所示,该访问方法包括步骤S310~S340。
步骤S310:响应于对于切分内存空间的访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间;如果否,则执行步骤S320;如果是,则执行步骤S330。
步骤S320:响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间。
步骤S330:判断访问请求的地址是否超过第三内存子空间;如果是,执行步骤S340;如果否,执行步骤S350。
步骤S340:由虚拟装置以缓存方式访问第三内存子空间。
步骤S350:报错。
需要说明的是,本公开实施例中所述的“超过…空间”可以理解为“不位于…空间内”、“不在…空间内”等,对应地,“不超过…空间”、“没有超过…空间”可以理解为“位于…空间内”、“在…空间内”等。例如,访问请求的地址超过第一内存子空间可以理解为访问请求的地址不在第一内存子空间内,包括访问请求的地址大于第一内存子空间的最大地址的情况以及访问请求的地址小于第一内存子空间的最小地址的情况。再例如,参照图6,访问请求的地址超过第三内存子空间213可以是访问请求的地址不属于[BUF_OFFSET,BUF_OFFSET+BUF_SIZE]之间的地址,包括访问请求的地址大于BUF_OFFSET+BUF_SIZE的情况以及访问请求的地址小于BUF_OFFSET的情况。
例如,该访问方法还可以在步骤S310之前包括步骤S301:判断对于切分内存空间的访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求。若访问请求来自于虚拟装置,则执行步骤S310,以判断访问请求的地址是否位于第一内存子空间。
例如参考图5,步骤S310中,判断访问请求的地址是否位于[MEM_BASE,BUF_OFFSET]之间。若访问请求的地址位于第一内存子空间,则响应于访问请求的地址位于第一内存子空间,执行步骤S320,即由虚拟装置以内存方式访问第一内存子空间211。若访问请求的地址超过了第一内存子空间,即访问请求的地址不在第一内存子空间内,则响应于访问请求的地址超过第一内存子空间,执行步骤S330,即判断访问请求的地址是否超过第三内存子空间,也即判断访问请求的地址是否位于第一内存子空间内,例如参考图5,判断访问请求的地址是否位于[BUF_OFFSET,BUF_OFFSET+BUF_SIZE]。若访问请求的地址没有超过第三内存子空间213即访问请求的地址位于第三内存子空间,则表征虚拟装置请求访问片上缓存空间,则响应于访问请求的地址位于第三内存子空间,执行步骤S340,即由虚拟装置以缓存方式访问第三内存子空间213。若访问请求的地址超过了第三内存子空间213,即访问请求的地址不在第三内存子空间内,则访问请求的地址不属于虚拟装置可访问的地址空间,该地址非法,执行步骤S350,即响应于访问请求的地址超过第三内存子空间(访问请求的地址不在第三内存子空间内),报错。报错例如可以是针对访问请求返回错误信息等,本公开的实施例对此不作限制。
例如,如图7所示,访问方法还可以包括S360~S380。
步骤S360:响应于对于切分内存空间的访问请求是来自于物理装置的访问请求,判断访问请求的地址是否超过切分内存空间;如果是,则执行步骤S370;如果否,则执行步骤S380。
步骤S370:由物理装置访问切分内存空间。
步骤S380:报错。
例如,若访问请求来自于物理装置,则执行步骤S360,以判断访问请求的地址是否位于切分内存空间,例如参考图5,判断访问请求的地址是否位于[MEM_BASE,MEM_SIZE]之间。若访问请求的地址位于切分内存空间,则执行S370,即响应于访问请求的地址位于切分内存空间,由物理装置访问切分内存空间;若访问请求的地址超过了切分内存空间(访问请求的地址不在切分内存空间内),则访问请求的地址不属于物理装置可访问的空间,执行步骤S380,即响应于访问请求的地址超过切分内存空间(访问请求的地址不在切分内存空间内),报错。
例如,来自于物理装置的访问请求和来自于虚拟装置的访问请求分别包括设备侧访问请求和主机侧访问请求。物理装置的设备侧访问请求配置为从物理装置的设备侧访问切分内存空间,物理装置的主机侧访问请求配置为从物理装置的主机侧访问第二内存子空间。虚拟装置的设备侧访问请求配置为从虚拟装置的设备侧以内存方式访问第一内存子空间和以缓存方式访问第三内存子空间,虚拟装置的主机侧访问请求配置为从虚拟装置的主机侧以内存方式访问第一内存子空间和以缓存方式访问第三内存子空间。
例如,如上所述,在一个示例中,虚拟装置的主机侧和设备侧均可以在同一时间以缓存方式访问第三内存子空间213。例如,虚拟装置的主机侧和设备可以在同一时间对第三内存子空间213进行访问,而不仅是主机侧和设备侧中的一侧可以访问第三内存子空间。
在这种情况下,在接收到虚拟装置的访问请求时,判断访问请求的地址是否超过第一内存子空间,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间。例如若是由虚拟装置的设备侧发起的访问请求,则由设备侧以内存方式访问第一内存子空间;若是由虚拟装置的主机侧发起的访问请求,则由主机侧以内存方式访问第一内存子空间。若访问请求的地址超过了第一内存子空间,判断访问请求的地址是否超过第三内存子空间,响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问所述第三内存子空间。例如若是由虚拟装置的设备侧发起的访问请求,则由设备侧以缓存方式访问第三内存子空间;若在设备侧访问第三内存子空间的同时,虚拟装置的主机侧发起的访问请求,则由主机侧也可以以缓存方式访问第三内存子空间。若访问请求的地址也超过了第三内存子空间,则可以报错。
例如,如上所述,在另一示例中,第三内存子空间可以被虚拟装置的主机侧和设备侧中的一侧以缓存方式访问,而不能被另一侧以缓存方式访问。例如,在一些示例中,下面以第三内存子空间可以被虚拟装置的设备侧以缓存方式访问、而不能被虚拟装置的主机侧以缓存方式访问为例对步骤S310进行说明。
图8示出了本公开至少一个实施例提供的另一种访问方法的流程图。例如,图8为图7所示的步骤S310的一个示例的流程图,例如,如图8所示,步骤S310可以包括步骤S311~步骤S313。
步骤S311:判断来自于虚拟装置的访问请求是虚拟装置的设备侧访问请求还是虚拟装置的主机侧访问请求;如果访问请求为虚拟装置的设备侧访问请求,则执行步骤S312;如果访问请求为虚拟装置的主机侧访问请求,则执行步骤S313。
步骤S312:判断访问请求的地址是否超过第一内存子空间,如果是,则执行步骤S321;如果否,则执行步骤S331。
步骤S313:判断访问请求的地址是否超过第一内存子空间,如果是,则执行步骤S352;如果否,则执行步骤S322。
例如,在执行步骤S301确定访问请求来自于虚拟装置后,执行步骤S311,判断来自于虚拟装置的访问请求是虚拟装置的设备侧访问请求还是虚拟装置的主机侧访问请求。
例如,若访问请求是虚拟装置的设备侧访问请求,则执行步骤S312,响应于访问请求为虚拟装置的设备侧访问请求,判断访问请求的地址是否超过第一内存子空间(访问请求的地址是否位于切分内存空间内)。若访问请求的地址位于第一内存子空间,则执行步骤S321,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的设备侧以内存方式访问第一内存子空间。若访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内),则执行步骤S331,响应于访问请求的地址超过第一内存子空间,判断访问请求的地址是否超过第三内存子空间(访问请求的地址是否位于第三内存子空间内)。若访问请求的地址位于第三内存子空间,则执行步骤S341,响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问第三内存子空间,例如由虚拟装置的设备侧以缓存方式访问第三内存子空间。若访问请求的地址超过了第三内存子空间(访问请求的地址不在第三内存子空间内),则执行步骤S351报错。例如,步骤321、步骤331、步骤341、步骤S351与图7中的步骤S310-步骤S350相同,在此不再赘述。
例如,若访问请求是虚拟装置的主机侧请求,则执行步骤S313,响应于访问请求为虚拟装置的主机侧访问请求,判断访问请求的地址是否超过第一内存子空间。如果否,即访问请求的地址位于第一内存子空间,则执行步骤S322,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的主机侧以内存方式访问第一内存子空间;如果是,即访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内),则执行步骤S352,响应于访问请求的地址超过第一内存子空间,报错。
例如,在另一些示例中,下面以第三内存子空间可以被虚拟装置的主机侧以缓存方式访问,而不能被虚拟装置的设备侧以缓存方式访问为例对步骤S310进行说明。
图9示出了本公开至少一个实施例提供的另一种访问方法的流程图。例如,图9为图7所示的步骤S310的另一个示例的流程图。例如,如图9所示,步骤S310可以包括步骤S314~步骤S316。
步骤S314:判断来自于虚拟装置的访问请求是虚拟装置的设备侧访问请求还是虚拟装置的主机侧访问请求,若访问请求是虚拟装置的主机侧请求,则执行步骤S315;若访问请求是虚拟装置的设备侧请求,则执行步骤S316。
步骤S315:判断访问请求的地址是否超过第一内存子空间,如果是,则执行步骤S323;如果否,则执行步骤S332。
步骤S316:判断访问请求的地址是否超过第一内存子空间,如果是,则执行步骤S354;如果否,则执行步骤S324。
例如,在执行步骤S301确定访问请求来自于虚拟装置后,执行步骤S314,判断来自于虚拟装置的访问请求是虚拟装置的设备侧访问请求还是虚拟装置的主机侧访问请求。
例如,若访问请求是虚拟装置的主机侧请求,则执行步骤S315,响应于访问请求为虚拟装置的主机侧访问请求,判断访问请求的地址是否超过第一内存子空间(访问请求的地址是否位于第一内存子空间内)。如果否,即访问请求的地址位于第一内存子空间,则执行步骤S323,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的主机侧以内存方式访问第一内存子空间。如果是,即访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内),则执行步骤S332,响应于访问请求的地址超过第一内存子空间,判断访问请求的地址是否超过第三内存子空间。若访问请求的地址位于第三内存子空间,则执行步骤S342,响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问第三内存子空间,例如由虚拟装置的主机侧以缓存方式访问第三内存子空间。若访问请求的地址超过了第三内存子空间(访问请求的地址不在第三内存子空间内),则执行步骤S353,响应于若访问请求的地址超过第三内存子空间,报错。例如,步骤323、步骤332、步骤342、步骤S353与图7中的步骤S310-步骤S350相同,在此不再赘述。
例如,若访问请求是虚拟装置的设备侧请求,则执行步骤S316,响应于访问请求为虚拟装置的设备侧访问请求,判断访问请求的地址是否超过第一内存子空间。如果否,即访问请求的地址位于第一内存子空间,则执行步骤S324,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的设备侧以内存方式访问第一内存子空间。如果是,即访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内),则执行步骤S354,响应于访问请求的地址超过第一内存子空间,报错。
图10示出了本公开至少一个实施例提供的另一种访问方法的流程图。例如,图10为图7所示的步骤S360的一个示例的流程图。例如,如图10所示,步骤S360可以包括步骤S361~步骤S363。
步骤S361:判断来自于物理装置的访问请求是物理装置的设备侧访问请求还是物理装置的主机侧访问请求,若访问请求是物理装置的设备侧访问请求,则执行步骤S362;若访问请求是物理装置的主机侧访问请求,则执行步骤S363;
步骤S362:判断访问请求的地址是否超过切分内存空间;
步骤S363:判断访问请求的地址是否超过第二内存子空间。
例如,在执行步骤S301中确定访问请求来自于物理装置后,执行步骤S361,判断来自于物理装置的访问请求是物理装置的设备侧访问请求还是物理装置的主机侧访问请求。
若访问请求是物理装置的设备侧访问请求,则执行步骤S362,响应于访问请求为物理装置的设备侧访问请求,判断访问请求的地址是否超过切分内存空间。如果是,即访问请求的地址没有超过切分内存空间(访问请求的地址位于切分内存空间内),则执行步骤S371,响应于访问请求的地址位于切分内存空间,由物理装置访问切分内存空间,例如由物理装置的设备侧访问第一内存空间或者第二内存空间。若访问请求的地址超过了切分内存空间(访问请求的地址不在切分内存空间内),则执行步骤S381,响应于访问请求的地址超过切分内存空间,报错。
若访问请求是物理装置的主机侧访问请求,则执行步骤S363,响应于访问请求为物理装置的主机侧访问请求,判断访问请求的地址是否超过第二内存子空间。若访问请求的地址没有超过第二内存子空间(访问请求的地址位于第二内存子空间内),则执行步骤S372,响应于访问请求的地址位于第二内存子空间,由物理装置访问第二内存子空间,例如由物理装置的主机侧访问第二内存子空间。若访问请求的地址超过了第二内存子空间(访问请求的地址不在第二内存子空间内),则执行步骤S382,响应于访问请求的地址超过第二内存子空间,报错。
以上介绍了先判断访问请求来自于虚拟装置还是物理装置,然后再判断访问请求是设备侧访问请求还是主机侧访问请求,结合访问请求来自虚拟装置或物理装置、设备侧或主机侧、以及访问请求的地址所属的地址范围确定访问方式的示例。
在本公开另一示例中,可以先判断访问请求是设备侧访问请求还是主机侧访问请求,然后再判断访问请求来自虚拟装置还是物理装置,结合访问请求来自设备侧或主机侧、虚拟装置或物理装置、以及访问请求的地址所属的地址范围确定访问方式。
图11示出了本公开至少一个实施例提供的另一种访问方法的流程图。如图11所示,在响应于对于切分内存空间的访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间之前,可以包括步骤S401:判断对于切分内存空间的访问请求是设备侧访问请求还是主机侧访问请求。
例如,访问方法还可以包括步骤S402和步骤S403。
步骤S402:响应于访问请求是主机侧访问请求,判断主机侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求;如果主机侧访问请求是来自于虚拟装置的访问请求,则执行步骤S403;
步骤S403:判断访问请求的地址是否超过第一内存子空间,如果否,则执行步骤S407;如果是,则执行步骤S405。
在访问请求是主机侧访问请求的情况下,执行步骤S402:响应于访问请求是主机侧访问请求,判断主机侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求。在访问请求来自于虚拟装置的情况下,执行步骤S403:响应于对于切分内存空间的主机侧访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间。
例如,在一些示例中,虚拟装置的主机侧可以以缓存方式访问第三内存子空间,而虚拟装置的设备侧不能以缓存方式访问第三内存子空间。
在这种情况下,如图11所示,访问方法还可以包括步骤S404~步骤S407。在访问请求的地址没有超过第一内存子空间(访问请求的地址位于第一内存子空间内)的情况下,执行步骤S404,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的主机侧以内存方式访问第一内存子空间。在访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内)的情况下,执行步骤S405,响应于访问请求的地址超过第一内存子空间,判断访问请求的地址是否超过第三内存子空间。若访问请求的地址没有超过第三内存子空间(访问请求的地址位于第三内存子空间内),执行步骤S406,响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问第三内存子空间,例如由虚拟装置的主机侧以缓存方式访问第三内存子空间。若访问请求的地址超过了第三内存子空间,执行步骤S407,响应于访问请求的地址超过第三内存子空间(访问请求的地址不在第一内存子空间内),报错。例如,步骤404至步骤407与图7中的步骤S310-步骤S350相同,在此不再赘述。
例如,若在步骤S402中判断出访问请求来自于物理装置的情况下,如图11所示,访问方法还可以包括步骤S408~步骤S410。步骤S408:响应于主机侧访问请求是来自于物理装置的访问请求,判断访问请求的地址是否超过第二内存子空间。若访问请求的地址没有超过第二内存子空间(访问请求的地址位于第二内存子空间内),执行步骤S409,响应于访问请求的地址位于第二内存子空间,由物理装置以内存方式访问第二内存子空间,例如由物理装置的主机侧访问第二内存子空间。若访问请求的地址超过了第二内存子空间(访问请求的地址不在第二内存子空间内),执行步骤S410,响应于访问请求的地址超过第二内存子空间,报错。
例如,在该示例中,若在步骤S401中判断出访问请求是设备侧访问请求,如图12所示,访问方法还可以包括步骤S411~步骤S417。
步骤S411:响应于访问请求是设备侧访问请求,判断设备侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求,若设备侧访问请求为虚拟装置的设备侧访问请求,则执行步骤S412;若设备侧访问请求为物理装置的设备侧访问请求,则执行步骤S415。
步骤S412:判断访问请求的地址是否超过第一内存子空间;如果否,则执行步骤S413;如果是,则执行步骤S414。
步骤S413:由虚拟装置以内存方式访问第一内存子空间。例如由虚拟装置的设备侧以内存方式访问第一内存子空间。
步骤S414:报错。
步骤S415:判断访问请求的地址是否超过切分内存空间,如果是,则执行步骤S416;如果否,则执行步骤S417。
步骤S416:由物理装置访问切分内存空间。
例如由物理装置的设备侧访问第一内存子空间或者第二内存子空间。
步骤S417:报错。
图13示出了本公开至少一个实施例提供的另一种访问方法的流程图。如图13所示,在响应于对于切分内存空间的访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间之前,可以包括步骤401:判断对于切分内存空间的访问请求是设备侧访问请求还是主机侧访问请求。
例如,访问方法还可以包括步骤S502和步骤S503。
步骤S502:判断设备侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求,若设备侧访问请求是来自于虚拟装置的访问请求,则执行步骤S503。
步骤S503:判断访问请求的地址是否超过第一内存子空间。
在访问请求是设备侧访问请求的情况下,执行步骤S502:响应于访问请求是设备侧访问请求,判断设备侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求。在访问请求来自于虚拟装置的情况下,执行步骤S503:响应于对于切分内存空间的设备侧访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间。
例如,在一些示例中,虚拟装置的设备侧可以以缓存方式访问第三内存子空间,而虚拟装置的主机侧不能以缓存方式访问第三内存子空间,在这种情况下,如图13所示,访问方法还可以包括步骤S504~步骤S507。在访问请求的地址没有超过第一内存子空间(访问请求的地址位于第一内存子空间内)的情况下,执行步骤S504,响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间,例如由虚拟装置的设备侧以内存方式访问第一内存子空间。在访问请求的地址超过了第一内存子空间(访问请求的地址不在第一内存子空间内)的情况下,执行步骤S505,响应于访问请求的地址超过第一内存子空间,判断访问请求的地址是否超过第三内存子空间。若访问请求的地址没有超过第三内存子空间(访问请求的地址位于第三内存子空间内),执行步骤S506,响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问第三内存子空间,例如由虚拟装置的设备侧以缓存方式访问第三内存子空间。若访问请求的地址超过了第三内存子空间(访问请求的地址不在第三内存子空间内),执行步骤S507,响应于访问请求的地址超过第三内存子空间,报错。
例如,若在步骤S502中判断出访问请求来自于物理装置的情况下,如图13所示,访问方法还可以包括步骤S508~步骤S510。步骤S508:响应于设备侧访问请求是来自于物理装置的访问请求,判断访问请求的地址是否超过切分内存空间。若访问请求的地址没有超过切分内存空间(访问请求的地址位于切分内存空间内),执行步骤S509,响应于访问请求的地址位于切分内存空间,由物理装置以内存方式访问切分内存空间,例如由物理装置的设备侧访问第一内存子空间或者第二内存子空间。若访问请求的地址超过了切分内存空间(访问请求的地址不在切分内存空间内),执行步骤S510,响应于访问请求的地址超过切分内存空间,报错。
例如,若在步骤S401中判断出访问请求是主机侧访问请求,如图14所示,访问方法还可以包括步骤S511~步骤S517。
步骤S511:响应于访问请求是主机侧访问请求,判断主机侧访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求,若访问请求为虚拟装置的主机侧访问请求,则执行步骤S512;若访问请求为物理装置的主机侧访问请求,则执行步骤S515。
步骤S512:判断访问请求的地址是否超过第一内存子空间。如果否,则执行步骤S513;如果是,则执行步骤S514。
步骤S513:由虚拟装置以内存方式访问第一内存子空间。
例如由虚拟装置的主机侧以内存方式访问第一内存子空间。
步骤S514:报错。
步骤S515:响应于访问请求为物理装置的主机侧访问请求,判断访问请求的地址是否超过第二内存子空间,如果否。则执行步骤S516;如果是,则执行步骤S517。
步骤S516:由物理装置访问第二内存子空间。
例如由物理装置的主机侧访问第二内存子空间。
步骤S517:报错。
需要说明的是,本公开的各个实施例中,片上缓存空间的配置方法和访问方法的各个步骤的执行顺序不受限制,虽然上文以特定顺序描述了各个步骤的执行过程,但这并不构成对本公开实施例的限制。该配置方法和访问方法中的各个步骤可以串行执行或并行执行,这可以根据实际需求而定。该配置方法和访问方法还可以包括更多或更少的步骤,本公开的实施例对此不作限制。
关于本公开实施例中的访问方法的技术效果可以参考本公开的实施例中提供的配置方法的技术效果,这里不再赘述。
本公开至少一实施例还提供一种应用于计算设备的片上缓存空间的配置装置,例如,计算设备包括至少一个物理装置以及存储装置,计算设备中创建有至少一个虚拟装置。关于计算设备、物理装置和存储装置的具体介绍可参考上述是实力中关于片上缓存空间的配制方法的介绍,在此不再赘述。
图15示出了本公开至少一个实施例提供的一种配置装置600的示意框图。
例如,如图15所示,该配置装置600包括第一配置单元610和第二配置单元620。
第一配置单元610配置为在计算设备的存储装置的内存空间中划分出用于至少一个虚拟装置的至少一个切分内存空间。例如,切分内存空间包括第一内存子空间和第二内存子空间,第一内存子空间配置为至少由虚拟装置以内存方式访问,第二内存子空间配置为由物理装置访问但不能由虚拟装置以内存方式访问。例如,第一配置单元610例如可以执行图2描述的步骤S110,具体介绍可参考步骤S110的相关描述,在此不再赘述。
第二配置单元620配置为在第二内存子空间中划分出第三内存子空间,且将第三内存子空间配置为虚拟装置的片上缓存空间,由虚拟装置以缓存方式访问。例如,第二配置单元620例如可以执行图2描述的步骤S120,具体介绍可参考步骤S120的相关描述。
例如,第一配置单元610和第二配置单元620可以为硬件、软件、固件以及它们的任意可行的组合。例如,第一配置单元610和第二配置单元620可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
需要说明的是,本公开的实施例中,片上缓存空间的配置装置600的各个单元与前述的片上缓存空间的配置方法的各个步骤对应,关于片上缓存空间的配置装置600的具体功能可以参考关于片上缓存空间的配置方法的相关描述,此处不再赘述。图15所示的片上缓存空间的配置装置600的组件和结构只是示例性的,而非限制性的,根据需要,该片上缓存空间的配置装置600还可以包括其他组件和结构。
本公开至少一实施例还提供一种片上缓存空间的访问装置,该片上缓存空间通过上述实施例的配置装置配置。
图16示出了本公开至少一个实施例提供的一种访问装置700的示意框图。
例如,如图16所示,该访问装置700包括第一访问单元710、第二访问单元720、第三访问单元730和第四访问单元740。
第一访问单元710配置为响应于对于切分内存空间的访问请求是来自于虚拟装置的访问请求,判断访问请求的地址是否超过第一内存子空间。例如,第一访问单元710例如可以执行图7描述的步骤S310,具体介绍可参考步骤S310的相关描述。
第二访问单元720配置为响应于访问请求的地址位于第一内存子空间,由虚拟装置以内存方式访问第一内存子空间。例如,第二访问单元720例如可以执行图7描述的步骤S320,具体介绍可参考步骤S320的相关描述。
第三访问单元730配置为响应于访问请求的地址超过第一内存子空间,判断访问请求的地址是否超过第三内存子空间。例如,第三访问单元730例如可以执行图7描述的步骤S330,具体介绍可参考步骤S330的相关描述。
第四访问单元740配置为响应于访问请求的地址位于第三内存子空间,由虚拟装置以缓存方式访问第三内存子空间。例如,第四访问单元740例如可以执行图7描述的步骤S340,具体介绍可参考步骤S340的相关描述。
例如,第一访问单元710、第二访问单元720、第三访问单元730和第四访问单元740可以为硬件、软件、固件以及它们的任意可行的组合。例如,第一访问单元710、第二访问单元720、第三访问单元730和第四访问单元740可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
例如,片上缓存空间的访问装置700还可以包括第五访问单元和第六访问单元。例如,第五访问单元配置为响应于对于切分内存空间的访问请求是来自于物理装置的访问请求,判断访问请求的地址是否超过切分内存空间。第六访问单元配置为响应于访问请求的地址位于切分内存空间,由物理装置访问切分内存空间,以及响应于访问请求的地址超过切分内存空间,报错。
例如,片上缓存空间的访问装置700还可以包括第七访问单元。例如第七访问单元配置为判断对于切分内存空间的访问请求是来自于物理装置的访问请求还是来自于虚拟装置的访问请求。
需要说明的是,本公开的实施例中,片上缓存空间的访问装置700的各个单元与前述的片上缓存空间的访问方法的各个步骤对应,关于片上缓存空间的访问装置700的具体功能可以参考关于片上缓存空间的访问方法的相关描述,此处不再赘述。图16所示的片上缓存空间的访问装置700的组件和结构只是示例性的,而非限制性的,根据需要,该片上缓存空间的访问装置700还可以包括其他组件和结构。
本公开的至少一个实施例还提供了另一种应用于计算设备的片上缓存空间的配置装置,计算设备包括至少一个物理装置以及存储装置,计算设备中创建有至少一个虚拟装置,该配置装置包括处理器和存储器,存储器包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上述的配置方法的指令。该配置装置可以在不增加额外硬件和物理地址空间的情况下,将片上缓存空间提供给虚拟机的用户使用。
图17为本公开至少一个实施例提供的另一种配置装置的示意框图。如图17所示,该配置装置810包括处理器811和存储器812。存储器812用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器811用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器811运行时可以执行上文所述的配置方法中的一个或多个步骤。存储器812和处理器811可以通过总线系统和/或其它形式的连接机构(未示出)互连。
本公开的至少一个实施例还提供了另一种片上缓存空间的访问装置,该片上缓存空间通过上述任一实施例的配置装置配置,该访问装置包括处理器和存储器,存储器包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上述任一实施例提供的访问方法的指令。
图18为本公开至少一个实施例提供的另一种访问装置的示意框图。如图18所示,该访问装置820包括处理器821和存储器822。存储器822用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器821用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器821运行时可以执行上文所述的访问方法中的一个或多个步骤。存储器822和处理器821可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器811和/或处理器821可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器811和/或处理器821可以为通用处理器或专用处理器,可以控制电子设备800中的其它组件以执行期望的功能。
例如,存储器821和/或存储器822可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器811和/或处理器821可以运行一个或多个计算机程序模块,以实现配置装置810和/或访问装置820的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,配置装置810和/或访问装置820的具体功能和技术效果可以参考上文中关于配置方法和/或访问方法的描述,此处不再赘述。
图19为本公开至少一个实施例提供的另一种配置装置或者访问装置的示意框图。该装置900例如适于用来实施本公开实施例提供的配置方法或者访问方法。装置900可以是终端设备等。需要注意的是,图19示出的装置900仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图19所示,装置900可以包括处理单元(例如中央处理器、图形处理器等)910,其可以根据存储在只读存储器(ROM)920中的程序或者从存储单元980加载到随机访问存储器(RAM)930中的程序而执行各种适当的动作和处理。在RAM 930中,还存储有装置900操作所需的各种程序和数据。处理单元910、ROM 920以及RAM930通过总线940彼此相连。输入/输出(I/O)接口950也连接至总线940。
通常,以下装置可以连接至I/O接口950:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入单元960;包括例如液晶显示器(LCD)、扬声器、振动器等的输出单元970;包括例如磁带、硬盘等的存储单元980;以及通信单元990。通信单元990可以允许装置900与其他电子设备进行无线或有线通信以交换数据。虽然图19示出了具有各种单元的装置900,但应理解的是,并不要求实施或具备所有示出的单元,装置900可以替代地实施或具备更多或更少的单元。
例如,根据本公开的实施例,上述配置方法或者访问方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述配置方法或者访问方法的程序代码。在这样的实施例中,该计算机程序可以通过通信单元990从网络上被下载和安装,或者从存储单元980安装,或者从ROM 920安装。在该计算机程序被处理单元910执行时,可以实现本公开实施例提供的配置方法或者访问方法中限定的功能。
本公开的至少一个实施例还提供了一种计算设备的虚拟化系统,包括上述任一实施例的配置装置或上述任一实施例的访问装置、至少一个物理装置和至少一个虚拟装置。
例如,物理装置配置为访问切分内存空间或第二内存子空间。虚拟装置配置为以内存方式访问第一内存子空间和以缓存方式访问第三内存子空间。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质非暂时性地存储计算机可读指令,当计算机可读指令由计算机执行时可以实现上述的配置方法或者访问方法。利用该计算机可读存储介质,可以在不增加额外硬件和物理地址空间的情况下,将片上缓存空间提供给虚拟机的用户使用。
图20为本公开至少一个实施例提供的一种存储介质的示意图。如图20所示,存储介质1000用于非暂时性存储计算机可读指令1010。例如,当非暂时性计算机可读指令1010由计算机执行时可以执行根据上文所述的配置方法或者访问方法中的一个或多个步骤。
例如,该存储介质1000可以应用于上述配置装置810或者访问装置820中。例如,存储介质1000可以为图17所示的配置装置810中的存储器812或者为图18所示的访问装置820中的存储器822。
例如,该存储介质可以是一个或多个计算机可读存储介质的任意组合,例如,在一些示例中,一个计算机可读存储介质包含在计算设备的存储装置的内存空间中划分出用于至少一个虚拟装置的至少一个切分内存空间,切分内存空间包括第一内存子空间和第二内存子空间,第一内存子空间配置为至少由虚拟装置以内存方式访问,第二内存子空间配置为由物理装置访问但不能由虚拟装置以内存方式访问的程序代码。另一个计算机可读存储介质包含在第二内存子空间中划分出第三内存子空间,且将第三内存子空间配置为虚拟装置的片上缓存空间,由虚拟装置以缓存方式访问的程序代码。例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一实施例提供的配置方法。
例如,在另一些示例中,一个计算机可读存储介质包含响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间的程序代码。另一个计算机可读存储介质包含响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间的程序代码。另一个计算机可读存储介质包含响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间的程序代码。另一个计算机可读存储介质包含响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间的程序代码。例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一实施例提供的访问方法。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种应用于计算设备的片上缓存空间的配置方法,其中,所述计算设备包括至少一个物理装置以及存储装置,所述计算设备中创建有至少一个虚拟装置,所述方法包括:
在所述计算设备的存储装置的内存空间中划分出用于所述至少一个虚拟装置的至少一个切分内存空间,其中,所述切分内存空间包括第一内存子空间和第二内存子空间,所述第一内存子空间配置为至少由所述虚拟装置以内存方式访问,所述第二内存子空间配置为由所述物理装置访问但不能由所述虚拟装置以内存方式访问;
在所述第二内存子空间中划分出第三内存子空间,且将所述第三内存子空间配置为所述虚拟装置的片上缓存空间,由所述虚拟装置以缓存方式访问。
2.根据权利要求1所述的配置方法,其中,由所述虚拟装置以所述缓存方式访问,包括:
在所述虚拟装置中从所述虚拟装置的设备侧以缓存方式访问,或者
在所述虚拟装置中从所述虚拟装置的主机侧以缓存方式访问。
3.根据权利要求1所述的配置方法,其中,所述计算设备中创建有多个虚拟装置,
在所述计算设备的存储装置的内存空间中划分出用于所述至少一个虚拟装置的至少一个切分内存空间,包括:
在所述计算设备的存储装置的内存空间中为所述多个虚拟装置分别划分出对应地用于所述多个虚拟装置的多个切分内存空间,其中,一个所述虚拟装置对应一个所述切分内存空间。
4.根据权利要求1-3任一所述的配置方法,其中,所述第三内存子空间小于等于所述第二内存子空间。
5.根据权利要求1-3任一所述的配置方法,其中,
所述第三内存子空间与所述第一内存子空间连续寻址;或者
所述第三内存子空间与所述第一内存子空间不连续寻址。
6.一种片上缓存空间的访问方法,所述片上缓存空间基于权利要求1所述的片上缓存空间的配置方法配置,
所述访问方法包括:
响应于对于所述切分内存空间的访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,
响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
7.根据权利要求6所述的访问方法,还包括:
响应于对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求,判断所述访问请求的地址是否超过所述切分内存空间,
响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;
响应于所述访问请求的地址超过所述切分内存空间,报错。
8.根据权利要求7所述的访问方法,还包括:
判断对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求。
9.根据权利要求7所述的访问方法,其中,来自于所述物理装置的访问请求和来自于所述虚拟装置的访问请求分别包括设备侧访问请求和主机侧访问请求;
所述物理装置的设备侧访问请求配置为从所述物理装置的设备侧访问所述切分内存空间;
所述物理装置的主机侧访问请求配置为从所述物理装置的主机侧访问所述第二内存子空间;
所述虚拟装置的设备侧访问请求配置为从所述虚拟装置的设备侧以内存方式访问所述第一内存子空间和以缓存方式访问所述第三内存子空间;
所述虚拟装置的主机侧访问请求配置为从所述虚拟装置的主机侧以内存方式访问所述第一内存子空间和以缓存方式访问所述第三内存子空间。
10.根据权利要求9所述的访问方法,其中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,包括:
判断来自于所述虚拟装置的访问请求是所述虚拟装置的设备侧访问请求还是所述虚拟装置的主机侧访问请求;
响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,
响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间;
响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问至所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,报错。
11.根据权利要求9所述的访问方法,其中,响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,包括:
判断来自于所述虚拟装置的访问请求是所述虚拟装置的设备侧访问请求还是所述虚拟装置的主机侧访问请求;
响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,
响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间;
响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,报错。
12.根据权利要求9所述的访问方法,其中,所述虚拟装置的设备侧和主机侧在同一时间以所述缓存方式访问所述第三内存子空间。
13.根据权利要求9所述的访问方法,其中,响应于对于所述切分内存空间的所述访问请求是来自于所述物理装置的访问请求,判断所述访问请求的地址是否超过所述切分内存空间,包括:
判断所述访问请求是所述物理装置的设备侧访问请求还是所述物理装置的主机侧访问请求;
响应于所述访问请求为所述物理装置的设备侧访问请求,判断所述访问请求的地址是否超过所述切分内存空间,
响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;
响应于所述访问请求的地址超过所述切分内存空间,报错;
响应于所述访问请求为所述物理装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第二内存子空间,
响应于所述访问请求的地址位于所述第二内存子空间,由所述物理装置访问所述第二内存子空间;
响应于所述访问请求的地址超过所述第二内存子空间,报错。
14.根据权利要求9所述的访问方法,其中,在响应于对于所述切分内存空间的所述访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间之前,还包括:
判断对于所述切分内存空间的所述访问请求是设备侧访问请求还是主机侧访问请求。
15.根据权利要求14所述的访问方法,还包括:
响应于所述访问请求是所述主机侧访问请求,判断所述主机侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;
响应于对于所述切分内存空间的所述主机侧访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间;响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间;
响应于所述访问请求是所述设备侧访问请求,判断所述设备侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;
响应于所述访问请求为所述虚拟装置的设备侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,报错;
响应于所述访问请求为所述物理装置的设备侧访问请求,判断所述访问请求的地址是否超过所述切分内存空间,
响应于所述访问请求的地址位于所述切分内存空间,由所述物理装置访问所述切分内存空间;
响应于所述访问请求的地址超过所述切分内存空间,报错。
16.根据权利要求14所述的访问方法,还包括:
响应于所述访问请求是所述设备侧访问请求,判断所述设备侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;
响应于对于所述切分内存空间的所述设备侧访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间;响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间;
响应于所述访问请求是所述主机侧访问请求,判断所述主机侧访问请求是来自于所述物理装置的访问请求还是来自于所述虚拟装置的访问请求;
响应于所述访问请求为所述虚拟装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
响应于所述访问请求的地址超过所述第一内存子空间,报错;
响应于所述访问请求为所述物理装置的主机侧访问请求,判断所述访问请求的地址是否超过所述第二内存子空间,
响应于所述访问请求的地址位于所述第二内存子空间,由所述物理装置访问所述第二内存子空间;
响应于所述访问请求的地址超过所述第二内存子空间,报错。
17.一种片上缓存空间的访问装置,其中,所述片上缓存空间通过权利要求1所述的配置方法配置,
所述访问装置包括:
第一访问单元,配置为响应于对于所述切分内存空间的访问请求是来自于所述虚拟装置的访问请求,判断所述访问请求的地址是否超过所述第一内存子空间,
第二访问单元,配置为响应于所述访问请求的地址位于所述第一内存子空间,由所述虚拟装置以所述内存方式访问所述第一内存子空间;
第三访问单元,配置为响应于所述访问请求的地址超过所述第一内存子空间,判断所述访问请求的地址是否超过所述第三内存子空间,
第四访问单元,配置为响应于所述访问请求的地址位于所述第三内存子空间,由所述虚拟装置以所述缓存方式访问所述第三内存子空间。
18.一种片上缓存空间的访问装置,其中,所述片上缓存空间通过权利要求1所述的配置方法配置,所述访问装置包括:
处理器;
存储器;
一个或多个计算机程序模块,其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于执行实现权利要求6所述的访问方法的指令。
19.一种计算设备的虚拟化系统,包括:如权利要求17或18所述的访问装置、至少一个物理装置和至少一个虚拟装置;其中,
所述物理装置配置为访问所述切分内存空间或所述第二内存子空间;
所述虚拟装置配置为以所述内存方式访问所述第一内存子空间和以所述缓存方式访问所述第三内存子空间。
20.一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行根据权利要求1-5任一所述的配置方法或权利要求6-16任一所述的访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110767684.8A CN113485791B (zh) | 2021-07-07 | 2021-07-07 | 配置方法和访问方法、装置、虚拟化系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110767684.8A CN113485791B (zh) | 2021-07-07 | 2021-07-07 | 配置方法和访问方法、装置、虚拟化系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485791A CN113485791A (zh) | 2021-10-08 |
CN113485791B true CN113485791B (zh) | 2022-06-03 |
Family
ID=77941857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110767684.8A Active CN113485791B (zh) | 2021-07-07 | 2021-07-07 | 配置方法和访问方法、装置、虚拟化系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485791B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627855B (zh) * | 2023-07-24 | 2023-10-31 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
CN117648287B (zh) * | 2024-01-30 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种片上数据处理系统、方法、服务器及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN110688341A (zh) * | 2019-09-25 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 在fpga上实现高效合约调用的方法及装置 |
CN112148418A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于访问数据的方法、装置、设备和介质 |
CN112579251A (zh) * | 2019-09-29 | 2021-03-30 | 华为技术有限公司 | 虚拟机内存管理的方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194735B2 (en) * | 2017-09-29 | 2021-12-07 | Intel Corporation | Technologies for flexible virtual function queue assignment |
-
2021
- 2021-07-07 CN CN202110767684.8A patent/CN113485791B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN112148418A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于访问数据的方法、装置、设备和介质 |
CN110688341A (zh) * | 2019-09-25 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 在fpga上实现高效合约调用的方法及装置 |
CN112579251A (zh) * | 2019-09-29 | 2021-03-30 | 华为技术有限公司 | 虚拟机内存管理的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113485791A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10970104B2 (en) | Resource access method applied to computer and computer | |
CN107015845B (zh) | Gpu虚拟化 | |
CN107003892B (zh) | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
CN105993009B (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
JP7044832B2 (ja) | データにアクセスするための方法、装置、機器及び媒体 | |
KR102363526B1 (ko) | 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법 | |
JP6029550B2 (ja) | 計算機の制御方法及び計算機 | |
TWI512479B (zh) | 針對記憶體映射組態分派處理器之技術 | |
US20160239333A1 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
US20080077917A1 (en) | Virtual machine system and a method for sharing a graphics card amongst virtual machines | |
US11397697B2 (en) | Core-to-core communication | |
CN113485791B (zh) | 配置方法和访问方法、装置、虚拟化系统和存储介质 | |
US12105648B2 (en) | Data processing method, apparatus, and device | |
US10459662B1 (en) | Write failure handling for a memory controller to non-volatile memory | |
CN107077376B (zh) | 帧缓存实现方法、装置、电子设备和计算机程序产品 | |
US9792209B2 (en) | Method and apparatus for cache memory data processing | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
US11853798B2 (en) | Disaggregated memory pool assignment | |
US20200201691A1 (en) | Enhanced message control banks | |
CN105988871B (zh) | 一种远端内存分配方法、装置和系统 | |
US9405470B2 (en) | Data processing system and data processing method | |
US20160026567A1 (en) | Direct memory access method, system and host module for virtual machine | |
US20210081328A1 (en) | Unified kernel virtual address space for heterogeneous computing | |
US20200348874A1 (en) | Memory-fabric-based data-mover-enabled memory tiering system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |