CN108292272B - 用于管理有界指针的装置和方法 - Google Patents

用于管理有界指针的装置和方法 Download PDF

Info

Publication number
CN108292272B
CN108292272B CN201680068762.2A CN201680068762A CN108292272B CN 108292272 B CN108292272 B CN 108292272B CN 201680068762 A CN201680068762 A CN 201680068762A CN 108292272 B CN108292272 B CN 108292272B
Authority
CN
China
Prior art keywords
state
pointer
processing circuitry
bounded
range check
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
CN201680068762.2A
Other languages
English (en)
Other versions
CN108292272A (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 CN108292272A publication Critical patent/CN108292272A/zh
Application granted granted Critical
Publication of CN108292272B publication Critical patent/CN108292272B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • 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
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30105Register structure
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Abstract

提供了一种用于管理有界指针的装置及方法。该装置具有:处理电路,该处理电路用于运行指令序列;以及多个存储装置元件,该多个存储装置元件可由处理电路存取,用于存储有界指针及非有界指针。每个有界指针具有与其相关联的显式范围信息,其中,显式范围信息在使用有界指针时指示可允许的存储器地址范围。接着,使用当前范围检查存储装置元件以存储用于处理电路的当前范围检查状态。在当前范围检查状态指示默认状态时,处理电路响应于识别待用于识别存储器地址的指针的存储器存取指令的运行而执行范围检查操作,以确定对该存储器地址的存取是否被许可。具体地,当存储器存取指令将有界指针中的一者识别为所述指针时,参考与该有界指针相关联的显式范围信息来执行范围检查操作。若相反地,存储器存取指令将非有界指针识别为所述指针时,则参考针对处理电路所定义的默认范围信息执行范围检查操作。当检测到至少一个事件时,将当前范围检查状态设定为运行状态。当在运行状态中时,处理电路响应于存储器存取指令的运行以在经识别的指针是非有界指针时禁用范围检查操作。这提供了一种用于使得能够变更可用于处理电路的有界指针集的有效但受控制的机制。

Description

用于管理有界指针的装置和方法
技术领域
本技术涉及数据处理领域。
背景技术
一些数据处理装置可支持其中指示特定地址的指针与指示用于该指针的可运行地址范围的范围信息相关联的有界指针。例如,该指针可被称为“胖指针(fat pointer)”。
可提供若干有界指针寄存器用于存储供数据处理装置的处理电路存取的有界指针。该有界指针寄存器内的每个有界指针将识别可由处理电路存取的存储器地址的不可扩展范围,且因此每个有界指针可被称为能力(capability)(识别处理电路能够存取的可允许的存储器地址范围)。虽然可允许处理电路分步骤减小与可用于该处理电路的任何特定有界指针相关联的范围,但处理电路不可在正常操作中扩展范围以试图增加由该有界指针给予处理电路的能力。
由有界指针寄存器内的有界指针识别的存储器地址的任何特定范围可含有数据、指令和/或其他能力(即,其他有界指针)。因此,应理解的是,在任何时候处理电路存取存储器的能力由包括有界指针寄存器中所识别的能力及可经由那些有界指针寄存器中所保持的能力存取的任何额外能力的能力集定义,且该能力集在本文中将被称为能力域。
在数据处理装置的操作期间可需要试图变更处理电路的能力域。然而,这可需要存取虑及当前能力域的能力而不可存取的存储器地址。
期望提供一种用于达成处理电路的能力域中的这样的改变的有效且可靠的机制。
发明内容
在一个示例配置中,提供了一种装置,其包括:处理电路,该处理电路用于运行指令序列;多个存储装置元件,该多个存储装置元件可由处理电路存取,用于存储有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,该显式范围信息在使用有界指针时指示可允许的存储器地址范围;以及当前范围检查存储装置元件,该当前范围检查存储装置元件用于存储用于处理电路的当前范围检查状态;在当前范围检查状态指示默认状态时,处理电路响应于识别待用于识别存储器地址的指针的指令序列中的存储器存取指令的运行而执行范围检查操作,以确定对该存储器地址的存取是否被许可;当存储器存取指令将该有界指针中的一者识别为所述指针时,参考与该有界指针相关联的显式范围信息执行范围检查操作,且当存储器存取指令将该非有界指针中的一者识别为所述指针时,参考针对处理电路所定义的默认范围信息执行范围检查操作;当检测到至少一个事件时,将当前范围检查状态设定为运行状态;且当在运行状态中时,处理电路响应于执行该存储器存取指令以在经识别的指针是非有界指针时禁用范围检查操作。
在另一示例配置中,提供了一种操作装置的方法,该装置具有:处理电路,用于运行指令序列;以及多个存储装置元件,用于存储供处理电路存取的有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,该显式范围信息在使用该有界指针时指示可允许的存储器地址范围,该方法包括:存储用于处理电路的当前范围检查状态;在当前范围检查状态指示默认状态时,则响应于识别待用于识别存储器地址的指针的指令序列中的存储器存取指令的运行而执行范围检查操作,以确定对该存储器地址的存取是否被许可;当存储器存取指令将该有界指针中的一者识别为所述指针时,参考与该有界指针相关联的显式范围信息执行范围检查操作,且当存储器存取指令将该非有界指针中的一者识别为指针时,参考针对处理电路所定义的默认范围信息执行范围检查操作;以及当检测到至少一个事件时,将当前范围检查状态设定为运行状态;当在运行状态中时,处理电路响应于执行该存储器存取指令以在经识别的指针是非有界指针时禁用范围检查操作。
在又一示例配置中,提供了一种装置,包括:处理设备,其用于运行指令序列;多个存储装置元件设备,其供处理设备存取且用于存储有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,此显式范围信息在使用该有界指针时指示可允许存储器地址范围;以及当前范围检查存储装置元件设备,其用于存储用于处理设备的当前范围检查状态;在当前范围检查状态指示默认状态时,处理设备用于响应于识别待用于识别存储器地址的指针的指令序列中的存储器存取指令的运行而执行范围检查操作,以确定对该存储器地址的存取是否被许可;当存储器存取指令将该有界指针中的一者识别为所述指针时,参考与该有界指针相关联的显式范围信息执行范围检查操作,且当存储器存取指令将该非有界指针中的一者识别为所述指针时,参考针对处理设备所定义的默认范围信息执行范围检查操作;当检测到至少一个事件时,当前范围检查状态被设定为运行状态,且当在运行状态中时,处理设备用于在经识别指针是非有界指针时于存储器存取指令的运行期间禁用范围检查操作。
附图说明
仅通过举例的方式,参照如附图所示的实施例进一步描述本技术,其中:
图1为根据一个实施例的装置的框图;
图2示出了指令类型的示例,其中,若尝试设定或存取有界指针存储装置元件集内的指针值,则可针对指令类型触发错误,其中该指针值用于指定由相关联的范围信息所指示的范围外的地址;
图3示出了根据一个实施例的与有界指针相关联的标记位元的使用;
图4示意性地示出了根据一个实施例的如何按照各种各样的不同情形中的能力监管存储器存取;
图5为示出了根据一个实施例的在采取例外时保存于经保存过程状态寄存器内的数据且根据一个实施例的识别两个可能当前范围检查状态的示图;
图6为示出了根据一个实施例的在采取例外时执行的步骤的流程图;
图7为示出了根据一个实施例的自例外返回时所采取的步骤的流程图;
图8示出了根据一个实施例的可如何提供多个例外等级;
图9示出了根据一个实施例的由于采取例外且随后自这些例外的返回而在各种例外等级之间转变的示例性顺序;
图10示出了根据一个实施例提供的存取控制寄存器的格式;以及
图11为示出了如何根据范围检查状态当前是否为运行状态而使用图10的存取控制寄存器的流程图。
具体实施方式
在参考附图论述实施例之前,提供了实施例的以下描述。
一些处理装置可支持有界指针的使用。例如,指针本身可指出(或用于确定)待存取的数据值的地址或待执行的指令。然而,指针亦可具有在使用该指针时指示可允许地址范围的相关联范围信息。例如,此可用于确保依据指针确定的地址保持于某些边界内以维持行为的安全性或功能正确性。例如,对基于能力的架构越来越感兴趣,在该基于能力的架构中某些能力经定义用于给定过程,且若尝试实施在所定义能力以外的操作,则可触发错误。用于有界指针的范围信息可为针对该架构所定义的能力信息的部分,且在基于能力的架构内,该有界指针(包含其相关联的能力信息)可被称为能力。
因此,装置可具有用于存储具有相关联的范围信息的指针的有界指针存储装置元件,此相关联的范围信息在使用该指针时指示可允许地址范围。每个有界指针存储装置元件可以是寄存器或通用存储器中的存储器位置,例如,堆栈存储器上的位置。
可使用存储器存取指令来提及这样的有界指针存储装置元件,以便获得随后用于导出在操作指令期间所需的存储器中的地址的指针。可直接使用指针来识别存储器地址,或可使用指针来确定存储器地址,例如,藉由将偏差添加至指针值。
以下情况亦是可能的:某些存储器存取指令可识别存储于数据处理装置的通用寄存器内的非有界指针。为确保这些存取亦受局限,可指定默认范围信息(在一个实施例中,该默认范围信息可从与可用于处理电路的有界指针中的至少一者相关联的范围导出),且待参考非有界指针执行的任何存储器存取使得对照默认范围信息检查存储器地址。
通过该方法,可以有效监管由处理电路进行的存储器存取,而无论根据当前能力域参考可用于处理电路的显式有界指针执行还是使用非有界指针(通过将存储器存取有效地限制到处于当前能力域的可允许存储器地址范围内的默认存储器地址范围)。然而,如先前所述,出现的问题是如何有效且可靠地提供一种将使得能力域能够改变的机制。
根据一个实施例,提供了一种装置,此装置具有:处理电路,其用于执行一指令序列;以及多个存储装置元件,其可由处理电路存取,且可将有界指针及非有界指针两者存储于这些存储装置元件内。每个有界指针具有与其相关联的显式范围信息,该显式范围信息在使用有界指针时指示可允许存储器地址范围。进一步而言,该装置具有当前范围检查存储装置元件以存储用于处理电路的当前范围检查状态。用于当前范围检查状态的可能值包括默认状态及运行状态。当在默认状态中时,处理电路响应于识别指针的存储器存取指令的运行而执行范围检查操作,以确定是否许可从指针导出的存储器地址的存取。具体地,当存储器存取指令识别到有界指针中的一者时,参考与该有界指针相关联的显式范围信息执行范围检查操作。若相反地,存储器存取指令识别到非有界指针中的一者时,则参考针对处理电路所定义的默认范围信息执行范围检查。因此,这样确保实施与当前能力域相关联的安全性。
然而,当检测到至少一个事件时,将当前范围检查状态设定为运行状态。当在运行状态中时,处理电路则运行存储器存取指令,当经识别的指针是非有界指针时,禁用范围检查操作。通过该方法,提供了以下的机制:允许在运行状态中操作的处理电路存取从非有界指针导出的存储器地址,甚至在这些存储器地址处于通过当前能力域所定义的可允许存储器地址范围以外的情况下亦允许上述操作。透过该机制,因此可能在处理电路处于运行状态中的同时执行一个或多个存储器存取,以便变更将使得可用于处理电路的有界指针集。例如,通过该机制,可沿任一方向在多个存储装置元件与存储器之间(包含关于处于先前在默认状态中执行时与处理电路相关联的能力域以外的存储器地址)移动非有界指针及有界指针两者。因此,当处理电路随后从运行状态返回至默认状态时,可向该处理电路提供经修改的有界指针集,从而提供了经修改的能力域。
然而,由于仅当处理电路是在运行状态中时禁用针对非有界指针的范围检查操作,且当检测到一个或多个指定事件时发生转变至运行状态,可严格控制处理电路改变能力域的能力。因此,这提供了一种用于改变可用于处理电路的有界指针集且由此改变能力域的极有效且可靠的机制。
导致将当前范围检查状态设定为运行状态的事件类型可采取多种形式,但在一个实施例中包括藉由处理电路采取例外。因此,在一个实施例中,当采取例外时,则处理电路被配置为转变至运行状态,而不考虑采取例外时的当前范围检查状态。这样,则使得藉由采取例外触发的例外处置操作能够有机会达成可用于处理电路的有界指针集的某些改变,同时该处理电路保持在运行状态中。
在一个实施例中,装置还包括经保存范围检查存储装置元件,以存储经保存范围检查状态。当采取例外时,经保存范围检查存储装置元件经更新以在响应于采取例外而将当前范围检查状态设定为运行状态之前,存储由处理电路使用的当前范围检查状态作为经保存范围检查状态。因此,这样确保获取在采取例外时正由处理电路使用的当前范围检查状态,从而允许稍后参考该信息。
具体地,在一个实施例中,当自例外返回时,当前范围检查存储装置元件则经更新以识别如先前在经保存范围检查存储装置元件中获取的经保存范围检查状态作为当前范围检查状态。
若藉由在处理电路处于运行状态中的同时执行一个或多个存储器存取而对有界指针集进行任何修改,则当自例外返回时处理电路将使该经修改的有界指针集为其可用。
除了能够藉由将常驻于先前不可藉由当前能力域存取的存储器地址处的一个或多个有界指针载入至多个存储装置元件中,和/或藉由通过排列这些有界指针以包含其中存储其他(先前不可存取)有界指针的存储器地址区进一步变更可存取的存储器地址范围而变更可用有界指针集以外,亦可在处于运行状态中的同时允许处理电路变更与特定有界指针相关联的范围信息。因此,根据当前能力域处理电路可以存取的有界指针可使其相关联的范围信息增加以有效地增加与该有界指针相关联的权利。具体地,可提供某些有特权指令或可向指令传达特权的能力,这些指令可修改现有的有界指针(能力)以藉由增加相关联的范围或任何相关联的许可而添加多于其当前提供的权利的权利。然而,藉由使用上述实施例的范围检查状态,这些指令能够修改现有能力可局限于处理电路处于运行状态中时,以使得限制有界指针的任何这样的改变在处理电路处于运行状态中的同时执行。
在一个实施例中,在处于运行状态中的同时,若存储器存取指令识别到待用于确定所存取的存储器地址的有界指针,则仍执行范围检查操作。因此,若使用任何特定有界指针来存取存储器,则在处于运行状态中的同时仍实施与这些有界指针相关联的限制。然而,在可选的实施例中,当在运行状态中时,处理电路可被配置为在由存储器存取指令指定的指针是有界指针时进一步禁用范围检查操作,藉此提供进一步增强的灵活性以使处理电路在运行状态中操作以存取在与当前能力域相关联的存储器地址范围以外的存储器地址范围。
可以以多种方式指定针对处理电路所定义的默认范围信息,但在一个实施例中提供其中存储默认范围信息的默认范围存储装置元件。在一个实施例中,从与当前能力域中的可用于处理电路的有界指针中的一者或多者相关联的范围信息导出存储于默认范围存储装置元件内的范围信息。
在一个实施例中,处理电路被配置为发布提取存储器地址以识别待提取用于随后由处理电路执行的指令,当在默认状态中时,处理电路被配置为在发布提取存储器地址以便参考针对处理电路所定义的默认提取范围信息确定是否许可提取存储器地址的存取之前,执行提取范围检查操作。然而,当在运行状态中时,处理电路被配置为禁用提取范围检查操作。
藉由当在运行状态中时禁用提取范围检查操作,这允许处理电路存取其以前在处于默认状态中的同时不可存取的指令。因此,此提供关于执行何种指令以实施在采取例外时执行的例外处置操作的灵活性。
可以以多种方式导出提取存储器地址,但在一个实施例中藉由程序计数器值来确定提取存储器地址,且在此实施例中,默认提取范围信息是程序计数器范围信息。
可以以多种方式指定默认提取范围信息,但在一个实施例中将默认提取范围信息限制到由当前能力域中的可用于处理电路的有界指针中的一者或多者指定的可允许存储器地址范围内的存储器地址范围。
在一个实施例中,处理电路可在多个例外等级下操作,其中,每个例外等级具有不同软件执行特权。接着,处理电路可被配置为响应于由处理电路采取的至少一个例外子集而改变其正操作所处的例外等级。在一个实施例中,当前范围检查状态正交于(orthogonalto)各种例外等级,且因此当处理电路正在例外等级中的至少一者中操作时,当前范围检查状态可在运行状态与默认状态之间切换同时保持处于相同例外等级。
在一些实例中,当采取例外时,处理电路可保持处于相同例外等级,且仅在采取例外时转变至运行状态,且自例外返回时及时地返回至受限制状态。
然而,在其他实例中,采取例外导致处理电路从第一例外等级转变至第二例外等级,经保存范围状态存储装置元件被更新以在采取例外之前识别由处理电路在第一例外等级下使用的范围检查状态,且在将处理电路转变至第二例外等级时将当前范围检查状态设定为运行状态。在一个实施例中,第二例外等级可具有高于第一例外等级的软件执行特权等级。
当处理电路正在第二例外等级下执行例外处置操作的同时,在一个实施例中,该处理电路可保持在运行状态中达整个该周期。然而,在可选实施例中,在第二例外等级下的操作期间,处理电路可被布置为以将当前范围检查状态自运行状态改变至默认状态。具体地,在一个实施例中,处理电路可被配置为使得处理电路保持在运行状态中仅长达与执行局限于在处理电路处于运行状态中的同时执行的任何修改所需时间一样长的时间。此后,处理电路返回至默认状态以执行例外处置操作的其余部分。藉由此方法,可将在运行状态中操作实际所需的代码局限于小的、自含且可验证的代码。接着无需信任由处理电路在第二例外等级下执行的其他代码在处理电路处于运行状态中的同时执行,且取而代之的是,处理电路在执行这样的代码之前返回至默认状态。
在一个实施例中,自例外返回时,处理电路被配置为往回转变至第一例外等级,且当前范围检查存储装置元件被更新以将经保存范围检查状态识别为当前范围检查状态,除非这会在自例外返回时导致当前范围检查状态自默认状态改变至运行状态。
存在其中可处置对以下情况的检测的若干方式:当自例外返回时尝试自默认状态往回改变至运行状态。在一个实施例中,当检测到该情形时,可采取额外的例外以便实施适当例外处置例程。在可选实施例中,当处理电路返回至第一例外等级时,过程状态的所有其他态样可经复原以用于处理电路,而非允许将范围检查状态改变至运行状态,取而代之的是,强制其保持在默认状态中。当处于默认状态中时,与默认状态相关联的所有存储器存取检查则会适当出现,且因此会限制可由处理电路存取存储器中的何种地址。
在操作期间,处理电路可以对若干系统寄存器进行存取并进行诸如转译上下文控制、系统呼叫及例外返回之类的操作。在一些实例中,取代允许不受限制的存取,可使用已知的存取控制机制以对由处理电路进行的对系统寄存器及操作的存取施加一些限制。然而,对这样的系统寄存器及操作的存取(本文亦被称为功能性)可潜在地破坏藉由能力域提供的安全性。为缓解该问题,在一个实施例中,装置还包括具有一个或多个字段的存取控制存储装置元件,每个字段与对应功能性集相关联且具有指示在处理电路处于默认状态中时可由处理电路存取该对应功能性集的值。当在运行状态中时,处理电路对每个对应功能性集的存取独立于存取控制存储装置中的相关联值。藉由该方法,当在默认状态中时可藉由存取控制寄存器的内容来限制处理电路存取某些功能性集的能力,因此减小损坏由能力域提供的安全性的能力。然而,当在运行状态中时,有效忽略存取控制存储装置的内容,且不藉由存取控制存储装置中的相关联值管控由存取控制存储装置所控制的处理电路对各种功能性集的存取。
取而代之的是,在运行状态中,处理电路可不受限制地存取某些功能性集或可具有受现有存取控制机制控制的存取。然而,当在默认状态中时,存取控制寄存器的使用可使得能够对功能性集中的至少一些的存取施加进一步限制,这些限制超越在处于运行状态中时适当出现的任何限制。
在一个实施例中,在默认状态中防止处理电路更新存取控制存储装置元件。取而代之的是,将存取控制存储装置的任何更新限制于在处理电路处于运行状态中的同时执行。
现将参考附图描述特定实施例。
图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可将这些指令映射至多个经解码指令,这些可被称为微运算(μops或uops)。因此,在从L1指令高速缓存20提取的指令与如藉由流水线的稍后级所见的指令之间可不存在一对一关系。一般而言,本申请中的对“指令”的引用应理解为包含微运算。
将经解码指令传递至发布级10,该发布级确定运行指令所需的操作数是否可用且在操作数可用时发布指令以供运行。一些实施例可支持有序处理以使得以对应于其中从L1指令高速缓存20提取指令的程序次序的次序发布指令以供运行。其他实施例可支持无序执行以使得以不同于程序次序的次序将指令发布至运行级12。无序处理可用于改良效能,因为当等待操作数时而使较早指令停滞(stall),可首先运行程序次序中的其操作数可用的较后指令。
发布级10将指令发布至运行级12,在运行级处运行指令以执行各种数据处理操作。例如,运行级可包含若干运行单元30、32、34,这些运行单元包含:算术/逻辑单元(ALU)30,其用于对整数值执行算术或逻辑运算;浮点(FP)单元32,用于对以浮点形式表示的值执行运算;以及加载/存储单元34,其用于执行用于将来自1阶(L1)数据高速缓存36的数据值加载至寄存器40的加载操作,或用于将来自寄存器40的数据值存储至L1数据高速缓存36的存储操作。应理解的是,这些仅是可提供的运行单元的类型的一些示例,且亦可提供诸多其他种类。为执行处理操作,运行级12可从寄存器集40读取数据值。接着,可藉由回写级14将经运行的指令的结果回写至寄存器40。
L1指令高速缓存20及L1数据高速缓存36可以是包含多个高速缓存位阶的高速缓存层级的部分。例如,亦可提供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(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,其可用于确定待存取的数据值的地址;以及范围信息64,其指定在使用相应指针62时的可允许地址范围。可选地,有界指针寄存器60亦可包含其他限制信息66(本文亦被称为许可信息),其他限制信息可定义在使用指针时的一个或多个限制/许可。例如,可使用限制66来限制可使用指针62的指令类型或流水线4中可使用指针的模式。因此,范围信息64及限制信息66可被认为定义允许在其内使用指针62的能力。当尝试在所定义能力以外使用指针62时,会触发错误。例如,范围信息64可用于确保指针保持于某些已知边界内且不偏离到可能含有敏感或安全信息的存储器地址空间的其他区域。例如,当运行识别待用于识别存储器地址的有界指针中的一者的存储器存取指令时,可执行边界检查操作(本文亦被称为范围检查操作)以参考针对该有界指针所提供的显式范围信息来检查是否许可对存储器地址的存取。
在其中针对通用数据寄存器及有界指针寄存器两者使用同一实体存储的实施例中,则在一个实施例中,可例如将指针值62存储于与被用于相应通用寄存器的存储位置的相同的存储位置内。
图2示出了指令类型的示例,其中,使用可允许范围来进行保护以避免对数据或指令的未经授权的存取。如图2的顶部部分中所示,特定有界指针寄存器PR1包含给定指针值62和范围信息64,在该示例中使用定义可允许范围的下界的下界地址68及定义可允许范围的上界的上界地址69来指定范围信息。例如,边界68、69被设定为定义地址范围80000至81000。当某些指令参考有界指针寄存器PR1且依据指针62确定的地址在于该范围以外时,可触发错误。
例如,如图2的部分A中所示,在一些系统中,若尝试将指针寄存器60中的指针62的值设定为是由范围信息64指定的范围以外的值(本文假定指针直接指定地址),则可触发错误。这避免指针62采取在所指定范围以外的任何值,以使得可确保使用该指针的任何存取安全地在所允许范围内。可选地,如图2的部分B中所示,当指令尝试在指针62的地址在所指定范围以外时存取藉由该地址识别的位置时,可触发错误。因此,仍可允许将指针62设定为所指定范围以外的值,但一旦尝试对指针地址(或从指针导出的地址)处的数据存取,即可在该地址处于所允许范围以外的情况下触发错误。其他系统可响应于图2的部分A及部分B中所示的两种指令类型而触发错误。
可以不同方式设定范围信息64。例如,安全码或操作系统或超管理器可指定对于给定指针所允许的范围。例如,指令集架构可包含用于设定或修改用于给定指针62的范围信息64的若干指令,且这些指令的运行可限制于某些软件或处理器4的某些模式或例外等级。在本文稍后所述的实施例中,处理器是可在默认状态与运行状态之间切换,且以上改变范围信息的能力可限制于其中处理器正在运行状态中操作的实例。
除当运行引用指针的某些指令时可在运行状态12下使用的有界指针存储装置元件集60以外,亦可使用程序计数器能力(PCC)寄存器80以在正从1阶指令高速缓存20提取指令时提供提取级6处的类似功能性。具体地,可将程序计数器指针存储于字段82中,其中PCC80亦提供范围信息84及任何适当限制信息86,类似于利用有界指针存储装置元件集60中的指针中的任一者所提供的范围及限制信息。
此外,在一个实施例中,亦可在通用寄存器40内指定非有界指针且在执行存储器存取时使用这些非有界指针。为限制可使用这些非有界指针存取的存储器地址,可提供默认数据能力(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存取或驻存于可经由能力寄存器中的有界指针中的一者存取的存储器地址空间内)的当前有界指针集形成能力域。因此,能力域识别可由处理器存取的存储器的可用区,连同任何相关联的许可/限制。为提供用于变更能力域的受控制的机制,根据一个实施例,提供在本文中被称为范围检查状态的额外状态。具体地,可将范围检查状态设定为默认状态或运行状态。默认状态是其中处理电路将被设定的典型状态,且当处于默认状态中时,在试图存取存储器时执行所有上述范围检查。因此,当试图藉由参考有界指针存储装置元件60中的有界指针中的一者识别地址来存取存储器时,可使用与有界指针存储装置元件中的该有界指针相关联的相关联显式范围信息来执行范围检查操作。类似地,当试图存取从通用寄存器40中的非有界指针导出的存储器地址时,可在执行范围检查操作时参考DDC寄存器90内的默认范围信息。此外,当提取级6试图从指定存储器地址提取指令时,可在执行范围检查操作时参考PCC寄存器80内的范围信息。假定允许关于范围检查操作进行存取,则从存储器地址(在将数据/指令存储于高速缓存内的情况下从高速缓存20、36、44的位阶中的一者,或在存储器地址在高速缓存位阶中丢失的情形中从存储器50)索取相关数据或指令。
然而,当使处理电路处于运行状态内时,则在一个实施例中禁用原本可使用DDC寄存器90或PCC寄存器80的内容执行的任何检查。因此,在一个实施例中,若有界指针继续用于识别存储器地址,则仍执行参考与这些有界指针相关联的显式范围信息执行的范围检查。然而,禁用透过使用DDC或PCC内容出现的默认范围检查。因此,当在运行状态中时,处理电路可使用在通用寄存器40中指定的非有界指针存取存储器,而不基于DDC范围信息执行任何检查。
类似地,提取级6可从各种存储器地址提取指令而不参考PCC寄存器80中的范围信息执行范围检查。藉由禁用基于PCC的检查,这允许处理电路索取可驻存于不在当前能力域的可允许存储器地址范围内的存储器地址处的指令,藉此使得增加关于在运行状态中的同时执行的指令的灵活性。
此外,藉由允许在处于运行状态中时使用非有界指针来存取存储器而不执行任何范围检查,这减少在处理电路处于运行状态中时藉由能力施加的限制,因此减少在处于运行状态中时对这些能力的影响。这在图4中示意性地示出。
具体地,如图4中所示,存在其中可在存储器中存取数据或能力的若干方式。具体地,可使用由方框150、160指示的机制在存储器中存取数据,同时可使用由方框155、165指示的机制存取能力。就机制本身而言,这些机制视是否使用通用数据寄存器来识别指针(即,非有界指针)或是否使用能力寄存器60来识别指针(即,有界指针)而不同。如由方框160、165所示,若指定有界指针以使得从该有界指针导出存储器地址,则使用针对相关有界指针指定的范围及限制信息来执行显式能力检查(包含范围检查)。相反,如由方框150及155所展示,若指定通用寄存器40内的非有界指针且从该非有界指针导出存储器地址,则使用DDC寄存器90中的默认范围及限制信息来执行默认能力检查(本文亦被称为隐式能力检查)。
当在运行状态中时,有效地禁用机制150、155。因此,可经由指定通用寄存器40内的非有界指针的加载或存储指令在寄存器40、60与高速缓存/存储器之间移动通用数据及能力两者,而不执行任何范围检查操作。因此,当在运行状态中时,处理电路可存取原本将不能够基于在处于默认状态中时实施的能力域存取的存储器区。
返回至图1,装置将可以存取多种控制/状态寄存器70,这些控制/状态寄存器存储由处理电路在其操作期间参考的各种控制及状态信息。该信息可包含获取关于处理器的当前操作的多种状态信息的当前过程状态74。在该当前过程状态信息内,亦获取上述当前范围检查状态,因此识别处理电路是在默认状态还是运行状态中操作。虽然被示为单个方框74,但当前过程状态可不必存储于单个寄存器内,而可存储于可用的控制/状态寄存器70内的若干控制及状态寄存器内。
根据一个实施例,进入至运行状态限制于仅在出现某些预定事件时发生。具体地,在一个实施例中,导致进入至运行状态的事件是采取例外。采取例外可藉由多种不同机制触发,例如,中断、系统呼叫、故障等。根据一个实施例,当采取例外时,导致处理电路的范围检查状态转变至运行状态,而不考虑采取例外时适当出现的范围检查状态。然而,另外,当采取这样的例外时,获取当前过程状态74作为经保存过程状态72。此外,经保存过程状态72可存储于单个寄存器内或多个寄存器内。亦保存采取例外时存在的当前范围检查状态作为经保存过程状态的部分,从而识别当采取例外时处理电路是在默认状态还是运行状态中。在当前过程状态74内,接着将当前范围检查状态更新至运行状态,此后由处理电路执行例外处置操作以处理例外。当在运行状态中时,如先前所讨论的,禁用任何默认范围检查操作,因此使得能够对当从例外返回时可用于处理电路的能力集做出改变。
当处理电路随后从例外返回时,经保存过程状态将复原为当前过程状态,从而允许处理电路继续其在采取例外之前正执行的操作。然而,此时,处理电路可使用经修订能力域来操作,这归因于当处理电路是在运行状态中时对可用的有界指针集做出的修改。
亦如图1中所示,可视情况给控制/状态寄存器70补充存取控制寄存器76。稍后将参考图10和图11讨论该寄存器的目的。
图5更详细地示出了经保存过程状态寄存器72。具体地,当采取例外时,在经保存过程状态寄存器72的一个或多个字段内获取处理器的当前例外等级的过程状态170。例外等级识别软件执行特权的等级,且如稍后将讨论的,在一个实施例中处理电路可能够在多个不同例外等级下操作,其中可经由采取例外达成这些例外等级之间的转变。在多个例外等级可用于处理电路的情形中,接着经保存过程状态将包含处理器在采取例外之前正执行所处的当前例外等级作为状态信息的部分。然而,可实施利用范围检查状态的默认及运行状态的所述实施例的技术而不考虑是否存在可用于处理器的多个例外等级还是仅单个例外等级。具体地,可发生默认状态与运行状态之间的转变及转变回至默认状态而不考虑在该过程期间是否存在例外等级的任何改变,且因此范围检查状态可视为正交于处理器的例外等级。
如图5中所示,除在经保存过程状态寄存器内获取的通常过程状态信息170以外,亦提供范围检查状态字段175,当恰好在采取例外之前时在该范围检查状态字段内获取处理电路的当前范围检查状态。依据先前对范围检查状态的描述,应理解的是,该信息有效地识别能力如何限制存储器存取,且因此在本文中范围检查状态亦可被称为能力影响状态。
如先前所讨论的,当前范围检查状态可采取其中在存取存储器时检查显式及隐式(默认)能力两者的默认(即,受限制)状态,或其中在存取存储器时不检查任何隐式能力的运行状态(在采取例外时启动)。在一个实施例中,在运行状态中仍检查显式能力,且因此虑及用于该有界指针的显式范围及限制信息仍检查其中从有界指针导出存储器存取的任何存取。然而,在可选实施例中,当在运行状态中时亦可禁用这些显式能力检查,因此提供关于可在运行状态中时由处理电路存取的存储器地址的进一步灵活性。
图6是示出根据一个实施例的在采取例外时执行的步骤的流程图。具体地,当在步骤200处确定待采取例外时,接着在步骤205处,在经保存过程状态寄存器72内获取当前过程状态(包含处理器的当前例外等级)。另外,如先前所讨论,当前范围检查状态亦作为该过程状态的部分存储于经保存过程状态寄存器内。
此后,在步骤210处,藉由更新当前过程状态74内的适当字段来选择运行状态作为当前过程状态。选择运行状态而不考虑当采取例外时的范围检查状态。
此后,在步骤215处,当处理电路正在运行状态中执行例外处置操作时执行改变能力域所需的任何步骤。
此后,执行由例外处置操作所需的任何其他步骤。虽然在一个实施例中,在保持于运行状态中时执行这些操作,但在可选实施例中处理电路针对在步骤220处执行的这些额外步骤将返回至受限制(即,默认)状态。具体地,在其中提供多个例外等级且其中采取例外导致从第一例外等级转变至第二例外等级的实施例中可采取后者的方法。
此后,过程进行至步骤225,其中过程从例外返回。此时,经保存过程状态信息72复原至当前过程状态74以便允许使处理电路置回至采取例外之前存在的状态。
当在步骤220期间决定针对例外处置操作的至少一部分返回至受限制状态时,随后在一个实施例中从例外的返回可能直接从受限制状态发生。然而,在可选实施例中,处理可被配置为使得发生额外的例外以导致在接着从原始例外返回之前转变回至运行状态,以便确保从原始例外的返回从运行状态发生的。若在从例外返回之前强制例外处置处理重新进入至运行状态,则这可避免例外返回试图从受限制状态返回至运行状态的可能性(可能在采取原始例外之前处理电路是在运行状态中)。否则,当处置例外返回时可需要引入一些特例处置以处理其中例外返回试图从受限制状态返回至运行状态的情况。这将参考图7更详细地讨论。
具体地,当在步骤250处确定待发生例外返回时,过程进行至步骤255,其中确定处理电路当前是否在运行状态中。如先前所述,在一个实施例中,可实施如下:在待采取例外返回时处理电路将始终处于运行状态中,在该情形中过程将始终进行至步骤260,其中处理器将复原至保存于SPSR寄存器72中的过程状态,因此,当前范围检查状态将复原至存储于SPSR寄存器中的范围检查状态。
然而,若实施例允许例外可从运行状态或默认状态返回,则若在步骤255处确定处理电路当前不处于运行状态中,则过程进行至步骤265,其中确定SPSR寄存器是否识别经保存范围检查状态是运行状态。若不是,则过程可进行至步骤260,但若经保存范围检查状态是运行状态,则过程替代地进行至步骤270,其中执行特例处置。
特例处置可采取多种形式,但在一个实施例中涉及触发额外的例外以发起适合的例外处置。替代地,处理器可复原至保存于SPSR中的过程状态,但将当前范围检查状态设定为受限制状态,而非设定为已在SPSR中获取的运行状态。因此,当从该例外返回时将强制处理电路进入受限制状态中,且因此将实施可适用于当前能力域的所有范围检查。
图8示出了在一个实施例中的各种例外等级之间的相互关系。例外等级EL0具有最低软件执行特权,且EL0下的执行称作非特权执行。值n从1增加至3指示软件执行特权增加。EL2例外等级提供对处理器虚拟化的支持。同时,EL3级提供对两种安全性状态(即,安全及非安全状态)的支持。
这形成图8中所示的一般树结构。具体地,若提供EL3例外等级(诸如,图8中所示的EL3 300),则其将在安全状态中执行。在非安全状态中,若期望则可能支持虚拟化,且因此可在非安全状态中提供EL2例外等级305。在安全状态内,在一个实施例中,不提供EL2等级,且替代地可在安全状态内提供EL1等级330,在该安全状态下可提供若干不同EL0等级340、342。
在非安全状态中,若提供EL2等级305,则其可支持其下面的多个EL1等级310、312、314,且这些EL1等级中的每一者可支持一个或多个EL0等级,如由组件符号320、322示意性地示出。
经由采取例外发生各种例外等级之间的转变。然而,并非所有例外会导致例外等级改变。例如,在一个实施例中,通常在EL1中(而在一些配置中是在EL2中)采取来自EL0的例外。在一个实施例中,可通常在同一例外等级中采取来自EL1及以上的例外。然而,亦可提供从EL1至EL2/EL3及自EL2至EL3的各种例外且可将这些例外用于类似目的。在一个实施例中,始终在EL3中采取EL3中的例外。如图8中所示,可与例外等级中的每一者相关联地提供经保存过程状态寄存器。若情形始终为在EL1中采取来自EL0的例外,则无需单独SPSR与EL0等级相关联。然而,在一个实施例中,其可被配置为使得可在EL0等级中采取来自EL0的某些例外,且在该情形中可提供用于EL0的单独SPSR寄存器。
图9示出根据一个实施例的可由于采取例外而发生的转变的示例性顺序。假定开始时处理电路是在受限制/默认状态中且在EL0下执行。在点400处,对EL1等级采取例外,因此,与EL1等级相关联的SPSR寄存器在其处于EL0等级下的同时获取处理器的当前过程状态,包含获取受限制状态作为经保存范围检查状态。当在点405处转变至EL1级时,处理在运行状态中开始,且因此例外处置操作可执行对可用于处理电路的有界指针集的修改且因此变更能力域。在需要在运行状态中执行的任何步骤之后,可在保持于运行状态中的同时执行例外处置操作的其余部分,或在一个实施例中,处理电路可针对例外处置操作的其余部分切换回至受限制状态。
在点410处,假定从EL1等级至EL2等级采取另一例外。因此,在点410处,与EL2相关联的SPSR寄存器将获取处理电路的状态X。作为此经获取的过程状态X的部分,将获取在点410处适当出现的范围检查状态,该范围检查状态可为运行状态或受限制状态,这取决于在点405与410之间执行的处理。
不考虑点410处的当前范围检查状态,当在点415处进入EL2等级时,处理将在运行状态中开始。如先前参考步骤405处执行的处理所讨论的,这可允许处理电路在期望的情况下对能力域做出改变,且此后处理可在运行状态中继续,或范围检查状态可切换回受限制状态。
在点420处,假定发生来自当前例外的返回,此时EL2等级下的处理电路将在状态Y中(其中范围检查状态可在运行状态或受限制状态中)。
在点425处返回至EL1等级期间,与等级EL2相关联的SPSR寄存器的内容将复制至当前过程状态寄存器74中以使EL1状态返回至状态X。然而,在状态Y识别受限制状态且状态X识别运行状态的情形中,在一个实施例中随后将执行图7的步骤270的先前所述的特例处置。
接着,处理电路将在点425与430之间继续处于等级EL1中,此时在点435处执行从原始例外的返回以返回至EL0等级。作为该过程的部分,可使用与EL1等级相关联的SPSR寄存器以复原至当前过程状态74(在点400处获取的经保存过程状态)中,藉此在点435处使处理电路返回至受限制状态。
如先前参考图1所述,在一个实施例中可提供存取控制寄存器76。具体地,在每个例外等级下,程序可以存取若干系统寄存器并进行诸如转译上下文控制、系统呼叫及例外返回之类的操作。对此功能性的存取可潜在地破坏由能力域提供的安全性,且提供存取控制寄存器提供一种在处于某些能力域中的同时限制对这些功能的相异集的存取的机制。具体地,如图10中所示,存取控制寄存器76可包括多个字段452、454、456,每个字段与特定功能性集相关联。每个字段中的值识别对应功能性是否可由处理电路存取。在一个实施例中,可针对所有例外等级提供单个存取控制寄存器76,但替代地,可针对每个例外等级提供单独存取控制寄存器。
如图11中所示,若在步骤470处确定处理电路处于运行状态中,则过程进行至步骤475,其中处理器对功能性的存取独立于存取控制寄存器内容。因此,当处理电路是在运行状态中时存取控制寄存器内的值无影响。替代地,处理电路可不受限制地存取功能性或其存取可藉由某些先已存在的存取控制机制来确定。
然而,若在步骤470处确定处理电路不处于运行状态中,则如由步骤480所指示,可藉由存取控制寄存器内容确定可由处理器存取的功能性。因此,可透过使用该存取控制寄存器进一步限制在默认状态中可用于处理电路的功能性,以提供超越可在处于运行状态中时施加的任何限制的额外限制。
亦应注意,存取控制寄存器字段将不必与可藉由处理电路存取的所有可用功能性对应。因此,在一个实施例中,对未由存取控制寄存器的字段涵盖的功能性集的任何现有存取控制保持有效,而不考虑处理电路是在默认状态还是运行状态中。
在一个实施例中,当处理电路正在默认状态中执行时,不能够对存取控制寄存器76的内容做出任何修改。替代地,对存取控制寄存器的修改限于处理电路在运行状态中执行。在具有用于个别例外等级的单独存取控制寄存器的实施例中,存取控制寄存器可被配置为使得用于至少一个例外等级的存取控制寄存器仅可藉由处理电路在较高例外等级下于运行状态中执行来修改。
上述实施例提供一种用于允许在数据处理装置的操作期间变更可用于处理电路的能力域的有效且受控制的机制。藉由为此目的而提供专用运行状态且将进入至运行状态限制于预定事件(诸如,采取例外),其提供用于暂时禁用某些范围检查的受控制的环境以便使得能够对定义能力域的有界指针集做出改变。
在本申请中,使用用语“被配置为”以意指装置的组件具有能够执行所定义操作的配置。在此上下文中,“配置”意指硬件或软件的互连布置或方式。例如,装置可具有提供所定义操作的专用硬件,或者处理器或其他处理装置可被程序化以执行该功能。“被配置为”并不暗指装置组件需要以任何方式改变以便提供所定义操作。
尽管本文已参考所附附图详细地描述本发明的说明性实施例,但应理解,本发明并不限于这些精确实施例且本领域技术人员可在不脱离如所附权利要求所定义的本发明的范围和精神的情况下在其中实施各种改变、添加及修改。例如,在不脱离本发明的范围的情况下,可以利用独立权利要求的特征对从属权利要求的特征进行各种组合。

Claims (18)

1.一种用于管理有界指针的设备,包括:
处理电路,用于执行一系列指令;
多个存储装置元件,该多个存储装置元件能够由所述处理电路存取,用于存储有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,该显式范围信息在使用所述有界指针时指示能够允许存储器地址范围;以及
当前范围检查存储装置元件,该当前范围检查存储装置元件用于存储用于所述处理电路的当前范围检查状态;
在所述当前范围检查状态指示默认状态时,所述处理电路响应于识别待用于识别存储器地址的指针的所述指令的序列中的存储器存取指令的运行而执行范围检查操作,以确定对所述存储器地址的存取是否被许可;当所述存储器存取指令将所述有界指针中的一者识别为所述指针时,参考与所述有界指针相关联的所述显式范围信息执行所述范围检查操作,且当所述存储器存取指令将所述非有界指针中的一者识别为所述指针时,参考针对所述处理电路所定义的默认范围信息执行所述范围检查操作;
当检测到至少一个事件时,所述当前范围检查状态被设定为运行状态;且当在所述运行状态中时,所述处理电路响应于所述存储器存取指令的运行以在所述经识别的指针是非有界指针时禁用所述范围检查操作。
2.根据权利要求1所述的设备,其中,所述至少一个事件包括由所述处理电路采取例外。
3.根据权利要求2所述的设备,还包括:
经保存范围检查存储装置元件,用于存储经保存范围检查状态;
当采取所述例外时,所述经保存范围检查存储装置元件被更新以在响应于采取所述例外而将所述当前范围检查状态设定为所述运行状态之前,存储由所述处理电路使用的所述当前范围检查状态作为所述经保存范围检查状态。
4.根据权利要求3所述的设备,其中在从所述例外返回时,所述当前范围检查存储装置元件被更新以识别所述经保存范围检查状态作为所述当前范围检查状态。
5.根据权利要求2至4中任一项所述的设备,其中,在采取所述例外时,所述处理电路被配置为执行例外处置操作,在所述例外处置操作期间执行一个或多个存储器存取而在所述运行状态中以变更将在从所述例外返回时能够用于所述处理电路的有界指针集。
6.根据权利要求1至4中任一项所述的设备,其中,当在所述运行状态中时,所述处理电路响应于所述存储器存取指令的运行以进一步在所述经识别的指针是有界指针时禁用所述范围检查操作。
7.根据权利要求1至4中任一项所述的设备,还包括默认范围存储装置元件,该默认范围存储装置元件用于存储所述默认范围信息。
8. 根据权利要求1至4中任一项所述的设备,其中:
所述处理电路被配置为发布提取存储器地址,以便识别待提取以用于随后由所述处理电路执行的指令,当在所述默认状态中时,所述处理电路被配置为在发布所述提取存储器地址以便参考针对所述处理电路所定义的默认提取范围信息确定是否许可所述提取存储器地址的存取之前,执行提取范围检查操作;以及
当在所述运行状态中时,所述处理电路被配置为禁用所述提取范围检查操作。
9.根据权利要求8所述的设备,其中,通过程序计数器值确定所述提取存储器地址且所述默认提取范围信息是程序计数器范围信息。
10.根据权利要求3所述的设备,其中,所述处理电路是能够在多个例外等级下操作,每个例外等级具有不同软件执行特权,且所述处理电路被配置为响应于由所述处理电路采取的至少一个例外子集而改变正操作所处的所述例外等级。
11.根据权利要求10所述的设备,其中,当所述处理电路正以所述多个例外等级中的至少一者操作时,所述当前范围检查状态能够在所述运行状态与所述默认状态之间改变同时保持处于相同例外等级。
12.根据权利要求10或权利要求11所述的设备,其中,采取所述例外导致所述处理电路从第一例外等级转变至第二例外等级,所述经保存范围状态存储装置元件被更新以在采取所述例外之前识别由所述处理电路在所述第一例外等级下使用的所述范围检查状态,且在将所述处理电路转变至所述第二例外等级时将所述当前范围检查状态设定为所述运行状态。
13.根据权利要求12所述的设备,其中,在所述第二例外等级下操作期间,所述处理电路被配置为将所述当前范围检查状态从所述运行状态改变至所述默认状态。
14.根据权利要求13所述的设备,其中,当从所述例外返回时,所述处理电路被配置为往回转变至所述第一例外等级,且所述当前范围检查存储装置元件被更新以将所述经保存范围检查状态识别为所述当前范围检查状态,除非这会在从所述例外返回时导致所述当前范围检查状态从所述默认状态改变至所述运行状态。
15.根据权利要求1至4以及10至11中任一项所述的设备,还包括:
存取控制存储装置元件,该存取控制存储装置元件具有一个或多个字段,每个字段与对应功能性集相关联且具有指示当所述处理电路是在所述默认状态中时能够由所述处理电路存取所述对应功能性集的值;
当在所述运行状态中时,所述处理电路对每个对应功能性集的存取独立于所述存取控制存储装置中的指示存取所述对应功能性集的所述值。
16.根据权利要求15所述的设备,其中,在所述默认状态中,防止所述处理电路更新所述存取控制存储装置元件。
17.一种操作装置的方法,该装置具有:处理电路,用以运行指令序列;以及多个存储装置元件,该多个存储装置元件用于存储供所述处理电路存取的有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,所述显式范围信息在使用所述有界指针时指示能够允许存储器地址范围,该方法包括:
存储用于所述处理电路的当前范围检查状态;
在所述当前范围检查状态指示默认状态时,响应于识别待用于识别存储器地址的指针的所述指令序列中的存储器存取指令的运行而执行范围检查操作,以确定对所述存储器地址的存取是否被许可;当所述存储器存取指令将所述有界指针中的一者识别为所述指针时,参考与所述有界指针相关联的所述显式范围信息执行所述范围检查操作,且当所述存储器存取指令将所述非有界指针中的一者识别为所述指针时,参考针对所述处理电路所定义的默认范围信息执行所述范围检查操作;以及
当检测到至少一个事件时,所述当前范围检查状态被设定为运行状态;且当在所述运行状态中时,所述处理电路响应于所述存储器存取指令的运行以在所述经识别的指针是非有界指针时禁用所述范围检查操作。
18.一种用于管理有界指针的装置,包括:
处理设备,用于执行一系列指令;
多个存储装置元件设备,该多个存储装置元件设备能够由所述处理设备存取,用于存储有界指针及非有界指针,每个有界指针具有与其相关联的显式范围信息,该显式范围信息在使用所述有界指针时指示能够允许存储器地址范围;以及
当前范围检查存储装置元件设备,该当前范围检查存储装置元件设备用于存储用于所述处理设备的当前范围检查状态;
在所述当前范围检查状态指示默认状态时,所述处理设备响应于识别待用于识别存储器地址的指针的所述指令序列中的存储器存取指令的运行而执行范围检查操作,以确定对所述存储器地址的存取是否被许可;当所述存储器存取指令将所述有界指针中的一者识别为所述指针时,参考与所述有界指针相关联的所述显式范围信息执行所述范围检查操作,且当所述存储器存取指令将所述非有界指针中的一者识别为所述指针时,参考针对所述处理设备所定义的默认范围信息执行所述范围检查操作;
当检测到至少一个事件时,所述当前范围检查状态被设定为运行状态;且当在所述运行状态中时,所述处理设备响应于所述存储器存取指令的运行以在所述经识别的指针是非有界指针时禁用所述范围检查操作。
CN201680068762.2A 2015-12-02 2016-10-19 用于管理有界指针的装置和方法 Active CN108292272B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1521276.4 2015-12-02
GB1521276.4A GB2544996B (en) 2015-12-02 2015-12-02 An apparatus and method for managing bounded pointers
PCT/GB2016/053260 WO2017093708A1 (en) 2015-12-02 2016-10-19 An apparatus and method for managing bounded pointers

Publications (2)

Publication Number Publication Date
CN108292272A CN108292272A (zh) 2018-07-17
CN108292272B true CN108292272B (zh) 2022-11-08

Family

ID=55177594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680068762.2A Active CN108292272B (zh) 2015-12-02 2016-10-19 用于管理有界指针的装置和方法

Country Status (9)

Country Link
US (1) US10528490B2 (zh)
EP (1) EP3384396B1 (zh)
JP (1) JP6902029B2 (zh)
KR (1) KR20180088678A (zh)
CN (1) CN108292272B (zh)
GB (1) GB2544996B (zh)
IL (1) IL259039B (zh)
TW (1) TWI726925B (zh)
WO (1) WO2017093708A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2547247B (en) * 2016-02-12 2019-09-11 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
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
US10416963B2 (en) * 2017-06-19 2019-09-17 Arm Limited Bounds checking
GB2563888B (en) * 2017-06-28 2020-03-18 Advanced Risc Mach Ltd Sub-realms
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
GB2574231B (en) * 2018-05-31 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for triggering action performance
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
GB2606355B (en) * 2021-05-04 2023-09-13 Advanced Risc Mach Ltd Technique for constraining access to memory using capabilities
US20220197638A1 (en) * 2022-03-14 2022-06-23 Intel Corporation Generating encrypted capabilities within bounds
US20230342289A1 (en) * 2022-04-21 2023-10-26 Arm Limited Apparatus and method for managing capabilities

Family Cites Families (20)

* 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
CA2147036A1 (en) * 1994-05-16 1995-11-17 Yih-Farn Robin Chen System and method for selective regression testing
US20020152060A1 (en) 1998-08-31 2002-10-17 Tseng Ping-Sheng Inter-chip communication system
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
GB2402236B (en) * 2003-05-27 2005-04-27 Simon Alan Spacey A method and apparatus for securing a computer system
US7832842B2 (en) * 2004-05-27 2010-11-16 Silverbrook Research Pty Ltd Printer controller for supplying data to a printhead module having interleaved shift registers
US20070005933A1 (en) * 2005-06-29 2007-01-04 Kopec Brian J Preventing multiple translation lookaside buffer accesses for a same page in memory
TW200805065A (en) * 2006-01-17 2008-01-16 Nxp Bv Region protection unit, instruction set and method for protecting a memory region
GB2448151B (en) * 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
WO2009047705A1 (en) * 2007-10-10 2009-04-16 St Wireless Sa Transmitter
JP5044387B2 (ja) * 2007-12-26 2012-10-10 ルネサスエレクトロニクス株式会社 情報処理装置及びそのスタックポインタ更新方法
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US7962729B2 (en) 2009-01-05 2011-06-14 International Business Machines Corporation Dynamic runtime range checking of different types on a register using upper and lower bound value registers for the register
US8450300B2 (en) * 2009-07-13 2013-05-28 Cempra Pharmaceuticals Inc. Fusidic acid dosing regimens for treatment of bacterial infections
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20150227414A1 (en) * 2012-08-31 2015-08-13 Pradeep Varma Systems And Methods Of Memory And Access Management
JP5842833B2 (ja) * 2013-01-17 2016-01-13 トヨタ自動車株式会社 情報処理装置、プログラム
GB2540206B (en) * 2015-07-10 2018-02-07 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer

Also Published As

Publication number Publication date
EP3384396B1 (en) 2020-12-23
GB2544996B (en) 2017-12-06
US20180349294A1 (en) 2018-12-06
IL259039B (en) 2020-04-30
IL259039A (en) 2018-06-28
JP2018536238A (ja) 2018-12-06
TW201721438A (zh) 2017-06-16
US10528490B2 (en) 2020-01-07
EP3384396A1 (en) 2018-10-10
GB2544996A (en) 2017-06-07
TWI726925B (zh) 2021-05-11
KR20180088678A (ko) 2018-08-06
CN108292272A (zh) 2018-07-17
WO2017093708A1 (en) 2017-06-08
GB201521276D0 (en) 2016-01-13
JP6902029B2 (ja) 2021-07-14

Similar Documents

Publication Publication Date Title
CN108292272B (zh) 用于管理有界指针的装置和方法
US20180225120A1 (en) An apparatus and method for controlling instruction execution behaviour
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN110622133B (zh) 用于管理能力域的设备及方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法

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