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