前沿探索
用于 Tbps 吞吐率通信的快速极化码
面向高吞吐、低功耗通信,我们实现了两种用于极化码的串行抵消(Successive Cancellation,SC)译码器——展开型和递归型译码器。
作者(均来自华为6G研究团队):童佳杰 1 ,王献斌 1,张其蕃 2,张华滋 2,李榕 1,王俊 1
- 无线技术实验室
- 渥太华无线先进系统能力中心
1 引言
1.1 研究动机和背景
在移动通信发展的过程中,提高吞吐率一直都是主要目标。虚拟现实(Virtual Reality,VR)和增强现实(Augmented Reality,AR)等应用有着很高的速率要求,为第六代移动通信系统(6G)提出了1 Tbps峰值吞吐率的要求,这一数值是5G标准10~20 Gbps吞吐率的50~100倍。
要满足如此之高的速率要求,需要我们对物理层进行全新的设计,进一步降低复杂度和降低能耗,提升频谱效率,这对资源受限(处理能力、存储或能源等受限)的设备尤为重要。众所周知,信道编码需要消耗大量计算资源,是实现超高吞吐率的一大瓶颈。因此,6G要实现1 Tbps峰值吞吐率,就必须要在信道编码这一物理层技术上取得突破。
Erdal Arikan提出的极化码是一种线性分组码。码长为N的极化码生成矩阵\(G_{N}\),\( G_{N} \triangleq F^{\otimes n} \)。其中,码长\( N=2^{n} \),\( F^{\bigotimes n} \)表示矩阵\( F=\begin{bmatrix} 10\\ 11\end{bmatrix} \)的第n个克罗内克积。串行抵消(Successive Cancellation,SC)是极化码的基本译码算法。
虽然SC译码算法因其串行特点可能并不适合高吞吐应用,但先进的SC译码器还是成功地简化了译码过程,实现了并行译码。正因如此,SC译码在面积效率上遥遥领先于采用置信传播(Belief Propagation,BP)译码的低密度奇偶检查码(Low-Density Parity-Check Code,LDPC)。如图 1a所示,这些译码器将SC译码表示为二叉树遍历,每一个子树代表一个较短的极化码。原始的SC译码算法需要遍历树上所有的边和节点,因此译码时延高。简化的SC译码器可以对某些子树(较短的极化码)实现快速译码,因此实现了对子树的“修剪”。这样一来,译码时延就很大程度上由修剪后的二叉树上的边和节点的数量决定。参考文献修剪的技术。为了实现1 Tbps的吞吐率目标,译码端和编码端都需要更强大的技术。
图1 (a)二叉树译码结构;(b)节点 v 接收和响应信息
1.2 研究贡献
本文提出了一种名为“快速极化码”的新型极化码构造方法,便于SC译码器并行译码。我们的技术采用了编码和译码双端整体优化的策略,这点有别于现有技术仅关注译码端优化的策略。和现有的方法类似,从二叉树遍历的角度可以更好地理解我们方法的核心思想,包括以下几方面:(a)尽可能修剪子树;(b)将不可修剪的子树用其他相同码率且可快速译码的短码替代(嫁接),然后修剪这些“嫁接”来的子树;(c)通过改变码率,消除剩余的不可修剪的子树。可以看出,(b)和(c)都涉及对码构造的修改。因此,不论子树大小,我们都可以在不牺牲并行性的前提下对子树(短码)进行快速译码。
我们的算法贡献如下:
- 针对码率为\( \left \{ \frac{2}{M},\frac{3}{M},\frac{M-2}{M},\frac{M-3}{M} \right \} \)的节点,我们提出了四种快速译码模块,其中,\( M=2^{s} \)是子树上叶节点的数量,s则是阶编号。这些叶节点分别称为双重复(Dual Repetition,REP-2)节点、重复的奇偶校验(Repeated Parity Check,RPC) 节点、奇偶校验的重复(Parity Checked Reptition,PCR) 节点、和双单向奇偶校验(Dual Single Parity Check,SPC-2) 节点。更重要的一点是,这些模块重用了现有的用于重复(Repetition)和单向奇偶校验(Single Parity Check)节点的译码电路。
- 对于那些码率适中但无法原生支持快速译码的节点,嫁接两个扩展BCH码节点以替换原始的外极化码。由于BCH码具有良好的最小距离、原生支持高效的硬输入译码算法等优点,BCH码在性能和时延之间取得了很好的平衡。同时,扩展方法也进行了相应定制,进一步提升性能。
- 可以在全局范围内重新分配码率,让达到一定大小的节点都支持上述快速译码算法,避免遍历时遇到某些“慢”节点。
对于码长N=1024、码率R=0.875的码,我们所提出的快速极化码可以对所有长度为16的节点并行译码。与原始极化码相比,我们提出的译码算法减少了55%的节点访问、43.5%的边访问,性能损耗低于0.3 dB。我们同时设计了两种译码硬件,用于评估面积效率和能耗效率。
硬件实现的贡献概述如下:
- 设计了一种可以灵活支持任意码率以及码长不超过1024的递归型译码器。该译码器的估算芯片版图面积仅为0.045 mm2。对于码长N=1024、码率R=0.875的码,该译码器可实现25.6 Gbps的编码比特吞吐率,面积效率为561 Gbps/mm2。
- 设计了一种只支持单一码率、单一码长的展开型译码器。该译码器的估算芯片版图面积仅为0.3 mm2,对于码长 N=1024、码率R=0.875的码,该译码器可实现1229 Gbps的编码比特吞吐率,面积效率为4096 Gbps/mm2。
2 从简化SC译码到快速极化码
沿用参考文献的表示方法,我们将树上的节点用v表示,其父节点用\( p_{v}\)表示,左子节点用\( v_{l}\)表示,右子节点用\( v_{r}\)表示。v与\( p_{v}\)、\( v_{l}\) 、\( v_{r}\)直接相连。节点v的阶数由和它最近的叶节点之间的边数决定,所有叶节点的阶数s=0。以节点v为根的子树的节点集用\( V_{v}\)表示,那么\( V_{root}\)就表示满二叉译码树。所有叶节点的集合用U表示,叶节点u的索引值用i(u)表示,U的索引值用i(U)表示。同时,子树\( V_{v}\)上的叶节点集用\( U_{v}\)表示,\( U_{v}\)的索引值用\( i\left ( U_{v} \right ) \)表示。
所有信息比特的位置集合用I表示,所有冻结比特的位置集合用\(I^{C}\)表示。子树\(V_{v}\)上的信息比特的位置集合用\(L_{v}\)表示,其他冻结比特位的集合则用\( L_{V}^{C}\)表示。
2.1 简化SC译码
如果\(I^{C}\)匹配码型,则可以触发对于该叶节点基于码型的简化译码,译码可以并行进行,无需逐比特进行。从二叉树遍历的角度来看,v的所有子节点都不在遍历范围中,译码时延因此降低。
现有的基于码型的简化译码包括4种不同类型。如果子树\(V_{v}\)上的所有叶节点都是信息比特,则节点v是Rate-1节点,如果子树\(V_{v}\)中的所有叶节点都是冻结比特,则节点是Rate-0节点。为了提高译码器的效率,参考文献定义了SPC和REP节点,我们可以根据各节点的码型采用相应的方法,实现并行处理。但是,我们还需要识别并利用其他特殊节点或码型以进一步降低延迟。
我们在本文中定义了四种新节点:
- 如果\(V_{v}\)只有两个冻结比特,且两个冻结比特的索引值在\( i\left ( U_{v} \right ) \)中最小,则将节点v定义为SPC-2节点。
- 如果\(V_{v}\)只有两个信息比特,且两个信息比特的索引值在\( i\left ( U_{v} \right ) \)中最大,则将节点v定义为REP-2节点。
- 如果\(V_{v}\)只有三个冻结比特,且三个冻结比特的索引值在\( i\left ( U_{v} \right ) \)中最小,则将节点v定义为RPC节点。
- 如果\(V_{v}\)只有三个信息比特,且三个信息比特的索引值在\( i\left ( U_{v} \right ) \)中最大,则将节点v定义为PCR节点。
上述类型节点相应的快速译码方法将在第3节中介绍。
遍历子树时,如果节点匹配上述码型,基于码型的简化译码处理会跳过这些节点。
目 前 , 有 8 种 码 型 类 型 覆 盖 子 树 的 8 种 码 率 :\( \left \{0, \frac{1}{M},\frac{2}{M},\frac{3}{M},\frac{M-3}{M},\frac{M-2}{M},\frac{M-1}{M},1 \right \} \) 。换句话说,如果节点的码率不在上述范围,则不支持快速译码,我们需要在两个参数上下功夫:
- 简化节点的比例:目前M+1种码率中有8种码率支持简化译码,比例为\( \frac{8}{M+1} \)。请注意,只有最低和最高的码率可以简化,这意味着\( \frac{3}{M} \) 和 \( \frac{M-3}{M} \)之间的码率不支持快速译码。而中短长度的码由于极化不足,许多节点属于此范围。我们希望通过引入更多支持快速译码的码型来覆盖更多的码率,进一步降低时延。
- 并行度:简化节点中有M个比特是并行译码的,可以用M表示并行度。M值越大,二叉树可以通过简化译码修剪的比例就越大。我们希望增大M的值,提高吞吐量率。
当M=8时,简化节点的比例为8/9,只有一个不支持的码率\( \left ( \frac{4}{8} \right ) \),但并行度只有8。当M=16时,简化节点的比例降低到 8/17,剩下了9个不支持的码率\( \left ( \frac{14}{16},... ,\frac{12}{16} \right ) \),但并行度翻了一番。
2.2 BCH码
为了覆盖中等码率,我们需要找到支持快速译码并具有良好BLER性能的码型。然而据我们所知,对于码率在\( \frac{M-3}{M} \) 和 \( \frac{3}{M} \)之间的极化码,还没有并行译码的方法。此前许多研究提供了一个好的思路——可用任意码替换由子树表示的外码。将码率落入上述区间的极化节点移除,替换为其他支持快速译码的码,这是一种比较可行的方案。
BCH码由于其良好的最小距离和快速硬输入译码算法等特点,可作为理想的替代码。如果纠错能力为t,则很容易设计出最小汉明距离大于2×t的BCH码,提供良好的BLER性能。同时,伯利坎普-梅西(Berlekamp-Massey,BM)算法可以在极少的时钟周期内完成t=1或t=2的BCH码译码。将BCH码作为支持快速译码节点嫁接至极化码时,将内极化码(父节点)的对数似然比(Log-Likelihood Ratio,LLR)发送至外BCH码(子节点)之前,需要进行硬判决。在这里,我们将BCH码称为“BCH节点”。
但是仅靠BCH码不足以解决问题。BCH码只支持少数码率和码长,意味着它不能覆盖区间内的所有码率。当并行度 M=16时,目标码长为\( 2^{4} \),则BCH最近的码长为15。同时, BCH码只支持区间内\( \frac{7}{15} \)和\( \frac{11}{15} \)两种码率,对应的信息比特数为k=7和k=11。
为了解决这些问题,必须将码长增加到16比特。k= 7和t=2的原始BCH码可以纠正两个错误比特,我们增加一个额外的比特作为所有BCH码的奇偶校验比特。我们所提出的两步硬译码的原理如下:硬判决产生三个误码,可以先用SPC比特纠正幅度最小的一个误码。对于余下两个误码,采用BM算法纠正。但是,相同的SPC扩展方法并不适用于k=11、t=1的 BCH码,因为如果节点中存在两个或两个以上的误码,SPC函数和BM算法都无能为力。如果只有一个误码,SPC译码失败将进一步导致BM译码出错。为了提高可靠性,我们可以重复一个BCH码比特(而不是用SPC码扩展)。
现在,已经嫁接了两种BCH节点,基于码型的译码可以支持的码率达到10个。简化节点的比例提高至10/17,不支持快速译码的比特长度缩小到\(\frac{4}{16}\)。图3显示了基于码型的译码方法在并行度M=16时支持的码率。
图2 支持并行度 M=16 快速译码的节点(码率)
图3 GA 与快速极化码构造法的 BLER 性能对比
2.3 重新分配码率实现快速极化码
即使嫁接了BCH节点,快速译码算法也不能支持长度为16的子树上的所有码率。作为解决方案的第二部分,我们提出快速极化码的构造,以规避“慢”节点,并且只使用现有的十种码型。这里所说的“快速”与快速SC译码速度相当,但是是通过调整码构造,而不是通过译码实现的。我们的实验证明,快速极化码以轻微的性能损失为代价,极大地降低了译码时延、提高了吞吐率。
以下步骤将说明如何仅使用非连续码率节点码型构造快速极化码:
1. 采用高斯近似(Gaussian Approximation,GA) 或极化权重(Polarization Weight,PW)等传统方法构造码长为N、码率为R的极化码。
2. 将所有N个合成子信道拆分为N/16段。每段构成一个长度为16比特的分组码,相当于一个具有16个叶节点的子树。
3. 识别所有与受支持码率或码型不匹配的“慢”分段。在段与段之间重新分配码率,使其与最接近的受支持码率或码型(具有K个信息比特)匹配。
4. 如果当前分段中的信息比特数超过或少于K个,我们根据可靠性移除或增加相应数量的信息比特。在其他分段重复此操作,直到所有分段均支持快速译码。
这样得到的码就称为“快速极化码”。快速极化码构造算法请见如下算法1。
表1 GA 构造和快速极化码构造法遍历的节点、边和执行的 \(f_{+/-}\)函数数量对比
以码长N=1024、码率R=0.875为例,统计需要访问的支持快速译码的节点的数量、需要执行的\(f_{+/-}\)函数、需要遍历的边的数量。基于这些数据,可以较为准确地估算SC译码的时延,进而与本节所提出的GA构造方法进行对比(见表1)。可以看到,遍历的节点和边的数量分别减少了55%和43.5%,而 \(f_{+/-}\)函数数量仅减少了8.9%。需要注意的是,节点和边的遍历相对于\(f_{+/-}\)函数受到的影响更大,因为两种函数无法以任何形式并行处理。
值得注意的是,我们所提出的快速极化码构造算法根据信道极化所得到的节点容量,将某些节点的码率进行了重新分配,这样必然会影响BLER性能。在码长N=1024、码率R={0.75, 0.8125, 0.875, 0.9375}的情况下,我们通过模拟得到了两种构造方法的BLER曲线,以评估BLER性能损失。采用QPSK调制时,GA极化码和快速极化码在BLER=\(10^{-2}\)处的最大损耗为0.3 dB。
3 快速译码算法
本节我们将阐述用于支持新定义的SPC-2、REP-2、RPC和PCR节点快速译码的算法。对于BCH节点,我们采用经典的BM算法。该算法采用硬输入,支持硬件友好型快速译码。
阶数s处的每个可快速译码节点v可以看作是长度\( M=2^{s}\)的外码。作为外码的节点v的编码比特用\( X_{v} \)表示,具有M个比特。
3.1 SPC-2
对于双SPC节点v,我们将其代码比特\( X_{v} \)分为两组,\(X_{v}^{even}\)的索引值均为偶数,\(X_{v}^{odd}\)的索引值均为奇数。根据SPC-2节点的定义,子树\( V_{v} \)上有两个奇偶校验比特,对应的奇偶校验函数p[0]和p[1]可以写为:
\(\left\{\begin{array}{l} p[0]: \oplus x=0, x \in X_{v} \\ p[1]: \oplus x=0, x \in X_{v}^{o d d} \end{array}\right.\)
将两个奇偶校验函数相加,获得奇偶校验函数p [2]:
\(p[2]=p[0] \oplus p[1]: \oplus x=0, x \in X_{v}^{\text {even }}\)
由于p[1]和p[2]两个奇偶校验函数涉及的编码比特没有交集,SPC-2节点的译码可以两个SPC节点并行,每个SPC节点可以继承\( X_{v} \)各一半元素。通过复用两个SPC译码模块,可对 SPC-2节点快速译码。
3.2 REP-2
对于双REP节点v,我们将其编码比特\( X_{v} \)分为两组,\(X_{v}^{even}\)的索引值均为偶数,\(X_{v}^{odd}\)的索引值均为奇数。根据REP-2节点的定义,子树\( V_{v} \)上有两个信息比特,分别用\( U_{M-2} \)和\( U_{M-1} \)表示。
可以很容易得证,\(X_{v}^{odd}\)是\( u_{M-1} \)的重复,而\(X_{v}^{even}\)是\( U_{M-2} \bigoplus U_{M-1} \)的重复。因此,我们可以将长度为M的双REP节点划分为两个具有M/2个比特的REP节点,并且我们可以重用两个REP译码模块来快速对REP-2节点进行并行译码。
3.3 RPC
对于RPC节点v,我们将其编码比特\( X_{v} \)分为四组:
\( X_{v}^{i}=\left\{x \in X_{v}, \bmod (I(x), 4)=i\right\}, i \in\{0,1,2,3\} \) (1)
根据RPC节点的定义,子树\( V_{v} \)上有三个奇偶校验比特,奇偶校验函数p[0]、p[1]、p[2]可以写为:
\(\left\{\begin{array}{l} p[0]: \oplus x=0, x \in X_{v}^{0} \cup X_{v}^{1} \cup X_{v}^{2} \cup X_{v}^{3} \\ p[1]: \oplus x=0, x \in X_{v}^{1} \cup X_{v}^{3} \\ p[2]: \oplus x=0, x \in X_{v}^{2} \cup X_{v}^{3} \end{array}\right.\)
将后两个函数相加得到奇偶校验函数p[3]:
\(p[3]=p[1] \oplus p[2]: \oplus x=0, x \in X_{v}^{1} \cup X_{v}^{2}\)
然后将此奇偶校验函数与第一个函数相加,得到奇偶校验函数p[4]:
\(p[4]=p[0] \oplus p[3]: \oplus x=0, x \in X_{v}^{0} \cup X_{v}^{3}\)
定义^ c i =⊕x, x ∈X v i , i ∈[0,1,2,3]。通过奇偶校验函数p[1]至p[4],可以很容易得证以下关系成立:
\( \hat{C}_{1} \oplus \hat{C}_{3}=\hat{C}_{2} \oplus \hat{C}_{3}=\hat{C}_{1} \oplus \hat{C}_{2}=\hat{C}_{0} \oplus \hat{C}_{3}=0 \) (2)
从等式(2)可以看出存在一个码率为—1 的虚拟重复码,因为:
\( \hat{c}_{0}=\hat{c}_{1}=\hat{c}_{2}=\hat{c}_{3}=0 \)
或
\( \hat{c}_{0}=\hat{c}_{1}=\hat{c}_{2}=\hat{c}_{3}=1 \)
其中,\( \hat{C}_{0},\hat{C}_{1},\hat{C}_{2},\hat{C}_{3}\)是虚拟重复码比特。
综上,当阶数s ≤ 2时,可以很容易地导出RPC节点的译码算法2,其中
3.4 PCR
对于PCR节点v,我们将其编码比特\( X_{v} \)像(1)一样分为四组:根据PCR节点的定义,该节点中有三个信息比特,分别用\(U_{M-3}\)、\(U_{M-2}\)、\(U_{M-1} \)表示。
根据下面的等式,我们定义\(C_{i}\),其中i ∈ {0, 1, 2, 3}
\( \left[\begin{array}{llll} c_{0} & c_{1} & c_{2} & c_{3} \end{array}\right]=\left[\begin{array}{llll} 0 & u_{M-3} & u_{M-2} & u_{M-1} \end{array}\right] \times G_{4} \) (3)
可以很容易得证,\(X_{v}^{0}\)是\(C_{0}\)的重复,\(X_{v}^{1}\)是\(C_{1}\)的重复,\(X_{v}^{2}\)是\(C_{2}\)的重复,\(X_{v}^{3}\)是\(C_{3}\)的重复。因此,我们根据索引值将输入信号\(\alpha_{v}\)分为四组,并与REP节点一样将各组内的输入信号组合为四个增强信号\(\Delta _{i}\),其中i ∈ {0, 1, 2, 3}。
从等式(3)可以看出存在码率为\(\frac{3}{4}\) 的虚拟单向奇偶校验比特\(C_{i}\)(i∈{0, 1, 2, 3}),这样我们就可以重用SPC模块进行译码。PCR译码算法详见算法3。
4 硬件实现
我们设计了两种硬件架构来验证性能、面积效率和能效。
- 递归型译码器:此架构可灵活支持母码长N为2的幂(32到 1024)的各种码长和码率,通过匹配码率,可支持0 < N≤ 1024的码长和0 < R ≤ 1的码率。节点中的\( f_{+/-} \)函数由单个处理元(Processing Element,PE)逻辑处理,一个决策模块支持所有9种码型1。译码器一次处理一个数据包。
- 展开型译码器:此架构仅支持固定码长和码率。在此架构支持的码长N固定为1024,码率R固定为0.875。这种完全展开的管道型设计包含了处理二叉树上各个\( f_{+/-} \)函数的专用PE。与判决模块相同,有21个专用节点的特定逻辑,用于支持21种节点码型。由于25个数据包同时译码,且充分利用了处理逻辑和存储资源,该译码器实现了超高吞吐率、高面积效率,以及低译码功耗。
上述两种译码器采用的串行抵消算法都由基于码型的快速译码加速。SPC和SPC-2节点的最大并行度为128,R1节点的最大并行度为256,其他所有节点的并行度为16。
4.1 并行比较电路
通过观察发现,二叉树右侧存在一些较大的SPC节点。如前所述,处理SPC节点需要较高的并行度才可以实现高吞吐。 SPC译码算法非常简单,具体如下:首先,从SPC节点输入信号找到最小幅度并记录其位置。接下来,对输入信号的符号执行奇偶校验。如果校验通过,则将符号返回,否则,将记录到的最小幅度位置的符号反转,并将反转后的符号返回。
为了处理较大的SPC节点,需要一个从大量输入信号中定位最小幅度的电路。传统的成对比较方法需要一个深度为 \( log_{2}(M) \)的电路,其中M是要比较的幅度的数量。例如,需要进行7次比较才能在128个幅度中找到最小的一个。考虑到时钟频率设置为1 GHz,满足时序约束并在一个时钟周期内完成所有比较难度较大。
为了解决这些问题,我们主张用并行比较架构来取代传统的比较架构。对于阶数s的节点v,其输入信号\( \alpha_{v}\) 包含\( M=2^{s} \)个元素,其幅度表示为\( \left [ A_{0} A_{1}...A_{M-1} \right ]\)。每个幅度都有x比特量化,我们将x比特量化的二进制向量填充到矩阵的列中,如右上图所示:
如果我们用行向量矩阵重写该矩阵,可以得到\( [B_{0}...B_{j}...B_{M-1}...]^{T} \) ,其中\(B_{j}=\left[b_{0}^{j} \cdots b_{i}^{j} \cdots b_{M-1}^{j}\right]\)是行向量(j ∈ {0, 1…x -1})。
我们提出了算法4通过反向掩码D确定最小幅度的位置,其中比特“1”表示最小幅度位置。
上述并行比较算法将比较逻辑的深度从\( log_{2}(M) \)降为1。然而,反向掩码D可能有两个或多个最小位置,这意味着输入信号\( \alpha_{v}\)包括两个或更多个最小幅度,在这种情况下就肯定会出现误差。为此,我们另外增加了一个去重电路,用于确保所选最小位置的唯一性。
4.2 比特量化
极化码的一个显著优势在于,即便量化精度低(4~6比特), SC译码算法也不会受影响。低精度量化是提高吞吐率的关键,因为降低精度可以有效减少实现面积,同时可以提高时钟频率。
图4 浮点与定点性能对比
量化比特的数值分为两种:一种用于信道LLR,另一种用于内部LLR。我们首先测试6比特输入量化和6比特内部量化的情况。如图4所示,这一配置的性能与浮点相当。第二种情况是5比特量化和5比特内部量化,损耗小于0.1 dB。最后是4比特输入量化和5比特内部量化,损耗小于0.2 dB。本文我们评估了输入信号和内部信号在5比特量化条件下的物理实现结果,以寻找复杂度和吞吐率之间的平衡。
与此同时,我们还比较了原始SPC和并行SPC的BLER性能。所有量化方案产生的损耗,都在可接受范围。
4.3 版图面积估算
我们用FPGA方法实现了递归型和展开型两种架构,并将结果换算为物理实现。
根据FPGA综合结果, 递归型译码器有10170个LUT和 12772个FF, 而展开型译码器有66192个LUT和55187个 FF。两种译码器均未使用存储器,因此FPGA结果可以较为容易地换算为ASIC。按16 nm工艺换算,时钟频率1 GHz时,递归型译码器的综合面积和芯片版图面积分别为0.032 mm2和0.045 mm2。按16 nm工艺换算,时钟频率1.20 GHz时,递归型译码器的综合面积和芯片版图面积分别为0.17 mm2和0.30 mm2。
5 关键性能指标
本节将展示相关关键性能指标(Key Performance Indicator,KPI)。首先,我们用以下等式来评估面积效率:
面积效率(Gbps/mm2)=信息量(bit)/(时延(ns)×面积(mm2)
递归型译码器对一个码长N=1024、码率R=0.875的快速极化码构造的数据包进行译码需要40个时钟周期。因此, 编码比特的吞吐率为(1024 bit × 1 GHz)/40个周期 =25.6 Gbps,信息比特的吞吐率为((1024 × 0.875) bit × 1 GHz)/40个周期=22.4 Gbps。以16 nm工艺换算,编码比特的面积效率为561 Gbps/mm2。
展开型译码器完成一个数据包译码需要25个时钟周期,其译码过程完全管道化,也就是说,第一个数据包的25个时钟周期之后的每一个时钟周期,都会产生一个新的译码结果数据包。因此,编码比特的吞吐率为1024 bit × 1.2 GHz=1229 Gbps, 信息比特的吞吐率为(1024 × 0.875) bit × 1 GHz= 1075 Gbps。以16 nm工艺换算,编码比特的面积效率为 4096 Gbps/mm2。
我们用200个数据包进行仿真分析,进一步评估能耗和每比特的译码能效。仿真的PVT(工艺、电压、温度)条件分别为TT、0.8 V和20℃。结果显示,递归型译码器的功率为
30.9 mW,平均能效为1.21 pJ/bit;展开型译码器的功率为
784 mW,平均能效为0.63 pJ/bit。
此外,我们还与其他一些高吞吐率译码器进行了面积效率、能耗比较,相关结果见表3。从KPI数据来看,展开型译码器更适合有超高吞吐率要求的场景,但只支持固定的码长和码率;递归型译码器尺寸更小,更适合资源受限的设备,且对码长和码率的支持也更灵活,这点对于无线通信很有吸引力。
表2 与高吞吐率极化码译码器的比较
表3 与高吞吐率极化译码器的比较
6 结语
本文提出了一种新的极化码构造方式。该方法构造的极化码全部由可快速译码的特殊节点组成,码长为16。如果将译码过程视为二叉树遍历,在码长N=1024、码率R=0.875的条件下,与原始极化码构造方法相比,快速极化码只需牺牲轻微的BLER性能,就可以减少55%的节点访问、8.9%的\( f_{+/-} \)计算和43.5%的边遍历。
同时,我们为快速极化码实现了两种译码器。递归型译码器对码长和码率的支持灵活,所支持的码长最高可达1024。该译码器的估算芯片版图面积仅为0.045 mm2,可以提供25.6 Gbps的编码比特吞吐率,面积效率为561 Gbps/mm2。
展开型译码器只支持码长N=1024、码率R=0.875的码。得益于完全管道化的结构,展开型译码器硬件可实现超高的面积效率以及较低的译码能耗。展开型译码器的估算芯片版图面积为0.3 mm2,可提供1229 Gbps的编码比特吞吐率,面积效率高达4096 Gbps/mm2。
上述结果表明,快速极化码可以满足下一代无线通信系统高吞吐率的需求,递归型和展开型硬件设计可以满足不同的系统需求。
- 标签:
- 6G