CN109716311B - 用于执行分布式仲裁的系统、装置和方法 - Google Patents
用于执行分布式仲裁的系统、装置和方法 Download PDFInfo
- Publication number
- CN109716311B CN109716311B CN201780053573.2A CN201780053573A CN109716311B CN 109716311 B CN109716311 B CN 109716311B CN 201780053573 A CN201780053573 A CN 201780053573A CN 109716311 B CN109716311 B CN 109716311B
- Authority
- CN
- China
- Prior art keywords
- arbiter
- data
- packet
- coupled
- queue
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 49
- 230000005540 biological transmission Effects 0.000 claims abstract description 44
- 230000008859 change Effects 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 37
- 230000007704 transition Effects 0.000 claims description 11
- 230000015654 memory Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 13
- 238000011144 upstream manufacturing Methods 0.000 description 11
- 229910003460 diamond Inorganic materials 0.000 description 8
- 239000010432 diamond Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 235000003642 hunger Nutrition 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000037351 starvation Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 206010041954 Starvation Diseases 0.000 description 1
- 239000013543 active substance Substances 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/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
-
- 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/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/37—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
在一个实施例中,用于互连的分布式仲裁系统包括:第一发送器,其用于输出第一数据以及与所述第一数据相关联的发送标识符;以及第一仲裁器,其耦合到所述第一发送器,以接收所述第一数据并且至少部分地基于所述发送标识符的状态的改变来在所述第一数据与来自耦合到所述第一仲裁器的第二仲裁器的第二数据之间进行仲裁。描述并要求保护了其他实施例。
Description
技术领域
实施例涉及计算系统中的仲裁技术。
背景技术
在计算设备的互连系统中,多个代理常常寻求同时访问互连。为了公平地调解对互连的访问,可以存在一个或多个仲裁器。已知的仲裁解决方案包括循环法或基于信用的协议,其试图在保持发送器之间的公平性的同时实现良好的利用率。虽然这些解决方案可能适合小规模实施方式,但它们无法在大规模实施方式上保持公平性。例如,最远的仲裁器可能经历饥饿(starvation),而较近的仲裁器可能获得所有带宽。而且,当前的实施方式非常复杂并且以非常严格的时序要求需要许多控制线。
附图说明
图1是根据本发明的实施例的仲裁系统的一部分的框图。
图2是根据本发明的实施例的多个数据通信的图示。
图3是根据本发明另一实施例的分布式仲裁系统的图示的框图。
图4是根据实施例示出仲裁器的操作的框图。
图5是根据本发明另一实施例的分布式仲裁系统的框图。
图6是根据本发明另一实施例的分布式仲裁系统的操作的图示。
图7是根据本发明另一实施例的分布式仲裁系统的操作的图示。
图8是根据本发明的实施例的方法的流程图。
图9是根据本发明另一实施例的方法的流程图。
图10是根据本发明另一实施例的方法的流程图。
图11是由点对点链路组成的结构的实施例,所述点对点链路将一组组件互连。
图12是根据实施例的片上系统设计的实施例。
图13是根据本发明的实施例的系统的框图。
具体实施方式
在各种实施例中,以确保公平性并且源之间不发生饥饿的方式用多个仲裁器执行分布式数据仲裁。同时,实施例提供具有平衡仲裁的100%总线利用率,而对仲裁器和发送器的数量没有任何限制。如本文将描述的,可以将单个信息位(例如,经由单线实现的)至少部分地用于控制仲裁。另外,实施例确保没有由物理仲裁器距离引起的时序限制并且最小化路由限制。
注意到,使用实施例的数据仲裁可以使用单个数据总线以及根据需要的多个数据仲裁器和发送器经由单个总线或其他互连(例如,给定的结构)上的无限制的数量的串联连接的仲裁器来进行。在每个逻辑周期中,仲裁器被配置为确定选择多个信息块(例如,数据分组)中的哪个信息块以用于输出。注意到,提供给仲裁器的信息源可以包括(来自一个或多个发送器的)发送器数据和/或从先前(下游)仲裁器驱动的分组数据。所选择的分组被转发到数据总线上的下一仲裁器。
为了确定仲裁器中的数据次序,实施例使用发送器将称为发送标识符(TxID)的单个信息位连同对应的数据分组(例如,经由单线)发送到仲裁器的仲裁技术。每个发送器被配置为根据给定的仲裁策略来切换该TxID线(例如,从0到1或1到0),这可以在发送器的硬件逻辑单元中实现。
在不同的实施例中,多个仲裁策略是可能的。根据一个仲裁策略,发送器可以在每个要发送的新的有效数据块到达时切换该TxID。在另一示例中,发送器可以在每个新分组到达时切换TxID,例如,在分组大小大于总线以使得分组被分成多个数据块以便传输的情况下。在该情况下,发送器可以被配置为仅在分组传输完成时(例如,在多个周期之后)切换TxID。在另一示例中,发送器可以被配置为强制TxID在固定数量的时隙之后(例如,在四个时钟之后)切换。在该示例中,即使在分组的中间也可以切换TxID。对于该模式,分组格式可以包括用于支持分段分组的传输的报头。在其他情况下,可以使用以上选项的混合或用于控制总线访问的其他配置。
注意到,在实施例中,该TxID可以用于控制发送器的带宽。例如,在两个发送器共享相同数据总线的情况下:一个发送器可以被配置针对每个新的有效数据切换TxID,并且第二发送器可以被配置为每两个数据切换TxID。在该情况下,第二发送器接收2/3的总线带宽,并且第一发送器接收1/3的总线带宽。请注意,如果第二发送器没有任何数据要在数据总线上发送,则第一发送器可以接收100%的总线带宽。注意到,只要TxID以一致的条件切换,就可以保证公平性。还注意到,TxID的初始值没有任何意义,并且不依赖于连接到总线的任何其他发送器。
在给定的仲裁器处,发送器之间的仲裁基于TxID值的转变而发生。数据总线上的每个仲裁器从一个或多个发送器并且(潜在地)从总线上的先前仲裁器接收数据。仲裁器选择具有有效数据的第一发送器或仲裁器作为活动代理。在当前发送器/仲裁器切换其TxID时,仲裁器切换到具有有效数据的下一联机的(in line)发送器/仲裁器。如果任何其他发送器/仲裁器都不具有有效数据,则仲裁器可以被配置为即使在其TxID正在切换的情况下也继续指向当前发送器。
与例如基于信用或固定分配的仲裁技术相比,实施例提供了较低的复杂度和较大的公平性。虽然固定插槽方法可以很简单并且可以实现平衡仲裁,但是随着气泡的引入,总线利用率可能非常低。在循环方法中,有效位被发送到中央控制器,这引入了时序限制和/或电路速度路径。并且基于信用的方法是复杂的,并且通常需要大型逻辑块和附加的线等。
相比之下,实施例提供了简单的实施方式,其具有占用小面积并在总线方向上使用单线的逻辑单元。使用如本文描述的仲裁,实现了100%总线利用率,同时确保100%平衡仲裁。此外,实施例使得能够在即插即用方法中添加仲裁器而不改变其他仲裁器。仲裁器的数量没有限制,并且添加新的仲裁器不需要任何附加的逻辑单元。
现在参考图1,示出了根据本发明实施例的仲裁系统的一部分的框图。更具体而言,图1示出了分布式仲裁系统100的至少一部分。在该分布式仲裁系统中,多个仲裁器存在并且例如串联地耦合在一起以使得来自各种不同源(例如,多个发送器或其他信息源和下游仲裁器)的传入数据将信息向上游发送到目的地。在实施例中,该目的地可以是聚合或其他缓冲器(为了便于说明而未在图1中示出),可以从所述目的地向一个或多个目的地提供数据。注意到,实施例还可以在多个发送器将消息发送到不同目的地的系统中使用。
在图1所示的实施例中,仲裁系统100包括多个串联连接的仲裁器1100-1102。应当理解,尽管出于说明的目的示出了三个仲裁器,但是本发明的范围不限于该方面,并且在特定实施例中可以存在多得多的串联连接的仲裁器。如进一步示出的,每个仲裁器110耦合到一个或多个发送器1200-1202。类似地,虽然示出了四个发送器,但是在特定实施例中可以存在多得多的发送器。注意到,仲裁器1101耦合到多个发送器1201和1202,以及进一步从下游仲裁器1102接收输入。在如图1所示的布置中,仲裁器1100是最上游仲裁器,并且可以被配置为直接连接到目的地,例如缓冲器。反过来,仲裁器1102是最下游的仲裁器,而仲裁器1101在这些其他两个仲裁器之间耦合。作为示例,发送器120可以对应于处理器或SoC的给定知识产权(IP)块。在某些实施例中,一些发送器120可以是核心(例如,同构或异构核心)。反过来,其他发送器120可以对应于一个或多个图形引擎。更进一步,附加的发送器120可以对应于SoC的其他IP块,例如专门的媒体处理器、图像处理器等。
在任何情况下,每个仲裁器110被配置为接收传入信息,例如采用来自一个或多个源的数据分组的形式。除了接收数据之外,仲裁器110还接收与每个发送器120被配置为与分组(或其一部分)一起发送的数据相关联的TxID。如本文描述的,实施例可以至少部分地基于TxID并且更具体而言至少部分地基于TxID中的状态转换来在各种仲裁器110中执行仲裁。
出于说明的目的,仲裁器110被示出为包括内部选择逻辑单元115,其在实施例中可以至少部分地使用复用器来实现。当然,应当理解,仲裁器110还包括附加的仲裁逻辑单元,其可以被实现为硬件、软件和/或固件的组合,以执行本文描述的基于TxID的仲裁。在图1的布置中,注意到在一些情况下,最下游仲裁器1102可能未接收到选择逻辑单元1152的第二输入(被标识为数据总线)的有效输入。如此,选择逻辑单元1152可以被配置为总是选择由发送器1203呈现的数据,只要这样的数据是传入的。
分布式仲裁系统100可以用于仲裁对互连130的访问。在实施例中,互连130可以是多个代理(例如,图1所示的发送器)耦合到的任何类型的互连,例如数据总线等。虽然在图1的实施例中,TxID信息经由单独的互连(其可以是单线)传送,但是应当理解本发明的范围不限于此。例如,在其他实施例中,TxID信息可以在互连130的一个或多个位中被编码(并且可以作为附加到由发送器120发送的数据分组的一个或多个位来传送)。应当理解,虽然在图1的实施例中以该高级别示出,但是许多变型和替代是可能的。
如以上讨论的,每个发送器(和仲裁器)与对应TxID相关联地传送数据分组或其他数据组块。分布式仲裁系统的仲裁器正是使用这些TxID来指示给定仲裁器切换到另一信息源的位置。现在参考图2,示出了来自给定源的具有相关联的TxID的多个数据通信的图示。如图2所示,数据流200由多个分组2100-2104形成。注意到,可以以可变大小传送分组。如此,分组2100-2102和2104是可以在单个时钟周期中传送的单宽分组。反过来,分组2103是双宽分组,其需要两个周期来传送。例如,在实施例中,单宽分组可以是64位、128位或一些其他位宽,而双宽分组转而可以是128位、256位或一些其他位宽。在任何情况下,发送分组210的信息源将给定的TxID2200-2204与这些分组相关联。注意到,TxID值的转换针对每个单独的分组发生,如图2中用箭头示出的向仲裁器指示将仲裁切换到下一发送器的位置。每个发送器可以针对每个新分组切换该TxID。TxID位用于指示数据转换和仲裁器中的仲裁点。
注意到,如果在特定时间段期间需要较高的优先级,或者存在确保两个或更多个分组到达目的地(中间没有其他分组)的需要,则发送器可以用相同的TxID值标记两个或更多个分组。因此,这样的共同标记的分组可以一起一直传送到目的地。注意到,虽然本文关于基于分组的数据通信描述了实施例,但是应当理解,本发明的范围不限于此,并且本文描述的基于TxID的仲裁不论数据的发送方式而等同地应用,只要发送器被配置为与不同的数据块相关联地切换TxID。
现在参考图3,示出了根据本发明另一实施例的分布式仲裁系统的图示的框图。如图3所示,仲裁器系统300包括多个串联连接的仲裁器3100-3102。进一步注意到,上游仲裁器3102耦合到另一实体350。在不同的实施例中,实体350可以是存储缓冲器,例如聚合或输出缓冲器。在其他情况下,实体350可以是另一仲裁器,例如,最上游仲裁器。
如进一步示出的,还存在多个发送器3200-3202。与先前图1的讨论一样,仲裁系统300针对互连330执行仲裁。注意到,仲裁次序没有意义,只要其被一致地保持。例如,在图3中,仲裁器3101可以如下地在源之间进行仲裁:发送器3201、先前仲裁器3100并且返回到发送器3200。以仲裁器3100开始仲裁提供相同的公平性结果。在该实施例中,除了数据和相关联的TxID的通信之外,每个发送器320还可以被配置为连同数据发送有效指示符。另外,每个仲裁器310将控制信号(在本文中被称为读使能信号(ReadEn))提供给对应的发送器320。在实施例中,该读使能信号提供用于控制对应的发送器320以当对应的仲裁器310内的输入缓冲器已满时阻止数据通信的指示,以使得没有任何数据丢失。因此,发送器320可以被配置为与对应的有效指示符和TxID进行数据通信,只要不存在有效的ReadEn信号即可。相反,在有效的ReadEn信号的情况下,可以阻止对应的发送器320将另外的数据传送到相关的仲裁器310。
如进一步示出的,出于相同的目的,可以贯穿分布式仲裁器向下游发送类似的ReadEn或缓冲器满信号。在其他方式中,分布式仲裁系统300通常可以如以上关于图1的仲裁系统100描述的那样操作。应当理解,虽然在图3的实施例中以该高级别示出,但是许多变型和替代是可能的。
现在参考图4,示出了根据实施例示出仲裁器的操作的框图。如图4所示,仲裁器400包括仲裁电路415、第一队列或缓冲器430和第二队列或缓冲器440。在各种实施例中,第一队列430可以对应于输入队列,其被配置为接收传入数据,例如以从耦合到仲裁器415的一个或多个发送器接收的分组的形式。反过来,第二队列440可以被配置为环缓冲器(ringbuffer)或转发缓冲器,以存储传入数据,例如以从下游仲裁器接收的分组的形式。
如示出的,队列430和440二者都耦合到仲裁电路415。在实施例中,仲裁电路415可以包括复用器和控制逻辑单元,其被配置为从队列430和440接收信息并从核心之一中选择给定条目以输出到目的地。如图4中进一步示出的,存在目的地存储单元450。应当理解,在许多实施例中,目的地存储单元450可以在给定分布式仲裁系统的仲裁器400的外部。例如,目的地缓冲器450可以与上游仲裁器的转发缓冲器相对应。或者它可以是目的地缓冲器,例如聚合器或输出缓冲器。
图4进一步详述了仲裁器400的操作。更具体而言,队列430和440中的每个队列被示出具有多个条目。为了便于讨论,存储例如给定分组的数据和相关联的信息的每个条目包括用于存储分组标识符(分组ID)的第一字段(在队列430和440的左侧列中(列举为列432和442))。另外,每个条目还包括用于存储相关联的TxID的第二字段(在列434和444中)。当然,包括相关联的数据和其他信息的附加信息可以存储在条目中。至少部分地基于对应的TxID,仲裁电路415被配置为选择适当的分组以输出到目的地缓冲器450。并且在这样做时,仲裁器400以完全平衡的方式进行操作,其中,得到了公平性并且没有分组或源挨饿。
在一个实施例中,队列430和440可以被实现为先进先出(FIFO)缓冲器。如此,数据分组可以从这些队列的顶部处开始被填充到缓冲器430和440的条目中(例如,事务1和A是存储在这些队列中的相应的第一分组)。注意到,关于第一队列430中的条目,每个分组标识符以交替方式(即,图4中的010101次序)与TxID相关联。但在第二队列440中,条目与多个分组一起存储在与相同TxID相关联的行中(即,图4中的001100次序)。这可能是该情况,这是由于如以上讨论的,第二队列440是转发缓冲器,以使得其中的条目在被放入队列440中之前已经经历了至少一个仲裁阶段。
仲裁电路415可以通过首先从第一队列430中选择条目(即,分组ID为1且TxID为0的第一条目)来操作。当然,在其他示例中,来自第二队列440的条目可以是第一个被选择的。如示出的,目的地缓冲器450中的第一条目是该第一所选择的分组。此后,由于公共TxID(即,分组A和B,二者的TxID都为0),仲裁电路415继而从第二队列440中选择两个分组。然后,在第二队列440的下一条目中的TxID的状态改变时,仲裁电路415接着从队列430中选择分组2(其TxID为1)。并且因为第一队列430中的下一分组(即,TxID为0的分组3)在其TxID中具有状态转变,所以下一所选择的分组是来自第二队列440的分组C。
发生类似的操作以在队列430和440之间以仲裁的方式向目的地缓冲器450提供数据。用图4所示的实施方式,仲裁器电路415可以通过在两个队列的数据之间切换来使用该TxID来在其直接耦合的发送器与下游数据之间仲裁数据。在仲裁器电路415中执行的仲裁中,三个时隙中的一个时隙是从队列430提供的,并且两个时隙是从队列440提供的,以得到平衡的仲裁,而无需先验地知道在队列440之前可以存在连接在总线上的发送器(例如,从下游仲裁器接收其输入)。因此,为了正确地设置公平性,仲裁器不需要知道活动的发送器的数量。在向队列430馈送数据的发送器不具有有效数据并且队列430变空的情况下,从队列440发送分组而不丢失时隙,以得到100%的带宽利用率。因此,实施例使用简单的逻辑单元提供了具有完美性能的简单且干净的仲裁解决方案。当然,虽然出于讨论和表示的目的而用这些示例性分组和TxID进行示出,但是在其他实施例中可以出现许多变型和其他可能的仲裁结果。
现在参考图5,示出了根据本发明另一实施例的分布式仲裁系统的框图。如图5所示,分布式仲裁系统500包括多个串联连接的仲裁器5100-5102。每个仲裁器510耦合到多个发送器5200-5202中的对应的发送器。尽管本发明的范围在此方面不受限制,但是在实施例中,发送器5200和5201可以是处理器或其他SoC的核心(例如,有序核心、无序核心或其组合)。同样在该实施例中,发送器5202可以是图形引擎。在一些实施例中,例如在这些发送器中的一个或多个发送器被配置为以独立的频率操作的情况下,发送器可以经由介入时钟交叉电路耦合到对应的仲裁器510,例如气泡发生器先进先出缓冲器(BGF)或其他FIFO或其他时钟交叉机制。如图5中进一步示出的,与最上游仲裁器相对应的仲裁器5100耦合到目的地队列550,所述目的地队列550可以被实现为聚合器队列,以将传入的分组和对应的信息存储在多个条目5520-552n中。从那里,分组可以被路由到一个或多个目的地。
仍然参考图5,注意到,每个仲裁器510包括多个队列。具体而言,每个仲裁器510包括第一队列5120-5122,在本文中还被称为切片队列(slice queue),这是因为这是专用于接收来自对应发送器的传入分组的队列。另外,每个仲裁器510还包括第二队列5140-5142,在本文中被称为环队列(ring queue)或转发队列,这是因为该队列与互连和与下游仲裁器的交互相关联。
如进一步示出的,每个仲裁器510包括仲裁电路5150-5152,其被示意性地表示为复用器。注意到,每个仲裁电路515的输出转而耦合到下一较高仲裁器的对应第二队列514。并且仲裁电路5150将其输出提供给聚合器队列550。反过来,没有有效输入被提供给环队列5142,这是因为控制被固定以用零值填充该队列,这是由于在该特定配置中,没有另外的下游仲裁器。当然,尽管在图5的实施例中以该高级别示出,许多变型和替代是可能的。
图6示出了图5的分布式仲裁电路的操作,其中,条目用传入分组填充,并且仲裁被执行以使得分组能够以完全平衡和公平的方式行进通过分布式仲裁系统以最终在聚合器队列550中。更具体而言,图6示出了在多个仲裁周期之后的操作的细节,以使得来自发送器5200-5202中的每个发送器的有效数据已到达聚合器队列550。如看到的,通过利用TxID中的转换的使用来实现完全的平衡和公平以确保来自源中的每个源的相当数量的分组被传送通过分布式仲裁系统500。注意到,关于图6,环队列5141中的所有条目都来自发送器5202(经由切片队列5122),这是因为不存在通过环队列5142的方式提供的分组。还注意到,切片队列512中的每个切片队列被配置为仅接收并存储来自其对应的发送器520的分组。注意到,如果多个发送器耦合到给定仲裁器510,则对于每个发送器将存在给定的切片队列。并且仲裁器将被配置为以与处理切片队列与环队列之间的仲裁相同的方式服务这些多于两个的队列(即,当在队列之一内切换TxID时,其切换到下一队列)。
最后,注意到环队列5140存储来自发送器5201和5202的分组,并且对应的仲裁电路5150在这些分组与存储在切片队列5120中的对应分组之间执行仲裁。注意到,在仲裁器5101的输出处,TxID位每两个分组(一个用于仲裁器5102,一个用于发送器5201)进行切换。如图7中看到的,仲裁器5100的输出是100%平衡的。
图7示出了如本文描述的分布式仲裁系统中的另外的仲裁操作。注意到,图7示出了当对应的分组已成功地从对应的切片队列提供(到上游环队列或聚合器队列)时,可以用新的分组信息来盖写切片队列中的对应条目。并且当给定切片队列中不存在可用的存储单元时(这是因为没有任何存储的分组信息已被提供给另一队列),发出已满信号,如图7所示(即,从仲裁器5100发送到发送器5200的已满信号)。响应于接收到该已满信号,发送器5200将不再将任何另外的分组发送到仲裁器5100中,直到该信号被解除断言(de-assert)。应当理解,虽然在图6和图7中用这些代表性状态进行示出,可以发生这些状态之间的许多附加的仲裁操作。
现在参考图8,示出了根据本发明的实施例的方法的流程图。更具体而言,图8的方法800可以通过分布式仲裁系统的给定仲裁器的仲裁逻辑单元来执行。如此,方法800可以由硬件、软件和/或固件或其组合来执行。更具体而言,图8的方法800详述了用于控制仲裁器的第一(或切片)队列的方法。如示出的,方法800开始于从至少一个发送器接收仲裁器中的一个或多个分组和对应的TxID(框810)。如以上描述的,在一些实施例中,这样的分组可以包括各种信息,包括例如分组标识符、数据和TxID,其可以针对每个分组进行切换。控制接下来传递给框820,其中,分组和对应的TxID可以存储在第一队列的条目中。在实施例中,第一队列可以实现为FIFO,以使得该分组被存储在第一可用条目中。当然,应当理解,附加信息可以存储在条目中。接下来在菱形830处确定第一队列是否已满。该确定可以基于是否存在任何可用条目(空条目或可以被盖写的条目,这是因为它们的内容已经被选择并从仲裁器输出,如例如由队列的读取指针、有效指示符等指示的)。如果第一队列未满,则控制传递回到框810以进行另外的接收和处理操作。
相反,如果在菱形830处确定第一队列已满,则控制传递到框840,其中,可以将已满信号(例如,采用ReadEn信号形式)发送到耦合的发送器以阻止它们将任何另外的分组发送到仲裁器中,直到该信号被解除断言。因此,操作接下来行进到菱形850以确定是否已从第一队列读取至少一个分组并将其发送到例如上游仲裁器。该确定可以基于例如读取指针的移动。如果是,这意味着第一队列中现在存在至少一个可用条目。如此,控制传递到框860,其中,该已满信号可以被释放(例如,被解除断言),以使得一个或多个发送器可以再次将信息发送到仲裁器中。应当理解,虽然在图8的实施例中以该高级别示出,许多变型和替代是可能的。
注意到,方法800在仲裁器的特定实施例中被示出,所述仲裁器耦合在下游仲裁器与上游仲裁器之间。应当理解,方法通常等同地应用于其他仲裁器,但某些变型是可能的。例如,最上游仲裁器不向另一仲裁器发送输出。类似地,最下游仲裁器不从另一仲裁器接收输入。
现在参考图9,示出了根据本发明另一实施例的方法的流程图。更具体而言,图9的方法900可以由分布式仲裁系统的给定仲裁器的仲裁逻辑单元(例如,如用于执行方法800逻辑单元的附加仲裁逻辑单元)执行。方法900详述了用于控制仲裁器的第二(或转发)队列的方法。如示出的,方法900开始于从下游仲裁器接收仲裁器中的一个或多个分组和对应的TxID(框910)。如此,这些分组已经在该下游仲裁器中行进通过了至少一级仲裁。控制接下来传递到框920,其中,分组和对应的TxID可以存储在第二队列的条目中,例如单独的FIFO。接下来,在菱形930处确定第二队列是否已满,例如基于是否存在任何可用条目。如果否,则控制传递回到框910以进行另外的接收和处理操作。
相反,如果在菱形930处确定第一队列已满,则控制传递到框940,其中,可以将例如采用ReadEn信号形式的已满信号发送到下游仲裁器,以阻止其将任何另外的分组发送到仲裁器中,直到该信号被解除断言。因此,操作接下来行进到菱形950以确定是否已从第二队列读取至少一个分组并将其发送到例如上游仲裁器。如果是,则控制传递到框960,其中,可以释放该已满信号,以使得下游仲裁器可以再次将信息发送到仲裁器中。应当理解,虽然在图9的实施例中以该高级别示出,许多变型和替代是可能的。
现在参考图10,示出了根据本发明另一实施例的方法的流程图。如图10所示,方法1000可以由仲裁器的仲裁逻辑单元执行,例如与关于图8和图9的方法的仲裁逻辑单元和仲裁器相同的仲裁逻辑单元和仲裁器。如示出的,方法1000在框1010处开始于通过从两个队列中的给定的一个队列中选择并输出第一分组。应当理解,对于要发送的第一分组(例如,存在于队列之一的第一条目中),选择哪个分组并不重要并且在任一情况下都继续进行公平仲裁。注意到,与选择和输出该第一分组相关联地,可以更新所选择的队列的读取指针以指向队列中的下一条目。
仍然参考图10,控制接下来传递到菱形1020以确定所选择的队列的该下一条目是否与先前分组具有相同的TxID。如果是该情况,指示两个条目都是相同分组的(例如,大分组的多个部分),或者根据在其中给定发送器被提供较高优先级或带宽的特定优先级规则,控制传递到框1030。注意到,具有相同TxID的多个条目还可以指示这些条目是由于先前的下游仲裁引起的。在框1030处,可以选择并输出该下一条目(其中,该下一条目存储与先前分组具有相同的对应TxID的分组)。控制接着循环回到菱形1020。
否则,如果确定所选择的队列的下一条目不与先前分组具有相同的TxID值,则控制代替地传递到框1040。在框1040处,可以选择并输出另一队列的分组(例如,该队列的顶部分组)。注意到,该分组可以与先前分组具有相同的TxID值,或者它可以具有不同的值。在任一情况下,这是要从另一队列中选择的下一分组。然后,控制传递回到框1020,以确定该另一队列中的下一条目是否具有相同的TxID值。如此,方法1000针对仲裁器中执行的所有仲裁迭代地行进,以确保仲裁以公平和平衡的方式发生。应当理解,虽然在图10的实施例中以该高级别示出,许多变型和替代是可能的。例如,在给定队列为空的情况下,即使条目切换的TxID,仲裁器也可以服务于单个缓冲器。这样的情况可能如图5-7中的仲裁器5152(因为队列5142不存储任何数据)中所示的那样发生或者当给定发送器停止发送数据时发生。
实施例可以用于许多通信应用中,并且可以适用于涉及经由单线仲裁控制使用单个端口/总线的多于一个发送器的任何种类的通信协议。尽管本发明的范围不限于此,但是分布式仲裁系统可以在调试跟踪结构中被实现,所述调试跟踪结构可以耦合到处理器或其他SoC的多个IP块。类似地,实施例可以与其他结构和互连一起使用,例如用于封闭机箱调试的结构、高速跟踪接口、以及诸如管芯上和/或管芯间互连(例如,用于管芯上逻辑分析器的)之类的其他结构和互连。
实施例可以以各种各样的互连结构实现。参考图11,示出了由互连一组组件的点对点链路组成的结构的实施例。系统1100包括耦合到控制器集线器1115的处理器1105和系统存储器1110。处理器1105包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协处理器或其他处理器。处理器1105通过前端总线(FSB)1106耦合到控制器集线器1115。在一个实施例中,FSB 1106是串行点对点互连。在另一实施例中,链路1106包括符合不同互连标准的并行串行、差分互连架构(a parallel serial,differential interconnectarchitecture),并且可以包括如本文描述的分布式仲裁系统。
系统存储器1110包括任何存储器设备,例如随机存取存储器(RAM)、非易失性(NV)存储器或可由系统1100中的设备访问的其他存储器。系统存储器1110通过存储器接口1116耦合到控制器集线器1115。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口和动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器1115是PCIe互连层级中的根集线器、根联合体或根控制器。控制器集线器1115的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥和根控制器/集线器。通常,术语芯片组指的是两个物理上分离的控制器集线器,即耦合到互连控制器集线器(ICH)的存储器控制器集线器(MCH)。注意到,当前系统经常包括与处理器1105集成的MCH,而控制器1115以与以下描述的方式类似的方式与I/O设备通信。在一些实施例中,可选地通过根联合体1115支持对等路由。
这里,控制器集线器1115通过串行链路1119耦合到交换机/桥1120。输入/输出模块1117和1121(其还可以被称为接口/端口1117和1121)包括/实现分层协议栈,以提供控制器集线器1115与交换机1120之间的通信。在一个实施例中,多个设备能够耦合到交换机1120。
交换机/桥1120将来自设备1125的分组/消息向上游(即,朝根联合体顺着层级向上)路由到控制器集线器1115,并且向下游(即,从远离根控制器顺着层级向下)从处理器1105或系统存储器1110路由到设备1125。在一个实施例中,交换机1120被称为多个虚拟PCI到PCI桥设备的逻辑组装件。设备1125包括要耦合到电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、附加卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、Firewire设备、通用串行总线(USB)设备、扫描仪和其他输入/输出设备,并且作为示例这些设备或组件可经由I2C总线耦合。通常在PCIe行话中,这样的设备被称为端点。尽管没有具体示出,但是设备1125可以包括PCIe到PCI/PCI-X桥,以支持传统或其他版本的PCI设备。PCIe中的端点设备经常被分类为传统、PCIe或根联合体集成端点。
图形加速器1130还通过串行链路1132耦合到控制器集线器1115。在一个实施例中,图形加速器1130耦合到MCH,所述MCH耦合到ICH。然后交换机1120以及因此I/O设备1125耦合到ICH。I/O模块1131和1118还实现分层协议栈,以在图形加速器1130和控制器集线器1115之间进行通信。图形控制器或图形加速器1130本身可以集成在处理器1105中。
接下来转向图12,描绘了根据实施例的SoC设计的实施例。作为特定说明性示例,SoC 1200可以被配置为用于插入在范围从便携式设备到服务器系统的任何类型的计算设备中。这里,SoC 1200包括2个核心1206和1207。核心1206和1207可以符合指令集架构,例如架构的基于酷睿TM的处理器、美国超威半导体公司(AMD)处理器、基于MlPS的处理器、基于ARM的处理器设计、或其客户、以及它们的许可证持有者或采用者。核心1206和1207耦合到高速缓存控制单元1208,所述高速缓存控制单元1208与总线接口单元1209和L2高速缓存1210相关联,以经由互连1212与系统1200的其他部分通信。在实施例中,互连1212可以包括分布式仲裁系统1213,如本文描述的。
互连1212将通信通道提供给其他组件,例如用于与SIM卡相接的用户识别模块(SIM)1230、用于保存引导代码以供核心1206和1207执行以初始化和引导SoC 1200的引导ROM 1235、用于与外部存储器(例如,DRAM 1260)相接的SDRAM控制器1240、用于与非易失性存储器(例如,闪存1265)相接的闪存控制器1245、用于与外围设备相接的外围控制器1250(例如,eSPI接口)、用于显示和接收输入(例如,触摸启用的输入)的视频编解码器1220和视频接口1225、用于执行图形相关计算的GPU 1215等。这些互连/接口中的任何互连/接口可以包含本文描述的方面,包括分布式仲裁。此外,系统示出了用于通信的外围设备,例如蓝牙模块1270、3G调制解调器1275、GPS 1280和WiFi 1285。系统中还包括电力控制器1255。
现在参考图13,示出了根据本发明的实施例的系统的框图。如图13所示,多处理器系统1300包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。如图13所示,处理器1370和1380中的每个处理器可以是许多核的处理器,包括代表性的第一和第二处理器核心(即,处理器核心1374a和1374b以及处理器核心1384a和1384b)。第一和第二处理器1370和1380可以包括如本文描述的一个或多个分布式仲裁系统。
仍然参考图13,第一处理器1370还包括存储器控制器集线器(MCH)1372和点对点(P-P)接口1376和1378。类似地,第二处理器1380包括MCH 1382和P-P接口1386和1388。如图13所示,MCH 1372和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,所述存储器可以是本地附接到相应处理器的系统存储器(例如,DRAM)的部分。第一处理器1370和第二处理器1380可以分别经由P-P互连1362和1364耦合到芯片组1390。如图13所示,芯片组1390包括P-P接口1394和1398。
此外,芯片组1390包括通过P-P互连1339将芯片组1390与高性能图形引擎1338耦合的接口1392。如图13所示,各种输入/输出(I/O)设备1314可以耦合到第一总线1316,以及将第一总线1316耦合到第二总线1320的总线桥1318。在一个实施例中,各种设备可以耦合到第二总线1320,所述各种设备包括例如键盘/鼠标1322、通信设备1326和数据存储单元1328,所述数据存储单元1328例如磁盘驱动器或其他可以包括代码1330的大容量存储设备。此外,音频I/O 1324可以耦合到第二总线1320。
下面的示例涉及另外的实施例。
在示例中,一种分布式仲裁系统包括:第一发送器,其用于输出第一数据以及与所述第一数据相关联的发送标识符;以及第一仲裁器,其耦合到所述第一发送器,以接收所述第一数据并且至少部分地基于所述发送标识符的状态的改变来在所述第一数据与来自耦合到所述第一仲裁器的第二仲裁器的第二数据之间进行仲裁。
在示例中,所述第一仲裁器包括:第一队列,其用于存储所述第一数据;以及第二队列,其用于存储所述第二数据。
在示例中,所述第一仲裁器还包括选择逻辑单元,所述选择逻辑单元用于基于与第一分组相关联的所述发送标识符的所述状态的所述改变来选择和输出具有所述第一数据的至少一部分的所述第一分组。
在示例中,所述选择逻辑单元此后至少部分地基于与第二分组关联的发送标识符的状态的改变来选择和输出具有所述第二数据的至少一部分的所述第二分组,其中,与所述第一分组相关联的所述发送标识符和与所述第二分组相关联的所述发送标识符具有相同的值。
在示例中,所述第二仲裁器包括相对于所述第一仲裁器的下游仲裁器,并且其中,所述第二仲裁器在来自耦合到所述第二仲裁器的另一发送器的数据与来自耦合到所述第二仲裁器的另一仲裁器的数据之间进行仲裁,并且将所述第二数据发送到所述第一仲裁器的所述第二队列。
在示例中,所述第一队列包括多个条目,每个所述条目具有:用于存储分组标识符的分组标识符字段、用于存储分组的数据的数据字段、以及用于存储与所述分组相关联的发送标识符的发送标识符字段。
在示例中,还包括耦合到所述第一仲裁器的输出缓冲器,其中,所述第一仲裁器将所选择的数据输出到所述输出缓冲器以便传送到一个或多个目的地。
在示例中,所述第一仲裁器在没有信用信息或固定分配的情况下在所述第一数据与所述第二数据之间进行仲裁。
在示例中,所述第一发送器输出以下各项:第一分组的第一部分,以及具有第一值的发送标识符;所述第一分组的第二部分,以及具有所述第一值的所述发送标识符;以及第二分组的至少一部分,以及具有第二值的所述发送标识符。
在示例中,所述第一发送器适于以第一速率切换所述发送标识符,并且第二发送器适于以第二速率切换与由所述第二发送器输出的第三数据相关联的发送标识符,以控制分配给所述第一发送器和所述第二发送器的所述互连的带宽。
在另一示例中,一种方法包括:将来自第一源的第一数据存储在仲裁器的第一缓冲器中,所述第一数据与第一标识符相关联;将来自第二源的第二数据存储在所述仲裁器的第二缓冲器中,所述第二数据与第二标识符相关联;以及至少部分地基于所述第一标识符的状态的转变来选择所述第一数据以便从所述仲裁器输出。
在示例中,所述方法还包括:如果第三数据与具有与关联于所述第一数据的所述第一标识符相同的状态的第一标识符相关联,则从所述第一缓冲器中的所述第一源选择所述第三数据,以便在所述第一数据之后从所述仲裁器输出。
在示例中,所述方法还包括:如果第四数据与具有与关联于所述第一数据的所述第一标识符相同的状态的第二标识符相关联,则从所述第二缓冲器中的所述第二源选择所述第四数据,以便在所述第一数据之后从所述仲裁器输出。
在示例中,所述方法还包括:从耦合到所述仲裁器的第一核心接收所述第一数据,所述第一源包括所述第一核心;以及从耦合到所述仲裁器的第三仲裁器接收所述第二数据,所述第二源包括所述第三仲裁器。
在示例中,所述方法还包括在没有固定分配设置或信用信息的情况下在所述第一数据与所述第二数据之间进行仲裁。
在示例中,所述方法还包括:如果所述第一缓冲器已满,则阻止所述第一源将另外的数据发送到所述仲裁器。
在示例中,所述方法还包括:将所述第一数据输出到耦合到所述仲裁器的第二仲裁器;以及从所述第二仲裁器接收控制信号,并且不将附加数据输出到所述第二仲裁器,直到所述控制信号被解除断言。
在另一示例中,一种包括计算机可读指令计算机可读存储介质执行以上示例中的任何示例所述的方法。
在另一示例中,包括数据的计算机可读介质将由至少一个机器用于制造用于执行以上示例中的任何示例的方法的至少一个集成电路。
在另一示例中,一种装置包括用于执行以上示例中的任何示例所述的方法的单元。
在另一示例中,一种集成电路包括:第一核心;第二核心;图形引擎;互连,其耦合到所述第一核心、所述第二核心和所述图形引擎;以及分布式仲裁系统,其与所述互连相关联。所述分布式仲裁系统可以包括:第一仲裁器,其耦合到至少所述第一核心,以至少部分地基于与第一信息块相关联的第一指示符的状态的转变来从第一多个信息块中选择从所述第一核心发送的所述第一信息块,并且将所述第一信息块发送到第二仲裁器;以及第二仲裁器,其耦合到至少所述第二核心,以至少部分地基于与第二信息块相关联的第二指示符的状态的转变来从第二多个信息块中选择从所述第一仲裁器发送的所述第二信息块,并且将所述第二信息块发送到目的地。
在示例中,所述第一核心输出所述第一信息块的第一部分以及具有第一状态的所述第一指示符,输出所述第一信息块的第二部分以及具有所述第一状态的所述第一标识符,并且输出第三信息块的至少一部分以及具有第二状态的所述第一标识符。
在示例中,集成电路还包括第三核心,其中,所述第二仲裁器还耦合到所述第三核心,所述第二仲裁器包括:用于存储来自所述第三核心的第三信息块的第一队列、用于存储来自所述第一仲裁器的第四信息块的第二队列、以及仲裁电路,所述仲裁电路用于基于与关联于所述第四信息块中的一个第四信息块的第四指示符的所述第三信息块中的一个第三信息块相关联的第三指示符的公共状态来选择以输出所述第三信息块中的所述一个第三信息块,然后输出所述第四信息块中的所述一个第四信息块。
在另一示例中,一种用于分布式仲裁的装置包括:第一发送器单元,其用于输出第一数据和与所述第一数据相关联的发送标识符;以及第一仲裁器单元,其耦合到所述第一发送器,以用于接收所述第一数据并且至少部分地基于所述发送标识符的状态的改变来在所述第一数据与来自耦合到所述第一仲裁器单元的第二仲裁器单元的第二数据之间进行仲裁。
在示例中,第一仲裁器单元包括:第一队列单元,其用于存储所述第一数据;以及第二队列单元,其用于存储所述第二数据。
在示例中,所述第一仲裁器单元还包括选择单元,其用于基于与第一分组相关联的所述发送标识符的所述状态的改变来选择和输出具有所述第一数据的至少一部分的所述第一分组。
在示例中,所述选择单元用于至少部分地基于与第二分组相关联的发送标识符的状态的改变来选择和输出具有所述第二数据的至少一部分的所述第二分组,其中,与所述第一分组相关联的所述发送标识符和与所述第二分组相关联的所述发送标识符具有相同的值。
在示例中,所述第二仲裁器单元相对于第一仲裁器单元在下游,并且其中,所述第二仲裁器单元用于在来自耦合到所述第二仲裁器单元的另一发送器单元的数据与来自耦合到所述第二仲裁器单元的另一仲裁器单元的数据之间进行仲裁,并且将所述第二数据发送到所述第一仲裁器单元的所述第二队列单元。
应当理解,以上示例的各种组合是可能的。
注意到,术语“电路”和“电路系统”在本文中可互换地使用。如本文中使用的,这些术语和术语“逻辑”用于单独的或任意组合的模拟电路、数字电路、硬连线电路、可编程电路、处理器电路、微控制器电路、硬件逻辑电路、状态机电路和/或任何其他类型的物理硬件组件。实施例可以用于许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或者包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上被执行而使得设备执行本文描述的方法和技术中的一种或多种方法和技术。
实施例可以以代码实现,并且可以存储在其上存储有指令的非暂时性存储介质上,所述指令可以用于对系统进行编程以执行指令。实施例还可以用数据实现,并且可以存储在非暂时性存储介质上,其如果由至少一个机器使用,则使得至少一个机器制造用于执行一个或多个操作的至少一个集成电路。更进一步的实施例可以用计算机可读存储介质实现,所述计算机可读存储介质包括信息,所述信息在被制造成SoC或其他处理器时将配置SoC或其他处理器以执行一个或多个操作。存储介质可以包括但不限于任何类型的盘(disk),包括软盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘、诸如只读存储器(ROM)之类的半导体器件、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或适合于存储电子指令的任何其他类型的介质。
虽然已经关于有限数量的实施例描述了本发明,但是本领域技术人员将从中领会到许多修改和变型。所附权利要求旨在覆盖落入本发明的真实精神和范围内的所有这样的修改和变型。
Claims (22)
1.一种用于互连的分布式仲裁系统,包括:
第一发送器,其用于输出第一数据以及与所述第一数据相关联的发送标识符;以及
第一仲裁器,其耦合到所述第一发送器,以接收所述第一数据并且至少部分地基于所述发送标识符的状态的改变来在所述第一数据与来自耦合到所述第一仲裁器的第二仲裁器的第二数据之间进行仲裁,其中,所述第一仲裁器包括:第一队列,其用于存储所述第一数据;以及第二队列,其用于存储所述第二数据。
2.如权利要求1所述的分布式仲裁系统,其中,所述第一仲裁器还包括选择逻辑单元,所述选择逻辑单元用于基于与第一分组相关联的所述发送标识符的所述状态的所述改变来选择和输出具有所述第一数据的至少一部分的所述第一分组。
3.如权利要求2所述的分布式仲裁系统,其中,所述选择逻辑单元此后至少部分地基于与第二分组关联的发送标识符的状态的改变来选择和输出具有所述第二数据的至少一部分的所述第二分组,其中,与所述第一分组相关联的所述发送标识符和与所述第二分组相关联的所述发送标识符具有相同的值。
4.如权利要求1所述的分布式仲裁系统,还包括所述第二仲裁器,其中,所述第二仲裁器包括相对于所述第一仲裁器的下游仲裁器,并且其中,所述第二仲裁器在来自耦合到所述第二仲裁器的另一发送器的数据与来自耦合到所述第二仲裁器的另一仲裁器的数据之间进行仲裁,并且将所述第二数据发送到所述第一仲裁器的所述第二队列。
5.如权利要求1所述的分布式仲裁系统,其中,所述第一队列包括多个条目,每个所述条目具有:用于存储分组标识符的分组标识符字段、用于存储分组的数据的数据字段、以及用于存储与所述分组相关联的发送标识符的发送标识符字段。
6.如权利要求1所述的分布式仲裁系统,还包括耦合到所述第一仲裁器的输出缓冲器,其中,所述第一仲裁器将所选择的数据输出到所述输出缓冲器以便传送到一个或多个目的地。
7.如权利要求1所述的分布式仲裁系统,其中,所述第一仲裁器在没有信用信息或固定分配的情况下在所述第一数据与所述第二数据之间进行仲裁。
8.如权利要求1所述的分布式仲裁系统,其中,所述第一发送器输出以下各项:
第一分组的第一部分,以及具有第一值的发送标识符;
所述第一分组的第二部分,以及具有所述第一值的所述发送标识符;以及
第二分组的至少一部分,以及具有第二值的所述发送标识符。
9.如权利要求1所述的分布式仲裁系统,其中,所述第一发送器适于以第一速率切换所述发送标识符,并且第二发送器适于以第二速率切换与由所述第二发送器输出的第三数据相关联的发送标识符,以控制分配给所述第一发送器和所述第二发送器的所述互连的带宽。
10.一种用于仲裁的方法,包括:
将来自第一源的第一数据存储在仲裁器的第一缓冲器中,所述第一数据与第一标识符相关联;
将来自第二源的第二数据存储在所述仲裁器的第二缓冲器中,所述第二数据与第二标识符相关联;
至少部分地基于所述第一标识符的状态的转变来选择所述第一数据以便从所述仲裁器输出;以及
如果第三数据与具有与关联于所述第一数据的所述第一标识符相同的状态的第一标识符相关联,则从所述第一缓冲器中的所述第一源选择所述第三数据,以便在所述第一数据之后从所述仲裁器输出。
11.如权利要求10所述的方法,还包括:如果第四数据与具有与关联于所述第一数据的所述第一标识符相同的状态的第二标识符相关联,则从所述第二缓冲器中的所述第二源选择所述第四数据,以便在所述第一数据之后从所述仲裁器输出。
12.如权利要求10所述的方法,还包括:
从耦合到所述仲裁器的第一核心接收所述第一数据,所述第一源包括所述第一核心;以及
从耦合到所述仲裁器的第三仲裁器接收所述第二数据,所述第二源包括所述第三仲裁器。
13.如权利要求10所述的方法,还包括在没有固定分配设置或信用信息的情况下在所述第一数据与所述第二数据之间进行仲裁。
14.如权利要求10所述的方法,还包括:如果所述第一缓冲器已满,则阻止所述第一源将另外的数据发送到所述仲裁器。
15.如权利要求10所述的方法,还包括:
将所述第一数据输出到耦合到所述仲裁器的第二仲裁器;以及
从所述第二仲裁器接收控制信号,并且不将附加数据输出到所述第二仲裁器,直到所述控制信号被解除断言。
16.一种计算机可读存储介质,包括计算机可读指令,所述指令在被执行时用于实现如权利要求10至15中任一项所述的方法。
17.一种用于执行分布式仲裁的集成电路,包括:
第一核心;
第二核心;
图形引擎;
互连,其耦合到所述第一核心、所述第二核心和所述图形引擎;以及
分布式仲裁系统,其与所述互连相关联,所述分布式仲裁系统包括:
第一仲裁器,其耦合到至少所述第一核心,所述第一仲裁器至少部分地基于与第一信息块相关联的第一指示符的状态的转变来从第一多个信息块中选择从所述第一核心发送的所述第一信息块,所述第一仲裁器将所述第一信息块发送到第二仲裁器;以及
所述第二仲裁器,其耦合到至少所述第二核心,所述第二仲裁器至少部分地基于与第二信息块相关联的第二指示符的状态的转变来从第二多个信息块中选择从所述第一仲裁器发送的所述第二信息块,所述第二仲裁器将所述第二信息块发送到目的地。
18.如权利要求17所述的集成电路,其中,所述第一核心输出所述第一信息块的第一部分以及具有第一状态的所述第一指示符,输出所述第一信息块的第二部分以及具有所述第一状态的所述第一指示符,并且输出第三信息块的至少一部分以及具有第二状态的第三指示符。
19.如权利要求17所述的集成电路,还包括第三核心,其中,所述第二仲裁器还耦合到所述第三核心,所述第二仲裁器包括:用于存储来自所述第三核心的第三信息块的第一队列、用于存储来自所述第一仲裁器的第四信息块的第二队列、以及仲裁电路,所述仲裁电路用于基于与关联于所述第四信息块中的一个第四信息块的第四指示符和所述第三信息块中的一个第三信息块相关联的第三指示符的公共状态来选择以输出所述第三信息块中的所述一个第三信息块,然后输出所述第四信息块中的所述一个第四信息块。
20.一种用于分布式仲裁的装置,包括:
第一发送器单元,其用于输出第一数据和与所述第一数据相关联的发送标识符;以及
第一仲裁器单元,其耦合到所述第一发送器单元,以用于接收所述第一数据并且至少部分地基于所述发送标识符的状态的改变来在所述第一数据与来自耦合到所述第一仲裁器单元的第二仲裁器单元的第二数据之间进行仲裁,其中,所述第一仲裁器单元包括:第一队列单元,其用于存储所述第一数据;以及第二队列单元,其用于存储所述第二数据。
21.如权利要求20所述的装置,其中,所述第一仲裁器单元还包括选择单元,其用于基于与第一分组相关联的所述发送标识符的所述状态的所述改变来选择和输出具有所述第一数据的至少一部分的所述第一分组。
22.如权利要求21所述的装置,其中,所述选择单元用于至少部分地基于与第二分组相关联的发送标识符的状态的改变来选择和输出具有所述第二数据的至少一部分的所述第二分组,其中,与所述第一分组相关联的所述发送标识符和与所述第二分组相关联的所述发送标识符具有相同的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311507575.8A CN117435528A (zh) | 2016-09-29 | 2017-08-31 | 用于执行分布式仲裁的系统、装置和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/279,762 US10372642B2 (en) | 2016-09-29 | 2016-09-29 | System, apparatus and method for performing distributed arbitration |
US15/279,762 | 2016-09-29 | ||
PCT/US2017/049729 WO2018063738A1 (en) | 2016-09-29 | 2017-08-31 | System, apparatus and method for performing distributed arbitration |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311507575.8A Division CN117435528A (zh) | 2016-09-29 | 2017-08-31 | 用于执行分布式仲裁的系统、装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109716311A CN109716311A (zh) | 2019-05-03 |
CN109716311B true CN109716311B (zh) | 2023-12-05 |
Family
ID=61685351
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311507575.8A Pending CN117435528A (zh) | 2016-09-29 | 2017-08-31 | 用于执行分布式仲裁的系统、装置和方法 |
CN201780053573.2A Active CN109716311B (zh) | 2016-09-29 | 2017-08-31 | 用于执行分布式仲裁的系统、装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311507575.8A Pending CN117435528A (zh) | 2016-09-29 | 2017-08-31 | 用于执行分布式仲裁的系统、装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10372642B2 (zh) |
CN (2) | CN117435528A (zh) |
DE (1) | DE112017004907T5 (zh) |
WO (1) | WO2018063738A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11706163B2 (en) * | 2019-12-20 | 2023-07-18 | The Board Of Trustees Of The University Of Illinois | Accelerating distributed reinforcement learning with in-switch computing |
US12034649B2 (en) * | 2020-05-18 | 2024-07-09 | Intel Corporation | Routing traffics having primary and secondary destinations in communication networks |
CN114567520B (zh) * | 2020-11-26 | 2023-06-02 | 华为技术有限公司 | 实现集合通信的方法、计算机设备和通信系统 |
CN113868172B (zh) * | 2021-09-28 | 2024-06-18 | 上海兆芯集成电路股份有限公司 | 互连接口 |
US20240152477A1 (en) * | 2022-11-03 | 2024-05-09 | Marvell Asia Pte Ltd | Distributed arbitration for shared data path |
CN115495399B (zh) * | 2022-11-21 | 2023-04-18 | 沐曦科技(成都)有限公司 | 一种分布式仲裁系统、方法、装置、存储介质及电子设备 |
CN115905088B (zh) * | 2022-12-27 | 2023-07-14 | 声龙(新加坡)私人有限公司 | 一种数据收集结构、方法、芯片和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1957332A (zh) * | 2004-03-24 | 2007-05-02 | 米克伦技术公司 | 具有仲裁分组协议的存储器仲裁系统及方法 |
US8688881B2 (en) * | 2008-11-28 | 2014-04-01 | Telefonaktiebolaget L M Ericsson (Publ) | Arbitration in multiprocessor device |
CN104321758A (zh) * | 2013-01-17 | 2015-01-28 | 英特尔公司 | 经由共享存储器结构的仲裁存储器访问 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105119A (en) * | 1997-04-04 | 2000-08-15 | Texas Instruments Incorporated | Data transfer circuitry, DSP wrapper circuitry and improved processor devices, methods and systems |
US6957290B1 (en) * | 2000-10-06 | 2005-10-18 | Broadcom Corporation | Fast arbitration scheme for a bus |
US7073005B1 (en) * | 2002-01-17 | 2006-07-04 | Juniper Networks, Inc. | Multiple concurrent dequeue arbiters |
KR20060000257A (ko) | 2004-06-28 | 2006-01-06 | 삼성전자주식회사 | 마스터들의 우선순위 조정이 가능한 버스시스템 및 그동작방법 |
JP4847036B2 (ja) * | 2005-03-30 | 2011-12-28 | キヤノン株式会社 | バスアクセスを調停する制御装置およびデータ処理装置の制御方法 |
US20080151894A1 (en) * | 2006-12-22 | 2008-06-26 | Intel Corporation | Selectively hybrid input and output queued router |
US20080288689A1 (en) | 2007-05-14 | 2008-11-20 | Brian Hoang | Opportunistic granting arbitration scheme for fixed priority grant counter based arbiter |
US8667197B2 (en) | 2010-09-08 | 2014-03-04 | Intel Corporation | Providing a fine-grained arbitration system |
US9323678B2 (en) | 2011-12-30 | 2016-04-26 | Intel Corporation | Identifying and prioritizing critical instructions within processor circuitry |
US9563579B2 (en) * | 2013-02-28 | 2017-02-07 | Intel Corporation | Method, apparatus, system for representing, specifying and using deadlines |
US9405688B2 (en) | 2013-03-05 | 2016-08-02 | Intel Corporation | Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture |
US9678906B2 (en) * | 2014-03-26 | 2017-06-13 | International Business Machines Corporation | Oldest link first arbitration between links grouped as single arbitration elements |
US20160188519A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Corporation | Method, apparatus, system for embedded stream lanes in a high-performance interconnect |
US10120809B2 (en) * | 2015-09-26 | 2018-11-06 | Intel Corporation | Method, apparatus, and system for allocating cache using traffic class |
-
2016
- 2016-09-29 US US15/279,762 patent/US10372642B2/en active Active
-
2017
- 2017-08-31 CN CN202311507575.8A patent/CN117435528A/zh active Pending
- 2017-08-31 WO PCT/US2017/049729 patent/WO2018063738A1/en active Application Filing
- 2017-08-31 CN CN201780053573.2A patent/CN109716311B/zh active Active
- 2017-08-31 DE DE112017004907.5T patent/DE112017004907T5/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1957332A (zh) * | 2004-03-24 | 2007-05-02 | 米克伦技术公司 | 具有仲裁分组协议的存储器仲裁系统及方法 |
US8688881B2 (en) * | 2008-11-28 | 2014-04-01 | Telefonaktiebolaget L M Ericsson (Publ) | Arbitration in multiprocessor device |
CN104321758A (zh) * | 2013-01-17 | 2015-01-28 | 英特尔公司 | 经由共享存储器结构的仲裁存储器访问 |
Also Published As
Publication number | Publication date |
---|---|
CN117435528A (zh) | 2024-01-23 |
WO2018063738A1 (en) | 2018-04-05 |
DE112017004907T5 (de) | 2019-06-06 |
US20180089122A1 (en) | 2018-03-29 |
CN109716311A (zh) | 2019-05-03 |
US10372642B2 (en) | 2019-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109716311B (zh) | 用于执行分布式仲裁的系统、装置和方法 | |
US10084692B2 (en) | Streaming bridge design with host interfaces and network on chip (NoC) layers | |
JP5490336B2 (ja) | Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け | |
US9053251B2 (en) | Providing a sideband message interface for system on a chip (SoC) | |
US8085801B2 (en) | Resource arbitration | |
US8316171B2 (en) | Network on chip (NoC) with QoS features | |
US8713234B2 (en) | Supporting multiple channels of a single interface | |
EP2761484B1 (en) | Aggregating completion messages in a sideband interface | |
EP2761831B1 (en) | Sending packets with expanded headers | |
US9021156B2 (en) | Integrating intellectual property (IP) blocks into a processor | |
US8775700B2 (en) | Issuing requests to a fabric | |
US20150103822A1 (en) | Noc interface protocol adaptive to varied host interface protocols | |
US7643477B2 (en) | Buffering data packets according to multiple flow control schemes | |
US20180191626A1 (en) | Interface virtualization and fast path for network on chip | |
US10397144B2 (en) | Receive buffer architecture method and apparatus | |
EP3812911A2 (en) | System, apparatus and method for communicating telemetry information via virtual bus encodings | |
US11321179B1 (en) | Powering-down or rebooting a device in a system fabric | |
US8995425B1 (en) | Network device scheduler and methods thereof | |
US20240330145A1 (en) | High-speed debug port trace circuit | |
Chen | PCI express-based ethernet switch |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |