張 園,劉有耀,山 蕊
(西安郵電大學(xué),陜西 西安 710121)
隨著集成電路產(chǎn)業(yè)的發(fā)展,可重構(gòu)陣列處理器能夠滿足計(jì)算效能的需求,是處理器發(fā)展的必然趨勢(shì)[1?4]。但處理器處理速度與主存存儲(chǔ)速度失配引起的“存儲(chǔ)墻”問(wèn)題依然存在,如何在可重構(gòu)陣列處理器上構(gòu)建靈活、高效的存儲(chǔ)體系是處理器性能提升的一個(gè)關(guān)鍵問(wèn)題[5?6]。
為了解決上述問(wèn)題,設(shè)計(jì)者們普遍在可重構(gòu)存儲(chǔ)結(jié)構(gòu)中采用Cache 技術(shù)和多媒體應(yīng)用下的便簽式存儲(chǔ)器SPM(Scratch?Pad Memory)[7]。文獻(xiàn)[8]采用多級(jí)Cache 來(lái)進(jìn)行訪問(wèn),多級(jí)Cache 因?yàn)橐恢滦詥?wèn)題導(dǎo)致了較高的能耗,對(duì)于實(shí)時(shí)性數(shù)據(jù)處理較差,難以滿足新興應(yīng)用對(duì)存儲(chǔ)并行性訪問(wèn)的需求。文獻(xiàn)[9]提出的分布式Cache 結(jié)構(gòu),在大規(guī)模存儲(chǔ)系統(tǒng)中,提高了緩存吞吐量,節(jié)省了能耗。文獻(xiàn)[10]通過(guò)分布式SPM 在運(yùn)行時(shí)顯示執(zhí)行數(shù)據(jù)移動(dòng)指令,最大限度地提高軟件運(yùn)行速度。綜上研究表明,越來(lái)越多的學(xué)者在可重構(gòu)處理器中設(shè)計(jì)分布式存儲(chǔ)結(jié)構(gòu)[11],緩解可重構(gòu)處理器中的“存儲(chǔ)墻”問(wèn)題。
可重構(gòu)陣列處理器分布式存儲(chǔ)結(jié)構(gòu)中,實(shí)現(xiàn)陣列間高效率、低延遲的訪問(wèn)需求,常用的方法是在陣列處理器簇內(nèi)(Processing Element Group,PEG),設(shè)計(jì)互連網(wǎng)絡(luò)結(jié)構(gòu)?;ミB網(wǎng)絡(luò)不僅會(huì)影響計(jì)算性能,也會(huì)對(duì)面積和功耗有極大的影響[12]??芍貥?gòu)結(jié)構(gòu)設(shè)計(jì)早期,大都采用靜態(tài)互連網(wǎng)絡(luò),PE(Processing Element)在進(jìn)行數(shù)據(jù)交互時(shí)通過(guò)固定的互連結(jié)構(gòu),如文獻(xiàn)[13]中的BilRC 結(jié)構(gòu),該結(jié)構(gòu)采用鄰接互連線完成數(shù)據(jù)交互,對(duì)于沒(méi)有鄰接的PE,使得系統(tǒng)的計(jì)算效率有所降低且資源利用率不高。設(shè)計(jì)具有重構(gòu)特性的互連網(wǎng)絡(luò)成為可重構(gòu)陣列處理器的一個(gè)新的挑戰(zhàn)。本文基于可重構(gòu)陣列處理器分布式存儲(chǔ)結(jié)構(gòu),提出了一種動(dòng)態(tài)可配置分布式存儲(chǔ)訪問(wèn)結(jié)構(gòu)DCAS(Dynamic Configurable Access Structure)。該分布式訪問(wèn)結(jié)構(gòu)設(shè)有3 種互連方式,根據(jù)數(shù)據(jù)訪存特點(diǎn),可動(dòng)態(tài)地配置為本地訪問(wèn)模式、局部訪問(wèn)模式和全局訪問(wèn)模式,提高了資源利用率,優(yōu)化訪存性能,減少能耗,在很大程度上減少訪問(wèn)延遲,提高了可重構(gòu)陣列處理器的訪存并行性。
動(dòng)態(tài)可配置分布式存儲(chǔ)訪問(wèn)結(jié)構(gòu)DCAS 如圖1所示。
圖1 動(dòng)態(tài)可配置分布式存儲(chǔ)訪問(wèn)結(jié)構(gòu)
PEG 內(nèi)包含4×4 個(gè)PE,每個(gè)PE 對(duì)應(yīng)一個(gè)512 bit 大小的MB(Memory Bank,MB),稱為本地MB,本地MB 對(duì)應(yīng)的PE 稱為本地PE,這4×4 個(gè)MB 地址連續(xù),邏輯統(tǒng)一,以陣列的形式對(duì)應(yīng)排布在可重構(gòu)陣列處理器中,構(gòu)成4×4 大小的分布式存儲(chǔ)結(jié)構(gòu)。PE 要和MB 進(jìn)行通信時(shí),通過(guò)設(shè)計(jì)好的片上互連結(jié)構(gòu)(Interconnection)完成簇內(nèi)的數(shù)據(jù)通信。DCAS 硬件電路結(jié)構(gòu)分為動(dòng)態(tài)模式配置單元、本地訪問(wèn)模式單元、局部訪問(wèn)模式單元和全局訪問(wèn)模式單元4 個(gè)電路模塊,動(dòng)態(tài)模式配置單元主要完成分布式存儲(chǔ)訪問(wèn)結(jié)構(gòu)的配置,即決定該P(yáng)E 是本地訪問(wèn)模式還是局部訪問(wèn)模式,亦或是全局訪問(wèn)模式。本地訪問(wèn)模式完成本地PE 和本地MB 的互連,在此模式下僅支持本地訪問(wèn)需求。局部訪問(wèn)模式支持同一區(qū)域PE和MB 的共享訪問(wèn)需求,同區(qū)域之間的訪問(wèn)順序采用輪詢仲裁。全局訪問(wèn)模式支持簇內(nèi)16 個(gè)PE 和MB 的共享訪問(wèn),在此模式下實(shí)現(xiàn)簇內(nèi)所有PE 和MB 的數(shù)據(jù)交互。
簇內(nèi)16 個(gè)PE 根據(jù)訪問(wèn)需求,可并行切換為本地訪問(wèn)模式、局部訪問(wèn)模式和全局訪問(wèn)模式,也可部分配置為任意一種訪問(wèn)模式,提高了簇內(nèi)片上互連的靈活性,最大限度地優(yōu)化訪存效率。動(dòng)態(tài)模式配置單元主要功能定義如圖2 所示。
圖2 動(dòng)態(tài)模式配置單元結(jié)構(gòu)框圖
1)數(shù)據(jù)寄存器:接收到PE 的讀寫訪問(wèn)請(qǐng)求之后,先在寄存器中判斷反饋信息,若反饋信息為高,則將寄存的訪問(wèn)信息釋放;若反饋信息為低,則將訪問(wèn)信息寄存在數(shù)據(jù)寄存器中,等待正確的訪問(wèn)順序。
2)判斷器:接收PE 的讀寫訪問(wèn)信息,根據(jù)讀寫地址[12:9]判斷目的MB 位置,將判斷信息送給計(jì)數(shù)器。
3)計(jì)數(shù)器:數(shù)據(jù)訪問(wèn)一開始,先進(jìn)行8 個(gè)計(jì)數(shù)器的置0,然后根據(jù)判斷器發(fā)來(lái)的信息,記錄對(duì)3 個(gè)模式的讀訪問(wèn)次數(shù)和寫訪問(wèn)次數(shù),同時(shí)對(duì)各個(gè)模式下PE 發(fā)出的訪問(wèn)請(qǐng)求進(jìn)行計(jì)數(shù),當(dāng)訪問(wèn)模式變化時(shí),所有計(jì)數(shù)清0。
4)配置比較器:根據(jù)計(jì)數(shù)器的記錄結(jié)果和輸入的參數(shù)N進(jìn)行模式匹配,當(dāng)計(jì)數(shù)器的記錄結(jié)果達(dá)到模式切換的條件,對(duì)現(xiàn)有的訪問(wèn)模式進(jìn)行重新配置。
5)模式寄存器:記錄當(dāng)前訪問(wèn)模式和下一時(shí)刻訪問(wèn)模式,將訪問(wèn)狀態(tài)發(fā)送給模式配置器。
6)模式配置器:根據(jù)訪問(wèn)狀態(tài)和配置比較器,選擇相應(yīng)的模式輸出訪問(wèn)信息到相應(yīng)訪問(wèn)模式單元。
本地訪問(wèn)模式簇內(nèi)的Local Bus 將本地PE 和本地MB 直連,電路運(yùn)行效率高,且不會(huì)形成沖突訪問(wèn)。其單元框圖如圖3 所示,主要功能定義如下:
圖3 本地訪問(wèn)模式單元框圖
1)仲裁器:當(dāng)3 種訪問(wèn)模式同時(shí)有訪問(wèn)MB 的請(qǐng)求時(shí),根據(jù)本地優(yōu)先的訪問(wèn)策略,仲裁出一路信號(hào)經(jīng)Local Bus 與MB 進(jìn)行數(shù)據(jù)交互。并根據(jù)仲裁出的訪問(wèn)信號(hào)等待對(duì)應(yīng)的反饋信號(hào),將反饋信號(hào)送給動(dòng)態(tài)模式配置模塊。
2)數(shù)據(jù)信息通路Data:當(dāng)僅有本地訪問(wèn)模式的MB請(qǐng)求時(shí),直接經(jīng)過(guò)數(shù)據(jù)直連通道與本地MB 進(jìn)行數(shù)據(jù)交互。
3)反饋信息通路ack:當(dāng)源操作PE 和目的MB 完成數(shù)據(jù)交互后,需返回ack 信息告知源操作PE。
局部訪問(wèn)模式單元簇內(nèi)的Partly Bus 把位于同行的PE 連接起來(lái)組成一個(gè)局部共享通道。一個(gè)共享通道內(nèi)有4 個(gè)PE,訪問(wèn)沖突時(shí),采用輪詢仲裁,每次仲裁出一路信號(hào)與MB 進(jìn)行數(shù)據(jù)交互。在PE 收到反饋信息后,可在下一拍發(fā)送新的訪問(wèn)請(qǐng)求,否則一直處于訪問(wèn)等待狀態(tài)。局部訪問(wèn)模式單元框圖如圖4 所示,讀操作與寫操作類似,以寫操作為例,主要功能定義如下:
圖4 局部訪問(wèn)模式單元框圖
1)寫FSM:接受拼接的寫使能P_wr[3:0],寫使能從高位到低位分別為局部區(qū)域3 號(hào)使能、局部區(qū)域2 號(hào)使能、局部區(qū)域1 號(hào)使能和局部區(qū)域0 號(hào)使能。當(dāng)訪問(wèn)沖突率為0 時(shí),寫FSM 根據(jù)P_wr[3:0]的有效位輸出當(dāng)前狀態(tài)使能信號(hào)P_wr_reg[3:0],輸出的P_wr_reg[3:0]中僅有1 位為高位。當(dāng)訪問(wèn)沖突率不為0 時(shí),寫FSM 經(jīng)過(guò)輪詢,仲裁出1 路信號(hào),生成新的使能有效位P_wr_reg[3:0]。
2)寫MUX:根據(jù)寫FSM 仲裁出的有效寫使能P_wr_reg,進(jìn)行寫使能、寫地址和寫數(shù)據(jù)輸出信號(hào)的選擇,同時(shí)進(jìn)行寫反饋信號(hào)的等待。當(dāng)P_wr_reg=0 時(shí),代表無(wú)訪問(wèn)請(qǐng)求,所有的寫輸出信號(hào)置0,寫反饋信號(hào)亦置0,當(dāng)P_wr_reg[3:0]第n位為高時(shí)(n=0,1,2,3),選擇n號(hào)寫輸入信號(hào)進(jìn)行輸出,并且等待n號(hào)寫反饋信號(hào)。
全局訪問(wèn)模式單元簇內(nèi)的Global Bus 將4×4 個(gè)PE和4×4 個(gè)MB 連接起來(lái),在該模式結(jié)構(gòu)下,電路連線最多,模塊最大,運(yùn)行消耗最大。全局訪問(wèn)模式下訪問(wèn)沖突可達(dá)100%,即16 個(gè)PE 同時(shí)訪問(wèn)一個(gè)MB 塊,此時(shí),經(jīng)過(guò)輪詢仲裁,仲裁出1 路信號(hào)與MB 塊進(jìn)行數(shù)據(jù)交互。但全局模式下,可在簇內(nèi)形成最大的共享存儲(chǔ)結(jié)構(gòu),即16×512 bit 大小的存儲(chǔ)塊。全局模式訪問(wèn)單元框圖如圖5 所示,這里以寫操作為例,主要功能定義如下:
圖5 全局訪問(wèn)模式單元結(jié)構(gòu)框圖
1)寫FSM:接受拼接的寫使能P_wr[15:0],P_wr[15:0]的第n位代表全局區(qū)域的第n號(hào)寫使能請(qǐng)求(n=0,1,2,…,15)。當(dāng)訪問(wèn)沖突率為0 時(shí),寫FSM 根據(jù)P_wr[15:0]的有效位輸出當(dāng)前狀態(tài)新的寫使能信號(hào)P_wr_reg[15:0],輸出的P_wr_reg[15:0]中僅有1 位為高位。當(dāng)訪問(wèn)沖突率不為0 時(shí),寫FSM 經(jīng)過(guò)輪詢仲裁,仲裁出1 路信號(hào),生成新的使能P_wr_reg[15:0]。
2)寫MUX:根據(jù)寫FSM 仲裁出的有效寫使能P_wr_reg,進(jìn)行寫使能、寫地址和寫數(shù)據(jù)輸出信號(hào)的選擇,同時(shí)等待寫反饋信號(hào)。當(dāng)P_wr_reg[15:0]為0 時(shí),代表此時(shí)無(wú)寫訪問(wèn)請(qǐng)求,所有的寫輸出信號(hào)置0,寫反饋信號(hào)亦置0,當(dāng)P_wr_reg[15:0]第n位為高時(shí)(n=0,1,2,…,15),選擇n號(hào)寫輸入信號(hào)進(jìn)行輸出,并且等待n號(hào)寫反饋信號(hào)。
DCAS 的訪問(wèn)機(jī)制如下:
1)DCAS 接收PE 送來(lái)的讀寫數(shù)據(jù),并將讀寫信息寄存在本地Config MB 中。
2)在訪問(wèn)的一開始,所有Config MB 中的計(jì)數(shù)器C_PE,C_L,C_P,C_G 全部置0。
3)根據(jù)PE 發(fā)出的讀寫地址信息的[12:9]位來(lái)判斷訪問(wèn)的數(shù)據(jù)位于哪一個(gè)MB 塊,然后利用本地MB 對(duì)訪問(wèn)的MB 塊次數(shù)以及PE 發(fā)出的訪問(wèn)請(qǐng)求次數(shù)進(jìn)行對(duì)應(yīng)的計(jì)數(shù)器加1。
4)根據(jù)設(shè)置的參數(shù)N和模式切換的條件進(jìn)行模式匹配,若模式匹配正確,則進(jìn)行模式配置。
5)在配置好的模式下將訪問(wèn)請(qǐng)求發(fā)往對(duì)應(yīng)的互連結(jié)構(gòu)下進(jìn)行數(shù)據(jù)交互。
6)數(shù)據(jù)交互完成后返回讀寫反饋信息以及讀數(shù)據(jù)信息,Config MB 收到反饋信息后,將寄存的訪問(wèn)信息釋放,然后PE 可繼續(xù)發(fā)送讀寫請(qǐng)求。
采用Verilog HDL 硬件描述語(yǔ)言,在Questasim10.1d工具下進(jìn)行功能仿真驗(yàn)證,選用Xilinx 公司的ZYNQ 系列芯片XC7Z045 FFG900?2 FPGA,通過(guò)Xilinx ISE14.7對(duì)設(shè)計(jì)進(jìn)行綜合,DCAS 最大工作頻率為212.354 MHz,訪問(wèn)峰值帶寬為7.125 GB/s。具體器件資源占用情況如表1 所示。
表1 FPGA 綜合報(bào)告
本文設(shè)計(jì)的DCAS 基于數(shù)據(jù)訪存特點(diǎn),可動(dòng)態(tài)獨(dú)立地將16 個(gè)PE 配置為本地訪問(wèn)模式、局部訪問(wèn)模式和全局訪問(wèn)模式。為驗(yàn)證結(jié)構(gòu)的合理性,選取了有沖突和無(wú)沖突兩種情況進(jìn)行訪問(wèn)延遲的統(tǒng)計(jì)。
圖6統(tǒng)計(jì)了在無(wú)沖突訪問(wèn)時(shí),訪問(wèn)次數(shù)分別為10次、20 次、30 次、40 次和100 次時(shí)3 種模式的平均寫訪問(wèn)延遲。在本地訪問(wèn)模式下,平均寫訪問(wèn)延遲與訪問(wèn)次數(shù)無(wú)關(guān),均為1 個(gè)時(shí)鐘周期。局部訪問(wèn)模式和全局訪問(wèn)模式的平均寫訪問(wèn)延遲相同,隨著訪問(wèn)次數(shù)的增多,2 種訪問(wèn)模式的平均寫訪問(wèn)延遲均趨于1 個(gè)時(shí)鐘周期。統(tǒng)計(jì)結(jié)果表明,在無(wú)沖突訪問(wèn)時(shí),簇內(nèi)的3 種片上互連結(jié)構(gòu)均可以在各自訪問(wèn)需求下實(shí)現(xiàn)最優(yōu)的訪問(wèn)效果。
圖6 無(wú)沖突時(shí)平均寫訪問(wèn)延遲統(tǒng)計(jì)
圖7 展示了沖突率為25%,50%,75%,100%時(shí),局部訪問(wèn)模式和全局訪問(wèn)模式的平均讀寫訪問(wèn)延遲統(tǒng)計(jì)圖。由圖可知,隨著訪問(wèn)沖突率的增大,2 種訪問(wèn)模式下的平均讀寫訪問(wèn)延遲均有上升,其中全局訪問(wèn)模式的平均讀寫訪問(wèn)延遲上升較快。
圖7 有沖突時(shí)平均讀寫訪問(wèn)延遲統(tǒng)計(jì)
針對(duì)可重構(gòu)視頻陣列處理器數(shù)據(jù)的訪存問(wèn)題,本文設(shè)計(jì)了一種動(dòng)態(tài)可配置分布式存儲(chǔ)訪問(wèn)結(jié)構(gòu),該結(jié)構(gòu)可動(dòng)態(tài)獨(dú)立地將4×4 個(gè)PE 配置為本地訪問(wèn)模式、局部訪問(wèn)模式和全局訪問(wèn)模式,實(shí)現(xiàn)4×4 個(gè)PE 對(duì)4×4 個(gè)MB 的并行訪問(wèn)。無(wú)沖突時(shí),本地訪問(wèn)模式寫操作在當(dāng)前時(shí)鐘即可完成數(shù)據(jù)交互,并返回寫反饋信息,讀操作需要1 個(gè)時(shí)鐘周期,并返回讀數(shù)據(jù)和讀反饋信息。局部訪問(wèn)模式和全局訪問(wèn)模式寫操作需要1 個(gè)時(shí)鐘周期,讀操作需要2 個(gè)時(shí)鐘周期。通過(guò)Xilinx 公司的ZYNQ 系列芯片XC7Z045 FFG900?2 FPGA 開發(fā)板進(jìn)行驗(yàn)證,在無(wú)沖突情況下,該結(jié)構(gòu)支持16 個(gè)PE 的同時(shí)讀/寫訪問(wèn),最高頻率可達(dá)212.354 MHz,訪存峰值帶寬為7.125 GB/s。