《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于脈動(dòng)陣列的卷積計(jì)算模塊硬件設(shè)計(jì)
基于脈動(dòng)陣列的卷積計(jì)算模塊硬件設(shè)計(jì)
2020年電子技術(shù)應(yīng)用第1期
王春林,譚克俊
大連海事大學(xué) 信息科學(xué)技術(shù)學(xué)院,遼寧 大連116026
摘要: 針對(duì)FPGA實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)中卷積計(jì)算的過(guò)程中,高并行度帶來(lái)長(zhǎng)廣播、多扇入/扇出的數(shù)據(jù)通路問(wèn)題,采用脈動(dòng)陣列來(lái)實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)中卷積計(jì)算模塊,將權(quán)重固定到每個(gè)處理單元中,并按照輸入和輸出特征圖的維度來(lái)設(shè)置脈動(dòng)陣列的大小,最后通過(guò)Vivado高層次綜合實(shí)現(xiàn)卷積計(jì)算模塊的硬件設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表明,本設(shè)計(jì)在實(shí)現(xiàn)1級(jí)流水化時(shí)序要求的同時(shí),具有較低的資源占用和良好的擴(kuò)展性。
中圖分類(lèi)號(hào): TN402;TP391.41
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.191070
中文引用格式: 王春林,譚克俊. 基于脈動(dòng)陣列的卷積計(jì)算模塊硬件設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2020,46(1):57-61.
英文引用格式: Wang Chunlin,Tan Kejun. Hardware design of convolution calculation module based on systolic array[J]. Application of Electronic Technique,2020,46(1):57-61.
Hardware design of convolution calculation module based on systolic array
Wang Chunlin,Tan Kejun
Information Science and Technology College,Dalian Maritime University,Dalian 116026,China
Abstract: Aiming at the long broadcast, much fan in/fan out data path problem brought by high parullelism in the process of the Field Programmable Gate Array(FPGA) to realize the convolution computation in convolutional neural network, this paper adopts pulse array to realize convolution calculation module of convolutional neural network, fixes weights to each processing unit, according to the dimension of the input and output characteristic figure sets to pulse array size, and finally by Vivado high level synthesis realizes convolution calculation module hardware design. The experimental results show that the design has low resource occupancy and good expansibility while realizing the time-series requirements of level 1 pipelining.
Key words : FPGA;systolic array;convolution computation;high level synthesis

0 引言

    在過(guò)去的幾年里,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)在圖像分類(lèi)、目標(biāo)檢測(cè)[1]及圖像分割等領(lǐng)域起到十分重要的作用。這些使用的各種DNNs及其拓?fù)浣Y(jié)構(gòu)中,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是其中最為常見(jiàn)的實(shí)現(xiàn)方式。目前在硬件加速方案中,主要有基于CPU、GPU以及FPGA三種主流方案。考慮到 CPU性能限制和GPU功耗高的問(wèn)題,采用FPGA來(lái)實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)成為了一種可行的實(shí)現(xiàn)方式,例如文獻(xiàn)[2]在FPGA中實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測(cè)系統(tǒng),其檢測(cè)速度與能效均優(yōu)于CPU。采用傳統(tǒng)的Verilog HDL或者VHDL硬件描述語(yǔ)言實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)較為困難[3]高層次綜合(High Level Synthesis,HLS)將C/C++代碼通過(guò)特定的編譯器轉(zhuǎn)化為相應(yīng)的RTL級(jí)的代碼,降低了卷積神經(jīng)網(wǎng)絡(luò)的開(kāi)發(fā)難度,減少了卷積神經(jīng)網(wǎng)絡(luò)的開(kāi)發(fā)周期。

    使用FPGA實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)中卷積計(jì)算模塊的過(guò)程中,通常采用循環(huán)平鋪和循環(huán)展開(kāi)[4]的方式實(shí)現(xiàn)。這種方式以擴(kuò)大并行度來(lái)達(dá)到網(wǎng)絡(luò)的時(shí)間復(fù)雜度。但是當(dāng)輸入和輸出特征圖維度增加時(shí),擴(kuò)大并行度會(huì)帶來(lái)硬件設(shè)計(jì)中長(zhǎng)廣播、多扇入/扇出的數(shù)據(jù)通路,導(dǎo)致卷積計(jì)算模塊無(wú)法在較高的主頻上運(yùn)行。因此,很多神經(jīng)網(wǎng)絡(luò)加速器都使用脈動(dòng)陣列來(lái)優(yōu)化加速器架構(gòu)設(shè)計(jì),如谷歌TPU加速器[5]、ShiDianNao加速器[6]等。而在這些加速器架構(gòu)設(shè)計(jì)中大多是采用im2col[7]的方式,即將參與卷積計(jì)算的輸入特征圖和權(quán)重展開(kāi)為兩個(gè)矩陣,然后進(jìn)行矩陣乘法運(yùn)算。這種實(shí)現(xiàn)方式因?yàn)榫矸e步長(zhǎng)的存在而產(chǎn)生大量的數(shù)據(jù)重疊,不利于在FPGA的片上塊存儲(chǔ)器(Block RAM,BRAM)內(nèi)進(jìn)行存儲(chǔ)。

    為了解決上述存在的問(wèn)題,本文提出一種基于脈動(dòng)陣列的卷積計(jì)算模塊設(shè)計(jì),將由并行展開(kāi)所帶來(lái)的長(zhǎng)數(shù)據(jù)通路變?yōu)槊總€(gè)處理單元的短數(shù)據(jù)通路;并按照存儲(chǔ)矩陣的坐標(biāo)向卷積計(jì)算模塊中輸入特征圖數(shù)據(jù),以解決im2col方式存在的數(shù)據(jù)重疊,不利于BRAM存儲(chǔ)的問(wèn)題。整體設(shè)計(jì)使用Vivado HLS開(kāi)發(fā)環(huán)境進(jìn)行實(shí)現(xiàn)與優(yōu)化。

1 本文工作

1.1 脈動(dòng)陣列實(shí)現(xiàn)卷積計(jì)算模塊

    脈動(dòng)陣列(Systiloc Array)[8]是1970年KUNG H T[9]提出的一種應(yīng)用在片上多處理器的體系結(jié)構(gòu),由多個(gè)相同的、結(jié)構(gòu)簡(jiǎn)單的計(jì)算單元(Processing Element,PE)以網(wǎng)格狀形式連接而成,具有并行性、規(guī)律性和局部通信的特征。信號(hào)處理算法如卡爾曼濾波[10]和數(shù)值線(xiàn)性代數(shù)算法都可以用脈動(dòng)陣列來(lái)實(shí)現(xiàn)。本文卷積計(jì)算模塊中采用的脈動(dòng)陣列實(shí)現(xiàn)方式如圖1所示。

wdz5-t1.gif

    在圖1中,I表示輸入特征圖,W表示權(quán)重參數(shù),O表示輸出特征圖,r、c分別表示特征圖的長(zhǎng)和寬,m、n分別表示輸入特征圖與輸出特征圖的層數(shù)。在開(kāi)始進(jìn)行卷積運(yùn)算之前,將特征圖數(shù)據(jù)輸入到BRAM中進(jìn)行緩存,將權(quán)重輸入到每個(gè)PE中進(jìn)行緩存。開(kāi)始計(jì)算之后,輸入緩存中的數(shù)據(jù)沿脈動(dòng)陣列的列方向進(jìn)行傳輸,PE計(jì)算的結(jié)果沿脈動(dòng)陣列行方向進(jìn)行傳輸。非第0列的PE按照公式(1)進(jìn)行計(jì)算:

     wdz5-gs1.gif

式中PEin表示從輸入緩存或者上一個(gè)PE讀取輸入數(shù)據(jù),W表示PE緩存的權(quán)重?cái)?shù)據(jù),PEout表示每個(gè)PE儲(chǔ)存的計(jì)算結(jié)果,cho與chi分別表示當(dāng)前PE的行列坐標(biāo)。第0列的PE只進(jìn)行乘法運(yùn)算。在每一行PE的末尾處連接一個(gè)result緩存,用來(lái)累加和存儲(chǔ)每行最后一個(gè)PE輸出的結(jié)果,并在完成一個(gè)卷積核運(yùn)算之后將存儲(chǔ)結(jié)果輸出到輸出緩存中。本文脈動(dòng)陣列結(jié)構(gòu)設(shè)置為矩形脈動(dòng)陣列,長(zhǎng)和寬分別以輸入特征圖和輸出特征圖的層數(shù)來(lái)部署,并且每個(gè)PE在一個(gè)時(shí)鐘周期內(nèi)進(jìn)行一個(gè)乘法和加法運(yùn)算,根據(jù)這個(gè)條件可以得到所有PE完成計(jì)算所需要的時(shí)間計(jì)算公式:

    wdz5-gs2.gif

式中,Tsum表示完成所有輸出特征圖的計(jì)算所需要的時(shí)間,R、C分別表示輸出特征圖的長(zhǎng)和寬,Cin、Cout分別表示輸入特征圖層數(shù)和輸出特征圖層數(shù),K表示卷積核的邊長(zhǎng),Tprc表示每個(gè)時(shí)鐘周期所需要的時(shí)間。如果R和C的大小設(shè)置為5,Cin和Cout分別設(shè)置為3和8,K設(shè)置為3,Tprc為10 ns,根據(jù)公式(2)可以得到理論上需要的時(shí)間為2 340 ns。

1.2 卷積計(jì)算模塊硬件設(shè)計(jì)

    根據(jù)1.1節(jié)中脈動(dòng)陣列在卷積計(jì)算模塊中的實(shí)現(xiàn)方式,在Vivado HLS開(kāi)發(fā)環(huán)境上對(duì)卷積計(jì)算模塊進(jìn)行設(shè)計(jì)。卷積計(jì)算模塊分為三個(gè)部分:輸入階段、計(jì)算階段和累加輸出階段。

    輸入階段的流程圖如圖2所示,圖中in(chi,ir,ic)表示BRAM存儲(chǔ)的輸入特征圖,ir、ic分別表示特征圖的長(zhǎng)和寬。mid_in(cho,chi)和mid_out(cho,chi)分別表示每一個(gè)PE中的輸入和輸出緩存,CHI表示輸入特征圖的層數(shù),CHO表示輸出特征圖層數(shù),COUNT表示一個(gè)PE需要進(jìn)行卷積運(yùn)算的次數(shù)。chi、cho、loc表示三個(gè)變量,分別表示脈動(dòng)陣列的列坐標(biāo)、行坐標(biāo)以及運(yùn)行計(jì)數(shù)。根據(jù)圖2中的運(yùn)行方式,每經(jīng)過(guò)一個(gè)時(shí)鐘周期,位于脈動(dòng)陣列非0列的mid_in會(huì)從上一個(gè)相同行的mid_in中讀取輸入數(shù)據(jù)。位于脈動(dòng)陣列的第0列的mid_in,會(huì)根據(jù)運(yùn)行狀態(tài)判斷是否需要從BRAM中讀取輸入特征圖數(shù)據(jù)。

wdz5-t2.gif

    計(jì)算階段的流程圖如圖3所示,其中weight(cho,chi,kr,kc)表示緩存到PE中權(quán)重參數(shù),kr、kc分別表示卷積核的列坐標(biāo)與行坐標(biāo)。當(dāng)輸入階段結(jié)束之后,進(jìn)入計(jì)算階段。位于脈動(dòng)陣列非0排的mid_out會(huì)將mid_in中的數(shù)據(jù)與weight中的數(shù)據(jù)做乘法,再和上一個(gè)相同列的mid_out中的輸出數(shù)據(jù)做加法。位于脈動(dòng)陣列第0排的mid_out則只做一次乘法。PE計(jì)算結(jié)果保存在當(dāng)前mid_out中。

wdz5-t3.gif

    累加輸出階段的流程圖如圖4所示,圖中out(cho,r,c)表示BRAM中輸出特征圖緩存,r、c分別表示輸出特征圖的列坐標(biāo)與行坐標(biāo)。result表示輸出緩存到BRAM之間的累加寄存器,用來(lái)將脈動(dòng)陣列末尾行PE的結(jié)果進(jìn)行累加,k表示寄存器運(yùn)行的累加次數(shù)。當(dāng)一個(gè)卷積核運(yùn)算完成之后,將結(jié)果按照當(dāng)前的行列坐標(biāo)輸出到BRAM中的out緩存中,之后result寄存器清零,繼續(xù)下一次累加計(jì)算。

wdz5-t4.gif

    在這三個(gè)階段運(yùn)行過(guò)程中,希望在每一個(gè)時(shí)鐘周期內(nèi),當(dāng)前PE可以從外部或者相鄰的PE中讀取一個(gè)數(shù)據(jù)進(jìn)行乘加計(jì)算。因此使用#pragma HLS PIPELINE管道操作優(yōu)化指令,并設(shè)置流水為1級(jí)流水,保證每個(gè)時(shí)鐘內(nèi)都能夠開(kāi)啟一次新的計(jì)算。在使用流水化操作之后,為了保證在輸入階段和計(jì)算階段的數(shù)據(jù)不會(huì)被覆蓋,采用移位寄存器的運(yùn)行方式,由末尾的PE開(kāi)始依次從相鄰的上一個(gè)PE讀取數(shù)據(jù),新數(shù)據(jù)最后再進(jìn)行輸入。

    同時(shí),因?yàn)椴捎脤?quán)重固定到PE中的計(jì)算模式,所以將In和Out以數(shù)組的形式存放到BRAM中。因?yàn)槊總€(gè)BRAM最大可配置的輸入輸出端口數(shù)為2,所以當(dāng)同時(shí)從BRAM中輸入輸出數(shù)量大于2時(shí),就需要等待上一個(gè)操作結(jié)束之后,再執(zhí)行下一個(gè)操作,這樣就無(wú)法達(dá)到1級(jí)流水所需要的時(shí)間間隔。因此使用#pragma HLS ARRAY_PARTITION variable=<variable> complete dim=X指令,其中<variable>表示需要展開(kāi)的數(shù)組名,X表示需要展開(kāi)的數(shù)組維度,將in(chi,ir,ic)和out(cho,r,c)按照第一個(gè)維度展開(kāi)成多個(gè)數(shù)組,來(lái)匹配脈動(dòng)陣列的輸入與輸出。

2 實(shí)驗(yàn)結(jié)果與分析

    本文在Vivado HLS 18.3開(kāi)發(fā)環(huán)境上進(jìn)行綜合與仿真,使用的FPGA芯片型號(hào)為賽靈思公司的xc7z020clg484-1,運(yùn)行時(shí)鐘為100 MHz。使用輸入特征圖7×7大小的3層矩陣,得到的輸出特征圖為5×5的8層矩陣。卷積核采用8×3組大小為3×3的矩陣。單個(gè)PE的功能仿真波形如圖5所示。

wdz5-t5.gif

    其中,din0和din1分別表示輸入特征圖和權(quán)重?cái)?shù)據(jù),din2表示從上一個(gè)相鄰PE中讀取的計(jì)算結(jié)果。dout表示乘加計(jì)算之后的結(jié)果,d0表示result寄存器中的輸入數(shù)據(jù),q0表示result寄存器的輸出數(shù)據(jù)。由于本文采用的時(shí)鐘頻率為100 MHz,每個(gè)時(shí)鐘周期為10 ns。從圖5中可以看出,當(dāng)ce0信號(hào)置1時(shí),表示開(kāi)始進(jìn)行運(yùn)算。之后在每一個(gè)時(shí)鐘周期內(nèi),都進(jìn)行一次乘加運(yùn)算,并將結(jié)果通過(guò)dout進(jìn)行輸出。因?yàn)椴捎?級(jí)流水優(yōu)化指令,dout輸出的結(jié)果將會(huì)在下一個(gè)時(shí)鐘周期輸出到d0。然后進(jìn)行累加操作。當(dāng)完成3×3次加法運(yùn)算,輸出標(biāo)志位we0信號(hào)置1,然后result寄存器將當(dāng)前的d0結(jié)果按照address0的地址通過(guò)q0輸出到指定BRAM上的輸出緩存中。然后d0清零,等待下一次計(jì)算開(kāi)始。

    卷積計(jì)算模塊的輸出波形如圖6所示。從圖中可以看出,在ap_start使能信號(hào)置1之后,經(jīng)過(guò)17個(gè)時(shí)鐘周期得到輸出結(jié)果。從開(kāi)始輸出結(jié)果,到輸出完成,一共經(jīng)過(guò)234個(gè)時(shí)鐘周期,也就是2 340 ns,與公式(2)中計(jì)算結(jié)果相同。

wdz5-t6.gif

    卷積計(jì)算模塊的總體時(shí)延如表1所示,從表中可以看出,每次計(jì)算PE需要17個(gè)時(shí)鐘周期才能夠得到結(jié)果。在使用了流水化操作,并且達(dá)到了1級(jí)流水的目標(biāo)之后,每個(gè)時(shí)鐘周期都會(huì)開(kāi)啟一個(gè)新的循環(huán),PE無(wú)需等待到計(jì)算出結(jié)果就可以進(jìn)行下一個(gè)循環(huán)。與圖6中的波形結(jié)果相同。

wdz5-b1.gif

    表2所示為卷積計(jì)算模塊的總體資源消耗,卷積計(jì)算的核心就是乘法運(yùn)算。賽靈思xc7z020clg484-1型FPGA芯片內(nèi)置了DSP48核,可同時(shí)進(jìn)行一組乘法和加法運(yùn)算。根據(jù)卷積模塊的設(shè)計(jì),每一個(gè)PE使用一個(gè)DPS48核進(jìn)行乘加計(jì)算。在CHI為3,CHO為8的情況下,一共需要24個(gè)DPS48核,與表中使用資源情況相符。觸發(fā)器和查找表資源使用也較少,為之后擴(kuò)大卷積計(jì)算模塊和設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)其余模塊預(yù)留了充足的資源。

wdz5-b2.gif

3 結(jié)論

    卷積神經(jīng)網(wǎng)絡(luò)中存在著大量的卷積計(jì)算,本文在資源使用情況較少的情況下,基于脈動(dòng)陣列的運(yùn)行方式,對(duì)并行展開(kāi)的卷積計(jì)算模塊進(jìn)行改進(jìn),然后通過(guò)Vivado HLS在賽靈思xc7z020clg484-1型FPGA芯片上進(jìn)行實(shí)現(xiàn)。在后續(xù)的研究中,可以將脈動(dòng)陣列與循環(huán)展開(kāi)和循環(huán)平鋪等并行展開(kāi)方式相結(jié)合,從提高運(yùn)行速度與降低使用資源上進(jìn)一步提升卷積計(jì)算模塊的性能。

參考文獻(xiàn)

[1] 張杰,隋陽(yáng),李強(qiáng),等.基于卷積神經(jīng)網(wǎng)絡(luò)的火災(zāi)視頻圖像檢測(cè)[J].電子技術(shù)應(yīng)用,2019,45(4):34-38,44.

[2] 陳辰,嚴(yán)偉,夏珺,等.基于FPGA的深度學(xué)習(xí)目標(biāo)檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2019,45(8):40-43,47.

[3] Zhang Xiaofan,Wang Junson,Zhu Chao,et al.DNN-Builder:an automated tool for building high-performance DNN hardware accelerators for FPGAs[C].Proceedings of the International Conference on Computer-Aided Design.ACM,2018.

[4] Zhang Chen,Li Peng,Sun Guangyu,et al.Optimizing fpga-based accelerator design for deep convolutional neural networks[C]. Proceedings of the 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays.ACM,2015.

[5] JOUPPI N P,YOUNG C,PATIL N,et al.In-datacenter performance analysis of a tensor processing unit[C].2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture(ISCA).IEEE,2017.

[6] Chen Tianshi,Du Zidong,Sun Ninghui,et al.Diannao:a small-footprint high-throughput accelerator for ubiquitous machine-learning[C].ACM Sigplan Notices.ACM,2014:269-284.

[7] HU Y H,KUNG S Y.Systolic arrays.in:handbook of signal processing systems[M].Springer,Cham,2019:939-977.

[8] SANAULLAH A,HERBORDT M C.Unlocking performance-programmability by penetrating the Intel FPGA OpenCL Toolflow[C]. 2018 IEEE High Performance Extreme Computing Conference(HPEC).IEEE,2018.

[9] KUNG H T,LEISERSON C E.Systolic arrays(for VLSI)[C].Sparse Matrix Proceedings 1978,Society for Industrial and Applied Mathematics,1979.

[10] 王陽(yáng),陶華敏,肖山竹,等.基于脈動(dòng)陣列的矩陣乘法器硬件加速技術(shù)研究[J].微電子學(xué)與計(jì)算機(jī),2015,32(11):120-124.



作者信息:

王春林,譚克俊

(大連海事大學(xué) 信息科學(xué)技術(shù)學(xué)院,遼寧 大連116026)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区91| 免费观看成人| 亚洲国产日韩欧美在线图片| 亚洲女人天堂成人av在线| 99国产精品视频免费观看| 亚洲欧洲午夜| 亚洲欧洲一区二区在线播放| 亚洲福利视频一区二区| 伊人精品在线| 极品av少妇一区二区| 在线看成人片| 亚洲国产裸拍裸体视频在线观看乱了中文| 狠狠色丁香婷婷综合| 国内精品久久久久久影视8| 国产色产综合产在线视频| 国产欧美日韩在线播放| 国产麻豆日韩| 国产一区二区日韩| 精品999成人| 亚洲第一免费播放区| 亚洲国产精品小视频| 亚洲精品欧美在线| 在线视频免费在线观看一区二区| 一区二区高清| 亚洲欧美视频| 亚洲高清久久网| 日韩一级大片| 亚洲男人第一av网站| 午夜精品福利一区二区蜜股av| 新片速递亚洲合集欧美合集| 欧美在线一级va免费观看| 久久久噜噜噜久噜久久| 麻豆成人91精品二区三区| 欧美国产一区视频在线观看| 欧美日韩国产123区| 国产精品每日更新| 国内精品久久国产| 亚洲精品国产欧美| 亚洲欧美国产精品桃花| 欧美在线综合| 一本大道av伊人久久综合| 亚洲在线视频网站| 久久精品卡一| 欧美黄污视频| 国产精品入口麻豆原神| 狠狠久久综合婷婷不卡| 亚洲免费av片| 欧美一级二区| 一区二区三区你懂的| 欧美一区二区免费视频| 免费在线欧美视频| 国产精品v欧美精品v日本精品动漫| 国产欧美一级| 亚洲精品欧美| 欧美一区二区三区精品| 99在线精品观看| 久久av老司机精品网站导航| 欧美成人中文| 国产欧美日韩中文字幕在线| 亚洲国产片色| 午夜视频一区| 99精品99久久久久久宅男| 午夜欧美大片免费观看 | 欧美日韩国产综合在线| 国产三区精品| 99国内精品| 久久精品91久久久久久再现| 亚洲一区二区三区视频播放| 久久久久99| 欧美性片在线观看| 在线欧美日韩国产| 亚洲欧美日韩成人高清在线一区| 亚洲精品乱码久久久久久久久| 亚洲欧美日韩国产| 欧美国产丝袜视频| 国产一区二区无遮挡| 一区二区三区成人精品| 亚洲人成在线观看一区二区| 欧美一区精品| 欧美视频在线观看 亚洲欧| 在线播放亚洲| 亚洲欧美一区二区三区在线| 一区二区三区 在线观看视| 久久婷婷影院| 国产区二精品视| 这里只有精品视频在线| 亚洲人体偷拍| 久久亚洲高清| 国产午夜精品美女视频明星a级| 一区二区三区 在线观看视| 亚洲精品偷拍| 免费观看不卡av| 激情成人在线视频| 亚洲欧美日韩精品久久久久| 在线一区视频| 欧美精品麻豆| 亚洲高清三级视频| 亚洲国产婷婷香蕉久久久久久99| 久久精品卡一| 国产一区二区三区观看| 亚洲欧美日韩精品在线| 亚洲欧美日韩一区在线| 欧美三级韩国三级日本三斤| 亚洲日本国产| 99天天综合性| 欧美破处大片在线视频| 91久久国产自产拍夜夜嗨| 亚洲欧洲一区二区三区在线观看| 久久久久免费观看| 韩国av一区| 久久国产加勒比精品无码| 久久福利精品| 国产一区二区日韩精品欧美精品| 午夜久久tv| 久久aⅴ国产紧身牛仔裤| 国产欧美一区二区三区另类精品| 亚洲男人天堂2024| 欧美一区二区三区四区高清| 国产精品手机在线| 香蕉久久夜色精品| 久久久免费精品| 国产亚洲一级高清| 久久都是精品| 麻豆精品在线观看| 亚洲国产综合视频在线观看| 亚洲精品视频免费在线观看| 欧美激情一区二区三区四区| 亚洲欧洲日产国产综合网| 一区二区电影免费观看| 欧美视频在线看| 亚洲一区二区三区午夜| 久久国产精品一区二区三区四区| 国产一区二区成人| 亚洲激情女人| 欧美激情第二页| 99re6这里只有精品视频在线观看| 一区二区三区av| 国产精品美女一区二区| 性欧美xxxx大乳国产app| 久久综合色播五月| 亚洲国产精品成人一区二区| 中文在线不卡| 国产免费成人av| 亚洲国产欧美在线人成| 欧美日韩不卡一区| 亚洲综合国产| 猫咪成人在线观看| 亚洲毛片在线看| 亚洲免费在线观看视频| 国产主播一区二区| 夜色激情一区二区| 国产精品久久久久久一区二区三区| 亚洲免费在线播放| 久久午夜视频| 亚洲精品视频在线观看网站| 欧美亚洲三级| 在线看视频不卡| 亚洲一区视频在线观看视频| 国产伦精品一区二区三区高清| 亚洲风情在线资源站| 欧美精品三级| 亚洲欧美伊人| 欧美国产欧美亚洲国产日韩mv天天看完整| 99在线精品视频在线观看| 久久av红桃一区二区小说| 亚洲第一黄网| 香蕉久久夜色精品国产| 在线不卡中文字幕播放| 亚洲一区二区三区高清不卡| 国产一区二区三区黄视频| 日韩视频永久免费观看| 国产农村妇女毛片精品久久麻豆| 亚洲欧洲日韩女同| 国产农村妇女精品| av成人毛片| 国产综合色产| 亚洲一区一卡| 亚洲二区在线观看| 欧美一区二区三区喷汁尤物| 亚洲欧洲日产国产网站| 久久精品日韩一区二区三区| 亚洲另类在线一区| 久久伊伊香蕉| 亚洲一区二区三区四区五区黄| 欧美韩国在线| 久久精品日韩| 国产精品久久久久秋霞鲁丝| 亚洲国产综合在线看不卡| 国产精品久久久一区麻豆最新章节 | 亚洲精品中文字幕在线| 国产午夜精品理论片a级探花| av成人老司机| 亚洲电影第1页| 欧美在线日韩精品| 99精品欧美| 欧美顶级艳妇交换群宴| 欧美在线亚洲综合一区| 国产精品毛片在线看| 一区二区高清| 亚洲经典三级|