背景技术
在具有多个数据处理单元的系统中,不同数据处理电路之间的数据通信是确定系统有效性的重要因素。在简单系统中,可以在处理电路之间使用直接连接,通常包括连接所有处理单元的多条数据总线,这样发送电路和接收电路能够即时共享状态信息。
在更复杂的系统中,可以使用通信网络来传送数据。这样的网络常引起数据发送时间和接收时间之间的延迟。处理单元失去对消息接收时间的直接控制。这就带来了问题,因为其使得难以确定处理单元是否可以继续发送新数据还是应等到接收方就绪。为解决此问题,需要一种特殊机制来调整接收和发送电路。
美国专利No.6,594,701公开了一种电子电路,其中以信用报告(credit report)的方式来控制经由网络的通信。接收电路动态地确定还有多少空闲缓冲空间可用于接收来自发送电路的数据,并通过网络将有关可用空闲缓冲空间的信用报告发给发送电路。发送电路注册所报告的信用,当发送数据时减少所注册的信用,并保证发送的数据不多于注册为空闲可用的缓冲空间内所能存储的数据。基于信用的通信可看作握手协议的扩展,在握手协议中发送电路在发消息后等待来自接收电路的返回消息,该返回消息的内容是用于下一消息的空闲空间变为可用。与这样的握手协议相比,基于信用的通信支持更高的数据速率,这是因为发送电路能以本地信息为基础决定发送下一消息(以及关于消息的大小),而通常无需等待有关缓冲空间的释放的下一消息。
美国专利No.6,594,701描述了能使接收电路确定何时应该给发 送电路发送信用报告的多种算法。一种推荐解决方案是使用时间周期报告。另一种解决方案使用对发送电路中可用信用数量的估计:如果一接收到来自发送电路的消息,先前报告的信用就减少了接收到数据量而下降到一个阈值之下,则发送信用报告。该专利依据观察到的发送电路数据速率描述了不同阈值的使用。
美国专利No.6,460,080描述了基于信用的通信,其中,发送电路发送信用请求来触发信用报告的发送。当发送电路要发送消息,但无足够信用可用时,该发送电路改为发送一个信用请求。接收电路接收到该信用请求并返回一个信用报告,如有必要则等到足够的空闲缓冲区空间可用之后返回。
可使用网络来交换信用报告,且如果可行的话信用请求消耗网络带宽。希望能将消耗带宽的数量最小化。US 6,594,701通过在网络以外报告信用做到了这一点,但这使通信电路复杂化。
当处理电路具有通过网络的双向数据通信时,一种减少用于信用报告的网络带宽的具有吸引力的可能性出现了。在这种情况下,能够将用于一个方向上的发送的信用报告添加到在另一方向上发送的数据消息中的数据上,反之亦然。这样,消息开销能够由数据和信用报告所共享。然而,减少用于信用报告的带宽应以不减少或不显著减少数据传输速率的方式实现,例如,通过使发送电路暂停发送来等待信用报告的方式。
具体实施方式
图1示出了一个电子电路,其包含多个处理电路10、通信网络12以及网络接口电路14。处理电路10经由网络接口电路14耦合到网络12上。通信网络12具有多个用于不同的处理电路10的终端(作为例子,示出了八个),但为了简明,只示出两个连接的处理电路10。通信网络12可以是任意已知类型。例如,其可以包括交叉式(cross-bar)交换机、中继器等。特别是在网络12中不同的消息同时传播成为可能,使得消息在网络12中相互交错。这允许高处理速度。
图2示出一个双向网络接口电路14的例子。在该例子中,双向网络接口电路14包含FIFO(先入先出)输出缓冲区20、发送控制电路22、发送复用器24、发送信用注册单元25、接收解复用器26、FIFO输入缓冲区27、接收控制电路28以及接收信用注册单元29。处理电路10的输出端耦合到FIFO输出缓冲区20的输入端。发送控制电路22耦合到FIFO输出缓冲区20的控制输出和输入端,耦合到发送复用器24的控制输入端,耦合到发送信用注册单元25以及接收信用注册单元29。发送复用器24输入端耦合到发送控制电路22和FIFO输出缓冲区20。
接收解复用器26具有耦合到接收控制电路28和FIFO输入缓冲区27的输出端。FIFO输入缓冲区27具有耦合到处理电路10的输入端的输出端。接收控制电路28耦合到FIFO输入缓冲区27、接收信用注册单元29以及接收解复用器26的控制输入端。在操作中,数据处理电路10产生连续的数据项,诸如16、32或64比特的字。网络接口电路14经由通信网络12以消息的方式将数据项发送给其它数据处理电路。其它数据处理单元接收到消息并将数据项用于进一步处理。数据处理电路10将数据项写入FIFO输出缓冲区20。可以使用常规的FIFO缓冲区接口(其向处理电路10发信号告知FIFO输出缓冲区20是否为满)来防止在FIFO输出缓冲区20为满的时候处理电路10写入。
经过若干时间,发送控制电路22开始在网络12上发送具有多个数据项的消息。在这种情况下,发送控制电路22生成一个报头(header)并使发送复用器24将该报头输出到网络12。该报头可以包含用于同步符号、目的地址、消息长度码以及信用信息的多个字段。接着发送控制电路22控制FIFO输出缓冲区20将数据项输出给发送复用器24,并控制发送复用器24输出数据到网络12。在消息的结尾,发送控制 电路可以发送停止符号和可选的纠错数据(数据项的数目对应于报头内指定的长度,但当使用了停止符号时可以忽略此长度,反之亦然;停止符号的优势是可以将在消息发送时到达输出缓冲区20的数据添加到消息上)。例如,最后所得到的消息可以具有如下内容:
消息=报头,数据项,数据项,数据项
(虽然将本发明的一个实施例描述为利用了整个数据项的产生、发送和消耗,但应理解,例如可以将最后的数据项的部分分散在连续多个消息中发送而不偏离本发明,或者不同的处理单元的数据项颗粒尺寸可以不同,这使得对于一个处理电路的一个数据项(例如一个64比特字)对于另一个处理电路可以是多于一个的一组数据项(例如四个16比特字))。
一接收到消息,接收解复用器26首先将报头传给接收控制电路28,随后该接收控制电路28使接收解复用器26将来自该消息的数据项传给FIFO输入缓冲区27,并且使FIFO输入缓冲区27接收数据项。处理电路10连续地从FIFO输入缓冲区27读取数据项。常规的FIFO缓冲区接口(其向处理电路10指示FIFO缓冲区是否为空)可以用在FIFO输入缓冲区27和处理电路10之间,以防止在FIFO输入缓冲区27为空时的读取。
特定的发送网络接口电路14的发送信用注册单元25存储了数字T(也称为信用数量),其表示消息所发送给的另一接收网络接口电路14的FIFO输入缓冲区27中至少有多少空闲缓冲空间可用。该特定的发送网络接口电路14的接收信用注册单元29存储了数字R,其表示在该特定的发送网络接口电路14的FIFO输入缓冲区27中有多少未报告的空闲缓冲空间可用。
发送控制电路22限制了发送的消息中的数据量L,使得不会有比发送信用注册单元25所指示的可用空闲缓冲空间T更多的数据被从FIFO输出缓冲区20输出到消息中。当消息发送时,发送控制电路22使发送信用注册单元25中的信用数量T与发送的数据量L相对应地降低。
发送控制电路22在报头中包括了信用信息R,以报告FIFO输入 缓冲区27中先前未报告的空闲空间的可用性。特定的发送网络接口电路14的接收信用注册单元29存储了表示网络接口电路14中FIFO输出缓冲区27有多少未报告的空闲缓冲空间可用的数目R。每次当处理电路10从FIFO输入缓冲区27读取数据项时,接收信用注册单元29增加未报告的空闲缓冲空间的数目R。当发送控制电路22发送消息时,它从接收信用注册单元29中读取未报告的空闲缓冲空间的数量R,在该消息的报头中插入表示该数量R的数字,并复位接收信用注册单元29,将接收信用注册单元29中复位为零值R=0。在不偏离本发明的情况下,可以报告较低数量P<R,在这种情况下在接收信用注册单元29中所表示的数量被降低了P。
一接收到消息,接收控制电路28就从报头读取未报告的空闲空间的数量R′,并使发送信用注册单元25以来自报头的未报告的空闲空间的数量R′来增加可用空闲缓冲空间的数量T。
消息在选定的时机发送。发送控制电路22根据能够从FIFO输出缓冲区20发送的数据量A和由接收信用注册单元29指示的未报告的可用空闲空间的数量R来确定何时发送消息。当数据量A和/或未报告的可用空闲空间的数量R之任一或两者都充分增加时,发送控制电路22发送消息。在一个实施例中,发送消息的标准是
A>M1或R>M2
此处M1和M2是阈值,其优选地是可编程的,这使该接口的操作能够适应于操作环境(operating context)。例如,能够从FIFO输出缓冲区20发送的数据量A被确定为是FIFO输出缓冲区20中的数据量B和来自发送信用注册单元25的信用数量T中的最小值。然而,应认识到其它用于发送消息的标准也是可能的,例如,
αA+R>M其中α是某个正加权因子
或(B>M3且T>M4)或R>M5
优选地,阈值M、M3、M4、M5是可编程的,这样使接口的操作能够适应于操作环境。
在所发送的消息中,这样的数据被发送:(a)可用的并且(b)根据信用数量T能够接收到的。应注意,决定要发送消息并不必须要求有 至少预定数量的数据可用、或至少预定数量的信用可用。当未报告的可用空闲空间的数量R充分上升时,无论如何都要发送一条消息,即使消息中数据量为零或很小的情况也是如此。
应认识到,在此类标准下,一方面使用了一个或更多阈值来确保网络带宽的使用最小化,同时另一方面能够撤销用于数据和信用中任一个的阈值,这样至少不会有过多数量的未报告的空闲空间R累积。由于正常数据发送时尽可能多地报告信用信息R,因此网络带宽使用得以减少。由于数据被累积以便来自FIFO输出缓冲区20的多个数据项优选地被组合成一条消息,从而能够共享报头的开销,因此也减少了网络带宽使用。为了减少带宽使用,优选地,在不使接收数据处理电路10等待数据的情况下,将阈值M1(或阈值M3和M4)设置成尽可能地高。当没有足够的数据可用时,如有足够的未报告的空闲缓冲空间R可用,则仍发送消息。为了减少带宽使用,优选地,在不使接收数据处理电路10等待缓冲空间的情况下,将阈值M2(或M5)设置成尽可能地高。
网络可以为消息强加(impose)一个固定长度或最大长度。在这种情况下,此长度可以被用做阈值M1(或阈值M3和M4)。在固定长度消息的情况下,当因未报告的空闲缓冲空间R超过阈值而发送消息时,如果无足够的可发送的数据A可用,则可能有必要为消息中的数据留出未使用的空间。
在另一个实施例中,时间被用做发送消息的附加触发器。例如发送控制电路22可以包含定时器,并可用于在存在任何数据(A>0)或未报告的空闲缓冲空间(R>0)且在预定时间内无消息发送的情况下,来发送一条消息。在另一个实施例中,发送控制电路22阈值(M1、M2、M3、M4、M5和/或M)在发送之前最后一个消息之后随时间减少。在另一个实施例中,根据自从未报告的空闲空间和/或未发送的数据变为可用后所经过的时间间隔,可以在用于发送消息的标准中将未报告的空闲空间和/或未发送的数据加权更重。例如,该标准可以是
min(T,∑iw(t-ti))>M1或∑j Rjw′(t-tj)>M2
此处i标识不同的数据项,j标识不同的缓冲空间区域,t-ti标识自从写入数据项i后经过的时间,t-tj标识自从尺寸为Rj的区域j变为可用后经过的时间,而w()和w′()是随增加的所经过的时间而增加的加权函数。同样地,通过每次在新数据项到达时计算新的累积权重Wn=w+β(ti-ti-1)Wn-1来定义累积权重,β(ti-ti-1)>1随着时间增加,且类似的权重W′n=Rj+β(tj-ti-1)Wn-1用于缓冲空间。在这种情况下,标准可以是min(T,W)>M1或W′>M2。作为替换,信用数量也可以作为时间函数来渐增地加权。作为另一个替换,权重可以增加(或者,相对应地,阈值可以作为自从最后发送的消息开始的时间函数而下降)。
在另一个实施例中,发送控制电路22用于响应来自处理电路10的“清除”命令。当发送控制电路22检测到清除命令时,它对有关FIFO输出缓冲区20内的数据量的信息进行采样。随后发送控制电路22撤销了发送消息的标准,并在每次信用T>0可用时发送一条消息(或多条消息),直到至少所采样的数据量已经被以消息发送。随后发送控制电路22恢复了初始的消息发送的标准。
虽然将本发明说明为一对处理电路10之间的通信,但应认识到,任何处理电路10可以经由网络12与多于一个的其它处理电路10进行通信。在这种情况下,处理电路10可以经由多个网络接口连接到网络12。不同的网络接口可以共享相同的到网络12的连接,例如,以复用的方式。当然,不同的网络接口可以共享诸如复用器24、发送控制电路22等的硬件,但应为不同的网络接口保持各自的信用数目T。
在一个实施例中,并行地使用多个FIFO输出缓冲区和/或FIFO输入缓冲区,用于不同的数据流。在这种情况下,使用一种判优模式来选择FIFO输出缓冲区将以何种次序提供数据。可以使用任何适当的模式,诸如轮循(round robin)模式或基于优先级(priority base)模式。
优选地,还应保持各自的表示未报告的空闲空间的数目,但是可选地,不同的网络接口14可以从同一池中取出未报告的空闲空间,从而使用单个的数目R。在这种情况下,例如,每个网络接口14可报告数目R的一个预定的部分,如一个接口40%,而另一个接口60 %。当然许多对处理电路10可以并行地经由网络进行通信。一个网络接口可以从与用于一个处理电路的网络接口进行通信切换到与用于另一个处理电路的网络接口进行通信。在这种情况下,优选地,数量R和T当然首先被复位。
虽然已经用特定的实施例对本发明进行了描述,但应认识到很多可替换的实施例是也可能的。例如,发送控制电路22和接收控制电路28可以作为一个电路来实现,并且注册单元25、29可以作为发送控制电路22和接收控制电路28可访问的存储位置来实现。可替换地,注册单元25、29可以包括一个寄存器和用于自治地更新寄存器内容的电路,诸如加法器等。
在另一个实施例中,网络12可以为消息强加一个最大长度,在这种情况下,消息可能不包含来自具有信用T的FIFO输出缓冲区20的所有的A个可用数据项。在这种情况下,优选地,在消息中包括最大允许的数据项的数目。这减少了可发送的数据项的数目A,此后,重新用标准来确定是否应该发送下一消息。可替换地,一旦确定发送第一消息,就可以发送一系列消息以发送所有A个数据项,而无需测试该标准。然而,这增加了带宽使用。
类似地,在消息中用于报告可用的空闲缓冲空间R的字段长度也许不可能报告所有可用的空闲缓冲空间。在这种情况下,优选地,在消息中报告最大允许的空闲缓冲空间的数量,且在接收信用注册单元29中R也因此降低。这减少了未报告的信用的数量R,此后重新用标准来确定是否应该发送下一消息。可替换地,一旦确定发送第一消息,就可以发送一系列消息以报告所有的信用,而无需测试该标准。然而,这增加了带宽使用。
作为另一个例子,代替FIFO输入和输出缓冲区20、27,可以用其它类型存储器来存储数据。例如,缓冲区20、27中任意一个或两个都可以被由数据处理电路寻址的存储器所代替,或者是更大的存储器的一部分,所述更大的存储器例如包含要被发送的数据和接收到的数据的位置,以及其它数据。
在这种情况下,可以保持一个发送请求队列,当数据处理电路 10发信号告知要发送的全部数据项的数据已经被写入时,在该发送请求队列上增加一个请求,而当发送控制电路22已经使来自数据项的数据以消息被发送时,从该发送请求队列删除一个请求。类似地,可以保持一个接收报告队列,当来自消息的数据项已经被写入到存储器时,增加报告,而当数据处理电路10发信号告知不再需要数据项时,删除报告。如果是这样,则增加未报告的空闲缓冲空间R。
然而,要认识到FIFO输出缓冲区20和/或输入缓冲区27的使用相当程度地简化了设计,需要更少的用于网络接口的电路面积。
此外,本发明并不限于固定尺寸的缓冲区乃至存储器中的固定位置。处理电路10可以确定增加或减少用于接收或用于发送或两者的缓冲空间。当然,未报告的空闲空间的数量R将因此改变,从而它甚至能够变成负值(相对于数量R的更新,空间的实际减少有延迟,直到随后数据处理电路10释放空间使R返回到非负值)。
类似地,每次通过提供最新的可用缓冲空间的地址(可选地,以及长度),处理电路10可以给网络接口14发信号告知缓冲空间的可用性。所提供的地址可以是用于来自不再需要的先前的消息的数据的地址,但也可以是任何其它地址。这样缓冲区无需被限制在任何指定的存储区域。网络接口14利用所提供的地址将来自到达的消息的数据写入存储器。在这种情况下,未报告的空闲空间的数量R每次按照所告知的缓冲空间而增加。
事实上,甚至不必在发送之前为存储数据项提供FIFO输出缓冲区20或等同的存储空间。在另一实施例中,当组装消息时,数据处理电路10用于一接收到来自发送控制电路22的命令就生成数据项。在这种情况下,响应于这样的命令,数据处理电路10仅报告准备就绪生成一定数目的数据项。
在这些实施例中的每一个中,发送控制电路利用关于可发送的数据量和未报告的空闲空间的数量R的信息,来确定是否应发送含有数据(如果有的话)和未报告的空闲缓冲空间(如果有的话)的消息,以触发消息的发送。