蔣 林,崔朋飛,山 蕊,武 鑫,田汝佳
西安郵電大學 電子工程學院,西安 710121
陣列處理器,通過片上集成大量輕核處理元(Processor Element,PE),利用鄰接短線互連而成,廣泛地用于視頻計算[1]。視頻陣列處理器不僅具有強大的計算能力,而且適應后摩爾時代集成電路工藝的發展。但是,隨著視頻編解碼標準的不斷演進,計算量急劇飆升,數據訪問量也隨之增加[2]。雖然,通過片上集成更多的處理核,一定程度上可以提升視頻陣列處理器計算能力,但是核數的增多進一步加劇了處理器訪問存儲的鴻溝,促使存儲結構成為制約視頻陣列處理器性能提升的主要瓶頸。
新一代視頻編解碼標準(High Efficiency Video Coding,HEVC)[3]在提升編碼性能的同時,對系統帶寬提出了更高的要求。特別是,面向幀間的運動估計與運動補償算法由于其龐大的數據量,一方面處理元需要頻繁訪問主存讀取參考像素值;另一方面,算法間的數據通信需要大量的數據共享,而在各算法內部,則會產生大量的不需要與外部進行交互的臨時數據。因此,如何提供高效的數據交互機制同時滿足臨時數據的緩存要求便成為提升整個陣列處理器性能的關鍵。
為了解決這一問題,各種基于光互連和基于電互連的存儲結構相繼被提出。為了利用光信號在通信中速度快、穩定性高和功耗小的特點,文獻[4]通過額外的光電轉換器件,將電路由器引入到光互連網絡中,使用光信號進行片上信號的傳輸。文獻[5-6]中基于三維集成技術提出了一種多層的光電互連結構,通過光交換層實現處理器核心對多Bank存儲器的并行訪問。光片上通信雖然在帶寬、延遲和功耗等方面具有顯著優勢,但物理實現較為復雜且成本高昂,同時光電轉換帶來的額外延遲、功耗等開銷使得其不適合局部數據訪問通信。
文獻[7]中UltraSPARC T2處理器設計了多級Cache的存儲結構,通過交叉開關,將L1級私有Cache與L2級Cache互連,但多級Cache間一致性復雜,硬件開銷較大。文獻[8]中基于簇的64核處理器結構中,每8個核構成一個處理元簇,每4個處理器核共享一個存儲器,并通過路由器形成星型拓撲,進行核間通信,整個片上網絡通過路由器形成mesh結構。但多個處理器共享一個存儲器,增加了訪問沖突概率,且星型拓撲需要8端口的路由器作為支持,無疑增加了設計的復雜度。文獻[9]中的多核處理器結構,每個處理器核心擁有私有的L1級指令Cache和L1級數據Cache,4個處理器核心通過總線方式共享L2級Cache,通過全局的總線仲裁機制,維護Cache的一致性。雖然通過總線方式互連,設計簡單,但當處理器核心增加時,總線壓力急速增加,且可擴展性較差。文獻[10]提出的CHMS結構中,通過共享的寄存器堆和共享的存儲器實現處理器核心的通信,雖然能高效地進行數據共享,但由于所有存儲資源共享,增加了并行化編程的難度,增加了訪問沖突概率。
針對上述問題,同時為了滿足視頻編解碼各算法間數據交互和各算法內部中間結果的緩存需求,結合視頻陣列處理器多核陣列的結構特點,本文設計了由私有存儲層和共享存儲層構成的多層次分布式存儲結構。考慮到視頻編解碼算法中,每個算法基于基本的編碼宏塊,針對4×4、8×8的編碼單元進行處理,如運動估計、運動補償以及變換量化算法,而所處理的編碼單元通常由相鄰的像素值構成,基于這一特點,本文利用視頻算法編碼單元的數據在時間和空間上的數據相關性,考慮結構設計的復雜度和可擴展性,結合陣列結構的拓撲特點,采用目錄協議一致性策略,設計了由“邏輯集中,物理分布”的分布式存儲器和多個Cache構成的共享存儲層;考慮各個算法在數據處理期間,各算法內部數據的相對獨立性,設計了由16個私有存儲器構成的私有存儲層。通過Xilinx公司FPGA板級驗證,實驗結果表明,該結構在保持簡潔性和可擴展性的同時,最高能夠提供9.73 GB/s的訪存帶寬,滿足視頻編解碼算法數據訪存的需求。
多層次分布式存儲結構由私有存儲層和共享存儲層兩層結構組成,如圖1所示。其中私有存儲層由16個獨立的存儲器構成,該16個存儲器組成4×4的存儲器陣列,與4×4的處理器簇相對應,構成各處理器單元的的私有存儲器;共享存儲層由16個物理分布、邏輯統一的存儲器塊和16個Cache通過片上路由器互連構成。
當視頻陣列處理器中的各計算單元處于數據準備階段時,通過共享存儲層,將所需數據加載到各私有存儲器中;當計算單元處于算法的計算階段時,對各私有存儲器進行無沖突的讀寫操作,從而減小數據訪問的沖突概率,提高算法的運算速度。

