针对原子数据访问请求进行的资源分配转让专利

申请号 : CN201811423317.0

文献号 : CN110035021A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赤拉尼维·阿查里雅肖恩·詹姆斯·索尔兹伯里爱德华·瓦尔达尼扬亚瑟·布莱恩·劳顿

申请人 : Arm有限公司

摘要 :

本发明涉及针对原子数据访问请求进行的资源分配。提供了一种数据访问路由电路(4、6),用于将数据访问请求路由到所选择的目的地节点。数据访问路由电路支持需要读取响应的读取请求、需要写入响应的写入请求和需要读取响应和写入响应两者的至少一种类型的原子数据访问请求。提供了资源分配电路(70、71)以控制用于处理需要读取响应的数据访问请求的资源的分配。资源分配电路(70、71)预留资源以用于处理至少一种类型的原子数据访问请求,并防止预留的资源(76)被使用来处理读取请求。

权利要求 :

1.一种装置,包括:

数据访问路由电路,其响应于从指定目标地址的请求节点接收的数据访问请求而发布用于触发从多个目的地节点中选择的所选目的地节点服务所述数据访问请求的信号;

其中,当所述数据访问请求为从所述请求节点通过读取请求信道接收的读取请求时,所述数据访问路由电路被配置为发布用于触发所选目的地节点来提供取决于从由所述目标地址标识的目标存储位置读取的数据的读取响应的信号;

当所述数据访问请求为从所述请求节点通过写入请求信道接收的写入请求时,所述数据访问路由电路被配置为发布用于触发所选目的地节点提供确认对用于向所述目标存储位置写入数据的写入操作的服务的写入响应的信号;

当所述数据访问请求为从所述请求节点通过所述写入请求信道接收的至少一种类型的原子数据访问请求时,所述数据访问路由电路被配置为发布用于触发所选目的地节点提供所述读取响应和所述写入响应两者的信号;

所述数据访问路由电路包括资源分配电路,用以控制用于处理需要读取响应的数据访问请求的资源的分配;以及所述资源分配电路被配置为预留资源以用于处理所述至少一种类型的原子数据访问请求,并防止使用预留资源来处理读取请求。

2.根据权利要求1所述的装置,其中,由所述资源分配电路控制分配的所述资源的至少一部分被共享以供读取请求和所述至少一种类型的原子数据访问请求两者使用。

3.根据权利要求1所述的装置,其中,所述数据访问路由电路包括:

读取信道控制电路,用以管理用于在所述读取请求信道上接收的数据访问请求的资源的分配;以及写入信道控制电路,用以管理用于在所述写入请求信道上接收的数据访问请求的资源的分配。

4.根据权利要求1所述的装置,其中,所述数据访问路由电路被配置为当用于处理读取请求或者需要读取响应的原子数据访问请求的唯一可用资源是所述预留资源时,暂停读取请求。

5.根据权利要求1所述的装置,其中,所述预留资源包括专用于处理所述至少一种类型的原子数据访问请求的专用资源。

6.根据权利要求1所述的装置,其中,当在用资源级别超过阈值时,所述资源分配电路被配置为预留剩余资源以用于处理所述至少一种类型的原子数据访问请求。

7.根据权利要求6所述的装置,其中,所述在用资源级别指示以下各项中的一项:

正用于处理读取请求和所述至少一种类型的原子数据访问请求两者的资源量;以及正用于处理读取请求的资源量,而与正用于处理所述至少一种类型的原子数据访问请求的资源量无关。

8.根据权利要求1所述的装置,其中,所述数据访问路由电路包括用于存储与需要读取响应的数据访问请求相关联的信息的缓冲器,并且由所述资源分配电路分配的所述资源包括所述缓冲器中的空间。

9.根据权利要求8所述的装置,其中,所述缓冲器包括读取跟踪器,用以存储指示需要读取响应的数据访问请求的属性的跟踪信息。

10.根据权利要求9所述的装置,其中,所述跟踪信息指定以下各项中的至少一项:与所述数据访问请求相关联的、将被排除在发布到所述目的地节点的信号之外并且当所述读取响应从目的地节点返回时与所述读取响应重新组合在一起的附加信息;以及由所述请求节点为数据访问请求指定的请求标识符,以供所述数据访问路由电路在控制指定相同请求标识符的数据访问请求被服务的顺序时使用,或用于控制对指定相同请求标识符的数据访问请求的响应被返回到所述请求节点的顺序。

11.根据权利要求8所述的装置,其中,所述缓冲器包括响应缓冲器,用以存储响应于需要读取响应的所述数据访问请求所接收到的读取响应。

12.根据权利要求1所述的装置,其中,由所述资源分配电路分配的所述资源包括一个或多个信用点,用于允许需要读取响应的数据访问请求使用在所述数据访问路由电路下游设置的下游缓冲器中的空间。

13.根据权利要求1所述的装置,其中,所述至少一种类型的原子数据访问请求包括以下各项中的至少一项:指定所述目标地址和另一操作数的原子交换请求,用于触发所述目的地节点返回提供从所述目标存储位置读取的数据的所述读取响应,并返回确认对用于将所述另一操作数写入所述目标存储位置的无条件写入操作的服务的所述写入响应;

指定所述目标地址、交换操作数、和比较操作数的原子比较与交换请求,用于触发所述目的地节点返回取决于从所述目标存储位置读取的数据的所述读取响应,并返回确认对用于将所述交换操作数有条件地写入所述目标存储位置的有条件写入操作的服务的所述写入响应,条件是从所述目标存储位置读取的数据与所述比较操作数之间的比较;以及指定所述目标地址和附加操作数的原子加载请求,用于触发所述目的地节点返回取决于从所述目标存储位置读取的数据的所述读取响应,并返回确认对将结果值写入所述目标存储位置的有条件或无条件写入操作的服务的写入响应,所述结果值包括施加到所述附加操作数和从所述目标存储位置读取的数据的算术或逻辑运算的结果。

14.一种方法,包括:

响应于从指定目标地址的请求节点接收到的数据访问请求,发布用于触发从多个目的地节点中选择的所选目的地节点服务所述数据访问请求的信号;

当所述数据访问请求为从所述请求节点通过读取请求信道接收的读取请求时,发布用于触发所选目的地节点提供取决于从由所述目标地址标识的目标存储位置读取的数据的读取响应的信号;

当所述数据访问请求为从所述请求节点通过写入请求信道接收的写入请求时,发布用于触发所选目的地节点提供确认用于向所述目标存储位置写入数据的写入操作已进展到预定点的写入响应的信号;

当所述数据访问请求为从所述请求节点通过写入请求信道接收的至少一种类型的原子数据访问请求时,发布用于触发所选目的地节点提供所述读取响应和所述写入响应两者的信号;以及控制用于处理需要读取响应的数据访问请求的资源的分配,其中,资源被预留来处理所述至少一种类型的原子数据访问请求,以防止使用预留资源来处理读取请求。

15.一种电子设计文件,包括表示包括根据权利要求1所述的装置的集成电路的设计的集成电路定义数据。

说明书 :

针对原子数据访问请求进行的资源分配

技术领域

[0001] 本技术涉及数据处理领域。更具体地,涉及数据访问请求的路由。

背景技术

[0002] 集成电路可以包括若干组件,这些组件可以通过发布指定目标存储器地址的数据访问请求来进行通信。可以提供数据访问路由电路(例如,互连或片上网络),其根据由数据访问请求指定的目标地址来管理数据访问请求从集成电路的给定请求节点到适当的目的地节点的路由。

发明内容

[0003] 至少一些示例提供了一种装置,包括:数据访问路由电路,该数据访问路由电路响应于从指定目标地址的请求节点接收的数据访问请求而发布用于触发从多个目的地节点中选择的所选目的地节点服务该数据访问请求的信号;
[0004] 其中,当数据访问请求为从请求节点通过读取请求信道接收的读取请求时,数据访问路由电路被配置为发布用于触发所选目的地节点来提供取决于从由目标地址标识的目标存储位置读取的数据的读取响应的信号;
[0005] 当数据访问请求为从请求节点通过写入请求信道接收的写入请求时,数据访问路由电路被配置为发布用于触发所选目的地节点提供确认对用于向目标存储位置写入数据的写入操作的服务的写入响应的信号;
[0006] 当数据访问请求为从请求节点通过写入请求信道接收的至少一种类型的原子数据访问请求时,数据访问路由电路被配置为发布用于触发所选目的地节点提供读取响应和写入响应两者的信号;
[0007] 数据访问路由电路包括资源分配电路,用于控制用于处理需要读取响应的数据访问请求的资源的分配;以及
[0008] 资源分配电路被配置为预留资源以用于处理至少一种类型的原子数据访问请求,并防止使用该预留资源来处理读取请求。
[0009] 至少一些示例提供了一种方法,包括:响应于从指定目标地址的请求节点接收的数据访问请求,发布用于触发从多个目的地节点中选择的所选目的地节点服务该数据访问请求的信号;
[0010] 当数据访问请求为从请求节点通过读取请求信道接收的读取请求时,发布用于触发所选目的地节点来提供取决于从由目标地址标识的目标存储位置读取的数据的读取响应的信号;
[0011] 当数据访问请求为从请求节点通过写入请求信道接收的写入请求时,发布用于触发所选目的地节点提供确认用于向目标存储位置写入数据的写入操作已进展到预定点的写入响应的信号;
[0012] 当数据访问请求为从请求节点通过写入请求信道接收的至少一种类型的原子数据访问请求时,发布用于触发所选目的地节点提供读取响应和写入响应两者的信号;以及[0013] 控制用于处理需要读取响应的数据访问请求的资源的分配,其中,资源被预留来处理至少一种类型的原子数据访问请求,以防止使用预留资源来处理读取请求。
[0014] 至少一些示例提供了电子设计文件,其包括表示包括如上所述的装置的集成电路的设计的集成电路定义数据。该电子设计文件可以存储在存储介质上。存储介质可以是非暂态存储介质。
[0015] 从以下将结合附图阅读的示例的描述中,本技术的其他方面、特征和优点将变得显而易见。

附图说明

[0016] 图1示意性地示出了具有经由互连或片上网络进行通信的多个组件的数据处理系统的示例;
[0017] 图2示出了具有用于处理需要写入响应和读取响应两者的原子数据访问请求的远原子处理逻辑的目的地节点的示例;
[0018] 图3是示出可由互连处理的不同类型的数据访问事务的示例的表格;
[0019] 图4示出了具有用于控制用于处理数据访问请求的资源的分配的资源分配电路的数据访问路由电路的示例;
[0020] 图5更详细地示出了数据访问路由电路的示例;
[0021] 图6和图7示出了控制针对读取和原子数据访问请求的缓冲器空间分配的两个示例;
[0022] 图8和图9示出了控制用于针对读取和原子数据访问请求控制对下游缓冲器的访问的信用点(credit)的分配的两个示例;以及
[0023] 图10是示出经由数据访问路由电路来控制对数据访问请求的处理的方法的流程图。

具体实施方式

[0024] 诸如集成电路或片上系统之类的装置可以具有数据访问路由电路,该数据访问路由电路响应于从指定目标地址的请求节点接收的数据访问请求而发布用于触发从多个目的地节点中选择的所选目的地节点服务该数据访问请求的信号。例如,数据访问路由电路可以包括互连或片上网络。数据访问路由电路可以支持多种类型的请求。当数据访问请求为从请求节点通过读取请求信道接收的读取请求时,数据访问路由电路可以发布用于触发所选目的地节点来提供取决于从由目标地址标识的目标存储位置读取的数据的读取响应的信号。当数据访问请求为通过写入请求信道从请求节点接收的写入请求时,数据访问路由电路可以发布用于触发所选目的地节点提供确认对用于向目标存储位置写入数据的写入操作的服务的写入响应的信号。
[0025] 此外,数据访问路由电路可以支持至少一种类型原子数据访问请求。当从请求节点通过写入请求信道接收的数据访问请求是至少一种类型的原子数据访问请求时,数据访问路由电路可以发布用于触发所选目的地节点提供读取响应和写入响应两者的信号。因此,与分别仅返回读取响应和写入响应中的一者的读取请求和写入请求不同,至少一种类型的原子数据访问请求可以返回读取响应和写入响应两者。例如这对于这样的操作可能很有用:需要从目标存储位置读取值并需要使相对简单的逻辑或算术运算应用于该读取值且还需要根据该运算结果随后使目标存储位置被写入值的操作。如果不支持原子请求,则需要发布读取请求以将数据值读取至请求节点,并且请求节点在发布单独的写入请求以将结果写回目标存储位置之前对读取值执行所需运算。如果目的地节点可以直接支持对这种事务的处理,那么这会缩短读取和写入之间的时长,使得更容易确保读取和写入由电路的其他节点原子地(atomically)进行观察并降低复杂度以及管理对由不同请求节点共享的资源的冲突访问。在写入请求和原子之间共享写入请求信道是有用的,因为写入和原子两者可以提供来自请求节点的数据以使其被转发到目的地节点。
[0026] 然而,可能需要通过数据访问路由电路来将读取资源和写入资源两者分配给原子数据请求。数据访问路由电路可以具有资源分配电路,该资源分配电路控制用于处理需要读取响应的数据访问请求的资源的分配。因此,资源分配电路可以控制针对读取请求和需要读取响应的原子数据访问请求两者对读取资源的分配。但是,由于读取业务量常常可能高于原子数据访问请求业务量,因此存在所有可用的读取资源都可能已经分配用于处理读取请求的风险,这会阻碍对至少一种类型的原子数据访问请求的服务。当在写入请求信道上接收到至少一种类型的原子数据访问请求时,后续的写入请求可能被待处理的原子阻塞。因此,即使提供了独立的读取和写入信道,也可能意味着大量的读取业务可能会因为原子的存在而阻止写入进度,这通常是不被期望的,因为某些应用程序要求写入不应被读取所阻塞。
[0027] 资源分配电路可以预留资源以用于处理至少一种类型的原子数据访问请求,并防止该预留资源被使用于处理读取请求。这意味着有一部分资源可以保证可用于处理原子数据访问请求,这样即使存在大量读取业务,原子数据访问请求也可以取得进展,从而降低大量读取业务阻塞写入信道上的请求的几率。这可以提高整个数据访问路由电路的性能,并由此提高使用该数据访问路由电路的整个系统的性能。
[0028] 在一些实施方式中,数据访问路由电路可以划分可用于处理需要读取响应的请求的资源,使得第一部分资源仅用于读取请求,而第二部分仅用于至少一种类型的原子数据访问请求。然而,更有效的是,资源的至少一部分被共享以供读取请求和至少一种类型的原子数据访问请求两者使用,其结果是如果读取或原子数据访问请求中的一者以较低量接收到,则另一类型的请求可以使用共享资源。这可以实现更有效的资源使用并减少所需的总资源量。
[0029] 数据访问路由电路可以具有读取信道控制电路,用于管理用于在读取请求信道上接收的数据访问请求的读取资源的分配,以及写入信道控制电路,用于管理用于在写入请求信道上接收的数据访问请求的资源的分配。因此,通过为读取和写入请求信道提供单独的控制电路,那么这可以实现分别对可具有不同的资源要求的读取和写入请求的更有效的处理。在一些情况下,读取和写入信道可以通过物理上分离的信号路径接收请求。替代地,可以通过公共总线来从请求节点接收请求,但是请求在接收时被分离并在数据访问路由电路内单独进行管理。
[0030] 当用于处理读取请求或需要读取响应的原子数据访问请求的唯一可用资源是已经为至少一种类型的原子数据访问请求所预留的预留资源时,数据访问路由电路可以暂停读取请求。因此,即使有一些可以使用的资源,但由于它已为原子预留,因此它不允许被用于读取,并且读取请求被暂停以确保可以使用预留资源处理任何后续接收的原子请求,从而避免阻塞写入信道。
[0031] 有许多预留资源的方法。在一个示例中,预留资源可以包括专用于处理至少一种类型的原子数据访问请求的专用资源。因此,所述专用资源可能不被允许用于任何读取请求。用于处理需要读取响应的请求的资源的剩余部分可以用于读取请求或至少一种类型的原子数据访问请求。
[0032] 提供用于处理原子请求的专用资源可以实现减少为用于处理读取请求的剩余资源提供的逻辑量。例如,如果专用资源包括缓冲器中仅能用来处理原子数据访问请求的预留槽,则用于执行特定于原子的操作(该操作对于读取不是必需的)的控制逻辑可被提供用于为原子预留的专用槽,但可以从至少一些其他槽中省去。由于更有可能使用预留槽来处理原子,所以其他一些槽可能无法处理原子以节省相关原子请求控制逻辑的电路面积和功耗,因此没有必要在每个缓冲器槽中提供用于处理读取和原子请求两者的全能逻辑。
[0033] 替代地,没有必要为原子贡献特定专属资源来执行预留。另一种方法可以是所有资源都可以用于原子数据访问请求或读取请求,但是当在用资源级别超过阈值时,则资源分配电路可以预留任何剩余资源以用于处理至少一种类型的原子数据访问请求。因此,资源分配电路可以使用虚拟预留方法,而不是特定资源永久地专用于处理原子,在该虚拟预留方法中,在用资源级别超过阈值之前,任何资源都可以用于任何类型的请求,但是一旦在用资源级别超过阈值,则最后剩余的些许资源实例仅能被用于至少一种类型的原子数据访问请求。
[0034] 可以通过资源计数器跟踪在用资源级别,该资源计数器可以在为请求分配资源时(例如,在接收到相应的请求时)递增,并且在释放资源时(例如,在向请求节点发布针对该请求的相应的响应时)递减。在用资源级别可以通过不同方式进行跟踪。在一些示例中,在用资源级别可以指示正用于处理读取请求和至少一种类型的原子数据访问请求两者的资源量。因此,无论哪些请求占用了初始资源块,最后剩余的资源实例都只能分配给原子。替代地,在用资源级别可以指示正用于处理读取请求的资源量,但是可以与正用于处理至少一种类型的原子数据访问请求的资源量无关。例如,跟踪在用资源级别的资源计数器可以响应于针对读取请求进行的资源分配而递增,但是当资源被分配给原子数据访问请求时可以不递增。在这种情况下,如果已为原子数据访问请求分配了资源,但由于这不会对用于判定是否读取可被分配资源的在用资源级别产生影响,因此仅需为原子预留少量的额外资源。也就是说,如果最初的一批资源被分配给了读取,则可以为原子预留最后些许资源实例,以确保总是有一些机会来处理原子,但是如果已经为足够多的原子分配了资源那么就没有为原子预留更多资源的必要。
[0035] 由资源分配电路控制来进行分配的资源可以是处理需要读取响应的数据访问请求所需的任何资源。所述资源可被需要以允许将请求发布到目的地(例如,以获得总线上的带宽或下游缓冲器中的空间),或者被需要来处理从目的地节点接收回的响应。
[0036] 在一个示例中,数据访问路由电路可以具有用于存储与需要读取响应的数据访问请求相关联的信息的缓冲器,并且资源分配电路可以控制对缓冲器中的空间的分配。因此,缓冲器的某些槽可被预留用于处理至少一种类型的原子数据访问请求,这些槽或者通过提供用于原子数据访问请求的专用槽被永久地预留,或者通过跟踪在用槽并且如上所述一旦在用级别超过阈值时预留剩余槽而进行预留。
[0037] 缓冲器可以有各种用途。在一些示例中,缓冲器可以包括读取跟踪器,用于存储指示需要读取响应的数据访问请求的属性的跟踪信息。例如,跟踪信息可以指定与从请求节点接收的数据访问请求相关联的附加信息,该附加信息将被排除在发布到目的地节点的信号之外,然后当读取响应从目的地节点返回时与读取响应重新组合在一起。例如,有时请求节点可以将某些信息(例如辅助请求节点跟踪存储器访问等待时间的跟踪相关的数据)附加到数据访问请求。但是,这样的跟踪相关信息或其他附加信息可能不能被提供给目的地节点,因为可能并不存在用于向目的地节点发布这种信息的适当信号路径,并且在任何情况下,目的地节点可能并不需要该附加信息。因此,读取跟踪器可以在缓冲器中分配用于存储该附加信息的条目,然后当接收到读取响应时,可以将附加信息添加到从读取响应返回的读取数据中并被返回到请求节点。
[0038] 缓冲器中指定的另一种形式的跟踪信息可以是由请求节点为数据访问请求指定的请求标识符。请求标识符可以被数据访问路由电路使用来控制指定相同请求标识符的数据访问请求被服务的顺序,或者用于控制将针对这样的数据访问请求的响应被返回至请求节点的顺序。有时,请求节点可能要求某一系列数据访问事务以特定顺序来处理。为了确保数据访问路由电路或数据访问路由电路下游的电路不对这样的请求进行重新排序,请求节点可以将这些请求标记为以相同请求标识符的顺序进行处理。因此,当接收到请求时,读取跟踪器可以缓冲先前接收的、仍在进行中的数据访问请求的请求标识符,以确保在指定相同标识符的先前请求已经取得充分进展之前不处理针对相同标识符的后续请求。
[0039] 无论为每个请求存储的读取跟踪信息的形式如何,缓冲器中都需要一些空间来处理需要读取响应的请求的跟踪信息。如果读取请求占用了读取跟踪缓冲器中的所有空间,则这可能会阻止原子请求的进度,进而会导致对写入信道上的写入请求的连带效应。可以通过在读取跟踪器中为至少一种类型的原子数据访问请求预留空间来解决该问题。
[0040] 另一种形式的缓冲器可以是响应缓冲器,用于存储响应于需要读取响应的数据访问请求所接收的读取响应。例如,可能需要缓冲读取响应,因为一些目的地节点可能返回具有与请求节点所预期的读取响应不同数据宽度的读取响应,因此响应缓冲器可以缓冲读取响应直到所有要组合成单个响应的读取响应已接收到,然后向请求节点提供经组合的响应。此外,可以缓冲读取响应以提供响应的重新排序。再次,并不希望由于读取请求已经占用了响应缓冲器中的所有条目而阻止原子数据访问请求(继而写入请求),因此在响应缓冲器中为原子预留空间会是有用的。
[0041] 可以由资源分配电路分配的资源的另一示例可以是一个或多个信用点(credit),用于允许需要读取响应的数据访问请求来使用在数据访问请求电路下游设置的下游缓冲器中的空间。例如,用于向目的地节点通传数据访问请求的存储器控制器或路由器或其他组件可以具有缓冲器,其用于在下游信号信道上没有足够的带宽来立即通传请求时缓冲该请求。这种不属于数据访问路由电路本身的下游缓冲器会对性能产生影响。即使这种下游缓冲器不是数据访问路由电路本身的一部分,数据访问路由电路也会顾及到在这种下游缓冲器处可用的容量。这可以通过向请求发布信用点并基于下游缓冲器的容量控制可以被发布的信用点的数目来实现。例如,计数器可以跟踪已经向下游发布的请求的数目,并且如果计数器指示已发布了足够多的请求来填充缓冲器,则进一步的请求可被延迟,直到已接收到对先前发布的请求的响应。因此,由资源分配电路提供的用于控制对下游缓冲器的使用的信用点控制机制也可以为需要读取和写入响应两者的各种类型的原子数据访问请求预留信用点。例如,这可以通过如下方式来完成:使用只能用于原子数据访问请求的特殊信用点,并将可以被分配给读取请求的信用点数目限制为小于下游缓冲器的总容量,或者在读取和原子请求之间共享信用点,但一旦发布的在用信用点超过阈值,则为原子预留剩余信用点。
[0042] 至少一种类型的原子数据访问请求可以具有多个形式。任何给定的实施方式可以仅支持这些类型的原子数据访问请求中的一种类型,或者可以支持多种类型。因此,至少一种类型的原子数据访问请求可以包括以下各项中的至少一者:
[0043] ●原子交换请求,其指定目标地址和另一操作数,用于触发目的地节点返回提供从目标存储位置读取的数据的读取响应,并返回写入响应,该写入响应确认对将另一操作数写入目标存储位置的无条件写入操作的服务;
[0044] ●原子比较与交换请求,其指定目标地址、交换操作数、和比较操作数,用于触发目的地节点返回取决于从目标存储位置读取的数据的读取响应,并返回写入响应,该写入响应确认对将交换操作数有条件地写入目标存储位置的有条件写入操作的服务,条件是从目标存储位置读取的数据与比较操作数之间的比较;以及
[0045] ●原子加载请求,其指定目标地址和附加操作数,用于触发目的地节点返回取决于从目标存储位置读取的数据的读取响应,并返回写入响应,该写入响应确认对将结果值写入目标存储位置的有条件或无条件写入操作的服务,所述结果值包括对附加操作数和从目标存储位置读取的数据施加的算术或逻辑运算的结果。
[0046] 这些类型的原子数据访问请求不必仅仅是所支持类型的原子数据访问请求,并且还可以提供需要读取和写入响应两者的其他原子数据访问请求。
[0047] 而且,在一些情况下,系统还可以包括仅需要写入响应但不需要读取响应的另一种类型的原子数据访问请求。这样的请求可以被认为是原子的(atomic),因为到目标存储位置的写入可以取决于从目标存储位置读取的值,使得它仍然需要在目的地节点处原子地执行读取和写入。然而,如果对于请求节点无需接收从目标存储位置读取的值,则可能仅需要确认对写入操作的服务的写入响应。对于此类不需要读取响应的原子数据访问请求,可以以与写入请求类似的方式来处理,因此不需要分配任何读取资源。因此,预留的读取资源可以不用于这样的另外类型的原子数据访问请求。因而没有必要为所有类型的原子数据访问请求预留资源。
[0048] 图1示意性地示出了数据处理系统2(例如,集成电路或片上系统)的示例,其具有数据访问路由电路4、6,用于在请求节点和目的地节点之间路由数据访问请求以及将对这样的数据的响应从目的地节点路由到请求节点。在该示例中,系统2包括多个主设备,例如:一个或多个中央处理单元(CPU)6或CPU集群;图形处理单元(GPU)8;USB主设备10,用于控制通过通用串行总线(USB)进行的与设备的交互;PCIe控制器12,用于控制通过PCI Express总线进行的与连接到系统2的设备的交互;数字信号处理器(DSP)14;显示控制器和/或图像信号处理器16;视频控制器18;系统控制器20,其可以提供多种系统控制功能,例如控制直接存储器访问操作、控制安全操作(例如加密或其他片上安全操作)、或控制与外围设备的交互;调制解调器系统控制器22用于控制经由调制解调器进行的通信。系统控制器20和调制解调器系统控制器22可以具有网络接口控制器(NIC)24。所有主设备6至22可以能够充当请求节点,用于发布要被系统的目的地节点服务的数据访问请求。
[0049] 该系统可以具有多个可以充当目的地节点的组件,例如包括多个存储器控制器26,用于控制对动态随机存取存储器(DRAM)的访问;存储器控制器28,用于控制对静态随机存取存储器(SRAM)的访问;存储器控制器30,用于控制对只读存储器(ROM)的访问;闪存控制器32,用于控制对闪存的访问;外围控制器34,用于控制对外围设备的访问;网络接口控制器36,用于控制经由网络接口进行的与远程设备或其他外围设备的交互。目的地节点还可以包括数据路由电路4、6内的系统缓存38,其可以缓存来自存储器系统26-36的一些数据,以使某些数据访问请求可被服务而无需将它们通传到下游存储器组件。此外,路由电路
4、6本身内部的配置元件,例如定义用于控制路由电路4、6的操作的一个或多个软件可配置参数的控制寄存器,可以充当用于指定映射到该配置元件的存储器地址的数据访问请求的目的地节点。
[0050] 在图1的示例中,主设备6、8中的一些主设备经由缓存一致性互连4耦合,该缓存一致性互连负责管理由相应主设备缓存保持的缓存数据之间的一致性。缓存一致性互连可以具有监听过滤器40,用于跟踪在特定主设备的缓存中缓存的数据,并且可以通过发布监听事务(以检查与在其他主设备中缓存的目标地址相关联的数据的一致性状态,使得如果一个主设备请求对数据进行读取或写入访问,则另一主设备缓存中针对相同地址处的数据可被无效,或者如果数据是污浊的,则可以将其他主设备缓存中的最新值提供给请求主设备和/或写回存储系统)来对指定目标地址的读取和写入数据访问请求进行响应。任何已知的一致性协议可以用于缓存一致性互连4。
[0051] 其他主设备10到22(可以不包括缓存)不需要经由缓存一致性互连4连接。系统互连6将缓存一致性互连4的输出和非缓存型主设备10到22与相应的目标设备26到36耦合。系统互连6用于将事务路由到基于请求指定的目标地址选择的目标目的地节点,并用于将响应路由回请求节点。系统互连6不需要负责管理各个主设备中的缓存数据之间的一致性。
[0052] 在该示例中,系统互连6被实现为片上网络(NoC),其包括多个路由器44,用于将多个主接口46(可以从其接收来自各个主设备6-22的数据访问请求)耦合到多个目的地接口48(用于向各个目的地设备26-36输出请求)。每个主接口46负责解码由数据访问请求指定的地址,以标识要采用来途经片上网络6、经由路由器44到达与所选择的将服务该数据访问请求的目的地节点相关联的目的地接口48的特定路由路径。在一些情况下,主接口46还可以将用于片上网络6断言(assert)的请求的协议转换为用于跨片上网络6路由请求的内部表示。如果请求被转换为内部协议,则目的地接口48可以将它们转换回请求所使用的原始协议,以便由目的地进行服务。替代地,一些目的地节点可以直接以片上网络6使用的形式处理请求,从而无需在目的地接口处进行转换。对于每个目的地接口48,当它从目的地节点
26-36接收到对数据访问请求的响应时,目的地接口48沿着由相应请求采用的路径将该响应发回发布请求的主接口46,然后,主接口46将响应返回给请求节点。
[0053] 当存在大量要连接的主设备和目的地设备时,如图1所示的片上网络6是有用的,因为路由器布置44可以被设计为满足给定系统的要求以便提供适当的带宽级别并提供足够数目的路由器,使得在不显著损失信号幅度的情况下能够容纳针对在芯片上路由请求所必须的物理距离。对于预期需要大量业务的请求和目的地节点对,可以在它们之间提供额外的路由器或信号信道,而其他请求/目的地节点对可以具有较少的容量。
[0054] 片上网络的使用不是必需的,并且在其他示例中,可以在系统互连6内使用不同的拓扑。例如,可以使用主接口和目的地接口之间的一系列点对点连接,或者可以使用环形拓扑,在该环形拓扑中所有请求被断言到环形总线上然后围绕该环形总线行进,直到它们到达所需的目标接口。此外,可以使用网状拓扑,其中每个接口46、48连接到网格上的点,并且请求和响应可以在网格上与对应的主接口和目的地接口46、48相关联的点之间遍历。但是,片上网络的使用可以随着主设备和目的地设备的数目的增加而实现更好的扩展。
[0055] 图2示出了阐述在集成电路2或片上系统内的互连4、6的使用的示图。通常,互连可以从多个请求节点50接收请求,这些请求节点可以是图1中所示的主设备6至22中的任何设备。互连充当数据访问路由电路以控制请求到目的地节点52的路由,该目的地节点可以是互连内的系统缓存38或图1中描述的下游目的地26至36中的一者。由请求指定的地址用于选择哪个目的地将服务该请求。当目的地节点已服务该请求时,由目标节点52返回响应,并且将该响应提供回请求节点50。
[0056] 如图2所示,目的地节点中的至少一者可以包括远原子处理逻辑54,其可以响应于由请求节点中的一者触发的原子数据访问请求来执行原子操作。该原子操作可以包括读取和写入两者,并且可以涉及对由目标节点读取的值施加的算术或逻辑运算,以便确定应该将哪个值写回到目标存储位置。
[0057] 图3示出了总结了互连4、6可支持的多种类型的数据访问请求的一张表,请求类型包括以下各项:
[0058] ●读取请求。请求节点(RN)50发布指定目标地址的读取请求,并且作为响应,目的地节点(DN)52返回读取响应,该读取响应提供了从由目标地址标识的目标存储位置(“寻址位置”)读取的数据。
[0059] ●写入请求。RN 50发布指定目标地址和写入数据(Wdata)的写入请求,作为响应,DN 52返回写入响应,该写入响应确认对将Wdata写入寻址位置的写入操作的服务。
[0060] ●原子存储。RN 50发布指定目标地址和Wdata的原子存储请求。作为响应,DN 52返回写入响应,该写入响应确认对向寻址位置写入被应用于Wdata和从寻址位置读取的数据的某个处理函数的结果的写入操作的服务。被应用于读取数据和Wdata的函数可以例如是诸如加法或减法运算之类的算术运算,或诸如逻辑与AND、逻辑或OR、或逻辑异或XOR之类的逻辑运算。该函数也可以是比较函数,例如返回Wdata和读取数据中的最大值或最小值。在某些情况下,写入操作可以是有条件操作,这是因为如果函数是取最大或取最小函数并且从寻址位置读取的数据已被证明为最大值或最小值,则可能没有必要向寻址位置写入任何值,因为旧值已经是正确的值。因此,可以提供多种形式的原子存储操作,每种形式对应于被应用于写入数据和读取数据的不同函数,以便确定应该在寻址位置中存储什么值。
[0061] ●原子加载。RN 50发布指定目标地址和Wdata的原子加载请求。作为响应,DN 52返回写入响应,该写入响应确认对向寻址位置写入关于Wdata和从寻址位置读取的数据的函数的结果的服务的写入操作。该函数可以是上面关于原子存储讨论的任何类型的函数。此外,DN 52返回读取响应,该读取响应提供从寻址位置读取的旧数据或由写入产生的新数据。因此,原子加载请求以与原子存储相同的方式来处理,除了在读取响应中还将寻址位置的旧数据或新数据返回到RN 50。
[0062] ●原子交换。RN 50发布指定目标地址和Wdata的原子交换请求。作为响应,DN 52执行将Wdata写入寻址位置并返回确认写入操作已被服务的写入响应的无条件写入操作。此外,DN 52返回读取响应,该读取响应提供了已从寻址位置读取的旧数据(即,在执行写入之前已存储在寻址位置的数据)。
[0063] ●原子比较。RN 50发布指定目标地址、比较数据值(Cdata)和交换数据值(Sdata)的原子比较请求。Cdata和Sdata都可以在写入数据信道上编码,该数据信道可用于传送Wdata以用于写入请求或其他形式的原子请求中的一个形式的原子请求。响应于原子比较请求,DN 52返回写入响应,该写入响应确认对Sdata到寻址位置的有条件写入的服务。该有条件写入是以Cdata和从寻址位置读取的数据之间的比较为条件的。例如,Sdata可被写入寻址位置,条件是从寻址位置读取的数据等于Cdata、不等于Cdata、或者大于或小于Cdata。一些实施方式可以支持实现不同形式的比较的远原子处理逻辑54,而其他系统可以仅提供某些默认比较,例如等于比较。除了写入响应之外,DN 52还提供读取响应,该读取响应提供在写入之前在寻址位置的旧数据,在写入之后在寻址位置的新数据,或者提供对比较结果的某些指示,例如是通过还是未通过比较标准。
[0064] 因此,通常读取请求触发DN 52提供取决于从寻址位置读取的数据的读取响应。写入请求或原子存储请求返回确认对将数据写入寻址位置的写入操作的服务的写入响应。原子加载、原子交换、和原子比较请求是需要读取响应和写入响应两者的某些形式的原子数据访问请求。请注意,返回写入响应并不意味着将数据到存储器中的某个存储位置的实际写入已发生。在某些情况下,可以在数据访问请求被服务并且取得充分进展(以确保该请求将被执行并且不会相对于随后接收的请求重新排序)时返回写入响应,但是这可能并不意味着数据已被写入。例如,在某些情况下,一旦与写入请求或原子请求相关联的信息写入缓冲器(存储器之后从该缓冲器获取值并将其写入存储器),存储器控制器就可以返回写入响应,因此有时写入响应可以在到最终存储器位置的实际写入之前被返回。通常,写入响应可足以使请求节点确信写入一定会发生并且任何后续请求会顾及该写入的影响。
[0065] 并非所有目的地节点52都需要支持原子请求。一些不具有远原子处理逻辑54的目的地节点只能支持读取和写入请求。但是,在许多请求节点需要访问存储器中的共享数据的情况下,原子的使用可以提高性能。如果不支持原子请求,那么若一个主设备需要对某个存储位置进行读取和写入两者而不能有任何其他主设备介入该读取和写入之间,则必须发布读取请求以从目的地节点读取数据值并将其返回到该主设备自己的缓存或处理逻辑中,然后在请求节点50本地对该读取值执行所需的操作。例如,请求节点可以按原子存储或原子加载请求所需要的那样来计算关于写入数据和从寻址位置读取的数据的函数,或者按原子比较请求执行的那样来执行比较。在确定需要将什么值写回存储器之后,请求节点50随后可以发布控制目的地节点用该数据更新寻址位置的写入请求。使用这种方法,在发布从寻址位置读取数据的读取请求与响应于更新该位置的后续写入所接收到的写入响应之间存在长时间延迟,并且在此期间需阻止其他请求节点访问该地址(例如,使用基于锁定的机制,其中锁定变量用于控制由特定主设备对某些地址的独占访问)。这对性能是有害的,因为其他的那些主设备可能必须暂停其操作,直到锁定被释放,然后他们才可以与共享资源进行交互。对于多个主设备(或在同一主设备上的软件中执行的多个进程)中每个都需要更新某个变量(例如对某个类型的多个事件计数的计数器)的情况,这是一个棘手的问题,并且重要的是要确保对该变量的任何更新以原子方式来执行以避免在一个主设备在另一主设备或另一软件进程发布的读取和写入请求之间读取该变量的值的情况下错过某些更新。
[0066] 通过使用原子请求可以减少这些问题,因为它们允许目的地节点本身执行实现此类操作所需的读取和写入两者,这大大缩短了读取和写入之间的时间,并简化了对该操作的原子性质的管理,因为这不需要依赖于设置锁定变量以防止其他进程访问读取和写入之间的地址,缘由是目的地节点本身可以将原子请求作为单个操作处理而不允许其他读取或写入请求在原子操作中途得以处理。
[0067] 图4示出了可以设置在互连4、6中的一者内的路由控制电路60的示意图。例如,路由控制电路60可以是片上网络6的主接口46中的一者。替代地,路由控制电路可以是缓存一致性互连4内控制特定请求被路由到的互连的哪个目的地端口的电路。路由控制电路60被示为处理来自一个特定请求节点50的请求并将请求定向到一个特定目的地节点52,但是实际上应当理解,可以从请求节点能够访问的两个或更多个目的地中选择目的地节点。而且,在一些情况下,路由控制电路60可以在多个请求节点之间共享。
[0068] 路由控制电路具有读取信道控制电路62以及写入信道控制电路66,该读取信道控制电路用于处理从请求节点50在读取请求信道64上接收到的读取请求,该写入信道控制电路用于处理在写入信道68上接收到的写入请求和原子请求。在某些情况下,读取请求可以通过不同于写入和原子请求的单独信号路径来接收,使得读取信道64和写入信道68使用物理上分离的路线。替代地,组合总线或信号路径可用于将来自请求节点50的读取和写入请求两者传送到路由控制电路60,但是用于处理这些请求的资源的分配可以在路由控制电路内针对每个信道由相应的读取/写入资源分配控制逻辑70、71单独进行管理。相比写入和原子请求,通过为读取请求提供单独的资源管理,可以实现更有效的处理,因为这减少了写入被读取阻止的机会,反之亦然,继而能够提高性能。
[0069] 由于原子请求可以指定写入数据、比较数据或交换数据,因此可以方便地在写入信道上接收原子请求,以便共享用于在该路由电路内传送与写入请求相关联的数据的数据路径。读取请求不指定任何数据,因此不需要为写入数据使用此类数据路径。但是,原子加载、原子交换和原子比较请求可能需要在读取信道侧和写入信道侧两者上分配资源,因为它们需要读取响应和写入响应两者。因此,写入信道中的写入资源分配控制电路70也可以负责在读取信道中分配资源(直接地或通过控制读取资源分配控制电路71来代为其为原子请求分配读取资源)。所分配的资源可以是多种类型的。在一些情况下,读取资源72可以包括用于缓冲读取请求或者从目的地节点接收的对请求的响应的缓冲器空间,或者用于控制路由控制电路60的下游资源的分配的信用点。类似地,写入资源也可包括缓冲器空间或信用点。
[0070] 如图4所示,读取资源76的一部分被预留用于需要读取和写入响应两者的某些类型的原子请求。原子存储不需要读取响应,因此可以以与写入类似的方式来处理。
[0071] 图5示出了路由控制电路60的更详细示例,在该示例中,路由控制电路60对应于片上网络中的主接口46中的一者。写入信道控制电路66在图的上半部分中示出,读取信道控制电路62在下半部分中示出。用于与请求节点50通信的信号路径包括多个信道,这些信道包括用于提供指定目标地址的写入请求的写入请求信道80(AW)、用于提供针对写入/原子请求的写入数据(或比较/交换数据)的写入数据信道(W)82、以及用于提供读取请求的地址的读取请求信道(AR)84。信号路径还包括响应信道,包括用于向请求节点提供写入响应的写入响应信道(B)86和用于提供提供响应于读取请求的读取数据的读取响应的读取响应信道(R)88。
[0072] 写入信道上的写入资源包括写入请求(WR)分组跟踪器/响应缓冲器90,其包括多个缓冲器条目或槽,用于存储相应的写入请求或原子请求的跟踪信息并缓冲相应的写入响应。当通过写入信道接收到写入或原子请求时,请求编码器92在写入跟踪器/响应缓冲器90中为该请求分配指定诸如请求的标识符之类的跟踪信息的条目。当随后从目的地节点接收到响应时,则将其分配到写入跟踪器/响应缓冲器90的先前分配的槽中,该跟踪器/响应缓冲器90基于跟踪信息控制响应被提供给请求节点的顺序。具有相同标识符的事务可能需要按照它们从请求节点接收的顺序进行处理而不进行重新排序。跟踪器/缓冲器90还可以指定要与写入响应组合在一起的附加信息(例如,跟踪相关的标记)。
[0073] 当在写入信道上接收到写入请求或原子请求时,请求编码器92确定该请求是否已发布就绪。例如,可以施加一些服务质量标准以限制例如一次待决的未完成写入请求的数目,或者在某个时间段内发布的请求的数目。请求编码器92还可以根据分组跟踪器90中是否存在备用资源来判定是否可以发布写入请求或原子请求。如果服务质量标准限制写入请求的发布,或者没有空间在分组跟踪器90中,然后写入请求可以暂停。如果写入请求已发布就绪,则写入请求编码器92控制请求到下游元件的发布。分组器98将写入请求或原子请求转换为要在片上网络6上输出的网络分组,并且该请求通过片上网络6输出到所选择的目的地节点。作为生成要发送到网络的分组的一部分,地址解码器100基于在写入地址信道80上指定的目标地址确定所选择的是哪个目的地接口,并生成路由信息,该路由信息被附加到网络分组以控制穿梭适当的路由器序列44抵达目的地接口48的路由。当从目的地节点接收到写入响应时,解分组器102解译该分组并将其转换回适合发送到请求节点的格式。响应可以放置在缓冲器90中,并且如果根据在接收到请求时设置的跟踪信息而需要进行某一重新排序,则该响应可以在缓冲器中延迟一段时间。
[0074] 在读取侧,读取信道控制电路62包括用于读取请求的多个资源,读取信道控制电路62包括用于存储与所接收的读取请求相关联的跟踪信息的读取(RD)分组跟踪器110和用于缓冲对读取请求或原子请求的响应以使这些响应可以重新排序或汇集到一个组合响应中的读取重新排序缓冲器112。读取请求编码器114确定读取请求何时发布就绪。再次,这可以取决于服务质量标准以及读取资源(例如读取分组跟踪器110或读取重新排序缓冲器112中的空间)的可用性。读取分组跟踪器110可以指定包括可被使用于控制事务的排序的事务标识符的跟踪信息。此外,读取分组跟踪器110可以指定附加信息,例如并不随读取请求被发送至下游而是存储在分组跟踪器内并且随后当读取响应返回到请求节点时与该读取响应重新组装在一起的跟踪相关的信息。
[0075] 因此,当在地址信道84上接收到读取请求时,读取侧的请求编码器114判定服务质量要求是否允许发布请求以及是否有足够的资源可用于处理缓冲器110、112中的读取请求。如果是,则将该请求发布至读取分组器116,该分组器生成适当格式的分组以通过互连进行发送。当发布请求时,在读取分组跟踪器110或读取重新排序缓冲器112中分配空间。读取地址解码器118对读取请求的地址进行解码,以标识分组应由互连路由到的所选目的地节点。在某些情况下,写入和读取地址解码器100、118可以是同一解码器。当响应于读取或原子请求而接收到读取响应时,响应被提供给读取解分组器120,其解译所接收到的响应分组并生成要分配给读取重新排序缓冲器112的响应。响应经由信号路径88被返回到请求节点。
[0076] 在互连的接口处不提供协议转换的互连中,可以不需要分组/解分组逻辑98、102、116、120,取而代之的是,读取或写入请求可以以与从主设备接收它们时相同的形式被转发。
[0077] 当在写入信道上接收到原子数据访问请求但可能需要读取资源分配时,写入请求编码器92也可以在路由控制电路的读取侧触发资源的分配。因此,对于需要读取和写入响应两者的那些类型的原子请求中的原子请求,请求编码器92可以在写入分组跟踪器90和读取分组跟踪器110或读取重新排序缓冲器112中分配空间。但是,如果读取缓冲器中的所有空间已被占用,则这会阻止原子请求,继而会阻止写入信道上的其他写入请求。
[0078] 因此,如图6中所示,缓冲器110、112中的一些槽138可以专门被预留来用于需要读取响应的原子请求,使得它们不能被用于在读取信道84上接收的正常读取请求。这意味着始终有一些空间保证可用于原子,这避免了写入被读取信道上的大量业务所阻塞。
[0079] 如图7中所示出的替代方法所示,缓冲器110、112中的所有条目可用于读取请求或需要读取响应的那些类型的原子请求。然而,可以提供计数器140以跟踪缓冲器中当前正在使用的条目数。当比较器142确定当前在用计数大于或等于某个阈值时,可以限制任何剩余空间针对读取请求进行的分配并且被预留用于需要读取响应的原子请求。在用计数器140的递增可以响应于导致在读取缓冲器110、112中的一者中分配空间的任何请求来执行,或者可以仅在接收到读取请求时递增以使得由于与原子请求相关联的信息对条目占用不会触发在用计数的递增。无论哪种方式,通过使用在用计数来跟踪缓冲器的占用并确保将阈值设置为小于缓冲器的总容量,以使得始终存在缓冲器的一些条目可由原子使用(即使这些条目并不总是相同的条目),这也可以提高支持原子事务的系统的性能。当接收到对先前触发计数器递增的请求的响应时,计数器140递减。
[0080] 类似地,图8和图9示出了如图4中所示的路由电路内的读取/写入资源分配控制电路70、71可以管理位于路由控制电路60下游而不是路由控制电路本身的缓冲器的下游缓冲器中的资源的分配的情况。在这种情况下,读取或写入资源分配控制电路70、71可以维持跟踪下游缓冲器的预计占用的一个或多个信用点计数器150。可以为原子预留一些信用点,以使读取请求不能够使用它们。例如,如图8中所示,单独的信用点计数器150、152可以分别跟踪读取请求和原子请求所使用的条目的数目。读取计数器可以在与下游缓冲器的总容量(NBE)和下游缓冲器中被预留用于原子请求的条目数(NA)之差相对应的值处饱和,并且当该读取计数器150达到饱和时不接受另外的读取。原子请求可以使用在NA处饱和的特殊原子信用点计数器152,使得在下游缓冲器中总是存在用于这类原子的空间。在一些情况下,即使所有原子信用点都已经被使用,仍然可以允许原子请求使用由读取计数器150跟踪的读取信用点中的读取信用点。
[0081] 替代地,如图9中所示,单个计数器150可以跟踪所发布的信用点总数。在当前计数值大于下游缓冲器的总条目数(NBE)和要为原子预留的特定条目数(NA)之差时,可以限制进一步的读取请求的发布。
[0082] 因此,如图6至图9中所示,存在许多这样的资源:其使用可以由路由控制电路来管理,并且其中一些资源可被预留用于处理原子。
[0083] 图10示出了示出数据访问路由电路(例如互连或片上网络)对数据访问请求的处理的流程图。在步骤200处,从给定的请求节点50接收到请求。在步骤202处,数据访问路由电路4、6确定已被接收的请求的类型。
[0084] 如果请求是写入请求或不需要读取响应的原子请求,则在步骤204处,数据访问路由电路4、6判定是否有足够的写入资源可用于处理请求,以及是否有任何服务质量标准(为了管理不同主设备对互连资源的竞争访问而引入的标准)被满足。如果没有可用的写入资源,或者服务质量标准未被满足,则在步骤206处暂停请求并且该请求等待直到写入资源可用且服务质量标准被满足。例如,服务质量标准可以指定在给定时间处仅允许某最大数目的写入或不需要读取响应的原子未完成,或者可以限制在给定时间段内可以被服务的此类事务的最大数目。当存在可用的写入资源且服务质量要求被满足时,在步骤208处,分配写入资源用于处理请求,并且向目的地节点52发布用于触发确认对将数据值写入由请求指定的目标地址标识的目标存储位置的写入操作的服务的写入响应的信号。写入操作可以是有条件或无条件写入操作。写入响应的返回可以指示该请求已被服务从而进展至预定点(这不一定指示数据值已经被写入写入目标存储位置)。
[0085] 如果在步骤202处确定请求是读取请求,则在步骤210处确定是否有任何读取资源可用且是否任何读取服务质量标准被满足(再次,例如在某个最近时间段内发布的读取请求的数目是否小于某个阈值,或者当前未完成的读取请求的数目是否小于阈值)。如果没有可用的读取资源或者服务质量标准未被满足,则在步骤212处暂停读取请求。此外,如果在步骤214处确定存在可用的读取资源,但是该唯一可用的读取资源仅为原子请求所预留,则再次在步骤212处暂停该请求。如果可用的读取资源不是为原子所预留的且服务质量标准被满足,则在步骤216处,分配读取资源用于处理读取请求,并且将信号发送到基于请求的地址选择的目的地节点。这些信号触发目的地节点52以返回读取响应,该读取响应提供取决于从地址存储位置读取的数据值的数据。
[0086] 如果在步骤202处确定请求是需要读取和写入响应两者的某类型的原子数据访问请求,则在步骤220处判定是否存在可用的读取资源和可用的写入资源,以及对请求施加的任何服务质量标准是否被满足。由于原子请求需要读取和写入响应两者,因此在某些情况下它可能受制于读取和写入服务质量标准两者。如果读取或写入资源不可用或者服务质量标准未被满足,则在步骤222处暂停请求。当读取和写入资源可用并且服务质量标准被满足时,则在步骤224处,分配读取和写入资源以处理原子请求,并且向目的地节点发布以触发目的地节点提供读取响应和写入响应两者的信号。
[0087] 在一些实施方式中,本技术可以在物理集成电路中实现,该物理集成电路被制造成具有上面讨论的互连或其他形式的数据访问路由电路。
[0088] 然而,本技术也可以体现于集成电路设计文件中,该集成电路设计文件提供要制造的集成电路的组件的电子设计表示。例如,电子设计文件可以指定(例如,使用RTL或一些其他电路表示语言)要提供的互连的组件,然后下游方可以使用该组件来控制集成电路的制造。例如,设计文件可以指定互连的低级别晶体管或门级布局,或者可以在更高级别上指定互连的组件,例如使用块或标准单元来标识某些标准组件的布局,以便稍后可以从标准组件库中查找低级别晶体管或门级表示,从而标识最终的集成电路布局。因此,在一些实施例中,表示集成电路设计的电子设计文件可以包括对一些组件的定义,这些组件包括数据访问路由电路,该数据访问路由电路用以管理用于处理读取、写入和原子请求的资源的分配并为原子请求预留不能被读取使用的资源。
[0089] 在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程为执行功能。“被配置为”并不意味着装置元件需要进行任何方式的改变以提供所定义的操作。
[0090] 虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域的技术人员在不脱离由所附权利要求限定的本发明的范围和精神的情况下,实现其中的各种改变和修改。