華中科技大學(xué)計算機(jī)學(xué)院院長馮丹報告的主要內(nèi)容分為四個部分,主要分享我們利用新型非易失存儲器件在近似存儲方面做的一點工作,包括STT-MRAM和近似存儲的相關(guān)背景,以及在STT-MRAM近似存儲領(lǐng)域的一些探索工作。

背景介紹

目前,神經(jīng)網(wǎng)絡(luò)、圖像、視頻處理、圖處理等日益增長的應(yīng)用,產(chǎn)生了大量的非結(jié)構(gòu)化數(shù)據(jù)。據(jù)統(tǒng)計,2025年全球的數(shù)據(jù)量將達(dá)到175ZB,屆時將對整個計算存儲系統(tǒng)帶來巨大的壓力。

大規(guī)模的數(shù)據(jù)訪問,會大幅增加系統(tǒng)能耗,并降低性能。例如單次訪問DRAM的延遲能耗為640pJ,是一次32bit加法運(yùn)算開銷的6400倍。因此如何減少片外訪問,對于提高當(dāng)前系統(tǒng)的性能和能效是一個重要的問題。為了解決數(shù)據(jù)量爆增這個問題,我們可以增加硬件資源,如存儲容量等等。在理想情況下,隨著硬件資源的增加,系統(tǒng)的整體性能將會得到大量提升,大致會是一個線性關(guān)系。然而CMOS發(fā)展會受到摩爾定律的限制。

硬件規(guī)模不能無限擴(kuò)大,目前在10納米以下進(jìn)行擴(kuò)展已經(jīng)很難,因此隨著硬件資源的增加,性能的提升將會遇到瓶頸,不會有顯著的提升。另一方面,我們發(fā)現(xiàn)目前很多應(yīng)用,如神經(jīng)網(wǎng)絡(luò)、圖像處理等等,他們是具有較強(qiáng)的錯誤容忍能力。

一是應(yīng)用本身具有較強(qiáng)的魯棒性,少量錯誤不會產(chǎn)生大的輸出損失。二者用戶對輸出質(zhì)量的感知是有限度的。這些性質(zhì)為性能和能效提升提供了新的機(jī)遇。因此可以考慮通過適當(dāng)?shù)亟档蛯敵鼍鹊囊髶Q性能和能效的提升。也就是這個硬件資源和性能的曲線,多了一個維度。通過對精度調(diào)控,可以換來性能和能效的提升。

如圖展示了不同輸出結(jié)果下的能耗,可以看到,前三張圖的輸出質(zhì)量相差不大,人眼很難區(qū)分出差別,但是卻可以大大降低能耗。對于近似技術(shù),我們可以在編程語言、編譯器、操作系統(tǒng)、架構(gòu)和硬件設(shè)備這些不同層級進(jìn)行近似。在軟件層面,可以通過跳過部分迭代計算機(jī)設(shè)計相應(yīng)的近似算法,來減少對結(jié)果影響不大的這種計算。

在架構(gòu)層面,可以將32bit浮點數(shù)的計算轉(zhuǎn)化為10bit的定點計算,減少能耗和計算開銷。在設(shè)備層,可以近似存儲數(shù)據(jù),利用數(shù)據(jù)容錯能力減少不必要數(shù)據(jù)的讀寫,從而提升性能和能效。除了采用近似技術(shù)來提升性能和能效,另一個有效的方式,就是在介質(zhì)層面采用更優(yōu)性能的非易失內(nèi)存介質(zhì)優(yōu)化性能和能效。

傳統(tǒng)的易失性SRAM緩存,由于具有高靜態(tài)功耗,會大大增加系統(tǒng)的片上能耗,同時SRAM的6晶體管結(jié)構(gòu)會大大增加面積開銷,限制了緩存的這種規(guī)模。而新型非易失介質(zhì)如RRAM、PCM、STT-MRAM等具有非易失性,可以大大降低靜態(tài)功耗。此外,這些非易失介質(zhì)都具有更高的密度,其中STT-MRAM具有和SRAM最為接近的性能,最有希望替代傳統(tǒng)的緩存。

相較于SRAM,STT-MRAM這種的1T1M也就是一個晶體管和一個磁隧道結(jié)構(gòu),可以大大減少單元面積,提高4倍密度,同時STT-MRAM具有接近于SRAM的這種讀性能以及低靜態(tài)的功耗,這些特性促使我們發(fā)展STT-MRAM技術(shù)。當(dāng)然了,它也有讀寫不對稱,擦寫次數(shù)有限的問題,需要在應(yīng)用中加以解決。

