《電子技術(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亚洲国产精品_日韩亚洲一区二区
亚洲手机成人高清视频| 久久久久九九视频| 午夜欧美大片免费观看| 一本色道久久加勒比88综合| 91久久久久久| 亚洲电影激情视频网站| 国产中文一区二区三区| 国产日韩精品入口| 国产欧美日韩不卡免费| 国产精品久久一区主播| 欧美三级小说| 欧美三区视频| 欧美视频在线观看一区| 亚洲二区免费| 欧美在线观看视频一区二区三区| 午夜精品福利一区二区蜜股av| 亚洲欧美日韩电影| 欧美亚洲视频在线观看| 欧美一区二区大片| 久久精品一区二区三区不卡| 久久精品国产亚洲a| 亚洲高清免费在线| 亚洲电影一级黄| 亚洲人成免费| 一级日韩一区在线观看| 中文国产亚洲喷潮| 亚洲综合国产激情另类一区| 亚洲欧美日韩在线一区| 久久电影一区| 久久一区欧美| 欧美精品一线| 国产精品爱久久久久久久| 国产精品欧美日韩一区二区| 国产欧美日韩一区二区三区在线观看| 国产性猛交xxxx免费看久久| 黄色日韩在线| 亚洲日本中文| 亚洲视频一区二区在线观看| 亚洲女与黑人做爰| 久久精品欧洲| 日韩一级在线观看| 亚洲综合日韩在线| 久久久www成人免费毛片麻豆| 欧美a级理论片| 欧美手机在线视频| 性亚洲最疯狂xxxx高清| 午夜久久美女| 久久婷婷人人澡人人喊人人爽| 欧美多人爱爱视频网站| 欧美视频在线看| 国产一在线精品一区在线观看| 亚洲第一在线| 亚洲永久网站| 亚洲精品在线一区二区| 亚洲欧美日韩精品久久亚洲区| 久久久国产精品一区| 欧美精品性视频| 国产乱人伦精品一区二区| 一区在线观看视频| 亚洲视频精选| 亚洲三级观看| 欧美在线播放一区| 欧美人与禽猛交乱配视频| 国产欧美日韩麻豆91| 亚洲激情影视| 性欧美大战久久久久久久免费观看| 亚洲精品在线观看免费| 久久成人免费网| 欧美日韩激情网| 国产最新精品精品你懂的| 野花国产精品入口| 亚洲第一精品夜夜躁人人爽 | 亚洲美女精品久久| 欧美一区免费视频| 欧美日韩三级电影在线| 伊甸园精品99久久久久久| 亚洲综合第一| 中日韩午夜理伦电影免费| 久久夜色精品一区| 国产精品萝li| 日韩午夜在线| 亚洲麻豆av| 久久这里只有| 国产视频精品网| 亚洲婷婷综合久久一本伊一区| 日韩午夜在线播放| 久久尤物视频| 国产欧美一级| 中文av一区特黄| 99re热这里只有精品免费视频| 噜噜噜噜噜久久久久久91 | 日韩视频免费在线观看| 久久五月婷婷丁香社区| 国产精品毛片一区二区三区| 亚洲精品久久久久久久久久久久久 | 国产亚洲综合在线| 亚洲尤物视频网| 亚洲一区二区三区在线看| 欧美激情一区二区三级高清视频| 国产日韩欧美亚洲| 亚洲欧美日韩电影| 亚洲欧美日韩在线高清直播| 欧美日韩精品一区视频| 亚洲欧洲日本一区二区三区| 亚洲国产日韩欧美在线99| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲国产精品福利| 久久成人人人人精品欧| 国产精品一区二区三区久久久| av成人激情| 一区二区欧美精品| 欧美日本国产在线| 亚洲精品欧美精品| 日韩亚洲国产精品| 欧美国产高潮xxxx1819| 尤物99国产成人精品视频| 久久精品国产一区二区三区| 久久福利精品| 国内精品美女在线观看| 亚洲成色www8888| 麻豆精品网站| 亚洲人成免费| 一区二区三区四区国产| 欧美日韩国产精品自在自线| 亚洲精品视频中文字幕| 亚洲视频福利| 国产精品久久波多野结衣| 亚洲在线观看视频| 久久成人精品无人区| 国产亚洲激情视频在线| 亚洲第一精品久久忘忧草社区| 可以免费看不卡的av网站| 亚洲国产高清aⅴ视频| 亚洲久久一区| 欧美四级伦理在线| 亚洲一级片在线看| 久久成人精品无人区| 激情伊人五月天久久综合| 亚洲精品国产精品国产自| 欧美久久电影| 夜夜爽99久久国产综合精品女不卡| 亚洲影院高清在线| 国产精品自拍一区| 久久国产精品一区二区| 欧美激情成人在线视频| 一区二区高清视频| 亚洲欧美中文日韩v在线观看| 国产情人综合久久777777| 久久高清国产| 欧美激情亚洲自拍| 亚洲特级毛片| 久久亚裔精品欧美| 亚洲精品国久久99热| 午夜一区二区三区不卡视频| 狠狠久久五月精品中文字幕| 99精品欧美一区二区蜜桃免费| 国产精品福利片| 久久精品首页| 欧美日韩在线精品| 欧美伊人影院| 欧美精品久久久久久久| 亚洲一区中文| 欧美国产一区二区在线观看| 亚洲午夜国产一区99re久久| 久久综合九色九九| 99在线视频精品| 久久久久国产精品一区| 亚洲人成绝费网站色www| 羞羞漫画18久久大片| 在线观看一区二区精品视频| 亚洲一区二区免费看| 黄色成人免费网站| 在线视频精品一区| 国产亚洲欧洲| 亚洲视屏在线播放| 狠狠色综合色综合网络| 亚洲午夜高清视频| 好吊妞**欧美| 亚洲欧美日韩综合| 亚洲国产一区视频| 欧美在线观看视频| 亚洲精品日韩久久| 久久久7777| 日韩视频在线免费| 久久亚洲视频| 亚洲免费网址| 欧美日韩成人在线| 久久精品一区二区| 国产精品一区二区三区观看| av成人动漫| 伊伊综合在线| 久久精品国产99| 一区二区精品在线| 欧美第一黄色网| 欧美在线视频网站| 国产精品人成在线观看免费 | 亚洲国产日韩一区| 国产欧美日韩在线视频| 亚洲午夜精品17c| 亚洲二区精品|