SHARC并行系統(tǒng)軟件設計方法
隨著數(shù)字信號處理(Digital Signal ProcESSor,DSP)技術的發(fā)展,DSP已被廣泛應用于雷達、通信等領域。雖然DSP經(jīng)歷了幾代的發(fā)展,運算速度和能力都有了很大的提高,但在很多情況下,單片DSP已經(jīng)不能滿足實時處理的要求,必須尋求多片DSP并行處理的方案。
本文引用地址:http://m.butianyuan.cn/article/241699.htm從系統(tǒng)結構出發(fā)可以將并行系統(tǒng)分為共享存儲器并行系統(tǒng)和分布存儲器并行系統(tǒng)。AD公司推出的SHARC系列DSP芯片同時支持這二種并行處理器結構。通常,將AD公司的一系列雙位高性能浮點DSP稱為SHARC(Super Harvard Architecture)。對于共享存儲器系統(tǒng),通過SHARC間的外部共享總線實現(xiàn)。對于分布存儲器系統(tǒng),通過2個SHARC間的鏈路口直接連接,實現(xiàn)DSP間點對點的通信。
然而,不能認為將多個SHARC互相進行硬件連接就實現(xiàn)了并行處理。真正的并行處理應該是使互連的各個DSP能夠協(xié)調(diào)工作,縮短系統(tǒng)處理的時間。這需要并行系統(tǒng)中SHARC間能完成數(shù)據(jù)流的傳遞。并行系統(tǒng)中各個SHARC間數(shù)據(jù)流的傳遞同數(shù)據(jù)處理同等重要。本文針對這二種并行方式,分別給出了軟件的設計方法和設計技巧,并且給出了針對ADSP2116X的程序?qū)崿F(xiàn)。
1 共享存儲器并行系統(tǒng)的設計
SHARC為多處理器系統(tǒng)提供了強大的支持,用戶可以在不附加任何外圍電路的情況下構成共享存儲器并行系統(tǒng)。SHARC具有一套巧妙的分布式總線仲裁機制。使用2~6片SHARC把各SHARC的相應引腳相連就可以共享外部總線。每片SHARC都可以訪問其他SHARC的片內(nèi)存儲器,還可以通過設置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可以驅(qū)動外部總線,該SHARC就被稱為主處理器。其余的從SHARC如果需要訪問總線,則必須先申請總線。主處理器如果此時沒有數(shù)據(jù)傳遞或者總線占用時間到,就會釋放總線控制權,把自己的外部總線驅(qū)動為三態(tài),完成總線控制權的轉(zhuǎn)移。
主處理器對從SHARC的內(nèi)存訪問和對自己的內(nèi)存訪問一樣簡單,既可以通過內(nèi)核直接讀寫完成,也可以通過外部口DMA實現(xiàn)。在共享存儲器并行系統(tǒng)中,每一片SHARC根據(jù)自己的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便可以通過外部總線訪問對方的內(nèi)部資源。當DSP1需要直接訪問DSP2中的某一變量時,只需要DSP2將該變量設置為global類型,DSP1就可以在多處理器空間中通過外部總線直接訪問該變量,當然,也可以根據(jù)變量的內(nèi)存地址直接訪問。
評論