《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > SHARC并行系統(tǒng)軟件設(shè)計(jì)方法及其程序?qū)崿F(xiàn)
SHARC并行系統(tǒng)軟件設(shè)計(jì)方法及其程序?qū)崿F(xiàn)
摘要: 不能認(rèn)為將多個(gè)SHARC互相進(jìn)行硬件連接就實(shí)現(xiàn)了并行處理。真正的并行處理應(yīng)該是使互連的各個(gè)DSP能夠協(xié)調(diào)工作,縮短系統(tǒng)處理的時(shí)間。這需要并行系統(tǒng)中SHARC間能完成數(shù)據(jù)流的傳遞。并行系統(tǒng)中各個(gè)SHARC間數(shù)據(jù)流的傳遞同數(shù)據(jù)處理同等重要。本文針對(duì)這二種并行方式,分別給出了軟件的設(shè)計(jì)方法和設(shè)計(jì)技巧,并且給出了針對(duì)ADSP2116X的程序?qū)崿F(xiàn)。
Abstract:
Key words :

    隨著數(shù)字信號(hào)處理(Digital Signal ProcESSor,DSP)技術(shù)的發(fā)展,DSP已被廣泛應(yīng)用于雷達(dá)、通信等領(lǐng)域。雖然DSP經(jīng)歷了幾代的發(fā)展,運(yùn)算速度和能力都有了很大的提高,但在很多情況下,單片DSP已經(jīng)不能滿足實(shí)時(shí)處理的要求,必須尋求多片DSP并行處理的方案。

    從系統(tǒng)結(jié)構(gòu)出發(fā)可以將并行系統(tǒng)分為共享存儲(chǔ)器并行系統(tǒng)和分布存儲(chǔ)器并行系統(tǒng)。AD公司推出的SHARC系列DSP芯片同時(shí)支持這二種并行處理器結(jié)構(gòu)。通常,將AD公司的一系列雙位高性能浮點(diǎn)DSP稱為SHARC(Super Harvard Architecture)。對(duì)于共享存儲(chǔ)器系統(tǒng),通過SHARC間的外部共享總線實(shí)現(xiàn)。對(duì)于分布存儲(chǔ)器系統(tǒng),通過2個(gè)SHARC間的鏈路口直接連接,實(shí)現(xiàn)DSP間點(diǎn)對(duì)點(diǎn)的通信。

     然而,不能認(rèn)為將多個(gè)SHARC互相進(jìn)行硬件連接就實(shí)現(xiàn)了并行處理。真正的并行處理應(yīng)該是使互連的各個(gè)DSP能夠協(xié)調(diào)工作,縮短系統(tǒng)處理的時(shí)間。這需要并行系統(tǒng)中SHARC間能完成數(shù)據(jù)流的傳遞。并行系統(tǒng)中各個(gè)SHARC間數(shù)據(jù)流的傳遞同數(shù)據(jù)處理同等重要。本文針對(duì)這二種并行方式,分別給出了軟件的設(shè)計(jì)方法和設(shè)計(jì)技巧,并且給出了針對(duì)ADSP2116X的程序?qū)崿F(xiàn)。

1 共享存儲(chǔ)器并行系統(tǒng)的設(shè)計(jì)

    SHARC為多處理器系統(tǒng)提供了強(qiáng)大的支持,用戶可以在不附加任何外圍電路的情況下構(gòu)成共享存儲(chǔ)器并行系統(tǒng)。SHARC具有一套巧妙的分布式總線仲裁機(jī)制。使用2~6片SHARC把各SHARC的相應(yīng)引腳相連就可以共享外部總線。每片SHARC都可以訪問其他SHARC的片內(nèi)存儲(chǔ)器,還可以通過設(shè)置IOP寄存器啟動(dòng)其他SHARC的DMA操作。

    組成共享存儲(chǔ)器并行系統(tǒng)時(shí),每一個(gè)SHARC都有一個(gè)惟一的標(biāo)識(shí):ID2~0,取值范圍為000~110。ID=001表示該SHARC為1號(hào)DSP,ID=010表示該SHARC為2號(hào)DSP,依此類推。ID=000表示是單DSP系統(tǒng)。在多DSP系統(tǒng)中,ID=001號(hào)的DSP是必須存在的,這是DSP加載成功以后的主處理器。

    在共享存儲(chǔ)器系統(tǒng)中,任何時(shí)刻都只有一片SHARC可以驅(qū)動(dòng)外部總線,該SHARC就被稱為主處理器。其余的從SHARC如果需要訪問總線,則必須先申請(qǐng)總線。主處理器如果此時(shí)沒有數(shù)據(jù)傳遞或者總線占用時(shí)間到,就會(huì)釋放總線控制權(quán),把自己的外部總線驅(qū)動(dòng)為三態(tài),完成總線控制權(quán)的轉(zhuǎn)移。

    主處理器對(duì)從SHARC的內(nèi)存訪問和對(duì)自己的內(nèi)存訪問一樣簡(jiǎn)單,既可以通過內(nèi)核直接讀寫完成,也可以通過外部口DMA實(shí)現(xiàn)。在共享存儲(chǔ)器并行系統(tǒng)中,每一片SHARC根據(jù)自己的ID號(hào)都有一個(gè)映射的多處理器存儲(chǔ)空間。例如對(duì)于ADSP2116X,ID=001的SHARC對(duì)應(yīng)的多處理器存儲(chǔ)空間為0x100000~0x1F FFFF,ID=010的SHARC對(duì)應(yīng)的多處理器存儲(chǔ)器空間為0x20 0000~0x2F FFFF等。共享存儲(chǔ)系統(tǒng)的LDF文件與單DSP系統(tǒng)有些不同。下面給出它的一個(gè)示例(以2個(gè)SHARC為例)。

例1:共享存儲(chǔ)器系統(tǒng)LDF文件。

 

ARCHITECTURE(ADSP-21160)

SEARCH_DIR($ADI_DSP211xxlib)

MPMEMORY{

DSP1{START(0X100000)}    //第一片DSP在多處理

//器空間的映射地址

DSP2{START(0X200000)} }   //第二片DSP在多處理

//器空間的映射地址

MEMORY

{pm_rsTI { TYPE(PM RAM)START(0x00040004)END

(0x0004000f)WIDTH(48) }

pm_code { TYPE(PM RAM)START(0x00040100)END

(0x00049fff)WIDTH(48) }

dm_data { TYPE(DM RAM)START(0x00050000)END

(0x00059fff)WIDTH(32) } }

PROCESSOR DSP1

{LINK_AGAINST(DSP2.DXE)    //需要重新連接的

//DSP2的目標(biāo)文件

OUTPUT(DSP1.DXE)       //DSP1輸出的目標(biāo)文件

……             //和單DSP系統(tǒng)相同,故略去,下同

}

PROCESSOR DSP2

{LINK_AGAINST(DSP1.DXE)    //需要重新連接的

//DSP1的目標(biāo)文件

OUTPUT(DSP2.DXE)        //DSP2輸出的目標(biāo)文件

……

}

 

這樣,這二片DSP便可以通過外部總線訪問對(duì)方的內(nèi)部資源。當(dāng)DSP1需要直接訪問DSP2中的某一變量時(shí),只需要DSP2將該變量設(shè)置為global類型,DSP1就可以在多處理器空間中通過外部總線直接訪問該變量,當(dāng)然,也可以根據(jù)變量的內(nèi)存地址直接訪問。

 

在共享存儲(chǔ)器并行系統(tǒng)中,當(dāng)二個(gè)SHARC之間通過總線進(jìn)行數(shù)據(jù)傳遞時(shí),如果此時(shí)其他的DSP需要訪問外部總線,則只有掛起等待。這樣,在多個(gè)DSP間數(shù)據(jù)交換比較頻繁時(shí),系統(tǒng)的效率就會(huì)大大降低。另外,在共享存儲(chǔ)器并行系統(tǒng)中,最多只能有6個(gè)DSP互相連接。如果需要更多的DSP并行工作,共享存儲(chǔ)器并行系統(tǒng)便無能為力。采用以下介紹的分布存儲(chǔ)器并行系統(tǒng),可以有效地解決這個(gè)問題。

 

2 分布存儲(chǔ)器并行系統(tǒng)的設(shè)計(jì)

ADSP2116X提供了獨(dú)立的6個(gè)鏈路口,每個(gè)鏈路口可以實(shí)現(xiàn)與其他ADSP2116X或者外圍設(shè)備點(diǎn)對(duì)點(diǎn)的通信。每個(gè)鏈路口包括8位雙向數(shù)據(jù)線(LxDAT7~0),1個(gè)雙向時(shí)鐘信號(hào)(LxCLK),1個(gè)雙向確認(rèn)信號(hào)(LxACK)。但是,鏈路口沒有為發(fā)送和接收提供2套管腳,所以在任何時(shí)刻鏈路口只能工作在單工狀態(tài)。依靠鏈路口進(jìn)行雙DSP間的數(shù)據(jù)傳遞時(shí),只需要把2個(gè)DSP的10個(gè)管腳對(duì)應(yīng)連接即可,不需要任何外部附加邏輯。

在ADSP2116X內(nèi)部有6個(gè)鏈路緩沖器。用戶通過定義LAR寄存器,可以為每個(gè)鏈路口選擇一個(gè)或幾個(gè)緩存器。鏈路緩沖器一端與內(nèi)部總線相連,另一端通過LAR寄存器與不同的鏈路口相連。需要注意的是,鏈路口與鏈路緩存器是完全不同的概念。鏈路緩沖器可以理解為一個(gè)雙向的FIFO,而鏈路口僅僅代表其對(duì)外的10個(gè)管腳。鏈路口的特性很大程度上是由其正在使用的緩沖器的特性決定的。

ADSP2116X的鏈路口發(fā)送時(shí)鐘頻率可以通過LCTLx寄存器的LxCLKD位設(shè)置(1,1/2,1/3,1/4核時(shí)鐘頻率),鏈路口數(shù)據(jù)線根據(jù)需要可以選擇為8位或4位。發(fā)送方在時(shí)鐘LxCLK的上升沿送出8/4位碼,接收方利用時(shí)鐘下降沿鎖存8/4位碼,并且接收方使LxACK有效,表示已準(zhǔn)備好接收下一個(gè)字。在每個(gè)字開始發(fā)送時(shí),發(fā)送方如果看到LxACK無效,則將LxCLK保持為高,并等待LxACK有效后才開始發(fā)送新字。當(dāng)發(fā)送緩沖為空時(shí),LxCLK將保持為低電平。

鏈路口數(shù)據(jù)傳輸可以通過DMA方式和內(nèi)核直接訪問二種方式。DMA方式傳輸時(shí)不需要內(nèi)核干預(yù),在傳輸數(shù)據(jù)量比較大時(shí)效率很高,但是需要首先進(jìn)行DMA參數(shù)設(shè)置。當(dāng)僅有個(gè)別數(shù)據(jù)需要通過鏈路口傳遞的情況下,往往不使用DMA方式,而是通過ADSP2116X的內(nèi)核直接訪問。用戶可以通過LCOM寄存器中緩沖器的狀態(tài)來控制內(nèi)核對(duì)鏈路口緩沖進(jìn)行讀寫操作,也可以通過相應(yīng)的中斷從鏈路口緩沖器中讀寫數(shù)據(jù),如“DM(LBUF0)=R0;”或者“R0=DM(LBUF0);”等。值得注意的是,無論是試圖從一個(gè)空的鏈路緩沖中讀,還是試圖向滿的緩沖中寫,內(nèi)核的指令都會(huì)掛起,直到操作成功為止。因此,內(nèi)核指令直接讀寫鏈路緩存時(shí),需要首先判斷鏈路緩沖狀態(tài)。

ADSP2116X為每個(gè)鏈路口提供了一個(gè)專用的DMA通道,它們分別占用DMA中的4~9通道。鏈路口的DMA使用非常方便,只需將對(duì)應(yīng)的DMA參數(shù)寄存器(IIx,IMx,Cx)設(shè)置完畢,使能LCTLx中對(duì)應(yīng)通道的LxDEN即可。在當(dāng)前DMA結(jié)束(或者鏈?zhǔn)紻MA全部結(jié)束)后,會(huì)觸發(fā)一個(gè)可屏蔽中斷通知用戶。啟動(dòng)鏈路口DMA的順序如下:

(1)由LAR寄存器的AxLB為鏈路口分配一個(gè)LBUFx;

(2)由LCTL寄存器的LxEN使能這個(gè)LBUFx,并設(shè)置好LCTL控制寄存器;

(3)設(shè)置DMA參數(shù)(IIy,IMy,Cy);

(4)置位LCTL寄存器的LxDEN,就啟動(dòng)了DMA。

其中:x=0~5,y=4~9。

下面給出一個(gè)利用鏈路口DMA發(fā)送數(shù)據(jù)的示例。

例2:利用鏈路口0進(jìn)行數(shù)據(jù)發(fā)送。

.SECTION/dm dm_data;

.VAR trans_data[size];

.SECTION/pm pm_code:

……

r0=0x0002c688;

dm(LAR)=r0;

r9=0x00000229; /*LBUF0使能、發(fā)送、8位字寬、核時(shí)鐘速率*/

dm(LCTL0)=r9;

r0=trans_data;

dm(II4)=r0;  /*需要發(fā)送數(shù)據(jù)的起始地址*/

r0=1;

dm(IM4)=r0;

r0=size;

dm(C4)=r0;

ustat1=dm(LCTL0);

bit set ustat1 L0DEN;  /*啟動(dòng)發(fā)送DMA*/

dm(LCTL0)=ustat1;

如果傳輸?shù)臄?shù)據(jù)不在一段連續(xù)的內(nèi)存區(qū),而是在多段數(shù)據(jù)塊中,可以利用鏈?zhǔn)紻MA。鏈?zhǔn)紻MA可以在當(dāng)前DMA操作結(jié)束后自動(dòng)重新配置當(dāng)前通道并開始新的DMA,所有這些操作都不需要內(nèi)核的干預(yù)。在鏈?zhǔn)紻MA過程中,用戶只要對(duì)DMA參數(shù)配置一次,就可以方便地完成多塊數(shù)據(jù)的DMA傳輸。

鏈?zhǔn)紻MA是通過CPx寄存器實(shí)現(xiàn)的。對(duì)于ADSP2116X來說,CPx是一個(gè)19位的寄存器。寄存器中低18位表示相對(duì)于基地址0x40000的偏移量,用戶在這個(gè)地址的內(nèi)部存儲(chǔ)器中存放下一次DMA的參數(shù),這些參數(shù)叫做TCB(Transfer Control Blocks)。CPx中的第19位是控制當(dāng)前鏈?zhǔn)紻MA完成后是否產(chǎn)生中斷的PCI位。如果把全局地址賦給CPx,則PCI位一定為1,表明一定會(huì)產(chǎn)生中斷。

用戶只需要在內(nèi)存區(qū)填寫多個(gè)TCB的表格,用其中的CPx字段將每個(gè)表格串起來并將第一個(gè)表格的結(jié)束地址放入CPx寄存器,就可以啟動(dòng)鏈?zhǔn)紻MA。要終止一個(gè)鏈?zhǔn)紻MA,只需要把最后一個(gè)TCB中的CPx字段填0即可。TCB結(jié)構(gòu)如圖1所示。

TCB結(jié)構(gòu)圖

下面是建立一個(gè)鏈?zhǔn)紻MA的順序:

(1)在片內(nèi)存儲(chǔ)器中建立需要的TCB數(shù)據(jù)塊;

(2)設(shè)置DMA參數(shù)寄存器,使能相應(yīng)的LxDEN和LxCHEN;

(3)將第一個(gè)TCB的最后一個(gè)地址的偏移量寫入CPx寄存器中,即啟動(dòng)了鏈?zhǔn)紻MA。

鏈路口的數(shù)據(jù)傳遞可以依靠中斷。鏈路口中斷的產(chǎn)生有以下3種情況:

(1)DMA使能時(shí),DMA完成后將產(chǎn)生一個(gè)可屏蔽中斷。

(2)DMA禁止時(shí),發(fā)送時(shí)LxBUF非滿,接收時(shí)LxBUF非空。

(3)外部設(shè)備訪問一個(gè)未指定的鏈路口,或者訪問一個(gè)已指定但LBUF被禁止的鏈路口時(shí),將產(chǎn)生一個(gè)鏈路服務(wù)請(qǐng)求(LSRQ)中斷,且所有的鏈路口公用一個(gè)中斷矢量。

前2種情況比較簡(jiǎn)單,只需要注意:ADSP2116X鏈路口的中斷屏蔽、鎖存與ADSP2106X不同,它從IRPTL/IMASK中分離出來,單獨(dú)存在于寄存器LIRPTL中,并且在IMASK中加了一個(gè)鏈路口中斷總開關(guān)LPISUMI。如果要使能某個(gè)鏈路口中斷,則需要設(shè)置3個(gè)控制位。例如使能L0BUF中斷,需要以下指令:“bit set imask LPISUMI;bit set lirptl LP0MSK;bit set mode1 IRPTEN;”。

對(duì)于上面的鏈路服務(wù)請(qǐng)求中斷(LSRQ),在多SHARC通信時(shí)比較有效。通過該中斷可以實(shí)現(xiàn)使用同一個(gè)鏈路口完成接收和發(fā)送數(shù)據(jù)的功能,并且在2個(gè)SHARC一個(gè)主動(dòng)、另一個(gè)被動(dòng)的情況下不依靠外部邏輯實(shí)現(xiàn)2個(gè)鏈路口的數(shù)據(jù)傳遞同步。例如SHARC-1需要通過鏈路口向SHARC-2傳送數(shù)據(jù),由于SHARC-1主動(dòng)發(fā)送,因此只需配置好DMA參數(shù),啟動(dòng)DMA即可。但是對(duì)于SHARC-2,由于被動(dòng)接收,事先并不知道SHARC-1何時(shí)向自己發(fā)送數(shù)據(jù),因此很難在適當(dāng)?shù)臅r(shí)候啟動(dòng)DMA接收。通過LSRQ中斷,就可以很容易地解決這個(gè)問題。

首先將雙方的鏈路口設(shè)置為無效。當(dāng)SHARC-1需要向SHARC-2通信時(shí)(發(fā)送或接收)將自己的鏈路口設(shè)為有效,并根據(jù)需要從自己的鏈路緩沖中讀寫數(shù)據(jù)。由于鏈路通信協(xié)議規(guī)定:當(dāng)發(fā)送數(shù)據(jù)時(shí),如果對(duì)方?jīng)]有響應(yīng),則將LxCLK置為高電平,數(shù)據(jù)線保持不變;當(dāng)需要接收數(shù)據(jù)時(shí),如果對(duì)方?jīng)]有響應(yīng),則LxACK保持為高電平。這樣,SHARC-2就會(huì)觸發(fā)LSRQ中斷。由于LSRQ中斷的所有鏈路口公用一個(gè)中斷矢量,因此在中斷服務(wù)子程序中,首先需要判斷哪個(gè)鏈路口有服務(wù)請(qǐng)求,且要區(qū)分是發(fā)送還是接收請(qǐng)求,然后配置相應(yīng)的DMA參數(shù),使能該鏈路口,從而在雙方之間建立一個(gè)單向的數(shù)據(jù)通路。雙方傳遞數(shù)據(jù)完成,會(huì)產(chǎn)生一個(gè)如上文中鏈路口中斷情況(1)所示的中斷。在中斷服務(wù)程序中,仍然將各自的鏈路口設(shè)置為無效,等待下一次通信請(qǐng)求。下面給出一個(gè)利用LSRQ中斷實(shí)現(xiàn)數(shù)據(jù)傳遞的示例。

例3:配置L0BUF,利用LSRQ中斷實(shí)現(xiàn)數(shù)據(jù)傳遞。

r0=0x0002c688;

dm(LAR)=r0;

ustat1=dm(LCTL0);

bit clr ustat1 L0EN;  /*禁止鏈路緩沖0*/

dm(LCTL0)=ustat1;

ustat1=dm(LSRQ);

bit set ustat1 L0TM;  /*鏈路0發(fā)送屏蔽*/

bit set ustat1 L0RM;  /*鏈路0接收屏蔽*/

dm(LSRQ)=ustat1;

bit set imask LSRQI;  /*使能LSRQ中斷*/

bit set mode1 IRPTEN;

……

上面的程序段可以放在主程序的開始。經(jīng)過以上的配置,就可以通過LSRQ中斷方便地實(shí)現(xiàn)與另一片SHARC的鏈路口通信(發(fā)送、接收)。另外需要注意的是,當(dāng)修改鏈路緩沖器的使能位LxEN時(shí),必須將該中斷屏蔽(bit clr imask LSRQI),否則有可能產(chǎn)生不可預(yù)料的LSRQ中斷。

3 結(jié)束語

采用共享存儲(chǔ)器并行系統(tǒng)和分布存儲(chǔ)器并行系統(tǒng)各有特色,結(jié)合這二種系統(tǒng)設(shè)計(jì)的思想更易于構(gòu)建并行處理系統(tǒng)。設(shè)計(jì)時(shí),可以采用子模塊結(jié)構(gòu)把這二者結(jié)合起來。子模塊內(nèi)部,采用共享存儲(chǔ)器和分布存儲(chǔ)器并存,各個(gè)SHARC間根據(jù)需要既可以通過總線傳送數(shù)據(jù),又可以通過鏈路口傳送數(shù)據(jù)。子模塊之間采用分布式存儲(chǔ)器系統(tǒng),通過鏈路口進(jìn)行數(shù)據(jù)傳遞。采用以上設(shè)計(jì),可以實(shí)現(xiàn)有效的并行處理,使系統(tǒng)整體性能有很大的提高。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美老女人xx| 国产精品hd| 亚洲无线一线二线三线区别av| 午夜视频一区在线观看| 中日韩视频在线观看| 亚洲理论电影网| 亚洲高清久久久| 亚洲电影在线免费观看| 一区二区亚洲精品国产| 国产综合自拍| 国产一区二区视频在线观看| 国产精品试看| 国产精品萝li| 国产精品视频999| 国产精品美女一区二区| 国产精品成人一区二区艾草| 欧美日韩一区二区三区免费看| 欧美激情1区2区| 亚洲图片自拍偷拍| 欧美经典一区二区| 欧美高清视频免费观看| 久久一区免费| 免费观看日韩| 欧美激情第1页| 欧美另类人妖| 国产精品国产三级国产普通话三级| 日韩视频免费观看高清在线视频| 久久夜色精品一区| 欧美视频日韩| 欧美日韩国产黄| 欧美体内she精视频在线观看| 日韩五码在线| 久久大香伊蕉在人线观看热2| 欧美激情第10页| 久久综合狠狠综合久久综青草| 亚洲欧美日韩综合| 久久久久www| 亚洲精品美女在线观看播放| 在线观看欧美视频| 亚洲欧美日韩一区二区| 亚洲欧美日韩一区| 久久疯狂做爰流白浆xx| 久久性色av| 欧美极品影院| 国产精品拍天天在线| 国产欧美日韩一区二区三区在线观看| 国产日产亚洲精品系列| 一区在线播放| 亚洲免费av电影| 亚洲欧美日韩国产成人精品影院| 欧美有码视频| 99精品国产高清一区二区| 亚洲欧美日韩国产中文 | 亚洲三级免费| 在线综合视频| 久久精品亚洲一区二区| 欧美大片网址| 国产精品第三页| 激情欧美国产欧美| 亚洲裸体在线观看| 亚洲欧美日韩在线| 亚洲精品中文字幕在线| 亚洲欧美国产制服动漫| 老**午夜毛片一区二区三区| 欧美视频一区二区三区…| 国产区精品在线观看| 亚洲电影在线免费观看| 亚洲一区二区免费视频| 亚洲国产毛片完整版| 亚洲在线黄色| 免费在线亚洲欧美| 国产精品一区二区你懂得 | 91久久线看在观草草青青| 亚洲午夜一级| 欧美+亚洲+精品+三区| 国产精品视频久久久| 亚洲国产另类久久精品| 午夜国产精品影院在线观看| 亚洲精品乱码久久久久| 久久不射2019中文字幕| 欧美日韩三区| 亚洲电影免费在线| 香蕉久久夜色精品国产| 在线综合亚洲欧美在线视频| 卡一卡二国产精品| 国产免费成人| 99国产精品99久久久久久| 99视频在线精品国自产拍免费观看 | 亚洲精品社区| 久久久久网站| 欧美三级乱码| 亚洲国产乱码最新视频| 久久不见久久见免费视频1| 亚洲视频欧美在线| 欧美+日本+国产+在线a∨观看| 国产热re99久久6国产精品| 日韩一级在线观看| 亚洲精品在线二区| 久久综合99re88久久爱| 国产午夜精品麻豆| 亚洲午夜激情网站| 一级成人国产| 欧美成人午夜剧场免费观看| 国产一区二区三区黄视频| 亚洲私人影院在线观看| 一本色道久久88亚洲综合88| 免费成人网www| 激情一区二区三区| 欧美与黑人午夜性猛交久久久| 亚洲欧美中文另类| 欧美视频一区| 一区二区国产在线观看| 一区二区三区免费观看| 欧美激情在线观看| 亚洲激情图片小说视频| 亚洲精品国产精品国产自| 亚洲第一精品影视| 亚洲午夜视频| 今天的高清视频免费播放成人| 国产精品99久久久久久宅男| 亚洲精品国产精品久久清纯直播 | 国产精品视频久久| 在线午夜精品| 亚洲网站啪啪| 欧美三日本三级少妇三2023| 日韩视频永久免费| 一区二区三区精密机械公司| 欧美日韩视频免费播放| 亚洲精品一二三区| 一本色道久久88综合亚洲精品ⅰ | 亚洲伦理精品| 亚洲在线一区二区| 国产精品日韩精品| 中文欧美在线视频| 性欧美18~19sex高清播放| 国产精品入口福利| 欧美一区二区三区在线观看| 久久久人成影片一区二区三区| 亚洲影院色无极综合| 欧美有码视频| 久久婷婷国产综合精品青草| 欧美日韩aaaaa| 9l国产精品久久久久麻豆| 亚洲精品国产精品国自产观看| 欧美阿v一级看视频| 在线播放日韩| 日韩视频免费观看高清完整版| 欧美精品福利| 日韩小视频在线观看| 美日韩精品视频免费看| 国产精品v欧美精品v日韩| 亚洲综合精品| 久久久噜噜噜| 亚洲国产精品一区二区www| 99re6热只有精品免费观看 | 99精品久久| 欧美影院久久久| 黄色国产精品一区二区三区| 亚洲日本激情| 国产精品白丝黑袜喷水久久久| 亚洲女优在线| 另类成人小视频在线| 日韩视频在线一区| 午夜欧美大尺度福利影院在线看| 国产一区二区你懂的| 亚洲日本免费电影| 欧美日韩在线播| 欧美专区日韩专区| 欧美日韩国产综合视频在线观看中文 | 亚洲激情成人网| 欧美日韩爆操| 亚洲欧美日本伦理| 免播放器亚洲一区| 一本色道久久综合一区| 久久九九久精品国产免费直播| 亚洲国产精品尤物yw在线观看| 亚洲欧美另类在线观看| 狠狠做深爱婷婷久久综合一区| 一区二区三区 在线观看视频| 国产乱码精品一区二区三| 亚洲人成久久| 国产精品免费看久久久香蕉| 久久精品91| 国产精品毛片va一区二区三区| 亚洲第一中文字幕| 国产精品爱久久久久久久| 亚洲国产第一页| 国产精品免费一区二区三区观看| 亚洲动漫精品| 国产精品黄视频| 亚洲日韩欧美视频一区| 国产精品私人影院| 日韩视频在线免费| 亚洲免费大片| 亚洲伊人久久综合| 免费在线看成人av| 午夜精品久久久久久| 欧美日韩国产探花| 久久精品国产视频| 国产精品亚洲综合一区在线观看|