精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何利用CPU Cache寫(xiě)出高性能代碼,看這些圖就夠了!

存儲(chǔ) 存儲(chǔ)軟件
我們平時(shí)編寫(xiě)的代碼最后都會(huì)交給CPU來(lái)執(zhí)行,如何能巧妙利用CPU寫(xiě)出性能比較高的代碼呢?看完這篇文章您可能會(huì)有所收獲。

 [[343372]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序喵大人」,作者程序喵大人 。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序喵大人公眾號(hào)。

我們平時(shí)編寫(xiě)的代碼最后都會(huì)交給CPU來(lái)執(zhí)行,如何能巧妙利用CPU寫(xiě)出性能比較高的代碼呢?看完這篇文章您可能會(huì)有所收獲。

先提出幾個(gè)問(wèn)題,之后我們逐個(gè)擊破:[[343373]]

 

  • 初入寶地:什么是CPU Cache?
  • 連類(lèi)比事:為什么要有Cache?為什么要有多級(jí)Cache?
  • 挑燈細(xì)覽:Cache的大小和速度如何?
  • 追本溯源:什么是Cache Line?
  • 旁枝末葉:什么是Cache一致性?
  • 觸類(lèi)旁通:Cache與主存的映射關(guān)系如何?
  • 更上一層:如何巧妙利用CPU Cache編程?

1. 什么是CPU Cache?

如圖所示:

 

CPU Cache可以理解為CPU內(nèi)部的高速緩存,當(dāng)CPU從內(nèi)存中讀取數(shù)據(jù)時(shí),并不是只讀自己想要的那一部分,而是讀取更多的字節(jié)到CPU高速緩存中。當(dāng)CPU繼續(xù)訪問(wèn)相鄰的數(shù)據(jù)時(shí),就不必每次都從內(nèi)存中讀取,可以直接從高速緩存行讀取數(shù)據(jù),而訪問(wèn)高速緩存比訪問(wèn)內(nèi)存速度要快的多,所以速度會(huì)得到極大提升。

2. 為什么要有Cache?為什么要有多級(jí)Cache?

 

為什么要有Cache這個(gè)問(wèn)題想必大家心里都已經(jīng)有了答案了吧,CPU直接訪問(wèn)距離較遠(yuǎn),容量較大,性能較差的主存速度很慢,所以在CPU和內(nèi)存之間插入了Cache,CPU訪問(wèn)Cache的速度遠(yuǎn)高于訪問(wèn)主存的速度。

CPU Cache是位于CPU和內(nèi)存之間的臨時(shí)存儲(chǔ)器,它的容量比內(nèi)存小很多但速度極快,可以將內(nèi)存中的一小部分加載到Cache中,當(dāng)CPU需要訪問(wèn)這一小部分?jǐn)?shù)據(jù)時(shí)可以直接從Cache中讀取,加快了訪問(wèn)速度。

想必大家都聽(tīng)說(shuō)過(guò)程序局部性原理,這也是CPU引入Cache的理論基礎(chǔ),程序局部性分為時(shí)間局部性和空間局部性。時(shí)間局部性是指被CPU訪問(wèn)的數(shù)據(jù),短期內(nèi)還要被繼續(xù)訪問(wèn),比如循環(huán)、遞歸、方法的反復(fù)調(diào)用等。空間局部性是指被CPU訪問(wèn)的數(shù)據(jù)相鄰的數(shù)據(jù),CPU短期內(nèi)還要被繼續(xù)訪問(wèn),比如順序執(zhí)行的代碼、連續(xù)創(chuàng)建的兩個(gè)對(duì)象、數(shù)組等。因?yàn)槿绻麑倓傇L問(wèn)的數(shù)據(jù)和相鄰的數(shù)據(jù)都緩存到Cache時(shí),那下次CPU訪問(wèn)時(shí),可以直接從Cache中讀取,提高CPU訪問(wèn)數(shù)據(jù)的速度。

 

