CN110622133A - 用于管理能力域的设备及方法 - Google Patents

用于管理能力域的设备及方法 Download PDF

Info

Publication number
CN110622133A
CN110622133A CN201880032291.9A CN201880032291A CN110622133A CN 110622133 A CN110622133 A CN 110622133A CN 201880032291 A CN201880032291 A CN 201880032291A CN 110622133 A CN110622133 A CN 110622133A
Authority
CN
China
Prior art keywords
capability
state
program counter
processing circuitry
domain
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
CN201880032291.9A
Other languages
English (en)
Other versions
CN110622133B (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 CN110622133A publication Critical patent/CN110622133A/zh
Application granted granted Critical
Publication of CN110622133B publication Critical patent/CN110622133B/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/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/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/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/321Program or instruction counter, e.g. incrementing
    • 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/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
    • 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

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)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供一种用于管理能力域的设备及方法。该设备具有用于执行指令的处理电路,该处理电路当处于默认状态时被布置为在能力域中操作,该能力域包括用以约束执行指令时由处理电路执行的操作的能力。亦提供了程序计数器能力储存元件以储存由处理电路用来确定程序计数器值的程序计数器能力。程序计数器能力被布置为标识处理电路的能力状态。当能力状态指示默认状态时,则处理电路被布置为在能力域中操作。然而,当能力状态指示执行状态时,处理电路被布置为以比当处于默认状态时受到更少约束的方式操作,以便允许更改能力域。此提供了用于选择性地允许设备更改能力域的简单且有效的机制。

Description

