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

    基于粗粒度數(shù)據(jù)流架構(gòu)的稀疏卷積神經(jīng)網(wǎng)絡(luò)加速

    2021-07-23 02:04:32吳欣欣李文明范東睿
    關(guān)鍵詞:粗粒度數(shù)據(jù)流加速器

    吳欣欣 歐 焱 李文明 王 達(dá) 張 浩 范東睿

    1(計(jì)算機(jī)體系結(jié)構(gòu)國家重點(diǎn)實(shí)驗(yàn)室(中國科學(xué)院計(jì)算技術(shù)研究所) 北京 100190)

    2(中國科學(xué)院計(jì)算技術(shù)研究所 北京 100190)

    3(中國科學(xué)院大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 北京 100049)

    由于嚴(yán)格的計(jì)算、存儲(chǔ)、能耗等資源的限制,領(lǐng)域?qū)S眉铀倨鱗1-2]成為CPU和GPU的可替代方案.隨著應(yīng)用的不斷發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)模型也隨之變得龐大和復(fù)雜.例如Alexnet[3]和VGG16[4]中分別包含6 000萬、1.38億個(gè)參數(shù).龐大的參數(shù)對加速器的計(jì)算、訪存產(chǎn)生沉重的負(fù)擔(dān).為有效緩解這些問題,提出了很多減少模型參數(shù)的方法,如剪枝[5]、低秩分解[6]等.這些方法利用模型參數(shù)的冗余特性[7]將密集網(wǎng)絡(luò)變成稀疏網(wǎng)絡(luò).由于CPU和GPU處理稀疏網(wǎng)絡(luò)效率很低,近年來出現(xiàn)了許多領(lǐng)域?qū)S玫南∈杈W(wǎng)絡(luò)加速器[8-13],它們能夠充分發(fā)揮稀疏網(wǎng)絡(luò)計(jì)算和存儲(chǔ)的優(yōu)勢從而實(shí)現(xiàn)高能效.

    然而由于算法和結(jié)構(gòu)的強(qiáng)耦合性,這些領(lǐng)域?qū)S眉铀倨鳡奚遂`活的結(jié)構(gòu)特性,這使它們很難應(yīng)用新的算法.例如Dadiannao[14]加速器由于沒有稀疏支持所以不能加速稀疏網(wǎng)絡(luò).Cnvlution[8]則是完全修改Dadiannao的結(jié)構(gòu)以實(shí)現(xiàn)對稀疏網(wǎng)絡(luò)的支持.SCNN[9],EIE[10],ESE[11]等加速器在很好地支持了稀疏網(wǎng)絡(luò)后卻不支持密集網(wǎng)絡(luò).

    粗粒度數(shù)據(jù)流架構(gòu)通過靈活的指令調(diào)度實(shí)現(xiàn)不同的應(yīng)用.其在大數(shù)據(jù)、科學(xué)計(jì)算[15]、神經(jīng)網(wǎng)絡(luò)[16]等領(lǐng)域的應(yīng)用中表現(xiàn)出良好的靈活性、性能和能效優(yōu)勢.粗粒度數(shù)據(jù)流架構(gòu)由相對簡單的控制電路組成處理單元陣列,陣列之間可以直接通信,從而避免了對內(nèi)存的頻繁訪問.基于一種類數(shù)據(jù)流執(zhí)行模型——Codelet執(zhí)行模型[17],應(yīng)用程序被編譯器編譯為Codelet有向圖(Codelet directed graph, CDG)映射在處理單元陣列中.在CDG中,Codelet由指令組成,有向邊則表示Codelet之間的數(shù)據(jù)依賴性.當(dāng)Codelet中所需的數(shù)據(jù)和資源都滿足時(shí),Codelet就會(huì)被觸發(fā)執(zhí)行,這種執(zhí)行模式最大程度地提高了Codelet指令級并行性和數(shù)據(jù)級并行性.本文基于粗粒度數(shù)據(jù)流架構(gòu),通過研究稀疏網(wǎng)絡(luò)中權(quán)值的數(shù)據(jù)特征及指令特征,優(yōu)化網(wǎng)絡(luò)映射和執(zhí)行方式,最大程度地提高結(jié)構(gòu)效益.

    在粗粒度數(shù)據(jù)流架構(gòu)中,處理單元陣列運(yùn)行時(shí)首先經(jīng)過初始化將CDG中的Codelet指令從內(nèi)存加載至處理單元陣列的指令緩存區(qū)中.當(dāng)某個(gè)Codelet所需的條件滿足后,內(nèi)部的指令逐條被發(fā)射執(zhí)行.對于CNN的密集卷積層,每個(gè)通道的卷積操作以CDG圖的形式映射到處理單元陣列上.由于規(guī)則的計(jì)算特性,不同通道形成的CDG圖內(nèi)的Codelet指令是相同的,所以Codelet指令只需加載一次即可在所有通道中實(shí)現(xiàn)卷積運(yùn)算.

    然而,當(dāng)處理單元陣列執(zhí)行使用剪枝方法如文獻(xiàn)[5]獲得的稀疏網(wǎng)絡(luò)時(shí),會(huì)產(chǎn)生2個(gè)問題:1)現(xiàn)有的逐條執(zhí)行指令方式使得權(quán)值中存在的0值相關(guān)指令無法自動(dòng)跳過,從而產(chǎn)生了無效的計(jì)算,浪費(fèi)了計(jì)算資源.2)當(dāng)稀疏網(wǎng)絡(luò)被映射在處理單元陣列上時(shí),由于不規(guī)則的結(jié)構(gòu)特性,造成非0權(quán)值相關(guān)指令分布不均衡的現(xiàn)象.它們都增加了網(wǎng)絡(luò)的執(zhí)行時(shí)間,阻礙了網(wǎng)絡(luò)性能的提升.

    基于這2個(gè)問題,本文基于粗粒度數(shù)據(jù)流架構(gòu)分別使用2種策略解決它們并實(shí)現(xiàn)稀疏網(wǎng)絡(luò)的加速.本文的貢獻(xiàn)有3個(gè)方面:

    1) 通過分析稀疏網(wǎng)絡(luò)中卷積層權(quán)值的數(shù)據(jù)特征和指令特征,根據(jù)數(shù)據(jù)特征生成相應(yīng)指令的控制信息,然后在每個(gè)處理單元內(nèi)增加指令控制單元并根據(jù)指令的控制信息檢測并跳過0值相關(guān)的無效指令,從而去除無效數(shù)據(jù)運(yùn)算.

    2) 通過分析現(xiàn)有的指令映射和執(zhí)行方式,并根據(jù)稀疏權(quán)值的數(shù)據(jù)特征,設(shè)計(jì)了適用于稀疏卷積網(wǎng)絡(luò)的負(fù)載均衡的指令映射算法,從而保證了處理單元陣列的負(fù)載均衡.

    3) 通過對這些方法實(shí)施Benchmark,本文實(shí)現(xiàn)的稀疏卷積層比密集卷積層具有平均1.55倍的性能提升以及63.77%的能耗減少.同時(shí)與GPU(cuSparse)相比,Alexnet和VGG16網(wǎng)絡(luò)分別獲得2.39倍和2.28倍的性能提升.與Cambricon-X相比,分別獲得1.14倍和1.23倍的性能提升.

    1 相關(guān)研究

    稀疏卷積神經(jīng)網(wǎng)絡(luò)的出現(xiàn)有效地緩解了硬件資源的需求.為了充分利用稀疏網(wǎng)絡(luò)在存儲(chǔ)、計(jì)算方面的優(yōu)勢,出現(xiàn)了很多加速稀疏網(wǎng)絡(luò)的專用加速器.這些專用神經(jīng)網(wǎng)絡(luò)加速器利用稀疏網(wǎng)絡(luò)中激活和/或權(quán)值數(shù)據(jù)的稀疏特征,通過不傳輸0值數(shù)據(jù)或使用數(shù)據(jù)選擇模塊以跳過0值數(shù)據(jù)從而消除0值計(jì)算,最終實(shí)現(xiàn)稀疏網(wǎng)絡(luò)的加速.

    EIE[10]利用稀疏網(wǎng)絡(luò)中權(quán)值稀疏和激活稀疏,結(jié)合權(quán)值共享的壓縮方法設(shè)計(jì)了稀疏矩陣向量乘單元,僅將非0操作數(shù)傳給運(yùn)算單元.然而它只加速了全連接層,未對卷積層實(shí)現(xiàn)加速.Eyeriss[18]基于最小化數(shù)據(jù)移動(dòng)功耗的數(shù)據(jù)流模型,實(shí)現(xiàn)了卷積運(yùn)算中的所有數(shù)據(jù)的復(fù)用,同時(shí)還通過門控邏輯檢測激活數(shù)據(jù)中的0值并跳過它實(shí)現(xiàn)了加速器的節(jié)能效果.然而它僅具有節(jié)能效果而沒有加速效果,同時(shí)也不能對權(quán)值稀疏的網(wǎng)絡(luò)進(jìn)行加速.為了實(shí)現(xiàn)稀疏加速,Cnvlutin[8]完全修改Dadiannao[14]的微結(jié)構(gòu),解耦了Dadiannao的多運(yùn)算通道,并利用激活稀疏,僅傳遞非0激活值給運(yùn)算單元,實(shí)現(xiàn)了卷積層的加速.但是它卻沒有利用權(quán)值的稀疏.這些加速器或者加速了全連接層(如EIE),或者利用了激活的稀疏性實(shí)現(xiàn)了節(jié)能(Eyeriss)和卷積層的加速(Cnvlutin),而沒有實(shí)現(xiàn)卷積層加速或者利用權(quán)值稀疏性實(shí)現(xiàn)卷積層的加速.

    Cambricon-X[12]利用權(quán)值的稀疏性,設(shè)計(jì)了數(shù)據(jù)選擇硬件模塊實(shí)現(xiàn)了非0數(shù)據(jù)的篩選,加速了卷積層和全連接層.Cambricon-S[13]使用軟硬件協(xié)同設(shè)計(jì),在軟件層面實(shí)現(xiàn)粗粒度的剪枝方法消除網(wǎng)絡(luò)的不規(guī)則性,在硬件層面設(shè)計(jì)神經(jīng)元和突觸的選擇單元,實(shí)現(xiàn)卷積層和全連接層的加速.SCNN[9]基于笛卡兒乘積,對卷積層和全連接層的稀疏權(quán)值和激活進(jìn)行加速.雖然這些專用加速器都取得了很好的性能和功耗,但是由于算法和結(jié)構(gòu)的強(qiáng)耦合特性,它們喪失了靈活性而無法適用新的算法.與這些加速器對比,數(shù)據(jù)流體系結(jié)構(gòu)提供了更高的靈活性和更廣的應(yīng)用范圍.針對不同的應(yīng)用特點(diǎn),它可以用于數(shù)據(jù)中心實(shí)現(xiàn)FFT,Stencil等高性能應(yīng)用[19],也可以用于實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的加速[20].

    文本基于粗粒度數(shù)據(jù)流架構(gòu),其通過靈活的指令調(diào)度可以有效支持不同的應(yīng)用,同時(shí)依據(jù)應(yīng)用的特點(diǎn)充分利用其指令和數(shù)據(jù)的并行性.

    2 背 景

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

    數(shù)據(jù)流架構(gòu)分為細(xì)粒度數(shù)據(jù)流架構(gòu)和粗粒度數(shù)據(jù)流架構(gòu).在處理單元陣列之間2種數(shù)據(jù)流架構(gòu)都使用由操作數(shù)驅(qū)動(dòng)的數(shù)據(jù)流執(zhí)行模式,即一旦指令所需的操作數(shù)可用,則指令被允許執(zhí)行[21].而在處理單元內(nèi)部,細(xì)粒度數(shù)據(jù)流仍使用數(shù)據(jù)流執(zhí)行模式,如TRIPS[22],WaveScalar[23].粗粒度數(shù)據(jù)流則使用控制流執(zhí)行模式,即使用程序控制器(program counter, PC)執(zhí)行指令,例如TERAFLUX[24],Runnemede[25].與細(xì)粒度數(shù)據(jù)流相比,粗粒度數(shù)據(jù)流具有控制流易編譯和數(shù)據(jù)流并行性的優(yōu)點(diǎn),所以本文的研究基于粗粒度數(shù)據(jù)流架構(gòu).

    圖1是一個(gè)實(shí)例化的粗粒度數(shù)據(jù)流加速器(dataflow processing unit, DPU),它由微控制器(micro controller, MicC)、處理單元(processing element, PE)陣列和片上網(wǎng)絡(luò)(network on chip, NoC)組成.微控制器MicC和PE陣列通過2D Mesh網(wǎng)絡(luò)相互通信.而在PE內(nèi)部,主要由流水執(zhí)行單元(pipeline execution unit)、Codelet選擇控制器(codelet choosing controller)、指令緩沖(instruction buffer)、數(shù)據(jù)緩沖(operand buffer)以及Codelet狀態(tài)寄存器(codelet status register)組成.

    Fig. 1 Structure of the coarse-grained dataflow accelerator圖1 粗粒度數(shù)據(jù)流加速器的結(jié)構(gòu)

    MicC管理PE陣列的執(zhí)行過程,并且還負(fù)責(zé)與主機(jī)(host)進(jìn)行通信.當(dāng)主機(jī)向MicC發(fā)送啟動(dòng)信號時(shí),MicC啟動(dòng)PE陣列,PE陣列完成初始化工作,即將內(nèi)存(memory)中的Codelet指令加載至PE的指令緩沖區(qū)中,PE陣列執(zhí)行時(shí)根據(jù)Codelet狀態(tài)寄存器選擇就緒的Codelet,并從指令緩沖區(qū)中獲取所選的Codelet指令,送入流水執(zhí)行單元逐條執(zhí)行指令.當(dāng)PE陣列執(zhí)行結(jié)束后,MicC還會(huì)收集PE的執(zhí)行信息,并向主機(jī)發(fā)送結(jié)束信息.

    為了實(shí)現(xiàn)PE內(nèi)計(jì)算單元的高利用率,應(yīng)用被編譯成Codelet模型.Codelet模型是一種類數(shù)據(jù)流并行執(zhí)行模型[17].基于該模型,所有程序被編譯成多個(gè)Codelet,每個(gè)Codelet內(nèi)部由一系列指令組成,所有的Codelet根據(jù)數(shù)據(jù)依賴性被連接成Codelet圖,然后被映射在PE陣列中,如圖2所示.當(dāng)1個(gè)Codelet所需的數(shù)據(jù)和資源滿足后,就可以被發(fā)射和執(zhí)行.基于Codelet的執(zhí)行模式最大化Codelet級指令并行和數(shù)據(jù)級并行.

    Fig. 2 Codelet graph and mapping圖2 Codelet圖和映射

    DPU的指令格式如圖3所示,每條指令由指令碼、源操作數(shù)索引、目的操作數(shù)索引組成.DPU指令包含了基本的運(yùn)算指令(Add,Sub,Mul,Madd)、訪存指令(Load,Store)以及PE之間直接通信指令(Copy).

    Fig. 3 Instruction format圖3 指令格式

    2.2 卷積神經(jīng)網(wǎng)絡(luò)

    CNN主要由多個(gè)卷積層組成,它們占據(jù)整個(gè)網(wǎng)絡(luò)處理的約85%的計(jì)算時(shí)間[26],這些卷積層執(zhí)行高維的卷積計(jì)算.卷積層在輸入特征圖(input feature map, Ifmap)上應(yīng)用濾波器(Filter)以生成輸出特征圖(onput feature map, Ofmap).卷積層的輸入數(shù)據(jù)由1組2D輸入特征圖組成,每個(gè)特征圖稱為1個(gè)通道(channel),多個(gè)通道的輸入組成1個(gè)輸入批次(batch),每個(gè)通道的特征值都與1個(gè)不同的2D濾波器進(jìn)行卷積運(yùn)算,所有通道上的每個(gè)點(diǎn)的卷積結(jié)果相加得到1個(gè)通道的Ofmap.表1顯示了卷積層運(yùn)算的參數(shù)描述,卷積層的計(jì)算:

    (1)

    Table 1 Network for Different Pruning Methods表1 卷積層參數(shù)描述

    基于Codelet模型,卷積層的每個(gè)通道運(yùn)算以CDG圖的形式被映射到PE陣列中順序執(zhí)行.每個(gè)通道相同的執(zhí)行方式使得它們共用1套Codelet指令,如圖4展示了2個(gè)通道執(zhí)行1次卷積操作需要的指令.

    Fig. 4 Convolution instructions for two channels圖4 2個(gè)通道的卷積運(yùn)算指令

    結(jié)合圖3的指令格式和卷積的計(jì)算式(1),在通道1中,Ifmap需要4個(gè)Load指令(Inst1到Inst4),它們具有相同的基地址(0x0),不同的地址偏移量(分別為0,1,3,4)和不同的操作數(shù)索引index0(分別用I0,I1,I2,I3表示).濾波器Filter也需要4個(gè)Load指令(Inst5到Inst8),它們也具有相同的基址(0x3000),不同的地址偏移量(分別為0,1,2,3)和不同的操作數(shù)索引index0(分別用W0,W1,W2,W3表示).執(zhí)行乘法累加運(yùn)算需要4個(gè)Madd指令(Inst9到Inst12),它們具有相同的操作數(shù)索引index2(O0),不同的操作數(shù)索引index0(分別為I0,I1,I2,I3)和不同的操作數(shù)索引index1(分別為W0,W1,W2,W3).卷積計(jì)算完成后,需要Store指令(Inst13)來存儲(chǔ)Ofmap值.與通道1相比,通道2通過使用不同的數(shù)據(jù)執(zhí)行相同的卷積運(yùn)算,該數(shù)據(jù)由通道偏移量、指令中的地址偏移量和基址索引index0獲得.對于每個(gè)通道相同位置的數(shù)據(jù),其通道偏移量不同(Ifmap分別為0x0,0x400,濾波器Filter分別為0x0,0x100),但是由于操作數(shù)索引index0,地址偏移量以及基地址索引是相同的,所以它們的指令也是相同的.例如,2個(gè)通道的Inst1指令的基地址、地址偏移和操作數(shù)index0分別為0x0,0,I0.因此,只需要從內(nèi)存加載1次指令,卷積操作就可以持續(xù)執(zhí)行,從而確保了PE陣列計(jì)算資源的充分利用.

    于此同時(shí),為了減少內(nèi)存訪問,節(jié)省數(shù)據(jù)移動(dòng)能耗,需要充分利用數(shù)據(jù)復(fù)用的特性[18].在PE陣列中,每個(gè)PE內(nèi)可實(shí)現(xiàn)卷積復(fù)用,PE之間可通過Copy指令實(shí)現(xiàn)Ifmap和Filter復(fù)用.圖5顯示了在6個(gè)PE中實(shí)現(xiàn)1個(gè)Ifmap與2個(gè)Filter的卷積操作,在圖5中,PE1,PE3,PE5使用相同的濾波器Filter1與Ifmap的不同行執(zhí)行卷積操作得到Ofmap1的不同行.同樣地,PE2,PE4,PE6使用相同的濾波器Filter2與Ifmap的不同行執(zhí)行卷積操作得到Ofmap2的不同行.由于它們使用了同一個(gè)Ifmap,所以在PE之間還可以復(fù)用Ifmap.在每個(gè)PE內(nèi)部濾波器以滑動(dòng)窗口形式應(yīng)用在Ifmap上計(jì)算Ofmap一行的所有值.不同數(shù)據(jù)的復(fù)用減少了內(nèi)存訪問,節(jié)省了數(shù)據(jù)移動(dòng)能耗.

    Fig. 5 Data reuse opportunities in PE arrays圖5 PE陣列中存在的數(shù)據(jù)復(fù)用機(jī)會(huì)

    由于大模型CNN對硬件資源的挑戰(zhàn),研究人員提出許多壓縮CNN模型的方法(例如,剪枝[5]、低秩[6]、短位寬[27]),這些方法極大地減小了模型大小,且對結(jié)果精度不產(chǎn)損失或者僅有輕微的損失.這其中,使用修剪方法生成的稀疏網(wǎng)絡(luò)是有效的方法之一.先進(jìn)的剪枝方法[5]通過訓(xùn)練—剪枝—再訓(xùn)練的步驟分別將Alexnet和VGG16的網(wǎng)絡(luò)參數(shù)減少到原來的11%和7%.

    3 稀疏卷積神經(jīng)網(wǎng)絡(luò)指令執(zhí)行分析

    3.1 存在無效指令

    在稀疏卷積神經(jīng)網(wǎng)絡(luò)中,剪枝操作將網(wǎng)絡(luò)中的一些權(quán)值置為0.基于Codelet模型,DPU編譯器將每個(gè)卷積層應(yīng)用編譯為CDG圖映射在PE陣列中,于是在Codelet中存在與0值相關(guān)的指令.由于卷積神經(jīng)網(wǎng)絡(luò)主要為乘加運(yùn)算,而0乘任何數(shù)都為0,所以稀疏卷積的運(yùn)算中存在0值相關(guān)指令的加載和執(zhí)行以及0值數(shù)據(jù)的加載和計(jì)算,這些可以被認(rèn)為是無效數(shù)據(jù)的指令和數(shù)據(jù).執(zhí)行無效的指令和數(shù)據(jù)不僅占用了加速器的硬件資源,造成資源浪費(fèi)的同時(shí)還造成加速器的功耗的增加以及PE陣列執(zhí)行時(shí)間延長.

    圖6展示的是1個(gè)PE內(nèi)執(zhí)行1次卷積運(yùn)算所需的指令,可以看到為了得到Ofmap的1個(gè)值,Ifmap的I0到I8以及Filter的W0到W8需要Load指令(Inst1到Inst18)將數(shù)據(jù)從內(nèi)存加載至PE中,接著還需要Madd指令(Inst19到Inst27)執(zhí)行卷積運(yùn)算.在這些指令中,由于W2,W3,W5,W7的值均為0,所以Inst12,Inst13,Inst15,Inst17為無效的Load指令,相應(yīng)的Madd指令I(lǐng)nst21,Inst22,Inst24,Inst26也為無效的指令.為了去除0值數(shù)據(jù)的加載和計(jì)算,需要消除與0值有關(guān)的指令.然而在PE陣列中,Codelet內(nèi)指令逐條執(zhí)行的方式無法跳過這些無效指令,從而使它們占用了PE陣列的計(jì)算資源,造成計(jì)算資源的浪費(fèi),也不能加速稀疏網(wǎng)絡(luò)的執(zhí)行過程.

    Fig. 6 Instructions for calculating an output value圖6 計(jì)算一個(gè)輸出值需要的指令

    如果在編譯階段只生成有效指令,則可以去除無效指令的執(zhí)行.然而,由于剪枝操作造成稀疏網(wǎng)絡(luò)不規(guī)則的運(yùn)算特性,使得每個(gè)通道的Codelet指令不再相同,從而使它們無法使用同一套指令,于是PE陣列在執(zhí)行不同通道的運(yùn)算時(shí)需要重新從內(nèi)存加載指令,而指令的加載會(huì)造成PE陣列空閑,極大地延長了卷積的執(zhí)行時(shí)間.圖7展示了Alexnet(Conv 2到Conv 5)和VGG16(Conv 1_2到Conv 5_3)兩個(gè)網(wǎng)絡(luò)密集卷積和稀疏卷積的初始化時(shí)間和執(zhí)行時(shí)間占比.從圖7可以看到,對于密集網(wǎng)絡(luò),初始化時(shí)間即指令加載時(shí)間僅占總時(shí)間的1%,基本可以忽略不計(jì).而對于稀疏網(wǎng)絡(luò),可以看到PE陣列的執(zhí)行時(shí)間明顯減少了,但是由于指令加載時(shí)間很長導(dǎo)致稀疏網(wǎng)絡(luò)的總時(shí)間比密集網(wǎng)絡(luò)還長,所以這種策略無法加速稀疏卷積網(wǎng)絡(luò).

    Fig. 7 Comparison of time between dense convolution and sparse convolution圖7 密集卷積和稀疏卷積的時(shí)間對比

    由于在粗粒度數(shù)據(jù)流架構(gòu)中,每個(gè)PE內(nèi)是控制流的執(zhí)行模式,即通過PC方式獲取Codelet內(nèi)的每條指令,因此可以增加指令控制結(jié)構(gòu)以使PE陣列在運(yùn)行過程中檢測0值相關(guān)指令并跳過它們,從而消除0值相關(guān)的操作.

    3.2 指令執(zhí)行不均衡

    在消除0值相關(guān)指令后,使用Han等人[5]的剪枝方法獲得的稀疏網(wǎng)絡(luò),當(dāng)網(wǎng)絡(luò)映射在PE陣列上時(shí)存在非0值相關(guān)指令分布不均衡的問題.負(fù)載的不均衡導(dǎo)致硬件資源利用率降低和性能下降.如圖8所示,2個(gè)PE分別被映射2個(gè)剪枝后的濾波器Filter.由于剪枝操作,每個(gè)Filter中的非0權(quán)值個(gè)數(shù)不同,導(dǎo)致它們有效指令數(shù)不再相同.圖8中PE1和PE2分別有10個(gè),7個(gè)非0值,由于一個(gè)權(quán)值相關(guān)的指令有Load,Madd,Copy指令,如果只執(zhí)行1次卷積運(yùn)算(如圖6所示),PE1和PE2中與Filter相關(guān)的有效指令分別為30條(10條Load指令,10條Madd指令和10條Copy指令)和21條(7條Load指令,7條Madd指令和7條Copy指令).假設(shè)一條Load,一條Madd和一條Copy指令分別需要1個(gè)cycle,2個(gè)cycle,1個(gè)cycle的執(zhí)行時(shí)間,則PE1和PE2分別需要40個(gè)cycle和28個(gè)cycle.顯然PE1比PE2的計(jì)算忙碌,阻礙了整體性能的提升.為了利用稀疏網(wǎng)絡(luò)的計(jì)算和存儲(chǔ)優(yōu)勢,稀疏網(wǎng)絡(luò)需要被有效的處理.

    Fig. 8 Filters with different numbers of non-zero values mapped in PE圖8 PE中映射的非0值個(gè)數(shù)不同的Filter

    4 稀疏卷積網(wǎng)絡(luò)加速策略

    為維持指令只初始化1次,即只從內(nèi)存加載1次Codelet指令,同時(shí)也要消除Codelet中的無效指令,即0值相關(guān)的指令.本文在每個(gè)PE內(nèi)部增加了指令控制器用于對即將執(zhí)行的Codelet指令進(jìn)行指令篩選,僅把有效指令傳輸給PE內(nèi)的流水執(zhí)行單元,免去無效指令的執(zhí)行從而消除無效數(shù)據(jù)的加載和運(yùn)算.然而控制單元對指令的篩選需要依賴指令標(biāo)記信息,根據(jù)指令標(biāo)記信息表征指令是否有效,從而實(shí)現(xiàn)篩選的目標(biāo).

    4.1 指令標(biāo)記信息的生成

    基于卷積神經(jīng)網(wǎng)絡(luò)中濾波器Filter的靜態(tài)特性,即每個(gè)卷積層的權(quán)值不隨輸入的變化而變化,所以在每個(gè)卷積層被編譯器編譯成CDG圖時(shí),可以根據(jù)指令所需的數(shù)據(jù)特征生成指令標(biāo)記信息以標(biāo)記指令是否有效,這些標(biāo)記信息使用1和0分別表示指令的有效和無效.在PE陣列執(zhí)行Codelet的指令時(shí),MicC會(huì)將該Codelet內(nèi)的指令標(biāo)記信息通過2D Mesh網(wǎng)絡(luò)傳輸給PE,PE內(nèi)部的PC根據(jù)該標(biāo)記信息跳過無效指令.圖9(a)為1個(gè)PE內(nèi)5×5的Ifmap與3×3的Filter生成1個(gè)Ofmap結(jié)果的卷積執(zhí)行過程.在圖中,這些相應(yīng)的指令被加載至PE中,在此次卷積運(yùn)算中,參與運(yùn)算的Ifmap的指令標(biāo)記信息全為1,參與運(yùn)算的Filter值分別為1,1,0,0,2,0,1,0,4,則其對應(yīng)的Load指令和Copy指令的標(biāo)記信息(Filter_flag)為1,1,0,0,1,0,1,0,1.當(dāng)執(zhí)行乘加運(yùn)算時(shí),乘加運(yùn)算的指令標(biāo)記信息為Ifmap與Filter對應(yīng)位置的標(biāo)記信息的與操作,而由于Ifmap的指令標(biāo)記信息全為1,所以乘加運(yùn)算的指令標(biāo)記信息與Filter的相同,即為1,1,0,0,1,0,1,0,1.最后PE根據(jù)這些指令標(biāo)記信息選擇執(zhí)行或者不執(zhí)行指令,實(shí)現(xiàn)無效指令的跳過.

    Fig. 9 Execution flow chart of instruction control unit圖9 指令控制單元的執(zhí)行流程圖

    4.2 指令控制單元

    圖9(b)為指令控制單元對Codelet中指令的篩選過程,它通過計(jì)算指令標(biāo)記信息Flag中的2個(gè)1之間的距離,得到2條有效指令的間隔,當(dāng)前PC與該間隔相加獲取下一條有效指令的PC值,以使PC自動(dòng)跳轉(zhuǎn)至有效指令位置,從而跳過無效指令.在流程圖中,參數(shù)i記錄待檢測的指令與當(dāng)前PC所指的指令之間的間隔,F(xiàn)lag_id表示Codelet中的指令對應(yīng)的標(biāo)記信息的索引,指令控制單元對指令標(biāo)記信息逐條檢測,直到檢測到某條指令標(biāo)記信息為1或者所有的指令標(biāo)記信息檢測結(jié)束,則流程結(jié)束.

    圖9(c)為Codelet指令(對應(yīng)圖9(a)的Codelet指令)經(jīng)過指令控制單元后最終執(zhí)行的有效指令,其中Flag為Codelet的指令標(biāo)記信息,它與Codelet指令一一對應(yīng).剛開始,Inst1的Flag值為1,所以PC指向Inst1以執(zhí)行Inst1指令,執(zhí)行結(jié)束后,PC自動(dòng)加1指向Inst2,由于Inst2的Flag也為1,所以PC仍指向Inst2并執(zhí)行.如此執(zhí)行,直到Inst11執(zhí)行結(jié)束,PC自動(dòng)加1指向Inst12,因?yàn)镮nst12的Flag為0,所以指令控制單元中的i和Flag_id均加1以檢測Inst13指令的有效性,而Inst13的Flag仍為0,i和Flag_id繼續(xù)加1,此時(shí)Inst14的Flag為1,所以PC更新為PC+2,檢測結(jié)束,PC跳轉(zhuǎn)到Inst14處執(zhí)行.之后指令控制單元繼續(xù)執(zhí)行直到Codelet中的指令檢測完.所以最終PE執(zhí)行的有效指令為Inst1到Inst11,Inst14,Inst16,Inst18到Inst20,Inst23,Inst25,Inst27.

    4.3 負(fù)載均衡的指令映射

    基于稀疏網(wǎng)絡(luò)中計(jì)算的不規(guī)則性,映射在每個(gè)PE的Codelet中的有效指令數(shù)不再完全相同.為了保證PE陣列有效指令均勻分布和硬件資源的高利用率,需要使用負(fù)載均衡的指令映射算法.先前的工作[19]已經(jīng)提出了基于數(shù)據(jù)流的負(fù)載均衡的指令映射算法(LBC),它基于每條指令在計(jì)算單元陣列中的位置為代價(jià),以最小代價(jià)位置為最佳映射位置以保證負(fù)載均衡.但是對于Codelet執(zhí)行模式,Codelet內(nèi)的指令不能跨多個(gè)PE映射,使用該算法只能保證Codelet在PE陣列的均勻分布,而不能保證每個(gè)PE中Codelet內(nèi)的有效指令數(shù)相同,所以本文使用新負(fù)載均衡的指令映射算法.

    根據(jù)神經(jīng)網(wǎng)絡(luò)的執(zhí)行方式,水平方向的PE使用了相同的輸入特征圖Ifmap和不同的濾波器,垂直方向上的PE使用了相同的濾波器,所以在現(xiàn)有的執(zhí)行方式中,PE中有效指令數(shù)的分布不均衡來源于濾波器中非0權(quán)值數(shù)的不同.本文基于濾波器中的非0權(quán)值個(gè)數(shù)實(shí)現(xiàn)負(fù)載均衡的有效指令映射.

    由于垂直方向的PE復(fù)用了相同的濾波器,所以它們之間的有效指令數(shù)是相同的,基于此本文將PE陣列按列劃分為組.對于每個(gè)PE組,它們被映射新的濾波器的優(yōu)先級依賴于已經(jīng)存在的濾波器中的非0權(quán)值個(gè)數(shù),擁有的非0權(quán)值數(shù)越多,其優(yōu)先級越低.

    圖10為3×3的PE陣列上映射6個(gè)Filter的結(jié)果.根據(jù)算法要求,PE陣列按列分為3組,分別為G1,G2,G3.組內(nèi)PE復(fù)用相同的濾波器,初始化階段,每個(gè)PE組的優(yōu)先級設(shè)置為0,F(xiàn)ilter1首先被映射到G1后,由于Filter1中非0權(quán)值個(gè)數(shù)為5,所以G1的優(yōu)先級更新為-5,之后Filter2,F(xiàn)ilter3分別被映射在G2和G3中,G2和G3的優(yōu)先級分別更新為-4,-3.對于Filter4,由于當(dāng)前所有組中G3具有最高優(yōu)先級,所以F4被映射在G3中,同時(shí)G3的優(yōu)先級更新為-8,同理,F(xiàn)ilter5被映射在G2,F(xiàn)ilter6被映射在G1中.直到所有濾波器都被映射,算法結(jié)束.通過使用負(fù)載均衡的指令映射算法,可以看到每組PE內(nèi)非0權(quán)值數(shù)分別為7,8,8.它們對應(yīng)的有效指令條數(shù)基本一致,保證了PE陣列的負(fù)載均衡.

    Fig. 10 Load balancing instruction mapping圖10 負(fù)載均衡的指令映射

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

    本節(jié)在實(shí)例化的DPU上實(shí)施上述提出的方法,實(shí)現(xiàn)對稀疏的Alenet和VGG16卷積層的加速.

    5.1 實(shí)驗(yàn)平臺(tái)

    本文使用中國科學(xué)院計(jì)算技術(shù)研究所自主研發(fā)的大規(guī)模并行模擬框架SimICT[28]平臺(tái),實(shí)現(xiàn)時(shí)鐘精確型的模擬器DPU,它的結(jié)構(gòu)如圖1所示,配置信息如表2所示.同時(shí),還使用Verilog實(shí)現(xiàn)DPU的設(shè)計(jì)以及RTL級仿真,并使用12 nm的工藝進(jìn)行綜合.

    Table 2 DPU Structure Configuration Information表2 DPU結(jié)構(gòu)的配置信息

    整個(gè)加速器的面積為13.82 mm2,單個(gè)PE面積為0.14 mm2,在每個(gè)PE增加指令控制單元后,PE面積僅增加了6.64%,整個(gè)面積增加了4.33%.在執(zhí)行稀疏網(wǎng)絡(luò)時(shí),指令控制單元的能耗為總能耗的0.87%,基本可以忽略不計(jì).

    在本實(shí)驗(yàn)中,DPU由8×8的PE陣列組成,PE之間通過2D Mesh網(wǎng)絡(luò)連接.每個(gè)PE內(nèi)部含有1個(gè)SIMD8模式的16 b乘累加(multiply-accumulate, MAC)單元.同時(shí)還配置了8 KB的指令緩存和32 KB的數(shù)據(jù)緩存.為了提供高的網(wǎng)絡(luò)帶寬,片上網(wǎng)絡(luò)由多個(gè)獨(dú)立的2D Mesh網(wǎng)絡(luò)組成.同時(shí)在片外還使用了1 MB的Cache提供快速的內(nèi)存訪問.

    5.2 基準(zhǔn)測試

    本文選取了Alexnet和VGG16網(wǎng)絡(luò)模型中的卷積層作為實(shí)驗(yàn)的基準(zhǔn)測試(Benchmark),這些卷積層具有不同的參數(shù)規(guī)模.每層中剩余權(quán)值數(shù)據(jù)的占比如表3所示.基于LLVM平臺(tái)設(shè)計(jì)的編譯器,每個(gè)卷積層被編譯為CDG圖被映射在PE陣列中.

    Table 3 Benchmark Configuration Information表3 Benchmark配置信息

    5.3 評估標(biāo)準(zhǔn)

    通過應(yīng)用5.2節(jié)的Benchmark,本文從不同方面評估了提出的稀疏加速策略.通過與密集網(wǎng)絡(luò)對比,分別從指令執(zhí)行次數(shù)、性能和能耗方面評估并驗(yàn)證本文提出方法的有效性.同時(shí),本文使用4片DPU實(shí)現(xiàn)的稀疏網(wǎng)絡(luò)與NVIDIA Titan XP GPU和Cambricon-X[12]加速器進(jìn)行對比,對于GPU分別使用GPU-cuBlas和GPU-cuSparse[29](基于CSR索引)實(shí)現(xiàn)密集網(wǎng)絡(luò)和稀疏網(wǎng)絡(luò).而對于負(fù)載均衡的指令調(diào)度算法,本文使用MAC部件利用率(MAC com-ponent utilization)評估負(fù)載均衡映射算法的有效性.

    (2)

    5.4 結(jié)果分析

    1) MAC部件利用率

    通過使用負(fù)載均衡的指令映射算法,保證了PE陣列的負(fù)載均衡,圖11所示為執(zhí)行VGG16 Conv 5_1卷積層水平方向的8個(gè)PE的MAC部件利用率,由于PE陣列在垂直方向上復(fù)用相同的濾波器,所以每列PE具有相同的MAC部件利用率.通過該算法,PE陣列的MAC部件利用率基本保持一致.后續(xù)也都是基于該算法實(shí)現(xiàn)所有實(shí)驗(yàn).

    Fig. 11 MAC resource utilization of Conv 5_1 layer圖11 Conv 5_1層的MAC資源利用率

    2) 指令執(zhí)行次數(shù)

    本文對比了密集卷積層和稀疏卷積層的指令執(zhí)行次數(shù),從圖12中可以看到,由于權(quán)值的稀疏性,通過指令控制單元,PE陣列執(zhí)行時(shí)跳過了0值相關(guān)指令,使得稀疏卷積層的指令執(zhí)行次數(shù)比密集卷積層平均減少了54.78%,其中Load,Madd,Copy指令執(zhí)行次數(shù)分別減少了3.59%,69.21%,33.74%.在圖中,Madd指令的執(zhí)行次數(shù)遠(yuǎn)遠(yuǎn)多于Load指令,表明卷積層是計(jì)算密集型的運(yùn)算.Load指令執(zhí)行次數(shù)僅減少3.59%,這因?yàn)長oad指令的執(zhí)行包含Ifmap,F(xiàn)ilter,Ofmap數(shù)據(jù)的加載,而Filter數(shù)據(jù)的占比較小,所以其Load指令的執(zhí)行次數(shù)相比于所有的Load指令的執(zhí)行,減少的少.

    Fig. 12 Comparison of instruction execution times between dense and sparse layers圖12 密集層和稀疏層指令執(zhí)行次數(shù)的對比

    3) 性能

    圖13顯示了稀疏卷積層的性能,由于神經(jīng)網(wǎng)絡(luò)卷積層屬于計(jì)算密集型層,利用網(wǎng)絡(luò)的稀疏性去除了無效指令的執(zhí)行,使總指令執(zhí)行次數(shù)減少,提高了卷積運(yùn)算的有效性,卷積層平均性能提升了1.55倍.在圖中Alexnet的Conv 2層性能提升最多為1.92倍,VGG16的Conv 1_2層的性能提升最少為1.23倍.雖然Conv 1_2層的權(quán)值稀疏度最高為78%,但是性能提升卻最少,這是因?yàn)镃onv 1_2層與其他層相比,通道數(shù)較少,當(dāng)通道數(shù)越多時(shí),加速器發(fā)揮的并行性也會(huì)越高.

    Fig. 13 Performance comparison between dense and sparse layers圖13 密集層與稀疏層的性能對比

    4) 能耗

    圖14為執(zhí)行密集和稀疏卷積層的能耗分解圖,可以看到稀疏卷積層能耗平均減少了63.77%,其中乘加部件(MAC)、數(shù)據(jù)緩存(operand buffer)、指令緩存(instruction buffer)、片上數(shù)據(jù)傳輸網(wǎng)絡(luò)(NoC data transfer)的能耗分別減少了76.38%,68.06%,55.95%,8.68%.相似地,由于Filter數(shù)據(jù)占比較小,所以對于片上數(shù)據(jù)的傳輸能耗也減少的少.

    Fig. 14 Energy comparison between dense and sparse layers圖14 密集層與稀疏層的能耗對比

    5) 與其他加速器比較

    圖15展示了使用DPU和Cambricon-X實(shí)現(xiàn)的稀疏卷積分別相對于GPU基準(zhǔn)(cuBLAS和cuSparse)在Alexnet和VGG16網(wǎng)絡(luò)上獲得的平均性能.從中可以看到,對于密集卷積(cuBLAS實(shí)現(xiàn)),DPU的性能分別是GPU的1.76倍和1.35倍,Cambricon-X的性能分別是GPU的1.47倍和1.31倍,所以DPU比Cambricon-X的性能分別提高1.19倍和1.03倍.對于稀疏卷積(cuSparse實(shí)現(xiàn)),DPU的性能分別是GPU的2.39倍和2.28倍,Cambricon-X的性能分別是GPU的2.08倍和1.85倍,所以DPU的性能比Cambricon-X分別提高1.14倍和1.23倍.實(shí)驗(yàn)結(jié)果展現(xiàn)了粗粒度數(shù)據(jù)流架構(gòu)執(zhí)行稀疏網(wǎng)絡(luò)的高性能.

    Fig. 15 Speedup of DPU and Cambricon-X over GPU (cuBLAS and Sparse BLAS) baseline圖15 DPU和Cambricon-X在GPU(cuBLAS和Sparse BLAS)基準(zhǔn)上的加速比

    表4列出了DPU,Cambricon-X和GPU的能效對比,可以看到DPU的能效低于Cambricon-X,而DPU的能效是GPU的12.7倍.

    Table 4 Parameter Comparison of DPU, GPU and Cambricon-X表4 DPU,GPU,Cambricon-X的參數(shù)對比

    7 總 結(jié)

    本文基于粗粒度數(shù)據(jù)流架構(gòu)中指令映射和執(zhí)行方式,結(jié)合卷積神經(jīng)網(wǎng)絡(luò)權(quán)值數(shù)據(jù)的特征,設(shè)計(jì)了指令控制單元去除了卷積運(yùn)算中無效指令的執(zhí)行,極大地減少了指令的執(zhí)行次數(shù),而硬件面積和能耗分別只增加4.3%和0.87%,占比很小.同時(shí)還根據(jù)卷積中稀疏權(quán)值的數(shù)據(jù)特征設(shè)計(jì)了負(fù)載均衡的指令映射算法,保證了PE陣列有效指令執(zhí)行的均衡.實(shí)驗(yàn)表明,與密集網(wǎng)絡(luò)相比,本文的方法將稀疏卷積的性能平均提升1.55倍,能耗減少63.77%.與GPU(cuSparse)相比,Alexnet和VGG16網(wǎng)絡(luò)分別獲得2.39倍和2.28倍的性能提升.與Cambricon-X相比,Alexnet和VGG16網(wǎng)絡(luò)分別獲得1.14倍和1.23倍的性能提升.

    由于卷積層在整個(gè)網(wǎng)絡(luò)的執(zhí)行中占據(jù)大部分執(zhí)行時(shí)間,所以本文只實(shí)現(xiàn)了該層的加速,并沒有實(shí)現(xiàn)全連接層的加速.雖然全連接的計(jì)算可以轉(zhuǎn)化為卷積計(jì)算模式,但是現(xiàn)有方法實(shí)現(xiàn)對全連接層加速的效果有待驗(yàn)證.未來工作中,將會(huì)繼續(xù)研究稀疏網(wǎng)絡(luò)的全連接層,對其驗(yàn)證本文的方法,同時(shí)利用它的數(shù)據(jù)和指令特征設(shè)計(jì)新的指令映射和執(zhí)行方式實(shí)現(xiàn)該層的加速.

    猜你喜歡
    粗粒度數(shù)據(jù)流加速器
    輪滑加速器
    化學(xué)工業(yè)的“加速器”
    一種端到端的加密流量多分類粗粒度融合算法*
    全民小康路上的“加速器”
    基于卷積神經(jīng)網(wǎng)絡(luò)的粗粒度數(shù)據(jù)分布式算法
    汽車維修數(shù)據(jù)流基礎(chǔ)(下)
    一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
    在線評論情感分析研究綜述
    基于公共池自適應(yīng)遷移策略的并行遺傳算法
    等待“加速器”
    满18在线观看网站| 男人操女人黄网站| 久久人妻福利社区极品人妻图片| 在线天堂中文资源库| 人人妻人人爽人人添夜夜欢视频| 搡老岳熟女国产| avwww免费| 欧美在线黄色| 亚洲第一青青草原| 桃红色精品国产亚洲av| www.熟女人妻精品国产| 一边摸一边做爽爽视频免费| 欧美激情 高清一区二区三区| 满18在线观看网站| av网站在线播放免费| 看黄色毛片网站| 久热爱精品视频在线9| 在线观看一区二区三区激情| 日本a在线网址| 国产亚洲欧美98| 欧美国产精品一级二级三级| 久久青草综合色| 叶爱在线成人免费视频播放| 欧美老熟妇乱子伦牲交| 国产精品综合久久久久久久免费 | videos熟女内射| 亚洲国产精品sss在线观看 | 天天影视国产精品| 午夜福利一区二区在线看| 黄片小视频在线播放| 两个人免费观看高清视频| 成年人免费黄色播放视频| 精品国产一区二区三区久久久樱花| 日本a在线网址| 在线观看免费午夜福利视频| 亚洲国产欧美网| 午夜精品国产一区二区电影| videosex国产| 久久精品国产99精品国产亚洲性色 | 中文字幕人妻丝袜一区二区| 欧美亚洲 丝袜 人妻 在线| 国产精品永久免费网站| 国产精品99久久99久久久不卡| 国产高清激情床上av| 亚洲国产精品一区二区三区在线| 91麻豆av在线| 又黄又粗又硬又大视频| 精品视频人人做人人爽| 又大又爽又粗| 黄色怎么调成土黄色| 激情视频va一区二区三区| 少妇被粗大的猛进出69影院| 麻豆av在线久日| 国产精品免费大片| 国产亚洲一区二区精品| 亚洲片人在线观看| 视频区欧美日本亚洲| 亚洲第一av免费看| 久久精品国产综合久久久| 精品国内亚洲2022精品成人 | 精品一区二区三区四区五区乱码| 日本vs欧美在线观看视频| 麻豆国产av国片精品| 成人黄色视频免费在线看| 亚洲一卡2卡3卡4卡5卡精品中文| 无人区码免费观看不卡| 久久久久视频综合| 制服人妻中文乱码| 丝袜美足系列| 丝袜美足系列| 又黄又粗又硬又大视频| 国产精品99久久99久久久不卡| 999久久久精品免费观看国产| 国产99白浆流出| 精品少妇一区二区三区视频日本电影| 黑人巨大精品欧美一区二区mp4| 亚洲精品成人av观看孕妇| 男女午夜视频在线观看| 亚洲一码二码三码区别大吗| 免费不卡黄色视频| 国产高清videossex| 国产主播在线观看一区二区| 欧美+亚洲+日韩+国产| 久久ye,这里只有精品| 最新在线观看一区二区三区| 嫁个100分男人电影在线观看| 美女高潮到喷水免费观看| 欧美午夜高清在线| 国产av一区二区精品久久| 久久精品国产亚洲av香蕉五月 | av福利片在线| x7x7x7水蜜桃| 亚洲情色 制服丝袜| 欧美人与性动交α欧美软件| 黄色 视频免费看| ponron亚洲| 一区二区日韩欧美中文字幕| av欧美777| 亚洲久久久国产精品| 51午夜福利影视在线观看| 中国美女看黄片| 精品久久久久久电影网| 色综合欧美亚洲国产小说| 成人18禁高潮啪啪吃奶动态图| 亚洲欧洲精品一区二区精品久久久| 国产精品 国内视频| 欧美日韩视频精品一区| 亚洲成a人片在线一区二区| 老司机福利观看| 两个人看的免费小视频| 色播在线永久视频| 美女扒开内裤让男人捅视频| 日日夜夜操网爽| 亚洲色图av天堂| 在线观看66精品国产| 免费黄频网站在线观看国产| 国产91精品成人一区二区三区| 黄色视频不卡| 亚洲国产精品一区二区三区在线| 亚洲人成电影观看| 两人在一起打扑克的视频| 免费av中文字幕在线| 久久青草综合色| 国产1区2区3区精品| 成年版毛片免费区| 亚洲伊人色综图| 国产高清激情床上av| 亚洲性夜色夜夜综合| 黄色片一级片一级黄色片| 欧美精品av麻豆av| 免费在线观看视频国产中文字幕亚洲| 精品久久久久久电影网| 国内久久婷婷六月综合欲色啪| 黑人欧美特级aaaaaa片| 91九色精品人成在线观看| 久久久精品区二区三区| 又紧又爽又黄一区二区| 涩涩av久久男人的天堂| 久久久久久久午夜电影 | 亚洲精品国产精品久久久不卡| 欧美日韩乱码在线| 久久香蕉激情| 久久久久久久久免费视频了| 午夜两性在线视频| 另类亚洲欧美激情| 天天添夜夜摸| 男人操女人黄网站| 精品熟女少妇八av免费久了| 国产成人欧美在线观看 | 80岁老熟妇乱子伦牲交| 亚洲av日韩精品久久久久久密| a级毛片在线看网站| 女人被狂操c到高潮| 午夜免费鲁丝| 亚洲精品一卡2卡三卡4卡5卡| 久久久国产欧美日韩av| 久久天堂一区二区三区四区| 亚洲av电影在线进入| 国产精华一区二区三区| 精品午夜福利视频在线观看一区| 少妇猛男粗大的猛烈进出视频| 不卡一级毛片| 久久天堂一区二区三区四区| 国产麻豆69| www日本在线高清视频| a级片在线免费高清观看视频| 久9热在线精品视频| 欧美日韩国产mv在线观看视频| 欧美在线黄色| 香蕉国产在线看| 99久久99久久久精品蜜桃| 精品一区二区三卡| 在线观看日韩欧美| 亚洲欧美精品综合一区二区三区| 五月开心婷婷网| 可以免费在线观看a视频的电影网站| 国产精品1区2区在线观看. | 久久热在线av| 精品久久久久久,| 1024视频免费在线观看| 看片在线看免费视频| 色在线成人网| 中文欧美无线码| 王馨瑶露胸无遮挡在线观看| 人妻一区二区av| 三级毛片av免费| 色婷婷久久久亚洲欧美| 国产三级黄色录像| 亚洲国产中文字幕在线视频| 亚洲 国产 在线| 国产成人精品久久二区二区91| 国产日韩一区二区三区精品不卡| 精品亚洲成国产av| 久9热在线精品视频| 久久精品亚洲精品国产色婷小说| 亚洲精品美女久久av网站| 99久久精品国产亚洲精品| 亚洲精品一卡2卡三卡4卡5卡| 在线天堂中文资源库| 成年女人毛片免费观看观看9 | 狠狠狠狠99中文字幕| 两个人看的免费小视频| 精品国产一区二区三区四区第35| 午夜精品在线福利| 手机成人av网站| 十八禁网站免费在线| 国产精品亚洲av一区麻豆| 国产亚洲一区二区精品| 国产成人精品无人区| 我的亚洲天堂| 亚洲片人在线观看| 操出白浆在线播放| 一区二区三区激情视频| 久久人妻熟女aⅴ| 国产精品一区二区免费欧美| 99re在线观看精品视频| x7x7x7水蜜桃| 欧美日韩亚洲高清精品| 最近最新免费中文字幕在线| 窝窝影院91人妻| 精品一区二区三卡| 久久香蕉激情| 亚洲熟女毛片儿| 极品教师在线免费播放| 免费观看精品视频网站| 一a级毛片在线观看| 一级作爱视频免费观看| 午夜两性在线视频| 人成视频在线观看免费观看| 色综合婷婷激情| 在线永久观看黄色视频| 成年女人毛片免费观看观看9 | 国产精品 国内视频| 男男h啪啪无遮挡| 国产免费av片在线观看野外av| 国产成人一区二区三区免费视频网站| 在线观看www视频免费| 少妇裸体淫交视频免费看高清 | 亚洲午夜理论影院| www.999成人在线观看| 欧美丝袜亚洲另类 | 美女福利国产在线| av欧美777| 亚洲欧美激情综合另类| 久久国产精品影院| 成在线人永久免费视频| 亚洲欧洲精品一区二区精品久久久| 国产精品影院久久| 国产精品美女特级片免费视频播放器 | 国产淫语在线视频| 精品福利观看| 色在线成人网| av有码第一页| 中亚洲国语对白在线视频| 国产精品欧美亚洲77777| 成年版毛片免费区| 日韩精品免费视频一区二区三区| 日本黄色日本黄色录像| 电影成人av| 日本wwww免费看| 99国产精品99久久久久| 日本五十路高清| 51午夜福利影视在线观看| 色综合欧美亚洲国产小说| 下体分泌物呈黄色| 少妇被粗大的猛进出69影院| 这个男人来自地球电影免费观看| 两个人看的免费小视频| 欧美 日韩 精品 国产| av有码第一页| 首页视频小说图片口味搜索| 色老头精品视频在线观看| 国产91精品成人一区二区三区| 嫁个100分男人电影在线观看| 淫妇啪啪啪对白视频| 国产一区有黄有色的免费视频| 亚洲一卡2卡3卡4卡5卡精品中文| 建设人人有责人人尽责人人享有的| 丝袜美腿诱惑在线| 国产99久久九九免费精品| av视频免费观看在线观看| 亚洲成a人片在线一区二区| 久久久精品区二区三区| 亚洲五月天丁香| 王馨瑶露胸无遮挡在线观看| 久久香蕉国产精品| 窝窝影院91人妻| 热99久久久久精品小说推荐| 国产男女内射视频| 巨乳人妻的诱惑在线观看| 国产精品美女特级片免费视频播放器 | 久久久国产成人免费| 水蜜桃什么品种好| 叶爱在线成人免费视频播放| 午夜日韩欧美国产| 99精品欧美一区二区三区四区| 国产男女内射视频| 99re在线观看精品视频| 精品久久蜜臀av无| 无遮挡黄片免费观看| 18禁黄网站禁片午夜丰满| 一区二区三区激情视频| 99riav亚洲国产免费| 欧美日韩瑟瑟在线播放| 亚洲av第一区精品v没综合| 看黄色毛片网站| 日本黄色日本黄色录像| 50天的宝宝边吃奶边哭怎么回事| 欧美激情 高清一区二区三区| 国产亚洲欧美精品永久| 国产成人系列免费观看| 老司机午夜福利在线观看视频| 久久人人97超碰香蕉20202| 桃红色精品国产亚洲av| 一边摸一边做爽爽视频免费| 免费看十八禁软件| 变态另类成人亚洲欧美熟女 | 黑丝袜美女国产一区| 黄色a级毛片大全视频| 午夜福利一区二区在线看| 中出人妻视频一区二区| 亚洲伊人色综图| 日本一区二区免费在线视频| 18禁观看日本| 日本一区二区免费在线视频| 纯流量卡能插随身wifi吗| 久久精品亚洲av国产电影网| 国产亚洲av高清不卡| 国产成人精品久久二区二区91| 咕卡用的链子| 成在线人永久免费视频| 久久 成人 亚洲| 欧美黑人欧美精品刺激| 久久久久久久久免费视频了| 亚洲av成人av| 亚洲 欧美一区二区三区| 亚洲第一青青草原| 精品第一国产精品| 宅男免费午夜| 高清在线国产一区| 国产免费av片在线观看野外av| 一级片'在线观看视频| 久久国产乱子伦精品免费另类| 美女 人体艺术 gogo| 久久婷婷成人综合色麻豆| 如日韩欧美国产精品一区二区三区| 午夜激情av网站| 久久99一区二区三区| 国产在视频线精品| 免费女性裸体啪啪无遮挡网站| 国产在视频线精品| 狠狠婷婷综合久久久久久88av| 亚洲成人手机| 午夜福利一区二区在线看| 人成视频在线观看免费观看| 啦啦啦免费观看视频1| 精品免费久久久久久久清纯 | 亚洲专区中文字幕在线| а√天堂www在线а√下载 | 啦啦啦在线免费观看视频4| 嫩草影视91久久| 男女之事视频高清在线观看| 午夜成年电影在线免费观看| 亚洲国产欧美日韩在线播放| 亚洲性夜色夜夜综合| 中文字幕最新亚洲高清| www.自偷自拍.com| 交换朋友夫妻互换小说| 亚洲 欧美一区二区三区| 久久国产精品男人的天堂亚洲| 久久性视频一级片| 高潮久久久久久久久久久不卡| 99国产极品粉嫩在线观看| 亚洲精华国产精华精| 在线观看免费高清a一片| 久久亚洲精品不卡| 国产成人av教育| 9热在线视频观看99| 五月开心婷婷网| 国内久久婷婷六月综合欲色啪| 久久精品国产a三级三级三级| 一边摸一边抽搐一进一小说 | 亚洲五月婷婷丁香| 国产亚洲一区二区精品| 波多野结衣一区麻豆| 国产一区二区三区视频了| 欧美乱妇无乱码| 欧美日韩黄片免| 欧美乱妇无乱码| 12—13女人毛片做爰片一| 免费观看a级毛片全部| 国产成人欧美| 日本一区二区免费在线视频| 精品人妻1区二区| 色婷婷av一区二区三区视频| 丁香欧美五月| 99久久综合精品五月天人人| av欧美777| 多毛熟女@视频| 日韩欧美一区二区三区在线观看 | 国产成人系列免费观看| 欧美另类亚洲清纯唯美| 人妻 亚洲 视频| 欧洲精品卡2卡3卡4卡5卡区| 18禁国产床啪视频网站| 亚洲精品久久午夜乱码| 一个人免费在线观看的高清视频| 国产亚洲精品一区二区www | 身体一侧抽搐| 18禁黄网站禁片午夜丰满| 日韩欧美国产一区二区入口| 18禁裸乳无遮挡动漫免费视频| 欧美av亚洲av综合av国产av| 国产精品久久电影中文字幕 | 高清av免费在线| 久久亚洲精品不卡| 久久影院123| 日韩欧美一区视频在线观看| x7x7x7水蜜桃| 咕卡用的链子| 国产精品综合久久久久久久免费 | 最新的欧美精品一区二区| 天天躁日日躁夜夜躁夜夜| 亚洲,欧美精品.| 久久热在线av| 国产午夜精品久久久久久| 黄色毛片三级朝国网站| 日韩视频一区二区在线观看| 亚洲一区中文字幕在线| 麻豆av在线久日| 欧美成人午夜精品| 香蕉国产在线看| 婷婷成人精品国产| 99香蕉大伊视频| 99国产极品粉嫩在线观看| 在线av久久热| 欧美黑人精品巨大| 最近最新中文字幕大全电影3 | svipshipincom国产片| 欧美午夜高清在线| 欧美最黄视频在线播放免费 | 一级,二级,三级黄色视频| 精品少妇一区二区三区视频日本电影| 国产精品偷伦视频观看了| 国产99白浆流出| 麻豆国产av国片精品| 久久人人97超碰香蕉20202| 免费不卡黄色视频| 一区二区日韩欧美中文字幕| 久久人人爽av亚洲精品天堂| 国产免费现黄频在线看| 免费在线观看视频国产中文字幕亚洲| 精品福利永久在线观看| 精品国产亚洲在线| 热99re8久久精品国产| 欧美av亚洲av综合av国产av| 视频区欧美日本亚洲| 少妇猛男粗大的猛烈进出视频| 亚洲性夜色夜夜综合| 国产精品乱码一区二三区的特点 | 中文字幕另类日韩欧美亚洲嫩草| 9热在线视频观看99| 黄片大片在线免费观看| 午夜精品国产一区二区电影| 18禁裸乳无遮挡动漫免费视频| 成年动漫av网址| 久久午夜综合久久蜜桃| 国产午夜精品久久久久久| 精品久久久精品久久久| 国产精品久久久久久人妻精品电影| 老司机在亚洲福利影院| 91国产中文字幕| 国产高清视频在线播放一区| 两人在一起打扑克的视频| 巨乳人妻的诱惑在线观看| √禁漫天堂资源中文www| 亚洲,欧美精品.| 国产激情欧美一区二区| 久久人妻熟女aⅴ| 精品第一国产精品| 午夜福利免费观看在线| 老熟妇乱子伦视频在线观看| 国产精品偷伦视频观看了| 精品电影一区二区在线| 亚洲一区高清亚洲精品| 国产91精品成人一区二区三区| 看片在线看免费视频| 久久99一区二区三区| 国产亚洲精品久久久久久毛片 | 亚洲专区中文字幕在线| 99精品久久久久人妻精品| 下体分泌物呈黄色| 国产精品1区2区在线观看. | bbb黄色大片| 国产深夜福利视频在线观看| 18禁黄网站禁片午夜丰满| 免费在线观看影片大全网站| 国产av又大| 日本黄色视频三级网站网址 | 亚洲五月色婷婷综合| 中国美女看黄片| 国产99白浆流出| 99久久国产精品久久久| 新久久久久国产一级毛片| 女警被强在线播放| 久久人人97超碰香蕉20202| 三级毛片av免费| 国产深夜福利视频在线观看| 麻豆国产av国片精品| 老司机靠b影院| 国产国语露脸激情在线看| 久久精品国产a三级三级三级| 制服诱惑二区| 日韩中文字幕欧美一区二区| 69av精品久久久久久| 午夜福利影视在线免费观看| 精品国产乱码久久久久久男人| 搡老熟女国产l中国老女人| 免费观看人在逋| 免费在线观看视频国产中文字幕亚洲| 中文字幕另类日韩欧美亚洲嫩草| 老司机深夜福利视频在线观看| 亚洲国产精品一区二区三区在线| 色老头精品视频在线观看| 夜夜爽天天搞| 精品少妇一区二区三区视频日本电影| 又大又爽又粗| 久久久久久免费高清国产稀缺| 如日韩欧美国产精品一区二区三区| 丝袜在线中文字幕| 久99久视频精品免费| 黑人巨大精品欧美一区二区蜜桃| 性少妇av在线| 丁香欧美五月| 国产成人啪精品午夜网站| 他把我摸到了高潮在线观看| 欧美精品av麻豆av| 日本精品一区二区三区蜜桃| 窝窝影院91人妻| 亚洲人成77777在线视频| 日韩免费高清中文字幕av| 51午夜福利影视在线观看| 亚洲熟女毛片儿| 亚洲一区高清亚洲精品| 亚洲成av片中文字幕在线观看| 两性午夜刺激爽爽歪歪视频在线观看 | 国产欧美日韩一区二区精品| 久久国产精品男人的天堂亚洲| 亚洲精品久久午夜乱码| 交换朋友夫妻互换小说| 日韩制服丝袜自拍偷拍| 中文字幕最新亚洲高清| 欧美激情高清一区二区三区| 动漫黄色视频在线观看| 自拍欧美九色日韩亚洲蝌蚪91| 久久久水蜜桃国产精品网| 757午夜福利合集在线观看| 99精品久久久久人妻精品| 亚洲精品久久成人aⅴ小说| 真人做人爱边吃奶动态| 久久精品成人免费网站| 村上凉子中文字幕在线| 怎么达到女性高潮| 夜夜爽天天搞| 婷婷精品国产亚洲av在线 | 久久精品人人爽人人爽视色| 一二三四在线观看免费中文在| 精品一区二区三区四区五区乱码| 久久中文看片网| 两性午夜刺激爽爽歪歪视频在线观看 | 国产国语露脸激情在线看| 国产精品久久久人人做人人爽| 50天的宝宝边吃奶边哭怎么回事| 午夜亚洲福利在线播放| 亚洲色图av天堂| 午夜精品在线福利| av不卡在线播放| 国产色视频综合| 亚洲国产看品久久| 人妻一区二区av| 中文字幕精品免费在线观看视频| 久久久国产成人免费| 精品人妻在线不人妻| 国产精品久久电影中文字幕 | 熟女少妇亚洲综合色aaa.| 99久久人妻综合| 18禁裸乳无遮挡动漫免费视频| 亚洲美女黄片视频| 亚洲少妇的诱惑av| 国产精品 国内视频| 一本大道久久a久久精品| 亚洲aⅴ乱码一区二区在线播放 | 国产成人欧美| 桃红色精品国产亚洲av| 国产精品久久久久久精品古装| 国产精品美女特级片免费视频播放器 | 亚洲精品国产区一区二| 日韩欧美一区视频在线观看| 成人免费观看视频高清| 亚洲色图 男人天堂 中文字幕| 99久久精品国产亚洲精品| 久久人人爽av亚洲精品天堂| 极品少妇高潮喷水抽搐| 嫁个100分男人电影在线观看| 电影成人av| 成人精品一区二区免费| 国产野战对白在线观看| 高清毛片免费观看视频网站 | 亚洲国产精品sss在线观看 | 欧美精品av麻豆av| 免费黄频网站在线观看国产| 亚洲精品中文字幕一二三四区| 亚洲中文日韩欧美视频| 一进一出好大好爽视频| 亚洲免费av在线视频|