<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種面向多核DSP的小容量緊耦合快速共享數(shù)據(jù)池

          一種面向多核DSP的小容量緊耦合快速共享數(shù)據(jù)池

          作者: 時間:2009-04-02 來源:網(wǎng)絡 收藏

          1. 引言

          多核數(shù)字信號處理器(DSP)是近年來針對高性能嵌入式應用而出現(xiàn)的一類多核微處理器(CMP)。相比傳統(tǒng)的單核處理器,多核處理器在提高并行處理能力的同時也需要更高的存儲帶寬和更靈活的存儲結(jié)構(gòu)。(SPM)是一種小容量的片上存儲器,具有全局地址空間,可以由訪存指令直接訪問。SPM僅僅包含存儲陣列和譯碼邏輯,沒有Cache那樣復雜的Tag比較邏輯和替換策略,在電路面積和功耗方面比Cache更具優(yōu)勢。另外,SPM采用固定的存儲映射方式,沒有訪問失效問題,能夠保證單拍(或確定節(jié)拍)的訪問時間,便于用戶顯式地管理和調(diào)度其中的數(shù)據(jù),適合嵌入式實時計算的特點。

          根據(jù)的應用需求,并結(jié)合SPM的結(jié)構(gòu)特征和的編程優(yōu)勢,本文提出了一種面向的快速共享數(shù)據(jù)緩沖池FSDP,對其進行了設計實現(xiàn)和模擬分析。分析結(jié)果表明,F(xiàn)SDP對于DSP核間細粒度共享數(shù)據(jù)(例如某些全局變量、公共系數(shù)矩陣等)的傳輸具有很高的效率,相比類似的VS-SPM結(jié)構(gòu)能夠?qū)⒊绦蛐阅芴岣?7%,與傳統(tǒng)的共享數(shù)據(jù)Cache結(jié)合使用能夠?qū)悩?gòu)的性能提高13%。

          本文的組織結(jié)構(gòu)如下。第2部分介紹了國內(nèi)外的研究現(xiàn)狀,第3部分介紹了異構(gòu)多核DSP的總體結(jié)構(gòu)原型,第4部分詳細介紹了FSDP的組成結(jié)構(gòu)、訪問方法和同步機制。第5部分介紹了設計優(yōu)化方法,構(gòu)建了關于最佳單體容量的分析模型。第6部分介紹了設計實現(xiàn)和模擬分析結(jié)果。最后一部分總結(jié)了全文。

          2. 相關工作

          近年來,國外學者在SPM領域已經(jīng)展開了積極的研究。Banakar等人針對計算密集型應用,使用專用工具(CACTI)計算出了各種容量的SPM和Cache的面積和功耗,使用Trace模擬器進行了性能對比。結(jié)果表明,同樣容量的SPM的平均功耗比Cache降低了40%。Issenin等人也認為,如果通過數(shù)據(jù)重用技術,將經(jīng)常使用的數(shù)據(jù)放在小容量的SPM中,用片內(nèi)局部傳輸代替片外全局傳輸,不但可以節(jié)省約一半的功耗,而且大大提高了傳輸效率。Kandemir和Suhendra等人基于一種虛擬共享便箋式存儲器(VS-SPM)的多核處理器原型,如圖1所示。通過任務映射、調(diào)度、SPM劃分和數(shù)據(jù)分配等編譯優(yōu)化算法,提高片內(nèi)數(shù)據(jù)重用性,減少不必要的片外訪存,其宣稱的實驗結(jié)果能夠把嵌入式應用的性能提高80%。

          這些已有的工作主要是從軟件的角度研究如何優(yōu)化SPM的存儲分配與管理,而且大部分是基于單核處理器的研究,對于多核處理器環(huán)境下SPM的體系結(jié)構(gòu)研究還不夠充分。特別在的方式下,必須根據(jù)實際應用中核間數(shù)據(jù)共享與傳輸?shù)奶攸c,研究速度快、結(jié)構(gòu)靈活的SPM存儲結(jié)構(gòu)。本文提出的FSDP采用多體并行和交叉訪問的方式,訪問延遲小,存取速度快;提供了硬件信號燈和軟件查詢兩種同步機制,同步開銷低,編程使用靈活。

          3. 異構(gòu)多核DSP總體結(jié)構(gòu)




          圖1 異構(gòu)多核DSP“SDSP”的總體結(jié)構(gòu)

          異構(gòu)多核DSP“SDSP”的總體結(jié)構(gòu)如圖1所示,它由四個精簡的32位浮點DSP核與一個32位的RISC核構(gòu)成。DSP核采用課題組自行研制的32位高性能浮點DSP“YHFT-DSP700”的精簡內(nèi)核。該DSP內(nèi)核主頻300MHz,8流出超長指令字(VLIW)結(jié)構(gòu)。四個DSP內(nèi)核空間。每個DSP核具有私有的一級數(shù)據(jù)Cache(L1D)和一級指令Cache(L1P),共享二級Cache/SRAM(L2)和FSDP。FSDP與L1D處于同一個存儲層次,具有不可Cache的全局存儲空間,可以被四個DSP核的訪存指令直接訪問。

          RISC核采用開放體系結(jié)構(gòu)與源碼的LEON處理器。LEON是一款高度可配置的32位通用RISC處理器,兼容SPARC V8指令集,采用7級整數(shù)流水線,指令Cache和數(shù)據(jù)Cache分離。片上集成了AMBA 2.0總線,掛接存儲控制器、PCI模塊、CAN接口等外設模塊。

          4. 快速共享數(shù)據(jù)緩沖池FSDP體系結(jié)構(gòu)

          FSDP是一個四通道共享存儲結(jié)構(gòu),每個DSP核對應一個通道,每個通道包括兩個大小相同的存儲體SAi和SBi(i=1,2,3,4)、存控邏輯和讀寫隊列。四個通道依次順序編址,通過高速交叉開關(Crossbar)構(gòu)成整個共享數(shù)據(jù)緩沖池,如圖2所示。另外,F(xiàn)SDP采用了一組控制寄存器,通過公共的配置總線與四個DSP核相連,用于同步/互斥、狀態(tài)查詢、優(yōu)先級控制等操作。



          圖2 FSDP的組成結(jié)構(gòu)及其與DSP核的連接關系

          FSDP采用多體并行交叉訪問的機制,提供了“私有”和“共享”兩種工作模式,支持多個DSP核的并行訪問與核間數(shù)據(jù)流的傳輸。FSDP基于共享存儲模型,為用戶提供了硬件自動阻塞和軟件手工查詢兩種同步機制。多核DSP程序產(chǎn)生的中間結(jié)果、公共變量、系數(shù)常量、查找表等數(shù)據(jù)結(jié)構(gòu)都可以通過FSDP實現(xiàn)快速的細粒度數(shù)據(jù)傳輸與交換。而大批量的全局數(shù)據(jù)和用戶程序則存放在片外存儲器中,通過兩級Cache進行訪問。下面,本文將詳細介紹FSDP的組成結(jié)構(gòu)和關鍵技術。

          4.1 帶旁路的讀寫隊列與解耦的存控邏輯

          為了緩存因訪問沖突或同步失敗而被阻塞的讀/寫訪問,我們?yōu)槊總€DSP核分別設置了讀/寫隊列,直接緩存各個DSP核Load/Store單元發(fā)出的訪問請求。為了縮短訪問延遲,我們?yōu)樽x/寫隊列設置了旁路邏輯。當沒有訪問沖突且核間同步握手成功時,讀寫請求不需進入讀寫隊列,由旁路邏輯將請求直接發(fā)送給相應的存控邏輯。這一設計縮短了訪問延遲,有效增強了FSDP的傳輸效率。下圖3給出了帶旁路的讀寫隊列結(jié)構(gòu)。為了加快地址譯碼速度,本文將地址譯碼邏輯和訪問控制邏輯進行了解耦處理,將譯碼器置于旁路邏輯之前,縮短控制邏輯的關鍵路徑,提高了FSDP的訪問速度。




          圖3 帶旁路的讀寫隊列

          4.2 雙模式操作與交叉訪問

          本文為FSDP設計了“私有”和“共享”兩種工作模式。

          在私有模式下,任意DSP核DSP-i只能讀寫與其對應通道內(nèi)的兩個存儲體SAi和SBi(i=1,2,3,4),不能訪問其他的通道;

          在共享模式下,每個DSP核可以讀取另外三個通道的數(shù)據(jù),但不能向其中寫入數(shù)據(jù)。任意DSP核必須通過其對應通道的兩個存儲體與其他DSP核交換共享數(shù)據(jù)。

          可見,在私有模式下,所有的存儲體都不存在訪問競爭,訪問速度快。在共享模式下,F(xiàn)SDP不存在多核寫沖突的問題,簡化了維護數(shù)據(jù)一致性的硬件開銷,提高了核間共享數(shù)據(jù)的傳輸速度,有利于提高嵌入式應用的實時性。

          在任務流水的計算模式下,DSP核間的共享數(shù)據(jù)相繼構(gòu)成“生產(chǎn)者-消費者”關系:前一個核的計算輸出直接作為下一個核的計算輸入。為了有效支持這種傳輸模式,我們在FSDP中采用了交叉訪問的機制:

          當“生產(chǎn)者”DSP-i向存儲體SAi寫入第一塊共享數(shù)據(jù)之后,釋放該存儲體,轉(zhuǎn)而向SBi寫入第二塊共享數(shù)據(jù);

          “消費者”DSP-j(j≠i)啟動讀訪問,從SAi讀出第一塊共享數(shù)據(jù);

          當這一過程完成后,雙方交叉,DSP-i釋放存儲體SBi,向SAi寫入第三塊共享數(shù)據(jù),DSP-j則從SBi讀出第二塊共享數(shù)據(jù),依此類推,直至傳輸完成。

          因此,在寫入第一塊共享數(shù)據(jù)之后,讀寫操作就可以并行執(zhí)行。當雙方的計算負載均衡,速度匹配的時候,DSP核之間可以進行流水傳輸,同步等待延遲最小,傳輸效率達到最高。

          4.3 模型與基于信號燈的快速同步機制

          在共享存儲的(RC)模型中,同步操作包括“獲取”和“釋放”兩種操作,分別用于取得對共享存儲單元的獨占性訪問權和解除這一訪問權。參照基本的RC模型,本文為FSDP設計了一套簡潔、高效的控制邏輯和同步機制。

          首先,為每個存儲體設置3個“信號燈”寄存器,分別對應除本通道之外的其他3個DSP核,作為同步/互斥操作的硬件鎖?!靶盘枱簟奔拇嫫饔成淞巳止蚕淼奈锢淼刂罚ㄟ^公共配置總線與四個DSP核相連。每個“信號燈”具有“點亮”和“熄滅”兩種狀態(tài),分別表示存儲體內(nèi)的共享數(shù)據(jù)“已寫入”和“已讀出”。DSP核通過同步指令改寫“信號燈”寄存器的狀態(tài),實現(xiàn)核間的同步操作。具體的數(shù)據(jù)一致性協(xié)議為:

          當“生產(chǎn)者”DSP-i向某個存儲體寫入共享數(shù)據(jù)后,將其“信號燈”置為“點亮”狀態(tài)。若這批共享數(shù)據(jù)有2~3個“消費者”,則點亮相應的2~3個“信號燈”。在某個“信號燈”處于“熄滅”狀態(tài)時,相應的DSP核對該存儲體的讀請求全部進入讀隊列等待。

          當“消費者”DSP-j讀出某個存儲體的共享數(shù)據(jù)后,將該存儲體與自己對應的“信號燈”置為“熄滅”狀態(tài)。當某個存儲體的所有3個“信號燈”都“熄滅”時,該存儲體被釋放,處于可寫狀態(tài);否則,DSP核對該存儲體的寫請求全部進入寫隊列等待。

          “點亮”和“熄滅”信號燈的順序一致性由DSP核對公共配置總線的獨占性訪問來保證。

          需要說明的是,DSP核不一定要將其對應的存儲體寫滿才能點亮“信號燈”,一次同步操作所傳輸?shù)臄?shù)據(jù)量最小可以是一個字節(jié),最大不超過單個存儲體的容量。

          由于FSDP的訪存通路與同步操作通路(即配置總線)是相互分離的,因此可能出現(xiàn)同步操作指令通過配置總線先于訪存指令提前執(zhí)行的錯誤情況。本文通過軟件延遲槽的方式解決這一問題:由編譯器通過指令調(diào)度技術,在最后一條共享數(shù)據(jù)的讀指令和“熄燈”指令之間插入1~2條無關指令或空操作(NOP),作為等待共享數(shù)據(jù)返回的延遲槽,確保最后一個讀請求被處理之后再執(zhí)行“熄燈”操作。具體所需的軟件延遲槽數(shù)量取決于DSP流水線的設計。對于本文而言,如果DSP核在發(fā)出Load指令的第3拍沒有接收到返回的數(shù)據(jù),則暫停指令派發(fā),因此只需要2個延遲槽。圖4給出了兩個DSP核i和j傳遞共享數(shù)據(jù)的實例。



          (a)延遲槽與同步操作的程序?qū)嵗?BR>


          (b)存儲體的內(nèi)容變化與信號燈狀態(tài)

          圖4 兩個DSP核通過兩個存儲體傳遞共享數(shù)據(jù)的例子

          本文最終的優(yōu)化設計表明,任意兩個DSP核利用一對LOAD-STORE指令再加上一次同步操作,總共只需4拍即可完成一個共享數(shù)據(jù)字的傳遞,從而實現(xiàn)了核間細粒度共享數(shù)據(jù)的快速傳輸。當需要傳輸?shù)墓蚕頂?shù)據(jù)量超過FSDP單通道存儲容量時,可以將數(shù)據(jù)分塊,進行多次傳輸。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();