提供用于控制对存储器系统的访问的访问控制信息的表结构的可变嵌套控制参数的制作方法

文档序号:33082140发布日期:2023-01-31 20:01阅读:46来源:国知局
提供用于控制对存储器系统的访问的访问控制信息的表结构的可变嵌套控制参数的制作方法
提供用于控制对存储器系统的访问的访问控制信息的表结构的可变嵌套控制参数


背景技术:

1.本技术涉及数据处理领域。更具体地说,本技术涉及存储器管理。
2.数据处理系统可以具有存储器管理电路系统,所述存储器管理电路系统用于基于在表结构的表条目中定义的访问控制信息来控制对存储器系统的访问。
3.至少一些示例提供了一种装置,所述装置包括:存储器管理电路系统,所述存储器管理电路系统用于基于在包括多个级别的访问控制表的表结构的表条目中定义的访问控制信息来控制对存储器系统的访问;以及表访问电路系统,所述表访问电路系统用于访问所述表结构以获得对应于目标地址的所述访问控制信息;其中:对于所述表结构的除起始级别之外的给定级别处的给定访问控制表:所述表访问电路系统被配置为基于所述目标地址的偏移部分来选择所述给定访问控制表的对应于所述目标地址的所选择的表条目,所选择的表条目提供指向所述表结构的下一个最低级别处的访问控制表的指针或对应于所述目标地址的所述访问控制信息;并且所述表访问电路系统被配置为基于在所述表结构的比所述给定访问控制表更高级别处的较高级访问控制表的表条目中指定的可变嵌套控制参数来确定所述目标地址的所述偏移部分的大小。
4.至少一些示例提供了一种方法,所述方法包括:基于在包括多个级别的访问控制表的表结构的表条目中定义的访问控制信息来控制对存储器系统的访问;以及访问所述表结构以获得对应于目标地址的所述访问控制信息;其中:对于所述表结构的除起始级别之外的给定级别处的给定访问控制表:基于所述目标地址的偏移部分选择对应于所述目标地址的所述给定访问控制表的所选择的表条目,所选择的表条目提供指向所述表结构的下一个最低级别处的访问控制表的指针或对应于所述目标地址的所述访问控制信息;并且基于在所述表结构的比所述给定访问控制表更高级别处的较高级访问控制表的表条目中指定的可变嵌套控制参数来确定所述目标地址的所述偏移部分的大小。
5.至少一些示例提供了一种计算机程序,所述计算机程序包括指令,所述指令在主机数据处理装置上执行时控制所述主机数据处理装置提供用于执行目标代码的指令执行环境;所述计算机程序包括:存储器管理程序逻辑,所述存储器管理程序逻辑用于基于在包括多个级别的访问控制表的表结构的表条目中定义的访问控制信息来控制对模拟的存储器的访问;以及表访问程序逻辑,所述表访问程序逻辑用于访问所述表结构以获得对应于目标模拟的地址的所述访问控制信息;其中:对于所述表结构的除起始级别之外的给定级别处的给定访问控制表:所述表访问程序逻辑被配置为基于所述目标模拟的地址的偏移部分来选择所述给定访问控制表的对应于所述目标模拟的地址的所选择的表条目,所选择的表条目提供指向所述表结构的下一个最低级别处的访问控制表的指针或对应于所述目标模拟的地址的所述访问控制信息;并且所述表访问程序逻辑被配置为基于在所述表结构的比所述给定访问控制表更高级别处的较高级访问控制表的表条目中指定的可变嵌套控制参数来确定所述目标模拟的地址的所述偏移部分的大小。
6.至少一些示例提供了一种计算机可读存储介质,所述计算机可读存储介质存储上
述计算机程序。该存储介质可以是非暂态存储介质。
附图说明
7.本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
8.图1示出了数据处理装置的示例;
9.图2示出了处理电路系统可在其中操作的多个域;
10.图3示出了支持颗粒保护查找的处理系统的示例;
11.图4示意性地示出了多个物理地址空间向识别存储器系统中的位置的系统物理地址空间上的别名;
12.图5示出了对有效硬件物理地址空间进行分区以使得不同架构物理地址空间有权访问系统物理地址空间的相应部分的示例;
13.图6是示出确定处理电路系统的当前操作域的方法的流程图;
14.图7示出了用于将虚拟地址转换为物理地址的页表条目的页表条目格式的示例;
15.图8示出了具有页表的固定嵌套的多级页表结构的示例;
16.图9是示出选择待由给定存储器访问请求访问的物理地址空间的方法的流程图;
17.图10是示出基于与请求相关联的所选择的物理地址空间是否被定义为对应于在颗粒保护表结构中定义的目标物理地址的颗粒保护信息中的所允许的物理地址空间来对存储器访问请求进行滤波的方法的流程图;
18.图11示出了颗粒保护表的包括表描述符条目和块描述符条目的表条目的示例;
19.图12示出了多级颗粒保护电缆的概念性布局的示例,其示出了具有基于在较高级表条目中定义的嵌套控制参数的可变嵌套的示例;
20.图13是示出基于可变嵌套控制参数访问颗粒保护表以获得用于特定目标地址的访问控制信息的方法的流程图;
21.图14示出了使用共享访问控制信息集来表示用于地址的相邻颗粒的邻接块的访问控制信息的示例;并且
22.图15示出了模拟器示例。
具体实施方式
23.数据处理系统可以具有存储器管理电路系统和表访问电路系统,所述存储器管理电路系统用于基于在具有两个或更多个级别的访问控制表的表结构的表条目中定义的访问控制信息来控制对存储器系统的访问,并且所述表访问电路系统用于访问对应于目标地址的访问控制信息。访问控制信息可以是用于控制如何对给定地址区域进行访问或用于控制是否完全允许对这些区域的访问的任何信息。尽管可以在单个级别的访问控制表中定义此类基于目标地址被线性索引的访问控制信息,但当访问控制信息要定义的地址空间的大小变得更大时,这种被线性索引的表在表数据本身的存储器使用率方面可能是低效的,从而需要为表保留存储器的单个邻接区域,所述区域的大小与待受表保护的地址范围的大小成比例。
24.为了更高效地使用地址空间(减少为表分配的存储器存储量),已知定义了多级访
问控制表,其中在每个级别,从目标地址提取的偏移位的一部分选择当前级别处的表的条目,如果当前级别不是最后级别,则当前级别处的条目提供指向表结构的下一个最低级别的访问控制表的指针,并且最终在遍历表结构的各个级别之后到达表的最后级别,其中基于目标地址的所述级别的偏移部分所选择的条目提供对应于目标地址的访问控制信息。与上述使用被线性索引的单个平面表的方法相比,此方法可以允许使用表数据本身的较小存储器占有面积来实现用于分布在待保护的更宽地址空间范围上的一定数量的地址区域的访问控制信息。然而,多级表可能会降低性能,因为获得用于特定目标地址的访问控制信息可能需要对存储器的多次访问来遍历表结构的各个级别,以在最终识别访问控制信息之前获得指向下一级别处的访问控制表的若干指针。
25.通常,对于多级访问控制表,控制表结构中不同级别的表的嵌套的方式由设计固定,使得待遍历以到达提供实际访问控制信息的条目的最大级别数、每个级别处的表的大小以及用于索引到每个级别中的目标地址的偏移部分的大小都是固定的。
26.相比之下,在下面描述的示例中,可以在较高级访问控制表的表条目中指定可变嵌套控制参数,其提供对如何形成表结构的较低级别的偏移部分的可变控制。因此,对于表结构的除起始级别之外的给定级别处的给定访问控制表:表访问电路系统基于目标地址的偏移部分来选择给定访问控制表的对应于目标地址的所选择的表条目(所选择的表条目提供指向表结构的下一个最低级别处的访问控制表的指针或对应于目标地址的访问控制信息),并且表访问电路系统基于在表结构的比给定访问控制表更高级别的较高级访问控制表的表条目中指定的可变嵌套控制参数来确定目标地址的偏移部分的大小。
27.通过允许基于在较高级表条目(其将在遍历表结构以到达给定访问控制表所采用的路径中较早地被访问)中指定的参数动态地改变用于从给定级别的访问控制表中选择条目的偏移部分的大小,此方法提供了在访问表时权衡表的存储器占有面积与性能的灵活性。因此,偏移部分大小还取决于从较早访问控制表读取的参数,而不是使用仅取决于表结构的级别的固定大小偏移。因此,如果性能比存储器存储效率更重要,则可以调整嵌套以针对表结构的给定级别使用较大偏移部分,使得目标地址的位在更少的级别中被消耗,从而允许用于目标地址的访问控制信息位于更少的存储器访问中。另一方面,如果优先级是为表提供更有效的存储器存储占有面积,则可以在较高级访问控制表中定义嵌套控制参数,以便控制表访问电路系统选择为用于表的给定级别的较小偏移,使得表结构的更大数量的级别将被遍历以到达用于目标地址的访问控制信息,从而允许以存储器中的更小的总体表占有面积针对表数据进行存储器的更分段的分配。
28.可变嵌套控制参数可以在较高级访问控制表的相应表条目中单独指定。这意味着较高级访问控制表的不同表条目可以为可变嵌套控制参数指定不同值。因此,在存在为可变嵌套控制参数指定不同值的较高级访问控制表中的不同表条目时,当从表结构的给定级别处的访问控制表中选择条目时,表访问电路系统可以针对表结构的同一级别处的不同访问控制表使用不同大小的偏移部分。这是特别有用的,因为地址空间的不同区域对于性能或存储器占有面积是否更重要可能具有不同的要求。地址空间的一些部分可能需要尽可能最快的访问,而其他部分可能具有更宽松的性能要求,因此可以提供节省表的面积的机会。通过允许基于从表结构的高级别处的较早条目提取的参数来确定用于从访问控制表中选择条目的偏移部分的大小,这为这种权衡提供了灵活性。
29.表结构可以被认为是树结构,其中起始级别处的起始级别表形成树的根,并且树的每个节点基于表的条目中的相应指针分支成单独的路径,最终到达提供访问控制信息的叶节点。从目标地址提取的每个级别的偏移部分可以被视为选择通过树结构到达所述目标地址的适当叶节点所采取的特定路径。
30.基于可变嵌套控制参数,树结构的不同部分可以具有不同数量的级别和不同的特性,而不是如通常情况那样在整个表结构中具有访问控制表的嵌套的统一模式。可以基于可变嵌套控制参数来控制表结构的各种特性。
31.例如,待遍历以到达提供用于目标地址的访问控制信息的表条目的表结构的最大级别数可以取决于可变嵌套控制参数而变化。这可以基于在表的每个级别处选择的偏移部分的大小、基于可变嵌套控制参数来控制—通过将给定的偏移位集合划分成更少、更大的部分,表结构的最大级别数可以小于所述偏移位集合被划分成更大数量的更小部分的情况。同样,由于不同的较高级表条目可以为可变嵌套控制参数指定不同值,因此表结构的最大级别数对于由表结构表示的整体树结构内的不同子树可以是不同的。注意,尽管可变嵌套控制参数可以定义待遍历的表结构的最大级别数,但这不一定意味着表访问电路系统将始终需要遍历所指定的最大级别数以到达访问控制信息。除对应于所指定的最大级别数的最后级别之外的级别处的条目可以被定义为块描述符条目,所述块描述符条目提供用于地址块的访问控制信息,所述地址块可以具有比表结构的最后级别处的块描述符表条目原本为其定义访问控制信息的地址块更大的大小。
32.此外,由表结构的给定级别处的给定访问控制表的表数据占据的表大小可以是可变的,这取决于从较高级访问控制表获得的可变嵌套控制参数。同样,表大小取决于目标地址的偏移部分的大小。表大小对应于一个表条目的大小与2的幂的乘积,所述2的幂对应于用于基于可变嵌套控制参数为给定级别选择的偏移部分的位数。当装置在执行软件时,软件将需要分配对应于表大小的地址范围,以存储给定访问控制表的相应表条目的表数据。注意,当给定访问控制表具有特定表大小时,这不一定意味着已经为针对所述特定表大小分配的存储器的部分内的每个条目分配了有效的表条目。然而,所定义的表大小的存储器区域将需要被保留用于访问控制表,因为如果任何其他数据被存储在所述范围内,则当表访问电路系统正在行走通过表结构以识别用于特定目标地址的访问控制信息时,所述其他数据可能被潜在地读取,从而可能导致在存储在所述条目处的数据被误解为访问控制信息的情况下对存储器访问请求的不正确处理。通过使用可变嵌套控制,可以在表结构的给定部分处权衡表的大小,使得对于可以在邻接块中分配相对大组块的存储器的存储器区域,可以使表树的所述部分中的给定访问控制表更大,以便通过允许级别之间的较少跳数来改善性能,而在存储器空间的其中存储器更为分段并且没有太多空间来分配单个大表(或者其中需要定义访问控制信息的地址的颗粒数太小而不能证明在存储器中分配大表)的其他部分中,可变嵌套控制参数可以被调整以提供更小的表,这将需要更大级别数来遍历。
33.对于表结构的给定级别处的给定访问控制表,所述给定访问控制表的每个表条目可以定义适用于给定地址范围大小处的地址范围的信息。也就是说,给定地址范围大小是指目标地址的给定地址范围的大小,当遍历表结构以找到所述给定地址范围内的任何目标地址的访问控制信息时,将针对所述给定地址范围访问所述给定访问控制表。给定地址范围大小也可以取决于在较高级访问控制表的表条目中指定的可变嵌套控制参数而变化。也
就是说,对于表结构的给定级别,所述访问控制表的单个表条目适用于的地址范围的大小可以取决于从较高级访问控制表读取的参数而变化。这是非常规的,因为通常表的每个级别定义了适用于每个级别固定的单个固定地址范围大小的表条目。同样,利用可变嵌套控制,表结构的给定级别处的一个访问控制表可以定义表条目,每个所述表条目适用于给定地址范围大小,所述给定地址范围大小与表结构的同一给定级别处的另一个访问控制表的每个条目的给定地址范围大小不同。
34.在一些示例中,可变嵌套控制参数可以在表结构的除最后级别之外的任何级别处指定,使得在除表结构的起始级别之外的级别处的访问控制表可以改变如何嵌套访问控制表的后续级别。
35.然而,在其他示例中,可变嵌套控制参数的设置可以限于表结构的起始级别。因此,可变嵌套控制参数可以在表结构的起始级别处的起始级访问控制表的表条目中指定,并且此参数可以定义所述特定起始级表条目下的子树中的表针对所有后续级别嵌套的方式。在表结构的后续级别中可能没有使所述嵌套与在起始级别处定义的嵌套不同的任何其他参数。此方法对于实施表访问电路系统的控制硬件逻辑电路系统可能更有效,因为针对给定级别的偏移部分的大小和位置的选择可以取决于更少的参数(不需要组合从表的多个级别读取的嵌套控制参数)。
36.表结构中的表条目可以被分类为向对应的目标地址块提供访问控制信息的块描述符表条目,或者被分类为提供指向表结构的下一级别处的访问控制表的指针的表描述符条目。如上所述,可以在表结构的任何级别处定义块描述符表条目。如果块描述符表条目处于不同于由可变嵌套控制参数定义的最大允许级别的级别,则这意味着与块描述符表条目处于对应于基于可变嵌套控制参数来指示的最大级别数的最后级别的情况相比,访问控制信息的共享定义由更大的存储器地址块共享。
37.在一个示例中,块描述符表条目可以包括多个访问控制信息字段,每个访问控制信息字段指示用于不同地址颗粒的访问控制信息。因此,当到达特定目标地址的块描述符表条目时,可以从块描述符表条目内的两个或更多个访问控制信息字段中的特定一个访问控制信息字段中提取用于所述特定目标地址的访问控制信息。如果每个颗粒需要定义的访问控制信息的量相对较小,使得多个访问控制信息集可以被打包在单个存储器访问转换中可寻址的单个存储器位置内,则此方法可能是有用的。通过将用于不同颗粒的多条访问控制信息打包到单个块描述符表条目中,这可以减小表结构的总体大小。
38.在一个示例中,表格式可以支持指定块描述符表条目中的邻接性指示的能力。当块描述符表条目指定邻接性指示时,表访问电路系统可以确定用于包括对应于所要求的目标地址的目标颗粒的两个或更多个不同地址颗粒的访问控制信息由在两个或更多个不同颗粒之间共享的共享访问控制信息集表示。这可以是有用的,因为如果共享访问控制信息集可以表示用于多于一个颗粒的信息,则如果系统支持在转换后备缓冲器或其他类型的高速缓存(例如,下文进一步描述的颗粒保护信息高速缓存)中对表条目进行高速缓存,则这可能意味着高速缓存不必存储不同颗粒的单独的高速缓存条目。相反,单个高速缓存条目可以指示待用于较大颗粒数的共享访问控制信息集。这可以更有效地使用高速缓存后的存储容量,从而有效地允许高速缓存存储用于比给定所提供的实际硬件存储所预期的更大颗粒数的信息。
39.基于在块描述符表条目中指定的邻接性大小参数,当指定邻接性指示时共享共享访问控制信息集的颗粒数可以是可变的。这提供了改变可以“融合”以共享同一访问控制信息集的邻接块地址的大小的灵活性。
40.可以以不同方式表示邻接性指示。在一些情况下,可以将专用邻接性指示字段与用于指示访问控制信息本身的字段分开提供。然而,在块描述符表条目具有定义用于多个颗粒的访问控制信息的多个单独的访问控制信息字段的上述示例中,邻接性指示的有效编码可以是定义不能用于指示访问控制信息的任何有效选项的访问控制信息字段的预定编码,并且将访问控制信息字段的预定编码解释为表示邻接性指示。在这种情况下,当块描述符表条目中的访问控制信息字段中的预定一个访问控制信息字段具有预定编码时,这意味着表访问电路系统确定共享访问控制信息集由所述块描述符表条目内的其他访问控制信息字段中的一个或多个访问控制信息字段指示,或者共享访问控制信息集甚至可以在与对应于目标地址的块描述符表条目完全不同的块描述符表条目中表示。通过使用访问控制信息字段的另外的无效编码作为邻接性指示并利用同一块描述符表条目的其他部分可以表示共享访问控制信息的事实,这避免了为邻接性指示分配单独字段的需要,从而为表数据提供了更有效的存储格式。
41.上文所讨论的技术可以用于由存储器管理电路系统使用以控制对存储器的访问的不同类型的表结构。
42.使用可变嵌套控制参数的技术对于由物理地址而不是虚拟地址索引的表结构可以是特别有用的。当表结构由物理地址索引时,这意味着用于查找表结构的目标地址(从中提取偏移部分以索引到表的相应级别中)将是物理地址。可变嵌套控制参数的使用对于物理索引的访问控制表结构特别有用,因为物理地址空间往往会表现出比虚拟地址空间更大的存储器线性度。也就是说,由于物理地址比虚拟地址更接近地对应于以硬件实现的物理存储区域,因此相对较大的相邻物理地址块将比相同大小的相邻虚拟地址块在性能/存储器占有面积效率方面更有可能具有类似的需求。相比之下,相当大尺寸的相邻虚拟地址块将更有可能跨对性能/存储器占有面积权衡具有不同需求的各种不同物理存储单元或外围设备而被分段。由物理地址而不是虚拟地址索引的表结构也可以被称为反向页表,并且本技术中讨论的技术对于这样的反向页表特别有用,其提供针对物理地址的相应颗粒定义的信息。
43.物理索引的表结构的一个特定示例可以是用于分离相应物理地址空间的表。例如,存储器管理电路系统可以包括:地址转换电路系统,所述地址转换电路系统用于将由存储器访问请求指定的目标虚拟地址转换为与从多个物理地址空间中选择的所选择的物理地址空间相关联的目标物理地址;以及滤波电路系统,所述滤波电路系统用于基于从表结构获得的访问控制信息是否指示所选择的物理地址空间是用于目标物理地址的所允许的物理地址空间来确定是否应允许存储器访问请求访问目标物理地址。
44.数据处理系统可支持虚拟存储器的使用,其中提供地址转换电路系统以将存储器访问请求所指定的虚拟地址转换成与要访问的存储器系统中的位置相关联的物理地址。可在一个或多个页表结构中定义虚拟地址与物理地址之间的映射。页表结构内的页表条目还可定义一些访问权限信息,这些访问权限信息可控制是否允许在处理电路系统上执行的给定软件过程访问特定虚拟地址。
45.在一些处理系统中,可由地址转换电路系统将所有虚拟地址映射到单个物理地址空间上,存储器系统使用该单个物理地址空间来识别要访问的存储器中的位置。在这种系统中,仅仅基于用于提供虚拟至物理地址转换映射的页表结构来提供对特定软件过程是否可访问特定地址的控制。然而,通常可由操作系统和/或管理程序来定义此类页表结构。如果操作系统或管理程序受损,则这可引起安全漏洞,在这种情况下,敏感信息可被攻击者访问。
46.因此,对于需要某些过程在与其他过程隔离的情况下安全地执行的一些系统而言,该系统可支持多个不同物理地址空间,其中对于存储器系统的至少一些部件而言,即使相应物理地址空间中的物理地址实际上对应于存储器中的相同位置,也将其虚拟地址被转换成不同物理地址空间中的物理地址的存储器访问请求看作是它们正在访问存储器中的完全单独的地址。通过将从处理电路系统的不同操作域的访问隔离到一些存储器系统部件所视为的相应不同物理地址空间中,这可提供不依赖于操作系统或管理程序所设定的页表权限信息的更强安全保证。
47.在存储器访问请求的虚拟地址可以映射到两个或更多个不同物理地址空间中的一个中的物理地址的系统中,可以使用颗粒保护信息来限制在特定物理地址空间内可以访问哪些物理地址。这对于确保在片上或片外的硬件中实现的某些物理存储器位置在需要时可以被限制在特定物理地址空间或物理地址空间的特定子集内访问是有用的。
48.因此,基于在较高级表中定义的可变嵌套控制参数来改变目标地址的偏移部分的大小的技术可以应用于定义用于限制哪些物理地址在针对给定存储器访问选择的特定物理地址空间内可访问的颗粒保护信息的表。因此,上述访问控制信息可以是定义哪些物理地址空间是物理地址的对应颗粒的所允许的物理地址空间的颗粒保护信息。
49.然而,上述可变嵌套技术还可以用于由虚拟地址索引的表结构,诸如页表,其提供由地址转换电路系统用来将目标虚拟地址转换成目标物理地址的地址转换映射。
50.尽管虚拟存储器的分配倾向于更加分段,使得更有可能的是使用固定的较大表级别数可以更有效地减少存储器中的表占有面积,但是可能存在一些区域,其中可以容忍较大的表占有面积以改善存储要快速访问的性能关键数据的某些区域的性能。因此,上面讨论的技术可以用于针对虚拟地址空间中存在足够的线性度使得级别数可以被减少的那些区域来针对遍历表时的性能来权衡表的存储器占有面积。因此,基于较高级访问控制表中的可变嵌套控制参数针对给定级别定义可变大小的偏移部分也可以应用于页表或由虚拟地址索引的任何其他访问控制表结构。上面讨论的访问控制信息可以包括来自用于地址转换的页表的寻址映射信息,并且还可以包括在页表中定义的其他访问权限信息,诸如定义虚拟地址的区域是可读/可写的还是应当是只读的信息,或者限制允许哪些权限/异常级别访问所述区域的信息。
51.上述技术可以在具有用于实现上述功能的硬件电路系统逻辑的硬件装置中实现。因此,存储器管理电路系统和表访问电路系统可以包括硬件电路逻辑。然而,在其他示例中,用于控制主机数据处理装置以提供用于执行目标代码的指令执行环境的计算机程序可以配备有存储器管理程序逻辑和表访问程序逻辑,所述存储器管理程序逻辑和表访问程序逻辑在软件中执行与上面讨论的存储器管理电路系统和表访问电路系统等效的功能。这对于例如使得为特定指令集架构编写的目标代码能够在可能不支持该指令集架构的主计算
机上执行是有用的。
52.因此,可以由模拟软件来仿真主计算机未提供的指令集架构所期望的功能,该模拟软件为目标代码提供了与在实际支持该指令集架构的硬件设备上执行目标代码的情况下所期望的等效的指令执行环境。因此,提供模拟的计算机程序可以包括:存储器管理程序逻辑,所述存储器管理程序逻辑基于在表结构的表条目中定义的访问控制信息来控制对模拟的存储器的访问;以及表访问程序逻辑,所述表访问程序逻辑用于访问表结构(所述表结构存储在主机数据处理装置的存储器中,但是通过访问指定模拟存储器中的地址来访问,所述地址模拟支持模拟指令集架构的真实目标处理装置将具有的存储器)。如在硬件设备中,可以基于可变嵌套控制参数来控制表结构的嵌套,以改变在表结构的给定级别处使用的偏移的大小。对于提供架构的模拟的方法,由任何地址转换和索引到任何物理索引表结构中产生的物理地址可以是模拟的物理地址空间内的物理地址,因为它们实际上不对应于由主机计算机的硬件部件标识的物理地址空间,而是将被映射到主机的虚拟地址空间内的地址。
53.提供这种模拟对于多种目的是有用的,例如用于使得为一个指令集架构编写的遗留代码能够在支持不同指令集架构的不同平台上执行,或者用于在支持新版本的指令集架构的硬件设备还不可用时,辅助为该新版本的指令集架构执行新软件的软件开发(这可以使得新版本的架构的软件能够与支持新版本的架构的硬件设备的开发并行地开始开发)。
54.图1示意性地示出了具有至少一个请求器设备4和至少一个完成器设备6的数据处理系统2的示例。互连线8提供请求器设备4与完成器设备6之间的通信。请求器设备能够发出请求对特定可寻址存储器系统位置的存储器访问的存储器访问请求。完成器设备6是负责为指向其的存储器访问请求提供服务的设备。尽管图1中未示出,但是一些设备可能能够既充当请求器设备又充当完成器设备。请求器设备4可例如包括处理元件诸如中央处理单元(cpu)或图形处理单元(gpu),或其他主设备诸如总线主设备、网络接口控制器、显示控制器等。完成器设备可包括负责控制对对应存储器存储单元的访问的存储器控制器、用于控制对外围设备的访问的外围控制器等。图1更详细地示出了请求器设备4之一的示例性配置,但应当理解,其他请求器设备4可具有类似配置。另选地,其他请求器设备可具有与图1左侧所示的请求器设备4不同的配置。
55.请求器设备4具有用于参考存储在寄存器12中的数据来响应于指令而执行数据处理的处理电路系统10。寄存器12可包括用于存储操作数和经处理的指令的结果的通用寄存器,以及用于存储控制数据以便配置处理电路系统如何执行处理的控制寄存器。例如,控制数据可包括用于选择哪个操作域是当前域的当前域指示14,以及指示哪个异常级别是处理电路系统10正在操作的当前异常级别的当前异常级别指示15。
56.处理电路系统10可能能够发出存储器访问请求,所述存储器访问请求指定识别要访问的可寻址位置的虚拟地址(va)和识别当前域的域标识符(域id或“安全状态”)。地址转换电路系统16(例如,存储器管理单元(mmu))通过基于存储在存储器系统中的页表结构中定义的页表数据的地址转换的一个或多个阶段来将虚拟地址转换成物理地址(pa)。页表行走电路系统17控制发出对从存储器系统请求页表条目的页表行走存储器访问请求,包括基于在基地址寄存器中定义的或由来自较高级表条目的指针提供的表基地址和从要转换的目标地址提取的偏移部分来生成页表条目的地址。转换后备缓冲器(tlb)18充当查找高速
缓存以便高速缓存该页表信息中的一些信息,从而比每次需要地址转换时必须从存储器获取页表信息的情形更快地访问。在该示例中,除了生成物理地址之外,地址转换电路系统16还选择与物理地址相关联的多个物理地址空间之一并且输出识别所选择的物理地址空间的物理地址空间(pas)标识符。下文将更详细地讨论pas的选择。
57.pas滤波器20充当请求器侧滤波电路系统以便基于转换的物理地址和pas标识符来检查是否允许在pas标识符所识别的指定的物理地址空间内访问该物理地址。该查找基于存储器系统内存储的颗粒保护表结构中存储的颗粒保护信息。颗粒保护表(gpt)行走电路系统23控制对存储器中的颗粒保护表结构的条目的访问。类似于页表行走电路系统17,gpt行走电路系统23控制发出对从存储器系统请求gpt条目的gpt行走存储器访问请求,包括基于在基地址寄存器中定义的或由来自较高级表条目的指针提供的表基地址和从要转换的目标地址提取的偏移部分来生成gpt条目的地址。与页表数据在tlb 18中的高速缓存类似,颗粒保护信息可高速缓存在颗粒保护信息高速缓存22内。虽然颗粒保护信息高速缓存22在图1的示例中被示出为与tlb 18分开的结构,但在其他示例中,可将这些类型的查找高速缓存组合成单个查找高速缓存结构以使得组合的结构的条目的单次查找提供页表信息和颗粒保护信息两者。颗粒保护信息定义限制可从其访问给定物理地址的物理地址空间的信息,并且基于该查找,pas滤波器20确定是否允许存储器访问请求继续发出到一个或多个高速缓存24和/或互连线8。如果不允许存储器访问请求的指定的pas访问指定的物理地址,则pas滤波器20阻断该事务并且可发信号通知故障。
58.地址转换电路系统16和pas滤波器20是存储器管理电路系统的示例。页表行走电路系统17和gpt行走电路系统23是表访问电路系统的示例。
59.虽然图1示出了包括具有多个请求器设备4的系统的示例,但为图1的左手侧上的一个请求器设备示出的特征也可包括在仅存在一个请求器设备(诸如单核处理器)的系统中。
60.虽然图1示出了由地址转换电路系统16执行给定请求对pas的选择的示例,但在其他示例中,可由地址转换电路系统16将用于确定要选择哪个pas的信息连同pa一起输出到pas滤波器20,并且pas滤波器20可选择pas并检查是否允许在所选择的pas内访问pa。
61.pas滤波器20的提供有助于支持可在多个操作域中操作的系统,每个操作域与其自身隔离的物理地址空间相关联,其中对于存储器系统的至少一部分而言(例如,对于一些高速缓存或一致性实施机构诸如探听滤波器而言),即使这些地址空间内的地址实际上涉及存储器系统中的相同物理位置,也将单独物理地址空间看作是它们涉及识别单独存储器系统位置的完全单独的地址集合。这对于安全目的可能是有用的。
62.图2示出了处理电路系统10可操作的不同操作状态和域的示例,以及可在不同异常级别和域中执行的软件的类型的示例(当然,应当理解,安装在系统上的特定软件由管理该系统的各方选择,因此不是硬件架构的基本特征)。
63.处理电路系统10可在多个不同异常级别80(在该示例中,被标记为el0、el1、el2和el3的四个异常级别)处操作,其中在该示例中,el3是指具有最高权限级别的异常级别,而el0是指具有最低权限的异常级别。应当理解,其他架构可选择相反编号以使得具有最高编号的异常级别可被视为具有最低权限。在该示例中,最低权限的异常级别el0用于应用程序级代码,次高权限的异常级别el1用于操作系统级代码,次高权限的异常级别el2用于管理
多个虚拟化操作系统之间的切换的管理程序级代码,而最高权限的异常级别el3用于管理相应域之间的切换和物理地址向物理地址空间的分配的监控代码,如稍后描述。
64.当在处理软件处于特定异常级别时发生异常的时候,对于一些类型的异常而言,产生至更高(更高权限)的异常级别的异常,其中基于发生的特定异常的属性来选择将产生该异常的特定异常级别。然而,在一些情况下,有可能在与和在产生异常时处理的代码相关联的异常级别相同的异常级别处产生其他类型的异常。当产生异常时,可保存表征在产生该异常时的处理器的状态的信息,包括例如产生该异常时的当前异常级别,因此一旦已处理异常处理程序以处理该异常,处理可就返回到前一处理并且保存的信息可用于识别处理应返回到的异常级别。
65.除了不同异常级别之外,处理电路系统还支持多个操作域,包括根域82、安全(s)域84、较不安全域86和领域域88。为了便于参考,较不安全域在下文中将被描述为“非安全”(ns)域,但应当理解,这并非旨在暗示安全的任何特定级别(或缺乏安全)。相反,“非安全”仅仅指示非安全域旨在用于不如在安全域中操作的代码那样安全的代码。在处理电路系统10处于最高异常级别el3时选择根域82。当处理电路系统处于其他异常级别el0至el2之一时,基于当前域指示符14来选择当前域,该当前域指示符指示其他域84、86、88中的哪个域是活动的。对于其他域84、86、88中的每个域而言,处理电路系统可处于异常级别el0、el1或el2中的任何异常级别。
66.在引导时间,可例如在更高权限的异常级别el3或el2内执行引导代码(例如,bl1、bl2、oem引导)的多个片段。引导代码bl1、bl2可与例如根域相关联,并且oem引导代码可在安全域中操作。然而,一旦引导该系统,在运行时,处理电路系统10就可被视为一次在域82、84、86和88之一中操作。域82至88中的每个域与其自身的相关联的物理地址空间(pas)相关联,这实现了将来自不同域的数据隔离在存储器系统的至少一部分内。这将在下文更详细地描述。
67.非安全域86可用于常规应用程序级处理,并且可用于操作系统和管理程序活动以便管理此类应用程序。从而,在非安全域86内,可存在在el0处操作的应用程序代码30、在el1处操作的操作系统(os)代码32以及在el2处操作的管理程序代码34。
68.安全域84使某些片上系统安全性、介质或系统服务能够隔离到与用于非安全处理的物理地址空间分开的物理地址空间中。非安全域代码无法访问与安全域84相关联的资源,而安全域可访问安全资源和非安全资源两者,从这个意义上讲,安全域和非安全域不等同。支持安全域84和非安全域86的这种分区的系统的示例是基于安谋公司(limited)提供的架构的系统。安全域可运行el0处的可信应用程序36、el1处的可信操作系统38以及任选地el2处的安全分区管理器40,如果支持安全分区,则该安全分区管理器使用阶段2页表来支持在安全域84中执行的不同可信操作系统38之间的隔离,其采用的方式类似于管理程序34可管理在非安全域86中执行的虚拟机或客操作系统32之间的隔离的方式。
69.将该系统扩展到支持安全域84在近年来已变得很普遍,因为其使单个硬件处理器能够支持隔离的安全处理,从而避免了在单独硬件处理器上执行该处理的需要。然而,随着安全域的使用的日益普及,许多具有这种安全域的实际系统现已在安全域内支持各种各样的不同软件提供商所提供的相对复杂的混合服务环境。例如,在安全域84中操作的代码可
包括由以下(除了别的之外)提供的软件的不同片段:制造集成电路的硅片提供商、将硅片提供商所提供的集成电路组装成电子设备诸如移动电话的原始设备制造商(oem)、为该设备提供操作系统32的操作系统供应商(osv);和/或管理云服务器的云平台提供商,该云服务器通过云来支持用于多个不同客户端的服务。
70.然而,越来越期望为提供用户级代码(通常可能预期该用户级代码作为非安全域86内的应用程序30来执行)的各方提供安全计算环境,可信任所述安全计算环境不会将信息泄露给在相同物理平台上操作代码的其他方。可能期望此类安全计算环境可在运行时动态地分配,并且被认证和可证明,以使得用户能够在信任该设备处理潜在敏感的代码或数据之前验证是否在物理平台上提供足够的安全保证。这种软件的用户可能不希望信任提供可能通常在非安全域86中操作的富操作系统32或管理程序34的一方(或即使可信任这些提供商自身,用户也可能希望保护他们自身免于操作系统32或管理程序34受到攻击者的损害)。另外,虽然安全域84可用于需要安全处理的此类用户提供的应用程序,但实际上这会给提供需要安全计算环境的代码的用户和在安全域84内操作的现有代码的提供商带来问题。对于在安全域84内操作的现有代码的提供商而言,在安全域内添加任意的用户提供的代码将增加对其代码的潜在攻击的攻击面,这可能是不期望的,因此可能强烈建议不要允许用户将代码添加到安全域84中。另一方面,提供需要安全计算环境的代码的用户可能不愿意信任在安全域84中操作的代码的不同片段的所有提供商都有权访问其数据或代码,如果需要在特定域中操作的代码的认证或证明作为用户提供的代码执行其处理的先决条件,则可能难以审核和认证不同软件提供商所提供的在安全域84中操作的代码的所有不同片段,这可限制第三方提供更安全的服务的机会。
71.因此,如图2所示,提供了附加域88(称为领域域),该附加域可由此类用户引入的代码使用以提供与和在安全域24中操作的部件相关联的任何安全计算环境正交的安全计算环境。在领域域中,所执行的软件可包括多个领域,其中可由在异常级别el2处操作的领域管理模块(rmm)46将每个领域与其他领域隔离。rmm 46可例如通过定义页表结构中的访问权限和地址映射来控制执行领域域88的相应领域42、44之间的隔离,其采用的方式类似于管理程序34管理在非安全域86中操作的不同部件之间的隔离的方式。在该示例中,所述领域包括在el0处执行的应用程序级领域42以及跨异常级别el0和el1执行的封装应用程序/操作系统领域44。应当理解,没有必要同时支持el0和el0/el1类型的领域,并且可由rmm 46建立相同类型的多个领域。
72.与安全域84类似,领域域88具有向其分配的其自身物理地址空间,但领域域88和安全域84可各自访问与非安全域86相关联的非安全pas,而领域域88和安全域84无法访问彼此的物理地址空间,从这个意义上讲,领域域正交于安全域84。这意味着在领域域88和安全域84中执行的代码彼此没有依赖性。领域域中的代码仅需要信任硬件rmm 46和在根域82中操作的管理域之间的切换的代码,这意味着证明和认证变得更可行。证明使软件的给定片段能够请求验证安装在设备上的代码匹配某些预期特性。这可通过以下方式实现:检查安装在设备上的程序代码的散列是否匹配可信方使用密码协议签署的预期值。可例如通过以下方式证明rmm 46和监控代码29:检查该软件的散列是否匹配可信方签署的预期值,该可信方诸如为制造包括处理系统2的集成电路的硅片提供商或设计支持基于域的存储器访问控制的处理器架构的架构提供商。这可允许用户提供的代码42、44在执行任何安全或敏
感功能之前验证是否可信任基于域的架构的完整性。
73.从而,可以看出,与领域42、44相关联的代码(该代码先前已在非安全域86中执行,如虚线所示,这些虚线示出了这些过程先前已执行的非安全域中的间隙)现在可移动到领域域,在该领域域中,它们可具有更强的安全保证,因为它们的数据和代码不会被在非安全域86中操作的其他代码访问。然而,由于领域域88和安全域84正交并因此无法看到彼此的物理地址空间的事实,这意味着领域域中的代码的提供商不需要信任安全域中的代码的提供商,反之亦然。领域域中的代码可简单地信任为根域82提供监控代码29的可信固件以及可由硅片提供商或处理器所支持的指令集架构的提供商(在代码在其设备上执行时,该提供商可能已经内在地需要被信任)提供的rmm 46,以使得不需要与其他操作系统供应商、oem或云主机的进一步信任关系,就能够为用户提供安全计算环境。
74.这可用于一系列应用程序和用例,包括例如移动钱包和支付应用程序、游戏防作弊和盗版机制、操作系统平台安全增强、安全虚拟机托管、机密计算、联网或物联网设备的网关处理。应当理解,用户可找到领域支持有用的许多其他应用程序。
75.为了支持向领域提供的安全保证,处理系统可支持证明报告功能,其中在引导时间或在运行时间,对固件图像和配置(例如,监控代码图像和配置或rmm代码图像和配置)进行测量,并且在运行时,测量领域内容和配置,以使得领域所有者可将相关证明报告回溯到已知实现和认证,从而对是否在该系统上操作作出信任决策。
76.如图2所示,提供了管理域切换的单独根域82,并且该根域具有其自身的隔离的根物理地址空间。即使对于仅具有非安全域86和安全域84但没有领域域88的系统,根域的创建和其资源与安全域的隔离也允许更稳健的实现,但还可用于不支持领域域88的实现。根域82可使用由硅片提供商或架构设计者提供(或认证)的监控软件29来实现,并且可用于提供安全引导功能、可信引导测量、片上系统配置、调试控制和其他方(诸如oem)所提供的固件部件的固件更新的管理。可由硅片提供商或架构设计者在不依赖于最终设备的情况下开发、认证和部署根域代码。相比之下,可由oem管理安全域84以便实现某些平台和安全服务。可由操作系统32控制非安全域86的管理以提供操作系统服务,而领域域88允许开发新形式的可信执行环境,这些可信执行环境可专用于用户或第三方应用程序,同时与安全域84中的现有安全软件环境相互隔离。
77.图3示意性地示出了用于支持这些技术的处理系统2的另一个示例。用相同附图标记示出与图1中相同的元件。图3更详细地示出了地址转换电路系统16,该地址转换电路系统包括阶段1存储器管理单元50和阶段2存储器管理单元52。阶段1mmu 50可负责将虚拟地址转换为物理地址(当该转换由el2或el3代码触发时)或转换为中间地址(当该转换由el0或el1代码在一定操作状态下触发时,在该操作状态下,需要由阶段2mmu 52进行进一步阶段2转换)。阶段2mmu可将中间地址转换成物理地址。阶段1mmu可基于由操作系统控制的用于从el0或el1发起的转换的页表、由管理程序控制的用于来自el2的转换的页表或由监控代码29控制的用于来自el3的转换的页表。另一方面,阶段2mmu 52可基于由管理程序34、rmm 46或安全分区管理器14定义的页表结构,具体取决于要使用哪个域。以这种方式将这些转换分成两个阶段允许操作系统管理其自身和应用程序的地址转换(假设它们是在该系统上运行的唯一操作系统),而rmm 46、管理程序34或spm40可管理在相同域中运行的不同操作系统之间的隔离。
78.如图3所示,使用地址转换电路系统16的地址转换过程可返回安全属性54,所述安全属性与当前异常级别15和当前域14(或安全状态)相结合,允许响应于给定存储器访问请求而访问特定物理地址空间(由pas标识符或“pas tag”识别)的一部分。可在提供先前描述的颗粒保护信息的颗粒保护表56中查找物理地址和pas标识符。在该示例中,pas滤波器20被示出为颗粒状存储器保护单元(gmpu),其验证是否允许所选择的pas访问请求的物理地址,如果是这样,则允许该事务传递到作为存储器系统的系统结构的一部分的任何高速缓存24或互连线8。
79.gmpu 20允许将存储器分配到单独地址空间,同时提供基于硬件的强隔离保证并且在物理存储器向这些地址空间中分配的方法方面提供空间和时间灵活性以及高效共享方案。如先前所描述,该系统中的执行单元被逻辑地分区为虚拟执行状态(域或“世界”),其中存在位于最高异常级别(el3)处的一个执行状态(根世界),该执行状态被称为“根世界”,其管理物理存储器向这些世界的分配。
80.单个系统物理地址空间被虚拟化成多个“逻辑”或“架构”物理地址空间(pas),其中每个此类pas是具有独立一致性属性的正交地址空间。通过用pas标签扩展系统物理地址来将该系统物理地址映射到单个“逻辑”物理地址空间。
81.允许给定世界访问逻辑物理地址空间的子集。这由硬件滤波器20实施,该硬件滤波器可附接到存储器管理单元16的输出。
82.世界使用用于地址转换的页表的转换表描述符中的字段来定义该访问的安全属性(pas标签)。硬件滤波器20有权访问表(颗粒保护表56或gpt),该表为系统物理地址空间中的每页定义颗粒保护信息(gpi),该gpi指示与之相关联的pas tag和(任选地)其他颗粒保护属性。
83.硬件滤波器20比照颗粒的gpi来检查世界id和安全属性,并且决定是否可授予访问权限,从而形成颗粒状存储器保护单元(gmpu)。
84.例如,gpt 56可驻留在片上sram中或片外dram中。如果在片外存储,则gpt 56可由片上存储器保护引擎来进行完整性保护,该片上存储器保护引擎可使用加密、完整性和新鲜度机制来保持gpt 56的安全性。
85.将gmpu 20定位在该系统的请求器侧上(例如,mmu输出上)而不是定位在完成器侧上允许按页粒度分配访问权限,同时允许互连线8继续跨多个dram端口对该页进行散列化/剥离。
86.事务仍然标记有pas tag,因为它们在整个系统结构24、8中传播直到到达被定义为物理别名点60的位置。这允许将滤波器定位在主侧上,而与从侧滤波相比不会削弱安全保证。由于该事务在整个系统中传播,pas tag可用作用于地址隔离的纵深安全机制:例如,高速缓存可将pas tag添加到高速缓存中的地址标签,从而防止使用错误pas tag对相同pa进行的访问在高速缓存中命中并因此改善抗侧信道攻击。pas tag还可用作附接到存储器控制器的保护引擎的上下文选择器,其在将数据写入到外部dram之前对数据进行加密。
87.物理别名点(popa)是pas tag被剥离并且地址从逻辑物理地址变回到系统物理地址的系统中的位置。popa可位于高速缓存下方的系统的完成器侧处,在此处(使用通过pas tag解决的加密上下文)对物理dram进行访问。另选地,其可位于高速缓存上方以便以安全性降低的代价简化系统实现。
88.在任何时间点,世界均可请求将页从一个pas转换到另一个pas。对el3处的监控代码29作出请求,该监控代码检查gpi的当前状态。el3可仅允许发生特定组的转换(例如,从非安全pas到安全pas,但不从领域pas到安全pas)。为了提供干净转变,该系统支持新指令
‑“
数据清理和无效至物理别名点”,el3可在将页转变到新pas之前提交该指令

