-
数字喷泉码技术以其高性能的纠错能力,得到广泛的青睐。其中的低复杂度码型——系统Raptor码[1-2],更是广泛应用于无线传输领域[3-5]。系统Raptor码在编码时,对源数据包增加少量冗余包;在译码时,通过接收到的源数据包和冗余包纠正传输过程中的丢包,实现数据恢复。这种以包为单位的纠错方法,具有较高的吞吐率和较低的复杂度,在高速数据传输中优势明显。
随着超高清、3D视频以及海量数据的高速传输,未来无线数据传输吞吐率将达到1 Gbps以上。然而,当前3GPP标准(3rd generation partnership project)中采用的系统Raptor码技术,速率还在100 Mbps量级,已经无法满足高速传输的需求。需要更高速率的系统Raptor码编码译码技术。
目前,许多学者都在进行系统Raptor码的改进和优化。文献[6]发现系统Raptor码运算耗时最大的部分为译码中的高斯消元运算,其占整个译码总时间的91%以上;并提出优化失活译码高斯消元算法,将传统高斯消元算法中矩阵求逆的计算复杂度由O(L3)降低至O(L),其中L为与源数据包数量相关的参数。矩阵递归求逆译码算法[7]和矩阵降维快速译码算法[8]基于系统Raptor码的部分码——系统RaptorQ码,实现了软件优化,但速率较低。文献[9]采用CPU(central processing unit)+GPU(graphics processing unit)的模式进行系统Raptor码并行加速,使无线数据传输吞吐率达到21 Mbps。文献[10-11]则采用FPGA(filed programmable gate array)进行高斯消元运算的硬件加速,进一步提升吞吐率。
上述方案针对高斯消元运算的改进和优化,使译码性能得到了提升。但是,其译码过程中,高斯消元运算需要译码出所有源数据包,译码运算复杂度大、串行依赖度高,无法大幅降低译码延时,提高译码吞吐率。实际上,数据传输中仅存在少量丢包;如果能够只对丢失的少量数据包进行译码,则可大大降低译码复杂度。本文经过对译码过程的分解,提出了一种低复杂度的降维译码算法。该算法仅对丢失的数据包进行译码,并采用全并行的硬件加速结构,实现低延时高吞吐率的系统Raptor码译码器。
-
系统Raptor码的编译码原理如图 1所示。发送端,编码器对源数据分别进行预编码和LT(Luby transform)编码,生成编码数据。编码数据包含所有源数据和少量冗余数据。编码数据经物理信道发送给接收端。物理信道呈删除信道的特征,会有少量编码数据的丢失。接收端,译码器对接收到的数据包进行预译码和LT译码,纠正信道中丢失的数据包,恢复出所有的源数据包[1]。
-
系统Raptor码编码时,首先,源数据包T=[t0, t1, …, tK-1]和零矩阵Z1×(S+H)构成预编码输入矢量D=[Z1×(S+H), T]T,其中K为源数据包的数量,S和H分别为预编码参数,由K计算得出。输入矢量D与预编码矩阵的逆矩阵A-1进行二进制乘法,生成L个预编码码字C=[c0, c1, …, cL-1]T,其中L=K+S+H:
$$ \mathit{\boldsymbol{C}} = {\mathit{\boldsymbol{A}}^{ - 1}}\mathit{\boldsymbol{D}} $$ (1) 然后,进行LT编码,生成编码码字E=[e0, e1, …, eN-1]T:
$$ \mathit{\boldsymbol{E}} = {\mathit{\boldsymbol{G}}_{{\text{LT}}}}\mathit{\boldsymbol{C}} $$ (2) 式中,GLT是一个N×L的矩阵,N>K;码字E包含K个源数据包和N-K个冗余包。
-
接收端,首先进行预译码。译码端接收到Nr个码字E′=[e′0, e′1, …, e′Nr-1] (K < Nr≤N)。E′和零矩阵Z1×(S+H)构成预译码输入矢量D′=[Z1×(S+H), E′]T。根据接收码字的ESI(encoding symbol ID,编码符号索引号),重建与E′对应的预译码矩阵A′M×L,其中M= Nr+S+H。A′M×L的行数M跟列数L不相等,无法进行求逆运算。在计算预译码码字C'=[c′0, c′1, …, c′L-1]T时,需通过高斯消元法进行运算:
$$ \mathit{\boldsymbol{D'}} = {\mathit{\boldsymbol{A'}}_{M \times L}}\mathit{\boldsymbol{C'}} $$ (3) 然后,进行LT译码,得到所有源数据包T:
$$ \mathit{\boldsymbol{T}} = {\mathit{\boldsymbol{G'}}_{{\text{LT}}}}\mathit{\boldsymbol{C'}} $$ (4) 式中,${\mathit{\boldsymbol{G'}}_{{\text{LT}}}}$是一个K×L的矩阵,根据已接收冗余包的ESI构建。
传统系统Raptor码的译码结构如图 2所示。接收端首先接收编码码字,并根据ESI构建${\mathit{\boldsymbol{A'}}_{M \times L}}$和${\mathit{\boldsymbol{G'}}_{{\text{LT}}}}$。然后执行高斯消元的预译码和LT译码,得到所有源数据包。预译码和LT译码串行执行。
在译码过程中,高斯消元需经过逐行列的递进处理,串行依赖性高,运算复杂度为O(L3)[12]。即使采用硬件加速,也只能对局部运算并行实现,降低译码延时的效果有限。而且随着K的增大,高斯消元运算的复杂度大幅增长,严重影响译码延时和吞吐率。
-
传统系统Raptor码译码延时大,无法满足未来无线传输高吞吐率的需求。在实际中,接收数据仅存在少量丢包。只要译码出丢包数据,即可完成纠错。本节对传统系统Raptor码译码算法进行分解,结合系统Raptor码编码的已知矩阵,提出低复杂度的降维译码方案,降低译码延时。
根据式(1)与式(2),系统Raptor码的编码可表示为:
$$ \mathit{\boldsymbol{E}} = {\mathit{\boldsymbol{G}}_{{\text{LT}}}}\mathit{\boldsymbol{C}} = {\mathit{\boldsymbol{G}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}\mathit{\boldsymbol{D}} $$ (5) 经过删除信道丢包后,接收端共收到Nr个编码包,其中包含Kr(Kr≤K)个源数据包Tr=[t′0, t′1, …, t′Kr-1]和Nr-Kr个冗余包R=[r0, r1, …, rNr-Kr-1]。丢失的K-Kr个源数据包记为Tx=[tx0, tx1, …, txK-Kr-1]。
在式(5)中,当有丢包时,实际接收的数据包构成E′。根据实际接收冗余包的ESI重新构建LT矩阵为GLT″。输入矢量Drx由零矩阵Z(S+H)×1,TrT和TxT构成,其中Tr和Tx中的各元素根据ESI置于Drx的相应位置。式(5)变换为:
$$ \mathit{\boldsymbol{E'}} = {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}\mathit{\boldsymbol{C}} = {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_r}_x $$ (6) 式中,${\mathit{\boldsymbol{G''}}_{{\text{LT}}}}$是一个Nr×L的矩阵;Drx是一个L×1的矩阵。
式(6)对输入矢量Drx中的源数据包进行分解,拆分成两个输入矢量Dr0和D0x。Dr0和D0x都是L×1的矩阵。Dr0包含所有已接收的源数据包,其中丢包的地址用0填充。D0x为待求的丢包矩阵,D0x中对应已接收数据包的地址都为0。式(6)分解为:
$$ \mathit{\boldsymbol{E'}} = {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_{{\text{r0}}}} + {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_0}_{\text{x}} $$ (7) 进一步变换,得出系统Raptor码的降维译码公式为:
$$ {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_0}_x = \mathit{\boldsymbol{E'}} - {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_{r{\text{0}}}} $$ (8) 当网络丢包率较低时,丢包数量远小于源数据包数量K。D0x中待求的丢包元素很少,求解D0x可实现系统Raptor码的降维运算。另外,在式(8)的运算中,使用预编码逆矩阵A-1替代预译码矩阵A′M×L,避免了对A′M×L的高斯消元运算,大幅降低运算复杂度和译码延时。
对式(8)的各项进一步分解:
$$ \mathit{\boldsymbol{A''}}{\mathit{\boldsymbol{D}}_0}_x = \mathit{\boldsymbol{E'}} - \mathit{\boldsymbol{Y}} $$ (9) 其中:
$$ \mathit{\boldsymbol{A''}} = {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}{\mathit{\boldsymbol{A}}^{ - 1}} $$ (10) $$ \mathit{\boldsymbol{Y}} = {\mathit{\boldsymbol{G''}}_{{\text{LT}}}}\mathit{\boldsymbol{X}} $$ (11) $$ \mathit{\boldsymbol{X}} = {\mathit{\boldsymbol{A}}^{ - 1}}{\mathit{\boldsymbol{D}}_{{\text{r0}}}} $$ (12) 由式(9)可以看出,根据实际接收的数据E′、参数A″和Y,即可求解出丢失的数据D0x。在译码过程中,对于给定的K值,A-1为已知矩阵;对于A″和Y,可根据已接收的源数据包Dr0和冗余包进行并行运算得到。
经过对传统系统Raptor码算法的分解,仅对丢失的数据包进行译码,实现降维运算。运算中使用已知的预编码矩阵A-1替换原始的预译码矩阵A′M×L,避免了复杂的高斯消元运算。实现了低复杂度的降维译码,降低了译码延时。
-
结合本文提出的全并行降维译码方案,在Xilinx Kintex-7系列的410T FPGA芯片实现系统Raptor码译码器。源数据包数量K取216,网络丢包率为10-2量级,单个数据包的位宽W为4 Byte。采用Xilinx软件平台进行硬件综合和功耗估计,结果如表 1所示。其中逻辑单元需67 539个,占芯片总资源的26.5%,最高运行时钟为128.2 MHz,功耗为1 155 mW。
表 1 系统Raptor码译码器的硬件开销与性能
类型 结果 占比 逻辑单元/个 67 539 26.5% 寄存器/个 11 486 2.26% 块存储器/个 38.5 4.84% 功耗/mW 1 155 N/A 最高时钟/MHz 128.2 N/A -
在本文提出的降维译码方案中,当K为216时,根据网络丢包率得出编码包数N为230。经仿真,对源数据包和冗余包的并行处理,最多仅需N个时钟周期。对丢包的计算,仅需6个时钟周期。即完成一次系统Raptor码译码共需N+6个时钟周期。
与之相比,如表 2所示。文献[11]的译码器采用图 2的串行译码结构。源数据包数量K为12,需延时79个时钟周期完成高斯消元运算和LT译码,而且随着K的增大,译码延时大幅增长。本文在K取12时,根据丢包率计算N为14,仅需20个时钟周期可完成译码。而且本文的译码延时随K的变化很小,有效降低了译码延时。
表 2 系统Raptor码译码延时比较
源数据包数K/个 文献[11]/个 本文/个 12 79 20 216 N/A 236 -
结合上边的仿真结果,当系统运行时钟fClk取128.2 MHz时,每秒可以完成的系统Raptor码译码次数S为:
$$ S = {f_{{\text{Clk}}}}{\text{/(}}N{\text{ + 6) = 543 220}} $$ (13) 则数据吞吐率为:
$$ 吞吐率 = 8 \times W \times K \times S = 3.75\;{\rm{Gbps}} $$ (14) 式中,W为每个源数据包的字节数。本文采用W为4字节的Raptor码,译码数据吞吐率可达3.75 Gbps。
本文的硬件方案与相关文献的硬件加速方案的性能比较结果如表 3所示。其中文献[9]采用3 GHz的i7 CPU与732 MHz的GPU联合平台,文献[10-11]采用FPGA硬件平台,主要对高斯消元法进行硬件加速实现。
表 3 系统Raptor码译码性能比较
从表 3可以看出,本文的降维译码方案,仅对丢包进行译码,并且采用已知的预编码矩阵,替代需进行高斯消元的预译码矩阵,避免了对所有源数据包译码的高斯消元运算,实现了低复杂度的降维译码。在全并行降维译码的硬件结构中,所有已接收的源数据包和冗余包并行运算,大幅降低了译码延时。在单位时间内完成更多次的译码运算,实现了高吞吐率的译码和传输。
A High Throughput Parallel Decoding Method for Systematic Raptor Codes
-
摘要: 在系统Raptor码译码中,针对高复杂度的高斯消元运算导致译码延时大、吞吐率低的问题,提出一种低延时高吞吐率的降维并行译码方案。该方案采用仅对少量丢包译码的低复杂度降维运算,替换对全部源数据包译码的高斯消元运算,降低译码延时;并针对降维译码采用全并行的硬件结构实现,提高译码吞吐率。依此方案,在Xilinx FPGA XC7K410T平台上实现系统Raptor译码器。测试结果表明,当网络丢包率在10-2以下时,译码数据吞吐率达到3.5 Gbps,是相同硬件下采用高斯消元译码实现的80倍以上。Abstract: The high complexity Gaussian elimination (GE) algorithm of the systematic raptor decoding results in its high latency and low throughputs. A high efficiency parallel dimensionality-reduction decoding scheme is presented in this paper. The proposed scheme uses low complexity dimensionality-reduction algorithm to decode lost packets to replace the GE algorithm which decodes all source packets. Meanwhile, a full parallel structure for the decoding is proposed to implement the dimensionality-reduction-algorithm. At last, the decoder is implemented on Xilinx FPGA XC7K410T. The test results show that the scheme can achieve a 3.5 Gbps throughput within a 10-2 packet loss probability, which is 80 times better than that of the GE algorithm.
-
表 1 系统Raptor码译码器的硬件开销与性能
类型 结果 占比 逻辑单元/个 67 539 26.5% 寄存器/个 11 486 2.26% 块存储器/个 38.5 4.84% 功耗/mW 1 155 N/A 最高时钟/MHz 128.2 N/A 表 2 系统Raptor码译码延时比较
源数据包数K/个 文献[11]/个 本文/个 12 79 20 216 N/A 236 -
[1] IETF RFC 5053(2007): Raptor forward error correction scheme for object delivery[S]. California: IETF Proposed Standard, 2007. [2] IETF RFC 6330(2011): RaptorQ forward error correction scheme for object delivery[S]. California: IETF Proposed Standard, 2011. [3] RYU E, JAYANT N. Home gateway for three-screen TV using H.264 SVC and raptor FEC[J]. IEEE Transactions on Consumer Electronics, 2011, 57(4):1652-1660. doi: 10.1109/TCE.2011.6131138 [4] 武岩波, 朱敏.一种用于水声通信的喷泉码最大似然译码方法[J].电子与信息学报, 2016, 38(2):288-293. http://d.old.wanfangdata.com.cn/Periodical/dzkxxk201602006 WU Yan-bo, ZHU Min. Maximum likelihood decoding of fountain codes in underwater acoustic communication[J]. Journal of Electronics & Information Technology, 2016, 38(2):288-293. http://d.old.wanfangdata.com.cn/Periodical/dzkxxk201602006 [5] 朱文杰, 易本顺.一种改进的喷泉多选择序列峰均比降低算法[J].湖南大学学报(自然科学版), 2016, 43(2):124-129. doi: 10.3969/j.issn.1674-2974.2016.02.019 ZHU Wen-jie, YI Ben-shun. An improved fountain multi-choice sequence algorithm for peak-to-average power ratio reduction[J]. Journal of Hunan University(Natural Sciences), 2016, 43(2):124-129. doi: 10.3969/j.issn.1674-2974.2016.02.019 [6] MLADENOV T, NOOSHABADI S, KIM K. Efficient GF(256) raptor code decoding for multimedia broadcast/multicast services and consumer terminals[J]. IEEE Transactions on Consumer Electronics, 2012, 58(2):356-363. doi: 10.1109/TCE.2012.6227434 [7] LU Yi-pin, LAI I-wei, LEE C, et al. Low-complexity decoding for raptorQ codes using a recursive matrix inversion formula[J]. IEEE Wireless Communications Letters, 2014, 3(2):217-220. doi: 10.1109/WCL.2014.020314.130872 [8] GUO Xiao, ZHANG Geng-xin, TIAN Chang, et al. Fast decoding for raptorQ codes using matrix dimensionality reduction[J]. Electronics Letters, 2014, 50(16):1139-1141. doi: 10.1049/el.2014.1381 [9] HU Lin-jia, NOOSHABADI S, MLADENOV T. Forward error correction with raptor GF(2) and GF(256) codes on GPU[J]. IEEE Transactions on Consumer Electronics, 2013, 59(1):273-280. doi: 10.1109/TCE.2013.6490270 [10] MLADENOV T, NOOSHABADI S, KIM K. Implementation and evaluation of raptor codes on embedded systems[J]. IEEE Transaction on computers, 2011, 60(12):1678-1691. doi: 10.1109/TC.2010.210 [11] LU Yi-pin, LAN Wei, CHENG Yi-feng, et al. An implementation of a fountain code-based MIMO-OFDM receiver for real-time wireless video streaming[C]//2015 IEEE 11th International Conference on Wireless and Mobile Computing, Networking and Communications (WiMob). Abu Dhabi: IEEE, 2015: 696-703. http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7348030 [12] 李越, 张立军, 李明齐, 等.一种RaptorQ码的低复杂度编码算法[J].电视技术, 2017, 41(3):57-60. doi: 10.3969/j.issn.2096-0751.2017.03.020 LI Yue, ZHANG Li-jun, LI Ming-qi, et al. Low complexity encoding method for raptorQ code[J]. Video Engineering, 2017, 41(3):57-60. doi: 10.3969/j.issn.2096-0751.2017.03.020