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

CPU有緩存一致性協議MESI,為何還需要Volatile?

系統
前面我們從操作系統底層了解了現代計算機結構模型中的CPU指令結構、CPU緩存結構、CPU運行調度以及操作系統內存管理,并且學習了Java內存模型(JMM)和 volatile 關鍵字的一些特性。本篇來深入理解CPU緩存一致性協議(MESI),最后來討論既然CPU有緩存一致性協議(MESI),為什么JMM還需要volatile關鍵字?

 前言

  • 并發編程從操作系統底層工作的整體認識開始
  • 深入理解Java內存模型(JMM)及volatile關鍵字

前面我們從操作系統底層了解了現代計算機結構模型中的CPU指令結構、CPU緩存結構、CPU運行調度以及操作系統內存管理,并且學習了Java內存模型(JMM)和 volatile 關鍵字的一些特性。本篇來深入理解CPU緩存一致性協議(MESI),最后來討論既然CPU有緩存一致性協議(MESI),為什么JMM還需要volatile關鍵字?

CPU高速緩存(Cache Memory)

CPU為何要有高速緩存

CPU在摩爾定律的指導下以每18個月翻一番的速度在發展,然而內存和硬盤的發展速度遠遠不及CPU。這就造成了高性能能的內存和硬盤價格及其昂貴。然而CPU的高度運算需要高速的數據。為了解決這個問題,CPU廠商在CPU中內置了少量的高速緩存以解決I\O速度和CPU運算速度之間的不匹配問題。

在CPU訪問存儲設備時,無論是存取數據抑或存取指令,都趨于聚集在一片連續的區域中,這就被稱為局部性原理。

時間局部性(Temporal Locality):如果一個信息項正在被訪問,那么在近期它很可能還會被再次訪問。

比如循環、遞歸、方法的反復調用等。

空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。

比如順序執行的代碼、連續創建的兩個對象、數組等。

帶有高速緩存的CPU執行計算的流程

  1. 程序以及數據被加載到主內存
  2. 指令和數據被加載到CPU的高速緩存
  3. CPU執行指令,把結果寫到高速緩存
  4. 高速緩存中的數據寫回主內存 

目前流行的多級緩存結構

由于CPU的運算速度超越了1級緩存的數據I/O能力,CPU廠商又引入了多級的緩存結構。多級緩存結構示意圖如下:

 

多核CPU多級緩存一致性協議MESI

多核CPU的情況下有多個一級緩存,如果保證緩存內部數據的一致,不讓系統數據混亂。這里就引出了一個一致性的協議MESI。

MESI 協議緩存狀態

MESI 是指4個狀態的首字母。每個 Cache line 有4個狀態,可用2個bit表示,它們分別是:

緩存行(Cache line):緩存存儲數據的單元


注意:對于M 和 E 狀態而言是精確的,它們在和該緩存行的真正狀態是一致的,而 S 狀態可能是非一致的。

如果一個緩存將處于S狀態的緩存行作廢了,而另一個緩存實際上可能已經獨享了該緩存行,但是該緩存卻不會將緩存行升遷為E狀態,這是因為其他緩存不會廣播它們作廢掉該緩存行的通知,同樣由于緩存并沒有保存該緩存行的copy數量,因此(即使有這種通知)也沒有辦法確定自己是否已經獨享了該緩存行。

從上面的意義來看 E狀態 是一種投機性的優化:如果一個CPU想修改一個處于 S狀態 的緩存行,總線事物需要將所有該緩存行的 copy 變成 invalid 狀態,而修改 E狀態 的緩存不需要使用總線事物。

MESI 狀態轉換


理解該圖的前置說明:

1.觸發事件 


1.cache分類

  • 前提:所有的cache共同緩存了主內存中的某一條數據。
  • 本地cache:指當前cpu的cache。
  • 觸發cache:觸發讀寫事件的cache。
  • 其他cache:指既除了以上兩種之外的cache。
  • 注意:本地的事件觸發 本地cache和觸發cache為相同。

上圖的切換解釋:


下圖示意了,當一個cache line的調整的狀態的時候,另外一個cache line 需要調整的狀態。 


舉例子來說:假設 cache 1 中有一個變量 x = 0 的 cache line 處于 S狀態(共享)。 那么其他擁有 x 變量的 cache 2 、cache 3 等 x 的cache line 調整為 S狀態(共享)或者調整為 I狀態(無效)。

多核緩存協同操作

假設有三個CPU A、B、C,對應三個緩存分別是cache a、b、 c。在主內存中定義了x的引用值為0。

單核讀取

那么執行流程是: CPU A 發出了一條指令,從主內存中讀取x。

從主內存通過bus讀取到緩存中(遠端讀取Remote read),這是該 Cache line 修改為 E狀態(獨享).


雙核讀取

那么執行流程是:

  • CPU A 發出了一條指令,從主內存中讀取x。
  • CPU A 從主內存通過bus讀取到 cache a 中并將該 cache line 設置為 E狀態。
  • CPU B 發出了一條指令,從主內存中讀取x。
  • CPU B 試圖從主內存中讀取x時,CPU A 檢測到了地址沖突。這時CPU A對相關數據做出響應。此時x 存儲于cache a和cache b中,x在chche a和cache b中都被設置為S狀態(共享)。 
 

修改數據

那么執行流程是:

  • CPU A 計算完成后發指令需要修改x.
  • CPU A 將x設置為 M狀態(修改)并通知緩存了x的CPU B, CPU B將本地cache b中的x設置為 I狀態(無效)
  • CPU A 對x進行賦值。
 

同步數據

那么執行流程是:

  • CPU B 發出了要讀取x的指令。
  • CPU B 通知 CPU A,CPU A將修改后的數據同步到主內存時 cache a 修改為 E(獨享)
  • CPU A同步CPU B的x,將cache a和同步后cache b中的x設置為 S狀態(共享)。 
 

緩存行偽共享

什么是偽共享?

CPU緩存系統中是以緩存行(cache line)為單位存儲的。目前主流的CPU Cache 的 Cache Line 大小都是64Bytes。在多線程情況下,如果需要修改“共享同一個緩存行的變量”,就會無意中影響彼此的性能,這就是偽共享(False Sharing)。

舉個例子: 現在有2個long 型變量 a 、b,如果有t1在訪問a,t2在訪問b,而a與b剛好在同一個cache line中,此時t1先修改a,將導致b被刷新!

怎么解決偽共享?

Java8中新增了一個注解: @sun.misc.Contended 。加上這個注解的類會自動補齊緩存行,需要注意的是此注解默認是無效的,需要在jvm啟動時設置 -XX:-RestrictContended 才會生效。

  1. @sun.misc.Contended 
  2. public final static class VolatileLong { 
  3.     public volatile long value = 0L; 
  4.     //public long p1, p2, p3, p4, p5, p6; 

 MESI優化和他們引入的問題

緩存的一致性消息傳遞是要時間的,這就使其切換時會產生延遲。當一個緩存被切換狀態時其他緩存收到消息完成各自的切換并且發出回應消息這么一長串的時間中CPU都會等待所有緩存響應完成。可能出現的阻塞都會導致各種各樣的性能問題和穩定性問題。

CPU切換狀態阻塞解決-存儲緩存(Store Bufferes)

比如你需要修改本地緩存中的一條信息,那么你必須將 **I(無效)狀態 **通知到其他擁有該緩存數據的CPU緩存中,并且等待確認。等待確認的過程會阻塞處理器,這會降低處理器的性能。因為這個等待遠遠比一個指令的執行時間長得多。

Store Bufferes

為了避免這種CPU運算能力的浪費,**Store Bufferes** 被引入使用。處理器把它想要寫入到主存的值寫到緩存,然后繼續去處理其他事情。當所有失效確認(Invalidate Acknowledge)都接收到時,數據才會最終被提交。但這么做有兩個風險。

Store Bufferes的風險

  • 第一:就是處理器會嘗試從存儲緩存(Store buffer)中讀取值,但它還沒有進行提交。這個的解決方案稱為 Store Forwarding,它使得加載的時候,如果存儲緩存中存在,則進行返回。
  • 第二:保存什么時候會完成,這個并沒有任何保證。
  1. value = 3; 
  2. void exeToCPUA(){ 
  3.   value = 10; 
  4.   isFinsh = true
  5. void exeToCPUB(){ 
  6.   if(isFinsh){ 
  7.     //value一定等于10?! 
  8.     assert value == 10; 
  9.   } 

 試想一下開始執行時,CPU A 保存著 isFinsh 在 E(獨享)狀態,而 value 并沒有保存在它的緩存中。(例如,Invalid)。在這種情況下,value 會比 isFinsh 更遲地拋棄存儲緩存。完全有可能 CPU B 讀取 isFinsh 的值為true,而value的值不等于10。即isFinsh的賦值在value賦值之前。

這種在可識別的行為中發生的變化稱為重排序(reordings)。注意,這不意味著你的指令的位置被惡意(或者好意)地更改。 它只是意味著其他的CPU會讀到跟程序中寫入的順序不一樣的結果。

硬件內存模型

執行失效也不是一個簡單的操作,它需要處理器去處理。另外,存儲緩存(Store Buffers)并不是無窮大的,所以處理器有時需要等待失效確認的返回。這兩個操作都會使得性能大幅降低。為了應付這種情況,引入了失效隊列(invalid queue)。它們的約定如下:

  • 對于所有的收到的Invalidate請求,Invalidate Acknowlege消息必須立刻發送
  • Invalidate并不真正執行,而是被放在一個特殊的隊列中,在方便的時候才會去執行。
  •  處理器不會發送任何消息給所處理的緩存條目,直到它處理Invalidate。

 即便是這樣處理器已然不知道什么時候優化是允許的,而什么時候并不允許。

 干脆處理器將這個任務丟給了寫代碼的人。這就是內存屏障(Memory Barriers)。

  • 寫屏障 Store Memory Barrier(a.k.a. ST, SMB, smp_wmb)是一條告訴處理器在執行這之后的指令之前,應用所有已經在存儲緩存(store buffer)中的保存的指令。
  • 讀屏障Load Memory Barrier (a.k.a. LD, RMB, smp_rmb)是一條告訴處理器在執行任何的加載前,先應用所有已經在失效隊列中的失效操作的指令。
  1. void executedOnCpu0() { 
  2.     value = 10; 
  3.     //在更新數據之前必須將所有存儲緩存(store buffer)中的指令執行完畢。 
  4.     storeMemoryBarrier(); 
  5.     finished = true
  6. void executedOnCpu1() { 
  7.     while(!finished); 
  8.     //在讀取之前將所有失效隊列中關于該數據的指令執行完畢。 
  9.     loadMemoryBarrier(); 
  10.     assert value == 10; 

 總結

既然CPU有緩存一致性協議(MESI),為什么JMM還需要volatile關鍵字?

volatile是java語言層面給出的保證,MSEI協議是多核cpu保證cache一致性的一種方法,中間隔得還很遠,我們可以先來做幾個假設:

1.回到遠古時候,那個時候cpu只有單核,或者是多核但是保證sequence consistency,當然也無所謂有沒有MESI協議了。那這個時候,我們需要java語言層面的volatile的支持嗎?

當然是需要的,因為在語言層面編譯器和虛擬機為了做性能優化,可能會存在指令重排的可能,而volatile給我們提供了一種能力,我們可以告訴編譯器,什么可以重排,什么不可以。

2.那好,假設更進一步,假設java語言層面不會對指令做任何的優化重排,那在多核cpu的場景下,我們還需要volatile關鍵字嗎?

答案仍然是需要的。因為 MESI只是保證了多核cpu的獨占cache之間的一致性,但是cpu的并不是直接把數據寫入L1 cache的,中間還可能有store buffer。有些arm和power架構的cpu還可能有load buffer或者invalid queue等等。因此,有MESI協議遠遠不夠。

3.再接著,讓我們再做一個更大膽的假設。假設cpu中這類store buffer/invalid queue等等都不存在了,cpu是數據是直接寫入cache的,讀取也是直接從cache讀的,那還需要volatile關鍵字嗎?

你猜得沒錯,還需要的。原因就在這個“一致性”上。consistency和coherence都可以被翻譯為一致性,但是MSEI協議這里保證的僅僅coherence而不是consistency。那consistency和cohence有什么區別呢?

下面取自wiki的一段話: Coherence deals with maintaining a global order in which writes to a single location or single variable are seen by all processors. Consistency deals with the ordering of operations to multiple locations with respect to all processors.

因此,MESI協議最多只是保證了對于一個變量,在多個核上的讀寫順序,對于多個變量而言是沒有任何保證的。很遺憾,還是需要volatile~~

4.好的,到了現在這步,我們再來做最后一個假設,假設cpu寫cache都是按照指令順序fifo寫的,那現在可以拋棄volatile了吧?你覺得呢?

那肯定不行啊!因為對于arm和power這個weak consistency的架構的cpu來說,它們只會保證指令之間有比如控制依賴,數據依賴,地址依賴等等依賴關系的指令間提交的先后順序,而對于完全沒有依賴關系的指令,比如x=1;y=2,它們是不會保證執行提交的順序的,除非你使用了volatile,java把volatile編譯成arm和power能夠識別的barrier指令,這個時候才是按順序的。

最后總結,答案就是:還需要~~

參考資料

  • [1] http://igoro.com/archive/gallery-of-processor-cache-effects/
  • [2] https://en.wikipedia.org/wiki/Sequential_consistency
  • [3] https://en.wikipedia.org/wiki/Consistency_model
  • [4] Maranget, Luc, Susmit Sarkar, and Peter Sewell. "A tutorial introduction to the ARM and POWER relaxed memory models." Draft available from http://www. cl. cam. ac. uk/~ pes20/ppc-supplemental/test7. pdf (2012).
  • [5] https://www.zhihu.com/question/296949412?sort=created

PS:以上代碼提交在 Github :

https://github.com/Niuh-Study/niuh-juc-final.git

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-11-20 08:10:55

處理器CPU緩存

2022-12-14 08:23:30

2023-08-14 08:10:33

CPU緩存RFO

2021-06-30 21:13:49

CPUCache數據

2020-05-12 10:43:22

Redis緩存數據庫

2020-10-26 19:25:23

CPU緩存Cache

2020-06-01 22:09:48

緩存緩存同步緩存誤用

2023-10-27 07:47:37

計算機內存模型

2024-11-14 07:10:00

2016-11-16 19:15:34

消息時序分布式系統

2020-03-16 11:55:28

PaxosRaft協議

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2023-01-31 17:24:21

DPUCPUGPU

2019-10-16 00:06:08

CPU內存存儲

2024-12-26 15:01:29

2019-03-27 13:56:39

緩存雪崩穿透

2025-08-08 07:09:58

2023-10-24 15:15:26

HTTPWebSocket

2021-10-12 18:48:07

HTTP 協議Websocket網絡通信

2019-10-24 10:42:00

CPU內存存儲器
點贊
收藏

51CTO技術棧公眾號

日韩一区二区三区视频在线观看| 久久伊人中文字幕| 欧美黄色片在线观看| 中国极品少妇videossexhd| 黄色18在线观看| 中文字幕精品综合| 国产精品乱码一区二区三区| 波多野结衣视频在线观看| 亚洲欧美日韩高清在线| 亚洲精品电影网站| 中文字幕 欧美日韩| av影视在线看| 中文字幕亚洲欧美在线不卡| 国产精品一区二区三区精品| 天天综合久久综合| 影音先锋久久资源网| 中文字幕成人精品久久不卡| 一级黄色片毛片| 深夜日韩欧美| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲最新在线| 婷婷亚洲一区二区三区| 国产乱码精品一区二区三区五月婷| 欧美在线视频免费播放| 免费人成在线观看| 国产韩国精品一区二区三区| 精品一区二区三区三区| 成年女人免费视频| 欧美日韩中出| 欧美高清www午色夜在线视频| 哪个网站能看毛片| 欧美bbbxxxxx| 一区二区三区高清| 91香蕉视频网址| 北岛玲日韩精品一区二区三区| 成人av在线看| 国产成人av一区二区三区| 一级久久久久久久| 免费成人在线网站| 国产精品吊钟奶在线| 国产www在线| 日韩天堂av| 欧美精品videos| 久久久国产成人| 在线国产一区| 九九视频这里只有精品 | 无吗不卡中文字幕| 国产精品无码免费专区午夜| av在线免费网址| 亚洲免费观看高清完整版在线观看 | 亚洲男人的天堂在线观看| 一区二区视频国产| 欧美激情黑人| 亚洲免费电影在线| 永久免费在线看片视频| 国产在线看片| 夜色激情一区二区| 九九热只有这里有精品| www.综合网.com| 岛国av在线不卡| 免费成人在线视频网站| 最近高清中文在线字幕在线观看1| 午夜精品免费在线观看| 5月婷婷6月丁香| 国产成人精品亚洲日本在线观看| 在线免费不卡电影| www.这里只有精品| 国产精品亚洲综合在线观看| 日韩欧美精品三级| 日韩Av无码精品| 亚洲高清极品| 色偷偷偷综合中文字幕;dd| 91久久久久久久久久久久久久| 亚洲一级毛片| 91国产视频在线| 国产成人精品777777| 捆绑紧缚一区二区三区视频| 91久久国产综合久久蜜月精品| 亚洲精品成av人片天堂无码| 97国产一区二区| 亚洲视频电影| av福利导福航大全在线| 欧美性xxxx极品高清hd直播| 欧美午夜aaaaaa免费视频| 成人在线日韩| 亚洲男人的天堂在线| 极品尤物一区二区| 欧美日韩四区| 日本一区二区在线播放| 国产精品久久无码一三区| 成人app下载| 亚洲欧美丝袜| 国产激情视频在线看| 在线精品视频一区二区| 伊人久久久久久久久| 免费精品国产| 另类图片亚洲另类| 亚洲不卡在线视频| 高清国产午夜精品久久久久久| 免费看成人片| www久久日com| 91久久香蕉国产日韩欧美9色| 超碰中文字幕在线观看| 女厕嘘嘘一区二区在线播放| 久久精品亚洲精品| 波多野结衣大片| 成人亚洲精品久久久久软件| 亚洲韩国在线| 亚洲精品成人图区| 日韩一区二区三区三四区视频在线观看| 国产美女视频免费观看下载软件| 日韩一区二区三区免费播放| 4438全国亚洲精品在线观看视频| 国产美女无遮挡永久免费| www国产精品av| 日韩精品久久一区二区| 看片一区二区| 亚洲欧美三级在线| 不卡的免费av| 国产精品影视在线观看| 色之综合天天综合色天天棕色| heyzo在线欧美播放| 欧美麻豆精品久久久久久| 一级黄色片大全| aa亚洲婷婷| 国产精品免费观看高清| 高潮毛片在线观看| 欧美男人的天堂一二区| 亚洲女优在线观看| 国产农村妇女精品一区二区| 国产伦精品一区二区三区照片91 | а 天堂 在线| 色无极亚洲影院| 国产精品久久久久久久久久久不卡| 欧美一区二区三区成人片在线| 亚洲天堂av老司机| 天天干天天玩天天操| 在线成人动漫av| 26uuu久久噜噜噜噜| 天天综合天天色| 亚瑟在线精品视频| 日韩Av无码精品| 亚洲国产专区| 国产一区二区三区奇米久涩| 国产盗摄在线视频网站| 欧美mv和日韩mv国产网站| 顶臀精品视频www| 久久国产精品一区二区| 亚洲午夜在线观看| 亚洲午夜剧场| 九九久久综合网站| 黄色www视频| 香蕉乱码成人久久天堂爱免费| 黑森林av导航| 99精品福利视频| 玛丽玛丽电影原版免费观看1977| xx欧美xxx| 国产一区二区精品丝袜| 姑娘第5集在线观看免费好剧| 欧美—级在线免费片| 天天干天天操天天玩| 国产精品久久久久久影院8一贰佰| 91久久精品一区| 久草在线资源站资源站| 亚洲精品久久7777777| 亚洲天堂一区在线| 中文一区在线播放| 亚洲综合在线一区二区| 亚洲片区在线| 欧洲一区二区日韩在线视频观看免费 | 国产极品jizzhd欧美| 福利成人在线观看| 欧美精品丝袜中出| xxxx 国产| 国产日产欧美精品一区二区三区| 五月天婷婷亚洲| 亚洲国产国产亚洲一二三| 蜜桃91精品入口| av在线亚洲一区| 97精品久久久| 欧美性猛交xxx乱大交3蜜桃| 欧美不卡视频一区| 天天干天天干天天干天天| 中文子幕无线码一区tr| 国产免费a级片| 视频在线观看91| 毛片在线视频观看| 蜜桃视频欧美| 99在线看视频| 亚洲成人人体| 欧美日韩国产91| 国产福利免费在线观看| 欧美大片在线观看一区二区| 免费看毛片网站| 亚洲精品国久久99热| 国产精品亚洲无码| 国产精品91xxx| 欧美精品aaaa| 亚洲大片av| 伊人久久av导航| 亚洲免费观看高清完整版在线观| 亚洲一区二区三| 成人免费福利| 97激碰免费视频| 91蜜桃在线视频| 中文字幕亚洲无线码在线一区| 成人午夜免费在线观看| 欧美日韩国产高清一区二区三区| 日韩免费观看一区二区| 亚洲人亚洲人成电影网站色| 999精品免费视频| 国产一区二区免费看| 丰满少妇在线观看| 国产模特精品视频久久久久| 男人天堂网站在线| 日韩综合网站| 日本一区二区三区www| 9l视频自拍蝌蚪9l视频成人| 成人亚洲欧美一区二区三区| 日韩免费小视频| 91高清在线免费观看| 香蕉成人app免费看片| 色噜噜狠狠色综合网图区| 你懂的免费在线观看| 亚洲第一免费网站| 亚洲国产精品suv| 6080日韩午夜伦伦午夜伦| 在线视频播放大全| 在线免费不卡电影| 国产亚洲欧美在线精品| 精品福利视频导航| 久久精品国产亚洲av无码娇色| 日韩美女精品在线| 国产一区第一页| www.国产精品视频| 99久久精品免费看| www.com日本| 国产精品羞羞答答xxdd| 一级网站在线观看| 蜜桃视频一区二区| 99草草国产熟女视频在线| 免费亚洲一区| 日本精品www| 久久国产毛片| 玩弄japan白嫩少妇hd| 亚洲欧美成人综合| 无码人妻丰满熟妇区五十路百度| 亚洲综合国产激情另类一区| av7777777| 国产精品丝袜xxxxxxx| 欧美日韩黄色一级片| 国产欧美成人| 无码aⅴ精品一区二区三区浪潮| 日韩视频三区| 欧美激情国产精品日韩| 久久福利影视| 欧美性猛交xxx乱久交| 日韩精品电影在线| 一区二区三区 日韩| 久久99国产乱子伦精品免费| 成年人三级黄色片| 国产成人在线看| 国产精品成人99一区无码| 久久伊人中文字幕| 色屁屁草草影院ccyy.com| 国产精品妹子av| 欧美高清视频一区二区三区| 五月激情丁香一区二区三区| 色屁屁影院www国产高清麻豆| 在线观看av一区二区| 亚洲天堂999| 日韩欧美三级在线| 头脑特工队2免费完整版在线观看| 亚洲人成网站在线播| 色的视频在线免费看| 欧美另类交人妖| 不卡av播放| 成人综合网网址| 美国十次av导航亚洲入口| 日本一区视频在线| 最新欧美人z0oozo0| 欧美女人性生活视频| 免费不卡在线视频| 亚洲一级Av无码毛片久久精品| 久久精品日产第一区二区三区高清版 | 久久久精品久久久久| 99re6在线精品视频免费播放| 国产精品久久久久久久久久| 91精品国产自产精品男人的天堂| 欧洲亚洲一区二区| 欧美精品麻豆| 天天爱天天操天天干| 国产成人精品亚洲午夜麻豆| 亚洲精品乱码久久久久久久久久久久| 亚洲人成精品久久久久久| 日韩欧美激情视频| 在线成人av影院| 免费国产在线观看| 欧美国产日本高清在线 | 国产传媒在线看| 五月婷婷综合网| 国产精品久久久国产盗摄| 亚洲精品自拍偷拍| av片在线观看网站| 国产精品久久久久久久天堂| 国产精东传媒成人av电影| 一本色道久久99精品综合| 国产精品亚洲综合久久| 亚洲AV无码久久精品国产一区| 久久久国际精品| 日韩激情在线播放| 日韩一区二区三区免费看| 国产精品久久一区二区三区不卡| 久久久久女教师免费一区| 欧美成人福利| 日本在线成人一区二区| 亚洲毛片网站| 韩国三级hd中文字幕有哪些| 中文字幕精品一区二区精品绿巨人 | 欧美亚洲一区二区三区四区| 日韩在线视频免费| 久久99国产精品久久久久久久久| 国产成人免费精品| 欧美在线一二三区| 国产亚洲精品v| 麻豆精品国产传媒av| 亚洲综合图片区| 99产精品成人啪免费网站| 日韩专区中文字幕| 素人啪啪色综合| 日韩欧美亚洲日产国产| 亚洲欧美大片| 国产精品无码一区二区三区| 精品久久久视频| 深夜福利视频网站| 97碰在线观看| 国产伦精品一区二区三区在线播放 | 伊人天天久久大香线蕉av色| 久久亚洲色图| 能免费看av的网站| 日韩欧美亚洲范冰冰与中字| 神马久久久久| 国产91在线播放九色快色| 九九久久精品| 成人中文字幕av| 国产精品乱人伦中文| 中文在线最新版天堂| 色婷婷综合成人av| 少妇高潮一区二区三区99| 视频一区二区视频| 国产成人自拍网| 日本五十熟hd丰满| 亚洲精品一区久久久久久| 美女福利一区二区| 亚洲不卡中文字幕| 久久综合导航| 人成免费在线视频| 91麻豆精品国产91久久久使用方法 | 国产精品美乳在线观看| 日韩毛片视频| 欧美一级小视频| 亚洲香肠在线观看| 性xxxx视频| 国产精品免费网站| 欧美~级网站不卡| 大乳护士喂奶hd| 日本韩国欧美国产| 美女隐私在线观看| 产国精品偷在线| 久久aⅴ国产紧身牛仔裤| 99国产精品免费| 精品欧美黑人一区二区三区| 97在线超碰| 特级西西444www大精品视频| 久久 天天综合| 亚州国产精品视频| 一色桃子一区二区| 日韩精品中文字幕吗一区二区| 欧美在线一区视频| 国产欧美综合在线| www.激情五月| 国产91网红主播在线观看| 91精品国产91久久综合| 亚洲婷婷在线观看| 欧美日韩国产在线播放网站| 日韩三级免费| 日韩av电影免费在线观看| 国产精品一区二区三区四区| 高清乱码免费看污| 欧美国产第一页| 精品视频网站| a天堂视频在线观看| 欧美三级电影在线观看| 久久99亚洲网美利坚合众国| 视频一区国产精品| fc2成人免费人成在线观看播放| 亚洲天堂一二三| 91成人福利在线| 欧美在线视屏| 国精产品一区一区|