CN112612725A - 用于处理缓存维护操作的装置和方法 - Google Patents

用于处理缓存维护操作的装置和方法 Download PDF

Info

Publication number
CN112612725A
CN112612725A CN202011025204.2A CN202011025204A CN112612725A CN 112612725 A CN112612725 A CN 112612725A CN 202011025204 A CN202011025204 A CN 202011025204A CN 112612725 A CN112612725 A CN 112612725A
Authority
CN
China
Prior art keywords
write
maintenance operation
cache
cache maintenance
request
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.)
Pending
Application number
CN202011025204.2A
Other languages
English (en)
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 CN112612725A publication Critical patent/CN112612725A/zh
Pending legal-status Critical Current

Links

Images

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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/0866Addressing 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/0871Allocation or management of cache space
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供了用于处理缓存维护操作的装置和方法。该装置具有用于发出请求的多个请求者元件和用于处理这种请求的至少一个完成者元件。提供了缓存层次结构,其具有多个级别的缓存来存储与存储器中的地址相关联的数据的缓存副本。请求者元件可被布置为发出指定存储器地址范围的缓存维护操作请求以便使得与指定的存储器地址范围相关联的数据块通过缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对一个或多个其他请求者元件可见。给定请求者元件可被布置为检测何时需要在缓存维护操作请求之前发出写入请求以便使得对于指定的存储器地址范围内的数据项执行写入操作,并且在该情况下生成要发出的组合写入和缓存维护操作请求来取代写入请求和后续缓存维护操作请求。接收到组合写入和缓存维护操作请求的接收方完成者元件于是可被布置为发起组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待写入操作完成。这可显著减小缓存维护操作的处理中的时延,并且可提供减小的带宽利用。

Description

用于处理缓存维护操作的装置和方法
技术领域
本技术涉及用于处理缓存维护操作的装置和方法。
背景技术
一种装置可包括多个元件,每个元件能够发出请求来访问数据,这些请求通常指定存储器地址以识别出该数据被存储或者将被存储在存储器内何处。为了改善访问时间,已知提供一种缓存层次结构,该缓存层次结构包括用于存储与存储器中的地址相关联的数据的缓存副本的多个级别的缓存。缓存层次结构中的一些缓存可以是与特定元件相关联的本地缓存,而其他缓存可以是多个元件可访问的共享缓存。
通常的情况是,由一个元件写入的数据需要对于装置内的至少一个其他元件可见。试图实现这一点的一种方式是使用缓存维护操作,其可以例如用于驱逐已被写入到缓存中但是比存储器中保存的数据更新的数据,使得写入数据随后被下推到缓存层次结构中的下一级别。通过将缓存维护操作请求传递到缓存层次结构中的一个或多个级别的缓存上,这可用于将先前写入数据推送到装置内的期望可见点。缓存维护操作通常可以指定将对其执行该操作的存储器地址范围,并且所确定的可见点可取决于所关注的存储器地址范围,以及需要具有该数据的可见性的特定元件。
然而,在处理用于将写入数据推送到期望的可见点的缓存维护操作时可能涉及相当大的时延。特别地,每次当在处理缓存维护操作时确定存在向缓存维护操作的指定地址范围内的地址的未决写入时,或者确定经历缓存维护操作的缓存中的数据需要被写出到缓存层次结构或存储器的更低级别时,则根据已知的技术,对缓存维护操作的进一步处理需要等待,直到更早的写入操作已完成为止,然后缓存维护操作于是才可继续。
期望减小与缓存维护操作的处理相关联的时延。
发明内容
在一个示例布置中,提供了一种装置,包括:多个请求者元件,用于发出请求;至少一个完成者元件,用于处理请求;缓存层次结构,包括多个级别的缓存,用于存储与存储器中的地址相关联的数据的缓存副本;其中:所述多个请求者元件中的给定请求者元件被布置为发出指定存储器地址范围的缓存维护操作请求,以便使得与指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对所述多个请求者元件中的一个或多个其他请求者元件可见;所述给定请求者元件响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所述指定的存储器地址范围内的数据项执行写入操作的需要,生成要发出的组合写入和缓存维护操作请求来取代所述写入请求和后续缓存维护操作请求;其中所述至少一个完成者元件之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件被布置为发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
在另一个示例布置中,提供了一种在装置内处理缓存维护操作的方法,包括:提供多个请求者元件来发出请求,至少一个完成者元件来处理请求,以及缓存层次结构,其包括多个级别的缓存,用于存储与存储器中的地址相关联的数据的缓存副本;布置给定请求者元件来发出指定存储器地址范围的缓存维护操作请求以便使得与指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点以便使得该数据块对所述多个请求者元件中的一个或多个其他请求者元件可见;响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所述指定的存储器地址范围内的数据项执行写入操作的需要,在所述给定请求者元件处生成要发出的组合写入和缓存维护操作请求来取代所述写入请求和后续缓存维护操作请求;并且使得所述至少一个完成者元件之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
在另外一个示例布置中,提供了一种装置,包括:多个请求者元件装置,用于发出请求;至少一个完成者元件装置,用于处理所述请求;缓存层次结构,包括多个级别的缓存装置,用于存储与存储器中的地址相关联的数据的缓存副本;其中:所述多个请求者元件装置中的给定请求者元件装置被布置为发出指定存储器地址范围的缓存维护操作请求,以便使得与指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对所述多个请求者元件装置中的一个或多个其他请求者元件装置可见;所述给定请求者元件装置响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所述指定的存储器地址范围内的数据项执行写入操作的需要,用于生成要发生的组合写入和缓存维护操作请求来取代所述写入请求和后续缓存维护操作请求;其中所述至少一个完成者元件装置之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件装置被布置为发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
附图说明
将参考在附图中图示的本技术的示例来仅作为说明进一步描述本技术,附图中:
图1是根据一个示例实现方式的装置的框图;
图2是根据一个示例实现方式图示出在组合写入和缓存维护操作请求的处理期间在请求者元件和完成者元件之间传递的各种信号的时序图;
图3是图示出根据第一示例场景可在主设备、互连和从属设备之间传递的信号的序列的时序图,但其中没有使用本文描述的技术的组合写入和缓存维护操作请求,而图4是同一示例场景的等同时序图,但其中使用了本文描述的技术的组合写入和缓存维护操作请求;
图5是图示出根据第二示例场景可在主设备、互连和从属设备之间传递的信号的序列的时序图,但其中没有使用本文描述的技术的组合写入和缓存维护操作请求,而图6是同一示例场景的等同时序图,但其中使用了本文描述的技术的组合写入和缓存维护操作请求;
图7是根据一个示例实现方式图示出本文描述的组合写入和缓存维护操作请求可用于主设备和互连以及互连和从属设备之间的通信的一者或两者中的各种情况的表格;
图8是图示出在一个示例实现方式中执行的过程的流程图;并且
图9是根据特定实现方式图示出为了确定创建组合写入和缓存维护操作请求的条件是否存在而执行的步骤的流程图。
具体实施方式
根据本文描述的技术,提供了一种装置,其具有可发出请求的多个请求者元件,以及用于处理这种请求的至少一个完成者元件。取决于实现方式,请求者元件可采取多种形式。它们可例如采取向存储器发出访问请求的主设备的形式,或者实际上可以是装置内的中间位置处的中间元件,例如在用于提供若干个主设备和一个或多个从属设备之间的连接的互连内。这种中间元件既可充当完成者元件来处理来自主设备的请求,也可充当请求者元件来向系统内的其他下游元件发出请求(下游元件是比所关注的请求者元件更靠近存储器的元件)。类似地,完成者元件可采取多种形式。它们可例如是用于处理从上游元件发出的访问请求的从属设备,这种从属设备的示例是用于控制对存储器的访问的存储器控制器。然而,如上所述,完成者元件也可以是装置内的中间元件,例如存在于用于在一个或多个主设备和一个或多个从属设备之间提供连接的互连内。
装置也提供一种缓存层次结构,该缓存层次结构包括用于存储与存储器中的地址相关联的数据的缓存副本的多个级别的缓存。
一个或多个请求者元件可能够发出缓存维护操作(cache maintenanceoperation,CMO)请求,这些CMO请求指定存储器地址范围,并且被用于使得与指定的存储器地址范围相关联的数据块通过缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对多个请求者元件中的一个或多个其他请求者元件可见。确定的可见点可取决于存储器地址范围所指定的存储器的存储器类型,以及需要对该存储器地址范围内的数据具有可见性的请求者元件的理解。虽然原则上确定的可见点可由缓存维护操作请求直接指定,但在一个示例实现方式中该可见点是基于关于存储器类型和需要具有数据的可见性的请求者元件的系统知识来确定的,并且因此确定的可见点对于不同的缓存维护操作请求可以变化。
虽然缓存维护操作请求所指定的存储器地址范围可取决于实现方式而变化,但其例如可以是足以把将被存储在缓存的缓存线内的一条缓存线那么多的数据识别为该数据块的存储器地址范围。因此,对于特定缓存的缓存维护操作的执行可涉及执行查找来确定由存储器地址范围识别的数据块是否被存储在该缓存内,并且如果是,则对于所识别的缓存线执行缓存维护操作。这可例如使得该缓存线中的比存储器中保存的副本更新的任何数据被从该缓存驱逐。经常,在这种情形中,数据的缓存线被驱逐,并且因此将被传播到缓存层次结构中的更低级别上或者传播到存储器。在驱逐过程期间,数据的清洁副本可被保留在缓存中,或者数据的副本可不被留在缓存中(例如通过使该缓存线无效)。术语“驱逐”在本文中将用于覆盖给定级别的缓存中的数据被从该给定级别的缓存推送到缓存层次结构中的更低级别或者推送到存储器的情形,无论清洁副本是否被保留在缓存中。
缓存维护操作请求本身随后可被传播,使得相同的缓存维护操作可在缓存的任何另外中间级别被执行,直到达到所确定的可见点为止。所确定的可见点可以本身是一级缓存,或者可以是系统内的超出缓存层次结构中的最终级别缓存的位置,例如存储器控制器内的缓冲器或者事实上是存储器本身。
根据本文描述的技术,能够发出这种缓存维护操作请求的给定请求者元件可被布置为检测何时需要在缓存维护操作请求之前发出写入请求以便使得对于指定存储器地址范围内的数据项执行写入操作,并且在这种情形中可被布置为生成要发出的组合写入和缓存维护操作请求来取代写入请求和后续缓存维护操作请求。存在各种情形,其中可确定有必要先发起写入操作,然后才可发出缓存维护操作请求。通常,这迫使需要发出写入请求,然后推迟缓存维护操作请求的发出,直到对于写入请求接收到完成信号为止。然而,根据本文描述的技术,通过允许给定的请求者元件生成组合写入和缓存维护操作请求而缓和了对于缓存维护操作的处理的这个潜在时延影响,并且因此在发出缓存维护操作请求时没有延迟。
取决于引起需要执行写入操作的条件,要写入的数据项可以是对于缓存维护操作指定的存储器地址范围中的数据的子集,或者该指定存储器地址范围中的所有数据。
接收到组合写入和缓存维护操作请求的接收方完成者元件可被布置为发起组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待写入操作完成。特别地,接收方完成者元件可被布置成使得其可在写入操作仍在进行中的同时开始处理要求的缓存维护操作。例如,接收方完成者元件可在与写入操作相关联的写入数据已被完成者元件接收和处理之前发起对于接收方完成者元件本地的缓存的识别的缓存线的所要求的缓存维护操作的执行。事实上,接收方完成者元件可能可以从事关于在经历缓存维护操作的本地缓存线的所有必要动作,并且对写入数据的后续处理被约束来确保写入数据不被以与缓存维护操作不一致的方式写入到在经历缓存维护操作的缓存线中。缓存维护操作完成响应因此实际上可在与写入操作相关联的数据已被接收方完成者元件处理之前被发出。类似地,接收方完成者元件可在其已接收到写入数据之前为写入操作发出写入完成响应,并且特别是可在一旦其已建立了确保随后接收的指定与和写入操作相关联的地址相同的地址的请求将被布置为访问与写入操作相关联的写入数据所要求的任何风险检查时发出写入完成响应。
因此,已发现对写入和缓存维护操作的处理通常可并行进行,并且经常的情况是对于写入操作的完成信号和对于缓存维护操作的完成信号可在时间上彼此相对接近地被发出。在任何情况下,由于接收方完成者元件可发起缓存维护操作的处理,而不必等待写入操作完成,所以这避免了在请求者元件处串行化请求的要求,并且特别是避免了请求者元件推迟发出缓存维护操作请求直到接收到写入完成信号为止的需要。因此,即使在可发出对于缓存维护操作的完成信号之前在接收方完成者元件处有要求一些延迟,但这与缓存维护操作请求直到在前写入操作完成为止都还没被请求者元件发出的情形相比也将是显著减小的时延。
作为进一步的益处,组合写入和缓存维护操作请求的使用减小了在请求者元件和完成者元件之间提供的路径中的带宽利用,因为可发出单个请求信号,而不是在两个不同的时间点发出两个分开的请求。这在处理对于写入操作和缓存维护操作发出的响应信号时也可产生进一步的带宽利用益处,因为能够并行处理这两个操作。特别地,可能不仅可以组合为写入操作发出的某些响应信号和/或为缓存维护操作发出的某些响应信号,而且事实上在一些情形中可以组合为写入操作和缓存维护操作发出的某些响应信号,因此产生组合写入和CMO响应。
还应当注意,组合写入和缓存维护操作请求的使用仍使得写入操作和缓存维护操作的底层特征能够被保留,因为接收方完成者元件仍可以标准方式处理写入操作和缓存维护操作,但通过本文描述的技术的使用能够比否则在使用请求者元件发出的串行化分开请求时可能的快得多地发起缓存维护操作的执行。
在一个示例实现方式中,接收方完成者元件被布置为在处理指定存储器地址的请求时发出完成信号,以指出接收方完成者元件已采取充分的步骤来确保该请求所要求的操作的结果将被多个请求者元件的至少子集观察到,多个请求者元件向接收方完成者元件发出指定该存储器地址的后续请求。接收方完成者元件被布置为向给定的请求者元件发出写入完成信号和单独的缓存维护操作完成信号,以使得给定的请求者元件能够独立地评估组合写入和缓存维护操作请求所要求的写入操作和缓存维护操作的进展。在一些实例中,可能该请求所要求的操作的结果需要被所有请求者元件观察到,但在其他实例中,可能不是所有请求者元件都需要观察到该操作的结果,并且在这些实例中,可在能够保证操作的结果被要求的请求者元件观察到时发出完成信号。
由于组合写入和缓存维护操作请求实际上在经由单个请求指定两个分开操作的执行,于是接收方完成者元件可被布置为响应于该单个组合请求发出分开的写入完成信号和缓存维护操作完成信号。然而,应当注意在一些实例中可能可以组合这两个不同的完成信号,只要可以按这样的方式来指定该组合完成信号:该方式使得其将被给定的请求者元件理解为既指出写入的完成也指出缓存维护操作的完成。这例如在如下情形中可能是有用的:写入完成和缓存维护操作完成两者都在实质上相同的时间发生,并且因此带宽的减小可通过组合完成信号来实现,而不会在向请求者元件发出任一完成信号时赋予任何可感知的延迟。
在一个示例实现方式中,组合写入和缓存维护操作请求将具有关联的事务标识符并且该事务标识符用于返回到给定请求者元件的响应中以使得请求者元件能够将响应与发起的请求匹配起来。因此,在这种实现方式中,写入完成信号和分开的缓存维护操作完成信号两者都可被布置为使用如组合写入和缓存维护操作请求中指定的相同事务标识符。
在一个示例实现方式中,接收方完成者元件可被布置为在组合写入和缓存维护操作请求的处理期间发出多个信号。虽然在一些实例中可能所有这些信号都是被发出到同一上游元件,但可能不总是这样,并且实际上可能某些信号必须被发出到与其他信号不同的上游元件。在一个示例实现方式中,组合写入和缓存维护操作请求可提供用于确定每个信号的目标元件的目标指示字段。
作为示例,在一个实现方式中,目标指示字段可指出何时接收方完成者元件将从其获得与写入操作相关联的数据项的源元件是与生成组合写入和缓存维护操作请求的给定请求者元件不同的元件,并且在该情况下接收方完成者元件可被布置为直接向该不同元件发出数据拉取信号以触发该不同元件将该数据项发送到接收方完成者元件。
通过提供这种机制,这可在使用组合写入和缓存维护操作请求时提供对装置内的直接写入传送的支持。作为具体示例,给定请求者元件可以是互连内的节点并且接收方完成者元件可以是从属节点。然而,可能与写入操作相关联的写入数据仍存在于上游主设备处,即,形成给定请求者元件的互连内的节点的上游。在这种实例中,目标指示字段可用于向从属设备指出其可直接从主设备获得写入数据,并且在该实例中从属设备可直接向主设备发出数据拉取信号。这可通过减少从主设备获得写入数据所花费的时间而带来性能的改善。
在一个示例实现方式中,该不同元件是向给定请求者元件发出初始组合写入和缓存维护操作请求的元件,并且给定请求者元件对该初始组合写入和缓存维护操作请求的处理导致给定请求者元件向接收方完成者元件发出组合写入和缓存维护操作请求。
然而,可能不总是这样的情况,即接收方完成者元件将被允许直接从发出初始组合写入和缓存维护操作请求的不同元件获得数据。例如,可能是这样的情况,即对于至少一类写入操作,该装置被布置为禁止直接从该不同元件获得数据项,并且当组合写入和缓存维护操作请求涉及这种写入操作时,目标指示字段被设置为识别出要从给定请求者元件获得该数据项。因此,目标指示字段可用于直接控制接收方完成者元件要从何处获得写入数据。
然而,目标指示字段也可用于其他用途。例如,目标指示字段可指出何时接收方完成者元件在写入操作的处理期间发出的第一信号的目标元件不同于接收方完成者元件在缓存维护操作的处理期间发出的第二信号的目标元件。特别地,当处理仅指定关联的单个操作的标准形式的请求时,可以预先确定响应信号需要被发送到何处。然而,组合写入和缓存维护操作请求既指定写入操作也指定单独的缓存维护操作,并且可能在执行写入操作时发出的响应信号的至少一者的目标不同于在处理缓存维护操作时发出的响应信号的至少一者的目标。通过使用目标指示字段,这使得这种差异能够被识别,从而使得接收方完成者元件能够确定其在组合写入和缓存维护操作请求的处理期间生成的各种信号的适当目标。
如前所述,确定的可见点可取决于被访问的存储器区域以及需要具有数据的可见性的请求者元件而变化。缓存维护操作也可用于识别出数据应当被推送到系统内的持续点,即识别出确定的可见点是持续点。持续点(point of persistence,PoP)是这样的点:在该点处,即使电力被从系统去除,也可保证数据被保留。在一些实例中,持续点可被提供有备用电源,使得在到系统的电力丢失的情况下,备用电源提供充分的电力来供存储在持续点处的数据被迁移到非易失性存储器。这在一些实例中可允许某个级别的缓存形成持续点,或者存储器控制器内的写入缓冲器形成持续点。有时,持续点可被指定为深度持续点,深度持续点是即使备用电力故障也将确保数据的保留的持续点。深度持续点的一个示例将是非易失性存储器本身。
当缓存维护操作用于将数据推送到持续点时,可能是这样的情况,即需要发出持续信号来识别出与指定的存储器地址范围相关联的数据块何时到达了持续点。这通常将发生在已为缓存维护操作发出了完成信号之后的某时。
当试图实现将数据推送到持续点并且因此其中确定的可见点是该持续点的这种缓存维护操作时,在处理写入操作时发出的某些信号可能需要被发出到与在处理缓存维护操作时发出的某些信号不同的元件。例如,第一信号可以是由接收方完成者元件发出来试图获得数据项的数据拉取信号,并且第二信号可以是被发出来识别出与指定的存储器地址范围相关联的数据块已到达持续点的持续信号,并且这些第一和第二信号的目标可以不同。作为示例,当来自主设备的请求被互连内的节点接收到,然后该节点向从属设备传播请求时,将从其获得写入数据的元件可能不同于应当接收持续信号的元件。纯作为具体示例,可能需要从互连内的节点获得写入数据,但持续信号应当被直接发回到原始主设备。相反的情形也可适用。
在一个示例实现方式中,至少当处理写入操作和缓存维护操作之一时,接收方完成者元件被布置为在多个信号将被发出到同一目标元件时将这多个信号组合成单个组合信号。因此,在处理写入操作时产生的一个或多个信号可被组合,并且类似地在执行缓存维护操作时产生的一个或多个信号可被组合。作为另一示例,在处理写入操作时生成的信号可与在处理缓存维护操作时生成的信号相组合,因此产生组合写入和CMO响应信号。通过在可能时组合信号,这可带来装置内的信号路径中的带宽使用的减少,这进而可增大整体吞吐量。
有各种不同的场景可发生,这些场景使得给定的请求者设备确定发出组合写入和缓存维护操作请求而不是分开的写入请求和后续缓存维护操作请求,是适当的。作为一个示例,缓存维护操作请求可识别也被给定请求者元件对于与请求者元件相关联的给定级别的缓存执行的缓存维护操作,并且给定请求者元件可被布置为在对于给定级别的缓存的缓存维护操作的执行要求从该给定级别的缓存驱逐数据项时检测在缓存维护操作请求之前发出写入请求的需要。因此,缓存维护操作的本地执行本身可引起需要驱逐写入数据的情形,并且因此对于写入请求存在需要。然而,在这种实例中,通过发出组合写入和缓存维护操作请求可显著减小时延影响,从而避免了在写入请求之后串行化缓存维护操作请求的需要,并且特别是避免了给定请求者元件延迟缓存维护操作请求的发出直到对于写入请求接收到完成信号为止的需要。
作为另一示例,给定请求者元件可包含缓冲器来在将未决写入请求从给定请求者元件发出之前保存这些未决写入请求,并且给定请求者元件可被布置为在缓冲器中的未决写入请求指向缓存维护操作请求的指定存储器地址范围内的地址时检测在缓存维护操作请求之前发出写入请求的需要。在使用本文描述的技术之前,通常将必须是未决写入请求首先被发出,并且给定请求者元件随后等待接收写入操作的完成信号,然后给定请求者元件于是才可发出缓存维护操作请求。然而,当使用本文描述的技术时,该延迟被避免了,因为可发出组合写入和缓存维护操作请求,允许接收方完成者设备开始缓存维护操作的处理,而不必等待写入操作完成。
作为另外一个示例,当给定请求者元件检测到将数据项写入到持续点的需要时,给定请求者元件可被布置为发出组合写入和缓存维护操作请求,从而缓存维护操作的执行将使得数据项被推送到持续点。特别地,当确定有必要将数据项写入到持续点时,通常写入请求本身不可能指定该数据需要被写入到持续点,而是单独的缓存维护操作需要被执行来实现该效果。然而,当使用本文描述的技术时,不需要推迟缓存维护操作请求的发出直到针对写入接收到完成信号为止,取而代之可直接从给定请求者元件发出组合写入和缓存维护操作请求。
如前所述,请求者元件和完成者元件可采取多种形式。在一个示例实现方式中,给定请求者元件是用于生成被互连电路处理的事务的主设备,该互连电路包含接收由主设备发出的组合写入和缓存维护操作请求的接收方完成者元件。
在另一示例实现方式中,给定请求者元件是互连电路内的中间元件,该中间元件既充当完成者元件来响应于来自上游元件的请求而执行缓存维护操作,也充当给定请求者元件来向下游完成者元件发出组合写入和缓存维护操作请求。
在这种实现方式中,来自上游元件的请求可采取多种形式。例如,该请求可以仅指定缓存维护操作的执行。然而,或者,来自上游元件的请求也可采取组合写入和缓存维护操作请求的形式。
在一个示例实现方式中,当处理组合写入和缓存维护操作请求时,接收方完成者元件响应于确定数据项需要被传播到下游元件,而确定缓存维护操作是否也需要被下游元件执行。特别地,虽然写入数据可能需要被传播到下游元件,但可能不需要在超出当前接收方完成者元件之外执行缓存维护操作。例如,当前接收方完成者元件可与缓存层次结构中的最终级别缓存相关联,并且通过对于该最终缓存级别执行缓存维护操作,可确定不需要将缓存维护操作传播到下游元件。然而,当缓存维护操作指定位于超出缓存层次结构的最终级别之外的持续点时,可能仍有必要向下游元件发出缓存维护操作。
作为另一示例,即使缓存维护操作没有试图将数据推送到持续点,在某些情形中也可能需要具有数据的可见性的请求者元件之一是没有利用缓存层次结构的请求者元件,并且因此例如可具有超出缓存层次结构直接到存储器控制器中的路径。在这种情形中,可能同样有必要将缓存维护操作推送到超出缓存层次结构的最终级别以便确保数据到达要求的可见点,在此情况下是存储器控制器。
在一个示例实现方式中,在确定缓存维护操作也需要被下游元件执行时,接收方完成者元件被布置为或者发出进一步的组合写入和缓存维护操作请求到下游元件,或者发出写入请求到下游元件,随后是到下游元件的后续的缓存维护操作请求。因此,系统中的接收到组合写入和缓存维护操作请求并且确定需要将写入和缓存维护操作两者都传播到下游元件的元件有可能或者对于到下游元件的该向前请求维持组合写入和缓存维护操作请求,或者分割请求以使得分开的写入请求和缓存维护操作请求被发出到下游元件。
现在将参考附图描述具体示例。
图1是根据一个示例实现方式的装置的框图。该装置包括多个主设备10、20、30,它们经由互连40耦合到从属设备55。从属设备在此示例中耦合到主存储器60。从属设备可采取多种形式,但例如可以是存储器控制器。将会明白典型系统可包括更多主设备,并且事实上可包括多个从属设备。在某些主设备内可提供一个或多个级别的缓存,并且事实上在互连内可提供一个或多个级别的缓存。另外,在一些实现方式中,某个级别的缓存可能可以存在于互连之外,例如与从属设备相关联。
在示出的示例中,假定主设备10、20是完全一致主设备,其缓存15、25与缓存层次结构的更低级别中的缓存保持一致,例如在互连40内提供的系统缓存50。为了维持此一致性,提供了缓存一致性电路45,其可采用缓存一致性协议以便试图确保完全一致主设备10、20的每一者具有在缓存层次结构内缓存的数据的一致视图。将会理解可以使用多种不同的缓存一致性协议,并且缓存一致性电路可采用各种机制来试图维持一致性。例如,缓存一致性电路45可采用基于监听的缓存一致性机制,由此响应于来自一致主设备10、20之一的请求,其可发出监听请求到一个或多个其他完全一致主设备10、20以便确定这些其他一致主设备是否具有请求的一致主设备在试图访问的数据的缓存副本。虽然完全一致主设备自身可具有多于一个级别的缓存,但为了简单,图1中示出了单个级别的缓存,并且因此完全一致主设备10具有关联的本地缓存15并且完全一致主设备20具有本地缓存25。在缓存层次结构中的更低级别,在互连40内提供了系统缓存50,并且缓存一致性电路45确保各种缓存15、25、50的内容之间的一致性,使得每个完全一致主设备具有数据的一致视图。
应当注意,并非所有主设备都需要是完全一致主设备,并且作为示例示出了输入/输出(I/O)一致主设备30。这种I/O一致主设备可以具有或者不具有本地缓存,例如图1中所示的缓存35,但如果其确实具有缓存,则该缓存35的内容不被互连中的缓存一致性电路45保持一致,并且因此例如缓存35将不是来自缓存一致性电路45的任何监听请求的对象。如果由I/O一致主设备30生成的数据被使得对于系统内的其他设备可见,则在I/O一致主设备30上执行的软件将需要将该数据从一致主设备30写出,这可例如导致数据被写入操作到主存储器60。
I/O一致主设备可用于将图1中所示的装置耦合到上游网络或者上游组件70。纯作为具体示例,I/O一致主设备30可以是用于将图1中所示的装置连接到形成上游网络70的PCIe网络的PCIe接口。
如图1中所示,当考虑装置内的一对组件时,更靠近存储器的组件可被称为下游组件并且更远离存储器的组件可被称为上游组件。因此,缓存一致性电路45当与主设备10、20、30相比时将是下游组件,但当相对于从属设备55来考虑时将是上游组件。
在操作期间,可能需要使得由装置内的组件生成的某些数据项对于可请求对该数据的访问的其他组件可见。为了促进这一点,可能有必要将该数据推送过缓存层次结构到装置内的所确定的可见点。所确定的可见点可取决于与所关注的数据相关联的存储器区域,和/或需要具有该数据的可见性的元件而变化。例如,可见点可以是系统内的一致点或者串行化点,其可例如在缓存一致性电路45和关联的系统缓存50处。虽然如果需要具有该数据的可见性的所有请求者设备都能够访问系统缓存,则系统缓存级别50可提供适当的下游可见点,但如果需要具有数据的可见性的任何主设备不使用系统缓存,则可能可见点有必要位于装置内的更下游位置,例如在从属设备级别55处。这可能例如是如下情况:I/O一致主设备30需要具有所关注数据的可见性,但不访问系统缓存50,而是绕过系统缓存并且经由从属设备55直接访问主存储器60。可能从属设备包括某种本地缓冲,写入数据在被写出到主存储器之前可被存储在其中,并且在该实例中,从属设备55内的那些写入缓冲器可被视为写入数据需要被推送到的可见点。
在一些实例中也有这样的情况,即写入数据需要被写入到装置内的持续点,使得可以保证如果电力被从系统去除则数据将不会丢失。虽然非易失性存储器将是持续点的示例,但有时可以布置更上游的组件来提供持续点。例如,从属设备55内的写入缓冲器可被提供有备用电力,足以确保在来自系统的主电力丢失的情况下,备用电力将允许写入缓冲器中的任何数据被写出到主存储器60。类似地,在一些实例中,系统缓存50可被提供有这种备用电力,足以确保系统缓存中的任何内容在电力故障的情况下可被写出到存储器。在一些实例中,在持续点和深度持续点之间进行区分,深度持续点是即使备用电力故障也可确保数据被保留的持续点。深度持续点的示例将是非易失性存储器本身。
持续点因此可被视为期望可见点的具体示例,并且将存在多种情形,其中写入数据有必要被推送到期望的可见点。通常,不可能使用写入操作本身来确保数据被写入到系统内的特定可见点。例如,主设备发出的数据可被缓存在处于缓存层次结构中的比与要求的可见点相关联的级别更高级别的缓存级别内。因此,已知使用缓存维护操作作为用于将数据推送到期望的下游可见点的机制。缓存维护操作可对于特定缓存级别执行,然后,如果该缓存级别是期望可见点的上游,则执行缓存维护操作的请求可被继续传播通过缓存层次结构,直到缓存维护操作的执行已使得数据到达期望的可见点为止。在期望的可见点是缓存层次结构内的特定级别的情形中,则不需要超出缓存层次结构中的该级别执行缓存维护操作。然而,如前所述,在一些实例中,需要具有数据的可见性的一个或多个主设备可不访问缓存层次结构,并且如果是这样的情况,则缓存维护操作可能需要被继续传播到超出缓存层次结构的最低级别,以便确保所关注的数据被推送到要求的可见点。如果缓存维护操作被用于将数据推送到持续点,其中持续点超出缓存层次结构中的最低级别,则也可能例如是这样的情况。
如果在执行这种缓存维护操作(CMO)时,遇到进行中的写入操作,或者该缓存维护操作在特定缓存中的执行导致需要将数据从该缓存驱逐,并且因此需要从该缓存发出写入请求,则通常缓存维护操作的向前传播有必要暂缓在该点,直到在前写入请求已被处理为止。特别地,在将缓存维护操作请求继续传播到下游组件之前,通常有必要等待接收关于该较早写入请求的完成响应。然而,这在缓存维护操作的处理中引起了显著的时延问题。根据本文描述的技术,通过以下方式来缓和了这个时延问题:允许系统内的请求者元件检测需要在缓存维护操作请求之前发出写入请求的情形,并且在该实例中生成组合写入和缓存维护操作请求,该组合写入和缓存维护操作请求可被发出到系统内的接收方完成者元件以便处理。接收方完成者元件随后能够发起缓存维护操作的处理,而不必等待写入操作完成。当与要求写入操作在缓存维护操作请求被发出之前就完成的先前技术相比时,这可显著减小时延。另外,通过使得能够发出单个请求信号而不是两个分开的请求信号,这种方案可减小系统内的带宽使用。
图2是根据一个示例实现方式图示出组合写入和CMO请求的处理的时序图。如图所示,请求者元件100可能希望与完成者元件105通信。请求者元件可采取多种形式,并且因此例如可以是主设备10、20、30,或者主设备和从属设备之间的某个中间节点,例如包含缓存一致性电路45的节点。类似地,完成者元件可采取多种形式,并且因此例如可以是从属设备55,或者可以是中间节点,例如缓存一致性电路45。
如图2中由气泡110示出的,在某个时间点,请求者元件作出将写入请求和CMO请求组合成被传播到完成者元件105的单个写入和CMO请求的决定,如线条115所示。完成者元件105随后检测执行写入操作并且也执行CMO操作的需要,并且可发起两个操作的处理。在处理写入操作的同时,一旦完成者元件105确定其具有充分的缓冲器空间来接收写入数据,其就可发出数据拉取请求120到请求者元件100,这于是导致写入数据被从请求者元件发出到完成者元件,如线条130所示。另外,一旦完成者元件已建立了将确保请求者元件发出的用于访问与写入操作相关联的相同的存储器地址的后续请求将被完成者元件处理以使得请求者元件访问写入数据(即,将通过路径130提供的写入数据)的任何要求的风险检查,则完成者元件可发出如线条125所指示的写入完成信号以向请求者元件识别出写入操作被认为已完成。请求者元件100在其处于向同一地址发出后续请求的状态之前需要等待接收写入完成信号。
如图2中所指示,如果希望,数据拉取和写入完成信号可被组合成从完成者元件105发出到请求者元件105的单个响应信号,从而通过避免发送两个分开的信号的需要而减小了带宽使用。这例如在以下情况下可以是适当的:到完成者元件具有缓冲器空间可用来接收写入数据之时,其也已采取了必要的步骤来确保写入数据将是发出到该完成者元件指定相同地址的后续请求可观察到的。
在处理写入操作的同时,完成者元件105也可开始处理CMO。CMO的执行可涉及在完成者元件的任何本地缓存中执行查找以确定与CMO请求相关联的数据是否已被缓存在本地缓存中并且随后对于包含该数据的缓存线采取任何必要的动作以便实现缓存维护操作。与执行写入操作的方式几乎相同,其也可涉及建立地址风险检查以确保所关注的数据对于由将具有该数据的可见性的请求者元件发出到完成者元件的任何后续请求将是可观察到的。通常,CMO请求可为可被存储在单个缓存线内的数据块识别存储器地址范围,并且因此基于该存储器地址范围信息的查找可用于识别在缓存内是否有存储所关注的数据的缓存线。关联的写入操作可涉及在该缓存线中的该数据的特定部分,或者本身也可涉及整个缓存线。因此,将会看出,为了发出写入完成信号而需要建立的地址风险检查可与为了对于CMO发出完成信号而需要建立的地址风险检查实质上相同,并且因此在一些实例中,关于CMO的完成信号可能够与关于写入的完成信号紧邻着被发出,例如图2中由线条135指示的CMO完成信号。事实上,在一些实例中,CMO完成信号可能可以在写入完成信号之前被发出,例如因为写入完成信号在被格式化和发送时可能较晚。
然而,有必要对于CMO的完成和写入操作的完成都发出指示,因为它们实质上是由单个写入和CMO请求识别的两个分开的操作。
通过路径115传递的写入和CMO请求通常将指定事务ID,并且该事务ID将被包括在路径125上的写入完成信号和路径135上的CMO完成信号中,以使得请求者元件能够将完成信号与原始请求匹配。
从图2将会注意,CMO完成信号可在写入数据被完成者元件接收到之前就被发出,并且CMO的处理可在写入操作完成之前开始。当与在从请求者元件发出CMO请求之前将必须等待接收写入完成信号的先前方案相比时,这引起了CMO的处理中的显著时延减小。
如前所述,请求者元件100在向相同地址发送任何后续请求之前将需要等待接收写入完成信号125。然而,请求者元件在向相同地址发出这种后续请求之前可能需要或者不需要也等待CMO完成请求。在一些情形中,这可能不是必要的,并且一旦写入完成信号125被接收到,无需等待接收CMO完成信号135,请求者元件就可能够发出后续请求到相同地址。然而,如果CMO是作为用于通过屏障的机制被执行的,则系统可被布置成使得任何后来请求将不被发出,直到CMO完成信号被接收到为止。因此,在一般意义上,在不等待CMO完成信号的情况下对后续请求的发送取决于目标存储器的存储器属性、体系结构实现、和/或是否在CMO之后存在屏障、或者CMO被用作在主设备处完成屏障序列的过程的一部分。
如前所述,在一些实例中,CMO可被用于将数据推送到持续点。在这种实例中,CMO请求可采取持续CMO请求的形式,并且组合写入和CMO请求115将识别出CMO是持续CMO还是普通CMO。在CMO在实现持续CMO的情况下,则如虚线140所指示,完成者元件105可被布置为一旦已确认作为CMO的对象的数据已被推送到持续点就向请求者元件发回持续信号。如果希望,可将持续信号与CMO完成信号相组合。将会明白,持续信号将需要在写入数据被接收到之后的某个点被发出,因为该写入数据将需要被写入在持续点处。持续点可在完成者元件105处,或者在一些实例中可在完成者元件105下游的组件处,在此情况下在完成者元件接收到写入数据和完成者元件在路径140上发出持续信号之间可存在更长的延迟。然而,在一些实现方式中,将只发出单个持续信号,并且其将从与持续点相关联的完成者元件发出,而不是通过任何居间元件路由回去。
虽然图2图示了组合某些写入响应信号和/或组合某些CMO响应信号的可能性,但也应当注意通过使用组合写入和CMO请求信号,使得完成者元件能够实质上并行处理写入操作和CMO两者,可发生某些写入响应可与某些CMO响应相组合的情形,因此产生可进一步减小带宽利用的组合写入和CMO响应信号。因此,纯作为示例,可生成单个组合信号来指示写入完成和CMO完成(组合写入完成和CMO完成信号),写入完成、数据拉取和CMO完成可被组合成单个信号(组合写入完成、数据拉取和CMO完成信号),数据拉取和CMO完成可被组合成单个信号(组合数据拉取和CMO完成信号),或者持续信号可与上述的任何组合相组合。
如早前参考图1所述,可能不只有单个请求者元件和单个完成者元件,因为请求可需要被传播过系统内的多个元件。图3图示了第一示例情形,其中请求需要被从主设备200传递到互连205,然后向前传递到从属设备210。在图3所示的示例中,假定不使用本文描述的技术,因此没有发送组合写入和CMO请求的能力。
在这个第一示例中,假定主设备在执行软件,并且在某个时点执行指令来在其本地缓存内执行CMO。在本地缓存中的CMO的执行期间,这使得从缓存驱逐缓存线,并且因此需要发出写入请求。于是如线条215所指示发出写入请求。这个写入请求的发出引起在向下游互连发出CMO请求时的延迟,因为主设备在其能够发出CMO请求之前需要等待写入操作的完成。
在此示例中,假定组合数据拉取和完成信号被互连205发出,如线条220所指示。响应于数据拉取,写入数据于是可被发出到互连,如线条225所指示,并且响应于完成信号,主设备现在可发出CMO请求以便将数据推送到从属设备。应当注意,如前所述,CMO请求本身可不指定数据需要被推送到何处,取而代之,系统信息可用于确定与数据相关联的存储器区域的类型,以及需要具有该数据的可见性的请求者元件,并且这将确定数据需要被推送到的可见点。然而,在此实例中,假定可见点是从属设备210。
在图3所图示的示例中,假定数据被分配在由互连提供的缓存中,例如图1所示的系统缓存50,并且因此互连在这个时间点不向从属设备210发出写入请求,或者写入数据。
然而,在接收到CMO请求时,互连在其关联的缓存中执行缓存维护操作,并且假定这个缓存维护操作的执行引起从互连缓存驱逐相关缓存线,即包括刚才被写入到缓存中的数据的缓存线。结果,写入请求被发出到从属设备,如线条235所指示。这个写入请求的发出实际上阻止了向下游从属设备发出CMO请求的能力,因为互连在发出CMO请求之前需要等待写入操作的完成。
同样,假定组合数据拉取和完成信号被从从属设备发送到互连,如线条240所指示,这使得写入数据能够被发出到从属设备,如线条245所指示,并且CMO请求随后能够被发出到从属设备,如线条250所指示。
CMO操作随后将被从属设备处理,并且当从属设备已采取必要的步骤时,完成信号可被发出,如线条255所指示,以指出CMO操作已完成。一旦完成信号已被互连接收到,则完成信号也可被从互连205发送到主设备200以指出通过线条230从主设备发出到互连的CMO请求的完成。
在CMO是持续CMO的情况下,从属设备可被布置为在数据已被写入到持续点时发出持续信号,并且在一个示例实现方式中可将该持续信号直接发回到主设备200,如线条265所指示。
如果从属设备确定CMO请求所针对的存储器的特定区域不是持续性存储器设备的一部分,则从属设备可被布置为发送持续响应,而不等待数据。这是因为持续响应没有功能上的意义,而可能是完成CMO协议流程所要求的。在这种情况下,从属设备可在持续响应中包括对不存在的持续性存储器的指示。
从图3将会明白,在从主设备到互连的通信和从互连到从属设备的通信中,都存在发出CMO请求同时等待在前写入操作的完成的延迟。
图4图示了相同示例,但是在主设备和互连设备都可发出组合写入和CMO请求的情形中。因此,同样假定主设备在执行使得CMO在其本地缓存中被执行的指令,并且这同样使得数据被从缓存驱逐,因此使得写入请求的发出成为必要。然而,不是在发出CMO请求之前发出写入请求,主设备200决定发出组合写入和CMO请求,如线条300所指示。CMO请求用于使得数据被推送到期望的可见点,并且同样假定期望的可见点是从属设备210。当互连205接收到组合写入和CMO请求时,其通过参考早前提及的系统信息可确定所关注的数据需要被推送到从属设备,并且因此在该时点知道数据将需要被写出到从属设备。因此,其可直接向从属设备210发出组合写入和CMO请求,如线条305所指示。这第二个写入和CMO请求可包括目标指示字段,该目标指示字段可用于识别从属设备在处理写入操作和CMO两者时将发出的各种响应应当被发送到何处。特别地,可能并非所有响应信号都需要被发送到相同元件。作为与图4相关的具体示例,如果CMO是持续性CMO,则可能持续信号可被直接发回到主设备200,但在此实例中,假定数据拉取请求需要被发送回到互连,而不能被直接发送回到主设备。
由于互连205已按这种方式设置了目标指示字段,所以其知道其需要获得写入数据本身,因此可向主设备发回数据拉取请求。在示出的示例中,数据拉取请求同样被与完成信号相组合,如线条310所指示,但在此实例中,完成信号需要指定其是写入完成信号,使得主设备可区分写入的完成和CMO的完成。
响应于通过线条310的数据拉取请求,主设备200于是可发出写入数据,如线条315所指示。
类似地,在从属设备处,从属设备可执行必要的步骤来完成写入操作,并且一旦缓冲器空间可用,则可向互连发回数据拉取请求和写入完成信号。同样,在此示例中,假定两个信号被组合成单个数据拉取和写入完成响应,如线条320所指示。一旦已从从属设备210接收到数据拉取请求,并且已从主设备200接收到写入数据,互连205就可向从属设备发出写入数据,如线条325所指示。
另外,如早前参考图2所述,从属设备210可在接收到组合写入和CMO请求时开始处理CMO,而不需要等待写入完成。从而,与早前论述的图3的示例中相比,可以早得多地发出CMO完成信号,如图4中的线条330所指示。在从从属设备接收到CMO完成信号时,互连205于是也可将CMO完成信号继续传播回到主设备,如线条335所指示。如早前参考图2也论述的,如果CMO是持续性CMO,则一旦从属设备确定数据已被写入到持续点,持续响应就可被发回到主设备,如线条340所指示。然而,如果组合写入和CMO请求指定的CMO不是持续性CMO,则将不需要发出持续信号。
根据对图3和图4的比较,将会明白对组合写入和CMO请求的使用可显著减小在这种系统内处理CMO操作时的时延。另外,组合写入和CMO请求的使用可显著减小主设备和互连以及互连和从属设备之间的信号路径中的带宽使用,因此改善系统内的吞吐量。
图5和图6图示了另一示例场景,同样首先没有使用组合写入和CMO请求,然后使用组合写入和CMO请求。然而,在此实例中,考虑了一种场景,其中允许从主设备到从属设备的直接写入传送。与早前示例一样,假定主设备执行指令来在其本地缓存中执行CMO,并且这使得缓存线被从该本地缓存驱逐。这使得写入请求被发出,如图5中的线条400所示。在此实例中,由于从主设备到从属设备的直接传送被允许,所以写入请求被直接从互连205继续传播到从属设备,如线条405所示。在一个示例实现方式中,一旦其已如前所述建立了必要的风险检查,关于写入的完成就可被从互连发出,如虚线410所指示。然而,在替换实现方式中,完成信号可改为直接被从从属设备发回到主设备,如线条415所指示。
在此实现方式中,由于写入数据可被从属设备直接从主设备获得,所以到主设备的直接数据拉取请求被从从属设备发出,如线条415所指示。这可以可选地与完成信号相组合,如果从属设备在向主设备提供完成信号,而不是互连205向主设备提供完成信号的话。
然而,此外,完成信号也需要被发出到互连,使得互连知道从属设备已完成了写入操作,如线条420所示。
响应于对数据拉取请求的接收,主设备200直接向从属设备发出写入数据,如线条425所指示。另外,在接收到关于写入的完成信号时,主设备随后可向互连发出CMO请求,如线条430所指示。
在接收到CMO请求时,并且一旦已从从属设备接收到指出从属设备已完成了写入操作的完成信号,于是互连205就可将CMO请求继续传播到从属设备,如线条435所指示。
一旦CMO已被从属设备执行,则完成信号就可被发回到互连,如线条440所指示。然后,互连可向主设备200发回完成信号,如线条445所指示,以指出主设备发出的CMO请求现在已完成。与之前一样,如果CMO指定持续性CMO,则可从从属设备向主设备发回持续响应以识别出所识别的缓存线中的数据已被写入到持续点。
图6是等同时序图,但图示了使用组合写入和CMO请求的示例。因此,当本地缓存中的CMO的执行引起缓存线的驱逐时,主设备200决定发送组合写入和CMO请求,如线条500所指示。与参考图4论述的早前示例一样,互连于是可将组合写入和CMO请求继续传播到从属设备210,如线条505所指示,并且也可以可选地向主设备200发出写入完成响应,如线条510所指示。如参考图4也论述的,互连发出的组合写入和CMO请求可包括目标指示字段来提供可被从属设备用来确定从属设备生成的某些响应应当被发送到何处的某些信息。在此实例中,目标指示字段可用于识别出支持直接写入传送,并且因此直接数据拉取请求可被发出到主设备200。目标指示字段也可用于区分在处理写入操作时可发出的信号和在处理CMO时可发出的信号的目标,因为可能这些信号的目标取决于是写入操作在被执行还是CMO在被执行而不同。
如图6中所示,一旦从属设备已确定其具有缓冲器空间来接收写入数据,其就直接向主设备发送回数据拉取请求,如线条515所指示。如果从属设备而不是互连也发出写入完成信号,则从属设备可直接向主设备发回该写入完成信号,并且如果希望,此写入完成信号可与数据拉取信号相组合(按照图6中所示的示例)。写入完成信号也被发回到互连以告知互连写入操作已被从属设备完成,如线条520所指示。
从属设备可执行缓存维护操作,而不等待写入操作完成,并且一旦从属设备已对于缓存维护操作采取了必要的步骤,就可向互连发回CMO完成信号,如线条530所指示。
主设备被布置为响应于数据拉取信号,则直接向从属设备发出写入数据,如线条525所指示。
一旦互连信号从从属设备接收到CMO完成信号,则其可向主设备发回CMO完成信号,如线条535所指示。
与其他示例一样,在CMO是持续性CMO的情形中,持续信号可被从从属设备直接发回到主设备,其中一旦从属设备确定了写入数据已被写入到期望的持续点,持续信号就被发出。在图6所图示的示例中,假定从属设备是持续点,并且因此在接收写入数据和能够发出持续信号之间存在相对较短的延迟。然而,如果持续点超出从属设备,并且因此写入数据需要被从属设备继续传播到下游元件,则从属设备将不能够发出持续信号,直到其已从下游元件接收到对于数据已被写入到持续点的确认为止,并且因此在该情况下在从属设备接收写入数据和从属设备能够发出持续信号之间将有更多延迟。
根据对图5和图6的比较,将会看出通过使用组合写入和CMO请求,可实现时延的显著减小。另外,通过对于写入操作支持直接写入传送,通过避免经由中间节点路由某些信号的需要,并改为允许从主设备到从属设备的单跳数据传送,可实现进一步的性能益处。
图7是图示出当考虑从主设备到互连的通信和从互连到从属设备的后续通信时可使用组合写入和CMO请求的各种方式的表格。示出的情况1是在早前论述图4和图6时使用的,其中主设备向互连发送组合写入和CMO请求,而且互连也向从属设备发送组合写入和CMO请求。情况2和3图示了主设备向互连发出组合写入和CMO请求,但互连不向从属设备发出组合写入和CMO请求的场景。特别地,根据情况2,互连可分离写入请求和CMO请求并且因此不发出组合写入和CMO请求。在情况3中,互连可决定不需要超出互连传播CMO,因为确定可保证数据到达期望的可见点,而没有任何执行下游缓存维护操作的需要。在该实例中,其可只向下游从属设备发出写入请求。
情况4图示了另一示例,其中标准CMO请求被从主设备发出到互连,即其中不需要从主设备向互连发送写入请求。然而,当在互连处处理CMO时,互连可确定需要在CMO请求之前发出写入请求,例如因为在互连处对CMO的执行引起缓存线被从互连的缓存驱逐。在此实例中,其可以选择从互连向从属设备发出组合写入和CMO请求以便减小在处理下游CMO请求时的时延。
作为图7中没有示出的另一示例,有可能组合写入和CMO请求被从主设备发出到互连,但互连确定不需要向下游发送任何进一步请求。例如,互连可能够将数据缓存在其本地缓存中,并且该本地缓存可表示期望的可见点。因此,不需要向下游传播写入操作或CMO。
图8是根据一个示例实现方式图示出本文描述的装置执行的步骤的序列的流程图。在步骤600,请求者元件确定是否检测到指出要求到相同地址的写入操作和CMO的条件。如果否,则在步骤605执行正常处理。然而,如果在步骤600检测到该条件,则在步骤610,请求者元件向接收者元件发出组合写入和CMO请求。在步骤615,接收者元件将写入操作和CMO作为分开的操作来处理,但可在不等待写入操作完成的情况下发起CMO的处理。CMO因此可在写入数据已被接收者元件接收/处理之前就已完成。另外,CMO可能可以在对于写入操作发出完成信号之前就完成,假如接收者元件已建立了适当的风险检查来确保当写入数据随后被写入时,其不会被以与缓存维护操作的执行相冲突的方式被分配到接收者的本地缓存中的话。
在步骤600可出于多种原因而检测该条件。图9是图示出为了确定该条件是否存在而可执行的一系列检查的流程图。在步骤650,确定在请求者元件的本地缓存中的CMO的执行是否引起缓存线的驱逐。如果是,并且CMO需要被从请求者元件向下游传播,则过程可前进到步骤665,在这里组合条件被确定为存在并且因此请求者元件可发出组合写入和CMO请求。
如果从步骤650遵循“否”路径,则可确定CMO是否指定存储器地址,对于该存储器地址,在请求者元件的写入缓冲器中存在未决写入。在该条件中,将有必要将该未决写入从缓冲器冲刷以便向下游发送写入请求,并且同样过程可前进到步骤665,在这里组合条件被确定为存在。
如果从步骤655遵循“否”路径,则在步骤660可确定写入操作是否要求将数据推送到持续点。在这后一种情况中,可能没有未决的缓存维护操作,但当确定写入数据需要被写入到持续点时,通常写入请求本身不能引起该情况发生,并且写入请求后面需要跟随着持续性CMO请求以便使得数据被推送到持续点。在此情况下,同样过程可前进到步骤665,在这里组合条件被确定为存在。
如果在步骤650、655、660执行的检查都没有使得组合条件被检测到,则过程前进到步骤670,在这里组合条件被确定为不存在,并且如图8的步骤605所指示,正常处理被执行。
本文描述的技术可用于多种不同的系统中。作为一个具体示例用例,本文描述的组合写入和CMO请求可用于使用由英国剑桥的安谋国际科技(Arm Limited)开发的高级微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)的系统中,并且特别是使用AMBA 5CHI(一致集线器接口)体系结构规范的系统中。在该体系结构中描述的各种类型的写入操作和缓存维护操作可以是供利用本文描述的组合写入和CMO请求机制处理的候选。例如,可与某些CopyBack写入操作(缓存通常生成的写入操作)(例如WriteBack和WriteClean操作)以及某些NonCopyBack写入操作(例如WriteNoSnp和WriteUnique操作)相关联地采用该技术。这种写入操作可被允许是多种CMO的组合写入和CMO请求的对象,例如CleanShared(持续)CMO(其中要求清洁所有缓存副本(即,清洁到非脏状态)并且将脏数据写回到存储器(或PoP)),以及在一些实例中的CleanInvalid CMO(其中所有缓存副本被无效,并且要求将脏数据写回到存储器)。
本文描述的技术通过避免在写入请求之后串行化CMO请求的需要而使得能够显著减小CMO完成的时延,并且还通过使得能够将两个请求组合成单个请求而使得能够减小带宽利用。
在本申请中,词语“被配置为”被用于意指装置的元素具有能够执行定义的操作的配置。在这个上下文中,“配置”指的是硬件或软件的布置或者互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理装置可被编程为执行该功能。“被配置为”并不意味着为了提供定义的操作,装置元素需要被以任何方式改变。
虽然本文参考附图详细描述了本发明的说明性实施例,但要理解本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征进行各种组合。

