CN115442430A - 向耦合到互连件的代理发送请求 - Google Patents
向耦合到互连件的代理发送请求 Download PDFInfo
- Publication number
- CN115442430A CN115442430A CN202210578715.XA CN202210578715A CN115442430A CN 115442430 A CN115442430 A CN 115442430A CN 202210578715 A CN202210578715 A CN 202210578715A CN 115442430 A CN115442430 A CN 115442430A
- Authority
- CN
- China
- Prior art keywords
- agent
- request
- interconnect
- agents
- target
- 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
Links
- 230000004044 response Effects 0.000 claims abstract description 84
- 238000004891 communication Methods 0.000 claims abstract description 70
- 239000003795 chemical substances by application Substances 0.000 claims description 368
- 238000012423 maintenance Methods 0.000 claims description 58
- 230000015654 memory Effects 0.000 claims description 42
- 238000000034 method Methods 0.000 claims description 33
- 230000005540 biological transmission Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 22
- 230000003068 static effect Effects 0.000 claims description 15
- 238000013519 translation Methods 0.000 claims description 15
- 230000009471 action Effects 0.000 claims description 11
- 239000000872 buffer Substances 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 4
- 230000014616 translation Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 8
- 230000009467 reduction Effects 0.000 description 5
- 102100031438 E3 ubiquitin-protein ligase RING1 Human genes 0.000 description 4
- 101000707962 Homo sapiens E3 ubiquitin-protein ligase RING1 Proteins 0.000 description 4
- 101000613347 Homo sapiens Polycomb group RING finger protein 3 Proteins 0.000 description 4
- 101000596093 Homo sapiens Transcription initiation factor TFIID subunit 1 Proteins 0.000 description 4
- 102100040920 Polycomb group RING finger protein 3 Human genes 0.000 description 4
- 102100035222 Transcription initiation factor TFIID subunit 1 Human genes 0.000 description 4
- 235000008694 Humulus lupulus Nutrition 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 102100037964 E3 ubiquitin-protein ligase RING2 Human genes 0.000 description 2
- 101001095815 Homo sapiens E3 ubiquitin-protein ligase RING2 Proteins 0.000 description 2
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 102100021820 E3 ubiquitin-protein ligase RNF4 Human genes 0.000 description 1
- 102100029520 E3 ubiquitin-protein ligase TRIM31 Human genes 0.000 description 1
- 101001107086 Homo sapiens E3 ubiquitin-protein ligase RNF4 Proteins 0.000 description 1
- 101000634974 Homo sapiens E3 ubiquitin-protein ligase TRIM31 Proteins 0.000 description 1
- 101100524347 Xenopus laevis req-b gene Proteins 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2895—Intermediate processing functionally located close to the data provider application, e.g. reverse proxies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- 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/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0875—Addressing 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
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种装置,该装置包括互连件,该互连件在耦合到该互连件的代理之间提供通信路径。提供了一种协调代理,该协调代理执行操作,该操作要求向多个目标代理中的每一个目标代理发送请求,并且从目标代理中的每一个目标代理接收响应,直到已经从目标代理中的每一个目标代理接收到该响应,该操作才能够完成。提供了存储电路,该存储电路可由协调代理访问,并且被配置为针对该协调代理可经由该互连件与之通信的每个代理存储用于该代理和该协调代理之间的通信的等待时间指示。该协调代理被配置为在执行该操作之前确定向目标代理中的每一个目标代理发送该请求的发送顺序,该发送顺序根据目标代理中的每一个目标代理的该等待时间指示而确定。
Description
背景技术
本技术涉及数据处理领域。
在数据处理系统中,若干代理可通过由互连件提供的通信路径彼此通信。对于可以彼此通信的每一对代理,可存在与该通信相关联的等待时间(例如,延迟或持续时间)。
发明内容
从一个示例来看,本技术提供了一种装置,该装置包括:
互连件,该互连件用于提供耦合到该互连件的代理之间的通信路径;
协调代理,该协调代理耦合到互连件并且被配置为执行操作,该操作要求向从耦合到互连件的代理中选择用于该操作的多个目标代理中的每一个目标代理发送请求,并且从多个目标代理中的每一个目标代理接收响应,直到已经从多个目标代理中的每一个目标代理接收到该响应,该操作才能够完成;以及
存储电路,该存储电路可由协调代理访问,并且被配置为针对该协调代理可经由互连件与之通信的每个代理存储用于该代理和协调代理之间的通信的等待时间指示;
其中协调代理被配置为在执行操作之前,确定向多个目标代理中的每一个目标代理发送请求的发送顺序,该发送顺序根据多个目标代理中的每一个目标代理的等待时间指示而确定。
从另一个示例来看,本技术提供了一种方法,该方法包括:
执行操作,该操作要求协调代理向从耦合到互连件的代理中选择用于该操作的多个目标代理中的每一个目标代理发送请求,并且从多个目标代理中的每一个目标代理接收响应,直到已经从多个目标代理中的每一个目标代理接收到该响应,该操作才能够完成,并且互连件提供耦合到该互连件的代理之间的通信路径;
针对协调代理可经由互连件与之通信的每个代理存储用于该代理和协调代理之间的通信的等待时间指示;以及
在执行操作之前,确定向多个目标代理中的每一个目标代理发送请求的发送顺序,该发送顺序根据多个目标代理中的每一个目标代理的等待时间指示而确定。
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见。
附图说明
图1示意性地示出了包括耦合到互连件的多个代理的系统的示例;
图2示意性地示出了包括网状网络的系统的示例;
图3和图4是示出由协调代理执行的操作的示例性定时的时序图;
图5示意性地示出了独立芯片上的互连件之间的通信的示例;
图6示意性地示出了CPU的部件中的一些部件的示例;
图7是示出执行涉及向多个目标代理发送请求和从多个目标代理接收响应的操作的方法的示例的流程图;
图8是示出响应于接收到维护请求而执行维护操作的方法的流程图;并且
图9是示出响应于发出高速缓存一致性请求而执行高速缓存一致性操作的方法的流程图。
具体实施方式
在参考附图讨论示例性具体实施之前,提供示例性具体实施和相关联的优点的以下描述。
在一些示例性配置中,提供了一种互连件,以提供耦合到该互连件的代理之间的通信路径,代理中的至少一个代理包括协调代理。每个代理可以直接连接到互连件,或者经由一个或多个中间部件耦合到互连件。代理中的每一个代理可以是能够发送或接收请求的任何部件;例如,代理可包括处理单元诸如中央处理单元(CPU)或图形处理单元(GPU)、存储器或其他存储结构和/或它们的相关联的控制电路,以及各种输入/输出设备(各种输入/输出设备可以例如由CPU或GPU所发出的请求来控制)。在(例如,经由通信路径)耦合到互连件的代理之间发送的请求和响应可以是非阻塞的(例如,在任何给定时间可存在多个请求通过互连件在途中)。在一些示例中,互连件可以是“片上”互连件,从而提供片上系统(SoC)内的部件之间的通信路径;互连件可以附加地(或另选地)提供不同芯片上的部件之间的通信路径。
如上所述,可存在与耦合到互连件的代理之间的通信相关联的等待时间。该等待时间可对整个装置的性能具有影响,并且具体地,发明人认识到,在直到已经发送请求并且已经从多个其他代理接收到响应时操作才能够完成的情况下,该等待时间的影响可能特别明显。例如,本技术的装置包括协调代理,该协调代理耦合到互连件并且被配置为执行操作,该操作要求向从耦合到互连件的代理中选择用于该操作的多个目标代理中的每一个目标代理发送请求,并且从多个目标代理中的每一个目标代理接收响应,直到已经从多个目标代理中的每一个目标代理接收到该响应,该操作才能够完成。
整个操作具有相关联的等待时间-指示完成操作所需的时间-并且在这种情况下,由于直到从目标代理中的每一个目标代理接收到响应时操作才能够完成,因此操作的总等待时间(部分地)取决于与每个请求的发送和每个响应的接收相关联的等待时间。此外,由于直到已经接收到所有响应该操作才能够完成,所以操作的总等待时间可影响整个装置的性能,特别是如果装置需要在执行一些其他操作之前完成该操作。
然而,发明人认识到,通过实施本技术可减少操作的总等待时间。具体地,提供了存储电路,该存储电路可由协调代理访问,并且被配置为针对协调代理能够与之通信的每个代理,存储用于该代理和协调代理之间的通信的等待时间指示。例如,存储电路可以形成协调代理的一部分,但也可以是协调代理可访问的独立结构。每个代理的等待时间指示可以是指示与协调代理和该代理之间的通信相关联的等待时间程度的任何值;例如,等待时间指示可以指示在一个或两个方向上沿该代理和协调代理之间的通信路径的通信的预期数量的周期的等待时间,或者它可以指示基于通信的等待时间的每个代理的等级。
在执行操作之前,协调代理被配置为确定向多个目标代理中的每一个目标代理发送请求的发送顺序。协调代理根据多个目标代理中的每一个目标代理的记录在存储电路中的等待时间指示来确定该发送顺序。通过基于目标代理中的每一个目标代理的等待时间指示来确定发送顺序,本技术可以利用在代理之间发送的请求和响应是非阻塞的事实,以减少与操作相关联的总等待时间,而不必减少与同目标代理中的每个单独的目标代理的通信相关联的等待时间。因此,本技术为整个装置提供了改善的性能。
这种技术允许减少操作的总等待时间而不必减少与目标代理中的每一个目标代理相关联的等待时间的事实可能是特别有利的,因为这允许在不需要对互连件的结构进行显著改变的情况下改善装置的性能。具体地,本技术只需要添加额外的存储电路来存储等待时间指示,以及在协调代理内添加额外的逻辑部件以允许该协调代理确定发送顺序-由互连件提供的通信路径本身不需要改变,并且目标代理也不需要改变。
在一些示例中,协调代理被配置为确定发送顺序,使得在请求被发送至具有较低等待时间的目标代理之前,请求被发送至具有较高等待时间的目标代理。这允许协调代理在从每个目标代理接收响应时,通过在将请求发送至其他目标代理之前将请求发送至预期延迟更长时间的那些目标代理来考虑期望的延迟。以此方式,可以减少与操作相关联的总等待时间,因为可以为与最大等待时间相关联的请求和响应给予最多的完成时间(例如,由于未完成的请求和响应之间的重叠增加)。发明人认识到,这样可以显著减少与操作相关联的总等待时间,而不需要减少与每个目标代理相关联的单独的等待时间,从而实现性能的改善。
由协调代理执行的操作可以是涉及向多个目标代理发送请求并且从目标代理接收响应的任何操作。然而,在一些示例中,操作包括维护操作,并且请求包括关于目标代理中的每一个目标代理的相应微体系结构执行维护动作的请求。这样的操作可以与大的等待时间相关联-特别是在目标代理的数量很大的情况下-因此,当操作包括这样的维护操作时,本技术可能特别有利。
在一些示例中,维护操作包括高速缓存维护操作,目标代理中的每一个目标代理的相应微体系结构包括目标高速缓存,并且维护动作包括以下各项中的一者:使目标代理中的每一个目标代理的相应目标高速缓存中的至少一个条目无效;以及更新存储在至少一个条目中的数据。高速缓存为存储结构,并且可以例如用于存储数据、指令、地址转换或存储在存储器中的任何其他信息的子集。高速缓存通常小于存储器,因此允许将来的访问存储在高速缓存中的信息的请求以相对于访问存储器中的该信息所需的时间减少的等待时间来执行。高速缓存的示例包括(但不限于):数据高速缓存,用于存储在执行后续的加载/存储指令时由处理电路访问的数据;指令高速缓存,用于存储将由处理器流水线的提取级提取的指令,以供处理电路执行;共享指令/数据高速缓存,这些共享指令/数据高速缓存存储指令和数据;转换后备缓冲器(TLB),这些TLB存储地址转换数据,用于将虚拟地址或中间物理地址转换为物理地址,或者将虚拟地址转换为中间物理地址;以及分支预测存储结构(分支预测高速缓存),用于存储由分支预测器在进行分支预测时使用的信息。相应高速缓存中的每一个相应高速缓存可以形成目标代理中的一者的一部分-例如,CPU或GPU可包括一个或多个数据或指令高速缓存、共享指令/数据高速缓存、TLB(例如,在存储器管理单元(MMU)中)或分支预测高速缓存(例如,在分支预测器中)。另选地,每个相应高速缓存可以由代理中的一者访问,或者代理中的一者本身可以是高速缓存-例如,代理中的一者可以是在耦合到互连件的多个其他代理之间共享的系统高速缓存。
可存在大量的目标代理,每个目标代理具有相应目标高速缓存,并且可执行高速缓存维护操作以更新目标高速缓存中的每一个目标高速缓存以使任何过期信息无效或将其更新。通过执行根据本技术的操作,其中请求以由协调代理确定的发送顺序被发送至目标代理中的每一个目标代理,可以减少高速缓存维护操作的总等待时间,从而减少相应目标高速缓存存储过期信息的时间量,并且允许更快地启动可能直到高速缓存维护操作已经完成时才能够开始的任何后续操作。
在一些示例中,协调代理被配置为响应于从耦合到互连件的请求代理接收到输入请求而执行维护操作。输入请求可以是由请求代理发出的请求协调代理执行维护操作的显式请求,或者它可以是隐式请求(例如,执行某个其他动作的请求,协调代理可以通过执行所请求的动作并且进一步执行维护操作来响应该请求)。
在一些示例中,输入请求包括请求代理在试图访问存储器中的目标位置处的数据时发出的高速缓存一致性请求,维护操作包括高速缓存一致性操作,并且目标代理中的每一个目标代理的相应微体系结构包括用于存储在存储器中可访问的数据的子集的数据高速缓存。高速缓存一致性请求在某些情况下可以是执行维护操作的隐式请求。例如,高速缓存一致性请求可以是更新存储在存储器中的某些数据的访问请求(例如,由请求代理响应于执行写入指令而发出的写入请求),并且协调代理可以将该请求解释为执行高速缓存一致性操作的请求。
在一些示例中,协调代理包括监听控制电路(例如,监听过滤器),该监听控制电路被配置为维护记录,该记录提供存储器位置的指示,这些存储器位置的数据被高速缓存在每个数据高速缓存中。监听控制电路可被布置成基于该记录和为高速缓存一致性请求指定的目标位置来选择目标代理,这些目标代理包括具有可在存储器中的目标位置处存储数据的副本的相应高速缓存的那些代理,并且向每个目标代理发出的请求包括监听请求。由监听控制电路维护的记录不一定是完全准确的记录-该记录可能足以区分“可具有副本”和“不具有副本”,使得监听请求可以被发送至“可具有副本”的那些代理,而不是将监听请求发送至每个代理。
当与多个不同的目标代理相关联的数据高速缓存各自存储相同数据的副本时,监听控制电路可用于维护不同数据高速缓存之间的一致性(相干性)。具体地,当数据被更新时,监听控制电路可以发出请求以使存储数据的副本的数据高速缓存中的每一个数据高速缓存中的条目被更新以匹配存储器中的更新数据,或者使该条目无效。
将本技术应用于监听请求是特别有利的,因为减少与高速缓存一致性操作相关联的待时间可以使高速缓存一致性操作的处理更高效,而不管在高速缓存一致性操作已经完成时是否需要对原始请求代理作出任何正式响应。此外,在某些情况下,请求代理可能需要对其请求的正式响应,直到已经执行高速缓存一致性操作时才能够提供该正式响应,并且本技术可以减少对最初由请求代理发出的请求作出响应的延迟。仅以举例的方式,请求代理可以寻求获得对数据项的独占访问,并且将该数据存储在其被标记为独占拥有的本地高速缓存中,并且来自提供该数据的协调电路的响应可以被延迟,直到高速缓存一致性操作已经完成(在这种情况下,使任何其他高速缓存的副本无效)。因此,通过将本技术应用于高速缓存一致性操作,可以减少与此类操作相关联的等待时间,并且因此可以进一步改善系统整体的性能。
虽然输入请求可以是执行维护操作的隐式请求,诸如高速缓存一致性请求,但该请求另选地可以是执行维护操作的显式请求。在一些示例中,输入请求可以由请求代理响应于请求代理执行维护指令而被发出,并且因此显式地请求待执行的维护操作。在此类示例中,一旦操作已经完成,请求代理就可以预期来自协调代理的响应,并且因此减少与操作相关联的总等待时间以便能够以减少的等待时间向请求代理返回完成响应可能特别有利。
在一些示例中,可响应于这样的显式请求而经受维护动作的目标代理中的每一个目标代理的相应微体系结构可包括以下各项中的至少一者:转换后备缓冲器(TLB);指令高速缓存;以及分支预测器可访问的分支预测存储结构。
这些都是可以响应于请求代理执行维护指令而更新的结构,并且因此一旦维护操作完成,请求代理就可以预期来自协调代理的响应。TLB包括存储最新的地址转换数据的高速缓存,以允许以减少的等待时间执行相同地址的后续转换。例如,TLB可以存储与最新的虚拟到物理地址转换、虚拟到中间物理地址转换或中间物理到物理地址转换相关联的地址转换数据。指令高速缓存包括存储由处理电路执行的指令的副本的高速缓存,如果将来再次执行相同的指令,则允许更快地提取指令。分支预测器对即将到来的分支指令(例如,控制流改变指令)进行预测;例如,这可包括预测是否采用了分支,以及/或者预测分支目标地址,如果采用了分支,则该分支目标地址标识指令流中稍后出现的接下来要执行的指令。分支预测器可基于存储在分支预测存储结构中的信息进行预测。例如,分支预测存储结构可存储指示先前遇到的分支指令的结果的信息,例如指示每个分支是否被采用以及/或者给定分支指令的分支目标地址。
当对与请求代理相关联的TLB、指令高速缓存或分支预测存储结构中的条目进行更新或使其无效时,还对与耦合到互连件的其他代理相关联的结构中的对应条目进行更新或使其无效可能是有用的,使得其他代理也可以访问最新信息。因此,请求代理可以向协调代理发出请求,以执行维护操作来更新那些结构中的一个或多个条目或者使那些结构中的一个或多个条目无效。因此,本技术可应用于这种情况,以减少与执行维护操作相关联的等待时间。
在一些示例中,给定代理的等待时间指示表示在发送至给定代理的请求和从给定代理接收的响应之间的往返时间。因此,根据与每个目标代理相关联的等待时间指示来确定发送顺序允许减少完成整个操作的时间。
在耦合到互连件的代理之间的通信中存在由多个不同原因导致的等待时间,以及记录该等待时间的许多不同方式。在一些示例中,给定代理的等待时间指示基于以下各项中的至少一者:为给定代理和协调代理之间的通信定义的静态参数;以及基于给定代理和协调代理之间的当前流量来计算的动态变量。静态参数-例如不基于互连件内的当前条件(诸如流量)的参数-可以更简单地实施,因为它们不需要频繁地更新。例如,静态参数可基于互连件内的部件的布置,并且因此可仅需要为每个代理设置一次。另一方面,动态参数-例如基于互连件的当前使用情况的参数-可能更难以实施,因为它们可能需要附加的逻辑部件来记录互连件上的当前流量。然而,使用动态参数可导致与每个代理相关联的等待时间的更准确的确定,并且因此可导致与操作相关联的总等待时间的更大减少。
互连件可以采用任何形式,但在一些示例中,互连件包括多个路由节点和路由节点之间的多个链路,每个代理耦合到路由节点中的一者,并且每个通信路径包括至少两个路由节点之间的至少一个链路。例如,根据代理在互连件中的相对位置,每个通信路径可以采用路由节点之间的一个或多个“跳跃”的形式。
在一些示例中,静态参数包括给定代理和协调代理之间的通信路径中的链路的数量。例如,给定代理和协调代理之间的较多链路(例如,路由节点之间的较多跳跃)可指示较高的等待时间,并且因此在确定发送顺序时考虑链路的数量可以减少操作的总等待时间。此外,通信路径中的链路数量可以是等待时间的有用量度,因为它易于量化,并且-因为链路数量是不依赖于互连件上的当前流量的静态参数-如上所述,它可以特别简单地实施。
在一些示例中,每个链路具有相关联的等待时间,并且静态参数包括在给定代理和协调代理之间的通信路径中每个链路的相关联的等待时间的指示。以此方式,可提供与通信路径相关联的等待时间的更准确的指示,例如在并非所有链路均展现出相同的等待时间的情况下,因此允许更进一步减少总等待时间。
在一些示例中,给定代理的等待时间指示基于与给定代理和协调代理之间的通信路径相关联的拥塞指示。该拥塞指示可基于静态变量和/或动态变量。例如,该拥塞指示可基于一个或多个动态变量,诸如给定代理和协调代理之间的通信路径上的当前拥塞量-例如当前拥塞量可基于协调代理在执行操作之前的时间段内发送的请求的数量。
拥塞还可以基于一个或多个静态变量。在一些示例中,该拥塞指示基于给定代理和协调处理代理之间的通信路径中的所估计的拥塞量。在一些情况下,所估计的拥塞量可以是静态指示(例如,不基于互连件上的当前流量),并且因此相比于动态选项可以更简单地实施。然而,所估计的拥塞仍然可以提供给定通信路径上的等待时间的相当准确的指示,因为例如基于互连件的布置和耦合到互连件的代理的类型,互连件上的流量可以是相当可预测的。
如前所述,在一些示例中,互连件包括多个路由节点和路由节点之间的多个链路,每个代理耦合到路由节点中的一者,并且每个通信路径包括至少两个路由节点之间的至少一个链路。在这样的布置中,所估计的拥塞量可基于互连件的拓扑以及在给定代理和协调处理代理之间的通信路径中至少一个链路在互连件中的位置。如上所述,基于互连件的布置,互连件上的流量可以是相当可预测的,并且在特定示例中,互连件的拓扑(例如,由互连件中的路由节点和链路形成的形状-例如,互连件可具有网状、环形或线性拓扑)可以提供对预期拥塞最大的位置的良好估计。互连件的拓扑通常是固定的,所以这是静态变量,并且因此可以特别简单地实施。
在一些示例中,互连件包括网状网络,该网状网络包括路由节点的矩形阵列,其中路由节点包括交叉点,并且给定链路的所估计的拥塞量基于给定链路与网状网络的边缘之间的距离。如上所述,互连件的一种可能的拓扑是网格,其中路由节点和链路形成矩形形状。在这样的拓扑中,通常预期在朝向网格中心的链路上存在更大的拥塞,因为相比于朝向网格外部的链路,这些链路通常是更大数量的不同通信路径的一部分。因此,可以通过确定给定链路和网格边缘之间的距离来提供该链路上的拥塞的良好估计。
在一些示例中,给定代理的等待时间指示基于给定代理处理请求的预期时间。该预期时间可基于静态参数和/或动态参数。例如,作为静态参数,可以预期某些类型的目标代理相比于其他类型的目标代理花费更长的时间来处理请求。作为动态参数,该预期时间可基于发送至给定代理的未决请求的数量。然而,应当理解,这些仅仅是示例,并且可以替代地使用预期时间的任何量度。此外,预期时间还可以考虑在协调节点和给定代理之间路由请求/响应所花费的预期时间。
现在将参考附图描述具体实施方案。
图1示出了数据处理系统102,该数据处理系统包括耦合到互连件108的多个代理104、106、110;因此,互连件108是提供耦合到互连件的代理之间的通信路径的互连件的示例。代理包括请求节点(RN)104、从节点(SN)106,以及归属节点110。请求节点104(也可以称为主设备)是能够处理数据的代理,并且可以向从节点106发送请求(例如,事务);例如,请求节点104可包括处理单元,诸如中央处理单元(CPU)或图形处理单元(GPU)。例如,请求可包括访问存储在存储器中的数据的数据访问请求(例如,读取请求和写入请求)或地址转换请求。从节点106(也可以称为完成器节点)是在请求节点104的控制下(例如,通过响应于由请求节点104发出的事务)操作的部件。
具体地,请求节点可经由请求节点104和归属节点110之间的通信路径114向归属节点(HN)110发出请求,并且每个归属节点110可以控制对应的从节点106。例如,从节点106可包括用于控制对存储器或另一存储结构的访问的存储器控制器(例如,响应于来自请求节点104中的一者的访问请求)、存储在存储器中存储的数据的副本的系统高速缓存,或用于控制输入/输出设备的输入/输出控制器。应当理解,虽然图1示出了包括三个请求节点104、两个归属节点110和两个从节点106的系统102,但这仅是示例,并且可以包括任何数量的代理104、106和归属节点110。此外,虽然在图1中示出归属节点110作为互连件108的一部分,但应当理解,它们也可以与互连件108分开(但与之耦合)。
经由互连件提供的通信路径在代理之间发送的请求和响应可以是非阻塞的,使得在任何给定时间可存在“在途中”(例如,在代理之间的传输中)的多个未完成的请求。因此,给定代理不必一直等到(例如)在发送下一请求之前已经接收到对给定请求的响应。
请求节点104和归属节点110之间的通信路径114在图1中被示出为请求节点104中的每一个请求节点和每个归属节点110之间的直接链路;然而,这仅是例示性的。实际上,每个通信路径可包括经由中间路由节点(未示出)的多个跳跃,并且所采用的确切路径取决于因素,诸如互连件的拓扑。
如上所述,请求节点104可以向归属节点110发送请求以由从节点106完成。然而,这仅仅是可以在耦合到互连件的代理104、106、110之间发送的请求类型的一个示例。例如,代理中的一者(请求代理)可以向协调代理发送输入请求,该协调代理耦合到互连件并且被配置为执行操作,该操作要求向从耦合到互连件的代理中选择用于该操作的多个目标代理中的每一个目标代理发送请求,并且从多个目标代理中的每一个目标代理接收响应,直到已经从多个目标代理中的每一个目标代理接收到该响应,该操作才能够完成。例如,协调代理可以是归属节点110中的一者,并且请求代理可以是请求节点104中的一者。
由协调代理接收的输入请求的示例可以是执行维护操作以更新与一组目标代理中的每一个目标代理相关联的相应微体系结构(例如,相对于其执行维护动作)的请求。在这种情况下,输入请求可以是执行维护操作的显式请求,并且可以响应于请求代理执行维护指令而被发送至协调代理。在特定示例中,这可以是由请求节点104发出的TLB无效请求,该TLB无效请求请求使属于多个目标代理中的每一个目标代理(其可包括请求节点104中的一个或多个请求节点和/或从节点106中的一个或多个从节点)的TLB中的一个或多个条目无效。另选地,相应微体系结构可以是一些其他微体系结构,诸如指令高速缓存或分支预测器可访问的分支预测存储结构。协调代理将向目标代理中的每一个目标代理发出维护请求,并且一旦已经执行关于该目标代理的相应微体系结构的维护动作(例如,在TLB无效操作的情况下,一旦已经使所标识的条目无效),该协调代理就将从目标代理中的每一个目标代理接收响应。一旦已经接收到所有响应,它就将完成响应发送回请求代理。由于直到已经接收到所有响应才能够将完成响应发送回请求代理,所以与维护操作相关联的等待时间整体上可影响请求代理的性能。
输入请求的另一个示例可以是由处理单元(诸如CPU或GPU)发出的访问请求,以写入存储器中的所标识的存储器位置,或者从存储器中的所标识的位置读取数据。在这种情况下,访问请求可被称为高速缓存一致性请求(或者例如一致性高速缓存行请求),协调代理可以是归属节点110(如图1所示),并且归属节点110可响应于输入请求而执行高速缓存一致性操作以向代理中的(例如,如由归属节点110可访问的监听过滤器所标识的)任何代理发出监听请求,对于该代理,相应高速缓存存储(或者可以存储)在所标识的存储器位置处存储的数据的副本。监听请求是使存储在相应高速缓存中的数据的副本无效或将其更新的请求,并且目标代理中的每一个目标代理被配置为一旦它们的相应高速缓存中的对应条目已经被无效或更新(另选地,响应可指示数据未被存储在它们的相应高速缓存中),就向归属节点110发送响应。一旦从目标代理中的每一个目标代理接收到响应,就可以完成高速缓存一致性操作。在某些情况下,归属节点110在响应于访问请求之前可能需要等待,直到高速缓存一致性操作完成。因此,与整个高速缓存一致性操作相关联的等待时间越大,与访问请求相关联的等待时间就越大,因此,对请求代理的性能的影响也就越大。
在这些示例中的每一个示例中,协调代理(该协调代理可以是归属节点110或另一个代理)执行操作,该操作涉及向从耦合到互连件108的那些代理104、106中选择的一组目标代理中的每一个目标代理发送请求,并且从目标代理中的每一个目标代理接收响应。因此,直到已经接收到所有响应,该操作才能够完成。当执行这样的操作时,存在与在协调代理110和每个目标代理之间发送的每个请求和每个响应相关联的等待时间。由于直到接收到所有响应时操作才能够完成,这意味着还存在与整个操作相关联的等待时间,该等待时间取决于作为操作的一部分发送和接收的请求和响应中的每一者的等待时间。如上所述,操作的等待时间可以对耦合到互连件的代理的性能产生影响,并且因此减少该等待时间将是有利的。
因此,本技术的协调代理110中的每一个协调代理包括等待时间指示存储装置112,该等待时间指示存储装置存储协调代理110可以与之通信的每个代理的等待时间指示。因此,等待时间指示存储装置112是协调代理可访问的存储电路的示例,并且被配置为针对协调代理可经由互连件与之通信的每个代理,存储用于该代理和协调代理之间的通信的等待时间指示。
每个代理的等待时间指示表示协调代理110向该代理发送的请求和从该代理接收的响应之间的时间。等待时间指示可基于多个不同因素中的任何一个因素,这将在下面更详细地讨论,并且等待时间指示存储装置112可以是如图1所示的协调代理110的一部分,但它也可以是协调代理110可访问的单独的存储结构。此外,虽然图1示出每个协调代理110具有单独的等待时间指示存储装置112,但多个协调代理110也可能共享单个等待时间指示存储装置112。
在执行该操作(无论是响应于从请求节点104中的一者接收的执行该操作的显式请求,还是响应于检测到某些其他请求,诸如需要高速缓存一致性操作的访问请求)之前,协调代理110被配置为确定将其请求发送至目标代理中的每一个目标代理的发送顺序。具体地,协调代理110根据目标代理中的每一个目标代理的存储在等待时间指示存储装置112中的等待时间指示来确定发送顺序。这允许发送顺序被选择为减少与操作相关联的总等待时间。例如,发送顺序可以被确定为使得请求在被发送至具有较低等待时间的目标代理之前被发送至具有较高等待时间的目标代理,从而通过增加未完成的请求和响应之间的重叠来整体降低等待时间。
图2示出了系统102的示例,其中互连件110包括网状网络。具体地,图2示出了由交叉点(XP)202的矩形阵列构成的网状网络的示例,这些XP通过链路204、206(有时也称为网状信用切片(MCS))彼此耦合。交叉点202是路由节点的示例,并且在该特定示例中,网格包括3×3的交叉点202阵列。然而,应当理解,其他布置也是可能的。
多个代理被示出为耦合到互连件,包括归属节点110、从节点106、请求节点104、芯片到芯片网关(CCG)210,以及杂项节点(MN)208。
代理中的每一个代理在XP 202中的一者处耦合到网格,并且可经由XP 202和XP之间的链路204、206在代理之间传输消息;因此,两个代理之间的通信路径包括一个或多个XP202,并且还可以包括XP 202之间的一个或多个链路204、206,具体取决于网络中两个代理的位置以及它们之间采用的路由。链路204、206中的每一个链路具有相关联的等待时间,指示消息(例如,请求或响应)遍历该特定链路所需的时间量;在该具体示例中,出于讨论的目的,假设所有水平链路204具有3个周期的等待时间,并且所有垂直链路206具有2个周期的等待时间。然而,在更一般的情况下,与每个链路相关联的等待时间可以取决于任何数量的因素,包括例如链路的长度、链路在互连件内的位置,或该链路上的流量。
此外,还可存在与耦合到互连件的代理104、106、110、208、210之间的通信相关联的其他等待时间源。例如,与给定的一对代理之间的通信相关联的等待时间可取决于:两个代理之间的通信路径中的多个链路204、206(例如,更多数量的链路204、206(例如,更长的链路链)可指示更大的等待时间);互连件内的通信路径的链路204、206中的每一个链路的位置(例如,更靠近网状网络的中心的链路204、206可由于通过互连件中心的增加的流量而与更大的等待时间相关联);以及代理中的每一个代理的类型(例如,一些代理-诸如CCG-相比于其他代理可能预期花费更长的时间来处理请求)。如上所述,每个协调代理(例如,归属节点110和MN 208)可以访问等待时间指示存储装置。存储在等待时间指示存储装置中的等待时间指示可基于上述因素中的任何一个因素或它们的任何组合。
在图2中,请求节点104是完全一致的请求节点(RN-F)104,每个请求节点包括硬件一致的高速缓存,并且被允许发出包括访问存储在存储器中的数据的访问请求的任何类型的事务。然而,应当理解,还可以包括其他类型的请求节点104。CCG 210是促进互连件和另一芯片上的另一互连件之间的通信的链接代理。
如上所述,归属节点110是协调代理的示例。图2中的归属节点110各自包括监听过滤器212,该监听过滤器维护RN-F 104的哪些高速缓存可以在存储器中存储哪些数据的副本的记录。因此,归属节点110监测由请求节点104发出的访问请求,以标识引起对可存储在至少一个其他请求节点104的高速缓存中的数据的更新的任何访问请求。如果监听过滤器检测到这种访问请求,则它通过执行如上所述的高速缓存一致性操作来响应。使用哪个归属节点来检查任何特定访问请求可例如取决于由所述访问请求指定的地址,其中例如不同的归属节点用于不同的地址范围。
MN 208是协调代理的另一示例,并且负责向请求节点104和CCG 210发送维护请求,诸如TLB和指令高速缓存维护请求(有时也称为分布式虚拟存储器操作DVMOps)。MN 208可执行如上所述的维护操作,以响应于从请求代理(例如,请求节点104中的一者)接收到请求而将维护请求发送至请求节点104和CCG 210的子集(或全部)(用于该操作的目标代理)。
如上所述,存在与图2的网状网络中的链路204、206中的每一者相关联的等待时间,并且这些等待时间可增加由协调代理中的一者执行的操作的总等待时间。图3和图4给出了与每个链路204、206相关联的等待时间如何增加由MN 208执行的维护操作的总等待时间的示例。具体地,图3给出了当不考虑存储在等待时间指示存储装置112中的等待时间指示时(例如,当不应用本技术时)链路的等待时间如何增加操作的总等待时间的示例,而图4给出了考虑等待时间指示的示例。
在图3所示的示例中,基于图中目标代理的编号(即,以RNF0-RNF1-RNF2-RNF3-RNF4的顺序),以逻辑顺序将请求发送至目标代理(在该示例中,目标代理是请求节点RNF0、RNF1、RNF2、RNF3和RNF4)。最左边的(第一)列指示自操作开始以来的周期数(在这种情况下,当由MN 208生成第一请求时认为操作开始),第二列示出了MN 208的操作,并且第三列和第四列示出了目标代理的操作。
图3的表中所示的定时基于与图2中的XP之间的链路204、206相关联的等待时间。例如,req1从MN 208到RNF1需要两个周期,因为MN 208和RNF1之间的最短通信路径包括一个垂直链路206。另一方面,req3需要8个周期才能到达RNF3,因为MN 208和RNF3之间的最短通信路径包括两个水平链路294和一个垂直链路206。因此,与向目标代理中的每一个目标代理发送请求以执行图3中的操作相关联的等待时间被认为是:
·对于req0,3个周期;
·对于req1,2个周期(如上所述);
·对于req2,5个周期;
·对于req3,8个周期(如上所述);以及
·对于req4,7个周期。
然后,每个响应花费与对应的请求到达目标代理所花费的时间相同的时间量返回到MN 208。在该示例中,为了进行说明,假设每个请求节点在接收到请求之后的周期中响应于该请求。因此,在该相对简单的示例中,如图3所示,由MN 208接收所有响应需要20个周期,并且因此完成操作需要21个周期。应当理解,还可存在其他原因导致的等待时间(如上所述);然而,该示例仅用于说明,以给出当不考虑存储在等待时间指示存储装置中的等待时间指示时可以预期的等待时间量的指示。
减少与维护操作相关联的总等待时间将是有利的。虽然可以通过例如重新设计互连件来减少与链路中的每一个链路相关联的等待时间来做到这一点,但本技术的发明人认识到,通过调整MN 208发送请求的顺序可以实现等待时间的显著减少。具体地,本技术涉及协调节点(在这种情况下为MN 208,但在其他示例中可以是归属节点110中的一者)基于目标代理中的每一个目标代理的等待时间指示来确定发送请求的发送顺序。
图4给出了以此方式确定发送顺序的示例。基于目标代理中的每一个目标代理的存储在等待时间指示存储装置中的等待时间指示来确定发送顺序;在该特定示例中,每个目标代理的等待时间指示基于该目标代理和MN 208之间的通信路径中的每个链路的等待时间。因此,该示例中的发送顺序被确定为使得最先发送预期等待时间最高的请求(req3),最后发送预期等待时间最低的请求(req1)。具体地,在该示例中,请求按以下顺序发送:
1.req3至RNF3(每路8个周期的等待时间);
2.req4至RNF4(每路7个周期的等待时间);
3.req2至RNF2(每路5个周期的等待时间);
4.req0至RNF0(每路3个周期的等待时间);
5.req1至RNF1(每路2个周期的等待时间)。
如图4所示,当以该发送顺序发送请求时,接收所有响应只需要17个周期,并且因此该操作能够在18个周期之后完成(与图3中的示例的21个周期相比)。因此,通过根据每个目标代理的等待时间指示来确定发送顺序,与操作相关联的总等待时间已经减少了3个周期。
此外,图4中的示例仅考虑网状网络中的每个链路的等待时间。通过考虑影响与每个目标代理的通信相关联的等待时间的更多因素,可以更进一步减少操作的总等待时间。然而,应当理解,即使仅考虑一个因素(如图4所示),也可以实现等待时间的显著减少。
如上所述,可以耦合到互连件的一种类型的代理是芯片到芯片网关(CCG)210,其促进芯片之间的通信。图5中示出了使用CCG 210在两个芯片502之间通信的示例。图5示出了经由一对CCG 210a和CCG 210b通信的两个芯片-芯片0 502a和芯片1 502a。芯片0 502a具有两个归属节点110a、110b,两个从节点106a、106b,两个请求节点104a、104b,以及一个CCG 210a。芯片1具有一个归属节点110c、一个从节点106c、两个请求节点104c、104d,以及一个CCG 210b。芯片502中的每一个芯片还可以包括MN 208(未示出),并且应当理解,每个芯片502上的代理各自耦合到互连件(也未示出)并且经由该互连件彼此通信。
如上所述,归属节点110中的每一个归属节点可以访问监听过滤器,并且可以响应于从请求节点104中的一者接收到高速缓存一致性请求而执行充当协调代理的高速缓存一致性操作。例如,HN0 110a可以响应于由RN-F0 104a发出的访问请求来执行高速缓存一致性操作,以向具有高速缓存的RN 104中的每一者发送监听请求,该高速缓存存储由访问请求作为目标的数据的副本。例如,如果HN0 110a确定与RN-F1 104b相关联的高速缓存可存储数据的副本,则HN0 110a可以向RN-F1 104b发送监听请求,该RN-F1 104b然后将响应发送回HN0 110a。
此外,HN0 110a还可以向CCG0 210a发送监听请求。CCG0 210a然后可以向CCG1210b发送监听请求,CCG1 210b将该监听请求传递到HN2 110c。在这种情况下,CCG0 210a充当用于高速缓存一致性操作的目标代理中的一者。然后,HN2 110c相对于芯片1 502b上的RN 104开始其自身的高速缓存一致性操作。一旦HN2 110c已经向已经确定可存储数据的副本的芯片1 502b上的RN 104中的每一者发送了一致性请求,并且已经从其接收到响应,它就将响应发送回CCG1 210b,该CCG1 210b与CCG0 210a通信,CCG0 210a继而将该响应发送回HN0 110a。
与HN0 110a和CCG 210a之间的通信相关联的等待时间可大于与HN0 110a和RN-F0104a或RN-F1 104b之间的通信相关联的等待时间,因为芯片1 502b上的HN2 110c需要响应于从HN0 110a接收到请求而执行其自身的高速缓存一致性操作。因此,在一些示例中,每个代理的存储在等待时间指示存储装置中的等待时间指示可以至少部分地基于代理的类型,例如,可以假设与CCG 210相关联的等待时间大于与RN 104相关联的等待时间。
本技术适用于由协调节点执行的任何操作,操作包括向多个目标代理发送请求以及从目标代理中的每一个目标代理接收响应。例如,该操作可以是高速缓存一致性操作,在这种情况下,发送至每个目标代理的请求包括关于目标代理中的每一个目标代理的一个或多个数据高速缓存的至少一个条目执行高速缓存维护操作的请求。在另一个示例中,该操作可以是由请求代理执行的维护指令所触发的维护操作,并且每个请求可以是关于每个目标代理的至少一个微体系结构执行维护动作的请求;例如,目标微体系结构可以是TLB、指令高速缓存或与分支预测结构相关联的分支预测存储结构。
图6示意性地示出了CPU 602的示例,并且示出了这些微体系结构中的每一个微体系结构的示例。图6的CPU 602包括由提取级604、解码级606、重命名级608、发出级610、执行级612和回写级616组成的处理器流水线。提取级604从1级指令高速缓存614提取指令,该1级指令高速缓存存储在存储器中存储的指令的副本,并且将所提取的指令传递到解码器606。解码器606对所提取的指令进行解码以生成用于控制执行级612来执行数据处理操作的控制信号。重命名级608将指令所引用的架构寄存器重映射到装置中所提供的微体系结构寄存器上,并且发出级610包括用于缓冲被解码的指令以供执行的发出队列,以及用于选择待发出至执行级612的下一个被解码的指令的选择电路。有序处理器可以不包括重命名级608或发出级610。
执行级612被配置为执行被解码的指令,并且回写级616将指令的结果写入寄存器文件628。图6所示的执行级612包括多个执行单元,包括算术逻辑单元(ALU)618、浮点(FP)执行单元620、加载/存储(LD/ST)单元622,以及分支执行单元624。ALU 618执行算术运算,并且FP单元620执行浮点运算。加载/存储单元622执行加载和存储操作,这些加载和存储操作涉及将数据从一级数据高速缓存626加载到寄存器文件628中,或者将数据从寄存器文件628存储到存储器。当执行加载指令时,如果所请求的数据在一级数据高速缓存626中不可用,则可替代地将其从二级高速缓存630提取到一级数据高速缓存626中。如果数据在二级高速缓存630中也不可用,则加载/存储单元可以向互连件上的监听控制电路发出一致性请求,请求从存储器中检索数据的副本(或者保存在另一代理的高速缓存中的副本)以存储在寄存器628中(此时,包括所请求的数据的数据的高速缓存行通常将被存储在一级数据高速缓存626中)。
加载/存储单元622对存储器系统(包括一级数据高速缓存626和二级高速缓存630)的访问由存储器管理单元(MMU)632控制。MMU 632包括转换后备缓冲器(TLB)634,该TLB为存储在存储器中的转换表中存储的地址转换(用于在虚拟地址和物理地址之间转换)的副本的专用高速缓存。
分支执行单元624评估分支指令,并且将关于这些指令的结果的信息返回到分支预测器636,该分支预测器可使用这些结果在将来进行更准确的分支预测。具体地,图6中所示的分支预测器636包括一个或多个分支预测器高速缓存638,该一个或多个分支预测器高速缓存存储供分支预测器636在进行分支预测时使用的信息。分支预测器高速缓存638是分支预测存储结构的示例,并且分支预测器高速缓存638、TLB 634、一级指令高速缓存614和共享的二级高速缓存630都是可响应于维护指令的执行而被更新的微体系结构的示例。
图6的CPU 602中的存储器系统采用存储器层级的形式,在存储器和处理器流水线之间具有至少两个高速缓存级别。指令高速缓存614存储将由提取电路提取的指令,并且一级数据高速缓存626存储在存储器中存储的数据的子集,从而允许加载/存储单元622以减少的等待时间访问该数据。还提供二级高速缓存630,并且在指令和数据之间共享该二级高速缓存。二级高速缓存630通常大于一级高速缓存614、626中的任一者,并且相比于对一级高速缓存614、626的访问,对二级高速缓存630的访问通常导致更高的等待时间。然而,与访问二级高速缓存630相关联的等待时间通常仍然低于与访问存储器相关联的等待时间。此外,尽管在图6中仅示出了两级高速缓存,但应当理解,这仅是一个示例,并且可以在处理器流水线和存储器之间提供任何数量的高速缓存层。例如,可以在CPU 602和存储器之间,在互连件上提供系统高速缓存。一级数据高速缓存626和共享的二级高速缓存630是数据高速缓存的示例,这些数据高速缓存可以是作为高速缓存一致性操作的一部分发送的监听请求的目标。
图7是示出根据本技术的由协调代理执行的方法的示例的流程图。该方法从标识用于操作的目标代理的步骤S702开始。然后在步骤S704中根据与协调代理和目标代理中的每一个目标代理之间的通信相关联的等待时间指示来确定发送顺序,并且在步骤S706中以该发送顺序向目标代理中的每一个目标代理发送请求。然后,在步骤S710中完成操作之前,协调代理等待S708,直到已经从目标代理中的每一个目标代理接收到响应。
图8和图9示出了可以由协调代理执行的操作的特定示例。图8示出了可以由协调代理执行的维护操作的示例。具体地,图8的方法包括确定是否已经从请求代理接收到维护请求的步骤S802。当已经接收到请求时,协调代理检查S804它有多少缓冲器空间可用,并且确定S806是否存在足够的缓冲器空间可用来存储所接收的维护请求。如果没有足够的缓冲器空间,则向请求代理发送S808错误信号,而如果存在足够的缓冲器空间,则向请求代理发送S810确认。然后在执行图7的方法之前,协调代理等待S812,直到维护请求到达缓冲器的头部。一旦已经从所有目标代理接收到所有响应,协调代理就向请求代理发送S814完成信号,以指示已经执行了维护操作。
应当理解,图8所示的方法仅是执行维护操作的方法的一个示例,并且还可以使用该方法的变型。例如,步骤S802至步骤S808并非在所有数据处理系统中都是必需的。
现在转到图9,该图示出了由协调代理执行的高速缓存一致性操作的示例。该方法涉及确定请求代理是否已经发出高速缓存一致性请求的步骤S902(例如,对存储数据的存储器中的位置的写入请求或读取请求,该数据被高速缓存在一个或多个其他代理可访问的数据高速缓存中)。一旦接收到高速缓存一致性请求,协调代理就执行图7的方法。具体地,标识用于操作的目标代理的步骤S702参考例如监听过滤器来执行,并且在步骤S706中发送至目标代理的请求为监听请求。一旦已经从所有目标代理接收到指示已经采用所请求的高速缓存一致性动作(例如,使每个目标代理的相应高速缓存中的一个或多个条目无效或将其更新)的监听响应(S708),协调代理就可以对高速缓存一致性请求作出响应(S904)。例如,在对尚不位于监听高速缓存中的任何监听高速缓存中的数据的写入请求或读取请求的示例中,协调代理可通过将数据访问请求传递到存储器控制器来响应。它还可以向请求代理发送响应(例如,以提供经由监听操作获得的读取数据,以标识请求代理现在拥有处于特定状态的数据的所有权(例如,它是独占所有者,并且因此是当前可以高速缓存该数据的唯一代理)等。
因此,在图8中的维护操作示例和图9中的高速缓存一致性示例中,直到已经从标识用于操作的所有目标代理接收到响应,该操作才能够完成。这意味着存在与操作相关联的总等待时间,该总等待时间取决于与协调代理和目标代理中的每一个目标代理之间的通信相关联的等待时间。然而,发明人认识到,通过根据目标代理中的每一个目标代理的等待时间指示来确定发送顺序,可减少操作的总等待时间。
在本申请中,字词“被配置为…”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化和修改。
Claims (20)
1.一种装置,所述装置包括:
互连件,所述互连件用于提供耦合到所述互连件的代理之间的通信路径;
协调代理,所述协调代理耦合到所述互连件并且被配置为执行操作,所述操作要求向从耦合到所述互连件的所述代理中选择用于所述操作的多个目标代理中的每一个目标代理发送请求,并且从所述多个目标代理中的每一个目标代理接收响应,直到已经从所述多个目标代理中的每一个目标代理接收到所述响应,所述操作才能够完成;以及
存储电路,所述存储电路能够由所述协调代理访问,并且被配置为针对所述协调代理能够经由所述互连件与之通信的每个代理存储用于所述代理和所述协调代理之间的通信的等待时间指示;
其中所述协调代理被配置为在执行所述操作之前,确定向所述多个目标代理中的每一个目标代理发送所述请求的发送顺序,所述发送顺序根据所述多个目标代理中的每一个目标代理的所述等待时间指示而确定。
2.根据权利要求1所述的装置,其中
所述协调代理被配置为确定所述发送顺序,使得在所述请求被发送至具有较低等待时间的目标代理之前,所述请求被发送至具有较高等待时间的目标代理。
3.根据权利要求1所述的装置,其中
所述操作包括维护操作,并且所述请求包括关于所述目标代理中的每一个目标代理的相应微体系结构执行维护动作的请求。
4.根据权利要求3所述的装置,其中所述维护操作包括高速缓存维护操作,所述目标代理中的每一个目标代理的所述相应微体系结构包括目标高速缓存,并且所述维护动作包括以下各项中的一者:
使所述目标代理中的每一个目标代理的相应目标高速缓存中的至少一个条目无效;以及
更新存储在所述至少一个条目中的数据。
5.根据权利要求3所述的装置,其中
所述协调代理被配置为响应于从耦合到所述互连件的请求代理接收到输入请求而执行所述维护操作。
6.根据权利要求5所述的装置,其中:
所述输入请求包括所述请求代理在寻求访问存储器中目标位置处的数据时发出的高速缓存一致性请求;
所述维护操作包括高速缓存一致性操作;并且
所述目标代理中的每一个目标代理的所述相应微体系结构包括用于存储在所述存储器中能够访问的数据的子集的数据高速缓存。
7.根据权利要求6所述的装置,其中:
所述协调代理包括监听控制电路,所述监听控制电路被配置为维护记录,所述记录提供存储器位置的指示,所述存储器位置的数据被高速缓存在每个数据高速缓存中;
所述监听控制电路被布置成基于所述记录和为所述高速缓存一致性请求指定的所述目标位置来选择所述目标代理,所述目标代理包括具有能够在存储器中的所述目标位置处存储所述数据的副本的相应高速缓存的那些代理;并且
发出至每个目标代理的所述请求包括监听请求。
8.根据权利要求5所述的装置,其中所述输入请求由所述请求代理响应于所述请求代理执行维护指令而被发出。
9.根据权利要求8所述的装置,其中所述目标代理中的每一个目标代理的所述相应微体系结构包括以下各项中的至少一者:
转换后备缓冲器;
指令高速缓存;以及
分支预测器能够访问的分支预测存储结构。
10.根据权利要求1所述的装置,其中:
给定代理的所述等待时间指示表示发送至所述给定代理的所述请求和从所述给定代理接收的所述响应之间的往返时间。
11.根据权利要求10所述的装置,其中所述给定代理的所述等待时间指示基于以下各项中的至少一者:
为所述给定代理和所述协调代理之间的通信定义的静态参数;以及
基于所述给定代理和所述协调代理之间的当前流量计算的动态变量。
12.根据权利要求11所述的装置,其中:
所述互连件包括多个路由节点和所述路由节点之间的多个链路,每个代理耦合到所述路由节点中的一者;并且
每个通信路径包括至少两个路由节点之间的至少一个链路。
13.根据权利要求12所述的装置,其中
所述静态参数包括所述给定代理和所述协调代理之间的所述通信路径中的链路数量。
14.根据权利要求12所述的装置,其中
每个链路具有相关联的等待时间;并且
所述静态参数包括所述给定代理和所述协调代理之间的所述通信路径中的每个链路的所述相关联的等待时间的指示。
15.根据权利要求11所述的装置,其中
给定代理的所述等待时间指示基于与所述给定代理和所述协调代理之间的所述通信路径相关联的拥塞指示。
16.根据权利要求15所述的装置,其中:
所述拥塞指示基于所述给定代理和协调处理代理之间的所述通信路径中的所估计的拥塞量。
17.根据权利要求16所述的装置,其中
所述互连件包括多个路由节点和所述路由节点之间的多个链路,每个代理耦合到所述路由节点中的一者,并且每个通信路径包括至少两个路由节点之间的至少一个链路;并且
所估计的拥塞量基于所述互连件的拓扑以及在所述给定代理和所述协调处理代理之间的所述通信路径中至少一个链路在所述互连件中的位置。
18.根据权利要求17所述的装置,其中:
所述互连件包括网状网络,所述网状网络包括路由节点的矩形阵列,其中所述路由节点包括交叉点;并且
给定链路的所估计的拥塞量基于所述给定链路与所述网状网络的边缘之间的距离。
19.根据权利要求11所述的装置,其中:
给定代理的所述等待时间指示基于所述给定代理处理所述请求的预期时间。
20.一种方法,所述方法包括:
执行操作,所述操作要求协调代理向从耦合到互连件的代理中选择用于所述操作的多个目标代理中的每一个目标代理发送请求,并且从所述多个目标代理中的每一个目标代理接收响应,直到已经从所述多个目标代理中的每一个目标代理接收到所述响应,所述操作才能够完成,并且所述互连件提供耦合到所述互连件的所述代理之间的通信路径;
针对所述协调代理能够经由所述互连件与之通信的每个代理存储用于所述代理和所述协调代理之间的通信的等待时间指示;以及
在执行所述操作之前,确定向所述多个目标代理中的每一个目标代理发送所述请求的发送顺序,所述发送顺序根据所述多个目标代理中的每一个目标代理的所述等待时间指示而确定。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/335,378 US11899607B2 (en) | 2021-06-01 | 2021-06-01 | Sending a request to agents coupled to an interconnect |
US17/335,378 | 2021-06-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115442430A true CN115442430A (zh) | 2022-12-06 |
Family
ID=84193011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210578715.XA Pending CN115442430A (zh) | 2021-06-01 | 2022-05-26 | 向耦合到互连件的代理发送请求 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11899607B2 (zh) |
CN (1) | CN115442430A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630668B1 (en) * | 2021-11-18 | 2023-04-18 | Nxp B.V. | Processor with smart cache in place of register file for providing operands |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7802040B2 (en) * | 2005-12-22 | 2010-09-21 | Arm Limited | Arbitration method reordering transactions to ensure quality of service specified by each transaction |
US7734853B2 (en) * | 2006-02-28 | 2010-06-08 | Arm Limited | Latency dependent data bus transmission |
US20110019668A1 (en) * | 2009-07-24 | 2011-01-27 | Wael William Diab | Method And System For Packet Preemption Via Packet Rescheduling |
US9497135B2 (en) * | 2011-10-04 | 2016-11-15 | Pismo Labs Technology Limited | Method and system for reduction of time variance of packets received from bonded communication links |
US9081685B2 (en) * | 2013-01-15 | 2015-07-14 | Arm Limited | Data processing apparatus and method for handling performance of a cache maintenance operation |
GB2522057B (en) * | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US9733978B2 (en) * | 2015-08-27 | 2017-08-15 | Qualcomm Incorporated | Data management for multiple processing units using data transfer costs |
JP7493311B2 (ja) * | 2019-06-19 | 2024-05-31 | キヤノン株式会社 | バスシステムおよびその制御方法 |
-
2021
- 2021-06-01 US US17/335,378 patent/US11899607B2/en active Active
-
2022
- 2022-05-26 CN CN202210578715.XA patent/CN115442430A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11899607B2 (en) | 2024-02-13 |
US20220382703A1 (en) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7305522B2 (en) | Victim cache using direct intervention | |
US7305523B2 (en) | Cache memory direct intervention | |
TWI651620B (zh) | 用於處理多個交易之資料處理系統及方法 | |
US10990529B2 (en) | Multi-power-domain bridge with prefetch and write merging | |
US6976131B2 (en) | Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system | |
US7076609B2 (en) | Cache sharing for a chip multiprocessor or multiprocessing system | |
KR100465583B1 (ko) | 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법 | |
US8131935B2 (en) | Virtual barrier synchronization cache | |
US7640401B2 (en) | Remote hit predictor | |
US6775749B1 (en) | System and method for performing a speculative cache fill | |
US20070239940A1 (en) | Adaptive prefetching | |
US5559987A (en) | Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system | |
US8347040B2 (en) | Latency reduction for cache coherent bus-based cache | |
US20050144399A1 (en) | Multiprocessor system, and consistency control device and consistency control method in multiprocessor system | |
KR20000022712A (ko) | 노드 상호 접속망 상에서 요구를 예측 방식으로 발행하는 비균일 메모리 액세스 데이터 처리 시스템 | |
CN1952877A (zh) | 用于软件可配置预取器的方法、装置和系统 | |
US5895484A (en) | Method and system for speculatively accessing cache memory data within a multiprocessor data-processing system using a cache controller | |
GB2514636A (en) | Prefetching of data and instructions in a data processing apparatus | |
US5987544A (en) | System interface protocol with optional module cache | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership | |
US7058767B2 (en) | Adaptive memory access speculation | |
US8635409B2 (en) | Dynamic mode transitions for cache instructions | |
US20090240893A1 (en) | Information processing device, memory control method, and memory control device | |
CN115442430A (zh) | 向耦合到互连件的代理发送请求 | |
US5905999A (en) | Cache sub-array arbitration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |