CN110471617A - 用于在采用事务存储器的系统中管理缓存结构的技术 - Google Patents
用于在采用事务存储器的系统中管理缓存结构的技术 Download PDFInfo
- Publication number
- CN110471617A CN110471617A CN201910383150.8A CN201910383150A CN110471617A CN 110471617 A CN110471617 A CN 110471617A CN 201910383150 A CN201910383150 A CN 201910383150A CN 110471617 A CN110471617 A CN 110471617A
- Authority
- CN
- China
- Prior art keywords
- state
- label
- affairs
- cache entries
- distribution
- 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
Links
- 238000005516 engineering process Methods 0.000 title abstract description 10
- 238000009826 distribution Methods 0.000 claims abstract description 295
- 238000012545 processing Methods 0.000 claims abstract description 96
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000004321 preservation Methods 0.000 claims description 29
- 238000011084 recovery Methods 0.000 claims description 22
- 230000008859 change Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 14
- 238000004064 recycling Methods 0.000 claims description 9
- 230000006399 behavior Effects 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 5
- 230000005611 electricity Effects 0.000 claims description 4
- 239000004744 fabric Substances 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 18
- 238000003860 storage Methods 0.000 description 11
- 238000004140 cleaning Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 239000000725 suspension Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009329 sexual behaviour Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开描述了用于在采用事务存储器的系统中管理缓存结构的技术。装置包括处理电路和缓存结构,该处理电路用于响应于指令而执行数据处理操作,该处理电路包括事务存储器支持电路,用于支持事务执行,并且该缓存结构包括用于存储供处理电路访问的数据的多个缓存条目。每个缓存条目具有与其相关联的分配标签,并且分配标签控制电路被提供以控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示。事务存储器支持电路被布置为当在事务期间要写入选择的缓存条目中的初始数据时,使初始数据的备份副本存储在进一步的缓存条目中,并且使分配标签控制电路将该进一步的缓存条目与针对事务所选的选择的分配标签相关联。
Description
技术领域
本公开涉及用于在采用事务存储器的系统中管理缓存结构的技术。
背景技术
数据处理系统可以执行多个数据处理线程。线程可以在相同的处理单元上执行,或在数据处理系统内的单独的处理单元上执行。有时,线程可能需要访问共享资源,并且数据处理操作的性质可能使得一旦线程开始与共享资源交互,则可能需要使用该资源以原子方式完成一组操作,而没有另一线程同时访问资源。
在这种情况下,不是采用基于锁的机制来控制对至少一个目标资源的排他性访问,为了处理访问共享资源的线程之间的冲突而开发的技术涉及使用事务存储器支持。具体地,数据处理系统可以设置有事务存储器支持电路,用于支持事务的执行,该事务包括推测地执行的指令序列,并且处理电路被配置为防止提交推测地执行的指令的结果,直到事务已经到达事务结束点。如果有必要在到达事务结束点之前中止事务,例如因为另一线程正在执行冲突访问,则必须能够将处理器的状态恢复到事务开始之前存在的状态。
这可能产生关于缓存结构内的数据值的缓存的一些问题。具体地,在已知系统中,必须首先将在事务期间要写入的任何缓存行的内容复制到存储器中(主存储器或较低级别存储器层级(例如在缓存结构和主存储器之间的中间级缓存)),因此,如果事务中止,则可以使受影响的缓存行无效,而不会丢失在执行事务之前存在的原始数据。然而,当尝试重试事务时,这会对性能产生重大影响,因为此时需要将数据从存储器重新获取到缓存中。此外,在事务期间在执行与相关数据有关的写入之前确保该相关数据被复制在存储器中的要求也具有性能影响,由于在事务期间在写入相关缓存行之前,可能需要对当前缓存内容之前执行清理操作。
因此,期望提供一种用于在采用事务存储器的系统中管理缓存结构的更有效的技术。
发明内容
在一个示例配置中,提供了一种装置,包括:处理电路,用于响应于指令而执行数据处理操作,处理电路包括事务存储器支持电路,用于支持事务的执行,事务包括推测地执行的指令序列,并且处理电路被配置为防止提交推测地执行的指令的结果,直到事务已经到达事务结束点;缓存结构,包括多个缓存条目,用于存储供处理电路访问的数据,每个缓存条目具有与其相关联的分配标签;分配标签控制电路,用于控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;事务存储器支持电路被布置为:当在事务期间要写入选择的缓存条目中的初始数据时,使初始数据的备份副本存储在进一步的缓存条目中,并且使分配标签控制电路将该进一步的缓存条目与针对事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止处理电路访问该进一步的缓存条目的第一状态;以及如果事务在到达事务结束点之前中止,则事务存储器支持电路被布置为使选择的缓存条目无效,并且分配标签控制电路被布置为将选择的分配标签的状态改变为允许处理电路访问进一步的缓存条目的第二状态,从而使得随后能够在缓存结构内检测到针对初始数据的命中,而无需将初始数据重新获取到缓存结构中。
在另一示例配置中,提供了一种在具有处理电路的装置中管理缓存结构的方法,处理电路用于响应于指令而执行数据处理操作,处理电路具有事务存储器支持电路,用于支持事务的执行,事务包括推测地执行的指令序列,并且处理电路被配置为防止提交推测地执行的指令的结果,直到事务已经到达事务结束点,方法包括:为缓存结构提供多个缓存条目,用于存储供处理电路访问的数据,其中,每个缓存条目具有与其相关联的分配标签;利用分配标签控制电路来控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;当在事务期间要写入选择的缓存条目中的初始数据时,将初始数据的备份副本存储在进一步的缓存条目中,并且使分配标签控制电路该将进一步的缓存条目与针对事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止处理电路访问该进一步的缓存条目的第一状态;以及如果事务在到达事务结束点之前中止,则使选择的缓存条目无效,并且使分配标签控制电路将选择的分配标签的状态改变为允许处理电路访问进一步的缓存条目的第二状态,从而使得随后能够在缓存结构内检测到针对初始数据的命中,而无需将初始数据重新获取到缓存结构中。
在又一示例配置中,提供了一种装置,包括:处理装置,用于响应于指令而执行数据处理操作,处理装置包括事务存储器支持装置,用于支持事务执行,事务包括推测地执行的指令序列,并且处理装置被配置为防止提交预测地执行的指令的结果,直到事务到达事务结束点;缓存结构装置,包括多个缓存条目,用于存储供处理装置访问的数据,每个缓存条目具有与其相关联的分配标签;分配标签控制装置,用于控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;事务存储器支持装置,当在事务期间要写入选择的缓存条目中的初始数据时,用于使初始数据的备份副本存储在进一步的缓存条目中,并且使分配标签控制装置将该进一步的缓存条目与针对事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止处理装置访问该进一步的缓存条目的第一状态;以及如果事务在到达事务结束点之前中止,则事务存储器支持装置用于使选择的缓存条目无效,并且分配标签控制装置用于将选择的分配标签的状态改变为允许处理装置访问进一步的缓存条目的第二状态,从而使得随后能够在缓存结构装置内检测到针对初始数据的命中,而无需将初始数据重新获取到缓存结构装置中。
附图说明
仅通过说明的方式,参考附图中所示的本技术的示例,将进一步描述本技术,其中:
图1是根据一个示例的数据处理系统的框图;
图2示出了在单个处理器内执行多个线程的配置;
图3示出了在多个处理器上执行多个线程的布置;
图4是示意性地示出根据一个示例布置的分配标签机制的使用的图示;
图5是更详细地示出根据特定示例的图4的一种分配标签状态跟踪记录的布置的图示;
图6是示出根据一个示例的在数据初始分配到缓存中所采用的处理的流程图;
图7是示出根据一个示例的在将缓存行添加到事务的写入集合时所采取的步骤的流程图;
图8是示出根据一个示例的缓存查找操作的流程图;
图9是示出根据一个示例的在事务中止或事务提交时采取的步骤的流程图;
图10A和图10B是示出根据一个示例的可以使用的分配标签回收机制的流程图;以及
图11是示出所描述的示例的将有效缓存行驱逐到不支持分配标签机制的缓存级所采取的步骤的流程图。
具体实施方式
如上所述,采用事务存储器架构的数据处理系统允许形成事务的指令块的原子和强隔离执行。原子性确保其他线程(也可称为代理)将事务视为一个操作,并且隔离确保事务和非事务代码之间的严格分离。因此,采用事务存储器体系结构的系统可以允许以使如下方式访问其组成本质上是动态的数据结构,使得一组操作能够使用数据结构原子地完成而无需使用锁定机制等。
为了能够在执行事务期间保证对数据结构的访问的原子性和隔离,有必要跟踪由事务读取和写入的缓存行。特别是,在事务结束之前,由一个线程执行的事务所读取的缓存行不应由另一线程写入。由事务读取的那些缓存行可以说是事务的读取集合的一部分。类似地,在事务结束之前,由一个线程执行的事务写入的缓存行不应该被另一线程读取或写入。那些缓存行可以说是在事务的写入集合中。
事务可以通过两种方式完成。首先,事务可以到达定义的事务结束点,意味着事务可以被提交,因为它的执行是以原子方式并以强烈隔离的方式执行的。然而,可选地,在硬件不能确保事务代码的原子性或强隔离的情况下,例如由于另一个线程对共享资源之一的冲突访问,可以中止事务。因此,在事务中止的情况下,必须恢复执行事务代码之前的先前状态,这包括处理器的寄存器和由事务修改的存储器位置处的数据(即,事务的写入集合中的那些)。
作为结果,当在事务的写入集合中包括缓存行时,通常必须首先确保缓存行是干净的,即其当前内容已被写入存储器系统。在一致性缓存系统中,通常还必须确保缓存行由所讨论的缓存唯一地保持,因此缓存行处于唯一干净状态。如果否,则必须执行所需的清理(以及可能的缓存一致性)操作,以确保在将缓存行添加到写入集合之前将缓存行置于所需状态。这可能会对性能产生重大影响。此外,当事务中止时,事务的写入集合中的任何缓存行都必须无效。在一致性缓存系统中,这可以涉及与缓存一致性电路的进一步通信,该缓存一致性电路维持系统内各种缓存的一致性。例如,在一致性系统维护精确目录的情况下,可以认为适当地单独指示无效的缓存行以防止丢弃目录。实际上,否则由于在目录中分配新行期间的冲突,这可能导致潜在有用行(事务的一部分)的无效。此外,如果重试事务,则通常需要从存储器重新获取各种缓存行,这进一步对性能产生影响。因此,在事务中止发生后,恢复时间可能会产生重大影响。
这里描述的技术旨在减轻上述性能问题,提供用于在利用事务存储器的系统中管理缓存结构的更有效的机制。
在一个示例布置中,提供了一种装置,包括响应于指令而执行数据处理操作的处理电路,其中处理电路包括事务存储器支持电路以支持事务的执行。如前所述,形成事务的指令是推测地执行的,因为在事务到达事务结束点之前不会提交由执行这些指令产生的结果。该装置还包括缓存结构,该缓存结构包括多个缓存条目,用于存储供处理电路访问的数据,每个缓存条目具有与其相关联的分配标签。此外,提供分配标签控制电路以控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示。
事务存储器支持电路被布置为当在事务期间要写入选择的缓存行中的初始数据时,使初始数据的备份存储在进一步的缓存条目中,并使分配标签控制电路将该进一步的缓存条目与针对该事务所选的选择的分配标签相关联。此外,选择的分配标签的当前状态被更新为第一状态,该第一状态防止处理电路访问该进一步的缓存条目。因此,此时,初始数据的备份已经存储在缓存中,但是与该备份相关联的分配标签,特别是该分配标签的状态,使得备份副本对于处理电路基本上是不可见的。相反,当执行事务时,特别是在写入数据以更新初始数据时,更新的数据被写入原始缓存条目。
如果事务在到达事务结束点之前中止,则事务存储器支持电路被布置成使选择的缓存行无效,如前面提到的要求状态恢复到在事务开始之前存在的状态的要求。然而,另外,分配标签控制电路被布置为将选择的分配标签的状态改变为允许处理电路访问的高进一步的缓存条目的第二状态。因此,此时进一步缓存条目的内容对于处理电路变得可见,并且从前面的讨论中可以明显看出,这些内容表示在事务开始之前在缓存中的初始数据。作为将所选择的分配标签的状态改变为第二状态的结果,这使得随后能够在缓存结构内检测到针对初始数据的命中,而无需将初始数据重新获取到缓存结构中。
因此,这可以显著提高性能。例如,如果重试事务,则初始数据仍将在缓存中,因此避免了必须重新获取该数据的性能影响。此外,因为初始数据保留在缓存中,所以在初始数据是脏的情况下(比存储器中的副本更新),在事务期间写入该缓存行之前可能不需要将缓存行清理到存储器,并且替代地初始数据的脏版本仅被保留在缓存中在进一步的缓存条目中。因此,当将缓存行添加到事务的写入集合中时,这还可以避免某些性能影响。此外,在采用缓存一致性协议的系统中,在原始缓存行在事务中止时无效的点处,不需要与缓存一致性电路通信,因为通过将所选择的分配标签改变为第二状态来使保持在进一步的缓存条目中的初始数据可见,使得数据实际上仍然在缓存中,因此由缓存一致性电路维持的一致性状态信息不受影响。
可以对事务的写入集合中的任何缓存行执行上述步骤。因此,事务存储器支持电路可以被布置为识别标识在事务期间写入的每个缓存条目的缓存条目的写入集合,并且对于写入集合中的每个标识的缓存条目,事务存储器支持电路可以被布置为使存储在所识别的缓存条目中的初始数据的备份副本将存储在所选择的进一步的缓存条目中,每个进一步的缓存条目具有与其相关联的与针对该事务选择的相同的选择的分配标签。然后,在事务被中止的情况下,事务存储器支持电路可以被布置成使写入集合中标识的每个缓存条目无效,而所选择的分配标签到第二状态的状态改变允许处理电路访问每个进一步的缓存存条目。应当理解,这可以产生显著的性能益处。特别是,如果在处理中止后不久重试事务(在许多实施方式中,这很可能是因为事务可能被布置重试几次。在恢复到后备代码之前,然后可以使用锁或其他机制来为了获得对所需资源的排他访问权限,写入集合的所有条目的数据可能仍然存在于缓存中而无需重新获取任何该数据。在那种情况下,存储初始数据的每个缓存条目本身将成为选择的缓存条目,然后在进一步的缓存条目中对其进行备份。当重试事务时,将为该事务选择另一个分配标签,并且备份副本将存储在具有与之关联的所选择的分配标签的进一步的缓存条目中,选择的分配标签被置于第一状态。因此,上次处理仅在下次重试事务时被复制。
如果事务不是被中止,则事务到达事务结束点,因此指示事务已按计划完成,然后事务存储器支持电路可以被布置成在事务结束后将选择的缓存条目保持为有效,并且分配标签控制电路可以被布置成将选择的分配标签的状态改变为第三状态,以便使进一步的缓存条目被认为是无效的。因此,此时,备份副本实际上无效,因为不再需要它。
根据所描述的缓存结构,每个缓存条目具有与其相关联的分配标签。因此,在数据最初被分配到缓存结构时,分配标签需要与该数据相关联。在一个示例布置中,这通过使用默认分配标签来实现。具体地,当数据最初被分配到缓存结构中时,其中分配了该数据的缓存条目被布置为具有与其相关联的默认分配标签。无论何时发生分配,都会发生这种情况,因此在分配发生时处理电路当前是否正在执行事务的指令并不重要。
默认分配标签可以以各种方式布置。然而,在一个示例实施方式中,默认分配标签的当前状态永久地是第二状态,分配标签控制电路不对默认分配标签的当前状态进行改变。因此,默认分配标签可以被视为分配标签的特殊形式,其状态不会改变。由于默认分配标签处于第二状态,因此具有与其关联的默认分配标签的任何缓存行对于处理电路是可见的,因此可以在缓存结构内的查找操作期间被访问。
每当初始数据的备份副本在执行事务期间存储在进一步的缓存条目中时,则该进一步的缓存条目具有与其相关联的针对该事务专门所选的选择的分配标签。在一个示例布置中,针对可用于由分配标签控制电路选择事务的分配标签,该分配标签需要处于第四状态。因此,在任何时间点可能存在处于第四状态的分配标签池,并且可以针对当前事务选择那些分配标签之一。在选择它然后用于标记存储在执行事务期间进行的备份副本的相关缓存条目时,该选定分配标签的状态被改变为如前所述的第一状态。
通常将提供有限数量的分配标签,因此在一个示例实施方式中,在装置内提供回收电路以执行回收操作以将分配标签转换到第四状态,防止回收电路关于当前状态是第一状态的分配标签执行回收操作。通过阻止关于当前状态是第一状态的分配标签的回收操作的执行,这避免了在与尚未到达事务结束点或尚未被中止的实时事务相关联地使用分配标签时回收分配标签。但是,一旦事务完成,由于它被中止或到达事务结束点,那么相关联的分配标签的状态将变为第二状态或第三状态,如前所述,并且此时可用于由回收电路回收。
可以使用许多不同的触发器来决定何时寻求回收特定的分配标签。例如,在当前处于第四状态的分配标签池中的可用分配标签的数量下降到某个水平以下时,可以触发回收电路。可选地或另外地,回收电路可以在存在访问缓存结构的可用性时操作,即,当关于缓存结构不执行活动访问操作时,以便处理由处理电路在执行指令期间做出的请求。
回收操作期间采取的步骤通常可以取决于回收的分配标签是处于第二状态还是第三状态。例如,在一个实施方式中,当在第二状态中对选择的分配标签执行回收操作时,回收电路被布置为对于具有与其相关联的选择的标签的每个缓存条目,将相关联的分配标签改变为默认分配标签,并将选择的分配标签的当前状态改变为第四状态。通过将相关联的分配标签改变为默认分配标签,这确保相关联的缓存条目对处理电路保持可见,同时使选择的分配标签能够被回收并放回可用分配标签池中以供后续事务选择。
在一个示例实施方式中,当在第三状态中对选择的分配标签执行回收操作时,回收电路被布置为使具有与其相关联的所选择的分配标签的每个缓存条目无效,并且将所选择的分配标签的当前状态改变为第四状态。因此,此时相关的缓存条目被特别地无效,使得处理电路不再能够访问它们的内容。同样,这使得选择的分配标签能够被添加回可用分配标签池中,以便针对后续事务进行选择。
装置可以包括查找电路,用于在缓存结构内执行查找操作,以确定由查找请求指定的地址处的数据是否存在于缓存结构内。根据本文描述的技术的示例,分配标签机制还用于影响查找操作。具体地,当执行查找操作时,查找电路被布置成防止检测到缓存条目的命中条件,除非该缓存条目的相关联的分配标签处于第二状态。如前所述,默认分配标签将始终处于第二状态,因此将允许具有与其相关联的默认分配标签的任何缓存条目引起检测到的命中条件。类似地,当前状态处于第二状态的任何其他分配标签也将允许相关联的缓存条目成为缓存结构内的命中的对象。
设备可以通过多种方式跟踪哪些分配标签当前处于第二状态。在一个示例中,分配标签控制电路包括识别其当前状态是第二状态的每个分配标签的第二状态记录,并且查找电路被布置为在执行查找操作期间参考第二状态记录。在一个示例中,可以认为默认分配标签始终是第二状态记录的成员。然而,在一些实施方式中,可以决定不将默认分配标签直接编码到第二状态记录中,而是第二状态记录可以仅保持状态是可变的但是当前状态是第二状态的那些分配标签的记录。在一个示例实施方式中,当在第二状态中对选择的分配标签执行回收操作时,回收电路被布置成从第二状态记录中移除所选择的分配标签。考虑到回收电路的活动,这种方法确保第二状态记录的内容保持最新。
在一个示例实施方式中,分配标签控制电路还可以包括状态跟踪记录,以指示多个分配标签的当前状态。状态跟踪记录可以以各种方式组织。例如,它可以提供每个分配标签的列表,以及每个分配标签的当前状态的指示。然而,在一个示例实施方式中,可以通过使用多个指针来提供对该信息的更有效的编码。特别地,状态跟踪记录可以包括用于标识第一非回收分配标签的第一指针和用于标识为事务选择的最近使用的分配标签的第二指针。因此,状态跟踪记录仅需要保持多个分配标签和两个指针的记录。
在一个这样的实现方式中,由第二指针识别的分配标签处于第一状态,并且位于从第一指针到第二指针的每个分配标签在被识别为处于第二状态记录中时,处于第二状态,并且否则处于第三状态。然后假设所有其他分配标签处于第四状态。因此,回收电路可以通过识别位于第一指针和第二指针之间的那些分配标签来确定哪些分配标签可用于经历回收操作,排除由第二指针具体识别的分配标签,如上所述其处于第一状态。
在一些示例实现方式中,缓存结构可以是一致性缓存系统内的多个缓存中的一个缓存,该一致性缓存系统具有由一致性电路管理的缓存一致性。一致性电路可以采用任何合适的缓存一致性协议,以便保持各种缓存的内容一致。在这样的布置中,事务存储器支持电路可以被布置为,在使初始数据的备份副本存储在进一步的缓存条目中之前,检查是否满足初始数据的一致性要求,并且在没有满足一致性要求的情况下,触发一致性电路执行一致性操作以将初始数据置于满足一致性要求的一致性状态,然后再进行备份复制。
然而,由于使用上述分配标签机制,并且特别地因为初始数据的备份副本保留在缓存结构内,所以相对于不利用分配标签机制的实施方式,可以放宽对初始数据的一致性要求。特别是,如果没有分配标签机制,通常需要初始数据处于唯一干净状态。唯一状态表示缓存结构是存储数据副本的唯一缓存,而干净状态表示缓存条目中的当前数据也存储在存储器中。然而,当采用上述分配标签机制时,一致性要求可以替代地要求初始数据在缓存结构中被识别为处于唯一干净状态或唯一脏状态。因此,虽然仍然要求缓存结构是保存数据副本的唯一缓存,但是数据可以是脏的,即比保持在存储器中的副本更新,因为先前描述的机制是保留缓存中初始数据的备份副本,因此可以恢复该版本的初始数据,而无需从存储器系统中查找。因此,这可以减少在可以进行备份复制之前必须利用一致性电路来改变初始数据的状态的发生次数。
当缓存结构中的缓存条目被驱逐到也是“基于分配标签”的较低级别缓存时,则可以以正常方式驱逐出缓存条目的内容。但是,至少一个缓存级别可能不支持使用分配标签,并且在该实例中需要采取步骤来确定当数据被驱逐到不支持使用分配标签的较低级别缓存结构中时如何从缓存结构驱逐数据。在一个示例实施方式中,驱逐控制电路可以用于在这种情况下控制数据的驱逐,当从缓存结构中驱逐缓存条目时,驱逐控制电路被布置:
(i)当缓存条目的分配标签处于第三状态时,使缓存条目无效而不将数据驱逐到较低级别缓存;
(ii)当缓存条目的分配标签处于第二状态时,在执行将数据驱逐到较低级别缓存之前从缓存条目中移除分配标签;
(iii)当缓存条目的分配标签处于第一状态时,中止该事务,并在执行将数据驱逐到较低级别缓存之前从缓存条目中移除分配标签。
这确保了关于与该条目相关联的分配标签的当前状态,适当地处理缓存条目中的数据。特别是,如果分配标签处于第三状态,则应将数据视为无效,因此将其数据驱逐到较低级别缓存是不合适的。相反,如果分配标签处于第二状态,则表示数据应被视为有效且可见,因此应驱逐数据,但首先必须从缓存条目内容中删除分配标签,因为分配标签在较低级别缓存中没有任何意义。最后,如果分配标签处于第一状态,则发生该数据的驱逐这一事实意味着尚未满足事务的严格原子性要求,因此应该中止事务。由于第一个状态中的分配标签将与备份副本相关联,因此将该备份副本驱逐到较低级别缓存是合适的,但是应该首先删除分配标签,因为该分配标签在较低级别缓存没有意义。
第一到第四状态可以采用各种形式,但是在一个示例实施方式中,第一状态是“使用中”状态,第二状态是“保存”状态,第三状态是“丢弃”状态,并且第四种状态是“无效”状态。
在各种实施方式中,多个缓存结构可以以排他性布置进行操作,其中特定存储器地址处的数据值一次只能存储在那些缓存中的一个中。在一个示例实施方式中,装置还可以包括附加缓存结构,相对于缓存结构以排他性布置进行操作,其中该分配标签用作地址标签的扩展,使得选择的缓存条目和进一步的缓存条目之一中的数据可以被移动到附加缓存结构而不损害(compromise)排他性布置。因此,通过将分配标签视为地址标签的扩展,可以将所选择的缓存条目和相关联的进一步的缓存条目视为与不同的“地址”相关,并且因此即使在附加缓存在关于缓存结构的排他性布置中操作的情况下,这些缓存条目之一可被驱逐到附加缓存结构,而另一个仍保留在原始缓存结构中。这可以通过避免数据被驱逐到附加的缓存结构之外来提供额外的灵活性和性能改进,以便寻求保持排他性布置。
作为非常具体的示例情况,如果原始缓存结构是二级缓存,并且选择的缓存条目和相关联的进一步的缓存条目最初在二级缓存中,那么通常情况是在该二级缓存中执行写入操作。在选择的缓存条目中进行的写入操作将使该缓存条目的内容被提升到一级缓存中。这是可能的,而不需要从二级缓存中驱逐备份副本,因为分配标签被视为地址标签的扩展,因此所选择的缓存条目和进一步的缓存条目被视为与不同的逻辑地址有关。
缓存结构中的缓存条目可以采用各种形式。通常,缓存条目可以是缓存结构内的缓存行,每个缓存行被布置为存储与地址的特定标签部分相关联的一个或多个数据值。然而,在一些实例中,除了缓存行之外,缓存结构还可以包括其他存储结构。例如,可以在缓存结构所采用的缓冲器内提供一个或多个缓冲器条目,具体示例是用于保持从一级缓存被驱逐到另一级缓存的数据的驱逐缓冲器。在这种情况下,一个或多个缓存条目可以是缓存结构所采用的这种缓冲器的缓冲器条目。
现在将参考附图描述特定示例。
图1示出了具有硬件事务存储器(HTM)支持的数据处理装置2的示例。该装置具有处理逻辑4,用于执行指令以执行数据处理操作。例如,处理逻辑4可以包括用于执行各种类型的处理操作的执行单元,例如用于执行诸如加、乘、与、或等的算术或逻辑运算的算术/逻辑单元(ALU);用于对浮点操作数执行操作的浮点单元;或者用于对包括多个数据元素的矢量操作数进行矢量处理的矢量处理单元。提供一组架构寄存器6,用于存储由处理逻辑4执行的指令的操作数,并用于存储执行的指令的结果。指令解码器8对从指令缓存10取出的指令进行解码,以产生用于控制处理逻辑4或数据处理装置2的其他元件执行相关操作的控制信号。还提供加载/存储单元12以执行加载操作(响应于由指令解码器8解码的加载指令)以将数据值从数据缓存14或较低级缓存/主存储器16加载到架构寄存器6中,并且执行存储操作(响应于由指令解码器8解码的存储指令)以将数据值从架构寄存器6存储到数据缓存14或更低级缓存/主存储器16。
装置2还具有事务存储器支持电路20,其提供用于支持硬件事务存储器(HTM)的各种资源。事务存储器支持电路20中的HTM资源可以包括推测结果存储器22(例如用于存储事务的推测结果)、地址跟踪电路24(用于跟踪由事务访问的地址)、冲突检测电路26(用于检测由事务进行的数据访问和由其他线程进行的数据访问之间的冲突,使得在检测到冲突时可以中止事务)、以及恢复状态存储电路28(用于在事务开始时存储来自架构寄存器6的架构状态数据的快照,使得当事务中止时,可以恢复该状态以覆写事务的推测结果)。虽然为了便于说明而示出为单个块,但是如果需要,事务存储器支持电路20内的一个或多个组件(诸如元件22、24、26)可以集成在(一个或多个)数据缓存结构内。
如前所述,事务的处理可能产生关于缓存结构内的数据值的缓存的一些问题,例如在数据缓存14内和/或低级缓存16中的一个或多个内。特别地,在典型的已知系统中,已经认为有必要在事务期间要写入的任何缓存行的内容首先复制到存储器中,使得如果事务中止,则受影响的缓存行可以无效而不会丢失在执行事务之前存在的原始数据。这可能会导致性能影响,因为可能需要在事务期间写入相关缓存行之前对当前缓存内容执行清理操作,此外还可能在重试事务时导致严重的性能问题,因为在此通常需要将数据从内存重新获取到缓存中。然而,根据本文描述的技术,通过将与分配标签于存储在一个或多个缓存内的数据相关联地一起使用来减轻这些潜在的性能问题,这些分配标签以允许某些缓存行内容的备份副本的方式使用。在执行事务期间要保留在缓存内的内容,从而避免在事务期间可以在缓存内写入内容之前将该内容复制在存储器中的需要。如将参考其余附图更详细地讨论的,可以提供分配标签控制电路30以控制多个分配标签的使用,并维持这些分配标签中的每个分配标签的当前状态的指示。
本文描述的分配标签机制可以用在支持事务性能的各种不同系统中。特别地,这些技术可以在单个处理器环境中使用(例如图2所示),或者如图3所示的多处理器环境。
首先考虑图2,单个CPU 50可以具有相关的一级缓存70,并且可以被布置为多线程方式进行操作,以便能够执行多个线程55、60、65。当关于线程之一执行事务时,HTM资源20可以用于在推测结果存储器22中维护在事务期间执行的指令的结果,直到知道事务是否已到达提交点,或者需要被中止。例如,如果其他线程之一试图对事务正在处理的资源之一执行冲突访问,则需要中止该事务。
如图2所示,可以在系统内提供许多个级缓存。特别地,除了一级缓存70之外,可以存在二级缓存75,三级缓存80,并且实际上可能存在介于这些级缓存和主存储器85之间的一些其他级缓存。它通常是某些级缓存相对于彼此以独占方式操作的情况。例如,一级缓存70和二级缓存75可以排他操作,意味着特定存储器地址的数据一次仅被缓存在这些缓存之一中。然而,如稍后将更详细讨论的,由于使用分配标签机制的方式,可以将在事务期间可以创建的缓存行的备份副本布置为具有与其相关联的不同分配标签和与初始缓存行关联的分配标签,并通过将分配标签视为地址标签的扩展,可以允许初始缓存行和包含备份副本的缓存行驻留在以排他方式操作的两个不同的缓存中。通过避免将这些缓存行之一驱逐到较低级缓存,这可以减少对这些副本中的任何一个的访问时间。
本文描述的分配标签机制可以用于一个或多个缓存级,但不需要针对所有级缓存使用。例如,较低级的缓存之一(例如三级缓存80)可以不知道分配标签。在这种情况下,可以提供驱逐机制,该驱逐机制能够在具有相关分配标签的缓存行被驱逐到不支持分配标签的缓存级时,对分配标签采取适当的步骤。
图3示出了图2的替换布置,其中提供了多个处理器100、105、110,每个处理器可以执行不同的线程115、120、125,并且每个处理器可以具有关联的一级数据缓存130、135、140。可以提供进一步级别的缓存,其可以专用于特定处理器或者在处理器之间共享。在所示的示例中,存在用于每个CPU 100、105、110的专用二级缓存145、150、155,但是共享三级缓存170可以耦合到主存储器175。通常提供互连结构160用于使能系统各个元件之间的通信。在这样的布置中,各个CPU可以本地缓存数据副本,通常提供缓存一致性电路165,以便实现缓存一致性协议,以保持各个CPU以连贯的方式看到数据的各种副本。缓存一致性电路可以以各种方式实现,但是作为说明,在图3中示出为与互连160相关联地提供的机制。
作为缓存一致性机制的一部分,针对特定处理器提供的每个缓存内维护的副本可以被标记以识别该副本是由处理器唯一保持,还是指示其他处理器之一也可以维护副本。该信息可用于决定在各种处理器执行操作期间对缓存行进行更新时所采取的步骤。例如,在该缓存行当前不被该处理器唯一保持的情况下,可以防止处理器针对缓存行采取某些动作。相反,处理器可能需要首先联系缓存一致性电路165,以便在可以由处理器执行关于该缓存行所需的处理之前,针对其他处理器所保持的副本采取适当的步骤。
如本领域技术人员将理解的,缓存一致性电路可以以各种方式实现,以跟踪由各种处理器保持的缓存内容。例如,某些形式的一致性目录可以由缓存一致性电路165维护,以保持哪些处理器当前正在缓存特定存储器地址处的数据副本的指示。当需要时,该信息可用于执行关于特定处理器的缓存的窥探操作,以便引起所需的一致性动作,例如由特定处理器保持的本地缓存拷贝的无效。
当在这样的多处理器系统内执行事务时,缓存一致性的要求进一步加剧了与处理缓存内容相关的先前提到的潜在性能问题。例如,在本文描述的技术之前,通常将防止处理器在事务期间关于缓存行执行写操作,直到该缓存行被确认为处于唯一干净状态,即内容不是仅存储在存储器中,但也已确认其他处理器当前都没有缓存该数据的副本。这可以进一步影响事务的性能,由于关于缓存一致性电路165需要采取步骤,以便在针对在事务期间执行的缓存数据进行写入操作之前将缓存的数据置于唯一的干净状态。然而,从剩余图的讨论中可以明显看出,当使用这里描述的分配标签机制时,虽然仍然需要确保在事务期间要写入的缓存行是唯一的,但是不再需要它也是干净的,因为备份副本可以在缓存中本地保存,因此在事务中止的情况下可以实现对该状态的恢复,而无需从存储器中重新获取数据。此外,如果事务不中止,由于使用本地存储在缓存内的备份副本,缓存内容可以恢复到事务开始之前的状态,因此不需要执行关于缓存一致性电路165的缓存一致性动作(例如,指示写入集合中的缓存行已经无效),这可以进一步降低在中止后尝试重试事务时的性能影响。
与前面描述的图2的示例一样,一个或多个级缓存可以被布置为以排他性方式操作。例如,通常情况是一级缓存130、135、140及其相关联的二级缓存145、150、155以排他性布置操作。关于三级缓存170,这可以被布置为对于某些类型的数据是专用的并且对于其他类型的数据是包含的。例如,对于处于唯一状态的数据,它可以被布置为排他的,而它可以被布置为包含共享的数据,即,其中多于一个的CPU可以同时在其相关联的一级或二级缓存副本。由于缓存行在事务期间对其执行写入之前必须处于唯一状态,因此在不使用这里描述的分配标签机制的系统中,这种排他行为在重试事务时会引起显著的性能影响。特别地,如果事务被中止,则当前缓存行的内容必须被无效,并且当重试事务时,需要从存储器175获取数据,因为副本将不存在于三级缓存170或相关联的二级缓存145、150、155中,由于这些缓存针对处于唯一状态的数据实现的排他性行为。但是,使用此处描述的技术,可以避免性能影响,因为本地备份副本仍保留在缓存中,因此可以在事务中止后直接访问,从而避免与从存储器中重新获取数据相关的时间损失。应当注意,当各个级缓存相对于彼此以排他方式操作时,在诸如图2所示的系统内也避免了这种性能影响。此外,在如图3所示的缓存一致系统中,还需要通知缓存一致性电路缓存行不再保持在缓存中。
图4是示意性地示出根据本文描述的技术的分配标签的使用的图示。可以如图4中示意性地示出的那样布置基于分配标签的缓存200。具体地,缓存可以具有一个或多个标签RAM 205和相关联的数据RAM 210。根据标准布置,每个标签RAM条目将提供与存储在数据RAM的相应缓存行中的数据相关的多条信息。因此,地址标签字段用于存储对存储在相关缓存行中的所有数据共同的地址部分。还可以在标签RAM条目内提供各种属性字段,例如用于识别当前缓存行是否有效的有效位,以及其值指示缓存行的当前内容是否比在主存储器中保持的副本更新(即脏)的数据的脏位。如将理解的,当驱逐有效缓存行时,如果设置了脏位,则必须执行清理操作,以便在缓存行无效之前将缓存行的当前内容写回存储器。
还如图4所示,每个标签RAM条目可以包括写入集合字段和读取集合字段,其值可以被设置为识别相关联的缓存行的内容是在事务的写入集合还是在事务的读取集合内。该信息用作HTM资源的冲突检测机制的一部分。特别地,如前所述,事务的读取集合中的缓存行是由事务读取的缓存行,并且在事务结束之前不应由另一线程写入这些缓存行。类似地,由事务写入的缓存行被称为事务的写入集合,并且在事务结束之前不应由另一线程读取或写入这些缓存行。
根据本文描述的技术,分配标签还与每个缓存行相关联。虽然可以以各种方式存储分配标签,但是在一个示例实施方式中,在每个标签RAM条目内提供另一个字段以便存储分配标签。
当缓存行最初被分配到缓存中时,无论是在执行事务期间还是在其他情况下,默认分配标签都与该缓存行相关联。默认分配标签被视为分配标签的特殊形式,其状态不会改变。特别地,始终假设默认分配标签处于保存状态(本文也称为第二状态)。然而,除了默认分配标签之外,还存在由分配标签控制电路240管理的多个进一步的分配标签。分配标签控制电路240维护分配标签状态跟踪记录245,其被布置来识别由分配标签控制电路240管理的多个分配标签中的每一个的当前状态。如本文将更详细讨论的,由记录245跟踪的每个分配标签可以处于四种状态之一,即“无效”状态(本文也称为第四状态),指示分配标签可用于被选择为与事务相关联,“使用中”状态(本文也称为第一状态),指示分配标签是当前正与事务相关联地使用,“保存状态”(本文也称为第二状态),其是当关联的事务中止时为分配标签设置的状态,以及“丢弃”状态(本文也称为第三状态),其是当关联事务到达事务结束点时为分配标签设置的状态,并因此提交。
分配标签控制电路240还维护保存状态分配标签记录250,其识别当前状态是先前提到的保存状态的那些分配标签。始终假设默认分配标签处于保存状态,因此可以在保存状态分配标签记录250中直接识别,或者如果需要,不需要在其中直接识别,因为它总是被认为是处于保存状态。
如将参考其余附图更详细地讨论的,用于控制关于缓存执行的各种操作的缓存控制电路255可以被布置为考虑由分配标签控制电路240维护的分配标签信息。例如,该信息可用于影响查找电路260如何执行查找操作,并且在某些情况下可用于控制驱逐管理器265执行的驱逐操作,特别是当缓存行被驱逐到不支持使用分配标签的较低级缓存。
因为分配标签控制电路通常仅提供有限数量的分配标签,所以回收机制可以由回收电路270实现,以便寻求回收当前处于保存或丢弃状态的任何分配标签。特别地,此时,处于保存状态或丢弃状态的分配标签当前未与事务相关联地主动使用,但还未处于无效状态,其中它将再次可用于关联随后的事务。因此,回收电路可以执行某些操作,以便使得处于保存状态或丢弃状态的分配标签能够被置于无效状态,与结合当前具有与其相关联的分配标签的任何缓存行所采取的适当步骤相关联。
图4通过箭头280、282示出了在事务期间将缓存行添加到事务的写入集合时可以采取的步骤。假设在将缓存行添加到写入集合之前满足任何标准,则备用副本由另一缓存行中的初始数据构成。因此,如图4所示,如果所讨论的缓存行是缓存行225,则可以在缓存行条目230内进行该缓存行中的初始数据的备份,如箭头282所示。同时,备份副本230的相应标签条目220填充有从与初始缓存行225相关联的标签条目215导出的信息。因此,地址标签信息被复制到新标签条目220,如同有效和脏的信息。然而,不是复制分配标签信息,而是为当前事务选择分配标签,并且该分配标签的指示存储在另一标签条目220的分配标签字段内。假设这是要添加到写入集合中第一缓存行,然后将从记录245中标识的当前处于无效状态的分配标签中选择事务的分配标签,并且一旦选择了分配标签,那么该分配标签将是处于“使用中”状态。
在条目215中标识的原始缓存行225的分配标签不受该处理的影响,并且与缓存行被添加到写入集合之前的分配标签相同。在图4所示的示例中,假设默认分配标签与初始缓存行225相关联。当进行备份副本时,可以将原始缓存行225添加到写入集合中,如相关标签RAM条目215的写入集合字段从逻辑0到逻辑1状态的转换所示。之后采取的步骤将在后面参考一系列流程图更详细地讨论。
如前所述,回收电路270可以被布置成针对处于保存或丢弃状态的任何分配标签执行回收操作,这还涉及针对使用这种分配标签的缓存行采取相关动作。虽然在一个实施方式中,一旦选择了保存或丢弃状态的特定分配标签用于回收,回收电路可以在整个缓存中执行查找以使用该分配标签识别任何条目,在替代实施方式中,可以提供位置跟踪机制275以跟踪在执行事务期间已经用于存储数据的备份副本的那些位置,因为它是将使用分配标签的那些备份副本。位置跟踪器可以以各种方式布置。例如,可以保留缓存的某些部分用于存储备份副本,或者可选地,位置跟踪器可以仅保留一些其他形式的条目标识符信息以维护已经使用哪些条目来进行备份副本的记录。
应当理解,可以以各种方式布置缓存,并且缓存的组织可以影响在缓存内进行备份副本的位置。例如,在完全关联的缓存中,可以在缓存内的任何可用缓存行中创建备份副本。但是,在使用集合关联缓存结构的实施方式中,通常情况是备份副本将在包含原始缓存行的同一集合的另一个条目内进行。或者,可以将备份副本在支持分配标签机制的另一级缓存进行,以避免在将原始缓存行和备份副本存储在同一缓存中时出现的关联性问题。应该注意,这种其他级缓存不需要能够在这种情况下跟踪事务的写入集合。
分配标签状态跟踪记录245可以采用各种形式。例如,在一个实施方式中,它可以标识多个分配标签中的每个,并且具有与每个分配标签相关联的附加字段以标识当前状态。应当理解,在使用前面讨论的四种状态的实施方式中,可以通过与每个分配标签相关联地提供的2位字段来指示状态。
然而,可以使用一对指针来实现分配标签状态信息的更有效编码,如图5所示。因此,在该示例中,列表290标识除了默认分配标签之外的每个可能的分配标签。这里假设除了默认分配标签之外还有N个分配标签,并且每个分配标签由列表290中的条目标识。然后,第一指针292用于指向第一个非回收分配标签,而第二指针294指向针对当前事务选择的分配标签。指针294指向的分配标签将处于“使用中”状态。在该示例中,假设一次只有一个事务是活动的,因此在“使用中”状态中将只有一个分配标签。第一指针292和恰好在第二指针294之前的条目之间的所有分配标签将处于保存或丢弃状态。具体地,如果列表的该区域内的分配标签在分配标签记录250中被直接识别,则该分配标签处于保存状态,否则将处于丢弃状态。所有其他分配标签将处于无效状态,如图5所示。可以理解,分配标签状态跟踪记录的这种布置避免了为每个分配标签专门提供附加字段以识别其状态的需要,因此节省了空间。
此外,虽然可以提供存储以识别列表290,但是在一些实施方式中,这不是必需的。例如,可以从指针292、294能够采用的所有可能值推断出分配标签的列表。例如,如果我们考虑两个4位指针,则4’b0000可以用作默认分配标签,并且可以防止指针获取该值。然后,其他分配标签可以是使用4位可编码的任何值。在这样的实施方式中,甚至不需要提供用于识别分配标签的字段。
每次启动新事务时指针294将递增,因此针对该事务选择下一个分配标签。类似地,每当回收电路回收相关的分配标签时,指针292将递增。指针通常被布置成执行包装操作,使得当指针到达列表290中的最后一个条目时,然后调整指针以识别列表中的第一个条目。
图6示意性地示出了将数据正常分配到缓存中。具体地,在步骤300的正常分配中,处理进行到步骤305,其中以标准方式将数据分配到可用缓存行,但是另外,分配标签字段被设置为标识默认分配标签。
图7是示出当将缓存行添加到事务的写入集合时所采取的步骤的流程图。因此,一旦在步骤310识别出事务具有要添加到写入集合的缓存行,则处理进行到步骤315,其中确定是否满足任何写入集合标准。在诸如图2的单处理器系统中,此时可能没有任何特定的写入集合标准,但是在如图3所示的采用缓存一致性的多处理器系统内,可能需要在唯一状态下保持缓存行,因此确认没有其他CPU保持数据的本地缓存副本。然而,在使用分配标签方案时,缓存行可以处于唯一干净状态或唯一脏状态,并且不需要针对脏数据执行清洁操作以便在执行步骤315时将副本放入最新的存储器。
如果不满足写入集合标准,则处理进行到步骤320,其中使用适当的机制来转换缓存行的状态,以便满足写入集合标准。考虑到缓存一致性示例,这可以涉及缓存一致性电路165关于由其他处理器保持的缓存内容执行各种窥探操作,以便使它们干净和/或使它们具有的任何副本无效,从而处理器执行事务可以保证具有唯一的数据副本,此时可以将缓存行标记为处于唯一的干净或唯一的脏状态。
假设在步骤315满足写入集合标准,或者在步骤320采取校正步骤,则处理进行到步骤325,其中在缓存内进行缓存行的备份副本,并且备份副本的分配标签被设置为针对事务选择的分配标签。此时,然后可以在步骤330将原始缓存行添加到写入集合。
图8是示出在一个实例实施方式中如何由图4的查找电路260管理查找操作的流程图。在步骤350,使用查找请求提供的地址的标签部分执行查找操作,以便识别该标签部分是否与标签RAM的一个条目内保持的地址标签匹配。取决于缓存的结构,地址的另一部分可首先用于标识缓存内的一些候选条目,其地址标签将与请求提供的地址的标签部分进行比较。例如,在集合关联缓存结构中,地址的索引部分将首先用于标识集合关联缓存中的特定集合,然后在比较地址的标签部分与这些条目中相应的地址标签字段时,将使用该集合中的条目。
在步骤355,从经历查找操作的那些缓存行中确定是否已找到具有匹配地址标签的缓存行。如果否,则在步骤360检测到未命中。然而,如果检测到匹配,则在确定是否存在命中之前执行进一步的限定步骤。特别地,在步骤365,确定命中缓存行的分配标签是否在保存的标签结构250中。如前所述,将始终假定默认分配标签在该结构中,并且因此如果是默认分配标签与缓存行相关联,则会有命中。然而,另外,如稍后将参考图9所讨论的,当事务中止时,与备份副本相关联的分配标签被转换到保存状态并在保存的标签结构250中被识别,因此使备份副本在执行查找操作时可见。如果命中缓存行的分配标签在保存的标签结构中,则在步骤370检测到命中,否则在步骤360确定发生了未命中。
图9是示出关于初始缓存行的备份副本的事务中止或事务提交所采取的步骤的流程图。如果在步骤400确定事务已中止,则在步骤405将事务的分配标签添加到保存的状态分配标签结构250。此外,在步骤410,事务的分配标签的状态在标签状态跟踪结构245中从使用中状态改变到保存状态。关于该后一步骤,可以理解,当使用图5的实施方式时,实际上通过递增指针294来实现,使得其指向下一分配标签,其中事务的分配标签的“保存”状态然后从已将分配标签添加到保存的状态分配标签记录250的事实推断出。
相反,如果在步骤405确定事务已到达提交点,则事务的分配标签的状态在标签状态跟踪结构245中从使用中状态改变为丢弃状态。此时不对保存的状态分配标签记录250的内容进行更新。再次,考虑到图5的实施方式,应当理解,步骤415简单地通过递增指针294来实现,以便指向处于使用中状态的下一分配标签,其中事务的分配标签的丢弃状态然后从保存的状态分配标签记录250中缺少该分配标签推断出。
如框420所示,尽管不是在确定事务提交点之后采取的明确步骤,但是具有处于丢弃状态的分配标签的每个缓存行被有效地视为无效。然而,在一个实施方式中,此时实际上没有改变有效位的状态,因为可以在使用回收电路270回收分配标签时采取该动作。相反,分配标签处于丢弃状态将有效地意味着具有与其相关联的分配标签的缓存行在执行查找操作时将是不可见的,并且特别地对于这样的缓存行不能检测到命中。
由于HTM资源20已被布置为处理与中止事务或提交事务相关联的各种同步问题,因此在中止处理或提交处理事务期间的适当时间点,可以从HTM资源20向分配标签控制电路240发出执行步骤405、410、415的适当消息。
图10A是示出针对当前处于丢弃状态的分配标签的分配标签回收机制的流程图,该回收机制可由回收电路270实现。在步骤500,等待触发器回收这样的分配标签。触发可能由于各种原因而发生。例如,系统可以被布置成当可用分配标签(即处于无效状态)的数量下降到某个水平以下时启动这样的触发。或者,回收电路可以在缓存资源未被缓存控制电路255使用时操作,以便在缓存未被使用的时间段期间寻求回收分配标签。应当理解,上述两种机制都可以用于一种实施方式中。
当检测到触发时,处理进行到步骤505,其中回收电路识别具有与其相关联的分配标签的所有缓存行。如前面参考图4所述,位置跟踪机制275可用于辅助该过程,但是可选地,可以在整个缓存内执行查找以识别相关的缓存行。
在步骤510,对于每个识别的缓存行,清除该缓存行中的有效标志,从而使缓存行内容无效。此时应该注意,在设置脏标志的情况下,不需要采取步骤来处理脏数据。特别地,如果分配标签处于丢弃状态,这意味着保持在缓存行中的备份副本不再是最新的,因此,不管进行副本备份时缓存行内容是否脏,不需要采取任何操作,因为将有另一个缓存行保持更新的数据版本。
进一步到步骤510,然后在步骤515,在标签状态跟踪记录245中将分配标签的状态改变为无效,从而将该分配标签添加回可用分配标签池以供将来的事务使用。
图10B示出了当要回收的分配标签当前处于“保存”状态时可以采用的分配标签回收机制。在步骤550,等待触发器回收这样的分配标签。在一个示例实施方式中,可以使用相同的触发器,如先前参考图10A的步骤500所讨论的。一旦检测到触发,则在步骤555识别具有该分配标签的所有缓存行,其方式与前面针对图10A的步骤505所讨论的方式相同。然后,在步骤560,对于每个识别的缓存行,与该缓存行相关联的分配标签被改变为默认分配标签,并且缓存行被保留为有效。另外,如果设置了脏标志,则脏标志也保持在设置状态(即保持缓存行的干净或脏的性质)。在步骤565,从保存的标签记录250中移除分配标签,并且在步骤570,在标签状态跟踪结构245中将分配标签的状态改变为无效。由于在步骤560默认分配标签与缓存行相关联,并且缓存行保持有效,可以理解,当执行查找操作时,该缓存行可以继续成为命中对象,因为默认分配标签总是被假定为已保存的状态分配标签记录250的一部分。
当从缓存中驱逐出缓存行时,可以将分配标签信息传递到较低级缓存,假设较低级缓存也基于分配标签。然而,如果缓存行被驱逐到的较低缓存不基于分配,那么在一个实施方式中,可以采用图11中所示的步骤来管理驱逐处理,这些步骤由驱逐管理器265执行。
具体地,如果在步骤600,与被驱逐的条目相关联的分配标签处于丢弃状态,则在步骤605,缓存行无效,并且不向较低缓存发生驱逐。还应该注意,即使数据被标记为脏,也会发生此步骤,因为如前所述,分配标签处于丢弃状态的事实意味着该缓存行中保持的备份副本不再是最新的副本,因此不应再次提及。
如果分配标签不处于丢弃状态,则在步骤610确定分配标签是否处于保存状态。如果是,则在步骤615,从标签条目内保持的信息中移除分配标签,然后将缓存行驱逐到较低级缓存。保留所有其他信息,包括有效和脏信息。具体地,由于分配标签处于保存状态,这表明备份副本实际上是当前有效副本,因为事务已中止,因此初始缓存行的内容无效。另外,还针对具有与其相关联的默认分配标签的任何缓存行执行步骤615,因为始终假设默认分配标签处于保存状态。
如果在步骤610确定分配标签不处于保存状态,则已知分配标签处于使用中状态。具体地,缓存中没有条目,该缓存将具有与它们相关联的处于无效状态的分配标签,因为无效状态仅与当前未使用的分配标签相关联。如果正在针对其分配标签处于“使用中”状态的条目执行驱逐,则这指示正在寻求执行冲突访问的情况,因此,这应导致事务的中止。因此,在步骤625,中止事务,并且另外在步骤615,移除分配标签,并且将缓存行驱逐到较低级缓存。特别地,由于事务正在中止,因此已知备份副本是应该保留的当前副本,因此可以有效地将其逐出到较低级缓存。
虽然在上述示例中,分配标签信息与缓存内的缓存行相关联地保维护,但是这样的分配标签信息也可以与其他与缓存结构相关联的条目相关联地维护。例如,缓存结构还可以包括用于临时缓存正被从一级缓存驱逐到较低级缓存的缓存行内容的驱逐缓冲器,并且如果需要,还可以与这样的缓冲器条目相关联地提供分配标签信息。期望。
应当理解,上述分配标签机制可以在利用事务存储器的系统内实现显著的性能改进。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“配置为”并不意味着需要以任何方式改变设备元件以便提供定义的操作。
尽管这里已经参考附图详细描述了本发明的示例性实施例,但是应该理解,本发明不限于这些精确的实施例,并且本领域的技术人员可以在不脱离由所附权利要求限定的本发明的范围和精神的情况下,在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以利用独立权利要求的特征对从属权利要求的特征进行各种组合。
Claims (24)
1.一种装置,包括:
处理电路,用于响应于指令而执行数据处理操作,所述处理电路包括事务存储器支持电路,用于支持事务的执行,所述事务包括推测地执行的指令序列,并且所述处理电路被配置为防止提交推测地执行的指令的结果,直到所述事务已经到达事务结束点;
缓存结构,包括多个缓存条目,用于存储供所述处理电路访问的数据,每个缓存条目具有与其相关联的分配标签;
分配标签控制电路,用于控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;
所述事务存储器支持电路被布置为:当在所述事务期间要写入选择的缓存条目中的初始数据时,使所述初始数据的备份副本存储在进一步的缓存条目中,并且使所述分配标签控制电路将该进一步的缓存条目与针对所述事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止所述处理电路访问该进一步的缓存条目的第一状态;以及
如果所述事务在到达所述事务结束点之前中止,则所述事务存储器支持电路被布置为使选择的缓存条目无效,并且所述分配标签控制电路被布置为将选择的分配标签的状态改变为允许所述处理电路访问所述进一步的缓存条目的第二状态,从而使得随后能够在所述缓存结构内检测到针对所述初始数据的命中,而无需将所述初始数据重新获取到所述缓存结构中。
2.根据权利要求1所述的装置,其中:
所述事务存储器支持电路被布置为识别缓存条目的写入集合,该缓存条目的写入集合识别在所述事务期间写入的每个缓存条目,并且对于所述写入集合中的每个识别的缓存条目,所述事务存储器支持电路被布置为使存储在该识别的缓存条目中的所述初始数据的备份副本存储在选择的进一步的缓存条目中,每个进一步的缓存条目具有与其相关联的针对所述事务选择的相同的选择的分配标签;
在所述事务被中止的情况下,所述事务存储器支持电路被布置为使所述写入集合中识别的每个缓存条目无效,而选择的分配标签的状态到所述第二状态的改变允许所述处理电路访问每个进一步的缓存条目。
3.如权利要求1所述的装置,其中,在所述事务到达所述事务结束点的情况下,所述事务存储器支持电路被布置为在所述事务结束后将选择的缓存条目保持为有效,并且所述分配标签控制电路被布置为将选择的分配标签的状态改变为使得所述进一步的缓存条目被认为无效的第三状态。
4.如权利要求1所述的装置,其中,当数据最初被分配到所述缓存结构中时,其中分配了该数据的缓存条目被布置为具有与其相关联的默认分配标签。
5.如权利要求4所述的装置,其中,所述默认分配标签的当前状态永久地是所述第二状态,所述分配标签控制电路不对所述默认分配标签的当前状态进行改变。
6.如权利要求1所述的装置,其中,对于可用于由所述分配标签控制电路选择事务的分配标签,该分配标签需要处于第四状态。
7.如权利要求6所述的装置,还包括回收电路,用于执行回收操作以将分配标签转换到所述第四状态,所述回收电路被阻止对于当前状态是所述第一状态的分配标签执行回收操作。
8.如权利要求7所述的装置,其中:
当数据最初被分配到所述缓存结构中时,分配有该数据的缓存条目被布置为具有与其相关联的默认分配标签;以及
当在所述第二状态中对选择的分配标签执行所述回收操作时,所述回收电路被布置为:对于具有与其相关联的选择的分配标签的每个缓存条目,将所述相关联的分配标签改变为所述默认分配标签,并且将选择的分配标签的当前状态改变为所述第四状态。
9.如权利要求7所述的装置,其中,当在所述第三状态中对选择的分配标签执行所述回收操作时,所述回收电路被布置为使具有与其相关联的选择的分配标签的每个缓存条目无效,并且将选择的分配标签的当前状态改变到所述第四状态。
10.如权利要求1所述的装置,还包括:
查找电路,用于在所述缓存结构内执行查找操作以确定由查找请求指定的地址处的数据是否存在于所述缓存结构内,其中,当执行所述查找操作时,所述查找电路被布置为防止针对缓存条目检测到命中条件,除非该缓存条目的相关联的分配标签处于所述第二状态。
11.如权利要求10所述的装置,其中:
所述分配标签控制电路包括第二状态记录,所述第二状态记录识别当前状态是所述第二状态的每个分配标签,并且所述查找电路被布置为在执行所述查找操作期间参考所述第二状态记录。
12.如权利要求8所述的装置,还包括:
查找电路,在所述缓存结构内执行查找操作以确定由查找请求指定的地址处的数据是否存在于所述缓存结构内,其中,当执行所述查找操作时,所述查找电路被布置为防止针对缓存条目检测到命中条件,除非该缓存条目的相关联的分配标签处于所述第二状态;
其中:
所述分配标签控制电路包括第二状态记录,所述第二状态记录识别当前状态是所述第二状态的每个分配标签,并且所述查找电路被布置为在执行所述查找操作期间参考所述第二状态记录;以及
当在所述第二状态中对选择的分配标签执行所述回收操作时,所述回收电路被布置为从所述第二状态记录中移除所述选择的分配标签。
13.如权利要求1所述的装置,其中,所述分配标签控制电路包括状态跟踪记录,用于指示所述多个分配标签的当前状态。
14.如权利要求12所述的装置,其中,所述状态跟踪记录包括第一指针和第二指针,所述第一指针用于识别第一非回收分配标签,并且所述第二指针用于识别针对事务而选择的最近使用的分配标签。
15.如权利要求14所述的装置,其中:
由所述第二指针识别的所述分配标签处于所述第一状态;
位于从所述第一指针到所述第二指针的每个分配标签在被识别为处于所述第二状态记录中时,处于所述第二状态,否则处于所述第三状态;以及
所有其他分配标签都处于所述第四状态。
16.如权利要求1所述的装置,其中:
所述缓存结构是一致性缓存系统内的多个缓存中的一个缓存,所述一致性缓存系统具有由一致性电路管理的缓存一致性;以及
所述事务存储器支持电路被布置为:在使所述初始数据的备份副本存储在所述进一步的缓存条目中之前,检查是否满足所述初始数据的一致性要求,并且在没有满足所述一致性要求的情况下,在继续制作所述备份副本之前,触发所述一致性电路执行一致性操作以将所述初始数据置于满足所述一致性要求的一致性状态。
17.如权利要求16所述的装置,其中,所述一致性要求要求所述初始数据在所述缓存结构中被识别为处于唯一干净状态或唯一脏状态。
18.如权利要求1所述的装置,还包括:
驱逐控制电路,用于对把数据从所述缓存结构驱逐到不支持使用分配标签的较低别缓存进行控制,当从所述缓存结构驱逐缓存条目时,所述驱逐控制电路被布置为:
(i)当所述缓存条目的分配标签处于所述第三状态时,使所述缓存条目无效而不将所述数据驱逐到所述较低级别缓存;
(ii)当所述缓存条目的分配标签处于所述第二状态时,在执行将所述数据驱逐到所述较低级别缓存之前从所述缓存条目中移除所述分配标签;
(iii)当所述缓存条目的分配标签处于所述第一状态时,中止所述事务,并且在执行将所述数据驱逐到所述较低级别缓存之前从所述缓存条目中移除所述分配标签。
19.如权利要求3所述的装置,其中:
对于可用于由所述分配标签控制电路选择给事务的分配标签,该分配标签需要处于第四状态;以及
所述第一状态是“使用中”状态,所述第二状态是“保存”状态,所述第三状态是“丢弃”状态,并且第四状态是“无效”状态。
20.如权利要求1所述的装置,还包括:附加缓存结构,相对于所述缓存结构以排他性布置进行操作,其中,所述分配标签用作地址标签的扩展,使得选择的缓存条目和所述进一步的缓存条目中的一者中的数据能够被移动到所述附加缓存结构而不损害所述排他性布置。
21.如权利要求1所述的装置,其中,所述缓存条目是所述缓存结构内的缓存行。
22.如权利要求1所述的装置,其中,所述缓存条目中的一个或多个缓存条目是由所述缓存结构采用的缓冲器的缓冲器条目。
23.一种在具有处理电路的装置中管理缓存结构的方法,所述处理电路用于响应于指令而执行数据处理操作,所述处理电路具有事务存储器支持电路,用于支持事务的执行,所述事务包括推测地执行的指令序列,并且所述处理电路被配置为防止提交推测地执行的指令的结果,直到所述事务已经到达事务结束点,所述方法包括:
为所述缓存结构提供多个缓存条目,用于存储供所述处理电路访问的数据,其中,每个缓存条目具有与其相关联的分配标签;
利用分配标签控制电路来控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;
当在所述事务期间要写入选择的缓存条目中的初始数据时,将所述初始数据的备份副本存储在进一步的缓存条目中,并且使所述分配标签控制电路该将进一步的缓存条目与针对所述事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止所述处理电路访问该进一步的缓存条目的第一状态;以及
如果所述事务在到达事务结束点之前中止,则使选择的缓存条目无效,并且使所述分配标签控制电路将选择的分配标签的状态改变为允许所述处理电路访问所述进一步的缓存条目的第二状态,从而使得随后能够在所述缓存结构内检测到针对所述初始数据的命中,而无需将所述初始数据重新获取到所述缓存结构中。
24.一种装置,包括:
处理装置,用于响应于指令而执行数据处理操作,所述处理装置包括事务存储器支持装置,用于支持事务执行,所述事务包括推测地执行的指令序列,并且所述处理装置被配置为防止提交推测地执行的指令的结果,直到所述事务到达事务结束点;
缓存结构装置,包括多个缓存条目,用于存储供所述处理装置访问的数据,每个缓存条目具有与其相关联的分配标签;
分配标签控制装置,用于控制多个分配标签的使用并且维持这些分配标签中的每个分配标签的当前状态的指示;
所述事务存储器支持装置用于:当在所述事务期间要写入选择的缓存条目中的初始数据时,使所述初始数据的备份副本存储在进一步的缓存条目中,并且使所述分配标签控制装置将该进一步的缓存条目与针对所述事务所选的选择的分配标签相关联,并且将选择的分配标签的当前状态更新为防止所述处理装置访问该进一步的缓存条目的第一状态;以及
如果所述事务在到达所述事务结束点之前中止,则所述事务存储器支持装置用于使选择的缓存条目无效,并且所述分配标签控制装置用于将选择的分配标签的状态改变为允许所述处理装置访问所述进一步的缓存条目的第二状态,从而使得随后能够在所述缓存结构装置内检测到针对所述初始数据的命中,而无需将所述初始数据重新获取到所述缓存结构装置中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1807625.7 | 2018-05-10 | ||
GB1807625.7A GB2573558B (en) | 2018-05-10 | 2018-05-10 | A technique for managing a cache structure in a system employing transactional memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110471617A true CN110471617A (zh) | 2019-11-19 |
CN110471617B CN110471617B (zh) | 2024-02-20 |
Family
ID=62623177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910383150.8A Active CN110471617B (zh) | 2018-05-10 | 2019-04-30 | 在采用事务存储器的系统中管理缓存结构的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10956206B2 (zh) |
KR (1) | KR20190129720A (zh) |
CN (1) | CN110471617B (zh) |
GB (1) | GB2573558B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778330A (zh) * | 2021-08-05 | 2021-12-10 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
CN113849455A (zh) * | 2021-09-28 | 2021-12-28 | 致真存储(北京)科技有限公司 | 一种基于混合式存储器的mcu及缓存数据的方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10783031B2 (en) * | 2018-08-20 | 2020-09-22 | Arm Limited | Identifying read-set information based on an encoding of replaceable-information values |
US10757215B2 (en) * | 2018-09-13 | 2020-08-25 | Pivotal Software, Inc. | Allocation of computing resources for a computing system hosting multiple applications |
US20220358235A1 (en) * | 2021-05-05 | 2022-11-10 | EMC IP Holding Company LLC | Access Control of Protected Data Using Storage System-Based Multi-Factor Authentication |
US11822479B2 (en) * | 2021-10-29 | 2023-11-21 | Advanced Micro Devices, Inc. | History-based selective cache line invalidation requests |
CN115827651B (zh) * | 2022-11-22 | 2023-07-04 | 中国科学院软件研究所 | 一种低能耗的机载嵌入式数据库内存事务管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US20080288727A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Optimized Support for Transactional Memory |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US20140006698A1 (en) * | 2012-06-28 | 2014-01-02 | Robert S. Chappell | Hybrid Cache State And Filter Tracking Of Memory Operations During A Transaction |
US20150378928A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Managing read tags in a transactional memory |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7350034B2 (en) * | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US9858189B2 (en) * | 2015-06-24 | 2018-01-02 | International Business Machines Corporation | Hybrid tracking of transaction read and write sets |
US10223268B2 (en) * | 2016-02-23 | 2019-03-05 | International Business Systems Corporation | Transactional memory system including cache versioning architecture to implement nested transactions |
-
2018
- 2018-05-10 GB GB1807625.7A patent/GB2573558B/en active Active
-
2019
- 2019-04-02 US US16/372,690 patent/US10956206B2/en active Active
- 2019-04-30 CN CN201910383150.8A patent/CN110471617B/zh active Active
- 2019-05-02 KR KR1020190051376A patent/KR20190129720A/ko active Search and Examination
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US20080288727A1 (en) * | 2007-05-14 | 2008-11-20 | International Business Machines Corporation | Computing System with Optimized Support for Transactional Memory |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US20140006698A1 (en) * | 2012-06-28 | 2014-01-02 | Robert S. Chappell | Hybrid Cache State And Filter Tracking Of Memory Operations During A Transaction |
US20150378928A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Managing read tags in a transactional memory |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778330A (zh) * | 2021-08-05 | 2021-12-10 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
CN113778330B (zh) * | 2021-08-05 | 2023-04-25 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
CN113849455A (zh) * | 2021-09-28 | 2021-12-28 | 致真存储(北京)科技有限公司 | 一种基于混合式存储器的mcu及缓存数据的方法 |
CN113849455B (zh) * | 2021-09-28 | 2023-09-29 | 致真存储(北京)科技有限公司 | 一种基于混合式存储器的mcu及缓存数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110471617B (zh) | 2024-02-20 |
GB201807625D0 (en) | 2018-06-27 |
US10956206B2 (en) | 2021-03-23 |
KR20190129720A (ko) | 2019-11-20 |
US20190347124A1 (en) | 2019-11-14 |
GB2573558A (en) | 2019-11-13 |
GB2573558B (en) | 2020-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471617A (zh) | 用于在采用事务存储器的系统中管理缓存结构的技术 | |
KR100233207B1 (ko) | 캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템 | |
US7076613B2 (en) | Cache line pre-load and pre-own based on cache coherence speculation | |
US6085294A (en) | Distributed data dependency stall mechanism | |
US8370584B2 (en) | Predictive ownership control of shared memory computing system data | |
US5537574A (en) | Sysplex shared data coherency method | |
US8024522B1 (en) | Memory ordering queue/versioning cache circuit | |
US7472230B2 (en) | Preemptive write back controller | |
US8370609B1 (en) | Data cache rollbacks for failed speculative traces with memory operations | |
US7925839B1 (en) | System and method for performing memory operations in a computing system | |
US9892039B2 (en) | Non-temporal write combining using cache resources | |
CN112005222A (zh) | 鲁棒的事务性存储器 | |
US7194586B2 (en) | Method and apparatus for implementing cache state as history of read/write shared data | |
US20020169935A1 (en) | System of and method for memory arbitration using multiple queues | |
US8051247B1 (en) | Trace based deallocation of entries in a versioning cache circuit | |
US20020188821A1 (en) | Fast priority determination circuit with rotating priority | |
US6105108A (en) | Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter | |
US7779307B1 (en) | Memory ordering queue tightly coupled with a versioning cache circuit | |
US8301844B2 (en) | Consistency evaluation of program execution across at least one memory barrier | |
EP3721347A1 (en) | An apparatus and method for handling write operations | |
US6061765A (en) | Independent victim data buffer and probe buffer release control utilzing control flag | |
US20190236011A1 (en) | Memory structure based coherency directory cache | |
US20180307601A1 (en) | Managing cache operations using epochs | |
CN105408877A (zh) | 将经修改的高速缓存数据写入后备存储器同时保留写权限的方法及装置 | |
CN117472804B (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 |