- 论坛徽章:
- 0
|
多处理器直连拓扑结构-->处理器直连接口单元系统结构-->链路层微包;链路层自管理协议;链路层重传协议-->链路发送单元
多处理器直连拓扑结构:
n处理器直连,则每个处理器芯片内集成n-1套直连接口;
直连接口在物理层使用SerDes接口,通过串行链路进行互联,每条链路带宽为5Gbps。
处理器直连接口单元系统结构:
中央处理器:Central Processing Unit,CPU
链路单元:Link Unit, LU
处理器直连接口单元:Direct Link Interface Unit, DLIU
DLIU:
每个直连接口对应一套接收报文缓冲队列,存放于其中的报文将根据其所要发送的CPU号发送给对应的CPU.
直连接口单元包括三个部件:网络接口(NI);链路层部件(LLP);物理层部件(PLP)。
NI: 请求报文和响应报文的仲裁;
报文与网络层数据序列之间的转换;
接收报文的按虚通道分离和接收到错误报文的处理等。
LLP:链路自管理;
ECC和CRC校验;
网络层数据序列与物理微包之间的转换;
控制发送微包到物理层以及接收来自物理层的微包等。
PLP:将物理微包转换为串行数据在穿行链路上传送;
接收来自串行链路的串行数据并转换为链路层可以识别的物理微包。
*专用时钟和复位序列的产生逻辑将由处理器的时钟复位单元(Clock Reset Unit, CRU)完成。
链路层微包:
互联网络中传输的信息单位为微包,是点点间信息传送,校验,重传,流控的最小单位。
微包长度固定为192位。
大致结构为:Frame:微包的特征码;
PktInf:微包的特征信息;
Data:微包的数据信息;
CRC:微包的CRC信息。
具体的数据布局:
位
域名
备注
[7:0]
Frame
微包的特征码,有效微包的特征码为“0xAA”
[12:8]
AskNo
重传协议中的响应序列号,正常序列号范围:0-30
[17:13]
SndNo
重传协议中的发送序列号,正常序列号范围:0-30
[21:18]
Crdt
流控协议中的信用,系统中物理信道被划分为4个虚信道,Crdt[n]对应VC[n]的信用,若VC有信用需要传送,则对应的Crdt位设置为1,否则设置为0.
[23:22]
VC
当前微包所占用的虚信道号(Virtual Container No.)
[24]
Tail
当前微包是否为尾微包:1,是;0,否
[25]
Header
当前微包是否为头微包:1,是;0,否
[29:26]
PktType
微包类型,下有阐述
[30]
NcErr
由NC(Network Computer)设置的错误信息位
[31]
NetErr
由NR设置的错误信息位(1:错,0:对)
[175:32]
Data
微包的静荷数据
[183:176]
CRC80
微包中所有偶数位的CRC-8校验信息
[191:184]
CRC81
微包中所有基数位的CRC-8校验信息
微包类型及操作:
Type
微包名
发送处理
接收处理
用途
0001
初始化微包
设置SeqNo=0xF,AskNo=0xF,VC=0,Crdt=0,
Tail=1,Header=1,NcErr=0,NetErr=0;
(加下行)
设置链路状态,其他信息不作处理。
链路自身管理
0010
初始化响应微包
(接上行)不进重传队列,但进CRC校验
(同上)
0011
空报文
设置 SeqNo=0x1F,VC=0,Crdt=0,Tail=1,
Header=1,NcErr=0,NetErr=0;
不进重传队列,但进行CRC校验
携带响应,不携带信用和数据
提取响应序列号
专门为了告知响应
0100
数据微包
若为头微包,数据域中第一个64位字填写路由信息
写所有特征与数据信息
进入重传队列,进行CRC校验
提取所有特征和数据信息
数据传送
0101
信约微包
设置SeqNo,AskNo,Crdt;
VC=0,Tail=1,Header=1,NcErr=0,
NetErr=0;
进重传队列,进行CRC检验
提取SeqNo,AscNo,Crd特征信息
控制信息传送
0000,
0110~
1111
保留
链路层自管理协议:
超时计数器设置+链路状态
超时计数器设置:为了链路状态的监测,每条链路(包括输入端和输出端)设计了CrdNullTime超时计数器;每条链路的重传队列中的每项设计了AskTime,RetransTime超时计数器。
超时计数器设计说明如下:
名称
用途
宽度
启动
关闭
超时处理
AckTime
重传队列等待对应响应的时间限
16位
传送或重传某微报
收到对应的响应微报
启动重传
RetransTime
单个微报最大重传次数限制
5位
微包重传一次,减一
收到对应的响应微报
链路转Shutdown态
CrdNullTime
信约一直空的时间限制
16位
虚信道的信约空
收到对应的响应微报
链路转Shutdown态
链路状态:为实现链路的自恢复和自管理功能,系统互连网设计了链路自管理协议。
每条链路(包括输入端和输出端)设计了一个Initial,Normal和Shutdown三态链路状态机。
三个状态的含义和此状态下的操作如下表:
Initial
含义
端口刚上电或热复位时的状态
1)逻辑复位,如设置XmSN=0xF,RcvSN=0xF,Credit=0等
2)发送端口没有收到正确的初始化-ACK微包时不断发送初始化微包
3)接收端口只接收初始化微包和初始化-ACK微包
4)若接收端口正确接收初始化-ACK微包,设置逻辑初态(如XmSN=0x0,RcvSN=0x0,Credit=最大),进入Normal态
1)接收端口正确接收初始化-ACK微包,进入Normal态
2)若InitialTime超时,进入Shutdown态
Normal
含义
端口正常工作状态
1)正常微包的接收、检测、处理和发送;
2)丢弃不正确微包;
3)维护信约、传送序列号、应答序列号等信息
4)微报重传等
1)若重传超时、信约满超时,进入Shutdown态
2)若收到初始化微包、系统Reset时,进入Initial态
Shutdown
含义
端口出现严重错误时的状态
1)对正在传向其它输出端口的微报,插入尾标志,或插入尾报文,并置微报的传送错误标志;
2)清空重传缓冲区
3)置各虚信道信约为最大值;
4)异常处理完毕进入Initial态;
1)若收到初始化微包、系统Reset时,进入Initial态
2)异常处理完毕进入Initial态
链路层重传协议:
重传协议+参数设置
重传协议:
滑动窗口协议早期出现在TCP/IP协议中,用于实现无差错的链路层通讯和链路层拥塞控制。主要有GO_Back_N和选择性重传两种实现方式。本方案采用前者。
滑动窗口协议分为发送方和接收方两部分。
发送方:发送窗口(大小:2N)&重传Buffer队列(大小:2N-1);
接收方:接收窗口(大小:1)&接收Buffer队列。
发送窗口:对应已发送而未被响应的报文序列,用窗口的上限和下限两个指针表示发送窗口。
通常,定义窗口的下限为ASK_Expected,表示最早发出的未被响应的窗口序列号;
窗口的上限为Next_Frame_To_Send,表示下一个将要发出的报文所用的序列号。
接收窗口:用指针Frame_Eepected指示,该指针表示接收方可以接收的报文序列号。
任何序列号不等于接收窗口所对应序列号的报文都将被丢弃。所以该协议只能顺序接收发送方发出的报文,而不能乱序接收。
滑动窗口协议的发送过程如下:
·开始时,窗口的上限(next_frame_to_send)和下限(ask_expected)重叠。
·发送方发出一个报文后,窗口上限滑动1。发送方为每个发出的报文设置一个响应超时计数器,当在预定时间内没有收到该报文的响应时间时,将发送响应超时事件。
·发送方收到响应报文,若响应序列号等于发送窗口下限,则窗口下限滑动1;若响应序列号介于窗口的下限和上限之间,则窗口下限滑动响应序列号+1.最后关闭已收到报文的响应超时计数器,并释放报文所占用的缓存空间。
·关于重传:当滑动窗口下限滑动到x后,在规定时间内没有收到有效的响应报文,产生一个响应超时事件,表示发送的2号报文未被正确接收(丢失或被损坏),此时滑动窗口上限回退到2号报文处,重新开始传送。
·发送过程中,发送方记录了发送窗口的大小(窗口上限-窗口下限),当重传队列大小等于窗口大小,表示重传队列已满,将触发缓冲区满事件,此时将不再接收新的报文进入重传队列。
滑动窗口协议的接收过程如下:
·开始时接收序列号为0,则只能接收序列号为0的报文;
·当收到序列号为0的报文后,就收窗口滑动1,对应接收序列号为1,只接收序列号为1的报文;
·当收到序列号为1的报文后,接收窗口滑动1,对应接收序列号为2,只接收序列号为2的报文。
只有CRC校验码正确的报文才有可能被接收,只有CRC校验正确且序列号正确的报文才能被正确接收。
当一个报文被正确接收后,将发送该报文的响应ASK给发送方,即将该报文的序列号返回发送方。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91801/showart_1840132.html |
|