劉元旭 張方正 王永昶 王寶生

關鍵詞:DNN處理器;片上網絡;訪存指令;混合訪存數據寬度
1引言
近年來,DNN在計算機視覺、自然語言處理等領域得到了廣泛應用。DNN任務具有計算密集和訪存密集的特點,通用處理器在處理DNN任務時的性能較為不足。為了提升DNN任務的執行效率,涌現了一批DNN專用處理器,它們大多采用片上網絡架構,通過在片上設置大量并行計算單元來加速DNN任務。隨著芯片工藝的發展,DNN處理器的計算性能已得到很大提升,但訪存性能卻一直滯后于計算性能的發展,產生了“內存墻”問題[3]。“內存墻”正成為制約DNN處理器性能提升的一個關鍵問題。
已有的DNN處理器的訪存指令采用的訪存數據寬度的訪存效率較低。訪存數據寬度通常由處理器中的load—store類指令決定。在通用處理器領域特別是RISC架構下,由于其所面臨的任務具有不確定性,其load—store指令中數據寬度往往是固定的。然而,DNN任務的數據類型往往是可以預見的,為了加快訪存,有必要設計專用的load—store指令以及訪存數據寬度。本文提出了一種將定長/變長訪存數據寬度進行混合的策略,該策略保留了可變長訪存指令的靈活性,同時具有定長訪存指令的簡潔。實驗證明,本文提出的混合訪存數據寬度設計策略能夠提升DNN數據的訪存效率。
2相關工作
DNN任務具有訪存密集的特點,在對10種神經網絡進行指令統計中發現,訪存指令占比達38.00-/0。不同的平臺在DNN任務中使用的訪存指令各有不同。
通用CPU上通常使用SIMD方式的load-store指令來實現數據級并行[6]。但SIMD指令在訪存DNN不同規模數據時不具有靈活性:GPU[7]上對不同類型的內存采用不同的LD/ST指令,這是GPU訪存指令的一個特色:一些DNN處理器使用可變長度的向量/矩陣load-store指令來加快訪存,其load-store指令操作數寬度可以取在寄存器容量范圍內的任意值來適應DNN不同類型數據的變化。但其需要更多不同規格的乘加單元以及數據拆分/合并單元,增加了計算單元硬件實現的復雜度,且在訪問不同規模的數據時易造成片上傳輸資源的浪費。
綜合考慮,設計DNN處理器訪存指令既要考慮使用可變長的向量/矩陣訪存指令的靈活,也應該考慮硬件實現的復雜性。
3load-store指令數據寬度混合策略
DNN訓練中的數據按照其在網絡層中的作用分為四種,即輸入神經元數據、權重數據、偏置數據和輸出神經元數據。在數據規模上,權重數據在卷積層表現為規模較小的卷積核,在全連接層則表現為規模較大的全連接權重,后者對訪存性能的需求遠遠大于前者;在連續性上,卷積核具有小尺寸的局部性,可以使用匹配其尺寸的load-store指令將其一次傳輸,而全連接層的權重則具有大尺寸的連續性,使用具有盡可能大的訪存數據寬度來傳輸,可以減少訪存次數。因此,不同數據不宜采用具有同樣指令數據寬度的load-store類指令。本文分別針對DNN不同類型數據采用不同的訪存數據寬度混合策略。
3.1卷積層數據寬度混合策略
輸入數據/輸出數據:卷積層輸入/輸出特征圖的訪存數據寬度主要取決于特征圖的行寬度,若最大數據寬度值不能容納特征圖的一行數據,則采用最大數據寬度值:否則采用的上限值為卷積核的一行數據的最小數據寬度,見式(1)和式(2):
卷積核數據:卷積核數據也可看成是一種特征圖數據,其訪存數據寬度設計方法參照輸入/輸出數據。在常見的神經網絡中卷積核的行值一般為3/5/7/11且為奇數,因此在設定混合數據寬度時其對應的卷積核最大寬度上限值為64/128/256比特。
偏置數據:為了減少偏置數據訪存的訪存次數,計算單元每次訪存要根據計算任務映射讀取盡可能多的偏置數據,因此偏置數據的訪存數據寬度主要取決于片上網絡每個計算單元可映射的輸出特征圖的個數P,該值為該層輸出特征圖個數與片上網絡PE個數的比值并向上取整。偏置數據的混合訪存數據寬度設定見式(3):
3.2池化層數據寬度混合策略
由于池化層處于兩個卷積層之間,因此池化層的輸人數據采用其上一卷積層輸出數據所采用的訪存數據寬度值,輸出數據采用其下一卷積層輸人數據所采用的訪存數據寬度值。池化層無權重數據,因此不做設定。
3.3全連接層數據寬度混合策略
在全連接層應保證單個訪存指令可以訪問更多的數據。因此,本文統一采用混合數據寬度的最大數據寬度值作為全連接層的輸入/權重數據的訪存數據寬度:偏置數據量與輸出神經元數量相等,對其訪存數據寬度的設定采用式(3)。
4實驗
為驗證使用混合訪存數據寬度對訪存延時的降低效果,對LeNet5和AlexNet為實驗對象進行了片上網絡仿真實驗以及分析。實驗采用的DNN處理器片上網絡架構為典型的4x4拓撲結構(圖1),其中R表示路由節點,PE表示計算單元。
圖2和圖3展示了LeNet5和AlexNet采用混合訪存數據寬度比采用傳統定長訪存數據寬度的訪存延時降低率曲線,兩個網絡的訪存延時平均降低15.87%和11.9%,且最大數據寬度越大延時降低率越高。卷積層曲線中,LeNet5以128比特為界,超過128比特后,最大訪存數據寬度越大,采用混合訪存數據寬度的延時降低效果越明顯,這是因為LeNet5中卷積核的尺寸全部為5x5,根據提出的混合策略其訪存數據寬度的上限值為128比特:LeNet5池化層曲線可得與卷積層相似結論:在全連接曲線中,LeNet5在采用混合訪存數據寬度時較好的情況是在128、256、512比特,在32比特時訪存延時略微減少,在64比特時出現反效果。這是因為全連接場景中混合策略主要作用于偏置數據,在32比特和64比特時偏置主要是以16比特混合,兩種情形下16比特數據的占比分別為0. 1%、0.2%,占比較低不能有效減少整體數據訪存造成的延時。進一步可以看到,LeNet5和AlexNet全網絡的曲線與卷積、池化層曲線高度重合,與全連接層曲線差距較大。這說明本文提出的訪存指令數據寬度混合策略更有助于減少卷積場景和池化場景的片上傳輸延時,而對全連接場景的效果不明顯。5結束語
本文提出了一種DNN處理器訪存指令在訪存數據寬度上的混合策略。通過對混合訪存數據寬度設計與傳統的定長訪存數據寬度設計進行片上網絡仿真實驗,證明在LeNet5和AlexNet訓練任務中采用混合訪存數據寬度可以獲得更低的訪存延時,且更適用于對卷積場景進行訓練加速。對于目前的DNN而言,卷積層仍處于主要地位,甚至有些DNN除了最后的輸出層外已經不含全連接層,因此本文提出的混合策略對大多DNN任務都是有效的。