用于管理能力域的设备及方法
技术领域
本技术涉及数据处理领域。
背景技术
对基于能力的架构越来越感兴趣,其中某些能力经限定用于给定过程,并且若试图执行所限定能力之外的操作,则可能触发错误。这样的能力可采取各种形式,但一种类型的能力为有界指针(其亦可称作“胖指针”)。
许多能力储存元件(例如寄存器)可经提供以用于储存能力,诸如用于通过数据处理设备的处理电路存取的有界指针。在此种能力储存元件内的每个有界指针将标识可由处理电路存取的不可扩充范围的存储器地址,并且因此每个有界指针可称作一种能力(标识处理电路能够存取的可允许范围的存储器地址,以及任何关联许可)。尽管可允许处理电路采取步骤以减少与可用于处理电路的任何特定有界指针关联的范围及/或许可,但是此不能在正常操作中扩充范围以设法增大由有界指针提供给处理电路的能力。
由能力储存元件内的有界指针标识的任何特定范围的存储器地址可包含数据、指令及/或其他能力(例如,其他有界指针)。因此,应理解,在任何时间点处理电路的存取存储器的能力由一组能力限定,该组能力包括在能力储存元件中标识的能力以及经由保持在这样的能力储存元件中的能力可存取的任何其他能力,并且此组能力在此处将称作能力域。
可能需要在数据处理设备的操作期间设法改变处理电路的能力域。然而,此可能需要存取在给定当前能力域的能力的情况下无法存取的存储器地址。
期望提供一种用于赋能处理电路的能力域中的此种变化的有效且可靠的机制。
发明内容
在第一示例性配置中,提供一种设备,该设备包括:用于执行指令的处理电路,该处理电路当处于默认状态时被布置为在能力域中操作,该能力域包含用于约束当执行这样的指令时由处理电路执行的操作的能力;及程序计数器能力储存元件,该程序计数器能力储存元件用于储存由处理电路用来确定程序计数器值的程序计数器能力,该程序计数器能力标识处理电路的能力状态;该处理电路响应于指示该默认状态的能力状态而被布置为在能力域中操作;并且该处理电路响应于指示执行状态的能力状态而被布置为比当处于该默认状态时受到更少约束的方式操作以便允许更改能力域。
在另一示例性配置中,提供一种在具有用于执行指令的处理电路的设备内管理能力域的方法,该处理电路当处于默认状态时被布置为在能力域中操作,该能力域包含用于约束当执行这样的指令时由处理电路执行的操作的能力,该方法包括以下步骤:在程序计数器能力储存元件内储存由处理电路用来确定程序计数器值的程序计数器能力,该程序计数器能力标识处理电路的能力状态;响应于指示该默认状态的能力状态,在能力域中操作处理电路;以及响应于指示执行状态的能力状态,以比当处于该默认状态时受到更少约束的方式操作处理电路以便允许更改能力域。
在又一示例性配置中,提供一种设备,该设备包括:用于执行指令的处理装置,该处理装置当处于默认状态时用于在能力域中操作,该能力域包含用于约束当执行这样的指令时由处理装置执行的操作的能力;及程序计数器能力储存元件装置,该程序计数器能力储存元件装置用于储存由处理装置用来确定程序计数器值的程序计数器能力,该程序计数器能力标识处理装置的能力状态;该处理装置响应于指示该默认状态的能力状态而用于在能力域中操作;并且该处理装置响应于指示执行状态的能力状态而用于以比当处于该默认状态时受到更少约束的方式操作,以便允许更改能力域。
在又一示例性配置中,提供一种包含程序指令的虚拟机计算机程序,这样的程序指令用于控制主数据处理设备以提供对应于具有上述第一示例性配置的设备的指令执行环境。在一个实施例中,可提供计算机可读取储存媒体以用于储存虚拟机计算机程序。
附图说明
本技术将仅以举例的方式参照附图中图示的本技术的实施例来进一步描述,在附图中:
图1为根据一个实施例的设备的方块图;
图2图示若试图设置或存取有界指针储存元件组内的指针值则可能触发错误的指令类型的实例,在该有界指针储存元件组中指针值用于指定超出由关联范围信息指示的范围的地址;
图3根据一个实施例图示与有界指针关联的标记位的使用;
图4图标为了更新处理电路的能力状态,根据一个实施例的当执行分支指令时执行的操作;
图5图标为了更新处理电路的能力状态,根据一个实施例的当执行具有链接指令的分支时执行的操作;
图6图标为了更新处理电路的能力状态,根据一个实施例的当执行返回指令时执行的操作;
图7为图标当更新程序计数器能力时根据一个实施例采取的步骤的流程图;
第8A图及第8B图图示根据一个实施例的用于执行图7的步骤370的两种替代性选项;以及
图9图示可使用的虚拟机实施方式。
具体实施例
在参照附图论述实施例之前,提供了实施例的以下描述。
如前所述,对基于能力的架构越来越感兴趣,其中某些能力经限定用于给定过程,并且若试图执行所限定能力之外的操作则可能触发错误。可以限定各种类型的能力,但一种类型的能力为有界指针(在一个实施例中其合并指针值与关联范围及许可信息两者)。
采用此种基于能力的架构的设备将通常具有用于储存能力的储存元件(此处亦称作有界指针储存元件,或者更一般地能力储存元件)。储存元件可为寄存器(此处亦称作有界指针寄存器或者能力寄存器)及/或可为通用存储器中的存储器位置,例如堆栈存储器上的位置。某些指令可用于引用此种储存元件以存取所需能力,并取决于该能力执行操作。例如,考虑到有界指针,执行此类指令可导致该有界指针被撷取,并且该有界指针中的指针值接着用于导出在执行指令期间所需的存储器中的地址。指针值可直接用于标识存储器地址,或可用于导出存储器地址,例如通过将偏移加至指针值。若存储器地址在由范围信息指定的范围内,并且满足在许可信息中指定的任何许可,则将允许操作进行。
因此,当使用有界指针时,指针值本身可指向,或者用于确定例如待存取的数据值或待取出用于执行的指令的地址。然而,接着可引用范围及许可信息例如以确保所存取的任何地址在可允许范围内,并且经存取以用于允许目的。此可以例如用于确保由指针确定的地址保持在某些界限内以维持行为的安全性或功能正确性。
通过此种方法,可能有效地监督由处理电路进行的存储器存取。然而,如前所提及,出现的问题为如何有效且可靠地提供将赋能能力域变化的机制,因为此可能要求存取在给定当前能力域的能力的情况下无法存取的存储器地址。
根据一个实施例,若设备具有用于执行指令的处理电路,则处理电路当处于默认状态时被布置为在能力域中操作,该能力域包括用于约束当执行指令时由处理电路执行的操作的能力。亦提供了程序计数器能力储存元件以储存由处理电路用来确定程序计数器值的程序计数器能力。根据本文描述的实施例,该程序计数器能力亦包括用于标识处理电路的能力状态的信息。
当能力状态指示默认状态时,处理电路被布置为在能力域中操作。因此,处理电路不能存取在给定当前能力域的能力的情况下无法存取的存储器地址。然而,响应于指示执行状态的能力状态,处理电路替代地被布置为以比当处于默认状态时受到更少约束的方式操作,以便允许更改能力域。
存在当处于执行状态时可放松对能力域的约束的许多方式,但目的为允许处理电路能够存取在施加对能力域的约束时以其他方式无法存取的一个或多个存储器地址或区域。
因此,根据所描述的实施例,补充能力以便它们可另外指定能力状态信息。若随后此种能力移入程序计数器能力储存元件中以便形成程序计数器能力,则由该能力指定的能力状态信息随后用于标识处理电路的当前能力状态,并且由此确定处理电路是处于受约束以根据能力域操作的默认状态中,还是处于它可以受到更少约束的方式操作的执行状态中。
此提供一种用于暂时允许处理电路获得足以赋能其更改能力域的增强权利的简单且有效的机制。当在适当时候更新程序计数器能力以便标识默认状态作为处理电路的新的能力状态时,则处理电路将根据在处理电路处于执行状态时更改的能力域进行操作。
为了改变能力状态,存在可用于更新储存在程序计数器能力储存元件内的程序计数器能力的许多机制。在一个实施例中,处理电路可被布置为执行标识能力的分支指令,以便将所标识的能力移入程序计数器能力储存元件中以形成新的程序计数器能力,随后处理电路在由新的程序计数器能力标识的能力状态中操作。因此,当前正在执行的过程可经由分支指令的使用而将其当前已存取的能力中的一者自通用能力储存元件移入程序计数器能力储存元件,其中该处理电路的能力状态随后由从分支操作的效能产生的新的程序计数器能力标识出。
分支指令可采取各种形式。然而,在一个实施例中,分支指令为具有链接指令的分支。在此种方案中,在执行具有链接指令的分支之前储存在程序计数器能力储存元件中的程序计数器能力可被视为形成旧的程序计数器能力,并且处理电路被布置为使用旧的程序计数器能力以生成用于储存在返回地址能力储存元件中的返回地址能力,该返回地址能力保持由旧的程序计数器能力标识的能力状态。因而,此使得过程能够分支至代码的特定段,并且随后当已经执行该代码时,将程序计数器能力储存元件的内容返回至保持在执行分支之前存在的能力状态的形式。因此,举例而言,代码可分支至待在执行状态中操作的代码的特定段,从而使得能够对将形成能力域的能力进行某些改变,并且在完成该代码时过程将随后返回至默认状态,在此时处理电路将由所修改能力域的能力约束。
因此,在一个实施例中,处理电路可被布置为执行返回指令(其可被认为是另一种形式的分支指令)以将返回地址能力写入程序计数器能力储存元件中以形成返回程序计数器能力,随后处理电路在由返回程序计数器能力标识的能力状态中操作。
存在许多方式,其中处理电路可被布置为当能力状态指示执行状态时受到更少约束的方式操作。然而,在一个实施例中,处理电路被布置为通过布置处理电路在执行状态中操作时不受能力约束而以此种更少约束的方式操作。因此此种方法赋予处理电路对存储器地址空间的完全访问权限,从而移除对能力域的所有保护,但在正在执行状态中执行的代码为高度可信的某些情况中可能有用。
在一个替代实施例中,当能力状态指示执行状态时,处理电路可以经布置为通过当处理电路正在执行状态中操作时禁用至少一项能力检查,来以比当处于默认状态时受到更少约束的方式操作。所禁用的能力检查可采取各种形式。例如,可能地是,某些存储器存取指令可标识储存在数据处理设备的通用寄存器内的无界指针。为了确保亦约束这样的存取,可以提供默认数据能力(default data capability;DDC)以提供范围信息及任何关联许可,并且当确定是否允许对参考无界指针标识的地址进行存储器存取时可引用默认数据能力。然而,在一个实施例中,当处于执行状态时,可确定关掉参考默认数据能力执行的任何此种检查,从而提供用于使处理电路存取超出由能力域所允许的存储器地址空间之外的存储器地址空间的机制。
作为另一替代方案,当程序计数器能力用于标识指令取自的地址时,若处理电路正在执行状态中操作,则可确定禁用参考程序计数器能力的范围及许可信息执行的关联能力检查。
在又一替代实施例中,设备可进一步包括用于储存能力的一组或多组经分组的能力储存元件,每组经分组的能力储存元件包括第一能力储存元件,该第一能力储存元件用于储存用于约束当在默认状态中操作时由处理电路执行的操作的能力;及第二能力储存元件,该第二能力储存元件用于储存用于约束当在执行状态中操作时由处理电路执行的操作的能力。在每组经分组的能力储存元件的第一能力储存元件及第二能力储存元件中标识的能力随后可被布置为使得当能力状态指示执行状态时,处理电路以比处于默认状态时受到更少约束的方式操作。
因此,根据此种实施例,能力储存元件中的至少一些的分组可用作用于允许当在执行状态中操作时放松能力域的约束的机制。特别地,当处于执行状态时,在此种实施例中的处理电路将针对所使用能力中的至少一者引用不同的经分组的储存元件,其中该经分组的能力储存元件储存指定比在默认状态时使用的正常能力繁重更少的约束的能力。此允许处理电路在处于执行状态时获得可控的额外权限利,该权利足以使得能够更改能力域。
作为使用经分组的能力储存元件的替代方案,在一个替代实施例中,当对程序计数器能力的更新导致能力状态自源状态变化至目标状态时,保存一个或多个能力储存元件中关于源状态的能力以允许它们稍后恢复,并且将与目标状态关联的关联能力写入该一个或多个能力储存元件中。当能力状态变换为执行状态时,写入该一个或多个能力储存元件的能力可被布置为使得处理电路以比处于默认状态时受到更少约束的方式操作。因此,当能力状态变化时可切换某些能力储存元件的内容,如由当前程序计数器能力所指示,从而允许一些能力替代为更少约束的版本,以允许处理电路具有足以使其能够改变能力域的对存储器的增强存取。
在一个实施例中,可提供机制以约束能力状态可如何自执行状态变化至默认状态。特别地,可能必须确保当能力状态返回至默认状态时,处理电路不会留有可使其能够规避能力域的任何执行权利。因此,在一个实施例中,当分支指令标识将导致能力状态自执行状态变化至默认状态的能力时,处理电路被布置为执行检查操作,以确定是否允许使用如使用由分支指令标识的能力更新的程序计数器能力。
可能存在标识允许的分支指令的许多方式。然而,在一个实施例中,若一种或多种类型的分支指令可用于将能力状态自执行状态变化至默认状态,并且若通过除了使用一种或多种特定类型的分支指令之外的过程来尝试分支,则检查操作将侦测到这种情况并采取适当的动作。
特别地,在一个实施例中,在确定检查操作的失效条件时,处理电路被布置为执行预定动作。预定动作可采取各种形式。例如,在一个实施例中,它可涉及在执行导致待确定的失效条件的分支指令时发生异常。软件异常处理程序随后将控制转移至适当的错误处理程序,以处理自执行状态至默认状态的试图变化。例如,异常处理程序可导致发生程序计数器更新,但是处理电路保持在执行状态内。或者,处理电路可被布置为执行一些额外检查及/或清除操作以确保在允许发生根据分支指令的程序计数器能力更新之前,以导致处理电路自执行状态返回至默认状态的方式更新程序计数器能力为安全的。
作为在执行分支指令时立即发生异常的替代方案,在一个替代实施例中,可以设置旗标以指示失效条件的出现,但可允许完成分支指令的执行以更新程序计数器能力。此后,设定旗标的存在可用于导致当将执行下一个指令时发生异常。此允许某些事件发生在执行分支指令和设置旗目标时间与发生异常的时间之间。例如,它可以允许发生保留旗标信息及程序计数器能力(program counter capability;PCC)信息的更高优先级的异常/中断,随后清除旗标并将不同的程序计数器能力加载进程序计数器能力储存元件中。在自更高优先级的异常/中断返回时,则将恢复旗标及PCC信息,并且当将执行下一个指令时,设置旗标的存在将导致发生异常。
在一个实施例中,维持在程序计数器能力内的能力状态信息可与保持在能力内的任何其他许可信息类似地处理,并且因而可以清除指示能力状态的信息以便将能力状态变化至默认状态。此例如可允许处理电路在执行状态中操作时经由清除程序计数器能力内的相关信息字段而本身转换至默认状态。然而,根据不允许过程的活动由指定能力管理的过程增加指定能力的许可的一般原则,处理电路不可能以指示自默认状态至执行状态的转换的方式来改变能力状态信息的值。
在替代实施例中,能力状态信息可当作与一般许可字段的一种新型字段分离,并且可被布置为便其不能通过使用该能力的过程来改变。
现将参照附图描述特定实施例。
图1示意性地图标包括用于处理指令的处理管线4的数据处理设备2的实例。在此实例中,处理管线4包括许多管线阶段,这样的管线阶段包括取出阶段6、解码阶段8、发出阶段10、运行时间12及回写阶段14,但是应理解可提供其他类型或组合的阶段。例如,用于执行寄存器更名的更名阶段可包括于一些实施例中。待处理的指令逐阶段移动,并且当指令在一个阶段待处理时,另一个指令可在管线4的一不同阶段处待处理。
取出阶段6自1阶(L1)指令高速缓存20取出指令。取出阶段6可通常自连续的指令地址顺序地取出指令。然而,取出阶段亦可具有用于预测分支指令的结果的分支预测器22,并且若预测发生分支则取出阶段6可自(非连续的)分支目标地址取出指令,或者若预测不发生分支则自下一个连续地址取出指令。分支预测器22可包括用于储存信息的一个或多个分支历史表格,该信息用于预测某些分支可能发生还是不发生。例如,分支历史表格可包括用于追踪先前执行的分支的实际结果或表示对分支进行的预测的置信度的计数器。分支预测器22亦可包括分支目标地址高速缓存(branch target address cache;BTAC)24,其用于快取分支指令的先前目标地址以便这样的地址可在后续遇到相同分支指令时预测到。
将所取出指令传递至译码阶段8,该阶段译码指令以生成译码的指令。译码的指令可包含用于控制运行时间12以执行适当的处理操作的控制信息。对于自高速缓存20取出的一些更加复杂的指令,译码阶段8可将这样的指令映像至多个译码指令,其可称作微操作(micro-operation;μop/uop)。因此,可能在自L1指令高速缓存20取出的指令与由管线的后续阶段可见的指令之间不存在一对一关系。一般而言,对「指令」的引用在本申请案中应解释为包括微操作。
将译码指令传递至发出阶段10,此阶段确定执行指令所需的操作数是否可用并且当操作数可用时发出用于执行的指令。一些实施例可支持按顺序处理,以便指令经发出以用于以对应于指令自Ll指令高速缓存20取出的程序顺序的顺序执行。其他实施例可支持无序执行,以便可将指令以不同于程序顺序的顺序发出至运行时间l2。无序处理可用于改善效能,因为当在等候操作数的同时较早指令停顿时,可首先执行其操作数可用的程序顺序中的稍后指令。
发出阶段10将指令发出至运行时间12,其中执行指令以执行各种数据处理操作。例如,运行时间可包括许多执行单元30、32、34(这样的执行单元包括用于对整数值执行算术或逻辑运算的算术/逻辑单元(arithmetic/logic unit;ALU)30)、用于对以浮点形式表示的值执行操作的浮点(floating-point;FP)单元32、及用于执行加载操作或储存操作的加载/储存单元34,该加载操作用于将数据值自1阶(Ll)数据高速缓存36加载至寄存器40,该储存操作用于将数据值自寄存器40储存至Ll数据高速缓存36。将理解,此等仅为执行可提供的单元的种类的一些实例,并且亦可提供许多其他种类。为了执行处理操作,运行时间12可自一组寄存器40读出数据值。随后执行指令的结果可通过回写阶段14回写至寄存器40。
L1指令高速缓存20及Ll数据高速缓存36可为包括多阶高速缓存的快取层次结构的部分。例如,亦可提供2阶(L2)高速缓存44并且可视情况提供其他阶的高速缓存。在此实例中,L2高速缓存44在L1指令高速缓存20与L1数据高速缓存36之间共享,但其他实例可具有分离的L2指令及数据高速缓存。当指令不在L1指令高速缓存20中取出时,则其可自L2高速缓存44取出,并且同样地若指令不在L2高速缓存44中,则可自主存储器50取出。同样地,响应于加载指令,若指令不在L1数据高速缓存36中及自存储器50取出,则按需要数据可自L2高速缓存44取出。任何已知方案可用于管理快取层次结构。
由管线4使用的用于引用程序指令及数据值的地址可为虚拟地址,但至少主存储器50,以及视情况亦至少一些阶的快取层次结构,可为实体定地址的。因此,转换旁看缓冲器(translation lookaside buffer;TLB)52可提供以用于将由管线4使用的虚拟地址转换成用于存取高速缓存或存储器的实体地址。例如,TLB 52可包括许多条目,每个条目指定虚拟地址空间的对应页的虚拟页地址及该虚拟页地址应映像至的对应实体页地址,以便将对应页内的虚拟地址转换成实体地址。例如虚拟及实体页地址可对应于对应虚拟及实体地址的最重要部分,其中当将虚拟地址映像至实体地址时剩余的最不重要部分保持不变。除地址转换信息外,每个TLB条目亦可包括一些信息指定存取许可,诸如指示地址的某些页是否可以管线4的某些模式存取。在一些实施例中,TLB条目亦可定义地址的对应页的其他性质,诸如定义响应于读出或写入操作(例如,高速缓存应以回写模式还是直写模式操作)更新快取层次结构的哪些阶的高速缓存修正信息,或者与管线4发出的数据存取的顺序相比,定义对对应页中的地址进行的数据存取是否可通过存储器系统重新排序的信息。
尽管图1图示单阶TLB 52,但将理解可提供TLB的层次结构,使得1阶(Ll)TLB 52可包括用于转换许多近来存取的页中的地址的TLB条目,以及2阶(L2)TLB可提供以用于储存更大量页的条目。当所需条目不存在于Ll TLB中时,则它可自L2TLB取出,或自层次结构中的另外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的顶部图示,特定有界指针寄存器PRl包括给定指针值62及范围信息64,其在此实例中使用界定可允许范围的下界的下界地址68及界定可允许范围的上界的上界地址69来指定。例如,界限68、界限69可经设置以界定地址80000至地址81000的范围。当某些指令引用有界指针寄存器PRl并且由指针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中,其中PCC 80亦可提供类似于具备有界指针储存元件60组中的每个指针的范围及限制信息的范围信息84及任何适当的限制信息86。
另外,在一个实施例中,无界指针亦可在通用寄存器40内指定并且当执行存储器存取时使用。为了限制可使用此种无界指针存取的存储器地址,可假定默认数据能力(Default Data Capability;DDC)寄存器90指定范围信息92及任何限制数据94两者,其类似于包括在任意能力寄存器内的范围及限制信息。随后,当执行参考通用寄存器40中的无界指针标识存储器地址的存储器存取指令时,类似于关于无界指针执行的界限检查操作的界限检查操作仍然可基于来源于无界指针的任何地址来执行,但在此情况下关于保存在DDC寄存器90内的范围及限制信息。通过此种方法,能力知晓代码例如可能希望利用现有软件库中的一些能力未知代码来设置DDC寄存器90,以便放置关于如何当执行该能力未知代码时使用自通用寄存器40存取的指针的约束。特别地,范围信息可用于限制当执行此种能力未知代码时存取的地址范围。
在PCC寄存器80或者DDC寄存器90中指定的范围信息及任何关联限制可以各种方式设置。然而,在一个实施例中,使用当前能力域中的处理电路可用的一个或多个有界指针来确定信息,以便不能使用基于PCC或者DDC的界限检查来存取存储器地址,该界限检查驻留在针对当前能力域标识的存储器地址范围之外。
图3示意性地图标如何使用标记位与个别数据区块关联以标识数据区块表示能力(即,有界指针及关联限制信息)还是表示正常数据。特别地,存储器地址空间110将储存一系列数据区块115,其通常将具有指定大小。仅为了说明起见,在此实例中假定每个数据区块包含128位。与每个数据区块115关联的情况下,提供标记字段120,在一个实例中其为称作标记位的单个位字段,其经设置以标识关联数据区块表示能力,并且经清除以指示关联数据区块表示正常数据,并且因此不能当作能力。应理解,与设置或清除状态关联的实际值可根据实施例变化,但仅以举例说明,在一个实施例中若标记位具有值1,则它指示关联数据区块为能力,以及若它具有值0,则它指示关联数据区块包含正常数据。
当将能力加载进有界指针寄存器60(此处亦称作能力寄存器)的一者(诸如图3中图标的能力寄存器100)中时,则标记位与能力信息一起移动。因此,当将能力加载进能力寄存器100中时,指针102、范围信息104及限制信息106(此后称作许可信息)将加载进能力寄存器。另外,与能力寄存器关联,或作为能力寄存器内的特定位字段,标记位108将经设置以标识表示能力的内容。类似地,当将能力储存回至存储器时,相关标记位120将与储存能力的数据区块关联地设置。通过此种方法,在能力与正常数据之间区分为可能的,并且因此确保正常数据不用作能力。
如前文所提及,处理电路可用的当前能力组(经由能力寄存器60直接存取,还是留在经由能力寄存器中的有界指针的一者可存取的存储器地址空间内)形成能力域。因此,能力域标识可通过处理器存取的存储器的可用区域,以及任何关联许可/限制。如参照剩余图表论述,在所述实施例中提供可控机构以赋能设备改变能力域。
特别地,在一个实施例中,有界指针具备除了先前论述的指针值字段62、范围字段64及许可/限制字段66外的附加字段。特别地,规定能力状态区位可设置或清除以标识先前论述的执行状态或者默认状态。尽管能力属于先前参照图1论述的通用能力寄存器60的任一者内,但不使用此能力状态信息。然而,当将此种有界指针加载进PCC寄存器80时,引用此附加字段以便标识处理器的当前能力状态。
此参照图4举例说明,其示意地图标指定为能力寄存器CN的操作数的分支指令的操作。储存在能力寄存器CN内的能力200包括能力状态区位210。尽管能力储存在能力寄存器内,但不使用字段210中的信息。然而,当执行分支指令以将储存在能力寄存器CN内的能力加载进程序计数器能力寄存器80中时,则PCC寄存器80的产生更新的内容215现包含能力状态220,其具有与设置在能力200内的值相同的值。同样如图示意性地图示,将范围及许可信息自能力寄存器CN跨越复制进PCC中,并且能力CN中的指针值形成新的PC值。一旦已经更新PCC储存元件80,则处理电路的能力状态通过更新的PCC 215的能力状态位确定。
在一个实施例中,能力状态区位可以被认为是附加许可字段,并且可以以与其他许可相同的方式操纵。特别地,在处理器上运行的处理能够通常通过清除一个或多个许可位来去除其正在使用的能力的一个或多个许可,并且在一个实施例中将允许参照能力状态区位执行相同的处理。因此,此将允许清除指示执行状态的能力状态区位以指示默认状态。然而,按照关于能力的一般实践,不允许处理增大其许可,并且因此若清除能力状态区位则不允许设置能力状态区位,因而防止处理将执行状态与能力的能力状态区位关联,该能力的当前值指示默认状态。
在替代实施例中,能力状态区位210可认为是与许可字段分离的新型字段,并且可布置以便其不能通过使用该能力的处理来更改。
图5为类似于图4的图表,但图标当执行具有链接指令的分支时发生的操作,另外指定能力寄存器CN。特别地,当执行具有链接指令的分支时执行两种分离处理。如由步骤i图标,范围地址由当前PCC内容产生,其随后储存在能力链接寄存器(capability linkregister;CLR)中作为返回地址能力以供稍后当自分支返回时使用。如图所示,当前PCC能力250自PCC寄存器读出,并且用于产生储存在CLR中的返回地址能力260。CLR可以采取各种形式,但在一个实施例中为通用能力寄存器的专用一者,例如C30。作为处理的部分,当前PCC能力250内的能力状态255将跨越复制以在返回地址能力260内形成字段265,从而确保处理及时地自分支返回,能力状态将恢复至在发生分支之前存在的状态。
另外,在一个实施例中,将当前范围及许可信息自PCC跨越复制进返回地址能力,并且当前PC值通过指令大小增大,如功能270指示,以便在返回地址能力内生成返回地址。
如由步骤ii图标,将指定源寄存器CN内的能力随后复制进PCC储存元件80中,由于其当产生新的程序计数器能力290时将能力280内的能力状态285复制进PCC的能力状态区位295中。因而,处理电路的能力状态自CSA改变至CSB。
图6图标当执行返回指令时执行的处理。在执行返回指令时,将CLR的当前内容复制进PCC储存元件80中。因而,将包括其能力状态305的返回地址能力300复制进PCC储存元件中以形成具有关联能力状态区位315的新的程序计数器能力310,该关联能力状态区位的值与CLR的能力状态区位305中的值匹配。因而,处理电路的能力状态由更新的PCC的能力状态确定,则其将为在已经执行具有链接指令的初始分支之前就存在的相同能力状态。
经由上述机构,程序计数器能力可能在某些时候更新,以便它将执行状态指定为能力状态。当处于执行状态时,处理电路能够以比当处于该默认状态时受到更少约束的方式操作,以便允许更改能力域。此约束中的放松可以各种方式实施。例如,在一个实施例中,可布置处理器在执行状态下操作时不受能力约束。因而,无论何时引用能力,可忽略任何关联范围及限制信息,从而允许处理器存取在与处于默认状态时就位的能力域关联的区域之外的存储器区域。此允许例如存取附加能力,其随后可对当返回至默认状态时的处理器有用,从而产生更改的能力域。
在一些实施例中,在处于执行状态中操作时完全地去除对能力的引用可认为不合适的,并且反而可布置为,当处理电路在执行状态中操作时禁用一个或多个能力检查,但仍然执行另外的能力检查。例如,可确定当处于执行状态时,当使用程序计数器能力自存储器取出指令时不使用能力检查,并且因此忽略与PCC 80关联的范围84及约束86信息。
作为替代方案,或另外地,可忽略DDC 90,以便当处理器参照无界指针存取存储器时不执行能力检查。然而,可仍然在能力寄存器60中使用有界指针存取存储器的情况下,在允许进行存取之前检查关联范围及许可信息。
作为另一替代方案,并且如在图1中示意性地图示,可分组某些能力寄存器,以便存在当处理器在默认状态中操作时使用过的能力寄存器的版本,以及存在当处理器在执行状态中操作时使用的不同版本。例如,如图1中图标,可分组DDC寄存器,以便存在当处理器处于默认状态时使用的一个DDC寄存器90,以及当处理器处于执行状态时使用的不同DDC寄存器95。此允许当处于默认状态时使用的默认数据能力不同于当处于执行状态时使用的默认数据能力。特别地,用于执行状态中的默认数据能力可被布置为扩大可用地址的范围,及/或相对于当处于默认状态时使用的默认数据能力增大许可。作为另一实例,能力堆栈指针(capability stack pointer;CSP)可经标识出并且储存在用于默认状态中的关联寄存器96内。然而,可提供分组版本97,其当在执行状态中操作时反而引用为能力堆栈指针。因此,处理器可具有与其堆栈指针关联的不同能力,此取决于其在默认状态中还是在执行状态中操作,其中处理器取决于当前能力状态在不同分组寄存器之间切换。
尽管能力寄存器的分组已经参照DDC寄存器及CSP寄存器以举例的方式图标,但将理解在替代实施例中,如需要可分组附加的、或不同的能力寄存器。
作为分组某些能力寄存器的替代方案,反而可布置为将在执行状态中可用的相等能力设置成一些默认能力,例如最大能力。因此,考虑到DDC实例,可在默认状态时使用DDC寄存器90,但当在执行状态时可有效地硬编码预定DDC以由处理器使用。
作为使用分组能力寄存器的另一替代方案,可当能力状态改变时执行保存及恢复类型的功能,如由PCC中的能力状态信息指示。特别地,当能力状态自源状态变化至目标状态时,可将在一个或多个能力储存元件中关于源状态的能力保存至某些控制寄存器,以允许它们稍后恢复,并且一旦保存,则与目标状态关联的关联能力写入相关能力储存元件中。此外,此种处理可赋能当处理器在执行状态中操作时放松能力约束,通过当执行某些功能时向处理器提供更多通用许可及/或范围存取。
为了下列论述图7及图8,图4、图5及图6的所有先前描述的实例将一般称作分支指令,因为它们导致更新PCC储存元件80的内容以标识新的程序计数器能力。如参照图7论述,在一个实施例中可执行某些检查,当遇到任何此种分支指令时。特别地,一旦在用于更新PCC的步骤350处标识分支指令,则在步骤355确定当前PCC中的能力状态位是否与将改写当前内容的新PCC相同。若如此,则处理进行至步骤375,在步骤375中使用新PCC更新PCC寄存器80。
然而,若在步骤355确定能力状态位不同,则在步骤360确定新PCC的能力状态位是否指示默认状态。若否,则此指示更新将导致处理器自默认状态移动至执行状态,并且在一个实施例中,此为允许转换而不需要任何附加的检查。因此,处理进行至更新PCC内容的步骤375。
然而,若新PCC的能力位不指示默认状态,则此指示自执行状态至默认状态的转换,并且在一个实施例中若某些类型的分支指令用于执行该转换,则此为唯一允许的。因此,在步骤365,确定分支指令是否具有允许类型。在一个特定实施例中,三种允许类型的分支指令为受限分支(branch to restricted;BRR)指令、受限的具有链路寄存器的分支(branch with link register to restricted;BLRR)指令及受限的返回(return torestricted;RETR)指令。若分支指令为此等允许类型的一者,则处理进行至步骤375,而另外处理进行至采取预定动作的步骤370。
预定动作可采取各种形式,并且两个示例性选项在第8A图及第8B图中图示。如在第8A图中图标,一个选项为在步骤400发生异常而不完成分支指令的执行,由于其分支不更新PCC寄存器内容。相反,软件异常处理程序将控制转移至经执行以解决情况的适当错误处理程序。存在许多方式,异常处理程序可以该些方式解决情况。例如,在一个实施例中,它可允许更新PCC内容,但能力状态经强制继续标识执行状态。或者,它可以执行某些附加步骤以确保处理器将不具有任何执行特权,一旦它返回至约束状态,并且因此它可确保一旦处理器返回至约束状态,则它将由更改的能力域完全约束。
作为对第8A图中图示的处理的替代方案,可替代执行在第8B图中图示的处理,其有效地具有两个分立部分。首先,在步骤410处,在控制寄存器中设置旗标以标识不具有允许类型的分支指令设法以将处理器自执行状态转换至默认状态的方式更新PCC。此后,在步骤415处,允许完成分支指令的执行,从而导致新PCC储存在PCC寄存器80中并且标识默认状态。
如第8B图的部分ii图示,接着在步骤420确定何时执行下一个指令,以及一旦确定将执行下一个指令,则在步骤425确定是否仍然设置旗标,以及在步骤430是否发生异常,在什么时间清除旗标。随后触发异常处理程序,其可执行先前参照第8A图论述的处理。若确定在步骤425处不设置旗标,则允许指令在步骤435执行。
由于在第8B图中示出的处理,某些情况可能在标记已经设置及分支指令已完成之后,在触发异常之前发生。例如,保留标记状态及PCC内容的更高优先级的异常/中断可发生,随后清除标记并将不同的值加载进PCC中。随后可执行更高优先级异常例程以执行所需功能,并且在自异常返回时,将上述PCC内容恢复进PCC寄存器中以及将标记恢复至设定状态。在此时,一旦在步骤420标识下一个指令,则将确定设置标记,并且在步骤430发生异常以处理标记设置条件。
图9图示可使用的虚拟机实施方式。尽管先前所述实施例按照用于操作支持相关方法的特定处理硬件的设备及方法实施本发明,但亦可能提供硬设备的所谓虚拟机实施方式。此等虚拟机实施在运行支持虚拟机程序510的主操作系统520的主处理器530上运行。一般,要求大功率处理器提供以合理速度执行的虚拟机实施方式,但此种方法可在某些情况中调整,诸如当由于兼容性或者再使用的理由期望将本端代码运行至另一处理器时。虚拟机程序510可储存在计算机可读取储存媒体(其可为非暂时性媒体),并且将应用程序编程接口(指令执行环境)提供至与将由真实硬件提供的应用程序编程接口相同的应用程序500,该真实硬件为通过虚拟机程序510模型化的设备。用于管理能力域的上述方法可在虚拟机环境内实施。例如,运行于或控制虚拟机的软件可利用实施此种特征的硬件。
从上述实施例,将可见到,此等所述实施例提供了与可以通过多个异常阶层提供的特权正交的两阶层特权,其中每个异常阶层具有不同的软件执行特权。特别地,在异常阶层内,处理器可置于默认状态或者执行状态中,以及当处于执行状态时,处理电路可以比当处于默认状态时受到更少约束的方式操作,而在默认状态中处理器受当前能力域约束。此提供了按需要允许改变能力域的机构。
根据所述技术,将当前能力状态编码在设置在程序计数器能力内的信息内,并且因此分支机构可用于将新能力安装进程序计数器能力寄存器中,从而潜在地改变能力状态。此提供了用于允许处理电路选择性地获得改变能力域的能力的简单且有效的机构。
在本申请案中,使用用语“被配置为……”意谓设备元件具有能够执行所定义操作的结构。在此上下文中,“配置”意谓硬件或软件的互连的排列或方式。例如,设备可具有提供定义操作的专用硬件,或处理器或其他处理元件可经程序化以执行功能。“被配置为”不暗示设备元件需要以任何方式改变以便提供所定义的操作。
尽管本文已参考所附图式详细地描述本发明的说明性实施例,但应理解,本发明并不限于这样的精确实施例且熟习此项技术者可在不背离如随附申请专利范围所限定的本发明的范畴及精神的情况下在其中实施各种改变、添加及修改。例如,可在不脱离本发明的范畴下,对从属权利要求的特征与独立权利要求的特征进行多种组合。

