CN110799953A - 用于转换缓存查找的领域标识符比较 - Google Patents

用于转换缓存查找的领域标识符比较 Download PDF

Info

Publication number
CN110799953A
CN110799953A CN201880041379.7A CN201880041379A CN110799953A CN 110799953 A CN110799953 A CN 110799953A CN 201880041379 A CN201880041379 A CN 201880041379A CN 110799953 A CN110799953 A CN 110799953A
Authority
CN
China
Prior art keywords
domain
realm
translation
memory
memory region
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.)
Granted
Application number
CN201880041379.7A
Other languages
English (en)
Other versions
CN110799953B (zh
Inventor
马修·卢西恩·埃文斯
詹森·帕克
加雷斯·里斯·斯托克韦尔
马丁·魏德曼
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.)
ARM Ltd
Original Assignee
ARM Ltd
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 ARM Ltd filed Critical ARM Ltd
Publication of CN110799953A publication Critical patent/CN110799953A/zh
Application granted granted Critical
Publication of CN110799953B publication Critical patent/CN110799953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] 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/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

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)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种设备具有转换缓存100,其包括用于指定地址转换数据的多个条目。每个条目260还指定与地址转换数据相关联的转换情境标识符254和标识多个领域之一的领域标识符270。每个领域对应于由处理电路8执行的至少一个软件过程的至少一部分。响应于存储器存取,触发对转换缓存100的查找。当查找在缓存100中未命中时,在当前领域被针对目标存储器区域指定的拥有者领域从存取目标存储器区域中排除时,控制电路280防止地址转换数据到缓存的分配。在查找中,给定条目260是否与存储器存取相匹配取决于转换情境标识符比较和领域标识符比较二者。

Description

