任秀江,王 磊,周建毅,謝向輝
(1.江南計算技術(shù)研究所,江蘇 無錫 214083;2.數(shù)學(xué)工程與先進(jìn)計算國家重點實驗室,江蘇 無錫 214125)
現(xiàn)代高性能計算系統(tǒng)由高性能處理器和高性能互連網(wǎng)絡(luò)兩大主要組件構(gòu)成。近些年來,隨著微電子集成電路工藝的迅猛發(fā)展,單硅片上可集成的電路數(shù)量越來越多,極大地促進(jìn)了以GPU(Graphics Processing Unit)、Xeon Phi為代表的新型高性能眾核處理器的發(fā)展,推動著處理器性能持續(xù)按照摩爾定律發(fā)展,將單個計算結(jié)點的計算能力提高到了前所未有的高度。例如,NVIDIA的最新GPU芯片Tesla K80能夠提供2.91 TFLOPS的雙精度浮點計算性能[1],Intel最新款的Xeon Phi 7120X的峰值性能也達(dá)到了1.238 TFLOPS[2],應(yīng)用于“神威太湖之光”的國產(chǎn)申威26010眾核處理器雙精度浮點峰值性能超過3 TFLOPS[3]。而在互連網(wǎng)絡(luò)方面,受限于Serdes工藝的發(fā)展,互連網(wǎng)絡(luò)的帶寬每年以大約26%的速度提高,遠(yuǎn)低于處理器性能59%的提高速度。有研究預(yù)計,到2020年,遠(yuǎn)程結(jié)點的訪存延遲將達(dá)到驚人的670 000個FLOPS的執(zhí)行時間,而帶寬只能達(dá)到0.05 b/FLOPS[4]?;ミB網(wǎng)絡(luò)的延遲和帶寬已成為制約高性能計算機(jī)性能提高的瓶頸之一[5]。
為提高互連網(wǎng)絡(luò)性能,已經(jīng)有很多研究人員從不同角度做了大量工作,比如高效的新型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、均衡的網(wǎng)絡(luò)負(fù)載算法、提高鏈路傳輸工藝等方面。本文從減少網(wǎng)絡(luò)注入數(shù)據(jù)量的角度出發(fā),對高性能互連網(wǎng)絡(luò)通信中的數(shù)據(jù)壓縮技術(shù)進(jìn)行研究,基于數(shù)據(jù)相似性原理,給出了一種高性能的實時壓縮網(wǎng)絡(luò)傳輸引擎設(shè)計,在發(fā)送端進(jìn)行數(shù)據(jù)壓縮、接收端進(jìn)行數(shù)據(jù)解壓縮,實現(xiàn)了對用戶透明的硬件壓縮數(shù)據(jù)通信方式,通過減少網(wǎng)絡(luò)傳輸數(shù)據(jù)量來降低網(wǎng)絡(luò)負(fù)載。
本文剩余部分章節(jié)安排如下:第2節(jié)給出了相關(guān)研究,介紹了無損數(shù)據(jù)壓縮原理和主要算法,總結(jié)了實時壓縮算法的發(fā)展以及實現(xiàn)中存在的問題;第3節(jié)介紹了網(wǎng)絡(luò)通信中的數(shù)據(jù)傳輸引擎結(jié)構(gòu),根據(jù)網(wǎng)絡(luò)包在數(shù)據(jù)傳輸引擎中的處理過程,給出了基于數(shù)據(jù)特征分析的實時數(shù)據(jù)壓縮引擎設(shè)計;第4節(jié)對所實現(xiàn)的數(shù)據(jù)壓縮引擎進(jìn)行了模擬實驗分析;第5節(jié)對全文進(jìn)行了小結(jié)。
在計算機(jī)科學(xué)和信息論中,對數(shù)據(jù)壓縮的定義是:按照某種特定的編碼機(jī)制,用比原始數(shù)據(jù)少的數(shù)據(jù)比特(或其他信息單位)表示信息的過程。數(shù)據(jù)壓縮是利用縮減數(shù)據(jù)量來達(dá)到提高數(shù)據(jù)傳輸、存儲和處理效率的目的。
根據(jù)壓縮數(shù)據(jù)復(fù)原后與原始數(shù)據(jù)是否有差別,數(shù)據(jù)壓縮可以分為有損壓縮和無損壓縮兩大類。有損數(shù)據(jù)壓縮是通過犧牲數(shù)據(jù)中的次要信息來減少數(shù)據(jù)量,提高壓縮比,主要應(yīng)用于多媒體領(lǐng)域。無損數(shù)據(jù)壓縮則是通過減少冗余數(shù)據(jù)的方式來縮減數(shù)據(jù)量,無損壓縮后的數(shù)據(jù)在復(fù)原后與原始數(shù)據(jù)完全一致。在高性能計算領(lǐng)域,不允許數(shù)據(jù)損失,需使用無損壓縮。
按照尋找冗余信息的方式不同,無損壓縮算法可以分為基于統(tǒng)計的方法和基于字典的方法兩大類。Huffman編碼、Arithmetic編碼、Shannon-Fano算法等是基于統(tǒng)計無損壓縮的典型代表[6],它們需要統(tǒng)計原始數(shù)據(jù)中各個字符的頻率,然后依據(jù)統(tǒng)計信息對輸入字符進(jìn)行重新編碼,從而達(dá)到減少數(shù)據(jù)量的目的。Lempel-Ziv類算法[7,8]屬于基于字典的算法,基本思想是選擇輸入數(shù)據(jù)流中已經(jīng)出現(xiàn)過的字符串作為字典,后續(xù)數(shù)據(jù)流中再有相同的字符串出現(xiàn),則使用該字典中指向該字符串的指針來代替?;谧值涞膲嚎s算法中,字典的選擇對壓縮效果影響特別大。
在無損數(shù)據(jù)壓縮算法中,無論是基于統(tǒng)計還是基于字典的方法都需要對壓縮數(shù)據(jù)進(jìn)行字符串分析匹配等預(yù)處理操作,這需要大量的邏輯運(yùn)算操作,對計算能力要求高,一般都采用CPU處理器專門處理,有的甚至采用專門的ASIC芯片或GPU加速器來加速處理[9 - 11]。通常情況下,壓縮比越高,壓縮算法的處理時間越長。
近些年來,一些新型高實時性的壓縮算法被提出并應(yīng)用于片上Cache和訪問主存的數(shù)據(jù)中,用于節(jié)省訪存帶寬和提高訪存效率。文獻(xiàn)[12]給出了一種基于差值的實時壓縮算法BDI(Base-Delta-Immediate),BDI算法的原理是利用數(shù)據(jù)相似性[13 - 15],計算輸入數(shù)據(jù)相對于基值計算偏移值Delta,只要Delta值的位表示小于原始值位寬,就能達(dá)到減少數(shù)據(jù)量的目的。BDI壓縮算法最大的好處是實時性,易于硬件快速實現(xiàn),具有較小的壓縮/解壓縮延遲性。文獻(xiàn)[16,17]發(fā)現(xiàn)頻繁從主存中讀出或?qū)懭氲臄?shù)據(jù)值大多數(shù)集中在一個范圍內(nèi);文獻(xiàn)[18]利用這個特性給出了FVC(Frequent Value Compression)算法,可以用較少的bit位標(biāo)識重復(fù)的數(shù)值。FVC的基本原理與前面所述基于字典的壓縮算法類似,只是所用字典容量較小,簡化了數(shù)據(jù)統(tǒng)計的過程,能夠達(dá)到高實時性、低硬件開銷的目標(biāo)。
文獻(xiàn)[19]則發(fā)現(xiàn)大多數(shù)數(shù)據(jù)都具有一定的模式規(guī)律。例如,32 bit數(shù)據(jù)中的高16 bit都是0或者都是1,或者4 B中的每個字節(jié)都相同。FPC(Frequent Pattern Compression)就是利用這種規(guī)律來壓縮數(shù)據(jù)。文獻(xiàn)[20]給出了一種叫做C-Pack的FPC壓縮算法,能夠?qū)⒍鄠€等長度的數(shù)據(jù)段壓縮為1個數(shù)據(jù)段,實現(xiàn)多個word字并行壓縮。與FVC類似,當(dāng)出現(xiàn)同一個數(shù)據(jù)段內(nèi)的字有的能壓縮,有的不能壓縮時,解壓縮過程串行化。為了優(yōu)化解壓縮延遲,文獻(xiàn)[21]中實現(xiàn)了5級流水的解壓縮設(shè)計,來緩解解壓縮的延遲壓力;文獻(xiàn)[22]則針對數(shù)據(jù)段中混合的壓縮數(shù)據(jù)和非壓縮數(shù)據(jù)的片上管理給出了一種新型管理架構(gòu)。
通過前面的研究可以知道,高效的數(shù)據(jù)壓縮算法是建立在對數(shù)據(jù)規(guī)律的分析基礎(chǔ)上的。高實時性環(huán)境中,對數(shù)據(jù)處理的低延遲需求決定了對數(shù)據(jù)不能過多迭代分析,在高實時性環(huán)境中實現(xiàn)數(shù)據(jù)壓縮要解決好壓縮效率和壓縮延遲的矛盾關(guān)系。
在高性能計算系統(tǒng)中,對高速互連網(wǎng)絡(luò)的延遲、帶寬都有嚴(yán)格的要求,對通信數(shù)據(jù)進(jìn)行壓縮能夠帶來減少通信數(shù)據(jù)量的好處,但是不能以犧牲通信延遲或降低通信帶寬為代價。因此,對高速互連網(wǎng)絡(luò)中的通信數(shù)據(jù)進(jìn)行壓縮時,所面臨的挑戰(zhàn)不僅僅是算法的壓縮收益,還要解決算法的實時性、硬件可實現(xiàn)性等問題。
Figure 1 Structure of data transmission engine and processing flow of a packet圖1 數(shù)據(jù)傳輸引擎結(jié)構(gòu)和網(wǎng)絡(luò)包處理過程
本節(jié)根據(jù)網(wǎng)絡(luò)接口中數(shù)據(jù)傳輸引擎的結(jié)構(gòu)特征,實現(xiàn)了一種高效流水的硬件數(shù)據(jù)壓縮、解壓縮機(jī)制,在不需要用戶干預(yù)、不影響原有通信性能的前提下,實現(xiàn)對通信數(shù)據(jù)自動壓縮/解壓縮處理,能夠降低網(wǎng)絡(luò)上數(shù)據(jù)傳輸量,相當(dāng)于提高了網(wǎng)絡(luò)傳輸效率。減少網(wǎng)絡(luò)上的數(shù)據(jù)傳輸量,對降低實際應(yīng)用過程中的網(wǎng)絡(luò)系統(tǒng)負(fù)載也有積極意義。
高速互連網(wǎng)絡(luò)由路由器、網(wǎng)絡(luò)接口組成。其中,路由器的互連構(gòu)成網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);網(wǎng)絡(luò)接口則是計算結(jié)點與網(wǎng)絡(luò)的中間橋梁,通過配置不同的網(wǎng)絡(luò)接口,計算結(jié)點可以接入不同的互連網(wǎng)絡(luò)中。
如圖1所示,數(shù)據(jù)傳輸引擎是網(wǎng)絡(luò)接口中的主要組成部件,按照數(shù)據(jù)傳輸?shù)姆较颍瑪?shù)據(jù)傳輸引擎分為數(shù)據(jù)發(fā)送和數(shù)據(jù)接收兩個模塊。數(shù)據(jù)發(fā)送部件DSU(Data Send Unit)負(fù)責(zé)從計算結(jié)點主存中讀取數(shù)據(jù),按照傳輸協(xié)議組織成網(wǎng)絡(luò)包后注入網(wǎng)絡(luò)。數(shù)據(jù)接收部件DRU(Data Receive Unit)則是從網(wǎng)絡(luò)中接收網(wǎng)絡(luò)包,解析網(wǎng)絡(luò)包中控制信息,將數(shù)據(jù)寫入結(jié)點主存。
眾所周知,處理器為了優(yōu)化訪存性能通常會設(shè)置片上緩存Cache,為了提高主存訪問效率內(nèi)存控制器中也會設(shè)置各種緩沖,為了保持?jǐn)?shù)據(jù)在主存和片上緩存、以及片上緩存間的一致性,對主存的訪問粒度通常設(shè)置為Cache行大小,Cache行的大小一般為32字節(jié)或64字節(jié)。
處理器之間的通信則需要通過互連網(wǎng)絡(luò)以消息傳輸?shù)姆绞竭M(jìn)行。消息通信與處理器核心訪存相比,通信距離遠(yuǎn)延遲大,網(wǎng)絡(luò)包中不僅包含有效數(shù)據(jù),還包含一些必要的通信控制信息(如路由信息等),這些有效負(fù)荷之外的內(nèi)容也會占用網(wǎng)絡(luò)傳輸帶寬。為提高一次網(wǎng)絡(luò)通信的有效帶寬,增加網(wǎng)絡(luò)包中有效負(fù)荷是常用的辦法,一個網(wǎng)絡(luò)包中的最大數(shù)據(jù)量通常為幾百字節(jié)到幾千字節(jié)[23],一般都比處理器中Cache行的容量大。
如圖2所示,網(wǎng)絡(luò)包與主存訪問粒度之間的差異,通常由網(wǎng)絡(luò)接口中的數(shù)據(jù)傳輸引擎來處理。一個網(wǎng)絡(luò)包的產(chǎn)生、傳輸和接收過程中,需要在數(shù)據(jù)傳輸引擎中進(jìn)行兩次存儲轉(zhuǎn)發(fā)。我們在網(wǎng)絡(luò)傳輸引擎中加入壓縮、解壓縮部件,利用存儲轉(zhuǎn)發(fā)的過程優(yōu)化壓縮算法實現(xiàn),完成網(wǎng)絡(luò)包的壓縮和解壓縮過程,減少網(wǎng)絡(luò)包的實際傳輸長度。
(1)網(wǎng)絡(luò)包生成階段:在數(shù)據(jù)發(fā)送模塊中,緩存主存數(shù)據(jù),完成壓縮后轉(zhuǎn)發(fā)到高速互連網(wǎng)上;
(2)網(wǎng)絡(luò)包接收階段:在數(shù)據(jù)接收模塊中,緩存網(wǎng)絡(luò)包,完成解壓縮后轉(zhuǎn)發(fā)寫入主存。
Figure 2 Processes of sending and receiving a packet圖2 網(wǎng)絡(luò)包發(fā)送和接收過程
在DSU中實現(xiàn)了實時數(shù)據(jù)壓縮引擎RTCE(Real-Time Compress Engine),RTCE由數(shù)據(jù)特征分析模塊DFU(Data Feature-analysis Unit)和壓縮網(wǎng)絡(luò)包生成模塊PCU(Packet Compression Uint)兩部分組成。數(shù)據(jù)特征分析模塊對離散返回的訪存數(shù)據(jù)進(jìn)行特征過濾,并保存分析結(jié)果;網(wǎng)絡(luò)包的所有數(shù)據(jù)都返回后,PCU模塊根據(jù)數(shù)據(jù)特征分析結(jié)果,對數(shù)據(jù)進(jìn)行壓縮,然后將壓縮數(shù)據(jù)和壓縮說明信息(Compress Direction)一并生成網(wǎng)絡(luò)包,發(fā)送到互連網(wǎng)絡(luò)中。
3.2.1 壓縮網(wǎng)絡(luò)包格式
實時壓縮算法的主要原理是利用數(shù)據(jù)的空間局部相似性特征。網(wǎng)絡(luò)通信中,網(wǎng)絡(luò)包數(shù)據(jù)量較大,若以網(wǎng)絡(luò)包為單位進(jìn)行壓縮,不僅并行壓縮器的開銷大,還可能存在數(shù)據(jù)相似性較差導(dǎo)致壓縮收益低的問題;若以訪存粒度為單位進(jìn)行壓縮,壓縮單位數(shù)量增加,附加的壓縮說明信息比例增大,也會影響壓縮效果。
為解決這個問題,在網(wǎng)絡(luò)包粒度和訪存粒度之間尋找一個折衷的數(shù)據(jù)量單位實現(xiàn)數(shù)據(jù)壓縮,稱為壓縮數(shù)據(jù)塊CDB(Compress Data Block)。如圖2a所示為網(wǎng)絡(luò)包懸掛緩沖條目、壓縮數(shù)據(jù)塊CDB、訪存響應(yīng)之間的粒度大小關(guān)系。數(shù)據(jù)壓縮后的數(shù)據(jù)塊需要攜帶數(shù)據(jù)塊壓縮說明DCI(Data Compress Information),到達(dá)目標(biāo)結(jié)點后,數(shù)據(jù)傳輸引擎可以根據(jù)DCI對CDB進(jìn)行解壓縮。如圖3a和圖3b所示,分別為不帶壓縮數(shù)據(jù)網(wǎng)絡(luò)包和帶壓縮數(shù)據(jù)網(wǎng)絡(luò)包PCD(Packet with Compress Data-block)的格式。PCD的有效負(fù)荷中攜帶了DCI,DCI信息在網(wǎng)絡(luò)傳輸中屬于數(shù)據(jù)壓縮的開銷。如果數(shù)據(jù)塊不能壓縮或者壓縮后網(wǎng)絡(luò)包負(fù)荷大于壓縮前,DCI的存在會增加網(wǎng)絡(luò)傳輸量,可以在網(wǎng)絡(luò)包傳輸信息中采用標(biāo)記位來區(qū)分壓縮網(wǎng)絡(luò)包和非壓縮網(wǎng)絡(luò)包。
Figure 3 Structure of a network packet圖3 網(wǎng)絡(luò)包結(jié)構(gòu)
3.2.2 數(shù)據(jù)特征分析
從前面第2節(jié)的介紹中可以知道,BDI算法和FVC算法易于硬件實現(xiàn),是常用的實時壓縮算法。圖4為兩種算法的壓縮原理示意圖,可以看到兩種壓縮算法的壓縮效率與Base基值粒度和數(shù)值選擇都有很大關(guān)系。
Figure 4 Principle of real time compression algorithm圖4 實時壓縮算法原理示意
RTCE中同時選擇BDI算法和FVC算法作為壓縮算法。使用DFU模塊在訪存響應(yīng)數(shù)據(jù)返回階段,對數(shù)據(jù)特征進(jìn)行分析。DFU模塊中選擇了7種壓縮算法對數(shù)據(jù)進(jìn)行過濾,7種算法如表1所示。訪存響應(yīng)數(shù)據(jù)返回時,DFU累計每種壓縮算法的壓縮收益。數(shù)據(jù)塊的訪存數(shù)據(jù)全部返回后,DFU形成對CBD內(nèi)數(shù)據(jù)壓縮收益評估。在PCU進(jìn)行數(shù)據(jù)壓縮時,根據(jù)DFU模塊的評估結(jié)果,選擇收益最高的壓縮算法對數(shù)據(jù)進(jìn)行壓縮傳輸。
Table 1 Description of the hybrid compression algorithm表1 混合壓縮算法組成說明
3.2.3 壓縮網(wǎng)絡(luò)包生成和解壓縮
網(wǎng)絡(luò)包的所有訪存數(shù)據(jù)返回后,PCU部件開始壓縮網(wǎng)絡(luò)包。按照數(shù)據(jù)塊順序,從DFU中讀取數(shù)據(jù)塊的壓縮說明DCI,根據(jù)壓縮說明中提示的壓縮算法,對數(shù)據(jù)塊中的數(shù)據(jù)進(jìn)行壓縮移位,然后將壓縮后的數(shù)據(jù)塊保存到網(wǎng)絡(luò)包發(fā)送緩沖中;等到網(wǎng)絡(luò)包中所有數(shù)據(jù)塊都完成壓縮處理后,再將網(wǎng)絡(luò)包發(fā)送到互連網(wǎng)絡(luò)中,網(wǎng)絡(luò)包發(fā)送過程中將壓縮數(shù)據(jù)移位拼接成連續(xù)數(shù)據(jù)。
由于壓縮后的數(shù)據(jù)移位邏輯較長,為優(yōu)化時序?qū)⒕W(wǎng)絡(luò)包的生成和發(fā)送分為上述兩階段進(jìn)行。如圖1中所示,為保證網(wǎng)絡(luò)包流水傳輸,PCU中設(shè)置多份數(shù)據(jù)壓縮邏輯。接收部件處理壓縮網(wǎng)絡(luò)包的過程正好相反,先將網(wǎng)絡(luò)包解析為壓縮數(shù)據(jù)塊,再由數(shù)據(jù)塊還原為原始數(shù)據(jù),最后寫入主存中。
對實時壓縮引擎RTCE進(jìn)行了RTL編碼實現(xiàn),建立了模擬仿真環(huán)境,從數(shù)據(jù)壓縮收益和數(shù)據(jù)處理效率兩個方面對RTCE進(jìn)行了測試。第3節(jié)中分析的不同壓縮數(shù)據(jù)塊大小劃分,對壓縮收益可能會有影響。模擬實驗中,配置了64 B、128 B、256 B、512 B四種不同數(shù)據(jù)塊大小的情況,比較不同數(shù)據(jù)分塊大小對數(shù)據(jù)壓縮效率的影響。
為了保證測試數(shù)據(jù)的真實性,選擇從通用測試題和實際應(yīng)用課題兩個方面,抽取數(shù)據(jù)流軌跡作為RTCE的測試源數(shù)據(jù)。SPEC2006是業(yè)界通用測試集,包含了各個領(lǐng)域的應(yīng)用測試題,從SPEC2006[24]測試集選擇了20道數(shù)據(jù)密集型測試題,抓取測試題運(yùn)行過程中的數(shù)據(jù)流軌跡用作測試數(shù)據(jù);Graph500是衡量計算機(jī)處理數(shù)據(jù)密集型應(yīng)用能力的測試基準(zhǔn),從Graph500中抓取不同運(yùn)行階段的通信數(shù)據(jù)流軌跡用作測試數(shù)據(jù);此外,還對并行應(yīng)用課題化學(xué)非平衡流CFD(Computational Fluid Dynamics)算法[25]中的通信數(shù)據(jù)進(jìn)行了壓縮測試。
實驗中使用壓縮收益來表述壓縮結(jié)果,即壓縮后數(shù)據(jù)減少量占原數(shù)據(jù)量的比例進(jìn)行表述,比例越大表示數(shù)據(jù)被壓縮的幅度越大,壓縮效果越好。
壓縮收益 = (原始數(shù)據(jù)量-壓縮后數(shù)據(jù)量)/ 原始數(shù)據(jù)量
Figure 5 Data compression results of tests圖5 測試課題數(shù)據(jù)壓縮結(jié)果
圖5a所示為SPEC2006測試題中抽取數(shù)據(jù)的壓縮結(jié)果,每個測試題按數(shù)據(jù)塊大小分別測試了四組壓縮實驗。從圖5結(jié)果可以看到,20道測試題的數(shù)據(jù)壓縮收益均在20%以上,有12道測試題的數(shù)據(jù)壓縮收益達(dá)到30%,測試題libquantum的數(shù)據(jù)壓縮收益最高達(dá)到47%,平均數(shù)據(jù)壓縮收益為32.8%。
圖5b所示為Graph500測試題中抽取數(shù)據(jù)的壓縮結(jié)果,橫坐標(biāo)上s16、s18、s20、s22表示測試題的不同運(yùn)行階段的通信數(shù)據(jù)。從圖5b中可以看到,Graph500測試題中各階段數(shù)據(jù)的壓縮收益達(dá)到47%以上。在課題運(yùn)行初期的s16階段,采用512 B數(shù)據(jù)塊時壓縮收益最高達(dá)到52.9%,平均數(shù)據(jù)壓縮收益為48.7%。
圖5c所示為CFD算法中通信數(shù)據(jù)的壓縮結(jié)果,橫坐標(biāo)為不同計算結(jié)點發(fā)出的通信數(shù)據(jù)。從圖5c中可以看到,數(shù)據(jù)壓縮收益在38%~51%,平均數(shù)據(jù)壓縮收益為46.2%。
Figure 6 Comparison of compression gains for different data block sizes圖6 不同數(shù)據(jù)塊大小的壓縮收益比較
圖6中對不同數(shù)據(jù)塊大小下的壓縮收益進(jìn)行了比較。SPEC2006中的測試題結(jié)果顯示,不同數(shù)據(jù)塊大小對大多數(shù)課題的壓縮收益沒有太大影響,差異最大的是omnetpp測試題,壓縮收益差異范圍小于5%;從Graph500中數(shù)據(jù)測試結(jié)果來看,數(shù)據(jù)塊越大壓縮效果越好,但差異范圍也在5%以內(nèi);CFD算法的數(shù)據(jù)結(jié)果中,數(shù)據(jù)塊越大數(shù)據(jù)壓縮收益越大,但差異程度較小,在6%以內(nèi)。綜上可以知道,RTCE采用不同數(shù)據(jù)塊劃分下的數(shù)據(jù)壓縮收益變化不大,差異小于6%。
最后,在CDB數(shù)據(jù)塊為64 B的情況下,對RTCE中采用的混合壓縮算法與各個單一壓縮算法進(jìn)行測試比較。從圖7的對比結(jié)果可以看到,與單一壓縮算法相比,采用混合算法的壓縮收益提高明顯。有些測試數(shù)據(jù)采用單一壓縮算法甚至出現(xiàn)了數(shù)據(jù)量增加的情況,這是因為不同的測試課題數(shù)據(jù)具有不同的特征,采用單一算法雖然能夠簡化硬件設(shè)計復(fù)雜度,但也同時降低了壓縮結(jié)構(gòu)的適用范圍。
RTCE引擎增加的數(shù)據(jù)壓縮邏輯和解壓縮邏輯,通過增加數(shù)據(jù)緩沖將數(shù)據(jù)的移位拼接分為數(shù)據(jù)塊間和數(shù)據(jù)塊內(nèi)兩步進(jìn)行,通過增加有限的啟動延遲,保證了壓縮/解壓縮過程的處理流水。在NC-Verilog模擬環(huán)境觀測增加的啟動延遲小于20個時鐘節(jié)拍。在28 nm工藝下,采用標(biāo)準(zhǔn)單元庫對RTCE的RTL代碼進(jìn)行了邏輯綜合和后端物理設(shè)計,時序分析結(jié)果顯示RTCE能夠運(yùn)行在1 GHz以上;布局布線后,RTCE的面積開銷為2 744 132.493 1 μm2,其中壓縮/解壓縮組合邏輯開銷占比7.8%,面積開銷占比16.4%,面積開銷增加主要是由于壓縮/解壓縮邏輯中增加了大量SRAM構(gòu)成的存儲器所致。
Figure 7 Comparison of compression gains for different compression algorithms圖7 不同算法壓縮收益比較
本文對實時數(shù)據(jù)壓縮進(jìn)行了研究,面向網(wǎng)絡(luò)通信給出了一種實時壓縮網(wǎng)絡(luò)傳輸引擎RTCE設(shè)計,實現(xiàn)了對用戶透明的硬件壓縮數(shù)據(jù)通信方式;使用SPEC2006、Graph500等測試題中數(shù)據(jù)流軌跡對RTCE進(jìn)行了壓縮測試實驗,實驗結(jié)果表明經(jīng)過RTCE后數(shù)據(jù)量平均減少35.4%;在應(yīng)用課題CFD算法的數(shù)據(jù)測試中,壓縮后數(shù)據(jù)量平均減少46.2%。NC-Verilog模擬結(jié)果顯示,RTCE的數(shù)據(jù)處理過程流水,傳輸帶寬不變,啟動延遲增加20個時鐘節(jié)拍,壓縮/解壓縮邏輯面積開銷僅增加16.4%。綜上所述,RTCE實現(xiàn)了通信數(shù)據(jù)的硬件壓縮,能夠在不降低數(shù)據(jù)傳輸引擎性能的前提下,減少網(wǎng)絡(luò)注入數(shù)據(jù)量,對通信帶寬日益寶貴的高性能互連網(wǎng)絡(luò)有一定的現(xiàn)實意義。
最后,感謝為本文工作提供測試數(shù)據(jù)幫助的張昆博士、林恒博士、劉鑫博士。
參考文獻(xiàn):
[1] http://images.nvidia.com/content/tesla/pdf/nvidia-tesla-k80-overview.
[2] https://www.intel.com/content/www/us/en/high-performance-computing/high-performance-xeon-phi-coprocessor-brief.html.
[3] https://www.top500.org/system/178764.
[4] Graham S,Snir M,Patterson C.Getting up to speed:The future of supercomputing [J].National Academies Press Washington Dc,2004,149(1):147-153.
[5] Ang J, Brightwell R, Donofrio D, et al. Exascale computing and the roll of co-design[J].Advance in Parallel Computing,2012,20:43-64.
[6] Hu Yu-chen,Chang Chin-chen.A new lossless compression scheme based on Huffman coding scheme for image compression [J].Signal Processing:Image Communication,2000,16(4):367-372.
[7] Ziv J,Lempel A.A universal algorithm for sequential data compression[J].IEEE Transactions on Information Theory,1977,23(3):337-343.
[8] Shun J,Zhao F.Practical parallel lempel-Ziv factorization[C]∥Proc of Data Compression Conference,2013:123-132.
[9] Ozsoy A,Swany M.CULZSS:LZSS lossless data compression on CUDA[C]∥Proc of IEEE International Conference on CLUSTER Computing,2011:403-411.
[10] Ozsoy A, Swany M,Chauhan A.Pipelined parallel LZSS for streaming data compression on GPGPUs[C]∥IEEE,International Conference on Parallel and Distributed Systems.IEEE Computer Society,2012:37-44.
[11] Erdodi L. File compression with LZO algorithm using NVIDIA CUDA architecture[C]∥Proc of 2012 4th IEEE International Symposium on Logistics and Industrial Informatics(LINDI),2012:251-254.
[12] Pekhimenko G,Seshadri V,Mutlu O,et al.Base-delta-immediate compression:Practical data compression for on-chip caches[C]∥Proc of International Conference on Parallel Architectures and Compilation Techniques,2012:377-388.
[13] Collange S,Defour D,Zhang Y.Dynamic detection of uniform and affine vectors in GPGPU computations[C]∥Proc of International Conference on Parallel Processing,2009:46-55.
[14] Collange S,Kouyoumdjian A.Affine vector cache for memory bandwidth savings:Technical Report ensl-00649200[R].ENS de lyon,University de lyon,2011.
[15] Kim J,Torng C,Srinath S,et al.Microarchitectural mechanisms to exploit value structure in SIMT architectures[C]∥Proc of International Symposium on Computer Architecture,2013:130-141.
[16] Lefurgy C,Bird P,Chen I,et al.Improving code density using compression techniques[C]∥Proc of the 13th IEEE/ACMInternational Symposium on Microarchitecture,1997:194-203.
[17] Orosa L, Azevedo R. Temporal frequent value locality[C]∥Proc of the 27th International Conference on Application-specific Systems,Architectures and Processors(ASAP),2016:147-152.
[18] Lee Y, Krashinsky R, Grover V,et al.Convergence and scalarization for data-parallel architectures[C]∥Proc of IEEE/ACM International Symposium on Code Generation and Optimization,2013:1-11.
[19] Alameldeen A R,Wood D A.Adaptive cache compression for high-performance processors[C]∥Proc of International Symposium on Computer Architecture,2004:212-223.
[20] Chen X,Yang L,Dick R P,et al.C-pack:A high-performance microprocessor cache compression algorithm [J].IEEE Transactions on Very Large Scale Integration Systems,2010,18(8):1196-1208.
[21] Alameldeen A R,Wood D A.Frequent pattern compression:A significance-based compression scheme for L2 caches:Technical Report 1500[R].Madison:University of Wisconsin-Madison Department of Computer Sciences,2004.
[22] Pekhimenko G,Seshadri V,Kim Y,et al.Linearly compressed pages:A low-complexity,low-latency main memory compression framework[C]∥Proc of IEEE/ACM International Symposium on Microarchitecture,2013:172-184.
[24] Standard Performance Evaluation Corporation.SPEC CPU2006 benchmark [EB/OL].[2016-04-21].http://www.spec.org/cpu2006.
[23] InfiniBand Architecture specification[EB/OL].[2000-10-24]. http://www.infinibandta.org.
[25] Wang Z J, Fidkowski K,Abgrall R,et al.High-order CFD methods:Current status and perspective [J].International Journal for Numerical Methods in Fluids,2013,72(8):811-845.