當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]隨著數字信號處理(Digital Signal ProcESSor,DSP)技術的發(fā)展,DSP已被廣泛應用于雷達、通信等領域。雖然DSP經歷了幾代的發(fā)展,運算速度和能力都有了很大的提高,但在很多情

隨著數字信號處理(Digital Signal ProcESSor,DSP)技術的發(fā)展,DSP已被廣泛應用于雷達、通信等領域。雖然DSP經歷了幾代的發(fā)展,運算速度和能力都有了很大的提高,但在很多情況下,單片DSP已經不能滿足實時處理的要求,必須尋求多片DSP并行處理的方案。

從系統(tǒng)結構出發(fā)可以將并行系統(tǒng)分為共享存儲器并行系統(tǒng)和分布存儲器并行系統(tǒng)。AD公司推出的SHARC系列DSP芯片同時支持這二種并行處理器結構。通常,將AD公司的一系列雙位高性能浮點DSP稱為 SHARC(Super Harvard Architecture)。對于共享存儲器系統(tǒng),通過SHARC間的外部共享總線實現。對于分布存儲器系統(tǒng),通過2個SHARC間的鏈路口直接連接,實現DSP間點對點的通信。

然而,不能認為將多個SHARC互相進行硬件連接就實現了并行處理。真正的并行處理應該是使互連的各個DSP能夠協(xié)調工作,縮短系統(tǒng)處理的時間。這需要并行系統(tǒng)中SHARC間能完成數據流的傳遞。并行系統(tǒng)中各個SHARC間數據流的傳遞同數據處理同等重要。本文針對這二種并行方式,分別給出了軟件的設計方法和設計技巧,并且給出了針對ADSP2116X的程序實現。

1 共享存儲器并行系統(tǒng)的設計

SHARC為多處理器系統(tǒng)提供了強大的支持,用戶可以在不附加任何外圍電路的情況下構成共享存儲器并行系統(tǒng)。SHARC具有一套巧妙的分布式總線仲裁機制。使用2~6片SHARC把各SHARC的相應引腳相連就可以共享外部總線。每片SHARC都可以訪問其他SHARC的片內存儲器,還可以通過設置IOP寄存器啟動其他SHARC的DMA操作。

組成共享存儲器并行系統(tǒng)時,每一個SHARC都有一個惟一的標識:ID2~0,取值范圍為000~110。ID=001表示該SHARC為1號 DSP,ID=010表示該SHARC為2號DSP,依此類推。ID=000表示是單DSP系統(tǒng)。在多DSP系統(tǒng)中,ID=001號的DSP是必須存在的,這是DSP加載成功以后的主處理器。

在共享存儲器系統(tǒng)中,任何時刻都只有一片SHARC可以驅動外部總線,該SHARC就被稱為主處理器。其余的從SHARC如果需要訪問總線,則必須先申請總線。主處理器如果此時沒有數據傳遞或者總線占用時間到,就會釋放總線控制權,把自己的外部總線驅動為三態(tài),完成總線控制權的轉移。

主處理器對從SHARC的內存訪問和對自己的內存訪問一樣簡單,既可以通過內核直接讀寫完成,也可以通過外部口DMA實現。在共享存儲器并行系統(tǒng)中,每一片SHARC根據自己的ID號都有一個映射的多處理器存儲空間。例如對于ADSP2116X,ID=001的SHARC對應的多處理器存儲空間為0x100000~0x1F FFFF,ID=010的SHARC對應的多處理器存儲器空間為0x20 0000~0x2F FFFF等。共享存儲系統(tǒng)的LDF文件與單DSP系統(tǒng)有些不同。下面給出它的一個示例(以2個SHARC為例)。

例1:共享存儲器系統(tǒng)LDF文件。

ARCHITECTURE(ADSP-21160)

SEARCH_DIR($ADI_DSP211xxlib)

MPMEMORY{

DSP1{START(0X100000)}    //第一片DSP在多處理

//器空間的映射地址

DSP2{START(0X200000)} }   //第二片DSP在多處理

//器空間的映射地址

MEMORY