Claims (19)

1.一种设备,包括:
处理电路,用于执行指令,该处理电路当处于默认状态时被布置为在能力域中操作,该能力域包括能力,该能力用于约束当执行所述指令时由该处理电路执行的操作;以及
程序计数器能力储存元件,用于储存由该处理电路用来确定程序计数器值的程序计数器能力,该程序计数器能力标识该处理电路的能力状态;
该处理电路被布置为响应于该能力状态指示所述默认状态而在该能力域中操作;并且
该处理电路被布置为响应于该能力状态指示执行状态而以比当处于所述默认状态时受到更少约束的方式操作,以允许更改该能力域。
2.根据权利要求1所述的设备,其中,该处理电路被布置为执行标识能力的分支指令,以将所标识的能力移入该程序计数器能力储存元件中以形成新的程序计数器能力,随后该处理电路在由该新的程序计数器能力标识的能力状态中操作。
3.根据权利要求2所述的设备,其中:
该分支指令为具有链接指令的分支;
在执行具有链接指令的该分支之前,储存在该程序计数器能力储存元件中的该程序计数器能力形成旧的程序计数器能力;并且
该处理电路被布置为使用该旧的程序计数器能力以生成用于储存在返回地址能力储存元件中的返回地址能力,该返回地址能力保持由该旧的程序计数器能力标识的能力状态。
4.根据权利要求3所述的设备,其中,该处理电路被布置为执行返回指令以将该返回地址能力写入该程序计数器能力储存元件中以形成返回程序计数器能力,随后该处理电路在由该返回程序计数器能力标识的能力状态中操作。
5.根据前述权利要求中的任一项所述的设备,其中,当该能力状态指示该执行状态时,该处理电路被布置为:通过将该处理电路布置成在该执行状态中操作时不受能力约束,来以比当处于该默认状态时受到更少约束的方式操作。
6.根据权利要求1-4中的任一项所述的设备,其中,当该能力状态指示该执行状态时,该处理电路被布置为通过当该处理电路在该执行状态中操作时禁用至少一项能力检查,来以比当处于该默认状态时受到更少约束的方式操作。
7.根据权利要求6所述的设备,其中,所禁用的至少一项能力检查包括以下项中的至少一者:
当程序计数器值用于标识要从存储器取出的指令的地址时参照程序计数器能力来执行的能力检查;以及
当无界指针用于标识存储器中的要存取的数据区块的地址时参照默认数据能力来执行的能力检查。
8.根据权利要求1-4中的任一项所述的设备,进一步包括:
一组或多组经分组的能力储存元件,用于储存能力,每组经分组的能力储存元件包括第一能力储存元件,该第一能力储存元件用于储存用于约束当该处理电路在该默认状态中操作时由该处理电路执行的操作的能力;以及第二能力储存元件,该第二能力储存元件用于储存用于约束当该处理电路在该执行状态中操作时由该处理电路执行的操作的能力;
其中,在每组经分组的能力储存元件中的第一能力储存元件和第二能力储存元件中所标识的能力使得:当该能力状态指示该执行状态时,该处理电路以比当处于该默认状态时受到更少约束的方式操作。
9.根据权利要求1-4中的任一项所述的设备,进一步包括:
一个或多个能力储存元件,用于储存用于约束由该处理电路执行的操作的能力;
当对该程序计数器能力的更新导致该能力状态自源状态变化至目标状态时,所述一个或多个能力储存元件中关于所述源状态的能力被保存以允许它们稍后被恢复,并且与该目标状态关联的关联能力被写入所述一个或多个能力储存元件中;
其中,当该能力状态变换至该执行状态时,被写入所述一个或多个能力储存元件中的能力使得该处理电路以比当处于该默认状态时受到更少约束的方式操作。
10.根据依赖于权利要求2的前述权利要求中的任一项所述的设备,其中:
当该分支指令标识将导致该能力状态自该执行状态变化至该默认状态的能力时,该处理电路被布置为执行检查操作以确定是否允许使用如使用由该分支指令标识的能力所更新的程序计数器能力。
11.根据权利要求10所述的设备,其中,所述检查操作包括:确定该分支指令是否为如下类型的分支指令,其允许以将导致该能力状态自该执行状态变化至该默认状态的方式来更新储存在该程序计数器能力储存元件中的能力。
12.根据权利要求10或11所述的设备,其中,在确定用于该检查操作的失效条件时,该处理电路被布置为执行预定动作。
13.根据权利要求12所述的设备,其中,该预定动作包括以下项中的一者:
在执行该分支指令时发生异常;
设置旗标,并且允许执行该分支指令以更新该程序计数器能力,该旗标的设置导致当执行下一个指令时将发生异常。
14.根据前述权利要求中的任一项所述的设备,其中,当在该执行状态中操作时,允许该处理电路更改储存在该程序计数器能力储存元件中的该程序计数器能力以将能力状态变化至该默认状态。
15.根据前述权利要求中的任一项所述的设备,其中,所述能力中的一个或多个能力包括有界指针。
16.一种在设备内管理能力域的方法,该设备具有用于执行指令的处理电路,该处理电路当处于默认状态时被布置为在该能力域中操作,该能力域包括能力,该能力用于约束当执行所述指令时由该处理电路执行的操作,该方法包括以下步骤:
在程序计数器能力储存元件内储存由该处理电路用来确定程序计数器值的程序计数器能力,该程序计数器能力标识该处理电路的能力状态;
响应于该能力状态指示所述默认状态,在该能力域中操作该处理电路;以及
响应于该能力状态指示执行状态,以比当处于所述默认状态时受到更少约束的方式操作该处理电路,以允许更改该能力域。
17.一种设备,包括:
处理装置,用于执行指令,该处理装置当处于默认状态时用于在能力域中操作,该能力域包括能力,该能力用于约束当执行所述指令时由该处理装置执行的操作;以及
程序计数器能力储存元件装置,用于储存由该处理装置用来确定程序计数器值的程序计数器能力,该程序计数器能力标识该处理装置的能力状态;
响应于该能力状态指示所述默认状态,该处理装置用于在该能力域中操作;以及
响应于该能力状态指示执行状态,该处理装置用于以比当处于该默认状态时受到更少约束的方式操作,以允许更改该能力域。
18.一种虚拟机计算机程序,其包括程序指令,该程序指令用于控制主数据处理设备以提供对应于根据权利要求1-15中的任一项所述的设备的指令执行环境。
19.一种计算机可读储存介质,其储存根据权利要求18所述的虚拟机计算机程序。
CN201880032291.9A 2017-05-25 2018-04-27 用于管理能力域的设备及方法 Active CN110622133B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1708395.7 2017-05-25
GB201708395A GB2563010B (en) 2017-05-25 2017-05-25 An apparatus and method for managing a capability domain
PCT/GB2018/051114 WO2018215733A1 (en) 2017-05-25 2018-04-27 An apparatus and method for managing a capability domain

