蔣 林,崔朋飛,山 蕊,武 鑫,田汝佳
西安郵電大學(xué) 電子工程學(xué)院,西安 710121
陣列處理器,通過片上集成大量輕核處理元(Processor Element,PE),利用鄰接短線互連而成,廣泛地用于視頻計算[1]。視頻陣列處理器不僅具有強大的計算能力,而且適應(yīng)后摩爾時代集成電路工藝的發(fā)展。但是,隨著視頻編解碼標(biāo)準(zhǔn)的不斷演進(jìn),計算量急劇飆升,數(shù)據(jù)訪問量也隨之增加[2]。雖然,通過片上集成更多的處理核,一定程度上可以提升視頻陣列處理器計算能力,但是核數(shù)的增多進(jìn)一步加劇了處理器訪問存儲的鴻溝,促使存儲結(jié)構(gòu)成為制約視頻陣列處理器性能提升的主要瓶頸。
新一代視頻編解碼標(biāo)準(zhǔn)(High Efficiency Video Coding,HEVC)[3]在提升編碼性能的同時,對系統(tǒng)帶寬提出了更高的要求。特別是,面向幀間的運動估計與運動補償算法由于其龐大的數(shù)據(jù)量,一方面處理元需要頻繁訪問主存讀取參考像素值;另一方面,算法間的數(shù)據(jù)通信需要大量的數(shù)據(jù)共享,而在各算法內(nèi)部,則會產(chǎn)生大量的不需要與外部進(jìn)行交互的臨時數(shù)據(jù)。因此,如何提供高效的數(shù)據(jù)交互機制同時滿足臨時數(shù)據(jù)的緩存要求便成為提升整個陣列處理器性能的關(guān)鍵。
為了解決這一問題,各種基于光互連和基于電互連的存儲結(jié)構(gòu)相繼被提出。為了利用光信號在通信中速度快、穩(wěn)定性高和功耗小的特點,文獻(xiàn)[4]通過額外的光電轉(zhuǎn)換器件,將電路由器引入到光互連網(wǎng)絡(luò)中,使用光信號進(jìn)行片上信號的傳輸。文獻(xiàn)[5-6]中基于三維集成技術(shù)提出了一種多層的光電互連結(jié)構(gòu),通過光交換層實現(xiàn)處理器核心對多Bank存儲器的并行訪問。光片上通信雖然在帶寬、延遲和功耗等方面具有顯著優(yōu)勢,但物理實現(xiàn)較為復(fù)雜且成本高昂,同時光電轉(zhuǎn)換帶來的額外延遲、功耗等開銷使得其不適合局部數(shù)據(jù)訪問通信。
文獻(xiàn)[7]中UltraSPARC T2處理器設(shè)計了多級Cache的存儲結(jié)構(gòu),通過交叉開關(guān),將L1級私有Cache與L2級Cache互連,但多級Cache間一致性復(fù)雜,硬件開銷較大。文獻(xiàn)[8]中基于簇的64核處理器結(jié)構(gòu)中,每8個核構(gòu)成一個處理元簇,每4個處理器核共享一個存儲器,并通過路由器形成星型拓?fù)?,進(jìn)行核間通信,整個片上網(wǎng)絡(luò)通過路由器形成mesh結(jié)構(gòu)。但多個處理器共享一個存儲器,增加了訪問沖突概率,且星型拓?fù)湫枰?端口的路由器作為支持,無疑增加了設(shè)計的復(fù)雜度。文獻(xiàn)[9]中的多核處理器結(jié)構(gòu),每個處理器核心擁有私有的L1級指令Cache和L1級數(shù)據(jù)Cache,4個處理器核心通過總線方式共享L2級Cache,通過全局的總線仲裁機制,維護(hù)Cache的一致性。雖然通過總線方式互連,設(shè)計簡單,但當(dāng)處理器核心增加時,總線壓力急速增加,且可擴展性較差。文獻(xiàn)[10]提出的CHMS結(jié)構(gòu)中,通過共享的寄存器堆和共享的存儲器實現(xiàn)處理器核心的通信,雖然能高效地進(jìn)行數(shù)據(jù)共享,但由于所有存儲資源共享,增加了并行化編程的難度,增加了訪問沖突概率。
針對上述問題,同時為了滿足視頻編解碼各算法間數(shù)據(jù)交互和各算法內(nèi)部中間結(jié)果的緩存需求,結(jié)合視頻陣列處理器多核陣列的結(jié)構(gòu)特點,本文設(shè)計了由私有存儲層和共享存儲層構(gòu)成的多層次分布式存儲結(jié)構(gòu)??紤]到視頻編解碼算法中,每個算法基于基本的編碼宏塊,針對4×4、8×8的編碼單元進(jìn)行處理,如運動估計、運動補償以及變換量化算法,而所處理的編碼單元通常由相鄰的像素值構(gòu)成,基于這一特點,本文利用視頻算法編碼單元的數(shù)據(jù)在時間和空間上的數(shù)據(jù)相關(guān)性,考慮結(jié)構(gòu)設(shè)計的復(fù)雜度和可擴展性,結(jié)合陣列結(jié)構(gòu)的拓?fù)涮攸c,采用目錄協(xié)議一致性策略,設(shè)計了由“邏輯集中,物理分布”的分布式存儲器和多個Cache構(gòu)成的共享存儲層;考慮各個算法在數(shù)據(jù)處理期間,各算法內(nèi)部數(shù)據(jù)的相對獨立性,設(shè)計了由16個私有存儲器構(gòu)成的私有存儲層。通過Xilinx公司FPGA板級驗證,實驗結(jié)果表明,該結(jié)構(gòu)在保持簡潔性和可擴展性的同時,最高能夠提供9.73 GB/s的訪存帶寬,滿足視頻編解碼算法數(shù)據(jù)訪存的需求。
多層次分布式存儲結(jié)構(gòu)由私有存儲層和共享存儲層兩層結(jié)構(gòu)組成,如圖1所示。其中私有存儲層由16個獨立的存儲器構(gòu)成,該16個存儲器組成4×4的存儲器陣列,與4×4的處理器簇相對應(yīng),構(gòu)成各處理器單元的的私有存儲器;共享存儲層由16個物理分布、邏輯統(tǒng)一的存儲器塊和16個Cache通過片上路由器互連構(gòu)成。
當(dāng)視頻陣列處理器中的各計算單元處于數(shù)據(jù)準(zhǔn)備階段時,通過共享存儲層,將所需數(shù)據(jù)加載到各私有存儲器中;當(dāng)計算單元處于算法的計算階段時,對各私有存儲器進(jìn)行無沖突的讀寫操作,從而減小數(shù)據(jù)訪問的沖突概率,提高算法的運算速度。
圖1 多層次分布式存儲結(jié)構(gòu)示意圖
傳統(tǒng)的存儲結(jié)構(gòu)一般為片內(nèi)私有的L1級Cache加私有或者共享的L2級Cache和集中式的外部存儲器的分層次結(jié)構(gòu),采用基于總線結(jié)構(gòu)的MSI、MESI、MOESI一致性協(xié)議[11],但隨著處理器核數(shù)的增加,硬件資源的消耗以及設(shè)計的復(fù)雜度成倍提升,總線結(jié)構(gòu)已經(jīng)不能適應(yīng)多核處理器系統(tǒng)的需求?;贜OC(Network on Chip,NOC)結(jié)構(gòu)的分布式存儲結(jié)構(gòu)和基于目錄協(xié)議[12]的Cache一致性策略由于其可擴展性和高效性,已經(jīng)成為現(xiàn)代多核處理器存儲體系的主流。
目錄的組織形式一般分為全位向量映射目錄、有限指針目錄和鏈?zhǔn)侥夸沎13]。在一個基于目錄協(xié)議實現(xiàn)的多核系統(tǒng)中,目錄由多個目錄項組成,每個目錄項對應(yīng)一個Cache行大小的數(shù)據(jù)塊,因此目錄項的數(shù)目與存儲器的總?cè)萘砍烧汝P(guān)系。目錄由兩部分構(gòu)成,一部分是狀態(tài)信息,另一部分是共享信息。目錄的狀態(tài)信息表示當(dāng)前Cache行所處的狀態(tài),如VALID,該狀態(tài)信息位基本是固定的,不會隨著系統(tǒng)規(guī)模的增長而變化,而目錄的共享信息則表示當(dāng)前系統(tǒng)中擁有該共享副本的節(jié)點信息,在全位向量映射目錄中,每一位表示一個處理器核的共享狀態(tài),共享信息位會隨著系統(tǒng)規(guī)模的增長而增長,有限指針目錄和鏈?zhǔn)侥夸浤軌蚪档湍夸浀拇鎯﹂_銷,但也會大幅增加系統(tǒng)設(shè)計的復(fù)雜性,為了降低設(shè)計的復(fù)雜度,考慮到本文的簇內(nèi)處理器核心數(shù)不多,本文采用全位向量映射目錄的組織形式。
如圖2,以3個存儲器塊為例,在系統(tǒng)初始階段,存儲器塊對應(yīng)目錄中有效位為1,共享位為000。當(dāng)PE00對存儲塊01讀取數(shù)據(jù)時,首先訪問目錄存儲器,當(dāng)有效位為1時,將數(shù)據(jù)通過路由器返回PE00,同時更改目錄信息為1001;當(dāng)PE02對存儲塊01讀取數(shù)據(jù)時,目錄信息最高位為1,則直接讀取存儲器中數(shù)據(jù),同時修改目錄信息為1101;當(dāng)PE00對該Cache行的數(shù)據(jù)修改過,且需要替換寫回時,則目錄信息修改為0001;隨后當(dāng)PE02讀取存儲塊01時,目錄信息有效位為0,則根據(jù)共享位向PE00發(fā)送寫回請求,待數(shù)據(jù)寫回后將數(shù)據(jù)返回PE02,同時修改目錄信息為0101。
圖2 共享存儲層數(shù)據(jù)一致性過程
對于PE來說,通過設(shè)置地址信息中的標(biāo)志位,可以對私有存儲器和共享存儲器進(jìn)行訪問。當(dāng)訪問私有存儲器時,則通過私有存儲層直接訪問,當(dāng)訪問共享存儲器時,則需要通過片上網(wǎng)絡(luò)的共享存儲層進(jìn)行通信。
當(dāng)PE發(fā)出讀請求時,本地Cache單元首先判斷本地Cache是否命中,若命中,則直接讀取所需數(shù)據(jù),訪問結(jié)束;若不命中,則向控制器發(fā)送讀查找請求,控制器根據(jù)地址信息,判斷向本地的存儲器塊或遠(yuǎn)程的存儲器塊發(fā)送讀請求,若對應(yīng)存儲器塊目錄的對應(yīng)行狀態(tài)位有高,則讀取對應(yīng)數(shù)據(jù),并修改目錄信息,待數(shù)據(jù)寫入本地Cache后,訪問結(jié)束;若對應(yīng)存儲器塊目錄的行狀態(tài)位為低,則根據(jù)目錄中該數(shù)據(jù)的共享信息向擁有者發(fā)送寫回請求,待數(shù)據(jù)寫回后再讀取數(shù)據(jù)并修改目錄狀態(tài),待數(shù)據(jù)寫入本地Cache后,訪問結(jié)束。寫訪問過程與讀訪問過程類似,訪問流程如圖3所示。
圖3 數(shù)據(jù)訪問過程
多層次分布式存儲結(jié)構(gòu)中,共使用64個Xilinx定制雙端口存儲器IP(Intellectual Property,IP),其中,私有存儲層16個,對應(yīng)16個私有存儲器,共享存儲層48個,對應(yīng)16個共享存儲器、16個目錄存儲器以及16個高速緩存單元,通過互連網(wǎng)絡(luò)構(gòu)成層次化的分布式存儲結(jié)構(gòu),如圖4所示。
圖4 多層次分布式存儲結(jié)構(gòu)框圖
網(wǎng)絡(luò)適配器是本地PE與遠(yuǎn)程PE通信的網(wǎng)絡(luò)接口,按照路由器格式對通信信息進(jìn)行打包與解包操作,包格式如圖5所示。
網(wǎng)絡(luò)適配器由無效查找模塊、無效發(fā)送模塊、寫回請求模塊、替換寫回模塊和讀查找模塊5個模塊構(gòu)成,頂層結(jié)構(gòu)如圖6所示。
目錄存儲器是分布式Cache實現(xiàn)數(shù)據(jù)一致性的關(guān)鍵,主要由請求保持模塊、目錄控制模塊、請求仲裁模塊和目錄存儲IP模塊以及數(shù)據(jù)存儲器IP構(gòu)成,頂層設(shè)計如圖7所示。
請求仲裁模塊對來自本地PE和遠(yuǎn)程PE的兩路讀寫請求做出仲裁,采用本地優(yōu)先的仲裁策略;請求保持模塊對仲裁失敗的請求暫存,等待下次仲裁;目錄控制模塊對仲裁成功的請求做出響應(yīng),分以下幾種情況:
(1)讀查找請求:目錄控制器根據(jù)讀查找地址,讀取目錄中的信息,如果有效位為高,則讀取對應(yīng)數(shù)據(jù)存儲器Bank的數(shù)據(jù),并根據(jù)讀地址的高4位,記錄讀取數(shù)據(jù)的PE號,更新目錄信息;如果有效位為低,則根據(jù)共享位信息,向?qū)?yīng)PE發(fā)出寫回請求,待數(shù)據(jù)返回,發(fā)回讀查找數(shù)據(jù),再對目錄信息進(jìn)行更新。
(2)通知無效請求:目錄控制器根據(jù)無效查找的地址,讀取目錄中的信息,如果有效位高,則將有效位置零,并根據(jù)共享位,向?qū)?yīng)PE發(fā)送無效請求;如果有效位為低,則根據(jù)共享位,向?qū)?yīng)PE發(fā)送無效請求。
(3)替換寫回請求:目錄控制器根據(jù)替換寫回地址,將替換寫回的數(shù)據(jù)寫入對應(yīng)數(shù)據(jù)存儲器Bank中,同時更新目錄信息,將對應(yīng)地址的有效位置1。
高速緩存單元(Cache)采用4路組相聯(lián)的地址映射策略,采用最近最少用[14]的寫替換策略對本地PE的讀寫進(jìn)行緩存。
高速緩存單元主要由狀態(tài)寄存單元(State_reg)、命中判斷單元(Hit_judge)、寫策略選擇單元(Wr_str)、讀仲裁單元(Rd_arb)、讀數(shù)據(jù)單元(Rd_data)和地址轉(zhuǎn)換單元(Addr_trans)6個子模塊構(gòu)成,如圖8所示。
(1)狀態(tài)寄存單元:該模塊用于記錄高速緩存單元數(shù)據(jù)的實時狀態(tài),并采用最近最少用替換策略提供需替換的Cache行號。
(2)命中判斷單元:當(dāng)PE發(fā)出讀寫請求時,命中判斷單元通過狀態(tài)寄存單元的信息,判斷本地Cache中是否命中。
(3)寫策略選擇單元:當(dāng)PE讀寫不命中,需要向本地Cache調(diào)入數(shù)據(jù)時,寫策略選擇單元根據(jù)狀態(tài)寄存單元的對應(yīng)Cache行狀態(tài),做出替換寫入或者直接寫入的策略選擇。
(4)讀仲裁單元:該模塊用于對PE發(fā)出的讀請求、由寫替換引起的讀請求和控制單元發(fā)出的寫回請求按照本地讀有限的優(yōu)先級做出仲裁選擇。
(5)讀數(shù)據(jù)單元:讀仲裁單元送出的讀請求信號進(jìn)入讀數(shù)據(jù)單元,讀數(shù)據(jù)單元根據(jù)命中判斷單元的判斷結(jié)果,選擇來自本地Cache的數(shù)據(jù)和來自控制單元的遠(yuǎn)程數(shù)據(jù)做出選擇,在需要進(jìn)行寫替換時,向控制器發(fā)出寫替換請求。
圖5 路由器適配器包格式
圖6 網(wǎng)絡(luò)適配器結(jié)構(gòu)框圖
圖7 目錄存儲器結(jié)構(gòu)框圖
圖8 高速緩存單元結(jié)構(gòu)框圖
(6)地址轉(zhuǎn)換單元:在PE的讀寫過程中,存在命中與不命中兩種可能,該模塊對本地Cache緩存數(shù)據(jù)讀寫地址進(jìn)行轉(zhuǎn)換,在讀寫命中情況下,讀寫地址不做轉(zhuǎn)換,直接送往本地存儲器Bank;在讀寫不命中情況下,根據(jù)讀寫地址的高12位進(jìn)行自增操作,完成讀寫地址的轉(zhuǎn)換。
在對網(wǎng)絡(luò)適配器、目錄存儲器和高速緩存單元進(jìn)行RTL級設(shè)計,通過編寫幾種典型訪問情況下的測試激勵,使用modelsim進(jìn)行功能仿真后,與視頻陣列處理器虛通道路由器、輕核處理器以及Xilinx定制存儲器IP互連,通過Xilinx的Virtex-6系列xc6vlx550T開發(fā)板對設(shè)計進(jìn)行硬件測試,具體參數(shù)如表1所示。
表1 多層次分布式存儲結(jié)構(gòu)參數(shù)
通過Xilinx ISE對設(shè)計進(jìn)行綜合,綜合結(jié)果如表2所示。
表2 FPGA綜合結(jié)果
由于訪問延遲與片上Cache個數(shù)、地址映射策略、寫替換策略、實時共享狀態(tài)以及路由器的路由算法密切相關(guān),圖9和圖10分別給出了采用最近最少用和寫回的替換策略、4路組相聯(lián)的地址映射策略以及采用XY維序路由算法在4×4的陣列結(jié)構(gòu)中,幾種典型情況下共享存儲層數(shù)據(jù)訪問的最小延遲周期數(shù)。
私有存儲層中,可無沖突讀寫訪問,讀數(shù)據(jù)需要2個時鐘周期,寫數(shù)據(jù)只需1個時鐘周期。共享存儲層中,在讀命中情況下,數(shù)據(jù)訪問只需1個時鐘周期,在寫命中情況下,數(shù)據(jù)訪問需要3個時鐘周期。在讀不命中和寫不命中情況下,由于存在Cache一致性開銷會導(dǎo)致訪問延遲增大,但對本地存儲器Bank的訪問延遲要明顯低于遠(yuǎn)程存儲器Bank的訪問延遲。
圖9 讀數(shù)據(jù)訪問延遲
圖10 寫數(shù)據(jù)訪問延遲
本文采用verilog硬件描述語言進(jìn)行RTL級設(shè)計,設(shè)計并實現(xiàn)了一種多層次分布式存儲結(jié)構(gòu)。在文獻(xiàn)[15]中使用SystemC硬件描述語言,設(shè)計并實現(xiàn)了一種Cache結(jié)構(gòu)的仿真平臺,并對兩種Cache結(jié)構(gòu)進(jìn)行了仿真。本文結(jié)構(gòu)與文獻(xiàn)[15]訪問延遲對比結(jié)果如表3所示。
表3 訪問延遲對比結(jié)果
在讀寫不命中情況下,由于本文所設(shè)計的共享存儲層中,16個L1級Cache與分布式存儲器一一對應(yīng),本地Cache與PE距離較近,故與文獻(xiàn)[15]相比,讀寫延遲較小;在讀命中情況下,本文設(shè)計的結(jié)構(gòu)與文獻(xiàn)[15]的結(jié)構(gòu)相同,故延遲相同;在寫命中情況下,由于需要更新Cache中狀態(tài)信息,延遲有所增加。
文獻(xiàn)[16-17]針對視頻和圖像處理,設(shè)計了不同的存儲結(jié)構(gòu),本文結(jié)構(gòu)與文獻(xiàn)[16-17]陣列處理器存儲結(jié)構(gòu)對比如表4所示。
在文獻(xiàn)[16]的V-RCA結(jié)構(gòu)中,采用寄存器文件對數(shù)據(jù)進(jìn)行暫存,雖然有利于提升數(shù)據(jù)的訪存速度,但面積消耗較大,數(shù)據(jù)交互時每次數(shù)據(jù)訪存位寬為128位,通過集中式的數(shù)據(jù)分發(fā)與接收模塊進(jìn)行存儲管理,無疑增加了數(shù)據(jù)訪存的復(fù)雜度。文獻(xiàn)[17]的PAAG模型中,由于沒有寄存器文件,通過東西南北4個方向的鄰接共享存儲器進(jìn)行數(shù)據(jù)交互和緩存,適用于流水化設(shè)計,但由于鄰接共享存儲器容量有限且沖突概率較大,無法滿足HEVC算法對存儲訪存的要求。本文設(shè)計的多層次分布式存儲結(jié)構(gòu)中,對臨時數(shù)據(jù)通過獨立的私有存儲器緩存,對需交互的數(shù)據(jù)通過多個Cache和分布式存儲器構(gòu)成的共享存儲層進(jìn)行PE間通信,滿足了視頻算法對訪存的需求。
表4 陣列處理器存儲結(jié)構(gòu)對比結(jié)果
針對高清視頻編解碼算法需大量訪存的要求,結(jié)合視頻算法的訪存特點,設(shè)計并實現(xiàn)了一種多層次分布式存儲結(jié)構(gòu)。通過Xilinx公司的FPGA開發(fā)板進(jìn)行驗證,實驗結(jié)果表明,在無沖突情況下,16個PE同時發(fā)送讀寫訪問,此時帶寬達(dá)到峰值9.73 GB/s,在滿足視頻編碼算法訪存要求的同時,保證了結(jié)構(gòu)的可擴展性。
[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]黃安文,高軍,張民選.多核處理器片上存儲系統(tǒng)研究[J].計算機工程,2010,36(4):4-6.
[8]于學(xué)球.可擴展64核處理器關(guān)鍵技術(shù)研究——片上網(wǎng)絡(luò)、存儲體系及LTE實現(xiàn)[D].上海:復(fù)旦大學(xué),2014.
[9]相里博.基于VMM的多核處理器共享緩存的研究與驗證[D].西安:西安電子科技大學(xué),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類大規(guī)模系統(tǒng)中Cache一致性協(xié)議研究與實現(xiàn)[D].長沙:國防科學(xué)技術(shù)大學(xué),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]王浩.基于視頻壓縮算法的硬件模板設(shè)計和可重構(gòu)陣列架構(gòu)研究[D].上海:上海交通大學(xué),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.