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

關于CPU Cache -- 程序猿需要知道的那些事

商務辦公
隨著工藝的提升最近幾十年CPU的頻率不斷提升,而受制于制造工藝和成本限制,目前計算機的內存主要是DRAM并且在訪問速度上沒有質的突破。

 本文將介紹一些作為程序猿或者IT從業者應該知道的CPU Cache相關的知識

文章歡迎轉載,但轉載時請保留本段文字,并置于文章的頂部 作者:盧鈞軼(cenalulu) 本文原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/

先來看一張本文所有概念的一個思維導圖

 

為什么要有CPU Cache

隨著工藝的提升最近幾十年CPU的頻率不斷提升,而受制于制造工藝和成本限制,目前計算機的內存主要是DRAM并且在訪問速度上沒有質的突破。因此,CPU的處理速度和內存的訪問速度差距越來越大,甚至可以達到上萬倍。這種情況下傳統的CPU通過FSB直連內存的方式顯然就會因為內存訪問的等待,導致計算資源大量閑置,降低CPU整體吞吐量。同時又由于內存數據訪問的熱點集中性,在CPU和內存之間用較為快速而成本較高的SDRAM做一層緩存,就顯得性價比極高了。

為什么要有多級CPU Cache

隨著科技發展,熱點數據的體積越來越大,單純的增加一級緩存大小的性價比已經很低了。因此,就慢慢出現了在一級緩存(L1 Cache)和內存之間又增加一層訪問速度和成本都介于兩者之間的二級緩存(L2 Cache)。下面是一段從What Every Programmer Should Know About Memory中摘錄的解釋:

Soon after the introduction of the cache the system got more complicated. The speed difference between the cache and the main memory increased again, to a point that another level of cache was added, bigger and slower than the first-level cache. Only increasing the size of the first-level cache was not an option for economical rea- sons.

此外,又由于程序指令和程序數據的行為和熱點分布差異很大,因此L1 Cache也被劃分成L1i (i for instruction)和L1d (d for data)兩種專門用途的緩存。 下面一張圖可以看出各級緩存之間的響應時間差距,以及內存到底有多慢!

 

什么是Cache Line

Cache Line可以簡單的理解為CPU Cache中的最小緩存單位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假設我們有一個512字節的一級緩存,那么按照64B的緩存單位大小來算,這個一級緩存所能存放的緩存個數就是512/64 = 8個。具體參見下圖:

 

為了更好的了解Cache Line,我們還可以在自己的電腦上做下面這個有趣的實驗。

下面這段C代碼,會從命令行接收一個參數作為數組的大小創建一個數量為N的int數組。并依次循環的從這個數組中進行數組內容訪問,循環10億次。最終輸出數組總大小和對應總執行時間。

  1. #include "stdio.h" 
  2. #include <stdlib.h> 
  3. #include <sys/time.h>long timediff(clock_t t1, clock_t t2) { 
  4.     long elapsed; 
  5.     elapsed = ((double)t2 - t1) / CLOCKS_PER_SEC * 1000; 
  6.     return elapsed;}int main(int argc, char *argv[])#*******{ 
  7.  
  8.     int array_size=atoi(argv[1]); 
  9.     int repeat_times = 1000000000; 
  10.     long array[array_size]; 
  11.     for(int i=0; i<array_size; i++){ 
  12.         array[i] = 0; 
  13.     } 
  14.     int j=0; 
  15.     int k=0; 
  16.     int c=0; 
  17.     clock_t start=clock(); 
  18.     while(j++<repeat_times){ 
  19.         if(k==array_size){ 
  20.             k=0; 
  21.         } 
  22.         c = array[k++]; 
  23.     } 
  24.     clock_t end =clock(); 
  25.     printf("%lu\n", timediff(start,end)); 
  26.     return 0;} 

如果我們把這些數據做成折線圖后就會發現:總執行時間在數組大小超過64Bytes時有較為明顯的拐點(當然,由于博主是在自己的Mac筆記本上測試的,會受到很多其他程序的干擾,因此會有波動)。原因是當數組小于64Bytes時數組極有可能落在一條Cache Line內,而一個元素的訪問就會使得整條Cache Line被填充,因而值得后面的若干個元素受益于緩存帶來的加速。而當數組大于64Bytes時,必然至少需要兩條Cache Line,繼而在循環訪問時會出現兩次Cache Line的填充,由于緩存填充的時間遠高于數據訪問的響應時間,因此多一次緩存填充對于總執行的影響會被放大,最終得到下圖的結果:

如果讀者有興趣的話也可以在自己的linux或者MAC上通過gcc cache_line_size.c -o cache_line_size編譯,并通過./cache_line_size執行。

 

了解Cache Line的概念對我們程序猿有什么幫助? 我們來看下面這個C語言中常用的循環優化例子下面兩段代碼中,***段代碼在C語言中總是比第二段代碼的執行速度要快。具體的原因相信你仔細閱讀了Cache Line的介紹后就很容易理解了。

  1. for(int i = 0; i < n; i++) { 
  2.     for(int j = 0; j < n; j++) { 
  3.         int num;     
  4.         //code        arr[i][j] = num; 
  5.     }} 
  6. for(int i = 0; i < n; i++) { 
  7.     for(int j = 0; j < n; j++) { 
  8.         int num;     
  9.         //code        arr[j][i] = num; 
  10.     }} 

CPU Cache 是如何存放數據的

你會怎么設計Cache的存放規則

我們先來嘗試回答一下那么這個問題:

假設我們有一塊4MB的區域用于緩存,每個緩存對象的唯一標識是它所在的物理內存地址。每個緩存對象大小是64Bytes,所有可以被緩存對象的大小總和(即物理內存總大小)為4GB。那么我們該如何設計這個緩存?

如果你和博主一樣是一個大學沒有好好學習基礎/數字電路的人的話,會覺得最靠譜的的一種方式就是:Hash表。把Cache設計成一個Hash數組。內存地址的Hash值作為數組的Index,緩存對象的值作為數組的Value。每次存取時,都把地址做一次Hash然后找到Cache中對應的位置操作即可。 這樣的設計方式在高等語言中很常見,也顯然很高效。因為Hash值得計算雖然耗時(10000個CPU Cycle左右),但是相比程序中其他操作(上百萬的CPU Cycle)來說可以忽略不計。而對于CPU Cache來說,本來其設計目標就是在幾十CPU Cycle內獲取到數據。如果訪問效率是百萬Cycle這個等級的話,還不如到Memory直接獲取數據。當然,更重要的原因是在硬件上要實現Memory Address Hash的功能在成本上是非常高的。

為什么Cache不能做成Fully Associative

Fully Associative 字面意思是全關聯。在CPU Cache中的含義是:如果在一個Cache集內,任何一個內存地址的數據可以被緩存在任何一個Cache Line里,那么我們成這個cache是Fully Associative。從定義中我們可以得出這樣的結論:給到一個內存地址,要知道他是否存在于Cache中,需要遍歷所有Cache Line并比較緩存內容的內存地址。而Cache的本意就是為了在盡可能少得CPU Cycle內取到數據。那么想要設計一個快速的Fully Associative的Cache幾乎是不可能的。

為什么Cache不能做成Direct Mapped

和Fully Associative完全相反,使用Direct Mapped模式的Cache給定一個內存地址,就唯一確定了一條Cache Line。設計復雜度低且速度快。那么為什么Cache不使用這種模式呢?讓我們來想象這么一種情況:一個擁有1M L2 Cache的32位CPU,每條Cache Line的大小為64Bytes。那么整個L2Cache被劃為了1M/64=16384條Cache Line。我們為每條Cache Line從0開始編上號。同時32位CPU所能管理的內存地址范圍是2^32=4G,那么Direct Mapped模式下,內存也被劃為4G/16384=256K的小份。也就是說每256K的內存地址共享一條Cache Line。但是,這種模式下每條Cache Line的使用率如果要做到接近100%,就需要操作系統對于內存的分配和訪問在地址上也是近乎平均的。而與我們的意愿相反,為了減少內存碎片和實現便捷,操作系統更多的是連續集中的使用內存。這樣會出現的情況就是0-1000號這樣的低編號Cache Line由于內存經常被分配并使用,而16000號以上的Cache Line由于內存鮮有進程訪問,幾乎一直處于空閑狀態。這種情況下,本來就寶貴的1M二級CPU緩存,使用率也許50%都無法達到。

什么是N-Way Set Associative

為了避免以上兩種設計模式的缺陷,N-Way Set Associative緩存就出現了。他的原理是把一個緩存按照N個Cache Line作為一組(set),緩存按組劃為等分。這樣一個64位系統的內存地址在4MB二級緩存中就劃成了三個部分(見下圖),低位6個bit表示在Cache Line中的偏移量,中間12bit表示Cache組號(set index),剩余的高位46bit就是內存地址的唯一id。這樣的設計相較前兩種設計有以下兩點好處:

  • 給定一個內存地址可以唯一對應一個set,對于set中只需遍歷16個元素就可以確定對象是否在緩存中(Full Associative中比較次數隨內存大小線性增加)
  • 每2^18(256K)*16(way)=4M的連續熱點數據才會導致一個set內的conflict(Direct Mapped中512K的連續熱點數據就會出現conflict)

什么N-Way Set Associative的Set段是從低位而不是高位開始的

下面是一段從How Misaligning Data Can Increase Performance 12x by Reducing Cache Misses摘錄的解釋:

The vast majority of accesses are close together, so moving the set index bits upwards would cause more conflict misses. You might be able to get away with a hash function that isn’t simply the least significant bits, but most proposed schemes hurt about as much as they help while adding extra complexity.

由于內存的訪問通常是大片連續的,或者是因為在同一程序中而導致地址接近的(即這些內存地址的高位都是一樣的)。所以如果把內存地址的高位作為set index的話,那么短時間的大量內存訪問都會因為set index相同而落在同一個set index中,從而導致cache conflicts使得L2, L3 Cache的***率低下,影響程序的整體執行效率。

了解N-Way Set Associative的存儲模式對我們有什么幫助

了解N-Way Set的概念后,我們不難得出以下結論:2^(6Bits + 12Bits ) = 2^18 = 256K。即在連續的內存地址中每256K都會出現一個處于同一個Cache Set中的緩存對象。也就是說這些對象都會爭搶一個僅有16個空位的緩存池(16-Way Set)。而如果我們在程序中又使用了所謂優化神器的“內存對齊”的時候,這種爭搶就會越發增多。效率上的損失也會變得非常明顯。具體的實際測試我們可以參考: How Misaligning Data Can Increase Performance 12x by Reducing Cache Misses 一文。 這里我們引用一張Gallery of Processor Cache Effects 中的測試結果圖,來解釋下內存對齊在極端情況下帶來的性能損失。

 

該圖實際上是我們上文中***個測試的一個變種。縱軸表示了測試對象數組的大小。橫軸表示了每次數組元素訪問之間的index間隔。而圖中的顏色表示了響應時間的長短,藍色越明顯的部分表示響應時間越長。從這個圖我們可以得到很多結論。當然這里我們只對內存帶來的性能損失感興趣。有興趣的讀者也可以閱讀原文分析理解其他從圖中可以得到的結論。

從圖中我們不難看出圖中每1024個步進,即每1024*4即4096Bytes,都有一條特別明顯的藍色豎線。也就是說,只要我們按照4K的步進去訪問內存(內存根據4K對齊),無論熱點數據多大它的實際效率都是非常低的!按照我們上文的分析,如果4KB的內存對齊,那么一個240MB的數組就含有61440個可以被訪問到的數組元素;而對于一個每256K就會有set沖突的16Way二級緩存,總共有256K/4K=64個元素要去爭搶16個空位,總共有61440/64=960個這樣的元素。那么緩存***率只有1%,自然效率也就低了。

除了這個例子,有興趣的讀者還可以查閱另一篇國人對Page Align導致效率低的實驗:http://evol128.is-programmer.com/posts/35453.html

想要知道更多關于內存地址對齊在目前的這種CPU-Cache的架構下會出現的問題可以詳細閱讀以下兩篇文章:

  • How Misaligning Data Can Increase Performance 12x by Reducing Cache Misses
  • Gallery of Processor Cache Effects

Cache淘汰策略

在文章的***我們順帶提一下CPU Cache的淘汰策略。常見的淘汰策略主要有LRU和Random兩種。通常意義下LRU對于Cache的***率會比Random更好,所以CPU Cache的淘汰策略選擇的是LRU。當然也有些實驗顯示在Cache Size較大的時候Random策略會有更高的***率

總結

CPU Cache對于程序猿是透明的,所有的操作和策略都在CPU內部完成。但是,了解和理解CPU Cache的設計、工作原理有利于我們更好的利用CPU Cache,寫出更多對CPU Cache友好的程序

Reference

  • Gallery of Processor Cache Effects

http://igoro.com/archive/gallery-of-processor-cache-effects/

  • How Misaligning Data Can Increase Performance 12x by Reducing Cache Misses

http://danluu.com/3c-conflict/

  • Introduction to Caches

http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/introCache.html

責任編輯:武曉燕 來源: Linux內核之旅
相關推薦

2023-09-04 07:49:43

2016-09-08 14:40:44

2023-08-16 15:57:53

2024-01-22 11:34:08

2014-04-01 13:54:32

AndroidStudioEclipse

2016-11-01 23:16:52

光纖光纖線纜

2020-05-07 10:14:00

企業架構師CIOIT網絡

2023-10-16 13:36:00

邊緣計算數據

2018-01-03 11:35:34

推送AndroidiOS

2016-09-14 16:21:06

DBA線上操作

2015-08-11 17:55:21

谷歌重組科技

2021-11-11 13:39:53

存儲數據存儲技術

2022-10-21 14:01:35

邊緣計算IT數據中心

2018-12-21 09:15:13

綜合布線屏蔽線纜

2021-04-15 08:04:27

容器DevOps程序

2010-11-16 17:16:36

IPv6IPv4

2019-10-25 11:02:01

安全內部威脅網絡

2023-01-20 11:51:40

性能測試系統

2013-06-21 16:35:50

iOS 7設計蘋果開發iOS 7新特性
點贊
收藏

51CTO技術棧公眾號

欧美一a一片一级一片| 91麻豆免费观看| 色在人av网站天堂精品| 麻豆国产精品一区| 国语自产精品视频在线看抢先版结局| 中文字幕日韩av资源站| 国内精品视频免费| 国产精华7777777| 国产精品扒开腿做爽爽爽软件| 亚洲精品福利在线| 亚洲va综合va国产va中文| 国产在线拍揄自揄拍视频| 久久女同精品一区二区| 91免费在线视频网站| 国产成人亚洲精品自产在线| 日韩成人影院| 亚洲国产天堂久久综合网| 日本高清久久久| 另类激情视频| 亚洲一区二区三区四区在线观看| 日韩精品av一区二区三区| 国内精品偷拍视频| 麻豆精品国产91久久久久久| 97人洗澡人人免费公开视频碰碰碰| 久久午夜精品视频| 免费久久精品| 亚洲精品久久久一区二区三区| 九九热免费在线观看| 成人性教育av免费网址| 亚洲福利一二三区| 色哺乳xxxxhd奶水米仓惠香| porn亚洲| 精品一级毛片| 欧美午夜一区| 在线日韩精品视频| 国产精品300页| 9l视频自拍蝌蚪9l视频成人| 欧美午夜一区二区| 日本三级免费观看| а√在线中文在线新版| 亚洲乱码国产乱码精品精98午夜| 日韩精品另类天天更新| 四虎影视精品成人| www.性欧美| 国产精品久久久对白| av网站免费大全| 国内精品伊人久久久久影院对白| 国产精品久久久久久久一区探花| 天天操夜夜操视频| 西西裸体人体做爰大胆久久久| 欧美成人在线网站| 日韩黄色免费观看| 亚洲久久久久| 欧美日本国产在线| 免费三片在线播放| 在线日韩中文| 国内精品久久久久伊人av| 精品少妇一二三区| 在线观看日韩av电影| 欧美激情精品久久久久久久变态 | 久久综合偷偷噜噜噜色| 欧美精品三级在线观看| 免费人成视频在线播放| 日韩高清二区| 亚洲国产精品推荐| 大地资源二中文在线影视观看| 欧美一级一片| 国产午夜精品全部视频播放 | 精品国产视频| 北条麻妃99精品青青久久| 欧美一区免费观看| 亚洲茄子视频| 国产精品成人一区二区| 一级欧美一级日韩| 懂色av一区二区三区免费观看| 高清视频一区| 全色精品综合影院| 国产精品免费看片| 成人免费看片'免费看| 麻豆免费在线| 欧美色图天堂网| 丰满少妇中文字幕| 成人自拍在线| 亚洲天天在线日亚洲洲精| 在线观看天堂av| 激情文学一区| 国产精品久久久久9999| 精品久久无码中文字幕| 26uuu国产日韩综合| 亚洲在线视频一区二区| 女同一区二区免费aⅴ| 色琪琪一区二区三区亚洲区| 天天操天天干天天做| 超碰在线亚洲| 中文字幕一精品亚洲无线一区 | 亚洲国产精品精华素| 同产精品九九九| 亚洲最大天堂网| 西瓜成人精品人成网站| 久久亚洲精品中文字幕冲田杏梨| 日本少妇bbwbbw精品| 蜜臀av性久久久久蜜臀aⅴ流畅 | 超碰免费在线| 亚洲午夜精品一区二区三区他趣| 国产又黄又猛视频| 6080成人| 久久久国产精彩视频美女艺术照福利 | 午夜久久久久久久久久| 国产亚洲精品超碰| 精品人妻人人做人人爽| 麻豆久久久久| 亚洲欧美日本另类| 青娱乐国产在线| 免费成人在线视频观看| 精品国产一区二区三区麻豆免费观看完整版 | 在线观看av免费观看| 亚洲精品国产动漫| 久久青草福利网站| 国内精品久久久久久久久久| 国产日韩三级在线| 男女高潮又爽又黄又无遮挡| 日韩在线观看一区二区三区| 日韩天堂在线视频| 亚洲综合成人av| www国产精品av| 日韩视频在线视频| 日韩精品视频一区二区三区| 国产一区二区久久精品| 丰满少妇xoxoxo视频| 成人美女视频在线看| 免费看日b视频| 国产精品一区二区精品视频观看| 国产一区二区久久精品| 男人的天堂av网站| 久久精品视频在线免费观看| 男女啪啪免费视频网站| 影音先锋欧美激情| 欧美成人激情视频免费观看| 影音先锋黄色网址| 国产精品欧美一级免费| 中文字幕亚洲欧洲| 91亚洲国产高清| 国产欧美精品久久久| 尤物视频在线免费观看| 精品视频一区二区三区免费| 一级在线观看视频| 免费观看日韩av| 麻豆中文字幕在线观看| 激情欧美一区二区三区黑长吊| 国产亚洲精品久久久久久| 久久久精品毛片| 欧美韩日一区二区三区四区| www.欧美日本| 日韩情爱电影在线观看| 国产一区视频在线| www视频在线免费观看| 91精品国产综合久久香蕉麻豆| 免费成人深夜夜行网站| 国产在线国偷精品产拍免费yy| 在线观看亚洲视频啊啊啊啊| 二区三区精品| 久久久久久久激情视频| 天堂在线视频免费| 色中色一区二区| 免费黄色在线网址| 国产酒店精品激情| 加勒比成人在线| 亚洲区小说区| 国产日韩欧美影视| 欧美人与性动交α欧美精品济南到 | 1024国产在线| 欧美一区二区三区性视频| 久久婷婷综合国产| 久久久亚洲欧洲日产国码αv| 欧美日韩一区二区在线免费观看| 成人影视亚洲图片在线| 91嫩草在线| 玛雅亚洲电影| 超碰91人人草人人干| 黄片毛片在线看| 色88888久久久久久影院野外| 国产日韩精品中文字无码| 国产麻豆成人传媒免费观看| 性欧美大战久久久久久久| 国产精品欧美日韩一区| 147欧美人体大胆444| 日本不卡1234视频| 日韩在线观看网站| 天天操天天插天天射| 欧美三级蜜桃2在线观看| 青青草激情视频| 久久品道一品道久久精品| 婷婷激情小说网| 噜噜噜躁狠狠躁狠狠精品视频 | 主播国产精品| 亚洲无亚洲人成网站77777| aaa级黄色片| 欧美在线视频你懂得| 日韩成人免费观看| 亚洲天堂2016| 中文字幕第20页| 懂色av中文一区二区三区| 国产一级特黄a大片免费| 国产精品大片| 亚洲一区二区在线免费观看| 欧美激情极品| 亚洲综合精品一区二区| 91福利精品在线观看| 97精品免费视频| 2024短剧网剧在线观看| 一色桃子一区二区| 亚洲av成人精品日韩在线播放| 在线播放91灌醉迷j高跟美女 | 日韩av免费网址| 自拍偷拍亚洲激情| 国产激情av在线| 久久这里只有精品视频网| 亚洲妇女无套内射精| 美女视频黄久久| 精品久久久噜噜噜噜久久图片 | 日韩综合网站| 欧美日韩最好看的视频| 风间由美性色一区二区三区四区| 亚洲一区二区三区在线视频| 国产综合色在线观看| 欧美亚洲日本网站| 极品av在线| 久久全国免费视频| 国产黄色大片在线观看| 久久高清视频免费| 日本在线免费| 精品国产依人香蕉在线精品| www.成人.com| 中文字幕久久精品| 77导航福利在线| 一区二区三区久久精品| 国产视频第一区| 亚洲午夜国产成人av电影男同| 青梅竹马是消防员在线| 亚洲精品v欧美精品v日韩精品| 欧美性猛交 xxxx| 欧美r级电影在线观看| 国产夫妻在线观看| 欧美一区二区三区在| 精品毛片在线观看| 精品日产卡一卡二卡麻豆| www.色婷婷.com| 亚洲精品一区二区在线观看| 成人久久久精品国产乱码一区二区| 欧美一区二区三区思思人| 国产强伦人妻毛片| 日韩欧美高清dvd碟片| 丰满人妻熟女aⅴ一区| 精品乱人伦小说| 四虎永久在线观看| 亚洲欧美国产精品| 福利在线播放| 久久精品99国产精品酒店日本| 黄a在线观看| 欧美日韩999| 黄在线观看免费网站ktv| 日本久久久久久久久久久| 亚洲四虎影院| 亚洲在线观看视频| 黄色美女久久久| 日本高清久久一区二区三区| 国产欧美日韩在线一区二区 | 草草地址线路①屁屁影院成人| 久久精品夜夜夜夜久久| 国产人与禽zoz0性伦| 亚洲精品菠萝久久久久久久| 久久精品女人毛片国产| 欧美日韩加勒比精品一区| 丰满人妻一区二区三区四区| 欧美精品久久99| 日本久久一级片| 国产一区二区黄| 国产精品国精产品一二| 日韩av片免费在线观看| 国产精品一站二站| 国产精品一区二区三区四区五区| 久久99国产精品视频| 午夜啪啪免费视频| 91久久综合| 欧美三级午夜理伦三级富婆| 国产成人av电影在线观看| 国产美女精品久久| 亚洲精品成a人| 懂色av蜜臀av粉嫩av分享吧最新章节| 67194成人在线观看| 先锋av资源站| 久久大大胆人体| 欧美成人影院| y111111国产精品久久婷婷| 欧洲激情视频| 99在线精品免费视频| 久久成人av少妇免费| 美女又爽又黄免费| 国产精品视频在线看| 国产午夜久久久| 欧美日韩国产另类一区| 水中色av综合| 欧美激情videos| 欧美大片网站| 日本精品一区二区| 亚洲国产国产亚洲一二三| theporn国产精品| 久久五月婷婷丁香社区| 久草视频在线资源| 欧美福利视频一区| 欧洲亚洲在线| 97免费在线视频| 91精品入口| 中国黄色录像片| 另类小说综合欧美亚洲| www.自拍偷拍| 午夜国产精品一区| 亚洲春色一区二区三区| 色综合伊人色综合网| 欧美黑人疯狂性受xxxxx野外| 高清视频一区二区三区| 欧美一区久久| 制服丝袜中文字幕第一页 | 亚洲激情电影中文字幕| 99在线视频观看| 成人a级免费视频| 日韩精品永久网址| 老司机午夜av| 久久色中文字幕| 国产综合精品视频| 亚洲精品www久久久久久广东| 午夜伦理在线视频| 亚洲一区二区三区视频| 亚洲精品国产偷自在线观看| 日日噜噜夜夜狠狠| 中文字幕免费观看一区| 婷婷激情五月综合| 亚洲网站视频福利| a屁视频一区二区三区四区| 品久久久久久久久久96高清| 国产精品久久久久毛片大屁完整版| 人妻体内射精一区二区三区| 一区二区理论电影在线观看| 超碰在线人人干| 精品中文字幕视频| 91麻豆精品激情在线观看最新| 成人区一区二区| av资源站一区| 好看的av在线| 亚洲欧美在线免费观看| 韩国精品主播一区二区在线观看 | av在线资源网| 国产欧美一区二区三区视频| 国产韩国精品一区二区三区| 性欧美在线视频| 一级中文字幕一区二区| 丰满人妻一区二区三区四区53 | 亚洲欧美综合另类| 国产一区二区激情| 成人精品在线| 欧美乱做爰xxxⅹ久久久| 国产高清精品在线| 日韩毛片在线视频| 亚洲欧美一区二区三区四区| 久久天堂av| 五月天在线免费视频| 成人aa视频在线观看| 亚洲 欧美 中文字幕| 日韩中文第一页| 在这里有精品| 国产性生交xxxxx免费| 亚洲欧美另类在线| 熟妇人妻一区二区三区四区| 国产成人精品电影久久久| 97精品视频| 久久久午夜精品福利内容| 色婷婷av一区二区三区gif| 黄网站在线免费看| 国产欧美日韩综合一区在线观看| 丝袜美腿亚洲一区| 2018天天弄| 亚洲性猛交xxxxwww| 欧美日韩黄色| 国产天堂在线播放| 一区二区久久久久久| 国产最新视频在线| 亚洲qvod图片区电影| 国产精品久久久久毛片大屁完整版| 自拍偷拍第9页| 亚洲高清久久久久久| 日本一区二区电影| av网站手机在线观看| 国产精品天天看| 五月婷婷丁香花| 亚洲va电影大全| 首页国产欧美久久| 一区二区三区免费高清视频| 亚洲香蕉伊综合在人在线视看 | 亚洲精品第一页| 成人污版视频|