{pm_rsTI { TYPE(PM RAM)START(0x00040004)END

(0x0004000f)WIDTH(48) }

pm_code { TYPE(PM RAM)START(0x00040100)END

(0x00049fff)WIDTH(48) }

dm_data { TYPE(DM RAM)START(0x00050000)END

(0x00059fff)WIDTH(32) } }

PROCESSOR DSP1

{LINK_AGAINST(DSP2.DXE)    //需要重新連接的

//DSP2的目標文件

OUTPUT(DSP1.DXE)       //DSP1輸出的目標文件

……             //和單DSP系統(tǒng)相同,故略去,下同

}

PROCESSOR DSP2

{LINK_AGAINST(DSP1.DXE)    //需要重新連接的

//DSP1的目標文件

OUTPUT(DSP2.DXE)        //DSP2輸出的目標文件

……

}

這樣,這二片DSP便可以通過外部總線訪問對方的內部資源。當DSP1需要直接訪問DSP2中的某一變量時,只需要DSP2將該變量設置為global類型,DSP1就可以在多處理器空間中通過外部總線直接訪問該變量,當然,也可以根據變量的內存地址直接訪問。

在共享存儲器并行系統(tǒng)中,當二個SHARC之間通過總線進行數據傳遞時,如果此時其他的DSP需要訪問外部總線,則只有掛起等待。這樣,在多個DSP間數據交換比較頻繁時,系統(tǒng)的效率就會大大降低。另外,在共享存儲器并行系統(tǒng)中,最多只能有6個DSP互相連接。如果需要更多的DSP并行工作,共享存儲器并行系統(tǒng)便無能為力。采用以下介紹的分布存儲器并行系統(tǒng),可以有效地解決這個問題。

2 分布存儲器并行系統(tǒng)的設計

ADSP2116X提供了獨立的6個鏈路口,每個鏈路口可以實現與其他ADSP2116X或者外圍設備點對點的通信。每個鏈路口包括8位雙向數據線(LxDAT7~0),1個雙向時鐘信號(LxCLK),1個雙向確認信號(LxACK)。但是,鏈路口沒有為發(fā)送和接收提供2套管腳,所以在任何時刻鏈路口只能工作在單工狀態(tài)。依靠鏈路口進行雙DSP間的數據傳遞時,只需要把2個DSP的10個管腳對應連接即可,不需要任何外部附加邏輯。

在ADSP2116X內部有6個鏈路緩沖器。用戶通過定義LAR寄存器,可以為每個鏈路口選擇一個或幾個緩存器。鏈路緩沖器一端與內部總線相連,另一端通過LAR寄存器與不同的鏈路口相連。需要注意的是,鏈路口與鏈路緩存器是完全不同的概念。鏈路緩沖器可以理解為一個雙向的FIFO,而鏈路口僅僅代表其對外的10個管腳。鏈路口的特性很大程度上是由其正在使用的緩沖器的特性決定的。

ADSP2116X的鏈路口發(fā)送時鐘頻率可以通過LCTLx寄存器的LxCLKD位設置(1,1/2,1/3,1/4核時鐘頻率),鏈路口數據線根據需要可以選擇為8位或4位。發(fā)送方在時鐘LxCLK的上升沿送出8/4位碼,接收方利用時鐘下降沿鎖存8/4位碼,并且接收方使LxACK有效,表示已準備好接收下一個字。在每個字開始發(fā)送時,發(fā)送方如果看到LxACK無效,則將LxCLK保持為高,并等待LxACK有效后才開始發(fā)送新字。當發(fā)送緩沖為空時,LxCLK將保持為低電平。

