CN109891834A - 支持多个一致性机制、多个协议和多个交换机制的互连 - Google Patents
支持多个一致性机制、多个协议和多个交换机制的互连 Download PDFInfo
- Publication number
- CN109891834A CN109891834A CN201780065525.5A CN201780065525A CN109891834A CN 109891834 A CN109891834 A CN 109891834A CN 201780065525 A CN201780065525 A CN 201780065525A CN 109891834 A CN109891834 A CN 109891834A
- Authority
- CN
- China
- Prior art keywords
- order
- equipment
- network interface
- agreement
- bus interconnection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供一种网络接口,包括:第一缓冲器,其被配置为对从第一设备到第二设备的第一类型命令的第一流进行缓冲,其中,第一设备根据第一总线互连协议进行配置,并且第二设备根据第二总线互连协议进行配置;第二缓冲器,其被配置为对从第一设备到第二设备的第二类型命令的第二流进行缓冲;以及仲裁器,其被配置为在第一流与第二流之间进行仲裁,并且选择性地输出一个或多个第一类型命令和一个或多个第二类型命令。
Description
优先权要求
本申请要求享有于2016年12月8日提交的题为“INTERCONNECT NETWORKSUPPORTING MULTIPLE MECHAN MECHANMSMS,MULTIPLE PROTOCOLS AND MULTIPLESWITCHING MECHANISMS”的序列号为15/373,033的美国专利申请的优先权,所述专利申请通过引用方式全部并入本文。
背景技术
计算系统通常具有由不同制造商设计和制造的多个组件。这些组件可以遵循不同的互连协议以进行通信。例如,这些组件中的一些组件可以使用一个或多个行业标准总线协议和一致性机制,而其他组件可以使用由特定供应商开发的私有总线协议。互连所有这些组件的互连网络必须支持各种类型的总线协议和一致性机制。
附图说明
根据以下给出的详细描述和本公开内容的各种实施例的附图,将更全面地理解本公开内容的实施例,然而,所述附图不应当将本公开内容限于特定实施例,而是仅用于解释和理解。
图1示出了包括使用基于适当的请求/响应(RR)的互连协议进行通信的两个设备的系统。
图2示出了包括使用基于适当的发布(P)/非发布(NP)/完成(C)的互连协议(例如,PNC互连协议)进行通信的两个设备的系统。
图3示出了根据一些实施例的包括通过共享连接经由PNC协议进行通信的两个PNC设备的系统。
图4示出了根据一些实施例的包括通过共享连接进行通信的RR设备和PNC设备的系统。
图5示出了根据一些实施例的包括通过共享连接进行通信的两个RR设备的系统。
图6示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备进行连接的互连网络。
图7示出了根据一些实施例的从充当数据生产者的处理器组件到网络的存储器组件的写入数据传输。
图8示出了根据一些实施例的数据生产者与数据消费者之间的通信。
图9示出了根据一些实施例的数据消费者与存储器之间的通信。
图10示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备进行连接的另一互连网络,其中,中断发生器在网络接口内。
图11示出了根据一些实施例的网络接口与数据消费者之间的通信。
图12示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备进行连接的另一互连网络,其中,非报告命令在一系列发布的写入命令之后被执行。
图13示出了根据某个实施例的包括经由PNC协议进行通信的两个PNC设备的系统,其中,公共缓冲器存储多个命令流。
图14示出了根据某个实施例的包括经由PNC协议进行通信的两个PNC设备的另一系统,其中,公共缓冲器存储多个命令流。
图15示出了根据一些实施例的用于控制缓冲器的缓冲器输出的系统。
图16示出了根据一些实施例的用于控制缓冲器的缓冲器输出的另一系统。
图17示出了根据一些实施例的用于控制缓冲器的缓冲器输出的另一系统。
图18示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备连接的另一互连网络。
图19示出了根据一些实施例的智能设备、计算设备或计算机系统或SoC(片上系统),其中,计算设备2100的各种组件通过网络2190互连。
具体实施方式
在一些实施例中,网络包括多个路由器和网络接口,其中,网络被配置为将根据两个或更多个总线互连协议操作的多个设备互连。在示例中,每个设备经由对应的网络接口连接到对应的路由器。网络根据例如使用报告命令(posted command)、非报告命令(non-posted command)和完成命令进行通信的总线互连协议来操作。例如,网络根据外围组件快速互连(PCIe)协议操作(例如,如2003年发布的PCI Express 1.0a标准或其后的任何修订中所说明的)。
在一些实施例中,设备中的一些设备可以根据使用请求和响应进行通信的总线互连协议来操作。在一些实施例中,网络接口包括转换器,其用于在对应设备的协议和由网络使用的协议之间进行转换。
在一些实施例中,网络的网络接口包括用于不同类型的流的不同缓冲器,例如用于报告命令流的第一缓冲器、用于非报告命令流的第二缓冲器、以及用于完成命令流的第三缓冲器。在一些实施例中,可以选择缓冲器的操作模式以在延时与吞吐量之间进行优化,例如基于网络的一个或多个因素。在一些实施例中,网络的路由器以树状结构布置,例如以确保路由器经由唯一且单个连接路径连接到另一路由器。
存在各种实施例的许多技术效果。例如,网络支持具有不同总线互连协议的各种设备。在示例中,网络的唯一结构(例如,网络接口中的缓冲器的唯一结构、路由器的树状结构等)确保网络的互连协议的各种一致性要求被满足。例如,对于不同类型的流具有不同的缓冲器确保特定类型命令可以超过(overtake)另一特定类型命令,从而促进满足网络的互连协议的要求中的一些要求。在一些特殊情况下,可以减少网络接口中的缓冲器数量,而不违反这些要求,并且仍然可以实现网络接口的较小的占用空间。
在下面的描述中,讨论了许多细节以提供对本公开内容的实施例的更彻底的解释。然而,对于本领域技术人员将显而易见的是,可以在没有这些具体细节的情况下实践本公开内容的实施例。在其他实例中,公知的结构和设备以框图形式而不是详细地示出,以避免模糊本公开内容的实施例。
注意,在实施例的对应附图中,信号用线表示。一些线可以更粗以指示更多组成信号路径(constituent signal path),和/或在一端或多端处具有箭头以指示主要信息流方向。这样的指示不旨在进行限制。而是,线与一个或多个示例性实施例结合使用,以促进更容易地理解电路或逻辑单元。如设计需要或偏好所指示的,任何表示的信号实际上可以包括可以在任一方向上行进并且可以用任何合适类型的信号方案来实现的一个或多个信号。
贯穿说明书并且在权利要求书中,术语“连接”意指直接连接,例如在没有任何中间设备的情况下连接的事物之间的电连接、机械连接或磁连接。术语“耦合”意指直接连接或间接连接,例如被连接的事物之间的直接电气、机械或磁性连接、或者通过一个或多个无源或有源中间设备的间接连接。术语“电路”或“模块”可以指代被布置为与彼此协作以提供期望的功能的一个或多个无源和/或有源组件。术语“信号”可以指代至少一个电流信号、电压信号、磁信号或数据/时钟信号。“一”、“一个”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。术语“基本上”、“接近”、“大约”、“近似”和“约”通常指代在目标值的+/-10%内。
除非另有说明,否则使用序数形容词“第一”、“第二”和“第三”等来描述共同的对象仅指示同样对象的不同实例正被引用,而并不旨在暗示如此描述的对象必须在时间上、空间上、排序中或以任何其他方式在给定的序列中。
出于本公开内容的目的,短语“A和/或B”和“A或B”意指(A)、(B)或(A和B)。出于本公开内容的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、或(A、B和C)。说明书和权利要求中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“上方”、“下方”等(如果有的话)用于描述目的而不一定用于描述永久相对位置。
图1示出了包括使用基于适当的请求/响应(RR)的互连协议进行通信的两个设备104和108的系统100。当设备104和108使用基于RR的互连协议进行通信时,设备104和108中的每个设备在本文中还被称为“基于RR的互连协议兼容设备”和/或“RR设备”。
各种互连协议采用请求和响应来通信。例如,先进外围总线(APB)协议(例如,由ARM Limited在1999年发布的先进微控制器总线架构(AMBA)规范2.0或其后的任何修订中说明)采用请求和响应来在两个设备之间通信。在另一示例中,AMBA高性能总线(AHB)协议(例如,如AMBA规范2.0或其后的任何修订中说明的)也采用请求和响应来在两个设备之间通信。在另一示例中,先进可扩展接口(AXI)协议(例如,如AMBA规范2.0或其后的任何修订中说明的)也采用请求和响应来在两个设备之间通信。在另一示例中,开放核心协议(OCP)协议(例如,如OCP国际伙伴关系(OCP-IP)规范中说明的)也采用请求和响应来在两个设备之间通信。在又一示例中,各种类型的存储器产品(例如,静态随机存取存储器(SRAM))也可以采用请求和响应来在两个设备之间通信。出于本公开内容的目的,基于RR的互连协议兼容设备(或简称为RR设备,例如图1的设备104和108)将暗示符合基于请求和响应命令的适当互连协议的设备,并且基于RR的互连协议(或RR互连协议)将暗示基于请求和响应命令的适当互连协议。尽管在上文中讨论了这样的协议的一些示例,但是示例并非穷举的,并且基于RR的互连协议还可以包括以上未说明的互连协议。
参考图1,设备104和108中的每个设备可以以主配置(master configuration)和/或从配置(slave configuration)起作用。例如,当设备104被配置为主设备并且设备108被配置为从设备时,设备104充当发起者104a并且设备108充当目标108a。发起者104a将请求112a发送到目标108a,响应于此,目标108a将响应112b发送到发起者104a。
在一些实施例中,请求112a和响应112b可以是任何适当类型的。作为示例,请求112a可以是读取请求,而响应112b可以包括对应的读取数据。在另一示例中,请求112a可以是写入命令,并且响应112b可以包括写入确认。在另一示例中,请求112a可以是任何适当的命令,并且响应112b可以是确认、经由请求112a所请求的数据等等。
在一些实施例中,发布请求(例如,发布请求112a)是不触发任何响应的请求。例如,发布的写入请求是不需要确认(例如,不需要响应)的写入请求。对于以上讨论的RR协议中的一个或多个RR协议,在一些实施例中,请求和/或响应(例如,请求112a和响应112b)可以是命令,例如包括地址、数据和/或流控制信号(尽管在一些示例中,请求和/或响应可能不一定包括地址、数据或流控制信号中的全部)。
类似地,在示例中,当设备104被配置为从设备并且设备108被配置为主设备时,设备104充当目标104b并且设备108充当发起者108b。发起者108b将请求116a发送到目标104b,响应于此,目标104b将响应116b发送到发起者108b。
在一些实施例中,设备104和108二者都可以同时充当主设备和从设备。仅作为示例,设备104可以是直接存储器访问(DMA)控制器,其具有用于配置的从端口和用于存储器访问的主端口,而设备108可以是具有本地存储器和/或高速缓存的处理核心。在这样的示例中,设备108可以充当主端口,并且设备108的从端口可以提供对本地存储器和/或高速缓冲存储器的访问。
图2示出了包括使用适当的基于发布(P)/非发布(NP)/完成(C)的互连协议(例如,基于PNC的互连协议)进行通信的两个设备204和208的系统200。当设备204和208使用基于PNC的互连协议进行通信时,设备204和208中的每个设备在本文中还被称为“基于PNC的互连协议兼容设备”和/或“PNC设备”。
各种互连协议采用发布/非发布和完成信号进行通信。例如,外围组件互连(PCI)、外围组件快速互连(PCIe)协议(例如,如在2003年发布的PCI Express 1.0a标准或其后的任何修订中说明的)等采用报告命令、非报告命令和完成命令进行通信。许多不同的协议可以从例如PCI协议或PCIe协议派生。例如,由开发的片上系统结构(IOSF)标准由PCIe派生,所述IOSF标准也采用报告命令、非报告命令和完成命令进行通信。因此,设备204和208符合以下标准中的任何标准:PCI标准、PCIe标准、由其派生的任何协议(例如,IOSF标准)、或采用报告命令、非报告命令和/或完成命令进行通信的另一适当互连标准。出于本公开内容的目的,基于PNC的互连协议兼容设备(或简称为PNC设备,例如图2的设备204和208)将暗示符合基于报告命令(P)、非报告命令(NP)和/或完成命令(C)的适当的互连协议的设备,并且基于PNC的互连协议(还被称为“PNC协议”)将暗示基于以上讨论的PNC命令的适当互连协议。尽管以上讨论了这样的协议的一些示例,但是示例并非穷举的,并且基于PNC的互连协议还可以包括上文未说明的互连协议。
再次参考图2,设备204和208中的每个设备可以以主配置或从配置起作用。例如,当设备204被配置为主设备并且设备208被配置为从设备时,设备204充当发起者204a并且设备208充当目标208a。发起者204a可以将报告命令212a(以下还被称为“发布212a”)和/或非报告命令212b(以下还被称为“非发布212b”)发送到目标208a,并且从目标208a接收完成命令212c(以下还被称为“完成212c”)。
在一些实施例中,报告命令(例如,发布212a)通常表示不需要确认或响应的命令。另一方面,非报告命令(例如,非发布212b)通常表示需要确认或响应的命令。完成命令(例如,完成212c)表示对非报告命令的响应或确认。
作为示例,非报告命令(例如,非发布212b)可以是读取命令,并且对应的完成命令(例如,完成212c)可以包括对应的读取数据。在另一示例中,非报告命令可以是需要写入确认的写入命令,并且对应的完成命令可以是响应于写入命令而发出的写入确认。在示例中,报告命令(例如,发布212a)可以是不需要确认的写入命令。
在示例中,当设备204被配置为从设备并且设备208被配置为主设备时,设备204充当目标204b并且设备208充当发起者208b。发起者208b可以将报告命令216a(以下还被称为“发布216a”)和/或非报告命令216b(以下还被称为“非发布212b”)发送到目标204b,并且从目标204b接收完成命令216c(以下还被称为“完成216c”)。
在一些实施例中,PNC互连协议通常具有与各种同时或接近同时的命令被仲裁和传送的次序相关联的规则。在示例中,PNC互连协议具有三个主要命令流:发布流(例如,与报告命令流相关联的P流)、非发布流(例如,与非报告命令流相关联的NP流)和完成(例如,与完成命令流相关联的C流)。特定类型的命令流指代特定类型的命令的流或序列的传输。例如,P流指代报告命令的流的或序列的传输。
图3示出了根据一些实施例的系统300,其包括通过共享连接经由PNC协议进行通信的图2的PNC设备204和208。如关于图2所讨论的,是PNC设备的设备204和208使用报告命令、非报告命令和完成命令来与彼此通信。因此,设备204和208与P流、NP流和C流相关联。
在一些实施例中,设备204和208经由网络接口(NI)330a和NI 330b与彼此通信。例如,NI 330a耦合到设备204,NI 330b耦合到设备208,并且NI 330a和330b经由路由器350和信号线352和354耦合。尽管在图3中示出了单个路由器350和两条信号线352、354作为示例,但是路由器350和两条信号线352、354可以表示包括以下组件的网络:多个路由器、交换机、总线、多层总线、交叉开关、用于命令和数据信息的时间复用线路(或者,例如用于命令和数据信息的单独的线路)、任何其他适当的网络组件等。
在一些实施例中,NI 330a包括仲裁器334a和仲裁器336a,并且NI 330b包括仲裁器334b和仲裁器336b。NI 330a还包括缓冲器338a、340a、342a、344a、346a和348a。NI 330b还包括缓冲器338b、340b、342b、344b、346b和348b。NI 330a和330b中的缓冲器例如是先进先出(FIFO)缓冲器。
如关于图2所讨论的,设备204可以充当发起者204a和目标204b,而设备208也可以充当目标208a和发起者208b。发起者204a为目标208a生成P流312a1和NP流312b1,并且从目标208a接收C流312c1。在示例中,P流312a1由缓冲器338a接收,并且由缓冲器338a发送到仲裁器334a。类似地,NP流312b1由缓冲器340a接收,并且由缓冲器340a发送到仲裁器334a。此外,仲裁器336a选择性地将C流312c1输出到缓冲器344a,所述C流312c1由发起者204a接收。
发起者208b为目标204b生成P流316a1和NP流316b1,并且从目标204b接收C流316c1。在示例中,P流316a1由缓冲器346b接收,并且由缓冲器346b发送到仲裁器336b。类似地,NP流316b1由缓冲器348b接收,并且由缓冲器348b发送到仲裁器336b。此外,仲裁器334b选择性地将C流316c1输出到缓冲器342b,所述C流316c1由发起者208b接收。
目标204b分别经由缓冲器346a和348b以及仲裁器336a接收P流316a2和NP流316b2。目标204b还经由缓冲器342a将C流316c2发送到仲裁器334a。
目标208a分别经由缓冲器338b和340b以及仲裁器334b接收P流312a2和NP流312b2。目标208a还经由缓冲器344b将C流312c2发送到仲裁器336b。
在一些实施例中,仲裁器334a的输出端经由信号线352耦合到仲裁器334b的输入端。在一些实施例中,仲裁器336b的输出端经由信号线354耦合到仲裁器336a的输入端。
在一些实施例中,仲裁器334a在P流312a1、NP流312b 1和C流316c1之间进行仲裁。例如,仲裁器334a选择性地将P命令、NP命令或C命令从其输入端输出到信号线352,以使得P流312a1、NP流312b1和C流316c1中的命令是以时间复用的方式发送到仲裁器334b。此外,仲裁器334b通过信号线352接收时间复用的P命令、NP命令和C命令,并且分别选择性地将这些命令输出为P流312a2、NP流312b2和C流316c1。因此,发起者204a经由P流312a1、经由信号线352并经由P流312a2将P命令发送到目标208a。类似地,发起者204a经由NP流312b1、经由信号线352并经由NP流312b2将NP命令发送到目标208a。
在一些实施例中,仲裁器336b在P流316a 1、NP流316b 1和C流312c2之间进行仲裁。例如,仲裁器336b选择性地将P命令、NP命令或C命令从其输入端输出到信号线354,以使得P流316a1、NP流316b1和C流312c2中的命令以时间复用的方式发送到仲裁器336a。此外,仲裁器336a通过信号线354接收时间复用的P命令、NP命令和C命令,并且分别选择性地将这些命令输出为P流316a2、NP流316b2和C流312c1。因此,发起者208b经由P流316a1、经由信号线354并经由P流316a2将P命令发送到目标204b。类似地,发起者208b经由NP流316b1、经由信号线354并经由NP流316b2将NP命令发送到目标204b。
应注意,与图3中的P和P流不同,C流是交叉通道的。例如,发起者204a经由缓冲器344b、仲裁器336b、仲裁器336a和缓冲器344a从目标208a接收C命令。类似地,发起者208b经由缓冲器342a、仲裁器334a、仲裁器334b和缓冲器342b从目标204b接收C命令。
图4示出了根据一些实施例的包括通过共享连接进行通信的图1的RR设备104和图2的PNC设备208的系统400。由于设备104是RR设备,所以设备104可以使用RR协议进行通信,而不经由PNC协议进行通信。另一方面,设备208经由PNC协议进行通信,而不经由RR协议进行通信。
在一些实施例中,系统400包括NI 430a和NI 430b。例如,NI 430a包括转换器402a,其被配置为从设备104的发起者104a接收请求(例如,接收请求流450a),并且将响应发送到发起者104a(例如,发送响应流450b)。此外,转换器402b类似地被配置为从设备104的目标104b接收请求(例如,接收请求流452a),并且将响应发送到目标104b(例如,发送响应流452b)。在一些实施例中,转换器402a和402b被组合或集成在单个转换器中。
在一些实施例中,请求流450a中的个别请求由转换器402a转换为P流412a1的P命令或NP流412b1的NP命令。例如,转换器402a解析并分析请求流450a中的每个请求,并且例如至少部分地基于请求的内容来将每个请求转换为P命令或NP命令。
例如,请求流450a中的读取请求(例如,其用于读取数据)被转换为NP命令(例如,因为读取请求通常需要包括所请求的数据的响应,所述响应与完成命令同义)。在另一示例中,请求流450a中的需要确认的写入请求也被转换为NP命令(例如,因为这样的写入请求通常需要确认,所述确认也与完成命令同义)。在另一示例中,请求流450a中的不需要确认的写入请求被转换为P命令(例如,因为这样的写入请求不需要确认或完成命令)。
在一些实施例中,转换器402a接收C流412c1,其被转换为响应流450b。例如,转换器402a将C流412c1中的C命令转换为响应流450b中的对应响应。
转换器402b也以类似的方式起作用。例如,转换器402b从仲裁器436a接收P流416a2和NP流416b2,转换器402b将其转换成响应流452b。类似地,转换器402b接收请求流452a,转换器402b将其转换成C流416c2。
图4中的转换器402a和402b的左侧的部分类似于图3的对应部分。例如,转换器402a和402b左侧的部分包括仲裁器434a、434b、436a、436b、缓冲器438a、……、448a、438b、……、448b、路由器450、信号线452和454等,它们类似于图3的对应组件,因此本文将不再更详细地讨论这些组件。
设备104与转换器402a、402b之间的通信基于RR协议,而转换器402a、402b与设备208之间的通信基于PNC协议。因此,转换器402a和402b充当这两个协议之间的桥。
在一些实施例中,因为NI 430a耦合到RR设备104,所以NI 430a被称为RR NI。类似地,因为NI 430b耦合到PNC设备208,所以NI 430b被称为PNC NI。
图5示出了根据一些实施例的包括通过共享连接进行通信的图1的RR设备104和108的系统500。图5的系统500至少部分地类似于图4的系统400。例如,类似于系统400,系统500包括NI 530a中的转换器502a和502b,其在PNC协议与RR协议之间转换命令。此外,NI530b还包括转换器502c和502d,其被配置为在PNC协议与RR协议之间进行转换。系统500的转换器502a和502b以及转换器502c和502d被配置为类似于系统400的转换器402a和402b,因此,这里将不再更详细地对其进行讨论。
在一些实施例中,转换器502a、502b与转换器502c、502d之间的部分基于PNC协议,而转换器502a、502b与设备104之间的部分基于RR协议。类似地,在一些实施例中,转换器502c、502d与设备108之间的部分也基于RR协议。在一些实施例中,因为NI 530a和530a中的每个NI耦合到对应的RR设备,所以NI 530a和530b被称为RR NI。
在一些实施例中,在PNC协议中,一组排序规则用于对各种类型的命令流进行仲裁和控制。以下表1示出了用于PNC协议的各种示例性排序规则(在本文中还被称为“PNC排序规则”),例如指定在使用共享连接对命令进行仲裁期间哪个流类可以超过另一流类。在一些实施例中,表1中的规则适用于PNC域(例如,并且不一定在RR域中)。
表1(PNC排序规则)
规则编号 | 规则描述 |
1 | 在相同的流类内,次序被保留 |
2 | 非发布不被允许超过发布 |
3 | 完成不被允许超过发布 |
4 | 发布被允许超过所有其它流类 |
5 | 完成被允许超过非发布 |
6 | 非发布可以或者可以不被允许超过完成 |
在一些实施例中,表1的规则1确保,对于给定的流类,保留接收命令的次序。例如,参考图3,如果P流312a1从发起者204a接收P命令序列并且P命令被加载到FIFO缓冲器338a中,则将由仲裁器334a输出P命令的次序将与P命令在序列中的次序相同。尽管仲裁器334a将可能在由仲裁器334a输出的P命令内交织NP命令和/或C命令,但是流312a1中的任何P命令都不能超过仲裁器输出中的另一P命令。例如,如果第一P命令在P流312a1中(以及是也在缓冲器338a中)的第二P命令之前,则第一P命令将始终由仲裁器334a在第二P命令之前输出(尽管可以在由仲裁器334a输出的第一和第二P命令之间存在介入的NP和/或C命令)。类似地,NP流312b1(或C流316c2)中存在的NP命令(或C命令)的序列在仲裁器334a的输出中被保持。因此,规则1保持PNC协议的基本一致性。
在一些实施例中,表1的规则2确保,如果由仲裁器(例如,仲裁器334a)同时或几乎同时接收NP命令(例如,来自NP流312b 1)和P命令(例如,来自P流312a1),NP命令不被允许超过P命令。例如,仲裁器334a确保P命令在NP命令之前。在一些实施例中,NP命令通常是读取命令,并且P命令通常是没有确认的写入命令。因此,例如,表2的规则2确保防止写入后读取(RAW)危险(例如,通过确保首先将数据写入给定存储器地址,然后从存储器地址读取)。
在一些实施例中,表1的规则3确保C命令不能超过P命令,例如如果C命令(例如,来自C流316c2)和P命令(例如,来自P流312a1)由仲裁器(例如,仲裁器334a)同时或几乎同时接收的话。在一些实施例中,这样的规则确保PNC协议中的基本排序,这要求报告命令被给予相对于完成命令的优先权。
在一些实施例中,表1的规则4确保P命令可以超过来自所有其他类的命令,例如P命令可以超过由仲裁器同时或几乎同时接收的NP命令和/或C命令。例如,如果P命令(例如,来自P流类312a1)与C命令(例如,来自C流316c2)和/或NP命令(例如,来自NP流312b1)由仲裁器(例如,仲裁器334a)同时或基本上同时接收,则仲裁器允许P命令超越NP命令和/或C命令。在一些实施例中,这样的规则确保PNC网络中的死锁避免。
在一些实施例中,表1的规则5确保C命令可以超过NP命令,例如如果C命令和NP命令由仲裁器同时或几乎同时接收的话。在一些实施例中,这样的规则还确保PNC协议中的死锁避免。例如,这样的规则确保允许与先前的P命令相关联的C命令(例如,在C命令响应于先前的P命令的情况下)在最近期的NP命令之前通过,例如以避免死锁的情况。在一些实施例中,表1的规则6确保可以允许或不允许NP命令超过C命令。
在一些实施例中,在RR协议中,排序规则用于对各种类型的命令流进行仲裁和控制。以下的表2示出了用于RR协议的各种示例性排序规则,例如指定了如何在RR域中处理流类。在一些实施例中,这些规则防止RR网络中的死锁情况。
表2(RR规则)
在一些实施例中,表2的规则1规定独立于响应处理请求,并且请求网络独立于响应网络。该规则例如确保请求网络中的停顿不影响响应网络,反之亦然。
在一些实施例中,表2的规则2确保目标(例如,图4的设备104的目标104b)在已经接受请求时能够在有限的时间量之后产生对应的响应,而不论通过请求网络到来的进一步的请求如何。这确保在有限的时间量内生成对请求的响应,而不论目标随后接收的请求的数量如何。例如,该规则还使得目标能够停止接受请求,例如如果达到目标的未决响应极限的话(例如,一旦未决响应的数量达到门限值)。
在一些实施例中,表2的规则3确保已发出生成响应的请求的发起者(例如,图4的设备104的发起者104a)将在有限的时间量之后接受该响应,而不论发起者可能想要产生的其他请求如何。例如,假设发起者104a在请求流450a上发送第一请求,响应于此,发起者104a在一些时间之后接收第一响应。规则3规定发起者104a将在接收第一响应的有限的时间量内接受第一响应,而不论发起者104a可能想要产生的其他请求如何。
在一些实施例中,与PNC网络相关联的表1的规则中的一些规则可能与关联于RR网络的表2的规则中的一些规则相矛盾或违反关联于RR网络的表2的规则中的一些规则。例如,表1的规则3(例如,其声明完成不被允许超过发布)可能与表2的规则1(例如,其声明请求和响应网络是独立的)相矛盾。例如,由于不允许来自目标的响应超过相同共享网络接口上的发起者部分的发布的写入请求(例如,如由表1的PNC规则3规定的),所以响应可能不再独立于请求而前进(例如,其可能违反表1的RR规则1)。因此,如果构建网络接口以使标准总线协议发起者/目标对观察PNC排序规则(例如,以使得其可以与PNC样式组件通信),则必须确保对目标的该量的未决的非发布请求可以将其响应存储在单独的缓冲器中。例如,这样的单独的缓冲器可以在网络接口的转换器内,其中,网络接口的转换器在本文稍后讨论,例如如图3-5的网络接口中示出的。例如,这样的布置可以确保响应可以在缓冲器中逗留,直到例如PNC排序规则(例如,来自表1)允许响应在发起者的发布请求之后前进为止。例如,这样的安排还可以确保对目标的请求网络不因为响应不能前进而停顿,从而修复对表2的规则1的违反,并且避免违反表2的规则3。
在一些实施例中,在PNC协议中,使用一组规则来避免PNC网络中的死锁。以下的表3示出了用于PNC协议的各种示例性死锁避免规则(在本文中还被称为“PNC死锁避免规则”,或者被称为PNC-DL规则)。
表3(PNC死锁避免规则或PNC-DL规则)
在一些实施例中,表3的规则1规定尽管设备中的发起者端口和目标端口可以被绑定在一起,但是发起者端口后面的逻辑可以独立于目标端口后面的逻辑而工作。例如,这样的逻辑分离有助于实现表2的规则1(例如,其规定请求网络和响应网络是独立的)。
在一些实施例中,表3的规则2规定发布请求可以始终在设备的目标中被接受,例如独立于发起者可能必须发送事务(例如,发出请求)的任何阻塞。例如,这是关于以上讨论的规则1讨论的发起者和目标逻辑独立性的另一方面。
在一些实施例中,表3的规则3规定可以独立于对应发起者可能想要发出的非发布请求来接受对目标的非发布请求。例如,这是关于以上讨论的规则1讨论的发起者和目标逻辑独立性的另一方面。
在一些实施例中,表3的规则4规定可以独立于对发起者中的请求的任何背压来接受完成命令。在一些实施例中,表3的规则5规定完成命令必须能够超过阻塞的读取请求,例如以确保完成命令最终到达以打破由每个逻辑具有的未决响应的限制引起的任何潜在停顿。在一些实施例中,表3的规则6规定始终允许发布请求在有限的时间量之后前进,例如以使得报告命令后面的完成命令也可以前进。
在一些实施例中,表3的规则5和6要求读取请求(例如,其是NP命令)被写入请求(例如,其是P命令)和/或读取响应(例如,其是C命令)选择性地超过。在一些实施例中,为了使得读取请求能够被超过,读取请求必须在与写入请求和读取响应不同的流类缓冲器上行进。如图3-5所示,网络接口确保每个流类具有对应的缓冲器,从而促进满足表3的规则5和6。
在一些实施例中,为了能够满足表3的规则6,可以存储(并且因此可以保持或延迟)事务的个别组件必须至少获得用于P命令和NP命令的单独的存储库(例如,以使得P命令随时都可以超过NP命令)。如图3-5所示,网络接口确保每个流类具有对应的缓冲器,从而从用户被满足表3的规则6。
图6示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备连接的互连网络600(以下被称为“网络600”)。在一些实施例中,网络600包括多个路由设备(以下被称为“路由器”)Ra、……、Re,其概括地以单数形式的路由器R或复数形式的多个路由器R引用。
在一些实施例中,路由器R以树状拓扑布置。例如,路由器Ra形成树的顶部节点,并且具有连接到两个下游Rb和Rc的两个分支。类似地,路由器Rb具有连接到两个下游路由器Rd和Re的两个分支。尽管图6示出了二进制树,其中,路由器Ra和Rb中的每个路由器具有恰好两个子路由器,但路由器也可以具有一个、三个或更多个子路由器。尽管图6中示出了特定配置的树和特定数量的路由器R,但是这样的配置和数量仅仅是示例而并不限制本公开内容的范围。
在一些实施例中,网络600的树状结构确保路由器仅经由单个且唯一的路由连接到另一路由器。例如,路由器Rc经由并且仅经由路由器Ra和Rb连接到路由器Re。路由器R包括任何适当的路由设备,其可以接收数据分组并选择性地将接收的数据分组路由到适当的目的地。例如,路由器R可以表示包括以下组件的网络:多个路由器、交换机、总线、多层总线、交叉开关、用于命令和数据信息的时间复用线路(或者,例如用于命令和数据信息的单独线路)、任何其他适当的网络组件等。
路由器R中的每个路由器R经由对应的多个网络接口连接到多个组件,其中,组件这些通常概括地以单数形式的组件M或复数形式的多个组件M引用,并且其中,网络接口概括地以单数形式的NI或复数形式的多个NI引用(并且被标记为Nx,其中,N指示网络接口,并且x标识网络接口)。例如,路由器Ra例如分别经由NI N1a、……、N6a连接到组件M1a、……、M6a。类似地,路由器Rb例如分别经由NI Nib、……、N6b连接到组件M1b、……、M6b,等等。尽管图6示出了每个路由器耦合到特定数量的组件,但是这样的特定数量的组件仅仅是示例,而并不限制本公开内容的范围。
在一些实施例中,在系统600中,使用对应的信号线(例如,形成以上讨论的路由器树的分支)来互连两个相邻的路由器。例如,路由器Ra经由信号线Sac和Sca耦合到Rc,其中,Sac表示从路由器Ra到路由器Rc的连接,并且其中,Sca表示从路由器Rc到路由器Ra的连接。类似地,例如路由器Rb经由信号线Sbe和Seb耦合到Re,其中,Sbe表示从路由器Rb到路由器Re的连接,并且其中,Seb表示从路由器Re到路由器Rb的连接。信号线Sab、Sba、Sac、Sea等通常以单数形式的信号线S以及复数形式的多个信号线S引用。
在一些实施例中,个别组件M可以是任何适当类型的,例如处理核心(例如,处理器)、存储器、外围设备、直接存储器访问(DMA)设备、PCIe设备、通用串行总线(USB)设备等。仅作为示例,每个路由器R耦合到组件M,所述组件M包括至少一个处理器、至少一个存储器和一个或多个其他类型的组件。处理核心或处理器通常指代中央处理单元(CPU)、专用集成电路(ASIC)、网络处理器、数字信号处理器、通用处理器等。
在一些实施例中,组件M中的一些组件M可以是RR设备,同时一些其他组件可以是RR设备。仅作为示例,组件M6a可以是RR设备,而组件M5a可以是PNC设备。
在一些实施例中,网络600中的NI可以是两种类型之一,例如基于NI连接到的组件的类型。例如,如果NI连接到RR组件,则NI类似于图4的NI 430a(例如,NI是RR NI)。另一方面,如果NI连接到PNC组件,则NI类似于图4的NI 430b(例如,NI是PNC NI)。因此,对于组件M6a是RR设备而组件M5a是PNC设备的示例,N6a是RR NI而N5a是PNC NI。例如,N6a具有两个转换器(例如,类似于图4的转换器402a和402b),其将RR命令从组件M6a转换为PNC命令。在一些实施例中,例如图6的路由器R和信号线S分别与图3-5的路由器350、450和550相对应。
在一些实施例中,路由器R和信号线S根据PNC协议操作(例如,形成PNC网络)。因此,包括路由器R和信号线S的PNC网络将一个或多个PNC组件和/或一个或多个RR组件互连。对于根据PNC协议操作的个别组件M,对应的NI不需要执行任何转换操作;而对于根据RR协议操作的个别组件M,对应的NI执行RR和PNC协议之间的转换,例如如关于图4讨论的。
在一些实施例中,每个路由器具有一个或多个缓冲器、仲裁器、交换机等,但是并非所有这样的组件都在图6中示出。例如,路由器Ra的两个缓冲器Ba1和Ba2在图6中示出。在示例中,缓冲器Ba1被配置为对在路由器Ra与网络接口N1a之间发送的数据进行缓冲。在一些实施例中,缓冲器Ba1可以与网络接口N1a集成。在示例中,缓冲器Ba2被配置为对在路由器Ra与信号线Sab和Sba之间发送的数据进行缓冲。注意,如以上讨论的,路由器Ra也可以具有其他缓冲器,尽管图6中未被示出。
在下面讨论的一些示例中(例如,关于图7-9),假设组件M1a是第一处理器,组件M5d是存储器,并且组件M6c是第二处理器。还假设第一处理器M1a要将数据写入存储器M5d中,然后所述数据要由第二处理器M6c读取。因此,仅作为示例,假设第一处理器M1a是数据的生产者,存储器M5d是数据的目标,并且第二处理器M6c是数据的消费者。
为了让生产者M1a将数据写入到存储器M5d,生产者M1a必须将一系列写入命令发送到存储器M5d。对于PNC网络(例如,包括路由器R和信号线S),写入命令可以是例如报告命令(例如,假设写入命令不需要确认)。生产者M1a可以是RR设备(在该情况下,RR设备发出写入请求,网络接口N1a将所述写入请求转换为报告命令)或PNC设备(在该情况下PNC设备发出报告命令)。
图7示出了根据一些实施例的从生产者M1a到图6的网络600的存储器M5d的写入数据的传输。例如,采用报告命令的形式的写入数据沿着虚线发送,例如经由网络接口N1a、路由器Ra(例如,包括缓冲器Ba1和缓冲器Ba2)、信号线Sab、路由器Rb、信号线Sbd、路由器Rd和网络接口N5d从生产者M1a发送到存储器组件M5d。
如所讨论的,生产者M1a发出一系列写入命令。仅作为示例,假设生产者M1a按次序发出四个写入命令。在一些实施例中,因为声明该次序被保留在相同的流类中的表1的规则1(例如,PNC排序规则的规则1),所以前三个写入命令将例如在发送第四(例如,最后的)写入命令之前从生产者M1a发送到存储器M5d。第四或最后的写入命令中的写入数据还被称为最后写入数据(LWD)704,这是因为LWD 704是从生产者M1a发送到存储器M5d的写入数据序列中的最后写入数据(LWD 704使用附图中的对角阴影矩形被示出)。
在一些实施例中,在生产者M1a发出用于写入到存储器M5d的四个写入命令之后,生产者M1a向消费者M6c发出中断708。例如,中断708是使消费者M6c知道对存储器M5d的写入的尝试,以使得消费者M6c可以从存储器M5d读取数据。在一些实施例中,可以通过绕过网络600(例如,通过绕过路由器R和信号线S)来发送中断708,如图7所示。
在一些实施例中,例如在第四(例如,最后一个)写入命令仍然在路由器Ra内逗留时(例如,因为一旦生产者M1a发出最后一个写入命令,中断704就由生产者M1a发送,而不用等待LWD 704到达存储器M5d),生成并发送中断708。例如,LWD 704仍然在路由器Ra内(或者可以仍然在NI N1a内)。例如,图7示出了LWD 704在缓冲器Ba1内,但LWD 704也可以在网络接口N1a内。
在一些实施例中,在消费者M6c接收到中断708之后,消费者M6c与生产者M1a通信,例如如图8所示。例如,如图8所示,响应于接收到图7的中断708,消费者M6c将消费者读取状态报告发送到生产者M1a,其是NP命令810。命令810是NP命令,这是因为生产者M1a必须用对应的完成命令来响应命令810。在示例中,中断708仅向消费者M6c通知可用于消费者M6c的相关信息,其中,该信息存储在生产者M1a中。因此,基于中断780,消费者M6c发送NP命令810,例如以知道与中断708相关联的细节。
在一些实施例中,响应于接收到NP命令810,生产者M1a将消费者状态报告(其是C命令812)发送到消费者M6c。例如,C命令812指定生产者M1a已将数据写入到存储器M5d,并且消费者M6c可以从存储器M5d读取数据。
在一些实施例中,经由缓冲器Ba1和/或网络接口N1a发送NP命令810和C命令812。此外,在图7中,LWD 704在缓冲器Ba1和/或网络接口N1a中逗留。在示例中,C命令812将LWD704推出缓冲器Ba1和/或网络接口N1a,以使得LWD 704到达至少缓冲器Ba2。C命令812可以将LWD 704推出缓冲器Ba1和/或网络接口N1a,这是因为LWD 704是P命令的一部分,并且PNC排序规则的规则3(例如,表1)规定完成不被允许超过发布(例如,这暗示C命令推动P命令通过仲裁器/缓冲器)。因为该规则,所以LWD 704由C命令812推出缓冲器Ba1和/或网络接口N1a,如图8所示。
一旦消费者M6c已经接收到C命令812,消费者M6c就知道它必须从存储器M5d读取数据(例如,基于分析C命令812)。因此,消费者M6c将消费者读取请求(其为NP命令910)发送到存储器,如图9所示。NP命令910经由路由器Ra的缓冲器Ba2和路由器Rb和Rd被发送。
此外,注意在图8中,LWD 704仍然在路由器Ra的缓冲器Ba2中逗留。此外,PNC排序规则(例如,表1)的规则2规定非发布不被允许超过发布(例如,暗示NP命令推动P命令)。因此,NP命令910推动LWD 704(例如,其是P命令的一部分)一路通过存储器M5d。例如,因为PNC排序规则中的规则2,确保LWD 704在NP命令910(例如,其是用于从存储器M5d读取数据的读取请求)到达存储器M5d之前到达存储器M5d。
在存储器M5d中执行读取操作之后,将读取的数据作为完成命令912从存储器M5d发送回消费者M6c。
因此,网络600避免了写入前读取(RAW)危险并保持了数据一致性。例如,即使生产者M1a在LWD 704到达存储器M5d之前发出中断708,网络600也确保不执行用于读取数据的NP命令910(例如,不实际上执行读取),直到LWD 704实际上到达存储器M5d。
图10示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备连接的互连网络1000(以下被称为“网络1000”),其中,中断发生器在网络接口内。网络1000类似于图6-9的网络600,因此不被详细讨论。应注意,出于说明清楚的目的,图10中未示出路由器(例如,路由器Rd)和/或组件中的一些路由器和/或组件。在一些实施例中,路由器Rd可以不存在于网络1000中。
类似于图6-9,在以下讨论的一些示例中,假设组件M4a是第一处理器,组件M7e是存储器,并且组件M7c是第二处理器。还假设第一处理器M4a将数据写入存储器M7e中,所述数据然后要由第二处理器M7c读取。因此,仅作为示例,假设第一处理器M4a是数据的生产者,存储器M7e是数据的目标,并且第二处理器M7c是数据的消费者。
仅作为示例,假设要被写入的数据可以被包括在三个写入命令中。在一些实施例中,生产者M4a发出一系列写入命令,其例如包括P命令序列P1012。例如,写入数据被包括在三个P命令P1、P2和P3中。在一些实施例中,生产者M4a还向三个写入命令附加另外的P命令P4。因此,P命令序列P1012包括P命令P1、……、P4,其中,P1、P和P3是写入命令,命令P4不是写入命令。在一些示例中,命令P4可以被认为是伪写入命令。如图10所示,P命令P1012从生产者M4a被发送到与目标存储器M7e相关联的网络接口N7e(例如,使用虚线示出)。
在一些实施例中,网络接口N7e除了其他组件之外还包括地址解码器1004和中断发生器1008。地址解码器1004对由网络接口N7e接收的个别命令的地址进行解码,并且将命令指向适当的目的地。例如,被包括在P命令序列P1012中的P命令P1、P2和P3是去往存储器M7e的写入命令。因此,地址解码器1004将P命令P1、P2和P3指向存储器M7e。应当注意的是,例如如果存储器M7e是RR设备,则网络接口N7e在将P命令发送到存储器M7e之前将P命令转换为适当的写入请求。
在一些实施例中,P命令序列P1012中的最后的P命令(例如,P4命令)不是写入命令。例如,与命令P4相关联的目的地地址不是用于存储器M7e的。仅作为示例,被指派给网络接口N7e的地址空间被划分为两个部分——具有被指派给存储器M7e的地址的第一部分、以及被指派给中断发生器1008的第二部分。第二部分具有与第一部分中的地址相比相对较少的地址。因此,是P命令序列1012中的最后的命令的命令P4被发送到中断发生器1008。
应注意,PNC排序的规则1(例如,在表1中)规定在相同的流类内,保留次序。因此,因为所有命令P1、……、P4都是P命令,所以当网络接口N7e接收到命令P4时,网络接口N7e也已接收到命令P1、……、P3。
在一些实施例中,一旦中断发生器1008接收到命令P4,中断发生器1008就为消费者M7c生成中断1102,如图11所示。中断可以是例如P命令。尽管未在附图中示出,但是在接收到中断1102之后,消费者M7c执行用于从存储器M7e读取数据(例如,其仅经由命令P1、P2、P3写入)的读取操作。读取过程类似于关于图9所讨论的过程,因此在本文中不再更详细地讨论。
因此,在一些实施例中,图10的P命令序列1012中的被寻址到中断发生器1008的最后的P命令确保例如由处理器M7c发起的读取过程仅在来自P命令P1、P2和P3的数据实际上被写入到存储器M7e之后才发生。例如,仅在所有写入命令(例如,P命令P1、P2和P3)实际上到达网络接口N7e中之后才生成图11的中断1102。这防止了在写入存储器之前意外读取数据,例如以防止以上讨论的写入后读取或RAW危险,并且确保网络1000中的数据一致性。
尽管图11示出了通过网络1000发送中断1102(例如,经由路由器Re、Rb、Ra和Rc发送),但是在一些其他实施例中(并且尽管未在图11中示出),通过绕过路由器Re、Rb、Ra和Rc可以替代地将中断1102从网络接口N7e发送到消费者M7c。例如,中断1102可以通过连接网络接口N7e和消费者M7c的直接信号线从网络接口N7e被发送到消费者M7c。参考图7讨论了这样的通过直接信号线的中断的传送(例如,中断708通过直接信号线被发送)。在一些实施例中,在图11中,命令P4的地址字段或数据字段可以编码网络接口N7e将用于发送中断1102的直接信号线的标识。在一些实施例中,即使在中断1102通过将网络接口N7e连接到消费者M7c的直接信号线被发送的情况下,也将防止以上讨论的RAW危险,例如这是因为仅在完整写入数据到达至少NI N7e之后才生成中断1102。因此,可以选择任何传输机制用于中断1102从网络接口N7e到消费者M7c的传输(例如,(i)经由包括路由器Re、Rb、Ra、Rc的网络1000,或(ii)经由连接网络接口N7e和消费者M7c的直接信号线),而不失去正确的写入和读取次序。
图12示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备连接的互连网络1200(以下被称为“网络1200”),其中,在一系列发布写入命令之后执行非报告命令。网络1200类似于图10-11的网络1000,因此不再详细地讨论。
类似于图10-11,在以下讨论的一些示例中,假设第一处理器M4a将数据写入存储器M7e中,所述数据然后由第二处理器M7c读取。因此,仅作为示例,假设第一处理器M4a是数据的生产者,存储器M7e是数据的目标,并且第二处理器M7c是数据的消费者。
类似于图10-11并且作为示例,假设要写入的数据可以被包括在三个写入命令P1、P2和P3中。在图12的实施例中,三个写入命令P1、P2和P3之后是非发布伪写入命令NP1。因此,包括命令P1、P2、P3和NP1的发布/非发布(P/NP)命令序列1212由生产者N4a发送。
此外,表1的规则2指定非报告命令不被允许超过报告命令。因此,在命令NP1到达网络接口N7e时,报告命令P1、P2和P3必须已经到达网络接口N7e。
在一些实施例中,命令NP1由地址解码器1004发送到网络接口N7e中的寄存器1202。此外,网络接口N7e响应于NP1命令而将完成命令C1220发送到生产者M4a。生产者M4a仅在接收到C命令1220之后向消费者M7c生成用于从存储器M7e读取数据的中断(图12中未示出)。因此,仅在命令P1、P3和P3已至少到达网络接口N7e之后才生成中断,从而防止网络1200中的任何可能的写入后读取或RAW危险。
图12示出了处理非报告命令P1的网络接口N7e中的寄存器1202。然而,在一些实施例中,存储器目标M7e可以支持非发布写入命令。在这样的实施例中,可以将非报告命令NP1发送到存储器M7e(例如,而非寄存器1202)。例如,在这样的实施例中,寄存器122甚至可以不存在于网络接口N7e中。
在一些实施例中并且尽管未在图12中示出,但是最后的写入数据P3(例如,假设报告命令P1、P2和P3构成写入数据)之后可以是非发布读取命令(例如,而不是非发布写入命令NP1)。因为存储器M7e通常被配备为处理非发布读取命令,所以这样的示例可以不需要寄存器1202处理最后的非发布读取命令(例如,寄存器1202甚至可以不存在于NI N7e中)。类似于图12,基于非发布读取命令(其在接收到的发布写入命令P1、P2、P3之后被接收),存储器M7e可以将响应(例如,包括伪读取数据,或甚至是实际读取数据,或其他事物)发送到生产者M4a或消费者M7c。基于这样的响应(例如,其可以是完成命令,例如类似于图12的命令C1220),消费者M7c可以开始执行用于从存储器M7e读取数据的读取操作。类似于图12,这样的操作也将防止以上讨论的RAW危险。
参考图3-5,这些图中的网络接口中的每个网络接口具有用于不同类型流的六个缓冲器。在一些实施例中,在一些情况下,可能的是减少网络接口中的缓冲器的数量。
图13示出了根据某个实施例的包括通过共享连接经由PNC协议进行通信的图2-3的PNC设备204和208的系统1300,其中,公共缓冲器存储多个命令流。系统1300基本上类似于图3的系统300。例如,系统300和1300二者都包括类似的组件和类似的流,其使用图3和图13中的类似标签来标记。例如,类似于图3,图13的系统1300包括各种P流、NP流和C流、各种仲裁器和各种缓冲器。
然而,与图3不同,图13中的单个公共缓冲器338aa对P流312a1和C流316c2进行缓冲。换言之,在图3中,两个不同的缓冲器338a和342a分别对P流312a1和C流316c2进行缓冲。然而,在图13中,缓冲器338a和342a被组合在单个缓冲器338aa中,所述缓冲器338aa现在处理P流312a1和C流316c2二者。类似地,图13中的单个缓冲器346aa对P流316a2和C流312c 1进行缓冲。此外,图13中的单个缓冲器338bb对P流312a2和C流316c1进行缓冲,并且图13中的单个缓冲器346bb对P流316a1和C流312c2进行缓冲。
在一些实施例中,表1的PNC排序规则由图13的系统1300保留。例如,PNC排序规则的规则3声明完成命令不被允许超过报告命令。因为在系统1300中C命令和P命令被缓冲在FIFO缓冲器中(例如,在FIFO缓冲器338aa中),C命令不论如何都不能超过P命令,只要这些命令被缓冲在相同的FIFO缓冲器中。此外,因为C命令与NP命令分开被缓冲,所以C命令可以超过NP命令,从而满足与死锁避免相关联的表1的规则5。此外,当C命令通过组合缓冲器和仲裁器前进时,C命令推动任何前方的潜在的P命令。
在一些实施例中,尽管在系统1300中P命令和C命令以相同的速度前进,例如从而与图3的系统300相比稍微潜在地影响系统1300的性能,但是减小缓冲器大小显著减小了相关联的网络接口的大小。
在一些实施例中,网络接口NI 1330a和1330b中的每个网络接口具有四个缓冲器。可以进一步减少缓冲器的数量,如图14所示。图14示出了根据某个实施例的包括通过共享连接经由PNC协议进行通信的图2-3和图13的PNC设备204和208的系统1400,其中,公共缓冲器存储多个命令流。系统1400基本上类似于图3和图13的系统300和1300。例如,系统1300和1400二者都包括类似的流,所述流使用图13和图14中的类似标签来标记。例如,类似于图13,图14的系统1400包括各种P流、NP流和C流、各种仲裁器和各种缓冲器。
然而,图13的缓冲器340a和338aa组合在图14的网络接口1430a中的单个缓冲器338aaa中。类似地,图13的缓冲器346aa和348a组合在图14的网络接口1430a中的单个缓冲器346aaa中;图13的缓冲器342b和338bb组合在图14的网络接口1430b中的单个缓冲器338bbb中;并且图13的缓冲器348b和346bb组合在图14的网络接口1430b中的单个缓冲器346bbb中。因此,在图14中,网络接口中的单个缓冲器对对应的P流、NP流和C流中的每个流进行缓冲。例如,单个流类FIFO缓冲器用于写入请求、读取请求和读取响应。
在一些实施例中,因为单个缓冲器用于所有三种类型的流,所以可以不需要缓冲器的输出端处(或在缓冲器的输入端处)的仲裁。因此,在一些实施例中,系统1400中的网络接口NI 1430a和NI 1430b不具有仲裁器,如图14所示。
在一些实施例中,图14的系统1400违反表1的规则中的至少一些规则,因此用于不出现规则违反情况的情况。例如,系统1400可以应用于不可能具有在相同方向上被发送的读取请求(例如,NP命令)和读取响应(例如,C命令)的情况。因此,例如如果缓冲器338aaa对NP命令进行缓冲,则缓冲器338aaa可以不对任何C命令进行缓冲。另一方面,如果缓冲器338aaa对C命令进行缓冲,则缓冲器338aaa可以不对任何NP命令进行缓冲(例如,这是因为NP命令和C命令可能不在相同方向上发送)。
在许多实际情况中出现没有在相同方向上发送读取请求(例如,NP命令)和读取响应(例如,C命令)。例如,在示例性网络(例如,跟踪数据网络)中,发起者208b可以执行写入请求,而发起者204a可以配置网络并且可以读回与网络相关联的配置寄存器。例如,这确保了读取请求和读取响应不在相同方向上被发送。
图13和图14中的每张图示出了在两个PNC设备之间接合的网络接口。然而,这两张图的原理(例如,组合各种流的缓冲器)可以应用于例如在RR设备和PNC设备之间接合的网络接口。例如,参考图4,网络接口NI 430a的缓冲器438a、440a和442a也可以组合(例如,组合为单个缓冲器或两个缓冲器),例如如关于图13和图14所讨论的。组合图4的网络接口430a中(或到图5的网络接口530a和530b)的各种缓冲器将是显而易见的,例如基于关于图13和图14的讨论,因此在本文中不再更详细地讨论。
图15示出了根据一些实施例的用于控制缓冲器1502的缓冲器输出的系统1500。例如,缓冲器1502可以被包括在网络接口或路由器中(例如,如关于图3-14所讨论的)。
缓冲器1502接收包括数据分组的输入流1504。在一些实施例中,数据分组被划分为被称为流控制数字(flit)的较小数据单元。例如,flit可以是分组、或分组的一部分。例如,输入流1504包括flit流。在系统1500中,一旦缓冲器1502从输入流1504接收到flit,缓冲器1502就以输出流1508的形式输出flit,而引起缓冲器1502中的最小延时。
图16示出了根据一些实施例的用于控制缓冲器1602的缓冲器输出的系统1600。例如,缓冲器1602可以被包括在网络接口或路由器中(例如,如关于图3-14所讨论的)。缓冲器1602接收包括flit流的输入流1604。系统1600还包括比较器1610,其被配置为接收指示缓冲器1602的缓冲器填充水平1612的信号。仅作为示例,如果缓冲器1602的大约一半已满,则缓冲器填充水平1612将向比较器1610指示该信息。比较器1610还接收可配置门限填充水平1614。比较器1610将缓冲器填充水平1612与门限填充水平1614进行比较。如果缓冲器填充水平1612高于门限填充水平1614,则比较器1610发信号通知输出流控制电路1618以输出流1608的形式从缓冲器1602输出flit。因此,缓冲器1602基本上被保持在门限填充水平1614处或大约保持在门限填充水平1614或保持低于门限填充水平1614。在系统1600中,缓冲器1602存储flit,然后仅当存在缓冲器1602中的足够数量的flit时才将flit转发到例如仲裁器。
图17示出了根据一些实施例的用于控制缓冲器1702的缓冲器输出的系统1700。例如,缓冲器1702可以被包括在网络接口或路由器中(例如,如关于图3-14b所讨论的)。
缓冲器1702接收包括flit流的输入流1704。例如,在缓冲器1702中输入的消息或命令(例如,P命令、请求、响应、NP命令、C命令等)被划分为多个flit。在消息末端处的flit具有关于它是消息的最后的flit的指示。例如,消息的最后的flit提供消息末端的指示。
在一些实施例中,系统1700包括消息末端计数器1710(以下还被称为“计数器1710”)。计数器1710对缓冲器1702中的消息末端flit的数量进行计数。因此,如果缓冲器1702当前存储两个完整消息,则计数器1710将具有值2。
在一些实施例中,系统1700还包括输出流控制逻辑1718,其从计数器1710接收消息末端计数。如果计数值高于门限值,则将缓冲器1702中的消息输出为输出流1708。因此,在系统1700中,缓冲器1702存储消息,然后仅当缓冲器1702中存储有足够数量的完整消息时才将消息转发到例如仲裁器。
比较系统1500-1700,系统1500具有低延时,而系统1600和1700具有相对高的延时。此外,系统以较高的频率输出flit,而系统1600和1700输出整个消息。在一些实施例中,缓冲器可以被配置为以分别关于图15-17讨论的三种方式之一进行操作。例如,组合系统可以具有系统1500-1700的组件。组合系统可以被配置为充当以上讨论的三个系统中的任何系统。
例如,如果系统1500的操作模式被假设为第一模式,系统1600的操作模式被假设为第二模式,并且系统1700的操作模式被假设为第三模式,则组合系统中的缓冲器可以以第一、第二或第三模式中的任何模式操作。在一些实施例中,组合系统还可以动态地或自适应地改变操作模式。例如,当期望低延时时,组合系统可以以第一模式操作。
在一些示例中,组合系统中的缓冲器可以被包括在RR设备和PNC网络之间接合的网络接口内。在一些实施例中,RR设备和PNC网络可以具有不同的时钟频率和/或不同宽度的信号线。在一些实施例中,对组合系统的操作模式的选择例如可以基于两个域中的时钟频率的差异、信号线的宽度的差异等。例如,慢域例如与快速域相比可以包括相对慢的时钟信号和/或相对窄的宽度的信号线。
在一些实施例中,当组合系统中的缓冲器从慢域到快域路由flit时,flit相对慢地在缓冲器中累积(例如,这是因为慢域以较慢的速率发送flit)。因此,在这样的系统中并且仅作为示例,如果有足够的带宽可用于处理flit,则可以在组合系统处采用第一模式(例如,系统1500)。另一方面,例如当组合系统中的缓冲器将flit从快域路由到慢域时,flit相对快速地在缓冲器中累积(例如,这是因为快域以更快的速率发送flit)。在这样的情况下并且仅作为示例,可以利用与系统1600或1700相关联的第二模式或第三模式。
图18示出了根据一些实施例的将一个或多个PNC设备与一个或多个RR设备连接的互连网络1800(以下被称为“网络1800”)。网络1800类似于图10-11的网络1000,因此不再详细地讨论。
类似于图10-11,在以下讨论的一些示例中,假设第一处理器M4a将数据写入存储器M7e中,所述数据然后由第二处理器M7c读取。因此,仅作为示例,假设第一处理器M4a是数据的生产者,存储器M7e是数据的目标,并且第二处理器M7c是数据的消费者。
在一些实施例中,NI N7e(例如,其耦合到存储器M7e)包括读取指针1808和写入指针1804。例如,读取指针1808和写入指针1804由指针机制适当地控制并且例如被存储在相应的寄存器中。在一些实施例中,读取指针1808和写入指针1804分别指向存储器M7e中的数据当前正被从其读取或向其写入的存储器地址。在一些实施例中,数据的消费者(例如,消费者M7c)可以读取被存储在读取指针1808和写入指针1804中的值,例如以确定写入操作是否完成和/或是否有新数据可用于读取,消费者M7c可以基于此从存储器M7e读取数据。在一些实施例中,数据的生产者(例如,生产者M4a)还可以读取读取指针1808和/或写入指针1804以确定数据是否被写入到存储器M7e,例如基于生产者M4a可以将另外的数据发送到存储器M7e以用于写入。在一些实施例中,读取指针1808和写入指针1804防止写入后读取(RAW)危险,并且帮助确保网络1800中的一致性。
图19示出了根据一些实施例的计算设备2100(例如,智能设备、计算设备或计算机系统或SoC(片上系统)),其中,计算设备2100的各种组件通过网络2190互连。需要指出的是,具有与任何其他附图的元素相同的附图标记(或名称)的图19的那些元素可以以与所描述的方式类似的任何方式操作或运转,但不限于此。
在一些实施例中,计算设备2100表示适当的计算设备,例如计算平板、移动电话或智能手机、膝上型电脑、桌上型电脑、IOT(物联网)设备、服务器、机顶盒、启用无线的电子阅读器等。应当理解,概括地示出了某些组件,并且并非在计算设备2100中示出了这样的设备的所有组件。
在一些实施例中,计算设备2100包括第一处理器2110和第二处理器2210。本公开内容的各种实施例还可以包括2170内的网络接口(例如,无线接口),以使得可以将系统实施例并入到无线设备(例如,手机或个人数字助理)中。
在一个实施例中,处理器2110和/或2210可以包括一个或多个物理设备,例如微处理器、应用处理器、微控制器、可编程逻辑器件或其他处理单元。由处理器2110执行的处理操作包括对应用和/或设备功能在其上被执行的操作平台或操作系统的执行。处理操作包括与人类用户或与其他设备的I/O(输入/输出)相关的操作、与电力管理相关的操作和/或与将计算设备2100连接到另一设备相关的操作。处理操作还可以包括与音频I/O和/或显示I/O有关的操作。
在一个实施例中,计算设备2100包括音频子系统2120,其表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动程序、编解码器)组件。音频功能可以包括扬声器和/或耳机输出、以及麦克风输入。用于这样的功能的设备可以集成到计算设备2100中,或者连接到计算设备2100。在一个实施例中,用户通过提供由处理器2110接收和处理的音频命令来与计算设备2100交互。
显示子系统2130表示为用户提供视觉和/或触觉显示以与计算设备2100交互的硬件(例如,显示设备)和软件(例如,驱动程序)组件。显示子系统2130包括显示接口2132,其包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示接口2132包括与处理器2110分开的用于执行与显示相关的至少一些处理的逻辑。在一个实施例中,显示子系统2130包括触摸屏(或触摸板)设备,其向用户提供输出和输入二者。
I/O控制器2140表示与同用户交互相关的硬件设备和软件组件。I/O控制器2140可操作以管理是音频子系统2120和/或显示子系统2130的部分的硬件。另外,I/O控制器2140示出用于连接到计算设备2100的用户可以通过其与系统交互的附加设备的连接点。例如,可以附接到计算设备2100的设备可以包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或按键板设备或用于诸如读卡器或其他设备之类的特定应用的其他I/O设备。
如上所述,I/O控制器2140可以与音频子系统2120和/或显示子系统2130交互。例如,通过麦克风或其他音频设备的输入可以为计算设备2100的一个或多个应用或功能提供输入或命令。另外,可以代替或附加于显示输出而提供音频输出。在另一示例中,如果显示子系统2130包括触摸屏,则显示设备还充当输入设备,其可以至少部分地由I/O控制器2140管理。计算设备2100上还可以存在附加的按钮或开关以提供由I/O控制器2140管理的I/O功能。
在一个实施例中,I/O控制器2140管理诸如加速度计、相机、光传感器或其他环境传感器之类的设备、或者可以被包括在计算设备2100中的其他硬件。输入可以是直接用户交互的部分、以及向系统提供环境输入以影响其操作(例如,滤除噪声、调整亮度检测显示、为相机应用闪光灯、或其他特征)的部分。
在一个实施例中,计算设备2100包括管理电池电力使用、电池充电以及与省电操作相关的特征的电力管理2150。存储器子系统2160包括用于在计算设备2100中存储信息的存储器设备。存储器可以包括非易失性存储器设备(如果存储器设备的电力中断,则状态不改变)和/或易失性存储器设备(如果存储器设备的电力中断,则状态是不确定的)。存储器子系统2160可以存储应用数据、用户数据、音乐、照片、文档或其他数据、以及与计算设备2100的应用和功能的执行相关的系统数据(不论是长期的还是暂时的)。
还提供了实施例的元素作为用于存储计算机可执行指令(例如,用于实现本文所讨论的任何其他过程的指令)的机器可读介质(例如,存储器2160)。机器可读介质(例如,存储器2160)可以包括但不限于闪速存储器、光盘、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁卡或光卡、相变存储器(PCM)或者适用于存储电子或计算机可执行指令的其他类型的机器可读介质。例如,本公开内容的实施例可以作为计算机程序(例如,BIOS)被下载,所述计算机程序可以经由通信链路(例如,调制解调器或网络连接)通过数据信号的方式从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
连接2170包括用于使得计算设备2100能够与外部设备通信的硬件设备(例如,无线和/或有线连接器和通信硬件)和软件组件(例如,驱动程序、协议栈)。计算设备2100可以是单独的设备,例如其他计算设备、无线接入点或基站、以及诸如耳机、打印机或其他设备之类的外围设备。
连接2170可以包括多种不同类型的连接。概括而言,计算设备2100被示出为具有蜂窝连接2172和无线连接2174。蜂窝连接2172通常指代由无线运营商提供的蜂窝网络连接,例如经由GSM(全球移动通信系统)或变型或派生物、CDMA(码分多址)或变型或派生物、TDM(时分复用)或变型或派生物、或其他蜂窝服务标准提供的。无线连接(或无线接口)2174指代非蜂窝的无线连接,并且可以包括个域网(例如,蓝牙、近场等)、局域网(例如,Wi-Fi)和/或广域网(例如,WiMax)或其他无线通信。
外围连接2180包括硬件接口和连接器、以及用于进行外围连接的软件组件(例如,驱动程序、协议栈)。应当理解,计算设备2100既可以是到其他计算设备的外围设备(“去往”2182),又可以使外围设备连接到其(“从”2184)。计算设备2100通常具有“对接”连接器,其出于诸如管理(例如,下载和/或上载、改变、同步)计算设备2100上的内容之类的目的连接到其他计算设备。另外,对接连接器可以允许计算设备2100连接到允许计算设备2100控制(例如,去往视听或其他系统的)内容输出的某些外围设备。
除了私有对接连接器或其他私有连接硬件之外,计算设备2100还可以经由公共或基于标准的连接器进行外围连接2180。常见类型可以包括通用串行总线(USB)连接器(其可以包括多个不同硬件接口中的任何硬件接口)、包括MiniDisplayPort(MDP)的DisplayPort、高清多媒体接口(HDMI)、Firewire或其他类型。
在一些实施例中,计算设备2100的组件中的一些组件包括RR设备,而计算设备2100的一些其他组件包括PNC设备。在一些实施例中,计算设备2100的各种组件使用互连网络2190来互连。虽然未在图19中示出,但是在一些实施例中,网络2190包括一个或多个路由器、网络接口等,例如如关于图3-17所讨论的。
说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但不一定是所有实施例。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指代相同的实施例。如果说明书声明组件、特征、结构或特性“可以”、“可能”或“可”被包括,则不要求该特定组件、特征、结构或特性被包括。如果说明书或权利要求引用“一”或“一个”元素,那并不意味着只存在元素之一。如果说明书或权利要求引用“附加”元素,则不排除存在附加元素中的多于一个的元素。
此外,特定特征、结构、功能或特性可以在一个或多个实施例中以任何合适的方式组合。例如,第一实施例可以与第二实施例组合,只要与这两个实施例相关联的特定特征、结构、功能或特性不是相互排斥的。
虽然已经结合本公开内容的具体实施方案描述了本公开内容,但是根据前面的描述,这样的实施例的许多替代方案、修改和变型对于本领域普通技术人员而言将是显而易见的。本公开内容的实施例旨在涵盖落入所附权利要求的宽广范围内的所有这样的替代方案、修改和变型。
另外,为了简化说明和讨论,并且为了不模糊本公开内容,可以在所呈现的附图内示出或不示出到集成电路(IC)芯片和其他组件的公知电力/接地连接。此外,可以以框图形式示出布置以避免模糊本公开内容,并且还鉴于关于这样的框图布置的实现方式的细节高度依赖于本公开内容将在其中被实现的平台(即,这样的细节应当在本领域技术人员的知识范围内)。在阐述具体细节(例如,电路)以便描述本公开内容的示例性实施例的情况下,对于本领域技术人员而言应当显而易见的是,可以在没有这些具体细节或在这些具体细节的变型的情况下实践本公开内容。因此,描述被认为是说明性的而非限制性的。
下面的示例性条款涉及另外的实施例。可以在一个或多个实施例中的任何地方使用示例性条款中的细节。本文描述的装置的所有可选特征还可以关于方法或过程来实现。
条款1:一种网络接口,包括:第一缓冲器,其被配置为对从第一设备到第二设备的第一类型命令的第一流进行缓冲,其中,所述第一设备根据第一总线互连协议进行配置,并且所述第二设备根据第二总线互连协议进行配置;第二缓冲器,其被配置为对从所述第一设备到所述第二设备的第二类型命令的第二流进行缓冲;以及仲裁器,其被配置为在所述第一流与所述第二流之间进行仲裁,并且选择性地输出属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令。
条款2:根据条款1所述的网络接口,还包括:转换器,其被配置为将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
条款3:根据条款2所述的网络接口,其中:所述第一命令是根据所述第一总线互连协议的用于读取数据的请求;并且所述第二命令是根据所述第二总线互连协议的非报告命令。
条款4:根据条款2所述的网络接口,其中:所述第一命令是根据所述第一总线互连协议的用于在没有确认的情况下写入数据的请求;并且所述第二命令是根据所述第二总线互连协议的报告命令。
条款5:根据条款2所述的网络接口,其中:所述第一命令是根据所述第一总线互连协议的包括读取数据的响应;并且所述第二命令是根据所述第二总线互连协议的完成命令。
条款6:根据条款1-5中任一项所述的网络接口,其中,所述第一缓冲器还被配置为:对从所述第一设备到所述第二设备的第三类型命令的第三流进行缓冲,其中,所述第一类型命令包括报告命令并且所述第三类型命令包括完成命令。
条款7:根据条款1-6中任一项所述的网络接口,其中,所述第二总线互连协议包括使用报告命令、非报告命令和完成命令中的一个或多个命令来通信的总线互连协议。
条款8:根据条款1-7中任一项所述的网络接口,其中,所述第二总线互连协议包括外围组件互连(PCI)协议、外围组件快速互连(PCIe)协议或由其派生的总线互连协议之一。
条款9:根据条款1-8中任一项所述的网络接口,其中,所述仲裁器被配置为选择性地将所述一个或多个命令输出到包括一个或多个路由器和一个或多个其他网络接口的网络,并且其中,所述网络根据所述第二总线互连协议进行操作。
条款10:一种互连网络,包括:多个路由设备,所述多个路由设备包括第一路由设备和第二路由设备,其中,所述多个路由设备以树状结构布置;第一网络接口,其被配置为在第一组件与所述第一路由设备之间接合;以及第二网络接口,其被配置为在第二组件与所述第二路由设备之间接合,其中,所述第一组件根据第一总线互连协议进行配置,其中,所述第二组件根据第二总线互连协议进行配置,以使得所述第二组件使用报告命令、非报告命令或完成命令中的一个或多个命令来与所述第二网络接口进行通信。
条款11:根据条款10所述的互连网络,其中:所述多个路由设备中的至少一个路由设备被配置为根据所述第二总线互连协议与对应的多个网络接口进行通信。
条款12:根据条款10-11中任一项所述的互连网络,其中,所述第二网络接口包括:转换器,其被配置为在所述第一总线互连协议与所述第二总线互连协议之间转换一个或多个命令。
条款13:根据条款10-12中任一项所述的互连网络,其中:所述第一组件根据所述第一总线互连协议进行配置,以使得所述第一组件使用请求和响应来与所述第一网络接口进行通信。
条款14:根据条款10-13中任一项所述的互连网络,其中,所述第二网络接口包括:缓冲器,其被配置为对报告命令的第一流、非报告命令的第二流和完成命令的第三流进行缓冲。
条款15:根据条款10所述的互连网络,其中,所述第二网络接口包括:第一缓冲器,其被配置为对报告命令的第一流进行缓冲;第二缓冲器,其被配置为对非报告命令的第二流进行缓冲;以及第三缓冲器,其被配置为对完成命令的第三流进行缓冲。
条款16:一种系统,包括:处理核心;存储器,其中,所述处理核心根据第一总线互连协议进行配置,并且所述存储器根据第二总线互连协议进行配置;经由信号线耦合的第一路由器和第二路由器,其中,所述第一路由器和所述第二路由器根据所述第一总线互连协议进行配置;第一网络接口,其被配置为在所述处理核心与所述第一路由器之间接合;以及第二网络接口,其被配置为在所述存储器与所述第二路由器之间接合,其中,所述第二网络接口包括转换器,其被被配置为将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
条款17:根据条款16所述的系统,其中,所述第二网络接口包括:第一缓冲器,其被配置为对从所述存储器到所述处理核心的第一类型命令的第一流进行缓冲;第二缓冲器,其被配置为对从所述存储器到所述处理核心的第二类型命令的第二流进行缓冲;以及仲裁器,其被配置为在所述第一流与所述第二流之间进行仲裁,并且选择性地将属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令输出到所述第二路由器。
条款18:根据条款17所述的系统,其中,所述第一缓冲器还被配置为:对从所述存储器到所述处理核心的第三类型命令的第三流进行缓冲,其中,所述第一类型命令包括报告命令并且所述第三类型命令包括完成命令。
条款19:根据条款16-18中任一项所述的系统,其中,所述第二总线互连协议包括使用报告命令、非报告命令和完成命令中的一个或多个命令来通信的总线互连协议。
条款20:根据条款16-19中任一项所述的系统,其中,所述第二总线互连协议包括外围组件互连(PCI)协议、外围组件快速互连(PCIe)协议或由其派生的总线互连协议之一。
条款21:一种方法,包括:使用第一缓冲器来对从第一设备到第二设备的第一类型命令的第一流进行缓冲,其中,所述第一设备根据第一总线互连协议进行配置,并且所述第二设备根据第二总线互连协议进行配置;由第二缓冲器对从所述第一设备到所述第二设备的第二类型命令的第二流进行缓冲;由仲裁器在所述第一流与所述第二流之间进行仲裁;以及由所述仲裁器选择性地输出属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令。
条款22:根据条款21所述的方法,还包括:由转换器将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
条款23:根据条款22所述的方法,其中:所述第一命令是根据所述第一总线互连协议的用于读取数据的请求;以及所述第二命令是根据所述第二总线互连协议的非报告命令。
条款24:根据条款22所述的方法,其中:所述第一命令是根据所述第一总线互连协议的用于在没有确认的情况下写入数据的请求;以及所述第二命令是根据所述第二总线互连协议的报告命令。
条款25:一种装置,包括用于执行条款21-24中任一项中的方法的单元。
条款26:一种系统,包括:存储器;耦合到所述存储器的处理器;根据条款1-9所述的网络接口;以及互连网络,其中,所述网络接口耦合到所述互连网络或被包括在所述互连网络中。
条款27:机器可读存储装置,包括机器可读指令,所述指令当被执行时用于实现如任何前述条款中的方法或实现如任何前述条款中的装置。
提供了摘要,其将允许读者确定技术公开内容的本质和要点。在理解摘要将不被用于限制权利要求的范围或含义的情况下提交了摘要。所附权利要求特此并入具体实施方式中,其中,每个权利要求自身作为单独的实施例。
Claims (25)
1.一种网络接口,包括:
第一缓冲器,其被配置为对从第一设备到第二设备的第一类型命令的第一流进行缓冲,其中,所述第一设备根据第一总线互连协议进行配置,并且所述第二设备根据第二总线互连协议进行配置;
第二缓冲器,其被配置为对从所述第一设备到所述第二设备的第二类型命令的第二流进行缓冲;以及
仲裁器,其被配置为在所述第一流与所述第二流之间进行仲裁,并且选择性地输出属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令。
2.如权利要求1所述的网络接口,还包括:
转换器,其被配置为将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
3.如权利要求2所述的网络接口,其中:
所述第一命令是根据所述第一总线互连协议的用于读取数据的请求;并且
所述第二命令是根据所述第二总线互连协议的非报告命令。
4.如权利要求2所述的网络接口,其中:
所述第一命令是根据所述第一总线互连协议的用于在没有确认的情况下写入数据的请求;并且
所述第二命令是根据所述第二总线互连协议的报告命令。
5.如权利要求2所述的网络接口,其中:
所述第一命令是根据所述第一总线互连协议的包括读取数据的响应;并且
所述第二命令是根据所述第二总线互连协议的完成命令。
6.如权利要求1-5所述的网络接口,其中,所述第一缓冲器还被配置为:
对从所述第一设备到所述第二设备的第三类型命令的第三流进行缓冲,其中,所述第一类型命令包括报告命令并且所述第三类型命令包括完成命令。
7.如权利要求1-6中任一项所述的网络接口,其中,所述第二总线互连协议包括使用报告命令、非报告命令和完成命令中的一个或多个命令来通信的总线互连协议。
8.如权利要求1-7中任一项所述的网络接口,其中,所述第二总线互连协议包括外围组件互连(PCI)协议、外围组件快速互连(PCIe)协议或由其派生的总线互连协议之一。
9.如权利要求1-8中任一项所述的网络接口,其中,所述仲裁器被配置为选择性地将所述一个或多个命令输出到包括一个或多个路由器和一个或多个其他网络接口的网络,并且其中,所述网络根据所述第二总线互连协议进行操作。
10.一种互连网络,包括:
多个路由设备,所述多个路由设备包括第一路由设备和第二路由设备,其中,所述多个路由设备以树状结构布置;
第一网络接口,其被配置为在第一组件与所述第一路由设备之间接合;以及
第二网络接口,其被配置为在第二组件与所述第二路由设备之间接合,其中,所述第一组件根据第一总线互连协议进行配置,其中,所述第二组件根据第二总线互连协议进行配置,以使得所述第二组件使用报告命令、非报告命令或完成命令中的一个或多个命令来与所述第二网络接口进行通信。
11.如权利要求10所述的互连网络,其中:
所述多个路由设备中的至少一个路由设备被配置为根据所述第二总线互连协议与对应的多个网络接口进行通信。
12.如权利要求10-11中任一项所述的互连网络,其中,所述第二网络接口包括:
转换器,其被配置为在所述第一总线互连协议与所述第二总线互连协议之间转换一个或多个命令。
13.如权利要求10-12中任一项所述的互连网络,其中:
其中,所述第一组件根据所述第一总线互连协议进行配置,以使得所述第一组件使用请求和响应来与所述第一网络接口进行通信。
14.如权利要求10-13中任一项所述的互连网络,其中,所述第二网络接口包括:
缓冲器,其被配置为对报告命令的第一流、非报告命令的第二流和完成命令的第三流进行缓冲。
15.如权利要求10所述的互连网络,其中,所述第二网络接口包括:
第一缓冲器,其被配置为对报告命令的第一流进行缓冲;
第二缓冲器,其被配置为对非报告命令的第二流进行缓冲;以及
第三缓冲器,其被配置为对完成命令的第三流进行缓冲。
16.一种系统,包括:
处理核心;
存储器,其中,所述处理核心根据第一总线互连协议进行配置,并且所述存储器根据第二总线互连协议进行配置;
经由信号线耦合的第一路由器和第二路由器,其中,所述第一路由器和所述第二路由器根据所述第一总线互连协议进行配置;
第一网络接口,其被配置为在所述处理核心与所述第一路由器之间接合;以及
第二网络接口,其被配置为在所述存储器与所述第二路由器之间接合,
其中,所述第二网络接口包括转换器,所述转换器被配置为将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
17.如权利要求16所述的系统,其中,所述第二网络接口包括:
第一缓冲器,其被配置为对从所述存储器到所述处理核心的第一类型命令的第一流进行缓冲;
第二缓冲器,其被配置为对从所述存储器到所述处理核心的第二类型命令的第二流进行缓冲;以及
仲裁器,其被配置为在所述第一流与所述第二流之间进行仲裁,并且选择性地将属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令输出到所述第二路由器。
18.如权利要求17所述的系统,其中,所述第一缓冲器还被配置为:
对从所述存储器到所述处理核心的第三类型命令的第三流进行缓冲,其中,所述第一类型命令包括报告命令并且所述第三类型命令包括完成命令。
19.如权利要求16-18中任一项所述的系统,其中,所述第二总线互连协议包括使用报告命令、非报告命令和完成命令中的一个或多个命令来通信的总线互连协议。
20.如权利要求16-19中任一项所述的系统,其中,所述第二总线互连协议包括外围组件互连(PCI)协议、外围组件快速互连(PCIe)协议或由其派生的总线互连协议之一。
21.一种方法,包括:
使用第一缓冲器对从第一设备到第二设备的第一类型命令的第一流进行缓冲,其中,所述第一设备根据第一总线互连协议进行配置,并且所述第二设备根据第二总线互连协议进行配置;
由第二缓冲器对从所述第一设备到所述第二设备的第二类型命令的第二流进行缓冲;
由仲裁器在所述第一流与所述第二流之间进行仲裁;以及
由所述仲裁器选择性地输出属于所述第一类型的一个或多个命令和属于所述第二类型的一个或多个命令。
22.如权利要求21所述的方法,还包括:
由转换器将根据所述第一总线互连协议的第一命令转换为根据所述第二总线互连协议的第二命令。
23.如权利要求22所述的方法,其中:
所述第一命令是根据所述第一总线互连协议的用于读取数据的请求;并且
所述第二命令是根据所述第二总线互连协议的非报告命令。
24.如权利要求22所述的方法,其中:
所述第一命令是根据所述第一总线互连协议的用于在没有确认的情况下写入数据的请求;并且
所述第二命令是根据所述第二总线互连协议的报告命令。
25.一种系统,包括:
存储器;
耦合到所述存储器的处理器;
如权利要求1-9所述的网络接口;以及
互连网络,其中,所述网络接口耦合到所述互连网络或被包括在所述互连网络中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/373,033 US20180165240A1 (en) | 2016-12-08 | 2016-12-08 | Interconnect network supporting multiple consistency mechanisms, multiple protocols, and multiple switching mechanisms |
US15/373,033 | 2016-12-08 | ||
PCT/US2017/060703 WO2018106393A1 (en) | 2016-12-08 | 2017-11-08 | Interconnect network supporting multiple consistency mechanisms, multiple protocols, and multiple switching mechanisms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109891834A true CN109891834A (zh) | 2019-06-14 |
Family
ID=62490242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780065525.5A Pending CN109891834A (zh) | 2016-12-08 | 2017-11-08 | 支持多个一致性机制、多个协议和多个交换机制的互连 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180165240A1 (zh) |
CN (1) | CN109891834A (zh) |
DE (1) | DE112017006207T5 (zh) |
WO (1) | WO2018106393A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688332A (zh) * | 2019-09-12 | 2020-01-14 | 无锡江南计算技术研究所 | 一种面向高速消息传输的pcie数据传输系统及计算机 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10931722B2 (en) * | 2017-04-04 | 2021-02-23 | Lattice Semiconductor Corporation | Transmitting common mode control data over audio return channel |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276318A (zh) * | 2008-05-12 | 2008-10-01 | 北京航空航天大学 | 基于pci-e总线的直接存取数据传输控制装置 |
US20130166812A1 (en) * | 2011-12-26 | 2013-06-27 | Arteris SAS | Transport of pci-ordered traffic over independent networks |
CN105009101A (zh) * | 2013-03-15 | 2015-10-28 | 英特尔公司 | 提供与数据缓冲器相关联的监听滤波 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751191B1 (en) * | 1999-06-29 | 2004-06-15 | Cisco Technology, Inc. | Load sharing and redundancy scheme |
JP4878185B2 (ja) * | 2006-03-17 | 2012-02-15 | 株式会社リコー | データ通信回路および調停方法 |
US8532098B2 (en) * | 2009-11-30 | 2013-09-10 | Nvidia Corporation | System and method for virtual channel communication |
US8782321B2 (en) * | 2012-02-08 | 2014-07-15 | Intel Corporation | PCI express tunneling over a multi-protocol I/O interconnect |
US9910816B2 (en) * | 2013-07-22 | 2018-03-06 | Futurewei Technologies, Inc. | Scalable direct inter-node communication over peripheral component interconnect-express (PCIe) |
US20160173398A1 (en) * | 2014-12-12 | 2016-06-16 | Intel Corporation | Method, Apparatus And System For Encoding Command Information In a Packet-Based Network |
-
2016
- 2016-12-08 US US15/373,033 patent/US20180165240A1/en not_active Abandoned
-
2017
- 2017-11-08 DE DE112017006207.1T patent/DE112017006207T5/de active Pending
- 2017-11-08 CN CN201780065525.5A patent/CN109891834A/zh active Pending
- 2017-11-08 WO PCT/US2017/060703 patent/WO2018106393A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276318A (zh) * | 2008-05-12 | 2008-10-01 | 北京航空航天大学 | 基于pci-e总线的直接存取数据传输控制装置 |
US20130166812A1 (en) * | 2011-12-26 | 2013-06-27 | Arteris SAS | Transport of pci-ordered traffic over independent networks |
CN105009101A (zh) * | 2013-03-15 | 2015-10-28 | 英特尔公司 | 提供与数据缓冲器相关联的监听滤波 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688332A (zh) * | 2019-09-12 | 2020-01-14 | 无锡江南计算技术研究所 | 一种面向高速消息传输的pcie数据传输系统及计算机 |
Also Published As
Publication number | Publication date |
---|---|
WO2018106393A1 (en) | 2018-06-14 |
DE112017006207T5 (de) | 2019-09-05 |
US20180165240A1 (en) | 2018-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW480855B (en) | Communications system and method with multilevel connection identification | |
US20220100694A1 (en) | PCI Express to PCI Express based low latency interconnect scheme for clustering systems | |
US10027433B2 (en) | Multiple clock domains in NoC | |
US5968158A (en) | Apparatus including a host processor and communications adapters interconnected with a bus, with improved transfer of interrupts between the adapters and host processor | |
US8718065B2 (en) | Transmission using multiple physical interface | |
US8819611B2 (en) | Asymmetric mesh NoC topologies | |
JP4878185B2 (ja) | データ通信回路および調停方法 | |
CN102164072B (zh) | 针对音频/视频流送在设备布局中标识设备 | |
CN101488922B (zh) | 具备自适应路由能力的片上网络路由器及其实现方法 | |
CN107750357A (zh) | 具有硬件加速平面和软件平面的数据处理系统 | |
CN105900080A (zh) | 用于经由芯片内和芯片间跳跃总线在片上系统之内和之间传送信息的方法和装置 | |
US20230075698A1 (en) | Systems and methods for the design and implementation of input and output ports for circuit design | |
CN109891834A (zh) | 支持多个一致性机制、多个协议和多个交换机制的互连 | |
CN102710496B (zh) | 用于多个服务器间的数据传输系统、数据接口装置及数据传输方法 | |
CN108011795B (zh) | 一种实现通信设备中多板卡和多数据通道管理的方法及系统 | |
CN110389930A (zh) | 用于管理在源设备和目标设备之间路由的事务的方法 | |
CN102308538A (zh) | 报文处理方法及装置 | |
JP2006092286A (ja) | データ転送装置及び画像形成システム | |
KR101702286B1 (ko) | 모드 선택적 밸런스드 인코딩된 상호접속부 | |
US20040081158A1 (en) | Centralized switching fabric scheduler supporting simultaneous updates | |
CN1656752B (zh) | 数据服务器 | |
JP2006099180A (ja) | データ転送装置及び画像形成システム | |
US8341323B2 (en) | Method and apparatus for data movement in a system on a chip | |
KR20150102538A (ko) | 시스템 온칩 통신 네트워크 | |
CN114500413A (zh) | 设备连接方法及装置、设备连接芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210624 Address after: California, USA Applicant after: INTEL Corp. Address before: California, USA Applicant before: INTEL IP Corp. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190614 |