音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

DSP芯片中并行運算處理指令的應(yīng)用技巧

出處:電子產(chǎn)品世界 發(fā)布于:2011-06-18 22:21:11

 

  根據(jù)處理器芯片的指令及其實現(xiàn)形式,我們可以把處理器芯片分為復(fù)雜指令系統(tǒng)(CISC)和精簡指令系統(tǒng)(RISC),前者追求單條指令的強大功能以簡化編程;后者強調(diào)指令的簡化以提高硬件效率。由于RISC具有指令長度一致、單周期執(zhí)行時間、易于并行和流水線處理等優(yōu)點,絕大多數(shù)的DSP處理芯片都采用了RISC.另外,根據(jù)計算機的存儲器結(jié)構(gòu)及其總線連接形式,計算機系統(tǒng)可以被分為馮諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu),前者共用數(shù)據(jù)存儲空間和程序存儲空間,共用存儲器總線;后者具有分離的數(shù)據(jù)和程序空間及分離的訪問總線。由于哈佛結(jié)構(gòu)在指令執(zhí)行時,取指和取數(shù)可以并行,因此具有更高的執(zhí)行效率,所以大多數(shù)的DSP芯片都采用了哈佛結(jié)構(gòu)。

  數(shù)字信號處理(Digital Signal Processing,簡稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀60年代以來,隨著計算機和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運而生并得到迅速的發(fā)展。數(shù)字信號處理是一種通過使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來處理現(xiàn)實信號的方法,這些信號由數(shù)字序列表示。在過去的二十多年時間里,數(shù)字信號處理已經(jīng)在通信等領(lǐng)域得到極為廣泛的應(yīng)用。德州儀器、Freescale等半導(dǎo)體廠商在這一領(lǐng)域擁有很強的實力。其工作原理是接收模擬信號,轉(zhuǎn)換為0或1的數(shù)字信號。再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字數(shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復(fù)雜指令程序,遠遠超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是值得稱道的兩大特色。

  ADSP2106x就是一款采用超級哈佛結(jié)構(gòu)和RISC的DSP處理芯片,其強大的浮點、定點運算功能和大容量的片內(nèi)存儲器,使其可以勝任苛刻的實時信號處理任務(wù);而它豐富的外部接口和10個通道的DMA可以使所處理數(shù)據(jù)的暢通無阻[1];再加上片內(nèi)的仲裁邏輯,6個ADSP2106x和一個主機可以很容易連在一起構(gòu)成一個并行處理系統(tǒng)。利用ADSP2106x可以開發(fā)出功能很強的信號處理系統(tǒng)[2].

  雖然ADSP2106x芯片本身提供了優(yōu)異的性能,但該性能的發(fā)揮離不開軟件編程的支持。比如,ADSP2106x的峰值運算速度可達120MFLOPS(主頻40MHz),即在一個時鐘周期內(nèi)可以完成乘法、加法和減法,但這三個并行運算指令是需要合理安排才能實現(xiàn)的。另外,由于芯片內(nèi)部采用了超級哈佛結(jié)構(gòu),因此可以在一定條件下同時存取兩個數(shù)據(jù),但這也需要合理安排數(shù)據(jù)在數(shù)據(jù)存儲器和程序存儲器中的放置,才能使并行的存取指令有效。

  本文主要介紹ADSP2106x中并行指令的一些應(yīng)用技巧,重點針對并行運算指令和數(shù)據(jù)存取指令。通過這些技巧的應(yīng)用,可以提高編程效率,充分發(fā)揮硬件潛力,同時對ADSP2106x的內(nèi)部結(jié)構(gòu)有更為深入的了解。

  ADSP2106x中的運算處理單元

 

  ADSP2106x中的處理部分包含了三個運算單元:ALU、乘法器和移位器,它們與寄存器組間的連接關(guān)系如圖1所示[3].三個運算單元的功能如下:

 ?。?)ALU單元:定點、浮點加減法和求平均;邏輯運算;求、值、值、限幅、比較;定點<-->浮點轉(zhuǎn)換。

 ?。?)乘法器:浮點乘法;定點乘法及乘法累加。

 ?。?)移位器:移位操作;位操作;位場(bit field)提取和存儲。

  ADSP2106X是AD公司的一種高性能32位浮點DSP,它的基本特點有:

  ·工作頻率為40MHz,時鐘周期25ns.

  ·數(shù)據(jù)線有48根,地址線有32根,地址范圍4G.

  ·所有指令都是單周期指令,指令長度均為48bit.

  ·32-bit IEEE浮點運算單元,內(nèi)含乘法器、ALU和移位器,支持40bit的擴展浮點運算。

  ·10個DMA通道。

  ·4M bit雙口片內(nèi)存器。

  ·有兩個同步串口和六個連接口。

  ·支持多處理器共享總線。

  寄存器可以在一個時鐘周期內(nèi)從數(shù)據(jù)存儲器和程序存儲器中各存取1個數(shù)據(jù),這正是ADSP2106x超級哈佛結(jié)構(gòu)的優(yōu)勢。另外,運算單元的運算與寄存器的存取可以并行不悖,但在編程時,這種并行往往伴隨一個流水線的過程。

  ADSP2106x中的乘法器和ALU還具有并行運算的能力;在一個時鐘周期內(nèi),乘法器可以完成乘法,ALU可以同時完成加法和減法,這使ADSP2106x在40MHz的主頻下達到了120MFLOPS峰值運算速度。

  下面針對這種并行運算來考慮軟件編程時應(yīng)注意的問題。

  并行運算指令的基本格式

  ADSP2106X提供了強大的實現(xiàn)多處理器并行處理的能力,允許某一處理器直接訪問其它處理器的內(nèi)部雙口SRAM,并且這種訪問一般不影響被訪問處理器的工作,片內(nèi)的分布總線仲裁邏輯可直接管理6片ADSP2106X和一個宿主機組成的并行系統(tǒng)的信息交換。另外ADSP2106X還具有6個4bit的連接口(Link Ports),每個連接口可以兩倍于系統(tǒng)工作時鐘的速率傳送數(shù)據(jù),因此每個連接口在一個時鐘周期內(nèi)能夠傳送一個8bit數(shù)據(jù)。在多處理器應(yīng)用中,ADSP2106X通過其它6個連接口實現(xiàn)處理器之間點到點的通信。由ADSP2106X構(gòu)成的典型多處理器并行系統(tǒng)主要有以下三種形式:共享總線的多處理器并行系統(tǒng);MeshSP(網(wǎng)絡(luò))結(jié)構(gòu)多處理器并行系統(tǒng);集束多處理器并行系統(tǒng)。

  ADSP2106x中并行運算指令的基本格式如下圖2,這里我們以浮點運算為例,如果是定點運算,只需把所有的前綴"F"換為"R"即可。

 

  并行指令中各操作的順序必須符合圖中的要求,并以逗號隔開,否則編譯時會出錯。

  DM地址產(chǎn)生寄存器的范圍為0~7, PM地址產(chǎn)生寄存器的范圍為8~15;即

  I0≤ Ia ≤ I7, M0≤ Mb ≤ M7; I8≤ Ic≤ I15, M8≤ Md ≤ M15.并且很重要的是:DM(Ia,Mb)實際指向的內(nèi)存地址范圍必須在數(shù)據(jù)存儲器中,對于ADSP21060,在32位數(shù)據(jù)長度下,其數(shù)據(jù)存儲器的地址范圍為0x30000~0x3FFFF; PM(Ic,Md)實際指向的內(nèi)存地址范圍也必須在數(shù)據(jù)存儲器中。否則雖然編譯時能通過,但運行時達不到并行的效果,而且很可能出錯,此種出錯具有一定的不確定性,在程序調(diào)試時不易發(fā)現(xiàn),潛在的危害很大。

  在乘法器和ALU并行時,對它們從寄存器中獲得操作數(shù)有嚴格的要求。16個寄存器被分成4組,F(xiàn)0~F3為組,F(xiàn)4~F7為第二組,F(xiàn)8~F11為第三組,F(xiàn)12~F15為第四組。當乘法器和ALU運算并行時,乘法器的兩個操作數(shù)必須分別取自于組和第二組;ALU的兩個操作數(shù)必須分別取自于第三組和第四組。

  在上面并行處理中,任一寄存器都可以既被讀又被寫;在指令執(zhí)行時遵循先讀后寫的原則,即在前半個時鐘周期里數(shù)據(jù)從某個寄存器中被讀出,在后半個時鐘周期里運算結(jié)果又被回寫到該寄存器中。對這一點的深刻理解有助于在編程時采用流水線的步驟。

  并行處理時的流水線步驟

  在采用ADSP2106x并行指令編程時,由于數(shù)據(jù)在內(nèi)存到運算單元之間的流通必須以寄存器為中介,因此編程時需要采用流水線的步驟。我們以下面例子為通用格式來表示該流水線步驟。

  假設(shè)內(nèi)存中有N個數(shù)據(jù):xn, 0≤n≤N-1;對其經(jīng)過某種運算處理后,得到N個處理結(jié)果:yn,0≤n≤N-1,并把yn寫回內(nèi)存。如果我們不采用并行處理,則處理步驟如下:

  For n=0 to N-1

  Fx ← 內(nèi)存(xn);

  Fy = 運算(Fx);

  Fy → 內(nèi)存(yn);

  End

  上述處理共需要3*N個時鐘周期(不考慮循環(huán)的初始化)。如果我們采用下面的并行處理,且把數(shù)據(jù)從內(nèi)存?寄存器?運算單元?寄存器?內(nèi)存的流通步驟進行下面的流水線化,

  Fx ← 內(nèi)存(x0);

  Fy = 運算(Fx), Fx ← 內(nèi)存(x1); /*進入循環(huán)的準備操作 */

  For n=2 to N-1

  Fy = 運算(Fx), Fx ← 內(nèi)存(xn), Fy → 內(nèi)存(yn); /*并行處理循環(huán)體 */

  End

  Fy = 運算(Fx), Fy → 內(nèi)存(yN-2);

  Fy ? 內(nèi)存(yN-1); /*退出循環(huán)后的回寫操作 */

  則總處理時間縮短為N+2個時鐘周期。此時,為了使循環(huán)體中并行指令能夠?qū)崿F(xiàn),需要在進入循環(huán)體之前完成數(shù)據(jù)預(yù)取的準備操作,在循環(huán)體退出后完成運算結(jié)果的回寫操作;同時要求xn和yn分處于程序存儲器和數(shù)據(jù)存儲器中。

  兩個實例

  實例1為求兩個數(shù)組內(nèi)積。設(shè)xn, yn, 0≤n≤N-1為兩個數(shù)組,它們的內(nèi)積定義為:

    為了在運算中能夠同時獲得xn和yn,我們需要把xn和yn分別安排在程序存儲器和數(shù)據(jù)存儲器中,經(jīng)過運算后,內(nèi)積結(jié)果在寄存器f8中。

  f8=0; /*對結(jié)果寄存器清零 */

  i0=x; m0=1; /*把數(shù)組xn的首地址賦給i0 */

  i8=y; m8=1; /*把數(shù)組yn的首地址賦給i8 */

  f0=dm(i0,m0), f4=pm(i8,m8);

  f12=f0*f4, f0=dm(i0,m0), f4=pm(i8,m8); /*為進入循環(huán)作準備*/

  lcntr=N-1, do loop until lce;

  loop: f12=f0*f4, f8=f8+f12, f0=dm(i0,m0), f4=pm(i8,m8); /*并行處理循環(huán)體*/

  f12=f0*f4, f8=f8+f12;

  f8=f8+f12; /*退出循環(huán)的殘余操作,內(nèi)積結(jié)果在f8中 */

  第二個例子是復(fù)數(shù)乘法運算,復(fù)數(shù)乘法需要4次實數(shù)乘法、實數(shù)加法和實數(shù)減法,因此至少需要四條指令才能完成復(fù)乘法,在這四條指令中,還要完成四個操作數(shù)的讀入和兩個結(jié)果的回寫。這里,我們假設(shè)有兩個復(fù)數(shù)組:xn=xrn+j*xin與yn=yrn+j*yin,0(n(N-1;二者相乘后得到zn=zrn+j*zin=(xrn*yrn-xin*yin)+j*(xrn*yin+xin*yrn),0(n(N-1.xr、yr及zi被安排在數(shù)據(jù)存儲器中,xi、yi及zr被安排在程序存儲器中。具體程序如下,

  i0=xr; i1=yr; i3=zi; i8=xi; i9=yi; i10=zr; m0=1; m8=1; /*對地址產(chǎn)生寄存器賦初值 */

  f0=dm(i0,m0), f4=pm(i9,m8); /* f0= xr0, f4= yi0*/

  f5=dm(i1,m0), f1=pm(i8,m8); /* f5=yr0, f1=xi0 */

  f8=f0*f5; /* f8= xr0* yr0 */

  f12=f1*f4; /* f12= xi0* yi0 */

  f9=f0*f4, f2=f8-f12, f0=dm(i0,m0), f4=pm(i9,m8); /* f9= xr0* yi0, zr0=f2= xr0* yr0- xi0* yi0 */

  /* f0= xr1, f4= yi1*/

  f13=f1*f5, f5=dm(i1,m0), f1=pm(i8,m8); /* f13= xi0* yr0 , f5=yr1, f1=xi1 */

  lcntr=N-2, do CMTI until lce;

  f8=f0*f5, f3=f9+f13; /* f8= xr* yr , zi=f3=xr* yi+ xi* yr */

  f12=f1*f4, dm(i3,m0)=f3, pm(i10,m8)=f2; /* f12= xi* yi, 存zi與zr */

  f9=f0*f4, f2=f8-f12, f0=dm(i0,m0), f4=pm(i9,m8); /* f9= xr* yi, zr=f2= xr* yr- xi* yi */

  /* f0= xr, f4= yi */

  CMTI: f13=f1*f5, f5=dm(i1,m0), f1=pm(i8,m8); /* f13= xi* yr , f5=yr, f1=xi */

  f8=f0*f5, f3=f9+f13;

  f12=f1*f4, dm(i3,m0)=f3, pm(i10,m8)=f2;

  f9=f0*f4, f2=f8-f12;

  f13=f1*f5;

  f3=f9+f13;

  dm(i3,m0)=f3, pm(i10,m8)=f2;

  結(jié)語

  本文對ADSP2106x芯片內(nèi)部運算處理單元的結(jié)構(gòu)進行了分析,并在此基礎(chǔ)上總結(jié)了并行處理指令的一般格式和具體應(yīng)用中的流水線步驟,給出數(shù)組內(nèi)積和復(fù)數(shù)組相乘的兩個典型例子。


  
關(guān)鍵詞:DSP芯片中并行運算處理指令的應(yīng)用技巧

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!