面向NAND闪存的高能效LDPC译码器结构设计

2021-08-07 14:22张超何卫锋
现代计算机 2021年17期
关键词:校验功耗时钟

张超,何卫锋

(上海交通大学微纳电子学系,上海 200240)

0 引言

NAND Flash由于存储容量大,功耗低的特点被广泛应用于手机、数码照相机、平板电脑等移动设备中[1]。新型NAND Flash采用MLC、TLC等多比特存储技术提升NAND Flash的存储容量,但同时其数据出错率也会随之升高[2]。目前,NAND Flash已使用BCH码的纠错编码技术来降低数据出错率,而低密度奇偶校验码(Low-Density Parity-Check Codes,LDPC)码可借助信道软信息进行软判决译码,相比BCH码拥有更好的纠错性能,被视为是未来更适用于NAND Flash的数据编码方式之一[3]。

LDPC码的软判决译码是通过信息的反复迭代计算来完成的,译码所需的迭代周期不固定,迭代周期越长,译码处理的时间也越长。为了使得任何迭代周期下译码器的处理速度都能满足实时处理的性能要求,已有的译码器设计方案[4-6]将译码器的时钟频率和工作电压固定为最大迭代周期所需的时钟频率和工作电压。这样做的问题是当译码迭代次数小于最大迭代次数时,译码器的工作频率和电压会大于实际需求,带来额外的功耗开销,不适用于NAND Flash这类对功耗和能效有较高要求的应用场景。

针对LDPC译码迭代周期可变的特点,本文设计并实现了一款带有自适应电压频率调节机制(Adaptive Voltage and Frequency Scaling,AVFS)的高能效LDPC译码器,该系统能够实时监测译码器中输入FIFO的使用情况,并据此动态调节LDPC译码器的时钟频率和工作电压,达到降低能耗开销、提高处理能效的目的。

1 QC-LDPC码及其译码算法

1.1 QC-LDPC码的概念

准循环低密度奇偶校验码(Quasi-Cyclic Low-Density Parity-Check Codes,QC-LDPC)码[7]是LDPC码的重要分支,它具有准循环的特殊结构,利于编解码的硬件实现。对一个码长为N×Z,信息位长度为(N-M)×Z的QC-LDPC码来说,校验矩阵H可由M行N列的基矩阵P、Z行Z列的单位矩阵I和零矩阵扩展而来。公式(1)中P矩阵的每个元素pi,j代表移位系数。公式(2)中校验矩阵H中的每一个元素I(pi,j)代表单位矩阵I循环右移pi,j位后的矩阵,特殊情况下当pi,j为-1时代表该位置填充和单位矩阵同样大小的零矩阵。

(1)

(2)

1.2 分层标准最小和译码算法

分层标准最小和算法[8](Layered Normalized Min-Sum Algorithm,LNMSA)按层对变量节点和校验节点进行信息更新,最终根据后验信息输出硬判决码字,每一层对应QC-LDPC码基矩阵P的一行,包含相同校验节点个数,当一层的校验信息更新结束后立即更新后验信息用于下一层信息更新。设Bj为后验信息,它代表信道软信息,初始值是一个对数似然比,来自于信道本身。设Cij为从变量节点j传递到校验节点i的信息,Vij为从校验节点i传递到变量节点j的信,Zj为硬判决输出码字。此外 N(i) 表示和校验节点i相连的所有变量节点集合,α是一常数,通常取0.75。译码的整体过程可分为信息初始化、变量节点更新、校验节点更新、译码检测4个步骤:

步骤1 信息初始化:

(3)

步骤2 变量节点更新:

Vij=Bj-Cij(4)

步骤3 校验节点更新:

(5)

(6)

Bj=Cij+Vij

(7)

min和submin分别代表最小值和次最小值,min position代表最小值所处的列号。

步骤4 译码检测:

(8)

R=H×Zj

(9)

如果R不为0代表译码不成功,则重复步骤2和步骤3重新更新变量节点和校验节点直至译码成功或到达最大迭代次数。

2 带有AVFS调节机制的LDPC译码器结构设计

2.1 带AVFS的LDPC译码系统总体结构

本节将基于分层标准最小和译码算法,针对码率为8/9,码长为9216的LDPC码,设计一种带有AVFS调节机制的LDPC译码器。