鏈路口數據傳輸可以通過DMA方式和內核直接訪問二種方式。DMA方式傳輸時不需要內核干預,在傳輸數據量比較大時效率很高,但是需要首先進行 DMA參數設置。當僅有個別數據需要通過鏈路口傳遞的情況下,往往不使用DMA方式,而是通過ADSP2116X的內核直接訪問。用戶可以通過LCOM寄存器中緩沖器的狀態(tài)來控制內核對鏈路口緩沖進行讀寫操作,也可以通過相應的中斷從鏈路口緩沖器中讀寫數據,如“DM(LBUF0)=R0;”或者 “R0=DM(LBUF0);”等。值得注意的是,無論是試圖從一個空的鏈路緩沖中讀,還是試圖向滿的緩沖中寫,內核的指令都會掛起,直到操作成功為止。因此,內核指令直接讀寫鏈路緩存時,需要首先判斷鏈路緩沖狀態(tài)。[!--empirenews.page--]

ADSP2116X為每個鏈路口提供了一個專用的DMA通道,它們分別占用DMA中的4~9通道。鏈路口的DMA使用非常方便,只需將對應的DMA 參數寄存器(IIx,IMx,Cx)設置完畢,使能LCTLx中對應通道的LxDEN即可。在當前DMA結束(或者鏈式DMA全部結束)后,會觸發(fā)一個可屏蔽中斷通知用戶。啟動鏈路口DMA的順序如下:

(1)由LAR寄存器的AxLB為鏈路口分配一個LBUFx;

(2)由LCTL寄存器的LxEN使能這個LBUFx,并設置好LCTL控制寄存器;

(3)設置DMA參數(IIy,IMy,Cy);

(4)置位LCTL寄存器的LxDEN,就啟動了DMA。

其中:x=0~5,y=4~9。

下面給出一個利用鏈路口DMA發(fā)送數據的示例。

例2:利用鏈路口0進行數據發(fā)送。

.SECTION/dm dm_data;

.VAR trans_data[size];

.SECTION/pm pm_code:

……

r0=0x0002c688;

dm(LAR)=r0;

r9=0x00000229; /*LBUF0使能、發(fā)送、8位字寬、核時鐘速率*/

dm(LCTL0)=r9;

r0=trans_data;

dm(II4)=r0;  /*需要發(fā)送數據的起始地址*/

r0=1;

dm(IM4)=r0;

r0=size;

dm(C4)=r0;

ustat1=dm(LCTL0);

bit set ustat1 L0DEN;  /*啟動發(fā)送DMA*/

dm(LCTL0)=ustat1;

如果傳輸的數據不在一段連續(xù)的內存區(qū),而是在多段數據塊中,可以利用鏈式DMA。鏈式DMA可以在當前DMA操作結束后自動重新配置當前通道并開始新的DMA,所有這些操作都不需要內核的干預。在鏈式DMA過程中,用戶只要對DMA參數配置一次,就可以方便地完成多塊數據的DMA傳輸。

鏈式DMA是通過CPx寄存器實現的。對于ADSP2116X來說,CPx是一個19位的寄存器。寄存器中低18位表示相對于基地址 0x40000的偏移量,用戶在這個地址的內部存儲器中存放下一次DMA的參數,這些參數叫做TCB(Transfer Control Blocks)。CPx中的第19位是控制當前鏈式DMA完成后是否產生中斷的PCI位。如果把全局地址賦給CPx,則PCI位一定為1,表明一定會產生中斷。

用戶只需要在內存區(qū)填寫多個TCB的表格,用其中的CPx字段將每個表格串起來并將第一個表格的結束地址放入CPx寄存器,就可以啟動鏈式DMA。要終止一個鏈式DMA,只需要把最后一個TCB中的CPx字段填0即可。

 

下面是建立一個鏈式DMA的順序:

(1)在片內存儲器中建立需要的TCB數據塊;

(2)設置DMA參數寄存器,使能相應的LxDEN和LxCHEN;

(3)將第一個TCB的最后一個地址的偏移量寫入CPx寄存器中,即啟動了鏈式DMA。

鏈路口的數據傳遞可以依靠中斷。鏈路口中斷的產生有以下3種情況:

(1)DMA使能時,DMA完成后將產生一個可屏蔽中斷。

(2)DMA禁止時,發(fā)送時LxBUF非滿,接收時LxBUF非空。

(3)外部設備訪問一個未指定的鏈路口,或者訪問一個已指定但LBUF被禁止的鏈路口時,將產生一個鏈路服務請求(LSRQ)中斷,且所有的鏈路口公用一個中斷矢量。