用于转换缓存查找的领域标识符比较
技术领域
本技术涉及数据处理的领域。
背景技术
已知提供用于实施对特定存储器区域的存取权限的存储器存取控制技术。通常,这些技术基于特权级,使得以较高特权级执行的过程可以排除特权级较低的过程对存储器区域进行存取。
发明内容
至少一些示例提供一种设备,包括:
转换缓存,包括多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;以及
控制电路,响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对转换缓存的查找;
其中,当查找在转换缓存中未命中时,控制电路被配置为:在多个领域中针对目标存储器区域而指定的拥有者领域排除当前领域存取目标存储器区域时,防止响应于存储器存取而向转换缓存分配地址转换数据;并且
在查找中,控制电路被配置为:根据给定条目所指定的转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及给定条目所指定的领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与转换缓存的给定条目相匹配。
至少一些示例提供一种设备,包括:
缓存装置,用于缓存多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;以及
控制装置,用于控制对存储器的存取,其中,所述控制装置响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对转换缓存的查找;
其中,当查找在转换缓存中未命中时,控制装置被配置为:在多个领域中针对目标存储器区域而指定的拥有者领域排除当前领域存取目标存储器区域时,防止响应于存储器存取而向转换缓存分配地址转换数据;并且
在查找中,控制装置被配置为:根据给定条目所指定的转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及给定条目所指定的领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与转换缓存的给定条目相匹配。
至少一些示例提供了一种方法,包括:
在转换缓存中存储多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;
响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对转换缓存的查找;
当查找在转换缓存中未命中时,在多个领域中针对目标存储器区域而指定的拥有者领域排除当前领域存取目标存储器区域时,防止响应于存储器存取而向转换缓存分配地址转换数据;以及
其中,该查找包括:根据给定条目所指定的转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及给定条目所指定的领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与转换缓存的给定条目相匹配。
至少一些示例提供了一种用于控制主机数据处理设备以提供指令执行环境的计算机程序,该计算机程序包括:
转换缓存,包括多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与指令执行环境中的至少一个软件过程的至少一部分相对应;以及
控制程序逻辑,响应于从指令执行环境中的当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对转换缓存的查找;
其中,当查找在转换缓存中未命中时,控制程序逻辑被配置为:在多个领域中针对目标存储器区域而指定的拥有者领域排除当前领域存取目标存储器区域时,防止响应于存储器存取而向转换缓存分配地址转换数据;并且
在查找中,控制程序逻辑被配置为:根据给定条目所指定的转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及给定条目所指定的领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与转换缓存的给定条目相匹配。
计算机程序可存储在存储介质上。存储介质可为非暂态存储介质。
附图说明
本技术的进一步的方面、特征及优点将从结合附图阅读的以下实例描述而显而易见,在附图中:
图1示意性地示出了数据处理系统,该数据处理系统包括多个处理组件,这些多个处理组件利用存储在第一存储器及第二存储器内的存储器区域;
图2示意性地示出了所执行的多个过程之间的关系、与这些过程相关联的特权级,以及与用于控制哪一过程拥有给定存储器区域并因此具有排他权限来控制对该给定存储器区域的存取的这些过程相关联的领域;
图3示意性地示出了在由领域管理单元及存储器管理单元管理下的存储器区域;
图4示意性地示出了被执行来将给定存储器区域从第一存储器输出至第二存储器的程序指令序列;
图5为示意性地示出页输出的流程图;
图6示意性地示出了多个领域以及它们在用以控制哪些输出命令可中断哪些其他输出命令的控制层级内的关系;
图7为示意性地示出页输入的流程图;
图8示意性地示出了针对给定存储器区域执行重迭输出操作的第一输出命令源及第二输出命令源;
图9示出了处理组件及存储在存储器中的领域管理控制数据的更详细实例;
图10示出了其中上代(parent)领域可定义描述各种子代(child)领域的性质的领域描述符的领域层级的实例;
图11和图12示出了领域层级的两个不同实例;
图13示出了上代领域维持以记录其子代领域的领域描述符的领域描述符树的实例;
图14示出了从多个可变长度位部分构造的局部领域标识符的实例,该多个可变长度位部分各自提供对领域描述符树的对应级的索引;
图15示出了用于领域层级中的每一领域的局部及全局领域标识符的实例;
图16示出了领域描述符的内容的实例;
图17为示出不同领域生命周期状态的表;
图18为指示领域的生命周期状态的变化的状态机图表;
图19为示出用于给定存储器区域的所有权表中的条目的内容的表;
图20为示出可见性属性的表,这些可见性属性可针对给定存储器区域来设置以控制除拥有者之外的哪些领域被允许存取区域;
图21示出了用于存储器区域的不同生命周期状态的实例,这些不同生命周期状态包括对应于RMU-私有存储器区域的状态,这些RMU-私有存储器区域被保留来用于由领域管理单元互斥存取;
图22为示出用于给定存储器区域的生命周期状态的转换的状态机;
图23示出了给定存储器区域的所有权可如何在上代领域及其子代领域之间传递;
图24示意性地示出了基于页表提供的存储器访问控制,这些页表定义存储器控制属性,这些存储器控制属性取决于特权级及领域管理单元级,这些领域管理单元级基于由拥有者领域设置的许可来提供对存储器存取的控制的正交级;
图25示出了转换后备缓冲器的实例;
图26为示出基于页表及RMU表来控制对存储器的存取的方法的流程图;
图27示出了在不同异常级处执行的过程可访问的状态;
图28为示出进入领域或从异常返回的方法的流程图;
图29为示出退出领域或采取异常的方法的流程图;
图30示出了进入子代领域及退回上代领域的实例;
图31示出了嵌套(nested)领域退出及嵌套领域进入的实例;
图32示出了在从领域退出时使用领域执行情境的迟缓保存的实例;
图33示出了对清空(flush)命令的使用的实例,该清空命令确保与先前退出的子代领域相关联的状态的子集在进入不同子代领域之前被保存至存储器;
图34示出了对子领域的使用,这些子领域对应于与子领域的上代领域相关联的过程内的特定地址范围;以及
图35示出了可使用的仿真器实例。
具体实施方式
图1示意性地示出了数据处理系统2,该数据处理系统包括片上系统集成电路4,该片上系统集成电路连接至分离非易失性存储器6,诸如用作大容量存储装置的芯片外闪存。片上系统集成电路4包括呈(在此示例性实施例中)两个通用处理器(CPU)8、10,及图形处理单元(GPU)12的形式的多个处理组件。将了解,在实践中,可提供许多不同形式的处理组件,例如,额外的通用处理器、图形处理单元、直接存储器访问(DMA)单元、共处理器、以及用来存取存储器地址空间内的存储器区域并对存储在这些存储器区域内的数据进行数据处理操作的其他处理组件。
通用处理器8、10及图形处理单元12耦接至互连电路14,这些通用处理器及该图形处理单元经由该互连电路与芯片上存储器16及外部存储器6(经由外部存储器接口18)进行存储器事务。尽管存储器16在图1中为在芯片上,但在其他实施例中,存储器16可代替地被实施为芯片外存储器。芯片上存储器16存储对应于整体存储器地址空间内的多个存储器区域的数据。这些存储器区域对应于存储器页并经受管理操作,这些管理操作控制哪些存储器区域(页)在给定时间处存在于芯片上存储器16内,这些过程可以存取存储在这些存储器区域内的数据及与这些存储器区域相关的其他参数。更具体地,在此示例性实施例中,处理组件8、10、12中每一者包括领域管理单元20、22、24及通用存储器管理单元26、28、30。通用存储器管理单元26、28、30用来控制存储器区域的操作的方面,例如,地址映射(例如虚拟地址与中间实体地址,或实体地址之间的映射)、对能够存取给定存储器区域的过程的特权级约束、给定存储器区域内的数据的存储特性(例如可缓存性、装置存储器状态等)、及存储器的区域的其他特性。
领域管理单元20、22、24管理用来实施对多个存储器区域的所有权权限的数据,藉此给定存储器区域具有从多个过程中规定的给定拥有过程(或拥有者“领域”)(过程或领域为例如监视器程序、管理器程序、访客操作系统程序、应用程序等中一者,或此程序的特定子部分)。用于给定存储器区域的给定拥有过程(拥有者领域)具有排他权限以控制对存储在该给定存储器区域内的给定拥有数据的存取。具体地,拥有者过程具有防止由在相较于拥有者过程的较大特权级处执行的过程对该拥有者过程的所拥有的存储器区域的存取的权限。
因此,多个存储器区域在多个拥有者领域之间被划分。每一领域对应于至少一个软件过程的至少一部分,且被分配多个存储器区域的所有权。拥有过程/领域具有排他权限以控制对存储在它们的领域的存储器区域内的数据的存取。对哪些存储器区域被存储器映射至每一领域的管理及控制由除拥有者领域自身之外的过程执行。使用此布置,诸如管理器之类的过程可以控制哪些存储器区域(存储器的页)被包含在由相应访客虚拟(访客操作系统)拥有的领域内,这些相应访客虚拟机由该管理器管理,然而管理器自身可不具有实际上存取存储在该管理器已分配给给定领域的存储器区域内的数据的权限。因而,例如,访客操作系统可以保持存储在该访客操作系统的领域内的数据(即存储在由该访客操作系统拥有的存储器区域内的数据)相对于其管理管理器私有。
存储器地址空间到领域的划分以及对这些领域的所有权的控制由与处理组件8、10、12中每一者相关联的领域管理单元20、22、24管理,并且是与由通用存储器管理单元26、28、30提供的更传统控制形式正交的控制过程。领域管理单元20、22、24因此提供存储器存取电路以实施对存储器地址空间的存储器区域的所有权权限。在一些情况下,实施领域所有权权限的存储器存取电路还可包括MMU 26、28、30的部分(例如MMU 26、28、30中的TLB可包括用于基于由RMU 20、22、24提供的领域控制来控制存取的一些控制数据,以避免需要存取两个分离结构)。在此示例性实施例中,处理组件8、10、12中每一者包含其拥有领域管理单元20、22、24;着对于性能目的为有利的。然而,更一般而言,实施所有权权限的存储器存取电路可包括领域管理单元的单个实例、存在的所有领域管理单元20、22、24的组合,或存在的这些领域管理单元20、22、24的子集。因而,用于实施所有权权限的存储器存取电路可以跨与不同处理组件8、10、12相关联的片上系统集成电路4分散,或在一个位置中或在一些其他配置中收集在一起。
包括通用处理器8、10的处理组件被示出为包括相应的解码及执行电路32、34,这些相应的解码及执行电路解码且执行程序指令。这些程序指令包括用来控制存储器地址空间的不同所有权领域内的存储器区域的管理的命令(领域管理命令或RMU命令)。作为实例,所执行的程序指令可包括指定为领域管理单元命令的程序指令,且当在程序指令流内遭遇这些程序指令时,这些程序指令被引导至相关联的领域管理单元20、22、24,以便这些程序指令可由相关联的领域管理单元20、22、24执行(做动作)。领域管理单元命令的实例包括用来初始化新领域或使现有领域无效的命令、用来将存储器区域分配给特定领域、从特定领域移除存储器区域、在对输出数据进行加密及其他过程使得该输出数据在第二存储器6内受保护的情况下将被包含在存储器区域内的数据自第一存储器16输出至第二存储器6的命令。进一步的领域管理单元命令被提供以在对输入数据进行相关解密及确认操作的情况下将数据从第二存储器6输入回第一存储器16。
在数据从存储器区域的此类输出及输入的情境下,将了解,诸如芯片上存储器16之类的第一存储器由片上系统集成电路4内的领域管理单元20、22、24密切地管理,且因此这些领域管理单元20、22、24能够实施所有权权限且将对给定存储器区域内的数据的存取限制于拥有该存储器区域的过程,或拥有过程已授予存取的那些过程。然而,当该存储器区域内的数据被输出至例如作为第二存储器的外部非易失性存储器6时,由领域管理单元20、22、24提供的对存取的控制不再有效且因此数据以一些其他方式需要保护。这通过在数据被输出之前对存储器区域内的数据进行加密,且随后在该数据被输入回芯片上存储器16时用私钥进行解密来实现。
输出过程可伴随有规定输出数据的特性的元数据的产生。此元数据可单独地存储在第一存储器(芯片上存储器16)的元数据存储器区域内,其中该元数据对于领域管理单元20、22、24保持私有(即仅对此类领域管理单元20、22、24可存取且现有过程中的任何过程不可存取),使得当数据被输入回芯片上存储器16时,可针对该输入数据读取元数据且可检查在元数据中表示的数据的特性和输入数据的特性以确保该输入数据的完整性(例如校验和、数据大小、签名等)。可能是领域管理单元20、22、24的私有数据(包括表征输出区域/页的以上元数据)需要从芯片上存储器16输出至芯片外非易失性存储器6(例如以在芯片上存储器16内腾出空间)的情况,且在此情况下,RMU-私有元数据自身可经加密以用于该RMU-私有元数据的保护并且表征输出元数据的新元数据可保持在芯片上存储器16内(此保持的元数据在大小上显著地小于输出元数据),以便在加密及输出元数据被输入回芯片上存储器16以用于使用时,可检查并确认该加密及输出元数据。
描述存储器区域的特性的此元数据及存储在存储器区域内的数据可被布置为层级式结构的部分,该层级式结构例如具有分枝模式的元数据存储器区域树。此元数据存储器区域树的形式可在软件控制下确定,因为存储器地址空间的不同区域被注册为用作由领域管理单元20、22、24拥有的元数据区域。将了解,虽然控制此类存储器区域的注册的软件能够分配、解除分配且控制用来存储元数据的存储器区域之间的关系,但此软件自身在能够控制哪些过程可以存取此数据的意义上并不拥有被包含在这些存储器区域内的数据。在对于领域管理单元20、22、24(即存储器管理电路)私有的存储器区域的情况下,此类存取权限可仅限制于领域管理单元20、22、24自身且此RMU-私有数据将不与任何其他过程共享。
当存储在给定存储器区域内的给定数据被输出时,随后使所考虑的存储器区域无效,使得内容为不可存取的。为重新使用此页,通过使用清洁(Clean)命令来使该页“有效”,该清洁命令以与先前内容不相关的其他数据覆写存储器区域,以便在该给定存储器区域被释放以用于由另一过程使用时,未使此先前内容为另一过程可存取的。例如,给定存储器区域的内容可被全部写为零值,或写为固定值,或写为随机值,以此覆写存储器区域的原始内容。在其他实例中,输出存储器区域的内容的覆写可由输出命令自身而非后续清洁命令触发。总之,在使给定存储器区域为除给定拥有过程之外的过程可存取的之前,被输出的给定所拥有数据可以被与给定所拥有数据不相关的值覆写。当由给定过程拥有的给定存储器区域将被输出时,作为输出过程的一部分,正执行领域命令以执行输出的领域管理单元20、22、24从给定过程取得所考虑的存储器区域的所有权(即使区域为RMU-私有),相对于所有其他过程(及其他领域管理单元)锁定该存储器区域的存取,执行输出操作(包括加密、元数据产生及覆写),且随后解锁对该存储器区域的存取并且释放该存储器区域的所有权。因而,处于被输出,被输入的过程中的存储器区域在该命令正在执行时可对于所考虑的领域管理单元保持私有。
图2示意性地示出了多个过程(程序/线程)、多个异常级(特权级)、安全及非安全处理器域、及表示给定存储器区域的所有权的多个领域之间的关系。如所示出的,特权级的层级从异常级EL0延伸至异常级EL3(其中异常级EL3具有最高特权级)。系统的操作状态可在安全操作状态与非安全操作状态之间加以划分,该安全操作状态及该非安全操作状态如由使用架构的例如处理器中的安全域及非安全域所表示,该架构由 Limited(Cambridge,UK)提供。
如图2所示,存储器存取电路(领域管理单元20、22、24及相关联的控制软件(例如运行一个领域管理单元的毫码))管理执行环境内的多个领域。给定存储器区域(存储器页)由特定领域拥有。领域可具有该领域内之子代领域,及这些子代领域内的孙代(grandchild)领域(例如参见领域A(上代)、领域B(子代)、及领域C(孙代))。所有权被给予领域A的存储器区域可使这些存储器区域的所有权继而在由领域A拥有的过程的控制下从领域A传递至领域B。因而,上代领域能够将区域的所有权给予该上代领域的自有子代领域。这些子代领域继而可传递它们从其上代领域接收的存储器区域的所有权,以随后由这些子代领域的自有子代领域(例如领域C)拥有,这些自有子代领域为原始领域(即领域A)的孙代领域。给定领域内的过程可在相同特权级处或在不同特权级处执行。过程所属的领域因此为相对于过程的特权级的正交参数,但在许多实际状况下领域及特权级可对应,因为用于在领域之间移动的便利机构可涉及对自身在不同特权级(异常级)之间移动系统的异常的使用。
图2中所示的领域之间的关系示出了不同领域之间的子代/上代关系,且当用于存储器区域管理的多个不同命令源彼此竞争时,此可用来产生用于控制系统的操作的控制层级。因而,例如,在如以上所讨论的用于输出存储器区域的输出命令的情况下,第一输出命令可由给定领域管理单元(存储器存取电路)从第一输出命令源接收,该第一输出命令源例如领域B内侧操作系统核心36。第二输出命令然后可由给定领域管理单元从第二命令源接收,该第二命令源例如在领域A中执行的管理器程序38。在此实例中,作为第二输出命令源的管理器程序38在由上代领域与子代领域之间的关系建立的控制层级内具有较高优先级,使得由管理器程序38发布的第二输出命令中断由操作系统核心36发布的第一输出命令的处理。当如由管理器38发布的第二输出命令已完成时,如由操作系统核心36发布的第一输出命令可恢复。
在此实例中,第二输出命令具有较高优先级且因此中断第一输出命令的操作。然而,若第二输出命令已例如起源于领域C内的应用程序40,则这在由领域之间的关系建立的控制层级内具有较低优先级位置,且因此来自应用程序40的第二输出命令将不中断来自操作系统核心36的第一输出命令的操作,并且其自身将被阻止执行,直至第一输出命令已完成。因而,分页操作(输出及输入操作)可在这些分页操作依赖于控制层级而可以或可不中断彼此的意义上彼此被保护,该控制层级可与领域层级相关联。在其他示例性实施例中,控制层级可对应于特权级。
图3示意性地示出了领域管理单元20及通用存储器管理单元26,该领域管理单元及该通用存储器管理单元分别对存储在芯片上存储器16内的多个存储器页(存储器区域)执行不同的管理操作。如所示出的,领域管理单元24使用多个领域描述符42,其中每一描述符规定领域的性质。领域管理单元24还可维持领域区组表(或所有权表),该领域区组表包括由实体地址索引的条目,每个条目包括用于对应存储器区域的信息,包括对以下的指示:该存储器区域属哪个领域,即哪个领域具有排他权限以控制对该存储器区域内的控制数据的存取,即使该领域并不控制该领域自身实际上是否拥有该存储器区域。领域描述符及领域区组表条目可存储在存储器16中,但还可缓存在RMU自身中。因而,如图3所示,不同的存储器区域具有如由领域指定RA、RB、RC、RD及RE指示的不同的拥有领域。存储器区域中的一些还有由领域管理单元20拥有(对于该领域管理单元为私有的)且被标记为RMU-私有。此类RMU-私有区域可用来存储描述其他存储器区域的特性的元数据,暂时地存储正被输出或输入的存储器区域,或用于领域管理单元20自身的其他目的。RMU-私有区域仍可由对应拥有者领域拥有,但可以对于由拥有者领域发布的通用读取/写入存取不可存取(替代地可需要发布至RMU 20的RMU命令触发RMU 20以对RMU-私有区域做出任何变化)。
存储器区域的寻址可通过虚拟地址、中间实体地址、或实体地址,取决于所考虑的特定系统。领域管理单元20,及通用存储器管理单元26,因此可存储转换数据,该转换数据使所接收的地址(无论这些所接收的地址为虚拟存储器地址还是中间存储器地址)能够被转换为更直接地表示所考虑的芯片上存储器16内的存储器区域的地址,诸如实体地址。此地址转换数据可使用转换后备缓冲器及其他分布式控制机构来管理并分散在片上系统集成电路4内。
图4示意性地示出了与存储器区域的输出操作相关联的程序指令。这些程序指令出现在程序指令流内且可由整体电路内的不同组件执行(做动作)。例如,领域管理单元命令由相应的领域管理单元12、22、24执行。指令(例如,虚拟地址解映射指令(VUMAP))及转换后备缓冲器无效指令(TLBI)在片上系统集成电路4内广播,并用来清除对如由这些命令作为整体从系统内的位置规定的转换数据的使用(但在一些实例中,专用虚拟地址解映射指令可未被提供,并且替代地虚拟地址的解映射可通过修改转换表条目而非使用特殊解映射指令来进行,该修改通过执行对存储器的存储来执行)。屏障指令DSB插入图4中所例示之指令序列内且用来暂停该序列之处理,直至已接收到先前虚拟地址解映射指令(或等效存储指令)和转换后备缓冲器无效指令已由系统的所有部分完成的确认为止。因而,对除在领域管理系统自身中之外的系统内的给定存储器区域的虚拟地址转换的清除可通过虚拟地址解映射指令(或等效存储指令)、转换后备缓冲器无效指令及对应屏障指令的序列来实现。通过解映射(及因而有效地移除)用于给定存储器区域(页)的虚拟地址转换数据,可确保当存储在该存储器区域中的数据的输出操作将被执行时,此存储器区域将在系统内的其他地方未处于使用中。
一旦屏障指令DSB已接收确认来自系统内的虚拟地址转换数据的清除已完成的确认,则用于领域管理单元的输出命令由领域管理单元执行。由领域管理单元执行从给定过程接收的这种输出指令触发命令序列(对应于嵌入领域管理单元内的毫码)的性能,该命令序列包括关于规定的给定存储器区域的多个命令动作。这些命令目标可包括例如如图4中例示的以下步骤:收集地址转换数据、锁定存储器区域、加密数据、将数据存储在外部、写入与存储器区域相关的元数据、以及随后解锁存储器区域。
作为命令序列的一部分由领域管理单元执行的地址转换收集步骤将完成所考虑的存取操作所需要的访问控制数据收集至该领域管理单元。此确保一旦输出操作在进行中,则该输出操作被暂停的可能性降低,例如,可能由于参数或完成该输出操作所需要的数据之非可用性,该数据例如地址转换数据、属性数据或由输出过程需要的其他数据。作为将访问控制数据提取和存储在存储器存取电路内的实例,地址转换步骤用来提取完成输出操作可能需要的所有需要的地址转换数据(例如虚拟对中间实体地址(或实体地址)映射数据)。
一旦地址转换数据已被提取,则领域管理单元用来将与所考虑的区域相关的锁定标志设置为锁定状态。此锁定标志可存储在用于所考虑区域的区域属性数据42内。替代地,锁定标志可存储在对于正执行输出操作的领域管理单元私有的存储器区域内,使得该锁定标志不可由任何其他过程或领域管理单元覆写。为将锁定标志设置为锁定状态,领域管理单元必须确定无其他领域管理单元当前正将所考虑的存储器区域保持在锁定状态自身中。因而,执行对存储在其他地方的任何区域控制数据的锁定标志值的轮询,并且若返回指示区域并未在其他地方锁定的结果,则将锁定标志设置为锁定状态。若区域在其他地方锁定,则输出操作失败且向引导该输出操作的过程报告错误。一旦锁定已经获得,则给定存储器区域内的数据被加密且存储在片上系统集成电路外部,诸如存储至外部非易失性存储器6。如先前所讨论,表征加密数据(或加密之前的给定数据)的元数据随后被产生且存储在领域管理单元私有区域内,使得该元数据可在稍后时间用来确认输出数据。最后,所考虑的存储器区域由执行输出命令的领域管理单元通过将锁定标志从锁定状态切换至解锁状态来解锁。对由存储器存取电路(领域管理单元)硬件机构实施的锁定的使用用来阻止可能在锁定标志处于锁定状态时接收的来自进一步处理组件的任何其他(第二)存取命令的进展。
图5为示意性地示出页(存储器区域)输出的流程图。在步骤44处,程序指令被执行(VUMAP、TLBI、DSB),这些程序指令用来清除对系统中的除区域管理单元20、22、24之外的其他地方的页的使用。这可通过使指向将被输出的区域的转换数据无效及清除该转换数据来实现。一旦此转换数据被清除,则另一过程或处理组件希望存取该区域,随后该另一过程或处理组件将试图重取转换数据。在试图重取转换数据时,尝试重新使用区域的过程或处理组件将未能获得相关的转换数据,因为所考虑的区域将已经放置在RMU私有状态中,在该RMU私有状态中,仅尝试执行页输出的区域管理单元20、22、24具有存取该数据的权限。
当已在步骤44处发布清除请求时,处理在步骤46处等待,直至从这些清除请求接收到指示已在其他地方(除领域管理单元之外)使地址数据无效的响应为止,在该点处,继续越过程序序列内的屏障指令DSB为安全的(屏障指令DSB暂停处理组件8、10、12,直至响应已经接收为止)。在步骤48处,执行领域管理单元输出初始化指令。此输出初始化指令包括指向被建立为RMU私有的存储器区域的指针,其中命令情境缓冲器(CCB)被建立以存储情境数据,该情境数据表示命令序列的当前部分完成状态,该命令序列对应于该命令序列应被中断的输出操作。在替代的示例性实施例中,领域管理单元自身可负责生成指向命令情境缓冲器(CCB)的指针。步骤50确定由输出命令步骤48内的指针指示的命令情境缓冲器是否为空。若命令情境缓冲器为空,则步骤52将此设置为RMU-私有区域。若步骤50处之命令情境缓冲器不为空,则此指示在步骤48处执行的输出初始化命令正试图重新开始先前中断的输出操作。在这种情况下,处理前进至步骤54,在该步骤处,使用在该部分完成的状态数据被存储至CCB时所存储的相关元数据来验证由指针指向的命令情境缓冲器的内容。若通过验证,则步骤56用来使用命令情境缓冲器的内容来恢复输出命令的部分完成的状态,例如任何部分加密的数据、指向加密已进展到的原始数据内的位置的指针、部分完成的命令的进一步属性等。在由步骤48处的命令指示的输出操作的初始化之后,处理经由包括步骤52的路径或包括步骤54及56的路径前进以到达步骤58,在该步骤处,到达用以执行领域管理单元输出命令的命令。当到达此命令时,然后区域管理单元20、22、24对存储器区域内的数据的一部分进行加密且将此存储在目的地(该目的地也为在步骤48处的RMU输出初始化指令内规定的指针)内。步骤60确定是否已接收到来自具有相较于发布在步骤48及58处执行的指令的命令源的较高优先级的命令源的中断。此较高优先级命令将来自具有如先前所讨论的控制层级(例如领域层级、优先级层级等)内的较高优先级位置的源。若此较高优先级中断被接收,则处理前进至步骤62,在该步骤处,输出指令被暂停且错误码被返回至发布在步骤48及58处执行的指令的命令源。步骤64用来将命令的部分完成的状态保存至命令情境缓冲器。步骤66将命令情境缓冲器元数据存储至RMU-私有存储器区域以用于在此随后被提取时用于验证存储在命令情境缓冲器内的部分完成的状态。步骤68用来将已经历部分完成的输出命令的存储器区域标记为处于“部分输出”的状态中,并指示执行此部分输出的过程。这帮助在稍后时间重新开始该输出。
若步骤60处的确定为不存在中断,则处理前进至步骤70,在该步骤处,做出关于存储器区域的输出是否已完成的确定。若输出尚未完成,则处理返回至步骤58。若输出已经完成,则处理前进至步骤72,在该步骤处,已清空(已使存储器区域的存储数据从该存储器区域输出)的存储器区域以与原始存储数据不相关的数据覆写(例如归零、设置为一些其他固定数、填充随机数据等)。处理然后终止。
在以上讨论的示例性实施例中,CCB被提供为由例如初始化指令内的相关指针规定的分离私有存储器区域。然而,在其他示例性实施例中,CCB可不被提供为分离存储器区域,而被提供为已由可被中断的命令使用的存储器区域的一部分,例如目的地存储器区域,由命令产生的结果数据存储至该目的地存储器区域中。在可被中断的输出命令的情况下,输出加密数据存储在目的地存储器区域内,该目的地存储器区域在输出被执行时为RMU私有存储器区域。当CCB填充加密数据时,该CCB可例如被提供为此目标区域的结束部分。存储在CCB内的情境数据的完整性由在执行输出操作时为RMU私有的目标区域确保。
在另一示例性实施例中,CCB可被提供为领域描述符(RD)的一部分;在该情况下,可利于情境数据的存储空间可能受RD中可利用的空间约束,并且因此所支持的可中断平行命令的数目可能受RD的可利用来用作相应的CCB的存储空间约束。CCB可被单独地提供,或提供为还用于另一目的的存储器区域或资源的一部分。
图6示意性地示出了领域及控制层级之间的关系,该控制层级确定来自不同命令源的哪些命令被允许中断/阻止来自其他源的部分完成的命令。所示实例包括嵌套领域的三个级。上代领域M对应于异常级EL3。子代领域N对应于异常级EL2。领域N内的两个孙代领域包括领域O及领域P且两者在异常级EL1处。在此实例中,领域的嵌套层级内的异常级优先级及相对位置两者在控制层级中给出顺序,其中领域M具有相较于领域N的较高优先级,且领域N具有相较于领域O及领域P的较高优先级。领域O及领域P具有相等优先级。
图7为示意性地示出继RMU输入命令之后的页(存储器区域)输入操作的流程图。步骤74用来获得并清洁空页(存储器区域),数据可被输入该空页中。步骤76然后使用加密数据的相关联的存储元数据(存储于RMU-私有区域中)来验证将被输入的该加密数据。若此验证不成功,则产生错误。在成功验证之后,步骤78用来解密加密数据且步骤80用来将该解密数据存储至已在步骤74处获得的存储器页中。一旦存储器页已填充解密数据,该存储器页可被释放至拥有领域(过程)。被获得并随后填充的页被锁定,以便在页输入过程期间可排他地用于存储器管理电路(领域管理单元20、22、24)。
图8示意性地示出了可从不同的命令源平行出现的两个输出命令。指令序列中的一者源自对应于虚拟机(例如访客操作系统)的过程。另一命令源为在与虚拟机相比的较高特权级(或领域层级内的可能较高级)处的管理器。因此,来自管理器的输出命令能够中断正由领域管理单元20、22、24执行的代表虚拟机的部分完成的输出命令。当代表管理器的输出完成时,然后可重新开始代表虚拟机的输出。
在此实例中,到领域管理单元20、22、24的命令可为组合初始化及执行命令,该组合初始化及执行命令被重复地执行,直至存储器存取电路报告对应于输出操作的命令序列已经完成为止。在先前讨论的实例中,输出命令可由输出初始化命令形成,该输出初始化命令规定指向命令情境缓冲器的指针及后跟后续输出执行命令的其他指针,该后续输出执行命令被重复地执行直至存储器存取电路报告命令序列已完成为止。在其他示例性实施例中,输出操作可由组合初始化及执行指令(该组合初始化及执行命令为可中断的)及在组合初始化及执行命令被中断的情况下发布的执行继续命令控制。
命令情境缓冲器用来存储表示部分完成的命令序列的部分完成状态,使得此数据可在稍后时间被恢复。以此方式,系统不需要在中断可被服务之前等待直至完整输出操作已经完成。此外,当部分完成状态被保持时,即使输出操作被重复地中断,也确保通过输出操作向前进展,因为输出操作将不需要从该输出操作的初始点重新开始。
图9示出了图1的处理组件8、10、12中的一者及用于控制存储器存取的存储于存储器16中的控制数据的更详细实例。为便于解释,图9将CPU 0示出为处理组件8,但将了解,处理组件还可为GPU 12的CPU 110或数据处理设备2内的任何其他处理组件。如图9中所示,处理组件8包括处理电路32(该处理电路可包括以上所描述的解码及执行逻辑)、可包括用于缓存转换表的条目的一个或多个转换后备缓冲器100的存储器管理单元26(若使用共享MMU-RMU TLB结构,则该一个或多个转换后备缓冲器还可附加有来自RMU 2的基于领域的控制数据),以及用于控制数据到TLB 100的分配及触发对存储器的遍历存取以定位用来控制给定存储器存取是否被允许执行的所需要的数据的表遍历单元102。处理组件8还可包括密码单元104,该密码单元可执行用于加密或解密例如用于在以上所讨论的分页(输出/输入)操作中使用的数据的密码操作。处理组件8还包括多个缓存110,这些缓存可缓存从存储器16读取的数据或指令。若由处理电路32或由表遍历单元102触发的对存储器的存取在缓存中未命中,则可从主存储器16定位数据。
处理组件8还包括如以上所讨论的领域管理单元20。在一些实施例中,领域管理单元(RMU)20可被提供为硬件电路。然而,以下所讨论的RMU操作中的一些对于单纯地实施于硬件中可能是相对复杂的,例如若这些RMU操作需要执行对不同存储器区域的多个存取。因此,在一些实例中,RMU 20可使用程序代码来实现,该程序代码可存储在数据处理设备2内且可使用通用处理电路32来执行。不同于可被写入存储器16且可为可重写的通用软件,RMU软件(毫码)可以相对永久的方式安装于数据处理设备上使得该RMU软件不可移除,且可被视为由处理系统提供的平台的一部分。例如,RMU程序代码可存储在只读存储器(ROM)内。因此,RMU可包括硬件单元,或可包括执行领域管理软件的处理电路32,该处理电路由RMU命令触发以执行,这些RMU命令被包括在由处理电路32执行的通用软件中。在一些实例中,RMU20可使用硬件及软件的组合来实现,例如一些较简单功能可使用硬件电路来实现以用于较快处理,但较复杂功能可使用毫码来实现。因此,将了解,对RMU的后续参考可涉及硬件或软件或两者的组合。
如图9中所示,存储器16可存储由MMU 26及RMU 20用来控制对存储器的存取的多段控制信息。这包括转换表(也称为页表)120,这些转换表定义用于控制允许哪些过程存取给定存储器区域的存储器存取属性,以及用于将虚拟地址转换至实体地址的地址映射信息。转换表120可基于以上关于图2所讨论的异常级来定义,使得在较多特权异常级处执行的过程可设置许可,该许可操纵是否允许在较少特权异常级处执行的过程存取相应的存储器区域。
另外,多个领域管理表或领域控制信息122被提供用于以相对于MMU页表120的正交方式来控制存储器存取,以允许较少特权过程控制是否存取较多特权过程(领域控制在(对于将要服务的存储器存取请求)可能需要通过两个类型的访问控制检查的意义上正交于MMU控制)。使用领域管理表,拥有给定存储器区域的拥有者过程(领域)具有从存取该存储器区域排除在较多特权异常级处执行的过程的权限。领域管理数据报括领域描述符124,该领域描述符描述给定领域的性质。每一领域对应于由处理电路32执行的至少一个软件过程的至少一部分。一些领域可对应于两个或更多个过程,而其他领域可对应于给定软件过程的仅一个子部分。领域还可被视为映射至存储器地址空间的给定区域(其中当处理电路32正执行位于存储器地址空间的对应区域内的程序指令时,该处理电路在给定领域内执行)。因此,领域可被视为软件过程的集合或软件过程的一部分,或视为存储器地址空间的区域。此两个观点为等效的。为便于解释,后续描述将领域称为至少一个软件过程的至少一部分,但作为存储器区域的收集的领域的对应观点为同样有效的(在该情况下,去往/来自领域的“进入”及“退出”可对应于到达/离开对应于领域的存储器地址的部分的程序执行)。
领域管理数据122还包括领域执行情境区域126,该领域执行情境区域可用于在领域退出或进入时保存及恢复与给定领域相关联的架构状态。领域管理数据还包括领域区组表(或所有权表)128,该领域区组表针对存储器地址空间的每一区域定义哪个领域是该存储器区域的拥有者领域。给定存储器区域的拥有者领域具有从存取存储在该存储器区域内的数据排除其他领域(包括较多特权过程)的权限。以下更详细地讨论对该领域管理数据的使用。一般而言,领域管理单元20及MMU 26可被视为存储器存取电路,该存储器存取电路实施对由用于存储器区域的拥有者领域定义的所有权权限,该存储器区域由该领域拥有。这可例如对于云端平台尤其有用,在该云端平台中,由不同方提供的多个虚拟机36可在由云端服务器操作员提供的管理器38的控制下执行。提供虚拟机之一的方可能不希望其数据及代码是管理器可存取的。通过引入其中在较少特权异常级处执行的领域可从存取该领域的数据或指令排除较多特权异常级的领域概念,这使得能够提供盲管理器,该盲管理器可增加代码开发者的信心以将他们的软件安装于云端服务上,其中实体硬件可与由其他方提供的代码共享。
如图10中所示,领域由RMU 20根据领域层级管理,在该领域层级中,除根领域130之外的每一领域为子代领域,其具有相应的上代领域,上代领域通过执行初始化命令来初始化子代领域。根领域130可以例如为与在最多特权异常级EL3处执行的监视器代码或系统固件相关联的领域。为便于解释,图10的实例及以后讨论的初始实例示出中每一子代领域在相较于其上代领域的较低特权级处执行的情况。然而,如以下将讨论的,还可能建立子领域,该子领域在其上代相同的异常级处执行。
一般而言,对于由MMU 26提供的存储器访问控制的领域管理部分,子代领域具有对由其上代领域所拥有的任何存储器区域的默认存取。类似地,假设给定领域的任何后代可以存取给定领域的所拥有存储器区域。然而,因为领域管理控制正交于由转换表120基于异常级提供的控制,所以在较高特权级处执行的过程仍可通过相应地设置转换表120的参数来从存取该过程的数据排除较少特权码。因此,一般而言,给定子代领域具有从存取存储在由给定子代领域拥有的给定存储器区域中的数据排除该给定子代领域的上代领域的权限。子代领域实际上是否从存取给定存储器区域排除上代领域可基于所有权表128中设置的控制属性来设置(默认情况可为上代领域不具有对子代领域的所拥有区域的存取,但子代领域可通过相应地设置可见性属性来选择将存取授予上代领域)。当存在多个同代领域(共享同一上代领域的不同子代领域)时,则给定子代领域可从存取存储在由给定子代领域拥有的给定存储器区域中的数据排除同代领域。另外,在所有权表128中设置的可见性属性可控制同代领域可存取每一其他代份领域的数据的程度。替代地,同代领域的存取可基于上代可见性属性来控制,使得若子代领域使页为其上代领域可见的,则同一页还变成对于该子代领域的同代领域及同代领域的进一步后代为可见的。在一些情况下,所有权表128可具有全局可见性属性,该全局可见性属性可允许给定拥有者过程使在任何领域下执行的任何过程能够存取该给定拥有者过程的所拥有存储器区域内的数据。
如图10中所示,每一领域140与一个或多个领域执行情境(REC)存储器区域126相关,当从给定领域退出时,该一个或多个领域执行情境存储器区域可用于存储领域的架构状态,诸如寄存器值。被提供用于给定领域的REC 126的数目可取决于多少执行的线程正在给定领域下操作。例如,领域在最初初始化时可利用单个主要REC区域126建立,但随后领域可在必要时配置由该领域拥有的其他存储器区域以用作进一步REC。REC存储器区域由其执行状态被存储至该REC的对应领域拥有。
每一领域与领域描述符124相关联,该领域描述符存储在由其性质在领域描述符124中描述的领域的上代领域拥有的存储器区域中。为了可在给定领域世代处定义的子代领域的数目的灵活性,使用称为领域描述符树(RDT)的树结构来管理领域描述符,稍后将更详细地讨论该领域描述符树。领域描述符124可用来定义领域的性质,这些性质可在进入领域或从领域退出时由RMU 20检查以确保安全。领域描述符还可贯穿各种生命周期状态跟踪领域的进展,使得领域的某些RMU命令的执行可限于特定生命周期状态,以确保以安全方式创建领域以及使领域无效。
图11及图12示出可能的领域层级的两个不同实例。在图11的实例中,图2中所示的过程中每一者定义其自有领域。因此,根领域130对应于在异常级EL3处操作的监视器软件或固件。根领域定义两个子代领域142,一个子代领域对应于在安全EL1处操作的安全操作系统并且另一个子代领域对应于在EL2处的管理器。管理器定义对应于EL1处的不同访客操作系统的孙代领域144,且这些访客操作系统中的每一者定义对应于在最少特权异常级EL0处执行的应用程序的进一步的曾孙代(great-grandchild)领域146。类似地,领域142中的安全操作系统可定义对应于不同安全应用程序的孙代领域148。层级中的上代领域可将其当前拥有的存储器页的所有权传递至新子代领域(通过使用如以下所讨论的区组.添加(Granule.add)命令),或可使该上代领域的页之一无效,将该页映射至子代的虚拟地址空间,以及通过执行页所有权(主张)命令来允许子代领域主张页的所有权。若存储器地址空间的规定的页尚未由发布命令的上代领域拥有,则可拒绝页所有权命令。
如图12中所示,每一特权级处的过程具有分离领域并非必要的,且因此在图12中的虚线中所示的特权级边界中的一些可不对应于领域边界。例如,在图12中,应用程序150及该应用程序的操作系统在与在异常级EL2处操作的管理器领域142相同的领域内执行,且因此单个领域跨越EL2管理器代码、在EL1处操作的操作系统及在EL0处的应用程序。另一方面,在相同管理器下的不同应用程序152可定义该不同应用程序的自有分离领域。在该情况下,领域边界介于EL1与EL0之间且不存在EL2-EL1领域边界(管理器及操作系统两者可在相同领域中执行)。对于另一操作系统,可定义分离EL1领域154,该分离EL1领域还可具有在与操作系统相同的领域内执行的一些应用程序,以及具有自有专用领域的其他应用程序。类似地,在安全侧上,图12中的安全OS及应用程序完全在EL3根领域内执行,且因此当在安全侧上操作时不存在领域边界。因此,领域的精确配置可根据被执行的过程的需求在给定系统的运行时间确定。软件可在运行时间判定该软件仅需要较小及固定数目的子代领域(此可为用于低阶固件的状况),或需要许多领域或变化数目的领域(例如,这可用于云端平台上的管理器,该管理器可管理未知数目的访客虚拟机)。
用于给定上代领域的领域描述符124根据领域描述符树(该领域描述符树为领域管理树的实例,该领域管理树定义用于该上代领域的多个子代领域的领域管理数据)来管理。树具有可变数目的级。图13示出了由特定上代领域管理的领域描述符树160的实例。树160包括多个领域描述符树区组(RDTG)162,其各自包括多个领域描述符树条目(RDTE)164。每一RDTE 164提供指向用于上代领域的给定子代领域的领域描述符166,或用于领域描述符树的下一级的进一步的RDTG 162的指针。用于树的第一级的RDTG 162可由领域描述符树指针168识别,该领域描述符树指针可被存储为与上代领域(例如与上代领域的领域描述符)相关联的数据的一部分。因此,当上代领域发布与给定子代领域相关联的RMU命令时,该上代领域可触发RMU以遍历领域描述符树,以便定位所需要的子代领域的领域描述符166(若该领域描述符尚未缓存在RMU 20内)。每一RDTG 162可具有可变数目的条目164。
如图13中的表中所示,提供指向在树的后续级处的RDTG 162的指针的给定RDTE164可包括指示所指向的RDTG中的条目的最大数目的阶数值(order value)。例如,阶数值可指示对应于所指向的RDTG中的条目的总数的2的幂。可包括在RDTE 164中的其他信息可包括状态值,该状态值指示RDTE的状态(例如RDTE是否为空闲的以用于领域描述符树数据的分配,以及RDTE是否提供指向进一步的RDTG 162或指向子代领域描述符166的指针)。除指针之外,RDTE还可包括参考计数,该参考计数可跟踪指向RDTG的指针中的非空闲的RDTE的数目,这些RDTE可用于确定进一步的RDTE是否可被分配给该RDTG 162。由上代领域触发的RMU命令可控制RMU 20以建立树的进一步的RDTG和/或编辑现有RDTG内的RDTE的内容。
应注意,图13中所示的树示出了一个特定上代领域的子代领域。每一其他上代领域可具有跟踪该上代领域的自有子代领域的分离领域描述符树。与树相关联的数据报(包括RDTG 162及子代领域描述符166)被存储在由上代领域拥有的页内,且因此可从存取此数据排除其他领域。因此,仅上代领域可具有该上代领域配置的那些特定子代领域的可见性,使得在较高特权级处执行的过程可不具有什么领域已在该过程自身已直接创建的任何子代领域以下被创建的可见性。
如图13中所示,给定上代领域的子代领域中的每一者可具有对应领域标识符(RID)168,该对应领域标识符由该上代领域用来识别特定子代领域。RID为局部领域标识符,因为该RID特定于特定上代领域。不同上代领域的子代领域可具有相同的局部RID。尽管可能使用具有由用于给定子代领域的上代领域选择的任意值的局部RID,但在图13及图14中所示的方法中,用于给定子代领域的局部RID具有可变数目的可变长度位部分且可变长度部分中的每一者由RMU 20用来索引到领域描述符树160的给定级中。例如,图13中的具有局部RID=7的子代领域的领域描述符由后面的第一级RDTG 162的条目7中的领域描述符指针来存取。具有局部RID=3.3的子代领域的领域描述符由后面的树的第一级中的条目3及随后树的第二级中的条目3来存取。类似地,具有局部RID=1.2的子代领域的领域描述符由后面的第一层中的条目1及第二层中的条目2来存取。
在图13中,局部RID以十进制形式示出,但图14示出这些局部RID可如何使用二进制标识符来表示。二进制标识符可具有多个可变长度位部分170且这些位部分中的每一者可规定在RDT的对应级处使用的索引。在此实例中,二进制局部RID首先从最低有效末端向上填充,使得最低5个位对应于树的第一级中的条目,接下来的4个位对应于第二级中的条目,以此类推。在此实例中,完整的局部RID对应于7.1.3,因为最低有效部分提供值7,下一最低有效位部分提供值1,以此类推。
在可变长度位部分170中每一者内将要使用的位的数目可通过使用RMU 20逐步穿过领域描述符树时遍历的RDTE中的阶数值来确定。用于局部RID的第一位部分的阶数值可在上代领域的领域描述符内定义(与第一级RDTG指标一起)。在图14的实例中,例如,用于3个级的阶数值分别为5、4及2,指示前面的5个位指示用于第1级的索引,接下来的4个位指示用于第2级的索引,且接下来的2个位指示用于RDT的第3级的索引。最终,到达RID结束(终止)标志172,其具有预定模式,该预定模式指示不存在树的进一步的阶以遍历,且因此从最末级RDTG中的指针存取的下一存储器区域将提供用于所需要的子代领域的领域描述符。任何未使用的位填充零。尽管图14示出了其中RID从最低有效末端向上填充的实例,但通过从二进制值的最高有效末端开始序连连接逐步穿过树所需的索引来构造RID将也是可能的。
此方法提供了允许不同数目的子代领域将由给定上代领域建立,且允许用于这些子代领域的领域描述符将被有效地存取的灵活架构。因为领域标识符显式地提供逐步穿过领域描述符树所需的索引,所以不需要维持将任意领域号映射至穿过树的特别路线的映射表。当使用树结构时,与将提供一定固定数目的条目的表结构相比,可通过在适当的情况下将额外RDTG或将额外RDTE增添至树的给定级来根据子代领域的数目所需来扩展树。因此,结构为可缩放的,用以不同软件过程的需求。因为未提前精确地规定RID的哪些部分将映射至树的给定级,这使RID的可利用的位能够经灵活地分配以适应树的不同深度/宽度。
当需要时,例如当进入或退出领域以便识别新领域的性质及确定至新领域的进入是否被允许时,或当判定执行某些RMU命令是否适当时,领域管理单元20可负责存取领域描述符树。一般而言,领域管理电路可使用给定领域的领域标识符来索引领域描述符树,该领域标识符包括可变数目的可变长度位部分,其中可变长度位部分中的给定一者提供至领域描述符树的给定级中的索引。此实现了领域描述符树的灵活标度尺寸,以便支持用于不同软件过程的各种要求以建立子代领域。
领域管理电路20可基于由领域描述符树的先前级处的条目索引规定的阶数值来确定多少位由可变长度位部分包括来用于索引至领域描述符树的给定级中。通过将阶数值存储在树的条目内,则无需预先定义RID的哪些位将用来对应至树的给定级,这提供进一步的灵活性。
RMU可允许用于索引至领域描述符树的相同级处的不同分支的可变长度位部分具有不同数目的位。也就是说,尽管在图13中层2中所示的RDTG 162中两者具有相同阶数值(且因此相同数目的条目),但此并非必要的,且一些实施方式可在树的相同级处具有不同RDTG 162,这些不同RDTG具有不同数目的条目。因此,相应的领域的RID的对应部分可具有用于树的相同级的不同数目的位。因此,用于索引至树的给定长度的位部分的长度的变化不仅可因上代不同而变化,而且还可在由一个上代管理的树的不同分支内变化,从而以子代领域可被定义的方式提供进一步的灵活性。
一般而言,用于给定领域的RID可包括将要在领域描述符树的相应级处用来存取给定领域的领域管理数据的索引的序连连接。尽管索引以与其被用于逐步穿过树的顺序相同的顺序序列来序连连接并非必要的,但这可能是优选的,因为这使得树存取的管理更简单。序连连接自低至高还是自高至低并不重要。索引的序连连接可后跟预定终止模式,该预定终止模式可允许RMU 20确定何时不存在将要逐步穿过的树的进一步的级。
一些实施方式可将此RID构造技术应用于全局领域描述符树,该全局领域描述符树可以将用于系统内的所有领域的领域描述符存储在类似树结构中(其中RID中每一者为全局唯一值)。然而,可通过定义一个树内的给定上代的子代领域并然后使用于每一其他上代领域的分离树跟踪该上代领域的子代领域来使软件开发较简单。因此,领域描述符树可为与用于存储已由给定上代领域初始化的子代领域的领域管理数据的给定上代领域相关的局部领域描述符树。领域标识符因此可为局部领域标识符,该局部领域标识符识别由给定上代领域使用的特定子代领域。由不同上代领域初始化的子代领域可被允许具有局部领域标识符的相同值。以此方式,上代领域可在不知道有何其他领域已由其他上代领域建立的情况下选择哪些RID被用于该上代领域的子代领域,其中用于子代领域的RID根据上代领域配置其领域描述符树的方式来构造。
局部领域标识符可通过由软件过程发布的领域进入指令或RMU命令来使用。然而,硬件架构可使用给定子代领域的绝对识别来辨别由不同上代创建的领域。因此,除图13及图14中所示的局部领域标识符之外,给定领域还可具有对于给定领域唯一的全局领域标识符(或“内部”领域标识符)。至少一个硬件结构可使用全局领域标识符(GRID)而非局部领域标识符(LRID)来识别给定领域。例如,领域区组表128和/或TLB 100可使用全局领域标识符来识别领域。
在一些实例中,任意二进制值可被分配为用于给定领域的GRID,该GRID可与由上代领域使用来参考该子代领域的LRID完全无关。相同领域架构之不同微架构实施方式可使用不同方法来分配GRID。
然而,在如图15中所示的一个实例中,用于给定领域的GRID可基于该给定领域的先代领域的LRID来构造。此可为有用的,因为其可实现给定领域为另一领域的后代或另一领域的先代的较简单确定,该较简单确定可用于MMU 26及RMU 20的访问控制。具体地,共享共同先代领域的领域可共享GRID的共同前缀或后缀部分。例如,用于子代领域的GRID可包括该子代领域的上代领域的GRID及该子代领域的LRID的序连连接。例如,如图15中所示,若给定领域180具有某个局部领域标识符X,则该给定领域的子代领域182可各自具有通过序连连接X与特定LRID形成的GRID,这些特别LRID基于领域X的领域描述符树中的索引形成。例如,具有LRID 1.2的子代领域可具有GRID X.1.2。类似地,具有LRID 7的领域X.1.2的孙代领域可具有GRID X.1.2.7。
在一些情况下,在GRID中,LRID可被序连连接,包括图14中所示的终止标志及填充零的位。替代地,GRID的二进制表示可排除此类终止标志及填充零的位,且替代地LRID的包含RDT索引的有意义部分可被直接序连连接。因为LRID中的每一者可取决于用于关联上代领域的RDT的深度及宽度而自身具有可变数目的位,则被分配给表示给定领域世代的局部RID的全局RID的位的数目可为可变的。另外,其中全局RID的部分被分配给给定领域世代的此变化可基于正在运行的特别软件在运行时间变化,但还可在领域的“族树”的不同分支之间变化,使得族树的一个分支可使用相较于其他分支的领域标识符的较大部分。因为GRID的共同前缀或后缀对于共享共同先代的领域为相同的,所以任何后续世代仍可由特定于后续世代的剩余部分辨别,而不管该剩余部分如何在进一步的世代间划分。
通过将GRID构造为多个先代领域的LRID的序连连接,这实现了第一领域为第二领域的先代还是后代的更高效的确定。电路可被提供(例如在TLB 100或RMU 20内)以确定第一领域及第二领域中的一者的全局RID是否匹配另一者的全局RID的前缀或后缀部分,例如通过使用位掩码来遮掩对应于较迟世代的全局RID的部分,以便允许相同族内的较早领域及较迟领域的全局RID之间的比较将匹配。
所有局部RID使用图13中所示的树索引方法的序连连接来构造并非必要的。在一些情况下,局部RID的特定值被保留用于参考某些预设领域可为有用的。规定当前领域或当前领域的上代领域的RMU命令可为相对常见的。因此,预定RID值可被保留来用于参考当前领域的上代领域。例如,所有位被设置为1的LRID(指示1之值)可被保留用于参考当前领域的上代领域。类似地,预定领域标识符值可被保留来用于参考当前领域自身。例如,0的LRID值可用来参考当前领域。应注意,对LRID中的RID终止标志172的使用帮助支持将零的值用作当前领域的预定领域ID值,因为这意味即使子代领域描述符使用RDT的每一级中的RDTE0加以识别,所得RID值仍不等于零,因为该所得RID值可包括此终止标志172,该终止标志可具有设置为1的至少一个位。因此,除指示RID之结束之外,终止标志172还可支持其他功能。
RMU可支持可由给定领域触发的某些查询命令,以便查询在该给定领域建立其领域描述符树时必须满足的约束。例如,响应于查询命令,RMU 20(或处理电路32)可返回约束值,该约束值指示允许由给定领域定义的领域描述符树160的最大数目的级、在用于给定领域的树结构的给定级处允许的最大数目的条目,和/或可由给定领域初始化的最大数目的子代领域中的至少一者。例如,系统可包括寄存器,这些寄存器可指示诸如用于特别硬件实施方式的LRID或GRID中可利用的位的数目之类的性质。RMU或处理电路可响应于查询命令,检查可用于领域标识符的位的数目(或适当响应可被硬连线以用于特定处理器实施方式),且还可检查规定标识符的多少位已由全局领域标识符中的先代领域用完的信息,以便确定多少位为可用剩余的以用于当前领域定义进一步的子代。上代领域可使用对查询命令的响应来判定如何构造该上代领域的RDT。
图16示出了用于给定领域的领域描述符166的内容的实例。将了解,此仅为一个实例且其他实施方式可不包括所列表信息中的全部,或其可包括额外信息。在此实例中,领域描述符包括以下项:
·领域的全局RID。因此,通过基于局部RID遍历领域描述符树,对应的全局RID可被识别且此可用来由给定领域索引硬件结构,如TLB,或检查所有权表或基于GRID定义的其他信息。
·给定领域的生命周期状态,该生命周期状态可由RMU 20用来确定是否接受由给定领域触发的给定命令。
·给定领域的类型。例如,领域类型可指示领域为完整领域或如稍后讨论的子领域。
·边界异常级(BEL)值,该界异常级值识别用于对应领域的边界异常级。BEL指示领域被允许执行的最大特权级。例如,图12中的领域142可具有EL2的BEL,领域152可具有EL0的BEL,且领域154可具有EL1的BEL。通过提供识别领域描述符中的BEL的显式参数,此提供领域跨越多个异常级的灵活性,因为BEL可在异常之发生时用来确定异常是否可在当前领域内取得或是否需要到上代领域的领域退出以处置异常。
·指示由领域及其后代拥有的存储器区域(领域保护区组或RPG)的总数的资源计数。此用来确保在这些存储器区域可分配给不同领域之前,使由领域其后代拥有的所有存储器页无效(及数据的最终抹除)。例如,资源计数可用来跟踪多少区域仍需要经洗涤。
·用于领域的受保护地址的开始及结束地址。例如,受保护地址范围可定义存储器地址空间范围,在该存储器地址空间范围内,页可由对应领域拥有。此可用于保护免于收回先前在试图存取子代领域数据中分配给子代领域的区域的所有权的恶意上代领域,因为通过将在领域描述符中定义的受保护地址范围与存储器存取的后续地址比较,可识别先前由领域拥有的存储器区域不再由该领域拥有的情况。
·由密码电路104用来加密或解密与给定领域相关联的数据的一个或多个加密密钥。在此实例中,提供两个分离加密密钥:用于加密/解密由领域拥有的内容及存储器的存储器密钥及用于加密/解密如以上所讨论的在存储器16至持续存储器6之间输出/输入的数据的分页密钥。然而,在其他实例中,相同密钥可用于两者目的,或进一步可被提供来用于其他特定目的。
·领域描述树条目(RDTE),其识别领域描述符树的根。领域描述符中的RDTE提供用于存取根RDTG(及定义多少位将用作该RDTG的索引的阶数值)的指标。
·指向用于保存或恢复与领域的执行相关的架构状态的主REC(领域执行情境)存储器区域的指针。
图17示出了给定领域可存在的生命周期状态的集合,这些生命周期状态在此实例中包括清洁状态、新状态、活动状态及无效状态。图17总结每一状态的性质,针对每一状态,指示:对应状态中的领域是否可使该领域的领域描述符166的参数由该领域的上代领域修改、针对该领域规定的加密密钥是否可被有效地使用、领域是否可拥有任何存储器区域(RPG)及与该领域相关联的代码是否为可执行的。应注意,领域描述符的参数在清洁状态中为可修改的,但在其他状态中的任一者中不可修改。此防止恶意上代领域在给定领域已变得活动之后更新该给定领域的性质。另外,领域仅在活动状态中为可执行的。
图18为示出领域的生命周期状态的允许转换的状态机图表。图18中所示的每一状态转换由向RMU 20发布领域管理命令的上代领域触发,该领域管理命令规定子代目标领域的局部RID(领域.无效(Realm.Invalidate)命令212还可由目标领域自身发布)。当无先前领域已针对该局部RID定义且领域描述符寄存器区组命令200由上代领域执行时,此触发由上代领域拥有的给定存储器区域的组态,因为用于子代领域的领域描述符具有规定的局部RID。用于子代领域的全局RID可基于上代领域的全局RID及在领域描述符寄存器区组命令200中规定的新局部RID的序连连接来设置。规定的子代领域随后进入清洁状态202。在清洁状态中,上代领域可通过更新子代领域的领域描述符的各种参数来设置子代领域的性质。这些性质可使用由上代领域发布的进一步的RMU命令来修改(若规定的子代领域并非处于清洁状态中,则此类领域描述符修改命令可被拒绝)。当上代领域已完成设置子代领域的领域描述符的参数时,该上代领域执行规定子代领域的LRID的领域初始化命令204且此触发子代领域从清洁状态202至新状态206的转换,且此时,领域描述符的参数不再可由上代领域修改。若规定的领域当前未处于清洁状态中,则领域初始化命令204将失败。
当领域处于新状态206中时,规定该领域的局部RID的领域活动命令208的执行触发自新状态206至活动状态210的转换,在该活动状态中,领域现在为可执行的,且在此刻之后,至对应领域中的领域进入将不再触发故障。领域现在为完全操作的。由处于清洁状态202、新状态206及活动状态210中的任一者中的子代领域的上代领域触发的后续领域无效命令212导致至无效状态214的转换。为离开无效状态214且返回至清洁状态202,上代领域必须执行领域洗涤命令216。若跟踪由领域拥有的页的数目的资源计数具有除零之外的值,则领域洗涤命令216被拒绝。因此,为使领域洗涤命令216成功,上代领域首先必须针对由无效领域拥有的每个页发布区组.收回(Granule.Reclaim)命令。区组.收回命令规定目标存储器页且触发目标页的无效以使页为不可存取的,且还使页的拥有者领域的参考计数降低一。当执行区组.收回或领域洗涤命令216时,不必实际上覆写无效区域中的数据,因为当清洁命令后续被发布以使存储器页自无效转换至有效时可进行覆写(参见以下讨论的图22)。另外,响应于领域洗涤命令,还可使与无效领域相关的任何缓存数据无效,例如在处理组件8、10、12(不仅执行RMU命令的处理组件)中任一者的TLB 100或缓存110内。全局RID可用来触发缓存数据的此类无效。
因此,通过提供与给定领域标识符相关的领域的受管理生命周期,此确保在领域可返回至其中该领域的参数可被修改的清洁状态之前(及因此在给定领域标识符可被再循环以用于由不同领域使用之前),与使用相同领域标识符的先前领域相关的数据必须从存储器及任何缓存洗涤,以防止与旧领域相关的任何数据由相同领域标识符的重新使用向其他领域泄漏。当领域处于清洁状态202中时,该领域的领域描述符还可由执行领域描述符释放命令218取消,该领域描述符释放命令使存储在领域描述符中的存储器区域能够被分配用于其他目的(在此刻,不需要洗涤,因为领域为清洁的)。
图19示出了领域区组表128(或所有权表)的条目的内容的实例。每一条目对应于存储器地址空间的给定存储器区域。给定存储器区域的大小可为固定的或可变的,此取决于实施方式。所有权表128被结构化的特定方式可取决于实施方式要求而显著变化,且因此用于给定条目的对应存储器区域被识别的特定方式可变化(例如数据可存储在识别对应区域的每一条目中,或替代地,对应条目可至少部分地基于表自身内的对应所有权条目的位置来识别)。另外,图19示出了可针对给定存储器区域规定的参数的特定实例,但其他实例可提供更多信息或可省略所示信息类型中的一些。
如图19中所示,每一所有权表条目可针对对应存储器区域规定下列项:
·识别用于该存储器区域的拥有者领域的全局RID。拥有者领域可为具有设置控制哪些其他领域被允许存取存储器区域的属性的权限的领域。
·用来控制哪些RMU命令被允许在存储器区域上执行的对应存储器区域的生命周期状态。
·由MMU 26在存储器区域变得由拥有者领域拥有时映射到的映射地址。映射地址可为虚拟地址或中间实体地址。通过在所有权表中规定此地址,此可通过在领域已取得给定存储器区域的所有权之后重新映射地址转换表来防止超过由领域结构提供的安全的可能试图。
·规定除拥有者之外的哪些领域可存取存储器区域的可见性属性。例如,如图20中所示,可见性属性可规定控制当前领域的上代领域是否被允许存取区域的上代可见性位,及可规定任何领域是否可存取对应存储器区域的全局可见性位。一般而言,领域保护方案可假设始终允许当前领域的后代领域存取由该当前领域的上代或先代领域拥有的存储器区域(服从基于转换表120是否允许存取,该转换表基于特权级提供保护),但给定领域可控制该给定领域的上代或并非给定领域的直接后代的任何其他领域是否可存取存储器区域。在一些实施例中,上代可见性位及全局可见性位两者可由拥有者领域自身设置。替代地,虽然上代可见性位可由拥有者领域设置,但全局可见性位或许能够由拥有者领域的上代领域设置(前提为,用于存储器区域的上代可见性位已被设置为给予该存储器区域的上代可见性)。将了解,此为拥有者领域可如何控制哪些其他过程可存取该拥有者领域的数据的仅一个实例。
图21为示出给定存储器区域可存在的不同生命周期状态的表,且图22为示出触发相应的生命周期状态之间的转换的命令的状态机。以与图18中所示的领域生命周期状态类似的方式,存储器区域生命周期状态之间的转换被管理为确保从由一个领域的所有权传递至另一领域的所有权的存储器区域必须首先经历无效过程,其中该区域中的数据被洗涤(例如设置为零)。因此,为了从无效状态220转换至软件可存取存储器区域的有效状态222,清洁命令224必须由RMU 20执行,由在处理组件8上执行的软件触发。清洁命令224识别特定存储器区域(页)且控制RMU以逐步穿过对应存储器区域的存储器地址以使该存储器区域内的每一位置中的数据无效/归零。若目标存储器区域处于除无效之外的任何状态中,则清洁命令被拒绝(例如故障别触发)。
在一些系统中,提供有效状态222及无效状态220作为仅有的存储器区域生命周期状态可为足够的。然而,在图22的实例中,给定存储器区域还可被指定为“RMU-私有”存储器区域,其被保留用于RMU 20自身的排他存取,使得由在处理电路32上执行的软件(除任何RMU软件之外)触发的对RMU-私有存储器区域的存取将被拒绝。这对于存储领域管理数据尤其有用,例如,如以上所讨论的领域描述符、领域描述符树条目、领域执行情境及用于分页的元数据。通过提供用于将给定存储器区域指定为被保留用于RMU的排他存取的RMU-私有存储器区域的属性,可防止软件过程(包括存储器区域自身的拥有者过程在内)能够存取领域管理数据,否则可能允许软件过程规避由领域方案提供的安全保护。
因此,清洁命令224可作为该清洁命令的参数中的一者规定隐私指示,该隐私指示规定此为正常清洁命令还是私有清洁命令。替代地,两个完全分离的命令可被提供来用于这些目的。当清洁命令为正常清洁命令时,此触发至有效状态222的转换,如以上所讨论。然而,当清洁命令为私有清洁命令224时,此触发至RMU清洁状态226的转换,其中存储器区域被指定为RMU-私有存储器区域。在一些实例中,所有类型的RMU数据可被存储在对应于RMU清洁状态的单个类型的RMU-私有存储器区域内。
然而,可通过指定各自对应于特定形式的领域管理数据的多个类型的RMU-私有存储器区域来提升强健性。例如,在图21及图22中,定义各自对应于RMU私有区域的多个RMU注册状态228,这些RMU私有区域经指定来用于特定目的。在此实例中,RMU注册状态228包括RMU注册RDT(用于存储领域描述符树的RDTG)、RMU注册RD(用于存储领域描述符)、RMU注册REC(用于存储领域执行情境数据)及RMU注册MDT(用于存储在如以上所讨论的输出/输入操作期间使用的分页元数据)。不同形式的注册命令230可由用于RMU清洁状态中的存储器区域的RMU执行,以将存储器区域转换至RMU注册状态228中的对应的一者。用于将数据存储至并不对应于规定目的(RDT、RD、REC或MDT)的RMU-私有存储器区域的命令可被拒绝。因此,在RMU注册状态的第一生命周期状态中,用于存储第一类型的领域管理数据的第一类型的RMU命令可被允许,且在第二生命周期状态中,用于存储第二类型的领域管理数据的第二类型的RMU命令可被允许,其中当目标存储器区域处于第二生命周期状态中时,第一RMU命令被拒绝,且当目标存储器区域处于第一生命周期状态中时,第二RMU命令被拒绝。此可通过避免恶意上代领域来实现进一步的安全,该恶意上代领域例如试图将领域描述符条目存储至领域执行情境区域或反之亦然,以便试图使子代领域的操作分裂。根据RMU注册状态228中每一者,对应形式的释放命令232可使对应存储器区域返回至无效状态220。在区域可被重新分配来用于通用数据之前,进一步的清洁命令可触发从先前定义的RMU-私有区域的数据的洗涤。
因此,总之,可定义至少一个RMU-私有存储器区域,该至少一个RMU-私有存储器区域仍由给定拥有者领域拥有,但具有在所有权表中规定的属性,该属性意味该至少一个RMU-私有存储器区域被保留来用于RMU的互斥存取。在此实例中,控制RMU-私有状态的属性为在所有权表中的对应条目中规定的生命周期状态,但该属性还可以其他方式识别。当给定存储器区域被至少一个状态属性规定为RMU私有存储器区域时,MMU可防止由一个或多个软件过程对给定存储器区域的存取。因此,不是由RMU自身触发的任何软件触发存取在其以RMU-私有存储器区域为目标时可被拒绝。此包括防止由拥有者领域自身对RMU-私有存储器区域的存取。
技术人员可询问,若拥有者领域甚至不能存取存储器区域中的数据,则为何定义用于RMU-私有存储器区域的拥有者领域为有用的。例如,用于实施仅由RMU对数据的存取的替代性方法将定义用于RMU的特殊领域,且分配存储器地址空间的页以用于存储将对于该特殊RMU拥有者领域保持私有的数据。然而,发明人认识到,当使领域无效时,可能存在使与该领域相关的全部控制数据无效的要求,且若此控制数据与特殊RMU拥有者领域而非无效领域相关联,则此可使无效领域的数据的洗涤更复杂。
相反,通过使用RMU-私有属性,存储用于给定领域的控制数据的存储器区域仍由该领域拥有,即使拥有者不能存取该控制数据,此意味当该拥有者领域被取消时,识别哪些存储器区域需要被无效为较简单的。当使给定领域无效时,上代领域可简单地执行收回操作的序列(例如通过执行随后由RMU作用的收回命令),该收回操作的序列触发由规定的无效领域(或该规定的无效领域的后代)拥有的存储器区域以使无效,且使不可存取,并返回至触发收回命令的上代领域的所有权。收回操作不仅可以影响无效领域可存取的页,而且还包括由无效领域拥有的RMU-私有存储器区域。
将用于领域的控制数据存储在由该领域拥有的RMU-私有存储器区域中的另一优点是在执行输出操作时。为将领域的存储器覆盖区降低至零,在输出操作期间,除正常存储器之外,与该领域相关的管理结构可被输出。要求这些结构被领域拥有简化了对该输出操作的管理。
一般而言,任何种类的领域管理数据可存储在RMU-私有区域中,但具体地,领域管理数据可包括以下任一者:定义给定领域的性质的领域描述符、识别存储用于给定领域的领域描述符的存储器区域的领域描述符树条目或进一步的领域描述符树条目、指示与给定领域内执行的至少一个线程相关的架构状态的领域执行情境数据,及在与给定领域相关的预定操作的中间点处使用的暂时工作数据。
尽管通常RMU私有区域可用于存储与给定领域相关的特定领域控制数据,但还可使用这些RMU私有区域以便增加关于一旦领域为活动时所执行的某些其他操作的安全。例如,当执行数据被加密或解密的以上所讨论的分页输出或输入操作,且使用元数据的检查被执行以检查当数据再次被输入时数据仍为有效的时,此类操作可花费许多循环且此类长期运行操作更可能在中途中断。为避免需要再次重新开始操作,期望的是甚至在中断时允许元数据或与此类长期运行操作相关的其他暂时工作数据保持在缓存/存储器内,而不使此数据为其他过程(包括拥有者领域自身)可存取的。通过将存储器系统的区域暂时地指定为RMU-私有区域,可保护此暂时工作数据。因此,如图21中所示,页状态还可包括在此暂时工作数据被存储至存储器区域时可使用的RMUExporting及RMUImporting状态,且当这些状态中的一者被选择时,则仅RMU可存取该数据。
可受益于将对应存储器区域暂时地指定为RMU私有的操作的其他实例可包括:在由给定领域拥有的至少一个存储器区域与由除给定领域之外的领域拥有的至少一个存储器区域之间的数据传递期间的加密或解密数据的生成或验证;存储器区域的所有权至另一领域的传递;以及被执行以使存储在无效存储器区域中的数据不可存取的破坏性收回操作。例如,用于洗涤地址空间的给定页的全部内容的收回操作可在中途中断,且因此确保其他过程不能存取该页,直至洗涤完成为止,页可暂时地被指定为RMU-私有的。一般而言,由RMU执行的任何长延迟操作可受益于在开始长期运行操作之前将一些存储器区域的生命周期状态转换至RMU-私有状态,并然后在长期运行操作完成时再将该生命周期状态转换回来而使该长延迟操作的暂时工作数据受保护。
当区域被经指定为RMU私有的时,该区域被保留来用于由RMU 20的存取,该RMU用来执行领域管理操作。领域管理操作可包括以下中至少一者:创建新领域;更新现有领域的性质;使领域无效;分配存储器区域以用于由给定领域的所有权;改变用于给定存储器区域的拥有者领域;改变给定存储器区域的状态;更新用于响应于由用于给定存储器区域的拥有者领域触发的命令而控制对给定存储器区域的存取的访问控制信息;在一个或多个软件过程的处理期间管理领域的间的转换;管理与给定领域相关联的数据在由给定领域拥有的存储器区域与由相比于给定领域的不同领域拥有的存储器区域之间的传递;以及与给定领域相关联的数据的加密或解密。RMU可为用以执行领域管理操作之至少一部分的硬件单元,或可包括执行领域管理软件以执行领域管理操作的至少一部分的处理电路32,或可为两者的组合。
图22示出了可由给定领域触发以清洁给定页,因此该给定页可被有效存取,或使对应页无效的状态转换。图23扩展该情况以示出可用来将给定页的所有权从一个领域传递至另一个领域的进一步的命令。若该存储器区域当前处于无效状态220中且由上代领域拥有,则通过上代领域的区域主张命令230的执行使对应存储器区域能够被传递至规定子代领域。当目标存储器区域由除给定子代领域的上代领域之外的任何领域拥有时,或若存储器区域为有效的或处于RMU-私有生命周期状态226、228中的一者中,则区域主张命令230被拒绝。此防止上代领域任意地指派该上代领域自身不可存取或被RMU 20使用的页的所有权。一旦页已经指派给子代领域,则该子代领域可执行清洁命令以便以与图22中所示的相同的方式转换至有效状态222。出于简洁性,对RMU-私有区域的使用在图23中未示出,但在任何给定领域内,私有清洁命令替代地可将存储器区域转换至RMU清洁状态226,如先前所讨论。
区组主张命令230用来将所有权传递至已经建立的子代领域。另外,上代领域可执行区组添加命令232,该区组添加命令触发RMU 20以将所有权指派给处于新状态中的新子代领域,使得上代领域可将数据写入至指派给子代的区域。例如,此可用于安装新子代领域的程序代码,使得子代领域可被第一次执行。因此,就对应存储器区域被分配给子代领域的生命周期状态而言,添加命令232不同于主张命令230。只有在子代领域处于图18中所示的新状态206中时,添加命令232可被允许。通过执行触发RMU以更新所有权表128的对应条目的区组释放命令234以及更新诸如子代领域的领域描述符中的资源计数等之类的性质,子代领域可将给定存储器区域的所有权释放回至该子代领域的上代。若规定存储器区域并非由发布命令的当前领域拥有,或若区域处于除无效之外的状态中,则区组释放命令234可被拒绝(确保在数据可返回至上代领域的所有权之前需要该数据的破坏性清洁)。
使用其中上代领域初始化子代领域的以上所讨论的层级式领域结构的一个优点在于,此大大地简化领域及该领域的后代的无效。相对常见的是,若给定虚拟机领域将无效,则还可期望使用于在该虚拟机下运行的任何应用程序的领域无效。然而,可存在与将无效的过程中每一者相关联的大量程序代码、数据及其他控制信息。可期望确保此类无效以原子方式发生,使得当数据洗涤的仅部分已经实现时,不可能继续存取与无效领域相关的数据。若每一领域被完全独立于其他领域而建立而没有如以上所讨论的领域层级,则此可使此类原子无效为困难的,因为必须提供多个分离命令来单独地使由对应领域ID识别的每一领域无效。
相反,通过提供其中RMU管理领域使得除根领域之外的每一领域为回应于由上代领域触发的命令而初始化的子代领域的领域层级,当请求目标领域的无效的命令被接收时,RMU 20可用较有效的操作使目标领域及目标领域的任何后代领域为处理电路不可存取的。
具体地,响应于目标领域的无效,RMU可更新与目标领域相关联的领域管理数据(例如领域描述符)以指示目标领域为无效的,但不需要更新与目标领域的任何后代领域相关联的任何领域管理数据。与后代领域相关的领域管理数据可保持未改变。这是因为即使领域管理数据尚未改变,简单地使目标领域无效还可使任何后代领域不可有效地存取,因为对给定领域的存取由该给定领域的上代控制且因此若使上代领域无效,则此意味还不可能存取上代领域的后代。因为领域中的每一者是使用领域进入指令(以下所讨论的ERET指令)进入,该领域进入指令使用由上代领域定义来识别该上代领域的特定子代的局部RID,且此用来逐步穿过存储在由给定子代领域的上代领域拥有的存储器区域中的领域描述符,因而除上代领域之外无过程可触发RMU以存取子代领域的领域管理数据。因此,若使上代领域无效,则RMU不能存取给定子代领域的领域管理数据,从而确保给定子代领域变得不可存取。
在已使领域无效之后,该领域的上代领域可触发RMU以执行用于收回由无效目标领域拥有的每一存储器区域的收回操作。例如,如图23中所示,用于由子代领域拥有的存储器区域的收回命令236可触发存储器区域至无效状态220的返回,且还将存储器区域的所有权传递回至上代领域。然而,此收回操作可在其他领域的持续处理的背景中进行且不需要立即进行以便允许将使无效领域的任何后代领域为不可存取的。用来将给定领域的领域状态自如图18中所示的活动改变至无效的单个动作足以确保与该无效领域的任何后代领域相关的所有数据还为不可存取的。因为任何上代领域仅可将该上代领域拥有的页指派给该上代领域的子代,且子代仅可将该子代拥有的页指派给孙代领域,所以此还意味跟踪哪些页需要被无效且在给定领域的无效时被收回为相对直接的,因为在无效领域的领域描述符中定义的受保护地址范围(参见图16)可用来识别哪些页将收回,因为无效领域的任何进一步的后代领域将还拥有该范围内的页。
因此,总之,使用领域层级大大地简化了领域及无效的管理。在此类无效以及覆写存储器中的数据时,无效还可触发用于目标领域及目标领域的任何后代领域的缓存领域管理数据的无效,该缓存领域管理数据不仅保持在触发无效的处理组件8中,而且还保持在诸如另一CPU或GPU之类的其他处理组件中。因此,可存在无效至其他处理组件的广播,以确保其他处理组件不继续具有对无效领域的存取。当触发此类无效时,可为有用的是缓存领域管理数据将与唯一地识别对应领域的全局领域标识符相关联,且形成如以上所讨论的全局领域标识符,使得给定子代领域的全局RID与该给定子代领域的上代领域的全局RID共享共同前缀部分。此使位掩码或其他类似操作能够用来迅速地比较给定领域是否为规定领域ID的后代。若先代领域的无效使给定领域为不可存取的,则进入规定目标领域的试图为不可能的(因为不存在上代领域来执行用于该领域的ERET指令),但甚至在使用不同领域进入机构的其他实施方式中,若后代领域的领域描述符不再可定位,则领域进入可失败且触发故障条件。
图24示出了由MMU 26及RMU 20执行的用于确定是否允许给定存储器存取的检查的实例。MMU 26支持地址转换的两个级段,在由给定访客操作系统设置的级段1页表120-1的控制下将虚拟地址(VA)转换至中间实体地址(IPA)的级段1,及基于由管理器38设置的级段2页表120-2将由级段1转换提供的中间实体地址转换成用来存取存储器16的实体地址(PA)的级段2地址转换。管理器可定义用于不同虚拟机的级段2页表的多个集合,且被提供存储器存取请求的虚拟机ID(VMID)250可识别使用哪些特别级段2页表。类似地,操作系统可定义用于不同应用程序之级段1页表的多个集合,且地址空间标识符(ASID)252可用来识别使用哪些级段1页表。VMID 250及ASID 252可共同地称为转换情境标识符254,其识别与存储器存取请求相关联的当前转换情境。存储器存取请求还规定各种属性256,诸如指示事务为读取(R)或写入(W)请求,或指示与发布存储器存取请求的过程相关联的异常级(X)的属性。
在接收到存储器存取时,MMU 26可基于来自级段1页表的信息确定事务属性是否有效。例如,级段1页表可规定可对于某些地址仅允许读取事务,或可允许对给定地址的读取及写入存取两者(一些实施方式还可允许仅写入将要定义的地址空间的区域)。另外,级段1页表中的属性可将存取限制于在给定异常级或更高处操作的过程。若事务属性为有效的且存取由级段1页表允许,则MMU可返回对应的中间实体地址(IPA)。IPA与VMID 250一起随后索引至级段2页表中,这些级段2页表再次验证事务之属性,且若有效,则返回实体地址。应注意,并非所有事务都需要经历地址转换的两个级段。例如,若输入存储器事务是在EL3或EL2处,或在安全域中的EL1或EL0处发布,则级段1MMU的输出可被视为实体地址且级段2MMU可被绕过。
已获得实体地址,实体地址随后可在RMU表128(领域区组表)中被查找,以确定由MMU实施的领域保护是否允许存储器存取进行。以下在图26中更详细地讨论领域检查。若级段3处的检查成功,则输出已确认实体地址且允许存储器存取进行。若级段1或级段2地址转换处的检查或在级段3处提供的RMU实施的领域保护中任一者失败,则拒绝存储器存取。因此,除基于页表120的任何现有地址转换检查之外,由领域管理单元提供的保护可被视为将要进行的检查的额外层。图24中所示的检查可相对缓慢地进行,因为在存储器中可存在多个表,这些表需要被存取且与存储器存取请求的参数或当前转换情境或领域比较,存取是从该当前转换情境或领域做出。虽然将可能对每个存储器存取进行这些检查,但当已针对给定存储器存取请求成功地执行检查时,可更快速地缓存TLB 100内的数据,使得下一次发布类似存储器存取请求时,可在不再次重复所有检查的情况下允许该类似存储器存取请求。因此,可期望仅在TLB 100中存在未命中时执行这些许可检查,且不针对命中执行。
图25示出了用于缓存关于已验证的存储器存取的数据的TLB结构100的实例。虽然图25示出单个TLB,但将了解,一些系统可包括缓存层级中的TLB的多个级,其中第1级TLB存储用于较快速存取的转换条目的较小子集,且第2级或进一步的级的TLB存储在第1级TLB中存在未命中的情况下可存取的转换条目的较大集合。TLB 100(或“转换缓存”)具有多个条目260,每一条目规定用于对应存储器区域的地址转换数据。每一条目260包括虚拟寻址标签262,该虚拟寻址标签对应于虚拟地址,针对其数据提供用于该虚拟地址的对应实体地址264。在此实例中,TLB为组合级段1及级段2TLB,使得虚拟地址可使用TLB直接转换至实体地址而不必经由中间实体地址进行(尽管将对TLB未命中进行对应的级段1及级段2转换以便定位正确的实体地址,但TLB不需要存储介入IPA且可将VA直接映射至OA)。其他实例可使用分裂的级段1(S1)及级段2(S2)TLB,在该情况下,VA-PA对262、264可用VA-IPA对或IPA-PA对替换。TLB条目260还用转换情境标识符254(由ASID 252及VMID 250形成)来加标签。尽管此实例提供两个分离转换情境标识符,但在其他实例中,可使用单个统一转换情境标识符,或在分裂S1/S2 TLB的情况下,S1 TLB可使用ASID且S2 TLB可使用VMID。转换情境标识符允许规定相同虚拟地址的不同操作系统或应用程序使这些不同操作系统或应用程序的存取映射至提供不同实体地址的TLB 100的不同条目上。
TLB 100中的命中不仅需要标签262匹配针对存储器存取请求规定的地址258的对应部分,而且存储在相同条目中的转换情境标识符还应匹配当前转换情境,存储器存取是从该当前转换情境发布的。可预期,标签262及转换情境标识符254的比较可足以定位用于给定存储器存取的正确实体地址264。然而,若这些为在查找中执行的仅有比较,则若TLB中的存储器存取命中被接收而没有无领域管理单元表128的进一步检查,则存在潜在安全弱点。这是因为有可能创建新过程,该新过程具有与先前执行的过程相同的VMID 250或ASID252,以诱使MMU接受存储器存取,该存储器存取实际上来自相比于先前针对存取给定存储器区域接受的一个领域的不同领域。
为解决此问题,TLB 100可在每一TLB条目260内规定拥有对应存储器区域的拥有者领域的全局RID 270,以及由拥有者领域设置来用于控制允许哪些其他领域存取对应存储器区域的可见性属性272。当转换缓存100的给定查找响应于从当前转换情境及当前领域发布的对给定目标存储器区域的存储器存取而被执行时,若在转换缓存100中存在未命中,则TLB控制电路280可触发表遍历单元102以存取关联页表120及RMU表128以便检查是否允许存取。若页表或RMU表128从存取对应存储器区域排除转换情境、异常级及领域的当前组合,则无数据响应于该存储器存取而被分配给转换缓存。具体地,当查找未命中且当前领域由目标存储器区域的拥有者领域从存取目标存储器区域排除时,随后地址转换数据至转换缓存的分配被防止。因此,当对应存储器存取通过MMU页表120及RMU表128两者的检查时,条目被分配给TLB 100。
随后,当查找转换缓存以检查该转换缓存是否已包括提供用于给定地址的地址转换的条目260时,TLB控制电路280根据对应条目260中规定的转换情境标识符254与连同存储器存取请求一起接收的用于当前转换情境的转换情境标识符254之间的第一比较,以及由该条目260规定的全局RID 270与当前全局RID之间的第二比较,确定存储器存取是否匹配转换缓存100的给定条目,该当前全局RID与发布存储器存取请求的当前领域相关联。通过提供TLB条目仍从先前验证为允许存取存储器区域的领域存取的额外检查,此确保即使恶意监督过程重新生成具有与由拥有者领域允许存取数据的先前存在过程相同的ASID252或VMID 250的另一过程,因为全局领域标识符270在不经历如关于图18所讨论的领域洗涤命令216的情况下不可重新分配给其他处理器,所以此意味当前领域的全局RID可被信赖为有效的且不可为“假的”,如对于ASID或VMID为可能的。因此,若当前领域的全局RID仍满足由拥有者GRID 270及可见性属性272指示的许可,则此指示先前进行的领域表检查为仍然有效的。
若领域标识符的第二比较检测到不匹配,则即使标签比较及转换情境比较匹配,存取请求也被视为在TLB中未命中,因为其指示在转换情境ID 254与领域ID 270之间的映射中存在变化,因为条目被分配。此未必暗示存取将被拒绝,因为页表及RMU表的另一遍历可由表遍历单元102触发,且若领域检查为成功的,则此可导致TLB 100中的不同条目260的分配及基于来自新分配条目的信息的存储器存取的服务。
图26为示出确定给定存储器存取是否由MMU 26允许的方法的流程图。在步骤300处,存储器存取请求被接收且在TLB 100中查找此存储器存取请求。存储器存取请求至少规定将要存取的虚拟地址、指示当前转换情境的一个或多个转换情境标识符及识别当前领域的全局领域标识符。例如,全局RID可从处理组件8的状态寄存器读取,该状态寄存器可在进入领域时以当前领域的全局RID写入。
响应于存储器存取请求,TLB控制电路280这些TLB的查找。查找存取TLB的至少一些条目。一些方法可使用全关联缓存结构,且在该情况下,至少第1级TLB的所有条目可被搜寻且与当前请求的参数比较,以便识别是否存在命中或未命中。其他方法可使用集合关联缓存分配策略,且在该情况下,仅TLB的给定级的条目的子集可需要被查找,使用存储器存取的目标地址来索引。对于条目的存取集合中的每一者,TLB控制电路280这些多个比较(平行地或顺序地),包括:
·用于比较存储器存取请求的地址是否匹配存储于存取条目中的标签262之标签比较302;
·用于比较存储在存取条目中的转换情境标识符与存储器存取请求的转换情境标识符的第一(情境)比较304;以及
·用于比较存储器存取请求的全局RID与拥有者RID 270及用于条目的存取集合中的每一者的可见性属性272的第二(领域)比较306。
在步骤308处,控制电路280确定在TLB中是否存在针对全部比较302、304、306返回匹配的条目,并且若是,则命中被识别,且在步骤310处,返回在匹配条目中规定的实体地址264且允许存储器存取基于该实体地址来进行。在命中的情况下,不需要执行页表或RMU表的任何查找(用于存储器存取的所有权表查找可被省略)。由页表及RMU表提供的保护仅在未命中时被调用。
若不存在匹配比较302、304、306中的所有三个的条目,则未命中被检测到。若进一步TLB级被提供,则可在第2级或后续级TLB中进行对应查找步骤300-308。若查找在末级TLB中未命中,则进行各种页表及RMU表的遍历。因此,在步骤311处进行级段1页表遍历,且在步骤312处确定级段1页表故障是否已发生(例如因为不存在针对规定虚拟地址定义的地址映射或因为存取请求的当前参数256违反针对目标虚拟地址规定的存取许可)。若级段1故障发生,则在步骤314处,拒绝存储器存取且防止作为对存储器存取的响应的地址映射数据至TLB 100的分配。
另一方面,若存取请求通过级段1页表检查,则在步骤315处,级段2页表遍历被触发以获得用于由级段1过程返回的中间实体地址的映射数据,且在步骤316处,确定级段2页表故障是否已发生(再次,因为地址映射未定义或因为存取未被级段2存取许可允许)。若级段2故障发生,则再次在步骤314处拒绝存取请求。
若无级段2故障发生,则在步骤318处,基于由级段2返回的实体地址触发RMU表查找,且在步骤320处,确定领域故障是否已被检测到。若以下事件中任一者发生,则领域故障可被触发:
·若用于对应存储器区域的生命周期状态在领域所有权表128中被指示为无效的。此确保尚未经历图22中所示的清洁操作224的存储器地址空间的页不可存取,以保护先前由另一领域存储于该存储器区域中的任何数据免于由不同领域存取。
·当前领域未由用于对应存储器区域的拥有者领域允许用于存取该存储器区域。可存在给定领域为何可未被允许以存取给定存储器区域的多个原因。若拥有者领域已规定存储器区域仅对于拥有者自身及该拥有者的后代为可见的,则另一领域可未被允许以存取彼领域。另外,若当前领域为拥有者领域的上代领域且拥有者领域尚未定义上代可见性属性以允许上代存取区域,则存储器存取可被拒绝。另外,若存储器区域当前被设置为如以上所讨论的RMU-私有的,则拥有者领域自身可被防止以免存取该存储器区域。在RMU检查级段,拥有者领域的后代领域可被允许以存取存储器区域(只要存储器区域不是RMU-私有区域)。因此,此检查实施由拥有者领域设置的存取许可。
·若实体地址由S1/S2转换针对当前存储器存取映射的虚拟地址或中间实体地址不匹配在如图19中所示的用于对应存储器区域的所有权表128中规定的映射地址,则存储器存取被拒绝。此保护免于以下情形:恶意上代领域可将给定存储器区域的所有权分配给子代领域,但然后改变页表120中的转换映射,使得由子代领域使用该子代领域先前用来参考由该子代领域拥有的页的相同虚拟地址触发的后续存储器存取现在映射至实际上并非由子代领域自身拥有的不同实体地址。通过在所有权表中提供从对应存储器区域的实体地址回至在所有权被主张时用来产生该实体地址的映射地址的反向映射,此允许由地址映射的变化引起的安全破坏被检测到,使得存储器存取将失败。
将了解,还可进行其他类型的检查。若领域检查为成功的,则在步骤322处返回实体地址,存储器存取被允许使用实体地址进行,且新条目被分配给TLB,该新条目指示从页表120获得的实体地址及对应于所请求虚拟地址及转换情境的从所有权表128获得的拥有者领域及可见性属性。
因此,总之,通过需要第二比较(比较当前领域的GRID与在转换缓存的条目中提供的GRID)匹配以便允许命中在转换缓存查找中被检测到,此确保即使在TLB条目已被分配之后,在与给定领域相关的转换情境标识符中存在变化,此不可用来超过领域保护,即使领域检查未在TLB命中时再次重复。此使的提高性能,如通过使得不必在每个存储器存取时重复领域检查(考虑到将要进行的检查的数目,此举将为相对处理器密集的)。此允许大多数存储器存取较快地进行,因为命中比未命中常见得多。当第二比较识别该条目中规定的领域标识符与当前领域的领域标识符之间的不匹配时,存储器存取与转换缓存的给定条目之间的不匹配被检测到。此随后将触发未命中且此可触发页表及RMU表遍历,以便找到正确的访问控制数据(其中在VMID/ASID已改变的状况下重复领域检查)。
此方法是安全的,因为RMU可防止具有与先前活动领域相同领域标识符的新领域的初始化,直至已执行使与先前活动领域有关的信息无效的洗涤过程之后。此洗涤过程不仅可包括领域管理数据及存储在存储器中的与无效领域相关的任何数据的无效,而且还可包括转换缓存的至少一个条目的无效,对于该至少一个条目,第二比较识别该条目的领域标识符与无效领域的领域标识符之间的匹配。因此,此意味使用与先前过程相同的领域标识符重新产生不同过程是不可能的,除非已使与该领域相关的转换缓存100中的所有数据无效。因此,匹配TLB中的领域标识符可信赖以指示先前进行的领域检查为仍然有效的。具体地,每一领域可与如以上所讨论的生命周期状态相关联且此可用来强调洗涤过程被执行。当用于当前领域的当前生命周期状态为活动时,地址转换数据可仅能够被分配给转换缓存。用于以给定领域标识符初始化新领域的命令可在除清洁状态之外的任何状态中被拒绝,且从活动状态至清洁状态的转换可需要预定命令序列被执行,该预定命令序列包括用于触发洗涤过程的至少一个命令。
转换缓存中的未命中可触发所有权表查找,该所有权表查找存取所有权表,该所有权表针对多个存储器区域中的每一者规定用于对应存储器区域的拥有者领域及由拥有者领域设置来用于控制允许哪些其他领域存取存储器区域的存取约束。通过包括用于确定TLB命中的额外的第二比较,此使所有权表查找能够在查找命中时被省略。在TLB未命中时执行所有权表查找。
虽然图25示出其中拥有者领域的GRID存储在每一TLB条目中的方法,但还可存在表示实现当前领域的GRID是否适合于存取对应存储器区域的确定的信息的其他方式。例如,授权领域的GRID的列表可维持在TLB中,或TLB可维持具有包含至活动领域列表中的索引的TLB条目的活动领域的分离列表,而非完全GRID,这与将列表存储于TLB条目中相比可减小TLB条目大小。然而,简单地表示拥有者领域的GRID可为用以识别授权领域的较有效方式,因为该方式通过在咨询活动领域列表中避免额外间接级而使分配及检查TLB条目的过程不太复杂,且还避免了需要在TLB之间使活动领域列表中的变化同步。
应注意,在查找TLB时执行的第二(GRID)比较中的匹配未必需要当前领域标识符与两个对应TLB条目260中规定的全局领域标识符270完全相同——一些形式的第二比较可使用部分匹配。一些实施方式可仅允许拥有者领域存取该拥有者领域拥有的页,且因此在该情况下,可需要当前GRID与拥有者GRID 270之间的精确匹配。然而,因为数据将在领域之间共享可为有用的,所以可见性属性272还可被提供来允许拥有者领域定义什么存取由其他领域允许。
因此,通过缓存TLB 100中的可见性属性272以及拥有者领域全局RID 270,此使TLB控制电路280能够改变第二比较所需的匹配程度以基于可见性属性确定匹配。例如,可见性属性272可控制GRID的哪些部分应在进行比较时被屏蔽,使得若这些经屏蔽位不匹配也无关紧要,因为这些经屏蔽位不影响比较的整体匹配。例如,在当前领域指示除拥有者领域或拥有者领域的后代领域之外的领域时,控制电路可在一些情况下确定不匹配。后代领域可使用以上所讨论的全局RID格式容易地识别,因为这些后代领域将具有匹配拥有者领域的GRID的前缀或后缀部分。
对于可见性属性的至少一个值,当当前领域为除拥有者领域、拥有者领域的后代领域或拥有者领域的上代领域之外的领域时(例如当上代可见性如以上所讨论被设置时),控制电路可确定不匹配。在一些情况下,可见性属性的至少一个值可允许控制电路280确定用于第二比较的匹配,而不管哪个领域为当前领域(例如若全局可见性位被设置)。因此,虽然一般而言基于领域标识符的第二比较不需要通过,但确切而言何要求将由当前领域的GRID满足可取决于可见性位272。通过构造包括对应于初始化子代领域的上代领域的领域标识符的位部分的子代领域的领域标识符,这使此类部分匹配能够有效地进行。在支持全局领域标识符的不同可变长度位部分至领域的不同世代的可变分配的实施方式中,TLB条目260还可规定识别不同局部RID之间的边界的位置的一些信息,这些不同局部RID被序连连接以形成GRID(以便允许上代领域区别于祖父母代或更早先代领域)。此可使TLB控制电路280能够确定领域标识符的哪些部分将被屏蔽。对于其他实施方式,此可能不是必要的(例如若任何先代被允许以存取存储器区域,针对该存储器区域,拥有者领域已将可见性给予该拥有者领域的上代领域)。另外,一些实施方式可具有固定映射,其中,每一全局领域标识符具有固定数目的位(诸如32-位),且在该情况下,可不必提供任何额外的边界定义数据。
图27为示出在不同异常级处的处理组件8可存取的架构状态的实例的维恩(Venn)图。图27示出了基于由
Figure BDA0002327672990000471
Limited(Cambridge,UK)提供的
Figure BDA0002327672990000472
架构的实例,但其他实施方式可基于其他架构,这些其他架构可具有与给定过程相关的不同状态。另外,图27仅示出了出于简洁性用作实例的在每一异常级处可存取的状态的子集,但将了解,其他寄存器还可为可存取的,这些其他寄存器在图27中未示出。
当在异常级EL0处操作时,处理组件8可以存取标记为350的架构状态的子集,例如包括以下:
·通用寄存器,包括整数寄存器、浮点寄存器和/或向量寄存器,用于在数据处理操作期间存储通用数据值。
·程序计数器(PC)寄存器,其存储表示正执行的程序内的当前执行点的程序指令地址。
·保存处理器状态寄存器(SPSR_EL0),用于在从在异常级EL0处执行的过程取得异常时存储关于处理器的当前状态的信息。SPSR可包括关于当前处理器状态的信息,例如表示异常发生时的当前处理器模式的值PSTATE。处理器模式可规定异常级以及其他信息,诸如哪个指令集正在执行。另外,SPSR寄存器可包括用来控制领域进入的领域进入标志R,如以下将讨论。
·异常链接寄存器ELR_EL0,用于当取得异常时存储当前程序计数器值,使得ELR提供返回地址,一旦异常已经处置,处理应分支至返回地址。
·领域标识符寄存器RID_EL0,其用来存储对其做出领域进入的子代领域的局部RID(即使异常级EL0为最低、最少特权异常级,利用如以下所讨论的创建子领域的能力,仍可从在异常级EL0处操作的过程进入领域)。
·异常状态寄存器(ESR),其由EL0用来存储关于发生的异常的信息(例如以允许适当异常处置器的选择)。当处理器8正在异常级EL1处操作时,其可以存取状态子集352,该状态子集包括在异常级EL0处可存取的状态350的全部,但还包括额外架构状态。例如,在EL1处,存在SPSR、ELR、ESR及RID寄存器的成组版本,这些成组版本由在EL1处操作的过程用于与此等寄存器的EL0版本对应的目的。SPSR_EL1寄存器可在除PSTATE及R值之外还包括中间领域标志Int,该中间领域标志系在嵌套领域进入及退出期间使用,如以下将讨论。尽管图27示出了其中中间领域标志存储在SPSR中的实例,但此并非必要的,且其他实例可将标志存储在不同寄存器中。在EL1处可为可存取但在EL0处为不可存取的状态的另一实例可为转换表基底寄存器TTBR_EL1,其提供指示由MMU在页表遍历期间使用的级段1页表120-1的基地址的地址。
类似地,当在异常级EL2处执行指令时,处理组件8可以存取状态子集354,该状态子集包括在EL1处可存取的所有状态352,但还包括额外状态,诸如用于EL2的SPSR、ELR及RID寄存器的进一步成组版本及虚拟转换表基底寄存器VTTBR_EL2,该虚拟转换表基底寄存器提供级段2转换表120-2的基地址。
最后,当在EL3处操作时,处理组件可以存取状态子集356,该状态子集包括在EL2处可存取的子集354的全部,但还可包括其他状态,例如,由在异常级EL3处操作的过程用来进入领域的进一步的领域标识符寄存器RID_EL3,及类似于用于较低异常级的对应寄存器的进一步的异常处置寄存器ELR、SPSR、ESR。另外,图27仅为实例且其他状态还可包括在特别异常级可存取的关联子集中。
因此,每一异常级与处理电路在该异常级处处理软件过程时可存取的寄存器的对应群组相关。对于除最少特权异常级之外的给定异常级,在给定异常级处可存取的寄存器的群组包括在相较于给定异常级的较少特权异常级处可存取的寄存器的群组。特定级可存取的该状态层级可被利用来降低与领域进入及退出时的状态保存及恢复相关的管理负担,如以下将讨论。
在进入领域或从领域退出时,处理组件8和/或RMU 20可需要进行用于确保领域进入或退出的安全处置的多个操作。例如,在进入领域时,多个检查可需要执行来检查目标领域处于正确生命周期状态中(以避免由试图进入不存在的领域或例如尚未经历数据从其拥有的页的洗涤的领域超过安全措施)。另外,在退出领域时,可期望屏蔽存储在处理组件的寄存器中的架构状态,使得较高特权级过程不可存取由较低特权级处的领域使用的状态数据(此否则将使由领域保护提供的安全措施被超过)。用于处置领域进入及退出的一个方法可提供专用领域进入或领域退出指令,该专用领域进入或领域退出指令触发RMU 20以进行用于进入或退出领域的关联操作。然而,此可需要现有软件的显著修改以便使用新指令。
在以下描述的技术中,领域机构重新使用已为异常进入及返回提供的机构以便进入领域和从领域退出。此降低了支持领域进入及退出所需的软件修改的量,并简化了架构及硬件。这是尤其有用的,因为通常领域边界可无论如何对应于异常级边界,且即使新指令被提供来控制进入及退出,将仍然需要用于处置异常的行为,因此总体而言,扩展异常机构以便还控制进入和退出可为较不昂贵的。
因此,将正常地使处理从在当前领域中处理的异常返回至还在当前领域中处理的另一过程(其中该另一过程可在相较于异常的相同异常级或较少特权异常级处被处置)的异常返回(ERET)指令可被重新使用来触发自从当前领域至目的地领域的领域进入。响应于异常返回指令的第一变体,处理电路可将处理从当前异常级切换至较少特权异常级(在不改变领域的情况下),而响应于异常返回指令的第二变体,处理电路可将处理从当前领域切换至目的地领域,该目的地领域可在与当前领域相同的异常级或降低(较少特权)异常级处操作。使用异常返回指令来触发领域进入可大大地简化架构及硬件管理负担并且降低支持领域的使用的软件修改要求。
使用异常返回指令的另一优点在于,通常在从异常返回时,处理电路可响应于异常返回指令而执行操作的原子集合。在从异常返回时需要的操作的集合可被原子地执行,使得这些操作不可在中途划分,并且因此指令失败和操作的原子集合中无一者被执行,或指令被成功地执行合操作的原子集合中的全部被执行。对于异常返回指令的第二变体,处理电路可类似地执行第二操作的原子集合,该第二操作的原子集合可不同于第一操作的原子集合。已提供在处理器中以用于确保异常返回指令原子地完成的机构可被重新使用于领域进入,以便避免领域进入可仅部分地执行的可导致安全弱点的情形。例如,第二操作的原子集合可包括使领域执行情境状态为可利用的、改变正执行的当前领域,及控制分支至在相同领域最后一次执行时处理先前经执行所在的程序计数器地址。
异常返回指令的第一变体及第二变体可具有相同指令编码。因此无异常返回指令自身的修改为必要的,以便触发领域进入。此提高了与旧有代码的兼容性。给定异常返回指令被执行为第一变体或第二变体可取决于该给定异常返回指令存储在状态寄存器中的控制值(例如控制值的第一值及第二值可分别表示异常返回指令的第一变体及第二变体)。因此,在异常返回指令被执行时的当前架构状态控制该异常返回指令将处理器返回至相同领域中的较低特权级,或触发至新领域的进入。
此方法使领域进入能够以较少软件修改加以控制,尤其在状态寄存器中的值可响应于暗示领域切换为可能的某些事件而由硬件自动地设置时(除允许响应于软件指令的控制值的自愿设置之外)。例如,当触发至给定领域的退出的异常条件发生时,处理电路可将控制值设置为用于给定领域的第二值,使得后续异常返回指令将自动地使处理返回至异常发生所在的领域,即使考虑到用于处置异常的异常处置器代码与未以领域写入的先前旧有代码相同。替代地,在一些架构中可预期,当从领域退出时,状态寄存器中的控制值将仍包含在触发至该领域的领域进入之前设置的第二值,且因此可不需要状态寄存器中的控制值的显式设置。
在一个实例中,状态寄存器中的控制值可为与当前异常级相关的SPSR寄存器中的R标志,如以上所讨论。使用SPSR可为有用的,因为此寄存器将在异常返回时正常地使用来提供处理器模式(包括异常级)及关于处理在从当前正处理的异常返回时应如何继续的其他信息。然而,对于领域进入,此信息可反而根据领域执行情境(REC)来确定,且因此可不需要SPSR。通过将SPSR的部分重新使用于存储控制异常返回指令被视为第一变体还第二变体的R标志,这避免了对提供用于存储此信息的附加寄存器的需要。因此,使用状态寄存器可为有用的,该状态寄存器响应于ERET指令的第一变体用来确定用于继续在较少特权异常级处的异常的返回状态信息(诸如处理模式),但响应于异常返回指令的第二变体,此返回状态信息将反而根据存储器来确定,使得不需要存取状态寄存器自身。具体地,用于存储控制值的状态寄存器可为与当前异常级相关联的状态寄存器,异常返回指令是从该当前异常级执行的。
如图27中所示,可提供至少一个领域标识符寄存器,且响应于异常返回指令的第二变体,处理电路可从存储在领域标识符寄存器中的领域标识符识别目的地领域。领域标识符寄存器可为成组的,使得存在各自与异常级中一者相关联的多个领域标识符寄存器,且响应于异常返回指令的第二变体,处理电路可从存储在与当前异常级相关联的领域标识符寄存器中的领域标识符识别目的地领域。通过使用领域标识符寄存器来存储目标领域标识符,不需要将此包括在ERET指令的指令编码中,这使得ERET指令的现有格式能够用来触发领域进入,从而降低所需要的软件修改的量。领域标识符寄存器中的领域标识符可为由上代领域用来参考该上代领域的子代领域的局部领域标识符,且因此领域进入可限制于从上代领域传送至子代领域,且不可能从第一领域去往并非第一领域的直接子代的另一领域。响应于异常返回指令的第二变体,当与在RID寄存器中识别的领域ID相关联的领域为无效领域(无领域描述符已被定义或领域描述符定义除活动以外的生命周期状态的RID)时,处理电路可触发故障条件。
响应于异常返回指令的第二变体,处理电路可从针对异常返回指令规定的领域执行情境(REC)存储器区域恢复与将要在目的地领域中处理的线程相关联的架构状态。状态恢复可响应于异常返回指令的第二变体而立即进行(例如作为操作的原子集合的一部分),或可稍后进行。例如,状态恢复可以迟缓方式进行,使得需要在目的地领域中开始处理的状态可被立刻恢复(例如程序计数器、处理模式信息等),但其他状态诸如通用寄存器可在稍后时间需要时,或在新领域的持续处理的背景中逐渐地恢复。因此,处理电路可在所有需要的架构状态已从REC存储器区域恢复之前开始目的地领域的处理。
响应于异常返回指令的第一变体,处理电路可分支至存储在链接寄存器中的程序指令地址。例如,此可为图27的ELR,该ELR对应于异常返回指令被执行的当前异常级。相反,对于异常返回指令的第二变体,处理电路可分支至在领域执行情境(REC)存储器区域中规定的程序指令地址。因此,因为链接寄存器将不被用于异常返回指令的第二变体以直接识别用于新领域的任何架构状态,所以链接寄存器可被重新使用来替代地提供指向REC存储器区域的指针,新领域的架构状态将从该REC存储器区域恢复。此避免了对提供进一步的寄存器以用于存储REC指针的需要。
因此,在执行试图引起至给定领域的领域进入的异常返回指令之前,一些额外指令可被包括以便将RID寄存器设置为目的地领域的领域标识符且设置链接寄存器以存储与目的地领域相关联的REC存储器区域的指针。REC指标可由上代领域从目的地领域的领域描述符获得。
响应于异常返回指令的第二变体,当REC存储器区域与除目的地领域之外的拥有者领域相关联或针对异常返回指令规定的REC存储器区域为无效的时,故障条件可由处理电路触发。第一检查防止上代领域诱使子代领域用该子代领域并未自身创建的处理器状态进行执行,因为仅由子代领域拥有的存储器区域可存储在进入该领域时可存取的REC存储器区域(且如以上所讨论,REC存储器区域将被设置为RMU私有的)。REC存储器区域的有效性的第二检查可用于确保REC存储器区域可仅使用一次以进入领域,且之后用相同REC数据进入领域的后续尝试将经拒绝。例如,每一REC可具有可为无效或有效的生命周期状态。响应于在当前领域中的给定线程的处理期间发生的异常,该线程的架构状态可被保存至对应REC存储器区域,且该对应REC存储器区域随后可从无效转换至有效。响应于异常返回指令的第二变体的成功执行,REC存储器区域随后可从有效转换回至无效。此通过规定过时REC存储器区域的指针、与不同线程相关联的REC存储器区域,或与目的地领域相关联但并非在处领域的先前退出时用来存储架构状态的正确REC的一些其他REC,避免了上代领域恶意地使子代领域不正确地表现。
以对应方式,从领域的退出可重新使用被提供用于异常处置的机构。因此,响应于在第一领域的处理期间发生的不能由第一领域处置的异常条件,处理电路可触发至上代领域的领域退出,该上代领域初始化第一领域。在异常发生/领域退出时,可执行将对于可在相同领域内处置的异常发生不被执行的一些额外操作。例如,此可包括架构状态的屏蔽或洗涤及至REC的状态存储的触发,如以下将更详细地讨论。
然而,在一些情况下,异常可发生,该异常不可由异常发生所在的第一领域的上代领域处置。因此,在此状况下,可能必需切换至越过上代的进一步的先代领域。尽管提供直接从给定领域切换至年长超过一个世代的先代领域的能力可以是可能的,但这可能增加处置异常进入及返回或领域退出及进入所需的状态寄存器的复杂性。
替代地,当异常条件将在具有相较于第一领域的上代领域被允许执行的最多特权异常级的较大特权级的目标异常级处被处理时,可执行嵌套领域退出。嵌套领域退出可包括从子代领域至上代领域的二个或更多个相继领域退出,直至到达第二领域,该第二领域被允许在发生的异常的目标异常级处被处理。因此,通过一次一级地提升领域层级,此可简化架构。在每一相继领域退出处,可存在被执行以将处理器状态的子集保存至与对应领域相关联的REC的操作。
当异常已经处置时,随后响应于在嵌套领域退出之后于第二领域中执行的第二变体的异常返回指令,处理电路可然后触发嵌套领域进入以返回至第一领域。此可以不同方式处置。在一些实例中,硬件可自身触发嵌套领域进入而不需要任何指令在嵌套领域退出期间于第一领域与第二领域之间遭遇的任何中间领域处被执行。替代地,可通过提供嵌套领域进入过程来简化硬件,该嵌套领域进入过程一次一级地向后返回至在嵌套领域退出中遭遇的每一相继领域且在每一中间领域处执行第二变体的进一步的ERET指令。在该情况下,为确保中间领域触发至在嵌套领域退出期间做出至中间领域的领域退出的中间领域的子代领域的返回,异常状态寄存器可被设置以指示预定类型的异常条件发生在子代领域中。例如,新类型的异常条件(例如“伪造领域退出”)可被定义来处置此中间领域情况。因此,当到达中间领域时,处理器随后可从程序指令地址恢复中间领域内的处理,该程序指令地址对应于用于处置预定类型的异常条件的异常处置例程。此异常处置例程可例如简单地确定子代领域出于一些未知原因退出且随后可选择以执行第二变体的另一异常返回指令以使处理返回至进一步子代领域。由在每一中间领域处执行该操作,最终,发生原始异常的原始第一领域可恢复处理。
在此嵌套领域进入及退出程序期间,状态寄存器内的中间领域标志可用来标志哪些领域为中间领域,以触发至有关子代领域的硬件触发的立即领域进入或触发异常状态信息的设置,该异常状态信息随后将触发异常处置器或中间领域内的其他代码以返回至子代领域。例如,中间领域标志可为如图27中所讨论的关联SPSR中的Int标志。
图28为示出处置领域进入或异常返回的方法的流程图。在步骤400处,在当前异常级为ELx时,执行异常返回(ERET)指令。ELx可为由处理电路支持的异常级中的任一者。尽管技术人员可能不期望从最少特权异常级EL0发生异常返回,但如以下将讨论的创建子领域的能力意味仍可存在从EL0执行的ERET指令,以便触发还在EL0处执行的至子领域的进行。另外,一些类型的异常可能够在与异常发生所在的级相同的异常级处被处置,在该状况下,异常返回仍可从EL0发生。
在步骤402处,处理组件确定与异常级ELx相关联的SPSR中的领域标志R的当前值。若领域标志R为零,则此指示传统异常返回,而不进入不同领域。在步骤404处,处理组件8基于SPSR_ELx内的PSTATE值确定用以在异常返回之后进行操作的目标异常级,且确定程序计数器值以从链接寄存器ELR_ELx分支。新目标异常级及程序计数器值以及与在异常之后返回处理相关联的任何其他返回状态被恢复至与目标异常级(该目标异常级将通常为相较于异常级ELx的较少特权的较低异常级,但还可为相同异常级ELx)相关联的关联架构状态寄存器。此类返回状态操作被原子地执行。在步骤406处,处理随后在目标异常级处恢复,但停留在与执行ERET指令的领域相同的领域内。
若在步骤402处,领域标志R被设置为1,则此指示领域进入,且因此这触发不同于针对传统异常返回执行的集合的第二操作的原子集合。在步骤408处,处理组件触发领域管理单元以实施多个领域检查。这些包括检查:
·在与异常级ELx相关联的领域标识符寄存器RID_ELx中指示的局部RID指示有效子代领域。也就是说,RMU检查从用于规定子代领域的领域描述符树360存取的领域描述符,且检查子代领域的领域描述符的生命周期状态是否指示活动状态。若子代领域处于除活动状态之外的任何状态,则领域检查为不成功的。
·RMU 20还检查由链接寄存器ELR_ELx中的指针指示的REC存储器区域为由在领域ID寄存器RID_ELx中指示的子代领域拥有的存储器区域。也就是说,RMU 20存取领域区组表128(或来自RGT 128的缓存信息),定位对应于在REC指针中指示的存储器区域的关联条目,且检查针对该存储器区域规定的拥有者领域。在所有权表中指示的拥有者领域可被规定为全局RID,且此可与在目标子代领域的领域描述符中规定的全局RID比较,以确定子代领域是否为REC的有效拥有者。若REC由除RID寄存器中的规定子代领域之外的任何领域拥有,则此检查为不成功的。
·RMU 20还检查在ELR_ELx中定义的REC存储器区域的状态是否为有效的。存在可表示REC存储器区域的有效性的不同方式。例如,每一REC存储器区域可包括规定该REC存储器区域是否为有效的标志。替代地,分离表可定义存储在其他存储器区域中的REC的有效性。若REC已用来在先前异常退出时存储关联领域的架构状态,但尚未用来在从异常返回之后恢复状态,则该REC可为有效的。若REC为无效的,则领域检查再次为不成功的。
·RMU 20还检查从除在RID寄存器RID_ELx中指示的子代领域之外的任何子代领域的最后退出之后,清空命令是否已被执行。清空命令将在以下更详细地讨论,但为用于确保仍然将要保存至子代领域的REC的任何状态被推送至存储器(此帮助支持迟缓状态保存方法)的命令。若无清空命令已被执行且系统试图进入相比于先前退出的子代领域的不同子代领域,则有可仍存在留在处理器寄存器内的尚未推送至存储器的状态的危险。实施对清空命令的使用确保可在无先前子代领域的状态的损失(或泄漏至其他领域)的情况下安全地进入不同子代领域。可存在识别清空命令是否已被执行的多个方式。例如,一些状态标志可用来跟踪(a)从最后领域退出之后是否已存在对RID寄存器RID_ELx的变化,及(b)从最后领域退出之后清空命令是否已经执行。若存在对RID寄存器的变化且从先前领域退出之后无清空命令已经执行,则此可使领域检查为不成功的。
若领域检查中任一者为不成功的,则在步骤409处触发故障,且系统停留在与ERET指令相关联的当前领域内。因此,不可能到达子代领域,除非领域检查中全部为成功的。
若领域检查中全部为成功的,则在步骤410处,处理组件切换至在领域ID寄存器RID_ELx中指示的子代领域中的处理。例如,处理器可具有规定当前领域的全局RID的内部寄存器(此内部寄存器可不是软件可见的且不同于图27中所示的成组RID寄存器)。至子代领域的切换可通过将新目的地领域的全局RID写入内部RID寄存器发生。
在步骤412处,基于保存在由ELR_ELx寄存器中的指针指示的REC存储器区域中的存储器中的状态使与新领域相关联的状态为可利用的。因为REC区域由新子代领域拥有,所以该REC区域现在为可存取的,且因此可从REC获得返回状态信息,例如,程序计数器及目标异常级。此时,架构状态的选定的子集可从REC恢复,或替代地,架构状态可被迟缓地恢复,使得处理可在没有完全恢复所有状态的情况下开始,且随后状态可在需要时或在时间周期内逐渐地恢复,以便通过在处理可从新领域恢复之前降低延迟来提高性能。
在步骤414处,确定中间领域标志Int是否在与新领域相关联的SPSR中被设置。SPSR内容将连同其余架构状态一起从REC恢复。若中间领域标志未被设置,则此指示新领域为原始异常发生所在的领域(或领域正第一次被进入而无任何先前异常发生在该领域中),且因此不需要触发至子代领域中的任何进一步的领域进入。在步骤416处,从REC获得程序计数器,且随后在步骤418处,处理在从REC获得的目标异常级处的新领域中继续。
替代地,若中间领域标志被设置,则此指示嵌套领域退出先前已发生,且嵌套领域进入已到达中间领域。因此,需要使处理返回至进一步的子代领域,以便返回至最初发生异常的领域。存在用于处置此情况的两个替代性技术。在第一替代方案中,在步骤420处,采取伪造领域退出异常,且因此与新领域相关联的异常状态寄存器可由处理组件设置为与此类型的异常相关联的状态代码,且随后处理分支至与该类型的异常相关联的异常向量,该异常向量触发将要处理的异常处置器。异常处置器不必进行任何实际处理,但可简单地确定未知类型的异常发生在给定子代领域中且因此随后可触发另一ERET指令以在步骤422处执行。当中间领域先前进入进一步的子代领域时,与中间领域相关联的RID及ELR寄存器仍可具有放置在这些寄存器中的值,且因此ERET指令执行随后可触发至进一步的子代领域的进一步的领域进入。方法可返回至步骤408以检查领域检查对于该进一步的领域进入是否为成功的,且随后方法以与嵌套过程中的先前领域进入类似的方式继续。
替代地,代替使用在中间领域中执行的另一ERET指令处置嵌套领域进入,在步骤424处,硬件可检测到中间领域标志针对当前领域被设置,且随后可触发至子代领域的进一步的领域进入,而不需要在中间领域内执行任何指令,且随后方法可然后返回至步骤408。
图29示出了图示从领域退出或采取异常的方法的流程图。在步骤430处,异常发生在给定异常级ELx内,该给定异常级以异常级ELy为目标(ELy≥ELx)。目标异常级ELy为异常将被处置的异常级。目标异常级可与ELx相同,比ELx高出仅一个异常级,或可高出多个异常级。
在步骤432处,RMU确定目标异常级ELy是否大于可从当前领域的领域描述符读取的当前领域的边界异常级(BEL),及当前领域是否为子领域(参见以下子领域的讨论——图16中所示的领域描述符的类型字段规定领域是否为子领域)。若目标异常级ELy不大于边界异常级,则此指示异常可在当前领域内处置,且因此若当前领域为完全领域,则不需要触发领域退出。在该情况下,在步骤434处,处理组件将当前异常级切换至ELy(例如由更新当前状态寄存器),或若ELx=ELy,则当前异常级保持相同(无论怎样,当前异常级现在为ELy)。在步骤436处,与异常级ELx相关联的当前处理状态被保存至目标异常级ELy可存取的寄存器。例如,程序计数器可被保存至链接寄存器ELR_ELy,且发生异常的先前异常级ELx可在SPSR_ELy中的PSTATE值中指示。另外,SPSR_ELy寄存器中的领域标志R可被设置为0以指示异常来自相同领域内,且因此任何后续异常返回不需要触发领域进入。关于发生的异常类型的数据还可被保存至异常状态寄存器ESR_ELy。在步骤438处,处理组件分支至与规定异常类型相关联的异常向量,且随后处理继续以便处置异常。最终,当异常处置完成时,ERET指令将被执行以触发至先前处理的返回,如以上针对图28所讨论。
另一方面,若在步骤432处,目标异常级ELy大于当前领域的BEL,或若当前领域为子领域(对于该子领域,任何异常触发至子领域的上代领域的退出),则需要领域退出以便处置异常。在步骤440处,确定异常是否对应于自愿领域退出。一些类型的异常可由非预期事件触发,诸如用户按压处理装置上的按钮,一些故障发生。然而,还可能的是领域自愿地撤回处理且返回至上代领域。例如,子代领域可已到达一些处理程序的终点,或可需要调用在较高异常级处的一些功能。当子代领域故意地退出至上代领域并随后允许子代领域与上代领域共享数据时,可为有用的是允许子代领域的一些架构状态别保持以用于来自上代领域的存取,使得与非自愿领域退出相比,较少状态被屏蔽且洗涤。例如,通用寄存器可未经屏蔽且洗涤,但其他控制寄存器仍可经屏蔽且洗涤。此避免了对数据被存储至全局可见性存储器区域的需要,因为随后可直接从寄存器存取状态,从而提升性能。也就是说,对于自愿领域退出,子代领域控制领域退出且因此可假设子代领域已覆写对于上代领域不应可存取的可见架构状态,且留下该子代领域想要与寄存器中的上代领域共享的任何状态。自愿领域退出可例如由对应于特别类型的异常(针对其不执行屏蔽或洗涤)的异常触发指令的预定变体触发。
若领域退出并非自愿领域退出,则在步骤442处,执行架构状态的选定的子集的屏蔽。屏蔽确保使将要隐藏的架构状态为上代领域不可存取的。然而,上代领域仍可试图存取存储该架构状态的寄存器,且因此可进行洗涤操作,该洗涤操作确保对洗涤后架构寄存器的任何后续存取将返回预定值,而不管何值实际上存储在与该架构寄存器相关联的实体寄存器中。也就是说,当针对存储架构状态的被屏蔽子集的一部分的给定架构寄存器进行寄存器洗涤操作时,此确保若对给定架构寄存器的后续读取存取由处理电路在无介于领域切换与后续读取存取之间的对该架构寄存器的任何介入写入存取的情况下进行,则对给定架构寄存器的后续读取存取将返回预定值(例如零)。寄存器洗涤操作可以不同方式执行。例如,对应于给定架构寄存器的实体寄存器可被设置为预定值(例如,此零的值可实际上被写入至实体寄存器)。替代地,寄存器洗涤可通过寄存器重新命名执行,使得给定架构寄存器从第一实体寄存器重新映射至第二实体寄存器。另一方法可设置与给定架构寄存器或映射至给定架构寄存器的实体寄存器相关联的状态值,以指示对给定架构寄存器的读取存取应返回预定值。使用该后两个方法,可以将屏蔽架构状态保持在处理组件的实体寄存器档案内,即使该屏蔽架构状态不是从新领域可存取的,且对该状态的任何存取将返回预定值。此对于支持如以下讨论的迟缓状态保存为有用的。一旦已执行屏蔽及洗涤操作,在步骤444处,处理组件触发架构状态的被屏蔽子集至与发生异常的当前领域相关联的REC存储器区域的保存。此保存可立即进行,或可迟缓地进行,与上代领域中的后续处理重叠。采取哪种方法可取决于架构的特定实施方式且因此并非架构的必要特征。然而,迟缓状态保存可提升性能。
若领域退出为自愿领域退出,则在步骤443处,除针对非自愿领域退出将屏蔽/洗涤的状态中的至少一些不需要针对自愿领域退出被屏蔽/洗涤之外,以与在步骤442处相同的方式屏蔽且洗涤架构状态的缩减子集。例如,架构状态的缩减子集可排除通用寄存器。在步骤443之后,方法继续到如以上针对非自愿领域退出所讨论的步骤444。
不管领域退出为自愿的还是非自愿的,在步骤446处,处理组件切换至上代领域。因为与子代领域异常级相关联且由上代领域异常级控制的RID_ELx及ELR_ELx寄存器将仍被设置为先前退出的子代领域的RID及REC指针(因为这些在ERET指令被执行以第一次进入子代领域之前已经设置),所以不需要调整此状态,且因此任何后续ERET指令将返回与先前相同的子代领域。若上代领域希望从最后退出的子代领域切换至不同子代领域,则仅需要更新这些寄存器。类似地,上代领域的SPSR中的领域标志R仍可在先前领域进入之后被设置为1,且因此可保持此值,使得ERET指令随后被经视为至新领域的进入,除非R标志由在上代领域中执行的指令清除至0。
在步骤448处,RMU确定目标异常级ELy是否大于新上代领域的BEL,处理已切换至该新上代领域。若否,则此指示可在上代领域中采取异常,且在步骤450处,处理组件8分支至适合于处置发生的异常类型的对应异常处置器。若目标异常级高于上代领域的BEL,则需要嵌套领域退出以便分支至进一步的先代领域,且因此在步骤452处,与上代领域相关联的中间领域标志在SPSR中被设置为1,且随后方法返回至步骤442以触发与该领域相关的架构状态的屏蔽及洗涤(此时,领域退出并非自愿领域退出,因为该领域退出已在上代领域的控制之外被触发)。方法随后可再次循环以屏蔽或洗涤与当前领域相关联的任何适当状态且随后切换至该领域的上代领域。嵌套领域退出可循环多个次,直至最终到达可处置异常的领域。
在步骤412、442、444处,被屏蔽、洗涤且在从领域退出时被保存,且在至领域的进入时被恢复的架构状态的子集可取决于退出/进入的领域的边界异常级。对于非嵌套领域退出及进入,选定的子集可包括发生异常的异常级可存取的架构状态的子集,如在例如图27中所指示。因此,每一异常级与寄存器的群组相关联,且响应于在将由异常处置器在相较于给定领域的边界异常级的较多特权异常级处处置的给定领域的处理期间发生的领域退出异常条件,寄存器子集可根据给定领域的边界异常级来选择,且可包括处理电路在该异常级处处理软件过程时可存取的这些寄存器。若异常发生在EL1或更高处,则此可包括该异常级以及用于非嵌套领域退出的任何较低异常级可存取的全部寄存器。类似地,在返回至领域时,然后架构状态的对应子集可被恢复。
然而,对于嵌套领域退出,可假设对于中间领域,在相较于中间领域的边界异常级的较低异常级处可存取的任何寄存器将已由在较低异常级处的子代领域修改,因为中间领域触发至子代领域的进入。因此,在嵌套领域退出期间可不需要将在较低异常级处可存取的此类寄存器保存至与中间领域相关联的REC(从先前进入子代领域之后无中间领域处的进一步的执行发生)。相反地,在嵌套领域进入期间,不需要在通过中间领域期间恢复在较低级处可存取的这些寄存器,因为这些寄存器随后将由在较低异常级处的领域恢复。替代地,中间领域状态保存及恢复可简单地包括中间领域的边界异常级可存取但在较低异常级处不可存取的寄存器。例如,在EL1处的中间领域,在嵌套领域退出/进入中保存/恢复的状态可包括图27中的子集352但可排除在EL0处可存取的子集350。若中间领域在EL2处,则在嵌套领域退出/进入期间的状态的保存/恢复子集可包括在EL2处可存取的子集354但排除在EL1处可存取的子集352。使用此方法,可降低在通过中间领域时需要的状态保存及恢复的量以提升性能。
因此,当异常条件将由异常处置器在比发生异常的给定领域的上代领域的边界异常级更具特权的目标异常级处处理时,嵌套领域退出可被触发,该嵌套领域退出包括从子代领域至上代领域的多个相继领域退出,直至到达具有对应于目标异常级或更高的边界异常级的目标领域。可针对相继领域退出中的每一者触发相应的状态屏蔽过程(及状态保存),且每一相应的状态屏蔽过程可屏蔽(且保存)基于边界异常级选择的对应寄存器子集。对于从具有除最少特权异常级之外的边界异常级的给定子代领域的领域退出,在嵌套领域退出期间屏蔽/保存的对应寄存器子集可包括在给定子代领域的边界异常级处可存取的至少一个寄存器,但可排除在相较于给定子代领域的边界异常级的较少特权异常级处的处理电路可存取的至少一个寄存器(因为可假设当退出在该较少特权异常级处的领域时,此类寄存器将已经保存)。此减少了状态屏蔽及保存所需的操作的量。
类似地,在领域进入(异常返回)时,中间领域标志可用来确定进入的领域是否为中间领域。若用于具有除最少特权异常级之外的边界异常级的领域的中间领域状态值被设置为预定值(指示中间领域),则在领域进入时要恢复的寄存器子集可包括在中间领域的边界异常级处可存取的至少一个寄存器,但可排除在相较于特别领域的边界异常级的较少特权异常级处的处理电路可存取的至少一个寄存器。若中间状态值被设置为除预定值之外的值,则正进入的此领域为最后领域且因此存取的将要恢复的寄存器子集可包括在特别领域的边界异常级处的处理电路可存取的所有寄存器(而不从较低级排除任何寄存器)。
以此方式,可更有效地进行在嵌套领域退出及进入期间的状态保存及恢复操作。
图30示出了非嵌套领域进入及退出的实例。在此实例中,上代领域为在异常级EL1处操作的A且该上代领域希望进入具有EL0的BEL的子代领域B。明显地,可在其他异常级处进行类似领域进入及退出程序。在步骤460处,上代领域将领域标识符寄存器RID_EL1设置为子代领域B的局部领域ID。局部RID具有通过序连连接如以上所讨论的树索引获得的格式。在步骤462处,EL1处的上代领域将链接寄存器ELR_EL1设置为提供指向领域B的领域执行情境的指针的地址。上代领域从所要的子代领域B的领域描述符获得此指标。在步骤464处,上代领域将SPSR_EL1中的领域标志R设置为1。在步骤466处,上代领域随后执行ERET指令,该ERET指令在领域标志被设置为1时被解译为触发领域进入。执行用于图28的步骤408的以上所描述的各种领域检查,且若这些领域检查为成功的,则执行领域进入以切换至领域B。在步骤468处,从在链接寄存器中指示的REC恢复状态。此状态包括新领域将在其中执行的目标异常级。应注意,在REC被存取时,处理器仍处于与领域A相关联的先前异常级中且因此这是链接寄存器ELR_EL1为何仍为可存取的,以获得REC指标,即使已做出至领域B的切换且最终该领域将从EL0恢复处理。状态恢复可立即进行或可与领域B的规则处理470平行地在时间周期内推迟地进行。
当异常在子代领域B的执行期间发生在步骤472处时,然后执行屏蔽操作的集合以将与领域B相关联的状态从该领域的上代领域隐藏。此包括在步骤474处的与EL0相关联的架构状态的至少一子集的屏蔽及洗涤(被屏蔽/洗涤的架构状态的子集可取决于退出为自愿或非自愿领域退出)。屏蔽使状态不可存取且洗涤确保来自上代领域的对对应寄存器的后续存取将触发预定值将被返回。在步骤476处,针对架构状态的被屏蔽子集执行至与领域B相关联的REC的状态保存。在该情况下,因为子代领域具有EL0的BEL,所以状态的被屏蔽子集至少包括在EL0处可存取的子集350。另外,状态保存可被立即触发,或可与具有上代领域处的异常的持续处理平行地以迟缓方式进行。在步骤478处,领域退出然后被触发以切换至上代领域A,且在步骤480处,在上代领域内实施异常的处理。图30的步骤474及476对于自愿领域退出可被省略。
图31示出了类似实例,该类似实例示出了嵌套领域进入及退出。在异常级EL2处的祖父母领域A在步骤500处执行ERET指令,从而已设置链接寄存器以指向所期望的子代领域的REC,将领域ID寄存器RID_EL2设置为子代领域的局部RID,且在SPSR_EL2中将R标志设置为1。此触发在步骤502处的至领域B的领域进入,且此触发在步骤504处的状态将从领域B的REC被恢复,这同样可被立即或迟缓地执行。最终,领域B然后在步骤506处执行进一步的ERET指令,再次设置链接寄存器、RID寄存器及R标志,以触发在步骤508处的进一步的领域进入。应注意,步骤502及508处的领域进入可如图28中所示地执行,且因此步骤(诸如领域检查)仍被执行,但出于简洁性在图31中未示出。在至领域C的进入之后,然后在步骤510处从该领域C的REC恢复领域C的架构状态,且在步骤512处,处理在领域C内恢复。
随后,异常在步骤514处发生。异常以异常级EL2为目标。例如,异常可为将由管理器处置的异常类型(诸如与虚拟化装置相关联的事件或级段2地址转换故障)。在步骤516处,状态屏蔽过程包括任何洗涤及状态保存以与图30中所示的类似方式被触发,且在步骤518处执行至领域B的领域退出,该领域B为发生异常的领域C的上代领域。
在步骤520处,处理组件检测到用于发生的异常的目标异常级高于领域B的边界异常级,且因此领域B为中间领域且需要至领域B的上代领域的进一步领的域退出。因此,在步骤522处,在SPSR_EL1内设置中间领域标志,且在步骤524处,执行寄存器子集的进一步的状态屏蔽、洗涤及保存。另外,若对应状态可以在至领域A的领域退出之后为处理器不可存取的一些方式保持在寄存器的过程中,则此过程的保存部分可被推迟。针对此中间领域保存的寄存器子集包括在EL1处可存取的寄存器352但排除在EL0处可存取的寄存器350。不需要保存寄存器350子集,因为领域B从步骤508处的先前领域进入之后尚未执行任何指令来改变这些寄存器,且这些寄存器已由领域C屏蔽/洗涤/保存。因此,这降低了中间领域所需要的额外屏蔽及状态保存的量。
至领域A的进一步的领域退出526随后被触发,该领域A为中间领域的上代。在该情况下,领域A能够处置异常,因为该领域A可在EL2处操作,且因此在步骤528处,异常在异常级EL2处被陷阱且处置。异常由管理器处理,且一旦异常已被处置,则ERET指令530被执行以返回至先前处理。此时,ELR_EL2及RID_EL2的值以及SPSR_EL2中的R标志仍与其在ERET指令于步骤500处执行之前相同。因此,不必再次设置这些值。ERET指令530触发向后至异常级EL1处的先前子代领域B的领域进入。应注意,异常处置器代码可能已经具有旧有代码中用于在异常的处置之后将处理返回至较低异常级的此ERET指令。因此,如以上所讨论的重新使用ERET指令以触发领域使在不知道领域保护功能的情况下撰写的现有异常处置器代码能够继续被使用,从而降低平台开发成本。
在返回至EL1处的领域B时,处理组件检测到中间标志在SPSR_EL1中被设置(步骤532)。因此,在步骤534处,从领域B的REC恢复的状态为EL1可存取的状态(注册352)但排除在EL0处可存取的寄存器350。若处理器实施方式使用触发嵌套领域进入的软件辅助方法,则在步骤536处,处理组件将用于中间领域的异常状态寄存器ESR_EL1设置为对应于伪造领域退出的特定值。处理组件将程序计数器设置为异常向量,该异常向量指示用于处置此预定类型的伪造领域退出异常的异常处置器,且随后异常处置器在步骤538处被执行。异常处置器不需要实施任何现实功能,但可简单地触发ERET指令或替代地还可提供一些其他操作。最终,ERET指令在步骤542处被执行,因为ELR_EL1、RID_EL1及SPSR_EL1寄存器仍如这些寄存器在ERET指令于步骤506处被执行之前一般设置,所以该ERET指令触发向后至先前子代领域的领域进入544,该领域进入在原始异常发生之前执行。此时,在步骤546处,从领域C的REC恢复状态,且处理在步骤548处以与在以上步骤510及512处相同的方式继续。
替代地,对于硬件辅助嵌套领域进入,步骤536至542可被省略,且替代在步骤534处使状态的需要的子集恢复,处理组件的硬件可从中间领域标志检测到需要至领域C的进一步的领域进入,且因此在步骤550处,硬件可直接链接后续领域进入而不需要进一步的ERET指令542被执行。在该情况下,不需要任何指令将在中间领域内执行。
由通过使用此嵌套领域进入及退出程序,此避免了EL2处的领域需要处理与EL0相关联的任何领域值或REC指标。当进入领域时,此允许较清洁及较简单的检查,因为仅当前领域的紧接子代的参数需要被检查。此大大地简化了架构及硬件实施方式。
图32及图33分别示出了在领域退出及领域进入时至REC的迟缓状态保存及从REC的状态恢复。一般而言,在将领域退出至上代领域时,可期望屏蔽与子代领域相关联的状态以从上代领域隐藏该状态,且执行洗涤以确保若上代领域在试图存取对应于洗涤后状态的架构寄存器则将看见一些预定值。这些操作可相对快速地执行。然而,若在处理电路的实体寄存器档案中存在不充分空间来用于无限地保持子代领域状态,则可希望将该数据中一些保存至REC。然而,此可花费较长时间,且占用否则可用于上代领域中的处理的存储器带宽,此可延迟上代领域中的处理。类似地,用以在进入领域后将状态从存储器恢复至寄存器的对应操作可花费一些时间。因此,出于性能原因,可期望支持处理组件状态至/从REC的异步保存/恢复。给定处理器实施方式实际上是否进行此迟缓状态保存为用于特定处理器的实施方式选择。例如,不以高性能为目的的一些处理器可发现较简单的简单地立即触发状态保存操作,以便降低管理哪个状态已经保存及哪个状态尚未保存的复杂性。然而,为在需要时提供性能,可期望提供支持此类异步、迟缓状态保存方法的架构功能。
因此,响应于从源领域至将在相较于源领域的较多特权异常级处处理的目标领域的领域切换,处理电路可执行状态屏蔽以使与源领域相关联的架构状态数据的子集为目标领域不可存取的。尽管状态的该被屏蔽子集被保存至存储器为可能的,但此时,此并非必要的。然而,架构提供可在领域切换之后使用的清空命令。当清空命令被执行时,处理电路确保尚未保存至由源领域所拥有的至少一个REC存储器区域的架构状态数据的屏蔽子集中任一者被保存至至少一个REC存储器区域。通过提供此清空命令,可确保在必须确保架构状态数据的子集已经明确地保存时,此可强制通过,且当架构状态数据的该子集在清空命令尚未被执行时的情况下实际上保存至存储器时,此给予用于架构的特定微架构实施方式精确变化的自由度。
除状态屏蔽之外,在领域切换后,处理电路还可执行如以上所讨论的寄存器洗涤操作,该寄存器洗涤操作确保对给定架构寄存器的任何后续读取存取返回预定值(若在无介入写入存取的情况下进行)。此洗涤可由实际上将预定值写入至对应于给定架构寄存器的实体寄存器,或由寄存器重新命名,或由设置与给定架构寄存器相关联的其他控制状态值以指示读取存取应返回预定值而非对应实体寄存器的实际内容来执行。若响应于领域切换要这些的状态保存被异步地进行,则当响应于领域切换而使得不可存取的架构状态数据的子集的至少部分仍存储在处理电路的寄存器中时,处理电路可开始目标领域的处理。例如,处理器可具有相较于提供为指令集架构中的架构寄存器的寄存器的数目的较大实体寄存器档案,且因此一些备用实体寄存器可用来在目标领域已开始处理之后将先前屏蔽的状态保持一段时期。此为有利的,因为若然后处理在架构状态数据的子集的给定项目仍存储在寄存器中时返回至源领域,则处理电路可简单地从寄存器档案恢复对架构状态的该给定项目的存取,而不需要从REC恢复数据。一些类型的异常可仅需要相对短的异常处置器被执行,在该情况下,可能的是一些屏蔽状态在从异常返回时仍常驻于寄存器档案中。此类“浅”异常进入/返回事件可受益于使用迟缓状态保存。
若使用迟缓状态保存,则一旦目标领域的处理在异常之后已开始,处理电路可响应于除清空命令之外的预定事件的发生而触发REC区域的给定项目的保存。尽管处理此时已切换至上代领域(该上代领域通常不可以存取与先前子代领域相关联的REC),但因为这些操作是由微体系结构实施方式在硬件中而非由软件触发,所以这些操作不经受一般软件触发存储器存取所需的相同所有权检查(有效地,这些REC保存操作在退出之前将已由子代领域授权)。
许多不同类型的预定事件可用来触发架构状态数据的子集的一定项目被保存至REC,这些不同类型的预定事件包括以下:
·对架构寄存器的寄存器存取,该架构寄存器对应于架构状态数据的子集的给定项目。此方法可对于不支持寄存器重新命名的不太复杂处理器为有用的。在该情况下,每一架构寄存器可映射至一个固定实体寄存器,且因此与上代领域相关联的该代码第一次尝试存取给定架构寄存器时,则此可需要由子代领域使用的该寄存器的旧值被保存至存储器。
·存储架构状态数据的子集的给定项目的实体寄存器的重新映射。在支持寄存器重新命名的系统中,架构状态可在寄存器档案中保持得较久,但最终可必需重新映射对应实体寄存器以存储不同值且此时子代领域的对应架构状态可被保存至REC。
·可利用的实体寄存器的数目变得小于或等于预定临界值。在该情况下,一旦空闲实体寄存器(其可用来再分配给不同架构寄存器)的数目变为低的,状态保存可开始抢先执行,而非等待给定实体寄存器的实际重新映射。
·给定数目的循环或给定时间周期的过去。因此,对于任何特别处理事件而言,触发保存并非必要的,但替代地迟缓状态保存可在时间周期内简单地扩展子代领域的情境至REC的保存,以便降低对可用于由上代领域中的处理触发的其他存储器存取的存储器带宽的影响。
·指示降低的处理器工作负荷的事件,例如闲置处理器时间周期或指示现在执行状态保存将对上代领域的处理的整体性能具有较少影响的一些其他事件。此时,架构状态数据的子集的至少一部分的保存可被触发。
在领域切换之后,若处理电路试图进入除源领域之外的进一步的领域,领域先前从该源领域切换至上代领域,则当进一步的领域将在相较于先前领域退出的目标领域的相同异常级或较少特权异常级处被处理且无清空命令已在领域切换与领域进入请求之间被接收时,处理电路可拒绝领域进入请求。替代地,领域进入请求可被接受而不管清空命令是否已被执行,但若清空命令尚未执行,则初始子代领域REC状态可被毁坏,使得REC不可再次使用,从而防止至子代领域中的有效进入。总之,在上代领域可将处理成功导向至相比于先前执行的一个领域的不同子代领域之前需要清空命令。此确保即使硬件选择使用迟缓状态保存方法,与先前子代领域相关联的所有必要状态将已经提交以在进入不同子代领域时被保存至存储器。此避免了对备份将要保存至存储器的子代领域数据的多个集合的需要且简化架构。
应注意,清空命令仅需要确保来自屏蔽寄存器的状态经提交以被存储至REC存储器区域。由清空命令触发的存储操作可在处理组件8的负荷/存储队列内,或在互连14、存储器控制器或存储器16自身内的队列中排队,因此至存储器单元的实际写入可不发生直至稍后,但从处理组件的观点,已知屏蔽状态的存储器写入将明确地发生。
清空命令可为由处理电路的指令解码器支持的本机指令。替代地,清空命令可为由预定事件触发来继续由指令解码器解码的指令的处理的命令。例如,清空命令可由一些其他类型的指令自动地触发,该其他类型的指令暗示应确保状态保存操作已对于与先前子代领域相关的架构状态的所有需要的子集向存储器触发。
如以上所讨论,将在领域切换期间保存的架构状态的特定子集可取决于与源领域相关联的边界异常级(且还可取决于源领域是否为嵌套领域退出中的中间领域)。若领域切换为预定类型的领域切换(例如由源领域中的自愿领域切换指令的执行触发的领域切换),则可抑制状态屏蔽及保存操作。
因此,图32示出了迟缓状态保存及恢复的实例。在步骤560处,以与以上所讨论的相同方式处置领域退出。尽管将针对领域B隐藏的架构状态的子集在领域退出时被屏蔽且洗涤,但至REC的状态保存可被推迟且因此可在与上代领域A相关联的处理564的背景中进行迟缓状态保存过程562。执行迟缓状态保存的特定方式可为用于特别处理设计的实施方式选择。在步骤566处,上代领域触发向后至先前子代领域的领域进入(使用如以上所讨论的ERET指令)。在该情况下,因为领域进入回至先前退出的相同子代,所以不需要用于领域进入的清空命令将为有效的。若迟缓状态保存操作的部分568仍被执行,则此可在领域进入之后被取消,且替代地用于领域B的对应状态值可简单地从处理组件的实体寄存器中的一些恢复。因此,对于相对浅的异常退出及返回,使用迟缓状态保存方法帮助降低所需要的存储器存取的容量,从而提升性能。
图33示出了以与图32中相同的方式执行从领域B1至该领域的上代领域A的领域退出560的另一实例。然而,此时,领域A希望将处理切换至不同的子代领域B2,而非返回至相同领域。因此,上代领域在步骤570处执行清空命令,该清空命令触发处理组件以确保完成迟缓状态保存过程562的任何剩余部分(即针对仍常驻于处理组件的寄存器档案中的屏蔽子集的所有剩余架构状态发布存储操作)。在步骤572处,上代领域设置领域标识符寄存器及链接寄存器以指示用于目标领域B2的领域ID及REC指针,且随后在步骤574处执行ERET指令,该ERET指令触发至领域B2的领域进入566。若清空命令在执行ERET指令之前尚未执行,则领域进入将会失败。在步骤578处,从领域B2的REC存储器区域执行状态恢复(同样此可迟缓地进行)。
因此,对清空命令的使用实现处理器状态至先前退出的领域的REC中的快速异常退出及缓慢流出,且还允许浅异常退出及返回,其中状态保持在处理组件的寄存器内且并未存储且从REC重新加载。
图34示出了可由上代领域初始化的子领域的概念。如图34中所示,在特定异常级处操作的给定上代领域600可初始化子领域602,该子领域在与该子领域的上代相同的异常级处操作。完全领域600对应于给定软件过程(或二个或更多个过程的集合),但子领域对应于给定软件过程内的预定地址范围。因为完全领域为子领域的上代,所以如以上所讨论,子领域可具有存取存储在由上代完全领域拥有的存储器区域中的数据的权限,但子领域可具有从存取存储在由子领域602拥有的存储器区域中的数据排除该子领域的上代完全领域的权限。此可用于允许使给定软件过程的一定部分比软件过程的其他部分更安全。例如,用于检查移动银行应用中的密码或用于处理其他敏感信息的代码的一部分可被分配给子领域,以便防止相同应用或操作系统的其他部分存取该敏感信息。
子领域可通常以与完全领域相同的方式来处置,其中一些差异如以下解释。至子领域的进入及从子领域的退出可以与以上所讨论的相同方式使用异常返回指令及异常事件来处置。因此,子领域可具有以针对相同上代的完全子代领域的相同方式构造的子代领域ID,且可具备如以上所讨论的领域描述符树内的领域描述符。至子领域的进入可通过执行ERET指令简单地触发,在执行ERET指令之前,该ERET指令已将适当子代子领域RID放置于RID寄存器中。因此,相同类型的ERET指令(属第二变体)可用来触发至完全领域或子领域的进入。
子领域可不同于完全领域的一个方式可为子领域可不允许初始化这些子领域的自有子代领域。因此,若当前领域为子领域,则用于初始化新领域的领域初始化命令可被拒绝。RMU可使用当前领域的领域描述符中的领域类型值来确定当前领域为完全领域或子领域。通过在当前处于子领域中时禁止领域初始化,此简化架构,因为不必提供额外状态寄存器以用于由子领域在初始化进一步的领域中使用。
类似地,在当前处于子领域中时,可禁止领域进入指令的执行。此简化架构,因为其意味用于处置领域进入及退出(及异常进入及返回)的诸如以上所讨论的ELR、SPSR、ESR及RID寄存器的成组寄存器中的一些不需要针对每一子领域再一次成组,此将难以管理,因为在设计时间可能不知道给定过程将创建多少子领域。类似地,在当前领域为子领域而非完全领域时,可禁止触发至在较低特权级处操作的过程的切换的异常返回事件。尽管在以上所讨论的实例中单个类型的ERET指令用作领域进入指令及异常返回指令两者,但此对于所有实施例并非必要的,且在提供分离指令的情况下,则在当前领域为子领域时,可禁止异常返回指令两者。
类似地,当在子领域中时的异常发生时,处理电路可在处置异常之前触发从子领域至初始化子领域的上代完全领域的退出,而非直接从子领域采取异常。因此,异常触发至上代完全领域的返回。至上代完全领域的异常返回可包括对REC的状态屏蔽、洗涤及保存操作,但通过避免异常直接从子领域去往较高异常级处的领域,此避免了对针对子领域再一次成组例外控制寄存器诸如ELR、SPSR及ESR的需要,从而简化架构。
对于子领域,指示允许领域的处理的最大特权级的边界异常级等于用于该领域的上代完全领域的边界异常级。相反,对于子代完全领域,边界异常级为相较于该子代完全领域的上代领域的边界异常级的较少特权异常级。
当领域由上代领域初始化时,上代领域可选择新领域将为子代完全领域还是子代子领域,且可因此设置领域描述符中的适当领域类型参数。一旦领域为操作的,则上代领域不再可改变领域类型,因为领域描述符的修改被以上关于图18所讨论的管理领域生命周期禁止。
总之,引入类似于完全领域而管理但异常处置、领域初始化及领域进入功能在子领域内禁止的子领域的能力使对应于完全领域的软件过程内的给定地址范围的代码的较小部分能够与该软件的其他部分隔离,以便为敏感代码或数据的一定片段提供额外安全。
图35示出了可使用的仿真器实施方式。虽然较早描述的实施例就用于操作支持所考虑的技术的特定处理硬件的设备及方法而言实施本发明,但还可以通过使用计算机程序来根据本文所描述的提供指令执行环境。在此类计算机程序提供硬件架构的基于软件的实施方式的范围内,这些计算机程序通常称为仿真器。各种仿真器计算机程序包括仿真器、虚拟机、模型,及二进制转换器,包括动态二进制转换器。通常,仿真器实施方式可在主机处理器730上运行,该主机处理器任择地运行主机操作系统720,支持仿真器程序710。在一些配置中,可存在介于硬件与所提供的指令执行环境之间的仿真的多个层,和/或提供在相同主机处理器上的多个相异指令执行环境。历史上,已需要强大的处理器提供以合理速度执行的仿真器实施方式,但此方法可在某些环境中被调整,诸如当出于兼容性或重新使用原因需要运行对于另一处理器为本机的代码时。例如,仿真器实施方式可提供具有不由主机处理器硬件支持的额外功能的指令执行环境,或提供通常与不同硬件架构相关联的指令执行环境。对模拟的概述在“一些高效架构模拟技术(Some Efficient ArchitectureSimulation Techniques)”,Robert Bedichek,Winter 1990 USENIX Conference,第53–63页中给出。
在先前已参考特定硬件构造或特征描述实施例的程度上,在模拟实施例中,等效功能可由适当软件构造或特征提供。例如,特定电路可在仿真实施例中实施为计算机程序逻辑。类似地,存储器硬件诸如寄存器或缓存可在模拟实施例中实施为软件数据结构。在先前描述的实施例中引用的硬件组件之一或多者存在于主机硬件(例如,主机处理器730)上的配置中,一些仿真实施例可在适合的情况下利用主机硬件。
仿真器程序710可存储在计算机可读存储介质(该计算机可读介质可为非暂态介质)上,且提供至目标代码700(该目标代码可包括如图2中所示的应用程操作系统及管理器)的程序接口(指令执行环境),该程序接口与由仿真器程序710模型化的硬件架构的应用程序编程接口相同。因而,目标代码700的程序指令(包括基于以上所描述的领域保护功能的存储器存取的控制)可使用仿真器程序710在指令执行环境内执行,使得实际上不具有以上所讨论的设备2的硬件特征的主计算机730可仿真这些特征。
至少一些示例提供了一种虚拟机计算机程序,包括用于根据设备来控制主机数据处理设备以提供指令执行环境的指令,该设备包括:转换缓存,包括多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;以及控制电路,响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对转换缓存的查找;其中,当查找在转换缓存中未命中时,控制电路被配置为:在多个领域中针对目标存储器区域而指定的拥有者领域排除当前领域存取目标存储器区域时,防止响应于存储器存取而向转换缓存分配地址转换数据;并且在查找中,控制电路被配置为:根据给定条目所指定的转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及给定条目所指定的领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与转换缓存的给定条目相匹配。存储介质可以存储虚拟机计算机程序。存储介质可以是非暂态存储介质。
在本申请中,词语“被配置为……”用来意味设备的组件具有能够实施所定义操作的配置。在此情境中,“配置”意味硬件或软件的互连的配置或方式。例如,设备可具有提供所定义操作的专用硬件,或可被程序化为执行功能的处理器或其他处理装置。“被配置为”并不暗示设备组件需要以任何方式改变以便提供所定义操作。
尽管本文已参考附图详细描述本发明的说明性实施例,但将理解,本发明不限于这些精确实施例,且各种变化及修改可在不脱离如所附权利要求限定的本发明的范围及精神的情况下由本领域技术人员实现。

Claims (20)

1.一种设备,包括:
转换缓存,包括多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与所述地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;以及
控制电路,响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对所述转换缓存的查找;
其中,当所述查找在所述转换缓存中未命中时,所述控制电路被配置为:在多个领域中针对所述目标存储器区域而指定的拥有者领域排除所述当前领域存取所述目标存储器区域时,防止响应于所述存储器存取而向所述转换缓存分配地址转换数据;并且
在所述查找中,所述控制电路被配置为:根据所述给定条目所指定的所述转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及所述给定条目所指定的所述领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与所述转换缓存的给定条目相匹配。
2.根据权利要求1所述的设备,其中,所述控制电路被配置为:当所述第二比较标识所述给定条目所指定的所述领域标识符与所述当前领域的所述领域标识符之间的不匹配时,标识所述存储器存取与所述给定条目之间的不匹配。
3.根据权利要求1和2中任一项所述的设备,包括领域管理单元,所述领域管理单元被配置为:防止对具有与先前活动的领域相同的领域标识符的新领域进行初始化,直到已执行洗涤过程为止,所述洗涤过程用于使与所述先前活动的领域相关联的信息无效。
4.根据权利要求3所述的设备,其中,当所述转换缓存包括至少一个条目、针对所述至少一个条目的所述第二比较标识该条目所指定的所述领域标识符与所述先前活动的领域的所述领域标识符之间的匹配时,所述洗涤过程包括使所述至少一个条目无效。
5.根据权利要求3和4中任一项所述的设备,其中,每个领域与生命周期状态相关联;
当所述查找在所述转换缓存中未命中时,所述控制电路被配置为:在所述当前领域处于除活动状态之外的生命周期状态时,防止地址转换数据响应于所述存储器存取而被分配到所述转换缓存;
所述领域管理单元被配置为:当与所述给定领域标识符相关联的领域处于除清洁状态之外的生命周期状态时,拒绝用于对具有给定领域标识符的新领域进行初始化的命令;并且
所述领域管理单元被配置为:响应于包括至少一个用于执行所述洗涤过程的命令的预定命令序列,将具有给定领域标识符的领域从所述活动状态转换为所述清洁状态。
6.根据前述权利要求中任一项所述的设备,其中,当所述查找在所述转换缓存中未命中时,所述控制电路被配置为触发针对所述存储器存取的所有权表查找,所述所有权表查找包括针对多个存储器区域中的每一个来存取所有权表,所述所有权表指定针对所述对应存储器区域的拥有者领域以及由所述拥有者领域设置的存取约束,所述存取约束用于控制哪些其他领域被允许存取所述对应存储器区域。
7.根据权利要求6所述的设备,其中,当所述查找在所述转换缓存中命中时,所述控制电路被配置为:省略针对所述存储器存取的所述所有权表查找。
8.根据前述权利要求中任一项所述的设备,其中,由所述转换缓存的给定条目指定的所述领域标识符标识所述对应存储器区域的所述拥有者领域。
9.根据权利要求8所述的设备,其中,所述转换缓存的给定条目指定由所述拥有者领域为所述对应存储器区域指定的可见性属性,所述可见性属性指示哪些其他领域被所述拥有者领域允许存取所述对应存储器区域。
10.根据权利要求9所述的设备,其中,所述控制电路被配置为:根据所述可见性属性,来改变所述第二比较要确定匹配所需的匹配程度。
11.根据权利要求9和10中任一项所述的设备,其中,除根领域之外的每个领域是子代领域,所述子代领域响应于由所述子代领域的上代领域触发的命令而被初始化;并且
对于所述可见性属性的至少一个值,所述制电路被配置为:在所述当前领域是除了所述拥有者领域或所述拥有者领域的后代领域之外的领域时,针对所述第二比较确定不匹配。
12.根据权利要求9至11中任一项所述的设备,其中,除根领域之外的每个领域是子代领域,所述子代领域响应于由所述子代领域的上代领域触发的命令而被初始化;并且
对于所述可见性属性的至少一个值,所述控制电路被配置为:在所述当前领域是除了所述拥有者领域、所述拥有者领域的后代领域、或所述拥有者领域的上代领域之外的领域时,针对所述第二比较确定不匹配。
13.根据权利要求9至12中任一项所述的设备,其中,对于所述可见性属性的至少一个值,所述控制电路被配置为:针对所述第二比较确定匹配,而不管哪个领域是所述当前领域。
14.根据前述权利要求中任一项所述的设备,其中,子代领域的所述领域标识符包括与对所述子代领域进行初始化的上代领域的所述领域标识符相对应的位部分。
15.根据前述权利要求中任一项所述的设备,其中,所述拥有者领域具有权限来防止以比所述拥有者领域更大的特权级执行的过程对所述给定存储器区域的存取。
16.根据前述权利要求中任一项所述的设备,其中,所述地址转换数据包括来自至少一个转换表的信息,所述至少一个转换表由较高特权的软件过程设置以控制较低特权的软件过程是否被允许存取对应存储器区域。
17.一种设备,包括:
缓存装置,用于缓存多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与所述地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;以及
控制装置,用于控制对存储器的存取,其中,所述控制装置响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对所述转换缓存的查找;
其中,当所述查找在所述转换缓存中未命中时,所述控制装置被配置为:在多个领域中针对所述目标存储器区域而指定的拥有者领域排除所述当前领域存取所述目标存储器区域时,防止响应于所述存储器存取而向所述转换缓存分配地址转换数据;并且
在所述查找中,所述控制装置被配置为:根据所述给定条目所指定的所述转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及所述给定条目所指定的所述领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与所述转换缓存的给定条目相匹配。
18.一种方法,包括:
在转换缓存中存储多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与所述地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与由处理电路执行的至少一个软件过程的至少一部分相对应;
响应于从当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对所述转换缓存的查找;
当所述查找在所述转换缓存中未命中时,在多个领域中针对所述目标存储器区域而指定的拥有者领域排除所述当前领域存取所述目标存储器区域时,防止响应于所述存储器存取而向所述转换缓存分配地址转换数据;以及
其中,所述查找包括:根据所述给定条目所指定的所述转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及所述给定条目所指定的所述领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与所述转换缓存的给定条目相匹配。
19.一种用于控制主机数据处理设备以提供指令执行环境的计算机程序,该计算机程序包括:
转换缓存,包括多个条目,每个条目指定:针对对应存储器区域的地址转换数据;转换情境标识符,标识与所述地址转换数据相关联的转换情境;以及领域标识符,标识多个领域之一,每个领域与所述指令执行环境中的至少一个软件过程的至少一部分相对应;以及
控制程序逻辑,响应于从所述指令执行环境中的当前转换情境和当前领域发布的对目标存储器区域的存储器存取而触发对所述转换缓存的查找;
其中,当所述查找在所述转换缓存中未命中时,所述控制程序逻辑被配置为:在多个领域中针对所述目标存储器区域而指定的拥有者领域排除所述当前领域存取所述目标存储器区域时,防止响应于所述存储器存取而向所述转换缓存分配地址转换数据;并且
在所述查找中,所述控制程序逻辑被配置为:根据所述给定条目所指定的所述转换情境标识符与所述当前转换情境的转换情境标识符之间的第一比较,以及所述给定条目所指定的所述领域标识符与所述当前领域的领域标识符之间的第二比较,来确定所述存储器存取是否与所述转换缓存的给定条目相匹配。
20.一种存储介质,存储根据权利要求19所述的计算机程序。
CN201880041379.7A 2017-06-28 2018-06-08 用于转换缓存查找的领域标识符比较 Active CN110799953B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1710338.3 2017-06-28
GB1710338.3A GB2563879B (en) 2017-06-28 2017-06-28 Realm identifier comparison for translation cache lookup
PCT/GB2018/051561 WO2019002808A1 (en) 2017-06-28 2018-06-08 COMPARISON OF DOMAIN IDENTIFIERS FOR TRANSLATION MEMORY CONSULTATION

Publications (2)

Publication Number Publication Date
CN110799953A true CN110799953A (zh) 2020-02-14
CN110799953B CN110799953B (zh) 2023-08-18

Family

ID=59523629

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880041379.7A Active CN110799953B (zh) 2017-06-28 2018-06-08 用于转换缓存查找的领域标识符比较

Country Status (6)

Country Link
US (1) US11113209B2 (zh)
KR (1) KR20200023377A (zh)
CN (1) CN110799953B (zh)
GB (1) GB2563879B (zh)
TW (1) TWI787289B (zh)
WO (1) WO2019002808A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113851166A (zh) * 2020-06-25 2021-12-28 美光科技公司 存储器子系统中的加速读取转译路径

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
US11132305B1 (en) * 2020-06-11 2021-09-28 Ralph Crittenden Moore Automatic static region generation for memory protection units (MPUs)
US20220206951A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Method and apparatus for run-time memory isolation across different execution realms
US11914524B2 (en) * 2022-03-01 2024-02-27 Qualcomm Incorporated Latency management in synchronization events
GB2618124A (en) * 2022-04-28 2023-11-01 Advanced Risc Mach Ltd Execution environment mismatch

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150220436A1 (en) * 2013-03-14 2015-08-06 Intel Corporation Power Efficient Level One Data Cache Access With Pre-Validated Tags
CN105446900A (zh) * 2015-04-03 2016-03-30 上海兆芯集成电路有限公司 处理器和区分系统管理模式条目的方法
US20170010982A1 (en) * 2015-07-07 2017-01-12 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US20070061549A1 (en) * 2005-09-15 2007-03-15 Kaniyur Narayanan G Method and an apparatus to track address translation in I/O virtualization
US20070067505A1 (en) * 2005-09-22 2007-03-22 Kaniyur Narayanan G Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware
US8140820B2 (en) * 2008-05-21 2012-03-20 Arm Limited Data processing apparatus and method for handling address translation for access requests issued by processing circuitry
US8312468B2 (en) * 2009-06-09 2012-11-13 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system
US8949551B2 (en) * 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
US9710622B2 (en) * 2015-02-23 2017-07-18 Intel Corporation Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150220436A1 (en) * 2013-03-14 2015-08-06 Intel Corporation Power Efficient Level One Data Cache Access With Pre-Validated Tags
CN105446900A (zh) * 2015-04-03 2016-03-30 上海兆芯集成电路有限公司 处理器和区分系统管理模式条目的方法
US20170010982A1 (en) * 2015-07-07 2017-01-12 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113851166A (zh) * 2020-06-25 2021-12-28 美光科技公司 存储器子系统中的加速读取转译路径
CN113851166B (zh) * 2020-06-25 2023-01-03 美光科技公司 存储器子系统中的加速读取转译路径

