CN110663024B - 用于诠释与能力相关联的权限的装置及方法 - Google Patents

用于诠释与能力相关联的权限的装置及方法 Download PDF

Info

Publication number
CN110663024B
CN110663024B CN201880032317.XA CN201880032317A CN110663024B CN 110663024 B CN110663024 B CN 110663024B CN 201880032317 A CN201880032317 A CN 201880032317A CN 110663024 B CN110663024 B CN 110663024B
Authority
CN
China
Prior art keywords
capability
rights
state
default
processing circuitry
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.)
Active
Application number
CN201880032317.XA
Other languages
English (en)
Other versions
CN110663024A (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 CN110663024A publication Critical patent/CN110663024A/zh
Application granted granted Critical
Publication of CN110663024B publication Critical patent/CN110663024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30181Instruction operation extension or modification
    • 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/30101Special purpose 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/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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • 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/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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

本文提供用于诠释与能力相关联的权限的装置及方法。该装置具有:处理电路,用于执行指令以执行操作;以及能力存储组件,可由处理电路可访问并且被布置为存储用于约束处理电路在执行指令时执行的至少一个操作的能力。该能力标识数目为N个的多个默认权限,所述默认权限的状态是根据默认诠释从该能力中提供的N个权限标志来确定的。根据该默认诠释,每个权限标志可以与这些默认权限中的一个相关联。处理电路随后被布置为根据替代诠释来分析能力,以便根据N个权限标志的逻辑组合来导出权限的扩展集的状态,其中该扩展集包括至少N+1个权限。这提供了用于将额外权限编码到能力中而不增加所需的权限标志数量,同时仍保持期望行为的机制。

Description

用于诠释与能力相关联的权限的装置及方法
技术领域
本公开涉及数据处理领域。
背景技术
基于能力的架构正越来越受关注,其中针对给定过程限定了某些能力,并且如果尝试执行在限定的能力之外的操作,则可能触发错误。这些能力可以采取各种形式,但是一种类型的能力是有界指针(其也可以被称为“胖指针”)。
可以提供多个能力存储组件(例如,寄存器)以用于存储供数据处理装置的处理电路访问的能力。每个能力可以包括标识与该能力相关联的一个或多个权限(permission)的多个权限标志,例如以将能力的用途限制于处理电路的某些类型的操作、某些模式的操作等等。例如,考虑到此类能力存储组件内的有界指针,这可以标识由处理电路可访问的不可扩展范围的存储器地址,以及标识相关联的权限的一个或多个权限标志。尽管可以允许处理电路采取步骤来缩小范围和/或清除与可用于其的任何特定有界指针相关联的权限标志,但是在普通操作中不能扩展范围或设置权限标志以试图增加由该有界指针提供给处理电路的能力。
期望允许扩展与能力相关联的权限的数量,但是用于对能力进行编码的位的数量通常受到约束,例如由存储能力的能力存储组件的大小约束。
发明内容
在第一示例性配置中,提供了一种装置,该装置包括:处理电路,用于执行指令以执行操作;以及能力存储组件,可由该处理电路访问并且被布置为存储用于约束该处理电路在执行所述指令时执行的至少一个操作的能力,该能力标识数目为N个的多个默认权限,所述默认权限的状态是根据默认诠释从该能力中提供的N个权限标志确定的,根据默认诠释,每个权限标志与默认权限中的一个相关联;该处理电路被布置为根据替代诠释来分析能力,以便根据该N个权限标志的逻辑组合来导出权限的扩展集的状态,该扩展集包括至少N+1个权限。
在另一个示例性配置中,提供了一种诠释装置中的与能力相关联的权限的方法,该装置包括:处理电路,用于执行指令以执行操作;以及能力存储组件,可由该处理电路访问并且被布置为存储用于约束该处理电路在执行所述指令时执行的至少一个操作的能力,该能力标识数目为N个的多个默认权限,并且该方法包括:在该能力内提供N个权限标志,使得默认权限的状态是根据默认诠释从该N个权限标志确定的,并且每个权限标志与默认权限中的一个相关联;以及根据替代诠释来分析能力,以便根据该N个权限标志的逻辑组合来导出权限的扩展集的状态,该扩展集包括至少N+1个权限。
在又一示例性配置中,提供了一种装置,该装置包括:处理装置,用于执行指令以执行操作;以及能力存储组件装置,用于由该处理电路访问并用于存储用于约束该处理构件在执行所述指令时执行的至少一个操作的能力,该能力标识数目为N个的多个默认权限,该默认设权限的状态是根据默认诠释从该能力中提供的N个权限标志确定的,根据默认诠释,每个权限标志与默认权限中的一个相关联;处理装置,用于根据替代诠释来分析能力,以便根据该N个权限标志的逻辑组合来导出权限的扩展集的状态,该扩展集包括至少N+1个权限。
在又一示例性配置中,提供了一种虚拟机计算机程序,该虚拟机计算机程序包括用于控制主数据处理装置以提供与上述第一示例性配置的装置相对应的指令执行环境的程序指令。在一个实施例中,可以提供计算机可读存储介质来存储虚拟机计算机程序。
附图说明
仅举例而言,将参照如附图所示的本技术实施例来进一步描述本技术,在附图中:
图1是根据一个实施例的装置的方框图;
图2示出了如果试图设置或访问一组有界指针存储组件内的指针值则可能触发错误的指令类型的示例,其中该指针值用于指定在由相关联的范围信息所指示的范围以外的地址;
图3示出了根据一个实施例的与有界指针相关联的标记位的使用;
图4是示出根据一个实施例的可以在有界指针能力内提供的权限位以及这些权限位的默认诠释的图示;
图5是示出可以如何取决于正在使用默认诠释还是正在使用替代诠释来根据权限位确定可修改权限的状态的流程图;
图6是示出可以如何取决于正在使用默认诠释还是正在使用替代诠释来根据权限位确定可执行权限的状态的流程图;
图7是示出可以如何取决于正在使用默认诠释还是正在使用替代诠释来根据权限位确定特定读取权限的状态的流程图;
图8是示出可以如何取决于正在使用默认诠释还是正在使用替代诠释来根据权限位确定特定写入权限的状态的流程图;
图9是示意性地示出在一个实施例中根据替代诠释的权限的扩展集的状态的表格,如根据存储在能力内的执行、读取和写入权限位确定的;
图10是指示在一个实施例中读取、写入和执行权限位的被允许的状态转换的状态转换图;
图11示意性地示出了根据一个实施例在执行地址生成指令时执行的操作;
图12示意性地示出了根据一个实施例具有链路指令的分支的操作;
图13示意性地示出了根据一个实施例的分支指令的执行;以及
图14示出了可以使用的虚拟机实施方式。
具体实施方式
在参考附图论述实施例之前,提供了实施例的以下描述。
如先前提及的,基于能力的架构正越来越受关注,其中针对给定过程限定了某些能力,并且如果尝试执行在限定的能力之外的操作,则可能触发错误。可以限定各种类型的能力,但是一个类型的能力是有界指针(其在一个实施例中结合了指针值与相关联的范围和权限信息)。
采用此类基于能力的架构的装置通常将具有用于存储能力的存储组件(在本文中也称为有界指针存储组件,或更一般地能力存储组件)。存储组件可以是寄存器(在此也称为有界指针寄存器或能力寄存器)和/或可以是通用存储器中的存储器位置,例如在堆栈存储器上的位置。可以使用某些指令来引用此类存储组件以便访问期望的能力并根据该能力执行操作。例如,考虑到有界指针,此类指令的执行可以使有界指针被取回,并且使该有界指针中的指针值随后被用来导出在指令执行期间所需的存储器中的地址。指针值可以直接用于标识存储器地址,或者可以用于导出存储器地址,例如通过向指针值添加偏移。若存储器地址在由范围信息指定的范围内,并且满足在权限信息中指定的任何权限,则操作将被允许继续进行。
因此例如,当使用有界指针时,指针值本身可指向或用于确定待访问的数据值的地址或待提取以执行的指令。然而,范围和权限信息随后可以被引用,例如以确保所访问的任何地址在可允许的范围内并且是出于被允许的目的而被访问。这可能可用于例如确保根据指针确定的地址保持在某些边界内以保持行为的安全性或功能正确性。通过此类方法,可以有效地监督由处理电路进行的存储器访问。
在一个典型的实施方式中,每个权限的状态可以由该能力内的相关联权限标志指示,该标志处于设置状态或清除状态以便标识相应权限的状态。当权限标志清除时,这将通常意味着相关联权限处于清除状态,这继而指示处理电路针对所论述的能力撤销了该权限。相反,当权限标志经设置时,此可能意味着相关联的权限具有设置状态,并且因此处理电路可以针对该能力被授予该权限。然而,在一个实施例中,可能仍然需要在决定处理电路是否实际上被授予该权限之前引用其他控制信息,并且因此可以使用由相关联的权限标志所标识的权限的设置状态来指示处理电路受制于任何覆写控制信息、针对所论述的能力被授予该权限。
期望允许针对各个能力指定增多数量的权限,因为此类方法会允许增强能力使用的灵活性。然而,能力编码空间通常非常受约束。例如,考虑到有界指针的示例,有界指针能力也需要能够指定指针值,并且指示相关联范围的信息,以及因此用于规定权限标志的剩余位的数量可能意味着不可能仅仅继续向该能力添加其他权限标志。
本文描述的实施例提供了用于允许在此类情况下扩展与能力相关联的权限的数量的有效机制。
特别地,在一个实施例中,提供了一种装置,该装置具有:处理电路,用于执行指令以执行操作;以及能力存储组件,可由处理电路访问并且被布置为存储用于约束处理电路在执行指令时执行的至少一个操作的能力。该能力可以标识数目为N个的多个默认权限,所述默认权限的状态是根据默认诠释从该能力中提供的N个权限标志确定的。根据该默认诠释,每个权限标志可以与默认权限中的一个相关联。因此,权限标志与默认权限之间可能存在1:1的对应关系。
然而,根据所描述的实施例,处理电路被布置为根据替代诠释来分析能力,以便根据N个权限标志的逻辑组合来导出权限的扩展集的状态,其中该扩展集包括至少N+1个权限。
通过这样的方法,可以扩展与该能力相关联的权限的数量,而不增加权限标志数量。此外,该方法提供了一种非常灵活的机制,因为可以使用相同的权限标志来支持默认诠释和替代诠释两者。因此,可以在支持默认诠释和替代诠释两者的系统中使用该能力,但是也可以在仅支持这些诠释中的一个诠释的系统中使用该能力。这例如可以通过还允许将该能力与仅支持默认诠释的处理电路的示例一起使用来提供向后兼容性。
权限的扩展集可以采取各种形式,但是在一个实施例中包括数目为N个的多个默认权限,以及至少一个额外权限。这因此允许经由使用该N个权限标志替代诠释来推断该能力的至少一个“新”权限。该“新”权限可以是先前没有在基于能力的架构中提供的权限,或者可以是先前仅在更全局规模上提供的权限,而不是可以针对各个能力设置或清除的权限。
在一个示例实施例中,权限的扩展集包括可修改权限,该可修改权限当处于清除状态时标识该能力不可由一个或多个能力修改指令修改。通过这样的方法,各个能力可以被标记为不可修改的,此可以在某些情况下提供增强的安全性。
在一个实施例中,可修改权限当处于设置状态时允许在能力中提供的N个权限标志从设定值转换为清除值,受制于任何覆写控制信息以防止修改。在一些情况下,可能没有覆写控制信息,并且因此可修改权限当处于设置状态时直接指示权限标志可以从设置值转换至清除值。然而,在其他实施例中,可能存在额外的控制信息,该额外的控制信息需要在可以确认处于设置状态下的可修改权限确实允许选择性清除权限标志之前被引用。
与能力方面的一般惯例一致,可能不允许活动受到能力约束的过程以将清除的权限标志恢复到设置值的方式来修改能力,即使当可修改权限处于设置状态下时亦如此。出于此原因,当可修改权限处于设置状态下时,此可以允许权限标志从设置值转换为清除值,但是可能不允许被清除的权限标志改变为设置值。
尽管已经参考改变权限标志值的能力描述了可修改权限的设置,但是可修改权限还可以影响该能力内的其他字段。例如,在受制于防止能力被修改的其他机制的情况下,当可修改权限处于设置状态下时,能力可以通过通用能力修改指令来修改,该通用能力修改指令可以例如清除权限标志、缩小边界和/或改变指针值的地址,在此种情况下,假设该能力是有界指针。
默认权限可以采取各种形式,但是在一个实施例中包括:一个或多个存储器访问权限,用以标识在清除状态下时该能力被阻止由一个或多个存储器访问操作用来访问存储器中的数据;以及可执行权限,用以标识在处于清除状态下时该能力在形成程序计数器能力时被阻止用于从存储器提取指令。这些默认权限因此可以用于约束试图访问存储器地址空间的操作。
该一个或多个存储器访问权限可以采取各种形式,但是在一个实施例中包括:至少一个写入权限,用以标识该能力是否被阻止用于执行对存储器的至少一个类型的写入操作;以及至少一个读取权限,用以标识该能力是否被阻止用于执行从存储器的至少一个类型的读取操作。因此,可以针对读取和写入操作提供单独的权限,并且事实上可以指定多个写入权限和/或多个读取权限。多个权限的使用可以例如用来标识当处理电路在一些模式下而非其他模式下操作时,在执行某些类型的指令而非其他类型的指令时可以执行写入或读取操作,和/或可以指定读取或写入的可用性取决于正在被读取或写入的信息。例如,对于正在被读取或写入的信息本身就是能力或者替代地是标准数据值的情况,可以指定单独的读取和写入权限。
在默认权限包括可执行权限并且权限的扩展集至少包括先前所述的可修改权限的添加的实施例中,则根据N个权限标志的替代诠释,可以防止能力同时使得可执行权限和可修改权限两者均处于设置状态下。相反,在可修改权限从清除状态改变为设置状态时,权限标志值的某些转变可能导致可执行权限从设置状态转换到清除状态,并且反之亦然。
在一个实施例中,N个权限标志包括至少一个写入位、至少一个读取位和执行位,这些位的值根据默认诠释分别标识了至少一个写入权限、至少一个读取权限和执行权限的状态。在一个此类实施例中,根据替代诠释,处理电路被布置为当至少一个写入位被设置或者执行位被清除时确定可修改权限处于设置状态下。这为能够指定可修改权限何时处于针对特定能力的设置状态下提供了很大的灵活性。
尽管根据默认诠释,每个权限标志与相关联的默认权限之间通常存在1:1的对应关系,但在一个实施例中当根据替代诠释来诠释权限标志时情况并非如此。相反,当使用替代诠释时,权限标志的逻辑组合用于确定默认权限中的至少一个的状态。
例如,在一个实施例中,根据替代诠释,处理电路被布置为当执行位被设置并且所有至少一个写入位被清除时确定可执行权限处于设置状态下。因此,根据替代诠释,为了确定可执行权限处于设置状态下仅仅设置执行位是不足够的,而是替代地还需要使能力内提供的任何写入位也被清除。这提供了特别高效的编码来使权限的扩展集能够被编码在可用的N个权限标志内,因为通常认为不期望允许能力具有针对存储器的相同区域写入权限设置和可执行权限设置两者,并且根据所提出的编码该选项被阻止。
在一个实施例中,当使用替代诠释时,读取权限也被诠释为不仅使用相关联的读取位,还使用额外信息。特别地,对于每个读取权限,根据替代诠释,处理电路可以被布置为确定当相关联的读取位被设置并且可修改权限处于设置状态下或能力被用作程序计数器能力时读取权限处于设置状态下。通常,因此根据替代诠释需要使可修改权限处于设置状态下以便授予任何读取权限。然而,在能力不可修改的一个特定示例中,特别是在能力被用作程序计数器能力的一个特定示例中,可以给出选择性的可读性。在该示例中,当该能力处于程序计数器能力中时,取决于相关联的读取位,该能力可以被标记为可执行且不可修改的,但是仍然可以被允许在特定情况下可读。
在默认诠释和替代诠释两者中,通过转换权限标志状态来实现权限的改变。如先前所提及的,当过程被给予改变能力的权限时,其通常将仅能够以推断额外约束的方式,而不是以放松能力约束的方式来改变能力。关于权限,这意味着通常该过程将仅能够清除权限标志而不是设置权限标志,并且因此权限的转换经由清除权限标志中的一个或多个而发生。因为根据替代诠释,权限标志的逻辑组合被用来确定各个权限的状态,所以清除一个或多个权限标志可能允许权限中的至少一个权限移入设置状态。例如,可以通过清除执行标志来将可修改权限移入设置状态。
某些权限标志值的转换还可能与某些指令的处理相关联。例如,在一个实施例中,处理电路可以被布置为响应于执行地址生成指令而根据程序计数器能力生成结果能力来清除结果能力内的执行位。这可能导致在实践中可能非常有用的一些有趣的行为变化。例如,这可能意味着当用作程序计数器能力时可执行但不可修改的能力可以用于生成存储在通用能力寄存器中的结果能力,该结果能力随后是可修改的。其还可以例如随后是可读的,取决于一个或多个读取权限位。特别地,在一个实施例中,当程序计数器能力具有的执行位经设置并且具有的所有至少一个写入位被清除时,结果能力中执行位的清除导致结果能力根据替代诠释而被视为具有的其可修改权限处于设置状态下并且具有的每个读取权限处于由相关联的读取位指示的状态下。
作为在执行一个或多个特定类型的指令时可以如何管理权限的另一个示例,处理电路可以响应于执行具有链路指令的分支以根据程序计数器能力生成返回地址能力,使得当可修改权限在程序计数器能力内处于清除状态下时,返回地址能力还具有其可修改权限处于清除状态下。通过此类方法,可能创建不可修改的返回地址能力,这可以提供增强的安全性。
在一个实施例中,该装置可以具有一个或多个通用能力存储组件和程序计数器能力存储组件。在一个此类实施例中,当存储在该一个或多个通用能力存储组件中的一个中的能力具有经设置的执行位,读取位中的至少一个经设置并且所有至少一个写入位被清除时,处理电路根据替代诠释而受到约束,以仅使用所述能力来形成待存储在程序计数器能力存储组件中的新程序计数器能力。然而,一旦该能力被存储在程序计数器能力存储组件中,新的程序计数器能力就根据替代诠释而被视为具有在设置状态下的每个读取权限,该读取权限的相关联的读取位被设置,从而使得文字值能够由处理电路从存储器中读取。因此,可以分配仅可以在执行分支指令时的适当时候使用能力来进行分支的任务,并且因此该能力仅可以被用作另一个例程的入口点。然而,当分支发生并且该能力被加载到程序计数器能力中时,该另一例程则可以其他方式使用该能力,例如通过使用例如参考程序计数器能力生成地址的加载指令来使得能够从存储器读取文字值。
在一个实施例中,处理电路可以被布置为始终使用替代诠释。然而,在另一个实施例中可以提供配置存储组件,该配置存储组件存储用于指示处理电路要应用默认诠释和替代诠释中的哪一个的配置值。这因此提供了允许根据需要随着时间推移在默认诠释与替代诠释之间切换的机制。
上述权限可以与由装置使用的各种不同类型的能力相关联,但是在一个实施例中,该能力是有界指针,并且这些权限被用来控制处理电路对在该能力内指定的指针值的使用。
现在将参照附图描述特定实施例。
图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,以及用于执行将数据值从等级1(L1)数据缓存36加载到寄存器40的加载操作或将数据值从寄存器40存储至L1数据缓存36的存储操作的加载/存储单元34。应该理解的是,这些仅仅是可以提供的执行单元的类型的一些示例,并且还可以提供许多其他类型。为了执行处理操作,执行阶段12可以从一组寄存器40读取数据值。随后可以通过写回阶段14将执行指令的结果写回到寄存器40。
L1指令缓存20和L1数据缓存36可以是包括多个等级的缓存的缓存层级的一部分。例如,还可以提供等级2(L2)缓存44,并且可以提供可选的其他等级的缓存。在此示例中,L2缓存44在L1指令缓存20与L1数据缓存36之间共享,但是其他示例可以具有单独的L2指令和数据缓存。当待提取的指令不在L1指令缓存20中时,则其可以从L2缓存44中提取,并且类似地,若该指令不在L2缓存44中,则其可以从主存储器50提取。类似地,响应于加载指令,若数据不在L1数据缓存36中,则可以从L2缓存44中提取,并且若需要则从存储器50中提取数据。任何已知的方案都可以用于管理缓存层级。
由管线4用来引用程序指令和数据值的地址可以是虚拟地址,但是至少主存储器50以及可选地至少某些等级的缓存层级可以被实体地寻址。因此,可以提供转换后备缓冲器52(translation lookaside buffer,TLB),以用于将由管线4使用的虚拟地址转换成用于访问缓存或存储器的实体地址。例如,TLB 52可以包括多个条目,每个条目指定虚拟地址空间的相应页面的虚拟页面地址,以及虚拟页面地址应当映射到以便将相应页面内的虚拟地址转换为实体地址的相应实体页面地址。例如,虚拟和实体页面地址可以对应于对应的虚拟和实体地址的最高有效部分,其中当将虚拟地址映射到实体地址时,剩余的最低有效部分保持不变。除了地址转换信息之外,每个TLB条目还可以包括指定访问权限的一些信息,例如指示在管线4的某些模式中地址的某些页面是否可访问的一些信息。在一些实施例中,TLB条目还可以限定地址的相应页面的其他特性,例如限定响应于读取或写入操作来更新缓存层级的哪些等级(例如,缓存是应该以回写模式还是通写模式操作)的缓存策略信息,或者限定与由管线4发布的数据访问的顺序相比,是否可以由存储器系统对相应页面中的地址的数据访问进行重新排序的信息。
尽管图1示出了单个等级TLB 52,但应该理解的是,TLB的层级可以被提供为使得等级1(L1)TLB 52可以包括用于转换多个最近访问的页面中的地址的TLB条目以及等级2(L2)TLB可以被提供用于存储更大量页面的条目。当L1 TLB中不存在所需条目时,则可以从L2 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和权限信息66可以用不同的方式设置。例如,安全代码,或操作系统或管理程序,可以指定给定指针所允许的范围和权限。例如,指令集架构可以包括用于设置或修改给定指针62的范围信息64和/或权限66的多个指令,并且这些指令的执行可能限于处理器4的某些软件或某些模式或异常等级。然而,作为这种用于修改能力的基于特权的机制的补充或替代,在本文描述的实施例中可以导出各个能力的可修改权限。因此,在一个示例性布置中,修改能力的能力可取决于该能力的可修改权限是否处于设定状态下,或者试图修改该能力的过程是否具有所需特权。替代地,可能需要在允许修改能力之前,可修改权限处于设置状态下并且试图修改该能力的过程具有所需特权。
除了在执行引用指针的某些指令时可以在执行阶段12处使用的有界指针存储组件集合60之外,程序计数器能力(PCC)寄存器80也可用于当从等级1指令缓存20提取指令时在提取阶段6处提供类似的功能。特别地,程序计数器指针可以存储在字段82中,其中PCC80还提供范围信息84和任何适当的限制信息86,类似于使用有界指针存储组件集合60中的每个指针提供的范围信息和限制信息。
由有界指针寄存器内的有界指针标识的存储器地址的任何特定范围可以包含数据、指令和/或其他能力(即其他有界指针)。因此,应理解的是,在任何时间点,处理电路的访问存储器的能力由一组能力限定,该组能力包括在有界指针寄存器中标识的能力及经由保持在这些有界指针寄存器中的能力可访问的任何其他能力,并且此组能力在本文被称为能力域。
PCC寄存器80中指定的范围信息和任何相关的限制可以各种方式设置。然而,在信息是使用当前能力域中的处理电路可用的有界指针中的一个或多个有界指针来确定的一个实施例中,使得没有存储器地址可以使用常驻在针对当前能力域标识的存储器地址范围之外的基于PCC的边界检查来访问。
图3示意性地示出了如何将标记位与各个数据块相关联地用来标识这些数据块是否代表能力(即有界指针和相关联的限制信息),或者代表普通数据。特别地,存储器地址空间110将存储通常将具有指定大小的一系列数据块115。纯粹为了说明起见,在此示例中假定每个数据块包括128个位。与每个数据块115相关联地提供了标记字段120,该标记字段在一个示例中是被称为标记位的单个位字段,其被设置以标识相关联的数据块代表能力,并且被清除以指示相关数据块代表普通数据并且因此不能被视为能力。应该理解的是,与该设置或清除状态相关联的实际值可以根据实施例而变化,但是纯粹作为说明,在一个实施例中若标记位具有值1,则其指示相关联的数据块是能力,并且若其具有值0,则其指示相关联的数据块包含普通数据。
当能力被加载到有界指针寄存器60(本文中也称为能力寄存器)中的一个有界指针寄存器(如第3图所示的能力寄存器100)中时,则标记位与能力信息一起移动。因此,当能力被加载到能力寄存器100中时,指针102、范围信息104和限制信息106(在下文中称为权限信息)将被加载到该能力寄存器中。此外,与该能力寄存器相关联,或者作为该能力寄存器中的特定位字段,标记位108将经设置以标识内容代表能力。类似地,当能力被存储回存储器时,相关标记位120将被设置为与存储能力的数据块相关联。通过此类方法,可以区分能力和普通数据,从而确保普通数据不能用作能力。
如先前论述的,应期望增加可能与各个能力相关联的权限的数量,而不会增加所需权限标志的数量。特别地,能力中的编码空间通常短缺,并且可能没有足够的空间来针对期望编码的每个额外权限添加其他权限标志。
图4给出了考虑到例如有界指针,可以在现有能力中提供的权限标志示例。有界指针能力150包括用于存储指针值的指针字段155,以及用于存储范围信息以标识可使用指针字段155内的指针值访问的地址的可允许范围的范围字段160。随后可以提供多个权限字段165来存储一个或多个权限标志。在所描述的实施例中,每个权限标志采取可以设置或清除的单一位值的形式。出于所描述的实施例的目的,将假定能力150具有一个或多个写入权限、一个或多个读取权限和可执行权限,并且在字段165内提供对应于这些各个权限的多个权限位。因此,总体考虑可能存在C个不同写入权限和B个不同读取权限的情况,则可以提供C个写入权限位W0至WC-1,并且还可以提供B个读取权限位R0至RB-1。每个读取或写入权限可以与处理器的特定操作类型或特定操作模式相关联,或者实际上不同的权限可以与被访问的不同类型的信息相关联,使得例如不同的写入和读取权限可以根据被访问的信息本身是能力还是普通数据值来设置。尽管为了说明起见已经假定存在与相应的读取和写入权限相关联的多个读取和写入权限位,但是在一个替代实施例中,可以存在单个读取权限和单个写入权限,其中这些读取和写入权限的状态由单个读取权限位和单个写入权限位表示。
还如图4所示,额外的权限可以被编码在该能力内,并且因此例如可执行权限可以由相关联的执行(X)位的值来指示。
根据权限字段165内的权限位的默认诠释,每个权限位与相应的权限相关联,并因此直接标识该相关联权限的状态。这在图4中进一步说明。因此,若权限位Wi经设置,则这指示写入权限i处于设置状态下,并且因此字段155内的指针值可以用于标识类型i的写入操作的地址,受制于任何覆写控制信息。类似地,若权限位Rj经设置,则此意味着读取权限j处于设置状态下,并且因此指针值可以用于标识类型j的读取操作的地址,受制于任何覆写控制信息。最后,若设置了执行位X,则这意味着可执行权限处于设置状态下,并且因此指针值可用于标识提取指令的地址,同样受制于任何覆写控制信息。
相反,若相关联的权限位被清除,则这意味着该能力的相关联权限被撤销,并且因此不能使用相关联的能力来执行对与该权限相关联的类型的访问。
在下文描述的实施例中,相同的权限位被保留,但是它们可以被不同地诠释以便导出权限的扩展集合的状态。特别地,根据替代诠释,权限位的逻辑组合用于标识一组增加的权限的状态。在一个实施例中,该组增加的权限包括例如参考图第4论述的所有写入、读取和可执行权限,即根据W、R和X权限位的默认诠释可用的权限,但是此外至少一个另外的权限也是从这些W、R和X权限位的值可导出的。特别地,在一个实施例中,还提供与该能力相关联的可修改权限,而不需要指定任何额外的权限位。
参考图5的流程图说明了在一个实施例中根据上述权限位确定可修改权限的状态的方式。在步骤200中,确定是否正在使用替代诠释,并且若不是,则这意味着默认诠释适用,该过程分支到步骤205。根据默认诠释,可修改权限不存在。替代地,修改任何能力的能力将由其他地方的控制信息来限定,并且将不会使用每个能力中的权限位来在逐能力基础上限定。
然而,若正在使用替代诠释,则过程前进到步骤210,在该步骤中确定是否设置了W位中的至少一个。若是,则过程前进到步骤220,在该步骤中确定可修改权限处于设置状态下。因此,这意味着能力可以通过修改指令的某些能力来修改,除非其他控制状态阻止此种修改。例如,仍然可能存在一些通用的覆写控制信息,这意味着即使根据权限位确定的可修改权限指示不阻止修改能力,特定能力也为不可修改的。
若在步骤210处确定没有设置W位中的任一者,则在步骤215处确定执行位是否清除。若执行位是清除的,则这也指示可修改权限处于设置状态下,并且相应地,过程分支到步骤220。然而,若执行位处于设置状态下,则过程前进到步骤225,在该步骤中确定可修改权限处于清除状态下。当可修改权限处于清除状态下时,这意味着无法修改相关联的能力。这因此使各个能力能够被标记为不可修改的,这可以在基于能力的架构内提供增强的安全性。
此外,当使用替代诠释时增强了灵活性,因为可以改变能力内的某些权限位的值以将能力从可修改状态改变至不可修改状态。此外,在特定情况下,例如经由使用某些地址生成指令,可能可以将不可修改的能力转换为可修改的能力,如稍后将参照图11作为示例论述的。
尽管在使用默认诠释时,在各个权限位与相关联的权限之间存在1:1的对应关系,但是根据替代诠释,情况并非如此,并且可以使用权限位的逻辑组合来确定特定权限的状态。图6例如示出了可以如何根据正在使用默认诠释还是替代诠释来评估可执行权限的状态。
在步骤250,确定处理电路是否使用替代诠释。若否,则在步骤255确定是否设置了执行(X)位。若是,则过程前进到步骤270,在此步骤处确定可执行权限处于设置状态下,否则过程前进到步骤275,在此步骤处确定可执行权限处于清除状态下。
然而,若确定正在使用替代诠释,则过程前进到步骤260,在该步骤中确定是否设置了X位。若否,则过程前进到步骤275,在此步骤处确定执行权限处于清除状态下。然而,若设置了X位,则这本身并不一定意味着可执行权限处于设置状态下,而是替代地在步骤265处执行额外的检查以确定能力中提供的所有W位是否清除。应该注意的是,若能力内有多个W位,则需要在步骤265处检查所有这些W位,以确定它们是否全部清除。仅当所有W位都清除时,过程才前进到步骤270以确定可执行权限处于设置状态下,否则过程将前进到步骤275,在该步骤中将确定可执行权限处于清除状态下。
返回到步骤265,应该理解的是,在步骤265处确定所有的W位是清除的与确定可修改权限处于清除状态下相同,因为从图5可以看出,若W位中的任一者经设置,则修改权限将处于设置状态下。因此,将可以看出,在参照图5和图6描述的实施例中,可执行权限和可修改权限中的仅一个可以在任何时间点处于设置状态下。
图7是示出可以如何根据正在使用默认诠释还是替代诠释来评估读取权限中的任一个的状态的流程图。在步骤300处,确定是否正在使用替代诠释,并且若否,则在步骤305处确定是否设置了相关联的R权限位。若是,则在步骤325处确定特定读取权限处于设置状态下,否则在步骤330处确定特定读取权限处于清除状态下。
然而,若正在使用替代诠释,则过程前进到步骤310,在该步骤中首先确定是否针对所论述的读取权限设置了相关联的读取权限位。若否,则过程直接前进到步骤330,在该步骤中确定读取权限处于清除状态下。
然而,若设置了相关的读取权限位,则这并非直接意味着读取权限被确定为处于设置状态下,而是替代地需要一个或多个其他检查。首先,在步骤315处,确定可修改权限是否处于设置状态下。在一个实施例中,这不一定需要直接重新评估可修改权限,而是替代地可以参照W位和X位来执行此检查。特别地,从图5的先前论述应理解,当至少一个写入位经设置或者执行位是清除的时,将确定可修改权限处于设置状态下,并且因此可以在步骤315处执行彼检查。
若确定可修改权限处于设置状态下,则过程前进到步骤325,在该步骤中确定相关读取权限处于设置状态下。然而,若可修改权限未处于设置状态下,则在步骤320处执行另一检查以确定该能力当前是否正被用作程序计数器能力。若是,则即使可修改权限未被设置,在步骤325处仍然确定相关读取权限处于设置状态下。因此,当某些不可修改的能力驻留在PCC寄存器80内时,这些能力仍可被视为具有至少一个可读权限集合。
若在步骤320处确定该能力当前未被用作程序计数器能力,则该过程前进到步骤330,在该步骤中确定读取权限处于清除状态下。
图8是示出在一个实施例中如何评估任何特定写入权限的状态的流程图。如方块350所指示,在所描述的实施例中,写入权限以完全相同的方式诠释,而不管正在使用默认诠释还是替代诠释。特别地,在步骤355,确定是否设置了相关联的写入权限位,并且若是,则在步骤360处确定特定写入权限处于设置状态下,否则在步骤365处确定特定写入权限处于清除状态下。
根据以上对图5至图8的论述将认识到,一个或多个写入权限、一个或多个读取权限、可执行权限和可修改权限的状态可全部使用在能力内编码的现有W、R和X权限位来确定。不需要添加额外的可修改权限位,并且因此额外的可修改权限可以被编码到该能力中,而不需要任何额外的权限位编码空间。
图9是示出四个上述不同类型的权限的状态的表格,取决于X位、R位和W位。在此示例中,为了便于说明,假定只有一个读取权限和一个写入权限,并且因此只有单独R位和单独W位。
在更一般的情况下,如从图5至图8的流程图应当理解,当确定可修改和可执行权限的状态时(并且事实上,可读权限已知取决于可修改权限是否是经设置的),将需要作为评估这些权限是处于设置状态下还是清除状态下的过程的一部分来对多个W个位执行逻辑或(OR)和与(AND)运算。
图10是示出当能力被标记为可修改时,可以如何将各个权限位从设置值改变为清除值以便实现权限中的一个或多个权限的状态转换的状态转换图。此外,为了便于说明,假定只有单独的W权限位和单独的R权限位,但是在存在多个R权限位和多个W权限位的更一般情况下,这些R权限位和W权限位中的每一个都可以被独立地清除。
如由初始状态400所示,R位、W位和X位中的每一位可以最初被设置为逻辑1值。如从图9中将显而易见的,这意味着该能力是不可执行但可修改的,并且允许读取和写入操作两者。因为能力是可修改的,所以若需要,则可以清除各个权限位。通过清除一个位,因此可以转换到状态405、407、409中的任一个。在状态407中,R位和W位仍然经设置,但是X位被清除,而在状态409中,W位和X位仍然经设置,但R位被清除。返回参考图9,将可以看到,状态407和409两者皆对应于可修改权限处于设置状态下的状态。然而,状态405(其中R位和X位是经设置的,而W位不是经设置)对应于可修改权限处于清除状态下的状态,即该能力是不可修改的。
图10示出了当各个权限位被清除时可能发生的多个其他可能的转换。为了便于说明,直接从状态400到412或从状态400到416的转换被省略,但是在一个实施例中,这些转换亦是可能的。应该注意,状态412和414仍然是能力为可修改的状态,但是状态410是能力不可修改的另一状态。尽管状态416原则上是可修改的状态,但其表示所有权限位已被清除的状态,并且相应地由该能力约束的过程将不能够进一步改变该能力内的权限。在一些实施例中,可以确定状态416处于不使用状态下。
因为图10中的状态405、410表示能力不可修改的情况,则似乎排除了从这些状态的进一步转换。然而,如由与转换420、425相关联使用的“ADR”符号所指示的,在一个实施例中,地址生成指令的执行可以允许由路径420、425指示的转换发生。这将参照图11进一步论述。
如图11所示,地址生成指令可以指定通用能力寄存器CN作为目的地寄存器,并且还可以通过指令内的立即值或参考内容指定偏移值的整数寄存器来指定源操作数。当执行这种地址生成指令时,PCC寄存器80内的程序计数器能力被用作源能力450。指针值465是从PCC 450中提取的并且经历与源操作数组合的逻辑运算460。这可以例如涉及向指针值添加立即值以便生成结果值470,其中地址生成指令指定立即值,或者可以例如涉及向指针值添加偏移,其中该偏移是参考整数寄存器获得的,从而再次产生结果值470。范围信息和权限信息随后被复制到除了X位外基本上未改变的结果能力455。特别地,当执行地址生成指令时,在结果能力中清除X位值。此因这使得能够实现图10中所示的两个转换420、425。特别地,在两种情况下,使用PCC内的可执行、不可修改的能力450来创建不可执行但可修改的结果能力455。这为转换420提供了特别有趣的效果,其中PCC 450是可执行且不可修改的,并且仅当在PCC寄存器80中时才是可读的,但由此生成的结果能力455现在是可修改的并且完全可读的(如根据将图9中所示的XRW状态“110”与状态“010”进行比较而显而易见的)。
图12示出了根据一个实施例的具有链路指令的分支的操作。如图12所示,具有链路指令的分支的执行中涉及两个单独过程。首先根据当前程序计数器能力500生成返回地址能力517。在一个实施例中,这将涉及提取指针值505,并且经由添加操作510将指令大小添加到该指针值以便生成返回地址指针515。随后将所有范围和权限信息复制到返回地址能力中,该返回地址能力在一个实施例中被存储在能力链路寄存器(CLR)中。CLR可以以各种方式提供,但在一个实施例中是通用能力寄存器中的特定一个通用能力寄存器,例如C30。由于有效程序计数器能力500将是可执行且不可修改的,这意味着返回地址能力也是不可修改的,因此通过确保返回地址能力在其被用作返回地址之前不能被调整来提供增强的安全性。
一旦已经产生了返回地址能力,则能力寄存器CN 520的内容被复制到PCC寄存器80中以形成新的程序计数器能力525。在适当的时候,可以执行返回指令以从分支返回,此时PCC将用CLR的内容进行更新。因为CLR能力是不可修改的,这将确保该返回地址能力在干预期间不被篡改。
图13是示意性地示出在通用能力寄存器中建立不可修改的能力,该不可修改的能力随后可以如何用于提供具有仅在执行分支指令时能够用作入口点能力的能力的过程的图。特别地,如方块565所指示,假设能力550具有其X位经设置,其W位全部被清除,并且至少一个R位经设置。如从先前描述的图9中将显而易见的,这基本上意味着该能力是不可修改、可执行的(仅当该能力被放置于PCC寄存器80内时才是相关的),并且仅当在PCC寄存器80中时是可读的。因此,在通用能力寄存器CN中,该能力550是不可读或不可写入,并且不可修改的。因此该能力仅可以由已经被赋予该能力的过程使用,作为可以经由分支指令加载到PCC中的能力。
当随后执行分支指令以便将能力寄存器CN的内容加载到PCC寄存器80中时,这导致更新的程序计数器能力560,该能力的X位、W位和R位的集合570对应于源能力550的字段565内的这些位。尽管X、W和R权限位都没有发生变化,但是因为该能力现在是程序计数器能力,该能力是可执行的,因此允许提取指令,但对于相应的R位经设置的类型的任何读取操作也是可读的。
这意味着现在可以使用PCC 560从存储器中读取“文字”。例如,可以使用加载指令来将从PCC导出的地址指定为源地址,其中结果被存储在整数存储器Xn中的一个内。当从PCC 560导出地址时,若地址在可允许范围内,并且所论述的读取操作的类型具有经设置的相关联的R权限位,则可以执行加载操作以便从导出的地址加载文字数据,并将该数据存储在寄存器Xn内。
在一个实施例中,处理电路可以被布置为始终使用替代诠释。然而,处理电路的其他示例也可以使用相同的能力,但根据默认诠释来诠释这些示例,因为在本文描述的机制不涉及所使用的权限位的任何变化,因此提供了与使用默认诠释的现有系统的向后兼容性。
在另一个实施例中,处理电路可以能够选择性地从使用默认诠释切换到替代诠释,并且反之亦然,并且如图1所示,配置位90可以作为控制信息的一部分而提供给处理电路,其中配置位的值决定处理电路是使用默认诠释还是替代诠释。该配置位的设置可能限于在处理电路上执行的特定类型的代码。例如,安全代码、或操作系统或管理程序,可以经布置来在某些情况下改变配置位。
图14示出了可以使用的虚拟机实施方式。尽管先前描述的实施例在用于操作支持相关技术的特定处理硬件的装置和方法方面实施本发明,但是还可以提供硬件设备的所谓虚拟机实施方式。这些虚拟机实施方式在运行支持虚拟机程序610的主操作系统620的主处理器630上运行。通常,需要大型的强大处理器来提供以合理速度执行的虚拟机实施方式,但是在某些情况下此类方法可以经调整,例如当需要为了兼容性或重复使用原因而运行产生自另一处理器的代码时。虚拟机程序610可以存储在计算机可读存储介质(其可以是非暂态介质)上,并且向应用程序600提供应用程序编程接口(指令执行环境),该应用程序编程接口与应由实际硬件提供的应用程序编程接口相同,该实际硬件是由虚拟机程序610模型化的设备。上述用于诠释能力的权限的技术可以在虚拟机环境内实施。例如,在虚拟机中运行或控制虚拟机的软件可以利用实施此类特征的硬件。
上述实施例提供了用于将一个或多个额外权限编码到能力中而不消耗额外权限位的机制。现有权限位的逻辑组合可以用于使权限的扩展集能够被编码。在一个实施例中,这涉及重复使用冗余编码以避免浪费稀缺权限位来编码一个或多个额外权限,但同时仍然保持期望的行为。此外,维持单调递减的权限模型。特别地,无论是使用默认诠释还是使用替代诠释,当能力被标识为可修改时各个权限位仅能够从设置值改变为清除值,并且因此受能力约束的过程不能够将该能力内已经被清除的任何权限位恢复到设置状态。
在一个特定实施例中,添加的额外权限是可修改权限,从而使得能力的可修改性能够在逐能力基础上表示。这可以在基于能力的系统内提供增强的灵活性和安全性。可选地,可修改权限可以改变用于根据保持在PCC寄存器中的能力生成能力的某些指令的行为,包括但不限于将可修改权限运送到由分支和链路指令生成的能力中例如以产生不可修改的返回地址,和/或从由PC相对地址计算(ADR)指令生成的能力中移除可执行权限。
此外,通过选择性地清除权限位可以适应某些有用的行为。例如,从具有X权限位经设置的能力清除所有写入权限位将使该能力从可修改且不可执行改变为不可修改且可执行。作为另一个示例,例如经由使用ADR指令从具有至少一个可读权限位经设置的能力中清除执行权限位将使能力从不可修改、不可读改变为可修改且可读的。
此外,在使用可选配置位90的实施例中,可以通过使处理电路回复到默认诠释来禁用可修改权限的效果,在默认诠释中各个权限位中的每一者具有相关联的权限,并且没有阻止修改能力的这些权限位的组合。当使用此类默认诠释时,对修改能力的任何限制通常将在更全局规模上表示,例如参考一些通用控制信息表示。
通过使用替代诠释,在权限位的逻辑组合用于限定权限扩展集的状态的情况下,这允许与各个能力相关联地指定更强的(更受约束的)权限,而不需要增加所使用的权限位的数量。
在本申请中,词语“经配置为......”用于标识装置的组件具有能够进行所限定的操作的配置。在此上下文中,“配置”意味着硬件或软件的互连安排或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者处理器或其他处理设备可以经程序化以执行该功能。“经配置为”并非暗示装置组件需要以任何方式改变以提供所限定的操作。
尽管已经参照附图详细描述了本发明的说明性实施例,但是应该理解的是,本发明不限于这些精确的实施例,并且可以由本领域中技术人员在其中实现各种改变、添加和修改,而不脱离如所附权利要求所限定的本发明的范围和精神。例如,在不脱离本发明的范围的情况下,可以利用独立权利要求的特征来与从属权利要求的特征进行各种组合。

Claims (19)

1.一种装置,包括:
处理电路,用于执行指令以执行操作;以及
能力存储组件,能由所述处理电路访问并且被布置为存储能力,所述能力用于约束所述处理电路在执行所述指令时执行的至少一个操作,所述能力标识数目为N个的多个默认权限,所述默认权限的状态是根据默认诠释从所述能力中提供的N个权限标志来确定的,根据所述默认诠释,每个权限标志与所述默认权限中的一个默认权限相关联;
所述处理电路被布置为根据替代诠释来分析所述能力,以根据所述N个权限标志的逻辑组合来导出权限的扩展集的状态,所述扩展集包括至少N+1个权限,
其中,权限的所述扩展集包括所述数目为N个的多个默认权限和至少一个额外权限。
2.如权利要求1所述的装置,其中,当权限具有设置状态时,所述处理电路受制于任何覆写控制信息、针对所述能力被授予该权限,并且当权限具有清除状态时,所述处理电路针对所述能力撤销该权限。
3.如权利要求1或2所述的装置,其中,权限的所述扩展集包括可修改权限,所述可修改权限当处于清除状态下时指示不能通过一个或多个能力修改指令来修改所述能力。
4.如权利要求3所述的装置,其中,受制于防止修改的任何覆写控制信息,所述可修改权限当处于设置状态下时允许在所述能力中提供的所述N个权限标志从设置值转换为清除值。
5.如权利要求1、2、4中任一项所述的装置,其中,所述数目为N个的多个默认权限包括:
一个或多个存储器访问权限,用于标识在清除状态下时所述能力被防止由一个或多个存储器访问操作用于访问存储器中的数据;以及
可执行权限,用于标识在清除状态下时所述能力在形成程序计数器能力时被防止用于从存储器提取指令。
6.如权利要求5所述的装置,其中,所述一个或多个存储器访问权限包括:至少一个写入权限,用于标识所述能力是否被防止用于执行对于所述存储器的至少一个类型的写入操作;以及至少一个读取权限,用于标识所述能力是否被防止用于执行从所述存储器的至少一个类型的读取操作。
7.如权利要求4所述的装置,其中:
所述多个默认权限包括可执行权限,用于标识在清除状态下时所述能力在用作程序计数器能力时被防止用于从所述存储器提取指令;并且
根据所述N个权限标志的所述替代诠释,所述能力被防止所述可执行权限和所述可修改权限两者均处于设置状态下。
8.如权利要求7所述的装置,其中:
所述多个默认权限进一步包括:至少一个写入权限,用于标识所述能力是否被防止用于执行对于所述存储器的至少一个类型的写入操作;以及至少一个读取权限,用于标识所述能力是否被防止用于执行从所述存储器的至少一个类型的读取操作;
所述N个权限标志包括至少一个写入位、至少一个读取位、以及执行位,这些位的值根据所述默认诠释分别标识所述至少一个写入权限、所述至少一个读取权限、以及所述执行权限的状态;并且
根据所述替代诠释,所述处理电路被布置为当至少一个写入位被设置或者所述执行位被清除时,确定所述可修改权限处于所述设置状态下。
9.如权利要求8所述的装置,其中:
根据所述替代诠释,所述处理电路被布置为当所述执行位被设置并且所有所述至少一个写入位被清除时,确定所述可执行权限处于所述设置状态下。
10.如权利要求8或9所述的装置,其中:
对于每个读取权限,根据所述替代诠释,所述处理电路被布置为当相关联的读取位被设置,并且要么所述可修改权限处于所述设置状态下要么所述能力被用作程序计数器能力时,确定所述读取权限处于所述设置状态下。
11.如权利要求8或9所述的装置,其中:
所述处理电路被布置为响应于执行地址生成指令以根据程序计数器能力生成结果能力,来清除所述结果能力内的所述执行位。
12.如权利要求11所述的装置,其中,当所述程序计数器能力使得所述执行位被设置并且所有所述至少一个写入位被清除时,对所述结果能力中的所述执行位的所述清除使得所述结果能力根据所述替代诠释而被视为使得:其可修改权限处于所述设置状态下,并且每个读取权限处于由所述相关联的读取位所指示的状态下。
13.如权利要求8、9、12中任一项所述的装置,其中:
所述处理电路响应于执行具有链路指令的分支以根据程序计数器能力生成返回地址能力,使得当所述可修改权限在所述程序计数器能力内处于所述清除状态下时,所述返回地址能力也使得其可修改权限处于所述清除状态下。
14.如权利要求8、9、12中任一项所述的装置,进一步包括:
至少一个额外的能力存储组件,所述至少一个额外的能力存储组件与所述能力存储组件组合形成程序计数器能力存储组件和一个或多个通用能力存储组件;
当存储在所述一个或多个通用能力存储组件中的一个通用能力存储组件中的能力使得所述执行位被设置、所述读取位中的至少一个读取位被设置、并且所有所述至少一个写入位被清除时,所述处理电路根据所述替代诠释而被约束为仅使用所述能力来形成要存储在所述程序计数器能力存储组件中的新程序计数器能力;并且
一旦所述能力被存储在所述程序计数器能力存储组件中,所述新程序计数器能力根据所述替代诠释而被视为使得每个读取权限在所述设置状态下,该读取权限的相关联的读取位被设置,从而使得文字值能够由所述处理电路从存储器中读取。
15.如权利要求1-2、4、6-9、12中任一项所述的装置,进一步包括:
配置存储组件,用于存储指示所述默认诠释和所述替代诠释中的哪一个将由所述处理电路应用的配置值。
16.如权利要求1-2、4、6-9、12中任一项所述的装置,其中,所述能力是有界指针,并且所述权限被用来控制所述处理电路对在所述能力内指定的指针值的使用。
17.一种诠释装置中与能力相关联的权限的方法,所述装置包括:处理电路,用于执行指令以执行操作;以及能力存储组件,能由所述处理电路访问并且被布置为存储所述能力,所述能力用于约束所述处理电路在执行所述指令时执行的至少一个操作,所述能力标识数目为N个的多个默认权限,并且所述方法包括:
在所述能力内提供N个权限标志,使得所述默认权限的状态是根据默认诠释从所述N个权限标志来确定的,并且每个权限标志与所述默认权限中的一个默认权限相关联;以及
根据替代诠释来分析所述能力,以根据所述N个权限标志的逻辑组合来导出权限的扩展集的状态,所述扩展集包括至少N+1个权限,
其中,权限的所述扩展集包括所述数目为N个的多个默认权限和至少一个额外权限。
18.一种装置,包括:
处理装置,用于执行指令以执行操作;以及
能力存储组件装置,用于由所述处理电路访问并且用于存储能力,所述能力用于约束所述处理电路在执行所述指令时执行的至少一个操作,所述能力标识数目为N个的多个默认权限,所述默认权限的状态是根据默认诠释从所述能力中提供的N个权限标志来确定的,根据所述默认诠释,每个权限标志与所述默认权限中的一个默认权限相关联;
所述处理装置用于根据替代诠释来分析所述能力,以根据所述N个权限标志的逻辑组合来导出权限的扩展集的状态,所述扩展集包括至少N+1个权限,
其中,权限的所述扩展集包括所述数目为N个的多个默认权限和至少一个额外权限。
19.一种计算机可读存储介质,存储虚拟机计算机程序,所述虚拟机计算机程序包括用于控制主数据处理装置来提供与如权利要求1至16中的任一项所述的装置相对应的指令执行环境的程序指令。
CN201880032317.XA 2017-05-25 2018-04-27 用于诠释与能力相关联的权限的装置及方法 Active CN110663024B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB201708393A GB2563009B (en) 2017-05-25 2017-05-25 An apparatus and method for interpreting permissions associated with a capability
GB1708393.2 2017-05-25
PCT/GB2018/051117 WO2018215734A1 (en) 2017-05-25 2018-04-27 An apparatus and method for interpreting permissions associated with a capability

Publications (2)

Publication Number Publication Date
CN110663024A CN110663024A (zh) 2020-01-07
CN110663024B true CN110663024B (zh) 2023-11-17

Family

ID=59270921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880032317.XA Active CN110663024B (zh) 2017-05-25 2018-04-27 用于诠释与能力相关联的权限的装置及方法

Country Status (9)

Country Link
US (1) US11023237B2 (zh)
EP (1) EP3631621B1 (zh)
JP (1) JP7280195B2 (zh)
KR (1) KR102533823B1 (zh)
CN (1) CN110663024B (zh)
GB (1) GB2563009B (zh)
IL (1) IL270499B (zh)
TW (1) TWI783996B (zh)
WO (1) WO2018215734A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
WO2022199807A1 (en) * 2021-03-24 2022-09-29 Huawei Technologies Co., Ltd. Device and method for managing resource access

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325496A (en) * 1991-12-24 1994-06-28 Intel Corporation Selectable pointer validation in a computer system
US8234477B2 (en) * 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US9361243B2 (en) * 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7444668B2 (en) * 2003-05-29 2008-10-28 Freescale Semiconductor, Inc. Method and apparatus for determining access permission
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
GB2482700A (en) 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
US20130111168A1 (en) * 2011-10-27 2013-05-02 Freescale Semiconductor, Inc. Systems and methods for semaphore-based protection of shared system resources
EP2954419B1 (en) * 2013-02-05 2017-03-29 ARM Limited Virtualisation supporting guest operating systems using memory protection units
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
GB2514107B (en) * 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds

Also Published As

Publication number Publication date
TW201901423A (zh) 2019-01-01
GB2563009A (en) 2018-12-05
EP3631621A1 (en) 2020-04-08
US20200142700A1 (en) 2020-05-07
EP3631621B1 (en) 2022-10-26
WO2018215734A1 (en) 2018-11-29
IL270499B (en) 2022-06-01
JP2020521222A (ja) 2020-07-16
KR20200011438A (ko) 2020-02-03
CN110663024A (zh) 2020-01-07
KR102533823B1 (ko) 2023-05-18
GB2563009B (en) 2019-12-25
JP7280195B2 (ja) 2023-05-23
GB201708393D0 (en) 2017-07-12
US11023237B2 (en) 2021-06-01
TWI783996B (zh) 2022-11-21

Similar Documents

Publication Publication Date Title
CN110663024B (zh) 用于诠释与能力相关联的权限的装置及方法
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
KR20180136976A (ko) 자격 메타데이터에 대해 연산을 행하는 장치 및 방법
JP7280196B2 (ja) 機能ドメインを管理するための装置及び方法
JP7445431B2 (ja) 命令の実行を制御する装置および方法
JP2020523680A (ja) 命令セット内の変更を制御する装置及び方法
KR20230170976A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
TW202340955A (zh) 使用能力約束記憶體存取之技術
CN117222990A (zh) 用于使用能力约束对存储器的访问的技术
CN112106029A (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