基于算法的DSP硬件結(jié)構(gòu)分析
在當前信息化、數(shù)字化進程中,信號作為信息的傳輸和處理對象,逐漸由模擬信號變成數(shù)字信號。信息化的基礎是數(shù)字化,而數(shù)字化的核心技術(shù)之一就是數(shù)字信號處理。數(shù)字信號處理技術(shù)已成為人們?nèi)找骊P(guān)注的并得到迅速發(fā)展的前沿技術(shù)。DSP作為一種特別適合于進行數(shù)字信號處理運算的微處理器,憑借其獨特的硬件結(jié)構(gòu)和出色的數(shù)字信號處理能力,廣泛應用于通訊、語言識別、圖像處理、自動控制等領(lǐng)域。
2 DSP算法的主要特點及其硬件要求
數(shù)字信號處理是指將模擬信號通過采樣進行數(shù)字化后的信號進行分析、處理、它側(cè)重于理論、算法及軟件實現(xiàn)。數(shù)字信號處理算法具有如下一些主要的特點:
①信號處理算法運算量大,要求速度快。不論是一維的語言信號,還是二維的圖像信號,一般算法的運算量都很大,且算法的實現(xiàn)都必須實時。
②信號處理算法通常需要執(zhí)行大量的乘累加運算。比如FIR濾波算法主要執(zhí)行的是一個點積運算,也就是以乘、加為主的運算。
③信號處理算法常具有某些特定模式。比較典型的數(shù)字濾波器中的連續(xù)推移位。
④信號處理算法大部分處理時間花在執(zhí)行相對小循環(huán)的操作上。
⑤信號處理要求專門的接口。一個非常重要的接口是把模擬信號與數(shù)字信號相互轉(zhuǎn)換的ADC和DAC,另外大量的數(shù)據(jù)交換需要有高速的數(shù)據(jù)吞吐能力。
從一開始,DSP的結(jié)構(gòu)就是針對DSP算法模型進行構(gòu)造的,幾乎所有的DSP都包含有DSP算法的特征。因此,數(shù)字信號處理的上述特點要求DSP必須是專門設計的,典型DSP的設計滿足數(shù)字信號處理的這樣一些要求:
①單周期快速運算,允許任意計算次序。
②單周期內(nèi)能取兩個以上操作數(shù),保證快速的乘累加運算(MAC)。
③能產(chǎn)生信號處理算法需要的特殊尋址,如循環(huán)尋址和位翻轉(zhuǎn)尋址。
④有相應的硬件循環(huán)緩沖區(qū),能執(zhí)行零開銷的循環(huán)和轉(zhuǎn)移操作。
⑤具有串口、DMA控制器、定時器等豐富的外設資源。
3 DSP的基本結(jié)構(gòu)組成
3.1 多總線結(jié)構(gòu)
微處理器內(nèi)一般有兩種基本總線結(jié)構(gòu):馮·諾曼結(jié)構(gòu)和哈佛結(jié)構(gòu)。這兩種總線結(jié)構(gòu)的結(jié)構(gòu)框圖如圖1所示。馮·諾曼結(jié)構(gòu)取指令、取數(shù)據(jù)都是通過同一總線完成。因此必須分時進行,在高速運算時,往往在傳輸通道上出現(xiàn)瓶頸效應。而DSP內(nèi)部采用的是哈佛結(jié)構(gòu),它在片內(nèi)至少有四套總線:程序的數(shù)據(jù)總線、程序的地址總線、數(shù)據(jù)的數(shù)據(jù)總線和數(shù)據(jù)的地址總線。這種分離的程序總線和數(shù)據(jù)總線,可允許同時獲取來自程序存儲器的指令字和來自數(shù)據(jù)存儲器的操作數(shù),互不干擾。有的DSP片內(nèi)還包括有其他總線,如DMA總線等,可在單周期內(nèi)完成更多的工作。
3.2 流水線
與哈佛總線結(jié)構(gòu)相關(guān), DSP廣泛采用流水線以減少指令執(zhí)行時間,從而增加了處理器的處理能力。要執(zhí)行一條DSP指令,需要通過取指、譯碼、取操作數(shù)、執(zhí)行等幾個階段,DSP的流水線結(jié)構(gòu)是指它的這幾個階段在程序執(zhí)行過程中是重疊進行的,即在對本條指令取指的同時,前面的三條指令已依次完成譯碼、取操作數(shù)、執(zhí)行的操作。正是利用這種流水線機制,保證DSP的乘法、加法以及乘累加可以在單周期內(nèi)完成,這對提高DSP的運算速度具有重要意義,特別是當設計的算法需要連續(xù)的乘累加運算時。
3.3 硬件乘法器
專用的硬件乘法器是DSP的特征之一,硬件乘法器的功能是在單周期內(nèi)完成一次乘法運算。 DSP內(nèi)還增加了累加器寄存器來處理多個乘積的和,而且該寄存器通常比其他寄存器寬,這樣保證乘累加運算結(jié)果不至于發(fā)生溢出。
3.4 多處理單元
DSP內(nèi)部一般都包括多個處理單元,如ALU、乘法器、輔助算術(shù)單元等。它們都可在單獨的一個指令周期內(nèi)執(zhí)行完計算和操作任務,而且往往同時完成。這種結(jié)構(gòu)特別適合于濾波器的設計,如FIR和IIR。這種多處理單元結(jié)構(gòu)還表現(xiàn)為在將一些特殊的算法作成硬件,如典型的FFT的位翻轉(zhuǎn)尋址和流水FIR濾波算法的循環(huán)尋址等。而且大部分DSP具有零消耗循環(huán)控制的專門硬件,使得處理器不用花時間測試循環(huán)計數(shù)器的值就能執(zhí)行一組指令的循環(huán),硬件完成循環(huán)跳轉(zhuǎn)和循環(huán)計數(shù)器的衰減。
3.5 外圍設備
DSP片內(nèi)通常具有DMA控制器、串行口、定時器等外設,所以用戶通常只需要外加很少的器件就可以構(gòu)成自己的DSP系統(tǒng)。DMA控制器可以在不干擾CPU操作的前提下,由其專用的數(shù)據(jù)存取通道獨立完成接口到片內(nèi)存儲器之間的數(shù)據(jù)傳輸,從而形成片內(nèi)的高速數(shù)據(jù)通道。大多數(shù)DSP還支持IEEE1149.1標準,用戶通過JTAG端口可對DSP進行在線
實時仿真。
4 當前主流DSP的體系結(jié)構(gòu)
近年來,DSP不斷推陳出新,其硬件結(jié)構(gòu)也有了很大的改進和提高。DSP體系結(jié)構(gòu)的革新在很大程度上受到應用需求的影響,其指令集的設計是面向存儲器和數(shù)字信號處理算法來進行性能優(yōu)化的。當前高性能DSP結(jié)構(gòu)的主在特點就是采用了各種并行處理技術(shù),它可由兩個途徑實現(xiàn):一種途徑是基于VLIW、類RISC指令集等技術(shù)來增加單時鐘周期并發(fā)的指令數(shù);另一種途徑是通過SIMD、增大總線字長或增加指令字的長度等技術(shù)來增加單指令周期并行執(zhí)行的處理單元個數(shù)。
4.1 VLIW結(jié)構(gòu)及其優(yōu)缺點
TI公司TMS320C6X系列DSP就是采用了VLIW的體系結(jié)構(gòu),其結(jié)構(gòu)如圖2所示。在VLIW處理器的硬件上,各功能單元共用大型寄存器堆,由功能單元同時執(zhí)行的各種操作是由VLIW的長指令來同步,它把長指令中不同字段的操作碼分送給不同的功能單元。相對于傳統(tǒng)型DSP,VLIW處理器使用簡單的指令集,一條指令只完成一個操作。這個處理器將簡單指令并行地發(fā)射出去,并同時執(zhí)行,有這樣的多條指令構(gòu)成一個超長指令字。由于使用了簡單指令集后,簡化了譯碼和執(zhí)行操作。
VLIW技術(shù)極大地提高DSP的性能,但它也有缺點。由于它的指令字長增加了,所以它較大地增加了程序存儲器的占用空間,使得DSP的成本隨之增加。同時為了支持多個并行指令的執(zhí)行,這種結(jié)構(gòu)的DSP要求有龐大的調(diào)整寄存器堆。
4.2 SIMD結(jié)構(gòu)及其優(yōu)缺點
SIMD處理器把輸入的長數(shù)據(jù)分解為多個較短的數(shù)據(jù),然后由單指令并行地操作。它在目前一些高性能的DSP得到了應用,如AD公司的ADSP21160系列DSP,如圖3所示。該結(jié)構(gòu)內(nèi)有兩套包括ALU、桶形移位器、乘法器和寄存器堆等功能部件的運算單元,可在單周期內(nèi)對不同的操作數(shù)執(zhí)行兩個及以上的乘法操作。SIMD使總線、數(shù)據(jù)通道等資源充分
利用,并無需改變信號處理的基本結(jié)構(gòu)。但是,這種結(jié)構(gòu)只有處理并行算法時才是高效的。對于那種算法中的結(jié)果作為下一操作輸入的串行算法,SIMD處理器通常不使用。
5 DSP結(jié)構(gòu)改進的思考
過去的DSP結(jié)構(gòu)設計主要是面向計算密集型的應用,而對控制密集型支持得不夠。而現(xiàn)實應用中很多場合需要信號處理和精確控制的有效結(jié)合,如數(shù)字蜂窩電話,它要有監(jiān)控和語言音處理的工作?,F(xiàn)代的DSP將采用DSP/MCU的混合結(jié)構(gòu),在保證計算能力優(yōu)先的前提下,通過快速的現(xiàn)場切換、多執(zhí)行部件并行執(zhí)行等方式,加強控制類操作的處理能力。將MCU核集成到DSP核中,或者從整體上對DSP進行重新設計,使之兼有DSP和MCU的功能。
另外,為解決速度、功耗、可編程之間的矛盾,我們提出了一種新型的計算方式,它結(jié)合了現(xiàn)有微處理器和DSP的時間計算方式以及ASIC、FPGA解決方案的空間計算方式。這種可重構(gòu)DSP處理器的關(guān)鍵是它能同時進行時間和空間計算。它由一個計算元件互相連接的二維陣列構(gòu)成,每個陣列都有各自的邏輯單元和本地寄存器。連接這些計算元件的可編程連線借以對陣列的數(shù)據(jù)流架構(gòu)動態(tài)重構(gòu),從而可根據(jù)運行的具體任務而對其進行優(yōu)化。由于可重構(gòu)計算使開發(fā)人員可對其軟硬件加以控制,因此這些編譯器將在需要運行的DSP的系統(tǒng)中實現(xiàn)真正的軟硬件協(xié)同設計。