電子設(shè)備應(yīng)用越來越多地涉及信號(hào)處理。家庭影院、計(jì)算機(jī)圖形學(xué)、醫(yī)學(xué)成像和電信都依賴于信號(hào)處理技術(shù)。信號(hào)處理需要在復(fù)雜但重復(fù)的算法中進(jìn)行快速數(shù)學(xué)運(yùn)算。許多應(yīng)用需要實(shí)時(shí)計(jì)算:即,信號(hào)是時(shí)間的連續(xù)函數(shù),必須對(duì)其進(jìn)行采樣并將其轉(zhuǎn)換為數(shù)字,以進(jìn)行數(shù)值處理。因此,處理器必須執(zhí)行算法,在樣本到達(dá)時(shí)對(duì)樣本執(zhí)行離散計(jì)算。
數(shù)字信號(hào)處理器(DSP)的架構(gòu)經(jīng)過優(yōu)化,可處理此類算法。一個(gè)好的信號(hào)處理引擎的特點(diǎn)包括:快速、靈活的算術(shù)計(jì)算單元(例如,乘法器、累加器、桶形移位器);進(jìn)出計(jì)算單元的不受約束的數(shù)據(jù)流;擴(kuò)展計(jì)算單元的精度和動(dòng)態(tài)范圍(以避免溢出并最大限度地減少舍入誤差);雙地址發(fā)生器(用于同時(shí)處理二元運(yùn)算的兩個(gè)輸入);高效的程序排序(包括有效處理循環(huán)和中斷的能力);和易于編程。
DSP與精簡(jiǎn)指令集計(jì)算機(jī)(RISC)具有其中一些共同特征。此外,兩者都是圍繞某些核心指令構(gòu)建的,使它們能夠以非常高的指令速率運(yùn)行;兩者都避開了內(nèi)部微碼。然而,它們是根本不同的“動(dòng)物”。RISC和DSP之間的差異在處理器的
計(jì)算單位
數(shù)據(jù)地址生成器
內(nèi)存架構(gòu)
中斷功能
循環(huán)硬件
條件指令
界面特點(diǎn)
DSP 屬于兩個(gè)基本類:定點(diǎn),一種基于 16 位整數(shù)數(shù)據(jù)類型的(通常)16 位架構(gòu),以及浮點(diǎn),通常具有 32 位架構(gòu),基于同時(shí)具有尾數(shù)和指數(shù)的數(shù)據(jù)類型。
圖1.SHARC 內(nèi)部架構(gòu)。
計(jì)算單元:DSP都包含并行硬件乘法器以支持單周期乘法,其乘法器通常在單個(gè)周期中組合乘法和累加。DSP 具有專用累加器,其寄存器明顯寬于標(biāo)稱字大小,以保持精度,例如 32 位 ADSP-2106x SHARC 系列中的 80 位(圖 1)。硬件可能支持從累加器溢出中恢復(fù),如ADSP-21xx系列。此外,DSP都包含功能齊全的算術(shù)邏輯單元(ALU),與乘法器無關(guān)。
ALU 可能具有特殊功能,例如能夠同時(shí)生成求和和差分以加速快速傅里葉變換 (FFT) 中的內(nèi)核例程,F(xiàn)FT 是一種用于在時(shí)域和頻域之間轉(zhuǎn)換信號(hào)的算法。高級(jí)DSP將在計(jì)算單元中包含飽和邏輯,以防止數(shù)據(jù)溢出。它還可以提供零開銷(即,不需要額外的時(shí)鐘周期)陷阱來中斷算術(shù)異常的例程。
復(fù)雜的DSP還可能包含單周期桶移器(即能夠在一個(gè)時(shí)鐘周期內(nèi)將一個(gè)單詞向左或向右移動(dòng)任意數(shù)量的位),以及用于數(shù)據(jù)縮放,數(shù)據(jù)壓縮/擴(kuò)展或打包/解包和位操作的優(yōu)先級(jí)編碼器。它還可能包括專用硬件,以最大限度地減少快速除法、平方根和超越函數(shù)計(jì)算所需的時(shí)間。具有這些特殊功能的計(jì)算元件在RISC處理器上找不到。
地址生成: 高效的DSP將使其計(jì)算單元至少提供來自兩個(gè)獨(dú)立數(shù)據(jù)地址生成器的數(shù)據(jù)。分接延遲塊和系數(shù)緩沖器是DSP的特征,但在通用計(jì)算中大多是未知的。高效的DSP需要循環(huán)緩沖器硬件來支持緩沖器。循環(huán)緩沖區(qū)指針需要每個(gè)周期更新,而不會(huì)產(chǎn)生開銷。此外,緩沖區(qū)結(jié)束的比較測(cè)試需要一個(gè)無延遲命令來重置緩沖區(qū)結(jié)束處的指針。另一方面,RISC處理器需要為每個(gè)比較測(cè)試提供一個(gè)額外的周期。
內(nèi)存架構(gòu): DSP 通常支持與通用計(jì)算系統(tǒng)不同的系統(tǒng)存儲(chǔ)器架構(gòu)。DSP采用哈佛架構(gòu),允許從兩個(gè)不同的外部存儲(chǔ)器持續(xù)單周期訪問兩個(gè)單詞的數(shù)據(jù)。例如,ADI公司的SHARC DSP具有集成在片內(nèi)的2或4 Mb雙端口SRAM。該內(nèi)存是直接尋址的,而不是像RISC處理器那樣的緩存。對(duì)于CPU來說,這種片上存儲(chǔ)器看起來像一個(gè)獨(dú)特的存儲(chǔ)器,而不僅僅是系統(tǒng)中其他位置的存儲(chǔ)器的高速?gòu)?fù)制品。原因是DSP通常是嵌入式處理器。它們的片上存儲(chǔ)器通常足以容納任務(wù)所需的完整、重復(fù)的DSP程序。每個(gè)內(nèi)存塊都是雙端口,用于內(nèi)核處理器和 I/O 處理器或 DMA 控制器進(jìn)行單周期獨(dú)立訪問(圖 2)。雙端口存儲(chǔ)器和獨(dú)立的片上總線允許在一個(gè)周期內(nèi)從內(nèi)核傳輸兩個(gè)數(shù)據(jù),從I/O傳輸一個(gè)數(shù)據(jù)。
中斷功能: 由于DSP旨在在實(shí)時(shí)系統(tǒng)中運(yùn)行,因此高效、復(fù)雜且可預(yù)測(cè)的中斷處理對(duì)于DSP至關(guān)重要。RISC處理器具有高度流水線的架構(gòu),往往具有緩慢的中斷響應(yīng)時(shí)間和有限的中斷能力。上下文切換應(yīng)該非常快。高級(jí)DSP,如新型ADSP-21csp01和ADI公司的ADSP-2106x浮點(diǎn)系列,支持完整的替代寄存器集,允許單周期上下文切換以支持中斷處理。(寄存器文件窗口不同,因?yàn)樗哪康氖羌铀?a target="_blank">參數(shù)傳遞,而不是保存整個(gè)上下文。
除內(nèi)部中斷外,高級(jí)DSP還將支持至少四個(gè)獨(dú)立的外部中斷。中斷延遲將保持在幾個(gè)周期內(nèi),并且必須是可預(yù)測(cè)的。中斷應(yīng)該是可嵌套的和可優(yōu)先的。此外,應(yīng)該很容易實(shí)時(shí)啟用和禁用特定中斷。
硬件循環(huán):高效環(huán)路對(duì)于數(shù)字信號(hào)處理至關(guān)重要,因?yàn)樾盘?hào)處理算法是重復(fù)的。一個(gè)好的DSP將支持具有專用內(nèi)部硬件的零開銷環(huán)路。也就是說,芯片將監(jiān)控環(huán)路條件和終止,以與所有其他操作并行決定是否將程序計(jì)數(shù)器或分支遞增到環(huán)路頂部,而不會(huì)造成周期時(shí)間損失。另一方面,RISC處理器必須在每個(gè)循環(huán)結(jié)束時(shí)進(jìn)行測(cè)試和分支,每個(gè)循環(huán)和每次通過至少要花費(fèi)一個(gè)額外的周期。嵌套循環(huán)在信號(hào)處理算法中也很常見;DSP 環(huán)路硬件應(yīng)支持至少四級(jí)嵌套環(huán)路的深度。RISC處理器尚未發(fā)展到支持這些基本的信號(hào)處理需求。
條件執(zhí)行:數(shù)據(jù)相關(guān)執(zhí)行對(duì)于信號(hào)處理非常重要。因此,ADSP-2100系列和ADSP-2106x SHARC浮點(diǎn)系列等高級(jí)DSP支持有條件地執(zhí)行其大部分基本指令:在單個(gè)指令中,處理器測(cè)試條件代碼,如果為真,則在同一周期內(nèi)執(zhí)行操作。這可以對(duì)計(jì)算密集型算法產(chǎn)生巨大的影響。英特爾在 i860 中發(fā)現(xiàn)了這個(gè)問題,并添加了一個(gè)圖形單元來處理高性能 Z 緩沖所需的條件存儲(chǔ)操作。
接口: DSP基于來自模數(shù)轉(zhuǎn)換器的實(shí)際信號(hào)工作,并將結(jié)果發(fā)送到D/A轉(zhuǎn)換器。因此,DSP通常包含串行端口,用于與這些設(shè)備進(jìn)行廉價(jià)接口。高級(jí)DSP增加了硬件以提高操作效率,例如雙緩沖和自動(dòng)緩沖。由于這些輸入/輸出信號(hào)可能來自非線性編解碼器,因此高級(jí)DSP可能具有用于零開銷A律和μ律擴(kuò)容的專用硬件。此外,串行端口可能具有簡(jiǎn)化與T1和CEPT數(shù)據(jù)傳輸線接口的功能。
圖2.高效的 SHARC 內(nèi)存架構(gòu)允許 I/O 帶寬跟上計(jì)算速度。
SHARC串行端口旨在通過靈活的硬件最大限度地提高吞吐量,但針對(duì)各種信號(hào)類型進(jìn)行了調(diào)整。它們的特點(diǎn)包括:每個(gè)串行端口可以自動(dòng)接收和/或發(fā)送整個(gè)數(shù)據(jù)塊,獨(dú)立發(fā)送和接收每個(gè)數(shù)據(jù)緩沖寄存器以及移位寄存器,TDM多通道模式。
編程注意事項(xiàng): 曾經(jīng),DSP和RISC之間的顯著區(qū)別在于它們的編程模型。DSP本質(zhì)上是性能驅(qū)動(dòng)的,因此DSP的編程主要使用匯編語言完成,以便從處理器獲得最佳性能。對(duì)于定點(diǎn)DSP,通常仍然如此,但使用ADSP-2100系列的直觀代數(shù)匯編語言則更容易(圖3)。在不犧牲性能的情況下,它改善了易用性問題,這個(gè)問題促使許多程序員偏愛像C這樣的高級(jí)語言。
圖3.FFT 代碼示例。
另一方面,浮點(diǎn)DSP用高級(jí)語言編程效率更高。浮點(diǎn)計(jì)算避免了分?jǐn)?shù)數(shù)據(jù)類型,C 中不存在分?jǐn)?shù)數(shù)據(jù)類型。此外,體系結(jié)構(gòu)決策可能會(huì)影響編譯器效率。例如,ADSP-2106x SHARC系列的大而統(tǒng)一的地址空間使編譯器更容易分配存儲(chǔ)器。此外,其大而靈活的寄存器文件提高了效率。
我們產(chǎn)品戰(zhàn)略的核心是提供工具和DSP內(nèi)核,以便能夠使用高級(jí)語言對(duì)定點(diǎn)和浮點(diǎn)DSP進(jìn)行高效編程。這就是ADSP-21csp背后的驅(qū)動(dòng)力,ADSP-21csp是一個(gè)新的并發(fā)信號(hào)處理器系列。然而,盡管使用高級(jí)語言,DSP程序員必須能夠在語言級(jí)別下降(以最小的痛苦)來提高時(shí)間關(guān)鍵例程的性能。
DSP設(shè)計(jì)越來越多地按照這樣的順序進(jìn)行編程:首先,用高級(jí)語言編寫和調(diào)試軟件原型。此原型通常會(huì)產(chǎn)生足夠的性能。然而,更一般地說,需要提高性能,因此在模擬中對(duì)高級(jí)代碼進(jìn)行直方圖處理,以找到需要最多執(zhí)行時(shí)間的部分。然后用匯編語言手工編碼關(guān)鍵部分。直方圖和手動(dòng)編碼過程將迭代,直到達(dá)到性能目標(biāo)。
雖然DSP和RISC之間的差異很多,但這兩種架構(gòu)往往在編程領(lǐng)域趨同,這種融合是由上市時(shí)間和DSP在應(yīng)用中不斷變化的作用驅(qū)動(dòng)的。程序員擅長(zhǎng)快速開發(fā)工作C程序,使用它們更快地將產(chǎn)品推向市場(chǎng)。同時(shí),DSP承擔(dān)更多的系統(tǒng)管理功能,如用戶界面或系統(tǒng)控制,并且需要提供高水平的語言效率,以與以前分配這些控制任務(wù)的μC和RISC處理器競(jìng)爭(zhēng)。
審核編輯:郭婷
-
dsp
+關(guān)注
關(guān)注
553文章
7987瀏覽量
348730 -
嵌入式
+關(guān)注
關(guān)注
5082文章
19104瀏覽量
304791 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87848
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論