CN117222978A - 使用能力来约束对存储器的访问的技术 - Google Patents

使用能力来约束对存储器的访问的技术 Download PDF

Info

Publication number
CN117222978A
CN117222978A CN202280031434.0A CN202280031434A CN117222978A CN 117222978 A CN117222978 A CN 117222978A CN 202280031434 A CN202280031434 A CN 202280031434A CN 117222978 A CN117222978 A CN 117222978A
Authority
CN
China
Prior art keywords
capability
generated
literal
value
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280031434.0A
Other languages
English (en)
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 CN117222978A publication Critical patent/CN117222978A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供了一种使用能力来约束对存储器的访问的技术。提供了一种装置,该装置具有处理电路,该处理电路用于执行在其期间生成对存储器的访问请求的操作,其中该处理电路被布置成使用提供指针值和相关联的约束信息的能力来生成针对访问请求的存储器地址。该装置还提供能力生成电路,该能力生成电路响应于处理电路执行标识存储器的文字池中的位置的能力生成指令,以从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值。根据由能力生成指令指定的信息,从选项的有限集合中选择生成的能力的约束信息。已经发现,此类方法提供了用于生成能力的稳健机制,同时减小了代码尺寸。

Description

使用能力来约束对存储器的访问的技术
背景技术
本技术涉及数据处理领域,并且更具体地涉及使用能力约束对存储器的访问。
对基于能力的架构越来越感兴趣,在这些基于能力的架构中,针对给定过程定义了特定能力,并且如果尝试执行所定义的能力之外的操作,则可能触发错误。能力可以采取多种形式,但是一种类型的能力是有界指针(其也可以被称为“胖指针”)。
重要的是,创建能力的能力被严格控制,因为能力被用作系统内的安全控制措施,例如通过强制参考能力执行的对存储器的访问只能关于根据能力确定的定义区域内的存储器位置来执行,并且只有当也由能力定义的特定权限检查被满足时才能执行。
一种可以用于生成能力的机制包括允许编译器在编译相关联程序代码时生成能力,然后将生成的能力存储在文字池内部,文字池与编译的程序代码相结合,然后在非易失性存储器中形成静态图像。当程序代码运行时,可以使用编译代码内的指令将存储在文字池中的编译器生成的能力加载到寄存器中。在一些系统中,一旦能力已经被加载到此类寄存器中,就有可能修改该能力,但是在通常的系统中,任何修改将只被允许减少与该能力相关联的边界或减少权限,因此导致相对于原始编译器生成的能力减少的能力。
虽然使用编译器来生成能力允许对能力生成的稳健控制,但是它可能对静态图像的代码尺寸有显著的不利影响。特别地,由于相对于常规指针而言,能力的固有尺寸更大,并且还由于与此类能力相关联的对齐要求,将能力存储在文字池中可能显著地增加总体代码尺寸。在许多低成本系统中,设备通常是存储器受限的并且非易失性存储装置价格高昂,因此在这种情况下,由于使用编译器生成的能力而导致的代码尺寸的增加是不值得考虑的。因此,期望提供一种改进的机制,用于提供此类能力,同时保持对可以生成这些能力的方式的严格控制。
发明内容
在一个示例性布置中,提供了一种装置,该装置包括:处理电路,该处理电路用于执行在其期间生成对存储器的访问请求的操作,其中该处理电路被布置成使用提供指针值和相关联的约束信息的能力生成针对访问请求的存储器地址;以及能力生成电路,该能力生成电路响应于处理电路执行标识存储器的文字池中的位置的能力生成指令,从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值,并且根据由能力生成指令指定的信息从选项的有限集合中选择生成的能力的约束信息。
在另一示例性布置中,提供了一种约束对存储器的访问的方法,该方法包括:采用处理电路,该处理电路用于执行在其期间生成对存储器的访问请求的操作,其中该处理电路使用提供指针值和相关联的约束信息的能力生成针对访问请求的存储器地址;以及响应于处理电路执行标识存储器的文字池中的位置的能力生成指令,执行能力生成操作,该能力生成操作包括从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值,并且根据由能力生成指令指定的信息从选项的有限集合中选择生成的能力的约束信息。
在再一个示例性布置中,提供了一种用于控制主机数据处理装置以提供指令执行环境的计算机程序,该计算机程序包括:处理程序逻辑,该处理程序逻辑用于执行在其期间生成对存储器的访问请求的操作,其中该处理程序逻辑被布置成使用提供指针值和相关联的约束信息的能力生成针对访问请求的存储器地址;以及能力生成程序逻辑,该能力生成程序逻辑响应于处理程序逻辑执行标识存储器的文字池中的位置的能力生成指令,从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值,并且根据由能力生成指令指定的信息从选项的有限集合中选择生成的能力的约束信息。可提供一种计算机可读介质来存储此类计算机程序,并且该计算机可读介质可处于非暂态形式或暂态形式。
附图说明
将参考如附图所示的本技术的示例,仅以例示的方式进一步描述本技术,其中:
图1是根据一个示例性具体实施的装置的框图;
图2示出如果存在设置或访问该组有界指针存储元件内的指针值的尝试,则可能触发错误的指令类型的示例,其中该指针值用于指定由相关联的范围信息指示的范围之外的地址;
图3示出根据一个示例性具体实施的与有界指针相关联的标签位的使用;
图4示意性地示出根据一个示例性具体实施的根据本文所述的技术可以使用的能力的形式;
图5示意性地示出根据一个示例性具体实施的可以如何将编译器用来生成用于存储在文字池内的文字值;
图6是示出根据一个示例性具体实施的可以设置在装置内的部件的框图;
图7是示出根据一个示例性具体实施的响应于能力生成指令而执行的步骤的流程图;
图8是根据一个示例性具体实施的流程图,该流程图更详细地示出了为了实现图7的步骤275可以执行的步骤;
图9是示出根据一个示例性具体实施如何确定所生成的能力的权限的流程图;
图10示出根据一个示例性具体实施的处理电路的不同域和处理状态的示例;
图11是示出根据一个示例性具体实施的在生成能力时执行的处理如何取决于正在生成的能力的类型的流程图;
图12是示出根据一个示例性具体实施的如何从单个能力生成指令生成多个能力的流程图;并且
图13示出了可以使用的模拟器示例。
具体实施方式
根据本文所述的技术,提供了一种装置,该装置具有处理电路,该处理电路用于执行在其期间生成对存储器的访问请求的操作。处理电路被布置成使用提供指针值和相关联的约束信息的能力生成针对访问请求的存储器地址。由处理电路生成的存储器地址可以是在其中执行地址翻译的系统中的虚拟地址,或者另选地可以是不支持地址翻译的系统中的物理地址。
根据本文所述的技术,该装置还可以提供能力生成电路,该能力生成电路响应于处理电路执行标识存储器的文字池中的位置的能力生成指令,从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值。应当指出的是,虽然文字值可以用于确定指针值,但是文字值本身不是能力,而是能力生成电路用于生成其指针值由文字值确定的能力。为了生成能力,能力生成电路还被布置成根据由能力生成指令指定的信息从选项的有限集合中选择生成的能力的约束信息。
已经发现,此类方法实现了要生成的能力,该能力与编译器生成的能力同等程度可信,但是与包含编译器生成的能力的具体实施相比,代码尺寸显著减少。特别地,关于被信任的生成的能力,根据本文所述的技术,能力生成电路通过执行由编译代码提供的能力生成指令来生成能力,其中能力生成电路仅使用来自文字池的文字值(即,将由编译器生成并且是静态图像的一部分的值),结合由能力生成指令直接地指定的特定其它信息。由于该能力是从文字池中的文字值生成的,并且避免了将编译器生成的能力存储在文字池内的要求,因此可以显著地减小文字池的尺寸。例如,文字值通常可以具有标准指针值的尺寸,相对于对应能力的尺寸,这是显著减小的尺寸。进一步地,与存储在文字池内的能力相关联的对齐问题不再出现,从而进一步提高了效率并进一步减少了总体代码尺寸。
已经发现,此类方法在许多系统中具有显著的益处。例如,通常的情况是,编译器先前可能已经生成的大量所需能力仅访问一小块存储器区域,并且通常仅具有特定受限的权限组合。因此,用于形成能力的约束信息的范围和权限的共同子集可以被标识为能力生成电路的可用选项的有限集合,当根据由能力生成指令指定的信息生成能力时,选择这些选项中的一个。因此,通过避免在静态图像内指定潜在的大量编译器生成的能力的需要,并且改为以允许在代码执行期间使用文字池中的文字值生成这些能力,并且从所标识的选项的有限集合中选择约束信息,这允许总体代码尺寸的显著减小。应当指出的是,对于不满足以上述方式生成的要求的任何能力(例如,不指定落入选项的有限集合内的约束信息),编译器生成的能力可以改为以标准方式生成,以存储在文字池中。
能力生成电路可以采取多种形式。例如,它可以是与处理电路分离的部件,或者另选地,可以设置在装置的处理电路内。
该装置还可以设置有能力检查电路,该能力检查电路用于执行能力检查操作,以基于由给定能力所提供的约束信息来确定是否准许其存储器地址是使用给定能力生成的给定访问请求。如同能力生成电路一样,能力检查电路可以是与处理电路分离的部件,或者另选地可以设置在装置的处理电路内。
存在可以以其由相关联的能力来识别约束信息的多种方式。例如,在一个示例性具体实施中,该能力可以直接包含约束信息。然而,在另选的具体实施中,该能力可以相反地指示(直接地或间接地)存储器中约束信息所位于的位置。
存在能力生成指令可以标识文字池中的位置的多种方式,其中从该位置将检索所需的文字值。例如,可以在适当的系统寄存器中提供基地址,然后能力生成指令指定立即值,该立即值可以用作从系统寄存器中指定的基地址的偏移量。
然而,在一个示例性具体实施中,该能力生成指令指定立即值,该立即值由能力生成电路使用并与当前程序计数器值相结合,以标识包含用于确定生成的能力的指针值的文字值的文字池中的位置。这提供了一种特别有效的机制,由于通常编译器将在接近将消耗文字值的指令的位置处存储该文字值,并且因此通过指定与当前程序计数器值结合使用的立即值,其中当前程序计数器值将标识能力生成指令,然后这提供了用于标识所需文字值在文字池中的位置的简单且有效的机制。
立即值可以采取多种形式,但是在一个示例性具体实施中提供了程序计数器相对偏移,使得仅仅通过将立即值加到当前程序计数器值(或者从当前程序计数器值中减去立即值)就能够标识文字池中的位置。
生成的能力的约束信息可以采取多种形式,但是在一个示例性具体实施中包括标识使用从生成的能力的指针值导出的存储器地址可访问的存储器区域的边界信息,并且选项的有限集合包括由边界信息标识的区域的可允许尺寸的有限集合。如前所述,已发现,大量的能力仅需要访问相对小的结构,并且因此可能存在此类结构的可能尺寸的有限集合,可能尺寸的有限集合可以被编码为用于边界信息的选项的有限集合。
存在能力生成指令可以向能力生成电路指示可允许尺寸的有限集合中的哪一个将被用于要生成的能力的多种方式。然而,在一个示例性具体实施中,能力生成指令指定尺寸指示值,该尺寸指示值由能力生成电路用来从可允许尺寸的有限集合中确定区域的尺寸。尺寸指示值可以采取多种形式。例如,它可以直接地指定尺寸,但是另选地,可以使用任何其它合适的编码。例如,可允许尺寸的有限集合可以按2的幂变化,并且因此尺寸指示值可以标识哪个2的幂适用于正在生成的当前能力。另选地,尺寸指示值可以标识相对于预定最小尺寸的偏移量。因此,在这种情况下,尺寸指示值将有效地形成立即值,然后该立即值可以被加到预定最小尺寸值上。通过使用此类最小尺寸值,这可以允许指定一定程度的更大范围的可用值。例如,尺寸指示值0将仍然具有合理的意义,在这种情况下,仅仅标识边界信息所标识的可访问区域的尺寸应该是预定最小尺寸。
然而,存在能力生成电路可以从能力生成指令提供的信息中推断出从可允许尺寸的有限集合中选择尺寸的其它方式。例如,文字值可以包括不用于确定指针值的多个冗余位,并且能力生成电路可以被布置成根据文字值的冗余位内提供的信息确定区域的尺寸。例如,在从文字值确定的指针值中可能使用了某种程度的对齐,这将意味着不需要加载的文字值的特定数量的最低有效位来形成生成的能力的指针值。在此类实例中,这些冗余位可以改为用于对将由生成的能力的约束信息标识的区域的尺寸进行编码。
冗余位的数量可以预先确定,但是在另选的具体实施中,冗余位的数量可以变化。例如,能力生成电路可以被布置成根据用于形成文字值的编码方案来确定文字值内指定用于确定指针值的位的第一部分与包含冗余位的第二部分之间的边界。作为特定的示例,三角形编码的形式可以用来以这种方式对文字值内的尺寸和指针值信息进行编码。
一旦确定了尺寸信息,就存在可以从能力生成指令内指定的信息来确定边界信息的多种方式。然而,在一个示例性具体实施中,边界信息标识从指针值确定的第一边界,以及第二边界,该第二边界是从第一边界确定以及从可允许尺寸的有限集合确定的区域的尺寸确定的。通过使用指针值有效地确定第一边界,并且然后使用尺寸信息从第一边界确定第二边界,这提供了标识边界信息的有效机制。如何从指针值确定第一边界可以取决于具体实施而变化,但是在一个特定的示例性具体实施中,第一边界被设置为等于指针值。
在一个示例性具体实施中,约束信息可以包括元数据项,并且选项的有限集合包括元数据项的可能值的有限集合。因此,在一个示例性具体实施中,约束信息可以包括前面提到的边界信息和附加的元数据项。元数据项可以采取各种形式,但是在一个示例性具体实施中,元数据项可以包括标识生成的能力的可允许使用的至少多个权限指示,并且选项的有限集合包括可以由多个权限指示来指示的允许的权限组合的有限合集。例如,在大多数情况下,权限可能指示能力内的相关联指针仅能用于生成从存储器读取数据的地址,或者改为可以标识指针可以用于执行读取访问和写入访问两者。利用允许的权限组合的有限集合,从该选项的有限集合中的选择可以被有效地编码在由能力生成指令提供的信息内。
存在能力生成电路可以从能力生成指令来确定赋予元数据项的值的许多不同的方式。例如,能力生成指令可以指定由能力生成电路用来确定元数据项中的一个或多个元数据项的值的元数据信息。此类元数据信息可以以多种不同的方式来提供,并且在一个示例性具体实施中可以采取一个或多个立即值的形式,该一个或多个立即值可以例如直接地标识要用于相关联的元数据项的值,或者标识要选择的选项的有限集合中的哪一个。另选地,可以在指令中指定不同的标记,或者可以使用能力生成指令的不同变体来标识不同的元数据定义信息。
作为替代方案或另外,该装置还可以包括控制寄存器,该控制寄存器由能力生成电路参考,以确定元数据项中的一个或多个元数据项的值。控制寄存器可以采取多种形式,并且在一个示例性具体实施中可以是系统配置寄存器。
作为可以如何确定元数据项中的一个或多个元数据项的另一另选示例或附加示例,如前所述,文字值可以包括不用于确定指针值的多个冗余位。在此类具体实施中,处理电路可以被布置成从文字值的冗余位内提供的信息来确定元数据项中的一个或多个元数据项的值。
基于由能力生成指令指定的信息来确定一个或多个元数据项的值的方式可以取决于一个或多个因素而变化。例如,这种确定可以取决于处理电路的当前操作模式。因此,不管使用上述选项中的哪一个来提供用于确定元数据项的值的信息,解释该信息的方式可能取决于处理电路的当前操作模式。作为另一替代方案,如果能力生成电路参考控制寄存器,则该控制寄存器可以提供取决于处理电路的当前操作模式而不同的信息。
应当指出的是,可以独立地或者组合地使用可以如何确定元数据项的值的所有上述不同示例。例如,一个或多个元数据项可以使用一种技术来确定它们的值,而其它元数据项可以使用其它技术之一来确定它们的值。
如前所述,可以在生成的能力内提供的元数据类型之一可以包括多个权限指示。在一个示例性具体实施中,能力生成电路可以被布置成根据生成的能力的类型来确定由多个权限指示来指示的权限组合。具体地,适当的权限组合的有限集合可能取决于生成的能力的类型,并且因此通过考虑生成的能力的类型,为确定权限组合而提供的信息可以根据正在生成的能力的类型而被不同地解释。
存在可以确定生成的能力的类型的多种方式。例如,能力生成指令通常将指定生成的能力将被存储到其中的目标能力存储元件,并且能力生成电路可以被布置成从指定的目标能力存储元件推断生成的能力的类型。例如,目标能力存储元件可以是通用能力存储元件,或者可以是程序计数器能力存储元件,并且确定的权限组合可以取决于是正在生成通用能力还是正在生成程序计数器能力。
例如,对于通用能力,通常可能是不设置可执行权限的情况,而对于程序计数器能力,可以设置可执行权限。具体地,可执行权限位可以指示该能力是否可以用于为要获取和执行的指令生成存储器地址,并且此类权限通常可以适合于程序计数器能力,但可能不适合于使用上述技术生成的通用能力。
通常,当执行能力生成指令时调用的处理将随着生成的能力存储在指定的目标能力存储元件内而终止。然而,在一个示例性具体实施中,当指定的目标能力存储元件是用于存储程序计数器能力的程序计数器能力存储元件时,处理电路还可以被布置成一旦生成的能力已经被存储到程序计数器能力存储元件中,就使程序执行分支到使用生成的能力标识的目标指令。这可以通过避免在能力生成指令之后指定后续分支指令的需要来提高代码密度。
如果需要,上述能力生成功能可以限于特定类型的能力。举例来说,在一个具体实施中,可以防止使用此类能力生成指令来生成程序计数器能力。作为特定示例,如果用于能力生成指令的指定目标能力存储元件是程序计数器能力存储元件,则能力生成电路可以被布置成触发故障。
在一个示例性具体实施中,能力生成电路可以被布置成响应于能力生成指令的单个实例来生成多个能力。因此,当执行能力生成指令时,能力生成电路不仅可以产生上述生成的能力,还可以产生一个或多个另外生成的能力。对于每个另外生成的能力,能力生成电路可以被布置成根据从文字池中相关联的位置获得的相关联的文字值来确定针对该另外生成的能力的指针值,该相关联的位置与能力生成指令标识的位置偏移。因此,能力生成指令仍然可以标识单个文字值的位置,该文字值用于确定第一生成的能力的指针值,但是用于另外生成的能力中的每个另外生成的能力的文字值的位置然后可以从为第一生成的能力的文字值确定的位置中推断出来。偏移量可以预先确定,使得这些偏移量不需要由能力生成指令指定,或者另选地,如果需要,关于偏移的信息可以编码在指令内。
存在可以推断响应于能力生成指令的单个实例而产生的各种生成能力的约束信息的多种方式,但是在一个示例性具体实施中能力生成电路被布置成产生具有相同约束信息的生成的能力和每个另外生成的能力。因此,在能力生成指令的执行将导致产生多个能力的情况下,指定约束信息所需的指令内的编码空间不需要增加。
关于生成的能力中的每个生成的能力将被存储到其中的目标能力存储元件,则能力生成电路可以被布置成从指定的目标能力存储元件(其被用作初始生成的能力的目标)中导出用于每个另外生成的能力的相关联的目标能力存储元件。例如,所需的目标能力存储元件可以从指定的目标能力存储元件开始形成能力存储元件的连续序列。作为另选的方法,如果需要,可以在指令中明确地标识每个目标能力存储元件。
处理电路可以被布置成以多种不同的操作模式操作。这些操作模式可以采取多种形式。例如,处理电路可能能够在安全域或较不安全的域中和/或在特权状态或非特权状态内操作,并且实际上可能存在可以由处理电路采用的多于两个域和/或多于两种状态。处理电路的当前操作模式可以取决于处理电路正在其中操作的域和处理状态。
如果需要,能力生成电路的操作可以取决于处理电路的当前操作模式。这可以例如用于将生成能力的能力限制到处理电路的特定操作模式。因此,举例来说,如果能力生成电路被触发来执行能力生成指令,同时处理电路处于禁止以此方式生成能力的特定操作模式,则可能引发故障。
作为如何使能力生成电路的操作取决于当前操作模式的其它示例,所生成的元数据的形式可以取决于操作模式而变化。例如,元数据可以包括指示能力生成时处理电路的操作模式的信息,并且因此能力生成电路将取决于执行能力生成指令时处理电路的当前操作模式生成不同形式的元数据。作为又一示例,处理电路能够在受能力约束的能力模式和不受能力约束的另外模式下操作,并且能力生成电路响应于能力生成指令而操作的方式可以取决于处理电路是否在能力模式下操作。
现在将参考附图描述特定示例。
本文所述的技术可以在多种数据处理系统中采用,并且与此类系统内的不同类型的处理电路相关联。例如,这些技术可以与采取中央处理单元(CPU)的形式的处理电路相关联地使用,但是可以另选地与其它处理电路(诸如直接存储器访问(DMA)控制器、加密加速器等)相关联地采用。仅以下图1中的说明性示例的方式,CPU的处理流水线将被视为在其中可使用所描述的技术的处理电路的示例。
图1示意性地示出包括用于处理指令的处理流水线4的数据处理装置2的示例。在此示例中,处理流水线4包括多个流水线阶段,多个流水线阶段包括提取阶段6、解码阶段8、发出阶段10、执行阶段12和写回阶段14,但是应当理解,可以提供其它类型或阶段的组合。例如,在一些示例性具体实施中,可以包括用于执行寄存器重命名的重命名阶段。待处理的指令从一个阶段移动到另一个阶段,并且当指令在一个阶段待决时,另一指令可在流水线4的不同阶段待决。
提取阶段6从层级1(L1)指令高速缓存20提取指令。提取阶段6通常可以从连续指令地址依序提取指令。然而,提取阶段还可以具有用于预测分支指令的结果的分支预测器22,并且如果预测采取分支,则提取阶段6可以从(非顺序)分支目标地址提取指令,或者如果预测不采取分支,则从下一顺序地址提取指令。分支预测器22可以包括一个或多个分支历史表,用于存储用于预测特定分支是否可能被采取的信息。例如,分支历史表可以包括用于跟踪先前执行的分支的实际结果或表示对分支所做预测的置信度的计数器。分支预测器22还可以包括分支目标地址高速缓存(BTAC)24,用于高速缓存分支指令的先前目标地址,以便可以在后续遇到相同分支指令时预测这些地址。
被提取的指令被传递到解码阶段8,该解码阶段对指令进行解码以生成被解码的指令。被解码的指令可以包括用于控制执行阶段12以执行适当处理操作的控制信息。对于从高速缓存20提取的一些更复杂的指令,解码阶段8可以将那些指令映射到多个被解码的指令,这可以被称为微操作(μop或uop)。因此,从L1指令高速缓存20提取的指令与由流水线的稍后阶段看到的指令之间可能不存在一对一关系。通常,本申请中的“指令”的提及应解释为包括微操作。
被解码的指令被传递到发出阶段10,该发出阶段确定执行指令所需的操作数是否可用,并且当操作数可用时发出用于执行的指令。一些示例性具体实施可以支持顺序处理,使得以与从L1指令高速缓存20提取指令的程序次序相对应的次序发出指令用于执行。其它示例性具体实施可以支持无序执行,使得可以以与程序次序不同的次序向执行阶段12发出指令。无序处理有助于提高性能,因为当前一个指令在等待操作数时被暂停的情况下,可以先执行程序顺序中操作数可用的后一个指令。
发出阶段10向执行阶段12发出指令,其中执行指令以执行各种数据处理操作。例如,执行阶段可以包括多个执行单元30、32、34,多个执行单元包括算术/逻辑单元(ALU)30,其用于对整数值执行算术或逻辑操作;浮点(FP)单元32,其用于对以浮点形式表示的值执行操作;以及加载/存储单元34,其用于执行用于将数据值从层级1(L1)数据高速缓存36加载到寄存器40的加载操作,或用于将数据值从寄存器40存储到L1数据高速缓存36的存储操作。应当理解,这些仅仅是可以提供的执行单元的类型的一些示例,并且也可以提供许多其他种类。为了执行处理操作,执行阶段12可以从一组寄存器40读取数据值。然后,被执行的指令的结果可以通过写回阶段14写回到寄存器40。
L1指令高速缓存20和L1数据高速缓存36可以是包括多个高速缓存层级的高速缓存分级结构的部分。例如,还可以提供层级二(L2)高速缓存44,并且可以提供任选的另外的高速缓存层级。在此示例中,L2高速缓存44在L1指令高速缓存20与L1数据高速缓存36之间共享,但是其他示例可以具有单独的L2指令和数据高速缓存。当要提取的指令不在L1指令高速缓存20中时,则可以从L2高速缓存44提取该指令,并且如果该指令不在L2高速缓存44中,则可以从主存储器50提取该指令。类似地,响应于加载指令,如果数据不在L1数据高速缓存36中,则可以从L2数据高速缓存44提取数据,并且如果需要,可以从存储器50提取数据。可以使用任何已知的方案来管理高速缓存分级结构。
流水线4用于引用程序指令和数据值的地址可以是虚拟地址,但是至少主存储器50并且任选地还有至少一些层级的高速缓存分级结构可以物理地寻址。因此,可以提供转换后备缓冲器52(TLB),用于将流水线4使用的虚拟地址转换成用于访问高速缓存或存储器的物理地址。例如,TLB 52可以包括多个条目,每个条目指定虚拟地址空间的对应页面的虚拟页面地址,以及虚拟页面地址应当映射到的以便将对应页面内的虚拟地址转换成物理地址的对应物理页面地址。例如,虚拟页面地址和物理页面地址可以对应于对应虚拟地址和物理地址的最重要部分,剩余的最不重要部分在将虚拟地址映射到物理地址时保持不变。除了地址翻译信息外,每个TLB条目还可以包括指定访问权限的一些信息,诸如指示特定地址页面是否在流水线4的特定模式下可访问。在一些示例性具体实施中,TLB条目还可以定义对应地址页面的其它属性,诸如定义高速缓存分级结构的哪些层级响应于读取或写入操作而更新的高速缓存策略信息(例如高速缓存应当在写回模式还是在直写模式下操作),或定义对对应页面中地址的数据访问是否可以相比于流水线4发出数据访问的次序由存储器系统重新排序的信息。
虽然图1示出了单个层级TLB 52,但是应当理解,可以提供TLB的分级结构,使得层级一(L1)TLB 52可以包括用于转换多个最近访问的页面中的地址的TLB条目,并且可以提供层级二(L2)TLB以用于存储大量页面的条目。当L1 TLB中不存在所需条目时,则可以从L2TLB提取或从分级结构中的其他TLB提取所需条目。如果要访问的页面的所需条目不在TLB中的任何TLB中,则可以实施页面表遍历,以访问存储器50中的页面表。可以在本发明技术中使用任何已知的TLB管理方案。
而且,应当理解,一些系统可以支持多个层级的地址翻译,使得例如第一TLB(或TLB的分级结构)可以用于将虚拟地址翻译成中间地址,并且使用一个或多个另外的TLB的第二层级的地址翻译然后可以将中间地址翻译成用于访问高速缓存或存储器的物理地址。这对于支持虚拟化非常有用,其中例如,第一层级的地址转换可以由操作系统管理,并且第二层级的地址转换可以由管理程序管理。
该装置可以设置有用于存储能力的能力存储元件(当能力采取具有相关联的范围信息的有界指针的形式时,这些元件可以被称为有界指针存储元件,该相关联的范围信息指示当使用指针时可允许的地址范围)。每个能力/有界指针存储元件可以是寄存器,或者通用存储器中的存储其位置,例如堆栈存储器上的位置。
如图1所示,装置2可以具有一组有界指针寄存器60,用作有界指针存储元件。虽然在图1中示出了该组有界指针寄存器与该组通用数据寄存器40物理分离,但是在一个示例性具体实施中,可以使用同一物理存储装置来提供通用数据寄存器和有界指针寄存器两者。
每个有界指针寄存器60包括可以用于确定要访问的数据值的地址的指针值62,以及指定当使用对应指针62时的可允许地址范围的范围信息64。有界指针寄存器60还可以包括限制信息66(本文中也称为权限信息),这些限制信息可以定义关于使用指针的一个或多个限制/权限。例如,限制66可以用于限制可使用指针62的指令的类型,或者可使用指针的流水线4的模式。因此,可以考虑范围信息64和限制信息66来定义允许在其中使用指针62的能力。当尝试在定义的能力之外使用指针62时,可触发错误。范围信息64可用于例如确保指针保持在特定已知边界内并且不会散发到可能包含敏感或安全信息的存储器地址空间的其他区域。在同一物理存储装置用于通用数据寄存器和有界指针寄存器两者的示例性具体实施中,然后指针值62可以例如存储在用于对应通用寄存器的同一存储位置内。
图2示出了使用可允许范围来防止对数据或指令的未授权访问的指令类型的示例。如图2的顶部部分所示,特定有界指针寄存器PR1包括给定指针值62和范围信息64,它们在此示例中使用定义可允许范围的下限的下限地址68和定义可允许范围的上限的上限地址69来指定。例如,边界68、69被设置为定义一系列地址80000至81000。当特定指令参考有界指针寄存器PR1并且从指针62确定的地址超出此范围时,可触发错误。
例如,如图2的部分A所示,在某些系统中,如果尝试将指针寄存器60中的指针62的值设置为范围信息64指定的范围之外的值(此处假设指针直接指定地址),则可触发错误。这避免了指针62采取指定范围之外的任何值,因此可以确保使用指针的任何访问安全地位于允许范围内。替代地,如图2的部分B所示,当指令尝试访问由指针62的地址所识别的位置时,如果该地址位于指定范围之外,则可触发错误。因此,仍然可以允许将指针62设置为指定范围之外的值,但是一旦尝试指针地址处的数据访问(或从指针导出的地址),则在地址位于允许范围之外时可触发错误。其他系统可以响应于图2的部分A和B中示出的指令类型而触发错误。
范围信息64可以以不同方式设置。例如,安全代码或操作系统或管理程序可以指定给定指针允许的范围。例如,指令集架构可以包括用于设置或修改给定指针62的范围信息64的多个指令,并且这些指令的执行可以限于处理器4的特定软件或特定模式或异常状态。可以使用用于设置或修改范围信息64的任何已知技术。
除了当执行引用指针的特定指令时可以在执行状态12使用的该组有界指针存储元件60外,还可以在从层级一指令高速缓存20提取指令时使用程序计数器能力(PCC)寄存器80在提取阶段6提供类似功能。具体地,程序计数器指针可以存储在字段82中,其中PCC80还提供范围信息84和任何适当的限制信息86,类似于由该组有界指针存储元件60中的每个指针设置有的范围和限制信息。
图3示意性地示出标签位如何与单独数据块结合使用以识别那些数据块是表示能力(即有界指针和相关联的限制信息)还是表示正常数据。具体地,存储器地址空间110将存储一系列数据块115,这些数据块通常将具有指定大小。仅为了例证的目的,在该示例中假设每个数据块包括128位,但是在其它示例性具体实施中,可以使用不同尺寸的数据块,例如当能力由64位信息定义时的64位数据块。与每个数据块115相关联地,提供标签字段120,该标签字段在一个示例中是被称为标签位的单个位字段,其被设置为识别相关联的数据块表示能力,并且被清除以指示相关联的数据块表示正常数据且因此不能被视为能力。应当理解,与设置或清除状态相关联的实际值可以取决于具体实施而变化,但仅通过说明的方式,在一个示例性具体实施中,如果该标签位具有值1,则其指示相关联数据块是能力,而如果该标签位具有值0,则其指示相关联数据块包含正常数据。
当将能力加载到有界指针寄存器60中的一个有界指针寄存器(本文中也称为能力寄存器)中,诸如图3所示的能力寄存器100时,则标签位随能力信息而移动。因此,当将能力加载到能力寄存器100中时,指针102、范围信息104和限制信息106(下文称为权限信息)将被加载到能力寄存器中。另外,与该能力寄存器相关联或作为该能力寄存器内的特定位字段,标签位108将被设置成标识内容表示能力。类似地,当将能力存储回存储器时,将与存储能力的数据块相关联地设置相关标签位120。通过这种方法,可以区分能力和正常数据,并且因此确保正常数据无法用作能力。
返回图1,该装置还可以提供一个或多个控制寄存器,用于存储特定的控制信息。根据本文所述的技术,该装置能够响应于执行能力生成指令而生成能力/有界指针,并且在一个示例性具体实施中,当确定用于生成的能力的合适的约束信息时,可以参考控制寄存器中的一个或多个控制寄存器。
这些能力可以采取多种形式。在图4所示的示例中,能力100包含指针值102和相关联的约束信息。此示例中的约束信息包括一些范围信息104(本文也称为边界信息)。还可以提供一组权限作为能力的约束信息的一部分,并且另外,能力可以包括(直接地或与之相关联地)先前描述的标签位108,该标签位可以被设置或清除,以标识对应的数据块是否将被视为能力。
针对该能力指定的权限可以取决于具体实施而变化,但是在一个示例性具体实施中,这些权限包括:读取权限位130,其值指示该能力是否可以用于生成针对读取访问的存储器地址;写入权限位132,其值指示该能力是否可以用于生成针对写入访问的存储器地址;以及执行权限位134,其值指示该能力是否可以用于生成要提取和执行的指令的存储器地址。
此类权限信息可以被认为是能力的元数据信息。如果需要,也可以在能力内标识其它元数据信息136。仅仅举例来说,此类元数据可以指示该能力是否被认为是不可变的。虽然此类信息可以被直接指定为该能力中的额外信息,但是在一些示例性具体实施中,它可以从已在该能力内提供的其它信息的状态来推断。例如,在一个特定具体实施中,当执行位被设置时,该能力被认为是不可变的,因为在不清除标签位(有效地使该能力无效)的情况下,由该能力指定的信息不能被修改,除非通过可能由指令执行引起的指针值的正常递增。
作为可以被包括的其它元数据信息136的另一示例,此类元数据可以包括信任级别指示,例如以指示当该能力被生成时处理电路正在操作的操作模式。信任级别可以被直接编码到能力100的字段136中,或者另选地,信任级别指示可以提供用于指示包含信任级别信息的存储器地址的标识。此类标识可以直接指示信任级别信息的存储器位置,或者它可以例如指定可以应用于存储在系统中的全局寄存器中的地址的偏移,以便识别包含信任级别信息的位置。
图5是示意性地示出编译器150在编译程序代码时可以如何被布置来填充存储器中的文字池155的图。特别地,当编译要在处理电路上执行的代码时,编译器150可以将各种不同的文字值存储在文字池155内。如前所述,在本文所述的技术之前,此类编译器也可能已经生成了可以存储在文字池内的多个编译器生成的能力,使得这些能力然后可用于在代码执行期间由处理电路加载到能力寄存器中。然而,如前所述,在文字池内提供此类编译器生成的能力可以显著地增加总体代码尺寸(由编译代码和相关联的文字池组成),并且期望减小总体代码尺寸,特别是在非易失性存储装置价格高昂的存储器受限的设备中。
发明人注意到,通常由编译器生成的大量能力仅访问小的数据结构,例如全局变量、外围设备、控制寄存器等,并且因此,仅存在有限数量的通用尺寸用于表达此类能力的边界信息。进一步地,注意到仅存在有限数量的可能权限位的组合通常用于此类能力。根据本文所述的技术,对于此类能力,编译器可以被布置成不在编译时生成这些能力,而是将文字值存储在文字池155内,该文字值可以用于确定每个此类能力的指针值。存储此类文字值,而不是完整的功能,可以显著地降低对文字池的尺寸要求,并且因此降低总体代码尺寸。
进一步地,当使用本文所述的技术时,处理电路可以被布置成在适当的时候使用存储在文字池内的这些文字值来生成所需的能力,而不损害对此类能力的信任。特别地,处理电路可以通过执行特定的能力生成指令(如果需要,该指令也可以由编译器发出)在适当的时候创建能力,该指令使用文字池内的文字值之一(因此可以是可信的),并且该指令的约束信息是使用可从指令直接导出的信息从可能选项的有限集合中选择的(并且因此也可以是可信的)。由于已经被编译的程序的意图可以被信任,因此以这种方式生成的能力也可以被信任,并且因此,以这种方式生成的能力可以与由编译器本身生成并且存储在文字池内的能力一样被高度信任。
图6是示出根据一个示例性具体实施的可以设置在装置内的部件的框图;在该示例中,处理电路200被提供用于执行指令序列,并且在由这些指令指定的数据处理操作的执行期间,处理电路可以访问通用数据寄存器215、通用能力寄存器220和程序计数器能力寄存器225。处理电路200可以采取多种形式,但是例如可以采取图1所示的处理器流水线4的形式。
在图6所示的示例中,提供了能力生成电路210,该能力生成电路响应于处理电路执行标识存储器的文字池230中的位置的能力生成指令,从文字池中的位置检索文字值,并且产生生成的能力,其中从文字值确定生成的能力的指针值。然后,能力生成电路根据由能力生成指令指定的信息,从选项的有限集合中选择用于生成的能力的相关联的约束信息。然后,生成的能力可以由能力生成电路210写入标识的目标能力寄存器(通常该所标识的目标寄存器由能力生成指令指定)。这例如可以是通用能力寄存器220中的一个,但是在一些具体实施中在一些情况下也可以是程序计数器能力寄存器225。
能力生成电路210可以是与处理电路200分离的部件,但是在图6所示的示例中,该能力生成电路被认为是由处理电路200提供的。
同样如图6所示,也可以提供能力检查电路205,或者作为单独的部件,或者如图6所示,作为处理电路200的一部分。采用能力检查电路205,该能力检查块可以用于当考虑其存储器地址是使用给定能力生成的访问请求时执行能力检查操作,以基于由给定能力所标识的约束信息来确定是否准许该访问请求。因此,能力检查可以涉及例如对能力的范围和权限信息的参考,以便确定访问是否被允许继续进行。在能力检查失败的情况下,可以向处理电路提供失败指示,并且这可以采取多种形式,例如故障信号。然而,如果通过了能力检查,则可以向存储器发出访问请求。在一些具体实施中,在允许进行访问之前,可以执行一个或多个另外的检查,例如在诸如存储器管理单元(MMU)、存储器保护单元(MPU)、安全属性单元(SAU)或这些部件的组合等部件内。
图7是示出当处理电路200执行能力生成指令时由能力生成电路210执行的步骤的流程图。当在步骤250处确定正在执行能力生成指令时,在步骤255处在考虑可能约束生成能力的能力的任何标准情况下,确定是否允许生成能力。举例来说,本文所述的技术(由此能力生成电路210被用来响应于能力生成指令生成能力)可以被限制于处理电路的特定操作模式,并且如果处理电路不在允许的操作模式之一内,则可以在步骤255处确定不能够生成能力,并且在该情况下,可以在步骤260处引发故障。作为另一个示例,生成能力的能力可能限于特定类型的能力。例如,在一些具体实施中,如果能力要被用作程序计数器能力,则可以禁止使用上述机制来生成该能力,并且如果在此类情况下存在生成程序计数器能力的尝试,则可能再次在步骤260处引发故障。
然而,假设在步骤255处确定允许生成能力,则在步骤265处,由能力生成指令指定的立即值被用作应用于当前程序计数器值的偏移量,以标识文字池内的位置。在步骤270处,从文字池中检索该标识位置处的文字值,并且将其用于确定生成的能力的指针值。在一些实例中,整个文字值可以“按原样”使用来形成指针值,但是在其它具体实施中,可以采取步骤来从检索到的文字值中导出指针值。作为具体的示例,出于生成指针值的目的,由于正在生成的指针值的一些对齐要求,可以忽略文字值的一定数量的最低有效位。如稍后将更详细讨论的,如果需要,可以重新使用这些被忽略的最低有效位,以提供在一些示例性具体实施中在生成能力时使用的其它信息。
在步骤275处,可以根据从指令提供的信息中导出的尺寸信息来确定正在生成的能力的边界信息。具体地,由指令提供的信息可以用于对可能尺寸的有限集合内的尺寸进行编码,并且因此能力生成电路可以基于此类信息来确定将哪个尺寸用于边界。然后,可以参考在步骤270处标识的指针值来确定第一边界,例如通过将其设置为等于该指针值。则可以通过将确定的尺寸应用于第一边界来确定第二边界,以便创建第二边界。
如步骤280所指示,可以从指令指定的信息中确定其它元数据,例如前面提到的权限位。同样,可能值的有限集合是可用的,并且因此由指令提供的信息可以用于确定使用可能值的有限集合中的哪些值的组合。
能力生成指令可以采取多种形式,但是在一个具体示例中具有以下格式:
LDRCC Cd,<标签>,#sz
因此,在该示例中,能力生成指令是能力创建加载指令,其指定目标能力寄存器Cd,提供用于标识文字池内的位置的立即值(称为“标签”),并且指定用于确定生成的能力的允许范围的尺寸的尺寸信息(#sz)。然而,这仅是可以使用的一种示例性格式,并且可以使用其它格式,只要生成能力所需的信息可以从指令本身结合从文字池检索的文字值导出。
图8是流程图,其更详细地示出为了确定针对生成的能力的边界可以在图7的步骤275处实现的步骤。在步骤300处,确定是否在指令中直接地指定了尺寸指示值,例如在上述LDRCC指令格式中的情况。如果指定了尺寸指示值,则该过程前进至步骤305,在该步骤处,从指定的尺寸指示确定尺寸。尺寸指示值可以直接地指定尺寸,或者可以使用合适的编码方案来标识尺寸。例如,选项的有限集合中的尺寸可以以2的幂变化,并且尺寸指示可以指示要应用的2的幂。另选地,尺寸指示可以指定与预定最小尺寸指示的偏移量。不管尺寸指示是如何形成的,应当理解,在步骤305处,能力生成电路210可以从尺寸指示来确定与能力相关联的区域的尺寸。
在另选的具体实施中,可以不在指令中直接地指定尺寸指示值,而是如图8所示,可以根据从存储器检索的文字值的冗余位来确定尺寸,如步骤310所指示。具体地,如前所述,由于指针值上的一些对齐约束,文字值内可能存在未使用的位,并且这些位可以被重新用于多种可能的用途,用途之一是对尺寸信息进行编码。该信息可以以与直接在指令中指定的尺寸指示几乎相同的方式被编码在文字值的冗余位内,并且因此可以采取先前参考步骤305讨论的任何形式。
作为未在图8中具体示出的又一替代方案,可能是尺寸固定的情况,并且因此不需要指定尺寸指示值。相反,可以通过标识第一边界并且然后应用固定尺寸从第一边界确定第二边界的位置来直接地确定边界。
不管执行步骤305或310中的哪一个,该过程然后前进至步骤315,在该步骤处,从指针值确定第一边界。可以使用任何合适的技术来从指针值确定边界,并且因此,例如,第一边界可以在与指针值偏移的某个固定偏移处。然而,在一个特定的示例性具体实施中,第一边界被设置为等于指针值。
然后,在步骤320处,从第一边界和所确定的尺寸确定第二边界。举例来说,第二边界可以被设置为等于指针值加上所确定的尺寸。一旦已经设置了第一边界和第二边界,应当理解,在该点已经确定了能力的范围信息。
图9是示出可以确定权限位值的各种不同方式的流程图。同样类型的方法也可以用于任何其它元数据,这些元数据可以作为能力的约束信息的一部分来提供。在步骤350处,确定指令中的立即操作数是否指定了权限。例如,如果需要,权限位值可以由此类立即操作数在指令内直接地指定。另选地,立即操作数的值可以以一种方式被编码,该方式可以用于确定要使用可能的权限组合的有限集合中的哪一个权限组合,这可能比权限由立即操作数直接地指定的情况需要指令内更少的位空间。
如果权限是由立即操作数指定的,则过程前进至步骤355,在该步骤处,能力生成电路210从该立即操作数确定权限。
如果在步骤350处确定指令中的立即操作数没有指定权限,则在步骤360处确定是否应该使用控制寄存器来提供权限信息。特别地,在一个示例性具体实施中,至少对于一些生成的能力,所需的权限信息可以存储在一个或多个控制寄存器90中。如果确定应该针对权限信息参考控制寄存器,则过程前进至步骤365,在该步骤处,从控制寄存器中的权限信息确定权限。如同指令中的立即操作数一样,控制寄存器中的此类信息可以直接地标识权限信息,或者可以另选地提供用于标识要使用权限组合的有限集合中的哪一个权限组合的编码。
如果在步骤360处确定不使用控制寄存器来提供权限信息,则在步骤370处,从文字池检索的文字值的冗余位中获得权限信息,并且然后从该权限信息确定权限。因此,在一些情况下,不是指定立即操作数或从控制寄存器获得权限信息,而是可以将权限信息编码在文字值的冗余位内,这些冗余位不是形成指针值所必需的。如同先前描述的示例一样,权限值可以在这些位中直接地指定,或者这些位可以提供用于确定要使用权限位的哪个可能组合的编码。
如图9所示,不管使用哪种机制,在权限信息提供编码的情况下,根据该编码,可以从选项的有限集合中确定适当的权限组合,则确定的权限可以取决于生成能力时处理电路的操作模式。例如,如果处理电路在特定的特权操作模式下操作,则从权限信息的特定值确定的权限位可能不同于处理电路在较低特权模式下操作时确定的权限位。进一步地,从权限信息确定的权限位可以取决于正在生成的能力的类型,并且因此,例如确定的权限位可以取决于是正在生成通用能力还是正在生成程序计数器能力而不同。
图10是示出可以在系统内提供的处理电路的各种不同操作模式的图。如图10所示,处理电路可以被布置成在安全域和较不安全的域中操作。此外或者另选地,处理电路可以被布置成在多个不同状态下执行程序代码,并且在图10的示例中可以被布置成在特权状态或非特权状态下执行程序代码。特权层级和不同的安全域可以被视为正交的信任级别,并且因此域和状态的不同组合可以用于定义处理电路的不同操作模式。如前所述,确定用于生成的能力的约束信息的方式可能取决于处理电路处于哪种操作模式。进一步地,如果需要,使用本文所述的技术生成能力的能力可能限于操作模式中的一种或多种,例如,如果尝试在非授权操作模式中的一种非授权操作模式下生成能力,则生成故障。
图11是示出在一个示例性具体实施中当生成能力时所采取的步骤如何取决于正在生成的能力是程序计数器能力还是通用能力的流程图。在步骤400处,确定由能力生成指令指定的目标能力寄存器是否是程序计数器能力寄存器。如果不是,则过程前进至步骤405,在该步骤处,以先前讨论的方式生成能力,并且将其存储在由指令标识的目标通用能力寄存器中。
然而,在一个示例性具体实施中,如果目标能力寄存器是程序计数器能力寄存器,则除了在步骤410处以上述方式生成能力并且将生成的能力存储在程序计数器能力寄存器中之外,还执行附加步骤415,由此使得程序执行分支到使用生成的程序计数器能力标识的目标指令。这避免了在生成程序计数器能力之后提供单独的分支指令以分支到该目标指令的需要。
如图12所示,如果需要,则能力生成电路210可以被布置成响应于单个能力生成指令的执行来生成多个能力。例如,可以指定一种类型的能力生成指令,其标识当执行该能力生成指令时应该生成多个能力。在此类实例下,当在步骤450处确定正在执行该特定形式的能力生成指令时,该过程前进至步骤455,在该步骤处,使用先前描述的图7的过程来生成第一能力。在步骤460处,然后使用从与用于获得第一能力的文字值的位置偏移的位置获得的文字值来生成每个后续能力。可以预先确定用于标识每个后续能力的文字值的偏移量,例如以标识存储在文字池内的一系列相邻文字值,或者另选地,标识每个后续能力的文字值所需的偏移量信息可以以某种格式编码在指令内。
根据图12所示的示例,如步骤460所示,同一约束信息用于生成的能力中的每个生成的能力,并且因此从单个能力生成指令生成的能力之间没有区别。
在步骤465处,将生成的能力存储在一系列通用能力寄存器中。通常,第一通用能力寄存器将是由能力生成指令明确地标识的寄存器,并且然后可以推断另外的通用能力寄存器中的每一个。例如,每个后续的通用能力可以遵循确定的顺序。例如,从由能力生成指令指定的能力寄存器开始,一系列相邻的通用能力寄存器可以被用作通用能力寄存器的序列,所生成的能力被存储在该序列中。另选地,可以在指令内提供一些序列定义信息,并且用于标识生成的能力应该存储到其中的每个通用能力寄存器。作为又一示例,该指令可以明确地标识每个通用目标能力寄存器。
图13示出了可以使用的模拟器具体实施。虽然先前所述的示例具体实施在用于操作支持所涉及技术的特定处理硬件的装置和方法方面实现了本发明,但是也可能提供根据本文所述的示例通过使用计算机程序实现的指令执行环境。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可在支持模拟器程序505的主机处理器515上运行,任选地运行主机操作系统510。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在特定情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加的功能性,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“Some EfficientArchitecture Simulation Techniques”,Robert Bedichek,Winter 1990USENIXConference,第53至63页。
就先前已参考特定硬件构造或特征描述了示例而言,在模拟的具体实施中,等效功能可由合适的软件构造或特征提供。例如,特定电路可在模拟的具体实施中作为计算机程序逻辑提供。类似地,存储器硬件(诸如寄存器或高速缓存)可在模拟的具体实施中作为软件数据结构提供。此外,用于访问硬件装置2中的存储器50的物理地址空间可以被模拟为模拟的地址空间,该模拟的地址空间被模拟器505映射到主机操作系统510所使用的虚拟地址空间。在先前描述的示例中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器515)上的布置中,在合适的情况下,一些模拟的具体实施可利用主机硬件。
模拟器程序505可以存储在计算机可读存储介质(其可以为非暂态介质)上,并且向目标代码500(其可以包括应用程序、操作系统和管理程序)提供虚拟硬件接口(指令执行环境),该虚拟硬件接口与由模拟器程序505建模的硬件架构的硬件接口相同。因此,可使用模拟器程序505从指令执行环境内执行目标代码500的程序指令,使得实际上不具有上文所讨论的装置2的硬件特征的主计算机515可仿真这些特征。模拟器程序可以包括用于仿真处理流水线4、200的行为的处理程序逻辑520、用于仿真能力检查电路205的行为的能力检查程序逻辑522,以及用于仿真图1和图6的硬件装置的能力生成电路210的行为的能力生成程序逻辑525。因此,在图13的示例中,本文所述的用于响应于先前讨论的类型的能力生成指令生成能力的技术可以由模拟器程序505在软件中执行。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的例示性具体实施,但应当理解,本发明并不限于那些精确的具体实施,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化、增加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征一起进行各种组合。

