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