
如果程序代碼存儲(chǔ)空間與數(shù)據(jù)存儲(chǔ)空間之間還可以進(jìn)行數(shù)據(jù)交換,則稱為改進(jìn)的哈佛結(jié)構(gòu)。這種結(jié)構(gòu)可以并行進(jìn)行數(shù)據(jù)操作。例如在做數(shù)字濾波時(shí)把系數(shù)放在程序空間,待處理的樣本數(shù)據(jù)放在數(shù)據(jù)空間,處理時(shí)可以同時(shí)提取濾波器系數(shù)和樣本進(jìn)行乘法和累加操作,從而大大提高運(yùn)算速度。 改進(jìn)哈佛結(jié)構(gòu)還可以從程序存儲(chǔ)區(qū)來(lái)初始化數(shù)據(jù)存儲(chǔ)區(qū),或把數(shù)據(jù)存儲(chǔ)區(qū)的內(nèi)容轉(zhuǎn)移到程序存儲(chǔ)區(qū),這樣可以復(fù)用存儲(chǔ)器,降低成本,提高存儲(chǔ)器使用效率。
多總線結(jié)構(gòu)
例如TMS320C54X結(jié)構(gòu)中有一組程序總線(PB PAB),兩組讀數(shù)據(jù)總線(CB CAB)、(DB DAB),和一組寫(xiě)數(shù)據(jù)總線(EB EAB),這樣可以同時(shí)讀取兩組數(shù)據(jù)和存儲(chǔ)一組數(shù)據(jù),即同一時(shí)鐘周期內(nèi)可以執(zhí)行一條3個(gè)操作的指令。這種附加總線和擴(kuò)充地址增加數(shù)據(jù)流量,提高尋址能力。
采用流水線操作
計(jì)算機(jī)在執(zhí)行一條指令時(shí),要通過(guò)取指、譯碼、取數(shù)、執(zhí)行等各階段。由于DSP哈佛結(jié)構(gòu)指令的各個(gè)階段可以重疊進(jìn)行,這樣對(duì)每一條指令似乎都是在一個(gè)周期內(nèi)完成,可以把指令周期減到最小,增加數(shù)據(jù)吞吐量。 這種流水線操作也不是十全十美的,其主要原因是,一項(xiàng)處理很難被分解成若干個(gè)處理規(guī)模一致、在時(shí)間上有最佳配合的流水段,因而需要用寄存器協(xié)調(diào)流水線工作。
流水線操作適用于循環(huán)操作時(shí)間足夠長(zhǎng)或多個(gè)數(shù)據(jù)點(diǎn)反復(fù)執(zhí)行同一指令的情況。這是由于,流水線啟動(dòng)和停止的階段是流水線逐步被填滿和出空的過(guò)程。對(duì)于一次性非重復(fù)計(jì)算,流水線不可能達(dá)到穩(wěn)態(tài),反而用主要時(shí)間做填滿和出空操作,因而是不合適的。
硬件乘法器和高效的MAC指令
在DSP算法中,乘法累加操作是大量的運(yùn)算。因而DSP芯片都有硬件乘法器,使得乘法運(yùn)算做到一個(gè)周期內(nèi)完成。與之配合的指令為MAC-乘法累加指令,其功能如圖 4 所示,它可以在單周期內(nèi)取兩個(gè)操作數(shù)相乘,并將結(jié)果加載到累加器。有的DSP還具有多組MAC結(jié)構(gòu),可以并行處理。
獨(dú)立的傳輸總線及其控制器
處理器高速處理速度必須與高速的數(shù)據(jù)訪問(wèn)和傳輸相配合。而且為不影響CPU及其相關(guān)總線的工作,DSP的DMA單獨(dú)設(shè)置了傳輸總線及其控制器,因此DMA可以獨(dú)立工作。
為了提高DSP的實(shí)時(shí)處理能力,有時(shí)把多個(gè)DSP組成DSP處理器陣列,并行工作,此時(shí)DMA成為各處理器之間進(jìn)行數(shù)據(jù)傳輸?shù)闹饕ǖ馈?/P>
專用的數(shù)據(jù)地址發(fā)生器(DAG)
在DSP運(yùn)算中,存儲(chǔ)器的訪問(wèn)具有可預(yù)測(cè)性。例如在FIR濾波中,樣本、系數(shù)都是順序訪問(wèn)的,因此在DSP芯片中專門(mén)設(shè)置數(shù)據(jù)地址發(fā)生器。其實(shí)它也是一個(gè)ALU單元,具有簡(jiǎn)單的運(yùn)算能力。在通用機(jī)的CPU中,數(shù)據(jù)地址和數(shù)據(jù)處理都由同一ALU完成。例如在8086中,做一次加法需要三個(gè)周期,而計(jì)算一次地址需要5~6 周期,這樣會(huì)耗費(fèi)大量的時(shí)間。在DSP芯片中就不需要這樣的額外開(kāi)銷。另外在DSP芯片的數(shù)據(jù)地址產(chǎn)生中還支持間接尋址、循環(huán)尋址、倒位尋址等特殊操作,以適應(yīng)DSP運(yùn)算的各種尋址需求。

