《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 業(yè)界動態(tài) > DSP,、MCU,、MPU的區(qū)別在哪些地方

DSP、MCU,、MPU的區(qū)別在哪些地方

2018-09-05
關(guān)鍵詞: CPU 處理器 MCU 控制器

CPU(Central Processing Unit,,中央處理器)發(fā)展出來三個分枝,一個是DSP(Digital Signal Processing/Processor,,數(shù)字信號處理),,另外兩個是MCU(Micro Control Unit,微控制器單元)和MPU(Micro Processor Unit,,微處理器單元),。

MCU集成了片上外圍器件;MPU不帶外圍器件(例如存儲器陣列),,是高度集成的通用結(jié)構(gòu)的處理器,,是去除了集成外設(shè)的MCU;DSP運(yùn)算能力強(qiáng),,擅長很多的重復(fù)數(shù)據(jù)運(yùn)算,,而MCU則適合不同信息源的多種數(shù)據(jù)的處理診斷和運(yùn)算,側(cè)重于控制,,速度并不如DSP,。MCU區(qū)別于DSP的最大特點(diǎn)在于它的通用性,反應(yīng)在指令集和尋址模式中,。DSP與MCU的結(jié)合是DSC,,它終將取代這兩種芯片。

1.對密集的乘法運(yùn)算的支持

GPP不是設(shè)計(jì)來做密集乘法任務(wù)的,,即使是一些現(xiàn)代的GPP,,也要求多個指令周期來做一次乘法。而DSP處理器使用專門的硬件來實(shí)現(xiàn)單周期乘 法,。DSP處理器還增加了累加器寄存器來處理多個乘積的和,。累加器寄存器通常比其他寄存器寬,增加稱為結(jié)果bits的額外bits來避免溢出,。同時,,為了 充分體現(xiàn)專門的乘法-累加硬件的好處,幾乎所有的DSP的指令集都包含有顯式的MAC指令,。

2. 存儲器結(jié)構(gòu)

03172812475297.png

傳統(tǒng)上,,GPP使用馮.諾依曼存儲器結(jié)構(gòu)。這種結(jié)構(gòu)中,,只有一個存儲器空間通過一組總線(一個地址總線和一個數(shù)據(jù)總線)連接到處理器核,。通常,做一次乘法會發(fā)生4次存儲器訪問,,用掉至少四個指令周期,。

大多數(shù)DSP采用了哈佛結(jié)構(gòu),將存儲器空間劃分成兩個,,分別存儲程序和數(shù)據(jù),。它們有兩組總線連接到處理器核,允許同時對它們進(jìn)行訪問,。這種安排將處理器存儲器的帶寬加倍,,更重要的是同時為處理器核提供數(shù)據(jù)與指令。在這種布局下,,DSP得以實(shí)現(xiàn)單周期的MAC指令,。

典型的高性能GPP實(shí)際上已包含兩個片內(nèi)高速緩存,一個是數(shù)據(jù),,一個是指令,,它們直接連接到處理器核,以加快運(yùn)行時的訪問速度,。從物理上說,,這種片內(nèi)的雙存儲器和總線的結(jié)構(gòu)幾乎與哈佛結(jié)構(gòu)的一樣了。然而從邏輯上說,,兩者還是有重要的區(qū)別,。

GPP使用控制邏輯來決定哪些數(shù)據(jù)和指令字存儲在片內(nèi)的高速緩存里,,其程序員并不加以指定(也可能根本不知道)。與此相反,,DSP使用多個片內(nèi) 存儲器和多組總線來保證每個指令周期內(nèi)存儲器的多次訪問,。在使用DSP時,程序員要明確地控制哪些數(shù)據(jù)和指令要存儲在片內(nèi)存儲器中,。程序員在寫程序時,,必 須保證處理器能夠有效地使用其雙總線。

此外,,DSP處理器幾乎都不具備數(shù)據(jù)高速緩存,。這是因?yàn)镈SP的典型數(shù)據(jù)是數(shù)據(jù)流。也就是說,,DSP處理器對每個數(shù)據(jù)樣本做計(jì)算后,,就丟棄了,幾乎不再重復(fù)使用,。

3.零開銷循環(huán)

如果了解到DSP算法的一個共同的特點(diǎn),,即大多數(shù)的處理時間是花在執(zhí)行較小的循環(huán)上,也就容易理解,,為什么大多數(shù)的DSP都有專門的硬件,,用于 零開銷循環(huán)。所謂零開銷循環(huán)是指處理器在執(zhí)行循環(huán)時,,不用花時間去檢查循環(huán)計(jì)數(shù)器的值,、條件轉(zhuǎn)移到循環(huán)的頂部、將循環(huán)計(jì)數(shù)器減1,。

與此相反,,GPP的循環(huán)使用軟件來實(shí)現(xiàn)。某些高性能的GPP使用轉(zhuǎn)移預(yù)報(bào)硬件,,幾乎達(dá)到與硬件支持的零開銷循環(huán)同樣的效果,。

4.定點(diǎn)計(jì)算