Publications (2)

Publication Number Publication Date
CN110622133A true CN110622133A (zh) 2019-12-27
CN110622133B CN110622133B (zh) 2024-06-07

Family

ID=59270818

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880032291.9A Active CN110622133B (zh) 2017-05-25 2018-04-27 用于管理能力域的设备及方法

Country Status (9)

Country Link
US (1) US11347508B2 (zh)
EP (1) EP3631620A1 (zh)
JP (1) JP7280196B2 (zh)
KR (1) KR102528701B1 (zh)
CN (1) CN110622133B (zh)
GB (1) GB2563010B (zh)
IL (1) IL270500B2 (zh)
TW (1) TWI770172B (zh)
WO (1) WO2018215733A1 (zh)

Families Citing this family (5)

* 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
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
KR102221593B1 (ko) * 2020-10-23 2021-03-02 주식회사 오파스넷 단말의 설치 환경 유지를 위한 시스템
EP4092556A1 (en) * 2021-05-20 2022-11-23 Nordic Semiconductor ASA Bus decoder

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
GB201515256D0 (en) * 2015-08-27 2015-10-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behavior
CN108351935A (zh) * 2015-11-12 2018-07-31 Arm有限公司 用于控制有界指针的使用的设备及方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US7370210B2 (en) 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US8850573B1 (en) 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
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
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281459A (zh) * 2007-04-03 2008-10-08 Arm有限公司 受保护的功能调用
GB201515256D0 (en) * 2015-08-27 2015-10-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behavior
CN107924366A (zh) * 2015-08-27 2018-04-17 Arm 有限公司 用于控制指令执行行为的装置及方法
CN108351935A (zh) * 2015-11-12 2018-07-31 Arm有限公司 用于控制有界指针的使用的设备及方法

