CN117769700A - 动态可分配物理寻址元数据存储库 - Google Patents

动态可分配物理寻址元数据存储库 Download PDF

Info

Publication number
CN117769700A
CN117769700A CN202280051243.0A CN202280051243A CN117769700A CN 117769700 A CN117769700 A CN 117769700A CN 202280051243 A CN202280051243 A CN 202280051243A CN 117769700 A CN117769700 A CN 117769700A
Authority
CN
China
Prior art keywords
metadata
memory
physical memory
cache
computing device
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.)
Pending
Application number
CN202280051243.0A
Other languages
English (en)
Inventor
D·T·奇斯纳尔
N·W·菲拉多
R·M·诺顿-怀特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN117769700A publication Critical patent/CN117769700A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

在示例中,存在一种包括处理器的计算设备,该处理器具有存储器管理单元。该计算设备还具有存储指令的存储器,该指令在由该处理器执行时使得存储器管理单元接收包括虚拟存储器地址的存储器访问指令;将虚拟存储器地址转换为该存储器的物理存储器地址,并且获取与该物理存储器地址相关联的许可信息。响应于许可信息指示元数据被允许与物理存储器地址相关联,检查存储在物理存储器中的元数据汇总表,以检查元数据是否与物理存储器地址兼容。响应于检查不成功,陷阱被发送向计算设备的系统软件,以便触发用于存储与物理存储器地址相关联的元数据的物理存储器的动态分配。

Description

动态可分配物理寻址元数据存储库
背景技术
数个硬件安全方案包括将元数据与物理存储器相关联,以便当数据被读取或写入到物理存储器时,相关联的元数据可以被检查以便实施特定安全策略或改变系统行为。
以下描述的实施例不限于解决在物理存储器中存储和使用元数据的已知方式的任何或全部缺点的实施方案。
发明内容
以下呈现本公开的简化汇总,以便向读者提供基本理解。本汇总并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。其唯一的目的是以简化的形式呈现本文中公开的概念的选择,作为随后呈现的更详细描述的序言。
在各种示例中存在一种包括处理器的计算设备,该处理器具有存储器管理单元。计算设备还具有存储指令的存储器,指令在由处理器执行时使存储器管理单元:接收包括虚拟存储器地址的存储器访问指令;将虚拟存储器地址转换为存储器的物理存储器地址;并且获取与物理存储器地址相关联的信息,信息是以下一个或多个:许可信息和存储器类型信息。响应于指示允许元数据与物理存储器地址关联的信息,检查被存储在物理存储器中的元数据汇总表,以检查元数据是否与物理存储器地址兼容。响应于检查不成功,陷阱被发送到计算设备的系统软件,以便允许动态分配用于存储与物理存储器地址相关联的元数据的物理存储器。在一些示例中,元数据汇总表可在处理器的缓存处被缓存。
通过参考结合附图考虑的以下详细描述,许多附带特征将变得更容易被理解。
附图说明
按照附图阅读以下详细描述,将更好地理解本描述,其中:
图1是数据中心的示意图,并且示出了数据中心的计算节点的物理存储器,其中物理存储器分别存储数据和元数据;
图2是计算设备的中央处理单元、缓存行以及虚拟和物理存储器的示意图,其中物理存储器一起存储数据和元数据;
图3是计算设备的中央处理单元、缓存行以及虚拟和物理存储器的示意图,其中物理存储器分开存储数据和元数据;
图4是计算设备的存储器管理单元和标签控制器的示意图;
图5是由存储器管理单元执行的方法的流程图;
图6是由系统软件执行的方法的流程图;
图7是由标签控制器执行的针对缓存行驱逐的方法的流程图;
图8是由标签控制器执行的针对缓存填充的方法的流程图;
图9示出了在其中实现实施例的示例性基于计算的设备。
在附图中相同的参考标号用于指代相同的部件。
具体实施方式
以下结合附图提供的详细描述旨在作为本示例的描述,并不旨在代表构造或利用本示例的唯一形式。该描述阐述了示例的功能以及用于构造和操作示例的操作顺序。然而,相同或等效的功能和顺序可以通过不同的示例来实现。
术语“页面”在本文件中被用以指代与存储器管理单元使用的存储器单元相同或不同的存储器单元。
在本文中描述的示例中,描述了作为CPU的处理器。当处理器是连接到诸如加速器的缓存一致互连的任何处理器时,示例也是可行的。
如上所述,数个硬件安全方案包括将元数据与物理存储器相关联,以便当数据被读取或写入到物理存储器时,相关联的元数据可以被检查以便实施特定安全策略。这种硬件安全方案的示例包括但不限于:存储器标记扩展(MTE)和能力硬件增强RISC指令(CHERI)。与物理存储器相关联的元数据还可为了硬件安全方案之外的其他目的。
包括使元数据与物理存储器相关联的典型硬件安全方案拆分出物理存储器的范围以存储元数据。发明人已经认识到,针对云部署会出现不可接受的存储器开销,其中云部署中的计算节点拆分出一些物理存储器,以便为了硬件安全方案或其他目的而存储与物理存储器相关联的元数据。在MTE的情况下,即使在服务器上的仅有单个虚拟机(VM)运用元数据,存储器开销也多达所有存储器的1/32。
在各种实施例中,存在包括物理存储器的(小得多,通常为1/512)固定保留的机制,以便存储元数据汇总表,该元数据汇总表可以在满足需要的地方存储粗粒度元数据并且存储指向存储细粒度元数据的动态分配的物理存储器的指针。实现这种元数据汇总表并不简单,因为将保持低处理开销,同时还使不利用元数据的操作能尽可能不受影响。在实施例中,存在用于部署元数据汇总表和物理存储器的动态分配的机制,用于在典型的中央处理单元(CPU)设计中存储细粒度元数据和用于管理它的软件抽象集。
图1是数据中心100的示意图,并且示出了数据中心100的计算节点104的物理存储器114,其中物理存储器114分别存储数据和与数据相关联的元数据。数据中心100包括多个计算节点102、104。每个计算节点具有中央处理单元(CPU)和物理存储器114。计算节点102、104可选地经由通信网络彼此通信。计算节点被用以诸如通过执行应用和通过诸如互联网的通信网络向客户端设备提供应用的功能来提供云计算服务。
在示例中,存在第一多个计算节点102和第二多个计算节点102。每个计算节点104仅具有正在使用元数据的虚拟机。相比之下,每个计算节点102具有不使用元数据的至少一个虚拟机。
图1示出了根据第一方法(在左手侧)和根据第二方法(在右手侧)的计算节点中的一个计算节点的物理存储器的放大视图。在第一方法和第二方法中,数据和与数据相关联的元数据被分别存储在物理存储器中。被分别存储意味着针对给定的数据片段及其相关联的元数据,存储器中的位置不必然是相邻的。
根据第一方法(在左手侧),物理存储器106的范围被保留在物理存储器114中用于存储元数据,而其余物理存储器108用于存储数据。发明人已经认识到,第一方法出现不可接受的存储器开销是因为即使计算节点是使用硬件安全或其他方案的具有仅一个虚拟机的计算节点102中的一个计算节点,每个计算节点也保留物理存储器106的范围以用于存储元数据。根据第一方法(在左手侧),被保留用于存储元数据的物理存储器106的范围在计算节点启动时被分配,并且通常多达物理存储器的3%。假设数据中心具有多个租户,其中只有25%的租户使用硬件安全或其他方案。因为元数据分配不与租户的(解除)使用该方案成比例,因此使用该方案的25%的租户和25%的总数据物理存储器占元数据分配的100%,且因此强加了12%到13%的有效存储器开销。因为存储器是数据中心中最昂贵的资源中的一个资源,所以保留物理存储器的12%到13%是不可接受的。
根据第二方法(右手侧),并且根据本公开的实施例,通过在启动时间进行固定保留来为元数据汇总表保留小的(不必然连续)物理存储器110的范围。在一些情况下,使用物理存储器的1/512来存储元数据汇总表。元数据汇总表支持间接(通过将指针存储到物理存储器存储元数据的位置)并且在一些情况下支持缓存功能(它存储元数据的位置)。元数据汇总表是保存关于物理存储器的哪些区域存储元数据、哪些区域存储数据以及哪些区域尚未被分配的信息的物理存储器的表示。元数据汇总表本身在某些情况下存储一些元数据,如以下更详细解释的,并且在此方面为其存储的元数据提供一种类型的缓存功能。数据被存储在剩余的物理存储器112中,且此外,剩余的物理存储器112的部分被动态地分配用于存储元数据。用于存储元数据的动态分配的物理存储器区域的指针被存储在元数据汇总表中。以此方式,数据和其相关联的元数据不被一起存储在物理存储器中,即在空间上不相邻。本技术的实施例涉及使用元数据汇总表的第二方法。因为元数据汇总表比第一方法的物理存储器106的范围小得多,所以与第一方法相比存在显著的存储器节省。因为元数据汇总表通过将指针存储到在物理存储器中存储元数据的位置来支持间接,即使元数据汇总表比第一方法的物理存储器的范围小得多,也有可能具有足够的存储器来存储元数据。
通过使用元数据汇总表引入间接与第一方法相比带来了计算负担的潜在增加。然而,通过启用一些缓存功能,负担被减轻了。在一些情况下,通过将元数据存储在元数据汇总表本身中,减少了计算负担,因为不需要查找指向元数据已经在元数据汇总表中的物理存储器中的位置的指针。在示例中,在针对物理存储器的连续区域的元数据相同时,元数据被保持在元数据汇总表中。
在图1的方法中,数据和元数据被分开存储在物理存储器中。其他方法包括将元数据存储在带中,也就是说,将元数据及其相关联数据一起存储在物理存储器中。这样做包括使用直接支持元数据的专业物理存储器。然而,直接支持元数据的存储器芯片是昂贵的,并且在许多当前的数据中心中没有被部署。发明人还认识到,使用直接支持元数据的存储器芯片不会带来如下所解释的位置属性可用以改善性能的优点。元数据上的一些操作受益于能够与数据分开地检查元数据。用直接存储元数据的物理存储器来有效实现这些将需要存储器能够查询元数据的列以及数据和元数据的行。
图2是计算设备的中央处理单元200、缓存行202和虚拟206和物理210存储器的示意图,其中物理210存储器一起存储数据和元数据。图2是为了帮助理解本公开而包括的背景材料。
假设在计算设备上的虚拟机上执行的应用(图2中的APP)使用在虚拟存储器地址空间206中分配的存储器212、存储器214的页面。虚拟存储器212、存储器214的页面被映射到伪物理/客户物理存储器208的页面216、页面218。接着,将伪物理/客户物理存储器208的页面216、页面218映射到物理存储器页面220、页面222。为了存储元数据,物理存储器页面220、页面222稍微扩展,如由交叉阴影矩形所指示的。元数据被存储在物理存储器210中,并且发生地址转换的事实不影响找到元数据的能力。也就是说,给定虚拟存储器地址,其可能使用常规的地址转换方法将虚拟存储器地址转换为物理存储器地址,并且用物理存储器页面获取被存储在物理存储器中的元数据。当从物理存储器中取回数据及其相关联的元数据并且将其放入缓存行(如图2中从物理存储器页面220到缓存行块204的箭头所示)时,数据及其元数据一起流动并且被一起存储在缓存行202中。然而,此类方法是不可行的,因为通常不存在足够的空间针对将元数据与数据被一起存储在物理存储器中。因此,本公开的实施例将数据和元数据分别存储在物理存储器中。
图3是背景材料并且被包括来帮助理解本公开。图3是计算设备的中央处理单元200、缓存行202和虚拟206和物理210存储器的示意图,其中物理210存储器分别存储数据和元数据。图3示出避免用于存储元数据的物理存储器的固定分拆的一种方式。然而,图3的方法具有以下所解释并且在本公开中寻址的缺点。通过分别存储数据和元数据,存在针对元数据足够的空间。针对图2,应用在计算设备的虚拟机中执行并且使用虚拟存储器206中的虚拟存储器页面。在此示例中,虚拟存储器页面包括仅针对元数据的虚拟存储器页面300和仅针对数据的虚拟存储器页面302、页面304。针对图2,虚拟存储器的每个页面被映射到伪物理/客户物理存储器208中的页面。针对图2,伪物理/客户物理存储器208中的每个页面被映射到物理存储器210中的页面。当发生缓存行填充操作时,如图3的物理存储器210和缓存行202之间的箭头306、箭头308所示,从物理存储器210中分开的页面取回数据和其相关联的元数据,并且其被存储在缓存行202中的分开的位置中。因为数据和相关联的元数据没有被一起存储在缓存行202中,所以对数据和相关联的元数据的后续操作不是直接的。因此,本技术的实施例使得数据及其相关联的元数据能够一起存储在CPU的缓存中,诸如缓存行202或层级缓存,即使是在数据和元数据被分别存储在物理存储器中的情况下。
图4是根据本公开的实施例的计算设备的存储器管理单元400和标签控制器406的示意图。在本公开的各种实施例中,在存储器管理单元400和/或标签控制器406中实现使得能够更新和使用元数据汇总表的功能。术语“标签”用以指代一种类型的元数据,以便“标签控制器”是用于控制元数据的功能。标签控制器不必然响应于CPU当时正在做的事情而工作。标签控制器执行缓存行驱逐或缓存填充,因为它是缓存层级的部分。存储器管理单元400是CPU 200的部分。CPU经由缓存与物理存储器210通信,在图4的示例中,缓存是包括1级缓存402、2级缓存404的层级缓存和可能有其他层级的缓存(由图4中的点表示)以及标签控制器406。附加的缓存层也可以存在于标签控制器406与物理存储器210之间。数据和元数据一起存储在标签控制器406和CPU 200之间的任何缓存层中,并且被分别存储在标签控制器406和主存储器210之间的任何层中。在本公开的实施例中,CPU能够如同数据和相关联的元数据被一起存储在物理存储器中(当事实上他们被分别存储时)一样操作。这通过使用标签控制器来实现,使得在物理存储器地址空间中存在可以用以取回数据及其相关联的元数据的单个地址。通过使用如本文中描述的标签控制器,在地址转换之后,存在用于取回数据和元数据的单个物理地址。数据和元数据是如何准确地存储在物理存储器中对于处理器和大多数缓存是不可见的。
在图4的示例中,标签控制器在紧接物理存储器210的缓存层级的底部。标签控制器紧接物理存储器所具有的益处包括在一些系统上实现的简单性。
图4的计算设备还具有一个或多个存储器控制器,为了清楚起见,这些存储器控制器在图4中未示出。存储器控制器与物理存储器直接通信,且因此在一些实施例中,标签控制器406在存储器控制器中的一个存储器控制器的内部。在这种情况下,在标签控制器406在存储器控制器中的一个存储器控制器的内部的情况下,标签控制器406在标签控制器内部具有少量缓存以存储元数据和可选地元数据汇总表条目。在存储器控制器内部具有标签控制器的益处包括提供单个集成点。
在一些实施例中,标签控制器紧接着最后一级缓存之前,并且最后一级缓存分开地存储数据和元数据(不同于数据和元数据一起存储的其他缓存级)。此方法的益处包括取决于工作负载而在通用缓存中存储的数据量与元数据之间动态地交换。
图5是根据本公开的实施例的由存储器管理单元执行的方法的流程图。存储器管理单元具有用于在虚拟存储器地址、伪/客户物理存储器地址和物理存储器地址之间转换的常规存储器管理单元的功能。此外如现在所解释的,存储器管理单元被扩展。存储器管理单元接收500作为例如在CPU上运行的虚拟机处执行的应用的结果的存储器访问指令。存储器访问指令包括虚拟存储器地址。存储器管理单元转换502虚拟存储器地址以获取物理存储器地址。作为转换过程的部分,存储器管理单元还获取作为许可信息和/或存储器类型信息的信息。转换信息和许可由软件通过显式指令或通过维护数据结构的软件提供到MMU,数据结构例如MMU可以直接查阅的页面表。许可信息指示是否已经给予存储与物理存储器地址相关联的元数据的许可。存储器类型信息指示物理存储器地址处的存储器的类型是否是元数据潜在地与物理存储器地址相关联的类型。
存储器管理单元使用在操作502处获取的信息来确定(在操作504处)存储器访问指令是否允许元数据。响应于存储器访问指令不允许元数据,存储器管理单元进行到操作510处,恢复其正常的转换操作。以此方式,在不使用元数据的情况下,诸如在不需要硬件安全方案或使用元数据的其他方案的情况下,处理开销不受影响。这非常有用,因为它针对不使用元数据存储库的虚拟机允许零成本特征。在具有支持元数据的硬件和具有不允许使用元数据的虚拟机的计算设备的情况下,则没有地址转换将允许元数据。
响应于存储器访问指令允许元数据(在操作504),存储器管理单元进行到操作506。在操作506,存储器管理单元检查存储器访问指令是否与元数据兼容。此检查包括查询元数据汇总表。响应于存储器访问指令与元数据兼容,存储器管理单元进行正常的转换操作510。因为存储器访问指令与元数据兼容,所以物理存储器地址已经具有相关联的元数据存储库。
响应于存储器访问指令与元数据不兼容(在操作506),向系统软件发送508陷阱。陷阱是向计算设备的系统软件指示存在故障的消息或标志。该故障是存储器访问指令需要物理存储器中的元数据存储库空间但当前没有分配。陷阱允许或启用或触发系统软件动态地分配物理存储器中的空间以用于存储针对存储器访问指令的元数据。使存储器管理单元发送陷阱是有益的,因为存储器管理单元通常与中央处理单元同步操作。相反,标签控制器与中央处理单元不同步。因此,发明人已经认识到使用存储器管理单元而不是标签控制器来生成陷阱是有益的;因为在标签控制器处生成陷阱将可能导致情况如尝试分配元数据空间的软件将触发更多缓存驱逐并且使向前进展的保证非常困难。
应注意,在图5中存在两个决策菱形504、506,并且这带来与具有单个决策菱形相反的益处。如果省略决策菱形504,则该过程是可行的。在单个决策菱形的情况下,从存储已经针对元数据(兼容性检查506)被分配的事实推断元数据被允许(即,决策菱形504)。但在这种情况下,元数据汇总表必须对CPU可见,或至少对MMU可见,这是有问题的。此外,在单个决策菱形的情况下没有足够的信息可用来使得能够在数据中心中使用的不同类型的元数据方案之间进行区分。假设在数据中心中的一些虚拟机仅使用MTE,一些仅使用CHERI,一些使用CHERI和MTE,则仅一些元数据存储库可用的事实针对给定页面不足以告知特定类型的元数据是否可以被存储。注意,术语“页面”指的是存储器单元,其不必与被称为MMU使用的页面的存储器单元相同。
图5示出了在计算设备上执行的指令如何使得存储器管理单元响应于指示在物理存储器地址处元数据的许可信息不被允许继续进行转换操作。
图5示出了计算设备上的指令如何使得存储器管理单元响应于检查元数据汇总成功而继续进行转换操作。
图6是根据本公开的实施例的由计算设备处的系统软件执行的方法的流程图。系统软件的示例的非详尽列表是:操作系统、管理程序。作为图5的操作508的结果,系统软件接收600陷阱。该系统软件通过检查陷阱中接收的信息来标识602与陷阱相关联的故障地址。故障地址是作为图5的存储器访问指令的结果而被调查的物理存储器地址,并且被发现即使存储器访问指令需要相关联的元数据存储库,也不具有相关联的元数据存储库。系统软件标识604物理存储器中可用以被分配针对元数据存储库的位置。系统软件调用606一个或多个指令或者调用计算设备的固件以配置元数据存储库。在此过程期间,系统软件可以显式地或隐式地与其他信任域中的系统软件通信。在配置期间,微代码或固件在物理存储器中针对元数据存储库分配所标识的位置。这包括标记新页面以用作元数据存储库,或者包括在现有页面上使用新槽。微代码或固件执行检查以确定所标识的位置是否可用于在硬件安全方案或元数据正被用于的其他方案中针对指定数据页面的元数据存储库。
系统软件从陷阱处理程序返回608,并且因此使存储器管理单元知道该陷阱已经被处理。MMU然后重试存储器访问指令,即其从操作500重复图5的过程。此时,当MMU到达操作506时,因为元数据存储库已被分配并且MMU能够进行到操作510,所以结果是成功的。
图6示出了系统软件如何包括用于以下操作的指令:从存储器管理单元接收陷阱;标识作为物理存储器地址的故障地址;标识用于存储与物理存储器地址相关联的元数据的存储器位置;以及使用微代码或固件来配置被标识的存储器位置以用于存储元数据。
图6示出了系统软件如何包括指令,该指令用于响应于所标识的用于存储元数据的存储器位置的成功配置而向存储器管理单元指示继续转换操作。
图7是根据本公开实施例的方法的流程图。图7的方法由针对缓存行驱逐的标签控制器执行,其中缓存行将被驱逐到较低级缓存或物理存储器。在缓存行要被驱逐到较低级缓存的情况下,该较低级缓存是分开存储数据和元数据的缓存。如之前解释的,标签控制器是缓存层级的一部分,并且负责将缓存行从其缓存层级的一部分驱逐以及将缓存填充到其缓存层级的部分。标签控制器可选地具有其自己的内部缓存,这里称为标签控制器的内部缓存。当缓存行将被驱逐700时,标签控制器检查702其自身的内部缓存,以找出是否存在被配置针对物理存储器中的位置或者缓存行内容将被驱逐到的较低级缓存的元数据存储库。如果来自内部缓存的结果不确定,则标签控制器查询704元数据汇总表以找出是否存在被配置的元数据存储库。在标签控制器具有内部缓存的情况下,标签控制器可选地将查询结果缓存到其内部缓存中的元数据汇总表。
标签控制器因此能够针对缓存行内容将被驱逐到的位置而确定706元数据存储库是否被配置。响应于元数据存储库未被配置,标签控制器继续丢弃708正被驱逐的缓存行中的元数据。
响应于在决策菱形706处配置元数据存储库,标签控制器检查710缓存行中将被驱逐的元数据是否具有足够的位置。足够的位置是在相对靠近的存储位置内元数据相同的位置。缓存行由串联的多个数据块组成,并且每个块可以具有与缓存行中的块一起存储的元数据项(因为在缓存行中元数据和数据一起存储)。如果针对多个连续块的元数据相同,则存在足够的位置。标签控制器检查块的元数据,以查看是否存在多于阈值数目的具有相同元数据的连续块。阈值被预先设置并取决于汇总表中可用的空间量。
在缓存行中不存在元数据的足够位置的情况下,标签控制器继续将元数据写出714到物理存储器。来自被驱逐的缓存行中的数据也被写出到物理存储器。因为在物理存储器中,数据和元数据被分开存储,所以元数据被写入到物理存储器中与数据不同的位置。标签控制器可选地将与缓存行相关联的元数据存储库在其内部缓存中(或者必须将其写入到物理存储器或较低级缓存中)。随着时间的推移,元数据积累在标签控制器的内部缓存中,并且一旦内部缓存已满,标签控制器就将元数据写回到物理存储器中。以这种方式,到物理存储器的写入频率被降低了。
在缓存行中存在元数据的足够位置的情况下,标签控制器以压缩形式将元数据写入718到元数据汇总表。假设缓存行中的每个块的元数据相同。在这种情况下,写入元数据汇总表的元数据是针对单个块的元数据的一个实例,并且相同元数据针对整个缓存行应用指示。元数据的压缩形式是元数据的值和元数据值所应用的存储器位置的范围。标签控制器可选地在将压缩形式的元数据写入元数据汇总表之前使用716其内部缓存来积累压缩形式的元数据。元数据缓存和压缩操作用以减少对物理存储器中的元数据存储库的访问(读取和写入两者)。在各种示例中,存在元数据汇总表和元数据两者的缓存。发明人已经认识到,图7的操作710处的足够的位置检查提供有用的性能益处。现在给出MTE和CHERI的位置属性的示例。MTE和CHERI两者都有来自存储器系统的相同底层需求:他们存储通过缓存层级携带的带外数据。MTE使用每16字节4比特的粒度来存储元数据。CHERI使用每16字节1比特的粒度来指示数据是否是能力有效的。两种形式的元数据都具有有用的位置属性:
·MTE元数据针对分配中的每个粒度是相同的,并且因此大的分配具有相同的元数据值的连续运行。这对于整个页面将具有相同元数据值的大文件映射尤其如此。
·大多数程序包含大量连续的非指针数据,因此CHERI系统具有带有无效标记比特值的长期运行的数据。这些也可以覆盖整个页面。
图7示出了标签控制器的使用,标签控制器是计算设备的缓存层级的部分,标签控制器被布置为在缓存层级的至少部分的缓存行驱逐和/或缓存填充期间考虑元数据。
图7框700、702、704示出作为缓存行驱逐的部分,标签控制器如何被布置为通过检查以下一个或多个来确定是否针对缓存行将被驱逐到的物理存储器地址来配置元数据存储库:标签控制器的缓存、元数据汇总表。
图7菱形706负面结果示出标签控制器如何被布置为响应于发现未被配置的元数据存储库而丢弃正被驱逐的缓存行的元数据。
图7的菱形710示出其中标签控制器如何被布置为响应于发现元数据存储库被配置,检查被驱逐的缓存行的元数据是否具有足够的位置,并且响应于发现足够的位置,将被驱逐的缓存行的元数据写入元数据汇总表;以及响应于未找到足够的位置,将元数据写入物理存储器。
图8是根据本公开的实施例的由标签控制器执行的针对缓存填充的方法的流程图。被填充的缓存是将元数据和数据存储在一起的缓存。标签控制器接收800来自缓存层级中的较高级缓存的缓存填充请求。缓存填充请求包括期望从其中获取数据以填充缓存的物理存储器地址。标签控制器检查其自身的内部缓存(其中具有可用的内部缓存)以找出是否存在针对物理存储器地址配置了元数据存储库。如果结果不确定(即,在内部缓存中没有找到元数据),则标签控制器查询804元数据汇总表,并且可选地将结果缓存在其内部缓存中。因为元数据汇总表知道物理存储器以及是否针对物理存储器的单元来配置元数据。
在决策菱形806处,标签控制器处于确定是否已经针对物理存储器地址(使用在操作802和804处获取的信息)配置了元数据存储库的位置。如果否,则标签控制器从物理存储器获取808数据。标签控制器然后将与缓存中的数据相关联的元数据设置812为默认值。在缓存中,数据和元数据被一起存储。因为在这种情况下数据不具有相关联的元数据,所以标签控制器针对缓存中的每个组块的元数据区域使用默认值填充。标签控制器然后填充810缓存。如果缓存支持独立地跟踪数据和元数据的有效性,则标签控制器可以在数据和元数据可用时立即提供数据和元数据,而不是将他们组合到单个消息中。
在决策菱形806处,其中针对物理存储器地址确定元数据存储库被配置,标签控制器进行到决策菱形814。在决策菱形814处,标签控制器针对物理存储器地址检查元数据汇总表条目以查看元数据汇总表条目是否具有足够的信息。如果是,则元数据汇总表条目包含元数据。标签控制器继续从物理存储器地址获取816数据并且将元数据附加到数据。标签控制器然后用数据和附加的元数据填充818缓存。
在决策菱形814处,在元数据汇总表条目尚未包含元数据的情况下,元数据汇总表条目包括指向存储元数据的物理存储器中的位置的指针。标签控制器因此获取820存储元数据的物理存储器中的位置并且取回822元数据。标签控制器还从物理存储器取回824数据(当数据与元数据分开存储在物理存储器中时),将元数据附加到数据并且用数据和附加的元数据填充818缓存。
图8框800、802、804示出了作为缓存层级的缓存填充的部分,标签控制器如何被布置为通过检查以下一个或多个来确定是否针对数据从其写入到缓存层级的物理存储器地址来配置元数据存储库:标签控制器的缓存、元数据汇总表。
图8菱形806负面结果示出了标签控制器如何被布置为响应于发现元数据存储库未被配置,用数据和用元数据填充缓存层级的缓存,其中元数据被设置为默认值。
图8菱形814正面结果示出了标签控制器如何被布置为响应于发现元数据存储库被配置,检查元数据汇总表,并且响应于在元数据汇总表中相关元数据被发现,用数据和相关元数据填充缓存层级。
图8菱形814负面结果示出了标签控制器如何被布置为响应于发现元数据存储库被配置,检查元数据汇总表,并且响应于在元数据汇总表中相关元数据未被发现,从元数据汇总表获取相关元数据在物理存储器中的位置。
以上参考图7和图8描述的方法使得能够压缩相同元数据的长期运行,并且针对例如元数据跨整个页面统一的情况提供快速路径。在标签控制器内缓存这种元数据运行可以消除对物理存储器的许多读取;事实上,针对系统软件中保证统一的元数据的页面,可以完全忽略更细粒度的元数据存储库。使用CHERI,适时地压缩已归零元数据的运行,针对系统软件扫描存储器的能力是非常有用的:针对这种运行,不需要从存储器取回元数据能力数据。
在本文中描述的实施例实现动态分配的层级元数据存储库,这允许在逐个VM的基础上或逐个应用的基础上定制存储。
在本文中描述的一些实施例中,该计算设备具有针对元数据存储库的策略。在示例中,针对元数据存储库的策略由非虚拟化系统中的计算设备的操作系统内核、虚拟化系统中的管理程序以及管理程序结合具有模糊权限边界和常规虚拟化的系统中的特权微代码或固件来管理。在计算设备实现机密计算的实施例中,针对元数据存储库的机制在有特权固件或微代码中实现。在存在针对机密性或完整性而将管理程序从受信计算库移除的任何机密计算系统的情况下,特权固件或微代码被布置为防止系统中的任何实体检查或修改页面的元数据,其中其也可以不修改数据。在不支持机密计算的系统中,可以信任诸如操作系统(OS)或管理程序等其他系统软件来维持相同的保证。
在计算设备实现机密计算的实施例中,元数据汇总表由特权固件或微代码管理,并且其布局不需要在架构上暴露于特权固件或微代码的外部。存在从任何物理地址到元数据汇总表中的对应条目的琐碎的映射。在提供机密计算支持的系统中,MMU使用的元数据汇总表信息可以存储在与针对机密计算的反向映射或类似元数据相同的位置。以此方式,针对MMU不需要额外的存储器访问。
在缓存和存储器系统中存在一致性点,在该一致性点以下,元数据和数据被分开存储,并且在该一致性点以上,元数据和数据环绕被合并成单个缓存行。标签控制器负责在负载上组装数据和元数据,在驱逐时拆分他们,并且维护元数据值的缓存。
在本文中被描述的实施例给出了“您不用针对您不使用的东西付费”的益处。只有针对使用需要保留物理存储器的架构的VM才存在相当大的存储器分拆;分拆不大于被所要求的特定特征所需要的。
在本文中描述的实施例给出了益处是(微)架构在为了实现高性能而尽可能简单。
在使用机密计算的示例中,管理程序或微代码或固件被布置为确保元数据存储库不会从页面中移除,同时其仍可能在缓存中具有元数据。如果元数据页面被从物理存储器中移除,则对应数据页面也将被移除,因此缓存中的任何过期数据都可以安全丢弃。微代码或固件的责任是确保在向不受信任的管理程序返回元数据页面之前从缓存清除这种数据,正如在向不安全的存储器区域返回数据页面时其所做的一样。
在使用机密计算的示例中,如现在描述的,存在到特权固件或微代码的软件接口。软件接口包括跨权限边界操作的功能调用。
特权固件或微代码暴露管理元数据汇总表和其指向的元数据的少量功能。元数据汇总表可以被认为是硬件与固件之间的合同:其由标签控制器和MMU两者读取并且由固件维护。标签控制器还可以向元数据汇总表写入以将元数据存储库为层级标签存储设计中的最高级。在固件之上的系统软件具有与固件的一致接口,该接口不暴露元数据汇总表的实现细节。
每个元数据页面在逻辑上被视为元数据存储库阵列,每个数据页面一个元数据存储库。单个元数据页面中的元数据存储库的数目取决于所支持的特征。如果VM具有全局禁用的元数据使用特征,则MMU能够完全跳过对元数据存储库的检查。这意味着,当每个页面被分配给VM时,管理程序承诺提供元数据存储库,或者一旦VM将其映射为元数据页面,就怠惰地(lazily)动态分配页面的细粒度元数据存储库。
如果满足需要,管理程序仍可以过度供应存储器。例如,云提供商可以将分配给MTE启用的正常VM的存储器的3.125%添加到可针对其他VM的池中,并且在需要针对这些页面的元数据存储库时回收。在具有1TiB存储器的物理机器上,如果所有VM已经启用MTE但仅将其针对其页面的一半上使用,则会留下16GiB存储器可以临时被用于其他VM,只要其在捕获故障时可以被管理程序回收。
在各种实施例中,计算设备包括权限边界,并且在边界的更受信的一侧上执行的指令在跨权限边界上暴露多个功能,用于管理以下一个或多个:元数据汇总表和元数据汇总表指向的元数据。
在示例中,多个功能中的一个功能:将物理页面地址和元数据特征集作为参数,并且如果页面可以被用于元数据存储库,则返回真,否则返回假,其中页面是与存储器管理单元使用的存储器的单元相同或不同的存储器的单元;或者创建数据页面和元数据存储库槽之间的映射,使得满足主机架构的机密计算保证;或者将数据页面从相关联的元数据页面分离。
在示例中,多个功能中的一个功能处理页面从元数据存储库到数据储存使用的转换,以便页面在权限边界上转换时,页面不被用于元数据储存。
查询元数据大小
特定实施方案可能需要为不同的微架构特征保留不同量的存储,并且这可能多于架构状态的量。在示例中,数据中心中的一些VM使用MTE而一些VM使用CHERI。在这种情况下,具有查询固件或微代码以找出多少空间针对元数据存储库是必要的功能是有用的(因为这将根据使用的是MTE还是CHERI而改变)。在示例中,该功能将给定页面存储的元数据类型(例如,MTE或者CHERI)的指示作为参数。
创建元数据页面
在示例中,特权固件或微代码公开用于将页面从数据页面转移到元数据页面的功能。在机密计算的情况下,用于创建元数据页面的功能被布置为将数据页面保持在适当的特权级,以便机密计算不被破坏。该功能将物理页面地址作为参数,并且根据物理页面是否被成功转移到用于存储元数据的页面而返回真或假。
在某些物理存储器可以用以存储元数据之前,使用此功能将其从通常可用的物理存储器池中移动。
在机密计算的情况下,固件检查被作为参数到此功能的页面是由调用者的特权等级所拥有。
为页面分配元数据存储库
在示例中,特权固件或微代码公开用于为页面分配元数据存储库的功能。
将具有相关联元数据的每个数据页面具有与其相关联的元数据存储库槽。
元数据存储库槽是在用于存储元数据的页面内的物理存储器的单元。功能被用以创建该映射。在示例中,功能将数据页面的物理地址作为参数。另一参数是被分配以存储元数据的页面的物理地址。另一参数是元数据页面中可用槽的索引或地址。
该功能执行足够的检查,以便其实施主机架构的任何机密计算保证。如果针对页面成功地分配了元数据存储库,则该功能返回真。否则,功能返回假。如果元数据或数据页面不被调用者所拥有,如果元数据页面不是元数据页面,或者如果数据页面已经具有所分配的元数据,则功能将返回失败。
如果没有错误,则更新数据页面的元数据汇总表条目以指向给定元数据页面中的指定槽。与元数据页面相关联的元数据汇总表状态也被更新以存储至少足够的元数据,以防止元数据页面在仍然从数据页面参考时被释放。
从数据页面中移除元数据存储库
在示例中,特权固件或微代码公开用于从数据页面中移除元数据存储库的功能。
在可以回收元数据页面以供正常使用之前,使用从数据页面中移除元数据存储库的功能来分离用于存储元数据的数据页面。此功能的调用者从任何转换表中移除数据页面,并且使包含来自其的数据的缓存行无效。这确保了在标签控制器上方没有包含元数据的缓存行。
用于从数据页面中移除元数据存储库的功能将数据页面的物理地址作为参数,并且返回指示成功或失败的值。如果数据页面不是被调用者所拥有的,不是数据页面,或者是没有元数据被分配给其的数据页面,则功能将返回失败。
如果对功能的调用成功,则重置数据页面的元数据汇总表条目以指示没有元数据,并且与元数据页面相关联的任何簿记状态被更新以反映此参考已经消失的事实。固件使指代此数据页面的任何缓存行无效。
查询数据页面的元数据存储库
在示例中,特权固件或微代码公开了用于查询数据页面的元数据存储库的功能。
该功能将数据页面的物理地址作为参数,并且返回指示成功或失败的值。
如果该数据页面不是被该调用者所拥有的、不是数据页面、或者不具有与其相关联的元数据,则该功能将返回失败。
回收元数据页面
在示例中,特权固件或微代码公开了用于回收元数据页面的功能。
动态元数据存储库旨在允许系统软件在数据和元数据使用之间移动存储器,并且反之亦然。此功能处理页面从元数据存储库向数据存储使用的转换。
此功能将元数据页面的物理地址作为参数,并且如果该页面已经被移除则返回真,否则返回假。
此功能执行足够的检查,以便其实施主机架构的任何机密计算保证。
图9示出了示例性基于计算的设备900的各个组件,其被实现为任何形式的计算和/或电子设备,诸如移动电话、数据中心计算节点、台式个人计算机、可穿戴计算机,并且其中在一些示例中实现动态可分配的元数据存储库的实施例。
基于计算的设备900包括一个或多个处理器910,处理器910是微处理器、控制器或用于处理计算机可执行指令以控制设备的操作以便动态地分配元数据存储库的任何其他合适类型的处理器。处理器具有存储器管理单元914。在一些示例中,例如使用片上系统架构,处理器910包括以硬件(而不是软件或固件)实现图5到图8中任何方法的部分的一个或多个固定功能块(也称为加速器)。缓存层级916包括标签控制器(图9中未示出)。系统软件904被提供在基于计算的设备处以使得应用软件906能够在该设备上执行。
使用可以由基于计算的设备900访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质包括例如计算机存储介质和通信介质,该计算机存储介质诸如存储器902。诸如存储器902的计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。计算机存储介质包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CD-ROM)、数字通用盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或用以存储针对由计算设备访问的信息的任何其他非传输介质。相反,通信介质在诸如载波的调制数据信号或其他传输机制中实现计算机可读指令、数据结构、程序模块等。如本文中所定义的,计算机存储介质不包括通信介质。因此,计算机存储介质不应被解释为传播信号本身。尽管计算机存储介质(存储器902)被示出在基于计算的设备900内,但是应当理解,在一些示例中,存储是分布式的或远程定位的,并且经由网络或其他通信链路(例如,使用通信接口912)来访问。
术语“计算机”或“基于计算的设备”在本文中用以指代具有处理能力使得其执行指令的任何设备。本领域的技术人员将认识到,这种处理能力被结合到许多不同的设备中,因此术语“计算机”和“基于计算的设备”各自包括个人计算机(PC)、服务器、移动电话(包括智能手机)、平板计算机、机顶盒、媒体播放器、游戏控制台、个人数字助理、可穿戴计算机和许多其他设备。
在一些示例中,本文中描述的方法由有形存储介质上的机器可读形式的软件执行,例如以计算机程序的形式执行,该计算机程序包括计算机程序代码部件,该计算机程序代码部件被适配以当该程序在计算机上运行时执行本文中描述的方法中的一个或多个方法的所有操作,并且其中该计算机程序可以被体现在计算机可读介质上。该软件适合于在并行处理器或串行处理器上执行,使得方法操作可以按任何适合的顺序或同时进行。
本领域的技术人员将认识到,被利用以存储程序指令的存储设备可选地分布在网络上。例如,远程计算机能够存储被描述为软件的过程的示例。本地或终端计算机能够访问远程计算机并下载部分或全部的软件来运行程序。或者,本地计算机可以根据需要下载软件片段;或者在本地终端处执行一些软件指令,并且在远程计算机(或计算机网络)处执行一些软件指令。本领域的技术人员还将认识到,通过利用本领域的技术人员已知的常规技术,所有或部分软件指令可以由专用电路执行,例如,数字信号处理器(DSP)、可编程逻辑阵列等。
本文中给出的任何范围或设备值可以在不损失所寻求的效果的情况下被扩展或改变,如对技术人员将是清楚的。
尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但应当理解,所附权利要求书中定义的主题不必然限于上述特定特征或动作。相比之下,上述特定特征和动作被公开作为实施权利要求的示例形式。
将应当理解,以上描述的益处和优点可以涉及一个实施例或者可以涉及若干实施例。实施例不限于解决任何或者所有所述问题的那些实施例,或者具有任何或所有所述益处和优点的那些实施例。将进一步理解,提及“一”项是指那些项中的一项或多项。
本文中描述的方法的操作可以按任何适合的顺序执行,或者在适合的情况下同时进行。另外,在不脱离本文中描述的主题的范围的情况下,可以从任何方法中删除单独的框。上述任何示例的方面可以与描述的任何其他示例的方面组合,以形成进一步的示例而不损失所寻求的效果。
术语“包括”在本文中用以表示包括所标识的方法块或元素,但是这种块或元素不包括专有列表,并且方法或装置可以包含额外的块或元素。
术语“子集”在本文中用以指代真子集,使得集合的子集不包括该集合的所有元素(即该集合的至少一个元素从子集中缺失)。
应当理解,以上描述仅通过示例的方式给出,并且本领域技术人员可以进行各种修改。以上说明书、示例和数据提供了示例性实施例的结构和使用的完整描述。尽管以上已经描述了各种实施例的特异性的某种程度或参考一个或多个单独的实施例,但本领域技术人员可以对所公开的实施例做出许多改变而不脱离本说明书。