目前國內(nèi)外已經(jīng)有相應(yīng)的MRAM產(chǎn)品,國外以Everspin為主,已經(jīng)發(fā)布了40納米的256Mb DDR3芯片和28納米的1GB DDR4芯片。另外還有一系列的串口MRAM產(chǎn)品,主要用于傳感器和嵌入式的應(yīng)用。國內(nèi)的??雕Y拓已經(jīng)有了相應(yīng)的串口MRAM產(chǎn)品,1GB的這種STT-MRAM也已經(jīng)推出了樣片。

基于STT-MRAM的GPU近似緩存架構(gòu)

近似計算應(yīng)用,如神經(jīng)網(wǎng)絡(luò)、圖計算等,由于產(chǎn)生了大量的讀寫操作,對于緩存的性能和能耗有較高的需求。但是傳統(tǒng)的SRAM緩存,由于高的靜態(tài)功耗,無法滿足需求。從谷歌數(shù)據(jù)中心的功耗分解可以看出CPU消耗了42%的能耗,因此急需改善片上緩存的這種功耗問題。

目前針對于近似計算或者是近似存儲的研究可以分為三種:第一種是基于介質(zhì)特性,也就是非易失存儲介質(zhì)都存在可靠性的問題,因此需要相應(yīng)的ECC來保證數(shù)據(jù)的正確性。但是近似應(yīng)用可以適當(dāng)?shù)胤潘蓪?shù)據(jù)正確性的要求。因此與之相應(yīng)的近似存儲,可以通過適當(dāng)?shù)姆潘?,對不重要?shù)據(jù)可靠性的保障,從而減少ECC開銷,而且最終無明顯損失。

第二種則是基于數(shù)據(jù)模式進(jìn)行近似。即有些應(yīng)用中的數(shù)據(jù)表現(xiàn)出數(shù)據(jù)相似性或者是冗余性。通過利用數(shù)據(jù)相似特性,當(dāng)數(shù)據(jù)滿足同一個錯誤閾值時,被認(rèn)為是相似的,即通過減少相似數(shù)據(jù)的寫提升能效和性能。第三是在架構(gòu)層面進(jìn)行近似,是在存儲和計算之間添加相應(yīng)的精度轉(zhuǎn)化模塊,使得數(shù)據(jù)在計算的時候,采用全精度,存儲的時候采用低精度,從而降低存儲設(shè)備的能耗。我們的工作正是利用了近似數(shù)據(jù)應(yīng)用的計算模式,通過消除緩存中的冗余數(shù)據(jù)寫,從而減少能耗和提高性能。并保證數(shù)據(jù)質(zhì)量無明顯下降。

我們在全系統(tǒng)模擬器Gem5中,對近似計算應(yīng)用進(jìn)行測試,其中負(fù)載主要來源于近似計算負(fù)載AxBench測試發(fā)現(xiàn)近似計算中60.3%的數(shù)據(jù)bit寫都來源于對可近似數(shù)據(jù)的寫。因此減少這部分?jǐn)?shù)據(jù)的寫,對于提升緩存的能效至關(guān)重要。近似數(shù)據(jù)在緩存行內(nèi)部也存在數(shù)據(jù)冗余。我們發(fā)現(xiàn)最大值和最小值的差值在2倍錯誤閾值范圍內(nèi),因此可以將基準(zhǔn)值用max和min的幾何均值來表示。采用這種方式,所有元素都與第一個基準(zhǔn)值相似,即得到一個base一個run,這里給出了一個簡單的證明,證明采用這種方式,所有判斷為近似的元素的值,都在錯誤范圍之內(nèi),這里最大錯誤值即為最大值或者是最小值與基準(zhǔn)值的差值。通過證明可以發(fā)現(xiàn),最大差值都在錯誤閾值范圍內(nèi),我們測試發(fā)現(xiàn)這種尋找基準(zhǔn)值的方法,相比于現(xiàn)有的方案,能夠更好地消除數(shù)字冗余。并且采用我們的方法后,整行相似地緩存行的比例明顯增高。

也就是可以采用一個基準(zhǔn)值表示所有元素,這將會大大減少寫入的數(shù)據(jù)量,提升能效,有效地節(jié)省緩存的空間。APPcache架構(gòu)我們設(shè)計的基于STT-MRAM的近似緩存的架構(gòu)——APPcache,采用STT-MRAM作為L2的cache,利用大容量的特性提升能耗,并減少靜態(tài)功耗。

