《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > TigerSHARC網(wǎng)絡加載的設計與實現(xiàn)

TigerSHARC網(wǎng)絡加載的設計與實現(xiàn)

2008-06-18
作者:劉三毛,, 穆賀強

  摘 要: 提出了一種由多片TigerSHARC系列DSP芯片組成的任意拓撲結構" title="拓撲結構">拓撲結構的網(wǎng)絡系統(tǒng)的構成和加載" title="加載">加載方法,。首先通過鏈路" title="鏈路">鏈路口對TigerSHARC網(wǎng)絡進行檢測,由此得到該網(wǎng)絡的加載網(wǎng)表;然后分析加載網(wǎng)表,,并實現(xiàn)整個網(wǎng)絡的加載,;最后給出網(wǎng)絡加載編程的流程圖,。
  關鍵詞: TigerSHARC 加載 網(wǎng)表

?

  隨著對實時信號處理要求的不斷提高,,盡管DSP的運算能力在不斷增強,但仍然需要由多個DSP組成大規(guī)模并行處理系統(tǒng),。ADI公司新推出的高性能靜態(tài)超標量處理器——TigerSHARC系列DSP處理芯片(包括TS101S和TS20xS)具有很強的數(shù)據(jù)運算和吞吐能力,,其獨特的結構和功能(如DMA通道、全雙工的鏈路口)特別適合用于構成大規(guī)模信號處理系統(tǒng),。
  由多片TigerSHARC系列DSP芯片組成的信號處理陣列,,稱為TigerSHARC網(wǎng)絡。對于這樣一個復雜系統(tǒng),,在上電復位后,,如何將可執(zhí)行文件放到指定的DSP中并按照規(guī)定的順序執(zhí)行程序是非常關鍵的。在分析TigerSHARC系列DSP芯片的結構特點和加載原理的基礎上,,本文提出一種任意拓撲結構的TigerSHARC網(wǎng)絡的構成和加載方法,。首先對TigerSHARC網(wǎng)絡進行自動檢測,生成加載網(wǎng)表,;然后分析該加載網(wǎng)表,,實現(xiàn)TigerSHARC網(wǎng)絡的加載;最后給出網(wǎng)絡加載的流程圖,。
1 TigerSHARC網(wǎng)絡的構成
  TigerSHARC為實現(xiàn)多處理器互聯(lián)提供了兩種方案,。
  (1)共享總線結構:多個TigerSHARC系列DSP芯片通過共享外部總線的方式構成多處理器系統(tǒng)。一個總線上最多可以有八片TigerSHARC系列DSP芯片,。這樣的系統(tǒng)又稱為緊耦合系統(tǒng),,典型結構如圖1所示。


  (2)鏈路口耦合結構" title="耦合結構">耦合結構:利用鏈路口進行處理器間的無縫連接,可以連接成不同的拓撲結構,,如流水線結構,、網(wǎng)格結構等,構建的多維處理器結構,,具有很好的擴展性和靈活性,。這樣的系統(tǒng)也叫做松耦合系統(tǒng)。網(wǎng)格結構如圖2所示,。


  對于大型系統(tǒng),,基于任務的分配,將系統(tǒng)中的DSP分成若干個處理單元,,處理單元的內部采用共享總線結構或鏈路口耦合結構,,處理單元間采用鏈路口耦合結構,。這樣可兼顧二者的優(yōu)點。
  每個處理單元或者每片DSP都可作為網(wǎng)絡中的一個節(jié)點(node),。為了討論方便,,本文中的節(jié)點指一片DSP。首先被加載的節(jié)點稱為根節(jié)點,,通過它加載的其余節(jié)點稱為從節(jié)點。
2 TigerSHARC的加載方式
  TigerSHARC有四種加載方式:鏈路口方式,、Host方式,、EPROM方式、no boot方式,。no boot方式不需要加載核,,復位后通過使能中斷請求信號使DSP自動從相應的存儲空間開始執(zhí)行。ADI公司為前三種方式分別提供了加載核,,其核心思想和功能完全一樣,,只是在實現(xiàn)代碼上稍有差異。VisualDSP++的加載器應用程序" title="應用程序">應用程序(elfloader.exe)接收加載核和用戶應用程序,,生成相應的加載程序,。但只有DSP運行了相應的加載核之后才能繼續(xù)加載用戶應用程序。
  值得注意的是:在鏈路口加載核中,,定義的常數(shù)LINK指定用于接收的鏈路口號,,要根據(jù)實際情況進行更改。如果需要對系統(tǒng)進行不同的設置,,必須在修改加載核后重新編譯加載核,,但要保證加載核長度不超過256字,并在編譯后使用,。
3 加載網(wǎng)表的生成
  要得到加載網(wǎng)表,,需要探測網(wǎng)絡中所有的鏈路連接信息,即判斷各鏈路口是否可用于加載,,可采用如下方法:
  (1)主動式探測
  設置被測鏈路口為發(fā)送狀態(tài),,往該鏈路口的發(fā)送緩沖區(qū)寫一批數(shù),如果一定時間后該發(fā)送緩沖區(qū)為空,,則該鏈路口可用于加載,。
  (2)被動式探測
  設置被測鏈路口為接收狀態(tài)并清空接收緩沖區(qū),如果一定時間后該鏈路口的接收緩沖區(qū)非空,,則該鏈路口可用于加載,。
  根節(jié)點完成自身加載后,采用主動式探測依次判斷其各鏈路口是否可用于加載,。然后通過可用于加載的鏈路口發(fā)送從節(jié)點探測程序,,指導從節(jié)點繼續(xù)網(wǎng)絡探測,;根據(jù)根節(jié)點發(fā)送所用的鏈路口號對從節(jié)點編號,將該編號與發(fā)送所用鏈路口號一起發(fā)送到該從節(jié)點并回送到根節(jié)點中保存,,同時要標記該從節(jié)點已被加載過(booted=1),。
  已被加載過的從節(jié)點首先采用主動式探測,如果發(fā)現(xiàn)有可用于加載的鏈路口,,表示存在下一級加載,,則采用和根節(jié)點相同的探測過程,并且在完成后再采取被動式探測,,得到該節(jié)點的其它鏈路連接信息并回送到根節(jié)點,;如果發(fā)現(xiàn)沒有可用于加載的鏈路口,就采用被動式探測,,得到該節(jié)點的其他鏈路連接信息并回送到根節(jié)點,。該過程的流程圖如圖3所示。


  對于每個從節(jié)點,,有兩個鏈路口很重要:用于發(fā)送下級節(jié)點程序的鏈路口(LINKt)和接收本節(jié)點及下級節(jié)點程序的鏈路口(LINKr),。LINKt 作為本節(jié)點的加載路徑信息的一個元素;LINKr用于本節(jié)點的鏈路口加載核的生成,。
  因為一個從節(jié)點可能有多種加載路徑,,在得到網(wǎng)絡的鏈路連接關系后,可根據(jù)信號處理任務的分配為各節(jié)點選擇加載路徑,。將各節(jié)點的加載信息,,包括加載路徑信息、加載程序,、代碼長度和參數(shù)等以一定的格式組織,,作為該節(jié)點的加載文件包;該網(wǎng)絡中所有節(jié)點的加載文件包組成該網(wǎng)絡的加載網(wǎng)表,;在加載網(wǎng)表的最后增加一個代碼長度為0的虛擬節(jié)點的加載文件包(見表1最后一行),,用來通知各節(jié)點網(wǎng)絡加載的結束。
  圖4為某DSP系統(tǒng)的網(wǎng)絡拓撲結構圖,,表1為該網(wǎng)絡的加載網(wǎng)表,。

?