Also Published As

Publication number Publication date
TWI770172B (zh) 2022-07-11
IL270500A (zh) 2020-01-30
US20200050454A1 (en) 2020-02-13
IL270500B2 (en) 2024-03-01
GB2563010A (en) 2018-12-05
EP3631620A1 (en) 2020-04-08
JP2020521225A (ja) 2020-07-16
WO2018215733A1 (en) 2018-11-29
KR20200010308A (ko) 2020-01-30
JP7280196B2 (ja) 2023-05-23
GB201708395D0 (en) 2017-07-12
US11347508B2 (en) 2022-05-31
IL270500B1 (en) 2023-11-01
KR102528701B1 (ko) 2023-05-04
GB2563010B (en) 2019-12-25
CN110622133B (zh) 2024-06-07
TW201901422A (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
CN108292272B (zh) 用于管理有界指针的装置和方法
CN108351935B (zh) 用于控制有界指针的使用的设备及方法
CN110622133B (zh) 用于管理能力域的设备及方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN110799939B (zh) 用于控制指令的执行的设备与方法
EP3631621B1 (en) An apparatus and method for interpreting permissions associated with a capability
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
US20240202139A1 (en) Technique for constraining access to memory using capabilities
TW202319913A (zh) 用於使用能力限制對記憶體存取之技術
CN118202349A (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