CN111201518B - 用于管理能力元数据的设备和方法 - Google Patents

用于管理能力元数据的设备和方法 Download PDF

Info

Publication number
CN111201518B
CN111201518B CN201880027855.XA CN201880027855A CN111201518B CN 111201518 B CN111201518 B CN 111201518B CN 201880027855 A CN201880027855 A CN 201880027855A CN 111201518 B CN111201518 B CN 111201518B
Authority
CN
China
Prior art keywords
capability
data block
capability metadata
data
cache
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
CN201880027855.XA
Other languages
English (en)
Other versions
CN111201518A (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 CN111201518A publication Critical patent/CN111201518A/zh
Application granted granted Critical
Publication of CN111201518B publication Critical patent/CN111201518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

提供了包括缓存存储装置的设备以及一种操作这样的缓存存储装置的方法。所述缓存存储装置中的数据块具有与其关联地存储的能力元数据,该能力元数据标识所述数据块是指定能力还是数据值。至少一种能力类型是有界指针。响应于对所述缓存存储装置中的数据块的写入,与所述数据块关联地设置能力元数据修改标记,指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。这支持系统的安全性,使得除非有意否则所述数据块的用途从数据值到能力的修改无法进行。当能力元数据被与其他数据分别地存储在存储器中时还可以产生效率,因为可对存储器做出较少的访问。

Description

用于管理能力元数据的设备和方法
技术领域
本公开涉及一种用于管理能力元数据的设备和方法。
发明内容
在基于能力的架构中为给定过程定义某些能力,并且如果试图在所定义的能力外执行操作则可触发错误。能力可采取各种形式,但是一种能力类型是有界指针(也称为“胖指针”)。对于有界指针,指针值例如可以标识或者用于确定要访问的数据值或要执行的指令的地址。然而,指针值还可以具有在使用指针值时指示地址的允许范围的关联的范围信息。这可用于确保根据指针确定的地址保持在某些界限内以维护行为的安全性或功能正确性。另外,可以与有界指针的指针值关联地指定某些许可/限制信息。可以将针对有界指针的范围信息和任何许可/限制信息称为能力信息,并且在基于能力的架构中这样的有界指针(包括其关联的能力信息)可以被称为能力。可以与存储在设备的存储元件中的数据关联地存储能力元数据。能力元数据可用于标识所关联的数据块是指定能力还是替代地包含不表示能力的数据(在本文中也称为通用数据)。能力元数据还可指定某些附加信息。当访问指定的数据时,可引用所关联的能力元数据以便确定数据块是表示能力还是通用数据。仍然需要提供用于在采用基于能力的架构的系统的存储元件内管理能力元数据的改进的机制。
在本文描述的一个示例中,提供了一种设备,所述设备包括:缓存存储装置,所述缓存存储装置用于存储数据块,每个数据块具有与其关联地存储的能力元数据,该能力元数据标识每个所述数据块是指定能力还是数据值,其中,至少一种能力类型是有界指针;以及缓存控制电路,所述缓存控制电路响应于对存储在所述缓存存储装置中的数据块的写入而与所述数据块关联地设置能力元数据修改标记,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。
在本文描述的一个示例中,提供了一种操作缓存存储装置的方法,所述方法包括以下步骤:在所述缓存存储装置中存储数据块;与每个数据块关联地存储能力元数据,该能力元数据标识每个所述数据块是指定能力还是数据值,其中,至少一种能力类型是有界指针;响应于对存储在所述缓存存储装置中的数据块的写入,与所述数据块关联地设置能力元数据修改标记,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。
在本文描述的一个示例中,提供了一种设备,所述设备包括:用于缓存数据块的装置;用于与每个数据块关联地存储标识每个所述数据块是指定能力还是数据值的能力元数据的装置,其中,至少一种能力类型是有界指针;用于响应于对所述数据块的写入而与存储在所述用于缓存数据块的装置中的数据块关联地设置能力元数据修改标记的装置,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述用于缓存数据块的装置中以来是否已改变。
附图说明
参考如附图中所图示的本发明的实施例,将仅通过示例进一步描述本发明,在附图中:
图1示意性地图示依照一个实施例的设备;
图2示出如果试图在有界指针存储元件集内设置或者访问指针值则可以触发错误的指令的类型的实施例,其中该指针值用于指定在通过关联的范围信息所指示的范围外的地址;
图3图示依照一个实施例的与有界指针关联的能力标签位的使用;
图4示意性地图示依照一个实施例的在采取有界指针的形式的能力内提供的各种字段以及关联的能力元数据信息;
图5A示出依照一个实施例的实施例缓存行,其中存储有两个值以及关联的能力元数据和能力标签脏位;
图5B示出依照一个实施例的实施例缓存行,该缓存行将两个值与关联的能力元数据和用于每个能力标签的能力标签脏位一起存储在该缓存行中;
图5C示意性地图示依照一个实施例的用于在通过写入操作来更新存储在该缓存行中的值时更新缓存行中的能力标签脏位的电路;
图6示意性地图示依照一个实施例的设备,该设备在一个实施例中包括两个层级的缓存存储装置、存储器控制器、能力表缓存和存储器;
图7A示出在一个实施例中采取来确定数据写入事务是否应该包括能力元数据的步骤的序列;
图7B图示用于基于能力标签脏位的值来抑制在数据写入事务中包括能力元数据的电路的实施例;
图8示出依照一个实施例的临时地存储来自存储器的能力标签表的行的能力标签表缓存的使用及其通过驱逐和加载进行的更新;
图9示出依照一个实施例的在缓存中采取来在与存储在缓存行中的值相关联的能力标签被更新时更新能力标签脏位的步骤的序列;
图10示出依照一个实施例由存储器控制器在接收到存储器访问时基于存储在能力标签表缓存中的能力标签脏位信息和能力标签位来采取的步骤的序列;
图11、图12和图13示出依照一个实施例的当数据被转移到缓存中或者从缓存转移出时采取以便在与经转移的数据关联地完全地提供、部分地提供或者不提供数据和能力标签干净/脏状态时确定这些数据和能力标签干净/脏状态的步骤的序列;
图14示出部分地概括在图11-13中参考的状态的组合的表;以及
图15图示可以被使用的虚拟机环境。
在参考这些图来描述其中示出的特定实施例之前,提供实施例的以下描述。
具体实施方式
如上面所提及的,在基于能力的架构中为给定过程定义某些能力,并且如果试图在所定义的能力外执行操作则可触发错误。可以定义各种能力类型,但是一种能力类型是有界指针(其在一个实施例中并入指针值及关联的范围和许可信息两者)。采用这样的基于能力的架构的设备通常将访问存储在存储器中的值以及与存储的每个值关联地提供的能力元数据,以便标识值是表示能力还是替代地表示通用数据。因此应理解的是,术语“值”在本文中一般地用于指代能力或数据值,并且在需要区别的情况下使用术语“能力”或“数据值”。进一步地,还应该理解的是在不同的实施例中,“数据块”可以对应于不同粒度的信息。例如在一种极端情况下,数据块可对应于可在架构中引用的最小位组,同时能力元数据的关联项指示该组是表示能力还是替代地表示通用数据。相反地,在其他实施例中数据块可对应于任意大定义的位组,同时能力元数据的关联项指示该组是表示能力还是替代地表示通用数据。某些指令可用于引用借助于其能力元数据被存储并标记为能力的值,并且用于执行依赖于该能力的操作。例如,考虑有界指针,这样的指令的执行可使得边界指针被取回,并且以便其中的指针值然后用于导出存储器中的在指令的执行期间需要的地址。指针值可以直接地用于标识存储器地址,或者可以用于导出存储器地址,例如通过将偏移加到指针值。只要存储器地址在通过范围信息所指定的范围内并且满足许可信息中指定的任何许可,则然后将允许操作继续进行。
特别地,在一个实施例中,提供一种包括缓存存储装置的设备,其中,与缓存存储装置相关联的缓存控制电路与存储在缓存存储装置中的数据块关联地管理能力元数据修改标记,并且能力元数据修改标记用于指示能力元数据(即指示数据块是指定能力还是数据值)是否自数据块被存储在缓存存储装置中以来已被修改。通过类似于可以被与缓存数据项关联地存储来指示该数据项是否自被缓存以来已被修改的数据“脏”位,能力元数据修改标记在本文中也被称为能力标签“脏”位。由于指定能力的数据块与指定数据值的数据块之间的功能方面的显著差异,在设备中通常需要仔细区别这两种类型的数据块,因此当缓存这样的数据块时也是如此。能力元数据修改标记的提供支持这个,特别地使得除非有意,例如借助于从用于访问所述数据值的能力继承的许可,否则从一种类型到另一种类型的修改无法进行,而且进一步假设可以针对具有与之相关联的能力元数据的此类数据块的存储赢得效率。这个后者特征的一个示例可以在数据块及其关联的能力元数据被分别地存储(这可能例如需要对存储装置进行单独的访问)的情况下发生。知道与给定存储块相关联的能力元数据自数据块被存储在缓存存储装置中以来是否已改变例如可使得能够对存储装置进行较少的访问。
再次参考可以被与缓存数据项关联地存储来指示该数据项自被缓存以来是否已被修改的数据“脏”位,应该注意的是,这样的缓存脏位的实施方案通常实际上仅仅跟踪是否已进行对数据项的写入。换句话说,此方法不区分重新写入数据项先前具有的值的对数据项的写入和写入与数据项先前具有的值不同的值的对数据项的写入。这是因为校验所有数据位以查看是否已发生实际变化通常会过于昂贵(且不值得)。然而根据本技术预期通常会存在相对少的能力元数据位,所以校验那些位是否已实际地改变更加可行。此外还预期存储器的数据块将通常在延长时间段内保留其当前用法(数据或能力)。不过还提出了能力元数据修改标记的值指示与数据块相关联的能力元数据自数据块被存储在缓存存储装置中以来是否已被写入(而无需对数据块是否已实际地改变进行测试)的实施例。
可取决于系统要求而不同地配置能力元数据修改标记与数据块之间的对应。在一些实施例中,一个能力元数据修改标记与包括所述数据块在内的多个数据块对应。设想了关于存储在缓存中的数据的各种粒度水平,但是在一些实施例中,对于缓存存储装置中的每个缓存行而言,由缓存控制电路与数据块关联地设置的能力元数据修改标记是单个位。其他实施例可具有不同粒度的能力元数据修改标记,即每个与仅几个数据块对应或者每个与大量数据块对应。在一些实施例中每个数据块都有一能力元数据修改标记,使得与数据块关联地设置的能力元数据修改标记与所述数据块有一对一对应关系。
可以以各种方式使用通过能力元数据修改标记所提供的信息,但是在一些实施例中设备还包括存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的、从缓存存储装置到另一存储层级的写入事务而在能力元数据修改标记的值指示能力元数据自所指定的数据块被存储在缓存存储装置中以来尚未改变时,抑制针对关联的能力元数据和另一存储层级的写入事务。因此存储器控制器在处理针对指定的数据块的这样的写入事务时,可标识不需要在作为写入事务的目标的存储装置中更新其关联的能力元数据,其中已知能力元数据尚未改变。换句话说,在能力被存储在缓存中并且可能已被修改但仍为能力的情况下或者相反地在数据值已被存储在缓存存储装置中并且已被修改但仍为数据值的情况下,仅“值”它本身需要通过写入事务更新到目标存储装置,而不是更新关联的能力元数据。
作为事务目标的另一存储装置可以采取各种形式,但是在一些实施例中是存储器存储装置。在其他实施例中它可以是另一缓存存储层级。在另一存储装置是存储器存储装置的情况下,写入事务可以是针对存储器存储装置中的关联的能力元数据的读取-修改-写入事务。因此,在可借助于知道目标能力元数据尚未被修改而避免这样的读取-修改-写入事务的情况下,可避免对关联的能力元数据存储装置的存储装置的两个单独的读取和写入事务。
在一些实施例中,可以进一步提供专门地用于能力元数据的缓存存储装置,这被提供在比缓存存储装置更高的存储器层次层级(即在缓存存储装置与存储器之间)以进一步支持与对存储器中的能力元数据的访问相关联的等待时间的避免。在这样的实施例中存储器控制器可引用缓存在能力元数据缓存存储装置中的能力元数据以确定对存储器的访问是否是需要的,并且特别地以在能力元数据修改标记指示所需要的能力元数据自至少一个数据块被存储在缓存存储装置中以来尚未改变时避免这样的访问。因此,在一些实施例中,设备还包括能力元数据缓存存储装置以在比缓存存储装置更高的存储器层次层级存储能力元数据,并且其中,存储器控制器响应于针对至少一个数据块的存储器访问事务而返回需要的与至少一个数据块相关联的能力元数据,并且其中,当所需要的能力元数据未被存储在能力元数据缓存存储装置中时,存储器控制器响应于针对至少一个数据块的存储器访问事务而发起从能力元数据缓存存储装置中驱逐当前存储的能力元数据并将所需要的能力元数据取回到能力元数据缓存存储装置中,除非与至少一个数据块相关联的能力元数据修改标记的值指示所需要的能力元数据自至少一个数据块被存储在缓存存储装置中以来尚未改变。
可以将能力元数据以各种方式存储在能力元数据缓存存储装置中,但是可以实现紧凑存储形式,其中存储在能力元数据缓存存储装置中的一个位可以指示能力元数据的多个位中的任一位是否被置位。因此,这提供可用来快速地标识存储在存储器中的对应数据是否实际上包括仅数据值(而不是能力),因为预期可以存在存储器的大量连续区块,对此这是真的并在借助于能力元数据缓存存储装置中的信息标识这样的部分时,实现存储器访问事务可能需要仅对存储器进行单次访问,即仅通过访问至少一个数据块并且免除访问所对应的能力元数据的需要。
实际上,存储在能力元数据缓存存储装置中的信息可以被分层存储,例如其中能力元数据的表被以各种粒度存储在存储器中,并且能力元数据缓存存储装置能够使表中的行保持在典型的基于行的缓存结构中。然后这些表之一中的每个位可例如表示较低层级表中的相邻位集中的任一个是否被置位并且在最低层级表中,每个位可表示个别能力元数据标签。因此当存在这样的能力元数据缓存存储装置时,能力元数据修改标记使得存储器控制器能够避免需要确保能力元数据的适合行是在能力元数据缓存中(以使得能实现对能力元数据信息的快速读取或写入)。如果行不存在则将需要从能力元数据缓存中驱逐现有行同时可能回写到存储器,然后加载包含能力元数据位的行以及(在在能力元数据缓存存储装置中使用上面提及的用于此信息的缓存存储装置的分层层级的情况下)加载表示更粗粒度的能力元数据表信息的另外的行,进而从缓存中驱逐并可能回写有用的信息。然而,在能力元数据修改信息可用的情况下,则能力元数据自从存储器读取以来尚未改变的指示然后将不需要对能力元数据缓存内容进行改变。
然而,在给定缓存行内可以存在更细粒度的信息,并且可以为缓存行的相应部分提供能力元数据修改标记。因此,在一些实施例中缓存存储装置能够将数据块存储在缓存行中,并且由缓存控制电路与数据块关联地设置的能力元数据修改标记是缓存存储装置中的每个缓存行的多个位中的一位,并且其中,每个缓存行的多个位中的每个位指示所述缓存行的相应部分的能力元数据自所述缓存行的相应部分被存储在缓存存储装置中以来是否已改变。可以提供每缓存行提供这样的多个能力标签脏位,每个表示行的一部分,直到为缓存行的相应部分提供了数据脏位的相同粒度为止。因此,在一些实施例中缓存控制电路响应于对存储在缓存存储装置中的数据块的写入而与数据块部分关联地存储数据修改标记,其中,数据修改标记的值指示数据块部分自数据块被存储在缓存存储装置中以来是否已被写入,并且其中,与能力元数据修改标记相对应的所述缓存行的相应部分至少和数据块部分一样大。依照上面做出的注释,注意提及了这个数据块部分是否已被写入(而不是数据块部分是否实际上已被改变),因为校验所有数据位以查看是否已发生实际变化通常将过于昂贵(且不值得)。
如上面所提及的,设备中提供的存储器控制器可利用能力元数据修改标记的指示与指定的数据块关联地存储的能力元数据自该指定的数据块被(从存储器)存储在缓存存储装置中以来尚未改变的值来避免对存储器的某些访问。然而,本技术进一步提出,为了针对能力元数据的正确管理提供进一步的安全性水平,并且特别地为了确保虚假能力不能被针对同一存储器空间操作的多个代理“伪造”,可以在一些实施例中采取多个代理可访问同一存储空间以确保这个不会发生的步骤。
因此,在一些实施例中设备还包括存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的、从缓存存储装置到另一存储层级的写入事务,在与所指定的数据块关联地存储的能力元数据指示它是数据值并且能力元数据修改标记的值指示与所指定的数据块关联地存储的能力元数据自所指定的数据块被存储在缓存存储装置中以来尚未改变时,发布存储器写入事务以主动地使得存储在存储器中的能力元数据被设置以指示所指定的数据块是数据值。因此,即使已知能力尚未改变(借助于能力元数据修改标记的值),也仍然可以选择将能力元数据显式地设置(或者相反,重置)为其指示所指定的数据块是数据值的值(这在本文描述的实施方式中是在值为0时,但是这将被视为任意实施方案选择),从而确保在指定的数据块应该保存数据值的情况下,它不能通过与相同的存储器位置(但不同的代理)的多次交互来更新,以无意地或恶意地伪造能力。例如,如果代理A从未设置关联的能力标签(指示数据而不是能力)的存储器读取数据并且代理B随后将能力写入到同一位置,然后从仍未设置能力标签并且(并且能力标签被标记为未经修改)的代理A驱逐数据,则在存储器控制器将选择不清除来自代理A的写入上的标签情况下,这将允许从A数据和B标签伪造能力。在指示数据时显式地重置能力元数据可避免这个。
在一些实施例中提供对此的另一方法,其中设备还包括存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的、从缓存存储装置到另一存储层级的写入事务,在与所指定的数据块关联地存储的能力元数据指示它是数据值时,并且在存储器控制器已接收到指示另一代理自所指定的数据块被存储在缓存存储装置中以来已在存储器中对所指定的数据块和关联的能力元数据中的至少一个执行了写入动作的信号时,发布存储器写入事务以主动地使得存储在存储器中的能力元数据被设置以指示所指定的数据块是数据值。因此,在显式地已知另一代理已对相同的存储器位置执行了写入动作的情况下可以执行能力元数据的显式重置以确保它被重置以指示所指定的数据块是数据值,以避免这样的能力伪造的可能性。其他方法能包括禁止代理A和代理B访问相同的存储器位置。
本技术进一步设想了当数据块被转移到缓存存储装置中或者从缓存存储装置转移出时,一些实施例也可能不转移能力元数据修改标记和/或数据修改标记。换句话说,可以被与数据块关联地存储在缓存中的能力标签脏位和/或数据脏位在数据块被转移(无论是进入缓存还是离开缓存)时可能不随数据块而移动。在这种情形下,可以根据能力元数据修改标记和/或数据修改标记(能力标记脏位和/或数据脏位)被假定为什么对转移的目标强加某些约束。
在一些实施例中设备响应于数据块进入或者离开缓存存储装置的转移,并且当能力元数据修改标记的值指示与数据块相关联的能力元数据已改变时,使得数据块被视为被修改。
在一些实施例中设备响应于数据块进入或者离开缓存存储装置的转移,并且当数据修改标记未被转移时,使得数据块和能力元数据修改标记在转移是转移到较低缓存层时被视为干净的,使得数据块和能力元数据修改标记在转移不是到较低缓存层时被视为被修改。
在一些实施例中设备响应于数据块进入或者离开缓存存储装置的转移,并且当能力元数据修改标记未被转移时,使能力元数据修改标记的值根据数据修改标记被推断出。
在一些实施例中设备响应于数据块进入或者离开缓存存储装置的转移,并且当能力元数据未被转移时:在数据修改标记和能力元数据修改标记都指示未经修改时,使转移的目标将能力元数据视为将数据块标识为指定数据值;在数据修改标记和能力元数据修改标记都指示修改时,使转移的目标将能力元数据视为将数据块标识为指定数据值;以及在数据修改标记指示修改并且能力元数据修改标记指示未经修改时,使转移的目标将能力元数据修改标记的本地副本视为有效的。
在一些实施例中设备响应于数据块进入或者离开缓存存储装置的转移,并且当能力元数据未被转移时:在数据修改标记和能力元数据修改标记都指示未经修改时或者在数据修改标记和能力元数据修改标记均指示修改使,使转移的目标将能力元数据视为有效的;以及在数据修改标记指示修改并且能力元数据修改标记指示未经修改时,使转移的目标执行以下步骤中的一个:不修改能力元数据的本地副本;更新能力元数据的本地副本;或者在能力元数据的本地副本不同于所转移的能力元数据的情况下报告错误。
在一些实施例中提供了一种操作缓存存储装置的方法,所述方法包括以下步骤:在缓存存储装置中存储数据块;与每个数据块关联地存储标识每个所述数据块是指定能力还是数据值的能力元数据,其中,至少一种能力类型是有界指针;以及响应于对存储在缓存存储装置中的数据块的写入,与数据块关联地设置能力元数据修改标记,其中,能力元数据修改标记的值指示与数据块相关联的能力元数据自数据块被存储在缓存存储装置中以来是否已改变。
在一些实施例中提供了一种设备,所述设备包括:用于缓存数据块的装置;用于与每个数据块关联地存储标识每个所述数据块是指定能力还是数据值的能力元数据的装置,其中,至少一种能力类型是有界指针;以及用于响应于对数据块的写入而与存储在用于缓存数据块的装置中的数据块关联地设置能力元数据修改标记的装置,其中,能力元数据修改标记的值指示与数据块相关联的能力元数据自从数据块被存储在用于缓存数据块的装置中以来是否已改变。
现在将参考图描述一些特定实施例。
图1示意性地图示包括用于处理指令的处理流水线4的数据处理设备2的示例。在此示例中处理流水线4包括包含取出级6、解码级8、发布级10、执行级12和回写级14的许多流水线级,但是应领会的是,可以提供其他类型的级或级的组合。例如在一些实施例中能包括用于执行寄存器重命名的重命名级。要处理的指令从级到级移动,并且在一个指令在一个级处挂起的同时,另一指令可以在流水线4的不同级处挂起。
取出级6从第1级(L1)指令缓存20取出指令。取出级6通常可以从连续指令地址顺序地取出指令。然而,取出级还具有分支预测能力(未显式地图示)以预测分支指令的结果,并且取出级6在分支被预测采取的情况下可从(非顺序)分支目标地址取出指令,或者在分支被预测未采取的情况下从下一个顺序地址取出指令。所取出的指令被传递到解码级8,其对指令进行解码以生成解码指令。解码指令可以包括用于控制执行级12执行适当的处理操作的控制信息。对于从L1指令缓存20取出的一些更复杂的指令,解码级8可以将那些指令映射到多个解码指令,这可以被称为微操作(μops或uops)。因此,在从L1指令缓存器20取出的指令与如由流水线的后面级所看到的指令之间可以不存在一对一关系。通常,在本申请中对“指令”的引用应该被解释为包括微操作。
解码指令被传递到发布级10,其确定指令的执行所需的操作数是否可用并且发布指令以供在操作数可用时执行。一些实施例可以支持顺序处理,使得指令被以与从L1指令缓存20取出指令的程序顺序相对应的顺序发布以供执行。其他实施例可以支持乱序执行,使得可将指令以与程序顺序不同的顺序发布到执行级12。乱序处理可用于改进性能,因为虽然较早指令在等待操作数的同时停止了,但是可首先执行程序顺序中的其操作数可用的更迟指令。
发布级10将指令发布到执行级12,其中指令被执行以执行各种数据处理操作。例如执行级可以包括许多执行单元30、32、34,其包括用于对整数值执行算术或逻辑操作的算术/逻辑单元(ALU)30、用于对以浮点形式表示的值执行操作的浮点(FP)单元32以及用于执行用于将数据值从第1级(L1)数据缓存36加载到通用寄存器集40中的一个通用寄存器的加载操作或用于将数据值从通用寄存器集40中的一个通用寄存器存储到L1数据缓存36的存储操作的加载/存储单元34。应领会的是,这些只是能被提供的执行单元的类型的一些示例,并且还能提供许多其他种类。为了执行处理操作,执行级12可以从通用寄存器集40读取数据值。然后可以通过回写级14将所执行的指令的结果回写到通用寄存器集40。
L1指令缓存20和L1数据缓存36可以是包括多个层级的缓存的缓存层次的一部分。例如还可以提供第二级(L2)缓存44,并且可选地能提供缓存的另外的层级。在此示例中在L1指令缓存20与L1数据缓存36之间共享L2缓存44,但是其他示例可以具有单独的L2指令和数据缓存。当要取出的指令不在L1指令缓存20中时,那么可从L2缓存44取出指令,并且类似地,如果指令不在L2缓存44中则可从存储器50取出指令。类似地,响应于加载指令,如果数据不在L1数据缓存36中则可从L2缓存44中取出数据,并且可视需要而定从存储器50取出数据。任何已知方案可以被用于管理缓存层次。L1数据缓存36和L2缓存44也被示出为包括控制(CTRL)电路,在下面参考另外的图对其进行更详细的描述。
由流水线4使用来引用程序指令和数据值的地址可以是虚拟地址,但是至少存储器50以及可选地缓存层次的至少一些层级可以被以物理方式寻址。可以提供转换后备缓冲器(TLB)(未显式地图示)以用于将由流水线4使用的虚拟地址转换成用于访问缓存或存储器的物理地址。
如图1中所示,设备2可以具有有界指针寄存器60。虽然有界指针寄存器集在图1中被示出为与通用寄存器集40物理上分离,但是在一个实施例中,相同的物理存储装置可用于提供通用数据寄存器和有界指针寄存器两者。
每个有界指针寄存器60包括可以用于确定要访问的数据值的地址的指针值62以及在使用所对应的指针值62时指定地址的允许范围的范围信息64。有界指针寄存器60还可以包括限制信息66(在本文中也称为许可信息),其可以定义关于指针的使用的一个或多个限制/许可。例如限制信息66能用于限制可以使用指针值62的指令的类型,或可在其中使用指针的流水线4的模式。因此,可以考虑范围信息64和限制信息66来定义允许使用指针值62的能力。当试图在所定义的能力外使用指针值62时,可触发错误。范围信息64例如对于确保指针保持在某些已知界限内而不迷路到可能包含敏感或安全信息的存储器地址空间的其他区域来说可能是有用的。在相同的物理存储装置被用于通用数据寄存器和有界指针寄存器两者的实施例中,那么在一个实施例中可以例如将指针值62存储在与用于对应的通用寄存器相同的存储位置内。
图2示出允许范围用于保护免于对数据或指令的未经授权访问的指令的类型的示例。如图2的顶部中所示,特定有界指针寄存器PR1包括给定指针值62和范围信息64,所述范围信息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的某些软件或某些模式或异常状态。能使用用于设置或者修改范围信息64的任何已知技术。
除了可以在执行级12处在执行对指针进行引用的某些指令时使用的有界指针寄存器60之外,程序计数器能力(PCC)寄存器80还可以用于当正在从第一级指令缓存20取出指令时在取出级6处提供类似的功能性。特别地,可以将程序计数器指针存储在字段82中,其中PCC 80还提供与用有界指针寄存器60中的指针中的每一个提供的范围和限制信息类似的范围信息84和任何适当的限制信息86。
图3示意性地图示如何与单独的数据块关联地使用标记位来标识那些数据块是表示能力(即有界指针和关联的限制信息)还是表示正常数据。特别地,存储器地址空间110将存储一系列数据块115,其通常将具有指定的大小。纯粹为了图示起见,在此示例中假定了每个数据块包括128位。与每个数据块115关联地,提供了标记字段120,其在一个示例中是被称为标记位的单位字段,所述标记位被设置以标识所关联的数据块表示能力,而被清除以指示所关联的数据块表示正常数据,因此不能被视为能力。应领会的是,与置位或清除状态相关联的实际值可取决于特定实施例而变化,但是纯粹作为说明,在一个实施例中如果标签位具有1的值,则它指示所关联的数据块是能力,而如果它具有0的值则它指示所关联的数据块包含正常数据。
当能力被加载到有界指针寄存器60(在本文中也称为能力寄存器)中的一个(诸如图3中所示的能力寄存器100)中时,那么标签位随能力信息而移动。因此,当能力被加载到能力寄存器100中时,指针102、范围信息104和限制信息106(此后称为许可信息)将被加载到能力寄存器中。另外,与该能力寄存器关联地,或者作为该能力寄存器内的具体位字段,将设置标签位108以标识内容表示能力。类似地,当能力被存储回到存储器时,将与存储有能力的数据块关联地设置标记字段120中的相关标签位。通过这样的方法,可以区分能力和正常数据,因此确保不能将正常数据用作能力。
虽然在图3中已经参考了包含标签位的标签字段,但是在更一般的实施例中标签位是可以与每个能力相关联的能力元数据的示例。因此,如图4中所示,存储在系统的存储元件(无论那是能力寄存器100中的一个还是存储器地址空间110内的存储器位置)中的能力150可以具有与其相关联的能力元数据155。能力元数据将标识所关联的数据块150是实际上表示能力还是替代地应该被解释为通用数据,并且在一个实施例中信息将被编码为能力元数据155内的标记位。能力元数据可以在一个实施例中仅包括标签位,但是在替代实施例中可以视需要而定包括附加信息。例如,能进一步细分数据的类型,其中能力元数据例如通过特定特权级、细粒度许可(例如只读)等来指示所有权。
能力可采取各种形式,但是在图4中所示的实施例中能力是有界指针。如所示,有界指针由指针值160、范围信息165和许可属性170组成。范围信息和许可属性可以被统称为有界指针的属性。
图5A示出可以在一些实施例中存储的示例缓存行200。如图示缓存行200包括标签地址201、有效性位202、脏位203、能力标签脏位204、能力标签205和206以及数据值207和208。因为能力标签和数据值的标记指示存在为每个数据值提供的能力标签。相比之下注意,在此缓存行中提供了仅一个能力标签脏位204,其用于跟踪能力标签205或206中的任何一个是否在此缓存行的生存期期间被修改。图5B示出可以在一些实施例中存储的另一缓存行210,其与图5A中图示的缓存行类似。如图示缓存行210包括标签地址211、有效性位212、脏位213、两个能力标签脏位214和215、能力标签216和217以及数据值218和219。图5A和图5B中的示例缓存行之间的唯一差异是在图5B的示例中提供了两个能力标签脏位214和215,使得能力标签216和217中的每一个各有一个。
图5C示意性地图示在一个实施例中用于在发生对数据值的写入时更新与该数据值关联地存储的能力标签脏位的电路。该电路被配置为在使经受写入事务的数据值230及其关联的能力标签232作为所存储的数据值234和能力标签236被存储(例如在缓存行中)之前缓冲这些数据值230及其关联的能力标签232。该电路还包括比较逻辑238,所述比较逻辑238将作为写入事务的一部分提供的能力标签232和能力标签236(如先前存储的)视为其输入。当这些不同时,与所存储的数据值234关联地存储的能力标签脏位238被设置以指示能力标签已改变。注意的是,在这里还提出了更简单的变体(但是未显式地图示),其中每当对数据值234进行更新时(即使这实际上不会修改能力标签)能力标签脏位238就被置位,这具有不需要能力标签值的完全逐位比较的优点。然而考虑到预期能力标签值是相对小的,通过这样的配置所赢得的优点可以是相对有限的。
图6示意性地图示一个实施例中的数据处理系统250。该系统包括CPU 252、第1级数据缓存254(具有本地缓存控件256)、第2级(统一)缓存258(具有本地缓存控件260)、存储器控制器262、能力表缓存264和存储器266。这些组件被以本领域的普通技术人员将熟悉的缓存层次的形式布置,其中在更靠近CPU 252的较低缓存层级处提供较小的较快的缓存存储装置并且在更靠近存储器266的较高缓存层级处提供较慢的较大的缓存能力。如图6中所图示的,还可以在存储器控制器262与存储器266之间提供另一缓存层级268。参考下图更详细地讨论图6中所示的某些组件的特定配置。
图7A示出在一个实施例中采取来确定数据写入事务是否应该包括能力元数据的步骤的序列。例如,这些步骤可以由如图6中所图示的存储器控制器262执行。在步骤280处流程循环直到以缓存/存储器层次中的下一个层级作为目标的写入事务将被执行为止。当情况是这样的时流程进行到步骤282,其中确定了用于作为写入事务的主体的数据值的能力标签脏位(CTD)是否是0,即指示与作为写入事务的主体的一个或多个数据值相关联的能力标签位尚未经修改。如果情况不是这样的,即它们已被修改,则流程进行到步骤284并且写入事务继续包括能力标签位。换句话说,这些能力标签的本地保持的值也被写出到缓存/存储器层次中的下一个层级。应该注意的是,图7A中提及的写入事务实际上可以是读取-修改-写入事务,因此在步骤284处(并在下面在步骤288处类似地)继续进行写入事务应该还被理解为包括关于能力标签(或者不取决于控制流程)的初始读取事务。然而如果在步骤282处确定了能力标签脏位未置位(0),指示对能力标签位的修改尚未进行,则流程进行到步骤286。在步骤286处确定了能力标记是否指示数据(与能力相反)并且“主动能力标签(CT)设置”当前是否被启用。这是用于针对能力标签提供附加安全性水平的技术,其例如在多个代理写入到相同的存储器位置的上下文中可以是有用的。此“主动能力标签(CT)设置”可被一般地设置,或者例如可基于从其他核心接收到的写入活动信息(参见图6中的存储器控制器262的输入)来设置。当这两个条件都为真时,那么流程进行到步骤284并且写入事务继续包括能力标签。这假设即使能力标签似乎尚未改变,它们也被显式地重置以指示数据值(与能力相反)以提供对不应该被创建的能力的伪造(无论是无意的还是恶意的)的进一层保护。否则从步骤286起流程进行到步骤288,其中写入事务在没有能力标签位的情况下继续进行。换句话说仅经更新的值被写入到下一个存储器层级。
图7B提供可以用于实现此功能性的电路的一个示例,其中值290及其关联的能力标签292被临时地存储在缓冲器294和296中,并且缓冲器296具有从与值290关联地存储的能力标签脏位298中取得的附加使能(EN)输入。因此,这意味着使CTD位298置位意味着能力标签292将形成对下一个存储层级的访问的一部分。
图8示意性地图示能力标签缓存,诸如在一个实施例中在图6中作为项264示出的能力标签缓存。此能力标签缓存可以例如形成存储器控制器262的一部分或者可以被单独地提供。在使用中存储器控制器在处理要传递到缓存存储器层次中的下一个层级(其可能是到存储器266或者可能是到另一缓存层级268)的写入事务时参考此能力标签缓存。例如当存储器控制器262正在处理由已驱逐了脏缓存行的较低缓存层级(更靠近CPU 252)发起的回写事务时可发生这个。在存储器控制器将此事务传递到缓存存储器中的下一个层级的情况下,这可以是将脏数据从一个缓存层级回写到正在参与内含缓存布置的另一缓存层级。
在图8中标记为282的能力标签缓存将能力标签表信息存储在已从存储器(参见图6)的一部分中取回的许多缓存行中。能力标签表信息在缓存行中的存储基于作为写入事务的主体的值的对应标签地址。如果如此要求,则提供转换电路280以将标签地址转换成用于能力标签缓存的索引。通常根据常规的缓存操作过程来执行能力标签缓存的操作,其中缓存通常被完全占用并且当发生缓存未命中时,从存储器中取回所需的缓存行并且选择要替换的牺牲缓存行。
图8中所示的能力标签缓存282中的缓存行存储用于被图示在图的下部中的能力标签表信息的分层布置的能力标签表信息。结构(在此示例中具有8位)的最高层级表286的每个位表示下一个较低层级表中的任何位是否被置位。因此在所示的示例中,在表290的位未置位的情况下不设置表286的“摘要”位。相反地在表288的两个位置位的情况下设置表286中的“摘要”位。相同的原理适用于表288/290与它们在下一个较低层级处汇总的表(标记为292、294、296和298的那些表)之间的关系。
当考虑到在简单的存储器系统中存储器控制器可以将能力标签存储在物理存储器的与所关联的数据分离的区域中时,可领会到提供能力标签缓存282的益处。在这种情况下,如果不存在能力标签脏信息,则例如在从最后层级缓存到存储器的写入时,存储器控制器实际上将需要执行两个写入事务:对保持数据的存储器的第一次写入;以及在包含能力标签信息的存储器上进行的第二次读取-修改-写入。然而,在能力标签脏信息的可用性指示能力标签未改变的情况下,此附加读取-修改-写入操作将是不必要的。
在此上下文中,并且为了减轻能力标签存储器所需的额外查找的成本,可提供能力标签缓存(诸如图8中的282)以减少对存储器的这些附加访问中的一些。然而,如果这样的能力标签缓存将存在,但是在没有本文提出的能力标签脏信息的情况下,则存储器控制器将需要确保能力标签信息的适合行在标签缓存中以使得能实现对标签信息的快速读取或写入。如果行不存在则将需要从标签缓存中驱逐现有行,同时可能回写到存储器,然后加载包含标签位的行,并且很可能进一步加载表示更粗粒度的标签表信息的行,进而从标签缓存中驱逐并可能回写有用的信息。相应地,注意的是,在图8中图示“加载”和“驱逐”的箭头示出(借助于虚线箭头扩展)对于能力标签缓存的每个这样的更新,可以加载多于一个缓存行并且可以驱逐多于一个缓存行。相反地,在能力标签脏信息的可用性情况下,标签自从存储器读取以来尚未改变的指示然后将不需要对能力标签缓存内容进行改变。能力标签信息的存储的分层性质进一步可加速对此本地存储的能力标签信息的引用,因为例如在层次的最高层级286处未置位(“0”)的一个位可指示存储器的整个部分仅包含数据值而没有努力。
图9示出在一个实施例中当像本文所提出的那样管理缓存中的能力标签脏位时采取的步骤的序列。流程被图示为开始于步骤300,其中假定了值已被存储在缓存的缓存行中,同时与该值一起原子地存储能力标签信息。流程然后进行到步骤302,其中确定了对此缓存行的写入是否将被付诸行动。当情况不是这样的时流程进行到步骤308,其中确定了对此缓存行的驱逐是否将被付诸行动并且在这种情况下,此缓存行的(当前)生存期结束,流程在步骤310处结束。然而,当在步骤302处确定了对此缓存行的写入将被付诸行动时,那么在步骤304处确定了用于作为写入的主体的值的能力标签是否已被修改。例如可在能力标签的当前存储的值与正在随作为写入的主体的值而提供的能力标签的值之间进行逐位比较。如果发现能力标签已被修改则流程进行到步骤306,其中对应的能力标签脏位被置位,指示此修改。路径在下一个步骤308处收敛,在308处(如上所述)确定了对此缓存行的驱逐是否将被付诸行动,并且在这种情况下此缓存行的(当前)生存期结束,流程在步骤310处结束。否则此缓存行保持在缓存中并且流程返回到步骤302。
图10示出在一个实施例中当像本文所提出的那样访问能力标签缓存时采取的步骤的序列。例如这些可以是由诸如262这样的存储器控制器在访问诸如264这样的能力标签缓存时执行的步骤(参见图6)。流程可被认为开始于320,其中过程等待直到接收到存储器访问为止。例如这可以是以存储器266作为目标的写入事务(在图6的示例中)。当接收到要付诸行动的存储器访问时流程进行到步骤322,其中确定了对应的能力标签脏(CTD)位是否是可用的。如果是则下一个步骤是324,其中检验了CTD位是否被置位。如果不是,指示能力标签尚未被修改,则流程进行到步骤334,其中对能力标签访问的完成进行信号告知,并且可省略存储器访问的能力标签部分。然而如果CTD位被置位,或者对应的CTD信息不可用,则流程进行到步骤326,其中存储器控制器访问能力标签表缓存,基于存储器访问的标签地址信息执行查找。如果在步骤328处在能力标签表缓存中未找到对应的能力标签信息(即存在“未命中”),则流程经由步骤330继续进行以进行一个或多个能力标签表行的驱逐并且用从存储器中取回的一个或多个能力标签表行的新分配进行替换。此后(或者直接地从“命中”起)在步骤328处,在步骤332处访问所需的能力标签表行,并且最后在步骤334处对能力标签访问的完成进行信号告知。在步骤334之后流程返回到步骤320。
图11、图12和图13图示在一些实施例中针对当数据取决于系统是否还被布置为转移能力元数据修改标记(能力标签脏(CTD)位)和/或数据修改标记(数据脏位)而被转移到缓存存储装置中或者从缓存存储装置转移出的情形在系统上强加的一些规则。换句话说,可以被与数据块关联地存储在缓存中的能力标签脏位和/或数据脏位在数据块被转移(无论是进入还是离开缓存)时可以不随数据块而移动。这些规则根据能力标签脏位和/或数据脏位被假定为是什么来对转移的目标应用某些约束。
从图11中的步骤400开始(在数据进入或者离开缓存存储装置的转移时),如果(步骤402)能力标签脏位的值指示与数据块相关联的能力标签已改变,则(步骤404)必须将数据视为经修改的。在到步骤406时,如果数据脏位也未被转移,并且如果转移是转移到较低缓存层级(朝向CPU)(步骤408),则(步骤410)必须将数据和能力标签脏位视为干净的。否则(步骤412),必须将数据和能力标签脏位视为脏的。
当能力标签脏位也被转移时(步骤414),则可像提供的那样使用数据脏位和能力标签脏位(步骤416)。如果它们未被转移(进行到步骤418)并且能力标签脏位也未被传送,则必须根据数据脏状态推断出能力标签脏状态。因此如果能力标签位未被转移(步骤418,通向步骤420),则:如果(步骤420)数据和能力标签是否都被标记为不脏的,则能力标签被视为未置位(即指示数据);如果(步骤424—图12)数据和能力标签都被标记为脏的,则(步骤426)能力标签被视为未置位(即指示数据);以及(步骤428)数据是否被标记为脏的并且能力标签是否被标记为不脏的。
从步骤418起,如果能力标签位被转移(仅仅为了容易阅读在步骤434处被重申),则流程通向步骤436。从这里,如果(步骤436)数据和能力标签都被标记为不干净的,或者如果(步骤438)数据和能力标签都被标记为脏的,则(步骤440)所转移的能力标签必须被目标使用。否则,如果(步骤442—图13)数据被标记为脏的并且能力标签被标记为不脏的,则目标必须(步骤446)选取以下各项中的一个:不改变其能力标签的副本;更新其能力标签的副本;以及如果其能力标签的副本与所提供的能力标签不同则报告错误。否则,所转移的数据和所转移的能力标签都被清除(步骤444)。
图14陈述除转移的数据之外可以存在于事务中的信息的可能的16种组合的含义。本技术的不同的实施例可选择事务如何表示那些组合,即能力标签和/或标签脏状态是否存在于事务中被留给实施方案。注意的是,可出于确定事务意指什么的目的在大多数情况下忽视TDP,因为TDP=0仅仅暗示TD=DD。DD主要告诉你事务是读取还是写入,但是还设想了缓存行可能因脏数据而向内迁移并且然后TD/TP指示应该如何处理这种(稍微不寻常的)情形的实施例。
图15图示可以被使用的虚拟机实现。虽然较早描述的实施例在用于操作支持所涉及技术的具体处理硬件的装置和方法方面实现本发明,但是还可以提供硬件器件的所谓的虚拟机实现。这些虚拟机实现在运行支持虚拟机(VM)510的主机操作系统(OS)520的主机处理器(硬件)530上运行。通常,需要大型强大的处理器来提供以合理速度执行的虚拟机实现,但是这样的方法在某些情况下(诸如当由于兼容性或重用原因期望运行另一处理器本机的代码时)可能是合理的。虚拟机510可以被存储在计算机可读存储介质(其可以是非暂态介质)上,并且向应用500提供与将由作为通过虚拟机510建模的器件的真实硬件提供的应用程序接口相同的应用程序接口(指令执行环境)。因此,可以在虚拟机510中提供缓存存储装置的模型以及针对上述的操作缓存存储装置的方法的支持以给应用500提供以与具有这样的物理缓存存储装置的硬件器件相同的方式表现的环境。
在简要总体概要中提供了包括缓存存储装置的设备以及一种操作这样的缓存存储装置的方法。所述缓存存储装置中的数据块具有与其关联地存储的能力元数据,该能力元数据标识所述数据块是指定能力还是数据值。至少一种能力类型是有界指针。响应于对所述缓存存储装置中的数据块的写入,与所述数据块关联地设置能力元数据修改标记,指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。这支持系统的安全性,使得除非有意否则所述数据块的用途从数据值到能力的修改无法进行。当能力元数据被与其他数据分别地存储在存储器中时还可以产生效率,因为可对存储器做出较少的访问。
在本申请中,单词“被配置为…”或“被布置为”用于意味着设备的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,设备可以具有提供所定义的操作的专用硬件,或者处理器或其他处理器件可以被编程来执行功能,“被配置为”或“被布置为”不暗示需要以任何方式改变设备元件以提供所定义的操作。
尽管已在本文中参考附图详细地描述了说明性实施例,然而应当理解的是,本发明不限于那些精确的实施例,并且在不脱离如由所附权利要求所限定的本发明的范围的情况下,本领域的技术人员可在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,能利用从属权利要求的特征做出独立权利要求的特征的各种组合。

Claims (23)

1.一种用于操作缓存存储装置的设备,包括:
缓存存储装置,所述缓存存储装置用于存储数据块,每个数据块具有与其关联地存储的能力元数据,所述能力元数据标识每个所述数据块是指定能力还是数据值,其中,至少一种能力类型是有界指针;以及
缓存控制电路,所述缓存控制电路响应于对存储在所述缓存存储装置中的数据块的写入而与所述数据块关联地设置能力元数据修改标记,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。
2.如权利要求1所述的设备,其中,与所述数据块关联地设置的所述能力元数据修改标记与包括所述数据块在内的多个数据块对应。
3.如权利要求2所述的设备,其中,对于所述缓存存储装置中的每个缓存行而言,与所述数据块关联地设置的所述能力元数据修改标记是单个位。
4.如权利要求1所述的设备,其中,与所述数据块关联地设置的所述能力元数据修改标记与所述数据块具有一对一对应关系。
5.如权利要求1所述的设备,还包括:
存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的从所述缓存存储装置到另一存储层级的写入事务,当所述能力元数据修改标记的值指示所述能力元数据自所述指定的数据块被存储在所述缓存存储装置中以来尚未改变时,抑制针对所述关联的能力元数据和所述另一存储层级的写入事务。
6.如权利要求5所述的设备,其中,所述另一存储层级是存储器存储装置。
7.如权利要求5所述的设备,其中,所述另一存储层级是另一缓存存储层级。
8.如权利要求6所述的设备,其中,所述写入事务是针对所述存储器存储装置中的所述关联的能力元数据的读取-修改-写入事务。
9.如权利要求5至8中的任一项所述的设备,还包括:能力元数据缓存存储装置,所述能力元数据缓存存储装置用于在比所述缓存存储装置更高的存储器层次层级处存储能力元数据,并且其中,所述存储器控制器响应于针对至少一个数据块的存储器访问事务而返回所需的与所述至少一个数据块相关联的能力元数据,
并且其中,所述存储器控制器响应于针对所述至少一个数据块的所述存储器访问事务,当所需的能力元数据未被存储在所述能力元数据缓存存储装置中时,发起从所述能力元数据缓存存储装置中驱逐当前存储的能力元数据并且将所需的能力元数据取回到所述能力元数据缓存存储装置中,除非与所述至少一个数据块相关联的所述能力元数据修改标记的值指示所需的能力元数据自所述至少一个数据块被存储在所述缓存存储装置中以来尚未改变。
10.如权利要求9所述的设备,其中,存储在所述能力元数据缓存存储装置中的每个位指示能力元数据的多个位中的任一位是否被置位。
11.如权利要求10所述的设备,其中,所述能力元数据缓存存储装置包括至少两个分层层级的存储装置,并且存储在较高分层层级中的每个位指示下一个较低分层层级中的多个位中的任一位是否被置位。
12.如权利要求1至8中的任一项所述的设备,其中,所述缓存存储装置能够将所述数据块存储在缓存行中,并且由所述缓存控制电路与所述数据块关联地设置的所述能力元数据修改标记是所述缓存存储装置中的每个缓存行的多个位中的一位,并且其中,每个缓存行的所述多个位中的每个位均指示所述缓存行的相应部分的所述能力元数据自所述缓存行的相应部分被存储在所述缓存存储装置中以来是否已改变。
13.如权利要求12所述的设备,其中,所述缓存控制电路响应于对存储在所述缓存存储装置中的所述数据块的所述写入而与数据块部分关联地存储数据修改标记,其中,所述数据修改标记的值指示所述数据块部分自所述数据块被存储在所述缓存存储装置中以来是否已被写入,并且
其中,所述缓存行的与所述能力元数据修改标记相对应的相应部分至少和所述数据块部分一样大。
14.如权利要求1至4中的任一项所述的设备,还包括:
存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的、从所述缓存存储装置到另一存储层级的写入事务,当与所述指定的数据块关联地存储的所述能力元数据指示它是数据值并且所述能力元数据修改标记的值指示与所述指定的数据块关联地存储的所述能力元数据自所述指定的数据块被存储在所述缓存存储装置中以来尚未改变时,发布存储器写入事务以主动地使得存储在存储器中的所述能力元数据被设置以指示所述指定的数据块是数据值。
15.如权利要求1至4中的任一项所述的设备,还包括:
存储器控制器,所述存储器控制器响应于接收到的针对指定的数据块和关联的能力元数据的、从所述缓存存储装置到另一存储层级的写入事务,当与所述指定的数据块关联地存储的所述能力元数据指示它是数据值时,并且当所述存储器控制器已接收到指示另一代理自所述指定的数据块被存储在所述缓存存储装置中以来已在存储器中对所述指定的数据块和所述关联的能力元数据中的至少一者执行了写入动作的信号时,发布存储写入事务以主动地使得存储在存储器中的所述能力元数据被设置以指示所述指定的数据块是数据值。
16.如权利要求1至8中的任一项所述的设备,其中,所述设备响应于所述数据块进入或者离开所述缓存存储装置的转移,并且当所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据已改变时,使得所述数据块被视为经修改的。
17.如权利要求1至8中的任一项所述的设备,其中,所述设备响应于所述数据块进入或者离开所述缓存存储装置的转移,并且当数据修改标记未被转移时,
在所述转移是转移到较低缓存层级时,使得所述数据块和能力元数据修改标记被视为干净的,
在所述转移不是转移到较低缓存层级时,使得所述数据块和能力元数据修改标记被视为经修改的。
18.如权利要求1至8中的任一项所述的设备,其中,所述设备响应于所述数据块进入或者离开所述缓存存储装置的转移,并且当所述能力元数据修改标记未被转移时,
使得所述能力元数据修改标记的值根据数据修改标记被推断出。
19.如权利要求1至8中的任一项所述的设备,其中,所述设备响应于所述数据块进入或者离开所述缓存存储装置的转移,并且当所述能力元数据未被转移时:
在数据修改标记和所述能力元数据修改标记都指示未经修改时,使得所述转移的目标将所述能力元数据视为将所述数据块标识为指定数据值;
在所述数据修改标记和所述能力元数据修改标记都指示经修改时,使得所述转移的目标将所述能力元数据视为将所述数据块标识为指定数据值;并且
在所述数据修改标记指示经修改并且所述能力元数据修改标记指示未经修改时,使得所述转移的目标将所述能力元数据修改标记的本地副本视为有效的。
20.如权利要求1至8中的任一项所述的设备,其中,所述设备响应于所述数据块进入或者离开所述缓存存储装置的转移,并且当所述能力元数据被转移时:
在数据修改标记和所述能力元数据修改标记都指示未经修改时或者在所述数据修改标记和所述能力元数据修改标记都指示经修改时,使得所述转移的目标将所述能力元数据视为有效的;并且
在所述数据修改标记指示经修改并且所述能力元数据修改标记指示未经修改时,使得所述转移的目标执行以下步骤中的一个:
不修改所述能力元数据的本地副本;
更新所述能力元数据的本地副本;或者
如果所述能力元数据的本地副本不同于所转移的能力元数据,则报告错误。
21.一种计算机可读存储介质,其存储虚拟机计算机程序,所述虚拟机计算机程序包括用于控制主机数据处理设备以提供与根据权利要求1至20中的任一项所述的设备相对应的指令执行环境的程序指令。
22.一种操作缓存存储装置的方法,所述方法包括以下步骤:
在所述缓存存储装置中存储数据块;
与每个数据块关联地存储能力元数据,所述能力元数据标识每个所述数据块是指定能力还是数据值,其中,至少一种能力类型是有界指针;以及
响应于对存储在所述缓存存储装置中的数据块的写入,与所述数据块关联地设置能力元数据修改标记,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述缓存存储装置中以来是否已改变。
23.一种用于操作缓存存储装置的设备,包括:
用于缓存数据块的装置;
用于与每个数据块关联地存储标识每个所述数据块是指定能力还是数据值的能力元数据的装置,其中,至少一种能力类型是有界指针;以及
用于响应于对所述数据块的写入而与存储在所述用于缓存数据块的装置中的数据块关联地设置能力元数据修改标记的装置,其中,所述能力元数据修改标记的值指示与所述数据块相关联的所述能力元数据自所述数据块被存储在所述用于缓存数据块的装置中以来是否已改变。
CN201880027855.XA 2017-05-02 2018-04-19 用于管理能力元数据的设备和方法 Active CN111201518B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1706971.7A GB2562062B (en) 2017-05-02 2017-05-02 An apparatus and method for managing capability metadata
GB1706971.7 2017-05-02
PCT/GB2018/051034 WO2018203032A1 (en) 2017-05-02 2018-04-19 An apparatus and method for managing capability metadata

Publications (2)

Publication Number Publication Date
CN111201518A CN111201518A (zh) 2020-05-26
CN111201518B true CN111201518B (zh) 2023-10-20

Family

ID=59010913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880027855.XA Active CN111201518B (zh) 2017-05-02 2018-04-19 用于管理能力元数据的设备和方法

Country Status (8)

Country Link
US (1) US11119925B2 (zh)
EP (1) EP3619615B1 (zh)
JP (1) JP7096840B2 (zh)
KR (1) KR102590180B1 (zh)
CN (1) CN111201518B (zh)
GB (1) GB2562062B (zh)
IL (1) IL270241B (zh)
WO (1) WO2018203032A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2586276B (en) * 2019-08-16 2022-03-30 Advanced Risc Mach Ltd Capability write address tracking
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
US11200175B2 (en) * 2020-03-20 2021-12-14 Arm Limited Memory accessor invailidation
CN112379929B (zh) * 2020-11-13 2023-09-08 海光信息技术股份有限公司 一种指令替换方法、装置、处理器、电子设备及存储介质
JP2022144469A (ja) 2021-03-19 2022-10-03 キオクシア株式会社 メモリシステム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450563A (en) * 1992-10-30 1995-09-12 International Business Machines Corporation Storage protection keys in two level cache system
CN101308462A (zh) * 2007-05-14 2008-11-19 国际商业机器公司 管理对共享存储器单元的存储器访问的方法和计算系统
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
CN105159844A (zh) * 2014-06-05 2015-12-16 Arm有限公司 数据处理装置中的动态缓存分配策略调适
GB2540206A (en) * 2015-07-10 2017-01-11 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
GB2541714A (en) * 2015-08-27 2017-03-01 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826672B1 (en) * 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9274956B1 (en) * 2012-10-31 2016-03-01 Amazon Technologies, Inc. Intelligent cache eviction at storage gateways
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US9336047B2 (en) * 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9514054B2 (en) * 2014-07-08 2016-12-06 Netapp, Inc. Method to persistent invalidation to ensure cache durability
US9916191B1 (en) * 2014-12-19 2018-03-13 EMC IP Holding Company LLC Techniques for efficiently performing a filesystem consistency check
US9804891B1 (en) * 2015-03-20 2017-10-31 Antara Teknik LLC Parallelizing multiple signing and verifying operations within a secure routing context
US20180089088A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450563A (en) * 1992-10-30 1995-09-12 International Business Machines Corporation Storage protection keys in two level cache system
CN101308462A (zh) * 2007-05-14 2008-11-19 国际商业机器公司 管理对共享存储器单元的存储器访问的方法和计算系统
CN102460376A (zh) * 2009-06-26 2012-05-16 英特尔公司 无约束事务存储器(utm)系统的优化
CN105159844A (zh) * 2014-06-05 2015-12-16 Arm有限公司 数据处理装置中的动态缓存分配策略调适
GB2540206A (en) * 2015-07-10 2017-01-11 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
GB2541714A (en) * 2015-08-27 2017-03-01 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
KR20200002932A (ko) 2020-01-08
GB2562062B (en) 2019-08-14
US20200192800A1 (en) 2020-06-18
GB2562062A (en) 2018-11-07
IL270241B (en) 2022-04-01
GB201706971D0 (en) 2017-06-14
WO2018203032A1 (en) 2018-11-08
EP3619615B1 (en) 2021-12-01
KR102590180B1 (ko) 2023-10-17
US11119925B2 (en) 2021-09-14
CN111201518A (zh) 2020-05-26
JP7096840B2 (ja) 2022-07-06
EP3619615A1 (en) 2020-03-11
JP2020519991A (ja) 2020-07-02

Similar Documents

Publication Publication Date Title
CN111201518B (zh) 用于管理能力元数据的设备和方法
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
TWI752951B (zh) 用於對能力元資料執行操作的設備及方法
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US7461209B2 (en) Transient cache storage with discard function for disposable data
CN108351935B (zh) 用于控制有界指针的使用的设备及方法
TW201502781A (zh) 解決記憶體存取錯誤時重播記憶體交易
CN110574009B (zh) 用于管理对能力的使用的设备和方法
CN109952567B (zh) 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
CN110622133B (zh) 用于管理能力域的设备及方法
EP3631621B1 (en) An apparatus and method for interpreting permissions associated with a capability
EP3850480B1 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
US11221951B1 (en) Skipping tag check for tag-checked load operation
CN112639750A (zh) 用于控制存储器存取的装置及方法
JP2001142780A (ja) 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
JPH0342744A (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