Claims (21)

1.一种装置,包括:
多个请求者元件,用于发出请求;
至少一个完成者元件,用于处理所述请求;
缓存层次结构,包括多个级别的缓存,用于存储与存储器中的地址相关联的数据的缓存副本;
其中:
所述多个请求者元件中的给定请求者元件被布置为发出指定存储器地址范围的缓存维护操作请求,以便使得与所指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对于所述多个请求者元件中的一个或多个其他请求者元件可见;
所述给定请求者元件响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所指定的存储器地址范围内的数据项执行写入操作的需要,生成要发出的组合写入和缓存维护操作请求来取代所述写入请求和后续的缓存维护操作请求;
其中,所述至少一个完成者元件之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件被布置为发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
2.根据权利要求1所述的装置,其中:
所述接收方完成者元件被布置为在处理指定存储器地址的请求时发出完成信号,以指出所述接收方完成者元件采取了充分的步骤来确保该请求所要求的操作的结果将被所述多个请求者元件的至少子集观察到,所述多个请求者元件向所述接收方完成者元件发出指定该存储器地址的后续请求;并且
所述接收方完成者元件被布置为向所述给定请求者元件发出写入完成信号和分开的缓存维护操作完成信号,以使得所述给定请求者元件能够独立地评估所述组合写入和缓存维护操作请求所要求的写入操作和缓存维护操作的进展。
3.根据权利要求2所述的装置,其中,所述写入完成信号和所述分开的缓存维护操作完成信号两者都使用在所述组合写入和缓存维护操作请求中指定的相同事务标识符。
4.根据权利要求1所述的装置,其中:
所述接收方完成者元件被布置为在所述组合写入和缓存维护操作请求的处理期间发出多个信号;并且
所述组合写入和缓存维护操作请求提供用于确定所述信号中的每个信号的目标元件的目标指示字段。
5.根据权利要求4所述的装置,其中,所述目标指示字段指出何时所述接收方完成者元件将从其获得与所述写入操作相关联的数据项的源元件是与生成所述组合写入和缓存维护操作请求的所述给定请求者元件不同的元件,并且在该情况下所述接收方完成者元件被布置为直接向所述不同元件发出数据拉取信号以触发所述不同元件将所述数据项发送到所述接收方完成者元件。
6.根据权利要求5所述的装置,其中,所述不同元件是向所述给定请求者元件发出初始组合写入和缓存维护操作请求的元件,并且所述给定请求者元件对该初始组合写入和缓存维护操作请求的处理导致所述给定请求者元件向所述接收方完成者元件发出所述组合写入和缓存维护操作请求。
7.根据权利要求6所述的装置,其中,对于至少一种类型的写入操作,所述装置被布置为禁止直接从所述不同元件获得所述数据项,并且当所述组合写入和缓存维护操作请求涉及所述至少一种类型的写入操作时,所述目标指示字段被设置为标识要从所述给定请求者元件获得所述数据项。
8.根据权利要求4所述的装置,其中,所述目标指示字段指出所述接收方完成者元件在所述写入操作的处理期间发出的第一信号的目标元件何时不同于所述接收方完成者元件在所述缓存维护操作的处理期间发出的第二信号的目标元件。
9.根据权利要求8所述的装置,其中,所述确定的可见点是持续点,所述第一信号是由所述接收方完成者元件发出以试图获得所述数据项的数据拉取信号,并且所述第二信号是被发出以识别出与所指定的存储器地址范围相关联的数据块已到达所述持续点的持续信号。
10.根据权利要求4所述的装置,其中,至少当处理所述写入操作和所述缓存维护操作之一时,所述接收方完成者元件被布置为在多个信号将被发出到同一目标元件时将所述多个信号组合成单个组合信号。
11.根据权利要求10所述的装置,其中,所述接收方完成者元件被布置为将与所述写入操作相关联的至少一个信号和与所述缓存维护操作相关联的至少一个信号包含到所述单个组合信号中。
12.根据权利要求1所述的装置,其中:
所述缓存维护操作请求识别也由所述给定请求者元件对于与所述请求者元件相关联的给定级别的缓存执行的缓存维护操作,并且所述给定请求者元件被布置为在对于所述给定级别的缓存的缓存维护操作的执行要求从该给定级别的缓存驱逐所述数据项时,检测在所述缓存维护操作请求之前发出写入请求的需要。
13.根据权利要求1所述的装置,其中,所述给定请求者元件包含缓冲器来在从所述给定请求者元件发出未决写入请求之前保存这些未决写入请求,并且所述给定请求者元件被布置为在所述缓冲器中的未决写入请求指向所述缓存维护操作请求的所指定的存储器地址范围内的地址时,检测在所述缓存维护操作请求之前发出写入请求的需要。
14.根据权利要求1所述的装置,其中,当所述给定请求者元件检测到将所述数据项写入到持续点的需要时,所述给定请求者元件被布置为发出所述组合写入和缓存维护操作请求,从而所述缓存维护操作的执行将使得所述数据项被推送到所述持续点。
15.根据权利要求1所述的装置,其中,所述给定请求者元件是用于生成由互连电路处理的事务的主设备,所述互连电路包含接收由所述主设备发出的所述组合写入和缓存维护操作请求的所述接收方完成者元件。
16.根据权利要求1所述的装置,其中,所述给定请求者元件是互连电路内的中间元件,该中间元件既充当完成者元件来响应于来自上游元件的请求而执行所述缓存维护操作,也充当所述给定请求者元件来向下游完成者元件发出所述组合写入和缓存维护操作请求。
17.根据权利要求16所述的装置,其中,所述来自所述上游元件的请求也采取所述组合写入和缓存维护操作请求的形式。
18.根据权利要求1所述的装置,其中,当处理所述组合写入和缓存维护操作请求时,所述接收方完成者元件响应于确定所述数据项需要被传播到下游元件,而确定所述缓存维护操作是否也需要被所述下游元件执行。
19.根据权利要求18所述的装置,其中,在确定所述缓存维护操作也需要被所述下游元件执行时,所述接收方完成者元件被布置为发出以下之一:
到所述下游元件的进一步的组合写入和缓存维护操作请求;
到所述下游元件的写入请求,随后是到所述下游元件的后续的缓存维护操作请求。
20.一种在装置内处理缓存维护操作的方法,包括:
提供多个请求者元件来发出请求,至少一个完成者元件来处理所述请求,以及缓存层次结构,该缓存层次结构包括多个级别的缓存来存储与存储器中的地址相关联的数据的缓存副本;
布置给定请求者元件来发出指定存储器地址范围的缓存维护操作请求,以便使得与所指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对所述多个请求者元件中的一个或多个其他请求者元件可见;
响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所指定的存储器地址范围内的数据项执行写入操作的需要,在所述给定请求者元件处生成要发出的组合写入和缓存维护操作请求来取代所述写入请求和后续的缓存维护操作请求;并且
使得所述至少一个完成者元件之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
21.一种装置,包括:
多个请求者元件装置,用于发出请求;
至少一个完成者元件装置,用于处理所述请求;
缓存层次结构,包括多个级别的缓存装置,用于存储与存储器中的地址相关联的数据的缓存副本;
其中:
所述多个请求者元件装置中的给定请求者元件装置被布置为发出指定存储器地址范围的缓存维护操作请求,以便使得与所指定的存储器地址范围相关联的数据块通过所述缓存层次结构的至少一个级别被推送到确定的可见点,以便使得该数据块对所述多个请求者元件装置中的一个或多个其他请求者元件装置可见;
所述给定请求者元件装置响应于检测到在所述缓存维护操作请求之前发出写入请求以便使得对于所指定的存储器地址范围内的数据项执行写入操作的需要,用于生成要发出的组合写入和缓存维护操作请求来取代所述写入请求和后续的缓存维护操作请求;
其中,所述至少一个完成者元件装置之中的接收到所述组合写入和缓存维护操作请求的接收方完成者元件装置被布置为发起所述组合写入和缓存维护操作请求所要求的缓存维护操作的处理,而不等待所述写入操作完成。
CN202011025204.2A 2019-10-03 2020-09-25 用于处理缓存维护操作的装置和方法 Pending CN112612725A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/591,827 US10970225B1 (en) 2019-10-03 2019-10-03 Apparatus and method for handling cache maintenance operations
US16/591,827 2019-10-03