如图1所示,整个带AVFS的LDPC译码系统由电压时钟供给电路、主电路以及外部数据接口三部分组成。首先,电压时钟供给电路包含DC-DC转换器和自适应时钟发生器,负责向主电路提供电压和时钟源。前者可输出可变电压,调压范围为0.7V~1.0V,调节步长为0.1V,而后者能够接收可变电压输出不同频率的时钟信号。其次,主电路由AVFS有限状态机和LDPC译码器构成。AVFS有限状态机可根据一定规则控制DC-DC转换器调节译码系统的工作电压。最后,两个异步FIFO组成了译码器和外部电路的数据接口,其中一个异步FIFO用于存储译码器的输出码字,另一FIFO用于接收信道软信息和反馈当前自身的使用情况给AVFS状态机。本文中,FIFO的使用情况用FIFO的剩余深度作为指标来衡量,它指的是FIFO中已经写入的数据量和读出的数据量之差。整体电路可划分为两个时钟域,输出FIFO的读时钟和存有软信息的FIFO的写时钟共用同一时钟,固定为200MHz,模拟外部电路固定的时钟频率,其余电路共用另一时钟(Global Clk),该时钟频率可根据AVFS机制调节。

图1 带AVFS的LDPC译码系统结构

AVFS的电压频率调节机制如下所述:AVFS状态机在每次译码迭代开始前根据当前的译码器工作信息(已执行的译码迭代次数、译码是否已成功、当前频率档位)计算出一个预期的输入FIFO剩余深度并与当前的实际剩余深度进行比较,根据结果挑选下一个工作电压点,控制DC-DC变换器完成电压调节。自适应时钟发生器再根据不同的电压产生不同频率的时钟信号,至此完成一次电压频率调节。

图2展示了详细的AVFS调节流程图,每次译码迭代开始前当FIFO的剩余深度超出预期值时,代表译码处理速率小于软信息输入速率,AVFS状态机就会提升译码器的工作电压和频率,反之则会降低工作电压和频率。此外当译码结束后,如果下一组待译码软信息还未完全载入至FIFO中,AVFS状态机也会降低当前的工作电压和频率减小译码器空闲期间的静态功耗。综上所述,AVFS调节机制会使得译码处理时间和输入一组软信息的时间更加匹配,在满足性能需求的同时达到降低功耗开销,提高处理能效的目的。

图2 AVFS调节流程图

图3展示了RBER为6.5×10-3时AVFS系统工作的具体实例。本文所设计的译码器每经1152个时钟周期可向FIFO写入一组待译码软信息,当输入FIFO的剩余深度为1152时代表一组软信息准备就绪并可载入至译码器进行译码,这一载入过程在图中表现为FIFO剩余深度的下降。理想情况下,译码器进行一次译码处理的时间和输入一组软信息的时间相同,FIFO的剩余深度应当总是不高于1152。然而随着码字的比特错误类型不断变化,当出现较难纠正的错误时,译码所需的迭代次数就会增多,在时钟频率不变的情况下,译码的处理时间会大于输入下一组软信息的时间,FIFO不得不在译码器处理期间继续接收新的数据,可以看到此时剩余深度会超越1152,出现接近1500的高峰,这时AVFS系统就会提高工作频率加快译码处理速率,图中所示的时钟频率提升至272MHz就对应这一过程。于此同时,在之后一段时间内如果译码迭代次数不再维持在高值时,时钟频率会被降低以节省功耗。

图3 输入FIFO剩余深度变化与时钟频率调节

2.2 LDPC译码器结构设计

本节将对译码系统主电路中的LDPC译码器进行结构设计,图4为LDPC译码器的电路结构,主要由并行度为128的BNU和CNU处理单元、译码检测器和存储器三部分构成。传统译码器设计中的循环移位模块被集成到对变量节点存储器的读写控制器中。译码器在工作时,首先将输入FIFO中的软信息载入到V node Memory中,然后依靠BNU和CNU处理单元完成迭代译码,期间会将后验信息输出给检测器,并将硬判决码字写入输出FIFO,如果检测器检测译码成功,则会将码字从输出FIFO中读出并拉高数据有效信号Valid指示外部接收电路接收码字。

图4 LDPC译码器结构图

存储器包含变量节点存储器(V Node Message Memory)、符号存储器(Sign Memory)和最小值存储器(Min Memory)。变量节点存储器存储的是变量节点信息。符号存储器存储的是变量节点的符号位。最小值存储器存储的是变量节点绝对值的最小值、次最小值、最小值的位置以及所有变量节点符号位连乘的结果。

图5 BNU单元电路结构