Claims (15)

1.一种计算设备,包括:
处理器,所述处理器具有存储器管理单元;以及
存储器,所述存储器存储指令,所述指令在由所述处理器执行时使所述存储器管理单元:
接收包括虚拟存储器地址的存储器访问指令;
将所述虚拟存储器地址转换为所述存储器的物理存储器地址,并且获取与所述物理存储器地址相关联的信息,所述信息是以下一个或多个:许可信息和存储器类型信息;
响应于所述信息指示元数据被允许与所述物理存储器地址相关联,检查被存储在所述物理存储器中的元数据汇总表,以检查元数据是否与所述物理存储器地址兼容;以及
响应于所述检查不成功,向所述计算设备的系统软件发送陷阱,以便允许用于存储与所述物理存储器地址相关联的元数据的物理存储器的动态分配。
2.根据权利要求1所述的计算设备,其中所述指令使所述存储器管理单元响应于指示元数据在所述物理存储器地址处不被允许的所述信息而继续进行转换操作;或者其中所述指令使所述存储器管理单元响应于检查所述元数据汇总成功而继续进行转换操作。
3.根据权利要求1所述的计算设备,其中所述存储器存储用于在所述处理器上执行的系统软件,所述系统软件包括用于以下的指令从所述存储器管理单元接收所述陷阱;
标识作为所述物理存储器地址的故障地址;
标识用于存储与所述物理存储器地址相关联的元数据的存储器位置;
使用微代码或固件以配置用于存储所述元数据的、所标识的所述存储器位置。
4.根据权利要求1所述的计算设备,包括标签控制器,所述标签控制器是所述计算设备的缓存层级的部分,所述标签控制器被布置为在所述缓存层级的至少部分的缓存行驱逐和/或缓存填充期间考虑元数据。
5.根据权利要求4所述的计算设备,其中所述标签控制器是以下任一项:所述计算设备的存储器控制器的部分,位于紧接所述缓存层级的最后一级缓存之前,其中所述最后一级缓存分别存储数据和元数据,在所述缓存层级的最后一级缓存与所述计算设备的存储器控制器之间。
6.根据权利要求4所述的计算设备,其中作为缓存行驱逐的部分,所述标签控制器被布置为通过检查以下一个或多个来确定元数据存储库是否针对所述缓存行要被驱逐到的物理存储器地址而被配置:所述标签控制器的缓存、所述元数据汇总表。
7.根据权利要求6所述的计算设备,其中所述标签控制器被布置为,响应于发现所述元数据存储库被配置,检查被驱逐的所述缓存行的元数据是否具有足够的位置,并且响应于发现足够的位置,将被驱逐的所述缓存行的所述元数据写入所述元数据汇总表;以及,响应于未找到足够的位置,将所述元数据写入所述物理存储器。
8.根据权利要求4所述的计算设备,其中作为所述缓存层级的缓存填充的部分,所述标签控制器被布置为通过检查以下一个或多个来确定元数据存储库是否针对数据要从其写入到所述缓存层级的物理存储器地址而被配置:所述标签控制器的缓存、所述元数据汇总表。
9.根据权利要求8所述的计算设备,其中所述标签控制器被布置为,响应于发现所述元数据存储库未被配置,利用所述数据和利用元数据来填充所述缓存层级的所述缓存,其中所述元数据被设置为默认值。
10.根据权利要求8所述的计算设备,其中所述标签控制器被布置为,响应于发现所述元数据存储库被配置,检查所述元数据汇总表,并且响应于相关元数据在所述元数据汇总表中被发现,利用所述数据和所述相关元数据来填充所述缓存层级。
11.根据权利要求8所述的计算设备,其中所述标签控制器被布置为,响应于发现所述元数据存储库被配置,检查所述元数据汇总表,并且响应于相关元数据在所述元数据汇总表中未被发现,从所述元数据汇总表获取所述相关元数据在物理存储器中的位置。
12.根据权利要求1所述的计算设备,包括权限边界,并且其中在所述边界的更受信的侧上执行的指令跨所述权限边界暴露多个功能,以用于管理以下一个或多个:所述元数据汇总表和所述元数据汇总表指向的元数据。
13.根据权利要求12所述的计算设备,其中所述多个功能中的一个功能:将物理页面地址和元数据特征集作为参数,并且如果所述页面能够被用于元数据存储库,则返回真,否则返回假,其中页面是与由所述存储器管理单元使用的存储器单元相同或不同的存储器单元;或者
创建数据页面和元数据存储库槽之间的映射,使得主机架构的机密计算保证被满足;或者
将数据页面从相关联的元数据页面分离。
14.根据权利要求12所述的计算设备,其中所述多个功能中的一个功能处理页面从元数据存储库到数据存储库使用的转换,使得当页面在权限边界上被转换时,所述页面不被用于元数据存储库。
15.一种方法,包括:
使用处理器的存储器管理单元以
接收包括虚拟存储器地址的存储器访问指令;
将所述虚拟存储器地址转换为所述存储器的物理存储器地址,以及获取与所述物理存储器地址相关联的许可信息;
响应于所述许可信息指示元数据被允许与所述物理存储器地址相关联,检查被存储在所述物理存储器中的元数据汇总表以检查元数据是否与所述物理存储器地址兼容;以及
响应于所述检查不成功,向所述计算设备的系统软件发送陷阱,以便触发用于存储与所述物理存储器地址相关联的元数据的物理存储器的动态分配。
CN202280051243.0A 2021-07-26 2022-06-02 动态可分配物理寻址元数据存储库 Pending CN117769700A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/385,765 2021-07-26
US17/385,765 US20230029331A1 (en) 2021-07-26 2021-07-26 Dynamically allocatable physically addressed metadata storage
PCT/US2022/031865 WO2023009210A1 (en) 2021-07-26 2022-06-02 Dynamically allocatable physically addressed metadata storage