前2種情況比較簡單,只需要注意:ADSP2116X鏈路口的中斷屏蔽、鎖存與ADSP2106X不同,它從IRPTL/IMASK中分離出來,單獨存在于寄存器LIRPTL中,并且在IMASK中加了一個鏈路口中斷總開關LPISUMI。如果要使能某個鏈路口中斷,則需要設置3個控制位。例如使能L0BUF中斷,需要以下指令:“bit set imask LPISUMI;bit set lirptl LP0MSK;bit set mode1 IRPTEN;”。

對于上面的鏈路服務請求中斷(LSRQ),在多SHARC通信時比較有效。通過該中斷可以實現使用同一個鏈路口完成接收和發(fā)送數據的功能,并且在2個SHARC一個主動、另一個被動的情況下不依靠外部邏輯實現2個鏈路口的數據傳遞同步。例如SHARC-1需要通過鏈路口向SHARC-2傳送數據,由于SHARC-1主動發(fā)送,因此只需配置好DMA參數,啟動DMA即可。但是對于SHARC-2,由于被動接收,事先并不知道SHARC-1何時向自己發(fā)送數據,因此很難在適當的時候啟動DMA接收。通過LSRQ中斷,就可以很容易地解決這個問題。

首先將雙方的鏈路口設置為無效。當SHARC-1需要向SHARC-2通信時(發(fā)送或接收)將自己的鏈路口設為有效,并根據需要從自己的鏈路緩沖中讀寫數據。由于鏈路通信協(xié)議規(guī)定:當發(fā)送數據時,如果對方沒有響應,則將LxCLK置為高電平,數據線保持不變;當需要接收數據時,如果對方沒有響應,則LxACK保持為高電平。這樣,SHARC-2就會觸發(fā)LSRQ中斷。由于LSRQ中斷的所有鏈路口公用一個中斷矢量,因此在中斷服務子程序中,首先需要判斷哪個鏈路口有服務請求, 且要區(qū)分是發(fā)送還是接收請求,然后配置相應的DMA參數,使能該鏈路口,從而在雙方之間建立一個單向的數據通路。雙方傳遞數據完成,會產生一個如上文中鏈路口中斷情況(1)所示的中斷。在中斷服務程序中,仍然將各自的鏈路口設置為無效,等待下一次通信請求。下面給出一個利用LSRQ中斷實現數據傳遞的示例。

例3:配置L0BUF,利用LSRQ中斷實現數據傳遞。

r0=0x0002c688;

dm(LAR)=r0;

ustat1=dm(LCTL0);

bit clr ustat1 L0EN;  /*禁止鏈路緩沖0*/

dm(LCTL0)=ustat1;

ustat1=dm(LSRQ);

bit set ustat1 L0TM;  /*鏈路0發(fā)送屏蔽*/

bit set ustat1 L0RM;  /*鏈路0接收屏蔽*/

dm(LSRQ)=ustat1;

bit set imask LSRQI;  /*使能LSRQ中斷*/

bit set mode1 IRPTEN;

……

上面的程序段可以放在主程序的開始。經過以上的配置,就可以通過LSRQ中斷方便地實現與另一片SHARC的鏈路口通信(發(fā)送、接收)。另外需要注意的是,當修改鏈路緩沖器的使能位LxEN時,必須將該中斷屏蔽(bit clr imask LSRQI),否則有可能產生不可預料的LSRQ中斷。

3 結束語

采用共享存儲器并行系統(tǒng)和分布存儲器并行系統(tǒng)各有特色,結合這二種系統(tǒng)設計的思想更易于構建并行處理系統(tǒng)。設計時,可以采用子模塊結構把這二者結合起來。子模塊內部,采用共享存儲器和分布存儲器并存,各個SHARC間根據需要既可以通過總線傳送數據,又可以通過鏈路口傳送數據。子模塊之間采用分布式存儲器系統(tǒng),通過鏈路口進行數據傳遞。采用以上設計,可以實現有效的并行處理,使系統(tǒng)整體性能有很大的提高。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