这保证与前一pas相关联的任何残余状态从popa 60上游(比popa 60更靠近请求器侧)的任何高速缓存刷新。
89.可通过将gmpu 20附接到主侧来实现的另一种特性是存储器在世界之间的高效共享。可能期望为n个世界的子集授予共享访问物理颗粒的权限,同时防止其他世界访问该物理颗粒。这可通过以下方式实现:将“限制性共享”语义添加到颗粒保护信息,同时迫使其使用特定pas tag。作为一个示例,gpi可指示物理颗粒可仅由“领域世界”88和“安全世界”84访问,同时标记有安全pas 84的pas tag。
90.上述特性的示例是使特定物理颗粒的可见性特性作出快速变化。考虑为每个世界分配仅可供该世界访问的专用pas的情况。对于特定颗粒而言,该世界可请求在任何时间点通过以下方式使这些颗粒对非安全世界可见:将其gpi从“独占”改变为“与非安全世界限制性共享”,同时不改变pas关联。这样,可增加该颗粒的可见性而不需要昂贵的高速缓存维护或数据复制操作。
91.图4示出了相应物理地址空间向硬件中提供的物理存储器上的别名的概念。如先前所描述,域82、84、86、88中的每个域具有其自身的相应物理地址空间61。
92.在地址转换电路系统16生成物理地址的时间点,物理地址具有由该系统支持的一定数值范围62内的值,不论选择哪个物理地址空间,该值都相同。然而,除了物理地址的生成之外,地址转换电路系统16还可基于当前域14和/或用于导出物理地址的页表条目中的信息来选择特定物理地址空间(pas)。另选地,并非地址转换电路系统16执行pas的选择,而是地址转换电路系统(例如,mmu)可输出从页表条目(pte)导出的用于选择pas的物理地址和信息,然后pas滤波器或gmpu 20可使用该信息来选择pas。
93.可根据处理电路系统10在发出存储器访问请求时正在操作的当前域,按照下表中定义的规则来限制给定存储器访问请求对pas的选择:
94.当前域非安全pas安全pas领域pas根pas非安全可访问不可访问不可访问不可访问安全可访问可访问不可访问不可访问领域可访问不可访问可访问不可访问根可访问可访问可访问可访问
95.对于存在可供选择的多个物理地址空间的那些域而言,来自用于提供物理地址的访问的页表条目的信息用于在可用pas选项之间选择。
96.从而,在pas滤波器20将存储器访问请求输出到系统结构24、8的时间点(假设其通过了任何滤波检查),存储器访问请求与物理地址(pa)和所选择的物理地址空间(pas)相关联。
97.从在物理别名点(popa)60之前操作的存储器系统部件(诸如高速缓存、互连线、探听滤波器等)的角度来看,相应物理地址空间61被看作是对应于存储器内的不同系统位置的完全单独的地址范围。这意味着,从前popa存储器系统部件的角度来看,存储器访问请求
所识别的地址范围实际上是可在地址转换中输出的范围62的大小的四倍,因为实际上pas标识符被看作是物理地址自身旁边的附加地址位,以使得根据选择哪个pas,可将相同物理地址pax映射到不同物理地址空间61中的多个别名物理地址63。这些别名物理地址63实际上全都对应于物理硬件中实现的相同存储器系统位置,但前popa存储器系统部件将别名地址63看作是单独地址。从而,如果存在为此类地址分配条目的任何前popa高速缓存或探听滤波器,则别名地址63将被映射到具有单独高速缓存命中/未命中决策和单独一致性管理的不同条目中。这降低了攻击者使用高速缓存或一致性侧信道作为探测其他域的操作的机构的可能性或有效性。
98.系统可以包括多于一个popa 60。在每个popa 60处,别名物理地址收缩成系统物理地址空间64中的单个去别名地址65。在任何后popa部件的下游提供去别名地址65,以使得实际上识别存储器系统位置的系统物理地址空间64再一次为与在请求器侧上执行的地址转换中可输出的物理地址范围相同的大小。例如,在popa 60处,可从这些地址中剥离pas标识符,并且对于下游部件而言,这些地址可简单地使用物理地址值来识别,而不指定pas。另选地,对于期望存储器访问请求的一些完成器侧滤波的一些情况而言,pas标识符仍可在popa 60的下游提供,但可不被解释为地址的一部分,以使得在不同物理地址空间60中出现的相同物理地址将在popa的下游解释为涉及相同存储器系统位置,但供应的pas标识符仍可用于执行任何完成器侧安全检查。
99.图5示出了可如何使用颗粒保护表56将系统物理地址空间64分成为特定架构物理地址空间61内的访问分配的组块。颗粒保护表(gpt)56定义允许从每个架构物理地址空间61访问系统物理地址空间65的哪些部分。例如,gpt 56可包括各自与一定大小(例如,4k页)的物理地址颗粒相对应的多个条目,并且可定义为该颗粒分配的pas,该pas可从非安全域、安全域、领域域和根域中选择。根据设计,如果特定颗粒或颗粒组被分配到与这些域之一相关联的pas,则其仅可在与该域相关联的pas内访问并且无法在其他域的pas内访问。然而,应当注意,虽然无法从根pas内访问分配到安全pas(举例来说)的颗粒,但是根域82能够通过以下方式访问该物理地址颗粒:在其页表中指定pas选择信息,以便确保与映射到物理寻址的存储器的该区域的页相关联的虚拟地址转换成安全pas(而非根pas)中的物理地址。从而,可在为给定存储器访问请求选择pas的时间点控制数据跨域的共享(达到先前描述的表中定义的可访问性/不可访问性规则所允许的程度)。
100.然而,在一些具体实施中,除了允许在gpt所定义的分配的pas内访问物理地址颗粒之外,gpt还可使用其他gpt属性将地址空间的某些区域标记为与另一个地址空间(例如,与更低或正交权限的域相关联的地址空间(通常不允许其为该域的访问请求选择分配的pas))共享。这可促进数据的暂时共享而不需要改变给定颗粒的分配的pas。例如,在图5中,领域pas的区域70在gpt中定义为被分配到领域域,因此通常不可从非安全域86访问,这是由于非安全域86无法为其访问请求选择领域pas。由于非安全域26无法访问领域pas,于是通常非安全代码无法看到区域70中的数据。然而,如果领域暂时希望将存储器的其分配区域中的其数据中的一些数据与非安全域共享,则其可请求在根域82中操作的监控代码29更新gpt 56以指示区域70将与非安全域86共享,并且这可使区域70也可从如图5的左手侧上所示的非安全pas访问,而不需要改变哪个域是区域70的分配的域。如果领域域已将其地址空间的某区域指定为与非安全域共享,则尽管从非安全域发出的以该区域为目标的存储器
访问请求最初可指定非安全pas,但是pas滤波器20可重映射该请求的pas标识符以相反地指定领域pas,从而下游存储器系统部件将该请求看作是其始终从领域域发出。该共享可提高性能,因为用于将不同域分配到特定存储器区域的操作可更为性能密集性的,其涉及更大程度的高速缓存/tlb无效和/或存储器中的数据归零或数据在存储器区域之间的复制(如果预期共享仅是暂时的,则这可为不正当的)。
101.图6是示出如何确定当前操作域的流程图,这可由处理电路系统10或由地址转换电路系统16或pas滤波器20执行。在步骤100处,确定当前异常级别15是否为el3,如果是这样,则在步骤102处,将当前域确定为根域82。如果当前异常级别不是el3,则在步骤104处,将当前域确定为非安全域86、安全域84和领域域88中的一者,如处理器的el3控制寄存器内的至少两个域指示位14所指示(由于根域由作为el3的当前异常级别来指示,可能不必要具有与根域相对应的域指示位14的编码,因此可为其他目的预留域指示位的至少一个编码)。el3控制寄存器可在el3处操作时写入并且无法从其他异常级别el2-el0写入。
102.图7示出了可用于页表结构中的页表条目的页表条目(pte)格式的示例,这些页表条目由地址转换电路系统16用于将虚拟地址映射到物理地址,将虚拟地址映射到中间地址,或将中间地址映射到物理地址(具体取决于是否在完全需要阶段2转换的操作状态下执行转换,以及如果需要阶段2转换,则该转换是阶段1转换还是阶段2转换)。一般来讲,给定页表结构可被定义为多级表结构,其被实现为页表树,其中基于存储在处理器的转换表基地址寄存器中的基地址来识别页表的第一级别,并且从对其执行转换查找的输入地址的位子集导出在页表内选择特定级别1页表条目的索引(输入地址可以是用于阶段1转换的虚拟地址或用于阶段2转换的中间地址)。级别1页表条目可以是提供指向下一级别页表的指针112的“表描述符”110,然后可基于输入地址的进一步的位子集来从下一级别页表选择进一步的页表条目。最后,在对页表连续级别的一次或多次查找之后,可识别块或页描述符pte 114、116、118,该块或页描述符提供与输入地址相对应的输出地址120。输出地址可以是中间地址(对于在还执行进一步阶段2转换的操作状态下执行的阶段1转换)或物理地址(对于阶段2转换或在不需要阶段2时的阶段1转换)。
103.为了支持上述不同物理地址空间,除了下一级别页表指针112或输出地址120以及用于控制对存储器的对应块的访问的任何属性122之外,页表条目格式还指定用于物理地址空间选择的一些附加状态。
104.对于表描述符110而言,除了非安全域86之外的任何域所使用的pte包括非安全表指示符124,该非安全表指示符指示是否将从非安全物理地址空间或从当前域的物理地址空间访问下一级别页表。这有助于促进页表的更高效管理。通常根域、领域域或安全域24所使用的页表结构可仅需要为虚拟地址空间的一部分定义特殊页表条目,并且对于其他部分而言,可使用非安全域26所使用的相同页表条目,因此通过提供非安全表指示符124,这可允许页表结构的更高级别提供专用领域/安全表描述符,同时在页表树的一定点处,根领域域或安全域可切换到将来自非安全域的页表条目用于地址空间中那些不需要更高安全性的部分。仍可从与根域、领域域或安全域相关联的相关物理地址空间获取页表树的其他部分中的其他页表描述符。
105.另一方面,块/页描述符114、116、118可根据它们与哪个域相关联来包括物理地址空间选择信息126。非安全域86中使用的非安全块/页描述符118不包括任何pas选择信息,
因为非安全域仅能够访问非安全pas。然而,对于其他域而言,块/页描述符114、116包括pas选择信息126,该pas选择信息用于选择要将输入地址转换成哪个pas。对于根域22而言,el3页表条目可具有pas选择信息126,该pas选择信息包括至少2位以将与4个域82、84、86、88中的任何域相关联的pas指示为对应物理地址将被转换成的所选择的pas。相比之下,对于领域域和安全域而言,对应块/页描述符116仅需要包括一位pas选择信息126,其对于领域域而言在领域pas和非安全pas之间选择,并且对于安全域而言在安全pas和非安全pas之间选择。为了提高电路实现的效率并且避免增加页表条目的大小,对于领域域和安全域而言,块/页描述符116可在pte内的相同位置处编码pas选择信息126,而不考虑当前域是领域域还是安全域,以使得pas选择位126可共享。
106.如图8所示,页表结构可以使用多个级别的页表150、152、154、156来实现,所述页表可以在页表行走操作中被遍历以识别用于特定目标地址的地址映射。如图8所示,给定的一组索引位l0i可以用于索引到零级页表150中,所述零级页表在存储器中的位置由零级(l0)基地址151标识。l0表150的索引条目标识提供l1基地址的指针,所述l1基地址标识l1页表152在存储器中的位置。来自目标地址的索引位l1i的不同子集选择l1页表152的条目中的一个条目,所述条目然后标识l2基地址,所述l2基地址标识l2页表154的存储器位置。来自目标地址的索引位l2i的另一个子集索引到l2页表154中,以标识l3基地址,所述l3基地址标识l3页表156的位置。然后,目标地址的位l3i的又一个子集选择l3页表156的特定条目,所述特定条目提供用于将目标地址映射到转换地址(诸如物理地址)的实际地址映射(以及提供任何相关联的访问权限和/或pas选择信息)。因此,l3页表156是提供叶页表条目的最终页表,所述叶页表条目提供实际地址映射信息,并且较高级页表150、152、154提供标识下一级页表的基地址的中间条目。
107.应当理解,提供四个级别的页表仅是一个示例,并且其他示例可以使用不同级别数的页表。此外,可能的是,如果较大地址空间块要共享相同的转换映射和其他信息,则较高级页表150、152、154中的条目中的一个条目可以指定它是直接提供地址映射的叶条目,使得不需要进一步逐步通过后续级别(而同一较高级页表150、152、154内的其他条目仍然可以充当包括指向后续级页表的基地址的分支条目)。
108.通过以这种方式将页表拆分成不同的级别,可以减少存储整个页表结构所需的存储器存储的总量,因为不需要定位用于转换存储器区域中的给定量的地址空间的地址映射,所述存储器区域具有与被映射的地址大小成比例的大小,这利用了通常较大地址空间组块不具有由操作系统或设置地址转换数据的其他进程定义的任何映射的事实。虽然图8示出了索引位l0i、l1i等被直接用作用于选择对应页表条目的索引的示例,但是索引也可以是应用于所述索引位的散列函数的结果。
109.在一些系统中,tlb 18可以包括用于高速缓存来自页表的不同级别的转换条目的单独的高速缓存结构。例如,tlb 18可以包括用于高速缓存来自最终级页表156的叶条目的主tlb结构,以及用于高速缓存来自页表150、152、154的较高级页表条目的行走高速缓存结构。另一方面,其他实施方案可提供使用共享高速缓存结构来高速缓存来自页表的多个层级的地址转换数据的tlb。其他实施方案可仅高速缓存可被查找以提供对应于给定va的地址映射的叶条目,但可不携载来自较高级页表150、152、154的分支条目。可以使用这些方法中的任何方法。虽然图1示出了单个tlb 18,但一些实施方案可包括高速缓存层级中的多个
级别的tlb高速缓存结构,以针对存取等待时间权衡容量(例如,存储于级别0tlb中的较少数目个条目用于快速访问,且存储于级别1tlb中的较大数目个条目用于在级别0tlb中未命中的情况下的较慢访问)。
110.对于处理器10的一些操作状态,地址转换过程还可以涉及多个地址转换阶段(是需要一个还是两个地址转换阶段可以取决于当前异常级别15和/或寄存器12中设置的配置信息)。例如,在阶段1转换中,用于通过由运行在cpu 4上的应用程序或操作系统执行的指令来识别存储器位置的va可以被转换成中间物理地址(ipa)。用于控制阶段1地址转换的阶段1地址转换结构可以例如由在el1处操作的操作系统或另一个进程设置。从操作系统的角度来看,在阶段1地址转换中生成的ipa可以被假定为被访问的实际存储器位置的物理地址。然而,为了支持虚拟化并防止由共存在同一设备上的不同操作系统使用的相同ipa冲突,在el2处操作的管理程序或其他进程然后可以在ipa与pa之间提供进一步的第二阶段地址转换以提供给存储器系统。如上文参考图4和图5所描述的,这些pa可以是所选择的物理地址空间内的pa,并且一些前popa存储器系统部件可以将不同物理地址空间中的相同pa值视为好像它们指代不同的物理位置。因此,可以存在由在el2处操作的代码定义的第二阶段转换表结构,以控制阶段2地址转换。
111.注意,地址转换的两个阶段中的每一个阶段可以使用多个级别的页表,如图8所示。因此,用于识别由目标va标识的给定地址块的地址映射的全页表行走可能需要在阶段1地址转换中使用的页表的每个基地址在访问对应级别的阶段1页表之前经历阶段2地址转换。也就是说,对于阶段1表和阶段2表两者包括4个级别的页表的示例,如图8所示,完整页表行走过程可以包括以以下序列访问多个级别的页表:
112.·
阶段1级别0页表的基地址121到pa的阶段2转换(阶段1级别0基地址可为ipa地址,因为阶段1转换结构由在el1处操作的代码配置)。阶段2转换包括4个查找(阶段2,级别0;阶段2,级别1;阶段2,级别2;阶段2,级别3)。
113.·
基于目标va的级别0索引部分l0i的阶段1级别0查找,以标识阶段1级别1基地址(ipa)
114.·
阶段1级别1基地址到pa的阶段2转换(同样包括4个查找)。
115.·
基于目标va的1级索引部分l1i的阶段1级别1查找,以标识阶段1级别2基地址(ipa)
116.·
阶段1级别2基地址到pa的阶段2转换(同样包括4个查找)
117.·
基于目标va的级别2索引部分l2i的阶段1级别2查找,以标识阶段1级别3基地址(ipa)
118.·
阶段1级别3基地址到pa的阶段2转换(同样包括4个查找)。
119.·
基于目标虚拟地址的级别3索引部分l3i的阶段1级别3查找,以标识对应于目标va的目标ipa。
120.·
目标ipa到目标pa的阶段2转换(同样包括4个查找),其可以作为对应于原始目标va的所转换的地址返回。
121.因此,在没有任何高速缓存的情况下,转换将总共包括24个查找。从以上序列可以看出,执行整个页表行走过程可能非常慢,因为它可能需要对存储器的大量访问以逐步通过用于地址转换阶段中的每一个地址转换阶段的页表级别中的每一个页表级别。这就是为
什么常常期望不仅高速缓存最后级别地址映射,而且高速缓存来自tlb 18内的阶段1和阶段2表的较高级页表的条目的信息。这可以允许绕过全页表行走的至少一些步骤,即使给定目标地址的最后级别地址映射当前不在地址转换高速缓存中也是如此。
122.在支持两个地址转换阶段的系统中,一些tlb 18可以被实现为拆分tlb,其中单独的高速缓存结构被提供用于分别高速缓存来自阶段1和阶段2页表结构的信息。在这种情况下,可能需要两个单独的tlb查找来处理指定va的转换请求,在阶段1tlb中进行一个查找以识别对应的ipa,并且在阶段2tlb中进行一个查找以识别对应于所述ipa的pa。替代地,可以提供组合的阶段1和阶段2tlb 18,其中,尽管针对经受两个地址转换阶段的地址请求的页表行走操作需要阶段1和阶段2页表结构的单独查找以首先识别va到ipa的映射,并且然后识别ipa到pa的映射,但一旦这已经完成,组合的阶段1和阶段2tlb就可以被分配有将va直接映射到pa的条目,使得在未来对同一va进行访问时,可以从tlb 18读出pa而不需要执行两个单独的查找。
123.在具有多个级别的典型页表结构中,诸如图8所示,结构的最大级别数是固定的(例如,图8的示例中的4个级别)。另外,表结构的给定级别处的表的表大小、给定级别处的单独表条目适用的地址空间的区域的大小以及偏移位的位置/大小通常是固定的并且完全不可变的,或者是可以基于针对表结构作为整体设置的全局参数而变化的。
124.例如,4级页表结构可以用从多个选项(例如,4、16或64kb)中可选择的可变粒度大小来实现,并且在这种情况下,对于一个示例性实现方式,每条目大小、偏移位位置/大小和表大小可以如下:
125.(注意:
126.·“每条目大小”指示给定级别处的给定页表条目中的信息适用的地址范围的大小(而不是所述条目本身的表数据的大小);
127.·“颗粒大小”是指在级别3处的块描述符条目的每条目大小;
128.·“偏移位”是指从输入地址(阶段1的va,阶段2的ipa)提取以从表结构的给定级别处的表中选择特定条目的位;并且
129.·“表大小”是指可为表分配的最小表大小,其对应于与一个表条目的表数据的大小与2
x
的乘积对应的大小,其中x是用于索引到所述级别的表的偏移位数。此特定示例假设表条目每条目具有64位表数据,即8字节,但其他示例可使用不同条目大小。
[0130][0131]
在此特定示例中,对使用52位地址存在限制,并且当所选择的颗粒大小是4kb或16kb时,最大虚拟地址区域大小是48位。类似地,输出地址限于48位。在此示例中,仅在使用64kb颗粒大小时,可以使用52位地址。当然,其他示例可以定义其他大小的地址。
[0132]
应当理解,上表示出了用于一个特定示例的各个级别的偏移部分,并且特定的偏移部分大小/位置不是必需的。然而,其用于说明,在典型的页表中,提取给定表级别的偏移
部分的位置/大小对于整个表结构内所述级别处的所有表是相同的(它们在相同级别处的不同表之间不变化),并且对于所述级别是固定的(如果仅支持固定的颗粒大小),或者基于针对表结构作为整体定义的全局参数是可变的。
[0133]
还应注意,如果在不同于级别3的级别处定义块描述符条目,则它定义可应用于由所述级别的“每条目大小”指示的大小的区域的访问控制信息,例如,对于4kb颗粒大小,级别1处的任何条目(表描述符或块描述符)将可应用于大小为1gb的区域,因此,如果邻接的1gb区域中的所有地址将共享相同的访问控制属性,则块描述符只能在级别1处定义(与页表中指示的权限相关联的任何地址映射,和pas选择信息)。如果要定义具有不同访问控制属性的4kb区域,则将需要在级别3处提供块描述符条目,并且将需要页表结构的完整4个遍历级别。
[0134]
图9是流程图,其示出了基于当前域以及来自块/页pte的用于针对给定存储器访问请求生成物理地址的信息124、126来选择pas的方法。可由地址转换电路系统16执行pas选择,或如果地址转换电路系统将pas选择信息126转发到pas滤波器20,则可由地址转换电路系统16和pas滤波器20的组合执行pas选择。
[0135]
在图8中的步骤130处,处理电路系统10发出将给定虚拟地址(va)指定为目标va的存储器访问请求。在步骤132处,地址转换电路系统16在其tlb 18中查找任何页表条目(或从此类页表条目导出的高速缓存的信息)。如果任何所需的页表信息不可用,则地址转换电路系统16发起至存储器的页表漫游以获取所需的pte(潜在地需要一系列存储器访问以逐步经过页表结构的相应级别,和/或潜在地需要地址转换的多个阶段以获得从va至中间地址(ipa)再从ipa至pa的映射)。应当注意,地址转换电路系统16在页表漫游操作中发出的任何存储器访问请求可自身经受地址转换和pas滤波,因此在步骤130处接收到的请求可以是为从存储器请求页表条目而发出的存储器访问请求。一旦已识别相关页表信息,就(可能在两个阶段中经由ipa)将虚拟地址转换成物理地址。在步骤134处,地址转换电路系统16或pas滤波器20使用图6所示的方法来确定哪个域是当前域。
[0136]
如果当前域是非安全域,则在步骤136处,为该存储器访问请求选择的输出pas是非安全pas。
[0137]
如果当前域是安全域,则在步骤138处,基于包括在块/页描述符pte中的提供物理地址的pas选择信息126来选择输出pas,其中输出pas将被选择为安全pas或非安全pas。
[0138]
如果当前域是领域域,则在步骤140处,基于包括在块/页描述符pte中的从其导出物理地址的pas选择信息126来选择输出pas,并且在这种情况下,输出pas被选择为领域pas或非安全pas。
[0139]
如果在步骤134处当前域被确定为根域,则在步骤142处,基于根块/页描述符pte 114中的从其导出物理地址的pas选择信息126来选择输出pas。在这种情况下,输出pas被选择为与根域、领域域、安全域和非安全域相关联的物理地址空间中的任何物理地址空间。
[0140]
图10是示出由滤波电路系统20对存储器访问请求进行滤波的流程图。在步骤170,从地址转换电路系统16接收存储器访问请求(假设由地址转换电路系统执行的任何权限检查已经通过)。所接收的存储器访问请求指定目标pa,并且与输出pas(也称为“所选择的pas”)相关联,所述输出pas如针对图9所描述而被选择。如上所述,输出pas可以由提供指示所选择的pas的显式标识符的地址转换电路系统16指示,或由地址转换电路系统16将从页
表读取的pas选择信息126转发到滤波电路系统20,所述pas选择信息与处理电路系统10的当前域的指示一起可用于确定滤波电路系统20处的输出pas。
[0141]
在步骤172,滤波电路系统20获得对应于目标pa的颗粒保护信息(gpi)。这可以通过从颗粒保护信息高速缓存22获得gpi(如果其已经处于高速缓存中)来完成,或者由gpt行走电路系统23通过执行颗粒保护表行走从存储器获得gpi来完成。下面关于图13进一步描述用于执行gpt行走的方法。
[0142]
一旦已经获得对应于目标pa的gpi,则在步骤174,滤波电路系统20确定输出pa是否由与目标pa相关联的gpi指示为所允许的pa。如果输出pas未由用于目标pas的gpi指示为所允许的pas,则在步骤178,阻止存储器访问请求并且发信号通知故障。发信号通知的故障可以与故障类型相关联,所述故障类型标识故障将由el3处的根域中执行的程序代码来处理,并且可以与指示故障原因的故障综合征/状态信息相关联,诸如标识正在由引起故障的存储器访问请求访问的目标pa。另一方面,如果用于存储器访问请求的输出pas由gpi指示为所允许的pas,则在步骤176,允许存储器访问请求传递到高速缓存24或互连线8,使得存储器访问请求可由下面的存储器系统服务。存储器访问请求以及目标pa和与存储器访问请求相关联的pas的指示传递到高速缓存24和/或互连线8。因此,滤波电路系统20可以管辖是否允许存储器访问请求的目标pa作为针对所述请求选择的物理地址空间的一部分被访问,以强制执行物理地址空间隔离和分区,如上面关于图4和图5所示。
[0143]
由gpt行走电路系统23访问的颗粒保护表可以使用如图8所示的表结构,所述表结构具有多个级别,其中每个级别存储指向下一级别处的表的开始的指针,其中通过从输入地址内的静态位置提取偏移来遍历完整表,其中这些位置由颗粒大小定义,并且嵌套表的最大级别数是固定的。管理保护表的典型方法是使用这样的嵌套结构,所述嵌套结构基于以下限制:可用于保存“分支表”(不在最后级别处的表)或“叶表”(在最后级别处的表)的最大存储器具有恒定大小,诸如单个页。
[0144]
然而,由于gmpu 20由信任根管理,因此它可以驻留在具有更多存储器线性度以供利用的开出中。我们提出了一种新的表格式,其允许利用此特性并创建可以在页表的每个“子树”处组合不同数量的级别的页表。因此,下面描述的示例提供了一种用于以物理页粒度有效存储保护信息的方法。这是通过新颖的反向页表形式实现的。在其基本形式中,反向页表由物理页(或“物理颗粒”)的地址索引并存储与所述页相关联的信息。这里介绍的颗粒保护表格式具有允许以下参数之间的更多权衡空间的结构:由表覆盖的地址范围、遍历表所需的最大查找数,以及必须通过利用线性范围和本地化参数来支付的静态成本(表大小)。所使用的观察结果是具有物理地址空间的位置需要尽可能最快的访问,而其他位置可能具有更宽松的性能要求,因此提供了节省表的面积的机会。这是通过允许偏移具有基于从表本身内的条目提取的参数来计算的大小/位置而实现。
[0145]
通过将“混合嵌套”应用于gpt,在表的第一级别处的每个条目可以跨越具有不同的最大查找数的“子树”。这称为嵌套级别(nl):
[0146]
·
在不是最后级别的任何级别处的表的大小由特定于每个{nl,级别}的一组常数来定义。
[0147]
·
基于在考虑所有先前级别之后必须覆盖的剩余范围计算子树的最后级别处的表的大小。
[0148]
·
用于索引到表结构的给定级别处的表中的偏移的大小/位置取决于nl以及所述表的级别。
[0149]
因此,我们提出了高效的嵌套页表格式,其中每个级别处的表的大小不一定是固定大小(如现有技术中的常规实践),并且其中嵌套页表内的每个“子树”处的最大级别数不一定是全局常数。
[0150]
颗粒保护表描述了系统的地址空间内的物理页的权限特性。由于不是系统地址空间内的所有地址范围都包括需要保护的页,因此表的基本结构可以是2级表,其中第一级别(l0gpt)中的条目描述存储器块的特性或包括指向第二级别(l1gpt)处的表的指针。然而,这样的结构可以被进一步开发成具有快速遍历并利用大线性存储器的“密集子树”和需要更长遍历但具有适度存储器分配要求的“稀疏子树”。
[0151]
图11示出了gpt条目的格式的示例。gpt条目可以是指向下一级别处的gpt条目的表描述符条目180,或者是提供指定对应颗粒或物理地址的保护特性的颗粒保护信息(gpi)的块描述符条目200。如图11所示,块描述符gpt条目200包括多个gpi字段194,每个gpi字段提供与物理地址的对应颗粒相关联的信息。由于仅需要几个位来定义与页相关联的权限,因此单个块描述符表条目200可以包括多个颗粒的gpi特性。作为示例,保护表的最后级别中的块描述符条目200的大小可以是8字节并且容纳16个4位字段194,其中每个字段(颗粒保护信息或gpi)194指定单个物理颗粒的保护特性。
[0152]
例如,由gpi描述的保护特性可以是:
[0153]
·
颗粒与之相关联的物理地址空间(pas)(将pas标识为所允许的pas并且将所有其他pas标识为不允许的pas)。
[0154]
·
指定颗粒不与任何pas相关联(并且因此不可访问,即,pas中没有一个pas是所允许的pas)的编码。
[0155]
·
指定颗粒可以与任何pas相关联(即所有pas都是所允许的pas)的编码。
[0156]
·
在如前所述支持限制性共享的示例中,其他编码可以标识pas中的两个或更多个pas的子集是所允许的pas,但是至少一个其他pas是不允许的pas。
[0157]
gpi字段194的哪个特定编码标识每个不同保护特性的映射可以针对特定指令集架构任意选择。例如,可以将不同的四位编码0000、0001、0010等分配给从上面列表中选择的不同特性。
[0158]
因此,每个gpi字段194提供标识与对应的物理地址颗粒相关联的零个、一个或多个所允许的物理地址空间的信息。也可以分配gpi编码以用于指示其他信息,并且因此,每个gpi字段不必如图11的特定示例中那样为四位。并非gpi字段的所有编码都可以有效。还可能存在一些无效编码,所述无效编码被保留用于将来的扩展,或者在对认为必要的gpi的所有选项进行编码之后保留。其他无效编码可以用于表示除用于gpi属性的有效选项之外的其他信息,诸如下文进一步描述的邻接性指示符300。
[0159]
表描述符gpt条目180包括多条信息,包括嵌套层(nl)参数190、提供标记在表结构的下一级别处的颗粒保护表的开始的地址下一级别表指针193,以及区分表描述符条目180与块描述符条目200的类型标识符字段196。注意,块描述符条目200本身不需要具有类型id字段196,因为表描述符条目180中的类型id字段196可以被选择为具有当gpi字段被设置为用于对表描述符条目180中的类型id字段196进行编码的块描述符条目的对应部分时对于
任何有效gpi编码都不会出现的值。例如,表描述符条目180中的类型id字段196可以被记录在块描述符条目中的gpt字段194中的特定一个gpt字段的位置处,并且被设置为所述gpt字段194的无效编码中的一个无效编码。这通过避免对显式类型id字段的需要而允许更有效地使用块描述符条目200的编码空间。
[0160]
任选地,表描述符条目180还可以指定一个或多个属性192,所述属性可以提供与地址区域相关联的其他信息,所述地址区域的属性由表结构的下面的子树表示。应当理解,尽管图11未示出,但是相应的gpe 180、200也可以包括未指定的信息。此外,图11所示的字段190、192、193、196的特定顺序仅是一个示例,并且其他示例可以具有不同顺序的字段。
[0161]
可变嵌套级别参数190nl控制与gpt表结构内的多个级别的表的嵌套相关联的多个方面。具体地说,通过改变针对起始级别颗粒保护表(例如,基于所存储的gpt基地址访问的l0颗粒保护表,类似于基于图8所示的用于页表行走的l0基地址151访问的l0表150)中的特定地址访问的表描述符条目180中指定的nl,gpt行走电路系统23改变用于索引到多级gpt结构内的表的相应级别中的目标物理地址的相应偏移部分的大小和位置。nl参数190还控制到达给定物理地址的块描述符条目200所遍历的最大级别数、与表结构的给定级别处的表相关联的表大小(存储器占有面积),以及指示给定条目处的给定表条目中的信息适用的地址范围的大小的“每条目大小”。
[0162]
在此示例中,nl字段190对于在表结构的除起始级别之外的级别处访问的任何表描述符逗被忽略,使得表结构的起始级别内的nl参数190控制在所述起始级表描述符条目180下的对应子树内的所有表被访问的方式。
[0163]
在此示例中,针对所述表指定了以下全局参数:
[0164]
·
pgs[1:0]-物理颗粒大小(例如,被编码使得pgs=0指示4kb的颗粒大小,为1的pgs表示16kb的颗粒大小,pgs=2指示64kb的颗粒大小)
[0165]
·
sl[1:0]-起始级别(0-级别0,1-级别1,2-级别2,3-级别3)。对于可以深达4个级别的表,起始级别是级别0,对于可以深达3个级别的表,起始级别是级别1,依此类推。
[0166]
·
slbs[5:0]-起始级别块大小—由起始级别的条目描述的块大小的指数(块大小=2^slbs)。
[0167]
·
tsz[5:0],由表描述的存储器的总大小的指数(总大小=2^tsz)
[0168]
对于起始级别处的每个条目,指定了以下参数:
[0169]
·
条目类型196(块/描述符)
[0170]
·
嵌套级别(nl)190-嵌套级别定义了构成子树的最大级别数(1=2个级别,2=3个级别等)。nl定义输入地址的哪些位将被用作访问下一级别处的表的偏移。
[0171]
表大小定义如下:
[0172]
·
起始级别处的表的大小由总大小和块大小定义。
[0173]
·
在不是最后级别的任何其他级别处的表的大小是根据{nl,级别}定义的常数,其中nl是从在遍历树结构以到达所述其他级别处的表的路径上访问的起始级表条目获得的。
[0174]
·
基于在考虑所有先前级别之后必须覆盖的剩余范围计算子树的最后级别处的表的大小。
[0175]
以下示出了nl如何用于计算用于遍历混合表内的每个子树的偏移量的示例。示例
是基于以下原理(显然,对于其他示例,原理可以变化):
[0176]
·
表条目大小(tes)为8字节
[0177]
·
颗粒大小(gs)为2^(12+pgs)
[0178]
·
最后级别中的表的条目具有16个gpi字段,其中每个gpi描述单个颗粒的特性。gpi大小(gpis)是4位。
[0179]
·
起始级别处的表中的条目描述了大小为2^slbs的blocksize(bs),因此表本身的表大小为(2^tsz/bs)*tes。
[0180]
·
如果startlevel.nestinglevel指示由2个级别构成的子树,则第二级别处的表的表大小为(bs/gs)*gpis
[0181]
·
如果startlevel.nestinglevel指示由3个级别构成的子树,则
[0182]
ο第二级别处的表的表大小为gs
[0183]
ο第三级别处的表的表大小为((bs/(gs/tes))/gs)*gpis
[0184]
·
如果startlevel.nestinglevel指示由4个级别构成的子树,则
[0185]
ο第二级别处的表的表大小为gs
[0186]
ο第三级别处的表的表大小为gs
[0187]
ο第四级别处的表的表大小为((bs/(gs/tes)/(gs/tes))/gs)*gpis
[0188]
可以如下从nl参数和全局参数导出偏移(其中sl指代表的起始级别,并且sl.nl指代由基于目标地址的起始级别偏移部分选择的起始级别表的条目指定的nl参数):
[0189][0190]
注意,如果sl.nl=1,则不能访问级别sl+2或sl+3处的表,因为表的最大数量是2,包括起始级别。类似地,如果sl.nl=2,则不能访问级别sl+3处的表。因此,只有当sl.nl=3时才可以访问级别sl+3处的表。此外,对于sl+1处的表,当sl.nl=1时,与sl.nl=2或3相比,表将具有更大的大小(并且基于较大偏移部分进行索引)。类似地,对于sl+2处的表,当sl.nl=2时,与sl.nl=3相比,表将具有更大的大小(并且基于较大偏移部分进行索引)。
[0191]
另外,注意,在此示例中,最后级别表的低位是位12+pgs*2+4(而不是12+pgs*2),因为在图11的示例中,用于物理地址的16个相应颗粒的16个gpi条目被打包到单个块描述符条目中,因此目标pa的位15:12将用于选择块描述符条目的哪个特定gpi对应于目标pa,并且因此不需要作为用于选择表条目的偏移位。
[0192]
作为特定示例,对于pgs=0(4kb颗粒),sl=0,slbs=39(起始级别块大小为512gb)和tsz=48:
[0193][0194]
应当理解,提供改变上述全局参数pgs、sl、slbs、tsz的灵活性是任选的,因此这些参数中的任何参数对于给定的实现方式可以是固定的。全局参数pgs、sl、slbs或tsz不必是可变的,在运行时可由软件选择。替代地,其他方法可以支持这些全局参数的可变定义。无论全局参数是可变的还是固定的,通过在gpt结构的起始级别处的条目中定义可变嵌套级别nl,这都使得能够在定位给定目标地址的gpi的性能与存储器中需要为表数据分配以保护目标地址的颗粒的地址范围的大小之间进行权衡。
[0195]
图12示出了由l0表描述符条目中的nl参数190控制的具有可变嵌套的gpt布局的特定示例。在此示例中,对于为动态随机存取存储器(dram)分配的pa空间的区域,更可能的是,所述区域将存储可能需要由处理器快速访问的性能关键数据,并且因此可能优选的是,减少需要访问以定位所述区域中的给定物理地址的对应gpi的表的最大级别数。因此,对应于dram区域中的物理地址的l0 gpt条目被设置为nl=1,使得它们指向一个或多个较大的l1表,这些表一起具有足够的大小以包括跨越dram区域的4kb颗粒度的gpi字段。例如,这可以是多个64mb表,每个表包括2
23
个l1表条目,每个l1表条目为相应的4kb颗粒提供16个gpi。注意,表级别的数量减少(2个而不是通常的4个)以必须为每个单独的l1表分配较大大小(64mb而不是4kb)的邻接存储器块为代价。
[0196]
相比之下,对于映射到存储器映射输入/输出(mmio)设备的物理地址空间的区域,可能仅存在需要定义映射的几个4k颗粒,并且性能对于这些区域中的这种访问可能不是性能关键的。对于此种区域,当64mb l1表中只有少数条目被期望包括有效的gpi时,可以认为分配所述表浪费了存储器空间。因此,通过在对应于mmio区域中的地址的l0表描述符条目中设置nl=3,可以通过提供四个级别的页表来在存储器中更有效地实现mmio区域的子树,每个页表具有大小为4kb的表,使得提供用于访问4kb的特定颗粒的级别1至3处的条目链的子树包括12kb的表数据而不是如dram区域中的64mb的数据。虽然存储器效率更高的子树将比dram区域的子树更慢地访问,但是这对于性能可能不关键的mmio区域不是问题。
[0197]
当然,虽然图12示出了dram和mmio区域相对于同一表结构的不同子树中的存储器占有面积权衡性能的一个示例,但是用户可以找到用于利用同一表内的不同级别的嵌套的许多其他用例。例如,一些级别0表条目可以指定嵌套级别2,以指示最大级别数是3,但这在图12的示例中未示出。
[0198]
注意,即使nl指示找到物理地址的对应颗粒的gpi所需的表的最大级别数,但这并不排除块描述符条目200仍可在表结构的较早级别处定义以便定义较大存储器块的统一属性的可能性。因此,可变参数nl定义了在指定nl参数190的l0表描述符条目180下的结构的特定子树要遍历的表的最大级别数,但是这并不意味着必须需要访问级别中的每一个级别直到所述最大数,并且表结构的行走可能会遇到较早级别处的块描述符条目200。
[0199]
尽管在图8的页表结构中,还可以通过在除表的最后级别之外的级别处定义块描述符条目200来减少到达块描述符条目的表级别数,以便减少遍历通过结构以到达块描述符条目所需的步骤数,但是这种方法仅在存在全部需要共享相同gpi特性的较大大小的物理地址的区域的情况下是合适的。这是因为在类似于图8所示的用于页表的方法的具有固定大小偏移的常规多级表结构中,对于4kb颗粒大小示例,比如级别1处的给定条目将使用l1i偏移位38:30来索引,使得每个l1条目适用于大小1gb的地址范围,因此对于那些l1i偏移位38:30共享相同值的所有地址如果要共享在级别1处定义的单个块描述符条目,则将需要具有相同的访问控制属性。
[0200]
相比之下,利用图12所示的方法,当为物理地址空间的dram区域索引级别1表时,当nl=1时,此索引是基于包括位38:16(对于上面的特定示例)的较大偏移部分,从而覆盖尚未用于索引级别0表的所有剩余偏移位。这意味着每个条目对应于较小大小的单独地址块(64kb,为16个4kb颗粒提供单独的gpi字段),使得尽管仅提供了2个级别的表,但是可以实现对保护属性的更细粒度的控制,而不是使用上面关于图8讨论的用固定偏移定义索引的l1块描述符条目可能实现的控制。
[0201]
图13是示出执行gpt行走以从存储器获得用于给定目标pa的gpi的方法的流程图。gpt行走可以作为图10的步骤172的一部分来执行。对于具有颗粒保护信息高速缓存22(或组合的tlb/颗粒保护信息高速缓存22)的实现方式,可在存储器访问请求在颗粒保护信息高速缓存22中未命中时执行图13的方法。对于不支持颗粒保护数据的高速缓存的实现方式,可以针对每个存储器访问执行方法。图13的gpt行走方法由gpt行走电路系统23执行。
[0202]
在步骤240,基于起始级别块大小slbs和先前描述的总存储器大小tsz确定目标pa内的起始级别(sl)偏移部分的大小和位置。在起始级别块大小和总存储器大小都固定的实现方式中,可以省略步骤240,因为起始级别偏移大小和位置可以硬连线到固定大小和位置。然而,在slbs、tsz中的一者或两者可变的情况下,可以存在一些电路系统根据如上所示的pa[tsz-1:slbs]使用定义slbs、tsz中的一者或两者的控制参数来确定起始级别的偏移。
[0203]
在步骤242,gpt行走电路系统23通过读取通过将pa的sl偏移部分的倍数(具有在步骤240确定的大小和位置)与存储在gpt基地址寄存器中的sl基地址相加而确定的地址来获得对应于目标pa的起始级别gpt条目。一旦起始级别gpt条目已从存储器返回,则在步骤244,gpt行走电路系统23确定起始级别gpt条目是块描述符还是表描述符(如果类型id字段196具有指示表描述符条目180的值,则条目是表描述符条目180,并且否则所述条目是块描述符条目200)。如果起始级别gpt条目是块描述符条目200,则在步骤246,从位于对应于目标pa的位置处的gpi字段194提取用于目标pa的gpi(例如,目标pa的一些位pa[15:12]可以用于选择使用哪个gpi字段),然后将所提取的gpi返回到pa滤波电路系统20以执行是否允许存储器访问请求的检查,如图10的步骤174中所述。
[0204]
如果起始级别gpt条目是表描述符,则在步骤248,从在步骤242获得的起始级别
gpt条目中提取可变嵌套控制参数nl 190和下一级别表指针193。在步骤250,出于图13的后续步骤的目的,表结构的下一级别变为“当前级别”。因此,在步骤248之后到达步骤250的情况下,下一级别将变为超出起始级别的一个级别,例如图12的示例中的级别1,其中起始级别是级别0。开始循环通过步骤252到260,其针对在遍历中到达的表结构的每个后续级别执行,直到最终块描述符条目200被标识并且遍历结束。
[0205]
在步骤252,基于可变嵌套控制参数nl 190和当前级别确定用于索引到gpt的当前级别中的当前级别偏移部分的大小和位置。这是根据上表中针对相应级别sl+1、sl+2和sl+3所示的偏移等式来完成的。因此,给定级别的偏移部分的大小和条件根据在表的较早级别处指定的可变嵌套控制参数而变化,并且可以取决于正在访问哪个物理地址而针对不同的子树而不同。
[0206]
在步骤254,在通过将从表的先前级别读取的指针193与在步骤252确定的目标物理地址的当前级别偏移部分的倍数(所述倍数是基于一个gpt条目的大小)相加而确定的地址之后,从存储器读取当前级别gpt条目。在步骤256,当当前级别gpt条目已从存储器系统返回时,则gpt行走电路系统确定当前级别gpt条目是块描述符条目200还是表描述符条目180。同样,如果它是块描述符条目,则在步骤258,用于目标pa的gpi返回,与步骤246相同。然而,如果当前级别gpt条目是表描述符条目180,则在步骤260,从当前级别gpt条目获得下一级别指针193,并且方法返回到步骤250以进行到表结构的下一级别,并且再次循环通过步骤252到256以用于表结构的下一级别。所述方法继续,直到最终识别出块描述符条目200,并且方法在步骤258结束。
[0207]
尽管未在图13中示出,但是gpt行走电路系统23还可以具有用于识别gpt行走中的错误的电路系统,所述错误诸如无效编码的gpt条目,或者在已经到达表的级别3的情况下,从级别3表的索引位置读取的条目仍然不是块描述符条目。如果识别出任何此类错误,则可以发信号通知故障,以由el3处的根域代码处理。
[0208]
图14示出了如何通过指定邻接指示符300来将多个gpt条目分组在一起,使得用于由两个或更多个不同gpt条目200表示的物理地址的所有颗粒的gpi信息可以作为单个条目高速缓存在颗粒保护信息高速缓存22中,以增加高速缓存的覆盖范围并从而提高高速缓存命中率,并因此提高性能。在图14的示例中,未被分组在一起作为邻接条目的颗粒的块描述符条目200具有与图11所示相同的格式。然而,块描述符条目的最低有效位[3:0]处的gpi字段用作“枢轴”gpi,其可以具有用于指定统一条目的特殊编码值,所述统一条目使用64位条目来提供映射到所述条目的所有颗粒共有的特性。在图14的下部示出了统一的邻接条目的格式,其中除在枢轴gpi位置并且具有否则对于其他gpi无效的编码的邻接性指示符300之外,邻接gpt块描述符格式还指定邻接条目的邻接性大小参数202和gpi信息304。
[0209]
邻接性指示300允许收集多个表条目以形成大块。大小参数302指定条目是其一部分的物理地址的邻接块的大小。邻接块的gpi保护属性在块描述符条目200的剩余位304中指定。
[0210]
例如,在上文的工作示例中,最大允许表级别的块描述符条目(对于nl=1是l1、对于nl=2是l2或对于nl=3是l3)通常将指定物理地址空间的64kb的属性。然而,利用邻接性指示符集,此64kb块可以被定义为具有单个gpi属性集的512mb邻接块的一部分。因此,用于512mb邻接块的所有8192个单独块描述符条目可以使它们在存储器中的gpt条目被设置为
指定邻接性条目300,标识512mb大小的邻接性大小参数302,以及gpi字段304中的相同gpi信息。这意味着,无论首先访问所述512mb中的哪个地址,都可以接着高速缓存对应的gpt条目,并且颗粒保护信息高速缓存22的高速缓存查找机制可以确保所述512mb块中的任何地址接着被认为命中单个高速缓存条目,以在512mb中的任何地址被访问时从gpi字段304返回共享保护属性,即使颗粒保护信息高速缓存22中的仅单个高速缓存条目被占用也是如此。这释放了许多其他高速缓存条目以用于高速缓存其他地址的gpt条目,从而提高了高速缓存利用率。
[0211]
图14的示例示出了一种方法,其中使用针对块描述符表条目200内的特定gpi字段194(例如,块描述符表条目的最低有效位处的gpi字段)的无效编码来指示邻接性指示符300。然而,这不是必需的,并且其他方法可以在块描述符表条目200中提供专用字段,用于指定所述条目是否是邻接块的一部分。因此,不必以图14所示的方式表示邻接性指示。
[0212]
图11至图14示出了gpt结构的特性,所述gpt结构包括由起始级别表条目中的嵌套级别参数nl控制的可变嵌套,以及允许大块的条目融合在一起的邻接性指示300。这些特别适用于gpt,但也可以应用于其他类型的访问控制表以控制对存储器的访问,诸如由地址转换电路系统16使用的页表结构。因此,在执行页表行走以识别地址转换映射时,页表行走电路系统17也可以使用图11至图13所示的技术。页表行走电路系统17可以使用可变地定义的偏移部分来索引到表结构的相应级别中,这取决于在比其偏移部分被确定的表更高级别的访问控制表中定义的可变嵌套控制参数nl。虽然gpt是由物理地址索引的反向页表,但是类似的技术也可以用于由虚拟地址索引的非反向页表,以便将表数据本身的大小与到达与特定地址相关联的保护信息所需的对存储器的访问次数进行权衡。
[0213]
图15示出了可使用的模拟器实现方式。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器实现方式可以在支持模拟器程序410的主机处理器430上运行,所述主机处理器任选地运行主机操作系统420。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“some efficient architecture simulation techniques”,robert bedichek,winter 1990usenix conference,第53-63页。
[0214]
就先前已参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能可由合适的软件构造或特征提供。例如,特定电路系统可在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存存储器可在模拟的实施方案中被实现为软件数据结构。在先前描述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器430)上的布置中,在合适的情况下,一些模
拟的实施方案可以利用主机硬件。
[0215]
模拟器程序410可以存储在计算机可读存储介质(其可以是非暂时性介质)上,并且向目标代码400(其可以包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),所述程序接口与由模拟器程序410建模的硬件架构的接口相同。因此,可以使用模拟器程序410从指令执行环境内执行目标代码400的程序指令,使得实际上不具有上文所讨论的装置2的硬件特征的主计算机430可以仿真这些特征。这对于例如允许在实际支持所述架构的硬件设备可用之前测试正在为新版本的处理器架构开发的目标代码400是有用的,因为可以通过在不支持所述架构的主机设备上执行的模拟器内运行来测试目标代码。
[0216]
模拟器代码包括仿真处理电路系统10的行为的处理程序逻辑412,例如包括指令解码程序逻辑,其对目标代码400的指令进行解码,并且将指令映射到主机硬件430所支持的本机指令集中的对应指令序列,以执行与解码指令等效的功能。处理程序逻辑412还模拟如上所述的不同异常级别和域中的代码的处理。寄存器仿真程序逻辑413在主机处理器的主机地址空间中保持数据结构,其仿真根据与目标代码400相关联的目标指令集架构定义的架构寄存器状态。因此,不是如图1的示例中那样将这种架构状态存储在硬件寄存器12中,而是将其存储在主机处理器430的存储器中,其中寄存器仿真程序逻辑413将目标代码400的指令的寄存器引用映射到对应地址,以从主机存储器获得模拟的架构状态数据。该架构状态可以包括先前描述的当前域指示14和当前异常级别指示15。
[0217]
模拟代码包括地址转换程序逻辑414和滤波程序逻辑416(它们都是存储器管理程序逻辑419的示例),它们分别参考如前所述的相同页表结构和gpt 56仿真地址转换电路系统16和pas滤波器20的功能性。因此,地址转换程序逻辑414将由目标代码400指定的虚拟地址转换为pas中的一个pas中的模拟物理地址(从目标代码的角度来看,它是指存储器中的物理位置),但实际上这些模拟物理地址由地址空间映射程序逻辑415映射到主机处理器的(虚拟)地址空间上。滤波程序逻辑416以与上述pas滤波器相同的方式执行对颗粒保护信息的查找以确定是否允许由目标代码触发的存储器访问继续进行。
[0218]
表访问程序逻辑418模拟页表行走电路系统17和gpt行走电路系统23的功能,以控制来自(由地址空间映射程序逻辑415映射到主机处理器的虚拟地址空间的)模拟的存储器的页表条目和gpt条目的加载。然而,对于模拟器,可以不模拟tlb 18和颗粒保护信息高速缓存22,因此模拟器实施方案的行为将类似于不具有任何tlb 18或gpi高速缓存22的硬件设备。因此,每个存储器访问请求都将被视为好像它在高速缓存中未命中,因此每个存储器访问可能都需要页表行走和/或gpt行走。如在硬件实施方案中,对于模拟的实施方案,页表结构和/或gpt结构可以用具有基于在较高级表条目中指定的nl参数190选择的偏移部分的大小/位置的可变嵌套来实现。
[0219]
在本技术中,字词“被配置为
…”
用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
[0220]
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化和修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1