SRIO物理层传输特点中的包交换协议
一旦端口初始化完成,就可以开始包的交换。已经定义了一个协议用于两个串行RapidIO端点之间的包通信。使用控制符号管理通过链路的包流。包由控制符号定界和确认。错误情况也可以通过控制符号通信。控制符号还用于支持流量控制协议。
发送时控制符号由一个单独的8B/10B特殊(控制)字符定界。控制字符标记控制符号的开始并紧靠在控制符号的首位之前。为了通道分段(如果可用)和8B/10B编码,在将控制符号传递到PCS子层前,将用于定界控制的特殊字符加入控制符号。因为短控制符号的长度是固定的24位,所以控制符号不需要尾部定界符。定界符和控制符号组合在一起,称为定界控制符号。
使用两种特殊字符中的一种定界控制符号。如果控制符号包含一个包定界符,就使用专用字符PD(K28.3)。如果控制符号不包含包定界符,就使用专用字符SC(K28.0)。如此使用特殊字符向接收者提供了一个控制符号内容的“预警(Early Warning)”信号。
任何不包含包定界符的控制符号都可被嵌入到包中。嵌入的控制符号可能包含任何已定义的stype0编码和“多播事件”或“NOP”之类的stype1编码。不能将stype1作为包开始、包结束、消除、从重传处重启或链路请求控制符号嵌入到包中,因为它们会终止包。
在链路嵌入控制符号的方式和程度会影响链路和系统的性能。例如,嵌入多播事件控制符号允许它们的传播延时和通过交换机处理部件的时延变化最小(某些多播事件应用迫切需要嵌入多播事件控制符号)。另一方面,嵌入所有的包确认控制符号而不是把它们尽可能多地与包定界控制符号组合的做法减少了可用于包传送的链路带宽,是我们所不希望的。
包:
串行RapidIO包在发送时由控制符号进行定界。由于包长度是变化的,所以同时需要包开始和包结束定界符。标记包的结束(包终止)的控制符号跟在包尾或嵌入的控制符号的后面。
用来进行包定界的控制符号如下:
1、 包开始
2、 包结束
3、 消除
4、 从重传处重启
5、 任意链路请求
由包开始控制符号标记包的开始。
包以下列三种方式之一终止:
1、 用包结束控制符号标记包尾。
2、 用包开始控制符号标记包尾,包开始控制符号标记新包的开始。
3、 用从重传处重启、消除或链路请求控制符号取消包。
每个包都需要一个标识符来唯一的标识它的确认控制符号。该标识符就是RapidIO包格式中的ackID字段,对RapidIO串行物理层的包来说,ackID字段的长度是5位,它允许在相邻处理部件间存在1到32个未完成的待确认的请求或响应包,但只允许同时存在最多31个未完成的待确认包。
复位后分配给ackID的初始值是0b00000。ackID的后续值是连续分配的(按数字顺序增加,达到最大数时返回到0),用来指示包的发送次序。确认本身由控制符号组成。
串行RapidIO链路协议使用重传从包发送错误中恢复。为支持包重传,发送端口保存每个通过串行链路传输的包的一个副本,直到收到接收端口发出的接收包的包确认控制符号或者直到端口判定该包已经遇到了不可恢复的错误情况。包确认控制符号指示接收端口已收到包并且没有检测到错误,同时已经接收对该包进行处理的责任。除了可能的错误,如果端口在接收到的包的优先级上没有足够的可用输入缓冲区空间,则端口可能拒绝包。
产生包的端点处理部件为每个包分配一个优先级。该优先级包含在包的物理层字段优先级(PRIO)中并有四个可能的值: 0、1、2和3。包的优先级随优先级值的增加而提高;最低优先级为 0; 最高优先级为3。使用包优先级的目的有多个, 包括事务排序和死锁预防。
快来扫描下方二维码关注公众号,领取站内所有相关资料,所有哦~
有建议、有需求、有疑问、联系我