1. 引言 多核數字信號處理器(DSP)是近年來(lái)針對高性能嵌入式應用而出現的一類(lèi)多核微處理器(CMP)。相比傳統的單核處理器,多核處理器在提高并行處理能力的同時(shí)也需要更高的存儲帶寬和更靈活的存儲結構。便箋存儲器(SPM)是一種小容量的片上存儲器,具有全局地址空間,可以由訪(fǎng)存指令直接訪(fǎng)問(wèn)。SPM僅僅包含存儲陣列和譯碼邏輯,沒(méi)有Cache那樣復雜的Tag比較邏輯和替換策略,在電路面積和功耗方面比Cache更具優(yōu)勢。另外,SPM采用固定的存儲映射方式,沒(méi)有訪(fǎng)問(wèn)失效問(wèn)題,能夠保證單拍(或確定節拍)的訪(fǎng)問(wèn)時(shí)間,便于用戶(hù)顯式地管理和調度其中的數據,適合嵌入式實(shí)時(shí)計算的特點(diǎn)。 根據多核DSP的應用需求,并結合SPM的結構特征和共享存儲的編程優(yōu)勢,本文提出了一種面向多核DSP的快速共享數據緩沖池FSDP,對其進(jìn)行了設計實(shí)現和模擬分析。分析結果表明,FSDP對于DSP核間細粒度共享數據(例如某些全局變量、公共系數矩陣等)的傳輸具有很高的效率,相比類(lèi)似的VS-SPM結構能夠將程序性能提高37%,與傳統的共享數據Cache結合使用能夠將異構多核DSP的性能提高13%。 本文的組織結構如下。第2部分介紹了國內外的研究現狀,第3部分介紹了異構多核DSP的總體結構原型,第4部分詳細介紹了FSDP的組成結構、訪(fǎng)問(wèn)方法和同步機制。第5部分介紹了設計優(yōu)化方法,構建了關(guān)于最佳單體容量的分析模型。第6部分介紹了設計實(shí)現和模擬分析結果。最后一部分總結了全文。 2. 相關(guān)工作 近年來(lái),國外學(xué)者在SPM領(lǐng)域已經(jīng)展開(kāi)了積極的研究。Banakar等人針對計算密集型應用,使用專(zhuān)用工具(CACTI)計算出了各種容量的SPM和Cache的面積和功耗,使用Trace模擬器進(jìn)行了性能對比。結果表明,同樣容量的SPM的平均功耗比Cache降低了40%。Issenin等人也認為,如果通過(guò)數據重用技術(shù),將經(jīng)常使用的數據放在小容量的SPM中,用片內局部傳輸代替片外全局傳輸,不但可以節省約一半的功耗,而且大大提高了傳輸效率。Kandemir和Suhendra等人基于一種虛擬共享便箋式存儲器(VS-SPM)的多核處理器原型,如圖1所示。通過(guò)任務(wù)映射、調度、SPM劃分和數據分配等編譯優(yōu)化算法,提高片內數據重用性,減少不必要的片外訪(fǎng)存,其宣稱(chēng)的實(shí)驗結果能夠把嵌入式應用的性能提高80%。 這些已有的工作主要是從軟件的角度研究如何優(yōu)化SPM的存儲分配與管理,而且大部分是基于單核處理器的研究,對于多核處理器環(huán)境下SPM的體系結構研究還不夠充分。特別在共享存儲的方式下,必須根據實(shí)際應用中核間數據共享與傳輸的特點(diǎn),研究速度快、結構靈活的SPM存儲結構。本文提出的FSDP采用多體并行和交叉訪(fǎng)問(wèn)的方式,訪(fǎng)問(wèn)延遲小,存取速度快;提供了硬件信號燈和軟件查詢(xún)兩種同步機制,同步開(kāi)銷(xiāo)低,編程使用靈活。 3. 異構多核DSP總體結構 圖1 異構多核DSP“SDSP”的總體結構 異構多核DSP“SDSP”的總體結構如圖1所示,它由四個(gè)精簡(jiǎn)的32位浮點(diǎn)DSP核與一個(gè)32位的RISC核構成。DSP核采用課題組自行研制的32位高性能浮點(diǎn)DSP“YHFT-DSP700”的精簡(jiǎn)內核。該DSP內核主頻300MHz,8流出超長(cháng)指令字(VLIW)結構。四個(gè)DSP內核共享存儲空間。每個(gè)DSP核具有私有的一級數據Cache(L1D)和一級指令Cache(L1P),共享二級Cache/SRAM(L2)和FSDP。FSDP與L1D處于同一個(gè)存儲層次,具有不可Cache的全局存儲空間,可以被四個(gè)DSP核的訪(fǎng)存指令直接訪(fǎng)問(wèn)。 RISC核采用開(kāi)放體系結構與源碼的LEON處理器。LEON是一款高度可配置的32位通用RISC處理器,兼容SPARC V8指令集,采用7級整數流水線(xiàn),指令Cache和數據Cache分離。片上集成了AMBA 2.0總線(xiàn),掛接存儲控制器、PCI模塊、CAN接口等外設模塊。 4. 快速共享數據緩沖池FSDP體系結構 FSDP是一個(gè)四通道共享存儲結構,每個(gè)DSP核對應一個(gè)通道,每個(gè)通道包括兩個(gè)大小相同的存儲體SAi和SBi(i=1,2,3,4)、存控邏輯和讀寫(xiě)隊列。四個(gè)通道依次順序編址,通過(guò)高速交叉開(kāi)關(guān)(Crossbar)構成整個(gè)共享數據緩沖池,如圖2所示。另外,FSDP采用了一組控制寄存器,通過(guò)公共的配置總線(xiàn)與四個(gè)DSP核相連,用于同步/互斥、狀態(tài)查詢(xún)、優(yōu)先級控制等操作。 圖2 FSDP的組成結構及其與DSP核的連接關(guān)系 FSDP采用多體并行交叉訪(fǎng)問(wèn)的機制,提供了“私有”和“共享”兩種工作模式,支持多個(gè)DSP核的并行訪(fǎng)問(wèn)與核間數據流的傳輸。FSDP基于釋放一致性共享存儲模型,為用戶(hù)提供了硬件自動(dòng)阻塞和軟件手工查詢(xún)兩種同步機制。多核DSP程序產(chǎn)生的中間結果、公共變量、系數常量、查找表等數據結構都可以通過(guò)FSDP實(shí)現快速的細粒度數據傳輸與交換。而大批量的全局數據和用戶(hù)程序則存放在片外存儲器中,通過(guò)兩級Cache進(jìn)行訪(fǎng)問(wèn)。下面,本文將詳細介紹FSDP的組成結構和關(guān)鍵技術(shù)。 4.1 帶旁路的讀寫(xiě)隊列與解耦的存控邏輯 為了緩存因訪(fǎng)問(wèn)沖突或同步失敗而被阻塞的讀/寫(xiě)訪(fǎng)問(wèn),我們?yōu)槊總(gè)DSP核分別設置了讀/寫(xiě)隊列,直接緩存各個(gè)DSP核Load/Store單元發(fā)出的訪(fǎng)問(wèn)請求。為了縮短訪(fǎng)問(wèn)延遲,我們?yōu)樽x/寫(xiě)隊列設置了旁路邏輯。當沒(méi)有訪(fǎng)問(wèn)沖突且核間同步握手成功時(shí),讀寫(xiě)請求不需進(jìn)入讀寫(xiě)隊列,由旁路邏輯將請求直接發(fā)送給相應的存控邏輯。這一設計縮短了訪(fǎng)問(wèn)延遲,有效增強了FSDP的傳輸效率。下圖3給出了帶旁路的讀寫(xiě)隊列結構。為了加快地址譯碼速度,本文將地址譯碼邏輯和訪(fǎng)問(wèn)控制邏輯進(jìn)行了解耦處理,將譯碼器置于旁路邏輯之前,縮短控制邏輯的關(guān)鍵路徑,提高了FSDP的訪(fǎng)問(wèn)速度。 圖3 帶旁路的讀寫(xiě)隊列 4.2 雙模式操作與交叉訪(fǎng)問(wèn) 本文為FSDP設計了“私有”和“共享”兩種工作模式。 在私有模式下,任意DSP核DSP-i只能讀寫(xiě)與其對應通道內的兩個(gè)存儲體SAi和SBi(i=1,2,3,4),不能訪(fǎng)問(wèn)其他的通道;在共享模式下,每個(gè)DSP核可以讀取另外三個(gè)通道的數據,但不能向其中寫(xiě)入數據。任意DSP核必須通過(guò)其對應通道的兩個(gè)存儲體與其他DSP核交換共享數據。 可見(jiàn),在私有模式下,所有的存儲體都不存在訪(fǎng)問(wèn)競爭,訪(fǎng)問(wèn)速度快。在共享模式下,FSDP不存在多核寫(xiě)沖突的問(wèn)題,簡(jiǎn)化了維護數據一致性的硬件開(kāi)銷(xiāo),提高了核間共享數據的傳輸速度,有利于提高嵌入式應用的實(shí)時(shí)性。 在任務(wù)流水的計算模式下,DSP核間的共享數據相繼構成“生產(chǎn)者-消費者”關(guān)系:前一個(gè)核的計算輸出直接作為下一個(gè)核的計算輸入。為了有效支持這種傳輸模式,我們在FSDP中采用了交叉訪(fǎng)問(wèn)的機制: 當“生產(chǎn)者”DSP-i向存儲體SAi寫(xiě)入第一塊共享數據之后,釋放該存儲體,轉而向SBi寫(xiě)入第二塊共享數據; “消費者”DSP-j(j≠i)啟動(dòng)讀訪(fǎng)問(wèn),從SAi讀出第一塊共享數據; 當這一過(guò)程完成后,雙方交叉,DSP-i釋放存儲體SBi,向SAi寫(xiě)入第三塊共享數據,DSP-j則從SBi讀出第二塊共享數據,依此類(lèi)推,直至傳輸完成。 因此,在寫(xiě)入第一塊共享數據之后,讀寫(xiě)操作就可以并行執行。當雙方的計算負載均衡,速度匹配的時(shí)候,DSP核之間可以進(jìn)行流水傳輸,同步等待延遲最小,傳輸效率達到最高。 4.3 釋放一致性模型與基于信號燈的快速同步機制 在共享存儲的釋放一致性(RC)模型中,同步操作包括“獲取”和“釋放”兩種操作,分別用于取得對共享存儲單元的獨占性訪(fǎng)問(wèn)權和解除這一訪(fǎng)問(wèn)權。參照基本的RC模型,本文為FSDP設計了一套簡(jiǎn)潔、高效的控制邏輯和同步機制。 首先,為每個(gè)存儲體設置3個(gè)“信號燈”寄存器,分別對應除本通道之外的其他3個(gè)DSP核,作為同步/互斥操作的硬件鎖!靶盘枱簟奔拇嫫饔成淞巳止蚕淼奈锢淼刂,通過(guò)公共配置總線(xiàn)與四個(gè)DSP核相連。每個(gè)“信號燈”具有“點(diǎn)亮”和“熄滅”兩種狀態(tài),分別表示存儲體內的共享數據“已寫(xiě)入”和“已讀出”。DSP核通過(guò)同步指令改寫(xiě)“信號燈”寄存器的狀態(tài),實(shí)現核間的同步操作。具體的數據一致性協(xié)議為: 當“生產(chǎn)者”DSP-i向某個(gè)存儲體寫(xiě)入共享數據后,將其“信號燈”置為“點(diǎn)亮”狀態(tài)。若這批共享數據有2~3個(gè)“消費者”,則點(diǎn)亮相應的2~3個(gè)“信號燈”。在某個(gè)“信號燈”處于“熄滅”狀態(tài)時(shí),相應的DSP核對該存儲體的讀請求全部進(jìn)入讀隊列等待。 當“消費者”DSP-j讀出某個(gè)存儲體的共享數據后,將該存儲體與自己對應的“信號燈”置為“熄滅”狀態(tài)。當某個(gè)存儲體的所有3個(gè)“信號燈”都“熄滅”時(shí),該存儲體被釋放,處于可寫(xiě)狀態(tài);否則,DSP核對該存儲體的寫(xiě)請求全部進(jìn)入寫(xiě)隊列等待。 “點(diǎn)亮”和“熄滅”信號燈的順序一致性由DSP核對公共配置總線(xiàn)的獨占性訪(fǎng)問(wèn)來(lái)保證。 需要說(shuō)明的是,DSP核不一定要將其對應的存儲體寫(xiě)滿(mǎn)才能點(diǎn)亮“信號燈”,一次同步操作所傳輸的數據量最小可以是一個(gè)字節,最大不超過(guò)單個(gè)存儲體的容量。 由于FSDP的訪(fǎng)存通路與同步操作通路(即配置總線(xiàn))是相互分離的,因此可能出現同步操作指令通過(guò)配置總線(xiàn)先于訪(fǎng)存指令提前執行的錯誤情況。本文通過(guò)軟件延遲槽的方式解決這一問(wèn)題:由編譯器通過(guò)指令調度技術(shù),在最后一條共享數據的讀指令和“熄燈”指令之間插入1~2條無(wú)關(guān)指令或空操作(NOP),作為等待共享數據返回的延遲槽,確保最后一個(gè)讀請求被處理之后再執行“熄燈”操作。具體所需的軟件延遲槽數量取決于DSP流水線(xiàn)的設計。對于本文而言,如果DSP核在發(fā)出Load指令的第3拍沒(méi)有接收到返回的數據,則暫停指令派發(fā),因此只需要2個(gè)延遲槽。圖4給出了兩個(gè)DSP核i和j傳遞共享數據的實(shí)例。 (a)延遲槽與同步操作的程序實(shí)例 (b)存儲體的內容變化與信號燈狀態(tài) 圖4 兩個(gè)DSP核通過(guò)兩個(gè)存儲體傳遞共享數據的例子 本文最終的優(yōu)化設計表明,任意兩個(gè)DSP核利用一對LOAD-STORE指令再加上一次同步操作,總共只需4拍即可完成一個(gè)共享數據字的傳遞,從而實(shí)現了核間細粒度共享數據的快速傳輸。當需要傳輸的共享數據量超過(guò)FSDP單通道存儲容量時(shí),可以將數據分塊,進(jìn)行多次傳輸。 除了這種對程序員透明的硬件同步機制之外,FSDP還支持基于軟件查詢(xún)的同步機制。即在每次改變信號燈狀態(tài)前,插入一段查詢(xún)“信號燈”狀態(tài)的例程,然后根據查詢(xún)的結果決定程序的流向。 4.4 消除讀訪(fǎng)問(wèn)沖突 在FSDP的共享模式下存在多DSP核同時(shí)讀一個(gè)存儲體的沖突。雖然利用仲裁邏輯配合隊列機制可以緩解沖突,但是,這種方式降低了FSDP的并行性。另外,可以采用存儲體復制或者采用多端口存儲體的方式。為此,本文進(jìn)行了對比實(shí)驗,結果表明,4個(gè)1KB大小的單端口SRAM在工作頻率和面積上都優(yōu)于4端口1KB的全定制SRAM模塊,而且單端口SRAM可以由EDA工具快速編譯生成,便于設計實(shí)現。因此,對于FSDP這類(lèi)小容量的便箋存儲器,本文采用存儲體復制的方式解決訪(fǎng)問(wèn)沖突:將原來(lái)的每個(gè)存儲體換成4個(gè)同樣大小的單端口存儲體,構成具有4個(gè)虛擬端口的存儲體,如圖5所示。 在處理讀寫(xiě)訪(fǎng)問(wèn)時(shí),存控邏輯自動(dòng)進(jìn)行數據寫(xiě)復制和讀端口的分配工作,讀寫(xiě)過(guò)程中對用戶(hù)都是透明的。這種方式完全消除了多核的讀訪(fǎng)問(wèn)沖突,實(shí)現了最大的共享訪(fǎng)問(wèn)帶寬,提高了FSDP的并行性和實(shí)時(shí)性。 圖5 存儲體復制構成虛擬多端口存儲體 5. 性能分析 5.1 分析模型與設計實(shí)現 本文構建了整個(gè)SDSP的C語(yǔ)言模擬器SDSP-Sim。SDSP-Sim是一個(gè)時(shí)鐘精確的模擬器,能夠運行經(jīng)過(guò)編譯和手工分配的多核DSP應用程序,報告程序運行的各種統計信息和計算結果。每個(gè)處理器核占用一個(gè)模擬進(jìn)程,RISC與DSP核之間采用進(jìn)程通信的方式傳輸控制信息。本文以MediaBench基準程序集為基礎,選擇了6組典型的多媒體類(lèi)與通信類(lèi)應用程序,用于評測FSDP的性能,如表1所示。為了滿(mǎn)足多核DSP的并行計算需求,對于原來(lái)復雜度較低的一些測試程序,例如PEGWIT和JPEG_c,本文擴大了它們的數據集。對于MP3解碼程序MP3_d則將其擴展為兩路并行解碼器2MP3_d。由于SDSP的并行編譯器開(kāi)發(fā)工作還沒(méi)有完成,本文仍采用手工的方式對測試程序進(jìn)行并行化映射。 表1 用于性能評測的測試程序說(shuō)明 本文采用SMIC 0.13μm CMOS工藝庫對FSDP進(jìn)行了設計實(shí)現。其中各存儲體采用EDA工具生成的單端口SRAM。下表2給出了FSDP的各項設計指標。其中,“無(wú)阻塞讀延遲”是指在同步成功且沒(méi)有沖突的情況下,從DSP核發(fā)出讀請求到獲得返回數據之間的時(shí)間間隔。 表2 0.13μm CMOS工藝下四通道FSDP的各項性能指標 5.2 性能對比 對于多核處理器共享SPM的研究,前人的工作主要是針對SPM的編譯優(yōu)化和數據劃分算法的研究。文獻0介紹的VS-SPM(虛擬共享便箋存儲器)原型結構與本文的FSDP有類(lèi)似之處,它根據SPM與處理器核的關(guān)系,將SPM分成本地SPM和遠程SPM,各個(gè)處理器核通過(guò)共享總線(xiàn)訪(fǎng)問(wèn)各SPM模塊。下表3對比了本文的FSDP與VS-SPM在結構上的差異。VS-SPM主要是針對編譯優(yōu)化和數據劃分算法優(yōu)化而設計的,其硬件優(yōu)化程度和訪(fǎng)問(wèn)速度都不及FSDP,而且沒(méi)有解決多個(gè)處理器核并行訪(fǎng)問(wèn)沖突的問(wèn)題,不支持核間數據的流水傳輸。 表3 FSDP與VS-SPM的結構對比 本文建立了VS-SPM的結構模型,將DSP核間同樣一批共享數據先后映射到VS-SPM和FSDP的存儲空間上,分別得到兩種結構下程序的執行時(shí)間TVS-SPM和TF-SDP,然后按照(1)式計算出FSDP相對VS-SPM的性能加速比。 圖6給出了6組測試程序的實(shí)驗結果。結果表明,通過(guò)FSDP在DSP核之間傳輸共享數據相比通過(guò)VS-SPM傳輸具有明顯的性能優(yōu)勢,6組程序的平均性能加速比達到了1.37。 圖6 FSDP相對VS-SPM的性能加速比 在引入FSDP之前,異構多核DSP主要通過(guò)共享L2 Cache傳輸DSP核間的共享數據。為了評測FSDP對系統性能的加速作用,本文比較了下列三種數據映射方式下異構多核DSP的計算性能: 僅用L2 Cache:DSP核間的共享數據全部通過(guò)L2傳輸; 僅用FSDP:DSP核間的共享數據全部通過(guò)FSDP傳輸; FSDP + L2:將DSP核間的不規則共享數據映射到FSDP的地址空間,其余的共享數據流仍通過(guò)L2傳輸。 利用SDSP-Sim軟件模擬器分別得到上述三種映射方式下程序的執行時(shí)間,然后以第一種映射方式下的執行時(shí)間為基準,計算出另外兩種方式的性能加速比,結果如圖7所示: 圖7 三種數據映射方式下系統的計算性能對比 實(shí)驗結果表明,在FSDP + L2 Cache方式下,程序的性能是最高的。6組程序的平均性能加速比為1.13。本文分析認為: 對于核間共享數據包含大量細粒度數據和不規則數據流的應用程序(例如PEGWIT和RASTA),僅用FSDP相比僅通過(guò)L2 Cache傳輸共享數據具有更高的計算性能; 對于核間共享數據量較大和數據流分布比較密集的應用程序(例如2MP3_d和MPEG2_e),僅用FSDP傳輸共享數據的計算性能較低,這是因為FSDP對共享數據的分塊處理使得同步開(kāi)銷(xiāo)在執行時(shí)間中的比例增大,影響了總執行時(shí)間; FSDP與共享數據Cache結合使用進(jìn)一步提高了共享存儲多核DSP的片內數據重用性,減少了對片外數據的長(cháng)延遲訪(fǎng)問(wèn),因而能夠獲得最佳的計算性能。其中,對于需要緊耦合共享的小容量數據或者非常不規則的短數據流,優(yōu)先選擇通過(guò)FSDP傳輸,減少通過(guò)共享Cache的長(cháng)延遲訪(fǎng)問(wèn)開(kāi)銷(xiāo);反之,對于大塊數據的共享或者規則數據流的傳輸,則宜采用共享Cache的方式,降低數據頻繁分塊的同步開(kāi)銷(xiāo)。 5.3 擴展性分析 在消除了FSDP的訪(fǎng)問(wèn)沖突之后,所有DSP核可以同時(shí)訪(fǎng)問(wèn)不同的存儲體。理論上來(lái)看,FSDP的訪(fǎng)問(wèn)帶寬可以隨著(zhù)DSP核數量的增長(cháng)而線(xiàn)性增長(cháng),具有良好的可擴展性。為此,我們進(jìn)行了分析與實(shí)驗。定義B為FSDP的有效訪(fǎng)問(wèn)帶寬,即在考慮訪(fǎng)存延遲和工作頻率的情況下所有DSP核訪(fǎng)問(wèn)FSDP的實(shí)際存儲帶寬;N表示DSP核的數量。本文在N=1~8的情況下分別對FSDP進(jìn)行了單獨的設計實(shí)現,得到了B與N的關(guān)系,如圖8所示。 圖8 FSDP有效訪(fǎng)問(wèn)帶寬與DSP核數量的關(guān)系 由實(shí)驗結果可見(jiàn),當N小于5時(shí), B快速增長(cháng),與N呈近似的線(xiàn)性關(guān)系。隨著(zhù)N的進(jìn)一步增大,DSP核與存儲體之間的控制邏輯開(kāi)銷(xiāo)、互連總線(xiàn)和交叉開(kāi)關(guān)端口數量以O(N2)量級增長(cháng),FSDP的工作頻率開(kāi)始下降,訪(fǎng)問(wèn)延遲越來(lái)越大,FSDP的有效訪(fǎng)問(wèn)帶寬增長(cháng)十分緩慢。因此,FSDP更適合于5核以?xún)鹊亩嗪薉SP。當DSP核數量超過(guò)8核以上時(shí),我們將以4核為一個(gè)超節點(diǎn)進(jìn)行結構擴展。超節點(diǎn)內部采用FSDP實(shí)現緊耦合的數據傳輸,超節點(diǎn)之間通過(guò)片上網(wǎng)絡(luò )(NoC)或者其他共享存儲結構進(jìn)行數據傳輸。 7 結束語(yǔ) 相比傳統的Cache結構,便箋式存儲器具有更靈活的結構、簡(jiǎn)潔的控制邏輯、更低的訪(fǎng)問(wèn)延遲和方便的數據管理等諸多優(yōu)勢。本文針對多核DSP架構設計的快速共享數據緩沖池FSDP結合了便箋式存儲器的結構特點(diǎn)和共享存儲結構的編程需要,采用軟/硬件聯(lián)合的設計方法,為多核DSP之間傳輸細粒度共享數據提供了一個(gè)緊耦合的快速通路,相比共享二級Cache和DMA傳輸方式具有更好的傳輸效率,是一種新型而實(shí)用的、可擴展多核共享存儲結構。今后,我們將深入研究面向多核處理器的高性能共享存儲結構,增強片上存儲的可擴展性和可重構能力,進(jìn)一步提高多核SoC的存儲帶寬! |