SpaceFibre星载网络服务质量设计

2020-11-17 06:29郑静雅安军社赵允齐
计算机工程与设计 2020年11期
关键词:优先权时隙缓冲区

郑静雅,安军社,赵允齐

(1.中国科学院国家空间科学中心 复杂航天系统电子信息技术国防科技创新重点实验室,北京 100190; 2.中国科学院大学 计算机科学与技术学院,北京 100190)

0 引 言

近年来,随着空间探测任务难度的增加,卫星有效载荷通信系统在数据处理的速度和数量等方面有了更高的需求。一些有效载荷要以超过1 Gbps的速度传输数据,例如合成孔径雷达、多光谱成像仪等[1]。针对这一问题,邓迪大学与欧洲航天局提出了新一代串行、超高速星载数据链路SpaceFibre技术[2]。SpaceFibre凭借其高传输率、高带宽、低误码率等优势成为构建下一代超高速星载数据网络的核心技术[3-6]。

SpaceFibre采用虚拟通道(virtual channel,VC)技术将数据流划分为不同队列,每类数据队列占用一条VC[7]。当数据流过载时,多路VC会竞争链路带宽资源,从而引起星载数据网络冲突问题。为保证链路带宽利用率和数据传输可靠性,SpaceFibre采用服务质量(quality of service,QoS)机制对各VC进行管理。与其它网络相比[8-10],该机制简化了组建和测试星载数据网络难度[2],具有更好的灵活性和可靠性,是SpaceFibre网络的关键技术之一。虽然SpaceFibre协议标准中规定了3种服务质量机制,但少有文献详细介绍QoS机制FPGA设计与实现方法。

本文基于FPGA设计和实现了SpaceFibre星载数据网络虚拟通道缓冲区、虚拟通道流控制和介质访问控制器(medium access controller,MAC)等重要功能模块。实验结果表明,本设计实现了完整的SpaceFibre服务质量功能,为SpaceFibre编解码器(coder/decoder,Codec)IP核的自主、完整开发和航天工程化应用打下了坚实基础。

1 SpaceFibre 服务质量分析

SpaceFibre创新性的集成QoS机制包含优先级优先权、预留带宽和调度(Schedule)这3种类型[2]。不同服务质量机制可自由组合,为SpaceFibre星载数据网络不同应用场景下的高质量数据传输提供保证。一条SpaceFibre物理链路上可以有多个虚拟通道,每个虚拟通道均可单独配置QoS参数,极大地增加了QoS机制的灵活性。

SpaceFibre优先级优先权(priority precedence,PriPre)计算方式如式(1)所示[11],其中B表示带宽信用限制,Q为SpaceFibre支持的优先级数目,R表示当前VC优先级别。优先级编号由0到Q-1,其中编号0的优先级最高。链路中每个VC都必须指定优先级,不同VC的优先级既可相同也可不同。当无需优先级优先权QoS机制时,可将所有VC置为同一优先级

PriPre=2B(Q-1-R)+B

(1)

带宽预留是一种依据虚拟通道预留带宽和带宽使用率计算该虚拟通道带宽信用的QoS机制。虚拟通道每发送一个数据段,MAC就需更新带宽信用。SpaceFibre带宽信用(bandwidth credit,BWCredit)计算方式如式(2)所示[11]。其中c为虚拟通道编号,n为该虚拟通道发送的数据字数目。可用带宽(available bandwidth,AvailBW)指自上次带宽信用更新起SpaceFibre链路上所有虚拟通道发送的数据字或控制字数总和。已用带宽(used bandwidth,UsedBW)指自上次带宽信用更新后,编号为c的虚拟通道发送的数据字数目。标准化期望带宽(normalised expected bandwidth,NorExpBW)是指虚拟通道c所分配的带宽占链路总带宽的比例。当虚拟通道的标准化期望带宽为0时,该虚拟通道不允许发送任何数据

(2)

SpaceFibre优先权是优先级优先权和带宽信用之和,如式(3)所示[11]。通常情况下,高优先级虚拟通道拥有高于低优先级虚拟通道的优先权。只有高优先级虚拟通道的带宽信用达最小信用带宽限制,低优先级虚拟通道才可能拥有较大的优先权。当不同VC优先级相同时,带宽信用高的虚拟通道具有更高优先权。带宽信用阈值为负带宽信用限制的90%,当虚拟通道带宽信用达此值时,该虚拟通道优先级优先权暂时置为0

Precedence=PriPre+BWCredit

(3)

调度QoS为SpaceFibre链路的确定性延时提供了保障。在SpaceFibre中,时间被分成64个时隙。网络层向数据链路层提供时隙编号以指示本时隙的结束和下一时隙的开始。各VC均拥有本虚拟通道对应的时隙调度表,调度表中记录的是本虚拟通道在各时隙是否允许参与调度。当同一时隙中允许多个VC被调度时,SpaceFibre中的介质访问控制器需在允许调度的虚拟通道中进行仲裁以确定被调度的虚拟通道。当不使用调度QoS机制时,可将调度表配置为在所有时隙允许任何虚拟通道均可参与调度;当仅使用调度QoS机制时,可将调度表配置为在每一时隙最多仅允许一条虚拟通道参与调度。

一种典型的SpaceFibre服务质量机制混合使用实例见表1[2]。表1中包含了8个时隙中8条虚拟通道的调度信息,其中灰色填充块表示指定时隙允许该VC参与调度,白色填充块则表示在指定时隙该VC不允许发送任何数据。表1中VC1和VC2具有最高的优先级级别,其它虚拟通道具有较低的、相同的优先级级别。

表1 SpaceFibre服务质量机制混用实例

在时隙1,除VC2外其它虚拟通道均允许参与调度且VC1具有最高优先级级别。根据SpaceFibre QoS机制特点可知,具有最高优先级级别的VC1拥有最高优先权。所以,在时隙1开始时优先选择VC1进行数据发送操作。当VC1无待发送数据时,在优先级相同的VC3~VC8中选择具有待发送数据且带宽信用最高的虚拟通道发送数据。每发生一次虚拟通道数据发送操作,各VC均需根据式(2)、式(3)进行带宽信用和优先权更新。被调度的VC带宽信用降低,在该VC优先级不变的情况下,该VC优先权也会相应降低,有效地防止了单一虚拟通道持续抢占链路带宽资源。当时隙2到来,如果时隙1仍有未完整发送的数据段,则剩余部分继续发送,直至数据段被完整发送。在时隙2中VC1不被允许参与调度,所以在时隙2期间VC1不可发送任何数据。

SpaceFibre服务质量机制的混合使用保证了关键卫星数据的优先传输,为SpaceFibre网络中卫星数据流的确定性传输提供保障,充分利用了链路带宽资源。

2 服务质量机制FPGA设计

SpaceFibre 服务质量FPGA设计的整体架构如图1所示,系统架构主要包含四路VC输出缓冲区、VC流控制和单路介质访问控制器。每个输出VC缓冲区模块又包含存储控制、FIFO和链路复位状态机子模块。发送字计数子模块、FCT信用计算子模块和发送请求生成子模块共同组成了VC流控制模块。介质访问控制器主要分为优先级优先权计算、带宽信用计算、调度子模块和四路优先权计算子模块。调度子模块主要由仲裁、调度表和时隙更新状态机单元组成。并行排序和发送使能两个子单元共同构成仲裁单元。

SpaceFibre星载网络中的服务质量作用于帧级别,有效载荷数据包在SpaceFibre编解码器被分割为帧数据。VC输出缓冲区模块中的存储控制子模块将包字符(Nchar)按指定字地址存储于FIFO中。由于包结束字符EOP/EEP的存在,导致数据帧长度不固定。存储控制子模块还需根据FIFO中存取的数据字进行数据帧数统计。当链路复位信号使能且有效载荷字符不为包结束符EOP/EEP或填充字符Fill时,链路复位状态机子模块将所有来自有效载荷的字符全部删除至下一个包结束符EOP/EEP。链路复位状态机子模块为数据包的完整性提供了保障,提高了SpaceFibre星载网络数据传输的可靠性。当FIFO子模块接收到介质访问控制器的VC输出缓冲区读使能信号时,VC输出缓冲区模块输出本VC存储的数据段。

VC流控制模块根据链路远端流控制指令(flow control token,FCT)和发送数据字计数值,更新FCT信用值。FCT信用计数器为正时,表示链路远端的VC输入虚拟通道缓冲区有足够空间接收本端数据,此时近端数据发送至远端VC输入缓冲区不会产生溢出。若FCT信用值大于0且FIFO中包含完整的数据段,则发送请求生成子模块产生VC发送请求信号。FIFO中包含完整的数据段是指输出虚拟通道缓冲区中包含EEP/EOP控制符字或包含64个数据字。当VC流控制模块接收到介质访问控制器的VC输出缓冲区读使能信号时,发送字计数子模块对本VC输出数据段中的数据字进行计数。

介质访问控制器模块中的优先级优先权计算子模块和带宽信用子模块的计算结果分别输入至对应优先权计算子模块。四路优先权计算子模块计算值传递到调度子模块,其仲裁单元的并行排序子单元将各VC优先权进行排序。发送使能子单元接收到排序结果后,结合当前时隙调度表和各虚拟通道发送请求信号,在所有虚拟通道中选择当前时隙允许调度、向MAC发送请求且优先权最高的虚拟通道进行调度并生成VC输出缓冲区读使能信号。当下一时隙到来且本时隙仍有未发送完毕的数据段时,时隙更新状态机单元待本时隙数据段发送完毕后再进行时隙更新。为节省IO资源,各VC的时隙分配信息和标准化期望带宽等参数采用串行输入方式,介质访问控制器模块中的输入控制子模块用于将相应参数分配给各虚拟通道。

2.1 存储控制

SpaceFibre星载数据网络中的字符分为数据字符和控制字符两种。数据字符包含数据信息,控制字符EOP/EEP指示数据包结束。数据包字符进行存储时,可使用字节地址或字地址将数据存储于虚拟通道缓冲区中。

为便于数据读取和数据帧计数的硬件实现,存储控制子模块中的字存储单元采用图2所示的数据字存储方式。8 bit 位宽的N0、N1、N2和N3依次表示虚拟通道按时间先后顺序接收到的字符。N0、N1、N2和N3对应的字符最高指示位K0/D0、K1/D1、K2/D2和K3/D3按图2所示方式放置。指示位说明字符的种类,0表示当前字符为数据字符,1指示该字符为控制字符。I为1 bit指示位,用于说明本数据字是否包含EOP/EEP控制字符。若I为1则表示当前数据字包含EOP/EEP控制字符,若为0则该数据字所有字节均为数据字符。同一数据字中的字符只能来源于同一数据包,所以当一个数据字包含EOP/EEP字符时,可能会存在数据字不对齐的情况。这时,需用Fill字符进行填充以保证N0、N1、N2和N3这4个字节均来自同一数据包。数据字存储方式既遵循了先进先出的原则,又提高了数据读取和传输的速度,为SpaceFibre链路的高速传输提供了保障。

图2 虚拟通道数据字存储

存储控制子模块中的帧计数单元主要用于统计FIFO中存储的数据段数。由于控制字符的存在,数据段分为两类。数据段一为仅包含数据字符且字数为64的数据集,数据段二为包含控制字符EOP/EEP且字数不大于64的数据字集。进行写操作时,若写使能有效且写入数据字的最高位I为0,则数据段一计数加1;若虚拟通道接收到控制字符EEP/EOP,则数据段二计数加1。读取数据时,当读数据字最高位为1,数据段二计数减1;当VC发送字计数器为64且第64个被读取的数据字最高位为0时,数据段一计数减1。帧计数单元将数据段一计数和数据段二计数相加得帧计数结果并传递到VC流控制模块。

2.2 带宽信用计算

为便于硬件实现,设计通过增加1 bit符号位将有符号带宽信用转化为无符号数。符号位置于带宽信用最高位,虚拟通道带宽信用为正时,符号位为0;符号位是1则表示带宽信用为负值。相应地,带宽信用计算分为带宽信用数值计算和带宽信用符号判断。如图3所示,带宽信用计算子模块分为增量计算、带宽信用符号判断、带宽信用生成和带宽信用使用状态判断4个单元。带宽信用使用状态判断子单元由使用不足判断子单元和使用过度判断子单元组成。带宽信用符号判断单元根据带宽信用数值、带宽信用原符号和带宽信用变化量进行带宽信用符号位判断。增量计算单元根据输入参数进行VC带宽信用数值的更新。带宽信用数值和带宽信用符号在带宽信用生成子单元中产生带宽信用并输出至优先权计算子模块,用于计算指定虚拟通道的优先权。

图3 带宽信用计算子模块

(4)

针对这一问题,采用增量的思想对带宽信用计算模块进行设计。当仅发送数据字时,带宽信用可用式(5)所示方式计算

(5)

假设被调度的虚拟通道编号为c且该虚拟通道所发送的数据段包含数据字数为u,则被调度的虚拟通道每发送一个数据段,带宽信用变化量 ΔBWCredit[c] 如式(6)所示。虚拟通道c每发送一个数据段,带宽信用就会减少带宽信用变化量的绝对值 |ΔBWCredit[c]|。当虚拟通道c每次发送的数据段包含相同数目的数据字时,带宽信用减少量相同

(6)

假设不被调度的虚拟通道编号为c′。则编号为c的虚拟通道发送完数据后,虚拟通道c′带宽信用变化量如式(7)所示

ΔBWCredit[c′]=u

(7)

在初始状态下,每个虚拟通道的带宽信用初始值均为0,所以初始态每个虚拟通道的优先权等于优先级优先权。当有虚拟通道产生VC发送请求信号且时隙0允许该VC参与调度时,仲裁单元选择优先级优先权最大的虚拟通道并产生相应VC读使能信号。被调度的虚拟通道根据式(6)更新带宽信用值,未被调度的虚拟通道根据式(7)在0的基础上更新带宽信用。在链路运行状态下,调度模块仲裁出被调度的虚拟通道且该VC发送完整数据段后,增量计算单元根据式(6)、式(7)在虚拟通道原带宽信用基础上加带宽信用变化量。增量思想的运用易于虚拟通道带宽信用的更新操作和饱和操作,有利于提高VC带宽信用计算效率。

增量计算单元包含四路虚拟通道增量计算子单元,分别对应四路虚拟通道。其中一路虚拟通道增量计算子单元如图4所示。由式(6)可得,当本虚拟通道输出缓冲区为读使能状态,多路选择器MUX6输出带宽信用变化量的绝对值|ΔBWCredit[c]|,同时多路选择器MUX4输出MUX2的计算值。带宽信用为正时,多路选择器MUX2输出带宽信用数值和带宽信用变化量绝对值之差;带宽信用最高位为1时,多路选择器MUX2输出带宽信用数值和带宽信用变化量绝对值之和。根据式(7)可知,当虚拟通道输出缓冲区读使能信号无效时,多路选择器MUX6输出带宽信用变化量ΔBWCredit[c′],同时多路选择器MUX4输出MUX3的计算值。若当前带宽信用首位为0,多路选择器MUX3输出带宽信用数值和带宽信用变化量和;当带宽信用为负,多路选择器MUX3选择带宽信用数值和带宽信用变化量差。若带宽信用数值与带宽信用限制相等,则多路选择器MUX5输出带宽信用限制。

图4 单路VC增量计算子单元

为保持带宽均衡,每个虚拟通道的带宽使用状态都需使用状态判断单元进行记录。对过量使用带宽资源的虚拟通道需进行暂时降低优先级处理,对带宽使用不足的虚拟通道需减少其带宽资源分配。

当虚拟通道带宽信用低于带宽阈值时,带宽信用计算单元产生带宽信用过量使用标志并输出至指定优先权计算子模块,以指示该VC所用带宽超出预期。指定优先权计算子模块将该VC优先权暂时设置为0直至该虚拟通道带宽信用上升至带宽信用阈值之上。带宽过量使用保护可防止具有较高优先权的虚拟通道一直占用链路带宽而影响其它虚拟通道发送数据。

当虚拟通道带宽信用饱和在正的带宽信用限制时,即带宽信用最高位为0且数值等于带宽信用限制,需进行计时操作。带宽信用数值降至带宽信用限制之下,计时器才可归零,否则一直进行计时操作。若计时时间超过1 ms,则使用状态判断单元产生带宽信用使用不足标志以指示本虚拟通道不能充分利用所分配的带宽资源。再次分配带宽信用时,可适当减少该虚拟通道期望带宽。

2.3 并行排序

