劉有耀,張 園,山 蕊
(西安郵電大學(xué)電子工程學(xué)院,陜西 西安 710121)
可重構(gòu)陣列處理器具有設(shè)計(jì)復(fù)雜度低,編程靈活,高主頻、高吞吐率等特性,是未來處理器發(fā)展的必然趨勢(shì)[1 - 3]。隨著半導(dǎo)體工業(yè)和集成電路產(chǎn)業(yè)的發(fā)展,可重構(gòu)陣列處理器的集成度顯著增加,支持應(yīng)用的范圍越來越廣。以人工智能、超高清視頻編解碼、虛擬現(xiàn)實(shí)VR(Virtual Reality)、增強(qiáng)現(xiàn)實(shí)AR(Augmented Reality)等為代表的新興應(yīng)用發(fā)展迅速,可重構(gòu)結(jié)構(gòu)在實(shí)現(xiàn)新興應(yīng)用方面表現(xiàn)出較大的優(yōu)勢(shì)。然而,新型應(yīng)用具有計(jì)算數(shù)據(jù)龐大、訪存頻率較高等特點(diǎn)[4],對(duì)可重構(gòu)陣列處理器存儲(chǔ)結(jié)構(gòu)的并行訪問特性提出了新的要求。如何在可重構(gòu)陣列處理器上構(gòu)建靈活、高效的存儲(chǔ)體系是處理器性能提升的一個(gè)關(guān)鍵問題[5]。
許多學(xué)者針對(duì)存儲(chǔ)結(jié)構(gòu)進(jìn)行了深入的研究,目前普遍采用的解決方法是在處理器中采用Cache緩解處理器處理速度與主存存儲(chǔ)速度失配引起的“存儲(chǔ)墻”問題[6,7]。文獻(xiàn)[8]采用片上大容量共享Cache來進(jìn)行訪存,這種大容量的Cache結(jié)構(gòu)不但使得整個(gè)系統(tǒng)的面積增加且訪存的并行性不高。文獻(xiàn)[9]采用多級(jí)Cache來進(jìn)行訪問,多級(jí)Cache因?yàn)橐恢滦詭砹溯^高的能耗,對(duì)于實(shí)時(shí)性數(shù)據(jù)處理較差,難以滿足新興應(yīng)用對(duì)存儲(chǔ)并行性訪問的需求。為了增加數(shù)據(jù)的并行訪問,文獻(xiàn)[10]提出一種分布式Cache結(jié)構(gòu),在處理器PE(Processing Element)簇內(nèi)根據(jù)多處理器特性采用片上分布式Cache結(jié)構(gòu)來提高Cache容量,提高命中率,節(jié)省了能耗,提高了實(shí)時(shí)性。文獻(xiàn)[11]提出的分布式Cache緩存結(jié)構(gòu),在大規(guī)模存儲(chǔ)系統(tǒng)中提高了緩存吞吐量,節(jié)省了能耗。文獻(xiàn)[12]提出了一個(gè)具有分布式框架和異構(gòu)緩存方法的通用Cache系統(tǒng),該系統(tǒng)應(yīng)用于車輛互聯(lián)網(wǎng)等大數(shù)據(jù)應(yīng)用的實(shí)時(shí)高速數(shù)據(jù)傳輸。隨著新興應(yīng)用對(duì)存儲(chǔ)訪問帶寬、延遲性能需求的進(jìn)一步提高,分布式Cache成為可重構(gòu)處理器緩解“存儲(chǔ)墻”問題一種行之有效的解決方案[13,14]。
可重構(gòu)陣列處理器分布式存儲(chǔ)結(jié)構(gòu)中,常用的實(shí)現(xiàn)陣列間數(shù)據(jù)訪問方法是在陣列處理器簇內(nèi)PEG(Processing Element Group)設(shè)計(jì)簇內(nèi)高效互連訪問結(jié)構(gòu),滿足簇內(nèi)高效率、低延遲的訪問需求,這種簇內(nèi)訪問結(jié)構(gòu)是提升分布式存儲(chǔ)訪問性能的關(guān)鍵因素。文獻(xiàn)[15]提出的簇內(nèi)訪問結(jié)構(gòu)命名為行列交叉訪問結(jié)構(gòu)LR2SS(Line Row two-Stage Switch),該結(jié)構(gòu)針對(duì)數(shù)據(jù)密集型訪問存在較大的訪問延遲且計(jì)算并行性較差。文獻(xiàn)[16]提出的簇內(nèi)全訪問FS(Full-Switch)雖然訪問延遲有所降低,但對(duì)于局部性訪問明顯的數(shù)據(jù)計(jì)算不能很好地處理。本文在可重構(gòu)陣列處理器上基于分布式Cache結(jié)構(gòu),提出了一種簇內(nèi)局部優(yōu)先訪問互連結(jié)構(gòu)LPAS(Local Priority Access Switch)。該結(jié)構(gòu)特點(diǎn)如下所示:
(1)基于可重構(gòu)陣列處理器全局重用少、局部性訪問明顯的特征,將可重構(gòu)陣列處理器的存儲(chǔ)訪問進(jìn)行區(qū)域劃分,分為本地區(qū)域LA(Local Area)和遠(yuǎn)程區(qū)域RA(Remote Area),其中遠(yuǎn)程區(qū)域的劃分以本地區(qū)域?yàn)橐劳?,根?jù)訪問距離長短又分為3個(gè)等級(jí)。以第1行PE為例,第1行Cache為本地區(qū)域,第2行Cache為遠(yuǎn)程區(qū)域1 RA1(Remote Area 1),第3行Cache為遠(yuǎn)程區(qū)域2 RA2(Remote Area 2),第4行Cache為遠(yuǎn)程區(qū)域3 RA3(Remote Area 3)。
(2)當(dāng)PE訪問簇內(nèi)Cache時(shí),LA優(yōu)先級(jí)最高,RA優(yōu)先級(jí)低于LA。RA 3個(gè)等級(jí)中:RA1優(yōu)先級(jí)最高,RA2次之,RA3最低。
(3)該結(jié)構(gòu)支持低流量無沖突訪問模式下16個(gè)Cache的并行訪問,寫訪問操作1個(gè)周期完成,讀訪問操作2個(gè)周期完成并發(fā)送讀寫反饋信息告知PE,提高了可重構(gòu)處理器的訪問并行性。
一種具有局部訪問優(yōu)先、全局共享的“物理分布、邏輯統(tǒng)一”的通用的分布式Cache結(jié)構(gòu)如圖1所示,上層是1個(gè)由4×4個(gè)PE組成的陣列處理器簇,下層是由4×4個(gè)512×16 bit大小的高速緩存器(Cache)、輪詢仲裁器(arb)以及網(wǎng)絡(luò)適配器(NI)組成的存儲(chǔ)結(jié)構(gòu)。簇內(nèi)訪問結(jié)構(gòu)在陣列處理器和Cache之間形成一個(gè)高速數(shù)據(jù)交互通路,該結(jié)構(gòu)采用統(tǒng)一編址方式,使每個(gè)處理器可以通過地址的[7:4]并行性訪問這些分布式Cache,實(shí)現(xiàn)簇內(nèi)數(shù)據(jù)的高效訪問,提高可重構(gòu)陣列處理器的訪問并行性。
從PE角度看,該分布式Cache結(jié)構(gòu)中每個(gè)PE可以直接訪問片上所有區(qū)域Cache,是片上共享Cache結(jié)構(gòu);物理實(shí)現(xiàn)上,采用4×4個(gè)獨(dú)立的Cache塊,通過簇內(nèi)存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)LA區(qū)域優(yōu)先訪問,RA區(qū)域次之的優(yōu)先策略,同時(shí)利用多個(gè)Cache塊的并行存儲(chǔ)技術(shù),實(shí)現(xiàn)簇內(nèi)4×4個(gè)PE的并行訪問。當(dāng)PE訪問Cache時(shí),簇內(nèi)訪問結(jié)構(gòu)接受來自PE的請(qǐng)求,根據(jù)地址判斷是對(duì)LA區(qū)域Cache進(jìn)行訪問還是RA區(qū)域Cache進(jìn)行訪問,當(dāng)PE訪問LA區(qū)域Cache時(shí),優(yōu)先級(jí)最高,當(dāng)PE訪問RA區(qū)域Cache時(shí),需通過簇內(nèi)訪問結(jié)構(gòu)仲裁出正確的響應(yīng)順序完成對(duì)RA區(qū)域Cache的操作。一旦命中簇內(nèi)Cache,立即將數(shù)據(jù)返回給請(qǐng)求PE,若不命中,則需要通過輪詢仲裁器仲裁出一路信號(hào)通過虛通道路由器VCR0901與外存進(jìn)行通信。
Figure 1 Intra-cluster distributed Cache architecture圖1 簇內(nèi)分布式Cache結(jié)構(gòu)
本文設(shè)計(jì)的簇內(nèi)訪問結(jié)構(gòu)LPAS用于處理全局重用少、局部性明顯的視頻圖像多媒體數(shù)據(jù)時(shí),通過在簇內(nèi)配置數(shù)據(jù)訪問指令ST把PE最先訪問或經(jīng)常訪問的數(shù)據(jù)放在LA的Cache中或較近距離RA的Cache中,把PE最后訪問的數(shù)據(jù)或不常訪問的數(shù)據(jù)放在離PE較遠(yuǎn)位置RA的Cache中,這樣對(duì)于經(jīng)常訪問的數(shù)據(jù)可以節(jié)省訪問較遠(yuǎn)路徑所耗費(fèi)的時(shí)間,同時(shí),減少資源的消耗,提高訪存速度,提升并行訪問帶寬。同時(shí),該設(shè)計(jì)硬件開銷小,并行訪問性高,可大大提高可重構(gòu)陣列處理器的訪存帶寬;在應(yīng)對(duì)大數(shù)據(jù)時(shí)代人工智能、計(jì)算機(jī)視覺等新興應(yīng)用所要求的高實(shí)時(shí)性、高并行性以及靈活性時(shí)表現(xiàn)出了較好的優(yōu)勢(shì)。
局部優(yōu)先訪問電路結(jié)構(gòu)分為3部分,分別為仲裁選擇模塊Arb_select、仲裁模塊Cache_arbiter和總線模塊Bus,如圖2所示。
Figure 2 Intra-cluster local priority switch architecture圖2 簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu)
3.1.1 仲裁選擇模塊Arb_select
仲裁選擇模塊主要完成2個(gè)功能:(1)用來接收PE發(fā)出的讀寫請(qǐng)求,根據(jù)地址判斷請(qǐng)求的目的Cache位置,選擇目的Cache所在的仲裁模塊;(2)根據(jù)Bus模塊的反饋信號(hào)判斷當(dāng)前請(qǐng)求是否完成,同時(shí)將反饋信息送回給請(qǐng)求的PE。若反饋信號(hào)為低,代表當(dāng)前操作未處理,下1拍PE不能發(fā)送新的數(shù)據(jù)請(qǐng)求,此時(shí)將訪存信息暫存在電路中,等待正確的響應(yīng)順序;若反饋信號(hào)為高,代表當(dāng)前訪問完成,下1拍PE可以重新發(fā)送1組數(shù)據(jù)請(qǐng)求。
3.1.2 仲裁模塊Cache_arbiter
仲裁模塊設(shè)計(jì)了4種仲裁機(jī)制。第N行Cache仲裁機(jī)制為Cache_arbiterN(N=0,1,2,3)。每種仲裁機(jī)制工作過程如下:根據(jù)仲裁選擇模塊傳來的16位使能請(qǐng)求進(jìn)行沖突仲裁(16位使能請(qǐng)求分別代表PE00~PE33的訪問請(qǐng)求),有沖突訪問時(shí),根據(jù)LA優(yōu)先,RA次之的訪問順序仲裁出1路信號(hào)與Cache進(jìn)行交互。無沖突訪問時(shí),根據(jù)目的Cache的地址直接進(jìn)行數(shù)據(jù)交互。
以第1行Cache仲裁Cache_arbiter0為例,仲裁過程如下:當(dāng)?shù)?行Cache00收到同區(qū)域PE阻塞通信時(shí)(PE00,PE01,PE02,PE03),Cache_arbiter0經(jīng)過輪詢仲裁機(jī)制隨機(jī)仲裁出1路信號(hào)與Cache00交互。當(dāng)有不同區(qū)域PE(PE00,PE10,PE20,PE30)同時(shí)訪問Cache00時(shí),Cache00經(jīng)過Cache_arbiter0仲裁先對(duì)LA的PE00響應(yīng),然后處理較近距離的PE10,接著是PE20,最后是最遠(yuǎn)距離的PE30。
3.1.3 總線模塊Bus
總線模塊主要將16個(gè)PE的請(qǐng)求信號(hào)和Cache_arbiter仲裁出的1路信號(hào)一起作為反饋信息送回到Arb_select模塊,Arb_select模塊根據(jù)反饋信息來判斷讀寫訪問操作要不要繼續(xù)保持。
可重構(gòu)陣列處理器分布式Cache的簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu)旨在完成簇內(nèi) PE和分布式Cache的連接,實(shí)現(xiàn)簇內(nèi)PE和Cache的數(shù)據(jù)訪問,提高可重構(gòu)陣列處理器簇內(nèi)數(shù)據(jù)的訪問并行性。
Write access
1 input:data_wr_en,data_waddr,data_wdata
2 ifwr_ack=0
3 then Store request singal
4 Judgedata_waddr[7∶4]
5 Select cache_arbiterN
6 ifdata_num>0
7 then Do arbitration
8 output:wr_req_pe_num
9wr_cache_en
10wr_cache_data
11wr_cache_addr
12 ifwr_ack=1
13 then Release storage signal
14 next 1
該結(jié)構(gòu)寫操作如下所示:
(1)當(dāng)PE發(fā)出寫請(qǐng)求時(shí),Arb_select模塊先判斷寫反饋信息wr_ack,若wr_ack為低,Arb_select將訪存信息寄存到電路中,等待正確的順序進(jìn)行響應(yīng)。
(2)Arb_select通過寫地址信息data_waddr[7∶4]判斷目的Cache位置,選擇目的Cache對(duì)應(yīng)的仲裁Cache_arbiterN(N=0,1,2,3)。
(3)Cache_arbiterN通過16位讀熱碼data_num(16位讀熱碼分別代表PE00~PE33訪問請(qǐng)求,1代表有訪問請(qǐng)求)進(jìn)行訪問仲裁,依據(jù)其局部優(yōu)先的訪問特性仲裁出1路信號(hào)與目的Cache進(jìn)行交互。
(4)Cache_arbiterN根據(jù)請(qǐng)求的PE號(hào)經(jīng)Bus模塊發(fā)送寫反饋信息給請(qǐng)求的PE。
(5)PE收到寫反饋信息后,Arb_select在下1拍將寄存的信息釋放,至此1個(gè)完整的寫操作完成??芍貥?gòu)陣列處理器中16個(gè)PE可同時(shí)對(duì)16個(gè)Cache進(jìn)行以上寫操作。PE的讀操作與寫操作類似,這里只給出了寫操作。
采用Verilog HDL硬件描述語言,在Questasim10.1d工具下進(jìn)行功能仿真驗(yàn)證,選用Xilinx公司的ZYNQ系列芯片 XC7Z045 FFG900-2 FPGA進(jìn)行綜合,其中LPAS結(jié)構(gòu)與文獻(xiàn)[15]中LR2SS結(jié)構(gòu)、文獻(xiàn)[16] 中FS結(jié)構(gòu)芯片綜合資源使用情況對(duì)比如表1所示。
Table 1 FPGA chip resource usage table表1 FPGA資源使用表
分析測(cè)試結(jié)果表明,綜合后的LPAS結(jié)構(gòu)在無沖突情況下,支持16個(gè)PE的同時(shí)讀/寫操作,寫操作1個(gè)周期完成,讀操作2個(gè)周期完成,最高頻率可達(dá)221 MHz,訪問峰值帶寬為7.6 GB/s。在無沖突情況下訪問峰值帶寬比LR2SS增加了0.95 GB/s,與FS在無沖突情況下的最高工作頻率和訪問峰值帶寬相近,但比FS占用的硬件資源少。
為驗(yàn)證簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu)LPAS的可行性,將其應(yīng)用于可重構(gòu)視頻陣列處理器,搭建驗(yàn)證平臺(tái),選取灰度共生矩陣GLCM(Gray-Level Co-occurrence Matrix)進(jìn)行紋理圖像特征提取的算法在此平臺(tái)上的映射分析。
灰度共生矩陣反映圖像灰度關(guān)于方向、相鄰間隔、變化幅度的綜合信息。一般在0°,45°,90°和135° 4個(gè)方向,從圖像灰度為i的像素(x,y)出發(fā),統(tǒng)計(jì)距離為δ、灰度為j的像素(x+Δx,y+Δy)同時(shí)出現(xiàn)的概率P(i,j,δ,θ)。本文所設(shè)計(jì)的LPAS局部優(yōu)先訪問結(jié)構(gòu)對(duì)存入同行Cache的數(shù)據(jù)訪問延遲最低,因此選取水平方向θ=0°,δ=3統(tǒng)計(jì)P(i,j,3,0°) 生成GLCM。
P(i,j,3,0°)=
{[(x,y),(x+Δx,y+Δy)]|f(x,y)=i,
f(x+Δx,y+Δy)=j;
x=0,1,…,Nx-1;
y=0,1,…,Ny-1;|Δx|=3,|Δy|=0}
(1)
其中,i,j=0,1,…,L-1;|Δx|和|Δy|分別表示像素(x,y)與像素(x+Δx,y+Δy)的水平距離和垂直距離的絕對(duì)值;x,y是圖像中的像素坐標(biāo);Nx,Ny分別是圖像的行列數(shù)。1幅圖像的灰度級(jí)數(shù)一般為0~255,共256級(jí)。級(jí)數(shù)太多會(huì)導(dǎo)致計(jì)算的GLCM較大,求灰度共生矩陣之前,先將圖像灰度級(jí)壓縮為4級(jí)。用計(jì)算得到的4×4灰度共生矩陣提取紋理特征二階矩(能量),二階矩反映圖像灰度分布均勻程度和紋理粗細(xì)度,是GLCM各元素的平方和,f大時(shí),紋理粗,能量大,反之f越小,紋理越細(xì),能量越少,如式(2)所示:
(2)
Figure 3 Image texture extraction map assignment圖3 圖像紋理提取映射分配
整個(gè)映射過程在1個(gè)簇內(nèi)實(shí)現(xiàn),如圖3所示。陣列處理器僅有PE33可以與外部交互,將最終得到的二階矩在PE33下用STM指令存到外存。具體映射過程如下:第1步:選取64×64的彩色圖像在Matlab中轉(zhuǎn)換為灰度圖像,并用LDM和ST指令將像素值讀入到16個(gè)PE的Cache中,每個(gè)Cache下存放64×4個(gè)像素值。第2步:簇內(nèi)16個(gè)PE用LD指令并行從16個(gè)Cache中讀取像素值。第3步:16個(gè)PE開始并行遍歷像素值,并生成16個(gè)GLCM,編號(hào)為GLCM0~GLCM15,同時(shí)將生成的4×4的GLCM用ST指令存入每個(gè)Cache的最后16位地址中,低4位地址存放第1行,中間8位地址依次存放第2行,第3行,最后4位地址存放第4行。處理完成后,用ST指令將相應(yīng)PE處理完成的握手信號(hào)存入PE33的Cache中。第4步:PE33用LD指令查看每個(gè)PE處理完成的握手信號(hào),收到握手信號(hào)后,PE33將其他15個(gè)PE生成的灰度共生矩陣GLCM0~GLCM15用ADD指令和ST指令生成全局共生矩陣GLCM。第5步:PE33將生成的灰度共生矩陣用式(2)進(jìn)行二階矩計(jì)算,將二階矩用STM指令存入外部存儲(chǔ)中。
最終在算法正確處理的情況下執(zhí)行時(shí)間為0.24 ms。生成灰度共生矩陣GLCM0~GLCM15的過程中,16個(gè)PE并行訪問本地Cache數(shù)據(jù),此時(shí)沖突概率為0,存儲(chǔ)訪問帶寬可以達(dá)到峰值7.6 GB/s。生成全局灰度共生矩陣GLCM和二階矩的計(jì)算時(shí)只有PE33訪問執(zhí)行,沖突概率依舊為0,此時(shí)訪問帶寬為450 MB/s。最終該簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu)LPAS可以為該算法提供的數(shù)據(jù)訪存帶寬為478.125 MB/s。
為驗(yàn)證簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu)LPAS的正確性和局部低時(shí)延特性,分別選取了有沖突和無沖突情況的讀寫訪問在Questasim上進(jìn)行仿真,對(duì)4×4分布式Cache中每1行Cache的RA區(qū)域和LA區(qū)域進(jìn)行延遲統(tǒng)計(jì)。圖4是無沖突訪問的讀寫統(tǒng)計(jì),行1表示第1行Cache的LA區(qū)域和RA區(qū)域的平均讀寫訪問延遲,行2表示第2行Cache的LA區(qū)域和RA區(qū)域的平均讀寫訪問延遲,行3表示第3行Cache的LA區(qū)域和RA區(qū)域的平均讀寫訪問延遲,行4表示第4行Cache的LA區(qū)域和RA區(qū)域的平均讀寫訪問延遲。由于讀操作和寫操作相似,圖5只統(tǒng)計(jì)了沖突概率分別為25%,50%,75%和100%時(shí)簇內(nèi)第1行Cache的LA區(qū)域和RA1區(qū)域、RA2區(qū)域和RA3區(qū)域的局部平均寫訪問延遲。
Figure 4 Access without conflict圖4 無沖突訪問
Figure 5 Access with conflict圖5 沖突訪問
從圖4和圖5可以看出,無沖突訪問情況下:每1行Cache不管是LA還是RA平均寫訪問延遲均為1個(gè)周期,平均讀訪問延遲為2個(gè)周期。沖突訪問情況下:(1)同樣的沖突概率,每1行Cache的LA的平均寫訪問延遲最低,RA1次之,RA3的平均寫訪問延遲最大。(2)隨著沖突概率的增加,LA的平均寫訪問延遲保持在2.5個(gè)周期,RA的平均寫訪問延遲呈上升趨勢(shì),其中RA3的平均寫訪問延遲上升最快。從以上分析結(jié)果可以看出,該互連結(jié)構(gòu)具有明顯的局部訪問優(yōu)勢(shì)。
為了進(jìn)一步分析比較LPAS的低時(shí)延特性,針對(duì)這種簇內(nèi)LPAS互連設(shè)計(jì),進(jìn)行了多種測(cè)試用例仿真,并與 LR2SS和FS進(jìn)行仿真性能對(duì)比。首先對(duì)8種簡(jiǎn)單的無沖突訪問進(jìn)行性能仿真統(tǒng)計(jì)。(1)同行的PEs訪問同行的Caches,比如PE00訪問Cache10,PE01訪問Cache11,PE02訪問Cache12,PE03訪問Cache13;(2)同列的PEs訪問同行的Caches;(3)同行的PEs訪問同列的Caches;(4)同列的PEs訪問同列的Caches;(5)局部的2×2 PEs陣列交叉訪問;(6)一個(gè)局部 2×2 PEs陣列訪問另一個(gè)局部2×2 PEs陣列中的Caches;(7)局部 2×2 PEs陣列分別訪問4個(gè)局部 2×2 PEs陣列中的Caches;(8)局部 2×2 Caches陣列訪問本地2×2 PEs陣列中的Caches。3種結(jié)構(gòu)的讀寫訪問延遲如圖6所示。
Figure 6 Read and write delay in simple cases圖6 簡(jiǎn)單讀寫訪問延遲統(tǒng)計(jì)
簡(jiǎn)單無沖突測(cè)試情況下,F(xiàn)S和LPAS具有相同的讀寫訪問延遲,其中平均寫訪問延遲為1個(gè)周期,平均讀訪問延遲為2個(gè)周期。LR2SS的平均寫訪問延遲為1.4個(gè)周期,平均讀訪問延遲為2.31個(gè)周期。由此可得出,在無沖突或低沖突率情況下,FS和LPAS的平均訪問延遲最小,LR2SS的平均訪問延遲最大。
為了更加深入地分析3種簇內(nèi)結(jié)構(gòu)延遲情況,選取了4類復(fù)雜情況測(cè)試用例,對(duì)寫訪問情況進(jìn)行測(cè)試比對(duì),每種情況至少模擬15種測(cè)試case,情況I是不同行的PEs訪問不同行的Caches,也稱為行循環(huán)訪問。測(cè)試結(jié)果表明3種結(jié)構(gòu)的行循環(huán)平均寫訪問延遲相同,都為1個(gè)周期,這里省略了比對(duì)圖。情況II是不同列的PEs訪問不同列的Caches,也稱為列循環(huán)訪問,仿真統(tǒng)計(jì)結(jié)果見圖7。情況III是基于一定的沖突概率不同行的PEs訪問不同行的Caches,稱為不同行訪問不同行,仿真統(tǒng)計(jì)結(jié)果見圖8。情況IV是基于一定的沖突概率不同列的PEs訪問不同列的Caches,稱為不同列訪問不同列,仿真統(tǒng)計(jì)結(jié)果見圖9。
Figure 7 Line loop access delay圖7 列循環(huán)訪問延遲
Figure 8 Different lines delay with different lines access圖8 不同行訪問不同行
Figure 9 Different rows delay with different rows access圖9 不同列訪問不同列
以上4種復(fù)雜情況測(cè)試中,無沖突情況下: LR2SS、FS和LPAS結(jié)構(gòu)的行循環(huán)平均寫訪問延遲相同,均為1個(gè)周期;FS和LPAS的列循環(huán)平均寫訪問延遲均為1個(gè)周期,LR2SS的平均列循環(huán)寫訪問延遲最大,為2.3個(gè)周期;加入沖突后:不同行訪問不同行的訪問情況下,F(xiàn)S和LPAS的平均寫訪問延遲均為1.42個(gè)周期,LR2SS的平均寫訪問延遲最大,為2.8個(gè)周期;不同行訪問不同列的訪問情況下,LPAS的平均寫訪問延遲最低為1.41個(gè)周期,F(xiàn)S的平均寫訪問延遲為1.43個(gè)周期,LR2SS的平均寫訪問延遲最大,為2.61個(gè)周期。從以上各種模擬情況可得到:多數(shù)情況下FS和LPAS的平均寫訪問延遲基本相同,也是3種結(jié)構(gòu)中平均寫訪問延遲最低的,在有沖突的不同列訪問不同列的訪問中,LPAS平均寫訪問優(yōu)于FS結(jié)構(gòu)。
針對(duì)可重構(gòu)視頻陣列處理器數(shù)據(jù)的訪存問題,本文基于分布式Cache結(jié)構(gòu)設(shè)計(jì)了一種簇內(nèi)局部優(yōu)先訪問結(jié)構(gòu),該結(jié)構(gòu)實(shí)現(xiàn)了簇內(nèi)4×4個(gè)PE對(duì)4×4個(gè)Cache的并行訪問,在沒有沖突時(shí)對(duì)簇內(nèi)Cache直接訪問,有沖突時(shí)按照本地區(qū)域優(yōu)先,遠(yuǎn)程次之的響應(yīng)順序完成訪問。通過Xilinx公司的ZYNQ系列芯片 XC7Z045 FFG900-2 FPGA開發(fā)板進(jìn)行驗(yàn)證,在無沖突情況下,該互連結(jié)構(gòu)支持簇內(nèi)16個(gè)PE的同時(shí)讀/寫訪問,最高頻率可達(dá)221 MHz,訪存峰值帶寬為7.6 GB/s。相比于文獻(xiàn)[15]的LR2SS結(jié)構(gòu),有更低的訪問延遲,相比于文獻(xiàn)[16]的FS結(jié)構(gòu),在局部數(shù)據(jù)訪問時(shí)有較好的響應(yīng)特性,該LPAS結(jié)構(gòu)相比于前2種結(jié)構(gòu)占用的硬件資源最少,且在大多數(shù)情況下有較低的訪問延遲。最后選取64×64的圖像提取紋理特征的算法在此結(jié)構(gòu)上映射實(shí)現(xiàn),完成該算法耗費(fèi)時(shí)間為0.24 ms,算法映射過程中的訪問峰值帶寬為7.6 GB/s,且LPAS結(jié)構(gòu)可為該算法提供 478.125 MB/s的訪存帶寬。