4 網(wǎng)絡加載過程分析
  在這里采用一臺PC機作為主機。上電復位后,,PC機先指導TigerSHARC網(wǎng)絡進行自動檢測,,處理返回信息,生成加載網(wǎng)表,;然后進行網(wǎng)絡的加載,。根節(jié)點采用Host方式加載后,每次從PC機中讀取并分析一個從節(jié)點的加載文件包,并通過鏈路口發(fā)送給從節(jié)點,,指導從節(jié)點以鏈路口方式完成網(wǎng)絡加載,。可以為其單獨寫一個加載程序,。
  從節(jié)點的加載程序按功能可分為三部分:256字的LINK加載核,、網(wǎng)絡加載程序、用戶程序,。LINK加載核在完成本節(jié)點的初始化后,,繼續(xù)通過鏈路口接收本節(jié)點的網(wǎng)絡加載程序和用戶程序并完成自身的覆蓋。然后開始執(zhí)行網(wǎng)絡加載程序,,其作用是接收并發(fā)送下級節(jié)點的加載文件,,進行網(wǎng)絡加載。網(wǎng)絡加載完成以后,,就等待運行用戶程序。
  網(wǎng)絡加載程序是實現(xiàn)網(wǎng)絡加載的關鍵,,因此筆者寫一個適用于所有從節(jié)點的程序netboot()來完成此功能,。在每個節(jié)點中設置一個有四個元素的數(shù)組booted[4]標志各鏈路口的狀態(tài)(各元素依次對應鏈路口0~3),booted[4]為1表示鏈路口處于發(fā)送狀態(tài),;為0表示鏈路口被關閉,。鏈路口方式加載采用的是核訪問方式,即將要傳輸?shù)臄?shù)據(jù)通過鏈路口的發(fā)送緩沖區(qū)發(fā)送,。


  netboot()程序流程如圖5所示,,其過程如下:
  (1)保存部分寄存器的值,用于在網(wǎng)絡加載完成后恢復這些寄存器的值,。禁止DMA傳輸,,設置數(shù)組booted[4]所有元素的值為0,開辟緩沖區(qū)temp,。
  (2)接收并保存本節(jié)點的參數(shù)arc和argv,,供本節(jié)點用戶程序運行時使用。
  (3)讀下一節(jié)點的代碼長度CodeLength,。如果CodeLength為零,,則表示網(wǎng)絡加載已經(jīng)結束,跳轉至(8),;否則,,繼續(xù)執(zhí)行加載。
  (4)讀出發(fā)送下一節(jié)點程序所用的鏈路口t,。如果booted[t]=1,,將t從下一節(jié)點的加載路徑信息中去掉,并將代碼長度減去1,其余信息不變,,然后將更新后的加載文件包發(fā)送到下一節(jié)點,;如果booted[t]!=1,,則屏蔽寄存器中鏈路口t對應的發(fā)送結束中斷,,然后讀寄存器中鏈路口t對應的發(fā)送請求標志。當鏈路口t有發(fā)送請求時,,設置鏈路口t為核訪問方式輸出,,且置booted[t]=1。
  (5)接收并發(fā)送下一節(jié)點的256字加載核程序,。
  (6)等待一段時間,,以保證加載核在下一節(jié)點的運行。
  (7)接收并發(fā)送下一節(jié)點余下的程序代碼,。完成后跳轉到(3)繼續(xù)執(zhí)行,。
  (8)關閉所有接收鏈路口,清除緩沖區(qū)temp和鏈路狀態(tài)寄存器。
  (9)依次通過本節(jié)點用于加載的鏈路口向下一節(jié)點發(fā)送緩沖區(qū)temp中的值,,然后關閉該鏈路口,。由于緩沖區(qū)temp中的數(shù)據(jù)為0,被下一個節(jié)點當作代碼長度使用,,從而結束后續(xù)各節(jié)點的加載過程,。
  (10)清中斷鎖存器,等待一段時間后,,恢復寄存器設置,。結束netboot()過程,并等待執(zhí)行本節(jié)點的用戶程序,。
  本文介紹的TigerSHARC網(wǎng)絡加載和編程方法簡單,、可靠,并在筆者研制的基于TS101S和TS201S的信號處理系統(tǒng)上進行了驗證,。該方法具有一定的普遍性,,對同類DSP的應用具有較高的參考價值。
參考文獻
1 ADSP-TS201S TigerSHARC Processor Hardware Refer-ence. Analog Devices Inc.,,2003
2 ADSP-TS201S TigerSHARC Processor Programming Reference. Analog Devices Inc.,,2003
3 VisualDSP++3.5 Loader Manual for 32-bit Processors. Analog Devices Inc.,2003

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