Also Published As

Publication number Publication date
GB2563879B (en) 2019-07-17
TW201905702A (zh) 2019-02-01
GB201710338D0 (en) 2017-08-09
CN110799953B (zh) 2023-08-18
KR20200023377A (ko) 2020-03-04
GB2563879A (en) 2019-01-02
US11113209B2 (en) 2021-09-07
TWI787289B (zh) 2022-12-21
WO2019002808A1 (en) 2019-01-03
US20200159677A1 (en) 2020-05-21

Similar Documents

Publication Publication Date Title
CN110785747B (zh) 领域层级中的目标领域的无效
CN110799953B (zh) 用于转换缓存查找的领域标识符比较
TWI787291B (zh) 與領域相關的架構狀態的遮罩
CN111615689A (zh) 区域融合
CN111448555A (zh) 代码领域
TWI790243B (zh) 用於記憶體存取控制的領域的領域識別符
TWI787287B (zh) 用於異常返回指令的資料處理設備、方法、電腦程式及儲存媒體
CN110785746B (zh) 存储器区域锁定
TWI787290B (zh) 次領域
CN110832467B (zh) 领域执行情境屏蔽和保存
TWI787288B (zh) 記憶體區域的中斷輸出
CN110785748B (zh) 领域管理单元-私有存储器区域
TWI789457B (zh) 用於記憶體區域的巡檢清除-提交狀態的資料處理設備、方法、電腦程式及儲存媒體

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