用于发送数据的处理系统和方法
本发明涉及一种用于发送数据的方法,如权利要求1的引导部分所述。
本发明还涉及一种处理系统,如权利要求4的引导部分所述。
用于在第一和第二功能单元之间交换数据的方法,包括以下步骤:
在第一次握手过程中,交换与所述第一功能单元(I)所选择的通信线程(TID)相对应的数据,同时独立地
在第二次握手过程中,将与至少一个通信线程的状态相关的信息从所述第二功能单元(T)交换到所述第一功能单元(I);
其特征在于:
所述信息使所述第一功能单元(I)能够预计所述至少一个通信线程的数据交换的可能性。
第一次握手可以是从源功能单元、经由一个或多个中间功能单元、到目的功能单元的一系列数据事务中的一部分,其中,将数据从第一功能单元交换到第二功能单元。发起第一次握手的第一功能单元也被称为发起方或发起方功能单元。第二功能单元被称为目标方或目标方功能单元。
通过这样一系列数据事务,源功能单元可以将消息发送到目的功能单元。该消息可以包括命令、地址和/或其他数据。目的功能单元也可以继而向源功能单元发送相应的消息。功能单元可以是数据流中所涉及的任何单元,例如,诸如CPU、DSP或VLIW之类的对数据执行操作的单元,或诸如存储器之类的数据存储单元,或诸如路由器或接口之类的数据发送单元。
分割协议(split protocol)被定义为一种将事务分为请求和响应的协议。在从源功能单元沿着通信路径向第一中间功能单元发送请求结束之后,源功能单元可以继续进行下一次发送,而不必等待来自目的功能单元的对该请求的响应。必要情况下,目的功能单元或任何中间功能单元将启动一个独立的仲裁过程,以给出响应。当从属端的响应生成需要时间时,分割总线协议更高效。流水线技术使得主端可以有多个待解决的请求(即,等待响应的请求)。同一通信线程内的所有事务都是有序的:从属端执行请求的次序与主端发出这些响应的次序一样;传递响应的次序与主端发出这些响应的请求的次序一样。
通信线程可用于标识不同进程之间的数据流或从不同源功能单元发起的数据流。使用不同通信线程的事务没有任何次序约束。
源功能单元发送的消息可以包括命令、地址和/或其他数据。经由一个或多个中间功能单元将其转发,直至它到达目的功能单元。目的功能单元继而将相应的消息发送给源功能单元。
美国专利6182183提供了一种链路级协议,用于沿着从源功能单元到目的功能单元的路径在两个随后的功能单元之间交换消息。按照所知的协议,主功能单元产生信息,如命令(Cmd)、地址(Addr)或数据(DataReq),同时提供该信息所属的线程的标识(ReqThreadID)。同样,从属功能单元也可以提供信息(DataResp),并用标识RespThreadID表示它所属的流。
此外,从属端可以提供与通信线程状态相关的主端信息(ReqThreadBusy)。这使得从属端能够告诉主端它不能接收与特定线程相关的任何新请求。在一个实施例中,ReqThreadBusy信号是一个矢量,其中每个线程具有一个信号,有效信号表示相关线程忙。同样,响应线程忙(RespThreadBusy)信号告诉从属端它不能接收与特定线程相关的任何响应。
ThreadBusy信息(ReqThreadBusy and RespThreadBusy)防止发起方徒然地试图进行发送。相反,如果可用的话,它可以发起另一通信线程的传输。因此,该信息有助于更高效的通信。但是,如果所有线程都忙的话,则通信仍然受阻。
本发明的一个目的是提供一种改进的方法和处理系统。根据本发明的改进方法的特征在于权利要求1的特征部分。改进的处理系统的特征在于权利要求4的特征部分。
在根据本发明的改进方法中,目标方功能单元给出的信息不仅表示在提供该信息的同时能否处理特定线程的请求或响应,而且该信息使得第一功能单元(I)能够预计至少一个通信线程的数据交换的可能性。
这样,通过发起方功能单元中的调度器,能够更好地对不同通信线程的传输次序进行调度。
在权利要求2的实施例中,表示特定通信线程缓冲器的填充度的信息告诉发起方在缓冲器溢出发生之前数据传输将继续多长时间。这样,第一功能单元(I)就能够预计该通信线程的数据交换的可能性的终止。
在权利要求3的实施例中,表示预期等待时间的信息使得第一功能单元(I)能够预计何时提供新数据或何时可以接受新数据。例如,第二功能单元可能需要较长的处理时间来根据两个输入向量计算结果向量。它可以将剩余处理时间的指示告诉第一功能单元,结果向量将被发送给第一功能单元。于是,第一功能单元中的调度器可以在预期结果向量就绪时调度数据传输。
例如,它可以在另一通信线程的缓冲器溢出将发生时调度数据传输。同样,它可以将该指示发送给第一功能单元,第一功能提供输入向量,并在其调度时使用该信息。
通过向第一功能单元(I)提供信息以使它能够预计通信线程的数据交换的可能性,可以更好地对不同通信线程的传输进行调度。这样,就可以减少所有通信线程同时不可用情形的发生。
本发明尤其涉及一种被实现为网络中多个功能单元的晶片(system on silicon)。由于实现新特征和现有功能改进的需求不断增长,晶片的复杂度表现出连续的增长。通过增加可将部件集成到集成电路中的密度,实现这一点。同时,电路工作的时钟速度也将提高。更高的时钟速度和更高的部件密度减少了在相同时钟域内同步工作的区域。这创造了模块化方法的需求。根据该方法,处理系统包括多个相对独立、复杂的模块。在传统的处理系统中,这些模块通常经由总线相互通信。但是,随着模块数量的增加,这种通信方式不再实际,原因如下。一方面,大量的模块形成太高的总线负载。另一方面,总线形成通信瓶颈,由于它只允许一个设备向总线发送数据。通信网络是克服这些缺点的有效方法。通信网络包括多个部分连接的节点。节点将来自一个模块的消息重新定向到一个或多个其他节点。这意味着,很多信息流将在一对发起方单元和目标方单元之间传递。本发明有利于这些流的调度。
下面结合附图更详细地描述这些和其他方面,其中:
图1示出了传统的数据交换方法;
图2是根据本发明的数据交换方法的示意图;
图3示出了根据本发明的方法的第一实施例;
图4示出了根据本发明的方法的第二实施例;
图5示出了第一实施例的第一个例子;
图6示出了第一实施例的第二个例子;
图7示出了第二实施例的第一个例子;
图8示出了第二实施例的第二个例子;
图9示出了根据本发明的包括多个功能单元的网络。
图1示出了传统的数据交换方法。
其中,第一处理单元(P)提供通信线程的标识符TID、该线程的数据DATA以及用信号VALID表示有效性。如果第二处理单元能够接受该线程,它用信号ACCEPT表示这一点。
图2是根据本发明的用于在第一和第二功能单元之间交换数据的方法的示意图。该方法包括以下步骤。在第一次握手过程(HSD)中,将与第一功能单元(I)和第二功能单元(T)所选择的通信线程相对应的数据进行交换。与此同时,在第二次握手过程(HST)中,从第一功能单元(I)将交换第二信息到第二功能单元(T),第二信息涉及从第二功能单元(T)到第一功能单元(I)的至少一个通信线程的状态。该信息使得第一功能单元(I)能够预计至少一个通信线程的数据交换的可能性。
数据传输的第一次握手可以是如VCI、OCP(后面将在图5和图7中更详细地描述)所使用的典型握手,或者是扩展的握手,其中,提供关于某一个TID上的事务能否进行的反馈(参见图6和8)。用另一信号组来扩展该基本信号组,作为独立的会话来收集关于能够在哪些通信线程上不停地调度数据的信息。
第一次握手HSD和第二次握手HST是独立的,因此可以并行地执行。发起方使用从第二次握手HST中收集的信息,高效地对不同通信线程的通信进行调度。
在一个实际例子中,第二次握手HST包括交换第一信号INFOTID、第二信号INFO VALID和第三信号INFO INFO。第一信号INFOTID表示一个特定的通信线程。第二信号INFO VALID表示信号INFOTID是否有效。第三信号INFO INFO可以具有不同的意思,这取决于协议的未来实现。例如,它可以表示预期等待时间,即,对于用信号INFO TID标识的线程,数据何时变为可用或何时可以接受数据。或者,例如,该信号可以表示缓冲器的填充度。该信息有助于数据消费发起方估计数据生成目标方可以在多长时间内继续从其缓冲器提供数据。这可以是最好情况估计或最差情况估计。通过计算读取缓冲器当前内容所需的时间,可以做出最差情况估计;通过假设数据生成目标继续以特定速率提供数据,可以做出最好情况估计。实际上,目标方可能在平均时间内产生新数据。同样,它可以帮助数据生成发起方估计数据消耗目标方可以在多长时间内继续接受数据。这也是最差情况估计。实际上,目标方可能在平均时间内处理它的缓冲器中存储的数据。通过考虑数据处理的平均速率,可以做出最好情况估计。
在图3所示的方案中,发起方请求(轮询)来自目标方的通信线程信息。通过用INFO TID信号和上升的INFO VALID表示一个通信线程,一次请求一个通信线程的信息。目标方提供关于INFO INFO信号的信息(在这种情况下,是固定数量的周期)。
对于该方案,可以定义多个不同的握手机制。一个例子是,用有效信息(INFO VALID)来声明请求INFO TID所标识的通信线程的有关信息。在诸如一个周期之类的预定时间间隔内,它将保持高,并且,响应(INFO INFO)将在固定数量(如1个)的周期内到来。在另一个允许目标方延迟发送的例子中,保持有效信号(VALID INFO)为高,直至响应到来。用在单个周期中也给出响应(INFO INFO)的接受信号来传送响应。
图5和6分别详细地示出了发起者为生产者和消费者的轮询机制的例子。对于发起者为生产者的情况,例如,消费者目标方可以提供表示接受给定通信线程上数据的可用缓冲器空间量的信息。例如,生产者目标方可以向消费者发起方提供给定通信线程中有多少数据可用或者指示它提供新数据的频率。
在图4所示的第二种机制中,目标方驱动信息流向发起方。例如,可被提供给发起方的信息包括关于在给定通信线程上可以不停地执行多少次握手的更新,为差值或绝对值(类似于中断)。也可以采用如前述扩展中的不同握手机制。
图7和图8分别示出了发起方是生产者和消费者的中断机制的例子。对于发起方为生产者的情况,消费者目标方能够通知发起方在给定通信线程上变为可用的各新缓冲器空间(或缓冲器空间组)。对于发起方为消费者的情况,生产者目标方能够通知发起方变为可用的各新数据元素(或数据元素组)。
所提出的两种机制适用于不同的场合。如果发起方是CPU,则轮询机制(检查每个合适的通信线程,以决定下一次对谁进行调度)可以具有较低成本。该中断机制需要将通知作为处理成本高的中断,因为它们需要场合切换。
对于专用功能单元,与流量控制类似的中断机制具有较低成本,因为它只会导致例如计数器更新。通信线程调度器总是具有最新的必需信息,并能够立即执行。
与此不同的是,在专用单元请求信息的轮询机制中,或者在调度决策之前消耗以前的周期,或者使用不完全信息,从而降低了调度质量。
即使在功能单元不支持这些扩展的情况下,仍可以通过前述扩展机制使用它,因为基本的握手没有改变,并且通过将INFO VALID默认为较小值可以忽略附加的信号组。
通过简单地忽略信息组,可以将不支持该扩展的发起方连接到支持这些扩展之一的目标方。对于轮询机制,目标方不会得到任何请求,因此不会产生任何信息。
对于中断机制,所产生的信息将被忽略。将支持这些扩展之一的发起方连接到一个不支持该扩展的目标方,需要将发起方设计为:即使没有来自目标方的信息,仍能够调度通信。
为了将一个支持轮询机制的发起方功能单元连接到支持中断机制的目标方功能单元,必须在这两个功能单元之间插入一个小适配器,其中存储来自目标方的通知,以便于当发起方请求信息时将其传递到发起方。此外,从生产者向消费者发送的数据必须经过该适配器,以更新握手信息。例如,对于目标方为消费者的情况,缓冲器填充(将由适配器报告给发起方)将随传输数据而增加,对于目标方为生产者的情况,数据可用性(由适配器报告给发起方)将随传输数据而增加。
同样,将支持中断机制的发起方与支持轮询机制的目标方连接,需要在它们之间插入适配器,其查询目标方,并将改变通知给发起方。
这两种扩展只覆盖了两种可以经由附加握手获得关于通信线程的信息的情况:(a)发起方请求信息,以及(b)将目标方的任何改变通知发起方。
所提出的机制涉及在独立通信线程上进行通信的设备和系统级通信协议,如VCI和OCP。它扩展了现有的链路级机制,从而允许从目标方收集信息。发起方使用该信息,获得对链路上通信线程的更好调度。
所提出的两种机制只覆盖了两种可以经由附加握手获得关于通信线程的信息的情况:(a)发起方请求信息,以及(b)将消费者的任何改变通知发起方。
图9示出了一种数据处理系统,它包括连接多个功能单元的网络。该处理系统用于:按照分割协议,沿着从源功能单元SFU、经由一个或多个中间功能单元IFU1……IFU5、到目的功能单元DFU的通信路径,发送数据和所述数据的通信线程标识符。该通信路径至少包括一对如图2至8中之一所示的发起方和目标方单元。通过将数据与通信线程标识符一起发送,具有彼此不同的通信线程标识符的多个不相关事务可以独立地演进。
应当注意的是,本发明的保护范围不限于这里描述的实施例。权利要求中的标记也不限制本发明的保护范围。“包括”一词并不排除存在权利要求所记录的部件或步骤之外的其他部件或步骤。部件前面的冠词“一个”并不排除存在多个这样的部件。构成本发明一部分的模块的实现形式可以是专用硬件,或被编程的通用处理器。本发明存在于各新特征和特征的组合。