劉小明 潘勇先
【摘 要】本文介紹了一種可重構(gòu)數(shù)字信號處理器架構(gòu)。該處理器基于VLIW+SIMD結(jié)構(gòu),以粗粒度的運算宏作為可重構(gòu)部件,采用靜態(tài)重構(gòu)的方式實現(xiàn)架構(gòu)的重組,可實現(xiàn)1~4個邏輯核,每個邏輯核可集成1~16個運算宏。
【關(guān)鍵詞】數(shù)字信號處理器;48bit指令集;邏輯核
中圖分類號: TP332 文獻標(biāo)識碼: A 文章編號: 2095-2457(2018)16-0032-003
DOI:10.19694/j.cnki.issn2095-2457.2018.16.014
【Abstract】This paper introduces a reconfigurable dsp architecture.This processor is base on VLIW+SIMD structure.A coarse-grained operation macro is used as reconfigurable part.The processor is reorganized in a static way ,it can reconstitute 1~4 logical cores,every core can have 1~16 operation macros.
【Key words】Digital Signal Processor(DSP);48bit Instruction Set;Logical Core
0 引言
現(xiàn)代信號處理應(yīng)用中,任務(wù)級并行與數(shù)據(jù)級并行兩種處理模式兩極分化的情況日益嚴(yán)重。工程實現(xiàn)中,針對不同應(yīng)用領(lǐng)域的要求,需構(gòu)建不同的處理器硬件平臺。面向任務(wù)級并行,需構(gòu)建多核處理器平臺,適應(yīng)多任務(wù)并發(fā)的要求;而數(shù)據(jù)級并行,則需構(gòu)建單核處理器平臺,面向單任務(wù)應(yīng)用,選擇處理能力強的單核處理器搭建系統(tǒng)。具有可重構(gòu)架構(gòu)的處理器可針對不同應(yīng)用需求,進行處理器結(jié)構(gòu)重組,力求解決不同應(yīng)用特征下,計算平臺通用化的問題,是國內(nèi)外研究熱點。
1 處理器架構(gòu)
1.1 重構(gòu)方案選擇
可重構(gòu)處理器的重構(gòu)方式較FPGA存在顯著的差異??芍貥?gòu)處理器的重構(gòu)部件的顆粒度普遍較粗,多為處理器核級或運算部件級[1]。
相較于處理器核重構(gòu),采用運算部件級重構(gòu)亦存在以下不足:
(1)用戶程序移植難度較大,即放在可重構(gòu)邏輯上實現(xiàn)的函數(shù)在移植過程中因處理器架構(gòu)的差異,需要重新設(shè)計;
(2)類似FPGA開發(fā),需要根據(jù)每種應(yīng)用重新設(shè)計配置信息,開發(fā)效率沒有利用編程方式實現(xiàn)效率高;
(3)針對該種結(jié)構(gòu)驗證所有信號處理應(yīng)用的難度較大,若不充分驗證可能導(dǎo)致后續(xù)實際應(yīng)用過程中,無法滿足部分特殊運算需求的情況出現(xiàn);
(4)運算宏(運算部件的組合)為實現(xiàn)可重構(gòu)功能添加了大量的連線及選擇器,嚴(yán)重影響主頻的提升。
基于上述原因本文提出的可重構(gòu)處理器架構(gòu),放棄基于運算部件的重構(gòu)方式,加大重構(gòu)部件的粒度,使用靜態(tài)可重構(gòu)的方式實現(xiàn)甚顆粒度的邏輯核可重構(gòu),這也是目前國內(nèi)外可重構(gòu)處理器廣泛采取的實現(xiàn)方案之一。
本文以一組運算及存儲部件構(gòu)建的運算宏為最小重構(gòu)顆粒,采用靜態(tài)重構(gòu)方式,完成處理器內(nèi)部架構(gòu)重組,適用不用應(yīng)用場景需求。該處理器架構(gòu)內(nèi)部包含4條獨立的指令流水、16個運算宏及相應(yīng)外設(shè)。通過重構(gòu)可將處理器配置1-4個處理器邏輯核,每個處理器邏輯核包含1-16個運算宏。處理器采用VLIW+SIMD結(jié)構(gòu),每條指令總線一次可發(fā)射8條48bit指令字,單指令最多可驅(qū)動16運算宏參與計算。
1.2 具體實施方式
(1)邏輯核重構(gòu)
處理器主要包含兩種工作模式:初始和重組模式:
初始模式:該模式下的處理器形成一個邏輯核,包含16個運算宏。
重組模式:該模式可將運算宏及指令流水進行重組,構(gòu)建不同規(guī)模的邏輯核。在此條件下,處理器內(nèi)部根據(jù)需要可以是一個核,也可以是2個核、3個核或者4個核,每一個核內(nèi)部的運算單元宏的個數(shù)可以不一樣,內(nèi)部不使用的指令流水和運算宏均可設(shè)置成低功耗模式。
其中,運算宏作為最小重構(gòu)顆粒,每個運算宏包含私有的數(shù)據(jù)存儲器、分配譯碼邏輯、運算部件及DMA控制器。運算部件由1個本地通用寄存器組、8個算數(shù)邏輯單元(ALU)、4個乘法器、2個移位器和1個超算器(SPU)構(gòu)成,支持16bit、32bit、單精度和雙精度浮點格式數(shù)據(jù)計算。通用寄存器作為數(shù)據(jù)暫存設(shè)備負(fù)責(zé)運算部件與宏內(nèi)私有數(shù)據(jù)存儲器之間的數(shù)據(jù)交互。運算宏內(nèi)部包含3條獨立的64bit數(shù)據(jù)總線,最多可同時實現(xiàn)2寫1讀或2讀1寫操作。宏內(nèi)數(shù)據(jù)存儲空間劃分為6個block。如圖2所示。
重構(gòu)流程如下:
(1)增設(shè)一重構(gòu)配置模塊(core_fusion_config),將其作為共享外設(shè)掛接在核內(nèi)總線上。該重構(gòu)配置模塊包含一組配置寄存器,用于設(shè)置重構(gòu)信息,如指令流水的選擇寄存器。
(2)上電復(fù)位后,首先通過訪存指令設(shè)置重構(gòu)配置模塊,待所有配置寄存器設(shè)置完成后,通過重構(gòu)指令(core_fusion)完成結(jié)構(gòu)重組。
(3)上電復(fù)位后,處理器進入用戶代碼的加載過程,此時處理器處于初始工作模式,等同一個核加載過程;
(4)與引導(dǎo)程序的末尾執(zhí)行處理器重構(gòu)。在完成core_fusion指令后才開始用戶代碼的執(zhí)行,運行于不同流水線上的用戶程序。
邏輯核取指:
處理器指令總線采用流水方式,共15級,劃分為前段和后段兩個部分,前段7級流水,后段8級。其中,指令總線前段為邏輯核的公共部分,每個邏輯核1條共4條;指令總線后段處于每個運算宏的內(nèi)部,為每個運算宏私有,共16條。指令總線的前段負(fù)責(zé)從指令cache中獲取指令包,并從指令包中提取可同時執(zhí)行的指令執(zhí)行行,發(fā)射給指令總線后段處理,同時根據(jù)指令總線后端反饋的同步控制信息,控制指令總線前段的執(zhí)行。指令總線后端根據(jù)重構(gòu)配置信息,判斷本運算宏歸屬于哪個邏輯核,并選取對應(yīng)的指令總線前端執(zhí)行用戶程序。
處理器的數(shù)據(jù)及程序采用統(tǒng)一共享的存儲空間,且數(shù)據(jù)及程序均按照32bit的位寬進行存儲,采用字節(jié)編址。處理器采用48bit指令集,48bit可以容納更多的指令以及可重構(gòu)操作信息,邏輯核每個時鐘周期最多可接收8條48bit單字指令。由于48非2n,為保證一次取指長度不低于8*48bit(即12*32bit)且保證cache設(shè)計簡單,實際取指過程中,程序控制器從私有一級指令Cache中按照16個32bit對齊的方式進行取指,并將其放入流水線前段緩存。流水線前段會根據(jù)指令的行結(jié)束標(biāo)志將完整的執(zhí)行行發(fā)射到邏輯核當(dāng)中。若程序控制器一次取指過程無法獲取完整的執(zhí)行行就需要與下一個取指行完成執(zhí)行行的拼接。為簡化指令的拼接邏輯,所以子程序及中斷服務(wù)程序的入口地址均需為16個32bit字對齊。
同步:
可重構(gòu)架構(gòu)面臨的最重要問題之一就是分屬同一邏輯核運算宏之間的操作同步。引發(fā)同步問題的主要情況包括:
●單宏內(nèi)部數(shù)據(jù)相關(guān)所引發(fā)的多宏間同步問題;
●程序控制引發(fā)的多宏同步;
通過處理器架構(gòu)和編程約束兩個方面解決同步控制問題。編程約束方面,處理器的數(shù)據(jù)相關(guān)由軟件檢測處理。當(dāng)使用匯編語言編程時,匯編工具鏈一旦檢測到數(shù)據(jù)相關(guān)會通過編譯警告的方式提醒編程人員,編程人員可以有選擇性的進行修改,若使用C等高級語言編程,編譯器會自行解除相關(guān)。
在處理器架構(gòu)方面,將控制信號局部化,盡量避免全局性控制信號的產(chǎn)生。將分配譯碼邏輯分散到每個運算宏的內(nèi)部,同步操作拆分成運算宏內(nèi)部及指令流水的前段兩類。當(dāng)出現(xiàn)流水線清除及停頓等同步操作時,流水線前段及運算宏會根據(jù)各自的控制寄存器分別處理。
程序控制類寄存器(用于控制指令流水的阻塞、清除等同步操作)可劃分成運算宏私有、公有及流水線同步控制三類。運算宏內(nèi)的私有寄存器根據(jù)本運算宏的信息進行設(shè)置,運算宏內(nèi)的公用寄存器及4條流水線的同步控制器會根據(jù)所有運算宏的私有寄存器進行更新。運算宏及流水線前段的同步操作分別受控于宏內(nèi)公有及流水線同步控制寄存器。同步控制信息的局部化,避免出現(xiàn)過多的全局控制,影響芯片時序,同時,便于重構(gòu)任意數(shù)目運算宏到邏輯核當(dāng)中。
(2)指令集
匯編指令主要由謂詞信息、運算宏信息及操作描述信息組成,機器指令如圖5所示。任意指令均可根據(jù)運算宏內(nèi)一組16bit寄存器-P[15:0]中某一位(由機器碼中的第35~32位指定)選擇是否真正執(zhí)行。每個邏輯核的規(guī)??筛鶕?jù)實際需求按照運算宏進行任意重組,每個邏輯核可包含運算宏的數(shù)目由1~16個不等,每條指令驅(qū)動的運算宏由匯編指令中的運算宏信息指定,所有指令驅(qū)動的運算宏在邏輯序號上必須連續(xù),圖5中的C、D表示運算宏起止序號。
每個運算宏內(nèi)的指令運行只受本運算宏內(nèi)的P[15:0]控制。16bit控制寄存器的第0位-P0為一特殊寄存器,程序員只能讀,不能賦值,上電復(fù)位后該位置“1”。所用運算宏在程序員未指定謂詞寄存器的情況下均受控于P0。例如:[P1]M0_1R3=R2+R1 表示運算宏0及宏1內(nèi)執(zhí)行的32bit加法操作分別受控于各自宏內(nèi)P1寄存器;而M0_1R3=R2+R1 則表示運算宏0及宏1內(nèi)執(zhí)行的32bit加法操作分別受控于各自宏內(nèi)P0寄存器。處理器可通過參數(shù),選擇謂詞寄存器為‘1執(zhí)行,還是為‘0執(zhí)行。如:[P1] M0_1R3=R2+R1表示P1為‘1執(zhí)行該加法指令,[!P1] M0_1R3=R2+R1表示P1為‘0執(zhí)行加法指令。當(dāng)匯編指令中省略謂詞寄存器的描述信息時,表示當(dāng)P0為‘1時執(zhí)行該指令,即M0_1R3=R2+R1與[P0]M0_1R3=R2+R1等價。當(dāng)匯編指令中省略運算宏的描述信息時,表示只有邏輯標(biāo)號為“0”的運算宏執(zhí)行該指令,即[P2]R3=R2+R1與[P2]M0_0R3=R2+R1等價。
3 測試及驗證
為了體現(xiàn)處理器的可重構(gòu)的特點,基于cadence公司pxp硬件加速器構(gòu)建仿真平臺[3],選擇雷達信號處理PD模式作為典型用例加以實現(xiàn),PD模式是現(xiàn)代雷達中較為常用的一種處理模式其利用多普勒效應(yīng)檢測目標(biāo)信息,主要包括脈沖壓縮、濾波處理和恒虛警處理三個部分。算法實現(xiàn)過程中,由處理器的1核完成時域脈壓處理,完成波束形成,2核完成波束的橫向濾波器組處理,由3核對濾波運算的結(jié)果進行對數(shù)運算,最后由4核完成恒虛警處理,檢測出目標(biāo)點,算法可充分檢驗處理器的多任務(wù)及并行處理能力,經(jīng)典型應(yīng)用檢驗,處理器功能滿足應(yīng)用要求。
脈沖壓縮可充分利用發(fā)射機平均功率。脈沖壓縮對接收信號進行匹配濾波處理,濾波器具有時延-頻率特性,延遲時間隨頻率變化,實現(xiàn)脈沖內(nèi)各頻率分量在時域被積疊,即壓縮,形成幅度增大、寬度變窄的脈沖信號。
本系統(tǒng)濾波運算采用FIR濾波器。濾波器采用了16個脈沖。在脈沖重復(fù)頻率內(nèi),安排16個窄帶濾波器組覆蓋,其中每個窄帶濾波器在零頻處設(shè)置零點,這樣提高地物雜波的抑制能力。幅頻特性如圖8所示:
16個脈沖相參積累,提高了信噪比。雜波和目標(biāo)信號將處于不同窄帶內(nèi),在快門限檢測中進行分頻道處理,由于雜波是體雜波,幅度起伏不大,快門限可以有效剔除雜波虛警,而目標(biāo)為點目標(biāo),滿足門限檢測要求就能提取。由于地雜波的幅度在距離上起伏較大,且雜波強度一般很大,目標(biāo)在這個頻道內(nèi)不易提取,處理時將零頻道剔除(必要時,根據(jù)需要考慮剔除相鄰頻道數(shù)據(jù))。我們將從剩余頻道中對數(shù)據(jù)分析,提取目標(biāo)。
為控制雜波抑制濾波器輸出的雜波剩余引起的虛警我們采用了單元平均選大恒虛警處理。
4 小節(jié)
DSP性能的持續(xù)提升僅靠單核架構(gòu)是無法實現(xiàn)的,多核是當(dāng)前實現(xiàn)其性能提升的最主要手段,可重構(gòu)技術(shù)是充分發(fā)揮多核效率的重要途徑。國內(nèi)在高性能可重構(gòu)多核DSP的研究方面,相比于發(fā)達國家和先進研究機構(gòu)起步要晚,在關(guān)鍵技術(shù)與制造能力方面存在一定差距,在系列化DSP IP核積累、多核體系構(gòu)架研究以及指令集設(shè)計等方面仍有較大的不足。如何增加可重構(gòu)多核架構(gòu)的效能,提升相關(guān)配套軟件環(huán)境的實用性,是未來研究重點。
【參考文獻】
[1]王延升.粗粒度動態(tài)可重構(gòu)處理器中的高能效關(guān)鍵配置技術(shù)研究[D].清華大學(xué),2014:1-10.
[2]許牧.可重構(gòu)眾核流處理器體系結(jié)構(gòu)關(guān)鍵技術(shù)研究[D].中國科學(xué)技術(shù)大學(xué),2012:13-37.
[3]胡海生,賈一凡.基于PalladiumXP硬件加速器的JTAG UVM系統(tǒng)設(shè)計.中國集成電路,2015(193):31-34.