Publications (1)

Publication Number Publication Date
CN117769700A true CN117769700A (zh) 2024-03-26

Family

ID=82358446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280051243.0A Pending CN117769700A (zh) 2021-07-26 2022-06-02 动态可分配物理寻址元数据存储库

Country Status (6)

Country Link
US (1) US20230029331A1 (zh)
EP (1) EP4377805A1 (zh)
JP (1) JP2024527054A (zh)
KR (1) KR20240032880A (zh)
CN (1) CN117769700A (zh)
WO (1) WO2023009210A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230244461A1 (en) * 2022-02-02 2023-08-03 SambaNova Systems, Inc. Configurable Access to a Reconfigurable Processor by a Virtual Function
US20240086391A1 (en) * 2022-09-08 2024-03-14 Vmware, Inc. Inspection and repair of object metadata in virtual storage area networks

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364910B2 (en) * 2007-03-08 2013-01-29 Daniel Shawcross Wilkerson Hard object: hardware protection for software objects
US20080320282A1 (en) * 2007-06-22 2008-12-25 Morris Robert P Method And Systems For Providing Transaction Support For Executable Program Components
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8806101B2 (en) * 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US10102117B2 (en) * 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9727256B1 (en) * 2014-12-30 2017-08-08 EMC IP Holding Company LLC Virtual memory management techniques
US11082231B2 (en) * 2017-12-29 2021-08-03 Intel Corporation Indirection directories for cryptographic memory protection
US11003584B2 (en) * 2019-02-28 2021-05-11 Intel Corporation Technology for managing memory tags
US11580234B2 (en) * 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11650742B2 (en) * 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table
WO2021092138A1 (en) * 2019-11-06 2021-05-14 Dover Microsystems, Inc. Systems and methods for improving efficiency of metadata processing
US11392503B2 (en) * 2019-12-27 2022-07-19 Intel Corporation Memory tagging apparatus and method
US11656998B2 (en) * 2019-12-28 2023-05-23 Intel Corporation Memory tagging metadata manipulation
US11650932B2 (en) * 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
US11625337B2 (en) * 2020-12-26 2023-04-11 Intel Corporation Encoded pointer based data encryption

