DSP 的技術(shù)架構(gòu):解密高效信號處理的底層邏輯
DSP 的高效性源于其針對性的架構(gòu)設(shè)計(jì),從存儲架構(gòu)、運(yùn)算單元到指令集,每一個(gè)環(huán)節(jié)都圍繞 “實(shí)時(shí)信號處理” 優(yōu)化,形成了與通用 CPU 截然不同的技術(shù)體系。
(一)存儲架構(gòu):哈佛架構(gòu)與多 bank 設(shè)計(jì)
哈佛架構(gòu)是 DSP 的 “基石”,其核心是 “程序存儲與數(shù)據(jù)存儲分離”。在傳統(tǒng)馮?諾依曼架構(gòu)中,CPU 每次只能從存儲器中讀取一條指令或一個(gè)數(shù)據(jù),當(dāng)處理連續(xù)信號時(shí),頻繁的指令與數(shù)據(jù)讀取會(huì)導(dǎo)致總線擁堵;而哈佛架構(gòu)擁有兩條獨(dú)立的總線(程序總線與數(shù)據(jù)總線),可同時(shí)讀取指令與數(shù)據(jù),例如在音頻處理中,DSP 可一邊讀取 “降噪算法指令”,一邊讀取 “當(dāng)前音頻數(shù)據(jù)”,運(yùn)算效率提升近一倍。
為進(jìn)一步提升數(shù)據(jù)訪問速度,DSP 的存儲器通常采用 “多 bank(存儲塊)” 設(shè)計(jì) —— 將數(shù)據(jù)存儲器分為多個(gè)獨(dú)立的 bank,每個(gè) bank 可獨(dú)立被訪問,支持 “并行讀取多個(gè)數(shù)據(jù)”。例如在傅里葉變換中,需要同時(shí)讀取兩個(gè)數(shù)據(jù)進(jìn)行乘法運(yùn)算,多 bank 設(shè)計(jì)可讓 DSP 從不同 bank 中同時(shí)取出這兩個(gè)數(shù)據(jù),避免了單 bank 存儲器的訪問沖突。部分高端 DSP(如 TI TMS320C66x)還支持 “DMA(直接存儲器訪問)”,無需 CPU 干預(yù)即可實(shí)現(xiàn)存儲器與外設(shè)之間的數(shù)據(jù)傳輸,例如將 ADC 采集的音頻數(shù)據(jù)直接傳輸至數(shù)據(jù)存儲器,進(jìn)一步降低 CPU 負(fù)擔(dān),確保實(shí)時(shí)性。
(二)運(yùn)算單元:MAC 與向量處理的 “組合拳”
信號處理的核心是 “乘法與累加運(yùn)算”(如濾波算法中的卷積運(yùn)算、音頻編碼中的量化運(yùn)算),因此 DSP 的運(yùn)算單元以 MAC 為核心,并通過向量處理單元提升并行能力。
MAC 單元是 DSP 的 “運(yùn)算核心”,其設(shè)計(jì)目標(biāo)是 “在一個(gè)時(shí)鐘周期內(nèi)完成一次乘法 + 一次累加”。例如計(jì)算 “y = a1b1 + a2b2 + a3*b3”,普通 CPU 需要 3 次乘法指令與 2 次加法指令,而 DSP 的 MAC 單元可通過一條指令連續(xù)完成 3 次 “乘法 + 累加”,運(yùn)算延遲大幅降低。高端 DSP 通常集成多個(gè) MAC 單元,例如 ADI Blackfin BF707 集成 2 個(gè) MAC 單元,可同時(shí)處理兩路信號;TI TMS320C6678 則集成 64 個(gè) MAC 單元,支持 64 路并行運(yùn)算,可滿足多路射頻信號的實(shí)時(shí)處理需求。
除了 MAC 單元,現(xiàn)代 DSP 還集成 “向量處理單元”,支持對 “向量數(shù)據(jù)”(即一組連續(xù)的數(shù)據(jù))進(jìn)行并行運(yùn)算。例如在視頻處理中,需要對一幀圖像的所有像素進(jìn)行亮度調(diào)整,向量處理單元可一次性讀取 8 個(gè)像素?cái)?shù)據(jù),同時(shí)完成亮度計(jì)算,運(yùn)算效率是傳統(tǒng) scalar(標(biāo)量)處理的 8 倍。部分 DSP(如高通 Hexagon)還支持 “單指令多數(shù)據(jù)(SIMD)” 技術(shù),一條指令可同時(shí)處理 16 位、32 位等不同精度的數(shù)據(jù),兼顧運(yùn)算速度與數(shù)據(jù)精度。
(三)指令集與流水線:適配信號處理的 “定制化設(shè)計(jì)”
DSP 的指令集針對信號處理場景定制,避免了通用 CPU 指令集中冗余的復(fù)雜指令,同時(shí)通過流水線優(yōu)化提升指令執(zhí)行效率。
在指令設(shè)計(jì)上,DSP 的指令集強(qiáng)調(diào) “簡潔、高效”,并支持多種特殊尋址方式。例如 “循環(huán)尋址” 指令 —— 信號處理中常需對連續(xù)數(shù)據(jù)進(jìn)行循環(huán)處理(如音頻的幀處理),循環(huán)尋址指令可自動(dòng)將地址重置為起始位置,無需額外的分支指令;“位反轉(zhuǎn)尋址” 指令 —— 傅里葉變換中需要按位反轉(zhuǎn)順序讀取數(shù)據(jù),位反轉(zhuǎn)尋址指令可直接生成反轉(zhuǎn)后的地址,避免了軟件計(jì)算地址的延遲。此外,DSP 的指令集還支持 “條件執(zhí)行”,可在一條指令中包含條件判斷(如 “若數(shù)據(jù)大于閾值則執(zhí)行加法”),減少分支跳轉(zhuǎn)帶來的流水線中斷,確保指令執(zhí)行的連續(xù)性。
流水線是 DSP 提升指令吞吐量的關(guān)鍵,通常分為 5-8 個(gè)階段(取指、譯碼、取數(shù)、運(yùn)算、寫回等),每個(gè)階段并行處理不同指令。例如當(dāng)?shù)?span> 1 條指令處于 “運(yùn)算” 階段時(shí),第 2 條指令處于 “取數(shù)” 階段,第 3 條指令處于 “譯碼” 階段,第 4 條指令處于 “取指” 階段,形成 “流水線滿負(fù)荷” 狀態(tài),指令吞吐量提升近 5 倍。為解決流水線中的 “數(shù)據(jù)相關(guān)” 問題(如后一條指令需要前一條指令的運(yùn)算結(jié)果),DSP 通常采用 “數(shù)據(jù)轉(zhuǎn)發(fā)” 技術(shù),將前一條指令的運(yùn)算結(jié)果直接傳遞給后一條指令的運(yùn)算單元,無需等待數(shù)據(jù)寫入存儲器,進(jìn)一步減少流水線停頓。