当具有最高优先权的虚拟通道在当前时隙不允许调度或无VC发送请求时,服务质量机制需选择具有次高优先权的虚拟通道进行调度,所以SpaceFibre服务质量机制需将优先权进行排序。为保证系统运行速度,设计采用并行比较算法进行各虚拟通道优先权的排序操作。

传统排序方式以待排序列两两之间顺序比较为基础,而并行比较排序是一种将待排序列中任意两数并行进行比较的方案。设计中的并行比较排序算法可在一个时钟周期内完成虚拟通道优先权排序。由于串行比较转换为并行比较,导致并行排序方法需消耗更多的逻辑资源,体现了FPGA设计中以面积换速度的思想。

并行比较排序的基本思路如下。当时钟沿到来时,每个虚拟通道的优先权都与非本VC的优先权进行比较并把比较结果记录在得分中。若本虚拟通道的优先权较大,则本VC的优先权得分为1;若两VC优先权相等,则虚拟通道号较小的优先权分数为1;若本虚拟通道优先权较小,则本VC优先权得分为0。最后对各虚拟通道优先权得分累加,累加结果即为各优先权的大小顺序。

图5为并行排序子单元结构图,该结构由4个多路选择器和四路优先权次序计算部分组成。设4个虚拟通道的优先权分别为P0、P1、P2和P3。多路选择器选择信号为各虚拟通道对应的VC发送请求信号,当虚拟通道缓冲区无VC发送请求时,多路选择器选择输出0;否则输出非0优先权信息。以虚拟通道0优先权次序计算单元为例进一步说明并行比较排序流程。IN0同时与IN1、IN2和IN3比较,比较结果以得分形式分别记录在A0、A1和A2中,将得分A0、A1和A2累加可得IN0的大小位置L0。若L0为3,则IN0在IN0、IN1、IN2和IN3中最大;若L0为0,则表示IN0最小。

图5 并行排序子单元

3 实验验证

3.1 验证环境

基于Xilinx ISE开发环境,本文使用Verilog编写设计各层级并在Modelsim中进行了联合仿真测试。实验中搭建了具有四路虚拟通道的SpaceFibre端口,4个虚拟通道分别编号为VC0、VC1、VC2和VC3。VC0用于传输卫星控制指令,VC1用于传递视频流量,VC2传输音频数据,VC3为传感器信息,各虚拟通道流量特征见表2。

表2 虚拟通道流量特征

为便于测试,带宽信用限制设置为300字。相应地,带宽信用阈值为-270字。测试选择时隙0、时隙1和时隙2,三时隙中各虚拟通道对应的调度表如表3所示。表3中0表示当前时隙不允许调度该VC,1表示当前时隙允许调度该VC。

表3 虚拟通道调度

各虚拟通道在不同时隙接收的有效载荷数据包如图6所示。在时隙0期间,向VC0中写入256个数据字符,向VC1中写入255个数据字符和EOP控制字符,向VC2中写入19个数据字符和1个EOP控制字符,向VC3中写入255个数据字符和EOP控制字符。在时隙1期间,再向VC0中写入256个数据字符,向VC1中再次写入255个数据字符和EOP控制字符,向VC2中写入255个数据字符和EOP控制字符,向VC3中写入19个数据字符和1个EOP控制字符。

图6 测试实例

3.2 验证过程

验证环境搭建完成后,需进行功能测试,测试流程如图7所示。参数可配置用于保证本设计可适应于不同的卫星有效载荷通信系统,有效保障系统灵活性。测试激励输入后,首先观察各虚拟通道存储控制结果是否正确,尤其注意边缘测试数据存储状态。边缘测试数据的输入,提高了本架构对各种有效载荷数据包的应对能力,进而提高了本设计的鲁棒性。在此基础上,检查流控制模块的数据发送请求信号波形是否符合预期并检查FCT信用计数更新是否正确。需特别注意的是,多VC竞争数据发送权时介质访问控制器的仲裁过程与仲裁结果是否符合预期,还需注意仲裁时间以保证本设计的高速运行。在介质访问控制器每次发送数据段前后,需核对优先级优先权计算、优先权计算和带宽信用计算结果。当带宽信用过低或过高时,注意观察带宽信用使用状态信号波形变化。测试激励中包含VC发送数据段过程中时隙号发生变化的情况。此时,要注意查看MAC是否待本VC数据段发送完毕后才进行时隙更新操作。待完整数据段发送完毕后再进行时隙更新保障了数据完整性,从而提高了本设计的可靠性。

