• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向稀疏卷積神經(jīng)網(wǎng)絡(luò)的CGRA 加速器研究①

    2024-03-20 08:21:58嚴(yán)明玉吳欣欣李文明吳海彬范東睿
    高技術(shù)通訊 2024年2期
    關(guān)鍵詞:加速器能效權(quán)值

    譚 龍 嚴(yán)明玉 吳欣欣 李文明 吳海彬 范東睿

    (*中國(guó)科學(xué)院計(jì)算技術(shù)研究所處理器國(guó)家重點(diǎn)實(shí)驗(yàn)室 北京 100190)

    (**中國(guó)科學(xué)院大學(xué) 北京 100049)

    稀疏卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在可接受的精度損失范圍內(nèi)可以減少稠密卷積神經(jīng)網(wǎng)絡(luò)對(duì)硬件計(jì)算和存儲(chǔ)資源的需求,因此被應(yīng)用在各種應(yīng)用場(chǎng)景中,如自然語(yǔ)言處理領(lǐng)域[1]、圖像識(shí)別[2]和無(wú)人駕駛領(lǐng)域[3]。不幸的是,由于稀疏卷積神經(jīng)網(wǎng)絡(luò)本身的稀疏性和不規(guī)則性,導(dǎo)致稀疏卷積神經(jīng)網(wǎng)絡(luò)在通用處理器上執(zhí)行時(shí)面臨訪存效率低、硬件利用率低等問(wèn)題,這些問(wèn)題嚴(yán)重阻礙了其性能和能效提升。

    目前大量工作針對(duì)CNN 提出了基于應(yīng)用特定集成電路(application specific integrated circuits,ASICs)設(shè)計(jì)的定制化加速器[4-9],這些加速器根據(jù)CNN 特性定制化數(shù)據(jù)通路和計(jì)算單元來(lái)高效支持稀疏CNN 運(yùn)行。然而由于這些加速器是高度定制化的,一旦電路制造完成就無(wú)法改變,缺乏可重配置性和可編程性,無(wú)法適用于演進(jìn)的神經(jīng)網(wǎng)絡(luò)模型。例如DianNao[4]、NeuroMAX[5]等加速器是針對(duì)稠密神經(jīng)網(wǎng)絡(luò)設(shè)計(jì),無(wú)法有效地加速稀疏神經(jīng)網(wǎng)絡(luò)。Cambricon-X[6]和SparseTen[7]等加速器針對(duì)稀疏神經(jīng)網(wǎng)絡(luò)定制化計(jì)算單元和數(shù)據(jù)通路,但是對(duì)稀疏處理局限于某一種稀疏性上,同時(shí)由于缺乏靈活性,僅對(duì)特定模型有效,無(wú)法讓更多網(wǎng)絡(luò)模型均取得性能和能效提升。

    本文提出了一種針對(duì)稀疏CNN 設(shè)計(jì)的高能效且靈活的架構(gòu)DyCNN。為了靈活地支持不同稀疏卷積神經(jīng)網(wǎng)絡(luò)的執(zhí)行,DyCNN 從不同的稀疏CNN的運(yùn)算中抽象算子并定義精簡(jiǎn)指令,同時(shí)設(shè)計(jì)輕量級(jí)的計(jì)算單元來(lái)支持稀疏CNN 的操作。此外,DyCNN 利用粗粒度可重構(gòu)架構(gòu)(coarse-grained reconfigurable architecture,CGRA)[10]中的粗粒度數(shù)據(jù)流并行性可實(shí)現(xiàn)指令的高并行性,進(jìn)一步提升稀疏CNN的執(zhí)行效率。

    然而稀疏卷積神經(jīng)網(wǎng)絡(luò)中不僅存在權(quán)值的稀疏性,同時(shí)存在激活函數(shù)產(chǎn)生的激活值稀疏性。權(quán)值稀疏性在訓(xùn)練結(jié)束后確定下來(lái),在前向推理過(guò)程中保持不變。但由于激活值是前向推理中動(dòng)態(tài)產(chǎn)生的,其稀疏性具有動(dòng)態(tài)性。因?yàn)橥瑫r(shí)存在以上2 種稀疏性,基于CGRA 為稀疏CNN 設(shè)計(jì)高效加速器主要面臨著以下2 個(gè)挑戰(zhàn):(1)2 種不同稀疏性帶來(lái)大量不同的冗余計(jì)算和訪存指令,導(dǎo)致處理單元之間不能高效共享一組片上指令,使得整體的性能和能效較低;(2)當(dāng)稀疏CNN 被映射在處理單元上執(zhí)行時(shí),稀疏性不規(guī)則分布導(dǎo)致處理單元之間負(fù)載分布不均衡,整體硬件利用率較低從而阻礙了整體性能的提升。

    為解決上述2 個(gè)挑戰(zhàn),本文在DyCNN 設(shè)計(jì)中分別提出了以下2 個(gè)解決方法:(1)設(shè)計(jì)了基于數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾機(jī)制來(lái)消除稀疏性帶來(lái)的影響;(2)提出了基于負(fù)載感知的動(dòng)靜結(jié)合負(fù)載均衡策略來(lái)實(shí)現(xiàn)處理單元之間的負(fù)載均衡。

    本文的主要貢獻(xiàn)如下。

    (1)提出了一種基于CGRA 的高能效且靈活的稀疏卷積神經(jīng)網(wǎng)絡(luò)加速結(jié)構(gòu)DyCNN,它具有輕量級(jí)流水線以支持稀疏卷積操作,同時(shí)可利用數(shù)據(jù)流執(zhí)行模型來(lái)實(shí)現(xiàn)指令的高并行性。

    (2)設(shè)計(jì)了基于數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾機(jī)制,以消除每個(gè)處理單元中由于2 種稀疏性產(chǎn)生的不同無(wú)效指令,從而讓各處理單元之間可高效重用同一組片上指令,避免耗時(shí)的片外指令訪存。

    (3)設(shè)計(jì)了基于負(fù)載感知的動(dòng)靜結(jié)合負(fù)載均衡策略,實(shí)現(xiàn)了處理單元間的負(fù)載均衡,提高了整體硬件利用率,從而提升了整體的性能和能效。

    (4)基于RTL 來(lái)評(píng)估DyCNN 面積和能耗,并使用詳細(xì)微架構(gòu)模擬評(píng)估DyCNN 的性能和能耗。Dy-CNN 在運(yùn)行稀疏CNN 時(shí)比運(yùn)行密集CNN 實(shí)現(xiàn)了平均1.69 倍的性能提升以及3.04 倍的能效提升,比先進(jìn)的GPU(cuSPARSE)和Cambricon-X 上的解決方案分別實(shí)現(xiàn)了2.78 倍、1.48 倍性能提升和35.62倍、1.17 倍能效提升。

    1 相關(guān)工作

    1.1 針對(duì)稠密CNN 的專(zhuān)用加速器

    目前針對(duì)稠密CNN 提出的專(zhuān)用加速器已經(jīng)得到了較好的發(fā)展。DianNao[4]利用硬件化的神經(jīng)元和突觸實(shí)現(xiàn)對(duì)CNN 中乘加法的支持,利用較小的面積和能耗實(shí)現(xiàn)了針對(duì)CNN 的高吞吐量的專(zhuān)用處理器。NeuroMAX[5]提出了一種基于移位器實(shí)現(xiàn)的對(duì)數(shù)計(jì)算單元,并且設(shè)計(jì)了一個(gè)二維權(quán)值廣播數(shù)據(jù)流執(zhí)行模式來(lái)減少片外訪存和提高計(jì)算單元的硬件利用率,從而提升了整體性能和吞吐量。但是以NeuroMAX 為代表的稠密卷積神經(jīng)網(wǎng)絡(luò)加速器無(wú)法高效地支持稀疏CNN 的執(zhí)行。與此不同,本文的目標(biāo)是設(shè)計(jì)一個(gè)能靈活高效支持稀疏CNN 模型執(zhí)行的加速結(jié)構(gòu)。

    1.2 針對(duì)稀疏CNN 的專(zhuān)用加速器

    由于稠密CNN 加速器的局限性,現(xiàn)在出現(xiàn)了很多為稀疏CNN 設(shè)計(jì)的專(zhuān)用加速器[4-9]。這些專(zhuān)用神經(jīng)網(wǎng)絡(luò)加速器的目標(biāo)是通過(guò)去除激活值或權(quán)值中的零值數(shù)據(jù)來(lái)提升稀疏卷積神經(jīng)網(wǎng)絡(luò)的執(zhí)行性能和能效。為了實(shí)現(xiàn)稀疏加速,Kung 等人[8]提出的將稀疏的權(quán)值矩陣轉(zhuǎn)化成單個(gè)稠密列矩陣的方法,提高了稀疏CNN 在脈沖陣列結(jié)構(gòu)上執(zhí)行的硬件利用率。以上工作雖然有一定的加速效果,但要么無(wú)法對(duì)卷積層實(shí)現(xiàn)加速,要么是只考慮了單一稀疏性,仍然存在優(yōu)化空間。而本文的目標(biāo)是綜合考慮權(quán)值和激活值兩者的稀疏性,對(duì)稀疏CNN 實(shí)現(xiàn)全方位加速和能效提升。

    目前也有綜合考慮2 種稀疏性的優(yōu)化研究工作,如Cambricon-X[6]利用權(quán)值稀疏性在其片上緩存中僅保留非零權(quán)值,但是沒(méi)有對(duì)激活值數(shù)據(jù)進(jìn)行壓縮處理,因此可以減少零值權(quán)值對(duì)應(yīng)的計(jì)算和訪存時(shí)間,但激活值的稀疏性仍然會(huì)帶來(lái)計(jì)算和訪存浪費(fèi)。SparseTen[7]提出使用新穎的位掩碼來(lái)表示稀疏張量,基于此來(lái)實(shí)現(xiàn)內(nèi)聯(lián)接計(jì)算稀疏向量-向量乘法,提升了稀疏卷積運(yùn)算的效率。雖然這些加速器都實(shí)現(xiàn)了性能和能效提升,但是由于硬件結(jié)構(gòu)缺乏可重配置和硬件靈活性,無(wú)法很好地適用新的神經(jīng)網(wǎng)絡(luò)模型。與以上加速器對(duì)比,本文基于CGRA 架構(gòu)提供了更高的硬件靈活性和更廣的適用范圍。針對(duì)不同模型特點(diǎn),它可以隨著稀疏CNN 模型的演進(jìn)和變化增加或刪減指令,重新配置硬件結(jié)構(gòu)和映射方式來(lái)支持更多的稀疏CNN 模型。

    1.3 基于CGRA 的神經(jīng)網(wǎng)絡(luò)加速器

    CGRA 近年來(lái)因?yàn)槠浼婢吒呖删幊绦院透咝阅芏玫搅藦V泛的關(guān)注,目前已有工作基于CGRA 設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)相關(guān)的加速器。Ando 等人[11]基于CGRA 為稠密CNN 提出了一個(gè)時(shí)域多線程加速器。它可以通過(guò)多個(gè)計(jì)算階段來(lái)提高輸入數(shù)據(jù)的局部性和重用性,但是該加速器無(wú)法高效支持稀疏CNN 的運(yùn)行。CQNN[12]基于CGRA 提出了一個(gè)針對(duì)量化神經(jīng)網(wǎng)絡(luò)加速框架,可以靈活地配置硬件結(jié)構(gòu)來(lái)支持各種精度的神經(jīng)網(wǎng)絡(luò)執(zhí)行。但是它同樣無(wú)法支持稀疏化CNN 的執(zhí)行。與以上工作不同的是,本文目標(biāo)是基于CGRA 設(shè)計(jì)高能效且靈活的稀疏卷積神經(jīng)網(wǎng)絡(luò)加速器以支持演變迅速的稀疏網(wǎng)絡(luò)模型。

    2 背景

    本節(jié)首先介紹稀疏卷積神經(jīng)網(wǎng)絡(luò),以及稀疏卷積神經(jīng)網(wǎng)絡(luò)中的2 種數(shù)據(jù)稀疏特性,之后介紹粗粒度可重構(gòu)架構(gòu)(CGRA)。

    2.1 稀疏卷積神經(jīng)網(wǎng)絡(luò)

    目前主流的CNN 模型通常通過(guò)構(gòu)建深層網(wǎng)絡(luò)結(jié)構(gòu)來(lái)實(shí)現(xiàn)較高的準(zhǔn)確率。CNN 模型中計(jì)算層主要包括卷積層(CONV)、池化層(POOL)和全連接層(FC)。其中卷積層執(zhí)行時(shí)間占據(jù)了整個(gè)網(wǎng)絡(luò)模型處理執(zhí)行時(shí)間的80%以上[13],因此卷積層無(wú)疑是整個(gè)CNN 模型的瓶頸所在。每個(gè)卷積層由高維卷積操作組成,它通過(guò)把過(guò)濾器(Filters)應(yīng)用到輸入激活(input activation,IA)上,兩者進(jìn)行卷積操作來(lái)提取輸入激活的局部特征。在卷積操作完成之后,會(huì)利用激活函數(shù)來(lái)引入非線性因素生成輸出激活(output activation,OA),比如整流線性單元(rectified linear unit,ReLU)[14]是常使用的激活函數(shù)。其中Filters 的值是使用訓(xùn)練算法[15]對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練學(xué)習(xí)得到的權(quán)值(Weights)。

    圖1 展示了一個(gè)完整的卷積計(jì)算的可視化過(guò)程,表1 中列出了卷積計(jì)算中的主要參數(shù),通常一個(gè)CNN 模型中包含多個(gè)連續(xù)的卷積層,OA 在相鄰卷積層之間傳遞,上一個(gè)卷積層生成的OA 作為下一卷積層的IA 參與卷積運(yùn)算,如此迭代下去,直到所有卷積層計(jì)算完成。

    表1 卷積層的參數(shù)信息

    圖1 CNN 模型計(jì)算流程

    由于CNN 模型越來(lái)越復(fù)雜,參數(shù)越來(lái)越多,增加了對(duì)計(jì)算和存儲(chǔ)硬件資源的需求。因此有研究人員提出了許多壓縮CNN 模型參數(shù)的方法(例如剪枝[16]),這些方法對(duì)結(jié)果精度損失影響較小,同時(shí)可以大量減小模型參數(shù)大小,從而減少CNN 對(duì)計(jì)算和存儲(chǔ)的需求。然而,上述對(duì)模型參數(shù)壓縮的方法會(huì)導(dǎo)致網(wǎng)絡(luò)模型的權(quán)值參數(shù)包含了大量的零值,因此權(quán)值參數(shù)的稀疏性較高。在Han 等人[16]研究中,Alex-Net[17]、VGG16[18]等網(wǎng)絡(luò)模型通過(guò)剪枝后的權(quán)值稀疏度(零值的數(shù)據(jù)量占數(shù)據(jù)總量的比率)能高達(dá)90%以上[16]。這種稀疏性是伴隨模型參數(shù)訓(xùn)練完成而產(chǎn)生的,在使用稀疏卷積神經(jīng)網(wǎng)絡(luò)前向推理過(guò)程中,權(quán)值稀疏性不再發(fā)生改變,因此可視為一種靜態(tài)稀疏性。

    在稀疏CNN 執(zhí)行過(guò)程中,由于通常包含了激活函數(shù),比如ReLU 函數(shù),它將輸出激活中小于0 的數(shù)置為0,從而在輸出激活中產(chǎn)生了稀疏性。由于0與任何數(shù)據(jù)進(jìn)行乘法操作,結(jié)果為0,與另一值進(jìn)行加法操作,結(jié)果與該值相等,因此0 被視為無(wú)效值,其參與的計(jì)算操作被視為無(wú)效計(jì)算,可以去除。但與權(quán)值稀疏性不同的是,激活值稀疏性是在計(jì)算過(guò)程中激活函數(shù)確定的,無(wú)法在前向推理執(zhí)行前提前得知;同時(shí)由于隨著上一卷積層生成的OA 作為下一卷積層IA 計(jì)算并不斷迭代,所以該稀疏性在執(zhí)行中是傳遞性的,因此可視為一種動(dòng)態(tài)稀疏性。

    2.2 粗粒度數(shù)據(jù)流架構(gòu)

    CGRA 從20 世紀(jì)90 年代開(kāi)始迅速發(fā)展[19]。這種架構(gòu)是基于20 世紀(jì)60 年代提出的可重構(gòu)計(jì)算概念的自然粗粒度實(shí)現(xiàn)[20]。它不僅像ASIC 一樣具有高能效和高性能,而且還具有出色的可編程性[21]。

    CGRA 與數(shù)據(jù)流體系結(jié)構(gòu)[22]關(guān)系密切,它們通常與數(shù)據(jù)流機(jī)制集成在一起,因此CGRA 的操作可以由數(shù)據(jù)流驅(qū)動(dòng)。CGRA 內(nèi)部通常由一個(gè)二維處理單元(processing element,PE)陣列組成,CGRA 的配置信息定義了這些PE 的功能和它們之間的互連關(guān)系。CGRA 可以通過(guò)互連網(wǎng)絡(luò)利用PE 之間的高效數(shù)據(jù)流執(zhí)行方式,這是傳統(tǒng)處理器結(jié)構(gòu)不支持的方式。通過(guò)有效的數(shù)據(jù)流和控制流的結(jié)合,CGRA 可以避免PE 之間的過(guò)度順序化執(zhí)行,利用粗粒度并行性提升執(zhí)行效率。同時(shí)CGRA 可以進(jìn)一步支持PE 之間的顯式數(shù)據(jù)通信,從而減少PE 之間數(shù)據(jù)移動(dòng)的能耗。因此這種具有數(shù)據(jù)流和控制流結(jié)合的混合模式是CGRA 同時(shí)具有高性能和高能效的重要原因。基于以上分析,本文利用CGRA 去優(yōu)化稀疏卷積神經(jīng)網(wǎng)絡(luò)執(zhí)行,可以在不犧牲可編程性的情況下實(shí)現(xiàn)DyCNN 的高性能和高能效。

    為了充分提高指令的并行性,DyCNN 在PE 陣列層級(jí)采用經(jīng)典的數(shù)據(jù)流并行執(zhí)行模型[23]。如圖2(a)所示,在該執(zhí)行模型中,CNN 應(yīng)用被編譯劃分成多部分指令塊(如C1~C9 等)。每個(gè)指令塊中包含一系列硬件指令。所有的指令塊根據(jù)依賴關(guān)系將應(yīng)用程序表示為數(shù)據(jù)流圖,然后將其映射到圖2(b)所示的二維PE 陣列中執(zhí)行。與PE 間的執(zhí)行模型不同,在每個(gè)PE 內(nèi)部,指令塊采用順序流方式執(zhí)行。

    圖2 指令在PE 上映射方式和稀疏導(dǎo)致PE 的指令重用差異

    3 稀疏卷積神經(jīng)網(wǎng)絡(luò)面臨的挑戰(zhàn)

    本節(jié)通過(guò)分析稀疏卷積神經(jīng)網(wǎng)絡(luò)在CGRA 上執(zhí)行的挑戰(zhàn)和先前工作的不足來(lái)闡述本文工作的設(shè)計(jì)理念和設(shè)計(jì)要素。

    3.1 兩種稀疏性并存導(dǎo)致大量無(wú)效指令

    由2.1 節(jié)可知,在稀疏卷積神經(jīng)網(wǎng)絡(luò)中存在著權(quán)值和激活值2 種稀疏性,在稀疏卷積神經(jīng)網(wǎng)絡(luò)前向推理過(guò)程中,會(huì)生成大量權(quán)值和激活值中零值相對(duì)應(yīng)的指令。由于在矩陣乘法運(yùn)算中,零值參與的計(jì)算對(duì)結(jié)果不會(huì)產(chǎn)生任何影響,因此這些數(shù)據(jù)對(duì)應(yīng)的計(jì)算被視為無(wú)效計(jì)算。這些無(wú)效計(jì)算對(duì)應(yīng)的指令訪存、數(shù)據(jù)訪存和指令執(zhí)行的時(shí)間和能耗會(huì)導(dǎo)致稀疏卷積神經(jīng)網(wǎng)絡(luò)在CGRA 上執(zhí)行性能和能效大幅降低。

    如圖2(c)所示,PE1、PE3 分別運(yùn)行2 個(gè)通道3×3 的Filter 和3 ×3 的IA 的卷積運(yùn)算(黑粗線框標(biāo)示出來(lái)的部分)。若為稠密網(wǎng)絡(luò),運(yùn)行一個(gè)通道卷積運(yùn)算的一組指令模板共包含如圖2(d)所示9 組指令,其中主要包含了讀取數(shù)據(jù)和乘加運(yùn)算。其中圖2(c)中矩陣中標(biāo)灰的代表有效數(shù)值,白色的代表無(wú)效值,無(wú)效值所對(duì)應(yīng)的圖2(d)中指令組是無(wú)效指令,這些無(wú)效指令的執(zhí)行會(huì)占據(jù)大量的時(shí)間,嚴(yán)重阻礙了整體性能和能效的提升。

    目前已有工作通過(guò)排除固定的權(quán)值稀疏性來(lái)提升性能,但仍然面臨著存在激活值稀疏性的問(wèn)題[6,24]。如果在CGRA 上只是通過(guò)預(yù)先感知權(quán)值的固定稀疏性,雖然一定程度上能去除各PE 中部分無(wú)效指令的執(zhí)行,但是由于稀疏數(shù)據(jù)的分布不規(guī)則,各PE 之間執(zhí)行的指令差異較大,使得片上PE 無(wú)法重用相同的指令,每個(gè)PE 都需要從片外訪存自身的指令,從而增加耗時(shí)較長(zhǎng)的片外指令訪存。如圖2(c)所示,由于PE 所執(zhí)行的稀疏數(shù)據(jù)分布不一致,圖2(d)中對(duì)應(yīng)有效執(zhí)行的指令(黑粗線框標(biāo)出)也差異很大,如對(duì)于PE1,第2、5、7、8 組指令為其有效數(shù)據(jù)對(duì)應(yīng)的真正有效的指令,而對(duì)PE9,第1、2、5、6、9 組指令才是真正有效的指令。若采用此方法,會(huì)導(dǎo)致各PE 之間無(wú)法共用同一組相同指令模版(只需要根據(jù)配置修改數(shù)據(jù)訪存地址),需要單獨(dú)地去片外訪存自身有效數(shù)據(jù)對(duì)應(yīng)的有效指令。這種高延遲的指令訪存導(dǎo)致PE 計(jì)算部件處于空閑等待狀態(tài),降低了整體硬件的利用率,從而降低了整體執(zhí)行性能并增加了能耗。

    為了支撐這一點(diǎn),本文構(gòu)建了一個(gè)典型的CGRA 加速器模型,并使用工作[6]中的稀疏去除方法分別運(yùn)行AlexNet 和VGG16 對(duì)應(yīng)的稠密網(wǎng)絡(luò)和稀疏網(wǎng)絡(luò),收集其指令執(zhí)行和指令訪存時(shí)間。圖3 所為AlexNet(第CONV2 層到第CONV5 層)和VGG16(第CONV3_1 層到第CONV5_3 層)對(duì)應(yīng)稠密(De)和稀疏(Sp)卷積網(wǎng)絡(luò)中指令的訪存時(shí)間和執(zhí)行時(shí)間分解。從圖3 中可以看到,稠密卷積操作中指令的訪存時(shí)間僅占總時(shí)間的1%~2%,絕大部分的時(shí)間被指令執(zhí)行時(shí)間所占據(jù),這意味著在片上指令的重用性很高,耗時(shí)指令的片外訪存較少,整體硬件利用率較高。與此不同的是,在執(zhí)行稀疏卷積操作時(shí),可以看到指令訪存時(shí)間占總時(shí)間比例比較大,最高在VGG16 的CONV5_1 層能達(dá)到60%。雖然稀疏卷積操作中指令的執(zhí)行時(shí)間較稠密卷積操作有所減少,但是因?yàn)楹臅r(shí)較長(zhǎng)的片外指令訪存和未去除的激活值稀疏性,導(dǎo)致總體的執(zhí)行時(shí)間要比稠密卷積操作甚至更長(zhǎng)。從圖3 中還可以看出輸出激活值的稀疏度也較高,比如AlexNet 的CONV5 層能達(dá)到90%,因此如何有效去除稀疏卷積神經(jīng)網(wǎng)絡(luò)中2種并存的稀疏性帶來(lái)的影響對(duì)于提升執(zhí)行效率和能效是一個(gè)迫在眉睫的問(wèn)題。

    圖3 AlexNet 和VGG16 運(yùn)行時(shí)間分解(左坐標(biāo)軸表示稠密(De)和稀疏(Sp)網(wǎng)絡(luò)指令執(zhí)行時(shí)間分解,并且將Sp 的執(zhí)行時(shí)間歸一化到De;右坐標(biāo)軸表示輸出激活值稀疏度;最后一組柱線展示各層De 和Sp 的幾何平均值(GM))

    在粗粒度可重構(gòu)架構(gòu)中,每個(gè)PE 內(nèi)可配置獨(dú)立的取指和控制單元,因此本文提出了數(shù)據(jù)動(dòng)態(tài)感知的指令過(guò)濾機(jī)制來(lái)使得每個(gè)PE 在指令執(zhí)行時(shí)過(guò)濾掉無(wú)效值相關(guān)的冗余指令,從而避免冗余指令和數(shù)據(jù)訪存操作,同時(shí)使得每個(gè)PE 之間仍然能像稠密網(wǎng)絡(luò)一樣高效共享同樣的片上指令,減少耗時(shí)的指令片外訪存,從而去除稀疏性帶來(lái)的影響。

    3.2 稀疏性導(dǎo)致處理單元之間負(fù)載不均衡

    由于稀疏卷積神經(jīng)網(wǎng)絡(luò)在前向推理過(guò)程中存在著權(quán)值和激活數(shù)據(jù)兩方面的稀疏性,并且稀疏性分布十分不規(guī)則,因此將負(fù)載分配給CGRA 中不同PE執(zhí)行后,會(huì)導(dǎo)致不同PE 之間的負(fù)載分布不均衡。具體表現(xiàn)為有些PE 處于忙碌,而有些PE 處于閑置等待狀態(tài),從而導(dǎo)致整體硬件資源利用率較低,性能較差,能耗較高。

    根據(jù)3.1 節(jié)中實(shí)驗(yàn)統(tǒng)計(jì)執(zhí)行CONV5_1 層處理單元的計(jì)算部件利用率,從圖4 中可以看到不同PE之間的計(jì)算部件利用率(實(shí)際性能和理論峰值性能的比值)相差很大,其中有些PE 計(jì)算部件利用率能夠達(dá)到接近60%,但是有些PE 計(jì)算部件的利用率僅有20%。這種相差較大的計(jì)算部件利用率會(huì)導(dǎo)致PE 之間互相等待,運(yùn)行慢的PE 拖慢了整體的執(zhí)行速度,延長(zhǎng)了整體的執(zhí)行時(shí)間,從而降低了整體的硬件資源利用率,嚴(yán)重阻礙了整體性能的提升。在負(fù)載不均衡的情況下,稀疏CNN 的執(zhí)行效率低下,整體性能難以提升。為了充分利用稀疏網(wǎng)絡(luò)的計(jì)算和存儲(chǔ)優(yōu)勢(shì),稀疏卷積神經(jīng)網(wǎng)絡(luò)的負(fù)載不均衡問(wèn)題亟待解決。

    圖4 同一行和同一列PE 中的計(jì)算部件利用率

    在初始化階段進(jìn)行負(fù)載劃分時(shí),可以先通過(guò)感知靜態(tài)的權(quán)值稀疏性和輸入激活的動(dòng)態(tài)稀疏性,采用加權(quán)輪詢方式進(jìn)行均衡分配。在執(zhí)行過(guò)程當(dāng)中,新的輸出激活值不斷生成,結(jié)合3.1 節(jié)中提到的數(shù)據(jù)動(dòng)態(tài)感知方式可以實(shí)現(xiàn)相鄰PE 之間動(dòng)態(tài)負(fù)載竊取和調(diào)度,從而進(jìn)一步實(shí)現(xiàn)負(fù)載均衡,提升整體硬件的利用率。

    4 DyCNN 加速結(jié)構(gòu)

    本節(jié)介紹本文基于CGRA 提出的架構(gòu)DyCNN,首先介紹整體結(jié)構(gòu)和執(zhí)行方式;然后介紹為了消除由于權(quán)值和激活值的稀疏性影響設(shè)計(jì)的數(shù)據(jù)動(dòng)態(tài)感知的稀疏去除機(jī)制和多階段之間的流水化執(zhí)行機(jī)制;最后闡述為了提高硬件利用率設(shè)計(jì)的動(dòng)靜結(jié)合的負(fù)載均衡策略。

    4.1 DyCNN 整體結(jié)構(gòu)介紹

    本文提出的架構(gòu)如圖5(a)所示,它主要由處理單元(PE)、控制器、權(quán)值和激活值靜態(tài)隨機(jī)存取存儲(chǔ)器(static random access memory,SRAM)以及片上網(wǎng)絡(luò)組成。平鋪的PE 之間通過(guò)片上網(wǎng)絡(luò)互連??刂破靼藸顟B(tài)寄存器和負(fù)載調(diào)度器,負(fù)責(zé)整體PE陣列的狀態(tài)收集和負(fù)載控制。權(quán)值和輸入輸出激活值存儲(chǔ)在相應(yīng)的片上SRAM 中。如圖5(b)所示,每個(gè)PE 也由一個(gè)控制單元、指令和操作數(shù)緩存、路由器以及一個(gè)消除數(shù)據(jù)相關(guān)的輕量級(jí)計(jì)算單元組成。每個(gè)PE 中都包含翻譯器、指令選擇器,它們是實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)感知機(jī)制的主要單元。圖5(c)展示了Dy-CNN 為支持稀疏CNN 操作而定義的指令格式,其中具有保留位,可以根據(jù)新的CNN 模型輕松進(jìn)行擴(kuò)展,從而能支持演變迅速的CNN 模型。

    圖5 DyCNN 的結(jié)構(gòu)圖概覽

    同時(shí)為了提高數(shù)據(jù)在片上的重用性,DyCNN 采用了行列共享的負(fù)載劃分和映射執(zhí)行模型(row-column sharing scheme,RCS)。如圖6 所示,本文將IA按行劃分成的行分區(qū),保證每個(gè)行分區(qū)的非0 值基本相同,并且將不同的行分區(qū)映射給不同的PE 行執(zhí)行,這樣位于同一行的PE 可以共享相同的IA 行分區(qū)。與此同時(shí)將并列不同通道的Filter 映射給不同列的PE 執(zhí)行,從而使得位于同一列的PE 共享相同的Filter。通過(guò)以上的映射執(zhí)行方式,可以有效地提高片上PE 之間對(duì)IA 和Filter 的共享和重用性,減少耗時(shí)的片外訪存。

    圖6 數(shù)據(jù)映射執(zhí)行模型

    4.2 數(shù)據(jù)動(dòng)態(tài)感知機(jī)制

    由于激活值稀疏性是在計(jì)算過(guò)程中動(dòng)態(tài)生成和在不同卷積層之間傳遞的,因此為了有效地感知激活值稀疏性,本文提出了基于位圖(bitmap)的數(shù)據(jù)動(dòng)態(tài)感知機(jī)制。該機(jī)制主要思想是通過(guò)將權(quán)值和激活值在計(jì)算過(guò)程中動(dòng)態(tài)地轉(zhuǎn)換成bitmap,然后通過(guò)感知對(duì)應(yīng)的bitmap 的值來(lái)判斷數(shù)據(jù)是有效還是無(wú)效,進(jìn)而通過(guò)數(shù)據(jù)的無(wú)效性和有效性來(lái)判斷指令的有效性。在bitmap 中,使用1 bit 來(lái)表示數(shù)據(jù)的有效性,其中0 表示數(shù)據(jù)無(wú)效,1 表示數(shù)據(jù)有效,可以對(duì)數(shù)據(jù)實(shí)現(xiàn)高效的壓縮存儲(chǔ),減少了感知稀疏性的成本和額外開(kāi)銷(xiāo)。

    如圖7 所示,數(shù)據(jù)翻譯器的功能是動(dòng)態(tài)地實(shí)現(xiàn)激活數(shù)據(jù)感知,它從存儲(chǔ)輸出激活值的緩存中讀出輸出激活值,然后將輸出激活值中的每個(gè)數(shù)值執(zhí)行按位或(OR)操作,生成1 bit 的數(shù)值結(jié)果來(lái)代表該數(shù)值的有效性。如果該數(shù)值的所有數(shù)值位bit 不全為0 時(shí),通過(guò)OR 操作則會(huì)生成1 bit 為1 的數(shù)值,代表該數(shù)值為有效數(shù)值,會(huì)參與有效計(jì)算。如果輸出緩存所有數(shù)值位的全為0,則會(huì)生成1 bit 為0 的數(shù)值,代表該數(shù)值為無(wú)效數(shù)值,該數(shù)值參與的矩陣運(yùn)算是無(wú)效計(jì)算。生成的輸出激活值對(duì)應(yīng)的bitmap 會(huì)被存儲(chǔ)在bitmap 緩存中。權(quán)值數(shù)據(jù)同樣可以利用數(shù)據(jù)翻譯單元來(lái)將其轉(zhuǎn)換成bitmap 存儲(chǔ)在緩存中。不同的是,因?yàn)闄?quán)值數(shù)據(jù)在前向推理過(guò)程中是靜態(tài)的,在稀疏卷積神經(jīng)網(wǎng)絡(luò)前向推理過(guò)程中,只需要在初始化時(shí)執(zhí)行一次數(shù)值和bitmap 轉(zhuǎn)換即可,不需要重復(fù)轉(zhuǎn)換;而輸出激活數(shù)據(jù)在多層卷積的模型下是動(dòng)態(tài)生成的,因此在每層生成一次新的輸出激活數(shù)據(jù)時(shí),需要使用數(shù)據(jù)翻譯單元將輸出激活數(shù)據(jù)轉(zhuǎn)換成新的bitmap 存儲(chǔ)在緩存中,以供后續(xù)指令選擇單元使用。

    圖7 數(shù)據(jù)動(dòng)態(tài)感知和指令動(dòng)態(tài)過(guò)濾機(jī)制

    4.3 基于數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾機(jī)制

    為了通過(guò)感知數(shù)據(jù)的稀疏性,去除每個(gè)PE 上冗余無(wú)效指令,使得每個(gè)PE 能夠共享同一組指令并避免冗余指令的片外訪存,本文設(shè)計(jì)了指令選擇器來(lái)對(duì)無(wú)效數(shù)據(jù)對(duì)應(yīng)的計(jì)算和訪存指令進(jìn)行篩選。首先通過(guò)數(shù)據(jù)翻譯單元?jiǎng)討B(tài)地將權(quán)值數(shù)據(jù)和輸出激活數(shù)據(jù)轉(zhuǎn)換成bitmap 存儲(chǔ),接下來(lái)需要利用權(quán)值數(shù)據(jù)和輸出激活數(shù)據(jù)的bitmap 對(duì)指令進(jìn)行相應(yīng)的篩選。

    圖7 展示了指令選擇單元對(duì)PE 中指令的篩選過(guò)程,主要包含2 個(gè)階段。第1 階段:首先指令選擇單元將IA 的bitmap 和Filters 的bitmap 從相應(yīng)緩存地址中讀出;然后將IA 和Filters 參與計(jì)算的對(duì)應(yīng)數(shù)據(jù)的作按位與(AND)運(yùn)算,從而得出數(shù)據(jù)位對(duì)應(yīng)的指令標(biāo)記,并將指令標(biāo)記存儲(chǔ)在指令標(biāo)記緩存中。如果對(duì)應(yīng)的指令標(biāo)記為0,則代表對(duì)應(yīng)的指令為無(wú)效指令,這部分指令是過(guò)濾目標(biāo)。

    第2 階段:在得到指令標(biāo)記信息之后,指令選擇單元從指令標(biāo)記緩存中取出相應(yīng)的標(biāo)記,根據(jù)相應(yīng)的標(biāo)記信息去指令緩存中取出對(duì)應(yīng)有效的指令,并且將對(duì)應(yīng)有效的指令送進(jìn)流水化計(jì)算單元中進(jìn)行執(zhí)行。指令控制單元不斷從指令標(biāo)記緩存中讀取指令標(biāo)記,并對(duì)指令標(biāo)記信息逐條篩選,將每條指令標(biāo)記為1 的指令篩選出來(lái)送進(jìn)計(jì)算單元執(zhí)行;而指令標(biāo)記為0 的指令則不執(zhí)行;直到所有的指令標(biāo)記信息檢測(cè)結(jié)束。

    4.4 指令執(zhí)行和選擇階段流水化

    第4.2 和4.3 節(jié)展示了本文設(shè)計(jì)的數(shù)據(jù)動(dòng)態(tài)感知和指令選擇單元主要結(jié)構(gòu)和執(zhí)行流程。可以看出本文在每個(gè)PE 內(nèi)部指令的執(zhí)行主要?jiǎng)澐譃橐韵?個(gè)執(zhí)行階段:(1)數(shù)據(jù)翻譯階段:負(fù)責(zé)將權(quán)值數(shù)據(jù)和激活數(shù)據(jù)動(dòng)態(tài)轉(zhuǎn)化成存儲(chǔ)需求較小的bitmap 格式,從而壓縮數(shù)據(jù)存儲(chǔ),并且用于之后的指令選擇階段實(shí)現(xiàn)去除稀疏性帶來(lái)的冗余指令;(2)指令選擇階段:首先利用數(shù)據(jù)翻譯階段生成的數(shù)據(jù)bitmap 來(lái)感知數(shù)據(jù)的有效性,利用數(shù)據(jù)的有效性生成指令標(biāo)記信息,并且利用指令標(biāo)記信息選擇出有效的指令;(3)計(jì)算階段:將指令選擇階段篩選出來(lái)的有效指令和數(shù)據(jù)讀取出來(lái)并送入計(jì)算單元執(zhí)行真正的有效計(jì)算。

    如圖8 所示,為了提升每個(gè)PE 內(nèi)以上3 個(gè)執(zhí)行階段的執(zhí)行效率,本文的設(shè)計(jì)將這3 個(gè)執(zhí)行階段流水化執(zhí)行。因?yàn)槠洗鎯?chǔ)以雙緩沖的形式組織,可以一部分用于存儲(chǔ)正在計(jì)算的數(shù)據(jù),一部分用于存儲(chǔ)下一階段需要執(zhí)行的數(shù)據(jù),因此可以有效避免不同階段流水化執(zhí)行的阻塞問(wèn)題。在一個(gè)PE 內(nèi)部,當(dāng)一部分?jǐn)?shù)據(jù)進(jìn)入數(shù)據(jù)翻譯階段之后,隨著bitmap數(shù)據(jù)的慢慢生成,這部分?jǐn)?shù)據(jù)可以直接進(jìn)入指令選擇和計(jì)算階段,以很好地將數(shù)據(jù)翻譯、指令選擇和計(jì)算階段的時(shí)間重疊起來(lái),從而掩蓋掉數(shù)據(jù)翻譯和指令選擇的時(shí)間開(kāi)銷(xiāo),最大程度地減少稀疏去除機(jī)制帶來(lái)的性能損失。

    圖8 各階段流水化執(zhí)行策略

    4.5 基于負(fù)載感知的動(dòng)靜結(jié)合均衡策略

    權(quán)值和激活數(shù)據(jù)的稀疏不規(guī)則性,導(dǎo)致分配給每個(gè)PE 的權(quán)值和激活值有效數(shù)據(jù)數(shù)量不均衡,每個(gè)PE 之間出現(xiàn)負(fù)載不均衡現(xiàn)象。為了充分提高DyCNN 中整體計(jì)算部件的利用率,本文提出了基于負(fù)載感知的動(dòng)靜結(jié)合的負(fù)載均衡策略。前人工作[24]提出基于權(quán)值中有效值數(shù)量來(lái)進(jìn)行負(fù)載的劃分和映射,它將PE 陣列按列進(jìn)行分組,并使得同一組的PE共享同一組權(quán)值;對(duì)于不同的組之間基于權(quán)值中非零權(quán)值個(gè)數(shù)去進(jìn)行劃分,使得不同組之間劃分得到的權(quán)值中非零值數(shù)量盡量均衡。這種負(fù)載均衡策略只考慮了權(quán)值靜態(tài)稀疏性的影響,沒(méi)有解決激活值動(dòng)態(tài)稀疏性帶來(lái)的影響。因?yàn)榧せ顢?shù)據(jù)的稀疏性是在計(jì)算過(guò)程中動(dòng)態(tài)變化的,DyCNN 不能簡(jiǎn)單采用初始化負(fù)載映射算法來(lái)保證負(fù)載均衡,所以本文為DyCNN 提出感知數(shù)據(jù)的靜態(tài)和動(dòng)態(tài)相結(jié)合的負(fù)載均衡策略。

    根據(jù)4.1 節(jié)中的描述,為了增加片上指令和數(shù)據(jù)的重用性,減少片外的訪存,DyCNN 采用了如圖6所示的負(fù)載映射和執(zhí)行方式。這種映射執(zhí)行方式進(jìn)一步增加了IA 和Filters 的片上重用性。但是每層的IA 和Filters 都存在稀疏性,IA 和Filters 兩者都是影響不同PE 之間負(fù)載均衡的因素,因此在進(jìn)行負(fù)載初始劃分時(shí),DyCNN 需要綜合考慮IA 和Filters中的有效值數(shù)量來(lái)實(shí)現(xiàn)負(fù)載的均衡分配。

    首先介紹靜態(tài)負(fù)載均衡策略。由于水平方向上的PE 復(fù)用相同的IA,所有對(duì)應(yīng)IA 的有效工作負(fù)載一致;同理垂直方向上的PE 復(fù)用相同的Filters,所以它們之間的有效工作負(fù)載基本一致?;诖?在進(jìn)行負(fù)載劃分時(shí),先利用4.2 節(jié)的稀疏感知機(jī)制,對(duì)有效工作負(fù)載進(jìn)行統(tǒng)計(jì),對(duì)于每個(gè)PE 列,它們被映射新的Filters 時(shí)采用加權(quán)輪詢算法按非零權(quán)值的數(shù)量排序依次分配給具有不同權(quán)重的PE 列。含有較少負(fù)載的PE 列權(quán)重則高,優(yōu)先被分配有效值多的Filters;含有較多負(fù)載的PE 列權(quán)重則低,會(huì)被分配有效值少的Filters。如圖9 所示,假設(shè)一共有6 個(gè)具有不同非零權(quán)值數(shù)量的Filters(如F1 的權(quán)值數(shù)量是20)分配給3 列PE 執(zhí)行,采用先將F1~F6 按非零權(quán)值數(shù)量進(jìn)行排序,然后按大小輪流分配給各列PE。DyCNN 將IA 按行進(jìn)行分區(qū)劃分,然后分配給每個(gè)PE 行,同時(shí)保證每個(gè)行分區(qū)的非零值數(shù)量基本相等。

    圖9 基于加權(quán)輪詢的靜態(tài)負(fù)載均衡策略

    其次介紹動(dòng)態(tài)負(fù)載均衡策略。為了在運(yùn)行時(shí)解決由于動(dòng)態(tài)變化的輸入激活稀疏性導(dǎo)致的負(fù)載不均衡問(wèn)題,DyCNN 在靜態(tài)負(fù)載均衡策略基礎(chǔ)上進(jìn)一步設(shè)計(jì)了一個(gè)動(dòng)態(tài)均衡策略(dynamic balancing scheme,DBS)。它主要由2 個(gè)因素驅(qū)動(dòng):(1)不同PE 行之間是共享輸入激活的,且輸入激活是動(dòng)態(tài)生成的;(2)通過(guò)使用RCS 負(fù)載映射方式,DyCNN 可以避免PE 訪問(wèn)彼此不同輸入激活之間的同步操作。

    對(duì)于動(dòng)態(tài)均衡策略的第1 個(gè)設(shè)計(jì)是如何有效表示工作負(fù)載的,如第4.1 節(jié)所述,DyCNN 的工作負(fù)載由輸入激活的連續(xù)行分區(qū)表示。因此DyCNN 選擇在輸入激活矩陣的行分區(qū)中使用開(kāi)始索引IS和結(jié)束索引IE來(lái)表示負(fù)載范圍,這2 個(gè)變量存儲(chǔ)在片上緩存中。

    第2 個(gè)設(shè)計(jì)是工作負(fù)載竊取方案。前人工作通常在工作隊(duì)列中加入同步原語(yǔ),或者為閑置單元中斷忙碌單元。這些方法都會(huì)帶來(lái)巨大的開(kāi)銷(xiāo)。相反,本文利用DyCNN 中控制器的狀態(tài)寄存器來(lái)減少開(kāi)銷(xiāo)。DyCNN 中的處理單元只需訪問(wèn)狀態(tài)寄存器中各處理單元IS和IE的值即可實(shí)現(xiàn)在不中斷被竊取單元當(dāng)前的工作情況下完成負(fù)載竊取。

    算法1 展示了本文的DBS 具體實(shí)現(xiàn)。最初每個(gè)處理單元Pi都分配有具有相同數(shù)量的非零值的行分區(qū),由索引IS和IE定義負(fù)載區(qū)間。每個(gè)線程使用一個(gè)同步變量鎖來(lái)保證負(fù)載竊取的原子性。每個(gè)處理單元對(duì)卷積運(yùn)算的處理從IS開(kāi)始,當(dāng)IS=IE時(shí),處理單元已完成其初始工作量并進(jìn)入空閑狀態(tài),然后請(qǐng)求選擇一個(gè)相鄰忙碌的處理單元Pv進(jìn)行負(fù)載的竊取。在DyCNN 中選擇讓閑置處理單元竊取忙碌處理單元一半的工作量,因?yàn)樗言谇叭斯ぷ髦凶C明效果較好[25]。

    5 實(shí)驗(yàn)與結(jié)果

    本節(jié)將展示DyCNN 執(zhí)行稀疏化之后的AlexNet和VGG16 的卷積層相比稀疏化之前的加速效果,并將優(yōu)化效果與先進(jìn)的通用架構(gòu)圖形處理器(graphics processing unit,GPU)和稀疏卷積神經(jīng)網(wǎng)絡(luò)加速器Cambiricon-X 上的方案比較從性能、能效兩方面提供詳細(xì)的結(jié)果對(duì)比和分析。

    5.1 實(shí)驗(yàn)平臺(tái)配置和對(duì)比基準(zhǔn)

    為了評(píng)估DyCNN 的有效性,本文用Verilog 實(shí)現(xiàn)了DyCNN 的結(jié)構(gòu),并使用Synopsys 公司的編譯器和臺(tái)積電12 nm GP 標(biāo)準(zhǔn)VT 庫(kù)工藝進(jìn)行綜合來(lái)準(zhǔn)確評(píng)估DyCNN 的功率和面積。為了對(duì)DyCNN 進(jìn)行準(zhǔn)確的性能評(píng)估,本文基于中國(guó)科學(xué)院計(jì)算技術(shù)研究所自主研發(fā)的大規(guī)模并行模擬框架SimICT[26]實(shí)現(xiàn)時(shí)鐘精確型的模擬器并使用Ramulator[27]來(lái)集成存儲(chǔ)子系統(tǒng)。整個(gè)加速器的面積為14.22 mm2,單個(gè)PE 面積為0.16 mm2。片上SRAM 的面積、功耗和訪問(wèn)延遲使用Cacti 6.5[28]估算。

    表2 展示了用于評(píng)估的系統(tǒng)配置信息。本文首先從性能和能效方面對(duì)在DyCNN 運(yùn)行稀疏CNN 與運(yùn)行密集CNN 進(jìn)行對(duì)比,評(píng)估并驗(yàn)證DyCNN 中針對(duì)稀疏優(yōu)化方法的有效性。除此之外,本文還將DyCNN 與NVIDIA Titan XP GPU(基于cuSPARSE[29]實(shí)現(xiàn))和Cambricon-X 進(jìn)行性能和能效的對(duì)比。最后,本文使用計(jì)算部件利用率和指令減少數(shù)量來(lái)分析DyCNN 針對(duì)稀疏CNN 提出的優(yōu)化策略效率。

    表2 參與評(píng)估結(jié)構(gòu)的配置信息

    為了全面地驗(yàn)證DyCNN 的效果,本文選取了應(yīng)用廣泛的AlexNet 和VGG16 卷積神經(jīng)網(wǎng)絡(luò)模型中幾個(gè)典型的卷積層來(lái)評(píng)估DyCNN 的性能和能效。表3 展示了以上2 種CNN 模型中各卷積層的參數(shù),其中Weight 的稀疏度表示AlexNet 和VGG16 的稠密網(wǎng)絡(luò)稀疏化成對(duì)應(yīng)稀疏網(wǎng)絡(luò)后每層的Weight 稀疏百分比。

    表3 CNN 模型的參數(shù)信息

    5.2 結(jié)果分析

    (1)性能

    在圖10 中,本文首先比較了DyCNN 執(zhí)行稀疏CNN(DyCNN-Sp)歸一化為DyCNN 執(zhí)行稠密CNN(DyCNN-De)的性能加速比。所有卷積層性能加速比的幾何平均值(geometric mean,GM)在最后一組柱線中標(biāo)記為GM。總體來(lái)看,DyCNN 在執(zhí)行稀疏CNN 相比執(zhí)行稠密CNN 實(shí)現(xiàn)了1.69 倍的加速。一方面,DyCNN 執(zhí)行稀疏CNN 的性能提升主要來(lái)源于DyCNN 通過(guò)數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾方式去除了2 種稀疏性帶來(lái)的無(wú)效指令和數(shù)據(jù)的計(jì)算和訪存,使得各PE 之間可以高效共享同一組指令,提升了片上指令和數(shù)據(jù)的重用效率,從而提升了整體性能。除此之外,稀疏CNN 相比稠密CNN 具有占用內(nèi)存小的特征,從而可以在片上存儲(chǔ)更多的指令和數(shù)據(jù),進(jìn)一步減少了高延遲的片外訪存。另一方面,通過(guò)使用基于數(shù)據(jù)感知的靜態(tài)和動(dòng)態(tài)負(fù)載調(diào)度策略相結(jié)合的方法,DyCNN在執(zhí)行稀疏卷積神經(jīng)網(wǎng)絡(luò)時(shí)具有更高的硬件利用率來(lái)提升整體性能。然后詳細(xì)分析具體卷積層之間的性能提升情況。通過(guò)圖10 可以發(fā)現(xiàn),DyCNN 在AlexNet 的CONV2 層性能提升最多為2.60 倍,表明加速器對(duì)大的Filter 的卷積層加速效果更明顯。同時(shí),由于VGG16 的CONV1_2 層激活稀疏度較低,與其他卷積層相比,加速效果只有1.28 倍。

    圖10 DyCNN 運(yùn)行稀疏與運(yùn)行稠密網(wǎng)絡(luò)、GPU 和Cambricon-X 的性能加速比

    為了進(jìn)一步展示DyCNN 的性能優(yōu)勢(shì),圖10 展示了使用DyCNN 與GPU、Cambircon-X 分別運(yùn)行AlexNet 和VGG16 稀疏CNN 的加速比。從圖10 可以看到,DyCNN 的性能是GPU 性能2.78 倍,DyCNN性能相對(duì)于Cambricon-X 的加速比是1.48 倍。整體來(lái)說(shuō),DyCNN 可以通過(guò)高指令并行度來(lái)支持稀疏卷積神經(jīng)網(wǎng)絡(luò)的執(zhí)行,更重要的是,DyCNN 可以通過(guò)數(shù)據(jù)感知的數(shù)據(jù)翻譯和指令選擇單元過(guò)濾掉各PE 內(nèi)無(wú)效指令,使得所有PE 可以高效共享相同的片上指令,進(jìn)一步避免了2 種稀疏性帶來(lái)的耗時(shí)指令片外存儲(chǔ)器訪問(wèn)。此外,通過(guò)使用動(dòng)靜結(jié)合的負(fù)載調(diào)度策略,提升了DyCNN 的硬件利用率,進(jìn)一步去除了稀疏數(shù)據(jù)不規(guī)則分布帶來(lái)的性能影響,提升了稀疏卷積神經(jīng)網(wǎng)絡(luò)的執(zhí)行性能。

    (2)能效

    圖11(a)展示了DyCNN 在執(zhí)行稀疏卷積神經(jīng)網(wǎng)絡(luò)與執(zhí)行稠密卷積神經(jīng)網(wǎng)絡(luò)時(shí)的能效比。整體上可以看到稀疏卷積神經(jīng)網(wǎng)絡(luò)的能效平均提升了3.04倍。通過(guò)能耗分解,結(jié)果表明其中計(jì)算、數(shù)據(jù)緩存、片上數(shù)據(jù)傳輸消耗的能量分別減少了88.12%、76.80%、53.27%。

    圖11 能效比

    圖11(b)展示了DyCNN、Cambricon-X 分別和GPU 在運(yùn)行稀疏CNN 時(shí)的能效比。從圖中可以看到,與GPU 相比,DyCNN 的能效提高了約35.62 倍,Cambricon-X 的能效僅提高了30.44 倍。該實(shí)驗(yàn)結(jié)果充分展現(xiàn)了DyCNN 執(zhí)行稀疏卷積神經(jīng)網(wǎng)絡(luò)的高能效。DyCNN 的能效收益主要來(lái)源于:(1)由于通過(guò)數(shù)據(jù)感知和指令動(dòng)態(tài)過(guò)濾機(jī)制增加了高效的片上指令和數(shù)據(jù)重用,能耗較高的片外存儲(chǔ)器訪問(wèn)次數(shù)更少;(2)通過(guò)輕量級(jí)的流水線化執(zhí)行和計(jì)算單元之間負(fù)載均衡實(shí)現(xiàn)了更高的硬件利用率和整體能效。

    (3)計(jì)算部件利用率

    為了驗(yàn)證本文提出的負(fù)載均衡策略的有效性,圖12展示了VGG16 的CONV1_2 層同一行和同一列方向執(zhí)行時(shí)的PE 的計(jì)算部件利用率。從圖12中可以看到,即使PE 陣列在垂直方向上復(fù)用相同的Filters 和水平方向復(fù)用相同的IA,在實(shí)現(xiàn)負(fù)載均衡之前,每列PE 計(jì)算部件利用率仍然差異較大,可見(jiàn)Filters 和IA 的稀疏性對(duì)整體硬件利用率影響很大。

    圖12 DyCNN 運(yùn)行在VGG16 CONV1_2 層的計(jì)算部件利用率

    與之不同,從圖12 中可看出,使用本文提出的負(fù)載均衡策略可以有效實(shí)現(xiàn)PE 之間負(fù)載均衡,使得各PE 的計(jì)算部件利用率基本保持一致,各運(yùn)算單元的計(jì)算部件利用率穩(wěn)定在45%~50%之間。由此通過(guò)使用本文提出的動(dòng)靜結(jié)合的負(fù)載均衡策略,可以保證DyCNN 中PE 陣列的負(fù)載均衡,提高計(jì)算部件的利用率,提升整體性能和能效。

    (4)指令執(zhí)行次數(shù)減少比例

    為了驗(yàn)證本文稀疏去除機(jī)制的有效性,本文將密集卷積層和稀疏卷積層的指令執(zhí)行次數(shù)進(jìn)行了詳細(xì)比較。

    從圖13 中可以看到,由于2 種稀疏性并存,PE中存在著大量的冗余無(wú)效指令,通過(guò)數(shù)據(jù)翻譯和指令選擇單元互相配合,PE 陣列執(zhí)行時(shí)跳過(guò)了0 值相關(guān)無(wú)效指令,使得稀疏網(wǎng)絡(luò)的總指令執(zhí)行次數(shù)比密集網(wǎng)絡(luò)平均減少了69.21%。而稀疏數(shù)據(jù)相對(duì)較少的卷積層指令減少的次數(shù)較少,以VGG16 的CONV2_2 層為例,因?yàn)镃ONV2_2 層中無(wú)效的激活數(shù)據(jù)只有19.00%,即存在的0 值數(shù)據(jù)相對(duì)較少,對(duì)應(yīng)的無(wú)效指令也較少,所以減少的指令執(zhí)行次數(shù)也相對(duì)較少。綜上所述,本文提出的基于數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾方式可以有效減少指令執(zhí)行次數(shù),去除稀疏性帶來(lái)的影響,從而提升DyCNN 的性能和能效。

    圖13 DyCNN 運(yùn)行稠密和稀疏網(wǎng)絡(luò)的指令執(zhí)行次數(shù)減少比例(左邊的坐標(biāo)軸(柱)表示各類(lèi)指令在總減少指令中所占比例;右邊的坐標(biāo)軸(曲線)表示總指令減少比例)

    6 結(jié)論

    本文針對(duì)稀疏卷積神經(jīng)網(wǎng)絡(luò)提出了一個(gè)高效靈活的硬件加速結(jié)構(gòu)DyCNN。DyCNN 基于CGRA 設(shè)計(jì),可以充分利用其高指令并行性來(lái)支持CNN 的操作。此外,針對(duì)稀疏卷積神經(jīng)網(wǎng)絡(luò)中激活值和權(quán)值的2 種稀疏性并存的挑戰(zhàn),DyCNN 設(shè)計(jì)了基于數(shù)據(jù)感知的指令動(dòng)態(tài)過(guò)濾機(jī)制濾除了卷積運(yùn)算中大量的無(wú)效計(jì)算和訪存指令的執(zhí)行,避免了不必要的片外指令和數(shù)據(jù)訪存,減少了無(wú)效指令的執(zhí)行次數(shù),增加了各計(jì)算單元指令的片上重用效率。同時(shí)DyCNN提出了基于負(fù)載感知的動(dòng)靜結(jié)合負(fù)載均衡策略保證了PE 之間的負(fù)載均衡。實(shí)驗(yàn)表明,本文提出的加速結(jié)構(gòu)DyCNN 在性能和能耗方面具有優(yōu)勢(shì),能夠?yàn)橐?guī)模越來(lái)越大、演進(jìn)迅速的稀疏卷積神經(jīng)網(wǎng)絡(luò)加速提供有效的解決方案。

    猜你喜歡
    加速器能效權(quán)值
    輪滑加速器
    化學(xué)工業(yè)的“加速器”
    一種融合時(shí)間權(quán)值和用戶行為序列的電影推薦模型
    全民小康路上的“加速器”
    CONTENTS
    上海:穩(wěn)中有進(jìn) 能效趨優(yōu)
    關(guān)注能效
    基于權(quán)值動(dòng)量的RBM加速學(xué)習(xí)算法研究
    等待“加速器”
    淺談實(shí)現(xiàn)高能效制造的未來(lái)發(fā)展趨勢(shì)
    最新的欧美精品一区二区| 精品久久久久久久久久免费视频 | 成人国语在线视频| av国产精品久久久久影院| 亚洲专区中文字幕在线| 国产高清激情床上av| 久久香蕉国产精品| 亚洲熟女精品中文字幕| 脱女人内裤的视频| 久久久久久久国产电影| 午夜福利,免费看| 久久精品91无色码中文字幕| 伦理电影免费视频| 一区二区三区激情视频| 午夜免费观看网址| 国产欧美日韩一区二区精品| 高潮久久久久久久久久久不卡| 欧美精品啪啪一区二区三区| 精品国产一区二区三区四区第35| 亚洲五月天丁香| 色综合欧美亚洲国产小说| 成人精品一区二区免费| 天天躁夜夜躁狠狠躁躁| 老司机影院毛片| 欧美日韩福利视频一区二区| 亚洲国产欧美网| 国产精品综合久久久久久久免费 | 国产亚洲一区二区精品| www.999成人在线观看| 亚洲人成电影观看| 精品少妇久久久久久888优播| 天堂俺去俺来也www色官网| 两个人免费观看高清视频| 最近最新中文字幕大全免费视频| 成人三级做爰电影| 两性午夜刺激爽爽歪歪视频在线观看 | 国精品久久久久久国模美| 侵犯人妻中文字幕一二三四区| 久久狼人影院| 久久精品91无色码中文字幕| 高清在线国产一区| 久久久久久免费高清国产稀缺| 宅男免费午夜| 99香蕉大伊视频| 亚洲在线自拍视频| 成人av一区二区三区在线看| 老司机影院毛片| 老司机午夜十八禁免费视频| 两性午夜刺激爽爽歪歪视频在线观看 | av在线播放免费不卡| 女人久久www免费人成看片| 欧美激情高清一区二区三区| 国产精品一区二区在线观看99| 欧美在线一区亚洲| 国产欧美日韩综合在线一区二区| 国产熟女午夜一区二区三区| 成年人黄色毛片网站| 久久久国产一区二区| 精品久久蜜臀av无| 伦理电影免费视频| 91大片在线观看| 亚洲精品久久午夜乱码| 亚洲精品av麻豆狂野| 中文字幕av电影在线播放| 性色av乱码一区二区三区2| 母亲3免费完整高清在线观看| 这个男人来自地球电影免费观看| 国产麻豆69| 免费在线观看日本一区| 乱人伦中国视频| 大陆偷拍与自拍| 性少妇av在线| 美女国产高潮福利片在线看| 人人妻人人爽人人添夜夜欢视频| 精品国产一区二区久久| 欧美乱码精品一区二区三区| 久久精品aⅴ一区二区三区四区| 国产精品 国内视频| 夫妻午夜视频| 超碰97精品在线观看| 捣出白浆h1v1| 操美女的视频在线观看| 亚洲欧美精品综合一区二区三区| 日本黄色日本黄色录像| 操出白浆在线播放| av不卡在线播放| 日本欧美视频一区| 18禁裸乳无遮挡免费网站照片 | 亚洲国产精品sss在线观看 | 久久精品国产a三级三级三级| 精品高清国产在线一区| 亚洲av片天天在线观看| 9热在线视频观看99| 中文亚洲av片在线观看爽 | 老鸭窝网址在线观看| 午夜精品在线福利| 亚洲人成电影免费在线| 日本撒尿小便嘘嘘汇集6| 久久人妻av系列| 日韩免费高清中文字幕av| 超碰97精品在线观看| av欧美777| 国产精品自产拍在线观看55亚洲 | 国产99白浆流出| 久久精品熟女亚洲av麻豆精品| 亚洲av日韩精品久久久久久密| 久久精品成人免费网站| 少妇的丰满在线观看| 国产精品电影一区二区三区 | 久久精品亚洲av国产电影网| 成熟少妇高潮喷水视频| 淫妇啪啪啪对白视频| 少妇 在线观看| av在线播放免费不卡| 亚洲av电影在线进入| 一级a爱视频在线免费观看| 成人国产一区最新在线观看| 丁香欧美五月| 美女高潮到喷水免费观看| 18禁裸乳无遮挡免费网站照片 | 老司机深夜福利视频在线观看| 18禁裸乳无遮挡动漫免费视频| 三级毛片av免费| 欧美乱妇无乱码| x7x7x7水蜜桃| 精品欧美一区二区三区在线| 最新美女视频免费是黄的| 搡老熟女国产l中国老女人| 亚洲成人免费电影在线观看| 国产蜜桃级精品一区二区三区 | 黄色a级毛片大全视频| 超碰成人久久| 精品一区二区三区视频在线观看免费 | av一本久久久久| 国产亚洲精品一区二区www | 黄色片一级片一级黄色片| 丰满人妻熟妇乱又伦精品不卡| 一区二区三区激情视频| 国产成人精品在线电影| 色尼玛亚洲综合影院| 老司机靠b影院| 国产一区二区三区综合在线观看| 亚洲五月天丁香| 成在线人永久免费视频| 丰满的人妻完整版| 女人久久www免费人成看片| 欧美成狂野欧美在线观看| 色尼玛亚洲综合影院| 色婷婷久久久亚洲欧美| 亚洲国产欧美日韩在线播放| 无遮挡黄片免费观看| 捣出白浆h1v1| 日韩大码丰满熟妇| 成年女人毛片免费观看观看9 | 777久久人妻少妇嫩草av网站| 国产高清视频在线播放一区| 日韩欧美一区视频在线观看| 极品教师在线免费播放| 男人操女人黄网站| 一级片'在线观看视频| 99国产精品99久久久久| 国产亚洲一区二区精品| 大香蕉久久网| 欧洲精品卡2卡3卡4卡5卡区| 自线自在国产av| 性色av乱码一区二区三区2| 正在播放国产对白刺激| 91成人精品电影| 亚洲精华国产精华精| 精品少妇久久久久久888优播| 精品亚洲成a人片在线观看| cao死你这个sao货| 黄色毛片三级朝国网站| 他把我摸到了高潮在线观看| 最近最新免费中文字幕在线| 91国产中文字幕| 高清视频免费观看一区二区| 黄色视频不卡| 欧美精品人与动牲交sv欧美| 欧美黄色淫秽网站| 久久久久久久久免费视频了| 激情在线观看视频在线高清 | 在线免费观看的www视频| 高清黄色对白视频在线免费看| 欧美精品一区二区免费开放| 校园春色视频在线观看| 韩国av一区二区三区四区| 一进一出抽搐gif免费好疼 | 国产一区二区三区综合在线观看| 夜夜爽天天搞| 久久久久国产一级毛片高清牌| 国产亚洲精品一区二区www | 亚洲 欧美一区二区三区| 国产男靠女视频免费网站| 午夜福利在线观看吧| 精品一区二区三区av网在线观看| 日韩 欧美 亚洲 中文字幕| 欧美精品一区二区免费开放| 下体分泌物呈黄色| 国产av精品麻豆| 欧美大码av| 亚洲少妇的诱惑av| 免费观看a级毛片全部| 国产精品久久久久成人av| 一本一本久久a久久精品综合妖精| 色婷婷av一区二区三区视频| 亚洲精品国产区一区二| 一级片免费观看大全| 国产99久久九九免费精品| 啦啦啦免费观看视频1| 欧美色视频一区免费| 老司机亚洲免费影院| 天堂动漫精品| 国内久久婷婷六月综合欲色啪| 亚洲av成人不卡在线观看播放网| 亚洲精华国产精华精| 日日摸夜夜添夜夜添小说| 国产又爽黄色视频| x7x7x7水蜜桃| 一进一出抽搐gif免费好疼 | 久久热在线av| 美女午夜性视频免费| 久久香蕉激情| 欧美不卡视频在线免费观看 | 日韩有码中文字幕| 一二三四在线观看免费中文在| 亚洲中文av在线| 国产精品久久电影中文字幕 | 久久天躁狠狠躁夜夜2o2o| 亚洲av成人一区二区三| 亚洲精品美女久久av网站| 精品午夜福利视频在线观看一区| 日韩免费av在线播放| av欧美777| 久久久久精品人妻al黑| 在线观看日韩欧美| 欧美精品啪啪一区二区三区| 99精国产麻豆久久婷婷| 淫妇啪啪啪对白视频| 精品一区二区三卡| 热99re8久久精品国产| 在线观看66精品国产| 色94色欧美一区二区| av片东京热男人的天堂| 久久久久久久午夜电影 | 一二三四社区在线视频社区8| 欧美精品人与动牲交sv欧美| 欧美久久黑人一区二区| 国产精品免费视频内射| 亚洲av成人不卡在线观看播放网| 亚洲av日韩精品久久久久久密| 最新在线观看一区二区三区| 超碰97精品在线观看| 大型av网站在线播放| 真人做人爱边吃奶动态| 日本黄色日本黄色录像| 久久久久久久久免费视频了| 国产淫语在线视频| 老司机午夜福利在线观看视频| 女人被躁到高潮嗷嗷叫费观| 欧美日韩成人在线一区二区| a级毛片黄视频| 精品久久久久久久毛片微露脸| xxx96com| 国产精品国产av在线观看| 亚洲成a人片在线一区二区| 在线观看www视频免费| 久久精品国产亚洲av高清一级| 真人做人爱边吃奶动态| 国产欧美亚洲国产| 亚洲情色 制服丝袜| 国产一区有黄有色的免费视频| 久久香蕉激情| 亚洲精品中文字幕在线视频| 久久久久久久久久久久大奶| 18禁黄网站禁片午夜丰满| 99香蕉大伊视频| 国产男靠女视频免费网站| 精品乱码久久久久久99久播| a级毛片在线看网站| 老司机福利观看| 老司机在亚洲福利影院| 另类亚洲欧美激情| 超色免费av| 99精品在免费线老司机午夜| 999精品在线视频| 欧美日韩中文字幕国产精品一区二区三区 | 夜夜夜夜夜久久久久| 天天躁日日躁夜夜躁夜夜| 一a级毛片在线观看| 中文欧美无线码| 国精品久久久久久国模美| 另类亚洲欧美激情| 亚洲综合色网址| 久久精品国产a三级三级三级| 欧美日韩视频精品一区| 国产精品久久久久久精品古装| 最近最新免费中文字幕在线| 欧美激情久久久久久爽电影 | 99国产精品免费福利视频| 国产精品欧美亚洲77777| 亚洲成人免费av在线播放| bbb黄色大片| 妹子高潮喷水视频| 香蕉国产在线看| av免费在线观看网站| 一夜夜www| 久久精品国产综合久久久| 精品人妻熟女毛片av久久网站| 亚洲欧洲精品一区二区精品久久久| 国产不卡一卡二| x7x7x7水蜜桃| av天堂在线播放| av福利片在线| 久久久久久久国产电影| 日本一区二区免费在线视频| 三上悠亚av全集在线观看| 午夜精品在线福利| 国产成人欧美| 午夜精品久久久久久毛片777| 成人特级黄色片久久久久久久| 啪啪无遮挡十八禁网站| 国产精品98久久久久久宅男小说| av网站免费在线观看视频| 国产成+人综合+亚洲专区| 午夜福利免费观看在线| 国产成人精品久久二区二区免费| 露出奶头的视频| 亚洲 欧美一区二区三区| 欧美激情 高清一区二区三区| 午夜久久久在线观看| 亚洲国产毛片av蜜桃av| 婷婷丁香在线五月| 精品视频人人做人人爽| 多毛熟女@视频| 精品一区二区三卡| 日韩欧美在线二视频 | 夜夜躁狠狠躁天天躁| 欧美老熟妇乱子伦牲交| 久久热在线av| www.999成人在线观看| 两个人看的免费小视频| 欧美黄色片欧美黄色片| 怎么达到女性高潮| 国产精品九九99| 人妻丰满熟妇av一区二区三区 | 夫妻午夜视频| 日韩 欧美 亚洲 中文字幕| 国产精品成人在线| 在线国产一区二区在线| av欧美777| 免费不卡黄色视频| videos熟女内射| 久久久精品国产亚洲av高清涩受| 日韩制服丝袜自拍偷拍| 国产成人一区二区三区免费视频网站| 亚洲全国av大片| 免费在线观看黄色视频的| 一进一出抽搐gif免费好疼 | 亚洲欧美一区二区三区久久| 久久人妻福利社区极品人妻图片| 久久精品亚洲熟妇少妇任你| 亚洲av欧美aⅴ国产| 欧美不卡视频在线免费观看 | 国产精品免费大片| 日韩欧美一区视频在线观看| 欧美大码av| 国产精品免费一区二区三区在线 | 日韩精品免费视频一区二区三区| svipshipincom国产片| 两个人免费观看高清视频| 国产精品 欧美亚洲| 精品人妻在线不人妻| 国产精品欧美亚洲77777| 午夜福利乱码中文字幕| 欧美精品av麻豆av| 日韩欧美三级三区| 精品少妇久久久久久888优播| 国产欧美日韩精品亚洲av| 看免费av毛片| 午夜福利免费观看在线| 香蕉久久夜色| 国产成人精品无人区| 成年人午夜在线观看视频| а√天堂www在线а√下载 | 欧美色视频一区免费| 亚洲精品中文字幕在线视频| bbb黄色大片| 韩国精品一区二区三区| 亚洲成国产人片在线观看| 精品久久久久久,| 99久久综合精品五月天人人| 亚洲专区字幕在线| 天堂中文最新版在线下载| www日本在线高清视频| 狠狠狠狠99中文字幕| 又黄又爽又免费观看的视频| 日韩人妻精品一区2区三区| 国产精品98久久久久久宅男小说| 亚洲人成电影观看| 黄色 视频免费看| 国产精品美女特级片免费视频播放器 | 日日夜夜操网爽| av有码第一页| 日韩免费高清中文字幕av| 日本a在线网址| 欧美不卡视频在线免费观看 | av网站在线播放免费| av在线播放免费不卡| svipshipincom国产片| 久久精品国产清高在天天线| 欧美最黄视频在线播放免费 | 国产精品一区二区在线观看99| 久久久久精品国产欧美久久久| 日日夜夜操网爽| 动漫黄色视频在线观看| 国产亚洲精品久久久久5区| 精品久久久久久久久久免费视频 | 国产在线精品亚洲第一网站| 久热这里只有精品99| 国产97色在线日韩免费| 久久婷婷成人综合色麻豆| 欧美日韩中文字幕国产精品一区二区三区 | 国产在线精品亚洲第一网站| 国产真人三级小视频在线观看| 国产成人av教育| 动漫黄色视频在线观看| 亚洲五月天丁香| 又黄又爽又免费观看的视频| 91成年电影在线观看| xxx96com| 国产主播在线观看一区二区| 操美女的视频在线观看| 一进一出抽搐gif免费好疼 | 日本wwww免费看| 热re99久久精品国产66热6| 夜夜爽天天搞| 欧美 亚洲 国产 日韩一| videosex国产| 窝窝影院91人妻| www.999成人在线观看| 久久人妻av系列| 久久久精品免费免费高清| 很黄的视频免费| 丰满饥渴人妻一区二区三| 日本a在线网址| 午夜福利影视在线免费观看| 国产高清视频在线播放一区| 男女午夜视频在线观看| 男女免费视频国产| 99精品在免费线老司机午夜| 欧美人与性动交α欧美软件| 成在线人永久免费视频| 9热在线视频观看99| 久久性视频一级片| 国产精品影院久久| 免费久久久久久久精品成人欧美视频| 高清视频免费观看一区二区| 男男h啪啪无遮挡| 国产亚洲精品久久久久5区| 欧美精品亚洲一区二区| 亚洲一卡2卡3卡4卡5卡精品中文| 久久久国产欧美日韩av| 丰满人妻熟妇乱又伦精品不卡| 十八禁网站免费在线| 午夜91福利影院| 亚洲黑人精品在线| 亚洲国产欧美日韩在线播放| 亚洲成国产人片在线观看| 两个人免费观看高清视频| 亚洲精品久久午夜乱码| 91av网站免费观看| 国产亚洲精品久久久久久毛片 | 不卡一级毛片| 欧美丝袜亚洲另类 | 国产在线一区二区三区精| 欧美成人免费av一区二区三区 | 免费久久久久久久精品成人欧美视频| 男女床上黄色一级片免费看| 欧美乱码精品一区二区三区| 久久精品91无色码中文字幕| 国产高清视频在线播放一区| 欧美一级毛片孕妇| 99精品欧美一区二区三区四区| 午夜日韩欧美国产| 欧美在线一区亚洲| 黄色 视频免费看| 最新在线观看一区二区三区| 午夜免费观看网址| 亚洲av片天天在线观看| 男女下面插进去视频免费观看| 亚洲精品在线美女| 国产97色在线日韩免费| 亚洲视频免费观看视频| 精品卡一卡二卡四卡免费| 高清黄色对白视频在线免费看| 精品国产超薄肉色丝袜足j| 极品人妻少妇av视频| av在线播放免费不卡| 高潮久久久久久久久久久不卡| 叶爱在线成人免费视频播放| 麻豆乱淫一区二区| 久久久精品国产亚洲av高清涩受| 国产高清激情床上av| 亚洲在线自拍视频| 99精国产麻豆久久婷婷| 一边摸一边做爽爽视频免费| 老司机午夜十八禁免费视频| 在线永久观看黄色视频| 在线观看免费高清a一片| 男女下面插进去视频免费观看| 国产无遮挡羞羞视频在线观看| 亚洲免费av在线视频| 亚洲视频免费观看视频| 久久精品国产综合久久久| 国产精品久久视频播放| 99久久人妻综合| 法律面前人人平等表现在哪些方面| 日韩三级视频一区二区三区| 无限看片的www在线观看| 亚洲人成电影观看| 女人高潮潮喷娇喘18禁视频| 男女高潮啪啪啪动态图| 午夜福利在线免费观看网站| 色婷婷久久久亚洲欧美| 69精品国产乱码久久久| av在线播放免费不卡| 国产精品电影一区二区三区 | 999久久久精品免费观看国产| 最新在线观看一区二区三区| 18禁国产床啪视频网站| 亚洲一区二区三区不卡视频| 一区二区三区精品91| 免费看a级黄色片| 欧美精品av麻豆av| 俄罗斯特黄特色一大片| 一区二区三区激情视频| 久久久国产成人精品二区 | 欧美精品一区二区免费开放| 极品少妇高潮喷水抽搐| 国产aⅴ精品一区二区三区波| 国产成人精品在线电影| 精品少妇一区二区三区视频日本电影| 亚洲欧美激情综合另类| 国产欧美日韩一区二区三| 丝袜美足系列| a在线观看视频网站| 国产野战对白在线观看| 91老司机精品| 在线看a的网站| 国产精品综合久久久久久久免费 | 日韩人妻精品一区2区三区| 精品一区二区三卡| 99精品在免费线老司机午夜| 天天操日日干夜夜撸| 国产欧美日韩一区二区三区在线| 国产激情久久老熟女| 国产一区二区激情短视频| av免费在线观看网站| aaaaa片日本免费| 亚洲,欧美精品.| 国产精品久久久久成人av| 亚洲色图 男人天堂 中文字幕| 欧美在线黄色| 国产成人免费无遮挡视频| 日韩人妻精品一区2区三区| 亚洲精品在线观看二区| 两个人看的免费小视频| 亚洲国产精品一区二区三区在线| 老熟妇仑乱视频hdxx| 色尼玛亚洲综合影院| 极品教师在线免费播放| 国产一区二区三区视频了| 高清av免费在线| 人人妻人人澡人人爽人人夜夜| 女同久久另类99精品国产91| 亚洲成国产人片在线观看| 国产一区二区三区综合在线观看| 成年版毛片免费区| 性少妇av在线| www.999成人在线观看| 欧美日韩av久久| aaaaa片日本免费| 美女高潮喷水抽搐中文字幕| 王馨瑶露胸无遮挡在线观看| 在线观看免费日韩欧美大片| 精品亚洲成国产av| 亚洲欧美日韩高清在线视频| 啪啪无遮挡十八禁网站| 亚洲少妇的诱惑av| 黄色怎么调成土黄色| 国产精品 国内视频| videos熟女内射| 精品国内亚洲2022精品成人 | 99国产精品一区二区三区| 久99久视频精品免费| 午夜免费观看网址| 欧美国产精品va在线观看不卡| 国产熟女午夜一区二区三区| 国产av一区二区精品久久| 成人永久免费在线观看视频| 午夜精品久久久久久毛片777| 女人高潮潮喷娇喘18禁视频| 国产成人啪精品午夜网站| 男女床上黄色一级片免费看| 真人做人爱边吃奶动态| 国产亚洲精品久久久久5区| 亚洲精品一卡2卡三卡4卡5卡| 午夜精品在线福利| 成人18禁高潮啪啪吃奶动态图| 亚洲成人免费av在线播放| 欧美国产精品一级二级三级| 老汉色av国产亚洲站长工具| 免费一级毛片在线播放高清视频 | 婷婷丁香在线五月|