其中近似編碼邏輯對可近似寫入的數(shù)據(jù)進(jìn)行近似編碼。當(dāng)讀操作讀到被近似編碼的數(shù)據(jù),相應(yīng)的譯碼邏輯則讀出近似的值。對于近似STT-MRAM緩存的讀寫流程,當(dāng)緩存控制器發(fā)送讀寫請求之后,首先判斷讀寫的緩存塊是否是近似塊,如果不是,則進(jìn)行正常的緩存塊的訪問,如果是則進(jìn)行近似操作。同時在進(jìn)行近似編碼或者譯碼的時候,根據(jù)質(zhì)量映射表中,對應(yīng)的錯誤閾值進(jìn)行編解碼操作。軟件層面,還提供了一個API可以指定近似的范圍,以及允許的質(zhì)量損失。基于前面的分析測試,我們采用幾何均值的方案。當(dāng)最大值與最小值的差值小于等于2倍錯誤閾值的時候,則這段數(shù)據(jù)被認(rèn)為是近似的。

其中對于多通道方案,我們對其進(jìn)行了分組。如圖中的例子,實際上是一個圖像的RGB的數(shù)據(jù),也就是將含有連續(xù)的三個數(shù)據(jù)分為一組元素,當(dāng)一個元素內(nèi)每個通道的數(shù)據(jù)都滿足這個關(guān)系的時候,我們才能認(rèn)為該元素是滿足近似關(guān)系的,否則則認(rèn)為是不相似的,對于某種元素與圖中的元素6在該緩存行上,可能只有一個通道的數(shù)據(jù)。我們只需要該通道滿足近似關(guān)系也就可以了。

此外還定義了run_tag用來標(biāo)記哪些數(shù)據(jù)是近似的,當(dāng)run_tag為1的時候,表示該位置存儲的值為基準(zhǔn)值,為0則表示它是和之前的基準(zhǔn)值相似。當(dāng)一個緩存行中如果后續(xù)數(shù)據(jù)與當(dāng)前基準(zhǔn)值不相似,則開啟一個新的基準(zhǔn)值。那所有的元素均與基準(zhǔn)值相似,則只有一個基準(zhǔn)值。

這個時候,用一個bit表示為全相似的緩存行。從而避免run _tag元數(shù)據(jù)寫開銷。除此之外對于圖像數(shù)據(jù)的這種信息,與通道數(shù)據(jù)類型等也進(jìn)行記錄,以便編譯器譯出數(shù)據(jù)。對于譯碼過程,譯碼器根據(jù)存儲的基準(zhǔn)值和run_tag的原數(shù)據(jù),將相似原數(shù)據(jù)按照對應(yīng)的這種基準(zhǔn)值進(jìn)行譯碼。對于圖中的這個例子,所有原數(shù)據(jù)均與基準(zhǔn)值相似,則譯碼出的這個元素均為該基準(zhǔn)值。在相似形編碼之后,我們發(fā)現(xiàn)部分基準(zhǔn)值沒有相似元素。也就是它在方案1編碼之后,仍然是精確值。因此我們繼續(xù)采用貪心策略,也將其進(jìn)行近似。

由于STT-MRAM采用讀比較寫的策略,也就是比較寫入數(shù)據(jù)與舊數(shù)據(jù)是否相同,如果相同則不寫,來減少這種寫能耗。譯碼過程是將該基準(zhǔn)值直接譯碼出來,不做改動。相似的元素則以基準(zhǔn)值譯碼出來。近似緩存系統(tǒng)提供了相應(yīng)的功能性軟件接口,可以用來控制對哪些數(shù)據(jù)的近似,只需要指明近似范圍就可以了。同時可以指明輸出的質(zhì)量,在硬件層面,根據(jù)設(shè)定的質(zhì)量損失,在硬件中讀取預(yù)設(shè)的錯誤閾值,之后則根據(jù)該錯誤閾值進(jìn)行編碼和譯碼。實驗評估部分,我們采用全系統(tǒng)模擬器Gem5實現(xiàn)我們的方案。方案與對比方案的近似閾值均相同以保證公平性。測試結(jié)果表明,相比于state of the art在1%的錯誤率下,我們的方案可以減少寫能耗23.4%。

基于STT-MRAM緩存的GPU近似存儲架構(gòu)

