专利名称:互连中的数据存储维护请求的制作方法
技术领域:
本发明涉及数据处理装置领域,所述数据处理装置具有包括高速缓存(cache)和 存储器这二者的数据存储(data store) 0更具体地,本发明涉及用于这些数据处理装置 的互连电路,该互连电路提供数据路线(data route),一个或多个启动器设备(initiator device)如主设备(master)通过所述数据路线访问(access) —个或多个接受设备 (recipient device)如从设备(slave)。
背景技术:
在数据处理系统中互连(interconnect)被用来提供不同组件之间的连接。它们 提供数据路线,其中一个或多个启动器设备可以通过所述数据路线访问一个或多个接受设 备。启动器设备只是生成事务请求的设备,并因而可以是诸如处理器的主设备或者是另一 个互连。接受设备只是接收事务的设备,并且其可为诸如外围设备的从设备或者也可以是 另一个互连。系统随着多个处理器相互之间、多个处理器与多个设备、多个处理器与包含提供 快速数据访问的高速缓存和存储器这二者的不同存储设施之间的通信而变得更加复杂,为 了编写出确保跨时间的交互过程的一致行为(consistent behaviour)的软件,为多处理器 系统编写软件的程序设计者需要涉及架构的等待时间和拓扑的详细知识。即使有了这些详 细知识,也只有在付出某些不平常的努力和成本后才能获得一致性。在一般意义上对于任意的架构提供允许编程人员确保跨时间的交互过程的一致 行为的机制,将是所期望的。在具有任意架构的复杂系统中,存在与数据存储维护操作相关联的具体问题。比 如知道这些操作何时完成是很重要的,但如果系统不确定数据存储的数量或布置,则很难 对此进行追踪。例如在具有多个高速缓存的系统中,其中多个高速缓存中的至少一些能够由多于 一个主设备访问,在没有高速缓存的架构并且具体为其数量和布置的详细知识的情况下, 对于任意维护高速缓存的高速缓存维护操作来说,很难确定何时完成该维护。因此,在设计 架构不可知的系统时,数据存储维护操作提出了一个特殊的问题。
发明内容
本发明的第一方面提供了用于数据处理装置的互连电路,所述互连电路被配置为 提供数据路线,其中至少一个启动器设备能够通过所述数据路线访问至少一个接受设备, 所述互连电路包括至少一个输入,用于从所述至少一个启动器设备接收事务请求;至少 一个输出,用于向所述至少一个接受设备输出事务请求;多个路径,用于在所述至少一个输 入和所述至少一个输出之间传送所述事务请求;其中所述事务请求中的至少一个包括数据 存储维护请求,其请求对所述数据处理装置内的数据存储执行的数据存储维护操作;以及 控制电路,用于从所述至少一个输入向所述至少一个输出路由所述接收的事务请求;其中所述控制电路被配置为通过沿着所述多个路径中的至少一个传送后面跟着屏障(barrier) 事务请求的所述数据存储维护请求来响应所述数据存储维护请求的接收,所述控制电路被 配置为保持沿着所述多个路径中的所述至少一个传送的事务请求流中至少一些事务请求 相对于所述屏障事务请求的排序,以使所述事务请求流中在所述数据存储维护请求之前的 至少一些事务请求,通过所述屏障事务请求而被保持于所述数据存储维护请求之前,并且 所述事务请求流中位于所述数据存储维护请求之后的至少一些事务请求,通过所述屏障事 务请求而被保持于所述数据存储维护请求之后。本发明认识到数据存储维护操作在数据处理系统中呈现的问题,并通过屏障的使 用来解决这些问题。如果通过不允许至少一些指令跨越屏障重排序,来建立互连以响应屏 障事务请求,则能够在数据存储维护操作之后使用屏障来阻止数据存储维护请求之后的事 务在其之前被执行。此外,只需建立该互连以响应于屏障进行操作,并且不需要知道所存在 的高速缓存及其位置的知识,便可确保数据存储维护操作的正确且一致的执行。另外,如果 出于其他原因建立互连以响应于屏障而起作用,则能够使用该功能来有效应对数据存储维 护操作而不需要任何显著的额外开销。通过不允许至少一些事务请求超越(overtake)或者被屏障事务请求超越,排序 可被保持,这样,屏障位于事务请求流中且保持其周围的排序。在一些实施例中,所述控制电路被配置为,通过延迟所述至少一些事务请求沿所 述多个路径之一的传输直到接收到清除(Clear)所述屏障事务的响应信号为止,来响应所 述屏障事务请求以保持位于所述屏障事务请求之后的所述至少一些事务请求的排序。在系统中,要被保持在屏障之后的至少一些事务请求可能已被阻塞(blocking) 电路延迟,于是位于屏障后面的事务请求能够被允许超越它,因为它们不是要由屏障保持 次序的事务请求,而应待在屏障后面的事务请求已在上游被延迟。然而,屏障前面的所有事 务请求必须保持在其前面。在一些实施例中,所述数据存储维护请求包括高速缓存维护请求,所述数据处理 装置包括至少一个存储器和用于存储保存于所述至少一个存储器中的数据项目的本地拷 贝的一个或多个高速缓存,所述互连电路被配置为传送所述高速缓存维护请求和所述屏障 事务请求到所述一个或多个高速缓存中的至少一个。高速缓存维护请求需要按某种次序来执行以便保持数据一致,并且因此在以不同 速度操作的不同设备通过互连而彼此通信的系统中,屏障事务对帮助保持排序可能是有用 的。在一些实施例中,所述互连电路被配置为接收来自所述至少一个高速缓存的所述 响应信号。高速缓存可被配置为使得当它接收到跟在高速缓存维护事务请求之后的屏障事 务请求时生成响应信号。该高速缓存可以仅在接收到屏障事务请求之后生成和传送响应, 在这种情况下该响应向启动器设备提供指示高速缓存维护请求已到达该高速缓存,或者 高速缓存可被配置为仅当被请求的高速缓存维护操作已执行到这样的一点-即进一步的 事务能够由高速缓存安全处理时,向屏障发送响应。该点将依赖于高速缓存的设计,并且可 能是当在高速缓存自身内部执行的高速缓存维护操作(如无效线)已完成时,即使这些高 速缓存维护操作所触发的其他操作(例如向存储器写入脏数据)仍然是未决的。需要注意的是,如果进一步发送维护事务请求,则在它们后面进一步发送屏障事务请求。在一些实施例中,所述互连电路包括所述一个或多个高速缓存中的至少一个,所 述至少一个高速缓存被配置为在所述高速缓存的输入处保持所述屏障事务请求,且不接收 任何进一步的事务请求,并且响应于与所述高速缓存相关联的控制电路确定所述高速缓存 保持请求已被处理到一点-在该点处接收进一步的的事务请求是安全的,所述至少一个高 速缓存被配置为接收所述进一步的事务请求。如果屏障事务请求没有阻塞上游事务请求流,则在一些实施例中,其可被保持于 高速缓存的输入处,使得没有进一步的事务请求能够由高速缓存接收,直到控制电路确定 从数据一致性的角度看,对于高速缓存来说接收进一步的事务请求是安全的。在一些实施例中,所述高速缓存维护请求触发了待传送到另外的数据存储的事务 请求,所述点包括这样一个点-在该点源自所述高速缓存维护操作的所有事务已被进一步 传送,所述控制电路被配置为在源自所述高速缓存维护操作的所述事务之后进一步传送所 述屏障事务请求。如果高速缓存维护请求没有触发进一步的事务请求到另外的数据存储,则所 述控制电路被配置为,响应于确定所述高速缓存维护请求已被处理到所述点而消除 (eliminate)所述屏障事务请求,其中在所述点处接收进一步的事务请求是安全的。如果高速缓存维护请求触发了进一步的事务请求,则在这些请求之后发送屏障事 务请求。如果高速缓存维护请求没有生成进一步的事务请求,换言之,如果所有的高速缓存 维护操作都在该高速缓存中被执行,且该高速缓存位于路径的末端,以致于此外没有另外 的高速缓存,则一旦不需要屏障来阻塞高速缓存的输入,就可将其消除。在一些实施例中,所述高速缓存维护请求被指向一个或多个地址,所述屏障事务 请求包括对应的一个或多个地址,所述控制电路被配置为沿着所述多个路径中的至少一些 路由所述屏障事务请求和所述高速缓存维护请求。可针对整个高速缓存执行高速缓存维护操作,例如整个高速缓存可被刷新,或者 高速缓存维护操作可针对单个地址或地址范围执行。在后一情况中,如果屏障事务也包含 地址,则是有利的。控制电路被配置为沿着路径中的至少一些路由屏障事务请求和高速缓 存维护请求。可能的是沿着所有路径路由请求,或者可能的是控制电路认识到这样的高速 缓存维护请求永远不需要沿特定路径服务任何组件并且因此它便不会沿该路径发送屏障 或高速缓存维护请求。在适当时沿路径子集向下发送屏障和高速缓存维护请求的能力减少 了由屏障和高速缓存维护请求给系统造成的等待时间。在一些实施例中,位于所述高速缓存维护请求之后并通过所述屏障事务请求保持 于其后面的所述至少一些事务请求包括到所述一个或多个地址的事务请求。在屏障事务请求内具有地址的一个特殊优势在于这能够向控制电路指示需要被 阻塞的事务。因此,不受高速缓存维护操作影响且本身不影响高速缓存维护操作的到其他 地址的事务能继续进行。这在高速缓存维护操作可能花费比较长的时间时非常有利,并且 因此,如果所有的事务都被停止等待其完成,则系统的等待时间可能会极大地增加。在屏 障事务请求内发信号通知(signal)地址的能力使得这个潜在的等待时间问题被显著地改
口 ο在一些实施例中,所述多个路径中的所述至少一些路径为通向可为所述一个或多个地址缓存数据的任意高速缓存的路径。发送高速缓存维护请求和屏障事务请求所沿的路径可以是通向可为该地址缓存 数据的任意高速缓存的路径。在这种情况下,将针对可缓存该地址的所有高速缓存执行维 护操作。在其他实施例中,所述多个路径中的所述至少一些路径为通向发起所述高速缓存 维护请求的所述启动器能够将所述一个或多个地址的数据缓存于其中的任意高速缓存的 路径。可替换地,控制电路可以仅发送维护请求和后面跟着的屏障请求到高速缓存维护 请求的启动器能够将该地址的数据缓存于其中的任意高速缓存。可能只适合维护启动器本 身能够访问的高速缓存,并且在这种情况下,沿着那些路径仅传送高速缓存维护请求和屏 障事务请求。在一些实施例中,所述多个路径中的至少一些路径为从节点分叉出来的分叉 (divergent)路径,所述控制电路被配置为沿着路由所述事务请求所沿着的所述分叉路径 中的至少一些路径复制和传送所述高速缓存维护请求,以及所述后面跟着的屏障事务请 求。路径分叉之处,高速缓存维护请求可能需要被复制以在可能包含高速缓存的任意 路径上传播。高速缓存维护请求被复制所沿行(follow)的任意路径,屏障事务请求也应该 被复制以沿行,且应该在复制的高速缓存维护请求之后沿其发送。这样便能够确保数据处 理装置的正确行为。在一些实施例中,所述控制电路被配置为延迟所述屏障事务请求之后的所述至少 一些事务请求的传输,直到接收到对应于所有的所述复制的屏障事务请求的响应信号之后。在屏障事务请求被阻塞的情况下,则后续的事务请求也被阻塞,直到所有复制的 屏障事务请求的响应已被接收为止。这样就能确保没有后续的事务被向下发送到所述路 径任意一个,在所述路径处它们可能将高速缓存维护操作向下带到另一个路径上,而这将 导致处理错误。在一些实施例中,所述控制电路包括位于所述互连内序列化(serialisation)的 一点的响应信号生成器,在该点之外的事务请求不能被重排序,所述响应信号生成器被配 置为生成针对所述屏障事务请求的所述响应信号,且不再进一步传送所述屏障事务请求。在互连内的序列化的一点上,可以确信进一步被传送的后续事务将保持它们被 传送的排序。因此,在该点上,可发送响应信号到屏障事务,且无需进一步传送屏障事务,因 为不存在事务相互超越的问题。这样,可高效处理屏障事务,且当不再需要屏障事务时,可 将其从系统中移除。在一些实施例中,所述控制电路包括响应信号生成器和阻塞电路,所述响应信号 生成器响应于接收到所述屏障事务请求而沿着接收所述屏障事务请求的入口路径(entry path)发布(issue)所述响应信号,并且所述阻塞电路响应于接收到所述屏障事务请求而 阻塞传送所述屏障事务请求所沿着的所有出口路径(exit path),从而阻塞所述屏障事务 请求之后的所述至少一些事务请求,直到接收到所述响应信号为止。通过阻塞向下发送屏障的路径直到接收到指示路径是畅通的(clear)的响应信号为止,阻塞电路可以保持该排序。如果有若干路径,则可以复制屏障以沿每一个路径或者 至少路径的一个子集向下传送,并且可能需要来自全部或只排除一个的响应以允许停止阻塞。在一些实施例中,所述响应信号生成器紧挨着所述阻塞电路的上游。响应信号生成器和阻塞电路可被相互邻接地布置,以便当屏障到达这些单元时路 径被清除(cleared),从而上游拖延的事务可被进一步发送,而出口路径被阻塞。在一些实施例中,所述多个路径包括至少一个交叉路径(bisection path),所述 交叉路径包括所述互连电路内的两节点之间的唯一通信路径,所述两个节点包括所述交叉 路径的入口节点和出口节点;所述响应信号生成器位于所述入口节点处,且响应于接收到 所述屏障事务请求,而沿所述入口路径传送所述响应信号;以及所述阻塞电路位于所述出 口节点处,且响应于接收到所述屏障事务请求,而阻塞传送所述屏障事务请求所沿着的所 有出口路径,从而阻塞所述屏障事务请求之后的所述至少一些事务请求。互连内存在连接各种启动器设备和接受设备的路径。这些路径中的一些构成可被 看作交叉路径的路线,因为它们是互连电路内两个节点之间的唯一链路,因此切断该路径 会将互连沿该路径分成两部分。节点是电路中的任意点。在这种情况下,当屏障事务请求 到达交叉路径的入口节点时,通过发送响应信号来清除后面的路径,将那些被屏障事务请 求所阻塞的路径解除阻塞是有利的。如果响应信号生成器位于交叉路径的起点,则阻塞电 路可位于该路径的终点,因为如果事务以正确的次序进入交叉路径,它们必须以同样的次 序退出。沿交叉路径传播的事务请求只能沿一个路线传播,因而,必须保持相对于屏障其 被向下沿路线发送的次序。因此,如果系统已被建立,使得其以相对于屏障的正确次序到达 入口节点处,则一旦屏障事务请求被向下沿交叉路径发送,之前的路径可被解除阻塞,从而 允许后续的已拖延的事务请求被传送。这样,它们能够响应于确定屏障事务请求已到达交 叉路径的入口节点而沿着该互连的一部分被传送,而不是在它们能够被传送前等待完成先 前所有的指令。这样,可缩短与这些屏障事务请求的阻塞特征相关联的等待时间,并且显著 地改善互连电路的性能。在一些实施例中,所述互连电路包括至少一个域,所述至少一个域包括所述至少 一个输入中的至少一个,用于从所述至少一个启动器设备接收事务请求,域边界被布置以 使得任意接收自所述至少一个输入的事务请求的合并发生于所述至少一个域内;以及所述 屏障事务请求包括指示器,指示是否其应用到所述至少一个域;以及所述控制电路响应于 检测到包括指示其应用到所述至少一个域的所述指示器的所述屏障事务请求,位于所述至 少一个域外,而提供指示所述屏障事务位于所述域外的指示。已被认可的是如果互连被布置成域,其中域被选择为互连的区域,在区域中,发 生任何接收自域内的输入的事务请求的合并,则可根据屏障事务请求位于域内还是域外而 区别对待。因此,已经发现,将互连看作是以域布置,以及对于至少一些屏障事务被标记为 应用到特定域,是有利的,于是当确定这样的屏障事务请求位于其应用到的域的外部时,这 可被指示为在该点它的屏障行为将会改变。应该注意的是在一些实施例中,指示屏障事 务请求应用到域的指示器可能是与请求相关联的明确的(explicit)指示器,而在其他实 施例中其可能是暗含的(implicit),控制电路能够从屏障事务请求的位置和类型确定它应用到该域。在一些实施例中,所述指示包括附于所述屏障事务请求的指示器,指示现在其位 于其所应用到的域外。该指示器可被用来为屏障提供依赖于其位置的不同行为。例如,屏障可具有属性 它只在由指示器指示的域的内部阻塞,并从而一旦位于该域的外面(即使可能在交叉耦合 (cross-coupled)区域中)则其可以不再阻塞。在一些实施例中,所述控制电路包括响应信号生成器,所述响应信号生成器被配 置为,如果其位于所述指示器指示的所述屏障所应用到的域内,则不响应预定类型的屏障 事务请求,并且如果其位于所述域外,则响应所述预定类型的屏障事务请求。域的属性和屏障事务请求的属性变化有赖于它们是否在特定域内,这能被本发明 实施例所使用以向启动器设备提供高速缓存维护请求当前在何处的指示。某些屏障事务请 求当位于其域内时不能被早先地响应,因而,如果从这样的屏障事务接收到响应,可以肯定 的是它已经退出了它所应用到的域。因为数据存储维护请求必须保持在它前面,则也必然 已退出该域。屏障事务的使用使得能够将数据存储维护事务请求的位置与其操作相分离, 并对其进行监视。当在不知道存在多少高速缓存的架构不可知的系统中处理高速缓存维护操作,这 将变得特别有用。在这种情况下,接收自高速缓存的指示所请求的维护已在高速缓存中被 执行的响应,并未告诉启动器设备在系统中是否有仍存在具有未决维护操作的其他高速缓 存。因此,此高速缓存维护操作请求后跟着具有域指示器的屏障,使得启动器设备能够知道 指定域内的所有高速缓存维护操作何时完成,其中所述域指示器将在退出域时生成响应。 域属性是这样的,如果域被适当地选择,则这可以是足够信息以允许启动器设备知道传送 进一步的事务请求是安全的。在一些实施例中,所述互连电路包括多个域,所述多个域中的每一个包括所述至 少一个输入中的至少一个,用于从所述至少一个启动器设备接收事务请求,域边界被布置 以使得接收自所述域的一个内的所述至少一个输入的事务请求的任意合并发生于所述域 的所述一个内。虽然在一些实施例中互连电路可能具有单个域,在其他实施例中它具有多个域, 并且假定其全被布置,从而接收自域内输入的事务请求的任意合并发生于该域中,则它们 将全部具有属性屏障事务行为会在退出域时改变,且可采用该属性来减少互连内由屏障 造成的等待时间。在一些实施例中,所述多个域中的至少一个是更大域的子集,且具有对于每个输 入存在域层次(hierarchy),这样如果输入是低层次域的成员,则它也是高层次域的成员, 并且在事务退出所述高层次域的同时或之前事务退出所述低层次域。在一些实施例中,域被按层次来布置,并且这可用来提供对于屏障事务的进一步 控制,正如之后将看到的那样。高层次域比低层次域更大或者与之具有相同大小并包含低 层次域,因此事务在退出高层次域的同时或之前退出低层次域。在一些实施例中,所述域包括只包含所述输入中的一个输入的非可共享 (non-shareable)域、包含所有所述输入的系统域,以及至少一种另外类型的可共享域,对 于每个输入,存在域层次,使非可共享域内的输入也位于用于所述输入的所述至少一种类型的可共享域内,所述至少一种类型的可共享域内的输入也位于用于所述输入的所述系统 域内。具有只是输入的非可共享域可能是有用的,这样当它们位于互连内时,所有被标 记为非可共享的屏障位于域的外部,从而屏障应用到非可共享域的指示器可用作屏障位于 其域外部的指示器。也有其他可共享域和系统域,其包括所有输入且其本身也是可共享域。在一些实施例中,所述数据处理装置包括多个层次级(hierarchical level)的多 个高速缓存,所述屏障事务请求包括指示所述多个层次级中至少一个的指示器,所述多个 层次级中至少一个的高速缓存被配置为,响应于接收到屏障事务请求而生成响应信号。可由对屏障事务请求的响应来确定高速缓存维护操作的进程的另一种方法是,如 果屏障事务请求被这样标记,则只有特定层次级的高速缓存将发送针对该请求的响应。这 样,举个例子,如果屏障被标记为只应用到2级高速缓存,则屏障将在高速缓存维护事务请 求之后通过一级高速缓存,且不会发送对屏障的响应,只有一旦到达2级高速缓存时才会 发送响应。本发明的第二个方面提供了一种用于从启动器设备经由互连而接收事务请求的 接受设备,所述接受设备包括输入,用于从所述互连接收所述事务请求;高速缓存;响应 信号生成器,用于生成对于预定类型的屏障事务请求的响应信号;所述接受设备被配置为, 响应于在所述输入处接收到后面跟着所述预定类型的屏障事务请求之一的高速缓存维护 请求,生成对所述屏障事务请求的所述响应;所述接受设备被配置为,当所述接受设备已确 定所述高速缓存已经为所述高速缓存接收和处理进一步的事务请求而不损害数据一致性 执行了足够的高速缓存维护操作时,发布所述响应信号。被配置为当已确定接受设备接收进一步的事务请求是安全的时而非当这些高速 缓存维护事务请求完成时,仅针对跟在高速缓存维护请求之后的特定类型的屏障事务请求 传送响应的接受设备,能够减少系统的等待时间。在一些实施例中,所述接受设备响应于接收到跟在高速缓存维护请求之后的另外 类型的屏障事务请求,在所述接受设备的输入处保持所述屏障事务请求,并且不接收进一 步的事务请求,直到所述接受设备已确定所述高速缓存已为所述高速缓存接收和处理进一 步的事务请求而不损害数据一致性执行了足够的高速缓存维护操作为止。在一些情况下,屏障事务请求位于事务请求之间,其中所述事务请求中的至少一 些事务请求相对于屏障事务请求不得被重排序。在这种情况下接受设备可被配置为在输入 处保留屏障事务请求,直到它能进一步传送该请求或将其消除为止。这样该屏障阻塞了通 向其他事务请求的入口,并且只有一旦移除屏障时这些才能够继续进行。本发明的第三个方面提供了一种用于生成并经由互连向接受设备发布事务请求 的启动器设备,其中所述事务请求包括数据存储维护事务请求,该启动器设备包括屏障事 务请求生成器,被配置为生成屏障事务请求,所述屏障事务请求向所述互连指示穿过互连 的事务请求流内的至少一些事务请求的排序应该通过以下方式被保持不允许出现于所述 事务请求流中所述屏障事务请求之前的事务请求中的至少一些相对于出现于所述屏障事 务请求之后的所述事务请求中的至少一些的重排序;其中所述启动器设备被配置为发布后 面跟着所述屏障事务请求的所述数据存储维护事务请求。当启动器设备发布数据存储维护请求时,重要的是,需要在维护操作之前访问数据存储,或者需要在这些操作之后访问的其它事务请求相对于该维护请求不进行重排序。 为了以架构不可知的方式来确保这一点,启动器设备可具有生成屏障的屏障生成器,启动 器设备发布屏障以跟在数据存储维护操作之后。屏障向互连指示其之后的至少一些事务 必须保持在其后面,而之前的至少一些必须保持在其前面。在一些实施例中,所述屏障生成器被配置成,依赖于所述数据存储维护请求,为所 述生成的屏障事务请求提供阻塞或非阻塞指示器。可由屏障生成器生成的屏障可有利地为阻塞的或非阻塞的,阻塞屏障指示至少 一些必须待在阻塞屏障之后的事务请求已在上游被阻塞,从而所有事务都可以超越它,而 非阻塞屏障不得被其所应用到的事务请求超越。在一些实施例中,所述启动器设备被配置为,响应于所述屏障事务请求生成器生 成具有所述阻塞指示器的所述屏障事务请求,不向所述互连发布出现于所述屏障事务请求 之后的所述至少一些事务请求直到所述启动器设备已接收到对于所述阻塞屏障事务请求 的响应为止;以及响应于所述屏障事务请求生成器生成具有所述非阻塞指示器的所述屏障 事务请求,向所述互连发布出现于所述屏障事务请求之后的至少一些事务请求。在一些实施例中,所述屏障生成器被配置成,为所述生成的屏障事务请求提供指 示所述屏障事务请求所应用到的所述互连内的域的域指示器。如上面所提到的,根据域来控制屏障事务请求可提供一种用于提供关于屏障到达 互连内的何处的信息。本发明的第四个方面提供一种用于从至少一个启动器设备经由互连电路向至少 一个接受设备路由数据的方法,所述方法包括在至少一个输入处从所述至少一个启动器 设备接收事务请求,所述事务请求中的至少一个包括请求对所述数据处理装置内的高速缓 存执行的数据存储维护操作的数据存储维护请求;以及沿着多个路径中的至少一个向至少 一个输出传送所述事务请求;响应于接收到所述数据存储维护请求沿着所述多个路径中 的至少一个传送其后跟着屏障事务请求的所述数据存储维护请求;通过将所述数据存储维 护请求之后的至少一些事务请求保持在所述屏障请求之后,在沿着所述多个路径中至少一 个传送的事务请求流内保持所述至少一些事务请求相对于所述屏障事务请求的排序。本发明的第五个方面提供了一种数据处理装置,包括多个启动器,所述多个启动 器包括至少一个根据本发明第三个方面的启动器,至少一个根据本发明第一个方面的接受 设备和互连电路,用于在所述启动器和所述接受设备之间提供数据路线。本发明的第六个方面提供了一种生成并经由互连向接受设备发布数据存储保持 事务请求的方法,包括生成所述数据存储维护事务请求中的一个,并且之后生成屏障事务 请求,所述屏障事务请求向所述互连指示穿过所述互连的事务请求流内的至少一些事务 请求的排序应该通过以下方式被保持不允许出现于所述事务请求流中的所述屏障事务请 求之前的所述事务请求中的至少一些相对于出现于所述屏障事务请求之后的所述事务请 求中的至少一些的重排序;以及发布后面跟着所述屏障事务请求的所述数据存储维护事务 请求。
参照如附图中所示出的本发明的实施例,仅通过举例来进一步描述本发明,在附图中图1显示了适于处理屏障的互连;图2显示了根据本发明实施例的含有互连的系统;图3显示了根据本发明另一实施例的含有互连的系统;图4显示了根据本发明实施例的具有高速缓存的互连;图5显示了具有不同层次级的高速缓存的系统;图6显示了说明根据本发明实施例的方法的流程图;图7a,7b和8示意性地示出了如何将互连分为不同的域,某些屏障有赖于其所在 的域而被区别对待。
具体实施例方式图1显示了互连10,其被配置为使用屏障控制事务请求的传输,并且还示出了在 这样的互连中如何处理屏障。互连10经由多个路径将多个主设备20,22,M及沈连接到多 个从设备30,32,34及36。这些路径可具有交叉耦合部分,譬如40处作为例子所示出的,在 该处两个路径中的每一个在其各自的分割点(split point) 41和42上分成两条,并且在合 并点(merge point) 44和45处上合并。也有如50处作为例子所示出的交叉路径。存在在 互连中的两个节点之间唯一连接的路径,以致于切断该路径实际上将会将互连分为两半。当事务沿这些不同的路径传送时,这些路径的特性(nature),也就是说它们是交 叉耦合还是交叉的将影响事务的排序。例如交叉耦合的路径将以分割点开始,该分割点将 该事务流分为多个事务流,并且分割点前在事务流中位于另一个事务后的事务,可能在先 前落后于的事务到达其自己的目的地之前,到达其目的地。沿着交叉路径传播的事务必须 保持其次序,除非有某个功能单元允许重排序,如在60处作为例子示出的重排序缓冲器。 重排序缓冲器被用来重排序事务,以允许高优先级的事务先于低优先级的事务被递送到从 设备。也存在被称作重汇聚(reconvergent)的路径,其中之前分割开的路径重新回到 一起,且这也可引起事务流内的重排序。互连10没有任何重汇聚路径。事务以不同于其被发送的次序到达其目的地这一事实会代理问题,其中后续的事 务依赖于先前的事务,因此需要首先完成先前的事务。例如,如果在事务流中针对相同地址 存储指令先于装载指令,则重要的是,存储要先于装载执行,否则装载将读出错误值。为了 允许程序员确保所需要的事务按照所需要的次序到达,互连10被配置为响应事务流中的 屏障事务,以保持互连内事务相对于屏障的排序。因此,屏障事务可被插在应互不超越的事 务之间,这将确保不会出现问题。互连可以通过延迟事务流中屏障事务之后出现的事务前进通过互连直到接收到 屏障事务的响应信号为止来响应于这些屏障事务。响应信号指示发送后续的指令是安全 的。需要注意的是,清除路径的响应信号可以是指示早先的事务已全部完成的信号,或者其 仅仅是指示屏障事务已经通过路径的信号,例如,如果该路径是交叉路径,或者该屏障已到 达一节点,在该节点处早先的清除响应信号被发送且阻塞(blocking)被再次执行。互连也可以仅在先前的事务之后、后续的事务之前,沿着各个路径发送屏障事务, 且不允许跨越它对事务的任何重排序,以使得当检测到屏障到达某一点时,互连能够确定所有先前的事务都已通过该点。是只在流中传送了屏障,还是延迟了事务,这依赖于屏障的 特性,以及它是否是阻塞屏障,其中阻塞屏障是在先前的上游点处阻塞了后续事务请求中 的至少一些的屏障。屏障事务的进程受控于控制电路70。本图中这被示意性地示为单个块,但事实上 控制电路遍布于临接其所控制的电路的互连。因而,例如在每个分割点,均有某一控制电路 确保至少在某些实施例中,当接收到屏障事务时将其复制,且从分割点沿每个出口路径向 下发送复制屏障事务。也可能有其他实施例,其中沿除一条路径以外的所有出口路径向下 发送复制的屏障,之后将会对此进行描述。控制电路将知晓屏障事务已被复制,因而在其清 除用于传送事务的路径之前,可能需要来自每个复制的屏障事务的响应信号,其中所述事 务在原始屏障事务之后且必须保持在其后。屏障事务以其最简单的形式由主设备发布,例如主设备20,然后主设备20阻塞所 有后续的事务,直到其得到来自互连的指示其能够传送后续的事务的响应信号。可替换地, 屏障可由控制电路在一进入互连时立即发布。屏障事务之前的事务以及该屏障事务被传送 到互连,而控制电路70控制这些事务的路由。因此在分割点42处,屏障事务被复制且其传 播到合并点44和45处。在该点处,事务进入到交叉路径50和52,并且因事务不能改变其 在这些路径上相对于屏障的位置,当屏障事务到达这些路径之一的起点时,可知先于该屏 障事务的所有事务都在其前面,且沿着那条路径保持在其之前。从而,早期响应信号可由早 期响应单元80发送,且响应于这两个信号的接收,分割点42处的控制电路向主设备20发 送该早期响应信号,随后该主设备20可以将受其控制的屏障事务之后的事务解除阻塞,并 将其传送至互连。通过提供早期响应单元80,主设备20被阻塞的时间较之其等待来自从设备的指 示屏障事务已到达从设备的响应的时间要短得多,并且通过这种方式,由屏障事务引起的 等待时间减少了。沿路径50传送的屏障事务退出互连并到达从设备30,而未沿除交叉路径50以外 的任何路径传播,因此无需响应于该屏障事务而再次阻塞,因为一旦屏障通过早期响应单 元80,在其之前的事务就必定保持在那儿。然而,沿着路径52发送的屏障事务到达另一交 叉耦合的部分48,且响应于在分割点49处接收到屏障事务,与该分割点相关联的控制电路 70复制屏障事务,沿两个出口路径将它向下发送且针对出现于屏障之后并受其控制的事务 请求而阻塞其后的入口路径。从而在一些实施例中,通过保持在阻塞电路90内的缓冲器 中,这些后续事务被拖延,直到接收到对所有复制的屏障事务的响应信号。从而,复制的屏 障事务穿过交叉耦合电路40并退出交叉耦合电路以进一步进入交叉链路50和52。正如 之前提到的,交叉路径使事务相对于屏障保持按序排列,并因此早期响应可由早期响应单 元80从交叉路径起点发送。阻塞电路90等待接收来自分割点49处的对屏障事务的响应。 分割点49复制屏障事务,且进一步发送两个屏障事务,沿每条路径向下发送一个。分割点 49不向阻塞电路90发回响应,直到它已接收到来自其传送的两个屏障事务中的每一个的 响应。响应于该响应,阻塞电路90允许保持在其缓冲器中的任意后续事务被传送。因为清 除电路位于退出互连之前的最后的交叉路径上,所以无需进一步阻塞某些屏障类型。之前提到过交叉路径52上的重排序缓冲器60,并且该缓冲器被配置为响应屏障, 且不允许由屏障控制的事务相对于屏障被重排序。
在之前的说明中,假定屏障在那儿以保持其之后的所有事务位于其后。然而在一 些实施例中,正如之后详细展现的那样,屏障可能只需阻止后续事务的子集超越它,可能是 那些来自特定主设备的事务或者是那些具有特定功能的事务,比如写事务。在这种情况下, 控制电路70和阻塞电路90仅仅延迟事务的该子集,并允许其他继续进行。此外,在分割点 上,如果由屏障控制的事务决不会沿所述路径之一向下,则无需沿该路径上向下发送复制 的屏障。图2显示了具有多个处理器Pl,P2,P3的互连,其中多个处理器Pl,P2,P3在本实 施例中通过互连10访问两个高速缓冲200,210。正如之前所提到的,在具有访问各种数据 存储(包括不同高速缓存和不同存储器)的多个设备的复杂系统中,保持数据一致性是一 个复杂的问题。这包括需要在某些时间点上执行高速缓存维护操作,以确保各种存储器中 的数据存储保持一致。如果是为详细架构不可知的系统编写程序,处理这样的高速缓存维护操作是很难 的。可发布高速缓存维护操作,但可能很难得知其何时完成。特别是具有位于互连内的不 同高速缓存层次级和不同高速缓存的系统内,因为在这样的系统中,很难得知特定的高速 缓存是否是沿特定路径的最后一个高速缓存。在本发明的实施例中,通过使用屏障事务解 决了该问题。因此,当发布高速缓存维护操作时,屏障跟在其后被发布。屏障的通道可被追踪, 并从而由于高速缓存维护操作在其前面,因而也可被追踪。可根据高速缓存维护请求来选 择屏障的属性,从而可选择只阻止任意后续事务超越高速缓存维护请求的屏障,或者可使 用阻塞在某个点之后的事务的屏障。屏障生成器79显示于主设备Pl中,且其响应于来自 主设备Pl的请求而生成并发布屏障事务请求。当已生成和发布高速缓存一致性维护请求 时,主设备引导屏障生成器生成屏障,屏障的属性可根据待执行的维护操作来选择。所生成的屏障可以是阻塞屏障或者是非阻塞屏障,如果其是阻塞屏障,则主设备 Pl不发布该屏障所应用的任何进一步的事务请求,直到其接收到对该屏障的响应。在图2显示的实施例中,存在早期响应单元71,其后跟有阻塞电路72,阻塞电路73 后又跟有分叉(divergence)点73。互连中的控制电路70检测到从处理器Pl接收的高速 缓存维护请求和后面跟着的屏障事务,并且如果它是阻塞屏障,则它会在早期响应单元71 处向屏障发布响应,且该早期响应会在主设备Pl处被接收,主设备Pl之后可以进一步传送 任何阻塞的事务请求。之后阻塞电路72阻塞受制于屏障事务请求的进一步的事务请求。如 果其不是阻塞屏障,则屏障事务请求仅被传送通过早期响应单元和阻塞电路。后面跟着屏障事务请求的高速缓存维护请求随后到达分叉点73,且控制电路70 确定需要对高速缓存200和210这二者执行高速缓存维护,因而对高速缓存维护请求和跟 在其后的屏障事务进行复制。之后进一步向高速缓存200和210传送这些请求。互连电路 10具有在高速缓存200和210相应互连输出之前的、连同阻塞单元77和78 —起的早期响 应单元75和76,并且如果屏障是阻塞屏障,则在屏障事务到达早期响应单元75和76时发 送响应,而响应于这两个响应的接收,阻塞电路72允许进一步发送后续的事务。但当这些 后续的事务到达这些点时,它们然后将被阻塞电路77和78所阻塞。位于相应接受设备内的高速缓存200和210然后接收后面跟着屏障事务请求的高 速缓存维护请求,并且如果屏障是阻塞屏障,则当控制电路203已确定高速缓存维护操作已进行到进一步的事务请求可被安全处理的点时,与每个高速缓存相关联的响应电路201 发送对屏障事务请求的响应。因此,举个例子,如果一旦一些线被标记为无效高速缓存就被 刷新,且高速缓存具有用于待处理的进一步的事务的空间,则可发送响应。在该点响应屏 障是有利的,因为,例如如果高速缓存充满脏线,则将所有该数据写回存储器将花费很长时 间。一旦已经开始该过程,高速缓存中就存在可用于存储数据的线,从而可执行进一步的事 务。如果屏障事务请求是非阻塞屏障,则其被保持于相应高速缓存的输入接口 202处,直到 高速缓存已足够充分地处理高速缓存维护请求,以安全地接收进一步的事务,在该点上,屏 障事务请求或者进一步地在由高速缓存维护请求触发的其他数据存储维护操作之后被传 送,或者被消除。如果屏障是阻塞屏障,则当阻塞电路77和78接收到来自响应生成器201的响应 时,其停止阻塞后续的事务,并且这些能够继续进行到相应的高速缓存。如上所提到的,屏障生成器79响应于高速缓存维护操作的类型而确定其生成阻 塞还是非阻塞屏障。因此,举例而言,如果请求的高速缓存维护操作仅仅是无效的线操作, 可发布仅位于事务流中该操作之后的非阻塞屏障,且不允许事务从任意方向通过它。如之 前所提到的,屏障事务请求能够相对于它们自身或事务的子集保持所有事务的排序。在上 面的例子中,无效线连到特定地址,因此,屏障可有利地包含该地址,在该情况下控制电路 70将仅保持具有该地址的事务相对于屏障的次序,但根据需要将允许其他事务请求相对于 屏障被重排序。图3显示了该情况下的另一实施例,互连10包括高速缓存220和221,且将三个处 理器PI、P2与P3和两个存储器MEMl和MEM2互连起来。在互连10处接收的来自Pl的高 速缓存维护事务请求后面跟着已由主设备Pl生成的阻塞屏障事务,并且指示后续的事务 在Pl点处被阻塞,直到接收到响应信号为止。互连内的早期响应信号生成器71向主设备 Pl发送响应,以允许后续的事务进一步继续进行。这些后续的事务然后遇到阻塞电路72, 该阻塞电路72阻塞这些后续的事务直到接收到响应为止。之后互连中有一个分叉点73,并且屏障和高速缓存维护事务可被复制并进一步发 送到高速缓存220和221。如果是这种情况,则与分叉点相关联的控制电路70将保持接收 自一个高速缓存的任意响应信号,且当它已接收到来自两个高速缓存的响应信号时只向阻 塞电路72传送响应信号。如果高速缓存维护事务只对高速缓存220执行,则屏障和高速缓存维护事务不被 复制,而仅被发送到高速缓存220且不需要阻塞。屏障事务只停留于连接高速缓存220的 输入处以阻止其他事务进入高速缓存,直到高速缓存准备好接收屏障事务并进一步地将其 传送为止。如果高速缓存220响应于发送到存储器的高速缓存维护请求而生成事务,则屏障 事务请求也在这些之后被发送。通往存储器的路径上有一个分叉点230,并且与分叉点230 相关联的控制电路70向合适的存储器传送所生成的事务和后面跟着的屏障事务请求。因 此,它们可被传送到MEMl和MEM2,或者只传送到MEM1,这依赖于需要什么维护操作。在事 务之后传送屏障事务,并且如果在两条路径上都发送了事务,则屏障事务被复制,且屏障电 路232阻塞了到后续事务的路径。然而,如果对于高速缓存维护操作只存在一个需要被访 问的存储器,则在高速缓存维护操作之后发送单个屏障事务,且不需要执行阻塞。
如果维护操作针对所选择的地址范围,则屏障可以是指定了这些地址范围的编址 (addressed)屏障,在该情况下,针对其他地址的事务可超越该屏障,并且如果其为阻塞,则 将只阻塞针对指定地址的事务。当屏障到达存储器时它停留而阻塞存储器的入口,直到完 成由高速缓存维护请求引起的存储器内的操作为止。在该点上,所有后续的事务都能进入 存储器。如果阻塞屏障被复制并被发送到两个存储器,则当其进入每个存储器时发送响应 信号,并且一旦两个响应信号都已经被接收,阻塞电路232处的阻断就被清除,且任何被阻 塞的事务请求可被进一步发送。图3中只详细示出了 Pl和高速缓存220以及存储器之间的连接,其他连接也是存 在的但为了使得图更加清楚而未示出。图4显示了本发明的可替换实施例,其中处理器Pl能够在高速缓存220而非221 中存储数据。响应于接收到后面跟着屏障事务请求的高速缓存维护请求,控制电路70识别 出处理器Pl只能访问高速缓存220而不能访问高速缓存221,并因此向高速缓存220传送 高速缓存维护操作和后面跟着的屏障事务,而在阻塞屏障的情况下,早期响应单元71向处 理器Pl发送响应。屏障事务停留于高速缓存220的入口处且阻塞进一步的事务进入高速 缓存,直到高速缓存中的高速缓存维护操作完成为止。在该点处,在高速缓存维护操作触发 的任意维护操作之后,进一步传送屏障事务,且后续的事务能够访问高速缓存220。这样,对 高速缓存的访问不被阻塞,直到所有高速缓存维护操作完成为止,其只有高速缓存自身中 的操作本身完成之前才被阻塞。在图4的上述实施例中,高速缓存维护操作是针对高速缓存的总的高速缓存维护 操作。在一些操作中,其可以针对高速缓存中的特定地址或者地址范围。在此情况下,屏障 事务将包含该信息且阻塞电路将只阻塞针对那些地址的事务,而其它事务被传送。这样在 相当程度上减少了系统的等待时间。图5显示了具有高速缓存层次的系统。在该实施例中,主设备Pl和P2中的屏障 生成器可生成具有指示高速缓存层次的指示器的屏障,例如其可以指示层次级2。在该情况 下,该指示器指示只应从L2高速缓存发送响应。这使得系统能够知道高速缓存维护操作何 时到达层次级2的共享高速缓存。实际上,屏障使你得知屏障之前的事务已到达何处,因为屏障是不被允许超越其 前面的任何事务(其所应用到的事务)的。因此,可使用屏障来确定某些高速缓存维护操 作何时到达特定高速缓存或某个层次级的高速缓存。高速缓存上的响应电路也可用来确定 高速缓存维护操作中一个合适的点用以响应屏障,因此,当向高速缓存发送后续事务是安 全的时能够生成信号,而非只是发信号通知高速缓存维护操作完成,并且这样等待时间能 够被减少。图6显示了说明根据本发明实施例使用屏障事务请求确保数据存储维护操作的 排序的方法步骤的流程图。数据存储维护请求在互连处被接收,后面跟着屏障。该请求沿 至少一个路径传送且其后跟着屏障。如果该屏障是阻塞屏障,则受制于该屏障且在事务请 求流中在其之后的事务请求在上游某处被阻塞,因此,如果早期响应单元被满足,则发送释 放被阻塞事务的响应。依赖于早期响应单元的位置,阻塞单元可能再次阻塞,在此情况下该 阻断将由后续的响应单元解除阻塞。通过不允许这些事务从任意方向通过屏障,屏障保持
19其所应用到的事务的排序。图7和8示意性地示出了将互连分成不同的域的方法,所述不同的域具有特定属 性并允许屏障依据其所在的域而被区别对待,特别是被响应和不再阻塞。这些属性使得能 够减少与这些屏障相关联的等待时间。有许多不同的方法将主设备和互连的各部分分组成(group)不同域并在域中控 制屏障和事务以确保保持正确的事务排序而不过度地增加等待时间。在这一点上,如下事 实已被认可,如果某些规则强加到与域相关的互连的拓扑上,则屏障将具有某些可被用以 减少屏障等待时间的属性。以特定方式布置域可以在允许的系统拓扑中产生约束,但是也 可减少由屏障产生的等待时间,因此,下面所述的域的不同的可能实施方式兼具优点和缺 点。因此,例如,如果高速缓存维护事务具有与其相关联的域指示器,其后可跟着具有相同 域指示器的屏障事务,如下所陈述的,屏障上的域指示器可在域边界上产生早期响应,并由 此通过允许清除先前的阻塞而减少与屏障相关联的等待时间。此外,如果使用了该属性,响 应信号的接收将提供以下指示屏障事务请求已到达互连中的该位置,并且因此高速缓存 维护请求也已到达此位置。这样,可独立于其操作而确定高速缓存维护请求的位置。应该注意的是,虽然屏障事务可有与高速缓存维护事务相同的域指示器,但其也 可具有不同的域指示器,或者其具有域指示器而高速缓存维护事务没有这样的指示器。例 如在高速缓存刷新的情况下,则该操作需要继续进行至其中任意回写(write back)正被执 行的存储器,然而,对于要正确执行的后续事务来说,一旦由刷新触发的事务已经到达外部 域,就可安全地允许其他事务继续进行。在该情况下,用合适的域指示器标记屏障事务允许 当其到达外部域时(在该点,指示器设备可进一步传送事务)响应被发送。在所有的域布置中,如果屏障事务被标记为与特定域相关,当其位于该域外且其 是阻塞屏障时,它可以在除重汇聚区域之外总是非阻塞的。在其域内,某些类型的屏障可以 在除交叉耦合区域之外是非阻塞的。如果在高速缓存维护请求后使用在其域中总是阻塞的 屏障类型,则对该屏障的响应将指示屏障及因此的高速缓存维护请求二者都已退出由屏障 所指示的域。在第一“空(null) ”实施方式中,没有考虑这些域。所有的屏障被视为应用于系统 所有部分中的所有事务。在性能方面这明显很差,因为来自屏障的等待时间将会很高。然 而,它允许不受限制的、任意的域成员资格(即使该成员资格没有效果)和拓扑,所以总能 被建立。这在逻辑上等效于所有域在所有其域中包括所有主设备。在可替代的“近似空(nearly null),,的实施方式中,有与每个主设备相关的非可 共享域,而与这些域相关的屏障在该域外被区别对待。因为非可共享屏障在除来自主设备 的输入的任何地方都在其共享性(shareability)域外,其在整个互连中可以被这样对待, 并因而在互连的所有非重汇聚部分是非阻塞的。其他共享性域屏障事务被如同在空实施方 式中一样对待。这在逻辑上等效于为发布者(issuer)或主设备输入,以及包括所有其它主 设备的所有其它域做出非可共享域边界。可替代的“简单(simple)”实施方式具有某种受限制的拓扑和改善的性能。依据 可接受的限制水平,该方法给出两种不同的解决方案。共享性域成员资格的三个限制对这两种方法来说是共同的1.观测者的非可共享域仅是其自身。
2.观测者的系统共享性域至少包括它能够与之直接或间接通信的所有其它观测
者ο3.观测者的内部可共享域的所有成员也是其外部可共享域的成员。这些中的头两个是由[3]施加的限制。此外,两种方法中的每一个具有特定的拓 扑限制以及可能额外的共享性域成员资格限制。这两种实施方式中的第一种需要限制每个位置在单个域中,并因此依赖于互连 中的每个位置,其仅是内部、外部或系统域中的一种。为了能达到这一点,必须执行额外的 共享性域成员资格限制。任意观测者的任意共享性域中的所有成员必须使该共享性域中的所有其他成员 成为与其同一级的共享性域的成员。亦即,如果观测者B是观测者A的内部可共享域的成 员,则相互地,A必定是B的内部共享性域的成员。必须满足的拓扑限制是1.域边界必须包括所有域成员2.域外的任何事物都不可并入域中-亦即,域边界不能包括不在域边界内的任何 事物的下游的任何事物3.所有的域边界必须位于域交叉链路上在此情况下考虑域边界的简单方法是如同地形学上代表海拔(其中垂直面是允 许的,但垂悬(overhang)是不允许的)的轮廓线。每个主设备在相同高度上,而每个共享 性域轮廓和与其同类型的所有其他轮廓位于相同高度。垂直悬崖(vertical cliff)是容 许的,以允许不同类型的可共享域是相同的,但是允许共享性域交叉的垂悬则不容许。这些拓扑限制要求没有任何事物可并入域中-域的成员(这将违反限制1)不可 能并入,非成员(这将违反限制2)也不可能并入。如果成员的分割下游退出了域,并且之 后在也没有与域外事物合并的情况下再并入域,则退出和再进入之间的部分实际上仍位于 域中。拓扑和所组合的域成员资格限制确保了 在屏障的共享性域中,它不会遇到来自 该域之外观测者的事务,并且当其退出域时,其已与来自其曾经与之合并的域的所有成员 的所有事务流合并。它们确保了 任意内部可共享域外的任意位置位于所有内部可共享域 的外部,且如果在任意外部可共享域的外部,则在所有外部可共享域的外部。其结果是,在分割点由屏障进行阻塞的要求可通过仅将屏障的共享性域和分割点 所处的域类型进行比较来确定,这是由于没有共享性域成员能合并位置的下游这一要求已 由此类的限制系统中域的外部的屏障隐含地满足。该机制也可通过屏障位于其共享性域外的明确指示(这可能需要在域出口点处 的显式检测组件),或者在每个相关分割点处该状态的确定来实施。这两种实施方式中的第二种允许多个域中的位置。该实施方式依赖于当屏障事 务穿过共享性域的边界时该屏障事务的所指示的共享性域被修改,从而一旦其退出共享性 域,就通过进行该转变使其变为非阻塞的。当其传出内部或外部可共享域时,其的所指示的 域朝非可共享移动,并且当标记为非可共享时可知位于其域外,并且这样便能成为非阻塞 的。在该情况下,共享性域成员资格的额外限制更为宽松
对于任意两个共享性域A和B,A的所有成员中的任意一个也必须是B的成员,或 者B的所有成员也必须是A的成员,或者都是(该情况下A和B是完全相同的)。换句话 说,域边界不能交叉。需要同样的拓扑限制1.域边界必须包括所有域成员为了允许拓扑的最大灵活性,必须有可能分解拓扑组件(分割和合并)以使得域 边界可被那样绘制2.域外的任何事物都不可并入域中-亦即,域边界不得包括不在域边界内的任何 事物的下游的任何事物3.域边界跨越域交叉链路最后,施加一个额外的拓扑限制以补偿由宽松的域成员资格限制引起的问题4.没有任何边界位置可用于不同数量的用于不同主设备的域,除了位置已位于其 外部共享性域之外的主设备。限制4确保了当屏障跨过域边界时不得不被修改的情况下,其跨越其所在的所有 域的边界。这确保了修改操作不依赖于屏障的始发方(originator)。如果屏障被修改并获得非阻塞状态,如果它位于交叉链路上则其自然被解除阻 塞,但在一些情况下,尽管位于交叉耦合链路上其也可被解除阻塞。如果跨越域边界的链路 是域交叉链路,也就是说,就所关注的该域而言它们是交叉的,亦即,它们不与来自其自身 域中的路径合并,而只与来自其他域的路径合并,之后屏障事务的修改在那儿发生,并且解 除阻塞也可从那一点发生。如果除了在退出域时将所指示的域改向非可共享,在进入域时将所指示的域改得 远离非可共享,则可放弃限制2。这需要不饱和的域指示器,或者可被进入的域的数量限制, 以使得饱和不发生。此外,这将导致已进入域的屏障由于其增长的指示范围而阻塞来自该 域的非成员的事务。图7a非常概略地示出互连中域的上述实现。该图中主设备示于互连中,虽然实际 上其肯定位于互连外。每个主设备20、22、对、26、观具有流或直接包围它的只与其自身生 成的事务相关的非可共享域120、122、124、126、127。然后有一些下一层次级的域,其可以包 括多个主设备或同样只包括相同主设备,因此,主设备20和22具有它们的非可共享域,并 具有包围它们的内部域121,而主设备M具有内部域125,主设备沈具有非可共享域1 和内部域127,并且主设备观具有非可共享域1 和内部域129。然后有包围它们的外部 域,在本例中是域31和33。还有作为整个互连的系统域。正如所看到的那样,域完全位于 彼此中而不会以任意方式相交。也有一个限制,即来自域的所有出口路径为交叉路径。通 过以这种方式限制域,能够确保离开这些域的事务将以特定的方式离开,并且,假定在域中 屏障正确运行,当事务在交叉路径上离开时,它们将以正确次序离开。这允许以特定方式控 制针对这些域的屏障事务。图7b示意性地示出了域的出口节点135,该域包括主设备p0和pi。此出口节点 135受控于控制电路70,并且在此节点处已知任意屏障事务和其控制的事务处于正确的次 序。如之前所描述的那样,屏障事务不一定控制所有事务,但可控制由特定主设备生成的事 务或特定功能的事务。
在共享性域的例子中,屏障事务被标记为控制来自特定域的事务。因此,事务可被 标记为系统屏障事务,因为它控制所有的事务,其可被标记为控制来自流或非可共享域、来 自内部域或来自外部域的事务。无论如何,当屏障事务退出域时,在此实施方式中它能使其 层次级降低,从而如果它是外部域屏障,则当其退出内部域时其将被降低为控制来自内部 域的事务的屏障事务,且当其退出外部域时,它将使其控制的层次级降低为其中没有事务 需由其延迟的非可共享域。这是可能的,因为在该点处所有事务相对于该屏障被排序,且假 定没有重汇聚路径,则互连可确定排序是正确的。应该注意的是,系统屏障在退出域时不改 变,因为它们总是应用于任意地方的任意事物。应该注意的是,如果域中有重汇聚路径,则任何的非阻塞屏障在跨越重汇聚区域 时必须变为阻塞的。如果引入重汇聚路径的另外的互连被连接到具有域的互连,则控制屏 障的域系统不再起作用。如果增加了会影响域及其层次的互连,则系统被控制以使得当它 退出域时屏障事务中的共享性域指示器不会降低。关于重汇聚区域应该注意的是,针对特定地址的一些事务可被限制成沿经过重汇 聚区域的特定路线传送,并且在这种情况下,对于该地址,重汇聚区域不是重汇聚的,互连 可被限制,以使得事务沿特定路线传送到所有地址的特定地址,在这种情况下任意重汇聚 区域可被视为交叉耦合区域,归功于重汇聚区域施加于系统上的相当多的限制,这可能是 有利的。归功于互连被配置的方式,域中未被标记为非可共享屏障的任意屏障事务实际上 将控制其遇到的任意域中的事务,因其不会遇到来自另一个域的事务。被标记为非可共享 屏障的屏障事务将不会延迟其之后的任何事务,然而,不会允许任何事务相对于该事务进 行重排序。这样,通过以该方式布置互连域以及通过降低域出口处指示器的层次级,使用一 种简单方法确定是否屏障事务必须延迟其遇到的所有事务或者不延迟任何事务,而不需要 控制组件精确获知它们在互连内的哪个域中。用于域的另外可能的实施方式是“复杂(complex) ”实施方式。这可用于上述拓扑 限制或域成员资格限制被认为限制性太强的情况。假定对于非可共享和系统域成员资格的 要求被保留,所需要的信息为明确的枚举列表,该列表涉及在该位置处屏障发布者和共享 性域的何种组合可被认为是非阻塞的。因此,并非如针对图如和恥描述的实施方式中的 那样能够根据屏障自身来确定屏障的阻塞特性,而是屏障的阻塞特性由位置、该位置处存 储的域信息来确定。这可以在每个相关位置利用两个列表来实现,一个用于内部可共享域,并且一个 用于外部可共享域。每个列表指示对其而言位置位于该域外的集合或屏障源。可替代地,列 表可存储具有两个比特值的源,其中比特值指示该位置位于该源的哪些共享性域的外部。不管用何种方法表示信息,当系统被重新使用时,由于对表示域信息的不同要求, 要实现设计重用很明显会显著地更为复杂且更为困难。图8显示了这种互连的一个例子。该互连接收来自四个主设备S0、S1、S2或S3的 事务请求。SO和Sl位于内部域200中,而S2和S3位于内部域301中,且它们全位于外部 域302中。也有包含其他域的未显示的其他主设备。在位置310处,一物位于内部域中用于来自S2的事务,并且位于外部域中用于来 自SO或Sl的事务。因此,该位置可这样标记,且当接收到屏障时可确定它们与哪个域相关,以及因此屏障是否位于其域的外面。因此,应用到S0、S1内部域的屏障位于其域的外面,且 可被这样标记或依赖于实施例而发送早期响应。很明显这是非常复杂的。对此的一种替换方式是保守的复杂实施方式(conservative complex implementation)。这被用于需要复杂实施方式的拓扑和域成员资格自由度(freedom)的 情况,但是该实施方式和重用问题必须避免。在这种情况下,使每个必须展现域位置特定的 行为的组件认为其自身处在域的特定级别上并取得了正确的行为,是可能的。如果组件认 为自身处在其实际所在的最小域中,则对于实际位于它们的域外的屏障来说该组件在行为 方面是保守的(仍是正确的),并且对于位于它们的域内的那些屏障来说是正确的。在这方 面应该注意的是,屏障、域或事务的属性能够在能使它们被更高效处理的情况下被改变,如 果它们被改变得更具有限制性的话。从而,被标记为内部的屏障可被视为外部屏障,而被标 记为应用到外部域的事务可被标记为应用到内部域。采用该方法,需要知晓域的组件能够只被编程或配置为具有单个域(具有内部域 成员资格的安全缺省,这可在加电时被使用)。因此,在此实施方式中,域中的位置被标记为具有它是其成员的、具有最严格行为 的域的属性,该域是除非可共享域外的最低层次级的域。该位置处的屏障事务然后被视为 处于此域中。在这样的布置中,允许域是其他域的部分子集。在该布置中,为了调整屏障的 阻塞行为而无需知道其在互连的何处,不是在屏障退出域时改变屏障上的标记,而是依赖 于互连中的位置所在的最低层次或最小可共享域,将互连中的位置标记为位于特定域中。例如在图8的例子中,不需要采用三种不同的标记来标记位置310,只用其所在的 最小可共享域来标记它,也就是内部。因此,在这种情况下,任何被标记为内部或外部的屏 障被认为是位于该域内,而来自SO、Sl内部域的屏障将被认为是位于其域内,即使它不是。 因此,没有早期响应可被发送,且互连的等待时间将增加,这便是本方法的不足。然而,对域 的标记与确定屏障是否位于域内一样简单。附加的权利要求中定义了本发明的各种另外的方面和特征。可以对此处之前描述 的实施例做出各种修改,而不脱离本发明的范围。虽然参照附图详细描述了本发明的示例性实施例,应知道的是本发明并不限于这 些明确的实施例,并且本领域技术人员可做出各种变更和修改,而不脱离由附加的权利要 求所限定的本发明的范围和精神。
权利要求
1.用于数据处理装置的互连电路,所述互连电路被配置为提供数据路线,至少一个启 动器设备能够通过所述数据路线访问至少一个接受设备,所述互连电路包括至少一个输入,用于从所述至少一个启动器设备接收事务请求;至少一个输出,用于向所述至少一个接受设备输出事务请求;多个路径,用于在所述至少一个输入和所述至少一个输出之间传送所述事务请求;其中所述事务请求中的至少一个包括数据存储维护请求,该数据存储维护请求请求对所述 数据处理装置内的数据存储执行的数据存储维护操作;以及控制电路,用于从所述至少一个输入向所述至少一个输出路由所述接收的事务请求;其中所述控制电路被配置为,通过沿着所述多个路径中的至少一个传送后面跟着屏障事务 请求的所述数据存储维护请求来响应所述数据存储维护请求的接收,所述控制电路被配置 为保持沿着所述多个路径中的所述至少一个传送的事务请求流中至少一些事务请求相对 于所述屏障事务请求的排序,以使得所述事务请求流中在所述数据存储维护请求之前的至 少一些事务请求,通过所述屏障事务请求而被保持于所述数据存储维护请求之前,并且所 述事务请求流中位于所述数据存储维护请求之后的至少一些事务请求,通过所述屏障事务 请求而被保持于所述数据存储维护请求之后。
2.根据权利要求1所述的互连电路,其中所述控制电路被配置为,通过延迟所述至少 一些事务请求沿所述多个路径的所述一个的传输直到接收到清除所述屏障事务的响应信 号为止,来响应所述屏障事务请求以保持位于所述屏障事务请求之后的所述至少一些事务 请求的排序。
3.根据权利要求1所述的互连电路,其中所述数据存储维护请求包括高速缓存维护请 求,所述数据处理装置包括至少一个存储器和用于存储保存于所述至少一个存储器中的数 据项目的本地拷贝的一个或多个高速缓存,所述互连电路被配置为传送所述高速缓存维护 请求和所述屏障事务请求到所述一个或多个高速缓存中的至少一个。
4.根据权利要求3所述的互连电路,其中所述控制电路被配置为通过延迟所述至少 一些事务请求沿所述多个路径中的所述一个的传输直到接收到清除所述屏障事务的响应 信号为止,来响应所述屏障事务请求以保持位于所述屏障事务请求之后的所述至少一些事 务请求的排序,并且所述互连电路被配置为接收来自所述至少一个高速缓存的所述响应信 号。
5.根据权利要求3所述的互连电路,其中所述互连电路包括所述一个或多个高速缓存 中的至少一个,所述至少一个高速缓存被配置为在所述高速缓存的输入处保持所述屏障事 务请求并且不接收任何进一步的事务请求,并且响应于与所述高速缓存相关联的控制电路 而确定所述高速缓存维护请求已被处理到一点-在该点处接收进一步的事务请求是安全 的,所述至少一个高速缓存被配置为接收所述进一步的事务请求。
6.根据权利要求5所述的互连电路,其中如果所述高速缓存维护请求触发了待传送到 另外的数据存储的事务请求,所述点包括这样一个点-在该点处源自所述高速缓存维护操 作的所有事务已被进一步传送,所述控制电路被配置为在源自所述高速缓存维护操作的所 述事务之后进一步传送所述屏障事务请求。
7.根据权利要求5所述的互连电路,其中如果所述高速缓存维护请求没有触发进一步 的事务请求,则所述控制电路被配置为,响应于确定所述高速缓存维护请求已被处理到所 述点而消除所述屏障事务请求,其中在所述点处接收进一步的事务请求是安全的。
8.根据权利要求3所述的互连电路,其中所述高速缓存维护请求被指向一个或多个地 址,所述屏障事务请求包括对应的一个或多个地址,所述控制电路被配置为沿着所述多个 路径中的至少一些路由所述屏障事务请求和所述高速缓存维护请求。
9.根据权利要求8所述的互连电路,其中位于所述高速缓存维护请求之后并通过所述 屏障事务请求保持于其后面的所述至少一些事务请求包括到所述一个或多个地址的事务 请求。
10.根据权利要求8所述的互连电路,所述多个路径中的所述至少一些路径为通向能 够为所述一个或多个地址缓存数据的所述一个或多个高速缓存中任一个的路径。
11.根据权利要求1所述的互连电路,所述控制电路被配置为沿着所述多个路径中的 至少一些路径路由所述屏障事务请求和所述高速缓存维护请求,所述多个路径中的所述至 少一些路径为通向发起所述高速缓存维护请求的所述启动器能够为其缓存数据的任意高 速缓存的路径。
12.根据权利要求1所述的互连电路,所述多个路径中的至少一些路径为从节点分叉 出来的分叉路径,所述控制电路被配置为沿着路由所述事务请求所沿着的所述分叉路径中 的至少一些来复制和传送所述数据存储维护请求以及所述后面跟着的屏障事务请求。
13.根据权利要求12所述的互连电路,所述控制电路被配置为延迟所述屏障事务请求 之后的所述至少一些事务请求的传输,直到接收到响应于所有的所述复制的屏障事务请求 的响应信号为止。
14.根据权利要求1所述的互连电路,所述控制电路包括位于所述互连内序列化中一 点的响应信号生成器,在该点之外事务请求不能被重排序,所述响应信号生成器被配置为 生成针对所述屏障事务请求的所述响应信号,并且不再进一步传送所述屏障事务请求。
15.根据权利要求1所述的互连电路,所述控制电路包括响应信号生成器和阻塞电路, 所述响应信号生成器响应于接收到所述屏障事务请求而沿着入口路径发布所述响应信号, 其中所述屏障事务请求是从所述入口路径接收的,并且所述阻塞电路响应于接收到所述屏 障事务请求而阻塞传送所述屏障事务请求所沿着的所有出口路径,从而阻塞所述屏障事务 请求之后的所述至少一些事务请求,直到接收到所述响应信号为止。
16.根据权利要求15所述的互连电路,其中所述响应信号生成器位置紧挨着所述阻塞 电路的上游。
17.根据权利要求15所述的互连电路,其中所述多个路径包括至少一个交叉路径,所 述交叉路径包括所述互连电路内的两个节点之间的唯一通信路径,所述两个节点包括所述 交叉路径的入口节点和出口节点;所述响应信号生成器位于所述入口节点处,并且响应于接收到所述屏障事务请求而沿 所述入口路径传送所述响应信号,其中所述屏障事务请求是从所述入口路径接收的;以及所述阻塞电路位于所述出口节点处,并且响应于接收到所述屏障事务请求而阻塞传送 所述屏障事务请求所沿着的所有出口路径,从而阻塞所述屏障事务请求之后的所述至少一 些事务请求。
18.根据权利要求1所述的互连电路,所述互连电路包括至少一个域,所述至少一个域 包括所述至少一个输入中的至少一个,用于从所述至少一个启动器设备接收事务请求,域 边界被布置以使得接收自所述至少一个输入的事务请求的任何合并发生于所述至少一个 域内;以及所述屏障事务请求包括指示器,所述指示器指示其是否应用到所述至少一个域;以及所述控制电路响应于检测到所述屏障事务请求-所述屏障事务请求包括指示其应用 到所述至少一个域的所述指示器,位于所述至少一个域外,而提供指示所述屏障事务位于 所述域外的指示。
19.根据权利要求18所述的互连电路,其中所述指示包括应用到所述屏障事务请求的 指示器,指示现在其位于其所应用到的域外。
20.根据权利要求18所述的互连电路,其中所述控制电路包括响应信号生成器,所述 响应信号生成器被配置为,如果其位于所述指示器指示的所述屏障所应用到的域内,则不 响应预定类型的屏障事务请求,并且如果其位于所述域外,则响应所述预定类型的屏障事 务请求。
21.根据权利要求18所述的互连电路,所述互连电路包括多个域,所述多个域中的每 一个包括所述至少一个输入中的至少一个,用于从所述至少一个启动器设备接收事务请 求,域边界被布置以使得接收自所述域中的一个内的所述至少一个输入的事务请求的任何 合并发生于所述域中的所述一个内。
22.根据权利要求21所述的互连电路,其中所述多个域中的至少一个是更大域的子 集,并且对于每个输入存在域层次,以使得如果输入是低层次域的成员,则它也是高层次域 的成员,并且在事务退出所述高层次域的同时或之前事务退出所述低层次域。
23.根据权利要求22所述的互连电路,其中所述域包括只包含所述输入中的一个输入 的非可共享域,和包含所有所述输入的系统域,以及至少一种另外类型的可共享域,对于每 个输入,存在域层次以使得非可共享域内的输入也位于用于所述输入的所述至少一种类型 的可共享域内,所述至少一种类型的可共享域内的输入也位于用于所述输入的所述系统域 内。
24.根据权利要求1所述的互连电路,其中所述数据处理装置包括多个层次级的多个 高速缓存,所述屏障事务请求包括指示所述多个层次级中的至少一个的指示器,所述多个 层次级中的所述至少一个的高速缓存被配置为响应于接收到所述屏障事务请求而生成响应信号。
25.一种用于从启动器设备经由互连接收事务请求的接受设备,所述接受设备包括输入,用于从所述互连接收所述事务请求;高速缓存;响应信号生成器,用于生成对于预定类型的屏障事务请求的响应信号;所述接受设备被配置为响应于在所述输入处接收到后面跟着所述预定类型的屏障事 务请求之一的高速缓存维护请求而生成对所述屏障事务请求的所述响应;所述接受设备被 配置为,当所述接受设备已确定所述高速缓存已经为所述高速缓存接收和处理进一步的事 务请求而不损害数据一致性执行了足够的高速缓存维护操作时,发布所述响应信号。
26.根据权利要求25所述的接受设备,所述接受设备响应于接收到跟在高速缓存维护请求之后的另外类型的屏障事务请求,在所述接受设备的输入处保持所述屏障事务请求并 且不接收进一步的事务请求,直到所述接受设备已确定所述高速缓存已为所述高速缓存接 收和处理进一步的事务请求而不损害数据一致性执行了足够的高速缓存维护操作为止,于 是所述屏障事务请求被进一步传送,且所述输入接收进一步的事务请求。
27.一种用于生成并经由互连向接受设备发布事务请求的启动器设备,其中所述事务 请求包括数据存储维护事务请求,所述启动器设备包括屏障事务请求生成器,被配置为生成屏障事务请求,所述屏障事务请求向所述互连指 示穿过所述互连的事务请求流内的至少一些事务请求的排序应该通过以下方式被保持 不允许出现于所述事务请求流中所述屏障事务请求之前的所述事务请求中的至少一些相 对于出现于所述屏障事务请求之后的所述事务请求中的至少一些的重排序;其中所述启动器设备被配置为发布后面跟着所述屏障事务请求的所述数据存储维护事务 请求。
28.根据权利要求27所述的启动器设备,其中所述屏障生成器被配置为,依赖于所述 数据存储维护事务请求,为所述生成的屏障事务请求提供阻塞或非阻塞指示器。
29.根据权利要求观所述的启动器设备,所述启动器设备被配置为,响应于所述屏障 事务请求生成器生成具有所述阻塞指示器的所述屏障事务请求,而不向所述互连发布出现 于所述屏障事务请求之后的所述至少一些事务请求,直到所述启动器设备已接收到对于所 述阻塞屏障事务请求的响应;以及响应于所述屏障事务请求生成器生成具有所述非阻塞指示器的所述屏障事务请求,向 所述互连发布出现于所述屏障事务请求之后的所述至少一些事务请求。
30.根据权利要求27所述的启动器设备,其中所述屏障生成器被配置为,为所述生成 的屏障事务请求提供指示所述屏障事务请求应用到的所述互连内的域的域指示器。
31.一种数据处理装置,包括多个启动器,所述多个启动器包括用于生成并经由互连向 接受设备发布事务请求的至少一个启动器设备,其中所述事务请求包括数据存储维护事务 请求,所述数据处理装置包括屏障事务请求生成器,被配置为生成屏障事务请求,所述屏障事务请求向所述互连指 示穿过所述互连的事务请求流内至少一些事务请求的排序应该通过以下方式被保持不 允许出现于所述事务请求流中所述屏障事务请求之前的所述事务请求中的至少一些相对 于出现于所述屏障事务请求之后的所述事务请求中的至少一些的重排序;其中所述启动器设备被配置为发布后面跟着所述屏障事务请求的所述数据存储保持事务 请求;以及根据权利要求1所述的至少一个接受设备和互连电路,用于在所述多个启动器和所述 接受设备之间提供数据路线。
32.—种用于从至少一个启动器设备经由互连电路向至少一个接受设备路由数据的方 法,所述方法包括在至少一个输入处从所述至少一个启动器设备接收事务请求,所述事务请求中的至少 一个包括请求对所述数据处理装置内的数据存储执行的数据存储维护操作的数据存储维 护请求;以及沿着多个路径中的至少一个向至少一个输出传送所述事务请求;响应于接收到所述数据存储维护请求沿着所述多个路径中的至少一个传送后面跟着屏障事务请求的所述数据存储维护请求;通过使用所述屏障事务请求将沿着所述多个路径中的所述至少一个传送的事务请求 流中位于所述数据存储维护请求之前的至少一些事务请求保持在所述数据存储维护请求 之前并且将所述事务请求流中位于所述数据存储维护请求之后的至少一些事务请求保持 在所述数据存储维护请求之后,在所述事务请求流中保持至少一些事务请求相对于所述屏 障事务请求的排序。
33. 一种生成并经由互连向接受设备发布数据存储维护事务请求的方法,所述方法包括生成所述数据存储维护事务请求中的一个并且之后生成屏障事务请求,所述屏障事务 请求向所述互连指示穿过所述互连的事务请求流内的至少一些事务请求的排序应该通过 以下方式被保持不允许出现于所述事务请求流中的所述屏障事务请求之前的所述事务请 求中的至少一些相对于出现于所述屏障事务请求之后的所述事务请求中的至少一些的重 排序;以及发布后面跟着所述屏障事务请求的所述数据存储维护事务请求。
全文摘要
本发明涉及互连中的数据存储维护请求。公开了用于数据处理装置的互连电路。互连电路被配置为提供数据路线,至少一个启动器设备可以通过数据路线访问至少一个接受设备。互连电路包括至少一个输入,用于从启动器设备接收事务请求;至少一个输出,用于向接受设备输出事务请求;多个路径,用于在至少一个输入和至少一个输出之间传送事务请求;所述事务请求中的至少一个包括数据存储维护请求,其请求对数据处理装置内的数据存储执行的数据存储维护操作;和控制电路,用于从至少一个输入向至少一个输出路由所接收的事务请求;控制电路被配置为通过沿着多个路径中的至少一个传送后面跟着屏障事务请求的数据存储维护操作来响应数据存储维护操作的接收。
文档编号G06F13/16GK102063391SQ20101060931
公开日2011年5月18日 申请日期2010年10月13日 优先权日2009年10月13日
发明者B·J·梅休森, C·W·莱科克, P·A·里奥克罗瓦, R·R·格里森思怀特 申请人:Arm有限公司