作者
罗莉,周宏伟,周理,潘国腾,周海亮(@ 国防科技大学)
刘彬 (@ 武警贵州省总队)
摘要
多核处理器直接互连构建多路并行系统,一直是提高高性能计算机并行性的主要方式。主要研究多核处理器直连接口的QoS设计,通过直连接口完成跨芯片的cache一致性报文有效、可靠传输,实现共享主存的SMP系统。详细阐述了直连接口各个协议层的QoS设计的关键技术,基于UVM方法学构建了可重用验证平台,模拟验证了QoS设计的正确性,移植到FPGA原型验证平台,顺利通过了测试。深入研究和实现处理器芯片直连技术,是提升高性能多路服务器的主流方向,具有良好的应用和研究前景。
正文
引言
多核处理器支持直连接口实现共享主存的对称多处理器SMP(Symmetric MultiProcessing)系统已经成为主流。
处理器直流接口提供的QoS(Quality of Service)保障,能够实现可靠、试试、完整和顺序到达的数据传输。
市场上多处理器互连案例
- Intel的高速、点到点的处理器互连总线QPI (Quick Path Interconnect)
- IBM 在P系列处理器中采用处理器智联通道互连,最大支持32路处理器
- AMD 的超传输HT(HyperTransport)总线,高速、双向、低延时、点对点的直连接口
- NVIDIA的NVlink支持多个GPU互连
本文的QoS设计
QoS指网络在传输数据流时要满足一系列服务请求,有如下设计要求:
- 提高数据的吞吐率
- 提供保障服务,避免死锁和拥塞,保证数据的完整性和到达的顺序性
主要设计包括:
- 信用机制设计
- 虚通道技术、优先级的仲裁调度策略:避免死锁
- 滑动窗口重传协议:维护了数据传输的顺序性和正确性
四种协议层次及相关的QoS设计
接口的协议分为应用层、传输层、数据链路层和物理层。
应用层划分事务类型并传输
与NoC部件接口,传输与NoC相接的报文,包括请求、响应、监听和应答。
传输层报文的虚通道传输和仲裁调度避免死锁
接收应用层的报文,并对这些报文仲裁,转换成链路层的数据序列,发送给链路层;接收链路层的数据并转换为应用层的报文格式也会发送给应用层。传输层的设计包括报文缓冲、四选一仲裁、数据序列格式转换和信用控制等部件。
应用层传递下来的各种事务会不可避免地排队处理,为避免死锁,传输层和应用层间采用虚通道方式。定义四个虚通道(REQ\RSP\SNP\ACK),若一个虚通道被堵塞,则其他的虚通道还可以继续通向输出端口,减少了由于事务相互依赖导致的死锁。
由于分时共享链路层传输,本文设计了固定优先级的仲裁调度,根据优先级调度哪个通道占用链路层传输。
仲裁调度的饥饿现象
当出现连续不断、稳定的监听响响应传输时,可能会导致监听请求或者请求通道得不到仲裁调度,出现“饥饿”现象。
本设计通过设置监听通道和请求通道的等待计时器,若等待时间大于门限时间,二者请求将被调整为最高。
链路层采用滑动窗口重传协议实现无差别的微包传输
接收传输层数据序列,转换成微包,并根据链路状态发送给物理层;设计结构包括:微包打/解包、微包管理、链路管理、重传缓冲。
链路层通信遇到数据传输或接受错误是,需要通过滑动窗口重传协议实现重传。在发送和接收端维护两个窗口,维护重传缓冲区的读写控制和发送/接受的序列号,任何序列号不等于窗口序列号的报文都会被丢弃。
微包的类型和管理
链路层传输的信息最小单位就是微包,微包分为报文微包和管理微包
物理层通过频率偏斜校准机制将频率补偿和延迟修正二合一
将微包转换成串行的码流,通过serdes传输
QoS信用机制设计
信用机制设计
基于信用的流控设计能精确判断流量,可避免传输数据拥塞
在协议层次的输入端口和输出端口设置了报文缓冲区,如图左侧是Sender,右侧是Receiver。
在数据的源端维护一个信用计数器,初始值设置为接收方缓冲区深度,当数据源发出一个微包信号Send,信用减1;当缓冲区中放出1个微包时,释放1个信用,当信用释放信号Release到达数据源端时,源端信用计数器加1。
即,发送方通过信用计数器(Credit Counter)监测接收方的微包存储状况从而判断是否继续向接收方发送packet。