面向大规模MIMO 检测的粗粒度可重构架构设计

2021-07-09 17:19刘陶然李杰
现代计算机 2021年14期
关键词:数据流向量矩阵

刘陶然,李杰

(1.上海交通大学电子信息与电气工程学院,上海 200240;2.上海航天测控通信研究所,上海 201109)

0 引言

大规模MIMO(Multi-Input Multi-Output,MIMO)是当今5G 通信系统的核心技术。大规模MIMO 检测是最为关键的信号处理任务之一。随着通信技术的发展,其服务标准,质量需求也在不断提升,这对用于大规模MIMO 算法的硬件架构在面积效率、能量效率和灵活性等方面提出更高的要求。

基于通用处理器的硬件结构拥有较高的灵活性,但是能效比较低。ASIC 为定制化硬件,其高性能是以牺牲灵活性为代价,因而无法满足大规模MIMO 领域的需求。FPGA 具有较好的硬件可编程能力,这一特性使得其在大规模MIMO 领域得到了广泛应用[1-3]。然而FPGA 细粒度的实现方式带来更高的能耗需求。于是,基于粗粒度实现方式的CGRA(Coarse-Grained Recon⁃figurable Array,CGRA)以其非常高的面积效率、能量效率以及灵活性,成为大规模MIMO 领域硬件架构新的研究方向。

通用的CGRA[4-6]在处理大规模MIMO 算法时是低效的,因为其核心计算单元仅支持标量操作,无法很好地适用于大规模MIMO 的向量类型操作,从而带来大量的互联、控制开销。有研究[7]面向MIMO 算法提出了一种异构的支持增强型向量计算方案的CGRA 架构,但是其全并行的访存方式以及数据处理策略,使得其仅适用于传统较小规模(4×4)的MIMO 算法,而非大规模MIMO。并且,现有可重构架构多采用处理器核与CGRA 相结合的指令流控制模式[4,8],虽然能够实现灵活控制,但是能耗较高。

尽管现有技术通过计算和访存优化成功提高了吞吐性能,但其并未重视整体硬件资源、互联和面积开销的优化。为此本文提出了一种基于数据流驱动的CGRA 架构,能够以较低的硬件开销实现有效的数据流控制与数据计算。

1 算法分析及架构优化技术

1.1 大规模MIMO信号检测算法原理和特点

在具有Nt个发射天线和Nr个接收天线(Nr>Nt)的大规模MIMO 系统中,接收信号可表示为:

大规模MIMO 信号检测是指利用接收信号y,和信道矩阵H,恢复出发送信号s的过程。将接受信号y与权重矩阵相乘即可得到估计的发射向量

MMSE(Mini-Mental State Examination,MMSE)作为典型的线性检测算法,定义预处理变量Gram 矩阵G=HHH和yMF=HHy,其中G是正定的埃尔米特矩阵,可以得到:

公式(3)中逆矩阵通常通过迭代估计方式求得。定义矩阵M1,M2,向量v1,v2。表1 总结了常见迭代算法的核心算子及其乘除法计算量:

表1 迭代求逆算法一次迭代下完整运算的乘除法计算量

以Nr×Nt=128×8 的天线规模为例,得到矩阵和向量类操作的占比高达99%,特别是算法预处理部分Gram 矩阵和yMF向量的求解平均占比82%。这些算法特点要求硬件设计能够有效支持矩阵和向量类操作,支持复数的高效计算,并且能够以较低的硬件开销支持数据密集型计算。而传统CGRA 无法同时满足上述要求,为此本文将从以上算法需求出发,设计基于数据流驱动的CGRA 架构。

1.2 基于反馈机制的数据流通信技术

现有的粗粒度可重构架构多基于指令流驱动,其灵活性高但是会产生较大的能耗和控制开销。为此本文研究数据流驱动模式,并提出了一种基于反馈机制的通信方式,实现自动化的数据流控制。

图1 展示了反馈机制的基本单元FBU(Feedback Unit,FBU),其数据传递受到单bit 的fb 反馈信号控制。反馈信号产生的原因在于访存单元和存储器的交互发生堵塞:当阵列向存储器发出写请求但存储器无法接收数据时,如果数据流没有停止传递新数据,则会造成数据丢失。同理,当读请求未被响应,PE 就可能会造成计算错误。为了解决数据流驱动的通信问题,反馈机制设置FBU 单元,并配合来自于后一级的fb 信号实现自动化控制。

图1 演示了在两个FBU 之间执行一个加法操作的数据流变化。在clk0,所有fb 均为0,使得clk1 时刻所有寄存器按顺序存储数据。在clk1,fb 输入拉高,表示后续FBU 数据发生堵塞,于是clk2 时Reg_post1 数据保持不变,Reg_post0 存储新数据,同时fb 信号向前传递给fb_post。在clk3,fb 输入仍为1,Reg_pre1 和Reg_post0 保持不变,同时fb_pre 也变为1,使得下个周期Reg_pre0 以及即将输入进来的数据保持不变。之后的几个周期,fb 输入置低,数据依次恢复向后传递。可以看到输出数据未发生丢失,且输出顺序正确。在可重构设计中,部分FBU 会根据配置跳过寄存器,此时fb 也要选择不过寄存器的支路,保证控制无误。

图1 基于反馈机制的数据流通信技术原理

除反馈fb 信号外,数据流驱动模式还包括正向控制信号valid 和last。valid 置高表示数据有效,并用于访存单元的控制。last 作为循环结束信号,控制执行结束。

1.3 高数据复用率的脉动阵列架构设计

正如1.1 小节中描述,算法预处理中求解Gram 矩阵和yMF向量占据核心计算。而Gram 矩阵由于其自身的共轭对称性,如果采用传统的脉动阵列结构[12],不仅数据复用率低,还会造成访存的浪费,增加能耗开销。

本文设计了高数据复用率的可重构脉动阵列结构。同时复用了Gram 矩阵的两个矩阵输入,并且将Gram 矩阵和yMF的输入矩阵复用,实现二者并行计算。如图2 所示,第一列PE 接收来自左侧输入的HH矩阵和来自上方的y向量,经过PE 复数乘和自累加运算,得到yMF向量。输入矩阵继续向右和向下传递,用于计算Gram 矩阵。其中第二列PE 用于计算Gram 对角线,后三列PE 用于求共轭和计算Gram 下三角。最终经过LS 输出可以得到完整Gram 矩阵。

图2 脉动阵列原理图

使用PEx,y[t]来表示第x行第y列的PE,在第t个周期的累加结果。假设每个PE的执行周期相等,则第一列输出表示为:

第二列Gram 对角线输出表示为:

下三角元素输出表示为:

该架构很好地解决了传统脉动阵列处理MIMO 算法数据复用率低的问题,提升了硬件效率。

2 数据流驱动的CGRA硬件结构设计

系统架构如图3 所示,由全局控制器、片上存储以及四个PEA(Processing Elements Array,PEA)组成。其中PEA 采用异构的结构,基本单元为用于计算的PE(Processing Elements,PE)和用于访存的LS(Load Store,LS),通过Router(路由)形成互联网络。

图3 系统架构图

2.1 适用于大规模MIMO的通用PE单元

传统的CGRA 在计算一个复数乘法操作时,至少使用6 个PE[8],每个PE 包括一个乘法器和一个通用ALU,并且需要大量互连开销。而本文设计的支持复数计算的PE 可以降低一半以上的硬件开销。

如图4(a)为本文设计的PE 单元,采用四级流水结构。第一级为输入寄存器单元,用于接收输入数据和立即数配置字,并监测操作数是否到齐,产生反馈信号。第二级为乘法单元,支持两输入乘法和自相乘两种模式。第三级由支持16 种操作模式的主ALU 和精简化的副ALU 组成。最后一级为累加单元和用于定点数处理的移位单元。

图4(b)即为累加单元,为了支持多种类型脉动阵列累加操作,该设计创新性的支持三种累加模式:乘累加(a×b+c)、自累加(∑(a×b)) 和立即数累加(a×b+imm),自累加模式为研究重点。图中config(配置)信号用来控制累加模式,并决定自累加的初值是来自In2 输入还是可配置的立即数。利用valid 控制信号以及异或门逻辑来检测第一个到达的数据,并开始执行自累加运算。如果数据流发生中断,有非valid数据到来时,右侧选择器电路可以控制输出数据保持不变,避免重复累加。由此实现了数据流控制的自累加单元。该可重构PE 单元整体利用1.3 小节提出的基于反馈机制的数据流控制方式,实现了可支持包括实数和复数在内的32 种操作模式。在不损失灵活性的前提下有效降低了硬件开销。

图4 适用于大规模MIMO的通用PE单元

2.2 数据流驱动的Router单元

为了实现数据传递,每个PE 单元都有一个与之互连的Router 单元,以此进行不同PE 之间以及PE 与LS 之间的数据传递。如图5 为本文提出的Router 单元结构,支持与N、E、S、W 四个方向的Router 以及多个LS 的互连,所有数据均为双向传递。如图5-b,每个传输方向都由data 和fb 两个基本模块组成,即每个数据流都有对应的fb 信号作为控制,由此实现数据流驱动的高效互连。

图5 支持双向数据流传递的Router单元

2.3 支持地址跳变的可编程LS单元

传统的LS 使用通用的PE 进行地址计算[13],由于大量PE 用于地址计算而不是操作数计算,因此硬件利用率较低。为此,本文LS 采用访存和计算解耦合的设计,将地址计算转移至LS 的专用可编程硬件中进行,并结合大规模MIMO 算法特性,创新性的设计了可跳变的地址生成单元。

如图6 为LS 结构。采用数据流驱动的fb 信号控制。控制逻辑接收fb 和valid 信号,并产生对其他模块的内部控制信号。预处理/后处理单元主要用于算法中常见的复数求共轭等功能。循环发生器包括循环变量的产生,循环边界的比较,循环变量的累加单元,并且依据MIMO 算法需求,设计支持两层循环。存储交互信号产生模块主要用于产生与存储器交互的读/写使能。

图6 支持地址跳变的可编程LS单元

图6(b)描述的地址生成单元可抽象为一个可编程的函数模块,根据循环变量i、j以及系数a、b、c得到对应的地址输出:ai+bj+c。地址跳变即根据算法需要自动改变地址系数。例如,图2 中描述的求Gram 矩阵只计算了下三角部分,在输出时经过LS 的后处理单元生成共轭数据,利用图6(c)的I/O 单元中两个FBU分别存储原数据和经过后处理的数据,并提供对应的valid 信号。地址生成单元即可在共轭数据有效时,将访存地址跳变为共轭数据对应的地址,当原下三角数据有效时再跳变回来,由此实现自动化的地址控制,减少访存,提高数据复用。该结构通过可编程的方式,大大提升了LS 的灵活性。

3 实验结果

3.1 大规模MIMO核心算子验证结果

为了验证结果,本文在40nm CMOS 工艺上进行了设计,并利用1.1 小节针对大规模MIMO 算法的统计结果,选取了该领域典型算法的核心算子进行功能映射。其中PE 利用率定义为:

Nop为算法总的计算量,II为启动间隔,NPE为阵列的PE 数量。

(1)预处理Gram 矩阵和yMF向量验证结果

实验中仅使用一个PEA,采用1.3 小节中脉动阵列的方式进行映射,表2 中总结了相应的执行结果。可以看出,该架构很好地支持了多种规模的MIMO 系统,并且能够保持82%以上的PE 利用率,具有较高的灵活性和硬件效率。

表2 不同规模MIMO 系统预处理Gram 矩阵和yMF 向量验证结果

(1)矩阵向量乘法验证结果

表3 为大规模MIMO 核心算子验证结果。可以看出,在相应输入规模下,矩阵乘矩阵和矩阵乘向量都能够达到100%的PE 利用率,而向量内积操作的PE 利用率达到60%。表4 为本设计与其他研究的对比结果,可以看出本文实现了最高10.22 倍的吞吐性能提升。

表3 大规模MIMO 核心算子验证结果

表4 大规模MIMO 核心算子对比结果

3.2 大规模MIMO检测算法验证

本文在设计的CGRA 架构上,使用4 块PEA,验证了迭代次数为2 的WeJi 算法[1](加权Jacobi)。与其他大规模MIMO 的可重构硬件实现结果对比见表5。

表5 不同大规模MIMO 的可重构硬件实现结果性能对比

为了能够公平地对比FPGA 实现结果,这里将不同可重构硬件资源开销归一化到逻辑门的数量。同时为了公平地与其他CMOS 工艺比较,对不同工艺下的设计进行了如下归一化[7]:

式中,Tech.代表工艺参数。

对比与已有可重构硬件实现的归一化结果,本文提出的基于数据流的CGRA 设计在面积效率方面提升了32%~82%,同时取得了2.81 倍的能量效率提升。这主要是因为这些可重构硬件设计采用细粒度的控制结构,和本文提出的CGRA 架构相比需要更多的配置信息来实现复杂的电路控制。而本文设计的CGRA 采用基于反馈机制的数据流驱动方式,这大大简化了控制逻辑并精简了PE、LS 单元的硬件结构。同时利用精简高效的互连方式和路由结构,降低了互连开销,因此实现了更高的面积效率和能量效率。

4 结语

本文提出了一种数据流提驱动的CGRA 架构来优化面积效率和能效。通过基于反馈机制的数据流通信技术,极大降低了控制成本,减少了面积开销。同时,本文对提出的面向大规模MIMO 算法的CGRA 架构进行了设计实现,并对计算单元、访存单元和路由单元分别进行了优化设计。硬件实现的结果显示,与当前MI⁃MO 领域的可重构硬件设计相比,本文的性能取得了32%~82%的面积效率提升,同时取得了2.81 倍的能量效率提升。今后研究将进一步优化电路,提高系统频率,同时扩展算法的验证。

猜你喜欢
数据流向量矩阵
优先级驱动的泛化航电网络实时性能分析
向量的分解
数据流和波形诊断技术在发动机故障诊断中的应用
数据流安全查询技术综述
多项式理论在矩阵求逆中的应用
利用数据流进行电控故障诊断的案例分析
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
矩阵
矩阵