处理电路包含BNU、CNU和检测器三部分。BNU处理单元的结构如图5所示,它可以根据公式(5)(6)恢复出校验节点,然后利用公式(7)将变量节点与校验节点相加得到后验信息。CNU处理单元的电路结构如图6所示,它先是根据公式(4)将后验信息与恢复出的校验节点相减得到变量节点,然后根据公式(5)计算新的校验节点。检测器完成的是公式(8)(9)的功能,它能够输出硬判决码字至FIFO中并检测码字是否已正确。

图6 CNU单元电路结构

2.3 自适应时钟发生器结构设计

自适应时钟发生器主要由扇出为4的反相器链和16分频电路构成。当START信号由0变为1时,反相器链开始振荡并产生环振时钟信号。为了使得不同PVT条件下自适应时钟发生器都能产生译码器所需要的时钟频率,环振时钟的频率需要具有一定的可配性便于硅后校准,因此电路中设有3比特的选择信号,可将反相器链配置为10、12、14、16、18、22、26或30级。后接的16分频电路主要是为了降低环振时钟频率满足译码电路需求,同时使得时钟的占空比更贴近50%。

图7 自适应时钟电路结构

自适应时钟发生器在AVFS系统中的作用是接收DC-DC 变换器输出的可变电压,改变反相器链延时,从而输出不同频率的时钟。因此AVFS系统只需改变DC-DC变换器的输出电压即可同时完成电压和频率调节。需要注意的是在调压还未结束时,需要利用门控时钟短时地关闭时钟信号,避免高电平上冲或者下冲引起电路功能出错。

为了证明所设计的自适应时钟发生器能够满足译码器的频率需求,在最大译码迭代次数设定为4次的情况下,本文先是根据1、2、3、4四种迭代周期和输入一组软信息的固定时间计算出不同迭代周期所需的目标时钟频率,如表1中第二列所示,分别为76MHz、141MHz、204MHz和270MHz。然后再对自适应时钟发生器在各电压下进行电路仿真,测得实际输出的时钟频率,并与目标时钟频率做比较。表1中的第三列展示了自适应时钟发生器在4种电压下可输出的不同时钟频率,其中工艺角、环境温度、反相器链长度分别设置为TT、25℃和16级。可以看到,自适应时钟发生器在各电压产生的频率均大于目标工作频率,能够满足译码器需求。

表1 自适应时钟发生器频率电压表

3 实现与结果

本文提出的LDPC译码器在TSMC 28nm工艺下进行了电路逻辑综合。译码器在AVFS调节机制下共有4种工作电压和频率,表2展示了工作电压固定为不同值时译码器的运行功耗。为了测定工作电压可变时译码器的运行功耗,本文在不同信道噪声下对10000组软信息进行译码测定运行功耗和吞吐率。图10展示了不同RBER下应用AVFS调节机制后译码的吞吐率和平均功耗,图中将吞吐率和功耗归一化到不应用AVFS时的吞吐率和功耗。可以看到在各RBER下吞吐率仅有1%左右的损失,而功耗却能有24.7%-61.4%的降低,能效可提升至原来的1.3-2.5倍,因此证明AVFS调节机制能够有效降低译码器功耗开销,提高处理能效。

表2 LDPC译码器在各电压频率点的运行功耗

表3展示了各译码器的性能参数。由于码长越长,译码器的功耗和面积都会近似线性增长,为了公平对比,将其他设计的译码器功耗和面积都线性归一化到本文9216比特码长对应的功耗和面积,同时再将面积根据不同工艺归一化到28nm工艺对应的面积。结果显示当RBER高达1.11×10-2时,本文的译码器电路功耗为50.5mW,能效为31.3bit/nJ,与其他设计相比有着显著的能效优势。

图8 应用AVFS后各RBER下译码器的功耗和吞吐率

表3 各译码器性能对比表

4 结语

本文针对LDPC译码迭代周期动态可变的特点,设计了一款带自适应电压频率调节的高能效LDPC译码器。相较传统固定工作电压和频率的译码器结构,本文的LDPC译码器的功耗降低了24.7%-61.4%,能效提升1.3-2.5倍。下一步将再结合门控电压源、多阈值电压技术等低功耗数字电路设计方法对译码器的功耗做进一步优化。

猜你喜欢
校验功耗时钟
复杂多耦合仿真模型校验工具研究
使用Excel朗读功能校验工作表中的数据
电能表在线不停电校验技术
这个时钟一根针
精通文件校验的“门道”
揭开GPU功耗的面纱
有趣的时钟
时钟会开“花”
环保之功,从主板做起
μCOS-Ⅱ实时操作系统在μ’nSPTM中的低功耗研究