劉陶然,李杰
(1.上海交通大學(xué)電子信息與電氣工程學(xué)院,上海 200240;2.上海航天測(cè)控通信研究所,上海 201109)
大規(guī)模MIMO(Multi-Input Multi-Output,MIMO)是當(dāng)今5G 通信系統(tǒng)的核心技術(shù)。大規(guī)模MIMO 檢測(cè)是最為關(guān)鍵的信號(hào)處理任務(wù)之一。隨著通信技術(shù)的發(fā)展,其服務(wù)標(biāo)準(zhǔn),質(zhì)量需求也在不斷提升,這對(duì)用于大規(guī)模MIMO 算法的硬件架構(gòu)在面積效率、能量效率和靈活性等方面提出更高的要求。
基于通用處理器的硬件結(jié)構(gòu)擁有較高的靈活性,但是能效比較低。ASIC 為定制化硬件,其高性能是以犧牲靈活性為代價(jià),因而無法滿足大規(guī)模MIMO 領(lǐng)域的需求。FPGA 具有較好的硬件可編程能力,這一特性使得其在大規(guī)模MIMO 領(lǐng)域得到了廣泛應(yīng)用[1-3]。然而FPGA 細(xì)粒度的實(shí)現(xiàn)方式帶來更高的能耗需求。于是,基于粗粒度實(shí)現(xiàn)方式的CGRA(Coarse-Grained Recon?figurable Array,CGRA)以其非常高的面積效率、能量效率以及靈活性,成為大規(guī)模MIMO 領(lǐng)域硬件架構(gòu)新的研究方向。
通用的CGRA[4-6]在處理大規(guī)模MIMO 算法時(shí)是低效的,因?yàn)槠浜诵挠?jì)算單元僅支持標(biāo)量操作,無法很好地適用于大規(guī)模MIMO 的向量類型操作,從而帶來大量的互聯(lián)、控制開銷。有研究[7]面向MIMO 算法提出了一種異構(gòu)的支持增強(qiáng)型向量計(jì)算方案的CGRA 架構(gòu),但是其全并行的訪存方式以及數(shù)據(jù)處理策略,使得其僅適用于傳統(tǒng)較小規(guī)模(4×4)的MIMO 算法,而非大規(guī)模MIMO。并且,現(xiàn)有可重構(gòu)架構(gòu)多采用處理器核與CGRA 相結(jié)合的指令流控制模式[4,8],雖然能夠?qū)崿F(xiàn)靈活控制,但是能耗較高。
盡管現(xiàn)有技術(shù)通過計(jì)算和訪存優(yōu)化成功提高了吞吐性能,但其并未重視整體硬件資源、互聯(lián)和面積開銷的優(yōu)化。為此本文提出了一種基于數(shù)據(jù)流驅(qū)動(dòng)的CGRA 架構(gòu),能夠以較低的硬件開銷實(shí)現(xiàn)有效的數(shù)據(jù)流控制與數(shù)據(jù)計(jì)算。
在具有Nt個(gè)發(fā)射天線和Nr個(gè)接收天線(Nr>Nt)的大規(guī)模MIMO 系統(tǒng)中,接收信號(hào)可表示為:
大規(guī)模MIMO 信號(hào)檢測(cè)是指利用接收信號(hào)y,和信道矩陣H,恢復(fù)出發(fā)送信號(hào)s的過程。將接受信號(hào)y與權(quán)重矩陣相乘即可得到估計(jì)的發(fā)射向量
MMSE(Mini-Mental State Examination,MMSE)作為典型的線性檢測(cè)算法,定義預(yù)處理變量Gram 矩陣G=HHH和yMF=HHy,其中G是正定的埃爾米特矩陣,可以得到:
公式(3)中逆矩陣通常通過迭代估計(jì)方式求得。定義矩陣M1,M2,向量v1,v2。表1 總結(jié)了常見迭代算法的核心算子及其乘除法計(jì)算量:
表1 迭代求逆算法一次迭代下完整運(yùn)算的乘除法計(jì)算量
以Nr×Nt=128×8 的天線規(guī)模為例,得到矩陣和向量類操作的占比高達(dá)99%,特別是算法預(yù)處理部分Gram 矩陣和yMF向量的求解平均占比82%。這些算法特點(diǎn)要求硬件設(shè)計(jì)能夠有效支持矩陣和向量類操作,支持復(fù)數(shù)的高效計(jì)算,并且能夠以較低的硬件開銷支持?jǐn)?shù)據(jù)密集型計(jì)算。而傳統(tǒng)CGRA 無法同時(shí)滿足上述要求,為此本文將從以上算法需求出發(fā),設(shè)計(jì)基于數(shù)據(jù)流驅(qū)動(dòng)的CGRA 架構(gòu)。
現(xiàn)有的粗粒度可重構(gòu)架構(gòu)多基于指令流驅(qū)動(dòng),其靈活性高但是會(huì)產(chǎn)生較大的能耗和控制開銷。為此本文研究數(shù)據(jù)流驅(qū)動(dòng)模式,并提出了一種基于反饋機(jī)制的通信方式,實(shí)現(xiàn)自動(dòng)化的數(shù)據(jù)流控制。
圖1 展示了反饋機(jī)制的基本單元FBU(Feedback Unit,F(xiàn)BU),其數(shù)據(jù)傳遞受到單bit 的fb 反饋信號(hào)控制。反饋信號(hào)產(chǎn)生的原因在于訪存單元和存儲(chǔ)器的交互發(fā)生堵塞:當(dāng)陣列向存儲(chǔ)器發(fā)出寫請(qǐng)求但存儲(chǔ)器無法接收數(shù)據(jù)時(shí),如果數(shù)據(jù)流沒有停止傳遞新數(shù)據(jù),則會(huì)造成數(shù)據(jù)丟失。同理,當(dāng)讀請(qǐng)求未被響應(yīng),PE 就可能會(huì)造成計(jì)算錯(cuò)誤。為了解決數(shù)據(jù)流驅(qū)動(dòng)的通信問題,反饋機(jī)制設(shè)置FBU 單元,并配合來自于后一級(jí)的fb 信號(hào)實(shí)現(xiàn)自動(dòng)化控制。
圖1 演示了在兩個(gè)FBU 之間執(zhí)行一個(gè)加法操作的數(shù)據(jù)流變化。在clk0,所有fb 均為0,使得clk1 時(shí)刻所有寄存器按順序存儲(chǔ)數(shù)據(jù)。在clk1,fb 輸入拉高,表示后續(xù)FBU 數(shù)據(jù)發(fā)生堵塞,于是clk2 時(shí)Reg_post1 數(shù)據(jù)保持不變,Reg_post0 存儲(chǔ)新數(shù)據(jù),同時(shí)fb 信號(hào)向前傳遞給fb_post。在clk3,fb 輸入仍為1,Reg_pre1 和Reg_post0 保持不變,同時(shí)fb_pre 也變?yōu)?,使得下個(gè)周期Reg_pre0 以及即將輸入進(jìn)來的數(shù)據(jù)保持不變。之后的幾個(gè)周期,fb 輸入置低,數(shù)據(jù)依次恢復(fù)向后傳遞。可以看到輸出數(shù)據(jù)未發(fā)生丟失,且輸出順序正確。在可重構(gòu)設(shè)計(jì)中,部分FBU 會(huì)根據(jù)配置跳過寄存器,此時(shí)fb 也要選擇不過寄存器的支路,保證控制無誤。
圖1 基于反饋機(jī)制的數(shù)據(jù)流通信技術(shù)原理
除反饋fb 信號(hào)外,數(shù)據(jù)流驅(qū)動(dòng)模式還包括正向控制信號(hào)valid 和last。valid 置高表示數(shù)據(jù)有效,并用于訪存單元的控制。last 作為循環(huán)結(jié)束信號(hào),控制執(zhí)行結(jié)束。
正如1.1 小節(jié)中描述,算法預(yù)處理中求解Gram 矩陣和yMF向量占據(jù)核心計(jì)算。而Gram 矩陣由于其自身的共軛對(duì)稱性,如果采用傳統(tǒng)的脈動(dòng)陣列結(jié)構(gòu)[12],不僅數(shù)據(jù)復(fù)用率低,還會(huì)造成訪存的浪費(fèi),增加能耗開銷。
本文設(shè)計(jì)了高數(shù)據(jù)復(fù)用率的可重構(gòu)脈動(dòng)陣列結(jié)構(gòu)。同時(shí)復(fù)用了Gram 矩陣的兩個(gè)矩陣輸入,并且將Gram 矩陣和yMF的輸入矩陣復(fù)用,實(shí)現(xiàn)二者并行計(jì)算。如圖2 所示,第一列PE 接收來自左側(cè)輸入的HH矩陣和來自上方的y向量,經(jīng)過PE 復(fù)數(shù)乘和自累加運(yùn)算,得到y(tǒng)MF向量。輸入矩陣?yán)^續(xù)向右和向下傳遞,用于計(jì)算Gram 矩陣。其中第二列PE 用于計(jì)算Gram 對(duì)角線,后三列PE 用于求共軛和計(jì)算Gram 下三角。最終經(jīng)過LS 輸出可以得到完整Gram 矩陣。
圖2 脈動(dòng)陣列原理圖
使用PEx,y[t]來表示第x行第y列的PE,在第t個(gè)周期的累加結(jié)果。假設(shè)每個(gè)PE的執(zhí)行周期相等,則第一列輸出表示為:
第二列Gram 對(duì)角線輸出表示為:
下三角元素輸出表示為:
該架構(gòu)很好地解決了傳統(tǒng)脈動(dòng)陣列處理MIMO 算法數(shù)據(jù)復(fù)用率低的問題,提升了硬件效率。
系統(tǒng)架構(gòu)如圖3 所示,由全局控制器、片上存儲(chǔ)以及四個(gè)PEA(Processing Elements Array,PEA)組成。其中PEA 采用異構(gòu)的結(jié)構(gòu),基本單元為用于計(jì)算的PE(Processing Elements,PE)和用于訪存的LS(Load Store,LS),通過Router(路由)形成互聯(lián)網(wǎng)絡(luò)。
圖3 系統(tǒng)架構(gòu)圖
傳統(tǒng)的CGRA 在計(jì)算一個(gè)復(fù)數(shù)乘法操作時(shí),至少使用6 個(gè)PE[8],每個(gè)PE 包括一個(gè)乘法器和一個(gè)通用ALU,并且需要大量互連開銷。而本文設(shè)計(jì)的支持復(fù)數(shù)計(jì)算的PE 可以降低一半以上的硬件開銷。
如圖4(a)為本文設(shè)計(jì)的PE 單元,采用四級(jí)流水結(jié)構(gòu)。第一級(jí)為輸入寄存器單元,用于接收輸入數(shù)據(jù)和立即數(shù)配置字,并監(jiān)測(cè)操作數(shù)是否到齊,產(chǎn)生反饋信號(hào)。第二級(jí)為乘法單元,支持兩輸入乘法和自相乘兩種模式。第三級(jí)由支持16 種操作模式的主ALU 和精簡(jiǎn)化的副ALU 組成。最后一級(jí)為累加單元和用于定點(diǎn)數(shù)處理的移位單元。
圖4(b)即為累加單元,為了支持多種類型脈動(dòng)陣列累加操作,該設(shè)計(jì)創(chuàng)新性的支持三種累加模式:乘累加(a×b+c)、自累加(∑(a×b)) 和立即數(shù)累加(a×b+imm),自累加模式為研究重點(diǎn)。圖中config(配置)信號(hào)用來控制累加模式,并決定自累加的初值是來自In2 輸入還是可配置的立即數(shù)。利用valid 控制信號(hào)以及異或門邏輯來檢測(cè)第一個(gè)到達(dá)的數(shù)據(jù),并開始執(zhí)行自累加運(yùn)算。如果數(shù)據(jù)流發(fā)生中斷,有非valid數(shù)據(jù)到來時(shí),右側(cè)選擇器電路可以控制輸出數(shù)據(jù)保持不變,避免重復(fù)累加。由此實(shí)現(xiàn)了數(shù)據(jù)流控制的自累加單元。該可重構(gòu)PE 單元整體利用1.3 小節(jié)提出的基于反饋機(jī)制的數(shù)據(jù)流控制方式,實(shí)現(xiàn)了可支持包括實(shí)數(shù)和復(fù)數(shù)在內(nèi)的32 種操作模式。在不損失靈活性的前提下有效降低了硬件開銷。
圖4 適用于大規(guī)模MIMO的通用PE單元
為了實(shí)現(xiàn)數(shù)據(jù)傳遞,每個(gè)PE 單元都有一個(gè)與之互連的Router 單元,以此進(jìn)行不同PE 之間以及PE 與LS 之間的數(shù)據(jù)傳遞。如圖5 為本文提出的Router 單元結(jié)構(gòu),支持與N、E、S、W 四個(gè)方向的Router 以及多個(gè)LS 的互連,所有數(shù)據(jù)均為雙向傳遞。如圖5-b,每個(gè)傳輸方向都由data 和fb 兩個(gè)基本模塊組成,即每個(gè)數(shù)據(jù)流都有對(duì)應(yīng)的fb 信號(hào)作為控制,由此實(shí)現(xiàn)數(shù)據(jù)流驅(qū)動(dòng)的高效互連。
圖5 支持雙向數(shù)據(jù)流傳遞的Router單元
傳統(tǒng)的LS 使用通用的PE 進(jìn)行地址計(jì)算[13],由于大量PE 用于地址計(jì)算而不是操作數(shù)計(jì)算,因此硬件利用率較低。為此,本文LS 采用訪存和計(jì)算解耦合的設(shè)計(jì),將地址計(jì)算轉(zhuǎn)移至LS 的專用可編程硬件中進(jìn)行,并結(jié)合大規(guī)模MIMO 算法特性,創(chuàng)新性的設(shè)計(jì)了可跳變的地址生成單元。
如圖6 為L(zhǎng)S 結(jié)構(gòu)。采用數(shù)據(jù)流驅(qū)動(dòng)的fb 信號(hào)控制。控制邏輯接收fb 和valid 信號(hào),并產(chǎn)生對(duì)其他模塊的內(nèi)部控制信號(hào)。預(yù)處理/后處理單元主要用于算法中常見的復(fù)數(shù)求共軛等功能。循環(huán)發(fā)生器包括循環(huán)變量的產(chǎn)生,循環(huán)邊界的比較,循環(huán)變量的累加單元,并且依據(jù)MIMO 算法需求,設(shè)計(jì)支持兩層循環(huán)。存儲(chǔ)交互信號(hào)產(chǎn)生模塊主要用于產(chǎn)生與存儲(chǔ)器交互的讀/寫使能。
圖6 支持地址跳變的可編程LS單元
圖6(b)描述的地址生成單元可抽象為一個(gè)可編程的函數(shù)模塊,根據(jù)循環(huán)變量i、j以及系數(shù)a、b、c得到對(duì)應(yīng)的地址輸出:ai+bj+c。地址跳變即根據(jù)算法需要自動(dòng)改變地址系數(shù)。例如,圖2 中描述的求Gram 矩陣只計(jì)算了下三角部分,在輸出時(shí)經(jīng)過LS 的后處理單元生成共軛數(shù)據(jù),利用圖6(c)的I/O 單元中兩個(gè)FBU分別存儲(chǔ)原數(shù)據(jù)和經(jīng)過后處理的數(shù)據(jù),并提供對(duì)應(yīng)的valid 信號(hào)。地址生成單元即可在共軛數(shù)據(jù)有效時(shí),將訪存地址跳變?yōu)楣曹棓?shù)據(jù)對(duì)應(yīng)的地址,當(dāng)原下三角數(shù)據(jù)有效時(shí)再跳變回來,由此實(shí)現(xiàn)自動(dòng)化的地址控制,減少訪存,提高數(shù)據(jù)復(fù)用。該結(jié)構(gòu)通過可編程的方式,大大提升了LS 的靈活性。
為了驗(yàn)證結(jié)果,本文在40nm CMOS 工藝上進(jìn)行了設(shè)計(jì),并利用1.1 小節(jié)針對(duì)大規(guī)模MIMO 算法的統(tǒng)計(jì)結(jié)果,選取了該領(lǐng)域典型算法的核心算子進(jìn)行功能映射。其中PE 利用率定義為:
Nop為算法總的計(jì)算量,II為啟動(dòng)間隔,NPE為陣列的PE 數(shù)量。
(1)預(yù)處理Gram 矩陣和yMF向量驗(yàn)證結(jié)果
實(shí)驗(yàn)中僅使用一個(gè)PEA,采用1.3 小節(jié)中脈動(dòng)陣列的方式進(jìn)行映射,表2 中總結(jié)了相應(yīng)的執(zhí)行結(jié)果??梢钥闯?,該架構(gòu)很好地支持了多種規(guī)模的MIMO 系統(tǒng),并且能夠保持82%以上的PE 利用率,具有較高的靈活性和硬件效率。
表2 不同規(guī)模MIMO 系統(tǒng)預(yù)處理Gram 矩陣和yMF 向量驗(yàn)證結(jié)果
(1)矩陣向量乘法驗(yàn)證結(jié)果
表3 為大規(guī)模MIMO 核心算子驗(yàn)證結(jié)果??梢钥闯?,在相應(yīng)輸入規(guī)模下,矩陣乘矩陣和矩陣乘向量都能夠達(dá)到100%的PE 利用率,而向量?jī)?nèi)積操作的PE 利用率達(dá)到60%。表4 為本設(shè)計(jì)與其他研究的對(duì)比結(jié)果,可以看出本文實(shí)現(xiàn)了最高10.22 倍的吞吐性能提升。
表3 大規(guī)模MIMO 核心算子驗(yàn)證結(jié)果
表4 大規(guī)模MIMO 核心算子對(duì)比結(jié)果
本文在設(shè)計(jì)的CGRA 架構(gòu)上,使用4 塊PEA,驗(yàn)證了迭代次數(shù)為2 的WeJi 算法[1](加權(quán)Jacobi)。與其他大規(guī)模MIMO 的可重構(gòu)硬件實(shí)現(xiàn)結(jié)果對(duì)比見表5。
表5 不同大規(guī)模MIMO 的可重構(gòu)硬件實(shí)現(xiàn)結(jié)果性能對(duì)比
為了能夠公平地對(duì)比FPGA 實(shí)現(xiàn)結(jié)果,這里將不同可重構(gòu)硬件資源開銷歸一化到邏輯門的數(shù)量。同時(shí)為了公平地與其他CMOS 工藝比較,對(duì)不同工藝下的設(shè)計(jì)進(jìn)行了如下歸一化[7]:
式中,Tech.代表工藝參數(shù)。
對(duì)比與已有可重構(gòu)硬件實(shí)現(xiàn)的歸一化結(jié)果,本文提出的基于數(shù)據(jù)流的CGRA 設(shè)計(jì)在面積效率方面提升了32%~82%,同時(shí)取得了2.81 倍的能量效率提升。這主要是因?yàn)檫@些可重構(gòu)硬件設(shè)計(jì)采用細(xì)粒度的控制結(jié)構(gòu),和本文提出的CGRA 架構(gòu)相比需要更多的配置信息來實(shí)現(xiàn)復(fù)雜的電路控制。而本文設(shè)計(jì)的CGRA 采用基于反饋機(jī)制的數(shù)據(jù)流驅(qū)動(dòng)方式,這大大簡(jiǎn)化了控制邏輯并精簡(jiǎn)了PE、LS 單元的硬件結(jié)構(gòu)。同時(shí)利用精簡(jiǎn)高效的互連方式和路由結(jié)構(gòu),降低了互連開銷,因此實(shí)現(xiàn)了更高的面積效率和能量效率。
本文提出了一種數(shù)據(jù)流提驅(qū)動(dòng)的CGRA 架構(gòu)來優(yōu)化面積效率和能效。通過基于反饋機(jī)制的數(shù)據(jù)流通信技術(shù),極大降低了控制成本,減少了面積開銷。同時(shí),本文對(duì)提出的面向大規(guī)模MIMO 算法的CGRA 架構(gòu)進(jìn)行了設(shè)計(jì)實(shí)現(xiàn),并對(duì)計(jì)算單元、訪存單元和路由單元分別進(jìn)行了優(yōu)化設(shè)計(jì)。硬件實(shí)現(xiàn)的結(jié)果顯示,與當(dāng)前MI?MO 領(lǐng)域的可重構(gòu)硬件設(shè)計(jì)相比,本文的性能取得了32%~82%的面積效率提升,同時(shí)取得了2.81 倍的能量效率提升。今后研究將進(jìn)一步優(yōu)化電路,提高系統(tǒng)頻率,同時(shí)擴(kuò)展算法的驗(yàn)證。