令牌协议转让专利

申请号 : CN200880023610.6

文献号 : CN101689159A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 迈克尔·戴维·梅

申请人 : XMOS有限公司

摘要 :

本发明提供了一种在处理器之间的链路上传递一个或多个令牌的方法,从而这些线上的逻辑转换的配置被用于发送各代码。该方法包括:通过在所述线上发送从所述代码中选出的代码序列来传递令牌;以及在所述线上传递一个或多个附加码,以确保在发送所述一个或多个令牌和附加码之后,每条线上的逻辑转换的总数将链路返回到休眠状态。

权利要求 :

1.一种在处理器之间的链路上传递令牌的方法,所述链路包括一线和零线,其中,所述一线上的逻辑转换指示逻辑一,所述零线上的逻辑转换指示逻辑零,所述方法包括: 传递令牌的第一部分;以及 传递所述令牌的第二部分,以确保所述令牌中的逻辑一位的总数是偶数、所述令牌中的逻辑零位的总数是偶数,从而所述链路在所述令牌的结尾返回到休眠状态。

2. 根据权利要求1所述的方法,包括确定传递数据令牌还是传递 控制令牌,其中,所述第一部分包括:信息部分,用于在确定传递数据令牌的情况下传送数据, 在确定传递控制令牌的情况下传送控制信息;以及第一附加 位,用于指示所述令牌是数据令牌还是控制令牌。

3. 根据权利要求1所述的方法,其中,所述链路在同一电路板或 芯片上的处理器之间。

4. 才艮据权利要求1所述的方法,其中,所述第一部分具有由偶数 个信息位和第一附加位组成的奇凄t个位,其中,所述第二部分 是第二附加位。

5. 根据权利要求4所述的方法,包括确定所述第一部分是否包含 偶数个为逻辑一 的位和奇数个为逻辑零的位,或者确定所述第 一部分是否包含奇数个为逻辑一位和偶数个为逻辑零的位;其中,在所述第一部分包含偶数个逻辑一和奇数个逻辑零 的条件下,所述第二部分是逻辑零位;以及在所述第一部分包含奇数个逻辑一和偶数个逻辑零的条 件下,所述第二部分是逻辑一位。

6. 4艮据4又利要求5所述的方法,包括通过对所述第一部分进行逐 位XOR来计算所述第二部分。

7. 根据权利要求2所述的方法,其中,所述信息部分为八个位。

8. 根据权利要求4所述的方法,其中,在所述令牌内的传递顺序 是:所述第一附加位、信息部分、然后是所述第二附加位。

9. 根据权利要求1所述的方法,其中,所述第一部分由在其中一 个所述处理器上执行的软件生成,所述第二部分由所述链路中 的硬件生成。

10. 根据权利要求9所述的方法,其中,所述第一部分是在所述处 理器之一上执行的指令的操作数。

11. 根据权利要求2所述的方法,其中,所述令牌是结构定义的控 制令牌,所述方法包括使用所述控制令牌来触发所述互连中的 逻辑,以控制所述互连的部件。

12. 才艮据权利要求11所述的方法,包括通过使用在目的处理器上 执行的软件来接收所述结构定义的控制令牌,以便在软件中执 行功能。

13. 根据权利要求12所述的方法,其中,所述结构定义的控制令 令牌。 、 、 、 口 口 '

14. 根据权利要求2所述的方法,其中,所述令牌是软件定义的控 制令牌。

15. 根据权利要求1所述的方法,其中,所述令牌在包括用于指定 目的处理器的一个或多个头令牌的消息中被传递。

16. 根据权利要求1所述的方法,其中,在具有电路的互连上传递 所述令牌,所述电路包括开关和链路的系统,所述链路连接在 阵列的两个以上处理器之间。

17. —种设备,包括多个处理器以及所述处理器之间的链路,所述 链路包括一线和零线,其中,所述一线上的逻辑转换指示逻辑 一,所述零线上的逻辑转换指示逻辑零,其中,至少第一处理 器被配置为:传递令牌的第一部分;以及传递所述令牌的第二部分,以确保所述令牌中的逻辑一位 的总数是偶数、所述令牌中的逻辑零位的总数是偶数,从而所 述链路在所述令牌的结尾返回到休眠状态。

18. 才艮据权利要求17所述的设备,其中,第一处理器被配置为确 定传递数据令牌还是传递控制令牌;以及其中,第一部分包括:信息部分,用于在确定传递数据令 牌的情况下传送数据,在确定传递控制令牌的情况下传送控制 信息;以及第一附加位,用于指示所述令牌是数据令牌还是控 制令牌。

19. 根据权利要求17所述的设备,其中,所述设备包括在同一电 路板或芯片中。

20. 根据权利要求17所述的设备,其中,所述第一部分具有由偶 凄t个信息位和第一附加位组成的奇凄t个位,其中,所述第二部 分是第二附加位。

21. 根据权利要求20所述的设备,其中,所述第一处理器被配置 为确定所述第一部分是否包含偶凄t个为逻辑一的位和奇婆史个 为逻辑零的位,或者确定所述第一部分是否包含奇数个为逻辑 一的位和偶^i:个为逻辑零的位;其中,在所述第一部分包含偶数个逻辑一和奇数个逻辑零 的条件下,所述第二部分是逻辑零位;以及在所述第一部分包含奇数个逻辑一和偶数个逻辑零的条 件下,所述第二部分是逻辑一位。

22. 根据权利要求21所述的设备,包括逻辑电路,其被配置为通 过》于所述第一部分进4于XOR来计算所述第二部分。

23. 根据权利要求18所述的设备,其中,所述信息部分为八个位。

24. 根据权利要求20所述的设备,其中,所述令牌内的传递顺序 是:所述第一附加位、信息部分、然后是所述第二附加位。

25. 根据权利要求17所述的设备,其中,所述第一部分由在所述 第一处理器上执行的软件生成,所述第二部分由所述链路中的 硬件生成。

26. 根据权利要求25所述的设备,其中,所述第一部分是在所述 第一处理器上执行的指令的操作数。

27. 根据权利要求18所述的设备,其中,所述令牌是结构定义的 控制令牌,并且互连包括^皮配置为由所述控制令牌触发以控制 所述互连的部〗牛的逻辑。

28. 根据权利要求27所述的设备,其中,第二处理器被配置为通 过使用在所述第二处理器上执行的软件来接收所述结构定义 的控制令牌,以便在软件中执行功能。

29. 才艮据权利要求28所述的设备,其中,所述结构定义的控制令 牌仅是对在所述第二处理器上执行的特权软件可访问的特权 控制令牌。

30. 根据权利要求18所述的设备,其中,所述令牌是软件定义的 控制令牌。

31. 4艮据权利要求17所述的设备,其中,所述第一处理器被配置 为在用于指定目的处理器的一个或多个头令牌的消息中传递 所述令牌。

32. 根据权利要求17所述的设备,其中,互连包括开关和链路的 系统,所述链^各连接在阵列的两个以上处理器之间。

33. —种在处理器之间的链路上传递令牌的计算机程序产品,所述 链路包括一线和零线,其中,在所述一线上的逻辑转换指示逻 辑一,在所述零线上的逻辑转换指示逻辑零,所述程序包括当 处理器执4于以下步骤时所才丸4于的代石马:传递令牌的第一部分;以及传递所述令牌的第二部分,以确保所述令牌中的逻辑一位 的总数是偶数、所述令牌中的逻辑零位的总数是偶数,从而所 述链路在所述令牌的结尾返回到休眠状态。

34. —种设备,包括多个处理装置以及用于在所述处理装置之间进 行链接的链接装置,所述链接装置包括用于通过逻辑转换指示 逻辑一的逻辑一传递装置以及用于通过逻辑转换指示逻辑零 的逻辑零传递装置,其中,至少第一处理装置包括用于传递令牌的第一部分的传递装置;其中,传递装置还用于传递所述令牌的第二部分,以确係:所述令牌中的逻辑一位的总数是偶数、所述令牌中的逻辑零位 的总数是偶数,从而所述链接装置在所述令牌的结尾返回到休 眠状态。

35. —种在处理器之间的链路上传递一个或多个令if皁的方法,其中,所述链路包括至少三条线,所述三条线被配置为根据编码 方案传递令牌,从而这些线上的逻辑转换的预设配置被用于发送各代码,所述方法包括: 递令牌;以及在所述线上传递一个或多个附加^码,以确〗呆在发送所述 一个或多个令牌以及附加代码之后,每条线上的逻辑转换的总 数将链路返回到休眠状态。

36. 根据权利要求35所述的方法,其中,所述链路包括五条线, 所述线中的四条中的每一条上的逻辑转换对相应的值进行编 码,并且剩下的第五条所述线上的逻辑转换发送转义码;并且 所述方法包括:述第五条线上发送的转义码来传递数据令牌;以及通过传递从所述代码中选出的代码序列,包括使用所述第 五条线发送的所述转义码来传递控制令牌。

37. 根据权利要求35所述的方法,其中,所述一个或多个附加转 换的发送包括传递至少一个所述代码,以确保每条所述线上的 逻辑转换的总数是偶数。

38. 根据权利要求35所述的方法,包括传递由所述链路生成的置 信令牌以指示所述链路的自由容量,所述置信令牌包括一对或 多对所述代码,并且每对中的所述代码是相同的,以便每条所 述线上的逻辑转换的总数是偶数或者零,因此在传递置信令牌 之后链路的状态不受影响。

39. —种i殳备,包4舌多个处理器以及在所述处理器之间的链3各,所 述链路至少包括三条线,所述三条线;故配置为4艮据编码方案来 传递一个或多个令牌,从而这些线上的逻辑转换的预设配置被 用于发送各代码,至少第一个所述处理器被配置为:通过在所述线上发送从所述代码中选出的代码序列来传 递令牌;以及在所述线上发送一个或多个附加代码,以确保在发送所述 一个或多个令牌以及附加转换之后,每条线上的逻辑转换的总 数将链路返回到休眠状态。

40. 根据权利要求39所述的设备,其中,所述链路包括五条线, 所述线中的四条中的每一条上的逻辑转换用于对相应的值进 行编码,并且剩下的第五条所述线上的逻辑转换发送转义码; 所述第一处理器被配置为:述第五条线上发送的转义码来传递数据令牌;以及通过传递从所述代码中选出的代码序列,包括使用所述第 五条线发送的所述转义码来传递控制令牌。

41. 根据权利要求39所述的设备,其中,所述第一处理被配置为 通过传递至少一个所述代码来发送一个或多个附加转换,以确 保每条所述线上的逻辑转换的总数是偶数。

42. 根据权利要求39所述的设备,其中,所述链路被配置为生成 置信令牌以指示所述链路的自由容量,所述置信令牌包括仅一对或多对所述代码,每对中的两个代码是相同的,以便每条所 述线上的逻辑转换的总数是偶数或者零,因此在传递置信令牌 之后链路的状态不受影响。

43. —种在处理器之间的链i?各上传递一个或多个令牌的计算才几程 序产品,其中,所述链路包括至少三条线,所述三条线被配置 为根据编码方案来传递令牌,从而所述线上的逻辑转换的预设 配置用于发送各代码,所述程序包括当处理器执行以下步骤时 所执行的代码:递令牌;以及在所述线上传递一个或多个附加^码,以确^呆在发送一个 或多个令牌以及附加代码之后,每条线上的逻辑转换的总数将 链路返回到休眠状态。

44. 一种设备,包括多个处理装置以及所述处理装置之间的链接装 置,所述链接装置至少包括三个传递装置,所述传递装置用于 根据编码方案传递一个或多个令牌,从而所述传递装置上的逻 辑转换的预设配置被用于发送各代码,至少第一个所述处理装 置用于:通过在所述传递装置上发送从所述代码中选出的代码序 列来传递令牌;以及在所述传递装置上发送一个或多个附加代码,用于确保在 发送所述一个或多个令牌以及附加转换之后,每个所迷传递装 置上的逻辑转换的总数将链接装置返回到休眠状态。

说明书 :

令牌协议

技术领域

本发明涉及在处理器之间的链路上传递令牌(token )。

背景技术

处理器i殳计者面对的才4战之一是在处理器之间处理大量通信,
(direct)消息的链路的电路的互联系统上,例如,设置在同一电路 4反或芯片上的链路。
一个具体的问题就是这些通信在互连中消耗大量的功率。因此 迫切期望能够降低这些通信的功耗。
另 一个困难在于进行通信控制信息。发送到这种互联上的消息 典型地由离散的凄t据字节组成。然而,必须还有一种用于传递控制 信息(用于控制互连本身)的机制。例如,控制信息可以是关闭由 开关所建立的通道的"消息结束,,信号,或者是读取或写入其中一 个开关或链路的控制寄存器的请求。难以解决的是找到一种方便地 与数据传递机制共存的控制机制。
视"消息结束"示例作为该问题的说明,通常电路设计者可能 在消息中分配(assign)字节值255作为控制值,表示消息结束,并 因此使开关关闭两个正在通信的处理器之间的通道。然而,在没有 误解实际数字255为关闭通道的请求下,如果软件开发者想要将该实际数字255传送至目的软件,然后为了防止互连在进行所期望的 通信时以这样的方式^皮触发,传统上必须将复杂的换码顺序(escape sequence )才勾建到传递4几制(transfer mechanism )中。
另外,需要提供一种更灵活的、在不同的专用需求范围内都是 有用的控制机制。
本发明的目的是降低由于处理器之间的通信而产生的功耗。在 实施例中,本发明的另一个的目的是将所降低的功耗与用于传递控 制信息的改进机制有效地结合在 一起。

发明内容

根据本发明的一个方面,提供了 一种在处理器之间的链路上传 递令牌的方法,所述链路包括一线和零线,其中, 一线上的逻辑转
换指示逻辑一,零线上的逻辑转换指示逻辑零,该方法包括:传递 令牌的第一部分;并且传递令牌的第二部分,以确保令牌中的逻辑 一位的总数是偶数、令牌中的逻辑零位的总数是偶数,从而链路在 令Jf皁的结尾返回 <木目民4犬态(quiescent state )。
由于每个令牌总是包含偶数个一和偶数个零,则每条一线和零 线总是作出偶数次逻辑转换,即对于每次上升转换都存在一次下降 转换。这意味着一旦链路完成了令牌的传递,则链路总是能确保其 返回到^f氐电压。
在实施例中,该方法包括确定是传递数据令牌还是传递控制令 牌,其中第一部分包括:信息部分,用于在确定传递凄t据令牌的情 况下传送数据,在确定传递控制令牌的情况下传送控制信息;以及 第一附加位,其指示令牌是数据令牌还是控制令牌。
该链路可以在同 一 电路板或者芯片上的处理器之间。第 一部分可以具有奇凄t个位,其由偶l丈个信息位和第 一附加位 组成,且其中第二部分是第二附加位。4言息部分可以为,\个位。
该方法可以包4舌确定第一部分是否包含偶ft个为逻辑一的4立和 奇数个为逻辑零的位,或者确定第 一部分是否包含和奇数个为逻辑
一的位和偶凄t个为逻辑零的位;其中,在第一部分包含偶凄t个逻辑 一和奇数个逻辑零的条件下,第二部分是逻辑零位;以及在第一部
分包含奇数个逻辑一和偶数个逻辑零的条件下,第二部分是逻辑一 位。
该方法可以包括通过对第一部分进行逐位XOR来计算第二部分。
在第一部分具有九个位的实施例中,仂、议是非常有效的,因为 信息部分可以4皮构成一个具有单个附加位的合适的字节(八个位) 长度,以指示令牌是控制令牌还是数据令牌,并且单个附加位将链 路返回到^f木眠状态。逐位XOR是计算第二附加位的非常有效的方式。
另外,通过使用不是字节而是更长位的令牌,可以避免复杂的 换码序列,并且整个范围的不同控制令牌都可用,而不沖击传递数 据机制。
在令牌中的传递顺序可以是:第一附加位、信息部分,然后是 第二附加位。
第一部分可以由在其中一个所述处理器上执行的软件生成,并 且第二部分可以由链路中的硬件生成。第一部分可以是在所述处理
器之一上执行的指令的操作数。控制令牌,
并且该方法可以包括^使用控制令牌来触发互连中的逻辑,以控制互 连的部件。该方法可以包括通过使用在目的处理器上执行的软件来 接收所述结构定义的控制令牌,以便在软件中执行功能。所述结构 定义的控i 特权控制令牌<
所述令牌可以是软件定义的控制令牌。
可以在包括用于指定目的处理器的一个或多个头令牌的消息中 传递令牌。
可以在具有电路的互连上传递令牌,该电路包括开关和链路的 系统,该链路连接在阵列的两个以上处理器之间。
根据本发明的另一个方面,提供了一种设备,该设备包括多个 处理器以及所述处理器之间的链^各,所述链路包4舌一线和零线,其 中, 一线上的逻辑转换指示逻辑一,零线上的逻辑转换指示逻辑零, 其中,至少第一处理器^皮配置为:传递令牌的第一部分;以及传递 令牌的第二部分,以确保令牌中的逻辑一位的总数是偶数、令牌中 的逻辑零位的总数是偶数,使得链路在令牌的结尾返回到休眠状态。
根据本发明的另 一个方面,提供了 一种用于在处理器之间的链 路上传递令牌的计算才几程序产品,该链路包括一线和零线,其中, 一线上的逻辑转换指示逻辑一,以及零线上的逻辑转换指示零,该 程序包括当处理器执行以下步骤时所执行的代码:传递令牌的第一 部分;以及传递令牌的第二部分,以确保令牌中的逻辑一位的总数 是偶数以及令牌中的逻辑零位的总数是偶数,使得链路在令牌的结 尾返回到4木眠^)犬态。
14根据本发明的另一个方面,提供了一种设备,该设备包括多个 处理装置以及用于在所述处理装置之间进行链接的链接装置,链接 装置包括通过逻辑转换指示逻辑一的逻辑一传递装置以及通过逻辑 转换装置指示逻辑零的逻辑零传递装置,其中,至少第一处理装置
包括用于传递令牌的第一部分的传递装置;其中传递装置还用于传 递令牌的第二部分,以确4呆令牌中的逻辑一位的总凄t是偶H以及令 牌中的逻辑零位的总数是偶数,从而链接装置在令牌的结尾返回到 休眠状态。
,恨据本发明的另一个方面,提供了一种在处理器之间的链路上 传递一个或多个令牌的方法,其中链路至少包括三条线,这三条线 都被设置为根据编码方案传递令牌,从而在这些线上的逻辑转换的 预设配置被用于发送各个代码,该方法包括:通过在所述链路上发 送从所述代码中选出的代码序列来传递令牌;以及在所述线上传递 一个或多个附加代码,以确保在发送所述一个或多个令牌以及附加 代码之后,每条线上的逻辑转换的总数将链路返回到休眠状态。
链路可以包括五条线,所述线中的四条中的每一条线上的逻辑 转换用于编码相应的值,以及剩下的第五条所述线上的逻辑转换发 送哞争义石马(escape code );并且该方法可以是包4舌以下的方法:通过 传递在所述四条线上发送的代码序列而不传递在所述第五条线上发 送的转义码来传递数据令牌;以及通过传递从所述代码中选出的代 码序列,包括使用所述第五条线来发送转义码来传递控制令牌。
一个或多个附加转换的发送(signalling)可以包括传递至少一 个所述代码,以确保每条所述线上的逻辑转换的总数是偶数。
该方法可以包括传递由链路生成的置信令牌(credit token)以 指示链路的自由容量(free capacity),置信令牌包括一对或多对所 述代码,每对中的代码都是相同的,以^f更每条所述线上的逻辑转换的总数是偶数或者零,因此在传递置信令牌之后链路的状态不受影响。
根据本发明的另 一个方面,提供了 一种包括多个处理器以及在所述处理器之间的链路的装置,该链路至少包括三条线,这些线被设置为根据编码方案来传递一个或多个令牌,从而在这些线上的逻
辑转换的预设配置被用于发送各代码,至少第一个处理器被配置为:
及在所述线上发送一个或多个附加代码,以确保在发送所述一个或多个令牌以及附加转换之后,每条线上的逻辑转换的总数将链路返回到休眠一犬态。
根据本发明的另 一个方面,提供了 一种用于在处理器之间的链路上传递一个或多个令牌的计算机程序产品,其中,链路至少包括三条线,这三条线都被设置为根据编码方案传递令牌,从而这些线上的逻辑转换的预设配置被用于发送各代码,该程序包括当处理器执行以下步骤时所执行的代码:通过在所述线上发送从所述代码中选出的代码序列来传递令牌;以及在所述线上传递一个或多个附加代码,以确保在发送一个或多个令牌以及附加代码之后,每条线上的逻辑转换的总数将链路返回到休眠状态。

附图说明

图1示出了4妾口处理器的示例应用;图2示出了4妄口处理器的另一个示例应用;图3是接口处理器的结构的示意性表示;图4是端口的示意性表示;图5是线程寄存器集的示意性表示;图6是线程寄存器集之间的互连的示意性表示;图7是通道末端的示意性表示;图8是处理器间的互连的示意性表示;图9示出了令牌格式;图10示出了读取请求消息格式;图11示出了成功读取响应消息格式;以及图12示出了失败读取响应消息格式。具体实施方式
图1示出了移动电话中的4妻口处理器的示例应用。移动应用处理器2需要与多个外围设备8通信。应用处理器2包括总线3、 CPU4,以及用于与石更盘驱动器(HDD) 8a和SDRAM存储器8b以及功率控制器10和无线电处理器12对接的存储器控制器6a。
图1的布置允许CPU4通过通用端口 7进4亍外部通信。在这个示例中,提供了通用端口 7a和7b,用于与照相才几8c和LCD显示器8d对4妄;提供了通用端口7c,用于与麦克风8e、扬声器8f和耳才几8g对"l妄;以及4是供了通用端口 7d,用于与4建盘8h、通用串4亍总线(USB)设备8i、安全数字(Secure Digital) (SD)卡8j、多媒体卡(MMC ) 8k,以及通用异步传递收发器(UART )设备81对接。
图1中,接口处理器14a、 14b以及14c设置在相应端口 7的输出端,同时第一接口处理器14a连接在图像设备8c-8d和通用端口 7a-7b之间,第二接口处理器14b连接在音频设备8e-8g和通用 端口 7c之间,以及第三接口处理器14c连接在通用端口 7d和各种 连接设备8h-81之间。端口7只需是通用端口,因为由接口处理器 14a-14c以下文^)寻描述的方式来扭J于专用显示、音频以及连4姿功能。 端口 7不需要使用FPGA逻辑,因为接口处理器14提供了否则由 FPGA提供的灵活性和可配置性。接口处理器14a具有连接至端口 7a和7b的端口 22a和22b,以及连4妄至夕卜围i殳备8c和8g的22c、 22d、 22e、和22f。接口处理器14b和14c具有图1中未示出的相 似端口 。
接口处理器典型地涉及:经由各接口执行用于传递数据6々特定 协i义;重新才各式化(reformat )数据,包4舌在并4亍格式(parallel format) 和串行格式(serail format)之间转换数据;以及可能更高级的功能, 诸如编码凄t据、压缩凄t据或者加密婆t据。
接口处理器14的另一种应用是作为如图2所示的多处理器阵列 200的部件。这种阵列200包括多个处理器瓦片(tile) 202,其中每 个瓦片在阵列中定义了一个节点,并且包括一个或多个处理器14 和互连204。这些瓦片202经由支持阵列200中的瓦片202之间的 通信的高性能连接218连接, 一些处理器14使用端口 22与阵列200 外部的其他设备进行通信。可以在单个芯片上执行该阵列,或者从 多个芯片中组装该阵列。
下文中将更充分讨论的接口处理器的重要功能是其管理内部和 外部通信的能力。每个处理器包括CPU、存储器以及通信系统 (communication )。为了允i午CPU和端口之间的直4妻和响应连孑妄, 每个处理器具有用于执行多个并发程序线程的硬件支持,每个线程 都包括指令序列,并且至少一些指令可以负责处理通信。如下文中 将更充分讨论的,硬件支持包括:-用于各个线程的一组寄存器,
-动态选择执行哪个线程的线程调度器,
-用于输入和输入的一组端口 (端口22),以及 -用于在线禾呈之间建立通道的互连系统。
在每个处理器上使用小线程组的可以用于允许通信或者输入/ 输出与由处理器处理的待处理(pending)任务一起进行,并且通过 允i午一些线禾呈继续而其^f也线禾呈暂1'亭到或来自远禾呈4妾口处J里器的4寺处 理通信而而允许互联中的等待隐藏。
图3示意性地示出了冲艮据本发明的一个实施例的接口处理器14 的示例性结构。处理器14包括用于在线程调度器18的控制下执行 指令线程的执行单元16。处理器14还包括用于保存程序代码和其 他数据的随才;Wf取存储器(RAM) 24,以及用于存储永久信息(诸 如引导代码)的只读存储器(ROM)(未示出)。
线程调度器18动态的选择执行单元16应该执4于哪个线程。通 常,为了保持充分占用处理器,线程调度器可以仅从程序存储器中 调度线程。然而,4艮据本发明,线程调度器18的调度还与端口 22 处的活动(activity)相关。应当注意,在这方面,线^f呈调度器可以 直接耦合到端口 22上,以^f更当由于端口处的输入或输出活动线程变 得可运行时使延迟最小化。
线程调度器18所考虑的m个线程中的每一个都由线程调度器 18可访问的寄存器库(bank ) 20中的相应组的线程寄存器20卜.20m 表示。还提供了指令緩冲器(INSTR) 19,用于在随后发到执行单 元16之前,临时存储从存储器24取出的指令。数据可以通过通道 在寄存器组20之间通信。这些寄存器和通道的细节将在后面讨论。在m个线程中,线程调度器18维持一组n个可运行线程,该 组^皮称为"运4亍",线程调度器从该组中优选地以循环方式 (round-robin manner )依次提取指令。当线程不能继续时,则线程 调度器通过将该线程从该运行组中移除而使其暂停。这样做的原因 是,例如,因为线程正等待一个或多个以下类型的活动:
-其寄存器在能够运行之前先被初始化,
-试图从没有准备就绪或者没有可用凄t据的端口或通道l命入,
-试图输出至未就绪或没有用于数据的空间的端口或通道,
-已经执行了致使其等待一个或多个事件的指令,这些事件可 以在端口准备好输入时生成。
应当注意,本文所用的术语"事件"是指具体的操作类型,其 略不同于基本的输入-输出操作。下面结合图4和5讨论所述区别。
有利i也,为了有助于快速反应时间,在线程调度器18和"^Vf亍单 元16之间设置了直接硬接线连接28,以允许线程调度器18控制执 行单元16应取出并执4亍哪个或哪些线程。在线程调度器18和各端 口 22之间也设置直接硬接线路30a、 30b、 30c;以及在线程调度器 18和各寄存器20之间设置直接硬接线路29卜.29m。这些直接线路 优选地提供允许线程调度器将各线程与一个或多个端口 22相关联 的控制线路,并且更具体地,当端口发生某个活动时允许线程调度 器从该端口返回就绪指示,控制线路用于允许处理器快速响应于在 端口 22处发生的活动或激^力。在下文结合图4和图6讨i仑涉及端口 的线程调度器的操作。
执行单元16还经由直接连接27和31访问各端口 22a-22c以及 各寄存器2(V20m,因此在核心处理器、寄存器、和外部环境之间提
20供了直接链路。优选地,这些直接线路提供了另外的控制线路,以
允许执行单元将条件传递给端口 。这将在下面结合图4进一步详细 讨论。直接线路27和31也可允许数据在线程寄存器20和端口 22 之间直接输入和输出,因此允许各线程直接与外部环境通信。例如, 数据可直接从外部设备写到线程的其中 一个操作数寄存器,而非写 到存储器24随后再取出。相反,在一次操作之后,来自操作数寄存 器的数据可由执行单元16获取并直接发出端口 22。这显著缩短了 反应时间。
应当注意,"直接连接"或"直接线路"表示与执行单元和程序 存储器24之间的连接相分离的连接。因此,例如,线程调度器18 和执行单元16访问来自端口 22的数据无需存储这些数据随后再从 存储器24取出。具体地,如果执行单元16和存储器24之间的连接 经由总线13,则"直接"连接或线路指的是与总线相分离的连接。 因此,无需总线仲裁(bus arbitration),缩短反应时间,端口 22、 寄存器20、线程调度器18和执行单元16之间的各种通信都可以发 生。端口 22还可配备有具有总线13的另外的连接(未示出)。
图4示意性地示出了根据本发明的优选实施例的端口 22。端口 22包括I/O緩沖器32,其用于传递送往和来自处理器14的输入和 输出数据。此外,各端口 22还包括活动处理逻辑36,用于监视发 生在端口的活动并通过至少一个就绪数位或标记37发送某个活动 发生。就绪标记37优选地经由直接线路30发信令至线程调度器。 端口可检测的潜在活动包括:
-数据已经输入到端口
- 一些特定凄t据已经输入到端口 ,和/或
-端口已经可用于输出。为了有助于对这些活动的4企测,端口 22配备有一组寄存器38。 这些寄存器包括:线程标识符(TID)寄存器,用于存储相关线程 的标识符(identification);控制(CTRL)寄存器,用于存储一个或 多个条件;连续点矢量(VECTOR)寄存器,用于存储在程序中执 行被桂起的位置;以及数据(DATA)寄存器,用于存储任何与条 件相关联的数据。值TID由线程调度器18经由直接线;?各30 (图3 中直接线路是30a、 30b、 30c )写到寄存器38中,以及值VECTOR、 CTRL和DATA由执4亍单元16经由直4妾线路31写到寄存器38中。 一旦4企测到所期望的活动,TIDY更返回到线禾呈调度器18,以<更识别 相关联的线程。活动逻辑还包括下面进一步详细讨论的使能标记 39。
应当注意,虽然图4中示出了包含在端口 22中的寄存器38, 但它们实际上可位于处理器14中的其他位置并仅与端口 22相关联。
图5示出了用于表示线程的示例性线程寄存器库20。寄存器库 20包括对应于线程调度器18当前所考虑的相应线程l至Tm的多 个寄存器组。在该优选示例中,每个线程的状态由十八个寄存器表 示:两个控制寄存器、四个存取寄存器和十二个操作数寄存器。这 些寄存器分别如下:
控制寄存器:
-PC是程序计数器
-SR是状态寄存器 存取寄存器:
-GP是全局池指针(global pool pointer )-DP是数据指针 -SP是堆栈(stack)指针 -LR是链路寄存器 操作数寄存器:OPl…OP12
控制寄存器存储关于线程状态的信息,并且用于控制线程的执 行。具体地,线程对事件或中断的反应能力由保存在线程状态寄存 器SR中的信息控制。存取寄存器包括:堆栈指针,用于程序的局 部变量;数据指针,通常用于各程序之间所共享的数据;以及常量 池指针(constant pool pointer ),用于存取较大的常数和程序入口点 (procedure entry points )。 l喿作凄t寄存器OP1…OP12由执行算术和 逻辑运算、存取数据结构以及调用子程序的指令使用。如结合图6
和7所讨i仑的,处理器还包括用于在不同组20的纟喿作数寄存器OP 之间建立通道的互连系统40。
还提供了大量指令緩沖器(INSTR) 19,用于临时存储线程的 实际指令。每个指令緩沖器优选为六十四位长,且每条指令优选为 十六位长,即允许每个緩沖器存储四条指令。在线程调度器18的控 制下从程序存储器24中取出指令并将指令临时存放在指令緩沖器 19中。
执行单元可访问每个寄存器20和緩沖器19。此外,线程调度 器18至少可以访问用于每个线程的状态寄存器SR。
如上所述,本文所用的术语"事件"指的是特定类型的操作, 或者指的是对应于特定类型操作的活动。基于操作的事件与基本的 输入-输出操作略有不同,其以如下方式工作。首先,优选地通过经 由直接线路31和30将来自执行单元16的连续点矢量和来自线程调度器18的线程标识符传递到与端口 22相关联的VECTOR和TID 寄存器38而为线程设定事件,相关联的条件和条件数据还可写到端 口 22的CTRL和DATA寄存器38中。因此该事件可以在端口处设 定,而不必被?使能。为了4吏端口生成事件指示,还必须声明(assert) 端口的使能标记39 ,优选地由线程调度器18经由直接线路30来 声明。此外,为了使线程本身接受事件,线程的各状态寄存器SR 中的线程事件使能(EE )标记必须被设定为事件使能 (event-enabled )。 一旦事件被设定并被使能,就可以使用作用于线 程调度器18的基于事件(event-based)的等待指令挂起线程等待事 件。此时,可以从相关指令緩沖器19中放弃当前的待处理指令。当 发生事件时,例如一些数据输入到端口时,通过从端口 22返回线程 标识符和连续点矢量而将该发生发信令告知线程调度器18和执行 单元16,使得允许从程序存储器24取出连续点矢量所识别的指令 并放入指令緩冲器19中,并在代码中适当位置点继续执行。例如, 如果等待的事件是输入某些特定的数据,则连续点矢量可以识别包 括用于输入数据的输入指令的代码。
当事件发生时,相应状态寄存器SR中的线程EE标记可被设定 为事件禁止,以防止线程在发生事件后立即对事件做出反应。事件 发生时,使能标记39可以由于线程执行指令的结果而被解除声明。
在为等待来自一个或多个端口的事件准备设置多个端口时,可 以声明使能标记39。还可在使能一组端口使能标记前将线程EE标 记设定为事件使能,在该情形下,准备就绪的即将使能的第一端口 将生成事件,该事件使得当前指令被丢弃并通过在连续点矢量处立 即取出和执行指令而继续运行。
端口使能标记39和状态寄存器EE标记的优点在于:事件的使 能和禁止通过等待指令而与事件的建立和线程的挂起(suspension ) 分离,允许针对特定线程和/或各种不同线程易于开启和关闭
24(toggled on and off )不同输入和输出条件。例如,即使事件-故禁止, 该事件也可以;陂留在端口 22处净皮建立。因此,事件可以由线禾呈重复 使用,因为虽然事件已经发生过一次,但是线程标识符、连续点矢 量和条4牛仍然存<渚在端口 22的TID, VECTOR, CTRL和DATA寄 存器38中。所以如果线程需要重复使用事件,端口寄存器38不需 要被重复写,仅需再次声明端口的使能标记39,和/或将线程的状态 寄存器SR中的EE标记再次设为事件使能。然后,在同一事件再次 发生之前另 一个等待指令将线程挂起。
此外,连续点矢量的使用允许每个线程使能多个事件。也就是 i兌,给定的线程可以通过将连续点矢量传递到一个端口 22a而在该 端口建立一个事件,通过将不同的连续点矢量传递到另 一个端口
22b而在该端口建立另一个事件,以此类4偉。线禾呈也可通过分别声 明或不声明用于每个相应端口的不同使能标记39来使能或禁止各 个事件。接着等待指令将使线程挂起以等待任何使能事件。
与事件相比,基本I/O操作仅使用输入或输出指令而没有之前 的等待指令。通过使用基本I/0操作,线程调度器18不将连续点矢 量传递到VECTOR寄存器,且不使用端口的使能标记39或状态寄 存器SR中的EE标记。相反,下一条待处理指令简单地留在指令緩 沖器19中,如果需要,输入或输出指令作用于线程调度器18,以 在数据输入或用于输出的端口可用(如就绪标记37所指示的)之前 中止执行。如果端口立即就绪,即当执行输入或输出指令时已经设 定就绪标记37,则线程将不会中止。在实施例中,仅要求TID寄存 器根据基本I/O进行调度。基本I/O可以使用或不使用CTRL和 DATA寄存器中的条件。如果不使用这样的条件,则端口一准备好
就仅完成I/0。基本i/o操作中止或不中止线程,不影响端口的使能
标记39或者状态寄存器中的EE标记,也不影响将控制传递 (transfer)至事件矢量。类似的事件和I/O技术还可以适用于各线程之间的通信,或者 更精确地,适用于线程寄存器组20之间的通信,所述线程寄存器组 20存储与线程相关的信息。图6示出了包括用于建立通道的电路的 互连系统40。为了说明的目的,图6仅示出了四个线程寄存器组2^ 至204,每个寄存器组存储各线程Ti至T4的信息。线程寄存器组中 的每一组通过互连系统40都连接至其他组中的每一个,互连系统 40是直接硬件互连,其是可操作的以建立用于在线程寄存器组20 的至少两个组之间直接传递数据的至少一个通道。在不使用直接存 储器读取(DMA)并且经由任何共享存储器(诸如RAM24)和任 何通用系统总线(诸如总线13)都不发生传递的意义上,该互联是 直接的。通道优选地用于传递送往或来自操作数寄存器OP的数据, 但原则上用于传递送往或来自其他类型的寄存器(诸如状态寄存器 SR)的信息。线程调度器18可以基于发生在通道上的活动以与结 合上文的端口讨论的相似方式来调度线程。本文所使用的包括端口 、 通道以及其他活动源的通用术语是"资源"。
互连系统40包括多个硬件端子42,其在本文被称为"通道末 端",用于在各线程之间建立通道。每个通道末端(即通道端子)都 可以分配给任一线程寄存器组20,每个通道末端42通过互连系统 40可连接至任何其它的通道末端42。为了说明的目的,图6仅示出 了四条通道,但应该理解,可以存在不同数目的通道末端,并且通 常可以存在与寄存器组20的数目不相同的通道末端42的数目。
每个通道末端42包括緩冲器,以在进入的凄t据祐:输入之前保存 该数据,并且优选地还包括保存数据量的记录(record )。通道末端 42还保持记录其是否连4妄至另一个通道末端,以及记录所连4妄的通 道末端的地址,以便通过通道的数据输出可以写入正确的输入緩冲 器中。这些緩冲器和记录可以通过使用两个文件来执行,即通道输 入文件和通道输出文件。这些通道输入和输出"文件"是"寄存器 文件"的一部分,这这种意义上(in this sense)其指的是用于执行
26寄存器和緩沖器的处理器14上的专用存储器的小块。寄存器文件与 通用RAM (诸如存储器24)不同,因为存储器文件中的每个入口 (即每个寄存器)专供特定目的之用,而且还因为不通过系统总线 13访问寄存器。
如图7所示,每个通道末端42类似一对端口 ,具有输入緩冲器 44和输出緩冲器46,以在各线程之间提供全双工(full-duplex)数 据传递(尽管单独緩沖器也是一个选择)。输入緩沖器44可用于将 来自另一个通道末端42的数据输入至线程寄存器组20,并且输出 緩冲器46可用于将来自线程寄存器组20的输出数据输出至另 一个 通道末端42。优选地,每个緩冲器能够保存足够多的令牌,以允许 緩冲至少一个字。
与端口 22 —样,每个通道输入緩沖器44和输出緩沖器46可 以与活动处理逻辑36,相关4关,该活动处理逻辑用于监一见通道上活 动的发生并且通过至少一个就绪标记37,(标记是一位寄存器)表 示某个活动发生。潜在活动可以是:数据已经输入到通道,或通道 已经可用于输出。如果在通道太满而不能提取数据时执行输出指令, 则线程调度器18中止指令,并且当在通道中有足够空间用于指令成 功完成时重新开始或者重新执行该线程。同样地,当执行输入指令 且没有足够的数据可用时,线程调度器18中止该线程直到有足够数 据可用。通道末端42中的计数器47在输入緩沖器44和输出緩沖器 46中保持记录数据量。
为了在两个线程寄存器组之间建立通道,必须分配并连4妄两个 通道末端。如前所述,每个通道末端可以分配给任一线程,并且每 个通道末端42可连4妄至4壬<可其4也通道末端42。为了有助于通道末 端42的分配和连接,每个通道末端42还包括:通道末端标识符寄 存器CEID 41,用于记录该通道末端连4妾至其它通道末端中的哪一个;连接标记43,用于记录通道末端是否被连接;以及声明标记45, 用于记录通道末端是否已经由线程声明。
为了将各通道末端42分配给两个线程中的每一个线程,则分别 执行两条"获得通道末端"指令,这些指令的每条指令为线程使用 保留了通道末端42。这些指令还各自声明各通道末端42的声明标 记45。在两个线程中的每一个中,可以分别执行"获得通道末端" 指令,或者通过一个主线程执行两个"获得通道末端"指令。
然后,如下,各通道末端通过交换通道末端标识符而连接在一 起。当执行第一线程的输出指令以便执行至第二线程的通道末端的 输出时,第二线程的通道末端中的连接标记43用于确定第二线程的 通道末端当前是否被连接。如果第二线程的通道末端没有被连接, 则提供至该通道末端的数据被解释为是第 一线程的通道末端的标识 符。该标识符记录在第二线程的通道末端的CEID寄存器41中,并 且声明第二线程的通道末端的连4妾标志43。相反地,则才丸4亍第二线 程的输出指令,以将输出执行至第一通道末端。假设还没有声明第 一线程的通道末端连4妾标记43,则提供至第一线程的通道末端的凄t 据-故解释为是第二线程的通道末端标识符。该标识符记录在第 一线 程的通道末端的CEID寄存器41中,并且声明第一线程的通道末端 的连接标志43。
一旦通道末端42 #皮连4妾,<壬<可至第二通道末端的输出将/人第二 通道末端的标识符寄存器CEID 41的记录中确定相关联的第一通道 末端。如果第二通道末端的输入緩沖器中有足够的空间来保存数据, 则将传递数据;否则将中止第一线程的输出指令。如果在输入第二 通道末端之前中止线程,则由输出指令向第二通道的数据提供也可 以不中止第二线程,以允许第二线程提取数据。相似地,如果第二 线程从第二通道末端输入的影响是从第一通道末端为来自第一线程 的中止输出的数据腾出空间,将不中止第一线程的输出,以允许第
28一线程完成执4于。,俞入还可以触发事件(看下文)。对于每个线程,
线程调度器18保存任何中止的输出指令的记录、其相关联的数据、 以及其试图实现将数据所传递到的通道末端。
一旦不再需要通道,可以通过执行输出"消息结束"(EOM) 控制令牌的指令来切断各通道末端42。然后,通道末端42将可用 于与任何其他通道末端相连接。另外,可以通过执行"解除通道,,
(free channel)指令而从线程中解除每个通道末端42。然后,释放 通道末端42以由4^f可其4也线程^使用。
如根据通道寄存器文件所描述的,当处理器在通道末端c上执 行输出时,检查通道输出文件中的第c个(cth)入口 ,以确定c是 否被连接。如果未连接,输出数据d被解释为是c上的另外的输出 将发送到的通道末端的地址(即ID)。检查地址d,以确定其是否为 同一处理器上的通道末端的地址。如果是,将地址d写到通道输出 文件中的第c个入口。随后的输出经由c将访问第c个入口,以确 定连接至c的通道末端,以及假如该通道末端没有满,则将输出数 据写到连接的通道末端d的输入数据中。如果发现緩冲器已满,则 中止输出指令,直到緩冲器中有足够的空间,并且在这种情况下, 输出线程将由创建(create)足够空间的输入指令释》文。
当在通道末端c上执行输入时,读取输入緩冲文件中的第c个 入口,以确定其是否包含数据。如果包含数据,则提取数据并且完 成输入。否则输入线程被中止并且被将充足的数据写到c的输入緩 沖器中的随后输出指令释放。
线程调度器18维护(maintain)具有用于每个线程的一个入口 的"中止表",该表用于i己录明卩个通道末端^皮中止(如果有的i舌)。 不论何时在通道末端c上完成输入,或者不论何时在与通道末端c相关联的通道上完成输出,都检查这个表,且如果存在为C所中止 的线程,则将该表释i丈。
当经由c输出EOM令牌时,则修改输出文件中的第c个入口, 以记录通道末端不再净皮连4妾。
为了降低所需的逻辑量,优选地,在任何时间只有一条指令初 始化通道,在任何时间只有一条通信指令需要在给定的通道上执行 操作。然而,也不排除在多通道上的操作可能性。
所描述的通道末端系统在代码密度方面是非常有效的,因为其 降低了为控制和执行线程间的通信而由每个线程所执行的指令数 目,同时很多功能性改为在硬件通道末端中执行,且不需要DMA 或访问存〗渚器24。
仍与端口 22—样,为了有助于在通道上检测活动发生,每个通 道末端42的输入緩冲器44与寄存器38,相关联。这些寄存器包括 用于存储相关线程的标识符的线程标识符(TID)寄存器和用于存 储执行应继续事件发生所在的程序中位置的连续点矢量(VECTOR ) 寄存器。这些TID和VECTOR寄存器可由线程调度器18以及执行 单元164吏用,以与端口 22相同的方式而依据事件来调度线程。也 就是说,通过存储用于线程的线程标识符和连续点矢量以便建立事 件、通过使用等待指令来挂起线程、以及一旦事件发生就返回到连 续点矢量所指定的代码中的点。在这种情况下,事件可以是将数据 输入至通道末端42。 VECTOR寄存器还允许通道生成中断。通道末 端还具有^f吏能标i己39,,以-使通道生成事件。在优选实施例中,虽 然未排除可能性,但通道末端42可以不配备CTRL和DATA寄存 器。
30应当注意,将通信延迟最小化,用于在通道上传递凄欠据的输入
和输出指令可以有利地直接作用于线程调度器18。也就是说,当执 4亍单元16 4丸4亍指令时,々支i殳用于该通道的就绪位37,当前没有指示 通道就绪,则指令通过从运行组中移除相关线程来使线程调度器中 止该相关线程。相似地,作i设没发生事件、在线程的状态寄存器SR 中没有设定线程事件使能标志EE、和/或没有声明通道末端的事件 使能标记,则基于事件的等待指令将使线程调度器挂起执行线程。
可以在不同处理器上的各线程之间建立通道。图8示出了包括 互连节点204的瓦片202,该节点204用于在不同处理器14上的各
线程寄存器之间建立通道,每个处理器都是以上所讨论的类型。互 连系统是在同 一 电路板或芯片上的处理器之间的直接硬件链路,与 端口 22相分离。并且其可以是在电路才反和/或芯片上^f吏用的串4亍互 连和信息包(packet)路由机制(packet routing mechanism )。 然而, 本领域技术人员应当理解,其他类型的互联系统也是可行的。并且 其优选设置为低功率、低插脚输出(pin-out )、易于使用。
每个互连节点204包4舌系统开关216以及3。图2所示的可以用 于将其他类似瓦片202 —起连接成阵列的系统链路218。从而所连 4妄的一个或多个节点204组成互连系统。不同处理器的各存储器可 以4妄夫见定尺寸制造以最佳匹配目标应用,并且不必是相同的尺寸。 这些瓦片可以在同一芯片上或者不同芯片上,每个节点204还包括 处理器开关214,每个处理器14都对应一个开关。每个处理器开关 经由处理器链路220与各系统开关216之间连接,以及通过通道链 路222与在处J里器14的通道末端42之间连才妄。
应当注意,将互连系统上的功耗最小化是有益的。在实施例中, 本发明的互连系统具有无功耗的休眠状态,而且在接收器处不需要 采样时钟、锁相环、或者延时锁定环(delay-locked lo叩)。优选地,包括这种互连204的系统(诸如阵列200)将使用仅当数据开始到达链路218、 220、 222时4皮上电的部4牛。
每条链路218、 220、 222都使用四条线:每个方向上都有逻辑一线和逻津專零线。以"双4九迹不归零(dual-rail non-return-to-zero )"的方式传递位。也就是说,通过逻辑一线上的转换来发送逻辑一位,通过逻辑零线上的转换来发送逻辑零位(即上升或者下降转换发送一位)。
处理器14之间的通信通过令牌发生,这些令牌可以是用于控制通信的控制令牌或者是包含将被通信的实际数据的数据令牌。通道在通道末端之间承载(carry )由数据令牌和控制令牌所构成的信息。每个令牌优选地是一个字节。数据令牌包括数据,控制令牌用来对用于控制互连的各方面的通信协议进行编码。每个开关214、 216都包含被配置为对用于建立、控制以及关闭通道的控制令牌(看下文)起作用的^更件开关逻辑。
消息由令牌序列构成,通常由数据令牌和控制令牌构成。任选地,消息可以划分为信息包,其中每个信息包包括确定数目的消息令牌。消息或信息包中的第一个令牌是包含识别目的节点、目的处理器以及目的通道末端的目的地址的头令牌。消息或信息包中的最后一个令牌是"消息结束"EOM或者"信息包结束"EOP令牌。"数据结束"EOD令牌也可以用于在信息包中描绘。软件开发者可以使用这些EOM、 EOP以及EOD令牌,以不管他们如何选择这些令牌,都将通信设置到消息和/或信息包中。从互联开关的观点看,EOM、EOP以及EOD优选是没有区别的,但是它们可以不同地用于软件中。
每个处理器14都包括如上所讨论的线程寄存器组20。当连接至不同处理器的通道末端时,可以以三种方式^f吏用通道。第一,可以以在单个处理器中建立通道的才莫拟方式来建立"流化(streamed )"
每一个线程,并且通过交换通道末端IDs来连接各通道末端,然后使用通道来传递连续数据流或者传递多条消息。这有效地在两个线考呈之间建立电3各,并且在通道上传递的信息只是特?木令"皁流。第二,"分包化(packetised ),,通道可以用于执行信息包路由,其中每条消息或者消息包通过建立信道开始,并且通过4吏用EOP或者EOM控制令牌切断路由结束。这就允许在多个并发通信之间共享互连。所传递的信息具有适当定义的信息包结构,在该结构中, 一组输出对应于相匹配的一组输入。未知的緩沖(buffering)量将出现在通道中。第三,"同步化,,通道与分包化通道相类似,除了其是零緩沖的(zero buffered )以及除其执行线程被同步的通信之外。
一旦建立通道,与在同一处理器上的通道一才羊,可以在这些通
道上扭^于i/o和事件。
在才喿作中,通过系统链3各218或者处理器链路220在系统开关216处来接收头令牌。系统开关216读取目的节点地址,如果该目的地址与本地节点地址不匹配,则通过系统链路218将信息包路由至另一个节点。另一方面,如果目的节点地址与本地节点地址相匹配,则系统开关216读取目的处理器地址,并通过处理器链路220将信息包路由至其中一个本地处理器14。然后,处理器开关216读取目的通道地址,并且经由通道链路222和互连40将消息路由至正确的通道末端42。
每条链路218、 220、 222都包含控制寄存器(未示出)。再次参考图2和图8,随着头令牌通过每个开关214、 216,开关的开关逻辑被头令牌触发,以通过将目标链路地址写到源链路的控制寄存器中以及将源链路地址写到目标链路的控制寄存器中来创建从源链路到动态分配的目标链路的路线(route )。 一旦路线存在,则沿该路
33线发送所有另外的令牌,当沿着该路线发送EOM、 EOP或EOD令牌时,可以切断该路线。当EOM/EOP/EOD通过每个开关216、 220时它们就会切断该路线的每个级(stage )。
详细阐述,当数据d输出至不同处理器上的未连接的通道末端时,将为通道动态地分配链路222中的一条链路,并且该链路用于将地址d转发至互连开关(记住该数据d是头,即目的通道的地址)。所使用的链路的标识符被写到与第c个入口相关联的通道输出文件中。随后经由c输出将访问第c个入口以确定将用于转发输出数据的链路。如果链路中的緩冲器是满的,则将中止输出线程;当链路已经转发数据并且具有空间来緩冲另 一个输出时,则输出线程将被再次释放。这通过使用中止表来完成。
当数据开始到达未连接的链路时,数据被解释为目的通道末端d的地址,并且该地址被记录在与该链路相关联的寄存器中。来自链路的随后数据将被写到通道末端d的输入緩沖器中。如果通道末端d的緩沖器(即通道输入文件中的第d个入口 )是满的,则链路流量控制将防止开关发送另外的数据,直到线程输入了足够的数据以在输入緩冲器中腾出空间。
当在通道末端d执行输入时,读取输入緩冲器以确定其是否包含数据;如果包括数据,则提取数据并完成输入。否则就中止输入线程,并且通过链路提供足够的新数据给d的输入緩沖器来释放该线程。
当经由c输出最终的EOM、 EOP或EOD令牌时,将EOM/EOP/EOD转发至开关,以及修改输出文件中的第c个入口来记录不再连接通道末端。当链^4妄收EOM/EOP/EOD时,它们被转发至d并且链路被切断。应当注意,有利地,通道末端的相同^L制既用于同一处理器上的各线程间的通信,也用于不同处理器上的线程之间的通信。重要的是,这还意味着通道末端的地址(即通道末端ID)是全系统的(system wide )。也就是i兌,每个通道末端ID在互连的处理器的整个系统中(诸如在阵列200中)都是唯一的。因此,在整个系统中资源有效地共享,使编程变得更容易。
通道末端和链路可以由多个线程共享。这有益于允许将祐:使用的单个通道末端从任何数目的线程接收消息。为了做到这一点,每个输入通道末端都具有声明标记43,以指示该输入通道末端当前是否正在使用。如果当输出头时在消息的开始处发现其正在使用,则中止输出线程;当4妾下来EOM、 EOP或EOD令牌4吏通道末端被切断(因此适用于新的连接)时,将释放输出线程。类似的机制用于每个链路218、 220、 222,以允许在多个输出线程之间共享链路。
另外,应当再次注意,通道是双向的。由于每个通道末端都具有输入和输出能力(状态以及数据緩冲器),因此其可以同时用于输入和输出。这意味着任何通道都可以用于提供一对完全独立的单向通道,以及在不同处理器中的各线程之间的通道的情况下,这些通道将按相反方向操作。可选地,通道可以用于提供将在两个线程之间祐?使用的双向ii/f言线路,其中,可以随着线禾呈的继续而改变通^言的方向。
另外,应当注意, 一旦建立双向通道,单个标识符(本地通道末端ID)可以用于识别双向通道,而不是必须使用本地和远程通道末端ID。结合提供通道末端42的集合,这使得通道的通信非常高效。通过以下特征使得使用单个标识符变得容易:-在本地通道末端中通过通道末端标识符寄存器CEID 41来存 储目的头。可以提供指令用于明确地设定CEID寄存器41。这可以 是下文描述的SETD指令。
-无论何时在非活动(即未连接)通道上执行输出,而不是执 4亍必须由单个指令输出的头时,都使处理器开关214首先从CEID 寄存器41自动发送头。非活动通道是自从其最后一次被切断就没有 执行过输出的通道。(应当注意,如果EOM仅是^皮发送来作为确认 的令牌,即,那么仍然首先自动输出头)。
-4吏EOM (或EOP或EOD )令牌将通道返回到非活动(即切 断)状态。
这使在合适的时间建立通道,即它们在当程序中被声明时,并 JU妄着4又需要传递(pass around)本地通道末端;也址以识别通道。 即4吏对于双向通道这也是正确的,即线禾呈可以4吏用单个标识符用于 发送和接收。
下文进一步讨i仑处理器间通信令牌的细节,^旦为了完整,首先 描述用于控制端口和通道的一些指令细节。由于编程方法基于线程 的结构,因此接口处理器可以支持多种编程方法。接口处理器可以
以被编程为几百个通信部件的并行阵列的一部分。提供了支持这些 选择的指令组。该指令组包括支持初始化、终止、开始和停止线程
的以及提供输入/输出通信的特定指令。输入和输出指令允许与外部 设备非常快地通信。它们支持高速、低等待时间的输入和输出,以 及支撑高水平的并发编程技术。将在下文中更充分地讨论它们在本 文处理端口和通道活动的应用,其中描述了可以用于实施本发明的 示例指令。首先资源通过使用用于指定所需资源类型的GETR指令专供线 程之用,并且通过使用FREER指令被再次释放。
可以以输入或输出才莫式4吏用端口。在输入才莫式中,条件可用来 过滤传递到线程的lt据。如下面所述,在数据可用时,端口可用来 生成事件或中断。这允许线程监视多个端口,以仅服务于就绪的端 口。接着,输入和输出指令(IN和OUT)可以用于传递送往或来 自立即准备就绪的端口的数据。在这种情况下,IN指令输入以及零 扩展(zero-extends )来自n位端口中的n个最不重要位,以及OUT 指令输出这n个最不重要的位。
另外两个指令(INSHR和OUTSHR )优化数据的传递。INSHR 指令将寄存器内容(content)向右移动n个位,用从n位端口输入 的数据填补最左边的n个位。OUTSHR指令将数据的n个最不重要 的位输出至n位端口,并且将寄存器内容向右移动n个位。
OUTSHR port, s port <1 s[bits 0 for width(port)]; 从端口输

s <~ s >> width(port) 移位 INSHR port, s s <~ s 〉> width(d ); 移4立 port O s[bits (bitsperword — width(d)) for width(d)] 乂人端口 #T

其中"I>,,表示输入,"<]"表示输出。
在^f吏用端口前必须配置端口 。其可以通过^f吏用用于定义几种独 立的端口设置的SETC指令来配置。每种设置都具有缺省模式,且 仅在需要不同模式时配置端口 。SETC port, mode port[ctrl] <~ mode i殳置端口4空制
下文描述了 SETC模式设置的作用。每种设置中的第一入口都 是缺省模式。
模式 作用
OFF
端口不是活动的,管脚高阻抗
ON
活动的
IN
端口为^r入
OUT 端口为库餘出(^f旦丰t入返回当前管脚^直(pin value))
EVENT 端口将引起事件
INTERRUPT 端口将引发(raise )中断
DRIVE
管脚净皮高电平和〗氐电平驱动
PULLDOWN 管脚下拉电平0位,否则为高阻抗
PULLUP
管脚上拉电平为l位,否则为高阻抗
UNCOND
端口始终就绪,输入立即完成
EQUAL NE
当端口值等于其DATA值时端口就绪
当端口值不同于其DATA值时端口就绪
TRANSITION 当端口值朝着其DATA值改变时端口就绪GR 当端口值大于其DATA值时端口就绪
LS 当端口值小于其DATA值时端口就绪
DRIVE、 PULLDOWN和PULLUP才莫式4叉在端口方向为OUT 时是相关的。TRANSITION条件仅与一位端口相关,以及GR和LS 条件仅与 一位以上的端口相关。
每个端口都具有就绪位37,其用来控制通过端口的ft据流量, 以及定义端口是否能够完成输入或输出指令。根据端口配置以不同 方式设置就绪位。当执行SETC、 SETD或SETV指令中的任意一个 时,便清除就绪位。
输入模式中的端口可被配置成用于执行条件输入。所述条件过 滤输入数据,以便仅满足条件的数据返回到程序。当设置条件时, 仅在端口准备就绪时完成IN和INSHR指令。如上所述,在未就绪 的端口上执行输入指令将中止线程。当端口准备就绪时,端口便设 置向线程调度器发送信令的其就绪位。然后线程调度器通过重启执 行单元16的流水线中的相关指令,或者通过重新执行指令,即通过 将指令重发至流水线来继续线程。当端口准备就绪时,返回数据且 清除就绪位37。
一旦设置了端口就绪位,就捕获(trap)满足条件的凄t据值, 从而即使端口上的值随后改变,软件也获得了满足条件的值。当执 行IN或INSHR指令以及设置就绪位时,则返回数据以及清除就绪 位。如果没有设置就绪位,则中止线程直到设置就绪位。如果设置 了条件,则接着将数据与条件相比较,并且仅在满足条件时设置该 就绪位。
39在执行OUT或OUTSHR指令时,如果就绪位被清除,则端口 提取数据并设置就绪位。如果设置了就绪位,则中止线程直到就绪 4立#皮端口清除。
线程间的通信使用通道来执行,所述通道提供末端之间的全双 工^t据传递,这两个末端都在同一处理器上,或者在同一芯片的不 同处理器上,或者在不同芯片的处理器上。通道在两个通道末端之 间承载由数据和控制令牌构成的消息。控制令牌用于编码通信协议。 尽管大多数控制令牌可用于软件,但也为编码由互连硬件使用的协 议保留了 一些数目的控制令牌,且不能使用指令来发送和接收这些 保留的控制令牌。
如下所述,当数据可用时,通道末端可以用于生成事件和中断。
这就允许线程监#见几个通道和/或端口 ,用于4义月良务于那些就绪的端 口 。
为了在两个线程之间通信,需要分配两个通道末端,每个线程
具有一个通道末端。这通过^f吏用GETRCHAN指令来完成。然后必
须将第一线程的通道末端的标识符交给第二线程,反之亦然。然后
两个线程可4吏用资源标识符,以通过使用输出和输入指令来传递消 自
OUTT d <] s OUCT d O s INT d !> s OUT d <1 s IN d D> s
输出令牌
输出控制令牌
输入令牌
输出数据字
输入数据字
TESTCT d<~isctoken ( s )为控制令牌测试TESTWCT d<~hasctoken (s) 为控制令牌测试字
每条消息以包含另 一线程的资源标识符的头开始。其后通常是 一系列数据或控制令牌,并且以结束控制令牌或消息(EOM)控制 令牌结束。OUT和IN指令用于通过通道传递数据字;OUTT、 INTT、 OUTTSHL以及INTTSHL指令用于传递凄t凌居的字节。OUTTSHL和 INTTSHL是移位指令,其用于优化以字的最重要字节开始的通信, 并且主要用于在消息头中构造路由地址。
OUTTSHL channel, s channel <] s[bits (bps _ 8) for 8];
s <~ s« 8 /人通道丰命出并移^f立
INTSHL channel, s s <~ s《8; 移位并
channel > s[bits 0 for 8] 从通道输入
通道末端具有能够保存足够多令牌的緩沖器,以允许至少緩沖 一个字。如果在通道太满而不能提取数据时来执行输出指令,则接 着中止执行指令的线程。当通道中有足够空间用于成功完成指令时, 则重新开始线程。同样地,当执行指令且没有足够的可用数据时, 则中止线程,并且当有可用足够数据时重新开始线程。
为了在通道上发送控制令牌,使用了 OUTCT指令。控制令牌 占用了通道中的存储器的单个字节。在接收末端,软件可以使用 TESTCT指令(其等待直到至少一个令牌可用)来检验下一个字节 是否是控制令牌。也可以使用TESTWCT指令来检验下一个字是否 包含控制令牌,该TESTWCT指令等待直到接收到至少一个控制令 牌或者直到接收到整个数据字为止。
在检验令牌是控制令牌之后,可以使用INT接收控制令牌。一 旦接收到令牌,可能没有方法来检查该令牌是否是控制令牌。如果通道末端包含^t据和控制令牌的混合体,则IN指令会将它们全部作 为数据返回。
当不再需要通道时,通过使用FREE CHAN指令释放通道。否 则通道可用于另外的消息。
系统中的互连由所有通道共享。在处理器中不存在连接性的限 制,因此通道末端不必彼此断开以允许互连共享。仅在目标通道末 端与另一个通道末端共享时,通道末端必须断开。
然而,当在不同处理器上连4妄至通道末端时,这有益于确保互 联与系统中的其他通道有效地共享。这通过将传递的凄t据划分成信 息包和消息来完成。每个信息包或消息以头开始,并以〗言息包结束 (EOP)或者EOM控制令W皁结束。
事件和中断允许资源(端口和通道)自动将控制传递到预设的 事件处理器(event handler )。线程接受事件或中断的能力由保存在 线程状态寄存器SR (参见图4)中的信息来控制,并且可以通过使 用TSE和TSD指令来明确控制。所述信息包括事件使能标记(EE ) 和中断使能标记(IE)。
TSE s SR <~ SR v s 线禾呈状态^f吏能 TSDs SR—SRa,s 线禾呈习犬态禁止 这些指令的操作数应是以下之一: EE 使能或禁止事件 IE 使能或禁止中断
在建立事件的同一范围中处理这些事件。因此,对于所有线程 的状态都有效的事件,允许线程快速响应于事件。线程可以通过4吏
42用引起事件的端口同时留下一些或所有未改变的事件信息来执行输 入和输出操作。这允许线程完成处理事件并立即等待另 一个类似事 件。
事件处理器的程序位置(location)必须在通过使用SETV指令 使能事件前设定。端口具有确定端口何时生成事件的条件,这些端 口通过使用SETC和SETD指令来设定。 一旦通道包含足够多的数 据或具有接收用于输出的数据的空间,则就认为通道准备就绪。
可以使用事件使能无条件(EEU)指令来使能特定端口或通道 生成事件,以及使用事件禁止无条件(EDU)指令来禁止特定端口 或通道生成事件。如果事件条件操作数为真,则事件使能真(EET) 指令使能事件,否则禁止事件;相反,如果事件条件操作数为假, 则事件使能假(EEF)指令使能事件,否则禁止事件。这些指令用 来优化受保护输入(guarded inputs )的实施。下面是用于在端口上 配置事件的一些示例指令格式,4旦应当理解,可以结合通道应用同 样的指令。
SETV port, v port[vector] <~ v i殳置事4牛矢量 SETD port, d port[data] —d i殳置事件凄t据 SETC port,c port[ctrl]<~c i殳置事件4空制 EET port, b port [enable]— b; port[tid] <~ thread 事件4吏能真 EEF port, b port[enable]— ,b; port[tid] <~ thread 事4牛4吏能寸艮 EDU port port[enable]—false; port[tid] — thread 事4牛禁止 EEU port port[enable]— true; port[tid] <~ thread 事件使肖fe在一个或多个资源上已经使能事件后,线程可以通过使用
WAITEU指令等4寺至少一个事件。这通过控制事件^皮传递到由相应 的事件矢量指定的事件控制器可以导致事件立即发生,同时事件由 清除EE (事件使能)标记禁止。可选地,可以暂停线程,直到事件 发生一一在这种情况下,将在事件发生时清除EE标记,且线程继 续执行。
WAITET b if b then SR[EE] — true 如果真贝'J事件等待
WAITEF b if , b then SR[EE] <~ true 如果假贝'J事件等待
WAITEU SR[EE] <~ true 事件等待
CLRE SR[EE] — false; 为线禾呈禁止所有事件
forall port
if port[tid] 二.: thread then port[enable] <~ false
为了优化重复等待一个或多个事件直到条件发生的常见情形, 提供了事件等待指令的条件形式。只要事件条件操作数为真, WAITET指令就等待,并且只要事件条件操作数为假,WAITEF就 等待。
通过单个CLRE指令可以禁止线程已使能的所有事件。这会禁 止在具有由线程所使能的事件的所有端口中生成事件。CLRE指令 还清除线程状态寄存器中的事件使能状态。
为了优化线程对高优先级资源的响应性,在随后开始使能端口 和/或通道以及使用其中一个事件等待指令之前,TSE EE指令首先
44可以用来在线程上使能事件。这样,处理器可以按照优先级顺序扫 描资源。这可以使事件一被使能便被立即处理。
与事件相比,不在当前范围内处理中断,因此在执行中断控制
器之前必须保存当前PC和SR (潜在地仍是一些或所有的其他寄存 器)。在资源r生成中断时,自动发生以下动作:
SAVEPC <~ PC; SAVESR <~ SR; SR[EE] <~ false; SR[IE] <~ false; PC <~ r[vector]
当处理器完成这些动作时,可以由RFINT指令来4丸4亍中断的线 程的执行。
RFINT PC— SAVEPC; /人中断返回 SR <~SAVESR
中断可以中断线程,同时暂停线程以等待事件。
现在返回到处理器间的通信,描述了用于这样的通信中的数据 和4空制令片皁的细节。如前所述,每条链路218、 220、 222者IM吏用四 条线:在每个方向上都有逻辑一线和逻辑零线,其中以"双4九迹不 归零"的方式传递各位,即通过逻辑一线上的转换来发送逻辑一, 通过逻辑零线上的转换来发送逻辑零。通过使用数据令牌来传递实 际数据,每个数据令牌承载十位令牌中的八个位,并且每个数据令 牌通过使用控制令牌(每一个也承载十位令牌中的八个位)来传递控制信息。两条轨迹在每个令牌的结尾都返回到静止(零)状态(除 非有错误)。
可以同时在两个方向上承载数据(以及控制)。令牌可以用于传
递(transport)各种长度的信息包或消息。 一些控制令牌专供物理 链路控制(诸如流量控制、初始化以及复位)之用;以及其他控制 令牌可以用于软件链路控制(更高的协议层)的软件。
《木眠状态。如图9示意性示出的,以下述方式对令牌进4亍编石马。
每个令牌900包含由信息部分901和第一附加位902组成的第 一部分。信息部分优选地是一个字节(八个位)并且是由令牌所承 载的实际数据或控制信息。第一附加位指示令牌是数据令牌还是控 制令牌。
因此第一部分为九个位长,即是一个奇数。随后传递奇数个位, 这会有两种可能:
(a) 已经传递了奇数个逻辑零位和偶数个逻辑一位后,在这种 情况下,在零线上的奇数个转换使零线处于高电压,在一线上的偶 数个转换使一线处于低电平;或者
(b) 已经传递了偶数个逻辑零位和奇数个逻辑一位后,在这种 情况下,在零线上的偶数个转换使零线处于低电压,在一线上的奇 数个转换使一线处于高电平。
因此,为了确保链路返回到休眠状态,即确保一线和零线都返 回到低电压,每个令牌900都包括第二部分,在这种情况下,第二 部分是第二附加位903。在上述(a)的情况下,第二附加位是逻辑 零,在上述(b)的情况下,第二附加位是逻辑一。在任一种情况下,令牌中逻辑零和逻辑一的总数都是偶数,并且都将链路返回到休眠 状态U叚设零线和一线在传递令牌之前都从低电压开始)。
在第一部分具有奇数个位的情况下(在这种情况下,是信息位
901的字节和第一附加位卯2),则可以-f又通过对第一部分进4于逐位 XOR来非常高效地计算第二附加位903。为了快速计算,优选地这 可以由互连204或处理器14中的XOR逻辑电路来执行,而不是在 软件中执行。
关于传递顺序,优选地首先传递第一附加位902,随后传递信 息部分901,然后传递第二附加位903。
但是应当注意,将第一附加位902和第二附加位903置于何处 实际上是无关紧要的。第 一附加位和/或第二附加位可以被置于令牌 的开始处、末端或者甚至在中间的某个位置——只要接收侧知道到 哪去寻找每一位。
上文描述了具有奇数个位的第一部分(即信息部分加上第一附 加位)。但是应当注意,如果第一部分具有偶数个位(即如果没有第 一附加位或者使用奇数个信息位),那么可以考虑(calculate)第二 部分具有两个位,以确保链路返回到休眠状态。
另外,在每个方向上仅使用两条线的上述两线方案是一个相对 基本的实施例,其4又允许在任何给定方向上进4亍串4亍通信。优选地, 实际上可以在更慢的串行模式和更快的宽模式之间切换链路。如下 所述,宽才莫式^f吏用与两线串行方案不同的编码方案。
在宽模式中,每条链路218、 220、 222都使用"五个中的一个 (one-of-five ),,代码。才艮据五个中的一个编码,五条线i殳置在每条 链路的每个方向中(因此为包括两个方向的每条链路总共提供了十 条线)。通过任何时间仅在五条线中的一条上发送转换而在该链路上传递代码,使得(giving)将全部可能的五个代码映射至不同的含义(与两线方案中的两个K码相反,借由两线方案,两个"两个中的一个"代Z马-f又直4姿映射至逻辑一或者逻辑零)。例如,可以以如下方式映射代码:
代码 含义OOOOl 值00
00010 值Ol
00100 值10
01000 值11
10000 换码
(上面"代码"标题下方的"1"指示相应链路线上的上升或者
下降逻辑转换,并且"o"指示没有逻辑转换)。
然后,这种代码序列或者"符号,,用于编码令牌。经过四个周
期,可以编码54个令牌,即625个,这对编码数据令牌和控制令牌来说绰绰有余。例如,如果w是符号i中的值,&是符号i中的转义码:
令牌V0V1V2V3
C0 ViV2V3
V0G1V2V3
V0VlC2V3
使用
256个lt据令牌64个4空制令片牟192-25564个控制令牌128-19164个控制令牌64-127值得注意的是,还存在其中多于一个符号是转义符的少量附加代码。这些代码可以用于将某些控制令牌(诸如EOM )编码为例如e。e!V2S3,其中V2表示发送EOM, s3被选择用于迫使所有信号线为零,以将链路返回到休眠状态。附加符号S3可以是任何东西,以及可以包括在五条线的任一条线上的一个以上并行转换(与限制只在五条线中的一条上进行单个转换的值和换码的代码v和e不同)。也就是说,按需要选择转换S3,以将这些线返回至休眠状态。
通过4吏用上述示例,两个连续(consecutive)的4争义石马
是在第一线上产生偶数个转换,并且在任何其他线上没有转换。然
后值v2在第二至第五线中的 一条线上产生额外的转换。因此例如,如果所有的线都从逻辑低开始,然后e^将使所有的线处于逻辑低,
随后的V2将使第二至第五线中的一条线处于逻辑高电压。因此,选择最终代码S3作为与V2相同的代码,以在同 一条线上执行另 一转换,
从而将这条线返回到逻辑低电压。但是如果所有的线都不从逻辑低
开始,那么线通常可以处于任何状态,并且将适当选择S3,如果必
要,包括在五条线中的任何一条线或者所有线上的多于一个的并行转换。
有利;也,可以在不工作时(on the fly)在两线和五线编石马之间转化(translate)数据。
五线方案优选于两线方案用作可选模式,但是五线方案也可以被单独使用或者作为另 一个链路模式方案的替换。
例如,另一种方案可以是三线方案,该方案具有在每个方向上为每条链路218、 220、 222提供的三条线,以及"三个中的一个(one-of-there ),,代码用于传递数据令牌和控制令牌。在这种情况下,
49仅通过在三条线中的一条线上发送转换来传递代码。在一个示例中,
可以连续传递多对代码,以对值或者换码进4亍编码,如下:
代码1 代码2 含义
001 001 值000
010 001 值OOl
100 001 值010
001 010 值011
010 010 值100
100 010 值101
001 100 值110
010 100 值111
100 100 换码
(再次, 上面' M、石马"标题下方的"1"指示相应链路线上的上
升或者下降逻辑转换,并且"o"指示没有逻辑转换)。
在六个握手(handshake)周期中,该方案可以编码36个令牌, 即729个,这对用于编码数据令牌和控制令牌来说绰绰有余。还有, 其中一个转义码可以用来提供多个归零的令牌(诸如EOM )作为例
如VoVie2V3V4V5,其中选择V3 , V4,以及V5迫^f吏所有4言号线为零。
现在描述了数据令牌和控制令牌的示例。应该理解,可以使用 任何适当的编码方案(包括上述的两线、三线或者五线方案)来编 码这些令牌。
50传统上,可以只在硬件上执行电路板或者芯片上的处理器之间 的互连控制,且其对專欠件是不可见或不可访问的。然而,才艮据本发 明的多个方面,控制令牌可以分类为"结构定义,,(即硬件定义)或
者"l欠件定义"的令力牟。如果一个或多个开关214、 216或互连204 中的链路218、 220、 222包含硬件逻辑以检测令牌值,以及响应于 被触发以控制互连204的某方面,则控制令牌是结构定义的。也就 是说,结构定义的控制令牌的功能由互连204中的硬件逻辑预先确 定。触发硬件逻辑以执行该功能,而不需要包含在令牌的目的处理 器14上运行的软件。尽管如此,本发明还允许软件访问某些结构定 义的控制令牌,即,某些结构定义的控制令牌还可以由软件来解释, 以便在软件中提供如软件开发者所定义的附加功能。如果没有检测 令牌值或者作用于令牌值的这种硬件逻辑,则控制令牌是软件定义 的,控制令牌仅由接收处理器14上运行的软件来解释。软件定义的 控制令牌从不由互联204中的硬件来解释,因为根据定义没有如此 解释的逻辑。
在实施例中,控制令牌实际上被划分为四组:应用令牌、特殊 令牌、特权令牌、以及硬件令牌。优选地,在控制令牌的八位部分 901中,值0-127用于编码应用令牌,值128-191用于编码特殊令牌, 值192-233用于编码特权令牌,以及值224-255用于编码硬件令牌, 但是根据专用要求也可以实施其他组合。四种不同类型的控制令牌 如下。
-应用令牌,由软件定义、从不由硬件解释。它们是用来由编 译器或应用软件使用,以有助于数据结构的编码以及专用协议的实 施。
-专用令牌,由结构定义、可以由硬件或软件解释。它们用于 纟会出/>用数据类型和结构的标准编码,用于编码凄t据、程序和通道 传递协议。-特权令牌,由结构定义、可以由硬件或特权软件解释。它们 用于执行包括硬件资源共享、控制、监控以及调试的系统功能。试 图传递送往或来自无特权软件的特权令牌中的一个将导致异常。
-》更件令牌,^又由硬/HH吏用。试图传递送往或来自專t件的;更件 令牌中的一个将导致异常。
还根据本发明的多个方面,在软件中构造包括控制令牌和数据 令牌的消息。如上所述,通常电路板或芯片内的物理互连的控制可 以保存互连中的专用硬件的任务。也就是说,用于控制物理互连的 信号可以由互连中的石更件生成,而不由处理器上运4亍的4欠件生成。 例如,这种控制可以包括访问开关和链路的控制寄存器。然而,根 据本发明,数据令牌和控制令牌,以及结构定义和软件定义的控制
令牌都可以从由执行单元16执行的指令(OUTCT指令)的操作数 输出至互连204上。这些操作数可以是从指令本身直接读取的立即 操作数,也可以是从由相关指令指定的操作数寄存器OP中读取的 操作数。 一个可选的但不是优选的选择可以是从由指令指定的存储 器地址中读取数据令牌或控制令牌。只有硬件令牌从不由软件生成, 并JU又用于互连石更件电路。
现在讨论不同类型的控制令牌的一些示例。应用令牌没有预定 的功能,并且可以用于软件开发者选择的任何目的。如上所述,可 以i殳想,其可以由用于编码凄t据结构和^M于专用协i义的编译器或应 用使用。
专用令牌的示例是: EOM 消息结束 EOP 信息包结束 EOD 数据结束
52READ 从远程存储器读取 WRITE 写入远程存储器
ACK 确iU喿作成功完成 NACK 确i人存在4昔误
在这里使用了动态;洛由(即分组交换路由(packet switched routing)),连接由头令牌或令牌建立,并且由EOM、 EOP或者EOD 令牌切断。应当注意,头令牌实际上是数据令牌,但开关218、 220、 222包含配置为当从未连接的通道末端40输出时将数据令牌识别为 头令牌的逻辑。
EOM、 EOP或者EOD令牌是结构定义的,因为它们每个都触 发互连204中的石更件逻辑,以独立地执行在目的处理器14上运行的 任何软件的特定功能,也就是触发开关218、 220、 222来切断通道。 至于涉及到互连石更件,EOM、 EOP或者EOD令牌是4艮难区分的。 然而,由于4欠件可访问这些令牌,l欠件开发者可以4吏用它们,以在 软件中具有不同含义。因此例如,软件开发者可以通过使用EOP令 牌来选择将消息细分为信息包,以及通过〗吏用EOD令牌在信息包中 描绘这些令牌。
一组控制令牌用来提供数据通信和访问协议。这些通常由软件 解释,并且包括用于访问另一个瓦片的存储器的操作(诸如READ 和WRITE )。如果在处理器14上存在i殳置为由涉及读取或写入的令 牌触发的特定硬件逻辑,则READ和WRITE令牌是结构定义的。 可选地或另外地,可以通过使用应用令牌来执行读或写类型的操作。响应于先前接收到的消息或信息包来传递ACK和NACK令牌, 以指示是否成功地作用于消息或信息包。可选地或另外地,可以通 过使用应用令牌来执行确认类型操作。
在实施例中,特权令牌用于系统初始化、调试、监控等等,示 例是:
WRITEID写入装置标识编号(identification number ) READID 读取装置^H只编号 READTY读取装置类型
WRITEC 写入配置
READC 读取配置
START 启动装置
STOP 停止装置
QSTATUS查询装置状态
WRITEID、READID令牌用于写入和读取送往或来自开关214、 216的控制寄存器的标识编号。READTY令牌用于从其控制寄存器 读取开关214、 216的类型。该类型指示开关是系统开关216还是处 理器开关214。每个开关214、216都由其标识编码和类型在阵列200 中来唯一确定。
54WRITEC和READC令牌用于写入和读取送往或者来自开关 214、 216的控制寄存器的配置信息。例如,该配置信息可以涉及由 开关使用的路由表或者涉及瓦片地址,并且例如这些令牌可以用于 对阵列200的初始设定。
START和STOP令牌用于^f吏能和禁止开关214、 216。
QSTATUS令牌用于查询链路218、 220、 222的控制寄存器, 以确定它们的状态,例如确定链路是否在使用中(如果是,那么在 項IM、方向上)。
硬件令牌用于控制通信链路220、 222的操作。示例是:
CREDIT 允许数据传递 LRESET 链路复位
产生CREDIT控制令牌,并且从接收链路220或222将其发送 至发送链路220或222,以表示接收器能够接收令牌,且指示在接 收链路中可用的空间的令牌价值(worth)的凄史目。
出现错误后,可以通过链路生成并发送LRESET令牌来重新开 始链路220或222。链路通过发送回LRESET令牌而进行答复。4又 在两条链^各已经发送并接收到LRESET令牌后才复位。应当注意, 如果两条链路都尝试同时发送LRESET令牌是无关紧要的。
在一个使用如上所述的五线方案的特别有利的实施例中, CREDIT令牌;故编码为一个换码、 一个值、另一个换码、再一个相 同的值,例如,eoVle2v3,其中v!与V3是相同的值。以那样的方式, 因为两个换码符号总是在同 一条线上产生两个相反的转换,类似地, 两个值符号总是在同 一条线上产生两个相反的转换,使链路处于与 传递CREDIT令牌之前相同的状态。所以保证了 CREDIT令牌不改变任何线的状态。所以如果链路承载其他值,这些值将不受CREDIT 令牌的影响。CREDIT令牌可以高效地"通过"这些令牌。因此这 样做是有用的,因为其允许互连中的硬件将CREDIT令牌传递至各 处,而不必^旦心干扰软件令牌或者链路上的其他值。由互连力更件进 行的CREDIT令牌传递可以是完全自动的。
类似的i殳想可以应用于^f吏用三线方案或者其他方案的CREDIT 令牌,只要可以构造没有全面影响链路状态的令牌。
现在结合图iO描述了软件消息构成的示例,其举例说明了由一
个处理器14 (源处理器)^r出的读取消息ioi,以i更读耳又另一个处
理器14 (目的处理器)的存储器24。
在操作中,在处理器14上运行的代码首先生成用于输出至目的 处理器的头102,所述头用于指定目的处理器的地址,以^更以上述 方式创建通道。在这个示例中,头包括两个数据令牌。随后,在生 成头102之后,软件生成READ控制令牌104,以便请求读取目的 处理器的存储器。该READ控制令牌由源处理器执行的OUTCT指 令的操作数生成。并且该控制令牌告知目的软件必须执行什么功能。 随后生成READ令牌,源软件生成地址部分106和返回头108,在 这个示例中,它们分别是四个令牌长以及两个令牌长,每个令牌再 被OUTCT指令输出。这两部分106和108提供执行请求所需要的 信息,即,要加载的字的地址以及数据必须返回到的处理器的地址。 在生成读取地址106并返回头108之后,软件生成EOM控制令牌 110,以〗更关闭通道。
应当注意,在消息格式方面没有限制关于地址必须是字对齐 ( -aligned )的,还是在本地存储器中的偏移等等。这将取决于 消息的软件处理。:i口图11所示,成功读取响应消息111以由读取"i青求消息101提 供的返回头108开始。返回头108后面是肯定应答控制令牌ACK 112,以向源处理器指示读取成功。随后,在生成ACK令牌112之 后,目的软件生成从目的处理器的存储器地址(由地址部分106指 定)输出的返回数据部分114。在生成ACK令牌112之后,软件生 成EOM控制令牌116,以关闭通道。
如图12所示,失败读取响应消息121也以由读取i青求消息101 提供的返回头108开始。返回头108后面是否定应答控制令牌NACK 118,以向源处理器指示读取不成功,即存在铺-i吴,例如由于不存在 地址部分106所指定的地址。在这种错误的情况下,没有必要返回 任何数据,因此NACK 118的后面仅为随后的EOM控制令牌,以 关闭通道。
如上所述,存在4吏用通道的三种方式:流化的、分包化的以及 同步化的(同步化的通道是分包化的通道类型)。以下说明的是对令 牌组和指令组的一些进一步的改进(refinement),以使这些通信更 为高步文。
第一种改进是提供关闭开关214、 216中的路线而对接收处理 器14不可见的(或者至少,其祐:接收处理器上执行的输入指令忽略) PAUSE控制令牌。PAUSE令牌是具有硬件令牌和专用令牌的特性 的一种特殊情况,其:与硬件令牌相似而与专用令牌不同,接收处 理器上的软件不可访问PAUSE令牌;但是与硬件令牌不同而与专 用令牌相似,其可以由传递处理器上的软件生成。这就意味着在接 收器中没有任何特殊代码的情况下,可以中止令牌流(stream)并 且可以临时释放互连路线。为了继续,发送器仅再次开始发送令牌。 如果目的通道末端在同一处理器上,则PAUSE不起作用。PAUSE 可以用作EOP令力皁的替才奂。第二种改进是提供发送和检查EOM令牌的快速方式。这通过 ^使用 一个;也址OUTEOM以及CHKEOM指令来实主见。OUTEOM输 出EOM令牌。CHKEOM转移(trap)除非所接收的下一个令牌是 EOM令牌。如果NT和IN指令用在EOM令牌上,则INT和IN指 令转移。这些转移除了由特定错误条件自动生成并且传递至特定转 移矢量外,与中断具有类似的作用。转移的原理为本领域技术人员 所熟悉。
第三种改进是提供OUTPAUSE指令,因此不需要单独编码 PAUSE令牌。
下面给出了用于建立以及控制通道的代码序列的示例。在同一 处理器上的两个线程之间建立通道如下:
GETR CHAN cl GETR CHAN c2 SETD cl, c2 SETD c2, cl
当通道被初始化时,则将通道末端标识符cl或c2传递至另一 个线程。
当通过执行以下代码引导(booting)远程处理器时,可以建立 远禾呈通道,即在不同处理器上的线禾呈之间的建立通道:
GETR CHAN, cl
然后发送引导程序,该引导程序,包括:GETR CHAN, c2 SETD c2, cl
OUT c2, c 1 〃输出通道末端的标识符
以及最后扭J亍:
IN c 1, c2 〃输入通道末端的标识符
SETD cl, c2
在上面的两个示例中,《接着可以<又通过4吏用通道的一个末端的 标识符来执4于通4言。
现在描述了用于建立和控制三种不同类型的通道(流化的、分 包化的以及同步化的)的示例^码。
可以仅使用输出和输入来操作流化通道c。 "pause (c)"(中止 通道)指令也是可用的,以便生成PAUSE令牌,这可以在任何时 间结束(breakup)传递,这对于输入线程是不可见的。在高级代码 方面,用于在流化通道上接收令牌的代码可以像下面这样:
switch c=>〉 s case ctl... 〃如果是控制令牌1...
case ct2... 〃如果是控制令牌2...
default control... case dt 1 〃如果是数据令牌1...
59case dt2 〃如果是凄t据令牌2…
default data... 这些代^马可以编译为: TESTCT c, flag IN c, s
BFF flag, data 〃如果是数据令牌,跳转至"数据,,
[用于控制令牌的代码s……]
BFUend 〃跳转至"结束"
data:
[用于数据令牌的代码s......]
end:
对于分包化通道c上的单向通信,在传递处理器P上的高级代
码为:
out(c)(...〉 〃包括c上的输出的指令序列
可以编译为:
OUTT c, token 1 OUTT c, token2
OUTEOM c(应当注意,在优选实施例中,如上所述,OUTT没有必要输 出头,因为当头输出至未连接的通道末端42时,CEID寄存器41 会自动传递头)
以及在接收处理器Q上的高级代码为:
in(c){.,.} 〃包括c上的输入的指令序列
可以编译为:
INT c, token 1 INT c, token2
CHKEOM c
应当注意,如果P发送太多令牌,Q的CHKEOM将转移,如 果P发送太少令牌,则其中Q的一个输入将转移。因此,CHKEOM 指令强制实施处理器之间的通信的信息包结构。
对于同步化通道c上的通信(分包化通道的类型),传递处理器 P上的代码为:
out(c) {...} 〃包括c上的输出的指令序列 可以编译为:
OUTT c, token 1 OUTT c, token2
61OUTEOM c CHKEOM c
以及接收处理器Q上的高级代码为:
in (c) {...} 〃包括c上的输入的指令序列 可以编译为:
INT c, token 1 INT c, token2
CHKEOM c
OUTEOM c
此外,应当注意,如果P发送太多令牌,则Q的CHKEOM将 转移,且如果P发送太少令牌,则其中Q的一个输入将转移。还有, 直到P发送了其EOM, Q才能继续,以及直到Q发送了其EOM, P才能继续,因此P和Q是同步化的。也就是说,Q的CHKEOM 确保Q直到已接收到来自P的整个信息包才能响应,以及P的 CHKEOM确保P直到已接收到来自Q的整个应答信息包(包括返 回EOM)才能继续任何另外的通信。
在分包化的以及同步化的通信中,如果P和Q在两个方向上通 信,则上述指-
应该理解,^又通过示例的方式描述了上述实施例。在其他实施 例中,根据芯片所期望的规格,可以提供不同寄存器组以及指令组。 可以提供事件緩冲器38,(作为输入緩沖器44的可选緩冲器或者除用于输入緩冲器44外)用于通道末端42的输出緩冲器46。可以基 于来自除端口和通道外的其他源的活动来调度线程。已经描述了通 道末端具有输入緩沖器和输出緩冲器,但是也可以使用单行通道末 端。可以在处理器的各部件之间设置不同连接,和/或可以在各处理 器和/或各瓦片202之间设置互连204的不同布置。可以以不同顺序 生成和/或设置数据令牌和/或控制令牌。头、消息、地址和/或令牌 可以是不同的长度,且可以操作不同数据量。还有,本发明不专门 用于具有移动应用处理器的移动终端中。其^f也应用和配置对本领i或 技术人员来说是显而易见的。本发明的保护范围不由所描述的实施 例限定,而是仅由权利要求限定。