大多數(shù)DSP使用定點(diǎn)計(jì)算,而不是使用浮點(diǎn),。雖然DSP的應(yīng)用必須十分注意數(shù)字的精確,,用浮點(diǎn)來做應(yīng)該容易的多,但是對DSP來說,,廉價也是非 常重要的,。定點(diǎn)機(jī)器比起相應(yīng)的浮點(diǎn)機(jī)器來要便宜(而且更快)。為了不使用浮點(diǎn)機(jī)器而又保證數(shù)字的準(zhǔn)確,,DSP處理器在指令集和硬件方面都支持飽和計(jì)算,、舍 入和移位。

5.專門的尋址方式

DSP處理器往往都支持專門的尋址模式,它們對通常的信號處理操作和算法是很有用的,。例如,,模塊(循環(huán))尋址(對實(shí)現(xiàn)數(shù)字濾波器延時線很有用)、位倒序?qū)ぶ罚▽FT很有用),。這些非常專門的尋址模式在GPP中是不常使用的,,只有用軟件來實(shí)現(xiàn)。

6.執(zhí)行時間的預(yù)測

大多數(shù)的DSP應(yīng)用(如蜂窩電話和調(diào)制解調(diào)器)都是嚴(yán)格的實(shí)時應(yīng)用,,所有的處理必須在指定的時間內(nèi)完成。這就要求程序員準(zhǔn)確地確定每個樣本需要多少處理時間,,或者,,至少要知道,在最壞的情況下,,需要多少時間,。如果打算用低成本的GPP去完成實(shí)時信號處理的任務(wù),執(zhí)行時間的預(yù)測大概不會成為什么問題,,應(yīng)為低成本GPP具有相對直接的結(jié)構(gòu),,比較容易預(yù)測執(zhí)行時間。然而,,大多數(shù)實(shí)時DSP應(yīng)用所要求的處理能力是低成本GPP所不能提供的,。

這時候,DSP對高性能GPP的優(yōu)勢在于,,即便是使用了高速緩存的DSP,,哪些指令會放進(jìn)去也是由程序員(而不是處理器)來決定的,因此很容易判斷指令是從高速緩存還是從存儲器中讀取,。DSP一般不使用動態(tài)特性,,如轉(zhuǎn)移預(yù)測和推理執(zhí)行等。因此,,由一段給定的代碼來預(yù)測所要求的執(zhí)行時間是完全直截了當(dāng)?shù)?。從而使程序員得以確定芯片的性能限制。

7.定點(diǎn)DSP指令集

定點(diǎn)DSP指令集是按兩個目標(biāo)來設(shè)計(jì)的:使處理器能夠在每個指令周期內(nèi)完成多個操作,,從而提高每個指令周期的計(jì)算效率,。將存貯DSP程序的存儲器空間減到最小(由于存儲器對整個系統(tǒng)的成本影響甚大,,該問題在對成本敏感的DSP應(yīng)用中尤為重要),。為了實(shí)現(xiàn)這些目標(biāo),DSP處理器的指令集通常都允許程序員在一個指令內(nèi)說明若干個并行的操作,。例如,,在一條指令包含了MAC操作,即同時的一個或兩個數(shù)據(jù)移動。在典型的例子里,,一條指令就包含了計(jì)算FIR濾波器的一節(jié)所需要的所有操作,。這種高效率付出的代價是,其指令集既不直觀,,也不容易使用(與GPP的指令集相比),。

GPP的程序通常并不在意處理器的指令集是否容易使用,因?yàn)樗麄円话闶褂孟驝或C++等高級語言,。而對于DSP的程序員來說,,不幸的是主要的DSP應(yīng)用程序都是用匯編語言寫的(至少部分是匯編語言優(yōu)化的)。這里有兩個理由:首先,,大多數(shù)廣泛使用的高級語言,,例如C,并不適合于描述典型的DSP算法,。其次,, DSP結(jié)構(gòu)的復(fù)雜性,如多存儲器空間,、多總線,、不規(guī)則的指令集、高度專門化的硬件等,,使得難于為其編寫高效率的編譯器,。 即便用編譯器將C源代碼編譯成為DSP的匯編代碼,優(yōu)化的任務(wù)仍然很重,。典型的DSP應(yīng)用都具有大量計(jì)算的要求,,并有嚴(yán)格的開銷限制,使得程序的優(yōu)化必不可少(至少是對程序的最關(guān)鍵部分),。因此,,考慮選用DSP的一個關(guān)鍵因素是,是否存在足夠的能夠較好地適應(yīng)DSP處理器指令集的程序員,。

8.開發(fā)工具的要求

因?yàn)镈SP應(yīng)用要求高度優(yōu)化的代碼,,大多數(shù)DSP廠商都提供一些開發(fā)工具,以幫助程序員完成其優(yōu)化工作,。例如,,大多數(shù)廠商都提供處理器的仿真工具,以準(zhǔn)確地仿真每個指令周期內(nèi)處理器的活動,。無論對于確保實(shí)時操作還是代碼的優(yōu)化,,這些都是很有用的工具。

GPP廠商通常并不提供這樣的工具,,主要是因?yàn)镚PP程序員通常并不需要詳細(xì)到這一層的信息,。GPP缺乏精確到指令周期的仿真工具,,是DSP應(yīng)用開發(fā)者所面臨的的大問題:由于幾乎不可能預(yù)測高性能GPP對于給定任務(wù)所需要的周期數(shù),從而無法說明如何去改善代碼的性能,。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。