Also Published As

Publication number Publication date
EP4377805A1 (en) 2024-06-05
JP2024527054A (ja) 2024-07-19
WO2023009210A1 (en) 2023-02-02
US20230029331A1 (en) 2023-01-26
KR20240032880A (ko) 2024-03-12

Similar Documents

Publication Publication Date Title
EP3884392B1 (en) Faster access of virtual machine memory backed by a host computing device's virtual memory
US11669355B2 (en) Dynamic information virtualization
US11620060B2 (en) Unified hardware and software two-level memory
US7620766B1 (en) Transparent sharing of memory pages using content comparison
US10552337B2 (en) Memory management and device
US10496547B1 (en) External disk cache for guest operating system in a virtualized environment
US9430402B2 (en) System and method for providing stealth memory
US7472249B2 (en) Kernel memory free algorithm
US11593186B2 (en) Multi-level caching to deploy local volatile memory, local persistent memory, and remote persistent memory
US20160299712A1 (en) Virtual Machines Backed by Host Virtual Memory
CN117769700A (zh) 动态可分配物理寻址元数据存储库
CN116302491A (zh) 内存管理方法、装置、计算机设备及存储介质
CN116680233A (zh) 一种文件访问方法、系统、电子设备及机器可读存储介质
US11403213B2 (en) Reducing fragmentation of computer memory
US8375194B2 (en) System and method for freeing memory
WO2019245445A1 (en) Memory allocation in a hierarchical memory system
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US11972034B1 (en) Hardware-assisted obscuring of cache access patterns
RU2780969C1 (ru) Более быстрый доступ запоминающего устройства виртуальной машины, резервируемого виртуальным запоминающим устройством вычислительного хост-устройства
US11620238B1 (en) Hardware blinding of memory access with epoch transitions
Alverti Hardware and Software Co-design for Efficient Memory Access

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