圖1 多層次分布式存儲結構示意圖
傳統的存儲結構一般為片內私有的L1級Cache加私有或者共享的L2級Cache和集中式的外部存儲器的分層次結構,采用基于總線結構的MSI、MESI、MOESI一致性協議[11],但隨著處理器核數的增加,硬件資源的消耗以及設計的復雜度成倍提升,總線結構已經不能適應多核處理器系統的需求。基于NOC(Network on Chip,NOC)結構的分布式存儲結構和基于目錄協議[12]的Cache一致性策略由于其可擴展性和高效性,已經成為現代多核處理器存儲體系的主流。
目錄的組織形式一般分為全位向量映射目錄、有限指針目錄和鏈式目錄[13]。在一個基于目錄協議實現的多核系統中,目錄由多個目錄項組成,每個目錄項對應一個Cache行大小的數據塊,因此目錄項的數目與存儲器的總容量成正比關系。目錄由兩部分構成,一部分是狀態信息,另一部分是共享信息。目錄的狀態信息表示當前Cache行所處的狀態,如VALID,該狀態信息位基本是固定的,不會隨著系統規模的增長而變化,而目錄的共享信息則表示當前系統中擁有該共享副本的節點信息,在全位向量映射目錄中,每一位表示一個處理器核的共享狀態,共享信息位會隨著系統規模的增長而增長,有限指針目錄和鏈式目錄能夠降低目錄的存儲開銷,但也會大幅增加系統設計的復雜性,為了降低設計的復雜度,考慮到本文的簇內處理器核心數不多,本文采用全位向量映射目錄的組織形式。
如圖2,以3個存儲器塊為例,在系統初始階段,存儲器塊對應目錄中有效位為1,共享位為000。當PE00對存儲塊01讀取數據時,首先訪問目錄存儲器,當有效位為1時,將數據通過路由器返回PE00,同時更改目錄信息為1001;當PE02對存儲塊01讀取數據時,目錄信息最高位為1,則直接讀取存儲器中數據,同時修改目錄信息為1101;當PE00對該Cache行的數據修改過,且需要替換寫回時,則目錄信息修改為0001;隨后當PE02讀取存儲塊01時,目錄信息有效位為0,則根據共享位向PE00發送寫回請求,待數據寫回后將數據返回PE02,同時修改目錄信息為0101。

圖2 共享存儲層數據一致性過程
對于PE來說,通過設置地址信息中的標志位,可以對私有存儲器和共享存儲器進行訪問。當訪問私有存儲器時,則通過私有存儲層直接訪問,當訪問共享存儲器時,則需要通過片上網絡的共享存儲層進行通信。
當PE發出讀請求時,本地Cache單元首先判斷本地Cache是否命中,若命中,則直接讀取所需數據,訪問結束;若不命中,則向控制器發送讀查找請求,控制器根據地址信息,判斷向本地的存儲器塊或遠程的存儲器塊發送讀請求,若對應存儲器塊目錄的對應行狀態位有高,則讀取對應數據,并修改目錄信息,待數據寫入本地Cache后,訪問結束;若對應存儲器塊目錄的行狀態位為低,則根據目錄中該數據的共享信息向擁有者發送寫回請求,待數據寫回后再讀取數據并修改目錄狀態,待數據寫入本地Cache后,訪問結束。寫訪問過程與讀訪問過程類似,訪問流程如圖3所示。

圖3 數據訪問過程
多層次分布式存儲結構中,共使用64個Xilinx定制雙端口存儲器IP(Intellectual Property,IP),其中,私有存儲層16個,對應16個私有存儲器,共享存儲層48個,對應16個共享存儲器、16個目錄存儲器以及16個高速緩存單元,通過互連網絡構成層次化的分布式存儲結構,如圖4所示。

圖4 多層次分布式存儲結構框圖
網絡適配器是本地PE與遠程PE通信的網絡接口,按照路由器格式對通信信息進行打包與解包操作,包格式如圖5所示。
網絡適配器由無效查找模塊、無效發送模塊、寫回請求模塊、替換寫回模塊和讀查找模塊5個模塊構成,頂層結構如圖6所示。
目錄存儲器是分布式Cache實現數據一致性的關鍵,主要由請求保持模塊、目錄控制模塊、請求仲裁模塊和目錄存儲IP模塊以及數據存儲器IP構成,頂層設計如圖7所示。
請求仲裁模塊對來自本地PE和遠程PE的兩路讀寫請求做出仲裁,采用本地優先的仲裁策略;請求保持模塊對仲裁失敗的請求暫存,等待下次仲裁;目錄控制模塊對仲裁成功的請求做出響應,分以下幾種情況:
(1)讀查找請求:目錄控制器根據讀查找地址,讀取目錄中的信息,如果有效位為高,則讀取對應數據存儲器Bank的數據,并根據讀地址的高4位,記錄讀取數據的PE號,更新目錄信息;如果有效位為低,則根據共享位信息,向對應PE發出寫回請求,待數據返回,發回讀查找數據,再對目錄信息進行更新。
(2)通知無效請求:目錄控制器根據無效查找的地址,讀取目錄中的信息,如果有效位高,則將有效位置零,并根據共享位,向對應PE發送無效請求;如果有效位為低,則根據共享位,向對應PE發送無效請求。
(3)替換寫回請求:目錄控制器根據替換寫回地址,將替換寫回的數據寫入對應數據存儲器Bank中,同時更新目錄信息,將對應地址的有效位置1。
高速緩存單元(Cache)采用4路組相聯的地址映射策略,采用最近最少用[14]的寫替換策略對本地PE的讀寫進行緩存。
高速緩存單元主要由狀態寄存單元(State_reg)、命中判斷單元(Hit_judge)、寫策略選擇單元(Wr_str)、讀仲裁單元(Rd_arb)、讀數據單元(Rd_data)和地址轉換單元(Addr_trans)6個子模塊構成,如圖8所示。
(1)狀態寄存單元:該模塊用于記錄高速緩存單元數據的實時狀態,并采用最近最少用替換策略提供需替換的Cache行號。
(2)命中判斷單元:當PE發出讀寫請求時,命中判斷單元通過狀態寄存單元的信息,判斷本地Cache中是否命中。
(3)寫策略選擇單元:當PE讀寫不命中,需要向本地Cache調入數據時,寫策略選擇單元根據狀態寄存單元的對應Cache行狀態,做出替換寫入或者直接寫入的策略選擇。
(4)讀仲裁單元:該模塊用于對PE發出的讀請求、由寫替換引起的讀請求和控制單元發出的寫回請求按照本地讀有限的優先級做出仲裁選擇。
(5)讀數據單元:讀仲裁單元送出的讀請求信號進入讀數據單元,讀數據單元根據命中判斷單元的判斷結果,選擇來自本地Cache的數據和來自控制單元的遠程數據做出選擇,在需要進行寫替換時,向控制器發出寫替換請求。

圖5 路由器適配器包格式

圖6 網絡適配器結構框圖

圖7 目錄存儲器結構框圖

圖8 高速緩存單元結構框圖
(6)地址轉換單元:在PE的讀寫過程中,存在命中與不命中兩種可能,該模塊對本地Cache緩存數據讀寫地址進行轉換,在讀寫命中情況下,讀寫地址不做轉換,直接送往本地存儲器Bank;在讀寫不命中情況下,根據讀寫地址的高12位進行自增操作,完成讀寫地址的轉換。
在對網絡適配器、目錄存儲器和高速緩存單元進行RTL級設計,通過編寫幾種典型訪問情況下的測試激勵,使用modelsim進行功能仿真后,與視頻陣列處理器虛通道路由器、輕核處理器以及Xilinx定制存儲器IP互連,通過Xilinx的Virtex-6系列xc6vlx550T開發板對設計進行硬件測試,具體參數如表1所示。

表1 多層次分布式存儲結構參數
通過Xilinx ISE對設計進行綜合,綜合結果如表2所示。

表2 FPGA綜合結果
由于訪問延遲與片上Cache個數、地址映射策略、寫替換策略、實時共享狀態以及路由器的路由算法密切相關,圖9和圖10分別給出了采用最近最少用和寫回的替換策略、4路組相聯的地址映射策略以及采用XY維序路由算法在4×4的陣列結構中,幾種典型情況下共享存儲層數據訪問的最小延遲周期數。
私有存儲層中,可無沖突讀寫訪問,讀數據需要2個時鐘周期,寫數據只需1個時鐘周期。共享存儲層中,在讀命中情況下,數據訪問只需1個時鐘周期,在寫命中情況下,數據訪問需要3個時鐘周期。在讀不命中和寫不命中情況下,由于存在Cache一致性開銷會導致訪問延遲增大,但對本地存儲器Bank的訪問延遲要明顯低于遠程存儲器Bank的訪問延遲。

圖9 讀數據訪問延遲

圖10 寫數據訪問延遲
本文采用verilog硬件描述語言進行RTL級設計,設計并實現了一種多層次分布式存儲結構。在文獻[15]中使用SystemC硬件描述語言,設計并實現了一種Cache結構的仿真平臺,并對兩種Cache結構進行了仿真。本文結構與文獻[15]訪問延遲對比結果如表3所示。

表3 訪問延遲對比結果
在讀寫不命中情況下,由于本文所設計的共享存儲層中,16個L1級Cache與分布式存儲器一一對應,本地Cache與PE距離較近,故與文獻[15]相比,讀寫延遲較??;在讀命中情況下,本文設計的結構與文獻[15]的結構相同,故延遲相同;在寫命中情況下,由于需要更新Cache中狀態信息,延遲有所增加。
文獻[16-17]針對視頻和圖像處理,設計了不同的存儲結構,本文結構與文獻[16-17]陣列處理器存儲結構對比如表4所示。
在文獻[16]的V-RCA結構中,采用寄存器文件對數據進行暫存,雖然有利于提升數據的訪存速度,但面積消耗較大,數據交互時每次數據訪存位寬為128位,通過集中式的數據分發與接收模塊進行存儲管理,無疑增加了數據訪存的復雜度。文獻[17]的PAAG模型中,由于沒有寄存器文件,通過東西南北4個方向的鄰接共享存儲器進行數據交互和緩存,適用于流水化設計,但由于鄰接共享存儲器容量有限且沖突概率較大,無法滿足HEVC算法對存儲訪存的要求。本文設計的多層次分布式存儲結構中,對臨時數據通過獨立的私有存儲器緩存,對需交互的數據通過多個Cache和分布式存儲器構成的共享存儲層進行PE間通信,滿足了視頻算法對訪存的需求。

