CN111433742A - 多保护标签设置指令 - Google Patents

多保护标签设置指令 Download PDF

Info

Publication number
CN111433742A
CN111433742A CN201880079443.0A CN201880079443A CN111433742A CN 111433742 A CN111433742 A CN 111433742A CN 201880079443 A CN201880079443 A CN 201880079443A CN 111433742 A CN111433742 A CN 111433742A
Authority
CN
China
Prior art keywords
tag
protection
address
memory access
instruction
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
CN201880079443.0A
Other languages
English (en)
Other versions
CN111433742B (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 CN111433742A publication Critical patent/CN111433742A/zh
Application granted granted Critical
Publication of CN111433742B publication Critical patent/CN111433742B/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/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Burglar Alarm Systems (AREA)

Abstract

装置(2)具有存储器存取电路15,用于响应于目标地址而执行标签保护的存储器存取操作。标签保护的存储器存取操作包括:将与目标地址相关联的地址标签(40)与保护标签(32)进行比较,该保护标签(32)与包括由目标地址标识的寻址位置(44)的一个或多个存储器位置的区块(30)相关联地存储在存储器系统(16‑18)中,以及生成在保护标签与地址标签之间是否检测到匹配的指示。指令解码器(6)解码多保护标签设置指令以控制存储器存取电路(15)触发存储器存取,来更新与一个或多个存储器位置的至少两个连续区块相关联的保护标签。

Description

多保护标签设置指令
技术领域
本技术涉及数据处理领域。
背景技术
待由数据处理装置执行的软件通常可以以高级编程语言来写入,并且随后根据由其上将执行软件的装置支持的指令集架构被编译为代码。例如,软件可以最初以较高级语言(例如,Java、C或C++)写入,并且随后被编译为本机支持的指令集架构,例如x86或
Figure BDA0002530327830000011
一些较高级编程语言(例如,Java)被认为是存储器安全语言,因为其包括用于检查某些关于存储器存取的错误的运行时间错误检测检查。相比之下,存储器不安全语言(例如,C和C++)不包括这种运行时间错误检查。使用存储器不安全语言的持久流行意味着在根据给定指令集架构编译的代码中,可存在大量的关于存储器的错误,这些错误容易由攻击者或其他恶意方利用。这种错误可包括:
·界限违例,其中由代码供应的阵列索引在阵列的合法界限之外;
·释放后使用错误,其中在已经解除分配或释放存储器位置之后进行对存储器位置的存取;
·返回后使用,其中在已经从函数返回之后进行对与函数中使用的变量(例如,堆栈上的值)相关联的地址的存储器存取;
·范围外使用错误,其中在声明这种变量的范围之外的变量被存取;以及
·初始化前使用错误,其中在已经初始化变量之前存取与变量相关联的存储器位址。
这些仅为与存储器相关的错误的一些示例,其可以导致不可预测的行为并且可能提供攻击者利用的途径。因此,可能期望在由给定处理装置支持的指令集架构内提供架构支持,用于辅助某些种类的存储器错误的运行时间检测。
发明内容
至少一些示例提供了一种装置,包括:
存储器存取电路,用于响应于目标地址而执行标签保护的存储器存取操作,该标签保护的存储器存取操作包括:
将与目标地址相关联的地址标签与保护标签进行比较,其中,该保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,该区块包括由目标地址标识的寻址位置;以及
生成在保护标签与地址标签之间是否检测到匹配的指示;以及
指令解码器,用于解码多保护标签设置指令,以控制存储器存取电路来触发至少一个存储器存取,从而更新与至少两个连续、由一个或多个存储器位置构成的区块相关联的保护标签。
至少一些示例提供了一种方法,包括:
响应于目标地址而执行标签保护的存储器存取操作,该标签保护的存储器存取操作包括:
将与目标地址相关联的地址标签与保护标签进行比较,其中,该保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,该区块包括由目标地址标识的寻址位置;以及
生成在保护标签与地址标签之间是否检测到匹配的指示;以及
响应于多保护标签设置指令的解码,来触发至少一个存储器存取,从而更新与至少两个连续、由一个或多个存储器位置构成的区块相关联的保护标签。
至少一些示例提供了一种计算机程序,用于控制主数据处理装置来提供用于执行目标程序代码的指令的指令执行环境,该计算机程序包括:
存储器存取程序逻辑,用于响应于目标地址来执行标签保护的存储器存取操作,该标签保护的存储器存取操作包括:
将与目标地址相关联的地址标签与保护标签进行比较,其中,该保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,该区块包括由目标地址标识的寻址位置;以及
生成在保护标签与地址标签之间是否检测到匹配的指示;以及
标签设置程序逻辑,响应于目标程序代码的多保护标签设置指令,来触发至少一个存储器存取,从而更新与至少两个连续的、由一个或多个存储器位置构成的区块相关联的保护标签。
一种存储介质,可以存储上文描述的计算机程序。该存储介质可以是非暂态存储介质。
附图说明
本技术的其他方面、特征及优点将从结合附图阅读的示例的以下描述中显而易见,在附图中:
图1示意地示出了数据处理装置的示例;
图2示出了包括检查地址标签是否匹配保护标签的标签保护的存储器存取操作的示例;
图3是示出执行标签保护的存储器存取操作的方法的流程图;
图4示出了多保护标签设置指令的指定寄存器长度的变型;
图5是示出处理图4的指令的方法的流程图;
图6示出了响应于相同的多保护标签设置指令以更新不同数量的标签的不同微架构实现方式的示例;
图7示出了具有基于缓存线对准来改变更新多少标签的灵活性的微架构的示例;
图8示出了多保护标签设置指令的指定立即长度的变型;
图9是示出处理图6的指令的方法的流程图;
图10示出了图4的指令的替代变型,其中使用单独寄存器来将更新后的标签值指定为标签更新的地址;
图11示出了多保护标签设置指令的数据清除变型;以及
图12示出了支持多保护标签设置指令的模拟器的示例。
具体实施方式
一种用于防止上文讨论类型的某些存储器使用错误的方法可能是提供与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中的保护标签。当基于标识存储器系统中的特定寻址位置的目标地址来请求标签保护的存储器存取操作时,存储器存取电路可以将与目标地址相关联的地址标签与保护标签进行比较,该保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,该区块包括由目标地址标识的寻址位置。存储器存取电路可以生成在保护标签与地址标签之间是否检测到匹配的指示。该指示可以用于控制是否允许存储器存取成功或后续操作是否可以成功,或可以仅在允许存储器存取如常继续时报告。
这可在以下情况是有用的:例如,基于存储器不安全语言(例如,C或C++)编译代码的编译器可以在初始化存储器区域时,将期望代码存取的存储器区块的保护标签设置为特定值,并且可以使相应的地址标签值与指向那些区块的目标地址相关联。如果发生存储器使用错误,并且例如使用在范围之外或延伸出已初始化的有效范围的界限之外的地址指标,则很可能与寻址位置相关联的保护标签可能不匹配与目标地址相关联的地址标签,并且随后在此情况下,是否检测到匹配的指示可以用于触发某种错误处理响应或错误报告机制。所采取的特定响应可以取决于正在执行的软件的特定需求或取决于架构的特定微架构实现方式。因此,即使高级语言不具有用于执行运行时间错误检查以防止存储器存取错误的手段,用于编译代码的ISA可包括用于执行这种检查的架构特征。
然而,使用这种保护标签可以导致在设置与存储器的特定区块相关联的保护标签方面的一些额外负担。用于设置与存储器位置的区块相关联的保护标签的过程可能需要为相对快速的,因为与设置保护标签相关联的任何延迟还可以延迟对正在执行的真实软件功能的后续处理。下文讨论的装置具有:指令解码器,用于解码多保护标签设置指令以控制存储器存取控制电路触发至少一个存储器存取,来更新与至少两个连续的、由一个或多个存储器位置构成的区块相关联的保护标签。将与存储器位置的多个连续区块相关联的保护标签设置为相同标签值可能是相对常见的,例如,在初始化存储器的区域时如此。通过提供可以响应于单个指令触发所需的一个或多个存储器存取来更新与存储器区块的整个范围相关联的保护标签的多保护标签设置指令,这可以加速标签设置并因此改进性能。此外,该指令有助于减小代码密度,因为具有较少指令的较紧密循环可以控制存储器的给定区域的标签设置,从而需要较少空间用于在存储器中和在任何缓存中存储指令。
所生成的在保护标签与地址标签之间是否检测到匹配的指示的特定形式可以在实现方式之间变化。在一些情况下,标签保护的存储器存取操作可以包括取决于在保护标签与地址标签之间是否检测到匹配来控制是否允许对寻址位置的存储器存取。然而,在其他示例中,标签保护的存储器存取可以包括执行对寻址位置的存储器存取,而不考虑在保护标签与地址标签之间是否检测到匹配。例如,与存储器位置的给定区块相关联的保护标签可以被存储在存储器系统内的存储器位置的不同区块中,并且因此存取保护标签可能需要单独的读取操作。因此,如果延迟存储器存取直到已经将保护标签与地址标签进行比较,则可能延迟对实际存储器存取的处理,因此期望在保护标签可用之前且无论在保护标签与地址标签之间是否检测到任何匹配,执行对寻址位置的存储器存取,并且一旦已经获得保护标签并将其与地址标签进行比较,则生成是否检测到匹配的单独指示。
在一个示例中,是否检测到匹配的指示可以是表示故障状况的信号,在保护标签与地址标签之间检测到不匹配时生成该信号。例如,存储器存取电路可以发信号通知与在违反存取权限或存取未映射的地址的情况下生成的故障类似的存储器故障,或可以指示不同种类的故障状况。故障信号可以触发处理电路响应于检测到的故障执行异常处理例程。
或者,状态指示可以被记录在装置的处理电路可存取的控制寄存器内,以指示在比较保护标签与地址标签时是检测到匹配还是不匹配。状态信息可以随后由后续指令读取以检查存储器存取是否有效。
用于报告地址标签与保护标签是匹配还是不匹配的另一选项可以是将信息记录在与执行的代码段相关联的错误日志中,其追踪在整个代码段中检测到的任何保护标签错误。例如,响应于不匹配的保护标签与地址标签,触发不匹配的目标地址或触发不匹配存储器存取的指令的指令地址可以被记录在错误日志中。在这种情况下,不是执行任何具体动作来阻止代码的操作,而是错误可以仅被记录在错误日志中。错误日志可以随后变得可对代码的软件提供者可用,以辅助提供者消除软件的后续版本中的错误。
因此,应当理解,存在保护标签匹配/不匹配指示可以由存储器存取电路生成的多种方式。
在一些实施例中,具有相应保护标签的存储器位置的区块可以各自包括单个存储器位置。在这种情况下,每个独立存储器位置可以具有不同保护标签,这可以提供设置保护标签的精细粒度,使得可以检测到较大范围的存储器错误。
然而,实际上,为每个寻址位置设置独立保护标签的额外负担可能是过高的,并且将每个保护标签与多个存储器位置的区块相关联可以更有效。在这种情况下,若干相邻存储器位置可以共享相同保护标签,这可能足以检测与存储器相关的错误的常见形式。
与存储器位置的给定区块相关联的保护标签可以被存储在存储器系统内的任何其他存储器位置处。选择存储器系统中的保护标签的位置的特定方式可以在实现方式之间或在运行时间方面显著变化。在一些示例中,存储保护标签的位置可以由处理电路以架构方式存取,即,保护标签存储位置可以是被映射到与寻址位置相同的地址空间的部分的位置。在这种情况下,在寻址位置本身与相应标签存储位置的地址之间的映射可以为固定的或硬接线的,或可以为可变的,例如,在由存储器存取电路维持的追踪表中或在转换后备缓冲器中追踪。或者,其他实现方式可以将与给定寻址位置相关联的保护标签存储在处理电路不以架构方式存取的另外的存储位置中,例如,在不映射到地址空间的微架构中提供的额外存储装置中,该地址空间可以由处理电路执行的指令来寻址。在这种情况下,存储器存取电路可以基于寻址位置的地址来确定用于表示相应标签存储位置的特定内部地址,并且触发从标签存储位置读取标签数据所需的任何额外存储器存取。无论标签存储位置是否由处理电路以架构方式存取,标签值也可以被缓存在用于较快存取的缓存内、或在用于数据值的相同缓存内、或在专用标签缓存中。
在一些情况下,保护标签可为相对小的,例如4或8位,并且因此各自与存储器位置的不同区块相关联的多保护标签可以装配在相同存储器位置内。因此,尽管可以响应于多保护标签设置指令来更新多保护标签,但是在一些情况下,如果多保护标签均存储在可以由存储器存取电路进行的单个写入操作写入的单个位置内,则所述多保护标签可以在单个存储器存取中更新。或者,其他实现方式可能需要触发多个独立写入来响应于多保护标签设置指令而设置待设置的保护标签的不同子集。因此,指令可能触发单个存储器存取或多个存储器存取,用于设置保护标签。
地址标签可以以不同方式与目标地址相关联。在一些情况下,地址标签可以与目标地址分开指定,例如使用由触发标签保护的存储器存取操作的标签保护的存储器存取指令指定的单独寄存器。然而,在其他示例中,可以根据目标地址的一个或多个所选位来确定地址标签。即,地址标签可以包括从目标地址本身的一部分导出的信息。通常,尽管指令集架构可以支持具有某一数量的位(例如,64位)的地址,但是给定硬件设备可能实际上不需要如此多的存储器容量,其将使用可以使用该数量的位来表示的所有可能地址。例如,随着设备使用的当前趋势,可能尚不存在对提供264个独立可寻址位置的任何需要。因此,通常,存储器位址的一些位可以有效地不使用并且可能总是具有相同值,或被设置为最高有效“真实”地址位的符号扩展(使得未使用部分均被设置为0或1)。该未使用部分因此可以被重复用于表示地址标签或用于导出地址标签的值,以避免需要存取单独寄存器才能获得该地址标签,并且由于无论何时操纵地址或在寄存器之间移动地址,地址标签都可以根据定义与地址一起传送,还使得更容易跟踪地址与相应地址标签之间的对应关系。
在使用目标地址的一部分来确定地址标签的实施例中,注意到该地址标签不同于可以由缓存用于确定来自目标地址所标识的寻址位置的信息是否被存储在缓存中的目标地址的标签部分。许多缓存方案可以将在该数据旁边的缓存数据段的地址的标签部分存储在缓存内,使得在缓存中搜寻给定地址时,地址的部分可以与所缓存的数据旁边存储的标签进行比较,以便确定所缓存的数据实际上是否对应于所需地址。然而,在这种情况下,与缓存中的标签进行比较的地址的标签部分将是地址部分中实际上标识请求数据的特定寻址位置的一部分,即,根据定义改变地址的缓存标签部分将导致地址指向存储器系统内的不同寻址位置。相比之下,利用用于标签保护的存储器操作的地址标签,存储器存取电路可以独立于地址标签来选择请求数据的寻址位置。换句话说,即使地址标签具有不同值,由目标地址引用的寻址位置仍然可以相同,因为寻址位置的选择仅取决于目标地址的其他部分。这给予编译器将与特定地址相关联的地址标签设置为任何值以匹配相应保护标签值的自由度,该保护标签值已经分配给存储器系统中的数据的相关区块。此外,利用缓存标签,将标签值存储到缓存中可由缓存控制器来控制并且不需要由指令解码器所解码的标签设置指令来明确地指示,并且通常响应于对给定寻址位置的存储器存取,仅单个缓存标签将需要被设置为新的值(与缓存条目相关联的缓存标签,该缓存条目用于缓存与给定寻址位置相关联的数据)。相比之下,利用多保护标签设置指令,指令解码器支持具体指令,用于指示对与存储器中的不同寻址位置相关联的多保护标签的设置。
在一些实现方式中,指令解码器可以支持存储器存取指令的单独的无标签保护的和标签保护的变型。在这种情况下,标签保护的存储器存取操作可以响应于存储器存取指令的标签保护的变型而触发。相比之下,无标签保护的存储器存取指令可以仅触发对由该指令指定的目标地址标识的寻址位置的存取,而不需要获得保护标签或执行地址标签与保护标签之间的任何比较。
然而,在其他实现方式中,所有存储器存取可被认为是标签保护的存储器存取。因此,在一些情况下,任何存储器存取指令可被认为触发存储器存取电路执行如上文讨论的标签保护的存储器存取操作。
然而,即使所有存储器存取指令被解释为标签保护的存储器存取指令,但是仍然可能存在指令集架构可以支持针对某些操作选择性禁用保护标签比较的其他方式。例如,在处理装置的控制寄存器内的控制参数可以选择性禁用标签比较。另一选项是针对待以特殊方式解释的地址标签的某一值,使得该值指示地址标签应当被认为匹配保护标签的任何可能值,再次有效禁用标签比较的效应,使得无论地址标签是否匹配保护标签也不报告错误。
多保护标签设置指令可以以不同方式实现。一种特定的有用变型是提供标识长度寄存器的多保护标签设置指令的指定寄存器长度的变型。响应于该变型,指令解码器可以控制存储器存取电路对与给定数量个连续区块相关联的保护标签进行更新,该给定数量小于或等于由存储在长度寄存器中的长度参数标识的区块的最大数量,以及控制处理电路将存储在长度寄存器中的长度参数递减与该给定数量成比例的量。因此,长度寄存器不是指定要被更新保护标签的区块的绝对数量,而是指定允许要响应于指令而被更新了相应保护标签的区块的最大数量。被选择为(要被更新保护标签的)连续区块的给定数量的特定数量可以在逐个实现方式的基础上被选择或可以在运行时间改变。这可以用于在微架构设计中提供灵活性,同时仍实现跨多个微架构利用期望的架构行为来执行相同指令序列。因此,实现方式无关的软件例程可以使用指令的指定寄存器长度的变型来执行,从而允许实现方式确定标签设置的特定粒度。
该形式的多保护标签设置指令可以为非常有用的,因为可能不期望承诺存储器存取电路来响应于单个指令而针对存储器的大区域执行所有更新操作。例如,如果承诺了用于更新大量的不同保护标签的存储器存取,则这可能阻止资源处理其他操作,并且可以使得难以重新排序存储器存取操作来改进效率。因此,一些微架构设计者可能偏好限制一个指令可以更新多少保护标签。响应于一个指令而允许更新的保护标签的数量可以在实现方式之间改变。例如,不同实现方式可以在存储器系统中实现不同缓存线大小。与使用较小缓存线大小的实现方式相比,具有较大缓存线大小的实现方式可能能够响应于一个指令而设置较大数量的保护标签。此外,甚至在特定微架构实现方式内,有时可以有效地响应于一个指令而设置的保护标签的数量可能取决于目标地址在缓存线内的相对位置。例如,执行与缓存线边界对准的存储器存取可以更有效,并且因此如果待更新的标签值在缓存线的中途开始,则仅更新延伸直到缓存线的末端而非继续到下一缓存线上的保护标签可能更有效,使得多保护标签设置指令的后续实例可以随后从对准的地址开始,从而使存储器存取更为有效。
因此,出于多种原因,给予存储器存取电路灵活性以改变存储器位置的多少区块响应于多保护标签设置指令来使其保护标签被更新,这是有用的。由长度寄存器中的长度参数指定的区块的最大数量限制该更新,使得不将保护标签更新超出需要被设置保护标签的范围末端。由于指令触发处理电路基于已被更新保护标签的区块的给定数量来递减长度参数,这意味着包括多保护标签设置指令的指令循环可以被定义为最初指定将在长度寄存器中被更新保护标签的区块的所需数量,并且随后循环可以在多保护标签设置指令的多个实例中迭代,每个迭代将长度参数递减了与已被更新标签的区块数量成比例的量,直到一旦长度参数已经递减到零(在该点将已经设置所需数量的标签),则可以退出该循环。这使得相同循环能够准确地在多种不同微架构上执行,而不管实际上响应于单个实例指令使多少区块被更新为保护标签值。
在一些示例中,长度参数可以指定要被更新标签的区块的准确数量。在这种情况下,长度参数递减的量可以等于给定数量本身。
或者,在一些实现方式中,长度参数递减的量可以大于或小于被更新了保护标签的区块数量,但是与被更新了保护标签的区块数量成比例。
例如,对于一些实现方式,长度参数可以被指定为要被设置保护标签的存储器字节的数量。微架构可以将字节的特定数量选择为小于或等于长度参数中定义的最大值,并且为已选数量的存储器字节设置保护标签。由于每个保护标签可以对应于存储器的多个字节,这可以意味着长度参数递减的量可以与响应于指令而更新的标签数量成比例,但大于该标签数量。
在其他示例中,长度参数可以根据区块的一些基本粒度的倍数来定义长度参数。在这种情况下,长度参数可以指定要更新区块的多少倍数,使得长度参数递减的量可以与实际上更新的保护标签的数量成比例,但小于该保护标签的数量。例如,对于一些微架构,在适配在一个保护存储器位置中的保护标签的数量或与一个数据存储器位置相关联的保护标签的数量的粒度处更新保护标签可能更有效。在这种情况下,为了减少长度参数所需的位的数量,长度参数可以实际上指定要被更新相应标签的数据/保护存储器位置的数量,而非保护标签的绝对数量。标签设置指令因此可以触发将长度参数递减如下量:该量对应于更新后的保护标签的数量除以与允许更新保护标签的基本粒度相对应的保护标签的数量。
但是,尽管指定寄存器长度的变型可以提供支持不同微架构的非常灵活的架构,但是在其他示例中,可以提供多保护标签设置指令的指定立即长度的变型,其中在编码指令时指定的立即参数标识存储器系统的多少区块将被给予更新的保护标签值。响应于指定立即长度的变型,指令解码器可以控制存储器存取电路来更新与由立即参数指定的数量个连续区块相关联的保护标签。因此,在这种情况下,微架构可能无法选择有多少区块要使其保护标签被更新,但是可以仅更新由立即参数指示的保护标签的数量。
还将可能提供指定长度寄存器的基于寄存器的变型,其指示要被更新保护标签的区块的绝对数量,这可以以与指定立即长度的变型类似的方式发挥作用,因此寄存器中的长度参数可以指定要被更新标签的区块的准确数量,而非如在上文讨论的指定寄存器长度的变型中的区块的最大数量。
多保护标签设置指令可以指定标签更新目标地址,该标签更新目标地址标识要被更新保护标签的存储器的连续区块。大体上,由多保护标签设置指令靶向的至少两个连续区块可以包括实际上由标签更新目标地址标识的存储器位置,以及与由标签更新目标地址标识的存储器位置连续的存储器位置的至少一个后续区块。请注意,由多保护标签设置指令触发的一个或多个存储器存取不被写入标签更新目标地址本身,也不被写入在由标签更新目标地址标识的存储器位置之后的存储器位置的后续区块。相反,由多保护标签设置指令触发的一个或多个存储器写入可以靶向如下存储位置:在该存储位置处,与由标签更新地址标识的存储器的连续区块相对应的保护标签被存储。
多保护标签设置指令可以使用地址寄存器来定义标签更新目标地址。地址寄存器可以存储用于确定标签更新目标地址的地址确定值,该标签更新目标地址标识要被更新保护标签的至少两个连续区块。例如,地址寄存器可以指定与标签更新目标地址相对应的绝对地址,或可以指定偏移,该偏移将被添加到基底地址,以便获得标签更新目标地址。基底地址可以在单独寄存器中指定或可为隐含的,例如,指令的一些变型可以使用程序计数器相对寻址并且因此基底地址可以包括程序计数器,该程序计数器指示在程序执行期间到达的当前地址。
大体上,不管使用上文讨论的指定寄存器长度的变型还是指定立即长度的变型,响应于多保护标签设置指令,指令解码器可以控制处理电路将存储在地址寄存器中的地址确定值递增或递减如下偏移:该偏移对应于响应于多保护标签设置指令而要被更新保护标签的存储器位置的区块的数量。这意味着当在循环中提供多保护标签设置指令时,则将地址寄存器自动更新为指向在被更新保护标签的存储器位置的最后区块之后的下一地址,使得不需要包括用于操纵地址寄存器的额外指令。这有助于改进代码密度和性能。指令的循环可以从最低地址到最高地址(每次将地址寄存器中的地址递增了该偏移)或从最高地址到最低地址(每次将该地址递减了该偏移)遍历给定存储器区域。
用于更新保护标签的更新后的标签值可以以不同方式从多保护标签设置指令中导出。在一些情况下,更新后的标签值可以以与可以在目标地址的一部分内表示用于标签保护的存储器存取的地址标签的方式类似的方式使用标签更新目标地址的一个或多个所选位来表示。因此,在一些示例中,响应于多保护标签设置指令,指令解码器可以控制存储器存取电路来触发存储器存取,从而将与至少两个连续区块相关联的保护标签更新为更新后的标签值,该更新后的标签值是根据标签更新目标地址的一个或多个所选位而确定的。
或者,一些形式的指令可以指定用于标识更新后的标签值的标签值寄存器,该标签值寄存器与用于标识标签更新目标地址的任何寄存器分离。在这种情况下,响应于多保护标签设置指令,指令解码器可以控制存储器存取电路来触发存储器存取,从而将与至少两个连续区块相关联的保护标签更新为更新后的标签值,其中该更新后的标签值是根据存储在(由多保护标签设置指令指定的)标签值寄存器中的值而确定的,该更新后的标签值与标签更新目标地址无关。
采取这两种方法中的哪一种可以基于在多保护标签设置指令内的编码额外负担与针对给定指令设置更新后的标签值的期望额外负担之间的折衷来确定。在更新目标地址内表示更新后的保护标签的第一种方法可以避免在指令编码内提供进一步的寄存器标识符的需要,从而将更多的编码空间留作其他用途,这可能很有用,因为编码空间在指令集架构内通常很宝贵。另一方面,如果将更新后的标签值存储在单独的标签值寄存器中,则这可以避免在执行多保护标签设置指令之前需要单独的指令将期望的更新后的标签值写入标签更新目标地址的一部分中,这可以减小代码密度。可以使用两种选项。
还可以提供多保护标签设置指令的数据清除变型。响应于该变型,指令解码器可以控制存储器存取电路,除了设置更新后的保护标签之外,还触发存储器存取,来将存储在一个或多个存储器位置的至少两个连续区块中的数据值设置为清除值。清除值可以是与数据值的先前值无关的任何值。例如,清除值可以是预定值,例如零或随机生成的值。这可以是有用的,因为通常保护标签设置可以作为用于初始化存储器的区块的过程的一部分执行,并且同时还可以期望将存储器的初始化区块的内容清除为某一预定值,以避免先前存储在地址空间的该区域中的数据被后续执行的代码可见。通过提供多保护标签设置指令的数据清除变型,这避免了需要执行用于清除数据的第二指令,因为保护标签设置及数据清除均可以响应于单个指令而执行。上文描述的任何类型的多保护标签设置指令还可以被提供有额外数据清除变型,使得可以提供相同形式的多保护标签设置指令的无数据清除变型和数据清除变型。或者,在一些实现方式中,所有多保护标签设置指令变型根据定义可以是数据清除变型,因此一些实现方式可能不支持多保护标签设置指令的任何无数据清除变型。
上文描述的多保护标签设置指令的所有变型可以为如下指令:针对其参数(寄存器指定的参数或立即参数)的至少一些值,该指令可以触发存储器存取电路以更新与存储器位置的至少两个连续区块相关联的保护标签。然而,针对参数的其他值,相同类型的指令可以触发对仅单个保护标签的更新,或可以在一些实例中根本不会触发对任何保护标签的更新。例如,如果在指定寄存器长度的变型的长度寄存器中指定的长度参数为零,则指令可能不触发对任何保护标签的更新。类似地,如果长度参数指定1,则响应于指令而更新的保护标签的最大数量可以为1。因此,应当理解,一些指令操作码可以有时用作多保护标签设置指令,并且其他时候用作单个保护标签设置指令,这取决于由指令指定的参数。大体上,上文描述的多保护标签设置指令可以是如下任何指令:针对其参数的至少一些值,该指令能够触发存储器位置的两个或多个连续区块,以将其保护标签设置为更新后的值。
除了多保护标签设置指令或上文讨论的类型之外,由指令解码器和处理电路支持的指令集架构还可以包括单个保护标签设置指令,响应于该单个保护标签设置指令,指令解码器控制存储器存取电路将与存储器位置的单个区块相关联的保护标签设置为更新后的值。例如,单个保护标签设置指令可以具有与多保护标签设置指令不同的操作码,并且可能无法触发存储器存取电路来更新一个以上的保护标签。
图1示意地示出了数据处理装置2的示例。应当理解,这仅是装置的组件的子集的高级表示,并且该装置可以包括未示出的许多其他组件。装置2包括:处理电路4,用于响应于由指令解码器6解码的指令来执行数据处理。指令解码器6解码从指令缓存8提取的指令以生成控制信号10,用于控制处理电路4执行由指令表示的相应处理操作。处理电路4可以包括:一个或多个执行单元,用于对存储在寄存器14中的值执行操作以生成待写回寄存器的结果值。例如,执行单元可以包括:算术/逻辑单元(ALU),用于执行算术运算或逻辑运算;浮点单元,用于使用浮点操作数执行运算;和/或向量处理单元,用于对包括多个独立的数据元素的操作数执行向量运算。处理电路还包括:存储器存取单元(或加载/存储单元)15,用于控制数据在寄存器14与存储器系统之间的传递。在该示例中,存储器系统包括在数据与指令之间共享的指令缓存8、1级数据缓存16、2级缓存17,以及主存储器18。应当理解,其他缓存层次结构也是可能的,这仅仅是一个示例。提供存储器管理单元(MMU)20,用于提供地址转换功能以支持由加载/存储单元15触发的存储器存取。MMU具有转换后备缓冲器(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进行比较,该保护标签32与包括寻址位置44的存储器位置的区块30相关联。例如,在图2中,目标地址42指向存储器中的某一位置B1,在图2的地址空间中标记为44。因此,与包括位置B1的位置B的区块相关联的保护标签B与和目标地址42相关联的地址标签40进行比较。如图2的顶部所示,可以根据目标地址本身的所选位来确定地址标签4。具体地,地址标签可以由目标地址的一部分内的位确定,其未用于指示将被选择为寻址位置44的具体存储器位置。例如,在一些架构中,目标地址的位的顶部分可能总是具有某一固定值,例如符号扩展(均为0或均为1),并且因此通过用任意标签值来重写这些未使用的位,地址可以被用地址标签40来标记。例如,特定地址标签值可以由程序员或编译器来选择。地址标签和保护标签32可以为相对小数量的位(例如,4位),并且因此不需要在存储器内且在目标地址内占用大空间。提供4位的标签空间(即,标签的16个可能值)通常可以足够检测许多常见类型的存储器存取错误。
因此,当执行标签保护的存储器存取时,加载/存储单元15将地址标签40与和包括寻址位置44的区块30相关联的保护标签32进行比较,并且确定它们是否匹配。加载/存储单元15生成匹配指示,该匹配指示指示地址标签40与保护标签32是否匹配。例如,该匹配指示可以是在地址标签40与保护标签32之间存在不匹配的情况下生成的故障信号60,或指示是否存在匹配的置于状态寄存器中的指示,或被添加到错误报告以指示被检测到错误的地址和/或触发错误的指令的指令地址的条目。
图3示出了用于处理标签保护的存储器存取的流程图。触发存储器存取的指令可以指定地址标签和目标地址。如图2所示,在一些情况下,地址标签可以实际上从目标地址本身的位的子集导出,尽管在其他示例中,其可以在单独的寄存器中指定。在步骤50,触发标签保护的存储器存取的指令被遇到。作为响应,在步骤52,存储器存取电路15触发对由目标地址标识的寻址位置44的存储器存取。此外,在步骤54,存储器存取电路15获得保护标签32,该保护标签32与由存储器位置构成的区块30相关联地存储在存储器系统中,该存储器位置的区块30包括由目标地址标识的寻址位置44。在步骤56,存储器存取电路15将地址标签40与在步骤54获得的保护标签32进行比较。在步骤58,在保护标签与地址标签之间是否检测到匹配的指示(例如,上文描述的任何类型的匹配/不匹配报告指示)由存储器存取电路15生成。用于报告任何不匹配的精确指示可以在实现方式之间变化。
图4示出了多保护标签设置指令的指定寄存器长度的变型的示例。该指令指定地址寄存器Xm作为其参数,该地址寄存器Xm指定标签更新目标地址70,其还包括使用地址的位的子集指定的更新后的标签值72。指令还指定长度寄存器Xn,该长度寄存器Xn指定响应于指令而更新的区块的最大数量74Nmax
图5是示出由图1的装置2处理图4的指令的流程图。在步骤80,多保护标签设置指令由指令解码器6进行解码。作为响应,指令解码器6生成控制信号,用于控制处理电路4和加载/存储单元15执行图5的后续步骤。在步骤82,加载/存储单元15生成信号,用于请求存储器系统执行至少一个存储器存取,以将与存储器位置的X个区块相关联的保护标签设置为更新后的标签值,该值由从地址寄存器Xm导出的更新后的标签72指定。待更新的区块的数量X可以是小于或等于Nmax(在长度寄存器Xn中指定的区块的最大数量74)的任何数量。X的特定值可以是特定于实现方式的。即,包括图4的指令的指令集架构不指定需要选择X的哪个特定值。给定的处理器实现方式可以自由选择便于该特定微架构实现方式的X的任何值。在X等于或大于2的情况下,则其保护标签被更新的存储器30的X个区块包括由标签更新目标地址70标识的区块以及从由标签更新目标地址标识的区块起连续的X-1个后续区块。在X=1的情况下,则仅由标签更新目标地址标识的区块使其保护标签被更新。如果X=0(这在长度寄存器Xn指定Nmax=0的情况下可能发生),则存储器30的区块不使其相应保护标签32被更新。
在步骤84,由指令解码器6生成的控制信号控制处理电路4将在地址寄存器Xm中指定的标签更新目标地址70递增与存储器的X个区块相对应的地址偏移。即,地址偏移可以对应于一个存储器区块30的大小的X倍,其中区块大小取决于保护标签32被分配给存储器位置的特定粒度(其可以被选择为实现方式相关的参数)。因此,Xm’=Xm+X*(区块大小)。在其他示例中,寄存器Xm中的地址可以被递减X*(区块大小)。
此外,在步骤86,控制信号控制处理电路4将长度寄存器Xn递减了与X(响应于指令而被更新了保护标签的区块的数量)成比例的量。在图6的示例中,Xn’=Xn-X。
在其他示例中,长度寄存器Xn可以不表示要被更新标签的区块的实际最大数量,而是表示关于区块的某一倍数的数量或关于要被设置保护标签的地址范围的大小的字节的数量的长度,在这种情况下,Xn可以递减小于或大于X。例如,如果标签的基本粒度可以被更新为G,则长度寄存器Xn可以指定长度参数NG,其指示待更新的G标签的倍数的数量,即,Nmax=NG*G。在这种情况下,在步骤82,微架构实现方式可以受限于选择X的值,其是G的倍数,并且在步骤86,长度参数NG可以递减X/G而非X。在另一示例中,如果长度参数指定最大值B,其指示要被更新相应保护标签的存储器的字节的最大数量,并且每个保护标签与存储器位置的K个字节区块相关联,则地址寄存器可以递增/递减到Xm’=Xm±X,其中X是小于或等于B的K的倍数,并且长度寄存器Xn可以递减到Xn’=Xn-(X*K)。例如,如果每个标签与存储器的16个字节(K=16)相关联,并且微架构选择更新,即,指令的每个实例2个标签(X=2),则具有长度参数x1=128和起始地址x2=0x8000的SetTagRange x1,[x2]!可以触发处理电路设置2个标签,并且然后将x1递减到128-2*16=96,并且将X2递增到0x8020。
图6示出了这种形式的指令对于允许软件使用实现方式无关的例程特别有用的原因,而不管用于给定微架构实现方式的标签设置的特定粒度如何。例如,在执行的代码中可以如下定义循环:
X0=基底地址
X1=长度
Loop:
SetTags[X0]!,X1
CBNZ X1,Loop;将X1与零进行比较,并且如果否,则跳转到“循环”
图6示出了将基底地址指定为地址#a并将长度指定为72的示例。该架构的一种可能的处理器实现方式可以使用16个字节的缓存线,因此在一个实现方式中,如果每个保护标签32包括4个位,则存在用于存储在单个缓存线中的32个标签的空间。缓存线是可以在一个请求中由存储器系统读取/写入的存储器单元。在一个缓存线的粒度处执行操作通常可能更有效。因此,在实现方式1中,优选地响应于图4的多保护标签设置指令来更新32个标签。在这种情况下,在实现方式1上执行指令可以导致存储器的72个区块中的32个区块使其保护标签被更新,因此提供Nmax的寄存器X1减小到72-32=40,并且寄存器X0中的标签更新目标地址被递增到地址#a+32*(区块大小),使得其现在指向区块32。循环的下一迭代将随后为存储器的下32个区块设置新的标签值,并且依此类推直到最后区块71使其标签被更新为止,并且条件跳转指令CBNZ将随后退出循环,因为X1已经递减到零。
相比之下,针对使用32个字节缓存线的不同微架构实现方式2,64个标签可以适配在一个缓存线内,并且在这种情况下,优选地标签设置指令的每个实例更新更多标签。在这种情况下,指令的一次执行可以设置64个标签,即,图5中所示的给定数量X为64。在图6中,在循环的第一迭代时,Nmax被递减到72-64=8,并且地址被更新为指向地址#a+64*(区块大小)处的区块64。在循环的第二迭代中设置最后8个标签。
在其他示例实现方式中,靠近其保护的数据的保护标签可以被存储在缓存中。例如,给定大小的缓存线(例如,64个字节缓存线)可以被扩展有某一数量的保护标签,每个保护标签对应于缓存线的某一部分。例如,如果每个标签对应于缓存线的16个字节,则44位标签可以与每个缓存线相关联。在这种情况下,这种微架构可以优选限制为标签设置指令的每个实例设置4个保护标签。再次,上文的循环仍可对这种微架构起作用,但是与图6所示的2个实现方式相比,在已经设置所有保护标签之前将需要循环的更多迭代。
因此,不同实现方式可以为每个指令设置不同数量的标签,但是,无论如何都可以执行相同的程序循环。尽管与其他实现方式相比,一些实现方式可能需要循环的更多迭代来设置所需标签,但是一旦长度寄存器Xm中的值已经减小到零,每个实现方式将最终跳转出循环。
图7示出了给予微架构实现方式灵活性以更新不同数量的标签可能是有用的另一原因。根据所提供的地址#a的对准,待更新的标签可以在缓存线的中途开始。在这种情况下,优选地,指令可能仅更新缓存线的剩余部分中的标签,使得循环的下一迭代可以开始更新与缓存线边界对准的标签,从而使得后续存取更为有效。相比之下,总是响应于指令而更新相同数量的标签的实现方式可以不使用这种微架构优化。
图8示出了多保护标签设置指令的替代形式,它使用立即值#imm来指定存储器范围的长度,针对该范围的存储器,保护标签要被设置为更新后的标签值72。目标更新标签目标地址70和更新后的标签值72仍可以在与图4相同的地址寄存器Xm中指定,但此时在指令编码中指定的立即值#imm指定绝对长度指示L,其指示要被更新标签值的区块的精确数量。
图9示出了图示对处理图8所示的这种类型的指令进行控制的方法的流程图。在步骤100,指令解码器6解码图8所示的保护标签设置指令的指定立即长度的变型。作为响应,指令解码器在步骤102生成控制信号,用于控制存储器存取电路15,以便将与存储器位置的L个区块相关联的保护标签设置为更新后的标签值72。再次,当L等于或大于2时,则L个区块包括由标签更新目标地址70标识的区块以及从由标签更新目标地址标识的区块起连续的L-1个后续区块。如果L=1,则仅与由标签更新目标地址标识的区块相关联的标签被更新。如果L=0,则不更新保护标签。在步骤104,由指令解码器6生成的控制信号还控制处理电路4更新地址寄存器Xm来将地址递增与L个区块相对应的偏移,即,Xm’=Xm+L*(区块大小)。
图10示出了图4中所示的指令的变型,其中更新后的标签值72是在第三寄存器Xt中指定的,该更新后的标签值72与地址寄存器Xm中指定的标签更新地址70是分开的。该指令的行为除此之外与图4和图5所示的行为完全相同。应当理解,可以提供图8所示的指定立即指令的类似变型,其中独立于标签更新地址70指定更新标签值72。
图11示出了图4的指令的数据清除变型。地址寄存器Xm和长度寄存器Xn指定与图4所示的参数相同的参数。响应于该指令,以与图5所示的相同的方式执行步骤80至86。然而,响应于指令的数据清除变型,额外步骤88被执行。在步骤88,指令解码器6控制存储器存取电路15生成额外存储器存取,用于将存储器的X个区块中的数据值设置为与这些数据值的先前值不相关的清除值(例如,设置为预定值(例如,0),或设置为随机值)。这避免需要除了标签设置指令之外的用于清除数据值的单独指令,从而实现较紧密循环及较小代码密度。尽管图11示出了应用到图4所示形式的指令的数据清除变型的示例,但是还可以实现用于上文描述的其他类型的多个标签设置指令中任一种的类似数据清除变型。
图12示出了可以使用的模拟器实现方式。尽管先前描述的实施例在用于操作支持相关技术的具体处理硬件的装置和方法方面实现了本发明,但是也有可能根据本文描述的实施例提供通过使用计算机程序来实现的指令执行环境。这种计算机程序通常被称为模拟器,因为它们提供硬件架构的基于软件的实现方式。模拟器计算机程序的变型包括仿真器、虚拟机、模型和二进制转换器,包括动态二进制转换器。通常,模拟器实现方式可以在主处理器130上运行,可选地运行主机操作系统120,从而支持模拟器程序110。在一些布置中,在硬件与所提供的指令执行环境、和/或在相同主处理器上提供的多个不同指令执行环境之间可能存在多层模拟。历史上,已经需要高效处理器来提供以合理速度执行的模拟器实现方式,但是这种方法可以在某些情况(例如,当出于兼容性或重新使用的原因而希望运行另一处理器本机的代码时)下可能是合理的。例如,模拟器实现方式可以提供具有主处理器硬件不支持的额外功能的指令执行环境,或者提供通常与不同硬件架构相关联的指令执行环境。在“一些有效的架构模拟技术(Some Efficient Architecture SimulationTechniques)”,Robert Bedichek,Winter 1990 USENIX Conference,第53页至第63页中给出了模拟的概述。
就先前已经在模拟环境中参考特定硬件构造或特征来描述实施例而言,可以通过适当的软件构造或特征来提供等效功能。例如,特定电路可以在模拟实施例中被实现为计算机程序逻辑。类似地,存储器硬件(例如,寄存器或缓存)可以在模拟实施例中被实现为软件数据结构。在先前描述的实施例中引用的硬件元件中的一个或多个存在于主硬件(例如,主处理器130)上的布置中,一些模拟实施例可以在适当时利用主硬件。
模拟器程序110可以被存储在计算器可读存储介质112(其可以是非暂态介质)上,并且向目标代码100(其可以包括应用、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与由模拟器程序110建模的硬件架构的应用程序接口相同。因此,可以使用模拟器程序110在指令执行环境内执行目标代码100的程序指令(包括上文描述的多保护标签设置指令),使得实际上不具有上文讨论的装置2的硬件特征的主计算机130可以仿真这些特征。例如,模拟器程序110可以包括用于由目标代码100的指令控制对存储器的存取的存储器存取程序逻辑114。例如,存储器存取程序逻辑114可以包括用于执行保护标签与地址标签的比较并且报告在保护标签与地址标签之间是否已经检测到任何不匹配的指令。此外,模拟器程序110可以包括标签设置程序逻辑116,其包括用于响应于包括在目标代码100中的多保护标签设置指令而触发一个或多个存储器存取,以便以与硬件实施例将设置标签的方式相对应的方式来设置保护标签的指令。在模拟器方法中,响应于多保护标签设置指令的指定寄存器长度的变型而设置的标签的数量X可以由模拟器程序110选择。
在本申请中,词语“被配置为…”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以被编程以执行该功能的处理器或其他处理设备。“被配置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。
尽管本文已经参考附图详细描述了本发明的说明性示例,但是应当理解,本发明不限于这些精确的示例,并且本领域技术人员可以在不脱离由所附权利要求限定的本发明的范围和精神的情况下,在其中实现各种改变和修改。

Claims (18)

1.一种装置,包括:
存储器存取电路,用于响应于目标地址而执行标签保护的存储器存取操作,所述标签保护的存储器存取操作包括:
将与所述目标地址相关联的地址标签与保护标签进行比较,其中,所述保护标签由与一个或多个存储器位置构成的区块相关联地存储在存储器系统中,所述区块包括由所述目标地址标识的寻址位置;以及
生成在所述保护标签与所述地址标签之间是否检测到匹配的指示;以及
指令解码器,用于解码多保护标签设置指令,以控制所述存储器存取电路来触发至少一个存储器存取,从而更新与至少两个连续的、由一个或多个存储器位置构成的区块相关联的所述保护标签。
2.根据权利要求1所述的装置,其中,所述标签保护的存储器存取操作包括:根据在所述保护标签与所述地址标签之间是否检测到匹配,来控制是否允许对所述寻址位置进行存储器存取。
3.根据权利要求1所述的装置,其中,所述标签保护的存储器存取操作包括:对所述寻址位置执行存储器存取,而不考虑在所述保护标签与所述地址标签之间是否检测到匹配。
4.根据前述权利要求中任一项所述的装置,其中,所述标签保护的存储器存取操作包括:当在所述保护标签与所述地址标签之间检测到不匹配时,发信号通知故障状况。
5.根据前述权利要求中任一项所述的装置,其中,在所述标签保护的存储器操作中,所述存储器存取电路被配置为根据所述目标地址的一个或多个所选位来确定所述地址标签。
6.根据前述权利要求中任一项所述的装置,其中,在所述标签保护的存储器存取操作中,所述存储器存取电路被配置为独立于所述地址标签来选择所述寻址位置。
7.根据前述权利要求中任一项所述的装置,其中:
响应于标识长度寄存器的所述多保护标签设置指令的指定寄存器长度的变型,所述指令解码器被配置为:
控制所述存储器存取电路对与给定数量个连续区块相关联的所述保护标签进行更新,所述给定数量小于或等于由存储在所述长度寄存器中的长度参数标识的区块的最大数量;以及
控制处理电路将存储在所述长度寄存器中的所述长度参数递减与所述给定数量成比例的量。
8.根据前述权利要求中任一项所述的装置,其中,响应于标识立即参数的所述多保护标签设置指令的指定立即长度的变型,所述指令解码器被配置为控制所述存储器存取电路来更新与由所述立即参数指定的数量个连续区块相关联的所述保护标签。
9.根据前述权利要求中任一项所述的装置,其中,所述多保护标签设置指令指定用于标识所述至少两个连续区块的标签更新目标地址。
10.根据权利要求9所述的装置,其中,所述至少两个连续区块包括:包括由所述标签更新目标地址标识的存储器位置的所述区块以及至少一个后续的、由一个或多个存储器位置构成的区块。
11.根据权利要求9和10中任一项所述的装置,其中:
所述多保护标签设置指令指定用于存储地址确定值的地址寄存器,其中,所述地址确定值用于确定用于标识所述至少两个连续区块的标签更新目标地址;以及
响应于所述多保护标签设置指令,所述指令解码器被配置为控制处理电路将存储在所述地址寄存器中的所述地址确定值递增或递减如下偏移:所述偏移对应于响应于所述多保护标签设置指令而被更新了所述保护标签的由存储器位置构成的区块的数量。
12.根据权利要求9至11中任一项所述的装置,其中,响应于所述多保护标签设置指令,所述指令解码器被配置为:控制所述存储器存取电路来触发存储器存取,从而将与所述至少两个连续区块相关联的所述保护标签更新为更新后的标签值,其中,所述更新后的标签值是根据所述标签更新目标地址的一个或多个所选位而确定的。
13.根据权利要求7至9中任一项所述的装置,其中,响应于所述多保护标签设置指令,所述指令解码器被配置为:控制所述存储器存取电路来触发存储器存取,从而将与所述至少两个连续区块相关联的所述保护标签更新为更新后的标签值,其中,所述更新后的标签值是根据存储在由所述多保护标签设置指令指定的标签值寄存器中的值而确定的,所述更新后的标签值与所述标签更新目标地址无关。
14.根据前述权利要求中任一项所述的装置,其中,响应于所述多保护标签设置指令的数据清除变型,所述指令解码器被配置为:控制所述存储器存取电路来触发存储器存取,从而将存储在所述至少两个连续的、由一个或多个存储器位置构成的区块中的所述数据值设置为与所述至少两个连续区块的先前内容无关的清除值。
15.根据权利要求14所述的装置,其中,每个清除值包括以下各项中的一项:
预定值;
零;以及
随机值。
16.一种方法,包括:
响应于目标地址而执行标签保护的存储器存取操作,所述标签保护的存储器存取操作包括:
将与所述目标地址相关联的地址标签与保护标签进行比较,其中,所述保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,所述区块包括由所述目标地址标识的寻址位置;以及
生成在所述保护标签与所述地址标签之间是否检测到匹配的指示;以及
响应于多保护标签设置指令的解码,来触发至少一个存储器存取,从而更新与至少两个连续的、由一个或多个存储器位置构成的区块相关联的所述保护标签。
17.一种计算机程序,用于控制主数据处理装置来提供用于执行目标程序代码的指令的指令执行环境,所述计算机程序包括:
存储器存取程序逻辑,用于响应于目标地址来执行标签保护的存储器存取操作,所述标签保护的存储器存取操作包括:
将与所述目标地址相关联的地址标签与保护标签进行比较,其中,所述保护标签与由一个或多个存储器位置构成的区块相关联地存储在存储器系统中,所述区块包括由所述目标地址标识的寻址位置;以及
生成在所述保护标签与所述地址标签之间是否检测到匹配的指示;以及
标签设置程序逻辑,响应于所述目标程序代码的多保护标签设置指令,来触发至少一个存储器存取,从而更新与至少两个连续的、由一个或多个存储器位置构成的区块相关联的所述保护标签。
18.一种存储介质,存储根据权利要求17所述的计算机程序。
CN201880079443.0A 2018-01-22 2018-12-10 用于数据处理的装置和方法、非暂态存储介质 Active CN111433742B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1800970.4A GB2570326B (en) 2018-01-22 2018-01-22 Multiple guard tag setting instruction
GB1800970.4 2018-01-22
PCT/GB2018/053577 WO2019141960A1 (en) 2018-01-22 2018-12-10 Multiple guard tag setting instruction

Publications (2)

Publication Number Publication Date
CN111433742A true CN111433742A (zh) 2020-07-17
CN111433742B CN111433742B (zh) 2023-08-29

Family

ID=61283479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880079443.0A Active CN111433742B (zh) 2018-01-22 2018-12-10 用于数据处理的装置和方法、非暂态存储介质

Country Status (9)

Country Link
US (1) US11327903B2 (zh)
EP (1) EP3743805B1 (zh)
JP (1) JP7269942B2 (zh)
KR (1) KR20200107997A (zh)
CN (1) CN111433742B (zh)
GB (1) GB2570326B (zh)
IL (1) IL275309B (zh)
TW (1) TWI818939B (zh)
WO (1) WO2019141960A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762566B2 (en) * 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124148A1 (en) * 2001-03-01 2002-09-05 Ibm Corporation Using an access key to protect and point to regions in windows for infiniband
CN101533371A (zh) * 2008-03-12 2009-09-16 Arm有限公司 使用微标签的高速缓存存取
US7796137B1 (en) * 2006-10-24 2010-09-14 Nvidia Corporation Enhanced tag-based structures, systems and methods for implementing a pool of independent tags in cache memories
US20150227365A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor Supporting Arithmetic Instructions with Branch on Overflow & Methods
CN107015922A (zh) * 2016-01-05 2017-08-04 Arm 有限公司 缓存存储器

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
JP2505887B2 (ja) * 1989-07-14 1996-06-12 富士通株式会社 命令処理システム
JPH05134930A (ja) * 1991-11-12 1993-06-01 Nippon Telegr & Teleph Corp <Ntt> メモリ保護装置
US5761464A (en) * 1995-05-22 1998-06-02 Emc Corporation Prefetching variable length data
JP2001005726A (ja) 1999-04-20 2001-01-12 Nec Corp メモリアドレス空間拡張装置及びプログラムを記憶した記憶媒体
WO2002054602A1 (fr) * 2000-12-27 2002-07-11 Mitsubishi Denki Kabushiki Kaisha Codeur et decodeur de creation de donnees de qualites multiples, systeme de codage/decodage de donnees de quantites multiples, procedes de codage et de decodage de creation de donnees de qualites multiples, et procede de codage/decodage de creation de donnees de qualites multiples
JP4423849B2 (ja) 2002-11-06 2010-03-03 日本電気株式会社 データ保護システム、データ保護プログラム及びデータ保護方法
US7917710B2 (en) * 2006-06-05 2011-03-29 Oracle America, Inc. Memory protection in a computer system employing memory virtualization
US7502890B2 (en) * 2006-07-07 2009-03-10 International Business Machines Corporation Method and apparatus for dynamic priority-based cache replacement
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US8904138B2 (en) * 2011-09-28 2014-12-02 Microsoft Corporation Global distributed memory reshape operations on range-partitioned arrays
EP2761466B1 (en) * 2011-09-30 2020-08-05 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US10152330B2 (en) * 2015-09-21 2018-12-11 Bae Systems Information And Electronic Systems Integration Inc. Memory protection using a tagged architecture
PL3204861T3 (pl) 2015-12-15 2019-12-31 Lzlabs Gmbh Zarządzanie kluczem zabezpieczającym i prefiksowanie w wirtualnej przestrzeni adresowej dziedziczonego systemu emulacji
US9996471B2 (en) 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
US10248422B2 (en) * 2016-07-02 2019-04-02 Intel Corporation Systems, apparatuses, and methods for snooping persistent memory store addresses

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124148A1 (en) * 2001-03-01 2002-09-05 Ibm Corporation Using an access key to protect and point to regions in windows for infiniband
US7796137B1 (en) * 2006-10-24 2010-09-14 Nvidia Corporation Enhanced tag-based structures, systems and methods for implementing a pool of independent tags in cache memories
CN101533371A (zh) * 2008-03-12 2009-09-16 Arm有限公司 使用微标签的高速缓存存取
US20150227365A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor Supporting Arithmetic Instructions with Branch on Overflow & Methods
CN107015922A (zh) * 2016-01-05 2017-08-04 Arm 有限公司 缓存存储器

Also Published As

Publication number Publication date
GB2570326A (en) 2019-07-24
IL275309B (en) 2022-07-01
US11327903B2 (en) 2022-05-10
GB2570326B (en) 2020-06-10
TW201933111A (zh) 2019-08-16
KR20200107997A (ko) 2020-09-16
EP3743805B1 (en) 2021-12-08
WO2019141960A1 (en) 2019-07-25
JP2021511565A (ja) 2021-05-06
TWI818939B (zh) 2023-10-21
US20200233816A1 (en) 2020-07-23
CN111433742B (zh) 2023-08-29
IL275309A (en) 2020-07-30
GB201800970D0 (en) 2018-03-07
EP3743805A1 (en) 2020-12-02
JP7269942B2 (ja) 2023-05-09

Similar Documents

Publication Publication Date Title
US11762566B2 (en) Programmable mapping of guard tag storage locations
JP7460529B2 (ja) タグ保護されたメモリ・システムのためのランダム・タグ設定命令
JP7445431B2 (ja) 命令の実行を制御する装置および方法
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
IL270499B (en) A standard and method for interpreting capability-related credentials
CN111433742B (zh) 用于数据处理的装置和方法、非暂态存储介质
US20230236925A1 (en) Tag checking apparatus and method
TWI787451B (zh) 用於資料處理的方法、設備、電腦程式、與儲存器媒體
JP7369720B2 (ja) アクションをトリガするための装置及び方法
JP7317099B2 (ja) ガード・タグ紛失の取り扱い
WO2023175289A1 (en) Read-as-x property for page of memory address space
CN111527480A (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