亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于幀間數(shù)據(jù)復用的稀疏CNN 加速器設計

        2023-12-16 10:29:08洪起潤
        計算機工程 2023年12期
        關鍵詞:加速器差分運算

        洪起潤,王 琴

        (上海交通大學 電子信息與電氣工程學院,上海 200240)

        0 概述

        近年來,隨著人工智能研究的熱潮興起,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)憑借其強大的特征提取和表征學習能力,在圖像識別領域占據(jù)了主導地位,并在視頻監(jiān)控、目標檢測、目標追蹤等視頻應用中也得到了廣泛的應用。然而,CNN模型計算復雜度高、參數(shù)過于冗余的特點極大增加了計算規(guī)模和存儲需求。研究表明,面向視頻應用的CNN 模型具有數(shù)十億級的計算量以及數(shù)百萬級的參數(shù)[1-3]。

        視頻應用對實時性要求較高,這對CNN 模型在資源受限的計算平臺上進行前向推理提出了巨大挑戰(zhàn)。為了得到緊湊、高效的網(wǎng)絡模型,研究人員已經(jīng)在神經(jīng)網(wǎng)絡量化領域展開了大量的研究。線性量化使用量化后的數(shù)據(jù)直接進行計算,是低精度量化的主要方法。文獻[4-6]通過量化感知訓練(Quantization Aware Training,QAT)來對模型進行線性量化,并且都使用了直通估計器(Straight-Through Estimator,STE)來近似梯度,解決因四舍五入運算梯度為零導致反向傳播的梯度為零而無法訓練的問題。文獻[7]提出逐元素梯度縮放(Element-Wise Gradient Scaling,EWGS)來替代STE,優(yōu)化STE 近似梯度存在的問題。

        目前對單幀圖像的前向推理計算進行加速的神經(jīng)網(wǎng)絡加速器研究取得了很大的進展[8-10],這些工作在視頻應用中只對單幀圖像空間維度上的數(shù)據(jù)進行了復用,而沒有對連續(xù)幀時間維度上的數(shù)據(jù)進行復用。近年來,一些研究利用幀間數(shù)據(jù)的相似性來解決現(xiàn)有的加速器對視頻應用加速效果差的問題。文獻[11]通過對輸入激活進行線性量化來增加差分幀的稀疏性,從而減少計算量和訪存次數(shù)。文獻[12]提出使用混合精度來表示幀間數(shù)據(jù)的處理器架構,分別使用4 bit 和8 bit 來表示值比較小的密集數(shù)據(jù)和值比較大的稀疏數(shù)據(jù)。上述工作都是基于ASIC 實現(xiàn)利用幀間數(shù)據(jù)復用來對視頻任務進行加速處理。目前基于現(xiàn)場可編程門陣列(FPGA)實現(xiàn)的研究較少。文獻[13]基于FPGA 平臺,使用Winograd 算法來減小卷積算子的計算復雜度,利用幀間數(shù)據(jù)的相似性,跳過差分幀中小于所設置閾值的數(shù)據(jù)塊計算來加速計算。然而,該計算方式中閾值的存在限制了加速器的加速效果,閾值設置過高將導致模型精度損失較大。

        目前已有不少基于FPGA 平臺利用數(shù)據(jù)稀疏性來加速CNN 處理的研究工作[14-16]。Winograd 快速卷積算法可以降低卷積運算的復雜度,文獻[17-19]使用Winograd 快速卷積算法來替代直接卷積算法,并且將稀疏性應用于Winograd 算法,在FPGA 平臺上進行了實現(xiàn)。

        本文對CNN 的低精度量化方法進行分析,研究視頻應用中基于幀間數(shù)據(jù)復用的稀疏化數(shù)據(jù)流方案,提出一種輸入通道位圖壓縮的方案來同時利用激活和權重的稀疏性。在此基礎上基于FPGA 平臺設計一個高能效的稀疏CNN 加速器,并以YOLOv3-tiny 網(wǎng)絡為例進行實驗驗證。

        1 卷積神經(jīng)網(wǎng)絡算法

        1.1 幀間數(shù)據(jù)復用的卷積神經(jīng)網(wǎng)絡

        卷積神經(jīng)網(wǎng)絡基本結構由卷積層、池化層和全連接層組成,其中卷積層是卷積神經(jīng)網(wǎng)絡的最關鍵模塊,也是計算量最大、時間消耗最多的部分。卷積層包括卷積、批歸一化(Batch Normalization,BN)和激活函數(shù)。卷積運算過程如式(1)所示:

        卷積運算參數(shù)定義如表1 所示。

        表1 卷積運算參數(shù)定義Table 1 Definition of convolution operation parameters

        為了復用幀間數(shù)據(jù),加速器同時對批次為B的連續(xù)幀進行運算,需要對前后兩幀進行差分運算,得到差分幀,然后用差分幀進行卷積運算。因此除了第1 幀使用原始數(shù)據(jù)進行卷積運算外,該批次后續(xù)幀都使用差分幀數(shù)據(jù)進行卷積運算。傳統(tǒng)計算方式與幀間數(shù)據(jù)復用計算方式對比如圖1 所示。由于卷積運算為線性運算,因此在運算前先進行差分運算得到差分幀激活ΔXb,然后對差分幀ΔXb進行卷積運算,再將差分幀運算結果ΔYb與上一幀結果Y(b-1)進行累加恢復得到當前幀的卷積運算結果Yb,該結果與直接使用當前幀的原始數(shù)據(jù)進行卷積運算得到的結果是等價的。而激活函數(shù)如ReLU 等為非線性運算,因此需要在非線性激活函數(shù)運算前恢復得到當前幀的卷積結果。

        圖1 幀間數(shù)據(jù)復用計算方式Fig.1 Inter-frame data reuse computation mode

        幀間數(shù)據(jù)復用卷積計算過程如式(2)所示:

        1.2 Winograd 算法

        使用Winograd 算法可以降低卷積算子的計算復雜度,從而加速卷積運算[20]。定義F(m×n,r×s)為輸出尺寸為m×n、卷積核尺寸為r×s的卷積運算過程,該卷積運算過程使用Winograd 算法計算需要的乘法次數(shù)μ如式(3)所示:

        以F(2×2,3×3)為例,二維Winograd 算法的矩陣形式如式(4)所示:

        其中:向量矩陣g和d分別為3×3 的卷積核權重以及4×4 的輸入圖像塊。Winograd 轉換方程的參數(shù)矩陣BT、G、AT如式(5)所示:

        本文采用F(2×2,3×3)來計算3×3 的卷積核,由式(4),對4×4 的輸入圖像塊和3×3 的卷積核分別進行BTdB參數(shù)轉換計算和GgGT參數(shù)轉換計算,矩陣維度都變成4×4。因此,進行一次二維Winograd運算過程,即兩個4×4 大小的矩陣點乘運算所需乘法次數(shù)為16。對于3×3 的卷積核運算,一個輸出所需乘法次數(shù)為9 次,因此使用直接卷積的計算方式計算2×2 大小的輸出所需乘法次數(shù)為3×3×2×2=36。使用Winograd 算法來計算3×3 卷積的乘法次數(shù)由36 次減少到16 次,計算復雜度降低了2.25 倍。

        2 量化方法

        2.1 BN 層融合

        BN 層用來緩解數(shù)據(jù)分布在訓練中出現(xiàn)的偏移問題,可以加快訓練的收斂速度并且提高模型的泛化能力[21]。BN 層的計算過程如式(6)所示:

        其中:xi為i輸出通道的卷積結果;yi為i輸出通道的BN層輸出結果;μ和σ2分別為當前批次的均值和方差;γ和β分別為尺度因子和偏置;ε為防止分母為0所添加的很小的正數(shù)。

        本文將卷積層與BN 層進行了融合操作,減少了前向推理時BN 層計算的延時和硬件資源消耗。卷積層與BN 層融合后的權重和偏置如式(7)所示:

        其中:W和B分別為融合前卷積層的權重和偏置。

        2.2 網(wǎng)絡量化

        使用更低位寬來表示激活數(shù)據(jù)可以顯著增加差分幀的稀疏度。因此,對神經(jīng)網(wǎng)絡進行低精度量化可以更充分地復用幀間數(shù)據(jù)。線性量化公式及反量化公式如式(8)所示:

        其中:v是待量化的浮點數(shù)據(jù);是量化后的數(shù)據(jù)是反量化后的數(shù)據(jù);s是量化因子;QN和QP分別是量化的最小值與最大值;clip(x,cmin,cmax)函數(shù)截取超出[cmin,cmax]的值;round(x)函數(shù)返回最靠近x的整數(shù)。

        本文基于可學習的步長量化(Learned Step size Quantization,LSQ)[6]方法對網(wǎng)絡模型進行量化,實現(xiàn)了一個硬件更友好的全整形量化方法,將激活和權重位寬都量化到了4 bit。與其他量化方法根據(jù)先驗數(shù)據(jù)的最大最小值來確定量化因子s不同,LSQ 量化將s當作可學習的參數(shù)加入到網(wǎng)絡訓練中,通過訓練來尋找最合適的量化因子。量化因子s的梯度如式(9)所示:

        直接使用LSQ 方法得到的量化因子需要在硬件實現(xiàn)中使用乘法器或者DSP 來進行量化和反量化操作,不利于硬件執(zhí)行。因此,本文提出了對量化因子進行2 的冪次(Power-of-Two,PoT)約束來優(yōu)化量化方法,在硬件實現(xiàn)時直接使用移位器來完成量化和反量化操作,對硬件執(zhí)行更友好。

        本文提出的對量化因子進行PoT 約束的計算如式(10)所示:

        其中:sPoT為PoT 約束后的量化因子。

        對量化因子進行PoT 約束優(yōu)化后,本文使用的量化和反量化公式如式(11)所示:

        由于?lbssPoT=sPoTln 2,經(jīng)過優(yōu)化后,本文在量化感知訓練中所使用的量化因子的梯度如式(12)所示:

        3 加速器設計

        3.1 基于幀間數(shù)據(jù)復用的稀疏數(shù)據(jù)流方案

        對三維卷積計算按照不同的循環(huán)順序進行展開決定了加速器的數(shù)據(jù)流方案。文獻[22]基于空間上的數(shù)據(jù)復用對不同數(shù)據(jù)流方案進行了討論,目前在結合幀間數(shù)據(jù)復用和Winograd 算法的稀疏數(shù)據(jù)流方案上的研究工作很少。文獻[13]提出了結合幀間數(shù)據(jù)復用和Winograd 算法的稠密數(shù)據(jù)流方案,本文在其基礎上提出了針對本文稀疏壓縮方案的稀疏數(shù)據(jù)流。本文提出的結合幀間數(shù)據(jù)復用和Winograd 算法的稀疏數(shù)據(jù)流簡化示意圖如圖2 所示,采用F(2×2,3×3)的Winograd 算法來計算3×3 卷積,因此式(3)中的矩陣點積運算的維度為4×4,一個Winograd 塊的乘法數(shù)量為16。一個Winograd 塊要求的輸入特征圖尺寸為4×4,對于3×3 卷積,輸入特征圖的移動步長為2,因此重疊區(qū)域為2。由于1×1 卷積就是點積計算,因此對于1×1 卷積,一個卷積塊的輸入特征圖塊大小為4×4,并且移動步長為4,不存在重疊區(qū)域。由圖2 可知,在3×3 卷積的輸入特征圖塊進行Winograd 轉換之后與1×1 卷積的輸入特征圖塊一樣都是無重疊區(qū)域的4×4 大小的塊,因此3×3 卷積和1×1 卷積在計算單元中的數(shù)據(jù)維度相同,可以使用相同的稀疏數(shù)據(jù)處理路徑和同一個計算單元完成乘累加運算。但是3×3 卷積運算結果進行Winograd 轉換后輸出維度為2×2,而1×1 卷積運算輸出維度為4×4,它們的輸入輸出數(shù)據(jù)路徑不完全相同,因此在運行時需要根據(jù)配置的卷積核尺寸參數(shù)選擇相應的輸入輸出路徑。

        圖2 稀疏數(shù)據(jù)流簡化示意圖Fig.2 Schematic diagram of sparse data flow simplification

        由于FPGA 的片上硬件資源和存儲資源有限,本文對輸入特征圖進行分塊處理。一個塊內的輸入特征圖可以共享權重數(shù)據(jù),實現(xiàn)對權重數(shù)據(jù)的復用,從而減少權重數(shù)據(jù)的多次搬運。每個特征圖塊的寬度和高度分別為Wt和Ht,每個特征圖塊中Winograd塊的數(shù)目分別為TW和TH。在并行方式上,一個Winograd 塊中的矩陣點積操作并行計算,并行度為16。為了充分復用輸入特征圖數(shù)據(jù),本文在輸出通道上進行了并行展開,并行度設置為OC。為了壓縮輸入通道方向上的稀疏數(shù)據(jù)以及充分利用部分和累加結果,本文在數(shù)據(jù)加載時并行載入多個輸入通道的數(shù)據(jù),并行度設置為IC。對輸入通道進行壓縮之后,計算時仍然按照單個輸入通道進行計算,因此計算單元的并行度為16×OC。單層一個批次輸入特征圖的Winograd 塊的數(shù)量計算公式如式(13)所示:

        3.2 稀疏數(shù)據(jù)表示格式

        稀疏數(shù)據(jù)常用的表示格式有壓縮稀疏行/列、坐標(Coordinate,COO)和位圖(Bitmap,BM)等。其中位圖格式相比其他方式只使用單比特來表示數(shù)據(jù)是否有效,存儲資源更少,索引效率更高。本文使用位圖格式來表示權重數(shù)據(jù)和激活數(shù)據(jù)是否有效,同時利用權重和激活的稀疏性來最大化跳過無效的零值計算。假定二維矩陣的大小為Wb×IC,稀疏數(shù)據(jù)表示格式如圖3 所示。

        圖3 位圖稀疏數(shù)據(jù)的表示格式Fig.3 Representation format of bitmap sparse data

        對于3×3 卷積,本文的位圖稀疏針對的是Winograd 轉換之后的數(shù)據(jù),對于1×1 卷積則是對原始數(shù)據(jù)使用位圖稀疏。激活數(shù)據(jù)在計算時動態(tài)生成,因此激活位圖在片上動態(tài)生成,權重數(shù)據(jù)在訓練完成之后就已經(jīng)固定,則權重位圖離線生成。為了索引方便,權重數(shù)據(jù)和激活數(shù)據(jù)的存儲仍然按照稠密格式存儲。由于Winograd 塊的大小為4×4,因此Wb=16。本文提出了針對并行度為IC 的輸入通道位圖壓縮稀疏方案,通過跳過無效輸入通道的計算來加速卷積運算。假設Wb=2、IC=8、OC=2,稀疏方案示意圖如圖4 所示。

        圖4 輸入通道位圖壓縮方案Fig.4 Bitmap compression scheme of input channel

        激活位圖與對應的權重進行相與后得到激活和權重同時有效的位圖矩陣,之后通過索引電路找到有效輸入通道的索引。

        3.3 加速器整體架構

        加速器整體架構如圖5所示。加速器與主存通過AXI 接口進行數(shù)據(jù)傳輸,通過AXI-Lite 接口來配置加速器的工作模式以及獲取加速器的工作狀態(tài)。加速器的關鍵模塊包括控制器、緩存單元、Winograd 轉換單元、數(shù)據(jù)預處理單元、計算單元、幀數(shù)據(jù)恢復單元和差分幀計算單元等。Winograd轉換單元在計算3×3卷積時完成激活數(shù)據(jù)從原始域到Winograd域的轉換以及完成結果數(shù)據(jù)從Winograd 域到原始域的轉換,在計算1×1卷積時則跳過Winograd轉換過程。幀數(shù)據(jù)恢復單元將計算出的當前差分幀卷積結果與緩存的上一幀卷積結果進行累加運算恢復出當前幀的卷積結果。差分幀計算單元將當前幀輸出特征圖與緩存的上一幀輸出特征圖進行差分運算,計算下一層網(wǎng)絡所需要的差分幀特征圖以便復用幀間數(shù)據(jù)進行加速處理。

        圖5 加速器整體架構Fig.5 Overall architecture of accelerator

        3.3.1 緩存單元

        加速器中的緩存單元包括權重位圖緩存、權重緩存、輸入激活緩存、偏置項緩存、部分和緩存、參考幀數(shù)據(jù)緩存以及輸出緩存等多個緩存單元。其中權重位圖緩存一次性緩存了當前層的所有權重位圖數(shù)據(jù),偏置項緩存存儲了所有層的偏置數(shù)據(jù)。權重緩存、輸入激活緩存和輸出緩存都使用了乒乓結構來提高數(shù)據(jù)傳輸?shù)男?。所有的緩存單元都使用了FPGA 上的BRAM 資源來實現(xiàn)。

        3.3.2 稀疏處理單元

        稀疏處理單元用來實現(xiàn)所提出的輸入通道位圖壓縮的稀疏方案。激活數(shù)據(jù)的位圖生成模塊根據(jù)Winograd 轉換后的數(shù)據(jù)或者原始數(shù)據(jù)生成16 個長度為IC的激活位圖數(shù)據(jù),并將激活位圖與權重位圖進行與運算后得到16×OC個長度為IC的位圖,將這些位圖送入到有效項數(shù)目計算模塊中求出16×OC個有效輸入通道的數(shù)目,然后將這些數(shù)據(jù)送入到求最大值電路中求出有效輸入通道的最大值。前導1 位置檢測電路(Leading One Position Detector,LOPD)對長度為IC的位圖進行檢測,找到有效輸入通道的位置并將位置索引送入到激活和權重選擇模塊,由激活和權重選擇模塊選擇有效的激活數(shù)據(jù)和權重數(shù)據(jù)送入計算單元中進行計算。

        由于需要求出有效輸入通道的最大值之后才能確定何時更新下一次輸入通道的數(shù)據(jù),因此即使輸入數(shù)據(jù)全部為無效數(shù)據(jù),仍然需要消耗一定的時鐘周期來完成判定。

        3.3.3 計算單元

        計算單元為PE 并行單元的陣列,每個PE 單元完成4×4 的點積操作,因此每個PE 單元包括16 個乘累加(Multiply-Accumulate,MAC)單元和1 個部分和緩存單元,MAC 完成激活和權重的點積運算以及在輸入通道方向上的累加運算,部分和緩存單元緩存一個特征圖分塊的中間結果。PE 單元每個時鐘周期完成一個Winograd 塊的計算,并行MAC 數(shù)量為16,計算單元的并行PE 單元數(shù)量為OC,因此加速器總的并行MAC 數(shù)量為16×OC。

        4 實驗與結果分析

        4.1 實驗環(huán)境

        本文算法實驗基于PyTorch 框架在RTX3090 GPU 上進行,使用的網(wǎng)絡為YOLOv3-tiny,網(wǎng)絡量化使用的數(shù)據(jù)集為ILSVRC2015 VID 部分數(shù)據(jù)集和DAC2020 數(shù)據(jù)集,使用平均精度均值(mean Average Precision,mAP)作為準確率的指標。分塊大小設置為Wt=Ht=12,輸入圖像大小設置為384×384 像素。硬件平臺為Xilinx KC705,加速器在Vivado 2020.2軟件平臺上完成綜合與實現(xiàn)。設置參數(shù)batch 為16,OC=16、IC=16,加速器消耗的FPGA 資源如表2 所示。由于激活和權重位寬都量化到了4 bit,因此為了降低功耗,計算單元直接使用LUT 表來實現(xiàn)乘累加運算,而不是使用DSP 實現(xiàn)。

        表2 加速器消耗的FPGA 資源Table 2 FPGA resources consumed by accelerator

        4.2 結果分析

        4.2.1 網(wǎng)絡低精度量化

        使用所提出的低精度量化方法對YOLOv3-tiny網(wǎng)絡進行量化,ILSVRC2015 VID 部分數(shù)據(jù)集和DAC2020 數(shù)據(jù)集在4 bit 整形量化后的mAP 損失結果分別如表3 所示。

        表3 4 bit 全整形量化后的mAP 損失結果Table 3 mAP loss with 4 bit full integer quantization %

        表3 中的數(shù)據(jù)表明使用所提出的低精度量化方法將權重和激活位寬都量化到了4 bit,所使用的數(shù)據(jù)集的mAP 損失都小于2%。

        使用ILSVRC2015 VID 數(shù)據(jù)集進行分析,輸入特征圖量化為4 bit 后各個卷積層差分幀與原始幀的稀疏度變化如圖6 所示。從圖6 可以看出,差分幀的整體稀疏度為80%,與原始幀的整體稀疏度相比有23%的提升。

        圖6 4 bit 差分幀與原始幀的稀疏度Fig.6 Sparsity between 4 bit diff-frame and raw-frame

        4.2.2 加速器性能

        本文使用ILSVRC2015 VID 數(shù)據(jù)集來驗證加速器的性能。本文的加速器設計結合了Winograd 算法、幀間數(shù)據(jù)復用、利用數(shù)據(jù)的稀疏性跳過無效數(shù)據(jù)的計算等多種優(yōu)化方法,因此對不同優(yōu)化方法的組合對性能的提升效果進行了探究,結果如圖7 所示。由圖7 可知,使用Winograd 算法后性能相比Baseline提高了2.14 倍,接近2.25 倍的理論性能提升。采用所提方案設計的加速器性能與原始方法的性能相比具有6.4 倍的提升。

        圖7 不同優(yōu)化方案的性能Fig.7 Performance of different optimization mchemes

        輸入通道并行度IC的大小決定了對稀疏數(shù)據(jù)的利用率,對加速器的性能具有很大的影響。本文對不同輸入通道并行度下的性能和稀疏度進行了探究,結果如圖8 所示。對IC設置的過小則無法充分利用數(shù)據(jù)的稀疏性,導致性能受限。同時,IC受到數(shù)據(jù)傳輸帶寬的限制無法設置過大,雖然在IC為32 時具有更高的稀疏度和性能,但是受限于加速器帶寬,本文設置IC為16。

        圖8 不同輸入通道下的性能和稀疏度Fig.8 Performance and sparsity with different input channels

        本文所設計的加速器的性能和功耗及其與目前基于FPGA 的其他加速器對比結果如表4所示。本文方案在運行頻率為200 MHz 的條件下實現(xiàn)了814.2×109operation/s 的性能以及201.1×109operation/s/W 的能效 比。與其他使用YOLOv3-tiny 網(wǎng)絡的加速器相比,本文提供了1.77~8.99 倍的性能提升以及1.91~5.56 倍的能效比提升。

        表4 基于YOLOv3-tiny 的加速器性能比較Table 4 Performance comparison with accelerators based on YOLOv3-tiny

        5 結束語

        本文設計一個基于幀間數(shù)據(jù)復用的高能效稀疏卷積神經(jīng)網(wǎng)絡加速器。該加速器通過量化感知訓練的方式對網(wǎng)絡進行低精度量化,使用Winograd 算法降低CNN 的計算復雜度,并通過差分幀的方式增加輸入特征圖的稀疏度,在此基礎上提出輸入通道位圖壓縮方法跳過無效輸入通道的計算。實驗結果表明,本文所設計的高能效稀疏CNN 加速器在性能和能效上都優(yōu)于同類型的加速器。后續(xù)將進一步研究如何提高激活的稀疏度,并提出相應的方法優(yōu)化負載平衡及提高計算單元的利用率,進一步提升加速器的性能和能效比。

        猜你喜歡
        加速器差分運算
        輪滑加速器
        化學工業(yè)的“加速器”
        重視運算與推理,解決數(shù)列求和題
        數(shù)列與差分
        全民小康路上的“加速器”
        少先隊活動(2021年6期)2021-07-22 08:44:24
        有趣的運算
        “整式的乘法與因式分解”知識歸納
        撥云去“誤”學乘除運算
        等待“加速器”
        基于差分隱私的大數(shù)據(jù)隱私保護
        欧美丰满熟妇bbb久久久| 国产三级在线观看高清| 美女免费观看一区二区三区| 中文字幕在线日亚州9| 日韩乱码人妻无码中文字幕视频| 国产一区二区丰满熟女人妻| 青青草久久久亚洲一区| 日韩av无码社区一区二区三区| 国产精一品亚洲二区在线播放| 亚洲中文字幕在线爆乳| 中文字幕日韩精品亚洲精品| 亚无码乱人伦一区二区| 亚洲男人的天堂网站| 天天干夜夜躁| av天堂手机在线看片资源| 99在线精品免费视频| 国产在线无码一区二区三区| 国产美女精品AⅤ在线老女人| 你懂的视频在线看播放| 亚洲精品www久久久久久| 久久ri精品高清一区二区三区| 国产精品人人爱一区二区白浆| 国产女同va一区二区三区| 日韩丰满少妇无码内射| 国产高清无码91| 国产精品二区三区在线观看| 国产成人无码av一区二区在线观看| 日日碰狠狠躁久久躁| 亚洲综合一| 免费一区二区三区女优视频| 国产精品99久久久久久猫咪| 久久无码人妻一区=区三区| 蜜桃人妻午夜精品一区二区三区 | 免费a级毛片永久免费| 青青草视频网站免费观看| 国产在线视频网友自拍| 亚洲乱码日产精品一二三| 亚洲视频天堂| 69久久精品亚洲一区二区| 熟女无套高潮内谢吼叫免费| 免费av片在线观看网站|