图7 测试流程

3.3 结果分析

测试结果如图8所示。图8(a)中,在开始阶段只有VC2写入以EOP字符为尾字的5个数据字,即只有虚拟通道2包含完整数据段。同时,虚拟通道2的FCT信用值大于0,所以4个虚拟通道中仅VC2向介质访问控制器传递VC发送请求信号。查表3可知,当前时隙0允许虚拟通道2 参与调度。所以虚拟通道2被调度,介质访问控制器将VC输出缓冲区读使能信号En_TxDSeg_allVC置为十六进制4并向各虚拟通道传递相应比特位。VC输出缓冲区读使能信号生成之后的5个时钟周期内,MAC依次读出VC2输出缓冲区中的5个数据字TxDSeg。从图8(a)中可见,最后读取的数据字为十六进制1FFBFBFBFD,即经字存储之后的EOP数据字。VC0、VC1和VC3的带宽信用分别增加5,VC2的带宽信用为-15,与式(6)、式(7)计算结果一致。

图8(b)中,VC0、VC1和VC3均完成了64字的存储过程且三者FCT信用计数器值均大于0,所以3个虚拟通道均向介质访问控制器传递发送请求信号,可见虚拟通道请求信号ReqTxDSg_allVC为十六进制B。查表3可知,在时隙0中虚拟通道1和虚拟通道3均不允许参与调度。因此虚拟通道0被调度,VC输出缓冲区读使能信号En_TxDSeg_allVC置为十六进制1。在第3255 ns的仿真时间,VC0带宽信用根据式(6)、式(7)计算所得为-571,但图8(a)中为-300。这是因为带宽信用数值571大于带宽信用阈值数值270,VC0的带宽信用饱和在带宽信用限制300。带宽信用使用状态信号UseBW_Reg_allVC置为十六进制2,指示VC0占用的带宽资源超出期望带宽。同时VC0的优先权被置为0以防止VC0长期抢占带宽。虚拟通道0发送数据过程中时隙1到来,但时隙更新在虚拟通道0发送完当前数据段后才进行,保证了时隙更新时所数据段发送的完整性。

图8 QoS仿真测试结果

VC0发送完第五个数据字后,时隙0更新为时隙1。此时,VC1和VC3竞争数据的发送权。由于VC1的优先权更高,所以MAC仲裁VC1发送数据,因此VC输出缓冲区读使能信号En_TxDSeg_allVC置为十六进制2。

在第4665 ns,VC2和VC3竞争调度机会。由于两虚拟通道优先级相同且VC2的带宽信用较大,虚拟通道2的优先权较高。介质访问控制器调度VC2进行数据发送。在5335 ns仿真时间,除VC2外的虚拟通道均产生VC发送请求信号。但虚拟通道0 在时隙1内不允许参与调度,所以即使其优先权最高也不能被调度进行数据发送,最终虚拟通道1获得数据发送权。

4 结束语

本文设计了一种SpaceFibre星载网络服务质量FPGA实现方案,该方案主要包含虚拟通道输出缓冲区、虚拟通道输出缓冲区流控制和介质访问控制器3个重要功能模块。方案中通过采用存储控制、增量计算和并行比较排序等方法为系统的高速运行提供保障。经仿真验证,该方案满足SpaceFibre标准的各项要求,为SpaceFibre Codec IP核的自主、完整开发提供了可能。现阶段虚拟通道发送请求是针对单通道Codec情况,后续该部分还可扩展到多通道。

猜你喜欢
优先权时隙缓冲区
基于时分多址的网络时隙资源分配研究
民法典中优先权制度构建研究
基于市场机制的多机场时隙交换放行策略
复用段单节点失效造成业务时隙错连处理
进入欧洲专利区域阶段的优先权文件要求
一种高速通信系统动态时隙分配设计
一类装配支线缓冲区配置的两阶段求解方法研究
关键链技术缓冲区的确定方法研究
初涉缓冲区
具有止步和中途退出的M/M/c/2N-c优先权排队系统