一個(gè)存儲(chǔ)器層次大體結(jié)構(gòu)如圖所示,速度越快的存儲(chǔ)設(shè)備自然價(jià)格也就越高,隨著數(shù)據(jù)訪問(wèn)量的增大,單純的增加一級(jí)緩存的成本太高,性?xún)r(jià)比太低,所以才有了二級(jí)緩存和三級(jí)緩存,他們的容量越來(lái)越大,速度越來(lái)越慢(但還是比內(nèi)存的速度快),成本越來(lái)越低。

3. Cache的大小和速度如何?

 

通常越接近CPU的緩存級(jí)別越低,容量越小,速度越快。不同的處理器Cache大小不同,通?,F(xiàn)在的處理器的L1 Cache大小都是64KB。

那CPU訪問(wèn)各個(gè)Cache的速度如何呢?

 

如圖所示,級(jí)別越低的高速緩存,CPU訪問(wèn)的速度越快。

CPU多級(jí)緩存架構(gòu)大體如下:

 

L1 Cache是最離CPU最近的,它容量最小,速度最快,每個(gè)CPU都有L1 Cache,見(jiàn)上圖,其實(shí)每個(gè)CPU都有兩個(gè)L1 Cache,一個(gè)是L1D Cache,用于存取數(shù)據(jù),另一個(gè)是L1I Cache,用于存取指令。

L2 Cache容量較L1大,速度較L1較慢,每個(gè)CPU也都有一個(gè)L2 Cache。L2 Cache制造成本比L1 Cache更低,它的作用就是存儲(chǔ)那些CPU需要用到的且L1 Cache miss的數(shù)據(jù)。

L3 Cache容量較L2大,速度較L2慢,L3 Cache不同于L1 Cache和L2 Cache,它是所有CPU共享的,可以把它理解為速度更快,容量更小的內(nèi)存。

當(dāng)CPU需要數(shù)據(jù)時(shí),整體流程如下:

 

會(huì)最先去CPU的L1 Cache中尋找相關(guān)的數(shù)據(jù),找到了就返回,找不到就去L2 Cache,再找不到就去L3 Cache,再找不到就從內(nèi)存中讀取數(shù)據(jù),尋找的距離越長(zhǎng),自然速度也就越慢。

4. Cache Line?

Cache Line可以理解為CPU Cache中的最小緩存單位。Main Memory-Cache或Cache-Cache之間的數(shù)據(jù)傳輸不是以字節(jié)為最小單位,而是以Cache Line為最小單位,稱(chēng)為緩存行。目前主流的Cache Line大小都是64字節(jié),假設(shè)有一個(gè)64K字節(jié)的Cache,那這個(gè)Cache所能存放的Cache Line的個(gè)數(shù)就是1K個(gè)。

5. 寫(xiě)入策略

Cache的寫(xiě)入策略有兩種,分別是WriteThrough(直寫(xiě)模式)和WriteBack(回寫(xiě)模式)。直寫(xiě)模式:在數(shù)據(jù)更新時(shí),將數(shù)據(jù)同時(shí)寫(xiě)入內(nèi)存和Cache,該策略操作簡(jiǎn)單,但是因?yàn)槊看味家獙?xiě)入內(nèi)存,速度較慢?;貙?xiě)模式:在數(shù)據(jù)更新時(shí),只將數(shù)據(jù)寫(xiě)入到Cache中,只有在數(shù)據(jù)被替換出Cache時(shí),被修改的數(shù)據(jù)才會(huì)被寫(xiě)入到內(nèi)存中,該策略因?yàn)椴恍枰獙?xiě)入到內(nèi)存中,所以速度較快。但數(shù)據(jù)僅寫(xiě)在了Cache中,Cache數(shù)據(jù)和內(nèi)存數(shù)據(jù)不一致,此時(shí)如果有其它CPU訪問(wèn)數(shù)據(jù),就會(huì)讀到臟數(shù)據(jù),出現(xiàn)bug,所以這里需要用到Cache的一致性協(xié)議來(lái)保證CPU讀到的是最新的數(shù)據(jù)。

6. 什么是Cache一致性呢?

多個(gè)CPU對(duì)某塊內(nèi)存同時(shí)讀寫(xiě),就會(huì)引起沖突的問(wèn)題,被稱(chēng)為Cache一致性問(wèn)題。

有這樣一種情況:

a. CPU1讀取了一個(gè)字節(jié)offset,該字節(jié)和相鄰的數(shù)據(jù)就都會(huì)被寫(xiě)入到CPU1的Cache.

b. 此時(shí)CPU2也讀取相同的字節(jié)offset,這樣CPU1和CPU2的Cache就都擁有同樣的數(shù)據(jù)。

c. CPU1修改了offset這個(gè)字節(jié),被修改后,這個(gè)字節(jié)被寫(xiě)入到CPU1的Cache中,但是沒(méi)有被同步到內(nèi)存中。

d. CPU2 需要訪問(wèn)offset這個(gè)字節(jié)數(shù)據(jù),但是由于最新的數(shù)據(jù)并沒(méi)有被同步到內(nèi)存中,所以CPU2 訪問(wèn)的數(shù)據(jù)不是最新的數(shù)據(jù)。

這種問(wèn)題就被稱(chēng)為Cache一致性問(wèn)題,為了解決這個(gè)問(wèn)題大佬們?cè)O(shè)計(jì)了MESI協(xié)議,當(dāng)一個(gè)CPU1修改了Cache中的某字節(jié)數(shù)據(jù)時(shí),那么其它的所有CPU都會(huì)收到通知,它們的相應(yīng)Cache就會(huì)被置為無(wú)效狀態(tài),當(dāng)其他的CPU需要訪問(wèn)此字節(jié)的數(shù)據(jù)時(shí),發(fā)現(xiàn)自己的Cache相關(guān)數(shù)據(jù)已失效,這時(shí)CPU1會(huì)立刻把數(shù)據(jù)寫(xiě)到內(nèi)存中,其它的CPU就會(huì)立刻從內(nèi)存中讀取該數(shù)據(jù)。

MESI協(xié)議是通過(guò)四種狀態(tài)的控制來(lái)解決Cache一致性的問(wèn)題:

  •  M:代表已修改(Modified) 緩存行是臟的(dirty),與主存的值不同。如果別的CPU內(nèi)核要讀主存這塊數(shù)據(jù),該緩存行必須回寫(xiě)到主存,狀態(tài)變?yōu)楣蚕?S).
  •  E:代表獨(dú)占(Exclusive) 緩存行只在當(dāng)前緩存中,但是干凈的(clean)--緩存數(shù)據(jù)同于主存數(shù)據(jù)。當(dāng)別的緩存讀取它時(shí),狀態(tài)變?yōu)楣蚕?S);當(dāng)前寫(xiě)數(shù)據(jù)時(shí),變?yōu)橐研薷?M)狀態(tài)。
  •  S:代表共享(Shared) 緩存行也存在于其它緩存中且是干凈(clean)的。緩存行可以在任意時(shí)刻拋棄。
  •  I:代表已失效(Invalidated) 緩存行是臟的(dirty),無(wú)效的。

四種狀態(tài)的相容關(guān)系如下:

 

這里我們只需要知道它是通過(guò)這四種狀態(tài)的切換解決的Cache一致性問(wèn)題就好,具體狀態(tài)機(jī)的控制實(shí)現(xiàn)太繁瑣,就不多介紹了,這是狀態(tài)機(jī)轉(zhuǎn)換圖,是不是有點(diǎn)懵。

 

7. Cache與主存的映射關(guān)系?

直接映射

 

直接映射如圖所示,每個(gè)主存塊只能映射Cache的一個(gè)特定塊。直接映射是最簡(jiǎn)單的地址映射方式,它的硬件簡(jiǎn)單,成本低,地址轉(zhuǎn)換速度快,但是這種方式不太靈活,Cache的存儲(chǔ)空間得不到充分利用,每個(gè)主存塊在Cache中只有一個(gè)固定位置可存放,容易產(chǎn)生沖突,使Cache效率下降,因此只適合大容量Cache采用。

 

例如,如果一個(gè)程序需要重復(fù)引用主存中第0塊與第16塊,最好將主存第0塊與第16塊同時(shí)復(fù)制到Cache中,但由于它們都只能復(fù)制到Cache的第0塊中去,即使Cache中別的存儲(chǔ)空間空著也不能占用,因此這兩個(gè)塊會(huì)不斷地交替裝入Cache中,導(dǎo)致命中率降低。

 

直接映射方式下主存地址格式如圖,主存地址為s+w位,Cache空間有2的r次方行,每行大小有2的w次方字節(jié),則Cache地址有w+r位。通過(guò)Line確定該內(nèi)存塊應(yīng)該在Cache中的位置,確定位置后比較標(biāo)記是否相同,如果相同則表示Cache命中,從Cache中讀取。

全相連映射

 

全相連映射如圖所示,主存中任何一塊都可以映射到Cache中的任何一塊位置上。

全相聯(lián)映射方式比較靈活,主存的各塊可以映射到Cache的任一塊中,Cache的利用率高,塊沖突概率低,只要淘汰Cache中的某一塊,即可調(diào)入主存的任一塊。但是,由于Cache比較電路的設(shè)計(jì)和實(shí)現(xiàn)比較困難,這種方式只適合于小容量Cache采用。

 

全相連映射的主存結(jié)構(gòu)就很簡(jiǎn)單啦,將CPU發(fā)出的內(nèi)存地址的塊號(hào)部分與Cache所有行的標(biāo)記進(jìn)行比較,如果有相同的,則Cache命中,從Cache中讀取,如果找不到,則沒(méi)有命中,從主存中讀取。

組相連映射

 

組相聯(lián)映射實(shí)際上是直接映射和全相聯(lián)映射的折中方案,其組織結(jié)構(gòu)如圖3-16所示。主存和Cache都分組,主存中一個(gè)組內(nèi)的塊數(shù)與Cache中的分組數(shù)相同,組間采用直接映射,組內(nèi)采用全相聯(lián)映射。也就是說(shuō),將Cache分成u組,每組v塊,主存塊存放到哪個(gè)組是固定的,至于存到該組哪一塊則是靈活的。例如,主存分為256組,每組8塊,Cache分為8組,每組2塊。

主存中的各塊與Cache的組號(hào)之間有固定的映射關(guān)系,但可自由映射到對(duì)應(yīng)Cache組中的任何一塊。例如,主存中的第0塊、第8塊……均映射于Cache的第0組,但可映射到Cache第0組中的第0塊或第1塊;主存的第1塊、第9塊……均映射于Cache的第1組,但可映射到Cache第1組中的第2塊或第3塊。

 

常采用的組相聯(lián)結(jié)構(gòu)Cache,每組內(nèi)有2、4、8、16塊,稱(chēng)為2路、4路、8路、16路組相聯(lián)Cache。組相聯(lián)結(jié)構(gòu)Cache是前兩種方法的折中方案,適度兼顧二者的優(yōu)點(diǎn),盡量避免二者的缺點(diǎn),因而得到普遍采用。

 

組相連映射方式下的主存地址格式如圖,先確定主存應(yīng)該在Cache中的哪一個(gè)組,之后組內(nèi)是全相聯(lián)映射,依次比較組內(nèi)的標(biāo)記,如果有標(biāo)記相同的Cache,則命中,否則不命中。

在網(wǎng)上找到了三種映射方式下的主存格式對(duì)比圖,大家也可以看下:

 

8. Cache的替換策略?

Cache的替換策略想必大家都知道,就是LRU策略,即最近最少使用算法,選擇未使用時(shí)間最長(zhǎng)的Cache替換。

9. 如何巧妙利用CPU Cache編程?

  1. const int row = 1024; 
  2. const int col = 1024; 
  3. int matrix[row][col]; 
  4.  
  5. //按行遍歷 
  6. int sum_row = 0; 
  7. for (int r = 0; r < row; r++) { 
  8.     for (int c = 0; c < col; c++) { 
  9.         sum_row += matrix[r][c]; 
  10.     } 
  11.  
  12. //按列遍歷 
  13. int sum_col = 0; 
  14. for (int c = 0; c < col; c++) { 
  15.     for (int r = 0; r < row; r++) { 
  16.         sum_col += matrix[r][c]; 
  17.     } 

上面是兩段二維數(shù)組的遍歷方式,一種按行遍歷,另一種是按列遍歷,乍一看您可能認(rèn)為計(jì)算量沒(méi)有任何區(qū)別,但其實(shí)按行遍歷比按列遍歷速度快的多,這就是CPU Cache起到了作用,根據(jù)程序局部性原理,訪問(wèn)主存時(shí)會(huì)把相鄰的部分?jǐn)?shù)據(jù)也加載到Cache中,下次訪問(wèn)相鄰數(shù)據(jù)時(shí)Cache的命中率極高,速度自然也會(huì)提升不少。

平時(shí)編程過(guò)程中也可以多利用好程序的時(shí)間局部性和空間局部性原理,就可以提高CPU Cache的命中率,提高程序運(yùn)行的效率。

參考鏈接

https://cseweb.ucsd.edu/classes/fa14/cse240A-a/pdf/08/CSE240A-MBT-L15-Cache.ppt.pdf

http://www.ecs.csun.edu/~cputnam/Comp546/Putnam/Cache%20Memory.pdf

https://ece752.ece.wisc.edu/lect11-cache-replacement.pdf

http://www.ipdps.org/ipdps2010/ipdps2010-slides/session-22/2010IPDPS.pdf

https://faculty.tarleton.edu/agapie/documents/cs_343_arch/04_CacheMemory.pdf

https://www.cnblogs.com/bjlhx/p/10658938.html

https://zh.wikipedia.org/wiki/MESI%E5%8D%8F%E8%AE%AE

https://www.cnblogs.com/yanlong300/p/8986041.html

https://coolshell.cn/articles/20793.html

https://zhuanlan.zhihu.com/p/31875174

https://www.cnblogs.com/jokerjason/p/10711022.html

http://cenalulu.github.io/linux/all-about-cpu-cache/

https://my.oschina.net/fileoptions/blog/1630855

https://www.pianshen.com/article/9557956769/

https://blog.csdn.net/weixin_42649617/article/details/105092395

 

責(zé)任編輯:武曉燕 來(lái)源: 程序喵大人
相關(guān)推薦

2021-05-07 08:42:19

機(jī)器學(xué)習(xí)人工智能AI

2025-02-17 00:00:20

itext生成庫(kù)pdf

2019-08-16 09:41:56

UDP協(xié)議TCP

2021-09-30 07:59:06

zookeeper一致性算法CAP

2019-04-08 10:09:04

CPU緩存高性能

2023-11-22 07:54:33

Xargs命令Linux

2022-03-29 08:23:56

項(xiàng)目數(shù)據(jù)SIEM

2021-05-07 07:52:51

Java并發(fā)編程

2023-10-17 08:15:28

API前后端分離

2020-10-23 07:43:37

Log配置性能

2017-03-30 22:41:55

虛擬化操作系統(tǒng)軟件

2024-08-27 11:00:56

單例池緩存bean

2023-09-25 08:32:03

Redis數(shù)據(jù)結(jié)構(gòu)

2021-07-28 13:29:57

大數(shù)據(jù)PandasCSV

2023-10-04 00:32:01

數(shù)據(jù)結(jié)構(gòu)Redis

2023-11-07 07:46:02

GatewayKubernetes

2021-09-10 13:06:45

HDFS底層Hadoop

2019-10-09 10:06:48

容器監(jiān)控軟件

2023-02-16 13:42:00

MongoDB數(shù)據(jù)庫(kù)

2021-11-01 15:51:26

Java代碼函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲成在人线免费| 校园激情久久| 日韩欧美区一区二| 成人精品视频在线播放| 色综合视频在线| 美女黄色成人网| 自拍偷拍免费精品| 中国男女全黄大片| 成人香蕉视频| 中文字幕一区免费在线观看| 亚洲在线www| 日本道在线观看| 欧美亚洲国产一区| 欧美一级淫片007| 人人妻人人添人人爽欧美一区| 欧美人体大胆444www| 亚洲免费中文| 日韩在线观看免费高清| 精品无码人妻少妇久久久久久| 午夜激情在线播放| 国产精品理伦片| 亚洲综合小说区| 800av免费在线观看| 欧美大黑bbbbbbbbb在线| 日韩精品一区二区三区swag| 欧美成人黑人猛交| yellow91字幕网在线| 国产精品一二三四区| 欧美在线视频一区| 人妻少妇精品一区二区三区| 精品在线观看入口| 日韩免费一区二区| 亚洲中文字幕无码中文字| 黄色小网站在线观看| 2020国产精品自拍| 18成人在线| 中国老头性行为xxxx| 亚洲青色在线| 欧美日韩国产成人| eeuss中文字幕| 亚洲人成亚洲精品| 日韩天堂在线观看| 日日噜噜夜夜狠狠| 激情国产在线| 亚洲一区免费视频| 亚洲在线视频一区二区| 欧美理论在线观看| 成人免费高清在线观看| 成人黄色午夜影院| 久久久久久久久久一级| 精品99视频| 久久福利网址导航| 亚洲激情图片网| 国产免费久久| 亚洲美女福利视频网站| 亚洲 自拍 另类 欧美 丝袜| 精品免费av一区二区三区| 亚洲成人动漫一区| 97av中文字幕| 超碰超碰在线| 一区二区三区在线观看视频| 中文字幕在线亚洲精品| 自拍视频在线播放| 亚洲国产精品国自产拍av| 青青成人在线| 国产成人手机在线| 成人性生交大片免费| 99视频在线播放| 99热这里只有精品9| 精品一区二区久久| 91九色国产视频| 91影院在线播放| 久久精品久久综合| 91精品久久久久久久久| 91禁在线观看| 国产黄色成人av| 99超碰麻豆| 日本人妻丰满熟妇久久久久久| 国产成人精品一区二| 福利视频一区二区三区| 好男人www在线视频| 成人毛片老司机大片| 国产精品亚洲不卡a| 视频一区二区免费| 26uuu色噜噜精品一区| 国产高清一区二区三区| 污视频网站免费观看| 久久综合九色综合97_久久久| 久久久久久久久四区三区| 亚洲人成色777777精品音频| 久久精品网站免费观看| 亚洲视频在线观看日本a| 蜜桃视频网站在线观看| 亚洲乱码中文字幕| 超碰超碰超碰超碰超碰| gogo高清午夜人体在线| 日本丰满少妇一区二区三区| 午夜免费福利视频在线观看| 91蝌蚪精品视频| 亚洲精品99久久久久| 国产精品815.cc红桃| 日韩欧美中字| 久久久久一本一区二区青青蜜月| 日韩黄色a级片| 男人操女人的视频在线观看欧美| 91精品久久久久久久久久入口| 国产chinasex对白videos麻豆| 国产乱人伦偷精品视频不卡| 久久精品二区| 欧洲日本在线| 激情成人在线视频| 无限资源日本好片| 凹凸成人在线| 伊人久久精品视频| 久久久久久久久久久久久久免费看| 国产欧美欧美| 91天堂在线视频| 色综合成人av| 一二三四区精品视频| 久久婷婷五月综合色国产香蕉| 国产精品高清乱码在线观看| 欧美一区二区三区婷婷月色| 扒开jk护士狂揉免费| 欧美精品首页| 91a在线视频| av中文字幕免费在线观看| 久久久精品tv| 欧美男女爱爱视频| 日韩一区中文| 亚洲三级 欧美三级| 欧美极品aaaaabbbbb| 免费成人在线视频观看| 久久精品日韩精品| 丝袜在线视频| 欧美群妇大交群的观看方式| 青青草成人免费视频| 欧美精品色网| 亚洲一区二区三区香蕉 | 在线免费av网站| 亚洲成人动漫在线观看| 97公开免费视频| 日韩美女国产精品| 欧美高清视频在线| 这里只有精品9| 久久午夜羞羞影院免费观看| 欧美久久在线观看| 国产麻豆一区二区三区| 中文字幕亚洲精品| 免费污污视频在线观看| 成人激情文学综合网| 亚洲精品偷拍视频| 成人久久网站| 日韩久久精品成人| 日韩精品一区二区三| 国产乱色国产精品免费视频| 亚洲成年人专区| 欧美大陆国产| 北条麻妃久久精品| 一女二男一黄一片| 国产精品欧美一区喷水| 青青草精品视频在线观看| 久操成人av| 欧美在线视频a| 蜜臀久久99精品久久久| 一区二区不卡在线视频 午夜欧美不卡在| 最新国产黄色网址| 国产一区二区在线| 国产成人在线视频| 成人资源www网在线最新版| 在线中文字幕一区| 免费福利视频网站| 日本午夜一区二区| 亚洲精品免费在线看| 久久青草伊人| 亚洲男人的天堂在线| 91在线视频免费播放| 国产亚洲va综合人人澡精品| www.日日操| 日本电影一区二区| 91在线观看免费高清| 国产在线三区| 欧美精品在线观看一区二区| 国产成人自拍网站| 成人综合婷婷国产精品久久蜜臀| 日韩中文字幕在线免费| 99re8这里有精品热视频免费 | 97在线电影| 91福利区在线观看| 亚洲欧美激情四射在线日| 做爰无遮挡三级| 最新欧美精品一区二区三区| 国模大尺度视频| 久久久久久久久国产一区| 97se视频在线观看| 久草在线视频资源| 亚洲欧美日韩精品久久| 亚洲天堂网在线视频| 成人欧美一区二区三区小说| 免费在线观看日韩av| 国产视频一区三区| 欧美精品免费观看二区| 日韩一区二区三区四区五区 | 成人自拍av| 在线中文字幕日韩| 精品国产无码一区二区三区| 欧美体内谢she精2性欧美| 中文字幕第二区| 国产suv精品一区二区三区| 777久久久精品一区二区三区 | 新版的欧美在线视频| 中文字幕av一区中文字幕天堂| 一级黄色大毛片| 性做久久久久久免费观看| 国产又粗又猛又爽又黄av| 国产成人精品三级麻豆| www.国产区| 综合日韩在线| 日韩欧美精品一区二区| 色妞ww精品视频7777| 欧日韩不卡在线视频| 国产91在线视频蝌蚪| 精品美女被调教视频大全网站| 无码人妻丰满熟妇精品区| 亚洲精品免费看| 久久成人激情视频| 成人国产在线观看| av中文字幕网址| 欧美一区=区| www.成年人视频| 日韩精品水蜜桃| 久久99精品久久久久久久久久| 精品国产美女a久久9999| 2019亚洲日韩新视频| 国产美女情趣调教h一区二区| 久久中文字幕一区| 久久精品视频免费看| 色黄久久久久久| 日本最黄一级片免费在线| 在线视频国产日韩| av福利精品| 亚洲天堂精品在线| 欧美在线观看在线观看| 欧美一区二区三区人| 91在线公开视频| 欧美综合一区二区| 亚洲精品毛片一区二区三区| 福利一区视频在线观看| 妺妺窝人体色www婷婷| 亚洲自拍另类综合| 免费高清在线观看电视| 国产精品视频一二三区| 久久精品三级视频| 91麻豆精品一区二区三区| 天天av天天操| 国产麻豆精品视频| 五月婷婷丁香色| 美女网站在线免费欧美精品| 女人另类性混交zo| 亚洲少妇自拍| 亚洲成人av免费看| 日日夜夜精品视频天天综合网| 亚洲人精品午夜射精日韩 | 久久久久免费看黄a片app| 欧美三级视频| 又粗又黑又大的吊av| 亚洲国产国产亚洲一二三| 黄色一级片黄色| 在线视频日韩| 国产极品美女高潮无套久久久| 99国内精品| av日韩在线看| 亚洲美女色禁图| 欧美日韩激情视频在线观看| 亚洲二区精品| 男人揉女人奶房视频60分| 亚洲女人av| 国产毛片久久久久久| 国产成人亚洲综合色影视| 白嫩情侣偷拍呻吟刺激| aaa亚洲精品一二三区| www.自拍偷拍| 欧美经典一区二区| 黄色激情小视频| 亚洲欧美日韩系列| 国产一卡二卡在线播放| 在线这里只有精品| 国产精品高潮呻吟av| 欧美一二三四区在线| 精品无人乱码| 精品国产一区二区三区久久久狼 | 自拍偷拍国产亚洲| 日韩av综合在线| 色欧美片视频在线观看| 91中文字幕在线视频| 日韩av网址在线| 1024视频在线| 午夜精品国产精品大乳美女| 九九热这里有精品| 国产在线精品一区二区三区》| 免费看av成人| 69sex久久精品国产麻豆| 久久一区亚洲| 欧美性猛交xxxx乱大交91| 久久综合久久鬼色中文字| 九一在线免费观看| 一区二区三区视频在线看| 欧美男人天堂网| 日韩一级在线观看| 青青草观看免费视频在线| 久久综合久久美利坚合众国| 日本不卡1234视频| 成人精品视频在线| 精品久久视频| 中文字幕一区二区三区av| 老司机精品免费视频| 欧美日韩亚洲系列| 一本大道伊人av久久综合| 日韩电影视频免费| 91极品在线| 国产xxx69麻豆国语对白| 国产一区调教| 综合操久久久| 久久青草久久| 好吊一区二区三区视频| 日韩毛片在线免费观看| 天堂а√在线中文在线新版 | 国产一级特黄a高潮片| 欧美一区二区三区喷汁尤物| 噜噜噜在线观看播放视频| 久久韩剧网电视剧| 日韩大陆av| 另类欧美小说| 国户精品久久久久久久久久久不卡| 91最新在线观看| 91日韩一区二区三区| 日韩精品视频播放| 日韩欧美一区电影| 网友自拍视频在线| 国产中文字幕日韩| 精品免费在线| 日韩一级特黄毛片| 国产一区欧美二区| 国产主播av在线| 欧美日韩aaa| av电影在线网| 国产精品日韩电影| 日韩精品欧美| 久久久国产欧美| 久久综合狠狠综合久久激情| 天天操中文字幕| 亚洲娇小xxxx欧美娇小| 日韩激情电影| 国产尤物99| 亚洲日本久久| 中文字幕一区二区久久人妻网站| 亚洲综合免费观看高清在线观看| 精品国产青草久久久久96| 色偷偷偷亚洲综合网另类| 日韩欧美精品一区二区综合视频| 视频一区视频二区视频三区视频四区国产 | 精品国产伦一区二区三区观看方式 | 久久婷婷国产麻豆91| 精品国产99国产精品| 免费网站在线观看人| 国产精品视频一区二区三区四| 欧美大片aaaa| aaaaaaaa毛片| 亚洲va中文字幕| 午夜影院在线视频| 欧美在线影院在线视频| 成人精品视频| 国产成年人视频网站| 亚洲综合色婷婷| 少妇喷水在线观看| 欧洲s码亚洲m码精品一区| 日本a口亚洲| 天天综合成人网| 精品国产乱码久久久久久天美 | 国产一区中文字幕| 国产亚洲成人av| 日韩精品欧美激情| 国产精成人品2018| 精品人妻大屁股白浆无码| caoporn国产一区二区| 中文字幕在线播放不卡| 日韩有码在线电影| 日韩中文字幕| 狠狠操精品视频| 亚洲婷婷综合色高清在线| www国产在线| 57pao国产成人免费| 香港欧美日韩三级黄色一级电影网站| 亚洲天堂一区二区在线观看| 懂色av影视一区二区三区| 国产专区在线播放| 91久久国产精品| 久久久国产亚洲精品| 日韩精品一区二区亚洲av性色 | 欧美在线高清| 在线免费观看成年人视频|