GPU由于其強(qiáng)大的算力廣泛應(yīng)用于各種復(fù)雜計算應(yīng)用中。但由于GPU片上緩存的容量是有限的,如當(dāng)前的NVIDIA V100的GPU其末期緩存的容量僅為6MB,這和服務(wù)器級別的CPU相比,差距是相當(dāng)大的。目前CPU的末期緩存容量可以達(dá)到256MB,有限的LLC容量將會造成GPU中大量的片外緩存。

然而訪問DRAM開銷巨大,GPU中急需更大的片上緩存,以減少片外開銷。除此之外,許多GPU應(yīng)用程序,還表現(xiàn)出較強(qiáng)的錯誤容忍能力。也有一些研究工作,是通過適當(dāng)放松數(shù)據(jù)的正確性,來達(dá)到減少能耗和提升性能的目的。

第一個工作測試發(fā)現(xiàn),許多應(yīng)用中存在值的相似性,也就是許多值的差別很小。通過測試,發(fā)現(xiàn)46%的數(shù)據(jù)差值小于4。因此在GPU的L2 cache中設(shè)置了基于相似性的這樣一個讀寫邏輯,減少冗余數(shù)據(jù)的寫入。從而減少L2緩存的空間占用和能耗。此外,在ISCA 20中,JPEG-ACT提出在GPU中采用JPEG算法,壓縮在DNN訓(xùn)練過程中的特征圖數(shù)據(jù)。我們知道DNN訓(xùn)練會消耗大量的內(nèi)存資源,并且需要在GPU和CPU之間進(jìn)行數(shù)據(jù)遷移。

而JPEG-ACT利用特征圖頻率上的這種數(shù)據(jù)相似性,采用適當(dāng)?shù)牧炕椒ǎ瑢PEG圖像壓縮算法,運(yùn)用到特征圖的這種壓縮。從而減少特征圖數(shù)據(jù)的傳輸量,來提升整體的性能。它可以提升2.4倍的性能,僅帶來0.2%的準(zhǔn)確率的下降。這些研究激發(fā)了我們將STT-MRAM和近似技術(shù)應(yīng)用到GPU中,并且基于此提出了基于STT-MRAM緩存的GPU近似存儲架構(gòu)。

首先,更大的STT-MRAM L2 cache可以顯著減少片外的緩存。之后在DRAM這一級,當(dāng)數(shù)據(jù)被寫回到DRAM時,采用相應(yīng)的量化方法,對數(shù)據(jù)做近似處理,來減少它的寫入的數(shù)據(jù)量,從而減少數(shù)據(jù)傳輸開銷和能耗。

此外,也給出了一個軟件接口,用來指定近似范圍以及近似程度。接下來,我們來分析一下為什么STT-MRAM適用于做GPU L2 cache,首先是它相較于SRAM來講容量更大,相比于SRAM在相同面積和工藝節(jié)點下,STT-MRAM可以將緩存的容量提升4倍。另外GPU本身是對帶寬敏感的,對延遲不敏感,而且寫操作并不在關(guān)鍵路徑上。

因此STT-MRAM的高寫延遲并不會明顯地影響GPU的整體性能。最后還有一個特點,STT-MRAM的整體能效,優(yōu)于SRAM,主要是它的非易失特性使得它的靜態(tài)功耗很低。實驗評估部分,我們采用GPGPU-sim4.0實現(xiàn),模擬的這個GPU配置是RTX 2060,負(fù)載來源于Darknet神經(jīng)網(wǎng)絡(luò)架構(gòu)和ispass-2009,相比于這個傳統(tǒng)的用SRAM做L2 cache,可以提升性能的14.85%。在兩種神經(jīng)網(wǎng)絡(luò)識別準(zhǔn)確率方面,4bit及以上量化長度,沒有明顯的質(zhì)量損失,并且有部分結(jié)果還會有也許的喪生。這是由于負(fù)載本身具有較強(qiáng)的魯棒性。

總結(jié)

針對當(dāng)前CPU緩存高能耗的問題,采用STT-MRAM作為CPU的L2 cache并提出了相應(yīng)的近似的編解碼算法,來減少近似計算應(yīng)用,在系統(tǒng)中的能耗。針對于GPU片上資源有限,會產(chǎn)生大量片外訪問的問題,使用STT-MRAM進(jìn)行二級緩存的這種擴(kuò)容。在數(shù)據(jù)寫入到DRAM時提出相應(yīng)的量化方案,減少對DRAM讀寫的數(shù)據(jù)量,從而提升性能和能效。? ??

【以上內(nèi)容根據(jù)速記整理而成,未經(jīng)過本人審閱】

分享到

崔歡歡

相關(guān)推薦