Publications (1)

Publication Number Publication Date
CN112612725A true CN112612725A (zh) 2021-04-06

Family

ID=72039413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011025204.2A Pending CN112612725A (zh) 2019-10-03 2020-09-25 用于处理缓存维护操作的装置和方法

Country Status (4)

Country Link
US (1) US10970225B1 (zh)
EP (1) EP3800555B1 (zh)
KR (1) KR20210040257A (zh)
CN (1) CN112612725A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
US20230385127A1 (en) * 2022-05-25 2023-11-30 Arm Limited Apparatus and method in which control functions and synchronization events are performed

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW548547B (en) * 1999-06-18 2003-08-21 Ibm Method and system for maintaining cache coherency for write-through store operations in a multiprocessor system
US9223705B2 (en) * 2013-04-01 2015-12-29 Advanced Micro Devices, Inc. Cache access arbitration for prefetch requests
GB2522057B (en) * 2014-01-13 2021-02-24 Advanced Risc Mach Ltd A data processing system and method for handling multiple transactions
US10157139B2 (en) * 2016-09-19 2018-12-18 Qualcomm Incorporated Asynchronous cache operations

Also Published As

Publication number Publication date
EP3800555B1 (en) 2022-03-30
KR20210040257A (ko) 2021-04-13
EP3800555A1 (en) 2021-04-07
US20210103525A1 (en) 2021-04-08
US10970225B1 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
JP6574779B2 (ja) 複数のトランザクションを扱うためのデータ処理システム及びデータ処理方法
US5796977A (en) Highly pipelined bus architecture
US7836144B2 (en) System and method for a 3-hop cache coherency protocol
CN108205510B (zh) 数据处理
US7284097B2 (en) Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
KR100371844B1 (ko) 데이타처리시스템
KR100387541B1 (ko) 멀티프로세서 시스템에서 캐쉬 코히어런시 유지 방법, 멀티프로세서 시스템 및 노드 제어기
JP2001167077A (ja) ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
JPH02255932A (ja) マルチプロセツサ・システム
JP5146844B2 (ja) 直列インターフェースバスにまたがってキャッシュコヒーレンシを維持するシステム及び方法
CN112612725A (zh) 用于处理缓存维护操作的装置和方法
US20030182508A1 (en) Methods and apparatus for speculative probing with early completion and early request
US7797495B1 (en) Distributed directory cache
US7089376B2 (en) Reducing snoop response time for snoopers without copies of requested data via snoop filtering
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
US20040268052A1 (en) Methods and apparatus for sending targeted probes
US20070073979A1 (en) Snoop processing for multi-processor computing system
US20190179758A1 (en) Cache to cache data transfer acceleration techniques
US10963409B2 (en) Interconnect circuitry and a method of operating such interconnect circuitry
US11086802B1 (en) Apparatus and method for routing access requests in an interconnect
EP4022445B1 (en) An apparatus and method for handling ordered transactions
JP6975338B2 (ja) 順序付けされた帯域幅を改善するプロトコルスキームのキャンセル及びリプレイ
JPH06282528A (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