王澤中, 王春華, 王正茂, 張多利
(1.合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥 230601; 2.教育部IC設(shè)計(jì)網(wǎng)上合作研究中心,安徽 合肥 230601)
為了適應(yīng)計(jì)算復(fù)雜度更高、更多元化的應(yīng)用,片上系統(tǒng)(system-on-a-chip,SoC)中集成了多個(gè)處理器核,顯著提升了系統(tǒng)的數(shù)據(jù)處理能力,同時(shí)也對(duì)外部存儲(chǔ)器的帶寬提出了更高的要求。為滿(mǎn)足多核SoC系統(tǒng)對(duì)外部存儲(chǔ)器高帶寬、大容量等需求,人們?cè)O(shè)計(jì)了DDR、GDDR、HBM等多種外部存儲(chǔ)器,用于提高系統(tǒng)性能[1-2]。當(dāng)前外部存儲(chǔ)器帶寬能夠達(dá)到數(shù)百GB/s,如HBM2存儲(chǔ)標(biāo)準(zhǔn)JESD235C的單堆棧理論最大帶寬為410 GB/s,4堆棧HBM2理論帶寬為1.64 TB/s。
多核處理器一般采用多級(jí)存儲(chǔ)結(jié)構(gòu)[3-4],利用程序的空間局域性和時(shí)間局域性提高訪存效率,但是對(duì)于局域性較差的任務(wù),多級(jí)存儲(chǔ)結(jié)構(gòu)的優(yōu)勢(shì)并不明顯。為了提高多核SoC系統(tǒng)對(duì)高帶寬外部存儲(chǔ)器的帶寬利用率,需要設(shè)計(jì)并行訪存接口,充分利用外部存儲(chǔ)器的帶寬,使用單個(gè)外部存儲(chǔ)器實(shí)現(xiàn)多核并行訪存[5-6]。
本文針對(duì)多核SoC系統(tǒng)工作過(guò)程中存在多運(yùn)算單元并行訪存,且訪存模式多樣的特點(diǎn),設(shè)計(jì)了一種支持多運(yùn)算單元并行訪問(wèn)外部存儲(chǔ)器的訪存控制器。該并行訪存控制器針對(duì)目標(biāo)系統(tǒng)任務(wù)類(lèi)型的多樣性,設(shè)計(jì)了一種兩級(jí)仲裁與并行訪存相結(jié)合的機(jī)制,對(duì)不同類(lèi)型任務(wù)進(jìn)行分組,組內(nèi)根據(jù)任務(wù)的訪存特點(diǎn)設(shè)計(jì)并行訪存機(jī)制,實(shí)現(xiàn)多運(yùn)算單元并行訪存;組間通過(guò)兩級(jí)仲裁機(jī)制選擇訪問(wèn)外部存儲(chǔ)器的組,實(shí)現(xiàn)高優(yōu)先級(jí)任務(wù)快速響應(yīng)以及讀寫(xiě)任務(wù)輪流工作。
本文設(shè)計(jì)的并行訪存控制器能夠適應(yīng)多種訪存模式,并根據(jù)系統(tǒng)需求合理對(duì)帶寬進(jìn)行分配,高效利用外部存儲(chǔ)器的帶寬,有效提高系統(tǒng)的訪存效率,從而提高系統(tǒng)性能。
多核系統(tǒng)中集成了多個(gè)不同的運(yùn)算單元、存儲(chǔ)模塊、輸入輸出接口、主控制器等結(jié)構(gòu),其數(shù)據(jù)傳輸模型示意圖如圖1所示,各運(yùn)算單元間通過(guò)片上網(wǎng)絡(luò)(Network-on-Chip,NoC)互相連接,數(shù)據(jù)通過(guò)數(shù)據(jù)網(wǎng)絡(luò)傳輸,運(yùn)算單元通過(guò)對(duì)應(yīng)節(jié)點(diǎn)的NoC接口與網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交互。
圖1 多核系統(tǒng)數(shù)據(jù)傳輸模型
目標(biāo)系統(tǒng)為面向矩陣運(yùn)算的異構(gòu)多核系統(tǒng),系統(tǒng)中連續(xù)的數(shù)據(jù)存儲(chǔ)在片外存儲(chǔ)器中,將任務(wù)對(duì)應(yīng)的大批量數(shù)據(jù)分為多組,通過(guò)多運(yùn)算單元并行計(jì)算來(lái)提高處理效率。根據(jù)任務(wù)類(lèi)型可使用并行工作模式與獨(dú)立工作模式。
若任務(wù)數(shù)據(jù)被分為i(i≥1)個(gè)數(shù)據(jù)組,并行工作模式下,使用多個(gè)運(yùn)算單元協(xié)同對(duì)數(shù)據(jù)組進(jìn)行處理,運(yùn)算單元訪存同步進(jìn)行,按照順序依次處理數(shù)據(jù)組1,數(shù)據(jù)組2,…,數(shù)據(jù)組i。
獨(dú)立工作模式下,使用數(shù)量不定的運(yùn)算單元,將所有數(shù)據(jù)組均分給運(yùn)算單元,運(yùn)算單元依次處理所分配的數(shù)據(jù)組,每個(gè)運(yùn)算單元獨(dú)立處理一個(gè)數(shù)據(jù)組。若使用x(i≥x≥1)個(gè)運(yùn)算單元,每個(gè)運(yùn)算單元需要處理的數(shù)據(jù)組數(shù)量為:
z=i/x,
其中,第y個(gè)運(yùn)算單元依次取第y個(gè),第y+x個(gè),第y+2x個(gè),…,第y+(z-1)x個(gè)數(shù)據(jù)組作運(yùn)算。
目標(biāo)系統(tǒng)中的訪存任務(wù)類(lèi)型主要有指令讀取任務(wù)、并行任務(wù)、獨(dú)立任務(wù)3種。指令讀取任務(wù)從存儲(chǔ)器中讀取指令,并行任務(wù)與獨(dú)立任務(wù)分別用于并行工作模式與獨(dú)立工作模式下的運(yùn)算單元訪存。工作過(guò)程中,多個(gè)運(yùn)算單元會(huì)通過(guò)不同的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)出不同類(lèi)型的訪存請(qǐng)求,訪存控制器根據(jù)請(qǐng)求對(duì)外部存儲(chǔ)器進(jìn)行訪存操作,通過(guò)請(qǐng)求對(duì)應(yīng)節(jié)點(diǎn)的接口與數(shù)據(jù)網(wǎng)絡(luò)進(jìn)行交互,多類(lèi)型任務(wù)訪問(wèn)模型如圖2所示。
圖2 多類(lèi)型任務(wù)訪問(wèn)模型
根據(jù)排隊(duì)論模型,請(qǐng)求訪存的運(yùn)算單元、訪存控制器、外部存儲(chǔ)器可以看作模型中的顧客、隊(duì)列以及服務(wù)臺(tái)。在描述目標(biāo)系統(tǒng)的任務(wù)訪存狀態(tài)時(shí),主要考慮隊(duì)列中顧客的數(shù)量、顧客需求的服務(wù)模式、隊(duì)列容量限制3個(gè)參數(shù),對(duì)應(yīng)需要訪問(wèn)外部存儲(chǔ)器的運(yùn)算單元數(shù)量、運(yùn)算單元請(qǐng)求的服務(wù)模式、外部存儲(chǔ)器支持同時(shí)訪問(wèn)的最大運(yùn)算單元數(shù)目。建立參數(shù)模型[N,M,Q](M≤N≤Q)描述同類(lèi)型任務(wù)的訪存請(qǐng)求狀態(tài)及任務(wù)間的相關(guān)性,表示某類(lèi)型任務(wù)有N個(gè)運(yùn)算單元需要訪問(wèn)外部存儲(chǔ)器,有M個(gè)運(yùn)算單元的請(qǐng)求要求同時(shí)服務(wù),理論上最大支持Q個(gè)運(yùn)算單元同時(shí)訪問(wèn),指令讀取任務(wù)、并行任務(wù)、獨(dú)立任務(wù)的任務(wù)模型分別為[1,1,Q]、[N,N,Q]、[N,1,Q]。
目標(biāo)系統(tǒng)中單個(gè)運(yùn)算單元帶寬為Bu,外部存儲(chǔ)器帶寬為Be,理論上支持的最大運(yùn)算單元同時(shí)訪問(wèn)數(shù)量Q為:
Q=Be/Bu。
若運(yùn)算單元直接對(duì)外部存儲(chǔ)器進(jìn)行訪問(wèn),則造成的帶寬浪費(fèi)ΔB為:
ΔB=Be-Bu。
為充分利用外部存儲(chǔ)器的帶寬,針對(duì)目標(biāo)系統(tǒng)多運(yùn)算單元并行訪存,且訪存模式多樣的特點(diǎn),本文使用一種兩級(jí)仲裁與并行訪存設(shè)計(jì)相結(jié)合的機(jī)制實(shí)現(xiàn)多運(yùn)算單元并行訪問(wèn)外部存儲(chǔ)器。
并行訪存控制器利用外部存儲(chǔ)器與運(yùn)算單元間的帶寬差異,根據(jù)訪存特點(diǎn)將運(yùn)算單元帶寬合并或是控制運(yùn)算單元分時(shí)獨(dú)享外部存儲(chǔ)器帶寬以實(shí)現(xiàn)并行訪存,其結(jié)構(gòu)如圖3所示。并行訪存控制器對(duì)訪存請(qǐng)求進(jìn)行識(shí)別,根據(jù)任務(wù)類(lèi)型以及讀寫(xiě)需求發(fā)送給對(duì)應(yīng)通道或任務(wù)組,針對(duì)任務(wù)訪存特點(diǎn),任務(wù)組采用不同的并行訪存設(shè)計(jì),在不同的任務(wù)組間使用兩級(jí)仲裁進(jìn)行選擇,輸出最終仲裁結(jié)果,最后通過(guò)外部存儲(chǔ)器讀寫(xiě)控制模塊,實(shí)現(xiàn)數(shù)據(jù)及地址與外部存儲(chǔ)器間的交互。
圖3 并行訪存控制器結(jié)構(gòu)
2.1.1 高優(yōu)先級(jí)通道設(shè)計(jì)
為指令讀取任務(wù)設(shè)計(jì)的高優(yōu)先級(jí)通道,其任務(wù)模型為[1,1,Q]。通道所需帶寬僅為Bu,由于任務(wù)數(shù)據(jù)量少,使用FIFO進(jìn)行緩沖。
FIFO具有數(shù)據(jù)緩沖和位寬轉(zhuǎn)換功能。FIFO在外部存儲(chǔ)器側(cè)以帶寬Be接受數(shù)據(jù),并以帶寬Bu發(fā)送至系統(tǒng)數(shù)據(jù)端口,外部存儲(chǔ)器工作時(shí)間僅為任務(wù)總時(shí)間的1/Q。期間外部存儲(chǔ)器能夠始終以最大帶寬連續(xù)工作,并提前將數(shù)據(jù)放入FIFO中,其后外部存儲(chǔ)器為其他任務(wù)服務(wù),高優(yōu)先級(jí)通道則使用FIFO中數(shù)據(jù)繼續(xù)工作。
2.1.2 并行任務(wù)組設(shè)計(jì)
并行任務(wù)組執(zhí)行并行任務(wù),其任務(wù)模型為[N,N,Q]。此類(lèi)任務(wù)中N個(gè)運(yùn)算單元的訪存操作同步,使用帶寬合并的方法實(shí)現(xiàn)并行訪存。
并行任務(wù)組工作所需總帶寬Bp為:
Bp=NBu。
系統(tǒng)中每一個(gè)運(yùn)算單元單周期傳輸?shù)臄?shù)據(jù)位寬W及工作頻率f相同。帶寬合并將每周期傳輸?shù)腘個(gè)位寬為W的數(shù)據(jù)視為一個(gè)完整的數(shù)據(jù)與外部存儲(chǔ)器進(jìn)行交互,也即將每個(gè)運(yùn)算單元的帶寬合并以提高任務(wù)組訪存時(shí)的帶寬,即
(1)
并行任務(wù)組內(nèi)部使用FIFO組結(jié)構(gòu),并行任務(wù)所使用的運(yùn)算單元數(shù)量N固定,因此FIFO組中共有N個(gè)FIFO,每個(gè)FIFO對(duì)應(yīng)一個(gè)運(yùn)算單元。FIFO組執(zhí)行數(shù)據(jù)緩沖功能,使并行任務(wù)組在未獲得外部存儲(chǔ)器訪問(wèn)權(quán)時(shí)仍能依靠FIFO繼續(xù)工作。
執(zhí)行寫(xiě)任務(wù)與讀任務(wù)的并行任務(wù)組各自工作流程如圖4所示。并行任務(wù)執(zhí)行時(shí)使用N個(gè)運(yùn)算單元,因此并行任務(wù)組工作時(shí),FIFO組中所有FIFO均需要工作,每個(gè)FIFO都將與一個(gè)運(yùn)算單元進(jìn)行數(shù)據(jù)傳輸,同時(shí)并行任務(wù)的訪存具有同步性要求,所有運(yùn)算單元的訪存操作需要保持同步。因此可以通過(guò)檢測(cè)FIFO組中各FIFO狀態(tài),控制訪存的同步性。
圖4 并行任務(wù)工作流程
2.1.3 獨(dú)立任務(wù)組設(shè)計(jì)
獨(dú)立任務(wù)組處理獨(dú)立任務(wù), 其任務(wù)模型為[N,1,Q]。N個(gè)運(yùn)算單元的訪存操作獨(dú)立,使用獨(dú)立任務(wù)通道進(jìn)行,獨(dú)立任務(wù)使用分時(shí)輪詢(xún)的方法實(shí)現(xiàn)并行訪存。
輪詢(xún)機(jī)制能夠保證不同任務(wù)通道獲得完全公平的訪問(wèn)外部存儲(chǔ)器的機(jī)會(huì)。在輪詢(xún)過(guò)程中,獨(dú)立任務(wù)通道使用類(lèi)似于高優(yōu)先級(jí)通道的FIFO結(jié)構(gòu)以平衡帶寬差異。若FIFO容量為C,運(yùn)算單元與外部存儲(chǔ)器帶寬差異為ΔB,由于獨(dú)立任務(wù)數(shù)據(jù)量一般大于FIFO容量,外部存儲(chǔ)器以帶寬Be工作的最長(zhǎng)時(shí)間Tmax為:
Tmax=C/ΔB。
因此需要限制獨(dú)立任務(wù)通道每次訪問(wèn)外部存儲(chǔ)器的時(shí)長(zhǎng),參考時(shí)分復(fù)用的原理,對(duì)外部存儲(chǔ)器進(jìn)行分時(shí)輪詢(xún)?cè)L存[7-8]。
分時(shí)輪詢(xún)?cè)L存設(shè)置通道訪問(wèn)時(shí)間t(t≤Tmax),以避免通道長(zhǎng)時(shí)間占用外部存儲(chǔ)器。基于帶寬差異,獨(dú)立數(shù)據(jù)通道訪問(wèn)外部存儲(chǔ)器時(shí)間t,可以支持其FIFO與運(yùn)算單元進(jìn)行時(shí)間為Qt的數(shù)據(jù)傳輸,除去數(shù)據(jù)通道自身訪存時(shí)間t,外部存儲(chǔ)器有(Q-1)t的時(shí)間為其他的獨(dú)立數(shù)據(jù)通道服務(wù),即
Qt=Bet/Bu
(2)
實(shí)際工作過(guò)程中,獨(dú)立通道無(wú)法以理論狀態(tài)進(jìn)行工作,為保證通道能夠獲得理想的訪問(wèn)時(shí)間,使用基于閾值判斷的方法,靈活分配通道的訪問(wèn)時(shí)間。該方法根據(jù)獨(dú)立任務(wù)通道總數(shù)據(jù)容量,為通道分配多級(jí)閾值。獨(dú)立通道在獲得外部存儲(chǔ)器訪問(wèn)權(quán)時(shí),將查詢(xún)通道內(nèi)部FIFO實(shí)際緩沖的數(shù)據(jù)量,與各級(jí)閾值對(duì)比,分配合理的訪問(wèn)時(shí)間,其偽碼如下:
If data-amount>threshold-1 then
//進(jìn)行閾值判斷
t=t1
//分配對(duì)應(yīng)工作時(shí)間
else if data-amount>threshold-2 then
t=t2
?
else
t=0
其中的data-amount在寫(xiě)任務(wù)中為FIFO內(nèi)數(shù)據(jù)量,在讀任務(wù)中為FIFO內(nèi)剩余空間。同時(shí),對(duì)于沒(méi)有訪存請(qǐng)求的獨(dú)立任務(wù)通道,不為其分配時(shí)間。
經(jīng)典的仲裁方法有固定優(yōu)先級(jí)仲裁、輪詢(xún)仲裁、彩票仲裁等,這些方法有著各種的適用范圍以及局限性。為實(shí)現(xiàn)更精確、更有效的仲裁,可以使用多種仲裁方法進(jìn)行多級(jí)仲裁[9-11]。
目標(biāo)系統(tǒng)中任務(wù)優(yōu)先級(jí)由高到低分別為指令讀取任務(wù)、并行任務(wù)、獨(dú)立任務(wù),同時(shí)讀任務(wù)與寫(xiě)任務(wù)的訪問(wèn)需求是動(dòng)態(tài)調(diào)整的。根據(jù)這一特點(diǎn),設(shè)計(jì)了一種兩級(jí)仲裁機(jī)制,其仲裁方式如下:不同通道與任務(wù)組根據(jù)讀、寫(xiě)任務(wù)分類(lèi),第1級(jí)仲裁使用固定優(yōu)先級(jí)仲裁,根據(jù)優(yōu)先級(jí)對(duì)讀任務(wù)與寫(xiě)任務(wù)分別進(jìn)行仲裁,得到讀任務(wù)和寫(xiě)任務(wù)的仲裁結(jié)果后,在第2級(jí)仲裁中根據(jù)動(dòng)態(tài)權(quán)重進(jìn)行加權(quán)輪詢(xún)仲裁。仲裁流程如圖5所示。
圖5 兩級(jí)仲裁流程
在第1級(jí)仲裁中,為確保高優(yōu)先級(jí)任務(wù)能及時(shí)得到響應(yīng),仲裁器在檢測(cè)到高優(yōu)先級(jí)任務(wù)到來(lái)后,低優(yōu)先級(jí)任務(wù)將暫停,任務(wù)信息與數(shù)據(jù)由對(duì)應(yīng)通道或任務(wù)組保存,直到高優(yōu)先級(jí)任務(wù)結(jié)束后繼續(xù)執(zhí)行。參考加權(quán)輪詢(xún)算法中根據(jù)權(quán)重獲得輪詢(xún)結(jié)果的策略,第2級(jí)仲裁使用可配置訪問(wèn)時(shí)間的輪詢(xún)仲裁方法,動(dòng)態(tài)調(diào)整讀、寫(xiě)任務(wù)訪問(wèn)外部存儲(chǔ)器的時(shí)間。
固定時(shí)間T作為一次輪詢(xún)的總時(shí)間,設(shè)讀、寫(xiě)任務(wù)獲得的權(quán)重分別為Rw、Rr,則權(quán)重之和為:
R=Rw+Rr。
根據(jù)權(quán)值,讀、寫(xiě)任務(wù)各自獲得訪問(wèn)時(shí)間Tw、Tr為:
Tw=TRw/R,
Tr=TRr/R。
根據(jù)訪問(wèn)時(shí)間,讀、寫(xiě)任務(wù)將獲得帶寬Bw、Br為:
Bw=TwBe/T,
Br=TrBe/T。
在每次輪詢(xún)開(kāi)始時(shí),讀、寫(xiě)任務(wù)會(huì)獲得各自的訪問(wèn)時(shí)間,對(duì)外部存儲(chǔ)器訪問(wèn)規(guī)定的時(shí)間后,或是任務(wù)已經(jīng)執(zhí)行完畢且沒(méi)有新任務(wù)需要執(zhí)行后,將訪問(wèn)權(quán)切換至另一任務(wù),訪問(wèn)完成后,更新訪問(wèn)時(shí)間,其工作過(guò)程偽碼如下:
//寫(xiě)任務(wù)執(zhí)行
If wr-task over & no newwr-task then
task switch
//切換至讀任務(wù)
else if wr-time==Twthen
//執(zhí)行訪問(wèn)時(shí)間
task switch
else
wr-time=wr-time+1
//執(zhí)行時(shí)間計(jì)數(shù)
//讀任務(wù)執(zhí)行
If rd-task over & no new rd-task then
update access time
//更新訪問(wèn)時(shí)間
task switch
//切換至寫(xiě)任務(wù)
else if rd-time==Trthen
update access time
task switch
else
rd-time=rd-time+1
為驗(yàn)證并行訪存控制器的功能,并進(jìn)行性能評(píng)估,在Xilinx XCVU440 FPGA開(kāi)發(fā)板上對(duì)所設(shè)計(jì)的并行訪存控制器進(jìn)行驗(yàn)證。
并行訪存控制器使用DDR3 SDRAM作為外部存儲(chǔ)器,擁有1條高優(yōu)先級(jí)通道,讀、寫(xiě)各8條獨(dú)立任務(wù)通道,以及讀、寫(xiě)各1組支持8個(gè)運(yùn)算單元執(zhí)行并行任務(wù)的并行任務(wù)組,整體資源消耗見(jiàn)表1所列。
表1 并行訪存控制器資源消耗
實(shí)驗(yàn)使用的DDR3理論帶寬為102.4 Gb/s,相當(dāng)于16個(gè)運(yùn)算單元同時(shí)訪問(wèn)所需帶寬,由于DDR3中內(nèi)部預(yù)充電、激活和自刷新等時(shí)間消耗,實(shí)際帶寬無(wú)法達(dá)到理論值。定義帶寬利用率u為并行訪存控制器工作時(shí)的實(shí)際帶寬Breal與外部存儲(chǔ)器理論帶寬Be的比值,即
u=(Breal/Be)×100%
(3)
計(jì)算并行訪存控制器在工作過(guò)程中帶寬利用率的平均值,將平均帶寬利用率作為性能評(píng)估的參考。其中沒(méi)有運(yùn)算單元要求訪存的情況不計(jì)算,平均帶寬利用率越高代表端口傳輸速率以及任務(wù)并行度越高。
對(duì)并行訪存控制器在獨(dú)立工作模式和并行工作模式下分別進(jìn)行滿(mǎn)載讀、寫(xiě),以測(cè)試各工作模式的并行訪存設(shè)計(jì)所能達(dá)到的最大帶寬利用率。系統(tǒng)單次任務(wù)一般使用8個(gè)運(yùn)算單元執(zhí)行,因此滿(mǎn)載測(cè)試使用8個(gè)運(yùn)算單元執(zhí)行寫(xiě)任務(wù),8個(gè)運(yùn)算單元執(zhí)行讀任務(wù),共使用16個(gè)運(yùn)算單元,讀、寫(xiě)任務(wù)同時(shí)進(jìn)行。讀、寫(xiě)數(shù)據(jù)量相同,獨(dú)立工作模式下將讀、寫(xiě)任務(wù)數(shù)據(jù)各分為128個(gè)數(shù)據(jù)組,并行工作模式下8個(gè)運(yùn)算單元共同處理單個(gè)數(shù)據(jù)組,讀、寫(xiě)任務(wù)數(shù)據(jù)各分為16個(gè)數(shù)據(jù)組以保證每個(gè)運(yùn)算單元獲得數(shù)據(jù)量相同。運(yùn)算單元對(duì)數(shù)據(jù)組的讀、寫(xiě)過(guò)程連續(xù),測(cè)試不同數(shù)據(jù)量以及工作模式下的并行訪存控制器平均帶寬利用率,結(jié)果見(jiàn)表2所列。
表2 滿(mǎn)載狀態(tài)下平均帶寬利用率
由表2可知,在滿(mǎn)載情況下平均帶寬利用率最高能夠達(dá)到84.738%,并行工作模式下平均帶寬利用率相對(duì)較高,這是由于并行工作模式下讀寫(xiě)過(guò)程更加連續(xù),且沒(méi)有通道切換損耗。
對(duì)實(shí)際任務(wù)執(zhí)行情況進(jìn)行測(cè)試,分別以運(yùn)算時(shí)間小于訪存時(shí)間的復(fù)數(shù)加任務(wù)以及運(yùn)算時(shí)間大于訪存時(shí)間的快速傅里葉變換(fast Fourier transform,FFT)運(yùn)算任務(wù)作為測(cè)試對(duì)象。
測(cè)試過(guò)程中同時(shí)執(zhí)行1組并行任務(wù)及1組獨(dú)立任務(wù),2組任務(wù)待處理數(shù)據(jù)量相同,獨(dú)立任務(wù)數(shù)據(jù)拆分為128個(gè)數(shù)據(jù)組,并行任務(wù)數(shù)據(jù)拆分為16個(gè)數(shù)據(jù)組。2組任務(wù)各使用8個(gè)運(yùn)算單元處理,運(yùn)算單元每次處理1個(gè)數(shù)據(jù)組,執(zhí)行讀取、計(jì)算、寫(xiě)入過(guò)程。測(cè)試2種任務(wù)在不同數(shù)據(jù)量下的平均帶寬利用率,結(jié)果見(jiàn)表3所列。
由表3可知,實(shí)際任務(wù)執(zhí)行過(guò)程中,平均帶寬利用率通常會(huì)低于滿(mǎn)載情況,且對(duì)于FFT運(yùn)算任務(wù),平均帶寬利用率更低。這是由于實(shí)際任務(wù)執(zhí)行過(guò)程中并行訪存控制器不會(huì)始終工作在滿(mǎn)載狀態(tài),系統(tǒng)的實(shí)際帶寬需求低于存儲(chǔ)器理論帶寬。運(yùn)算時(shí)間較長(zhǎng)時(shí),訪存請(qǐng)求分散,任務(wù)并行度降低,系統(tǒng)的實(shí)際帶寬需求減少,進(jìn)一步降低了平均帶寬利用率。
表3 執(zhí)行實(shí)際任務(wù)時(shí)平均帶寬利用率
選擇表3中并行工作模式數(shù)據(jù)組容量為8 192,獨(dú)立工作模式數(shù)據(jù)組容量為1 024的任務(wù),對(duì)實(shí)際任務(wù)執(zhí)行過(guò)程中各階段的平均帶寬利用率變化進(jìn)行分析。將任務(wù)執(zhí)行過(guò)程分為10個(gè)階段,按照任務(wù)執(zhí)行總時(shí)間平均劃分,任務(wù)每執(zhí)行其總時(shí)間的1/10,計(jì)為一個(gè)階段,計(jì)算其在不同階段內(nèi)的平均帶寬利用率,如圖6所示。
圖6 不同階段的平均帶寬利用率
任務(wù)執(zhí)行過(guò)程中,任務(wù)的平均帶寬利用率變化曲線不斷變化,FFT運(yùn)算任務(wù)由于訪存請(qǐng)求分散,平均帶寬利用率始終低于運(yùn)算時(shí)間較小的復(fù)數(shù)加任務(wù)。各階段平均帶寬利用率的變化主要是由于任務(wù)執(zhí)行狀態(tài)的不同。并行任務(wù)組與獨(dú)立任務(wù)組同時(shí)進(jìn)行訪存,例如,并行任務(wù)組執(zhí)行讀任務(wù)時(shí),獨(dú)立任務(wù)組同時(shí)執(zhí)行寫(xiě)任務(wù)的情況下,任務(wù)并行度較高,此類(lèi)情況較多的階段,平均帶寬利用率較高,反之,平均帶寬利用率較低。此外,若有任務(wù)組在執(zhí)行讀任務(wù)時(shí),存在之前緩存在任務(wù)組中的數(shù)據(jù)需要寫(xiě)入外部存儲(chǔ)器,此時(shí)數(shù)據(jù)的寫(xiě)入過(guò)程不會(huì)計(jì)入任務(wù)并行度,但是將導(dǎo)致讀任務(wù)的任務(wù)并行度降低,這種情況較多的階段,平均帶寬利用率也會(huì)有所降低。
本文設(shè)計(jì)了一種用于多核SoC中多運(yùn)算單元并行訪問(wèn)外部存儲(chǔ)器的接口結(jié)構(gòu)。針對(duì)目標(biāo)SoC系統(tǒng)的工作特點(diǎn)設(shè)計(jì)了多種并行訪問(wèn)機(jī)制以實(shí)現(xiàn)利用帶寬差異進(jìn)行并行訪存,使用兩級(jí)仲裁彌補(bǔ)單一仲裁方法的局限性,對(duì)不同任務(wù)進(jìn)行仲裁。經(jīng)測(cè)試,該并行訪存控制器能夠有效利用外部存儲(chǔ)器帶寬,在滿(mǎn)載情況下平均帶寬利用率最高能夠達(dá)到84.738%,實(shí)際任務(wù)執(zhí)行過(guò)程中平均帶寬利用率最高能夠達(dá)到54.653%。