掌桥专利:专业的专利平台
掌桥专利
首页

用于控制存储器存取的装置及方法

文献发布时间:2023-06-19 10:32:14


用于控制存储器存取的装置及方法

技术领域

本技术涉及数据处理的领域。

背景技术

将由数据处理装置执行的软件通常可用高阶程序设计语言写入,并随后根据指令集架构编译成代码,此指令集架构由将执行软件的装置支持。例如,最初可以较高级语言(诸如Java、C或C++)来写入软件,并且随后可将软件编译成本机支持的指令集架构(诸如x86或

一些较高阶程序设计语言(诸如Java)被认为是存储器安全语言,因为它们包括用于检查关于存储器存取的某些错误的运行时错误检测检查。相反,存储器不安全语言(诸如C及C++)不包括此种运行时错误检查。存储器不安全语言的持久使用意味着在根据给定指令集架构编译的代码中,可能存在大量与存储器相关的错误,这些错误可能容易被攻击者或被其他恶意方利用。此种错误可包括:

·边界违规,其中由代码提供的数组索引超出数组的合法边界;

·释放后使用的错误,其中在已经解除分配或释放存储器位置之后对存储器位置进行存取;

·返回后使用的错误,其中在函数中已经返回后对与在函数内使用的变量相关联的地址(诸如堆栈上的值)进行存储器存取;

·范围外使用的错误,其中在宣告变量的范围之外存取变量;以及

·初始化之前使用的错误,其中在已经初始化变量之前存取与变量相关联的存储器地址。

这些仅为与存储器相关的错误的一些示例,这些错误可能导致不可预测的行为,并可能为攻击者提供利用的途径。因此,可能期望在由给定处理装置支持的指令集架构内提供架构支持,以辅助运行时检测某些类别的存储器错误。

发明内容

在一个示例性配置中,提供一种装置,包括存储器存取电路系统和以及控制标签储存器,所述存储器存取电路系统用于响应于目标地址执行卷标保护型(tag-guarded)存储器存取操作,

默认的卷标保护型存储器存取操作包括以下步骤:比较地址卷标与保护卷标,地址卷标与目标地址相关联,保护卷标储存在与一个或多个存储器位置的区块相关联的存储器系统中,一个或多个存储器位置的区块包括由目标地址识别出的寻址位置;以及生成是否在保护卷标与地址卷标之间检测到匹配的指示,所述控制标签储存器用于对多个存储器区域中的每个区域储存配置控制信息,此配置控制信息用于控制当目标地址在存储器区域内时存储器存取电路系统如何执行卷标保护型存储器存取操作,每个存储器区域对应于多个区块。

在另一示例性配置中,提供一种控制存储器存取的方法,此方法包括:响应于目标地址执行卷标保护型存储器存取操作;对多个存储器区域的每个区域,储存配置控制信息;以及使用配置控制信息来控制当目标地址在该存储器区域内时存储器存取电路系统如何执行卷标保护型存储器存取操作,每个存储器区域对应于区块中的至少一个区块,

默认的卷标保护型存储器存取操作包括以下步骤:比较地址卷标与保护卷标,地址卷标与目标地址相关联,保护卷标储存在与一个或多个存储器位置的区块相关联的存储器系统中,一个或多个存储器位置的区块包括由目标地址识别出的寻址位置;以及生成是否在保护卷标与地址卷标之间检测到匹配的指示。

根据又一示例性配置,提供一种控制主机数据处理装置的计算机程序,以提供指令执行环境,用于执行目标程序代码的指令,此计算机程序包括:存储器存取程序逻辑,用于响应于目标地址执行卷标保护型存储器存取操作,以及控制卷标数据结构,用于对多个存储器区域中的每个区域储存配置控制信息,此配置控制信息用于控制当目标地址在存储器区域内时存储器存取程序逻辑如何执行卷标保护型存储器存取操作,每个存储器区域对应于区块的至少一个区块,默认的卷标保护型存储器存取操作包括以下步骤:比较地址卷标与保护卷标,地址卷标与目标地址相关联,保护卷标储存在与一个或多个存储器位置的区块相关联的存储器系统中,一个或多个存储器位置的区块包括由目标地址识别出的寻址位置;以及生成是否在保护卷标与地址卷标之间检测到匹配的指示。

在又一示例性配置中,提供一种装置,包括:存储器存取模块,用于响应于目标地址执行卷标保护型存储器存取操作;以及控制标签储存模块,用于对多个存储器区域中的每个区域储存配置控制信息,此配置控制信息用于控制当目标地址在存储器区域内时存储器存取模块如何执行卷标保护型存储器存取操作,每个存储器区域对应于多个区块,默认的卷标保护型存储器存取操作包括以下步骤:比较地址卷标与保护卷标,地址卷标与目标地址相关联,保护卷标储存在与一个或多个存储器位置的区块相关联的存储器系统中,一个或多个存储器位置的区块包括由目标地址识别出的寻址位置;以及生成是否在保护卷标与地址卷标之间检测到匹配的指示。

附图说明

将参照附图中图示的本技术的示例来仅以例示的方式进一步描述本技术,在附图中:

图1示意地图示数据处理装置的示例;

图2示出了卷标保护型存储器存取操作的示例,所述卷标保护型存储器存取操作包括检查地址卷标是否匹配保护卷标;

图3根据一个示例性布置示意地图示存储器地址空间以及在存储器地址空间内提供保护卷标(guard tag)与页面卷标(page tag)两者;

图4根据一个示例性布置图示可设置在页面标签内的多个字段;

图5为图示如何根据在关联存储器区域的页面卷标内是否设定相同卷标模式来处理卷标保护型存储器存取操作的流程图;

图6为图示如何根据在关联存储器区域的页面卷标内是否设定匹配全部模式来处理卷标保护型存储器存取操作的流程图;

图7为图示如何根据在关联存储器区域的页面卷标内是否设定精确卷标检查模式来处理卷标保护型存储器存取操作的流程图;

图8根据一个示例性布置图示图1的TLB可如何扩展以便包括页面标签值;

图9为根据一个示例性布置的图示可设置在图1的TLB内的部件的方块图;

图10为在一个示例性布置中图示图9的页面卷标更新/刷新电路系统的操作的流程图;

图11为根据一个示例性布置图示图9的卷标访问控制电路系统的操作的流程图;

图12为根据一个示例性布置的图示根据设置在装置的系统控制寄存器内的设定可如何处理TLB刷新操作的流程图;

图13A为根据一个示例性配置的图示当设法更新选定区组(granule)的保护标签时可采取的步骤的流程图;

图13B为图示当设法更新所选定区组的保护标签时可执行的步骤的特定序列的流程图,此特定机制导致从相同卷标模式转换至默认模式;

图14为根据一个示例性布置的图示可执行以处理设法从存储器读取选定区组的保护标签的请求的步骤的流程图;

图15为根据一个示例性布置的图示可如何处理操作的流程图,此操作用于将页面保护卷标储存至存储器;及

图16图示支持本文描述的技术的模拟器的示例。

具体实施方式

防止上述类型的某些存储器使用错误的一种方法可以用于提供保护卷标,此保护卷标储存在与一个或多个存储器位置的区块相关联的存储器系统中。当基于在存储器系统中识别特定寻址位置的目标地址来请求卷标保护型存储器存取操作时,存储器存取电路系统可以比较地址卷标与保护卷标,此地址卷标与目标地址相关联,此保护标签储存在与一个或多个存储器位置中的区块相关联的存储器系统中,这些存储器位置中的区块包括由目标地址识别出的寻址位置。存储器存取电路系统可生成在保护卷标与地址卷标之间是否检测到匹配的指示。此指示可用于控制是否允许顺利进行存储器存取或者是否可顺利进行后续操作,或者仅可在允许存储器存取正常继续时报告。

这可能是有用的,因为例如,当初始化存储器区域时,基于存储器不安全语言(诸如C或C++)编译代码的编译程序,可以设定代码预期存取特定值的存储器区块的保护卷标,并且可以将对应地址卷标值与指向那些区块的目标地址相关联。若存储器使用错误发生,并且例如地址指针超出范围使用或扩展到已经初始化的高效范围的边界外,则与寻址位置相关联的保护卷标可能不匹配与目标地址相关联的地址卷标,并且随后在此情况下是否检测到匹配的指示可用于触发一些错误处理响应或错误报告机制。所采取的特定响应可取决于正执行的特定软件需要,或者取决于架构的特定微架构实施方式。因此,即使高级语言不具有用于执行运行时错误检查以防止存储器存取错误的模块,用于编译代码的ISA可能包括用于执行此种检查的架构特征。

然而,期望提供用于执行卷标保护型存储器存取操作的更灵活且高效的机制。

根据本文描述的技术,数据处理装置具备控制卷标储存器,布置此控制标签储存器以对多个存储器区域的每个区域储存配置控制信息,此配置控制信息用于控制当目标地址在该存储器区域内时存储器存取电路系统如何执行卷标保护型存储器存取操作。将每个存储器区域布置成对应于多个区块。因此,根据本文描述的方法,可根据当前存取的存储器区域,控制执行卷标保护型存储器存取操作的方式。这提供了很大的灵活性,因为可以不同方式对待个别存储器区域。此方法也可实现显著的效率益处,因为如稍后更详细论述的,它可以避免存取或更新与某些存储器区域中区块相关联的个别保护标签,同时仍然允许相对于该存储器区域执行期望形式的卷标保护型存储器存取操作。

每个存储器区域可以采取各种形式,但在一个示例性实施方式中每个存储器区域包括一个或多个存储器页面。特定而言,应理解,通常将存储器地址空间分割成物理页面,并且向其提供配置控制信息的每个存储器区域可对应于那些物理页面中的一个或多个。在使用虚拟至物理地址转换的系统内,应理解,也可定义虚拟页面,从存储器中的一个或多个关联页表获得使虚拟页面内的虚拟地址能够转换至物理地址所需的转换信息。根据本文描述的方法,形成每个存储器区域的一个或多个存储器页面可为物理页面,或替代地为虚拟页面。

尽管在一个实施方式中每个存储器区域可包括多于一个存储器页面,但在一个特定实施方式中每个存储器区域包括单个存储器页面。已经发现,这为本文描述方法的使用提供了特别高效的形式,因为它提供了对逐页卷标保护型存储器存取操作的控制,并且也使得能够高效地管理并存取关联配置控制信息。例如,通常情况下,可在装置内提供一个或多个缓存结构,用于维持与个别存储器页面相关的信息。例如,转换旁看缓冲器(translation lookaside buffer;TLB)可用于储存与特定存储器页面相关的地址转换数据。由于在存储器区域包括单个存储器页面的实施方式中也逐页地提供配置控制信息,故该配置控制信息也可轻易地在装置内缓存,例如通过使用现有的缓存结构而实现缓存。

配置控制信息可采取各种形式。在一个示例中,配置控制信息包括相同卷标模式字段及存储器区域保护卷标。当由目标地址识别出的寻址位置在设置相同卷标模式字段的存储器区域内时,可随后布置存储器存取电路系统以更改卷标保护型存储器存取操作,使得将地址卷标与该存储器区域的存储器区域保护卷标进行比较,而不是和与包含寻址位置的区块相关联的保护标签进行比较。此种方法可提供显著的执行/效率益处。例如,在认为在特定存储器区域内的所有区块具有相同保护标签值是适当的情况下,而是通过在配置控制信息内设定相同卷标模式字段,及将所需的保护卷标信息作为存储器区域保护卷标储存在配置控制信息内,可避免对设定那些个别保护标签值的需要。在设定相同卷标模式字段时,则使用储存为该存储器区域的配置控制信息的单个存储器区域保护卷标,而不是使用与每个区块相关联的个别保护标签,来针对存储器区域内的存储器位置区块而执行任何卷标保护型存储器存取操作。

除了可通过不需要维护存储器区域内区块的个别保护标签来实现的执行/效率益处(在对应配置控制信息中此存储器区域内的区块设定了相同的卷标模式字段),此方法也可使任何个别卷标保护型存储器存取操作期间执行的检查能更快速地执行。特定而言,存取存储器区域保护卷标可能比存取区块的个别保护标签更快速,因为与个别基于区块的保护标签的数目相比,将出现的存储器区域保护卷标的数目更少。这可能特定为存储器区域保护卷标在装置的缓存结构内(诸如在TLB中)缓存的情况。

配置控制信息不仅需要支持单个模式(诸如上述相同卷标模式),及替代地或另外地,也可通过配置控制信息识别出不同模式。例如,在一个示例性布置中,配置控制信息可包括匹配所有模式字段。当由目标地址识别出的寻址位置在设定匹配所有模式字段的存储器区域内时,可布置存储器存取电路系统以更改卷标保护型存储器存取操作,使得当地址卷标具有预定值时,绕过地址卷标与保护卷标的比较,并且生成步骤包括生成在保护卷标与地址卷标之间检测到匹配的指示。这可提供显著的灵活性,同时也在需要时确保卷标保护型存储器访问方法的充分安全。特定而言,它意味着卷标保护型存储器访问方法仅可在认为必要的存储器区域中使用,而其他存储器区域可通过将地址卷标设定至预定值来高效绕过此卷标保护型存储器访问控制。这可能在各种情况下有用。例如,一些现有程序可合法地清除地址的一个或多个上位,其可例如包括地址卷标信息。此情况的特定示例为使用压缩指针。因此,在此种情况下,可能有益的是将匹配所有模式字段设定在正在执行此种动作的存储器区域内,使得保护卷标与地址卷标之间的差异不带旗标。

在一个示例性布置中,若由目标地址识别出的寻址位置在设定匹配所有模式字段的存储器区域内,但保护卷标不为上述预定值,则将执行正常的卷标保护型存储器存取操作。在该点处执行的卷标保护型存储器存取操作的实际形式将取决于为存储器区域提供的其他配置信息。例如,若设定相同卷标模式字段,则将参考存储器区域保护卷标而不是存储器位置的关联区块的相关保护卷标,来执行地址卷标的比较。

虽然上述匹配所有模式引用具有预定值的地址卷标,但在替代实施方式中可将保护标签设定至预定值,并因此若保护标签具有预定值,则绕过地址卷标与保护卷标的比较。

作为存储器区域的配置控制信息的一部分维护的信息的另一示例,配置控制信息可包括精确卷标检查模式字段。当由目标地址识别出的寻址位置在设定精确卷标检查模式字段的存储器区域内时,则可布置存储器存取电路系统以执行卷标保护型存储器存取操作,使得当在保护卷标与地址卷标之间检测到不匹配时,布置存储器存取电路系统以防止执行对寻址位置的存储器存取。因此,根据此种方法,当设定精确卷标检查模式字段时,与关联存储器存取同步地执行保护卷标与地址卷标的检查,以便若存在不匹配则停止存储器存取。在该点采取的动作可不同,但在一个实施例中,可以在采取适当动作的情况下,将异常提高至更高的异常级别(exception level)。

另外,在一个示例性布置中,当由目标地址识别出的寻址位置在未设定精确卷标模式字段的存储器区域内时,布置存储器存取电路系统以执行卷标保护型存储器存取操作,使得当在保护卷标与地址卷标之间检测到不匹配时,布置存储器存取电路系统以允许与针对不匹配产生的任何不匹配指示异步地执行对寻址位置的存储器存取。因此,在此种方法中,存储器存取在执行检查时不会延迟,并且反而与存储器存取异步地生成任何不匹配指示以指示发生匹配还是不匹配。应注意,尽管每次检测到不匹配时可生成单独不匹配指示,从而使得能够直接识别未能通过卷标检查的存储器存取,但在其他实施方式中可发出更多通用指示,例如指示一个或多个存取尚未通过标签检查,从而允许在此指示之后执行额外的调查,以确定关于失败的存储器存取的更多细节。

在一些情况下不为某些存储器区域设定精确卷标检查模式可能是有用的,以便提高数据存取的速度(例如,通过相对于当前对数据采取频繁存取的存储器页面禁用精确的卷标检查模式)。然而,由于配置控制信息可以根据存储器区域在存储器区域上指定,在一个示例性实施方式中根据逐页来指定,所描述的方法可通过仅在必要时禁用精确的卷标检查模式,而不需要在装置执行的整个过程时禁用,来提供安全性/调适能力。

控制标签储存器可采取各种形式。例如,这由存储器系统与存储器存取电路系统耦合的部分形成。在一些实施方式中,控制标签储存器可包括用于缓存某些存储器区域的配置控制信息的缓存结构,以便增大对配置控制信息存取的速度。当使用此种缓存结构时,缓存结构可采取各种形式。例如,缓存结构可为用于缓存一个或多个存储器区域的配置控制信息的专用缓存结构。替代地,缓存结构可为也用于缓存位置的个别区块的保护卷标的缓存结构。

在每个存储器区域包括一个或多个存储器页面的一个示例性布置中,可通过将控制标签储存器布置成包括具有多个条目的转换旁看缓冲器(translation lookasidebuffer;TLB),来实现缓存结构的特别高效的实施。每个条目用于按照TLB的标准行为维持存储器页面的地址转换信息,但在此实施方式中每个条目也包括用于识别该存储器页面的配置控制信息的字段。TLB结构的使用可提供用于缓存与存储器页面相关联的配置控制信息的特别精确的方法,因为已经提供条目以维持与此种存储器页面相关的其他信息。

在每个存储器区域包括一个或多个物理页面(physical page)的一个示例性布置中,存储器中的页表结构不需要更改,并且以标准方式获得每个条目的地址转换信息。然而,另外,可以扩展每个TLB条目以提供额外字段,此额外字段用于识别配置控制信息,并且可以执行单独的存取以获得所讨论页面的配置控制信息的所需条目(例如,通过从存储器系统读取该信息)。

然而,在替代实施例中,配置控制信息可与存储器中的虚拟页面相关联,并且在该情况下在存储器中补充页表信息以包括配置控制信息是可能的。在该情况下,将在TLB的条目中取回并填充配置控制信息,作为用于获得地址转换信息的页表走查过程的一部分。在一些此种情况下,例如在总体存储器地址空间相对较小的更小系统中,页表内可能存在可用于容纳配置控制信息的现有的冗余空间。在此种实施方式中,系统寄存器可用于识别从页表取回的地址转换信息的哪些位提供配置控制信息。此种变化可能更快,因为在初始填充TLB条目时,不需要额外查找来加载页面卷标信息,因为所有信息作为页表走查过程的一部分而直接取回。另外,若系统页表不具有充足的空间,则若考虑中的特定架构可用,则将页表信息放在页表或类似结构的一些扩展部分中是可能的并且可能更高效。

在一个示例性布置中,将每个存储器区域的配置控制信息保持在存储器系统的存储器区域内,并且装置进一步包括指令解码器,指令解码器用于解码配置控制信息存取指令以控制存储器存取电路系统,以从存储器区域加载所确定的存储器区域的配置控制信息,并且将所确定的存储器区域的更新后的配置控制信息储存至该存储器区域。尽管通用存储器地址空间可用于此目的,因此标准的加载或储存指令可用于存取配置控制信息,但在一个示例性布置中存储器区域为特别为储存配置控制信息提供的存储器系统的专用区域。在此种情况下,配置控制存取指令可以是为存取该存储器区域提供的特定形式的加载及储存指令。随后,系统可以配置将用于存取存储器区域的权限授予特定异常级别。例如,在应用/用户级别,专用存储器区域仅可使用为该目的提供的特定加载及存取指令来存取,而在内核级别使用其他指令存取专用存储器区域可能更加自由。

在一个示例性布置中,装置可进一步包含控制卷标储存器更新电路系统,响应于触发器以相对于储存在控制卷标储存器中的配置控制信息执行刷新操作。如前所述,控制标签储存器可包括一个或多个缓存结构,并且控制卷标储存器更新电路系统的使用可用于避免缓存信息变得陈旧。

触发器执行刷新操作可以许多方式发生。在一个示例性布置中,触发器发生在由装置执行刷新指令时,刷新指令提供地址指示,此地址指示用于识别其配置控制信息将进行刷新操作的一个或多个存储器区域。因此,地址指示可指定特定地址,或地址范围,并且基于该信息可确定其配置控制信息将进行刷新操作的一个或多个存储器区域。

刷新指令可采取各种形式。在TLB结构内缓存配置控制信息的实施方式中,刷新指令可为TLB刷新配置控制信息指令,其在执行时导致在TLB内执行维持操作,以便识别TLB内的哪些条目为一存储器页面提供配置控制信息,此存储器页面由TLB刷新配置控制信息指令的地址指示识别出,并且相对于每个识别出的条目中的配置控制信息执行刷新操作。

所执行的刷新动作可以采取各种形式,并且例如可涉及使储存在TLB的识别条目中的配置控制信息无效,或者通过从存储器系统取回最新版本的信息来更新该配置控制信息。

尽管在上述示例中,触发器由于执行特定刷新指令而发生,但触发器也可由于其他事件而发生。例如,触发器可发生在执行储存指令时,此储存指令用于将所确定的存储器区域的更新后的配置控制信息储存至存储器系统。特定而言,在执行此种储存时,已知缓存的信息现在可能是陈旧的,因此可以直接触发刷新操作。

应注意,无论使用的触发机制如何,刷新操作仅可影响维持配置控制信息的TLB条目的内容,并且TLB条目的其他内容(即,地址转换信息及关联属性信息)在一个示例性实施方式中将不会响应于上述刷新操作而改变。然而,使用已经存在的TLB无效操作仍然可使整个TLB条目无效。

在一个示例性实施方式中,系统控制寄存器可用于控制赋能装置的哪些工作模式执行刷新操作。例如,系统控制寄存器可识别当装置在应用级别(有时也称为用户级别)下工作时允许刷新操作执行的程度。

系统控制寄存器信息可以采取各种形式。例如,该信息可用于在多个不同模式之间选择。例如,一种模式可以指示不允许在异常级别0中执行刷新操作,相反在异常级别0处执行刷新操作的任何尝试都应截获至异常级别1,即与工作系统/内核相关联的异常级别。或者,可以指定另一种模式,此模式指示允许在异常级别0中对所有页面进行刷新操作。作为另一示例,可以指定一种模式,此模式指示允许在异常级别0中为一些页面进行刷操作,这取决于在存储器中相关页表中指定的页面属性。随后相关的页面属性集可由架构或实施方式定义。在不存在那些页面属性的情况下,执行刷新操作的尝试可能再次截获至异常级别1。由于能够逐页指定此类信息,这通过避免在一些情况下需要将刷新请求截获至更高异常级别,同时在需要确保将刷新截获至较高异常级别时仍然保持安全性,因此可以在许多情况下使得更快地执行刷新操作。

另一方面,允许在使用者空间中进行此种刷新操作可能产生一种机制,用于从不受信任的过程执行拒绝服务攻击。例如,此种不受信任的过程可设法在异常级别0使用者空间内频繁执行刷新操作,从而减慢系统的运行速度。然而,通过截获至较高异常级别,可将其用于管理此种拒绝服务问题。因此,在一个示例性配置中,可设定系统控制寄存器,以设法在应用级别防止使用刷新操作尝试的拒绝服务攻击。

例如,通过使用上述类型的配置,可以在异常级别1配置系统控制寄存器,以致仅允许对受信任的过程进行异常级别0的刷新操作,而对其他过程禁用刷新。减轻此种拒绝服务攻击的另一种方式可为在每N次执行刷新操作后,或者若在预定时段内执行N或更多次的刷新操作,则将刷新操作截获至异常级别1。这将允许在大多数情况下快速页面标签刷新,此外也为内核提供一种控制刷新操作执行频率的方式,从而防止相关的拒绝服务攻击。

在使用上述相同卷标模式的实施方式中,也设定相同卷标模式可用于控制上述卷标保护型存储器存取操作之外的其他功能。特定而言,存储器存取电路系统可响应于对存取与选定区块相关联的保护标签的请求,以当对于与该选定区块相关联的存储器区域设定相同卷标模式字段时采取替代动作。可执行此种存取以设法读取保护标签值,或写入更新后的保护标签值。在每种情况下,设定相同卷标模式时执行的替代动作可有所不同。例如,使用任何尝试将区块的保护卷标值储存至存储器的指令,其中该区块在设定相同卷标模式字段的存储器区域内,可能导致产生异常,从而异常处理程序可以确定针对该储存请求采取什么步骤。作为另一示例,使用任何尝试从存储器读取区块的保护卷标的指令,其中区块在设定相同卷标模式的存储器区域内,可以导致返回存储器区域保护卷标而不是区块的保护标签。

在一个示例性布置中,可为选定存储器区域布置装置以根据触发器状态在默认模式与相同卷标模式之间切换,在默认模式中清除该选定存储器区域的相同卷标模式字段,在相同卷标模式中设定该选定存储器区域的相同卷标模式字段。根据特定实施方式,切换功能可通过软件或者硬件来实施。

触发器状态可以采取各种形式。例如,此种方案可以与用作堆栈的存储器区域的加卷标结合使用。例如,默认堆栈页面可具有禁用的相同卷标模式。随后,总是可以在禁用相同卷标模式的前提下执行小变量的加卷标。然而,在根据启发式算法认为给此种大缓冲器加标签高效时,大缓冲器可使用一种方法加卷标及取消卷标,此方法启用相同卷标模式。随后,在取消标签时可以始终禁用相同卷标模式,以致恢复至原始标签值。

作为另一示例,触发器状态可为一更新,此更新在设定相同卷标模式字段时关于与选定存储器区域内的区块相关联的保护标签来执行,并且导致从相同卷标模式转换至默认模式。特定而言,可以采取某些步骤从相同卷标模式迁移至默认模式,以便此后允许储存所识别区块的新指定的保护标签值。

可以通过执行多个指令来显性处理此种方法,以实施转换操作,此转换操作导致清除选定存储器区域的配置控制信息中的至少相同卷标模式字段。那些指令也可以例如导致将当前存储器区域保护卷标值写入单个区块保护标签的每一者中,以便在使用新保护标签值更新识别到的区块之前,覆盖区块的先前保护标签值。

或者,不执行多个指令,而是可以对装置的更高工作模式发出异常,以模拟转换操作。可以由于多个原因来触发异常。例如,当尝试在对应存储器区域已设定相同卷标模式时更新与区块相关联的保护标签时,直接触发异常。

在一个示例性布置中,装置进一步包括确定电路系统,确定电路系统用于基于地址转换因子的知识来确定是否允许对配置控制信息的更新由装置以其当前工作模式来执行,或者是否要求较高工作模式的异常来处理对更新的请求。可将确定电路系统作为存储器存取电路系统的一部分来提供。地址转换因子可以采取各种形式。例如,系统可以支持多个不同虚拟页面大小,并且可能在某些更低异常级别上,软件不知道所使用的最小页面大小。在该情况下,可能需要将更新程序截获至更高异常级别,以便相应地处理更新请求(允许或者防止更新)。然而,若可将最小页面大小暴露于使用者空间,则可以允许执行一些此种更新,而不会陷入更高异常级别。特定而言,若确定当前更新与最小页面大小的页面大小有关,则可以允许在当前异常级别下执行那些更新,否则可以将其陷入可能发生处理更新的更高异常级别。

作为另一示例,可将特定物理页面映像进几个虚拟页面中,并且在该情况下更新操作仅可以执行对当前映射的更新。例如,若针对映像中的一个将条目储存在TLB内,则可以针对特定映像执行刷新,但不会针对至相同物理页面的另一映射执行刷新。若软件知晓多个映像情况,则软件可相应地处理这种情况。然而,为了支持隐含页面共享的情况,在更低异常级别(诸如EL0)不知道共享时,较佳将更新操作截获至更高异常级别。在许多情况下,隐含页面共享的存在可以通过与页面相关联的一些属性位来暗示。例如,若使用写时复制程序实施隐含页面共享,则虚拟页面可能被指出不可写,并且在该情况下尝试更新配置控制信息可能会陷入更高异常级别。

若需要,可在配置控制信息内提供额外的信息字段,以识别需要以更高异常级别处理的特定情况。因此,若设定对应字段,则任何刷新操作都将陷入下一个异常级别。若需要,可以将系统配置为不允许非特权异常级别(诸如EL0)更改该字段。

现将参照附图描述特定示例。

图1示意地图示数据处理装置2的示例。应理解,这仅为装置的部件的子集的高阶表示,并且装置可包括许多其他未图示的部件。装置2包括用于响应于由指令解码器6解码的指令而执行数据处理的处理电路系统4。指令解码器6解码从指令缓存8提取的指令以生成控制讯号10,用于控制处理电路系统4以执行由指令表示的对应处理操作。处理电路系统4可以包括一个或多个执行单元,用于对储存在寄存器14中的值执行操作以生成将回写至寄存器的结果值。例如,执行单元可以包括用于执行算术运算或逻辑运算的算术/逻辑单元(arithmetic/logic unit;ALU),用于使用浮点操作数执行运算的浮点单元,及用于对包括多个单独数据元素的操作数执行向量操作的向量处理单元。处理电路系统也包括用于控制数据在寄存器14与存储器系统之间转换的存储器存取单元(或加载/储存单元)15。在此示例中,存储器系统包括指令缓存8、1阶数据缓存16、在数据与指令之间共享的2阶缓存17、及主存储器18。应理解,其他缓存层级结构也为可能的-这仅为一个示例。存储器管理单元(memory management unit;MMU)20用于提供地址转换功能以支持由加载/储存单元15触发的存储器存取。MMU具有转换旁看缓冲器(translation lookaside buffer;TLB)22,用于从储存在存储器系统16、存储器系统17、存储器系统18中的页表缓存条目的子集。每个页表条目可为对应的地址页面提供地址转换映像,并且也可以指定访问控制参数,诸如指定页面为只读区域还是可读且可写两者的存取许可,或者指定哪些特权级别可存取页面的存取许可。

图2示意性图示卷标保护型存储器存取的概念。用于引用存储器系统内的存储器位置的物理地址空间可以逻辑上分割成许多区块30,每个区块包括一定数目的可寻址位置。为简明起见,在图2的示例中,每个区块30包括四个存储器位置,但也可以使用其他区块大小。每个区块30与对应保护标签32相关联。与一定数目的区块30相关联的保护标签可以聚集在一起,并且储存在物理地址空间内的不同架构可存取存储器位置34内,或者储存在主存储器18中提供的额外储存位置内,这种额外储存位置在架构上不可存取(未映像至相同物理地址空间)。在一些情况下,可较佳使用单独的非架构可存取的储存器以避免用完数据缓存16、数据缓存17中的空间来缓存保护标签值,这可能影响常规代码的执行,并且可能使一致性管理更加复杂。在微架构中可提供额外卷标缓存19,用于从非架构可存取储存器缓存标签值,以便比必须从主存储器18存取卷标时更快速地存取。卷标储存位置34对应于每个区块30的特定映像可以由加载/储存单元15控制,并且可以硬件连接或者可程序设计。尽管在图2中每个卷标32与物理地址的区块相关联,但提供与虚拟存储器地址空间中的虚拟存储器位置相关联的保护卷标32也是可能的,但这可能在每次存储器存取时需要一些额外地址转换。因此,通过将保护卷标32与物理存储器位置相关联,可提高效能。一般而言,对于特定微架构实施方式,可以确切地选择如何将保护卷标32与物理地址空间的对应区块30相关联。一般而言,所有所需要的为可存取并比较与存储器的给定区块相关联的保护标签32。

因此,当需要卷标保护型存储器存取时,将地址卷标40(与识别待存取的寻址位置44的目标地址42相关联)与保护标签32(与包括寻址位置44的存储器位置30的区块相关联)进行比较。例如,在图2中,目标地址42指向存储器中某个位置B1,在图2的地址空间中标记为44。因此,将保护卷标B(与包括位置B1的位置B的区块相关联)与地址卷标40(与目标地址42相关联)进行比较。如图2的顶部所示,可将地址卷标40确定为目标地址本身的选定位的函数。特定而言,可以从目标地址的部分内的位确定地址卷标,此目标地址的部分不用于指示将选为寻址位置44的特定存储器位置。例如,在一些架构中,目标地址的位的顶部部分可能总具有某个固定值,诸如符号扩展部分(全0或者全1),因此可通过使用任意标签值改写此些不用的位,来使用地址卷标40标记地址。例如,特定地址卷标值可由程序员或编译程序选定。地址卷标及保护卷标32可为相对少量的位,例如4位,因此不需要占据存储器内及目标地址内很多空间。提供4位的卷标空间,即16个可能的标签值,通常足以检测许多常见类型的存储器存取错误。

因此,当执行卷标保护型存储器存取时,加载/储存单元15比较地址卷标40及保护卷标32,保护卷标32与包括寻址位置44的区块30相关联,并确定它们是否匹配。加载/储存单元15生成匹配指示,指示地址卷标40与保护卷标32是否匹配。例如,此匹配指示可为故障讯号60,若在地址卷标40与保护卷标32之间存在不匹配,则生成故障讯号60,或者可为置于状态寄存器中的指示,指示是否存在匹配,或者可为添加至错误报告的条目,用于指示检测到错误的地址及/或触发了错误的指令的指令地址。

根据本文描述的方法,为多个不同存储器区域中的每个区域提供配置控制信息,其中每个存储器区域包括图2中图示的多个区块。存储器区域可以采取各种形式,但在一个示例性布置中每个存储器区域包括存储器页面,其中每个存储器页面将包括图2中图示的多个区块。这在图3中示意图示,其中将图2中提到的个别区块在图3中称为区组100,其中每个区组具有与其关联的保护标签。与图2先前描述一样,可提供存储器区域105用于储存保护标签。

然而,另外,如图3图示,区组100的群组在存储器中形成对应页面,并且与每个页面相关联地提供页面标签110。为了本文描述的示例性实施的目的,将具有关联配置控制信息的每个存储器区域假定为页面,因此在此将所关联配置控制信息称作页面卷标。可提供存储器120的区域用于储存页面标签。先前关于如何将保护卷标储存在存储器中的论述同样适用于页面标签110,因此这些可储存在物理地址空间内的架构可存取的存储器位置中,或者储存在设置在架构上不可存取的存储器(未映像至相同物理地址空间)中的额外储存位置中。在后一种情况下,可扩展卷标缓存19以缓存页面标签,或者替代地可提供单独的缓存结构。在本文后面论述的一个特定实施方式中,在TLB 22的条目内实际上缓存多个页面标签,这提供了用于缓存页面卷标信息的特别高效机制。

可将各种形式的配置控制信息储存在个别页面标签内。本文储存的信息用于控制如何由加载/储存单元15执行卷标保护型存储器存取操作。图4图示一种特定示例性形式的页面标签110。

如图4图示,提供许多不同字段。特定而言,提供匹配所有模式字段130,提供精确卷标检查模式字段135,提供相同卷标模式字段140,及另外提供页面保护标签字段145,用于储存页面保护标签(本文也称为存储器区域保护卷标)。现在将参照图5至图7更详细地论述根据设定此些不同字段中的哪些字段来控制卷标保护型存储器存取操作的方式。

图5指示如何根据在字段140内是否设定相同卷标模式来更改卷标保护型存储器存取操作。在步骤150,识别与存取请求的目标地址相关联的存储器页面,及在步骤155,引用该存储器页面的页面标签。这可能涉及以下步骤:在为缓存页面卷标提供的缓存结构(诸如卷标缓存19或TLB22)存储器取页面卷标,或者在系统内没有缓存相关页面卷标的情况下从存储器取回相关页面标签。

在步骤160,确定是否在该页面卷标中设定相同卷标模式,并且若没有,则过程仅进行至步骤165,此处执行默认卷标保护型存储器存取检查,以便比较目标地址的地址卷标与关联区组的保护标签。

然而,若设定相同卷标模式,则过程进行至步骤170,此处执行更改的卷标保护型存储器存取检查。特定而言,不是使用关联区组的保护标签,而是使用字段145中的页面保护标签,并相应地相对于页面保护卷标检查目标地址的地址卷标,以检测是否存在匹配。随后,根据匹配而采取的动作与先前在论述与个别保护标签的比较时参照图2论述的相同。

图6图示根据是否设定匹配所有模式来实施卷标保护型存储器存取操作而执行的步骤。步骤200及步骤205对应于图5的步骤150及步骤155。在步骤210,确定是否在页面标签110的字段130中设定匹配所有模式,并且若否,则过程进行至步骤215,此处执行默认卷标保护型存储器存取检查。

然而,若设定匹配所有模式,则过程进行至步骤220,此处确定目标地址的地址卷标是否具有预定值。预定值可以采取各种形式,但在一个示例性布置中预定值为地址卷标的零值。若地址卷标具有除了预定值外的值,则过程进行至步骤215,此处执行默认卷标保护型存储器存取检查。然而,若地址卷标具有预定值,则替代地过程进行至步骤225,此处指示在没有检查到关联区组的保护标签的情况下已经检测到匹配。

图7为图示在字段135内设定精确卷标模式的情况下如何执行卷标保护型存储器存取操作的流程图。步骤250及步骤255对应于先前论述的图5的步骤150及步骤155。在步骤260,确定是否设定精确卷标检查模式,并且若否,则在步骤265与关联存储器存取异步地执行默认卷标保护型存储器存取检查。因而,这意味着无论检查的结果如何,存储器存取继续进行,并且替代地有延迟报告任何不匹配的情况。在仅期望生成哪些存取操作未通过检查,但不阻止那些存取发生的报告的情况下,这可能有用。如前所述,对于每个未通过卷标保护型存储器存取检查的存取,可以单独提出不匹配指示,或者提出的任何不匹配指示可仅仅识别一个或多个存储器存取已经失败,若需要,则执行进一步调查以设法找到更多细节。

然而,相反,若设定精确卷标检查模式,则过程进行至步骤270,此处执行默认卷标保护型存储器存取检查,但延迟存储器存取直到检查结果可用,使得若在地址卷标与保护卷标之间检测到不匹配则防止执行存取。则在一个示例性实施中不执行存取,而是生成异常以便在较高异常级别触发异常处理程序。应理解,由异常处理程序采取的步骤将取决于实施方式。

尽管在上文图5至图7的论述中,假定针对任意特定页面卷标仅设定模式字段130、模式字段135、模式字段140中的一个,但这仅为了便于说明,在一个实施方式中参照图5至图7论述的不同模式可彼此独立地设定或清除。因此,举例而言,当考虑图6的匹配所有检查过程时,若过程进行至步骤215,但设定相同卷标模式字段,则步骤215将参照字段145中的页面保护标签而不是区组保护卷标,实际上执行卷标保护型存储器存取检查。此外,若在设定相同卷标模式字段的同时过程进行至步骤225,则也跳过相对于页面保护标签的检查,由此将匹配指示为在不使用页面保护卷标检查地址卷标的情况下就可以检测到。作为另一示例,若设定相同卷标模式字段以及精确卷标检查字段,则当执行图7的步骤265或者步骤270时,将再次使用页面保护标签145而不是区组的保护标签。

如前述,在一个示例性实施方式中页面标签可在图1图示的MMU 20的TLB 22内缓存。图8图示一个示例性实施方式,其中将TLB的TLB储存结构280扩展至包括额外字段。如图8图示,为TLB内的每个条目提供标准字段300、标准字段305、标准字段310。如本领域技术人员将理解的,字段300用于储存虚拟地址部分,而字段305用于储存对应物理地址部分,并且若确定特定地址索引为TLB中的一个条目,则可使用部分300、部分305指示的虚拟至物理地址映像,将虚拟地址转换成物理地址。字段310用于储存与条目相关联的存储器页面的各种属性,诸如对该存储器页面的存取是否可缓存、可缓冲等等。

还如图8中图示,TLB储存器280中的每个条目可扩展至包括两个额外字段。字段315用于储存与条目相关联的存储器页面的页面标签,并且也可提供页面标签有效字段320以识别保存在页面卷标字段315中的信息是否无效。

字段300、字段305、字段310将使用标准TLB更新程序来填充,标准TLB更新程序通常涉及存取储存在存储器中的一个或多个页表以取回必要地址转换信息的页表走查过程。此后,将字段300、字段305、字段310的内容统一称为地址转换信息。字段315将不被常规页表走查过程填充,而可以执行单独的存取,例如在最初将条目分配进TLB中时,以从存储器取回存储器相关页面的页面标签,其中在字段315中填充信息,随后设定页面标签有效字段320。

尽管在与页面卷标相关联的存储器页面为物理页面的情况下可使用上述方法,但在替代实施方式中与页面卷标相关联的存储器页面也可能为虚拟页面。在该情况下,由于用于获得地址转换信息的标准页表走查过程,可填充字段315、字段320,因为在此种情况下在储存在存储器中的页表信息内可包括页面卷标信息,因此将作为页表走查过程的部分而取回。在一些情况下,例如在总体存储器地址空间相对较小的更小系统中,页表内可能存在可轻易容纳页卷标信息的现有的冗余空间。在此种情况下,可以在图1图示的系统控制寄存器24的一个内保留信息,以识别从页表取回的地址转换信息的哪些位提供页面卷标信息。

在基于虚拟地址的一个实施方式中,可能不需要单独的页面标签有效字段320,因为作为标准页表走查过程的一部分而取回页面卷标信息,因此用于整个条目的通用有效旗标可用于指示地址转换数据的有效性,包括从页表走查过程获得的页面卷标信息。

图9为图示根据一个示例性实施方式的设置在TLB 350内的部件的方块图。TLB350包括TLB储存器280,其可采取上文参照图8论述的形式。TLB访问控制电路系统355用于基于指定虚拟地址执行存取操作,以取回地址转换信息,并由此产生指定虚拟地址的对应物理地址。如稍后参照图11将论述的,也可在该点提供关联存储器区域的页面卷标信息作为来自TLB的输出。

另外,可提供TLB维持电路系统360用于对TLB储存器280的内容执行TLB维持操作。除了包括标准TLB维持操作之外,TLB维持电路系统360可包括页面卷标更新/刷新电路系统365,其响应于页面标签更新/刷新操作以便执行步骤序列,如下文参考图10将更详细论述的。如图10图示,在步骤400,识别到TLB刷新页面标签(TLB refresh page tags;TLBRPT)操作,具有关联地址或地址范围。可以各种方式识别对TLBRPT操作的需要。例如,可以提供显式指令,此处将其称为TLBRPT指令,其提供地址/位置范围,并在执行时导致执行刷新操作。替代地,可以通过正在执行的另一操作自动触发TLB刷新操作。例如,可提供指令用于将页面卷标信息储存至存储器,此种指令在此处称为STPT指令。当执行此种指令以更新存储器中的页面卷标时,可自动调用刷新操作,以设法刷新相关页面标签的任何缓存副本。

此外,尽管可响应于在特定异常级别上执行指令而直接执行刷新操作,但在一些实施方式中,可仅允许在某些更高特权级别执行刷新操作,因此可以在更高异常级别上模拟刷新操作的执行,而不是由于在当前较低异常级别处执行指令而执行刷新操作。

若需要,系统控制寄存器24中的一个可用于提供信息,该信息识别此种刷新操作可在哪个异常级别执行。例如,此种信息可识别在异常级别0处不能执行刷新操作,并且在异常级别0处执行刷新操作的任何尝试应截获至异常级别1。或者,控制信息可以识别在异常级别0可执行刷新操作,或者可以根据在存储器中相关页表中指定的页面属性而在异常级别0对一些页面执行刷新操作。无论上述哪种应用,假定在步骤400现在正在执行刷新操作,直接经由适当指令的执行,或者通过更高异常级别下的模拟而执行刷新操作。

在步骤405,识别包括地址区域的地址转换信息的TLB条目,此地址区域的地址转换信息匹配与TLBRPT操作相关联的地址信息。TLBRPT操作仅可识别单个页面,在这种情况下至多一个TLB条目将需要刷新,或者替代地识别多个页面,因此可能存在需要进行刷新操作的多个TLB条目。

在步骤410,确定刷新操作是否在无效模式下工作,而不是在更新模式下工作。若在无效模式下操作,则过程进行至步骤415,此处针对每个识别的TLB条目清除页表有效旗标320。因此,这指示页面标签字段315中的当前内容无效,因此若在适当时候需要使用页面卷标信息,则需要从记忆体重新取回此页面卷标信息。

然而,若在步骤410处确定正在使用的更新模式,则过程进行至步骤420,此处过程从存储器取回相关页面或页面标签的最新版本,并更新在每个识别的TLB条目中的页面卷标信息。对于每个此种条目,也设定PT有效旗标。

图11为图示根据一个示例性实施方式的图9的TLB访问控制电路系统355的操作的流程图。在步骤450,识别将执行的存取操作,此存取操作指定目标虚拟地址。在步骤455,通过使用TLB储存器280的TLB访问控制电路系统355,来执行虚拟至物理地址转换。若在TLB中检测不到,则此过程将涉及执行页表走查过程,并随后分配TLB中的条目用于相关地址转换信息。因此,应理解,在已执行步骤455时,将在TLB储存器中分配条目,因为条目已经存在并且检测到命中,或者因为检测不到,从而导致条目填充进TLB储存器中。在步骤455确定的物理地址随后可返回至加载/储存单元15。

在步骤460,确定用于地址转换过程的TLB条目是否已经设定PT有效旗标320。若为了服务存取请求而在步骤455恰好填充了页表条目,则情况将不同。另外,从先前论述将理解,若先前使用无效工作模式执行刷新操作,则可能不设置PT有效旗标,因此可继续进行图10的步骤415。

若讨论中的TLB条目已经设定PT有效旗标,则过程可仅进行至步骤470,此处可将保存在该条目中的页面标签提供至加载/储存单元,用于控制对存取操作的目标地址进行卷标保护型存储器存取检查。

然而,若在相关条目中未设定PT有效旗标,则在步骤465,从存储器取回相关页面的页面标签,随后将其储存在相关TLB条目的字段315中(随后设定PT有效旗标)。此后,过程进行至步骤470。

图12为图示TLBRPT处理可如何由保存在系统控制寄存器24中的信息影响的流程图。在步骤500,确定是否需要TLBRPT操作。若否,则在步骤505,复查相关系统控制寄存器,以确定该系统控制寄存器的内容是否指示不允许在当前异常级别下的TLBRPT操作的执行。若为这种情况,则在步骤510,触发异常以使在更高异常级别下处理TLBRPT操作。

然而,若系统控制寄存器不防止TLBRPT操作在当前异常级别执行,则在步骤515检查系统控制寄存器内容是否指示容许性取决于页表中的页面属性。若否,则在步骤520在当前异常级别可执行刷新操作。然而,另外在步骤525复查由系统控制寄存器识别出的相关页面属性。这通常涉及存取TLB以便取回相关的属性。此后,在步骤530,确定页面属性是否具有允许在当前异常级别执行刷新操作的形式。若是,过程进行至步骤520,但在其他情况下进行至步骤510。

在使用上述相同卷标模式的实施方式中,可将相同卷标模式的设定用于额外控制上述卷标保护型存储器存取操作之外的其他功能。这通过参考图13A的示例来说明。在步骤550,确定是否已经请求对选定区组的保护标签进行更新。这可能例如由于正在执行的储存指令而出现,此储存指令设法在存储器中更新特定保护标签。若是,则在步骤565,识别关联存储器页面(即,包括选定区组的存储器页面),随后在步骤570确定是否针对对应页面卷标设定相同卷标模式。若否,则在步骤580,可以标准方式针对选定区组更新保护标签。然而,若设定相同卷标模式,则在步骤575,可将异常生成至更高异常级别。在该点上可执行异常处理程序,该异常处理程序的形式取决于实施方式。

图13B为图示当设法更新选定区组的保护标签时可执行的特定示例性序列的流程图。特定而言,根据图13B描述的方法,更新特定区组的保护标签的尝试可调用从操作的相同卷标模式切换至默认模式的机制。图13B中图示的步骤可以经由执行指令序列而显式执行,或者可隐含地执行,例如通过执行储存区组(store granule;STG)指令时采取异常,以便在更高异常级别模拟所需处理步骤。

当在步骤600检测对选定区组的保护标签的更新时,则在步骤605,识别对应于选定区组的存储器页面,并且随后在步骤610确定是否设定相同卷标模式。若否,则过程可直接进行至步骤630,此处将选定区组的保护标签更新至由步骤600处使用的更新机制指定的值。

然而,若设定相同卷标模式,则在步骤615,更新相关存储器页面的页面卷标,以便改变相同卷标模式旗标以清除而不是设定,随后将更新后的页面卷标储存至存储器。此后,在步骤620,相对于TLB中的相关条目执行刷新页面标签操作,因为已知前一页面卷标信息现在无效。从图10的先前论述中显而易见,这将导致页面标签有效旗标在TLB条目中清除,或者最新版本的页面卷标从存储器取回并储存到TLB中,此最新版本指示不再设定相同卷标模式。

在步骤625,对于存储器页面的每个区组,将对应保护标签更新,以便使用页面标签的字段145内的页面保护卷标信息改写上述保护卷标信息。因而,可以看出,此时位置与仍然已设定相同卷标模式时相同,但是不是正在使用的总体页面保护标签,与页面内区组相关联的个别保护标签中的每个保护标签已经被更新至具有与页面保护标签相同的值。

此后,在步骤630,可将由步骤600使用的更新机制指定的选定区组的保护标签更新至由该更新机制指定的值。

因而,应理解,已经执行保护标签更新,但此过程的副产物为对于讨论中页面不再设定相同卷标模式。因而,将参考相关区组保护卷标而执行后续卷标保护型存储器存取操作。

图14为图示正在设定的相同卷标模式的存在可能如何影响选定区组的保护标签的读取请求的流程图。若在步骤650检测到读取请求,读取请求为设法从存储器读取选定区组的保护标签,则在步骤655识别到对应存储器页面,即包含选定区组的存储器页面。此后,在步骤660,确定是否在该存储器页面的页面卷标内设定相同卷标模式。若否,过程进行至步骤670,此处以通常方式从存储器读取选定区组的保护标签。

然而,若设定相同卷标模式,则过程进行至步骤665,此处不读取选定区组的保护卷标,而是返回存储器页面的页面保护标签。因此,读取请求导致返回页面保护标签,而不是返回选定区组的当前保护标签内容。

图15为图示根据一个示例性布置可在异常级别0(EL0)处如何处理STPT指令的流程图。特定而言,STPT指令为特定形式的储存指令,用于更新页面标签的内容。当在步骤700确定将在EL0处执行此种STPT指令时,则在步骤705参考一个或多个地址转换因子,以便确定在EL0是否可执行STPT指令的执行。因而,确定在步骤710在EL0可执行STPT指令,则过程进行至步骤715,此处执行STPT操作。然而,否则过程进行至步骤720,此处触发异常以导致在更高异常级别处理STPT操作。

在步骤705可考虑地址转换因子的不同示例。作为一个特定示例,若系统支持使用多个虚拟页面大小,并且将最小虚拟页面大小暴露于异常级别0,则在异常级别0处的处理电路系统可确定STPT操作是否涉及一个或多个最小大小的虚拟页面。若否,则将不在异常级别0下执行STPT操作,而是将陷入异常级别1。

作为另一示例,在特定物理页面可以映像进几个虚拟页面的情况下,可使用隐含页面共享机制,因此不同虚拟地址可映像至相同物理地址。在这将对异常级别0处执行的处理电路系统是透明,且因此存在隐含页面共享的情况下,则可在页面卷标信息内提供额外位,当设定此页面卷标信息以指示此种情况时,导致将与对应页面相关联的任何执行STPT操作的尝试截获至异常级别1。

图16图示可使用的模拟器实施方式。尽管先前所述实施例按照用于操作支持相关技术的特定处理硬件的设备及方法实施本发明,但也可能提供根据本文所述的实施例的指令执行环境,该指令执行环境经由使用计算机程序来实施。只要此种计算机程序提供硬件架构的基于软件实施方式,就将它们通常称为模拟器。各种模拟器计算机程序包括模拟器、虚拟机、模型及二进制翻译器(包括动态二进制翻译器)。通常,模拟器实施方式可在主机处理器1130上运行,视情况运行主机操作系统1120、支持模拟器程序1110。在一些布置中,在硬件与所提供的指令执行环境及/或提供在相同主机处理器上的多个不同指令执行环境之间存在多个模拟层。从历史上看,已经要求功能强大的处理器提供以合理速度执行的模拟器实施方式,但是在某些情况下此种方法可能是合理的,例如当出于兼容性或重用原因而希望将运行另一个处理器的本地代码时。例如,模拟器实施方式可提供具有不由主机处理器硬件支持的额外功能的指令执行环境,或者提供通常与不同硬件架构关联的指令执行环境。模拟的概述在刊登在“冬季1990USENIX会议”中第53-63页中的Robert Bedichek所写的“一些架构模拟技术(Some Efficient Architecture Simulation Techniques)”中给出。

先前已参考特定硬件构造或特征描述实施例,在模拟实施例中,可通过合适的软件构造或特征来提供等效功能。例如,特定电路系统可在模拟实施例中实施作为计算机程序逻辑。同样地,诸如寄存器或缓存的存储器硬件可在模拟实施例中作为软件数据结果实施。在先前所述实施例中引用的硬件组件的一个或多个存在于主硬件(例如,主机处理器1130)上的布置中,在适合的情况下一些模拟实施例可利用主硬件。

模拟程序1110可储存在计算机可读储存介质1112(其可为非暂时性介质),并且将程序接口(指令执行环境)提供至与硬件架构的应用程序编程接口相同的目标代码1100(其可包括应用程序、操作系统及超管理器),此硬件架构通过模拟程序1110模型化。因而,目标代码1100的程序指令可使用模拟程序1110在指令执行环境内执行,以便实际上不具有如上所述装置2的硬件特征的主计算机1130可模拟此等特征。例如,模拟程序1110可包括用于通过目标代码1100的指令控制对存储器的存取的存储器存取程序逻辑1114。例如,存储器存取程序逻辑1114可包括用于执行保护卷标与地址卷标的比较,并报告在保护卷标与地址卷标之间是否已经检测到任何不匹配的指令。此外,模拟程序1110可包括控制卷标数据结构1116,用于针对多个存储器区域的每个区域储存配置控制信息,此配置控制信息用于当目标地址在该存储器区域内时控制如何执行卷标保护型存储器存取操作。

在本申请中,用语“经配置以”用于意指装置的组件具有能够执行所定义操作的配置。在此上下文中,“配置”意指硬件或软件的互连的排列或方式。例如,装置可具有提供定义操作的专用硬件,或处理器或其他处理组件可经程序化以执行功能。“经配置以”不暗示装置组件需要以任何方式改变以便提供所定义的操作。

尽管本文已参考所附图式详细地描述本发明的说明性实施例,但应理解,本发明并不限于那些精确实施例且熟习此项技术者可在不背离如随附申请专利范围所定义的本发明的范畴及精神的情况下在其中实施各种改变、添加及修改。例如,可在不脱离本发明的范围的情况下,对从属权利要求的特征与独立权利要求的特征进行多种组合。

相关技术
  • 存储器存取方法、存储器存取控制方法、SPI闪存装置及其控制器
  • 存储器存取方法、存储器存取控制方法及存储器控制器
技术分类

06120112579770