CN110709817A - 用于控制指令集中改变的设备与方法 - Google Patents

用于控制指令集中改变的设备与方法 Download PDF

Info

Publication number
CN110709817A
CN110709817A CN201880037975.8A CN201880037975A CN110709817A CN 110709817 A CN110709817 A CN 110709817A CN 201880037975 A CN201880037975 A CN 201880037975A CN 110709817 A CN110709817 A CN 110709817A
Authority
CN
China
Prior art keywords
capability
identified
instruction set
processing circuitry
program counter
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
CN201880037975.8A
Other languages
English (en)
Other versions
CN110709817B (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 Co Ltd
Original Assignee
ARM Co 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 Co Ltd filed Critical ARM Co Ltd
Publication of CN110709817A publication Critical patent/CN110709817A/zh
Application granted granted Critical
Publication of CN110709817B publication Critical patent/CN110709817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • 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/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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register

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 Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Processing Or Creating Images (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

本文提供了一种用于控制指令集改变的设备与方法。该设备具有用于执行指令集的指令的处理电路,该处理电路经被布置以在能力域中操作,该能力域包含用以限制由该处理电路在执行指令时执行的操作的能力。程序计数器能力存储单元用于存储由处理电路使用以判定程序计数器值的程序计数器能力。处理电路被布置以采用基于能力的机制来改变指令集。特别地,响应于执行用于将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令,该处理电路被布置以调用基于能力的机制,以对所识别的能力执行能力检查操作,并且若通过该能力检查操作,则使指令集由来自所识别的能力的指令集识别符字段来识别。这提供了允许改变指令集的受控机制,由此减轻无意或恶意尝试改变指令集的风险。

Description

用于控制指令集中改变的设备与方法
技术领域
本技术涉及数据处理领域。
背景技术
基于能力(capability)的架构越来越受到关注,其中某些能力针对给定过程定义,且若尝试进行定义能力之外的操作,则可能触发错误。这些能力可采取各种形式,但一种类型的能力是有界指针(也可被称为“胖指针(fat pointer)”)。
当设备的处理电路经布置以执行一系列指令时,能力可用以限制由处理电路在执行这些指令时执行的操作。例如,通过此类方法,可能通过确保内存存取关于与某些能力相关的范围和权限信息而受限来有效监视由处理电路进行的内存存取。此类方法可用以不仅限制在内存中存取的数据,也用以限制可撷取指令以用于执行的地址范围。
一些处理器可能能够执行来自不同指令集的指令,并且由此可维持控制信息以识别当前指令集,其中在决定切换操作以执行不同指令集时改变控制信息。
然而,在基于能力的架构内,改变指令集的能力可潜在地破坏可经由使用能力而获得的一些安全性益处。特别地,改变指令集改变了从内存提取的指令数据的解释,并因此可改变在内存中保存的只读代码的解释。将期望减轻无意或恶意尝试改变基于能力的系统内的指令集的可能性。
发明内容
在第一示例配置中,提供了一种设备,包含:处理电路,用以执行指令集的指令,该处理电路经布置以在能力域中操作,该能力域包含用以限制由处理电路在执行所述指令时执行的操作的能力;以及程序计数器能力存储单元,用以存储由处理电路使用以判定程序计数器值的程序计数器能力;该处理电路经布置以采用基于能力的机制来改变指令集,响应于执行用以将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令,该处理电路经布置以调用基于能力的机制以对所识别的能力执行能力检查操作,并且若通过该能力检查操作,则使指令集由来自所识别的能力的指令集识别符字段来识别。
在另一示例配置中,提供了一种控制设备内的指令集改变的方法,该设备具有用以执行当前指令集的指令的处理电路,该处理电路经布置以在能力域中操作,该能力域包含用以限制由该处理电路在执行所述指令时执行的操作的能力,该方法包含:在程序计数器能力存储单元中存储由处理电路使用以判定程序计数器值的程序计数器能力;布置该处理电路以响应于执行用以将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令,调用基于能力的机制以控制当前指令集的改变,该基于能力的机制包含:对所识别的能力执行能力检查操作;以及若通过该能力检查操作,则使指令集由来自所识别的能力的指令集识别符字段来识别。
在另一示例配置中,提供了一种设备,包含:处理装置,用于执行指令集的指令,该处理装置用于在能力域中操作,该能力域包含用以限制由处理装置在执行指令时执行的操作;以及程序计数器能力存储单元装置,用以存储由处理装置使用以判定程序计数器值的程序计数器能力;该处理装置采用基于能力的机制来改变指令集,响应于执行用以将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令,该处理装置用于调用基于能力的机制以便对所识别的能力执行能力检查操作,并且若通过该能力检查操作,则使指令集由来自所识别的能力的指令集识别符字段来识别。
在又一示例配置中,提供了一种虚拟机计算机程序,该虚拟机计算机程序包含程序指令,该程序指令用以控制主数据处理设备以提供对应于上文所论述的第一示例配置的设备的指令执行环境。在一个实施例中,可提供一种计算机可读取存储介质以用于存储虚拟机计算机程序。
附图说明
本技术将仅以举例方式参考在附图中所图示的本技术的实施例进一步描述,在附图中:
图1是根据一个实施例的设备的框图;
图2图示了若尝试设定或存取一组有界指针存储单元内的指针值则可能触发错误的指令类型的实例,其中该指针值用于指定在由相关范围信息所指示的范围之外的地址;
图3图示了根据一个实施例的与有界指针相关联的卷标位的使用;
图4示意性图示了根据一个实施例的指令集识别符字段可如何结合在能力内;
图5是根据一个实施例的图示经执行以用以实施基于能力的机制来控制指令集改变的步骤的流程图;
图6是根据一个实施例提供在将能力加载到程序计数器能力存储单元中之前执行能力检查的情况下用于控制指令集改变的基于能力的机制的更多细节的流程图;
图7是根据一个实施例提供在将能力加载到程序计数器能力存储单元中之后执行能力检查的情况下用于控制指令集改变的基于能力的机制的更多细节的流程图;
图8是根据一个实施例的图示在能力检查操作期间执行的步骤的流程图;
图9A及图9B图示了用于当执行分支指令以将能力加载到程序计数器能力存储单元中时使用指令集识别符字段信息的两种替代方法;
图10是图示在一些实施例中也可用于允许指令集改变的基于异常的机制的流程图;以及
图11图示了可使用的虚拟机实施方式。
具体实施方式
在参考附图论述实施例之前,提供了实施例的以下描述。
如先前提及,基于能力的架构越来越受关注,其中某些能力针对给定过程定义,且若尝试进行定义能力之外的操作,则可能触发错误。可定义各种类型的能力,但一种类型的能力是有界指针(其在一个实施例中结合指针值与相关范围及权限信息)。
采用此基于能力的架构的设备将通常具有存储单元(本文也称为有界指针存储单元,或更一般为能力存储单元),这些存储单元用于存储能力。存储单元可以是寄存器(本文也称为有界指针寄存器或能力寄存器)及/或可以是在通用内存中的内存位置,例如在堆栈内存上的位置。某些指令可用于引用此等存储单元以便存取所需能力,并取决于能力而执行操作。例如,考虑到有界指针,执行此类指令可使该有界指针被撷取,并且使有界指针中的指针值随后被用以导出在执行该指令期间所需的内存中的地址。指针值可直接用于识别内存地址,或可用于导出该内存地址,例如,通过向指针值增加偏移。若内存地址是在由范围信息指定的范围内且满足在权限信息中指定的任何权限,则将允许进行该操作。
因此,当使用有界指针时,例如,指针值本身可指向或用于判定待存取的数据值的地址或待提取以用于执行的指令。然而,范围及权限信息可随后被引用以例如确保所存取的任何地址是在可允许范围内,并且出于所允许的目的而存取。此可用来例如确保根据指针判定的地址保留在特定边界内以维持行为的安全性或功能正确性。通过此方法,可能有效监视由处理电路进行的内存存取。
然而,在支持多个指令集的使用的系统中,则改变指令集的能力可潜在地规避经由使用这些能力而提供的一些保护。特别地,一旦已改变指令集的指示,从内存提取的指令数据的解释将为不同的。因此,尽管基于能力的架构可限制可提取指令的地址范围,改变指令集的无意或恶意尝试可使处理电路如由基于能力的架构的限制所允许地合理提取第一指令集的指令,但使处理电路随后试图根据第二指令集解释所提取的指令,从而潜在地实现处理器的不期望的操作行为。
本文所述的实施例试图提供一种用于改变指令集的受控机制,以试图减少无意或恶意尝试改变指令集的能力。
在一个实施例中,设备具有用于执行指令集的指令的处理电路,该处理电路经布置以在能力域中操作,该能力域包含用以限制由处理电路在执行指令时执行的操作的能力。该能力域包含当前常驻在由处理电路可存取的能力存储单元中的能力以及经由保存在这些能力存储单元中的能力可存取的任何其他能力形成的一组能力。能力存储单元之一者是程序计数器能力存储单元,该程序计数器能力存储单元用于存储由处理电路使用以判定程序计数器值的程序计数器能力。程序计数器值随后用于识别指令所提取自的内存中的地址。
在所述的实施例中,处理电路可经布置以采用基于能力的机制来改变指令集。特别地,响应于执行用于将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令,该处理电路经布置以调用基于能力的机制,以便对所识别的能力执行能力检查操作。作为执行能力检查操作的结果,若通过能力检查操作,则此使指令集由来自所识别的能力的指令集识别符字段来识别。
由于采用此基于能力的机制,当处理电路试图通过执行指令以将所识别的能力加载到程序计数器能力存储单元中而更新程序计数器能力时,必须在允许所识别的能力中的指令集识别符字段识别指令集之前通过能力检查操作。当通过能力检查操作时,此机制因此允许改变指令集,但若未通过能力检查操作,则将阻止此指令集的更新,且替代地,将采取替代动作,例如通过采取异常。
能力检查操作的时序可根据实施例而变化。例如,在一个实施例中,处理电路可经布置以在将识别的能力加载到程序计数器能力存储单元之前对所识别的能力执行能力检查操作。作为此方法的结果,在决定是否允许将所识别的能力加载到程序计数器能力存储单元中之前,通过还是未通过能力检查操作是已知的。
然而,在替代实施例中,处理电路可经布置以在将识别的能力加载到程序计数器能力存储单元中之后对所识别的能力执行能力检查操作。此可避免执行将所识别的能力加载到程序计数器能力存储单元中的指令的任何延迟,同时仍确保在执行能力检查操作之前不依赖更新的程序计数器能力。例如,一旦执行下一个指令,此就可触发能力检查操作的执行,因此避免在判定是否通过能力检查操作之前使用更新的程序计数器能力的任何细节,并且因此特别地,如可由来自所识别的能力的指令集识别符字段所指示,避免根据改变的指令集来解释任何提取的指令,除非判定已经通过能力检查操作。
存在处理电路可经布置以当侦测到能力检查操作未通过时采取的数个动作,但在一个实施例中处理电路经布置以发生异常。在一个实施例中,此可例如使软件异常处置器记录关于能力检查操作未通过的某些信息,并且随后将控制转移至适当错误处置例程以处理所尝试的指令集改变。尽管错误处置例程可采取各种步骤,但是在一个实施例中可选择终止试图调用指令集改变的应用程序,因为如先前在一个实施例中所提及,高度期望严格控制改变指令集的能力,以减轻用于试图规避通过使用能力而提供的保护的指令集改变的可能性。
尽管在一个实施例中,异常可响应于侦测到能力检查操作未通过而立即发生,但是在一个替代实施例中标记可经设定以识别能力检查操作的未通过,其中标记目标设定使异常在执行下一个指令时发生。此允许某些事件在侦测到未通过条件并设定标记目标时间与发生异常的时间之间发生。例如,其可允许发生较高优先级的异常/中断,该异常/中断保存标记信息及程序计数器能力(program counter capability;PCC)信息,并随后清除标记并将不同的程序计数器能力加载到程序计数器能力存储单元中。在从较高优先级的异常/中断返回时,标记及PCC信息将随后恢复,且当要执行下一个指令时,设定标记目标存在将使异常发生。
用于将所识别的能力加载到程序计数器能力存储单元中的至少一种类型的指令可采取各种形式,但在一个实施例中指令是分支指令,使得处理电路经布置以通过执行指定所识别的能力的分支指令来调用基于能力的机制。
分支指令可采取各种形式。例如,其可为经由源操作数明确地识别所识别的能力的分支指令。例如,设备将通常包含一或多个能力存储单元,这些能力存储单元是处理电路可存取的,并且经布置以存储用于限制由处理电路在执行指令时执行的操作的能力。分支指令可随后将这些能力存储单元的一者指定为源操作数,其中所指定的能力存储单元随后含有所识别的能力。
在其他实例中,分支指令可隐含地识别所识别的能力。例如,分支指令可采取返回指令的形式,该返回指令经执行以将形成所识别的能力的返回地址能力加载到程序计数器能力存储单元中。通常,返回指令不需要明确地识别返回地址能力,因为将存在含有返回地址能力的默认存储单元,在一个实例中此被称为能力异常链接寄存器(capabilityexception link register;CELR)。
能力检查操作可采取各种形式,且因此以举例的方式,可在执行能力检查操作期间引用所识别的能力内的各种不同的字段,以决定通过还是未通过能力检查操作。例如,在一个实施例中,处理电路可经布置以当执行能力检查操作时检查与所识别的能力相关的有效标记,以便防止通过能力检查操作,除非所识别的能力为有效能力。因此,无论处理电路何时试图使用不表示有效能力的信息来更新程序计数器能力存储单元内容,此将使不通过能力检查操作。
替代或另外地,能力检查操作可经布置以引用在所识别的能力内提供的一或多个权限标记。特别地,所识别的能力将通常包含一或多个权限标记,这些权限标记用以识别与所识别的能力相关的一或多个权限的状态。例如,权限可用于将能力的使用限制至处理电路的某些类型的操作、某些模式的操作等等。不同权限也可与所存取的不同类型的信息相关,使得例如不同的写入及读取权限可根据所存取的信息本身为能力还是正常数据值而设定。
在此等实施例中,处理电路可经布置以当执行能力检查操作时检查一或多个权限标记,以便防止通过能力检查操作,除非至少一个权限处于预定的状态。
通过此类方法,可能将改变指令集的能力限制为所识别的能力具有处于特定状态下的至少一种权限的情况。作为一个实例,至少一种权限可包含可执行权限,根据防止使用所识别的能力从内存提取指令的任何覆写控制信息,该可执行权限用于识别当用作程序计数器能力时是否允许所识别的能力用于从内存提取指令,并且预定状态为设定状态,该设定状态指示允许所识别的能力用于从内存提取指令。在一个实施例中,若可执行权限处于清除状态,则此将识别当形成程序计数器能力时防止该能力用于从内存提取指令。因此,此将识别能力不适于用作程序计数器能力,并因此若指令正试图将能力加载到程序计数器能力存储单元中,则能力检查操作可在一个实施例中不通过,从而防止识别的能力内的指令集识别符字段的内容用于识别指令集。
作为可如何检查权限标记目标另一实例,至少权限可包含可修改权限,该可修改权限用于识别所识别的能力是否可由一或多个能力修改指令来修改,且预定状态为清除状态,该清除状态指示能力不可由该一或多个能力修改指令来修改。当所识别的能力经标记为不可修改时,此可提供额外保证:在建立能力(例如,通过在特定特权级别操作的过程)与随后试图将能力加载到程序计数器能力中的过程(可能不处于特权级别)之间的时期,指令集识别符字段的内容尚未被篡改。
在通过能力检查操作的情况下来自所识别的能力的指令集识别符字段的内容可用于识别该指令集的数种方式。在一个实施例中,当通过能力检查操作时,处理电路经布置以使所识别的能力(包括指令集识别符字段)用于形成程序计数器能力存储单元中的新的程序计数器能力。此外,在新的程序计数器能力中的指令集识别符字段的值用于判定该指令集。因此,在此等实施例中,当前指令集由程序计数器能力内的相关指令集识别符字段的内容来识别。
然而,在替代实施例中,当通过能力检查操作时,处理电路经布置以使所识别的能力用于形成程序计数器能力存储单元内的新的程序计数器能力,但其中新的程序计数器能力中的字段对应于设定为默认值的指令集识别符字段。处理电路进一步使将所识别的能力的指令集识别符字段内的值写入指令集控制存储单元中,且在指令集控制存储单元内的值用于判定该指令集。因此,在此实施例中,随着将所识别的能力加载到程序计数器能力存储单元中,将指令集识别符字段的内容提取并写入指令集控制存储单元中。因此,在此等实施例中,指令集控制存储单元的内容用于判定当前指令集。
指令集控制存储单元可采取各种形式,但在一个实施例中由当前处理器状态寄存器(current processor state register;CPSR)内的字段来提供。
在一个实施例中,用于改变指令集的先前描述的基于能力的机制可为经提供以允许改变指令集的唯一机制。然而,在替代实施例中,处理电路可进一步提供基于异常的机制以改变指令集,在调用基于异常的机制时,处理电路经布置以将异常采取为预定状态,其中随后执行可信软件以建立返回状态,该返回状态识别在从异常返回时使用的指令集。因此,通过此方法,可能使用可信异常/异常返回机制以触发使用可信软件来修改指令集。
尽管一个或多个进一步的受控机制也可提供以用于改变指令集,在一个特定实施例中,处理电路可受到限制以仅允许通过使用基于能力的机制或基于异常的机制来改变指令集。通过严格限制可改变指令集的方式,此提供了无意或恶意尝试试图改变指令集的增加的弹性,该弹性可潜在地规避经由使用能力而将一个或多个安全措施放置就位。
现将参考图式描述特定实施例。
图1示意性地图示了包含用于处理指令的处理管线4的数据处理设备2的实例。在此实例中,处理管线4包括数个管线阶段,这些管线阶段包括提取阶段6、译码阶段8、发出阶段10、运行时间12、及写回阶段14,但应了解可提供其他类型的阶段或各阶段的组合。例如,用于执行寄存器重命名的重命名阶段可包括在一些实施例中。待处理的指令在各阶段之间移动,并且当指令于一个阶段待定时,另一指令可于管线4的不同阶段待定。
提取阶段6从1阶(L1)指令高速缓存20提取指令。提取阶段6通常可顺序地从连续指令地址提取指令。然而,提取阶段也可具有用于预测分支指令的结果的分支预测器22,且若预测采取分支,则提取阶段6可从(非顺序)分支目标地址提取指令,或若预测不采取分支,则提取阶段6从下一顺序地址提取指令。分支预测器22可包括一个或更多个用于存储信息的分支历史表,以用于预测是否能采取某些分支。例如,分支历史表可包括用于追踪先前执行的分支的实际结果或表示对分支进行的预测的置信度的计数器。分支预测器22也可包括用于高速缓存分支指令的先前目标地址的分支目标地址高速缓存(branch targetaddress cache;BTAC)24,以使得可在后续遇到相同分支指令时预测此等先前目标地址。
提取的指令经传递到译码这些指令以产生经译码的指令的译码阶段8。经译码的指令可包含用于控制运行时间12以执行适当处理操作的控制信息。针对从高速缓存20提取的一些更复杂的指令,译码阶段8可将这些指令映像至多个经译码的指令,此映像可已知为微操作(μops或uops)。因此,在从L1指令高速缓存20提取的指令与由管线的随后阶段看到的指令之间可能不存在一对一关系。一般而言,在本申请中提及“指令”应解释为包括微操作。
将经译码的指令传递到发出阶段10,发出阶段10判定执行指令所需的操作数是否可用,并且当操作数是可用时,发布用于执行的指令。一些实施例可支持有序处理,因此指令经发布以用于按与指令从L1指令高速缓存20提取的程序顺序对应的顺序执行。其他实施例可支持无序执行,使得可将指令以与程序顺序不同的顺序发出至运行时间12。无序处理可用来改良效能,因为尽管当等待操作数时停止较早指令,但是可以按照程序顺序首先执行操作数是可用的稍后指令。
发出阶段10将指令发出至运行时间12,其中执行这些指令以进行各种数据处理操作。例如,运行时间可包括数个执行单元30、32、34,包括对整数值进行算术或逻辑运算的算术/逻辑单元(arithmetic/logic unit;ALU)30、对以浮点形式表示的值进行操作的浮点(floating-point;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,在此实例中该特定有界指针寄存器PR1是使用定义可允许范围下边界的下边界地址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之外,程序计数器能力(program counter capability;PCC)寄存器80也可用于当指令正在从1阶指令高速缓存20提取时于提取阶段6提供类似功能性。特别地,程序计数器指针可存储在字段82中,其中PCC80也提供类似于利用在该组有界指针存储单元60中的指针的每一者提供的范围及限制信息的范围信息84及任何适当的限制信息86。
此外,在一个实施例中,非有界指针也可在通用寄存器40中指定且在执行内存存取时使用。为了限制可使用此等非有界指针存取的内存地址,可提供默认数据能力(Default Data Capability;DDC)寄存器90,该默认数据能力寄存器指定了类似于包括在能力寄存器的任一者内的范围及限制信息的范围信息92及任何限制数据94二者。随后,当执行引用通用寄存器40中的非有界指针识别内存地址的内存存取指令时,仍可基于从非有界指针导出的任何地址执行类似于关于有界指针执行的边界检查操作的边界检查操作,但在此实例中关于在DDC寄存器90中保存的范围及限制信息。通过此类方法,例如对于能力感知代码而言,可能希望在现存软件库中采用一些能力不感知代码以设定DDC寄存器90,以便对当执行能力不感知代码时如何使用从通用寄存器40存取的指针进行限制。特别地,范围信息可用于限制当执行此能力不感知代码时可存取的地址范围。
由有界指针寄存器内的有界指针识别的内存地址的任何特定范围可含有数据、指令及/或其他能力(也即,其他有界指针)。因此,应了解在任一时间点处理电路存取内存的能力由一组能力定义,该组能力包含在有界指针寄存器中识别的能力及可经由在这些有界指针寄存器中保存的能力存取的任何其他能力,且此组能力在本文中将被称为能力域。
在PPC寄存器80或DDC寄存器90中指定的范围信息及任何相关限制可以各种方式设定。然而,在一个实施例中,信息使用在当前能力域中可用于处理电路的有界指针的一者或多者来判定,使得不可使用基于PCC或DDC的边界检查来存取内存地址,这些边界检查常驻在针对当前能力域识别的内存地址范围之外。
图3示意性地图标了如何与单独数据区块相关联地使用卷标位来识别这些数据区块是表示能力(也即,有界指针及相关限制信息)还是表示正常数据。特别地,内存地址空间110将存储一系列数据区块115,这些数据区块通常将具有指定的大小。仅出于说明的缘故,在此实例中假设每个数据区块包含128个位。与每个数据区块115相关联,提供了卷标字段120,卷标字段120在一个实例中是被称为卷标位的单个位字段,卷标字段120经设定以识别相关数据区块表示能力并经清除以指示相关数据区块表示正常数据,并因此不可被处理为能力。应了解,与设定或清除状态相关的实际值可取决于实施例而变化,但仅以说明的方式,在一个实施例中,若卷标位具有值1,则其指示相关数据区块是能力,且若其具有值0,则其指示相关数据区块含有正常数据。
当将能力加载有界指针寄存器60(本文也称为能力寄存器)之一(诸如图3所示的能力寄存器100)中时,则卷标位随着能力信息移动。由此,当将能力加载能力寄存器100中时,将指针102、范围信息104及限制信息106(后文称为权限信息)加载能力寄存器中。此外,与能力寄存器相关联,或作为其中的特定位字段,将设定卷标位108以识别这些内容表示能力。类似地,当将能力存储回到内存时,将与存储该能力的数据区块相关联地设定相关卷标位120。通过此方法,可能区分能力与正常数据,并因此确保正常数据无法用作能力。
在一个实施例中,设备可经布置以使得其可于不同异常等级操作,其中每个异常等级具有不同的软件执行特权。另外,异常机制可用于在复数个异常等级之间的转换。然而,在一个实施例中,并非所有的异常均将使异常等级改变。
如图1所示,设备10存取至各种控制/状态寄存器70,其存储在其操作期间由处理电路引用的各种控制及状态信息,控制/状态寄存器70包括在处置异常期间使用的各种寄存器。
如图1所示,当前处理状态74维持在控制/状态寄存器70中,以俘获关于处理器的当前操作的各种执行状态信息。尽管图示为单个块74,当前处理状态将不必皆存储在单个寄存器内,但可存储在可用控制/状态寄存器70内的数个控制及状态寄存器内。
在操作期间,异常可由各种不同的机制触发,例如中断、系统呼叫、故障等等。根据一个实施例,当采取异常时,触发异常条目机制,且在此处理期间,将当前处理状态74俘获为保存的处理状态72。再者,保存的处理状态72可存储在单个寄存器内或多个寄存器内。异常处置操作随后由处理电路执行以处理异常。当处理电路随后从异常返回时,保存的处理状态将恢复至当前处理状态,从而允许处理电路继续在采取异常之前执行的操作。
为了赋能针对多个异常等级维持的处理电路的执行状态,分开的保存的处理状态寄存器(saved process state register;SPSR)72及当前处理状态寄存器(currentprocess state register;CPSR)74可针对多个异常等级维持(若期望)。
在异常条目上,程序计数器能力寄存器80可使用存储在能力控制存储单元79中的异常条目地址能力信息来更新。特别地,寄存器79将存储关于待在异常条目上使用的适当地址的信息,以及也存储待与地址一起提供以形成待在PCC寄存器80内存储的程序计数器能力的相关能力信息。寄存器79中的异常条目地址信息可采取各种形式,但在一个实施例中,寄存器79采取能力向量基址寄存器(capability vector base address register;CVBAR)的形式。此寄存器提供了用于异常条目的基址,且异常根据异常类型判定与此基址的偏移。因此,关于异常类型的信息将用于识别适当地址以用于形成加载PCC寄存器80中的程序计数器能力,其中用于PCC寄存器的能力信息的剩余部分由CVBAR中的能力的对应部分形成。
如先前提及,在采取异常时,当前处理状态74经俘获为保存的处理状态72。此外,存储在PCC寄存器80内的当前程序计数器能力用于识别较佳的返回地址能力。较佳的返回地址将取决于异常类型,但将通常为程序计数器值,或以指令大小递增的程序计数器值(例如,假设字节大小的寻址递增了4,及32位的指令)。除了较佳的返回地址之外,来自当前程序计数器能力的剩余能力信息也将复制为由PCC产生的返回地址能力。在一个实施例中,以此方式产生的返回地址能力将存储在专用返回地址能力寄存器中,在一个特定实施例中,此为能力异常链接寄存器(capability exception link register;CELR)78。在随后从异常返回时,CELR寄存器78的内容将恢复至PCC寄存器80中,且此外,SPSR寄存器72的内容可恢复至CPSR寄存器74中以用于相关异常等级。
使用如上文所述的基于能力的系统可显著增强系统行为的安全性及功能正确性。例如,经由使用此方法,可能有效监视由处理电路进行的内存存取,以控制从内存提取以用于执行的指令及当执行这些指令时由处理器操纵的数据值二者。然而,如先前提及,一些系统允许执行来自多个指令集的指令,其中维持控制状态以识别正使用的当前指令集,并且因此识别当译码用于执行的指令时应如何解释从内存提取的指令数据。无意或恶意尝试改变指令集可规避通过使用能力而提供的一些保护,由于其可赋能在内存中保存的只读代码的解释改变。本文所述的实施例提供了用于严格控制在此设备内可如何改变指令集的机制,目的在于减轻此等风险。
图4图示了可如何利用额外字段来补充能力,该额外字段用作指令集识别符字段。特别地,假设此实例中的能力150为有界指针,因此具有指针值158以及分别地相关范围156及权限字段154。也提供卷标位152以指示相关信息是否表示有效能力。在权限字段154内编码的权限可由在这些字段内提供的数个权限标记目标状态来判定,使得权限标记目标值用于判定一个或多个权限的状态。这些权限可采取各种形式,但在一个实施例中可至少包括识别是否允许相关能力在用作程序计数器能力时用于从内存提取指令的可执行权限以及用于识别相关能力是否可由一个或多个能力修改指令来修改的可修改权限。在一个实施例中,权限可能需要与可影响权限的其他控制信息结合来解释。因此,在一个实施例中,若权限处于清除状态,则此指示权限关于能力而准予。然而,根据可影响该权限的准予的任何覆写控制信息,若权限处于设定状态,则此将在一个实施例中指示准予权限。
也如图4所示,可提供字段160以识别指令集。此字段的大小将取决于所支持的指令集的数量,但以举例的方式,若仅仅存在两个支持的指令集,则单个位字段将为足够的以赋能识别两个指令集的每一者。
尽管指令集识别符字段可为分开的专用字段,在一个实施例中其可由指针值字段的一个或多个最低有效位来形成。例如,归因于对指针值的内存对准限制,可能未使用指针值的一个或多个最低有效位,且由此这些未使用的位可用于提供指令集识别符字段。
在一个实施例中,尽管能力为通用能力寄存器60的一者内的通用能力,指令集识别符域值不具有相关性。然而,当将能力加载PCC寄存器80中以形成新的程序计数器能力时,可使用指令集识别符字段信息以识别指令集,一旦能力用作新的程序计数器能力,该指令集可应用。此因此提供了用于赋能改变指令集的简单机制。
然而,为了确保使用此指令集识别符字段来指定指令集有力克服误用,则无论指令何时用于将所识别的能力加载PCC寄存器80中,在允许使用来自所识别的能力的指令集识别符字段信息改变指令集之前,调用基于能力的机制以关于所识别的能力执行能力检查操作。
图5是提供在一个实施例中使用以控制指令集改变的基于能力的机制的一般概述的流程图。在一个实施例中,当特定类型的指令试图将所识别的能力加载到程序计数器能力寄存器80中时,触发基于能力的机制。特别地,当分支指令用于目的时,可触发基于能力的机制。由此,在步骤200,判定分支指令是否由处理器执行,其中分支指令指定能力。分支指令可特别地识别该组能力寄存器60内的源能力寄存器,其中源能力寄存器含有待加载PCC寄存器80中的所识别的能力。然而,也可在步骤200侦测到其他形式的分支指令。例如,用于在较早采取异常之后返回到一些先前代码的返回指令也可被认为是应在步骤200侦测的该类型的分支指令,由于其将再次使利用所识别的能力更新PCC寄存器80内容。在返回指令的实例中,含有所识别能力的寄存器可能不需要明确地识别,由于其可从返回指令隐含。特别地,在一个实施例中,返回指令将使将CELR寄存器78的内容加载PCC寄存器80中。
在已识别将执行用于将所识别的能力加载到程序计数器能力寄存器中的分支指令之后,过程进行至步骤205,其中针对所识别的能力执行能力检查操作。如后文将参考图6及图7所论述,能力检查操作的执行的时序可根据实施例而变化。例如,该能力检查操作可在更新PCC寄存器内容之前执行,或在已更新这些内容之后执行。然而,在一个实施例中,不论采取何种方法,执行能力检查,使得不取决于所更新的程序计数器能力及相关的指令集识别符信息而采取动作,直至已经执行能力检查,并且已经判定已通过能力检查。
在在步骤205执行能力检查操作之后,随后在步骤210判定是否通过检查操作。若通过,则过程进行至步骤215,其中允许新的有效程序计数器能力由所识别的能力形成,且另外,使用来自所识别的能力的指令集识别符字段来判定指令集。如后文将参考图9A及图9B更详细论述,指令集识别符字段的内容可复制至程序计数器能力中,或替代地可在分开的控制寄存器中提取并存储。
若在步骤210判定尚未通过能力检查,则过程进行至步骤220,其中采取预定动作。预定动作可采取各种形式,但在一个实施例中可涉及在判定尚未通过能力检查操作时直接采取异常。或者,采取异常可延迟,且替代地可由在适当的时候执行的下一个指令触发。
图6是更详细地图示在将所识别的能力加载PCC寄存器80中之前执行能力检查操作的实施例的流程图。在步骤250,针对如常驻在源寄存器中的所识别的能力执行能力检查操作。随后在步骤255判定是否通过能力检查操作。若通过,则过程进行至步骤260,其中允许分支操作完成以更新PCC寄存器80的内容,并且使来自所识别的能力的指令集识别符字段随后用于指示指令集。由此,若指令集识别符字段中的信息不同于在执行分支操作之前识别指令集的信息,应了解通过此机制将改变指令集。后续提取的指令将随后根据新识别的指令集来译码。
若在步骤255未通过测试,则在一个实施例中此可立即涉及在步骤270采取异常。然而,在替代实施例中,可能延迟采取异常达一段时期。由此,在步骤265,可能判定是否应延迟采取异常。若未采取,则在步骤270立即采取异常。
随后,若延迟异常,则过程进行至步骤275,其中设定标记以识别能力检查操作的未通过状态。存在可设定标记目标数种方式。例如,在控制寄存器中可存在专用控制字段,该专用控制字段经设定以识别能力检查操作的未通过状态。或者,在允许分支操作在步骤280完成时使用所识别的能力产生的程序计数器能力的一些性质可改变,使得更新的PCC将触发异常,当进行任何尝试以使用该异常时。作为特定实例,卷标位可在如存储在PCC寄存器内的更新的PCC中清除,从而指示PCC寄存器不存储有效能力。
在步骤280允许分支操作完成,由于PCC内容将更新,且关于指令集的信息将使用来自所识别的能力的指令集识别符字段来更新。在步骤285,判定是否执行下一个指令,并且若执行下一个指令,则过程进行至步骤290,其中判定是否设定标记。假设设定标记,则在步骤292采取异常,并且清除标记。然而,若未设定标记,则允许指令在步骤294执行。
通过使用标记机制,此允许某些事件在设定标记目标时间与采取异常的时间之间发生。例如,其可允许发生较高优先级的异常/中断,该异常/中断保存标记信息及程序计数器能力信息,并且随后清除标记并将不同的程序计数器能力加载到程序计数器能力寄存器80中。在从较高优先级的异常/中断返回时,标记及PCC信息将随后恢复,且当执行下一个指令时,设定标记目标存在将使异常发生。
当在步骤270或在步骤292采取异常时,软件异常处置器将控制转移至适当错误处置例程以处理所尝试的指令集改变。存在可采取错误处置例程的数个步骤。然而,在一个实施例中,由于采取异常已经归因于以下事实而产生:已经进行尝试以使用未通过能力检查操作的能力改变指令集,可认为终止使执行分支指令的应用是适当的。或者,异常处置例程可经布置以执行一些额外检查及/或清除操作,以确保允许指令集通过完成分支操作而改变是安全的。
图7是图示图6的替代方法的流程图,其中在将所识别的能力加载PCC寄存器80中之后执行能力检查操作。由此,如在步骤300所示,允许完成分支操作,因此PCC寄存器内容将使用所识别的能力更新,并且此外,来自所识别的能力的指令集识别符字段将用于指示指令集。
过程随后进行至步骤305,其中识别下一个指令是否执行,并且当执行时,则过程进行至步骤310,其中针对以现常驻在PCC寄存器中的形式的所识别的能力执行能力检查操作。若在步骤315认为已经通过能力检查,则过程进行至步骤320,其中该过程允许由所识别的能力形成新的有效程序计数器能力,并且也允许使用250来自所识别的能力的指令集识别符字段来判定指令集。然而,若在步骤315,判定未通过能力检查操作,则过程进行至步骤325,其中采取异常。异常随后以与先前针对图6的步骤270或292所论述者相同的方式来处置。
能力检查操作可采取各种形式,但一个实施例由图8的流程图图示。在步骤350,判定所识别的能力是否有效。在一个实施例中,此可通过查看卷标位的值来判定。特别地,若设定卷标位,则认为所识别的能力为有效能力,而若清除卷标位,则假设能力不是有效的。若判定所识别的能力不是有效的,则过程进行至步骤370,其中指示能力检查尚未通过。
然而,假设发现所识别的能力为有效的,则在一个实施例中,可引用针对相关能力提供的一个或多个权限来执行一个或多个额外检查,这些权限的状态引用保存在能力的权限字段内的一个或多个权限标记来判定。
例如,在一个实施例中,在步骤355,判定与能力相关的可修改权限处于清除状态。特别地,权限标记可用于编码可修改权限,并且当可修改权限处于清除状态时,此可用于指示相关能力不可由一个或多个能力修改指令来修改。此可因此通过在已将该能力标记为不可修改之后防止调节能力性质来提供针对特定能力的增强的安全性。例如,尽管处理电路将不能在正常操作中关于有界指针延伸该范围或设定权限标记,以便试图增加由有界指针提供至处理电路的能力,若未将有界指针标记为不可修改,则处理电路可能采取步骤以与有界指针相关地减小范围及/或清除权限标记。然而,当将能力标记为不可修改时,处理电路将不可采取任何此等调整。
反之,若可修改权限处于设定状态,则此指示若不存在防止此修改的覆写控制信息,可允许处理电路减小范围及/或清除某些权限标记。
在能力检查操作的一个实施例中,如由步骤355指示,若可修改权限不处于清除状态,则判定能力检查未通过。特别地,在此实施例中,判定仅允许指令集改变由于将不可修改能力加载PCC寄存器中而发生为适当的,由于此提供了额外保证:由于针对由当前过程使用而提供能力,指令集识别符字段的内容将不变化。
由此,在图8所示的实施例中,仅若可修改权限处于清除状态,过程能够朝向判定通过能力检查的情况进展。在一个实施例中,可能不需要额外检查,并且由此一旦判定可修改权限处于清除状态,则过程可直接进行至步骤365,其中判定通过能力检查。然而,在替代实施例中,可执行一个或多个进一步检查,例如考虑到由权限标记编码的一个或多个其他权限的状态。例如,如由方块360指示,可能判定可执行权限是否处于设定状态。可执行权限与能力相关,但仅关于能力何时加载到程序计数器能力寄存器中。特别地,可执行权限识别是否允许能力当形成程序计数器能力时用于从内存提取指令。因此,若PCC寄存器内的能力具有处于清除状态的可执行权限,则此指示防止该能力用于从内存提取指令。此可因此指示分支指令正用于试图将能力加载PCC寄存器80中,该能力不意欲用作程序计数器能力。由此,若可执行权限处于清除状态,则过程可进行至步骤370,其中认为能力检查未通过。
反之,若可执行权限处于设定状态,从而指示若无覆写控制信息防止使用则允许该能力用于从内存提取指令,则随后过程可进行至步骤365,其中判定通过能力检查。
图9A及图9B图示了在判定能力检查已经通过的情况下当执行分支指令时使用指令集识别符字段信息的两个选项。如将从先前论述显而易见,在判定能力检查已经通过的情况下,则源能力寄存器CN中的能力用于形成PCC寄存器80中的新的程序计数器能力。如由图9A中的选项一所示,源能力寄存器CN中的所识别的能力400因此复制至PCC寄存器中以形成新的PCC 410。在此实施例中,所识别的能力400中的指令集识别符字段405也复制至PCC寄存器中,以形成更新的程序计数器能力410中的新的字段415。处理电路随后在此实施例中经布置以使用PCC寄存器的字段415中的值来识别指令集。由此,若所识别的能力405内的指令集识别符指定不同于执行分支指令之前使用的指令集的指令集,则一旦已经执行分支指令,并由此PCC寄存器80的内容已经更新,指令集改变将藉助字段415中的更新信息而发生。
图9B图示了替代实施例,其中源能力寄存器CN中的所识别的能力420再次基本上复制到PCC寄存器80中以形成新的程序计数器能力435。然而,在此实施例中,所识别的能力420中的指令集识别符字段425在分别提供至PCC寄存器80的指令集控制寄存器430内提取并存储。在此实施例中,默认值随后写入PCC的字段440中,字段440将另外与指令集识别符字段对应。在一个实施例中,字段440中的值不涉及何时使用PCC435,并因此可设定为任何期望值。
在一个实施例中,指令集控制寄存器430可为用于存储指令集信息的分开的专用寄存器。然而,在替代实施例中,其可由现存寄存器中的字段提供,例如,由当前处理状态寄存器74中的字段提供。
在一个实施例中,先前所述的基于能力的机制可为允许改变指令集的唯一机制。然而,在另一实施例中,额外的基于异常的机制可作为允许指令集改变的进一步机制而提供。此过程在图10中示意性地图示。在步骤450,采取异常,因此在步骤455处理器转换为预定义的状态。异常可例如使转换为较高异常等级,从而具有与采取异常的过程相比较高等级的软件执行特权。在一个实施例中,预定当处置异常时由处理器使用的指令集。例如,配置寄存器可用于指定指令集,在处于预定义状态时该指令集可应用到所执行的异常处置器代码。或者,先前涉及的能力向量基址寄存器(capability vector base addressregister;CVBAR)中的字段可用于指定指令集。在一个特定实例中,CVBAR的位零可出于此目的使用。作为另一替代,指令集可为整体固定的,使得特定指令集总是用于异常处置器代码。
在在步骤455转换为预定义的状态之后,处理器随后执行可信的异常处置代码,以便建立返回状态,该返回状态将在从异常返回之后使用。在此过程期间,在从异常返回时使用的指令集可在适当控制寄存器中设定。例如,当指令集直接从PCC寄存器中的字段导出时,依据先前参考图9A所论述的实例,则CELR寄存器78的内容可更新,使得在返回地址能力中的相关字段识别指令集,该指令集应在从异常返回时应用。或者,若使用图9B的方法,其中指令集系例如由CPSR 74中的字段给出,则SPSR 72中的适当字段可由可信软件操纵以指定指令集,该指令集应在从异常返回时应用。
在步骤460之后,随后返回指令可在步骤465执行以从异常返回。作为此过程的部分,CELR 78的内容将恢复至PCC寄存器80中,并且SPSR72的内容将恢复至CPSR 74中。其后,后续提取的指令将根据新识别的指令集来解释。
尽管在进一步实施例中,可能提供一个或多个额外的受控机制以用于改变指令集,在一个特定实施例中,处理器可受到限制以不仅允许指令集通过使用本文所述的基于能力的机制或基于异常的机制来改变。
图11图示了可使用的虚拟机实施方式。尽管先前描述的实施例根据用于操作支持相关技术的特定处理硬件的设备及方法来实施本发明,也可能提供硬件装置的所谓虚拟机实施方式。这些虚拟机实施方式在主处理机530上运行,该主处理机运行支持虚拟机程序510的主机操作系统520。通常,需要大型高效处理器以提供按合理速度执行的虚拟机实施方式,但此方法在某些环境中可为合理的,诸如当需要运行另一处理器本端的代码以获得兼容性时,或出于再使用的原因。虚拟机程序510可存储在计算机可读取存储介质(可为非暂时介质)上,并向应用程序500提供应用程序界面(指令执行环境),该接口与将由实际硬件提供的应用程序编程接口相同,该实际硬件是通过虚拟机程序510模型化的装置。用于控制指令集改变的上文所述的技术可在虚拟机环境中实现。例如,在虚拟机中运行或控制虚拟机的软件可使用实现此特征的硬件。
从上文所述的实施例,将看到这些实施例提供了用于改变基于能力的架构内的指令集的高度受控并受限的技术。经由使用此等技术,此提供了保护以防无意或恶意尝试改变指令集,因此减轻指令集改变可用以试图规避由基于能力的架构提供的保护的规避方面的可能性。
在本申请中,词语“经配置以……”用于意谓设备的组件具有能够进行所定义操作的配置。在此上下文中,“配置”意谓硬件或软件的互连的布置或方式。例如,设备可具有提供所定义的操作的专用硬件,或处理器或其他处理装置可经程序化以执行该功能。“经配置以”不隐含需要以任何方式改变设备组件以便提供所定义的操作。
尽管已在本文中参考附图详细描述了本发明的说明性实施例,应理解,本发明不限于这些精确实施例,且熟习该项技术者可在其中实现各种改变、增加及修改而不脱离由随附申请专利范围所定义的本发明的范畴及精神。例如,附属请求项的特征可与独立请求项的特征进行各种组合,而不脱离本发明的范畴。

Claims (21)

1.一种设备,包含:
处理电路,用于执行指令集的指令,所述处理电路被布置以在能力域中操作,该能力域包含用以限制由所述处理电路在执行所述指令时执行的操作;以及
程序计数器能力存储单元,用于存储由所述处理电路使用以判定程序计数器值的程序计数器能力;
所述处理电路被布置以采用基于能力的机制来改变所述指令集,响应于执行用于将所识别的能力加载到所述程序计数器能力存储单元中的至少一种类型的指令,所述处理电路被布置以调用所述基于能力的机制,以便对所识别的能力执行能力检查操作,并且如果通过所述能力检查操作,则使所述指令集由来自所识别的能力的指令集识别符字段来识别。
2.根据权利要求1所述的设备,其中,所述处理电路被布置以在将所识别的能力加载到所述程序计数器能力存储单元中之前对所识别的能力执行所述能力检查操作。
3.根据权利要求1所述的设备,其中,所述处理电路被布置以在将所识别的能力加载到所述程序计数器能力存储单元中之后对所识别的能力执行所述能力检查操作。
4.根据前述权利要求中任一项所述的设备,其中,所述处理电路被布置以响应于检测到所述能力检查操作未通过而采取异常。
5.根据权利要求4所述的设备,其中,所述处理电路被布置以设定标记来识别所述能力检查操作的未通过,设定该标记使得在执行下一个指令时采取所述异常。
6.根据前述权利要求中任一项所述的设备,其中:
所述处理电路被布置以通过执行指定所识别的能力的分支指令来调用所述基于能力的机制。
7.根据权利要求6所述的设备,进一步包含:
一个或多个能力存储单元,可存取至所述处理电路并且被布置以存储用于限制由所述处理电路在执行所述指令时执行的操作的能力;
其中,所述分支指令将所述一个或多个能力存储单元之一指定为源操作数,所指定的能力存储单元含有所识别的能力。
8.根据权利要求6或权利要求7所述的设备,其中:
所述分支指令包含返回指令,该返回指令被执行以将形成所识别的能力的返回地址能力加载到所述程序计数器能力存储单元中。
9.根据前述权利要求中任一项所述的设备,其中:
所述处理电路被布置以当执行所述能力检查操作时检查与所识别的能力相关的有效标记,以便防止通过所述能力检查操作,除非所识别的能力为有效能力。
10.根据前述权利要求中任一项所述的设备,其中:
所识别的能力包含一个或多个权限标记,该权限标记用以识别与所识别的能力相关的一个或多个权限的状态;以及
所述处理电路被布置以当执行所述能力检查操作时检查所述一个或多个权限标记,以便防止通过所述能力检查操作,除非至少一个权限处于预定状态。
11.根据权利要求10所述的设备,其中,所述至少一个权限包含可执行权限,根据防止使用所识别的能力从内存提取指令的任何覆写控制信息,该可执行权限用于识别当用作所述程序计数器能力时是否允许所识别的能力用于从内存提取指令,并且所述预定状态为设定状态,该设定状态指示允许所识别的能力用于从内存提取指令。
12.根据权利要求10或权利要求11所述的设备,其中,所述至少一个权限包含可修改权限,该可修改权限用于识别所识别的能力是否可由一个或多个能力修改指令来修改,且所述预定状态为清除状态,该清除状态指示所识别的能力不可由所述一个或多个能力修改指令来修改。
13.根据前述权利要求中任一项所述的设备,其中:
当通过所述能力检查操作时,所述处理电路被布置以使所识别的能力包括所述指令集识别符字段,用于形成所述程序计数器能力存储单元中的新的程序计数器能力;以及
在所述新的程序计数器能力中的所述指令集识别符字段的值用于判定所述指令集。
14.根据权利要求1至12中任一项所述的设备,其中:
当通过所述能力检查操作时,所述处理电路被布置以使所识别的能力用于形成所述程序计数器能力存储单元内的新的程序计数器能力,但在该新的程序计数器能力中的字段对应于被设定为默认值的所述指令集识别符字段,所述处理电路进一步使将所识别的能力的所述指令集识别符字段中的所述值写入指令集控制存储单元中;以及
所述指令集控制存储单元中的所述值用于判定所述指令集。
15.根据权利要求14所述的设备,其中,所述指令集控制存储单元由当前处理器状态寄存器(CPSR)内的字段提供。
16.根据前述权利要求中任一项所述的设备,其中,所述处理电路进一步提供基于异常的机制以改变所述指令集,在调用所述基于异常的机制时,所述处理电路被布置以将异常采取为预定义状态,其中随后执行可信软件以建立返回状态,该返回状态识别在从所述异常返回时使用的所述指令集。
17.根据权利要求16所述的设备,其中,所述处理电路受到限制以仅允许通过使用所述基于能力的机制或所述基于异常的机制来改变所述指令集。
18.一种控制设备内的指令集的改变的方法,该设备具有用于执行当前指令集的指令的处理电路,所述处理电路被布置以在能力域中操作,该能力域包含用以限制由所述处理电路在执行所述指令时执行的操作的能力,该方法包含以下步骤:
在程序计数器能力存储单元中存储由所述处理电路使用以判定程序计数器值的程序计数器能力;
布置所述处理电路以响应于执行用于将所识别的能力加载到所述程序计数器能力存储单元中的至少一种类型的指令,以调用基于能力的机制来控制所述当前指令集的改变,所述基于能力的机制包含:
关于所识别的能力执行能力检查操作;以及
若通过所述能力检查操作,则使所述指令集由来自所识别的能力的指令集识别符字段来识别。
19.一种设备,包含:
处理装置,用于执行指令集的指令,所述处理装置用于在能力域中操作,该能力域包含用于限制由所述处理装置在执行所述指令时执行的操作的能力;以及
程序计数器能力存储单元装置,用于存储由所述处理装置使用以判定程序计数器值的程序计数器能力;
该处理装置采用基于能力的机制来改变所述指令集,响应于执行用于将所识别的能力加载到所述程序计数器能力存储单元中的至少一种类型的指令,所述处理装置用于调用所述基于能力的机制,以关于所识别的能力执行能力检查操作,并且若通过所述能力检查操作,则使所述指令集由来自所识别的能力的指令集识别符字段来识别。
20.一种虚拟机计算机程序,包含用以控制主数据处理设备以提供对应于根据权利要求1所述的设备的指令执行环境的程序指令。
21.一种计算机可读取存储介质,存储根据权利要求20所述的虚拟机计算机程序。
CN201880037975.8A 2017-06-15 2018-04-27 用于控制指令集中改变的设备与方法 Active CN110709817B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1709511.8 2017-06-15
GB1709511.8A GB2563580B (en) 2017-06-15 2017-06-15 An apparatus and method for controlling a change in instruction set
PCT/GB2018/051116 WO2018229455A1 (en) 2017-06-15 2018-04-27 An apparatus and method for controlling a change in instruction set

Publications (2)

Publication Number Publication Date
CN110709817A true CN110709817A (zh) 2020-01-17
CN110709817B CN110709817B (zh) 2023-09-22

Family

ID=59462226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880037975.8A Active CN110709817B (zh) 2017-06-15 2018-04-27 用于控制指令集中改变的设备与方法

Country Status (9)

Country Link
US (1) US11080058B2 (zh)
EP (1) EP3639132B1 (zh)
JP (2) JP2020523680A (zh)
KR (1) KR102547479B1 (zh)
CN (1) CN110709817B (zh)
GB (1) GB2563580B (zh)
IL (1) IL270935B1 (zh)
TW (1) TWI786111B (zh)
WO (1) WO2018229455A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
US10607015B1 (en) * 2019-05-16 2020-03-31 Cyberark Software Ltd. Security risk assessment and control for code
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758115A (en) * 1994-06-10 1998-05-26 Advanced Risc Machines Limited Interoperability with multiple instruction sets
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
CN106716362A (zh) * 2014-07-25 2017-05-24 英特尔公司 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62123552A (ja) * 1985-11-22 1987-06-04 Nec Corp 中央処理装置割当て方式
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP3805314B2 (ja) * 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
TWI484413B (zh) * 2012-04-03 2015-05-11 Mstar Semiconductor Inc 基於功能性的程式比較方法
US9672164B2 (en) * 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
GB2563010B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for managing a capability domain
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5758115A (en) * 1994-06-10 1998-05-26 Advanced Risc Machines Limited Interoperability with multiple instruction sets
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
CN106716362A (zh) * 2014-07-25 2017-05-24 英特尔公司 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级

Also Published As

Publication number Publication date
GB2563580A (en) 2018-12-26
IL270935A (en) 2020-01-30
US11080058B2 (en) 2021-08-03
IL270935B1 (en) 2024-05-01
WO2018229455A1 (en) 2018-12-20
US20200117458A1 (en) 2020-04-16
TW201905705A (zh) 2019-02-01
GB201709511D0 (en) 2017-08-02
JP2023038361A (ja) 2023-03-16
CN110709817B (zh) 2023-09-22
GB2563580B (en) 2019-09-25
KR102547479B1 (ko) 2023-06-26
EP3639132A1 (en) 2020-04-22
TWI786111B (zh) 2022-12-11
KR20200013049A (ko) 2020-02-05
JP2020523680A (ja) 2020-08-06
EP3639132B1 (en) 2024-05-29

Similar Documents

Publication Publication Date Title
CN108292272B (zh) 用于管理有界指针的装置和方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN110622133B (zh) 用于管理能力域的设备及方法
CN110799939B (zh) 用于控制指令的执行的设备与方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
US20240202139A1 (en) Technique for constraining access to memory using capabilities
TW202319913A (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