处理系统和传送数据的方法
技术领域
本发明涉及一种处理系统。
本发明还涉及一种传送数据的方法。
背景技术
例如VCI和OCP的新式的片上互连协议引入了通信线程标识符,以允许多个无关的事务(transaction)独立地进展。在每个通信线程中,所有的事务都是有序的(即,在从动装置处送出请求,由从动装置发出响应,并且以与主动装置发出请求的顺序相同的顺序将响应发送到主动装置)。关于不同通信线程的事务不具有任何顺序限制。这允许无关的通信互相独立地进行。
由于事务被分离为请求和响应,所以这些协议被定义为分离协议。在完成从通信路径中的源功能单元到第一个中间功能单元传输请求后,源功能单元可以进行下一个传输,而不用必须等待来自目的功能单元的对该请求的响应。如果需要给出响应,则目的功能单元或任何中间功能单元将开始单独的仲裁过程。当在从动装置处生成响应要花费时间时(例如因为它是流水线)或者如果从主动装置向从动装置发送请求要花费时间(在网络中这是常有的),分离总线协议更有效。协议还允许流水线操作,即,允许主动装置具有多个未完成的请求(即,等待响应的请求)。同一通信线程中的所有事务都是有序的。这意味着从动装置按照与由主动装置发出的对那些响应的请求相同的顺序执行请求,并按照同一顺序送出响应。关于不同通信线程的事务不具有任何顺序限制。
US 6,182,183提供了链路层协议,其用于在从源功能单元到目的功能单元的通信路径中的两个相继的功能单元之间交换消息。根据已知的协议,主动功能单元产生信息,例如命令(Cmd)、地址(Addr)、或者数据(DataReq),并同时提供信息所属的线程的标识符。同样,从动功能单元可能提供信息(DataResp),并通过标识符RespThreadID指示它所属的通信线程。
功能单元可以是任何在数据流中的单元,例如,对数据执行操作的单元,例如CPU、DSP或者VLIW,或者用于存储数据的单元,例如存储器,或者用于传输数据的单元,例如路由器或接口。
在下面,将使用下列名称。启动功能单元或启动单元是启动与称为目标功能单元的另一个功能单元之间的链路层事务的功能单元。根据链路层的OSI定义,数据包被编码和解码为比特。它提供了传输协议知识和管理,并处理物理层、流控制和帧同步中的错误。源功能单元被表示为在网络层将消息(例如数据或命令)发送到另一个被表示为目的功能单元的功能单元的功能单元。根据OSI定义,网络层提供交换和路由技术,建立逻辑路径,通称虚电路,用于从节点向节点传输数据。路由和转发,以及寻址、网络互连、错误处理、拥塞控制和包排序是这层的功能。根据具体情况,功能单元可以作为源功能单元或作为目的功能单元工作。
发明内容
改进已知的协议是本发明的目的。根据此,根据本发明的一个方面,提出了一种用于在启动单元(INIT)和目标单元(TRGT)之间进行数据通信的方法,所述启动单元(INIT)启动该通信,所述方法包括:所述启动单元(INIT)指示对具有通信线程标识符的通信线程的请求以启动通信;所述目标单元(TRGT)确定所述请求是接受还是拒绝;所述目标单元(TRGT)确定所述启动单元(INIT)是否应该保持所述请求;所述目标单元(TRGT)向所述启动单元(INIT)提供信息,该信息指示是要所述启动单元(INIT)保持所述请求、所述请求被所述目标单元(TRGT)接受、还是所述请求被所述目标单元(TRGT)拒绝,其中,根据所述信息从所述目标单元(TRGT)向所述启动单元(INIT)传送所述数据。
根据本发明的另一个方面,提供了一种包括第一功能单元和第二功能单元的处理系统,所述第一功能单元能够使用用于在所述功能单元之间交换信号的设备来启动与所述第二功能单元的通信,所述信号包括由第一功能单元提供的请求信号,用于请求启动通信,由所述第二功能单元提供的信息信号指示所述第一功能单元必须保持所述请求、所述请求被接受、或所述请求被拒绝,其中,所述第二功能单元确定所述请求是接受还是拒绝,其中,所述第二功能单元确定所述第一功能单元是否应该保持所述请求,并且其中,根据所述信息信号从所述第二功能单元向所述第一功能单元传送所述数据。
根据本发明,从启动功能单元接收请求以执行与特定线程相关的动作的目标功能单元可以选择向启动功能单元发送如下信令:
1.启动单元(INIT)必须保持请求;
2.启动单元(INIT)的请求被接受;
3.启动单元(INIT)的请求被拒绝。
当目标功能单元根据选项3拒绝请求时,使得启动单元能够发出对另一个或者同一个通信线程的新请求。如果被接受,数据传输可以发生,否则将被推迟。通过这种方式,提高了总吞吐量。
因为以下原因,本发明尤其适用于处理器网络中的应用。由于对实现新的功能和改进现有功能的不断增长的需求,硅片上的系统的复杂度持续增长。这是由元件可以集成在集成电路中的密度的增长而达到的。同时,操作电路的时钟速度也趋于增长。更高的时钟速度与增长的元件密度相结合减小了可以在相同时钟域内同步操作的区域。这引起对模块化方法的需求。根据这种方法,处理系统包含多个相对独立的、复杂的模块。在传统的处理系统中,模块通常通过总线相互通信。然而随着模块数量的增加,这种通信方式由于以下原因不再实用。一方面大量的模块构成很高的总线负载。另一方面,由于它仅允许一个装置向总线发送数据,因此总线形成通信瓶颈。通信网络形成有效的方式以克服这些不足。通信网络包括多个部分连接的功能单元。来自一个功能单元的消息被功能单元转发到一个或多个其他功能单元。在两个直接连接的功能单元之间,可以传输涉及不同通信线程的、从多个源起源并去往多个目的地的消息。根据本发明的方法和处理系统,目标功能单元具有有效的方式来通知启动功能单元在某些时间不能处理对某一线程的请求。这使得启动功能单元能够选择另一个通信线程,否则数据传输将被不必要地延迟。
源功能单元发送的消息可以包括命令或者数据包。通过一个或者多个中间功能单元转发其,直至到达目的功能单元。目的功能单元能依次将消息发送到源功能单元。
附图简述
参照附图,更加详细地描述本发明的这些以及其他的方面。其中,
图1显示了包括多个连接在网络中的功能单元的处理系统;
图2显示连接根据现有技术的网络中的两个功能单元的典型方式;
图3显示了本发明第一实施例中相互连接的第一和第二功能单元;
图4显示了本发明第二实施例中相互连接的第一和第二功能单元。
具体实施方式
图1概要地示出了一个数据处理系统,它包含连接多个功能单元的网络。放置处理系统,以根据分离协议,沿着通信路径(由箭头指示),从源功能单元SFU向目的功能单元DFU,经由一个或多个中间功能单元IFU1,...,IFU5,传送数据以及所述数据的通信线程标识符。通过一同传输数据和通信线程标识符,具有相互不同的通信线程标识符的多个不相关的事务能够独立地进行。
图2显示连接根据现有技术的网络中的两个功能单元的典型方式。其中,数据产生功能单元PFU通过激活信号TID向数据使用功能单元CFU发出请求。该信号是通信线程的指示,它尝试传输该通信线程的数据。待传输的数据在连接DATA中提供。被指示的通信线程和相关数据的有效性用另一个信号VALID指示。一旦数据使用功能单元处理了请求,它就用信号ACCEPTC指出。在两个功能单元之间不进行其它传输,直到数据产生功能单元接收到这个信号。然而,可能发生数据产生功能单元PFU的请求不能及时被数据使用功能单元CFU处理的情况,例如,如果数据使用功能单元CFU没有对于所述线程的剩余的缓冲区空间。然而,这会导致以下结果,即,那些功能单元之间的所有其他通信线程被延迟。在示出的实施例中,假设启动单元只能够为特定的通信线程发送数据。启动单元能够用TID信号指示这个线程。实际上,启动单元可能能够发出多个命令,例如写、读、条件写等。可以加入一个或者多个命令信号以使得启动单元能这样做,或者作为选择,命令可以通过时分多路复用另一个连接被传输,例如,通过被TID信号使用的连接。也可能发送单独的命令。
图3显示了在根据本发明的网络的第一实施例中相互连接的第一和第二功能单元。按照与参考图2说明的方式同样的方式启动数据传输,即,数据产生功能单元PFU通过用信号TID指示通信线程,向数据使用功能单元CFU发出请求。在连接DATA提供待传输的数据。用另外的信号VALID指示被指示的通信线程和相关数据的有效性。然而,与图2说明的情况相反,目标功能单元,这里指数据使用功能单元,具有下列选择:
1.指示启动单元INIT必须保持请求。
2.指示启动单元INIT的请求被接受。
3.指示启动单元INIT的请求被拒绝。
实际上,目标功能单元需要时间解释请求,并确定在那个时刻它是否能够被处理。在这期间,目标功能单元提供根据选项1的指示。这使目标功能单元保持信号TID、DATA和VALID。一旦目标功能单元解释了请求并且能够处理它,那么它根据选项2进行指示。然而,如果目标功能单元确定在那时不能处理请求,例如因为上述通信线程的缓冲区将发生溢出,那么它根据选项3发送信号。这允许启动单元撤销对上述通信线程的请求,并启动另一个通信线程的事务,否则所述另一个通信线程将不得不进行等待,直到更早的请求能够被处理。通过这种方式,改进了处理系统的全体通信。
图3的实施例中有一个附加的信号,它对链路层的数据交换能够进行或者被延迟进行编码。因为只有一个附加信号,所以只可能有进行/延迟的反馈。这能够被推广以编码更详细的反馈,该反馈关于通信线程中的事务为什么不能进行(当有多种可能的原因时,例如:空/满的缓冲区,不期待通信线程上数据的过程正在CPU上运行,等等),或者关于通信进程中的事务多久能够进行(例如,具有足够的缓冲/数据以进行通信线程上的至少N个事务)。
注意到,对特定通信线程的请求可以包括发送命令、地址和/或其他数据的请求。或者,它可以包括接收命令、地址和/或其他数据的请求。
图4显示了在根据本发明的网络的第二实施例中相互连接的第一和第二功能单元。与图3所示的实施例相反,现在,数据使用功能单元CFU用做启动单元INIT。
作为启动单元的数据使用功能单元CFU通过用信号TID指示通信线程来向目标发出请求,这里,目标指数据产生功能单元PFU。所指示的通信线程和相关数据的有效性用信号VALID指示。如同图3中示出的实施例,目标功能单元具有如下选择:
1.指示启动单元INIT必须保持请求;
2.指示启动单元INIT的请求被接受;
3.指示启动单元INIT的请求被拒绝。
在确定请求能否被处理期间,目标功能单元根据选项1进行响应。如果目标功能单元确定它能够在短期内处理请求,那么它提供根据选项2的指示。然而如果确定这是不可能的,例如因为预期需要的数据不会很快成为可用的,那么目标功能单元根据选项3进行响应。此外,这允许启动单元撤销对上述通信线程的请求,并启动另一个通信线程的事务,否则所述另一个通信线程将不得不进行等待,直至较早的请求能够被处理。通过这种方式,改进了处理系统中的全体通信。
使用信号READY和ACCEPTP,能够如下提供根据上述三个选项的指示。
选项 |
READY |
ACCEPTPACCEPTC |
含义 |
1 |
0 |
0(*) |
启动功能单元必须继续指示通信线程标识符TID。 |
2 |
1 |
0 |
请求启动功能单元指示其他通信线程标识符。 |
3 |
1 |
1 |
接收所指示的通信线程标识符。 |
只要由READY=0指示目标功能单元未准备好,图3示出的实施例中的信号ACCEPTP或图4的实施例中的ACCEPTC的值就是无关的。然而,只要目标功能单元未准备好决定拒绝还是接收,信号ACCEPTP或ACCEPTC就最好保持在指示拒绝的值。这使得能够将目标功能单元连接到传统的、不具有接收信号READY的输入的启动功能单元。这样,传统的启动功能单元就能正常工作,即,一直进行等待直到与所指示的通信线程TID相关联的请求被接受,不管该等待是由目标功能单元评估请求所引起的,还是由目标功能单元此时不能服务请求所引起的。为了清楚,逻辑信号值1和0被分别用于指示否定的和肯定的结果,例如准备好和未准备好,或者接受或不接受。然而很清楚,这些值也能够以其它方式使用。许多其他的、根据如同在表格中所描述的这些选项之一提供指示的选择是可能的。例如,通过沿着一个物理连接,连续地提供信号READY和ACCEPTC、ACCEPTP。
注意到,本发明的保护范围不限于这里描述的实施例。注意,信息,例如通信线程的数据、关于通信线程的信息,能在处理单元间以多种方式交换,例如串行、并行或以组合的方式。
本发明的保护范围也不限于权利要求中的参考数字。词语“包括”不排除权利要求中提及部分之外的其他部分。在元素之前的词“一个”不排除多个这种元素。形成本发明一部分的模块既能以专用硬件的形式实现,也能以可编程通用处理器的形式实现。本发明在于每个新特征或特征的组合。