Claims (24)

1.一种装置,所述装置包括:
处理电路,所述处理电路用于执行在其期间生成对存储器的访问请求的操作,其中所述处理电路被布置成使用提供指针值和相关联的约束信息的能力生成针对所述访问请求的存储器地址;和
能力生成电路,所述能力生成电路响应于所述处理电路执行标识所述存储器的文字池中的位置的能力生成指令,从所述文字池中的所述位置检索文字值,并且产生生成的能力,其中从所述文字值确定所述生成的能力的所述指针值,并且根据由所述能力生成指令指定的信息从选项的有限集合中选择所述生成的能力的所述约束信息。
2.根据权利要求1所述的装置,其中,所述能力生成指令指定立即值,所述立即值由所述能力生成电路使用并与当前程序计数器值相结合,以标识包含用于确定所述生成的能力的所述指针值的所述文字值的所述文字池中的所述位置。
3.根据权利要求1或权利要求2所述的装置,其中,所述约束信息包括标识使用从所述生成的能力的所述指针值导出的存储器地址能够访问的存储器区域的边界信息,并且所述选项的有限集合包括由所述边界信息标识的所述区域的可允许尺寸的有限集合。
4.根据权利要求3所述的装置,其中,所述能力生成指令指定尺寸指示值,所述尺寸指示值由所述能力生成电路使用,以从所述可允许尺寸的有限集合中确定所述区域的所述尺寸。
5.根据权利要求3所述的装置,其中,所述文字值包括不用于确定所述指针值的多个冗余位,并且所述能力生成电路被布置成从所述文字值的所述冗余位内提供的信息来确定所述区域的所述尺寸。
6.根据权利要求5所述的装置,其中,所述能力生成电路被布置成根据用于形成所述文字值的编码方案来确定所述文字值内指定用于确定所述指针值的位的第一部分与包含所述冗余位的第二部分之间的边界。
7.根据权利要求3至6中任一项所述的装置,其中,所述边界信息标识从所述指针值确定的第一边界,以及从所述第一边界和从所述可允许尺寸的有限集合确定的所述区域的所述尺寸确定的第二边界。
8.根据任一前述权利要求所述的装置,其中,所述约束信息包括元数据项,并且所述选项的有限集合包括所述元数据项的可能值的有限集合。
9.根据权利要求8所述的装置,其中,所述能力生成指令指定由所述能力生成电路用来确定所述元数据项中的一个或多个元数据项的值的元数据信息。
10.根据权利要求8或权利要求9所述的装置,所述装置还包括控制寄存器,所述控制寄存器由所述能力生成电路参考,以确定所述元数据项中的一个或多个元数据项的值。
11.根据权利要求8至10中任一项所述的装置,其中,所述文字值包括不用于确定所述指针值的多个冗余位,并且所述处理电路被布置成从所述文字值的所述冗余位内提供的信息来确定所述元数据项中的一个或多个元数据项的值。
12.根据权利要求9至11中任一项所述的装置,其中,所述元数据项中的所述一个或多个元数据项的确定值取决于所述处理电路的当前操作模式。
13.根据权利要求8至12中任一项所述的装置,其中,所述元数据项包括标识所述生成的能力的允许使用的多个权限指示,并且所述选项的有限集合包括能够由所述多个权限指示来指示的允许的权限组合的有限集合。
14.根据权利要求13所述的装置,其中,所述能力生成电路被布置成根据所述生成的能力的类型来确定由所述多个权限指示来指示的权限组合。
15.根据权利要求14所述的装置,其中,所述能力生成指令指定目标能力存储元件,并且所述能力生成电路被布置成从指定的目标能力存储元件推断所述生成的能力的所述类型。
16.根据任一前述权利要求所述的装置,其中:
所述能力生成指令指定目标能力存储元件;并且
当所述指定的目标能力存储元件是用于存储程序计数器能力的程序计数器能力存储元件时,所述处理电路被布置成一旦所述生成的能力已经被存储到所述程序计数器能力存储元件中,就使程序执行分支到使用所述生成的能力标识的目标指令。
17.根据权利要求1至15中任一项所述的装置,其中:
所述能力生成指令指定目标能力存储元件;并且
所述能力生成电路被布置成在所述指定的目标能力存储元件是程序计数器能力存储元件的情况下触发故障。
18.根据任一前述权利要求所述的装置,其中:
所述能力生成电路被布置成响应于所述处理电路执行所述能力生成指令而产生所述生成的能力和一个或多个另外生成的能力,其中对于每个另外生成的能力,所述能力生成电路被布置成根据从所述文字池中的相关联的位置获得的相关联的文字值来确定针对所述另外生成的能力的所述指针值,所述相关联的位置与由所述能力生成指令标识的所述位置偏移。
19.根据权利要求18所述的装置,其中,所述能力生成电路被布置成产生所述生成的能力和具有同一约束信息的每个另外生成的能力。
20.根据权利要求18或权利要求19所述的装置,其中,所述能力生成指令指定用于所述生成的能力的目标能力存储元件,并且所述能力生成电路被布置成从指定的目标能力存储元件中导出针对每个另外生成的能力的相关联的目标能力存储元件。
21.根据任一前述权利要求所述的装置,其中,所述处理电路能够在多种不同的操作模式下操作,并且所述能力生成电路的操作取决于所述处理电路的当前操作模式。
22.根据任一前述权利要求所述的装置,所述装置还包括:
能力检查电路,所述能力检查电路用于执行能力检查操作,以基于由给定能力提供的所述约束信息来确定是否准许其存储器地址是使用所述给定能力生成的给定访问请求。
23.一种约束对存储器的访问的方法,所述方法包括:
采用处理电路,所述处理电路用于执行在其期间生成对存储器的访问请求的操作,其中所述处理电路使用提供指针值和相关联的约束信息的能力生成针对所述访问请求的存储器地址;以及
响应于所述处理电路执行标识所述存储器的文字池中的位置的能力生成指令,执行能力生成操作,所述能力生成操作包括从所述文字池中的所述位置检索文字值,并且产生生成的能力,其中从所述文字值确定所述生成的能力的所述指针值,并且根据由所述能力生成指令指定的信息从选项的有限集合中选择所述生成的能力的所述约束信息。
24.一种用于控制主机数据处理装置来提供指令执行环境的计算机程序,所述计算机程序包括:
处理程序逻辑,所述处理程序逻辑用于执行在其期间生成对存储器的访问请求的操作,其中所述处理程序逻辑被布置成使用提供指针值和相关联的约束信息的能力生成针对所述访问请求的存储器地址;和
能力生成程序逻辑,所述能力生成程序逻辑响应于所述处理程序逻辑执行标识所述存储器的文字池中的位置的能力生成指令,从所述文字池中的所述位置检索文字值,并且产生生成的能力,其中从所述文字值确定所述生成的能力的所述指针值,并且根据由所述能力生成指令指定的信息从选项的有限集合中选择所述生成的能力的所述约束信息。
CN202280031434.0A 2021-04-28 2022-02-17 使用能力来约束对存储器的访问的技术 Pending CN117222978A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2106069.4 2021-04-28
GB2106069.4A GB2606185B (en) 2021-04-28 2021-04-28 Technique for constraining access to memory using capabilities
PCT/GB2022/050429 WO2022229590A1 (en) 2021-04-28 2022-02-17 Technique for constraining access to memory using capabilities

Publications (1)

Publication Number Publication Date
CN117222978A true CN117222978A (zh) 2023-12-12

Family

ID=76193399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280031434.0A Pending CN117222978A (zh) 2021-04-28 2022-02-17 使用能力来约束对存储器的访问的技术

Country Status (9)

Country Link
US (1) US20240193101A1 (zh)
EP (1) EP4330813A1 (zh)
JP (1) JP2024515081A (zh)
KR (1) KR20230170976A (zh)
CN (1) CN117222978A (zh)
GB (1) GB2606185B (zh)
IL (1) IL307572A (zh)
TW (1) TW202319913A (zh)
WO (1) WO2022229590A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
TW202319913A (zh) 2023-05-16
GB2606185B (en) 2023-06-21
EP4330813A1 (en) 2024-03-06
IL307572A (en) 2023-12-01
US20240193101A1 (en) 2024-06-13
JP2024515081A (ja) 2024-04-04
KR20230170976A (ko) 2023-12-19
GB2606185A (en) 2022-11-02
GB202106069D0 (en) 2021-06-09
WO2022229590A1 (en) 2022-11-03

Similar Documents

Publication Publication Date Title
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN110622133B (zh) 用于管理能力域的设备及方法
CN110799939B (zh) 用于控制指令的执行的设备与方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
US11080058B2 (en) Apparatus and method for controlling a change in instruction set
CN116368465A (zh) 用于使用能力约束对存储器的访问的技术
US20240202139A1 (en) Technique for constraining access to memory using capabilities
CN118202349A (zh) 用于处理密封能力的技术
US20240193101A1 (en) Technique for constraining access to memory using capabilities
CN112106029B (zh) 用于触发动作的装置和方法
TW202340955A (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