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

一文讀懂Cache一致性原理

開發(fā) 前端
本文沒有對cache狀態(tài)轉換(transitions)過程過多講述,也沒有講述異構系統(tǒng)和多芯片多處理器的一致性,現在計算機系統(tǒng)主要是異構的,不僅包含多core,還包含GPU和其它加速器(例如,神經網絡硬件)。為了追求可編程性,這些異構系統(tǒng)也開始支持共享內存。

1.為何需要cache一致性

訪問memory數據的速度與core的運行速度相比,要花費更多的時鐘周期。為了減少這個差異計算機系統(tǒng)引進了存儲器層次結構,如圖1所示。在層次結構中,越往上,讀寫速度越快,價格越貴,存儲容量也越小。

圖1 存儲器結構層次圖1 存儲器結構層次

隨著摩爾定律的發(fā)展,人們試圖增加CPU的core數以提升系統(tǒng)整體性能,這類系統(tǒng)稱之為多core系統(tǒng)。一個包含多core的系統(tǒng)中,每個core可能都有自己的私有cache,并且有可能會對相同的memory地址進行修改。如果多個core同時對同一memory地址進行讀寫操作,很可能導致cache內容不一致,從而導致數據不一致,最終造成系統(tǒng)出錯和崩潰。因此,在設計多core系統(tǒng)時,必須考慮cache一致性(cache coherency)問題來確保數據的正確性和系統(tǒng)的穩(wěn)定性。舉個例子,假設2個core的系統(tǒng),每個core私有的L1 cache的cacheline大小是64Bytes。兩個core都讀取0x80地址數據,導致0x80開始的64Bytes數據都分別加載到core0和core1的私有L1 cache中。

圖2 兩core系統(tǒng)讀取0x80地址的數據圖2 兩core系統(tǒng)讀取0x80地址的數據

core0對0x80執(zhí)行寫操作,寫入值為0x01。Core0的私有L1 cache更新對應cacheline的值。然后,core1讀取0x80的數據,core1發(fā)現命中自己私有L1 cache,然后返回0x00值,并不是core0寫入的0x01值,這就造成了core0和core1的私有L1 cache數據不一致現象。

圖3 core0更新0x80地址的數據圖3 core0更新0x80地址的數據

按照正確的處理流程,可以使用以下兩種方法保證多core cache的一致性:

  • Core0修改0x80地址數據的時候,除了更新core0的私有cache之外,還應將修改的數據通知到core1的私有cache去更新0x80地址的數據。
  • Core0修改0x80地址數據的時候,除了更新core0的私有cache之外,還應通知core1的私有cache將0x80地址所在的cacheline置為無效。保證core1讀取數據時不會命中自己的cache。這樣core1就必須重新從core0或memory中去讀取0x80地址最新的數據。

Cache一致性可以通過軟件和硬件來解決,通常來說,軟件維護cache一致性維護成本太高,會導致性能下降。現在的實現方案基本都是使用硬件來自動維護多核cache的一致性,并且對軟件和程序員來說是透明的。因此,本文只介紹硬件維護cache一致性。硬件維護cache一致性需要制定一致性協(xié)議,一致性協(xié)議是由系統(tǒng)內的各個分布式硬件參與者組件共同實現和維護的一組規(guī)則。一致性協(xié)議有許多版本,Arm的ACE(AXI Coherency Extensions)和CHI(Coherent Hub Interface),AMD的Coherent HyperTransport(HT),Intel的QuickPath Interconnect(QPI)等等。

2.一致性協(xié)議的本質

雖然一致性協(xié)議眾多,但本質上講,所有一致性協(xié)議都通過將寫入的數據傳播到所有一致性cache來使一個core的寫入對其它core可見。具體來說有兩點原則:

  • Single-Writer, Multiple-Read(SWMR):在任意時刻,對于任意的memory地址A,只有一個core可以寫它(也可以讀它),或者多個core讀它。因此,永遠不會有這樣的情況:一個core可以寫入memory地址A,而其它core可以同時讀取或寫入該memory地址A。如下圖4所示,可以把時間會切割為無限小的切片,在每個切片中,對于memory地址A,要么單個core具有讀寫訪問權限,要么若干core(可能為0)具有只讀訪問權限。比如T1和T4時刻,允許多個core對同一個memory進行讀取,但在T2和T3種,只能存在1個core擁有讀寫的權限。
  • Data-Value:在時間切片中,上一個時間切片結束的數據值與下一個時間切片開始的數據值相同,即使同一個切片中,每個core讀取到的值必須相同。也就是memory地址的數據值需要被正確傳播。比如在T1時刻,如果core2和core5可以讀取到不同的值,那么就不符合一致性系統(tǒng)。同樣的,如果T3的core1沒有讀到T2的core3最后寫的數據值,或者T4的core1/core2/core3沒有讀到T3的core1最后寫的數據值,那么也不符合一致性系統(tǒng)。

圖4 不同core讀寫的時間順序圖4 不同core讀寫的時間順序

對于SWMR還有另一種有意思的方式來解釋,對于每個memory地址,存在固定數量的令牌,其數量至少與core數量一樣。如果一個core擁有所有的令牌,它就可以寫入memory地址,而且core必須至少有1個令牌,才能對memory地址進行讀取數據。因此,在任何給定的時刻,當有core正在讀寫memory地址的數據時,其它core正在寫入memory地址是不可能的。

一致性協(xié)議的兩點原則在設計一致性協(xié)議時至關重要。舉個比較常用的一致性無效協(xié)議(invalidate protocols)的設計方法:1.如果一個core想要讀取memory地址A,它會向其它core發(fā)送消息,以獲取memory地址A當前的最新值,并確保沒有其它core緩存該memory地址A的cacheline擁有寫權限的狀態(tài)。2.如果一個core想要寫入memory地址A,它會向其它core發(fā)送消息以獲取memory地址A的當前值,并確保沒有其它core緩存該memory地址A的cacheline擁有只讀或讀寫權限的狀態(tài),也就是其它core都要無效掉自己緩存中memory地址A的cacheline。

3.一致性協(xié)議的類別

設計一致性協(xié)議決定了在每個參與一致性的組件控制器上可能擁有哪些cache狀態(tài)、發(fā)送或響應哪些一致性事務(transactions)操作、發(fā)生哪些事件(events)以及cache狀態(tài)轉換(transitions)等。設計一致性協(xié)議的方法有很多。

3.1 監(jiān)聽和目錄

根據一個core的行為通知到其它core的方式可以分為監(jiān)聽協(xié)議(Snooping protocol)和目錄協(xié)議(Directory protocol)。

3.1.1 監(jiān)聽協(xié)議

監(jiān)聽協(xié)議是第一類廣泛使用的協(xié)議,最初主導了商業(yè)市場,它們現在還有在各種小系統(tǒng)中使用。這種協(xié)議比較簡單,當cache miss發(fā)生時,cache的控制器會發(fā)出仲裁請求給共享總線廣播它的請求。共享總線確保所有cache控制器以相同的順序觀察到所有請求。監(jiān)聽協(xié)議依賴共享總線以一致的順序向所有cache控制器發(fā)送廣播消息,因此分布式cache控制器能夠正確的更新自己的有限狀態(tài)機,這些有限狀態(tài)機共同代表了cache line的狀態(tài)。

要求以一致的總順序(total order)觀察廣播對于實現傳統(tǒng)監(jiān)聽的共享總線具有重要意義。因為許多cache控制器可能同時嘗試發(fā)出一致性請求,共享總線必須將這些請求序列化成某種總順序(total order)。無論總線如何決定這個順序,這個機制被稱為監(jiān)聽協(xié)議的保序點(serialization point或ordering point)。在一般情況下,一個cache控制器發(fā)出一個一致性請求,總線在保序點將它排序并廣播給所有cache控制器,包括發(fā)出請求的cache控制器,因此發(fā)出請求的cache控制器可以通過收到的監(jiān)聽請求流來判斷它的請求在什么時候被處理了,在總順序中排在哪個位置。

舉個例子,監(jiān)聽協(xié)議總線使用仲裁邏輯來確保一次只在總線上廣播一個請求。仲裁邏輯充當保序點,它有效地決定了各個一致性請求在總線上出現的順序。有個微妙的點是,cache控制器的一致性請求是在仲裁邏輯順序就排好序的,但是cache控制器只能通過監(jiān)聽來觀察到這個順序,進而判斷自己請求的排序情況。因此,cache控制器的請求在保序點排好序后,可能會晚幾個周期才能被cache控制器觀察到請求順序。

監(jiān)聽協(xié)議的latency比目錄協(xié)議低,而且實現也比較簡單,但是不易擴展。

圖5 監(jiān)聽協(xié)議例子圖5 監(jiān)聽協(xié)議例子

3.1.2 目錄協(xié)議

目錄協(xié)議最初是為了解決監(jiān)聽協(xié)議缺乏可擴展性的問題而開發(fā)的。目錄協(xié)議會創(chuàng)建一個目錄來維護每一個cacheline的一致性狀態(tài)的全局視圖。該目錄跟蹤各cache保存了哪些cacheline以及處于什么狀態(tài)。Cache控制器發(fā)出的一致性請求將直接單播給目錄控制器(通常也稱作home)。目錄控制器要么直接響應請求,要么根據目錄信息將請求轉發(fā)給一個或多個其它cache控制器,然后由后者響應。目錄協(xié)議使用間接層來避免有序廣播網絡和讓每個cache控制器處理每個請求。一致性請求傳輸流程通常包括兩個步驟(單播請求,然后是單播響應)或三個步驟(1個單播請求,K個轉發(fā)請求和K個響應,其中K是共享者的數量)。有些協(xié)議甚至還有第四部,因為響應間接通過目錄控制器,或者因為請求者在一致性流程完成時通知目錄控制器。相比之下,監(jiān)聽協(xié)議將一個cacheline的狀態(tài)分布在所有cache控制器上,由于這種分布式狀態(tài)沒有中央單元記錄信息,一致性請求必須被廣播到所有cache控制器上。因此監(jiān)聽協(xié)議的一致性請求流程總需要兩個步驟(廣播請求,然后是單播響應)。

在大多數目錄協(xié)議中,一致性請求在目錄控制器處排序,多個cache控制器可以同時向目錄控制器發(fā)送一致性請求,目錄控制器會序列化這些請求并排好序。如果兩個請求同時到達目錄控制器,目錄控制器會選擇首先處理哪個請求,第二個處理的請求的命運取決于目錄協(xié)議和請求的類型。第二個處理的請求可能:(a)在第一個請求之后立即得到處理;(b)暫時保存在目錄中等待第一個請求完成;(c)直接發(fā)送否定響應。在后一種情況下,目錄控制器向請求者發(fā)送否定確認響應,請求者必須重新發(fā)出其一致性請求。

目錄協(xié)議在目錄控制器上排序,因為大多數目錄協(xié)議不使用總順序的廣播,沒有序列化的全局概念。更確切說,一個一致性請求者相對于可能有副本的所有cache,必須單獨序列化。需要其它cache顯示的消息通知請求者的請求已被相關cache處理和序列化。比如說,對于想獲取寫權限的一致性請求,有共享副本的每個cache控制器一旦完成序列化了無效消息,都必須顯示地發(fā)送確認消息。

目錄協(xié)議需要更少的總線帶寬,實現了更大的可伸縮性,但代價是總線某些一致性請求的latency。

圖6 目錄協(xié)議例子圖6 目錄協(xié)議例子

3.2 無效和更新

根據一個core決定寫cache line時,一致性協(xié)議中其它core的cache line副本如何處理,可以分為:無效協(xié)議(Invalidate protocol)和更新協(xié)議(Update protocol)。這個分類的選擇與協(xié)議是監(jiān)聽還是目錄類型無關,它們可以兩兩交叉,組成4種類型的一致性協(xié)議。

3.2.1 無效協(xié)議

當一個core需要往某cacheline寫入一個值時,cache控制器會啟動一個一致性請求來使所有其它cache中對應的cacheline副本無效。一旦所有副本都無效后,請求者就可以將數據寫入該cacheline中,這樣就確保其它core不會讀取到舊值。如果另一個core希望在其副本無效后讀取該cacheline的值,則必須啟動一個新的一致性請求來獲取該cacheline的數據,并且它將從寫該cacheline的core處獲取副本,從而保證了數據一致性。

圖7 無效協(xié)議例子 (1->2->3->4->5->6)圖7 無效協(xié)議例子 (1->2->3->4->5->6)

3.2.2 更新協(xié)議

當一個core需要往某cacheline寫入一個值時,它會啟動一個一致性請求來更新所有其它cache中的副本,這樣所有cache用到的都是新值。

圖8 更新協(xié)議例子  (1->2->3->4->5->6)圖8 更新協(xié)議例子 (1->2->3->4->5->6)

這兩種協(xié)議的選擇需要權衡,更新協(xié)議減少了core讀取新值的latency,因為core不需要初始化并等待重讀一致性請求的完成。更新協(xié)議通常要比無效協(xié)議消耗更大的帶寬,因為更新協(xié)議除了傳輸地址,還要傳輸新值數據。此外,更新協(xié)議會使許多memory一致性模型的實現變得非常復雜。例如,當多個cache必須對一個cacheline的多個副本進行多個更新時,保持寫操作的原子性非常困難。由于更新協(xié)議的復雜性,它們很少被實現。

 監(jiān)聽和目錄與無效和更新,這些可以檢查混合搭配,組成四種類型的一致性協(xié)議:監(jiān)聽&&無效、監(jiān)聽&&更新、目錄&&無效、目錄&&更新。Arm的ACE和CHI使用就是目錄&&無效組合。

4. 一致性協(xié)議的設計

4.1 狀態(tài)(states)選擇

4.1.1 狀態(tài)的特征

只有一個core的系統(tǒng)中,cache line的狀態(tài)要么有效要么無效。如果需要區(qū)分dirty狀態(tài),則cacheline可能有兩種有效狀態(tài)。Dirty的cache line具有比memory更新的數據。具有多個core的系統(tǒng)也可以只使用這兩三種狀態(tài),但通常需要區(qū)分不同類型的有效狀態(tài)。cache line狀態(tài)有四個主要特征:validity、dirtiness、exclusivity和ownership。后兩個特征是具有多core的系統(tǒng)所特有的。

  • Validity:一個有效的cache line具有該cache line的最新值。Cache line可以被讀,但只有在它也是exclusivity的情況下才可以被寫。
  • Dirtiness:如果一個cache line的值是最新的,且這個值與memory中的值不一致,那么這個cache line就是dirty的,緩存控制器負責最終用這個新值更新memory內容。Clean通常被用作dirty的反義詞。
  • Exclusivity:如果一個cache line在系統(tǒng)中是唯一的cache line副本,則該cache line是exclusivity的,也就是該cache line除了可能在memory中,沒有任何其它cache擁有這個cache line的值。
  • Ownership:如果cache控制器(或memory控制器)負責響應cache line的一致性請求,那么它就是這個cache line的owner。在大多數協(xié)議中,一個給定cache line始終只有一個owner。如果沒有將cache line的ownership交接給另一個一致性控制器,就算是由于cache容量或沖突缺失,這個cache line可能也不會從cache中被踢出去以騰出空間給另一個cache line。在某些協(xié)議中,非owned的cache line可能會被悄悄無效掉,不發(fā)送任何消息通知其它組件。

4.1.2 MOESI狀態(tài)模型

許多一致性協(xié)議使用經典的五態(tài)MOESI模型的子集。MOESI是cache中l(wèi)ine的狀態(tài),最基本的三種狀態(tài)時MSI,也可以使用O和E態(tài),但是它們不是最基本的。O和E態(tài)通常是協(xié)議中優(yōu)化某些場景使用的。這些狀態(tài)中的每一個都可以由上一小節(jié)描述的狀態(tài)特征組合而成。

  • M(odified):cache line是valid、exclusive、owned、并且可能是dirty的。這條line可以被讀或寫,且是cache中唯一的有效副本,擁有這條line的cache必須響應其它caches對這條line的請求,并且這條line在memory中的副本可能已經過期了。
  • S(hared):cache line是valid,但不是exclusive、dirty和owned的。這條line只能被讀,其它caches也可能具有這條line的有效只讀副本。
  • I(nvalid) :cache 里是invalid,cache要么不包含這條line,要么包含可能無法讀取或寫入的陳舊副本。
  • O(wned) :cache line是valid,owned、且可能是dirty的,但不是exclusive的。這條line只能被讀,并且擁有這條line的cache必須響應其它caches對這條line的請求。其它cache也可能有這條line的只讀副本,但它們不是owners。這條line在memory中的副本可能已經過期了。
  • E(xclusive):cache line是valid、owned、exclusive和clean的。這條line可以被讀或寫,沒有其它cache擁有這條line的有效副本,并且這條line和memory中的數據是一致的,memory中的副本是最新的。(需要注意的是,某些協(xié)議中,Exclusive不被視為owned的)

圖9用Venn圖展示了MOESI狀態(tài)。Venn圖可以展示哪些狀態(tài)共有哪些特征。除了I之外的所有狀態(tài)都有效。M、O和E是ownership狀態(tài)。M和E都是exclusivity,因為沒有其它cache擁有該line的有效副本。M和O都是表示該cache line可能是dirty的。M、O、E和S組成了V(alid)態(tài)。

圖9 MOESI狀態(tài)的Venn圖圖9 MOESI狀態(tài)的Venn圖

MOESI狀態(tài)模型雖然很常見,但不是所有的狀態(tài)集合。例如,有些協(xié)議有F(orward)狀態(tài),它類似與O狀態(tài),除了它是clean的,即memory中的副本是最新的。Intel Core i7-9xx處理器中的QuickPath Interconnect(QPI)就使用了F狀態(tài),QPI支持MESIF的5個狀態(tài)模型。

表1 MOESI的狀態(tài)特征表1 MOESI的狀態(tài)特征

4.2 事務(transaction)選擇

一致性控制器組件的基本目標都是相似的,所以大多數一致性協(xié)議都有類似的transaction集合。例如,幾乎所有協(xié)議都有一個獲取Shared(只讀) cache line的transaction。表2列出了一組常見的transactions,并且對于每個transaction,描述發(fā)起transaction的請求者目標。這些transactions都是由cache控制器發(fā)起的,這些cache控制器響應來自其對應core的讀寫請求。表3列出了一個core可以像其cache控制器發(fā)出的讀寫請求,以及這些core請求如何引導cache控制器發(fā)起一致性transactions。

表2 常見的transactions表2 常見的transactions

盡管大多數協(xié)議使用類似的transactions集合,但它們在一致性控制器如何交互以執(zhí)行transaction方面存在相當大的差異。正如我們之前提到,在監(jiān)視協(xié)議中,cache控制器通過向系統(tǒng)中所有一致性控制器廣播GetS請求來獲取目標的cache line,并且當前l(fā)ine的owner的控制器需要提供所需數據去響應請求者。相反,在目錄協(xié)議中,cache控制器通過向特定的目錄控制器發(fā)送單播GetS請求,目錄控制器可能直接響應,也可能將請求轉發(fā)給其它一致性控制器去響應請求者的line數據。

表3 core對cache控制器的常見請求表3 core對cache控制器的常見請求

5.總結

為了彌補訪問memory速度太慢引進了cache。在多core系統(tǒng)中,每個core可能都有自己的私有cache,多個core會對自己的私有cache進行讀寫操作,如果不使用軟件或硬件來維護cache數據,必然會造成cache一致性問題。為了從硬件層面解決這個問題,現在大多數多core系統(tǒng)中都定義了一致性協(xié)議,讓各個一致性控制器遵照“ Single-Writer, Multiple-Read”和“ Data-Value”這兩條原則去維護存儲內容。在一致性協(xié)議設計中,根據core的行為如何通知其它core分為監(jiān)聽協(xié)議和目錄協(xié)議,根據core決定寫cache line時,如何處理其它core的cache line副本,分為無效協(xié)議和更新協(xié)議。“監(jiān)聽協(xié)議和目錄協(xié)議”與“ 無效協(xié)議和更新協(xié)議”可以兩兩交叉組成4種一致性協(xié)議,但目前最常用的是目錄協(xié)議和無效協(xié)議的組合。隨后抽象出cache line狀態(tài)的四個主要特征:validity、dirtiness、exclusivity和ownership,以及這四個特征如何對應到經典的MOESI狀態(tài)模型。最后介紹了一致性協(xié)議中常用的一致性transactions,以及core請求如何引導cache控制器發(fā)起一致性transactions。

本文沒有對cache狀態(tài)轉換(transitions)過程過多講述,也沒有講述異構系統(tǒng)和多芯片多處理器的一致性,現在計算機系統(tǒng)主要是異構的,不僅包含多core,還包含GPU和其它加速器(例如,神經網絡硬件)。為了追求可編程性,這些異構系統(tǒng)也開始支持共享內存。

希望本文能幫助大家了解更多的cache一致性知識。今天就寫到這里,后續(xù)會介紹memory consistency model,敬請期待。

本文轉載自微信公眾號「專芯致志er」,可以通過以下二維碼關注。轉載本文請聯(lián)系專芯致志er公眾號。

責任編輯:武曉燕 來源: 專芯致志er
相關推薦

2024-05-27 10:42:55

2021-06-30 21:13:49

CPUCache數據

2023-11-06 09:06:54

分布式一致性數據

2020-10-28 11:15:24

EPaxos分布式性算法

2020-11-24 09:03:41

一致性MySQLMVCC

2022-03-22 09:54:22

Hash算法

2017-07-25 14:38:56

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

2022-12-14 08:23:30

2018-08-08 15:51:44

Hash分布式算法

2020-09-10 16:50:32

mysqldump數據庫熱備

2024-01-10 08:03:25

JMM重排序處理器

2020-01-02 09:06:23

微服務數據框架

2020-07-24 13:54:54

分布式一致性技術

2021-12-16 14:45:09

https架構服務端

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數據

2024-01-15 05:55:33

2022-05-12 10:53:42

keepalivevrrp協(xié)議

2023-01-09 08:14:08

GoHttpServer

2021-11-12 08:38:26

一致性哈希算法數據結構
點贊
收藏

51CTO技術棧公眾號

欧美丝袜丝交足nylons图片| 国产日韩亚洲欧美综合| 高清欧美性猛交xxxx| 亚洲天堂美女视频| 色老太综合网| 亚洲色图在线播放| 久久66热这里只有精品| 国产一区二区丝袜| 懂色av蜜桃av| 一区二区三区高清在线观看| 日韩欧美一区二区在线| 亚洲一区二区在线免费观看| 欧美自拍偷拍第一页| 丝袜美腿成人在线| 欧美激情国产高清| 九九九视频在线观看| 亚洲不卡在线| 在线看国产一区| 97干在线视频| 免费观看在线午夜影视| 91伊人久久大香线蕉| 国产在线拍偷自揄拍精品| 久久精品视频6| 青青草成人影院| 亚洲国产精品网站| 午夜一级免费视频| 久久久成人av毛片免费观看| 亚洲午夜久久久久久久久电影院| 四虎一区二区| 日韩成人黄色| 99国产精品久久久久久久久久久| 亚洲综合日韩在线| 中文字幕+乱码+中文乱码www | 日韩专区视频网站| 亚洲444eee在线观看| 中文字幕中文字幕在线中一区高清 | а√资源新版在线天堂| 国产色产综合色产在线视频| 极品日韩久久| 日日夜夜精品免费| 成人丝袜高跟foot| 99在线看视频| 精品国产av 无码一区二区三区| 日本成人中文字幕| 国产97色在线|日韩| 三级黄色在线视频| 亚洲黄页一区| 日韩高清在线观看| 操日韩av在线电影| 懂色av粉嫩av蜜臀av一区二区三区| 亚洲精品国产动漫| 亚洲精品日韩在线| 亚洲黄色在线网站| 亚洲制服一区| 亚洲视频一区二区| 国产一区二区三区精品在线| 综合亚洲色图| 精品一区二区电影| 新91视频在线观看| 国模吧精品视频| 国产一区二区三区在线看| 国产又粗又猛又爽又黄av | 黄网站免费久久| 成人精品网站在线观看| 国产精品久久久国产盗摄| 精品一区二区在线免费观看| 成人亚洲激情网| jlzzjlzzjlzz亚洲人| 国产传媒欧美日韩成人| 国产精华一区| 五月婷婷六月丁香| 国产丝袜美腿一区二区三区| 性欧美大战久久久久久久免费观看 | 久操手机在线视频| 国产一线二线在线观看| 亚洲国产视频直播| 爱福利视频一区二区| 日韩中文在线播放| 欧美男同性恋视频网站| 麻豆精品国产传媒| 免费成人三级| 国产一区二区av| 国产稀缺精品盗摄盗拍| 激情久久五月| 国产成人高清激情视频在线观看| 一区二区视频播放| 国产成人午夜精品影院观看视频| 国产女人水真多18毛片18精品 | 亚洲欧洲日本mm| 一区二区成人av| 成人涩涩小片视频日本| 激情丁香综合| 国产精品午夜一区二区欲梦| 999久久久久| 94色蜜桃网一区二区三区| 神马影院午夜我不卡| 97caopron在线视频| 狠狠躁夜夜躁人人爽超碰91| 久热精品在线观看视频| 国产精品1luya在线播放| 国产一区二区动漫| 久久一二三四区| 免费在线观看精品| 国产精品视频入口| 中文字幕在线免费| 亚洲成人动漫一区| 国产永久免费网站| 免费看成人吃奶视频在线| 久久伊人色综合| 日韩电影在线观看一区二区| 国产电影一区二区三区| 亚洲一区不卡在线| mm视频在线视频| 欧美一级生活片| 国产精品麻豆一区| 另类亚洲自拍| 国产精华一区| 成人在线网址| 欧美三级三级三级| 国产福利短视频| 国内精品美女在线观看| 成人天堂噜噜噜| 91在线免费看| 色综合av在线| 国产精品无码在线| 欧美日韩午夜| 91在线精品视频| 日本在线视频站| 在线观看日韩精品| 瑟瑟视频在线观看| 亚洲在线视频| 精品福利影视| 免费h视频在线观看| 欧美不卡在线视频| 91日韩中文字幕| 久久99国产精品麻豆| 视频一区二区综合| 亚洲第一影院| 轻轻草成人在线| 国产美女精品在线观看| 肉肉视频在线观看| 欧美一区二区三区四区在线观看 | 日韩理论在线| 国产精品高精视频免费| 欧美日韩在线中文字幕| 黑人精品xxx一区| 朝桐光av一区二区三区| 一本久久综合| 麻豆av一区二区| 超级碰碰久久| 亚洲视频在线看| 国产在线一级片| 亚洲国产精品av| 免费看污黄网站| 久久综合av| 91免费看国产| 色a资源在线| 亚洲国产毛片完整版| aaa人片在线| 久久久午夜电影| 欧美日韩亚洲自拍| 99久久精品费精品国产| 91久久精品国产91性色| av毛片在线免费看| 精品国产免费久久| 日本一级淫片色费放| 97久久人人超碰| 国产视频在线视频| 日韩久久综合| 91丝袜脚交足在线播放| 精灵使的剑舞无删减版在线观看| 亚洲精品国产精品乱码不99按摩 | 久久精品久久国产| 91在线小视频| 91插插插插插插插插| 一区二区在线影院| 国产精品国产精品国产专区蜜臀ah| a级片免费在线观看| 精品视频中文字幕| 最新黄色网址在线观看| 亚洲丝袜另类动漫二区| 日本人添下边视频免费| 男人的天堂亚洲在线| 亚洲午夜精品一区二区三区| 超碰精品在线观看| 国产成人在线亚洲欧美| 麻豆传媒在线免费看| 亚洲成人在线网| 中文在线免费观看| 亚洲综合av网| 亚洲av毛片基地| 成人动漫av在线| 天天爽天天爽夜夜爽| 欧美激情第8页| 欧美亚洲精品日韩| 亚洲国产欧美国产第一区| 青草青草久热精品视频在线观看| 麻豆传媒视频在线| 亚洲精品久久久久中文字幕二区| 在线播放一级片| 天天av天天翘天天综合网| 99国产精品无码| 99国产欧美久久久精品| 亚洲天堂网站在线| 久久综合伊人| 日韩人妻无码精品久久久不卡| jiujiure精品视频播放| 国产精品一 二 三| 91精品国产一区二区在线观看| 国产69精品久久久久久| 国产在线激情| 一本久久综合亚洲鲁鲁| 神宫寺奈绪一区二区三区| 777久久久精品| 波多野结衣爱爱| 婷婷中文字幕综合| 91视频免费在线看| 国产精品午夜久久| 日韩乱码人妻无码中文字幕久久| 国产成人三级在线观看| 国产3p在线播放| 石原莉奈在线亚洲二区| 欧美牲交a欧美牲交| 午夜精品剧场| 日韩人妻精品一区二区三区| 成人久久综合| 日韩hmxxxx| 国产欧美亚洲精品a| 精品一区二区不卡| av成人资源| 成人综合色站| 亚洲综合影院| 91在线免费网站| 日韩福利在线观看| 国产精品视频自拍| 日韩高清中文字幕一区二区| 91高潮精品免费porn| 丁香花电影在线观看完整版| 欧美高清在线播放| av网址在线看| 欧美成人性色生活仑片| 黄色网在线看| 久久亚洲综合国产精品99麻豆精品福利 | 18禁免费无码无遮挡不卡网站 | www.com黄色片| 日本欧美一区二区| 三级在线免费看| 人人精品人人爱| 日韩高清第一页| 久久99精品久久久久婷婷| 亚洲最大天堂网| 韩国一区二区视频| 色哟哟在线观看视频| 国产精品88av| 国产麻豆剧传媒精品国产av| www.色综合.com| 天天躁日日躁aaaxxⅹ| 国产日产欧产精品推荐色| 国产美女永久免费无遮挡| 国产日韩av一区二区| 国产精品久久久免费看| 亚洲视频一二三区| 久久久久久久久久一区二区三区| 亚洲国产日产av| 色婷婷av国产精品| 在线观看国产一区二区| 91精品在线视频观看| 日韩一区二区在线观看视频| 欧美熟妇乱码在线一区 | 欧美激情午夜| 欧美精品免费在线| 爱啪啪综合导航| 国产精品扒开腿做爽爽爽的视频| 黄色成人小视频| 国产成人精品福利一区二区三区| 久久香蕉精品香蕉| 视频在线精品一区| 中文精品久久| 尤物av无码色av无码| 日韩二区在线观看| 精产国品一区二区三区| 91亚洲精华国产精华精华液| 日本一卡二卡在线播放| 夜夜操天天操亚洲| 久久精品无码av| 91精品国产综合久久婷婷香蕉| 午夜精品久久久久久久96蜜桃| 日韩精品免费在线观看| 欧美激情午夜| 欧美在线视频一区二区| 亚洲福利影视| 欧美成人在线免费观看| 91精品国产福利在线观看麻豆| 国产精品一线二线三线| 奇米四色…亚洲| 制服丝袜av在线| 国产精品久久久久影院亚瑟| 日韩 欧美 精品| 制服丝袜亚洲网站| 偷拍自拍在线| 欧美成人午夜免费视在线看片| 中文字幕av一区二区三区佐山爱| 成人在线观看网址| 久久综合国产| 日韩无套无码精品| 国产a久久麻豆| 69夜色精品国产69乱| 色综合久久综合网97色综合| 精品国产免费无码久久久| 中文字幕在线精品| 日韩激情电影| 国产精品免费一区二区三区四区| 婷婷综合在线| 国产免费999| 久久综合色天天久久综合图片| 久草中文在线视频| 欧美日韩一二三区| 国外av在线| 欧美亚洲视频在线观看| 91精品入口| 好色先生视频污| 美女视频黄 久久| 国产精品成人无码免费| 精品免费在线视频| 成人无码一区二区三区| 久热国产精品视频| 欧美午夜三级| 色噜噜狠狠色综合网| 先锋影音国产一区| 国产中文字幕一区二区| 亚洲第一搞黄网站| 亚洲免费成人在线| 欧美日本中文字幕| 电影91久久久| 永久免费在线看片视频| 九一九一国产精品| 黑人狂躁日本娇小| 欧美日韩国产小视频| 国产精品ⅴa有声小说| 国产97在线视频| 国产一区二区三区站长工具| aⅴ在线免费观看| 久久综合一区二区| 无码视频在线观看| 亚洲美女免费精品视频在线观看| 人人草在线视频| 久久精品日韩精品| 亚洲欧美日韩国产综合精品二区| 中国av免费看| 色综合久久久网| 黄色国产在线| 国产精品精品久久久久久| av一区二区高清| 91亚洲精品久久久蜜桃借种| 亚洲欧美在线视频观看| 国产精品无码在线播放 | 久久国产高清视频| 在线不卡一区二区| 91在线中文| 精品国产乱码久久久久久丨区2区| 在线亚洲国产精品网站| 欧美高清性xxxx| 欧美视频一区二| 1024在线播放| 国产精品视频福利| 久久av一区| 欧美日韩色视频| 欧美大片在线观看一区二区| 国产调教在线| 日韩成人av网站| 国内精品久久久久影院色| 少妇久久久久久被弄高潮| 亚洲国内高清视频| 激情开心成人网| 永久免费在线看片视频| 成人激情视频网站| 亚洲av中文无码乱人伦在线视色| 自拍偷拍免费精品| 中文字幕av一区二区三区四区| 日本少妇高潮喷水视频| 亚洲国产电影在线观看| 国产精选久久久| 欧美一区二三区| 国产精品久久观看| www.超碰97| 欧美日韩国产一级片| 蜜臀久久精品| 亚洲免费视频播放| 2021国产精品久久精品| 91 中文字幕| 欧美亚洲日本网站| 亚洲五月综合| 亚洲精品成人无码| 欧美一级片免费看| 久久精品女人天堂av免费观看 | 日韩电影免费看| 国产精品av免费| 久久久久久久久久看片| 国产精品呻吟久久| 欧洲亚洲女同hd|