豐富的外設(shè)(Peripherals)
DSP處理器往往是脫機(jī)獨(dú)立工作,因此為與外設(shè)接口方便,往往設(shè)置了豐富的周邊接口電路。一般包含下列幾種主要外設(shè):
時(shí)鐘產(chǎn)生器(振蕩器與鎖相環(huán)PLL);
定時(shí)器(Timer);
軟件可編程等待狀態(tài)發(fā)生器,以便使較快的片內(nèi)設(shè)施與較慢的片外電路及存儲(chǔ)器協(xié)調(diào)工作;
通用的I/O口;
多通道同步緩沖串口(McBSP)和異步串口;
主機(jī)接口(HIP)
JTAG邊界掃描邏輯電路(IEEE 標(biāo)準(zhǔn)1149. 1),便于對(duì)DSP處理器做片上在線仿真和多處理器情況下的調(diào)試。
具有片內(nèi)存儲(chǔ)器
DSP芯片片內(nèi)一般帶有存放程序的只讀存儲(chǔ)器ROM和存放數(shù)據(jù)的隨機(jī)存儲(chǔ)器RAM,符合DSP運(yùn)算簡(jiǎn)單、核心程序短小的特征,同時(shí)可以提高指令傳輸效率,減小總線接口壓力。并且它不存在與外部總線競(jìng)爭(zhēng)和訪問(wèn)外部存儲(chǔ)器速度不匹配的問(wèn)題,這樣使DSP處理器具有強(qiáng)大的數(shù)據(jù)處理能力。
與結(jié)構(gòu)相配合的采用RISC指令集
一般DSP處理器具有高度專門(mén)化、復(fù)雜且不規(guī)則的指令集,這樣單個(gè)指令字可以同時(shí)控制片內(nèi)多個(gè)功能單元操作。DSP處理器指令集在設(shè)計(jì)時(shí)有兩個(gè)特點(diǎn):其一是最大限度的使用了處理器的硬件資源,因此往往是在單個(gè)指令中并行完成若干操作。例如在完成主要算術(shù)運(yùn)算的同時(shí),并行地從存儲(chǔ)器提取一個(gè)或兩個(gè)數(shù)據(jù)以及完成地址指針的更新。其次是指令所使用的存儲(chǔ)空間減到最小,為縮短指令字長(zhǎng),往往用狀態(tài)寄存器的模式來(lái)控制處理器的操作特性,例如舍入或飽和的處理,而不再將這些信息作為指令的一部分來(lái)處理。
由于傳統(tǒng)DSP芯片指令集的高度專門(mén)化及多功能操作使它難以用高級(jí)語(yǔ)言編譯,所以一般C編譯效率不高。另外C語(yǔ)言也不適合用來(lái)描述這種多存儲(chǔ)空間、多組總線、高度專門(mén)化結(jié)構(gòu)的硬件系統(tǒng),這些都是導(dǎo)致用C編譯傳統(tǒng)DSP處理器效率不高的原因。 綜上所述DSP處理器實(shí)現(xiàn)高速運(yùn)算的主要途徑可以概括為:具有硬件乘法器及乘-加單元;高效的存儲(chǔ)器訪問(wèn);零開(kāi)銷循環(huán);專門(mén)的適應(yīng)硬件結(jié)構(gòu)的指令集;多執(zhí)行單元;數(shù)據(jù)流的線性I/O口。
DSP處理器性能指標(biāo)
對(duì)DSP處理器缺乏一種諸如對(duì)PC機(jī)那樣公正合理的性能評(píng)價(jià)體系,這是由于各DSP廠商推出的產(chǎn)品在結(jié)構(gòu)和數(shù)據(jù)傳輸能力上有很大的差異,它是專門(mén)為某種目的而設(shè)計(jì)的,因而正確評(píng)價(jià)只有與特定的應(yīng)用聯(lián)系起來(lái),評(píng)價(jià)結(jié)果才有意義。這里將常用的指標(biāo)評(píng)價(jià)方法做一介紹。
傳統(tǒng)評(píng)價(jià)方法,這是最簡(jiǎn)單的評(píng)價(jià)指標(biāo):
MIPS(Millions of Instructions Per Second),一般DSP為20~100MIPS,使用超長(zhǎng)指令字的TMS320B2XX為2400MIPS。
MOPS(Millions of Operations Per Second),每秒執(zhí)行百萬(wàn)操作。這個(gè)指標(biāo)的問(wèn)題是什么是一次操作。通常操作包括CPU操作外,還包括地址計(jì)算、DMA訪問(wèn)數(shù)據(jù)傳輸、I/O操作等。一般說(shuō)MOPS越高意味著乘積-累加和運(yùn)算速度越快。
MFLOaPS(Million Floating Point Operations Per Second),這是衡量浮點(diǎn)DSP芯片的重要指標(biāo)。例如TMS320C31在主頻為40MHZ時(shí),處理能力為40MFLOPS,TMS320C6701在指令周期為6ns時(shí),單精度運(yùn)算可達(dá)1GFLOPS。
MBPS(Million Bit Per Second),它是對(duì)總線和I/O口數(shù)據(jù)吞吐率的度量,也就是某個(gè)總線或I/O的帶寬。例如對(duì)TMS320C6XXX、200MHZ時(shí)鐘、32bit總線時(shí),總線數(shù)據(jù)吞吐率則為800Mbyte/s或6400MBPS。
MACS(Multiply-Accumulates Per Second),例如TMS320C6XXX乘加速度達(dá)300MMACS~600MMACS。
以上傳統(tǒng)指標(biāo)雖然可以作為設(shè)計(jì)時(shí)可選的參考指標(biāo),但是有很大的局限性。例如它沒(méi)有考慮存儲(chǔ)器的使用和器件的功耗,一旦器件與外部速度較慢的存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí),運(yùn)行速度馬上就會(huì)被降低。
另一評(píng)價(jià)指標(biāo)是核心算法評(píng)價(jià)指標(biāo)。它是利用構(gòu)成大多數(shù)DSP系統(tǒng)的基本運(yùn)算模塊,例如FIR、IIR、FFT、向量加等典型運(yùn)算。規(guī)定大小適度、統(tǒng)一輸入、輸出要求,在保證功能一致性的條件下,也允許程序員針對(duì)所使用的處理進(jìn)行代碼的優(yōu)化,評(píng)價(jià)指標(biāo)是執(zhí)行時(shí)間、存儲(chǔ)器的使用和能耗等。
表1是對(duì)一些處理器評(píng)價(jià)的結(jié)果,其中DSP53611和MSC8101是MOTOROLA產(chǎn)品,TMS320C5416\6203是TI公司產(chǎn)品。TMS320C6701和Pentium Ⅲ屬于浮點(diǎn)運(yùn)算。

這種評(píng)價(jià)方法很容易用軟件仿真或基于硬件應(yīng)用的開(kāi)發(fā)工具來(lái)決定執(zhí)行的周期數(shù)。
從上列執(zhí)行時(shí)間可以看出處理器結(jié)構(gòu)對(duì)其性能的影響。例如TMS320C6203,時(shí)鐘300MHZ,由于采用超長(zhǎng)指令字結(jié)構(gòu)、每個(gè)指令周期內(nèi)處理8條指令,因此等效為2400MIPS,與TMS320C5416相比MIPS之比為15:1。但執(zhí)行同樣的256點(diǎn)復(fù)數(shù)FFT所需時(shí)間之比為7.8:1,因此兩者用MIPS作為比較指標(biāo)就有差距。其原因是C6203指令比C5416簡(jiǎn)單,因而完成同樣任務(wù)需要更多的指令,另外也由于數(shù)據(jù)的獨(dú)立和流水作業(yè)的影響等因素,C6203的并行性不能同時(shí)得到最佳的發(fā)揮。并且,這種核心算法評(píng)估指標(biāo)并沒(méi)有反映出計(jì)算精度,提高計(jì)算精度意味著字長(zhǎng)的增加或采用浮點(diǎn)運(yùn)算,相應(yīng)的存儲(chǔ)器容量增加,這些情況都沒(méi)有能在指標(biāo)中反映。
DSP處理器還有其他評(píng)估指標(biāo),各類評(píng)估指標(biāo)之間都有其自身的不足,因而正確的選用器件要根據(jù)任務(wù)需要量身定做,不可一味追求某項(xiàng)高指標(biāo),要根據(jù)性能價(jià)格比合理選用器件。