表4 陣列處理器存儲結構對比結果
針對高清視頻編解碼算法需大量訪存的要求,結合視頻算法的訪存特點,設計并實現了一種多層次分布式存儲結構。通過Xilinx公司的FPGA開發板進行驗證,實驗結果表明,在無沖突情況下,16個PE同時發送讀寫訪問,此時帶寬達到峰值9.73 GB/s,在滿足視頻編碼算法訪存要求的同時,保證了結構的可擴展性。
[1]Schmitz J A,Gharzai M K,Balkir S,et al.A 1,000 frames/s vision chip using scalable pixel-neighborhood-level parallel processing[J].IEEE Journal of Solid-State Circuits,2017,52(2):556-568.
[2]Oh K,So J,Kim J.Low complexity implementation of slim HEVC encoder design[C]//International Conference on Systems,Signals and Image Processing,2016:1-4.
[3]Sullivan G J,Ohm J,Han W J,et al.Overview of the High Efficiency Video Coding(HEVC) standard[J].IEEE Transactions on Circuits&Systems for Video Technology,2012,22(12):1649-1668.
[4]Ohta M.Optical switching of many wavelength packets:A conservative approach for an energy efficient exascale interconnection network[C]//IEEE International Conference on High Performance Switching and Routing,2016:69-74.
[5]Wang K,Gu H,Yang Y,et al.Optical interconnection network for parallel access to multi-rank memory in future computing systems[J].Optics Express,2015,23(16):20480-20494.
[6]Wang Y,Gu H,Wang K,et al.Low-power low-latency optical network architecture for memory access communication[J].IEEE/OSA JournalofOpticalCommunications and Networking,2016,8(10):757-764.
[7]黃安文,高軍,張民選.多核處理器片上存儲系統研究[J].計算機工程,2010,36(4):4-6.
[8]于學球.可擴展64核處理器關鍵技術研究——片上網絡、存儲體系及LTE實現[D].上海:復旦大學,2014.
[9]相里博.基于VMM的多核處理器共享緩存的研究與驗證[D].西安:西安電子科技大學,2016.
[10]Li J,Dai Z,Li W,et al.Study and implementation of cluster hierarchical memory system of multicore cryptographic processor[C]//IEEE International Conference on Asic,2015:1-4.
[11]Hwang K.Advanced computer architecture:parallelism,scalability,programmability=[M].[S.l.]:Mcgraw-Hill,1993.
[12]Gir?o G,Oliveira B C D,Soares R,et al.Cache coherency communication cost in a NoC-based MPSoC platform[C]//Symposium onIntegratedCircuitsandSystems Design,Copacabana,Rio De Janeiro,Brazil,September,2007:288-293.
[13]龐征斌.基于SMP的CC-NUMA類大規模系統中Cache一致性協議研究與實現[D].長沙:國防科學技術大學,2007.
[14]Patterson D A,Hennessy J L.Computer architecture:A quantitative approach[M]//Computer Architecture:A Quantitative Approach.[S.l.]:Morgan Kaufmann Publishers Inc,2007:93.
[15]Gir?o G,Oliveira B C D,Soares R,et al.Design and performance evaluation of a cache consistent noc-based mp-soc[C]//Iberchip Workshop,2007.
[16]王浩.基于視頻壓縮算法的硬件模板設計和可重構陣列架構研究[D].上海:上海交通大學,2011.
[17]Li T,Xiao L,Huang H,et al.PAAG:A polymorphic array architecture for graphics and image processing[C]//Fifth International Symposium on Parallel Architectures,Algorithms and Programming,2012:242-249.