CN107735775A - 用于使用与指针相关联的范围信息来执行指令的装置和方法 - Google Patents

用于使用与指针相关联的范围信息来执行指令的装置和方法 Download PDF

Info

Publication number
CN107735775A
CN107735775A CN201680039576.6A CN201680039576A CN107735775A CN 107735775 A CN107735775 A CN 107735775A CN 201680039576 A CN201680039576 A CN 201680039576A CN 107735775 A CN107735775 A CN 107735775A
Authority
CN
China
Prior art keywords
address
pointer
instruction
range information
memory element
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
CN201680039576.6A
Other languages
English (en)
Other versions
CN107735775B (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
Advanced Risc Machines 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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN107735775A publication Critical patent/CN107735775A/zh
Application granted granted Critical
Publication of CN107735775B publication Critical patent/CN107735775B/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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

装置2包括一个或多个有界指针存储元件60,每个有界指针存储元件60用于存储具有相关联的范围信息64的指针62,该相关联的范围信息64指示针对指针62的地址的可允许范围。处理电路4响应于标识了给定的有界指针存储元件的第一类型的指令70,针对地址的目标范围执行预定操作,该地址的目标范围至少部分地基于与存储在给定的有界指针存储元件60中的指针相关联的范围信息64被确定。

Description

用于使用与指针相关联的范围信息来执行指令的装置和方法
技术领域
本技术涉及数据处理领域。
背景技术
一些数据处理设备可以支持有界指针,其中指示特定地址的指针与指示指针的地址的可允许范围的范围信息相关联。例如,这类指针可以被称为“胖指针”。
发明内容
至少一些示例提供了一种装置,包括:一个或多个有界指针存储元件,每个有界指针存储元件用于存储具有相关联的范围信息的指针,该相关联的范围信息指示针对所述指针的地址的可允许范围;以及处理电路,用于响应于标识了给定的有界指针存储元件的第一类型的指令,针对地址的目标范围执行预定操作,该地址的目标范围至少部分地基于与存储在给定的有界指针存储元件中的指针相关联的范围信息被确定。
至少一些示例提供了一种装置,包括:至少一个用于存储具有相关联的范围信息的指针的装置,该相关联的范围信息指示针对所述指针的地址的可允许范围;以及用于响应于标识了给定的用于存储的装置的第一类型的指令来针对地址的目标范围执行预定操作的装置,该地址的目标范围至少部分地基于与存储在给定的用于存储的装置中的指针相关联的范围信息被确定。
至少一些示例提供了一种用于包括一个或多个有界指针存储元件的装置的方法,每个有界指针存储元件用于存储具有相关联的范围信息的指针,该相关联的范围信息指示针对所述指针的地址的可允许范围;该方法包括:接收标识了给定的有界指针存储元件的第一类型的指令;以及响应于第一类型的指令,针对地址的目标范围执行预定操作,该地址的目标范围至少部分地基于与存储在给定的有界指针存储元件中的指针相关联的范围信息被确定。
附图说明
结合附图阅读以下示例的描述,本技术的其他方面、特征和优点将变得显而易见,其中:
图1示意性地示出了用于处理数据的装置的示例,该装置支持具有相关联的范围信息的有界指针,该相关联的范围信息标识指针的地址的可允许范围;
图2示出了指令类型的示例,针对该类型的指令,在使用指针值确定的地址位于由相关联的范围信息指示的范围之外时触发错误;
图3示出了用于触发要对至少部分地基于针对有界指针的范围信息确定的地址的目标范围执行的预定操作的指令类型的示例;
图4示出了执行第一类型的指令的方法的示例;
图5示出了执行第二类型的指令的方法的示例;
图6示出了处理在响应于第一类型的指令执行操作的中途接收到的中断的示例;
图7至图9示出了表示针对有界指针的范围信息的替代方式;并且
图10示出了不同形式的指令的示例,针对这些不同形式的指令,操作被应用于针对有界指针的地址的可允许范围的不同部分。
具体实施方式
下面将讨论本技术的一些具体示例。
一些处理装置可以支持使用有界指针。例如,指针自身可以指向要访问的数据值或要执行的指令的地址。然而,指针也可以具有指示针对指针的地址的可允许范围的相关联的范围信息。这可以用于例如确保指针或从指针导出的地址维持在特定界限内以维持行为的安全性或功能正确性。例如,基于能力的架构越来越受到关注,在该架构中,针对给定进程定义了某些能力,并且在尝试执行所定义的能力之外的操作时可以触发错误。针对有界指针的范围信息可以是针对这种架构定义的能力信息的一部分。或者,可以存在允许定义有界指针的一些非基于能力的架构。
因此,一种装置可以具有至少一个有界指针存储元件,用于存储具有相关联的范围信息的指针,该相关联的范围信息指示针对指针的地址的可允许范围。例如,每个有界指针存储元件可以是寄存器、或者在堆栈存储器上的位置。某些指令可以使用存储在目标有界指针存储元件中的有界指针来执行操作。目标有界指针存储元件可以是至少一个有界指针存储元件中的任意一个有界指针存储元件,并且目标有界指针存储元件可以在指令编码中被指定、可以是默认选择的存储元件、或可以由存储在另一存储元件(例如,寄存器或堆栈位置)中的控制值标识。
在支持有界指针的系统中,引用有界指针的指令通常使用指针值自身来执行相应处理操作,并且相应范围信息可以仅用于确定是否允许对指针的使用。不同于首先确定操作是否被允许,范围信息自身通常不会影响正在执行的特定处理操作。然而,发明人认识到,对新类型的指令(该新类型的指令对至少部分地基于与有界指针相关联的范围信息确定的地址的目标范围执行操作)提供支持可能是非常有用的。因此,有界指针的范围信息自身可以被用作影响要被执行的实际处理操作的操作数信息。
因此,可以提供处理电路,该处理电路被配置为响应于标识给定的有界指针存储元件的第一类型的指令,针对地址的目标范围执行预定操作,该地址的目标范围至少部分地基于与存储在给定的有界指针存储元件中的指针相关联的范围信息被确定。例如,处理电路可以具有指令解码电路,用于解码第一类型的指令来生成控制信号,以用于控制处理电路使用由范围信息指示的地址的范围的全部或部分来执行预定操作。
该方法可以提供若干优点。首先,通过提供单个指令来触发根据范围信息选择的地址的范围的操作,与必须针对指定范围内的每个地址执行单独指令的系统相比,这可以极大地提高代码密度并减少要处理的指令的数量。
同样,新类型的指令可能是特别有用的,因为在针对给定的有界指针建立可允许范围时,有时可能期望对可允许范围内的地址执行一些操作以初始化相应存储位置,使这些位置准备好由指针自身引用。例如,在使用可以在给定的可允许范围内取任意值的指针来执行进程之前,可能期望执行操作以清理可允许范围内的地址的相应存储位置内的数据或使该数据无效,或执行操作以将这些地址中的每个地址中的数据设置为某预定值。因此,对于首先定义可允许范围信息的进程,提供第一类型的指令(该第一类型的指令可以触发要针对与有界指针相对应的可允许范围内的地址执行的给定的处理操作)可能是有用的。
另一优点可以是,通过使用与目标有界指针存储元件中的有界指针相关联的范围信息来控制在基于地址的可允许范围确定的地址的目标范围上的预定操作,第一类型的指令自身不需要明确指定要应用预定操作的地址的目标范围的开始地址和结束地址。这可以是有用的,因为执行预定操作的进程可能实际上不知道与有界指针相关联的地址的可允许范围(例如,可允许范围可能已经由更安全的进程设置),并且在一些情况下,甚至可能不期望较不安全的进程知道由更安全的进程设置的指针值的可允许范围,例如,在该信息可以允许推断出某些安全代码或数据的位置时。因此,通过简单地引用给定的有界指针,相关联的范围信息可以被用来触发在可允许范围上的预定操作,而实际上不需要当前进程知道其中正在执行操作的范围。
因此,可能存在许多原因,使得针对以下类型的指令提供指令集架构支持是有用的,该类型的指令采用给定的有界指针并且使用与该指针相关联的关联范围信息来对基于范围信息确定的地址的目标范围执行给定的操作。在一些系统中,可能仅存在一个这样的指令被提供以在地址的可允许范围上执行特定操作。其他系统可以支持多个这种类型的指令,每个指令对应于不同的预定操作,该不同的预定操作将针对可允许范围内的地址被执行。
地址的目标范围可以以不同的方式基于范围信息被确定。地址的目标范围可以位于可允许范围内(即,可允许范围包括目标范围)。在一些示例中,地址的目标范围可以是由范围信息指示为可允许的地址的整个范围。在其他示例中,地址的目标范围可以仅仅是可允许范围的一部分,例如位于指针值自身与可允许范围的上界地址和下界地址中的一个之间的部分。
在某些情况下,给定的有界指针的可允许范围标识指针自身被允许采用的地址的范围。在其他情况下,可允许范围可以是从指针导出的地址的可允许范围(不一定指针自身)。例如,对于向指针添加偏移的指令,可允许范围可以定义允许指针和偏移的总和被采用的地址的可允许范围。因此,虽然可允许范围是针对给定的指针定义的,但是这并不一定要求指针自身位于可允许范围内,因为其可以是从由可允许范围控制的指针中导出的地址。
图1示意性地示出了包括用于处理指令的处理流水线4的数据处理装置2的示例。在该示例中,处理流水线4包括多个流水线阶段,包括提取阶段6、解码阶段8、发布(issue)阶段10、执行阶段12、和回写阶段14,但是应该理解,可以提供其他类型的阶段或阶段的组合。例如,在一些实施例中,可以包括用于执行寄存器重命名的重命名阶段。要处理的指令从一个阶段移动到另一阶段,并且当指令处于一个阶段时,另一指令可以处于流水线4的不同阶段。
提取阶段6从1级(L1)指令缓存20提取指令。提取阶段6通常可以从连续的指令地址按顺序提取指令。然而,提取阶段也可以具有用于预测分支指令的结果的分支预测器22,并且提取阶段6可以在分支被预测为采用时从(非顺序的)分支目标地址提取指令,或在分支被预测为不采用时从下一顺序地址提取指令。分支预测器22可以包括一个或多个分支历史表,用于存储用于预测某些分支是否可能被采用的信息。例如,分支历史表可以包括计数器,用于追踪先前执行的分支的实际结果,或用于表示对分支进行的预测的置信度。分支预测器22还可以包括分支目标地址缓存(BTAC)24,用于缓存分支指令的先前目标地址,使得可以在随后遇到相同分支指令时预测这些地址。
所提取的指令被传递到解码阶段8,解码阶段8解码这些指令以生成经解码的指令。经解码的指令可以包括用于控制执行阶段12来执行适当的处理操作的控制信息。对于从缓存20中提取的一些更复杂的指令,解码阶段8可以将这些指令映射到多个经解码的指令,这些经解码的指令可以被称为微操作(μops或uops)。因此,从L1指令缓存20中提取的指令与流水线随后阶段所看到的指令之间可能不存在一对一的关系。一般地,在本申请中对“指令”的引用应当被解释为包括微操作。
经解码的指令被传递到发布阶段10,发布阶段10确定执行指令所需的操作数是否可用,并且在操作数可用时发布指令以用于执行。一些示例可以支持有序处理,使得以与从L1指令缓存20中提取指令的程序顺序相对应的顺序发布指令以用于执行。其他实施例可以支持无序执行,使得可以以与程序顺序不同的顺序向执行阶段12发布指令。无序处理对于提高性能可能是有用的,因为在较早的指令由于等待操作数而被暂停时,可以先执行程序顺序中操作数可用的稍后的指令。
发布阶段10向执行阶段12发布指令,在执行阶段12中,指令被执行以执行各种数据处理操作。例如,执行阶段可以包括多个执行单元30、32、34,其包括算术/逻辑单元(ALU)30(用于对整数值执行算术或逻辑操作)、浮点(FP)单元32(用于对以浮点形式表示的值执行操作)、以及加载/存储单元34(用于执行用于将数据值从1级(L1)数据缓存36加载到寄存器40的加载操作或用于将数据值从寄存器40存储到L1数据缓存36的存储操作)。可以理解的是,这些只是可以提供的执行单元的类型的一些示例,并且还可以提供许多其他类型的执行单元。为了执行处理操作,执行阶段12可以从一组寄存器40中读取数据值。然后可以通过写回阶段14将执行的指令的结果写回到寄存器40。
L1指令缓存20和L1数据缓存36可以是包括多级缓存的缓存层次结构的一部分。例如,还可以提供二级(L2)缓存44,并且可以提供可选的其他级别的缓存。在该示例中,L2缓存44在L1指令缓存20和L1数据缓存36之间共享,但是其它示例可以具有单独的L2指令缓存和L2数据缓存。在要提取的指令不在L1指令缓存20中时,可以从L2缓存44中提取指令,并且类似地,在指令不在L2缓存44中时,可以从主存储器50中提取指令。类似地,响应于加载指令,如果数据不在L1数据缓存36中,则可以从L2缓存44中提取数据,并且如果需要则从存储器50中提取数据。可以使用任何已知的方案来管理缓存层次结构。
由流水线4使用来引用程序指令和数据值的地址可以是虚拟地址,但是至少主存储器50(以及可选地还有缓存层次结构的至少一些级别)可以被物理寻址。因此,可以提供转换后备缓冲器52(TLB),用于将流水线4所使用的虚拟地址转换为用于访问缓存或存储器的物理地址。例如,TLB 52可以包括多个条目,每个条目指定虚拟地址空间的相应页面的虚拟页面地址以及该虚拟页面地址应该映射到的相应物理页面地址,以便将相应页面内的虚拟地址转换为物理地址。例如,虚拟页面地址和物理页面地址可以对应于相应虚拟地址和物理地址的最高有效部分,其中在将虚拟地址映射到物理地址时剩余的最低有效部分保持不变。除了地址转换信息之外,每个TLB条目还可以包括指定访问许可的一些信息,例如,指示地址的某些页在流水线4的某些模式中是否可访问。在一些实施例中,TLB条目还可以定义地址的相应页面的其他属性,例如,定义响应于读取操作或写入操作更新缓存层次结构的哪些级别的缓存策略信息(例如,缓存应该以回写(write back)模式还是直写(writethrough)模式进行操作),或定义对相应页面中的地址的数据访问是否可以由存储器系统重新排序(与流水线4发布数据访问的顺序相比)的信息。
虽然图1示出了单级TLB 52,但是应当理解的是,可以提供TLB的层次结构,使得一级(L1)TLB 52可以包括用于转换多个最近访问的页面中的地址的TLB条目,并且二级(L2)TLB可以被提供用于存储针对更多页面的条目。在L1TLB中不存在所需条目时,可以从L2TLB或层次结构中的其他TLB中提取所需条目。如果要访问的页面的所需条目不在任何TLB中,则可以执行页表遍历(page table walk)来访问存储器50中的页表。在本技术中可以使用任何已知的TLB管理方案。
而且,应当理解,一些系统可以支持多级地址转换,使得例如可以使用第一TLB(或TLB的层次结构)来将虚拟地址转换为中间地址,并且使用了一个或多个其他TLB的第二级地址转换然后可以将中间地址转换成用于访问缓存或存储器的物理地址。例如,这可以用于支持虚拟化,其中第一级地址转换可以由操作系统管理,并且第二级地址转换可以由管理程序管理。
如图1所示,装置2可以具有一组有界指针寄存器60。每个指针寄存器60包括标识要访问的数据值或指令的地址的指针值62和指定针对相应指针62的地址的可允许范围的范围信息64。可选地,有界寄存器60还可以包括其他限制信息66,限制信息66可以对指针的使用定义一个或多个限制。例如,限制66可以用于限制可以使用指针62的指令的类型,或在其中可以使用指针的流水线4的模式。因此,范围信息64和限制信息66可以被认为是定义其中允许指针62被使用的能力。在尝试在所定义的能力之外使用指针62时,可以触发错误。例如,范围信息64可以用于确保指针(或从指针导出的值)保持在某已知边界内,并且不偏离到可能包含敏感或安全信息的存储器地址空间的其他区域。
例如,图2示出了指令类型的示例,针对该类型的指令,可允许范围用于防止对数据或指令的未经授权的访问。如图2的顶部所示,特定的有界指针寄存器PR1包括给定的指针值62和范围信息64,在该示例中,该范围信息64使用定义可允许范围下界的下界地址68和定义可允许范围的上界的上界地址69来指定。例如,界限68、69被设置为定义地址80000至81000的范围。在某些指令引用有界指针寄存器PR1并且指针62在该范围之外时,可以触发错误。
例如,如图2的部分A所示,在一些系统中,如果尝试将指针寄存器60中的指针62的值设置为位于范围信息所指定的范围之外的值,则可以触发错误64。这避免了指针62取指定范围之外的任何值,使得可以确保使用指针的任何访问都安全地位于可允许范围内。或者,如图2的部分B所示,在指令尝试访问由指针62的地址标识的位置时,并且在该地址位于指定范围之外时,可以触发错误。因此,仍然可以允许将指针62设置为指定范围之外的值,但是一旦尝试指针地址处的数据访问或指令访问,如果地址位于可允许范围之外,则可以触发错误。其他系统可以响应于图2的部分A和B所示的两种类型的指令来触发错误。
同样,在一些示例中,一些指令可以将偏移添加到存储在给定的有界指针寄存器中的指针值。在这种情况下,如果指针和偏移的总和位于范围信息64所指定的可允许范围之外,则可以触发错误。
范围信息64可以以不同的方式设置。例如,安全代码或操作系统或管理程序可以指定针对给定指针的可允许范围。例如,指令集架构可以包括用于设置或修改针对给定指针62的范围信息64的多个指令,并且这些指令的执行可以被限制于特定软件或处理器4的特定模式或异常状态。可以使用用于设置或修改范围信息64的任何已知技术。
如图3所示,与有界指针相关联的范围信息64可以被新类型的指令利用,该新类型的指令可以触发针对基于范围信息64确定的地址的目标范围要被执行的给定操作。例如,图3示出了用于触发清理L1数据缓存36中的数据值的操作的缓存清理指令的示例。缓存清理指令70将寄存器说明符指定为操作数,该寄存器说明符将有界指针寄存器60中的一个有界指针寄存器标识为目标有界指针寄存器。例如,在这种情况下,指定寄存器PR1。响应于该指令,处理器12触发缓存清理操作以清理缓存36的任意条目72(该条目存储与位于由目标有界指针寄存器PR1的范围信息64指定的地址的范围内的地址相关联的数据)内的数据值。在图3的示例中,第一条目和第三条目具有指示位于范围信息64中定义的可允许范围80000-81000之外的地址的标记值74,因此这些条目不被清理。然而,存储在第二条目和第四条目中的脏值被清理并且被写回到L2缓存44,因为它们的相应标记指示了位于由范围信息64指示的可允许范围内的地址。注意,指令70中的单个寄存器说明符PR1足以标识要执行清理操作的地址的范围-不需要在指令编码中标识范围的开始地址和结束地址。
其他类型的指令可以以类似的方式使用有界指针的范围信息64进行操作。例如,可以在L1数据缓存36或L1指令缓存20上执行其他类型的缓存维护操作。例如,不同于执行清理操作以从与定义范围内的地址相对应的条目中将任何脏数据值写回(到存储器或更高级别的缓存),可以执行无效操作以使来自这些条目的数据无效(其中这些条目中的脏数据在无效期间丢失)。或者,可以执行清理和无效操作,使得首先通过将任何脏数据写回到L2缓存44来清理数据,然后使该数据无效,这样使得该数据不再驻留在L1数据缓存36中(与无效操作不同,清理和无效操作将保留脏数据)。
同样,也可以对系统内的其他缓存类结构(例如,分支目标地址缓存24、TLB 52等)进行缓存维护。例如,指定给定的有界指针寄存器60的单个指令可以触发对BTAC 24或TLB52内的任意条目(该条目对应于由目标有界指针寄存器60的范围信息64指定的范围中的地址)的无效。对于具有多级缓存层次结构的缓存类结构(例如,TLB或数据/指令缓存),可以针对要执行维护的缓存的不同级别提供不同形式的缓存维护指令。或者,一些配置信息可以指定执行缓存维护的缓存层次结构的点。例如,一些缓存维护操作可能要求无效化或清理到L2缓存,而其他缓存维护操作可能要求对更高级别的缓存或主内存执行更深入的维护。
同样,处理流水线4可以具有对以下指令的架构支持,该指令用于触发针对由范围信息64标记的地址的范围的其他类型的操作。例如,可以提供将指定范围内的每个地址处的数据值设置为预定值的设置指令。预定值可以是零或某其他固定值。因此,通过执行单个指令,范围信息64指定的地址的范围内的所有数据值可以被清理为零或某其他值。
类似地,可以提供指令,用于将各个数据值复制到具有由范围信息64标记的地址的范围的存储位置。要被复制到地址的可允许范围的数据值可以由寄存器40中或指令编码中指定的地址来标识,或者可以通过指定第二有界指针寄存器60(其范围信息64标识了地址的范围,该地址的范围包括要被复制到由第一有界指针寄存器60中的范围信息64标记的地址的数据值)来标识。
这种类型的另一指令可以是搜索指令,其可以指定要在存储位置(该存储器位置具有位于由指定的指针寄存器60的范围信息64指示的范围内的地址)中搜索的特定数据值。
因此,可能存在这种类型的指令(“第一类型指令”)的范围,其指定目标有界指针存储位置60。作为响应,处理流水线12针对地址的目标范围执行给定的处理操作,该地址的目标范围是基于针对目标有界指针存储位置60定义的地址的可允许范围64来确定的。除了图2所示的形式的第二种类型的指令(该指令使用范围信息来管理是否允许指针的给定使用)之外,还可以提供这种类型的指令。
第一类型的指令可以在流水线4内以多种不同的方式实现,这取决于给定实现方式中提供的具体微架构。例如,在一些系统中,第一类型的单个指令可以被解码阶段8解码为多个单独的微操作,每个微操作指定由范围信息64定义的范围内的单个地址,微操作然后可以单独地被执行以执行在所需范围上的操作。这种方法在执行阶段12和任何存储结构中可以被更简单地实现,因为解码的微操作然后可以以与用于触发对给定地址的相应操作的单个指令相同的方式来处理。然而,指令缓存20和存储器50中的代码密度可以被提高(因为第一类型的单个指令可以触发要在范围上执行的操作),并且还可以提高安全性(因为编写包括第一种类型的指令的代码的程序员不需要知道针对指针的地址的可允许范围)。
或者,解码阶段8可以将第一类型的指令解码为传递到执行阶段12的单个操作,并且执行阶段12可以具有用于触发针对每个地址的多个单独操作的电路。或者,执行阶段12可以基于所需的有界指针的范围信息64向存储器/缓存层次结构发布指定所需的地址的范围的单个命令,并且与存储器或缓存相关联的控制电路可以负责用针对每个地址的单独操作进行响应。
请注意,在架构水平处,第一种类型的指令触发要针对地址的范围(该地址的范围在针对给定有界指针的范围信息中被指示)执行的操作,但这并不一定意味着该指令的微架构实现方式实际上需要将指令分解为单独操作(一个单独操作针对范围中的一个地址)。例如,可以执行较少的操作,这些操作给出相同的结果,就好像针对每个地址发布了单独操作一样。例如,对于缓存维护操作,由范围信息64指示的地址的范围可能相对较大,并且在缓存36、20、24、52中可能存在相对较少的条目。如果针对范围内的每个地址触发单独操作,则可能需要大量的缓存查找,这可能消耗大量的电力,因为需要针对范围中的每个地址搜索标记。替代地,以下方式可以更加有效地遍历缓存36、20、24、52的每个条目:将标记与指定的地址的范围进行比较,并且在标记位于范围内时对该条目执行维护,使得实际上不需要对每个地址发布单独维护操作。采用这种方法,每个条目只需要被查询一次,就可以给出与范围内每个地址的单独维护操作相同的结果。因此,通常可以针对基于范围信息确定的地址的目标范围执行预定操作,但是对于该范围中的每个单独地址实际地执行单独操作不是必需的(尽管仍然是可能的)。
因此,存在多种方式,使得上面讨论的类型的指令可以在微观架构水平上被实现。
图4示出了执行第一类型的指令(例如,图3所示的缓存清理指令70)的方法。在步骤100处遇到第一类型的指令。这可以在解码阶段8处(其中解码阶段然后可以将该指令映射到用于使用地址的范围执行相应操作的多个微操作),或者可以在执行阶段12处(其中该类型的指令被实际上执行)。响应于第一类型的指令,在步骤102处,执行阶段12触发执行在地址的目标范围上的给定处理操作,该地址的目标范围是基于针对第一类型的指令中指定的相应指针寄存器X定义的可允许范围而确定的。
图5示出了执行第二类型的指令(例如,图2中所示的指针设置指令或加载指令)的方法。在步骤110处,遇到指定有界指针寄存器X的第二类型的指令。在步骤112处,处理流水线4执行使用了有界指针寄存器X中指定的指针62的给定的处理操作。同时,在步骤114处,流水线4确定使用有界指针寄存器X中的指针62确定的地址是否位于由范围信息64指示的可允许范围内。使用指针62确定的地址可以是指针62自身,或者是从指针导出的地址,例如,指针和偏移的总和。在使用指针确定的地址位于可允许范围内时,在步骤116处不会触发错误,而在地址位于可允许范围之外时,在步骤118处触发错误。例如,错误可能触发处理安全异常,或触发用于处理在可允许范围外的地址的另一例程。在一些情况下,步骤114至118可以与步骤112并行执行,或者可以在步骤112之前或之后执行。例如,在一些情况下,可以允许使用指针62的操作继续进行,但是如果检测到范围违规,则可以触发错误并且取消处理。在其它情况下,可以首先执行范围检查,并且使用指针62的操作仅可以在没有范围违规的情况下继续进行。
在一些情况下,对于第一类型的指令,针对指定范围内的每个地址执行的操作可以独立于指针62自身的实际值。例如,图3所示的缓存维护指令根本不考虑指针值62,并且缓存维护操作仅取决于范围信息64中指定的范围。对于支持有界指针的架构而言这种情况并不常见,对此,使用有界指针寄存器的操作通常会作用于指针值自身,并且独立于范围信息。
然而,在一些情况下,响应于第一类型的指令执行的处理操作也可以至少部分依赖于指针值62自身以及范围信息64。例如,如图6所示,在对指定范围内的每个地址执行一系列操作时,可能会在这些操作的中途接收到中断。例如,图6给出了用于在指令缓存20中针对指定范围内的每个地址执行无效的指令的示例。在中断120发生在点122处时,可以将目标有界指针寄存器的指针62设置为执行无效的最后一个地址。然后,处理切换以执行中断处理程序124,从而执行响应于该中断需要执行的任何处理。当从中断处理返回时,在点126处,无效可以在由指针62指示的地址处重新开始,使得不需要针对在中断120之前已经完成的地址进行重复的无效。因此,指针值62可以被用作追踪第一类型的指令的进度的手段,以避免需要重复已经执行的操作。
请注意,图6示出了第一类型的指令被分解成针对每个地址的单独操作的示例,但是如上所述,其他微架构可以以不同的方式实现等同的操作,例如,通过检查每个缓存条目来查看它是否包含指定范围中的地址的数据。
上面的示例示出了特定实施例,其中针对给定的有界指针的范围信息64由下界68和上界69表示,并且其中范围信息64被存储在与指针62相同的寄存器中。然而,图7至图9示出了可以表示与给定的有界指针相关联的范围信息的其他方式。
如图7所示,范围信息64可以替代地由基础地址150和尺寸参数152(该尺寸参数152标识从基础地址150开始的地址的范围的尺寸(例如,4K、8K等))来表示。
同样,如图8和9所示,范围信息64(或其它限制信息66)不必存储在与指针62自身相同的寄存器中。例如,指针寄存器60可以仅仅存储指针62,然后可以提供一些其他存储元件160(堆栈上或存储器中的其他寄存器或位置)用于存储相应的范围信息。如图8所示,在一些情况下,在每个指针寄存器62和相应范围存储元件160之间可以存在一对一的映射,使得为了访问给定指针的范围信息,处理器可以简单地读取相应的范围存储元件160。
如图9所示,在其他情况下,指针寄存器60和范围存储元件160之间可以存在变量映射。例如,如图9所示,每个指针寄存器60可以指定指针62以及范围标识符170,该范围标识符170标识哪个范围存储元件160存储该指针的范围信息。这可以是有用的,因为其允许多个指针寄存器60对应于范围信息的相同部分(例如,图9中的指针寄存器PR0、PR2指的是相同范围信息),使得范围存储元件的数量减少。多个指针具有定义的相同能力可能是相对常见的,所以与针对每个指针单独定义能力相比,这种方法可以减少实现其的电路开销。
同样,虽然图1示出了与用于存储一般整数值或浮点值的通用寄存器40分离的指针寄存器60,但是在其他示例中,可以存在可以存储一般数据值或有界指针的通用寄存器组。不是有界指针的值可以将范围信息64(和限制66,如果提供了的话)设置为无效。因此,在这种情况下,有界指针寄存器60可以简单地是设置了有效范围信息的一些通用寄存器。
同样,有界指针也可以存储在其他类型的存储元件中,而不一定是寄存器。例如,某些架构可以访问堆栈存储器上的指针,在这种情况下,指令可以引用堆栈以访问给定的指针。因此,引用堆栈上的有界指针的指令然后可以用于触发给定的处理操作,该给定的处理操作将被应用于由与存储在被引用的堆栈位置中的有界指针相关联的范围信息指示的地址的范围。
上面的示例示出了将有界指针指定为操作数的指令,针对该指令,针对在由有界指针的范围信息所指示的可允许范围内的每个地址执行给定的操作。
然而,如图10所示,也可以提供以下形式的指令,其中针对仅与可允许范围的一部分相对应的地址的目标范围执行预定操作。例如,如图10所示,可以提供不同形式的第一种类型的指令。第一形式的指令180可以触发针对与整个可允许范围相对应的地址的目标范围的给定处理操作。第二形式的指令182可以触发要针对位于可允许范围的下界地址68和指针地址62自身之间的地址的目标范围执行的处理操作。第三形式的指令184可以触发要针对在指针地址62与可允许范围的上界地址(上界地址可以根据图10中所示出的上界值69或根据如图7中的基础地址150和尺寸指示152来确定)之间的地址的目标范围执行的处理操作。第三形式的指令184例如在图6所示出的情况下可以是有用的,用于允许在中断之后在接收到中断之前到达的地址处重新开始操作。
给定的处理器实现方式可以支持这些形式的指令180、182、184中的任何一个、两个或全部。对于某些类型的操作(例如,缓存清理),可以支持这些形式中的几种形式以提供将操作应用于可允许范围的不同部分的灵活性,而其他类型的操作(例如,搜索指定值)可能仅支持一种形式的指令(例如,其中目标范围是整个可允许范围的形式)。
因此,通常,第一类型的指令可以触发要针对地址的目标范围执行的操作,地址的目标范围至少部分地基于给定的有界指针的范围信息来确定。可选地,目标范围也可以基于其他参数来确定,例如,指针自身的值、或指示目标范围的界限的其他输入操作数。
在本申请中,词语“被配置为......”被用来表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”表示硬件或软件互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或处理器或其他处理设备可以被编程为执行功能。“被配置为”并不意味着装置元件需要以任何方式被改变以提供所定义的操作。
虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解的是,本发明不限于这些精确的实施例,并且本领域技术人员可以在不偏离由所附权利要求限定的本发明的范围和精神的情况下进行各种改变和修改。

Claims (24)

1.一种装置,包括:
一个或多个有界指针存储元件,每个有界指针存储元件用于存储具有相关联的范围信息的指针,所述相关联的范围信息指示针对所述指针的地址的可允许范围;以及
处理电路,用于响应于标识了给定的有界指针存储元件的第一类型的指令,针对地址的目标范围执行预定操作,所述地址的目标范围至少部分地基于与存储在所述给定的有界指针存储元件中的指针相关联的范围信息被确定。
2.根据权利要求1所述的装置,其中,所述地址的可允许范围包括所述地址的目标范围。
3.根据权利要求1和2中任一项所述的装置,其中,所述地址的目标范围包括所述地址的可允许范围内的所有地址。
4.根据权利要求1和2中任一项所述的装置,其中,所述地址的目标范围包括在由所述指针指示的地址与所述地址的可允许范围的上界地址或下界地址之间的地址。
5.根据任意前述权利要求所述的装置,其中,所述一个或多个有界指针存储元件包括一个或多个寄存器。
6.根据任意前述权利要求所述的装置,其中,响应于标识了指定的有界指针存储元件的第二类型的指令,所述处理电路被配置为对存储在所述指定的有界指针存储元件中的指针执行操作。
7.根据权利要求6所述的装置,其中,响应于所述第二类型的指令,所述处理电路被配置为在使用存储在所述指定的有界指针存储元件中的指针确定的地址位于由针对所述指定的有界指针存储元件的范围信息指示的地址的可允许范围之外时,触发错误条件。
8.根据权利要求6和7中任一项所述的装置,其中,所述第二类型的指令包括用于设置存储在所述指定的有界指针存储元件中的指针的指令。
9.根据权利要求6到8中任一项所述的装置,其中,所述第二类型的指令包括用于从使用存储在所述指定的有界指针存储元件中的指针确定的地址访问数据值的指令。
10.根据任意前述权利要求所述的装置,包括缓存,所述缓存包括多个条目,每个条目用于存储与相应地址相关联的数据;并且
所述第一类型的指令包括缓存维护指令,针对所述缓存维护指令,所述预定操作包括对所述相应地址位于所述地址的目标范围内的选择的条目执行缓存维护操作。
11.根据权利要求10所述的装置,其中,所述缓存包括以下各项中的至少一个:
数据缓存;
指令缓存;
转换后备缓冲器;以及
分支目标地址缓存。
12.根据权利要求10和11中任一项所述的装置,其中,所述缓存维护操作包括以下各项中的至少一个:
使所述选择的条目中的数据无效;
清理所述选择的条目中的数据;以及
清理所述选择的条目中的数据并且使所述选择的条目中的数据无效。
13.根据任意前述权利要求所述的装置,其中,所述第一类型的指令包括设置指令,针对所述设置指令,所述预定操作包括针对所述地址的目标范围中的每个地址将数据值设置为预定值。
14.根据任意前述权利要求所述的装置,其中,所述第一类型的指令包括复制指令,针对所述复制指令,所述预定操作包括将各个数据值复制到所述地址的目标范围中的每个地址。
15.根据权利要求14所述的装置,其中,所述复制指令指定第二有界指针存储元件,针对所述第二有界指针存储元件,由所述范围信息指示的所述地址的可允许范围标识存储要被复制的所述各个数据值的存储位置的地址的范围。
16.根据任意前述权利要求所述的装置,其中,所述第一类型的指令包括搜索指令,针对所述搜索指令,所述预定操作包括在所述地址的目标范围中的每个地址处搜索指定值。
17.根据权利要求1所述的装置,其中,所述预定操作独立于存储在所述给定的有界指针存储元件中的所述指针的值。
18.根据权利要求1至16中任一项所述的装置,其中,响应于在针对所述地址的目标范围中的一些地址执行所述预定操作之后发生的中断,所述处理电路被配置为更新所述给定的有界指针存储元件中的指针以指示所述预定操作被中断处的地址;并且
在从所述中断的处理返回之后,所述处理电路被配置为在由所述给定的有界指针存储元件中的指针指示的地址处重新开始执行所述预定操作。
19.根据任意前述权利要求所述的装置,其中,每个有界指针存储元件被配置为存储所述指针和所述相关联的范围信息。
20.根据权利要求1到18中任一项所述的装置,包括另外的存储元件,用于存储针对存储在相应有界指针存储元件中的指针的相关联的范围信息。
21.根据任意前述权利要求所述的装置,其中,所述范围信息标识所述地址的可允许范围的下界和上界。
22.根据权利要求1至20中任一项所述的装置,其中,所述范围信息标识了所述地址的可允许范围的下界和上界中的一个、以及所述地址的可允许范围的尺寸。
23.一种装置,包括:
至少一个用于存储具有相关联的范围信息的指针的装置,所述相关联的范围信息指示针对所述指针的地址的可允许范围;以及
用于响应于标识了给定的用于存储的装置的第一类型的指令来针对地址的目标范围执行预定操作的装置,所述地址的目标范围至少部分地基于与存储在所述给定的用于存储的装置中的指针相关联的范围信息被确定。
24.一种用于包括一个或多个有界指针存储元件的装置的方法,每个有界指针存储元件用于存储具有相关联的范围信息的指针,所述相关联的范围信息指示针对所述指针的地址的可允许范围;所述方法包括:
接收标识了给定的有界指针存储元件的第一类型的指令;以及
响应于所述第一类型的指令,针对地址的目标范围执行预定操作,所述地址的目标范围至少部分地基于与存储在所述给定的有界指针存储元件中的指针相关联的范围信息被确定。
CN201680039576.6A 2015-07-10 2016-06-14 用于使用与指针相关联的范围信息来执行指令的装置和方法 Active CN107735775B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1512102.3 2015-07-10
GB1512102.3A GB2540206B (en) 2015-07-10 2015-07-10 Apparatus and method for executing instruction using range information associated with a pointer
PCT/GB2016/051758 WO2017009598A1 (en) 2015-07-10 2016-06-14 Apparatus and method for executing instruction using range information associated with a pointer

Publications (2)

Publication Number Publication Date
CN107735775A true CN107735775A (zh) 2018-02-23
CN107735775B CN107735775B (zh) 2022-08-02

Family

ID=54013768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680039576.6A Active CN107735775B (zh) 2015-07-10 2016-06-14 用于使用与指针相关联的范围信息来执行指令的装置和方法

Country Status (6)

Country Link
US (1) US11314641B2 (zh)
EP (1) EP3320445B1 (zh)
KR (1) KR102695593B1 (zh)
CN (1) CN107735775B (zh)
GB (1) GB2540206B (zh)
WO (1) WO2017009598A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111837111A (zh) * 2018-03-19 2020-10-27 Arm有限公司 用于存储有界指针的装置和方法
CN111954865A (zh) * 2018-04-16 2020-11-17 Arm有限公司 用于预提取数据项的装置和方法
CN112334884A (zh) * 2018-08-20 2021-02-05 Arm有限公司 用于控制对有界指针的使用的装置和方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2562062B (en) 2017-05-02 2019-08-14 Advanced Risc Mach Ltd An apparatus and method for managing capability metadata
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10884929B2 (en) * 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10705973B2 (en) * 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03116248A (ja) * 1989-09-29 1991-05-17 Hitachi Ltd データベースのデータ保全方式
US6594751B1 (en) * 1999-03-25 2003-07-15 Progress Software Corporation Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system
US20040019774A1 (en) * 2002-06-07 2004-01-29 Ryuji Fuchikami Processor device and information processing device, compiling device, and compiling method using said processor device
CN101515320A (zh) * 2009-04-10 2009-08-26 中国科学院软件研究所 一种攻击时漏洞检测方法及其系统
CN101615133A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于细粒度延迟写拷贝的装置和方法
US20100174893A1 (en) * 2009-01-05 2010-07-08 International Business Machines Corporation Runtime checking of dynamic subranges
US20110087389A1 (en) * 2009-10-09 2011-04-14 Gm Global Technology Operations, Inc. Standby mode for optimization of efficiency and durability of a fuel cell vehicle application
US8082399B2 (en) * 2008-07-31 2011-12-20 International Business Machines Corporation Cache bounded reference counting
CN102385524A (zh) * 2011-12-23 2012-03-21 浙江大学 一种基于混编指令集的编译链指令替换方法
CN102461092A (zh) * 2009-04-24 2012-05-16 代尔夫特科技大学 用于地址查找的数据结构、方法和系统
US20120260031A1 (en) * 2010-09-28 2012-10-11 Texas Instruments Incorporated Enhanced pipelining and multi-buffer architecture for level two cache controller to minimize hazard stalls and optimize performance
US20140176187A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652858A (en) * 1994-06-06 1997-07-29 Hitachi, Ltd. Method for prefetching pointer-type data structure and information processing apparatus therefor
EP1182562B1 (en) * 2000-08-21 2011-05-11 Texas Instruments France Smartcache with interruptible block prefetch
EP1313014B1 (en) * 2001-11-15 2010-03-03 Texas Instruments France Interruptible and re-entrant instruction for cleaning a region of a cache memory
US7761676B2 (en) * 2006-12-12 2010-07-20 Intel Corporation Protecting memory by containing pointer accesses
JP5308629B2 (ja) * 2007-03-26 2013-10-09 ルネサスエレクトロニクス株式会社 マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス保護方法
US8024547B2 (en) 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
WO2009047705A1 (en) * 2007-10-10 2009-04-16 St Wireless Sa Transmitter
EP3206381A1 (en) * 2008-07-15 2017-08-16 Immersion Corporation Systems and methods for mapping message contents to virtual physical properties for vibrotactile messaging
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
US9201654B2 (en) * 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
CN105144120B (zh) * 2013-03-28 2018-10-23 慧与发展有限责任合伙企业 基于存储器地址将来自高速缓存行的数据存储到主存储器
US9436847B2 (en) * 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03116248A (ja) * 1989-09-29 1991-05-17 Hitachi Ltd データベースのデータ保全方式
US6594751B1 (en) * 1999-03-25 2003-07-15 Progress Software Corporation Method and apparatus for pointer relocation optimization for virtual memory mapping and transaction management in a database system
US20040019774A1 (en) * 2002-06-07 2004-01-29 Ryuji Fuchikami Processor device and information processing device, compiling device, and compiling method using said processor device
CN101615133A (zh) * 2008-06-27 2009-12-30 国际商业机器公司 用于细粒度延迟写拷贝的装置和方法
US8082399B2 (en) * 2008-07-31 2011-12-20 International Business Machines Corporation Cache bounded reference counting
US20100174893A1 (en) * 2009-01-05 2010-07-08 International Business Machines Corporation Runtime checking of dynamic subranges
CN101515320A (zh) * 2009-04-10 2009-08-26 中国科学院软件研究所 一种攻击时漏洞检测方法及其系统
CN102461092A (zh) * 2009-04-24 2012-05-16 代尔夫特科技大学 用于地址查找的数据结构、方法和系统
US20110087389A1 (en) * 2009-10-09 2011-04-14 Gm Global Technology Operations, Inc. Standby mode for optimization of efficiency and durability of a fuel cell vehicle application
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US20120260031A1 (en) * 2010-09-28 2012-10-11 Texas Instruments Incorporated Enhanced pipelining and multi-buffer architecture for level two cache controller to minimize hazard stalls and optimize performance
CN102385524A (zh) * 2011-12-23 2012-03-21 浙江大学 一种基于混编指令集的编译链指令替换方法
US20140176187A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
M. SATO 等: "Run-time Checking In Lisp By Integrating Memory Addressing And Range Checking", 《 THE 16TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》 *
M. SATO 等: "Run-time Checking In Lisp By Integrating Memory Addressing And Range Checking", 《 THE 16TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE》, 6 August 2002 (2002-08-06), pages 290 - 297 *
李畅 等: "进程互斥与同步解析", 《现代计算机(专业版)》 *
李畅 等: "进程互斥与同步解析", 《现代计算机(专业版)》, no. 14, 5 December 2010 (2010-12-05), pages 7 - 10 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111837111A (zh) * 2018-03-19 2020-10-27 Arm有限公司 用于存储有界指针的装置和方法
CN111837111B (zh) * 2018-03-19 2024-08-16 Arm有限公司 用于存储有界指针的装置和方法
CN111954865A (zh) * 2018-04-16 2020-11-17 Arm有限公司 用于预提取数据项的装置和方法
CN112334884A (zh) * 2018-08-20 2021-02-05 Arm有限公司 用于控制对有界指针的使用的装置和方法

Also Published As

Publication number Publication date
KR102695593B1 (ko) 2024-08-16
GB2540206B (en) 2018-02-07
GB2540206A (en) 2017-01-11
WO2017009598A1 (en) 2017-01-19
CN107735775B (zh) 2022-08-02
KR20180027524A (ko) 2018-03-14
EP3320445B1 (en) 2022-11-30
GB201512102D0 (en) 2015-08-19
EP3320445A1 (en) 2018-05-16
US11314641B2 (en) 2022-04-26
US20180196746A1 (en) 2018-07-12

Similar Documents

Publication Publication Date Title
CN107735775A (zh) 用于使用与指针相关联的范围信息来执行指令的装置和方法
CN107924366B (zh) 用于控制指令执行行为的装置及方法
TWI752951B (zh) 用於對能力元資料執行操作的設備及方法
CN110574009B (zh) 用于管理对能力的使用的设备和方法
US11347508B2 (en) Apparatus and method for managing a capability domain
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
US20200192800A1 (en) An apparatus and method for managing capability metadata
CN112106029B (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