李沛南, , ,,
(1.哈尔滨理工大学 自动化学院,哈尔滨 150080; 2.中国科学院自动化研究所,北京 100190)
依据最新视觉网络指数和全球云指数,2014年至2019年,数据中心每年平均数据流量将从3.4 ZB增至10.4 ZB[1]。大数据时代的到来使得传统的摩尔定律,即每隔18个月~24个月处理器时钟频率翻一番,逐渐转为处理器个数、线程数以及并行算法性能的翻番[2]。
NVIDIA与IBM在文献[3]中设计的超级计算机,重新定义CPU、GPU间的互联方式与架构。AMD、ARM等公司,创立异构系统架构基金会,旨在统一CPU、GPU及高性能单元的互联架构,减小系统的复杂度,提升处理器性能[4]。国内许多机构也致力于多核研究[5-7]。单核向多核、多片发展已成为趋势。作为多片通信的媒介,片间互联在新的体系架构中将发挥举足轻重的作用。
传统片间互联结构主要有2种:支持路由功能的树结构;不支持路由功能的全互联结构。在SIMT架构中,数据搬运多在同一时刻进行,采用树结构互联时,根结点两侧大量数据交换极易导致传输瓶颈[3]。虽然树结构协议多兼容全互联结构,但路由功能模块会使得在全互联结构中占用面积较大、传输效率不高。
片间互联技术的实现主要有2种:并行技术,如HyperTransport、Parallel RapidIO;串行技术,如PCIe(PCI-Express)、SRIO(Serial RapidIO)。随着处理器频率迅速提升,并行传输时钟漂移日益严重,且所需引脚数多,使后期的实现愈加复杂。在充分吸收SerDes(Serializer/Deserializer)的优势后,串行技术,凭其传输速度快、引脚少、可扩展性强等优势,已在诸多领域取代并行技术[8]。
PCIe由Intel开发,支持多种功能,保持向前兼容,实际传输速度仅能达到理论速度的64%[9]左右,适用于实时性要求低的系统中[10]。RapidIO由Motorola和Mercury开发,对于小数据量的传输效率高[10],但对于大数据量,其开销较大;文献[11]采用SRIO进行高分辨率图片传输,单物理通道仅为理论值的74%。HyperLink由TI研发,仅应用于该公司的DSP产品,且不开源。HyperTransport由AMD开发,虽然极大地减少了引脚数,但本质上仍为并行技术,在工作频率增加时,将存在较大的实现困难。
以上述研究为基础,本文提出一种基于包且具备低延迟、高效率的全互联串行接口协议——SLink。该协议由事务层、数据链路层和物理层组成,选择SerDes模块作为物理层实现的基础,支持可配置的CRC校验和硬件检测重传机制。
SLink是针对芯片间互联应用领域,基于“包”的高带宽、低延迟、少引脚、高可靠性点对点串行传输协议。协议使用端到端的数据传输方式,两端均包含有发送逻辑(TX)和接收逻辑(RX)。如图1所示,SLink物理链路基于低电压差分信号 (Low-Voltage Differential Signaling,LVDS)技术,可由多个数据通道(Lane)组成,每个数据通道包括发送和接收2组差分信号,每组差分信号使用两根信号线传输。较单信号传输方法,此方法可有效地抑制电磁干扰,达到较高的传输频率,从而降低延迟,提高传输带宽[12]。
图1 SLink物理链路示意图
为提高协议的灵活性和可扩展性,SLink采用3层架构,包括事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer)。
SLink协议的分层架构如图2所示,其中,总线接口包括直接内存访问(Direct Memory Access,DMA)接口、对SLink功能寄存器的访问接口。该接口可以依据片上系统(System on Chip,SoC)架构需求,采用不同总线协议进行设计。
图2 SLink分层架构示意图
1.1.1 事务层
事务层位于SLink架构中的最上层,负责通过DMA接口读写外部存储器,生成操作请求包,解析由数据链路层传递给上层的数据。
写操作请求和数据包由3个部分组成,即包头控制字、数据有效负载、可选的CRC校验字段。如图3所示,作为发送端时,事务层依据功能寄存器的配置生成包头控制字,通过DMA接口读取操作数据,选择是否添加CRC字段,写入发送数据缓冲区。作为接收端时,事务层将解析写操作请求和数据包,通过DMA接口将接收数据缓冲区收到的数据有效负载写往目的地址。
图3 写操作请求和数据包
读操作请求包只有包头控制字。作为发送端时,事务层依据寄存器配置生成读操作请求包,写入发送数据缓冲区。作为接收端时,事务层将解析收到的包头控制字,判断是否需要CRC校验,并生成对应的写操作请求和数据包,完成发送端对接收端的读操作。
1.1.2 数据链路层
数据链路层位于事务层和物理层之间,其主要功能是保证事务层发送和接收数据的完整性,负责各包在事务层和物理层之间的拆分、组合,控制码(K-code)的装配、解析等。
数据链路层的控制码(K-code)兼容部分PCIe的控制码。控制码的具体定义如表1所示。IDL码标志链路当前无操作请求;物理链路复位时,由COM码进行链路两端的数据对齐,保证链路可以正确接收数据;PAD码是在传输过程中,链路层发送速度慢于物理通道传输速度时,为保证信息的正确性和完整性,链路层添加的无效数据;由STP码与END码进行信息同步,分别标志数据包的起始与结束。
表1 控制字符的说明
当作为发送端时,不论SLink执行写操作或读操作,数据链路层都将从事务层的发送数据缓冲区中读取数据,添加控制码符号,依据通道数配置拆分数据包至物理层不同的通道。
当作为接收端时,数据链路层接收物理层的数据,将多通道数据同步组合为数据包,根据包头控制字的内容,判断是否对接收的数据包进行CRC校验,并根据校验结果产生对应的CRC校验正确或错误响应包,反馈给发送端。
从发送端来看,若接收到CRC正确校验响应包,数据链路层返回到空闲状态,等待下次传输;若接收到CRC错误校验响应包,数据链路层将从发送数据缓冲区再次读取数据,发送到物理层。
CRC校验响应包也仅包含包头控制字,相比于读操作请求包,只需对应字段不同。
1.1.3 物理层
物理层基于SerDes模块设计,处于数据链路层和实际物理链路之间,负责数据链路层与实际物理链路之间的数据传输。
作为发送端,物理层接收使能通道的并行数据,进行8b10b编码,传递给SerDes模块,进行串化输出。作为接收端,SerDes模块完成物理链路接收数据的解串操作,物理层将解串后的并行数据进行8b10b解码,传递给数据链路层。
规定发起读写操作命令的SLink为本地SLink,简称S0;规定接收物理链路传递的读写请求,被动进行相应操作的SLink为远端SLink,简称S1;规定S0所处系统为SoC0,S1所处系统为SoC1。
SLink写操作是指S0读取SoC0某地址段中的数据写入SoC1某地址段。读操作是指S0读取SoC1某地址段的数据至SoC0某地址段。
SLink传输数据的流程为:先配置S0和S1的功能寄存器,针对不同操作请求,再分3部分进行描述:
1)不使能CRC写操作
(1)S0事务层依据寄存器生成包头信息,通过DMA接口从指定源地址读取数据,存入发送数据缓冲区。
(2)S0数据链路层从发送数据缓冲区中读取数据,将包头信息和数据负载分配到各物理通道,并依据数据包格式插入控制码。
(3)S1物理层接收包头控制字和数据,交付给数据链路层,数据链路层依据包头分析,判断本次传输没有CRC写操作,将数据直接写入接收数据缓冲区。
(4)S1事务层从接收数据缓冲区中读取数据,通过DMA接口写入目的地址。
(5)不使能CRC写操作完成。
2)使能CRC写操作
(1)S0事务层依据寄存器生成包头信息,通过DMA接口从指定源地址读取数据,存入发送数据缓冲区。
(2)S0数据链路层将包头信息、数据负载以及CRC冗余码一并分配到物理通道中,插入控制码。
(3)S1物理层接收到包头和数据,数据链路层判断出本次传输为使能CRC校验的写操作。
(4)S1数据链路层校验冗余码,生成CRC校验响应包,并返回给S0。若校验正确,则通过DMA接口写入目的地址,否则,等待S0重传。
(5)S0数据链路层判断响应包控制位,若校验正确,S0此次写操作成功;若校验失败,则跳至步骤(2),循环步骤(2)~步骤(5),直至成功。
(6)使能CRC写操作完成。
3)读操作
(1)S0事务层依据寄存器生成读操作的包头信息,存入发送数据缓冲区。
(2)S0数据链路层将包头信息分配到各个物理数据通道,插入控制码。
(3)S1数据链路层解析包头控制信息,交给事务层。
(4)S1事务层依据包头控制信息进行使能或不使能CRC写操作,将数据发送给S0。
(5)S0正确收到数据后,操作完成。
SLink检错重传机制建立在CRC冗余校验的基础上,由控制寄存器使能,错误检测与重传功能由硬件自动完成。这种方法有别于软件处理,不仅速度快[13],也为程序设计人员隐藏了错误处理过程,使编程开发更加方便。
为了验证SLink协议的可行性,参考图2,总线接口采用AXI 3.0,该协议支持簇发(Burst)操作,有利于提高DMA模块的传输效率。DMA接口与发送和接收缓冲区的数据位宽为64 Byte,满足4通道下各通道16 Byte并行数据的输入。物理层实现采用PCIe 2.0的PIPE层[14]和SerDes模块,支持单物理通道传输速度为5 Gb/s或2.5 Gb/s,支持4通道传输模式。
本节对实现方案中的功能寄存器、缓冲区、CRC生成多项式的选择,以及针对本设计的编程接口模型进行详细描述。
在本设计方案中,SLink采用4个配置寄存器和1个只读寄存器,均为32 Byte。只读状态寄存器负责指示操作起止状态和物理链路发送状态等信息。
配置寄存器包括:1)控制寄存器,负责配置物理链路的软复位、传输速度和发送使能;2)本地地址寄存器,为写操作源地址,或读操作读回地址;3)控制字高32 Byte寄存器,为写操作的目的地址,或读操作源地址;4)控制字低32 Byte寄存器,负责配置其他传输模式参数和数据包的信息。
SLink的包头控制字仅为64 Byte,为控制字高32 Byte与低32 Byte的拼接,相关配置参如图4所示。
图4 包头控制字格式
各字段的含义为:远端地址,若为写操作请求,则该字段为写目的地址,若为读操作请求,则该字段为读取源地址;有效数据长度,此次读写操作传输数据个数,以64 bit为单位,有效数据范围为1~216,支持单次最大数据传输量为512 KB;通道数目,本次传输使能的物理传输通道个数,支持1通道,2通道和4通道3种模式。该字段只需要配置S0,接收端S1的数据链路层根据链路状态进行解析,完成与发送端匹配;数据包类型,表明本数据包为操作请求包,CRC校验正确响应包,或者CRC校验错误响应包;传输命令类型,表明此次传输为写操作请求或读操作请求;保留,目前设计中未使用的字段,以备后续的功能扩展。
SLink支持可配置的CRC冗余校验,参考文献[15]选用CRC校验码生成多项式的方法,采取CRC-16。该生成多项式有以下特性:
1)被检测序列中出现1个~3个或奇数个数据位错误时,检错率达100%。
2)突发错误长度小于或者等于16时,检测率达100%。
3)突发错误长度等于17时,检测率达99.996 9%。
4)突发错误长度大于或者等于18时,检测率达99.998 5%。
突发错误长度为N,是指在一段长度为N的子序列中,最低位和最高位数据出错,中间位数据可能出错,也可能未出错。
在本文实现中,发送与接收数据缓冲区的大小均等于单次传输可支持的最大数据大小,即512 KB。添加该缓冲区带来的优势有:
1)操作数据从传输层到数据链路层时钟域的处理。
2)若CRC校验失败,数据发送方可从缓冲区中重新发送所有的操作数据,应用程序不需处理。
3)操作数据接收方在总线发生拥堵时,保留原值。
4)祛除当缓冲区小于传输长度时所需的状态标志,如发送缓冲区满或溢出和接收缓冲区空等。
如算法1所示,SLink软件编程依据控制寄存器的格式进行配置。支持2种传输通道发送速度,3种传输通道数模式,以及可配置的CRC校验功能。
在算法1中,1行~10行介绍接口输入和输出参数含义;11行~13行判断本次操作是否为更改物理通道传输速度和传输通道数,决定是否软复位;14行~19行配置功能寄存器,在19行进行使能操作,开始数据信息的传输;20行~22行判断状态寄存器操作起止标志位,操作结束后,置接口返回值为1。
算法1SLink配置
输入pointer,is_new_configuration,option,N,xmode,crc_en,gtps,local_addr,remote_addr
输出op_finished
1. %pointer 指SLink在系统中的基地址
2. %is_new_configuration指是否会进行速度和通道数的新配置,决定是否进行软复位
3. %option 指本次操作类型,0为写,1为读
4. %N 指数据个数
5. %xmode 指通道数,0为X1,1为X2,2为X4
6. %crc_en 指是否进行CRC校验,1为使能
7. %gtps 指传输速度,0为2.5 Gb/s,1为5 Gb/s
8. %local_addr指写操作源地址或读操作写回地址
9. %remote_addr指写操作目的地址或读操作源地址 %
10. %op_finished 指本次操作是否正常结束
11. if(is_new_configuration) then
12. pointer[0/4]= 0
13. end if
14. SOFT_RESET = 1
15. START = 1<<4
16. pointer[4/4]=(option<<0) + (xmode<<5) + (crc_en<<4) + (N<<8)
17. pointer[8/4]= remote_addr
18. pointer[12/4]= local_addr
19. pointer[0/4]= gtps + SOFT_RESETN + START
20. while pointer[16/4]& 1 do
21. op_finished = 0
22. end while
23. op_finished = 1
为验证设计实现的正确性,评估传输性能,搭建基于实际片间互联应用场景的测试环境。如图5所示,对SLink实现进行软件仿真与现场可编程门阵列(Field Programmable Gate Array,FPGA)原型验证。SoC0与SoC1有独立的寻址空间,SLink内部DMA模块可通过总线访问存储器,图中略去了总线。在测试过程中,由SoC0发起操作请求,SoC1端接收控制命令。
图5 验证评估环境
软件仿真具备易观察、迭代速度快的优点,适合验证设计实现的正确性,并评估性能。本文采用VCS(Verilog Compiled Simulator)作为仿真工具,其版本号为2014.03。
在软件仿真实验中,可以同时配置SoC0的控制器与SoC1的可配接口,给予功能寄存器输入信号。采用此种方法,可以对实现的不同传输模式、不同数据量大小进行完备的测试,并记录各层信号数值变化,进行性能评估。
3.2.1 功能验证
目前,SLink可支持多种传输模式下读写操作,通道数目可选为X1/X2/X4,单通道传输速率可为2 Gb/s和5 Gb/s,可选的CRC校验,组合情况共24种。
本文以SLink一次写操作为例说明仿真过程,仿真波形如图6所示。此操作传输模式为:单物理通道传输速度为5 Gb/s,采用4通道传输模式,并使能CRC校验,有效数据为64 Byte。
图6 SLink写操作(X4,使能CRC校验)
SLink_S0为本地SLink的信号,“d_araddr”为存储器AXI总线接口的“读地址”信号,可以看到,此操作数据源起始地址为0x6000_0000;“sl_busy”为本次写操作“起止标志位”,该位为0时,表明SLink处于空闲状态,为1时,说明SLink正处于操作进行状态;4个“pipe0_tx_data”的变化表明本次操作使用的传输通道数为4。
类似地,SLink_S1为远端SLink的信号,“d_awaddr”为存储器AXI总线接口的“写地址”信号,可以看到,本次写操作目的起始地址为0x6000_3000;“rx_crc_ck”为“CRC校验判断结果”,SLink_S1的事务层将会在CRC校验判定正确后,通过DMA接口写往存储器;“pipe0_rate”为1,表明本次操作的物理通道传输速度为5 Gb/s。
从图6中可以看出,此次写操作的配置模式:单通道传输速度为5 Gb/s,采用4通道传输,使能CRC校验。SLink_S0在发送数据后进行等待;SLink_S1成功校验已接收数据,并将数据写往目的地址;SLink_S0在SLink_S1端接收操作成功后,结束等待,恢复初始状态。
3.2.2 传输延迟
定义“传输延迟”即从本地SLink的DMA接口读取第一个数开始,到远端SLink通过DMA接口写第一个数的时间。传输延迟越小,SLink传输实效越好。
仿真评估时,对传输延迟的测量是通过实际的存储器接口读写时间进行计算所得。图6的波形中部最上方显示此写操作传输延迟为196.67 ns。
经测试,采用1通道和4通道,不使能与使能CRC功能时SLink的传输延迟分别如图7与图8所示,横轴传输数据量的倍数以64 bit为单位。
图7 未使能CRC传输延迟
图8 使能CRC传输延迟
图7为未使能CRC的传输延迟结果示意图。可以看出,在同一种模式下,传输不同数据量时,传输数据延迟基本稳定;在不同模式下,物理链路传输速度(物理通道传输速度与传输通道数的乘积)配置越高,传输延迟越小。
图8为使能CRC后的传输延迟结果示意图。可以看出,在同一种模式下,数据量越大,传输延迟越大;在不同模式下,物理链路传输速度配置越高,传输延迟越小。
结合实验结果,对于传输延迟,有如下分析:
1)当传输速度配置不同时,物理链路传输速度是影响传输延迟的主要原因;当物理通道发送速度相同,传输通道数不同时,传输延迟差体现在从64比特数据至物理通道的拆包和合包操作上。
2)不使能CRC时,SLink对数据的处理方式是尽快发送,故其传输延迟与传输数据量大小基本无关。
3)使能CRC功能时,接收端使能错误重传机制,只有接收到数据,并经过校验确认无误后,数据才会被写入到目的地址中,因此,在使能CRC功能后,传输数据量越大,SLink传输延迟越大。
为了对比SLink、与PCIe和SRIO的传输性能,实验中搭建了类似SLink测试环境的仿真平台进行PCIe、SRIO的性能评估。SRIO支持单通道物理传输速度为3.125 Gb/s和6.5 Gb/s,为增强实验数据的可对比性,在实验过程中,将物理层的参考时钟125 MHz转为100 MHz,有效的单通道传输速度3.125 Gb/s和6.5 Gb/s分别转为2.5 Gb/s和5 Gb/s。
当3种协议均传输数据量为512 Byte时,传输延迟的比较如图9所示。柱状条分别为3种协议传输延迟测试结果;虚线为对应坐标轴模式下SLink传输延迟相对SRIO减少的百分比;实线为相对PCIe减少的百分比;点线为各模式下相对PCIe传输延迟平均减少的百分比。
图9 未使能CRC传输延迟对比
从实验结果可知,SLink的传输延迟较小于另外2种协议。相对于PCIe,在物理通道传输速度为2.5 Gb/s,传输通道数为1时,传输延迟最多可减少72%;各种工作模式下的平均传输延迟减少61%。
假设传输时间(T)为从本地SLink的DMA读第一个数据开始,到该数据传输到远端SLink的DMA写完N个数的时间。假定传输数据位宽为data_width,那么,有效带宽的计算方法见式(1):
(1)
3.2.3 有效带宽
在本文实验中,评估1通道和4通道,不使能与使能CRC功能时SLin k的有效传输带宽。测试结果如图10所示,“+CRC”和“-CRC”分别代表使能和不使能CRC校验重传机制。
图10 不同模式下有效带宽
在图10中,每种模式分别测试4种数据量,可以看出,不论是否使能CRC校验,传输数据量越大,有效带宽越大,物理链路发送速度配置越高,有效带宽越大。
结合实验结果,对于有效带宽,有如下分析:当传输速度配置不同时,物理链路传输速度是影响传输时间和有效带宽的主要原因;若使能CRC,校验时间与传输数据量成正比关系,不论是否使能CRC校验,当链路速度配置相同,传输的数据量越大,有效带宽越大。
当3种协议传输数据量均为512 Byte时,有效带宽的比较如图11所示。
图11 未使能CRC传输带宽对比
从实验结果可知,SLink的有效带宽较大于另外2种协议,相对于PCIe,在物理通道传输速度为5 Gb/s,当传输通道数为4时,有效带宽最多可增加78.5%;平均有效带宽增加55.6%。
为评估在实际片间互联应用场景下,SLink设计的性能,采用两片FPGA,分别下载SoC0与SoC1,模拟片间通信。
FPGA验证环境的搭建基于Synopsys公司的HAPS-70原型验证系统平台,采用Synopsys公司的Synplify Premier综合器,版本号为2014.03,和Xilinx公司的Vivado实现工具,版本号为2014.4。
参考图5,FPGA系统结构中,SoC0选择Microblaze作主控核。SoC1可配接口处设计状态机,接收SoC0控制器通过通用输入输出接口(General Purpose Input Output,GPIO)发送的控制信号,进行相关配置,具体如下:
1)SoC0控制器发送传输模式配置信息,SoC1在接收信号后,配置相关寄存器,同时向SoC0反馈成功接收信号,表明链路模式配置成功。
2)初始化SoC1片上存储器,此功能为保证SoC1存储器初始值与将写值不同,确定写操作执行。
3)在写操作完成后,SoC0控制器可读取SoC1中目的地址接收到的首字节数据,以确认写操作正确。
FPGA测试环境如图12所示。字母A与B为2个FPGA,分别下载SoC0与SoC1;数字1为PCIe高速线缆,选择距gpio连接线接口比较近的MGB(Multi-gigabit)插槽,利于布局布线,减小时序违规;数字2为HapsTrak 3 I/O连接线,传输GPIO信号;数字3为LED灯,控制开关为操作起止标志位,方便验证过程中观察记录。
图12 FPGA原型验证环境
发送数据缓冲区的数据位宽为64 bit,所以,事务层发送数据的有效带宽为:
BWTransaction_Layer=64×fTransaction_Layer
(2)
物理层理论传输带宽为:
BWPhysical_Layer=Nlane×Vper_lane
(3)
如果事务层传输带宽需要满足物理层的传输带宽,使得数据链路层不会因为事务层DMA接口搬运速度慢而暂停,并考虑到物理层会对数据进行8b10b编码,事务层传输频率应满足下式:
(4)
在不同物理链路传输速度配置下,事务层DMA接口工作所需最小频率见表2。
表2 不同模式需要的事务层工作频率 MHz
目前,受工具限制,在FPGA综合实现后,SLink事务层工作频率为100 MHz。满足物理通道传输速度为2.5 Gb/s,传输通道数为2,或传输速度为5 Gb/s,传输通道数目为1。当物理链路传输速度配置更高时,物理通道传输速度快于事务层,将导致传输瓶颈。事务层工作频率的优化将在后期工作中进行。
验证中,将两端SLink状态寄存器中起止状态标志位“sl_busy”插入内部逻辑单元(Integrated Logic Analyzer,ILA)。采用时钟频率为200 MHz的计数器记录标志位的跳变,即2个SoC端传输操作的开始和结束时间,统计“传输延迟”与“传输时间”。
假设传输延迟为S0与S1两端开始操作的时间差,假设传输时间为S0端开始操作至S1端操作结束的时间差。
在控制器频率为100 MHz,统计不同模式下,传输1 024个数据时的延迟和传输时间,根据式(1),得有效带宽计算方法为:
(5)
FPGA验证实际传输速度的测试结果如图13所示。柱状条为SLink的有效带宽测试结果,线为传输延迟的测试结果。
图13 未使能CRC的FPGA测试结果
由于FPGA与软件仿真计算传输延迟和带宽的时间参考不同,实验数据略有误差,但FPGA实验数据同样证明:
1)在未使能CRC校验功能时,同一模式下,传输不同数据量时,传输数据延迟基本稳定;不同模式下,物理通道发送速度越快,传输延迟越小。
2)在未使能CRC校验功能时,物理链路传输速度配置越高,传输带宽越大。
在物理通道传输速度为5 Gb/s,传输通道数为1时,SLink传输速度约为3.9 Gb/s,达到理论传输速度的78%,若不考虑8b10b编解码的影响,传输效率高达97.5%。
本文实验中采用2套环境进行综合评估:1)使用Synopsys公司的DC 2013.12,评估SLink、PCIe和SRIO 3种控制器的时序和面积;2)进行FPGA综合,使用Syplify Premier 2014.03与Vivado 2014.4,比较SLink和PCIe实际所占资源。
DC综合选用TSMC 40nm LP-CMOS工艺技术库作为目标单元库,综合结果对比如表3所示。SLink控制器的工作频率可达600 MHz,约为PCIe和SRIO控制器频率的2.4倍;所占逻辑单元面积约为PCIe的1/50,SRIO的1/10。
表3 SLink和PCIe控制器DC综合结果
使用Synplify Premier进行SoC中有关总线协议子系统的综合实现,Vivado实现Microblaze相关模块,综合采用默认策略(Vivado Synthesis Defaults),实现采用性能探索策略(Performance Explore)。结果如表4所示,数据表明:SLink控制器在FPGA中所需要LUT只有PCIe控制器的1/52,与DC综合结果相近。
表4 SLink与PCIe控制器FPGA资源占用对比
本文研究对比业界成熟的串行接口协议,提出一种点对点串行接口协议SLink,并对其进行设计实现,通过软件仿真和FPGA模拟实际片间应用场景,与PCIe 2.0和SRIO进行性能对比分析。实验结果表明,SLink具有良好的传输性能,相比PCIe 2.0,SLink的传输延迟平均减少61.0%,有效带宽平均增加55.6%,控制器最高工作频率提升1.4倍,所占面积减小约97.5%。
SLink在未来将用于中国科学院自动化研究所的高性能计算芯片研发项目中,实际的性能评估和改进优化是后续研究重点。
[1] CISCO.Cisco global cloud index:forecast and methodology 2014-2019[EB/OL].[2016-04-21].http://www.cisco.com/c/en/us/solutions/collateral/service-provider/global-cloud-index-gci/Cloud_Index_White_Paper.html.
[2] SHALF J,DOSANJH S,MORRISON J.Exascale computing technology challenges[C]//Proceedings of International Conference on High Performance Computing for Computa-tional Science.Berlin,Germany:Springer-Verlag,2010:1-25.
[3] NVDIA.NVIDIA NVLink High-speed interconnect applica-tion performance brief[EB/OL].[2016-11-01].http://www.nvidia.com/object/nvlink.html.
[4] ROGERS P,FELLOW A C.Heterogeneous system architecture overview[C]//Proceedings of Hot Chips 25 Symposium.Washington D.C.,USA:IEEE Press,2013,25:1-41.
[5] 朱 英,陈 诚,许晓红,等.一款多核处理器FPGA验证平台的设计与实现[J].计算机研究与发展,2014,51(6):1295-1303.
[6] 邓军勇,李 涛,蒋 林,等.MIGPU-9多核交互式图形处理器的设计[J].计算机辅助设计与图形学学报,2014,26(9):1468-1478.
[7] 郭 阳,李思昆,屈婉霞.片上多核处理器验证:挑战、现状与展望[J].计算机辅助设计与图形学学报,2012,24(12):1521-1532.
[8] 马春江,牛文生,孙靖国.几种串行总线互连技术分析[J].航空计算技术,2007,37(5):127-130.
[9] MARCUS G,GAO W,KUGEL A,et al.The MPRACE framework:an open source stack for communication with custom FPGA-based accelerators[C]//Proceedings of the 4th Southern Conference on Programmable Logic.Washington D.C.,USA:IEEE Press,2011:155-160.
[10] 梁小虎,王 乐,张亚棣.高速串行总线RapidIO与PCI Express协议分析比较[J].航空计算技术,2010,40(3):127-130.
[11] ZHANG F,WU Q,REN G.A High-speed serial transport platform based on SRIO for high-resolution image[C]//Proceedings of the 3rd International Congress on Image and Signal Processing.Washington D.C.,USA:IEEE Press,2010:2441-2444.
[12] MASSOUD Y,KAWA J,MACMILLEN D,et al.Modeling and analysis of differential signaling for minimizing inductive cross-talk[C]//Proceedings of the 38th annual Design Automation Conference.New York,USA:ACM Press,2001:804-809.
[13] MING-DER SHIEH M H W A S,CHEN C,LO H F.A systematic approach for parallel CRC computations[J].Journal of information science and Engineering,2001,17(3):445-461.
[14] DAVE D.PCI express PIPE overview[EB/OL].[2016-11-21].http://www.applistar.com/wp-content/uploads/apps/pip e2_00.pdf.
[15] KOOPMAN P,CHAKRAVARTY T.Cyclic redundancy code (CRC) polynomial selection for embedded networks[C]//Proceedings of 2004 International Conference on Dependable Systems and Networks.Washington D.C.,USA:IEEE Press,2004:145-154.