CN101490654B - 在虚拟机中避免高速缓存行共享 - Google Patents
在虚拟机中避免高速缓存行共享 Download PDFInfo
- Publication number
- CN101490654B CN101490654B CN2007800271730A CN200780027173A CN101490654B CN 101490654 B CN101490654 B CN 101490654B CN 2007800271730 A CN2007800271730 A CN 2007800271730A CN 200780027173 A CN200780027173 A CN 200780027173A CN 101490654 B CN101490654 B CN 101490654B
- Authority
- CN
- China
- Prior art keywords
- passenger plane
- cache line
- plane operating
- cache
- storage
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/80—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
- G06F21/805—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors using a security table for the storage sub-system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/653—Page colouring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在虚拟机中避免高速缓存行共享可在运行主机和多个客机操作系统的系统中实现。主机帮助客机操作系统的硬件访问并监督客机的存储器访问。因为高速缓存行与以规则间隔隔开的存储器页相关联,所以主机可以将客机存储器访问只定向到选择的存储器页,并且因而将客机高速缓存使用限制到一个或多个高速缓存行。通过将存储器访问定向到单独的一组存储器页,可以将其它客机限制到不同的高速缓存行。
Description
背景
最近的文章,如Daniel Bernstein的Cache-timing attacks on AES(对AES的高速缓存定时攻击),2005,和Colin Percival的Cache Missing for Fun andProfit(无意和有意的高速缓存未中),2005,和Dag Arne Osvik、Adi Shamir、Eran Tromer的Cache Attacks and Countermeasures:the Case of AES(高速缓存攻击和对策:AES的情况),2005,以及Joseph Bonneau、Ilya Mironov的Cache-Collision Timing Attacks Against AES(对AES的高速缓存冲突定时攻击),2006,公开了可能影响运行虚拟机的系统的潜在安全漏洞。简言之,在多个客机操作系统共享单个或多个处理器而处理器又共享存储器总线的情况下,恶意的客机可能发现一个或多个其它客机的私钥。
这可通过1、将数据加载到高速缓存;2、以某种方式使受害的客机运行将要填充存储器的代码;以及3、随后在尝试检索加载到高速缓存中的数据的同时测量其这样做所耗的时间来实现。通过测量其检索加载到高速缓存中的数据所耗的时间,恶意的客机发现这些数据实际上是否仍在高速缓存中。如果数据不在高速缓存中,将花更多时间来检索。如果数据不在高速缓存中,则可以推断受害的客机使用了该高速缓存位置。通过确定受害的客机使用了哪些高速缓存位置,恶意的客机可以对受害者的操作有所了解,且可能足以危及受害者的安全。
如在上述参考文献中所提供的对高速缓存线密码分析的现有的推荐解决方案建议改变加密算法来屏蔽存储器访问。这有若干限制。首先,其要求重写加密算法,这是代价高昂的任务。其次,其假定可以将算法做得抗分析。第三,重写算法可能显著地影响其性能。
当在虚拟机上运行时,诸如隔离操作系统中的存储器以保护加密过程等其它缓和措施也可能处于危险中。这是因为以下事实:虚拟化的客机操作系统可能不能控制其存储器是如何分配给它的以及其它存储器是如何分配给其它可能不友好的分区的。
虚拟机技术在当今的技术领域中日益重要。例如,可能涌现其中多个客机操作系统由商业主存服务来主存的业务模型。在这种设置中不能容许安全威胁。本发明解决上述漏洞,并且还提供可以保证本发明也可用于非安全相关目的的性能增益。
概述
考虑到以上标识的现有技术的缺点,本发明提供用于在虚拟机中避免高速缓存行共享的系统和方法。例如,在运行主机和多个客机操作系统的系统中,主机帮助客机操作系统的硬件访问。具体地,主机可以监督客机操作系统的存储器访问。因为高速缓存行与以规则间隔隔开的存储器页相关联,所以主机可以将客机存储器访问只定向到选择的存储器页,并且因而将客机高速缓存使用限制到一个或多个高速缓存行。通过将存储器访问定向到单独的一组存储器页,可以将其它客机限制到不同的高速缓存行。以下将描述本发明的其它优点和特征。
附图简述
将参考附图进一步描述根据本发明的用于在虚拟机中避免高速缓存行共享的系统和方法,在附图中:
图1示出向多个客机分区分配存储器的现有技术方法。第一客机可以使用例如分区A 110中的存储器,其是与高速缓存行1、2、3和4相关联的存储器页的连续块。如果执行了上下文切换,则另一客机可以使用同一高速缓存行和存储器页。
图2示出包括处理器210、220,高速缓存行211、212、221、222,主机203,客机201、202和存储器230的设备200。客机存储器访问被定向到与某些高速缓存行相关联而不与其它高速缓存行相关联的存储器页。其它客机可以使用与不同的高速缓存行相关联的存储器页。
图3示出根据本发明的实施例向客机分区分配存储器。第一客机可以使用分区A 310,其是存储器页的按规则间隔隔开的非连续块,故只与高速缓存行1相关联。如果执行了上下文切换,则其它客机可以使用与诸如高速缓存行2等不同的高速缓存行相关联的存储器页。
图4示出用于管理客机的存储器访问的方法。
图5示出用于将上下文从第一客机切换到第二客机的方法。
图6示出用于将客机从第一处理器转移到第二处理器的方法。
图7示出用于为例如共同实体所拥有的一组客机等一组相关客机保留高速缓存行和/或存储器地址的方法。
详细描述
在以下描述和附图中描述了某些具体细节,以提供对本发明的各个实施例的全面理解。然而,通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,来避免对本发明的各实施例的不必要的混淆。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。
图1表示简化的高速缓存模型。图1构想了包含具有4个高速缓存行150的处理器和16页的物理存储器100的示例性系统。有三个客机分区110、120、130,其每一个都被分配了4页存储器。主机140被分配了1页。
图1示出高速缓存行分配的传统方法,其导致在背景一节所讨论的安全漏洞以及某些消极性能暗示。可以理解,现有的计算机处理器(有时被称为中央处理单元(CPU))包含内部存储器高速缓存以改进数据访问和指令读取的性能。这些高速缓存通常内部地专用于特定存储器部分以在处理器管芯中限制其大小和复杂度。这一安排通常被称为“关联”:给定的高速缓存缓冲区只可以相关联于或被用来高速缓存预定义的存储器地址。例如,如果CPU寻址4K字节页中的存储器且该CPU包含4个高速缓存行,则每第16K字节存储器将与同一高速缓存行相关联。这意味着来自存储器地址0K的读将填充在第一高速缓存行中。来自存储器地址16K、32K、48K等的任何后续读也可填充在第一高速缓存行中而驱逐先前的读,即在该示例中是来自地址0K的读。
在图1中,假想处理器在被称为1、2、3和4的4个高速缓存行150中存储信息。在该示例中,每一高速缓存行具有由每一高速缓存行标识符下的4个框所表示的4个“字(word)”。每一高速缓存行都与系统物理存储器页100中的多个存储器页相关联。例如,如从图1中使用的阴影可以推出的,高速缓存行1中的第一个字指的是系统物理存储器页100中的0K存储器页。高速缓存行1中的第二个字指的是系统物理存储器页100中的16K存储器页。高速缓存行1中的第三个字指的是系统物理存储器页100中的32K存储器页。高速缓存行1中的第四个字指的是系统物理存储器页100中的48K存储器页。
类似地,高速缓存行2中的各个字指的是系统物理存储器页100中的4K、20K、36K和52K存储器页。高速缓存行3中的各个字指的是系统物理存储器页100中的8K、24K、40K和56K存储器页。高速缓存行4中的各个字指的是系统物理存储器页100中的12K、28K、44K和60K存储器页。这一安排是本领域技术人员所理解的公知且标准的硬件实现。
应当注意,高速缓存行150可以是一级(L1)高速缓存、二级(L2)高速缓存、三级(L3)高速缓存、或任何其它级的高速缓存。尽管本发明不限于任何特定高速缓存级的操作,但此处所讨论的示例性实现是针对L2和/或L3高速缓存的。这是因为L2和L3高速缓存通常用相同的n向组关联(n-way setassociativity)和行大小来配置,这有助于本发明的各实施例的操作。
返回图1,右栏示出用于向包括客机操作系统和/或相关联的仿真软件在内的应用程序分配高速缓存行的传统方法。该方法涉及分配高速缓存行以最大化特定应用程序对连续存储器页的利用。因为客机操作系统的硬件资源通常被称为“分区”,所以图1示出对三个假想客机分区110、120、和130,以及虚拟机监控程序(VMM)分区140的存储器分配。
一般而言,虚拟机技术将计算机中的硬件资源分配到与客机操作系统相关联的各个分区。某些资源专用于单独的分区。其它则通常以时间片的方式共享。硬件资源分配的选择最终由诸如VMM等主机来实施。此处所使用的术语“主机”一般指的是具有对物理设备硬件的主要访问和控制的软件。VMM是主机,也是系统管理程序、主机操作系统等。主系统存储器是由VMM管理的一个硬件资源。哪些存储器页分配给哪些分区的选择可由VMM本身或被委托该任务的服务分区来做出。在任一情况下,都是VMM来实施该分配。
如图1所示,可以向每一客机分配包括连续的一组存储器页的分区。例如,分区A存储器110包括0K、4K、8K和12K存储器页。分区B存储器120包括16K、20K、24K和28K存储器页。分区C存储器130包括32K、36K、40K和44K存储器页。VMM存储器140包括48K存储器页。如从将存储器页和高速缓存行进行关联的阴影可以推出的,作为存储器分配的结果,每一客机操作系统都使用所有四个高速缓存行1、2、3和4。VMM只使用高速缓存行1,因为在该示例中其只使用单个存储器页。然而,VMM所使用的高速缓存行仍然由客机操作系统所共享,从而使VMM受到背景中所述的威胁。
图1因此示出对各分区和VMM本身的系统物理页的传统的、顺序的分配。使用这种技术,分区A中的存储器访问可以驱逐分区B、C和VMM的高速缓存。如果分区B在存储器中保持加密表,则分区A可能能够推断访问。这受到背景部分中描述的安全威胁,即,一个分区可以观察另一分区或主机的存储器访问行为并推断关于其加密处理的信息,从而可能泄露其私钥的各个位。
图1中示出的高速缓存行共享的一个附加结果是在具有多个执行上下文的系统上,处理器必须对高速缓存条目加标签以了解哪些条目对该上下文是有效的。在处理器确定高速缓存行是否与其当前执行上下文相关时,其使用每一高速缓存行条目的、具有该高速缓存行相关的页目录的引用的标签。如果两个执行上下文具有冲突的标签,则高速缓存行可能在其不应对执行上下文有效时却看似对其有效。
与图1的高速缓存行模型相关联的消极性能暗示之一是多处理器系统必须提供对各处理器的高速缓存进行同步的方式。在一个处理器读取存储器位置并高速缓存其内容而另一处理器写入该位置而使第一处理器的高速缓存的内容无效的情况下,这是必要的。
同样,在图1中,高速缓存行实际上同时在多个分区和主机之间共享,因为多个处理器可以在两个或多个分区中同时执行。其存储器读或写可能使彼此的高速缓存行无效。由于各分区可以在多个真实CPU上同时执行,所以其可以连续地驱逐彼此的高速缓存行。这可导致高速缓存抖动,在这种情况下,每一分区由于冷高速缓存(cold cache)而必须从主系统存储器读入,从而使其它分区对相同的高速缓存行的使用无效,而这些分区随后也必须从主存储器读入并驱逐先前的读取者。如果不检查这一过程,则其可以显著地影响系统性能。
如可从图2和图3理解的,通过提供各个系统和方法,本发明提供对参考图1和在背景部分所讨论的问题的解决方案,以及多个可能的性能增益,在这些系统和方法中,主机203(图2中的VMM)或被授权向各分区指定存储器分配的代表可以检查系统CPU 210、220的存储器高速缓存布局并向各分区分配存储器230以最小化或完全避免多个客机操作系统201、202和/或主机203的高速缓存行共享。
简要地参考图3,通过有策略地将存储器分配给各分区来避免高速缓存行共享,分区A的所有存储器访问310都落入一个高速缓存行-在此,为高速缓存行1。高速缓存行1可以是单个高速缓存行或一组高速缓存行。结果,分区A读或写将不会降低分区B、C或VMM的高速缓存性能。分区A也不能推断出其它分区或VMM的存储器访问行为。
图2提供用于向多个客机操作系统201、202提供硬件访问的系统,其包括存储器230、含有至少两个高速缓存行,例如221、222的高速缓存,其中每一高速缓存行都与以规则间隔隔开的多个存储器页相关联。在图2中,高速缓存行221与存储器页232、234、236和238相关联。高速缓存行222与存储器页231、233、235和237相关联。因此,与高速缓存行221相关联的存储器页的规则间隔是2,因为存储器230中每隔一个高速缓存存储器页与高速缓存行221相关联。类似地,高速缓存行222与以规则间隔2隔开的多个存储器页相关联,因为存储器230中每隔一个高速缓存存储器页与高速缓存行221相关联。“规则间隔”因而在此被用来指与前一或后一间隔相同的间隔。
图2还包括至少一个客机201和被配置为以所述规则间隔分配所述至少一个客机201所使用的存储器页的主机203,以便所述至少一个客机201所使用的所有存储器页与所述至少两个高速缓存行221或222的受限子集相关联。例如,如果主机203以规则间隔2从230开始分配客机201所使用的存储器页,则客机将只从例如页232、234、236和238读取或向其写入。结果,客机201所使用的所有存储器页将与高速缓存行221和222的受限子集相关联-在该示例中,受限子集只包括高速缓存行221。此处所使用的“受限子集”指的是小于可用高速缓存行的整个数量的子集。
高速缓存行221和222被示为处于L2高速缓存中,但如前所述,本发明不限于任何特定的高速缓存级。L3高速缓存也被认为尤其适于本发明的某些实施例。
在其中高速缓存行221和222与处理器220相关联的实施例中,可以执行上下文切换以允许至少一个第二客机202在所述至少一个处理器220上执行。主机203可被配置为分配单独的一组存储器页,例如231、233、235和237,以供所述第二客机202使用。这将类似地导致所述第二客机202所使用的所有存储器页与所述至少两个高速缓存行221或222的受限子集相关联。在这种情况下,客机202被限于高速缓存行222,即与客机201所使用的高速缓存行不同的高速缓存行。任何数量的客机都可以主存在设备200上,且主机203可被配置为分配单独的一组存储器页以供每一客机使用。
分配存储器以便客机202使用与客机201的高速缓存行不同的高速缓存行222的性能好处是,客机202将不会盖写201所高速缓存的信息,且类似地将不会盖写201放在存储器中的信息。上下文切换可以更快地完成且有更少的高速缓存未中。安全好处是解决了背景部分中所讨论的漏洞。
在一种配置中,除处理器220之外,设备200还可以包括多个处理器,例如处理器210。如图所示,与处理器210相关联的高速缓存行211、212可以类似地与以规则间隔隔开的多个存储器页相关联。例如,如之前一样,高速缓存行211可以与存储器页231、233、235和237相关联,而高速缓存行212可以与存储器页232、234、236和238相关联。
这种多处理器实施例允许客机201从第一处理器220转移到第二处理器210。在完成时,主机203可以确保客机201使用与其在分配给处理器220时所使用的相同的一组通用存储器页,例如232、234、236和238。因此,在多处理器系统中,诸如221等客机可以实际上拥有保留的高速缓存行和对应的一组存储器页,而不管其所要转移到的处理器。这导致降低的高速缓存未中和降低的存储器未中方面的性能增益。安全漏洞也减少了。
应当强调,正如各客机201、202可被分配从230开始的存储器以便将其限制到高速缓存行的受限子集一样,主机203可以类似地分配其自己的存储器使用。因此,性能和安全增益还可在涉及主机的上下文切换中实现。主机203因此可被配置为以适当的规则间隔从230开始分配所述主机203所使用的存储器页,以便主机203所使用的所有存储器页都与所述至少两个高速缓存行的至少一个,例如221或222相关联。
在另一可能的实施例中,相关的多个客机可被分配存储器以便在该相关的多个客机之间共享高速缓存行而不与该相关的多个客机之外的任何客机共享高速缓存行。例如,考虑关于由多个银行拥有的客机的主存服务。第一银行可能不在乎其操作系统是否互相共享高速缓存行,但可能不想与竞争银行共享高速缓存行。在这种情况下,供每一相关的客机使用的单独的一组存储器页与保留的多个高速缓存行的至少一个相关联。例如,考虑其中共同拥有客机201和202的场景。同样,想象多个附加高速缓存行是可用的,其未在图2中示出且其指的是同样未示出的某些假想存储器页。客机201和202可被分配为使用存储器页231-238的任一页,并且因而在必要时在其被从处理器210上下文切换到220以及从220切换到210时共享存储器页211、212、221和222。还可以向其保证无关的客机将不会侵入其高速缓存行或存储器页。
图3被设计来提供本发明的高速缓存模型和图1示出的传统高速缓存模型之间的清楚的并置。如上所述,从300开始的存储器可被有策略地分配给客机/分区以避免高速缓存行共享。因此,第一客机被分配为使用0K、16K、32K和48K处的存储器页。结果,第一客机被限于350中的高速缓存行的受限子集,在此,为包括高速缓存行1的子集。类似地,第二客机可被限于页4K、20K、36K和52K,第三客机可被限于页8K、24K、40K和56K,而主机可被分配与第四高速缓存行相关联的页,在此,为12K和/或28K、44K和60K。
图4示出用于管理第一客机的存储器访问的方法,包括确定与高速缓存行相关联的多个存储器页401,重新映射客机存储器访问402,以及将所述客机存储器访问定向到所述多个存储器页的至少一个,以便所述第一客机所使用的所有存储器页都与所述高速缓存行相关联403。还示出了可任选步骤,包括在执行上下文切换时转储清除高速缓存行/存储器页404。
在一实施例中,图4中的所有步骤可由主机来执行。当启动或转移客机以在处理器上运行时,主机可以确定客机要使用的存储器页。如果客机是首次启动的,则主机可以选择与单个高速缓存行或与高速缓存行的受限子集相关联的任何页。另选地,主机可以根据一个或多个相关的客机所使用的一组高速缓存行/存储器页来选择存储器页。如果客机是先前启动的且仅仅是上下文切换到处理器,则主机可以参考所存储的关于客机先前使用的存储器页/高速缓存行的受限子集的信息,并继续使用该受限子集。
在客机执行时,主机或主机控制下的存储器子系统可以重新映射客机存储器访问402,并将其重新定向到所确定的多个存储器页。因此,客机可能永远不知道其存储器访问被重定向。主机可被配置为向客机呈现人工存储器视图,以便客机只看到与其分配的高速缓存行子集相关联的存储器部分。
可以执行转储清除高速缓存行或存储器页的可任选步骤404,例如在主机被迫允许多个不相关的客机的高速缓存行共享时。转储清除指的是驱逐和/或盖写诸如高速缓存或相关联的存储器页等存储器位置中的所有信息。
图4中示出的方法可由图5、图6和图7中示出的方法步骤来扩充。例如,参考图5,可以执行从第一客机到第二客机的第一上下文切换501。第二客机的存储器访问随后可被定向到与第二高速缓存行相关联的存储器页502,例如通过为第二客机基本上重复图4的步骤:确定与第二高速缓存行相关联的第二多个存储器页,重新映射第二客机存储器访问,以及将所述第二客机存储器访问定向到所述第二多个存储器页的至少一个,以便所述第二客机所使用的所有存储器页都与所述第二高速缓存行相关联。
在另一实施例中,如图6所示,第一(现有)客机被转移到不同的处理器。现有客机指的是当前活动且正在运行的客机。这种客机可被上下文切换到第二处理器601,且客机存储器访问可被定向到与同先前相同的高速缓存行相关联的页602。
图4还可由图7中示出的步骤来扩充,如为例如同一实体所拥有的多个客机等相关的多个客机保留多个存储器页701,以及允许相关的客机的任一个使用任何所保留的高速缓存行或存储器页702。在此,“保留的”应被理解为暗示在这些存储器页或高速缓存行保持保留时,这些存储器页和高速缓存行不能由任何不相关的客机使用。然而,取决于实施例,主机可以被允许或不被允许使用所保留的存储器页和高速缓存行。
除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。本说明书和所示的实现旨在被认为仅仅是具有所附权利要求书的真正范围和精神的示例。
Claims (13)
1.一种用于管理至少两个客机操作系统的存储器访问的方法,包括:
确定与高速缓存行的至少两个受限子集的每一个相关联的多个非连续的、以规则的间隔隔开的存储器页;
重新映射所述至少两个客机操作系统的存储器访问;
对所述至少两个客机操作系统的存储器访问进行定向,使得每个客机操作系统被分配到所述多个存储器页的一个不同子集,以便所述至少两个客机操作系统的每一个所使用的所有存储器页都与所述高速缓存行的所述至少两个受限子集中的不同的子集相关联。
2.如权利要求1所述的方法,其特征在于,还包括执行从所述至少两个客机操作系统中的第一客机操作系统到所述至少两个客机操作系统中的第二客机操作系统的第一上下文切换。
3.如权利要求2所述的方法,其特征在于,还包括:
确定所述多个存储器页的、与高速缓存行的所述至少两个受限子集中的第二受限子集相关联的子集;
重新映射第二客机操作系统存储器访问;
将所述第二客机操作系统存储器访问定向到所述多个存储器页的与所述第二受限子集相关联的子集的至少一个,以便所述第二客机操作系统所使用的所有存储器页都与所述高速缓存行的第二受限子集相关联。
4.如权利要求2所述的方法,其特征在于,还包括在不同的处理器上执行与所述第一上下文切换不同的第二上下文切换,从而所述第一客机操作系统被转移到所述不同的处理器。
5.如权利要求4所述的方法,其特征在于,还包括将所述第一客机操作系统的存储器访问定向到相同的多个存储器地址,以便所述第一客机操作系统所使用的所有存储器页保持与所述高速缓存行的第一受限子集相关联。
6.如权利要求1所述的方法,其特征在于,所述高速缓存行的第一受限子集处于二级高速缓存中。
7.如权利要求1所述的方法,其特征在于,还包括为相关的多个客机操作系统保留多个存储器页使得被保留的多个存储器页不能被任何不相关的客机操作系统所使用。
8.如权利要求7所述的方法,其特征在于,所述相关的多个客机操作系统是由于被同一实体所拥有而相关的。
9.如权利要求7所述的方法,其特征在于,为相关的多个客机操作系统保留的所述多个存储器页与多个高速缓存行相关联。
10.如权利要求9所述的方法,其特征在于,与所述多个高速缓存行的任一个相关联的存储器页可由所述相关的多个客机操作系统的任一个来使用。
11.如权利要求2或4所述的方法,其特征在于,还包括在执行上下文切换之前转储清除所述高速缓存行的第一受限子集。
12.如权利要求2或4所述的方法,其特征在于,还包括在执行上下文切换之前转储清除所述多个存储器页。
13.一种用于管理至少两个客机操作系统的存储器访问的系统,包括:
用于确定与高速缓存行的至少两个受限子集的每一个相关联的多个非连续的、以规则的间隔隔开的存储器页的装置;
用于重新映射所述至少两个客机操作系统的存储器访问的装置;
用于对所述至少两个客机操作系统的存储器访问进行定向的装置,使得每个客机操作系统被分配到所述多个存储器页的一个不同子集,以便所述至少两个客机操作系统的每一个所使用的所有存储器页都与所述高速缓存行的所述至少两个受限子集中的不同的子集相关联。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/490,785 | 2006-07-21 | ||
US11/490,785 US7549022B2 (en) | 2006-07-21 | 2006-07-21 | Avoiding cache line sharing in virtual machines |
PCT/US2007/016436 WO2008011135A1 (en) | 2006-07-21 | 2007-07-20 | Avoiding cache line sharing in virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101490654A CN101490654A (zh) | 2009-07-22 |
CN101490654B true CN101490654B (zh) | 2013-06-19 |
Family
ID=38957085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800271730A Active CN101490654B (zh) | 2006-07-21 | 2007-07-20 | 在虚拟机中避免高速缓存行共享 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7549022B2 (zh) |
KR (1) | KR20090035523A (zh) |
CN (1) | CN101490654B (zh) |
TW (1) | TW200813719A (zh) |
WO (1) | WO2008011135A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984240B2 (en) * | 2008-03-04 | 2011-07-19 | International Business Machines Corporation | Memory compression implementation in a system with directly attached processor memory |
US8380916B2 (en) | 2009-06-04 | 2013-02-19 | Micron Technology, Inc. | Control of page access in memory |
CN101825153A (zh) * | 2010-03-26 | 2010-09-08 | 北京工业大学 | 无轴防泄漏粘滞阻尼器 |
US8738962B2 (en) | 2010-11-17 | 2014-05-27 | International Business Machines Corporation | Memory mirroring with memory compression |
US20120137062A1 (en) * | 2010-11-30 | 2012-05-31 | International Business Machines Corporation | Leveraging coalesced memory |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US9336147B2 (en) * | 2012-06-12 | 2016-05-10 | Microsoft Technology Licensing, Llc | Cache and memory allocation for virtual machines |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US8838902B2 (en) * | 2012-10-15 | 2014-09-16 | International Business Machines Corporation | Cache layer optimizations for virtualized environments |
US9015523B2 (en) | 2012-12-20 | 2015-04-21 | Intel Corporation | Memory allocation for virtual machines using memory map |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9785769B2 (en) | 2014-03-18 | 2017-10-10 | Dalian University Of Technology | Countering attacks on a cache |
US9767041B2 (en) * | 2015-05-26 | 2017-09-19 | Intel Corporation | Managing sectored cache |
US10423418B2 (en) | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Method for maintaining a branch prediction history table |
US9846652B2 (en) * | 2016-03-31 | 2017-12-19 | Intel Corporation | Technologies for region-biased cache management |
US10489296B2 (en) | 2016-09-22 | 2019-11-26 | International Business Machines Corporation | Quality of cache management in a computer |
US10733096B2 (en) | 2017-11-22 | 2020-08-04 | Samsung Electronics Co., Ltd. | System and method for frame buffer |
US10684857B2 (en) | 2018-02-01 | 2020-06-16 | International Business Machines Corporation | Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675763A (en) * | 1992-07-15 | 1997-10-07 | Digital Equipment Corporation | Cache memory system and method for selectively removing stale aliased entries |
EP0875853A2 (en) * | 1997-04-30 | 1998-11-04 | Canon Kabushiki Kaisha | Graphics processor architecture |
CN1652092A (zh) * | 2003-12-09 | 2005-08-10 | 国际商业机器公司 | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 |
US6944719B2 (en) * | 2002-05-15 | 2005-09-13 | Broadcom Corp. | Scalable cache coherent distributed shared memory processing system |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901493B1 (en) * | 1998-02-24 | 2005-05-31 | Adaptec, Inc. | Method for protecting data of a computer system |
JP2003036169A (ja) * | 2001-07-25 | 2003-02-07 | Nec Software Tohoku Ltd | 複数の小規模プロセッサによって並列処理を行なうシングルチップマイクロプロセッサ |
EP1503284A1 (en) * | 2003-08-01 | 2005-02-02 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US7506198B2 (en) * | 2003-08-11 | 2009-03-17 | Radix Israel, Ltd. | Protection and recovery system and automatic hard disk drive (HDD) instant recovery |
US20050132364A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US7421533B2 (en) * | 2004-04-19 | 2008-09-02 | Intel Corporation | Method to manage memory in a platform with virtual machines |
-
2006
- 2006-07-21 US US11/490,785 patent/US7549022B2/en active Active
-
2007
- 2007-06-21 TW TW096122364A patent/TW200813719A/zh unknown
- 2007-07-20 CN CN2007800271730A patent/CN101490654B/zh active Active
- 2007-07-20 WO PCT/US2007/016436 patent/WO2008011135A1/en active Application Filing
- 2007-07-20 KR KR1020097000883A patent/KR20090035523A/ko not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675763A (en) * | 1992-07-15 | 1997-10-07 | Digital Equipment Corporation | Cache memory system and method for selectively removing stale aliased entries |
EP0875853A2 (en) * | 1997-04-30 | 1998-11-04 | Canon Kabushiki Kaisha | Graphics processor architecture |
US6944719B2 (en) * | 2002-05-15 | 2005-09-13 | Broadcom Corp. | Scalable cache coherent distributed shared memory processing system |
CN1652092A (zh) * | 2003-12-09 | 2005-08-10 | 国际商业机器公司 | 不同高速缓存级上具有关联集重叠同余组的多级高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
CN101490654A (zh) | 2009-07-22 |
US20080022048A1 (en) | 2008-01-24 |
KR20090035523A (ko) | 2009-04-09 |
US7549022B2 (en) | 2009-06-16 |
WO2008011135A1 (en) | 2008-01-24 |
TW200813719A (en) | 2008-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101490654B (zh) | 在虚拟机中避免高速缓存行共享 | |
TWI798370B (zh) | 非暫時性電腦可讀取儲存媒體以及用於在裝置中存取資料的系統與方法 | |
US10706147B1 (en) | Mitigating side-channel attacks via shared cache | |
CN105190570B (zh) | 用于虚拟机器的完整性保护的存储器自省引擎 | |
CN110442381A (zh) | 用于保护有条件的推测性指令执行的影子缓存 | |
CN104813295B (zh) | 安全区域内的日志记录 | |
EP1898311B1 (en) | Method and apparatus for preventing software side channel attacks | |
JP6181004B2 (ja) | メモリ管理装置、プログラム、及び方法 | |
CN110442537A (zh) | 用于不同等级的调用的单独分支目标缓冲区 | |
US20090216953A1 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
CN105393229A (zh) | 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中 | |
CN107995978A (zh) | 可编程的内存传输请求处理单元 | |
CN101201885A (zh) | 一种在vt环境中操作的软件代理的篡改保护方法和装置 | |
JPH0291747A (ja) | 情報処理装置 | |
US20110022853A1 (en) | Encrypting data in volatile memory | |
Yan et al. | Secdir: a secure directory to defeat directory side-channel attacks | |
CN109446835A (zh) | 数据访问控制方法、装置及设备 | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
US10049048B1 (en) | Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor | |
Chen et al. | Secure in-cache execution | |
CN116302491A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
EP0745940B1 (en) | An apparatus and method for providing a cache indexing scheme less susceptible to cache collisions | |
WO2011117223A1 (en) | Sparse data access acceleration | |
US8751724B2 (en) | Dynamic memory reconfiguration to delay performance overhead | |
US6324632B1 (en) | Processing a data stream |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150430 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150430 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |