CN102576341A - 对分布式系统中的各种组件的活动进行同步 - Google Patents
对分布式系统中的各种组件的活动进行同步 Download PDFInfo
- Publication number
- CN102576341A CN102576341A CN2010800469654A CN201080046965A CN102576341A CN 102576341 A CN102576341 A CN 102576341A CN 2010800469654 A CN2010800469654 A CN 2010800469654A CN 201080046965 A CN201080046965 A CN 201080046965A CN 102576341 A CN102576341 A CN 102576341A
- Authority
- CN
- China
- Prior art keywords
- transactions requests
- request
- interconnection
- barrier transaction
- starter gear
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1621—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- 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
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Circuit For Audible Band Transducer (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Small-Scale Networks (AREA)
- Logic Circuits (AREA)
- Measuring Volume Flow (AREA)
- Computer And Data Communications (AREA)
Abstract
公开了一种用于通过一互连发出事务请求至接收装置的启动装置。该启动装置包括:至少一个端口,用于从该互连接收请求和向该互连发出请求;阻隔产生器,用于产生阻隔事务请求,其向互连表明,应当通过不允许针对阻隔事务请求在事务请求流中对发生在阻隔事务请求之前的至少一些事务请求进行重排序,来维持经过互连的事务请求流内的至少一些事务请求的排序;其中响应于对查询事务请求的至少一个子集的进度的同步请求的接收,启动装置作出响应来执行事务请求的至少一个子集中任何未决的事务请求、在阻隔产生器处产生阻隔事务请求、通过至少一个端口向互连发出阻隔事务请求并且响应于接收到对阻隔事务请求的响应而发出确认信号作为对同步请求的响应。
Description
技术领域
本发明涉及数据处理系统领域,特别涉及具有通过互连与至少一个接收装置通信的不同启动装置的分散系统,以及对这种系统内的不同组件的活动进行同步的方法。
背景技术
互连用来提供数据处理系统中的不同组件之间的连接。互连提供数据路线,一个或多个启动装置可通过这些数据路线来访问一个或多个接收装置。启动装置只是产生事务请求的装置,因此可能是诸如处理器之类的主装置,也可能是另一互连。接收装置只是接收事务的装置,其可能是诸如外围装置之类的从装置,也可能是另一互连。
随着系统由于具有彼此通信的多个处理器和多个装置而变得更加复杂,多处理器系统的软件设计者需要详细了解架构的拓扑结构和时延,以写出确保交互进程随着时间具有一致行为的软件。即使有这方面的详细知识,这种一致性也需要某种不凡的努力以及对性能的牺牲来达成。
希望提供可使程序设计者对于任意架构以一般方式确保交互进程随着时间而具有一致行为的机制。这样的机制可包括确保不同组件在某些时候的同步的方法,以使共享相同资源的组件知道它们在哪些点上具有彼此事务的可见性。
发明内容
本发明的第一方面提供一种用于通过互连向接收装置发出事务请求的启动装置,所述启动装置包括:至少一个端口,用于从所述互连接收请求和向所述互连发出请求;阻隔产生器,用于产生阻隔事务请求,所述阻隔事务请求向所述互连表明应当通过以下方式来维持经过所述互连的事务请求流内的至少一些事务请求的排序:不允许针对所述阻隔事务请求在所述事务请求流中对发生在所述阻隔事务请求之前的至少一些所述事务请求进行重排序;其中,响应于对查询事务请求的至少一个子集的进度的同步请求的接收,所述启动装置作出响应来执行事务请求的所述至少一个子集中任何未决的事务请求、在所述阻隔产生器处产生阻隔事务请求、通过所述至少一个端口向所述互连发出所述阻隔事务请求并且响应于接收到对所述阻隔事务请求的响应而发出确认信号作为对所述同步请求的响应。
本发明认识到要决定何时由其他装置执行的事务请求已完成或至少已到达已知点可能是困难的。本发明使用同步请求来解决此问题,同步请求查询特定事务请求是否已被执行。为了使执行这些请求的启动装置确定何时先前发出的至少一些事务请求已进行到某个点,其产生阻隔事务请求并发送它以跟随先前发出的事务请求。其进度将被监视的至少一些事务请求的排序可由阻隔事务的进度确定,因为系统被配置来使这些事务必须停留在阻隔前面。所以,来自阻隔的响应将不只指示阻隔已到达响应产生器的位置,还指示至少一些事务请求也到达此点。事务请求的进度可以此方式来确定。
在一些实施例,所述事务请求的子集包括由所述启动装置向所述至少一个接收装置发出的所有事务请求,并且其排序由所述阻隔事务请求维持的所述至少一些事务请求包括由所述启动装置发出的所述所有事务请求。
在一些实施例,同步请求可能只是要求通知何时另一启动装置的所有未决事务请求已完成或已到达特定点。在此例中,该子集是所有的事务请求,阻隔事务请求维持所有事务请求的排序,以使得对阻隔的进度的知悉提供了对所有事务请求进度的知悉。
在一些实施例,该启动装置还包括:存储器管理单元;事务请求的所述至少一个子集包括所述存储器管理操作请求,所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成以及何时先前发出的事务请求已到达所述互连内的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响;所述启动装置被配置为:响应于对所述阻隔事务请求的所述响应的接收,以及响应于所述未决的存储器管理操作已完成,发出所述确认信号。
所发出的存储器管理操作事务请求可被具有存储器管理单元的其他启动装置所接受,然而这些装置可能不立即实现它们。这样可能是有利的,因为这些请求具有高延迟,而且如果它们影响到其他高优先级事务的处理,可能是不希望的。在处理中的某点处,处理器可能认识到在此点以外发出的事务需要存储器管理操作已被执行。在此点,启动装置发出存储器管理同步请求。在启动装置处接收到存储器管理同步请求向该启动装置指示已经从发出同步请求的启动装置接收到的任何未决存储器管理操作请求必须被处理。因此,响应于接收此同步请求,启动装置针对互连执行任何未决存储器管理操作请求,并将阻隔事务请求发送至互连。以这种方式,对阻隔事务请求响应的接收向启动装置提供了任何更早发出的事务已到达某点的指示,并且如果正确选择此点,启动装置可在此刻发送对存储器管理同步请求的响应。所以,如此使用阻隔事务请求使得启动装置能够确定其何时可对存储器管理同步请求作出响应。
在一些实施例,所述启动装置包括用于从处理器接收事务请求的另一端口,所述启动装置将所述事务请求中的至少一些传送到所述互连。
该启动装置可只须包括存储器管理单元。在此情况中,它可包括另一端口用于从处理器接收事务请求。存储器管理单元将此事务请求路由至互连,并将执行处理器需要其执行的任何存储器管理操作。它还将将要形成在其他启动装置上的其他存储器管理操作转发至该互连。
在一些实施例,该启动装置还包括:处理器,用于处理数据;该处理器被配置来向所述互连发出事务请求及所述同步请求;该阻隔产生器被配置来产生同步阻隔事务请求,并向所述互连发出所述阻隔事务请求以跟随在由所述处理器在所述同步请求之前向所述至少一个接收装置发出的事务请求之后。
虽然,启动装置可只包括存储器管理单元,在一些实施例,它包括处理器及存储器管理单元。此种启动装置可能不只接收存储器管理操作请求和同步请求,它也可产生这些请求并将它们传送至互连。若它不产生此同步请求,它将在此同步请求之后发出同步阻隔,以使得它可确定先前发出到至少一个接收装置的事务请求在何时已到达某点。
本发明的第二方面提供一种用于通过互连向接收装置发出事务请求的启动装置,所述启动装置包括:处理器,用于处理数据;至少一个端口,用于从所述互连接收请求和向所述互连发出请求;阻隔产生器,用于产生阻隔事务请求,所述阻隔事务请求向所述互连表明应当通过以下方式来维持经过所述互连的事务请求流内的至少一些事务请求的排序:不允许针对所述阻隔事务请求在所述事务请求流中对发生在所述阻隔事务请求之前的所述至少一些所述事务请求进行重排序;其中,所述处理器被配置来向所述互连发出事务请求及同步请求,所述同步请求查询未决的事务请求的至少一个子集的进度;所述阻隔生器被配置为:产生同步阻隔事务请求,并且将所述同步阻隔事务请求发出到所述互连以跟随在由所述处理器在所述同步请求之前向所诉至少一个接收装置发出的事务请求之后。
启动装置可在其希望知道其他启动装置将执行的事务的进度时发出同步请求。当其如此做时,其还可产生同步阻隔事务请求并传送它以跟随在先前发出到至少一个接收装置的事务请求之后。这样一来,其不仅可从对同步请求的响应中确定其他启动装置发出的事务的进度,其还可确定其本身先前发出的事务请求的进度。
在一些实施例,事务请求的所述至少一个子集包括所述存储器管理操作请求,并且所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成以及何时先前发出的事务请求已到达所述互连内的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响。
如前所述,同步在存储器管理操作被执行的情况中特别有用。在此情况中,在处理中的某点处,先前请求的存储器管体操作已完成可能变得重要,并且因此,在此点时可传送步请求及阻隔。
在一些实施例,所述启动装置响应于所述同步阻隔事务请求的发出,不向所述互连发出进一步的事务请求,直到对所述同步阻隔事务请求和所述同步请求的响应已被接收到为止。
响应于传送同步阻隔事务请求,启动装置可阻止进一步事务请求的发出,直到对同步阻隔事务请求及同步请求的响应已被接收为止。若同步请求是要求其所查询的先前操作在可安全传送进一步事务请求之前已被执行的请求,则启动装置将阻止进一步事务请求的发出,直到已从其自己的阻隔事务请求及同步请求进行了接收。此时,若响应信号产生器被合适地布置,则其可肯定更早的事务请求已进行至安全点并且其可继续发出事务。
在一些实施例,所述存储器管理操作包括虚拟至物理地址转译的管理,并且所述阻隔事务维持其顺序的所述至少一些事务包括在执行所述存储器管理操作之前使用虚拟至物理地址转译的事务。
需要同步的存储器管理操作例如是虚拟至物理地址转译的管理。具有使用虚拟地址来处理数据储存的启动装置的系统(在其中是使用物理地址来储存数据)需要转译表来从虚拟地址转译至物理地址。这些转译表的更新必须始终至少被应用于使用存储器中相同地址空间的启动装置。若不确定系统内使用这些转译表的启动装置的数目,则可能难以实现此。再者,这些动作具有高延迟,并且等待它们全部完成及完全确定它们已全部完成可能会有许多性能开销。
产生阻隔事务请求并将其发出以跟随在存储器管理操作事务请求的至少一个之后提供了一种维持相对于存储器管理操作事务请求的排序的方式,而且在一些情况中,提供了确定其已进行到多远的方式。这是重要的,因为在页面表被更新的情况中,使用旧表的先前事务在新表到位之前已进行到某点之外是重要的,并且使用新表的进一步事务在这样的情况之前不被发出也是重要的。
在一些实施例,所述阻隔产生器被配置来利用与阻隔相关联的领域指示器发出阻隔,所述领域指示器指示出所述互连内无法发出对所述阻隔事务请求的响应的区域。
一种以有用的方式确定阻隔在互连内已进行到多远的方式是使用领域指示器。互连可被分成数个领域。若以智能的方式来做此的话,领域可有某些特性,例如,来自两个端口的路径可都在一领域中合并,因此在离开领域时,可知道来自两个端口的每个的事务对于两端口来说是可见的。因此,若阻隔具有不允许在该领域内的响应的领域指示器,则当收到一响应时,可知道它是在领域外,因此来自任一端口的事务此时对于两个端口是可见的。
在一些实施例,所述同步请求是查询事务请求的所述子集中的至少一些请事务求是否已到达所述互连内的预定点的请求,所述同步请求包括指示器,其指示所述预定点。
若同步请求可携有指示互连内同步应该发生的点的指示器形式的信息的话,可能是有利的。在同步请求中提供该信息使接收其的启动装置能够控制其从何处接收针对阻隔请求的响应,因此使其能够获得需要的信息以响应同步请求。
在一些实施例,所述阻隔产生器被配置成依赖于所述同步请求内包括的所述指示器而发出所述阻隔领域指示器。
若同步请求内提供有关于预定点的信息,则阻隔产生器可使用此信息及其对互连内的领域的知悉,来向阻隔事务请求提供合适的领域指示器,以使得对阻隔事务请求的响应指示出所需要的事务请求已至少到达预定点。
本发明的第三方面提供一种用于数据处理装置的互连电路,所述互连电路被配置来提供数据路线,通过所述数据路线,多个启动装置中的至少一者可访问至少一个接收装置及所述多个启动装置的至少另一者,所述互连电路包括:多个启动器端口,用于在所述启动装置与所述互连之间传送事务请求;至少一个接收端口,用于传送事务请求到所述至少一个接收装置;多个路径,用于在所述启动器端口与所述至少一个接收端口之间传送所述事务请求;及控制电路,用于沿多个路径中的至少一者将接收到的所述事务请求从多个输入之一路由至所述输入或输出端口之一;其中所述事务请求中的至少一些事务请求包括来自所述多个启动装置中的第一启动装置的同步请求,其查询事务请求的至少一个子集的进度;并且所述控制电路被配置成将所述同步请求路由到所述启动装置中的至少另一者并且从所述启动装置中的所述至少另一者接收阻隔事务请求,该至少另一者被配置来执行事务请求的所述至少一个子集,所述控制电路被配置来将所述阻隔事务请求沿着所述多个路径中的至少一者在先前从所述至少另一启动装置接收到的事务请求之后路由到所述至少一个接收装置、并且维持所述先前接收到的事务请求中的至少一些事务请求及所述阻隔事务请求在所述事务请求流中的排序;以及响应于对所述阻隔事务请求的响应信号,将所述响应信号路由到所述多个启动装置中的所述至少另一者,所述响应信号向所述至少另一启动装置提供指示,该指示表明所述至少一些先前接收到的事务请求已到达所述响应信号产生器的位置。
为了使同步请求及阻隔事务请求返回有意义的响应,重要的是互连要具有与其相关的控制电路,以使得阻隔事务请求的排序相对于在其之前的至少一些事务请求而被维持。以这种方式,可从对阻隔事务请求的响应中确定被维持在其之前的那些请求已到达响应点。
在一些实施例,所述控制电路包括同步请求复制电路,用于复制所述同步请求,并将其传送到执行所述事务请求的所述至少一个子集的多个其他启动装置;所述控制电路还包括保持电路,用于保持接收自所述多个其他启动装置的对所述复制同步请求的响应信号,并用于响应于对所有所述复制同步请求的确认响应的接收,向所述第一启动装置发出同步请求响应信号。
可能有一个以上执行事务请求的子集的启动装置,因此同步请求会向其查询进度,在此情况中,同步请求会被复制并被发送至所有的这些启动装置。此情况中,控制电路在收到来自其向它们发送了事务请求的所有启动装置的确认响应之前,将不对同步请求作出响应。
在一些实施例,所述互连被配置来响应于从所述第一启动装置接收到阻隔事务请求而在先前从所述第一启动装置接收并路由至所述至少一个接收装置的事务请求之后将所述阻隔事务请求路由到所述至少一个接收装置,所述控制电路被配置来相对于所述阻隔事务请求维持所述先前接收到的事务请求中的至少一些事务请求的顺序,并且响应于对所述阻隔事务请求的响应信号,将所述响应信号路由至所述第一启动装置,所述响应信号向所述第一启动装置提供指示,所述指示表明所述先前接收到的事务请求中的所述至少一些事务请求已到达所述响应信号产生器的位置。
在一些实施例,所述至少一个子集的事务请求是存储器管理操作请求,并且所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成及何时先前发出的事务请求已到达所述互连中的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响。
在一些实施例,所述存储器管理操作包括虚拟至物理地址转译的管理,并且所述阻隔事务维持其排序的所述至少一些事务包括在执行所述存储器管理操作之前使用虚拟至物理地址转译的事务。
管理转译表时,重要的是使用旧表的先前发出的事务请求在表改变前已到达某点,跟随在这些事务请求之后的阻隔事务是确定何时是这种情况的简单且良好方式。
在一些实施例,所述互连包括响应信号产生器,用于响应于所述阻隔事务请求的接收而产生所述响应信号。
虽然,响应信号产生器可位于接收事务请求的接收装置内,其可为执行事务请求的装置或可为另一互连,但是,若其位于互连内并可早先发出对阻隔事务请求的响应信号是有利的。可能重要的是,启动装置知道事务请求已到达接收者。然而,在许多情况中,可布置互连以使得在互连内的某点处,则事务请求已行进得足够远而使进一步事务请求的发出与先前的事务请求维持同步,如果进一步事务请求在此点处被发出到互连的话。例如,若互连被布置的方式是使得来自不同端口的路径在互连内早先合并,则在这些合并点之外的点处,可安全发送响应及后续的事务请求。明显地早点响应可减少系统的延迟并且提高性能。
在一些实施例,所述互连电路包括至少一个领域,所述至少一个领域包括用于从所述至少一个启动装置接收事务请求的至少一个输入中的至少一者,领域边界被安排成接收自所述至少一个输入的事务请求的任何合并发生在所述至少一个领域内;及所述同步请求包括指示器,该指示器指示出其应用于所述至少一个领域中的哪个领域;及所述响应信号产生器位于所述至少一个领域的出口点;所述响应信号产生器响应于检测到所述阻隔事务请求经过所述出口点而产生响应信号;所述控制电路被配置来将所述响应信号传送至以下启动装置:从该启动装置接收到了所述阻隔事务请求。
如前所述,互连电路可包含数个领域,并且如果这些领域被布置为使得事务请求的合并发生在一领域中,则如果响应信号产生器被布置在领域的出口,则要是该领域指示器被选择以使得可肯定来自所需启动装置的事务请求已在该领域的出口合并,则此点处的响应对于向系统指示事务请求已进行至所关注的所有启动装置可见的点来说是非常有帮助的。
在一些实施例,所述控制电路被配置为:在进一步向所述启动装置传送了所述响应信号时,不发送所述阻隔事务。
在一些实施例,阻隔事务请求用来指示启动装置何时已到达互连内的某点,该点是根据要求所选择。在许多实施例中,这是阻隔事务的目的,因此,一旦已给定响应,可能会终止而不进一步传送。
在一些实施例,所述路径中的至少一些路径系发散自一节点的发散路径,该控制电路被配置来沿所述至少一些事务请求所路由的所述发散路径的至少一些路径复制和传送所述至少一些事务请求及该后续阻隔事务请求。
在一些路径是发散的情况下,重要的是,阻隔事务请求所追随的事务请求沿此两者路径移动,直到以收集到来自所有复制阻隔的响应之前,需要复制且不响应阻隔事务请求。为了让此情况发生,在一些实施例,该控制电路包括于该节点处的保持电路,该保持电路被配置来保持接收自所述复制阻隔事务请求的响应信号,并仅响应于接收一针对所有所述复制阻隔事务请求的响应而将所述接收的响应信号传送至该阻隔事务请求的该来源。
本发明的第四方面提供一种数据处理装置,包括多个启动装置,通过一互连与至少一个接收装置进行通信,所述启动装置的至少一者系如本发明的第二方面的启动装置,该互连系如本发明的第三方面的互连。
本发明的第五方面提供一种同步一数据处理装置的方法,该数据处理装置包括多个启动装置,通过一互连发出事务请求到至少一个接收装置,该方法包括以下步骤:发出一同步请求,其查询至少一个事务请求子集的进度;及将该同步请求路由至所述启动装置的至少另一者,其被配置来执行该至少一个事务请求子集;自所述启动装置的至少另一者发出一阻隔事务请求;将该阻隔事务请求在先前接收自该至少另一启动装置的事务请求之后沿所述路径的至少一者路由至该至少一个接收装置以维持所述先前接收的事务请求的至少一些事务请求及一事务请求信息流中的该阻隔事务请求的排序;及响应于一响应信号,该响应信号系针对将该响应信号路由到所述启动装置的至少另一者的该阻隔事务请求,该响应信号提供一指示予该至少另一启动装置,该指示系表明所述先前接收的事务请求已到达该响应信号产生器的位置;产生一确认信号以响应该同步请求,并将该确认信号路由至该第一启动装置。
本发明的第六方面提供一种确定何时响应一接收的同步请求的方法,包括以下步骤:通过一互连发出事务请求到一接收装置;接收一同步请求,其查询来自该互连的至少一个事务请求子集的进度;执行该至少一个事务请求子集内的任何未决事务请求;产生一阻隔事务请求并将该阻隔事务请求发出至该互连;响应于接收针对该阻隔事务请求的响应,发出一确认信号作为针对该同步请求的响应。
附图说明
参考实施例及随附图式更详细描述本发明的实施例,于图式中:
图1示出根据本发明一实施例的数据处理装置及电力控制器;
图2示出同步存储器管理操作的互连;
图3示出根据本发明一实施例的启动器装置;
图4示出根据本发明一实施例的具有数个启动器装置的数据处理装置、互连及接收装置;
图5示出根据本发明一实施例的具有不同领域的互连的数据处理装置;
图6示出在一启动装置中响应同步请求的方法的步骤流程图;
图7示出根据本发明一实施例的在一启动装置中产生同步请求的方法的步骤流程图;
图8示出根据本发明一实施例的同步存储器管理操作的方法的步骤流程图;
图9a、9b、10示出互连可以如何分成不同的领域,取决于阻隔所在的领域,可以不同的方式对待阻隔;及
图11示出适合用于处理阻隔的互连。
具体实施方式
图1示意性地示出数据处理系统5,其具有通过互连25与存储器装置20通信的两个处理器10和12。还有电力控制器40,其用于在不活动期间启动低功率模式,藉此降低系统5的功耗。为了使电力控制器安全地将系统调低功率(power down),需要确定任何由处理器P0或P1发出的未决事务请求已经完成。因此,它向互连电路25和互连内的控制电路70发送同步请求,将同步请求路由至P0和P1。响应于收到同步请求,处理器P0和P1发出任何未决的事务请求到互连25,然后发出阻隔事务请求,以使它们知道它们的事务请求何时已经完成。阻隔事务请求沿着它们采取的路径追随在较早的事务请求之后,并在可安全将发出阻隔事务请求的处理器调低功率时,产生对阻隔的响应,并且该响应信号通过控制电路70经由保持电路72朝着电力控制器路由。收到的第一响应保持于保持单元72中,直到收到对阻隔事务请求的响应为止,然后单个响应被发送到对系统调低功率的电力控制器40。应注意到,电力控制器发送的同步信号可以有与之相关的指示元,该指示元指示出系统的哪一部分将被调低功率。取决于将被调低功率的系统部分,处理器P0和P1可能产生具有与之相关的指示元的阻隔事务请求,指示出系统中给出响应的点。将于下文中描述利用指示从何处给出响应的指示元来提供阻隔事务请求的这种能力。
图2示出根据本发明一实施例的数据处理系统50。系统50具有互连25和各种处理器P0、P1和P2,这些处理器通过互连25彼此通信并且与存储器20通信。处理器P1除了处理器之外还具有存储器管理单元。处理器P2使用外部存储器管理单元45,外部存储器管理单元45在去往互连25的路径上发送事务。
在此实施例,处理器P0可能产生由P1之存储器管理单元和存储器管理单元45所执行的存储器管理操作,并且在它希望知道这些已完成的某一点时,将发送同步请求至互连25。控制电路70接收存储器管理操作请求,并将它们适当地路由到各个MMU,然后当它收到存储器同步请求时,如果需要的话则复制该同步请求并将这(一个或多个)同步请求路由到其已将存储器管理操作请求路由到的MMU。
一旦发出了存储器管理同步请求,处理器P0会发出同步阻隔并阻挡进一步事务的发送。这是因为在这一点上,进一步的事务需要在存储器管理操作可以安全地发出之前已被执行。正是出于这个原因而发出同步请求。
然而,由P1和P2先前发出的事务将想要在存储器管理操生效之前完成。出于这个原因,响应于接收到同步请求,每一存储器管理单元将采取存储器管理操作,但是它们也将发送阻隔产生器(此图中未示出)产生的阻隔至互连25。阻隔将追随在先前发出的需要在存储器管理操作生效之前完成的事务之后。因此,如果存储器管理操作是清除将虚拟地址转译至物理地址的转译表,则使用旧转译的任何事务请求必须于存储器管理操作完成之前完成。因此,阻隔追随在这些通过互连25的事务请求之后,并且在发出存储器同步请求的处理器P0可以看到这些事务请求的点处,产生对这些阻隔事务请求的响应,并将响应送回发出阻隔的MMU。
每个MMU接收对阻隔事务请求的响应,并且如果它已经完成了未决的存储器管理操作,则它将发送对存储器管理同步请求之确认响应信号。这被路由到控制电路70,并保持于保持电路72内,直到已收到对所有复制存储器管理同步请求的响应为止。在这种情况下,需要两个响应。当收到这两个响应时,控制电路70会传送到同步确认响应至处理器P0。处理器P0将等待该响应和对其自己的同步阻隔的响应,并且当它收到这两者时,它可以传送先前进一步阻挡的事务至互连25。
阻隔作出响应的点,也就是P0可看见由P1和P2发送的事务请求的点,将详细于图5介绍。
图3示出根据本发明的实施例的启动装置80。此启动装置具有处理器82,处理器82通过端口85发送事务请求到互连。如果这些事务请求包括存储器管理操作请求,则其中一些由其自己的MMU 90所执行,一些则传送到连接到该互连的其他启动装置的MMU。存储器管理单元90与转译后备缓冲器TLB 95通信,并使用存储在这个缓冲器内的转译表将处理器发送的指令内的虚拟地址转译成由存储在处理系统内的数据所使用的物理地址。存储器管理操作通常会涉及更新这些转译表,并且当后续的指令使用新的转译时,重要的是要知道,不仅自己的转译后备缓冲器被更新,由访问相同存储器空间的其他MMU所使用之转译后备缓冲器也被更新。
为了确保这种情况,处理器82将发送存储器管理同步请求,并且这将由互连路由到各个MMU。此外,阻隔产生器100会产生同步阻隔,并将通过端口85传送,以追随使用较早转译的先前发出的事务请求。这个阻隔会在这些事务请求后面,并且当从响应信号产生器收到对此阻隔的响应时,可以肯定的是,较早的事务请求也到达了这一点。
一旦启动装置80收到对阻隔产生器100所产生的阻隔的响应和对存储器同步请求作出的确认响应,就可以发出到此时为止它所阻挡的使用新转译的后续事务。在此时,它知道用旧转译的较早事务请求已到达可实施新转译的点,并且新转译已实施到可以传送进一步的事务的程度。
除了发出存储器同步请求之外,启动装置80也可在端口87从其他启动装置接收这些同步请求。这些同步请求追随在先前已收到并且请求诸如清除在TLB 95的转译表的存储器管理操作请求将要实施的存储器管理操作请求之后。响应于接收到存储器同步请求,MMU 90将执行它尚未执行的任何未决的存储器管理操作,并会在阻隔产生器100产生以追随先前已发出并使用旧转译的事务请求之后。当已收到对阻隔事务请求的响应时并已完成存储器管理操作时,它将发送响应于存储器同步请求的同步确认响应。
图4示出处理器P1、P2和P3,各自具有缓存和它们自己的存储器管理单元(MMU)。还存在不具有存储器管理单元的另一启动装置P4,它通过系统MMU 45连接到互连10,因此它也可以访问存储器MEM。
存储器管理单元(MMU)用于使得使用虚拟地址的处理器与使用物理地址的存储器进行通信。因此,MMU将保持将虚拟地址映射到物理地址的虚拟到物理地址转译表,并且从处理器到存储器的访问将使用到这些表。在诸如图4所示的多处理器系统中,存储器管理系统实际上是分布式系统,在系统内的不同点具有数个MMU。使用相同地址转译的这些或这些的至少一个子集必须相互保持一致,因此,由一者发出的存储器管理事务可能不得不应用到其他几者。因此,如果例如一个MMU中的转译表将被清除而使用一组新的转译,则此存储器管理操作必须在使用相同地址转译的所有MMU上执行。这些存储器管理事务有很长的时延,因此可显著影响性能。此外,系统可能没有办法知道什么时候这些事务中的一些事务是完成的,并且阻隔是管理与这些事务有关的排序要求的特别有效方式。
因此,如果例如P2发出了一些MMU维护事务至MMU和互连,控制电路70将维护请求转发到其他使用相同地址转译的MMU,这些MMU都将确认对这些维护请求的接收,但它们有一段时间可能不会对这些维护请求进一步进行下去,或者它们也可能开始处理这些维护请求,但因为它们需要一些时间来处理,所以可能需要一段时间才完成。在P2发出使用新转译的事务之前,它可能需要知道在某一特定点维护请求已完成。因此,它将追随在维护请求之后的同步请求发送至其MMU和互连,以转发给每一适当的MMU。此实施例中,在使用新页面的后续事务可由P2发出之前,它需要知道使用旧页表的所有事务已经到达了它们的目的地。因此,除了发送同步请求之外,它也发送同步阻隔事务请求以追随其本身发出并使用旧转译的先前发出的事务请求,然后它将阻挡进一步事务请求的发出。
MMU将通过发出维护请求及发出阻隔来对同步请求的接收作出反应以追随维护请求。阻隔用于追随先前发出的使用旧转译的请求,这样一来,对指示其已到达其目的的阻隔的响应指示出将使用旧页表的所有未决事务将已到达目的地。当从MMU处的阻隔接收到响应时,若MMU已执行存储器管理请求,它将发送对同步请求的确认响应并且这被存储在保持电路52中,直到接收到同步请求的所有MMU收到响应为止,同步答复在该点处被发送到P2,并且若P2已收到对它发出的同步阻隔的响应,则它可以发出进一步的事务。
应注意到,响应于同步请求而由各个MMU发出的阻隔用于让发出者知道所有在它们之前发出的它们所控制的所有事务何时已经到达一特定点。它们不阻挡在它们之后的事务,因此与其相关的时延只有很小的增大。
就一些存储器管理事务而言,重要的是,在管理操作完成之前不发出事务。例如,如果要使用一组新的转译,重要的是,不发出使用新转译的任何事务,直到存储器管理事务在任一处已经完成为止。
就发出虚拟存储器管理同步请求的主装置P2而言,其产生于阻隔产生器62处并且在该同步请求之后发送的阻隔会阻挡在主装置处。同步请求将查询所有MMU关于它们具有的任何未决的虚拟存储器管理操作,直到主装置P2已收到指示出所有未决的虚拟管理操作已完成的响应以及对指示出它所发出的先前事务已达到一特定点的它所发出的阻隔的响应,在这种情况下,响应是从MEM1内的响应产生器55给出的,但在其他实施例中,它可能是从互连内的早先响应单元给出的。
应当注意,虽然为主装置P2示出这些不同特征,但是用于控制其他主装置发出的事务的其他电路是存在的,但未示出。
图5示出一些领域如何可以用在本发明实施例的一些领域。在这个实施例中,互连25具有以虚线51和52表示的领域。虚线52表示一领域,来自P0和P1的事务将于该领域内合并。在领域52的出口处有一早先响应产生器110,一旦事务请求经过这一点,它们已经与来自另一处理器的事务请求合并,因此对双方都是可见的。因此,如果系统只有两个处理器P0和P1,来自响应产生器110的对阻隔事务请求的响应将指示出:阻隔和它所控制的任何事务请求已到达另一处理器可看见每个处理器的事务的点。
因此,就执行于转译表上的虚拟至物理地址转译的存储器管理操作而言,一旦使用旧表的较早事务请求已经到达了这一点,就可以实施新的转译表。因此,如果领域指示元被加到任何阻隔事务请求(表示在由52界定的范围内不允许任何响应),则对阻隔的响应将表示这些事务请求已经离开这个领域。位于领域边界的响应产生器意味着响应在符合该条件时立即发送。应注意到,在一些实施例,同步事务请求可能本身包含指示元,该指示元指示出正在同步的事务在同步发生之前需要在其外的领域。如果是这样的情况下,则阻隔产生器可以获取所有有关可从同步请求发送响应的位置的信息,它只需要将同步请求的领域指示元加至阻隔。
图6示出根据本发明的实施例的在主装置中对同步请求作出响应的方法中的步骤的流程图。主装置发出事务请求到互连。然后,它接收存储器管理操作请求,它确认存储器管理操作请求并可能立即执行或者可能不立即执行。然后,它接收存储器管理同步请求,它针对该请求来执行它尚未执行的任何未决存储器管理请求,然后发出追随在它发出的较早事务请求之后的阻隔事务请求。
当已从阻隔收到指示出较早的事务请求已进行至给出响应的一点之外的响应时,并且当它已经完成了存储器管理操作时,它将对同步请求作出响应。这样一来,启动装置指示出它已经执行了所要求的存储器管理操作,且其先前的事务已进行到超过一特定点,此点是发出了响应的响应信号产生器的位置。正如针对先前的附图所提及的,可以利用阻隔的适当特性来选择此点。
图7示出图示了启动装置所执行的方法中的步骤的流程图,启动装置通过互连与接收装置和至少一个其他启动装置进行通信,并请求存储器管理操作和同步。该启动装置发出事务请求,然后在要求存储器管理操作时,发出请求以传送到其他启动装置。在处理的特定点时,它需要知道这些已经执行,因此它发出存储器管理同步请求并且还发出同步阻隔请求。同步阻隔请求被发出到互连并在传送到接收装置且需要在存储器管理操作生效之前已进行至一特定点外的先前发出的事务请求之后经过互连。
在已经发出同步阻隔请求之后,启动装置阻止进一步事务请求的发出,因为这些需要存储器管理操已被执行。当已收到对同步阻隔和存储器管理同步请求的响应时,启动装置移除对进一步事务请求的阻止,所以这些可被发出到互连。
图8示出图示了在数据处理装置的互连内路由事务请求的方法的流程图,数据处理装置具有数个启动装置通过互连连接到至少一个接收装置。在第一步骤,从第一和其他启动装置接收事务请求并路由到一个或多个接收装置。然后从第一启动装置接收存储器管理操作请求,这些都需要存储器管理操作被其他启动装置执行,所以它们将被路由到这些其他启动装置。这些启动装置可为单独存在的MMU或者也可为具有MMU的处理装置。然后从第一启动装置接收存储器管理同步请求,此请求查询存储器管理操作请求是否已执行,以及其他启动装置所发出的在存储器管理操作已完成之前应到达互连内一特定点的其他事务请求的进度。存储器同步请求被复制并传送给收到了存储器管理操作请求的其他启动装置。
然后从第一启动装置接收同步阻隔请求,并在接收自第一启动装置且传送到接收装置的事务请求之后路由。互连电路相对于同步阻隔请求,维持接收自第一启动装置的事务请求的顺序,以使该同步阻隔请求提供指示给第一启动装置,以指示其追随的事务请求的进度。
然后接收对同步阻隔请求的响应并路由到第一启动装置,第一启动装置会知道在同步阻隔请求之前的事务请求已到达响应信号产生器的位置。
然后从其他启动装置接收阻隔事务请求,并且在从各个其他启动装置接收的事务请求之后路由。事务请求相对于阻隔的排序然后由互连控制电路维持。
然后接收对阻隔的响应并发送到发出阻隔的各个其他启动装置,这样一来,这些启动装置知道在阻隔之前传送的事务请求已到了发出响应的位置。这样,它们可以确定何时要对它们收到的同步请求作出响应。
然后从其他启动装置接收对复制的存储器同步请求的响应,当接收到所有响应时,发送确认响应到第一启动装置。这样一来,阻隔的使用及通过互连对阻隔的控制用来确定各种事务请求的进度,并允许不同的组件被同步。
如前所述,互连可划分为领域,如果适当选择领域的特性,则在领域出口的响应可以用来向启动装置表明特定的事务请求已经到达一定数量的其他输入端口可见的一点。
一般而言,有数种不同方式将主装置及互连的不同部分分组为不同领域,并控制领域内的阻隔和事务以确保在不会过度增加时延的情况下维持了事务的正确排序。在这方面,已经认知到,如果施以某些规则在与领域有关的互连的拓扑上,则阻隔会有可用以减少阻隔的时延的特定特性。以特定方式安排领域可能会对所允许的系统拓扑产生限制,但也可能减少阻隔产生的时延,因此不同的领域可能实施方式各有优点和缺点,这在下文描述。
在所有的领域安排中,如果阻隔事务被标记为与一特定领域有关,则除了在重会聚(reconvergent)区域,当它在领域外时总是可以响应,然而当某些类型的阻隔在标记领域内时是不能不被阻挡的。
在第一种“空”实现方式中,不考虑这些领域。将所有阻隔视为适用于该系统所有部分中的所有事务。显然地,此种方式性能低,因为由阻隔造成的时延会很高。然而,此方式允许未经限制、任意的领域成员资格(即便该成员资格没有作用)和拓扑,且因而总是可被建立。这在逻辑上等同于所有领域在其所有领域中包括所有主装置。
在一替代性的“近似空”实现方式中,有和每一主装置相关的非共享领域,且在此领域外,会利用不同的方式来处理与这些领域相关的阻隔。由于一非共享阻隔在来自主装置的输入之外的任何地方都位于其可共享性领域之外,因此可在整个互连中将其视为这样来处理,且因而其在该互连的所有非再汇聚部分中都是非阻断的。将其他可共享性领域阻隔事务视为位于空实现方式中来处理。这在逻辑上等同于使得该非共享领域边界作为发出者或主装置输入,且所有其他领域含有所有其他主装置。
一替代性的“简单”实现方式具有某些受限制的拓扑以及较佳的性能。此种方式会产生两种不同的解决方案,这取决于可接受的限制程度。
上述这些方法都可使用以下三种对于可共享性领域成员资格的限制。
1.观察者的非共享领域本身是单独的。
2.观察者的系统可共享性领域至少包含所有可和其直接或间接通讯的其他观察者。
3.观察者的内部共享领域的所有成员亦为其外部共享领域的成员。
上述限制的前两种是由第三种限制所施加的限制。此外,上述两种方案具有特定的拓扑限制,以及可能的额外可共享性领域成员资格限制。
上述两种实施方式的第一种需要一种限制以要求每一位置位于单一领域中,且因此,这取决于该互连中的每一位置只位于一种领域中(内部、外部或系统)。为了达到此一目的,必须实施一种额外的可共享性领域成员资格限制:
任何观察者的任何可共享性领域的所有成员必须将该可共享性领域的所有其他成员作为与其具有相同等级的可共享性领域的成员。即,若观察者B是观察者A的内部共享领域的成员,则相对地,A必须是B的内部可共享性领域的成员。
必须符合的拓扑限制如下:
1.领域边界必须包含该领域的所有成员
2.在一领域外没有东西可合并至该领域中——即该领域边界必须不得包含位于不在该领域边界中的任何东西下游的任何东西
3.所有领域边界必须位于领域二等分链接上
用较简单的方式来说明,在此情形中,可将该区域边界视为表示高度的组件布局之等高线(其中允许垂直面但不允许悬垂)。每一主装置位于相同的高度,且每一可共享性领域轮廓也和其他相同类型者处于相同的高度。可允许垂直的悬崖,以使得不同类型的可共享性领域可以是相同的,但不允许可能会造成可共享性领域交叉的悬垂。
这些拓扑限制要求不可将任何东西合并至领域中——该领域的成员(这会违反限制1)和非成员(这会违反限制2)都不行。如果位于一成员下游的分支离开了该领域,且之后重新合并到其中而没有同时合并某些位于该领域外的东西,则在离开与重新进入之间的该部分仍有效地位于该领域中。
拓扑和领域成员资格限制组合起来,可确保在其可共享性领域中,一阻隔不会遇上来自位于该领域外之观察者的事务,且当其离开该领域时,其已经合并了来自其将会合并的该领域中的所有成员的所有事务流。它们亦可确保位于任何内部共享领域之外的任何位置都是位于所有内部共享领域之外,且若位于任何外部共享领域外部也就位于所有外部共享领域之外。
正因为如此,可仅通过将一阻隔的可共享性领域和一分支点所处领域的领域类型进行比较,来确定对于该阻隔在该分支点是否为阻断的要求,因为该阻隔位于此一受限制的系统的该领域之外,就隐含地符合了在该位置下游不可有该可共享性领域之成员进行合并的此一要求。
可通过以下任一种方式来实现此一机制:明白地指出该阻隔位于其可共享性领域之外,这会需要在领域出口点上有一显式检测组件;或在每一相关分支点上确定该状态。
上述两种实现方式的第二种允许在多个领域中的多个位置。此种实现方式取决于当一阻隔事务通过所指明的可共享性领域的边界时,该阻隔事务所受的修改,而使得一旦当其离开其可共享性领域时,可通过进行该转换而使其变成非阻断。当其通过其所指明领域的一内部或外部共享领域而朝向非共享领域且将其标记为非共享时,就可以知道其位于其领域之外且因而可以是非阻断的。
在此种情形中,对于可共享性领域成员资格的额外限制较为宽松:
对于任两个可共享区域(A与B),A的所有成员必须也是B的成员,或是B的所有成员也必须是A的成员,或以上两种情形都成立(在此情形中,A和B是相同的)。换句话说,领域边界不会交叉。
需要相同的拓扑限制:
1.领域边界必须包含该领域的所有成员
为了让拓扑具有最大灵活性,必须刚好能够解构拓扑组件(分支与合并)而使得能够勾勒出领域边界,而使得
2.位于一领域外的任何东西都不能合并到该领域中——即,该域边界必须不包含位于不在该区域边界内的任何东西下游的任何东西
3.该领域边界会越过领域二等分链接
最后,会施行一额外的拓扑限制,以补偿因为较宽松的领域成员资格限制所致的问题:
4.没有边界位置可用于不同主装置的不同数目的领域(此处排除了其位置已经位于其外部可共享性领域之外的主装置)。
限制4确保当一阻隔因为越过一领域边界而必须被修改时,它会越过它所处的所有领域的边界。这可以确保修改操作不会因该阻隔的起始装置而异。
若一阻隔经过修改且获得了非阻断状态,当然可将其接通(若其系位于一二等分链路上),但在某些情形中,即便其位于一交叉耦合链路上,仍可将其接通。若越过该领域边界的该链接是领域二等分链接(亦即,其就该领域而言是二等分的,即它们不会和来自其本身之领域的路径合并,而只会和来自其他领域的路径合并),则可在该处进行对该阻隔事务的修改,且亦可在该点进行上述接通。
在以下情形,可以省略限制2:除了在领域出口上将所指领域朝向非共享改变以外,还在领域进入点上将改变所指领域使其远离非共享。这需要一种没有饱和的领域指示元,或对可供进入的领域数目加以限制,而使得饱和情形不会发生。此外,这会导致已经进入一领域的阻隔变成能够阻断来自该区域之非成员(这是因为它们的所指范围增加)的事务。
图9a非常概要地示出了在一互连内的上述领域的实现方式。该图中所示出的主装置位于互连内,但在实际上,它们当然可以位于互连之外。每一主装置200、220、240、260、280具有直接位于其周边的一流或非共享领域120、122、124、126、127,这些流或非共享领域可能仅和该主装置所产生的事务相关。接着,有一些下一层级的领域,其可包含多个主装置或就是该同一主装置,因此,同样地,主装置200与220有其非共享领域,且之后具有位于其周边的内部领域121;而主装置240具有内部领域125、主装置260具有非共享领域126与内部领域127且主装置28具有非共享领域128与内部领域129。接着,还有围绕其设置的外部领域,在此实施例情形中,上述外部领域为领域31与33。之后有系统领域,也就是整个互连。如图所述,这些领域完全位于彼此之内,且并未以任何方式相交。还有一个限制是来自这些领域的所有出口路径都是二等分路径。通过这样限制这些区域,可以确定离该这些领域的事务会以特定的方式离开,且当它们离开二等分路径时,若是在该领域内该阻隔正常发挥功用,则它们会以正确的顺序离开。这使得能够以一种特定的方式相对于这些领域来控制阻隔事务。
图9b概要示出前往一领域的一出口节点135,该领域包含主装置p0与p1。此出口节点135受到控制电路系统70的控制,且在此点上,已知任何阻隔事务与受其控制的事务都处于正确的顺序。现在,如上文所述,阻隔事务不必然控制所有事务,但可控制特定主装置产生的事务或属于特定功能的事务。
在可共享性领域的情形中,阻隔事务被标记成可控制来自特定领域的事务。因此,可将一事务标记为系统阻隔事务,因为其控制所有事务;可将其标记为控制来自一流或非共享领域、来自一内部领域或来自一外部领域的事务。在任何情形中,当一阻隔事务离开一领域时,在本实现方式中,此阻隔事务可以减少此阶层,而使得若其为一外部领域阻隔,当其离开该内部领域时,可将其降级为控制来自内部领域之事务的阻隔事务,且当其离开该外部领域时,其会使得受其控制之阶层降级为一非共享领域,在该处没有事务会受到其延迟。可以达成上述目标是因为在此点上,相对于此阻隔排定了所有事务的顺序,且前提是没有再汇聚路径,则该互连可以确定该顺序是正确的。应注意到,当系统阻隔离开领域的时候并不会改变,因为它们永远适用于位于任何地方的任何东西。
应注意到,若在一领域内有再汇聚路径,则任何非阻断阻隔在越过该再汇聚区域时必须变成阻断。若有进一步的互连引入了再汇聚路径,并将此互连连接至具有这些领域的一互连,则用已控制阻隔的领域系统就无法运作了。若加入了会影响这些区域与其层系的一互连,则应控制该系统而使得当该阻隔事务离开该领域时,不会降级该阻隔事务中的该可共享性领域指示元。
应注意到,对于再汇聚区域,可限制前往特定地址的某些事务而使其沿着一特定路径而通过该再汇聚区域,且在此种情形中,该再汇聚区域对于该地址而言并非汇聚,可限制一互连而使得对所有地址而言,事务都会沿着一特定路径传送前往一特定地址,在此种情形中可将任何再汇聚区域视为一交叉耦合区域来处理,这样做的优点来自于一再汇聚区域会对系统造成可观的限制。
受限于互连配置的方式,一领域中任合并未标记为一非共享阻隔的阻隔事务实际上都可以控制其所遇上之任何领域的事务,因为他不会遇上来自另一领域的事务。被标记为非共享阻隔的一阻隔事务不会延迟位于其后的任何事务,然而,没有其他事务可相对于此事务而重新排序。如此一来,通过这般布置这些互连领域,且通过在该领域的出口上降低该指示元的层级,提供了一种简单的方法以决定该阻隔事务是否必须延迟其所遇上的所有事务或不延迟的事务,而该控制组件无须精确地知道这些事务位于互连中的何种领域。
另一种可能的领域实现方式为“复杂”实现方式。其用于认为上述拓扑限制或领域成员资格限制过于严格的情形中。假设应保持针对非共享及系统领域成员资格的限制,所需要的信息是一种列表以明确地列举出可将何种阻隔发出装置与可共享性区域的组合视为在该位置为非阻断的。因此,此处并非由阻隔本身来决定阻隔的阻断性质(如参照图5a与图5b所述的实现方式),而是由该位置以及存储于该位置的区域信息来决定该阻隔的阻断本质。
可通过在每一相关位置的两种列表来达成此目的,一列表是用于内部共享领域,而另一列表用于外部共享领域。每一列表指明位置位于该领域外的该组阻隔源。或者是,可存储一列表其中以二位数值来指明该位置系位于该来源的何种可共享性领域之外。
不论如何表示上述信息,其很明显地更为复杂且难以允许设计重新使用,因为当重新使用一系统时,要表示该领域信息的要求各不相同。
图10示出此一互连的实施例。此互连由四个主装置S0、S1、S2或S3接收事务请求。S0与S1系位于一内部领域200中,而S2或S3系位于一内部领域201中,四个主装置皆位于一外部领域202内。还有其他未示出的主装置并具有其他领域。
在位置210,其对于来自S2的事务系位于该内部领域中且对于来自S0或S1的事务系位于该外部领域中。因此,可据此标记此一位置,且当接收到阻隔时,可以决定这些阻隔系有关于何种领域,且因此,可决定该阻隔是否位于其领域的外部。因此,适用于S0、S1内部领域的一阻隔系位于其领域之外,且可取决于实施方式而如是标记该阻隔或可传送一早期响应。很明显地,这非常复杂。
对此的一种替代性方案是保守复杂实现方式。此一实施方式系用于当需要复杂实现方式之组件布局与区域成员资格自由,但必须避免其实现方式与重新使用问题的情形。在此种情形中,可以使必须表现出领域-位置-特定行为的每一组件认定其本身属于一特定领域层级,且可达成正确的行为。若该组件认定其本身属于其实际上所处的任何领域中的最小领域中时,则其对于实际上位于本身领域之外的阻隔之行为会是保守(但正确)的,且对于实际上位于本身领域内的阻隔之行为会是正确的。就此,应注意到,可在适当处改变阻隔、领域或事务的性质,使得其能够以更有效率的方式被处理,前提是它们的改变是变得更具限制性。因此,可将标记为内部的一阻隔视为一外部阻隔来处理。
通过这种方法,需要知道领域的组件可以程序设计或配置为具有单一领域(在有内部领域成员的安全默认值的状态,这可以用来启动电源)。
因此,在这个实施,领域内的位置是标记为具有其为成员的领域中最严格的行为的特性,其是除了非共享领域外最低层级的领域。在该位置的阻隔事务会被视为在此领域中。在这种安排下,允许领域是其他领域的部分子集。在这种安排下,取决于它们所在的最低层级或最小共享领域,互连中的位置是标记为在一特定领域中,而不是在它离开领域时,改变阻隔上的标记,以在不需要知道所处互连的情况下,调整阻隔的阻挡行为。
在图10的例子中,例如,不需要三种不同的标记来标记位置210,只以它所在的最小的共享领域来标记,亦即内部。因此,在这种情况下,任何标记为内部或外部的阻隔是视为在此领域内,来自S0、S1内部领域的阻隔将被视为在其领域内,即使它并非如此。因此,没有早先响应可以发送,且互连的时延将增加,这是这种方法的缺点。然而,标计领域会更为简单,如同决定阻隔是否在领域内。
图11示出互连100和如何处理阻隔的一般情况。互连100将多个主装置200、220、240和260通过多个路径连接到多个从装置300、320、340和360。这些路径可能有交叉耦合的部分,例如400处所示,两个路径的每一路径在各自的分叉点410和420分成两个,在合并点440和450合并。也可能有二分路径,例如在500所示。有些路径是互连中两个节点之间的唯一连接,使得切断路径将会使互连分成两个部分。
当事务沿着这些不同路径移动时,路径的本质(亦即这些路径是交叉耦合还是二等分)会影响这些事务的顺序。举例来说,一交叉耦合路径的起点是一分支点,其可将该事务流切分成多重事务流,而在该分支点之前位于另一事务后的一事务可能会比原本在前面的事务到达目的地之前更早到达其本身的目的地。沿着二等分路径移动的事务必须保持其顺序,除非有某些功能单元允许重新排序,上述功能单元如一重新排序缓冲区(例如图中所例示的60)。可利用重新排序缓冲区来重新排序事务,以允许具有较高优先级的事务在一较低优先级的事务之前传输到从装置。
亦有一些所谓的再汇聚路径,其中先前分开的路径又汇合在一起,且这亦可能造成该事务流内的重新排序。互连100不具有任何再汇聚路径。
多个事务到达其个别目的地的顺序可能会与其传送顺序不同的事实,对于取决于先前事务的后续事务(且因此必须先完成先前事务)而言,可能会导致一些问题。举例来说,若在事务流中有前往相同地址的一存储指令位于一加载指令之前,则在加载之前先完成存储是非常重要的,不然载入动作会读取到不正确的数值。为了让程序设计者能够确保所需的事务以所需的顺序到达目的地,互连100经设置可用以响应该事务流中的阻隔事务,以保持该互连中的事务相对于该阻隔的顺序。因此,可在不应赶过彼此的事务之间插入一阻隔事务,而这可以确保不会发生重新排序的问题。
该互连可通过延迟在于该互连内传递的该事务流中位于该阻隔事务之后的事务,来响应这些阻隔事务,直到已经接收到对于该阻隔事务的一响应信号为止。该响应信号指明已经可以安全的传送一后续指令。应注意到,清空一路径的一响应信号可能可以是一种指明该较早的事务已全部完成的信号,或其可以仅是一种指明该阻隔事务已经沿着一路径传送(若,举例来说,该路径为二等分路径)的信号,或该阻隔已经到达传送出一早期清空响应信号的一节点并可再度进行阻断。
该互连亦可仅沿着各种路径在该先前事务之后传送该阻隔事务,而使得当检测到该阻隔到达一特定点时,该互连就可以确信所有先前事务已经通过此点。不论其是仅在流中传输该阻隔,或基于阻隔的本质而延迟事务以及基于该阻隔是否为一阻断阻隔。
阻断阻隔系指在受其控制的事务流中位于其后的事务在上游某处被阻断,且因此,其他事务可以赶过阻断阻隔,因为它们必定不是需要保持在后方的事务;然而,阻隔本身不能赶过位于其前方受其控制的任何事务请求。可利用早期响应单元来接通阻断阻隔。详见下文。
非阻断阻隔系指没有事务请求被阻断,且因此,受其控制的事务请求必须位于此阻隔事务请求的正确侧上的阻隔。因为没有上游阻断,所以不能利用早期响应单元将其接通。由下文讨论将可理解,可利用阻断或非阻断指示元来指明阻隔的不同本质;或者是,一系统仅可支持一种类型的阻隔,在此种情形中就不需要指示元。或者是一阻隔可为缺省阻隔类型,且在此情形中,只有另一种类型的阻隔具有一指示元。或者是,在互连中可能有些区域中的所有阻隔都表现成阻断阻隔,而在有些区域中的所有阻隔都表现成非阻断阻隔。在此种情形中该互连可经设置而使得阻隔不携带任何指示元,但该互连可以基于其在互连中的位置而以特定的方式来处理此阻隔。
阻隔事务的进程受到控制电路系统70的控制。在本图式中,以单一阻断概要地呈现此一情形,然而,在实际运用上,控制电路系统可分散于整个互连中并邻近由其控制的电路系统。因此,在每一分支点,举例来说,会有某些控制电路系统以确保至少在某些实施方式中,当接收到一阻隔事务时会将其复制,且可由该分支点将一经复制的阻隔事务向下传送至每一出口路径。在其他实施方式中,会将该经复制的阻隔向下传送至除一者外的所有出口路径,下文将详述之。控制电路系统可以意识到已经复制了阻隔事务,且因此,可在其清空用以传输事务(其系位于原始阻隔事务之后且必须保持在其后)的路径之前,要求来自每一经复制的阻隔事务的响应信号。
在最简单的形式中,由一主装置(如,主装置200)发出一阻隔事务,且接着主装置200阻断所有后续事务,直到其具有来自该互连的一响应信号(其指明主装置可传输后续事务)。或者是可由紧邻该互连的进入点上的控制电路系统发出阻隔。将位于该阻隔事务之前的事务以及该阻隔事务传输至该互连,且控制电路系统70控制这些事务的发送。因此,在分支点420会复制阻隔事务,且其移动到合并点440与450。在此点上,该事务进入了二等分路径500与520,且因为这些事务不能相对于一阻隔而改变其在这些路径上的位置,所以当该阻隔事务到达这些路径其中之一的起点时,就可以知道位于其之前的所有事务都位在前方,且在沿着该路径上仍然会位于其前方。因此,清空单元800可传送一早期响应信号,且可响应对所有这些信号的接收,位于分支点420的控制电路将早期响应信号传送至主装置200,之后主装置200可接通位于受其控制的阻隔事务之后的事务,并将其传输给该互连。
通过提供早期响应单元800,可将主装置200阻断一段短得许多的时间(相较于让其等待来自多个从装置的回应以指明该阻隔事务已到达该从装置),且如此一来,可降低阻隔事务引入的时延。
沿着路径500传送的阻隔事务离开该互连,并在不经过除了二等分路径50以外任何其他路径的情形下到达从装置300,且因此,不需要响应此阻隔事务而再次进行阻隔,因为当阻隔已通过清空单元后,位于其前方的事务必然仍在其前方。然而,沿着路径520传送的阻隔事务会到达进一步的交叉耦合部分480,且可回应在分支点490接收到该阻隔事务,与此分支点相关联的控制电路系统70会复制该阻隔事务、将其传下至两个出口路径并针对位于其后方且受其控制的事务请求阻断其后的进入路径。因此,在某些实施方式中,通过将这些后续事务保持在该阻断电路系统900内的一缓冲区中,而延迟这些后续事务,直到针对所有经复制的阻隔事务接收到一响应信号为止。因此,该经复制的阻隔事务通过该交叉耦合电路系统400并离开该交叉耦合电路系统而加入进一步的二等分链路520与500。如上文所述,二等分路径可保持事务相对于该阻隔的顺序,且因此,可利用清空单元800由该二等分路径的起点传送一早期响应。阻断电路系统900会等待接收来自分支点490之对该阻隔事务的响应。分支点490复制该阻隔事务,并将二阻隔事务进一步向下传送至每一路径。分支点490直到其分别接收到对于其所传输的二阻隔事务中每个的响应,才会传回一响应至阻断电路系统900。响应于此种响应,阻断电路系统900允许传输保存于其缓冲区中的任何后续事务。当该清空电路系统位于离开该互连之前的最后二等分路径上时,不需要针对某些阻隔类型发出进一步的阻隔。
如上所述,在二等分路径520上有一重新排序缓冲区600,且此缓冲区经设置用以回应该阻隔且不允许受到该阻隔控制的事务相对于该阻隔而重新排序。
在上文的叙述中,假设存在一阻隔以将所有后续事务保持于其后。然而,在某些实施方式中,如下文所详述者,该阻隔可能仅需要防止该后续事务的一子集赶过它,上述子集可能是来自一特定主装置或具有特定功能(如,写入事务)。在此种情形中,控制电路系统70与阻断电路系统900仅会延迟此事务子集,且会允许其他事务继续进行。更有甚者,在一分支点上,若受到该阻隔控制的事务绝对不会传下至该路径其中之一,则不需要将一经复制的阻隔传下至该路径。
后附权利要求定义本发明的各个方面及特征。在没有偏离本发明的范围的情况下,可对之前所述的实施例进行各种修改。
Claims (25)
1.一种用于通过互连向接收装置发出事务请求的启动装置,所述启动装置包括:
至少一个端口,用于从所述互连接收请求和向所述互连发出请求;
阻隔产生器,用于产生阻隔事务请求,所述阻隔事务请求向所述互连表明应当通过以下方式来维持经过所述互连的事务请求流内的至少一些事务请求的排序:不允许针对所述阻隔事务请求在所述事务请求流中对发生在所述阻隔事务请求之前的至少一些所述事务请求进行重排序;其中
响应于对查询事务请求的至少一个子集的进度的同步请求的接收,所述启动装置作出响应来执行事务请求的所述至少一个子集中任何未决的事务请求、在所述阻隔产生器处产生阻隔事务请求、通过所述至少一个端口向所述互连发出所述阻隔事务请求并且响应于接收到对所述阻隔事务请求的响应而发出确认信号作为对所述同步请求的响应。
2.如权利要求1所述的启动装置,其中所述事务请求的子集包括由所述启动装置向所述至少一个接收装置发出的所有事务请求,并且其排序由所述阻隔事务请求维持的所述至少一些事务请求包括由所述启动装置发出的所述所有事务请求。
3.如权利要求1所述的启动装置,所述启动装置还包括:
存储器管理单元;
事务请求的所述至少一个子集包括所述存储器管理操作请求,所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成以及何时先前发出的事务请求已到达所述互连内的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响;
所述启动装置被配置为:响应于对所述阻隔事务请求的所述响应的接收,以及响应于所述未决的存储器管理操作已完成,发出所述确认信号。
4.如权利要求3所述的启动装置,其中所述启动装置包括用于从处理器接收事务请求的另一端口,所述启动装置将所述事务请求中的至少一些传送到所述互连。
5.如权利要求1至3中任一项所述的启动装置,
所述启动装置还包括:
处理器,用于处理数据;
所述处理器被配置为:向所述互连发出事务请求及所述同步请求;
所述阻隔产生器被配置为:产生同步阻隔事务请求,并向所述互连发出所述阻隔事务请求以跟随在由所述处理器在所述同步请求之前向所述至少一个接收装置发出的事务请求之后。
6.一种用于通过互连向接收装置发出事务请求的启动装置,所述启动装置包括:
处理器,用于处理数据;
至少一个端口,用于从所述互连接收请求和向所述互连发出请求;
阻隔产生器,用于产生阻隔事务请求,所述阻隔事务请求向所述互连表明应当通过以下方式来维持经过所述互连的事务请求流内的至少一些事务请求的排序:不允许针对所述阻隔事务请求在所述事务请求流中对发生在所述阻隔事务请求之前的所述至少一些所述事务请求进行重排序;其中
所述处理器被配置来向所述互连发出事务请求及同步请求,所述同步请求查询未决的事务请求的至少一个子集的进度;
所述阻隔生器被配置为:产生同步阻隔事务请求,并且将所述同步阻隔事务请求发出到所述互连以跟随在由所述处理器在所述同步请求之前向所诉至少一个接收装置发出的事务请求之后。
7.如权利要求6所述的启动装置,其中事务请求的所述至少一个子集包括所述存储器管理操作请求,并且所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成以及何时先前发出的事务请求已到达所述互连内的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响。
8.如权利要求5、6或7所述的启动装置,其中所述启动装置响应于所述同步阻隔事务请求的发出,不向所述互连发出进一步的事务请求,直到对所述同步阻隔事务请求和所述同步请求的响应已被接收到为止。
9.如权利要求3、4或7所述的启动装置,其中所述存储器管理操作包括虚拟至物理地址转译的管理,并且所述阻隔事务维持其顺序的所述至少一些事务包括在执行所述存储器管理操作之前使用虚拟至物理地址转译的事务。
10.如任一在前权利要求所述的启动装置,其中所述阻隔产生器被配置来利用与阻隔相关联的领域指示元发出阻隔,所述领域指示元指示出所述互连内无法发出对所述阻隔事务请求的响应的区域。
11.如任一在前权利要求所述的启动装置,其中所述同步请求是查询事务请求的所述子集中的至少一些请事务求是否已到达所述互连内的预定点的请求,所述同步请求包括指示元,其指示所述预定点。
12.如权利要求10和11所述的启动装置,其中所述阻隔产生器被配置成依赖于所述同步请求内包括的所述指示元而发出所述阻隔领域指示元。
13.一种用于数据处理装置的互连电路,所述互连电路被配置来提供数据路线,通过所述数据路线,多个启动装置中的至少一者可访问至少一个接收装置及所述多个启动装置的至少另一者,所述互连电路包括:
多个启动器端口,用于在所述启动装置与所述互连之间传送事务请求;
至少一个接收端口,用于传送事务请求到所述至少一个接收装置;
多个路径,用于在所述启动器端口与所述至少一个接收端口之间传送所述事务请求;及
控制电路,用于沿多个路径中的至少一者将接收到的所述事务请求从多个输入之一路由至所述输入或输出端口之一;其中
所述事务请求中的至少一些事务请求包括来自所述多个启动装置中的第一启动装置的同步请求,其查询事务请求的至少一个子集的进度;并且
所述控制电路被配置成将所述同步请求路由到所述启动装置中的至少另一者并且从所述启动装置中的所述至少另一者接收阻隔事务请求,该至少另一者被配置来执行事务请求的所述至少一个子集,所述控制电路被配置来将所述阻隔事务请求沿着所述多个路径中的至少一者在先前从所述至少另一启动装置接收到的事务请求之后路由到所述至少一个接收装置、并且维持所述先前接收到的事务请求中的至少一些事务请求及所述阻隔事务请求在所述事务请求流中的排序;以及
响应于对所述阻隔事务请求的响应信号,将所述响应信号路由到所述多个启动装置中的所述至少另一者,所述响应信号向所述至少另一启动装置提供指示,该指示表明所述至少一些先前接收到的事务请求已到达所述响应信号产生器的位置。
14.如权利要求13所述的互连电路,其中所述控制电路包括同步请求复制电路,用于复制所述同步请求,并将其传送到执行所述事务请求的所述至少一个子集的多个其他启动装置;
所述控制电路还包括保持电路,用于保持接收自所述多个其他启动装置的对所述复制同步请求的响应信号,并用于响应于对所有所述复制同步请求的确认响应的接收,向所述第一启动装置发出同步请求响应信号。
15.如权利要求13或14所述的互连电路,所述互连被配置来响应于从所述第一启动装置接收到阻隔事务请求而在先前从所述第一启动装置接收并路由至所述至少一个接收装置的事务请求之后将所述阻隔事务请求路由到所述至少一个接收装置,所述控制电路被配置来相对于所述阻隔事务请求维持所述先前接收到的事务请求中的至少一些事务请求的顺序,并且响应于对所述阻隔事务请求的响应信号,将所述响应信号路由至所述第一启动装置,所述响应信号向所述第一启动装置提供指示,所述指示表明所述先前接收到的事务请求中的所述至少一些事务请求已到达所述响应信号产生器的位置。
16.如权利要求13至15中任一项所述的互连电路,其中所述至少一个子集的事务请求是存储器管理操作请求,并且所述同步请求是存储器管理同步请求,其查询何时所述存储器管理操作请求已经完成及何时先前发出的事务请求已到达所述互连中的预定点,所述先前发出的事务请求的状态将会受到所述存储器管理操作请求的影响。
17.如权利要求16所述的互连电路,其中所述存储器管理操作包括虚拟至物理地址转译的管理,并且所述阻隔事务维持其排序的所述至少一些事务包括在执行所述存储器管理操作之前使用虚拟至物理地址转译的事务。
18.如权利要求13至17中任一项所述的互连电路,所述互连包括响应信号产生器,用于响应于所述阻隔事务请求的接收而产生所述响应信号。
19.如权利要求18所述的互连电路,所述互连电路包括至少一个领域,所述至少一个领域包括用于从所述至少一个启动装置接收事务请求的至少一个输入中的至少一者,领域边界被安排成接收自所述至少一个输入的事务请求的任何合并发生在所述至少一个领域内;及
所述同步请求包括指示元,该指示元指示出其应用于所述至少一个领域中的哪个领域;及
所述响应信号产生器位于所述至少一个领域的出口点;
所述响应信号产生器响应于检测到所述阻隔事务请求经过所述出口点而产生响应信号;
所述控制电路被配置来将所述响应信号传送至以下启动装置:从该启动装置接收到了所述阻隔事务请求。
20.如权利要求19所述的互连电路,其中所述控制电路被配置为:在进一步向所述启动装置传送了所述响应信号时,不发送所述阻隔事务。
21.如权利要求13至20中任一项所述的互连电路,其中所述多个路径中的至少一些路径是发散自一节点的发散路径,所述控制电路被配置来沿所述至少一些事务请求所路由的所述发散路径中至少一些发散路径来复制和传送所述至少一些事务请求及所述后续阻隔事务请求。
22.如权利要求21所述的互连电路,所述控制电路包括在所述节点处的保持电路,所述保持电路被配置为:保持接收自所述复制阻隔事务请求的响应信号,并且仅响应于接收到对所有所述复制阻隔事务请求的响应而将所述接收的响应信号传送至所述阻隔事务请求的来源。
23.一种数据处理装置,包括多个启动装置,所述多个启动装置通过互连电路与至少一个接收装置进行通信,所述启动装置中的至少一者是如权利要求3所述的启动装置,并且所述互连电路是如权利要求13至22中任一项所述的互连电路。
24.一种对数据处理装置进行同步的方法,所述数据处理装置包括多个启动装置,所述多个启动装置通过互连向至少一个接收装置发出事务请求,所述方法包括以下步骤:
发出同步请求,该同步请求查询至少一个事务请求子集的进度;及
将所述同步请求路由至所述多个启动装置中的至少另一者,该至少另一者被配置来执行所述至少一个事务请求子集;
从所述启动装置中的所述至少另一者发出阻隔事务请求;
将所述阻隔事务请求在先前接收自所述至少另一启动装置的事务请求之后沿着多个路径中的至少一者路由至所述至少一个接收装置,以维持所述先前接收到的事务请求中的至少一些事务请求和所述阻隔事务请求在事务请求流中的排序;及
响应于对所述阻隔事务请求的响应信号,将所述响应信号路由到所述多个启动装置中的所述至少另一者,所述响应信号向所述至少另一启动装置提供指示,该指示表明所述先前接收的事务请求已到达所述响应信号产生器的位置;
产生对所述同步请求作出响应的确认信号,并将所述确认信号朝着所述第一启动装置路由。
25.一种确定何时对接收到的同步请求作出响应的方法,包括以下步骤:
通过互连向接收装置发出事务请求;
接收同步请求,该同步请求查询来自所述互连的至少一个事务请求子集的进度;
执行所述至少一个事务请求子集内的任何未决事务请求;
产生阻隔事务请求并将所述阻隔事务请求发出至所述互连;
响应于接收到对所述阻隔事务请求的响应,发出确认信号作为针对所述同步请求的响应。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0917946A GB2474446A (en) | 2009-10-13 | 2009-10-13 | Barrier requests to maintain transaction order in an interconnect with multiple paths |
GB0917946.6 | 2009-10-13 | ||
GB1007342.7 | 2010-04-30 | ||
GB1007363.3 | 2010-04-30 | ||
GB201007342A GB2474532B8 (en) | 2009-10-13 | 2010-04-30 | Barrier transactions in interconnects |
GB1007363A GB2474533A (en) | 2009-10-13 | 2010-04-30 | Barrier requests to maintain transaction order in an interconnect with multiple paths |
GB1016482.0 | 2010-10-01 | ||
GB1016482A GB2474552A (en) | 2009-10-13 | 2010-10-01 | Interconnect that uses barrier requests to maintain the order of requests with respect to data store management requests |
PCT/GB2010/051715 WO2011045595A1 (en) | 2009-10-13 | 2010-10-12 | Synchronising activities of various components in a distributed system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102576341A true CN102576341A (zh) | 2012-07-11 |
CN102576341B CN102576341B (zh) | 2015-05-27 |
Family
ID=41402983
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800469669A Pending CN102713874A (zh) | 2009-10-13 | 2010-09-28 | 互连中的减低时延阻隔交易请求 |
CN201080046421.8A Active CN102792290B (zh) | 2009-10-13 | 2010-09-28 | 互连中的阻隔交易 |
CN201080046965.4A Active CN102576341B (zh) | 2009-10-13 | 2010-10-12 | 对分布式系统中的各种组件的活动进行同步 |
CN2010106093158A Pending CN102063391A (zh) | 2009-10-13 | 2010-10-13 | 互连中的数据存储维护请求 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800469669A Pending CN102713874A (zh) | 2009-10-13 | 2010-09-28 | 互连中的减低时延阻隔交易请求 |
CN201080046421.8A Active CN102792290B (zh) | 2009-10-13 | 2010-09-28 | 互连中的阻隔交易 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106093158A Pending CN102063391A (zh) | 2009-10-13 | 2010-10-13 | 互连中的数据存储维护请求 |
Country Status (11)
Country | Link |
---|---|
US (6) | US8732400B2 (zh) |
EP (3) | EP2488952B1 (zh) |
JP (6) | JP2013507708A (zh) |
KR (3) | KR101734045B1 (zh) |
CN (4) | CN102713874A (zh) |
GB (4) | GB2474446A (zh) |
IL (3) | IL218703A0 (zh) |
IN (3) | IN2012DN02792A (zh) |
MY (2) | MY155614A (zh) |
TW (3) | TW201120638A (zh) |
WO (3) | WO2011045556A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917815A (zh) * | 2019-05-08 | 2020-11-10 | 慧与发展有限责任合伙企业 | 支持有序和无序事务类的设备 |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2474446A (en) * | 2009-10-13 | 2011-04-20 | Advanced Risc Mach Ltd | Barrier requests to maintain transaction order in an interconnect with multiple paths |
KR101699781B1 (ko) * | 2010-10-19 | 2017-01-26 | 삼성전자주식회사 | 시스템 온 칩 및 그것의 데이터 중재 방법 |
US8589638B2 (en) * | 2011-07-19 | 2013-11-19 | Arm Limited | Terminating barriers in streams of access requests to a data store while maintaining data consistency |
GB2493405B (en) * | 2011-08-03 | 2017-04-05 | Advanced Risc Mach Ltd | Debug barrier transactions |
US8463960B2 (en) * | 2011-08-08 | 2013-06-11 | Arm Limited | Synchronisation of data processing systems |
US9473424B2 (en) * | 2011-09-19 | 2016-10-18 | Fujitsu Limited | Address table flushing in distributed switching systems |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US20140032854A1 (en) * | 2012-07-30 | 2014-01-30 | Futurewei Technologies, Inc. | Coherence Management Using a Coherent Domain Table |
US9489307B2 (en) * | 2012-10-24 | 2016-11-08 | Texas Instruments Incorporated | Multi domain bridge with auto snoop response |
EP3022655A2 (en) * | 2013-07-18 | 2016-05-25 | Synaptic Laboratories Limited | Computing architecture with peripherals |
GB2522057B (en) * | 2014-01-13 | 2021-02-24 | Advanced Risc Mach Ltd | A data processing system and method for handling multiple transactions |
US20150317158A1 (en) | 2014-04-03 | 2015-11-05 | Applied Micro Circuits Corporation | Implementation of load acquire/store release instructions using load/store operation with dmb operation |
GB2533972B (en) * | 2015-01-12 | 2021-08-18 | Advanced Risc Mach Ltd | An interconnect and method of operation of an interconnect |
US20160246721A1 (en) * | 2015-02-19 | 2016-08-25 | Qualcomm Incorporated | Role based cache coherence bus traffic control |
US10078589B2 (en) * | 2015-04-30 | 2018-09-18 | Arm Limited | Enforcing data protection in an interconnect |
US9946492B2 (en) | 2015-10-30 | 2018-04-17 | Arm Limited | Controlling persistent writes to non-volatile memory based on persist buffer data and a persist barrier within a sequence of program instructions |
US10067713B2 (en) * | 2015-11-05 | 2018-09-04 | International Business Machines Corporation | Efficient enforcement of barriers with respect to memory move sequences |
US10241945B2 (en) | 2015-11-05 | 2019-03-26 | International Business Machines Corporation | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions |
US10140052B2 (en) * | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US10346164B2 (en) | 2015-11-05 | 2019-07-09 | International Business Machines Corporation | Memory move instruction sequence targeting an accelerator switchboard |
US10126952B2 (en) * | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
US10042580B2 (en) | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
US9996298B2 (en) | 2015-11-05 | 2018-06-12 | International Business Machines Corporation | Memory move instruction sequence enabling software control |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
GB2548387B (en) * | 2016-03-17 | 2020-04-01 | Advanced Risc Mach Ltd | An apparatus and method for filtering transactions |
US10956205B2 (en) * | 2017-01-03 | 2021-03-23 | Arm Limited | Data processing |
JP6944107B2 (ja) * | 2017-07-11 | 2021-10-06 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
KR102262209B1 (ko) * | 2018-02-09 | 2021-06-09 | 한양대학교 산학협력단 | 더미 입출력 요청을 이용한 배리어 명령 전달 방법 및 그 장치 |
JP7207133B2 (ja) * | 2019-04-23 | 2023-01-18 | 富士通株式会社 | 情報処理装置、同期装置及び情報処理装置の制御方法 |
US11055130B2 (en) | 2019-09-15 | 2021-07-06 | Mellanox Technologies, Ltd. | Task completion system |
US11822973B2 (en) | 2019-09-16 | 2023-11-21 | Mellanox Technologies, Ltd. | Operation fencing system |
US11372585B2 (en) | 2020-05-05 | 2022-06-28 | Micron Technology, Inc. | Asynchronous process topology in a memory device |
CN114155709B (zh) * | 2021-11-23 | 2022-09-23 | 北京安融畅信息技术有限公司 | 一种急弯路段识别方法以及安全隐患排查方法 |
US11876713B1 (en) * | 2023-03-13 | 2024-01-16 | Intuit Inc. | Client side backoff filter for rate limiting |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110340A1 (en) * | 2001-12-10 | 2003-06-12 | Jim Butler | Tracking deferred data transfers on a system-interconnect bus |
CN101194240A (zh) * | 2005-03-23 | 2008-06-04 | 高通股份有限公司 | 在弱有序处理系统中执行强有序请求以最小化存储器屏障 |
US20080301342A1 (en) * | 2007-06-01 | 2008-12-04 | Richard Gerard Hofmann | Device Directed Memory Barriers |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55147744A (en) * | 1979-05-07 | 1980-11-17 | Hitachi Ltd | Memory controlling unit |
US4833468A (en) * | 1987-10-14 | 1989-05-23 | Unisys Corporation | Layered network |
US5224214A (en) * | 1990-04-12 | 1993-06-29 | Digital Equipment Corp. | BuIffet for gathering write requests and resolving read conflicts by matching read and write requests |
US5274782A (en) * | 1990-08-27 | 1993-12-28 | International Business Machines Corporation | Method and apparatus for dynamic detection and routing of non-uniform traffic in parallel buffered multistage interconnection networks |
US5459842A (en) * | 1992-06-26 | 1995-10-17 | International Business Machines Corporation | System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory |
US5608870A (en) * | 1992-11-06 | 1997-03-04 | The President And Fellows Of Harvard College | System for combining a plurality of requests referencing a common target address into a single combined request having a single reference to the target address |
US6233702B1 (en) * | 1992-12-17 | 2001-05-15 | Compaq Computer Corporation | Self-checked, lock step processor pairs |
US5893165A (en) * | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO |
JP3636871B2 (ja) * | 1997-09-16 | 2005-04-06 | 株式会社日立製作所 | 並列プロセッサシステム |
US6038646A (en) * | 1998-01-23 | 2000-03-14 | Sun Microsystems, Inc. | Method and apparatus for enforcing ordered execution of reads and writes across a memory interface |
JP3858492B2 (ja) * | 1998-12-28 | 2006-12-13 | 株式会社日立製作所 | マルチプロセッサシステム |
JP3889195B2 (ja) * | 1999-02-03 | 2007-03-07 | 株式会社東芝 | 画像処理装置、画像処理システムおよび画像処理方法 |
US6430646B1 (en) * | 1999-08-18 | 2002-08-06 | Ati International Srl | Method and apparatus for interfacing a processor with a bus |
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
US6647453B1 (en) * | 2000-08-31 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system |
US6795878B2 (en) * | 2000-12-11 | 2004-09-21 | International Business Machines Corporation | Verifying cumulative ordering of memory instructions |
US6967926B1 (en) * | 2000-12-31 | 2005-11-22 | Cisco Technology, Inc. | Method and apparatus for using barrier phases to limit packet disorder in a packet switching system |
US7031338B2 (en) * | 2001-08-27 | 2006-04-18 | Hewlett-Packard Development Company, L.P. | System and method for the consolidation of data packets |
JP2006518053A (ja) * | 2002-12-24 | 2006-08-03 | サン・マイクロシステムズ・インコーポレイテッド | ハードウェア・スカウト・スレッディングを通してコードを推測で実行することによるプリフェッチの生成 |
TW200502805A (en) * | 2003-05-09 | 2005-01-16 | Incentia Design Systems Corp | Timing based scan chain implementation in an IC design |
US7552317B2 (en) * | 2004-05-04 | 2009-06-23 | Sun Microsystems, Inc. | Methods and systems for grouping instructions using memory barrier instructions |
US20050289306A1 (en) * | 2004-06-28 | 2005-12-29 | Sridhar Muthrasanallur | Memory read requests passing memory writes |
JP4463097B2 (ja) * | 2004-12-24 | 2010-05-12 | エヌイーシーコンピュータテクノ株式会社 | データ転送システム、データ転送方法およびクロスバlsi |
US7631130B2 (en) * | 2005-02-04 | 2009-12-08 | Mips Technologies, Inc | Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor |
US9026744B2 (en) * | 2005-03-23 | 2015-05-05 | Qualcomm Incorporated | Enforcing strongly-ordered requests in a weakly-ordered processing |
EP1750202A1 (en) * | 2005-07-11 | 2007-02-07 | Nvidia Corporation | Combining packets for a packetized bus |
US7500039B2 (en) * | 2005-08-19 | 2009-03-03 | International Business Machines Corporation | Method for communicating with a processor event facility |
US7917676B2 (en) * | 2006-03-10 | 2011-03-29 | Qualcomm, Incorporated | Efficient execution of memory barrier bus commands with order constrained memory accesses |
US7610458B2 (en) * | 2006-04-25 | 2009-10-27 | International Business Machines Corporation | Data processing system, processor and method of data processing that support memory access according to diverse memory models |
US7657680B2 (en) * | 2006-06-21 | 2010-02-02 | Finisar Corporation | Multiple bus interface control using a single controller |
US7908406B2 (en) * | 2006-06-21 | 2011-03-15 | Finisar Corporation | Interface architecture for facilitating communication regardless of protocol |
US7783817B2 (en) * | 2006-08-31 | 2010-08-24 | Qualcomm Incorporated | Method and apparatus for conditional broadcast of barrier operations |
US7603490B2 (en) * | 2007-01-10 | 2009-10-13 | International Business Machines Corporation | Barrier and interrupt mechanism for high latency and out of order DMA device |
US7581201B2 (en) * | 2007-02-28 | 2009-08-25 | International Business Machines Corporation | System and method for sign-off timing closure of a VLSI chip |
US8006047B2 (en) * | 2007-06-27 | 2011-08-23 | Hitachi Global Storage Technologies Netherlands B.V. | Storage device with write barrier sensitive write commands and write barrier insensitive commands |
US8468287B2 (en) | 2007-08-22 | 2013-06-18 | Nec Corporation | Information processor and information processing method |
US8612950B2 (en) * | 2008-06-19 | 2013-12-17 | Intel Corporation | Dynamic optimization for removal of strong atomicity barriers |
US8352682B2 (en) * | 2009-05-26 | 2013-01-08 | Qualcomm Incorporated | Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system |
GB2474446A (en) * | 2009-10-13 | 2011-04-20 | Advanced Risc Mach Ltd | Barrier requests to maintain transaction order in an interconnect with multiple paths |
US8589638B2 (en) * | 2011-07-19 | 2013-11-19 | Arm Limited | Terminating barriers in streams of access requests to a data store while maintaining data consistency |
-
2009
- 2009-10-13 GB GB0917946A patent/GB2474446A/en not_active Withdrawn
-
2010
- 2010-04-30 GB GB201007342A patent/GB2474532B8/en active Active
- 2010-04-30 GB GB1007363A patent/GB2474533A/en not_active Withdrawn
- 2010-09-28 IN IN2792DEN2012 patent/IN2012DN02792A/en unknown
- 2010-09-28 JP JP2012533684A patent/JP2013507708A/ja active Pending
- 2010-09-28 EP EP10782345.2A patent/EP2488952B1/en active Active
- 2010-09-28 KR KR1020127009810A patent/KR101734045B1/ko active IP Right Grant
- 2010-09-28 JP JP2012533685A patent/JP5650749B2/ja active Active
- 2010-09-28 WO PCT/GB2010/001822 patent/WO2011045556A2/en active Application Filing
- 2010-09-28 MY MYPI2012001273A patent/MY155614A/en unknown
- 2010-09-28 CN CN2010800469669A patent/CN102713874A/zh active Pending
- 2010-09-28 WO PCT/GB2010/001819 patent/WO2011045555A1/en active Application Filing
- 2010-09-28 CN CN201080046421.8A patent/CN102792290B/zh active Active
- 2010-09-28 IN IN2853DEN2012 patent/IN2012DN02853A/en unknown
- 2010-09-28 EP EP10763398.4A patent/EP2488951B1/en not_active Not-in-force
- 2010-09-28 KR KR1020127010025A patent/KR20120095876A/ko not_active Application Discontinuation
- 2010-10-01 TW TW099133594A patent/TW201120638A/zh unknown
- 2010-10-01 TW TW99133596A patent/TWI474193B/zh active
- 2010-10-01 GB GB1016482A patent/GB2474552A/en not_active Withdrawn
- 2010-10-05 US US12/923,725 patent/US8732400B2/en active Active
- 2010-10-05 US US12/923,723 patent/US8856408B2/en active Active
- 2010-10-05 US US12/923,727 patent/US8607006B2/en active Active
- 2010-10-12 IN IN3050DEN2012 patent/IN2012DN03050A/en unknown
- 2010-10-12 MY MYPI2012001398A patent/MY154614A/en unknown
- 2010-10-12 JP JP2012533691A patent/JP2013507710A/ja active Pending
- 2010-10-12 KR KR1020127011968A patent/KR101734044B1/ko active IP Right Grant
- 2010-10-12 WO PCT/GB2010/051715 patent/WO2011045595A1/en active Application Filing
- 2010-10-12 CN CN201080046965.4A patent/CN102576341B/zh active Active
- 2010-10-12 EP EP10775868.2A patent/EP2488954B1/en active Active
- 2010-10-12 JP JP2010229679A patent/JP2011138481A/ja active Pending
- 2010-10-13 TW TW099134937A patent/TWI533133B/zh active
- 2010-10-13 CN CN2010106093158A patent/CN102063391A/zh active Pending
- 2010-10-13 US US12/923,907 patent/US8601167B2/en not_active Expired - Fee Related
- 2010-10-13 US US12/923,906 patent/US8463966B2/en active Active
-
2012
- 2012-03-18 IL IL218703A patent/IL218703A0/en unknown
- 2012-03-18 IL IL218704A patent/IL218704A/en active IP Right Grant
- 2012-03-27 IL IL218887A patent/IL218887A/en active IP Right Grant
-
2013
- 2013-08-06 US US13/960,128 patent/US9477623B2/en active Active
-
2014
- 2014-09-12 JP JP2014186541A patent/JP5865976B2/ja not_active Expired - Fee Related
-
2015
- 2015-05-12 JP JP2015097254A patent/JP6141905B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110340A1 (en) * | 2001-12-10 | 2003-06-12 | Jim Butler | Tracking deferred data transfers on a system-interconnect bus |
CN101194240A (zh) * | 2005-03-23 | 2008-06-04 | 高通股份有限公司 | 在弱有序处理系统中执行强有序请求以最小化存储器屏障 |
US20080301342A1 (en) * | 2007-06-01 | 2008-12-04 | Richard Gerard Hofmann | Device Directed Memory Barriers |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917815A (zh) * | 2019-05-08 | 2020-11-10 | 慧与发展有限责任合伙企业 | 支持有序和无序事务类的设备 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102576341A (zh) | 对分布式系统中的各种组件的活动进行同步 | |
KR102469404B1 (ko) | 데이터 처리 시스템 | |
CN108027804A (zh) | 片上原子事务引擎 | |
CN102541465B (zh) | 利用回写排序的连贯性控制电路及设备 | |
JP2005539282A (ja) | 単一のコヒーレントなシステム内の分散コンピュータ・ノードにキャッシュ・コヒーレンスを提供するのにグローバル・スヌープを使用する方法および装置 | |
CN104115128A (zh) | 具有高速缓存相干性的集成电路 | |
US6904465B2 (en) | Low latency inter-reference ordering in a multiple processor system employing a multiple-level inter-node switch | |
WO1999035581A1 (en) | Cache coherence unit with integrated message passing and memory protection for a distributed, shared memory multiprocessor system | |
CN105786744A (zh) | 互连和互连的操作方法 | |
Davis Jr | Optical waveguides in general purpose parallel computers | |
JP2005527897A (ja) | ペトリグラフの物理的使用をベースとした再構成可能な制御システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180530 Address after: cambridge Co-patentee after: Anne science and Technology (China) Co., Ltd. Patentee after: Advanced Risc Machines Ltd. Address before: cambridge Patentee before: Advanced Risc Machines Ltd. |