CN117980889A - 用于管理预取事务的装置和方法 - Google Patents
用于管理预取事务的装置和方法 Download PDFInfo
- Publication number
- CN117980889A CN117980889A CN202280064611.5A CN202280064611A CN117980889A CN 117980889 A CN117980889 A CN 117980889A CN 202280064611 A CN202280064611 A CN 202280064611A CN 117980889 A CN117980889 A CN 117980889A
- Authority
- CN
- China
- Prior art keywords
- transaction
- congestion
- prefetch
- given
- interconnect
- 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
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000004891 communication Methods 0.000 claims abstract description 115
- 230000004044 response Effects 0.000 claims abstract description 60
- 230000001902 propagating effect Effects 0.000 claims abstract description 21
- 230000000977 initiatory effect Effects 0.000 claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 14
- 238000004519 manufacturing process Methods 0.000 claims description 10
- 239000003999 initiator Substances 0.000 claims description 4
- 238000013459 approach Methods 0.000 description 17
- 230000000694 effects Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 230000003068 static effect Effects 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了用于管理预取事务的装置和方法。该装置具有互连件,用于在耦合到该互连件的元件之间提供通信路径。耦合到该互连件的该元件至少包括用于发起事务的请求器元件、以及多个完成器元件,每个完成器元件被布置成对由该完成器元件接收的事务做出响应。拥塞跟踪电路与请求器元件相关联地维护针对通过互连件的用于传播由该请求器元件发起的事务的多个路由中的每个路由的拥塞指示。每个路由包括一个或多个通信路径,并且用于传播给定事务的该路由取决于该事务的目标完成器元件。预取节流电路然后响应于对请求器元件希望发起的给定预取事务的指示,在该给定预取事务将被发出到的该多个完成器元件中识别目标完成器元件。然后,根据针对已确定的路由的拥塞指示来确定是否发出该给定预取事务。
Description
背景技术
本技术涉及用于管理预取事务的装置和方法。
通常,处理设备(例如处理器核心)具有一个或多个级别的本地高速缓存,其中数据可被临时保存,以便通过避免从存储器获得此类数据的需要来设法改善性能。在现代处理设备中,可提供预取机制以设法在预期处理设备对数据的后续使用的情况下将该数据预取到本地高速缓存中。虽然此类办法可在有用数据被预取到高速缓存中的情况下通过增加本地高速缓存中的命中率而显著地改善性能,但是为了将数据检索到高速缓存中而发出的各种预取事务可消耗系统的下游部件(诸如用于将处理设备与存储器耦合的互连件)内的显著带宽。
互连件可用于提供系统内的多个不同元件之间的连接,并且通过互连件的通信路径中的一个或多个内的拥塞可因此显著地影响系统性能。
发明内容
在一个示例布置中,提供了一种装置,包括:互连件,该互连件用于在耦合到该互连件的元件之间提供通信路径;其中耦合到互连件的元件至少包括用于通过互连件发起事务的请求器元件、以及多个完成器元件,该完成器元件中的每个完成器元件被布置成对由该完成器元件经由互连件接收的事务做出响应;该装置还包括:拥塞跟踪电路,该拥塞跟踪电路用于与请求器元件相关联地维护针对通过互连件的用于传播由请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的路由取决于该给定事务的目标完成器元件;和预取节流电路,该预取节流电路:响应于对请求器元件为了在预期请求器元件对数据的后续使用的情况下推测性地检索该数据而希望发起的给定预取事务的指示,识别该给定预取事务将被发出到的该多个完成器元件中的目标完成器元件,并且在给定目标完成器元件的情况下根据针对要用于传播该给定预取事务的路由的拥塞指示来确定是否发出该给定预取事务。
在另一个示例布置中,提供了一种管理预取事务的方法,包括:提供耦合到互连件的元件之间的通信路径,其中耦合到互连件的元件至少包括用于通过互连件发起事务的请求器元件、以及多个完成器元件,该多个完成器元件中的每个完成器元件被布置成对由该完成器元件经由互连件接收的事务做出响应;与请求器元件相关联地维护针对通过互连件的用于传播由请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的路由取决于该给定事务的目标完成器元件;响应于对请求器元件为了在预期请求器元件对数据的后续使用的情况下推测性地检索该数据而希望发起的给定预取事务的指示,识别该给定预取事务将被发出到的该多个完成器元件中的目标完成器元件;以及在给定目标完成器元件的情况下,根据针对要用于传播该给定预取事务的路由的拥塞指示来确定是否发出给定预取事务。
在又一个示例布置中,提供一种用以存储用于制造装置的计算机可读代码的非暂时性计算机可读介质,该装置包括:互连件,该互连件用于提供耦合到互连件的元件之间的通信路径,其中耦合到互连件的元件至少包括用于通过互连件发起事务的请求器元件、以及多个完成器元件,该多个完成器元件中的每个完成器元件被布置成对由该完成器元件经由互连件接收的事务做出响应;拥塞跟踪电路,该拥塞跟踪电路用于与请求器元件相关联地维护针对通过互连件的用于传播由请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的路由取决于该给定事务的目标完成器元件;和预取节流电路,该预取节流电路:响应于对请求器元件为了在预期请求器元件对数据的后续使用的情况下推测性地检索该数据而希望发起的给定预取事务的指示,识别该给定预取事务将被发出到的该多个完成器元件中的目标完成器元件,并且在给定目标完成器元件的情况下根据针对要用于传播该给定预取事务的路由的拥塞指示来确定是否发出该给定预取事务。
附图说明
将参考如附图所示的本技术的示例,仅以例示的方式进一步描述本技术,其中:
图1是根据一个示例具体实施的系统的框图;
图2是更详细地图示根据一个示例具体实施的可在请求器元件和互连件的相关联的接口电路内设置的部件的框图;
图3是图示根据一个示例具体实施的如何可处置预取事务的流程图;
图4是图示根据一个示例具体实施的拥塞跟踪电路的操作的流程图;
图5A和图5B示意性地图示了两种不同的机制,通过这两种机制,可与事务相关联地传送拥塞信息;
图6是示意性地图示其中可实现本文所述技术的示例网络互连件的图;
图7是图示根据一个示例具体实施的在图6的互连件内的路由器节点处的事务的处置的流程图;
图8A图示了根据一个示例具体实施的如何可在路由器节点内维护链路拥塞信息,而图8B是图示在一个示例具体实施中如何可由路由器节点维护该拥塞信息的流程图;
图9A是图示根据一个示例具体实施的在采用图8A中图示的办法时如何可更新拥塞级别信息的流程图;
图9B是图示在使用停顿计数器作为拥塞信息的另选具体实施中如何可更新拥塞信息的流程图;
图10是图示根据一个示例具体实施的用于确定与通过互连件的各种路由相关联的拥塞级别的时延跟踪办法的流程图;
图11是图示可用于基于在目标完成器元件内预期命中还是未命中来确定是否发出预取事务的一个办法的流程图;
图12是图示根据某些示例具体实施的在决定如何处置预取事务时如何可使用对至少一些单独的通信路径的拥塞指示的维护的流程图;
图13是图示根据一个示例具体实施的当在响应中提供时如何可使用与单独的通信路径有关的拥塞信息以便更新拥塞指示的流程图;并且
图14是图示根据一个示例具体实施的如何可结合拥塞指示使用繁忙指示的流程图。
具体实施方式
在一个示例具体实施中,提供了一种装置,该装置具有互连件,用于在耦合到互连件的元件之间提供通信路径。互连件可被布置成采用路由方案来确定用于需要在互连件上传送的任何特定通信的一个或多个通信路径。例如,路由方案可为动态/自适应路由方案,其允许路由中的一些灵活性,例如以设法避免拥塞。然而,在一个示例具体实施中,互连件采用静态路由方案,使得每当第一给定元件经由互连件与第二给定元件通信时使用相同的通信路径。应当注意,取决于通信的方向,静态路由方案可采用不同的通信路径。因此,虽然可存在当第一给定元件向第二给定元件发送通信时使用的一个通信路径,但是当第二给定元件向第一给定元件发送通信时可使用不同的通信路径。
耦合到互连件的元件可采取多种形式,但是根据本文所述技术,这些元件至少包括通过互连件发起事务的请求器元件、以及多个完成器元件,该多个完成器元件中的每个完成器元件被布置成对由完成器元件经由互连件接收的事务做出响应。虽然即使仅存在耦合到互连件的单个请求器元件,本文所述技术也可适用,但是应当理解,在许多系统中,将存在多个请求器元件,并且本文所述技术可与这些请求器元件中的任何或全部相关联地使用。此外,完成器元件可采取多种形式。例如,它们可为诸如用于控制对存储器的访问的存储器控制器的从部件,但是也可为中间元件,例如系统高速缓存/相关联的控制电路,其响应于事务可执行查找以确定正在设法访问的数据是否已经存储在系统高速缓存内。在命中的情况下,事务可由该中间元件直接服务,但是在未命中的情况下,该中间元件可将该事务继续传播到另外的完成器元件,例如存储器控制器。
该装置还包括拥塞跟踪电路,用于与请求器元件相关联地维护针对通过互连件的多个路由中的每个路由的拥塞指示,该路由可用于传播由请求器元件发起的事务。每个路由包括一个或多个通信路径,并且用于传播给定事务的路由取决于该给定事务的目标完成器元件。如果需要,拥塞指示被维护的路由中的一个或多个可涉及耦合到互连件的一对元件之间的单个通信路径。然而,另选地或此外,路由中的一个或多个可涉及从请求器元件发出并返回到请求器元件的往返路由,例如从请求器元件到完成器元件并且然后返回到请求器元件的往返路由。此类往返路由典型地将包括多个通信路径。
如先前所提及的,拥塞可能是现代互连件中的重要问题,并且通常通过互连件的某些路径比其他路径更拥塞。通过使用上文讨论的拥塞跟踪电路,有可能维护指示与在传播由请求器元件发起的事务时可采用的多个路由相关联的拥塞的信息。已经发现,当管理由此类请求器元件发出的预取事务时,这可能是有用的。
特别地,现代处理设备可经常使用积极的预取来尝试提高性能,但是预取经常不具有完美的准确性,这可导致某些预取的数据未被使用。此外,由于预取事务的性质,不需要执行那些预取事务,因为仍然保证了正确的操作,但是如果处理设备必须从存储器访问可能已经通过处置预取事务而较早地预取到其本地高速缓存中的数据,则性能可能下降。
根据本文所述技术,通过维护针对用于传播由请求器元件发起的事务的路由中的全部或至少一些的拥塞指示,可提供用于在通过互连件的相关路由内存在拥塞的情况下对给定预取事务进行节流的机制,该相关路由将用于处置该预取事务。特别地,该装置还包括预取节流电路,该预取节流电路被布置成:响应于对请求器元件为了在预期请求器元件对该数据的后续使用的情况下推测性地检索数据而希望发起的给定预取事务的指示,在该给定预取事务将被发出到的多个完成器元件中识别目标完成器元件。然后,在给定目标完成器元件的情况下,预取节流电路根据针对用于传播该给定预取事务的路由的拥塞指示来确定是否发出给定预取事务。
通过此类办法,有可能根据与路由相关联的拥塞来选择性地放弃某些预取事务,该路由将需要用于通过互连件传播该预取事务。通过此类办法,可管理预取事务以便自适应地设法避免超额预订互连件内的瓶颈。应当注意,虽然该技术在采用静态路由方案的互连件中可为高度有益的,并且因此在当从第一给定元件通信到第二给定元件时不存在关于需要使用的通信路径的选择的情况下,当在采用动态/自适应路由方案的互连件内使用时,其也可产生显著益处。特别地,虽然动态/自适应路由可帮助减轻拥塞,但是在一些实例中,其可能不能充分地减少拥塞,并且在此类实例中,使用上述技术可为有益的。例如,此类动态/自适应路由方案可能能够从可用于在特定元件对之间的通信的多个选项中挑选最不拥塞的路由,但是该路由可能仍然显著拥塞。如果在特定元件对之间不管所采用的路由如何都会预期这种情况,则可使用上述技术来选择性地放弃某些预取请求。
在一个示例具体实施中,请求器元件可被布置成提供与请求器元件希望发起的每个预取事务相关联的置信度指示,该置信度指示指示与该预取事务相关联的数据随后由请求器元件使用的可能性。预取节流电路然后可被布置成考虑针对要用于传播给定预取事务的路由的拥塞指示和与给定预取事务相关联的置信度指示两者来确定是否发出给定预取事务。通过此类机制,预取事务被节流的程度可不仅取决于路由拥塞,还取决于对该数据将对请求器元件有用的可能性的指示。因此,作为示例,与将用于预取事务的路由相关联的特定级别的拥塞可足以导致低置信度预取事务被放弃,同时仍可经由该路由发出较高置信度预取事务。
在一个示例具体实施中,预取节流电路被布置成在确定不应当发出给定预取事务时向请求器元件发出信号以识别该给定预取事务已经被拒绝。明确地用信号通知请求器元件预取事务是否正被拒绝可能是有用的,因为这可例如避免潜在的竞争条件出现。然而,在另选设计中,如果不存在通知请求器元件的要求,则允许安静地放弃被拒绝的预取事务可能是适当的。
存在可为给定预取事务识别目标完成器元件的多种方式。然而,在一个示例具体实施中,对请求器元件希望发起的给定预取事务的指示提供数据的存储器地址指示,并且预取节流电路被布置成基于存储器地址指示来识别目标完成器元件。例如,不同的完成器元件可与不同的地址范围相关联,并且因此基于预取事务中指示的存储器地址,然后有可能确定要用作该预取事务的目标完成器元件的适当的完成器元件。
存在拥塞跟踪电路可设法维护针对多个路由的拥塞指示的多种方式。然而,在一个示例具体实施中,拥塞跟踪电路被布置成在接收到对由请求器元件发起的给定事务的响应时从响应中提取与用于给定事务的路由有关的拥塞信息,并且根据所提取的拥塞信息更新针对路由的拥塞指示。
存在可根据所提取的拥塞信息来更新拥塞指示的各种方式。例如,可仅基于所提取的拥塞信息用新拥塞指示来替换现有拥塞指示。另选地,现有拥塞指示可以适当的方式与从所提取的拥塞信息导出的新拥塞指示合并。例如,可采用现有拥塞指示和新拥塞指示的平均来形成更新的拥塞指示。另选地,在拥塞指示采用离散级别的形式的情况下,如果新拥塞指示识别出比现有拥塞指示更高的级别,则现有拥塞指示可递增以形成更新的拥塞指示。类似地,如果新拥塞指示识别出较低的拥塞级别,则现有拥塞指示可递减以形成更新的拥塞指示。通过采用将现有拥塞指示与新拥塞指示以合适方式合并的办法,通过避免对拥塞的变化的反应过度,这在某些情况下可为有用的。特别地,此类办法在拥塞指示的更新中提供了一些平滑化。
在一个示例具体实施中,至少拥塞指示从多个可能的拥塞级别中识别拥塞级别。在一些具体实施中,包括在对事务的响应内的拥塞信息也可直接识别拥塞级别。另选地,该拥塞信息可采取另一种形式,并且例如拥塞跟踪电路可在更新为可适用的路由维护的拥塞指示之前将从事务响应提取的拥塞信息转换成对应的拥塞级别。
存在可与事务相关联地提供拥塞信息的多种方式。在一个示例具体实施中,拥塞信息由边带信号提供,该边带信号在给定事务被路由通过互连件时伴随该给定事务,并且被布置成在给定事务前进通过互连件时被更新,以便作为由拥塞跟踪电路接收的对给定事务的响应的一部分提供拥塞信息。另选地,拥塞信息可由给定事务内的一个或多个字段提供,该一个或多个字段被布置成在给定事务前进通过互连件时被更新,以便作为由拥塞跟踪电路接收的对给定事务的响应的一部分提供拥塞信息。
互连件可以多种方式构造,并且本文所述技术不限于任何特定形式的互连件。然而,在一个示例具体实施中,互连件包括通过链路互连的多个路由器节点,其中路由器节点被布置成提供用于将元件连接到互连件的连接点。用于从第一给定元件到第二给定元件的通信的通信路径然后经由一个或多个链路从第一给定元件所连接到的发起方路由器节点传递到第二给定元件所连接到的接收方路由器节点,其中链路的数目取决于发起方路由器节点和接收方路由器节点的相对位置以及沿着通信路径在发起方路由器节点和接收方路由器节点之间是否存在任何居间路由器节点。每个链路可由多于一个通信路径共享。
利用这种形式的互连件,当事务被路由通过互连件时,路由器节点可在维护事务的拥塞信息的过程中使用。在一个示例具体实施中,每个路由器节点可维护它所连接到的链路的链路拥塞信息,并且可被布置成考虑该事务在其上从该路由器节点输出的链路的链路拥塞信息来更新通过该路由器节点的事务的拥塞信息。
存在可基于链路拥塞信息来更新事务拥塞信息的各种方式。例如,如果事务在其上输出的链路具有超过该事务的现有拥塞信息的链路拥塞,则该事务的拥塞信息可被更新以反映链路拥塞。另选地,为了避免对单个链路上的高拥塞的反应过度,可将事务的现有拥塞信息递增一定量,而不是仅仅使其等于链路上的拥塞。作为具体示例,如果事务的拥塞信息以拥塞级别的形式被维护,则链路拥塞信息也可在拥塞级别方面被维护,并且然后当事务要在具有比事务的现有拥塞信息更高的拥塞级别的链路上被输出时,事务的拥塞信息可被更新以匹配链路拥塞级别,或者替代地事务的现有拥塞级别可被递增。
存在路由器节点可维护其链路的链路拥塞信息的各种方式。然而,在一个示例具体实施中,每个路由器节点考虑在确定的时间窗口内观察到的链路拥塞来维护链路的链路拥塞信息,从而允许所维护的链路拥塞信息表示平均拥塞。作为具体示例,路由器节点可维护某个预定数目的周期中的链路的活动周期的计数(其中活动周期是链路在使用中的周期,并且因此更多的活动周期指示更多的利用,并且因此指示更多的拥塞),并且然后更新与该链路相关联的活动因子。例如,每128个周期可检查活动周期计数,并且然后重置计数器。然后,可基于活动周期计数来为链路更新活动因子。作为具体示例,在使用2比特活动因子来表示拥塞级别的情况下,可使用少于32个活动周期来将拥塞级别设置为00,从而指示最低拥塞级别。类似地,在32和63个活动周期之间可导致将拥塞级别设置为01,在64和95个活动周期之间可导致将拥塞级别设置为10,并且大于95个活动周期可导致将拥塞级别设置为11(即,最高拥塞级别)。以与前面所讨论的相同的方式,作为用新的拥塞级别直接重写现有拥塞级别的另选方案,当活动性分别高于或低于由先前存储的拥塞级别值指示的活动性时,可递增或递减用于链路的2比特拥塞级别值,以便避免对活动性的变化反应太快。
作为需要为链路维护链路拥塞信息的路由器节点的另选方案,为事务维护的拥塞信息可替代地包括停顿周期计数器。然后,每个路由器节点可被布置成每当通过该路由器节点的事务在该路由器节点处停顿而等待该事务要在其上从该路由器节点输出的链路的可用性时更新该停顿周期计数器。在一个示例具体实施中,可使用饱和计数器,使得计数器不能重新计数到较低值。在为每个路由维护的拥塞指示识别拥塞级别的具体实施中,然后拥塞跟踪电路可被布置成在从事务响应提取停顿计数器信息时将停顿周期计数转换成拥塞级别,并且然后适当地更新用于相关联的路由的现有拥塞指示。
作为又一个另选具体实施,可在给定事务通过互连件时更新该给定事务的拥塞信息,以便在响应中向拥塞跟踪电路提供足够信息,以使得拥塞跟踪电路能够确定该给定事务的无竞争时延值。此外,可维护时间戳信息以识别何时由发起方路由器节点将给定事务发出到互连件上以及何时在发起方路由器节点处接收回对该给定事务的响应。拥塞跟踪电路然后可被布置成使用时间戳信息来确定给定事务的往返时间,并且通过从往返时间中减去无竞争时延值来确定拥塞指示。如果需要,所得到的值可被量化为如前面所讨论的拥塞级别。
响应中由拥塞跟踪电路用来确定无竞争时延值的足够信息可采取多种形式,但是在一个示例具体实施中可识别往返路由中的链路的数目和/或用于被访问以处理事务的任何元件的访问时间指示,给定事务经由该往返路由从请求器元件发出并且返回到请求器元件。访问时间指示信息可采取多种形式,例如关于命中还是未命中已经发生在事务被路由到的完成器元件中的指示,和/或对与访问此类完成器元件相关联的访问定时信息的指示。在一些实例中,可使用其他信息来推断定时。例如,最终完成器元件的身份可足以确定是命中还是未命中。例如,如果存储器控制器是返回最终响应的实体,则可推断在充当初始目标完成器元件的系统高速缓存处可能存在高速缓存未命中。
在许多系统中,高速缓存一致性协议可用于保持系统内的各种高速缓存结构中的一致性的数据视图。这可产生一些一致性现象,该现象可导致时延的失真视图。例如,如果事务从具有相关联的一致性逻辑的系统高速缓存完成器元件被转发到预期具有数据的副本的另一个请求器元件,并且该请求器元件在居间时段中已放弃该数据,则该另一个请求器元件可发送指示其不具有该数据的回复,并且然后系统高速缓存/一致性逻辑将需要将该请求继续传播到存储器控制器上,这有效地为该事务增加了两次跳跃。作为另一个示例,如果在接收到事务时在一致性逻辑处未解析数据的一致性状态,则事务可在未决事务完成的同时停顿。由这种一致性现象引起的时延可能不适于在拥塞信息内捕获,因为它可能给出与互连件路由相关联的拥塞的失真视图。因此,如果需要,额外信息可被包括在事务中,该额外信息可被设置为指示一致性协议动作何时已经使事务停顿,并且与该一致性动作相关联的任何定时影响然后可由拥塞跟踪电路忽略。
为其维护拥塞指示的多个路由可采取多种形式,但是在一个示例中包括通过互连件的往返路由,经由该往返路由从请求器元件发出事务并且将事务返回到请求器元件,其中每个往返路由包括多个通信路径,但是这些路由可此外或另选地包括与互连件内的单独的通信路径相关联的路由,事务可在该通信路径上传播。
在其中一个或多个路由与单独的通信路径相关联的情况下,则当事务被路由通过互连件时在该事务内维护的拥塞信息可被布置成提供用于在其往返路由上路由事务的不同通信路径中的一个或多个的拥塞信息。通过提供该附加信息,则有可能不仅更新针对往返路由的拥塞指示(如果此类拥塞指示被维护的话),而且更新该往返路由内的单独的通信路径的拥塞指示。
目标完成器元件可采取多种形式,但是在一个示例具体实施中,目标完成器元件可为中间元件,并且在至少一个条件下,目标完成器元件被布置成将给定事务转发给另外的完成器元件以供处理。
在一个示例具体实施中,事务可维护指示其是否已从目标完成器元件转发到另外的完成器元件的信息。拥塞跟踪电路然后可被布置成根据对给定事务的响应来确定给定事务是否已经被转发到该另外的完成器元件,并且根据该确定来解译拥塞信息。例如,使用该信息,拥塞跟踪电路可确定由事务使用了哪个路由,并且相应地更新它正在维护的拥塞指示。
作为具体示例,拥塞跟踪电路可被布置成维护针对第一往返路由和第二往返路由两者的拥塞指示,在第一往返路由中,给定事务由目标完成器元件处理,在第二往返路由中,给定事务由目标完成器元件转发到该另外的完成器元件以供处理。因此,由于能够根据响应确定事务是否已被转发到该另外的完成器元件,拥塞跟踪电路可确定更新哪个拥塞指示。
在一个示例具体实施中,拥塞跟踪电路可被布置成代替往返路由或除了往返路由之外维护与某些单独的通信路径相关联的路由。作为示例,拥塞跟踪电路还可被布置成针对下列中的至少一者维护附加拥塞指示:从请求器元件到目标完成器元件的通信路径;从该另外的完成器元件到请求器元件的通信路径;从目标完成器元件到该另外的完成器元件的通信路径。预取节流电路然后可被布置成考虑针对请求器元件与目标完成器元件之间的路由的拥塞指示以及附加拥塞指示来确定如何处置请求器元件希望发起的给定预取事务。
存在预取节流电路可根据上述类型的通信路径的附加拥塞指示来确定如何处置给定预取事务的各种方式。例如,通过维护上述单独的通信路径的拥塞指示信息,如果请求器具有设法在不将数据返回到请求器的情况下将该数据预取到系统高速缓存中的选项,则这可能是有用的。例如,如果所使用的通信协议允许请求器在不需要数据响应的情况下向中间元件或存储器控制器发送提示,则请求器可选择仅向中间元件预取数据,例如如果从该另外的完成器元件(例如,存储器控制器)到请求器元件的通信路径被拥塞的话。以这种方式,可避开拥塞路径,并且稍后的需求访问仍可稍后在中间元件/系统高速缓存中命中。
因此,在这种情况下,可通过在从请求器元件到目标完成器元件(在该示例中,目标完成器元件包括系统高速缓存)的通信路径上路由预取事务来实现预取事务,并且在未命中的情况下,然后将从该另外的完成器元件(在这种情况下是存储器控制器)检索数据,但是该数据被返回到中间元件/系统高速缓存以用于高速缓存,而不是数据从存储器控制器返回到请求器元件,从而避开从存储器控制器到请求器元件的拥塞路径。
作为另一个示例,如果已知从该另外的完成器元件回到请求器元件的通信路径拥塞,则请求器可在事务请求中指示应当经由中间元件而不是直接从该另外的完成器元件返回数据。因此,代替使该另外的完成器元件(例如,存储器控制器)直接响应于请求器,可指示它响应于中间元件,并且然后中间元件可响应于请求器。这将避开已知的拥塞路由,同时仍然执行回到请求器元件的完全预取。
作为另一个选项,如果从请求器元件到该另外的完成器元件的通信路径也具有为其维护的拥塞指示信息,则在从请求器到存储器控制器的路由具有低拥塞并且在将预取事务路由到中间完成器元件(例如系统高速缓存)中涉及的通信路径具有高拥塞的情况下,也许有可能将预取事务请求直接发送到存储器控制器。然后,存储器控制器可预取数据并将其直接发送回请求器,或者另选地,将数据发送到中间元件以在相关联的系统高速缓存中高速缓存,如果该数据变得有用,则随后可接着由请求器元件从那里预取该数据。后一种办法可导致在不采用从请求器到系统高速缓存的拥塞路由的情况下预取到系统高速缓存。
作为又一个示例,如果从中间元件/初始目标完成器元件到该另外的完成器元件的路由被拥塞,则预取节流电路可决定拒绝该预取事务,特别是如果例如预期事务将在中间元件的系统高速缓存中未命中并且因此需要被转发到该另外的完成器元件/存储器控制器的话。作为再一个示例,可使用特殊事务,其将向中间元件指示如果在中间元件处存在高速缓存未命中则预取事务应当被放弃,因此避免预取事务在中间元件与该另外的完成器元件之间的拥塞路由上传播。
以上仅仅是在决定如何处置传入预取事务时可如何使用关于单独的通信路径的拥塞指示的示例,并且应当理解,存在可基于该较精细粒度的拥塞指示数据来处置此类预取事务的许多其他方式。
在响应中的拥塞信息提供至少一个单独通信路径的拥塞信息的一个示例具体实施中,拥塞跟踪电路可被布置成更新针对包含该单独通信路径的一个或多个路由的拥塞指示。因此,不仅可更新针对用于路由给定事务的路由的拥塞指示,而且包含单独通信路径的一个或多个其他路由可另外地使其拥塞指示被更新。
在一些实例中可形成目标完成器元件的中间元件可采取多种形式。然而,在一个示例具体实施中,此类中间元件被布置成提供用于高速缓存与所选存储器地址范围相关联的数据的系统高速缓存,并且该另外的完成器元件是用于控制对所选存储器地址范围的至少一部分内的存储器的访问的存储器控制器。
如果需要,较早描述的拥塞指示也可结合与耦合到互连件的一个或多个元件相关联的繁忙指示来使用。例如,预取节流电路还可被布置成接收目标完成器元件的繁忙指示,并且可被布置成根据针对要用于传播给定预取事务的路由的拥塞指示和繁忙指示来确定是否发出预取事务。因此,预取事务可选择性地不仅在要用于此类预取事务的路由出现拥塞时被放弃,而且该决定还可考虑目标完成器元件有多么繁忙。这允许使用该技术来减轻互连件的通信路径内的拥塞,并且减轻当前被认为相对繁忙的某些目标完成器元件上的工作负荷。存在可生成繁忙指示的各种方式,但其可例如由完成器元件基于其未决事务队列的占用水平来生成。
作为考虑繁忙指示和拥塞指示两者的预取节流电路的另选方案,拥塞跟踪电路还可被布置成接收目标完成器元件的此类繁忙指示,并且考虑接收到的繁忙指示来调整针对要用于将事务传播到该完成器元件的路由的拥塞指示。存在可将繁忙指示作为此类调整的因素的各种方式。例如,路由的拥塞指示可被更新以反映拥塞测量和繁忙度测量中的较差者,并将其用作新拥塞指示。例如,如果繁忙指示和拥塞指示两者都由多个离散级别指示,则这可能是有用的办法,并且因此可在繁忙指示和拥塞指示之间进行容易的比较。
拥塞跟踪电路和预取节流电路可位于包含上述技术的系统内的多种位置处。然而,在一个示例具体实施中,该装置还包括提供请求器元件与互连件之间的接口的接口电路,其中拥塞跟踪电路和预取节流电路中的至少一者设置在接口电路内。在此类具体实施中,拥塞跟踪电路和/或预取节流电路可被实现为与互连件相关联的功能,然后该功能截获由所连接的请求器元件发出的预取事务,并且应用上述功能来确定是否允许预取事务通过互连件传播,或者替代地决定预取事务应当被放弃。
请求器元件本身可采取多种形式,但是在一个示例中可包括本地高速缓冲存储装置和与本地高速缓冲存储装置相关联的预取电路,并且预取电路被布置成向接口电路发出对请求器元件希望发起的预取事务的指示。因此,在该示例中,预取电路将以标准方式操作以确定其希望发起的预取事务,并且这些将接着由请求器元件发出以供先前提及的接口电路截获,其中拥塞跟踪电路和预取节流电路然后可如先前讨论的那样操作。
然而,在另选具体实施中,拥塞跟踪电路和预取节流电路中的至少一者可设置在请求器元件内。这将允许潜在的预取事务在其甚至由请求器元件发出之前在源处被放弃,但是将要求拥塞指示信息被传播到请求器元件以使得预取节流电路能够基于所指示的拥塞做出适当的决定。
现在将参考附图描述特定示例。
图1是其中可实现本文所述技术的系统的框图。如图所示,请求器元件10可经由互连件30与多个完成器元件40、45、50耦合。如先前所提及的,本文所述技术可在采纳各种不同路由方案的互连件内采用,并且因此可适用于采用动态/自适应路由方案的互连件和采用静态路由方案的互连件两者。然而,为了以下讨论的目的,将假设采用静态路由方案,并且因此,如图1中示意性地所示,互连件可实现通信路径35,该通信路径实现静态路由方案,使得当从第一给定元件向第二给定元件通信时总是采用具体的通信路径。因此,仅作为示例,将预先确定当从请求器元件10向完成器元件40发送通信时使用互连件内的哪个通信路径35。类似地,将存在当将通信从完成器元件40发送回请求器元件10时使用的预定返回路径。然而,应当注意,这不一定是与由从请求器元件到完成器元件的出站通信使用的通信路径相同的通信路径。例如,互连件内的各种路由结构通常将应用相对简单的路由方案,该路由方案将确定通过其在互连件内转发通信的链路,以便在任何特定方向上实现通信路径,并且通常的情况是通过其将响应从完成器路由到特定请求器的路径不同于当从请求器向该完成器元件发送请求时使用的路径。
虽然在图1中考虑了单个请求器元件10,如由虚线框15、25所指出,一个或多个附加请求器元件可经由相关联的接口电路连接到互连件,并且本文关于请求器元件10所描述的技术,以及特别地由此类请求器元件发出的预取事务的处置,也可与耦合到互连件30的任何其他请求器元件结合来应用。
如图1所示,并且如稍后将更详细地讨论的,与请求器元件10相关联的接口电路20可包括多个部件,包括提供用于跟踪互连件内的拥塞并且用于根据所跟踪的拥塞来将从请求器元件接收的预取事务节流的部件。
如图1所示,请求器元件既可发出需求请求以访问由当前正由该请求器元件执行的操作实际需要的数据,也可发出预取请求,以便设法将在尚未由该请求器元件内的处理电路执行的后续操作期间该请求器元件正预期想要访问的数据检索到该请求器元件中(例如检索到在该请求器元件内提供的任何本地高速缓存结构中)。通过使用此类预取,这可通过增加在请求器元件内设置的一个或多个本地高速缓存结构内的命中率来改善性能,并且因此避免需要经由互连件向一个或多个完成器元件发出需求请求,以便从系统级高速缓存或主存储器获得数据。
图2中示出了可在请求器元件10和互连件30的接口电路20内设置的部件的更多细节。在本文中,接口电路也可被称为路由器节点。如图2所示,处理电路55设置在请求器元件10内,以用于执行一系列数据处理操作,例如由从存储器提取到请求器元件中的指令流需要的操作。可与处理电路55相关联地设置一个或多个级别的高速缓存60,以用于在本地存储存储器中可用数据的子集,从而提高访问速度。预取电路65还可与高速缓存的这些级别中的一个或多个相关联,并且可被布置成监测由处理电路发出的需求访问,目的在于设法预测处理电路在适当的时候可进行什么需求访问。基于该分析,预取电路可然后经由高速缓存60发出预取请求,该预取请求然后被输出到接口电路20,以便设法将预期将来供处理电路55使用的数据检索到高速缓存60中。
结果,可存在在请求器元件10和互连件的接口电路20之间的通信链路上传递的与由处理电路55要求的实际数据有关的需求事务和与预期将来供处理电路使用的数据有关的预取事务的混合。如稍后还将更详细地讨论的,根据一些示例具体实施,置信度指示可与每个预取事务相关联,以提供对预取电路具有将在将来供处理电路使用的数据的相对置信度的指示。特别地,预取电路可采用关于其预取数据的程度的不同级别的进取性,并且那些预取中的一些可比其他预取更具推测性,并且因此具有比其他预取相对更低的置信度,并且该置信度指示可与每个预取事务相关联地被传递到接口电路20。
接口电路/路由器节点20包括路由电路70,其用于通过合适的链路将每个接收的事务路由到互连件内的相邻路由器节点,路由决定基于任何特定事务应当被发出到的所确定的完成器元件。特别地,每个事务将典型地提供存储器地址指示,其指示保存所需数据的存储器地址,并且每个完成器元件可与存储器地址空间内的特定地址范围相关联。此外,路由电路具有由互连件提供的通信路径的知识,并且因此可基于事务需要被发送到哪个完成器元件的知识来确定该事务应当通过哪个链路输出。
如稍后将更详细地讨论的,互连件可以多种不同的方式构造,但是在一个示例中被构造为路由器节点的网状网络。耦合到互连件的任何特定元件将连接到那些节点中的一个,并且因此可基于存储器地址来确定事务的目的地节点。路由电路然后可采用相对简单的方案来决定如何通过互连件向前传播任何特定事务。例如,考虑路由器节点的简单x、y网格,各个路由器节点内的路由电路可被布置成例如首先在x维度上传播事务直到与连接到目标完成器元件的目的地路由器节点的x维度对准,并且然后在y维度上传播事务直到它到达目标完成器元件所连接到的目的地路由器节点。然后可使用相同的路由方案来将事务的响应路由回到请求器元件。
根据本文所述技术,路由器节点还可提供拥塞跟踪电路75和预取节流电路80。拥塞跟踪电路被布置成为相关联的请求器元件10维护针对通过互连件的用于传播由请求器元件10发起的事务的多个路由中的每个路由的拥塞指示。每个路由可包含一个或多个通信路径,其中通信路径是在连接到互连件的特定元件之间提供的路径。因此,在用于事务的目标完成器元件被确定为与系统高速缓存相关联的中间元件(此类中间元件在本文中也被称为主节点)的情况下,则将存在从请求器元件到该主节点的通信路径以及从该主节点回到请求器元件的独立的通信路径。如果路由包括从请求器元件到主节点并回到请求器元件的往返路由,则将看到该路由包括两个通信路径。
然而,在一些具体实施中,拥塞跟踪电路保持跟踪的路由中的一个或多个可为更复杂的路由。例如,考虑提供系统高速缓存的上面提及的主节点,由特定事务请求的数据有可能不存在于该系统高速缓存中,这导致未命中状况。在该实例中,由主节点形成的中间元件可将事务继续传播到另外的完成器元件,该另外的完成器元件例如可为与存储器设备相关联的存储器控制器。存储器控制器然后可在存储器设备内执行访问以获得数据,并且通过另一个通信路径将该数据从该存储器控制器返回到请求器元件。在这种情况下,将看到路由包括三个通信路径,即从请求器元件到主节点的通信路径、从主节点到存储器控制器的通信路径、以及从存储器控制器回到请求器元件的另一个通信路径。
拥塞跟踪电路75可被布置成维护针对这些各种类型的路由中的每个路由或仅针对它们的某个子集的拥塞指示。此外,如稍后将更详细地讨论的,除了往返路由之外,或者实际上作为其另选方案,为其维护拥塞指示的路由中的一个或多个可为仅包括单个通信路径的路由。例如,可为从请求器元件10到特定完成器元件的通信路径保持拥塞指示。
预取节流电路80然后可被布置成截获由请求器元件10发出的任何预取事务,并且应用准则来确定是否允许该预取事务由路由电路70传播,或者是否替代地应当拒绝该预取事务。特别地,应当理解,即使预取事务被拒绝,系统的正确功能仍然被确保,因为预取事务仅仅设法通过比由处理电路55需要的更早地将数据提升到本地高速缓存结构60中来改善性能。然而,也有这样的情况,即,预取事务不总是准确的,并且实际上可预取随后不由处理电路使用的数据。在这种情况下,此类预取事务已经消耗了互连件内没有服务于任何有用目的的带宽。发明人已经认识到,在互连件内经常存在变得特别拥塞的某些链路,并且这可能导致通过使用此类链路的互连件的多个路由内的拥塞。假定不需要执行预取事务,则预取节流电路80的目的是当某些预取事务设法使用拥塞跟踪电路75指示相对拥塞的路由时设法拒绝这些预取事务。
因此,响应于从请求器元件10接收到给定预取事务,预取节流电路80可从由预取事务指定的地址确定该事务应当被转发到的适当目标完成器元件。它可参考拥塞跟踪电路75以得到对与路由相关联的拥塞的指示,该路由将需要通过互连件使用以与该目标完成器元件通信。基于该信息,并且任选地考虑也可与预取事务一起提供的先前提及的置信度指示,预取节流电路80然后可确定是否发出预取事务,因此将其传递到路由电路70以用于向前传播,或者是否替代地拒绝预取事务。在预取事务被拒绝的情况下,预取节流电路80可导致拒绝信号被发回到请求器元件10,以识别预取事务没有被执行。
虽然在图2中拥塞跟踪电路75和预取节流电路80都被示为互连件30的接口电路20内的部件,但是在另选具体实施中,这些结构中的一个或多个可设置在请求器元件内。例如,预取节流功能可被结合在预取电路65内,该预取电路可在其考虑发出预取事务的时间参考拥塞跟踪电路,并且如果确定该预取事务将在通过互连件的相对拥塞的路由上被路由,则在源处选择性地放弃该预取事务。
图3是图示根据本文所述技术处置预取事务的流程图。在步骤100处,确定是否需要预取事务。这例如可为当预取事务从请求器元件10发出到接口电路20时的情况。一旦接收到此类预取事务,则在步骤105处,预取事务连同与该预取事务相关联地提供的任何置信度指示一起被继续传递到预取节流电路80。
在步骤110处,考虑到由预取事务指定的存储器地址来确定事务的目标完成器元件。特别地,如先前所提及的,某些目标完成器元件可与不同的存储器地址范围相关联,并且因此可确定用于任何特定预取事务的所需目标完成器元件。此外,预取节流电路可有权访问指示所需目标完成器元件耦合到的互连件内的路由器节点的信息,并且因此可在步骤115处在给定目标完成器元件的情况下确定要通过互连件使用的路由。如由步骤120所指示的,其然后可从拥塞跟踪电路获得针对所确定的路由的拥塞指示。
在步骤125处,在给定拥塞指示以及任选地还给定由预取事务提供的置信度指示的情况下,然后可确定是否已经满足用于发出预取事务的预定阈值。因此,例如可决定一旦拥塞指示高于某个水平,预取事务就应当被放弃。此外,如果还考虑置信度指示,那么那些阈值可根据不同置信度水平而变化,使得与特定预取事务相关联的置信度越低,其就越容易被放弃。
如果在步骤125处确定还没有满足所要求的阈值,则在步骤130处拒绝预取事务,否则在步骤135处允许经由路由电路70发出预取事务。
图4是图示拥塞跟踪电路75的操作的流程图。假设事务从与请求器元件相关联的路由器节点发出,则该事务将经由一个或多个完成器元件遍历互连件,并且最终将在与请求器元件相关联的路由器节点处接收回对该事务的响应。在步骤150处,确定是否已经接收到对事务的响应。如果接收到,则该过程前进到步骤155。根据本文所述技术,当事务遍历互连件时,与事务相关联地添加拥塞信息,并且一旦接收到事务响应,则在步骤155处由拥塞跟踪电路75提取该拥塞信息。存在拥塞信息可与事务响应相关联地提供的各种方式,例如它可在一个或多个边带信号中提供,或者另选地可在事务响应的一个或多个字段内提供。
在步骤160处,拥塞跟踪电路然后确定用于事务的路由。典型地,这可根据响应内提供的信息来确定。例如,响应可指示哪个完成器元件提供了该响应,并且因此使得能够确定已经用于该事务的路由。基于先前的讨论,应当理解,路由可例如取决于在事务被引导到的初始目标完成器元件中是否已存在命中。例如,如果该初始目标完成器元件是与系统高速缓存相关联的先前描述的主节点,则在未命中的情况下,事务可能已经被继续传播到存储器控制器,并且因此所使用的路由将不同于在主节点处存在命中的情况下已使用的路由。
一旦已确定了路由,则可基于在步骤155处已提取的拥塞信息来确定针对该路由的更新的拥塞指示,该确定过程发生在图4中的步骤165处。在一个示例具体实施中,拥塞指示按照多个离散级别来表达,并且因此在步骤165处将基于所提取的拥塞信息来确定拥塞指示级别。
在步骤170处,确定拥塞指示级别是否不同于由拥塞跟踪电路75为所讨论的路由维护的现有拥塞指示级别。如果不是,则如步骤175所指示,不需要更新由拥塞跟踪电路维护的信息。
然而,如果拥塞指示级别不同,则过程前进到步骤180,在该步骤中,更新针对所确定的路由的拥塞指示。有多种方式可执行此类更新。例如,可用在步骤165处确定的新拥塞指示来替换现有拥塞指示,或者另选地,可以某种合适的方式将现有拥塞指示与新拥塞指示合并。仅作为示例,如果新拥塞指示级别高于现有拥塞指示级别,则现有拥塞指示级别可递增,或者如果新拥塞指示级别低于现有拥塞指示级别,则现有拥塞指示级别可递减。
图5A和图5B图示了当事务被路由通过互连件时可与该事务相关联地维护拥塞信息的两种不同的方式。如图5A所示,在第一示例具体实施中,当事务205在事务通信路径200上被传播时,可提供可用于携带所需拥塞信息的一个或多个边带信号210,其中这些边带信号的内容在事务被路由通过互连件时被更新,例如由事务所通过的各种路由器节点更新。
图5B图示了另选具体实施,其中事务215被扩展以便提供可用于保存拥塞信息的一个或多个字段220,并且当事务例如经由该事务所通过的路由器节点被传播通过互连件时,该拥塞信息可再次被更新。
如先前所提及的,本技术可与任何合适的互连件结构相关联地应用。在一个特定示例具体实施中,可采用网状互连件,诸如图6中示意性地所示。在该示例中,所有请求器元件都采取处理器核心的形式,并且如图所示,那些处理器核心可连接到互连件内的节点中的任一个。还如图所示,可提供多个主节点,其在一个示例具体实施中共同实现系统高速缓存,并且还可包括相关联的高速缓存一致性电路以保持每个核心的数据视图一致。特别地,单独的核心还可具有它们自己的本地高速缓存结构,并且可采用合适的高速缓存一致性协议来确保每个核心看到任何特定数据项的一致视图。在所示示例中,主节点各自实现共享高速缓存切片,并且因此系统高速缓存由多个主节点共同实现,其中任何特定主节点负责特定地址范围。
类似地,多个存储器控制器可连接到互连件内的路由器节点,并且如同主节点一样,存储器控制器可与不同存储器地址范围相关联。每个存储器控制器可耦合到用于存储相关联的地址范围内的数据的合适的存储器存储装置。
如由图6中的示例所示,连接到路由器节点265的处理器核心250可通过出站通信路径260向连接到主节点270的路由器节点255发出事务。如从图2的先前讨论将显而易见的,该路由将经由沿着该通信路径的路由器节点中的每个路由器节点内的路由电路70来实现。特别地,基于通过由核心250发出的事务指定的存储器地址,可对要将该事务转发到的适当完成器元件进行确定。在这种情况下,假设事务涉及可高速缓存的存储器地址,并且该存储器地址属于与主节点270相关联的存储器地址范围。因此,各个路由器节点内的路由电路将事务向左传播两个链路,以便将事务与主节点270存在于其中的y维度对准,并且然后将事务跨三个链路在y维度上路由,直到它到达节点265,从那里事务可由主节点处理。
在命中的情况下,所请求的数据可由主节点直接提供,并且对事务的响应可在返回通信路径275上路由。再次,路由节点首先在x维度上,并且然后在y维度上传送通信,并且作为结果,可看出,返回通信路径275不同于出站通信路径260。
在主节点270内未命中的情况下,则主节点可将事务经由路径280转发到用于所讨论的地址范围的适当的存储器控制器,在这种情况下,假设这是存储器控制器285。存储器控制器然后将在存储器内执行访问以获得数据,并且该数据将在通信路径290上被返回到耦合到请求器元件250的路由器节点255。
根据本文所述技术,事务通过的单独的路由器节点可被布置成更新与该事务相关联地维护的拥塞信息,以便指示在事务经由其路由的一个或多个通信路径上观察到的拥塞。稍后将更详细地讨论该拥塞信息可被维护和更新的各种方式。
图7是图示如何在任何特定路由器节点处处置事务的流程图。在步骤300处,确定事务是否已经由该路由器节点接收到,并且当已经接收到事务时,在步骤305处确定该路由器节点是否附接到用于该事务的目标完成器元件。如果是这种情况,则在步骤310处,将事务从路由器节点传递到完成器元件以供处理。然后在步骤315处确定是否已经从完成器元件接收到响应,并且当接收到响应时在步骤320处基于该响应来更新事务。因此,当事务涉及读取请求时,由主节点检索的数据可被添加到事务以使其能够在传递回请求器元件的响应内继续被传播。
如果在步骤305处确定路由器节点未附接到完成器元件,则在步骤325处确定路由器节点是否附接到请求器元件。如果是这种情况,则这意味着事务已经通过其整个路由,并且现在正在提供由请求器元件请求的响应。因此,该过程接着前进到步骤330,在该步骤中,对事务的响应被传递回到请求器元件。然而,此外,该响应经由先前讨论的拥塞跟踪电路75被传递,以便允许更新针对用于要进行的事务的路由的拥塞指示。此时,可实现图4的先前描述的过程以更新拥塞指示信息。
如果在步骤325处确定路由器节点未附接到请求器元件,则这意味着路由器节点是将需要经由其连接的链路中的一个将事务继续转发到适当的相邻路由器节点的中间路由器节点。因此,如果跟随在步骤325之后的是“否”路径,或者实际上是在步骤320处的事务的更新之后,该过程前进到步骤335,在该步骤中,确定要用于将事务传播到下一路由器节点的适当的输出链路。此时,还可在输出事务之前根据需要更新拥塞信息。现在将参照图8A至图10讨论根据各种不同的示例具体实施更新拥塞信息的方式。
根据图8A中示意性地图示的办法,每个路由器节点350可例如通过将链路拥塞信息存储在本地链路拥塞信息存储装置375内来维护其连接的链路355、360、365、370中的每个链路的链路拥塞信息。因此,根据此类办法,每个路由器节点可维护其链路中的每一个的一些活动因子信息。作为一个示例具体实施,路由器可维护某一数目的周期中的链路的活动周期的计数,并且然后相应地更新其活动因子。例如,每128个周期,可针对每个链路检查活动周期计数,并且然后可重置计数器。路由器节点然后可基于相关联的活动周期计数来更新每个链路的活动因子,并且使用该信息来形成链路拥塞信息。在一个示例中,链路拥塞信息可被维护为多个离散级别中的一个。例如,可维护2比特的拥塞信息指示,从而允许为每个链路识别四个可能的拥塞级别。
对于上述示例,例如可确定在已经监测的128个周期中是否存在少于32个活动周期,这指示轻微拥塞的链路,并且因此链路拥塞信息可被赋予值00。此外,在32和63个活动周期之间可导致链路拥塞指示01,在64和95个活动周期之间可导致链路拥塞指示10,并且大于95个活动周期可导致链路拥塞指示11(即,与链路相关联的最高拥塞级别)。另选地,代替仅仅替换在观察到的最近时间窗口上确定的新值内的任何现有值,当观察到的拥塞分别高于或低于为该链路记录的先前级别时,每个链路的现有级别可递增或递减,以便避免对活动性的变化反应太快。
因此,如图8B所示,根据此类技术,在步骤380处,在确定的时间窗口内监测每个相关联的链路的拥塞,并且然后在步骤385处更新每个链路的拥塞信息,然后重置计数器,之后过程返回到步骤380。
图9A是图示当采用图8A和图8B的较早描述的办法时可如何实现在图7的步骤335处的拥塞信息的更新的流程图。在步骤400处,可确定所确定的输出链路的拥塞级别是否大于在事务的拥塞信息中识别的当前拥塞级别。如果否,则在步骤405处事务内的拥塞信息可保持不修改。然而,如果拥塞级别更大,则过程可前进到步骤410,在该步骤中,可更新在事务的拥塞信息中识别的拥塞级别。这可以多种方式进行。例如,先前的拥塞级别可仅用针对输出链路确定的拥塞级别来替换,使得到在请求器处接收回对事务的响应时,所指示的拥塞信息指示与事务已通过的最拥塞的链路相关联的拥塞级别。另选地,先前识别的拥塞级别可在这种情况下仅被递增,以便避免对单个拥塞链路的反应过度。
虽然此类办法可提供用于在事务被路由通过互连件时维护与该事务相关联的拥塞级别的高效机制,但是它确实需要每个路由器节点维护链路拥塞信息。根据如由图9B的流程图示意性地图示的另选机制,可避免对维护此类链路拥塞信息的要求。根据图9B所示的技术,通过停顿计数器的维护来执行在图7的步骤335处的拥塞信息的更新。特别地,停顿计数器可与事务相关联,并且当该事务被路由通过互连件时被更新,以指示当该事务通过互连件时由该事务观察到的停顿周期的数目。因此,在步骤410处,正在处置事务的当前路由器节点可确定该事务是否已经在该路由器节点处停顿了一个或多个周期。如果没有停顿发生,并且因此路由器在没有任何停顿周期的情况下在期望的输出链路上输出事务,则在步骤415处,拥塞信息可保持不修改。然而,如果已经存在一个或多个停顿周期,则在步骤420处,与事务相关联的停顿计数器可递增取决于停顿周期的数目的量。
在一个示例具体实施中,停顿计数器可被实现为饱和计数器,并且因此当其达到其最大计数值时将不重新计数到低值。根据上述停顿计数器办法,拥塞跟踪电路可被布置成在适当的时候从对事务的响应中提取停顿计数器值,并且然后将其量化为先前描述的拥塞级别中的一个,以便获得由事务使用的路由的指示性拥塞级别。
图10是图示用于在事务被路由通过互连件时跟踪拥塞信息的又一另选办法的流程图。在步骤450处,维护开始时间戳,其指示何时从发起方路由器节点(即,请求器元件连接到的路由器节点)发出事务。然后,如由步骤455所指示,当事务通过互连件时,与该事务相关联地维护信息,该信息足以使得拥塞跟踪电路75在适当的时候能够确定无竞争时延值。因此,这提供了作为将事务路由通过互连件的结果而固有地观察到的时延的基准指示,可将事务被路由通过互连件所花费的实际时间与该基准指示进行比较。
为了向拥塞跟踪电路提供足够的信息以确定无竞争时延值,存在可被维护的多条信息。例如,可保持遍历的链路的数目的指示,并且此外可保持关于被访问以处理事务的任何元件的一些访问时间指示信息。例如,当主节点被访问时,可提供命中或未命中指示以识别是存在命中还是未命中,并且如果事务被继续路由到存储器控制器,则可保持关于与存储器访问相关联的访问时间的信息,诸如是存在行缓冲器命中还是冲突、对任何存储器控制器队列延迟的指示等。
在步骤460处,可获得指示事务何时被返回到发起方路由器节点的结束时间戳。在步骤465处,然后可由拥塞跟踪电路基于事务内维护的信息来计算无竞争时延值。例如,所指示的跳跃的数目可乘以已知的跳跃时间,即遍历链路所花费的时间,并且此外可添加指示对系统高速缓存的访问时间以及对存储器的访问时间(如果事务确实经由存储器路由的话)的信息。
在步骤470处,然后可通过从结束时间戳中减去开始时间戳,并且然后减去无竞争时延值来计算拥塞指示。在步骤475处,该值接着可被量化为拥塞级别,随后在步骤480处,如果在步骤475处计算的拥塞级别不同于为该路由记录的现有拥塞级别,则可接着更新针对所确定的路由的拥塞指示。应当注意,由于根据该技术在步骤470处计算的值被量化为拥塞级别,这意味着当事务被路由通过互连件时维护的时间戳和其他访问参数不需要完全准确,并且因此可被优化以降低成本。
图11示意性地图示了拥塞跟踪电路75可如何被布置成根据在将被用作初始目标完成器元件的主节点处发生高速缓存命中还是高速缓存未命中来保持针对可被采用的不同路由的单独的拥塞指示。特别地,在步骤500处,如果传递到特定主节点的事务引起主节点中的命中,则针对将被使用的路由维护拥塞指示,并且此外,如果在主节点处实际上存在未命中,则针对将发生的另选路由维护单独的拥塞指示,并且相应地将事务继续转发到存储器控制器。
然后,在步骤505处,预取节流电路可被布置成使用用于进行此类预测的任何合适的机制来进行关于预期主节点命中还是主节点未命中的预测,并且此后在步骤510处可在确定是否发出预取事务时参考适当的拥塞指示。例如,如果已知在存在主节点命中的情况下将采用的路由非常轻微地拥塞,但是在存在主节点未命中的情况下将使用的路由严重拥塞,并且确定可能发生未命中,则可由预取节流电路80决定放弃预取事务,而不是将其通过互连件传播。
图12示意性地图示了预取节流电路80可如何在拥塞跟踪电路75为互连件内的至少一些单独的通信路径而不是仅为往返路由维护拥塞指示的情况下做出关于预取事务的决定。因此,如由步骤520所指示,拥塞跟踪电路确实维护用于一个或多个单独的通信路径的拥塞指示,并且然后在步骤525处,预取节流电路基于将用于传播事务的单独的通信路径的拥塞指示来确定如何处置其当前正在考虑的预取事务。因此,如果我们考虑这样的示例,其中请求器元件将在给定通信路径上将事务传播到特定主节点,并且然后如果在主节点中发生命中,则主节点将在另一个给定通信路径上将响应传播回到请求器,同时如果替代地在主节点中存在未命中,则事务将被继续传播到存储器控制器,并且然后从存储器控制器传播回到请求器元件,如果存在针对这些单独通信路径中的一个或多个维护的拥塞指示信息,则预取节流电路可基于可使用的不同通信路径上的相对拥塞的知识来定制关于预取事务所采取的决定。
预取节流电路如何以这种方式定制其决定的各种示例在图12的框525中图示。例如,预取节流电路可决定仅向主节点发送预取事务,并且如果在主节点中存在未命中则放弃预取事务。例如,如果下游通信路径中的一个(例如主节点到存储器控制器路径和/或存储器控制器到请求器路径)拥塞,则这可能是适当的。
作为另一个示例,可决定将预取事务传播到主节点,但是对事务进行标记,使得如果在主节点中存在未命中,则主节点被布置成联系存储器控制器,以便将数据预取到主节点中,但是不将数据返回到请求器。例如,如果存储器控制器到请求器的通信路径拥塞,则可使用此类办法。
作为另一个示例,如果在主节点中存在未命中,则事务可被标记,使得响应从存储器控制器经由主节点被路由回,而不是直接从存储器控制器路由到请求器元件。同样,如果存储器控制器到请求器的路径拥塞,则这可能是有用的。
作为另一个示例,预取节流电路可被布置成设法直接从存储器控制器而不是经由适当的主节点预取数据,例如,如果已知请求器到主节点的路径拥塞的话。应当注意,在一些具体实施中,可能仍然需要将数据发送到主节点,以便确保高速缓存一致性协议可被遵守。
应当理解,上述示例仅仅是可采取的各种选项的说明,并且如果预取节流电路有权访问单独通信路径的拥塞指示,则存在预取节流电路可做出的许多其他决定。
图13是图示如果对事务的响应提供至少一个单独通信路径的拥塞信息,则如何可修改由拥塞跟踪电路75执行的更新过程的流程图。特别地,步骤550检测对事务的响应何时提供此类拥塞信息,并且在该情况下,在步骤555处,拥塞跟踪电路不仅更新针对由事务使用的路由的拥塞指示,而且还可被布置成检测它正在为其维护拥塞指示的其他路由,该其他路由也采用响应已经为其提供拥塞信息的单独的通信路径。在这种情况下,它因此可使用单独的通信路径拥塞信息来另外地更新针对任何此类附加路由的拥塞指示,该附加路由也利用已经为其提供拥塞信息的通信路径。
在一个示例具体实施中,单独的完成器元件也可能能够提供指示那些完成器元件有多繁忙的繁忙指示。这些繁忙指示可以多种方式导出,但是可例如指示等待由那些完成器元件处理的任何事务队列的占用率。在这种情况下,繁忙指示可以某一合适方式与拥塞指示组合以供在决定是传播还是放弃单独的预取事务时使用。
图14示意性地图示了可使用的两种另选机制。特别地,当在步骤570处接收到针对目标完成器元件的繁忙指示时,则在步骤575处,可确定拥塞跟踪电路75是否正在以它将该繁忙指示与针对请求器元件与该目标完成器元件之间的路由的拥塞指示合并的模式操作。如果是,则在步骤580处,针对该路由的拥塞指示可被更新以不仅考虑拥塞,而且考虑目标完成器元件的繁忙度。仅作为示例,如果繁忙指示也以级别来表达,则拥塞跟踪电路可被布置成评估拥塞级别和繁忙级别中的哪一个指示更差的拥塞测量,并且然后更新拥塞指示以反映该更差的级别。在此类具体实施中,然后预取节流电路可以先前讨论的方式操作,当确定是否继续传播给定预取事务或者替代地拒绝该预取事务时,仅应用针对路由的拥塞指示。
然而,在另选的操作模式中,拥塞跟踪电路75可被布置成不将繁忙指示与拥塞指示合并,并且替代地,该过程可前进到步骤585,在该步骤中,预取节流电路80可替代地将繁忙指示并入到其关于是否发出预取事务的决定过程中。特别地,它可根据从拥塞跟踪电路获得的针对将被使用的路由的拥塞指示和针对目标完成器元件获得的繁忙指示两者来决定是否发出预取事务。
应当理解,通过此类办法,本文所述技术还能够适应单独的完成器元件的负载中的可变性,例如通过允许对较低负载的完成器元件进行更多预取,同时提高使得预取事务能够被继续路由到更高负载的请求器元件所需的置信度阈值。
本文所描述的概念可体现于用于制造体现所描述概念的装置的计算机可读代码中。例如,计算机可读代码可在半导体设计和制造过程的一个或多个阶段(包括电子设计自动化(EDA)阶段)使用,以制造包括体现这些概念的装置的集成电路。以上计算机可读代码可另外地或另选地使得能够对体现本文所描述概念的装置进行定义、建模、模拟、验证和/或测试。
例如,用于制造体现本文所描述概念的装置的计算机可读代码可体现在定义这些概念的硬件描述语言(HDL)表示的代码中。例如,代码可定义用于定义体现这些概念的装置的一个或多个逻辑电路的寄存器传送级(RTL)抽象。代码可用Verilog、SystemVerilog、Chisel或VHDL(超高速集成电路硬件描述语言)以及诸如FIRRTL的中间表示来定义体现装置的一个或多个逻辑电路的HDL表示。计算机可读代码可提供使用系统级建模语言诸如SystemC和SystemVerilog体现概念的定义或概念的其他行为表示,这些行为表示可由计算机解译以使得能够对概念进行模拟、功能和/或形式验证和测试。
另外地或另选地,计算机可读代码可定义体现本文所述概念的集成电路部件的低级描述,诸如一个或多个网表或集成电路布局定义,包括诸如GDSII的表示。一个或多个网表或集成电路部件的其他计算机可读表示可通过将一个或多个逻辑合成过程应用于RTL表示以生成用于制造体现本发明的装置的定义来生成。另选地或另外地,一个或多个逻辑合成过程可从计算机可读代码生成待加载到现场可编程门阵列(FPGA)中以将FPGA配置为体现所述概念的比特流。FPGA可出于在制造集成电路之前验证和测试概念的目的被部署,或者FPGA可直接部署在产品中。
计算机可读代码可包括用于制造装置的代码表示的混合,例如包括RTL表示、网表表示或在半导体设计和制造过程中用于制造体现本发明的装置的另一计算机可读定义中的一者或多者的混合。另选地或另外地,概念可在半导体设计和制造过程中用于制造装置的计算机可读定义和定义一旦制造就将由所定义装置执行的指令的计算机可读代码的组合中定义。
此类计算机可读代码可设置在任何已知的暂态计算机可读介质(诸如通过网络进行的有线或无线代码传输)或非暂态计算机可读介质诸如半导体、磁盘或光盘中。使用计算机可读代码制造的集成电路可包括诸如以下中的一者或多者的部件:中央处理单元、图形处理单元、神经处理单元、数字信号处理器或单独或共同体现概念的其他部件。
应当理解,本文所述技术提供用于管理来自请求器元件的预取事务的机制,以便自适应地避免超额预订互连件中的瓶颈。所描述的技术可充分利用基于互连件争用的预取事务的拓扑感知动态置信度阈值化,以加速较高优先级事务,同时将带宽重新分配到较少争用的路由,同时维护互连件内的现有路由方案(例如,静态路由)。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理装置进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可以在其中实现各种变化、增加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征一起进行各种组合。
Claims (27)
1.一种装置,所述装置包括:
互连件,所述互连件用于提供耦合到所述互连件的元件之间的通信路径;
其中耦合到所述互连件的所述元件至少包括用于通过所述互连件发起事务的请求器元件、以及多个完成器元件,所述完成器元件中的每个完成器元件被布置成对由所述完成器元件经由所述互连件接收的事务做出响应;
所述装置还包括:
拥塞跟踪电路,所述拥塞跟踪电路用于与所述请求器元件相关联地维护针对通过所述互连件的用于传播由所述请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的所述路由取决于所述给定事务的目标完成器元件;以及
预取节流电路,所述预取节流电路:响应于对所述请求器元件为了在预期所述请求器元件对数据的后续使用的情况下推测性地检索所述数据而希望发起的给定预取事务的指示,识别所述给定预取事务将被发出到的所述多个完成器元件中的目标完成器元件,并且在给定所述目标完成器元件的情况下根据针对用于传播所述给定预取事务的所述路由的所述拥塞指示来确定是否发出所述给定预取事务。
2.根据权利要求1所述的装置,其中:
所述请求器元件被布置成提供与所述请求器元件希望发起的每个预取事务相关联的置信度指示,所述置信度指示指示与所述预取事务相关联的所述数据随后由所述请求器元件使用的可能性;以及
所述预取节流电路被布置成根据针对要用于传播所述给定预取事务的所述路由的所述拥塞指示和与所述给定预取事务相关联的所述置信度指示两者来确定是否发出所述给定预取事务。
3.根据权利要求1或权利要求2所述的装置,其中所述预取节流电路被布置成在确定不应当发出所述给定预取事务时向所述请求器元件发出信号,以识别所述给定预取事务已经被拒绝。
4.根据任一前述权利要求所述的装置,其中对所述请求器元件希望发起的所述给定预取事务的所述指示提供针对所述数据的存储器地址指示,并且所述预取节流电路被布置成基于所述存储器地址指示来识别所述目标完成器元件。
5.根据任一前述权利要求所述的装置,其中所述拥塞跟踪电路被布置成在接收到对由所述请求器元件发起的给定事务的响应时从所述响应中提取与用于所述给定事务的所述路由有关的拥塞信息,并且根据所提取的拥塞信息更新针对所述路由的所述拥塞指示。
6.根据权利要求5所述的装置,其中至少所述拥塞指示从多个可能的拥塞级别中识别拥塞级别。
7.根据权利要求5或权利要求6所述的装置,其中所述拥塞信息由下列中的一项提供:
边带信号,所述边带信号在所述给定事务被路由通过所述互连件时伴随所述给定事务,并且被布置成在所述给定事务前进通过所述互连件时被更新,以便作为由所述拥塞跟踪电路接收的对所述给定事务的所述响应的一部分提供所述拥塞信息;
所述给定事务内的一个或多个字段,所述一个或多个字段被布置成在所述给定事务前进通过所述互连件时被更新,以便作为由所述拥塞跟踪电路接收的对所述给定事务的所述响应的一部分提供所述拥塞信息。
8.根据权利要求7所述的装置,其中:
所述互连件包括通过链路互连的多个路由器节点,其中所述路由器节点被布置成提供用于将所述元件连接到所述互连件的连接点;
用于从第一给定元件到第二给定元件的通信的所述通信路径经由一个或多个链路从所述第一给定元件所连接到的发起方路由器节点传递到所述第二给定元件所连接到的接收方路由器节点,其中所述链路的数目取决于所述发起方路由器节点和所述接收方路由器节点的相对位置以及沿着所述通信路径在所述发起方路由器节点和所述接收方路由器节点之间是否存在任何居间路由器节点;以及
每个链路能够由多于一个通信路径共享。
9.根据权利要求8所述的装置,其中:
每个路由器节点维护其所连接到的所述链路的链路拥塞信息,并且被布置成考虑事务在其上从所述路由器节点输出的所述链路的所述链路拥塞信息来更新通过所述路由器节点的所述事务的所述拥塞信息。
10.根据权利要求9所述的装置,其中每个路由器节点考虑在确定的时间窗口内观察到的链路拥塞来维护所述链路的所述链路拥塞信息。
11.根据权利要求8至10中任一项所述的装置,其中:
所述拥塞信息包括停顿周期计数器,并且每个路由器节点被布置成每当通过所述路由器节点的事务在所述路由器节点处停顿而等待所述事务要在其上从所述路由器节点输出的所述链路的可用性时更新所述停顿周期计数器。
12.根据权利要求8至11中任一项所述的装置,其中:
当所述给定事务通过所述互连件时,所述给定事务的所述拥塞信息被更新,以便在所述响应中向所述拥塞跟踪电路提供足够的信息,以使得所述拥塞跟踪电路能够确定所述给定事务的无竞争时延值;
时间戳信息被维护以识别何时由所述发起方路由器节点将所述给定事务发出到所述互连件上以及何时在所述发起方路由器节点处接收回对所述给定事务的所述响应;以及
所述拥塞跟踪电路被布置成使用所述时间戳信息来确定所述给定事务的往返时间并且通过从所述往返时间中减去所述无竞争时延值来确定所述拥塞指示。
13.根据权利要求12所述的装置,其中在所述响应中由所述拥塞跟踪电路使用以确定所述无竞争时延值的所述足够的信息识别下列中的一项或多项:
往返路由中的链路的数目,所述给定事务经由所述往返路由从所述请求器元件发出并返回到所述请求器元件;
用于被访问以处理所述事务的任何元件的访问时间指示。
14.根据权利要求5至13中任一项所述的装置,其中所述多个路由包括下列中的至少一者:
通过所述互连件的往返路由,事务经由所述往返路由从所述请求器元件发出并返回到所述请求器元件,其中每个往返路由包括多个通信路径;
与所述互连件内的单独的通信路径相关联的路由,事务能够在所述通信路径上传播。
15.根据权利要求14所述的装置,其中:
所述目标完成器元件是中间元件,并且在至少一个条件下,所述目标完成器元件被布置成将所述给定事务转发到另外的完成器元件以供处理。
16.根据权利要求15所述的装置,其中:
所述拥塞跟踪电路被布置成根据对所述给定事务的所述响应来确定所述给定事务是否已被转发到所述另外的完成器元件,并且根据确定来解译所述拥塞信息。
17.根据权利要求16所述的装置,其中所述拥塞跟踪电路被布置成维护针对第一往返路由和第二往返路由两者的拥塞指示,在所述第一往返路由中,所述给定事务由所述目标完成器元件处理,在所述第二往返路由中,所述给定事务由所述目标完成器元件转发到所述另外的完成器元件以供处理。
18.根据权利要求15至17中任一项所述的装置,其中:
所述拥塞跟踪电路还被布置成针对下列中的至少一者维护附加拥塞指示:
从所述请求器元件到所述目标完成器元件的通信路径;
从所述另外的完成器元件到所述请求器元件的通信路径;以及
从所述目标完成器元件到所述另外的完成器元件的通信路径;以及
所述预取节流电路被布置成考虑针对所述请求器元件与所述目标完成器元件之间的所述路由的所述拥塞指示以及所述附加拥塞指示来确定如何处置所述请求器元件希望发起的所述给定预取事务。
19.根据权利要求14至18中任一项所述的装置,其中在所述响应中的所述拥塞信息提供至少一个单独通信路径的拥塞信息,并且所述拥塞跟踪电路被布置成更新针对包含所述单独通信路径的一个或多个路由的拥塞指示。
20.根据权利要求15至19中任一项所述的装置,其中形成所述目标完成器元件的所述中间元件被布置成提供用于高速缓存与所选存储器地址范围相关联的数据的系统高速缓存,并且所述另外的完成器元件是用于控制对所述所选存储器地址范围的至少一部分内的存储器的访问的存储器控制器。
21.根据任一前述权利要求所述的装置,其中:
所述预取节流电路还被布置成接收所述目标完成器元件的繁忙指示,并且被布置成根据针对要用于传播所述给定预取事务的所述路由的所述拥塞指示以及所述繁忙指示来确定是否发出所述预取事务。
22.根据任一前述权利要求所述的装置,其中:
所述拥塞跟踪电路还被布置成接收所述目标完成器元件的繁忙指示,并且调整针对要用于传播所述给定预取事务的所述路由的所述拥塞指示,以还考虑所述繁忙指示。
23.根据任一前述权利要求所述的装置,还包括提供所述请求器元件与所述互连件之间的接口的接口电路,其中所述拥塞跟踪电路和所述预取节流电路中的至少一者设置在所述接口电路内。
24.根据权利要求23所述的装置,其中所述请求器元件包括本地高速缓存存储装置和与所述本地高速缓存存储装置相关联的预取电路,并且所述预取电路被布置成向所述接口电路发出对所述请求器元件希望发起的所述预取事务的所述指示。
25.根据任一前述权利要求所述的装置,其中:
所述拥塞跟踪电路和所述预取节流电路中的至少一者设置在所述请求器元件内。
26.一种管理预取事务的方法,所述方法包括:
提供耦合到互连件的元件之间的通信路径,其中耦合到所述互连件的所述元件至少包括通过所述互连件发起事务的请求器元件、以及多个完成器元件,所述完成器元件中的每个完成器元件被布置成对由所述完成器元件经由所述互连件接收的事务做出响应;
与所述请求器元件相关联地维护针对通过所述互连件的用于传播由所述请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的所述路由取决于所述给定事务的目标完成器元件;
响应于对所述请求器元件为了在预期所述请求器元件对数据的后续使用的情况下推测性地检索所述数据而希望发起的给定预取事务的指示,识别所述给定预取事务将被发出到的所述多个完成器元件中的目标完成器元件;以及
在给定所述目标完成器元件的情况下,根据针对要用于传播所述给定预取事务的所述路由的所述拥塞指示来确定是否发出所述给定预取事务。
27.一种非暂态计算机可读介质,所述非暂态计算机可读介质用于存储用于制造装置的计算机可读代码,所述装置包括:
互连件,所述互连件用于提供耦合到所述互连件的元件之间的通信路径,其中耦合到所述互连件的所述元件至少包括通过所述互连件发起事务的请求器元件、以及多个完成器元件,所述完成器元件中的每个完成器元件被布置成对由所述完成器元件经由所述互连件接收的事务做出响应;
拥塞跟踪电路,所述拥塞跟踪电路用于与所述请求器元件相关联地维护针对通过所述互连件的用于传播由所述请求器元件发起的事务的多个路由中的每个路由的拥塞指示,其中每个路由包括一个或多个通信路径,并且用于传播给定事务的所述路由取决于所述给定事务的目标完成器元件;以及
预取节流电路,所述预取节流电路:响应于对所述请求器元件为了在预期所述请求器元件对数据的后续使用的情况下推测性地检索所述数据而希望发起的给定预取事务的指示,识别所述给定预取事务将被发出到的所述多个完成器元件中的目标完成器元件,并且在给定所述目标完成器元件的情况下根据针对要用于传播所述给定预取事务的所述路由的所述拥塞指示来确定是否发出所述给定预取事务。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/529,768 | 2021-11-18 | ||
US17/529,768 US11625349B1 (en) | 2021-11-18 | 2021-11-18 | Apparatus and method for managing prefetch transactions |
PCT/GB2022/052550 WO2023089292A1 (en) | 2021-11-18 | 2022-10-07 | Apparatus and method for managing prefetch transactions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117980889A true CN117980889A (zh) | 2024-05-03 |
Family
ID=83902717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280064611.5A Pending CN117980889A (zh) | 2021-11-18 | 2022-10-07 | 用于管理预取事务的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11625349B1 (zh) |
CN (1) | CN117980889A (zh) |
WO (1) | WO2023089292A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220365879A1 (en) * | 2021-05-11 | 2022-11-17 | Nuvia, Inc. | Throttling Schemes in Multicore Microprocessors |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002252640A (ja) * | 2001-02-23 | 2002-09-06 | Fujitsu Ltd | ネットワーク中継装置及び方法並びにシステム |
US7606159B2 (en) * | 2005-08-30 | 2009-10-20 | Cisco Technology, Inc. | Method and apparatus for updating best path based on real-time congestion feedback |
US8730965B2 (en) * | 2011-01-05 | 2014-05-20 | Google Inc. | Systems and methods for dynamic routing in a multiprocessor network using local congestion sensing |
KR101725755B1 (ko) * | 2013-06-28 | 2017-04-11 | 인텔 코포레이션 | 적응형 라우팅을 이용하여 자원 활용도를 제어하기 위한 메커니즘 |
KR101630519B1 (ko) * | 2014-08-12 | 2016-06-24 | 삼성에스디에스 주식회사 | 데이터 트래픽의 전송을 제어하는 장치 및 방법 |
US10476780B2 (en) * | 2017-09-29 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Routing packets based on congestion of minimal and non-minimal routes |
-
2021
- 2021-11-18 US US17/529,768 patent/US11625349B1/en active Active
-
2022
- 2022-10-07 WO PCT/GB2022/052550 patent/WO2023089292A1/en active Application Filing
- 2022-10-07 CN CN202280064611.5A patent/CN117980889A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11625349B1 (en) | 2023-04-11 |
WO2023089292A1 (en) | 2023-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI830694B (zh) | 用於資料處理和資料存儲的設備及方法 | |
US10754778B2 (en) | Control of pre-fetch traffic | |
US9122608B2 (en) | Frequency determination across an interface of a data processing system | |
US9367505B2 (en) | Coherency overcommit | |
CN101604295A (zh) | 优化基于目录的一致性协议中的并发访问 | |
US9575921B2 (en) | Command rate configuration in data processing system | |
US9495314B2 (en) | Determining command rate based on dropped commands | |
EP3800555B1 (en) | An apparatus and method for handling cache maintenance operations | |
CN117980889A (zh) | 用于管理预取事务的装置和方法 | |
KR20150132099A (ko) | 서로 다른 계층 레벨의 메모리 노드를 가진 메모리 시스템에서의 데이터 캐싱 | |
US8667199B2 (en) | Data processing apparatus and method for performing multi-cycle arbitration | |
CN105824604B (zh) | 多输入多输出处理器流水线数据同步装置及方法 | |
CN110235113B (zh) | 存储器控制器和用于数据处理的系统和方法 | |
CN111858096B (zh) | 一种基于目录的最近距离cache监听读的方法及系统 | |
Mazloumi et al. | A hybrid packet/circuit-switched router to accelerate memory access in NoC-based chip multiprocessors | |
CN115442430A (zh) | 向耦合到互连件的代理发送请求 | |
US10963409B2 (en) | Interconnect circuitry and a method of operating such interconnect circuitry | |
US11016899B2 (en) | Selectively honoring speculative memory prefetch requests based on bandwidth state of a memory access path component(s) in a processor-based system | |
Chen et al. | Round-trip DRAM access fairness in 3D NoC-based many-core systems | |
JPWO2004025478A1 (ja) | メモリブロック間のレイテンシ差を活用するデータ処理装置および方法 | |
US11561900B1 (en) | Targeting of lateral castouts in a data processing system | |
US11068425B2 (en) | Semiconductor device and bus generator | |
Lin et al. | Design and experimental evaluation of an adaptive object replication algorithm in distributed network systems | |
CN117597673A (zh) | 用于处置停滞数据的数据处理装置和方法 | |
Dey | Approximation on On-Chip Networks for Mitigation of Memory and Bandwidth Walls |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |