处理系统和用于传输数据的方法
技术领域
本发明涉及一种处理系统。本发明还涉及一种用于传输数据的方法。
背景技术
由于对实现新特征和改进现有功能的需求不断增长,硅片上系统在复杂度上显示出不断增加的趋势。这是由密度增加造成的,其中利用该增加的密度可以将多个组件集成在一个集成电路上。同时,电路工作的时钟速度也趋于增加。较高的时钟速度与增加的多个组件的密度相结合,已经能够减小在相同时钟域中同步工作的区域。这产生了对模块式方案的需求。根据此种方案,所述处理系统包括多个相对独立的、复杂的模块。在传统处理系统中,所述模块通常经由总线彼此进行通信。然而,随着模块数目的增加,由于下述原因,这种通信方式不再实用。一个方面,大量模块形成了过高的总线负载。另一方面,由于总线只能使一个设备将数据发送到该总线上,从而该总线形成了通信瓶颈。通信网络形成一种有效方式来克服这些缺点。所述通信网络包括多个部分连接的节点。来自模块的消息由所述节点重新导向到一个或多个其他节点。
由源功能单元发送的消息包括命令或数据包。经由一个或多个中间功能单元来转发该消息,直到该消息到达目的功能单元。所述目的功能单元继而向该源功能单元发送相应的消息。功能单元可以是数据流中所涉及的任何一种单元,例如对数据执行操作的单元,比如CPU、DSP或VLIW,或者用于存储数据的单元,比如存储器,或者用于传输数据的单元,比如路由器或接口。
分离协议(split protocol)被定义为一种将事务分为请求和响应的协议。当在通信路径中完成从源功能单元到第一中间功能单元的请求发送后,所述源功能单元可以处理下一个发送,而不必等待来自目的功能单元的对该请求的响应。如果必要,所述目的功能单元将启动单独的仲裁程序以给出响应。当在从属设备上产生响应花费时间时,分离总线协议更加有效。流水线技术使得主设备能够具有多个待决的请求(即,正在等待响应的请求)。对在同一通信线程中的所有事务进行排序(传送响应的顺序与由主设备发布的针对这些响应的请求顺序相同)。具有不同通信线程的事务不具有任何顺序约束。
US 6,182,183提供了一种链路级协议,用于在从源功能单元到目的功能单元的通信路径中在两个相继的功能单元之间交换消息。根据已知的协议,主设备功能单元产生信息,比如命令(Cmd)、地址(Addr)或数据(DataReq);并且同时提供该信息所属的线程的标识(ReqThreadID)。同样,从属设备功能单元可提供信息(DataResp),并且利用标识(RespThreadID)来指示该信息所属的通信线程。
已知的分离、流水线总线协议的缺点在于,数据使用(dataconsuming)功能单元对其接收数据的次序仅仅具有有限的控制权。如果已经发布了用于几个通信线程的数据请求,那么数据产生功能单元确定首先服务于这些线程中的哪一个。这样就导致,所请求的数据到达的顺序无法使得所述数据使用功能单元实现最佳运行。
发明内容
本发明的一个目的是提供一种改进的链路级通信协议以及使用该通信协议的改进处理系统。该目的可通过一种分离协议传输方法来实现,该方法用于沿着从源功能单元(SFU)到目的功能单元(DFU)的通信路径传输数据和所述数据的通信线程标识符。该方法包括:在数据使用功能单元(CFU)和数据产生功能单元(PFU)之间的通信路径上利用握手程序直接进行通信;从所述数据使用功能单元(CFU)向所述数据产生功能单元提供通信线程标识符(TID);当所述数据产生功能单元(PFU)接受所述通信线程标识符时,从所述数据产生功能单元向所述数据使用功能单元提供与所述通信线程标识符相关的数据;以及当所述数据产生功能单元(PFU)没有接受所述通信线程标识符时,从所述数据使用功能单元(CFU)向所述数据产生功能单元(PFU)提供另一个通信线程标识符,其中响应于来自所述数据产生功能单元(PFU)的请求而提供所述另一个通信线程标识符。
上述目的也可通过一种包括多个功能单元的处理系统来实现。所述处理系统被设置成根据分离协议、沿着从源功能单元(SFU)到目的功能单元(DFU)的通信路径传输数据和所述数据的通信线程标识符,所述通信路径中的数据使用功能单元(CFU)和数据产生功能单元(PFU)被设置成利用握手程序彼此相互直接通信。其中,所述数据使用功能单元(CFU)将通信线程标识符(TID)指示给所述数据产生功能单元,并且所述数据产生功能单元向所述数据使用功能单元提供与所述通信线程标识符相关的数据。其中,当所述数据产生功能单元(PFU)没有接受所述通信线程标识符时,所述数据使用功能单元(CFU)向所述数据产生功能单元(PFU)提供另一个通信线程标识符,其中响应于来自所述数据产生功能单元(PFU)的请求而提供所述另一个通信线程标识符。
发明人认识到:如果不是数据产生功能单元而是数据使用功能单元来为交换信息而选择通信线程,那么在几种情况下都是有利的。因此,在根据本发明的处理系统和方法中,一个方面,应用在通信路径上的分离传输协议。另一方面,对于通信路径中彼此互相通信的至少一对数据使用功能单元和数据产生功能单元而言,该数据使用功能单元对接收数据的通信线程具有直接控制权。
本发明的一个实例是一种数据处理系统,其中数据使用功能单元是存储器控制器。存储器控制器具有对从几个通信线程中存储/重新获取信息进行优化调度的功能,从而存储和重新获取可以最小的时间量发生。由于根据本发明的存储器控制器可以自行选择请求信息的线程的顺序,所以该存储器控制器可以非常有效地对信息的存储进行调度。或者,可以提供具有大输入缓存器的存储器控制器。这将使得其能够从多个线程接收大量信息,并按照合适的次序从该输入缓存器中选择信息,但是其代价是减小了用于其他功能的硅区域。
在优选的数据使用功能单元能够选择处理线程的另一个实例中,数据使用功能单元是被配置为执行多个任务的处理器。每个任务切换通常可能要求几百到一千个处理周期。如果处理器没有足够的数据来用于特定线程,那么任务切换通常会出现。在本发明的一个实施例中,多任务处理器能够选择要求数据的线程,以便继续相同的线程。换言之,所述处理器考虑其读取数据的要求来调度任务,并且利用通信线程指示符来将此情况指示给数据产生功能单元。
按照这种方式,可以降低任务切换的频率。
附图说明
参照附图来更详细地描述本发明的这些和其他方面。在附图中:
图1示意性地示出了数据处理系统;
图2示意性地示出了根据本发明的数据处理系统中,在通信路径上的一对数据产生功能单元和数据使用功能单元;
图3示意性地示出了根据本发明的数据处理系统的第二实施例中的一对数据产生功能单元和数据使用功能单元;
图4示意性地示出了根据本发明的数据处理系统的第三实施例中的一对数据产生功能单元和数据使用功能单元;
图5示意性地示出了根据本发明的数据处理系统的第四实施例中的一对数据产生功能单元和数据使用功能单元。
具体实施方式
图1示意性地示出了一种数据处理系统,该数据处理系统包括连接多个功能单元的网络。该处理系统被设置成根据分离协议,沿着从源功能单元SFU到目的功能单元DFU的通信路径(如箭头所示),经由一个或多个中间功能单元IFU1、...、IFU5来传输数据以及用于所述数据的通信线程标识符。通过传输数据以及通信线程标识符,具有彼此不同的通信线程标识符的多个不相关事务可以独立地演进。
图2示意性地示出了一对数据使用功能单元CFU和数据产生功能单元PFU的具体细节。通过例示方式,数据使用功能单元CFU和数据产生功能单元PFU分别是图1中的目的功能单元DFU和第五中间功能单元IFU5。
通信路径中的数据使用功能单元(CFU)和数据产生功能单元(PFU)被设置为利用握手程序彼此之间直接进行通信。其中,数据使用功能单元CFU发出数据请求REQ,并且指示通信线程标识符TID,该通信线程标识符TID标识为哪个通信线程请求数据。利用信号TIDVAL来明确地指示TID的有效性。或者,请求REQ和通信线程标识符TID的有效性可由这些信号REQ、TID中之一的特定值来指示。如果数据产生功能单元PFU具有所请求的通信线程可用的数据,那么其通过利用信号ACCEPTP指示接受来做出响应,并且提供所请求的数据RESPDAT。在另一个实施例中,数据产生功能单元在固定数目的时钟周期内接受所述请求。因此,用于指示接受的单独的信号就是多余的。
继而数据使用功能单元CFU利用信号ACCEPTC来指示接受数据。在另一个实施例中,当数据使用功能单元总是在固定数目的时钟周期内接受数据时,不需要由数据使用功能单元产生单独的接受信号。
图3示出了扩展的协议。该协议由所述数据使用功能单元CFU按照相同的方式发起,其中该数据使用功能单元CFU提供通信线程标识符TID的指示,并且利用信号TIDVAL来明确地指示该标识符是有效的,或者间接地,通过预留TID信号的一个特定值来指示其不表示有效通信线程。在该实例中,数据使用功能单元CFU可以仅仅通过提供特定通信线程标识符来发布读取数据的请求。在期望所述数据使用功能单元CFU还发布其他命令的情况下,可以添加一个或多个附加的请求标识信号来指定命令类型。
与图2中示出的实施例相反,数据产生功能单元PFU另外可以请求CFU来指示想要接收数据的另一通信线程的通信线程标识符TID。出于此种目的,所述PFU提供第一和第二输出信号ACCEPTP和READY,在优选实施例中,所述信号ACCEPTP和READY具有下述含义:
READY |
ACCEPTP |
意义 |
0 |
* |
数据使用功能单元CFU必须继续指示通信线程标识符TID |
1 |
0 |
第二数据使用功能单元(CFU)被请求来指示另一通信线程标识符 |
1 |
1 |
所指示的通信线程标识符(TID)被接受 |
发布确认可能花费多个周期,在该多个周期中READY信号保持为低电平(0)。在该多个周期中信号ACCEPTP的值并不重要(*)。当PFU准备好时,READY上升为高(1),并且根据信号ACCEPTP指示出,事务是被接受(1),还是未被接受(0)。如果事务被延迟(ACCEPTP=0),则可能切换到另一通信线程。
在图3的实施例中,存在一个附加信号,该附加信号对链路级数据交换是被执行还是被延迟进行编码。利用仅仅一个附加信号,仅存在一种执行/延迟的反馈可能。这可被推广为对关于事务为何不能在通信线程上执行(当存在多种可能的原因时:例如,空/满缓存器,在CPU上正运行不需要通信线程上数据的程序等)或事务在通信线程上执行多久(例如,存在足够的缓存/数据来在通信线程上处理至少N个事务)的更为详细的反馈进行编码。
参照图4和图5来说明本发明的其他实施例。其中,所述传输方法包括另一个握手程序,其中将信息从数据产生功能单元(PFU)交换到数据使用功能单元(CFU),以交换通信线程信息。所述另一握手程序独立于其中交换数据的握手程序。在图4和5中,信号TID、TIDVAL、RESPDAT、ACCEPTP和ACCEPTC具有参照图2描述的含义。这些信号形成部分第一握手程序,该部分第一握手程序用于交换由数据使用功能单元CFU指示的特定通信线程的数据。由数据产生功能单元PFU提供的通信线程信息可由CFU中的调度器使用,以便更好地调度为之请求数据的通信线程的顺序。例如,所述信息可以是通信线程可用的数据量或随后新数据将变为可用的预期时间间隔。
在图4的实施例中,该另一握手程序包括由数据使用功能单元CFU控制的信息请求信号INFTID。该信号指示特定通信线程,数据使用功能单元为该特定通信线程指示附加信息。所述数据使用功能单元CFU利用信号INFVAL来传送信息请求信号INFTID的有效性。在固定数目的时钟周期内,数据产生功能单元PFU提供与所述指定的通信线程相关的信息TIDINFO。如果数据产生功能单元PFU提供指示信息TIDINFO的有效性的信号,那么可以在可变的时间间隔内提供信息TIDINFO,而不是在固定数目时钟周期后提供该信息TIDINFO。在图4的实施例中,所述数据使用功能单元CFU对PFU进行轮询以请求信息,由于数据传送发生在独立的握手过程中(TID、TIDVAL、RESPDAT、ACCEPTP、ACCEPTC),所以轮询独立于该数据传送。
图5示出了一个实施例,在该实施例中,所述PFU控制在所述另一握手程序中通信线程信息的传送。所述PFU利用信号INFTID指示其具有关于该通信线程的信息的通信线程,并且该PFU利用信号TIDINFO提供所述信息。利用信号INFVAL来指示这些信号的有效性。所述PFU可以在每个握手程序中提供有关所有通信线程的信息,但由于数据传送发生在独立的握手过程中(TID、TIDVAL、RESPDAT、ACCEPTP、ACCEPTC),所以信息的提供独立于数据传送。或者,可以一次为一个通信线程提供信息。在一个优选实施例中,只有在通信线程状态已经改变时才提供信息。
显而易见的是,本发明的保护范围不受限于这里描述的实施例。应该注意的是,信息(例如用于通信线程的数据、有关通信线程的信息)可以在多个处理单元之间按照多种方式(例如串行、并行或上述方式的组合)来进行交换。
本发明的保护范围也不受限于权利要求中的附图标记。所述单词“包括”并不排除权利要求中提及的那些部分之外的部分。单词“一个”并不排除多个这样的要素。形成部分本发明的装置可以以专用硬件的形式实现,或者以被编程的通用处理器来实现。本发明体现在每个新特征或特征的组合。